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
Application number
JP2001503042A
Other languages
English (en)
Other versions
JP2003501775A5 (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 JP2003501775A publication Critical patent/JP2003501775A/ja
Publication of JP2003501775A5 publication Critical patent/JP2003501775A5/ja
Pending 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

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

(57)【要約】 コンピュータ・システムは、第1のプロセッサ(1)および第1のプロセッサへのコプロセッサとして使用するための第2のプロセッサ(2)を備える。システムはメモリ(3)を備える。システムは、減結合エレメント(8)を備え、命令が減結合エレメントを介して第1のプロセッサから第2のプロセッサへ渡され。減結合エレメントを介して第1のプロセッサから得た命令を第2のプロセッサが消費し、第2のプロセッサがメモリからデータを受け取り、かつメモリへデータを書き込む。こうして、第2のプロセッサによる命令の処理が第1のプロセッサの動作から減結合される。

Description

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

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 第1のプロセッサと、 前記第1のプロセッサへのコプロセッサとして使用するための第2のプロセッ
    サと、 コプロセッサ・コントローラと、 メモリと、 減結合エレメントを含み、 前記第2のプロセッサが、前記減結合エレメントを介して前記第1のプロセッ
    サから得た命令を消費するよう、命令が該減結合エレメントを介して該第1のプ
    ロセッサから該第2のプロセッサへ渡され、前記第2のプロセッサは、前記メモ
    リからデータを受け取り、かつ該メモリへデータを書き込み、前記コプロセッサ
    ・コントローラは、前記メモリからの読み込みに関して前記コプロセッサの実行
    が正しく命じられるよう、前記第2のプロセッサの活動を制御し、それにより前
    記第2のプロセッサによる命令の処理が前記第1のプロセッサの動作と減結合さ
    れる、コンピュータ・システム。
  2. 【請求項2】 前記減結合エレメントがコプロセッサ命令列であり、命令が第
    一のプロセッサによってコプロセッサ命令列に加えられ、かつ、コプロセッサに
    よってコプロセッサ命令列から消費される、請求項1に記載のコンピュータ・シ
    ステム。
  3. 【請求項3】 前記減結合エレメントが状態機械であり、前記第2のプロセッ
    サに命令を提供するための情報が前記第1のプロセッサによって前記状態機械に
    提供され、命令が前記状態機械によって前記第2のプロセッサに命じられたシー
    ケンスで提供される、請求項1に記載のコンピュータ・システム。
  4. 【請求項4】 前記減結合エレメントが第3のプロセッサであり、前記第2の
    プロセッサに命令を提供するための情報が前記第1のプロセッサによって前記第
    3のプロセッサに提供され、命令が前記第3のプロセッサによって前記第2のプ
    ロセッサに命じられたシーケンスで提供される、請求項1に記載のコンピュータ
    ・システム。
  5. 【請求項5】 前記第2のプロセッサが構成可能である、前記請求項1から4
    のいずれか一つに記載のコンピュータ・システム。
  6. 【請求項6】 前記第2のプロセッサがメモリからダウンロードされた構成に
    したがって構成されるように適合された、請求項5に記載のコンピュータ・シス
    テム。
  7. 【請求項7】 前記第1のプロセッサが、前記第2のプロセッサによる命令の
    実行の間にタスクを切り替えることのできる、前記請求項1から6のいずれか一
    つに記載のコンピュータ・システム。
  8. 【請求項8】 前記第2のプロセッサがデータを読み込み、かつ、前記第2の
    プロセッサがデータを格納するバッファ・メモリをさらに含み、前記バッファ・
    メモリが前記メモリからデータを読み込み、かつ、前記メモリにデータを格納す
    るように適合された、前記請求項1から7のいずれか一つに記載のコンピュータ
    ・システム。
  9. 【請求項9】 前記メモリがダイナミックRAMであり、前記バッファ・メモ
    リがバーストの形で前記バッファ・メモリからデータを読み込み、かつ、前記バ
    ッファ・メモリにデータを格納する、請求項8に記載のコンピュータ・システム
  10. 【請求項10】 第2の減結合エレメントをさらに含み、前記バッファ・メモ
    リが前記第2の減結合エレメントを介して前記第1のプロセッサから得た命令を
    消費するという、前記バッファ・メモリと前記メモリの間のデータの移動に関す
    るメモリ命令が、前記第2の減結合エレメントを介して前記第1のプロセッサか
    ら前記バッファ・メモリに渡され、それによって、前記バッファ・メモリによる
    メモリ命令の処理が前記第1のプロセッサの動作から減結合される、請求項8ま
    たは9に記載のコンピュータ・システム。
  11. 【請求項11】 前記第2の減結合エレメントがバッファ・メモリ命令列であ
    り、メモリ命令が前記第1のプロセッサによって前記バッファ・メモリ命令列に
    加えられ、かつ、前記バッファ・メモリによって前記バッファ・メモリ命令列か
    ら消費される、請求項10に記載のコンピュータ・システム。
  12. 【請求項12】 前記第2の減結合エレメントが状態機械であり、前記バッフ
    ァ・メモリにメモリ命令を提供するための情報が前記第1のプロセッサによって
    前記状態機械に提供され、メモリ命令が前記状態機械によって前記バッファ・メ
    モリに命じられたシーケンスで提供される、請求項10に記載のコンピュータ・
    システム。
  13. 【請求項13】 前記第2の減結合エレメントが第4のプロセッサであり、前
    記バッファ・メモリにメモリ命令を提供するための情報が前記第1のプロセッサ
    によって前記第4のプロセッサに提供され、メモリ命令が前記第4のプロセッサ
    によって前記バッファ・メモリに命じられたシーケンスで提供される、請求項1
    0に記載のコンピュータ・システム。
  14. 【請求項14】 前記第2のプロセッサによる命令の実行により前記バッファ
    ・メモリと前記メモリとの間のデータの転送を同期させるための同期機構をさら
    に含む、請求項8から13のいずれかに記載のコンピュータ・システム。
  15. 【請求項15】 前記同期機構が、前記メモリからより前記バッファ・メモリ
    にまだ読み込まれていないデータに対する前記第2のプロセッサによる命令の実
    行をブロックするように適合され、かつ、前記第2のプロセッサによって相当す
    る命令がまだ実行されていない場合に、前記バッファ・メモリから前記メモリへ
    のデータの格納するためのメモリ命令の実行をブロックするように適合された、
    請求項14に記載のコンピュータ・システム。
  16. 【請求項16】 命令またはメモリ命令の実行が前記同期機構によってブロッ
    クされた時に、前記同期機構によってブロックされていない他の命令またはメモ
    リ命令は実行されるように適合された、請求項15に記載のコンピュータ・シス
    テム。
  17. 【請求項17】 前記第1のプロセッサがコンピュータ装置のCPUである、
    請求項1から16のいずれかに記載のコンピュータ・システム。
  18. 【請求項18】 コンピュータ・システムを動作する方法であって、 第1のプロセッサ、および、該第1のプロセッサへのコプロセッサとして動作
    する第2のプロセッサによる実行のためのコードを提供すること、 前記第2のプロセッサによって実行されるタスクを提供するものとして、前記
    コードの一部を識別すること、 タスクを定義する情報を、前記第1のプロセッサから減結合エレメントに渡す
    こと、および、 前記情報から得られた命令を前記減結合エレメントから前記第2のプロセッサ
    に渡し、かつ前記第2のプロセッサ上で前記命令を処理することを含み、前記第
    2のプロセッサによる前記命令の処理が前記第1のプロセッサの動作から減結合
    されている、方法。
JP2001503042A 1999-06-15 2000-06-15 プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ Pending JP2003501775A (ja)

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)

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

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

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

* 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
US6438683B1 (en) * 1992-07-28 2002-08-20 Eastman Kodak Company Technique using FIFO memory for booting a programmable microprocessor from a host computer

Patent Citations (10)

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

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