JP3916680B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP3916680B2 JP3916680B2 JP33651093A JP33651093A JP3916680B2 JP 3916680 B2 JP3916680 B2 JP 3916680B2 JP 33651093 A JP33651093 A JP 33651093A JP 33651093 A JP33651093 A JP 33651093A JP 3916680 B2 JP3916680 B2 JP 3916680B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- functional unit
- instruction
- write
- slot
- 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.)
- Expired - Lifetime
Links
- 239000011159 matrix material Substances 0.000 claims description 9
- 238000000034 method Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 29
- 101150099915 Rsrc2 gene Proteins 0.000 description 16
- 101150043159 Rsrc1 gene Proteins 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 108700012361 REG2 Proteins 0.000 description 1
- 101150108637 REG2 gene Proteins 0.000 description 1
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 1
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、a)相互に並列に処理を実行するための、3以上である第1の数の機能ユニットと、b)2以上で第1の数より小さい第2の数の命令を保持するため、及び、命令と機能ユニットとの対応を特定するためのコードを保持するための命令レジスタと、c)命令レジスタ中の命令を並列に実行することを適切な機能ユニットに指示するための実行制御手段とを具えたプロセッサに関するものである。
【0002】
【従来の技術】
前記のようなプロセッサは、論文「プログラマブル命令フォーマットのVLIWアーキテクチャへの拡張」("A programmable Instruction format extension to VLIW architectures", A.De Gloria著、コンプユーロ(CompEuro)1992議事録「コンピュータシステム及びソフトウェアエンジニアリング」"Computer system and software engineering", IEEE computer society press 発行)から既知である。VLIWとは「大変長い命令語」(Very Long Instruction Word)を意味する。VLIWアーキテクチャを有するプロセッサは、乗算器、加算器、ALU、定数発生ユニット、メモリー等の機能ユニットを具える。VLIWアーキテクチャを有するプロセッサは、コンパイラによってプランニングされる命令の拡張における並列化を可能にする。
【0003】
これは次のようにして実現される。各クロックサイクルで多くの命令がプログラムメモリーから命令レジスタに並列にロードされる。レジスタ中の命令は、全ての機能ユニットに対する明示オプコード及びオペランド仕様を含む。レジスタからの命令は並列に機能ユニットに供給される。
【0004】
しかしながら、実際の応用では、機能ユニットの全てが同時に活性状態になることは極めて稀である。この事実は、全ての機能ユニットに対して同時に必要とするより少ないオプコード及びオペランド仕様を各命令の中に具えたアーキテクチャを可能にする。マルチプレクサを用いることによって、各命令は、活性化されるべき選択された機能ユニットに向く。このように、性能を損なうことなく命令メモリーのサイズを節減することが可能になる。命令が元のVLIWアーキテクチャにおけるように極めて長くない場合には、これを”ノットソーVLIW”アーキテクチャと呼んでもよい。
【0005】
このアーキテクチャでは、命令レジスタは異なったクロックサイクルに異なった機能ユニットに命令を出さなければならない。このため、従来のアーキテクチャは、どの命令がどの機能ユニットに導かれるかを選択するマルチプレクサを具え、そのオプコード及びそのオペランド仕様をこの選択された機能ユニットに送り出している。
【0006】
オペランド仕様は、オペランド自身(直接モード)又はレジスタファイル中のオペランドのアドレス(レジスタモード)を含む。後者のモードについては、各機能ユニットがレジスタファイルに対して少なくとも1つの読出しポートを持つ。命令がレジスタモードのときは、オペランド仕様が読出しポートのアドレス入力に供給される。これに応答してアドレスレジスタの内容が読出しポートに出力される。
【0007】
処理の並列実行を支持するために、レジスタは、レジスタから並列に読出すことができる読出しポートを具えたマルチポートレジスタファイルに集められる。レジスタファイルは、各機能ユニットの各オペランド入力に対してそれぞれのポートを持つ。例えば各乗算器機能ユニットはそれぞれ2つの読出しポートに接続される。これと反対に、命令によって定められる定数が供給される”定数”ユニットは、読出しポートには接続されない。
【0008】
【発明が解決しようとする課題】
集積化されたプロセッサでは、上記のようなレジスタファイルはシリコンの大きな面積を必要とし、かなりの電力を消費する。
本発明は、特に、シリコンの面積を減少させ、電力の消費を減少させることを目的とするものである。
【0009】
【課題を解決するための手段】
本発明は、プロセッサが、命令レジスタ中の命令に関するオペランドを格納するためのマルチポートレジスタファイルを有すること、該マルチポートレジスタファイルが、オペランドに対する並列アクセスを可能にするために、第3の数の読出しポートを有すること、該第3の数は、第2の数の機能ユニットからなるいずれかの機能ユニットのサブセットによってレジスタファイルの中から要求されるオペランドの最大数以上であること、該第3の数は、機能ユニット全体によって要求されるオペランドの総数より小さい数であること、及び、プロセッサが、読出しポートに並列にアクセスして命令を実行することを指示される機能ユニットを選択的に定めるための読出しアクセス供与手段を具備することを特徴とするプロセッサを提供するものである。
【0010】
レジスタファイルの面積と電力消費はポートの数に比例するので、ポートの数を減らせば必要な面積と電力消費を減らすことができる。並列に使用されるポートの数は、並列にスタートするために実行できる命令の数によって決まる。この数は、全ての機能ユニットが同時に要求するオペランドの全数より少ない。機能ユニットとレジスタファイルへのポートとの間にプログラマブルな接続を設けることによって、プロセッサによって達成される並列処理の処理量を減らすことなしに、レジスタファイルへのポートの数をこのポートの全数より小さくすることができる。
【0011】
本発明の1つの実施例においては、読出しポートが読出しポートの群を構成すること、少なくとも1つの特定の群が少なくとも2つの読出しポートを有すること、読出しアクセス供与手段が群毎に機能ユニットに与えられた読出しポートを選択するように構成されること、少なくとも1つの機能ユニットがそれぞれのオペランドを同時に受信するための少なくとも2つの入力部を有すること、及び、特定の群が機能ユニットの群として選択される度毎に、該入力部が該特定の群からのそれぞれ所定の読出しポートに接続されることを特徴とする。プログラムの命令は群のみを識別すればよいので、命令の中でポート選択のために占拠される部分は、各ポートが個々に識別される場合に必要になるより小さい部分が占拠されるに過ぎない。
【0012】
本発明の1つの実施例においては、命令レジスタが命令を送出するための各送出スロットについて第2の数に構成されること、各送出スロットが読出しポートの少なくとも1つの各群に対応すること、及び、特定の機能ユニットが特定の送出スロットからの命令を実行する度毎に該特定の送出スロットに対応する群からの読出しポートにアクセスするように構成されることを特徴とする。このように、送出スロット及び機能ユニットに接続されたポートの群の個々の識別が不要であり、これは、命令が送出スロット及び群の個別の識別を含む場合より、選択のためにはより小さい命令で充分であることを意味する。
【0013】
本発明の1つの実施例においては、各特定の群が第4の数の所定のポートを含むこと、及び、該第4の数が機能ユニットのいずれか1つによって要求されるオペランドの最大数に等しいことを特徴とする。各群がいずれの機能ユニットをも供給できるようにするため、各群のポートの数はいずれかの機能ユニットによって必要とされるオペランドの最大数に等しい。実際には、一部の機能ユニットはそのように多くのオペランドをレジスタファイルから要求しないかも知れない。
【0014】
例えば、要求されるオペランドの最大数が(乗算器の場合のように)2とすると、機能ユニットに対して準備される群のポートの数は2である。全くポートを必要としない定数を供給する機能ユニットに対しても、同様に、この数のポートが適用される。
【0015】
本発明の他の実施例においては、各特定の送出スロットが、該特定の送出スロットに対応する群の読出しポートのそれぞれのアドレス入力部に接続された同じ所定数のアドレスフィールドを含み、該特定の送出スロットからの命令を実行する機能ユニットが、アドレスされたオペランドを要求するか否かに拘わらず、該読出しポートでアドレスされたオペランドにアクセスするように構成されることを特徴とする。このように、どの機能ユニットがポートにアクセスしようとするかに関係なしに、その機能ユニットがポートを全く使用しないかどうかに拘わらず、アドレスフィールドが直接レジスタファイルに出力される。これは、レジスタファイルのためのアドレスデコードが、その送出スロットの命令を実行すべき機能ユニットの選択が行われる直前に開始されるため、処理を高速化する。
【0016】
命令レジスタの構成が固定フォーマットを持つことが望ましい。即ち、命令レジスタのそれぞれの固有部分の一般の機能(オプコード、オペランドアドレス、命令を実行すべき機能ユニットを識別するためのコード、その他)は、命令の実行に使用される機能ユニットに関係なく、並列に実行するために選択された機能ユニットの組み合わせに関係なく、或いは命令自身に関係なく、少なくとも複数の機能ユニット及び命令については同じであることが望ましい。命令がデコードされるより前にアドレスデコードが開始されるため、これは利点である。更に、例えば、命令レジスタと命令をルーチングするための他のユニットとの間に設けられるスイッチング回路を簡単にする利点もある。
【0017】
本発明の1つの実施例においては、少なくとも1つの機能ユニットが、1つの命令を実行することを指示されたとき、更に、該1つの命令を送出する送出スロットのアドレスフィールドから情報を受信し、該少なくとも1つの機能ユニットが実行の間該情報をオペランドとして使用することを特徴とする。このように、オペランドは、直接オペランドを必要とする処理に対しては直接オペランド(例えば定数)としても使用される。オプコードがデコードされる前には、或いは少なくともオプコードが指向する機能ユニットの識別がデコートされる前には、そのオペランドが定数かアドレスかいずれであるかは分からない。従って機能ユニットにオペランドが供給されると同時に、レジスタファイルはオペランドをアドレスとしてデコードを開始する。デコードを待つことは処理の速度を低下させる。オペランドが直接オペランドである場合は、レジスタファイルからアクセス可能のデータは無視される。
【0018】
本発明の1つの実施例においては、マルチポートレジスタファイルが少なくとも1つの書込みポートを有すること、及び、プロセッサが、並列に命令を実行し結果を生成することを指示された機能ユニットに対する書込みポートに選択的にアクセスするための書込みアクセス供与手段を有することを特徴とする。このようにして、レジスタファイルに対して機能ユニットより少ない書込みポートを使用することが可能であり、これは面積と電力消費を低減する。書込みポートの選択は、送出スロットからの明示の選択なしに計画することができる。オプコードの送出と結果の生成との間に利用できる若干の時間があるため、これが処理速度を低下させることはない。
【0019】
本発明の1つの実施例においては、書込みアクセス供与手段が、機能ユニットが命令を実行することを指示された後のレイテンシー期間に、結果アドレスフィールドの内容に基づいて、機能ユニットの1つの出力部を書込みポートに接続するように構成されることを特徴とする。このように、レジスタファイルへの書込みポートの数は、機能ユニットの数より小さく保つことができる。
【0020】
本発明の1つの実施例においては、命令レジスタが命令を送出するための各送出スロットについて第2の数に構成されること、各送出スロットが同じそれぞれの数の結果アドレスフィールドを含むこと、及び、書込みアクセス供与手段が該アドレスフィールドの内容を書込みポートのアドレス入力部にルーチングするように構成されることを特徴とする。
【0021】
本発明の1つの実施例においては、書込みアクセス供与手段が、機能ユニットが命令を実行することを指示された後のレイテンシー期間に、結果アドレスフィールドの内容に基づいて、機能ユニットの1つの出力部を書込みポートに接続するように構成される。機能ユニットが処理を実行するとき、処理の開始と結果が有効になるまでとの間に1クロックサイクル以上のレイテンシーがあることがある。このレイテンシーは使用される機能ユニットによって変化する。
【0022】
本発明の1つの実施例においては、レジスタファイルが少なくとも2つの書込みポートを持ち、書込み選択手段が予備的割当て手段を有し、該予備的割当て手段がその予備的割当ての後1クロックサイクルの間特定の書込みポートを機能ユニットの1つに予備的に割当て、そのクロックサイクルの中で該機能ユニットの1つの実行の結果が有効になり、更に、該予備的割当て手段が機能ユニットの1つの出力を該特定の書込みポートに接続し、該結果アドレスフィールドの内容を該クロックサイクルの間該特定の書込みポートに送るように構成されることを特徴とする。この実施例によれば、プロセッサが有効になるであろう結果についてのトラックを確保し、結果が書込まれる前に書込みポートの割当てを計画する。
【0023】
本発明の他の実施例においては、予備的割当て手段が、クロックサイクルの間、特定の書込みポートが以前に機能ユニットの1つに割当てられていないとの制約の下に書込みポートから該特定の書込みポートを選択するように構成されることを特徴とする。このように、これらの結果を生じる処理が異なった時刻に開始されたとしても同時に結果を生成する機能ユニット間の衝突を避けることができる。
【0024】
【実施例】
次に図面を用いて本発を詳細に説明する。
VLIWのCPUは、種々の用途、即ち、スーパーコンピュータからワークステーション及びパーソナルコンピュータに至る用途に使われる。更に、ワークステーション、パーソナルコンピュータ、ビデオ或いはオーディオ製品に専用又はプログラマブルなプロセッサとして使われる。
【0025】
図1は、従来のVLIW装置を示す。命令は命令メモリー102から命令出力レジスタIIRにロードされる。各クロックサイクルに、新しい極めて長い命令が命令出力レジスタIIRから送出される。この命令は、VLIW型CPU中の各機能ユニット(CONTROL,CONST,ALU1,ALU2,MUL,FPU,MEM)について1つの送出スロットを含む。VLIWマシンは機能ユニットのどのような有用な組み合わせをも包含し得るが、ここではその1つを例示する。そこにはいくつかの機能ユニットと、更に必要とする処理に依存する種々の型の機能ユニットとがある。機能ユニットに対するオペランドは、接続先を分担する複数のポートを持つレジスタファイル101から読出される。機能ユニットからの結果はまたこのファイルに書込まれる。
【0026】
送出スロットは、機能ユニットの最新のクロックサイクルでスタートする処理を特定する。図2は、CONTROL処理、CONST処理、ALU1処理、ALU2処理、MUL処理、FPU処理、及びMEM処理を含むVLIW命令201を示す。言い換えれば、VLIW命令は、図1のVLIW型CPU中の各機能ユニットについて1つの送出スロットを含む。
【0027】
202はCONTROL処理に特定された送出スロットの内容を示す。この送出スロットはCONTROLオプコード及び2つのレジスタ仕様Rsrc1及びRsrc2を含む。これらのレジスタはそれぞれソースレジスタ1及びソースレジスタ2である。
203はCONST処理に特定された送出スロットの内容を示す。この送出スロットは、定数値及びレジスタ仕様Rdestを含む。このレジスタはデスティネーションレジスタである。
【0028】
204はALU処理を含む送出スロットの内容を示す。この送出スロットはALUオプコード及び3つのレジスタ仕様Rsrc1、Rsrc2及びRdestを含む。
205はMUL処理を含む送出スロットの内容を示す。この送出スロットはMULオプコード及び3つのレジスタ仕様Rsrc1、Rsrc2及びRdestを含む。
206はFPU処理を含む送出スロットの内容を示す。この送出スロットはFPUオプコード及び3つのレジスタ仕様Rsrc1、Rsrc2及びRdestを含む。
【0029】
207はMEM処理を含む送出スロットの内容を示す。この送出レジスタはMEMオプコード及び2つのレジスタ仕様Rsrc1及びRsrc2又はRdestを含む。
これらの送出スロットは例示であり、機能ユニットの他の有用な構成に修正してもよい。
【0030】
殆どの従来のマシンでは、処理は各サイクルで全ての機能ユニットでスタートさせることが可能である。サイクル”i”でスタートした処理は、1サイクルで又は複数のサイクルで完結する。完結は、処理の結果をデスティネーションレジスタに書込むことによって証明される。結果のない処理("STORE" のような処理)については、処理の完結は処理に対応する状態の変化が生起する時である。
【0031】
図1の殆どの機能ユニットは、例えばCONST(定数発生ユニット)のように単純である。このユニットは、デスティネーションレジスタに置かれる定数を生成する。ALU,MUL及びFPUユニットは、1つ又は2つの引数について数学的、論理的及びシフト処理を実行し、デスティネーションレジスタに1つの結果を生成する。
【0032】
CONTROL及びMEMユニットは若干異なっている。
CONTROLユニットは命令が送出される順序を決める。CONTROLユニットにNOP(処理せず)が送出される場合には、命令は命令メモリーから連続した順序で送出される。CONTROLユニットにCJMPF又はCJMPT(それぞれ、条件ジャンプ偽及び条件ジャンプ真)処理が送出される場合は、Rsrc1レジスタの内容が真値、即ちブール関数値を持つと判断され、Rsrc2の内容がアドレスとして用いられ、特定の条件に合致したときのみそこから命令の送出が続けられ、他の場合は、命令の送出は連続的に行われる。
【0033】
MEMユニットはロード処理及び格納処理を実行する。換言すれば、データワードがレジスタファイルとシステム主メモリーとの間を動く。ロード処理は、ロードされるべきデータワードの主メモリーにおけるアドレスとしてRsrc1を用い、Rdestがロードされた値が格納されるべきレジスタを決める。格納処理は、アドレスとしてRsrc1の定数を用い、格納されるべき値としてRsrc2の内容を用いる。勿論、ロード処理及び格納処理については多くの変形がある。ロード命令はRsrc2を必要とせず、格納命令はRdestを必要としないため、送出スロットはただ2つのレジスタフィールドを必要とするに過ぎない。
【0034】
ソフトウェアプログラムがVLIWマシン上で動作するためには、”微粒子並列”翻訳又は”命令レベル並列”翻訳が行われなければならない。これは、ANSIC等の通常の高水準プログラミング言語をVLIWマシンのための命令に翻訳するコンパイラによって行われる。VLIWマシンで使われるコンパイラは、ジョン・アール・エリス(John R. Ellis )による「ブルドッグ:VLIWアーキテクチャのためのコンパイラ」(BULLDOG:A compiler for VLIW architectures, MIT Press 1985, ISBN 0-262-05034-X )に記述されている。
【0035】
図1のVLIWをピークの処理速度で動作させるためには、1CONTROL,1CONSTANT,2INTEGER ALU,1INTEGER MULTIPLY,1FLOATING POINT及び1MEMORYの処理が各サイクル毎に送出されなければならない。高水準言語で表された実際のプログラムの性質によって、このピークでの実行を維持する処理の適切な混合を見出すことができない。コンパイルの後、与えられたクロックサイクルの中で並列に実行できる一連の処理は、利用できる機能ユニットの型にマッチしない型の混合である。或る場合は、マシンのユニットの数より少ない並列処理が行われるフェーズを通ってプログラムが進む。
これは、種々の問題を生じる。
【0036】
第1の問題は、レジスタファイルのポートの利用が不充分であることである。中央レジスタファイルのシリコン面積及び電力消費はポートの総数に比例する。従って、このポートの利用度が高いことは重要である。
【0037】
第2の問題は、VLIW型CPUをピーク又はピーク付近の性能に維持するために必要な命令の帯域幅が高いことである。NOPコードを含む空スロットがこの帯域幅に寄与する。帯域幅は、直接Iキャッシュ(命令キャッシュ)サイズに、そして、バス及び他のメモリーシステムの部品のコストに跳ね返る。
【0038】
第3の問題は、VLIWのために翻訳されたプログラムのためのコードのサイズは、RISC型CPUのために翻訳された同一プログラムのサイズより大きいことである。VLIWの性能はRISCのそれより高いとはいえ、VLIWのコストの効率はRISCのそれより低いのである。
【0039】
図3は、本発明によるVLIW型CPUを示す。IIRはマシンの機能ユニットより少ない送出スロットを持つ。例えば、7つの機能ユニットのマシンに対して3つの送出スロットで足りる。一般に、或る数及び型の機能ユニットに対する送出スロットの数は、平均効率とコストとの間の関係で決まる。しかし、Nユニットのマシンは、N/4と2N/3との間の送出スロットを持つとするのが合理的である。
【0040】
CPUは、複数の群の読出しポート((R1a,R1b)(R2a,R2b)(R3a,R3b))を有するレジスタファイル403を含む。適切なレジスタファイルの例は、インテルiWARP&i960チップの中に見出すことができる。それには、IIRの各スロットのための読出しポートの群がある。読出しポートはレジスタファイルの中のレジスタの内容を読むためのものである。各群のポートの数は、いずれかの機能ユニットが必要とするソースレジスタの最大数と同じである。この場合、2つを超えるソースレジスタを必要とする機能ユニットはないので、読出しポートの各群は2つの読出しポートを有する。このように、2つの読出しポートの群が3つあり、都合6つの読出しポートがある。
【0041】
入力スイッチ制御902(図6B)によって制御されるスイッチマトリクス401が、どの読出しポートをどの機能ユニットの入力に接続するかを決める。
【0042】
レジスタファイルは更に書込みポートの複数の群(W1,W2,W3,W4)を有する。IIRの各スロットに対して少なくとも1つの書込みポート群がある。各群の書込みポートの数は、どの機能ユニットも必要とするデスティネーションレジスタの最大数である。この例では、1つを超えるデスティネーションレジスタを必要とする機能ユニットはないので、各群の書込みポートはただ1つである。
【0043】
第2のスイッチマトリクス402 が、書込み制御ユニット(RFWC)の制御の下で、機能ユニットの出力を書込みポートに接続する。
【0044】
図4は、新しいVLIW命令410のフォーマットを示す。この命令は、処理のための3つのスロットを持つ。各スロットはどのような型の処理をも含む。前記のように6つの型の処理があり、各型は機能ユニットCONTROL,CONST,ALU,MUL,FPU,及びMEMのそれぞれの型である。
【0045】
この送出スロットは前記の送出スロットとは種々の点で異なる。
第1は、送出スロットはスロット全て同じ長さである。送出スロットの内容のフォーマットは、CONTROL,CONST,ALU,MUL,FPU,及びMEMのそれぞれに対して420,430,440,450,460及び470に示されている。スロットが一定長のため、CONTROL型の処理420の終端に若干のブランクスペースを挿入する必要が生じる。
【0046】
第2は、送出スロットの全てがどの機能ユニットが処理を実行するかを識別する手段を有する。図では、全ての送出スロットがユニット識別フィールドunit-idを持ち、これが処理を予定している機能ユニットを識別する。8つまでの機能ユニットを持つマシンについては、ユニット識別フィールドは3ビット幅を必要とするに過ぎない。
【0047】
これらの通常の技術では、ユニットを識別する方法は多くの他の方法で置き換えることができる。1つの代替方法は、オプコードにユニットを含ませることである。もう1つの代替方法は、オプコードにユニットの型を含ませ、ハードウェアをその型のユニットに割り当てることである。
【0048】
図3のVLIW型CPUでは、各クロックサイクルに3つの処理命令がIIRから送出される。送出スロットのソースレジスタフィールド(Rsrc1, Rsrc2)は、レジスタファイルの読出しポート((R1a,R1b)(R2a,R2b)(R3a,R3b))をアドレスするために使用される。ユニット識別フィールドに基づいて、オプコード制御は定められた機能ユニットにルーチングされる。
【0049】
全ての送出スロットのデスティネーションレジスタは書込み制御ユニット(RFWC)にルーチングされる。この書込み制御ユニットは、各機能ユニットのレイテンシーを知り、結果が生成されたときにトラックを確保する。この書込み制御ユニットは、レジスタファイル中に結果を書込むために適当なバスを割り当てる。3送出スロットマシンでは、ユニットレイテンシーが等しくないことによるトラヒックのバーストを処理するために3つ以上の書込みバスがある。ここでは、4つの書込みバスがある。
【0050】
前記の例は1つの実施例に過ぎない。設計者は、予想される仕事量に基づいて機能ユニットの数と型を選ぶ必要がある。設計者はまた、IIRの中の送出スロットの数とコストパフォーマンスを最良にする書込みバスの数も選ばなければならない。
【0051】
好ましい実施例のアーキテクチャは、容易な上方互換性を与える。例えば、追加のFPU,ALU及びCONSTを含み、IIRのスロットの数を4つに増すことによって、高度の性能のCPUを作る場合を仮定する。古いユニット識別フィールド値が新しいマシンの同じユニットの型にマップする限りは、新しいマシンは、古いマシンからのバイナリーのユニットIDを用いることができる。古いマシンのコードイメージは、従って新しいマシン上でも動作する。例えば、プログラムのロードフェーズの間追加のNOP処理を加える。新しいマシンが古いマシンより広いフィールドを持つ場合は、ユニット識別フィールドにゼロを追加するだけでよい。しかしながら、再コンパイル、再スケジューリング、コードの再アセンブル等は必要なく、全ての互換性出力はプログラムロードの時に解決できる。
【0052】
図5は、レジスタファイルの読出しポート((R1a,R1b)(R2a,R2b)(R3a,R3b))と機能ユニットの入力との間のスイッチングマトリクスの実施例を示す。このスイッチングマトリクスに対しては、多くの代替技術がある。
マルチプレクサ801は、対応する機能ユニットの入力ポートに接続されており、各レジスタファイルの読出しポートは全てのマルチプレクサ801の入力に接続されている。例えばポートR1bは、全ての機能ユニットのマルチプレクサのB入力に接続されている。
【0053】
命令が送出段に到達すると、IIRがその命令のバイナリーコードを含む。命令が送出されると、各送出スロットのRsrc1及びRsrc2のフィールドがレジスタファイル読出しポート((R1a,R1b)(R2a,R2b)(R3a,R3b))に対するアドレスを読出すために使用される。これにより、6つのレジスタの全てが読出される。実際にはこれらのレジスタが全て必要ではない場合もある。例えばスロット1が定数型の処理を送出する場合もある。この場合はレジスタファイルのアドレスはランダムである。しかしながら、送出された処理がRsrc1又はRsrc2又は両者を必要とする場合は、適宜のレジスタ値が機能ユニットの全てのMUX入力で、特に処理が実行されるべき機能ユニットのMUXで有効になる。
【0054】
図6Aは、レジスタファイル403とその読出しポート及びアドレッシングポートを示す。図6Bは、入力スイッチ制御論理ブロック902を示す。
図示したように、レジスタファイル403に対する読出しアドレス入力((AR1a,AR1b)(AR2a,AR2b)(AR3a,AR3b))は、全て6ビット幅で命令送出レジスタIIRのレジスタソースフィールドから供給される。即ち、それぞれ、IIR.issue1.Rsrc1、IIR.issue1.Rsrc2、IIR.issue2.Rsrc1、IIR.issue2.Rsrc2、IIR.issue3.Rsrc1、IIR.issue3.Rsrc2である。これらのアドレスを基にして、オペランドがそれを必要とする機能ユニットに対して読出しポート((R1a,R1b)(R2a,R2b)(R3a,R3b))から供給される。
【0055】
書込みアドレス入力(W1.wa,W2.wa,W3.wa,W4.wa)及び書込みエネーブル入力(W1.we,W2.we,W3.we,W4.we)が図9AのRFWCから供給される。処理の結果は、図8のマルチプレクサ801,802,803及び804からW1,W2,W3及びW4に供給される。
【0056】
入力スイッチ制御902に対するアドレッシング入力、即ちIIR.issue1.unitID、IIR.issue2.unitID、IIR.issue3.unitIDは、命令送出レジスタのユニット識別フィールドから供給される。これらのアドレッシング入力から、入力スイッチ制御902が2ビット信号M0C,M1C,M2C,M3C,M4C,M5C及びM6Cを決める。これらのマルチプレクサ制御信号はマルチプレクサ801に供給され、レジスタファイルからそれぞれの機能ユニット入力に対してオペランドを供給する読出しバスを選択する。
【0057】
図7は、全ての機能ユニットのための全てのオプコードを発生するオプコードの生成及び送信論理の例を示す。
【0058】
入力スイッチ制御902は、例えば標準セル論理、PLA又はROMルックアップテーブルのような、既知の種々の方法で実現できる機能論理ブロックである。ここでは、以下のユニットID割当てを仮定する。即ち、ユニット0=control,ユニット1=CO,ユニット2=ALU1,ユニット3=ALU2,ユニット4=MUL,ユニット5=FPU,ユニット6=MEMである。更に、マルチプレクサ制御フィールドの1が最左側入力を、2が中央の入力を、そして3が最右側の入力を選択すると仮定する。これらの仮定から、任意のユニットIDの割当ての組み合わせから必要なマルチプレクサ制御フィールドの組み合わせへの変換テーブルを構成できる。このテーブルから若干の入力及び出力ベクトルを次に例示する。
【0059】
【表1】
【0060】
注(1):送出スロットissue1がCONST(定数)ユニットの処理を送出する。CONSTユニットは入力を持たないのでマルチプレクサ制御を受けない。しかしながら、図7のオプコードルーチング論理は、COユニットオプコード結果マルチプレクサを制御するためにM1C信号を必要とする。送出スロットissue2はMUL処理、即ちここではM4C=2を送出し、これにより、MUL(乗算器)ユニットの2つのマルチプレクサがR2ポート値を選択するようにセットされる。他の全てのマルチプレクサは位置0にセットされ、これがオプコード送信論理上で特定の用途を持つ。送出スロットissue3によって送出されたユニット6の処理がロードされると、Rsrc2オペランドはロード処理によって使用されないので、MEMユニットにルーチングされたオプコードに基づいてR3bバスの値は無視される。
【0061】
注(2):処理が送出される1つのユニットに対する全てのマルチプレクサが、これらの処理を送出する送出スロットに対応するレジスタポートを選択する。これは入力スイッチ制御ブロックの論理式を作るための一般則である。
【0062】
レジスタ読出しポート値のスイッチングに並行して、図7の回路が個々の機能ユニットオプコードを発生する。図5と同一のマルチプレクサ制御信号がこの回路で使われる。規則は、送出スロットXがユニットYに対する処理を含む場合はユニットYがマルチプレクサ制御信号値Xを受信し、Yのマルチプレクサは送出スロットXの中のオプコードフィールドをその処理のためのオプコードとして選択する、とするものである。
【0063】
何も送出されないユニットは、マルチプレクサ選択信号ゼロを受信する。そうすると、そのユニットに対して無処理(NOP)オプコードを発生する。これは、その無処理コード(図示せず)を受信するマルチプレクサに対して追加の入力を加えるか、或いはオプコードマルチプレクサユニットの論理式を変更するかによって行われる。
【0064】
図7では、CONSTユニットが特別である。これは実際にはダミーユニットである。それは、COユニット処理が送出された送出スロットのオプコード、Rsrc1及びRsrc2フィールドの連鎖であるバイナリー値を発生し出力する。
【0065】
図5−7の実施例の多くの代替技術が考えられる。例えば、高パフォーマンスのマシンは多分パイプラインになろう。このような場合、パイプラインレジスタ及びバイパス回路がこの基礎設計に付加される。更に、1つの処理におけるユニット識別フィールド及びオプコードフィールドは、フィールド間の可動境界を持つ単一のフィールドに結合することができる。この可動境界は、種々の機能ユニットに要求される種々の数のオプコードビットに適応する。例えば、ALUはMLU又はMEMユニットに比較してかなり多くのオプコードビットを必要とする。この場合は、ALUに対してはMUL及びMEMに対してより、ユニット識別フィールドは短く、オプコードフィールドは長くなる。この場合、オプコード送信論理が最長の可能なオプコードを表すビットの組を受信するのと同時に、入力スイッチ制御ブロックが、最長の可能なユニットIDを表すビットの組を受信できる。
【0066】
他の変形も可能である。ユニット識別フィールドを使わなくてもよい。ハードウェアとしては、どのオプコードをどの機能ユニットの型にマップするかについてテーブルを使い、ユニット識別フィールドをダイナミックに割り当てることができる。
【0067】
図8は、出力マトリクス402を更に詳細に示す。機能ユニットは実行した処理の結果を出力レジスタ806,807,808,809及び810に書込む。レジスタ806,807,808,809及び810は、書込みポートマルチプレクサ801,802,803及び804に接続される。図7に示すように、CONSTユニットの中ではオプコードと結果の導出との間に時間の経過はないので、CONSTユニットオプコードは直接マルチプレクサ801,802,803及び804に接続される。マルチプレクサ801,802,803及び804は、制御入力W1MC,W2MC,W3MC及びW4MCに基づいてそれらの出力W1,W2,W3及びW4にそれぞれにつながる入力を選択する。出力W1,W2,W3及びW4は、それぞれ32ビット幅でレジスタファイル403の書込みポートに接続される。制御入力W1MC, W2MC, W3MC及びW4MCは、レジスタファイル書込み制御ユニット(RFWC)によって供給される。
【0068】
図9Aは、レジスタファイル書込み制御ユニット(RFWC)を示す。RFWCの入力は、IIRからのユニットID(issue1.unitID、issue2.unitID、issue3.unitID)及びデスティネーションレジスタアドレス(issue1.Rdest、issue2.Rdest、issue3.Rdest)である。
RFWCは、出力として、4つのマルチプレクサ制御信号(W1MC, W2MC, W3MC及びW4MC)、レジスタファイルをアドレスするための4つの書込みアドレス(W1.wa, W2.wa, W3.wa, W4.wa)及びレジスタファイルを指向する更に4つの書込みポート書込みエネーブル信号(W1.we, W2.we, W3.we, W4.we)を生成する。
【0069】
図9Bは、RFWC/WEエンコーダーを示す。ユニットID及びオプコードを取り入れ、RFWCのための書込みエネーブル入力を生成する。エンコーダーは、ROM,PLA又は論理であってもよい。エンコーダーは、処理が次の処理、即ちCONST,ALU,MUL,FPU及びMEMのロードについての結果を持つ場合は”1”を得る。エンコーダーは、CONTROL及びMEMの格納について結果がない場合は”0”を得る。
【0070】
図10は、RFWCブロックの1つの実行例を示す。この例は、2つのサブブロック、即ちSLOTブロック1001及びLATブロック1002を含む。SLOTには4つの行と4つの列がある。4つの列は、レジスタファイルの4つの書込みポートW1,W2,W3 及びW4に対して必要である。4つの行は、機能ユニットの4つの可能なレイテンシーに対して必要である。表にレイテンシーの値を示した。機能ユニットのレイテンシーは、そのユニットの処理のスタートからその処理の結果が書込みマルチプレクサの入力点で有効になるまでの間のクロックサイクルの数である。
【0071】
【表2】
【0072】
例えばMULのような各ユニットIDについて、対応する入力書込みエネーブル信号が真の場合は、RFWCのLATブロックによってレイテンシーが見出される。MULユニットの場合はレイテンシーは2である。RFWCはそれにより見出されたレイテンシーに対応するレイテンシー行に対してエネーブルフラグをセットする。MUL機能ユニットについてはフリーのSLOTがレイテンシー行2に位置しており、そこにユニットID書込みアドレス及び書込みエネーブル情報が格納される。続く2クロックサイクルの間、この情報は1つの列に沿ってレイテンシー行0に送られる。
【0073】
各SLOT行は特定のレイテンシーのために用いられる。最上行はレイテンシー3のために使われ、最下行はレイテンシー0のために使われる。各行はクロックサイクル毎にデータを下の行へ送る。送られるデータは、ユニットID、書込みアドレス及び書込みエネーブル表示である。レイテンシー行0の出力は、RFWCブロックの出力である。
【0074】
各行は、LATサブブロック1002で生成された3つの書込みエネーブル制御信号を得る。行の最右側SLOTがこれらの制御入力を得る。若干の論理処理の後、この最右側SLOTは3つの制御処理を同一行の左側の次のSLOTブロックに送る。例えば、SLOT33は3つの書込みエネーブル信号(L1.we,L2.we,L3.we)をLATブロックから得る。SLOT33の制御出力はスロット23に送られる。SLOT33のデータ出力はSLOT32に送られる。
【0075】
各LATユニットは、ユニットID(unitid)及び書込みエネーブル信号(we)をIIRの送出スロットから得る。この例のIIRには3つのスロットがあるので、3つのLATユニットがある。LATユニットは4つの書込みエネーブル信号(we0,we1,we2,we3)を生成する。ユニットIDがCONST(レイテンシー=0)であり且つ対応するweが真の場合は、we0が真になる。ユニットIDがALU1,ALU2又はMEM(レイテンシー=1)であり且つ対応するweが真の場合は、we1が真になる。ユニットIDがMUL(レイテンシー=2)であり且つissue.weが真の場合は、we2が真になる。ユニットIDがFPU(レイテンシー=3)であり且つissue.weが真の場合は、we3が真になる。
【0076】
図11は、SLOTサブブロックの1つの実行例を示す。各SLOTはIIRから4つのデータ入力(in1,in2,in3,in4)を得て、1つのデータ出力(out)を生成する。in1,in2,in3,in4及びoutはそれぞれ9線を持ち、そのうち3線はユニットIDを送り、6線は書込みアドレス(wa)を送る。第1の入力(in1)はIIR.issue1.unitid及びIIR.issue1.Rdestである。第2の入力(in2)はIIR.issue2.Rdest及びIIR.issue2.unitidである。第3の入力(in3)はIIR.issue3.Rdest及びIIR.issue3.unitidである。第4の入力(in4)は、最上行を除いて、上の行スロットの出力に接続されている。最上行ではこの入力は全てゼロの受信に接続される。
【0077】
各SLOTは、4つの制御信号("we indicator in",i1.we,i2.we及びi3.we)を得る。信号i1.we,i2.we,及びi3.weは、行の最右側のブロックを除いて、右側の次のブロックから来る。行の最右側のブロックには、対応するLATブロックから来る。信号"we indicator in" は、最上のブロックを除いて、上のブロックから来る。最上のブロックには”0”の線が接続されている。
加えて、1つの行スロットの"we indicator in" は、上のSLOTの"we indicator out" に接続されている。最上行のSLOTは"0""we indicator in"を受信する。
【0078】
各SLOTは4つの制御信号(o1.we,o2.we,o3.we,"we indicator out")を生成する。信号o1.we,o2.we及びo3.weは、最左側のスロットを除いて、左側の次のブロックに供給される。最左側のスロットはどこにも接続されていない。信号"we indicator out"は、最下側のスロットを除いて、下の次のブロックに供給される。最下側のスロットからは、書込みポートエネーブル信号(W1.we,W2.we,W3.we,W4.we)としてレジスタファイルに供給される。最下行のout.unitid信号は、図8のマルチプレクサ801,802,803及び804に供給されるW1MC,W2MC,W3MC及びW4MC信号である。最下行のout.wa信号は、図6Bのレジスタファイル403に供給されるレジスタファイル書込みアドレス(W1.wa,W2.wa,W3.wa,W4.wa)である。
【0079】
各SLOTは4つのサブブロックを持つ。4:1マルチプレクサMUXは、we1,we2,we3及びweの制御の下でin1,in2,in3及びin4の1つを選択する。優先的エンコーダーPRENは、入力we,i1.we,i2.we及びi3.weからwe1,we2,we3,we, o1.we,o2.we及びo3.weを生成する。4入力論理ORゲートは、入力としてwe1,we2,we3及びweを有する。MUXはレジスタREG1に出力し、ORはレジスタREG2に出力する。レジスタの出力は、ブロックの出力になる。最下行のスロットは、格納する必要がないためこれらのレジスタを持たない。
【0080】
PRENユニットにより、全てのレイテンシーに対する書込みエネーブルの全ての可能な組み合わせについて、必要なレイテンシー行でフリースロットが確実に見出される。PRENについての真値テーブルを次に示す。
【0081】
【表3】
【0082】
図11のMUXは、"we indicator in" 信号が活性化されている場合に、in4をoutに接続する。we3が活性化されている場合にin3を、we2が活性化されている場合にin2を、we1が活性化されている場合にin1を、それぞれoutに接続する。PRENユニットは、或る時刻にはその中の1つだけを活性化("1"に)する。
【0083】
図9−11に示したRFWC書込み制御ユニットハードウェアは、プログラマー又はコンパイラが、4つを超える書込みの同時生起を防ぐことを必要としている。例えば、次の処理シーケンスは禁止される。
time i :FPU ...
i+1:MUL ...
i+2:ALU1,ALU2 ...
i+3:CO ...
【0084】
この例示シーケンスは、5つのレジスタファイルへの書込みバスを必要とする。即ち、サイクルi+3で完結するCO処理の結果を書込むために1つ、i+2で処理がスタートしてi+3で完結するALU1処理及びALU2処理のために2つ、MUL処理のために1つ、及び、FPU処理のために1つである。
【0085】
処理のある種の稀なシーケンスの禁止がシステムの効率とハードウェアのコスト低減に明らかに影響している。この特別な例においては、4つの書込みポートを持つレジスタファイルが、ずっと高価な5つの書込みポートを持つレジスタファイルに代わって充分効果があることが明確になった。
【図面の簡単な説明】
【図1】 従来のVLIW型CPUを示す図である。
【図2】 従来のVLIW命令語のフォーマットを示す図である。
【図3】 本発明のVLIW型CPUを示す図である。
【図4】 本発明のVLIW命令語のフォーマットを示す図である。
【図5】 スイッチングマトリクス401の細部を示す図である。
【図6A】 レジスタファイルへの入力及びそれからの出力を示す図である。
【図6B】 スイッチ制御への入力及びそれからの出力を示す図である。
【図7】 オプコード送信論理を示す図である。
【図8】 出力マトリクス402の細部を示す図である。
【図9A】 レジスタファイルの書込制御ユニットを示す図である。
【図9B】 RFWC/WEエンコーダーを示す図である。
【図10】 レジスタファイルの書込制御ユニットの細部を示す図である。
【図11】 図10のSLOTブロックの細部を示す図である。
【符号の説明】
101 レジスタファイル
102 メモリー
201−207 送出スロット
401、402 スイッチマトリクス
403 レジスタファイル
410 新しいVLIW命令のフォーマット
420−470 送出スロットの内容のフォーマット
801−804 マルチプレクサ
806−810 出力レジスタ
902 入力スイッチ制御
1001 SLOTブロック
1002 LATブロック
Claims (12)
- a)相互に並列に処理を実行するための、3以上である第1の数の機能ユニットと、
b)2以上で第1の数より小さい第2の数の命令を保持するため、及び、命令と機能ユニットとの対応を特定するためのコードを保持するための命令レジスタと、
c)適切な1つの機能ユニットに命令レジスタで並列に命令を実行させるための実行制御手段とを具えたプロセッサであって、そのプロセッサが、命令レジスタの命令に関するオペランドを格納するためのマルチポートレジスタファイルを具え、該マルチポートレジスタファイルが、並列にオペランドにアクセスするための第3の数の読出しポートを有するプロセッサにおいて、
該第3の数は、第2の数の機能ユニットからなる機能ユニットのサブセットのいずれかによってレジスタファイルから要求されるオペランドの最大数以上であり、該第3の数は、機能ユニット全体によって要求されるオペランドの総数より小さい数であり、前記プロセッサが、
d)読出しポートに並列にアクセスして命令を実行することを指示された機能ユニットの読出しアクセスを選択的に行わせるための読出しアクセス供与手段を具えることを特徴とするプロセッサ。 - 該読出しポートが読出しポートの群を構成すること、少なくとも1つの特定の群が少なくとも2つの読出しポートを有すること、該読出しアクセス供与手段が群毎に機能ユニットに与えられた読出しポートを選択するように構成されること、少なくとも1つの機能ユニットがそれぞれのオペランドを同時に受信するための少なくとも2つの入力部を有すること、及び、特定の群が機能ユニットの群として選択される度毎に、該入力部が該特定の群からのそれぞれ所定の読出しポートに接続されることを特徴とする請求項1に記載のプロセッサ。
- 命令レジスタが命令を送出するための各送出スロットについて第2の数に構成されること、各送出スロットが読出しポートの少なくとも1つの各群に対応すること、及び、特定の機能ユニットが特定の送出スロットからの命令を実行する度毎に該特定の送出スロットに対応する群からの読出しポートにアクセスするように構成されることを特徴とする請求項1又は2に記載のプロセッサ。
- 各特定の群が第4の数の所定のポートを含むこと、及び、該第4の数が機能ユニットのいずれか1つによって要求されるオペランドの最大数に等しいことを特徴とする請求項2又は3に記載のプロセッサ。
- 各特定の送出スロットが、該特定の送出スロットに対応する群の読出しポートのそれぞれのアドレス入力部に接続された同じ所定数のアドレスフィールドを含み、該特定の送出スロットからの命令を実行する機能ユニットが、アドレスされたオペランドを要求するか否かに拘わらず、該読出しポートでアドレスされたオペランドにアクセスするように構成されたことを特徴とする請求項3又は4に記載のプロセッサ。
- 少なくとも1つの機能ユニットが、1つの命令を実行することを指示された場合、更に、該1つの命令を送出する送出スロットのアドレスフィールドから情報を受信し、該少なくとも1つの機能ユニットが実行の間該情報をオペランドとして使用することを特徴とする請求項5に記載のプロセッサ。
- 該マルチポートレジスタファイルが少なくとも1つの書込みポートを有すること、及び、プロセッサが、並列に命令を実行し結果を生成することを指示された機能ユニットに対する書込みポートに選択的にアクセスするための書込みアクセス供与手段を有することを特徴とする請求項1乃至6のいずれか1項に記載のプロセッサ。
- 命令レジスタが命令を送出するための各送出スロットについて第2の数に構成されること、各送出スロットが同じそれぞれの数の結果アドレスフィールドを含むこと、及び、書込みアクセス供与手段が該アドレスフィールドの内容を書込みポートのアドレス入力部にルーチングするように構成されることを特徴とする請求項7に記載のプロセッサ。
- 該書込みアクセス供与手段が、該機能ユニットが命令を実行することを指示された後のレイテンシー期間に、該結果アドレスフィールドの内容に基づいて、機能ユニットの1つの出力部を書込みポートに接続するように構成されることを特徴とする請求項8に記載のプロセッサ。
- レジスタファイルが少なくとも2つの書込みポートを持ち、書込み選択手段が予備的割当て手段を有し、該予備的割当て手段がその予備的割当ての後1クロックサイクルの間特定の書込みポートを機能ユニットの1つに予備的に割当て、そのクロックサイクルの中で該機能ユニットの1つの実行の結果が有効になり、更に、該予備的割当て手段が機能ユニットの1つの出力を該特定の書込みポートに接続し、該結果アドレスフィールドの内容を該クロックサイクルの間該特定の書込みポートに送るように構成されることを特徴とする請求項9に記載のプロセッサ。
- 該予備的割当て手段が、該クロックサイクルの間、特定の書込みポートが以前に該機能ユニットの1つに割当てられていないとの制約の下に書込みポートから該特定の書込みポートを選択するように構成されることを特徴とする請求項10に記載のプロセッサ。
- 該予備的割当て手段がレジスタのマトリクスを含むことを特徴とする請求項11に記載のプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US99808092A | 1992-12-29 | 1992-12-29 | |
US07/998080 | 1992-12-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06230969A JPH06230969A (ja) | 1994-08-19 |
JP3916680B2 true JP3916680B2 (ja) | 2007-05-16 |
Family
ID=25544720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33651093A Expired - Lifetime JP3916680B2 (ja) | 1992-12-29 | 1993-12-28 | プロセッサ |
Country Status (5)
Country | Link |
---|---|
US (1) | US6044451A (ja) |
EP (1) | EP0605927B1 (ja) |
JP (1) | JP3916680B2 (ja) |
KR (1) | KR100290325B1 (ja) |
DE (1) | DE69325785T2 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370623B1 (en) * | 1988-12-28 | 2002-04-09 | Philips Electronics North America Corporation | Multiport register file to accommodate data of differing lengths |
EP0739517B1 (en) * | 1994-01-10 | 2000-08-16 | The Dow Chemical Company | A massively miltiplexed superscalar harvard architecture computer |
US5761475A (en) * | 1994-12-15 | 1998-06-02 | Sun Microsystems, Inc. | Computer processor having a register file with reduced read and/or write port bandwidth |
US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
US5931939A (en) * | 1996-09-25 | 1999-08-03 | Philips Electronics North America Corporation | Read crossbar elimination in a VLIW processor |
US6105051A (en) * | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US5974537A (en) * | 1997-12-29 | 1999-10-26 | Philips Electronics North America Corporation | Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
JP2000305781A (ja) * | 1999-04-21 | 2000-11-02 | Mitsubishi Electric Corp | Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体 |
US6351802B1 (en) * | 1999-12-03 | 2002-02-26 | Intel Corporation | Method and apparatus for constructing a pre-scheduled instruction cache |
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
JP4542722B2 (ja) | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
US7266703B2 (en) | 2001-06-13 | 2007-09-04 | Itt Manufacturing Enterprises, Inc. | Single-pass cryptographic processor and method |
US7360076B2 (en) * | 2001-06-13 | 2008-04-15 | Itt Manufacturing Enterprises, Inc. | Security association data cache and structure |
US7249255B2 (en) * | 2001-06-13 | 2007-07-24 | Corrent Corporation | Apparatus and method for a hash processing system using multiple hash storage areas |
US7213148B2 (en) * | 2001-06-13 | 2007-05-01 | Corrent Corporation | Apparatus and method for a hash processing system using integrated message digest and secure hash architectures |
US7574583B2 (en) * | 2002-09-24 | 2009-08-11 | Silicon Hive B.V. | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor |
JP4283131B2 (ja) | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
GB2420884B (en) * | 2004-12-03 | 2009-04-15 | Picochip Designs Ltd | Processor architecture |
US8713286B2 (en) | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
GB2454865B (en) * | 2007-11-05 | 2012-06-13 | Picochip Designs Ltd | Power control |
GB2466661B (en) * | 2009-01-05 | 2014-11-26 | Intel Corp | Rake receiver |
GB2470037B (en) | 2009-05-07 | 2013-07-10 | Picochip Designs Ltd | Methods and devices for reducing interference in an uplink |
GB2470891B (en) | 2009-06-05 | 2013-11-27 | Picochip Designs Ltd | A method and device in a communication network |
GB2470771B (en) | 2009-06-05 | 2012-07-18 | Picochip Designs Ltd | A method and device in a communication network |
GB2474071B (en) | 2009-10-05 | 2013-08-07 | Picochip Designs Ltd | Femtocell base station |
GB2482869B (en) | 2010-08-16 | 2013-11-06 | Picochip Designs Ltd | Femtocell access control |
JP5625903B2 (ja) * | 2010-12-29 | 2014-11-19 | 富士通株式会社 | 演算処理装置および演算処理方法 |
GB2489716B (en) | 2011-04-05 | 2015-06-24 | Intel Corp | Multimode base system |
GB2489919B (en) | 2011-04-05 | 2018-02-14 | Intel Corp | Filter |
GB2491098B (en) | 2011-05-16 | 2015-05-20 | Intel Corp | Accessing a base station |
KR102251241B1 (ko) * | 2013-11-29 | 2021-05-12 | 삼성전자주식회사 | 재구성 가능 프로세서의 레지스터를 제어하는 방법 및 장치와 재구성 가능 프로세서의 레지스터를 제어하는 명령어를 생성하는 방법 및 장치 |
JP6237241B2 (ja) * | 2014-01-07 | 2017-11-29 | 富士通株式会社 | 処理装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
NL8800071A (nl) * | 1988-01-13 | 1989-08-01 | Philips Nv | Dataprocessorsysteem en videoprocessorsysteem, voorzien van een dergelijk dataprocessorsysteem. |
JP2553200B2 (ja) * | 1989-08-19 | 1996-11-13 | 富士通株式会社 | 情報処理装置 |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
EP0479390B1 (en) * | 1990-10-05 | 1999-01-07 | Koninklijke Philips Electronics N.V. | Processing device including a memory circuit and a group of functional units |
US5161226A (en) * | 1991-05-10 | 1992-11-03 | Jmi Software Consultants Inc. | Microprocessor inverse processor state usage |
US5530866A (en) * | 1991-07-30 | 1996-06-25 | Tera Computer Company | Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring |
US5628013A (en) * | 1992-09-30 | 1997-05-06 | Apple Computer, Inc. | Apparatus and method for allocating processing time in a frame-based computer system |
US5619408A (en) * | 1995-02-10 | 1997-04-08 | International Business Machines Corporation | Method and system for recoding noneffective instructions within a data processing system |
-
1993
- 1993-12-24 EP EP93203688A patent/EP0605927B1/en not_active Expired - Lifetime
- 1993-12-24 DE DE69325785T patent/DE69325785T2/de not_active Expired - Lifetime
- 1993-12-28 JP JP33651093A patent/JP3916680B2/ja not_active Expired - Lifetime
- 1993-12-28 KR KR1019930030204A patent/KR100290325B1/ko not_active IP Right Cessation
-
1998
- 1998-06-10 US US09/090,038 patent/US6044451A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06230969A (ja) | 1994-08-19 |
EP0605927B1 (en) | 1999-07-28 |
KR940015852A (ko) | 1994-07-21 |
EP0605927A1 (en) | 1994-07-13 |
DE69325785T2 (de) | 2000-02-17 |
DE69325785D1 (de) | 1999-09-02 |
US6044451A (en) | 2000-03-28 |
KR100290325B1 (ko) | 2001-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3916680B2 (ja) | プロセッサ | |
US6122722A (en) | VLIW processor with less instruction issue slots than functional units | |
US5925124A (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
KR100638703B1 (ko) | 데이터 프로세싱 시스템용 셀룰러 엔진 | |
US7366874B2 (en) | Apparatus and method for dispatching very long instruction word having variable length | |
KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
US20050055537A1 (en) | Multiprocessor computer architecture incorporating a pluralityof memory algorithm processors in the memory subsystem | |
US7028286B2 (en) | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture | |
US20060265555A1 (en) | Methods and apparatus for sharing processor resources | |
KR20010042690A (ko) | 구성가능 기능 유닛을 가진 데이터 프로세서 및 이러한데이터 프로세서를 사용한 방법 | |
US20090063824A1 (en) | Compound instructions in a multi-threaded processor | |
JPH04299436A (ja) | メモリ回路および機能ユニットのグループを備えた処理装置 | |
US7383419B2 (en) | Address generation unit for a processor | |
US5742783A (en) | System for grouping instructions for multiple issue using plural decoders having forward and backward propagation of decoding information | |
US7617494B2 (en) | Process for running programs with selectable instruction length processors and corresponding processor system | |
EP1623318B1 (en) | Processing system with instruction- and thread-level parallelism | |
EP0363174A2 (en) | Branch on bit processing | |
US7024540B2 (en) | Methods and apparatus for establishing port priority functions in a VLIW processor | |
US5862399A (en) | Write control unit | |
JP3737573B2 (ja) | Vliwプロセッサ | |
JP3341662B2 (ja) | 情報処理装置及び多ポートレジスタファイル | |
US11775310B2 (en) | Data processing system having distrubuted registers | |
US6704855B1 (en) | Method and apparatus for reducing encoding needs and ports to shared resources in a processor | |
EP0862111B1 (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
US20050114626A1 (en) | Very long instruction word architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040323 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040621 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040727 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070207 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140216 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |