JP4169931B2 - 複数の回路ブロックにコマンドを配信する方法と装置 - Google Patents
複数の回路ブロックにコマンドを配信する方法と装置 Download PDFInfo
- Publication number
- JP4169931B2 JP4169931B2 JP2000552565A JP2000552565A JP4169931B2 JP 4169931 B2 JP4169931 B2 JP 4169931B2 JP 2000552565 A JP2000552565 A JP 2000552565A JP 2000552565 A JP2000552565 A JP 2000552565A JP 4169931 B2 JP4169931 B2 JP 4169931B2
- Authority
- JP
- Japan
- Prior art keywords
- command
- commands
- word
- memory
- group
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 6
- 230000009471 action Effects 0.000 claims description 12
- 230000000875 corresponding effect Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- 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
- G06F9/3842—Speculative 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Read Only Memory (AREA)
Description
技術的背景
本発明はデータ処理に関し、より具体的には,チップ上のメモリに記憶されたコマンドに関する。
半導体技術の発展により,単一のチップ、チップセット又はボードに複雑な回路ブロックを集積することが可能になった。単一のチップにI/Oセル、データパスオペレータ、記憶要素や制御ユニットを搭載することも可能である。回路ブロックが異なれば機能(又は動作)が異なる。適切な回路ブロックが適切な時刻に適切に作動することを確保することは制御構造の役目である。
【0002】
回路ブロックの一例は加算器である。加算器は、数を数える操作、フィルタあるいは積算操作のために使用される。レジスタは入力と出力が同時刻に到着するように、しばしば加算器の入力部と出力部に使用される。回路ブロックの他の例は積算機である。積算機は相関、重畳、フィルタあるいは周波数演算等のデジタル信号処理に使用される。
【0003】
回路ブロックの他の例としてはパリティ発生器、コンパレータ、ゼロ/ワン検出器、ブーリーン演算子、算術論理ユニット(ALUs)およびシフタがある。パリティ発生器は入力されたワードに含まれる1の数が偶数か奇数かを決定するために使用される。コンパレータは2値で表された2つの値の大きさを比較するのに使用される。ゼロ/ワン検出器は、その数値が全てゼロ又は全て1であるか否かを決定するために使用される。2値カウンタは2値であらわされた処理を所定回繰り返すために使用される。シフタは、算術シフト、論理シフト及び回転シフトにとって重要である。
【0004】
記憶素子は、特に、回路ブロックへの入力コマンド及び回路ブロックからの出力コマンドを記憶するために使用される。記憶素子は、通常3つのカテゴリに分類される:ランダムアクセスメモリ、シリアルアクセスメモリ、及びコンテントアクセスメモリである。ランダムアクセスメモリは、データの物理的な位置とアクセス時間との間に関係がない記憶媒体と定義される。一般的にランダムアクセスメモリと称するものの中には、2つのカテゴリが含まれる:読み出し専用メモリ(ROM)と書き込み/読み出しメモリである。RAMという用語は、通常、書き込み/読み出しメモリをさすものとして使用され、RAMは回路ブロックからの出力を記憶するために使用される。
【0005】
「データ処理」という表現は、回路ブロックの間で、特定の機能を達成するためにデータを移動させることを意味する。このデータの移動は、クロックサイクルのたびに新たなコマンドを発生させる制御構造によって統括されている。システムによっては、同時に処理されるコマンドは1つだけであるSISD(単一指示ストリーム単一データストリーム)制御ユニットを使用している。コマンドが1つだけであれば、SISDシステムの効率は通常、コマンドの長さを長くするか、クロック周波数を高くすることによって改善される。
【0006】
スーパースカラーシステムでは、制御ユニットは同時に2つ以上のコマンドを処理することによって同じクロックサイクル内で2つ以上の回路ブロックを(並列に)動かすことが可能である。N個の回路ブロックがあれば、理論的にはスーパースカラーシステムは同一クロック内に、N個の回路ブロックを動かすことができる。複数のコマンドを使うので、スーパースカラー制御ユニットは一般にSISD制御ユニットもよりも効率が高い。
【0007】
「パイプライン」という用語は、オンチップ記憶素子からコマンドを読み出し(フェッチング)、種々の回路ブロックを動かすときにコマンドをデコードすることを意味する。制御ユニットは、パイプラインステージの間でコードされたコマンドをコマンドパスに保持することができる。コマンドパスは、コマンドのフェッチ、コマンドのデコード、レジスタの読み取り、実行及び/または書き込みからなる異なるステージに分化することができる。制御ユニットは、パスアラウンドを許容し、処理が適切な順序で行われるように比較を行うことができる。
【0008】
ほとんどのシステムでは、超長コマンドワード(VLIW)制御装置を使用している。VLIW制御装置では、制御プログラムは、それぞれのワードが特定のクロックサイクルに対応するようにオンチップ記憶素子に記憶されている。それぞれのVLIWはそれぞれの回路ブロック用に、たとえそれが当該VLIWでは動作していない回路ブロックであっても、少なくとも1ビットを有している。VLIW制御装置の問題は、回路ブロックの数が多くなると、制御プログラムの長さと大きさが大きくなることである。特に複雑なシステムでは、制御プログラムを書き込むためのチップスペースが足りなくなる。個々の回路ブロックを動かすためにのコマンドを記憶するために、チップの大部分を使用せざるを得ないことになる。
【0009】
クロックサイクルごとに見ると、ほとんどのシステムでは、回路ブロックのうちで動いているのはほんの小さなサブセットだけである。換言すれば、制御ワードが長いほど、貴重なチップエリアが無駄に使用されることになる。アプリケーションによっては、コマンド記憶素子を1つのチップに搭載することはもはや不可能である。複数の回路ブロックを動かすことができ、貴重なチップエリアを無駄に使用することなく並行してコマンドを作成することができる制御構造及びコマンド記憶素子が必要とされている。
【0010】
発明の要旨
従来の制御ユニットが有していた上記の課題、問題および限界は、コマンドを統括して、コマンド記憶素子に記憶されるべき情報の量を少なくすることによって解決することができる。前記制御装置は、指示を解釈して統括に際して取り除かれた順序を回復させる。
【0011】
本発明の1つの側面によれば、コマンドはコマンド記憶素子にメモリワードとして隣り合わせに記憶される。それぞれのコマンドは、ラベルフィールドとアクションフィールドを有する。制御ユニットはメモリワードとして集合的に参照される一群のコマンドを受け取る。制御ユニットはコマンドをデコードして、ラベルフィールドの情報に基づいてアクションフィールドを並べ替える。制御ユニットは、制御ワードをレジスタに記憶して、レジスタからの制御ワードを複数の回路ブロックに配布する。
【0012】
コマンドがコマンド記憶素子に圧縮されて記憶されているときは、並行して実施しないコマンドは同じメモリ内に記憶されていても良い。並行して実施されるコマンドは、異なるメモリワードに記憶することができる。制御ワード内のコマンドの順序は、コマンドが前のコマンドと並行して実行されるかどうかというようなラベルフィールドにある情報によって決定される。
【0013】
本発明の別の側面によれば、時間の制約を受ける制御ワードまたはジャンプコマンドの対象である制御ワードはメモリワードの境界部に配列させられる。もし、一群のコマンドが1つのメモリワードから出発して次のメモリワードで終了するなら、制御ユニットは両方のメモリワードを読み込まなければならない。もし、一群のコマンドがジャンプコマンドの対象であれば、一群のコマンドが完全に利用可能になるには2クロックサイクルが必要である。時間の制約を受けるアプリケーションでは、そのコマンドグループが利用できるようになるために2クロックサイクル待たなければならないことは好ましいことではない。しかし、もし一群のコマンドがメモリワードの境界に配列されていたなら、制御ユニットはメモリワードを1つだけ読めば良く、その制御ワードは直ぐに利用可能になる。特定の実施態様では、前のメモリワードに特別なコード又はイリーガルコマンドが挿入されて、一群のコマンドは次のメモリワードの冒頭部分から開始する。
【0014】
本発明の他の側面によれば、コマンド記憶素子の大きさをさらに削減するために、コマンドは一群のコマンドの中に置かれることになる。例えば、条件付コマンドは条件を評価するために特別な回路ブロックを必要とするコマンドである。条件が満たされれば他のコマンドが実施される。本発明の実施例では、一群のコマンドのうちの最初のものが条件付コマンドであれば、当該一群のコマンドに属する全てのコマンドにその条件が課される。もし条件付コマンドがそのグループのコマンドの中で最初のものではなければ、条件はそのコマンドの直前のコマンドにだけ適用される。つまり、一群のコマンドの中でのコマンドの位置が追加の情報をもたらす。
【0015】
本発明の利点は、コマンド記憶素子が休止状態の回路ブロックのコマンドのために貴重なチップエリアを占領することがない点である。コマンド記憶素子の大きさはチップエリアの使用領域を最も少なくするよう最小限にされている。
本発明のその他の利点は、特定のシステムの平衡性の程度(独立パス又はパイプラインの数)とは無関係に同じコントローラと同じコマンドセットを使用できることである。
本発明のその他の重要な利点は、大部分の回路ブロックを再利用するようチップをわずかに変更するだけで同じ制御フィールドが使用可能な点である。回路ブロックの再利用は、新たなシステムを製造するための時間とコストを低減するために重要である。
【0016】
本発明の他の重要な利点は、時間の制約を受けるアプリケーションの場合に、一群のコマンドをメモリワード境界周辺に配列して単一のクロックサイクルでの読み出しを可能にできる点である。
【0017】
本発明に関する上述の目的、特徴及び利点は、図を参照して以下に記載する本発明の詳細な説明によって一層明瞭になるはずである。
【0018】
発明の詳細な説明
以下の本発明の詳細な説明では、発明の完全な理解を可能にするために、詳細について具体的に記載する。しかし、下記の具体的な記載とは異なる形で本発明を実施できることは当業者にとって明らかである。また、本発明に関する詳細な説明が希薄化してしまわないように、周知の方法や回路についての説明は割愛した。
【0019】
図1は制御ユニット20を有するシステムのブロック図である。制御ユニット20は、デコーダ22とシーケンサ24を有する。コマンド記憶素子10は、ビットフィールドにコマンドを記憶するオンチップメモリである。コマンドのうちのいくつかは、ジャンプあるいはコマンド呼び出しのような制御伝達コマンドであり、あるいは数式又は論理演算のようなALUクラスのコマンドである。コマンドはそれぞれ、ラベルフィールドとアクションフィールドからなる少なくとも2つの部分を有する。
【0020】
制御ユニット20は、コマンド記憶素子10に対してコマンド42を取り込むようにアドレス41を送る。制御ユニット20は、コマンド記憶素子10から集合的にメモリワードとして参照される一群のコマンドを受け取る。制御ユニット20は、デコーダ22を使ってメモリをデコードする。シーケンサ24が、ラベルフィールドの情報に従ってアクションフィールドを制御ワードのコマンドとして並べ替える。シーケンサ24は、制御ワードをパイプラインレジスタ(図示しない)に記憶させる。コマンドの順序はコマンド42、チップ60の他の部分の状況61、および回路ブロック51から59の状況によって定まる。
【0021】
制御ワードは並列(または、1つのクロックサイクルで)実行される一連のコマンドである。デコードされて制御ワードを構成する複数のコマンドはコマンド記憶素子10の内部に隣接して、メモリワードの一部として記憶される。コマンド記憶素子10は、不要なビットフィールドを除去し同一メモリワードで並列処理されるコマンドと並列処理されないコマンドとを統合することによってサイズを圧縮されている。デコードされて制御ワードを形成する一群のコマンドは、1つのメモリワードで始まって他のメモリワードで終了するものであっても良い。コマンドはコマンド記憶素子10の中で圧縮されているので、メモリワード内のビット位置によってコマンドを識別することは不可能である。その代わり、シーケンサ24は、それぞれのコマンドのラベルフィールドの情報を用いて、デコードされたコマンドを順序付け、独立させる際に失われた順序を回復させる。
【0022】
制御ユニット20が、コマンド記憶素子10から一連のコマンドを受け取ると、制御ユニット20は、対応するアクションフィールドの長さを認識するためにラベルフィールドを用いることができる。例えば、それぞれのラベルフィールドは、当該コマンドが前のコマンドと並列処理されるべきか、制御ユニット20がこの情報に基づいて制御ワードを形成する一群のコマンドの開始と終了位置を識別することができるか否かを表示する。制御ユニット20は、ラベルフィールド、アクションフィールド、又は一群のコマンドの中における当該コマンドの位置情報を、対応するアクションフィールドを実行する回路ブロックを決定するために使用することができる。一群のコマンドが特定の回路ブロックを対象としたコマンドを有していなければ、制御ユニット20は、回路ブロックがその時点では動いていないことを理解することができる。回路ブロックが動いていなければ、そのブロックを対象としたコマンドを含む制御ワードが受け取られるまでは当該ブロックは休止させる。
【0023】
制御ユニット20は、クロック30から各クロックサイクル毎に制御バス43に制御ワードを送り出す。制御ユニット20は、クロック30以降の各クロックサイクルに全制御ワードが利用できるように十分なレートでメモリ10から予めコマンド42を読み出す。制御ワードは回路ブロック51、52、53と59に送られる。制御ワードは回路ブロック51、52、53と59に対して、システムデータバス44にデータを送り出すかシステムバスからデータを受け取るように指示する。制御ユニット20は、複数のシーケンスレジスタ及び/または複数のデータバスを有していてもよい。
【0024】
制御ユニット20は、動いている回路ブロックに対してコマンドを含む制御ワードを送り出す。制御ワードを形成する一群のコマンドが特定の回路ブロックに対するコマンドを含んでいなければ、制御ユニット20はその時当該回路ブロックが休止状態であることを理解する。回路ブロックが動いていなければ、次に当該回路ブロックに対するコマンドを含む制御ワードが受け取られるまで休止状態のままである。もし、制御ユニット20が制御ワードを構成する一群のコマンドをデコードし、当該一群のコマンドが回路ブロック51と52に対するコマンドを含んでいるが、回路ブロック53と59に対するコマンドを含んでいなければ、制御ユニット20は回路ブロック51と52に対する制御ワードを送り出す。
【0025】
図2は、コマンド記憶素子の中でコマンドがメモリワードとして記憶される様子を示した模式図である。図2に示されているように、コマンド記憶素子10は、メモリワード11,12,13,14,15,・・・19を有している。コマンド71,72,・・・85は、デコードされた後に配列されて制御ワードを構成する。アプリケーションによっては、制御ワードの最大長はデータ及び制御バスの数のようなハードウエアの制限を受ける。制御ワードの最大長は、制御が単一のクロックサイクルでコマンド記憶素子から読み出すビット数による制約も受ける。
【0026】
例示した実施態様においては、制御ワードは8ビットや16ビットの基本長の倍数である。例えば、図2では、1つのクロックサイクルに読み出されるデータビットの最大数は64ビットである。メモリワードの長さは64ビットで、コマンドは16ビットか32ビットのいずれかである。デコードされて制御ワードを構成する一群のコマンドは、16、32、48又は64ビットの長さをとることができる、つまり、コマンド長の1、2、3または4倍長である。制御ワードは1つのメモリワードから始まって次のメモリワードで終了することも可能である。例えば、コマンド71が最初の制御ワードであれば、コマンド72、73、74及び75が次の制御ワードを構成するものであっても良い。
【0027】
メモリワード11は、コマンド71、72、73及び74によって構成される。コマンド71、72、73及び74は制御ワードを構成することができる。コマンド71、72、73と74がデコードされて1つの制御ワードを構成するなら、コマンド71、72、73及び74は同じくロックサイクル内で(並列に)実行される。各コマンドは少なくとも2つの部分を有する:ラベルフィールドとアクションフィールドである。例示した実施態様では、ラベルフィールドは4から7ビットの長さを有する。ラベルフィールドはアクションフィールドの対象を特定する。もし、コマンド71が回路ブロック51に対するものであれば、コマンド71のラベルフィールドは対象回路ブロックとして、回路ブロック51を指定する。メモリワード11が特定の回路ブロックに対するコマンドを有していなければ、制御ユニット20は当該回路ブロックがその時休止していることを理解する。コマンドのいくつかは制御ユニット20に対するものである。もしコマンドが制御ユニット20に対するものであれば、制御バス43に対してコマンドを送り出す必要はない。
【0028】
制御ワードの長さは、ラベルフィールド内の情報によって決定される。ラベルフィールドは、従来はもっと長い制御ワードのビット位置によって与えられていた情報を提供することができる。さらに、処理対象となる回路ブロックを特定することに加えて、ラベルフィールドは、当該コマンドを直前のコマンドと並列に実行すべきか否かを指示する。2つのコマンドが並列処理される場合は、これらは同じ制御ワードに含まれる。コマンドのデコードと順序付けは制御ユニット20によって行われる。例えば、コマンド71、72、73及び74が1つの制御ワードを構成するものであれば、コマンド72、72及び74のラベルフィールドは、これらのコマンドが直前のコマンドと並列処理されるべきであることを示す。しかし、もしコマンド74がその制御ワードの一部でなければ、コマンド74のラベルフィールドは直前のコマンド73と並列処理すべきことを示していない。
【0029】
制御ワードは数種類のコマンドのうちの任意の1つであってもよい。コマンドは通常4つの基本的な動作のうちの1つである。移動コマンドは回路ブロック間のデータの移動を制御する。処理コマンドは、回路ブロックによって行われる処理を制御する。プログラムフローコマンドは、コマンドの順序を制御する。条件コマンドは条件を評価する。コマンドはまた、場合によっては異なる数種類のコマンドの組み合わせである。
【0030】
本発明の例示した実施態様では、コマンドは一群のコマンドの中にあってデコードされて制御ワードを構成し、情報を追加すると共にコマンド記憶素子の大きさをさらに小さくする。例えば、条件コマンドの結果である動作は一群のコマンドの中の条件コマンドの位置によるとすることもできる。例えば、条件コマンドが一群のコマンド中の最初のものであれば、条件はそれに続く全てのコマンドに適用される。つまり、仮に条件が満たされれば、それに続く全てのコマンドが実行される。もし条件が満たされなければ、何れのコマンドも実行されない。一方、条件コマンドが一群のコマンドのうちの最初のコマンドでなければ、条件は直前のコマンドにだけ適用される。
【0031】
図3は、制御ユニットによるコマンドの順序付けを模式的に表す図である。制御ユニットの中のコマンドの順序は、コマンドそのものと回路ブロックとチップの他の部分からの条件に依存する。例示した実施態様では、3つのパイプライン段階が存在する:コマンドフェッチ段階、コマンドデコード段階、実行/書き込み段階である。フェッチ段階では、メモリワードはコマンド記憶素子から読み出され、メモリワードを構成するコマンドがパイプラインレジスタに記憶される。デコード段階では、制御ユニットは各ラベルフィールドを読み、それぞれのラベルフィールドの情報に基づいて対応するアクションフィールドの位置を特定する。アクションフィールドはコマンドがコマンド記憶素子において圧縮されたときに失われた位置情報を回復できるように、制御ワードの中に位置付けられる。実行/書き込み段階では、制御ワードは回路ブロックに与えられる。回路ブロックはデータの移動等の処理を行う。結果として得られるデータは対象となるレジスタ又はメモリに記憶される。
【0032】
図3に示した例では、制御ユニットは(図2に示した)クロックサイクル0でメモリワード11を取り込む。上述のように、制御ユニットはコマンド記憶素子からメモリワードを読み出し、これを各クロックサイクルで完全な制御ワードが得られるレートでパイプラインレジスタに記憶させる。クロックサイクル1の間、制御ユニットはメモリワード12を読み出し(図2参照)、メモリワードをデコードする。クロックサイクル2においては、制御ユニットはメモリワード13を読み出し(図2参照)、メモリワード12をデコードし、制御ワードの全長が使用できる状態なら、回路ブロックに送る。クロックサイクル3では、制御ユニットはメモリワード14を読み出し(図2参照)、メモリワード13をデコードし、次の制御ワードを実行する。クロックサイクル4では、制御ユニットはメモリワード15を読み出し(図2参照)、メモリワード14をデコードし、次の制御ワードを実行する。場合によっては、制御ワードは1つのメモリワードから開始して次のメモリワードで終了することもできることに留意する必要がある。図に示した例では、コマンド81、82、83がデコードされて制御ワードを形成する。従って、コマンド81がクロック3でデコードされるが、クロック5までは実行されることはない。並列処理されるべきコマンドは全てのコマンドが実行可能になるまでは実行されないのが普通である。
【0033】
一般には、同一の命令によって、コマンドはデコードされて制御ワードを構成し、同じメモリ10に記憶される。しかし、メモリ10は、次の制御ワードがメモリの別の場所から開始することを指示するコマンドを含むこともできる。例えば、デコードされて1つの制御ワードを構成する一群のコマンドのうちの1つが、ジャンプコマンドの対象になっている場合もある。コマンドの1つがジャンプコマンドの対象であれば、この一群のコマンドはメモリワードの境界部に配列されなければならない。
【0034】
図4は、コマンドが、次の制御ワードがメモリの別の場所から開始し、一群のコマンドがメモリワード境界には配列されていないこと指示する場合の、制御ユニットのコマンドシーケンスを模式的に示すものである。図に示した例の場合は、コマンド81はコマンド81、82と83で構成される制御ワードの最初のコマンドである。図2に示した図では、コマンド81はメモリワード13内に記憶され、コマンド82と83とはメモリワード14内に記憶されている。
【0035】
クロックサイクル0において、ジャンプコマンドが実行されて、かつ、コマンド81がジャンプコマンドの対象であるとすれば、制御ユニットから読み出される次のメモリワードはメモリワード13である。しかし、コマンド81、82と83の全てがメモリワード13に記憶されているわけではない。つまり、制御ワードの全てが利用可能になるには2クロックを要することを意味する。クロックサイクル2では、制御ユニットはメモリワード14を読み出す。制御ワードを構成するために必要なコマンドを読み出すのに2クロックを要するので、制御ワードはクロックサイクル3では未だ準備ができていない。時間に関して制約の厳しいアプリケーションの場合には、制御ワードは各クロックサイクルごとに使用可能でなければならない。従って、時間の制約が厳しい制御ワードを構成するためにデコードされた一群のコマンドは、1クロックサイクルで読み出し可能なようにメモリワードの境界部に配列されていなければならない。
【0036】
図5は、一群のコマンドがメモリワード境界に選択的に配列されているコマンド記憶素子内の制御ワードを構成する一群のコマンドの記憶状態を模式的に示すものである。図に示した例では、コマンド81はコマンド81、82と83から構成される制御ワードの最初のコマンドである。図2では、コマンド81はメモリワード13内の最後のコマンドであった。図5では、コマンド90がメモリワード13に挿入されている。結果として、コマンド81は、メモリワード14の中の最初のコマンドになった。
【0037】
メモリワードを構成する方法は種々存在する。コマンド90は制御ユニットが認識することができるものであればどのようなコマンドであっても良い。情報ワードを構成する他の方法はイリーガルコードを使用することである。制御ユニットはコマンドのラベルフィールドコマンド90がイリーガルコマンドであることを、当該ラベルフィールドの数ビットを読んだだけで認識することができる。
【0038】
制御ユニットが、コマンド90がイリーガルコマンドであると認識するための他の方法は、コマンド90がデコードされて制御ワードを構成する一群のコマンドの最大長を超えるか、あるいは、制御ワードの最大長を超えることである。コマンド77、78、79と80が制御ワードを構成するもので有るとすれば、コマンド90は最大長を越えている。ラベルフィールドのビットが、コマンド90がコマンド77、78、79及び80と並行処理されなければならないことを示しているとすれば、制御ユニットはコマンド90がイリーガルコマンドであり、次の制御ワードが次のメモリワードから開始することを知ることができる。
【0039】
情報ワードを書き込む別の方法は、プログラムフローコマンドを使用する方法である、説明のために示した例のうちのいくつかでは、プログラムフローコマンドは常に一群のコマンドの中の最初のコマンドである。もしプログラムフローコマンドが一群のコマンドの中の最初のものでなければ、制御ユニットは、プログラムフローコマンドがイリーガルコマンドであることを認識することができる。一群のコマンドは、メモリワードに対して常に唯一のプログラムフローコマンドが存在するように構成することもできる。もし1つ以上のプログラムフローコマンドがあれば、制御ユニットは2番目のプログラムフローコマンドはイリーガルコマンドであることを認識することができる。制御ユニットが特別なコードかイリーガルコマンドを読み込むと、制御ユニットは、次の制御ワードが次のメモリワードから開始することを認識する。
【0040】
図6は、コマンドが、次の制御ワードを構成する一群のコマンドがメモリの別の位置から開始するものであり、一群のコマンドはメモリワード境界部に選択的に配列されていることを示す場合の、コントロールユニットによるコマンド配列を模式的に示した図である。図の例においては、コマンド81はコマンド81、82と83によって構成される制御ワードの最初のコマンドである。図5に示したように、コマンド81はメモリワード14に記憶された最初のコマンドである。結果として、一群のコマンド81、82と83は同じクロックサイクル中に読み出すことができる。
【0041】
クロックサイクル0の間に、ジャンプコマンドが実行され、コマンド81がジャンプコマンドの対象であるとすると、制御ユニットによって読み出される次のメモリワードはメモリワード14である。クロックサイクル1において、制御ユニットはメモリワード14を読み出す。図4に示した例とは異なり、制御ワードを構成する一群のコマンドは単一のクロックサイクル内で読み出される。クロックサイクル2では、メモリワード14がデコードされて、クロックサイクル3でコマンド81、82と83から構成された制御ワードが実行される。図4の場合とは異なり、制御ワードは各クロックサイクルに対して使用可能な状態である。制御ワードは1つのメモリワードからスタートして次のメモリワードで終了することができるが、デコードされた制御ワードが時間の制約を受ける一群のコマンドは、メモリワードの境界部に配列されている必要がある。
【0042】
ラベルフィールドはコマンドの長さとアクションフィールドが対象としている回路ブロックに関する情報を含むことができるので、制御メモリと制御ユニットは別の回路ブロックに関して再利用することができる。同様に、回路ブロックは別のコマンド記憶素子と制御ユニットに対して再利用することができる。
【0043】
好ましい実施例に関する上述の説明は当業者が本発明を利用することができるように記載したものである。上述の実施例を種々の方法で変更することは当業者にとっては自明であり、本発明の範囲と思想を逸脱することなく上記の基本原理を適用することも可能である。従って、本発明は上述の実施例に限定されるものではなく、添付の請求項の記載の最も広い解釈に基づくべきものである。
【図面の簡単な説明】
【図1】 図1は、制御ユニットを有するシステムのブロック図である。
【図2】 図2は、コマンド記憶素子内にメモリワードとしてコマンドを記憶する様子を模式的に示す図である。
【図3】 図3は、制御ユニットによる一連のコマンドを模式的に示す。
【図4】 図4は、コマンドが、次の制御ワードを構成する一群のコマンドが記憶素子内の別の位置から開始しメモリワード境界に整列していないことを表示する場合のコマンドの並びを模式的に示す図である。
【図5】 図5は、一群のコマンドがメモリワードの境界に選択的に配列されたコマンド記憶素子内の制御ワードを構成する一群のコマンドの記憶状況を模式的に示すものである。
【図6】 図6は、コマンドが、次の制御ワードを構成する一群のコマンドが記憶素子内の別の位置から開始しメモリワード境界に選択的に整列されていることを表示する場合のコマンドの並びを模式的に示す図である。
Claims (13)
- 複数の回路ブロックに対してコマンドを配信する装置であって、
ラベルフィールドとアクションフィールドを有する複数のコマンドをメモリワード内に相互に隣接させて記憶するコマンド記憶素子と、
前記コマンド記憶素子からメモリワードを取り出し、メモリワードをデコードし、ラベルフィールドの情報に基づいてアクションフィールドを制御ワード内のコマンドとして配列し、レジスタ内に制御ワードを記憶させる制御ユニットと、
制御ワードをレジスタから複数の回路ブロックに配信する、前記レジスタに接続された手段とを具備し、
制御ワードを構成するためにデコードされた第1の一群のコマンドが、第1のメモリワードと第2のメモリワードとを分離するメモリワード境界から第2の一群のコマンドを配列する表示を含み、
前記メモリワード境界から前記第2の一群のコマンドを配列する前記表示が前記第1のメモリワードに挿入された特別なコードであり、前記特別なコードは制御ユニットに次の制御ワードが前記第2のメモリワードから開始することを示すこととを特徴とする装置。 - 一つのメモリワードに並列処理されるコマンドと並列処理されないコマンドを統合することによってコマンド記憶素子のサイズを縮小した請求項1に記載の装置。
- 制御ワードを構成するためにデコードされた別の一群のコマンドのための前記ラベルフィールドが、前記制御ワードが第3のメモリワードから開始し、第4のメモリワードで終了することを示すことを特徴とする請求項2に記載の装置。
- 各ラベルフィールドが、所定のコマンドが前記コマンド記憶素子中の前のコマンドと並列処理されるべきか否かを表示するものである請求項3に記載の装置。
- 前記メモリワード境界から前記第2の一群のコマンドを配列する表示が前記第1のメモリワードに挿入されたイリーガルコマンドを含み、前記イリーガルコマンドは前記制御ユニットに次の制御ワードが前記第2のメモリワードから開始することを示すことを特徴とする請求項1に記載の装置。
- 各制御ワードは予め定められた最大許容長を有しており、前記制御ユニットは前記イリーガルコマンドを含むことによって前記制御ワードの長さが前記予め定められた最大許容長を越えることを原因としてイリーガルコマンドと認識することを特徴とする請求項5に記載の装置。
- 異なる種類のコマンドが存在し、そのうちの1つは次の制御ワードが次の隣接したコマンド以外の対象コマンドから開始することを示すジャンプコマンドであり、
前記対象コマンドは、前記対象コマンドと次のメモリワードとを分離するメモリワード境界から配列される別の一群のコマンドに存在することを特徴とする請求項1に記載の装置。 - 前記コマンド記憶素子が複数の種類のコマンドを記憶し、コマンドのうちの一種は条件を評価するために回路ブロックを指定し、条件が満足されていれば、コマンド記憶素子に記憶されている少なくとも1つの別のコマンドを実行し、条件が満足されていなければ当該少なくとも1つの他のコマンドは実行されない請求項1に記載の装置。
- 条件コマンドが、デコードされて前記制御ワードを構成する一群のコマンドのうちの最初のコマンドとして前記コマンド記憶素子に記憶されていれば、前記条件は当該一群のコマンド内の全てのコマンドに対して適用される請求項8に記載の装置。
- 条件コマンドが、デコードされて前記制御ワードを構成する一群のコマンドのうちの最初のコマンドでないとして前記コマンド記憶素子に記憶されていれば、前記条件は当該一群のコマンドの全てに対しては適用されない請求項8に記載の装置。
- 回路ブロックにコマンドを配信する方法であって、
対応したラベルフィールドと対応したアクションフィールドを有する複数のコマンドをメモリワードとしてコマンド記憶素子内に隣接して記憶し、
コマンド記憶素子からメモリワードの一つを取り出し、
各ラベルフィールドを読み出すことによりメモリワードをデコードし、
前記対応したラベルフィールドの情報に基づいて対応したコマンドから各対応したアクションフィールドをレジスタ内に位置付け、
レジスタから回路ブロックに対して制御ワードを配信するステップを有し、
第1の一群のコマンドがデコードされて制御ワードを構成し、前記第1の一群のコマンドは、第1のメモリワードと第2のメモリワードを分離するメモリワード境界から第2の一群のコマンドを配列する表示を含み、
前記メモリワード境界から前記第2の一群のコマンドを配列する前記表示が前記第1のメモリワードに挿入された特別なコードであり、前記特別なコードは制御ユニットに次の制御ワードが前記第2のメモリワードから開始することを示すこととを特徴とする方法。 - さらに、メモリワードにおいて、並列処理されるコマンドと並列処理されないコマンドを圧縮して記憶することによってコマンド記憶素子の大きさを縮小するステップを有する請求項11に記載の方法。
- さらに、並列処理されるべき一群のコマンドを同じメモリワード内に位置させるステップを有する請求項12に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/086,618 US6345355B1 (en) | 1998-05-29 | 1998-05-29 | Method and apparatus for distributing commands to a plurality of circuit blocks |
US09/086,618 | 1998-05-29 | ||
PCT/SE1999/000847 WO1999063417A2 (en) | 1998-05-29 | 1999-05-18 | Method and apparatus for distributing commands to a plurality of processing units |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002517811A JP2002517811A (ja) | 2002-06-18 |
JP4169931B2 true JP4169931B2 (ja) | 2008-10-22 |
Family
ID=22199787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000552565A Expired - Fee Related JP4169931B2 (ja) | 1998-05-29 | 1999-05-18 | 複数の回路ブロックにコマンドを配信する方法と装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6345355B1 (ja) |
EP (1) | EP1080399A2 (ja) |
JP (1) | JP4169931B2 (ja) |
KR (1) | KR100612193B1 (ja) |
CN (1) | CN1127018C (ja) |
AU (1) | AU765179B2 (ja) |
CA (1) | CA2333563C (ja) |
WO (1) | WO1999063417A2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7039790B1 (en) | 1999-11-15 | 2006-05-02 | Texas Instruments Incorporated | Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit |
EP1102165A1 (en) * | 1999-11-15 | 2001-05-23 | Texas Instruments Incorporated | Microprocessor with execution packet spanning two or more fetch packets |
CN105446700B (zh) * | 2014-05-30 | 2018-01-02 | 华为技术有限公司 | 一种指令执行方法以及顺序处理器 |
CN109947479A (zh) * | 2019-01-29 | 2019-06-28 | 安谋科技(中国)有限公司 | 指令执行方法及其处理器、介质和系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692139A (en) | 1988-01-11 | 1997-11-25 | North American Philips Corporation, Signetics Div. | VLIW processing device including improved memory for avoiding collisions without an excessive number of ports |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
EP0825529A3 (en) | 1990-05-04 | 1998-04-29 | International Business Machines Corporation | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction |
US5214763A (en) | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5163139A (en) | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
EP0488819B1 (en) * | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
US5446850A (en) | 1991-01-15 | 1995-08-29 | International Business Machines Corporation | Cross-cache-line compounding algorithm for scism processors |
JP2642529B2 (ja) | 1991-04-30 | 1997-08-20 | 株式会社東芝 | 並列プロセッサーの命令分配処理装置 |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
JPH0793152A (ja) | 1993-09-20 | 1995-04-07 | Fujitsu Ltd | マイクロプロセッサ制御装置 |
EP0950946B1 (en) | 1993-11-05 | 2001-08-16 | Intergraph Corporation | Software scheduled superscaler computer architecture |
JPH07219769A (ja) | 1994-02-07 | 1995-08-18 | Mitsubishi Electric Corp | マイクロプロセッサ |
US6009508A (en) * | 1994-06-21 | 1999-12-28 | Sgs-Thomson Microelectronics Limited | System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis |
US5724331A (en) * | 1994-08-25 | 1998-03-03 | Discovision Associates | Disk drive system having improved cartridge-loading apparatus including direct drive gear train and methods for making and operating same |
US5742784A (en) | 1995-01-25 | 1998-04-21 | International Business Machines Corporation | System for reordering of instructions before placement into cache to reduce dispatch latency |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
-
1998
- 1998-05-29 US US09/086,618 patent/US6345355B1/en not_active Expired - Lifetime
-
1999
- 1999-05-18 CA CA2333563A patent/CA2333563C/en not_active Expired - Fee Related
- 1999-05-18 JP JP2000552565A patent/JP4169931B2/ja not_active Expired - Fee Related
- 1999-05-18 AU AU46614/99A patent/AU765179B2/en not_active Ceased
- 1999-05-18 WO PCT/SE1999/000847 patent/WO1999063417A2/en active IP Right Grant
- 1999-05-18 EP EP99929989A patent/EP1080399A2/en not_active Withdrawn
- 1999-05-18 CN CN99808943A patent/CN1127018C/zh not_active Expired - Fee Related
- 1999-05-18 KR KR1020007013389A patent/KR100612193B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US6345355B1 (en) | 2002-02-05 |
CA2333563A1 (en) | 1999-12-09 |
KR100612193B1 (ko) | 2006-08-16 |
CA2333563C (en) | 2011-07-12 |
KR20010043891A (ko) | 2001-05-25 |
WO1999063417A2 (en) | 1999-12-09 |
WO1999063417A3 (en) | 2000-03-16 |
CN1127018C (zh) | 2003-11-05 |
EP1080399A2 (en) | 2001-03-07 |
CN1310818A (zh) | 2001-08-29 |
JP2002517811A (ja) | 2002-06-18 |
AU765179B2 (en) | 2003-09-11 |
AU4661499A (en) | 1999-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7366874B2 (en) | Apparatus and method for dispatching very long instruction word having variable length | |
US6216223B1 (en) | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor | |
CN102346689B (zh) | 用于暂停处理器中执行过程的方法和装置 | |
US6845445B2 (en) | Methods and apparatus for power control in a scalable array of processor elements | |
US7127593B2 (en) | Conditional execution with multiple destination stores | |
US6965991B1 (en) | Methods and apparatus for power control in a scalable array of processor elements | |
US5710902A (en) | Instruction dependency chain indentifier | |
US6356994B1 (en) | Methods and apparatus for instruction addressing in indirect VLIW processors | |
EP2680132B1 (en) | Staged loop instructions | |
US7836317B2 (en) | Methods and apparatus for power control in a scalable array of processor elements | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP2620511B2 (ja) | データ・プロセッサ | |
US7673294B2 (en) | Mechanism for pipelining loops with irregular loop control | |
JPH052484A (ja) | スーパースカラプロセツサ | |
CN101194228A (zh) | 微处理器中的有效子程序返回 | |
US5253349A (en) | Decreasing processing time for type 1 dyadic instructions | |
JP4169931B2 (ja) | 複数の回路ブロックにコマンドを配信する方法と装置 | |
EP0933703A2 (en) | Method and apparatus for processing program loops | |
EP1686460A2 (en) | Method and apparatus for efficient and flexible sequencing of data processing units extending VLIW architecture | |
GB2381602A (en) | Partial decoding in a pipeline processor before fetching an instruction | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
EP0211487A1 (en) | Conditional operations in computers | |
JPH09223009A (ja) | データ処理装置と方法 | |
US20030093651A1 (en) | Instruction sets and compilers | |
WO1989004518A1 (en) | Register interference preventing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060512 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070320 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070515 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070815 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080523 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080708 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080806 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
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: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |