(57)【要約】  構成可能な実行ユニットは、命令によってマルチビットのオペランド値の処理のレベルで動的に構成されることが可能である演算器を備える。１つのモジュール、または各モジュールが、命令において示された入力オペランドを受け取るように接続可能である、１つ以上の動的に構成可能な演算器モジュールと、命令のＯＰコード部分から判定された動的な構成情報を受け取るように接続可能であると共に、命令の中の前記動的な構成情報に応答して、前記構成可能な演算器モジュールの機能または動作の特徴を定義する演算器構成設定値を生成可能であるプログラム可能なルックアップテーブルとを備える。
2008541216.tif 000002
【特許請求の範囲】
【請求項１】
命令によってマルチビットのオペランド値の処理のレベルで動的に構成されることが可能である演算器を備えた構成可能な実行ユニットであって、
１つのモジュール、または各モジュールが、前記命令において示された入力オペランドを受け取るように接続可能である、１つ以上の動的に構成可能な演算器モジュールと、
前記命令のＯＰコード部分から判定された動的な構成情報を受け取るように接続可能であると共に、前記命令の中の前記動的な構成情報に応答して、前記構成可能な演算器モジュールの機能及び／または動作の特徴を定義する演算器構成設定値を生成可能であるプログラム可能なルックアップテーブルと
を備えることを特徴とする構成可能な実行ユニット。
【請求項２】
前記プログラム可能なルックアップテーブルが、プログラマブルロジックアレイを備える
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項３】
前記プログラム可能なルックアップテーブルが、カスケード接続されたプログラマブルロジックアレイを備える
ことを特徴とする請求項２に記載の構成可能な実行ユニット。
【請求項４】
前記実行ユニットが、擬似的な静的制御情報によって少なくとも一部分が定義された接続性を有する構成可能なスイッチング構造を備える
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項５】
前記構成可能なスイッチング構造が、
構成可能な演算器の前段に接続された構成可能な入力相互接続手段と、
構成可能な演算器の後段に接続された構成可能な出力相互接続手段と
の内の１つ以上を備えることを特徴とする請求項４に記載の構成可能な実行ユニット。
【請求項６】
前記構成可能なスイッチング構造が、
構成可能な演算器の前段に接続された構成可能な入力相互接続手段と、
構成可能な演算器の後段に接続された構成可能な出力相互接続手段と
を備えることを特徴とする請求項５に記載の構成可能な実行ユニット。
【請求項７】
１つ以上の構成可能な演算器モジュールの１つ以上の出力信号が、前記構成可能な入力相互接続手段に接続される
ことを特徴とする請求項６に記載の構成可能な実行ユニット。
【請求項８】
少なくとも１つの構成可能な演算器モジュールが、所定の部類の操作を支援するために、ハードウェアに組み込まれると共に、一般的な操作の部類の中で演算器機能及び／または演算器動作を調整するように、前記演算器構成設定値によって動的に構成可能である
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項９】
前記構成可能な演算器が、構成可能なシフト及び／または並び替えの機能性を有するモジュールを備える
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１０】
１つ以上の構成要素が、動的な構成情報を伝送する命令とは独立して提供された擬似的な静的制御情報を備える
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１１】
１つ以上の構成要素が、構成設定値命令によって確立された擬似的な静的制御情報を備える
ことを特徴とする請求項１０に記載の構成可能な実行ユニット。
【請求項１２】
１つ以上の動的に構成可能な演算器が、データ処理命令において提供された構成情報を用いて構成可能である
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１３】
複数の動的に構成可能な演算器が、データ処理命令において提供された構成情報を用いて構成可能であると共に、
使用時に、前記構成情報に従う演算器構成が、前記データ処理操作において示されるオペランドに作用する
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１４】
１つ以上の動的に構成可能な演算器が、データ処理命令において提供された構成情報を用いて構成可能であると共に、
使用時に、前記構成情報に従う演算器構成が、その後の命令において示されるオペランドに作用する
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１５】
結果を出力する前に、単一の命令に応答して、オペランドに対して順次的な２つ以上の構成可能な操作を選択的に実行することができる
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１６】
前記構成可能な演算器モジュールの内の１つ以上が、ＳＩＭＤ操作を支援する
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１７】
以下の乗算、算術論理、記憶、シフト及び／または並べ替えの演算器の部類の内の１つ以上の演算器を備える
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１８】
前記プログラム可能なルックアップテーブルが、以下のキャリーイン信号；マルチプレクサ選択信号；協定可能入力信号；オーバフロー設定値；及び演算器の他の適当な入力信号の内の１つ以上の中から選択された演算器構成設定値を生成する
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項１９】
前記プログラム可能なルックアップテーブルが、１つ以上の動的に構成可能な演算器モジュールから１つ以上の入力信号を受け取る
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項２０】
前記動的に構成可能な演算器モジュールからの入力信号が、オーバーフロー表示；ＦＩＦＯフル信号；算術比較のブール結果；演算器の他の適当な出力信号から選択された１つ以上を備える
ことを特徴とする請求項１９に記載の構成可能な実行ユニット。
【請求項２１】
前記プログラム可能なルックアップテーブルが、擬似的な静的制御情報を含む
ことを特徴とする請求項１に記載の構成可能な実行ユニット。
【請求項２２】
命令によってマルチビットのオペランド値の処理のレベルで動的に構成されることが可能である演算器を備えた構成可能な実行ユニットを操作する方法であって、
ＯＰコード内に構成情報を含む命令を復号化する段階と、
プログラム可能なルックアップテーブルに従って、前記構成情報を少なくとも１つの構成可能な演算器に対する演算器構成設定値に変換する段階と、
その結果、前記演算器の機能及び／または動作の特徴が、命令毎を基準として選択的に調整可能であるように、前記少なくとも１つの構成可能な演算器に、前記演算器構成設定値を供給する段階と
を含むことを特徴とする方法。
【請求項２３】
一連の２つ以上の操作が、前記命令に応答して直列に実行される
ことを特徴とする請求項２２に記載の方法。
【請求項２４】
２つ以上の操作が、前記命令に応答して並列に実行される
ことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記命令に応答して、直列操作と並行操作の結合が実行される
ことを特徴とする請求項２２に記載の方法。
【請求項２６】
複数の直列操作及び／または並列操作が前記命令に応答して実行されると共に、操作の間か、または構成可能な実行ユニットから結果貯蔵場所に出力される前に、少なくとも１つの中間結果が記憶演算器内に保持される
ことを特徴とする請求項２２に記載の方法。
【請求項２７】
複数の直列操作及び／または並列操作が前記命令に応答して実行されると共に、操作の間か、または構成可能な実行ユニットから結果貯蔵場所に出力される前に、中間結果が、シフトか、または並び替えされる
ことを特徴とする請求項２２に記載の方法。
【請求項２８】
請求項２２に記載の方法を実行するためのプログラムコード手段を備える
ことを特徴とするコンピュータプログラム製品。
【請求項２９】
構成可能な実行ユニットの１つ以上の演算器の構成を設定するための動的な構成情報を含むタイプのデータ処理操作を定義するＯＰコード部分と、
演算器構成情報を含む構成情報フィールドと、
前記データ処理操作で使用するためのオペランドを示す少なくとも１つのフィールドと
を備えることを特徴とする命令。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構成可能な実行ユニットを備えるコンピュータプロセッサ、そのようなコンピュータプロセッサ及び実行ユニットを操作するための方法、及びコンピュータのための命令セットを利用するコンピュータプログラム製品に関連する。
【背景技術】
【０００２】
製造の時に固定された命令セットを有することの効力によって、いくつかのコンピュータプロセッサは、特定のアルゴリズムの中の異なるタイプのデータ処理計算を能率的に処理するそれらの能力において、そして、例えば、畳み込み、高速フーリエ変換、トレリス／ビタビ演算、相関、有限インパルス応答フィルタ処理等の中から選択された異なるアルゴリズムを実行するそれらの能力において、制限される。特に、既知のコンピュータプロセッサは、マルチビットオペランド値に関して動作するソフトウェアでカスタマイズされた命令、例えば４ビット以上のオペランドに作用するそのような命令、または（一般的に、１６、３２、または６４ビットの）機械語のレベルにおいて作用するそのような命令の実行を支援しない。既知のコンピュータプロセッサは、プロセッサ命令セットの一部分を形成する個別のソフトウェアでカスタマイズされたプロセッサ命令に応答して、より単純なカスタマイズされた一連の操作を包含するソフトウェアでカスタマイズされた複雑な操作を能率的に実行することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の実施例は、改良されたコンピュータプロセッサ、及びコンピュータプロセッサを操作する方法等を提供しようと試みる。
【課題を解決するための手段】
【０００４】
本発明の特徴によれば、命令によってマルチビットのオペランド値の処理のレベルで動的に構成されることが可能である演算器を備えた構成可能な実行ユニットが提供される。構成可能な実行ユニットは、１つのモジュール、または各モジュールが、命令において示された入力オペランドを受け取るように接続可能である、１つ以上の動的に構成可能な演算器モジュールと、命令のＯＰコード部分から判定された動的な構成情報を受け取るように接続可能であると共に、命令の中の前記動的な構成情報に応答して、前記構成可能な演算器モジュールの機能及び／または動作の特徴を定義する演算器構成設定値を生成可能であるプログラム可能なルックアップテーブルとを備える。
【０００５】
好ましい実施例において、プログラム可能なルックアップテーブルは、プログラマブルロジックアレイを備える。更により好ましくは、プログラム可能なルックアップテーブルは、カスケード接続されたプログラマブルロジックアレイを備える。開示された実施例において、構成可能な実行ユニットは、擬似的な静的制御情報によって少なくとも一部分が定義された接続性を有する構成可能なスイッチング構造を備える。更に、構成可能なスイッチング構造は、構成可能な演算器の前段に接続された構成可能な入力相互接続手段と、構成可能な演算器の後段に接続された構成可能な出力相互接続手段との内の１つ以上を備え得る。好ましい実施例は、両方共備えている。
【０００６】
ここで、構成可能な入力相互接続手段が提供されると共に、１つ以上の構成可能な演算器モジュールの出力信号が、前記構成可能な入力相互接続手段に接続され得る。
【０００７】
好ましくは、少なくとも１つの構成可能な演算器モジュールは、所定の部類の操作を支援するために、ハードウェアに組み込まれると共に、一般的な操作の部類の中で演算器機能及び／または演算器動作を調整するように、演算器構成設定値によって動的に構成可能である。意図されたアプリケーションに応じて、様々な演算器機能が提供され得る。好ましい実施例は、構成可能なシフト及び／または並び替えの機能性を有するモジュールを備える傾向がある。更に好ましくは、特定の実施例は、中間結果を保持することが可能である記憶演算器を備える。
【０００８】
一般的に、構成可能な構成要素の内の１つ以上は、動的な構成情報を伝送する命令とは独立して提供された擬似的な静的制御情報を備える。そのような擬似的な静的制御情報は、例えば構成設定値命令によって、または関係のある構成要素への直接的なデータ転送によって確立され得る。
【０００９】
大部分の実施例において、１つ以上の動的に構成可能な演算器は、データ処理命令において提供された構成情報を用いて構成可能である。しかしながら、ここに開示された原理は、同様に、他のタイプの命令に適用され得る。
【００１０】
好ましい構成可能な実行ユニットは、データ処理命令において提供された構成情報を用いて構成可能である複数の動的に構成可能な演算器を備え、使用時に、前記構成情報に従う演算器構成は、前記データ処理操作において示されるオペランドに作用する。
【００１１】
他の実施例において、もしくは、更に、１つ以上の動的に構成可能な演算器が、データ処理命令において提供された構成情報を用いて構成可能であると共に、使用時に、前記構成情報に従う演算器構成は、その後の命令において示されるオペランドに作用する。
【００１２】
好ましい実行ユニットは、構成可能な実行パス（path）または実行ユニットの外部の記憶場所（例えば、レジスタファイル）に結果を出力する前に、単一の命令に応答して、オペランドに対して順次的な２つ以上の構成可能な操作を選択的に実行することができるように配置される。好ましい構成可能な実行ユニットにおいて、前記構成可能な演算器モジュールの内の１つ以上は、ＳＩＭＤ操作を支援する。
【００１３】
一般的に、以下の乗算、算術論理、記憶、シフト及び／または並べ替えの演算器の部類の内の１つ以上の演算器が提供される。しかしながら、あらゆる数または種類の演算器が使用され得る。
【００１４】
本発明に基づく実施例において、用語“プログラム可能なルックアップテーブル”は、例えばキャリーイン信号；マルチプレクサ選択信号；協定可能入力信号；オーバフロー設定値；及び演算器の他の適当な入力信号の内の１つ以上の中から選択された演算器構成設定値を提供することが可能であるあらゆる装置を含むと広く解釈されるべきである。
【００１５】
更に、プログラム可能なルックアップテーブルは、有効に、１つ以上の動的に構成可能な演算器モジュールから１つ以上の入力信号を受け取ることができる。このように、演算器からの出力信号は、次のサイクルにおける使用のために、演算器に対する構成入力信号を少なくとも部分的に定義し得る。
【００１６】
排他的ではないが、通常、動的に構成可能な演算器モジュールからプログラマブルルックアップテーブルに対する入力信号は、オーバーフロー表示；ＦＩＦＯフル信号；算術比較のブール結果；演算器の他の適当な出力信号の内の１つ以上から選択される。
【００１７】
特定の実施例において、プログラム可能なルックアップテーブルは、あらかじめ構成可能であると共に、命令において伝送される構成情報によって選択可能である擬似的な静的制御情報を含むと見なされることができる。
【００１８】
本発明の別の特徴によれば、命令によってマルチビットのオペランド値の処理のレベルで動的に構成されることが可能である演算器を備えた構成可能な実行ユニットを操作する方法であって、ＯＰコード内に構成情報を含む命令を復号化する段階と、プログラム可能なルックアップテーブルに従って、構成情報を少なくとも１つの構成可能な演算器に対する演算器構成設定値に変換する段階と、その結果、前記演算器の機能及び／または動作の特徴が、命令毎を基準として選択的に調整可能であるように、前記少なくとも１つの構成可能な演算器に、前記演算器構成設定値を供給する段階とを含む方法が提供される。
【００１９】
好ましい方法は、一連の２つ以上の操作が、単一の命令に応答して直列に実行されることを可能にする。代りに、もしくは多分加えて、２つ以上の操作が、前記命令に応答して並列に実行され得る。
【００２０】
好ましい実施例は、単一の命令に応答して、直列操作と並行操作の結合が実行されることを容易にする。このように、ソフトウェアでカスタマイズされた命令は、総合的に比較的複雑な計算を相互関係のある操作のセットとして実行する連結された演算器のネットワークを通じて、単一の命令に応答してオペランドが流れることの原因になり得る。
【００２１】
更に、複数の直列操作及び／または並列操作が命令に応答して実行される場合に、中間結果は、操作の間か、または構成可能な実行ユニットから結果貯蔵場所に出力される前に、記憶演算器内に保持され得る。
【００２２】
更に、複数の直列操作及び／または並列操作が命令に応答して実行される場合に、中間結果は、操作の間か、または構成可能な実行ユニットから結果貯蔵場所に出力される前に、シフトか、または並び替えされ得る。
【００２３】
本発明の別の特徴によれば、前述の方法の内のいずれかを実行するためのプログラムコード手段を含むコンピュータプログラム製品が提供される。
【００２４】
本発明の別の特徴によれば、構成可能な実行ユニットの１つ以上の演算器の構成を設定するための動的な構成情報を含むタイプのデータ処理操作を定義するＯＰコード部分と、演算器構成情報を含む構成情報フィールドと、データ処理操作で使用するためのオペランドを示す少なくとも１つのフィールドとを備える命令が提供される。
【００２５】
本発明の別の特徴によれば、任意に固定実行ユニットと一緒に構成可能な実行ユニットを含むコンピュータ処理装置が提供される。好ましくは、実行ユニットの内の１つ以上は、ＳＩＭＤ処理が可能である。
【００２６】
本発明の追加の利点、及び新奇な特徴は、ある程度は、後続する記述において説明されると共に、ある程度は、以下の開示の調査によって当業者に明白になるか、または発明の実践によって当業者に学習され得る。
【発明を実施するための最良の形態】
【００２７】
本発明の更に良い理解のために、そしてどのように同じものが実行に移されるかを示すために、一例を示す目的だけで、ここで添付図面に対する参照が行われることになる。
【００２８】
図１のプロセッサ１００は、通信バスによってメインメモリ、及び周辺装置と連結されるコンピュータシステムの一部であり得る。そのようなプロセッサシステムは、当業者によって理解されるように、多種多様な装置及びアプリケーションにおける一連の周辺装置を支援し得る。
【００２９】
プロセッサ１００は、命令メモリ１０２と、データメモリ１０４と、命令フェッチ及びデコード回路１１０と、レジスタファイル１１２と、ロード／ストアユニット１１８と、所定数の固定実行ユニット１２０と、所定数の構成可能な実行ユニット１２６とを備える。
【００３０】
命令メモリ１０２は、命令バス１０８及びアドレスバス１０９によって、命令フェッチ及びデコード回路１１０に連結される。命令フェッチ及びデコード回路１１０は、更に、アドレスバス１１１によって、レジスタファイル１１２に接続されると共に、制御バスシステム１１３によって、ロード／ストアユニット１１８、固定実行ユニット１２０、及び構成可能な実行ユニット１２６に接続される。制御バス１１３は、例えば、命令から復号化された動作構成情報をロード／ストアユニット１１８、固定実行ユニット１２０、及び構成可能な実行ユニット１２６の関連する入力に伝送するために使用される。オペランドバスシステム１１５は、ロード／ストアユニット１１８、固定実行ユニット１２０、及び構成可能な実行ユニット１２６に、復号化された命令に基づいて、レジスタファイルからオペランドを提供する。
【００３１】
ロード／ストアユニット１１８は、データメモリ１０４への連結部１２１、及びデータメモリ１０４からの連結部１２２を備えると共に、同様に固定実行ユニット１２０、及び構成可能な実行ユニット１２６の出力信号を受けるように機能する結果バス１２８に結果を出力することができる。結果バス１２８は、レジスタファイル１１２の入力にフィードバックされる。
【００３２】
この実施例において、プロセッサ１００は、固定実行ユニット及び構成可能な実行ユニットにおいて、シムド（ＳＩＭＤ：single instruction multiple data）処理を支援する。他の実施例において、固定実行ユニット及び構成可能な実行ユニットの内の１つだけ、またはどちらも、ＳＩＭＤ処理を支援することが可能である。
【００３３】
命令フェッチ及びデコード回路１１０内の制御回路は、一般的に、命令メモリ１０２が提供する一連の命令を要求して、受け取って、復号化すると共に、それらの命令に従ってプロセッサの様々な構成要素を制御することに関与する。典型的な命令は、ロード／ストア操作、制御機能操作、データ処理操作、及び／または様々な機能単位によって実行される特定の操作を含む。
【００３４】
ロード／ストア命令は、データメモリ１０４内のデータにアクセスすると共に、データメモリ１０４とレジスタファイル１１２との間でデータを移動するために使用され、データは、それに関して実行された操作の直前に、及びそれに関して実行された操作の直後に存在する。分岐のような制御機能操作は、例えば、一連のフェッチされた命令に影響を及ぼすために、もしくはプロセッサのための設定の計算に固定実行ユニット及び構成可能な実行ユニットの内の１つ以上を関与させることができるように、完全に命令フェッチ及びデコード回路１１０の中で動作し得る。以下に更に詳細に説明されることになるように、データ処理操作は、アルゴリズムの実行の中で使用されると共に、同様に、固定実行ユニット及び／または構成可能な実行ユニットを関与させることができる。
【００３５】
図２は、代表的な実行ユニット１２６の内部構成要素の略図である。図２を参照すると、構成可能な実行ユニット１２６は、プログラム可能なルックアップテーブル２１０と、構成可能な演算器ステージ２３０と、入力クロスバー相互接続装置２４０と、出力クロスバー相互接続装置２５０とを備える。
【００３６】
プログラム可能なルックアップテーブル２１０、及び相互接続装置２４０、２５０は、特別な目的命令によってプリセット可能である擬似的な静的制御情報に依存するという意味において構成可能であるが、しかし、それは、それ自身をデータ処理命令によってサイクル毎を基準として動的に構成可能ではない。このプリセット可能な制御情報は、ここでは擬似的な静的制御情報（ＰＳＣＩ）と呼ばれると共に、図２上の参照符号２４９によって示される。擬似的な静的制御情報２４９は、ある意味ではそれは当業者にとって明白である、プログラム可能なルックアップテーブル２１０、及びクロスバー相互接続装置２４０、２５０の機能性及び動作の特徴を指示する。
【００３７】
構成可能な演算器ステージ２３０は、それぞれが異なる部類の操作を実行するように設計されている演算器モジュール２０２〜２０８のセットを含む。演算器モジュールは、入力クロスバー相互接続装置から、オペランド入力バス２４２によって提供される。この代表的な実施例においては、乗算演算器２０２と、ＡＬＵ演算器２０４と、記憶演算器２０６と、シフト／並び替え演算器２０８が提供される。当業者は、演算器の数と機能は、意図したアプリケーション及び／またはプロセッサの意図した目的に基づいていると認識することになる。演算器モジュール２０２〜２０８の全てまたは選択物は、ここで示された手段によって動的に構成可能であるということが考えられる。
【００３８】
演算器モジュール２０２〜２０８は、実行するように設計されると共に、しかし同時にマルチビット値に関する操作の実行をもたらす動作のレベルにおいて構成可能であることを可能にする様々な制御入力信号を有する操作において、それらを効率的に実行する程度にまで、ハードウェア化される。これは、それぞれが実行するように設計された操作の部類の中で、演算器モジュールの動作及び／または種類における変化を支援することである。例えば、加算ユニットは、加算と同様に減算を支援し得る（計算の一般的な部類の中の異なる種類の操作または機能）と共に、それは、スカラータイプと同様に、様々なＳＩＭＤベクトルデータタイプを支援することができ（多目的な動作）、そして、それは、様々な丸めモード及び／またはオーバーフロー動作を支援することができる(選択可能な動作）。
【００３９】
好ましい実施例において、演算器２０２〜２０８に対する制御入力信号、及び演算器ステージ２３０上の様々な構成要素の相互接続は、所望の様々なアルゴリズム、特にベクトルアルゴリズムの効率的な実行を可能にする程度にまで構成可能であり、アルゴリズムの例は、畳み込み、高速フーリエ変換、トレリス／ビタビ演算、相関、有限インパルス応答フィルタ処理、及び他のものを含む。この程度は、実際には、プロセッサの制御機能だけでなく、そのようなアルゴリズムに従う関連した計算を支援するための命令セットに要求されるデータ処理機能性の範囲を同様に知っている適切な当業者によって、容易に規定される。
【００４０】
構成情報を含む命令（例えば、データ処理命令）が、そのオペランドが動作させられる場合に適用されるべき制御設定値として構成情報を供給することによって、選択的に演算器機能（操作タイプ）、及び／または演算器動作を変更し得るように、演算器ステージ２３０の演算器は、命令毎を基準として（“動的に”）、動的に構成可能である。代りに、命令における構成情報が、その後の命令が提供するオペランドを処理しているとき（例えば、順次データ処理操作）、適用されるべき演算器機能及び／または演算器動作を設定するように、命令セットが設計され得る。
【００４１】
プログラム可能なルックアップテーブル２１０から得られた演算器に対する制御入力信号２７９は、例えば、演算器２０２〜２０８の機能及び／または動作を制御するための制御入力信号を提供するために、演算器ステージに供給される。これらの制御入力信号の例は、キャリーイン（carry-in）信号、マルチプレクサ選択信号（multiplexer selections）、協定可能入力信号（negotiable inputs）、及びオーバフロー動作制御設定値（overflow behaviour control settings）を含む。演算器ステージ２３０内の演算器モジュール２０２〜２０８からの制御出力信号２８１は、プログラム可能なルックアップテーブル２１０に対して出力されることができると共に、従って、言い換えると、制御入力信号設定値２７９を定義することに関与することができる。制御出力信号２８１の例は、オーバーフロー表示（overflow indications）；ＦＩＦＯフル信号（FIFO full）；算術比較のブール結果（Boolean results of arithmetic comparisons）を含む。
【００４２】
実際には、データ処理命令内の演算器構成情報２７７は、復号化されると共に、プログラム可能なルックアップテーブル２１０に供給される。この構成情報２７７は、制御情報２８１と共に、プログラム可能なルックアップテーブル２１０によって、演算器ステージのための対応する制御入力信号２７９に変換されると共に、演算器ステージ２３０に供給される。ルックアップテーブル２１０によって実行される変換機能は、擬似的な静的制御情報２４９によって決定されると共に、それは、言い換えると、初期の制御命令によって設定され得る。
【００４３】
好ましい実施例において、プログラム可能なルックアップテーブル２１０は、それ自身、データ処理命令内の演算器構成情報に基づいて選択可能な、擬似的な静的制御情報によって決まると見なされ得る。プログラム可能なルックアップテーブル２１０は、従って、（命令に由来した）動的な構成情報２７７、または演算器からの制御出力信号２８１、またはＰＳＣＩ２４９、またはプログラム可能なルックアップテーブル２１０に対するこれらの入力信号のあらゆる組み合わせに応答して、演算器に対する入力信号を生成することができる。従って、擬似的な静的制御情報が演算器ステージ２３０に直接入力される必要性はない。しかし、これは、いくつかの状況において望ましいかもしれない。
【００４４】
図２Ａを参照すると、プログラム可能なルックアップテーブル２１０は、当業者に良く知られている種類のプログラマブルロジックアレイ（ＰＬＡ）として実装されることができるか、もしくは、図２Ｂで例証されるように、そのようなＰＬＡのカスケード接続として実装されることができる。図２Ｂの場合は、ＰＬＡ１は、命令が提供する構成ビット２７７を第１の中間コードに変換し、ＰＬＡ２は、演算器の制御出力信号２８１を第２の中間コードに変換し、そして、ＰＬＡ３は、演算器に対する制御入力信号２７９のセットを生成するために、両方の中間コードを結合する。そのようなカスケード接続された装置は、図２Ａの１つのＰＬＡより比較的少ないハードウェアを必要とし得るので、望ましいかもしれない。
【００４５】
好ましい実施例において、クロスバー相互接続装置２４０、２５０、及びステージ２３０における演算器の間の相互接続の接続性は、データ処理命令における制御情報に基づいて、動的に構成可能ではない。その代りに、これらの構成要素２４０、２５０は、ＰＳＣＩをセットすること、恐らくは制御設定値操作のアップロードもしくは実行によって、操作に先立って構成可能である。
【００４６】
入力相互接続装置２４０は、複数の演算器モジュール２０２〜２０８の各々に対するオペランド入力信号を提供する。入力相互接続装置２４０は、復号化されたデータ処理命令に従ってオペランド２２４を受け取ることができると共に、フィードバックバス２２５を経由して、演算器２０２〜２０８の出力信号から結果値を受け取ることができる。
【００４７】
出力相互接続装置２５０は、演算器モジュール２０２〜２０８から出力信号を受け取ると共に、構成可能な実行ユニット１２６の最終出力結果２９０を供給する。フィードバックバス２２５、クロスバースイッチ２４０、及び、任意に更に記憶演算器２０６の効力によって、単純な複数の操作の直列結合、及び並列結合は、結果２９０を実行ユニットの外部に供給する前に、単一のデータ処理命令に応答して、入力オペランド２２４に関する複雑な操作を実行することができる。これらの有利なタイプの“深い”実行操作は、簡単に言えば、結果２９０がレジスタファイル１１２内の結果レジスタに書かれるように送出される前に、複数の（一般的には３つ以上）の数理演算における操作がオペランド、またはオペランドのセットに関して順次的に実行される操作と見なされ得る。これらのタイプの深い操作において、記憶演算器２０６は、中間結果が後の操作周期に関与できるように、結果２９０が出力される前に、中間結果を保持することができる。このタイプの直列操作及び／または並行操作は新奇である。更に、基礎的演算器の直列−並列結合であるネットワークを作るための容易さは、有利である。並列タイプの操作の例は、範囲検査“AND ( A>min、A<max )”であり、ここで２つの比較計算は、共通のオペランド“A ]”に関して並列に実行される。
【００４８】
当業者は、プロセッサスピードを損なわずに複雑な多段式の操作が達成されることを可能にするために、図２の全体の構造が適切にパイプライン化され得ると認識することになる。
【００４９】
このように、使用時に、どのように命令フェッチ及びデコード回路１１０がデータ処理命令を復号化すると共に、プロセッサ１００の様々な構成要素を制御し、命令が提供する構成情報２７７がプログラム可能なルックアップテーブル２１０に供給されると共に、各オペランド２２４がレジスタファイルから入力相互接続装置２４０に供給されるかが説明された。このように、選択的に命令が提供する構成情報２７７は、プログラム可能なルックアップテーブル２１０によって、演算器の内の１つ以上の機能及び／または動作の特徴を動的に変更する。
【００５０】
構成可能な実行ユニット１２６は、従って、いくつかのタイプの制御に頼る。１番目に、モジュール２０２〜２０８の様々な演算器の部類を提供するための配線接続の有利なレベルにおいて例示された静的制御がある。２番目に、例えば、相互接続構成要素２４０、２５０、及びプログラム可能なルックアップテーブル２１０の所定の構成に存在する擬似的な静的制御情報（ＰＳＣＩ）がある。ここで以前に説明されたように、それら自身で命令毎を基準として演算器の動的な設定（構成の調整）が可能であるソフトウェアでカスタマイズされた命令を実行するのに先立って実行ユニット２１０の機能及び動作の特徴を決定するために、擬似的な静的制御情報は、特定の構成可能な構成要素（例えばルックアップテーブル２１０、及び相互接続装置２４０、２５０）に分配される。更に、サイクル毎を基準として命令によって提供され得る動的な制御情報がある。命令セットがプロセッサの操作と互換性がある状態を維持することを保証する特定の一般的なプロトコルを順守するならば、命令セットは、それを提供される製造の後でカスタマイズされ得る。製造の後のソフトウェアでカスタマイズされた命令の結合は、演算器を動的に設定することが可能であり、前もって構成可能である他の構成要素は、広い範囲の操作、及び数学的機能を可能にすると共に、複雑なアルゴリズムに対する的確な解決方法に至る。このような状況において、“的確な”とは、サイクル数及び所要電力を減少させることを意味するように使用され得る。
【００５１】
例えば、（ｉ）外部のＤＭＡポートからの直接的なアップロードを用いて、もしくは（ｉｉ）ＰＳＣＩ設定値を計算するために使用されるデータが、ＰＳＣＩを設定する結果と共に、宛先アドレスに基づいてオペランドデータ２２４としてユニットに入ることに従う具体的に設計されたＰＳＣＩ設定値命令の実行によって、ＰＳＣＩは、構成要素に供給され得る。
【００５２】
（演算器構成情報を含む）プロセッサ命令のＯＰコード部分に含まれる動的な制御情報２７７は、プログラム可能なルックアップテーブル２１０にアクセスするために使用される。好ましい実施例において、動的な制御情報は、命令におけるマルチビットフィールドで表されると共に、プログラム可能なルックアップテーブル２１０から出力された設定値は、全体の実行ユニット２３０に対する制御入力信号（設定値）の伸張されたセットを含む。
【００５３】
好ましい実施例において、演算器ステージ２３０の様々なモジュール２０２〜２０８は、少なくとも１つの入力信号がベクトル、またはベクトルの要素（スカラ）のようなマルチビット値であるデータ処理操作を扱うように設計されている。従って、好ましい演算器モジュール２０２〜２０８は、マルチビット値に関する操作のレベルで構成可能である。例えば、データ処理操作に対する６４ビットのベクトル入力信号は、４つの１６ビットのスカラーオペランドを含み得る。ここで、ベクトルは、スカラーオペランドの集合体と見なされ得る。ソフトウェアでカスタマイズ可能なベクトル演算は、従って、複数のスカラーオペランドに関して達成され得ると共に、一般的に特定の量のスカラー要素の並べ換えを必要とする。ベクトル演算の全てのオペランドは、必ずしもベクトルである必要があるとは限らず、例えば、ベクトル演算は、スカラ入力及びベクトル入力の両方を備え得ると共に、スカラかベクトルのどちらの結果でも出力し得る。
【００５４】
本発明の実施例によって使用するのに適当な様々な命令フォーマットは、図３で示される。参照符号３００には、例えば、構成要素２１０、２４０、及び／または２５０の内の１つ以上に対する擬似的な静的制御設定値操作を実行するように具体的に設計されているＰＳＣＩ設定値命令がある。ＰＳＣＩ設定値命令３００は、一種のＰＳＣＩ設定値命令であることを示す第１のＯＰコード部分３０２と、構成されることを意図される各構成要素２１０、２４０、２５０に関連付けられた宛先を示す第２のＯＰコード部分３０３を含む。命令の残り３０４は、宛先として意図されるＰＳＣＩに伝送するか、または指し示すために使用され得る。
【００５５】
命令フォーマット４００を参照すると、それに基づいてプログラム可能なルックアップテーブル２１０において参照が行われる、動的な構成設定値情報を含むデータ処理命令の部類が開示される。命令４００は、好ましくは、命令が構成可能な実行ユニット２３０の内の１つ以上の演算器を設定するための動的な構成設定値情報を含む一種のデータ処理操作であるという指示を含んでいる、実行されるべきデータ処理操作を定義する第１のＯＰコード部分４１０を含む。命令４００は、更に、結果が送られることになる宛先アドレスを指し示す第２のＯＰコード部分４１５、演算器構成情報４２０を含む第３のＯＰコード部分４２０、及びデータ処理操作において使用するための１つ以上のオペランド４３０を含む。代りに、フィールド４３０は、レジスタ内の１つ以上のオペランドに対するポインタを含み得る。当業者は、他の実施例においては、説明されたフィールドの内の１つ以上が結合され得るか、または省略され得るということを理解することになる。
【００５６】
演算器構成情報４２０は、上記で説明されるように、ルックアップテーブル２１０にアクセスするために使用されると共に、演算器制御入力信号設定値２７９に寄与するように変換される。
【００５７】
好ましい実施例は、特定のアルゴリズム、例えば、畳み込み、高速フーリエ変換、トレリス／ビタビ計算、相関、有限インパルス応答フィルタ処理等を含むアルゴリズムの中の異なるタイプのデータ処理計算を特に能率的に扱うことができる。更に、好ましいプロセッサは、マルチビットオペランド値に関して動作するソフトウェアでカスタマイズされた命令、例えば４ビット以上のオペランドに作用する命令、または（一般的に、１６、３２、または６４ビットの）機械語のレベルにおいて作用する命令の実行を支援する。実施例は、従って、プロセッサ命令セットの一部分を形成する個別のソフトウェアでカスタマイズされたプロセッサ命令に応答して、ソフトウェアでカスタマイズされた複雑な操作を、（直列及び／または並列の）カスタマイズされた操作のセットとして、能率的に実行することができる。
【００５８】
当業者は、何が最も良いモードであると考えられるか、そして本発明を実行するのに適切な他のモードがどれであるかを、前述のものが説明した一方、本発明が好ましい実施例のこの記述において開示された特定の機器構成、または方法ステップに制限されるべきでないと認識することになる。当業者は、同様に、本発明が広い範囲の応用例を有していると共に、それらの実施例は、本発明の概念からはずれずに、広い範囲の変更の余地があるということを認識することになる。
【００５９】
例えば、１つまたは複数の演算器モジュールのあらゆる特徴は、動的に構成可能であり得る。プログラム可能なルックアップテーブルは、ＯＰコード情報の演算器制御設定値への変換に適当なあらゆる装置であり得る。他の実施例において、構成要素２４０、２５０の内の１つ以上は、命令内の制御情報を用いて動的に構成され得るか、またはその特定の演算器は、ＰＳＣＩを直接アップロードすることによって前もって構成可能である。
【図面の簡単な説明】
【００６０】
【図１】本発明を具体化するコンピュータプロセッサの構成図である。
【図２】図１のコンピュータプロセッサの代表的な、構成可能な実行ユニットを概略的に示す構成図である。
【図２Ａ】プログラム可能なルックアップテーブルの一つの例を示す図である。
【図２Ｂ】プログラム可能なルックアップテーブルの他の例を示す図である。
【図３】図１のコンピュータシステムによって使用するのに適当な代表的な命令フォーマットを概略的に例証する図である。
【符号の説明】
【００６１】
１００    プロセッサ
１０２    命令メモリ
１０４    データメモリ
１０８    命令バス
１０９    アドレスバス
１１０    命令フェッチ及びデコード回路
１１１    アドレスバス
１１２    レジスタファイル
１１３    制御バスシステム
１１５    オペランドバスシステム
１１８    ロード／ストアユニット
１２０    固定実行ユニット
１２１    データメモリ１０４への連結部
１２２    データメモリ１０４からの連結部
１２６    構成可能な実行ユニット
１２８    結果バス
２０２〜２０８    演算器モジュール
２０２    乗算演算器
２０４    ＡＬＵ演算器
２０６    記憶演算器
２０８    シフト／並び替え演算器
２１０    プログラム可能なルックアップテーブル
２２４    オペランド
２２５    フィードバックバス
２３０    構成可能な演算器ステージ
２４０    入力クロスバー相互接続装置
２４２    オペランド入力バス
２４９    擬似的な静的制御情報（ＰＳＣＩ）
２５０    出力クロスバー相互接続装置
２７７    演算器構成情報
２７９    演算器に対する制御入力信号
２８１    演算器モジュール２０２〜２０８からの制御出力信号
２９０    構成可能な実行ユニット１２６の最終出力結果
３００    ＰＳＣＩ設定値命令
３０２    第１のＯＰコード部分
３０３    第２のＯＰコード部分
３０４    命令の残り
４００    命令
４１０    第１のＯＰコード部分
４１５    第２のＯＰコード部分
４２０    第３のＯＰコード部分（演算器構成情報）
４３０    オペランド
【図１】
2008541216.tif 000003
【図２】
2008541216.tif 000004
【図２Ａ】
2008541216.tif 000005
【図２Ｂ】
2008541216.tif 000006
【図３】
2008541216.tif 000007
【国際調査報告】
2008541216.tif 000008
2008541216.tif 000009
2008541216.tif 000010
2008541216.tif 000011
2008541216.tif 000012