JP4338308B2 - 2次元またはそれ以上の次元のプログラミング可能なセル構造を備えたデータフロープロセッサおよびコンポーネントをデッドロックなくコンフィグレーションする方法 - Google Patents

2次元またはそれ以上の次元のプログラミング可能なセル構造を備えたデータフロープロセッサおよびコンポーネントをデッドロックなくコンフィグレーションする方法 Download PDF

Info

Publication number
JP4338308B2
JP4338308B2 JP2000533804A JP2000533804A JP4338308B2 JP 4338308 B2 JP4338308 B2 JP 4338308B2 JP 2000533804 A JP2000533804 A JP 2000533804A JP 2000533804 A JP2000533804 A JP 2000533804A JP 4338308 B2 JP4338308 B2 JP 4338308B2
Authority
JP
Japan
Prior art keywords
memory
configuration data
configuration
configurable
filmo
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
Application number
JP2000533804A
Other languages
English (en)
Other versions
JP2002505535A5 (ja
JP2002505535A (ja
Inventor
フォーバッハ マーティン
ミュンヒ ロベルト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PACT XPP Technologies AG
Original Assignee
PACT XPP Technologies AG
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 PACT XPP Technologies AG filed Critical PACT XPP Technologies AG
Publication of JP2002505535A publication Critical patent/JP2002505535A/ja
Publication of JP2002505535A5 publication Critical patent/JP2002505535A5/ja
Application granted granted Critical
Publication of JP4338308B2 publication Critical patent/JP4338308B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

【0001】
発明の背景
従来の技術
この出願が基礎とする従来技術は、特許出願 196 54 846.2-53 (2次元またはそれ以上の次元のプログラミング可能なセルマトリックス(FPGA,DPGA等)を備えたデータフロープロセッサ(DFP)およびコンポーネントの自立的ダイナミックリロード方法)、ならびに特許出願 196 54 593.5-53 (ランタイムにプログラミング可能なコンポーネントの再コンフィグレーション方法)に記載されている。そこにはDFPならびにFPGA、DPGAおよび従来技術による類似のコンポーネントをコンフィグレーションおよび再コンフィグレーションする方法について記述されており、それによれば別個に形成され中央で上位に位置するマイクロコントローラに似たコンポーネントが、下位に位置するかなりパッシブな制御ユニットの配分の役割を担っている。
【0002】
問題点
1つまたは複数のコンポーネントの各部分(たとえばセル(CEL))の再コンフィグレーションを制御する中央のグローバルなユニットを使用すると、数多くの様々な再コンフィグレーション要求を一度に処理しなければならないときに隘路となってしまう。既述のコンポーネントの並列性の長所は、上記のような中央ユニットによって制約されてしまう。なぜならばそれらは典型的な「ボトルネック」を成しており、データ処理がこれにより著しく緩慢になってしまう。さらに、ロードすべきコンフィグレーションへのイベントソースの割り当てが問題となる。それというのも、コンフィグレーションメモリの絶対アドレスで動作が行われるからである。したがって再コンフィグレーションユニットには一種のメモリ管理システムが含まれていなければならず、これはオペレーティングシステムの場合のように、どのメモリ領域がどのコンフィグレーションによって使われるのかをいっしょに記録する。さらに付加的な問題として、リソース(たとえばCEL)の管理が挙げられる。この場合、各CEL(セル)が正確に1度だけしか、リコンフィグレーション要求により始められたアルゴリズムしかも残りの周辺のCELも使用するアルゴリズムへ与えられないようにしておかなければならない。さもないとデッドロックの生じる可能性がある。
【0003】
再コンフィグレーションの問題点をもう一度はっきりとさせるため、以下の実例を挙げる。複数のCELから成る1つのマトリックスはコンフィグレーションされておらず、RESET状態にある。各CELは、それらが再コンフィグレーションされた状態にあるか否かを表すことができる。マトリックスにおけるすべてのCELはコンフィグレーションに対しスタンバイ状態にあり、つまり再コンフィグレーション可能な状態にある。第1のコンフィグレーションルーチン(KR1)がロードされ、その際、マトリックスは完全には使用されない。コンフィグレーションされたCELは、それがコンフィグレーション可能な状態にあるという合図を消す。まだコンフィグレーションされていないCELのグループに、第1のコンフィグレーションルーチンとは独立した第2のコンフィグレーションルーチン(KR2)がロードされる。この場合、第3のコンフィグレーションルーチンはロードできない。なぜならばこれらのセルは第1および/または第2のコンフィグレーションルーチンに必要とされ、それらは使われるためコンフィグレーション可能な状態にはないからである。必要とされるCELが開放されるまで、すなわちKR1とKR2が終了してしまうまで、KR3は停止されなければならない。KR1およびKR2の実行中、第4のコンフィグレーションルーチン(KR4)および第5のコンフィグレーションルーチン(KR5)に対するロード要求がさらに生じるけれども、それらをすべてただちに実行することはできない。なぜならばそれらは、KR1およびKR2により使われるCELを利用するからである。KR3とKR4は部分的に同じCELを使用するが、KR5はKR3およびKR4によるCELのいずれも使用しない。
【0004】
KR3からKR5を順序どおりにリドードするための要求は以下の通りである:
1.KR3からKR5を、ロード要求に従い時間的な順序ができるかぎり保持されるようロードすること。
【0005】
2.最大限の並列性を維持するため、互いに依存せずつまり共通のCELをもたないできるかぎり数多くのKRをロードすること。
【0006】
3.各KRが互いにブロックし合ってはならない。つまりKR3は部分的にロードされるが、他のCELが部分的にロードされたKR4にブロックされているので、それ以上はロードできない。他方、KR4もそれ以上はロードできない。それというのも、同様に必要とされるCELがKR3によりブロックされているからである。このことにより典型的なデッドロック状態が引き起こされる。
【0007】
4.KRを生成したコンパイラにとって、時間的に重なるKRの実行を識別し、コンフリクト状態を解消するのは不可能である。
【0008】
この場合、実現すべき回路にかかるコストと最適な結果との間の関係を、できるかぎり良好なものにしなければならない。つまり本発明の目的は、できるかぎりわずかなコストでフレキシブル、パラレルかつデッドロックのないコンフィグレーションを行うことができるようにし、時間的にも計算上も僅かな手間しかかけずにそれを実行できるようにすることである。この場合、以下の基本的な問題を解決しなければならない:
−K3だけしかロードしないのであれば、そのやり方によってもデッドロックは発生しないが、KR5もロード可能であろうことから、それは最適ではない。
【0009】
−KR3をロードし、KR4をロードしなければ、KR5はKR4を、それが後続のロードプロセスにあたり最高優先度をもつようあらかじめ記録しておかねばならず、このことは管理の手間が著しくかかることを意味する。
【0010】
デッドロックのない状態は、以下で述べる方法によって得られる:
本発明による改善、課題
本発明の基本的な課題は、階層構造をもち各レベルに何度も現れることのできるユニット(以下ではコンフィグレーションテーブルCTと称する)を構成することであり、その際にCTの個数を、最上位レベルにおいてちょうど1つのCTが存在するよう、最下位の階層段から最上位の階層段に向かって低減させる。各CTは他のパラレルなCTとは無関係に、コンフィグレーション可能な複数のエレメント(CEL)のコンフィグレーションおよびコントロールを行う。高い方の階層段におけるCTは、低い階層におかれたCTのためのコンフィグレーションルーチンを一時記憶することができる。低い階層におかれた複数のCTが同一のコンフィグレーションルーチンを必要とする場合、そのルーチンが高い階層におかれたCTにおいて一時記憶され、個々のCTから呼び出される。この場合、高い階層におかれたCTは該当するコンフィグレーションルーチンをグローバルな共通のコンフィグレーションメモリから1度呼び出すだけであり、これによってキャッシュ効果が達成される。コンフィグレーション可能なコンポーネントから離れて、マイクロプロセッサ、DFPあるいは複数の計算機構をもつ同等のものにおいて、命令キャッシュおよびデータキャッシュ用のキャッシュ方法として本発明を使用することができる。この場合、用途に応じて、以下で説明するユニットのうちのいくつか(たとえばFILMO)を省略できるが、階層構造については基本的に変更されない。したがってこの使用法はサブセットとみなされ、これについてはこれ以上詳しくは立ち入らない。ここで述べる方法が慣用のキャッシュ方法よりも著しく有利な点は、データおよび/またはコードが選択的に、つまり精密にアルゴリズムに合わせてチューニングされた方法に基づきキャッシュされることである。さらに本発明によれば、完全にデッドロックのない大きいセル構造の再コンフィグレーションを行えるようにもなる。
【0011】
本発明の説明
従来のように中央のグローバルなユニットを、すべてのコンフィグレーション要求を処理する1つのコンポーネントに統合する代わりに、本発明によればその役割を担うことができ階層構造(ツリー構造)で配置された複数のアクティブなユニットが設けられている。その際、最下位レベル(階層構造におけるリーフ)からの要求は、その要求を処理できなかったときだけ、1つ上の階層レベルへ転送される。これらのステップは最上位レベルに到達するまで、存在するすべてのレベルに対して繰り返される。最上位のレベルはさらに上位に位置する内部または外部のコンフィグレーションメモリとつながっており、これにはこのプログラム実行にいつか必要とされるコンフィグレーションデータが含まれている。
【0012】
コンフィグレーションユニットにおけるツリー構造によって、コンフィグレーションデータに対する一種のキャッシングが達成される。コンフィグレーションに対するアクセスは、主としてローカルで行われる。最も不利な状況として、該当するデータが階層構造で配置されたCTのいずれにも存在しない場合、上位に位置するコンフィグレーションメモリからコンフィグレーションをロードする必要がある。その際、ロードすべきコンフィグレーションについて固定的な時間順序を取り入れ、コンフィグレーションを1つのリストにまとめることによって、デッドロックが回避される。CELのステータス情報はロード前に保護され、これによりコンフィグレーションのリスト全体が使われている間、変更されずに保持される。
【0013】
CTの基礎
コンフィグレーションテーブル(CT)は、同期信号いわゆるトリガに対して応答するアクティブなユニットである。このトリガは、慣用の算術ユニットまたは論理ユニット、アドレス発生器、演算ユニット等のための複数の電子コンポーネント(以下ではコンフィグレーション可能なエレメントCELと称する)から成る2次元またはそれ以上の次元のマトリックスにより生成される。発生するトリガに基づき、CT内で所定のアクションが引き起こされる。この場合、CTの役割は、複数のCELの制御を引き継ぎ、それらの算術演算および/または論理演算を求めることである。殊に、CELをコンフィグレーションおよび再コンフィグレーションする必要がある。この役割をCTが担うが、これはそれぞれ複数の個々のコンフィグレーションワード(KW)から成る可能な複数のコンフィグレーションルーチン(KR)を管理し、複数のCELをトリガ条件に基づきKRのうちの1つまたは複数によってコンフィグレーションすることによって行われる。その際、CELには、それぞれコンフィグレーションワードの1つまたは複数が含まれており、これにはコンフィグレーションすべきCELのアドレスが設けられている。この場合、KRは完全かつ適正に複数のCELにコピーされなければならず、ここで複数のCELを、それぞれ異なるが完全に実行されるKRによりコンフィグレーションされるグループにまとめておくことができる。その際、すべてのCELはグループ内で次のように結線されている。すなわち、必要とされる再コンフィグレーションの確認後、グループ分けされたすべてのCELに対し共通の信号(ReConfig)により、各CELがデータ処理を終了し再コンフィグレーション可能な状態へ移行しなければならないことが通知されるよう、グループ内で結線されている。
【0014】
デッドロックのない再コンフィグレーションの基礎
ランタイムに再コンフィグレーション可能なシステムにおいて生じる問題点は、そのつど2つの部分が互いに待機し、したがってデッドロック状況の生じた状態にシステムが陥ってしまう可能性のあることである。
【0015】
このような問題点は、新しいコンフィグレーションをシステムに必ずまるごとロードするかまったくロードしないかだけにし、あるいは一種のタイムアウト手法を適用すれば回避できよう。とはいえこれにより一連の欠点(所要スペース、伝播時間等)や問題点が生じてしまう。たとえば、
−コンフィグレーションをロードできない場合の措置
−コンフィグレーションをロードする順序の管理
−場合によってはCELにロードすることができるかもしれない他のコンフィグレーションが留意されないため、パフォーマンスの落ち込み
などである。
【0016】
以下で説明する方法によれば、これらの問題点を除去することができる。これは従来技術によるDFPシステムから出発するものである。
【0017】
あるCELからトリガ信号がCTへ送られる。このCTはトリガのソースを突き止め、ルックアップテーブルによりロードすべきコンフィグレーション(KR)を選択する。到来するトリガ信号は阻止され、目下のコンフィグレーションが完全に処理されてしまうまで、他のいかなるトリガも受けつけない。1つのコンフィグレーションは複数の命令から成り、これは複数のCELの集合へ伝送される。しかし伝播時間にコンフィグレーション可能なシステムでは、いかなるコンフィグレーション命令(KW)も実行できるという保証がない。これはたとえば、アドレッシングされたコンフィグレーション可能なエレメント(CEL)がそのタスクを依然として終了せず、したがって新たなコンフィグレーションデータを受け取ることができないようなことになって失敗してしまうおそれがある。パフォーマンスの劣化を避ける目的で、(対応するCELが再コンフィグレーション可能な状態になくコンフィグレーションを拒否(REJECT)したため)実行できなかったすべてのコンフィグレーション命令が、FIFOに従い(以下で詳しく説明する)専用メモリ(FILMO)内に最後に存在するコンフィグレーション命令の後ろに書き込まれる。その後、次のコンフィグレーション命令が同じやり方で処理される。これは1つのコンフィグレーションの最後に到達するまで繰り返される。
【0018】
ついでCTは再び、場合によっては別のコンフィグレーションをロードできるようにするためトリガ信号を受けつける状態へ移行する。この状態でCTはFILMOをタイマ制御により規則的なインターバルで処理する。
【0019】
ロードすべきコンフィグレーションの優先順位づけは、本来ロードすべきコンフィグレーションが処理される前にCTがメモリFILMOを通過することにより行われる。FIFOに似たFILMOの構造により、先行のトリガ要求中に完全には処理できなかったKWが新たに処理すべきWKよりも高い優先順位を自動的にもつようにされる。メモリ(FILMO)の処理にあたり、コンフィグレーション命令によりアドレッシングされるコンフィグレーション可能な各エレメント(CEL)は、KWの送信前または送信中、状態「コンフィグレーション可能」にあるか否かについてテストされる。この状態「コンフィグレーション可能」(ACCEPT)にあれば、データが伝送され、メモリFILMOから消去される。状態「コンフィグレーション不可能」(REJECT)にあれば、データはFILMO内に残され、次のスキャン時に新たに処理される。CTはFILMO内の次のエントリを処理する。これはFILMOの最後に到達するまで繰り返される。その後、トリガ信号の発生によりアクティブにされた本来のコンフィグレーションが処理される。この場合、FILMOの構造はFIFO方式に対応し、つまり最も古いエントリが一番最初に処理される。新たなKRがロードされなくてもFILMOを処理する目的で、FILMOはタイマ制御により規則的なインターバルでスキャンされる。
【0020】
関与していないそれ以外のコンフィグレーション可能なエレメント(CEL)はこのフェーズ中、パラレルに処理され続け、それらの機能に作用が及ぼされない。これによりCTがFILMOを処理している間、1つまたは複数のコンフィグレーション可能なエレメント(CEL)が状態「コンフィグレーション可能」へ移行するような状況が起こり得る。CTはFILMO内における任意の個所で処理状態になる可能性があるため、以下のような状況の発生する可能性がある: CTは、アドレッシングされたコンフィグレーションすべきエレメント(CEL)が状態「コンフィグレーション可能」におかれていないような最初の命令の処理するよう試みる。これによりCTは次の命令(KW)を続行する。同じ時点で、1つまたは複数のコンフィグレーション可能なエレメントが状態「コンフィグレーション可能」に移行し、それには第1のコンフィグレーション命令により書き込まれたかもしれないコンフィグレーション可能なエレメントも含まれる。CTは第2のコンフィグレーション命令(KW)を処理し、これは第1のコンフィグレーション命令と同じであるが他のコンフィグレーションからのものであるコンフィグレーション可能なエレメント(CEL)を使用する。この時点で、コンフィグレーション可能なエレメント(CEL)は状態「コンフィグレーション可能」にあり、命令をうまく処理することができる。
【0021】
これにより、最初にロードすべきコンフィグレーションが実際にやはり最初に仕上げられる、という保証がもはやなくなる。この場合、部分的に完成した2つのコンフィグレーションの存在する可能性があり、それらは完全にロードできるようにするためにそれぞれ他方のコンフィグレーションのコンフィグレーション可能なエレメントを必要とする。ここでデッドロック状態が発生し、これは図18に示されている。この場合、コンフィグレーションAとコンフィグレーションBをコンフィグレーションしようとしている。CTは、コンフィグレーションAとコンフィグレーションBにおけるハッチングされた部分をすでにロードしている。コンフィグレーションAは完成のために、コンフィグレーションBのうち明るく二重にハッチングされた領域をさらに必要とし、コンフィグレーションBは完成のために、コンフィグレーションAのうち暗く二重にハッチングされた領域を必要とする。これら両方のコンフィグレーションはともにまだ完全には終わっておらず、したがって機能を果たす能力もないので、双方のコンフィグレーションのいずれについてもこれら2つのコンフィグレーションの一方が取り除かれるであろう終了状態には入らない。これらのコンフィグレーションは両方とも、まだ必要としているコンフィグレーション可能なエレメントが開放されるのを待っている。
【0022】
本発明による方法の場合、デッドロックは次のようにして回避される。すなわち、CTがFILMOの処理前にコンフィグレーション可能なすべてのエレメントの状態を捕捉し、それに従って事象が終了するまでいかなる変化ももはや許可せず、つまり発生する変化を無視するようにしている。換言すれば、コンフィグレーション可能なすべてのエレメントの状態がFILMOの処理前に保護され、あるいはFILMOの処理中、状態の変化が阻止される。1つの実現可能な技術的形態は、コンフィグレーション可能な各エレメントにおいて1つのレジスタを使用し、そのレジスタへFILMO処理前の状態を入れて保護することである。CTは捕捉された状態だけに基づき動作し、コンフィグレーション可能なエレメントの目下の状態によっては動作しない。これにより、処理すべき命令(KW)がコンフィグレーション可能なエレメント(CEL)の等しい状態を確実に見出せるようになる。このステップは、1つまたは複数のコンフィグレーション可能なエレメントがFILMOの処理中に状態「コンフィグレーション可能」へ移行することを排除していない。この変化はCTには処理中にすぐさまは見えず、次の実行開始になってようやく気がつくことになる。
【0023】
コンフィグレーションの順序
所定のアルゴリズムのコンフィグレーションのためにどうしても必要であるのは、KWをCELに書き込む順序を正確に守ることである。たとえば有用であるのは、CELをバスシステムへつなぐ前、まずはじめにバスシステムのコンフィグレーションを行うことであり、それによってCELが他のルーチンによって使われているバスと接続されることがなくなる。換言すれば、対応するバスコネクションのコンフィグレーションを事前に行うことができたときにだけ、CELのコンフィグレーションが行われる。
【0024】
本発明による方法の場合、固定的な順序の遵守は以下のようにして達成される:
後続のKWのコンフィグレーションにとって重要な構成をもつコンフィグレーションワード(KW)は、特別に表される(以下ではKWRと称する)。このようなKWRのコンフィグレーションが失敗すると、該当するコンフィグレーションルーチン(KR)内における後続のすべてのKWがFILMOに書き込まれ、この過程では実行されない。FILMOのスキャン時にも、順序がKWRの後方にありコンフィグレーションの失敗したすべてのKWは、目下の過程では実行されない。
【0025】
キャッシュ方法
CT構造は階層構造であって、つまり1つのコンポーネント内に複数のCTレベルが存在する。この配置構成は、有利には木構造(CTツリー)に対応する。この場合、ルートCT(Root−CT)は外部のコンフィグレーションメモリ(ECR)であり、これにはすべてのKRが対応づけられて格納されている一方、リーフにはコンフィグレーション可能なエレメント(CEL)が対応づけられており、これによって個々のKRが呼び出される。中間レベルのCTにはそれぞれコンフィグレーション可能なエレメントが対応づけられており、これらは同じ階層段階におかれている。各CTにはローカルな内部メモリが対応づけられている。このメモリは、新たに格納すべきKRのためにもはやスペースがないとき、あるいはそのことが特別なCT命令(REMOVE)によって明示的に要求されたとき、部分的に消去される。この場合、消去は、せいぜいのところもはや要求されないKRだけが、あるいはREMOVE命令によって明示的に表されたKRだけが消去されるよう、消去判定基準に従いKRごとに行われる。同様にKRは、新たにロードすべきKRをメモリに書き込むのにちょうど必要な数だけ、つまりそれにちょうど必要な個数のメモリが空きになるよう、1つ1つ消去される。これにより、キャッシュ効果の最適化のためできるかぎり多くのKRをメモリ内に残しておくことができる。
【0026】
このことの利点は、任意のCTxの下に配置された各CTつまりCTツリー内でずっと上に存在するCTは、CTx内には格納されていないKRを、外部のコンフィグレーションメモリECRから要求するのではなく、CTxからダイレクトに受け取ることである。これにより、複数のレベルにわたってキャッシュ構造が生じる。CTツリーにおけるデータ伝送の煩雑性殊にECRにおける所要メモリ帯域幅が著しく低減される。
【0027】
換言すれば各CTは、下に位置するCTのKRをバッファリングする。つまり、下の方に位置するCTは必要とするKRを上に位置するCTからダイレクトに受け取るのであって、外部のECRに対するメモリアクセスは不要である。必要とするKRが高い方に位置するCTのいずれにも存在していないときにだけ、ECRへのアクセスを介してKRをロードすればよい。これにより、KRのための格別効率的な階層キャッシュ構造が得られる。この構造に基づき実現可能な消去判定基準も得られるが、これは用途に応じて経験的に決められることになる。いくつかの可能性を挙げておく:
−最も古いエントリーの消去
−最も小さいエントリーの消去
−最も大きいエントリーの消去
−最も稀にしか呼び出されないエントリーの消去
CT階層構造の基礎
キャッシュ効果を達成するため、CTはツリー構造における1つの階層にまとめられる。個々のノード(CT)の間にバスシステム(Inter−CT−Bus)が存在し、これはそれぞれ上方のノード(CT)を複数の下位のノード(CT)と接続する。その際、下位のノード(CT)は上位のノード(CT)に対しデータを要求し、それに応じて上位のノードは下位のノードへデータを送る。下位のノードはステータス情報を互いに交換し、そのためにいっそう上位のノード間のネットワークが利用され、それらのネットワークはそれに応じてアドレスを分解する必要がある。
【0028】
CT階層構造およびアドレッシング
CT階層構造は、個々のCTのアドレッシングのためにバイナリツリーを利用できるように配置されている。つまり、最下位のアドレスビットはツリーの個々のリーフを表し、他の各アドレスビットはそれぞれ1つの階層レベルだけ上を選択するのである。したがって各CTは一義的なアドレスを有している。
【0029】
下記の表には、個々のアドレスビットが個々のレベルにどのように割り当てられているかが示されている。
【0030】
【表1】
Figure 0004338308
【0031】
* = 使用されるアドレスビット
- = 使用されないアドレスビット
複数のCTから成るグループに上位のCTを割り当てる場合、そのグループにおける複数のアドレスビットがそれに応じてまとめられる。
【0032】
次の表には、個々のアドレスビットが個々のレベルにどのように割り当てられているのかが示されており、その際、レベル0には8個のCTをもつグループが存在している(アドレスビット 2..0)
【0033】
【表2】
Figure 0004338308
【0034】
* = 使用されるアドレスビット
- = 使用されないアドレスビット
バイナリツリーの構造は1次元または多次元で行うことができ、これは各次元ごとに1つのバイナリツリーを形成することによって行われる。
【0035】
特定のCT(TARGET)がアドレッシングされ、これは開始させるCT(INITIATOT)が正確なターゲットアドレスを指示するか、あるいはTAGETが相対的にアドレッシングされる。
【0036】
次に、相対アドレスの評価について詳しく説明する:
2次元のアドレッシングのための相対アドレスフィールドの実例:
【0037】
【表3】
Figure 0004338308
【0038】
ビット15は、次に高い階層段のCTを選択すべきときにセットされる。また、ビット14はブロードキャストを表し、したがってすべてのCTを選択する。X/Yアドレスは、INITIATORのアドレスを出発点としたTARGETのアドレスを表している。
【0039】
アドレスは符号付きの "signed" 整数である。アドレスフィールドのY/Xアドレスを目下のアドレスポジションに加えることで、TARGETが求められる。各レベルは特定のアドレス幅(Addresswidth)をもっている。加算器はこの幅に対応している。
【0040】
加算においてオーバーフローやアンダーフローが生じたということは、アドレッシングされたCTが目下のノードよりも下には位置しておらず、アドレス要求がその上に位置するCT(次に高いノード)へ転送されることを意味する。オーバーフローやアンダーフローが発生しなければ、TARGETは目下のノードよりも下に位置している。目下のレベルで計算されたアドレスビット(表を参照)により、目下のノードのすぐ下に位置するCTが選択される。そこからそれぞれ相応に計算されたアドレスビットに基づき、次に低いCT(ノード)が選択される。
【0041】
CH階層構造におけるアクセスの優先順位づけ
内部CTバスへのアクセスはアービタによって管理される。この場合、下位のすべてのノードに対し等しい優先順位が与えられる。上位のノードはそれよりも高い優先順位をもっている。これにより、上位のノードから下位へ向かって伝送されるアクセス、あるいはINITIATORからすでにかなり進んだアクセスが、他のアクセスよりも優先される。
【0042】
CTの基本構造
CTについての以下の概要から、個々のコンポーネントに関する概観を得ることにする。以下では、各コンポーネントについて詳細に説明する。
【0043】
CTのコアはコントロールステートマシン(CTS)であって、これはコンフィグレーションルーチン(KR)のすべての処理を制御する。各CTにはガーベージコレクタ(GC)が配分されており、これはCTのメモリ(CTR)からのKRの除去を制御する。なお、FILMOはまだ処理すべきKWの管理を担い、LOADステートマシンはKRのロードを制御する。
【0044】
メモリ(CTR)は慣用の書き込み読み出しメモリとして構成されていて、その際、技術的に可能なすべてのインプリメンテーションを適用することができ、個々のCTおよびその下位におかれたCTに対するKRのローカルな記憶のために用いられる。特別な事例として、ASICやPLD(従来技術参照)に似た機能をコンポーネントに設ける目的で、メモリ(CTR)をROM、EPROM、EEPROM、フラッシュROM等として構成することができる。
【0045】
CTRアドレスを生成するため、ロード可能なカウンタとして構成された多数のポインタが使用される:
1.フリーポインタ(FP)。これはCTR内における最後のKRの後ろにある最初の空きメモリロケーションを指す。
【0046】
2.ガーベージポインタ(GP)。これはガーベージコレクタ(GC)によりCTRから除去すべきエントリを指す。
【0047】
3.ムーブポインタ(MP)。これが指すCTR内のメモリロケーションとは、除去すべきでない最終的なコンフィグレーションワード(KW)つまりKRのエントリが、その位置からGPによって規定されたエントリーへコピー/移動されるようなロケーションである。
【0048】
4.プログラムポイン(PP)。これは目下CTSにより実行されているKWを指す。
【0049】
KWは、出力インタフェース(OUT)を介して属するCELへ転送される。CELは、それがコンフィグレーション可能な状態にあるかぎり、KWの受領確認をする(ACCEPT)。KWが拒否された場合(REJECT)、あとになってプログラムポインタを利用することなく再度、アドレッシングされたCELへ書き込むため、FIFOに類似したメモリ(FILMO)内にそれが一時的にバッファリングされる。
【0050】
CTSは、KRを処理するための要求をトリガ信号により受け取る。このトリガ信号は、望ましくないトリガをフィルタリング除去(マスキング除去)するフィルタであるマスクを通過する。従来技術に従って、マスクをANDゲート(AND)におり構成することができ、このゲートによればトリガとイネーブル信号とがAND結合される。トリガは、優先順位の付けられたラウンドロビン・アービタ(Round-Robin-Arbiter, SCRR-ARB)を介してバイナリ信号に変換される。優先順位の付けられたラウンドロビン・アービタにより、ラウンドロビン・アービタの平等性の利点と、1つのクロック内における次のイネーブルの検出つまり優先順位アービタの利点とが合わせられる。
【0051】
マスキングされたトリガは、アドレスとして第1のルックアップテーブル(LUT1)へ供給され、このルックアップテーブルは、アドレスとして到来するトリガに対し該当するKRのIDを割り当てて、データラインへ送出する。第2のルックアップテーブル(LUT2)において、KRのIDがCTR内におけるKRのメモリロケーションのアドレスに割り当てられる。第2のルックアップテーブルはトリガ信号の割り当てに利用されるだけでなく、IDをパラメータとして用いる使われる命令のアドレス割り当てのためにも利用される。トリガ信号と該当するIDとの対応づけは、あとで説明する命令”REFERENCE”によりLUT1にエントリされる。LUT2の管理つまりIDとCTRにおけるアドレスとの対応づけは、CTSとGCにより自動的に行われる。
【0052】
CTの理解を深めるため、実現可能な基本命令セットについて以下に示す:
1.BEGIN<ID>
BEGIN<ID>により、コンフィグレーションルーチンの開始が表される。<ID>は、コンフィグレーションルーチンにおける一義的な識別番号を表す。
【0053】
2.STOP
STOPにより、コンフィグレーションルーチンの最後が表される。この位置において、コンフィグレーションテーブル(CT)はコンフィグレーションルーチンの処理を終了する。ガーベージコレクタ(GC)は、そのコンフィグレーションルーチンにおけるエントリの除去を終了する。
【0054】
3.EXECUTE<ID>
コンフィグレーションルーチンの最初(BEGIN<ID>)にジャンプする。このルーチンがCTのメモリ内に存在していなければ、その上に位置するCTに対しそれが要求され、ないしはメモリからロードされる。
【0055】
4.LOAD<ID>
KR<ID>をその上に位置するCTに対して要求する。
【0056】
5.REMOVE<ID>
GCを呼び出す。その目的は、コンフィグレーションルーチン<ID>をBEGIN<ID>からSTOPまでCTのメモリから除去し、除去されたコンフィグレーションルーチンによってもメモリの隙間が生じないようになるまで、後続のコンフィグレーションルーチンを前へ押し出すことである。
【0057】
6.PUSH<FORCED><ADDRESS><DATA><EXIT>
コンフィグレーションデータ<DATA>をレジスタ<ADDRESS>へ書き込む。<FORCED>がセットされていると、該当するターゲットレジスタのRECONFIGフラグがセットされていなくても、データが書き込まれる。<EXIT>は、REJECTのときに後続のKWRが引き続き実行されるのを中止するKWRであるこを表すために用いられる。
【0058】
7.MASK<SR><TRIGGER>
<SR>(Set/Reset)に依存して、トリガマスクを<TRIGGER>によりセットするか、あるいはそれを<TRIGGER>によりリセットする。
【0059】
8.WAIT<UNMASKED><TRIGGER>
コンフィグレーションルーチンの処理を停止し、トリガ<TRIGGER>を待つ。<UNMASKED>がセットされていれば、待っているトリガに対しトリガマスクの状態とは無関係に応答する。
【0060】
9.トリガ<TRIGGER><CT#>
トリガのバイナリ値を、CT#によりアドレッシングされた上位のCTへ送る。
【0061】
10.GETBUS/GETCTS
内部CTバスへのコネクションを確立する。
【0062】
11.LOOSEBUS/LOOSECTS
内部CTバスへのコネクションを解除する。
【0063】
12.REFERENCE<TRIGGER><ID>
アドレス<TRIGGER>においてLUT1へ値<ID>を書き込み、これによりトリガ信号に対し特定のKRが割り当てられる。
【0064】
命令 EXECUTE,LOAD,REMOVE,PUSH,MASK,WAIT,TRIGGER,REFERENCEは、BEGINと...STOPで括られた中でのみ有効である。この括りの外では命令は実行されない。
【0065】
コンフィグレーションルーチン(KR)の構造は以下のようになる:
BEGIN<ID>;
...
有効な命令
...
STOP;
間接アドレッシング(参照)
CTのキャッシュ原理によりCT内におけるKRのバッファリングが可能となり、ここでKRは下位に位置する異なる複数のCTまたはCELによって利用される。下位のユニットからコンポーネント(たとえばRAM、周辺装置)の外部インタフェースへのアクセスが行われる場合、外部インタフェースの種々のアドレスまたは一部分を記憶する必要がある。これにより基本的には、必要とされる個々のKRの内容が区別されることになろう。キャッシングはもはや不可能である。この場合、間接参照により対策が講じられる。この目的で専用のKR(以下ではIKRと称する)が用いられ、これは必要な外部パラメータをもっており、それをセットする。必要に応じトリガを介して、異なる階層レベルにおける他の異なるKRが呼び出される。IKRの最後から本来のKRが呼び出される。IKRだけはキャッシングできないが他方、呼び出されたKRはまったく一義的であり、そのためキャッシュ可能である。ここで有用であるのは、IKRのサイズを絶対的な最小値まで低減することであり、つまりもっぱら外部の異なるパラメータと本来のKRの呼び出しだけにすることである。
【0066】
間接的なコンフィグレーションルーチン(IKR)は以下のように構成されている:
BEGIN<ID>;
...
xxx; 有効な命令、この場合、外部の周辺装置だけを制御する
TRIGGER<ID>; 周辺プロセスに対するスタート、ストップまたはロード要求
...
GOTO<ID>; 本来のKRへのジャンプ
STOP;
特別な事例:
1.WAIT_FOR_BOOT
この命令は、CTRの最初のアドレスだけに有効である。ブートプロセス中、まずはじめに完全なブートKRがCTRに書き込まれるが、Boot−KR BEGIN<0>の開始シーケンスではない。その個所(アドレス1)にはWAIT_FOR_BOOTがあり、これはRESET時に自動的にセットされる。Boot−KR全体がCTRに書き込まれてからはじめて、WAIT_FOR_BOOTがBEGIN<0>によって上書きされ、CTSがBoot−KRの処理を始める。WAIT_FOR_BOOTはプログラム内に現れてはならない。
【0067】
2.BOOT<CT−ID>
BOOT<CT−ID>は、どのCTに後続のBoot−KRを書き込むべきであるかを表す。BOOT<CT−ID>後にはBEGINは続かず、Boot−KRはSTOPによってではなく、あとにくるBOOT<CT−ID>によって終了する。そしてSTOPによってブートプロセスが終了する。BOOT<CT−ID>はプログラム内に現れてはならない。
【0068】
ブートプロセス
RESET後、最上位の階層レベル(ROOT−CT)のCTはBoot−KRを下位の階層のCTにロードする。この目的で、ROOT−CTに対応づけられた外部のコンフィグレーションメモリ(ECR)内の定められたアドレス(BOOT−ADR)へのジャンプが存在する。ROOT−CTはこのジャンプを実行し、ブートシーケンスに到達する。これは以下のように構成されている:
BOOT<CT−ID0>; COMMAND; COMMAND; ...
BOOT<CT−ID1>; COMMAND; COMMAND; ...
...
BOOT<CT−IDn>; COMMAND; COMMAND; ...
STOP;
ブートプロセス中、まずはじめにBoot−KR全体が、<CT−ID>により表されたCTのアドレス2からCTR内に書き込まれる。Boot−KR(BEGIN<0>)の開始シーケンスは、アドレス1には書き込まれない。その個所にはWAIT_FOR_BOOTがあり、これはRESET時に自動的にセットされる。Boot−KR全体がCTRに書き込まれ、ROOT−CTが次のBOOT<CT−ID>に到達してはじめて、STOPがBoot−KRの終わりでCTRに書き込まれ、WAIT_FOR_BOOTがBEGIN<0>によって上書きされる。CTSはBoot−KRの処理を始める。
【0069】
コンフィグレーションルーチンのロード
Boot−KR外でコンフィグレーションルーチンを要求するために、3つの基本メカニズムが存在する。
【0070】
1.CTSによるLOAD<ID>の実行
2.CTSによるEXECUTE<ID>の実行、ここで該当するIDをもつKRはCTR内には存在していない。
【0071】
3.トリガの発生、これはLUT1を介して<ID>に変換され、それに属するKRはCTR内には存在していない。
【0072】
すべて3つの事例における進行は同じである:
要求されるKRのIDはLUT2へアドレスとして供給される。LUT2は、CTR内に有効なアドレスが存在するか否かについてチェックする。これが存在しなければ、つまりLUT2において<ID>が値0を指していれば、LOAD<ID>がCTSへ送られる。
【0073】
それに応じてCTSが、階層的に上位にあるCTにおいて<ID>に該当するKRを要求する。この要求はトリガ形式で上位のCTに到達し、それによって相応に評価される。上位のCTは要求されたKRを要求されたCTへ送信する。データは、FREE−POINTER(FP)の指すアドレスからCTRへ書き込まれ、その際、FPは書き込みアクセスごとに1だけ高められる。FPがCTRの上限に到達すると、ガーベージコレクタ(GC)が呼び出され、CTR内で最下位のKRが除去されてCTRが圧縮されるようになる。そのときFPが新たにセットされる。この過程は、ロードすべきKRが完全にCTRに納まるまで行われる。
【0074】
コンフィグレーションメモリにおけるジャンプテーブル
ROOT−CTに割り当てられたコンフィグレーションメモリには、アプリケーションのためにロードしなければならないKR全体が含まれている。外部のコンフィグレーションメモリ(ECR)には、定められたアドレス(ARD−BOOT)のところにブートコンフィグレーションルーチンへのジャンプがおかれている。任意であるがアプリケーション内部で固定的に定められた長さをもつ別の所定のメモリ領域(LUT−ECR)には、個々のKRへのジャンプがおかれている。この場合、個々のKRの<ID>はECR内のアドレスとして用いられ、そこには個々のKRの開始アドレスが存在する。これによりKRが間接的にアドレッシングされるのである:
ID −> LUT−ECT −> KR
コンフィグレーションメモリ内におけるKRの変更
ID<A>をもつKRは変更されることになる。まずはじめにHOSTはID<A>のための新たなKRを、ECR内の空きメモリロケーションへ書き込む。ID<A>は、上位のユニット(HOST)におけるコンフィグレーションメモリ内のKRの新たなアドレスといっしょに、そのために設けられたROOT−CTのレジスタに書き込まれる。ROOT−CTは、その下に位置するすべてのCTへ命令REMOVE<A>を送信する。それに応じてすべてのCTは、STOPに到達したときまたはIDLEサイクルの間すなわちKRが実行されなければただちに、そのIDに関連するKRをCTRから除去し、LUT2はアドレス<A>に”NoAdr”をセットする。つまりこのことは、LUT2内にID<A>に対する有効なアドレスエントリが存在しないことを意味する。ID<A>が再度要求されれば、欠けているエントリ(”NoAdr”)は強制的にLUT2への<A>ではなく、各CTはECRに対しKR<A>を新たに要求する。
【0075】
FILMO
KRは主として命令PUSHから成り、これは新たなコンフィグレーションワードを所定のアドレスに書き込む。アドレッシングされたコンフィグレーション可能なエレメント(CEL)が新たなコンフィグレーションを受け入れる準備が整っていないため(REJECT)、タイプKWのコンフィグレーションワードの書き込みが不可能であれば、コンフィグレーションワードはアドレッシングされたコンフィグレーション可能なエレメント(CEL)ではなく、以下ではFILMOと称するメモリへ書き込まれる。後続の命令は、再度コンフィグレーションワードを書き込むことができなくなるまで通常どおり処理され、できなくなればそのワードはFILMOへ書き込まれる。
【0076】
アドレッシングされたコンフィグレーション可能なエレメント(CEL)が新たなコンフィグレーションを受け入れる準備が整っていないため(REJECT)、タイプKWRのコンフィグレーションワードの書き込みが不可能であれば、コンフィグレーションワードはアドレッシングされたコンフィグレーション可能なエレメント(CEL)の代わりに、以下ではFILMOと称するメモリへ書き込まれる。KRが終了するまでの後続のすべての命令は、CELではなくFILMOへダイレクトに書き込まれる。
【0077】
FILMOは、IDLEサイクル中であって新たなKRがそのつど実行される前にスキャンされる。この場合、最も古いデータワードのところで始まり、従来技術によるFIFOに従い、読み出されたFIFOの各ワードがアドレッシングされたエレメントへ送られる。ここでアドレッシングされたエレメントはすでに、コンフィグレーションワードを受け取る準備ができていなければならない。データワードを最初から書き込むことができるかぎり(つまりアドレッシングされたコンフィグレーション可能なエレメント(CEL)がスタンバイ状態にあれば)、FIFOの形式でFILMOからエントリが除去される。コンフィグレーションワードを書き込むことができなければ、それはとばされてFILMOからは除去されない。FIFOとは異なり、とびこされたコンフィグレーション後のデータがさらに読み出される。とびこされたコンフィグレーションワードの後に書き込むことのできるコンフィグレーションワードは、FILMOの実装に従って以下のとおりとなる。すなわち、
1.書き込み済とマーキングされ、FILMOからは消去されない。ここで書き込み済とマーキングされたコンフィグレーションワードは、後続のスキャンにおいてはもはや読み出されず、あるいはとばされたコンフィグレーションワードがもはやその前に存在しなければ、ただちに消去される。
【0078】
あるいは、
2.FILMOから消去される。この場合、コンフィグレーションワードは消去されたコンフィグレーションワードの前と後ではそのまま得られ、ここで消去のため後続のワードが前方(上方)へ、あるいは先行のワードが後方(下方)へシフトされ、その際、コンフィグレーションワードの順序は強制的に維持される。
【0079】
新たなKRが実行されると、アドレッシングされたエレメント(CEL)へCTSにより書き込むことのできなかったコンフィグレーションワード(KW)が、新たにFILMOに付加され、つまりKWはFILMOの(読み出し方向で)最後に書き込まれる。FILMOがいっぱいになると、すなわちコンフィグレーション値のための空きエントリが存在しないと、KRの実行が停止される。FILMOは、十分にコンフィグレーションワードを書き込むことができ、それに応じて多数の空きエントリが発生するまでスキャンされ、その後、KRが引き続き処理される。FILMOはFIFOに似たメモリを成しており、これは常に最も古いエントリから直線的にスキャンされる。しかしFIFOとは異なり、エントリがとばされる(First In Linear Multiple Out)。
【0080】
コンフィグレーションテーブル−ステートマシン(CTS)の機能
コンフィグレーションテーブル・ステートマシン(CTS)はCTの制御の役割を担う。これはKRの命令を実行し、到来するトリガに対し応答する。そしてこれはFILMOの管理の役割を担い、殊にアイドルサイクル中、KRの実行前にそれを読み出す。これはLUT構造により生成された信号illegal<TRG>(Illegalトリガ、図1の0102参照)とload<ID>に対して応答する。load<ID>は、LUT2においてキャッシュミスが生じたとき(0105)、あるいはIDにより参照されるKR/IKRが消去済とマーキングされていたとき(0107)に生成される。これは上位のCTの制御信号に対して応答する。図2〜図7には、命令処理のためのインプリメンテーションの実例が描かれている。
【0081】
上位のCTへの制御信号
−illegal<TRG>(0102)
上位のCTは、未知のトリガ<TRG>が発生していることを指示する。
【0082】
−load<ID>(0105/0107)
上位のCTに対し<ID>のロードを要求
−trigger<TRG><CT#>(0108)
トリガ<TRG>を上位のCTまたはアドレッシングされたCT<CT#>に送信
上位のCTの制御信号
−remove<ID>(図15,1513参照)
CTに対し<ID>の消去を要求
−write_to_FP<data>(図2,0205参照)
データをCTへ送信。データは占有されているメモリの最後に付加される。
【0083】
ガーベージコレクタ(GC)の機能
CTRには2つの問題点がある:
1.LOAD命令またはEXECUTE命令またはトリガが、CTR内に存在していないKRのIDを指している場合、KRをリロードしなければならない。しかし状況によっては、要求されたKRをロードするのに十分なスペースがCTR内にない。
【0084】
2.REMOVE<ID>が発生したとき、対応するKRをCTRから除去しなければならない。この場合、KRがCTRの最後にはなければ、隙間が生じてしまう。新たなKRをロードしても、この隙間は場合によっては完全には埋められず、あるいはこの隙間が新たなKRに対し小さすぎるかもしれない。その結果、CTRのフラグメンテーションが発生する。ガーベージコレクタの役割は、KRをCTRを除去し、新たなエントリのためのスペースを確保することであり、かつエントリ除去後のCTRを、残ったすべてのKRが閉じたブロックとして相前後してメモリ内に位置するようにし、しかも空いたメモリブロックが閉じたブロックとしてCTRの最後に位置させることである。このことにより最適に、しかもメモリロケーションの損失なく新たなKRをロードすることができる。
【0085】
トリガパルスの評価
各CTは、それらの個々の階層平面に属する複数のトリガ信号に対するコンタクトを有しており、これらのトリガ信号は1つのバスへ送られてまとめられる。到来するトリガはマスクを介して評価され、つまりイネーブルにされたトリガ信号が転送される。イネーブルにされたトリガ信号は、クロック同期してサンプルレジスタ内にバッファリングされる(サンプリングされる)。アービタは格納されているトリガ信号のうちの1つを選択し、信号をバイナリベクトルへ変換する。選択されたトリガ信号はサンプルレジスタから消去される。そしてバイナリベクトルは第1のルックアップテーブル(LUT1)へ転送され、このテーブルによってバイナリベクトルが呼び出すべきコンフィグレーションルーチン(KR)の識別番号(ID)へ変換される。IDは、第2のルックアップテーブル(LUT2)においてCTメモリ(CTR)内のKRのアドレスに変換される。CTステートマシン(CTS)はそのプログラムポインタ(PP)を上記のアドレスにセットし、KRの実行を開始する。ここで前提とするのは、マスクを介してイネーブルにされた各トリガがLUT1内に対応するエントリをもっていることである。これが欠けていると、エラー状態がCTSへ伝送され(Illegaltrigger)、その際、各ID=”NoAdr”は存在しないエントリとして評価される。”NoAdr”は、インプリメンテーションに依存して選定されるトークンである。LUT2内にエントリがなければ、つまりIDに該当するKRがCTR内に存在しなければ、ロード要求がCTSへ送られる(load<ID>)。
【0086】
上位のCTへのトリガパルスの送信
KRをロードするための上位のCTへの既述のインタフェースのほかに、任意に定義できる命令とはいえ殊にトリガベクトルを交換するための別のインタフェースも存在する。その際にCTは、
−他のすべてのCTへ命令を送るか(BROADCAST)
−またはアドレッシングされた任意のCTへ命令を送る(ADDRESSED)
命令”Triggervektor”はバイナリ値を表しており、これは受け取ったCTにおけるLUT2内のエントリを参照している。トリガベクトルの送信はたとえば、IKR内でKRをさらに別のCTにおいてスタートさせ、これによりたとえば周辺装置やメモリを制御するために必要される。
【0087】
上位のCTへトリガベクトルを転送するために2つのメカニズムが存在する。
【0088】
1.LUT1に1つのビットを付け加え、このビットによって、メモリの内容がKR IDとみなされるのか、あるいはトリガパルスのバイナリ値とみなされるのかを表すようにする。トリガパルスが生じているのであれば、LUT1のデータ内容がそのままトリガとして上位のCTへ送られる。
【0089】
2.命令TRIGGERによってトリガのバイナリ値を表すことができ、それがそのまま上位のCTへ送られる(代案としてトリガ値の代わりにそのままIDを伝送してもよい)。
【0090】
トリガベクトルを介して未知のCTにおいてKRをスタートさせるためには、デッドロック状況を生じさせないよう同期方式を作る必要がある。この方式によって、複数のCTから成る特定のグループ内のKRだけしかこのグループ内の他のCTにおいて別のKRをスタートさせないよう、注意を払わなければならない。複数のKRを同時にスタートさせると、CEL平面における既述のデッドロックと同じように、各CT間でデッドロックの生じてしまう可能性がある。
【0091】
このような方式の基本原理は以下のようにして進行する:
KRは以下のように構成されている:
...
GETCTS/GETBUS
TRIGGER<ID>,<CT#>
TRIGGER<ID>,<CT#>
...
LOOSECTS/LOOSEBUS
...
CT(INITIATOR)におけるKR内の命令”GETCTS”によって、後続の信号で他のCT(TAGET)が送られることを表す。トリガ<ID>,<CT#>によって、スタートさせるべきKRのIDが一義的なID CT#をもつCTへ送られる。この場合、トリガの送信はまず最初にすぐ上位のCTに対して行われ、これはCT#に応じてトリガをそのCT空間内の今度は下位のCTへ送るか、またはそれにとって上位のCTへ送る(CT階層を参照)。命令が到達すれば、それが受領確認を行う。
【0092】
CTにより命令が実行されると、命令の優先順位識別子がそのつど1つだけ高められる。命令の転送要求がCT内における別の要求にぶつかれば、最も低い優先順位をもつ命令が取り下げられる。
【0093】
このことにより以下のことが保証される。
【0094】
a)オーバラップしたシステム内においてある時点で1つの命令だけしか伝播されず、このためただ1つのKRだけしかスタートせず、このことで必要とされるデッドロックのない状況が得られるようになる。
【0095】
b)それまでで最も遠くへは伝播されなかった命令が取り下げられ、このことでパフォーマンスを高めることができる。命令の取り下げ後、GETCTS/LOOSECTS内の先行するすべての命令も同様に取り下げられ、つまりINITIATORがすべてのTARGETへ信号DISMISSを送り、GETCTSの待機時間後にKRの実行が開始される。命令区間GETCTS...LOOSECTS内におけるすべてのトリガの受領確認がINITIATORへ送られる。受領確認が到来するたびに次の命令の処理が続けられる。命令LOOSECTSに到達すると、INITIATORはすべてのTARGETへ信号GOを送る。これによりTARGET−CTが、トリガにより伝送されたIDをもつKRの実行をスタートさせる。TARGETはトリガの発生後に状態を変化させ、その状態においてTARGETはGOまたはDISMISSの発生を待つ。
【0096】
インプリメンテーションが改善されたことで、さらに容易に変更される手法が得られる:
1つの階層平面における1つのグループ内の各CT間にバスシステムが存在する(Inter−CT−Bus)。このバスシステムは、グループにおけるすべてのCTとそのグループのすぐ上に位置するCTとをつないでいる。機能的にGETCTSに似た命令GETBUSにより、バスシステムがCTにより調停される。この命令は、バスシステムを介して同じグループのCTへ転送される。アドレッシングされたCT#がグループ内に存在していなければ、上位に位置するCTによって自動的にその上位に位置するバスが調停され、命令が転送される。調停されたバスはINITIATORに対応づけられたままになり、したがって拒否されるまで、または命令LOOSEBUSがバスに発せられるまで、他のすべてのCTに対しは阻止される。LOOSEBUSはLOOSECTSと対比できる。命令LOOSEBUSの実行前、GO信号が関与するすべてのCTへ送られる。これは命令LOOSEBUSまたは前につなげられた特別な命令によって行われる。命令殊にトリガは、やはり既述の基本的手法に従って処理される。バスシステムを調停できなかったとき、拒否が生じる。調停の際、1つの平面におけるCTがそれぞれ等しく優先順位づけされ、上位のCTはそれよりも高い優先順位をもつ。Inter−CT−Busを介して命令を送信する場合、アドレッシングされたCTが命令を受け入れるまで(ACCEPT)または拒否するまで(REJECT)、命令はアクティブなまま保持される。
【0097】
優先順位づけられたラウンドロビン・アービタ
優先順位づけられたラウンドロビン・アービタ(Single-Cycle-Round-Robin-Arbiter SCRR-ARB)はクロック同期するよう構成されていて、つまりこれによって(インプリメンテーションに応じて正または負の)クロック側縁(TF1)ごとに結果が供給される。到来する信号(ARB−IN)はマスク(ARB−MASK)を通り、このマスクは後述の方法に従いアービタ自体によって管理される。マスクの出力信号は、従来技術に従い優先順位アービタ(ARB−PRIO)へ送られる。アービタはクロック同期してクロック側縁(TF1)ごとに結果(ARB−OUT)を送出し、つまりマスク(ARB−MASK)に従って最高優先順位の付けられた信号のバイナリ値を供給する。この結果には、バイナリ値が有効か無効かを表す信号(VALID)が割り当てられている。優先順位アービタのインプリメンテーションに応じて、信号0が印加されたときおよび信号が印加されないときに同じバイナリ値が生成されるようにすることができる:この場合、VALIDによって、信号が加わらないかぎり結果が無効であることが表される。この信号は、
1.アービタの結果として送出され、
2.デコーダに供給され、これは(以下のテーブルではたとえば3bit値として表される)バイナリ値をデコーディングする(コーディング方式をこの原理に従って任意のバイナリ値に整合可能である)。
【0098】
【表4】
Figure 0004338308
【0099】
このデコーダには1つのレジスタ(ARB−REG)が割り当てられており、これはデコーダのデコーディング値(ARB−DEC)を、TF1に対し逆のクロック側縁(TF2)のときに受け取る。ARB−DECはマスク(ARB−MASKにフィードバックされ、個々の入力信号(ARB−IN)をイネーブルにする。
【0100】
アービタの動作シーケンスは以下の通りである:
1.RESET後、すべてのARB−INがARB−MASKを介してイネーブルにされる。その理由はARB−DECがすべての信号を「イネーブル」にするからである。
【0101】
2.最高優先順位の付けられたARB−IN(たとえば上記のテーブルでは信号7(バイナリ111)が最高優先順位であり信号0(バイナリ000)が最低優先順位である)がバイナリ値として送出される。
【0102】
3.ARB−DECによって信号が阻止され、すべての他のエントリが場合によってはさらに高く優先順位づけられているかもしれないが、セットされていない。
【0103】
4.以下のステップ5および6は、信号0(バイナリ000)に到達するまで繰り返されるかまたは、信号はARB−MASKの後ろには現れない。この場合、ARB−DEC(デコーディングテーブル)は再びすべての信号をARB−DECによるARB−MASKによってイネーブルにし、このシーケンスはステップ2から始まる。
【0104】
5.いまや最高優先順位のセットされたARB−INは、バイナリ値として送出される。
【0105】
6.ARB−DECを介して信号が阻止され、他のすべての入力が場合によってはいっそう高く優先順位付けられているかもしれないが、セットされていない(ステップからさらに)。
【0106】
これによりすべての入力信号が平等に処理され、各クロックサイクルごとに入力信号のうちの1つ(ARB−IN)がバイナリでデコーディングされて出力(ARB−OUT)されるようになる。ARB−REGにイネーブル入力側(EN)を設けることができ、これは対応する信号が生じたとき、TF2の場合だけレジスタ内容の変更を許可する。このためクロックごとにバイナリベクトルが送出されるのではなく、ENとTF2のイネーブルに依存して送出される。なお、入力側の同期が必要であるのは、後置接続された回路が処理を1つのクロックサイクルごとには実行できず、複数のサイクルを必要とし、その後はじめて次のバイナリベクトルを受け入れるときである。
【0107】
場合によって有用であるのは、複数の信号に同じ優先順位が付けられている間、一連の信号をアービタによって高い優先順位が付けられているとみなすことである。これはたとえば、各CT間で信号を転送するための既述の方法において必要である。信号にいっそう高い優先順位を付ける目的で、ARB−PRIOにおいて最高優先順位の付けられたコンタクトがマスキングされず、つまりマスク(ARB−MASK)の前を通過する。これにより信号が優先的に扱われる。
【0108】
マイクロコントローラベースのCTの構造
これまでの説明とは異なり、CTをマイクロコントローラアーキテクチャでインプリメントすることもできる。ここで容易に理解できるように、トリガコントロール、ルックアップテーブルLUT1およびLUT2、ならびにInter−CT通信とCELへのKWの書き込みなどの基本機能を、そのままマイクロコントローラによって実現することができる。この場合、効率的なFILMOの構造だけが問題となるが、それはとりわけ実現可能なパフォーマンスいおいて顕著になる。したがってFILMOの構造については特別に言及する。
【0109】
FILMOの構造
FILMOは別個のメモリとしては構成されていない。そうではなく、慣用のプログラムメモリがFILMOの機能性について拡張されている。この目的で、付加的なビット(FILMO−BIT)が各KWに対応づけられ、これによって対応するKWがCELに書き込まれた否かが表される。FILMOーBITがセットされていれば、対応するKWは実行されない。メモリへのKWの書き込みにあたりFILMO−BITがリセットされる。CT内におけるすべてのKRは、それらがトリガまたはLOAD<ID>によって呼び出されるよう、チェーンリスト(FILMO−LIST)を介して順番に互いに結合されている。KRは、それらが完全に実行されてしまうまでFILMO−LIST内に保持され、その後、それらがリストから除去される。FILMO−LISTはFILMO方式に従って実行され、このためFILMOメモリに対する直接的な代替となっている。(完全性を期すために付言しておくと、本来のFILMO方式とは異なりKRが2度リスト内に現れることはない。まだFILMO−LIST内に存在しているKRが呼び出された場合、その実行はそれがFILMO−LISTから取り除かれるまで遅らさなくてはならない。)
FILMOメモリロケーションの構造は以下の通りである:
【0110】
【表5】
Figure 0004338308
【0111】
命令
マイクロコントローラは、FILMOに対し直接的に作用する以下の命令をサポートする:
PUSH CELへKWを書き込む。
【0112】
PUSHSF CELへKWを書き込み、KWが受け入れられたとき(ACCEPT)のFILMO−BITをセット。
【0113】
PUSHRET CELへKWを書き込み、KWがCELによって受け入れられなかったとき(REJECT)、サブルーチンからリターン(RETURN)。この命令が使用されるのは、KR内における後続のKWがこのKWのコンフィグレーション(ACCEPT)に依存しているときである;KRからのリターンにより、PUSHRETが成功するまで(ACCEPT)、そのコンフィグレーションが阻止される。
【0114】
PUSHNR 事前にKR内でREJECTが生じなかったときのみ、CELへKWを書き込む。PUSHRETと同様、KWのコンフィグレーション順序における依存性を扱うために用いる。
【0115】
ガーベージコレクタ
これまでの説明のように、もはや必要のないKRを消去するためにガーベージコレクタ(GC)が使われる。メモリ内に新たなKRをロードするスペースがもはや十分になくIDを消去しなければならないとき、あるいはKRが命令REMOVEにより明示的に(消去すべきKRのIDの情報を伴って)消去されるとき、GCが起動する。GCの実行をできるかぎり簡単に構成できるようにする目的で、KR全体がチェーンリストを介して結合される。GCはリストをスキャンし、もはや必要とされないKRを消去するが、これはそれらのKRが別のKRによって上書きされ、リストエントリが相応に整合されるようにして行われる。その際、消去すべきKRによって生じるメモリの隙間が埋められ、つながったいっそう大きいなフリースペースがメモリの最後に生じるよう、メモリ内に残されるすべてのKRがシフトされる。
【0116】
KRの構造
以下のテーブルには、KRの実現可能な基本構造が描かれている。
【0117】
【表6】
Figure 0004338308
【0118】
KRの最初において、命令シーケンスをスタートさせるため後続のヘッダを越えてジャンプが行われる。これにはガーベージコレクタのための二重にチェーン結合されたリストが続き、そこではすべてのKRが互いに結合されている。”length”はKRの長さを表す。この情報は、従来技術によるBlock−Move命令のために用いることができ、これはメモリ内のKRを移動させる必要があるときに用いられる(Garbage,Load等)。続く二重にチェーン結合されたリスト内にFILMOが形成されており、これによればCELに書き込まれていないKWを含むKRだけが互いに結合されている。
【0119】
これに続いてキャッシュ動作に関する統計がおかれ、これにはたとえばKRの呼び出し回数(呼び出しごとに値が1だけ高められる)、エイジ(KRに関するGC実行回数に基づき測定可能:GC実行ごとに値が1だけ高められる)などが含まれている。メモリスペース上の理由でKRを消去しなければならないとき、CGはこの統計を評価することができる。キャッシュに関して、この種の統計により格別な利点が得られる。たとえば用いられるキャッシュアルゴリズムに依存しアプリケーションの要求に従い、マイクロコントローラを次のようにプログラミングすることができる。すなわち空きメモリが必要なとき、
1.最も古い/最も新しいKR
2.最も小い/最も大きいKR(エントリ”length”参照)
3.最も稀に/最も頻繁に呼び出されるKR
がキャッシュから消去される。その際、自明の別の有用なステータス情報を格納することができる。このような選択的なキャッシュは、現在知られているキャッシュ構造では不可能である。殊に、キャッシュにおいて自由にプログラミング可能なキャッシュアルゴリズムは従来技術ではサポートされていない。ついでKR統計が設けられており、これにはたとえばまだコンフィグレーションされていない(REJECT)またはコンフィグレーションされている(ACCEPT)KWの個数が含まれている。同時に、これからコンフィグレーションすべき最初のKWのアドレスを格納することができる。このことの利点は、FILMOスキャン時にすぐにKWへジャンプでき、KR全体をスキャンしなくて済むことであって、その結果、めざましいパフォーマンス向上が得られる。
【0120】
最後にKRについて言及しておくと、チェーンリストは有利には先行ID/後続IDのエントリにより構成される。それというのも、このことで絶対メモリアドレスを問題なくGCによってシフトできるからである。また、KRロード時とGC実行時に問題が発生するのを回避する目的で、KR内では絶対ジャンプの代わりに相対ジャンプだけしか用いられない。なぜかといえば、絶対アドレスは変化しないからである。
【0121】
完全を期すためにここでさらに言及しておくと、既述の方式によればマイクロコントローラを使用したときでも(他のCTからのものであってもトリガまたは命令に基づき)新たなKRが実行される前にFILMOがスキャンされ、FILMOのスキャン前にはCELのステータス(コンフィグレーション可能またはコンフィグレーション不可能)が保護される。
【0122】
図面
以下の図面には、1つの実装例に基づき本発明による方法のコンフィグレーションデータ管理について示されている。
【0123】
図1は、ルックアップテーブル内におけるアドレッシング方法を示す図である。図2〜図7は、ステートマシンの命令処理と機能を示す図である。図8は、SCRR−ARBの構造を示す図である。図9は、LUT1&LUT2の構造を示す図である。図10は、ポインタ演算装置とCTRの構造を示す図である。図11は、FILMOの構造を示す図である。図12aは、CTの階層構造を示す図である。図12bは、各CT間におけるトリガの送信を示す図である。図12c,dは、送信方法を示す図である。図13は、複数のIKRによるKRの呼び出しを示す図である。図14は、ROOT−CTにおけるLUT1の構造を示す図である。図15は、ROOT−CTにおけるHOSTコントロールの構造を示す図である。図16は、LUTとECRのコンセプトを示す図である。図17は、中間階層平面ないしはROOT−CTにおけるCTのシーケンスコントロールを示す図である。図18は、2次元アレイのコンフィグレーションにおけるデッドロックの問題点を示す図である(明細書参照)。図19は、FILMOコンセプトを示す図である。図20は、Inter−CTコミュニケーションの基本原理を示す図である。図21は、GETCTS方式によるInter−CTコミュニケーションの実装例を示す図である。図22は、GETBUS方式によるInter−CTコミュニケーションの実装例を示す図である。図23は、Iter−CTバスのバス構造を示す図である。図24は、CT階層内におけるアドレッシングを示す図である。図25は、ガーベージリストである。図26は、FILMOリストである。図27は、KR内のFILMO機能を示す図である。図28は、KRまたはFILMOを実行する前の状態の格納について示す図である。
【0124】
図面の説明
図1には、1つのCT内におけるCTRアドレス生成のシーケンスが示されている。この場合、到来するバイナリのトリガベクトル(0101)が、LUT1内で有効なKRまたはIKR IDに変換される。有効なIDが存在していなければ信号”Illegal Trigger”が生成され(0102)、これによってそのトリガがLUT1内では未知のものであるとが指示される。さらにこの信号をエラーメッセージとして上位のCTへ転送してもよいし、あるいは無視してもよい。「トリガ」から「ID」への変換は、命令”REFERENCE”によりLUT1へエントリされる。有効なID(0103)がLUT2へ転送される。命令内でつまりオペランドにより与えられるID(0104)は、LUT2にダイレクトにあたる。LUT2は到来するIDを、CTR内のKR/IKRのアドレスへ変換する。KR/IKRがCTR内に格納されていなければ(キャッシュ内に存在しなければ)、信号”Miss”が生成される(0105)。KR/IKRの変換されたアドレスがトークン”NoAdr”でマーキングされていれば、”NoEntry”(0107)によって、アドレスの消去されていることが示される。”Miss”および”NoEntry”は、CTR内部アドレスへの変換が不可能であることを表す。これらの信号に基づきLOADステートマシンは、その上に位置するCTの対応するIDをもつKR/IKRをリロードする。有効なアドレスが存在しているかぎり、これはアドレス発生器のポインタ演算装置へ転送される(0106)。LUT1において、到来するバイナリのトリガベクトルがIDまたは別のトリガベクトルへ変換され、その場合、トリガベクトルが出力される(0108)。
【0125】
図2には、KR/IKRをロードする際のシーケンスが描かれている。まずはじめに、ロードすべきKR/IKRのID(0201)がその上に位置するCTへ送信される。それに応じてLUT2内で、要求されたIDのためのエントリのロケーションにフリーポインタ(FreePointer)の値がエントリされる。FPは、CTR内でKR/IKRのために利用された最後のエントリの後ろのエントリを指す。これは、ロードすべきKR/IKRの格納される最初のエントリである。ステートマシンは、上に位置するCTのデータワードを待つ。そのワードを利用可能であれば、FPによって参照されているロケーションに書き込まれる。そしてFPがインクリメントされる。FPがCTRの終端の後ろのエントリを指しているならば、スペース確保のためCTR内の最初のエントリが消去される。その際、FPが更新される。上に位置するCTから送信されたデータワードが”STOP”であればロードプロセスが中止され(0203)、そうでなえれば新しいデータワードを待ちながらプロセスが続けられる(0204)。
【0126】
図3aには、”MASK”命令が描かれている。この命令のオペランドはMASKレジスタへ書き込まれる。MASKレジスタはLUT1の前のトリガ信号入力側に設けられていて、無効なトリガをマスク除去する。
【0127】
図3bの場合には命令”トリガ”により、この命令のオペランドがトリガベクトルとして他のCTへ送信される。
【0128】
図3cの場合には命令”REFERENCE”により、トリガから対応するKR/IKR IDへの変換がLUT1へ書き込まれる。
【0129】
図4aには、命令”WAIT”が描かれている。この命令のオペランドは、WAITMASKレジスタへ書き込まれる。待っているトリガ以外したがってWAITMASKにおいてイネーブルにされるトリガ以外、すべてのトリガは無視される。そのトリガが到来してはじめて、プログラムの流れが戻る。
【0130】
図4bには”PUSH”命令が描かれている。この場合、アドレッシングされたコンフィグレーション可能なエレメント(CEL)へフィグレーションワードが送られる。CELがたとえば状態「コンフィグレーション不可能」におかれていてコンフィグレーションワードを受け入れなければ、そのコンフィグレーションワードはFILMOへ書き込まれる(0401)。
【0131】
図5には、”REMOVE”命令のシーケンスが示されている。この場合、2種類の呼び出し方がある:
1.CTR内に位置する最初のKR/IKRがCTRから消去される。ガーベージポインタ(GarbagePointer,GP)へCTRのアドレス0が割り当てられる(0501)。
【0132】
2.特別にIDにより表されるKR/IKRがCTRから消去される。ガーベージポインタ(GP)に、CTR内の消去すべきKR/IKRの最初のアドレスが割り当てられる(0502)。
【0133】
その際、ムーブポインタ MovePointer にGPの値がロードされる。GPとMPは、最初のKR/IKRをCTRから消去すべきときであっても、CTR内の”BEGIN<ID>”命令を参照する。該当するIDがLUT2内で無効であるとマーキングされる。MPは、メモリ内で次に位置するKR/IKRの”BEGIN<ID>に達するまで(0503)、あるいはMPがフリーポインタ FreePointer(FP)と等しくなるまで、つまり消去すべきKR/IKRがCTR内の最後のものになるまで(0504)、インクリメントされる。
【0134】
−この場合、FPにGPの値がロードされ、このことで消去すべきKR/IKRによって占有されているメモリロケーションが空きとマーキングされ、ファンクション”REMOVE”が終了する(0505)。
【0135】
−そうでない場合(”BEGIN<ID>”に達した場合(0506))、MPにより参照されたデータがGPにより参照されるメモリロケーションへコピーされる。その際、MPとGPがインクリメントされる。このシーケンスは、MPがCTRの最後に達するまで、あるいはFPの位置に達するまで(0507)行われる。このシーケンス中、MPにより、”BEGIN<ID>”の存在するメモリロケーションが参照されると、LUT2における対応するIDのためのエントリがMPによって上書きされ(0508)、これによってルックアップにあたり適正なメモリロケーションが送出されるようになる。
【0136】
図6には、FILMOのフローチャートが示されている。FILMOには3つのポインタが含まれている:
1.WriteP:FILMO−RAMの書き込みポインタ
2.ReadP:FILMO−RAMの読み出しポインタ
3.FullP:FILMO−RAMの「充填状態」を表し、アンダーフローまたはオーバーフローを阻止する。
【0137】
1bitのレジスタ”BeginF”により、目下の読み出しアクセスがFILMO−RAMの最初にある(TRUE)か、つまり読み出しポインタとFILMO−RAMの最初との間に消去されていないエントリが存在していないか、あるいは読み出しポインタがFILMO−RAMの中程に位置している(FALSE)か、つまり使われるエントリが読み出しポインタとFILMO−RAMの最初との間に位置しているかが表される。さらに、ReadPとFullPの状態を格納する2つのレジスタが存在する。これは消去されていない最初のエントリが現れたときに両方のレジスタを保護するために必要である。なぜならば、あとで行われる読み出しアクセスにあたり、そのエントリのロケーションで読み出しを開始しなければならないからである。しかし他方、ReadPとFullPは目下の読み出しプロセスの間、次の読み出しアドレスを得る目的で、またはFILMO−RAMの終わりを確認する目的で、さらに変えられなければならない。FILMOをFIFOに似た構造(いわゆるリングメモリ)として構成することにより、メモリの最初と最後をアドレス0や最大アドレスに基づき確認することはできない。
【0138】
基本状態から2つのシーケンス経路が生じる。
【0139】
1.読み出し経路(0601)
FullPとReadPがレジスタ中に保護される。処理ループが始まる:
BeginFはTRUE。FullPがゼロであれば、ReadPとFullPはそれらのレジスタから読み戻され(0602)、ステートマシンは基本状態にジャンプして戻る。そうでなければ(0603)、ReadPの指しているFILMO内のエントリが”NOP”と等しいか否かが調べられ、つまり消去されたとマーキングされたFILMO中程のエントリであるか否かが調べられる。これが該当しなければ(0604)、コンフィグレーション可能なエレメント(CEL)へのエントリの書き込みが試みられる。CELが再コンフィグレーション可能ではないため、これがうまくいかなければ(REJECT,0605)、BeginFがFALSEにセットされ、FullPがデクリメントされ、ReadPがインクリメントされる。ステートマシンは処理ループの最初にジャンプする(0606)。CELへのエントリの書き込みがうまくいくか(0607)、またはエントリがNOPであれば、BeginFが調べられる。
【0140】
BeginF==TRUE(0608):その前に消去されていないエントリは存在しない。FullPはインクリメントされ、FILMOの新たな開始を記録しておくため、ReadPは所属のレジスタにおいて保護される。また、目下のデータ量を記録するためFullPは保護され、ReadPはインクリメントされる。
【0141】
Begin==FALSE(0609):FullPはインクリメントされ、FILMO−RAM内の目下のエントリはNOPによって上書きされ、つまりそのエントリは消去される。ReadPはインクリメントされる。
【0142】
これら両方の事例とも、ステートマシンは処理ループの最初にジャンプする。
【0143】
2.書き込み経路(0601)
FullPが最大値であるかをチェックすることで、FILMO−RAMがいっぱいであるかが調べられる。いっぱいであれば(0611)、スペースを確保するため読み出し経路にジャンプする。そうでなければデータワードがFILMO−RAMへ書き込まれ、WritePとFullPがインクリメントされる。
【0144】
図7には、メインステートマシンのシーケンスが示されている。これは以下のときにただちに基本状態(IDLE)を離れる。すなわち、
1.REMOVE−Kommandoがその上に位置するCTから現れたとき(0701):REMOVE命令が実行され、ステートマシンはIDLEへ戻る。
【0145】
2.各CT間でトリガを生成するトリガ信号が現れたとき(0702):トリガが出力される。ステートマシンは”STOP”命令へジャンプし、その後、IDLEへ戻る。
【0146】
3.KR/IKR<ID>を実行するトリガ信号が現れたとき(0703):プログラムポインタ(PP)には、LUT2により生成されたアドレスがロードされる。アドレスが無効であれば、つまりロードすべきKR/IKRのためにいかなるエントリも存在しなければ、それがロードされ(0704)、PPが新たにセットされる。
【0147】
実行ループが始まる:
PPがインクリメントされ(最初のループ実行時にはこれによりBEGIN<ID>命令が飛び越される)、別のトリガの発生が阻止され、RECONFIGが阻止される。命令が実行され、実行ループの最初にジャンプする(0707)。命令”STOP”が別個に実行される(0705)。トリガとRECONFIGが再びイネーブルにされ、ステートマシンはIDLEにジャンプする。命令”EXECUTE”も別個に実行される(0706)。EXECUTE<ID>で表されたIDがID−REGに書き込まれる。PPは新たにロードされ、IDにより表されたKR/IKRが実行される(0708)。
【0148】
CTのリセット後、基本コンフィグレーションがCTRにロードされ、そのまま基本コンフィグレーションの実行にジャンプする(0709)。
【0149】
図8にはSCRR−ARBの構造が示されている。調停されるべき信号はデータINを介してマスク(0801)に到達し、これは既知のテーブルに従い信号の関連部分を通したり阻止したりする。従来技術による慣用の優先順位アービタ(0802)は通された信号の集合から1つの信号を調停し、そのバイナリベクトル(BinaryOut)を有効/無効識別子(ValidOut)とともに(やはり従来技術に従い)SCRR−ARBの出力として供給する。この信号は既知のテーブルに従いデコーディングされ(0803)、クロック同期のためのレジスタ(0804)へ導かれる。このレジスタを介して、データINマスクがスイッチングされる。その際、レジスタはクロックにより制御されるかまたは、次の有効なバイナリベクトルを問い合わせるネクスト信号(イネーブルEN)によって制御される。リセット時または識別子(ValidOut)が無効であると示されたとき、データINマスクがすべての信号を通すようレジスタがスイッチングされる。
【0150】
マスクの構造が0805に描かれている。0806にもマスクが再度描かれており、この場合には信号であるデータIN 0..データIn 1に対しSCRR方式に従い同じ優先順位が与えられているのに対し、データIn m..データIn nには高い優先順位が与えられている。
【0151】
図9にはLUTの構造が示されている。調停されたトリガのバイナリベクトル(BinaryIn)は、LUT1のアドレス入力側(0901)へ導かれる。LUT1はバイナリベクトルを、別のCTへ転送するために有効なトリガに変換するか、あるいは有効なIDに変換する。これらはともに0901を経て送出される。0911において、それがトリガであるかIDであるかが指示される。命令”REFERENCE”によって、LUT1へ到来するバイナリベクトルの変換がエントリされていなければ、(ビットエントリまたは特定のトークンたとえば”VOID”に対する比較器によって)信号”Illegal Trigger”が生成される(0914)。
【0152】
トリガは0912を介して外部のIDへ導かれ、IDはマルチプレクサ(0902)を介してさらに処理される。0902は、有効なIDを表すLUT1のデータ出力またはCTのIDレジスタ(0903)を、LUT2のアドレス入力側(0904)へスイッチングする。0904はキャッシュに似た構造を有しており、つまり0902からのデータ出力側における下位の部分(0906)は0904のアドレス入力側へ供給されるのに対し、上位の部分(0907)は0904のデータ入力側へ供給される。0904に属するデータ出力側は、比較器(0905)によって0907と比較される。この方式の利点は、0904がすべてのIDを変換するために深さをもっている必要がなく、かなり小さくすることができる。慣用のキャッシュと同様にIDの一部分だけが変換され、その際、LUT2内で0907に基づき、選択されたIDがLUT1により与えられたものと一致するか否かを判定することができる。これは従来技術によるキャッシュ/TAG方式に相応する。
【0153】
0904における第2のデータ入力側にはマルチプレクサ0908が対応づけられて設けられており、これはオペレーションに従いフリーポインタ(FP、オペレーションLOAD)、ガーベージポインタ(GP、オペレーションREMOVE)または無効識別子/トークン(NoAdr、オペレーションREMOVE)をLUT2へ格納するために供給する。両方のポインタはCTR内のメモリロケーションを参照しており、”NoAdr”は、適合するIDに対するエントリが存在せずそのエントリは消去されていることを表す。このことはデータ出力側において、比較器0909によってデータをトークン”NoAdr”と比較することによって判定される。この場合、ステートマシンへ以下のことが転送される。すなわち、
−”ValidIn”によるバイナリベクトルの発生(図8参照)。
【0154】
−LUT1における変換がトリガであるかIDであるかの指示(0911,”Trigger/ID Out)。トリガは0912を介して別のCTへ転送され、IDは固有のCTにおいて処理され、LUT2へ転送される。
【0155】
−対応するIDが0904に格納されているか否かを表す0905の結果(”Hit/Miss Out)。
【0156】
−対応するIDがCTR内の有効なアドレスを指示しているか否かを表す0909の結果(”NoENtry Out”)。
【0157】
0904により生成されたアドレスはCTRへ転送される(”CTR Address Out)。
【0158】
LUT1へ命令”REFERENCE”を介して、到来したバイナリベクトルからトリガまたはIDへの変換がロードされる。命令のオペランドはバス0913を介してLUT1へ導かれる。同じバスを介してIDレジスタ(0909)がロードされる。
【0159】
図10には、ガーベージポインタ(GP)、プログラムポインタ(PP)、ムーブポインタ(MP)およびフリーポインタ(FP)が示されている。各ポインタは、別個に制御できるロード可能なアップダウンカウンタによって構成されている。各ポインタには(必要であるかぎり)、他のカウンタの値をロードすることができ、さらにLUT2の出力(0107)もロードすることができる。
【0160】
比較器によって
1.PPがMPと等しいか
2.MPがFPと等しいか
3.FPがCTR内の最大ポジションと等しいか
が判定される。その結果はステートマシンの制御に用いられる。マルチプレクサ(1001)を介して、ポインタのうちの1つがCTRのアドレス入力側へ案内される。データはマルチプレクサ(1002)を介して上位のステートマシンから、またはレジスタ(1003)から、CTRへ到達する。さらにステートマシンおよびFILMO(1006)へ、マルチプレクサ(1004)を介して上位のCTまたはCTRのデータが転送される。この場合、上位のCTからREMOVE命令が発生したときにはそれがそのまま1004を介してステートマシンへ導かれるのに対し、そうでなければ命令はCTRからステートマシンへ案内される。レジスタ1003は、命令を格納しCTR入力側へフィードバックするために用いられ、それらはガーベージコレクタ実行中にあるアドレスから別のアドレスへシフトされる。
【0161】
図11にはFILMOの構造が描かれている。データはCTR(1101)からFILMOへ到達し、マルチプレクサ(1102)を介してFILMO−RAM(1103)へ書き込まれるかまたは、マルチプレクサ(1104)を介してコンフィグレーション可能なエレメント(1116)へ送られる。データが1103において消去されると、1102を介して”NOP”トークンが1103へ書き込まれる。比較器(1105)によってデータ出力側で”NOP”トークンが識別され、コンフィグレーション可能なエレメントへの書き込みが阻止される。マルチプレクサ1106を介して、書き込みポインタWriteP(1107)または読み出しポインタ(1108)が1103のアドレス入力側へ導かれる。リセット(図6参照)を行えるようにするため、レジスタ1109で読み出しポインタが保護される。1103における充填状態カウンタ(1110)は、図6に示したようにレジスタ1111でリセットに対し保護される。1103が空であるか(1112)またはいっぱいであるか(1113)が、2つの比較器によって調べられる。さらにマルチプレクサ1115を介して、1116へ(1101からの)ステートマシンの制御信号を送るのか、FILMOの制御信号を送るのかが選択される。
【0162】
図12aにはCTSの階層構造が示されている。すべてのCTSはそれらのデータを、ROOT−CT(1201)およびそれに割り当てられたECR(1204)から受け取る。コンポーネント内における各実装平面ごとに、1つまたは複数のCTが存在している。各CTは、それらの平面およびその下に位置するCTの管理を担当する。なお、ツリーのすべての枝が同じ深さにある必要はない。たとえば、1つのコンポーネントの周辺装置(1202)を制御するためには、動作ユニット(1203)を制御するよりも僅かな平面しかないかもしれない。この場合、データ伝送はツリー状に行われる。各CTは、その下に位置するすべてのCTのためのキャッシュとして動作する。
【0163】
図12bには、各CT間におけるトリガの流れが示されている。データの流れはツリー状に進行するのに対し、トリガの流れは固定されていない。各CTは、他のいかなるCTへもトリガを送ることができる。トリガ交換は通常、リーフ(1203)からROOT−CTの方向でのみ行われる。しかし場合によっては、逆方向で伝送が進行する可能性もある。
【0164】
図12cにはトリガベクトルのブロードキャストが描かれており、ここでは1205がトリガベクトルをすべてのCTへ送る。
【0165】
図12dにはHIGHERトリガベクトルが示されており、1206はこれをその上に位置するCTへ送る。また、1207はLOWERトリガベクトルを、その下に位置するすべてのCTへ送る。さらに1208は、ダイレクトにアドレッシングされた(ADDRESSED)トリガベクトルを、1207とダイレクトにはつながっていない特定のCTへ伝送する。
【0166】
図13の場合、独立した2つのIKR nとmが、その上位のCTにキャッシュされている共通のKRxを要求している。そこに示されているように、このKRは共通の枝によりキャッシュされ、隣りの枝(1301)においても共通のCTを利用可能である。
【0167】
図14には、図9に対し変形されたLUTシステムが示されており、これは中間の階層平面におけるROOT−CTとCTにおいて用いられる。これまで述べてきたCTとの基本的な相違点は、個々のトリガ信号の代わりにIDおよび/またはトリガベクトルをCTにより管理しなければならないことである。ここでは各ベクトルに、ベクトルの有効性を指示するためのハンドシェーク信号(RDY)が割り当てられており、これはアービタ(1401)へ伝送される。マルチプレクサ(1402,1403)を介して、複数のトリガベクトル(1404)のうちの1つまたは複数のIDベクトルのうちの1つ(1405)が選択される。トリガベクトルはLUT1(1406)のアドレス入力側へそのまま到達し、LUT1はその他の点では図9に示されているように結線されている。IDレジスタ(1407)も、やはり図9に示されているように結線されている。図9とは異なり、マルチプレクサ1408は3つの入力側を有している(0902を参照)。ここではこのマルチプレクサはステートマシンのほか、付加的にアービタ1401によっても制御される。付加的な入力側を介して、1403を経たIDベクトルはLUT2へそのまま伝送される。この目的でバス1409が用いられる。(基本的に、図9に示したCTの場合でもIDをマルチプレクサ(1408)によってLUT2へダイレクトに供給することができる。この場合にはIDを、変換せずにそのままCELからLUT2へ送ることができる。)”Trigger/ID Out”は、図9に示されているようにして生成される。図9によれば”Valid Out”へ転送される”ValidIn”信号は、ここでは存在しない。その代わりに1401によるアービテーションに応じて、トリガベクトルのためには”Valid Trigger Out”が生成され、IDベクトルのためには”Valid ID Out”が生成され、これによって処理をどのように行うべきかがステートマシンに指示される。
【0168】
バス1409は1410を介して、ROOT−CT内だけに存在し図15には示されていない別のユニットへ案内される。ROOT−CTは通常のCT機能に加えて、外部のコンフィグレーションメモリ(ECR)へのインタフェースおよびなければならないアドレス発生器とECRへのアクセスを管理するユニットを必要とする。
【0169】
慣用のCTは、LUT1へ到来するトリガベクトルをIDに変換し、LUT2においてそのIDをCTR内のメモリロケーションに変換する(図16a参照)。ROOT−CTはECRへのアクセス時、ECR内部におけるIDをECR内のアドレスへ変換し、そのアドレスにおいてIDにより参照されたKR/IKRが始まる。この目的でECR内に、可能なIDの個数に対応する大きさをもつメモリ領域が設定されている(たとえばIDが10bit幅であれば210=1024個の可能なIDが得られ、したがってECR内で1024個のエントリが予約される)。以下の実例ではこのメモリ領域はECRの下端にあり、LUT2との類似性を区別するため、LUT−ECRと称する。その際、トリガからIDへの変換は、既知のCTに従いLUT1(1601)において行われる。理解を深めるため、図16bによりECRへのアクセスについて示す。
【0170】
IDは図15において、図14中のバス1410を介してマルチプレクサ1501に到達する。さらに1501を介して、IDはロード可能なカウンタ1502へ書き込まれる。1502の出力側は、マルチプレクサ1503を介してECRのアドレスバス(1504)へ導かれる。データバス1505を介して、IDからメモリアドレスへの変換はマルチプレクサ/デマルチプレクサ(1506)を経て1501へ到達し、これは1502に対しメモリアドレスをロードする。その後、ステートマシンLOAD−ECR(図17参照)によって対応するKR/IKRのデータワードがECRから読み出され、CTRに書き込まれ、その際、1502は読み出しプロセス後にそのつど高められ、これは命令”STOP”が読み出されるまで行われる。
【0171】
インタフェース1507を介して、上位に位置するHOSTが1503/1506を介してKR/IKRをECRへ書き込む。その際にステートマシン(CTS)によって、ECRへHOSTがアクセスするのかROOT−CTがアクセスするのかについてて調停される。
【0172】
コンポーネントのリセット後、基本コンフィグレーション(BOOT−KR)をロードする必要がある。このため固定的なメモリアドレス(BOOT−ADR)が取り入られ、これはBOOT−KRにおける最初のメモリテーブルを示す。BOOT−ADRとしては、IDが1で始まるかぎりメモリロケーション0hが推奨され、そうでなければ2IDまたは他の何らかのメモリロケーションを使用することができる。この実施例では2IDを使う。
【0173】
ROOT−CTはBOOT−KRをBOOT−ADRのロケーションにロードするため、BOOT−KRがロードされているかぎりルックアップを実行する。ROOT−CTは1502の後でデータを書き換え、そこからは”STOP”命令が発生するまでBOOT−KRをロードできるようにする。
【0174】
ROOT−CT内の監視ユニットは、HOSTとコンポーネントとの同期合わせの役割を担っている。これは以下のようにして行われる:
アドレス 小さい2IDは1508により監視され、つまりHOSTによってこのアドレスへのアクセスが行われると、信号(ACC−ID)がステートマシン(CTS)へ送られる。同様に、BOOT−ADRが1509を介して監視され、信号ACC−BOOTがステートマシン(CTS)へ送られる。
【0175】
ステートマシン(CTS)は以下のように応答する:
−HOSTがBOOT−ADRへ書き込みを行うと、これはBOOT−KRのロードに作用する。
【0176】
−HOSTがデータワード0(152)をBOOT−ADRへ書き込むと、このことは比較器1510を介して確認され、コンポーネントの停止に作用する。小さい2IDのアドレスへHOSTが書き込みを行うと、アドレスがREMOVEレジスタ(1511)へロードされる。そのアドレスはIDに対応しているので(ECR−LUT参照)、変更されたKR/IKRのIDは1511内におかれる。すべてのCTへ、即座に実行するための命令REMOVE<ID>が送られる(1513)。それに応じてCTは、対応するIDのKR/IKRをそれらのCTRないしはLUT2から消去する。KR/IKRの後続の呼び出しにあたり、CTは強制的に新たなKR/IKRをECRからロードしなければならない。
【0177】
図17には、ECRをIR/IKRからロードする際のROOT−CTにおけるシーケンスが示されている。IDが内部のCTR内に存在しなければ(図1の1701参照)、IDはカウンタ1502へ書き込まれる(1703)。1502におけるアドレスを用いたECRのアクセスによって、KR/IKRのベースアドレスが供給される。これは1502へ書き込まれる(1704)。図2によるLOADが行われる(1702)。この場合、データは上位のCTからではなくECRから読み出され(1705)、本来のCTRへ書き込まれるだけでなく、下位のCTへも送られる(1706)。中間の階層平面におけるCTにおいて、図1の場合と同じようにしてトリガの変換が行われるが、ただし例外としてトリガベクトルとIDベクトルは図14に従って処理しなければならない。また、KR/IKRは図2に従ってロードされるが、例外として、データワードは本来のCTRに書き込まれるだけでなく(0210)、同時に下位のCTへも送られる。
【0178】
図19にはFILMOの基本原理が示されている。FILMO(1901)は、読み出しアクセスおよび書き込みアクセスにあたり必ず始めから終わりへ向かってスキャンされる(1902)。FILMOの最初のエントリが書き込まれ消去されると(1903)、読み出しポインタは消去されていない最初のエントリまでシフトされる(1904)。FILMOの中間からエントリが書き込まれたとき(1905)、読み出しポインタは変わらずに保持され(1906)、それらのエントリに”NOP”がマーキングされる(1907)。データがFILMOに書き込まれると(1908)、それが終端において最後のエントリの後ろに付けられる(1909)。読み出しポインタ(1910)は変えられずに保持される。
【0179】
当然ながら、LUT1、LUT2およびCTRを有するメモリだけしか備えていないCTを形成することもできる。とはいえ、その制御は比較的煩雑である。その際にCTは、すでにLUT2とCTRがECR内に統合されているROOT−CTと同じように構成されている。このやり方を理解するために、このCTの説明は不要である。
【0180】
CTをデータ用のキャッシュシステムとして適用する場合、データをCTR内へ書き込むためのトリガが挿入される。この場合、データはCELからCTRへ書き込まれる。このために必要な変更は一般的なものであり、FILMOは完全に省略できる。データのキャッシュにあたり、データの一貫性という問題点が生じる。このことは、DE 42 21 278 A1 による方法を適用して、データおよびそれらのデータの有効性を個々の階層平面において識別できるようにすることで回避することができる。リード・モディファイ・ライト・サイクル(Read-Modify-Write-Cycle, RMWサイクル)を実行するためにデータが要求される場合、すべての階層平面におけるデータが付加的なエントリに基づきCTR/ECR内で無効である(INVALID)と識別される。このためエントリに、データを利用するKR/IKRの一義的なIDをエントリすることができる。データは、それらのデータを利用するKR/IKRがデータを書き戻し(従来技術によるライト・バック方式を参照)それらのIDを消去してしまうまで、他のIDをもつKR/IKRによって利用することができない。
【0181】
図20には1つの実施例が示されている:
この場合、図20aにおいてCT2007がその上に位置するCTに対しデータを要求し、上位のCTはROOT−CT2004にデータを要求する。データ要求とともに、要求を行うKR/IKR(2001)のIDが伝送される。データ(2002)は2007へ送られる。それ以降の他のすべてのアクセスは拒絶される(2003)。
【0182】
図20bにおいてデータが書き戻され(2005)、それ以降の他のアクセスが再び受け入れられる(2006)。
【0183】
図20cにおいて中間の階層のCTによりデータが要求され、データを所有し、それが2007へ送られる。データを阻止するためのIDは、階層内のすべてのCTへ送られる(2001)。図20dにおけるデータの書き戻し(ライトバック)において、データは階層内のすべてのCTへ書き込まれ、IDが消去される。
【0184】
図21には、複数の介在CT(2104,2105,2106)を経由したINITIATOR CT(2101)とTARGET CT(2102)との通信、ならびにGETCTS/LOOSECTS方式による介在平面を経由しないTARGET CT(2103)とのダイレクトな通信について描かれている。
【0185】
2101は2103へのコネクションを確立する。確立成功後、2101は2103から、確立の確認としてGRANTを受け取る。その後、2101は2104,2105,2106を介して、2102へのコネクションを確立する。2102へのコネクションは、2102に達したときにはじめて承認される(GRANT)。
【0186】
バスの1つが占有されていてコネクションを確立できなければ、REJECTが2101へ送られ、2101はそのプロセスを中止する。つまり、2103へのコネクションも中止され、REJECTが2103へ送られる。しかし2102がGRANTによってコネクションを承認すると、2101は2103と2102へGO命令を送り、これによって同時に2103と2102へコネクション確立の成功と同期が確認される。このプロトコルによって、データまたは命令をデッドロックを生じさせずに同期させて伝送することができる。なぜならばGOによって、すべてのTARGETが命令を正しく受け取るようになるからである。
【0187】
図22には、GETBUS/LOOSEBUS方式によるInter−CT通信の経過が示されている。図21によるやり方ではそのつど上位におかれたCTが制御および優先順位づけの役割を担っているのに対し、ここでは制御はInter−CTバス(2201)によって引き継がれる。
【0188】
2103へのコネクションは、INITIATOR−CT(2101)がそのローカルなInter−CTバスを要求する(2202)ことによって確立される。バスが空いていれば(ACCEPT)要求が承認され、バスが占有されていれば(REJECT)要求が拒否される。その後、これは2102のアドレスをバスへ送る。アドレッシング方式に従いバスコントローラは、そのアドレスがローカルなバスアドレス外にあることを識別し、上位のCT2104を介してそのCTのローカルなバスへのコネクションを確立する(2203)。
【0189】
2102のアドレスはそのアドレス範囲内にあるので、2106を介して2102のローカルバスへのコネクションが確立される(2204)。2101はこのとき、データ通信に必要とされるすべてのバスにおけるただ1つのバスマスタとなっているので、デッドロックの生じないスムーズな通信を確実に進行させることができる。それというのも、他のすべてのCTに対して通信チャネルが阻止されているからである。2102と2103もバスを利用することができない。その理由は、それらはTARGET役として命令だけしか受け取ることができず、INITIATOR(2101)自体による要求に応答してデータを送ることしかできないからである。
【0190】
通信が終了するとただちに、2101からの信号によってバスの確立状態が解除される。2101がバス確立動作中に使用されているバスに当たれば、REJECTが2101へ送られ、2101はそのバスシステムを再び解除し、あとの時点で新たに確立を試みる。複数のCTが同時に同じバスを要求したときには、上に位置するCTに対し高い優先順位が付けられる(2205)。このことにより、すでに多数の平面を経由して延びた長く進行しているバス確立動作が、まだ非常にローカルなバス確立動作によって打ち切られてしまうことが回避される。拡張されたプロトコルによればREJECTが発生したとき、高い優先順位の付けられたバス確立動作により必要とされるバスだけを解除することができる。これによりパフォーマンスを格段に高めることができる。なぜならば、バスすべてをあとの時点で新たに確立しなくてもよいからである。
【0191】
図23には、図22によるやり方のためのInter−CTバスの確立について描かれている。CT2301〜2304は、それらのインタフェース(2308〜2311)を介して上位のCT2305(インタフェース2307)といっしょにInter−CTバス2312と接続されている。Iter−CTバスの接続はラウンドロビン・アービタによって行われ、これは2308〜2311に対し同じ優先順位を与えるが、2307に対してはそれよりも高い優先順位を与え、これは各バスをまとめるためのマルチプレクサを制御する。アービタには、制御信号(たとえば確立/解除、ACCEPT,REJECT...)を評価するステートマシンが対応づけられている。
【0192】
図24には、1次元のCTツリーをもつアドレス方式の構造が示されている。ここでは正方形によってCTがシンボリックに表されており、その際、CTのアドレスが書き込まれている。この場合、−は重要でないアドレスビットを表し、それらは評価されない。重要なアドレスビットには2進数の0か1が与えられており、何らかの任意のアドレスビットについては*がおかれている。なお、この図式を多次元のツリーに投影して同様に適用できることも容易に理解することができる。その際、与えられたアドレスはそれぞれ軸の1つを表していて、換言すれば、軸ごとに相応の別個のアドレス系が存在するのである。
【0193】
図24aには、CT0001からのアドレッシングについて描かれている。この場合、相対アドレス−1が示されている。計算 −1+1=00(「相対移動」+「目下の平面上でのINITIATOR−CTのアドレス」)により、同じローカルバスに接続されているCT 0000を計算することができる。
【0194】
図24bによれば、CT 0010は相対アドレス+10を有している。計算10+0=0(「相対移動」+「目下の平面上でのINITIATOR−CTのアドレス」)により、桁上げ1が生じる。なぜならば、最下位のローカルバスのアドレス領域はちょうど1bit幅だからである。これにより、次に高いバスが選択される。そのバスのアドレス計算にあたり10+10=00(「相対移動」+「目下の平面でのINITIATOR−CTのアドレス」)によって新たに桁上げが発生する。なぜならば、そのアドレス領域は最下位バスのアドレス領域よりもちょうど1つだけ大きい2bitだからである。次に高い平面では、計算10+010=0100によっても桁上げは発生せず、したがって(左から)3番目のビットにより次に低い平面との経路1**がアドレッシングされ、(左から)2番目のビットによりさらに次の最下位平面の経路10*がアドレッシングされ、ついで最後のビットによりTARGET−CTが選択される。
【0195】
図24cには、2つの平面を介した正の方向でのやり方が示されており、図24dには、負のオーバーフローをもつ負の方向での3つの平面を介したやり方が示されている。
【0196】
図25には、2次元のCTツリーの構造が示されている。最下位平面(2502)には、CT(2501)が2次元で配置されて設けられている。次元のアドレスは、個々のCTにおいてx/yで与えられている。2502の上位には、次に高い平面(2504)がおかれている。それらのCT(2503)はそれぞれ、平面2502における4つのCTのグループを制御する。2504におけるCTのアドレス空間は1bitだけ幅が広く、ここでは*によって平面2502のアドレスビットが表されているが、それらは2504におけるCTの選択にとって重要なものではない。さらに2504の上位には、ROOT−CT2505が設けられている。それらのアドレスもやはり1bitだけ幅が広く、*の意味も同じである。
【0197】
図26には、マイクロコントローラによるインプリメンテーションの場合のガーベージコレクタのチェーンについて描かれている。この場合、すべてのKRはヘッダエントリ(garbage−previous/garbage−next)を介して互いにチェーン結合されている。リストによりガーベージコレクタを実行する際、エントリが(+1)だけ上昇することによりKRのエージがキャッシュ統計(2602)のために記録される。ガーベージコレクタは、KRがFILMOリストにまだ連なっているか否かを表すエントリKR統計(2601)を留意する。その場合にはGCによってKRを消去してはならず、その理由はそれがまだコンフィグレーションされていないKWを有しているからである。択一的にこのテストを、FILMO−nextおよびFILMO−previousについて実行してもよい。
【0198】
図27には、FILMOリストのチェーンについて描かれている。この場合、チェーンをガーベージリスト(図26)とは完全に異なるものとすることができる。各KRは、FILMO−previousとFILMO−nextを介してチェーン結合されている。KR統計(2701)のエントリは、個々のKR内においてまだコンフィグレーションされていないそのつど最初のKWを指している。FILMOの実行は、最初のIDにおいてKRがスタートするように構成されている。実行後、実行されていないKWの位置が2701に従って書き込まれる。KRが完全に実行されてしまっているならば、チェーン結合されたFILMOリストからそのKRが除去されるが、メモリ内には残される。その後、FILMOリストを介して次のKRへのジャンプが行われ、これも同様に処理される。
【0199】
図28には、マイクロコントローラ制御におけるKRの構造が描かれている。まず最初にジャンプ命令がおかれており、これによってKRのヘッダ(2801)の後ろへのジャンプが行われる。各KWにはFILMOビット(2802)が割り当てられている。この場合、値1(2803)によって、KWがCELにより受け入れられ(ACCEPT)、次のスキャン時にはもはや実行されないことが表されている。値0(2804)はREJECTを表し、そのKWは次のスキャン時に新たに実行されなければならない。オプションとしてのKR統計(2701)は、0の付された最初のKWを指している。PUSHRET(2805)がREJECTを受け取ると、KRの処理はそこで中止され、次のスキャン時に最初のKWにおいてあるいは2701の指すロケーションにおいて新たに行われる。そうでなければ、KRはその終端で2806において規定どおりに終了する。
【0200】
図29には、FILMOスキャン前またはKRスタート前のCELのステータス情報を保護するための回路が示されている。このステータス情報は、CEL(2901)からレジスタ(2902)へ到達する。FILMOのスキャン前またはKRのスタート前、CTはイネーブル信号(2903)を2902へ送る。それに応じてステータス情報が引き継がれ、CTへ転送される(2904)。2904は、2903からの次の発信までそのまま一定に維持される。
【0201】
用語の定義
ACCEPT
アドレッシングされたCELがコンフィグレーション可能な状態にあり送られたKWを受け入れることを表す
ブロック命令(たとえばBLOCK−MOVE)
複数のデータ(ブロック)をメモリ内またはメモリと周辺装置の間でシフトさせる命令。この場合、シフトすべきデータの出所アドレス、そのデータの宛先アドレス、ならびにデータブロックの長さが表される。
【0202】
ブロードキャスト
多数の受信側への情報の送信
データ受信側
CELの結果を後続処理するユニット
データ送信側
CELのためのデータをオペランドとして利用できるユニット
データワード
1つのデータワードは任意の長さのビット列から成る。このビット列は、装置のための1つの処理単位を成している。1つのデータワードにおいて、プロセッサ等のコンポーネントのための命令も純粋なデータもコーディングすることができる。
【0203】
デッドロック
対向するブロックに起因していかなるデータ処理も不可能な状態
DFP
DE 44 16 881 によるデータフロープロセッサ
DPGA
ダイナミックにコンフィグレーション可能なFPGA。従来の技術。
【0204】
エレメント
あらゆる種類の完結したユニットに対する総称であって、部品として電子コンポーネント内で使用できるもの。つまりエレメントとは:
−あらゆる種類のコンフィグレーション可能なセル
−クラスタ
−RAMブロック
−ロジック
−算術ユニット
−レジスタ
−マルチプレクサ
−チップのI/Oピン
結果
ある結果は、使用に適した何らかのやり方でハードウェアにより評価することができ、その評価に対する反応として条件付けられたアクションをトリガさせることができる。
【0205】
したがって結果とはたとえば:
−計算装置のクロックサイクル
−内部または外部の割り込み信号
−コンポーネント内部における他のエレメントからのトリガ信号
−データストリームおよび/または命令ストリームとある値との比較
−インプット/アウトプットの結果
−カウンタのシーケンス、オーバーフロー、新たなセット等
−比較の評価
FIFO
従来技術によるファーストイン・ファーストアウト・メモリ
FILMO
リニアにデータの読み出される変形FIFO。メモリ始端への読み出しポインタの制限はない。
【0206】
FPGA
プログラミング可能なロジックコンポーネント。従来技術。
【0207】
F−PLUREG
CELの機能のセットされるレジスタ。ワン・ショットモード(OneShot-Mode)、スリープ・モード(Sleeo-Mode)もセットされる。
【0208】
フラグメンテーション
メモリが細分化され、たいていは小さくしたがって役に立たない多数のメモリ領域になること
ガーベージコレクタ
メモリ管理ユニット。フラグメンテーションを回避する。
【0209】
Hレベル
利用される技術に応じて論理値1のレベル
HOST
上位のコンピュータのコンポーネントまたはアセンブリ
IDLEサイクル
ステートマシンが処理を実行しないサイクル。ステートマシンの基本状態。
【0210】
Inter−CTバス
1つの平面における複数のCTと上位におかれたCT(CTグループ)間のバスシステム
INITIATOR
Inter−CTバスへのアクセスをスタートさせるCT
ポインタ
アドレスまたはデータワードへのポインタ
コンフィグレーション可能なエレメント(KE)
コンフィグレーション可能なエレメントは、専用の機能のためのコンフィグレーションワードにより形成可能なロジックコンポーネントのユニットを成している。したがってコンフィグレーション可能なエレメントは、あらゆる種類のRAMセル、マルチプレクサ、算術論理ユニット、レジスタ、ならびにあらゆる種類の内部および外部のネットワーク仕様等である。
【0211】
コンフィグレーション可能なセル(CEL)
ロジックセルを参照
コンフィグレーション
ロジックユニット、(FPGA)セルまたはCELの機能およびネットワークの形成(再コンフィグレーションを参照)。
【0212】
コンフィグレーションデータ
任意の量のコンフィグレーションワード
コンフィグレーションルーチン
複数のコンフィグレーションワードが1つのアルゴリズムにまとめられたもの コンフィグレーションメモリ
コンフィグレーションメモリには1つまたは複数のコンフィグレーションワードが含まれている。
【0213】
コンフィグレーションワード(KW)は任意の長さのビット列から成る。このビット列は、コンフィグレーションすべきエレメントに対する有効なセッティングを成しており、したがって機能を果たす1つの単位が生じる。
【0214】
ロードロジック
CELをコンフィグレーションおよび再コンフィグレーションsるためのユニット。特別にその役割に整合されたマイクロコントローラによって構成されている。
【0215】
ロジックセル
DFP、FPGA、DPGAにおいて用いられるコンフィグレーション可能なセルであって、コンフィグレーションに従い簡単な論理的または算術的役割で満たされる。
【0216】
ルックアップテーブル
従来技術。データの変換方法。
【0217】
LUT1
トリガをIDに変換するルックアップテーブルであって、トリガが有効なIDに割り当てられているか否かが判定される。
【0218】
LUT2
IDをローカルメモリ内の対応するKRのアドレスに変換するルックアップテーブルであって、KRがローカルメモリ内に存在しているか否かが判定される。
【0219】
Lレベル
利用される技術に応じて論理値0レベル
マスク
複数の信号のうち有効な信号を与えるビットの組み合わせ
RECONFIGトリガ
再コンフィグレーション可能な状態へのCELのセット
REJECT
アドレッシングされたCELがコンフィグレーション可能でない状態にあり、送られたKWを受け入れられないことを表す信号
REMOVE<ID>
1.IDにより参照されたKRを除去するためのKR内の命令
2.IDにより参照されたKRを消去するため、上位のCTから別個のインタフェースまたはハンドシェーキングを介して下位のCTへ送られる命令
RESET
コンポーネントまたはコンピュータシステム全体を規定された基本状態へリセットすること
ROOT−CT
外部のコンフィグレーションメモリへのダイレクトなアクセスを行う最高階層平面のCT
ラウンドロビン・アービタ
環状に進行し、最後に調停された信号に常に最下位優先順位を割り当てるアービタ。
【0220】
同期信号
コンフィグレーション可能なエレメントまたは算術ユニットにより生成され、データ処理の制御および同期合わせのため別のコンフィグレーション可能なエレメントまたは算術ユニットへ転送されるステータス信号。この同期信号を時間的に遅らせて(記憶して)、同じコンフィグレーション可能なエレメントまたは算術ユニットへ戻すこともできる。
【0221】
TARGET
Inter−CTバスへのアクセスの目標となるCT。
【0222】
トリガ
同期信号と同義語
再コンフィグレーション
任意の残量のCELが本来の機能を継続している間に任意の量のCELを新たにコンフィグレーションすること(コンフィグレーション参照)。
【0223】
チェーンリスト
ポインタによってつなぎ合わせられた従来技術によるデータ構造
セル
コンフィグレーション可能なエレメントと同義語。
【0224】
ステートマシン
様々な状態をとり得るロジック。各状態間の移行は、種々の入力パラメータに依存する。このマシンは複雑な機能を制御するために用いられ、従来技術に相応する。
【図面の簡単な説明】
【図1】 ルックアップテーブル内におけるアドレッシング方法を示す図である。
【図2】 ステートマシンの命令処理と機能を示す図である。
【図3】 ステートマシンの命令処理と機能を示す図である。
【図4】 ステートマシンの命令処理と機能を示す図である。
【図5】 ステートマシンの命令処理と機能を示す図である。
【図6】 ステートマシンの命令処理と機能を示す図である。
【図7】 ステートマシンの命令処理と機能を示す図である。
【図8】 SCRR−ARBの構造を示す図である。
【図9】 LUT1&LUT2の構造を示す図である。
【図10】 ポインタ演算装置とCTRの構造を示す図である。
【図11】 FILMOの構造を示す図である。
【図12】 図12のaはCTの階層構造を示す図であり、図12のbは各CT間におけるトリガの送信を示す図であり、図12c,dは送信方法を示す図である。
【図13】 複数のIKRによるKRの呼び出しを示す図である。
【図14】 ROOT−CTにおけるLUT1の構造を示す図である。
【図15】 ROOT−CTにおけるHOSTコントロールの構造を示す図である。
【図16】 LUTとECRのコンセプトを示す図である。
【図17】 中間階層平面ないしはROOT−CTにおけるCTのシーケンスコントロールを示す図である。
【図18】 2次元アレイのコンフィグレーションにおけるデッドロックの問題点を示す図である。
【図19】 FILMOコンセプトを示す図である。
【図20】 Inter−CTコミュニケーションの基本原理を示す図である。
【図21】 GETCTS方式によるInter−CTコミュニケーションの実装例を示す図である。
【図22】 GETBUS方式によるInter−CTコミュニケーションの実装例を示す図である。
【図23】 Iter−CTバスのバス構造を示す図である。
【図24】 CT階層内におけるアドレッシングを示す図である。
【図25】 ガーベージリストである。
【図26】 KR内のFILMO機能を示す図である。
【図27】 FILMOリストである。
【図28】 KRまたはFILMOを実行する前の状態の格納について示す図である。
【図29】 FILMOスキャン前またはKRスタート前のCELのステータス情報を保護するための回路を示す図である。

Claims (26)

  1. コンフィグレーション可能な多次元のセルアレイを再コンフィグレーションする方法において、
    再コンフィグレーション可能な複数のセルのうち少なくとも1つのセルに対し再コンフィグレーションユニットにより新たな再コンフィグレーション命令を伝送し、
    前記再コンフィグレーションユニットは、再コンフィグレーション不可能な状態にあるセルに対する再コンフィグレーション命令を格納するメモリを有しており、
    前記再コンフィグレーションユニットは、前記少なくとも1つのセルに対する再コンフィグレーション命令が前記メモリに格納されていないという条件に基づき、該少なくとも1つのセルへ新たな再コンフィグレーション命令を伝送し、
    該新たな再コンフィグレーション命令に応答して、前記少なくとも1つのセルが再コンフィグレーション可能な状態にあるならば、該少なくとも1つのセルを前記新たな再コンフィグレーション命令に従い再コンフィグレーションし、再コンフィグレーション可能な状態にないならば、前記少なくとも1つのセルにより拒否情報が前記再コンフィグレーションユニットへ伝送され、
    該拒否情報に応答して、前記再コンフィグレーションユニットは前記新たな再コンフィグレーション命令を前記メモリに格納することを特徴とする、
    コンフィグレーション可能な多次元のセルアレイを再コンフィグレーションする方法。
  2. 2次元またはそれ以上の次元のセルアレイを備えたコンポーネント(たとえばFPGA,DPGA,DFP等)をデッドロックなく自動的にコンフィグレーションおよび再コンフィグレーションする方法において、
    コンフィグレーションおよび再コンフィグレーションを制御するユニットは、割り当てられたコンフィグレーション可能なエレメントの集合を管理し、
    該集合は、コンフィグレーション可能なすべてのエレメントの部分集合または全体集合を成し、前記の管理を、
    1.1 割り当てられたコンフィグレーション可能なエレメントの再コンフィグレーション要求が前記ユニットへ送られ、
    1.2 該ユニットは要求を処理し、ここで、
    a)コンフィグレーション可能なエレメントの目下のステータスを保護し、
    b)存在する先行の要求におけるまだロードすべきコンフィグレーションデータをバッファメモ(FILMO)からコンフィグレーション可能なエレメントへ可能なかぎりロードし、
    c)コンフィグレーションデータが該ユニットのメモリ内に存在しているならば、再コンフィグレーション要求を該ユニットにおけるメモリ内のロードすべきコンフィグレーションデータのアドレスに変換し、
    d)コンフィグレーションデータが該ユニットのメモリ内に存在していないならば、上位のユニットにおいて対応するIDをもつコンフィグレーションデータを要求してロードし、
    1.3 前記ユニットは命令シーケンスのコンフィグレーションデータを処理し、ここで、
    a)コンフィグレーション可能なエレメントがコンフィグレーションデータを受け入れることができるならば、コンフィグレーション可能なエレメントへ該データをロードし、
    b)コンフィグレーションデータを受け入れることのできないコンフィグレーション可能なエレメントのデータは、その時間順序に従いバッファメモリ(FILMO)へロードし、
    1.4 コンフィグレーションデータが完全に処理されてしまった後、再び新たに発生する要求を受け入れ、新たな要求が発生するまで、存在する先行の要求においてまだロードしなければならないコンフィグレーションデータを、バッファメモリ(FILMO)からコンフィグレーション可能なエレメントへロードする、
    ことにより行うことを特徴とする、
    2次元またはそれ以上の次元のセルアレイを備えたコンポーネント(たとえばFPGA,DPGA,DFP等)をデッドロックなく自動的にコンフィグレーションおよび再コンフィグレーションする方法。
  3. コンフィグレーション可能なエレメントに受け入れられなかったコンフィグレーションデータを、バッファメモリ(FILMO)の最後に書き込む、請求項2記載の方法。
  4. コンフィグレーション可能なエレメントに書き込むため、コンフィグレーションデータをバッファメモリの最初から最後まで読み出し、バッファメモリを常に完全にスキャンする、請求項2または3記載の方法。
  5. バッファメモリの最初においてコンフィグレーション可能なエレメントに書き込まれるコンフィグレーションデータをバッファメモリ内で消去し、つまり読み出しポインタを書き込まれたデータの後ろにセットする、請求項2から4のいずれか1項記載の方法。
  6. バッファメモリの中間からコンフィグレーション可能なエレメントに書き込まれるコンフィグレーションデータを、
    a)バッファメモリ内で消去されたとマーキングし、それにより新たな読み出しスキャン時には飛び越されるようにするかまたは、
    b)バッファメモリ(FILMO)内で消去し、該消去にあたり、まだ存在しているコンフィグレーションデータを消去すべきメモリロケーションからバッファメモリ(FILMO)の最初または最後までシフトし、消去されたメモリロケーションが既存のコンフィグレーションデータにより占有され、それに応じてポインタがメモリの最初または最後に合わせて整合されるよう、前記のシフトを行う、
    請求項2から5いずれか1項記載の方法。
  7. ステートマシン(ガーベージコレクタ)が前記ユニットのメモリ(CTR)を、メモリの隙間が生じないように管理し、ここでメモリの隙間を存在しているコンフィグレーションデータによって、メモリの隙間の最初から出発してメモリ(CTR)の最後までシフトし、消去されたメモリロケーションが既存のコンフィグレーションデータによって占有され、それに応じてポインタがメモリの最後に合わせて整合され、IDの変換がシフトされたメモリロケーションに合わせて整合されるよう、前記のシフトを行う、請求項2から6のいずれか1項記載の方法。
  8. ユニットに到来する要求をコンフィグレーションルーチンの一義的な識別子(ID)に変換し、IDはメモリ(CTR)内のメモリロケーションを指す、請求項2から7のいずれか1項記載の方法。
  9. コンフィグレーションデータは別のコンフィグレーションデータのロードに作用する(EXECUTE)、請求項2から8のいずれか1項記載の方法。
  10. 前記ユニットは階層構造的に1つのツリー構造内に配置されている、請求項2から9のいずれか1項記載の方法。
  11. 前記ツリー構造内で最上位におかれたユニットは、1つの共通のメモリを上位のコンピュータと分け合い、上位のコンピュータはコンポーネント内のシーケンスを上位のユニットとの通信を介して制御する、請求項2から10のいずれか1項記載の方法。
  12. 中間および最上位の階層平面に属するユニットは、通常の要求(トリガ)のほかにIDの要求にも応答し、参照されるコンフィグレーションルーチンにおけるメモリロケーションのアドレスへの前記IDの変換が行われ、トリガからIDへの変換が省略される、請求項2から11のいずれか1項記載の方法。
  13. コンフィグレーションデータは別のユニットへの要求により、該別のユニットにおける他のコンフィグレーションデータの実行に作用を及ぼし(TRIGGER)、ここで前記要求は、
    a)ブロードキャストとして他のすべてのユニットへ送られる、
    b)すぐ上に位置するユニットだけに送られる、
    c)すぐ下に位置するユニットだけに送られる、
    d)アドレッシングされた特定のユニットへ送られる、
    請求項2から12のいずれか1項記載の方法。
  14. コンフィグレーション可能なエレメントにおいて受け入れられなかった該エレメントの所定のコンフィグレーションデータをバッファメモリ(FILMO)にロードし、1つの命令シーケンスにおける後続のコンフィグレーションデータ全体もバッファメモリにロードする、請求項2記載の方法。
  15. 1つの命令シーケンスにおける先行するすべてのコンフィグレーションデータをコンフィグレーション可能なエレメントにロードできたときだけ、コンフィグレーション可能なエレメントへ該エレメントの所定のコンフィグレーションデータをロードする、請求項2記載の方法。
  16. 請求項14または15記載の方法を使用することにより、命令シーケンス内のまえもって定められた一定のコンフィグレーション順序を守る、請求項14または15記載の方法。
  17. 割り当てられたエレメントから到来する再コンフィグレーション要求を、対応する命令シーケンスの一義的な識別番号に変換する、請求項2記載の方法。
  18. 識別番号への変換にあたり参照された再コンフィグレーション要求を検出せず、参照されていないとマーキングして処理する、請求項17記載の方法。
  19. 識別番号の変換をルックアップテーブルを介して行う、請求項17記載の方法。
  20. 割り当てられたエレメントから到来する再コンフィグレーション要求には一義的な識別番号がすでに設けられている、請求項2記載の方法。
  21. 一義的な識別番号をメモリ内の対応する命令シーケンスのアドレスに変換する、請求項17から20のいずれか1項記載の方法。
  22. 有効なアドレスが存在していなければ、対応する命令シーケンスをメモリにロードしてアドレス参照を確立する、請求項21記載の方法。
  23. 識別番号からアドレスへの変換をルックアップテーブルによって行う、請求項21記載の方法。
  24. バッファメモリを別個のメモリとしては構成せず、精確に命令シーケンスと一致させ、コンフィグレーション不可能なコンフィグレーションワードをそのようなワードとしてマーキングし、該命令シーケンスが再度呼び出されたときにはマーキングされたコンフィグレーションワードだけを新たに処理する、請求項2から23のいずれか1項記載の方法。
  25. 命令シーケンスをポインタによってチェーン結合し、以前はコンフィグレーション不可能だったコンフィグレーションワードをコンフィグレーション可能なエレメントへロードするときに時間順序が守られるよう、前記のチェーン結合を行う、請求項2または24記載の方法。
  26. 命令シーケンスを完全にポインタによりチェーン結合し、ガーベージコレクタがチェーンに基づきすべての命令シーケンスにわたって動作し、除去すべき命令シーケンスを後続の命令シーケンスによって上書きし、ポインタチェーンから取り除く、請求項2または24記載の方法。
