JP5419419B2 - システム - Google Patents
システム Download PDFInfo
- Publication number
- JP5419419B2 JP5419419B2 JP2008280225A JP2008280225A JP5419419B2 JP 5419419 B2 JP5419419 B2 JP 5419419B2 JP 2008280225 A JP2008280225 A JP 2008280225A JP 2008280225 A JP2008280225 A JP 2008280225A JP 5419419 B2 JP5419419 B2 JP 5419419B2
- Authority
- JP
- Japan
- Prior art keywords
- reconfigurable
- configuration
- data
- memory
- accumulator
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Description
Katherine Compton, Scott Hauck, Reconfigurable computing: a survey of systems and software, ACM Computing Surveys (CSUR), v.34 n.2, p.171-210, June 2002. A. Abnous, "Low-Power Domain-Specific Processors for Digital Signal Processing," PhD thesis, Dept. of EECS, UC Berkeley, CA, USA, 2001. T. Miyamori, K. Olukotun, "REMARC: Reconfigurable Multimedia Array Coprocessor," IEICE Trans. on Information and Systems, vol. E82-D, No. 2, February 1999, pp. 389-397. John Reid Hauser , John Wawrzynek, Augmenting a microprocessor with reconfigurable hardware, 2000. Seth Copen Goldstein, Herman Schmit, Matthew Moe, Mihai Budiu, Srihari Cadambi, R. Reed Taylor, Ronald Laufer, PipeRench: a co/processor for streaming multimedia acceleration, Proceedings of the 26th annual international symposium on Computer architecture, p.28-39, May 01-04, 1999, Atlanta, Georgia. Hartej Singh, Ming-Hau Lee, Guangming Lu, Nader Bagherzadeh, Fadi J. Kurdahi, Eliseu M. Chaves Filho, MorphoSys: An Integrated Reconfigurable System for Data-Parallel and Computation-Intensive Applications, IEEE Transactions on Computers, v.49 n.5, p.465-481, May 2000. Ahmad Alsolaim , Janusz Starzyk , Jurgen Becker , Manfred Glesner, Architecture and Application of a Dynamically Reconfigurable Hardware Array for Future Mobile Communication Systems, Proceedings of the 2000 IEEE Symposium on Field-Programmable Custom Computing Machines, p.205, April 17-19, 2000. Reiner W. Hartenstein , Rainer Kress, A datapath synthesis system for the reconfigurable datapath architecture, Proceedings of the 1995 conference on Asia Pacific design automation (CD-ROM), p.77-es, August 29-September 01, 1995, Makuhari, Massa, Chiba, Japan. Elliot Waingold , Michael Taylor , Devabhaktuni Srikrishna , Vivek Sarkar , Walter Lee , Victor Lee , Jang Kim , Matthew Frank , Peter Finch , Rajeev Barua , Jonathan Babb , Saman Amarasinghe , Anant Agarwal, Baring It All to Software: Raw Machines, Computer, v.30 n.9, p.86-93, September 1997. E. Mirsky, A. DeHon, "MATRIX: A Reconfigurable Computing Architecture with Configurable Instruction Distribution and Deployable Resources," FCCM '96 - IEEE Symposium on FPGAs for Custom Computing Machines, Napa, CA, April 1996. Alan Marshall, Tony Stansfield , Igor Kostarnov, Jean Vuillemin, Brad Hutchings, A reconfigurable arithmetic array for multimedia applications, Proceedings of the 1999 ACM/SIGDA seventh international symposium on Field programmable gate arrays, p.135-143, February 21-23, 1999, Monterey, California. R. D. Witting and P.Chow, OneChip: An FPGA processor with reconfigurable logic. In Proceedings of the IEEE Symposium on FPGAs for Cistom Computing Machines (FCCM’96), pages 126-135, 1996. J.M. Rabaey, "Reconfigurable Computing: The Solution to Low Power Programmable DSP", Proceedings 1997 ICASSP Conference, Munich, April 1997. Ebeling, C., Cronquist, D., and Franklin, P. 1996 RaPID - Reconfigurable Pipelined Datapath. In the 6th International Workshop on Field-Programmable Logic and Applications. R. Razdan and M. D. Smith. High-performance microarchitectures with hardware-programmable functional units. In Proceedings of the IEEE/ACM International Symposium on Mircoarchitecture, pages 172-180, 1994. C. R. Rupp, M. Landguth, T. Garverick, E. Gomersall, H. Holt, J.M. Arnold, and M. Gokhale. The NAPAadapative processing architecture. In Porceedings of the IEEE Symposium on FPGAs for Custom Computing Machines (FCCM’98), pages 28-37, 1998. Salvatore M. Carta, Danilo Pani, Luigi Raffo. Reconfigurable Coprocessor for Multimedia Application Domain, In Journal of VLSI Signal Processing 44, 135-152, 2006. CHAMELEON SYSTEMS, Inc. 2000. CS2000 Advance Product Specification. Chameleon Systens Inc., Sna Jose, CA. Pact XPP Technologies, "XPP-III Processor Overview (White Paper)", July 2006.
提案されるアーキテクチャテンプレートから得られるコプロセッサはnビットデータ言語を操作することができる。われわれは次を区別する。(1)コンスタント:コンフィギュレーションレジスタファイルから読み取られたシングルデータ言語。(2)バリアブル:ファンクショナルユニットアウトプットから読み取られたシングルデータ言語。(3)アレイ:メモリから読み出されたデータ言語集合。
//curled brackets indicates repetition
nested_loop_group ::=
//”::=” means definition
for(index=0; index<index_end; index++) \{
//index and index_end are integers
// ‘\’ is an escape character removing the meta meaning of // the next character
{nested_loop_group;}
{assignment_statement;}
{break_statement;}
\}
assignment_statement::=
(variable | array_element) = expression
//’|’ means exclusive or
array_element ::= array_name\[address_expression\]
address_expression ::=
(((address_expression | alpha) * index + (address_expression | beta)) % modulo) + offset
//alpha, beta, modulo and offset are integers
expression ::=
F({(expression | array | variable | constant)})
//where F is a function computed by some functional unit //given a list of inputs or arguments separated by blank
//spaces
break_statement ::= break( expression );
//causes execution to break if expression evaluates to non //zero
提案されたアーキテクチャテンプレートの最上位レベルの様子が図2に示されている。これは基本的にファンクショナルユニット(FUs)のアレイおよび設置メモリ(EMs)のアレイにより構成されている。
(C)プログラミングツール
コプロセッサプログラミングフローが図19に示されている。ユーザがネステッドループシーケンスコードを前記のシンタックスにしたがって書くことにより始まる。コプロセッサプログラミングツールはネステッドループ試験すコードおよびハードウェアアーキテクチャの記述をインプットし、コプロセッサコンフィギュレーションをテキストファイル、ファイルを有するソフトウェアおよびハードウェア記述言語(HDL)におけるコンフィギュレーションメモリイメージといった複合フォーマットでアウトプットする。テキストファイルは人間が視覚を通じて読むことが可能であり、ユーザにフィードバックを与えるために使用される。ソフトウェアはコプロセッサを成形かつ動作するいくつかのプログラムに含まれうるシーケンスのコンフィギュレーションメモリイメージを含むファイルを有する。HDLコンフィギュレーションイメージはシステム高速変化のためのFPGAエミュレーション、または、システム詳細評価のためのHDLシミュレーションにおいて使用される。さらに、アーキテクチャのソフトウェアモデルはFPGAエミュレーションのスピードおよびHDLシミュレーションの詳細度を和解させるハードウェア記述ファイルからコンパイルされる。ソフトウェアにより創作された結果(アウトプットデータ)、HDLおよびFPGAモデルはユーザにより解析され、インプットネステッドループコードの改良の案内に用いられる。
{({constant_name})}
//Input/output declaration section
{input input_name\[range\]}
{output output_name\[range\]}
range ::= integer..0
/Memory declaration section
{memory memory_name (singleport | twoport | dualport)
addrA\[range\] dataA\[range\]
[addrB\[range\] dataB\[rage\]]}
//Functional unit declaration section
{functional_unit functional_unit_name functional_unit_type}
//Read Crossbar declaration section
{functional_unit_name.input_name <=
({functional_unit_name.output_name}) ({memory_name.(dataA | dataB)})
({constant_name})
//Write Crossbar declaration section
{output_name <= ({functional_unit_name.output_name})}
{memory_name.(data | dataB) <=
({functional_unit_name.output_name})}
//Address Generator declaration section
//Timing Unit
number_of_nested_loops := integer
number_of_enable_delay_groups := integer
//enable groups become named en_grp_0, en_grp_1, …, up to //en_grp_number_of_enable_delay_groups-1
//enabled signals in enable group I become named //en_grp_i.en_0, en_grp_i.en_0, …, up to
//en_grp_i.en_number_of_nested_loops-1
//Accumulators declaration section
number_of_baus := integer
number_of_caus := integer
//accumulators become named bau_0, bau_1, …, up to //bau_number_of_baus-1 or cau_0, cau_1, …, up to //cau_number_of_caus-1
//Enable Crossbar declaration section
{(bau | cau)_name.(en restart_en) <=
({en_grp_name.(en restart_en)})}
// Input Crossbar declaration section
{(bau | cau)_name.start <=
({bau_name.cnt_nxt} {constant_name})}
{(bau | cau)_name.incr <=
({bau_name.cnt} {constant_name})}
{cau_name.offset <= ({bau_name.cnt} {constant_name})}
// Output Crossbar declaration section
{memory_name.(addrA | addrB) <=
({cau_name.cnt} {memory_name.(data | dataB)})}
input I0[31..0]
output O0[31..0]
//Memory declaration section
memory M0 dualport
addrA[511..0],dataA[31..0] addrB[511..0] dataB[31..0]
memory M1 dualport
addrA[511..0] dataA[31..0] addrB[511..0] dataB[31..0]
memory M2 dualport
addrA[511..0] dataA[31..0] addrB[511..0] dataB[31..0]
//Functional unit declaration section
functional_unit ADD1 adder_32
functional_unit ADD2 adder_32
functional_unit MULT1 mult_32
functional_unit MULT2 mult_32
functional unit MUX mux_2_1_32
//Read Crossbar declaration section
ADD1.d_input0 <= (I0 M0.dataA M1.dataA MULT1.d_output)
ADD2.d_input1 <= (I0 M0.dataB const_rd MULT2.d_output)
MUX.s_input <= (ADD1.zero_flag ADD2.zero_flag)
MUX.d_input0 <= (MULT1.d_output M2.dataA)
MUX.d_input1 <= (MULT2.d_output M2.dataB)
//… and so on for other FUs
//Write Crossbar declaration section
O0 <= (ADD1.d_output MULT1.d_output)
M0.dataB <= (ADD1.d_output MULT1.d_output)
M1.dataB <= (ADD2.d_output MULT2.d_output)
//… and so on for other memory ports
//Address Generator declaration section
//Timing Unit
number_of_nested_loops := 3
number_of_enable_delay_groups := 3
//Accumulators declaration section
number_of_baus := 4
number_of_caus := 2
//Enable Crossbar declaration section
cau_0.(en restart_en) <= (en_grp_0.en_0 en_grp_1.en_1)
//… same for other baus and caus
bau_0.(en restart) <= (en_grp_1.en_1 en_grp_2.en_2)
//… same for other baus and caus
// Input Crossbar declaration section
bau_1.start <= (bau_2.cnt_nxt const_addr)
bau_1.incr <= (const_addr_incr bau_2.cnt)
cau_2.offset <= (const_addr_offset bau_3.cnt)
//… same for other baus and caus
// Output Crossbar declaration section
M0.addrA <= (cau_3.cnt cau_0.cnt M2.dataB)
//… same for other memories
config_sequence ::=
label: config_sequence begin {configuration} end
configuration ::=
configuration begin config_body end
config_body ::=
data_path_config addr_gen_config
data_path_config ::=
fu_config read_xbar_config write_xbar_config
fu_config ::=
{fu_name.parameter_name = parameter_value}
//parameter name and parameter value depend on the //functional unit being used
read_xbar_config ::=
{functional_unit_name.input_name <=
(input_name | functional_unit_name.output_name | memory_name.(dataA | dataB) | constant_name )}
write_xbar_config ::=
{memory_name.((dataA | dataB) write) <=
functional_unit_name.(output_name (out_en|out_restart_en))}
{output_name.(data_out req_out) <=
functional_unit_name.(output_name (out_en|out_restart_en))}
addr_gen_config ::=
tu_config acc_config enable_xbar_config input_xbar_config output_xbar_config
tu_config ::= end_array delay_array
end_array ::= ({integer})
//list must have number_of_nested_loops elements
delay_array ::= ({integer})
//list must have number_of_enable_delay_groups elements
acc_config ::=
cau_name.modulo = integer
enable_xbar_config ::=
{(bau | cau)_name.(en restart_en) <=
en_grp_name.(en_name en_name)}
input_xbar_config ::=
(bau | cau)_name.start <=
(constant_name | bau_name.cnt_nxt )
(bau | cau)_name.incr <=
(constant_name | (bau | cau)_name.cnt )
cau_name.offset <= (constant_name | (bau | cau)_name.cnt)
output_xbar:config ::=
memory_name.(addrA | addrB) <=
((bau | cau)_name.cnt | memory_name.(data | dataB))
coprocessorTool (nested_loop_sequence_code){
SG = parseNLSC(nested_loop_sequence_code);
nodeList = createNodelist(SG);
HG = parseHW(architecture_description)
if (map(nodeList.head, SG, HG) == true)
writeConfigurationImages();
exit(SUCCESSFUL);
else
exit(UNSUCCESSFUL;)
}
・メモリノード(データアウトプットポート)
・システムデータインプットノード
・コンフィギュレーションコンスタントノード
シンクノード:
・メモリノード(データインプットポート)
・システムデータアウトプットノード
中間ノード:
・ファンクショナルユニットノード
アドレスフローグラフ(AGF)は次のようなタイプのグラフを有している。
・メモリノード(データアウトプットポート)
・タイミングユニットノード(イネイブルシグナルアウトプットポート)
・コンフィギュレーションコンスタントノード
シンクノード:
・メモリノード(アドレスインプットポート)
・システムデータインプットノード(承認シグナル)
中間ノード:
・累算器ユニットノード
DFGおよびAFGの端部はソースノードから中間ノードに向けられ、中間ノードから他の中間ノードに向けられ、かつ、中間ノードからシンクノードに向けられる。
CGに連鎖される。これにより次のコプロセッサコンフィギュレーションで使用されるデータを設置メモリに残しておくことが可能となる。このメカニズムは意識的なまたは意図的なキャッシングメカニズムと呼ばれうるものであり、統確率的な局所性を不当に使用する従来のキャッシュよりも優れたパフォーマンスを示す。
u = α0*(i-8)+β0
v=j
w = ((α1*i+β1)*j + β2)%γ)+δ
x = M2.dataA[j-5]
for(i=0; i<i_end; i++) {
for(j=0; j<j_end; j++)
d[u] += a[v]*b[w] + c[x];
}
bool map (node, SG, HG){
descendantHwNodes =
getHwNodes(node.getDescendants(), HG);
candidateHwNodes =
descendantHwNodes.getHwCommonAscendants(HG);
if (candidateHwNodes == null)
return(false);
foreach hwNode in candidateHwNodes {
if (hwNode.type != node.type)
next;
if(hwNode.isUsed())
next;
hwNode.route(descendantHwNodes, HG);
if(node.next == null)
return(true);
if((map(node.next, SG, HG))
return(true);
hwNode.unroute(descendentHwNodes, HG);
}
return false;
}
Claims (21)
- 計算および論理オペレーションを含む表現のコンピューティングネステッドループの演算に用いられるリコンフィギャブルコプロセッサを有するシステムであって、
前記リコンフィギャブルコプロセッサが、
アプリケーションドメインにしたがって選択され、かつ、パイプラインとは無関係な不特定数かつ不特定型のリコンフィギュラブルファンクショナルユニットを構成要素として有するリニアアレイと、
中間データおよびアドレス計算を保存する不特定数かつ不特定型の設置メモリを構成要素として有するリニアアレイと、
前記設置メモリのアドレスの複合シーケンスを計算するリコンフィギュラブルアドレス生成ブロックと、
システムインプット、メモリデータアウトプットポートおよびプログラムされた定数を前記リコンフィギュラブルファンクショナルユニットのインプットに接続するために接続前において定義される部分的かつリコンフィギュラブルリードクロスバーと、
ファンクショナルユニットのアウトプットをシステムアウトプットまたはメモリデータインプットポートに接続するために接続前において定義される部分的かつリコンフィギュラブルライトクロスバーと、
制御、ステータスおよびコンフィギュレーションレジスタを有するレジスタファイルとを備え、
前記コンフィギュレーションレジスタは、前記リコンフィギュラブルファンクショナルユニット、前記リコンフィギュラブルアドレス生成ブロック、前記部分的かつリコンフィギュラブルリードクロスバー及び前記部分的かつリコンフィギュラブルライトクロスバーのコンフィギュレーションを保存し、かつ、前記中間データおよびアドレス計算に用いられる定数を保存し、
前記リコンフィギュラブルアドレス生成ブロックが、
アドレス生成を開始、停止および再開することにより、前記コプロセッサに実行を開始、停止および再開させる制御ユニットと、
設置メモリに格納されているインデックスアレイへのアドレスを適時生成するため、前記ファンクショナルユニットの機能を適時活性化するため、および、システムインプットおよびメモリ書き込みを適時要求するために用いられるイネイブルシグナルを生成するプログラマブルタイミングユニットと、
複合アドレスシーケンスを生成するために接続されているプログラマブルアキュムレータを構成要素として有するリニアアレイと、
前記イネイブルシグナルを前記アレイにおける前記アキュムレータに接続し、かつ、前記システムインプットにおける外部データの読み取りを認める接続前に定義される部分的かつリコンフィギュラブルイネイブルクロスバーと、
接続前に定義され、アキュムレータアウトプットおよびコンフィギュレーションコンスタントを他のアキュムレータインプットに接続する部分的かつリコンフィギュラブルインプットクロスバーと、
接続前に定義され、生成アドレスを形成するプログラマブルアキュムレータのアウトプットおよび各イネイブルシグナルをメモリアドレスポートに接続し、かつ、アドレスがメモリに格納されている場合、メモリアドレスポートからメモリデータポートへの経路を設定する部分的かつリコンフィギュラブルアウトプットクロスバーと、
を備えていることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記プログラマブルタイミングユニットが、
各ロウが周期において同じ遅れと、コプロセッサが実行可能なネステッドループの最大数を表わすコラムの数とを有することにより特徴付けられているイネイブルシグナルのグループを生成し、一のコラムにおけるすべてのカウンタが同じエンドリミットでプログラムされ、制御される前記ループの反復回数を決定するプログラマブルカウンタのマトリクスと、
前記プログラムされたコラムの前記数を用いて所定のコンフィギュレーションにネステッドループの実際の数を識別するエンコーダと、
全体的な前記イネイブルシグナルを所定の最大許容遅れ以下で遅らせ、前記遅れがないイネイブルおよび所定の遅れのイネイブルを有する各イネイブルグループに対してプログラムされている遅れをもってアウトプットイネイブルシグナルを遅らせる遅延ユニットとを備え、
前記所定の遅れは、前記システムにおける最大許容遅れと相違しうる現在のコンフィギュレーションでの最大遅れであることを特徴とするシステム。 - 請求項2記載のシステムにおいて、
前記プログラマブルカウンタのマトリクスにより生成された前記イネイブルシグナルが、
データストリームをお互いに遅らせ、かつ、ファンクショナルユニットにより異なる遅れをもって導入されたデータフローグラフにおける異なる遅れを補正させるのに用いられ、
インプットまたはメモリからデータが読み出される頃合いを見計らい、
イネイブルシグナルおよびデータが同等に遅れるファンクショナルユニットを通じて前記データに同行し、
かつ、アウトプットまたはメモリへデータを書き込む頃合いを見計らうことを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記プログラマブルアキュムレータが、
他のアキュムレータまたはコンフィギュレーション定数により前記インプットクロスバーを介してドライブされうる、前記インプットクロスバーを前記アキュムレータの開始値を定めるインプットシグナルと、
他のアキュムレータまたはコンフィギュレーションコンスタントにより前記インプットクロスバーを介してドライブされうる、前記アキュムレータのインクリメント値を定めるインプットシグナルと、
前記アキュムレータの動作を可能とするイネイブルシグナルと、
前記開始値をリロードする再開イネイブルシグナルと、
前記アキュムレータが複合アキュムレータユニットである場合、他のアキュムレータまたはコンフィギュレーションコンスタントにより前記インプットクロスバーを介してドライブされうる前記アキュムレータのオフセット値を定めるインプットシグナルと、
前記アキュムレータが複合アキュムレータユニットである場合、前記アキュムレータのモジューロ値を定めるコンフィギュレーションレジスタと、
他のアキュムレータの前記生成アドレスまたは前記インプットとして用いられるアウトプット計算値とを備えていることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記コンフィギュレーション、ステータス/制御レジスタファイルが、
アドレスが付されうる、運転時間中における高精度の部分的な再構築を可能とするリード/ライトメモリがマップされたインターフェースと、
外部アシスタンスを案内または依頼するアウトプットリクエストシグナルとを有することを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記リコンフィギュラブルファンクショナルユニットを構成要素として有するリニアアレイに属する各ファンクショナルユニットが前記コプロセッサを停止させうるブレークシグナルを発することを特徴とするシステム。 - 請求項1記載のシステムにおいて、
複合システムインプットはスレーブリクエスト/アクノリッジインターフェースであり、かつ、複合システムアウトプットはマスターリクエスト/アクノリッジインターフェースであることを特徴とするシステム。 - 請求項7記載のシステムにおいて、
システムインプットリクエストまたはシステムアウトプットアクノリッジの欠落が、システムインプットからのデータ読み出しおよびシステムアウトプットへのデータ書き込みのうち一方または両方のために前記表現が実行される場合、コプロセッサを始動させることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記制御ユニットが、
前記コプロセッサを機能化かつ非機能化し、
最も外側のループインデックスがラップアラウンドしたときに処理を終了し、
前記コプロセッサのインプットデータ欠乏若しくはアウトプットデータ過剰において、又は、ファンクショナルユニット由来の一もしくは複数の遮断状態が生じた場合、前記コプロセッサを停止することを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記コンフィギュレーションレジスタが、
リコンフィギュラブルファンクショナルユニットの数およびタイプの記述と、
数、タイプ、データおよびアドレスの設置メモリの幅と、
リコンフィギュラブルアドレス生成ブロックの記述と、
リコンフィギュラブルリード/ライトクロスバーの記述とを備えていることを特徴とするシステム。 - 請求項10記載のシステムにおいて、
前記コンフィギュレーションレジスタが、
プログラマブルタイミングユニットブロックの記述と、
プログラマブルアキュムレータの数およびタイプの記述と、
リコンフィギュラブルイネイブル、インプットおよびアウトプットクロスバーの記述とを備えていることを特徴とするシステム。 - 請求項11記載のシステムにおいて、
前記リコンフィギュラブルアドレス生成ブロックの記述が、
前記プログラマブルタイミングユニットの記述が、
グループに属するネステッドループの数の記述と、
生成されるイネイブルシグナルの異なる遅延バージョンの数の記述とを備えていることを特徴とするシステム。 - 請求項10記載のシステムにおいて、
前記コンフィギュレーションレジスタが、
ファンクショナルユニットのコンフィギュレーションのパラメータ/値による記述と、
前記設置メモリのコンフィギュレーションと、
アドレス生成ブロックのリコンフィギュラブルコンフィギュレーションの記述と、
読み取り/書き込みクロスバーのリコンフィギュラブルコンフィギュレーションの、ポートがファンクショナルユニットのインプットおよびアウトプットのうちいずれかに接続されていることから暗黙的に推察される読み取りまたは書き込みモードによる記述とを備えていることを特徴とするシステム。 - 請求項13記載のシステムにおいて、
前記コンフィギュレーションレジスタにおける前記リコンフィギュラブルアドレス生成ブロックの前記コンフィギュレーションの前記記述が、
プログラマブルタイミングユニットブロックのコンフィギュレーションの記述と、
各プログラマブルアキュムレータのコンフィギュレーションの記述と、
イネイブル、インプットおよびアウトプットクロスバーのコンフィギュレーションの記述とを備えていることを特徴とするシステム。 - 請求項14記載のシステムにおいて、
前記プログラマブルタイミングユニットブロックのコンフィギュレーションの記述が、
各ネステッドループの終端の記述と、
各イネイブルシグナルグループについて遅延サイクル数の記述とを備えていることを特徴とするシステム。 - 請求項14記載のシステムにおいて、
前記プログラマブルアキュムレータのコンフィギュレーションの記述が、
コンフィギュレーション設定に接続された場合における開始および繰り上げ値と、
前記プログラマブルアキュムレータが複合累算器ユニットであり、オフセットインプットがコンフィギュレーションに接続されている場合におけるオフセット値と、
前記プログラマブルアキュムレータが複合累算器ユニットである場合におけるモジューロ値とを備えていることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記ネステッドループのボディにおける各データ表現が、変数、アレイまたはコンフィギュレーションコンスタントを含む論理および計算表現への変数またはアレイの割り当てにより構成されていることを特徴とするシステム。 - 請求項17記載のシステムにおいて、
前記データ表現における、各アレイのインデックスが((alpha*i+beta)÷gamma)+deltaの形であり、ここでiはループ変数であり、alpha、beta、gammaおよびdeltaはi以内のループ変数を用いた同じ形式表現により再帰的に定義されうることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
メモリデータポートの数以下のメモリアクセスが並列かつ1サイクルで実行され、すべてのファンクショナルユニットが並列かつ1サイクルで結果を生成しうることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
クロック周期が増えるのを回避するためにコネクションクロスバーにおける希薄なリンクを維持しながらファンクショナルユニットおよび設置メモリの数を増やすことにより前記システムの動作がスケールされうることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記リコンフィギャブルコプロセッサが同期のまたは非同期のファーストインファーストアウトメモリを用いて接続され、全体的に非同期で局所的に同期されたシステムを形成することを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US98379807P | 2007-10-30 | 2007-10-30 | |
US60/983,798 | 2007-10-30 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2010044731A JP2010044731A (ja) | 2010-02-25 |
JP2010044731A5 JP2010044731A5 (ja) | 2013-03-14 |
JP5419419B2 true JP5419419B2 (ja) | 2014-02-19 |
Family
ID=40394127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008280225A Expired - Fee Related JP5419419B2 (ja) | 2007-10-30 | 2008-10-30 | システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US8276120B2 (ja) |
EP (1) | EP2056211B1 (ja) |
JP (1) | JP5419419B2 (ja) |
KR (1) | KR20090045026A (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302397A1 (en) * | 2010-04-12 | 2011-12-08 | Mitola Iii Joseph | Method and Apparatus for Improved Secure Computing and Communications |
JP5632651B2 (ja) * | 2010-05-19 | 2014-11-26 | スパンション エルエルシー | 半導体回路及び設計装置 |
KR101687995B1 (ko) | 2010-09-27 | 2016-12-20 | 삼성전자주식회사 | 프로세서 및 그 동작 방법 |
US9330027B2 (en) | 2013-03-15 | 2016-05-03 | Intel Corporation | Register access white listing |
KR102277439B1 (ko) * | 2014-10-21 | 2021-07-14 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US10659396B2 (en) | 2015-08-02 | 2020-05-19 | Wave Computing, Inc. | Joining data within a reconfigurable fabric |
WO2019006119A1 (en) * | 2017-06-30 | 2019-01-03 | Wave Computing, Inc. | COMBINING DATA IN A RECONFIGURABLE MATRIX |
WO2019113021A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Tensor manipulation within a reconfigurable fabric using pointers |
US10680615B1 (en) * | 2019-03-27 | 2020-06-09 | Xilinx, Inc. | Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device |
US12153542B2 (en) * | 2021-06-28 | 2024-11-26 | Silicon Laboratories Inc. | Apparatus for array processor with program packets and associated methods |
US12153921B2 (en) | 2021-06-28 | 2024-11-26 | Silicon Laboratories Inc. | Processor with macro-instruction achieving zero-latency data movement |
CN113377360B (zh) * | 2021-06-28 | 2023-09-26 | 北京百度网讯科技有限公司 | 任务执行方法、装置、电子设备、存储介质和程序产品 |
WO2023129546A1 (en) * | 2021-12-27 | 2023-07-06 | SambaNova Systems, Inc. | Compiler-based input synchronization for processor with variant stage latencies |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US7996827B2 (en) * | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
EP1573461A4 (en) * | 2002-10-31 | 2006-10-18 | Src Computers Inc | PIPELINE LOOP STRUCTURE OF MAPPING DATA PREPARATORS |
JP2004220377A (ja) * | 2003-01-15 | 2004-08-05 | Sanyo Electric Co Ltd | リコンフィギュラブル回路とそれを利用可能な集積回路装置およびデータ変換装置 |
JP2006018411A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | プロセッサ |
JP4594666B2 (ja) * | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
US8966223B2 (en) * | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
-
2008
- 2008-10-08 US US12/247,638 patent/US8276120B2/en not_active Expired - Fee Related
- 2008-10-21 EP EP08018360.1A patent/EP2056211B1/en not_active Not-in-force
- 2008-10-24 KR KR1020080104875A patent/KR20090045026A/ko not_active Application Discontinuation
- 2008-10-30 JP JP2008280225A patent/JP5419419B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090113405A1 (en) | 2009-04-30 |
US8276120B2 (en) | 2012-09-25 |
EP2056211A3 (en) | 2010-09-01 |
EP2056211B1 (en) | 2013-04-24 |
KR20090045026A (ko) | 2009-05-07 |
JP2010044731A (ja) | 2010-02-25 |
EP2056211A2 (en) | 2009-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5419419B2 (ja) | システム | |
Weng et al. | Dsagen: Synthesizing programmable spatial accelerators | |
Nane et al. | A survey and evaluation of FPGA high-level synthesis tools | |
Escobar et al. | Suitability analysis of FPGAs for heterogeneous platforms in HPC | |
Krommydas et al. | Opendwarfs: Characterization of dwarf-based benchmarks on fixed and reconfigurable architectures | |
Mencer | ASC: a stream compiler for computing with FPGAs | |
Cheah et al. | The iDEA DSP block-based soft processor for FPGAs | |
Liu et al. | OverGen: Improving FPGA usability through domain-specific overlay generation | |
US9111068B2 (en) | Multiple-memory application-specific digital signal processor | |
Matthews et al. | MosaicSim: A lightweight, modular simulator for heterogeneous systems | |
Alam et al. | On the rtl implementation of finn matrix vector unit | |
Yehia et al. | Exploring the design space of LUT-based transparent accelerators | |
Cooke et al. | Finite-state-machine overlay architectures for fast FPGA compilation and application portability | |
Zhuo et al. | Scalable hybrid designs for linear algebra on reconfigurable computing systems | |
Rákossy et al. | Exploiting architecture description language for diverse IP synthesis in heterogeneous MPSoC | |
Qadri et al. | Multicore Technology: Architecture, Reconfiguration, and Modeling | |
Werner et al. | Accelerated join evaluation in Semantic Web databases by using FPGAs | |
Liu et al. | Compiling halide programs to push-memory accelerators | |
Talla | Adaptive explicitly parallel instruction computing | |
Multanen et al. | Energy efficient low latency multi-issue cores for intelligent always-on IoT applications | |
Pilato et al. | Accelerator design with high-level synthesis | |
Sarkisla et al. | Simdify: Framework for simd-processing with risc-v scalar instruction set | |
Duncan et al. | The COBRA-ABS high-level synthesis system for multi-FPGA custom computing machines | |
Pope et al. | Bifröst: Creating hardware with building blocks | |
Nguyen et al. | Design and Implementation of a Coarse-grained Dynamically Reconfigurable Multimedia Accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111013 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120919 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120925 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121220 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130125 |
|
A524 | Written submission of copy of amendment under section 19 (pct) |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20130125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130625 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130918 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131119 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |