JP2018530025A - 高速で再構成可能な回路及び高帯域幅のメモリインタフェースを用いたコンピュータアーキテクチャ - Google Patents

高速で再構成可能な回路及び高帯域幅のメモリインタフェースを用いたコンピュータアーキテクチャ Download PDF

Info

Publication number
JP2018530025A
JP2018530025A JP2017567447A JP2017567447A JP2018530025A JP 2018530025 A JP2018530025 A JP 2018530025A JP 2017567447 A JP2017567447 A JP 2017567447A JP 2017567447 A JP2017567447 A JP 2017567447A JP 2018530025 A JP2018530025 A JP 2018530025A
Authority
JP
Japan
Prior art keywords
programming
instruction
configuration
programming area
memory
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.)
Pending
Application number
JP2017567447A
Other languages
English (en)
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2018530025A publication Critical patent/JP2018530025A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0008Arrangements for reducing power consumption
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories

Abstract

プログラマブルデバイスは、複数の構成可能論理ブロックをそれぞれ含む1つ以上のプログラミング領域を備え、複数の構成可能論理ブロックの各々は、プログラム可能な相互接続ファブリックを介して任意の他の構成可能論理ブロックに選択的に接続可能である。プログラマブルデバイスは、命令ストリーム内の命令に応じて、他のプログラミング領域の何れかとは独立してプログラミング領域内の1つ以上の構成可能論理ブロックのハードウェアを再構成するように構成された構成ロジックをさらに備える。【選択図】図1

Description

本開示は、プログラマブルデバイスの分野に関し、特に、命令ストリームの命令に応じて論理回路を再構成することに関する。
フィールドプログラマブルゲート・アレイ(FPGA)は、製造後にエンドユーザにより構成されるように設計された集積回路デバイスである。一般に、FPGAは、プログラマブル相互接続ファブリックを構成する相互接続リソースによって相互に接続された論理ブロックと呼ばれる、コミットされない回路素子のアレイを備える。相互接続リソースは、例えば、異なる構成で内部配線され得る論理ゲートを含むことができる。FPGA内の論理ブロックは、複雑な組み合わせ機能、又は、ANDやXOR等の論理機能を実行するように構成され得る。また、FPGA内の論理ブロックは、単純なフリップフロップ又はより完全なメモリブロックとして実装され得るメモリ要素を含むことができる。
FPGAでは、論理ブロックは、ルックアップテーブル(LUT)等の要素と、小型のスタティックランダムアクセスメモリ(SRAM)、又は、レジスタに値を挿入することによってプログラムされる他の固定機能と、を含むことができる。論理ブロックが使用可能になる前にプログラミングを実行する必要がある。プログラミングの後に、LUTへの機能入力の各組み合わせは、任意の論理機能の実行を可能にする所定の出力をもたらす。一般的なFPGAは、外部メモリデバイスと、構成のための単一の比較的遅いシリアルプログラミングポートと、に依存している。FPGAは、通常、「構成モード」と、チップ全体がプログラム待ちのアイドル状態にあるか、プログラムされたチップが動作している「ユーザモード」と、を有する。
本開示は、限定ではなく例として、添付図面に示されている。
コンピューティングシステムの実施形態を示す図である。 一実施形態による、フィールドプログラマブルゲートアレイ(FPGA)のコンポーネントを示す図である。 一実施形態による、機能テーブルの動作を示す図である。 一実施形態による、ダイスタックを示す図である。 一実施形態による、ダイスタック内のシリコン貫通ビア(TSV)を示す図である。 様々な実施形態による、ダイスタックを示す図である。 様々な実施形態による、ダイスタックを示す図である。 様々な実施形態による、ダイスタックを示す図である。 様々な実施形態による、ダイスタックを示す図である。 一実施形態による、コンピューティングシステムにおいて命令を実行するプロセスを示すフロー図である。
以下の説明は、実施形態の良好な理解を提供するために、特定のシステム、コンポーネント、方法等の例のように複数の特定の詳細を説明する。しかしながら、少なくともいくつかの実施形態がこれらの特定の詳細なしに実施され得ることは、当業者には明らかであろう。他の例では、周知のコンポーネント又は方法は、実施形態を不要に不明瞭にすることを避けるために、詳細には記載されておらず、又は、単純なブロック図形式で示されている。したがって、記載された特定の詳細は単なる例示である。特定の実施態様は、これらの例示的な詳細と異なる可能性があるが、依然として実施形態の趣旨及び範囲内にあると考えられる。
プログラマブルデバイスの一実施形態は、命令ストリーム内の命令に基づいて互いに並列且つ独立して再構成可能な複数の構成ドメインを有するフィールドプログラマブルゲートアレイ(FPGA)である。複数の構成ドメインの各々の構成データを、構成データへ高帯域幅アクセスを提供する3次元(3D)積層メモリに記憶することができる。デバイス内のプログラマブルロジックを高帯域幅メモリと共に分割することによって、数クロックサイクル内でプログラマブルロジックを再構成することが可能になり、異なるタイプの命令に適応するように再構成することができる柔軟なパイプラインが可能になる。
命令ストリームの実行を中断することなく複数のタイプの命令の何れかを実行するように任意のパイプラインを再構成することができるので、柔軟なパイプラインの実装によって、固定機能を処理するパイプラインとは対照的に、命令スケジューリングにおいてより高い柔軟性を可能にする。このようなシステムでは、異なる機能を実行する異なるスレッドを、複数の実行レーンに亘って単一サイクルでスケジューリングすることができる。
図1は、複数の構成ドメインを有するプログラマブルデバイス(すなわち、FPGA120)を含むコンピューティングシステム100の実施形態を示す図である。コンピューティングシステム100は、シリコン貫通ビア(TSV)104のセットによってコンピューティングシステム100に実装されるバスを使用して相互に通信することの可能なコンポーネントを含む。TSV104は、プロセッサロジックブロック105(プロセッサ101及びメモリコントローラ102を含む)と、メモリブロック110と、メモリブロック115と、FPGA120と、の間を接続し、通信を可能にする。一実施形態では、各ブロック105,110、115,120は、単一の集積回路ダイに対応する。代替の実施形態では、異なるブロックにあるように示されたコンポーネントは、同一のダイ上に集積されてもよく、同じブロックにあるように示されたコンポーネントは、複数のダイに分割されてもよい。
プロセッサ101は、TSV104に接続された1つ以上の他のデバイスにアドレス指定されたTSV104を介してデータを送信することができ、TSV104に接続された他のデバイスからデータを受信することもできる。また、プロセッサ101は、メモリサブシステム110に記憶された命令によって定義されるプログラムを実行することができ、これらの命令の一部又は全てを、FPGA120によって実行される命令ストリームにディスパッチすることができる。
FPGA120は、プログラミング領域122,123を含む。プログラミング領域122は、構成可能論理ブロック131〜134を含み、プログラミング領域123は、構成可能論理ブロック135〜138を含む。FPGA120内のプログラマブルロジックは、構成可能論理ブロック131〜138に存在しているので、別々に構成可能であり、プログラミング領域122,123の境界によって画定される複数の構成ドメインに分割される。図1は、FPGA120が2つのプログラミング領域122,123を含むように示しているが、代替の実施形態では、FPGA120は、3つ以上のプログラミング領域を含むことが可能である。代替の実施形態では、各プログラミング領域は、4つより少ない又は多い構成可能論理ブロックを含むこともできる。また、FPGA120は、構成データを受信し、受信した構成データにしたがってFPGA120内の1つ以上のプログラミング領域を再構成する構成ロジック121を含む。
メモリ110は、FPGA120内のプログラミング領域の構成データを記憶する構成メモリ領域111,112を含む。構成メモリ領域111,112は、それぞれプログラミング領域122,123に対応し、これにより、構成メモリ111は、プログラミング領域122を構成するのに使用可能な構成データを記憶し、構成メモリ112は、プログラミング領域123を構成するのに使用可能な構成データを記憶する。構成メモリ領域111,112の各々は、プログラミング領域にプログラムするために選択することができる複数の構成状態(例えば、メモリ111の状態A及びB、メモリ112の状態C及びD)を記憶する。例えば、構成メモリ111の状態A又は状態Bは、対応するプログラミング領域122の構成を決定するために選択され得る。
また、メモリ110は、異なる構成に関連する状態情報を記憶するのに使用されるコンテキストメモリ113及びコンテキストメモリ114を含む。コンテキストメモリ113及びコンテキストメモリ114の各々は、プログラミング領域122,123の状態情報を記憶する。
メモリ115は、プログラミング領域122,123にそれぞれ対応するキャッシュ116及びキャッシュ117を含む。各キャッシュ116,117は、同じプログラミング領域に対応する構成メモリよりも低いレイテンシを有するメモリ技術(例えば、SRAM又はSTT−MRAM)を使用して実装される。例えば、構成メモリ111は、DRAMを用いて実装され、キャッシュ116は、SRAM又はスピントランスファトルク磁気ランダムアクセスメモリ(STT−MRAM)を用いて実装されてもよい。低レイテンシメモリは、プログラミング領域内のハードウェアを再構成する時間を短縮するために、構成ビットストリームデータをキャッシュするために使用される。
コンピューティングシステム100は、TSV104に接続されたメモリコントローラ102を含み、メモリコントローラ102は、TSV104に取り付けられた他のデバイス間の通信を容易にするロジックを含む。例えば、プロセッサ101は、メモリ領域111,112の何れかをアドレス指定することと、アドレス指定されたメモリ領域から一時バッファ(例えば、SRAM)へTSVを介して構成データを読み出すことと、FPGA120をアドレス指定することと、対応するプログラミング領域122又はプログラミング領域123を再構成するためにTSVを介して構成データをFPGA120に書き込むことと、によって、構成メモリ領域111,112及びFPGA120間の通信を容易にするようにメモリコントローラ102に指示してもよい。したがって、メモリコントローラ102は、コンピューティングシステム100のこれらのコンポーネント間のデータ転送を調整する。
コンピューティングシステム100において、メモリコントローラ102は、デバイス選択信号102aを介してデバイスを選択することによって、TSVに接続される1つのデバイス(例えば、FPGA120又はメモリ110)と通信を確立する。代替の実施形態では、デバイス選択信号は、FPGA120及びメモリ110以外の追加デバイスに及ぶことができる。あるいは、他のアドレス指定方法を使用することもできる。例えば、選択されたデバイスのアドレスがTSV104を介して送信されてもよい。
コンピューティングシステム100は、ソースコードに基づいて命令を生成するコンパイラ103を含む。コンパイラ103によって生成された命令はメモリサブシステム110に記憶され、プロセッサ101は、メモリサブシステム110から命令を取得して実行することができる。
図2は、FPGA120の実施形態の内部コンポーネントを示す図である。FPGA120は、論理ブロック(すなわち、ブロック131〜142)と呼ばれるプログラマブル回路要素のアレイと、論理ブロック131〜142を選択的に接続するために使用される相互接続リソース220〜222と、を備えるプログラマブルデバイスである。
FPGA120において、プログラミング領域122〜125の境界は破線で示されている。プログラミング領域122は、論理ブロック131〜134を含み、プログラミング領域123は、論理ブロック135〜138を含み、プログラミング領域124は、論理ブロック139,140を含み、プログラミング領域125は、論理ブロック141,142を含む。プログラミング領域122〜125は、FPGA120に含まれる論理ブロックを、互いに独立して動作及びプログラムできるか、より大きなプログラマブル領域として動作するように組み合わせることができる別々の構成ドメインに分割する。
プログラミング後に、プログラミング領域122〜125に含まれるロジックは、中央処理装置(CPU)又はグラフィックス処理ユニット(GPU)パイプラインの一部として使用することができる。したがって、プログラミング領域を使用して、CPU又はGPUからFPGA120に提供される命令ストリームにおいて受信された1つ以上の命令を実行することができる。
図2に示すように、プログラミング領域122,123の各々は、4つの構成可能論理ブロックを含み、プログラミング領域124,125の各々は、2つの構成可能論理ブロックを含む。したがって、所定のプログラミング領域は、同じプログラマブルデバイス内の別のプログラミング領域と同じ数の構成可能論理ブロックを含む必要がない。代替の実施形態では、プログラミング領域は、図示された数よりも少ない又は多い構成可能論理ブロックを含むことができる。
構成可能論理ブロック131〜142の各々は、ルックアップテーブル(LUT)及び固定機能ブロックを含む。プログラミングの後、LUTへの機能入力の各々の組み合わせは、任意の論理機能の実現を可能にする所定の出力をもたらす。構成可能論理ブロックの各々は、適切な値をLUT、及び、論理ブロック内のコンポーネント(例えば、LUT、固定機能ブロック等)間の接続を制御する構成メモリ領域又はレジスタに書き込むことによって、様々な機能を実行するようにプログラムすることができる。
構成可能論理ブロック131〜142の各々はプログラマブル相互接続ファブリック220に接続され、プログラマブル相互接続ファブリック220は、ブロック131〜142が選択的に相互接続されるのを可能にする導電性トレース及びスイッチを含む。図2では、構成可能なロジック131をプログラマブル相互接続ファブリック220に接続する導電性トレースが示されている。また、他のブロック132〜142も導電性トレースを介して相互接続ファブリック220に接続される。しかし、これらのブロック132〜142を相互接続ファブリック220に接続する導電性トレースは、明瞭化のために図面から省略されている。
プログラマブル相互接続ファブリック220は、代替の実施形態では、図2に示されるものと一様ではない場合がある。例えば、相互接続ファブリックは、異なる長さを有する導電性トレースを含むことができ、又は、FPGA120の異なる領域に異なる数の平行な導電性トレースを含むことができる。相互接続ファブリック220の導電性トレースは、それらが交差するスイッチによって相互に接続される。例えば、複数のトレースが交差する領域221(点線で示される)は、2つの導電性トレース間の各交点間のスイッチを含む。あるいは、スイッチは、領域221内のいくつかの交点にのみ存在してもよい。
また、プログラマブル相互接続ファブリックは、1つのプログラミング領域内のコンポーネントを他のプログラミング領域から選択的に隔離するために使用することの可能な境界スイッチ(例えば、スイッチ222等)を含む。境界スイッチは、FPGA120内のプログラミング領域122〜125の境界に配置される。例えば、プログラマブル相互接続ファブリック220の導電性トレースがプログラミング領域122の境界を横切るところに境界スイッチ222が配置される。
したがって、境界スイッチ222を使用して、構成可能論理ブロック131〜134及びプログラミング領域122の他のコンポーネントを、他のプログラミング領域123〜125から隔離することができる。さらに、境界スイッチは、プログラミング領域を組み合わせるために、選択的に開閉することができる。例えば、プログラミング領域122,123間にある境界スイッチ222を閉じて領域122,123を互いに組み合わせ、他の境界スイッチを開いたままにして、組み合わせたプログラミング領域122,123を他のプログラミング領域124,125から隔離することができる。
図1を参照すると、FPGA120は、FPGA120内のプログラミング領域122,123のプログラミングを容易にする構成ロジック121を含む。特に、構成ロジック121は、プログラミング領域122の構成可能論理ブロック131〜134又はプログラミング領域123の構成可能論理ブロック135〜138のハードウェアを、既存のハードウェア構成から新たなハードウェア構成に再構成することによって、TSV104を介して受信する命令に応答する。構成ロジック121による1つのプログラミング領域内のハードウェアの再構成は、1つ以上の命令を実行するために異なるプログラミング領域が使用されている間に行われる。
構成ロジック121は、TSV104を介して受信した明示的な再構成命令に応じて、FPGA120内の1つ以上のプログラミング領域を再構成し、1つ以上のプログラミング領域を再構成することによって特定の機能の使用を要求する命令に対して黙示的に応答することができる。
命令ストリームに含まれる明示的な再構成命令は、FPGA120のランタイム動作中に受信され、再構成の対象となるプログラミング領域と、対象となるプログラミング領域のために選択された構成と、の両方を識別することができる。明示的な再構成命令に応じて、構成ロジック121は、対象となるプログラミング領域をFPGA120内の他のプログラミング領域から独立して再構成するために、(例えば、対象となるプログラミング領域のエッジにおいて境界スイッチを開くことによって)対象となるプログラミング領域を隔離し、次いで、選択された構成を対象となるプログラミング領域に適用することによって、対象となるプログラミング領域を再構成することができる。
明示的な再構成命令は、FPGAプログラミングビットストリームのアドレスを直接参照することによって、又は、所定のカスタマイズ可能な機能の1つのセットを参照することによって、対象となるプログラミング領域に実装される機能を参照する。例えば、構成メモリ111内の状態A,Bの各々は、プログラミング領域122にプログラム可能な機能に対応し、構成メモリ112内に記憶される状態C,Dの各々は、プログラミング領域123にプログラム可能な機能に対応している。状態A,B,C,Dの各々は、プログラミング領域内の対応する機能を実現するために使用され得る構成ビットストリームを記憶する。
構成ビットストリームは、構成ロジック121が対応する機能の実装を要求する明示的な再構成命令を受信する前に、構成メモリ領域111,112に記憶される。例えば、構成ビットストリームは、命令ストリームを生成するアプリケーションの実行開始時に記憶されてもよいし、アプリケーション内のプログラムループ又は他の実行バリアの先頭に記憶されてもよい。
構成ロジック121は、明示的な再構成命令が受信されなくても、プログラミング領域122,123の何れかのハードウェアを黙示的に再構成することができる。例えば、プログラミング領域122,123の何れにも実装されていない機能を呼び出す命令を受信した場合に、構成ロジック121は、再構成された1つ以上のプログラミング領域で命令を実行する前に、この機能を実現するためにプログラミング領域122,123の1つ以上を再構成する。
特定のプログラミング領域の構成メモリには、プログラミング領域の現在の構成も記録される。例えば、プログラミング領域122に関連する構成メモリ111は、プログラミング領域122の現在の構成を記憶する。したがって、特定の機能を呼び出す命令を受信したときに、命令をプログラミング領域で実行可能であるかどうか、又は、命令を実行するためにプログラミング領域を再構成すべきかどうかを判別するために、プログラミング領域の現在の構成を確認することができる。代替の実施形態では、FPGA120内の各プログラミング領域122〜123の現在の構成は、構成メモリ領域111〜112以外の場所に記憶される。例えば、現在の構成は、FPGA120自体に位置するメモリ又はレジスタに記憶され得る。
特定の機能を呼び出す命令に応じて、FPGA120の各プログラミング領域122〜123の現在の構成が確認され、呼び出された機能がプログラミング領域122〜123の何れかで実行可能であるかどうかが判別される。プログラミング領域122〜123の何れも呼び出された機能を実行するように構成されていない場合に、構成ロジック121は、プログラミング領域122〜123のうち1つ以上を、呼び出された機能を実行することの可能な新たな構成に再構成する。
図3は、一実施形態による、構成ロジック121がプログラミング領域の黙示的な再構成を実行するときに、プログラミング領域の構成ビットストリームが、受信した命令300に基づいてどのようにメモリに配置されるかを示す図である。図3に示すように、受信した命令300は、値ID1,ID2によって識別される2つの機能を識別する単一命令多重データ(SIMD)命令である。機能ID1に対して、命令300は、2つのオペランドSRC1A,SRC1Bと、機能結果の宛先DEST1と、を識別する。機能ID2に対して、命令300は同様に、2つのオペランドSRC2A,SRC2Bと、機能結果の宛先DEST2と、を識別する。
構成ロジック121は、命令300を受信すると、機能テーブル301内の呼び出された機能ID1,ID2のエントリを参照する。図3に示すように、機能テーブル301は、機能ID1,ID2の各々のアドレスA及びアドレスBを返す。アドレスA,Bは、構成メモリ111に記憶されている構成ビットストリーム(すなわち、状態A及び状態B)の位置を識別する。構成ロジックは、状態A及び状態Bに記憶されている識別された構成ビットストリームを使用して、命令300の実行のためにプログラミング領域123を再構成する。
状態A〜Dにおける構成ビットストリームは、単純な単一オペレーション又はより複雑な複合オペレーションであるプログラミング領域122〜123で実装するための機能を定義することができる。プログラムされると、プログラミング領域122〜123は、各々がメモリアドレスの範囲を通してアクセス可能な独立した論理ユニットとして使用することができる。適切に構成されたプログラミング領域で命令を実行する場合、プログラミング領域の入力に接続された所定のオペランドレジスタを介して、命令のオペランドを渡すことができる。
FPGA120内の構成可能論理ブロック131〜138は、コンピューティングシステム100の構築された状態のかなりの部分を含むことができる。例えば、状態情報は、プログラミング領域内の命令の実行中に変更可能な値を含むことができる。論理ブロック131〜138の再構成によってコンテキストスイッチが行われると、再構成された論理ブロックの状態を、後で復元することができるように一時的に記憶することができる。例えば、プログラミング領域で実行されている第1スレッドは、第2スレッドがプログラミング領域を再構成することができるように一時停止することができ、第2スレッドがプログラミング領域での実行を終了した後に第1スレッドを再開するために、プログラミング領域の以前の構成及びコンテキストをコンテキストメモリから復元することができる。
図1を再度参照すると、構成メモリ111,112は、プログラミング領域122,123の各々に関連するコンテキストメモリ113,114を含む。コンテキストメモリ113,114は、論理ブロックの状態情報を各々のプログラミング領域122,123に記憶するために使用される。プログラミング領域122,123の何れかの再構成の前に、再構成されるプログラミング領域のコンテキストメモリは、同じコンテキストでプログラミング領域の元の構成を後に復元することができるように、論理ブロックの状態情報をプログラミング領域に記憶する。
具体的には、コンテキストデータは、プログラミング領域のハードウェア構成及びプログラミング領域内のレジスタ及びメモリブロック内に記憶された値を識別する情報を含むことができる。コンテキストメモリ113,114の何れかに記憶されたデータは、論理スタックとして編成することができる。したがって、プログラミング領域の第1構成に関連するコンテキストデータは、プログラミング領域を第2構成に再構成する前にスタックにプッシュされる。プログラミング領域が第1構成に再構成される場合に、第1構成のコンテキストデータがスタックからポップされ、第1構成のコンテキストが復元される。
概して、本明細書で説明する動作は、コンピューティングシステム100内の図示されたコンポーネントの1つによって実行されるものとして、別の実施形態ではコンピューティングシステム100内の他のコンポーネントによって実行され得る。例えば、構成ロジック121によって実行される動作は、他の実施形態では、コンピューティングシステム100の他のコンポーネントで実行されてもよい。構成メモリ111,112は、別のメモリ110上に配置されるように示されているが、その代わりにコンピューティングシステム100の他のコンポーネントに配置され得る。例えば、FPGA120は、代替の実施形態では、構成メモリ111,112の機能を実行するために使用可能なメモリを含むことができる。
図1を参照すると、コンピューティングシステム100のコンパイラ103は、アプリケーションのソースコードに基づいてアプリケーション用の命令を生成し、生成された命令を、プロセッサ101がアクセス可能な場所(例えば、メモリ110)に記憶する。代替の実施形態では、命令は、ハードディスクドライブ又は他の永続メモリ等のように、メモリ110と異なるメモリ場所に記憶される。図1では、コンパイラ103は、コンピューティングシステム100上で実行されるものとして示されているが、代替の実施形態では、別のコンピューティングシステム上で実行され、生成した命令をコンピューティングシステム100に送信することができる。
コンピューティングシステム100用の命令を生成する場合、コンパイラ103は、FPGA120内のプログラミング領域をプログラムするために、構成ビットストリームを構成メモリ領域(例えば、メモリ111,112)にプリロードする命令を挿入する。コンパイラは、ソースコードに基づいて実行され得る命令のタイプを識別し、次いで、命令を実行するための機能を実施するために、適切な構成ビットストリームをプリロードするための命令を挿入する。例えば、コンパイラ103は、プログラミング領域122,123の構成を利用する命令を実行する前に、コンフィギュレーション状態A,B,C,Dを構成メモリ111,112にプリロードする命令を生成する。構成ビットストリームを構成メモリ111,112にプリロードすることによって、構成ロジック121は、命令ストリームの命令に応じてプログラミング領域の黙示的な再構成を迅速に実行することができる。
コンパイラ103は、明示的な再構成命令を、アプリケーション用の命令ストリームに挿入することもできる。コンパイラ103は、アプリケーションのソースコードに基づいて、プログラミング領域に実装可能な機能によって実行可能な命令を識別し、その後、明示的な再構成命令を、識別された命令の前に命令ストリームに挿入する。したがって、明示的な再構成命令は、識別された命令が実行されるようにスケジューリングされる前に、識別された命令の実行のためにプログラミング領域の1つを再構成させる。
コンパイラ103は、再構成されるプログラミング領域の使用の前に明示的な再構成命令をスケジューリングし、他の命令がFPGA120の他のプログラミング領域又はプロセッサ101で並列に実行されている間に再構成が行われるように、明示的な再構成命令をスケジューリングすることもできる。明示的な再構成命令の完了に依存する命令は、再構成が完了するまで命令の実行を抑制する、命令の一部としての依存性を示す。
また、コンパイラ103は、プログラミング領域に実装される特定の機能を呼び出す命令と、この機能を実現するための再構成レイテンシとを識別することに基づいて、構成プリフェッチ命令を挿入することもできる。構成プリフェッチ命令は、プログラミング領域の所期の明示的又は黙示的な構成変更の前に、プログラミング領域の構成ビットを、メインメモリから例えばローカルSRAM又はSTT−MRAMバッファ等のより高速なメモリに転送する。したがって、構成プリフェッチ命令は、プログラミング領域を再構成するためのレイテンシを低減することができる。
また、コンパイラ103は、プログラミング領域を再構成する回数を減らすために、同じプログラマブル機能を使用する命令のグループをクラスタリングして、プログラミング領域を再構成するのに費やされる時間及び電力を削減することを試みる。
コンパイラ103は、再構成バリア命令を、アプリケーションの命令ストリームに挿入することもできる。再構成バリア命令は、複数のスレッドの何れかの実行が継続する前に、複数のスレッドに対して、1つ以上のプログラミング領域の再構成が完了するのを待機させる。再構成バリア命令は、例えば、複数の実行レーンを実装する1つ以上のプログラミング領域を、新たなワークグループを実行するための新たな機能のセットに再構成するために使用され得る。
図4Aは、一実施形態による、3次元(3D)ダイスタック400としてのコンピューティングシステム100のコンポーネントの物理的な配置を示す図である。図4Aに示すように、複数の集積回路ダイ401〜404は、スタック400のインタポーザ405上に垂直に配置される。集積回路ダイのスタックの各々は、上から下に積み重ねられたDRAMダイ401と、SRAMダイ402と、FPGAダイ403と、プロセッサロジックダイ404と、を含む。プロセッサロジックダイ404は、図1に示すようなプロセッサロジックブロック105に対応し、これにより、コンピューティングシステム100のプロセッサ101及びメモリコントローラ102は、プロセッサロジックダイ404上に存在する。FPGA120は、FPGAダイ403上に存在する。DRAMダイ401は、プロセッサ101及びFPGA120によってアクセス可能であり、プログラムコード、プログラムデータ及び構成ビットストリームを構成メモリ領域111,112に記憶するメモリ110を含む。
SRAMダイ402は、DRAM401よりも低いレイテンシを有するメモリを含み、DRAM401に加えて構成ビットストリームを記憶するために設けられている。SRAMダイ402は、構成ビットストリームのキャッシングを実行する構成キャッシュ116,117を含むメモリ115を実装するために使用され、より少ないクロックサイクルでFPGA120内のプログラミング領域の再構成を可能にする。SRAMダイ402は、命令をキャッシュするためにも使用することができる。代替の実施形態では、SRAMダイ402の代わりに、DRAMよりも高速のSTT−MRAMメモリダイ又は他のメモリ技術が使用される。
3Dダイスタック400内のコンポーネント401〜405の配置、及び、1つ以上のTSVのセットによるこれらのコンポーネント401〜405の接続は、FPGA120のプログラミング領域122,123内の構成可能論理ブロック131〜138への新たな構成の迅速な転送を容易にする。スタック400に配置されているように、コンピューティングシステム100は、プログラムの命令ストリーム内の明示的又は黙示的な命令に応じて、少ないクロックサイクルでプログラミング領域を再構成することができる。
図4Bは、ダイ401〜404間を接続して通信を可能にするTSV104A,104Bとともに、DRAMメモリダイ401と、SRAMメモリダイ402と、FPGAダイ403と、処理ロジックダイ404と、を示す図である。図1に示すように、TSV104は、TSV104A,104Bを含む。TSV104A,104Bは、積層されたダイ401〜404間の1つ以上のTSVを表すことができる。例えば、TSV104A,104Bの各セットは、コマンド、アドレス及びデータTSVのサブセットを含むことができる。TSV104Aは、構成メモリ111と、構成キャッシュ116と、プログラミング領域122と、メモリコントローラ102と、の間の通信のためのデータパスを提供する。TSV104Bは、構成メモリ112と、構成キャッシュ117と、プログラミング領域123と、メモリコントローラ102と、の間の通信のためのダイレクトデータパスを提供する。
ダイスタック400では、構成キャッシュ及び構成メモリ領域は、物理的に、FPGA120内の他のプログラミング領域と比べて、対応するプログラミング領域により近く配置される。例えば、構成メモリ111及び構成キャッシュ116の各々は、FPGA120内の他のプログラミング領域(例えば、プログラミング領域123)と比べて、対応するプログラミング領域122に近い位置に配置される。同様に、構成メモリ112及び構成キャッシュ117の各々は、他のプログラミング領域と比べて、対応するプログラミング領域123に近い位置に配置される。また、スタック400の各構成メモリ及び構成キャッシュは、メモリ又はキャッシュの少なくとも一部が対応するプログラミング領域に配置されるように、積層される。関連するプログラミング領域に最も近い構成メモリ及びキャッシュ領域の位置決めと、FPGAダイ403上でのメモリダイ401,402の垂直方向の積層とは、TSV104A,104Bの長さを最小化し、構成データのより高速な伝送を容易にする。
FPGA120内の各プログラミング領域は、自身と、プロセッサロジックダイ404上に配置された共通メモリコントローラ102と、の間に専用のバス帯域幅を有する。代替の実施形態では、メモリコントローラ102を、処理ロジックダイ404の代わりに異なるダイ(例えば、FPGAダイ403)上に配置することができる。プログラミング領域の再構成が行われる場合に、メモリコントローラ102は、再構成されるプログラミング領域に関連する構成メモリ又は構成キャッシュからTSVを介して適切な構成ビットストリームデータを読み出す。次に、メモリコントローラ102は、構成ビットストリームデータを、TSVを介してプログラミング領域に書き込む。代替の実施形態では、各プログラミング領域は、複数のプログラミング領域と通信するために使用される共通メモリコントローラ102ではなく、FPGA120に実装されたそれ自身の単純なメモリコントローラを有することができる。
図5A〜5Dは、コンピューティングシステム100のコンポーネントが存在するダイをスタック400と異なるように配置する、コンピューティングシステム100の代替の実施形態を示す図である。図5A,5B,5C,5Dに示すように、スタック510,520A〜B,530A〜B,540A〜Cについて、これらのダイスタックに含まれるダイは、スタック400内の同様に名付けられた対応物と同様の特徴を有する。代替の実施形態では、他の構成も可能である。例えば、コンピューティングシステム100のいくつかのコンポーネントを、スタック400と比較して異なるダイ上に配置することができる。
図5Aは、インタポーザ514上で上から下に積層されたDRAMダイ511と、FPGAダイ512と、プロセッサロジックダイ513と、を含むダイスタック510を示す図である。図4Aに示すスタック400と比較して、スタック510は、低レイテンシメモリダイ(例えば、SRAMダイ又はSTT−MRAMダイ)の省略によって、コスト及び複雑さが低減される。
図5Bは、コンピューティングシステム100のコンポーネントが存在するダイを、2つのスタック520A,520Bに配置する構成を示す図である。スタック520Aは、インタポーザ524上で上から下に積層されたFPGAダイ521と、プロセッサロジックダイ522と、を含む。DRAMメモリダイ523は、隣接するスタック520B内の同じインタポーザ524上に積層され、インタポーザ524は、異なるスタック520A,520B内のダイ間の通信を可能にする電気接続を提供する。ロジックダイ521,522をメモリダイ523から隔離することによって、構造体からの放熱が促進される。
図5Cは、図5Bに示すダイスタック520A,520Bと同様の構成を有するダイスタック530A,530Bを含む構造を示す図である。しかし、スタック520Aとは対照的に、スタック530Aは、FPGAダイ532と、プロセッサロジックダイ533上に積層された追加の低レイテンシメモリダイ(すなわち、SRAMダイ531)と、を含む。SRAMダイ531は、FPGA120内のプログラミング領域を再構成する時間を短縮するために、構成キャッシュメモリを実装するために使用される。DRAMダイ534は隣接するスタック530Bに配置され、ダイスタック530A,530Bの両方は、異なるスタック530A,530Bのダイ間の通信を可能にする電気接続を提供するインタポーザ535上に積層される。
図5Dは、コンピューティングシステム100のコンポーネントが、共通インタポーザ545上の3つのダイスタック540A,540B,540Cに配置される構造を示す図である。複数のダイスタック540A、540B,540Cへのダイの配置は、構造体からの放熱を促進する。ダイスタック540Aはプロセッサロジックダイ542を含み、ダイスタック540CはDRAMダイ544を含み、ダイスタック540Bは、FPGAダイ543上に積層されたSRAMダイ541を含む。ダイ541〜544の各々は、共通インタポーザ545によって提供される電気接続を介して他のスタックのダイと通信することができる。
図6は、命令ストリームの命令に基づいて再構成可能なFPGA120を含むコンピューティングシステム100において命令ストリームを実行するためのプロセス600の実施形態を示す図である。プロセス600の動作は、プロセッサ101から発行された命令ストリームの命令を実行するために、コンピューティングシステム100の様々なコンポーネントによって実行される。一実施形態では、命令ストリームは、単一のコンピュータプログラムを定義する命令のサブセットを少なくとも含む連続命令ストリームである。
プロセス600は、ブロック601で開始する。ブロック601において、コンピューティングシステム100は、FPGA120内のプログラミング領域毎に1つ以上の選択可能な構成を記憶する。例えば、プログラミング領域122に関連する構成メモリ111は、プログラミング領域122へのプログラミングのために選択可能な少なくとも2つの構成、状態A及び状態Bを記憶する。この例を続けると、状態Aは、4つの加算器ユニットを実装するようにプログラミング領域122を構成するための構成ビットストリームを含み、状態Bは、4つの乗算器ユニットを実装するようにプログラミング領域122を構成するための構成ビットストリームを含む。プロセス600は、ブロック601からブロック603に進む。
ブロック603において、FPGA120は、命令ストリーム内の第1命令を受信する。例えば、プロセッサ101は、実行される命令を、FPGA120の1つのプログラミング領域にディスパッチすることができる。命令は、FPGA120の構成ロジック121で受信される。プロセス600は、ブロック603からブロック605に進む。
ブロック605〜607において、構成ロジック121は、受信した命令に基づいて、受信した命令又は後続の命令が実行される前に何れかのプログラミング領域を再構成すべきかどうかを判別する。ブロック605において、構成ロジック121は、ブロック603で受信した命令が明示的な再構成命令であるかどうかを判別する。命令が明示的な再構成命令でない場合、プロセス600はブロック607に進む。
ブロック607において、構成ロジック121は、ブロック603で受信した命令を実行するためにプログラミング領域が既に構成されているかどうかを判別する。例えば、命令が乗算命令である場合、構成ロジック121は、プログラミング領域122,123の何れかの既存の構成が命令を実行するために使用可能な乗算器ユニットを含むかどうかを判別する。ブロック607において、少なくとも1つのプログラミング領域が命令を実行することができる場合、プロセス600はブロック609に進む。
ブロック609において、命令は、命令を実行するために適切に構成されたプログラミング領域内で実行される。したがって、ブロック603〜609の動作によって、明示的な再構成命令ではなく、命令を実行するためにプログラミング領域が適切に構成されているときに受信する命令は、命令を受信することに応じてプログラミング領域で単純に実行される。プロセス600は、ブロック609からブロック603に戻る。
ブロック603において、FPGA120は、命令ストリーム内の第2命令を受信し、この第2命令によって、1つ以上のプログラミング領域が再構成される。第2命令は、命令ストリーム内の第1命令の後の次の命令とすることができる。換言すれば、プログラミング領域の再構成を引き起こす命令は、既存の構成を使用するプログラミング領域で実行される第1命令と同じ連続命令ストリームの一部とすることができる。一実施形態では、命令ストリームを制御するプロセス又はエンティティが、別のプロセス又はエンティティ(例えば、オペレーティングシステム、ハードウェアデバイス等)による中断無しに、ストリーム内の各命令から次の命令へ自動的に進むことを可能にする間、命令ストリームは連続的であるとみなされることができる。プロセス600は、ブロック603からブロック605に進む。
ブロック605において、構成ロジック121は、ブロック603で受信した第2命令が明示的な再構成命令であるかどうかを判別する。明示的な再構成命令は、プログラミング領域を識別し、識別されたプログラミング領域の構成を識別する。例えば、明示的な再構成命令は、プログラミング領域122と、プログラミング領域122を構成するための構成メモリ111内の状態Bと、を識別することができる。第2命令が明示的な再構成命令である場合、プロセス600はブロック611に進み、そうでない場合、プロセス600はブロック607に進む。
ブロック607において、構成ロジック121は、ブロック603で受信した第2命令を実行するために、プログラミング領域が既に構成されているかどうかを判別する。FPGA120内のプログラミング領域が第2命令の実行のために既に構成されている場合には、プロセス600がブロック609に進み、命令がプログラミング領域で実行される。そうでなければ、プロセス600はブロック611に進む。
ブロック611において、構成ロジック121は、FPGA120内の1つ以上のターゲットプログラミング領域を識別し、1つ以上のターゲットプログラミング領域のコンテキストデータを、1つ以上のターゲットプログラミング領域に対応するコンテキストメモリに記憶することによって、1つ以上のターゲットプログラミング領域を再構成する準備をする。例えば、明示的な再構成命令に応じて再構成が実行されている場合、明示的な再構成命令は、FPGA120内のどのプログラミング領域を再構成すべきかを示す。黙示的な再構成のために、構成ロジック121は、使用されていないか、近い将来に使用されることが予想されないプログラミング領域をターゲットプログラミング領域として識別することができる。プロセス600は、ブロック611からブロック613に進む。
ブロック613において、構成ロジック121は、ターゲットプログラミング領域の境界にて境界スイッチを開き、ターゲットプログラミング領域の構成可能論理ブロックを他のプログラミング領域から切断することによって、ターゲットプログラミング領域をFPGA120内の他のプログラミング領域から隔離する。このターゲットプログラミング領域の隔離により、ターゲットプログラミング領域内のハードウェアを、FPGA120内の他のプログラミング領域の何れかから独立して再構成することができる。図2を参照して、プログラミング領域122をターゲットプログラミング領域として上述した例を続けると、構成ロジック121は、プログラミング領域122の境界で境界スイッチ222を切断することによって、プログラミング領域122の構成可能論理ブロック131〜134を隔離する。プロセス600は、ブロック613からブロック615に進む。
ブロック615において、構成ロジック121は、ブロック603で受信した命令に基づいて、ターゲットプログラミング領域の1つの構成を選択する。命令が明示的な再構成命令である場合、構成ロジック121は、命令に示された構成を選択する。例えば、「状態B」構成を示す明示的な再構成命令は、構成ロジック121に、構成メモリ111に記憶されている状態Bに対応する構成ビットストリームを選択させる。
あるいは、ブロック603で受信した命令が明示的な再構成命令ではない場合に、構成ロジック121は、図3に示すように、機能テーブル301を使用して構成を選択する。構成ロジック121は、機能テーブル301内の命令のオペコード(例えば、ID1、ID2)をルックアップして、プログラミング領域を構成するための構成ビットストリームのアドレス(例えば、アドレスA、アドレスB)を決定する。プロセス600は、ブロック615からブロック617に進む。
ブロック617において、構成ロジック121は、選択された構成ビットストリームを使用してターゲットプログラミング領域の構成可能論理ブロック内のハードウェアを再構成する。メモリコントローラ102は、選択された構成ビットストリームを構成メモリから取得し、ビットストリームを、TSV104を介してFPGA120に送信する。次に、構成ロジック121は、構成ビットストリームを使用してターゲットプログラミング領域を再構成する。例えば、ターゲットプログラミング領域122が状態Bにしたがって再構成される場合、構成ロジック121は、状態Bに対応する構成ビットストリームをTSV104を介して受信し、状態Bの構成ビットストリームを使用してプログラミング領域122の構成可能論理ブロック131〜134をプログラムする。一実施形態では、構成ビットストリームを、ターゲットプログラミング領域122の対応するキャッシュメモリ141にキャッシュすることができる。一実施形態では、ターゲットプログラミング領域の1つ以上の構成可能論理ブロック内のハードウェアを再構成するための持続時間は、1ミリ秒未満であってもよい。プロセス600は、ブロック617からブロック619に進む。
ブロック619において、ブロック603で受信した命令が実行を保留している場合、プロセス600はブロック609に進み、再構成されたプログラミング領域で命令を実行する。そうでなく、命令が実行を保留していない場合(例えば、命令が、再構成が完了した明示的な再構成命令である場合)、プロセス600はブロック603に戻り、命令ストリーム内の次の命令を受信する。したがって、実行プロセス600は、特定の機能の要求に応じて明示的又は黙示的に指示されたときにプログラミング領域を適切に再構成するように、命令ストリーム内で受信した命令を実行するループで動作する。
本明細書で使用される場合、「に結合される」という用語は、1つ以上の介在するコンポーネントを介して直接的又は間接的に結合されることを意味し得る。本明細書で説明される様々なバスを介して提供される信号の何れかは、他の信号と時間多重化され、1つ以上の共通バスを介して提供される。また、回路コンポーネント又はブロック間の相互接続は、バス又は単一の信号線として示すことができる。各バスは1つ以上の単一信号線であってもよく、単一信号線の各々はバスであってもよい。
特定の実施形態は、非一時的(non-transitory)なコンピュータ可読媒体に記憶された命令を含むことができるコンピュータプログラム製品として実装されてもよい。これらの命令は、説明した動作を実行するように汎用又は専用プロセッサをプログラムするために使用されてもよい。コンピュータ可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形式(例えば、ソフトウェア、処理アプリケーション)で情報を記憶又は送信する任意のメカニズムを有する。非一時的なコンピュータ可読記憶媒体は、限定されないが、磁気記憶媒体(例えば、フロッピー(登録商標)ディスケット)、光記憶媒体(例えば、CD−ROM)、光磁気記憶媒体、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルメモリ(例えば、EPROM及びEEPROM)、フラッシュメモリ、又は、電子命令を記憶するのに適した他のタイプの媒体を含むことができる。
また、いくつかの実施形態は、コンピュータ可読媒体が複数のコンピュータシステムに記憶され、及び/又は、複数のコンピュータシステムによって実行される分散コンピューティング環境で実施することができる。さらに、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体を介してプル又はプッシュされてもよい。
一般に、コンピュータ可読記憶媒体に運ばれるコンピューティングシステム100及び/又はその一部を表すデータ構造は、プログラムによって読み取られ、コンピューティングシステム100を含むハードウェアを製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造であってもよい。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成する合成ツールによって読み取られてもよい。ネットリストは、コンピューティングシステム100を含むハードウェアの機能も表すゲートのセットを含む。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、マスクは、様々な半導体製造ステップで使用され、コンピューティングシステム100に対応する1つ以上の半導体回路を製造することができる。あるいは、コンピュータ可読記憶媒体上のデータベースは、所望によりネットリスト(合成ライブラリを含む又は含まない)若しくはデータセット、又は、グラフィックデータシステム(GDS)IIデータであってもよい。
本明細書の方法の動作を特定の順序で示して説明しているが、各方法の動作の順序は、特定の動作が逆の順序で実行されるように、又は、特定の動作が他の動作と少なくとも部分的に並行して実行されるように変更されてもよい。別の実施形態では、別個の動作の命令又はサブ動作は、断続的及び/又は交互の方法であってもよい。
前述した本明細書では、実施形態を、その特定の例示的な実施形態を参照して説明してきた。しかし、添付の特許請求の範囲に記載された実施形態のより広い趣旨及び範囲から逸脱することなく、様々な修正及び変更がなされ得ることは明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味であるとみなされるべきである。

Claims (27)

  1. 複数の構成可能論理ブロックを含む1つ以上のプログラミング領域と、
    構成ロジックと、を備え、
    前記複数の構成可能論理ブロックの各々は、プログラマブル相互接続ファブリックを介して前記複数の構成可能論理ブロックの他の構成可能論理ブロックに選択的に接続可能であり、
    前記1つ以上のプログラミング領域のうち第1プログラミング領域は、命令ストリーム内の第1命令を実行するように構成されており、
    前記構成ロジックは、前記命令ストリーム内の第2命令に応じて、前記第1プログラミング領域において、前記1つ以上のプログラミング領域の他のプログラミング領域から独立して、前記複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックのハードウェアを再構成するように構成されている、
    プログラマブルデバイス。
  2. 各プログラミング領域は、前記プログラミング領域用の複数の選択可能な構成を記憶するように構成された構成メモリと接続され、前記構成ロジックは、前記プログラミング領域の前記構成メモリに記憶された前記複数の選択可能な構成のうち選択された構成に基づいて、前記プログラミング領域を再構成するように構成されている、請求項1のプログラマブルデバイス。
  3. 前記構成メモリは、スタティックランダムアクセスメモリ(SRAM)を備える、請求項2のプログラマブルデバイス。
  4. 前記構成メモリは、他のプログラミング領域よりも前記プログラミング領域の近くに配置されている、請求項2のプログラマブルデバイス。
  5. 前記第1プログラミング領域は、前記第1プログラミング領域内の前記複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックのハードウェアの再構成後に、前記第2命令を実行するように構成されており、前記命令ストリームは、単一のコンピュータプログラムを定義する命令のサブセットを少なくとも含む連続命令ストリームであり、前記第2命令は、前記命令ストリーム内の前記第1命令の次に続く命令である、請求項1のプログラマブルデバイス。
  6. プログラミング領域を他のプログラミング領域から電気的に隔離するように構成された前記プログラマブル相互接続ファブリック内の境界スイッチのセットを備える、請求項1のプログラマブルデバイス。
  7. 前記第2命令は、前記第1プログラミング領域を識別し、前記第1プログラミング領域の選択された構成を識別する再構成命令である、請求項1のプログラマブルデバイス。
  8. 前記1つ以上の構成可能論理ブロックのハードウェアの再構成前に、前記第1プログラミング領域のコンテキストデータを記憶するように構成されたコンテキストメモリを備える、請求項1のプログラマブルデバイス。
  9. 前記プログラマブルデバイスは、フィールドプログラマブルゲートアレイ(FPGA)デバイスである、請求項1のプログラマブルデバイス。
  10. 前記プログラマブルデバイスは、シリコン貫通ビア(TSV)によって接続された複数の積層ダイのうち1つの積層ダイに存在する、請求項1のプログラマブルデバイス。
  11. 複数の命令の各々について構成ビットストリームのアドレスを記憶するように構成された機能テーブルを備え、前記構成ロジックは、前記第2命令に対応する構成ビットストリームのアドレスを前記機能テーブルから識別するように構成されている、請求項1のプログラマブルデバイス。
  12. 命令ストリーム内の第1命令を受信したことに応じて、プログラマブルデバイス内の1つ以上のプログラミング領域のうち第1プログラミング領域において前記第1命令を実行することと、
    前記命令ストリーム内の第2命令を受信したことに応じて、前記第1プログラミング領域において、前記1つ以上のプログラミング領域の他のプログラミング領域から独立して、複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックのハードウェアを再構成することと、
    を含む、方法。
  13. 前記1つ以上のプログラミング領域のプログラミング領域毎に、
    前記プログラミング領域用の複数の選択可能な構成を記憶し、
    前記プログラミング領域の構成メモリに記憶された前記複数の選択可能な構成のうち選択された構成に基づいて、前記プログラミング領域を再構成すること、を含む、請求項12の方法。
  14. 前記第2命令は、前記第1プログラミング領域を識別し、前記第1プログラミング領域の前記選択された構成を識別する再構成命令であり、前記第1プログラミング領域を再構成することは、前記第2命令に基づいて、前記第1プログラミング領域の前記構成メモリに記憶された前記複数の選択可能な構成のうち1つの構成を選択することを含む、請求項13の方法。
  15. 前記第1プログラミング領域内の前記複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックのハードウェアの再構成後に、前記第2命令を実行することを含み、
    前記命令ストリームは、単一のコンピュータプログラムを定義する命令のサブセットを少なくとも含む連続命令ストリームであり、前記第2命令は、前記命令ストリーム内の前記第1命令の次に続く命令である、請求項12の方法。
  16. 前記第1プログラミング領域を、前記複数の構成可能論理ブロックを接続するプログラマブル相互接続ファブリック内の境界スイッチのセットを介して、前記1つ以上のプログラミング領域の他のプログラミング領域から隔離することを含む、請求項12の方法。
  17. 前記1つ以上の構成可能論理ブロックにおいて前記ハードウェアを再構成する前に、前記第1プログラミング領域のコンテキストデータをコンテキストメモリに記憶することを含む、請求項12の方法。
  18. 前記プログラマブルデバイスは、フィールドプログラマブルゲートアレイ(FPGA)デバイスである、請求項12の方法。
  19. 前記プログラマブルデバイスは、シリコン貫通ビア(TSV)によって接続された複数の積層ダイのうち1の積層ダイに存在する、請求項12の方法。
  20. 複数の命令の各々について構成ビットストリームのアドレスを機能テーブルに記憶することと、
    前記第2命令に対応する構成ビットストリームのアドレスを前記機能テーブルから識別することと、を含む、請求項12の方法。
  21. 命令ストリーム内の複数の命令をディスパッチするように構成されたプロセッサと、
    前記プロセッサと接続されたプログラマブルデバイスと、を備え、
    前記プログラマブルデバイスは、
    複数の構成可能論理ブロックを含む1つ以上のプログラミング領域と、
    構成ロジックと、を備え、
    各構成可能論理ブロックは、プログラマブル相互接続ファブリックを介して他の構成可能論理ブロックに選択的に接続可能であり、前記1つ以上のプログラミング領域のうち第1プログラミング領域は、命令ストリーム内の第1命令を実行するように構成されており、
    前記構成ロジックは、前記命令ストリーム内の第2命令に応じて、前記第1プログラミング領域において、他のプログラミング領域から独立して、前記第1プログラミング領域内の前記複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックのハードウェアを再構成するように構成されている、
    コンピューティングシステム。
  22. プログラミング領域毎に、前記プログラミング領域用の複数の選択可能な構成を記憶するように構成された構成メモリを備え、
    前記構成メモリは、前記プログラマブルデバイス上に積層されたダイナミックランダムアクセスメモリ(DRAM)内に配置され、1つ以上のシリコン貫通ビアを介して前記プログラミング領域に接続されている、請求項21のコンピューティングシステム。
  23. 前記構成メモリに接続され、前記複数の選択可能な構成のうち選択された構成を前記構成メモリから受信し、前記選択された構成を前記プログラマブルデバイスに適用するように構成されたメモリコントローラを備える、請求項22のコンピューティングシステム。
  24. 前記プログラマブルデバイスは、フィールドプログラマブルゲートアレイ(FPGA)デバイスを含む、請求項21のコンピューティングシステム。
  25. 前記プログラマブルデバイスを含む第1集積回路ダイは、前記プロセッサを含む第2集積回路ダイ上に積層されており、前記第1集積回路ダイ及び前記第2集積回路ダイは、シリコン貫通ビア(TSV)を介して接続されている、請求項21のコンピューティングシステム。
  26. 複数の命令の各々について構成ビットストリームのアドレスを記憶するように構成された機能テーブルを備え、
    前記構成ロジックは、前記第2命令に対応する構成ビットストリームのアドレスを前記機能テーブルから識別するように構成されている、請求項21のコンピューティングシステム。
  27. 前記構成ロジックは、前記ハードウェアを第1ハードウェア構成から第2ハードウェア構成に再構成することによって、前記複数の構成可能論理ブロックのうち1つ以上の構成可能論理ブロックの前記ハードウェアを再構成するように構成されており、
    前記コンピューティングシステムは、コンパイラを備え、
    前記コンパイラは、
    入力ソースコードに基づいて、前記ハードウェアが前記第2ハードウェア構成にある場合に、前記第1プログラミング領域で実行可能な第3命令を識別し、
    前記第3命令を識別したことに応じて、前記命令ストリーム内の前記第3命令の前に前記第2命令を生成する、ように構成されている、請求項21のコンピューティングシステム。
JP2017567447A 2015-06-26 2016-05-13 高速で再構成可能な回路及び高帯域幅のメモリインタフェースを用いたコンピュータアーキテクチャ Pending JP2018530025A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/751,947 US9698790B2 (en) 2015-06-26 2015-06-26 Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces
US14/751,947 2015-06-26
PCT/US2016/032504 WO2016209406A1 (en) 2015-06-26 2016-05-13 Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces

Publications (1)

Publication Number Publication Date
JP2018530025A true JP2018530025A (ja) 2018-10-11

Family

ID=56404272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017567447A Pending JP2018530025A (ja) 2015-06-26 2016-05-13 高速で再構成可能な回路及び高帯域幅のメモリインタフェースを用いたコンピュータアーキテクチャ

Country Status (6)

Country Link
US (1) US9698790B2 (ja)
EP (1) EP3314451B1 (ja)
JP (1) JP2018530025A (ja)
KR (1) KR101873484B1 (ja)
CN (1) CN107667474B (ja)
WO (1) WO2016209406A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036298A (ja) * 2017-08-10 2019-03-07 三星電子株式会社Samsung Electronics Co.,Ltd. 知能型高帯域幅メモリシステム及びそのための論理ダイ
JP2022519851A (ja) * 2019-04-15 2022-03-25 長江存儲科技有限責任公司 スタックされた3次元異種メモリデバイス、および、それを形成するための方法
JP7359798B2 (ja) 2020-03-27 2023-10-11 ディスペース ゲー・エム・ベー・ハー 分散コンピュータシステムにおける少なくとも1つのプログラマブルゲート装置をプログラミングする方法
JP7402357B2 (ja) 2020-06-29 2023-12-20 アーバー・カンパニー・エルエルエルピイ プロセッサ非依存5Gモデムを有する3Dダイ・スタッキングの再構成可能プロセッサ・モジュールを使用するモバイルIoTエッジ・デバイス

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031765B2 (en) * 2015-09-24 2018-07-24 Intel Corporation Instruction and logic for programmable fabric hierarchy and cache
US20170153892A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache
JP2017135698A (ja) * 2015-12-29 2017-08-03 株式会社半導体エネルギー研究所 半導体装置、コンピュータ及び電子機器
US9948306B2 (en) * 2016-03-05 2018-04-17 HangZhou HaiCun Information Technology Co., Ltd. Configurable gate array based on three-dimensional printed memory
US10795742B1 (en) * 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US10223317B2 (en) 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10310861B2 (en) 2017-04-01 2019-06-04 Intel Corporation Mechanism for scheduling threads on a multiprocessor
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
US10866900B2 (en) 2017-10-17 2020-12-15 Samsung Electronics Co., Ltd. ISA extension for high-bandwidth memory
US10540200B2 (en) 2017-11-10 2020-01-21 Advanced Micro Devices, Inc. High performance context switching for virtualized FPGA accelerators
US10579557B2 (en) * 2018-01-16 2020-03-03 Advanced Micro Devices, Inc. Near-memory hardened compute blocks for configurable computing substrates
US10727204B2 (en) * 2018-05-29 2020-07-28 Advances Micro Devices, Inc. Die stacking for multi-tier 3D integration
US11296706B2 (en) * 2018-06-27 2022-04-05 Intel Corporation Embedded network on chip accessible to programmable logic fabric of programmable logic device in multi-dimensional die systems
US10447273B1 (en) 2018-09-11 2019-10-15 Advanced Micro Devices, Inc. Dynamic virtualized field-programmable gate array resource control for performance and reliability
US20200294182A1 (en) * 2019-03-15 2020-09-17 Intel Corporation On chip dense memory for temporal buffering
CN109992263B (zh) * 2019-04-05 2022-09-13 腾讯科技(深圳)有限公司 一种执行可视化编程的方法和装置
US10782759B1 (en) * 2019-04-23 2020-09-22 Arbor Company, Lllp Systems and methods for integrating batteries with stacked integrated circuit die elements
US10802735B1 (en) * 2019-04-23 2020-10-13 Arbor Company, Lllp Systems and methods for reconfiguring dual-function cell arrays
KR20210050966A (ko) 2019-10-29 2021-05-10 삼성전자주식회사 적층형 뉴로모픽 장치 및 뉴로모픽 컴퓨팅 장치
CN111858462B (zh) * 2020-07-14 2023-05-16 成都华微电子科技股份有限公司 并列式fpga

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869377A (ja) * 1994-05-10 1996-03-12 Sgs Thomson Microelectron Sa コプロセッサを使用するための電子回路及び方法
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
JPH118547A (ja) * 1997-06-17 1999-01-12 Fuji Xerox Co Ltd 再構成可能演算装置
JPH1139159A (ja) * 1997-07-15 1999-02-12 Hitachi Ltd 計算機システム
JPH11296345A (ja) * 1998-04-08 1999-10-29 Hitachi Ltd プロセッサ
US6091263A (en) * 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
US6237054B1 (en) * 1998-09-14 2001-05-22 Advanced Micro Devices, Inc. Network interface unit including a microcontroller having multiple configurable logic blocks, with a test/program bus for performing a plurality of selected functions
JP2002175183A (ja) * 2000-12-06 2002-06-21 Matsushita Electric Ind Co Ltd 半導体集積回路
JP2002537599A (ja) * 1999-02-15 2002-11-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 構成可能な機能ユニットを備えるデータプロセッサ及びそのようなデータプロセッサを使用する方法
WO2003023602A1 (fr) * 2001-09-07 2003-03-20 Ip Flex Inc. Systeme de traitement de donnees et procede de commande
US20030097546A1 (en) * 2001-11-20 2003-05-22 Richard Taylor Reconfigurable processor
JP2004062821A (ja) * 2002-07-31 2004-02-26 Fujitsu Ltd 情報処理装置
JP2006014297A (ja) * 2004-05-28 2006-01-12 Altera Corp 電子デバイス
US7243221B1 (en) * 2004-02-26 2007-07-10 Xilinx, Inc. Method and apparatus for controlling a processor in a data processing system
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
US7410884B2 (en) * 2005-11-21 2008-08-12 Intel Corporation 3D integrated circuits using thick metal for backside connections and offset bumps
US7902865B1 (en) * 2007-11-15 2011-03-08 Lattice Semiconductor Corporation Compression and decompression of configuration data using repeated data frames
JP2011186850A (ja) * 2010-03-09 2011-09-22 Fujitsu Semiconductor Ltd データ処理システム及びその制御方法
JP2013030906A (ja) * 2011-07-27 2013-02-07 Fujitsu Ltd プログラマブルロジックデバイス
US8928351B1 (en) * 2013-03-13 2015-01-06 Xilinx, Inc. Emulating power domains in an integrated circuit using partial reconfiguration
US20150155876A1 (en) * 2012-08-06 2015-06-04 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533691A (ja) * 2001-06-20 2004-11-04 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データを処理するための方法
US6954085B2 (en) 2003-10-13 2005-10-11 International Business Machines Corporation System and method for dynamically executing a function in a programmable logic array
CN101593169A (zh) * 2008-05-30 2009-12-02 国际商业机器公司 可配置逻辑阵列的配置管理器和配置方法
CN102122275A (zh) * 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器
CN104272250A (zh) * 2012-04-30 2015-01-07 惠普发展公司,有限责任合伙企业 可配置的计算机存储器
NL2011315C2 (en) * 2013-08-19 2015-02-23 Topic Embedded Systems B V A computing platform, a reconfigurable hardware device and a method for simultaneously executing processes on dynamically reconfigurable hardware device, such as an fpga, as well as instruction set processors, such as a cpu, and a related computer readable medium.

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869377A (ja) * 1994-05-10 1996-03-12 Sgs Thomson Microelectron Sa コプロセッサを使用するための電子回路及び方法
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
JPH118547A (ja) * 1997-06-17 1999-01-12 Fuji Xerox Co Ltd 再構成可能演算装置
JPH1139159A (ja) * 1997-07-15 1999-02-12 Hitachi Ltd 計算機システム
US6091263A (en) * 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
JPH11296345A (ja) * 1998-04-08 1999-10-29 Hitachi Ltd プロセッサ
US6237054B1 (en) * 1998-09-14 2001-05-22 Advanced Micro Devices, Inc. Network interface unit including a microcontroller having multiple configurable logic blocks, with a test/program bus for performing a plurality of selected functions
JP2002537599A (ja) * 1999-02-15 2002-11-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 構成可能な機能ユニットを備えるデータプロセッサ及びそのようなデータプロセッサを使用する方法
JP2002175183A (ja) * 2000-12-06 2002-06-21 Matsushita Electric Ind Co Ltd 半導体集積回路
WO2003023602A1 (fr) * 2001-09-07 2003-03-20 Ip Flex Inc. Systeme de traitement de donnees et procede de commande
US20030097546A1 (en) * 2001-11-20 2003-05-22 Richard Taylor Reconfigurable processor
JP2004062821A (ja) * 2002-07-31 2004-02-26 Fujitsu Ltd 情報処理装置
US7243221B1 (en) * 2004-02-26 2007-07-10 Xilinx, Inc. Method and apparatus for controlling a processor in a data processing system
JP2006014297A (ja) * 2004-05-28 2006-01-12 Altera Corp 電子デバイス
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
US7410884B2 (en) * 2005-11-21 2008-08-12 Intel Corporation 3D integrated circuits using thick metal for backside connections and offset bumps
US7902865B1 (en) * 2007-11-15 2011-03-08 Lattice Semiconductor Corporation Compression and decompression of configuration data using repeated data frames
JP2011186850A (ja) * 2010-03-09 2011-09-22 Fujitsu Semiconductor Ltd データ処理システム及びその制御方法
JP2013030906A (ja) * 2011-07-27 2013-02-07 Fujitsu Ltd プログラマブルロジックデバイス
US20150155876A1 (en) * 2012-08-06 2015-06-04 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US8928351B1 (en) * 2013-03-13 2015-01-06 Xilinx, Inc. Emulating power domains in an integrated circuit using partial reconfiguration

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ANDREA LODI, ET AL.: "A VLIW Processor With Reconfigurable Instruction Set for Embedded Applications", IEEE JOURNAL OF SOLID-STATE CIRCUITS, vol. 38, no. 11, JPN6018028634, November 2003 (2003-11-01), pages 1876 - 1886, ISSN: 0004070268 *
FABIO CAMPI, ET AL.: "A VLIW Processor with Reconfigurable Instruction Set for Embedded Applications", DIGEST OF TECHNICAL PAPERS OF IEEE INTERNATIONAL SOLID-STATE CIRCUITS CONFERENCE 2003, JPN6018028636, 13 February 2003 (2003-02-13), pages 10, ISSN: 0003964608 *
MICHAEL J. WIRTHLIN, BRAD L. HUTCHINGS: "DISC : The dynamic instruction set computer", PROCEEDINGS OF SPIE, vol. 2607, JPN6019002362, 1995, pages 92 - 103, XP000910930, ISSN: 0004070269, DOI: 10.1117/12.221328 *
上田浩司,北道淳司,黒田研一: "SystemCを用いた動的再構成可能プロセッサのモデル開発", 電子情報通信学会技術研究報告, vol. 107, no. 31, JPN6019002364, 3 May 2007 (2007-05-03), JP, pages 19 - 24, ISSN: 0003964609 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036298A (ja) * 2017-08-10 2019-03-07 三星電子株式会社Samsung Electronics Co.,Ltd. 知能型高帯域幅メモリシステム及びそのための論理ダイ
JP2022519851A (ja) * 2019-04-15 2022-03-25 長江存儲科技有限責任公司 スタックされた3次元異種メモリデバイス、および、それを形成するための方法
JP7209857B2 (ja) 2019-04-15 2023-01-20 長江存儲科技有限責任公司 スタックされた3次元異種メモリデバイス、および、それを形成するための方法
JP7359798B2 (ja) 2020-03-27 2023-10-11 ディスペース ゲー・エム・ベー・ハー 分散コンピュータシステムにおける少なくとも1つのプログラマブルゲート装置をプログラミングする方法
JP7402357B2 (ja) 2020-06-29 2023-12-20 アーバー・カンパニー・エルエルエルピイ プロセッサ非依存5Gモデムを有する3Dダイ・スタッキングの再構成可能プロセッサ・モジュールを使用するモバイルIoTエッジ・デバイス

Also Published As

Publication number Publication date
WO2016209406A1 (en) 2016-12-29
KR20170138541A (ko) 2017-12-15
CN107667474A (zh) 2018-02-06
CN107667474B (zh) 2019-05-28
US20160380635A1 (en) 2016-12-29
EP3314451B1 (en) 2021-07-14
EP3314451A1 (en) 2018-05-02
US9698790B2 (en) 2017-07-04
KR101873484B1 (ko) 2018-07-03

Similar Documents

Publication Publication Date Title
KR101873484B1 (ko) 신속 재구성가능 회로 및 고-대역폭 메모리 인터페이스를 사용한 컴퓨터 아키텍처
EP2441013B1 (en) Shared resource multi-thread processor array
JP5826865B2 (ja) プログラマブル回路と埋込型プロセッサシステムとを伴う集積回路
JP4188233B2 (ja) 集積回路装置
US10924430B2 (en) Streaming platform flow and architecture for an integrated circuit
US10725942B2 (en) Streaming platform architecture for inter-kernel circuit communication for an integrated circuit
US10379766B2 (en) Access processor
EP3710948B1 (en) Virtual fpga management and optimization system
US10540200B2 (en) High performance context switching for virtualized FPGA accelerators
EP2549382A1 (en) Virtual GPU
JP2001068993A (ja) 情報処理システム
EP2778946A2 (en) Hybrid programmable many-core device with on-chip interconnect
US20180060034A1 (en) Communication between dataflow processing units and memories
CN110018853A (zh) 用于可编程逻辑器件的快速启动系统和方法
US9870315B2 (en) Memory and processor hierarchy to improve power efficiency
WO2002008913A2 (en) Memory resource arbitrator for multiple gate arrays
US7606698B1 (en) Method and apparatus for sharing data between discrete clusters of processors
Chen et al. A 3-D CPU-FPGA-DRAM hybrid architecture for low-power computation
US9372519B2 (en) Dynamic power distribution
US8161212B1 (en) Data operations across parallel non-volatile input/output devices
EP1550950A1 (en) Semiconductor device
US20240047364A1 (en) Connectivity layer in 3d devices
US20230130969A1 (en) Providing Data from Portions of a Memory to Processors in Memory (PIMs) in an Electronic Device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190423

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190709