JP2005353061A - ハードウェア情報を生成する方法 - Google Patents

ハードウェア情報を生成する方法 Download PDF

Info

Publication number
JP2005353061A
JP2005353061A JP2005162956A JP2005162956A JP2005353061A JP 2005353061 A JP2005353061 A JP 2005353061A JP 2005162956 A JP2005162956 A JP 2005162956A JP 2005162956 A JP2005162956 A JP 2005162956A JP 2005353061 A JP2005353061 A JP 2005353061A
Authority
JP
Japan
Prior art keywords
configuration information
memory
information
processing
executing
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
JP2005162956A
Other languages
English (en)
Other versions
JP2005353061A6 (ja
Inventor
Philip John Mulholland
ジョン マルホーランド フィリップ
Robert E Garner
イー. ガーナー ロバート
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.)
Celoxica Ltd
IP Flex Inc
Original Assignee
Celoxica Ltd
IP Flex 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 Celoxica Ltd, IP Flex Inc filed Critical Celoxica Ltd
Publication of JP2005353061A publication Critical patent/JP2005353061A/ja
Publication of JP2005353061A6 publication Critical patent/JP2005353061A6/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Abstract

【課題】 複数のプロセッシングエレメントを備え、回路を再構成可能なデバイスにループ処理を実装するのに適したハードウェア情報を提供する。
【解決手段】 コンパイラ60において、ソースプログラム61の、第1のアルゴリズムで繰り返し行なわれる第1の処理を実行するデータパスを構成するための第1の構成情報63aと、入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報63bと、出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報63cと、入力データを第3のアドレスカウンタにより外部メモリから第1のメモリにロードする処理を実行するための第4の構成情報63dと、出力データを第4のアドレスカウンタにより第2のメモリから外部メモリにストアする処理を実行するための第5の構成情報63eとを含むハードウェア情報62を生成する。
【選択図】 図6

Description

本発明は、C言語などの高級言語により与えられた仕様を実行するための集積回路の構成および集積回路の設計に関するものである。
目的のアルゴリズムを、ハードウェアを用いて実行する方法として、プロセッサなどの汎用のプロセッサを、目的のアルゴリズムを実現するためのソフトウェアで動作させる第1の方法と、目的のアルゴリズムを実行するためのデータパスを備えた専用回路を用いて実行する第2の方法がある。第1の方法は、ソフトウェアエンジニアが簡単に目的とするアルゴリズムを実行させることができるというメリットがあるが、実行速度はプロセッサの性能によって大きく左右される。また、汎用的なハードウェアを用いるので、ハードウェアの規模およびコストが、目的のアルゴリズムを実行するために経済的であるとは言えないことが多い。第2の方法は、専用のハードウェアを用いるので比較的シンプルなハードウェアで十分な処理速度が得られるので、ハードウェアの規模は経済的になる。しかしながら、専用のハードウェアを開発するために、多大なコストおよび時間が必要になる。特に、ソフトウェアエンジニアだけで専用回路を開発できないので、ハードウェアエンジニアも必要とし、人的費用が膨大になる。したがって、この第2の方法が、目的のアルゴリズムを実行するために経済的であると評価されるには、専用のハードウェアをどの程度量産できるかに大きく依存する。
ハードウェアの面では、近年、FPGAのように、回路構成を後で変更することができるものが提供されている。FPGAは冗長な部分を備えているので、性能および規模が専用に開発されたハードウェアと全く同一であるとは言い難いかもしれない。しかしながら、専用回路にほぼ匹敵する性能を備えたハードウェアを短期間に得ることができる。とはいっても、FPGAは、基本的には、専用回路を設計するのと同程度の回路情報を生成し、それを実装するものであり、ハードウェアエンジニアの能力に依存する部分が多い。
回路構成を高速に切り替えることにより、同じひとつのデバイスを複数のアプリケーションあるいはアルゴリズムを実行するために用いることが可能なハードウェアが開発されている。動的に再構成可能なデバイスの1つの例は、US2003/0184339に開示されているプロセッシングエレメントをマトリクス状に配置したものである。
米国特許出願公開公報2003/0184339号
ソフトウェアの面では、C言語などの高級プログラム言語により与えられた仕様をRTLなどのハードウェア記述言語に自動的に変換するツール(コンパイラー)や、ハードウェア記述が可能なC言語の開発が行われている。したがって、ソフトウェアエンジニアがハードウェアの設計まで手がけることが可能な環境が整い始めており、上述した再構成可能なハードウェアと相まって、今後、目的のアルゴリズムを実行するためのハードウェアの設計および開発に要する時間と費用は大幅に短縮されると考えられる。
しかしながら、現状の高級プログラム言語からハードウェアを設計する過程において、アルゴリズムをデータパスに実装あるいは変換する方法は、従来のASICなどの専用回路を設計および開発する過程において採用された方法が踏襲されているだけであり、ハードウェアの進歩に追従しているとは言い難い。例えば、従来の専用回路は、目的のアルゴリズムに従った処理を行うデータパスと、そのデータパスを制御するステートマシンとの組み合わせにより実現されている。FPGAは、動的に回路を再構成することは不可能であるが、トランジスタレベルで回路を実装することは可能である。したがって、FPGAに、従来の専用回路と同じ構成を実装することに大きな困難は指摘されていないようであり、データパスとステートマシンの組み合わせがベストか否かという検証は試みられていない。
これに対し、動的に回路を再構成するデバイスの多くは、ある程度の演算機能、例えばALU、を備えたプロセッシングエレメント(PE)を接続してデータパスを実現する方式が多く採用されており、データパスがマトリクス内において分散された幾つかのPEの接続として実装される。したがって、そのようなデータパスをマトリクス内の別の領域に構成したステートマシンにより一括制御しようとすると、ステートマシンの構成にPEが消費され、また、ステートマシンとデータパスとの接続のために配線資源が消費される。このため、データパスとステートマシンの組み合わせは、実装効率の低下の要因となるのみならず、AC特性の低下の要因にもなると予想される。
RISCなどの汎用プロセッサと、データパスを再構成可能なハードウェアとを組み合わせたデバイスにおいて、繰り返し実行される処理をデータパス化してハードウェアを用いて実行することが望ましい。したがって、C言語で記述されたアルゴリズムのうち、“for”ループなどの繰り返し処理をデータパス化して実行することが望ましい。さらに、複数の繰り返し処理を並列に処理することができれば、さらに処理速度は向上する。しかしながら、データパスを構成するためのハードウェア資源は限られている。また、無謀にPEの数を増やすことは、デバイスの経済性を低下させ、AC特性も低下させることになるので、メリットはない。
そこで、本発明においては、ある程度の演算処理能力を持った複数のPEを備えた再構成可能なデバイスにおいて、繰り返し処理を実行するのに適した構成を提供する。このハードウェア構成は、繰り返し処理のアルゴリズムをハードウェアに実装するために生成されるものであり、本発明においては、そのハードウェア構成を示す情報、すなわち、ハードウェア情報を、繰り返し処理のアルゴリズムから自動的に生成する方法、コンパイラーおよびそのプログラムプロダクトを提供することを目的としている。また、再構成可能なデバイスにおいて、ハードウェア情報は、繰り返し処理を実行する構成を生成するためにロードされる情報であり、本発明においては、さらに、ハードウェア情報を記録した適当な記録媒体を提供することを目的としている。
まず、本発明においては、第1の処理を繰り返す第1のアルゴリズムを含む第1のプログラムを実行するためのハードウェア情報を生成する方法であって、以下の生成を含む方法を提供する。
(a) 入力データに対し第1の処理を実行した出力データを生成するための第1の構成情報。
(b) 入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報。
(c) 出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報。
C言語で記載された“for”ループを専用回路に実装する場合、ループ内の第1の処理を実行するためのデータパスを生成し、ループカウンタにより制御されるステートマシンを生成し、データパスをステートマシンで制御する構成となる。この構成は、ループカウンタ1つで、データパスを制御できるので、従来の専用回路としてはハードウェア資源が少なくて済み、実装効率の高い実装方法であると言える。しかしながら、複数のPEを接続して回路を動的に再構成するようなデバイスにとってはPE資源の消費および配線資源の消費の増加につながり、好ましくないことは上述した通りである。
繰り返し処理は、ループ内の第1の処理をメモリに対する入出力処理を行うデータパスに変換し、そのデータパスに対する入力データおよび出力データをアドレスカウンタにより制御することによっても実行できる。第1のアドレスカウンタにより入力データのロードを制御し、第2のアドレスカウンタにより出力データのストアを制御することにより、データパス中のデータの流れを制御できるので、シーケンサによりデータパスを制御する必要はない。したがって、本発明のハードウェア情報を適用すると、1つのループカウンタの代わりに、少なくとも2つのアドレスカウンタが必要になり、カウンタの数は増加する。また、入力データをストアする第1のメモリ、出力データをストアする第2のメモリも少なくとも増加する。
しかしながら、本発明のハードウェア情報を適用することにより、それぞれのアドレスカウンタは入力および出力をそれぞれ制御すれば良いので、回路構成は簡単となり、入力を行うPEの近傍あるいは内部、出力を行うPEの近傍あるいは内部にそれぞれのアドレスカウンタを構成することが可能となる。したがって、PEの消費および配線資源の消費は低減でき、PEの制御が分散されるのでAC特性の低下も防止できる。さらに、入出力を制御するPEの内部あるいは近くにカウンタを配置できるので、タイミング収束の問題は容易に解決でき、再構成可能な領域を再構成するためのハードウェア情報を生成する配置・配線処理を高速に実行できる。
また、専用回路であれば、回路化する繰り返し処理を追加する毎にカウンタ回路が増加することになる。しかしながら、再構成可能なデバイスであれば、カウンタを構成した資源は、他の処理あるいは他の繰り返し処理のために再構成される資源の一部であり、繰り返し処理単位でのカウンタの増加は、ハードウェア資源の要求を大幅に増加させることにはならない。
入力データおよび出力データをストアするメモリの増加も同様の解決策がある。本発明の構成では、繰り返し処理のためにメモリも増加するが、そのメモリは、他の処理あるいは他の繰り返し処理を実装するためにも用いられる資源の一部であり、ハードウェア資源を大幅に増加させる要因にはならず、使用効率を上げることに困難性はない。
本発明のハードウェア情報は、上述した、第1の構成情報、第2の構成情報および第3の構成情報を含むものであり、専用回路を設計するためにも用いることができる。しかしながら、上述したように、本発明のハードウェア情報は、再構成可能な領域を備えた集積回路装置の少なくとも一部の構成を変更するために適した情報である。したがって、ROM、RAMなどの適当な記録媒体に記録して提供され、集積回路装置を制御するソフトウェアにより適切なタイミングで、再構成可能な領域を制御する回路あるいはコンフィグレーションメモリにロードされ、第1の処理を繰り返す第1のアルゴリズムを実行するために用いられるようにすることが好ましい。
再構成可能な領域が、複数のプロセッシングエレメント(PE)を含んでいる場合は、第1の構成情報は、複数のプロセッシングエレメントの少なくとも一部によりパイプラインを構成するための情報を含んでいることが望ましい。PEの機能がトークンだけの制御により発火するデータフロータイプの集積回路装置においても本発明のハードウェア情報は有効である。さらに、PEがクロック信号により同期して動作する集積回路装置であれば、第1の構成情報によりパイプラインを構成することにより、ループ内の第1の処理をパイプライン処理でき、処理時間を短縮できる。
再構成可能な集積回路装置用のハードウェア情報においては、再構成可能な資源によりカウンタを構成するように、第2の構成情報および第3の構成情報は、第1のアドレスカウンタおよび第2のアドレスカウンタをそれぞれ複数のプロセッシングエレメントの少なくとも一部により構成するための情報を含んでいることが望ましい。
汎用的な複数のプロセッシングエレメントを備えた再構成可能な集積回路装置に対して、ある程度、種々の処理に特化した複数種類のプロセッシングエレメントを備えた再構成可能な集積回路装置は、フレキシビリティーがあると共に、実装効率が高く、さらに、AC特性も良好である。プロセッシングエレメントが、ロードする処理および/またはストアする処理に適したタイプのアドレス発生回路を備えた専用エレメントを含んでいる場合は、第2の構成情報および第3の構成情報は、第1のアドレスカウンタおよび前記第2のアドレスカウンタのそれぞれを、専用エレメントを含めて構成するための情報を含んでいることが望ましい。
入出力データをストアする第1のメモリおよび第2のメモリは、集積回路装置の外部メモリであっても良い。第1のメモリおよび第2のメモリを内部バッファにすれば、第1および第2のメモリはキャッシュとなるので、第1の構成情報により構成されるデータパスと入出力速度を向上でき、処理速度を向上できる。内部バッファは、キャッシュ用のメモリであっても良いし、プロセッシングエレメントがRAMとして機能する種類のエレメントを含んでいても良い。この場合は、外部メモリから内部バッファに対してデータを入出力する必要があり、以下の構成情報を生成し、そして、以下を含むハードウェア情報を生成することが望ましい。
(d) 入力データを第3のアドレスカウンタにより外部メモリから第1のメモリにロードする処理を実行するための第4の構成情報。
(e) 出力データを第4のアドレスカウンタにより第2のメモリから前記外部メモリにストアする処理を実行するための第5の構成情報。
外部メモリとの入出力を制御するために、さらに異なるアドレスカウンタを設けることにより、カウンタを分散配置することが可能となり、配線資源をセーブでき、また、ハードウェア情報を生成するための配置・配線処理を高速に行うことができる。
また、第1のメモリおよび第2のメモリがダブルバッファタイプであれば、第4の構成情報は、第1のメモリのスワッピングに連動して入力データをロードする処理を実現するための構成情報を含み、第5の構成情報は、第2のメモリのスワッピングに連動して出力データをストアする処理を実現するための構成情報を含んでいることが望ましい。繰り返し処理を行うデータが大量の場合であっても、外部メモリから内部バッファに入出力する処理がオーバーヘッドになることを防止できる。
繰り返し行う第1の処理がループインデックスを用いるものである場合は、第1の構成情報は、ループインデックスをカウントするカウンタを構成するための情報を含んでいても良い。また、第1の構成情報が、第1のアドレスカウンタの値および/または第2のアドレスカウンタの値に基づきパラメータを生成する処理を実現するための構成情報を含んでいれば、ループインデックスをカウントするカウンタは省略できる。
さらに、第1のプログラムは、第1のアルゴリズムを含む処理を繰り返す第2のアルゴリズムを含んでいる場合は、多重にアドレスカウンタを設けて入出力を多重に行うことでも対処できるが、入出力回数が倍増することになり好ましくない。したがって、第2の構成情報および第3の構成情報に、第2のアルゴリズムを包含した処理を実現するための構成情報を含め、多重ループを統合した、共通のアドレスカウンタで制御することが望ましい。
さらに、第1の構成情報が、第2のアルゴリズムに含まれる第1の処理以外の処理を適切なタイミングで実行するための構成情報を含むようにすれば、第2のアルゴリズムに含まれる第1の処理以外の処理を、繰り返し処理されるデータパスに組み込むことができる。したがって、データパス構成を簡略化でき、PE資源および配線資源の消費を低減できる。
このようなハードウェア情報を生成する方法は、上記の構成情報をコンピュータにより生成する処理を実行するためのプログラムとして提供できる。プログラムは、CD−ROMなどの適当な記録媒体に記録して提供でき、また、インターネットなどのコンピュータネットワークを介して提供することができる。そして、適当なハードウェア資源を備えたコンピュータにプログラムをロードすることにより、そのコンピュータを、第1の処理を繰り返す第1のアルゴリズムを含む第1のプログラムを実行するために上述した構成情報を備えたハードウェア情報を生成する手段を有するコンパイラーとして使用することができる。
図1に、データ処理装置の一例を示してある。このデータ処理装置1は、チップに集積化されたプロセッシングユニット(PU)であり、再構成可能な領域10と、この再構成可能な領域10を再構成する機能を備えたRISCなどの汎用プロセッサ(以降ではプロセッサ)15、プロセッサ15のプログラム64および再構成用のハードウェア情報62を格納したメモリ17を備えている。この集積回路装置の再構成可能な回路領域10は、複数のエレメントがアレイまたはマトリクス状に2次元に配置されており、マトリクスと称される構成である。このマトリクス10は、縦横に2次元に配置された複数のプロセッシングエレメント(PE)21と、それらの間に格子状に配置された配線22と、配線22の接続ポイントで縦横の配線22の接続を自由に切り替えることができるスイッチングユニット23とを備えている。
PE21は、ルックアップテーブルなどにより自在に機能を設定可能なものであっても良い。本例では、算術論理演算用のエレメント、遅延用のエレメント、メモリ用のエレメント、データを入力または出力するためにアドレスを発生させるエレメント、データの入力または出力用のエレメントなど、ある程度の機能グループに分け、それぞれの機能あるいは処理に適した内部構成のエレメントを配置することによりマトリクス10のスペース効率を向上している。また、ある程度の機能グループに分けたエレメントを配置することにより冗長性が減少するのでAC特性および処理速度も向上できるといったメリットを得ている。
PU1のマトリクス10は、368個のPE21を備えており、それらに対しプロセッサ15の制御の下に、プロセッサ15から、またはメモリ17から、制御バス19を介して、各々のPE21の機能と、配線群22の接続とを制御するコンフィグレーションデータが供給される。したがって、配線群22によりPE21をフレキシブルに接続し、種々のデータフロー(データパス)を自由に構成できるようになっている。
PU1は、さらに、他の入力方法として、入力バッファ33と出力バッファ34とを用いてマトリクス10にデータを供給する構成を備えている。入力バッファ33は4つの入力バッファエレメントLDBを備えており、バッファ33の構成および制御をコンフィグレーションデータにより設定できるようになっている。出力バッファ34も同様であり、4つの出力バッファエレメントSTBを備えている。これらの入力バッファ33および出力バッファ34は、アクセス調停ユニットとして機能するバススイッチングユニット(バスインターフェイス、BSU)36に接続されており、BSU36を介して外部メモリ2との間でデータを入出力できるようになっている。各々の入力バッファエレメントLDBおよび各々の出力バッファエレメントSTBは、2つのバッファ部を備えたダブルバッファタイプとなっている。バッファ部の一方がデータを入力するインプットバッファ部となり、他方がデータを出力するアウトプットバッファ部となり、アウトプットバッファ部から出力すべきデータが出力されると、2つのバッファ部はスワップし、アウトプットバッファ部とインプットバッファ部が入れ替わる。
図2は、PE21の一例である。PE21は、機能を変更可能な内部データパス領域29と、その内部データパス領域29の機能を設定する制御ユニット50とを備えている。図2に示したPE21bは、算術演算および論理演算に適した構成の演算用のPEである。内部データパス部29bは、シフト回路SHIFT、マスク回路MASK、論理演算ユニットALUを備えている。制御ユニット50は、プロセッサ15から制御バス19を介してコンフィグレーションデータを受信して内部データパス部29bの構成を制御する。PE21bは、他のPEも同様であるが、配線群22に含まれるいずれかの配線から入力データを選択し、また、出力データを出力するためのセレクタ(不図示)も備えており、それらの設定もコンフィグレーションデータに基づき制御ユニット50により行われる。したがって、PE21bにおいては、制御ユニット50により、シフト回路SHIFT、マスク回路MASK、論理演算ユニットALUの状態が設定され、選択された入力データdixおよびdiyを加算あるいは減算したり、比較したり、論理和あるいは論理積を演算することができ、その結果が出力信号doとして選択された配線(バス)22に出力することができる。
図3に示したPE21aは、バッファ33および34に対するデータの入出力を制御する機能を備えたエレメントである。このPE21aの内部データパス領域29aは、カウンタなどからなるアドレス発生回路28と、セレクタSELとを備えており、制御ユニット50により設定されたコンフィグレーションデータにしたがい、入出力を制御するためのアドレスを生成し、出力信号doとして配線22に出力する。この出力信号doは、行配線および列配線を介して、そのまま、あるいは、他のPE21によって処理された後に入力信号dixあるいはdiyとしてPE21aにフィードバックされる。そして、PE21aは、制御ユニット50によりセットされた条件でセレクタSELが選択したアドレスを、マトリクス10からデータ入力あるいは出力用のアドレスとして出力する。
図4に、アドレス発生回路28の一例を示してある。このアドレス発生回路28は、複数のカウンタ28aと、これらのカウンタ28aからの出力を演算してアドレスとして出力する加算器28bとを備えている。各々のカウンタ28aは、図5に示したように、算術演算ユニットALU28cと、コンパレータ28dとが組み合わされた構成となっており、ALU28cは、ADD、SUB、BITシフト、OR、XORやそれらを組み合わせた演算を行うようにセットすることが可能である。したがって、クロックが来る度に値を発生する関数発生回路としての機能があり、このカウンタ28aの機能は制御ユニット50を介してプロセッサ15からセットすることができる。
また、ALU28cの制御信号enを他のカウンタ28aから供給されるキャリー信号cyによりセットしたり、コンパレータ28dの出力をキャリー信号cyとして他のカウンタ28aに伝達できる。このようにキャリー信号を利用することにより、カウンタ28aの状態により他のカウンタ28aの状態をセットし、任意のアドレスを発生させることができる。さらに、本図には示されていないが、カウンタ28aの制御信号enを他のPE21から供給されるキャリー信号cyによりセットしたり、他のPE21に伝達することも可能である。
したがって、アドレスを出力するPE21aは、制御ユニット50にプロセッサ15から供給されるコンフィグレーションデータにより、アドレス発生の処理内容を自由に設定することができ、さらに、他のPE21との関連性も自由にセットできる。また、アドレスを発生するPE21aは、2種類用意されている。1つのタイプは外部メモリ2とローカルバッファである内部バッファ33および34との間のデータの入出力を制御するアドレスを発生するPEであり、32ビットのカウンタを備え、アドレス信号をBSU36と内部バッファ33または34に供給する。他のタイプは、内部バッファ33および34とマトリクス10との間のデータの入出力を制御するアドレスを発生するPEであり、16ビットのカウンタを備え、アドレス信号を内部バッファ33または34と、内部バッファ33からデータを入力するPE21、または内部バッファ34にデータを出力するPE21に供給する。
図6に、本発明を用いてハードウェア情報を出力するシステム69の概要を示してある。コンパイラー60には、C言語で与えられた仕様(ソースプログラム)61が入力される。コンパイラー60からは、ソースプログラム61を実行するのに適したハードウェアを構成するためのハードウェア情報62と、そのハードウェアを制御するためにそのハードウェアで実行するための実行用プログラム64とが出力される。この段階における実行用プログラム64は、対象のハードウェアにおいて直ぐに実行可能なプログラムあるいはコードであっても良く、また、対象のハードウェアに適合する内容に変換された中間言語によるプログラムであっても良い。中間言語による実行用プログラムは、ハードウェアで直ぐに実行可能とするために、さらに、機械語に変換する必要があるかもしれない。コンパイラー60は、これらの出力62および64を生成して出力するために、ソースプログラム61の実行のために利用可能なハードウェア資源の情報が格納されたハードウェアライブラリ65を参照する。本例においてハードウェアライブラリ65に格納される、動的に再構成可能な領域を備えたPU1のハードウェア資源の情報としては、例えば、PE21の種類、数量、各PE21で実行可能な処理およびそのために消費されるクロック数(レイテンシ)、配線群22の量および接続可能な範囲などがある。
このシステム69は、適当なハードウェア資源を備えた汎用のコンピュータを用いて構成することが可能であり、そのコンピュータをコンパイラー60として機能させるためのソフトウェア(プログラム)68をCD−ROMなどの適当な記録媒体に記録して提供し、適当なタイミングでロードさせれば良い。プログラム68は、インターネットなどのコンピュータネットワークを介して提供することも可能である。また、ソースプログラム61、ハードウェアライブラリ65、ハードウェア情報62および実行用プログラム64といった入出力データも、システム69の記録装置に対して入出力しても良いし、コンピュータネットワークを介して異なるサーバに対して入出力しても良い。
図7に、コンパイラー60における処理の概要をフローチャートにより示してある。まず、ステップ71において、C言語あるいは他の高級プログラム言語で記述されたソースプログラム61を読み込み、ステップ72においてプログラム61を解析する。ステップ73において、プログラム61に記述されたアルゴリズムの内、一部のアルゴリズムが特定の処理(第1の処理)を繰り返し行うループ処理であると判断されると、ステップ74において、そのループ処理を行うアルゴリズム(第1のアルゴリズム)の記述に対して入力バッファおよび出力バッファがリザーブされる。さらに、ステップ75において、それらのバッファに対して入出力処理を行うアドレスカウンタを備えたPE21aがそれぞれリザーブされる。したがって、この段階で、入力データを第1のアドレスカウンタにより第1のメモリ(バッファ)からロードする処理を実行するための第2の構成情報63bと、出力データを第2のアドレスカウンタにより第2のメモリ(バッファ)にストアする処理を実行するための第3の構成情報63cが生成される。
また、バッファと外部メモリとの間の入出力を制御する必要がある場合は、この段階で、さらに、入力データを第3のアドレスカウンタにより外部メモリから第1のメモリにロードする処理を実行するための第4の構成情報63dと、出力データを第4のアドレスカウンタにより第2のメモリから外部メモリにストアする処理を実行するための第5の構成情報63eとが生成される。
次に、ステップ76において、ステップ74および75と前後してあるいは同時(並列)に、第1のアルゴリズムで繰り返し行われる第1の処理を実行するデータパスが、PE21と配線群22の組み合わせにより生成され、それらPE21の配置を含めた構成情報(第1の構成情報)63aが生成される。また、実行用プログラム64を実行中に、これらの第1から第3の構成情報がマトリクス10に適切なタイミングでロードされる必要がある。このため、プロセッサ15に対してロードするタイミングを与えるインターフェイスとなるステートメント64aが生成され、実行用プログラム64に含まれるようにする。
ソースプログラム61のループ処理以外は、ステップ77においてマトリクス10またはプロセッサ15で行うことが適当か否か判断される。PE21を用いたデータパスで実行するメリットがある処理は、そのためのPE21を用いた構成情報が生成される。プロセッサ15において実行することが望ましい処理の記述は、プロセッサ15において実行可能な実行用のコードに変換される。
ステップ78において、プログラム61の解析とハードウェア情報62および実行用プログラム64への変換が終了すると、ステップ79および80において、ハードウェア情報62および実行用プログラム64を出力する。ハードウェア情報62および実行用プログラム64は、出力前の段階、あるいは生成途中で様々な最適化が行われる。ハードウェア情報62においては、いったん生成されたマトリクス10の構成情報は、ハードウェア資源の割当てを最適化したり、配置配線を行ってタイミング収束を確認するなどの様々な過程を経て最終的に出力されるが、それらについての詳細については記載していない。さらに、生成されたハードウェア情報62および実行用プログラム64は、シミュレーションにより動作が検証され、さらなる最適化が図られる。
図8に、ソースプログラム61の一例を示してある。このプログラム61には、変数a[i]およびb[i]を足して変数z[i]を生成する処理66aをN回繰り返して行うループ処理67が含まれている。図9は、参考として、FPGAなどにループ処理67をハードウェアマクロ81として実装した例を示してある。このハードウェアマクロ81は、足し算66aを行うデータパス82と、それをループカウンタ84のカウントによりコントロールするステートマシン83とが実装されている。また、変数の入出力処理85は、メモリ管理ユニットなどの専用ハードウェアに任される。
図10に、コンパイラー60により、図8に示したソースプログラム61から生成されたハードウェア情報62により、PU1が再構成された状態を模式的に示してある。まず、プログラム61のループ処理のアルゴリズム67において、繰り返し実行される処理を定義するステートメント66aに対応して生成された第1の構成情報63aにより、マトリクス10に、バッファに対して入出力するタイプのデータストリーム(データパス)91がPE21.11〜21.14により構成される。足し算を行うPE21.13には、図2に示した論理演算用のPE21bを割当てることができる。データの入出力を行うPE21.11などにも論理演算用のPE21bを割当てることができるが、フリップフロップを備えた程度のデータ入出力専用のタイプの異なるPEを用意して割当てることも可能である。
次に、ループ処理のアルゴリズム67の繰り返しを定義するステートメント66bに対応して生成された第2の構成情報63bにより、入力データa[i]およびb[i]をそれぞれ格納するバッファ33aおよび33bが割当てられる。また、それらのバッファ33aおよび33bに対し内部入力アドレスをそれぞれ供給し、入力データをデータパス91に入力する機能92aおよび92bが、PE21.3および21.4を中心に構成される。第2の構成情報63bには、PE21の割り当てだけではなく、PE21の内部の設定、アドレスの出力先までのワイヤリング情報など、実際に信号を入出力するために必要な情報が多く含まれているが、ここではPE21の選択を中心に記載している。他の構成情報についても同様である。
内部アドレスカウンタとして用いるPE21.3および21.4としては、図4に示したアドレス発生用のPE21aが用いられる。論理演算用のPE21bを組み合わせて内部アドレスカウンタとして機能させる構成も可能であるが、このマトリクス10には、アドレス発生用のPE21aが用意されているので、それを用いて構成する方が経済的である。
また、第2の構成情報63bと共に生成された第3の構成情報63cにより、出力データz[i]を格納する出力バッファ34aが割当てられ、バッファ34aに対し内部出力アドレスを供給し、データパス91から処理済みのデータを出力する機能93が、PE21.6を中心に構成される。さらに、第4の構成情報63dにより、入力データa[i]およびb[i]を外部メモリ2aおよび2bから、それぞれのバッファ33aおよび33bにロードする機能94aおよび94bが、PE21.1およびPE21.2を中心に構成される。また、第5の構成情報63eにより、出力データz[i]を外部メモリ2zにストアする機能95が、PE21.5を中心に構成される。外部メモリ2にはBSU36を介して調停された後にアクセスするので、PE21.1、21.2および21.5において生成された外部アドレスはBSU36に供給される。
図10に示すように、本発明において生成されるハードウェア情報による構成では、ループ処理は、1つのループカウンタに基づくシーケンサにより制御されるのではなく、多数の簡易な構成のアドレスカウンタにより制御される。したがって、多数のアドレスカウンタを生成するために、ハードウェア資源は使用される。しかしながら、個々のアドレスカウンタは、機能が限定されたもので良いので、専用化したPE21aとして実装することができ、実装密度は向上する。さらに、それらのPE21aを入出力するバッファ33a、33bおよび34aの近傍に配置することが可能であり、また、外部メモリ2a、2bおよび2zにアクセスするためのアドレスカウンタはBSU36にアドレスを出力し易い場所に分散して配置できる。したがって、アドレスを供給するために使用される配線資源は限定されたものとなり、データパスを構成するための配線資源の多くを割くことができる。
特に、データパス91によりデータをパイプライン処理しようとすると本発明のメリットは大きい。図9に示したように、パイプラインを構成していないデータパス82においては、1つのカウンタでデータパスを制御したり、入出力データを管理することはそれほど難しくはないかもしれない。しかしながら、ループ内のアルゴリズムが複雑になれば、トークンを用いたデータフロータイプのデータパスか、パイプライン処理を行うデータパスを構成しないと、タイミング収束が図れない。さらに、データパスの処理能力を向上しようとするパイプライン処理が好適であるが、その場合、同じインデックスで入力データと出力データとを一括で管理できず、シーケンサは複雑化する。これに対し、本発明のハードウェア構成であれば、もともとアドレスカウンタは分散しているので、ループ処理のアルゴリズムの複雑さに左右されずにパイプライン構成をマトリクス10に実装することができる。
マトリクス10に構成されたデータパス91において、ループインデックスを使用する処理が行われる場合がある。このようなときは、ループインデックスを使用する処理を行うPE21の近傍にループインデックス用のカウンタを構成することが配線資源の消費を少なくする点からは望ましい。しかしながら、ループカウンタを構成するための多くのPE21を必要とするのであれば、余っているアドレス発生用のPE21aをループカウンタとして使用することができる。アドレス発生用のPE21aに余裕がなければ、この処理のために使用されているアドレス発生用のPE21aの出力をデータパス91に導いて、PE21の内部でループインデックスを演算することが可能である。
図10に示した例では、マトリクス10の外に用意されたキャッシュ用のバッファ34および35をループ処理用のデータの格納領域として用いている。マトリクス内にRAMとして機能するタイプの異なるPE21を配置することにより、マトリクス10の内部にクローズしたループ処理用のデータパスを形成することも可能である。
外部メモリ2a、2bおよび2zに対し、バッファ33a、33bおよび34aをキャッシュメモリとして使用する場合、BSU36を介して外部メモリとバッファとを接続するので、データの転送容量は大きいとしてもバッファと外部メモリとのアクセスを占有した状態で維持することは難しい。本例のバッファ33a、33bおよび34aは2バンクタイプのメモリであり、ダブルバッファを構成し、入力側と出力側とのスワッピングと連動させながら外部メモリとの間でデータを交換できる。したがって、入力変数入力データa[i]またはb[i]のアレイサイズが大きな場合であっても、データの入出力のオーバーヘッドを低減することができ、入出力型のデータパスに変換したループ処理により十分な処理速度を確保することができる。
本発明のハードウェア情報の発生方法は、複雑なループ処理を最適化し、簡易な構成で実現するためにも適している。例えば、図11に示すような、多重のループ処理を含むアルゴリズム67aにおいては、多重にバッファを設け、多重にアドレスカウンタを設けて処理することが可能である。しかしながら、多重構造になっているインデックスが連続したデータ配列を示すものであれば、多重のバッファを1つにマージすると共に、多重のアドレスカウンタを1つにマージし、多重ループを制御する情報を共通したアドレスカウンタに包含させることができる。したがって、多重ループを1つのループ処理にマージして簡易な構成で実行することができる。データ配列が連続しない場合であっても、アドレス発生用のPE21aを論理演算用のPE21bと組み合わせて、多重ループを処理するのに適したアドレスが発生させ、多重ループを1つのループ処理にマージすることは可能である。
図12に示したアルゴリズム67bは、多重ループで、内側のループの外側にステートメント66cが記載されたものである。この場合は、最も内側のループの処理を行うデータパスの構成に、外側のステートメント66cの処理を適切なタイミングで行う条件付で実行する構成を含ませることにより、単純な多重ループにすることができる。したがって、上記と同様に、多重ループを1つのループ処理にマージしてマトリクス10に実装することが可能となる。
以上では、複数のPEがマトリクス状に配列された、再構成可能な領域を備えたPU1に基づき、本発明を説明しているが、本発明の適用可能なハードウェアは、これに限定されない。同一構成で、ALUあるいはそれに匹敵する程度の処理機能を備えた複数のPEが適当なネットワークにより接続された様々なタイプの再構成可能なハードウェアにおいて、ループ処理を実装するために本発明は好適である。さらに、FPGAあるいは専用回路に本発明を適用することも可能である。
プロセッシングユニット(PU)の概要を示す図。 プロセッシングエレメント(PE)の一例を示す図。 アドレスを発生するのに適したPEの例を示す図。 図3に示したデータパス部のアドレス発生回路の構成を示す図。 図4に示したカウンタの構成を示す図。 ハードウェア情報を生成するシステムの概要を示す図。 コンパイラーの処理の概要を示す図。 ソースプログラムの一例を示す図。 ステートマシンを用いた実装例を示す図。 図1に示したPUに実装した例を示す図。 ソースプログラムの異なる例を示す図。 ソースプログラムのさらに異なる例を示す図。
符号の説明
1 データ処理装置(集積回路装置)
10 再構成可能な領域(マトリクス)
21 プロセッシングエレメント(PE)、 22 配線
60 コンパイラ、 61 ソースプログラム
62 ハードウェア情報
63a 第1のアルゴリズムで繰り返し行なわれる第1の処理を実行するデータパスを構成する第1の構成情報
63b 入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報
63c 出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報
91 データパス、 92 データを入力する機能
93 データを出力する機能

Claims (20)

  1. 第1の処理を繰り返す第1のアルゴリズムを含む第1のプログラムを実行するためのハードウェア情報を生成する方法であって、以下の生成を含む方法。
    (a) 入力データに対し前記第1の処理を実行した出力データを生成するための第1の構成情報。
    (b) 前記入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報。
    (c) 前記出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報。
  2. 請求項1において、前記ハードウェア情報は、再構成可能な領域を備えた集積回路装置の少なくとも一部の構成を変更するためのものである、ハードウェア情報を生成する方法。
  3. 請求項2において、前記再構成可能な領域は、複数のプロセッシングエレメントを含んでおり、
    前記第1の構成情報は、前記複数のプロセッシングエレメントの少なくとも一部によりパイプラインを構成するための情報を含んでいる、ハードウェア情報を生成する方法。
  4. 請求項3において、前記第2の構成情報、および前記第3の構成情報は、前記第1のアドレスカウンタおよび前記第2のアドレスカウンタをそれぞれ前記複数のプロセッシングエレメントの少なくとも一部により構成するための情報を含んでいる、ハードウェア情報を生成する方法。
  5. 請求項3において、前記複数のプロセッシングエレメントは、前記ロードする処理および/または前記ストアする処理に適したタイプのアドレス発生回路を備えた専用エレメントを含んでおり、
    前記第2の構成情報および前記第3の構成情報は、前記第1のアドレスカウンタおよび前記第2のアドレスカウンタのそれぞれを、前記専用エレメントを含めて構成するための情報を含んでいる、ハードウェア情報を生成する方法。
  6. 請求項1において、前記第1のメモリおよび前記第2のメモリは、集積回路装置の内部バッファであり、さらに、以下の生成を含む、ハードウェア情報を生成する方法。
    (d) 前記入力データを第3のアドレスカウンタにより外部メモリから前記第1のメモリにロードする処理を実行するための第4の構成情報。
    (e) 前記出力データを第4のアドレスカウンタにより前記第2のメモリから前記外部メモリにストアする処理を実行するための第5の構成情報。
  7. 請求項6において、前記第1のメモリおよび前記第2のメモリはダブルバッファタイプであり、
    前記第4の構成情報は、前記第1のメモリのスワッピングに連動して前記入力データをロードする処理を実現するための構成情報を含み、
    前記第5の構成情報は、前記第2のメモリのスワッピングに連動して前記出力データをストアする処理を実現するための構成情報を含んでいる、ハードウェア情報を生成する方法。
  8. 請求項1において、前記第1の構成情報は、前記第1のアドレスカウンタの値および/または前記第2のアドレスカウンタの値に基づきパラメータを生成する処理を実現するための構成情報を含んでいる、ハードウェア情報を生成する方法。
  9. 請求項1において、前記第1のプログラムは、前記第1のアルゴリズムを含む処理を繰り返す第2のアルゴリズムを含んでおり、
    前記第2の構成情報および前記第3の構成情報は、前記第2のアルゴリズムを包含した処理を実現するための構成情報を含んでいる、ハードウェア情報を生成する方法。
  10. 請求項9において、前記第1の構成情報は、前記第2のアルゴリズムに含まれる前記第1の処理以外の処理を適切なタイミングで実行するための構成情報を含んでいる、ハードウェア情報を生成する方法。
  11. 再構成可能な領域を備えた集積回路装置の少なくとも一部の構成を変更可能なハードウェア情報が記憶された記録媒体であって、前記ハードウェア情報は、第1の処理を繰り返す第1のアルゴリズムを実行するために以下の構成情報を備えている。
    (a) 入力データに対し前記第1の処理を実行した出力データを生成するための第1の構成情報。
    (b) 前記入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報。
    (c) 前記出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報。
  12. 請求項11において、前記第1のメモリおよび前記第2のメモリは、集積回路装置の内部バッファであり、さらに、前記ハードウェア情報は以下の構成情報を備えた、前記ハードウェア情報が記録された記録媒体。
    (d) 前記入力データを第3のアドレスカウンタにより外部メモリから前記第1のメモリにロードする処理を実行するための第4の構成情報。
    (e) 前記出力データを第4のアドレスカウンタにより前記第2のメモリから前記外部メモリにストアする処理を実行するための第5の構成情報。
  13. 請求項12において、前記第1のメモリおよび前記第2のメモリはダブルバッファタイプであり、前記第4の構成情報は、前記第1のメモリのスワッピングに連動して前記入力データをロードする処理を実現するための構成情報を含み、
    前記第5の構成情報は、前記第2のメモリのスワッピングに連動して前記出力データをストアする処理を実現するための構成情報を含んでいる、前記ハードウェア情報が記録された記録媒体。
  14. 請求項11において、前記第1のアルゴリズムを含む処理を繰り返す第2のアルゴリズムを実行するために、前記第2の構成情報および前記第3の構成情報は、前記第2のアルゴリズムを包含した処理を実現するための構成情報を含んでいる、前記ハードウェア情報が記録された記録媒体。
  15. 請求項14において、前記第1の構成情報は、前記第2のアルゴリズムに含まれる前記第1の処理以外の処理を適切なタイミングで実行するための構成情報を含んでいる、前記ハードウェア情報が記録された記録媒体。
  16. 第1の処理を繰り返す第1のアルゴリズムを含む第1のプログラムを実行するためのハードウェア情報をコンピュータにより生成するプログラムであって、以下を生成する処理を実行するための命令を有するプログラム。
    (a) 入力データに対し前記第1の処理を実行した出力データを生成するための第1の構成情報。
    (b) 前記入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報。
    (c) 前記出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報。
  17. 請求項16において、前記ハードウェア情報は、再構成可能な領域を備えた集積回路装置の少なくとも一部の構成を変更するためのものである、プログラム。
  18. 請求項16において、前記第1のメモリおよび前記第2のメモリは、集積回路装置の内部バッファであり、
    さらに、以下を生成する処理を実行するための命令を有するプログラム。
    (d) 前記入力データを第3のアドレスカウンタにより外部メモリから前記第1のメモリにロードする処理を実行するための第4の構成情報。
    (e) 前記出力データを第4のアドレスカウンタにより前記第2のメモリから前記外部メモリにストアする処理を実行するための第5の構成情報。
  19. 請求項18において、前記第1のメモリおよび前記第2のメモリはダブルバッファタイプであり、前記第4の構成情報は、前記第1のメモリのスワッピングに連動して前記入力データをロードする処理を実現するための構成情報を含み、
    前記第5の構成情報は、前記第2のメモリのスワッピングに連動して前記出力データをストアする処理を実現するための構成情報を含んでいる、プログラム。
  20. 第1の処理を繰り返す第1のアルゴリズムを含む第1のプログラムを実行するために以下の構成情報を備えたハードウェア情報を生成する手段を有するコンパイラー。
    (a) 入力データに対し前記第1の処理を実行した出力データを生成するための第1の構成情報。
    (b) 前記入力データを第1のアドレスカウンタにより第1のメモリからロードする処理を実行するための第2の構成情報。
    (c) 前記出力データを第2のアドレスカウンタにより第2のメモリにストアする処理を実行するための第3の構成情報。
JP2005162956A 2004-06-07 2005-06-02 ハードウェア情報を生成する方法 Pending JP2005353061A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/862,801 2004-06-07
US10/862,801 US20050283743A1 (en) 2004-06-07 2004-06-07 Method for generating hardware information

Publications (2)

Publication Number Publication Date
JP2005353061A true JP2005353061A (ja) 2005-12-22
JP2005353061A6 JP2005353061A6 (ja) 2006-03-23

Family

ID=34937285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005162956A Pending JP2005353061A (ja) 2004-06-07 2005-06-02 ハードウェア情報を生成する方法

Country Status (3)

Country Link
US (1) US20050283743A1 (ja)
EP (1) EP1605378A1 (ja)
JP (1) JP2005353061A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282808A (ja) * 2008-05-23 2009-12-03 Fujitsu Ltd 半導体回路設計支援プログラム
JPWO2008026731A1 (ja) * 2006-08-31 2010-01-21 アイピーフレックス株式会社 再構成可能なデバイスに回路デザインを実装するための方法およびシステム
JP2010231635A (ja) * 2009-03-27 2010-10-14 Fujitsu Ltd コンテキスト作成プログラム、コンパイラおよびコンテキスト作成方法
JP2013165490A (ja) * 2012-02-09 2013-08-22 Altera Corp 高レベル言語を用いるプログラマブルデバイスの構成
CN103547999A (zh) * 2011-01-25 2014-01-29 美光科技公司 利用专用元件实施有限状态机
JP2014506693A (ja) * 2011-01-25 2014-03-17 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための数量化の展開
US8719550B2 (en) 2010-03-25 2014-05-06 Fuji Xerox Co., Ltd. Reconfigurable processing system including synchronized postprocessing
US9104828B2 (en) 2011-01-25 2015-08-11 Micron Technology, Inc. State grouping for element utilization
US9146714B2 (en) 2011-01-25 2015-09-29 Micron Technology, Inc. Method and apparatus for compiling regular expressions
US9379005B2 (en) 2010-06-28 2016-06-28 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US9742954B2 (en) 2015-12-24 2017-08-22 Fuji Xerox Co., Ltd. Data processing apparatus, data processing method, and non-transitory computer readable medium
US9785847B2 (en) 2010-06-10 2017-10-10 Micron Technology, Inc. Analyzing data using a hierarchical structure
US10586802B2 (en) 2011-02-25 2020-03-10 Micron Technology, Inc. Charge storage apparatus and methods

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353491B2 (en) * 2004-05-28 2008-04-01 Peter Pius Gutberlet Optimization of memory accesses in a circuit design
EP1859378A2 (en) 2005-03-03 2007-11-28 Washington University Method and apparatus for performing biosequence similarity searching
KR100662873B1 (ko) * 2006-01-03 2007-01-02 삼성전자주식회사 루프가속기 및 이를 포함하는 데이터 처리 시스템
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7840732B2 (en) * 2006-09-25 2010-11-23 Honeywell International Inc. Stacked card address assignment
US7921411B2 (en) * 2006-10-20 2011-04-05 International Business Machines Corporation Model checking of non-terminating software programs
US8260602B1 (en) * 2006-11-02 2012-09-04 The Math Works, Inc. Timer analysis and identification
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
JP5141151B2 (ja) * 2007-09-20 2013-02-13 富士通セミコンダクター株式会社 動的再構成回路およびループ処理制御方法
JP4911022B2 (ja) * 2007-12-27 2012-04-04 富士通セミコンダクター株式会社 カウンタ制御回路、動的再構成回路およびループ処理制御方法
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
EP2370946A4 (en) 2008-12-15 2012-05-30 Exegy Inc METHOD AND DEVICE FOR HIGH-SPEED PROCESSING OF FINANCIAL MARKET DEFINITIONS
JP5407631B2 (ja) * 2009-07-21 2014-02-05 富士ゼロックス株式会社 回路情報生成装置、機能実行システム、及びプログラム
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US10416750B2 (en) 2014-09-26 2019-09-17 Qualcomm Incorporated Algorithm engine for ultra low-power processing of sensor data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484303A (en) * 1979-06-19 1984-11-20 Gould Inc. Programmable controller
US4844304A (en) * 1987-12-03 1989-07-04 Lenderink Trent A Toy capable of flight
US5745734A (en) * 1995-09-29 1998-04-28 International Business Machines Corporation Method and system for programming a gate array using a compressed configuration bit stream
US6134707A (en) * 1996-11-14 2000-10-17 Altera Corporation Apparatus and method for in-system programming of integrated circuits containing programmable elements
DE19654595A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
US6102963A (en) * 1997-12-29 2000-08-15 Vantis Corporation Electrically erasable and reprogrammable, nonvolatile integrated storage device with in-system programming and verification (ISPAV) capabilities for supporting in-system reconfiguring of PLD's
US6988266B2 (en) * 2001-05-08 2006-01-17 Sun Microsystems, Inc. Method of transforming variable loops into constant loops
EP1280148A3 (en) * 2001-07-26 2003-09-17 Irdeto Access B.V. Compilation technique and data distribution system using the same

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008026731A1 (ja) * 2006-08-31 2010-01-21 アイピーフレックス株式会社 再構成可能なデバイスに回路デザインを実装するための方法およびシステム
JP4998806B2 (ja) * 2006-08-31 2012-08-15 富士ゼロックス株式会社 再構成可能なデバイスに回路デザインを実装するための方法およびシステム
JP2009282808A (ja) * 2008-05-23 2009-12-03 Fujitsu Ltd 半導体回路設計支援プログラム
JP2010231635A (ja) * 2009-03-27 2010-10-14 Fujitsu Ltd コンテキスト作成プログラム、コンパイラおよびコンテキスト作成方法
US8719550B2 (en) 2010-03-25 2014-05-06 Fuji Xerox Co., Ltd. Reconfigurable processing system including synchronized postprocessing
US11488378B2 (en) 2010-06-10 2022-11-01 Micron Technology, Inc. Analyzing data using a hierarchical structure
US9785847B2 (en) 2010-06-10 2017-10-10 Micron Technology, Inc. Analyzing data using a hierarchical structure
US10872903B2 (en) 2010-06-28 2020-12-22 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US10510769B2 (en) 2010-06-28 2019-12-17 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US10090324B2 (en) 2010-06-28 2018-10-02 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US9780115B2 (en) 2010-06-28 2017-10-03 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US9379005B2 (en) 2010-06-28 2016-06-28 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US11700730B2 (en) 2010-06-28 2023-07-11 Micron Technology, Inc. Three dimensional memory and methods of forming the same
US9471290B2 (en) 2011-01-25 2016-10-18 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US10089086B2 (en) 2011-01-25 2018-10-02 Micron Technologies, Inc. Method and apparatus for compiling regular expressions
CN103547999B (zh) * 2011-01-25 2017-05-17 美光科技公司 利用专用元件实施有限状态机
US9146714B2 (en) 2011-01-25 2015-09-29 Micron Technology, Inc. Method and apparatus for compiling regular expressions
US9792097B2 (en) 2011-01-25 2017-10-17 Micron Technology, Inc. Method and apparatus for compiling regular expressions
US9916145B2 (en) 2011-01-25 2018-03-13 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US9104828B2 (en) 2011-01-25 2015-08-11 Micron Technology, Inc. State grouping for element utilization
CN103547999A (zh) * 2011-01-25 2014-01-29 美光科技公司 利用专用元件实施有限状态机
JP2014506692A (ja) * 2011-01-25 2014-03-17 マイクロン テクノロジー, インク. Fsmを実装するための専用要素の利用
JP2014506693A (ja) * 2011-01-25 2014-03-17 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための数量化の展開
US10586802B2 (en) 2011-02-25 2020-03-10 Micron Technology, Inc. Charge storage apparatus and methods
US11581324B2 (en) 2011-02-25 2023-02-14 Micron Technology, Inc. Charge storage apparatus and methods
JP2013165490A (ja) * 2012-02-09 2013-08-22 Altera Corp 高レベル言語を用いるプログラマブルデバイスの構成
US9742954B2 (en) 2015-12-24 2017-08-22 Fuji Xerox Co., Ltd. Data processing apparatus, data processing method, and non-transitory computer readable medium

Also Published As

Publication number Publication date
EP1605378A1 (en) 2005-12-14
US20050283743A1 (en) 2005-12-22

Similar Documents

Publication Publication Date Title
JP2005353061A (ja) ハードウェア情報を生成する方法
JP2005353061A6 (ja) ハードウェア情報を生成する方法
JP4900717B2 (ja) 再構成可能な装置
JP4893309B2 (ja) 再構成可能な論理回路を有するデータ処理装置
US7895586B2 (en) Data flow graph processing method, reconfigurable circuit and processing apparatus
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
JP5077597B2 (ja) データ処理装置
US20030061601A1 (en) Data processing apparatus and method, computer program, information storage medium, parallel operation apparatus, and data processing system
JPWO2002095946A1 (ja) 集積回路装置
JP2022543457A (ja) 再構成可能アーキテクチャのコンパイラ・フロー・ロジック
JP3722351B2 (ja) 高位合成方法およびその実施に使用される記録媒体
WO2005001723A1 (ja) 並列処理システムの生成方法
Chaudhuri et al. SAT-based compilation to a non-vonNeumann processor
Ahmed et al. mRTS: Run-time system for reconfigurable processors with multi-grained instruction-set extensions
JPH10256383A (ja) 半導体装置及びその回路構成方法
Ferreira et al. A run-time graph-based polynomial placement and routing algorithm for virtual fpgas
Zamacola et al. An integrated approach and tool support for the design of fpga-based multi-grain reconfigurable systems
JP3850531B2 (ja) 再構成可能な回路の設計装置、及び再構成可能な回路装置
Möller et al. A NoC-based infrastructure to enable dynamic self reconfigurable systems
Ye Field-programmable gate array architectures and algorithms optimized for implementing datapath circuits
JP4208919B2 (ja) 活性化コードの生成方法
JP4562679B2 (ja) データフローグラフ生成装置
JP4470110B2 (ja) 高位合成方法およびシステム
Ferreira et al. A Runtime FPGA Placement and Routing Using Low-Complexity Graph Traversal
JP2004302856A (ja) 集積回路装置およびその装置に対するデータ設定装置