JP2003501775A - プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ - Google Patents
プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャInfo
- Publication number
- JP2003501775A JP2003501775A JP2001503042A JP2001503042A JP2003501775A JP 2003501775 A JP2003501775 A JP 2003501775A JP 2001503042 A JP2001503042 A JP 2001503042A JP 2001503042 A JP2001503042 A JP 2001503042A JP 2003501775 A JP2003501775 A JP 2003501775A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- memory
- coprocessor
- instructions
- burst
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 200
- 238000012545 processing Methods 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 181
- 238000012546 transfer Methods 0.000 claims description 33
- 230000007246 mechanism Effects 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 20
- 230000001276 controlling effect Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 19
- 230000000694 effects Effects 0.000 description 10
- 238000003491 array Methods 0.000 description 8
- 239000013598 vector Substances 0.000 description 8
- 230000003139 buffering effect Effects 0.000 description 7
- 241000238876 Acari Species 0.000 description 6
- 238000004891 communication Methods 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
- 230000006399 behavior Effects 0.000 description 5
- 239000007853 buffer solution Substances 0.000 description 5
- 230000008859 change Effects 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
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 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
- 230000009172 bursting Effects 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
- 230000006872 improvement 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
- 238000007796 conventional method Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000001914 filtration Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
Description
キテクチャに関する。
Uのような汎用マイクロプロセッサの周辺に基づいている。このようなマイクロ
プロセッサは、幅広い範囲の計算タスクを処理するように十分に適合されるが、
これらは必然的にすべてのタスクに合わせて最適化されるのではない。タスクが
計算的に集中する場合(媒体処理など)、CPUはしばしば受け入れ可能に実行
することができない。
うに特に適合されたコプロセッサを使用することである。このようなコプロセッ
サは、ASIC(特定用途向けIC)を使用して構築することができる。これら
は特定の計算タスクのために構築され、したがってこのようなタスクに合わせて
最適化することができる。しかし、これらは使用において柔軟性がなく(これら
が特定のタスクのみのために設計されるので)、典型的に製造するのが遅い。改
善された解決策は、FPGA(フィールド・プログラム可能ゲート・アレイ)な
ど、所与の計算タスクに特に適合された構成でプログラムすることができる、柔
軟性のあるハードウェアの構築によって見つけることができる。このような構成
が構成可能であるだけでなく、再構成可能である場合は、さらなる柔軟性が達成
される。このような再構成可能な構成の一例がCHESSアレイであり、これは
、国際特許出願第GB98/00262号、国際特許出願第GB98/0024
8号、1998年12月11日出願の米国特許出願第09/209,542号、
およびその欧州の相当する欧州特許出願第98309600.9号において論じ
られている。
とができるが、CPUとして動作するマイクロプロセッサの限界が、このような
計算が要求される場合に、全体的なシステムパフォーマンスに重大な影響を与え
る可能性がなお存在する。前記プロセッサの限界が全体的なパフォーマンスに与
える影響をより少なくするために、プロセッサ―コプロセッサシステムをさらに
改善することが望ましい。
して使用するための第2のプロセッサ、メモリ、減結合エレメントを含み、減結
合エレメントを介して第1のプロセッサから得た命令を第2のプロセッサが消費
するよう、命令が減結合エレメントを介して第1のプロセッサから第2のプロセ
ッサへ渡され、第2のプロセッサがメモリからデータを受け取り、かつメモリへ
データを書き込み、それによって、第2のプロセッサによる命令の処理が第1の
プロセッサの動作から減結合される、コンピュータ・システムが提供される。
実行するのに特別に適合されたプロセッサである第2のプロセッサ上で命令が実
行されている間に、典型的には汎用マイクロプロセッサである第1のプロセッサ
がタスクを切り替えることができるので、パフォーマンスの著しい改善をもたら
すことができる。これは、第1のプロセッサがコンピュータ装置の中心演算ユニ
ットであり、ゆえに多数の他のタスクのために必要とされる可能性がある場合に
非常に重要である。これは、第2のプロセッサが構成可能か、あるいは再構成可
能である場合に、特に有効な装置である。
(減結合エレメントが効率的に命令を与えることができるように)減結合エレメ
ントの補助をすることだけである。都合のよいことに、減結合エレメントは、委
任されたタスクが実行される間はそのような補助を要求しないように設定するこ
ともできる。
ロセッサ命令列に追加され、かつ、コプロセッサによってコプロセッサ命令列か
ら消費される、コプロセッサ命令列である。その代替選択肢に、命令を与えるべ
き情報が第1のプロセッサによって状態機械に与えられ、かつ、命令が状態機械
によって命じられたシーケンスで第2のプロセッサに与えられる、状態機械があ
る。さらなる代替選択肢として、第2のプロセッサに命令を与えるべき情報が第
1のプロセッサによって第3のプロセッサに与えられ、かつ、命令が第3のプロ
セッサによって命じられたシーケンスで第2のプロセッサに与えられる、第3の
プロセッサがある。
セッサの実行をメモリからの読み込みと同期させるためのコプロセッサ・コント
ローラを含むことである。
ロセッサがデータを格納するバッファ・メモリをも含み、そのバッファ・メモリ
がメモリからデータを読み込み、かつ、メモリにデータを格納するように適合さ
れている場合、特に有効である。これは、もしメモリがダイナミックRAMであ
り、バッファ・メモリがデータをバーストの形でバッファ・メモリから読み込む
か、あるいはバッファ・メモリに格納するように適合されている場合、メディア
・アルゴリズムに対するパフォーマンスを著しく向上させる。
モリの間のデータの移動に関するメモリ命令が、この第2の減結合エレメントを
介して第1のプロセッサからバッファ・メモリへ渡される、バッファ・メモリが
第2の減結合エレメントを介して第1のプロセッサから得た命令を消費するよう
な、第2の減結合エレメントを使用することによって達成される。このように、
バッファ・メモリによるメモリ命令の処理は第1のプロセッサの動作から減結合
される。
ム要素から減結合されている場合、バッファ・メモリとメモリの間のデータの転
送を第2のプロセッサによる命令の実行に同期させるための同期機構が存在する
ことが望まれる。これは、メモリからバッファ・メモリにまだ読み込まれていな
いデータに対して第2のプロセッサによる命令の実行をブロックするように適合
され、かつ相当する命令が第2のプロセッサによってまだ実行されていない場合
に、バッファ・メモリからメモリへデータを格納するメモリ命令の実行をブロッ
クするように適合されるのが好ましい。もし、命令、またはメモリ命令の実行が
同期機構によってブロックされた時に、同期機構によってブロックされていない
他の命令、またはメモリ命令が依然実行されているような場合に、最も大きな効
果が得られる。またさらなる側面においては、本発明は、第1のプロセッサによ
る実行のためのコードの提供、そのコードからの、第1のプロセッサに対するコ
プロセッサとして動作する第2のプロセッサによって実行されるべきタスクの抽
出、そのタスクを定義する情報の第1のプロセッサから減結合エレメントへの受
け渡し、前記情報より得られた命令の減結合エレメントから第2のプロセッサへ
の受け渡し、および第2のプロセッサ上での前記命令の実行を含み、第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号において
記載されており、それらの出願が参照により本明細書に組み込まれる。バースト
・バッファ・アーキテクチャについては本明細書で簡単に記載されるが、このア
ーキテクチャの十分な詳細については、先の出願を参照していただきたい。
れるように、本発明の動作に有用ではあるが、不可欠なものではない。本発明の
状況においては、バースト・バッファ・アーキテクチャの最も重要な面は、バー
スト・バッファ5がプロセッサ1からの命令に従って動作すること、および、こ
れらの命令が待ち行列(または、後で議論されるように、その代替手段)によっ
て与えられることである。この機構は、プロセッサ1が、適切なアーキテクチャ
において、バースト・バッファ5の動作から減結合されることを可能にする。
のエレメント(前記の出願において論じられるように、変形も可能)が、図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 (18)
- 【請求項1】 第1のプロセッサと、 前記第1のプロセッサへのコプロセッサとして使用するための第2のプロセッ
サと、 コプロセッサ・コントローラと、 メモリと、 減結合エレメントを含み、 前記第2のプロセッサが、前記減結合エレメントを介して前記第1のプロセッ
サから得た命令を消費するよう、命令が該減結合エレメントを介して該第1のプ
ロセッサから該第2のプロセッサへ渡され、前記第2のプロセッサは、前記メモ
リからデータを受け取り、かつ該メモリへデータを書き込み、前記コプロセッサ
・コントローラは、前記メモリからの読み込みに関して前記コプロセッサの実行
が正しく命じられるよう、前記第2のプロセッサの活動を制御し、それにより前
記第2のプロセッサによる命令の処理が前記第1のプロセッサの動作と減結合さ
れる、コンピュータ・システム。 - 【請求項2】 前記減結合エレメントがコプロセッサ命令列であり、命令が第
一のプロセッサによってコプロセッサ命令列に加えられ、かつ、コプロセッサに
よってコプロセッサ命令列から消費される、請求項1に記載のコンピュータ・シ
ステム。 - 【請求項3】 前記減結合エレメントが状態機械であり、前記第2のプロセッ
サに命令を提供するための情報が前記第1のプロセッサによって前記状態機械に
提供され、命令が前記状態機械によって前記第2のプロセッサに命じられたシー
ケンスで提供される、請求項1に記載のコンピュータ・システム。 - 【請求項4】 前記減結合エレメントが第3のプロセッサであり、前記第2の
プロセッサに命令を提供するための情報が前記第1のプロセッサによって前記第
3のプロセッサに提供され、命令が前記第3のプロセッサによって前記第2のプ
ロセッサに命じられたシーケンスで提供される、請求項1に記載のコンピュータ
・システム。 - 【請求項5】 前記第2のプロセッサが構成可能である、前記請求項1から4
のいずれか一つに記載のコンピュータ・システム。 - 【請求項6】 前記第2のプロセッサがメモリからダウンロードされた構成に
したがって構成されるように適合された、請求項5に記載のコンピュータ・シス
テム。 - 【請求項7】 前記第1のプロセッサが、前記第2のプロセッサによる命令の
実行の間にタスクを切り替えることのできる、前記請求項1から6のいずれか一
つに記載のコンピュータ・システム。 - 【請求項8】 前記第2のプロセッサがデータを読み込み、かつ、前記第2の
プロセッサがデータを格納するバッファ・メモリをさらに含み、前記バッファ・
メモリが前記メモリからデータを読み込み、かつ、前記メモリにデータを格納す
るように適合された、前記請求項1から7のいずれか一つに記載のコンピュータ
・システム。 - 【請求項9】 前記メモリがダイナミックRAMであり、前記バッファ・メモ
リがバーストの形で前記バッファ・メモリからデータを読み込み、かつ、前記バ
ッファ・メモリにデータを格納する、請求項8に記載のコンピュータ・システム
。 - 【請求項10】 第2の減結合エレメントをさらに含み、前記バッファ・メモ
リが前記第2の減結合エレメントを介して前記第1のプロセッサから得た命令を
消費するという、前記バッファ・メモリと前記メモリの間のデータの移動に関す
るメモリ命令が、前記第2の減結合エレメントを介して前記第1のプロセッサか
ら前記バッファ・メモリに渡され、それによって、前記バッファ・メモリによる
メモリ命令の処理が前記第1のプロセッサの動作から減結合される、請求項8ま
たは9に記載のコンピュータ・システム。 - 【請求項11】 前記第2の減結合エレメントがバッファ・メモリ命令列であ
り、メモリ命令が前記第1のプロセッサによって前記バッファ・メモリ命令列に
加えられ、かつ、前記バッファ・メモリによって前記バッファ・メモリ命令列か
ら消費される、請求項10に記載のコンピュータ・システム。 - 【請求項12】 前記第2の減結合エレメントが状態機械であり、前記バッフ
ァ・メモリにメモリ命令を提供するための情報が前記第1のプロセッサによって
前記状態機械に提供され、メモリ命令が前記状態機械によって前記バッファ・メ
モリに命じられたシーケンスで提供される、請求項10に記載のコンピュータ・
システム。 - 【請求項13】 前記第2の減結合エレメントが第4のプロセッサであり、前
記バッファ・メモリにメモリ命令を提供するための情報が前記第1のプロセッサ
によって前記第4のプロセッサに提供され、メモリ命令が前記第4のプロセッサ
によって前記バッファ・メモリに命じられたシーケンスで提供される、請求項1
0に記載のコンピュータ・システム。 - 【請求項14】 前記第2のプロセッサによる命令の実行により前記バッファ
・メモリと前記メモリとの間のデータの転送を同期させるための同期機構をさら
に含む、請求項8から13のいずれかに記載のコンピュータ・システム。 - 【請求項15】 前記同期機構が、前記メモリからより前記バッファ・メモリ
にまだ読み込まれていないデータに対する前記第2のプロセッサによる命令の実
行をブロックするように適合され、かつ、前記第2のプロセッサによって相当す
る命令がまだ実行されていない場合に、前記バッファ・メモリから前記メモリへ
のデータの格納するためのメモリ命令の実行をブロックするように適合された、
請求項14に記載のコンピュータ・システム。 - 【請求項16】 命令またはメモリ命令の実行が前記同期機構によってブロッ
クされた時に、前記同期機構によってブロックされていない他の命令またはメモ
リ命令は実行されるように適合された、請求項15に記載のコンピュータ・シス
テム。 - 【請求項17】 前記第1のプロセッサがコンピュータ装置のCPUである、
請求項1から16のいずれかに記載のコンピュータ・システム。 - 【請求項18】 コンピュータ・システムを動作する方法であって、 第1のプロセッサ、および、該第1のプロセッサへのコプロセッサとして動作
する第2のプロセッサによる実行のためのコードを提供すること、 前記第2のプロセッサによって実行されるタスクを提供するものとして、前記
コードの一部を識別すること、 タスクを定義する情報を、前記第1のプロセッサから減結合エレメントに渡す
こと、および、 前記情報から得られた命令を前記減結合エレメントから前記第2のプロセッサ
に渡し、かつ前記第2のプロセッサ上で前記命令を処理することを含み、前記第
2のプロセッサによる前記命令の処理が前記第1のプロセッサの動作から減結合
されている、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99304658A EP1061438A1 (en) | 1999-06-15 | 1999-06-15 | Computer architecture containing processor and coprocessor |
EP99304658.0 | 1999-06-15 | ||
PCT/GB2000/002320 WO2000077626A1 (en) | 1999-06-15 | 2000-06-15 | Computer architecture containing processor and coprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003501775A true JP2003501775A (ja) | 2003-01-14 |
JP2003501775A5 JP2003501775A5 (ja) | 2011-12-08 |
Family
ID=8241458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001503042A Pending JP2003501775A (ja) | 1999-06-15 | 2000-06-15 | プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ |
Country Status (3)
Country | Link |
---|---|
EP (2) | EP1061438A1 (ja) |
JP (1) | JP2003501775A (ja) |
WO (1) | WO2000077626A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020038502A (ja) * | 2018-09-04 | 2020-03-12 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
JP2021503119A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリベースの構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7234144B2 (en) | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
EP1576471A2 (en) * | 2002-10-31 | 2005-09-21 | Lockheed Martin Corporation | Programmable circuit and related computing machine and method |
US20040136241A1 (en) | 2002-10-31 | 2004-07-15 | Lockheed Martin Corporation | Pipeline accelerator for improved computing architecture and related system and method |
US7421694B2 (en) * | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US9292904B2 (en) | 2004-01-16 | 2016-03-22 | Nvidia Corporation | Video image processing with parallel processing |
US7653265B2 (en) | 2004-01-16 | 2010-01-26 | Nvidia Corporation | Video image processing with utility processing stage |
US7760968B2 (en) | 2004-01-16 | 2010-07-20 | Nvidia Corporation | Video image processing with processing time allocation |
WO2006024957A2 (en) * | 2004-07-01 | 2006-03-09 | Harman Becker Automotive Systems Gmbh | Computer architecture for a multimedia system used in a vehicle |
US7809982B2 (en) | 2004-10-01 | 2010-10-05 | Lockheed Martin Corporation | Reconfigurable computing machine and related systems and methods |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS564862A (en) * | 1979-06-26 | 1981-01-19 | Toshiba Corp | Computer system |
JPS59226971A (ja) * | 1983-05-27 | 1984-12-20 | アナロジツク・コ−ポレ−シヨン | 全浮動小数点ベクトルプロセツサ |
JPS61100852A (ja) * | 1984-10-22 | 1986-05-19 | Fujitsu Ltd | デ−タ転送方式 |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
EP0853283A1 (en) * | 1997-01-09 | 1998-07-15 | Hewlett-Packard Company | Computer system with memory controller for burst transfer |
JPH10232826A (ja) * | 1997-01-09 | 1998-09-02 | Hewlett Packard Co <Hp> | コンピュータ・システム |
JPH1165989A (ja) * | 1997-08-22 | 1999-03-09 | Sony Computer Entertainment:Kk | 情報処理装置 |
Family Cites Families (2)
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 |
US6438683B1 (en) * | 1992-07-28 | 2002-08-20 | Eastman Kodak Company | Technique using FIFO memory for booting a programmable microprocessor from a host computer |
-
1999
- 1999-06-15 EP EP99304658A patent/EP1061438A1/en not_active Withdrawn
-
2000
- 2000-06-15 WO PCT/GB2000/002320 patent/WO2000077626A1/en not_active Application Discontinuation
- 2000-06-15 EP EP00942184A patent/EP1104561A1/en not_active Withdrawn
- 2000-06-15 JP JP2001503042A patent/JP2003501775A/ja active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS564862A (en) * | 1979-06-26 | 1981-01-19 | Toshiba Corp | Computer system |
EP0021365B1 (en) * | 1979-06-26 | 1986-11-12 | Kabushiki Kaisha Toshiba | Data processing system with a slave computer |
JPS59226971A (ja) * | 1983-05-27 | 1984-12-20 | アナロジツク・コ−ポレ−シヨン | 全浮動小数点ベクトルプロセツサ |
US4589067A (en) * | 1983-05-27 | 1986-05-13 | Analogic Corporation | Full floating point vector processor with dynamically configurable multifunction pipelined ALU |
JPS61100852A (ja) * | 1984-10-22 | 1986-05-19 | Fujitsu Ltd | デ−タ転送方式 |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
EP0853283A1 (en) * | 1997-01-09 | 1998-07-15 | Hewlett-Packard Company | Computer system with memory controller for burst transfer |
JPH10232826A (ja) * | 1997-01-09 | 1998-09-02 | Hewlett Packard Co <Hp> | コンピュータ・システム |
JPH1165989A (ja) * | 1997-08-22 | 1999-03-09 | Sony Computer Entertainment:Kk | 情報処理装置 |
US6427201B1 (en) * | 1997-08-22 | 2002-07-30 | Sony Computer Entertainment Inc. | Information processing apparatus for entertainment system utilizing DMA-controlled high-speed transfer and processing of routine data |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021503119A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリベースの構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP2020038502A (ja) * | 2018-09-04 | 2020-03-12 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
JP7137058B2 (ja) | 2018-09-04 | 2022-09-14 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2000077626A1 (en) | 2000-12-21 |
EP1104561A1 (en) | 2001-06-06 |
EP1061438A1 (en) | 2000-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5283810B2 (ja) | プロセッサおよびコプロセッサを含むコンピュータ・システム | |
US10203958B2 (en) | Streaming engine with stream metadata saving for context switching | |
US7920584B2 (en) | Data processing system | |
US7904702B2 (en) | Compound instructions in a multi-threaded processor | |
JP5989656B2 (ja) | 処理クラスタ用の共有機能メモリ回路要素 | |
TWI292553B (en) | Processor, method for generating or manufacturing a processor, system for generating a processor, and computer-readable medium having stored thereon a computer program | |
CN111527485B (zh) | 存储器网络处理器 | |
US20220179652A1 (en) | Inserting null vectors into a stream of vectors | |
WO2001016710A1 (fr) | Processeur de donnees | |
JP2003501775A (ja) | プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ | |
GB2330673A (en) | Data processing apparatus | |
US20240184586A1 (en) | Mechanism to queue multiple streams to run on streaming engine | |
US7383424B1 (en) | Computer architecture containing processor and decoupled coprocessor | |
KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
JP4589305B2 (ja) | Ilp及びtlpを利用する再構成可能なプロセッサアレイ | |
US6327648B1 (en) | Multiprocessor system for digital signal processing | |
JP2004503872A (ja) | 共同利用コンピュータシステム | |
Khare et al. | High-level synthesis with synchronous and RAMBUS DRAMs | |
WO2020237231A1 (en) | Inserting predefined pad values into a stream of vectors | |
US12019561B2 (en) | Pseudo-first in, first out (FIFO) tag line replacement | |
JP2668987B2 (ja) | データ処理装置 | |
US20230251970A1 (en) | Padding and suppressing rows and columns of data | |
Meeuwsen | A shared memory module for an asynchronous array of simple processors | |
GB2425862A (en) | Data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070529 |
|
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: 20100906 |
|
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 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20111024 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111027 |