JP2000533804A 1998-02-25 1999-02-25 2次元またはそれ以上の次元のプログラミング可能なセル構造を備えたデータフロープロセッサおよびコンポーネントをデッドロックなくコンフィグレーションする方法 Expired - Fee Related JP4338308B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE19807872.2 1998-02-25
DE19807872A DE19807872A1 (de) 1998-02-25 1998-02-25 Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
PCT/DE1999/000505 WO1999044120A2 (de) 1998-02-25 1999-02-25 VERFAHREN ZUR DEADLOCKFREIEN KONFIGURATION VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, O. DGL.)

Publications (3)

Publication Number Publication Date
JP2002505535A JP2002505535A (ja) 2002-02-19
JP2002505535A5 JP2002505535A5 (ja) 2006-04-20
JP4338308B2 true JP4338308B2 (ja) 2009-10-07

Family

ID=7858839

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000533804A Expired - Fee Related JP4338308B2 (ja) 1998-02-25 1999-02-25 2次元またはそれ以上の次元のプログラミング可能なセル構造を備えたデータフロープロセッサおよびコンポーネントをデッドロックなくコンフィグレーションする方法
JP2000533829A Expired - Fee Related JP4215394B2 (ja) 1998-02-25 1999-02-25 データフロープロセッサおよび2次元またはそれ以上の次元のプログラミング可能なセル構造をもつコンポーネントにおけるコンフィグレーションデータの階層的キャッシュ方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2000533829A Expired - Fee Related JP4215394B2 (ja) 1998-02-25 1999-02-25 データフロープロセッサおよび2次元またはそれ以上の次元のプログラミング可能なセル構造をもつコンポーネントにおけるコンフィグレーションデータの階層的キャッシュ方法

Country Status (10)

Country Link
US (3) US6480937B1 (ja)
EP (4) EP1057117B1 (ja)
JP (2) JP4338308B2 (ja)
CN (2) CN1298521A (ja)
AT (2) ATE217713T1 (ja)
AU (2) AU3326299A (ja)
CA (2) CA2321874A1 (ja)
DE (5) DE19807872A1 (ja)
EA (2) EA003406B1 (ja)
WO (2) WO1999044147A2 (ja)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
EP1466264B1 (de) * 1995-12-29 2011-09-14 Richter, Thomas Verfahren zur konfiguration der verbindung zwischen datenverarbeitungszellen
US6205249B1 (en) 1998-04-02 2001-03-20 Scott A. Moskowitz Multiple transform utilization and applications for secure digital watermarking
US7664263B2 (en) 1998-03-24 2010-02-16 Moskowitz Scott A Method for combining transfer functions with predetermined key creation
US7177429B2 (en) 2000-12-07 2007-02-13 Blue Spike, Inc. System and methods for permitting open access to data objects and for securing data within the data objects
US7457962B2 (en) 1996-07-02 2008-11-25 Wistaria Trading, Inc Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US7159116B2 (en) 1999-12-07 2007-01-02 Blue Spike, Inc. Systems, methods and devices for trusted transactions
US7346472B1 (en) 2000-09-07 2008-03-18 Blue Spike, Inc. Method and device for monitoring and analyzing signals
US7095874B2 (en) 1996-07-02 2006-08-22 Wistaria Trading, Inc. Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
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
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
DE19704742A1 (de) * 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US7664264B2 (en) 1999-03-24 2010-02-16 Blue Spike, Inc. Utilizing data reduction in steganographic and cryptographic systems
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US7475246B1 (en) 1999-08-04 2009-01-06 Blue Spike, Inc. Secure personal content server
DE19946752A1 (de) * 1999-09-29 2001-04-12 Infineon Technologies Ag Rekonfigurierbares Gate-Array
JP2004506261A (ja) * 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US7127615B2 (en) 2000-09-20 2006-10-24 Blue Spike, Inc. Security based on subliminal and supraliminal channels for data objects
US7502920B2 (en) * 2000-10-03 2009-03-10 Intel Corporation Hierarchical storage architecture for reconfigurable logic configurations
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US20040015899A1 (en) * 2000-10-06 2004-01-22 Frank May Method for processing data
GB2368669B (en) * 2000-10-31 2005-06-22 Advanced Risc Mach Ltd Integrated circuit configuration
US9037807B2 (en) * 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
JP2004535613A (ja) 2001-03-05 2004-11-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理方法およびデータ処理装置
US7624204B2 (en) * 2001-03-22 2009-11-24 Nvidia Corporation Input/output controller node in an adaptable computing environment
US7657877B2 (en) * 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) * 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
EP1443392A4 (en) * 2001-09-07 2007-08-15 Ip Flex Inc DATA PROCESSING DEVICE AND ASSOCIATED CONTROL METHOD
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
DE10147772C1 (de) * 2001-09-27 2003-09-11 Siemens Ag Verfahren zum Betreiben eines Übertragungssystems und Übertragungssystem in einem Energieversorgungsnetz
US7594229B2 (en) * 2001-10-09 2009-09-22 Nvidia Corp. Predictive resource allocation in computing systems
US7644279B2 (en) * 2001-12-05 2010-01-05 Nvidia Corporation Consumer product distribution in the embedded system market
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
AU2003214046A1 (en) * 2002-01-18 2003-09-09 Pact Xpp Technologies Ag Method and device for partitioning large computer programs
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
EP1514193B1 (de) 2002-02-18 2008-07-23 PACT XPP Technologies AG Bussysteme und rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20060075211A1 (en) * 2002-03-21 2006-04-06 Martin Vorbach Method and device for data processing
JP4501914B2 (ja) * 2002-04-03 2010-07-14 ソニー株式会社 集積回路、および集積回路装置
US7287275B2 (en) 2002-04-17 2007-10-23 Moskowitz Scott A Methods, systems and devices for packet watermarking and efficient provisioning of bandwidth
US7093255B1 (en) * 2002-05-31 2006-08-15 Quicksilver Technology, Inc. Method for estimating cost when placing operations within a modulo scheduler when scheduling for processors with a large number of function units or reconfigurable data paths
US7620678B1 (en) 2002-06-12 2009-11-17 Nvidia Corporation Method and system for reducing the time-to-market concerns for embedded system design
US7802108B1 (en) 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7249352B2 (en) * 2002-08-22 2007-07-24 International Business Machines Corporation Apparatus and method for removing elements from a linked list
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US8949576B2 (en) * 2002-11-01 2015-02-03 Nvidia Corporation Arithmetic node including general digital signal processing functions for an adaptive computing machine
US7617100B1 (en) 2003-01-10 2009-11-10 Nvidia Corporation Method and system for providing an excitation-pattern based audio coding scheme
JP2006524850A (ja) * 2003-04-04 2006-11-02 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理方法およびデータ処理装置
US9330060B1 (en) * 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US7450600B2 (en) * 2003-04-21 2008-11-11 Microsoft Corporation Method and apparatus for managing a data carousel
US7565677B1 (en) 2003-04-21 2009-07-21 Microsoft Corporation Method and apparatus for managing a data carousel
US8660182B2 (en) * 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
WO2005001689A1 (ja) * 2003-06-25 2005-01-06 Nec Corporation 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム
WO2006082091A2 (en) * 2005-02-07 2006-08-10 Pact Xpp Technologies Ag Low latency massive parallel data processing device
US8296764B2 (en) * 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US7484045B2 (en) * 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US8018463B2 (en) * 2004-05-10 2011-09-13 Nvidia Corporation Processor for video data
US8130825B2 (en) * 2004-05-10 2012-03-06 Nvidia Corporation Processor for video data encoding/decoding
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
TWI256013B (en) * 2004-10-12 2006-06-01 Uli Electronics Inc Sound-effect processing circuit
CN100476795C (zh) * 2005-02-21 2009-04-08 徐建 事件处理机
US7788418B2 (en) * 2005-06-01 2010-08-31 Siemens Ag Measurement or protective device with independent software modules
US7281942B2 (en) * 2005-11-18 2007-10-16 Ideal Industries, Inc. Releasable wire connector
US8731071B1 (en) 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
US7827451B2 (en) * 2006-05-24 2010-11-02 International Business Machines Corporation Method, system and program product for establishing decimal floating point operands for facilitating testing of decimal floating point instructions
US8660380B2 (en) * 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
JP5045036B2 (ja) * 2006-09-05 2012-10-10 富士ゼロックス株式会社 データ処理装置
US7999820B1 (en) 2006-10-23 2011-08-16 Nvidia Corporation Methods and systems for reusing memory addresses in a graphics system
US20080111923A1 (en) * 2006-11-09 2008-05-15 Scheuermann W James Processor for video data
WO2008061161A2 (en) * 2006-11-14 2008-05-22 Star Bridge Systems, Inc. Execution of legacy code on hybrid computing platform
US8169789B1 (en) 2007-04-10 2012-05-01 Nvidia Corporation Graphics processing unit stiffening frame
US7987065B1 (en) 2007-04-17 2011-07-26 Nvidia Corporation Automatic quality testing of multimedia rendering by software drivers
US8572598B1 (en) 2007-04-18 2013-10-29 Nvidia Corporation Method and system for upgrading software in a computing device
US8756482B2 (en) * 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US20080291209A1 (en) * 2007-05-25 2008-11-27 Nvidia Corporation Encoding Multi-media Signals
US8726283B1 (en) 2007-06-04 2014-05-13 Nvidia Corporation Deadlock avoidance skid buffer
US7948500B2 (en) * 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
US7944453B1 (en) 2007-06-07 2011-05-17 Nvidia Corporation Extrapolation texture filtering for nonresident mipmaps
US9118927B2 (en) * 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8873625B2 (en) 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
JP5294304B2 (ja) * 2008-06-18 2013-09-18 日本電気株式会社 再構成可能電子回路装置
US8598990B2 (en) * 2008-06-30 2013-12-03 Symbol Technologies, Inc. Delimited read command for efficient data access from radio frequency identification (RFID) tags
US8666181B2 (en) * 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
EP2441005A2 (en) 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
JP2016178229A (ja) 2015-03-20 2016-10-06 株式会社東芝 再構成可能な回路
JP6672190B2 (ja) * 2017-01-16 2020-03-25 株式会社東芝 データベースシステムおよびデータ処理方法
US11803507B2 (en) 2018-10-29 2023-10-31 Secturion Systems, Inc. Data stream protocol field decoding by a systolic array

Family Cites Families (152)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5936857A (ja) 1982-08-25 1984-02-29 Nec Corp プロセツサユニツト
US4739474A (en) 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US5123109A (en) 1983-05-31 1992-06-16 Thinking Machines Corporation Parallel processor including a processor array with plural data transfer arrangements including (1) a global router and (2) a proximate-neighbor transfer system
US4870302A (en) 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4761755A (en) 1984-07-11 1988-08-02 Prime Computer, Inc. Data processing system and method having an improved arithmetic unit
US5023775A (en) 1985-02-14 1991-06-11 Intel Corporation Software programmable logic array utilizing "and" and "or" gates
US5247689A (en) 1985-02-25 1993-09-21 Ewert Alfred P Parallel digital processor including lateral transfer buses with interrupt switches to form bus interconnection segments
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US5225719A (en) 1985-03-29 1993-07-06 Advanced Micro Devices, Inc. Family of multiple segmented programmable logic blocks interconnected by a high speed centralized switch matrix
US5015884A (en) 1985-03-29 1991-05-14 Advanced Micro Devices, Inc. Multiple array high performance programmable logic device family
US4967340A (en) 1985-06-12 1990-10-30 E-Systems, Inc. Adaptive processing system having an array of individually configurable processing components
EP0221360B1 (en) 1985-11-04 1992-12-30 International Business Machines Corporation Digital data message transmission networks and the establishing of communication paths therein
US4852048A (en) 1985-12-12 1989-07-25 Itt Corporation Single instruction multiple data (SIMD) cellular array processing apparatus employing a common bus where a first number of bits manifest a first bus portion and a second number of bits manifest a second bus portion
US5021947A (en) 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
US4860201A (en) 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
US5367208A (en) 1986-09-19 1994-11-22 Actel Corporation Reconfigurable programmable interconnect architecture
US4811214A (en) 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US5226122A (en) 1987-08-21 1993-07-06 Compaq Computer Corp. Programmable logic system for filtering commands to a microprocessor
US5115510A (en) 1987-10-20 1992-05-19 Sharp Kabushiki Kaisha Multistage data flow processor with instruction packet, fetch, storage transmission and address generation controlled by destination information
US4918690A (en) 1987-11-10 1990-04-17 Echelon Systems Corp. Network and intelligent cell for providing sensing, bidirectional communications and control
US5113498A (en) 1987-11-10 1992-05-12 Echelon Corporation Input/output section for an intelligent cell which provides sensing, bidirectional communications and control
US5303172A (en) 1988-02-16 1994-04-12 Array Microsystems Pipelined combination and vector signal processor
US5204935A (en) 1988-08-19 1993-04-20 Fuji Xerox Co., Ltd. Programmable fuzzy logic circuits
US4901268A (en) 1988-08-19 1990-02-13 General Electric Company Multiple function data processor
US5353432A (en) * 1988-09-09 1994-10-04 Compaq Computer Corporation Interactive method for configuration of computer system and circuit boards with user specification of system resources and computer resolution of resource conflicts
EP0363631B1 (de) 1988-09-22 1993-12-15 Siemens Aktiengesellschaft Schaltungsanordnung für Fernmeldevermittlungsanlagen, insbesondere PCM-Zeitmultiplex-Fernsprechvermittlungsanlagen mit Zentralkoppelfeld und angeschlossenen Teilkoppelfeldern
EP0390907B1 (en) 1988-10-07 1996-07-03 Martin Marietta Corporation Parallel data processor
US5014193A (en) 1988-10-14 1991-05-07 Compaq Computer Corporation Dynamically configurable portable computer system
US5136717A (en) 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5081375A (en) 1989-01-19 1992-01-14 National Semiconductor Corp. Method for operating a multiple page programmable logic device
GB8906145D0 (en) 1989-03-17 1989-05-04 Algotronix Ltd Configurable cellular array
US5203005A (en) 1989-05-02 1993-04-13 Horst Robert W Cell structure for linear array wafer scale integration architecture with capability to open boundary i/o bus without neighbor acknowledgement
US5109503A (en) 1989-05-22 1992-04-28 Ge Fanuc Automation North America, Inc. Apparatus with reconfigurable counter includes memory for storing plurality of counter configuration files which respectively define plurality of predetermined counters
US5489857A (en) 1992-08-03 1996-02-06 Advanced Micro Devices, Inc. Flexible synchronous/asynchronous cell structure for a high density programmable logic device
US5212652A (en) 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5233539A (en) 1989-08-15 1993-08-03 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure, input/output structure and configurable logic block
US5128559A (en) 1989-09-29 1992-07-07 Sgs-Thomson Microelectronics, Inc. Logic block for programmable logic devices
JP2968289B2 (ja) 1989-11-08 1999-10-25 株式会社リコー 中央演算処理装置
GB8925721D0 (en) 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5522083A (en) 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5125801A (en) 1990-02-02 1992-06-30 Isco, Inc. Pumping system
US5142469A (en) 1990-03-29 1992-08-25 Ge Fanuc Automation North America, Inc. Method for converting a programmable logic controller hardware configuration and corresponding control program for use on a first programmable logic controller to use on a second programmable logic controller
US5198705A (en) 1990-05-11 1993-03-30 Actel Corporation Logic module with configurable combinational and sequential blocks
US5483620A (en) 1990-05-22 1996-01-09 International Business Machines Corp. Learning machine synapse processor system apparatus
US5111079A (en) 1990-06-29 1992-05-05 Sgs-Thomson Microelectronics, Inc. Power reduction circuit for programmable logic device
SE9002558D0 (sv) 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
US5713037A (en) 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
CA2051222C (en) * 1990-11-30 1998-05-05 Pradeep S. Sindhu Consistent packet switched memory bus for shared memory multiprocessors
US5301344A (en) 1991-01-29 1994-04-05 Analogic Corporation Multibus sequential processor to perform in parallel a plurality of reconfigurable logic operations on a plurality of data sets
EP0499695B1 (de) 1991-02-22 1996-05-01 Siemens Aktiengesellschaft Speicherprogrammierbare Steuerung
JPH04290155A (ja) 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
JPH04293151A (ja) 1991-03-20 1992-10-16 Fujitsu Ltd 並列データ処理方式
US5617547A (en) 1991-03-29 1997-04-01 International Business Machines Corporation Switch network extension of bus architecture
JPH04328657A (ja) 1991-04-30 1992-11-17 Toshiba Corp キャッシュメモリ
US5389431A (en) 1991-05-14 1995-02-14 Idemitsu Kosan Co., Ltd. Nonwoven fabric and process for producing same
US5446904A (en) * 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
WO1992022029A1 (en) 1991-05-24 1992-12-10 British Technology Group Usa, Inc. Optimizing compiler for computers
US5659797A (en) 1991-06-24 1997-08-19 U.S. Philips Corporation Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
US5338984A (en) 1991-08-29 1994-08-16 National Semiconductor Corp. Local and express diagonal busses in a configurable logic array
US5260610A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
AU2939892A (en) 1991-12-06 1993-06-28 Richard S. Norman Massively-parallel direct output processor array
US5208491A (en) 1992-01-07 1993-05-04 Washington Research Foundation Field programmable gate array
JP2791243B2 (ja) 1992-03-13 1998-08-27 株式会社東芝 階層間同期化システムおよびこれを用いた大規模集積回路
US5452401A (en) 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
JP3737104B2 (ja) 1992-06-04 2006-01-18 ジリンクス,インコーポレーテッド プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法
DE4221278C2 (de) 1992-06-29 1996-02-29 Martin Vorbach Busgekoppeltes Mehrrechnersystem
US5475803A (en) 1992-07-10 1995-12-12 Lsi Logic Corporation Method for 2-D affine transformation of images
US5590348A (en) 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5497498A (en) 1992-11-05 1996-03-05 Giga Operations Corporation Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation
US5392437A (en) 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
GB9303084D0 (en) 1993-02-16 1993-03-31 Inmos Ltd Programmable logic circuit
JPH06276086A (ja) 1993-03-18 1994-09-30 Fuji Xerox Co Ltd フィールドプログラマブルゲートアレイ
US5548773A (en) 1993-03-30 1996-08-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Digital parallel processor array for optimum path planning
US5596742A (en) 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5473266A (en) 1993-04-19 1995-12-05 Altera Corporation Programmable logic device having fast programmable logic array blocks and a central global interconnect array
DE4416881C2 (de) 1993-05-13 1998-03-19 Pact Inf Tech Gmbh Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
IL109921A (en) * 1993-06-24 1997-09-30 Quickturn Design Systems Method and apparatus for configuring memory circuits
US5444394A (en) 1993-07-08 1995-08-22 Altera Corporation PLD with selective inputs from local and global conductors
JPH0736858A (ja) 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
US5457644A (en) 1993-08-20 1995-10-10 Actel Corporation Field programmable digital signal processing array integrated circuit
US5440538A (en) 1993-09-23 1995-08-08 Massachusetts Institute Of Technology Communication system with redundant links and data bit time multiplexing
US5455525A (en) 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
US5535406A (en) 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
KR100391805B1 (ko) 1994-03-22 2003-10-22 하퍼칩, 인코포레이티드 직접대체셀(cell)을갖는결함허용(faulttolerance)아키텍쳐자료처리시스템
US5561738A (en) 1994-03-25 1996-10-01 Motorola, Inc. Data processor for executing a fuzzy logic operation and method therefor
US5761484A (en) 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5430687A (en) 1994-04-01 1995-07-04 Xilinx, Inc. Programmable logic device including a parallel input device for loading memory cells
US5896551A (en) * 1994-04-15 1999-04-20 Micron Technology, Inc. Initializing and reprogramming circuitry for state independent memory array burst operations control
US5426378A (en) 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
JP2671804B2 (ja) 1994-05-27 1997-11-05 日本電気株式会社 階層型資源管理方法
US5532693A (en) 1994-06-13 1996-07-02 Advanced Hardware Architectures Adaptive data compression system with systolic string matching logic
US5513366A (en) 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
EP0707269A1 (en) * 1994-10-11 1996-04-17 International Business Machines Corporation Cache coherence network for a multiprocessor data processing system
US5493239A (en) 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
US5532957A (en) 1995-01-31 1996-07-02 Texas Instruments Incorporated Field reconfigurable logic/memory array
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5537057A (en) 1995-02-14 1996-07-16 Altera Corporation Programmable logic array device with grouped logic regions and three types of conductors
US5892961A (en) 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
US5570040A (en) 1995-03-22 1996-10-29 Altera Corporation Programmable logic array integrated circuit incorporating a first-in first-out memory
US5541530A (en) 1995-05-17 1996-07-30 Altera Corporation Programmable logic array integrated circuits with blocks of logic regions grouped into super-blocks
US5646544A (en) 1995-06-05 1997-07-08 International Business Machines Corporation System and method for dynamically reconfiguring a programmable gate array
US5559450A (en) 1995-07-27 1996-09-24 Lucent Technologies Inc. Field programmable gate array with multi-port RAM
US5784313A (en) * 1995-08-18 1998-07-21 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US5778439A (en) 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5583450A (en) 1995-08-18 1996-12-10 Xilinx, Inc. Sequencer for a time multiplexed programmable logic device
US5652894A (en) 1995-09-29 1997-07-29 Intel Corporation Method and apparatus for providing power saving modes to a pipelined processor
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5936424A (en) 1996-02-02 1999-08-10 Xilinx, Inc. High speed bus with tree structure for selecting bus driver
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5894565A (en) 1996-05-20 1999-04-13 Atmel Corporation Field programmable gate array with distributed RAM and increased cell utilization
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
US5838165A (en) 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5828858A (en) 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US6005410A (en) 1996-12-05 1999-12-21 International Business Machines Corporation Interconnect structure between heterogeneous core regions in a programmable array
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654593A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
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
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
DE19704044A1 (de) * 1997-02-04 1998-08-13 Pact Inf Tech Gmbh Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
WO1998038958A1 (en) 1997-03-05 1998-09-11 Massachusetts Institute Of Technology A reconfigurable footprint mechanism for omnidirectional vehicles
US5884075A (en) * 1997-03-10 1999-03-16 Compaq Computer Corporation Conflict resolution using self-contained virtual devices
US6125408A (en) * 1997-03-10 2000-09-26 Compaq Computer Corporation Resource type prioritization in generating a device configuration
US6085317A (en) * 1997-08-15 2000-07-04 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6321366B1 (en) * 1997-05-02 2001-11-20 Axis Systems, Inc. Timing-insensitive glitch-free logic system and method
US6421817B1 (en) * 1997-05-29 2002-07-16 Xilinx, Inc. System and method of computation in a programmable logic device using virtual instructions
US6047115A (en) * 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
US6122719A (en) 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US6108760A (en) 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6127908A (en) 1997-11-17 2000-10-03 Massachusetts Institute Of Technology Microelectro-mechanical system actuator device and reconfigurable circuits utilizing same
AU2562899A (en) 1998-01-26 1999-08-09 Chameleon Systems, Inc. Reconfigurable logic for table lookup
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6243808B1 (en) 1999-03-08 2001-06-05 Chameleon Systems, Inc. Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups
US6347346B1 (en) 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
US6370596B1 (en) 1999-08-03 2002-04-09 Chameleon Systems, Inc. Logic flag registers for monitoring processing system events
US6341318B1 (en) 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6349346B1 (en) 1999-09-23 2002-02-19 Chameleon Systems, Inc. Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit
US6288566B1 (en) 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
US6311200B1 (en) 1999-09-23 2001-10-30 Chameleon Systems, Inc. Reconfigurable program sum of products generator
US6392912B1 (en) 2001-01-10 2002-05-21 Chameleon Systems, Inc. Loading data plane on reconfigurable chip

