Nothing Special   »   [go: up one dir, main page]

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
Application number
JP2001503043A
Other languages
English (en)
Other versions
JP2003502728A5 (ja
JP5283810B2 (ja
Inventor
オルギエッティ・アンドレア
マッカーシー・ドミニク・ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2003502728A publication Critical patent/JP2003502728A/ja
Publication of JP2003502728A5 publication Critical patent/JP2003502728A5/ja
Application granted granted Critical
Publication of JP5283810B2 publication Critical patent/JP5283810B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling 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

(57)【要約】 第1のプロセッサ(1)、第1のプロセッサ(1)へのコプロセッサとして使用するための第2のプロセッサ(2)、およびメモリ(3)を含む、コンピュータ・システムが提供される。バースト命令に従ってデータ・バーストにおいてメモリ(3)へ書き込まれるかあるいはそこから読み取られるデータをバッファに入れるための、データ・バッファ(5)も提供される。これらのバースト命令がバースト・コントローラ(7)によって実行され、バースト命令待ち行列(6)による実行のために順番に提供される。バースト命令が第1のプロセッサ(1)によってバースト命令待ち行列(6)へ提供され、データが、バースト・コントローラ(7)によって実行されたバースト命令に従ってデータ・バッファ(5)を通じて、第2のプロセッサ(2)によってメモリ(3)から読み取られ、そこへ書き込まれる。コプロセッサ命令が、コプロセッサ(2)の実行を制御するために提供され、コプロセッサ命令とバースト命令の間の同期化が、同期化機構(10、11)および特定のコプロセッサおよびバースト命令の使用によって達成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、メイン・プロセッサおよびコプロセッサを含むコンピュータ・アー
キテクチャに関し、詳細にはこのようなアーキテクチャにおけるコプロセッサに
よるメモリ・リソースの使用に関する。
【0002】
【従来の技術】
マイクロプロセッサをベースとするコンピュータ・システムは、典型的には、
CPUのような汎用マイクロプロセッサに基づいている。このようなマイクロプ
ロセッサは、幅広い範囲の計算タスクを処理するように十分に適合されるが、こ
れらは必然的にすべてのタスクに合わせて最適化されるのではない。タスクが計
算に集中する場合(媒体処理など)、CPUはしばしば実行に困難を生じる。
【0003】 この問題への標準の手法の1つは、個々の計算的に困難なタスクを処理するよ
うに特に適合されたコプロセッサを使用することである。このようなコプロセッ
サは、ASIC(特定用途向けIC)を使用して構築することができる。これら
は特定の計算タスクのために構築され、したがってこのようなタスクに合わせて
最適化することができる。しかし、これらは使用において柔軟性がなく(これら
が特定のタスクのみのために設計されるので)、一般に製造に時間がかかる。解
決策としては、FPGA(フィールド・プログラム可能ゲート・アレイ)など、
所与の計算タスクに特に適合された構成でプログラムすることができる、柔軟性
のあるハードウェアの構築がある。このような構造が構成可能であるだけでなく
、再構成可能である場合は、さらなる柔軟性が達成される。このような再構成可
能な構造の一例がCHESSアレイであり、これは、国際特許出願第GB98/
00262号、国際特許出願第GB98/00248号、1998年12月11
日出願の米国特許出願第09/209,542号、およびその欧州の相当する欧
州特許出願第98309600.9号において論じられている。
【0004】
【発明が解決しようとする課題】
このようなコプロセッサの使用は、このような計算の効率を著しく改善するこ
とができるが、従来のアーキテクチャの構成がコプロセッサの有効性を抑制する
可能性がある。計算をなおより有効にコプロセッサに移すことができる装置を達
成することが、特にこれらの計算が大量のデータを処理することを含む場合、望
ましい。
【0005】
【課題を解決するための手段】
したがって、第1のプロセッサ、第1のプロセッサへのコプロセッサとして使
用するための第2のプロセッサ、メモリ、バースト命令に従ってデータ・バース
トにおいてメモリへ書き込まれるかあるいはそこから読み取られるデータをバッ
ファに入れるための少なくとも1つのデータ・バッファ、バースト命令を実行す
るためのバースト・コントローラ、バースト・コントローラによる実行のために
バースト命令を順番に提供するためのバースト命令エレメントを含み、それによ
ってバースト命令が第1のプロセッサからバースト命令エレメントへ提供され、
バースト・コントローラによって実行されたバースト命令に従って少なくとも1
つのデータ・バッファを通じて、データが第2のプロセッサによってメモリから
読み取られ、そこへ書き込まれるコンピュータ・システムが提供される。
【0006】 この装置は特に、コプロセッサが大きいブロックのデータで作業する場合、特
にこのようなブロックのメモリ・アドレスが定期的に変わる場合に有利である。
この装置により、このようなブロックを、メイン・プロセッサ(それらを使用す
るにあまり適していないシステム・コンポーネント・エレメントである)の関与
を最小にして、有効にメイン・メモリに出し入れすることができる。
【0007】 コプロセッサがデータ・バッファと類似の方法で制御される場合、特に効率的
な構造を達成することができる。これは、第2のプロセッサの実行を制御するた
めのコプロセッサ命令を順番に提供するためのコプロセッサ命令エレメントによ
り行うことができる(コプロセッサ命令は初めに第1のプロセッサによって提供
される)。コプロセッサ・コントローラがコプロセッサ命令をコプロセッサ命令
エレメントから受信し、それに従って第2のプロセッサの実行を制御するのがよ
い。このコプロセッサ・コントローラは、コプロセッサと少なくとも1つのデー
タ・バッファの間の通信を制御することができ、たとえば、バスがコプロセッサ
・コントローラとデータバッファの間に存在する場合、コプロセッサ・コントロ
ーラが、第2のプロセッサからバスに別々のデータ・ストリームの出入りのアク
セスを制御することができる。
【0008】 コプロセッサおよびバースト命令が実行するデータの可用性により、コプロセ
ッサとバースト命令の実行を同期化するための同期化機構がある場合、特定の利
点を得ることができる。これは、コプロセッサがコプロセッサ命令に基づいて実
行する場合、特に十分に実施される。有効な手法は、データ・バッファにまだロ
ードされていないデータに対し第2のプロセッサの実行を必要とするコプロセッ
サ命令の実行をブロックし、データが第2のプロセッサによってデータ・バッフ
ァへ提供されていない場合、データ・バッファからメモリへのデータの格納のた
めのバースト命令の実行をブロックするように、同期化機構を適合させることで
ある。同期化機構を実行するための特に有効な方法は、カウンタを使用すること
であり、このカウンタは、適切なバーストおよびコプロセッサ命令を通じて増分
あるいは減分することができ、特定の命令をさらに減分できない場合はブロック
する。
【0009】 さらなる態様では、本発明はコンピュータ・システムを動作する方法を提供し
、これは、第1のプロセッサによる実行のためのコードを提供すること、第1の
プロセッサへのコプロセッサとして動作する第2のプロセッサによって実行され
るタスクをコードから抽出すること、コードおよびタスクから、少なくとも1つ
のデータ・バッファにより、第2のプロセッサによるアクセスのためにデータ・
バーストにおいてメイン・メモリからデータを読み取り、そこへ書き込むことが
できるようにするためのバースト命令を決定すること、および少なくとも1つの
データ・バッファとメイン・メモリの間でデータの転送を制御するバースト・コ
ントローラによるバースト命令の実行と共に、コプロセッサ上のタスクの実行を
含む。
【0010】 コードからのタスクの抽出に続いて、コプロセッサ・コントローラによる実行
のためのコプロセッサ命令が、第2のプロセッサによるタスクの実行を制御する
ために決定されるのがよい。
【0011】 タスクの実行の場合、コプロセッサ命令の実行とバースト命令の実行の間の同
期化が同期化機構によって達成されるのがよい。この同期化機構は、第1の命令
の正しい実行のために完了が必要である第2の命令が完了するまで、第1の命令
をブロックすることを、有効に含むことができる。この機構は、適切なバースト
またはコプロセッサ命令を通じて増分あるいは減分することができるカウンタを
使用することができる。
【0012】 本発明の特定の実施形態を添付の図面を参照して、以下に説明する。
【0013】
【発明の実施の形態】
図1は、本発明の第1の実施形態によるシステムの基本エレメントを示す。本
質的に、このシステムはプロセッサ1およびコプロセッサ2を含み、これらは、
最大の計算効率のために、計算をプロセッサ1とコプロセッサ2の間で区分する
ことができるよう構成されている。プロセッサ1は本質的にいかなる汎用プロセ
ッサ(たとえば、i960)でもよく、コプロセッサ2は本質的に、著しくより
高い有効性により計算の一部を処理することができるいかなるコプロセッサでも
よい。ここで記載された特定のシステムでは、本質的に計算全体がプロセッサ1
によるよりもコプロセッサ2によって処理されるが、本発明はこの特定の構成に
限定されるものではない。
【0014】 特に記載されたシステムでは、コプロセッサ2が再構成可能FPGAの形式で
あり、これについては以下でさらに述べられるが、コプロセッサ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を含み、これらは以下に記載される
方法で動作する(他のこのような同期化機構が可能であり、これらについても以
下に述べられる)。
【0015】 システム・アーキテクチャにおけるエレメントの説明 このシステムの個々のエレメントが、以下でより詳細に論じられる。プロセッ
サ1は一般に計算を制御するが、計算自体におけるステップのいくつか(または
、記載された実施形態では、すべて)がコプロセッサ2において実行されるよう
な方法で制御する。プロセッサ1が、バースト命令待ち行列6を通じて特定のタ
スクのための命令、すなわち、バースト・バッファ・コントローラ7の構成、お
よびバースト・バッファ・メモリ5とメイン・メモリ3の間のデータの転送のた
めの命令を提供する。さらに、コプロセッサ命令待ち行列8を通じて、プロセッ
サ1はさらなるタスクのための命令、すなわち、コプロセッサ・コントローラ9
の構成、およびコプロセッサ2上の計算の開始のための命令を提供する。コプロ
セッサ2上で実行されるこの計算は、バースト・バッファ・メモリ5を通じてデ
ータにアクセスする。
【0016】 コプロセッサ命令待ち行列8の使用が有効にプロセッサ1をプロセッサ2の動
作から減結合し、バースト命令待ち行列6の使用が有効にプロセッサ1をバース
ト・バッファ5から減結合する。この構成の特定の詳細は、以下でより詳細に論
じられる。この減結合については、本発明のこの実施形態のための計算モデルに
関連して、以下でさらに論じられる。
【0017】 コプロセッサ2が、実際の計算のいくつかまたはすべてを実行する。特に適し
たコプロセッサは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コプロセッサの動作が非常に予測可能なので、効率的なプロセス
にすることができる。このモデルに従った計算の詳細な動作が、後で論じられる
【0018】 プロセッサ1が、従来の方法によるSRAMにおける高速アクセス・メモリ・
キャッシュ4へのアクセスを有するが、メイン・メモリはDRAM3として提供
される。DRAMへの有効なアクセスが、バースト・バッファ5によって提供さ
れる。バースト・バッファは、欧州特許出願第97309514.4号、および
1998年1月6日出願の対応する米国特許出願第09/3,526号において
記載されており、それらの出願が参照により本明細書に組み込まれる。バースト
・バッファ・アーキテクチャについては本明細書で簡単に記載されるが、このア
ーキテクチャの十分な詳細については、先の出願を参照していただきたい。
【0019】 この実施形態で使用されたバースト・バッファ・アーキテクチャのバージョン
のエレメント(前記の出願において論じられるように、変形も可能)が、図2お
よび図3に示される。バースト・バッファ構成エレメントがプロセッサ1と通信
する接続12が提供される。メモリ・バス16が、メイン・メモリ3(図2にお
いては図示せず)への接続を提供する。このメモリ・バスはキャッシュ4と共有
することができ、この場合、メモリ・データパス・アービタ58が、キャッシュ
4との通信も可能にする。
【0020】 この装置におけるバースト・バッファの全体の役割は、計算をコプロセッサ2
上で実行できるようにすることであり、このコプロセッサ2とメイン・メモリ3
の間のデータ転送を、両方が各システム構成エレメントの効率を最大にすると同
時に全体のシステム効率を最大にする方法で行うことを含む。これは、以下のい
くつかの技術の組み合わせによって達成される。
【0021】 1)以下に記載されるようなバースト・バッファ5を使用した、DRAMへのバ
ースト・アクセス、 2)「ダブル・バッファリング」とよばれる技術を使用した、コプロセッサ2上の
計算の同時実行、およびメイン・メモリ3とバースト・バッファ・メモリ5の間
のデータ転送、および 3)プロセッサ1の実行をコプロセッサ2およびバースト・バッファ・メモリ5の
実行から、命令待ち行列の使用を通じて切り離すことである。
【0022】 「ダブル・バッファリング」は、たとえば、コンピュータ・グラフィックスに
おいて知られている技術である。本明細書で使用される形式では、バースト・バ
ッファ・メモリ5の一部からのデータを消費すること、すなわち読み取ること、
他のデータを同じメモリの異なる領域へ生成すること、すなわち書き込むことを
含み、先に書き込まれた領域を読み取り、その逆もできるスイッチング機構を有
する。
【0023】 バースト・バッファの利点は、従来のDRAM構造の特徴の有効な利用である
。DRAMは、正方行列におけるメモリ位置のアレイを含む。アレイにおけるエ
レメントにアクセスするには、行が最初に選択され(あるいは「開かれ」)なけ
ればならず、その後に適切な列の選択が続く。しかし、行が選択された後、その
行における列への連続アクセスは、単に列アドレスを提供することによって実行
することができる。行を開くことおよびその行にローカルな一連のアクセスを実
行することの概念が、「バースト」と呼ばれる。媒体集中計算(典型的には、い
かなるデータ依存アドレス指定もなしに長いアレイにアクセスする、規則正しい
プログラム・ループを使用するアルゴリズムを含む)におけるように、データが
規則正しい方法で構成されるとき、バーストの有効な使用が劇的に計算速度を向
上させることができる。バースト・バッファは、バーストの効率的な使用を通じ
てDRAMからのデータにアクセスするように適合された、新しいメモリ構造で
ある。
【0024】 システムがいくつかのバースト・バッファを含むことができる。典型的には、
各バースト・バッファがそれぞれのデータ・ストリームへ割り振られる。アルゴ
リズムが、異なる数のデータ・ストリームを有するので、固定量のSRAM26
がバースト・バッファ・メモリ領域としてバースト・バッファに使用可能であり
、この量が、必要とされるバッファの数に従って分割される。たとえば、固定S
RAMの量が2Kバイトである場合、かつ、アルゴリズムが4つのデータ・スト
リームを有する場合、メモリ領域を4つの512バイトのバースト・バッファに
区分することができる。
【0025】 このタイプのアーキテクチャでは、バーストが、以下によって定義されたアド
レスの組を含む。
【0026】
【数1】 バースト={B+S×i|B,S,i∈N∧0≦i<L}
【0027】 ただし、Bは転送の基底アドレスであり、Sはエレメントの間のストライド(s
tride)であり、Lは長さであり、Nは自然数の組である。この式において明示的
に定義されないが、バースト順序が、0からL−1まで増分するiによって定義
される。したがって、バーストは、次の3個のエレメントからなる集合によって
定義することができる。
【0028】 (base_address,length,stride) ソフトウェアでは、バーストをエレメントサイズによって定義することもでき
る。これは、バーストをバイト、ハーフワード、またはワードのサイズにするこ
とができることを意味する。ストライドの単位は、このことを考慮しなければな
らない。「サイズド・バースト」は、次の形式の4個のエレメントからなる集合
によって定義される。
【0029】 (base_address,length,stride,size) 「チャネル・バースト」は、サイズがメモリへのチャネルの幅である、サイズ
ド・バーストである。コンパイラが、ソフトウェア・サイズド・バーストからチ
ャネル・バーストへのマッピングを担う。チャネル・バーストは、次の4個のエ
レメントからなる集合によって定義することができる。
【0030】 (base_address,length,stride,width) チャネル幅が32ビット(または4バイト)である場合、チャネル・バースト
が常に以下の形式である。
【0031】 (base_address,length,stride,4) あるいは、3個のエレメントからなる集合(base_address,le
ngth,stride)に短縮される。
【0032】 このメモリの制御およびバースト・バッファの割り振り(および解放)が、ソ
フトウェア処理によって高レベルで処理される。この実施形態では、「ダブル・
バッファリング」が使用されるが、他の戦略も確かに可能であり、この判断は記
憶の効率と簡潔性の間のトレードオフを含む。バースト・バッファ・メモリ領域
26がメイン・メモリ3からデータをロードし、そこへデータを格納し、これは
メモリ・データパス・アービタ58を通じて行い、これがDMAコントローラ5
6の制御下で動作し、バースト命令待ち行列6を通じて受信される命令に応答す
る。データが、バースト・バッファ・メモリ領域26とプロセッサ1またはコプ
ロセッサ2の間で、接続手段12を通じて交換される。図3に示すように、バー
スト・バッファ・システム5のための制御インタフェースは、1組のテーブルに
基づいている。すなわち、バースト・バッファ・メモリへバーストし、そこから
バーストするためのメイン・メモリの領域を記述するメモリ・アクセス・テーブ
ル(MAT)65、およびバースト・バッファ・メモリの領域を記述するバッフ
ァ・アクセス・テーブル(BAT)66である。この実施形態では、デュアルポ
ートSRAMの同次領域が、バースト・バッファ・メモリ領域26のために使用
される。
【0033】 MATおよびBATを使用しなかったバースト・バッファ構成(これも欧州特
許出願第97309514.4号に記載されているようなもの)を、本発明の代
替実施形態において使用することができ、MATおよびBATにおいて暗示的に
符号化されたパラメータ(ソース・アドレス、宛先アドレス、長さ、ストライド
)が、次いで、発行されたバースト転送毎に明示的に指定されなければならない
。直接のアドレス、長さおよびストライドではなく、MATおよびBATを使用
するための主な理由は、これが全体のコード・サイズを著しく減らすことである
。本発明に関連して、これは典型的には重要というよりも有用である。
【0034】 プロセッサ1から発信するバースト命令が、バースト命令待ち行列6により、
バースト・バッファ5へ提供される。バースト命令待ち行列6からの命令が、バ
ッファ制御エレメント54によって処理されて、MAT65およびBAT66に
おけるスロットが参照される。バッファ・コントローラは、8個のバースト制御
レジスタ52からの制御入力も受信する。これらの2つのテーブルに含まれた情
報が、実行時間で共に結び付けられて、完全なメイン・メモリ対バースト・バッ
ファのトランザクションが記述される。出力がバッファ・コントローラ54から
直接メモリ・アクセス(DMA)コントローラ56へ、よってメモリ・データパ
ス・アービタ58へ提供されて、メイン・メモリ3とバースト・バッファ・メモ
リ領域26の間のトランザクションが実施される。
【0035】 重要なバースト命令は、データをメイン・メモリ3からバースト・バッファ・
メモリ領域26へロードするため、かつ、データをバースト・バッファ・メモリ
領域26からメイン・メモリ3へ格納するために使用されるものである。これら
の命令は「ロードバースト」および「ストアバースト」である。ロードバースト
命令が、データ・ワードのバーストを、メモリ3における決定された位置からバ
ースト・バッファのそれへ転送させる。対応するストアバースト命令もあり、こ
れは、データ・ワードのバーストを、バースト・バッファの1つからメモリ3へ
、メモリ3における特定のアドレスで開始して、転送させる。図1のアーキテク
チャでは、追加の同期化命令も必要とされ、これらは以下でさらに論じられる。
【0036】 命令のロードバーストおよびストアバーストは、通常のロードおよび格納命令
とは異なり、これらは転送が起こっていなくとも単一のサイクルで完了する。本
質において、ロードバーストおよびストアバースト命令が、メモリ・インタフェ
ース16へバーストを実行するように伝えるが、これらはバーストが完了するま
で待機しない。
【0037】 基本動作は、2つのテーブル・エントリへ、メモリ・アクセスおよびバッファ
・アクセス・テーブルのそれぞれにおける1つを索引付けする命令を発行するこ
とである。メモリ・アクセス・テーブルへの索引が、転送のメモリ側で使用され
た基底アドレス、エクステントおよびストライドを検索する。バッファ・アクセ
ス・テーブルへの索引が、バースト・バッファ・メモリ領域内の基底アドレスを
検索する。図示の実施形態では、マスキングおよびオフセットが索引値へ、コン
テキスト・テーブル(これは欧州特許出願第97309514.4号においてさ
らに論じられている)によって提供されるが、代りに実アドレスを使用すること
が可能である。直接メモリ・アクセス(DMA)コントローラ56がパラメータ
を2つのテーブルから渡され、これらを使用して、要求された転送を指定する。
【0038】 表1は、可能な命令セットを示す。
【0039】
【表1】
【0040】 ストアバースト命令(BB_ストアバースト)が、MATおよびBATにおけ
るパラメータを索引付け(index)し、これが要求された転送の特性を定義する。
block_incrementビットが設定される場合、MATにおいて索引
付けされたエントリのmemaddrフィールドが、転送が完了するときに自動
的に更新される(以下で論じられるように)。
【0041】 ロードバースト命令(BB_ロードバースト)も、MATおよびBATにおけ
るパラメータを索引付けし、再度これが要求された転送の特性を定義する。前の
ように、block_incrementビットが設定される場合、MATにお
いて索引付けされたエントリのmemaddrフィールドが、転送が完了すると
きに自動的に更新される。
【0042】 必要とされた同期化命令が、Load−Execute Increment
およびeXecute−Store Decrement(BB_LX_INC
REMENTおよびBB_XS_DECREMENT)として提供される。BB
_LX_INCREMENTの目的は、特定のデータのバーストにおけるコプロ
セッサ2の実行が、必要とされたデータがロードバースト命令の後に続いてバー
スト・バッファ・メモリ5に到着した後に起こるようにすることである。BB_
XS_DECREMENTの目的は、ストアバースト命令の実行が、結果がメイ
ン・メモリ3に格納され戻される(コプロセッサ2上の)計算の完了の後に続く
ようにすることである。
【0043】 この実施形態では、これらの命令が動作する特定の機構は、2つのカウンタの
組であり、それぞれ次のものを追跡する。すなわち、a)ストアバーストを受信す
る用意ができているバースト・バッファ・メモリ5における領域の数、およびb)
完了されたロードバースト命令の数、である。
【0044】 コプロセッサ2によるデータの要求が、LXカウンタを減分することによって
実行されるが、データの可用性は、XSカウンタを増分することによって信号で
通知される。これらのカウンタは、2つの特性を満たさなければならない。すな
わち、これらがただ1つのシステム構成エレメントへいかなる所与のときにもア
クセス可能でなければならないこと、およびこれらが使用不可能なデータを要求
する処理を中断する能力を有していなければならないことである。
【0045】 要求されるものにもっとも近く合致する既存の概念はセマフォであり、Dij
kstra(「[Dijkstra 1968] E.Dijkstra,「C
o−operating Sequential Processes」,F.
Genuys(編集者),Programming Languages,Ne
w York:Academic Press,(1968),43−112ペ
ージ)に記載されている。したがって、用語「セマフォ」は、本発明の実施形態
において使用されたカウンタを記載するために使用されるが、これらのカウンタ
がDijkstraによって記載されたセマフォには等しくないが広く類似して
いることに留意されたい。
【0046】 セマフォの基本原理は以下の通りである。セマフォは整数値を含む。Wait
()命令をセマフォ上で実行することはこの値をディクリメント(decrement、減
分)するが、Signal()命令を実行することはこれをインクリメント(incr
ement、増分)する。Wait()を、値がすでに0であるセマフォ上で実行する
と、セマフォの値が増分されるまで、Wait()を実行しようと試みているソ
フトウェア処理またはハードウェア構成エレメントが停止する。
【0047】 この実施形態では、BB_XS_DECREMENT命令がXSセマフォ(図
1の11)上でWait()のように動作するが、BB_LX_INCREME
NT命令はLXセマフォ(図1の10)上でSignal()のように動作する
。以下で記載されるように、コプロセッサ・コントローラ9が、反対に、Wai
t()をLXセマフォ10上で、Signal()をXSセマフォ11上で実行
する。これらの命令の意味は、Dijkstraの論文に記載されたものと同じ
にすることができるが、Signal()およびWait()動作の構成全体は
元の論文に記載されたものとは著しく異なる。システムの正確さに必要な、ある
イベントの相対的時間順序が守られるようにするため、これらの命令が適切な順
序で(以下でさらに論じられるように)発行される。
【0048】 メモリ・アクセス・テーブル(MAT)65が、以下で図3を参照して記載さ
れる。これは、バースト・トランザクションに含まれたメイン・メモリ位置に関
連する情報を保持するメモリ記述子テーブルである。MATにおける各エントリ
は、メイン・メモリへのトランザクションを記述する、索引付けされたスロット
である。この実施形態では、MAT65が16個のエントリを含むが、異なる実
施がもちろん可能である。各エントリが以下の3個のフィールドを含む。 1.メモリ・アドレス(memaddr)。メイン・メモリにおける関連領域
の開始アドレス。この位置が物理メモリ空間にあることが理想的であり、これは
、仮想アドレス変換が2つの物理ページにまたがるバースト要求の結果となる可
能性があり、これがメモリ・コントローラに難点を引き起こすからである。 2.エクステント(extent)。転送のエクステント。これは転送の長さ
であり、ストライドで乗算され、転送された最後のアドレス+1を与える。転送
の長さは、エクステントをストライドにより除算することによって計算され、こ
れは、転送が完了した後で、関連するBAT66(以下参照)のbufsize
フィールドへ自動的にコピーされる。 3.ストライド(stride)。転送における連続したエレメントの間の間
隔。
【0049】 memaddr:チャネル・バーストの第1のエレメントの32ビット、符号
なし、語調整されたアドレスである。
【0050】 extent:extentレジスタにおけるパラメータは、バースト転送の
範囲を包含するアドレス・オフセットである。転送がSのストライドによって分
離されたL個のエレメントを必要とする場合、エクステントはS*Lである。
【0051】 stride:パラメータstrideは、アクセスの間でスキップされたバ
イト数である。転送ストライド間隔の値は、1から1024までの範囲に制限さ
れる。1024より大きい値は自動的に1024に切り捨てられる。このレジス
タの読取りが、バーストのために使用された値を戻す(すなわち、切り捨てが必
要であった場合、切り捨てられた値が戻される)。ストライドはメモリ・バス幅
の倍数でなければならず、この場合は4バイトである。自動切り捨て(丸めなし
)が、この位置合わせを実施するために実行される。
【0052】 MATスロットによって含まれた値の一例は、以下のようになる可能性がある
【0053】 {0x1feelbad,128,16} これは、32語(32個の4バイト語)バーストの結果となり、各語が4語(
4個の4バイト語)によって分離される。
【0054】 バースト命令の自動増分標識ビットは、MAT65にも関連している。このビ
ットがバースト命令において設定される場合、もしバーストが32を越えて継続
しているならば、開始アドレス・エントリがポイント・トゥ・ポイントで、次の
メモリ位置へ増分される。これは、長いシーケンスのメモリ・アクセスにおいて
次のバーストのための開始アドレスを計算することにおける、プロセッサ・オー
バーヘッドを節減する。
【0055】 バッファ・アクセス・テーブル(BAT)66が、以下で図3を参照して記載
される。これもまたメモリ記述子テーブルであり、この場合はバースト・バッフ
ァ・メモリ領域26に関する情報を保持する。BAT66における各エントリが
、バースト・バッファ・メモリ領域26へのトランザクションを記述する。MA
T65の場合のように、BAT66が16個のエントリを含むが、もちろんMA
T65の場合のように変わる可能性がある。この場合は各エントリが以下の2つ
のフィールドを含む。 1.バッファ・アドレス(bufaddr)。バッファ領域におけるバッファ
の開始。 2.バッファ・サイズ(bufsize)。最後の転送で使用されたバッファ
領域のサイズ。
【0056】 バッファ・アドレス・パラメータbufaddrは、バッファ領域におけるチ
ャネル・バーストの第1のエレメントのためのオフセット・アドレスである。バ
ースト・バッファ領域は、ハードウェアによってプロセッサのメモリ空間の領域
へ物理的にマッピングされる。これは、バースト・バッファ領域にアクセスする
ときにプロセッサが絶対アドレスを使用しなければならないことを意味する。し
かし、DMA転送は単にオフセットを使用し、そのため、ハードウェアが、要求
されたいかなるアドレス解決をも管理することが必要である。不当に位置合わせ
された値は、切り捨てによって自動的に位置合わせすることができる。このレジ
スタの読取りが、バーストのために使用された値を戻す(すなわち、切り捨てが
必要であった場合、切り捨てられた値が戻される)。デフォルト値は0である。
【0057】 パラメータbufsizeは、もっとも最近のバーストによって占有されたバ
ッファ領域内の領域のサイズである。このレジスタは、そのエントリを目標とし
たバースト転送の完了時に、自動的に設定される。格納された値がバーストの長
さであり、これは、0の値が使用されていないバッファ・エントリを指示するか
らであることに留意されたい。このレジスタに書き込むことができるが、これは
、バッファが保存されリストアされるときに、文脈切り換え後にのみ有用である
。デフォルト値は再度0である。
【0058】 MATおよびBATエントリをプログラムすることが、BB_SET_MAT
およびBB_SET_BAT命令の使用を通じて実行される。エントリ・パラメ
ータが、現在の命令が参照するMAT(またはBAT)におけるエントリを決定
する。
【0059】 バースト・バッファ・アーキテクチャおよびその制御のための機構のさらなる
詳細が、欧州特許出願第97309514.4号および対応する米国特許出願第
09/3,526号において提供される。上記で提供された詳細は、主として、
バースト・バッファ・システムのアーキテクチャエレメントを示し、バースト・
バッファ・システムが実施することができる機能効果を、それが提供する入力お
よび出力と共に示すように意図される。バースト・バッファ・システムが、特定
のタイプの計算モデルに合わせて最適に適合され、これは、本明細書で、本発明
の記載された実施形態のための計算モデルに展開される。この計算モデルについ
てさらに説明する。
【0060】 バースト命令待ち行列6が上で記載された。この実施形態の著しい態様は、命
令が類似の方法でコプロセッサへ、コプロセッサ命令待ち行列8を通じて提供さ
れることである。コプロセッサ命令待ち行列8は、コプロセッサ・コントローラ
9との接続において動作し、これは、コプロセッサがプロセッサ1から命令を受
信する方法、およびそれがデータをバースト・バッファ・システム5と交換する
方法を決定する。
【0061】 コプロセッサ命令待ち行列8の使用は、プロセッサ1自体が計算自体から切り
離される重要な効果を有する。したがって、計算中に、プロセッサ・リソースが
他のタスクの実行のために使用可能である。プロセッサ1の動作がストールされ
ることにつながる可能性のある唯一の状況は、命令待ち行列6、8の一方が命令
で満たされることである。この場合は、プロセッサ1が、いずれかの待ち行列の
ための命令を、命令が消費されるよりも速い速度で生成するときに起こる可能性
がある。この問題の解決策は入手可能である。事前定義の時間量の後、あるいは
、いずれかの待ち行列において占有されたスロットの数が事前定義の量まで減分
された事実によってトリガされた割り込みの受信の上で、文脈切り換えを実行し
てこれら2つの待ち行列にサービスするために戻るように、プロセッサ1へ要求
することによって、有効性を改善することができる。反対に、プロセッサ1が、
命令が消費される速度に遅れないでいることができないために、2つの待ち行列
の一方が空になる場合、これらの命令の消費者(コプロセッサ・コントローラ9
またはバースト・バッファ・コントローラ7)は、新しい命令がプロセッサ1に
よって生成されるまで、ストール(機能停止)する。
【0062】 修正を、プロセッサ1からのそれ以上の関与がまったく必要とされないように
するアーキテクチャにも提供することができ、これらについては本明細書の最後
の部分において論じられる。
【0063】 コプロセッサ・コントローラ9の基本機能は、データをバースト・バッファ・
メモリ5からコプロセッサ2へ(およびコプロセッサ2からバースト・バッファ
・メモリ5へ)取り出すこと、コプロセッサの動作を制御すること、およびコプ
ロセッサ2の実行をバースト・バッファ・メモリ5からの適切なロードまたはそ
れへの格納と同期化することである。これらの機能を達成するには、コプロセッ
サ・コントローラを、本質において、ある規則に従ってアドレスを生成すること
ができる、相対的に簡素な状態機械にすることができる。
【0064】 図4は、コプロセッサ・コントローラ9を、アーキテクチャの他の構成エレメ
ントとの関係において示し、その構成エレメント、およびアーキテクチャ全体に
おける他のエレメントとの接続も示す。その厳密な機能は、コプロセッサ2およ
びその初期化要件(ある場合は)によって必要とされた入力および出力のタイプ
に依存し、そのため、以下に記載されたものから詳細において変わる可能性があ
る。CHESSコプロセッサの場合、これらの入力および出力が、バースト・バ
ッファ・メモリ5と交換された入力および出力データ・ストリームである。
【0065】 コプロセッサ・コントローラ9は、次の2つの主なタスクを実行する。すなわ
ち、1)コプロセッサ2とバースト・バッファ・メモリ5との間の通信の制御、お
よび2)制御有限状態機械42の使用を通じたシステム状態の維持である。
【0066】 コプロセッサ2がストリームにおけるデータにアクセスし、そのそれぞれがい
くつかの制御レジスタ41の1つとの関連付けを与えられる。これらのレジスタ
41のためのアドレスが、制御有限状態機械42によってアドレス指定ロジック
43と共に、有限状態機械42によって生成されたシーケンスに従って、周期的
な様式において生成される。
【0067】 有限状態機械42内のクロックの各チックで、有限状態機械は、レジスタ41
の(多くとも)1つが、そのために生成された新しいアドレス、およびレジスタ
41がバースト・バッファ・メモリ5をアドレス指定できるようにするために使
用されたアドレスを有するための許可を与える。同時に、適切な制御信号が有限
状態機械42によって生成され、マルチプレクサ44へ送信されて、適切なアド
レスが正しい読み/書き信号と共にバースト・バッファ・メモリ5へ送信される
ようにする。特定の読み/書き信号が各レジスタ41に、全体の計算中で変化し
ない値と共に関連付けられる。
【0068】 レジスタ41のために得られたアドレスがメモリをアドレス指定するために使
用された後、一定量がその値へ追加され、これは一般にコプロセッサ2とバース
ト・バッファ・メモリ5との間の接続の幅と同じである。つまり、この接続の幅
が4バイトである場合、カウンタ41に行われた増分が4となる。これは、本質
的に、バースト・バッファのプログラミングにおける「ストライド」に比較可能
である。
【0069】 上述のコプロセッサ・コントローラの機構は、単一のバスに沿った異なるデー
タ・ストリームの多重化を可能にする。各データ・ストリームは、それ自体のポ
ートを通じて単一の共有バスへアクセスするとみなすことができる。
【0070】 このシステムが、通信の完全性が保証されるように動作するためには、バスの
他方の端でコプロセッサ2が、同期した方法でこのバスから読み取り、このバス
へ書き込みする用意ができていることが必要である。アプリケーション・ソフト
ウェア(および具体的には、コプロセッサ2を構成するアプリケーション・ソフ
トウェアの一部まで)の責任は、つぎのことを保証することである。すなわち、
1)2つのストリームが同時にバスにアクセスしようと試みないこと、および2)コ
プロセッサ2の実行がバースト・バッファ・メモリ5とのデータ転送と同期であ
ることである。
【0071】 この後者の要件は、コプロセッサ2が、2つのデバイスの間の接続上で、バー
スト・バッファ・メモリ5によって配置されたデータを読み取るため、かつその
逆のための用意ができることを保証する。
【0072】 通常は、複数の物理線をChessアレイ2とバースト・バッファ・メモリ5
の間に設けることができるが、一般の多重化の必要性はなお残る。コプロセッサ
2とバースト・バッファ・メモリ5の間の物理接続の数が、コプロセッサ2のた
めの論理I/Oストリームの合計数以上でない限り、2つ以上の論理ストリーム
が同じワイヤ上で多重化されなければならないことが常に真となる。(バースト
・バッファ・メモリ5に有利に使用されるように)高速SRAMの設計に関係し
た技術的な理由が、コプロセッサ2との複数の接続の使用を防止する。
【0073】 コプロセッサ・コントローラ9は、コプロセッサ2を含むCHESSアレイの
実行を制御するようにも動作し、それが指定数のクロック・サイクルで実行する
ようにする。これは、コプロセッサ2におけるパイプラインの内部状態に影響を
与えない方法において、CHESSアレイを、その内部クロックを「ゲーティン
グ」すること(つまり、停止すること)によって「フリーズ」する前に、指定数
のサイクルだけチッキングする、制御有限状態機械42におけるカウンタによっ
て達成される。このチックの数が、以下に記載されたCC_START_EXE
C命令を使用して指定される。
【0074】 コプロセッサ・コントローラ9が、プロセッサ1によって、コプロセッサ命令
待ち行列8の使用を通じてプログラムされる。このコプロセッサ・コントローラ
9のための可能な命令セットが、以下の表2において示される。
【0075】
【表2】
【0076】 前記の命令では、命令フォーマットの異なる選択を行うことができる。1つの
可能なフォーマットは32ビットの数字であり、16ビットが演算コードを符号
化し、16ビットが上述の任意選択のパラメータ値を符号化する。
【0077】 個々の命令の意味は、以下の通りである。 ・CC_CURRENT_PORTは、ポートの1つを、すべての後続のCC_
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
(tstartend)は、現在のポートの活動の最初/最後のサイクルを
設定する。 ・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セマフォの値を増分する。
【0078】 カウンタ42の現在値、tcurが、tstartcur<tendであり
start(tcur mod)<endである場合、ポートが能動(つまり
、バースト・バッファ・メモリ5との通信の制御を有する)として定義される。
これは、たとえば、2つのストリームが、等しい周期、言わば5で存在し、一方
が最初の4サイクルのためのBBメモリの制御を有し、他方が残りのサイクルの
ための制御を有する、システムの可能性を可能にする。
【0079】 このアーキテクチャを使用するアルゴリズムを実行する処理は、最初にコプロ
セッサ2のプログラミング、次いでコプロセッサ・コントローラ9およびバース
ト・バッファ・コントローラ7のプログラミングまたは初期化と、その後に続く
アルゴリズムの実際の実行を含む。
【0080】 コプロセッサ2の初期化では、デバイスの実際の実施形態に特定の手段によっ
て、構成がコプロセッサ自体にロードされることが、一般にもっとも直接になる
【0081】 コプロセッサ・コントローラ9のプログラミングでは、そのステップは次の通
りである。 1.メイン・コプロセッサ・コントローラ9が、前に記載されたように、Ch
essアレイにおいて存在する各論理ストリーム毎の合計数、周期、段階および
アドレス増分に従って構成される。所望の機能を実行するためのコプロセッサ・
コントローラ9のプログラミングの一例が、下に示される。 2.コプロセッサ・コントローラ9の構成における次のステップは、アドレス
構成である。各論理ストリームの特性(周期、段階)がアルゴリズム中で同じで
あり続ける可能性が高いが、バースト・バッファ・メモリ5におけるコプロセッ
サ・コントローラ9によってアクセスされた実アドレスは変わる。それはこの可
変性であり、これは、バースト・バッファ・コントローラ7がダブル・バッファ
リングを、バースト・バッファ・アーキテクチャ内で直接の方法で実行できるよ
うにする。このダブル・バッファリングの効果は、先に述べられたように、コプ
ロセッサ2に、それが連続ストリームと対話中である印象を与えることであるが
、実際にはバッファが連続的に交換されている。
【0082】 バースト・バッファ・コントローラ7も構成される必要がある。これを行うに
は、メイン・メモリ3からバースト・バッファ・メモリ5へのデータの転送を構
成するために、適切なコマンドがバースト命令待ち行列6へ送信されなければな
らない。これらの命令(BB_SET_MATおよびBB_SET_BAT)が
、BATおよびMAT内で適切なエントリを、コプロセッサ・コントローラ9の
プログラミングに適合する方法で構成する。この実施形態では、MATおよびB
ATエントリをプログラムするための命令が、バースト命令待ち行列6を通じて
発行される。代替の可能性は、プロセッサ1が読み書きするメモリ・マップ・レ
ジスタの使用となる。この実施形態の場合のように、メモリ・マップ・レジスタ
から読み取られる可能性がなく(それらが存在しないので)、プロセッサ1がバ
ースト・バッファ・コントローラ7の状態を照会することができないが、これは
著しい制限ではない。さらに、この目的のためのバースト命令待ち行列6の使用
は、バースト転送の実行によりMATおよびBATエントリを構成するための命
令をインターリービングし、したがって、プロセッサ1の監視なしに正しい時間
的意味を維持する可能性を可能とする。
【0083】 これらのステップが実行された後、CHESSアレイの実際の実行を開始する
ことができる。この実施形態では、CHESSアレイに指定数のサイクルで実行
するように命令することのみが必要である。これは、正確な数のサイクルをパラ
メータとして、コプロセッサ命令待ち行列8におけるCC_START_EXE
C命令へ書き込むことによって達成され、次いでこのデータをコプロセッサ・コ
ントローラ9へ渡すことができるようにする。この値がコプロセッサ・コントロ
ーラ9に転送された1クロック・サイクル後、コントローラが値をバースト・バ
ッファ・メモリ5とコプロセッサ2のCHESSアレイの間で転送することを開
始し、CHESSアレイの実行を可能にする。
【0084】 しかし、重要なステップを、計算に関係する命令がそれぞれの命令待ち行列に
配置される前に追加しなければならない。これは、必要な同期化機構が、同期化
およびダブル・バッファリングの原理をうまく実施するために適切であるように
するためである。この機構における基本エレメントは、コプロセッサ・コントロ
ーラ9がLXセマフォの値を減分しようと試み、上述のロジックに従って、それ
がそうできるようになるまでコプロセッサの動作を中断することである。このセ
マフォの初期値は0である。すなわち、したがって、コプロセッサ・コントロー
ラ9およびコプロセッサ2がこの段階で「フリーズ」される。成功したロードバ
ースト命令の後にLXセマフォの値がバースト・バッファ・コントローラ7によ
って増分されるときにのみ、コプロセッサ2がその実行を開始(あるいは再開)
できるようになる。この効果を達成するため、CC_LX_DECREMENT
命令がコプロセッサ命令待ち行列8において、「コプロセッサ2の実行を開始す
る」(CC_START_EXEC)命令の前に挿入される。以下に示されるよ
うに、対応する「LXセマフォを増分する」(BB_LX_INCREMENT
)命令が、バースト命令待ち行列6において、対応するロードバースト命令の後
に挿入される。
【0085】 CHESS論理ストリームおよびバースト・バッファ・メモリ5の間の実際の
データの転送が、先に記載されたようなコプロセッサ・コントローラ9のプログ
ラミングに従って実行される。
【0086】 カウンタ42が実行しなければならないチックの数は、1つまたは複数の入力
バーストを消費するためにどれだけの時間がかかるかに依存する。システムの正
確さを保証することは、アプリケーション・ソフトウェアに任される。カウンタ
42のプログラミングは、バッファが消費された後にコプロセッサ2の実行が停
止するようにしなければならない。コプロセッサ命令待ち行列8における次の命
令は、次のデータのバーストがバースト・バッファ・メモリ5に到着しているよ
うにするため、同期化命令(つまり、CC_LX_DECREMENT)でなけ
ればならない。この命令(および場合によっては、必要とされたデータが使用可
能になるまでの待機期間)の後に続いて、この新しいデータのバーストの初期ア
ドレスがデータ・ストリームに割り当てられ(CC_PORT_ADDRESS
命令により)、実行がCC_START_EXEC命令を介して再開される。こ
の手順は出力ストリームの場合に類似している(重要な違いは、データがメイン
・メモリ3からバースト・バッファ・メモリ5に到着するために必要としたもの
に等しい待機期間がなくなることである)。
【0087】 計算モデル 計算モデル全体の例を図5を参照して説明する。この例は、アルゴリズムがこ
のアーキテクチャにおいて使用するためにどのように記録することができるかを
指示し、一例として簡素なベクトル加算を使用し、これは従来のマイクロプロセ
ッサ向けに以下のようにCでコーディングすることができる。
【0088】
【表3】 int a[1024],b[1024],c[1024]; for(i=0;i<1024;i++) a[i]=b[i]+c[i];
【0089】 図1のアーキテクチャ上で元のベクトル加算ループ・ネストと同じ機能性を達
成するようプロセッサ1を走らせるCコードの一部分は、次の通りである。
【0090】
【表4】
【0091】 この構成では、3つのポートがコプロセッサ・コントローラ9において使用さ
れ、すなわち、各入力ベクトルのためのもの(bおよびc)、および出力ベクト
ルのためのもの(a)である。行4、6および8の文は、これらの3つのポート
を初期化するためのコード・マクロである。これらは、拡張されるとき、次の表
のコマンドになる(これは行4を参照し、他の拡張されたマクロは直接類似して
いる)。
【0092】
【表5】 CC_CURRENT_PORT(0); CC_PORT_INCREMENT(4); CC_TRANSFER_SIZE(4); CC_PORT_PERIOD(3); CC_PORT_PHASE_START(0); CC_PORT_PHASE_END(1); CC_PORT_START_TIME(0); CC_PORT_END_TIME(3*BLEN*MAXK+3); CC_PORT_IS_WRITE(0);
【0093】 このコードは、ポート0が、カウンタ42の3チック毎、正確にはチック0、
3、6...3*BLEN*MAXK+3の4バイトのデータを読み取り、それ
が読み取るアドレスを毎回4バイト増分するという効果を有する。BLEN*M
AXKは、合計する2つのベクトルの長さ(この場合、1024)であり、BL
ENはDRAMからの単一のデータのバーストの長さ(たとえば、64バイト)
である。これらの値で、MAXKは1024/64=16に設定される。
【0094】 行9から14は、バースト・バッファ転送のためのMATおよびBATを確立
し、これらのテーブルにおけるエントリをメイン・メモリ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行は再度類似している。
【0095】 この点まで、計算は行われていないが、コプロセッサ・コントローラ9および
バースト・バッファ・コントローラ7が設定されている。行15から38のルー
プ・ネストは、実際の計算が行われるところである。このループはMAXK回繰
り返され、各反復がBLENエレメント上で動作し、処理されたMAXK*BL
ENエレメントの合計を与える。このループは、コプロセッサ命令待ち行列8へ
送信された命令の組CIQ_xxxで開始して、コプロセッサ2およびコプロセ
ッサ・コントローラ9の動作を制御し、その後に、バースト・バッファ・コント
ローラ7およびバースト・バッファ・メモリ5を制御することが目的である、バ
ースト命令待ち行列6へ送信された1組の命令が続く。これら2組の相対的な順
序は、原理においては重要でなく、これは、異なるシステムエレメントの間の同
期化が、セマフォによって明示的に保証されるからである。互いの後に実行する
2つの異なるループを有すること(2つの命令待ち行列が十分深かったと仮定し
て)、または、2つの異なる制御のスレッドを有することさえも可能となる。
【0096】 CIQ_xxx行は、ソース・コードを書くことを簡約にするコード・マクロ
である。これらの意味は、次の通りである。 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に挿入する。
【0097】 上に示したコードのネットの効果は、以下の通りである。すなわち、1)LXS
セマフォ上で対応するロードバーストと同期化すること、2)コプロセッサ2上で
計算を、カウンタ42の3*BLENチックだけ開始すること、および3)XSS
セマフォ上で対応するストアバーストと同期化することである。
【0098】 BIQ_xxx行は再度、ソース・コードを書くことを簡約にするコード・マ
クロである。これらの意味は、次の通りである。 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に挿入する。
【0099】 上に示したコードのネットの効果は、メインDRAMメモリ3からバースト・
バッファ・メモリ5へ2つのバーストをロードし、次いでLXセマフォ10の値
を増分して、コプロセッサ2がその実行を上述のように開始できるようにするこ
とである。最初のものを除くすべての反復において、コプロセッサ2の計算の結
果が、次いで、ストアバースト命令を使用してメイン・メモリ3に戻すように格
納される。2番目の反復が、最初の反復において実行された計算の結果を格納す
ることを待機する必要は厳密にはないが、これはコプロセッサ2とバースト・バ
ッファ・メモリ5の間の並行性を向上させる。
【0100】 2つの変数eoおよびnot_eoの使用は、先に記載されたダブル・バッフ
ァリング効果を可能にするためにここで使用された機構である。
【0101】 行39から42は、バースト・バッファ・メモリ5からメイン・メモリ3への
最後のバースト転送を実行し、ループ本体の最初の反復におけるストアバースト
命令の不在を補償する。
【0102】 結果として生じる時間線は図6の通りである。ロードバースト601は最初の
動作であり(これらが完了されるまで、コプロセッサ2がロード/実行セマフォ
によってストールされるので)、これらが完了されるとき、コプロセッサ2が6
02を実行開始することができる。バースト命令待ち行列6における次の命令は
別のロードバースト601であり、これが、最初の2つのロードが終了するとす
ぐに実行される。次いで、バースト命令待ち行列6における次の命令がストアバ
ースト603であり、これは、XSセマフォ11が、コプロセッサ2上の最初の
計算が完了したことを信号で知らせるまで待機しなければならない。この処理は
、ループ中で継続する。
【0103】 上に示された例は非常に簡素なアルゴリズムの場合であるが、これは、より複
雑である計算において必要とされる基本原理を例示する。当業者は、上に示され
た手法、原理および技術を、より複雑なアルゴリズムをこのアーキテクチャによ
る実行に適合させるために図1のアーキテクチャをプログラムすることに使用で
きる。
【0104】 計算のためのツールチェーン 計算モデルの原理を、ハンド・コーディングによって直接の様式で活用するこ
とができる。つまり、手動で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に記載
されている。
【0105】 好ましい代替手法は、特定のツールチェーンがこの計算アーキテクチャのため
に使用されることである。このようなツールチェーンおよびその実際の動作のエ
レメントを次に簡単に説明する。
【0106】 ツールチェーンは、従来の順次コードから、有効な動作に特に適合されたコー
ドへ変換すること、およびシステム構成エレメントの相互運用の機能を有する。
例示的ツールチェーンは入力としてCコードを受信し、出力として次のものを提
供する。すなわち、1)計算の実行のためのCHESSコプロセッサ構成、2)デー
タをシステム・メモリとバースト・バッファ・メモリの間で移動するためのバー
スト・バッファ・スケジュール、および3)データをCHESSコプロセッサとバ
ースト・バッファ・メモリの間で移動するためのコプロセッサ・コントローラ構
成である。
【0107】 ツールチェーン自体は2つの構成エレメントを有する。第1のものはフロント
エンドであり、これはCコードをその入力として取り、注釈付きのディペンデン
スグラフをその出力として提供する。第2の構成エレメントはバックエンドであ
り、これはフロントエンドによって生成されたディペンデンスグラフを取り、こ
れらからCHESS構成、バースト・バッファ・スケジュール、およびコプロセ
ッサ・コントローラ構成を生成する。
【0108】 フロントエンドの主なタスクは、計算を、それがコプロセッサ2において起こ
るように、適切に記述するグラフを生成することである。実行された主なステッ
プの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のための効率的な
スケジュールが導出される基礎である。
【0109】 一例として、4タップFIRフィルタのためのCコードを仮定する場合、次の
表のようになる。
【0110】
【表6】 int i,j,src[],kernel[],dst[]; for(i=0 ; i<1000; i++) for(j=0;j<4; j++) dst[i]=dst[i]+src[4+i-j]*kernel[j];
【0111】 テキスト・ファイルとして提供された、フロントエンド、出力への入力として
、次の形式を有する。
【0112】
【表7】
【0113】 このテキスト・ファイルは注釈付きのグラフの表現である。グラフ自体が、図
7に示される。このグラフは、フロントエンド・アルゴリズムによって判明され
た依存性を明瞭に示す。エッジ81が、依存性が存在する条件、および適用可能
である場合の依存性の距離によりマーク付けされる。記述は、必要とされる機能
性を有するハードウェア構成エレメントを生成するに必要なすべての情報を含む
【0114】 コンパイル・ツールチェーンのバックエンドは、ある基本機能を有する。1つ
は、フロントエンドから得られた、拡張されたディペンデンスグラフをスケジュ
ールし、時間変更することである。これは、十分に機能的なCHESS構成を得
るために必要である。スケジューリングは、拡張されたディペンデンスグラフに
おけるノード82のそれぞれが活動化される時点を決定することを含み、時間変
更は、たとえば、エッジが値を適切な瞬間に伝播するようにするための遅延の挿
入を含む。スケジューリングは、シフト線形スケジューリングを使用して実行す
ることができ、これはハードウェア合成において幅広く使用される技術である。
時間変更は、ハードウェア合成における共通で静かな直接のタスクであり、適切
な数のレジスタを回路に追加して、回路における異なる経路が適切な時点で交わ
るようにすることのみを含む。この点で、コプロセッサ2(ここでは、CHES
Sコプロセッサ)の機能性の完全な記述を有する。この記述が図8に示される。
次いで、この記述を適切なツールへ渡して、この機能性を有するCHESSコプ
ロセッサをプログラムするために必要な一連の信号(一般に「ビットストリーム
」と呼ばれる)を生成することができる。
【0115】 バックエンドの必要とされる別の機能は、バースト・バッファおよびコプロセ
ッサ・コントローラ・スケジュールの生成である。CHESS構成が得られた後
、これにメイン・メモリからの値を入れる必要があるとき、および値をメイン・
メモリへ戻すように格納でき、バースト・バッファ・スケジュールを確立できる
ときが明らかである。したがって、バースト・バッファ・メモリ5にロードされ
、そこから格納される必要のあるすべてのデータのアドレス空間を、バースト・
バッファ・コントローラ7が動作できる固定のデータのバーストに分割すること
を含む、ステップが提供される。
【0116】 たとえば、上に提示されたFIRの例では、入力アレイ(src[])が適切
なサイズのいくつかのバーストに分割され、アルゴリズムのために必要とされた
すべてのアドレス範囲が包含されるようになる。このツールチェーンは長さB en のバーストを使用して(Blenは2の累乗であり、このツールチェーンへ
の実行パラメータとして指定される)、できるだけ多くの入力アドレス空間を包
含する。このバースト長でそれ以上達成できないとき、ツールチェーンは、長さ
を減分するバースト、すなわち、Blen/2、Blen/4、Blen/8、
...、2、1を、このアルゴリズムのために必要とされたあらゆる入力アドレ
スが唯一のバーストに属するまで使用する。
【0117】 これらのバーストのそれぞれについて、ロードされたデータのいずれかが必要
とされる、反復空間におけるもっとも早い点が計算される。すなわち、各入力バ
ーストに対して、反復空間において関連付けられた1点があり、そこでは、それ
より早い反復が、バーストによってロードされたデータのいずれをも必要としな
いことが保証される。コプロセッサ2の実行が反復空間におけるこの点に到達す
るときを検出することは容易である。したがって、次のものが作成される。すな
わち、1)データをバースト・バッファ・メモリ5に移動するための、関連アドレ
スのためのロードバースト命令、および2)コプロセッサ2の実行が関連ロードバ
ースト命令と同期化されることを保証するための、対応する同期化点(CC_L
X_DECREMENT/BB_LX_INCREMENTの組)である。
【0118】 計算および通信の効果的なオーバーラップを達成するには、バスを介したデー
タの転送に関連付けられた待ち時間を隠すために、ロードバースト命令が予め発
行されなければならない。
【0119】 アルゴリズムによって包含されなければならないすべての出力アドレス空間が
、類似のロジックに従って出力バーストに区分される。再度、出力空間が、可変
長のバーストに区分される。
【0120】 ツールチェーンは、1)関連アドレスのためのストアバースト命令、および2)対
応する同期化点(BB_XS_DECREMENT/CC_XS_INCREM
ENTの組)を作成する。
【0121】 この点で、我々は、次のことに関連する情報を有する。すなわち、1)ロードバ
ーストおよびストアバースト命令の相対的順序、およびそれらの実行のパラメー
タ(アドレスなど)、および2)コプロセッサ2上で実行される計算に相対的なそ
れらの位置である。
【0122】 次いで、この情報が使用されて、上述のFIRの例のように、全体の計算を編
成するための適切なCコードが生成される。
【0123】 実際のコード生成段階(つまり、プロセッサ1上で実行するためのCコードの
排出)を、http://www.cs.umd.edu/projects/
omega/で入手可能である、Omega Library of the
University of Marylandに含まれたコード生成ルーチン
と、その後に続いて、これらのルーチンの総称出力を上述の形式に変換する、カ
スタマイズされたスクリプトを使用して実施することができる。
【0124】 実験結果−画像たたみこみ 画像たたみこみアルゴリズムが、次の表のループ・ネストによって記述される
【0125】
【表8】 for(i=0;i<IMAGE_HEIGHT;i++) for(j=0;j<IMAGE_WIDTH;j++) for(k=0;k<KERNEL_HEIGHT;k++) for(l=0;1<KERNEL_WIDTH;l++) Dest[i,j]+=Source[(i+1)-k,(j+1)-l]*C[k,l];
【0126】 境界条件を簡約するために、ソース画像を、垂直方向においてKERNEL_
HEIGHT−1画素、水平方向においてKERNEL_WIDTH−1画素だ
け拡張するために、複製が使用された。2つのカーネル、すなわち共にメディア
ン・フィルタ(median filtering)を実行する3x3カーネルおよび5x5カーネ
ルが、システム性能を評価することに使用される。
【0127】 図9および図10は、(BBCとして示す)本発明の一実施形態によるアーキ
テクチャの性能を、バースト・バッファ(BBとして示す)を使用した従来のプ
ロセッサ、および従来のプロセッサおよびキャッシュの組み合わせ(キャッシュ
として示す)に対するものとして例示する。2つのバージョンのアルゴリズムが
実施され、1つは32ビットの画素により、1つは8ビットの画素による。同じ
実験測定値が、異なる画像サイズで、8x8から128x128までの範囲で、
異なるバースト長でとられた。
【0128】 図から分かるように、BBC実装が、BBおよびキャッシュ実装に勝る高い性
能上の利点を示した。このアルゴリズムは相対的に複雑であり、BBおよびキャ
ッシュ実装におけるシステムの性能全体が非常にコンピュータ制約的(computer
bound)であり、アルゴリズムが高度に複雑であるためにCPUがついていけない
。本発明の実施形態を使用すると、計算がCHESSアレイ上で(その固有の並
行性により)実行されるので計算が大いに効果的であり、性能はあえていうとI
O制約的(IO bound)である。最も、IOもバースト・バッファの有効な使用を通
じて効率的である。マルチメディア命令(MIPS MDMXなど)がBBまた
はキャッシュ実施におけるCPUの性能を向上させることができ、これは、それ
らがいくつかの算術命令の並列実行を可能にできるからである。それでもなお、
性能向上の結果は、この構成において専用コプロセッサを使用して得られた性能
レベルに到達する可能性が低い。
【0129】 修正および変形形態 プロセッサ1をコプロセッサ2およびバースト・バッファ・メモリ5から切り
離す機能を、命令待ち行列6、8以外によって達成することができる。有効な代
替物は、2つの待ち行列を、図12に記載されたような、命令をバースト・バッ
ファ・メモリ5およびコプロセッサ2へ発行することに完全に専用にされた2つ
の小型プロセッサ(それぞれが各待ち行列用)と置換することである。バースト
命令待ち行列が(図1の実施形態を参照して)バースト・コマンド・プロセッサ
106によって置換され、コプロセッサ命令待ち行列が、コプロセッサ・コマン
ド・プロセッサ108によって置換される。これは、これらの2つの構成エレメ
ントによって実行された唯一のタスクとなるので、これらがコプロセッサ2およ
びバースト・バッファ7からそれぞれ切り離される必要はなくなる。コマンド・
プロセッサ106、108のそれぞれが、コマンドをコプロセッサまたはバース
ト・バッファ(適切なように)へ発行することによって動作でき、次いで、その
コマンドがその実行を完了するまで何も行わず、別のコマンドを発行することな
どができる。これは、設計を複雑にするが、メイン・プロセッサ1をその残りの
、命令を待ち行列へ発行する単純なタスクから解放する。プロセッサ1によって
実行される唯一の作業は、次いで、これらの2つのプロセッサの初期設定となり
、これは計算の開始直前に行われる。したがって、計算中に、プロセッサ1が完
全にコプロセッサ2およびバースト・バッファ・メモリ5の実行から切り離され
る。
【0130】 2つの従来の、しかしより小型のマイクロプロセッサ(あるいは、別法として
、2つの制御の独立スレッドを実行する唯一のプロセッサ)を使用することがで
き、それぞれが適切なコード(ループ・ネスト)の関連部分を実行する。別法と
して、外部挙動がコードの関連部分の実行を反映する、2つの汎用状態機械を合
成することができる(つまり、これらが同じ命令のシーケンスを提供する)。こ
のような状態機械のハードウェアの複雑さおよびコストは、同等の専用プロセッ
サのものよりも著しく低くなる。このような状態機械が、メイン・プロセッサ1
によって、上述のものに類似した方法でプログラムされる。主な違いは、イベン
トの繰り返しも符号化されることである。すなわち、これは、プロセッサ1が、
多少の(複雑である場合は)命令における1つのアルゴリズムの挙動を符号化で
きるために必要である。イベントのx回の繰り返しを得るために、プロセッサ1
がx個の命令を待ち行列に挿入する必要はないが、この繰り返しパラメータを命
令定義において符号化しなければならない。
【0131】 上に示したように、特に有効な機構は、有限状態機械(FSM:Finite State
Machine)を待ち行列の代りに使用して、メイン・プロセッサ1の実行をコプロ
セッサ2およびバースト・バッファ・コントローラ7の実行から切り離すことで
ある。この機構が以下でより詳細に論じられる。
【0132】 図1に例示されたアーキテクチャでは、異なるI/Oストリームの実行を駆動
するための命令を、コプロセッサ2の実行のための命令と混合することができる
。これは、システム構成エレメントの間の相互関係がコンパイル時に知られてお
り、したがって、異なるシステム構成エレメントへの命令を正しい順序でソース
・コードにおいてインタリーブすることができるので、可能である。
【0133】 2つの状態機械を、まったく同じ方法による実行のためのこれらの命令を発行
するように、構築することができる。このような状態機械の一方は、コプロセッ
サ2の挙動を制御し、必要とされるようなCC_xxx_xxx命令を発行し、
他方はバースト・バッファ・コントローラ7の挙動を制御し、必要とされるよう
なBB_xxx_xxx命令を発行する。
【0134】 このような状態機械を、いくつかの異なる方法において実施することができる
。1つの代替手法が図13に示される。上で提示されたベクトル加算の例を参照
して、この状態機械150(コプロセッサ2のためのものであるが、バースト・
バッファ・コントローラ7のための同等のマシンが直接類似している)が、以下
のパターンから構築された命令のシーケンスを実施する。
【0135】
【表9】 CC_LX_DECREMENT、 CC_LX_DECREMENT、 CC_START_EXEC、 CC_XS_INCREMENT
【0136】 メインの状態機械150が効果的に、より簡素な状態機械151、152、1
53に分割され、それぞれが1種類の命令の実行を制御する。周期および段階(
これが、コプロセッサ2とバースト・バッファ・コントローラ7の間で通信する
I/Oストリームに関連付けることができる周期および段階とは、何の関係も有
していないことに留意されたい)が、より簡素な状態機械のそれぞれに関連付け
られる。状態機械150のハードウェアは、典型的には、意図されたアプリケー
ションの要件を満たすために十分な数の、このようなより簡素な状態機械のアレ
イを含む。
【0137】 イベント・カウンタ154が定義される。イベント・カウンタ154の役割は
、(この場合、コプロセッサ2のための)命令が順番に送信されることを可能に
することである。イベント・カウンタ154が増分される毎に、M*周期+段
=イベント・カウンタの値であるような値Mが存在する場合、状態機械i(
すなわち、より簡素な状態機械151、152、153の1つ)が、比較ロジッ
ク155を通じた実行のために選択され、その命令が実行される。アプリケーシ
ョン・ソフトウェアの責任は、2つの異なる状態機械がこの式を満たすことがで
きないようにすることである。この命令の実行が完了されるとき、イベント・カ
ウンタ154が再度増分される。このイベントのシーケンスは、次のように要約
することができる。
【0138】 1:イベントカウンタを増分する、すなわち、EC++ 2:M*周期+段階=ECであるようなMが存在する場合、状態機械iを
実行のために選択する 3:このような状態機械iが発見された場合、状態機械iによって記述された
命令を実行する(これは、中断動作を含むことができる) 4:1へ戻る
【0139】 命令の実行に関係する多少の余分なパラメータ(読み/書きするためのアドレ
ス、CC_START_EXECのための実行の長さなど)が、状態機械150
において符号化されなければならない。複数の状態機械が、典型的には異なるパ
ラメータを有する所与の命令を発行することができることに留意されたい。
【0140】 このシステムは、周期的挙動を生成するために特に十分に動作する。しかし、
イベントが一度だけ起こらなければならない場合、これは容易に、無限周期およ
び有限段階を有する簡素な状態機械において符号化することができ、唯一の帰結
は、この簡素な状態機械が一度だけ使用されることである。
【0141】 この手法はそれ自体を変更することができる。たとえば、この機構に柔軟性を
追加するには、可能な選択肢は、1つまたは複数の簡素な状態機械の実行を所定
の「時間ウィンドウ」に制限するために、「開始時間」および「終了時間」パラ
メータを簡素な状態機械に追加することである。
【0142】 これらの状態機械のプログラミングは、システムの初期化中に、たとえば、プ
ロセッサ1によって割り当てられたメモリマップ・レジスタの使用を通じて起こ
る。代替物は、これらの状態機械をメイン・メモリ3の事前定義の領域から、お
そらくは専用チャネルおよび直接メモリ・アクセス(DMA)機構の使用を通じ
て、プログラムするために必要なすべてのパラメータのローディングとなる。
【0143】 2つの専用マイクロプロセッサを使用する、提案された他の代替機構は、図1
のアーキテクチャのためのプログラミング・モデルに著しい修正を必要としない
。すなわち、メイン・プロセッサ1をプログラムするために使用された同じ技術
を、コプロセッサ2のために意図されたコマンドをバースト・バッファ・コント
ローラ7のために意図されたものから分割する追加ステップと共に、使用するこ
とができる。実現可能であるが、この構成は、状態機械の手法に関して不利であ
る可能性がある。これらのプロセッサに、システムの複雑さに加えて、メイン・
メモリ3または他のDRAMへのアクセスを提供することが必要となる。システ
ムのコストおよび複雑さは、2つのマイクロプロセッサをこのように追加するこ
と(およびそれらが非常に簡素な計算を実行するためにのみ存在することにおい
て、十分に利用しないこと)によっても増大される。
【0144】 図1およびその代替物のアーキテクチャを越えた様々な開発も、本発明の本質
の原理から逸れることなく行うことができる。3つのこれらの開発の分野が以下
に記載される。すなわち、パイプライン、データ依存条件/知られていない実行
時間、およびメモリへの非アフィン・アクセスである。
【0145】 パイプライン・アーキテクチャは、アプリケーションがそれらの入力データ・
ストリーム上で複数の変換が実行されることを必要とする値を有する。たとえば
、たたみこみの直後に続いて相関を行うことができる。この種類の構成を収容す
るために、アーキテクチャおよび計算モデルへの変更が必要となる。アーキテク
チャ上では、逐次的にバッファされたCHESSアレイ、またはより大きい区分
されたCHESSアレイ、または計算段階の間に再構成されたCHESSアレイ
を提供することができる。図11Aおよび図11Bは、このようなアプリケーシ
ョンを処理するために有効であり、複数のCHESSアレイを含む、異なるパイ
プライン・アーキテクチャを示す。図11Aは、プロセッサ143から命令され
た互い違いのCHESS/バースト・バッファ・パイプラインによる構成、およ
びメイン・メモリ144とのデータの交換を示し、CHESSアレイ141がデ
ータを第1の組のバースト・バッファ142から受信して、これを第2の組のバ
ースト・バッファ145へ渡し、この第2の組のバースト・バッファ145がさ
らにCHESSアレイ146と対話する(潜在的には、このパイプラインを、さ
らなる組のCHESSアレイおよびバースト・バッファにより継続させることが
できる)。同期化はより複雑になり、近接したCHESSアレイの間、および近
接したバースト・バッファの組の間の通信を含むが、同じ汎用パイプラインを後
に続けて、バースト・バッファの効率的な使用、およびCHESSアレイの間の
効率的な同期化を可能にすることができる。すなわち、セマフォを使用して、パ
イプラインの逐次段階によって実行された計算の正確さを保証することができる
【0146】 図11Bは、異なるタイプの計算パイプラインを示し、2つのCHESSアレ
イ151、156の間にSRAMキャッシュ155を有し、第1の組のバースト
・バッファ152へ提供されたロード、および第2の組のバースト・バッファ1
57によって提供された格納を有する。プロセッサ153およびメイン・メモリ
154の役割は、本質的に他の実施形態から不変である。同期化はこの構成にお
いてそれほど困難でない可能性があるが、この構成が並行性をそれほど効果的で
なく活用する可能性がある。
【0147】 上述のようなアーキテクチャにおけるコプロセッサの効率的な使用上の1つの
制約は、コプロセッサ実施の実行時間が知られるべきであることである(効率的
なスケジューリングを可能にするため)。これは、多数の媒体処理ループについ
て達成可能である。しかし、実行時間がコンパイル時に知られていない場合、ツ
ールチェーンにおけるスケジューリング要件を緩和させる必要があり、プロセッ
サ、コプロセッサおよびバースト・バッファの間の同期化および通信プロトコル
において、適切な許容が行われる必要がある。コプロセッサ・コントローラは、
この状況のための特定の構成も必要とする。
【0148】 別の拡張は、バースト・バッファ・メモリへの非アフィン参照を可能にするこ
とである。上で使用されたバースト・バッファ・モデルでは、すべてのアクセス
がAI+Fのタイプであり、ただしAは定数行列、Iは反復ベクトル、Fは定数
ベクトルである。この制限されたアクセス・モデルの使用により、コプロセッサ
・コントローラおよびプロセッサが予め、どのデータがいずれかの所与の時点で
必要とされるかを知ることができ、論理ストリームの効率的な作成が可能となる
。このアーキテクチャへのこの有意性は、全体として、どのように非アフィン・
アクセスを完全に任意の方法で提供することができるかが不明瞭である(同期化
機構が失敗するように思われる)が、非アフィン・アレイ・アクセスを使用して
ルックアップ・テーブルを参照することが可能になるということである。これは
、ルックアップ・テーブルをバースト・バッファにロードすることによって行う
ことができ、次いで、コプロセッサが、後続アクセスのためのルックアップ・テ
ーブルの開始に相対的なバースト・バッファ・アドレスを生成することができる
。このようなアドレスを、それらが使用されるときより十分に前もって生成でき
るようにすること(場合によっては、これを、同期化機構への精練化によって達
成することができる)、およびこのタイプの回帰参照を支持するように論理スト
リーム機構を修正することが必要となる。
【0149】 したがって、図1のアーキテクチャへの多数の変形形態および拡張を、特許請
求の範囲に記載されたような本発明から逸脱することなく、実行することができ
る。
【図面の簡単な説明】
【図1】本発明の第1の実施形態によるシステムの基本エレメントを示す図。
【図2】図1のシステムにおいて使用されたバースト・バッファ構造のアーキテ
クチャを示す図である。
【図3】図2のバースト・バッファ構造のさらなる機能を示す図である。
【図4】図1のシステムにおいて使用されたコプロセッサ・コントローラの構造
、および他のシステム構成エレメントとの関係を示す図である。
【図5】図1のシステム上で使用可能な計算モデルを例示するための一例を示す
図である。
【図6】図5の例のための計算およびI/O動作のための時間線を示す図。
【図7】図1のシステムのためのコードを提供するために有用なツールチェーン
のフロントエンドからの出力として提供された、注釈付きグラフを示す図。
【図8】図7における仕様から導出された、コプロセッサの内部構成を示す図。
【図9】32ビット・ピクセルを使用する5x5画像たたみこみのための代替ア
ーキテクチャの性能を示す図である。
【図10】8ビット・ピクセルを使用する5x5画像たたみこみのための、図9
を生成するために使用された代替アーキテクチャの性能を示す図である。
【図11A】本発明のさらなる実施形態を使用する代替パイプライン・アーキテ
クチャを示す図である。
【図11B】本発明のさらなる実施形態を使用する代替パイプライン・アーキテ
クチャを示す図である。
【図12】図1のアーキテクチャにおける、コプロセッサ命令待ち行列およびバ
ースト命令待ち行列の代替として使用可能な、2つの補助プロセッサを示す図。
【図13】図1のアーキテクチャにおけるコプロセッサ命令待ち行列の代替とし
ての状態機械の実施を示す図である。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B013 DD03 5B033 BE00 5B098 AA10 GD05 GD14 GD30 【要約の続き】 る。

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 第1のプロセッサと、 前記第1のプロセッサへのコプロセッサとして使用するための第2のプロセッ
    サと、 メモリと、 バースト命令に従ってデータ・バーストにおいて前記メモリに書き込みまたは
    読み取るデータを入れるための、少なくとも1つのデータ・バッファと、 前記バースト命令を実行するためのバースト・コントローラと、 前記バースト・コントローラによる実行のためにバースト命令を順番に提供す
    るためのバースト命令エレメントとを含み、 バースト命令が前記第1のプロセッサによって前記バースト命令エレメントへ
    提供され、前記バースト・コントローラによって実行されたバースト命令に従っ
    て前記少なくとも1つのデータ・バッファを通じて、データが、前記第2のプロ
    セッサへの入力データとして前記メモリから読み取られ、前記第2のプロセッサ
    からの出力データとして前記メモリへ書き込まれる、コンピュータ・システム。
  2. 【請求項2】 前記第2のプロセッサの実行を順番に制御するためのコプロセ
    ッサ命令を提供するためのコプロセッサ命令エレメントをさらに含み、前記コプ
    ロセッサ命令が前記第1のプロセッサによって提供される、請求項1に記載のコ
    ンピュータ・システム。
  3. 【請求項3】 コプロセッサ・コントローラをさらに含み、前記コプロセッサ
    ・コントローラがコプロセッサ命令を前記コプロセッサ命令エレメントから受信
    し、前記第2のプロセッサの実行を、受信されたコプロセッサ命令に従って制御
    し、前記コプロセッサと前記少なくとも1つのデータ・バッファの間の通信を制
    御する、請求項2に記載のコンピュータ・システム。
  4. 【請求項4】 分離したデータ・ストリームが前記コプロセッサと前記少なく
    とも1つのデータ・バッファの間に提供され、前記コプロセッサ・コントローラ
    が、前記分離したデータ・ストリームによる、前記第2のプロセッサおよび前記
    少なくとも1つのデータ・バッファへのアクセスを制御する、請求項3に記載の
    コンピュータ・システム。
  5. 【請求項5】 コプロセッサ命令およびバースト命令の実行を、前記コプロセ
    ッサ命令およびバースト命令が実行するデータの可用性により、同期化するため
    の同期化機構をさらに含む、前記請求項1から4のいずれかに記載のコンピュー
    タ・システム。
  6. 【請求項6】 前記同期化機構が、前記少なくとも1つのデータ・バッファに
    まだロードされていないデータにおける前記第2のプロセッサの実行を必要とす
    るコプロセッサ命令の実行をブロックするように適合され、前記少なくとも1つ
    のデータ・バッファから前記メモリへのデータの格納のためのバースト命令の実
    行を、このようなデータが前記第2のプロセッサによって前記少なくとも1つの
    データ・バッファへ提供されていない場合にブロックするように適合される、請
    求項5に記載のコンピュータ・システム。
  7. 【請求項7】 前記同期化機構が、特定の実行されたコプロセッサ命令および
    特定の実行されたバースト命令によって増分かつ減分されるように適合された、
    少なくとも2つのカウンタを含み、所定のしきい値を越えてカウンタをさらに増
    分あるいは減分することができない場合、少なくとも1つのタイプの命令が実行
    からブロックされる、請求項5または6に記載のコンピュータ・システム。
  8. 【請求項8】 第1のカウンタが、特定のバースト命令の実行により増分可能
    であり、特定のコプロセッサ命令の実行により減分可能であり、前記第1のカウ
    ンタを、第1の低しきい値を越えてさらに減分することができないとき、前記第
    2のプロセッサの関連付けられた実行のためのコプロセッサ命令がストールある
    いは防止される、請求項7に記載のコンピュータ・システム。
  9. 【請求項9】 前記第1のカウンタを、第1の高しきい値を越えてさらに増分
    することができないとき、前記少なくとも1つのバッファから前記メモリへのデ
    ータの関連付けられた格納のためのバースト命令がストールあるいは防止される
    、請求項8に記載のコンピュータ・システム。
  10. 【請求項10】 第2のカウンタが、特定のコプロセッサ命令の実行により増
    分可能であり、特定のバースト命令の実行により減分可能であり、前記第2のカ
    ウンタを、第2の低しきい値を越えてさらに減分することができないとき、前記
    少なくとも1つのバッファから前記メモリへのデータの関連付けられた格納のた
    めのバースト命令がストールあるいは防止される、請求項7から9のいずれかに
    記載のコンピュータ・システム。
  11. 【請求項11】 前記第2のカウンタを、第2の高しきい値を越えてさらに増
    分することができないとき、前記第2のプロセッサの関連付けられた実行のため
    のコプロセッサ命令がストールあるいは防止される、請求項10に記載のコンピ
    ュータ・システム。
  12. 【請求項12】 前記あるいは各命令エレメントが命令待ち行列である、請求
    項1から11のいずれかに記載のコンピュータ・システム。
  13. 【請求項13】 前記あるいは各命令エレメントがさらなるプロセッサである
    、請求項1から12のいずれかに記載のコンピュータ・システム。
  14. 【請求項14】 前記あるいは各命令エレメントがプログラム可能な状態機械
    である、請求項1から13のいずれかに記載のコンピュータ・システム。
  15. 【請求項15】 前記第1のプロセッサがコンピュータ・デバイスの中央処理
    装置である、請求項1から14のいずれかに記載のコンピュータ・システム。
  16. 【請求項16】 コンピュータ・システムを動作する方法であって、 第1のプロセッサ、および前記第1のプロセッサへのコプロセッサとして動作
    する第2のプロセッサによる実行のためのコードを提供すること、 前記第2のプロセッサによって実行されるタスクを提供することとしての、前
    記コードの一部の識別、 前記コードおよび前記タスクから、少なくとも1つのデータ・バッファにより
    、前記第2のプロセッサによるアクセスのためにデータ・バーストにおいてメイ
    ン・メモリからデータを読み取り、そこへ書き込むことができるようにするため
    のバースト命令を決定すること、および、 前記少なくとも1つのデータ・バッファと前記メイン・メモリの間でデータの
    転送を制御するバースト・コントローラによるバースト命令の実行と共に、前記
    コプロセッサ上で前記タスクを実行することを含む方法。
  17. 【請求項17】 バースト命令を決定する前記ステップが、前記バースト命令
    を、前記第1のプロセッサによって実行される前記コードの一部内に含めること
    をさらに含む、請求項16に記載の方法。
  18. 【請求項18】 バースト命令を決定する前記ステップが、前記コードから前
    記第2のプロセッサによってアクセスされるメモリ・アドレスを決定すること、
    および少なくとも1つのデータ・バッファにより、前記第2のプロセッサによる
    アクセスのためにデータ・バーストにおいてメイン・メモリからデータを読み取
    り、そこへ書き込むことができるように、前記第2のプロセッサによって行われ
    るメモリ・アクセスを編成することをさらに含む、請求項16または17に記載
    の方法。
  19. 【請求項19】 前記タスクを提供するコードが、コプロセッサ・コントロー
    ラによる実行のためのコプロセッサ命令で置換され、前記第2のプロセッサによ
    る前記タスクの実行を制御するように決定される、請求項16から18のいずれ
    かに記載の方法。
  20. 【請求項20】 前記タスクの実行において、コプロセッサ命令の実行とバー
    スト命令の実行の間の同期化が、同期化機構によって達成される、請求項19に
    記載の方法。
  21. 【請求項21】 前記同期化機構が、前記第1の命令の正しい実行のために完
    了が必要である第2の命令が完了するまで、第1の命令をブロックすることを含
    む、請求項20に記載の方法。
  22. 【請求項22】 特定のコプロセッサ命令およびバースト命令により増分可能
    あるいは減分可能であるカウンタが使用されて、前記同期化機構が提供される、
    請求項20に記載の方法。
JP2001503043A 1999-06-15 2000-06-15 プロセッサおよびコプロセッサを含むコンピュータ・システム Expired - Fee Related JP5283810B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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