(57)【要約】プロセッサが、メモリと、メモリに結合され、メモリから取得された命令をデコードする命令デコーダと、デコードされた命令を実行する複数の実行ユニットとを含む。それらの命令のうちの１つまたは複数が複合命令形式内にあり、その複合命令形式内では、１つの命令が複数のオペレーションフィールドを含み、オペレーションフィールドのうちの１つまたは複数のそれぞれが、少なくともオペレーションコードフィールドとファンクションフィールドとを含む。オペレーションコードフィールドおよびファンクションフィールドは、一緒になって、１つまたは複数の実行ユニットによって実行されるべき特定のオペレーションを指定する。
2007533006.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリに結合され、前記メモリから取得された命令をデコードする命令デコーダと、
前記デコードされた命令を実行する複数の実行ユニットとを備えるプロセッサであって、
前記命令のうちの１つまたは複数が複合命令形式内にあり、前記複合命令形式内では、１つの命令が複数のオペレーションフィールドを含み、前記オペレーションフィールドのうちの１つまたは複数のそれぞれが、少なくともオペレーションコードフィールドとファンクションフィールドとを含み、前記オペレーションコードフィールドおよび前記ファンクションフィールドが、一緒になって、前記実行ユニットのうちの１つまたは複数によって実行されるべき特定のオペレーションを指定するプロセッサ。
【請求項２】
前記オペレーションコードフィールドおよびファンクションフィールドの、前記オペレーションフィールド内でのサイズおよびロケーションが固定されている、請求項１に記載のプロセッサ。
【請求項３】
前記オペレーションコードが、ｊｕｍｐ（ジャンプ）、ｃｏｎｓｔａｎｔ（定数）、ｉｎｔｅｇｅｒ（整数）、ｌｏａｄ（ロード）、ｓｔｏｒｅ（格納）、ｃｏｐｙ  ｔｏ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタへのコピー）、ｃｏｐｙ  ｆｒｏｍ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタからのコピー）、およびｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ（単一命令複数データ）を含む、請求項２に記載のプロセッサ。
【請求項４】
前記複合命令形式内の前記命令のうちの所与の１つが、少なくとも３つのオペレーションフィールドを含む、請求項１に記載のプロセッサ。
【請求項５】
前記複合命令形式内の前記命令のうちの所与の１つが、前記複数のオペレーションフィールドに加えて、従属フィールドを含む、少なくとも１つの追加フィールドを含む、請求項１に記載のプロセッサ。
【請求項６】
前記従属フィールドが、前記複数のオペレーションフィールドにおいて指定された複合オペレーションを順次実行するか、並列実行するかを指定する単一ビットのフィールドを含む、請求項５に記載のプロセッサ。
【請求項７】
前記複合命令形式内の前記命令のうちの所与の１つが、３つの２１ビットオペレーションフィールドと１ビット従属フィールドとを有する６４ビット命令を含む、請求項１に記載のプロセッサ。
【請求項８】
前記複合命令形式内の前記命令のうちの所与の１つが、前記命令の複数のオペレーションフィールドによって指定される複合オペレーションを含む、請求項１に記載のプロセッサ。
【請求項９】
前記複合命令形式内の前記命令の所与の１つの、前記オペレーションフィールドのうちの１つまたは複数が、それによって指定可能な特定のオペレーションに関して限定される、請求項１に記載のプロセッサ。
【請求項１０】
前記複合命令形式内の前記命令の所与の１つの、前記オペレーションフィールドのうちの１つまたは複数が、単一命令複数データオペレーションに限定される、請求項９に記載のプロセッサ。
【請求項１１】
前記プロセッサがマルチスレッドプロセッサを含む、請求項１に記載のプロセッサ。
【請求項１２】
前記プロセッサが集積回路を含む、請求項１に記載のプロセッサ。
【請求項１３】
メモリを含むプロセッサによって実行されるプログラムを格納するマシン可読記憶媒体と、前記メモリに結合され、前記メモリから取得された命令をデコードする命令デコーダと、前記デコードされた命令を実行する複数の実行ユニットとを含む製造物であって、
前記命令のうちの１つまたは複数が複合命令形式内にあり、前記複合命令形式内では、１つの命令が複数のオペレーションフィールドを含み、前記オペレーションフィールドのうちの１つまたは複数のそれぞれが、少なくともオペレーションコードフィールドとファンクションフィールドとを含み、前記オペレーションコードフィールドおよび前記ファンクションフィールドが、一緒になって、前記実行ユニットのうちの１つまたは複数によって実行されるべき特定のオペレーションを指定する製造物。
【請求項１４】
命令を格納するメモリを含むプロセッサによって実行される前記命令と、前記メモリに結合され、前記メモリから取得された前記命令をデコードする命令デコーダと、前記デコードされた命令を実行する１つまたは複数の実行ユニットとを含むデータ構造体であって、前記命令が、複合命令形式内にあって、１つの命令が複数のオペレーションフィールドを含み、前記オペレーションフィールドのうちの１つまたは複数のそれぞれが、少なくともオペレーションコードフィールドとファンクションフィールドとを含み、前記オペレーションコードフィールドおよび前記ファンクションフィールドが、一緒になって、前記実行ユニットのうちの１つまたは複数によって実行されるべき特定のオペレーションを指定するデータ構造体。
【請求項１５】
前記オペレーションコードフィールドおよびファンクションフィールドの、前記オペレーションフィールド内でのサイズおよびロケーションが固定されている、請求項１４に記載のデータ構造体。
【請求項１６】
前記オペレーションコードが、ｊｕｍｐ（ジャンプ）、ｃｏｎｓｔａｎｔ（定数）、ｉｎｔｅｇｅｒ（整数）、ｌｏａｄ（ロード）、ｓｔｏｒｅ（格納）、ｃｏｐｙ  ｔｏ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタへのコピー）、ｃｏｐｙ  ｆｒｏｍ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタからのコピー）、およびｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ（単一命令複数データ）を含む、請求項１５に記載のデータ構造体。
【請求項１７】
前記複合命令形式内の前記命令が、少なくとも３つのオペレーションフィールドを含む、請求項１４に記載のデータ構造体。
【請求項１８】
前記複合命令形式内の前記命令が、前記複数のオペレーションフィールドに加えて、従属フィールドを含む、少なくとも１つの追加フィールドを含む、請求項１４に記載のデータ構造体。
【請求項１９】
前記従属フィールドが、前記複数のオペレーションフィールドにおいて指定された複合オペレーションを順次実行するか、並列実行するかを指定する単一ビットのフィールドを含む、請求項１８に記載のデータ構造体。
【請求項２０】
前記複合命令形式内の前記命令が、３つの２１ビットオペレーションフィールドと１ビット従属フィールドとを有する６４ビット命令を含む、請求項１４に記載のデータ構造体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００４年４月７日に出願した米国仮出願第６０／５６０，２００号（発明の名称「Ｃｏｍｐｏｕｎｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  ａｎｄ  Ｏｐｅｒａｔｉｏｎ  Ｆｏｒｍａｔｓ  ｆｏｒ  Ｌｏｗ−Ｐｏｗｅｒ  Ｅｍｂｅｄｄｅｄ  Ｐｒｏｃｅｓｓｏｒｓ」）の優先権を主張する。
【０００２】
本発明は、主にデジタルデータプロセッサの分野に関し、特に、そのようなプロセッサにおいて用いられる命令セットに関する。
【背景技術】
【０００３】
プログラマブルデジタルデータプロセッサは、メモリに格納されている命令を用いて、特定タスクの実行方法をプロセッサに伝える。命令は、一般に、どのようなオペレーションを実行するかをプロセッサに伝えるオペレーションコード（オペコード（ｏｐｃｏｄｅ））と、そのオペレーションに用いる入力データおよび出力データのロケーションを指示するオペランド指定子とを含む。プロセッサが実行する命令は、プログラムメモリに格納されることが多く、命令で用いられるデータは、データメモリに格納されることが多い。一般的なオペレーションは、メモリからデータをロードすること、データをメモリに格納すること、算術演算および論理演算を実行すること、およびプログラム内の別のロケーションに分岐することを含む。
【０００４】
ある特定のタスクまたはタスクのセットを実装するために用いるプログラムメモリの量を、コードサイズと呼ぶ。コードサイズは、個々の命令のサイズ、命令の複雑さ、タスクまたはタスクのセットの複雑さ、その他の要因に依存する。現代のプロセッサにおいては、命令は固定サイズであるのが一般的である。そうであれば、命令を効率的にメモリからフェッチしたり、デコードしたり、実行したりできるからである。メモリシステムの設計上の都合から、命令のサイズ（ビット数）は、２の整数乗に限定されることが多い（たとえば、１６ビット、３２ビット、または６４ビット）。
【０００５】
コードサイズが小さいことは、デジタル信号プロセッサ、マルチメディアプロセッサ、およびグラフィックスプロセッサなどのような低電力埋め込みプロセッサの設計における重要な目標である。したがって、これらのタイプのアーキテクチャは、十分強力であってコンパクトな命令を特徴とすることが多い。たとえば、従来の埋め込みプロセッサアーキテクチャでは、２つのレジスタ（ＲＣおよびＲＢ）にある値を掛け合わせ、その結果を、累算レジスタ（ＲＡ）にある値に加算し、その結果を累算レジスタＲＡに再格納することを指定するために、１６ビット積和演算命令を用いることが可能である。
【０００６】
小さなコードサイズを実現するために、多くのプロセッサが、単一命令複数データ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ：ＳＩＭＤ）処理手法を実装する。ＳＩＭＤ処理では、単一の命令で、複数のデータオペランドに対して同じオペレーションが実行される。ＳＩＭＤ処理は、ベクトルまたはマトリックスの複数の要素に対して同じオペレーションを実行する場合に特に有用である。
【０００７】
すべてのプログラマブルプロセッサは、何らかのタイプの命令形式を用いる。従来の命令形式については、たとえば、Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ及びＤａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎの「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ」（Ｔｈｉｒｄ  Ｅｄｉｔｉｏｎ、Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，Ｉｎｃ．、Ｓａｎ  Ｆｒａｎｃｉｓｃｏ、Ｃａｌｉｆｏｒｎｉａ、２００３年）で説明されている。
【０００８】
デジタル信号処理、マルチメディアおよびグラフィックスなどの用途に用いられる現代的な埋め込みプロセッサは、高いパフォーマンスを実現するために、ＶＬＩＷ（超長命令語（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ））アーキテクチャを有する場合が多い。Ｊ．Ａ．Ｆｉｓｃｈｅｒの「Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ａｎｄ  ＥＬＩ．５１２」（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｔｅｎｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、１４０〜１５０頁、１９８３年６月）、Ｒ．Ｃｏｌｗｅｌｌ外の「Ａ  ＶＬＩＷ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ａ  Ｔｒａｃｅ  Ｓｃｈｅｄｕｌｉｎｇ  Ｃｏｍｐｉｌｅｒ」（ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ、９６７〜９７９頁、１９８８年８月）、およびＮ．Ｓｅｓｈａｒｎの「Ｈｉｇｈ  ＶｅｌｏｃｉＴＩ  Ｐｒｏｃｅｓｓｉｎｇ：Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ  ＶＬＩＷ  ＤＳＰ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（ＩＥＥＥ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｍａｇａｚｉｎｅ、Ｖｏｌ．１５、Ｎｏ．２、８６〜１０１、１９９８年３月）に例が記載されている。これらのアーキテクチャでは、単一のＶＬＩＷが、並列に実行できる複数のオペレーションを指定する。たとえば、２５６ビットのＶＬＩＷであれば、８個のオペレーションフィールドを有し、各フィールドを３２ビットで指定することが可能であろう。ＶＬＩＷアーキテクチャは、一般に、サイクルごとに１つのオペレーションしか実行できないアーキテクチャより高いパフォーマンスを提供するが、コードサイズが非常に大きくなる可能性がある。それは、所与のサイクルで利用できないオペレーションフィールドにノーオペレーション（ＮＯＰ）命令を充填するからである。
【０００９】
最近では、ＥＰＩＣ（明示的並列命令コンピューティング技術（Ｅｘｐｌｉｃｉｔｌｙ  Ｐａｒａｌｌｅｌ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃｏｍｐｕｔｉｎｇ））アーキテクチャが提案されている。たとえば、Ｍ．Ｓｍｏｔｈｅｒｍａｎの「Ｕｎｄｅｒｓｔａｎｄｉｎｇ  ＥＰＩＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ’ｓ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ」（ＡＣＭ  Ｓｏｕｔｈｅａｓｔ  Ｃｏｎｆｅｒｅｎｃｅ、２００２年）、およびＭ．Ｓｃｈｌａｎｓｋｅｒ及びＢ．Ｒａｕの「ＥＰＩＣ：Ｅｘｐｌｉｃｉｔｌｙ  Ｐａｒａｌｌｅｌ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃｏｍｐｕｔｉｎｇ」（ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、３７〜４５頁、２０００年２月）を参照されたい。これらのアーキテクチャでは、命令に付加ビットを含めることが多い。付加ビットは、命令内の、並列実行が可能なオペレーションを示すか、複数の命令の並列実行が可能かどうかを示す。これらのアーキテクチャは、ＶＬＩＷプロセッサよりコンパクトなコードになる場合が多いが、プロセッサのハードウェアが複雑になる。
【特許文献１】米国仮出願第６０／５６０，２００号
【特許文献２】米国特許出願第１０／２６９，３７２号
【特許文献３】米国特許出願第１０／２６９，２４５号
【特許文献４】米国特許第６，８４２，８４８号
【特許文献５】米国特許出願第１０／８４１，２６１号
【特許文献６】米国特許出願第１０／２６９，３７３号
【非特許文献１】Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ及びＤａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ」（Ｔｈｉｒｄ  Ｅｄｉｔｉｏｎ、Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，Ｉｎｃ．、Ｓａｎ  Ｆｒａｎｃｉｓｃｏ、Ｃａｌｉｆｏｒｎｉａ、２００３年）
【非特許文献２】Ｊ．Ａ．Ｆｉｓｃｈｅｒ、「Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ａｎｄ  ＥＬＩ．５１２」（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｔｅｎｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、１４０〜１５０頁、１９８３年６月）
【非特許文献３】Ｒ．Ｃｏｌｗｅｌｌ外、「Ａ  ＶＬＩＷ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ａ  Ｔｒａｃｅ  Ｓｃｈｅｄｕｌｉｎｇ  Ｃｏｍｐｉｌｅｒ」（ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ、９６７〜９７９頁、１９８８年８月）
【非特許文献４】Ｎ．Ｓｅｓｈａｒｎ、「Ｈｉｇｈ  ＶｅｌｏｃｉＴＩ  Ｐｒｏｃｅｓｓｉｎｇ：Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ  ＶＬＩＷ  ＤＳＰ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（ＩＥＥＥ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｍａｇａｚｉｎｅ、Ｖｏｌ．１５、Ｎｏ．２、８６〜１０１、１９９８年３月）
【非特許文献５】Ｍ．Ｓｍｏｔｈｅｒｍａｎ、「Ｕｎｄｅｒｓｔａｎｄｉｎｇ  ＥＰＩＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ’ｓ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ」（ＡＣＭ  Ｓｏｕｔｈｅａｓｔ  Ｃｏｎｆｅｒｅｎｃｅ、２００２年）
【非特許文献６】Ｍ．Ｓｃｈｌａｎｓｋｅｒ及びＢ．Ｒａｕ、「ＥＰＩＣ：Ｅｘｐｌｉｃｉｔｌｙ  Ｐａｒａｌｌｅｌ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃｏｍｐｕｔｉｎｇ」（ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、３７〜４５頁、２０００年２月）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、前述のＶＬＩＷ方式およびＥＰＩＣ方式にからむ諸問題を回避しながら、特に低電力埋め込みプロセッサにおいて小さなコードサイズを実現する、改良された方式が求められている。
【課題を解決するための手段】
【００１１】
本発明は、例示的実施形態において、命令を複合命令形式で処理するプロセッサを提供する。より具体的には、最大３つの複合オペレーションをわずか６４ビットで指定することが可能である。複合命令形式は、小さなコードサイズを実現し、デジタル信号プロセッサ、マルチメディアプロセッサおよびグラフィックスプロセッサなどの、低電力、高パフォーマンスの埋め込みプロセッサに好適である。
【００１２】
本発明の一態様によれば、プロセッサが、メモリと、メモリに結合され、メモリから取得された命令をデコードする命令デコーダと、デコードされた命令を実行する複数の実行ユニットとを含む。それらの命令のうちの１つまたは複数が複合命令形式内にあり、その複合命令形式内では、１つの命令が複数のオペレーションフィールドを含み、オペレーションフィールドのうちの１つまたは複数のそれぞれが、少なくともオペレーションコードフィールドとファンクションフィールドとを含む。オペレーションコードフィールドおよびファンクションフィールドは、一緒になって、１つまたは複数の実行ユニットによって実行されるべき特定のオペレーションを指定する。
【００１３】
例示的実施形態におけるオペレーションコードの例は、「ｊｕｍｐ（ジャンプ）」、「ｃｏｎｓｔａｎｔ（定数）」、「ｉｎｔｅｇｅｒ（整数）」、「ｌｏａｄ（ロード）」、「ｓｔｏｒｅ（格納）」、「ｃｏｐｙ  ｔｏ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタへのコピー）」、「ｃｏｐｙ  ｆｒｏｍ  ｓｐｅｃｉａｌ  ｒｅｇｉｓｔｅｒ（特殊レジスタからのコピー）」、および「ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ（単一命令複数データ）」を含む。オペレーションコードフィールドおよびファンクションフィールドは、デコードおよび実行が容易になるように、オペレーションフィールド内でのサイズおよびロケーションが固定されていることが可能である。
【００１４】
本発明の別の態様によれば、複合命令形式内の命令のうちの所与の１つが、複数のオペレーションフィールドに加えて、従属フィールドを含む、少なくとも１つの付加フィールドを含むことが可能である。従属フィールドは、複数のオペレーションフィールドにおいて指定された複合オペレーションを順次実行するか、並列実行するかを指定する単一ビットのフィールドを含むことが可能である。
【００１５】
例示的実施形態では、複合命令形式内の命令のうちの所与の１つが、３つの２１ビットオペレーションフィールドと１ビット従属フィールドとを有する６４ビット命令を含むが、他の形式も使用可能である。
【００１６】
別の例として、複合命令形式内の命令のうちの所与の１つが、その命令の複数のオペレーションフィールドによって指定される複合オペレーションを含むことが可能である。
【００１７】
複合命令形式内の命令の所与の１つの、１つまたは複数のオペレーションフィールドを、それによって指定可能な特定のオペレーションに関して限定することが可能である。たとえば、所与の命令の１つまたは複数のオペレーションフィールドを、単一命令複数データオペレーションに限定することが可能である。
【００１８】
例示的実施形態における複合命令形式は、前述の従来のＶＬＩＷ方式およびＥＰＩＣ方式にからむ諸問題を有利に克服する。
【発明を実施するための最良の形態】
【００１９】
本発明を、いくつかの例示的プロセッサ構成の内容で説明する。しかしながら、本発明は、図示された特定の仕組みを必須とするものではなく、他のタイプのデジタルデータプロセッサおよび関連処理回路を用いて実装することも可能であることを理解されたい。本発明は、一般に、小さなコードサイズと高パフォーマンスの処理とによる恩恵が得られるあらゆるプロセッサでの実装に好適である。そのようなプロセッサとして、たとえば、プログラムデジタル信号プロセッサ、マルチメディアプロセッサおよびグラフィックスプロセッサなどがある。
【００２０】
本明細書に記載したようなプロセッサは、１つまたは複数の集積回路の形での実装が可能である。
【００２１】
本発明の例示的実施形態では、最大３つの強力な複合オペレーションをわずか６４ビットで指定することを可能にする複合命令形式を提供する。複合命令形式は、前述のデジタル信号プロセッサ、マルチメディアプロセッサおよびグラフィックスプロセッサのような、低電力、高パフォーマンスの埋め込みプロセッサに好適である。
【００２２】
図１は、複合命令形式を有する命令が処理されるプロセッサ１００を示している。プロセッサ１００は、プログラムメモリ１０２と、データメモリ１０４と、命令デコーダ１０６と、レジスタファイル１０８と、複数の実行ユニット１１０とを含む。実行ユニット１１０は、データメモリ１０４およびレジスタファイル１０８と、それぞれのバスライン１１２および１１４を介して通信する。
【００２３】
プログラムメモリ１０２およびデータメモリ１０４は、図では別々の要素として示されているが、１つのメモリまたは他のメモリ構成の、別々の部分を含むことが可能である。また、代替実施形態では、メモリ１０２、１０４の一方または両方の少なくとも一部を、プロセッサ１００の外におくことも可能である。
【００２４】
一般に、プログラムメモリ１０２は、プロセッサ１００によって実行される命令を格納し、データメモリ１０４は、その命令によって操作されるデータを格納する。命令は、命令デコーダ１０６によって、プログラムメモリ１０２からフェッチされ、命令デコーダ１０６は、レジスタファイル１０８および実行ユニット１１０と連係して、命令の実行を制御するよう動作する。
【００２５】
プロセッサ１００は、埋め込みプロセッサを含むことが可能であり、たとえば、携帯電話、携帯情報端末、または他の可搬型コンピューティング機器に関連する特定用途向け集積回路に埋め込まれたものや、機器自体に埋め込まれたものを含むことが可能である。
【００２６】
プロセッサ１００のマルチスレッド版の詳細な例を、図４と併せて後述する。
【００２７】
図２Ａは、例示的実施形態のプロセッサ１００で利用される複合命令形式を示している。複合命令形式は、オペレーション１、オペレーション２、およびオペレーション３で表される３つの２１ビット複合オペレーションフィールドと、任意選択の１ビット従属フィールドｄとを含む。この例では、複合命令形式の６４ビットに、ビット０〜６３の番号が付けられ、オペレーション３フィールドがビット０〜２０を含み、オペレーション２フィールドがビット２１〜４１を含み、オペレーション１フィールドがビット４２〜６２を含み、従属フィールドｄがビット６３を含む。
【００２８】
従属フィールドｄは、オペレーション１、オペレーション２、およびオペレーション３の各フィールドで指定された複合オペレーションを順次実行するか、並列実行するかを示す。たとえば、ある可能な単一ビットフィールド実装では、ｄ＝１の場合は、複合オペレーションは、従属を含み、順次実行されなければならない。ｄ＝０の場合は、３つの複合オペレーションのすべてを並列実行することが可能である。他の実装では、複数ビットの従属フィールドを、他のタイプの論理インジケータとともに用いることが可能である。
【００２９】
様々な代替形式が可能である。たとえば、２２ビット以上を必要とする複合オペレーションであれば、２つのオペレーションフィールドを用いることが可能である。個々の用途の必要に応じて、命令の長さ、オペレーションフィールドの長さ、フィールドロケーション、および形式の他の態様を変えることも可能である。したがって、命令は、長さが６４ビットである必要はなく、それより長くても短くてもよい。さらに、オペレーションフィールドは３つより多くても少なくてもよく、所与の命令における各種オペレーションフィールドは、図２Ａの例ではすべてが同じ長さであったが、それぞれが異なる長さであってもよい。
【００３０】
図２Ａの複合命令形式は、非常に強力な複合命令をわずか６４ビットで指定することを可能にする。これにより、コードサイズが小さくなり、プロセッサのパフォーマンスが向上する。このことは、低電力のデジタル信号処理、マルチメディア処理およびグラフィックス処理などの用途において重要である。
【００３１】
複合命令形式はさらに、柔軟であって、様々な命令の指定を可能にする。しかしながら、プロセッサの設計の複雑さを減らすために、各オペレーションフィールドで許可される複合オペレーションのタイプに制限を設けることが可能である。可能な一例として、ある特定の実装では、オペレーション１をＪｕｍｐまたはＣｏｎｓｔオペレーションのみに限定し、オペレーション２をＩｎｔｅｇｅｒまたはＬｏａｄ／Ｓｔｏｒｅオペレーションのみに限定し、オペレーション３をＳＩＭＤオペレーションのみに限定することが可能である。
【００３２】
図２Ｂは、複合オペレーションについて可能ないくつかの形式を示している。各複合オペレーションフィールドは２１ビットであるが、これらのオペレーションの形式を、オペレーションのタイプに基づいて変えることが可能である。
【００３３】
これらの例の左端のフィールドは、常に５ビットであり、実行されるオペレーションのタイプ（たとえば、Ｊｕｍｐ、Ｃｏｎｓｔ、Ｉｎｔｅｇｅｒ、Ｌｏａｄ、Ｓｔｏｒｅ、ｃｔｓｒ、ｃｆｓｒ、またはＳＩＭＤ）を指定するオペコードに対応する。各種オペコード名の意味を、後の表１に一覧表示した。
【００３４】
右端のフィールド（ファンクション）は、これらの例では常に４ビットである。オペコードフィールドおよびファンクションフィールドは一緒に、複合オペレーションによって実行される特定のオペレーションを指定する。オペレーションをデコードして適切な実行ユニットに送ることを容易にするために、オペコードフィールドおよびファンクションフィールドは、サイズおよびロケーションが固定されている。残りのオペレーションフィールドは、オペコードおよびファンクションに応じて変わる。オペレーションフィールドの意味を、後の表２に一覧表示した。
【００３５】
表１および表２で説明した複合オペレーションの具体的詳細は例に過ぎず、本発明の範囲をいかようにも限定するものではないことを理解されたい。
【００３６】
図３は、３つの複合オペレーションを有する単一６４ビット複合命令のアセンブリ言語コードの例を示している。オペレーション間の記号‖は、３つの複合オペレーションがすべて並列に実行されることを示している。この命令は、ベクトル平方和計算の内側ループを実施する。第１の複合オペレーションｌｖｕは、ベクトルレジスタｖｒ０に４個の１６ビットベクトル要素をロードし、アドレスポインタｒ３を次の要素に更新する。ｖｍｕｌｒｅｄｓオペレーションは、４個の固定小数点（端数）１６ビットベクトル要素をｖｒ０から読み込み、各要素を自乗し、各積を飽和させ、４個の飽和積をすべて加算し、さらに累算レジスタａｃ０を加算し、加算するたびに飽和させ、結果をａｃ０に再格納する。ｌｏｏｐオペレーションは、ループカウントレジスタｌｃ０をデクリメントし、それをゼロと比較し、結果がゼロでない場合にアドレスＬ０に分岐する。
【表１】
2007533006.tif 000003
【表２】
2007533006.tif 000004
【００３７】
従来の命令形式およびオペレーション形式と比較して、例示的実施形態の形式はいくつかの優位点を有する。
【００３８】
第１に、それらは、最大３つの複合オペレーションからなる強力な複合命令をわずか６４ビットで指定することを可能にする。このことは、プロセッサのコードサイズ、電力消費、およびパフォーマンスの改善に役立つ。
【００３９】
第２に、複合命令形式は、フレキシブルであって、様々な複合オペレーションを指定することが可能である。
【００４０】
第３に、複合命令の順次実行または並列実行を可能にすることにより、命令形式は、サイズおよびパフォーマンスの両面でコードを最適化することが可能である。
【００４１】
第４に、プロセッサの設計の複雑さを減らすために、各オペレーションフィールドで許可されるオペレーションのタイプに制限を設けることが可能である。前述の例では、ある特定の実装において、オペレーション１をＪｕｍｐまたはＣｏｎｓｔオペレーションのみに限定し、オペレーション２をＩｎｔｅｇｅｒまたはＬｏａｄ／Ｓｔｏｒｅオペレーションのみに限定し、オペレーション３をＳＩＭＤオペレーションのみに限定することが可能である。ほかにも様々なタイプの制限を適用できる。
【００４２】
第５に、たとえば、２２ビット以上を必要とする複合オペレーションであれば、２つのオペレーションフィールドを用いることが可能であり、その場合、第２のオペレーションフィールドは拡張即値を与える。
【００４３】
本発明は、マルチスレッドプロセッサの形で実施可能である。本発明を実施できるマルチスレッドプロセッサの具体例が、これにより本発明の譲受人に譲渡され、参照によって本明細書に組み込まれている、２００２年１０月１１日に出願された米国特許出願第１０／２６９，３７２号（発明の名称「Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｗｉｔｈ  Ｅｆｆｉｃｉｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｆｏｒ  Ｃｏｎｖｅｒｇｅｎｃｅ  Ｄｅｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎｓ」）に記載されている。このマルチスレッドプロセッサは、ＲＩＳＣ（登録商標）ベースの制御コード、ＤＳＰコード、Ｊａｖａ（登録商標）コード、およびネットワーク処理コードを実行するように構成可能である。これは、単一命令複数データ（ＳＩＭＤ）ベクトル処理ユニットと、リダクションユニットと、長命令語（ＬＩＷ）複合命令実行とを含む。この例示的マルチスレッドプロセッサとともに用いるのに好適なスレッディング方式およびパイプライン方式の例示的が、これにより本発明の譲受人に譲渡され、参照によって本明細書に組み込まれている、２００２年１０月１１日に出願された米国特許出願第１０／２６９，２４５号（発明の名称「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｏｋｅｎ  Ｔｒｉｇｇｅｒｅｄ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ」）（現在は米国特許第６，８４２，８４８号として公開されている）に記載されている。
【００４４】
もちろん、本発明は、他のマルチスレッドプロセッサや、より一般的な他のタイプのデジタルデータプロセッサの形でも実施可能である。
【００４５】
本発明の複合命令形式および複合オペレーション形式を利用できる別の例示的マルチスレッドプロセッサが、これにより本発明の譲受人に譲渡され、参照によって本明細書に組み込まれている、２００４年５月７日に出願された米国特許出願第１０／８４１，２６１号（発明の名称「Ｐｒｏｃｅｓｓｏｒ  Ｒｅｄｕｃｔｉｏｎ  Ｔ３ｎｉｔ  ｆｏｒ  Ａｃｃｕｍｕｌａｔｉｏｎ  ｏｆ  Ｍｕｌｔｉｐｌｅ  Ｏｐｅｒａｎｄｓ  Ｗｉｔｈ  ｏｒ  Ｗｉｔｈｏｕｔ  Ｓａｔｕｒａｔｉｏｎ」）に記載されている。
【００４６】
図４は、リダクションユニット４０２および累算レジスタファイル４０６を組み込んだマルチスレッドプロセッサ４００の例を示している。プロセッサ４００は、米国特許出願第１０／２６９，３７２号に記載されているものとおおむね類似しているが、前に引用した米国特許出願第１０／８４１，２６１号に記載されているように構成されたリダクションユニット４０２および累算レジスタファイル４０６を組み込んでいる。
【００４７】
マルチスレッドプロセッサ４００は、ほかにも要素を含むが特に、マルチスレッドキャッシュメモリ４１０、マルチスレッドデータメモリ４１２、命令バッファ４１４、命令デコーダ４１６、レジスタファイル４１８、およびメモリ管理ユニット（ＭＭＵ）４２０を含む。マルチスレッドキャッシュメモリ４１０は、複数のスレッドキャッシュ４１０−１、４１０−２、４１０−Ｎを含む。Ｎは、一般に、マルチスレッドプロセッサ４００によってサポートされるスレッドの数を表し、この特定の例では、Ｎ＝４によって与えられる。もちろん、当業者であれば自明であるように、Ｎの他の値も使用可能である。
【００４８】
したがって、各スレッドは、それぞれに関連付けられた、対応するスレッドキャッシュをマルチスレッドキャッシュ４１０に有する。同様に、データメモリ４１２は、図示されているようにデータメモリ４１２−１、４１２−２、４１２−Ｎで表されるＮ個の別個のデータメモリインスタンスを含む。
【００４９】
マルチスレッドキャッシュ４１０は、プロセッサ４００の外部にあるメインメモリ（図示せず）と、ＭＭＵ  ４２０を介してインターフェースする。ＭＭＵ  ４２０は、キャッシュ４１０と同様に、プロセッサによってサポートされるＮ個のスレッドのそれぞれに対応する個別インスタンスを含む。ＭＭＵ  ４２０は、メインメモリから適切な命令がマルチスレッドキャッシュ４１０にロードされることを保証する。
【００５０】
データメモリ４１２はまた、前述の外部メインメモリと直接接続されるのが一般的であるが、この接続も明示的には図示していない。データメモリ４１２には、データバッファ４３０も関連付けられる。
【００５１】
一般に、マルチスレッドキャッシュ４１０は、マルチスレッドプロセッサ４００によって実行される命令を格納し、データメモリ４１２は、その命令によって操作されるデータを格納する。命令デコーダ４１６によって、命令がマルチスレッドキャッシュ４１０からフェッチされ、デコードされる。命令デコーダ４１６は、命令タイプに応じて、与えられた命令または関連情報をプロセッサ内の他の様々なユニットに転送することが可能である（これについては後述する）。
【００５２】
プロセッサ４００は、分岐命令キュー（ＩＱ）４４０およびプログラムカウンタ（ＰＣ）レジスタ４４２を含む。プログラムカウンタレジスタ４４２は、スレッドごとに１つのインスタンスを含む。分岐命令キュー４４０は、命令デコーダ４１６から命令を受け取り、プログラムカウンタレジスタ４４２とともに、例示的に桁上げ伝播加算器（ＣＰＡ）を含む加算器ブロック４４４への入力を与える。要素４４０、４４２、および４４４は、ひとまとまりでプロセッサ４００の分岐ユニットを構成する。図示されていないが、プロセッサ４００に補助レジスタを含めることも可能である。
【００５３】
レジスタファイル４１８は、整数結果の一時記憶を与える。命令デコーダ４１６から整数命令キュー（ＩＱ）４５０に転送された命令がデコードされ、スレッドごとの個別のインスタンスを含むように図示されたオフセットユニット４５２の使用を通して、適正なハードウェアスレッドユニットが選択される。オフセットユニット４５２は、独立スレッドデータが破損しないように、レジスタファイルアドレスに明示的なビットを挿入する。この明示的なビットは、所与のスレッドについて、たとえば、対応するスレッド識別子を含むことが可能である。
【００５４】
図に示すように、レジスタファイル４１８は、入力レジスタＲＡおよびＲＢに結合され、それらの出力は、加算器を含むことが可能な算術論理ユニット（ＡＬＵ）ブロック４５４に結合される。入力レジスタＲＡおよびＲＢは、命令パイプライン方式を実施するために用いられる。ＡＬＵブロック４５４の出力は、データメモリ４１２に結合される。
【００５５】
レジスタファイル４１８、整数命令キュー４５０、オフセットユニット４５２、要素ＲＡおよびＲＢ、およびＡＬＵブロック４５４は、ひとまとまりで例示的整数ユニットを構成する。
【００５６】
プロセッサ４００で実行可能な命令タイプとして、Ｂｒａｎｃｈ、Ｌｏａｄ、Ｓｔｏｒｅ、Ｉｎｔｅｇｅｒ、およびＶｅｃｔｏｒ／ＳＩＭＤの各命令タイプがある。所与の命令がＢｒａｎｃｈ、Ｌｏａｄ、Ｓｔｏｒｅ、またはＩｎｔｅｇｅｒオペレーションを指定しない場合、それはＶｅｃｔｏｒ／ＳＩＭＤ命令である。他の命令タイプも使用可能であるか、または代替として使用可能である。ＩｎｔｅｇｅｒおよびＶｅｃｔｏｒ／ＳＩＭＤ命令タイプは、それぞれ、本明細書において整数命令タイプおよびベクトル命令タイプと一般的に呼ばれているものの例である。
【００５７】
ベクトルＩＱ  ４５６が、命令デコーダ４１６から転送されたＶｅｃｔｏｒ／ＳＩＭＤ命令を受け取る。スレッドごとの個別インスタンスを含むものとして図示されている、対応するオフセットユニット４５８は、独立スレッドデータが破損しないように、適切なビットを挿入する役目を果たす。
【００５８】
プロセッサ４００のベクトルユニット４６０が、Ｎ個の別個の並列部分に分離され、同様に分割されたベクトルファイル４６２を含む。ベクトルファイル４６２は、ＶＲ００からＶＲ３１で表される３２個のレジスタを含む。ベクトルファイル４６２は、Ｖｅｃｔｏｒ／ＳＩＭＤ命令タイプで動作すること以外は、レジスタファイル４１８とほぼ同じ目的のために動作する。
【００５９】
ベクトルユニット４６０は、例示的には、ベクトル命令キュー４５６と、オフセットユニット４５８と、ベクトルファイル４６２と、それらに関連付けられた算術要素および記憶要素とを含む。
【００６０】
ベクトルユニット４６０の動作は次のとおりである。小数または整数のいずれかのデータ型としてエンコードされたＶｅｃｔｏｒ／ＳＩＭＤブロックがベクトルファイル４６２から読み出され、アーキテクチャの管理下にあるレジスタＶＲＡ、ＶＲＢ、ＶＲＣに格納される。フローは、そこから、Ｖｅｃｔｏｒ／ＳｌＭＤデータの並列同時乗算を実行する乗算器（ＭＰＹ）に進む。桁上げスキップ加算器（ＣＳＡ）およびＣＰＡを含む加算ユニットが、追加算術演算を実行することが可能である。たとえば、１つまたは複数のＣＳＡを用いてベクトルレジスタファイルからの累算値を加算したり、１つまたは複数のＣＰＡを用いて最終加算を実行して乗算演算を完成させたりすることが可能である。これらは当業者であれば自明であろう。計算結果は、結果レジスタ４６４に格納され、リダクションユニット４０２への入力オペランドとして与えられる。リダクションユニット４０２は、生成された加算結果が、各演算が直列実行されたとしたら得られたであろう値と同じになるように、入力オペランドを減らす。減らされた加算結果は、今後の処理のために、累算レジスタファイル４０６に格納される。
【００６１】
ベクトル内積を実行する場合は、ＭＰＹブロックが４つの乗算を並列実行し、ＣＳＡおよびＣＰＡユニットが、追加演算を実行するか、単に乗算結果を記憶のために結果レジスタ４６４に送り、リダクションユニット４０２が、累算レジスタファイル４０６に格納されている累算値に合わせて乗算結果を減らす。リダクションユニットで生成された結果は、次の反復に用いるために、既に説明した形で累算レジスタファイルに格納される。
【００６２】
この例の累算レジスタ４０６は、ＡＣＣ００からＡＣＣ１５で表される全部で１６個の累算レジスタを含む。
【００６３】
マルチスレッドプロセッサ４００は、これにより本発明の譲受人に譲渡され、参照によって本明細書に組み込まれている、２００２年１０月１１日に出願された米国特許出願第１０／２６９，３７３号（発明の名称「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｒｅｇｉｓｔｅｒ  Ｆｉｌｅ  Ｐｏｒｔ  Ｒｅｄｕｃｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ」）に記載されているような、レジスタファイルへのスレッドベースのアクセスの手法を利用することが可能である。
【００６４】
マルチスレッドプロセッサ４００は、前に引用した米国特許出願第１０／８４１，２６１号に記載されているように、ベクトル内積や他のタイプの並列ベクトル乗算演算や減らす演算の実行に好適である。
【００６５】
図１および４に示した特定のプロセッサ構成は、説明のための例としてのみ提示したものであって、明示的に示していない追加要素や代替要素を含めることが可能であることに再度注意されたい。このことは、当業者であれば自明であろう。
【００６６】
また、本発明は、図２Ａ、２Ｂ、および３に示した特定の複合命令形式および複合オペレーション形式が必須でないことも強調しておきたい。本発明は、他の命令形式およびオペレーション形式を有する、他の様々なタイプの命令およびオペレーションを用いて実施可能である。
【００６７】
したがって、本発明の先述の実施形態は例示に過ぎず、当業者であれば、添付の特許請求項の範囲内の様々な代替実施形態が自明であろう。
【図面の簡単な説明】
【００６８】
【図１】本発明が実装される例示的プロセッサの簡略化されたブロック図である。
【図２Ａ】本発明の例示的実施形態における６４ビット複合命令用複合命令形式の例を示す図である。
【図２Ｂ】本発明の例示的実施形態における、図２Ａの命令形式の２１ビット複合オペレーション用オペレーション形式の、いくつかの異なる例を示す図である。
【図３】図２Ａに示した形式を有する単一６４ビット複合命令のアセンブリ言語コードの例を示す図である。
【図４】図２Ａおよび２Ｂの形式を用いて構成された命令を処理するために用いることが可能な例示的マルチスレッドプロセッサの詳細図である。
【図１】
2007533006.tif 000005
【図２Ａ】
2007533006.tif 000006
【図２Ｂ】
2007533006.tif 000007
【図３】
2007533006.tif 000008
【図４】
2007533006.tif 000009
【国際調査報告】
2007533006.tif 000010