Also Published As

Publication number Publication date
EA200000879A1 (ru) 2001-12-24
ATE217715T1 (de) 2002-06-15
US6480937B1 (en) 2002-11-12
EP1164474A3 (de) 2009-08-12
WO1999044147A2 (de) 1999-09-02
EP1057117B1 (de) 2002-05-15
WO1999044147A3 (de) 1999-10-28
CN1298520A (zh) 2001-06-06
CA2321874A1 (en) 1999-09-02
ATE217713T1 (de) 2002-06-15
AU3137199A (en) 1999-09-15
JP2002505480A (ja) 2002-02-19
WO1999044120A3 (de) 1999-11-11
EP1057102A2 (de) 2000-12-06
JP4215394B2 (ja) 2009-01-28
EP2293193A1 (de) 2011-03-09
US6687788B2 (en) 2004-02-03
DE19980312D2 (de) 2001-03-22
US6571381B1 (en) 2003-05-27
DE59901446D1 (de) 2002-06-20
EP1057117A2 (de) 2000-12-06
EA003406B1 (ru) 2003-04-24
DE59901447D1 (de) 2002-06-20
EP1057102B1 (de) 2002-05-15
CN1298521A (zh) 2001-06-06
AU3326299A (en) 1999-09-15
DE19980309D2 (de) 2001-03-29
WO1999044120A2 (de) 1999-09-02
JP2002505535A (ja) 2002-02-19
EP1164474A2 (de) 2001-12-19
EA003407B1 (ru) 2003-04-24
DE19807872A1 (de) 1999-08-26
US20030074518A1 (en) 2003-04-17
EA200000880A1 (ru) 2001-12-24
CA2321877A1 (en) 1999-09-02

Similar Documents

Publication Publication Date Title
JP4338308B2 (ja) 2次元またはそれ以上の次元のプログラミング可能なセル構造を備えたデータフロープロセッサおよびコンポーネントをデッドロックなくコンフィグレーションする方法
US9218290B2 (en) Data caching in a network communications processor architecture
US6990555B2 (en) Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.)
US6055605A (en) Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US9183145B2 (en) Data caching in a network communications processor architecture
US8468329B2 (en) Pipeline configuration protocol and configuration unit communication
US6822959B2 (en) Enhancing performance by pre-fetching and caching data directly in a communication processor's register set
US6286090B1 (en) Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US9690747B2 (en) Configurable logic integrated circuit having a multidimensional structure of configurable elements
US20060206635A1 (en) DMA engine for protocol processing
US6085263A (en) Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US8321385B2 (en) Hash processing in a network communications processor architecture
US6108737A (en) Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
US8677075B2 (en) Memory manager for a network communications processor architecture
JP3889879B2 (ja) 仮想メモリ変換を制御する方法
JPH0786861B2 (ja) 共用メモリ・マルチプロセツサ・システム
JPH0652519B2 (ja) メモリーサブシステム入力キュー
US20150033000A1 (en) Parallel Processing Array of Arithmetic Unit having a Barrier Instruction
CN109739670A (zh) 节点内进程通信方法、装置、计算机设备和存储介质
CN111651375A (zh) 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统
WO2002011368A2 (en) Pre-fetching and caching data in a communication processor's register set
Yin et al. In-network memory access ordering for heterogeneous multicore systems
Bianchini et al. Designing and evaluating a cost-effective optical network for multiprocessors
JPH11338772A (ja) キャッシュメモリ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081114

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090319

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090410

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090604

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090630

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees