JP4197324B2 - シンセサイザブル・パイプライン・コントロールの方法及び装置 - Google Patents

シンセサイザブル・パイプライン・コントロールの方法及び装置 Download PDF

Info

Publication number
JP4197324B2
JP4197324B2 JP2005125340A JP2005125340A JP4197324B2 JP 4197324 B2 JP4197324 B2 JP 4197324B2 JP 2005125340 A JP2005125340 A JP 2005125340A JP 2005125340 A JP2005125340 A JP 2005125340A JP 4197324 B2 JP4197324 B2 JP 4197324B2
Authority
JP
Japan
Prior art keywords
processor
instruction
macro
design
instances
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005125340A
Other languages
English (en)
Other versions
JP2005322228A (ja
Inventor
剛 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2005322228A publication Critical patent/JP2005322228A/ja
Application granted granted Critical
Publication of JP4197324B2 publication Critical patent/JP4197324B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Advance Control (AREA)

Description

本発明は集積回路及びその設計に関するものである。なお、本願は、は米国仮特許出願第60/564,844号(2004年4月23日出願)による利益を享受するものであり、該出願の開示は本明細書に参照のため組み込まれている。
近年、集積回路プロセッサの設計はスタンド・アローン型のプロプライエタリな設計から、競争設計やレガシープラットフォームで更に大きなネットワーク能力や相互運用性をサポートする設計へと変化している。この変化は、これまで主要であったスタンド・アローン型のPCに代わってのネットワークサーバーコンピュータによるコンピューティングワールドの再編と同時に発生している。
従って、最高のスタンド・アローン性能を有するプロセッサを提供することだけではもはや十分ではない。プロセッサは目前のコンピューティングジョブを巧みに処理しなければならず、これはプロセスコールに対し効率的に応答することを意味する。設計の異なる種々のメーカーのプロセッサから到達するコールをサポートするというプロセッサ設計は、より優れた相互運用性を提供するという点で優れている。
しかしながら、そのような設計の中でも、ネットワークのプロセッサが、その大小にかかわらず、またサーバーであれクライアントであれ、共通の設計上の特徴を共有するという場合には、更に高度な性能が発揮される。このことは同時係属中で本願の出願人に譲渡された米国特許出願第09/815,554号(2001年3月22日出願)に解説されており、該出願は本明細書中に参考のために組み込まれている。そのような共通の設計では、共通の命令セットアーキテクチャ(ISA:instruction set architecture)又はその一部、またデータ経路やアドレス指定のための共通の設計を有するコモン・アーキテクチャを利用する。そのような共通設計は、共有設計の高性能がもたらすメリットを促進しながら、画像データの供給及び/又は処理などのジョブに対しても高実行率をサポートする。
そのような目的のためにプロセッサを設計する場合、効率的なプロセッサの構成及び設計方法が必要とされる。サポートするように設計されているコンピューティングジョブのサイズやプロセッサのサイズに関わらず、相対的に短い設計サイクルを実現されなければならない。一方で、各プロセッサは従来のスタンド・アローン型プロセッサの性能に匹敵するような高性能を提供する必要がある。設計サイクルや性能に関する上記の目的は、以下に解説する従来の設計方法論によれば、矛盾しているようにみえる。
プロセッサを設計するための従来技術による2つの既存の方法論として、統合設計及びカスタム設計が提供されている。これらの設計方法論では、プロセッサの“コア”、即ち集積回路(IC、即ち“チップ”)の設計に対し特定の用途を見出しており、これは、そのようなチップにより与えられる別の機能との間にプロセッサ機能を与えるものである。また、システム・オン・ア・チップ(system on a chip:“SOC”)として分類される集積回路はプロセッサコアを有する。
図1に例示されているように、統合設計法では、S10において示されているように、再利用可能なコンポーネントブロックのライブラリが事前に構築されており、このライブラリは、ある範囲のクロックスピードと目的を有して用いるため、多くの様々な回路を設計に用いることが出来る。再利用可能なコンポーネントブロックは、相対的に高レベルの言語、例えば、レジスタ・トランスポート・レベル(“RTL)”記述により定義される。次に設計者はS12において示されているように、コンポーネントブロックを特定することにより、その中で使用するため、プロセッサ設計をアセンブルする。コンパイラは、RTL記述で特定されるコンポーネントブロックから回路のレイアウトを統合する。統合設計は設計サイクルの間にフレキシビリティを与え、命令セットやパイプライン幅、キャッシュサイズなどプロセッサの基本的特徴が変更される。S14において示されているように、RTL記述の異なる一連の再利用可能なコンポーネントブロックを特定することによりそのような変更がされる。また、統合設計により、設計及びテスティング(前ハードウエア段階において)を比較的短い設計サイクルで行うことが可能となる。
一方、カスタム設計は、相対的に長い設計サイクルを必要とすることから、容易ではない。図2に例示されているように、プロセッサの完全なカスタム設計では、S20において示されているように、プロセッサのエレメントは全ての機能ブロックを含めて、ボトムレベルアップから設計される。回路は、例えば最小のクロック周波数をサポートする、電力消費量を特定の限度よりも小さくする、集積回路領域における占有領域を所定の値より小さくする、といった特定の性能基準に至るまで人手により設計される。S22において示されているように、性能基準を満たすよう、機能ブロック間の配線とレイアウトもまた注意して設計される。設計の各エレメントに対しより大きな注意が払われており、また性能基準を満たすことが特に重要とされるので、統合的な設計に比較して、プロセッサをカスタム設計することで、4倍までもの優れた性能を発揮することもできる。他方、カスタムデザインを変更することは問題を引き起こす。それはS24に示されているように、カスタム設計の変更にはボトムレベルアップから再度プロセッサを再設計することが必要となるからである。
本発明の一つの形態によれば、プロセッサに生成される、カスタム設計の再利用可能な部分を識別することを含む、集積回路のプロセッサを設計する方法が提供されている。プロセッサは、特定の性能基準を満たすため、カスタム設計される。そのようなカスタム設計には、再利用可能な部分に対しマクロをカスタム設計すること、各マクロのインスタンス数を特定すること、マクロに対し相互接続を提供すること、及び、カスタム設計されたマクロをアセンブルすること、が含まれる。
本発明のその他の形態によれば、少なくともエレメントのうちのいくつかがカスタム設計を有する複数のエレメントを備えた集積回路のプロセッサが提供される。再利用可能なエレメント及び再利用可能なエレメントの各々のインスタンス数に従ってプロセッサの構成が決定されるように、カスタム設計を有するエレメントの少なくとも幾つかは、再利用可能となっている。
以下、図3から図9を参照して本発明の実施例が以下に解説される。
図3は、プロセッサ10の構成を例示したブロック図であり、本発明の実施例による方法により設計されている。図3に示されているように、プロセッサは、3つの主要な要素を備え、それらはローカルストア(LS)12、機能ユニット14、及びイシューロジック16である。ローカルストア12は、機能ユニット14による実行のため、少なくともデータをバッファし、好ましくは命令も同様にバッファするよう機能する。機能ユニット14はOPビット幅を有するオペランド上に命令を実行する。機能ユニット14により処理されるビットOPの数はプロセッサ10の設計により変わる。特定の実施例では、ビットOPの数は2の累乗の整数倍であり、例えば4、8、16、32または64ビットである。機能ユニット14はローカルストア12からそこへ送られる演算上に命令を実行する。
イシューロジック16は、実行のために待ち行列に挿入される命令を、機能ユニット14を動作させる信号に変換するために機能する。例えば機能ユニットで二つのオペランドを乗算する命令は演算順に変換され、各々は1つのオペランドを第二オペランドのビットにより決定される左の桁数にシフトする。その後、シフティングオペレーションの結果は桁上げして一緒に加算される。
図4は、本発明の実施例による方法で設計された、もう1つのプロセッサ20の構成を例示している。図3で示されているプロセッサ10のように、プロセッサ20は、命令を信号へ変換し、機能ユニットによりその実行を制御するイシューロジック26を有する。しかしながら、プロセッサ10とは違って、プロセッサ20は複数のローカルストア22(LS)と、複数の機能ユニット24とを有する。各ローカルストア22は対応する機能ユニット26に少なくともオペランドを供給し、更に好ましくは、オペランド上に機能ユニット24で実行される命令も供給する。プロセッサ20のローカルストア22と機能ユニット24は単一の集積回路で好ましくは実装されるが、それらはプロセッサ10の設計から再利用される設計エレメントまたはコンポーネントである。従って、例えば、プロセッサ10は16ビット幅のオペランドに対しアクセスを提供するローカルストアと、64ビット幅の命令を処理するイシューロジックと同様、16ビット幅のオペランド上で命令を実行する機能ユニットを有す。そのような場合、プロセッサ20は、図示しているように、そのような4つの機能ユニット24と、そのような4つのローカルストアを備え、各々は16ビット幅のオペランドを処理し、かつ、イシューロジックは64ビット幅の命令を処理する。そのような場合、命令はサイクル毎のマルチスレッド実行(cycle-by-cycle multiple threaded execution)(以下に詳細を説明する)により与えられ得るような、4つの異なるオペランドのストリームについて、実行のために待ち行列に挿入されうる。他の形態では、プロセッサ20を通るデータ経路の幅は、オペランドが対応するローカルストア22へ待ち行列に挿入され、同一命令によりオペレーションが行われる場合に、4の係数により増加しうる。
図5は、本発明の実施例により設計されるプロセッサ100の構成を例示したブロック図の更なる詳細である。図5に示されているように、プロセッサ100は機能ユニット102と機能ユニット102に結合されるキャッシュ104を含む。キャッシュ104はオペランドや機能ユニット102により実行されるオペレーションの結果であるデータのリポジトリ(格納場所)として機能する。プロセッサ100は更に命令バッファ106を含み、命令は命令バッファ106からパイプライン108へ送られ、イシューロジック110により機能ユニット102のオペレーションを行うため信号に変換する。図5に更に示されているように、プロセッサ100はキャッシュ104と命令バッファ106を通ってメモリ101に介入している。メモリ101はプロセッサ100による実行のためデータと命令を記録する。プロセッサ100は命令の実行結果も記録する。加えて命令が実行の前に翻訳を必要とするいずれのステートメントを含むとき、メモリ101はプロセッサ100によりそのようなステートメントを翻訳した結果として生成される更なる命令を記録するために用いられる。
図5に示されている例では、プロセッサへ、またプロセッサからキャッシュ104のデータ経路は1つのダブルワード(64ビット)幅を有す。命令パイプライン108はダブルワード(幅は64ビット)の幅を有する命令に適合する。実施例ではキャッシュは1024のそのようなダブルワードに適合する。
命令バッファ106は、命令パイプライン108のキューの配列に対し、メモリ101からフェッチされる命令を保持する。発明の実施例では命令バッファ106は、例えば各々が1つのダブルワード幅を有する32の命令といった、適度の数の命令を保持する。プロセッサ100がサポートする特定の応用に対し必要に応じて、より小さな、あるいはより大きな容量を有する命令バッファが提供される。好ましくは命令バッファ106は、命令パイプライン108への出力のため、メモリ101からフェッチされる命令を待ち行列に挿入するため、ファイフォ(FIFO)オペレーションを提供し、また命令バッファ106は同様にランダムアクセスを提供し、分岐演算に関してバッファ順序どおりではなく命令が実行されることを可能にする。
命令パイプライン108は命令バッファの有効な命令から実行のために多くの命令を待ち行列に挿入する。その命令の数は、図5に示されている例では6である。命令パイプライン108は従来のシングルスレッド法を支持しており、パイプラインの各命令(INSN1、INSN2、INSN3、など)は命令の単一ストリームからであり、順番に命令ストリームの直前の命令へ続く。
命令パイプライン108の深さは、主に特定のプロセッサ構成の要求により決定される。6つの命令を待ち行列に挿入する命令パイプライン108は本明細書に示されているように、機能ユニット102を動作させる信号に変換するため、各命令を処理するために6つの命令サイクルを必要とする。1つ以上のそれらのサイクルは一般的により早く実施された命令の結果に基づき、命令の依存度つまりディペンデンシーに対するチェックをするために用いられる。命令がそのような依存度を有することが検知された場合、より早く実施された命令をキャッシュから読み出すように準備ができていなければならず、あるいはキャッシュ104で有効でない場合は、メモリ101から読み出すため準備ができていなければならない。
場合によっては、より早い命令をストリームで実行した結果が、ディペンデンシーチェック時に、キャッシュあるいはメモリ101のいずれにおいても得られず、むしろ、キャッシュ104とメモリ101の“中間”のどこかに配置されている場合もある。換言すれば、データは、キャッシュあるいはメモリから他への送信処理の途中であり、キャッシュ104とメモリ101のどちらにおいても、その時点では、アクセスが許されない。そのような場合、処理を進めるに当たりいくつかの方法がある。1つの手法によれば、機能ユニット102は、データがキャッシュで有効になって命令の実行のため機能ユニット102に送られるまで、一連の待ちサイクルを実施し、停止、つまりストールする。これは、データの準備が整うまで多くのプロセッササイクルが浪費されることから望ましくない。もう1つの方法は現在の命令ストリームが中断され、またプロセッサ100がすぐにもう1つの命令ストリームを実行のためバッファ106と命令パイプライン108にローディングを開始することである。しかしながら多くのサイクルがバッファ106にロードされる命令に対し必要とされ、また命令パイプライン108に実行のため準備が整えられるのでこの方法もまた望ましくない。
図6は、命令パイプライン208に保持される命令の実行シーケンスを例示したものである。図6に例示されているように、パイプライン208の各命令は、スレッドナンバーT1により識別される。スレッドナンバーT1は、メモリから読み出された関連する命令の特定のシーケンスを識別する。当業者により一般的に理解されているように、スレッドの各命令は、通常、直前の命令と同じ動作アイテムに関連しており、そのため動作アイテムは順番に特定のスレッドの命令を実行することにより実施される。図6はある特定の時点でパイプライン208の全ての命令が、単一のスレッドT1の命令が順次並んだものとなっている場合を例示している。そのような配列では、時折、特定のスレッドの実行が停止し得ることがあり、別のスレッドの実行がその場所で開始する。図6で示されるモデルでは、スレッド間で時折発生するそのような変更のほかに、シングルスレッド命令パイプライン208を有するプロセッサによってスレッドの命令が実行されるように並んだ状態となることもある。つまりスレッドT1の命令が、順次実行される。
しかしながら、既に述べたように、そのような実行は様々な理由により望ましくないものとなり得る。例えば、命令210が前のオペレーションの結果に依存していれば、その結果は、その命令210の実行しえる状態となった時点で、機能ユニット102(図5)が使用することができる状態でなくてはならず、さもなければ、命令210を実行することはできない。その結果、そのような依存性が発生するときの一般的な応答として、命令パイプライン208からスレッドT1の現在の命令ストリームを取り除き、パイプライン208を、もう1つのスレッドT11(図示せず)の命令によって満たすという動作を開始するものとしてもよい。命令パイプライン208の深さは8であるので、パイプラインをリロードするための待ち時間即ちレイテンシーは8である。従って、スレッド間のそのような切り替えの間に命令パイプラインをリロードするには少なくとも8サイクルが浪費される。
図7は上記に留意した問題点による影響を非常に小さくする命令パイプライン308を例示している。図7に示されているように、パイプライン308で実行を待つ命令は、それぞれ別のスレッドに属する。各スレッドの命令が各スレッドで順番に並んでいる一方で、各スレッドの命令は、各連続する命令サイクルでは異なるスレッドに属する命令が実行されるように、つまり、同じスレッドに属する命令が連続して実行されることがないように待ち行列に挿入される。従って、第一サイクルの間、スレッドT1に属する命令310が実行される。続いて第二サイクルの間、スレッドT2から命令312が実行される。第三サイクルの間、スレッドT3に属する命令314が実行され、続いて第4サイクルのスレッドT4に属する命令316が実行される。このような、異なるスレッドの命令を上述のように実行するというパイプライン化は、サイクル毎のマルチスレッディング("cycle-by-cycle multiple threading"、あるいは"multithreading")として知られる。
サイクル毎のマルチスレッディングは命令実行における依存性をより小さくすることから、プロセッサの効率に恩恵を与える。命令パイプライン308には実行を待つ命令の4つのスレッドがあるので、特定のスレッドT3の命令314に関して、依存関係が満たされない場合(例:キャッシュミス)でも、その他のスレッドT1、T2、及びT4の実行を中断させることはない。また、この特定のスレッドT3についての待ち状態は、その他のスレッドの実行を何ら妨げない。スレッドT1、T2及びT4の命令の実行はこれまで通り進められる。
更に、サイクル毎のマルチスレッディングは各スレッドの命令の実行のため、レイテンシーを小さくする。図7に示されているように、8命令深さを有するとともに4つのスレッドに関してマルチスレッディングとなっている命令パイプラインでは、各スレッドに関するレイテンシーは、「2」であるに過ぎない。それは、いずれの時点においても、命令パイプライン308においては、各スレッドにおける実行待ちの命令は、わずか2つだけであることによる。更に、新しいスレッドが、依存性が満たされていないスレッドの代わりにパイプライン308にロードされた場合、8サイクルではなく、最大でも2サイクルが浪費されるに過ぎない。何故なら、その他のスレッドT1、T3、そしてT4に属する命令は、依然としてパイプラインに残ったままとなっているからである。
ここで、命令パイプラインはいずれの任意の長さであってよく、またいずれの任意の数のスレッドが上述のように、サイクル毎のマルチスレッディングをサポートする命令パイプラインに介在すなわちインターリーブされ得る。
これまでに述べてきた理由により、完全なカスタム設計の性能に匹敵するレベルで機能しつつ、特定の再利用可能なエレメントの数や相互接続を変えるフレキシビリティを持ち、また、所望に応じて、サイクル毎のマルチスレディング法でオペレーションを行うことができる、プロセッサ設計の方法論が非常に望ましい。
図8は、本発明の実施例によりプロセッサを設計する方法を例示したフローチャートである。図9は実施例による方法で設計されたプロセッサの構成を例示したブロック図である。図8に示すように、プロセッサを設計する方法の第一ステップは、プロセッサ設計の再利用可能な部分を識別することであり、このステップをS30に示す。プロセッサは、繰り返す、即ちリピートするエレメントを備えている。ただし、そのリピートエレメントは、その他のエレメントへ個々に相互接続する場合には変化する。
図9を参照して、本明細書に開示されている方法により設計されたプロセッサ400の構成は、ステップS30で識別された再利用可能なエレメント数に従い変化し、また、様々な機能をサポートするものである。
従って、プロセッサ400の設計は、複数の再利用可能なキャッシュエレメントCE1、CE2...CEZを備えたキャッシュ404が含む。キャッシュのサイズは設計に使われているキャッシュエレメントの数により決定される。各キャッシュエレメントは、マクロとして適したものとなるように、全キャッシュのうち、比較的大きな部分を表すものとなっている。例えば、16Kダブルワードサイズを有するキャッシュは各々が1024ダブルワードサイズを有する16キャッシュエレメントを有することができる。
方法の次のステップ、S32(図8)は、プロセッサを形成しているマクロを含む、プロセッサをカスタム設計するものである。従って、そのようなマクロの各々では、特定の性能基準を満たすため、レイアウトと配線は人手により慎重に設計される。特定の性能基準には、目標とするクロック周波数を達成することが含まれ、この目標とするクロック周波数は、クロック周波数に対する下限を上回るものと考えられる。性能基準には、集積回路領域に関して目標とされる要求を満たすことも更に含み、このことは集積回路領域に対する上限を満たすものとして考慮されうる。このステップは、図2に関して上記に解説されているカスタム設計の方法論と類似しているが、この設計方法は、設計全体に組み込まれて共に機能するマクロとして利用される再利用可能なエレメントを要求する、という点では異なるものとなっている。
各マクロの設計が完成し、そのようなカスタム設計されたマクロのインスタンスが特定の機能をサポートするのにどれくらい必要であるかが決定された後、次にプロセッサの設計はマクロから一緒にアセンブルされる。アセンブル時に、マクロのインスタンスを互いに、その他のマクロへ、また設計のその他のエレメントへ相互接続するため、配線が好ましくはカスタム設計される。そのような方法で、プロセッサは厳しい性能基準により設計され、これは図2に関して上記に解説されている方法により設計されるプロセッサの性能基準と同程度に厳しいものである。
その後、図8に更に例示されているように、ステップS34では、設計や相互接続で用いられる各タイプのマクロのインスタンス数を変更することにより、プロセッサ設計を変更する方法を提供している。S34の方法では、本発明の実施例による設計のフレキシビリティと多様性が提供される。
この方法に基づくプロセッサ構成は、図9に関して最も理解されるものである。例示的実施例では、キャッシュエレメントマクロCE1、CE2、...CEZのインスタンス数を特定することによりアセンブルされるキャッシュ404に加えて、プロセッサのその他の重要な特徴は、その他のタイプのマクロのインスタンス数により決定される。従って、一実施例では、命令バッファ406は、命令バッファマクロのインスタンス数を選択することにより設計され、命令バッファ406はバッファINSN BUF0、INSN BUF1、...INSN BUFXが与えられる。これらバッファの各々は特定のスレッドに対して命令ストリームをバッファする。換言すれば、複数の命令バッファが与えられ、バッファの各々はラウンドロビン方式で、命令パイプライン408に結合される命令バスへ命令を出力する。複数の命令バッファINSN BUF1、INSN BUF2などと命令パイプライン408とイシューロジック410とを組み合わせることにより、プロセッサ400の命令パイプラインユニット412が形成される。複数の命令バッファと、命令パイプライン408への共通の出力を含む、命令パイプラインユニットの構成により、図7に関し上記に解説されているような、サイクル毎のマルチスレッディングによってオペレーションを行うことが可能になる。しかしながら、ここでは上述の図2に関して解説されている従来技術方法とは違って、命令バッファ数は設計を開始する前に事前に決定される必要はない。各マクロは再利用できるように設計されているので、プロセッサの機能エレメントのサイズ及び容量は、各タイプのマクロの相互接続と数により決定される。加えて、命令パイプライン408の深さMと幅Nは好ましくは命令パイプライン408のその関数をサポートするマクロのインスタンス数に従い決定される。
加えてプロセッサ400の機能ユニット402の容量は、与えられている機能ユニットマクロのインスタンス数FC1、FC2...FCYに従い決定される。機能ユニットマクロの各インスタンスは、図3と図4に関して上記に解説されているように、好ましくは機能ユニット14あるいは24の関数を実施する。換言すれば、機能ユニットマクロの各インスタンスはスレッドを実行する関数を有する。従って、各々が各OPビットのオペランドを処理する機能ユニットマクロをY個有するプロセッサ構成には、二つの利点が得られる。第一に、Y個までの命令ストリームに対し、マルチスレッディングが可能である。第二に、Y*OPまでの幅を有するオペランドは機能ユニットが一つのユニットとして一緒に演算される場合、1つのサイクルで処理され得る。
プロセッサの機能構成の特定の変更は米国仮特許出願第60/564,682号(2004年4月22日出願)に記載されており、該出願は本明細書中に参考のために組み込まれる。
これまでの説明では、設計方法とプロセッサの構成に関して、サイズや機能の異なるプロセッサのフレキシブルかつ多様な設計を強調したが、これらの方法及びプロセッサの構成は、それにも拘わらず、共通の設計特徴を有し、また特定の性能基準を満たすようにされている。
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
以上、本発明によれば、実行のためデータ及び命令を記録するよう動作可能な少なくとも1つのローカルストア22、ローカルストアから得られるデータに命令を実行するよう動作可能な少なくとも1つの機能ユニット24、ローカルストアから与えられ、命令を実行するために機能ユニットのオペレーションへ命令を変換するよう動作可能な少なくとも1つのイシューロジックユニット26、を含むモジュール構成を有したプロセッサが提供される。
従来技術による統合設計法を例示したフロー図である。 従来技術によるカスタム設計法を例示したフロー図である。 本発明の一実施形態によるプロセッサの構成を例示したブロック図である。 本発明の他の実施形態によるプロセッサの構成を例示したブロック図である。 本発明のまた別の実施形態によるプロセッサの構成を例示したブロック図である。 本発明の一実施形態によるプロセッサのシングルスレッド命令パイプラインエレメントの構造及び機能の例示的説明図である。 本発明の一実施形態によるプロセッサのサイクル毎のマルチスレッド命令パイプラインエレメントの構造及び機能の例示的説明図である。 本発明の一実施形態による設計方法を例示したフロー図である。 本発明の設計方法の実施形態によりアセンブルされたプロセッサの構成を例示したブロック図の詳細である。
符号の説明
10、20 プロセッサ
12、22 ローカルストア
14 機能ユニット
16 イシューロジック
24、26 機能ユニット
100、400 プロセッサ
101 メモリ
102、402 機能ユニット
104、404 キャッシュ
106、406 命令バッファ
108、208、308、408 命令パイプライン
110、410 イシューロジック

Claims (14)

  1. プロセッサ設計部とアセンブル部とにより実行される、集積回路のプロセッサを設計する方法であって、
    前記プロセッサ設計部が、
    プロセッサ中のカスタム設計される部分のうちプログラム言語記述により定義される再利用可能な部分を識別し、
    特定の性能基準を満たすように前記プロセッサのカスタム設計を行い、このカスタム設計では、当該カスタム設計で選択される各マクロのインスタンス数に従って、
    前記再利用可能な部分にマクロのカスタム設計を行い、
    各マクロのインスタンス数に従って、前記マクロに対してその配線がカスタム設計されるように、
    (a)同じマクロの別のインスタンス同士での接続による相互接続、
    (b)別のマクロとの接続による相互接続、
    (c)設計のその他のエレメントとの接続による相互接続、
    の少なくともいずれかによる相互接続を与えてプロセッサ設計の変更を行い、かつ、
    前記アセンブル部が、
    前記カスタム設計されたマクロをアセンブルし、
    前記マクロは、命令パイプライン機能を有する第一マクロを有し、前記プロセッサをカスタム設計する前記ステップは、前記第一マクロのインスタンス数を選択することを含めて命令パイプラインを設計することを含み、
    前記命令パイプラインユニットを設計する前記ステップは、複数の命令ストリームバッファを提供することを含み、各々のバッファは、少なくとも1つの別の前記命令ストリームバッファでバッファされる命令ストリームとは異なる命令ストリームをバッファするよう動作可能であり、かつ、前記命令パイプラインユニットがサイクル毎のマルチスレッディングするよう動作可能となるように、前記複数の命令ストリームバッファを前記命令パイプラインユニットに相互接続することを含む、方法。
  2. 前記マクロは、キャッシュ機能を有する第二マクロを有し、前記プロセッサをカスタム設計する前記ステップは、前記第二マクロのインスタンス数を選択することを含む、前記プロセッサのキャッシュを設計することを含む、請求項1記載の方法。
  3. 前記キャッシュのサイズは、前記第二マクロの前記選択されたインスタンス数に従い選択される、請求項2記載の方法。
  4. 前記マクロは、スレッド実行機能を有する第三マクロを有し、前記プロセッサをカスタム設計する前記ステップは、前記第三マクロのインスタンス数を選択することを含む、前記プロセッサの命令実行エレメントを設計することを含む、請求項1記載の方法。
  5. 前記命令実行エレメントにより同時実行が可能なスレッドの数は、前記第三マクロの前記選択されたインスタンス数に従い決定される、請求項4記載の方法。
  6. 前記特定の性能基準にはクロック周波数に対する下限を含む、請求項1記載の方法。
  7. 前記特定の性能基準には集積回路領域に対する上限を含む、請求項1記載の方法。
  8. 前記プロセッサの前記カスタム設計には、前記プロセッサのレイアウトの、人手による設計を含む、請求項6記載の方法。
  9. 前記プロセッサの前記カスタム設計には、前記プロセッサの配線の、人手による設計を含む、請求項6記載の方法。
  10. 集積回路のプロセッサであって、
    複数のエレメントを有するとともに少なくとも一つの前記エレメントがカスタム設計されるものであり、
    前記プロセッサの構成が、前記再利用可能なエレメントの相互接続、及び前記再利用可能なエレメント各々のインスタンス数に従い決定されるよう、前記カスタム設計されるエレメントのうちの少なくともいくつかは再利用可能であり、
    前記再利用可能なエレメントは、命令パイプライン機能を有したエレメントを有し、前記プロセッサの命令パイプラインユニットの構成は、命令パイプライン機能を有する前記エレメントの各々の選択されたインスタンス数に従い決定され、
    前記命令パイプラインユニットは、複数の命令ストリームバッファを有し、各々のバッファは、少なくとも1つの別の前記命令ストリームバッファでバッファされる命令ストリームバッファとは異なる命令ストリームをバッファするよう動作可能であり、前記複数の命令ストリームバッファは、前記命令パイプラインユニットがサイクル毎のマルチスレディングをするよう動作可能となるように、前記命令パイプラインユニットに相互接続することを含む、プロセッサ。
  11. 前記再利用可能なエレメントはキャッシュ機能を有するエレメントを有し、前記プロセッサのキャッシュ構成は、キャッシュ機能を有する前記エレメントの各々の選択されたインスタンス数に従い決定される、請求項10記載のプロセッサ。
  12. 前記キャッシュサイズはキャッシュ機能を有する前記エレメントの選択されたインスタンス数に従い決定される、請求項11記載のプロセッサ。
  13. 前記再利用可能なエレメントは、スレッド実行機能を有するエレメントを有し、前記プロセッサの命令実行エレメントの構成は、スレッド実行機能を有する前記エレメントの各々の選択されたインスタンス数に従い決定される、請求項10記載のプロセッサ。
  14. 前記命令実行エレメントにより同時実行が可能なスレッドの数は、スレッド実行機能を有する前記エレメントの選択されたインスタンス数に従い決定される、請求項13記載のプロセッサ。
JP2005125340A 2004-04-23 2005-04-22 シンセサイザブル・パイプライン・コントロールの方法及び装置 Expired - Fee Related JP4197324B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US56484404P 2004-04-23 2004-04-23

Publications (2)

Publication Number Publication Date
JP2005322228A JP2005322228A (ja) 2005-11-17
JP4197324B2 true JP4197324B2 (ja) 2008-12-17

Family

ID=34966110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005125340A Expired - Fee Related JP4197324B2 (ja) 2004-04-23 2005-04-22 シンセサイザブル・パイプライン・コントロールの方法及び装置

Country Status (5)

Country Link
US (1) US7401316B2 (ja)
JP (1) JP4197324B2 (ja)
KR (1) KR100721646B1 (ja)
CN (1) CN1771486B (ja)
WO (1) WO2005103920A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989733B (zh) * 2021-05-07 2021-11-30 北京芯愿景软件技术股份有限公司 电路分析方法、装置、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9648A (en) * 1853-04-05 Apparatus eob feeding blanks to screw-machines
US101307A (en) * 1870-03-29 Improved attachment for brushes
US1080006A (en) * 1911-04-15 1913-12-02 Frank W Godfrey Voting-machine.
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US6035106A (en) 1997-04-28 2000-03-07 Xilinx, Inc. Method and system for maintaining hierarchy throughout the integrated circuit design process
JP2001507187A (ja) 1996-12-20 2001-05-29 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 通信網
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
GB2373595B (en) 2001-03-15 2005-09-07 Italtel Spa A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7353362B2 (en) * 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus

Also Published As

Publication number Publication date
US7401316B2 (en) 2008-07-15
KR100721646B1 (ko) 2007-05-23
WO2005103920A1 (en) 2005-11-03
CN1771486A (zh) 2006-05-10
JP2005322228A (ja) 2005-11-17
US20050251762A1 (en) 2005-11-10
CN1771486B (zh) 2012-02-22
KR20060025534A (ko) 2006-03-21

Similar Documents

Publication Publication Date Title
JP7264955B2 (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
EP2441013B1 (en) Shared resource multi-thread processor array
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
US20140047218A1 (en) Multi-stage register renaming using dependency removal
US9547493B2 (en) Self-timed user-extension instructions for a processing device
JP2005004736A (ja) データ処理装置用バス相互接続ブロックの設計に関するフレキシビリティの改善
US20080320240A1 (en) Method and arrangements for memory access
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
JP2005310168A (ja) マルチプロセッサパイプラインの並行処理のための方法及び装置
JP4197324B2 (ja) シンセサイザブル・パイプライン・コントロールの方法及び装置
JP5110525B2 (ja) 動作合成システム、動作合成方法および動作合成用プログラム
EP1220092B1 (en) System and method for executing variable latency load operations in a data processor
JP2009507292A (ja) 分離したシリアルモジュールを備えるプロセッサアレイ
US6604163B1 (en) Interconnection of digital signal processor with program memory and external devices using a shared bus interface
US6981130B2 (en) Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
US11531550B2 (en) Program thread selection between a plurality of execution pipelines
JP2008242947A (ja) 半導体装置
US9652305B2 (en) Tracking source availability for instructions in a scheduler instruction queue
JP2010257200A (ja) 並列計算装置
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JPH05143447A (ja) デイジタルプロセツサ及びその制御方法
JP2003015861A (ja) 半導体集積回路及びコンピュータ読取り可能な記録媒体
JPH03168832A (ja) 分散型マイクロプログラム制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080924

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080925

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111010

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121010

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131010

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees