JP2011525008A - リアルタイムデータ処理のための方法&装置 - Google Patents
リアルタイムデータ処理のための方法&装置 Download PDFInfo
- Publication number
- JP2011525008A JP2011525008A JP2011511099A JP2011511099A JP2011525008A JP 2011525008 A JP2011525008 A JP 2011525008A JP 2011511099 A JP2011511099 A JP 2011511099A JP 2011511099 A JP2011511099 A JP 2011511099A JP 2011525008 A JP2011525008 A JP 2011525008A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- unit
- instruction
- control
- 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
Links
- 238000000034 method Methods 0.000 title claims description 45
- 238000012545 processing Methods 0.000 title claims description 42
- 239000013598 vector Substances 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 5
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 4
- 239000011159 matrix material Substances 0.000 claims description 2
- 230000010354 integration Effects 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 3
- 230000004044 response Effects 0.000 abstract 1
- 238000013459 approach Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000012190 activator Substances 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000003169 central nervous system Anatomy 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
- G06F9/30181—Instruction operation extension or modification
-
- 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
【解決手段】プログラマブルマイクロプロセッサのための改善された命令セット&コア設計、制御、及び通信が開示され、これは、今日の及び先行技術のプロセッサにおける集中型のプログラムシーケンシングを、新規の分散型のプログラムシーケンシングで置き換えるための戦略を伴う。新規の分散型のプログラムシーケンシングでは、各機能ユニットは、自身の命令フェッチ&デコードブロックを有し、各機能ユニットは、プログラム格納のための自身のローカルメモリを有し、計算ハードウェア実行ユニット及びメモリユニットは、設定及び切り替え相互接続が異なるハードウェアユニットを確立する様々なアプリケーション命令シーケンスに応じて異なる順序に再設定可能なパイプラインステージを伴うプログラマブル埋め込みプロセッサとして、柔軟にパイプライン化される。
【選択図】図1
【選択図】図1
Description
本発明は、全体として、リアルタイムデータ処理及びそのためのマイクロプロセッサ技術の分野に関し、より詳細には、プログラマブルマイクロプロセッサなどにおける、制御、通信、命令セット設計、及びデータフローを改善することに関し、限定はされないが特に、同時係属の米国特許出願第11/973,184号に記載されるようなスイッチ制御式のプログラマブルプロセッサ並びに柔軟なパイプライン及び並列処理における、メモリユニット設計、プログラミング方法、及びフロー制御を改善することに関する。
上記同時係属特許出願に記載されるように、先行技術の及び既存のプロセッサアーキテクチャは、特に、携帯電話機などの一携帯用デバイスを例とする1つのシステム内に集約されるプログラムアプリケーションの増加及び多様化を踏まえると、リアルタイムな普遍的マルチメディアアプリケーションにとって十分に強力な又は十分に柔軟な設計を未だに達成できていない。
このような既存のプロセッサアーキテクチャ(例えばMIPS、ARMなど)は、一般に、1つの命令セットによって動作し、このような命令セット内にコード化された制御情報は、1つのプロセッサコア内の全ての機能回路ブロックを駆動する。
このような機能ブロックの代表的なものは、以下の通りである。
・次の命令フェッチのためのアドレスを算出する(例えば、現命令の直後の命令をフェッチするために+1にする、分岐のためにxをロードするなど)シーケンサ。このような命令アドレスの算出は、条件フラグに依存することができる。
・上記同時係属出願に記載された実行ユニットなどの、到着データに対して様々な算術演算又は論理演算を実施する計算ユニット。
・レジスタファイル、並びに計算ユニットの入力及び出力に対するそれらの設定可能接続。
・外部メモリ内の特定のアドレスに対してデータの送受信を行うように設定することができるメモリバス。
・次の命令フェッチのためのアドレスを算出する(例えば、現命令の直後の命令をフェッチするために+1にする、分岐のためにxをロードするなど)シーケンサ。このような命令アドレスの算出は、条件フラグに依存することができる。
・上記同時係属出願に記載された実行ユニットなどの、到着データに対して様々な算術演算又は論理演算を実施する計算ユニット。
・レジスタファイル、並びに計算ユニットの入力及び出力に対するそれらの設定可能接続。
・外部メモリ内の特定のアドレスに対してデータの送受信を行うように設定することができるメモリバス。
これらの機能ブロックは、より柔軟に作成されるほど、より上手く任意の汎用プログラムの実行に活用することができる。他方、これらの機能ブロックは、より柔軟であるほど、より多くのビットが特定の動作に合わせた設定のために必要とされる。
次に、本発明のプロセッサコアにおいてここに使用される発明の設定設計、制御、及び通信の戦略の背景として、従前のアーキテクチャ及びそれらの長所と限界とについて再考する。
従来のフォンノイマンアーキテクチャでは、コンパイル済みのソフトウェアプログラムは、実行されるべき命令シーケンスはもちろん、処理されるべきデータも含み、これらは共にメモリに格納される。しかしながら、メモリとCPUとの間の帯域幅は、各クロックサイクルにおいて何ビットの命令及びデータをプロセッサに送信可能であるかについての上限を設けるゆえに、パフォーマンスを制限する。これが、1970年代に明らかにされた、有名なフォンノイマンボトルネックである。
ハーバードアーキテクチャ及びスーパーハーバードアーキテクチャなどの、より最近のアーキテクチャは、命令のメモリとデータのメモリとを分け、外部メモリからの新しい命令ページ(メモリブロック)の投機的ロード、及び古いページの取り換えを可能にするために、より高速の内部メモリである命令キャッシュをCPU内部に追加した。目標は、メインの命令メモリからの代わりに、より高速のキャッシュメモリから次の命令をフェッチすることであった。どの新しいページをロードするか及びどの古ページを取り換えるかを決定するためには、投機的(スペキュレーション)アルゴリズムが使用される。キャッシュ「ヒット」の(すなわち、キャッシュの中に命令を見つけた)場合にパフォーマンスが向上される一方で、キャッシュ「ミス」の(すなわち、キャッシュの中に命令が見つからなかった)場合は、プロセッサは、ロードするべき新しいページを待つ間、多数のサイクルにわたって行き詰まる。投機的アルゴリズムが効率的でないと、パフォーマンスが損なわれる。このような設計は、また、このような効率的な投機的アルゴリズムを扱うために、ハードウェアの追加及び複雑性の増大という犠牲を強いられる。最新のプロセッサアーキテクチャのなかにも、データキャッシュを使用するものがある。
上記同時係属特許出願に記載される、RISIプロセッサ及びパイプラインと呼ばれる別の先行技術は、一命令のサイズを制限することに取り組む。縮小命令セットコンピュータ(RISC)は、任意の汎用プログラムの最小公分母の原則下で命令セットを定める。命令セットは、単純である、すなわち「縮小」されており、これは、それらの実行に必要とされるハードウェアも単純にする。一命令の実行は、次いで、ハードウェア内のパイプラインステージに分割され、これらのステージは、等しい又は同様の伝搬遅延、及び中間データ結果をバッファリングするためのレジスタを伴うとともに、必要な制御信号を1つのステージから次のステージへと引き渡される。プロセッサは、次いで、n個の命令を、前の命令が1つ先のステージを実行するように並列に積み重ねようとする。パイプラインが充填されると、各命令のスループットは、ハードウェア内におけるその実行の完了にかかる時間の1/nである。このようにすれば、命令セットがより単純で、尚且つ各命令が実施できる動作が限られるにもかかわらず、例えば、よく知られた5ステージRISCなどの典型的なMIPSプロセッサと同じくらい、大幅に高速に実行される。このようなMIPS設計では、命令セットは単純に維持され、ハードウェアは再利用される。例えば、ALUブロックは、データ処理のみならず、データメモリアクセス用のアドレスの計算にも使用される。レジスタファイルは、ALU動作前及びALU動作後のデータを格納するために使用されるとともに、メモリアクセスアドレスの一部も格納する。これは、全ての命令が比較的単純に維持され、同様の量のハードウェア処理を必要とするゆえに可能である。しかしながら、この単純なアーキテクチャでも、全てのハードウェアを常に用いることはできない。例えば、MEM(メモリアクセス)ステージは、いかなる算術演算命令又は論理演算命令にも用いられない。
更に、パイプライン型のRISC設計では、すべてのパイプラインステージにおける全ての制御信号が、ID(命令デコード)ステージにおいて生成され、バッファリングされるとともにその目的ステージに運ばれる必要があることがわかる。したがって、単純な5ステージMIPSにおいても、依然として多くの制御信号がバッファリングされ、パイプラインステージに沿って送信される。
やはり上記同時係属特許出願で説明されるように、RISCプロセッサは、パイプライン型の構造を用いることによって命令のスループットを向上させるが、このような付加的向上には限界がある。限界の1つは、計算集約型のリアルタイム信号処理プログラムを実行する能力にある。乗算又は乗累算のための特殊な命令及び特殊なハードウェアがないと、これらの演算は、実行のために多くのサイクルを必要とする。一例では、16ビットの乗算は、最多で16サイクルを必要とする可能性があり、32ビットの乗算は、最多で32サイクルを必要とする可能性がある。このようなパフォーマンスは、しかしながら、リアルタイムな計算集約型アルゴリズムにとって適切でない。もう1つの限界は、パイプラインを充填することに対する制約である。もし次の命令の選択が、前の命令(すなわち分岐命令)の計算結果に依存する場合、前の命令がフェッチされた一サイクル後、結果がまだわからない時点では、フェッチすることができない。これは、パイプラインの充填を阻み、その結果、行き詰まりを発生する。しかしながら、行き詰まる代わりに、分岐の一方の道にある命令を、投機的にフェッチすることができる。もし正しい分岐がフェッチされた場合、パイプラインは、結果が得られたときに正常に進むことができる。そうでない場合、パイプラインは、正しい分岐に戻るためにフラッシュされなければならない。このような投機的な実行は、したがって、分岐予測が高い正解率を有する場合にのみ効率性を向上させるが、これは、常に容易に達成されることではない。
やはり上記同時係属特許出願で言及されるように、特殊な命令及び専用のハードウェアを追加されたパイプライン型のDSPは、一サイクルのMAC演算スループットを達成するので、DSPの使用は、連続した乗累算すなわちMAC演算(例えば、フィルタリングやマトリックス乗算)を伴うアルゴリズムのパフォーマンスを大幅に向上させる。
しかしながら、非計算集約型のプログラムの場合は、追加された一サイクルMAC論理は、その他の命令には使用されないゆえに、大きなオーバーヘッドになる可能性がある。そして、大半がMACベースではないアルゴリズム(例えば、むしろ加算ベースであるビデオデコードにおける動き補正)の場合も、MAC論理は、やはりパフォーマンスを向上させない。
今日のリアルタイムマルチメディア処理アルゴリズムの複雑性が増すにつれ、プロセッサに追加しなければならない計算ハードウェアも益々増える。スループットを高く維持するために、パイプライン型構造が尚も使用されているが、ただし、各ステージにおける伝搬遅延を妥当にするために、ステージが多くされている。
更に、より多くの計算を並列に実施するためにハードウェアを増やした場合、ハードウェアブロックを活用するために、より多くの制御情報(すなわち命令)及びより多くのデータをクロックサイクルごとにプロセッサパイプラインに入れなければならなくなる。すると、クロックレートが大幅に高くなるので、上述のフォンノイマンボトルネックのもともとの挑戦が何倍にも増す。また、クロックサイクルごとにプロセッサパイプラインステージに入る必要がある命令及びデータが増えるゆえに、パフォーマンスを向上させるには、命令及びデータのキャッシュや分岐予測などの技術を尚も使用しなければならない。
データを処理するために異なる計算ハードウェアが並列に使用される場合、それらの能力をユーザプログラムに対してマッピングする必要がある。RISCと対照的に、ハードウェアは、もはや汎用プログラムの最小公分母ではなく、最も効率的なマッピングは、容易に達成できない。したがって、命令セット設計は、従来のRISC原則から逸脱しはじめる。
並列に実行される複数の計算ブロックを上手く活用する方法は、しかしながら、ハードウェアユニットを複製し、複数のデータ計算セットの駆動に同じ命令を使用することである。これは、単一命令複数データ(SIMD)と呼ばれ、制御ビットの効率的な使用法である。しかしながら、これは、異なるデータセットに対して並列の同一計算を沢山実施するアルゴリズムにとってのみ実用的である。
しかしながら、異なるハードウェアブロックに並列計算をマッピングすることは、更に複雑である。一つのアプローチは、各命令の標的を1つのハードウェアブロックとして固定長命令を使用することである。ハードウェア命令シーケンシングシーケンス&ディスパッチブロックは、クロックサイクルごとに複数の命令をフェッチし、順序付けることができる。スーパースカラ命令ディスパッチアーキテクチャと呼ばれるように、各計算ユニットには、命令デコードブロックが提供される。
更に別の従前のアプローチは、超長命令語(VLIW)を使用して、考えられる全ての並列命令の組み合わせをコード化することである。この場合は、一度に1つの命令をフェッチすることができる命令フェッチモジュールが1つあればよい。しかしながら、このような長い命令は、単純な動作(例えば並列計算を伴わない制御命令)にとっては非常に非効率的である。
結果として生じるプロセッサ設計の複雑性
今日のプロセッサは、パフォーマンスを向上させるために上述の技術を使用するにもかかわらず、いずれも、ハードウェアの複雑性及び電力の消費を増している。したがって、一層又は複数層の階層データ及びキャッシュのための命令メモリを、洗練されたページ置き換えアルゴリズムとともに使用する手段が採られてきた。これは、しかしながら、次の命令をどこからフェッチするかを把握するために複雑な命令フェッチ論理を必要とする。複数の計算ブロックセットは、専ら、乗算、加算、及び論理演算や、シフト及び回転などの、特殊な計算アクティベータのためであり、これらは、1)全てのブロックを並列に使用するようにプログラムが順序付け可能である、尚且つ2)必要な制御ビットを計算ブロックにおいて得られるだけの十分な帯域幅がある場合にのみ、一サイクル内で完全に用いられる。パイプラインを充填状態に維持するための分岐予測の使用は、もちろん、分岐予測誤差を被りやすく、これは、フラッシュされるべきパイプラインが深くなるゆえに、費用がかさむと考えられる。
今日のプロセッサは、パフォーマンスを向上させるために上述の技術を使用するにもかかわらず、いずれも、ハードウェアの複雑性及び電力の消費を増している。したがって、一層又は複数層の階層データ及びキャッシュのための命令メモリを、洗練されたページ置き換えアルゴリズムとともに使用する手段が採られてきた。これは、しかしながら、次の命令をどこからフェッチするかを把握するために複雑な命令フェッチ論理を必要とする。複数の計算ブロックセットは、専ら、乗算、加算、及び論理演算や、シフト及び回転などの、特殊な計算アクティベータのためであり、これらは、1)全てのブロックを並列に使用するようにプログラムが順序付け可能である、尚且つ2)必要な制御ビットを計算ブロックにおいて得られるだけの十分な帯域幅がある場合にのみ、一サイクル内で完全に用いられる。パイプラインを充填状態に維持するための分岐予測の使用は、もちろん、分岐予測誤差を被りやすく、これは、フラッシュされるべきパイプラインが深くなるゆえに、費用がかさむと考えられる。
したがって、ハードウェアの追加及び複雑性の増大を含む、上記のプロセッサ設計及び先行技術のスキームは、いずれも、リアルタイムな普遍的マルチメディアアプリケーションにとって十分に強力で且つ十分に柔軟なプロセッサを達成できていない。
システムオンチップ(SoC)の現設計を伴う今日のマルチメディア携帯電話機を再考することによって、複数のプロセッサの使用が明らかになり、また、それらにおける複数の特定用途向け集積回路(ASIC)ブロックの補助的使用も明らかにされる(上記同時係属出願でも述べられている)。また、現ハイエンドセットトップボックスSoCを伴う場合も同様である。これらの複数のプロセッサは、多くの場合、制御機能のための単純なRISC、ビデオ/オーディオ処理のための従来のデジタル信号処理(DSP)、並びに画像処理及びビデオ処理のためのVLIWマルチメディアプロセッサを、従前のプログラマブルプロセッサによって上手く扱うことができないアルゴリズムを扱うASICブロックによる補助とともに含んでいる。
しかしながら、ASICの採用と、独立型プログラマブルプロセッサの採用との間には、大きな差がある。
今日のプロセッサは、集中型の命令ディスパッチを有する。プロセッサパイプライン内の全ての論理ブロックは、自身に対する制御信号を、命令デコードステージからパイプラインを経て取得される。例えば、256ビットもの長さのコード化された命令の場合、デコードされた制御信号は、夥しくなる可能性がある。これらの信号は、スループットを維持するために、意図したブロックにサイクルごとに達する必要があり、これは、制御信号のためのオンチップ帯域幅要件を重大にする結果となる。命令は、また、データメモリ帯域幅、レジスタファイルのサイズ、及び計算ユニットに対する考えられる接続の制約下でクロックサイクルごとの計算ハードウェアの利用を最大にするように順序付けなければならず、これは、効率的な命令の順序付けを困難なタスクにする。
ASICと、このような汎用プロセッサとの間の最も重大な違いは、ASICが、プログラムも命令も有さないことである。ASICは、データフローのみを有し、命令も制御フローも有さない。入力データは、異なる機能ブロック及びバッファメモリブロックを通って出力に向かって流れる。データは、各機能ブロックを通る間にそのブロックによって処理され、もし命令トラフィックのオーバーヘッドがなければクロックレートを低く維持することができる。
以下で詳述される本発明のアプローチにしたがうと、クロックサイクルごとにシステム内のその他の全てのブロックに対する制御を決定する集中型のフェッチ&デコードブロック戦略による既存の及び先行技術のプログラマブルプロセッサが持つこれらの不適切性の多くが、成功裏に克服される。
また、既存の及び先行技術の汎用プロセッサによって扱うには問題がある一般的なアルゴリズム及び演算が幾つかある。その1つは、可変長デコーダ(VLD)又はハフマンデコーダの実装に関係する。一般に、ハフマンコーディングは、より頻繁に現れる記号(例えば英語における文字「e」)のコード化には少なめのビットを使用し、あまり頻繁に現れない記号(例えば英語における文字「x」)のコード化には多めのビットを使用する。ビットストリーム内のこのような記号のデコーディングは、以下の理由:
1.頻繁な記号は、通常、プロセッサのための固定オペランドビットよりも大幅に少ないビットでコード化される、
2.記号が始まる場所は、現記号の処理結果に依存し、これは、次の命令を、現命令の計算結果に常に依存させる。命令フェッチは、完全にデータ依存性であるので、実際は、効果的な投機的命令フェッチアルゴリズムを実装することもできない。これは、パイプラインの充填をほとんど不可能にするゆえに、非常に非効率的である、
ゆえに、現プロセッサでは困難である。
1.頻繁な記号は、通常、プロセッサのための固定オペランドビットよりも大幅に少ないビットでコード化される、
2.記号が始まる場所は、現記号の処理結果に依存し、これは、次の命令を、現命令の計算結果に常に依存させる。命令フェッチは、完全にデータ依存性であるので、実際は、効果的な投機的命令フェッチアルゴリズムを実装することもできない。これは、パイプラインの充填をほとんど不可能にするゆえに、非常に非効率的である、
ゆえに、現プロセッサでは困難である。
今日のプロセッサが直面するもう1つの挑戦は、有限状態マシン(FSM)の実装である。FSMは、格納された前状態と、新しい入力とに基づいて新しい状態を迅速に導き出すために使用される。次いで、新しい状態、又は新しい状態と入力とから、出力(又は行為)が導き出される。しかしながら、通常は、新しい入力のビットはごく少なく、代表的なオペランドビット幅と比べて状態を表わすビットはごく少ない。したがって、高速実行のためにプロセッサ内に容易にパイプライン化することができるFSM命令シーケンスを書き込むことは、極めて困難である。しかしながら、限られたゲート及び少数ビットのレジスタによって、非常に高速なFSMをデジタルASIC内に実装することができる。実際、各記号のハフマンデコーディングは、読み出された特定のビットパターンにそれぞれ対応する幾つかの状態をリンクさせたものと、コーディングプロセスを続けるために読み出すべき新しいビットの数とによって実装することができる。
本発明は、メモリバンクに対する論理回路インターフェースを改善することによって、これらの限界に取り組む。
本発明の主な目的は、したがって、改善された新規の柔軟なデータ処理方法及び装置であって、汎用及び専用の両方のリアルタイムマルチメディアアプリケーション、並びに数値プログラムの用途に特に適しており、先行技術の及び既存のプロセッサに伴う上記の、下記の、及びその他の限界及び困難の影響を受けず、更に、上記同時係属特許出願の設定可能パイプラインステージを伴う柔軟なプログラマブル埋め込みプロセッサとの関連のもとで、携帯電話機、TV受信用のセットトップボックス、又はその他の同様のデバイスなどの一デバイス内に、ほぼ無制限にアプリケーションソフトウェアプログラムを集約させることの展望を切り開く、データ処理方法及び装置を提供することにある。
更なる目的は、新規のメモリ構成及びデータパス、並びにメモリバンクに対する適切な読み出し側及び書き込み側インターフェースを伴う、高度に革新的なマイクロプロセッサコア設計及び制御を提供することにある。
以下では、その他の及び更なる目的が挙げられ、添付の特許請求の範囲にも詳述される。
恐らくはより大きな視野から見て、簡潔に言うと、発明は、複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのフルアクセススイッチユニット、及び制御ユニットを内包するプロセッサを伴う、クロックサイクル同期した柔軟なプログラマブルデータ処理の方法であって、
異なる機能ユニットを接続し、所定の制御パス及びデータパイプラインを階層式に形成することと、
共通の命令セットを使用して、全ての機能ユニットをプログラムすることであって、命令セットは、命令シーケンシング(すなわち、次の命令フェッチのためのアドレスの算出方法)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する、ことと、
それぞれが自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する各機能ユニットを用いて、分散型のプログラムシーケンシングをセットアップすることと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成することと、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定し、それらを、プログラム可能性を最大にするためにスイッチユニットを通じて機能計算ユニットに接続することと、
を含む方法を採用する。
異なる機能ユニットを接続し、所定の制御パス及びデータパイプラインを階層式に形成することと、
共通の命令セットを使用して、全ての機能ユニットをプログラムすることであって、命令セットは、命令シーケンシング(すなわち、次の命令フェッチのためのアドレスの算出方法)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する、ことと、
それぞれが自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する各機能ユニットを用いて、分散型のプログラムシーケンシングをセットアップすることと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成することと、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定し、それらを、プログラム可能性を最大にするためにスイッチユニットを通じて機能計算ユニットに接続することと、
を含む方法を採用する。
好ましい形態及び最良の形態の設計の詳細は、後ほど提示される。
次に、添付の図面を参照にして、発明の説明が行われる。
既述のように、今日のプロセッサ設計において、命令フェッチステージ及び命令デコードステージは、プロセッサ全体の中枢神経系であり、プロセッサ全体の効率は、パイプラインステージ内の全てのハードウェアを駆動して有用な作業を実施するために到着命令をクロックサイクルごとに制御信号に翻訳することに依存している。これは、更に、ハードウェア、ソフトウェア、及び帯域幅に関する上述の全ての制約のもとでなされる必要がある。
本明細書で説明される本発明及びその実施形態の根底にあるのは、クロックサイクルごとにシステム内の全てのブロックに対する制御を決定する集中型のフェッチ&デコードブロックを排除するという、大きく異なった戦略である。本アプローチは、むしろ、ASICにおける場合と同様に、バッチデータ処理のための自然なデータフローをセットアップしつつ、プログラム可能性の利点も維持する。以下の項目は、発明の戦略及びアプローチをまとめたものである。
1.集中型プログラムシーケンシングと対照的な、分散型プログラムシーケンシングの採用。プロセッサ内の各機能ブロックは、自身のプログラムカウンタ、命令フェッチ&デコードブロックを有し、各機能ブロックは、プログラムの格納のための自身のローカルメモリを有する。
2.各機能ユニットをプログラミングするために、全ての機能ユニットに共通する一般的な命令セットを使用する。命令セットは、命令シーケンシング(すなわち、次の命令フェッチのためのアドレスの算出方法)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する。
3.異なる機能ブロックを接続し、制御階層及びデータパイプラインを形成することによって、機能ブロックを階層式に制御する。
4.計算ブロックが、メモリへの中間バッファリングを伴うことなく到着データに対してより多くのステップの算術演算及び論理演算を実施することができるように、計算ブロックを、より多くのタイプのデータフロー及び動作に適合するように柔軟にする、又は、上記同時係属特許出願で教示されるように、データメモリに対して出入りするトラフィックを抑制する。
5.上記同時係属特許出願にあるように、プログラム可能性を最大にするために、複数のメモリブロック及び関連の論理をフルアクセススイッチを通して計算ブロックに接続する。
6.データ依存処理、木又はグラフのトラバーサルを扱うために、本明細書で後ほど説明される有限状態マシンとして、メモリ読み出し/書き込み回路系に論理を追加する。
2.各機能ユニットをプログラミングするために、全ての機能ユニットに共通する一般的な命令セットを使用する。命令セットは、命令シーケンシング(すなわち、次の命令フェッチのためのアドレスの算出方法)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する。
3.異なる機能ブロックを接続し、制御階層及びデータパイプラインを形成することによって、機能ブロックを階層式に制御する。
4.計算ブロックが、メモリへの中間バッファリングを伴うことなく到着データに対してより多くのステップの算術演算及び論理演算を実施することができるように、計算ブロックを、より多くのタイプのデータフロー及び動作に適合するように柔軟にする、又は、上記同時係属特許出願で教示されるように、データメモリに対して出入りするトラフィックを抑制する。
5.上記同時係属特許出願にあるように、プログラム可能性を最大にするために、複数のメモリブロック及び関連の論理をフルアクセススイッチを通して計算ブロックに接続する。
6.データ依存処理、木又はグラフのトラバーサルを扱うために、本明細書で後ほど説明される有限状態マシンとして、メモリ読み出し/書き込み回路系に論理を追加する。
分散型プログラムシーケンシング(上記の項目「1」)を採用する本発明の戦略の背景にある理由は、第1に、それぞれ特定の動作に焦点を当てた異なる複数の機能ブロック(例えば、データ計算のための実行ユニットや、特定のアドレッシングモードでデータを検索する及び書き込みしなおすためのメモリユニット)にプロセッサを分割すると、各ブロックを制御するためのハードウェアが少なくなることにある。ユーザプログラム又はサブルーチンにおいて各ブロックに必要とされる異なる動作モードの総数は、限られる。ユーザプログラム全体又は少なくとも幾つかのサブルーチンのための制御線は、更に、応分の量のローカルプログラム&制御ベクトルメモリに格納することができる。このアプローチは、更に、命令フローをデータフローから分離する。1つの機能ユニット内では、複数のデータセットが、そのブロック内で適切に処理される同じ命令シーケンスを繰り返し使用することができる。このような制御情報は、また、データパイプラインを横断する必要がなく、バッファリングリソース及びオンチップ帯域幅を節約する。
命令のシーケンシングとデータパスの制御とを分離する(上記の項目「2」)理由は、データパス内の様々なハードウェアブロックに合わせて制御ベクトルのサイズ及び定義の柔軟性を提供しつつ、単純化を図ることにある。ただし、同じ命令セットを、様々なハードウェアブロックに使用することが可能である。
上記の項目「3」については、階層式の制御、プログラム、及び命令によって、データタイプ及び制御交換要件が異なる様々なレベルでフローを管理することができる。
図1の機能ブロック命令シーケンシングの図に言及すると、発明は、柔軟なプログラミング方法、制御メカニズム、及びプロセッサアーキテクチャを提供し、ここでは、好ましくはパイプライン型アーキテクチャPSであるプロセッサP内のハードウェアリソースが、例えば上記同時係属出願に記載されるように、機能ブロック(例えば実行ユニット6、メモリユニット4、及びスイッチユニット5)に分割される。各機能ブロックは、「プログラムメモリ」と表示された自身のローカルプログラムメモリと、より完全な形で図2に示されるように、プログラムメモリから命令をフェッチしてデコードし、データパス内のハードウェアの機能性を制御する制御ベクトルをクロックサイクルごとに生成するための、表示通りのシーケンサとを有する。
図1及び図2に一般化されるような、本発明のための例示的な命令セット及び対応シーケンサ設計は、次の命令アドレス(条件分岐、飛び越しなど)と、データパスの3つの典型的な汎用動作モードとを明確に算出するための方法をコード化し、データパスのその他の全てのタイプの動作を間接的に可能にする。このような命令セット設計は、それぞれの制御ベクトルのコーディングのために異なるビット数を必要とする様々なハードウェアブロックを、同じ命令セットによってプログラムすることを可能にする。図2にあるように、次の命令アドレスの算出は、現命令のコーディングと、命令シーケンサに接続された条件信号とに依存する。
データパスの設定には、2つの間接的方法がある。
a.命令は、次のクロックサイクルのための制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるアドレスポインタを含む。制御ベクトル線のコンテンツは、一クロックサイクル内にデータパスの以下の3つの特徴を決定する。
i.データパス内のデータパイプライン部分を構成するための、異なるデータパス部分間の相互接続。
ii.データパスによって実施される特定の算術演算及び論理演算。
iii.命令シーケンサに引き渡すための、条件付き信号の選択。
b.このタイプの複数の命令をデータパス内のレジスタの更新に使用することができるように、レジスタアドレス又はレジスタコンテンツのいずれかを特定するフィールドを含む命令。
a.命令は、次のクロックサイクルのための制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるアドレスポインタを含む。制御ベクトル線のコンテンツは、一クロックサイクル内にデータパスの以下の3つの特徴を決定する。
i.データパス内のデータパイプライン部分を構成するための、異なるデータパス部分間の相互接続。
ii.データパスによって実施される特定の算術演算及び論理演算。
iii.命令シーケンサに引き渡すための、条件付き信号の選択。
b.このタイプの複数の命令をデータパス内のレジスタの更新に使用することができるように、レジスタアドレス又はレジスタコンテンツのいずれかを特定するフィールドを含む命令。
好ましい動作では、以下の3つの動作が明確にコード化される。
a.もし条件信号が真であるならば、データパス内のレジスタが新しい値に更新されないように、データパス動作を一時停止する。
b.一時停止を解除する。
c.データパスが、次のクロックサイクルのための自身の制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるポインタを生成する役割を担うように、図2にあるように、制御ベクトルアドレッシングモードをデータパス更新モードに設定する。(データパスは、このモードを解除する役割を担う。)
a.もし条件信号が真であるならば、データパス内のレジスタが新しい値に更新されないように、データパス動作を一時停止する。
b.一時停止を解除する。
c.データパスが、次のクロックサイクルのための自身の制御ベクトルをシーケンサ内部の専用メモリスペース内で検索するために使用されるポインタを生成する役割を担うように、図2にあるように、制御ベクトルアドレッシングモードをデータパス更新モードに設定する。(データパスは、このモードを解除する役割を担う。)
図1及び図2の機能ブロックの構成は、制御を目的として、親ブロックC(プロセッサ制御回路)及び補助ブロックすなわち「子」ブロック4、5、6などとして構成可能なものである。
親ブロック制御ユニットCは、補助ブロックすなわち子ブロック内の、自身に割り当てられたメモリスペース内へ、プログラム(通常はDMAを通す)及び制御ベクトルをバルク転送することを開始する。
発明は、好ましい実装形態では、親ブロックで開始して親ブロックで終わるとともにその各補助ブロックを通り抜ける図3のリングタイプのバスを使用する。このリングタイプのバスは、汎用レジスタ及びメモリ読み出し/書き込みプロトコルを通じて制御ユニットの親ブロックとその全ての補助ブロック4、5、6などとの間でメッセージの引き渡しを行うために使用される。例えば、これは、補助ブロック内で実行されるべきプログラムの次のモジュールの開始を指し示すようにプログラムカウンタレジスタを設定するために、制御ブロックCによって使用することができる。
もし所望であれば、特定のプログラムモジュールの実行が開始する厳密なクロックサイクルを制御するために、親制御ブロックCから補助ブロックへの随意の開始信号セットが使用されてもよく、また、親制御ブロックからの注意を求めるために、補助ブロックから親ブロックへ戻される随意の割り込み信号セットも提供されてよい。例えば、補助ブロックは、それがプログラムモジュールの実行を完了したことを示すために信号を起こすことができる。
サプライヤとコンシューマとの関係にある、制御を目的としたデータパイプラインに沿った機能ブロックの構成が、図4に例示される。
コンシューマからサプライヤに送信されたデータが有効であること、及びゆえにコンシューマにおける処理が開始してよいことを示すために、サプライヤからコンシューマへは「有効」信号がある。
コンシューマが新しいデータを受け入れられないことを示すために、コンシューマからサプライヤへは「保留」信号がある。サプライヤは、すると、その動作を一時停止し、保留信号が解除されその時点で動作が再開されるまで、データパス内のレジスタ値を保留する。「有効」信号及び「保留」信号は、制御ベクトルによって直接的に、又はデータパス内の論理回路によって、セットアップすることができる。
本発明では、上記の発明プロセッサ設計の場合にターゲットデータ処理プログラムを命令シーケンスにマッピングする方法は、以下のステップを伴う。
a.データ処理プログラム全体を、異なるデータ処理モジュールに分割する。各モジュールは、上述のように、プロセッサ内の1つ又は複数の機能ブロックによって構成されたデータパイプラインによって扱うことができる。異なるデータ処理モジュールは、異なる時間枠において、又は別々のハードウェアブロック上において間に適切な接続を伴って、実行することができる。
b.一処理モジュールに対応する各データパイプラインは、データパイプラインに沿って各機能ブロックに1つずつの、1つ又は複数の命令シーケンスによって構成される。
i.命令シーケンスは、開始信号又は有効信号のためのスピン待機から開始する。命令シーケンスは、割り込み、又はその親ブロックへのメッセージ書き込みによって終了する。
ii.命令シーケンスは、通常、ループを含み、そのフープカウントは、ループ内部の命令シーケンスにしたがって機能ブロック内部のデータパイプライン部分を横断するデータセットの数を示す(すなわち、バッチ処理)。
iii.命令シーケンスは、図4に記載されるように、「有効」信号及び「保留」の適切なセットアップを可能にする。
c.1つの処理モジュールから次の処理モジュールへの時間枠での進行に対する制御は、全てのデータパイプラインを構成するために使用される全ての機能ブロックについて、親ブロック内すなわち制御ブロックC内の命令シーケンスを通じて達成される。
a.データ処理プログラム全体を、異なるデータ処理モジュールに分割する。各モジュールは、上述のように、プロセッサ内の1つ又は複数の機能ブロックによって構成されたデータパイプラインによって扱うことができる。異なるデータ処理モジュールは、異なる時間枠において、又は別々のハードウェアブロック上において間に適切な接続を伴って、実行することができる。
b.一処理モジュールに対応する各データパイプラインは、データパイプラインに沿って各機能ブロックに1つずつの、1つ又は複数の命令シーケンスによって構成される。
i.命令シーケンスは、開始信号又は有効信号のためのスピン待機から開始する。命令シーケンスは、割り込み、又はその親ブロックへのメッセージ書き込みによって終了する。
ii.命令シーケンスは、通常、ループを含み、そのフープカウントは、ループ内部の命令シーケンスにしたがって機能ブロック内部のデータパイプライン部分を横断するデータセットの数を示す(すなわち、バッチ処理)。
iii.命令シーケンスは、図4に記載されるように、「有効」信号及び「保留」の適切なセットアップを可能にする。
c.1つの処理モジュールから次の処理モジュールへの時間枠での進行に対する制御は、全てのデータパイプラインを構成するために使用される全ての機能ブロックについて、親ブロック内すなわち制御ブロックC内の命令シーケンスを通じて達成される。
各データ処理モジュールに対して、
i.命令シーケンスは、そのデータ処理モジュールに使用される機能ブロックが実行の開始に適した状態にあることを保証する。
ii.命令シーケンスは、データパイプラインの開始時にそれらの機能ブロックに開始信号を送信する。(通常はメモリユニット。)
iii.現処理モジュールのためのデータパイプラインの実行中に、命令シーケンスは、次の処理モジュールの準備をするために、プログラム(すなわち命令シーケンスと制御ベクトル)及びデータを、それらの対応するメモリスペースにバルクロードすること及びそれらの対応するメモリスペースからバルクアンロードすることを開始する(ハードウェアの可用性及び必要性を前提とする)。
[注1:特定のユーザプログラムの場合、プログラム全体のための命令シーケンスは全て、分散型プログラムメモリスペースにうまく入ることができるので、それらは、起動時にロードすることができる。 注2:前モジュールの結果に対して動作するデータ処理の場合、データは、アンロードされることなく単にそのまま留まることができる。 注3:このタイプのキャッシュリロードは、更には、投機的ではなく決定論的である。]
iv.命令シーケンスは、パイプラインの終わりにある機能ブロックからの割り込み又はメッセージを待つ。(再び、通常はメモリユニット。)
i.命令シーケンスは、そのデータ処理モジュールに使用される機能ブロックが実行の開始に適した状態にあることを保証する。
ii.命令シーケンスは、データパイプラインの開始時にそれらの機能ブロックに開始信号を送信する。(通常はメモリユニット。)
iii.現処理モジュールのためのデータパイプラインの実行中に、命令シーケンスは、次の処理モジュールの準備をするために、プログラム(すなわち命令シーケンスと制御ベクトル)及びデータを、それらの対応するメモリスペースにバルクロードすること及びそれらの対応するメモリスペースからバルクアンロードすることを開始する(ハードウェアの可用性及び必要性を前提とする)。
[注1:特定のユーザプログラムの場合、プログラム全体のための命令シーケンスは全て、分散型プログラムメモリスペースにうまく入ることができるので、それらは、起動時にロードすることができる。 注2:前モジュールの結果に対して動作するデータ処理の場合、データは、アンロードされることなく単にそのまま留まることができる。 注3:このタイプのキャッシュリロードは、更には、投機的ではなく決定論的である。]
iv.命令シーケンスは、パイプラインの終わりにある機能ブロックからの割り込み又はメッセージを待つ。(再び、通常はメモリユニット。)
次に、発明によってプログラマブルプロセッサについて一般的に提供される改善点から離れ、上記同時係属特許出願及び本発明の柔軟なプロセッサのための好ましいメモリユニットアーキテクチャについて検討する。
発明による、改善されたメモリユニット構成、アーキテクチャ、及びデータフロー
上記同時係属特許出願のプログラマブルパイプラインアーキテクチャに適した好ましいメモリユニット設計では、ソフトウェアアルゴリズム及び動作の高速実行を支援するために、共通のハードウェア構造が使用される。発明の好ましいプロセッサ設計は、異なる独立した計算ブロックのための、独立したデータメモリストレージとして動作するように、又は相互に接続された計算ブロックのための、適切なアドレッシングモード(例えば二次元アドレッシング、回転アドレッシングなど)を伴う統合データメモリストレージを提供するべく同期的に動作するように、プログラムすることができる、複数のメモリユニットを含む。現発明によるプログラマブルプロセッサ内部のメモリユニットの構成が図5に示され、一メモリユニットのデータパスが図6に示される。
上記同時係属特許出願のプログラマブルパイプラインアーキテクチャに適した好ましいメモリユニット設計では、ソフトウェアアルゴリズム及び動作の高速実行を支援するために、共通のハードウェア構造が使用される。発明の好ましいプロセッサ設計は、異なる独立した計算ブロックのための、独立したデータメモリストレージとして動作するように、又は相互に接続された計算ブロックのための、適切なアドレッシングモード(例えば二次元アドレッシング、回転アドレッシングなど)を伴う統合データメモリストレージを提供するべく同期的に動作するように、プログラムすることができる、複数のメモリユニットを含む。現発明によるプログラマブルプロセッサ内部のメモリユニットの構成が図5に示され、一メモリユニットのデータパスが図6に示される。
図5では、メモリユニットのデータパスは、図5及び図6における(「バンク0」及び「バンク1」として表示された)2つのデュアルポートメモリバンク、図6における表示通りの2つの読み出し側インターフェース、2つの書き込み側インターフェース、及びデータ&ステータス交換(DSE)を含むものとして示される。2つの読み出し側インターフェースは、異なる機能性を有する。2つの書き込み側インターフェースも、異なる機能性を有する。どの書き込み側インターフェースがどのメモリバンクに接続され、どの読み出し側インターフェースがどのメモリバンクに接続されるかは、プログラム可能である。ハードウェアは、階層型データパイプラインのセットアップを可能にする。上側の階層では、DSEは、2つのメモリバンクの読み出しインターフェース間及び書き込みインターフェース間における、データ及びステータスの交換をセットアップする。下側の階層では、各読み出しインターフェース又は各書き込みインターフェースが、インターフェースユニット内における特定の処理のために特定のデータパイプラインをセットアップする。
発明は、同じメモリバンク内又は2つのメモリバンク間における、異なる動作のための同期読み出し、同期書き込み、又は同期読み出し及び書き込みを可能にする。
発明は、また、データパイプライン動作の一環として、スイッチユニット5から適切なメモリバンクへのデータの送受信を行うこと、及びそれと同時に、外部メモリへのデータのバルク転送のためにDMAから適切なメモリバンクへのデータの送受信を行うこと可能にする。(実際、これは、次のタスク又はプログラムモジュールの準備をするために、前述の決定論的キャッシュロード及びアンロードによって動作するように意図される。)
図6の読み出し側インターフェースは、図7における表示通り、ALUと、データマスク&選択ブロックと、ルックアップテーブルを伴うようにプログラム可能な小ランダムアクセスメモリ(RAM)とで構成される。データマスク&選択ブロックは、データワード内の特定のビットにマスクをかける、又はデータワード内のサブワードを選択して通過させることができる。RAMは、ルックアップテーブルを伴うようにプログラム可能であり、該ルックアップテーブルでは、この機能ユニットのための制御ベクトルメモリをアドレス指定するためのアドレスポインタである一コンテンツラインを検索するために入力アドレスを使用することができる。RAMは、異なるソース(例えば、処理されているデータの一部、又はデータパス内のステータス)からのアドレス入力を受け取るように設定することができる。
図6の書き込み側インターフェースは、図8において、ALUと、データ結合器ブロックとで構成されるものとして示される。データ結合器は、2つのデータワードからの2つのサブワードをまとめて新しいデータワードを形成することができる。
読み出し側インターフェース及び書き込み側インターフェースは、メモリ読み出し及び書き込みのための異なるアドレス計算モードを可能にする。これらのインターフェースは、また、読み出し動作後の読み出しデータの処理及び書き込み動作前の書き込みデータの処理も可能にする。
また、これらは、発明にしたがって、有限状態マシン(FSM)として動作するようにメモリユニットをプログラムするために必要なハードウェアを提供する。このようなマシンは、例えば、既知のミーリマシン又はムーアマシンの形態であってよい。このような動作では、
a.各メモリユニットでは、図9にあるように状態テーブルエントリを一方に、入力ビットストリームを他方に保持するために2つのメモリバンクが使用される。
b.各状態テーブルエントリは、2つのフィールド:
i.RAM内にプログラムされたルックアップテーブルを通じてこの状態に対応する制御ベクトルにインデックスを付けるために使用されるタグフィールドTGと、
ii.次の状態エントリの読み出しアドレスを計算するために入力ストリームと併せて使用されるベースアドレスフィールドBAと、
で構成される。
c.一方のメモリバンク内の状態テーブルエントリと、他方のメモリバンク内の入力ビットストリームとを読み出すために、2つの読み出し側インターフェースは、同期的に使用される。入力ビットストリームは、状態テーブルエントリを読み出す役割を担う読み出し側インターフェースに送信され、そのレジスタファイル内にバッファリングされる。
d.メモリユニットのための制御ベクトルアドレッシングモードは、データパス更新モードに設定され、これは、データパスが次のサイクルのために自身の制御ベクトルを選択することを可能にする。
e.各状態エントリ読み出しについて、データマスク&選択ブロックは、そのテーブルエントリを2つのフィールドTGとBAとに分解する。
f.タグTGは、RAM内にプログラムされたルックアップテーブル(図7において1として示される)を通じて制御ベクトルにインデックスを付ける。制御ベクトルは、
i.入力ストリームから適切な数のビットを検索するように、
ii.BAフィールドと、検索された入力ビットとに基づいて、次の状態エントリのための読み出しアドレスを計算するように、
iii.現状態のための行動を起こす又は出力を生成するように、
データパスを設定する。
g.もしf.で説明された3つの動作を完了するために、複数のクロックサイクルがかかるならば、図7のルックアップテーブル1は、TGがインデックスを付ける制御ベクトルによって自身の出力(図7のB)をバッファリングするレジスタからのアドレス入力を受け取るように設定することができる。ルックアップテーブルは、すると、データマスク&選択ブロックの出力からのアドレス(図7のA)を再び受け取るようにルックアップテーブルが最後の制御ベクトルによって設定されるまで、幾つかの制御ベクトルにインデックスを付けるために使用することができる。
a.各メモリユニットでは、図9にあるように状態テーブルエントリを一方に、入力ビットストリームを他方に保持するために2つのメモリバンクが使用される。
b.各状態テーブルエントリは、2つのフィールド:
i.RAM内にプログラムされたルックアップテーブルを通じてこの状態に対応する制御ベクトルにインデックスを付けるために使用されるタグフィールドTGと、
ii.次の状態エントリの読み出しアドレスを計算するために入力ストリームと併せて使用されるベースアドレスフィールドBAと、
で構成される。
c.一方のメモリバンク内の状態テーブルエントリと、他方のメモリバンク内の入力ビットストリームとを読み出すために、2つの読み出し側インターフェースは、同期的に使用される。入力ビットストリームは、状態テーブルエントリを読み出す役割を担う読み出し側インターフェースに送信され、そのレジスタファイル内にバッファリングされる。
d.メモリユニットのための制御ベクトルアドレッシングモードは、データパス更新モードに設定され、これは、データパスが次のサイクルのために自身の制御ベクトルを選択することを可能にする。
e.各状態エントリ読み出しについて、データマスク&選択ブロックは、そのテーブルエントリを2つのフィールドTGとBAとに分解する。
f.タグTGは、RAM内にプログラムされたルックアップテーブル(図7において1として示される)を通じて制御ベクトルにインデックスを付ける。制御ベクトルは、
i.入力ストリームから適切な数のビットを検索するように、
ii.BAフィールドと、検索された入力ビットとに基づいて、次の状態エントリのための読み出しアドレスを計算するように、
iii.現状態のための行動を起こす又は出力を生成するように、
データパスを設定する。
g.もしf.で説明された3つの動作を完了するために、複数のクロックサイクルがかかるならば、図7のルックアップテーブル1は、TGがインデックスを付ける制御ベクトルによって自身の出力(図7のB)をバッファリングするレジスタからのアドレス入力を受け取るように設定することができる。ルックアップテーブルは、すると、データマスク&選択ブロックの出力からのアドレス(図7のA)を再び受け取るようにルックアップテーブルが最後の制御ベクトルによって設定されるまで、幾つかの制御ベクトルにインデックスを付けるために使用することができる。
当業者ならば、更なる変更形態に想到すると考えられ、このような変更形態は、添付の特許請求の範囲に定められた発明の趣旨及び範囲に入ると見なされる。
Claims (39)
- 複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのフルアクセススイッチユニット、及び制御ユニットを有するプロセッサを用いる、クロックサイクルに同期した柔軟なプログラマブルデータ処理の方法であって、
異なる機能ユニットを接続し、所定の制御パス及びデータパイプラインを階層式に形成することと、
共通の命令セットを使用して、全ての機能ユニットをプログラムすることと、命令セットは、命令シーケンシング(すなわち、次の命令フェッチのためのアドレスの算出)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化し、
各々が自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する機能ユニットを用いて分散型のプログラムシーケンシングをセットアップすることと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成することと、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定し、複数のメモリユニットを、プログラム可能性を最大にするために前記スイッチユニットを通じて機能計算ユニットに接続することと、
を備える方法。 - 請求項1に記載の方法であって、
データ処理プログラムが生成され、該データ処理プログラム全体は、異なるデータ処理モジュールに分割され、それぞれ、プロセッサ内の1つ又は複数の前記機能ユニットによって構成されたデータパイプラインによって扱われ、各データパイプラインは、データパイプラインに沿って各機能ユニットに1つずつの、1つ又は複数のクロックサイクル同期した命令シーケンスによって構成される、方法。 - 請求項2に記載の方法であって、
異なるデータ処理モジュールは、(a)1つのモジュールから次のモジュールへの進行のために使用されるブロック間の接続を伴って、異なるハードウェアブロック上にマッピングされ、(b)モジュール進行の順序で異なる時間枠上にモジュール実行を多重化して、同じハードウェアブロック上にマッピングされ、及び(c)(a)と(b)との両方の組み合わせで、マッピングされ得る、方法。 - 請求項3に記載の方法であって、
1つのデータ処理モジュールから次のデータ処理モジュールへの時間枠での進行の制御及び同期化は、データパイプラインを構成するために使用される全ての機能ユニットについて、親制御ユニット内の命令シーケンスを通じて達成される、方法。 - 請求項1に記載の方法であって、
プロセッサのハードウェアは、1つ又は複数のデータパイプラインとして動的に構成される、方法。 - 請求項5に記載の方法であって、
各データパイプラインは、データパイプライン全体が一レベルずつ構成されるように、先ず異なる親ユニット間に確立され、次いで一つの親ユニットの補助ユニット間に確立されるデータフローを伴う、階層型構造を用いる、方法。 - 請求項1に記載の方法であって、
プロセッサ内の機能ユニットは、対応する補助ユニットとの間で制御及び同期メッセージ及び信号のみを交換する親制御ユニットが提供される制御階層として動的に構成される、方法。 - 請求項1に記載の方法であって、
データ処理は、異種ハードウェアブロック内における命令シーケンスの並列実行によって実施することができる、方法。 - 請求項1に記載の方法であって、
機能計算ユニットは、メモリへのバッファリングを排除するために及びデータメモリに出入りするトラフィックを軽減するために、データパイプライン内において異なるタイプのデータフロー並びに算術及び論理演算シーケンスを可能にするように、柔軟に配置される、方法。 - 請求項1に記載の方法であって、
それぞれの制御コーディングのために異なるビット数を必要とする様々な機能ハードウェアブロックをプログラムするために、同じ命令セットが使用される、方法。 - 請求項10に記載の方法であって、
命令セットは、命令シーケンシング(すなわち次の命令フェッチのためのアドレスの計算)の直接的コーディング、ハードウェア制御のサブセットの直接的コーディング、並びに制御ベクトルメモリへのアドレスポインタ又はレジスタ読み出し及び書き込みコマンドのいずれかを通じたハードウェア制御の間接的コーディングを可能にする命令フォーマットを用いる、方法。 - 請求項11に記載の方法であって、
命令内にコード化されたハードウェア制御は、特定のハードウェア構成を形成するためにブロック内のサブブロックの構成及びサブブロック間の相互接続を特定する、方法。 - 請求項1に記載の方法であって、
メモリユニットは、2つのデュアルポートメモリバンクを含み、各メモリバンクは、データパイプライン構成の一部として、あるいは、データのバルクロード及びバルクアンロードのために外部メモリとのインターフェースとして切り替えることができる、方法。 - 請求項13に記載の方法であって、
2つのメモリバンクはそれぞれ、異なる機能性を持つ2つの読み出し側インターフェースのいずれか及び異なる機能性を持つ2つの書き込み側インターフェースのいずれか、に接続するように、命令によってプログラムされる、方法。 - 請求項14に記載の方法であって、
4つのインターフェースはそれぞれ、各インターフェースに固有の機能性のセットをサポートする演算ユニットと、異なるモードのメモリアドレス計算又は単純なデータ処理を可能にするためのその他の要素とを含む、方法。 - 請求項14に記載の方法であって、
各メモリユニットは、階層型データパイプラインを構成するために使用され、該構成することは、
2つのメモリバンクをサポートしている2つの読み出し側インターフェース及び2つの書き込み側インターフェースの間における、必要な調整及びタイミング合わせのために、これら4つのインターフェース間におけるデータ及びステータスの交換用にDSEをプログラムすることと、
4つのインターフェースのそれぞれを、そのインターフェース内にデータパイプラインを確立するようにプログラムすることと、演算ユニットは、データがメモリバンクに書き込まれる前又はデータがメモリバンクから読み出された後の単純なデータ処理のために使用することができること、
を含む、方法。 - 請求項1に記載の方法であって、
状態テーブルエントリを保持するために前記メモリユニット内の一方のメモリバンクを、そして他方のメモリバンク内の入力データビットストリームに作用して1つの状態エントリから次の状態エントリへ横断するためにメモリユニットのための命令シーケンスを使用することよって、有限状態マシンが実装される、方法。 - 請求項7に記載の方法であって、
プロセッサの親制御ユニットと、それが制御する実行ユニット、スイッチユニット、及びメモリユニットを含む機能ユニットとの間に、リングタイプのバスが用いられる、方法。 - 複数の異なる機能計算ユニット、メモリユニット、それらを相互に接続するためのアクセススイッチユニット、及び制御ユニットを含むクロックサイクル同期した柔軟なプログラマブルデータプロセッサにおいて、
所定の制御パス及びデータパイプラインを階層式に形成するための、異なる機能ユニット間の接続と、
全ての機能ユニットをプログラムするための共通の命令セットであって、命令シーケンシング(すなわち次の命令フェッチのためのアドレスの算出)を直接的にコード化し、ハードウェアの制御を直接的に又は間接的にコード化する共通の命令セットと、
各々が自身のプログラムカウンタ、命令フェッチ及びデコードユニット、並びにプログラム格納のための自身のローカルメモリを有する各機能ユニットを伴う、分散型のプログラムシーケンサと、
このような機能ユニットのデータパスを制御する制御ベクトルを、クロックサイクルごとに生成するための手段と、
複数のメモリユニットを、異なるメモリアクセスモードで動作するように設定するための手段、及びそれらを、プログラム可能性を最大にするために前記スイッチユニットを通じて機能計算ユニットに接続するための手段と、
を組み合わせて備える装置。 - 請求項19に記載の装置であって、
データ処理プログラムが生成され、該データ処理プログラム全体は、異なるデータ処理モジュールに分割され、それぞれ、プロセッサ内の1つ又は複数の前記機能ユニットによって構成されたデータパイプラインによって扱われ、各データパイプラインは、データパイプラインに沿って各機能ユニットに1つずつの、1つ又は複数のクロックサイクル同期した命令シーケンスによって構成される、装置。 - 請求項20に記載の装置であって、
異なるデータ処理モジュールは、1つのモジュールから次のモジュールへの進行のために使用されるブロック間の接続を伴って、異なるハードウェアブロック上に、マッピングされ得る、装置。 - 請求項20に記載の装置であって、
異なるデータ処理モジュールは、モジュール進行の順序で異なる時間枠上にモジュール実行を多重化して、同じハードウェアブロック上に、マッピングされ得る、装置。 - 請求項21又は22に記載の装置であって、
1つのデータ処理モジュールから次のデータ処理モジュールへの時間枠での進行の制御及び同期化は、データパイプラインを構成するために使用される全ての機能ユニットについて、親制御ユニット内の命令シーケンスを通じて達成される、装置。 - 請求項19に記載の装置であって、
プロセッサのハードウェアは、1つ又は複数のデータパイプラインとして動的に構成される、装置。 - 請求項24に記載の装置であって、
各データパイプラインは、データパイプライン全体が一レベルずつ構成されるように、先ず異なる親ユニット間に確立され、次いで一つの親ユニットの補助ユニット間に確立される、データフローを伴う階層型構造を用いる、装置。 - 請求項19に記載の装置であって、
プロセッサ内の機能ユニットは、対応する補助ユニットとの間で制御及び同期メッセージ及び信号のみを交換する親制御ユニットを提供される制御階層として動的に構成される、装置。 - 請求項19に記載の装置であって、
データ処理は、異種ハードウェアブロック内における命令シーケンスの並列実行によって実施される、装置。 - 請求項19に記載の装置であって、
機能計算ユニットは、メモリへのバッファリングを排除するために及びデータメモリに出入りするトラフィックを軽減するために、データパイプライン内において異なるタイプのデータフロー並びに算術及び論理演算シーケンスを可能にするように、柔軟に用意される、装置。 - 請求項19に記載の装置であって、
それぞれの制御コーディングのために異なるビット数を必要とする様々な機能ハードウェアブロックをプログラムするために、同じ命令セットが使用される、装置。 - 請求項29に記載の装置であって、
命令セットは、命令シーケンシング(すなわち次の命令フェッチのためのアドレスの計算)の直接的コーディング、ハードウェア制御のサブセットの直接的コーディング、並びに制御ベクトルメモリへのアドレスポインタ又はレジスタ読み出し及び書き込みコマンドの一方を通じたハードウェア制御の間接的コーディングを可能にする命令フォーマットを用いる、装置。 - 請求項30に記載の装置であって、
命令内にコード化されたハードウェア制御は、特定のハードウェア構成を形成するためにブロック内のサブブロックの構成及びサブブロック間の相互接続を特定する、装置。 - 請求項19に記載の装置であって、
メモリユニットは、データパイプライン構成の一部として、あるいは、データのバルクロード及びバルクアンロードのために外部メモリのインターフェースとして切り替えることができる2つのデュアルポートメモリバンクを含む、装置。 - 請求項32に記載の装置であって、
2つのメモリバンクはそれぞれ、異なる機能性を持つ2つの読み出し側インターフェースのいずれか及び異なる機能性を持つ2つの書き込み側インターフェースのいずれか、に接続するように、命令によってプログラムすることができる、装置。 - 請求項33に記載の装置であって、
4つのインターフェースはそれぞれ、各インターフェースに固有の機能性のセットをサポートする演算ユニットと、異なるモードのメモリアドレス計算又は単純なデータ処理を可能にするためのその他の要素とを含む、装置。 - 請求項19に記載の装置であって、
各メモリユニットは、階層型データパイプラインを構成するために使用され、該階層型データパイプラインは、
2つのメモリバンクをサポートしている2つの読み出し側インターフェース及び2つの書き込み側インターフェースの間における、必要な調整及びタイミング合わせのために、これら4つのインターフェース間におけるデータ及びステータスの交換用にDSEをプログラムするための手段と、
各インターフェースを、そのインターフェース内にデータパイプラインを確立するようにプログラムするための手段と、演算ユニットは、データがメモリバンクに書き込まれる前又はデータがメモリバンクから読み出された後の単純なデータ処理のために使用することができることと、
を含む、装置。 - 請求項19に記載の装置であって、
状態テーブルエントリを保持するためにメモリユニット内の一方のメモリバンクを、そして他方のメモリバンク内の入力データビットストリームに作用して1つの状態エントリから次の状態エントリへ横断するためにメモリユニットのための命令シーケンスを使用することよって、有限状態マシンが実装される、装置。 - 請求項19に記載の装置であって、
プロセッサの親制御ユニットと、それが制御する実行ユニット、スイッチユニット、及びメモリユニットを含む機能ユニットとの間に、リングタイプのバスが用いられる、装置。 - 対応する異なる独立した計算機能ブロックのための、独立したデータメモリストレージユニットとして動作するように、又は相互に接続された計算機能ブロックに対して、適切な二次元アドレッシングモード及び回転アドレッシングモードを伴う統合メモリストレージを提供するべく同期的に動作するように、組織的にプログラムされる、複数のメモリユニットを組み合わせて有するプログラマブルデータプロセッサ。
- 請求項38に記載のプロセッサであって、
メモリストレージユニット及び独立した計算機能ブロックは、マトリックススイッチによって相互に接続可能である、プロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/156,007 US8181003B2 (en) | 2008-05-29 | 2008-05-29 | Instruction set design, control and communication in programmable microprocessor cores and the like |
US12/156,007 | 2008-05-29 | ||
PCT/IB2009/000131 WO2009144538A1 (en) | 2008-05-29 | 2009-01-26 | Method & apparatus for real-time data processing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011525008A true JP2011525008A (ja) | 2011-09-08 |
Family
ID=40668367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011511099A Pending JP2011525008A (ja) | 2008-05-29 | 2009-01-26 | リアルタイムデータ処理のための方法&装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8181003B2 (ja) |
EP (1) | EP2289003B1 (ja) |
JP (1) | JP2011525008A (ja) |
CN (1) | CN102144225A (ja) |
AU (1) | AU2009252885A1 (ja) |
CA (1) | CA2725130A1 (ja) |
TW (1) | TW200951809A (ja) |
WO (1) | WO2009144538A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022495A (ja) * | 2013-07-18 | 2015-02-02 | 日本電信電話株式会社 | ステートマシン回路 |
JP2020061728A (ja) * | 2018-08-13 | 2020-04-16 | アクシス アーベー | ビデオイメージ処理パイプラインのピーク電力消費を減らすコントローラ及び方法 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840914B1 (en) * | 2005-05-13 | 2010-11-23 | Massachusetts Institute Of Technology | Distributing computations in a parallel processing environment |
TWI424371B (zh) * | 2009-12-30 | 2014-01-21 | Altek Corp | Video processing device and processing method thereof |
CN102183921B (zh) * | 2011-03-01 | 2012-09-12 | 上海维宏电子科技股份有限公司 | 数控系统中实现限位自动释放功能的方法 |
WO2012124995A2 (en) * | 2011-03-15 | 2012-09-20 | Samsung Electronics Co., Ltd. | Method and system for maintaining vector clocks during synchronization for data race detection |
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN102393657B (zh) * | 2011-11-30 | 2014-11-05 | 洛阳正扬冶金技术股份有限公司 | 一种自动化控制系统的功能块化控制方法 |
US8739101B1 (en) * | 2012-11-21 | 2014-05-27 | Maxeler Technologies Ltd. | Systems and methods for reducing logic switching noise in parallel pipelined hardware |
US20150178078A1 (en) * | 2013-12-21 | 2015-06-25 | H. Peter Anvin | Instructions and logic to provide base register swap status verification functionality |
US9612840B2 (en) | 2014-03-28 | 2017-04-04 | Intel Corporation | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
US9582282B2 (en) * | 2014-07-17 | 2017-02-28 | Arm Limited | Prefetching using a prefetch lookup table identifying previously accessed cache lines |
US20170177542A1 (en) * | 2015-12-16 | 2017-06-22 | Cognitive Systems Corp. | Operating a VLIW Processor in a Wireless Sensor Device |
US10726034B2 (en) * | 2016-03-30 | 2020-07-28 | Microsoft Technology Licensing, Llc | Modular electronic data analysis computing system |
CN106155632A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种用于计算机最优定位数据处理中小码集的系统 |
WO2018036641A1 (en) * | 2016-08-26 | 2018-03-01 | Huawei Technologies Co., Ltd. | Device and method arranged for executing information processing on a data stream |
DE102017200456A1 (de) * | 2017-01-12 | 2018-07-12 | Robert Bosch Gmbh | Recheneinheit und Betriebsverfahren hierfür |
US11853244B2 (en) * | 2017-01-26 | 2023-12-26 | Wisconsin Alumni Research Foundation | Reconfigurable computer accelerator providing stream processor and dataflow processor |
US11144820B2 (en) | 2017-02-28 | 2021-10-12 | Microsoft Technology Licensing, Llc | Hardware node with position-dependent memories for neural network processing |
CN114238204B (zh) * | 2017-03-14 | 2023-01-06 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
US11151077B2 (en) | 2017-06-28 | 2021-10-19 | Wisconsin Alumni Research Foundation | Computer architecture with fixed program dataflow elements and stream processor |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
GB201717295D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
US11119768B2 (en) * | 2018-03-31 | 2021-09-14 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN108874730B (zh) * | 2018-06-14 | 2021-06-22 | 北京理工大学 | 一种数据处理器及数据处理方法 |
CN110647358B (zh) * | 2018-06-27 | 2021-11-23 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN110647357B (zh) * | 2018-06-27 | 2021-12-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
GB2577738B (en) * | 2018-10-05 | 2021-02-24 | Advanced Risc Mach Ltd | An apparatus and method for providing decoded instructions |
CN111090464B (zh) * | 2018-10-23 | 2023-09-22 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
CN110058882B (zh) * | 2019-03-14 | 2023-01-06 | 深圳市比昂芯科技有限公司 | 一种用于cnn加速的opu指令集定义方法 |
WO2020197964A1 (en) | 2019-03-26 | 2020-10-01 | Axis Semiconductor, Inc. | Computing device with circuit switched memory access |
CN114026543A (zh) * | 2019-08-22 | 2022-02-08 | 谷歌有限责任公司 | 传播延迟降低 |
CN111475205B (zh) * | 2020-03-02 | 2023-03-17 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
CN112463723A (zh) * | 2020-12-17 | 2021-03-09 | 王志平 | 一种微内核阵列的实现方法 |
CN113342269A (zh) * | 2021-05-31 | 2021-09-03 | 上海蓝色帛缔智能工程有限公司 | 基于云统计的多路数据存储的方法、装置、设备及介质 |
CN114883301B (zh) * | 2022-04-29 | 2023-03-21 | 西安电子科技大学 | 基于Chiplet的微系统可重构网络拓扑结构及实现方法 |
CN117111857B (zh) * | 2023-09-15 | 2024-05-07 | 上海合芯数字科技有限公司 | 读取数据信息的方法、装置、设备及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63240664A (ja) * | 1987-03-27 | 1988-10-06 | Masahiro Sowa | 高速処理計算機 |
JPH03211656A (ja) * | 1989-11-17 | 1991-09-17 | Texas Instr Inc <Ti> | マルチプロセッサシステム |
JPH07282237A (ja) * | 1994-04-11 | 1995-10-27 | Hitachi Ltd | 半導体集積回路 |
WO1997044728A1 (en) * | 1996-05-17 | 1997-11-27 | Advanced Micro Devices, Inc. | A processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
JP2004531149A (ja) * | 2001-05-02 | 2004-10-07 | インテル・コーポレーション | 再配置可能な論理環境で使用するための効率的な高性能データ動作エレメント |
JP2004362760A (ja) * | 2003-06-03 | 2004-12-24 | Samsung Electronics Co Ltd | マルチポートメモリ装置 |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
JP2006252440A (ja) * | 2005-03-14 | 2006-09-21 | Fujitsu Ltd | 再構成可能演算処理装置 |
US20060253689A1 (en) * | 2005-05-05 | 2006-11-09 | Icera Inc. | Apparatus and method for configurable processing |
US20070143577A1 (en) * | 2002-10-16 | 2007-06-21 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
JP2010541088A (ja) * | 2007-10-06 | 2010-12-24 | アクシス セミコンダクター インコーポレイテッド | リアルタイム信号処理のための方法及び装置 |
JP2011522317A (ja) * | 2008-05-29 | 2011-07-28 | アクシス・セミコンダクター・インコーポレーテッド | リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US5226125A (en) * | 1989-11-17 | 1993-07-06 | Keith Balmer | Switch matrix having integrated crosspoint logic and method of operation |
US5471626A (en) * | 1992-05-06 | 1995-11-28 | International Business Machines Corporation | Variable stage entry/exit instruction pipeline |
JP3546437B2 (ja) * | 1993-03-31 | 2004-07-28 | ソニー株式会社 | 適応形ビデオ信号演算処理装置 |
US5706459A (en) | 1994-01-06 | 1998-01-06 | Fujitsu Limited | Processor having a variable number of stages in a pipeline |
US5996083A (en) * | 1995-08-11 | 1999-11-30 | Hewlett-Packard Company | Microprocessor having software controllable power consumption |
US5784636A (en) | 1996-05-28 | 1998-07-21 | National Semiconductor Corporation | Reconfigurable computer architecture for use in signal processing applications |
US5937203A (en) | 1996-09-16 | 1999-08-10 | Advanced Micro Devices, Inc. | Port for fine tuning a central processing unit |
US5887160A (en) | 1996-12-10 | 1999-03-23 | Fujitsu Limited | Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US6085317A (en) | 1997-08-15 | 2000-07-04 | Altera Corporation | Reconfigurable computer architecture using programmable logic devices |
US6023753A (en) * | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
JP4156794B2 (ja) * | 1997-11-07 | 2008-09-24 | アルテラ コーポレイション | iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 |
US6173389B1 (en) * | 1997-12-04 | 2001-01-09 | Billions Of Operations Per Second, Inc. | Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
US6539438B1 (en) | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
JP2001169068A (ja) * | 1999-12-14 | 2001-06-22 | Ricoh Co Ltd | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6704857B2 (en) * | 1999-12-23 | 2004-03-09 | Pts Corporation | Methods and apparatus for loading a very long instruction word memory |
JP3922859B2 (ja) * | 1999-12-28 | 2007-05-30 | 株式会社リコー | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP1199629A1 (en) | 2000-10-17 | 2002-04-24 | STMicroelectronics S.r.l. | Processor architecture with variable-stage pipeline |
GB2370381B (en) | 2000-12-19 | 2003-12-24 | Picochip Designs Ltd | Processor architecture |
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
US6574764B2 (en) | 2001-04-25 | 2003-06-03 | Agilent Technologies, Inc. | Algorithmically programmable memory tester with history FIFO's that aid in error analysis and recovery |
US6859873B2 (en) | 2001-06-08 | 2005-02-22 | Infineon Technologies Ag | Variable length instruction pipeline |
US20030043848A1 (en) * | 2001-08-30 | 2003-03-06 | Sonksen Bradley Stephen | Method and apparatus for data item processing control |
US7200735B2 (en) | 2002-04-10 | 2007-04-03 | Tensilica, Inc. | High-performance hybrid processor with configurable execution units |
DE60219152D1 (de) * | 2002-07-19 | 2007-05-10 | St Microelectronics Srl | Eine mehrphasige synchrone Pipelinestruktur |
WO2004010320A2 (en) | 2002-07-23 | 2004-01-29 | Gatechance Technologies, Inc. | Pipelined reconfigurable dynamic instruciton set processor |
TW200504592A (en) | 2003-07-24 | 2005-02-01 | Ind Tech Res Inst | Reconfigurable apparatus with high hardware efficiency |
US20050289323A1 (en) * | 2004-05-19 | 2005-12-29 | Kar-Lik Wong | Barrel shifter for a microprocessor |
WO2006011232A1 (ja) | 2004-07-30 | 2006-02-02 | Fujitsu Limited | リコンフィギュラブル回路およびリコンフィギュラブル回路の制御方法 |
US7205864B2 (en) | 2004-11-02 | 2007-04-17 | Nextg Networks, Inc. | Distributed matrix switch |
US7395411B2 (en) | 2005-03-14 | 2008-07-01 | Sony Computer Entertainment Inc. | Methods and apparatus for improving processing performance by controlling latch points |
TWI259659B (en) | 2005-05-13 | 2006-08-01 | Ind Tech Res Inst | Pipelined datapath with dynamically reconfigurable pipeline stages |
US20060259742A1 (en) | 2005-05-16 | 2006-11-16 | Infineon Technologies North America Corp. | Controlling out of order execution pipelines using pipeline skew parameters |
US7454598B2 (en) | 2005-05-16 | 2008-11-18 | Infineon Technologies Ag | Controlling out of order execution pipelines issue tagging |
JP4861030B2 (ja) * | 2006-03-24 | 2012-01-25 | 株式会社東芝 | 半導体装置 |
US7519797B1 (en) * | 2006-11-02 | 2009-04-14 | Nividia Corporation | Hierarchical multi-precision pipeline counters |
-
2008
- 2008-05-29 US US12/156,007 patent/US8181003B2/en active Active
-
2009
- 2009-01-26 CN CN2009801307349A patent/CN102144225A/zh active Pending
- 2009-01-26 JP JP2011511099A patent/JP2011525008A/ja active Pending
- 2009-01-26 CA CA2725130A patent/CA2725130A1/en not_active Abandoned
- 2009-01-26 WO PCT/IB2009/000131 patent/WO2009144538A1/en active Application Filing
- 2009-01-26 AU AU2009252885A patent/AU2009252885A1/en not_active Abandoned
- 2009-01-26 EP EP09754166.8A patent/EP2289003B1/en not_active Not-in-force
- 2009-02-10 TW TW098104221A patent/TW200951809A/zh unknown
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63240664A (ja) * | 1987-03-27 | 1988-10-06 | Masahiro Sowa | 高速処理計算機 |
JPH03211656A (ja) * | 1989-11-17 | 1991-09-17 | Texas Instr Inc <Ti> | マルチプロセッサシステム |
JPH07282237A (ja) * | 1994-04-11 | 1995-10-27 | Hitachi Ltd | 半導体集積回路 |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
WO1997044728A1 (en) * | 1996-05-17 | 1997-11-27 | Advanced Micro Devices, Inc. | A processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field |
JP2004531149A (ja) * | 2001-05-02 | 2004-10-07 | インテル・コーポレーション | 再配置可能な論理環境で使用するための効率的な高性能データ動作エレメント |
US20070143577A1 (en) * | 2002-10-16 | 2007-06-21 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
JP2004362760A (ja) * | 2003-06-03 | 2004-12-24 | Samsung Electronics Co Ltd | マルチポートメモリ装置 |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
JP2006252440A (ja) * | 2005-03-14 | 2006-09-21 | Fujitsu Ltd | 再構成可能演算処理装置 |
US20060253689A1 (en) * | 2005-05-05 | 2006-11-09 | Icera Inc. | Apparatus and method for configurable processing |
JP2010541088A (ja) * | 2007-10-06 | 2010-12-24 | アクシス セミコンダクター インコーポレイテッド | リアルタイム信号処理のための方法及び装置 |
JP2011522317A (ja) * | 2008-05-29 | 2011-07-28 | アクシス・セミコンダクター・インコーポレーテッド | リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術 |
Non-Patent Citations (5)
Title |
---|
CSNG199901446002; 平田博章、外7名: '多重制御フロー機構を備えた資源共有型プロセッサ・アーキテクチャ' 情報処理学会研究報告 第92巻,第48号,(92-ARC-94), 19920612, Pages:9-16, 社団法人情報処理学会 * |
JPN6013034730; 平田博章、外7名: '多重制御フロー機構を備えた資源共有型プロセッサ・アーキテクチャ' 情報処理学会研究報告 第92巻,第48号,(92-ARC-94), 19920612, Pages:9-16, 社団法人情報処理学会 * |
JPN6013034731; Francisco Barat, Rudy Lauwereins, Geert Deconinck: 'Reconfigurable Instruction Set Processors from a Hardware/Software Perspective' IEEE TRANSACTIONS ON SOFTWARE ENGINEERING Vol:28, No:9, 200209, Pages:847-862, IEEE * |
JPN6013040034; HANS M. JACOBSON, GANESH GOPALAKRISHNAN: 'Application-Specific Programmable Control for High-Performance Asynchronous Circuits' Proceedings of the IEEE Vol:87, No:2, 199902, Pages:319-331, IEEE * |
JPN6013040035; Dev C. Chen, Jan M. Rabaey: 'A Reconfigurable Multiprocessor IC for Rapid Prototyping of Algorithmic-Specific High-Speed DSP Data' IEEE Journal of Solid-State Circuits Vol:27, No:12, 199212, Pages:1895-1904, IEEE * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022495A (ja) * | 2013-07-18 | 2015-02-02 | 日本電信電話株式会社 | ステートマシン回路 |
JP2020061728A (ja) * | 2018-08-13 | 2020-04-16 | アクシス アーベー | ビデオイメージ処理パイプラインのピーク電力消費を減らすコントローラ及び方法 |
JP7190403B2 (ja) | 2018-08-13 | 2022-12-15 | アクシス アーベー | ビデオイメージ処理パイプラインのピーク電力消費を減らすコントローラ及び方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2725130A1 (en) | 2009-12-03 |
US8181003B2 (en) | 2012-05-15 |
EP2289003A1 (en) | 2011-03-02 |
TW200951809A (en) | 2009-12-16 |
WO2009144538A1 (en) | 2009-12-03 |
US20090300337A1 (en) | 2009-12-03 |
AU2009252885A1 (en) | 2009-12-03 |
CN102144225A (zh) | 2011-08-03 |
EP2289003B1 (en) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011525008A (ja) | リアルタイムデータ処理のための方法&装置 | |
AU782238B2 (en) | Control program product and data processing system | |
US20210406027A1 (en) | Advanced processor architecture | |
KR100236525B1 (ko) | 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기 | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
JP2002533815A (ja) | 動的コンパクト命令を有するスケーラブル命令セットアーキテクチャのための方法及び装置 | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
JP4624098B2 (ja) | プロセッサのアドレス発生ユニット | |
US7139899B2 (en) | Selected register decode values for pipeline stage register addressing | |
US20210216454A1 (en) | Coupling wide memory interface to wide write back paths | |
JP3616556B2 (ja) | 拡張命令を処理する並列プロセッサ | |
US7143268B2 (en) | Circuit and method for instruction compression and dispersal in wide-issue processors | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
CN114691597A (zh) | 自适应远程原子操作 | |
JP5493837B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法 | |
JP4560705B2 (ja) | データ処理装置の制御方法 | |
KR20080069423A (ko) | 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조 | |
JP2004102988A (ja) | データ処理装置 | |
Chen et al. | Embedded Processor Design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130717 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130813 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140128 |