(57)【要約】【課題】異なるデータ処理オペレーションを独立して並列に実行する複数のデータ経路構成要素２、４、６、８を含むプロセッサを開示する。【解決手段】プログラム命令１８が与えられると、その命令を復号してデータ経路構成要素を制御する制御信号を発生する。複数の命令セットは、異なる命令セットの異なる命令の中で異なって符号化される同一データ経路構成要素が実行する同一データ処理オペレーションによってサポートされる。この動作により、並列処理を期待できない場合はコードが圧縮され、並列動作が可能な場合は、完全な並列動作が指定される。【選択図】図４
2005332361.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令の中の１つまたは複数の命令フィールドを復号して少なくともいくつかの制御信号を発生するように動作可能な命令復号器と、
前記制御信号に応答し、前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを独立して並列に実行する複数のデータ経路構成要素であって、前記命令復号器によって復号された少なくともいくつかのプログラム命令は、それぞれのデータ経路構成要素のための制御命令が独立に指定されることを可能にする前記複数のデータ経路構成要素と
を含み、
前記命令復号器は、データ経路構成要素によって実行されるべき所与のデータ処理オペレーションが、異なるプログラム命令において異なって符号化された命令フィールドを使用して指定されうるように動作可能であるデータ処理装置。
【請求項２】
請求項１に記載の装置において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中に異なるビット長を有する前記装置。
【請求項３】
請求項１に記載の装置において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中に異なるビット位置を有する前記装置。
【請求項４】
請求項１に記載の装置において、前記プログラム命令は複数の命令セットに分割され、前記命令復号器は、プログラム命令の中のフィールドを識別する少なくともある命令セットに応答して、前記プログラム命令の中のどのビットが、どのデータ経路構成要素に対する命令フィールドに対応するかを制御する前記装置。
【請求項５】
請求項１に記載の装置において、前記プログラム命令は、可変プログラム命令長を有し、前記命令復号器は、前記命令セット識別子に応答してプログラム命令のプログラム命令長を決定する前記装置。
【請求項６】
請求項１に記載の装置において、前記異なって符号化された命令フィールドは、前記データ経路構成要素によって実行されうるデータ処理オペレーションの異なるセットを表すように動作可能である前記装置。
【請求項７】
請求項６に記載の装置において、プログラム命令の中の前記異なって符号化された命令フィールドの少なくとも１つは、異なるプログラム命令の中の前記異なって符号化された命令フィールドの異なる１つによって表されうるデータ処理オペレーションのサブセットを表すように動作可能である前記装置。
【請求項８】
請求項７に記載の装置において、前記サブセットは、データ処理オペレーションの前記最大のセットと比較して減少したオペランド範囲を有する前記装置。
【請求項９】
請求項８に記載の装置において、前記オペランド範囲は、
レジスタ指定子と、
プログラムの中の実行点におけるジャンプを表すジャンプアドレス指定子と、
アラインメント指定子と、
即値と、
の中の１つである前記装置。
【請求項１０】
請求項１に記載の装置において、プログラム命令自身の中の少なくとも１つの命令フィールドが、前記複数のデータ経路構成要素のうちのどれが前記少なくとも１つの命令フィールドによって制御されるかを指定する前記装置。
【請求項１１】
請求項１に記載の装置において、異なるプログラム命令に応答して、前記複数のデータ経路構成要素の可変個数のデータ経路構成要素が、アクティブであるかまたは非アクティブである前記装置。
【請求項１２】
請求項１１に記載の装置において、所与のデータ経路構成要素に対して、データ処理オペレーションが指定されていないかまたはペンディングになっている場合、前記所与のデータ経路構成要素は非アクティブであり、Ｎｏｐオペレーションを行なう前記装置。
【請求項１３】
請求項５に記載の装置であって、前記プログラム命令を格納するように動作可能であるとともに固定長メモリアクセスで可読な命令メモリを含む前記装置。
【請求項１４】
請求項１３に記載の装置において、固定長メモリアクセスは、複数のプログラム命令の少なくともいくつかの部分を含む前記装置。
【請求項１５】
請求項１４に記載の装置であって、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能なローテータとプログラムカウンタ増分器（ｉｎｃｒｅｍｅｎｔｅｒ）とを含む前記装置。
【請求項１６】
請求項５に記載の装置であって、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能なローテータとプログラムカウンタ増分器とを含み、前記ローテータは、前記命令セット識別子に応答して、前記プログラム命令を揃えるためにいかなる回転を与えるべきかを決定する前記装置。
【請求項１７】
プログラム命令の中の１つまたは複数の命令フィールドを復号して少なくともいくつかの制御信号を発生するステップと、
前記制御信号に応答して複数のデータ経路構成要素を制御し、前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを並列に独立して実行し、少なくともいくつかのプログラム命令はそれぞれの各データ経路構成要素に対する制御信号が独立して指定されることを可能にするステップと
を含み、
データ経路構成要素によって行なわれる所与のデータ処理オペレーションは、異なるプログラム命令の中で異なって符号化された命令フィールドを使用して指定されうる方法。
【請求項１８】
請求項１７に記載の方法において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中に異なるビット長を有する前記方法。
【請求項１９】
請求項１７に記載の方法において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中に異なるビット位置を有する前記方法。
【請求項２０】
請求項１７に記載の方法において、前記プログラム命令は複数の命令セットに分割され、前記命令復号器は、プログラム命令の中のフィールドを識別する少なくともある命令セットに応答して、前記プログラム命令の中のどのビットが、どのデータ経路構成要素に対する命令フィールドに対応するかを制御する前記方法。
【請求項２１】
請求項１７に記載の方法において、前記プログラム命令は可変プログラム命令長を有し、前記命令復号器は、前記命令セット識別子に応答してプログラム命令のプログラム命令長を決定する前記方法。
【請求項２２】
請求項１７に記載の方法において、前記異なって符号化された命令フィールドは、前記データ経路構成要素によって実行されうるデータ処理オペレーションの異なるセットを表すように動作可能である前記方法。
【請求項２３】
請求項２２に記載の方法において、プログラム命令の中の少なくとも１つの前記異なって符号化された命令フィールドは、異なるプログラム命令の中の前記異なって符号化された命令フィールドの異なる１つによって表されうるデータ処理オペレーションのサブセットを表すように動作可能である前記方法。
【請求項２４】
請求項２３に記載の方法において、前記サブセットは、データ処理オペレーションの前記最大のセットと比較して減少したオペランド範囲を有する前記方法。
【請求項２５】
請求項２４に記載の方法において、前記オペランド範囲は、
レジスタ指定子と、
プログラムの中の実行点におけるジャンプを表すジャンプアドレス指定子と、
アラインメント指定子と、
即値と、
の中の１つである前記方法。
【請求項２６】
請求項１７に記載の方法において、プログラム命令自身の中の少なくとも１つの命令フィールドが、前記複数のデータ経路構成要素のうちのどれが前記少なくとも１つの命令フィールドによって制御されるかを指定する前記方法。
【請求項２７】
請求項１７に記載の方法において、異なるプログラム命令に応答して、前記複数のデータ経路構成要素の可変個数のデータ経路構成要素が、アクティブであるかまたは非アクティブである前記方法。
【請求項２８】
請求項２７に記載の方法において、所与のデータ経路構成要素に対してデータ処理オペレーションが指定されていないかまたはペンディングになっている場合、前記所与のデータ経路構成要素は非アクティブでありＮｏｐオペレーションを実行する前記方法。
【請求項２９】
請求項２１に記載の方法において、命令メモリは、前記プログラム命令を格納するように動作可能であるとともに固定長メモリアクセスで可読である前記方法。
【請求項３０】
請求項２９に記載の方法において、固定長メモリアクセスは、複数のプログラム命令の少なくともいくつかの部分を含む前記方法。
【請求項３１】
請求項３０に記載の方法において、ローテータとプログラムカウンタ増分器とは、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能である前記方法。
【請求項３２】
請求項２１に記載の方法において、ローテータとプログラムカウンタ増分器とは、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能であり、前記ローテータは、前記命令セット識別子に応答して、前記プログラム命令を揃えるためにいかなる回転を与えるべきかを決定する前記方法。
【請求項３３】
プログラム命令の中の１つまたは複数の命令フィールドを復号して、少なくともいくつかの制御信号を発生するように動作可能な命令復号器と、前記制御信号に応答して前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを独立して並列に実行する複数のデータ経路構成要素とを有するデータ処理装置を制御するコンピュータプログラム製品であって、
第１の符号化が、データ経路構成要素によって行なわれる所与のデータ処理オペレーションを指定する、符号化された命令フィールドを含む少なくとも１つのプログラム命令と、
前記第１の符号化とは異なる第２の符号化が、前記データ経路構成要素によって行なわれる前記所与のデータ処理オペレーションを指定する、異なって符号化された命令フィールドを含む少なくとも１つの異なるプログラム命令と
を含むコンピュータプログラム製品。
【請求項３４】
請求項３３に記載のコンピュータプログラム製品において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中の異なるビット長を有する前記コンピュータプログラム製品。
【請求項３５】
請求項３３に記載のコンピュータプログラム製品において、前記データ処理オペレーションを表す前記異なって符号化された命令フィールドは、前記異なるプログラム命令の中に異なるビット位置を有する前記コンピュータプログラム製品。
【請求項３６】
請求項３３に記載のコンピュータプログラム製品において、前記プログラム命令は複数の命令セットに分割され、前記命令復号器は、プログラム命令の中のフィールドを識別する少なくともある命令セットに応答して、前記プログラム命令の中のどのビットが、どのデータ経路構成要素に対する命令フィールドに対応するかを制御する前記コンピュータプログラム製品。
【請求項３７】
請求項３３に記載のコンピュータプログラム製品において、前記プログラム命令は、可変プログラム命令長を有し、前記命令復号器は、前記命令セット識別子に応答してプログラム命令のプログラム命令長を決定する前記コンピュータプログラム製品。
【請求項３８】
請求項３３に記載のコンピュータプログラム製品において、前記異なって符号化された命令フィールドは、前記データ経路構成要素によって実行されうるデータ処理オペレーションの異なるセットを表すように動作可能である前記コンピュータプログラム製品。
【請求項３９】
請求項３８に記載のコンピュータプログラム製品において、プログラム命令の中の前記異なって符号化された命令フィールドの少なくとも１つは、異なるプログラム命令の中の前記異なって符号化された命令フィールドの異なる１つによって表されうるデータ処理オペレーションのサブセットを表すように動作可能である前記コンピュータプログラム製品。
【請求項４０】
請求項３９に記載のコンピュータプログラム製品において、前記サブセットは、データ処理オペレーションの前記最大のセットと比較して減少したオペランド範囲を有する前記コンピュータプログラム製品。
【請求項４１】
請求項４０に記載のコンピュータプログラム製品において、前記オペランド範囲は、
レジスタ指定子と、
プログラムの中の実行点におけるジャンプを表すジャンプアドレス指定子と、
アラインメント指定子と、
即値と、
の中の１つである前記コンピュータプログラム製品。
【請求項４２】
請求項３３に記載のコンピュータプログラム製品において、プログラム命令自身の中の少なくとも１つの命令フィールドが、前記複数のデータ経路構成要素のうち、どれが前記少なくとも１つの命令フィールドによって制御されるかを指定する前記コンピュータプログラム製品。
【請求項４３】
請求項３３に記載のコンピュータプログラム製品において、異なるプログラム命令に応答して、前記複数のデータ経路構成要素のうちの可変個数のデータ経路構成要素が、アクティブであるかまたは非アクティブである前記コンピュータプログラム製品。
【請求項４４】
請求項４３に記載のコンピュータプログラム製品において、所定のデータ経路構成要素に対してデータ処理オペレーションが指定されていないかまたはペンディング、保留になっている場合、前記所与のデータ経路構成要素は非アクティブでありヌルオペレーションを実行する前記コンピュータプログラム製品。
【請求項４５】
請求項３７に記載のコンピュータプログラム製品において、命令メモリは、前記プログラム命令を格納するように動作可能であるとともに固定長メモリアクセスで可読である前記コンピュータプログラム製品。
【請求項４６】
請求項４５に記載のコンピュータプログラム製品において、固定長メモリアクセスは、複数のプログラム命令の少なくともいくつかの部分を含む前記コンピュータプログラム製品。
【請求項４７】
請求項４６に記載のコンピュータプログラム製品において、ローテータとプログラムカウンタ増分器とは、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能である前記コンピュータプログラム製品。
【請求項４８】
請求項３７に記載のコンピュータプログラム製品において、
ローテータとプログラムカウンタ増分器とは、前記命令復号器に供給するための所定位置に前記メモリアクセスの中のプログラム命令を揃えるように動作可能であり、前記ローテータは、前記命令セット識別子に応答して、前記プログラム命令を揃えるためにいかなる回転を与えるべきかを決定する前記コンピュータプログラム製品。
【請求項４９】
請求項３３に記載のコンピュータプログラムを発生するように動作可能なコンピュータプログラムコンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関する。より詳細に説明すると、例えば、いわゆる超長命令語（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ：ＶＬＩＷ）プロセッサと、データ処理システムのプログラムコードのサイズを減らす手段のように、この発明は、プログラム命令によって指定されたデータ処理オペレーションを独立して並列に実行するように動作可能な複数のデータ経路構成要素を有するデータ処理システムに関する。
【背景技術】
【０００２】
テキサス・インスツルメンツで製造される既存のＴＭＳ３２０６ｘｘプロセッサは高速動作用（例えば１ＧＨｚ）に設計されており、簡単な命令解読器を備えている。このプロセッサは３２ビットの命令を使用する。命令は、８個の３２ビット命令を含む２５６ビットのフェッチ・パケットでメモリからロードされる。各命令は、フェッチ・パケットの中の次の命令を同一クロックサイクルで実行することができるかどうかを示すビット（Ｐビット）を含む。同一クロックサイクルで実行する命令は実行パケットと呼ばれる。実行パケットはフェッチ・パケットの境界と交差することができないので、フェッチ・パケットの中の最後の命令のＰビットは消去されなければならない。プロセッサ内部の機能ユニットが実行パケットの中の命令によってアドレス指定されない場合、プロセッサは、Ｎｏｐのようなデフォルト・オペレーションを実行する。
【０００３】
ＳｔａｒＣｏｒｅによって製造されるＳＣ１４０プロセッサは、１６ビット語から命令を構築する。大部分の命令は１６ビット命令語で構成される。いくつかの命令は、２個の命令語を必要とする。命令プレフィックス語（１６ビットまたは３２ビット）を指定することができる。このプレフィックスは、アドレス指定可能なレジスタフィールドの数を拡張するために使用され、条件付きで命令を実行する（保護実行）ため、または１クロックサイクルで実行される命令の数を指定するために使用される。プレフィックス語が使用されていなければ、上に考察したＴＭＳ３２０Ｃ６ｘｘプロセッサと同様、それらの命令は命令の中のビットを使用して相互にリンクされる。
【０００４】
ＳＣ１４０プロセッサの内部における命令は、１２８ビット単位（８×１６ビット語）でメモリからフェッチされる。１クロックサイクルで最大６機能ユニットを制御することができる。１クロックサイクルで実行するこれらの命令は、１２８ビットの境界にまたがることができる。命令アラインメント回路は、命令がこのような境界にまたがる場合、必要なアラインメント動作を実行する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＡＲＭ社によって製造されたＴｈｕｍｂにより動作可能になるスカラプロセッサは、３２ビットのＡＲＭコードまたは１６ビットのＴｈｕｍｂコードのいずれかを実行することができる。Ｔｈｕｍｂ命令セットは、ＡＲＭ命令セットの中で指定できるすべての命令を提供していない。
【０００６】
ＴＭＳ３２０Ｃ６ｘｘおよびＳＣ１４０プロセッサのようなＶＬＩＷプロセッサは、データ処理オペレーションを高度に並列実行させる場合に有利である。しかし、実行する処理動作の複雑性が確実に増加するのに伴い、これらのＶＬＩＷプロセッサに関連するプログラムメモリ記憶装置の要求条件は非常に不利になる。
【課題を解決するための手段】
【０００７】
一態様から見ると、本発明は、データを処理する装置を提供しており、この装置は、
プログラム命令の中の１つまたは複数の命令フィールドを復号して少なくともいくつかの制御信号を発生するように動作可能な命令復号器と、
前記制御信号に応答し、前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを独立して並列に実行する複数のデータ経路構成要素であって、前記命令復号器によって復号された少なくともいくつかのプログラム命令は、それぞれのデータ経路構成要素の制御命令が独立に指定されることを可能にする前記複数のデータ経路構成要素と、
を含んでおり、
前記命令復号器は、データ経路構成要素によって実行される所与のデータ処理オペレーションが、異なるプログラム命令の中で異なって符号化された命令フィールドを使用して指定されうるように動作可能である。
【０００８】
本手法は、実際に実行すべき多数のアプリケーションを処理する場合、ＶＬＩＷプロセッサがサポートする超長命令によって与えられる高水準の並列処理（ｐａｒａｌｌｅｌｉｓｍ）が活用されていないことを認識している。一例として、ピクセルの値のような大量の独立なデータ値にデジタル信号処理形式の動作を実行するプログラムループの中では高度な並列処理を得ることができるが、並列処理の可能性が期待できない制御コードと他形式のコードとを実行する場合には、かなりの時間が消費されるであろう。これら異なる型式の実際の動作を認識しているので、本手法は複数の命令符号化を提供し、異なる動作形式（ｄｉｆｆｅｒｅｎｔ  ｏｐｅｒａｔｉｏｎａｌ  ｒｅｇｉｍｅｓ）において同じデータ処理オペレーションを指定する異なる命令の符号化を目標とすることができる。一例として制御フロー形式の動作の中では、唯一のデータ経路構成要素がいかなる所定の時間にもアクティブであり、１つのデータ経路構成要素だけをアクティブにする圧縮された小型のプログラム命令を使用することができることが非常に一般的であることは明らかであろう。データ処理が実行されるすべての他のデータ経路構成要素がデータ処理オペレーションを示していない場合、プログラム命令はなんらかの指定されたデフォルト・オペレーションをとると仮定することによって、プログラムメモリのかなりのスペースを節約することができる。反対に、コンピュータプログラムの一部分が高度な並列処理を活用することができる状態になった場合、異なるプログラム命令の符号化を使用し、より広範なデータ経路構成要素を同時に制御して、これらのデータ経路構成要素の各素子上でより広範なデータ処理オペレーションを指定することを可能にすることができる。いくつかの中間長の符号化は、或るデータ経路構成要素の一般に使用する動作（例えば、加算など）を提供することが可能であるが、あまり一般的に使用されない動作（例えば、ビット方向反転）を提供することは不可能である。
【０００９】
独立したデータ経路構成要素に対して異なって符号化された各命令フィールドは、いろいろと異なる方法で符号化を変えることができ、符号化を変更してコードの圧縮を改善する特に有用な方法は、命令フィールドと命令フィールドのプログラム命令内部のビット位置とに対して使用されるビット長を変えることである。
【００１０】
好適実施例におけるプログラム命令は複数の命令セットに分割され、命令復号器は、プログラム命令の中のフィールドを識別する命令セットに応答して、そのプログラム命令の中のどのビットが、異なるデータ経路構成要素に対するそれぞれの命令フィールドに対応するか決定する。このように、高度な並列動作に適した大きな命令を持つ完全な機能を備えた命令セット、いかなる時にも（ａｔ  ａｎｙ  ｏｎｅ  ｔｉｍｅ）高度に非並列な動作に適した１つのデータ経路構成要素だけが動作することができる高度に圧縮された命令セット、およびその形式の中では一般に遭遇する並列処理がサポートされるが、完全な水準の潜在的な並列処理ではサポートされない中間命令セットのような異なる動作形式に適した複数の異なる命令セットが提供される。
【００１１】
命令セット復号器は、システム内で可変プログラム命令長を扱うため、命令セット識別子（ｉｄｅｎｔｉｆｉｅｒ）に応答して、プログラム命令長を決定するという利点がある。
【００１２】
異なって符号化された命令フィールドは、それぞれのデータ経路構成要素によって実行されうる異なるセットのデータ処理オペレーションを表す役目をする。望ましくは、これらのセットのいくつかは他のセットのサブセットであり、指定することが望まれる最も一般的に発生する処理動作を含む。
【００１３】
プログラム命令の圧縮を改善する他の好適な実施例は、レジスタ識別子の範囲、プログラム分岐のジャンプアドレスの範囲縮小、機能セットの縮小（例えば、サポート頻度の小さい動作形式）または即値（ｉｍｍｅｄｉａｔｅ  ｖａｌｕｅｓ）の範囲縮小のような小型命令の中のオペランドの縮小をサポートすることである。
【００１４】
命令フィールドは、唯一の可能なデータ経路構成要素に関連することができる。代替方法として改善された圧縮は、命令セット識別子自体がどのデータ経路構成要素を制御するか指定する場合、いくつかの状況で達成されうる。このことは、処理動作の特定の状況に容易に適合しうるツリー構造の符号化／復号化の形式を効率的に発生する。
【００１５】
異なるプログラム命令を使用すると、異なる数のデータ経路構成要素がアクティブであるか、非アクティブであることは理解されるであろう。所与のプログラム命令によって特定の処理動作が指定されないデータ経路構成要素は、Ｎｏｐのようなデフォルト・オペレーション、または、前に始まったマルチサイクル・オペレーションのような何らかのペンディング動作を実行する。
【００１６】
メモリの中にプログラムを格納できる能率は実施例の中で改善されており、これらの実施例におけるプログラム命令は、複数のプログラム命令の少なくともいくつかの部分を含む固定長のメモリアクセスで可読であり、回転およびアドレス増分機構は、命令復号器に供給するためのプログラム命令を揃えるために使用される。要求されるアラインメントの程度は、命令セット識別子自体が命令長を指定または暗黙指定する命令セット識別子から決定されうる。その上、消費されたプログラム命令のいくつかの部分を元に戻すために読み出すことを必要とするこれらのバンクだけが付勢されて電力を節約するように、それらのバンクにプログラムが分散する、異なるバンクにメモリを分割することが可能である。
【００１７】
他の態様から見ると、本発明はデータを処理する方法を提供しており、この方法は、
プログラム命令の中の１つまたは複数の命令フィールドを復号して少なくともいくつかの制御信号を発生するステップと、
前記制御信号に応答して複数のデータ経路構成要素を制御し、前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを並列に独立して実行し、少なくともいくつかのプログラム命令はそれぞれのデータ経路構成要素に対する制御信号が独立して指定されることを可能にするステップと、
を含み、
データ経路構成要素によって実行される所与のデータ処理オペレーションは、異なるプログラム命令の中で異なって符号化された命令フィールドを使用して指定されうる。
【００１８】
さらなる態様から見ると、本発明は、プログラム命令の中の１つまたは複数の命令フィールドを復号して少なくともいくつかの制御信号と、前記制御信号に応答して前記プログラム命令によって指定されたそれぞれのデータ処理オペレーションを並列に独立して実行するように動作可能なプログラム復号器を有するデータ処理装置を制御するコンピュータプログラム製品を提供しており、このコンピュータプログラム製品は、
第１の符号化がデータ経路構成要素によって実行される所与のデータ処理オペレーションを指定する、符号化された命令フィールドを含む少なくとも１つのプログラム命令と、
前記第１の符号化とは異なる第２の符号化が前記データ経路構成要素によって実行される前記所与のデータ処理オペレーションを指定する、異なる符号化がされる命令フィールドを含む少なくとも１つの異なるプログラム命令と、
を含む。
【００１９】
補完的な態様から見ると、本手法は、上に説明した機能に従ってコンピュータプログラムを生成するコンパイラプログラムであると考えられる。コンパイラは、効率的に復習の命令セットを有し、その中からコードをコンパイルしようとしているデータ処理オペレーションを実行するプログラム命令を選択することができる。
【００２０】
この発明の上記ほかの目的、機能および利点は、添付の図とともに読まれる以下の例示的な実施例の詳細な説明から明らかになるであろう。
【００２１】
図１は、例えば、加算器、乗算器、シフタ、論理演算回路（ａｌｕ）、浮動小数点演算回路などの機能ユニットでありうる複数の独立に制御可能なデータ経路構成要素２、４、６、８を含むＶＬＩＷプロセッサの一部を示している。データ経路構成要素２、４、６、８は、制御可能なバス・ネットワーク１４を介してレジスタファイル１０、１２に接続される。制御信号レジスタ１６の中に格納される制御信号は、データ経路構成要素２、４、６、８、レジスタファイル１０、１２および制御可能なバス・ネットワーク１４を構成して、所定のプロセッサクロックサイクルで所望のデータ処理オペレーション、つまりオペレーション・セットを並列に実行する。普通、これらの回路要素のすべてを制御するためには多数の制御信号が必要であるから、制御信号レジスタ１６の幅は比較的広いことが判るであろう。命令メモリの中にプログラムとして制御信号を単純に格納することは可能であるが、プログラムメモリ記憶装置の要求条件の観点からは非常に非能率である。図１において制御信号レジスタ１６の中の制御信号は、命令復号器から取り出される。後で説明するように、この命令復号器は、図１に示す回路要素を制御するために必要な制御信号のフルセット（ｆｕｌｌ  ｓｅｔ）を発生するため簡潔な形で所望の挙動を表すプログラム命令を解凍する。
【００２２】
図２は、異なるプログラム命令で実行されうる異なる独立可能のデータ処理オペレーションを模式的に示す図である。この図から判るように、図２の命令サイクルの第１のセクションにおいては、データの依存性を介して、または同じ資源を要求することによって、各プログラム命令が前の命令が完了することに依存しているため、並列処理は一般に不可能である。図２の中間セクションにおけるコードの一部は、ピクセルや他の独立な信号値の並列処理のように、高度に並列動作が可能な状況になっている。この動作形式の場合、完全な幅のＶＬＩＷ命令語によって指定されうるデータ処理オペレーションの完全なフレキシビリティと複雑性は、望ましいとともに利点がある。図２の最後の部分では、システムは並列動作を活用できない動作形式に再び戻っている。
【００２３】
図３は、本手法の一例による汎用プログラム命令を模式的に示している。このプログラム命令１８は、命令識別子フィールド２０と、ＶＬＩＷコントローラが使用したい１つまたは複数のデータ経路構成要素に関する命令フィールドとともに、ＶＬＩＷコントローラ自体の制御を指定するビットを含むセクション２２を含む。この代表的な実施例においてプログラム命令を格納するメモリシステムは、Ｍビットが並列にアクセス可能な、Ｎビットのブロックでアクセス可能である。したがって、どのプログラム命令１８もその最大幅はＭ×Ｎビットである。実際に、プログラム命令の長さをＮビットの倍数に制限して、これらの命令の長さが、すべてＭ×Ｎビット以下にすることは便利である。
【００２４】
図４は、それぞれ異なる命令セットからの４個の異なるプログラム命令を模式的に示しており、これらの異なる命令セットのそれぞれは、異なる符号化を使用して実行される所定のデータ経路構成要素の動作を指定することができる命令フィールドを含む。プログラム命令２４における命令セットは、１個のプログラム命令によって１個だけのデータ経路構成要素がアドレス指定されうる命令セットである。このプログラム命令は、その１つの命令フィールドの中に識別子を含み、その識別子のデータ経路構成要素は、データ経路構成要素を制御するために必要なオペコードとオペランドとともにアドレス指定されている。残りのデータ経路構成要素は、非アクティブであってＮｏｐを実行するか、前に開始したマルチサイクルの処理動作や何らかの前に確定した状態を継続するなど、ある種のデフォルト・オペレーションを実行するかのいずれかである。
【００２５】
第２のプログラム命令２６の長さは他に比較して長く、１命令の中で複数のデータ経路構成要素をアドレス指定することができる。乗算器に関連する命令フィールド２８のビット位置とビット長は、プログラム命令２４と他の命令の中の命令フィールドと比較して変化する。命令フィールドの長さは他に比較して短いので、乗算器が使用できるデータ処理オペレーションのサブセットだけがこの短縮された命令フィールドの中で指定されうる。命令フィールド長のこの短縮を容易にするためには、レジスタ指定子（ｓｐｅｃｉｆｉｅｒ）の範囲を小さくするとともに即値の範囲を小さくしてもよいし、またはそのいずれかを小さくしてもよい。より一般的に要求される命令は、このサブセットでサポートされるように選択される。他の代表的な命令において、更によい圧縮を可能にする制約のためにとくに好適な形式の変数は、ジャンプ識別子の範囲である。何故ならば、全アドレス空間のジャンプはほとんど無く、プログラム命令の流れの中では比較的短いジャンプが存在するのがより一般的だからである。この第２のプログラム命令２６の中の命令フィールド２８は、乗算器に専用の命令フィールドではなく、関連のある命令フィールドによって乗算器またはシフタのいずれかがアドレス指定されていることを指定するビットを含む。
【００２６】
第３のプログラム命令３０における専用命令フィールド３２は、乗算器をアドレス指定するだけに用意されている。この専用命令フィールド３２は、命令フィールド２８よりも小さく異なるビット位置のところにある。
【００２７】
最後に、第４に示すプログラム命令３４は、ＶＬＩＷコントローラ自体の制御パラメータを指定するＶＬＩＷ制御フィールドを含むとともに、個別の命令フィールドに対するデータ経路構成要素すべてのアドレスを完全に指定する。
【００２８】
図５は、プログラム命令の中の入力命令フィールドを復号するために使用されうる復号ツリーを模式的に示す図である。各ノードにおける復号は、アドレス指定されている明確に指定されたデータ経路構成要素に分岐するか、何らかのさらなる分岐が実行されるさらなるノードに分岐するかのいずれかである。最終的には、復号ツリーが横断されるのに伴い、指定されたデータ経路構成要素のところで分岐は終了する。
【００２９】
図６は、プログラム命令を復号／解凍して要求される制御信号を形成する役目をするプロセッサの中の１つのデータ経路構成要素のための命令復号器のスライスを模式的に示している。命令セット識別子とフィールド識別番号（ｆｉｅｌｄ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が２つの各ルックアップテーブル３６、３８に供給されると、次にルックアップテーブルは、マルチプレクサを制御する信号を発生する。復号器の中のマルチプレクサ４２を含むブロックは、命令エクストラクタ（ｉｎｓｔｒｕｃｔｉｏｎ  ｅｘｔｒａｃｔｏｒ）の役目をして、関連のあるプログラム命令の中から適切な命令フィールドを抽出する。所与のデータ経路構成要素に対する命令フィールドのビット位置が異なる符号化と異なる命令セットに対して変化するので、マルチプレクサ４０、４２がプログラム命令語の全スパンから所望の命令フィールドを抽出することを選択することは理解されるであろう。
【００３０】
命令復号器の第２の部分は、選択した命令フィールドをとり、必要に応じてそれを展開し、そのデータ経路構成要素に要求される制御信号のフルセットを形成する。それは、マルチプレクサ４２がこの制御信号のフルセットを直接与えるか、代替的にデフォルトのＮｏｐオペレーションが要求される場合、これらの信号が回路要素４４によって発生するからである。制御信号の圧縮された符号化を使用して可能なデータ経路構成要素のオペレーションのサブセットを表している命令フィールドの場合、回路要素４６は、この圧縮された表示を展開して次にマルチプレクサ４８によって選択される制御信号のフルセットを形成することができる。
【００３１】
図７は、プログラム命令を格納するメモリが、それぞれＮビットの幅を持つＭ個のメモリのセットとして実施されていることを模式的に示している。これらのＭ個のメモリは、すべて並列に読み出される。１個からＭ個の語の間は、プログラムステップごとにメモリから読み出される。読み出される語は、命令レジスタ５４の中に格納される（図９に示す）。命令レジスタは、コード語のＦＩＦＯとして動作する。命令の抽出は、命令レジスタからのプログラム語の読み出しと、命令の復号のためにこれらの語をアラインするローテータを使用することから構成される。図７は、異なるメモリに関するプログラム語の分布の例である。
【００３２】
図７に示す命令の復号の流れは：
１．サイクル１：
ａ．命令１の３つのコード語と命令２の１つの語を命令レジスタの中に読み込む。
２．サイクル２
ａ．命令２の２つのコード語と命令３の１つのコード語を命令レジスタの中に読み込む。
ｂ．ＭＳＢに対してローテータを使用し、命令１を１語以上回転することによって命令復号器の入力のところに命令１を揃えて命令１を復号する（これは１つのバイトの配列（ｅｎｄｉａｎｅｓｓ）例であるが、本手法はこのようなシステムに限定されない）。
３．サイクル３：
ａ．命令３の別の２つのコード語と命令４の１つのコード語を命令レジスタの中に読み込む。
ｂ．ＭＳＢに対してローテータを使用し、命令２を２語以上回転することによって命令復号器の入力のところに命令２を揃えて命令２を復号する。
４．サイクル４：
ａ．命令４と命令５の２つのコード語を命令レジスタの中に読み込む。
ｂ．ＭＳＢに対してローテータを使用し、命令３を３語以上回転することによって命令復号器の入力のところに命令３を揃えて命令３を復号する。
５．サイクル５：
ａ．命令６の３つのコード語を命令レジスタの中に読み込む。
ｂ．命令４を復号する。
６．サイクル６：
ａ．命令６の最終コード語を命令レジスタの中に読み込む。
ｂ．ＭＳＢに対してローテータを使用し、命令５を３語以上回転することによって命令復号器の入力のところに命令５を揃えて命令５を復号する。
７．  （以下省略）
【００３３】
図８は、本手法を使用するＶＬＩＷプロセッサの代表的実施例を示す高度な模式図である。プログラムカウンタ５０は、可変長プログラム命令を格納する命令メモリ５２をアドレス指定するために使用される。これらの可変長プログラム命令は、固定長メモリアクセス語としてＦＩＦＯ命令レジスタ５４の中に読み出され、ＦＩＦＯ命令レジスタ５４から個々のプログラム命令が抽出され、命令復号器５８に供給される前に、ローテータ５６によって揃えられる。命令復号器５８は、必要に応じて、これらのプログラム命令を解凍し、制御レジスタ６０の中に格納される制御信号を発生する。制御信号は異なるデータ経路構成要素６２、６４、６６を構成して、所望のデータ処理オペレーションを実行し、その結果はＶＬＩＷコントローラ７０にフィードバックする状態レジスタ６８を更新するために使用される。ＶＬＩＷコントローラ７０は、プログラムカウンタを制御して命令メモリ５２の中に格納されたプログラムを介して適切に増分する。
【００３４】
図９は、コントローラ７０の一例を模式的に示している。プログラムカウンタの現在値とこれが増分された値は、所望のアクセスが揃えられず異なるメモリに回り込む場合、異なるメモリをアドレス指定する適切なメモリアドレスを発生することができる。命令セット復号器５８によって分割された命令の長さは、ジャンプするプログラムの流れを強制的に制御するために必要なジャンプコマンドとともに、プログラムカウンタの進行を制御するために使用される。
【００３５】
以下の記述は、異なる命令セットをサポートすることが望まれるＡｌｕデータ経路構成要素の可能なサブセットの模範的な例示である。他のデータ経路構成要素の命令セットも同様な方法で選択／構成される。
【００３６】
このＡｌｕには、独立に制御できる４つの制御ポート、すなわち、ｃｍｄ０、ｃｍｄ１、ｃｍｄ２およびｃｍｄ３がある。ＡＬＵの一部だけがアプリケーションで使用される場合、マイクロコードからその一部のすべてを駆動することは意味をなさない。ユーザはこの目的で命令セットの定義を使用することができる。
【００３７】
Ａｌｕは別のコマンドバスから制御される複数の独立ユニットから構成される。これらのコマンドバスごとにオペレーション・セットを定義しなければならない。ユーザがどの命令セットも指定しなかった場合、ＡＬＵの「完全な（ｆｕｌｌ）」命令セット「ａｌｕ＿１」は次の通りである。
2005332361.tif 000003
【００３８】
オペレーション・セットのコード幅は、そのセットの中の命令の数によって決定される。例えば、ｃｅｉｌ（ｌｏｇ２（＃ｉｎｓｔｒｕｃｔｉｏｎｓ  ｉｎ  ｓｅｔ））。
2005332361.tif 000004
【００３９】
そのためＡＬＵ命令のフルセットは、ＡＬＵの入力ピンに接続されたレジスタの、およびＡＬＵの全制御ポートの「全」オペレーション・セットの読出しアドレスから成る単一ｃｏｎｔｒｏｌ＿ｇｒｏｕｐ「ＣＧ＿ａｌｕ＿１」によって表示される。
【００４０】
制御グループの幅は含まれるオペレーション・セットの幅の総和である。
【００４１】
ＡＬＵの制限された機能によって命令セットを定義できるためには、新しいオペレーション・セットと制御グループを定義する必要がある。これが実行される前は、ユーザは、特定の命令セットの中でユーザが欲しい機能の一部分がどれであるかを決定する必要がある。
【００４２】
例１：ＡＬＵがフラグ制御ユニット（ｆｌａｇ  ｃｏｎｔｒｏｌ  ｕｎｉｔ）として使用されているだけの場合、次の定義を使用しなければならない。
2005332361.tif 000005
【００４３】
制御グループ「ＣＧ＿ｆｃｕ＿ａｌｕ＿１」は、入力レジスタの読み出しアドレスと「ｃｍｄ０」制御ポートに対する命令を格納する３ビットを含むだけであろう。命令セット復号器は、ｃｍｄ１とｃｍｄ３制御ポートに対してはデフォルト命令を、ｃｍｄ２制御ポートに対してｐａｓｓ命令を適用するであろう。
【００４４】
例２：シフトユニットのないＡＬＵ（ＡＬＵ  ｗｉｔｈｏｕｔ  ｓｈｉｆｔ  ｕｎｉｔ）に対する命令セットは、次のように指定される。
2005332361.tif 000006
【００４５】
制御ビットは、「ｃｍｄ」制御ポートに新しいオペレーション・セットを定義することによって取得される。例えば、ｌｏｇｉｃａｌ＝０とａｂｓｍｉｎｍａｘ＝０に対しては次のようになる。
2005332361.tif 000007
【００４６】
オペレーション・セット
2005332361.tif 000008
は、上記制御グループの定義の中で、
2005332361.tif 000009
で置き換えられる。
【００４７】
例３：ＡＬＵ ＮＯＦＬＡＧは、次の定義によって説明されうる。
2005332361.tif 000010
【００４８】
次の例は、データ経路構成要素が１ＡＬＵ、１ＲＡＭと定数発生器の３個あるプロセッサの完全な命令セット復号器の定義を示している。次の命令セットが定義される。
2005332361.tif 000011
【００４９】
制御グループは、命令セットの定義の中で同一方法で扱われる制御語を単純にグループ化したものである。次の制御グループが定義される。
2005332361.tif 000012
【００５０】
命令フィールドは制御グループで構成される。いかなるクロックサイクル中でも命令フィールドあたりアクティブになりうるのは１つの制御グループだけである。次の命令フィールドが定義される。
2005332361.tif 000013
【００５１】
命令セットは、命令フィールドの連接として定義される。次の命令セットが定義される。
2005332361.tif 000014
【００５２】
ＩＳ＿ＶＬＩＷは、すべてのデータ経路構成要素を並列に制御する。ＩＳ＿ＲＩＳＣ１はＲＡＭと、定数発生器またはａｌｕの完全な機能のいずれかを制御する。ＩＳ＿ＲＩＳＣ２は、ＲＡＭと、ａｌｕの機能のサブセットを制御する。
【００５３】
上記手法に従ってＶＬＩＷプロセッサを制御するとともに、混在した命令セットの命令を含むコンピュータプログラムは、本発明の他の態様を表している。これらのコンピュータプログラムは、（例えば、ディスク、ＲＯＭなどの）データ記憶媒体やダウンロードできるファイル、あるいは、他の方法などの製品の形で提供されうる。
【００５４】
コンパイラサポートに言及すると、命令セットは、セットの中で可能になった並列動作または両者の競合動作の明確なモデルを作るデータ構造体の中に格納される。同じではないデータセット上で動作する同一資源を使用する場合、動作は競合する。このデータ構造は、命令を選択するとともにコードを発生するコンパイラによって使用される。コンパイラによって生成された命令語は、定義された命令セットのどれかから選択される。一例では、この競合モデルはＭａｐステップ、コンパイルステップおよびコード発生ステップで使用されうる。Ｍａｐは命令を選択し、選択した命令を個別のデータ経路構成要素に割り当てる。コンパイルは命令の順番を付けるとともにコードの最適化を実行する。コンパイルの終了時点で、コードが送出され、最後の命令セットの選択が実行される。このコード発生ステップの間にコードの中のジャンプアドレスの再コード化が実行され、可変長命令語が複数のメモリに分散して格納されることを可能にする。これら３ステップの中で、（サイズの観点から）命令セットのコストが配慮される。
【００５５】
添付の図面を参照しつつ本発明の例示的実施例を詳細に説明してきたが、本発明は、これらの的確な実施例に限定されないことと、特許請求の範囲によって定義される通り、本発明の範囲と趣旨を逸脱することなく当業者によって異なる変更と修正が実施されうることを理解すべきである。
【図面の簡単な説明】
【００５６】
【図１】ＶＬＩＷ処理システムのデータ経路を模式的に示す図である。
【図２】データ処理システムの動作における異なる命令サイクルで達成されうる並列処理の程度を模式的に示す図である。
【図３】現手法で使用されるのに適したＶＬＩＷプロセッサを制御する一般的なプログラム命令を模式的に示す図である。
【図４】所定のデータ経路構成要素によって実行される所定のデータ処理オペレーションを指定するために使用される４個の独自に符号化された命令フィールドを有する４個の模範的なプログラム命令を示す図である。
【図５】命令圧縮手法の一部として使用されうる復号化／符号化ツリーを模式的に示す図である。
【図６】命令復号器の１つの制御語の一部を模式的に示す図である。
【図７】固定幅メモリアクセスで読み出されるメモリの中のプログラム命令の配置の一例を模式的に示す図である。
【図８】ＶＬＩＷプロセッサがサポートする複数の命令セットと、それらのいくつかは解凍するために復号される前記複数の命令セットを模式的に示す図である。
【図９】メモリからプログラム命令をフェッチしてアラインする回路を模式的に示す図である。
【符号の説明】
【００５７】
２、４、６、８  データ経路構成要素
１４  バス・ネットワーク
１０、１２  レジスタファイル
１６  制御信号レジスタ信号
１８  プログラム命令
２０  命令識別子フィールド
２２  命令フィールドの制御ビットを含むセクション
２４  プログラム命令
２６  第２のプログラム命令
２８  乗算器に関連する命令フィールド
３０  第３のプログラム命令
３２  専用命令フィールド
３４  第４のプログラム命令
３６、３８  ルックアップテーブル
４０、４２、４８  マルチプレクサ
４４、４６  回路要素
５０  プログラムカウンタ
５２  命令メモリ
５４  命令レジスタ
５６  ローテータ
５８  命令復号器
６０  制御レジスタ
６２、６４、６６  データ経路構成要素
６８  状態レジスタ
７０  ＶＬＩＷコントローラ
【図１】
2005332361.tif 000015
【図２】
2005332361.tif 000016
【図３】
2005332361.tif 000017
【図４】
2005332361.tif 000018
【図５】
2005332361.tif 000019
【図６】
2005332361.tif 000020
【図７】
2005332361.tif 000021
【図８】
2005332361.tif 000022
【図９】
2005332361.tif 000023