JP2003502728A - プロセッサおよびコプロセッサを含むコンピュータ・システム - Google Patents
プロセッサおよびコプロセッサを含むコンピュータ・システムInfo
- Publication number
- JP2003502728A JP2003502728A JP2001503043A JP2001503043A JP2003502728A JP 2003502728 A JP2003502728 A JP 2003502728A JP 2001503043 A JP2001503043 A JP 2001503043A JP 2001503043 A JP2001503043 A JP 2001503043A JP 2003502728 A JP2003502728 A JP 2003502728A
- Authority
- JP
- Japan
- Prior art keywords
- burst
- coprocessor
- instruction
- processor
- data
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 169
- 230000015654 memory Effects 0.000 claims abstract description 149
- 230000007246 mechanism Effects 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 abstract description 8
- 238000012546 transfer Methods 0.000 description 32
- 238000004364 calculation method Methods 0.000 description 29
- 238000004422 calculation algorithm Methods 0.000 description 18
- 230000000694 effects Effects 0.000 description 9
- 239000013598 vector Substances 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 241000238876 Acari Species 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000005094 computer simulation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 5
- 239000007853 buffer solution Substances 0.000 description 5
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 239000008000 CHES buffer Substances 0.000 description 1
- 102000012199 E3 ubiquitin-protein ligase Mdm2 Human genes 0.000 description 1
- 108050002772 E3 ubiquitin-protein ligase Mdm2 Proteins 0.000 description 1
- MKWKNSIESPFAQN-UHFFFAOYSA-N N-cyclohexyl-2-aminoethanesulfonic acid Chemical compound OS(=O)(=O)CCNC1CCCCC1 MKWKNSIESPFAQN-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
キテクチャに関し、詳細にはこのようなアーキテクチャにおけるコプロセッサに
よるメモリ・リソースの使用に関する。
CPUのような汎用マイクロプロセッサに基づいている。このようなマイクロプ
ロセッサは、幅広い範囲の計算タスクを処理するように十分に適合されるが、こ
れらは必然的にすべてのタスクに合わせて最適化されるのではない。タスクが計
算に集中する場合(媒体処理など)、CPUはしばしば実行に困難を生じる。
うに特に適合されたコプロセッサを使用することである。このようなコプロセッ
サは、ASIC(特定用途向けIC)を使用して構築することができる。これら
は特定の計算タスクのために構築され、したがってこのようなタスクに合わせて
最適化することができる。しかし、これらは使用において柔軟性がなく(これら
が特定のタスクのみのために設計されるので)、一般に製造に時間がかかる。解
決策としては、FPGA(フィールド・プログラム可能ゲート・アレイ)など、
所与の計算タスクに特に適合された構成でプログラムすることができる、柔軟性
のあるハードウェアの構築がある。このような構造が構成可能であるだけでなく
、再構成可能である場合は、さらなる柔軟性が達成される。このような再構成可
能な構造の一例がCHESSアレイであり、これは、国際特許出願第GB98/
00262号、国際特許出願第GB98/00248号、1998年12月11
日出願の米国特許出願第09/209,542号、およびその欧州の相当する欧
州特許出願第98309600.9号において論じられている。
とができるが、従来のアーキテクチャの構成がコプロセッサの有効性を抑制する
可能性がある。計算をなおより有効にコプロセッサに移すことができる装置を達
成することが、特にこれらの計算が大量のデータを処理することを含む場合、望
ましい。
用するための第2のプロセッサ、メモリ、バースト命令に従ってデータ・バース
トにおいてメモリへ書き込まれるかあるいはそこから読み取られるデータをバッ
ファに入れるための少なくとも1つのデータ・バッファ、バースト命令を実行す
るためのバースト・コントローラ、バースト・コントローラによる実行のために
バースト命令を順番に提供するためのバースト命令エレメントを含み、それによ
ってバースト命令が第1のプロセッサからバースト命令エレメントへ提供され、
バースト・コントローラによって実行されたバースト命令に従って少なくとも1
つのデータ・バッファを通じて、データが第2のプロセッサによってメモリから
読み取られ、そこへ書き込まれるコンピュータ・システムが提供される。
にこのようなブロックのメモリ・アドレスが定期的に変わる場合に有利である。
この装置により、このようなブロックを、メイン・プロセッサ(それらを使用す
るにあまり適していないシステム・コンポーネント・エレメントである)の関与
を最小にして、有効にメイン・メモリに出し入れすることができる。
な構造を達成することができる。これは、第2のプロセッサの実行を制御するた
めのコプロセッサ命令を順番に提供するためのコプロセッサ命令エレメントによ
り行うことができる(コプロセッサ命令は初めに第1のプロセッサによって提供
される)。コプロセッサ・コントローラがコプロセッサ命令をコプロセッサ命令
エレメントから受信し、それに従って第2のプロセッサの実行を制御するのがよ
い。このコプロセッサ・コントローラは、コプロセッサと少なくとも1つのデー
タ・バッファの間の通信を制御することができ、たとえば、バスがコプロセッサ
・コントローラとデータバッファの間に存在する場合、コプロセッサ・コントロ
ーラが、第2のプロセッサからバスに別々のデータ・ストリームの出入りのアク
セスを制御することができる。
ッサとバースト命令の実行を同期化するための同期化機構がある場合、特定の利
点を得ることができる。これは、コプロセッサがコプロセッサ命令に基づいて実
行する場合、特に十分に実施される。有効な手法は、データ・バッファにまだロ
ードされていないデータに対し第2のプロセッサの実行を必要とするコプロセッ
サ命令の実行をブロックし、データが第2のプロセッサによってデータ・バッフ
ァへ提供されていない場合、データ・バッファからメモリへのデータの格納のた
めのバースト命令の実行をブロックするように、同期化機構を適合させることで
ある。同期化機構を実行するための特に有効な方法は、カウンタを使用すること
であり、このカウンタは、適切なバーストおよびコプロセッサ命令を通じて増分
あるいは減分することができ、特定の命令をさらに減分できない場合はブロック
する。
、これは、第1のプロセッサによる実行のためのコードを提供すること、第1の
プロセッサへのコプロセッサとして動作する第2のプロセッサによって実行され
るタスクをコードから抽出すること、コードおよびタスクから、少なくとも1つ
のデータ・バッファにより、第2のプロセッサによるアクセスのためにデータ・
バーストにおいてメイン・メモリからデータを読み取り、そこへ書き込むことが
できるようにするためのバースト命令を決定すること、および少なくとも1つの
データ・バッファとメイン・メモリの間でデータの転送を制御するバースト・コ
ントローラによるバースト命令の実行と共に、コプロセッサ上のタスクの実行を
含む。
のためのコプロセッサ命令が、第2のプロセッサによるタスクの実行を制御する
ために決定されるのがよい。
期化が同期化機構によって達成されるのがよい。この同期化機構は、第1の命令
の正しい実行のために完了が必要である第2の命令が完了するまで、第1の命令
をブロックすることを、有効に含むことができる。この機構は、適切なバースト
またはコプロセッサ命令を通じて増分あるいは減分することができるカウンタを
使用することができる。
質的に、このシステムはプロセッサ1およびコプロセッサ2を含み、これらは、
最大の計算効率のために、計算をプロセッサ1とコプロセッサ2の間で区分する
ことができるよう構成されている。プロセッサ1は本質的にいかなる汎用プロセ
ッサ(たとえば、i960)でもよく、コプロセッサ2は本質的に、著しくより
高い有効性により計算の一部を処理することができるいかなるコプロセッサでも
よい。ここで記載された特定のシステムでは、本質的に計算全体がプロセッサ1
によるよりもコプロセッサ2によって処理されるが、本発明はこの特定の構成に
限定されるものではない。
あり、これについては以下でさらに述べられるが、コプロセッサ2の他の形式、
たとえば、ASICS、DSPなどを代りに使用することができる(対応する修
正を計算モデルに行うことが必要)。プロセッサ1およびコプロセッサ2は共に
DRAMメイン・メモリ3へのアクセスを有するが、プロセッサ1はより高速な
アクセス・メモリ4のキャッシュ、典型的にはSRAMへのアクセスも有する。
DRAM3への効率的なアクセスが、情報の「バースト」の効率的なローディン
グおよび格納のためにDRAMと通信するように適合された「バースト・バッフ
ァ」メモリ5によって提供され、バースト・バッファについては以下でさらに記
載される。バースト・バッファ5への命令が、バースト命令待ち行列6を通じて
提供され、バースト・バッファ5がバースト・バッファ・コントローラ7の制御
下で動作する。バースト・バッファのアーキテクチャは、以下に述べられる理由
のため、コプロセッサ2に関連付けられたアーキテクチャにおいて、ミラーリン
グされる。コプロセッサ2への命令がコプロセッサ命令待ち行列8において提供
され、コプロセッサがコプロセッサ・コントローラ9の制御下で動作する。バー
スト・バッファおよびコプロセッサの動作、およびそれらの関連付けられた命令
待ち行列の同期化が、プロセッサ1自体による一般の方法ではなく、特定の機構
によって達成される。この実施形態では、この機構がロード/実行セマフォ(sem
aphore)10および実行/格納セマフォ11を含み、これらは以下に記載される
方法で動作する(他のこのような同期化機構が可能であり、これらについても以
下に述べられる)。
サ1は一般に計算を制御するが、計算自体におけるステップのいくつか(または
、記載された実施形態では、すべて)がコプロセッサ2において実行されるよう
な方法で制御する。プロセッサ1が、バースト命令待ち行列6を通じて特定のタ
スクのための命令、すなわち、バースト・バッファ・コントローラ7の構成、お
よびバースト・バッファ・メモリ5とメイン・メモリ3の間のデータの転送のた
めの命令を提供する。さらに、コプロセッサ命令待ち行列8を通じて、プロセッ
サ1はさらなるタスクのための命令、すなわち、コプロセッサ・コントローラ9
の構成、およびコプロセッサ2上の計算の開始のための命令を提供する。コプロ
セッサ2上で実行されるこの計算は、バースト・バッファ・メモリ5を通じてデ
ータにアクセスする。
作から減結合し、バースト命令待ち行列6の使用が有効にプロセッサ1をバース
ト・バッファ5から減結合する。この構成の特定の詳細は、以下でより詳細に論
じられる。この減結合については、本発明のこの実施形態のための計算モデルに
関連して、以下でさらに論じられる。
たコプロセッサはCHESS FPGA構造であり、これは、国際特許出願第G
B98/00262号、国際特許出願第GB98/00248号、1998年1
2月11日出願の米国特許出願第09/209,542号、およびその欧州の相
当する欧州特許出願第98309600.9号に記載されており、それらの出願
の内容が参照により本明細書に組み込まれる。このコプロセッサは再構成可能で
あり、4ビットALUのチェッカーボード・アレイおよびスイッチング構造を含
み、それにより、コプロセッサが構成可能であり、1つの4ビットALUからの
出力を使用して別のALUへ命令することができる。CHESSアーキテクチャ
は特に、パイプライン計算に有効であり、ここでは入力および出力データ・スト
リームと対話するように有効に適合される。コプロセッサ・コントローラ9(こ
の動作が以下でさらに論じられる)が、高レベルの制御命令(計算の詳細に関す
る命令ではなく、コプロセッサ2の制御全体のための命令、たとえば「nサイク
ル実行する」)を、コプロセッサ命令待ち行列8から受信する。CHESSコプ
ロセッサ2はコプロセッサ・コントローラ9の制御下で動作し、バッファ・バー
スト5との対話を通じてデータを受信し、格納する。したがって、CHESSコ
プロセッサ2は入力ストリーム上で動作して、出力ストリームを生成する。これ
は、CHESSコプロセッサの動作が非常に予測可能なので、効率的なプロセス
にすることができる。このモデルに従った計算の詳細な動作が、後で論じられる
。
キャッシュ4へのアクセスを有するが、メイン・メモリはDRAM3として提供
される。DRAMへの有効なアクセスが、バースト・バッファ5によって提供さ
れる。バースト・バッファは、欧州特許出願第97309514.4号、および
1998年1月6日出願の対応する米国特許出願第09/3,526号において
記載されており、それらの出願が参照により本明細書に組み込まれる。バースト
・バッファ・アーキテクチャについては本明細書で簡単に記載されるが、このア
ーキテクチャの十分な詳細については、先の出願を参照していただきたい。
のエレメント(前記の出願において論じられるように、変形も可能)が、図2お
よび図3に示される。バースト・バッファ構成エレメントがプロセッサ1と通信
する接続12が提供される。メモリ・バス16が、メイン・メモリ3(図2にお
いては図示せず)への接続を提供する。このメモリ・バスはキャッシュ4と共有
することができ、この場合、メモリ・データパス・アービタ58が、キャッシュ
4との通信も可能にする。
上で実行できるようにすることであり、このコプロセッサ2とメイン・メモリ3
の間のデータ転送を、両方が各システム構成エレメントの効率を最大にすると同
時に全体のシステム効率を最大にする方法で行うことを含む。これは、以下のい
くつかの技術の組み合わせによって達成される。
ースト・アクセス、 2)「ダブル・バッファリング」とよばれる技術を使用した、コプロセッサ2上の
計算の同時実行、およびメイン・メモリ3とバースト・バッファ・メモリ5の間
のデータ転送、および 3)プロセッサ1の実行をコプロセッサ2およびバースト・バッファ・メモリ5の
実行から、命令待ち行列の使用を通じて切り離すことである。
おいて知られている技術である。本明細書で使用される形式では、バースト・バ
ッファ・メモリ5の一部からのデータを消費すること、すなわち読み取ること、
他のデータを同じメモリの異なる領域へ生成すること、すなわち書き込むことを
含み、先に書き込まれた領域を読み取り、その逆もできるスイッチング機構を有
する。
。DRAMは、正方行列におけるメモリ位置のアレイを含む。アレイにおけるエ
レメントにアクセスするには、行が最初に選択され(あるいは「開かれ」)なけ
ればならず、その後に適切な列の選択が続く。しかし、行が選択された後、その
行における列への連続アクセスは、単に列アドレスを提供することによって実行
することができる。行を開くことおよびその行にローカルな一連のアクセスを実
行することの概念が、「バースト」と呼ばれる。媒体集中計算(典型的には、い
かなるデータ依存アドレス指定もなしに長いアレイにアクセスする、規則正しい
プログラム・ループを使用するアルゴリズムを含む)におけるように、データが
規則正しい方法で構成されるとき、バーストの有効な使用が劇的に計算速度を向
上させることができる。バースト・バッファは、バーストの効率的な使用を通じ
てDRAMからのデータにアクセスするように適合された、新しいメモリ構造で
ある。
各バースト・バッファがそれぞれのデータ・ストリームへ割り振られる。アルゴ
リズムが、異なる数のデータ・ストリームを有するので、固定量のSRAM26
がバースト・バッファ・メモリ領域としてバースト・バッファに使用可能であり
、この量が、必要とされるバッファの数に従って分割される。たとえば、固定S
RAMの量が2Kバイトである場合、かつ、アルゴリズムが4つのデータ・スト
リームを有する場合、メモリ領域を4つの512バイトのバースト・バッファに
区分することができる。
レスの組を含む。
tride)であり、Lは長さであり、Nは自然数の組である。この式において明示的
に定義されないが、バースト順序が、0からL−1まで増分するiによって定義
される。したがって、バーストは、次の3個のエレメントからなる集合によって
定義することができる。
る。これは、バーストをバイト、ハーフワード、またはワードのサイズにするこ
とができることを意味する。ストライドの単位は、このことを考慮しなければな
らない。「サイズド・バースト」は、次の形式の4個のエレメントからなる集合
によって定義される。
ド・バーストである。コンパイラが、ソフトウェア・サイズド・バーストからチ
ャネル・バーストへのマッピングを担う。チャネル・バーストは、次の4個のエ
レメントからなる集合によって定義することができる。
が常に以下の形式である。
ngth,stride)に短縮される。
フトウェア処理によって高レベルで処理される。この実施形態では、「ダブル・
バッファリング」が使用されるが、他の戦略も確かに可能であり、この判断は記
憶の効率と簡潔性の間のトレードオフを含む。バースト・バッファ・メモリ領域
26がメイン・メモリ3からデータをロードし、そこへデータを格納し、これは
メモリ・データパス・アービタ58を通じて行い、これがDMAコントローラ5
6の制御下で動作し、バースト命令待ち行列6を通じて受信される命令に応答す
る。データが、バースト・バッファ・メモリ領域26とプロセッサ1またはコプ
ロセッサ2の間で、接続手段12を通じて交換される。図3に示すように、バー
スト・バッファ・システム5のための制御インタフェースは、1組のテーブルに
基づいている。すなわち、バースト・バッファ・メモリへバーストし、そこから
バーストするためのメイン・メモリの領域を記述するメモリ・アクセス・テーブ
ル(MAT)65、およびバースト・バッファ・メモリの領域を記述するバッフ
ァ・アクセス・テーブル(BAT)66である。この実施形態では、デュアルポ
ートSRAMの同次領域が、バースト・バッファ・メモリ領域26のために使用
される。
許出願第97309514.4号に記載されているようなもの)を、本発明の代
替実施形態において使用することができ、MATおよびBATにおいて暗示的に
符号化されたパラメータ(ソース・アドレス、宛先アドレス、長さ、ストライド
)が、次いで、発行されたバースト転送毎に明示的に指定されなければならない
。直接のアドレス、長さおよびストライドではなく、MATおよびBATを使用
するための主な理由は、これが全体のコード・サイズを著しく減らすことである
。本発明に関連して、これは典型的には重要というよりも有用である。
バースト・バッファ5へ提供される。バースト命令待ち行列6からの命令が、バ
ッファ制御エレメント54によって処理されて、MAT65およびBAT66に
おけるスロットが参照される。バッファ・コントローラは、8個のバースト制御
レジスタ52からの制御入力も受信する。これらの2つのテーブルに含まれた情
報が、実行時間で共に結び付けられて、完全なメイン・メモリ対バースト・バッ
ファのトランザクションが記述される。出力がバッファ・コントローラ54から
直接メモリ・アクセス(DMA)コントローラ56へ、よってメモリ・データパ
ス・アービタ58へ提供されて、メイン・メモリ3とバースト・バッファ・メモ
リ領域26の間のトランザクションが実施される。
メモリ領域26へロードするため、かつ、データをバースト・バッファ・メモリ
領域26からメイン・メモリ3へ格納するために使用されるものである。これら
の命令は「ロードバースト」および「ストアバースト」である。ロードバースト
命令が、データ・ワードのバーストを、メモリ3における決定された位置からバ
ースト・バッファのそれへ転送させる。対応するストアバースト命令もあり、こ
れは、データ・ワードのバーストを、バースト・バッファの1つからメモリ3へ
、メモリ3における特定のアドレスで開始して、転送させる。図1のアーキテク
チャでは、追加の同期化命令も必要とされ、これらは以下でさらに論じられる。
とは異なり、これらは転送が起こっていなくとも単一のサイクルで完了する。本
質において、ロードバーストおよびストアバースト命令が、メモリ・インタフェ
ース16へバーストを実行するように伝えるが、これらはバーストが完了するま
で待機しない。
・アクセス・テーブルのそれぞれにおける1つを索引付けする命令を発行するこ
とである。メモリ・アクセス・テーブルへの索引が、転送のメモリ側で使用され
た基底アドレス、エクステントおよびストライドを検索する。バッファ・アクセ
ス・テーブルへの索引が、バースト・バッファ・メモリ領域内の基底アドレスを
検索する。図示の実施形態では、マスキングおよびオフセットが索引値へ、コン
テキスト・テーブル(これは欧州特許出願第97309514.4号においてさ
らに論じられている)によって提供されるが、代りに実アドレスを使用すること
が可能である。直接メモリ・アクセス(DMA)コントローラ56がパラメータ
を2つのテーブルから渡され、これらを使用して、要求された転送を指定する。
るパラメータを索引付け(index)し、これが要求された転送の特性を定義する。
block_incrementビットが設定される場合、MATにおいて索引
付けされたエントリのmemaddrフィールドが、転送が完了するときに自動
的に更新される(以下で論じられるように)。
るパラメータを索引付けし、再度これが要求された転送の特性を定義する。前の
ように、block_incrementビットが設定される場合、MATにお
いて索引付けされたエントリのmemaddrフィールドが、転送が完了すると
きに自動的に更新される。
およびeXecute−Store Decrement(BB_LX_INC
REMENTおよびBB_XS_DECREMENT)として提供される。BB
_LX_INCREMENTの目的は、特定のデータのバーストにおけるコプロ
セッサ2の実行が、必要とされたデータがロードバースト命令の後に続いてバー
スト・バッファ・メモリ5に到着した後に起こるようにすることである。BB_
XS_DECREMENTの目的は、ストアバースト命令の実行が、結果がメイ
ン・メモリ3に格納され戻される(コプロセッサ2上の)計算の完了の後に続く
ようにすることである。
組であり、それぞれ次のものを追跡する。すなわち、a)ストアバーストを受信す
る用意ができているバースト・バッファ・メモリ5における領域の数、およびb)
完了されたロードバースト命令の数、である。
実行されるが、データの可用性は、XSカウンタを増分することによって信号で
通知される。これらのカウンタは、2つの特性を満たさなければならない。すな
わち、これらがただ1つのシステム構成エレメントへいかなる所与のときにもア
クセス可能でなければならないこと、およびこれらが使用不可能なデータを要求
する処理を中断する能力を有していなければならないことである。
kstra(「[Dijkstra 1968] E.Dijkstra,「C
o−operating Sequential Processes」,F.
Genuys(編集者),Programming Languages,Ne
w York:Academic Press,(1968),43−112ペ
ージ)に記載されている。したがって、用語「セマフォ」は、本発明の実施形態
において使用されたカウンタを記載するために使用されるが、これらのカウンタ
がDijkstraによって記載されたセマフォには等しくないが広く類似して
いることに留意されたい。
()命令をセマフォ上で実行することはこの値をディクリメント(decrement、減
分)するが、Signal()命令を実行することはこれをインクリメント(incr
ement、増分)する。Wait()を、値がすでに0であるセマフォ上で実行する
と、セマフォの値が増分されるまで、Wait()を実行しようと試みているソ
フトウェア処理またはハードウェア構成エレメントが停止する。
1の11)上でWait()のように動作するが、BB_LX_INCREME
NT命令はLXセマフォ(図1の10)上でSignal()のように動作する
。以下で記載されるように、コプロセッサ・コントローラ9が、反対に、Wai
t()をLXセマフォ10上で、Signal()をXSセマフォ11上で実行
する。これらの命令の意味は、Dijkstraの論文に記載されたものと同じ
にすることができるが、Signal()およびWait()動作の構成全体は
元の論文に記載されたものとは著しく異なる。システムの正確さに必要な、ある
イベントの相対的時間順序が守られるようにするため、これらの命令が適切な順
序で(以下でさらに論じられるように)発行される。
れる。これは、バースト・トランザクションに含まれたメイン・メモリ位置に関
連する情報を保持するメモリ記述子テーブルである。MATにおける各エントリ
は、メイン・メモリへのトランザクションを記述する、索引付けされたスロット
である。この実施形態では、MAT65が16個のエントリを含むが、異なる実
施がもちろん可能である。各エントリが以下の3個のフィールドを含む。 1.メモリ・アドレス(memaddr)。メイン・メモリにおける関連領域
の開始アドレス。この位置が物理メモリ空間にあることが理想的であり、これは
、仮想アドレス変換が2つの物理ページにまたがるバースト要求の結果となる可
能性があり、これがメモリ・コントローラに難点を引き起こすからである。 2.エクステント(extent)。転送のエクステント。これは転送の長さ
であり、ストライドで乗算され、転送された最後のアドレス+1を与える。転送
の長さは、エクステントをストライドにより除算することによって計算され、こ
れは、転送が完了した後で、関連するBAT66(以下参照)のbufsize
フィールドへ自動的にコピーされる。 3.ストライド(stride)。転送における連続したエレメントの間の間
隔。
なし、語調整されたアドレスである。
範囲を包含するアドレス・オフセットである。転送がSのストライドによって分
離されたL個のエレメントを必要とする場合、エクステントはS*Lである。
イト数である。転送ストライド間隔の値は、1から1024までの範囲に制限さ
れる。1024より大きい値は自動的に1024に切り捨てられる。このレジス
タの読取りが、バーストのために使用された値を戻す(すなわち、切り捨てが必
要であった場合、切り捨てられた値が戻される)。ストライドはメモリ・バス幅
の倍数でなければならず、この場合は4バイトである。自動切り捨て(丸めなし
)が、この位置合わせを実施するために実行される。
。
4個の4バイト語)によって分離される。
ットがバースト命令において設定される場合、もしバーストが32を越えて継続
しているならば、開始アドレス・エントリがポイント・トゥ・ポイントで、次の
メモリ位置へ増分される。これは、長いシーケンスのメモリ・アクセスにおいて
次のバーストのための開始アドレスを計算することにおける、プロセッサ・オー
バーヘッドを節減する。
される。これもまたメモリ記述子テーブルであり、この場合はバースト・バッフ
ァ・メモリ領域26に関する情報を保持する。BAT66における各エントリが
、バースト・バッファ・メモリ領域26へのトランザクションを記述する。MA
T65の場合のように、BAT66が16個のエントリを含むが、もちろんMA
T65の場合のように変わる可能性がある。この場合は各エントリが以下の2つ
のフィールドを含む。 1.バッファ・アドレス(bufaddr)。バッファ領域におけるバッファ
の開始。 2.バッファ・サイズ(bufsize)。最後の転送で使用されたバッファ
領域のサイズ。
ャネル・バーストの第1のエレメントのためのオフセット・アドレスである。バ
ースト・バッファ領域は、ハードウェアによってプロセッサのメモリ空間の領域
へ物理的にマッピングされる。これは、バースト・バッファ領域にアクセスする
ときにプロセッサが絶対アドレスを使用しなければならないことを意味する。し
かし、DMA転送は単にオフセットを使用し、そのため、ハードウェアが、要求
されたいかなるアドレス解決をも管理することが必要である。不当に位置合わせ
された値は、切り捨てによって自動的に位置合わせすることができる。このレジ
スタの読取りが、バーストのために使用された値を戻す(すなわち、切り捨てが
必要であった場合、切り捨てられた値が戻される)。デフォルト値は0である。
ッファ領域内の領域のサイズである。このレジスタは、そのエントリを目標とし
たバースト転送の完了時に、自動的に設定される。格納された値がバーストの長
さであり、これは、0の値が使用されていないバッファ・エントリを指示するか
らであることに留意されたい。このレジスタに書き込むことができるが、これは
、バッファが保存されリストアされるときに、文脈切り換え後にのみ有用である
。デフォルト値は再度0である。
およびBB_SET_BAT命令の使用を通じて実行される。エントリ・パラメ
ータが、現在の命令が参照するMAT(またはBAT)におけるエントリを決定
する。
詳細が、欧州特許出願第97309514.4号および対応する米国特許出願第
09/3,526号において提供される。上記で提供された詳細は、主として、
バースト・バッファ・システムのアーキテクチャエレメントを示し、バースト・
バッファ・システムが実施することができる機能効果を、それが提供する入力お
よび出力と共に示すように意図される。バースト・バッファ・システムが、特定
のタイプの計算モデルに合わせて最適に適合され、これは、本明細書で、本発明
の記載された実施形態のための計算モデルに展開される。この計算モデルについ
てさらに説明する。
令が類似の方法でコプロセッサへ、コプロセッサ命令待ち行列8を通じて提供さ
れることである。コプロセッサ命令待ち行列8は、コプロセッサ・コントローラ
9との接続において動作し、これは、コプロセッサがプロセッサ1から命令を受
信する方法、およびそれがデータをバースト・バッファ・システム5と交換する
方法を決定する。
離される重要な効果を有する。したがって、計算中に、プロセッサ・リソースが
他のタスクの実行のために使用可能である。プロセッサ1の動作がストールされ
ることにつながる可能性のある唯一の状況は、命令待ち行列6、8の一方が命令
で満たされることである。この場合は、プロセッサ1が、いずれかの待ち行列の
ための命令を、命令が消費されるよりも速い速度で生成するときに起こる可能性
がある。この問題の解決策は入手可能である。事前定義の時間量の後、あるいは
、いずれかの待ち行列において占有されたスロットの数が事前定義の量まで減分
された事実によってトリガされた割り込みの受信の上で、文脈切り換えを実行し
てこれら2つの待ち行列にサービスするために戻るように、プロセッサ1へ要求
することによって、有効性を改善することができる。反対に、プロセッサ1が、
命令が消費される速度に遅れないでいることができないために、2つの待ち行列
の一方が空になる場合、これらの命令の消費者(コプロセッサ・コントローラ9
またはバースト・バッファ・コントローラ7)は、新しい命令がプロセッサ1に
よって生成されるまで、ストール(機能停止)する。
するアーキテクチャにも提供することができ、これらについては本明細書の最後
の部分において論じられる。
メモリ5からコプロセッサ2へ(およびコプロセッサ2からバースト・バッファ
・メモリ5へ)取り出すこと、コプロセッサの動作を制御すること、およびコプ
ロセッサ2の実行をバースト・バッファ・メモリ5からの適切なロードまたはそ
れへの格納と同期化することである。これらの機能を達成するには、コプロセッ
サ・コントローラを、本質において、ある規則に従ってアドレスを生成すること
ができる、相対的に簡素な状態機械にすることができる。
ントとの関係において示し、その構成エレメント、およびアーキテクチャ全体に
おける他のエレメントとの接続も示す。その厳密な機能は、コプロセッサ2およ
びその初期化要件(ある場合は)によって必要とされた入力および出力のタイプ
に依存し、そのため、以下に記載されたものから詳細において変わる可能性があ
る。CHESSコプロセッサの場合、これらの入力および出力が、バースト・バ
ッファ・メモリ5と交換された入力および出力データ・ストリームである。
ち、1)コプロセッサ2とバースト・バッファ・メモリ5との間の通信の制御、お
よび2)制御有限状態機械42の使用を通じたシステム状態の維持である。
くつかの制御レジスタ41の1つとの関連付けを与えられる。これらのレジスタ
41のためのアドレスが、制御有限状態機械42によってアドレス指定ロジック
43と共に、有限状態機械42によって生成されたシーケンスに従って、周期的
な様式において生成される。
の(多くとも)1つが、そのために生成された新しいアドレス、およびレジスタ
41がバースト・バッファ・メモリ5をアドレス指定できるようにするために使
用されたアドレスを有するための許可を与える。同時に、適切な制御信号が有限
状態機械42によって生成され、マルチプレクサ44へ送信されて、適切なアド
レスが正しい読み/書き信号と共にバースト・バッファ・メモリ5へ送信される
ようにする。特定の読み/書き信号が各レジスタ41に、全体の計算中で変化し
ない値と共に関連付けられる。
用された後、一定量がその値へ追加され、これは一般にコプロセッサ2とバース
ト・バッファ・メモリ5との間の接続の幅と同じである。つまり、この接続の幅
が4バイトである場合、カウンタ41に行われた増分が4となる。これは、本質
的に、バースト・バッファのプログラミングにおける「ストライド」に比較可能
である。
タ・ストリームの多重化を可能にする。各データ・ストリームは、それ自体のポ
ートを通じて単一の共有バスへアクセスするとみなすことができる。
他方の端でコプロセッサ2が、同期した方法でこのバスから読み取り、このバス
へ書き込みする用意ができていることが必要である。アプリケーション・ソフト
ウェア(および具体的には、コプロセッサ2を構成するアプリケーション・ソフ
トウェアの一部まで)の責任は、つぎのことを保証することである。すなわち、
1)2つのストリームが同時にバスにアクセスしようと試みないこと、および2)コ
プロセッサ2の実行がバースト・バッファ・メモリ5とのデータ転送と同期であ
ることである。
スト・バッファ・メモリ5によって配置されたデータを読み取るため、かつその
逆のための用意ができることを保証する。
の間に設けることができるが、一般の多重化の必要性はなお残る。コプロセッサ
2とバースト・バッファ・メモリ5の間の物理接続の数が、コプロセッサ2のた
めの論理I/Oストリームの合計数以上でない限り、2つ以上の論理ストリーム
が同じワイヤ上で多重化されなければならないことが常に真となる。(バースト
・バッファ・メモリ5に有利に使用されるように)高速SRAMの設計に関係し
た技術的な理由が、コプロセッサ2との複数の接続の使用を防止する。
実行を制御するようにも動作し、それが指定数のクロック・サイクルで実行する
ようにする。これは、コプロセッサ2におけるパイプラインの内部状態に影響を
与えない方法において、CHESSアレイを、その内部クロックを「ゲーティン
グ」すること(つまり、停止すること)によって「フリーズ」する前に、指定数
のサイクルだけチッキングする、制御有限状態機械42におけるカウンタによっ
て達成される。このチックの数が、以下に記載されたCC_START_EXE
C命令を使用して指定される。
待ち行列8の使用を通じてプログラムされる。このコプロセッサ・コントローラ
9のための可能な命令セットが、以下の表2において示される。
可能なフォーマットは32ビットの数字であり、16ビットが演算コードを符号
化し、16ビットが上述の任意選択のパラメータ値を符号化する。
PORT_xxx命令の受信者として、次のCC_CURRENT_PORTま
で、選択する。 ・CC_PORT_PERIOD()は、現在のポートの活動化の周期を、整数
パラメータの値に設定する。 ・CC_PORT_PHASE_START/CC_PORT_PHASE_E
ND(start end)は、現在のポートの活動化の段階の開始/終了を、
整数のパラメータ(start end)の値に設定する。 ・CC_PORT_TIME_START/CC_PORT_TIME_END
(tstart tend)は、現在のポートの活動の最初/最後のサイクルを
設定する。 ・CC_PORT_ADDRESS(addrstart)は、現在のポートの
現在のアドレスを、整数のパラメータaddrstartの値に設定する。 ・CC_PORT_INCREMENT(addrincr)は、現在のポート
のアドレス増分を、整数のパラメータaddrincrの値に設定する。 ・CC_PORT_IS_WRITE(rw)は、現在のポートのためのデータ
転送方向を、ブール・パラメータrwの値に設定する。 ・CC_START_EXEC ncyclesは、コプロセッサ・コントロー
ラ2の実行を、関連付けられた整数パラメータncyclesによって指定され
たクロック・サイクルの数だけ開始する。 ・CC_LXS_DECREMENTは、LXセマフォの値を(以前に記載され
たように、中断の方法において)減分する。 ・CC_XSS_INCREMENTは、XSセマフォの値を増分する。
、start(tcur mod)<endである場合、ポートが能動(つまり
、バースト・バッファ・メモリ5との通信の制御を有する)として定義される。
これは、たとえば、2つのストリームが、等しい周期、言わば5で存在し、一方
が最初の4サイクルのためのBBメモリの制御を有し、他方が残りのサイクルの
ための制御を有する、システムの可能性を可能にする。
セッサ2のプログラミング、次いでコプロセッサ・コントローラ9およびバース
ト・バッファ・コントローラ7のプログラミングまたは初期化と、その後に続く
アルゴリズムの実際の実行を含む。
て、構成がコプロセッサ自体にロードされることが、一般にもっとも直接になる
。
りである。 1.メイン・コプロセッサ・コントローラ9が、前に記載されたように、Ch
essアレイにおいて存在する各論理ストリーム毎の合計数、周期、段階および
アドレス増分に従って構成される。所望の機能を実行するためのコプロセッサ・
コントローラ9のプログラミングの一例が、下に示される。 2.コプロセッサ・コントローラ9の構成における次のステップは、アドレス
構成である。各論理ストリームの特性(周期、段階)がアルゴリズム中で同じで
あり続ける可能性が高いが、バースト・バッファ・メモリ5におけるコプロセッ
サ・コントローラ9によってアクセスされた実アドレスは変わる。それはこの可
変性であり、これは、バースト・バッファ・コントローラ7がダブル・バッファ
リングを、バースト・バッファ・アーキテクチャ内で直接の方法で実行できるよ
うにする。このダブル・バッファリングの効果は、先に述べられたように、コプ
ロセッサ2に、それが連続ストリームと対話中である印象を与えることであるが
、実際にはバッファが連続的に交換されている。
は、メイン・メモリ3からバースト・バッファ・メモリ5へのデータの転送を構
成するために、適切なコマンドがバースト命令待ち行列6へ送信されなければな
らない。これらの命令(BB_SET_MATおよびBB_SET_BAT)が
、BATおよびMAT内で適切なエントリを、コプロセッサ・コントローラ9の
プログラミングに適合する方法で構成する。この実施形態では、MATおよびB
ATエントリをプログラムするための命令が、バースト命令待ち行列6を通じて
発行される。代替の可能性は、プロセッサ1が読み書きするメモリ・マップ・レ
ジスタの使用となる。この実施形態の場合のように、メモリ・マップ・レジスタ
から読み取られる可能性がなく(それらが存在しないので)、プロセッサ1がバ
ースト・バッファ・コントローラ7の状態を照会することができないが、これは
著しい制限ではない。さらに、この目的のためのバースト命令待ち行列6の使用
は、バースト転送の実行によりMATおよびBATエントリを構成するための命
令をインターリービングし、したがって、プロセッサ1の監視なしに正しい時間
的意味を維持する可能性を可能とする。
ことができる。この実施形態では、CHESSアレイに指定数のサイクルで実行
するように命令することのみが必要である。これは、正確な数のサイクルをパラ
メータとして、コプロセッサ命令待ち行列8におけるCC_START_EXE
C命令へ書き込むことによって達成され、次いでこのデータをコプロセッサ・コ
ントローラ9へ渡すことができるようにする。この値がコプロセッサ・コントロ
ーラ9に転送された1クロック・サイクル後、コントローラが値をバースト・バ
ッファ・メモリ5とコプロセッサ2のCHESSアレイの間で転送することを開
始し、CHESSアレイの実行を可能にする。
配置される前に追加しなければならない。これは、必要な同期化機構が、同期化
およびダブル・バッファリングの原理をうまく実施するために適切であるように
するためである。この機構における基本エレメントは、コプロセッサ・コントロ
ーラ9がLXセマフォの値を減分しようと試み、上述のロジックに従って、それ
がそうできるようになるまでコプロセッサの動作を中断することである。このセ
マフォの初期値は0である。すなわち、したがって、コプロセッサ・コントロー
ラ9およびコプロセッサ2がこの段階で「フリーズ」される。成功したロードバ
ースト命令の後にLXセマフォの値がバースト・バッファ・コントローラ7によ
って増分されるときにのみ、コプロセッサ2がその実行を開始(あるいは再開)
できるようになる。この効果を達成するため、CC_LX_DECREMENT
命令がコプロセッサ命令待ち行列8において、「コプロセッサ2の実行を開始す
る」(CC_START_EXEC)命令の前に挿入される。以下に示されるよ
うに、対応する「LXセマフォを増分する」(BB_LX_INCREMENT
)命令が、バースト命令待ち行列6において、対応するロードバースト命令の後
に挿入される。
データの転送が、先に記載されたようなコプロセッサ・コントローラ9のプログ
ラミングに従って実行される。
バーストを消費するためにどれだけの時間がかかるかに依存する。システムの正
確さを保証することは、アプリケーション・ソフトウェアに任される。カウンタ
42のプログラミングは、バッファが消費された後にコプロセッサ2の実行が停
止するようにしなければならない。コプロセッサ命令待ち行列8における次の命
令は、次のデータのバーストがバースト・バッファ・メモリ5に到着しているよ
うにするため、同期化命令(つまり、CC_LX_DECREMENT)でなけ
ればならない。この命令(および場合によっては、必要とされたデータが使用可
能になるまでの待機期間)の後に続いて、この新しいデータのバーストの初期ア
ドレスがデータ・ストリームに割り当てられ(CC_PORT_ADDRESS
命令により)、実行がCC_START_EXEC命令を介して再開される。こ
の手順は出力ストリームの場合に類似している(重要な違いは、データがメイン
・メモリ3からバースト・バッファ・メモリ5に到着するために必要としたもの
に等しい待機期間がなくなることである)。
のアーキテクチャにおいて使用するためにどのように記録することができるかを
指示し、一例として簡素なベクトル加算を使用し、これは従来のマイクロプロセ
ッサ向けに以下のようにCでコーディングすることができる。
成するようプロセッサ1を走らせるCコードの一部分は、次の通りである。
れ、すなわち、各入力ベクトルのためのもの(bおよびc)、および出力ベクト
ルのためのもの(a)である。行4、6および8の文は、これらの3つのポート
を初期化するためのコード・マクロである。これらは、拡張されるとき、次の表
のコマンドになる(これは行4を参照し、他の拡張されたマクロは直接類似して
いる)。
3、6...3*BLEN*MAXK+3の4バイトのデータを読み取り、それ
が読み取るアドレスを毎回4バイト増分するという効果を有する。BLEN*M
AXKは、合計する2つのベクトルの長さ(この場合、1024)であり、BL
ENはDRAMからの単一のデータのバーストの長さ(たとえば、64バイト)
である。これらの値で、MAXKは1024/64=16に設定される。
し、これらのテーブルにおけるエントリをメイン・メモリ3およびバースト・バ
ッファ・メモリ5におけるアドレスに結合する。コマンドBIQ_SET_MA
T(0,&b[0],BLEN*4,4,TRUE)はコード・マクロであり、
これはBB_SET_MAT(0,&b[0],BLEN*4,4)に拡張され
、MATにおけるエントリ0をアドレス&b[0]へ結合し、バースト長をBL
EN*4バイトに(つまり、整数が32ビットの場合、BLEN整数)、ストラ
イドを4に設定する。後に続く2行は、cおよびaに類似し、関係する。行BI
Q_SET_BAT(0,0x0000,BLEN*4)は、BB_SET_B
AT(0,0x0000,BLEN*4)に拡張され、BATのエントリ0をバ
ースト・バッファ・メモリ5におけるアドレス0x0000へ結合する。後に続
く2行は再度類似している。
バースト・バッファ・コントローラ7が設定されている。行15から38のルー
プ・ネストは、実際の計算が行われるところである。このループはMAXK回繰
り返され、各反復がBLENエレメント上で動作し、処理されたMAXK*BL
ENエレメントの合計を与える。このループは、コプロセッサ命令待ち行列8へ
送信された命令の組CIQ_xxxで開始して、コプロセッサ2およびコプロセ
ッサ・コントローラ9の動作を制御し、その後に、バースト・バッファ・コント
ローラ7およびバースト・バッファ・メモリ5を制御することが目的である、バ
ースト命令待ち行列6へ送信された1組の命令が続く。これら2組の相対的な順
序は、原理においては重要でなく、これは、異なるシステムエレメントの間の同
期化が、セマフォによって明示的に保証されるからである。互いの後に実行する
2つの異なるループを有すること(2つの命令待ち行列が十分深かったと仮定し
て)、または、2つの異なる制御のスレッドを有することさえも可能となる。
である。これらの意味は、次の通りである。 CIQ_LXD(N):N個のCC_LXS_DECREMENT命令をコプ
ロセッサ命令待ち行列8に挿入する。 CIQ_SA(ポート、アドレス):CC_CURRENT_PORT(ポー
ト)およびCC_PORT_ADDRESS(アドレス)命令をコプロセッサ命
令待ち行列8に挿入する。 CIQ_ST(cycleno):コプロセッサ2にカウンタ42のcycl
enoチックだけ実行させるために、CC_EXECUTE_START(cy
cleno)命令を挿入する。 CIQ_XSI(N):N個のCC_XSS_INCREMENT命令をコプ
ロセッサ命令待ち行列8に挿入する。
セマフォ上で対応するロードバーストと同期化すること、2)コプロセッサ2上で
計算を、カウンタ42の3*BLENチックだけ開始すること、および3)XSS
セマフォ上で対応するストアバーストと同期化することである。
クロである。これらの意味は、次の通りである。 BIQ_FLB(mate,bate):BB_ロードバースト(mate,
bate,TRUE)命令をバースト命令待ち行列6に挿入する。 BIQ_LXI(N):N個のBB_LX_INCREMENT命令をバース
ト命令待ち行列6に挿入する。 BIQ_FSB(mate,bate):BB_ストアバースト(mate,
bate,TRUE)命令をバースト命令待ち行列6に挿入する。 BIQ_XSD(N):N個のBB_XS_DECREMENT命令をバース
ト命令待ち行列6に挿入する。
バッファ・メモリ5へ2つのバーストをロードし、次いでLXセマフォ10の値
を増分して、コプロセッサ2がその実行を上述のように開始できるようにするこ
とである。最初のものを除くすべての反復において、コプロセッサ2の計算の結
果が、次いで、ストアバースト命令を使用してメイン・メモリ3に戻すように格
納される。2番目の反復が、最初の反復において実行された計算の結果を格納す
ることを待機する必要は厳密にはないが、これはコプロセッサ2とバースト・バ
ッファ・メモリ5の間の並行性を向上させる。
ァリング効果を可能にするためにここで使用された機構である。
最後のバースト転送を実行し、ループ本体の最初の反復におけるストアバースト
命令の不在を補償する。
動作であり(これらが完了されるまで、コプロセッサ2がロード/実行セマフォ
によってストールされるので)、これらが完了されるとき、コプロセッサ2が6
02を実行開始することができる。バースト命令待ち行列6における次の命令は
別のロードバースト601であり、これが、最初の2つのロードが終了するとす
ぐに実行される。次いで、バースト命令待ち行列6における次の命令がストアバ
ースト603であり、これは、XSセマフォ11が、コプロセッサ2上の最初の
計算が完了したことを信号で知らせるまで待機しなければならない。この処理は
、ループ中で継続する。
雑である計算において必要とされる基本原理を例示する。当業者は、上に示され
た手法、原理および技術を、より複雑なアルゴリズムをこのアーキテクチャによ
る実行に適合させるために図1のアーキテクチャをプログラムすることに使用で
きる。
とができる。つまり、手動でCコードを書いて、従来の方法でシステム構成エレ
メントの適切な動作をスケジュールするように適合されたCPU上で実行して(
命令を適切な待ち行列に配置し、記載されたようにシステム構成エレメントを動
作に設定し)、コプロセッサのための適切な構成を、そのコプロセッサを構成す
るための標準の合成ツールに従って提供することである。CHESSのような、
構成可能またはFPGAに基づいたプロセッサでは、このツールが一般にハード
ウェア記述言語となる。CHESSに使用するための適切なハードウェア記述言
語はJHDLであり、たとえば、Peter BellowsおよびBrad
Hutchingsによる1998年4月の「JHDL−An HDL for
Reconfigurable Systems」Proceedings
of the IEEE Symposium on Field−Progr
ammable Custom Computing Machinesに記載
されている。
に使用されることである。このようなツールチェーンおよびその実際の動作のエ
レメントを次に簡単に説明する。
ドへ変換すること、およびシステム構成エレメントの相互運用の機能を有する。
例示的ツールチェーンは入力としてCコードを受信し、出力として次のものを提
供する。すなわち、1)計算の実行のためのCHESSコプロセッサ構成、2)デー
タをシステム・メモリとバースト・バッファ・メモリの間で移動するためのバー
スト・バッファ・スケジュール、および3)データをCHESSコプロセッサとバ
ースト・バッファ・メモリの間で移動するためのコプロセッサ・コントローラ構
成である。
エンドであり、これはCコードをその入力として取り、注釈付きのディペンデン
スグラフをその出力として提供する。第2の構成エレメントはバックエンドであ
り、これはフロントエンドによって生成されたディペンデンスグラフを取り、こ
れらからCHESS構成、バースト・バッファ・スケジュール、およびコプロセ
ッサ・コントローラ構成を生成する。
るように、適切に記述するグラフを生成することである。実行された主なステッ
プの1つは、値に基づいた依存解析であり、これはW.PughおよびD.Wo
nnacottによる1993年12月の「An Exact Method
for Analysis of Value−based Array Da
ta Dependences」,University of Maryla
nd,Institute for Advanced Computer S
tudies−Dept. of Computer Science,Uni
versity of Marylandに記載されている。生成された出力は
、CHESSアレイにおいて実施されるデータフローの記述、および(ロードバ
ースト命令を介して)入力としてロードされるか、あるいは(ストアバースト命
令を介して)出力として格納される必要のあるすべてのアドレスの表現、および
データがメイン・メモリ3から検索され、それへ格納されなければならない順序
の表現である。これは、バースト・バッファ・コントローラ7のための効率的な
スケジュールが導出される基礎である。
表のようになる。
、次の形式を有する。
7に示される。このグラフは、フロントエンド・アルゴリズムによって判明され
た依存性を明瞭に示す。エッジ81が、依存性が存在する条件、および適用可能
である場合の依存性の距離によりマーク付けされる。記述は、必要とされる機能
性を有するハードウェア構成エレメントを生成するに必要なすべての情報を含む
。
は、フロントエンドから得られた、拡張されたディペンデンスグラフをスケジュ
ールし、時間変更することである。これは、十分に機能的なCHESS構成を得
るために必要である。スケジューリングは、拡張されたディペンデンスグラフに
おけるノード82のそれぞれが活動化される時点を決定することを含み、時間変
更は、たとえば、エッジが値を適切な瞬間に伝播するようにするための遅延の挿
入を含む。スケジューリングは、シフト線形スケジューリングを使用して実行す
ることができ、これはハードウェア合成において幅広く使用される技術である。
時間変更は、ハードウェア合成における共通で静かな直接のタスクであり、適切
な数のレジスタを回路に追加して、回路における異なる経路が適切な時点で交わ
るようにすることのみを含む。この点で、コプロセッサ2(ここでは、CHES
Sコプロセッサ)の機能性の完全な記述を有する。この記述が図8に示される。
次いで、この記述を適切なツールへ渡して、この機能性を有するCHESSコプ
ロセッサをプログラムするために必要な一連の信号(一般に「ビットストリーム
」と呼ばれる)を生成することができる。
ッサ・コントローラ・スケジュールの生成である。CHESS構成が得られた後
、これにメイン・メモリからの値を入れる必要があるとき、および値をメイン・
メモリへ戻すように格納でき、バースト・バッファ・スケジュールを確立できる
ときが明らかである。したがって、バースト・バッファ・メモリ5にロードされ
、そこから格納される必要のあるすべてのデータのアドレス空間を、バースト・
バッファ・コントローラ7が動作できる固定のデータのバーストに分割すること
を含む、ステップが提供される。
なサイズのいくつかのバーストに分割され、アルゴリズムのために必要とされた
すべてのアドレス範囲が包含されるようになる。このツールチェーンは長さBl en のバーストを使用して(Blenは2の累乗であり、このツールチェーンへ
の実行パラメータとして指定される)、できるだけ多くの入力アドレス空間を包
含する。このバースト長でそれ以上達成できないとき、ツールチェーンは、長さ
を減分するバースト、すなわち、Blen/2、Blen/4、Blen/8、
...、2、1を、このアルゴリズムのために必要とされたあらゆる入力アドレ
スが唯一のバーストに属するまで使用する。
とされる、反復空間におけるもっとも早い点が計算される。すなわち、各入力バ
ーストに対して、反復空間において関連付けられた1点があり、そこでは、それ
より早い反復が、バーストによってロードされたデータのいずれをも必要としな
いことが保証される。コプロセッサ2の実行が反復空間におけるこの点に到達す
るときを検出することは容易である。したがって、次のものが作成される。すな
わち、1)データをバースト・バッファ・メモリ5に移動するための、関連アドレ
スのためのロードバースト命令、および2)コプロセッサ2の実行が関連ロードバ
ースト命令と同期化されることを保証するための、対応する同期化点(CC_L
X_DECREMENT/BB_LX_INCREMENTの組)である。
タの転送に関連付けられた待ち時間を隠すために、ロードバースト命令が予め発
行されなければならない。
、類似のロジックに従って出力バーストに区分される。再度、出力空間が、可変
長のバーストに区分される。
応する同期化点(BB_XS_DECREMENT/CC_XS_INCREM
ENTの組)を作成する。
ーストおよびストアバースト命令の相対的順序、およびそれらの実行のパラメー
タ(アドレスなど)、および2)コプロセッサ2上で実行される計算に相対的なそ
れらの位置である。
成するための適切なCコードが生成される。
排出)を、http://www.cs.umd.edu/projects/
omega/で入手可能である、Omega Library of the
University of Marylandに含まれたコード生成ルーチン
と、その後に続いて、これらのルーチンの総称出力を上述の形式に変換する、カ
スタマイズされたスクリプトを使用して実施することができる。
。
HEIGHT−1画素、水平方向においてKERNEL_WIDTH−1画素だ
け拡張するために、複製が使用された。2つのカーネル、すなわち共にメディア
ン・フィルタ(median filtering)を実行する3x3カーネルおよび5x5カーネ
ルが、システム性能を評価することに使用される。
テクチャの性能を、バースト・バッファ(BBとして示す)を使用した従来のプ
ロセッサ、および従来のプロセッサおよびキャッシュの組み合わせ(キャッシュ
として示す)に対するものとして例示する。2つのバージョンのアルゴリズムが
実施され、1つは32ビットの画素により、1つは8ビットの画素による。同じ
実験測定値が、異なる画像サイズで、8x8から128x128までの範囲で、
異なるバースト長でとられた。
能上の利点を示した。このアルゴリズムは相対的に複雑であり、BBおよびキャ
ッシュ実装におけるシステムの性能全体が非常にコンピュータ制約的(computer
bound)であり、アルゴリズムが高度に複雑であるためにCPUがついていけない
。本発明の実施形態を使用すると、計算がCHESSアレイ上で(その固有の並
行性により)実行されるので計算が大いに効果的であり、性能はあえていうとI
O制約的(IO bound)である。最も、IOもバースト・バッファの有効な使用を通
じて効率的である。マルチメディア命令(MIPS MDMXなど)がBBまた
はキャッシュ実施におけるCPUの性能を向上させることができ、これは、それ
らがいくつかの算術命令の並列実行を可能にできるからである。それでもなお、
性能向上の結果は、この構成において専用コプロセッサを使用して得られた性能
レベルに到達する可能性が低い。
離す機能を、命令待ち行列6、8以外によって達成することができる。有効な代
替物は、2つの待ち行列を、図12に記載されたような、命令をバースト・バッ
ファ・メモリ5およびコプロセッサ2へ発行することに完全に専用にされた2つ
の小型プロセッサ(それぞれが各待ち行列用)と置換することである。バースト
命令待ち行列が(図1の実施形態を参照して)バースト・コマンド・プロセッサ
106によって置換され、コプロセッサ命令待ち行列が、コプロセッサ・コマン
ド・プロセッサ108によって置換される。これは、これらの2つの構成エレメ
ントによって実行された唯一のタスクとなるので、これらがコプロセッサ2およ
びバースト・バッファ7からそれぞれ切り離される必要はなくなる。コマンド・
プロセッサ106、108のそれぞれが、コマンドをコプロセッサまたはバース
ト・バッファ(適切なように)へ発行することによって動作でき、次いで、その
コマンドがその実行を完了するまで何も行わず、別のコマンドを発行することな
どができる。これは、設計を複雑にするが、メイン・プロセッサ1をその残りの
、命令を待ち行列へ発行する単純なタスクから解放する。プロセッサ1によって
実行される唯一の作業は、次いで、これらの2つのプロセッサの初期設定となり
、これは計算の開始直前に行われる。したがって、計算中に、プロセッサ1が完
全にコプロセッサ2およびバースト・バッファ・メモリ5の実行から切り離され
る。
、2つの制御の独立スレッドを実行する唯一のプロセッサ)を使用することがで
き、それぞれが適切なコード(ループ・ネスト)の関連部分を実行する。別法と
して、外部挙動がコードの関連部分の実行を反映する、2つの汎用状態機械を合
成することができる(つまり、これらが同じ命令のシーケンスを提供する)。こ
のような状態機械のハードウェアの複雑さおよびコストは、同等の専用プロセッ
サのものよりも著しく低くなる。このような状態機械が、メイン・プロセッサ1
によって、上述のものに類似した方法でプログラムされる。主な違いは、イベン
トの繰り返しも符号化されることである。すなわち、これは、プロセッサ1が、
多少の(複雑である場合は)命令における1つのアルゴリズムの挙動を符号化で
きるために必要である。イベントのx回の繰り返しを得るために、プロセッサ1
がx個の命令を待ち行列に挿入する必要はないが、この繰り返しパラメータを命
令定義において符号化しなければならない。
Machine)を待ち行列の代りに使用して、メイン・プロセッサ1の実行をコプロ
セッサ2およびバースト・バッファ・コントローラ7の実行から切り離すことで
ある。この機構が以下でより詳細に論じられる。
するための命令を、コプロセッサ2の実行のための命令と混合することができる
。これは、システム構成エレメントの間の相互関係がコンパイル時に知られてお
り、したがって、異なるシステム構成エレメントへの命令を正しい順序でソース
・コードにおいてインタリーブすることができるので、可能である。
するように、構築することができる。このような状態機械の一方は、コプロセッ
サ2の挙動を制御し、必要とされるようなCC_xxx_xxx命令を発行し、
他方はバースト・バッファ・コントローラ7の挙動を制御し、必要とされるよう
なBB_xxx_xxx命令を発行する。
。1つの代替手法が図13に示される。上で提示されたベクトル加算の例を参照
して、この状態機械150(コプロセッサ2のためのものであるが、バースト・
バッファ・コントローラ7のための同等のマシンが直接類似している)が、以下
のパターンから構築された命令のシーケンスを実施する。
53に分割され、それぞれが1種類の命令の実行を制御する。周期および段階(
これが、コプロセッサ2とバースト・バッファ・コントローラ7の間で通信する
I/Oストリームに関連付けることができる周期および段階とは、何の関係も有
していないことに留意されたい)が、より簡素な状態機械のそれぞれに関連付け
られる。状態機械150のハードウェアは、典型的には、意図されたアプリケー
ションの要件を満たすために十分な数の、このようなより簡素な状態機械のアレ
イを含む。
、(この場合、コプロセッサ2のための)命令が順番に送信されることを可能に
することである。イベント・カウンタ154が増分される毎に、M*周期i+段
階i=イベント・カウンタの値であるような値Mが存在する場合、状態機械i(
すなわち、より簡素な状態機械151、152、153の1つ)が、比較ロジッ
ク155を通じた実行のために選択され、その命令が実行される。アプリケーシ
ョン・ソフトウェアの責任は、2つの異なる状態機械がこの式を満たすことがで
きないようにすることである。この命令の実行が完了されるとき、イベント・カ
ウンタ154が再度増分される。このイベントのシーケンスは、次のように要約
することができる。
実行のために選択する 3:このような状態機械iが発見された場合、状態機械iによって記述された
命令を実行する(これは、中断動作を含むことができる) 4:1へ戻る
ス、CC_START_EXECのための実行の長さなど)が、状態機械150
において符号化されなければならない。複数の状態機械が、典型的には異なるパ
ラメータを有する所与の命令を発行することができることに留意されたい。
イベントが一度だけ起こらなければならない場合、これは容易に、無限周期およ
び有限段階を有する簡素な状態機械において符号化することができ、唯一の帰結
は、この簡素な状態機械が一度だけ使用されることである。
追加するには、可能な選択肢は、1つまたは複数の簡素な状態機械の実行を所定
の「時間ウィンドウ」に制限するために、「開始時間」および「終了時間」パラ
メータを簡素な状態機械に追加することである。
ロセッサ1によって割り当てられたメモリマップ・レジスタの使用を通じて起こ
る。代替物は、これらの状態機械をメイン・メモリ3の事前定義の領域から、お
そらくは専用チャネルおよび直接メモリ・アクセス(DMA)機構の使用を通じ
て、プログラムするために必要なすべてのパラメータのローディングとなる。
のアーキテクチャのためのプログラミング・モデルに著しい修正を必要としない
。すなわち、メイン・プロセッサ1をプログラムするために使用された同じ技術
を、コプロセッサ2のために意図されたコマンドをバースト・バッファ・コント
ローラ7のために意図されたものから分割する追加ステップと共に、使用するこ
とができる。実現可能であるが、この構成は、状態機械の手法に関して不利であ
る可能性がある。これらのプロセッサに、システムの複雑さに加えて、メイン・
メモリ3または他のDRAMへのアクセスを提供することが必要となる。システ
ムのコストおよび複雑さは、2つのマイクロプロセッサをこのように追加するこ
と(およびそれらが非常に簡素な計算を実行するためにのみ存在することにおい
て、十分に利用しないこと)によっても増大される。
の原理から逸れることなく行うことができる。3つのこれらの開発の分野が以下
に記載される。すなわち、パイプライン、データ依存条件/知られていない実行
時間、およびメモリへの非アフィン・アクセスである。
ストリーム上で複数の変換が実行されることを必要とする値を有する。たとえば
、たたみこみの直後に続いて相関を行うことができる。この種類の構成を収容す
るために、アーキテクチャおよび計算モデルへの変更が必要となる。アーキテク
チャ上では、逐次的にバッファされたCHESSアレイ、またはより大きい区分
されたCHESSアレイ、または計算段階の間に再構成されたCHESSアレイ
を提供することができる。図11Aおよび図11Bは、このようなアプリケーシ
ョンを処理するために有効であり、複数のCHESSアレイを含む、異なるパイ
プライン・アーキテクチャを示す。図11Aは、プロセッサ143から命令され
た互い違いのCHESS/バースト・バッファ・パイプラインによる構成、およ
びメイン・メモリ144とのデータの交換を示し、CHESSアレイ141がデ
ータを第1の組のバースト・バッファ142から受信して、これを第2の組のバ
ースト・バッファ145へ渡し、この第2の組のバースト・バッファ145がさ
らにCHESSアレイ146と対話する(潜在的には、このパイプラインを、さ
らなる組のCHESSアレイおよびバースト・バッファにより継続させることが
できる)。同期化はより複雑になり、近接したCHESSアレイの間、および近
接したバースト・バッファの組の間の通信を含むが、同じ汎用パイプラインを後
に続けて、バースト・バッファの効率的な使用、およびCHESSアレイの間の
効率的な同期化を可能にすることができる。すなわち、セマフォを使用して、パ
イプラインの逐次段階によって実行された計算の正確さを保証することができる
。
イ151、156の間にSRAMキャッシュ155を有し、第1の組のバースト
・バッファ152へ提供されたロード、および第2の組のバースト・バッファ1
57によって提供された格納を有する。プロセッサ153およびメイン・メモリ
154の役割は、本質的に他の実施形態から不変である。同期化はこの構成にお
いてそれほど困難でない可能性があるが、この構成が並行性をそれほど効果的で
なく活用する可能性がある。
制約は、コプロセッサ実施の実行時間が知られるべきであることである(効率的
なスケジューリングを可能にするため)。これは、多数の媒体処理ループについ
て達成可能である。しかし、実行時間がコンパイル時に知られていない場合、ツ
ールチェーンにおけるスケジューリング要件を緩和させる必要があり、プロセッ
サ、コプロセッサおよびバースト・バッファの間の同期化および通信プロトコル
において、適切な許容が行われる必要がある。コプロセッサ・コントローラは、
この状況のための特定の構成も必要とする。
とである。上で使用されたバースト・バッファ・モデルでは、すべてのアクセス
がAI+Fのタイプであり、ただしAは定数行列、Iは反復ベクトル、Fは定数
ベクトルである。この制限されたアクセス・モデルの使用により、コプロセッサ
・コントローラおよびプロセッサが予め、どのデータがいずれかの所与の時点で
必要とされるかを知ることができ、論理ストリームの効率的な作成が可能となる
。このアーキテクチャへのこの有意性は、全体として、どのように非アフィン・
アクセスを完全に任意の方法で提供することができるかが不明瞭である(同期化
機構が失敗するように思われる)が、非アフィン・アレイ・アクセスを使用して
ルックアップ・テーブルを参照することが可能になるということである。これは
、ルックアップ・テーブルをバースト・バッファにロードすることによって行う
ことができ、次いで、コプロセッサが、後続アクセスのためのルックアップ・テ
ーブルの開始に相対的なバースト・バッファ・アドレスを生成することができる
。このようなアドレスを、それらが使用されるときより十分に前もって生成でき
るようにすること(場合によっては、これを、同期化機構への精練化によって達
成することができる)、およびこのタイプの回帰参照を支持するように論理スト
リーム機構を修正することが必要となる。
求の範囲に記載されたような本発明から逸脱することなく、実行することができ
る。
クチャを示す図である。
、および他のシステム構成エレメントとの関係を示す図である。
図である。
のフロントエンドからの出力として提供された、注釈付きグラフを示す図。
ーキテクチャの性能を示す図である。
を生成するために使用された代替アーキテクチャの性能を示す図である。
クチャを示す図である。
クチャを示す図である。
ースト命令待ち行列の代替として使用可能な、2つの補助プロセッサを示す図。
ての状態機械の実施を示す図である。
Claims (22)
- 【請求項1】 第1のプロセッサと、 前記第1のプロセッサへのコプロセッサとして使用するための第2のプロセッ
サと、 メモリと、 バースト命令に従ってデータ・バーストにおいて前記メモリに書き込みまたは
読み取るデータを入れるための、少なくとも1つのデータ・バッファと、 前記バースト命令を実行するためのバースト・コントローラと、 前記バースト・コントローラによる実行のためにバースト命令を順番に提供す
るためのバースト命令エレメントとを含み、 バースト命令が前記第1のプロセッサによって前記バースト命令エレメントへ
提供され、前記バースト・コントローラによって実行されたバースト命令に従っ
て前記少なくとも1つのデータ・バッファを通じて、データが、前記第2のプロ
セッサへの入力データとして前記メモリから読み取られ、前記第2のプロセッサ
からの出力データとして前記メモリへ書き込まれる、コンピュータ・システム。 - 【請求項2】 前記第2のプロセッサの実行を順番に制御するためのコプロセ
ッサ命令を提供するためのコプロセッサ命令エレメントをさらに含み、前記コプ
ロセッサ命令が前記第1のプロセッサによって提供される、請求項1に記載のコ
ンピュータ・システム。 - 【請求項3】 コプロセッサ・コントローラをさらに含み、前記コプロセッサ
・コントローラがコプロセッサ命令を前記コプロセッサ命令エレメントから受信
し、前記第2のプロセッサの実行を、受信されたコプロセッサ命令に従って制御
し、前記コプロセッサと前記少なくとも1つのデータ・バッファの間の通信を制
御する、請求項2に記載のコンピュータ・システム。 - 【請求項4】 分離したデータ・ストリームが前記コプロセッサと前記少なく
とも1つのデータ・バッファの間に提供され、前記コプロセッサ・コントローラ
が、前記分離したデータ・ストリームによる、前記第2のプロセッサおよび前記
少なくとも1つのデータ・バッファへのアクセスを制御する、請求項3に記載の
コンピュータ・システム。 - 【請求項5】 コプロセッサ命令およびバースト命令の実行を、前記コプロセ
ッサ命令およびバースト命令が実行するデータの可用性により、同期化するため
の同期化機構をさらに含む、前記請求項1から4のいずれかに記載のコンピュー
タ・システム。 - 【請求項6】 前記同期化機構が、前記少なくとも1つのデータ・バッファに
まだロードされていないデータにおける前記第2のプロセッサの実行を必要とす
るコプロセッサ命令の実行をブロックするように適合され、前記少なくとも1つ
のデータ・バッファから前記メモリへのデータの格納のためのバースト命令の実
行を、このようなデータが前記第2のプロセッサによって前記少なくとも1つの
データ・バッファへ提供されていない場合にブロックするように適合される、請
求項5に記載のコンピュータ・システム。 - 【請求項7】 前記同期化機構が、特定の実行されたコプロセッサ命令および
特定の実行されたバースト命令によって増分かつ減分されるように適合された、
少なくとも2つのカウンタを含み、所定のしきい値を越えてカウンタをさらに増
分あるいは減分することができない場合、少なくとも1つのタイプの命令が実行
からブロックされる、請求項5または6に記載のコンピュータ・システム。 - 【請求項8】 第1のカウンタが、特定のバースト命令の実行により増分可能
であり、特定のコプロセッサ命令の実行により減分可能であり、前記第1のカウ
ンタを、第1の低しきい値を越えてさらに減分することができないとき、前記第
2のプロセッサの関連付けられた実行のためのコプロセッサ命令がストールある
いは防止される、請求項7に記載のコンピュータ・システム。 - 【請求項9】 前記第1のカウンタを、第1の高しきい値を越えてさらに増分
することができないとき、前記少なくとも1つのバッファから前記メモリへのデ
ータの関連付けられた格納のためのバースト命令がストールあるいは防止される
、請求項8に記載のコンピュータ・システム。 - 【請求項10】 第2のカウンタが、特定のコプロセッサ命令の実行により増
分可能であり、特定のバースト命令の実行により減分可能であり、前記第2のカ
ウンタを、第2の低しきい値を越えてさらに減分することができないとき、前記
少なくとも1つのバッファから前記メモリへのデータの関連付けられた格納のた
めのバースト命令がストールあるいは防止される、請求項7から9のいずれかに
記載のコンピュータ・システム。 - 【請求項11】 前記第2のカウンタを、第2の高しきい値を越えてさらに増
分することができないとき、前記第2のプロセッサの関連付けられた実行のため
のコプロセッサ命令がストールあるいは防止される、請求項10に記載のコンピ
ュータ・システム。 - 【請求項12】 前記あるいは各命令エレメントが命令待ち行列である、請求
項1から11のいずれかに記載のコンピュータ・システム。 - 【請求項13】 前記あるいは各命令エレメントがさらなるプロセッサである
、請求項1から12のいずれかに記載のコンピュータ・システム。 - 【請求項14】 前記あるいは各命令エレメントがプログラム可能な状態機械
である、請求項1から13のいずれかに記載のコンピュータ・システム。 - 【請求項15】 前記第1のプロセッサがコンピュータ・デバイスの中央処理
装置である、請求項1から14のいずれかに記載のコンピュータ・システム。 - 【請求項16】 コンピュータ・システムを動作する方法であって、 第1のプロセッサ、および前記第1のプロセッサへのコプロセッサとして動作
する第2のプロセッサによる実行のためのコードを提供すること、 前記第2のプロセッサによって実行されるタスクを提供することとしての、前
記コードの一部の識別、 前記コードおよび前記タスクから、少なくとも1つのデータ・バッファにより
、前記第2のプロセッサによるアクセスのためにデータ・バーストにおいてメイ
ン・メモリからデータを読み取り、そこへ書き込むことができるようにするため
のバースト命令を決定すること、および、 前記少なくとも1つのデータ・バッファと前記メイン・メモリの間でデータの
転送を制御するバースト・コントローラによるバースト命令の実行と共に、前記
コプロセッサ上で前記タスクを実行することを含む方法。 - 【請求項17】 バースト命令を決定する前記ステップが、前記バースト命令
を、前記第1のプロセッサによって実行される前記コードの一部内に含めること
をさらに含む、請求項16に記載の方法。 - 【請求項18】 バースト命令を決定する前記ステップが、前記コードから前
記第2のプロセッサによってアクセスされるメモリ・アドレスを決定すること、
および少なくとも1つのデータ・バッファにより、前記第2のプロセッサによる
アクセスのためにデータ・バーストにおいてメイン・メモリからデータを読み取
り、そこへ書き込むことができるように、前記第2のプロセッサによって行われ
るメモリ・アクセスを編成することをさらに含む、請求項16または17に記載
の方法。 - 【請求項19】 前記タスクを提供するコードが、コプロセッサ・コントロー
ラによる実行のためのコプロセッサ命令で置換され、前記第2のプロセッサによ
る前記タスクの実行を制御するように決定される、請求項16から18のいずれ
かに記載の方法。 - 【請求項20】 前記タスクの実行において、コプロセッサ命令の実行とバー
スト命令の実行の間の同期化が、同期化機構によって達成される、請求項19に
記載の方法。 - 【請求項21】 前記同期化機構が、前記第1の命令の正しい実行のために完
了が必要である第2の命令が完了するまで、第1の命令をブロックすることを含
む、請求項20に記載の方法。 - 【請求項22】 特定のコプロセッサ命令およびバースト命令により増分可能
あるいは減分可能であるカウンタが使用されて、前記同期化機構が提供される、
請求項20に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99304659.8 | 1999-06-15 | ||
EP99304659A EP1061439A1 (en) | 1999-06-15 | 1999-06-15 | Memory and instructions in computer architecture containing processor and coprocessor |
PCT/GB2000/002331 WO2000077627A1 (en) | 1999-06-15 | 2000-06-15 | Memory and instructions in computer architecture containing processor and coprocessor |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003502728A true JP2003502728A (ja) | 2003-01-21 |
JP2003502728A5 JP2003502728A5 (ja) | 2007-07-26 |
JP5283810B2 JP5283810B2 (ja) | 2013-09-04 |
Family
ID=8241459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001503043A Expired - Fee Related JP5283810B2 (ja) | 1999-06-15 | 2000-06-15 | プロセッサおよびコプロセッサを含むコンピュータ・システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US6782445B1 (ja) |
EP (2) | EP1061439A1 (ja) |
JP (1) | JP5283810B2 (ja) |
DE (1) | DE60045093D1 (ja) |
WO (1) | WO2000077627A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012252374A (ja) * | 2011-05-31 | 2012-12-20 | Renesas Electronics Corp | 情報処理装置 |
KR20180012172A (ko) * | 2016-07-26 | 2018-02-05 | 주식회사 맴레이 | 저항 변화 메모리 기반 코프로세서 및 이를 포함하는 컴퓨팅 디바이스 |
US10929059B2 (en) | 2016-07-26 | 2021-02-23 | MemRay Corporation | Resistance switching memory-based accelerator |
Families Citing this family (59)
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 |
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.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
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 |
EP1228440B1 (de) | 1999-06-10 | 2017-04-05 | PACT XPP Technologies AG | Sequenz-partitionierung auf zellstrukturen |
DE50115584D1 (de) | 2000-06-13 | 2010-09-16 | Krass Maren | Pipeline ct-protokolle und -kommunikation |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7210129B2 (en) * | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7155602B2 (en) | 2001-04-30 | 2006-12-26 | Src Computers, Inc. | Interface for integrating reconfigurable processors into a general purpose computing system |
US7210022B2 (en) * | 2001-05-15 | 2007-04-24 | Cloudshield Technologies, Inc. | Apparatus and method for interconnecting a processor to co-processors using a shared memory as the communication interface |
ATE557344T1 (de) | 2001-06-20 | 2012-05-15 | Krass Maren | Verfahren und gerät zum partitionieren von grossen rechnerprogrammen |
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 |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
AU2002254549A1 (en) * | 2001-12-05 | 2003-06-23 | Src Computers, Inc. | An interface for integrating reconfigurable processors into a general purpose computing system |
WO2003052586A2 (en) * | 2001-12-14 | 2003-06-26 | Koninklijke Philips Electronics N.V. | Data processing system having multiple processors |
DE10392560D2 (de) | 2002-01-19 | 2005-05-12 | Pact Xpp Technologies Ag | Reconfigurierbarer Prozessor |
DE10390689D2 (de) | 2002-02-18 | 2005-02-10 | Pact Xpp Technologies Ag | Bussysteme und Rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
DE10221206B4 (de) * | 2002-05-13 | 2008-04-03 | Systemonic Ag | Burst Zugriffsverfahren auf Co-Prozessoren |
US20040006667A1 (en) * | 2002-06-21 | 2004-01-08 | Bik Aart J.C. | Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions |
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 |
AU2003289844A1 (en) | 2002-09-06 | 2004-05-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US20040136241A1 (en) | 2002-10-31 | 2004-07-15 | Lockheed Martin Corporation | Pipeline accelerator for improved computing architecture and related system and method |
WO2004042562A2 (en) * | 2002-10-31 | 2004-05-21 | Lockheed Martin Corporation | Pipeline accelerator and related system and method |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
US20050055594A1 (en) * | 2003-09-05 | 2005-03-10 | Doering Andreas C. | Method and device for synchronizing a processor and a coprocessor |
JP2005202767A (ja) | 2004-01-16 | 2005-07-28 | Toshiba Corp | プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路 |
US7743376B2 (en) * | 2004-09-13 | 2010-06-22 | Broadcom Corporation | Method and apparatus for managing tasks in a multiprocessor system |
US7809982B2 (en) | 2004-10-01 | 2010-10-05 | Lockheed Martin Corporation | Reconfigurable computing machine and related systems and methods |
US7472261B2 (en) * | 2005-11-08 | 2008-12-30 | International Business Machines Corporation | Method for performing externally assisted calls in a heterogeneous processing complex |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7934063B2 (en) | 2007-03-29 | 2011-04-26 | International Business Machines Corporation | Invoking externally assisted calls from an isolated environment |
US7817657B1 (en) | 2007-06-14 | 2010-10-19 | Xilinx, Inc. | Circuit for processing network packets |
US8144702B1 (en) * | 2007-06-14 | 2012-03-27 | Xilinx, Inc. | Generation of a pipeline for processing a type of network packets |
US7788470B1 (en) * | 2008-03-27 | 2010-08-31 | Xilinx, Inc. | Shadow pipeline in an auxiliary processor unit controller |
EP2366144B1 (en) | 2008-10-15 | 2015-09-30 | Hyperion Core, Inc. | Sequential processor comprising an alu array |
US9104403B2 (en) * | 2010-08-18 | 2015-08-11 | Freescale Semiconductor, Inc. | Data processing system having selective redundancy and method therefor |
US9880852B2 (en) * | 2012-12-27 | 2018-01-30 | Intel Corporation | Programmable hardware accelerators in CPU |
JP2018120448A (ja) * | 2017-01-26 | 2018-08-02 | ソニーセミコンダクタソリューションズ株式会社 | 演算処理装置および情報処理システム |
US11294678B2 (en) | 2018-05-29 | 2022-04-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
US11334384B2 (en) * | 2019-12-10 | 2022-05-17 | Advanced Micro Devices, Inc. | Scheduler queue assignment burst mode |
US11249766B1 (en) | 2020-09-14 | 2022-02-15 | Apple Inc. | Coprocessor synchronizing instruction suppression |
US11948000B2 (en) | 2020-10-27 | 2024-04-02 | Advanced Micro Devices, Inc. | Gang scheduling for low-latency task synchronization |
US12066955B2 (en) * | 2021-05-19 | 2024-08-20 | Hughes Network Systems, Llc | System and method for enhancing throughput during data transfer |
CN116804915B (zh) * | 2023-08-28 | 2023-12-15 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0021365B1 (en) * | 1979-06-26 | 1986-11-12 | Kabushiki Kaisha Toshiba | Data processing system with a slave computer |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4099236A (en) * | 1977-05-20 | 1978-07-04 | Intel Corporation | Slave microprocessor for operation with a master microprocessor and a direct memory access controller |
US4589067A (en) * | 1983-05-27 | 1986-05-13 | Analogic Corporation | Full floating point vector processor with dynamically configurable multifunction pipelined ALU |
US6438683B1 (en) * | 1992-07-28 | 2002-08-20 | Eastman Kodak Company | Technique using FIFO memory for booting a programmable microprocessor from a host computer |
US5884050A (en) * | 1996-06-21 | 1999-03-16 | Digital Equipment Corporation | Mechanism for high bandwidth DMA transfers in a PCI environment |
US5784582A (en) * | 1996-10-28 | 1998-07-21 | 3Com Corporation | Data processing system having memory controller for supplying current request and next request for access to the shared memory pipeline |
EP0853283A1 (en) * | 1997-01-09 | 1998-07-15 | Hewlett-Packard Company | Computer system with memory controller for burst transfer |
EP0862118B1 (en) | 1997-01-09 | 2004-02-04 | Hewlett-Packard Company, A Delaware Corporation | Computer system comprising a memory controller for burst transfer |
DE69727465T2 (de) * | 1997-01-09 | 2004-12-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung |
EP0858167A1 (en) | 1997-01-29 | 1998-08-12 | Hewlett-Packard Company | Field programmable processor device |
EP0858168A1 (en) | 1997-01-29 | 1998-08-12 | Hewlett-Packard Company | Field programmable processor array |
DE69827589T2 (de) | 1997-12-17 | 2005-11-03 | Elixent Ltd. | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen |
EP0924625B1 (en) | 1997-12-17 | 2004-11-17 | Elixent Limited | Configurable processing device and method of using said device to construct a central processing unit |
US6442671B1 (en) * | 1999-03-03 | 2002-08-27 | Philips Semiconductors | System for priming a latch between two memories and transferring data via the latch in successive clock cycle thereafter |
-
1999
- 1999-06-15 EP EP99304659A patent/EP1061439A1/en not_active Withdrawn
-
2000
- 2000-06-15 DE DE60045093T patent/DE60045093D1/de not_active Expired - Lifetime
- 2000-06-15 JP JP2001503043A patent/JP5283810B2/ja not_active Expired - Fee Related
- 2000-06-15 US US09/763,021 patent/US6782445B1/en not_active Expired - Fee Related
- 2000-06-15 EP EP00942188A patent/EP1104562B1/en not_active Expired - Lifetime
- 2000-06-15 WO PCT/GB2000/002331 patent/WO2000077627A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0021365B1 (en) * | 1979-06-26 | 1986-11-12 | Kabushiki Kaisha Toshiba | Data processing system with a slave computer |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012252374A (ja) * | 2011-05-31 | 2012-12-20 | Renesas Electronics Corp | 情報処理装置 |
US9354893B2 (en) | 2011-05-31 | 2016-05-31 | Renesas Electronics Corporation | Device for offloading instructions and data from primary to secondary data path |
KR20180012172A (ko) * | 2016-07-26 | 2018-02-05 | 주식회사 맴레이 | 저항 변화 메모리 기반 코프로세서 및 이를 포함하는 컴퓨팅 디바이스 |
KR101890426B1 (ko) | 2016-07-26 | 2018-08-21 | 주식회사 맴레이 | 저항 변화 메모리 기반 코프로세서 및 이를 포함하는 컴퓨팅 디바이스 |
US10929059B2 (en) | 2016-07-26 | 2021-02-23 | MemRay Corporation | Resistance switching memory-based accelerator |
US10936198B2 (en) | 2016-07-26 | 2021-03-02 | MemRay Corporation | Resistance switching memory-based coprocessor and computing device including the same |
Also Published As
Publication number | Publication date |
---|---|
EP1061439A1 (en) | 2000-12-20 |
WO2000077627A1 (en) | 2000-12-21 |
JP5283810B2 (ja) | 2013-09-04 |
DE60045093D1 (de) | 2010-11-25 |
EP1104562B1 (en) | 2010-10-13 |
EP1104562A1 (en) | 2001-06-06 |
US6782445B1 (en) | 2004-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5283810B2 (ja) | プロセッサおよびコプロセッサを含むコンピュータ・システム | |
US10203958B2 (en) | Streaming engine with stream metadata saving for context switching | |
US7904702B2 (en) | Compound instructions in a multi-threaded processor | |
US7920584B2 (en) | Data processing system | |
JP6243935B2 (ja) | コンテキスト切替方法及び装置 | |
CN100562892C (zh) | 图像处理引擎及包含图像处理引擎的图像处理系统 | |
US20080082707A1 (en) | Non-blocking bus controller for a pipelined, variable latency, hierarchical bus with point-to-point first-in first-out ordering | |
CN111527485B (zh) | 存储器网络处理器 | |
WO2007003370A2 (en) | A memory arrangement for multi-processor systems | |
US20170147345A1 (en) | Multiple operation interface to shared coprocessor | |
JP2003501775A (ja) | プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ | |
GB2330673A (en) | Data processing apparatus | |
US7383424B1 (en) | Computer architecture containing processor and decoupled coprocessor | |
KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
JP4589305B2 (ja) | Ilp及びtlpを利用する再構成可能なプロセッサアレイ | |
US6327648B1 (en) | Multiprocessor system for digital signal processing | |
JP3789937B2 (ja) | ベクトルプロセッサのためのチャンク連鎖 | |
WO2012156995A2 (en) | Fetch less instruction processing (flip) computer architecture for central processing units (cpu) | |
JP2004515856A (ja) | ディジタル信号処理装置 | |
US12019561B2 (en) | Pseudo-first in, first out (FIFO) tag line replacement | |
US20230251970A1 (en) | Padding and suppressing rows and columns of data | |
JP2007048019A (ja) | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム | |
Meeuwsen | A shared memory module for an asynchronous array of simple processors | |
GB2425862A (en) | Data processing system | |
JP2007048020A (ja) | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070604 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070604 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100629 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100901 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110628 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20110708 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111024 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111027 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20120302 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120820 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20120821 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20121023 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130529 |
|
LAPS | Cancellation because of no payment of annual fees |