JP2002512399A - 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ - Google Patents

外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ

Info

Publication number
JP2002512399A
JP2002512399A JP2000545095A JP2000545095A JP2002512399A JP 2002512399 A JP2002512399 A JP 2002512399A JP 2000545095 A JP2000545095 A JP 2000545095A JP 2000545095 A JP2000545095 A JP 2000545095A JP 2002512399 A JP2002512399 A JP 2002512399A
Authority
JP
Japan
Prior art keywords
processor
registers
instruction
general purpose
sets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000545095A
Other languages
English (en)
Inventor
ロイ,サブハッシュ・シー
ヘムブルック,ポール
パーレラ,ユージン・エル
マリアノ,リチャード
Original Assignee
トランスウィッチ・コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by トランスウィッチ・コーポレーション filed Critical トランスウィッチ・コーポレーション
Publication of JP2002512399A publication Critical patent/JP2002512399A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Abstract

(57)【要約】 RISCプロセッサは、シーケンサ(12)と、レジスタALU(RALU)(14)と、データRAM(16)と、コプロセッサインタフェース(18)と、を含む。シーケンサは、外部メモリからコプロセッサインタフェースを通してブートされるNx32ビットの命令を含む。RALUは、3個のコンテキストとALU(32)の格納のために4個のポートレジスタファイル(40)を含む。本発明に係るISA(命令セットアーキテクチャ)は、最大8個のコプロセッサに対応している。本発明の重要な特徴は、複数セットの汎用レジスタがいくつかのコンテキストの格納のために設けられていることである。現在の好ましい実施の形態によれば、3セットの汎用レジスタが、RALUの一部として設けられ、該セットの汎用レジスタの中で切り換えるために新たなオペコードが設けられる。複数セットの汎用レジスタにより、コンテキスト切り換えは、3個の処理サイクルで終了できる。さらに、1セットの汎用レジスタは、もう1つのセットの汎用レジスタがALUにより使用中に、コプロセッサによりロード可能である。現在の好ましい実施の形態によれば、3セットの汎用レジスタは、それぞれ28個の32ビットレジスタを含む。さらに、現在の好ましい実施の形態によれば、任意のコンテキストでの使用のために、4個の32ビットレジスタの単一セットが設けられる。共通レジスタのセットを用いて、2個以上のコンテキストにより使用される情報を格納する。

Description

【発明の詳細な説明】
【0001】 発明の背景 1.技術分野 本発明は、縮小命令セットコンピュータ(RISC)プロセッサのアーキテク
チャに関する。特に、本発明は、リアルタイムI/O集中アプリケーションにお
いて処理速度を実質的に向上させるように設計されるプロセッサアーキテクチャ
に関する。 2.背景技術 マイクロプロセッサにおいてスループットを増大する多数の周知の方法の1つ
として、「パイプライン処理」が知られている。パイプライン処理は、後続の命
令それぞれを一時的にオフセットすることによって、いくつかの命令の実行を重
複させることを含む。パイプライン処理を効率よく実施するために、プロセッサ
の命令セットにおける各命令が同一数のクロックサイクルを使用することが好ま
しい。たとえば、各命令がちょうどn個のクロックサイクルを使用する場合、n
個の命令のパイプラインが、後続の命令のそれぞれが前回の命令から1クロック
サイクルだけオフセットされて作成される。かかるパイプライン処理のシステム
において、プロセッサは、1クロックサイクルにつき1つのフル命令を効率よく
処理する。RISCプロセッサ設計の功績の1つは、すべてまたはほとんどの命
令の実行が均一数のサイクルを必要とする命令セットの定義である。RISCの
一般的な背景の説明は、G. Kaneによる「MIPS R−2000 RISCア
ーキテクチャ(MIPS R-2000 RISC Architecture)」(Prentice Hall, 1987)に
見られ、その全体の開示はここに引用することによって本明細書に援用されるも
のとする。
【0002】 普及している従来のRISCアーキテクチャは、MIPS I 命令セットア
ーキテクチャ(ISA)である。MIPSは、非常に多くのサードパーティ(thi
rd party support)を魅了してきた単純であるが高性能RISCアーキテクチャ
である。MIPS I ISAおよびMIPS II ISAについては、G. K
aneとJ. Heinrichによる「MIPS RISCアーキテクチャ(MIPS RISC Arch
itecture)」(Prentice Hall, 1992)に記載され、その全体の開示はここに引
用することによって本明細書に援用されるものとする。
【0003】 MIPS R−2000プロセッサは、5つの部分(1クロックサイクルにつ
き1つ)において命令を実行し、命令パイプラインは、1命令部分につき1ステ
ージの5ステージのパイプラインである。5つの命令部分は、命令を読み出し(
フェッチ)する(IF)こと、命令をデコード(解読)しながら(RD)レジス
タからオペランドを読み出すこと、命令オペランドに対して演算を実行する(A
LU)こと、メモリにアクセスする(MEM)こと、そしてレジスタに結果を再
び書き込む(WB)ことである。従来技術の図1は、5個の命令を1クロックサ
イクルだけ互いにオフセットした(ずらした)MIPSパイプラインを示してい
る。図1に示すように、第1の命令が結果をレジスタにライトバックする(WB
)サイクル中に、第2の命令はメモリにアクセスし(MEM)、第3の命令は命
令オペランドに対して演算を実行し(ALU)、第4の命令は命令を復号(デコ
ード)しながら(RD)レジスタからオペランドを読み出し、第5の命令は命令
RAMから命令をフェッチ(IF)している。MIPSパイプラインにおける追
加的な背景については、D.A. PattersonとJ.L. Hennesseyによる「コンピュータ
編成および設計:ハードウェア/ソフトウェアインタフェース(Computer Organ
ization and Design: the Hardware/Software Interface)」(Morgan Kauffmann
, 1994)に見られ、その全体の開示はここに引用することによって本明細書に援
用されるものとする。
【0004】 RISCアーキテクチャにおける命令パイプラインは、所定量の演算「並行処
理(parallelism)」を実現する。図1に示す例では、パイプラインがフルになる
と、5個の命令はパラレルに実行される。各命令では依然として5個のクロック
サイクルが必要であるが、パイプラインをフルの状態にしておくために、パイプ
ラインには、クロックサイクルごとに新たな命令を追加することができる。パイ
プラインがフルである限り、ストール(stall)サイクル、NOP命令またはアボ
ートされたパイプラインがない場合にも、RISCプロセッサは、1クロックサ
イクルあたり1命令の効率的なレートで命令を処理し続けることができる。
【0005】 当業者であれば、ロード命令、ジャンプ命令および分岐命令には固有のレイテ
ンシが存在し、いくつかの命令ではまだ入手可能でないデータを必要とする場合
もあることが理解されよう。これらの条件を処理相互依存性(processing interd
ependency)という。相互依存性を解決する1つの方法は、パイプラインを停止(s
tall)または遅延することである。別の方法(R−2000により使用される)
は、パイプラインにNOP(ノーオペレーション)命令を挿入し、命令間にレイ
テンシを引き起こすことである。NOP命令の挿入は、プログラムがコンパイル
される際、ソフトウェアアセンブラにより実行される。また、例外(exception)
(たとえば、割り込み)により、パイプラインの平滑なフローが妨害されること
も理解されよう。R−2000が例外を検出すると、たとえば、この例外を引き
起こしている命令を中止(アボート)させ、実行を開始しているパイプラインに
おける全ての命令を中止させる。指定された例外ハンドラへのジャンプが発生す
る。例外が処理された後、プロセッサは、例外が発生したときに実行を行ってい
た命令の前の命令に戻る。割り込みハンドリングは、プロセッササイクルを奪い
、システム性能を低下させる。割り込みハンドリングが効率的でなければ、パイ
プライン処理の性能利点は失われるおそれがある。
【0006】 RISCプロセッサを含む現代のプロセッサのほとんどは、多重同時処理およ
び/または多重スレッドされた処理をサポートしている。いくつかの異なるプロ
グラムを単一プロセッサ上で実行する(多重同時処理)場合、または多重スレッ
ドされた処理を実行する場合、プロセッサ(またはオペレーティングシステム)
が1つのプログラムまたはスレッド(コンテキスト)を他と切り換えることが必
要である。コンテキストスイッチングは、優先度スケジュールにしたがって実行
されることが多く、これにより、いくつかのプロセスは、他より多くの処理時間
が与えられる。理論的には、コンテキストスイッチングは、プロセスまたはスレ
ッドを中止する度に、新たなコンテキストに切り換えてI/Oデバイスを待ち受
け、実行できるようになると中止されたプロセスまたはスレッドに戻ることによ
ってシステム性能を向上させることができる。しかしながら、実際には、コンテ
キストスイッチングは、コンテキストを切り換えるために余分な処理サイクル(
MIPSプロセッサの場合には128サイクル)を使用しなければならず、この
コンテキストスイッチング中に処理命令は実行されないため、最適なシステム性
能を妨げる傾向がある。コンテキストスイッチング中、現行プロセスの状態を記
述しているすべての即時レジスタ(汎用レジスタとも呼ばれ、すなわち、プロセ
ッサのALUにより直接読み出しまたは書き込みされるレジスタ)のコンテンツ
は、RAMに保存された後、別のプロセスに切り換わる。現行状態(コンテキス
ト)の保存後、次のコンテキストがRAMからレジスタにロードされ、その後、
次のプロセスを実行できる。この非生産的なプロセッサ活動(レジスタコンテン
ツを保存して復元する)は、特に、コンテキストスイッチが主としてI/Oアク
ティビティにより管理されているリアルタイムイベント(事象)駆動システムで
は、性能全体に悪影響を及ぼす可能性がある。
【0007】 単一のスレッドプログラムであっても、しばしばコンテキストスイッチングは
発生する。たとえば、MIPS R−2000 ISAには2つのオペレーティ
ングモード、すなわちユーザモードとカーネルモードがある。これらのモードは
、それぞれ異なるコンテキストであり、プログラマは、それぞれが異なるスレッ
ドの「ユーザモード」コンテキストをいくつか作成することができる。しかしな
がら、単一ユーザモードのコンテキストであっても、ユーザモードコンテキスト
とカーネルモードコンテキストとの間のコンテキストスイッチングは、頻繁に発
生することがある。MIPS ISAによれば、CPUは、例外が検出される度
にカーネルモードに入り、例外からの復元(RFE: Restore From Exception)
命令が実行されるまで、カーネルモードの状態にある。したがって、イベント駆
動アプリケーションでは、ユーザモードにおけるスレッドの数にかかわらず頻繁
なコンテキストスイッチが予想され得る。
【0008】 比較的高速なRISCプロセッサにより、これらは、SONETおよびATM
アプリケーションを含む遠隔通信アプリケーションに対する理想的な選択肢とな
る。しかしながら、RISCプロセッサのパワーにもかかわらず、SONETお
よびATM遠隔通信に対する極めて高い要求は、特に割り込みハンドリングおよ
びコンテキストスイッチングに関するRISCプロセッサの資源に課せられる。
なお、遠隔通信とは、一般的に、ほぼ完全にリアルタイムイベント駆動であり、
SONETおよびATMを介して供給されるハイボリュームの広帯域通信におい
ては一層その通りであることが理解されよう。
【0009】 発明の概要 したがって、本発明の目的は、特に遠隔通信アプリケーションに適したプロセ
ッサアーキテクチャを提供することである。
【0010】 また、本発明の目的は、特にリアルタイムイベント駆動アプリケーションに適
したプロセッサアーキテクチャを提供することである。
【0011】 また、本発明の別の目的は、理想的には割り込みハンドリングおよびコンテキ
ストスイッチングに適したプロセッサアーキテクチャを提供することである。
【0012】 また、本発明のさらに別の目的は、サードパーティプロダクト(third-party
products)によって容易に支援されるRISCプロセッサにおける改良されたコ
ンテキストスイッチングアーキテクチャを提供することである。
【0013】 詳細については後述する上記目的によれば、本発明のRISCプロセッサは、
MIPS R−2000プロセッサと同様であるが、いくつかの変形では、SO
NETおよびATMアプリケーション等の遠隔通信アプリケーションに使用され
るプロセッサを最適化し、かつその性能をリアルタイムイベント駆動アプリケー
ションに合わせて全般的に最適化するように設計されている。より詳細には、本
発明のプロセッサは、広義には、シーケンサと、レジスタALU(RALU)と
、オプショナル(好適には)データRAMと、コプロセッサインタフェースと、
を含む。シーケンサは、外部メモリからコプロセッサインタフェースを介してブ
ートされるNx32ビット命令RAM(IRAM)を含む。RALUは、ALU
と、3個のコンテキストに適応するように配置される複数個の汎用レジスタとし
て実施されるマルチポートレジスタファイルと、を含む。現在の好ましい実施の
形態によれば、マルチポートレジスタファイルは、3セットの汎用レジスタを含
み、この汎用レジスタのセット間で切り換えるために新たなオペコード(opcode)
が設けられている。複数セットの汎用レジスタにより、コンテキストスイッチン
グは、3個の処理サイクルで終了できる。さらに、コプロセッサにより1セット
の汎用レジスタがロード可能であり、別のセットの汎用レジスタは、ALUによ
り用いられる。現在の好ましい実施の形態によれば、3セットの汎用レジスタは
、それぞれ28個の32ビットのレジスタを含む。さらに、現在の好ましい実施
の形態によれば、任意のコンテキストにおける使用には、4個の32ビットの共
通レジスタの単一セットが設けられる。この共通レジスタのセットは、好ましく
は、2つ以上のコンテキストにより使用される情報を格納するために使用される
。3セットの汎用レジスタにより、本発明のプロセッサは、標準的なMIPS
R−2000プロセッサに比べて10〜12倍程度高速で割り込みを提供する。
【0014】 本発明の好ましい実施の形態によれば、データRAMは、Mx32ビットであ
ることが好ましく、バイトアドレス指定可能であり、好ましくは非同期式SRA
Mで実施される。本発明のRISCプロセッサは、ほとんどのMIPS ISA
内部で動作し、いくつかの命令を無視するとともにいくつかの新たな命令を追加
するように設計される。したがって、MIPS ISAに対応して、シーケンサ
は、コプロセッサ0として処理され、コプロセッサ1は、浮動小数点ユニットの
ために確保される。MIPS ISAは、2個の追加コプロセッサ(合計で4個
)しか提供しないが、本発明のISAは、最大6個の追加コプロセッサ(合計で
8個)を支援する。本発明によれば、プロセッサ外部のすべての論理には、(6
個の)コプロセッサインタフェースの1個を介してアクセスされる。
【0015】 プロセッサのパイプライン、インターブロック通信およびクロック方式は、本
明細書中で記載される改良点(enhancement)をともなうほとんどのMIPS I
ISA(遠隔通信および他のI/O集中アプリケーションに関連しない特徴を
除く)を使用するVHDLモデルからASICインプリメンテーションにおいて
動作するように設計されてきた。本発明のISAにおける新たな命令のほとんど
は、コプロセッサ機能性、例外処理およびコンテキストスイッチングに対処して
いる。
【0016】 本発明のさらなる目的および利点については、提示される図面を用いて詳細な
説明を参照することで当業者には明らかとなろう。
【0017】 好ましい実施の形態の詳細な説明 次に図2を参照して、本発明に係るプロセッサ10は、全般的に、シーケンサ
12と、レジスタALU(RALU)14と、データRAM16と、コプロセッ
サインタフェース18と、を有し、それぞれ32ビットのデータバス20に結合
されている。データRAM16は、プロセッサの動作に不可欠ではないが殆どの
アプリケーションにおいて好適である。データRAMは、Mx32ビットである
ことが好ましく、バイトアドレス指定可能であり、好ましくは非同期式SRAM
で実施される。シーケンサ12は、32ビット命令バス22によりRALU14
およびコプロセッサ18に結合され、これにより、シーケンサによりIRAMか
らフェッチされた命令がRALUおよびコプロセッサ(複数も可)に対して使用
可能となるが、これについてはさらに詳細を後述する。データRAM16が設け
られる場合、RALU14により制御リンク24を介して制御される。条件命令
およびトラップのフラグは、RALUによって、シーケンサ12にフラグライン
26を介して渡される。なお、シーケンサ12、RALU14およびコプロセッ
サインタフェース18は、クロック/リセット入力28、30、32をそれぞれ
有することが理解されよう。さらに、シーケンサは、割り込み要求入力34をコ
プロセッサ条件フラグ入力36とともに有する。また、コプロセッサインタフェ
ース18には、コプロセッサと結合するためのI/Oライン38が設けられるこ
とも理解されよう。
【0018】 上述したように、本発明に係る現在の好ましい実施の形態のプロセッサ10は
、顕著な違いをいくつか備えるMIPS R−2000 ISAに基づいている
。したがって、プロセッサは、従来技術の図1に示すものと略同一の5個のパイ
プラインステージを用いる。しかしながら、各ステージのニーモニックは多少変
更されている。本明細書で言及される5個の命令ステージは、命令フェッチ(I
F)、ソースフェッチ(SF)、実行(EX)、メモリアクセス(M)、そして
ライトバック(WB)である。さらに、MIPS ISAにより、シーケンサは
、コプロセッサ0としてアドレス指定され、コプロセッサ1は、浮動小数点ユニ
ットであると想定される。本発明の現在の好ましい実施の形態によれば、浮動小
数点ユニットは使用されず、6個の追加コプロセッサインタフェースおよびコプ
ロセッサを支援するために、6個の追加コプロセッサアドレス(2〜7)が設け
られる。
【0019】 次に図3を参照して、本発明に係るRALU14は、全般的に、複数の汎用レ
ジスタ、多数のデータパスマルチプレクサおよびレジスタ42と、演算論理ユニ
ット(ALU)44と、RALUコントローラ46と、を含むレジスタファイル
40を含む。特に、好ましい実施の形態において、レジスタファイル40は、好
ましくは、(図示、および表1を参照してさらに詳細を以下に記載するように)
3セットの汎用レジスタ40a、40b、40cと、共通セットの汎用レジスタ
40dと、を含む。レジスタファイル40に対する読み出しアクセスが、Aポー
ト48およびBポート50の2個のポートを介して設けられる。これにより、オ
ペランドAおよびBがアクセスされるMIPS ISA互換性を確保する。これ
らのポートを介して読み出されるレジスタは、アドレスライン52、54を介し
て、シーケンサ(図2の12)により、命令における固定式の5個のビット(M
IPSコンパチブル)アドレスフィールドを通してアドレス指定される。シーケ
ンサ(図2の12)からの命令の他のフィールドは、IFステージの開始時にR
ALUコントローラ46によって受信され、SFステージの開始時にRALUコ
ントローラによって復号(デコード)される。汎用レジスタ40からフェッチさ
れたオペランドは、レジスタAREGおよびBREGに渡され、EXステージ中
にALU44により使用され、このとき、ALU44によってRALUコントロ
ーラ46から受信されるデコードされた命令は、ALUにより実行される。AL
Uには、コントローラ46に対する結線56を介して即値命令(inst2)が
供給される。データRAMが命令の結果により読み出され、または書き込まれる
と、ALU44は、ライン24を介してデータRAMをアドレス指定する。より
詳細には、ロードおよびストア命令について、データRAMアドレス「base
+offset」は、EXステージ中にALUにより演算され、ベースはARE
Gから取られ、オフセットは56のinst2から取られる。読み出し、書き込
み、符号およびバイトイネーブルの信号は、Mステージの開始時にデータRAM
に印加される。ロード命令のイベントにおいて、データRAM16からのデータ
は、Mステージの終了時にデータバス20を介してRALUに戻される。格納命
令のイベントにおいて、格納されるべきデータは、SFステージ中に、Bポート
からBREGに読み込まれ、ALU44を通してCREG1に渡される。そして
、MステージにおいてCREG1からデータバス20に印加される。一般に、ラ
イン26(26b)によってシーケンサに渡されるオーバーフローフラグVを含
む、RALUからの出力データは、すべてCREG1を通過する。EXステージ
の終了時、出力されたデータはCREG1に書き込まれる。データは、汎用レジ
スタに向けられている場合、Mステージの終了時にCREG2に移動され、WB
ステージの終了時にCポートを介してそのレジスタに書き込まれる。書き込まれ
るレジスタのアドレスは、ライン58を介してRALUコントロール46により
選択され、ライン60を介して書き込みがイネーブルされる。現在の好ましい実
施の形態によれば、3本のライン60それぞれが、3個の各レジスタセットにつ
いて別々の書き込みイネーブル信号(c_wen0,c_wen1,c_wen
2)で設けられる。Aポートを読み出すことに起因するジャンプアドレスおよび
フラグは、MIPS互換性を確保するために、AREGからライン26(26a
)を介してシーケンサに直接渡される。さらに、MIPSでは、AREGおよび
BREGに対して所定の直接パスが必要とされ、これらは、わかりやすくするた
めに図3には図示しない。これらのパスは、ALU出力からのパス、CREG1
からのパス、データバス20からのパスおよびCREG2からのパスを含む。
【0020】 上述したように、本発明のプロセッサの最も重要な態様の1つは、レジスタフ
ァイル40が、3セットの汎用レジスタ40a、40b、40c(表1)および
1セットの共通の汎用レジスタ40dとして配置されていることである。標準的
なMIPSプロセッサは、各レジスタが32ビット幅の32個(#0〜#31)
の汎用レジスタを有する。本発明に係る汎用レジスタの配置を表1に示す。
【0021】
【表1】
【0022】 3セットの28個(#4〜#31)の32ビット幅のレジスタが設けられ、3
個の異なるコンテキストにおいて使用される。これら3セットの「コンテキスト
汎用レジスタ」のいずれか1つが、新たな命令またはオペコードの使用により選
択され、これを本明細書ではCXTS(コンテキストスイッチ)と称する。CX
TS命令は、即値命令であって、そのなかに2ビットのコンテキストコードが埋
め込まれている。これにより、最大4セットの「コンテキスト汎用レジスタ」の
アドレッシングが可能になる。しかしながら、現在の好ましい実施の形態によれ
ば、3セットの「コンテキスト汎用レジスタ」しか使用しない。RALUコント
ロールは、即値CXTS命令を解釈(interpret)し、適当なレジスタバンクを選
択する2ビットの「Con_sel」コードを、図3のライン62を介してアサ
ートする。Con_selコードは、いくつかの異なる方法で実施されても良い
。現在の好ましい実施の形態によれば、レジスタセットのバンクは、選択解除さ
れた(deselcted)バンクのそれぞれがシーケンサおよびRALUコントローラか
ら送信されたアドレス信号を無視するように配置される。Con_selコード
が実施され得る別の方法は、アドレスラインとレジスタのセットそれぞれとの間
にデマルチプレクサを設け、このデマルチプレクサをCon_selコードによ
り動作してアドレスラインを選択されたレジスタバンクに「スイッチ」するもの
である。Con_selコードを実施するためのさらに別の方法は、A、Bおよ
びCポートに結合されるマルチプレクサを制御するものである。このインプリメ
ンテーションによれば、アドレスが受信され、レジスタのセット全てにより作用
されるが、選択されたレジスタバンクのポートのみがALUに結合される。この
インプリメンテーションの欠点は、バックグラウンドコンテキストレジスタロー
ディングが不可能であることである。当業者は、図3において仮想線で示される
AMUXおよびBMUXを用いて上記インプリメンテーションを達成しても構わ
ないことが理解されよう。しかしながら、AMUXおよびBMUXはALUのa
lu,V出力に結合されてもよく、性能を向上させるために、ALUの出力をA
LUの入力に戻すように再度方向づけし、必要であればレジスタファイル40を
バイパスするための「スニークパス(sneak path)」として使用されてもよい。
【0023】 上述した3セットのレジスタに加え、レジスタファイル40は、常時選択され
るためあらゆるコンテキストにおける使用が可能な4個の32ビットレジスタ#
0〜#3の単一セット40dを含む。なお、どのセットのレジスタが選択されて
も、いずれの処理サイクル中にRALUにとって使用可能な汎用レジスタの合計
数は、MIPSプロセッサと同一の32個であって、この32ビットレジスタが
MIPSプロセッサにおける単一セットの32個のレジスタと同一に読み出され
、書き込まれ、かつアドレス指定されることが理解されよう。MIPS仕様によ
り要求されるように、レジスタ#0は、常に32個のゼロを含む。
【0024】 3セットの「コンテキスト汎用レジスタ」40a〜40cは、「ユーザ」「カ
ーネル」および「AXI」等任意のファンクションについていずれか所与の時間
において使用可能である。AXIの指示は、本発明に係る「代替コンテキストイ
ンタフェース(alternate context interface)」に関連している。AXIによれ
ば、RALUによって使用されていない1セットの「コンテキスト汎用レジスタ
」に対するコプロセッサアクセスが設けられ、これらのレジスタには、RALU
が他の命令を処理しているときにデータがロードされる。AXIは、図3におい
てライン64により模式的に示され、図6を参照してさらに詳細を後述する。
【0025】 表1に示されるレジスタおよびCon_selコードのインプリメンテーショ
ンの配置は、特にリアルタイムイベント駆動アプリケーションにおいて、多数の
顕著な利点をもたらす。たとえば、割り込み処理において、MIPSプロセッサ
が通常ユーザモードからカーネルモードに切り換える場合、本発明に係るプロセ
ッサは、レジスタコンテンツを保存して復元する必要がない。本発明に係るプロ
セッサは、3個の命令サイクルでカーネルモードに切り換え、さらに3個の命令
サイクルでユーザモードに戻すことが可能である。さらに、3個以上のスレッド
は、コプロセッサによりAXIポートを介してバックグラウンドでレジスタコン
テンツをロードすることによって高速で支援される。1セットのコンテキストの
独立または共通レジスタ40dを設けたことにより、データの保存、復元または
複製を全く必要とせず、データがいくつかのコンテキストで利用可能となる。
【0026】 遠隔通信アプリケーションにおいて使用される従来のゲートアレイまたはAS
ICと比較して、本発明は、割り込み処理時にフォアグラウンド、バックグラウ
ンドおよびカーネルタスクのスイッチングに約10乃至20倍効率がよい。本発
明は、3または4個のCPUクロックサイクルでコンテキストを変更することが
できるが、典型的なプロセッサまたはゲートアレイは、コンテキストを変更する
ために少なくとも31個のサイクル、おそらく62個のクロックサイクルを必要
とする。たとえば、従来のMIPSプロセッサにおいて、割り込みされたバック
グラウンドタスクは、31個のレジスタのコンテンツ(R0レジスタは、ハード
ワイヤードであり、使用されない)を保存しなければならず、終了に31個のプ
ロセッササイクルかかる。フォアグラウンドタスクがこれまでに終了されていな
ければ、31個のレジスタのコンテンツを復元しなければならず、終了にさらに
31個のプロセッササイクルかかる。フォアグラウンドが終了する前にバックグ
ラウンドタスクを実行する必要がある場合、フォアグラウンドタスクは、31個
のレジスタのコンテンツを保存し、バックグラウンドタスクは、31個のレジス
タのコンテンツをリロードしなければならない。最悪の場合、64個のCPUサ
イクルでフォアグラウンドに切り換え、64個のCPUサイクルでバックグラウ
ンドに再び切り換える。多数のアプリケーションでは、フォアグラウンドタスク
は、常に、バックグラウンドに再び切り換わる前に終了するように実行され、こ
れらのアプリケーションでは、フォアグラウンドに切り換えるのに僅か31サイ
クルで済み、バックグラウンドに再び切り換えるのに僅か31サイクルで済む。
本発明が、僅か3または4個のCPUサイクルでどのようにしてコンテキストを
切り換えるかについての一例を以下のコード一覧に示す。バックグラウンド(タスク1、コンテキスト2) lw r6、データ1;r6に直接メモリロード lw r7、データ2;r7に直接メモリロード lw r8、オフセット($sp);r8に間接メモリロード --ここで割り込みが発生する--switchfg mfc0 r31,C0_EPC;r31にアドレスをロードして、s
w r31,k0−returnに戻る sw r31,k0−return;r31をカーネルRAM場所k0
に格納する ctx1;フォアグラウンド(タスク2、コンテキスト1)に変更する jal foreground;フォアグラウンドタスクnopにジャ
ンプしてリンクするreturnbg ctx2;バックグラウンド(コンテキスト2)に変更する lw r31,k0−return;リターンアドレスをk0からr3
1に移動(put)する jr r31;r31内のアドレスにジャンプして実行する rfeフォアグラウンド(タスク2、コンテキスト1) lw r4,データ0 lw r6,データ1 lw r8,オフセット($sp) --タスク2は、割り込みがディスエーブルになり終了するまで続行する-- jr r31;returnbgにジャンプする
【0027】 上記のコード一覧において、コンテキスト1は、タスク2としても知られるフ
ォアグラウンドアプリケーションに使用され、コンテキスト2は、タスク1とし
ても知られるバックグラウンドアプリケーションに使用されることが推定される
。本発明の現在の好ましい実施の形態によれば、コンテキスト0は、カーネルの
ために確保される。
【0028】 コード一覧に示されるように、バックグラウンドアプリケーションは、割り込
みが生じる場合にそのレジスタ(r6〜r8)のいくつかをロードするプロセス
にある。本発明によれば、バックグラウンドアプリケーションは、その独自のレ
ジスタを有するため、いずれのレジスタのコンテンツも保存する必要はない。そ
の代わり、本発明のコンテキストスイッチは、レジスタバンクを切り換える。し
たがって、バックグラウンドに正確に戻るために必要とされるものは、MIPS
規定に準拠してコプロセッサ0の一部であるプログラムカウンタからのポインタ
だけでよい。バックグラウンドタスクが割り込まれると、switchfgとラ
ベル付けされるルーチンが実行される。switchfgによって取られる第1
のアクションは、例外プログラムカウンタ(コプロセッサ0)からポインタを獲
得し、これをコンテキスト2のレジスタ31にロードしてこれをカーネルRAM
の確保された場所に格納した後、コンテキスト1に切り換える。次にswitc
hfgルーチンは、コンテキストをコンテキスト1のレジスタのセットに変更し
、ジャンプし、フォアグラウンドタスク(タスク2、コンテキスト1)にリンク
する。フォアグラウンドタスクは、実行を開始し、他のコンテキストのレジスタ
セットのコンテンツを考慮せずに、必要とされる場合、そのレジスタセットを使
用する。したがって、コード一覧に示すように、フォアグラウンドタスクは、バ
ックグラウンドタスクによってすでに使用されているレジスタと同一数字(たと
えば、r6、r8)を有するレジスタを使用してもよい。しかしながら、これら
は、本発明によれば、フォアグラウンドおよびバックグラウンドのタスクが表1
に示すようにレジスタの個別のバンクを有するため、同一レジスタではない。
【0029】 本例によれば、フォアグラウンドタスクは、割り込みをディスエーブルにした
状態で終了するように続行し、ルーチンreturnbgのアドレスを含むコン
テキストのr31にジャンプする。returnbgルーチンは、コンテキスト
をコンテキスト2に切り換え(割り込まれたバックグラウンドタスク)、コンテ
キスト2のr31にカーネルROMk0からのポインタ(switchfgルー
チンによりその位置に格納されている)をロードし、そのポインタ位置にジャン
プしてバックグラウンドタスクを引き続き実行する。
【0030】 次に図4を参照して、本発明のプロセッサのシーケンサ12は、全般的に、命
令RAM(IRAM)70と、例外処理論理72と、プログラムカウンタ選択論
理74と、プログラムカウンタインクリメント論理76と、インタフェース78
と、を含む。インタフェース78は、データバス20からロードされて格納され
るレジスタを含む。これらのレジスタのほとんどは、例外処理をともなう。pr
idレジスタは、読み取り専用であり、プロセッサの識別番号を含むためにファ
ンドリー(foundry)においてバーン(burn)される。これらのレジスタに格納さ
れる情報を使用して、例外論理72は、例外が取られたか、その場合どれである
かを判定する。
【0031】 例外が認識されると、例外論理72は、pc選択論理74に供給される例外信
号をアクティブにする。その結果、pc選択論理は、EXCEP_VECメッセ
ージをプログラムカウンタインクリメント論理に対して生成する。EXCEP_
VECメッセージの上位ビットはハードワイヤードであり、下位ビットは、例外
を引き起こした特定の割り込みまたはトラップに依存する。原因がトラップであ
る場合、トラップ番号がインタフェース78の原因レジスタにロードされ、例外
論理72のトラップハンドラが、ソフトウェア制御下においてトラップの原因を
判断する。本発明によれば、例外の原因が割り込みである場合、EXCEP_V
ECは、割り込みごとに異なる。
【0032】 IFステージの開始時、pc選択論理74は、5個の可能なメッセージの中の
1つ、すなわち、j_reg(レジスタへジャンプ)、pc_inc(通常のプ
ログラムカウンタインクリメント)、pc_branch(選択された分岐)、
pc_jump(選択されたジャンプ)またはEXCEP_VEC(選択された
例外)の中の1つを生成する。
【0033】 レジスタ命令へのジャンプがSFステージにおいてデコード(復号)されると
、pc選択論理は、IRAM位置を選択するためのj_regメッセージを生成
する。命令バス22における命令が分岐命令であると、RALUからのZ、ZT
およびNのフラグとともにコプロセッサ条件フラグ(37で示されるローカルに
登録される)が、すべてpc選択論理74によってテストされる。選択された条
件コードが真であると、pc選択論理74は、pc_branchメッセージを
生成する。これらの条件が不在であると、pc選択論理は、pc_incメッセ
ージを生成するようにデフォルトする。
【0034】 分岐アドレスは、SFステージにおいて16ビットの2の補数(complement)オ
フセットをpc命令アドレスに追加することによって演算される。ジャンプアド
レスは、Jフォーマット命令の絶対フィールドから26ビットを選択してpc_
jumpレジスタに入れる。分岐が取られるか、またはジャンプが復号される事
象において、分岐またはジャンプに続いてちょうど1個の遅延スロットが実行さ
れる。プログラムカウンタインクリメント論理76は、pc_select論理
が、次のpc加算を行なわなければならない(単一遅延スロットとしたとき)同
一サイクルにおいて適当な条件を復号するため、独立したインクリメントpc_
incと、加算器pc_branchとを含む。
【0035】 JALまたはJALRが実行されると、遅延スロットに続く命令のアドレスが
汎用レジスタの1つに格納される。この場合、インタフェースブロック78にお
けるLINKレジスタにpc_incがロードされ、その後に、DATA(デー
タ)に出力される。pc_minus1およびpc_minus2のレジスタは
、pcの先行コピーである。pc_minus1は、命令中に例外が取られると
epcレジスタにロードされる。pc_minus2は、分岐またはジャンプに
後続する遅延スロット中に例外が取られるとepcレジスタにロードされる。
【0036】 図4に示すように、シーケンサ12は、実際には命令バスと対をなす(compani
on)1ビットのバスであるistall_Nとラベル付けされるバス23にも結
合される。istall_Nバスは、例外が取られる場合に例外論理72により
ローに引き下げられ、これがパイプラインにおいて2個の命令を無効にする。
【0037】 本発明に係るプロセッサは、オンチップTLBを提供しないため、MIPSプ
ロセッサにおいて見られるコンテキストレジスタまたは追加のCOP0レジスタ
を設けない。レジスタ(badvaddr)は、アドレス例外エラーを引き起こ
す命令のアドレスを格納する。本発明に係るプロセッサは、4個ではなく8個の
コプロセッサに対する支援を追加し、追加割り込み信号を供給し、かつより高速
のリアルタイム応答を割り込み信号に供給することによって、MIPS例外ハン
ドリングを拡張する。
【0038】 本発明に係るプロセッサは、ネストされた例外に対応することができる。しか
しながら、コアが第1の割り込みを提供しているために第2の割り込みが提供さ
れないと、この第2の割り込みは、これの原因となる条件が第1の割り込みが提
供される前にクリアにされている場合に失われることがある。したがって、コア
が別の割り込みを提供しているときに高い割り込み信号をラッチするために外部
レジスタまたはラッチを設けることが推奨される。
【0039】 上述のように、本発明に係るプロセッサは、従来のMIPS ISAとは異な
る方法でepcレジスタを実施する。本発明によれば、オーバフロー例外の場合
、epcは、例外を引き起こした命令を表示しないが、2個の命令を、例外を引
き起こすものの後に表示する。また、MIPS R−4000と異なり、本発明
のプロセッサにおけるRFE(return from exception)命令は、epcをpc
に復元しない。プログラムは、まずepcを汎用レジスタに移動し、JR命令を
用いて例外ハンドラから出る。
【0040】 また、本発明は、インタフェースブロック78に第2の状態(status)レジスタ
も追加する。追加のレジスタであるstatus_txcは、追加コプロセッサ
に適応し、追加割り込み信号に対してマスクする。これにより、MIPS状態レ
ジスタを変更せずにおき、MIPS互換性を保っている。
【0041】 次に図5において、本発明に係るコプロセッサインタフェース18は、全般的
に、命令復号論理80と、いくつかのデータフローレジスタ82と、を含む。命
令復号論理80は、命令バス22およびistall_N信号23において「盗
聴(eavesdrop)」する。命令はローカルに登録され、EXステージ中に復号され
て、コプロセッサ命令であるか否か、また、もし、そうであるならば、その場合
どのタイプであるかを判定する。命令がコプロセッサ命令である場合、ローカル
レジスタおよびデータを、命令により要求されるように読み出しまたは書き込み
を行うようにしてもよい。各コプロセッサには、1つの条件コードフラグCpC
ond_Nが割り当てられ、ここでNは、シーケンサに提供されるコプロセッサ
番号である。特定のコプロセッサによって生成されるcNflagは、1ビット
レジスタを通って計時され、ライン36を介してシーケンサにCpCond_N
として伝送される。
【0042】 上述したように、本発明に係る現在の好ましいプロセッサは、実施されないい
くつかのMIPS命令および追加されたいくつかの新たな命令に互換性のあるM
IPS ISAである。現在の好ましい実施の形態において実施されないMIP
S命令は、MFHI、MTHI、MFLO、MTLO、MULT、MULTU、
DIV、DIVU、TLBR、TLBWI、TLEWRおよびTLBPである。
乗算および除算ならびに乗算/除算レジスタHIおよびLOの移動は、I/O集
中アプリケーションに有意な性能上の利点をもたらすことはなく、重要な(non-t
rivial)エリアを占有し、基本的なクリティカルパスに何らかの影響を及ぼす。
TLB命令は、現在の好ましい実施の形態がオンチップTLBを含まないため実
施されない。
【0043】 本発明によってMIPS ISAに追加される新たな命令は、すべて、エンハ
ンスドコプロセッサ機能性、命令RAMのブートおよびコンテキストスイッチン
グに関連づけられる。特に、MIPS命令COPz、LWCzおよびSWCzは
、コプロセッサ4〜7のアドレス、すなわち、z=4、5、6および7を含める
ように拡張されている。MIPSコプロセッサ演算全ても4個の追加コプロセッ
サを説明するように拡張されている。さらに、命令への移動および命令からの移
動のためのコプロセッサ一般レジスタアドレススペースは、32から(216−1
)に拡大されている。命令RAMをブートするために、命令LWIおよびSWI
が追加されている。上述したように、CXTS命令は、コンテキスト汎用レジス
タセットを切り換えるために追加されている。
【0044】 COP4乃至COP7に割り当てられたオペコードは、R−2000乃至R−
6000 MIPSプロセッサのいずれによっても未使用である。LWC4乃至
LWC7に割り当てられたオペコードは、R−2000/R−3000 MIP
Sプロセッサによって未使用であるが、他の命令についてはR−4000によっ
て使用される。新たな命令に割り当てられたオペコードのいくつかにより、R−
2000プロセッサにおいて確保された命令(RI)トラップが得られている。
この理由および他のクリティカルパスの理由により、RIトラップ信号が現在の
好ましい実施の形態から省略されている。
【0045】 LWI命令およびSWI命令は、ワードをIRAMにロードし、かつIRAM
からのワードを格納するブートROM(またはプレブートされたブートRAM)
とともに使用されるように設計される。
【0046】 現在の好ましい実施の形態によれば、CXTS命令は、以下の表2に示す形式
を取る。
【0047】
【表2】
【0048】 32ビットCXTS命令は、6個の先頭のゼロビット(ビット位置31乃至2
6)と、整数0、1または2である(ビット位置25および24)2ビットコン
テキストコードCon_selと、18個のゼロビット(ビット位置23乃至6
)と、CXTS命令を表す6ビット(ビット位置5乃至0)と、を含む。先頭の
6個のゼロビットは、命令が「特殊」であることを示している。Con_sel
整数値は、表1にも示される。
【0049】 AXIコンテキストは、新たなインタフェースである代替コンテキストインタ
フェース(Alternate Context Interface)(図3の64)を介してアクセスされ
、これにより、現在使用中ではないコンテキストレジスタのロードを許可する。
代替コンテキストインタフェースは、いくつかの新たな命令信号(コプロセッサ
向けコマンドセットとして実施される)および割り込み方式により実施される。
コマンドセットは、一般に、読み出し信号(axi_rdata)と、アドレス
信号(axi_addr)と、書き込みデータ信号(axi_wdata)と、
コンテキスト選択信号(axi_con_sel)と、コンテキストごとに異な
る書き込みイネーブル信号(axi_wen_0,axi_wen_1,axi
_wen_2)と、を含む。
【0050】 AXIインタフェースにおけるキー信号の波形を図6に示す。図6に示すよう
に、時間t1において、2ビットのaxi_con_sel信号が01から10
に変化し、コンテキスト2へのアクセスを示している。コンテキスト2の1ビッ
トの書き込みイネーブル信号(axi_wen_2)は高(ハイ)になり、次の
6クロックサイクル中に(t2で終了)、6個のワードがaxi_addr信号
により選択されたアドレス(複数も可)に書き込まれる。アドレス信号は、上記
の表1に示されるレジスタアドレスに対応する5ビット信号である。最初のワー
ド書き込み後、axi_rdada信号は、axi_addrにより選択された
データを出力するが、1クロック分遅延される。なお、MIPSアーキテクチャ
はパイプライン制御(pipelined)されるため、メインプロセッサがコンテキスト
の切り換えを許可される前に選択されたコンテキストにおけるすべてのレジスタ
書き込みを飛び越す(get beyond)ことは危険であることが理解されよう。一般に
、CXTS命令の前の2個の命令では、レジスタストアを試みるべきではない。
【0051】 上述したように、本発明の代替コンテキストインタフェースは、外部コプロセ
ッサを必要とする。しかしながら、このインタフェースをどのように使用するか
についての要件は設定されない。管理転送についての詳細、どの割り込みが必要
とされるか等は、開発者に委ねられる。現在の好ましい実施の形態によれば、本
発明に係るプロセッサは、15ビットのint_req信号をサポートするため
、15個のハードウェア割り込みを実施することができる。
【0052】 コンテキストスイッチングを改良したRISCプロセッサについて図示および
説明してきた。本発明の特定の実施形態を説明してきたが、本発明がこれに限定
されることを意図するものではなく、本発明の範囲は、当該技術が許容する同等
の広いものであり、かつその明細書も同様に解釈されることを意図する。したが
って、3個のコンテキストの中で切り換える3セットの汎用レジスタを説明して
きたが、これより多いまたは少ないセットのレジスタを使用し得ることが理解さ
れよう。また、コンテキストを切り換えてコプロセッサを制御する所定のオペコ
ードを説明したきたが、同様の結果が得られる他のオペコードを使用してもよい
ことが理解されよう。さらに、汎用レジスタセットのアドレッシングおよびこれ
に対するデータアクセスを参照して特定の構成を開示してきたが、他の構成も同
じく使用可能であることが理解されよう。さらに、プロセッサを、特殊変形され
たMIPSアーキテクチャを有するRISCプロセッサとして開示してきたが、
MIPSアーキテクチャに対する異なる変形によっても本明細書に開示される同
一または同様の機能を達成することが可能であることが理解されよう。たとえば
、本発明により実施されないMIPS命令のいくつかは、本発明の機能性を犠牲
にすることなく実施可能である。さらに、コンテキストスイッチングを有する複
数セットの汎用レジスタは、代替コンテキストインタフェースがなくても実施可
能であり、本発明の有利な点のいくつかを達成することもできる。また、コンテ
キスト切り換え中に切り換えない共通レジスタの数は、記載の4個より多くても
少なくてもよい。また、当業者には、代替コンテキストインタフェースをともな
ってもともなわなくても、複数セットの汎用レジスタによるコンテキスト切り換
えが、MIPS RISCプロセッサ以外のプロセッサにおいて実施可能である
ことも理解されよう。たとえば、本発明は、PowerPCTMプロセッサ等他の
RISCプロセッサのアーキテクチャ、またはPentiumTMプロセッサ等C
ISCプロセッサのアーキテクチャにおいてさえ実現可能である。したがって、
提示される発明には、請求されるその精神および範囲から逸脱することなく、さ
らに他の変形を加えても構わないことが当業者には理解されよう。
【図面の簡単な説明】
【図1】 MIPSプロセッサにおける従来技術のパイプライン命令処理の図である。
【図2】 本発明に係るプロセッサの主要機能ブロックの概略ブロック図である。
【図3】 図2のRALUの主要機能ブロックの概略ブロック図である。
【図4】 図2のシーケンサの主要機能ブロックの概略ブロック図である。
【図5】 図2のコプロセッサインターフェースの主要機能ブロックの概略ブロック図で
ある。
【図6】 本発明の代替のコンテキストインタフェースのキー信号の波形のタイミング図
である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 パーレラ,ユージン・エル アメリカ合衆国コネチカット州06468,モ ンロー,セトラーズ・ファーム・ロード 48 (72)発明者 マリアノ,リチャード アメリカ合衆国コネチカット州06801,ベ セル,コドフィッシュ・ヒル・ロード 140 Fターム(参考) 5B033 BE06 DD04 5B098 DD03 GA04 【要約の続き】 実施の形態によれば、3セットの汎用レジスタは、それ ぞれ28個の32ビットレジスタを含む。さらに、現在 の好ましい実施の形態によれば、任意のコンテキストで の使用のために、4個の32ビットレジスタの単一セッ トが設けられる。共通レジスタのセットを用いて、2個 以上のコンテキストにより使用される情報を格納する。

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサにおいて、 a)命令シーケンサと、 b)前記命令シーケンサと関連づけられる命令RAMと、 c)前記命令シーケンサが結合されるデータバスおよび命令バスと、 c)前記データバスおよび前記命令バスに結合される演算論理装置と、 d)前記演算論理装置と関連づけられる複数の汎用レジスタであって、少なくと
    も2セットとして配列される、前記複数の汎用レジスタと、 e)前記命令シーケンサからの命令に応答して前記演算論理装置によりアクセス
    される、一度に1つ各セットを排他的に選択する手段と、 を備えるプロセッサ。
  2. 【請求項2】 前記少なくとも2セットのレジスタは、それぞれ28個のレ
    ジスタを含む、 請求項1記載のプロセッサ。
  3. 【請求項3】 f)前記少なくとも2セットのどちらが選択的かつ排他的に
    アクセスされるかにかかわらず、前記演算論理装置に常時アクセス可能な共有の
    汎用レジスタのセットをさらに備える、 請求項1記載のプロセッサ。
  4. 【請求項4】 前記少なくとも2セットのレジスタは、3セットのレジスタ
    を含み、各レジスタのセットが32−n個のレジスタを含み、 前記共有の汎用レジスタのセットはn個のレジスタを含む、 請求項3記載のプロセッサ。
  5. 【請求項5】 n=4である、請求項4記載のプロセッサ。
  6. 【請求項6】 前記汎用レジスタはそれぞれ32ビット幅である、請求項4
    記載のプロセッサ。
  7. 【請求項7】 f)少なくとも1個のコプロセッサを前記プロセッサに結合
    するコプロセッサインタフェース手段をさらに備える、 請求項1記載のプロセッサ。
  8. 【請求項8】 g)前記演算論理装置によりアクセスされない前記少なくと
    も2セットのレジスタの一方にアクセスするインタフェース手段をさらに備える
    、 請求項1記載のプロセッサ。
  9. 【請求項9】 前記プロセッサはRISCプロセッサであり、パイプライン
    において命令を実行する、 請求項1記載のプロセッサ。
  10. 【請求項10】 前記排他的に選択する手段は、選択されたセット以外のす
    べてのセットを命令してアドレッシング信号を無視する手段を含む、 請求項1記載のプロセッサ。
  11. 【請求項11】 前記排他的に選択する手段は、各セットのアドレッシング
    ポートを前記演算論理装置に結合および非結合にする手段を含む、 請求項1記載のプロセッサ。
  12. 【請求項12】 前記排他的に選択する手段は、各セットのデータポートを
    前記演算論理装置に結合および非結合にする手段を含む、 請求項1記載のプロセッサ。
  13. 【請求項13】 前記命令シーケンサからの前記命令は、3個の命令サイク
    ルにおいて実行される、 請求項1記載のプロセッサ。
  14. 【請求項14】 前記排他的に選択する手段は、各セットごとに別個の書き
    込みイネーブルラインを含む、 請求項1記載のプロセッサ。
  15. 【請求項15】 前記命令は、どのセットが排他的に選択されるかを示す埋
    め込みコードを含む、 請求項1記載のプロセッサ。
  16. 【請求項16】 前記埋め込みコードは2ビットコードである、 請求項15記載のプロセッサ。
  17. 【請求項17】 前記命令は32ビットであり、該32ビットは前記2ビッ
    トコードを含み、第1の複数ビットは前記命令が特殊であることを示し、第2の
    複数ビットは前記命令が前記セットの1つを選択しようとすることを示す、 請求項16記載のプロセッサ。
  18. 【請求項18】 プロセッサにおいて、 a)演算論理装置と、 b)第1セットの汎用レジスタと、 c)第2セットの汎用レジスタと、 d)前記演算論理装置による使用のために、前記第1または第2セットの汎用レ
    ジスタの一方を選択する手段と、 を備えるプロセッサ。
  19. 【請求項19】前記各セットの汎用レジスタは、それぞれアドレスポートと
    データポートとを有し、 前記選択手段は、前記アドレスポートをイネーブルおよびディスエーブルにす
    る手段を含む、 請求項18記載のプロセッサ。
  20. 【請求項20】 前記各セットの汎用レジスタは、それぞれアドレスポート
    およびデータポートを有し、 前記選択手段は、前記データポートを前記演算論理装置に結合および非結合に
    する手段を含む、 請求項18記載のプロセッサ。
  21. 【請求項21】 前記選択手段はソフトウェアコマンドに応答する、 請求項18記載のプロセッサ。
  22. 【請求項22】 e)前記演算論理装置による使用のために選択されない前
    記第1または第2セットの他方にアクセスするインタフェース手段をさらに備え
    る、 請求項18記載のプロセッサ。
  23. 【請求項23】 前記インタフェース手段は、前記演算論理装置による使用
    のために選択されない前記セットの汎用レジスタに対する読み出し、書き込みお
    よびアドレスアクセスを設ける、 請求項22記載のプロセッサ。
  24. 【請求項24】 f)前記インタフェース手段に結合され、前記演算論理装
    置による使用のために、選択されない前記セットの汎用レジスタにアクセスする
    コプロセッサ手段をさらに備える、 請求項23記載のプロセッサ。
JP2000545095A 1998-04-22 1999-04-14 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ Pending JP2002512399A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/064,446 US6134653A (en) 1998-04-22 1998-04-22 RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US09/064,446 1998-04-22
PCT/US1999/008275 WO1999054813A1 (en) 1998-04-22 1999-04-14 Risc processor with context switch register sets accessible by external coprocessor

Publications (1)

Publication Number Publication Date
JP2002512399A true JP2002512399A (ja) 2002-04-23

Family

ID=22056042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000545095A Pending JP2002512399A (ja) 1998-04-22 1999-04-14 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ

Country Status (8)

Country Link
US (1) US6134653A (ja)
EP (1) EP1082650A1 (ja)
JP (1) JP2002512399A (ja)
CN (1) CN1127687C (ja)
CA (1) CA2329229A1 (ja)
HK (1) HK1038085A1 (ja)
IL (1) IL139097A0 (ja)
WO (1) WO1999054813A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546479B1 (en) * 1998-02-10 2003-04-08 Koninklijke Philips Electronics N.V. Reduced instruction fetch latency in a system including a pipelined processor
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7120783B2 (en) 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6601162B1 (en) * 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
FR2817058B1 (fr) * 2000-11-21 2003-01-24 St Microelectronics Sa Dispositif et procede de traitement des interruptions dans une transmission d'informations sur un bus
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
CA2381739A1 (en) * 2002-04-15 2003-10-15 Ibm Canada Limited-Ibm Canada Limitee Adaptive spin latches
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
DE60323811D1 (de) * 2003-04-09 2008-11-13 Jaluna S A Betriebssysteme
US8612992B2 (en) * 2003-04-09 2013-12-17 Jaluna Sa Operating systems
EP1503286B1 (en) * 2003-07-30 2014-09-03 Jaluna SA Multiple operating system networking
JP2007509387A (ja) * 2003-09-30 2007-04-12 ジャルナ エスアー オペレーティングシステム
FR2865291A1 (fr) * 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de transfert de donnees dans un systeme multiprocesseur, systeme multiprocesseur et processeur mettant en oeuvre ce procede
US7814490B2 (en) 2004-10-14 2010-10-12 International Business Machines Corporation Apparatus and methods for performing computer system maintenance and notification activities in an opportunistic manner
US8230144B1 (en) * 2004-10-19 2012-07-24 Broadcom Corporation High speed multi-threaded reduced instruction set computer (RISC) processor
US8171268B2 (en) * 2005-09-19 2012-05-01 Intel Corporation Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
US8458446B2 (en) * 2009-09-30 2013-06-04 Oracle America, Inc. Accessing a multibank register file using a thread identifier
JP5711889B2 (ja) * 2010-01-27 2015-05-07 スパンション エルエルシー リコンフィギュラブル回路および半導体集積回路
CN102043609B (zh) * 2010-12-14 2013-11-20 东莞市泰斗微电子科技有限公司 一种浮点协处理器及相应的配置、控制方法
US9195497B2 (en) * 2012-03-21 2015-11-24 Microchip Technology Incorporated Microcontroller with context switch
US10031773B2 (en) 2014-02-20 2018-07-24 Nxp Usa, Inc. Method to communicate task context information and device therefor
CN104090740A (zh) * 2014-05-27 2014-10-08 安徽师范大学 微控制器指令集的执行方法
JP2017037370A (ja) * 2015-08-06 2017-02-16 富士通株式会社 計算機、プロセス制御方法およびプロセス制御プログラム
US9703603B1 (en) 2016-04-25 2017-07-11 Nxp Usa, Inc. System and method for executing accelerator call
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10489382B2 (en) * 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
CN108037951B (zh) * 2017-12-27 2020-11-20 山东师范大学 一种dtp处理器的中断快速切换方法及装置
CN109408339A (zh) * 2018-11-05 2019-03-01 郑州云海信息技术有限公司 一种cpld/fpga寄存器控制方法和系统
DE102018128045A1 (de) * 2018-11-09 2020-05-14 Infineon Technologies Ag Behandlung von Ausnahmen in einem Programm
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor
CN110045989B (zh) * 2019-03-14 2023-11-14 合肥雷芯智能科技有限公司 一种动态切换式低功耗处理器
CN112463327B (zh) * 2020-11-25 2023-01-31 海光信息技术股份有限公司 逻辑线程快速切换的方法、装置、cpu芯片及服务器
CN114168197B (zh) * 2021-12-09 2023-05-23 海光信息技术股份有限公司 指令执行方法、处理器以及电子装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853849A (en) * 1986-12-17 1989-08-01 Intel Corporation Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction
US5179682A (en) * 1990-05-15 1993-01-12 Sun Microsystems, Inc. Method and apparatus for improved current window cache with switchable address in, out, and local cache registers
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
DE4208459A1 (de) * 1992-03-17 1993-09-23 Philips Patentverwaltung Schaltungsanordnung zur verarbeitung von eingabe/ausgabedaten
JP3676411B2 (ja) * 1994-01-21 2005-07-27 サン・マイクロシステムズ・インコーポレイテッド レジスタファイル装置及びレジスタファイルアクセス方法
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5812868A (en) * 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US5903919A (en) * 1997-10-07 1999-05-11 Motorola, Inc. Method and apparatus for selecting a register bank

Also Published As

Publication number Publication date
WO1999054813A9 (en) 2000-02-03
CN1127687C (zh) 2003-11-12
CN1306642A (zh) 2001-08-01
EP1082650A1 (en) 2001-03-14
IL139097A0 (en) 2001-11-25
CA2329229A1 (en) 1999-10-28
US6134653A (en) 2000-10-17
WO1999054813A1 (en) 1999-10-28
HK1038085A1 (en) 2002-03-01

Similar Documents

Publication Publication Date Title
US6134653A (en) RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
EP0459232B1 (en) Partially decoded instruction cache and method therefor
JP3120152B2 (ja) コンピューターシステム
EP0747808A2 (en) Processor capable of supporting two distinct instruction set architectures
US5263153A (en) Monitoring control flow in a microprocessor
US10599428B2 (en) Relaxed execution of overlapping mixed-scalar-vector instructions
US5940876A (en) Stride instruction for fetching data separated by a stride amount
EP1875338A2 (en) Microprocessor access of operand stack as a register file using native instructions
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
KR20000076310A (ko) 리스크 구조를 갖는 8 비트 마이크로콘트롤러
JPH03158928A (ja) データ処理装置
GB2024475A (en) Memory access controller
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP2874351B2 (ja) 並列パイプライン命令処理装置
EP2631786A2 (en) Load multiple and store multiple instructions in a microprocessor that emulates banked registers
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
US5742755A (en) Error-handling circuit and method for memory address alignment double fault
US11269649B2 (en) Resuming beats of processing of a suspended vector instruction based on beat status information indicating completed beats
US5819060A (en) Instruction swapping in dual pipeline microprocessor
JP3105110B2 (ja) 演算装置
US7055022B1 (en) Paired load-branch operation for indirect near jumps
JP3102399B2 (ja) データ処理装置及び方法
US20060165094A1 (en) Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
Golze et al. RISC Architectures