(57)【要約】【課題】  プロセッサで与えられるモジュールエレメントの数により決定される容量を有するモジュール機能構成を備えたプロセッサを提供する。【解決手段】  実行のためデータ及び命令を記録するよう動作可能な少なくとも１つのローカルストア２２、ローカルストアから得られるデータに命令を実行するよう動作可能な少なくとも１つの機能ユニット２４、ローカルストアから与えられ、命令を実行するために機能ユニットのオペレーションへ命令を変換するよう動作可能な少なくとも１つのイシューロジックユニット２６、を含むモジュール構成を有したプロセッサが提供される。【選択図】  図５
2005310168.tif 000002
【特許請求の範囲】
【請求項１】
モジュール構成を有するプロセッサであって、
実行のため命令とデータを記録するよう動作可能な少なくとも１つのローカルストアを有し、
前記少なくとも１つのローカルストアから得られるデータに対して命令を実行するよう動作可能な少なくとも１つの機能ユニットを有し、
前記少なくとも１つのローカルストアから送られる前記命令を、前記命令を実行するための前記少なくとも１つの機能ユニットのオペレーションに変換できる少なくとも１つのイシューロジックユニットを有し、前記少なくとも１つのイシューロジックユニットの各々は、共通の命令セットによって前記少なくとも１つの機能ユニットの１つ以上により前記命令の実行を制御するよう動作可能であり、
前記プロセッサが複数の前記機能ユニットを有しているとき、前記少なくとも１つのイシューロジックユニットは、前記少なくとも１つのローカルストアから得られる命令のうちの単一の命令をデコードしてこの単一の命令に従って前記複数の機能ユニットの全てを同時にオペレーションを行い、かつ複数の命令をデコードして、前記複数の機能ユニットの第一及び第二サブセットを別々にオペレーションを行うよう動作可能であり、各々の前記サブセットは前記複数の命令のうちの対応する１つに従ってオペレーションが行われる、プロセッサ。
【請求項２】
各前記機能ユニットは更に、前記少なくとも１つのローカルストアから得られる命令を実行するよう動作可能である、請求項１記載のプロセッサ。
【請求項３】
前記プロセッサは、単一のローカルストア、単一の機能ユニット、かつ単一のイシューロジックユニットを有す、請求項１記載のプロセッサ。
【請求項４】
前記プロセッサは、複数の前記機能ユニット、各々が前記機能ユニットの特定の一つと対応する複数の前記ローカルストア、また単一の前記イシューロジックユニットを有し、前記対応するローカルストアの各々は、対応する前記機能ユニットと整合するストレージスペースを有し、各前記機能ユニットは、前記整合されたストレージスペースを有する、前記対応するローカルストアからのみデータが得られる、請求項１記載のプロセッサ。
【請求項５】
前記プロセッサは、複数の前記機能ユニット、複数の前記ローカルストア、単一の前記イシューロジックユニットを有し、前記プロセッサは更に前記複数のローカルストアと前記複数の機能ユニットとの間に相互接続ネットワークを有し、  前記相互接続ネットワークは、任意の前記機能ユニットから任意の前記ローカルストアへのアクセスを許容する、請求項１記載のプロセッサ。
【請求項６】
前記プロセッサは、複数の前記機能ユニット、複数の前記ローカルストア、及び複数の前記イシューロジックユニットを有し、前記プロセッサは、更に前記複数のローカルストアと前記複数の機能ユニットとの間に相互接続ネットワークを有し、前記相互接続ネットワークは任意の前記機能ユニットから任意の前記ローカルストアへのアクセスを許容し、また前記複数のイシューロジックユニットは、前記機能ユニットのうちの対応する機能ユニットによる複数の命令の実行を同時に制御するよう動作可能である、請求項１記載のプロセッサ。
【請求項７】
前記プロセッサは、複数の前記機能ユニット、複数の前記ローカルストア、また複数の前記イシューロジックユニットを有し、前記複数のイシューロジックユニットは前記機能ユニットのうち、対応する機能ユニットにより複数の命令の実行を同時に制御するよう動作可能である、請求項１記載のプロセッサ。
【請求項８】
前記プロセッサは、複数の前記機能ユニット、各々が前記機能ユニットの特定の１つと対応する複数の前記ローカルストア、及び複数の前記イシューロジックユニットを有し、前記対応するローカルストアの各々は、対応する前記機能ユニットと整合されるストレージスペースを有し、各前記機能ユニットは前記対応するローカルストアからのみデータが得られ、かつ前記複数のイシューロジックユニットは、前記機能ユニットのそれぞれの機能ユニットに複数の命令の実行を同時に制御するよう動作可能である、請求項１記載のプロセッサ。
【請求項９】
複数の命令パイプラインエレメントを有する命令パイプラインユニットを更に有し、前記命令パイプラインユニットの構成は前記命令パイプラインエレメントの数により決定される、請求項４、５、６、７または８記載のプロセッサ。
【請求項１０】
前記命令パイプラインユニットは、複数の命令ストリームバッファを含み、各々は少なくとも１つの別の前記命令ストリームバッファでバッファされる命令ストリームとは異なる命令ストリームをバッファするよう動作可能であり、前記複数の命令ストリームバッファは、前記命令パイプラインユニットはサイクル毎のマルチスレッディングを与えるよう動作可能となるように、前記命令パイプラインユニットと相互接続されたプロセッサ。
【請求項１１】
集積回路のプロセッサを設計する方法であって、
命令セットアーキテクチャ（ＩＳＡ）を用意し、
前記ＩＳＡをサポートするモジュール機能構成を有するプロセッサを設計し、かつ、
前記プロセッサに前記ＩＳＡを実装するためにイシューロジックを設計し、前記イシューロジックは前記モジュール機能構成の変更に適応する、方法。
【請求項１２】
前記プロセッサに前記ＩＳＡを実装するため、マイクロコードを更に設計し、前記マイクロコードは前記モジュール機能構成の変更に適応する、請求項１１記載の方法。
【請求項１３】
前記モジュール機能構成から選択される特定のモジュール機能構成を有するプロセッサを更に実装する、請求項１１記載の方法。
【請求項１４】
前記特定のモジュール機能構成を更に変更し、前記イシューロジックは前記特定のモジュール機能構成の前記変更に適応する、請求項１３記載の方法。
【請求項１５】
前記モジュール機能構成を有する前記プロセッサを設計する前記ステップは
前記モジュール機能構成に対し再利用可能なモジュールエレメントを設計し、かつ、
各前記モジュールエレメントのインスタンス数を特定する、請求項１４記載の方法。
【請求項１６】
前記モジュールエレメントは、命令パイプライン機能を有する第一マクロを有し、前記プロセッサを設計する前記ステップは、前記第一マクロのインスタンス数を選択することを含む、命令パイプラインユニットを設計することを含む、請求項１５記載の方法。
【請求項１７】
前記命令パイプラインユニットを設計する前記ステップは、複数の命令ストリームバッファを用意し、各々は少なくとも１つの別の前記命令ストリームバッファにバッファされる命令ストリームから離れて命令ストリームをバッファするよう動作可能であり、かつ前記複数の命令ストリームバッファを前記命令パイプラインユニットと相互接続し、前記命令パイプラインユニットはサイクル毎のマルチスレッディングを与えるよう動作可能である、請求項１６記載の方法。
【請求項１８】
前記モジュールエレメントは、キャッシュ機能を有する第二マクロを有し、前記プロセッサを設計するステップは、前記第二マクロのインスタンス数を選択すること含む、前記プロセッサのキャッシュを設計することを含む、請求項１５記載の方法。
【請求項１９】
前記キャッシュのサイズは前記第２マクロの前記インスタンス数に従い選択される、請求項１８記載の方法。
【請求項２０】
前記モジュールエレメントは、スレッド実行機能を有する第三マクロを有し、前記プロセッサをカスタム設計するステップは、前記第三マクロのインスタント数を選択することを含む、前記プロセッサの命令実行エレメントを設計することを含む、請求項１１記載の方法。
【請求項２１】
前記命令実行エレメントにより同時実行するよう動作可能なスレッド数は、前記第三マクロの前記選択されるインスタンス数に従い決定される、請求項２０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路及びその設計に関するものである。
なお、本発明は、米国仮特許出願６０／５６４６８２号（出願日：２００４年４月２２日、による利益を享受するものであり、この仮特許出願の内容は、参照として本願に包含される。
【背景技術】
【０００２】
近年、集積回路プロセッサの設計はスタンド・アローン型のプロプライエタリな設計から、競争設計やレガシープラットフォームで更に大きなネットワーク能力や相互運用性をサポートする設計へと変化している。この変化は、これまで主要であったスタンド・アローン型のＰＣに代わってのネットワークサーバーコンピュータによるコンピューティングワールドの再編と同時に発生している。
【０００３】
従って、最高のスタンド・アローン性能を有するプロセッサを提供することだけではもはや十分ではない。プロセッサは目前のコンピューティングジョブを巧みに処理しなければならず、これはプロセスコールに対し効率的に応答することを意味する。設計の異なる種々のメーカーのプロセッサから到達するコールをサポートするというプロセッサ設計は、より優れた相互運用性を提供するという点で優れている。しかしながらそのような設計の中でも、ネットワークのプロセッサが、その大小にかかわらず、またサーバーであれクライアントであれ、共通の設計上の特徴を共有するという場合には、更に高度な性能が発揮される。このことは同時係属中で本願の出願人に譲渡された米国特許出願第０９／８１５，５５４号（２００１年３月２２日出願）に解説されており、該出願は本明細書中に参考のために組み込まれている。そのような共通の設計では、共通の命令セットアーキテクチャ（ＩＳＡ:instruction set architecture）又はその一部、またデータ経路やアドレス指定のための共通の設計を有するコモン・アーキテクチャを利用する。そのような共通設計は、共有設計の高性能がもたらすメリットを促進しながら、画像データの供給及び／又は処理などのジョブに対しても高実行率をサポートする。
【０００４】
そのような目的のためにプロセッサを設計する場合、効率的なプロセッサの構成及び設計方法が必要とされる。また、サポートするように設計されているコンピューティングジョブやプロセッサのサイズに関わらず、相対的に短い設計サイクルを実現されなければならない。更に、このプロセッサ設計は、集積回路（ＩＣ）上に実装する寸前の時期でも、プロセッサの大規模な再設計を要求することなく、かつ、変更後のプロセッサへの命令セット実装にあたってハードウェアやマイクロコードの大規模な再設計を要求することなく、変更が可能なものでなければならない。
【０００５】
図１は、従来技術によるプロセッサの実行方法を例示したフロー図である。図１に示されているように、プロセッサ設計の開始ステップＳ０１は、新たな命令セットアーキテクチャを設計すること及び／又は既存の命令セットアーキテクチャへの拡張を設計することを含み、両方とも本明細書では集合的に“ＩＳＡ”として称される。命令セットアーキテクチャは、マシン語命令の集合であり、プロセッサは、そのような命令がプロセッサに存在するときはいつでも認識し実行する必要がある。ＩＳＡは、典型的に、データを記録し読み出すための命令、命令を記録し読み出すための命令、また数学的、論理的あるいは別のやり方でプロセッサの１つ以上のレジスタに保持されるオペランドとその他の命令を処理するための命令を含む。ＩＳＡでは、典型的には、特定のプロセッサまたはクラス又は特定の複数のプロセッサだけがその命令を実行することが出来るというポイントまで詳細化されている。ＩＳＡの詳細には、アクセス毎にストレージから読み出されるビットのデータ幅、またデータビットが直接アクセスされるフェッチコマンドの種類が含まれる。加えてプロセッサのレジスタと異なるレベルのストレージ、例えば異なるレベルのキャッシュ、との間のデータの動きに対するサポートは、典型的には、プロセッサ設計又はプロセッサ類に固有のものである。更なる例として、異なる構成を有するプロセッサで浮動小数点演算を実行できるものの、そのうち特定のクラスに属するプロセッサだけが、仮数が３２ビット長を有して指数が１６ビット長を有するとともに２の補数が数の符号を表す、という浮動小数点演算を実行することができる。
【０００６】
従来技術によるこの方法でＩＳＡが設計された後、次にプロセッサはＩＳＡの設計をサポートする固定された機能構成を有するようにカスタム設計される（ステップＳ０３）。そのいずれの拡張を有するＩＳＡは、典型的に極めて特定的な機能構成を有するプロセッサのハードウエアによってのみ実施されることができるように設計される。先に述べられているように、一例として、プロセッサのレジスタへ、またプロセッサのレジスタからデータを送信するためのビット幅と、プロセッサにより処理できるオペランドのビット幅は、典型的にはＩＳＡに含まれる命令により固定される。従ってプロセッサ設計は、ＩＳＡの命令に対するマイクロコードサポート及び／又は固定ハードウエアの設計プロセスに帰着させることができる。
【０００７】
その後、ステップＳ０５において、イシューロジック（issue logic）及びマイクロコードがカスタム設計され、命令をプロセッサのハードウエア上で実行する。プロセッサのハードウエアは命令を実行するために設計されたものである。イシューロジックは、プロセッサや人あるいは機械ベースのプログラマ（コンパイラ）により識別される制限されたビット幅の記号（例：３２ビットのテキストデータ）を有する命令を、一連の電気信号に変換するために用いられ、この一連の電気信号は、命令を実行する必要に応じてプロセッサのハードウエアの様々なエレメントを作動・オンまたは停止・オフにする。記号から信号へのそのような変換は、そのような信号を表す記録されたデータを検索することにより、典型的にはハードウエアあるいはファームウエアのどちらか一方で実施される。例えば、マイクロコード命令は、そのような信号を表すコントロール・ストアに記録されるデータにより実施される。記録されるデータはコントロール・ストアから特定の命令に対する記号を認識して読み出され、つまりフェッチされ、次にプロセッサ上で命令を実行する信号を送るために用いられる。従来技術の方法では、マイクロコード及びイシューロジックの設計は一般的にハードウエアの設計後に実施される。それらの設計はハードウエアの設計中にされる選択に依存しているからである。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来技術による設計方法では、プロセッサの設計を変更しようとするときに問題が発生する。ステップＳ０３において、プロセッサは固定機能構成を有しＩＳＡをサポートするように設計される。次にイシューロジックとマイクロコードはカスタム設計され、カスタム設計されたプロセッサ上でＩＳＡが実施される。しかしながら、イシューロジックとマイクロコードがカスタム設計されていることから、プロセッサ設計が変更されると、プロセッサに対する変更前の設計におけるイシューロジック及びマイクロコードは、変更されたプロセッサ設計ではもはや機能しない。従ってプロセッサ設計の変更が決定される場合は、常に、プロセスフローはＳ０３におけるプロセッサ設計ステップに戻る。このことから、変更されたプロセッサ設計上でＩＳＡを実施するには、プロセッサ設計の変更によりイシューロジック及びマイクロコードの設計変更をも必要とされ得ることになる。
【０００９】
上記考察に加えて、既に解説されている方法のステップＳ０３に従いプロセッサを設計するための従来技術による２つの既存の方法論として、統合設計及びカスタム設計が提供されている。これらの設計方法論では、プロセッサの“コア”、即ち付加的な機能を有する集積回路のプロセッサエレメントで、の設計に対し特定の用途を見いだしている。また、システム・オン・ア・チップ（system on a chip:“ＳＯＣ”）として分類される集積回路はプロセッサコアを有する。
【００１０】
図２に例示されているように,統合設計法では、Ｓ１０において示されているように、再利用可能なコンポーネントブロックのライブラリが事前に構築されており、このライブラリは、ある範囲のクロックスピードと目的を有するシステムで用いるため、多くの様々な回路を設計に用いることが出来る。再利用可能なコンポーネントブロックは、相対的に高レベルの言語、例えば、レジスタ・トランスポート・レベル（“ＲＴＬ）”記述により定義される。次に設計者はＳ１２において示されているように、コンポーネントブロックを特定することにより、その中で使用するため、プロセッサ設計をアセンブルする。コンパイラは、ＲＴＬ記述で特定されるコンポーネントブロックから回路のレイアウトを統合する。統合設計は設計サイクルの間にフレキシビリティを与え、命令セットやパイプライン幅、キャッシュサイズなどプロセッサの基本的特徴が変更される。Ｓ１４において示されているように、ＲＴＬ記述の異なる一連の再利用可能なコンポーネントブロックを特定することによりそのような変更がされる。また、統合設計により、設計及びテスティング（前ハードウエア段階において）を比較的短い設計サイクルで行うことが可能となる。
【００１１】
一方、カスタム設計は、相対的に長い設計サイクルを必要とすることから、容易ではない。図３に例示されているように、プロセッサの完全なカスタム設計では、Ｓ２０において示されているように、プロセッサのエレメントは全ての機能ブロックを含めて、ボトムレベルアップから設計される。回路は、例えば最小のクロック周波数をサポートする、電力消費量を特定の限度よりも小さくする、集積回路領域における占有領域を所定の値より小さくする、といった特定の性能基準に至るまで人手により設計される。Ｓ２２において示されているように、性能基準を満たすよう、機能ブロック間の配線とレイアウトもまた注意して設計される。設計の各エレメントに対しより大きな注意が払われており、また性能基準を満たすことが特に重要とされるので、統合的な設計に比較して、プロセッサをカスタム設計では、４倍までもの優れた性能を発揮することもできる。他方、カスタムデザインを変更することは問題を引き起こす。それはＳ２４に示されているように、カスタム設計の変更にはボトムレベルアップから再度プロセッサを再設計することが必要となるからである。
【００１２】
更に図１に関して上記に示されているように、プロセッサ設計を変更すれば、変更されたプロセッサ設計上でＩＳＡを実施するために、イシューロジックとマイクロコードの再評価と再設計をしなければならない。
【００１３】
従ってプロセッサで与えられるモジュールエレメントの数により決定される容量を有するモジュール機能構成を備えたプロセッサを提供することが望ましい。
【００１４】
更にプロセッサ設計で、例えばプロセッサの機能ユニット数の変更、といった変更がされるとき、イシューロジック及びマイクロコードの再設計を必要としないプロセッサを設計する方法を提供することが望ましい。
【課題を解決するための手段】
【００１５】
本発明の１つの形態によれば、モジュール構成を有するプロセッサが提供される。プロセッサは実行のためデータと命令を記録することができる少なくとも１つのローカルストア、ローカルストアから送られるデータ上で命令を実行することができる機能ユニット、また命令を実行するためローカルストアから送られる命令を機能ユニットの演算に変換することができる少なくとも１つのイシューロジックユニットを含む。
【００１６】
そのような各イシューロジックユニットは共通の命令セットに従って１つ以上の機能ユニットにより命令の実行を制御することができる。プロセッサが複数の機能ユニットを有するとき、少なくとも１つのイシューロジックユニットはローカルストアから送られる単一の命令（unitary instruction）をデコードし、その単一の命令により全ての機能ユニットを同時に演算することができる。各イシューロジックユニットは更に複数の命令をデコードし、複数の機能ユニットのうち第一及び第二サブセットを別々に演算することができ、各サブセットは複数の命令のうち、対応する１つに従い演算される。
【００１７】
本発明のその他の態様によれば、プロセッサを設計する方法が提供されている。そのような方法によれば、命令セットアーキテクチャ（ＩＳＡ）が提供される。プロセッサはＩＳＡをサポートするモジュール機能構成を有して設計され、イシューロジックはプロセッサ上でＩＳＡを実施するように設計され、該イシューロジックはモジュール機能構成変更に適応する。
【発明を実施するための最良の形態】
【００１８】
以下、図４から図１２を参照して本発明の実施例が以下に解説される。
【００１９】
図４はプロセッサ１０の構成を例示したブロック図であり、本発明の実施例による方法により設計されている。図４に示されているように、プロセッサは３つの主要な要素を備え、それらはローカルストア１２、機能ユニット１４、及びイシューロジック１６である。ローカルストア（ＬＳ）１２は、機能ユニット１４による実行のため、少なくともデータを記録し、好ましくは命令も同様に記録する。機能ユニット１４はＯＰビット幅を有するオペランド上に命令を実行する。このＯＰビット幅はローカルストア１２へ、またローカルストア１２からデータを送信するためのバス幅である。機能ユニット１４により処理されるビットＯＰの数はプロセッサ１０の設計により変わる。特定の実施例では、ビットＯＰの数は２の累乗の整数倍であり、例えば４、８、１６、３２または６４ビットである。機能ユニット１４はローカルストア１２からそこへ送られる演算上に命令を実行する。
【００２０】
イシューロジック１６は、実行のために待ち行列に挿入される命令を、機能ユニット１４を動作させる信号に変換するために機能する。例えば機能ユニットで二つのオペランドを乗算する命令は演算順に変換され、各々は１つのオペランドを第二オペランドのビットにより決定される左の桁数にシフトする。その後掛け算を完了するため、シフティングオペレーションの結果は桁上げして一緒に加算される。
【００２１】
発明の実施例により提供されているように、図５はもう１つのプロセッサ２０の構成を例示している。図４で示されているプロセッサ１０のように、プロセッサ２０は命令を信号へ変換し、機能ユニットによりその実行を制御するイシューロジック２６を有する。しかしながら、プロセッサ１０とは違って、プロセッサ２０は２２ａから２２ｄにおいて示されているように複数のローカルストア２２（ＬＳ）と、２４ａから２４ｄにおいて示されているように複数の機能ユニット２４とを有す。各ローカルストア２２は対応する機能ユニットと整合されるストレージスペースを提供し、少なくともオペランドをそれに対し供給する。例えばローカルストア２２ａは機能ユニット２４ａと整合されるストレージスペースを提供し、ローカルストア２２ｂは機能ユニット２４ｂと整合されるストレージスペースを提供する。各ローカルストアは好ましくは対応する機能ユニット２４により実行される命令も供給する。プロセッサ２０のローカルストア（ＬＳ）２２と機能ユニット２４は単一の集積回路で好ましくは実施されるが、それらはプロセッサ２０の設計から再利用される設計エレメントまたはコンポーネントである。従って、例えば本実施形態では、プロセッサ２０は４つの機能ユニットを有し、各々は４つの整合されるローカルストアと同様に３２ビット幅のオペランド上で命令を実行し、各々は３２ビット幅のオペランドに対しアクセスを提供する。加えて、プロセッサ２０は１２８ビット幅グループのオペランド上で同時に演算する命令を処理するイシューロジック ２６を有す。そのような場合、命令は３２ビットオペランドの複数（４つまで）の異なるストリームに関して“マルチスカラ”実行のため待ち行列に挿入される。そのようなマルチスカラ実行はサイクル毎のマルチスレッド実行により提供され、更なる詳細は以下に解説される。そのようなマルチスカラ実行では、プロセッサの機能ユニットの二つ以上のサブセットは、プロセッサに送られる複数の命令のうちの別々の命令により別々に演算される。このことは本願と同日出願で出願番号はまだ割り当てられていない、本願出願人による、係属中の米国仮特許出願６０，５６４，６７３号（出願日：２，００４年４月２２日、発明の名称：“Multi-Scalar Extension for SIMD Instruction Set Processors”）に解説されており、該出願の開示内容は、参照として本明細書中に組み込まれている。
【００２２】
他の形態では、プロセッサ２０を通るデータ経路の幅は、オペランドがそれぞれのローカルストア２２から待ち行列に挿入され、同一命令により同時に演算され、単一命令マルチデータ（ＳＩＭＤ）演算を提供する際に、２、３、あるいは４の係数により３２ビットから６４ビット、９６ビット、あるいは１２８ビットへと増加し得る。
【００２３】
図６は、本発明のもう１つの実施例によるプロセッサ３０の構成を例示している。図６に示される実施例はローカルストア（ＬＳ）３２と機能ユニット３４との間にスイッチ３３が介在している点で図５とは異なる。スイッチ３３は相互接続ネットワークを提供し、そのためオペランド及び／又は命令を含むデータはローカルストア３２（ＬＳ）のいずれの１つから読み出され、また機能ユニット３４のいずれの１つに送られる。望ましくは、相互接続ネットワークをクロスバー型として、４つ全てのローカルストア３２と４つ全ての機能ユニット３４との間にデータの複数同時送信ができるようにする。
【００２４】
図７は本発明のもう１つの形態によるプロセッサ３０の構成を例示している。図７の形態は、複数のイシューロジックユニット４６ａから４６ｄが提供されている点で図６とは異なる。イシューロジックユニット４６ａから４６ｄの各々は対応する機能ユニット４４ａから４４ｄのうちの１つと関連付けられる。デフォルト設定により、例えばイシューロジックユニット４６ａといった各イシューロジックユニットは、例えば機能ユニット４４ａといった対応する機能ユニットに対し命令をデコードする。次にデコードされた命令は対応する機能ユニットにより実行される。そのような方法で、複数の命令はイシューロジックユニット４６のそれぞれにより同時にデコードされ、次に機能ユニット４４の対応のそれによりそれぞれのデータ上に同時に実行される。しかしながら、各イシューロジックユニットは全ての機能ユニット４４ａから４４ｄによりそれぞれのデータ上のその命令を同時に実行するため、命令をデコードするように機能することもできる。すなわちＳＩＭＤ演算である。
【００２５】
図８は、図４で示されている発明の実施例により提供されるプロセッサ１００の構成を例示している。図８に示されているように、プロセッサ１００は機能ユニット１０２と機能ユニット１０２に結合されるキャッシュ１０４を含む。キャッシュ１０４はオペランドや機能ユニット１０２により実行される演算の結果であるデータのリポジトリ（格納場所）として機能する。プロセッサ１００は更に命令バッファ１０６を含み、命令は命令バッファ１０６からパイプライン１０８へ送られ、イシューロジック１１０により機能ユニット１０２を演算するため信号に変換する。図８に更に示されているように、プロセッサ１００はキャッシュ１０４と命令バッファ１０６を通ってメモリ１０１に介入している。メモリ１０１はプロセッサ１００による実行のためデータと命令を記録する。プロセッサ１００は命令の実行結果も記録する。加えて命令が実行の前に翻訳を必要とするいずれのステートメントを含むとき、メモリ１０１はプロセッサ１００によりそのようなステートメントを翻訳した結果として生成される更なる命令を記録するために用いられる。
【００２６】
図８に示されている例では、プロセッサへ、またプロセッサからキャッシュ１０４のデータ経路は１つの倍長語・ダブルワード（６４ビット）幅を有す。命令パイプライン１０８はダブルワード（幅は６４ビット）の幅を有する命令に適合する。実施例ではキャッシュは１０２４のそのようなダブルワードに適合する。
【００２７】
命令バッファ１０６は、命令パイプライン１０８のキューの配列に対し、メモリ１０１からフェッチされる命令を保持する。発明の実施例では命令バッファ１０６は、例えば各々が１つのダブルワード幅を有する３２の命令といった、適度の数の命令を保持する。プロセッサ１００がサポートする特定の応用に対し必要に応じて、より小さな、あるいはより大きな容量を有する命令バッファが提供される。好ましくは命令バッファ１０６は、命令パイプライン１０８への出力のため、メモリ１０１からフェッチされる命令を待ち行列に挿入するため、ファイフォ（ＦＩＦＯ）演算を提供し、また命令バッファ１０６は同様にランダムアクセスを提供し、分岐演算に関してバッファ順序どおりではなく命令が実行されることを許容する。
【００２８】
命令パイプライン１０８は命令バッファの有効な命令から実行のために多くの命令を待ち行列に挿入する。その命令の数は、図８に示されている例では６である。命令パイプライン１０８は従来のシングルスレッド法を支持しており、パイプラインの各命令（ＩＮＳＮ１、ＩＮＳＮ２、ＩＮＳＮ３、など）は命令の単一ストリームからであり、順番に命令ストリームの直前の命令へ続く。
【００２９】
命令パイプライン１０８の深さは、主に特定のプロセッサ構成の要求により決定される。６つの命令を待ち行列に挿入する命令パイプライン１０８は本明細書に示されているように、機能ユニット１０２を演算する信号に変換するため、各命令を処理するために６つの命令サイクルを必要とする。１つ以上のそれらのサイクルは一般的により早く実施された命令の結果に基づき、命令の依存度に対するチェックをするために用いられる。命令がそのような依存度を有することが検知された場合、より早く実施された命令をキャッシュから読み出すように準備ができていなければならず、あるいはキャッシュ１０４で有効でない場合は、メモリ１０１から読み出すため準備ができていなければならない。
【００３０】
場合によっては、より早い命令をストリームで実行した結果が、ディペンデンシーチェック時に、キャッシュあるいはメモリ１０１のいずれにおいても得られず、むしろ、キャッシュ１０４とメモリ１０１の“中間”のどこかに配置されている場合もある。換言すれば、データは、キャッシュあるいはメモリから他への送信処理の途中であり、キャッシュ１０４とメモリ１０１のどちらにおいても、その時点では、アクセスが許されない。そのような場合、処理を進めるに当たりいくつかの方法がある。１つの手法によれば、機能ユニット１０２は、データがキャッシュで有効になって命令の実行のため機能ユニットに送られるまで、一連の待ちサイクルを実施し、停止、つまりストールする。これは、データの準備が整うまで多くのプロセッササイクルが浪費されることから望ましくない。もう１つの方法は現在の命令ストリームが中断され、またプロセッサ１００がすぐにもう１つの命令ストリームを実行のためバッファ１０６と命令パイプライン１０８にローディングを開始することである。しかしながら多くのサイクルがバッファ１０６にロードされる命令に対し必要とされ、また命令パイプライン１０８に実行のため準備が整えられるのでこの方法もまた望ましくない。
【００３１】
図９は、命令パイプライン２０８に保持される命令の実行シーケンスを例示したものである。図９に例示されているように、パイプライン２０８の各命令は、スレッドナンバーＴ１により識別される。スレッドナンバーＴ１は、メモリから読み出された関連する命令の特定のシーケンスを識別する。当業者により一般的に理解されているように、スレッドの各命令は、通常、直前の命令と同じ動作アイテムに関連しており、そのため動作アイテムは順番に特定のスレッドの命令を実行することにより実施される。図９はある特定の時点でパイプライン２０８の全ての命令が、単一のスレッドＴ１の命令が順次並んだものとなっている場合を例示している。そのような配列では、時折、特定のスレッドの実行が停止し得ることがあり、別のスレッドの実行がその場所で開始する。図９で示されるモデルでは、スレッド間で時折発生するそのような変更のほかに、シングルスレッド命令パイプライン２０８を有するプロセッサによってスレッドの命令が実行されるように並んだ状態となることもある。つまりスレッドＴ１の命令が、順次実行される。
【００３２】
しかしながら、既に述べたように、そのような実行は様々な理由により望ましくないものとなり得る。例えば、命令２１０が前の演算の結果に依存していれば、その結果は、その命令２１０の実行しえる状態となった時点で、機能ユニット１０２（図８）が使用することができる状態でなくてはならず、さもなければ、命令２１０を実行することはできない。その結果、そのような依存性が発生するときの一般的な応答として、命令パイプライン２０８からスレッドＴ１の現在の命令ストリームを取り除き、パイプライン２０８を、もう１つのスレッドＴ１１（図示せず）の命令によって満たすという動作を開始するものとしてもよい。命令パイプライン２０８の深さは８であるので、パイプラインをリロードするための待ち時間即ちレイテンシーは８である。従って、スレッド間のそのような切り替えの間に命令パイプラインをリロードするには少なくとも８サイクルが浪費される。
【００３３】
図１０は上記に留意した問題点による影響を非常に小さくする命令パイプライン３０８を例示している。図１０に示されているように、パイプライン３０８で実行を待つ命令は、それぞれ別のスレッドに属する。各スレッドの命令が各スレッドで順次命令される一方で、各スレッドの命令は、各連続する命令サイクルでは異なるスレッドに属する命令が実行されるように、つまり、同じスレッドに属する命令が連続して実行されることがないように待ち行列に挿入される。
従って、第一サイクルの間、スレッドＴ１に属する命令３１０が実行される。続いて第二サイクルの間、スレッドＴ２から命令３１２が実行される。第三サイクルの間、スレッドＴ３に属する命令３１４が実行され、続いて第４サイクルのスレッドＴ４に属する命令３１６が実行される。このような、異なるスレッドの命令を上述のようにラウンドロビン方式で実行するというパイプライン化は、サイクル毎のマルチスレッディング（"cycle-by-cycle multiple threading"、あるいは"multithreading"）として知られる。
【００３４】
サイクル毎のマルチスレッディングは命令実行における依存性をより小さくすることから、プロセッサの効率に恩恵を与える。命令パイプライン３０８には実行を待つ命令の４つのスレッドがあるので、特定のスレッドＴ３の命令３１４に関して、依存関係が満たされない場合（例：キャッシュミス）でも、その他のスレッドＴ１、Ｔ２、及びＴ４の実行を中断させることはない。また、この特定のスレッドＴ３についての待ち状態は、その他のスレッドの実行を何ら妨げない。命令の実行はこれまで通り進められる。
【００３５】
更に、サイクル毎のマルチスレッディングは各スレッドの命令の実行のため、レイテンシーを小さくする。図１０に示されているように、８命令深さを有するとともに４つのスレッドに関してマルチスレッディングとなっている命令パイプラインでは、各スレッドに関するレイテンシーは、「２」であるに過ぎない。それは、いずれの時点においても、命令パイプライン３０８においては、各スレッドにおける実行待ちの命令は、わずか２つだけであることによる。更に、新しいスレッド、例えばスレッドＴ２２、が、依存性が満たされていないスレッドＴ２の代わりにパイプライン３０８にロードされた場合、８サイクルではなく、最大でも２サイクルが浪費されるに過ぎない。何故なら、その他のスレッドＴ１、Ｔ３、そしてＴ４に属する命令は、依然としてパイプラインに残ったままとなっているからである。
【００３６】
図１１は、本発明の実施例に従ったプロセッサの設計方法を示すフローチャートである。図１２は実施例に従った方法で設計されるプロセッサの構成を示すブロック図である。図１１に示すように、その方法の第一ステップはステップＳ３０に示すように、命令セットアーキテクチャ（ＩＳＡ）を設計すること、及び／又はＩＳＡへの拡張を設計することである。ＩＳＡが設計されるとＩＳＡをサポートするモジュール機能構成(modular functional organization)を備えたプロセッサのハードウエアが設計される（ステップＳ３２）。プロセッサのモジュール機能構成に含まれるモジュールエレメントは、プロセッサ内に存在するか又はプロセッサ内にはないエレメントを含み、あるいは、その存在量が異なるものもあるが、そのようなエレメントは、その他のエレメントとの個々の相互接続によって変化し得る。このプロセッサのモジュールエレメントは、図４から図７に関して上記に示し解説された数のファンクショナルエレメント、ローカルストア、及びイシューロジックユニットを含むものが示され、また、図６と図７に関して示し解説しているように、スイッチがある場合、ない場合も示される。その後、ステップＳ３４において示すように、イシューロジックとマイクロコードが、ＩＳＡを実施するために設計される。イシューロジックとマイクロコードはプロセッサのモジュール構成の変更に適応する、あるいは構成の変更を吸収するためのものである。
【００３７】
これらのステップが実行されると、次にステップＳ３６において、特定のモジュール構成がその使用目的に応じてプロセッサ設計のために選択される。このステップでは、機能ユニット数、ローカルユニット数、イシューロジックユニット、及び／又はスイッチが特定のプロセッサに対し構成の一部として選択され、またその使用目的に対して選択される。例えば、機能ユニットが４つ、ローカルストアが４つ、スイッチ無し、そしてイシューロジックユニットが２つ、といったプロセッサ構成が、個々の用途によって選択される。
【００３８】
その後プロセッサの個々の使用において、ステップＳ３８で、プロセッサの設計が変更されるべきかどうか判断される。変更が必要な場合、エレメントに関しては、プロセッサのモジュール機能構成、すなわち、機能ユニット数、ローカルストア数、イシューロジックユニット数、スイッチの有無、などがステップＳ４０において変更される。その結果として、上記のような、エレメント数が変更されたプロセッサ設計が得られる。そのような新たなプロセッサ設計は、既にＩＳＡをサポートしており、また、変更されたプロセッサ設計に対しオペレーション（演算）を行うことができるイシューロジックとマイクロコードを有する。これは、ＩＳＡ、イシューロジック及びマイクロコードが、いずれもこのようなモジュラー機能構成を備えたプロセッサをサポートするように設計されていることによるものである。
【００３９】
図１２を参照して、もう一つの実施例では、本明細書中に開示される方法により設計されるプロセッサ４００の構成は、様々な関数をサポートするために与えられる再利用可能な多くのエレメントの関数として変化する。従って、プロセッサ４００の設計は複数の再利用可能なキャッシュエレメントＣＥ１、ＣＥ２．．．ＣＥＺを有するキャッシュ４０４を含む。キャッシュのサイズは、設計で利用されるキャッシュエレメントの数により決定される。各キャッシュエレメントは、“マクロ”として適するものとなるように、全キャッシュのうち比較的大きい区分を表す。例えば、１６Ｋダブルワードサイズを有するキャッシュは、各々が１０２４ダブルワードサイズを有する１６キャッシュエレメントを有することができる。プロセッサのその他の基本的特徴は他のタイプのマクロのインスタンス数により決定される。従って、一形態では、命令バッファ４０６は命令バッファマクロのインスタンス数を選択することにより設計され、バッファＩＮＳＮ  ＢＵＦ０、ＩＮＳＮ  ＢＵＦ１．．．ＩＮＳＮ  ＢＵＦＸが与えられる。これらバッファの各々は、特定のスレッドに対し命令のストリームをバッファする。換言すれば、複数の命令バッファが与えられ、バッファの各々はラウンドロビン方式で、命令パイプライン４０８と結合される命令バスへ命令を出力する。複数の命令バッファＩＮＳＮ  ＢＵＦ１、ＩＮＳＮ  ＢＵＦ２などと命令パイプライン４０８とイシューロジック４１０とを組み合わせることにより、プロセッサ４００の命令パイプラインユニットが形成される。複数の命令バッファと命令パイプライン４０８への共通の出力を含む、命令パイプラインユニットの構成により、図１０に関し上記に解説されているような、サイクル毎のマルチスレッディングによってオペレーションを行うことが可能になる。ここでは、上述の図１に関して解説されている従来技術方法とは違って、命令バッファ数は、設計を開始する前に事前に決定される必要はない。各マクロは、再利用できるように設計されているので、プロセッサのファンクショナルエレメントのサイズ及び容量は、各タイプのマクロの相互接続と数により決定される。加えて、命令パイプライン４０８の深さＭと幅Ｎは好ましくは命令パイプライン４０８のその関数をサポートするマクロのインスタンス数により決定される。
【００４０】
加えてプロセッサ４００の機能ユニット４０２の容量は、与えられている機能ユニットマクロのインスタンスＦＣ１、ＦＣ２．．．ＦＣＹの数により決定される。機能ユニットマクロの各インスタンスは、図４から図７に関して上記に解説されているように、好ましくは機能ユニットにおける機能を実施する。換言すれば、機能ユニットマクロの各インスタンスはスレッドを実行する機能を有する。従って、各々が各ＯＰビットのオペランドを処理する機能ユニットマクロをＹ個有するプロセッサ構成には、二つの利点が得られる。第一に、Ｙ個までの命令ストリームに対し、マルチスレッディングが可能である。第二に、Ｙ＊ＯＰをまでの幅を有するオペランドは機能ユニットが一つのユニットとして一緒に演算される場合、１つのサイクルで処理され得る。
【００４１】
これまでの説明では、設計方法とプロセッサの構成に関して、サイズや機能の異なるプロセッサのフレキシブルかつ多様な設計を強調したが、これらの方法及びプロセッサの構成は、それにも拘わらず、共通の設計特徴を有し、また特定の性能基準を満たすようにされている。
【００４２】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
以上、本発明によれば、実行のためデータ及び命令を記録するよう動作可能な少なくとも１つのローカルストア、ローカルストアから得られるデータに命令を実行するよう動作可能な少なくとも１つの機能ユニット、かつ、ローカルストアから与えられ、命令を実行するために機能ユニットのオペレーションへ命令を変換するよう動作可能な少なくとも１つのイシューロジックユニット、を含むモジュール構成を有したプロセッサが提供される。命令を変換することができるそのようなイシューロジックユニットの各々は、共通の命令セットにより、１つ以上の機能ユニットによって命令が実行されるのを制御することが出来る。プロセッサが複数の機能ユニットを備えている場合は、少なくとも１つのイシューロジックユニットは、ローカルストアから得られる単一の命令をデコードし、単一の命令に従って、全ての機能ユニットに同時にオペレーションを行うよう動作可能である。各イシューロジックユニットは更に多数の命令をデコードし、複数の機能ユニットのうち第一及び第二サブセットに別々にオペレーションを行うよう動作可能であり、各サブセットは複数の命令のうち、対応する命令によりオペレーションが行われる。
【図面の簡単な説明】
【００４３】
【図１】従来技術によるプロセッサの実行方法を例示したフロー図である。
【図２】従来技術による合成設計法を例示したフロー図である。
【図３】従来技術によるカスタムデザイン法を例示したフロー図である。
【図４】本発明の一実施形態によるプロセッサの構成を例示したブロック図である。
【図５】本発明の他の実施形態によるプロセッサの構成を例示したブロック図である。
【図６】本発明のまた別の実施形態によるプロセッサの構成を例示したブロック図である。
【図７】本発明のまた別の実施形態によるプロセッサの構成を例示したブロック図である。
【図８】図４に例示される発明の実施形態によるプロセッサの詳細な構成を例示したブロック図である。
【図９】本発明の一実施形態によるプロセッサの単一スレッド命令パイプライン要素の構造及び機能の例示的説明図である。
【図１０】本発明の一実施形態によるプロセッサのサイクル毎のマルチスレッド命令パイプライン要素の構造及び機能の例示的説明図である。
【図１１】本発明の一実施形態による設計方法を例示したフロー図である。
【図１２】図１１に例示された実施形態により設計されたプロセッサの構成を例示したブロック図である。
【符号の説明】
【００４４】
１０、２０、３０、４０    プロセッサ
１２、２２、３２          ローカルストア
１４、２４、３４、４４    機能ユニット
１６、２６、４６          イシューロジック
３３                      スイッチ
１００、４００            プロセッサ
１０１                    メモリ
１０２、４０２            機能ユニット
１０４                    キャッシュ
１０６、４０６            命令バッファ
１０８、２０８、４０８    命令パイプライン
１１０                    イシューロジック
【図１】
2005310168.tif 000003
【図２】
2005310168.tif 000004
【図３】
2005310168.tif 000005
【図４】
2005310168.tif 000006
【図５】
2005310168.tif 000007
【図６】
2005310168.tif 000008
【図７】
2005310168.tif 000009
【図８】
2005310168.tif 000010
【図９】
2005310168.tif 000011
【図１０】
2005310168.tif 000012
【図１１】
2005310168.tif 000013
【図１２】
2005310168.tif 000014