(57)【特許請求の範囲】
【請求項１】
複数の回路ブロックに対してコマンドを配信する装置であって、
ラベルフィールドとアクションフィールドを有する複数のコマンドをメモリワード内に相互に隣接させて記憶するコマンド記憶素子と、
前記コマンド記憶素子からメモリワードを取り出し、メモリワードをデコードし、ラベルフィールドの情報に基づいてアクションフィールドを制御ワード内のコマンドとして配列し、レジスタ内に制御ワードを記憶させる制御ユニットと、
制御ワードをレジスタから複数の回路ブロックに配信する、前記レジスタに接続された手段とを具備し、
制御ワードを構成するためにデコードされた第１の一群のコマンドが、第１のメモリワードと第２のメモリワードとを分離するメモリワード境界から第２の一群のコマンドを配列する表示を含み、
前記メモリワード境界から前記第２の一群のコマンドを配列する前記表示が前記第１のメモリワードに挿入された特別なコードであり、前記特別なコードは制御ユニットに次の制御ワードが前記第２のメモリワードから開始することを示すこととを特徴とする装置。
【請求項２】
一つのメモリワードに並列処理されるコマンドと並列処理されないコマンドを統合することによってコマンド記憶素子のサイズを縮小した請求項１に記載の装置。
【請求項３】
制御ワードを構成するためにデコードされた別の一群のコマンドのための前記ラベルフィールドが、前記制御ワードが第３のメモリワードから開始し、第４のメモリワードで終了することを示すことを特徴とする請求項２に記載の装置。
【請求項４】
各ラベルフィールドが、所定のコマンドが前記コマンド記憶素子中の前のコマンドと並列処理されるべきか否かを表示するものである請求項３に記載の装置。
【請求項５】
前記メモリワード境界から前記第２の一群のコマンドを配列する表示が前記第１のメモリワードに挿入されたイリーガルコマンドを含み、前記イリーガルコマンドは前記制御ユニットに次の制御ワードが前記第２のメモリワードから開始することを示すことを特徴とする請求項１に記載の装置。
【請求項６】
各制御ワードは予め定められた最大許容長を有しており、前記制御ユニットは前記イリーガルコマンドを含むことによって前記制御ワードの長さが前記予め定められた最大許容長を越えることを原因としてイリーガルコマンドと認識することを特徴とする請求項５に記載の装置。
【請求項７】
異なる種類のコマンドが存在し、そのうちの１つは次の制御ワードが次の隣接したコマンド以外の対象コマンドから開始することを示すジャンプコマンドであり、
前記対象コマンドは、前記対象コマンドと次のメモリワードとを分離するメモリワード境界から配列される別の一群のコマンドに存在することを特徴とする請求項１に記載の装置。
【請求項８】
前記コマンド記憶素子が複数の種類のコマンドを記憶し、コマンドのうちの一種は条件を評価するために回路ブロックを指定し、条件が満足されていれば、コマンド記憶素子に記憶されている少なくとも１つの別のコマンドを実行し、条件が満足されていなければ当該少なくとも１つの他のコマンドは実行されない請求項１に記載の装置。
【請求項９】
条件コマンドが、デコードされて前記制御ワードを構成する一群のコマンドのうちの最初のコマンドとして前記コマンド記憶素子に記憶されていれば、前記条件は当該一群のコマンド内の全てのコマンドに対して適用される請求項８に記載の装置。
【請求項１０】
条件コマンドが、デコードされて前記制御ワードを構成する一群のコマンドのうちの最初のコマンドでないとして前記コマンド記憶素子に記憶されていれば、前記条件は当該一群のコマンドの全てに対しては適用されない請求項８に記載の装置。
【請求項１１】
回路ブロックにコマンドを配信する方法であって、
対応したラベルフィールドと対応したアクションフィールドを有する複数のコマンドをメモリワードとしてコマンド記憶素子内に隣接して記憶し、
コマンド記憶素子からメモリワードの一つを取り出し、
各ラベルフィールドを読み出すことによりメモリワードをデコードし、
前記対応したラベルフィールドの情報に基づいて対応したコマンドから各対応したアクションフィールドをレジスタ内に位置付け、
レジスタから回路ブロックに対して制御ワードを配信するステップを有し、
第１の一群のコマンドがデコードされて制御ワードを構成し、前記第１の一群のコマンドは、第１のメモリワードと第２のメモリワードを分離するメモリワード境界から第２の一群のコマンドを配列する表示を含み、
前記メモリワード境界から前記第２の一群のコマンドを配列する前記表示が前記第１のメモリワードに挿入された特別なコードであり、前記特別なコードは制御ユニットに次の制御ワードが前記第２のメモリワードから開始することを示すこととを特徴とする方法。
【請求項１２】
さらに、メモリワードにおいて、並列処理されるコマンドと並列処理されないコマンドを圧縮して記憶することによってコマンド記憶素子の大きさを縮小するステップを有する請求項１１に記載の方法。
【請求項１３】
さらに、並列処理されるべき一群のコマンドを同じメモリワード内に位置させるステップを有する請求項１２に記載の方法。
【発明の詳細な説明】
【０００１】
技術的背景
本発明はデータ処理に関し、より具体的には，チップ上のメモリに記憶されたコマンドに関する。
半導体技術の発展により，単一のチップ、チップセット又はボードに複雑な回路ブロックを集積することが可能になった。単一のチップにＩ／Ｏセル、データパスオペレータ、記憶要素や制御ユニットを搭載することも可能である。回路ブロックが異なれば機能(又は動作)が異なる。適切な回路ブロックが適切な時刻に適切に作動することを確保することは制御構造の役目である。
【０００２】
回路ブロックの一例は加算器である。加算器は、数を数える操作、フィルタあるいは積算操作のために使用される。レジスタは入力と出力が同時刻に到着するように、しばしば加算器の入力部と出力部に使用される。回路ブロックの他の例は積算機である。積算機は相関、重畳、フィルタあるいは周波数演算等のデジタル信号処理に使用される。
【０００３】
回路ブロックの他の例としてはパリティ発生器、コンパレータ、ゼロ／ワン検出器、ブーリーン演算子、算術論理ユニット（ＡＬＵｓ)およびシフタがある。パリティ発生器は入力されたワードに含まれる１の数が偶数か奇数かを決定するために使用される。コンパレータは２値で表された２つの値の大きさを比較するのに使用される。ゼロ／ワン検出器は、その数値が全てゼロ又は全て１であるか否かを決定するために使用される。２値カウンタは２値であらわされた処理を所定回繰り返すために使用される。シフタは、算術シフト、論理シフト及び回転シフトにとって重要である。
【０００４】
記憶素子は、特に、回路ブロックへの入力コマンド及び回路ブロックからの出力コマンドを記憶するために使用される。記憶素子は、通常３つのカテゴリに分類される：ランダムアクセスメモリ、シリアルアクセスメモリ、及びコンテントアクセスメモリである。ランダムアクセスメモリは、データの物理的な位置とアクセス時間との間に関係がない記憶媒体と定義される。一般的にランダムアクセスメモリと称するものの中には、２つのカテゴリが含まれる：読み出し専用メモリ(ＲＯＭ)と書き込み／読み出しメモリである。ＲＡＭという用語は、通常、書き込み／読み出しメモリをさすものとして使用され、ＲＡＭは回路ブロックからの出力を記憶するために使用される。
【０００５】
「データ処理」という表現は、回路ブロックの間で、特定の機能を達成するためにデータを移動させることを意味する。このデータの移動は、クロックサイクルのたびに新たなコマンドを発生させる制御構造によって統括されている。システムによっては、同時に処理されるコマンドは１つだけであるＳＩＳＤ（単一指示ストリーム単一データストリーム)制御ユニットを使用している。コマンドが１つだけであれば、ＳＩＳＤシステムの効率は通常、コマンドの長さを長くするか、クロック周波数を高くすることによって改善される。
【０００６】
スーパースカラーシステムでは、制御ユニットは同時に２つ以上のコマンドを処理することによって同じクロックサイクル内で２つ以上の回路ブロックを（並列に）動かすことが可能である。Ｎ個の回路ブロックがあれば、理論的にはスーパースカラーシステムは同一クロック内に、Ｎ個の回路ブロックを動かすことができる。複数のコマンドを使うので、スーパースカラー制御ユニットは一般にＳＩＳＤ制御ユニットもよりも効率が高い。
【０００７】
「パイプライン」という用語は、オンチップ記憶素子からコマンドを読み出し（フェッチング)、種々の回路ブロックを動かすときにコマンドをデコードすることを意味する。制御ユニットは、パイプラインステージの間でコードされたコマンドをコマンドパスに保持することができる。コマンドパスは、コマンドのフェッチ、コマンドのデコード、レジスタの読み取り、実行及び／または書き込みからなる異なるステージに分化することができる。制御ユニットは、パスアラウンドを許容し、処理が適切な順序で行われるように比較を行うことができる。
【０００８】
ほとんどのシステムでは、超長コマンドワード（ＶＬＩＷ)制御装置を使用している。ＶＬＩＷ制御装置では、制御プログラムは、それぞれのワードが特定のクロックサイクルに対応するようにオンチップ記憶素子に記憶されている。それぞれのＶＬＩＷはそれぞれの回路ブロック用に、たとえそれが当該ＶＬＩＷでは動作していない回路ブロックであっても、少なくとも１ビットを有している。ＶＬＩＷ制御装置の問題は、回路ブロックの数が多くなると、制御プログラムの長さと大きさが大きくなることである。特に複雑なシステムでは、制御プログラムを書き込むためのチップスペースが足りなくなる。個々の回路ブロックを動かすためにのコマンドを記憶するために、チップの大部分を使用せざるを得ないことになる。
【０００９】
クロックサイクルごとに見ると、ほとんどのシステムでは、回路ブロックのうちで動いているのはほんの小さなサブセットだけである。換言すれば、制御ワードが長いほど、貴重なチップエリアが無駄に使用されることになる。アプリケーションによっては、コマンド記憶素子を１つのチップに搭載することはもはや不可能である。複数の回路ブロックを動かすことができ、貴重なチップエリアを無駄に使用することなく並行してコマンドを作成することができる制御構造及びコマンド記憶素子が必要とされている。
【００１０】
発明の要旨
従来の制御ユニットが有していた上記の課題、問題および限界は、コマンドを統括して、コマンド記憶素子に記憶されるべき情報の量を少なくすることによって解決することができる。前記制御装置は、指示を解釈して統括に際して取り除かれた順序を回復させる。
【００１１】
本発明の１つの側面によれば、コマンドはコマンド記憶素子にメモリワードとして隣り合わせに記憶される。それぞれのコマンドは、ラベルフィールドとアクションフィールドを有する。制御ユニットはメモリワードとして集合的に参照される一群のコマンドを受け取る。制御ユニットはコマンドをデコードして、ラベルフィールドの情報に基づいてアクションフィールドを並べ替える。制御ユニットは、制御ワードをレジスタに記憶して、レジスタからの制御ワードを複数の回路ブロックに配布する。
【００１２】
コマンドがコマンド記憶素子に圧縮されて記憶されているときは、並行して実施しないコマンドは同じメモリ内に記憶されていても良い。並行して実施されるコマンドは、異なるメモリワードに記憶することができる。制御ワード内のコマンドの順序は、コマンドが前のコマンドと並行して実行されるかどうかというようなラベルフィールドにある情報によって決定される。
【００１３】
本発明の別の側面によれば、時間の制約を受ける制御ワードまたはジャンプコマンドの対象である制御ワードはメモリワードの境界部に配列させられる。もし、一群のコマンドが１つのメモリワードから出発して次のメモリワードで終了するなら、制御ユニットは両方のメモリワードを読み込まなければならない。もし、一群のコマンドがジャンプコマンドの対象であれば、一群のコマンドが完全に利用可能になるには２クロックサイクルが必要である。時間の制約を受けるアプリケーションでは、そのコマンドグループが利用できるようになるために２クロックサイクル待たなければならないことは好ましいことではない。しかし、もし一群のコマンドがメモリワードの境界に配列されていたなら、制御ユニットはメモリワードを１つだけ読めば良く、その制御ワードは直ぐに利用可能になる。特定の実施態様では、前のメモリワードに特別なコード又はイリーガルコマンドが挿入されて、一群のコマンドは次のメモリワードの冒頭部分から開始する。
【００１４】
本発明の他の側面によれば、コマンド記憶素子の大きさをさらに削減するために、コマンドは一群のコマンドの中に置かれることになる。例えば、条件付コマンドは条件を評価するために特別な回路ブロックを必要とするコマンドである。条件が満たされれば他のコマンドが実施される。本発明の実施例では、一群のコマンドのうちの最初のものが条件付コマンドであれば、当該一群のコマンドに属する全てのコマンドにその条件が課される。もし条件付コマンドがそのグループのコマンドの中で最初のものではなければ、条件はそのコマンドの直前のコマンドにだけ適用される。つまり、一群のコマンドの中でのコマンドの位置が追加の情報をもたらす。
【００１５】
本発明の利点は、コマンド記憶素子が休止状態の回路ブロックのコマンドのために貴重なチップエリアを占領することがない点である。コマンド記憶素子の大きさはチップエリアの使用領域を最も少なくするよう最小限にされている。
本発明のその他の利点は、特定のシステムの平衡性の程度（独立パス又はパイプラインの数)とは無関係に同じコントローラと同じコマンドセットを使用できることである。
本発明のその他の重要な利点は、大部分の回路ブロックを再利用するようチップをわずかに変更するだけで同じ制御フィールドが使用可能な点である。回路ブロックの再利用は、新たなシステムを製造するための時間とコストを低減するために重要である。
【００１６】
本発明の他の重要な利点は、時間の制約を受けるアプリケーションの場合に、一群のコマンドをメモリワード境界周辺に配列して単一のクロックサイクルでの読み出しを可能にできる点である。
【００１７】
本発明に関する上述の目的、特徴及び利点は、図を参照して以下に記載する本発明の詳細な説明によって一層明瞭になるはずである。
【００１８】
発明の詳細な説明
以下の本発明の詳細な説明では、発明の完全な理解を可能にするために、詳細について具体的に記載する。しかし、下記の具体的な記載とは異なる形で本発明を実施できることは当業者にとって明らかである。また、本発明に関する詳細な説明が希薄化してしまわないように、周知の方法や回路についての説明は割愛した。
【００１９】
図1は制御ユニット２０を有するシステムのブロック図である。制御ユニット２０は、デコーダ２２とシーケンサ２４を有する。コマンド記憶素子１０は、ビットフィールドにコマンドを記憶するオンチップメモリである。コマンドのうちのいくつかは、ジャンプあるいはコマンド呼び出しのような制御伝達コマンドであり、あるいは数式又は論理演算のようなＡＬＵクラスのコマンドである。コマンドはそれぞれ、ラベルフィールドとアクションフィールドからなる少なくとも２つの部分を有する。
【００２０】
制御ユニット２０は、コマンド記憶素子１０に対してコマンド４２を取り込むようにアドレス４１を送る。制御ユニット２０は、コマンド記憶素子１０から集合的にメモリワードとして参照される一群のコマンドを受け取る。制御ユニット２０は、デコーダ２２を使ってメモリをデコードする。シーケンサ２４が、ラベルフィールドの情報に従ってアクションフィールドを制御ワードのコマンドとして並べ替える。シーケンサ２４は、制御ワードをパイプラインレジスタ（図示しない）に記憶させる。コマンドの順序はコマンド４２、チップ６０の他の部分の状況６１、および回路ブロック５１から５９の状況によって定まる。
【００２１】
制御ワードは並列（または、１つのクロックサイクルで）実行される一連のコマンドである。デコードされて制御ワードを構成する複数のコマンドはコマンド記憶素子１０の内部に隣接して、メモリワードの一部として記憶される。コマンド記憶素子１０は、不要なビットフィールドを除去し同一メモリワードで並列処理されるコマンドと並列処理されないコマンドとを統合することによってサイズを圧縮されている。デコードされて制御ワードを形成する一群のコマンドは、１つのメモリワードで始まって他のメモリワードで終了するものであっても良い。コマンドはコマンド記憶素子１０の中で圧縮されているので、メモリワード内のビット位置によってコマンドを識別することは不可能である。その代わり、シーケンサ２４は、それぞれのコマンドのラベルフィールドの情報を用いて、デコードされたコマンドを順序付け、独立させる際に失われた順序を回復させる。
【００２２】
制御ユニット２０が、コマンド記憶素子１０から一連のコマンドを受け取ると、制御ユニット２０は、対応するアクションフィールドの長さを認識するためにラベルフィールドを用いることができる。例えば、それぞれのラベルフィールドは、当該コマンドが前のコマンドと並列処理されるべきか、制御ユニット２０がこの情報に基づいて制御ワードを形成する一群のコマンドの開始と終了位置を識別することができるか否かを表示する。制御ユニット２０は、ラベルフィールド、アクションフィールド、又は一群のコマンドの中における当該コマンドの位置情報を、対応するアクションフィールドを実行する回路ブロックを決定するために使用することができる。一群のコマンドが特定の回路ブロックを対象としたコマンドを有していなければ、制御ユニット２０は、回路ブロックがその時点では動いていないことを理解することができる。回路ブロックが動いていなければ、そのブロックを対象としたコマンドを含む制御ワードが受け取られるまでは当該ブロックは休止させる。
【００２３】
制御ユニット２０は、クロック３０から各クロックサイクル毎に制御バス４３に制御ワードを送り出す。制御ユニット２０は、クロック３０以降の各クロックサイクルに全制御ワードが利用できるように十分なレートでメモリ１０から予めコマンド４２を読み出す。制御ワードは回路ブロック５１、５２、５３と５９に送られる。制御ワードは回路ブロック５１、５２、５３と５９に対して、システムデータバス４４にデータを送り出すかシステムバスからデータを受け取るように指示する。制御ユニット２０は、複数のシーケンスレジスタ及び／または複数のデータバスを有していてもよい。
【００２４】
制御ユニット２０は、動いている回路ブロックに対してコマンドを含む制御ワードを送り出す。制御ワードを形成する一群のコマンドが特定の回路ブロックに対するコマンドを含んでいなければ、制御ユニット２０はその時当該回路ブロックが休止状態であることを理解する。回路ブロックが動いていなければ、次に当該回路ブロックに対するコマンドを含む制御ワードが受け取られるまで休止状態のままである。もし、制御ユニット２０が制御ワードを構成する一群のコマンドをデコードし、当該一群のコマンドが回路ブロック５１と５２に対するコマンドを含んでいるが、回路ブロック５３と５９に対するコマンドを含んでいなければ、制御ユニット２０は回路ブロック５１と５２に対する制御ワードを送り出す。
【００２５】
図２は、コマンド記憶素子の中でコマンドがメモリワードとして記憶される様子を示した模式図である。図２に示されているように、コマンド記憶素子１０は、メモリワード１１，１２，１３，１４，１５，・・・１９を有している。コマンド７１，７２，・・・８５は、デコードされた後に配列されて制御ワードを構成する。アプリケーションによっては、制御ワードの最大長はデータ及び制御バスの数のようなハードウエアの制限を受ける。制御ワードの最大長は、制御が単一のクロックサイクルでコマンド記憶素子から読み出すビット数による制約も受ける。
【００２６】
例示した実施態様においては、制御ワードは８ビットや１６ビットの基本長の倍数である。例えば、図２では、１つのクロックサイクルに読み出されるデータビットの最大数は６４ビットである。メモリワードの長さは６４ビットで、コマンドは１６ビットか３２ビットのいずれかである。デコードされて制御ワードを構成する一群のコマンドは、１６、３２、４８又は６４ビットの長さをとることができる、つまり、コマンド長の１、２、３または４倍長である。制御ワードは１つのメモリワードから始まって次のメモリワードで終了することも可能である。例えば、コマンド７１が最初の制御ワードであれば、コマンド７２、７３、７４及び７５が次の制御ワードを構成するものであっても良い。
【００２７】
メモリワード１１は、コマンド７１、７２、７３及び７４によって構成される。コマンド７１、７２、７３及び７４は制御ワードを構成することができる。コマンド７１、７２、７３と７４がデコードされて１つの制御ワードを構成するなら、コマンド７１、７２、７３及び７４は同じくロックサイクル内で（並列に）実行される。各コマンドは少なくとも２つの部分を有する：ラベルフィールドとアクションフィールドである。例示した実施態様では、ラベルフィールドは４から７ビットの長さを有する。ラベルフィールドはアクションフィールドの対象を特定する。もし、コマンド７１が回路ブロック５１に対するものであれば、コマンド７１のラベルフィールドは対象回路ブロックとして、回路ブロック５１を指定する。メモリワード１１が特定の回路ブロックに対するコマンドを有していなければ、制御ユニット２０は当該回路ブロックがその時休止していることを理解する。コマンドのいくつかは制御ユニット２０に対するものである。もしコマンドが制御ユニット２０に対するものであれば、制御バス４３に対してコマンドを送り出す必要はない。
【００２８】
制御ワードの長さは、ラベルフィールド内の情報によって決定される。ラベルフィールドは、従来はもっと長い制御ワードのビット位置によって与えられていた情報を提供することができる。さらに、処理対象となる回路ブロックを特定することに加えて、ラベルフィールドは、当該コマンドを直前のコマンドと並列に実行すべきか否かを指示する。２つのコマンドが並列処理される場合は、これらは同じ制御ワードに含まれる。コマンドのデコードと順序付けは制御ユニット２０によって行われる。例えば、コマンド７１、７２、７３及び７４が１つの制御ワードを構成するものであれば、コマンド７２、７２及び７４のラベルフィールドは、これらのコマンドが直前のコマンドと並列処理されるべきであることを示す。しかし、もしコマンド７４がその制御ワードの一部でなければ、コマンド７４のラベルフィールドは直前のコマンド７３と並列処理すべきことを示していない。
【００２９】
制御ワードは数種類のコマンドのうちの任意の１つであってもよい。コマンドは通常４つの基本的な動作のうちの１つである。移動コマンドは回路ブロック間のデータの移動を制御する。処理コマンドは、回路ブロックによって行われる処理を制御する。プログラムフローコマンドは、コマンドの順序を制御する。条件コマンドは条件を評価する。コマンドはまた、場合によっては異なる数種類のコマンドの組み合わせである。
【００３０】
本発明の例示した実施態様では、コマンドは一群のコマンドの中にあってデコードされて制御ワードを構成し、情報を追加すると共にコマンド記憶素子の大きさをさらに小さくする。例えば、条件コマンドの結果である動作は一群のコマンドの中の条件コマンドの位置によるとすることもできる。例えば、条件コマンドが一群のコマンド中の最初のものであれば、条件はそれに続く全てのコマンドに適用される。つまり、仮に条件が満たされれば、それに続く全てのコマンドが実行される。もし条件が満たされなければ、何れのコマンドも実行されない。一方、条件コマンドが一群のコマンドのうちの最初のコマンドでなければ、条件は直前のコマンドにだけ適用される。
【００３１】
図３は、制御ユニットによるコマンドの順序付けを模式的に表す図である。制御ユニットの中のコマンドの順序は、コマンドそのものと回路ブロックとチップの他の部分からの条件に依存する。例示した実施態様では、３つのパイプライン段階が存在する：コマンドフェッチ段階、コマンドデコード段階、実行／書き込み段階である。フェッチ段階では、メモリワードはコマンド記憶素子から読み出され、メモリワードを構成するコマンドがパイプラインレジスタに記憶される。デコード段階では、制御ユニットは各ラベルフィールドを読み、それぞれのラベルフィールドの情報に基づいて対応するアクションフィールドの位置を特定する。アクションフィールドはコマンドがコマンド記憶素子において圧縮されたときに失われた位置情報を回復できるように、制御ワードの中に位置付けられる。実行／書き込み段階では、制御ワードは回路ブロックに与えられる。回路ブロックはデータの移動等の処理を行う。結果として得られるデータは対象となるレジスタ又はメモリに記憶される。
【００３２】
図３に示した例では、制御ユニットは（図２に示した）クロックサイクル０でメモリワード１１を取り込む。上述のように、制御ユニットはコマンド記憶素子からメモリワードを読み出し、これを各クロックサイクルで完全な制御ワードが得られるレートでパイプラインレジスタに記憶させる。クロックサイクル１の間、制御ユニットはメモリワード１２を読み出し（図２参照）、メモリワードをデコードする。クロックサイクル２においては、制御ユニットはメモリワード１３を読み出し（図２参照）、メモリワード１２をデコードし、制御ワードの全長が使用できる状態なら、回路ブロックに送る。クロックサイクル３では、制御ユニットはメモリワード１４を読み出し（図２参照）、メモリワード１３をデコードし、次の制御ワードを実行する。クロックサイクル４では、制御ユニットはメモリワード１５を読み出し（図２参照）、メモリワード１４をデコードし、次の制御ワードを実行する。場合によっては、制御ワードは１つのメモリワードから開始して次のメモリワードで終了することもできることに留意する必要がある。図に示した例では、コマンド８１、８２、８３がデコードされて制御ワードを形成する。従って、コマンド８１がクロック３でデコードされるが、クロック５までは実行されることはない。並列処理されるべきコマンドは全てのコマンドが実行可能になるまでは実行されないのが普通である。
【００３３】
一般には、同一の命令によって、コマンドはデコードされて制御ワードを構成し、同じメモリ１０に記憶される。しかし、メモリ１０は、次の制御ワードがメモリの別の場所から開始することを指示するコマンドを含むこともできる。例えば、デコードされて１つの制御ワードを構成する一群のコマンドのうちの１つが、ジャンプコマンドの対象になっている場合もある。コマンドの１つがジャンプコマンドの対象であれば、この一群のコマンドはメモリワードの境界部に配列されなければならない。
【００３４】
図４は、コマンドが、次の制御ワードがメモリの別の場所から開始し、一群のコマンドがメモリワード境界には配列されていないこと指示する場合の、制御ユニットのコマンドシーケンスを模式的に示すものである。図に示した例の場合は、コマンド８１はコマンド８１、８２と８３で構成される制御ワードの最初のコマンドである。図２に示した図では、コマンド８１はメモリワード１３内に記憶され、コマンド８２と８３とはメモリワード１４内に記憶されている。
【００３５】
クロックサイクル０において、ジャンプコマンドが実行されて、かつ、コマンド８１がジャンプコマンドの対象であるとすれば、制御ユニットから読み出される次のメモリワードはメモリワード１３である。しかし、コマンド８１、８２と８３の全てがメモリワード１３に記憶されているわけではない。つまり、制御ワードの全てが利用可能になるには２クロックを要することを意味する。クロックサイクル２では、制御ユニットはメモリワード１４を読み出す。制御ワードを構成するために必要なコマンドを読み出すのに２クロックを要するので、制御ワードはクロックサイクル３では未だ準備ができていない。時間に関して制約の厳しいアプリケーションの場合には、制御ワードは各クロックサイクルごとに使用可能でなければならない。従って、時間の制約が厳しい制御ワードを構成するためにデコードされた一群のコマンドは、１クロックサイクルで読み出し可能なようにメモリワードの境界部に配列されていなければならない。
【００３６】
図５は、一群のコマンドがメモリワード境界に選択的に配列されているコマンド記憶素子内の制御ワードを構成する一群のコマンドの記憶状態を模式的に示すものである。図に示した例では、コマンド８１はコマンド８１、８２と８３から構成される制御ワードの最初のコマンドである。図２では、コマンド８１はメモリワード１３内の最後のコマンドであった。図５では、コマンド９０がメモリワード１３に挿入されている。結果として、コマンド８１は、メモリワード１４の中の最初のコマンドになった。
【００３７】
メモリワードを構成する方法は種々存在する。コマンド９０は制御ユニットが認識することができるものであればどのようなコマンドであっても良い。情報ワードを構成する他の方法はイリーガルコードを使用することである。制御ユニットはコマンドのラベルフィールドコマンド９０がイリーガルコマンドであることを、当該ラベルフィールドの数ビットを読んだだけで認識することができる。
【００３８】
制御ユニットが、コマンド９０がイリーガルコマンドであると認識するための他の方法は、コマンド９０がデコードされて制御ワードを構成する一群のコマンドの最大長を超えるか、あるいは、制御ワードの最大長を超えることである。コマンド７７、７８、７９と８０が制御ワードを構成するもので有るとすれば、コマンド９０は最大長を越えている。ラベルフィールドのビットが、コマンド９０がコマンド７７、７８、７９及び８０と並行処理されなければならないことを示しているとすれば、制御ユニットはコマンド９０がイリーガルコマンドであり、次の制御ワードが次のメモリワードから開始することを知ることができる。
【００３９】
情報ワードを書き込む別の方法は、プログラムフローコマンドを使用する方法である、説明のために示した例のうちのいくつかでは、プログラムフローコマンドは常に一群のコマンドの中の最初のコマンドである。もしプログラムフローコマンドが一群のコマンドの中の最初のものでなければ、制御ユニットは、プログラムフローコマンドがイリーガルコマンドであることを認識することができる。一群のコマンドは、メモリワードに対して常に唯一のプログラムフローコマンドが存在するように構成することもできる。もし１つ以上のプログラムフローコマンドがあれば、制御ユニットは２番目のプログラムフローコマンドはイリーガルコマンドであることを認識することができる。制御ユニットが特別なコードかイリーガルコマンドを読み込むと、制御ユニットは、次の制御ワードが次のメモリワードから開始することを認識する。
【００４０】
図６は、コマンドが、次の制御ワードを構成する一群のコマンドがメモリの別の位置から開始するものであり、一群のコマンドはメモリワード境界部に選択的に配列されていることを示す場合の、コントロールユニットによるコマンド配列を模式的に示した図である。図の例においては、コマンド８１はコマンド８１、８２と８３によって構成される制御ワードの最初のコマンドである。図５に示したように、コマンド８１はメモリワード１４に記憶された最初のコマンドである。結果として、一群のコマンド８１、８２と８３は同じクロックサイクル中に読み出すことができる。
【００４１】
クロックサイクル０の間に、ジャンプコマンドが実行され、コマンド８１がジャンプコマンドの対象であるとすると、制御ユニットによって読み出される次のメモリワードはメモリワード１４である。クロックサイクル１において、制御ユニットはメモリワード１４を読み出す。図４に示した例とは異なり、制御ワードを構成する一群のコマンドは単一のクロックサイクル内で読み出される。クロックサイクル２では、メモリワード１４がデコードされて、クロックサイクル３でコマンド８１、８２と８３から構成された制御ワードが実行される。図４の場合とは異なり、制御ワードは各クロックサイクルに対して使用可能な状態である。制御ワードは１つのメモリワードからスタートして次のメモリワードで終了することができるが、デコードされた制御ワードが時間の制約を受ける一群のコマンドは、メモリワードの境界部に配列されている必要がある。
【００４２】
ラベルフィールドはコマンドの長さとアクションフィールドが対象としている回路ブロックに関する情報を含むことができるので、制御メモリと制御ユニットは別の回路ブロックに関して再利用することができる。同様に、回路ブロックは別のコマンド記憶素子と制御ユニットに対して再利用することができる。
【００４３】
好ましい実施例に関する上述の説明は当業者が本発明を利用することができるように記載したものである。上述の実施例を種々の方法で変更することは当業者にとっては自明であり、本発明の範囲と思想を逸脱することなく上記の基本原理を適用することも可能である。従って、本発明は上述の実施例に限定されるものではなく、添付の請求項の記載の最も広い解釈に基づくべきものである。
【図面の簡単な説明】
【図１】 図１は、制御ユニットを有するシステムのブロック図である。
【図２】 図２は、コマンド記憶素子内にメモリワードとしてコマンドを記憶する様子を模式的に示す図である。
【図３】 図３は、制御ユニットによる一連のコマンドを模式的に示す。
【図４】 図４は、コマンドが、次の制御ワードを構成する一群のコマンドが記憶素子内の別の位置から開始しメモリワード境界に整列していないことを表示する場合のコマンドの並びを模式的に示す図である。
【図５】 図５は、一群のコマンドがメモリワードの境界に選択的に配列されたコマンド記憶素子内の制御ワードを構成する一群のコマンドの記憶状況を模式的に示すものである。
【図６】 図６は、コマンドが、次の制御ワードを構成する一群のコマンドが記憶素子内の別の位置から開始しメモリワード境界に選択的に整列されていることを表示する場合のコマンドの並びを模式的に示す図である。
【図１】
0004169931.tif 000002
【図２】
0004169931.tif 000003
【図３】
0004169931.tif 000004
【図４】
0004169931.tif 000005
【図５】
0004169931.tif 000006
【図６】
0004169931.tif 000007