JP3900499B2 - 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置 - Google Patents

再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置 Download PDF

Info

Publication number
JP3900499B2
JP3900499B2 JP2004311995A JP2004311995A JP3900499B2 JP 3900499 B2 JP3900499 B2 JP 3900499B2 JP 2004311995 A JP2004311995 A JP 2004311995A JP 2004311995 A JP2004311995 A JP 2004311995A JP 3900499 B2 JP3900499 B2 JP 3900499B2
Authority
JP
Japan
Prior art keywords
processor
coprocessor
instruction
function
fpga
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.)
Active
Application number
JP2004311995A
Other languages
English (en)
Other versions
JP2006215592A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004311995A priority Critical patent/JP3900499B2/ja
Publication of JP2006215592A publication Critical patent/JP2006215592A/ja
Application granted granted Critical
Publication of JP3900499B2 publication Critical patent/JP3900499B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、マイクロプロセッサに関し、より詳しくは、マイクロプロセッサに関連するコプロセッサの構成に関する。
ASIC(Application Specific IntegratedCircuit、特定用途向けIC)チップまたはシステム・オン・チップあるいはその両方にFPGA(Field Programmable Gate Array、書換え可能ゲート・アレイ)を使用して、命令レベルのハードウェアによる加速および資源共用をもたらすことが、当技術分野で知られている。図1に、FPGAを利用した従来の装置を示す。この装置は、メイン・プロセッサ102、コプロセッサ104、およびインターナショナル・ビジネス・マシーンズ・コーポレーション(商標)によって開発されたPLB(ProcessorLocal Bus、プロセッサ・ローカル・バス)106などのローカル・バスを含む、ASIC、システム・オン・チップまたは何らかの他のチップとすることができる。アーム社(ARM Ltd.)(商標)によって開発されたAMBA(AdvancedMicro-Controller Bus Architecture、高度マイクロコントローラ・バス・アーキテクチャ)など他のローカル・バスを使用することもできる。コプロセッサ104は、FPGAセル110および複数のインターフェースを含む。このインターフェースには、FPGA110をプログラムするプログラミング・インターフェース108、PLBインターフェース112、およびAPU(AuxiliaryProcessing Unit、補助処理装置)インターフェース114が含まれる。APUインターフェース114は、特別のハードウェアにより加速される関数が命令フロー・レベルにおいてプロセッサ102と密結合することを可能にする。緩結合オペレーションでは、プロセッサ102は、PLB106を介してコプロセッサ104と通信する。プロセッサ102内部のフェッチされた命令は、APUインターフェースを介してコプロセッサ104と同時に共用される。コプロセッサ104が、その実行ユニットに対して有効な命令またはオペレーション・コード(「オペコード」)に出会ったとき、コプロセッサ104はプロセッサ102にその旨を通知する。次いで、コプロセッサ104は、命令とともに供給されたオペランドに対して要求された関数を実行し、APUインターフェース114を介してプロセッサ102にその結果を戻す。
従来、FPGA110内部のロジックは、プロセッサ102によって供給されるオペランドに対して特殊な関数を実行するようにシステム開発者によってプログラムされる。コプロセッサ命令に対して複数のオペレーションを提供するために、複数の関数をFPGA110内部でビット・マッピングすることができる。通常、このプログラミングは、プロセッサ102が実行するアプリケーションのセットアップ中またはチップ初期化中に実施される。しかし、アプリケーション実行中にアプリケーションがFPGA中にプログラムされていない関数を要求した場合は、たとえ、要求された関数がFPGA110をプログラムするために利用できる関数ライブラリ内に存在していたとしても、アプリケーションは、コプロセッサ104によって提供されるハードウェアによる加速または資源共用を利用できない。
したがって、FPGA(Field Programmable Gate Array)を動的にプログラムする方法および装置が必要である。この方法および装置は、アプリケーション実行中にFPGAをプログラムまたは再プログラムすることを可能にすべきである。本発明は、このような必要に対処する。
プロセッサに結合されたコプロセッサ中のFPGAを動的にプログラムする方法は、プロセッサがアプリケーションの実行を開始させるステップと、コプロセッサがアプリケーションのための関数の実行を求める命令をプロセッサから受け取るステップと、コプロセッサ中のFPGAが関数用のロジックでプログラムされていないと判定するステップと、関数用のコンフィギュレーション・ビット・ストリームをフェッチするステップと、FPGAをコンフィギュレーション・ビット・ストリームでプログラムするステップとを含む。このようにして、FPGAは、アプリケーション実行中に「オンザフライ」で、すなわち動的にプログラム可能である。FPGAによって提供されるハードウェアによる加速および資源共用の利点を、アプリケーションはより頻繁に利用することができる。コプロセッサおよびプロセッサを含むチップ上でのロジックの柔軟性および空間の節約も得られる。
本発明は、FPGAを動的にプログラムする方法および装置を提供する。以下の説明は、当分野の技術者が本発明を実施し使用することができるように提示され、特許の応用およびその要件に関して提供されたものである。記載の好ましい実施形態に対する様々な修正は、当分野の技術者には容易に明らかであり、本明細書中の一般的原理は、他の諸実施形態にも適用することができる。したがって、本発明は、ここに示された実施形態に限定されるべきでなく、本明細書中に記載の原理および機能に一致する最も広い範囲で認められるものとする。
本発明の機能のより具体的な説明については、図2から図7を以下の議論と併せ参照されたい。
図2に、本発明による、FPGAを動的にプログラムする装置の好ましい実施形態を示す。この装置は、メイン・プロセッサ202、コプロセッサ204、およびローカル・バスとしてのPLB(Processor Local Bus)206を含む。他のタイプのローカル・バスを使用することもできる。プロセッサ202は、例外処理サブルーチン222を含む。これについては下記でさらに説明する。コプロセッサ204は、動的にプログラム可能なFPGA210、このFPGA210をプログラムするためのプログラミング・インターフェース208、PLBインターフェース212、およびAPUインターフェース214を含む。この装置はさらに、コンフィギュレーション・ビット・ストリーム220を格納するためのメモリ216を含む。このコンフィギュレーション・ビット・ストリーム220は、プロセッサ202が実行するアプリケーションが要求することのできる様々な関数用のものである。メモリ216はプロセッサ202およびコプロセッサ204とともにチップ上に組み込むことができ、またチップに外付けすることもできる。本発明によれば、プロセッサ202がアプリケーションを実行中に、アプリケーションの要求した関数がFPGA210中にプログラムされていない場合、その関数用のコンフィギュレーション・ビット・ストリームをメモリ216からフェッチし、PLB206に結合されたプログラミング・チャネル218を介してプログラミング・インターフェース208に送ることができる。次いで、FPGA210は、フェッチされたコンフィギュレーション・ビット・ストリームでプログラムされる。プログラムされた後、コプロセッサ204がアプリケーションの要求した関数を実行することができる。このようにして、FPGA210は、アプリケーション実行中に「オンザフライ」で、すなわち動的にプログラム可能である。
図3は、本発明による、FPGAを動的にプログラムする方法の好ましい実施形態を示すフローチャートである。まず、ステップ302で、プロセッサ202によるアプリケーションの実行が開始される。次に、ステップ304で、コプロセッサ204がアプリケーションのための関数の実行を求める命令をプロセッサ202から受け取る。好ましい実施形態では、この命令は、コプロセッサ204のAPUインターフェース214に送られる。次に、ステップ306で、コプロセッサ204のFPGA210は、要求された関数用のロジックでプログラムされていないと判定される。好ましい実施形態では、FPGA210が関数でプログラムされていないときは、APUインターフェース214がエラーを返す。次いで、ステップ308で、プロセッサ202がメモリ216からその関数用のコンフィギュレーション・ビット・ストリーム220をフェッチする。次いで、ステップ310で、FPGA210がそのコンフィギュレーション・ビット・ストリーム220でプログラムされる。
好ましい実施形態においては、プロセッサ202がAPUインターフェース214からエラーを受け取ったとき、プロセッサ202が例外処理サブルーチン222を開始させる。この例外処理サブルーチン222では、メモリ216から関数用のコンフィギュレーション・ビット・ストリーム220をフェッチする。次いで、そのビット・ストリーム220がプログラミング・チャネル218を介してプログラミング・インターフェース208に送られる。好ましい実施形態においては、プログラミング・チャネル218は、ダイレクト・メモリ・アクセス(DMA)チャネルである。プロセッサ202の例外処理サブルーチン222は、要求された関数用のコンフィギュレーション・ビット・ストリーム220が格納されているメモリ216中の記憶位置をDMAチャネルに指し示す。次いで、DMAがビット・ストリーム220をフェッチし、それをFPGA210中に書き込む。本発明の精神および範囲から逸脱することなく、他のタイプのプログラミング・チャネルを使用することもできる。たとえば、PLB206上の入出力(I/O)レジスタ・ロジックを使用することができ、これを介してプロセッサ202がFPGA210を直接プログラムすることができる。
図4は、本発明による、動的にプログラム可能なFPGAを有するコプロセッサの好ましい実施形態を示す。コプロセッサ204は、複数のコプロセッサ状態機械(CSM1〜CSM3)を含む。各コプロセッサ状態機械(CSM)が関数型を表し、1つまたは複数のコプロセッサ管理資源(CMR1〜CMR9)を管理する。コプロセッサ管理資源(CMR)が、各コプロセッサ関数用のFPGA210内部のロジックを表す。このコプロセッサ管理資源は、その対応するCSMによって管理される。APUインターフェース214が受け取った命令は、命令タイプを記述し、追加の情報またはパラメータを含むことがある。APUインターフェース214が命令タイプに基づき適切なCSMにその命令を送る。次いで、このCSMが、要求された関数用の適切なCMRを実行させる。CMRのどれも要求された関数でプログラムされていない場合、APUインターフェース214がプロセッサ202にエラーを返す。上記のように、要求された関数用のコンフィギュレーション・ビット・ストリームがフェッチされ、適切なCMRがそのコンフィギュレーション・ビット・ストリームでプログラムされる。
たとえば、ステップ302で、アプリケーションが、特定のイベント・タイマを実行するよう要求する命令をコプロセッサ204に発行したと想定する。APUインターフェース214がその命令を受け取り、イベント・タイマ関数を管理するCSM1にその命令を送る。ステップ306で、CSM1は、要求されたイベント・タイマ関数用のロジックがCMR1〜CMR4のいずれの中にもプログラムされていないと判定する。APUインターフェース214がこのエラーをプロセッサ202に返す。次いで、プロセッサ202が例外処理サブルーチン222を実行させる。例外処理サブルーチン222がメモリ216から要求されたイベント・タイマ関数用のコンフィギュレーション・ビット・ストリームをフェッチし、このコンフィギュレーション・ビット・ストリームをプログラミング・インターフェース208に送る。次いで、CMRの中の1つが、適切なコンフィギュレーション・ビット・ストリームでプログラムされる。
図5は、本発明による、FPGAを動的にプログラムする方法の好ましい実施形態をより詳しく示すフローチャートである。アプリケーション実行中、ステップ502で、プロセッサ202が命令をフェッチする。ステップ504で、この命令がAPUインターフェース214に送られる。ステップ506で、この命令がコプロセッサ204向けである場合、APUインターフェース214がコミットを発行する。そうでない場合は、ステップ508で、APUインターフェース214がプロセッサ・パイプライン上の次の命令を処理する。APUインターフェース214がコミットする場合は、APUインターフェース214が関数を実行しようと試みる。その関数がFPGA210中にプログラムされている場合、ステップ516で、FPGAがその関数を実行する。ステップ518で、コプロセッサ204が直ちに応答して結果レジスタ中に値を入れることができる場合、ステップ522でその結果を返し、ステップ524で、命令が完了する。結果を直ちに返すことができない場合には、関数がその実行を完了するまでにもっとクロック・サイクルを必要としており、ステップ520で、プロセッサ・パイプラインが結果を待つために保留にされる。
関数がFPGA210中にプログラムされていない場合は、ステップ510で、APUインターフェースのコミットは、誤ったコミットである。誤ったコミットが返されると、ステップ512で、プロセッサ202が例外処理サブルーチン222を開始させる。次いで、ステップ514で、例外処理サブルーチン222がFPGA210を要求された関数でプログラムする。プログラムされた後、ステップ526で、プロセッサ202が元の命令を再発行する。
図6は、本発明による、FPGAを所望の関数でプログラムするステップをより詳しく示すフローチャートである。関数がFPGA210中にプログラムされていない場合、ステップ602で、コプロセッサ204、より具体的に言うとAPUインターフェース214が結果レジスタ中に例外コードを入れる。ステップ604で、プロセッサ202が例外コードに応答して例外処理サブルーチン222に分岐する。ステップ606で、例外処理サブルーチン222が渡された関数識別子をデコードする。次いで、ステップ608で、例外処理サブルーチン222が、PLB206を介して必要とされる関数の所有権を要求し、プログラミング・チャネル218からその所有権を授与される。次いで、ステップ610で、プロセッサ202が関数用のコンフィギュレーション・ビット・ストリーム220をメモリ216からフェッチする。ステップ612で、例外処理サブルーチン222が例外タイプおよびコプロセッサ命令タイプを識別する。次いで、ステップ614で、例外処理サブルーチン222がプログラミング・チャネル218およびプログラミング・インターフェース208を介して一連のロード/ストア命令を実行し、それによってFPGA210をコンフィギュレーション・ビット・ストリームでプログラムする。次いで、ステップ616で、プロセッサ202が命令を再発行する。
上記ならびに図5および図6に示したように、FPGAの動的なプログラミングの細部は、ソフトウェアの形で処理することができるが、本発明の精神および範囲から逸脱することなく、この動的なプログラミングの実施をハードウェアの形で行うこともできる。
図7は、本発明による、FPGAを動的にプログラムする装置の第2の好ましい実施形態を示す。この実施形態では、複数のプロセッサ702,708および712が、プログラム・メモリ(図示せず)およびコプロセッサ704、710、714などのシステム資源を共用する。各コプロセッサ704、710および714は、共用資源エージェント(Shared Resource Agent)として働き、それぞれSRI(Shared Resource Interface、共用資源インターフェース)706,711および716を介してPLB206に接続される。PLB206にSRM(SharedResource Manager、共用資源マネージャ)718が結合される。SRM718は、所与の資源を修正する権利を一時に1つのプロセッサのみに確実に与えることによって、共用資源間でデータ整合性が維持されることを保証する。各プロセッサ702,708および712ならびに各コプロセッサ704、710および714は、それぞれそれらのSRI706,711および716を介して共用システム資源に別々にアクセスでき、それらのアクセスはSRM718によって制御される。各コプロセッサ704,710および714中でのFPGAのプログラミングは、上記と同じ方法で実施される。ただし、SRM718はプログラミング・チャネル218として動作することができ、プロセッサ702、708および712によってフェッチされる命令をコプロセッサ704,710および714のうちのどのコプロセッサのFPGAにも送ることができる。SRM718は、フェッチされたコンフィギュレーション・ビット・ストリーム220をFPGA210中にプログラムすることができる。あるいは、プロセッサが資源をSRM718に要求することもできる。SRM718が資源をそのプロセッサに譲渡後、プロセッサ202がFPGAをプログラムする。
要求された関数をコプロセッサ中にロードしなければならないが、新しい関数をプログラムするのに十分な未使用のロジック資源がFPGA中にないとき、別の例外条件が起こり得る。この状況では、最小使用頻度(Least Recently Used、LRU)アルゴリズムをコプロセッサ中で、またはプロセッサ上で走るスレッドとして実装することができる。LRU関数マネージャは、コプロセッサ中にロードされる関数を常に把握し、所与の期間中それぞれがどれくらいの頻度で使用されたかを追跡する。新しい関数をロードするために古い関数のどれをディスエーブルしてロジック資源を空けるか決定するために、このLRU関数マネージャに照会することができる。このようにして、コプロセッサは、プロセッサのための関数キャッシュとして動作することができる。この関数ライブラリは、SRM718によって管理される。プロセッサによる例外処理は、LRU関数マネージャのオペレーションに起因する遅延が増す点を除き、上記と同じである。
FPGAを動的にプログラムする方法および装置を開示した。この方法は、プロセッサがアプリケーションの実行を開始させるステップと、コプロセッサが、アプリケーションのための関数の実行を求める命令をプロセッサから受け取るステップと、コプロセッサ中のFPGAが関数用のロジックでプログラムされていないと判定するステップと、関数用のコンフィギュレーション・ビット・ストリームをフェッチするステップと、FPGAをコンフィギュレーション・ビット・ストリームでプログラムするステップとを含む。このようにして、FPGAは、アプリケーション実行中に「オンザフライ」で、すなわち動的にプログラム可能である。コプロセッサおよびプロセッサを含むチップ上でのロジックの柔軟性および空間の節約も得られる。
ここに示した実施形態に則して本発明を説明したが、当分野の技術者は、この実施形態に対する様々な諸変形形態があり得、それらの変形形態が本発明の精神および範囲に含まれることを容易に理解されよう。したがって、当分野の技術者は、添付の特許請求の範囲で定義される精神および範囲を逸脱することなく多くの修正を行うことができる。
FPGAを利用した従来の装置を示す図である。 本発明による、FPGAを動的にプログラムする装置の好ましい実施形態を示す図である。 本発明による、FPGAを動的にプログラムする方法の好ましい実施形態を示すフローチャートである。 本発明による、動的にプログラム可能なFPGAを有するコプロセッサの好ましい実施形態を示す図である。 本発明による、FPGAを動的にプログラムする方法の好ましい実施形態をより詳しく示すフローチャートである。 本発明による、FPGAを所望の関数でプログラムするステップをより詳しく示すフローチャートである。 本発明による、FPGAを動的にプログラムする装置の第2の好ましい実施形態を示す図である。
符号の説明
202 メイン・プロセッサ
204 コプロセッサ
206 PLB(プロセッサ・ローカル・バス)
208 プログラミング・インターフェース
210 FPGA(書換え可能ゲート・アレイ)
212 PLBインターフェース
214 APU(補助処理装置)インターフェース
216 メモリ
218 プログラミング・チャネル
220 コンフィギュレーション・ビット・ストリーム
222 例外処理サブルーチン
702 プロセッサ
704 コプロセッサ
706 SRI(共用資源インターフェース)
708 プロセッサ
710 コプロセッサ
711 SRI(共用資源インターフェース)
712 プロセッサ
714 コプロセッサ
716 SRI(共用資源インターフェース)
718 SRM(共用資源マネージャ)

Claims (19)

  1. プロセッサに結合されたコプロセッサ中のFPGAを動的にプログラムする方法であって、
    (a)前記プロセッサがアプリケーションの実行を開始させるステップと、
    (b)前記コプロセッサが前記アプリケーションのための関数の実行を求める命令を、命令フロー・レベルにおいて前記プロセッサと前記コプロセッサとを密結合するAPUインターフェースを介して前記プロセッサから受け取るステップと、
    (c)前記コプロセッサ中の前記FPGAが前記関数用のロジックでプログラムされていないと判定するステップと、
    (d)前記プロセッサが、前記プロセッサと前記コプロセッサとを結合するローカル・バスに結合されたメモリから前記関数用のコンフィギュレーション・ビット・ストリームをフェッチするステップと、
    (e)前記ローカル・バスに結合されたプログラミング・チャネルを介して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするステップと
    を含む方法。
  2. 前記受け取るステップ(b)が、
    (b1)前記プロセッサと前記コプロセッサの間の前記APUインターフェースが前記命令を受け取るステップを含む、請求項1に記載の方法。
  3. 前記判定するステップ(c)が、
    (c1)前記APUインターフェースが誤ったコミットを発行したと判定するステップを含む、請求項2に記載の方法。
  4. 前記フェッチするステップ(d)が、
    (d1)前記プロセッサが例外処理サブルーチンを開始させるステップと、
    (d2)前記プロセッサの前記例外処理サブルーチンが前記関数用の前記コンフィギュレーション・ビット・ストリームをフェッチするステップと
    を含む、請求項1に記載の方法。
  5. 前記開始させるステップ(d1)が、
    (d1i)前記コプロセッサが誤ったコミットを発行したと判定するステップと、
    (d1ii)前記プロセッサが、前記誤ったコミットに応答して前記例外処理サブルーチンに分岐するステップと
    を含む、請求項4に記載の方法。
  6. 前記フェッチするステップ(d2)が、
    (d2i)前記例外処理サブルーチンが関数識別子をデコードするステップと、
    (d2ii)前記関数の所有権を要求し、前記所有権を譲り受けるステップと、
    (d2iii)メモリから前記関数用の前記コンフィギュレーション・ビット・ストリームをフェッチするステップと、
    (d2iv)前記コンフィギュレーション・ビット・ストリームの例外タイプおよびコプロセッサ命令タイプを識別するステップと、
    (d2v)前記コンフィギュレーション・ビット・ストリームを前記コプロセッサに送るステップと
    を含む、請求項4に記載の方法。
  7. 前記プログラムするステップ(e)が、
    (e1)前記プロセッサの例外処理サブルーチンが前記ローカル・バスに結合された前記プログラミング・チャネルを介して一連のロードおよびストア命令を実行して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするステップを含む、請求項1に記載の方法。
  8. (f)前記コプロセッサが前記命令の再発行版を受け取るステップをさらに含む、請求項1に記載の方法。
  9. プロセッサに結合されたコプロセッサ中のFPGAを動的にプログラムする方法であって、
    (a)前記プロセッサがアプリケーションの実行を開始させるステップと、
    (b)前記コプロセッサが前記アプリケーションのための関数の実行を求める命令を、命令フロー・レベルにおいて前記プロセッサと前記コプロセッサとを密結合するAPUインターフェースを介して前記プロセッサから受け取るステップと、
    (c)前記コプロセッサ中の前記FPGAが前記関数用のロジックでプログラムされていないとき、誤ったコミットを発行するステップと、
    (d)前記プロセッサが、前記誤ったコミットに応答して例外処理サブルーチンを開始させるステップと、
    (e)前記例外処理サブルーチンが前記プロセッサと前記コプロセッサとを結合するローカル・バスに結合されたメモリから前記関数用のコンフィギュレーション・ビット・ストリームをフェッチするステップと、
    (f)前記例外処理サブルーチンが前記ローカル・バスに結合されたプログラミング・チャネルを介して一連のロードおよびストア命令を実行して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするステップと
    を含む方法。
  10. プロセッサに結合されたコプロセッサ中のFPGAを動的にプログラムするためのプログラム命令を記録したコンピュータ読取り可能な媒体であって、
    (a)前記プロセッサがアプリケーションの実行を開始させるための命令と、
    (b)前記コプロセッサが前記アプリケーションのための関数の実行を求める命令を、命令フロー・レベルにおいて前記プロセッサと前記コプロセッサとを密結合するAPUインターフェースを介して前記プロセッサから受け取るための命令と、
    (c)前記コプロセッサ中の前記FPGAが前記関数用のロジックでプログラムされていないと判定するための命令と、
    (d)前記プロセッサが、前記プロセッサと前記コプロセッサとを結合するローカル・バスに結合されたメモリから前記関数用のコンフィギュレーション・ビット・ストリームをフェッチする命令と、
    (e)前記ローカル・バスに結合されたプログラミング・チャネルを介して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするための命令と
    を含む、媒体。
  11. 記命令(b)が、
    (b1)前記プロセッサと前記コプロセッサの間の前記APUインターフェースが前記命令を受け取るための命令を含む、請求項10に記載の媒体。
  12. 前記判定するための命令(c)が、
    (c1)前記APUインターフェースが誤ったコミットを発行したと判定するための命令を含む、請求項11に記載の媒体。
  13. 前記フェッチするための命令(d)が、
    (d1)前記プロセッサが例外処理サブルーチンを開始させるための命令と、
    (d2)前記プロセッサの前記例外処理サブルーチンが前記関数用の前記コンフィギュレーション・ビット・ストリームをフェッチするための命令と
    を含む、請求項10に記載の媒体。
  14. 前記開始するための命令(d1)が、
    (d1i)前記コプロセッサが誤ったコミットを発行したと判定するための命令と、
    (d1ii)前記プロセッサが、前記誤ったコミットに応答して前記例外処理サブルーチンに分岐するための命令と
    を含む、請求項13に記載の媒体。
  15. 前記フェッチするための命令(d2)が、
    (d2i)前記例外処理サブルーチンが関数識別子をデコードするための命令と、
    (d2ii)前記関数の所有権を要求し、前記所有権を譲り受けるための命令と、
    (d2iii)メモリから前記関数用の前記コンフィギュレーション・ビット・ストリームをフェッチするための命令と、
    (d2iv)前記コンフィギュレーション・ビット・ストリームのために例外タイプおよびコプロセッサ命令タイプを識別するための命令と、
    (d2v)前記コンフィギュレーション・ビット・ストリームを前記コプロセッサに送るための命令と
    を含む、請求項13に記載の媒体。
  16. 前記プログラムするための命令(e)が、
    (e1)前記プロセッサの例外処理サブルーチンが前記ローカル・バスに結合された前記プログラミング・チャネルを介して一連のロードおよびストア命令を実行して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするための命令を含む、請求項10に記載の媒体。
  17. (f)前記コプロセッサが前記命令の再発行版を受け取るための命令をさらに含む、請求項10に記載の媒体。
  18. プロセッサに結合されたコプロセッサ中のFPGAを動的にプログラムするためのプログラム命令を記録したコンピュータ読取り可能な媒体であって、
    前記プログラム命令が、
    (a)前記プロセッサがアプリケーションの実行を開始させるための命令と、
    (b)前記コプロセッサが前記アプリケーションのための関数の実行を求める命令を、命令フロー・レベルにおいて前記プロセッサと前記コプロセッサとを密結合するAPUインターフェースを介して前記プロセッサから受け取るための命令と、
    (c)前記コプロセッサ中の前記FPGAが前記関数用のロジックでプログラムされていないとき、誤ったコミットを発行するための命令と、
    (d)前記プロセッサが前記誤ったコミットに応答して例外処理サブルーチンを開始させるための命令と、
    (e)前記例外処理サブルーチンが前記プロセッサと前記コプロセッサとを結合するローカル・バスに結合されたメモリから前記関数用のコンフィギュレーション・ビット・ストリームをフェッチするための命令と、
    (f)前記例外処理サブルーチンがローカル・バスに結合されたプログラミング・チャネルを介して一連のロードおよびストア命令を実行して、前記FPGAを前記コンフィギュレーション・ビット・ストリームでプログラムするための命令と
    を含む、媒体。
  19. アプリケーションを実行するためのプロセッサと、
    前記プロセッサに結合され、少なくとも1つのFPGAを含む少なくとも1つのコプロセッサと、
    前記プロセッサおよび前記少なくとも1つのコプロセッサを結合するローカル・バスに結合され、少なくとも1つの関数用のコンフィギュレーション・ビット・ストリームを含むメモリとを含むシステムであって、
    命令フロー・レベルにおいて前記プロセッサと前記コプロセッサとを密結合するAPUインターフェースと、
    前記ローカル・バスに結合されたプログラミング・チャネルと、を有し、
    前記プロセッサが、前記アプリケーションの実行中に前記アプリケーションのための前記関数の実行を求める命令を、前記APUインターフェースを介して前記少なくとも1つのコプロセッサに発行し、
    各々の前記コプロセッサが、当該コプロセッサ中の全ての前記FPGAが前記関数用のロジックでプログラムされていないと判定し、
    前記判定に応じて、前記プロセッサが、コプロセッサとFPGAとを選択し、
    前記メモリから前記少なくとも1つの前記関数用のコンフィギュレーション・ビット・ストリームをフェッチし、
    前記プログラミング・チャネルを介して、前記選択されたFPGAを前記少なくとも1つのコンフィギュレーション・ビット・ストリームでプログラムする、システム。
JP2004311995A 2004-10-27 2004-10-27 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置 Active JP3900499B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004311995A JP3900499B2 (ja) 2004-10-27 2004-10-27 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004311995A JP3900499B2 (ja) 2004-10-27 2004-10-27 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置

Publications (2)

Publication Number Publication Date
JP2006215592A JP2006215592A (ja) 2006-08-17
JP3900499B2 true JP3900499B2 (ja) 2007-04-04

Family

ID=36978808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004311995A Active JP3900499B2 (ja) 2004-10-27 2004-10-27 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置

Country Status (1)

Country Link
JP (1) JP3900499B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411528B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Storage management systems and methods
US9411613B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Systems and methods for managing execution of specialized processors
US9542244B2 (en) 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100781340B1 (ko) * 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
JP5035344B2 (ja) 2007-08-15 2012-09-26 富士通株式会社 動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法
JPWO2012035699A1 (ja) * 2010-09-15 2014-01-20 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラム
JP6228381B2 (ja) * 2012-04-30 2017-11-08 株式会社半導体エネルギー研究所 半導体装置
JP6740719B2 (ja) 2016-06-03 2020-08-19 富士通株式会社 情報処理装置、情報処理方法、およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411528B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Storage management systems and methods
US9411613B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Systems and methods for managing execution of specialized processors
US9542244B2 (en) 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors

Also Published As

Publication number Publication date
JP2006215592A (ja) 2006-08-17

Similar Documents

Publication Publication Date Title
US7584345B2 (en) System for using FPGA technology with a microprocessor for reconfigurable, instruction level hardware acceleration
JP5801372B2 (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
KR102496402B1 (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
US20060179277A1 (en) System and method for instruction line buffer holding a branch target buffer
GB2514882A (en) Instruction emulation processors, methods, and systems
US20140281398A1 (en) Instruction emulation processors, methods, and systems
JP5710434B2 (ja) アシスト・ハードウエア・スレッドの拡張可能な状態追跡のための方法、情報処理システム、およびプロセッサ
US9715403B2 (en) Optimized extended context management for virtual machines
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
US8756405B2 (en) Selective routing of local memory accesses and device thereof
US11941409B2 (en) Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process
US20150268985A1 (en) Low Latency Data Delivery
JP3900499B2 (ja) 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置
US9817763B2 (en) Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products
JPH07311740A (ja) コンピュータ
JP2009296195A (ja) 複数のcpuコアを備えたfpgaを用いた暗号装置
US20030182540A1 (en) Method for limiting physical resource usage in a virtual tag allocation environment of a microprocessor
US7877533B2 (en) Bus system, bus slave and bus control method
JP2022520914A (ja) メモリ組込み自己テストコントローラを用いる読み出し専用メモリのテスト
TWI847670B (zh) 使用矩陣乘法指令的設備
US20180349137A1 (en) Reconfiguring a processor without a system reset
JP3206394B2 (ja) 5段パイプライン構造のプログラマブルコントローラ
JP2003029966A (ja) データ処理装置
JPH0218733B2 (ja)
JPH02128242A (ja) バス制御回路

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060725

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061013

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20061013

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061013

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: 20061219

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20061220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061222

R150 Certificate of patent or registration of utility model

Ref document number: 3900499

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100112

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110112

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120112

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130112

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140112

Year of fee payment: 7