(57)【特許請求の範囲】
【請求項１】
フォーマットが同じで、マイクロ命令の実行に対応する命令のうち決定した命令の実行ステップを定義する命令コード・フィールドを持つプログラマブル命令セットの該決定命令を並列処理するハードウェア装置であって、該実行ステップはそれぞれ複数のマイクロ命令から選択されるマイクロ命令に対応し、該装置は、
それぞれ前記プログラマブル命令セットの特定の命令に関連付けられ、前記決定命令を実行するために処理するマイクロ命令を定義するため、前記決定命令によって１つだけが選択される、複数の判断ブロックと、
特定のマイクロ命令を実行するためそれぞれ前記判断ブロックに関連付けられ、前記選択された判断ブロックに関連付けられたものだけが起動されて該特定のマイクロ命令を実行する、複数の起動ブロックと
前記起動ブロックのそれぞれに接続され、前記決定命令の前記命令コード・フィールドの内容に応じて、前記複数のマイクロ命令から前記特定のマイクロ命令を選択するマイクロ命令選択ブロックと、
を含む、ハードウェア装置。
【請求項２】
前記特定のマイクロ命令を選択する選択コードと、前記特定のマイクロ命令のうち実行する必要のある命令及び実行順序を定義する実行コードとを記憶するレジスタ・ブロックを含む、請求項１記載のハードウェア装置。
【請求項３】
前記起動ブロックはそれぞれ前記レジスタ・ブロックの前記実行コードに応答する制御ロジックを含み、前記選択された判断ブロックに関連付けられた前記起動ブロックは、前記実行コード及び前記判断ブロックに応答して、前記特定のマイクロ命令のうち実行するマイクロ命令を選択する第１制御信号及び実行すべき各マイクロ命令と事前に完了すべき前のマイクロ命令とを決定する第２制御信号を与える、請求項２記載のハードウェア装置。
【請求項４】
前記起動ブロックは、前記特定のマイクロ命令のそれぞれに関連付けられたＡＮＤ回路とロジック回路とを含む、組み合わせロジックを含み、該ＡＮＤ回路の出力は、前記起動ブロックに関連付けられた前記判断ブロックが起動され、前記マイクロ命令を選択する前記制御信号がアクティブであり、且つ前記前のマイクロ命令が完了しているときに、前記関連付けられたマイクロ命令を起動するため１に設定される、請求項３記載のハードウェア装置。
【請求項５】
前記マイクロ命令選択ブロックは、それぞれ前記起動ブロックのそれぞれに関連付けられた複数のマイクロ命令セレクタを含み、各マイクロ命令セレクタは、前記選択コードに応答して、前記関連付けられた起動ブロックを前記特定のマイクロ命令に接続する、請求項２乃至請求項４のいずれかに記載のハードウェア装置。
【請求項６】
前記マイクロ命令セレクタはそれぞれ、前記関連付けられた起動ブロックを各マイクロ命令に接続する接続手段を含み、前記選択コードに応答して前記特定のマイクロ命令との接続のみ起動する、請求項５記載のハードウェア装置。
【請求項７】
前記マイクロ命令セレクタの前記接続手段は、前記選択コードに応答して選択されている各マイクロ命令を起動する手段と、前記選択されたマイクロ命令が完了したときに前記選択されたマイクロ命令を前記関連付けられた起動ブロックに接続する手段を含む、請求項６記載のハードウェア装置。
【請求項８】
前記プログラマブル命令セットは、複数の命令のうちの第１命令セットであり、該複数の命令は非プログラマブル命令の第２セットをも含み、前記プログラマブル命令セットは、前記命令コード・フィールドのサブフィールドによって定義される、請求項２乃至請求項７のいずれかに記載のハードウェア装置。
【請求項９】
前記命令コード・フィールドの前記サブフィールドは、前記複数のマイクロ命令のうち特定のマイクロ命令のグループにそれぞれ関連付けられ、前記レジスタ・ブロックに記憶された１つの選択コードにそれぞれ関連付けられる命令グループを定義する第１部と、前記命令グループのうちの、それぞれ前記レジスタ・ブロックの１つの実行コードに関連付けられ、前記選択コードによって選択される特定のマイクロ命令のグループのうち起動するマイクロ命令及びその起動順序を定義する前記決定命令を定義する第２部とを含む、請求項８記載のハードウェア装置。
【請求項１０】
前記判断ブロックはそれぞれ、前記決定命令と同じ長さであり、命令コード・フィールド以外のフィールドのビットをマスクするマスクを含むマスク・レジスタと、前記決定命令と同じ長さであり、前記命令コード・フィールドに対応し前記命令コード・フィールドと同じ定義済み部分で構成される値を含む値レジスタと、前記決定命令が前記判断ブロックに関連付けられた前記特定の命令であるときにのみ前記判断ブロックの出力が１になるよう前記決定命令を前記マスク・レジスタの内容及び前記値レジスタの内容と論理的に組み合わせる、組み合わせロジック手段とを含む、請求項１乃至請求項９のいずれかに記載のハードウェア装置。
【請求項１１】
未使用命令または使用頻度の低い命令を置き換えることによっていくつかのプログラマブル命令を定義でき、該置き換えは、前記レジスタ・ブロックの特定のコードに応答して前記判断ブロックの前記マスク・レジスタと前記値レジスタの内容を変更することによって達成される、請求項１０記載のハードウェア装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはデータ処理システムのマイクロ命令の処理にもとづく命令の実行に関し、特に決定したマイクロ命令のセットを使ってプログラマブル命令を実行するハードウェア装置に関する。
【０００２】
【従来の技術】
初期のコンピュータはメモリが少なかった。従って、１９６０年代には、コンピュータの性能を最大にするため、必要なメモリを少なくしようと複合命令セット（ＣＩＳＣ）が使用された。その結果、プログラムが使用するコンピュータ・メモリが少なくなり、処理のため、より多くの情報を検索できたので効率が向上した。
【０００３】
当時、メモリ・サブシステムはＣＰＵよりもかなり低速だった。１つの複合命令が複数の単純命令をカプセル化した場合、メモリから命令を検索する時間は短縮された。これは、コンピュータの順次性が高い限りは重要なことだった。命令は、コンピュータが処理のためメモリから別の命令を検索する前に完了する必要があった。
【０００４】
ＣＩＳＣのもう１つの要はマイクロコードだった。マイクロコードは、基本的には、命令とコンピュータの電子系との間の変換層として機能した。マイクロコードは、コンピュータ・アーキテクチャにとって恵みだった。新しい電子回路を設計する必要なく新しいタイプの機械命令を簡単に追加できたからである。アーキテクチャ・ファミリ、つまり同じ命令セットを共有するコンピュータ群を設計できた。
【０００５】
マイクロプログラミングの結果、前記の他、ＣＰＵとメモリ間のトラフィックが減少した。データ・パスで命令の量が減り、パスを移動するデータ量を増やすことができた。
【０００６】
しかし、ＣＩＳＣデータ処理システムには、プログラマとコンパイラの両方が複合命令をわずかな割合でしか使用しないという欠点があった。これらの複合命令はどれも、単純命令よりもかなり多いトランジスタをチップに必要とするためシリコン・チップが大きくなる。
【０００７】
１９７０年代の終わり、半導体技術の進歩により、メイン・メモリとプロセッサ・チップ間の速度差が減少した。メモリ速度が上がり、高級言語がアセンブリ言語に取って代わると、ＣＩＳＣの主なメリットは消え始め、コンピュータ設計者は、ただ高速なハードウェアを作るだけではなく、コンピュータの性能を最適化する方法を模索し始めた。
【０００８】
設計者の発見の１つは、単純命令のシーケンスによる結果は複合命令のシーケンスによる結果と同じであるが、単純命令のシーケンスは比較的簡単な（そして高速な）ハードウェア設計で実装できるという点だった。縮小命令セット・コンピューティング（ＲＩＳＣ）が登場した。ＲＩＳＣマシンでは、単純で基本的な命令だけが命令セットに含まれ、そこからより複雑な命令すなわち複合命令を構成できる。各命令の長さは同じなので１回の操作でフェッチできる。ほとんどの命令が１マシン・サイクルで完了するので、プロセッサは同時に複数の命令を処理できる。このパイプライン処理はＲＩＳＣマシンを高速にするための主な手法である。
【０００９】
その結果、ＲＩＳＣコンパイラは、ＣＩＳＣコンピュータでハードウェアにより実行されている複合命令を実行するためにソフトウェア・ルーチンを生成する必要がある。ＲＩＳＣは、ＣＩＳＣのように完全な命令セットを持っているわけではないので、最適化したＣＩＳＣ命令に比べて長いコードを書く必要があり、最適化の度合いが低い命令シーケンスが必要になる。言い換えると、ＲＩＳＣは必ずしも全てのプログラムに適しているわけではない。頻繁に使用される複合命令の数が少ない場合は特にそうである。
【００１０】
【発明が解決しようとする課題】
本発明の目的は、各プログラムの必要によりよく応え、必要な場合には単純命令を使用でき、最も頻繁に使用される基本命令シーケンスに適合するより複雑な命令を使用できる命令セットを処理するハードウェア装置を提供することである。
【００１１】
本発明の他の目的は、一定限度のマイクロ命令セットから選択されたマイクロ命令のシーケンスを実行できるプログラマブル命令を処理するハードウェア装置を提供することである。
【００１２】
【課題を解決するための手段】
従って本発明は、フォーマットが同じで、命令の実行ステップを定義する命令コード・フィールドを持つプログラマブル命令セットのうち決定した命令の並列処理用ハードウェア装置に関係する。実行ステップはそれぞれ、複数のマイクロ命令から選択されるマイクロ命令に対応する。この装置は、それぞれプログラマブル命令セットの特定の命令に関連付けられ、決定命令を実行するために処理するマイクロ命令を定義するため、決定命令により１つだけが選択される複数の判断ブロックと、特定のマイクロ命令を実行するためそれぞれ判断ブロックに関連付けられ、選択された判断ブロックに関連付けられたものだけが起動されて特定のマイクロ命令を実行する複数の起動ブロックと、各起動ブロックに接続され、決定命令の命令コード・フィールドの内容に応答して複数のマイクロ命令から特定のマイクロ命令を選択するマイクロ命令選択ブロックとを含む。
【００１３】
【発明の実施の形態】
本発明の主な考え方は、命令セットから、最も頻繁に使用される命令及び命令シーケンスをアセンブルするプログラムのプログラマブル命令として使用するに適した命令のグループを選択することである。この選択は、この目的のため予約される一定範囲の命令に対して行え、或いはまた、未使用もしくはあまり使用されない命令をより適した命令に置き換えることによる場合もある。プログラマブル命令はそれぞれ縮小マイクロ命令セットに取り入れるマイクロ命令のシーケンスである。
【００１４】
本発明で考慮する各命令は、８ビットの命令コード・フィールドを含む、つまり、命令セットは２５６個の命令を含むと仮定する。これらの命令のうち、一部のみプログラマブルとし、他はプログラマブルとしないことが望ましい。従って、例えば、値が００００００００から１１０１１１１１までの間の命令コード・フィールドを持つ命令を定義済みとし、値が１１１０００００から１１１１１１１１までの間の命令コード・フィールドを持つ命令はプログラマブルと仮定することができる。
【００１５】
図１に示す本発明に従ったハードウェア装置では、実行する命令をロードするため命令レジスタ１０を使用する。ｎ個の命令からなる命令グループの各命令は、ｎ個の命令にそれぞれ関連付けられたｎ個の判断ブロックのうち１つの判断ブロック１２、１４、１６、１８または２０によりデコードする。判断ブロック１２乃至２０それぞれの出力は、ｎ個の起動ブロック２２、２４、２６、２８、３０内の対応する１つの起動ブロックに供給される。起動ブロック２２乃至３０の出力は、レジスタ１０にロードされた命令に関連付けられた判断ブロックに対応する起動ブロックの”１”出力を除いて、全て０である。
【００１６】
次に、対応する判断ブロックから１を受け取る起動ブロックは、デコードされた命令の実行時に実行する必要のあるマイクロ命令３２、３４、３６、３８、４０、４２、４４のいずれかまたはいくつかを起動する。例えば図１のマイクロ命令の数は７である。一般的な形では、マイクロ命令の数は、命令の命令コード・フィールドによって決まるかなり重要な組み合わせの数が定義される限りは、例えば６４以下に減らされる。
【００１７】
後述する通り、マイクロ命令選択ブロック４６は、命令コード・フィールドの内容に応答して実行する必要のある特定のマイクロ命令を選択するために使用する。また、レジスタ・ブロック４８は、命令の命令コード・フィールドにより定義される制御ビットを記憶するため使用する。制御ビットは、後述するように、選択された起動ブロック及びマイクロ命令選択ブロック４６をプログラマブル命令に従って制御できるようにする。
【００１８】
判断ブロック１２、１４、１６、１８または２０はそれぞれ、次に図２を参照して説明するように、関連付けられた命令に従って構成されるハードウェア装置である。このような構成は、マスク・レジスタ５０と値レジスタ５２を使用して行う。命令レジスタ１０と同じ長さのマスク・レジスタ５０は、命令の実行には無関係なビットをマスクするため使用するビットを含む。これらのビットは、全てデータ・ビットであり、命令コード・ビットではないが、当該命令には使用できない命令コード・ビットを含んでいてもよい。従って、８ビット比較と１６ビット比較の命令は同様であるが、命令コードの８ビットは、８ビット比較には使用できず、マスクすることができる。その場合、１つのマスクで複数の命令を表すことができるので、マスクにより判断ブロック数を減らすことができる。好適実施例では、マスクとして使用するビットは１に設定し、命令コード・フィールドの関係ビットに対応する他のビットは０に設定する。マスク・レジスタの各ビットは、ＯＲ回路５４（１つの回路にのみ符号を付してある）で、命令レジスタ１０にロードされた命令の対応ビットと論理的に組み合わせる。つまり、命令の命令コード・フィールドの有用なビットのみがそれらの正しい値を維持し、マスク・レジスタ５０のマスキング・ビットに対応する他のビットは全て１に設定する。
【００１９】
命令レジスタ１０と同じ長さの値レジスタ５２は、命令の命令コード・フィールドの有用なビットと同じビットを含み、命令コード・フィールドの無用なビット及び他のデータ・フィールドのビットに対しては１に設定する。値レジスタ５２の各ビットは、ＸＯＲ回路５６（１つの回路にのみ符号を付してある）で、命令の対応ビットと関連付けられるＯＲ回路により与えられる対応ビットと論理的に組み合わせる。次に、ＸＯＲ回路により供給される全てのビットをＮＯＲ回路５８で論理的に組み合わせる。つまり、ＮＯＲ回路の出力ライン６０は、ＸＯＲ回路の出力が全て０の場合にのみ１になる。つまりこれは、ＯＲ回路の出力のビット・シーケンスが値レジスタ５２にロードされたビットのシーケンスと同じときである。言い換えると判断ブロック１２の出力ライン６０は、このブロックが命令レジスタ１０にロードされた命令に従って構成された場合にのみ１である。
【００２０】
関係する命令の決定は、好適には図２に関して説明した判断ブロックを使って実現するが、他のデコード機構を使用することも可能である。従って、命令コードの基本的なデコードだけで、実行するマイクロ命令を識別／選択するには充分である。
【００２１】
１例として、プログラマブル命令セットに、ある範囲が定義されている場合、最初のデコードでこの範囲を識別する。これはコンピュータ論理設計では周知のチップ・セレクト（ＣＳ）・リードに対応する。また、この範囲内の有意ビットの別のデコードを行い、各命令を選択する。論理ＡＮＤ、ＯＲ及び反転ゲートを使用した同等の設計も採用できる。その場合、各判断ブロックは、このデコーダの各出力と、範囲をデコードするＣＳリードとのＡＮＤである。プログラマブル命令の命令コードがある場合、１つのデコーダ出力だけが有効なため、この命令コードを識別／選択する判断ブロックは１つだけである。デコードされる命令コードがプログラマブル範囲内ではない場合、ＣＳは立ち上がらず、どのセレクタ・ブロックも起動しない。
【００２２】
前記の例では、命令コードの５ビットがプログラマブルであり、その結果、３２個のプログラマブル命令のサブセットが得られると仮定している。このサブセットは８グループの命令に分けることができ、それらのグループは３ビットにより定義され、各グループが２ビットで定義される４個の命令を持つことができる。この例の場合、グループは、グループの命令により起動できるマイクロ命令を決定し、命令は、これらのマイクロ命令のうち、実行されるマイクロ命令と実行順序（並列または順次）を決定する。
【００２３】
グループに使用できるマイクロ命令が６４個のマイクロ命令のグローバル・セットから取られるとすると、好適な方法は、マイクロ命令のアソシエーションを予め定義しておくことである。８ビットの選択コードでは、そのようなマイクロ命令のアソシエーションを２５６定義できる。これらアソシエーションの数はより重要になることがあり、よって選択コードのビット数が増える可能性がある。
【００２４】
３個のマイクロ命令のアソシエーションを１つのグループに割当てるとすると、グループの各命令について、これら３つのマイクロ命令のうち使用するマイクロ命令とその順序を決定する実行コードを定義する必要がある。その場合の実行機能を以下に示す。
１：マイクロ命令１、２及び３を並列実行
２：マイクロ命令１、２を並列実行、３は実行しない
３：マイクロ命令１、３を並列実行、２は実行しない
４：マイクロ命令２、３を並列実行、１は実行しない
５：マイクロ命令１を実行、２及び３は実行しない
６：マイクロ命令２を実行、１及び３は実行しない
７：マイクロ命令３を実行、１及び２は実行しない
８：マイクロ命令１、２及び３を順次実行
９：マイクロ命令２、１及び３を順次実行
１０：マイクロ命令２、３及び１を順次実行
１１：マイクロ命令３、２及び１を順次実行
１２：マイクロ命令３、１及び２を順次実行
１３：マイクロ命令１、３及び２を順次実行
１４：マイクロ命令１、２を順次実行、３は実行しない
１５：マイクロ命令１、３を順次実行、２は実行しない
１６：マイクロ命令２、３を順次実行、１は実行しない
１７：マイクロ命令２、１を順次実行、３は実行しない
１８：マイクロ命令３、１を順次実行、２は実行しない
１９：マイクロ命令３、２を順次実行、１は実行しない
２０：マイクロ命令１、２を並列実行、３はその後
２１：マイクロ命令１、３を並列実行、２はその後
２２：マイクロ命令２、３を並列実行、１はその後
２３：マイクロ命令３を最初に、次に１、２を並列実行
２４：マイクロ命令２を最初に、次に１、３を並列実行
２５：マイクロ命令１を最初に、次に２、３を並列実行
【００２５】
従って、グループの各命令には５ビットの実行コードで充分である。もちろん、グループに使用するマイクロ命令が増えれば、実行コードに５ビットを超えるビット数が必要になることがある。
【００２６】
ここで図３を参照し、マイクロ命令セットのうち３つのマイクロ命令を起動する起動ブロック２２乃至３０の好適実施例について説明する。
【００２７】
この例では、各グループに８ビット（選択コード）と４×５ビット（実行コード）計２８ビットが必要である。従って、命令の命令コード・フィールドの３ビットにより８つのグループが定義されるので、レジスタ・ブロックに必要な最小容量は２８×８＝２２４ビットである。しかしレジスタ・ブロックの容量は、使用されるマイクロ命令の数、マイクロ命令のアソシエーションの数、プログラマブル命令の数、及びプログラマブル命令のグループ数に合わせなければならないことは明らかである。
【００２８】
命令コードのサブフィールドによりプログラマブル命令を定義する他に、未使用または使用頻度の低い命令を置き換えることでいくつかのプログラマブル命令を定義できる。プログラマブル命令によるこの置き換えは、レジスタ・ブロック４８の特定のコードに応答して判断ブロックのマスク・レジスタ５０と値レジスタ５２（図２参照）の内容を変更することによって達成する。
【００２９】
図３に戻る。実行コード（５ビット）は、起動ブロックの制御ロジック６２により、出力Ｍ１、Ｍ２、Ｍ３、及び１Ｌ２、１Ｌ３、２Ｌ３、２Ｌ１、３Ｌ１、３Ｌ２を設定するため使用する。Ｍ１、Ｍ２、Ｍ３は、起動するマイクロ命令を定義し、Ｍ１はマイクロ命令１（３６）に、Ｍ２はマイクロ命令２（３２）に、Ｍ３はマイクロ命令３（３４）に対応する。下部出力ｍＬｎは、これらマイクロ命令の起動順序を決定する。ｍとｎが１、２または３のｍＬｎは、マイクロ命令ｍがマイクロ命令ｎの完了後にのみ実行されることを示す。
【００３０】
簡単のため、後述するマイクロ命令選択ブロック４６は破線で示してある。同様に起動ブロック２２とマイクロ命令の接続ラインは、接続の詳細なしに破線で示してある。
【００３１】
例の中では、３つのマイクロ命令しか実行されないが、実行するマイクロ命令の数を変えることは可能である。一般的な形では、命令数がｉのとき、制御ロジック６２の出力はＭ１、Ｍ２、・・・Ｍｉであり、下部出力ｍＬｎの数はｉ×（ｉ−１）に等しい。Ｍ出力のそれぞれは、対応するマイクロ命令のマスクであり、１はマイクロ命令を選択し、０はマイクロ命令を無効にする。
【００３２】
前記の制御ロジック６２の実施例によると、図３に示す論理回路ＡＮＤ、ＯＲの組み合わせを実装する方法は自明である。しかし、これも当業者にとっては明らかなように、そのような回路を別のハードウェア・ロジックで置き換えても同じ結果が得られる。
【００３３】
各マイクロ命令ブロック３２、３４または３６には、１に設定されたときマイクロ命令を起動するため使用する入力ラインと、マイクロ命令の実行完了時にのみ１に設定される出力ラインがあることに注意されたい。
【００３４】
マイクロ命令１、２のみを実行し、マイクロ命令２はマイクロ命令１の完了後に実行するとすると、制御ロジック出力のバイナリ値は以下のように設定される。
Ｍ１→１
Ｍ２→１
Ｍ３→０
１Ｌ２→１
１Ｌ３→１
２Ｌ３→１
２Ｌ１→０
３Ｌ１→１
３Ｌ２→１
【００３５】
再び図３を参照する。１Ｌ３と１Ｌ２は１に設定され、ＡＮＤ回路６４の２つの入力（ＯＲ回路）は１に設定され、ＡＮＤ回路６４は出力１をＡＮＤ回路６６に与える。図３の起動ブロック２２が選択されるので、判断ブロック１２からの入力（図２参照）は１に設定される。ＡＮＤ回路６６の第３入力Ｍ１も１で、ＡＮＤ回路６６はその出力ライン６８でビット１を与え、マイクロ命令１が起動される。
【００３６】
逆に、ＡＮＤ回路７０の第１入力は（２Ｌ３により）１に設定されるが、第２入力は０である。その２つの入力のうち２Ｌ１は０に設定され、マイクロ命令１は、完了していない限りはその出力ライン７２にビット０を与えるからである。マイクロ命令１は、完了するとすぐに出力ライン７２にビット１を与え、ＡＮＤ回路７０の２つの入力は１に設定される。従って、ＡＮＤ回路７０の出力は１に設定される。ＡＮＤ回路７４の３つの入力は、Ｍ２出力が１なので１に設定され、出力ライン７６に１を与え、これによりマイクロ命令２が起動する。
【００３７】
マイクロ命令３を考える限り、これが起動することはない。実際、ＡＮＤ回路７８の入力Ｍ３は制御ロジック６２により０に設定される。従ってＡＮＤ回路７８の出力ライン８０（マイクロ命令３の起動ライン）は常に０である。
【００３８】
ここで図４を参照し、複数のマイクロ命令のうちの命令により使用する特定のマイクロ命令を選択するため起動ブロックそれぞれに接続されるマイクロ命令選択ブロック４６（図１参照）について説明する。
【００３９】
先に述べた通り、レジスタ・ブロック４８は、命令の命令コード・フィールドにより定義される制御ビット、特に、命令に使用するマイクロ命令を定義するため命令の各グループに関連付けられる選択コードを記憶するのに使用する。マイクロ命令のアソシエーションが２５６あるとすると、各選択コードは８ビットを含む。先に定義したように、命令グループが８つある場合（命令コードの３ビットで定義される）、マイクロ命令選択ブロック４６を制御するのに８つの選択コード８２、８４が必要である。
【００４０】
マイクロ命令選択ブロック４６は、基本的には、それぞれが起動ブロックのそれぞれに関連付けられるセレクタ８６、８８または９０で構成する。図４に示すように、セレクタ８６は起動ブロック２２に、セレクタ８８は起動ブロック２４に、セレクタ９０は起動ブロック３０にそれぞれ関連付けられる。
【００４１】
各マイクロ命令セレクタ８６、８８または９０は、入力数×出力数分の論理組み合わせ回路を含む。この回路は、入力と出力の各カップルについて選択コードと、関連付けられた起動ブロックからの接続とを入力として使用し、ＯＲ回路９２を介して対応するマイクロ命令に対して１つの出力を持つ。組み合わせ回路の出力は、選択コードからの入力が起動される毎に、つまり、この入力をこの出力にマップするよう定義している全ての選択コードについて、１に設定される。選択コードの他の値については、出力は０に設定される。例えば、選択コード８ビットで２５６のケースを定義するとき、１０のケースのみで、起動ブロック２（２４）の出力１に関連付けるマイクロ命令４（３８）を定義することができる。
【００４２】
４つの命令のグループが８つ、つまりｎ＝３２で、それぞれ３２のセレクタに関連付けられた３２の起動ブロックがあると仮定する。また、選択コードは、選択コード８２がセレクタ８６（１）、セレクタ８８（２）、．．．を制御するというように、４つのセレクタを制御する。
【００４３】
図４に示した例の場合、７つのマイクロ命令のうち３つのマイクロ命令が起動され、よって起動ブロックと、マイクロ命令選択ブロック４６内の起動ブロックに関連付けられたセレクタの間に３つの両方向接続ラインが必要になる。各セレクタの出力ラインは、ＯＲ回路を介して選択されたマイクロ命令に直接接続されることはない。各セレクタは、レジスタ・ブロック４８の選択コードに応じて各マイクロ命令を起動するからである。従って、セレクタ１乃至ｎの全ての出力は、各マイクロ命令についてＯＲ回路９２等のＯＲ回路で組み合わせられる。反対の方向のとき、つまり各マイクロ命令ブロックからセレクタに向かうとき、マイクロ命令ブロックからのラインは１に設定され、それが選択コードによって定義されるセレクタによってのみ直接認識されるため、接続ラインを総合する必要はない。従って、各マイクロ命令の出力は全てのセレクタに直接接続され、各セレクタは、出力ライン（ＯＲ回路を介して）と入力ライン（直接に）の２つの接続ラインにより各マイクロ命令に接続される。
【００４４】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４５】
（１）フォーマットが同じで、マイクロ命令の実行に対応する命令のうち決定した命令の実行ステップを定義する命令コード・フィールドを持つプログラマブル命令セットの該決定命令を並列処理するハードウェア装置であって、該実行ステップはそれぞれ複数のマイクロ命令から選択されるマイクロ命令に対応し、該装置は、
それぞれ前記プログラマブル命令セットの特定の命令に関連付けられ、前記決定命令を実行するために処理するマイクロ命令を定義するため、前記決定命令によって１つだけが選択される、複数の判断ブロックと、
特定のマイクロ命令を実行するためそれぞれ前記判断ブロックに関連付けられ、前記選択された判断ブロックに関連付けられたものだけが起動されて該特定のマイクロ命令を実行する、複数の起動ブロックと
前記起動ブロックのそれぞれに接続され、前記決定命令の前記命令コード・フィールドの内容に応じて、前記複数のマイクロ命令から前記特定のマイクロ命令を選択するマイクロ命令選択ブロックと、
を含む、ハードウェア装置。
（２）前記特定のマイクロ命令を選択する選択コードと、前記特定のマイクロ命令のうち実行する必要のある命令及び実行順序を定義する実行コードとを記憶するレジスタ・ブロックを含む、前記（１）記載のハードウェア装置。
（３）前記起動ブロックはそれぞれ前記レジスタ・ブロックの前記実行コードに応答する制御ロジックを含み、前記選択された判断ブロックに関連付けられた前記起動ブロックは、前記実行コード及び前記判断ブロックに応答して、前記特定のマイクロ命令のうち実行するマイクロ命令を選択する第１制御信号及び実行すべき各マイクロ命令と事前に完了すべき前のマイクロ命令とを決定する第２制御信号を与える、前記（２）記載のハードウェア装置。
（４）前記起動ブロックは、前記特定のマイクロ命令のそれぞれに関連付けられたＡＮＤ回路とロジック回路とを含む、組み合わせロジックを含み、該ＡＮＤ回路の出力は、前記起動ブロックに関連付けられた前記判断ブロックが起動され、前記マイクロ命令を選択する前記制御信号がアクティブであり、且つ前記前のマイクロ命令が完了しているときに、前記関連付けられたマイクロ命令を起動するため１に設定される、前記（３）記載のハードウェア装置。
（５）前記マイクロ命令選択ブロックは、それぞれ前記起動ブロックのそれぞれに関連付けられた複数のマイクロ命令セレクタを含み、各マイクロ命令セレクタは、前記選択コードに応答して、前記関連付けられた起動ブロックを前記特定のマイクロ命令に接続する、前記（２）乃至（４）のいずれかに記載のハードウェア装置。
（６）前記マイクロ命令セレクタはそれぞれ、前記関連付けられた起動ブロックを各マイクロ命令に接続する接続手段を含み、前記選択コードに応答して前記特定のマイクロ命令との接続のみ起動する、前記（５）記載のハードウェア装置。
（７）前記マイクロ命令セレクタの前記接続手段は、前記選択コードに応答して選択されている各マイクロ命令を起動する手段と、前記選択されたマイクロ命令が完了したときに前記選択されたマイクロ命令を前記関連付けられた起動ブロックに接続する手段を含む、前記（６）記載のハードウェア装置。
（８）前記プログラマブル命令セットは、複数の命令のうちの第１命令セットであり、該複数の命令は非プログラマブル命令の第２セットをも含み、前記プログラマブル命令セットは、前記命令コード・フィールドのサブフィールドによって定義される、前記（２）乃至（７）のいずれかに記載のハードウェア装置。
（９）前記命令コード・フィールドの前記サブフィールドは、前記複数のマイクロ命令のうち特定のマイクロ命令のグループにそれぞれ関連付けられ、前記レジスタ・ブロックに記憶された１つの選択コードにそれぞれ関連付けられる命令グループを定義する第１部と、前記命令グループのうちの、それぞれ前記レジスタ・ブロックの１つの実行コードに関連付けられ、前記選択コードによって選択される特定のマイクロ命令のグループのうち起動するマイクロ命令及びその起動順序を定義する前記決定命令を定義する第２部とを含む、前記（８）記載のハードウェア装置。
（１０）前記判断ブロックはそれぞれ、前記決定命令と同じ長さであり、命令コード・フィールド以外のフィールドのビットをマスクするマスクを含むマスク・レジスタと、前記決定命令と同じ長さであり、前記命令コード・フィールドに対応し前記命令コード・フィールドと同じ定義済み部分で構成される値を含む値レジスタと、前記決定命令が前記判断ブロックに関連付けられた前記特定の命令であるときにのみ前記判断ブロックの出力が１になるよう前記決定命令を前記マスク・レジスタの内容及び前記値レジスタの内容と論理的に組み合わせる、組み合わせロジック手段とを含む、前記（１）乃至（９）のいずれかに記載のハードウェア装置。
（１１）未使用命令または使用頻度の低い命令を置き換えることによっていくつかのプログラマブル命令を定義でき、該置き換えは、前記レジスタ・ブロックの特定のコードに応答して前記判断ブロックの前記マスク・レジスタと前記値レジスタの内容を変更することによって達成される、前記（１０）記載のハードウェア装置。
【図面の簡単な説明】
【図１】本発明に従った装置の好適実施例を示す図である。
【図２】本発明に従った装置の判断ブロックの好適実施例を示す図である。
【図３】本発明に従った装置の起動ブロックの基本的好適実施例を示す図である。
【図４】本発明に従った装置のマイクロ命令選択ブロックの基本的好適実施例を示す図である。
【符号の説明】
１０  命令レジスタ
１２、１４、１６、１８、２０  判断ブロック
２２、２４、２６、２８、３０  起動ブロック
３２、３４、３６、３８、４０、４２、４４  マイクロ命令
４６  マイクロ命令選択ブロック
４８  レジスタ・ブロック
５０  マスク・レジスタ
５２  値レジスタ
５４、９２  ＯＲ回路
５６  ＸＯＲ回路
５８  ＮＯＲ回路
６０、６８、７２、７６、８０  出力ライン
６２  制御ロジック
６４、６６、７０、７４、７８  ＡＮＤ回路
８６、８８、９０  セレクタ
【図１】
0003578267.tif 000002
【図２】
0003578267.tif 000003
【図３】
0003578267.tif 000004
【図４】
0003578267.tif 000005