(57)【要約】  本発明の実施形態によれば、コンピュータプロセッサアーキテクチャが開示され、特にコンピュータプロセッサ、同じ動きをする方法、およびコンピュータのための指示集合を利用するコンピュータプログラム製品に関する。本発明による１実施形態において、１連の命令パケットを有するメモリから取出される命令パケットを復号する復号ユニットと、それぞれのチャンネルが複数の機能ユニットを備え、第１処理チャンネルが制御機能を実行でき、相対的により狭いビット幅を有する制御レジスタファイルを備え、第２処理チャンネルがいずれかのベクトルである少なくとも１つの入力でデータ処理機能を実行することができ、相対的により広いビット幅を有するデータレジスタファイルを備える第１および第２処理チャンネルとを備えるコンピュータプロセッサが提供される。上記復号ユニットは、命令パケットが（ｉ）第１処理チャンネルで順次実行される複数の制御命令か、あるいは（ｉｉ）第２実行チャネルで同時に実行されるための少なくとも１つのデータ処理命令を備える複数の命令と定義するかについて、それぞれの命令パケットを検出することができ、この検出に従い第１および第２チャンネルを制御する。【特許請求の範囲】
【請求項１】
１連の命令パケットを有するメモリから取出される命令パケットを復号する復号ユニットと、
第１および第２処理チャンネルとを備え、
それぞれのチャンネルは、複数の機能ユニットを有し、
上記第１処理チャンネルは、制御機能を実行でき、相対的により狭いビット幅を有する制御レジスタファイルを有し、
上記第２処理チャンネルは、いずれかのベクトルである少なくとも１つの入力でデータ処理機能を実行することができ、相対的により広いビット幅を有するデータレジスタファイルを有し、
上記復号ユニットは、命令パケットが（ｉ）第１処理チャンネルで順次実行される複数の制御命令と定義するか、あるいは（ｉｉ）第２実行チャネルで同時に実行されるための少なくとも１つのデータ処理命令を備える複数の命令と定義するかどうかを、それぞれの命令パケットに対して検出することができ、この検出に従い上記第１および第２チャンネルを制御することを特徴とするコンピュータプロセッサ。
【請求項２】
上記第１処理チャンネルは、更に分岐ユニットと制御実行ユニットとを備えることを特徴とする請求項１に記載のコンピュータプロセッサ。
【請求項３】
上記第２処理チャンネルは、更に固定データ実行ユニットと設定可変データ実行ユニットとを備えることを特徴とする請求項１又は２に記載のコンピュータプロセッサ。
【請求項４】
上記固定データ実行ユニットと上記設定可変データ実行ユニットの両方は、単一命令多重データフォーマットに従い機能することを特徴とする請求項３に記載のコンピュータプロセッサ。
【請求項５】
上記第１及び第２処理チャンネルは、ロードストアユニットを共有することを特徴とする上記請求項１乃至４のいずれか１項に記載のコンピュータプロセッサ。
【請求項６】
上記ロードストアユニットは、第１処理チャンネルにより提供された制御情報と、第２処理チャンネルにより提供されたデータとを使用することを特徴とする上記請求項５に記載のコンピュータプロセッサ。
【請求項７】
上記命令パケットが、全て等しいビット長であることを特徴とする上記請求項１乃至６のいずれか１項に記載のコンピュータプロセッサ。
【請求項８】
上記命令パケットが、全て６４ビット長であることを特徴とする上記請求項７に記載のコンピュータプロセッサ。
【請求項９】
上記制御命令が、全て１８ビットと２４ビットと間のビット長であることを特徴とする上記請求項１乃至８のいずれか１項に記載のコンピュータプロセッサ。
【請求項１０】
上記制御命令が、全て２１ビット長であることを特徴とする上記請求項９に記載のコンピュータプロセッサ。
【請求項１１】
１つの命令パケットのそれぞれの命令の性質が、制御命令、データ命令、及びメモリアクセス命令から少なくとも選択されることを特徴とする上記請求項７に記載のコンピュータプロセッサ。
【請求項１２】
それぞれのデータ命令のビット長が３４ビットであることを特徴とする上記請求項１１に記載のコンピュータプロセッサ。
【請求項１３】
それぞれのメモリアクセス命令のビット長が２８ビットであることを特徴とする上記請求項１１に記載のコンピュータプロセッサ。
【請求項１４】
上記復号ユニットは、上記命令パケットが３つの制御命令と定義することを検出するとき、上記復号ユニットが３つの制御命令が順次実行されることにより３つの制御命令を第１処理チャンネルに提供できることを特徴とする上記請求項１乃至１３のいずれか１項に記載のコンピュータプロセッサ。
【請求項１５】
上記復号ユニットは、上記命令パケットが少なくとも１つのデータ命令を備える２つの命令と定義することを検出するとき、上記復号ユニットが２つの制御命令が同時に実行されることにより少なくともデータ命令を第２処理チャンネルに提供できることを特徴とする上記請求項１乃至１４のいずれか１項に記載のコンピュータプロセッサ。
【請求項１６】
上記デコードユニットが連続したそれぞれの命令パケットの予め定められたビット位置で指定ビットの一連の値を読み込み可能であり、
ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、
ｂ）命令パケットが少なくとも１つがデータ命令である複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質のどこに定義するかと
を決定することを特徴とする上記請求項１乃至１５のいずれか１項に記載のコンピュータプロセッサ。
【請求項１７】
目的地レジスタファイルに結果を戻す前に、上記設定可変データ実行ユニットが単一発行された命令により提供されたデータ上の２以上の連続機能を実行することができることを特徴とする上記請求項３乃至１６のいずれか１項に記載のコンピュータプロセッサ。
【請求項１８】
それぞれが複数の機能ユニットを備える第１及び第２処理チャンネルを備え、第１処理チャンネルが相対的により狭いビット幅を有する制御レジスタファイルを備え、第２処理チャンネルが相対的により広いビット幅を有するデータレジスタファイルを備えたコンピュータプロセッサの動作方法であって、
命令パケットが等しい長さの複数の制御命令か、あるいは少なくともどちらかがベクトルである、少なくとも１つのデータ命令を備える２つの指示のいずれを定義するかを検出するために命令パケットを復号し、
上記命令パケットが等しい長さの複数の制御命令を定義するとき、制御命令が順次実行されることにより第１処理チャンネルに上記制御命令を提供し、
上記命令パケットが少なくとも１つのデータ命令を備える複数の命令を定義するとき、
複数の命令が同時に実行されることにより第２処理チャンネルにデータ命令を提供することを特徴とするコンピュータプロセッサの動作方法。
【請求項１９】
１連の命令パケットを具備するプログラムコード手段を備えたコンピュータプログラム製品であって、
上記命令パケットが、等しい長さの複数の制御命令を備える第１形式の命令パケットと、少なくとも１つのデータ命令を具備する複数の命令を備える第２形式の命令パケットとを具備し、
上記コンピュータプログラム製品が、
第１形式の命令パケットが専用の制御処理チャンネルにより実行され、
第２命令パケットの少なくとも１つのデータ命令が専用のデータ処理チャンネルにより実行され、
上記専用の制御処理チャンネルは上記専用のデータ処理チャンネルより相対的に狭いビット幅を有するようにコンピュータ上で動作するのに適することを特徴とするコンピュータプログラム製品。
【請求項２０】
それぞれ複数の機能ユニットを備える第１および第２処理チャンネルを備え、
上記第１処理チャンネルは、相対的により狭いビット幅を有する制御レジスタファイルを備え、上記第２処理チャンネルは、相対的により広いビット幅を有するデータレジスタファイルを備えたコンピュータプロセッサの動作方法であって、
プログラムメモリから、上記命令パケットの全てが予め定められたビット位置で指定ビットの１組を具備する、１連の命令パケットを取り出し、
それぞれの命令パケットを復号し、
上記復号段階が、
ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、
ｂ）命令パケットが少なくとも１つがデータ命令である複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質のどこに定義するかを決定するために上記指定ビットの値を読み込むことを具備することを特徴とするコンピュータプロセッサの動作方法。
【請求項２１】
１連の命令パケットを具備するプログラムコード手段を備えたコンピュータプログラム製品であって、
上記命令パケットが実質的に等しい長さの複数の制御命令を備える第１形式の命令パケットと、少なくとも１つのデータ命令を具備する第１及び第２命令を備える第２形式の命令パケットを具備した
上記命令パケットが命令パケットの範囲内の指定されたビット位置で少なくとも１つのインジケータビットを具備し、
コンピュータプログラム製品は、上記インジケータビットが、
ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、
ｂ）少なくとも１つのデータ命令を備える複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質に定義するケースであるかを指示するために、コンピュータの復号ユニットと協力するのに適するようにコンピュータ上で動作するのに適することを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータプロセッサ、同じ機能の方法、及びコンピュータのための命令セットを備えるコンピュータプログラム製品に関する。
【背景技術】
【０００２】
コンピュータプロセッサの速度を上げるために、先行技術アーキテクチャは、命令を実行するために二重実行経路（dual execution path）を使用している。二重実行経路プロセッサは、プロセッサ速度を上げるために、機能の並行処理を使用して、単一命令複数データ（ＳＩＭＤ）原則に従い機能することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、二重実行経路及びＳＩＭＤ処理の使用にもかかわらず、プロセッサ速度を増加させる継続的な必要性がある。典型的な二重実行経路プロセッサは２つの実質的に同一のチャンネルを使用し、その結果それぞれのチャンネルは制御コードとデータ経路コードを取り扱う。既知のプロセッサが３２ビット標準符号化と１６ビットの「深い（dense）」符号化の組合せをサポートする一方で、そのような方式は、１６ビットフォーマットの利用できる少ないビットによる意味内容の不足を含むいくつかの不都合に苦しむ。
【０００４】
さらに、従来の多目的デジタル信号プロセッサは、例えば畳み込み、高速フーリエ変換、トレリス／ビタビ符号化、相互関係、有限インパルス応答フィルタ、及びその他の機能のような専門化された機能を実行することを具備する多目的の特定アルゴリズムのアプリケーションに適合できない。
【課題を解決するための手段】
【０００５】
本発明による一実施形態において、コンピュータプロセッサが提供される。上記コンピュータプロセッサは１連の命令パケットを有するメモリから取出される命令パケットを復号する復号ユニットと、第１および第２処理チャンネルとを備え、それぞれのチャンネルは、複数の機能ユニットを有し、上記第１処理チャンネルは、制御機能を実行でき、相対的により狭いビット幅を有する制御レジスタファイルを有し、上記第２処理チャンネルは、いずれかのベクトルである少なくとも１つの入力でデータ処理機能を実行することができ、相対的により広いビット幅を有するデータレジスタファイルを有し、上記復号ユニットは、命令パケットが（ｉ）第１処理チャンネルで順次実行される複数の制御命令と定義するか、あるいは（ｉｉ）第２実行チャネルで同時に実行されるための少なくとも１つのデータ処理命令を備える複数の命令と定義するかどうかを、それぞれの命令パケットに対して検出することができ、この検出に従い上記第１および第２チャンネルを制御する可能性がある。
【０００６】
更に関連する実施形態において、上記第１処理チャンネルは、更に分岐ユニットと制御実行ユニットとを備える可能性がある。上記第２処理チャンネルは、更に固定データ実行ユニットと設定可変（configurable）データ実行ユニットとを備える可能性がある。上記固定データ実行ユニットと上記設定可変データ実行ユニットの両方は、単一命令多重データフォーマットに従い機能する可能性がある。上記第１及び第２処理チャンネルは、ロードストアユニットを共有する可能性がある。上記ロードストアユニットは、第１処理チャンネルにより提供された制御情報と、第２処理チャンネルにより提供されたデータとを使用する可能性がある。上記命令パケットが、例えば６４ビットであるように、全て等しいビット長である可能性がある。上記制御命令が、例えば２１ビットであるように、全て１８ビットと２４ビットと間のビット長である可能性がある。１つの命令パケットのそれぞれの命令の性質が、制御命令、データ命令、及びメモリアクセス命令から少なくとも選択される可能性がある。それぞれのデータ命令のビット長が３４ビットである可能性があり、それぞれのメモリアクセス命令のビット長が２８ビットである可能性がある。
【０００７】
更に関連する実施形態において、上記復号ユニットは、上記命令パケットが３つの制御命令と定義することを検出するとき、上記復号ユニットが３つの制御命令が順次実行されることにより３つの制御命令を第１処理チャンネルに提供できる可能性がある。また、上記復号ユニットは、上記命令パケットが少なくとも１つのデータ命令を備える２つの命令と定義することを検出するとき、上記復号ユニットが２つの制御命令が同時に実行されることにより少なくともデータ命令を第２処理チャンネルに提供できる可能性がある。上記デコードユニットが連続したそれぞれの命令パケットの予め定められたビット位置で指定ビットの一連の値を読み込み可能であり、ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、ｂ）命令パケットが少なくとも１つがデータ命令である複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質のどこに定義するかを決定する可能性がある。目的地レジスタファイルに結果を戻す前に、上記設定可変データ実行ユニットが単一発行された命令により提供されたデータ上の２以上の連続機能を実行することができる可能性がある。
【０００８】
本発明による別の実施形態において、それぞれが複数の機能ユニットを備える第１及び第２処理チャンネルを備え、第１処理チャンネルが相対的により狭いビット幅を有する制御レジスタファイルを備え、第２処理チャンネルが相対的により広いビット幅を有するデータレジスタファイルを備えたコンピュータプロセッサの動作方法が提供される。上記方法は、命令パケットが等しい長さの複数の制御命令か、あるいは少なくともどちらかがベクトルである、少なくとも１つのデータ命令を備える２つの指示のいずれを定義するかを検出するために命令パケットを復号し、上記命令パケットが等しい長さの複数の制御命令を定義するとき、制御命令が順次実行されることにより第１処理チャンネルに上記制御命令を提供し、上記命令パケットが少なくとも１つのデータ命令を備える複数の命令を定義するとき、複数の命令が同時に実行されることにより第２処理チャンネルにデータ命令を提供する。
【０００９】
本発明による別の実施例において、１連の命令パケットを具備するプログラムコード手段を備えたコンピュータプログラム製品であって、上記命令パケットが、等しい長さの複数の制御命令を備える第１形式の命令パケットと、少なくとも１つのデータ命令を具備する複数の命令を備える第２形式の命令パケットとを具備し、上記コンピュータプログラム製品が、第１形式の命令パケットが専用の制御処理チャンネルにより実行され、第２命令パケットの少なくとも１つのデータ命令が専用のデータ処理チャンネルにより実行され、上記専用の制御処理チャンネルは上記専用のデータ処理チャンネルより相対的に狭いビット幅を有するようにコンピュータ上で動作するのに適することを特徴とするコンピュータプログラム製品が提供される。
【００１０】
本発明による別の実施形態において、それぞれ複数の機能ユニットを備える第１および第２処理チャンネルを備え、上記第１処理チャンネルは、相対的により狭いビット幅を有する制御レジスタファイルを備え、上記第２処理チャンネルは、相対的により広いビット幅を有するデータレジスタファイルを備えたコンピュータプロセッサの動作方法であって、プログラムメモリから、上記命令パケットの全てが予め定められたビット位置で指定ビットの１組を具備する、１連の命令パケットを取り出し、それぞれの命令パケットを復号し、上記復号段階が、ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、ｂ）命令パケットが少なくとも１つがデータ命令である複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質のどこに定義するかを決定するために上記指定ビット値を読み込むことを具備することを特徴とするコンピュータプロセッサの動作方法が提供される。
【００１１】
本発明による別の実施形態において、１連の命令パケットを具備するプログラムコード手段を備えたコンピュータプログラム製品であって、上記命令パケットが実質的に等しい長さの複数の制御命令を備える第１形式の命令パケットと、少なくとも１つのデータ命令を具備する第１及び第２命令を備える第２形式の命令パケットを具備し、上記命令パケットが命令パケットの範囲内の指定されたビット位置で少なくとも１つのインジケータビットを具備し、コンピュータプログラム製品は、上記インジケータビットが、ａ）命令パケットが複数の制御命令か、あるいは少なくとも１つがデータ命令である複数の命令のいずれを定義するかと、ｂ）少なくとも１つのデータ命令を備える複数の命令を、制御命令、データ命令、及びメモリアクセス命令から選択される２つの命令のそれぞれの性質に定義するケースであるかを指示するために、コンピュータの復号ユニットと協力するのに適するようにコンピュータ上で動作するのに適することを特徴とするコンピュータプログラム製品が提供される。
【発明の効果】
【００１２】
本発明のさらなる効果と新しい特徴は、以下の記載の一部で述べられ、以下に添付された図面の精査と同時に、当業者によりある程度明らかになるか、あるいは本発明の実施により学ばれる可能性がある。
【００１３】
本発明のさらなる理解のために、そして同じ内容をどのように実行に移すかを示すために、参照は添付の図面に、例証のためだけにここでなされる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の一実施形態による非対称の二重経路コンピュータプロセッサのブロック図である。図１のプロセッサは、１つの命令流れ１００の処理を２つの異なるハードウェア実行経路、すなわち制御コード処理のために使用される制御実行経路１０２と、データコード処理のために使用されるデータ実行経路１０３に分配する。２つの実行経路１０２，１０３のデータ幅、オペレータ、及び他の特徴は、制御コードとデータ経路コードの異なる特徴に従い異なる。典型的に、制御コードはより少なく、より狭いレジスタを支持し、並行処理するのが難しく、そして典型的にしかし排他的でなくＣコードや別の高級言語で記載され、そして通常そのコード密度はその速度パフォーマンスより重要である。対照的に、データ経路コードは典型的に広いレジスタの大きなファイルを支持し、非常に並行処理がしやすく、アセンブリ言語で記載され、そしてそのパフォーマンスはそのコード密度より重要である。図１のプロセッサにおいて、２本の異なる実行経路１０２と１０３は、コードの２つの異なる形式を取り扱うために使用され、それぞれの端部には、例えば制御レジスタファイル１０４とデータレジスタファイル１０５のような、実行経路自身の構造上のレジスタファイルが備えられる。これらはレジスタの幅と数で差別化され、制御レジスタは一例として３２ビットのビット数より狭い幅であり、そしてデータレジスタは一例として６４ビットのより広い幅である。その２つの実行経路は、それらがそれぞれ異なる特別の機能を実行するという事実のために異なるビット幅であるという点により、プロセッサは非対称である。
【００１５】
図１のプロセッサにおいて、命令流れ１００は、一連の命令パケットから設定される。提供されるそれぞれの命令パケットは、さらに以下で記載されるように、制御命令をデータ命令から切り離す命令復号ユニット１０１により復号される。制御実行経路１０２は命令流れのために制御流れ機能を取り扱い、分岐ユニット１０６、実行ユニット１０７、及びこの実施形態ではデータ実行経路１０３と共有されるロードストアユニット１０８を使用して機械の状態レジスタを管理する。プロセッサの制御側だけは、例えばＣ、Ｃ＋＋のコンパイラ、あるいはＪＡＶＡ（登録商標）言語、あるいは別の高級言語コンパイラのようなコンパイラに見えなければならない。制御側の範囲内で、分岐ユニット１０６と実行ユニット１０７の機能は、当業者に知られた従来のプロセッサ設計による。
【００１６】
固定実行ユニット１０９と設定可変の深い実行ユニット１１０の両方において、データ実行経路１０３は、単一命令複数データ（ＳＩＭＤ）の並行処理を採用する。さらに以下で記載されるように、設定可変の深い実行ユニット１１０は処理の深さの値を提供し、そして、従来のＳＩＭＤプロセッサにより使用される幅の値を加えて、命令当たりの仕事を増加させる。
【００１７】
もし復号された命令が制御命令を定義するならば、それは機械の制御実行経路上で例えば分岐ユニット１０６、実行ユニット１０７、及びロードストアユニット１０８のような、適切な機能ユニットに適用される。もし復号された命令が固定あるいは設定可変のいずれかのデータ処理機能で命令を定義するならば、それはデータ処理実行経路に提供される。命令パケットのデータ命令部分の範囲内で、指定されたビットは命令が固定あるいは設定可変データ処理命令であるかどうかを示し、設定可変命令の場合、更に指定されたビットは設定情報を定義する。復号されたデータ処理命令の下位形式に従い、データは機械のデータ処理経路の固定あるいは設定可変実行下位経路に提供される。
【００１８】
ここで「設定可変」は、複数のあらかじめ定義された（「疑似固定」）オペレータ設定の中からオペレータ設定を選択する能力を示す。オペレータの疑似固定設定は、オペレータ（i）にある形式の機能を実施させ、または(ii)にある方法で関連要素と相互接続させ、または（iii）に上記（i）と（ii）の組合せとさせるために効果的である。実際には、選択された疑似固定設定は、一度に多くのオペレータ要素の動作と相互接続性を決定する可能性がある。それはデータ経路と関連して設定の切り替えを制御することもできる。好ましい実施形態において、少なくとも複数の疑似固定オペレータ設定のいくつかは、さらに以下で示されるように、データ処理命令の機能コード部分により選択可能である。またこの実施形態によれば、「設定可変命令」は、例えば４ビット以上のマルチビット値のレベルまたはワードのレベルのようなマルチビット値のレベルで、カスタマイズされた機能の実施を許可する。
【００１９】
機械のそれぞれの異なる側で実施される、制御とデータ処理命令がメモリアクセス（ロード／ストア）と基本的な算術演算を定義することができることが注目される。制御機能のための入力／オペランドは、制御レジスタファイル１０４に提供し、あるいは提供される可能性がある一方で、データ処理機能のためのデータ／オペランドはレジスタファイル１０５に提供し、あるいは提供される可能性がある。
【００２０】
本発明の一実施形態によれば、それぞれのデータ処理機能の少なくとも１つの入力は、ベクトルである可能性がある。この点で、設定可変データ経路の設定可変オペレータや切り替え回路は、実施される機能の性質やその間の相互接続性によりベクトル機能を実施するために設定可変であると考えられる。例えば、データ処理機能への６４ビットベクトル入力は、４つの１６ビットスカラオペランドを具備する可能性がある。ここで、「ベクトル」はスカラオペランドの組み合わせである。ベクトル算術は、複数のスカラオペランド上で実施される可能性があり、スカラ要素の方向（steering）、動き（movement）、及び置換（permutation）を具備する可能性がある。ベクトル機能の全てのオペランドが、ベクトルである必要があるというわけではなく、例えばベクトル機能には入力としてスカラと少なくとも１つのベクトルを有する可能性があり、スカラかベクトルのいずれかである結果を出力する可能性がある。
【００２１】
ここで、「制御命令」は、プログラムフロー、分岐、及びアドレス生成、しかしデータ処理ではない、に使用される命令を具備する。「データ処理命令」は、論理演算のための命令、または少なくとも１つの入力がベクトルである算術演算を具備する。データ処理命令は、複数のデータ命令で、例えばＳＩＭＤ処理において、または、データエレメントの短いベクトルをより広くする処理において、機能する可能性がある。制御命令の重要な機能と、今述べられたデータ処理命令は重複しないが、共通性は両方の形式のコードが論理及びスカラ算術能力を有するということである。
【００２２】
図２は、図１のプロセッサのために、３形式の命令パケットを示す。それぞれの形式の命令パケットは、長さ６４ビットである。命令パケット２１１は、深い制御コードのための３スカラ形式であって、３つの２１ビット制御命令（ｃ２１）を具備する。命令パケット２１２と２１３は、データ経路コードの並行実行のためのＬＩＷ（長い命令ワード）形式である。この例では、それぞれの命令パケット２１２，２１３は２つの命令を具備するが、異なる数が必要に応じて具備される可能性がある。命令パケット２１２は、３４ビットのデータ命令（ｄ３４）と２８ビットの記憶命令（ｍ２８）を具備し、データ側ロードストア機能（上記ｍ２８命令）とデータ側算術（上記ｄ３４命令）の並行実行のために使用される。メモリクラス命令（ｍ２８）は、制御側からのアドレスを使用して、プロセッサの制御側あるいはデータ側から、読み込まれあるいは書き込まれることができる。命令パケット２１３は、３４ビットのデータ命令（ｄ３４）と２１ビット制御命令（ｃ２１）を具備し、例えば制御側算術、分岐、またはロードストア機能のような制御側機能（上記ｃ２１命令）とデータ側算術（上記ｄ３４命令）の並行実行のために使用される。
【００２３】
図１の実施形態の命令復号ユニット１０１は、どの形式のパケットが復号されているかについて決定するそれぞれの命令パケットの、最初の識別ビットまたは予め定められたビット位置の他の指定の識別ビットを使用する。例えば、図２で示すように、最初の指示ビット「１」は、命令パケットが３つの制御命令を有するスカラ制御命令形式であることを示すが、最初の指示ビット「０１」と「００」が、パケット２１２のデータおよびメモリ命令、あるいはパケット２１３のデータ及び制御命令である、形式２１２及び２１３の命令パケットを示す。それぞれの命令パケットの最初のビットを復号した後、図１の復号ユニット１０１は、命令パケットの上記形式に従い、制御実行経路１０２かデータ実行経路１０３のいずれかに適切にそれぞれのパケットの命令を渡す。
【００２４】
図２の命令パケットを実行するために、図１の実施形態のプロセッサの命令復号ユニット１０１は、メモリからプログラムパケットを連続して取り出し、上記プログラムパケットは連続して実行される。命令パケットの範囲内で、パケット２１１の命令は、最初に実行される６４ビットのワードの最も重要でない終わりの２１ビットの制御命令、次いで２１ビットの制御命令、次いで最も重要な２１ビットの制御命令で終わる順で、連続して実行される。命令パケット２１２と２１３の範囲内で、上記命令は同時に実行されることができる。これは、必ずしも本発明による実施形態でなければならないというわけではない。従って、図１の実施形態のプロセッサのプログラム順序において、プログラムパケットは連続して実行されるが、パケットの範囲内の命令は、パケット形式２１１のものは連続して、あるいはパケット形式２１２と２１３のものは同時に、のいずれかで実行されることを可能とする。以下では、形式２１２と２１３の命令パケットは、１メモリと１データ命令、及び１制御命令と１データ命令をそれぞれ具備するＭＤ及びＣＤパケットとして簡略化される。
【００２５】
２１ビット制御命令の使用において、図１の実施形態は、他の長さの命令を有するプロセッサにおいて、特にデータ命令のための３２ビット標準符号化と制御コードのための１６ビットの「深い」符号化との組み合わせを提供するプロセッサにおいて、発見されるかなりの不都合を克服する。このような二重１６／３２ビットのプロセッサにおいて、分岐、アドレス取得、あるいはその他の手段による符号化方式間で切り替える手段により、それぞれの命令のための二重符号化を使用すること、または２つの別の復号器を使用することに起因する冗長性が存在する。本発明の一実施形態によれば、この冗長性は、全ての制御命令に１つの２１ビット長を使用することにより取り除かれる。さらにまた、２１ビット制御命令の使用は、１６ビットの「深い」符号化スキームの意味内容の不足に起因する不都合を取り除く。意味内容の不足のため、一般的に１６ビットスキームを使用するプロセッサは、設計の譲歩のいくらかの混合を必要とする。例えば、コピーによる対応するコード膨張による、２オペランドの有害な機能の使用、流出／十分のコードの膨張、あるいはウインドウポインタ操作による、レジスタファイルの下位セットへのウインドウ表示のアクセスの使用、あるいは全ての機能が極めて少ない利用できる１６ビットフォーマットのオペコードビットにより表現される訳ではないので、３２ビットフォーマットへしばしば復帰すること等である。本発明の一実施形態において、これらの不都合は、２１ビット制御命令の使用により軽減される。
【００２６】
本発明の一実施形態によれば、多種多様な命令が使用される可能性がある。例えば、命令符号は以下の表１に示すいずれかである可能性があり、ここではＣフォーマット、Ｍフォーマット、及びＤフォーマットは、それぞれ制御、メモリアクセス、データフォーマットを意味する。
【００２７】
【表１】
2007531134.tif 000002
【００２８】
また本発明の一実施形態によれば、Ｃフォーマット命令は全てＳＩＳＤ（単一命令単一データ）機能を提供するが、ＭフォーマットとＤフォーマット命令はＳＩＳＤかＳＩＭＤ機能のいずれかを提供する。例えば、制御命令は、一般的な算術、比較、及び論理命令、制御フロー命令、メモリロード／ストア命令、及びその他を提供する可能性がある。データ命令は、一般的な算術、シフト、論理、及び比較命令、シャッフル、ソート、バイト拡張、順序変換命令、線形フィードバックシフトレジスタ命令、及び以下で記載される設定可変の深い実行装置１１０を介するユーザー定義命令を提供する可能性がある。メモリ命令は、メモリロード／ストア、コピーは、データレジスタに制御レジスタを選択されたコピー、データレジスタに制御レジスタを放送するコピー、及び差し迫ったレジスタ命令を提供する可能性がある。
【００２９】
本発明の一実施形態によれば、図１のプロセッサは、第１の固定データ実行経路と第２の設定可変データ実行経路を特徴とする。第１データ経路は、従来のＳＩＭＤ処理設計と同様の方法で、通路に分配される固定ＳＩＭＤ実行ユニットを有する。第２データ経路は、設定可変の深い実行ユニット１１０を有する。「深い実行」は、レジスタファイルに結果を返信する前に、１度発行された命令により提供されるデータで複数の連続的な機能を実行するプロセッサの能力を示す。深い実行の１つの例は、１回の命令からのデータで２つの機能（１つの乗算と１つの加算）を実行する従来のＭＡＣ機能（乗じる、及び蓄積する）に見られ、それゆえ順位２の深さを有する。深い実行は、また結果出力の数と等しい入力オペランドの数により特徴づけられる可能性があり、または同等に入力結合価（valency-in）が出力結合価（valency-out）に等しい。このように、例えば、１つの結果を生ずる従来の２オペランドの加算は、オペランドの数が結果の数と等しくないので、好ましい深い実行の例ではないが、反対に、畳み込み、高速フーリエ変換、トレリス／ビタビ符号化、相関器（correlators）、有限インパルス応答フィルタ、及びその他の信号処理アルゴリズムは、好ましい実施形態による深い実行の例である。一般的にビットレベルで、そして、メモリマップの方法において、アプリケーションに特有のデジタル信号処理（ＤＳＰ）アルゴリズムは、深い実行を実行する。しかしながら、従来のレジスタマップされた多目的ＤＳＰのものは、深い実行を実行せず、その代わりにＭＡＣ機能において、最高でも順序２の濃さで命令を実行する。対照的に、図１のプロセッサは、直接２より大きい順序のワードレベルの設定可変命令値の深い実行を可能とするレジスタマップの多目的プロセッサを提供する。図１のプロセッサにおいて、深い実行命令の性質、すなわち実行される数学的機能のグラフは、命令そのものにおいて、設定情報により、調節されあるいはカスタマイズされることを可能とする。好ましい実施形態において、データフォーマット命令は、設定情報に割り当てられるビット位置を具備する。この能力を提供するために、深い実行ユニット１１０は、それぞれのアプリケーションに適合するために、アップロードされることを可能とする、オペレータモード、相互接続、及び定数を意味する設定可変実行資源を有する。深い実行は、並行実行に深さの大きさを加える。そして、それはＳＩＭＤとＬＩＷ処理の以前の概念により提供される幅の大きさに対して直角であり、したがってそれは多目的プロセッサの命令対仕事率を増加するための更なる大きさを表現する。
【００３０】
本発明の一実施形態によれば、図３は典型的な設定可変の深い実行ユニット３１０の設定要素を示す。図１に示すように、設定可変の深い実行ユニット１１０はデータ実行経路１０３の部分であり、したがって、図２のＭＤ及びＣＤの命令パケットからデータ側命令により命令される可能性がある。図３の命令３１４とオペランド３１５は、図１の命令復号ユニット１０１とデータレジスタファイル１０５から深い実行ユニット３１０に提供される。命令３１４のマルチビット設定コードは制御マップ３１６にアクセスするのに使用され、それはマルチビットコードを上記深い実行ユニットの設定可変オペレータの設定信号の比較的複雑なセットに拡大する。上記制御マップ３１６は、例えば、参照テーブルとして具体化される可能性がある。そこでは上記命令の異なる可能なマルチビットコードは、深い実行ユニットの異なる可能なオペレータ設定にマップされる。制御マップ３１６の参照テーブルの参照結果に基づき、クロスバー相互接続３１７は、マルチビット命令コードにより示されるオペレータ設定を実行するのに必要などんなものでも配置し、オペレータ３１８〜３２１のセットを設定する。例えば、上記オペレータは、乗算オペレータ３１８、算術論理ユニット（ＡＬＵ）オペレータ３１９、状態オペレータ３２０、あるいはクロス通路交換器３２１を具備する可能性がある。一実施形態において、深い実行ユニットは、１５のオペレータ、すなわち１つの乗算オペレータ３１８、８つのＡＬＵオペレータ３１９、４つの状態オペレータ３２０、及び２つのクロス通路交換器３２１を具備する。他の数のオペレータも可能である。深い実行ユニットに提供されるオペランド３１５は、例えば、２つの１６ビットオペランド、あるいは１つの３２ビットオペランド上の４つの８ビットオペランドである可能性があり、これらは、適切なオペレータ３１８〜３２１にオペランドを提供する可能性のある第２クロスバー相互接続３２２に提供される。第２クロスバー相互接続３２２もオペレータ３１８〜３２１から中間結果のフィードバック３２４を受信し、それは次の順番で第２クロスバー相互接続３２２により適切なオペレータ３１８〜３２１にも提供される可能性がある。第３クロスバー相互接続３２３は、上記オペレータ３１８〜３２１からの結果を多重化し、最終結果３２５を出力する。様々な制御信号は、オペレータを設定するのに使用され、例えば、図３の実施形態の制御マップ３１６は、１つの参照テーブルとして必ずしも具体化される必要があるわけではなく、一連の２以上の縦列の参照テーブルとして具体化される可能性がある。第１参照テーブルのエントリは所定のマルチビット命令コードから第２参照テーブルを示すことができれば、それにより複雑なオペレータ設定のためのそれぞれの参照テーブルで必要とされる記録の量を減少できる。例えば、第１参照テーブルが設定カテゴリーのライブラリに組織されることができれば、その結果複数のマルチビット命令コードは、特定の設定をグループのそれぞれのマルチビットコードに提供する以降の参照テーブルを示しているそれぞれのグループとともに第１参照テーブルに集められる。
【００３１】
図３の実施形態によれば、上記オペレータは様々なオペレータクラスに有利に予め設定される。実際には、これは配線接続の戦略計画レベルで達成される。このアプローチの特徴は、それがより少ない予め定義された設定が記憶される必要があることを意味し、その制御回路がより単純にできることを意味する。例えば、オペレータ３１８が乗算オペレータのクラスの中で予め設定され、オペレータ３１９は、ＡＬＵオペレータとして予め設定され、オペレータ３２０は、状態オペレータとして予め設定され、そしてオペレータ３２１はクロス通路交換器として予め設定され、そして他の予め設定されたオペレータクラスが可能である。しかしながら、たとえオペレータのクラスが予め設定されるとしても、命令に少なくとも、所定のアルゴリズムを実施する特定の設定の最終的配置のための、（i）それぞれのクラス内のオペレータの連結性、（ii）その他のクラスからのオペレータとの連結性、及び（iii）任意の関連する切換手段の連結性、を取り決めることを可能とするように実行時の柔軟性が存在する。
【００３２】
上述は何が発明を実施する最良の形態であり必要に応じた他の方法であると考えられるかについて述べる一方で、本発明が好ましい実施形態のこの記載で明らかにされる特定の装置設定または方法段階に限定されてはならないことを熟練した読者は認める。当業者は本発明がアプリケーションの幅広い範囲を有し、実施形態が発明の概念から離れることなく、広範囲にわたる異なる実施と修正の余地があることを認める。特に、ここに述べられる典型的なビット幅は制限することを目的とせず、半ワード、ワード、長さ等と呼ばれるビット幅の任意の選択も制限しない。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態による非対称二重実行経路コンピュータプロセッサのブロック図である。
【図２】本発明の一実施形態による図１のプロセッサのための命令の典型的なクラスを示す図である。
【図３】本発明の一実施形態による設定可変の深い実行装置の設定要素を示す概略図である。
【符号の説明】
【００３４】
１０１  命令復号ユニット
１０２  制御実行経路
１０３  データ実行経路
１０４  制御レジスタファイル
１０５  データレジスタファイル
１０６  分岐ユニット
１０７  実行ユニット
１０８  ロードストアユニット
１０９  ＳＩＭＤ固定実行ユニット
１１０  設定可変の深い実行ユニット
【図１】
2007531134.tif 000003
【図２】
2007531134.tif 000004
【図３】
2007531134.tif 000005
【国際調査報告】
2007531134.tif 000006
2007531134.tif 000007
2007531134.tif 000008