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