JP4531398B2 - メモリアドレス技術に関する改良 - Google Patents

メモリアドレス技術に関する改良 Download PDF

Info

Publication number
JP4531398B2
JP4531398B2 JP2003555354A JP2003555354A JP4531398B2 JP 4531398 B2 JP4531398 B2 JP 4531398B2 JP 2003555354 A JP2003555354 A JP 2003555354A JP 2003555354 A JP2003555354 A JP 2003555354A JP 4531398 B2 JP4531398 B2 JP 4531398B2
Authority
JP
Japan
Prior art keywords
memory address
data
memory
engine
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003555354A
Other languages
English (en)
Other versions
JP2005514677A (ja
Inventor
ウィタカー,マーティン
Original Assignee
アスペックス・セミコンダクター・リミテッド
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 アスペックス・セミコンダクター・リミテッド filed Critical アスペックス・セミコンダクター・リミテッド
Publication of JP2005514677A publication Critical patent/JP2005514677A/ja
Application granted granted Critical
Publication of JP4531398B2 publication Critical patent/JP4531398B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Bus Control (AREA)

Description

本発明はメモリアドレス技術に関する改良に関し、特に(これに限らないが)、この発明はマイクロプロセッサと共に使用されるメモリ記憶装置に保持されたデータに対するメモリアドレスの発生に関する。
図1にCPU2、DMAエンジン8及びメモリ記憶装置4を備える簡単な先行技術の処理システムを示す。CPU2はデータバス6によりメモリ記憶装置4に接続される。CPUはメモリアドレス要求をDMAエンジン8に送信し、これがメモリ記憶装置4をページしてそのメモリアドレスに存在するデータを処理するためにCPU2に送る。メモリ記憶装置4から送られたデータは、CPUがメモリ記憶装置から送られたデータを処理する準備が出来る前はメモリキャッシュ(図示せず)に集められてもよい。
最新のマイクロプロセッサ・アーキテクチャはメモリ記憶装置から送られたデータを処理する中央処理ユニット(CPU)の概念に基づいている。次に、処理済みデータは更なる処理のために他所に送られ、記憶装置に、あるいは表示用の周辺装置に戻してもよい。未処理データはメモリ記憶装置に保持され、メモリ記憶装置がメモリマネージャによりページされるときにCPUに送れるように準備をする。メモリマネージャは一般的にダイレクトメモリアクセス(DMA)エンジンと呼ばれる。DMAエンジンはCPUにより要求されたメモリアクセスの処理を担当するマイクロプロセッサコンポーネントであり、それはCPUが次にどのデータを必要とするかについての命令や、そのデータが位置するメモリ記憶装置内のアドレスをCPUから受ける。メモリ記憶装置から要求されたページされたデータはデータバスを通じて処理のためにCPUに送られる。
マイクロプロセッサの設計においては、CPUがデータの処理に出来るだけ多くのクロックサイクルを費やし、データがメモリ記憶装置から到着するのを待たず、またそれが次にどんなデータを必要とするかの算出にクロックサイクルを費やさないことが重要な考慮事項である。並列にデータを処理出来、一度に多数の命令を実行出来るマルチスレッド処理装置及びベクトル処理装置の出現により、最新のCPUのデータ要求レートは、CPUにデータが供給され続けるための新しい技術が発明されねばならなかったことを意味して来た。一つの技術は、時間的及び空間的局在性を利用するメモリ階層の技術である。
メモリ階層の原理は、アクセスされたメモリデータは再びすばやくアクセスされるであろうし(時間的局在性)、直近にアクセスされたメモリデータに隣接するメモリデータは早くアクセスされる(空間的局在性)であろうという事実に依存している。メモリ階層は一連のメモリキャッシュを有し、最大の主メモリ記憶装置(通常は何ギガバイトものハードディスクドライブ)を始めとし、CPUコアと同じ速度で動作する数キロバイトのオンチップメモリキャッシュに至るまでサイズを小さくしかつ応答速度を増加することにより実行される。
たとえそのようにしてCPUへのデータ送信の問題を取り除いても、そもそもメモリアドレスコールを発生する処理を如何にスピードアップするかの問題がなお存在する。このタスクは通常は上で触れたDMAコントローラにより処理されてきた。しかしながら、複合的なアドレス列が必要な場合、DMAは一般的にその役割に適さず、CPU自身が責任をもつ。実行パイプラインを一つだけ有するCPUの設計については、メモリアドレスのこの次のバッチを発生するのに必要な数だけサイクルが経過するまでCPU全体はメモリアドレスの処理でふさがっている。最新のスーパースカラーCPU設計は一つ以上の実行ユニットを有し、これらの実行ユニットはメモリアドレスを処理及び発生するメモリマネージャのタスクを実行するようにプログラムすることが出来る。
しかしながら、実行ユニットはCPUに要求される如何なる処理も引き受けねばならないので、実行ユニットは通常は複雑な計算が実行可能な全浮動小数点ユニットであり、四則演算及び論理ユニット(ALU)、レジスタ及びそれら自身の他の電子コンポーネントを備えてもよい。そのようなCPUの強力な部分を単純にメモリアドレス発生に専念させることは一般的にCPU処理能力の浪費と見なされ、更なる電力を必要とし、更なる熱を発生する。これらは、特にモバイルコンピューティング用途においてはますます重要な考慮事項である。同一チップに多数の実行ユニットを作り込むことは金がかかるので、CPUが全浮動小数点の実行ユニットを二つ又は三つを超えて持たないことは現在では普通である。従って、メモリアドレスの発生に一つの実行ユニットを割り当てても、それはCPUの処理能力の著しい低下を意味する。
特に画像及び音声処理の分野における最新の用途はクロックサイクルごとに移動を必要とする高レベルのデータを伴うためにメモリアドレス発生処理に対して更なる負担をかけて来た。
この発明にとって重要性を持つのは医用画像形成、特にサンプルボリュームの任意の角度で取られ断面を画像形成する分野である。医用画像分野において、画像データ列から解剖学上の構造を正確かつ自動的に描くには、走査されたボリュームの処理が必要な場合、大きな処理能力を必要とする。例えば、磁気共鳴画像形成(MRI)技術、三次元超音波技術又はポジトロン放射トモグラフィー(PET)技術を用いて走査が行われた後に画像処理が必要な場合がある。これらの技術は非侵襲的ボリュームサンプリング技術であり、これらの方法によりサンプリングされる体ボリュームのタイプ例は脳、心臓、微視的組織断面である。
走査された体ボリュームは通常は、二次元データセットを作成する規則的な間隔で取られた画素の、多くの二次元(2−D)スライス、即ち平面から成る。一つのスライス内の任意の二つの画素間の間隔は画素間距離と呼ばれ、これは実世界の距離を表す。任意の二つのスライス間の距離はスライス間距離と呼ばれ、これは実世界の奥行きを表す。実世界のサンプリングされたボリュームを正確に反映するために画素間及びスライス間距離に基づいて一連のスライスがコンピュータメモリに積層される。データセットの実際のスライスの間に種々の内挿形式により更なるスライスを挿入してもよく、従って、ボリューム全体は適当な解像力で一つの立体的データブロックとして表される。データブロックが一旦確立されたら、各スライス内の画素はボリュームを呈し、ボリューム画素、あるいはボクセルと呼ばれる。言い換えれば、ボクセルは三次元(3−D)画像の最小の区別可能なボックス状の部分である。この3−Dデータセットは従って実際のサンプルボリュームのデジタル表現である。
画像処理は体ボリュームを通るユーザが定めた角度で取られたサンプルボリュームのスライスの画像の提供を通常は伴う。どの画像データ点(必要なデータ点)が新しい観察平面内に見えるかを決定するために計算を実行する必要があり、メモリ記憶装置内のどのメモリアドレスに必要なデータ点を表すデータが存在するかを決定するために更なる計算を実行する必要がある。
必要なデータ点のそれぞれは、例えば彩度、輝度及び透明度パラメータを表す数バイトのデータから成っていてもよい(次にこれらのパラメータのそれぞれは値の範囲を表す数ビットから成っていてもよい)。サンプルボリュームの画像スライスが取られるときは、その一つのスライス上の各データ点に対応するデータはメモリ記憶装置内の逐次的なメモリアドレスに記憶される。漸進的な走査手段により画像スライスデータを記憶するのが普通であり、その場合、2−Dスライスの一つの隅に対応するデータが先ず記録され、画像スライス全体が捕捉されるまで各列に沿って漸進的に走査しながら記録は対角線方向の反対の隅で終る。一つの必要なデータ点に対応するデータのメモリアドレスを求めるために、先ずどの座標が新しいデータ点であるかを三次元物理空間において算出し、その後にこれをメモリ空間における実際のメモリアドレスに置き換えるという二つのステップが行われる必要がある。
既知のマイクロプロセッサ・アーキテクチャを用いてこの新しい観察面を提供するために、CPUは上記の二つのステップを実行しなければならない。取られた観察面はサンプルボリュームに対して如何なる角度を成していてもよいので、新しい観察面に対応するデータが、走査スライス平面に平行な平面を表す観察面のみが連続的に記憶されるようにメモリ記憶装置内の連続的なメモリアドレスに記憶されることは起こり得ない。既知のDMAエンジンの単純な性質のために、CPUはDMAエンジンに必要な全ての単一メモリアドレスを与えるか、あるいは各データ自身を直接フェッチするかしなければならない。このタスクはCPUの処理能力の著しい低下を意味するが、CPUにはこの計算の実行が課せられている。
同様レベルのメモリアドレス処理を要する他の用途はZバッファ法、光線追跡、オクルージョンマッチング及び音声処理を含む。
以下の発明が提出されるのは上記の問題、特にCPUを集中的なメモリアドレス発生処理から解放するという問題に対処するためである。
本発明の一つの態様によれば、論理空間において連続点を表す不連続メモリアドレスのストリームを発生する方法であって、論理空間において連続点を記述する初期化パラメータを発生するステップと、初期化パラメータを用いてメモリアドレスエンジンをコンフィギュレーションするステップと、複数の不連続メモリアドレスを作成するために初期化パラメータに従ってメモリアドレスエンジンにおいてアルゴリズムを実行するステップと、データメモリに出力するために不連続メモリアドレスをメモリアドレスのストリームに組み換えるステップを含む方法が提供される。
必要なメモリアドレスを計算するジョブを外部メモリアドレスエンジンに任せることにより、コントローラ(これは常時ではないが、一般的にはCPUである)はメモリ記憶装置から戻されたデータの処理に自由に専念出来る。更に、コントローラは計算すべき一連のメモリアドレスに対してメモリアドレスエンジンを一度設定するだけでよいが、これはコントローラが処理タスクを行うのに費やす時間の割合をより大きく出来ることを意味する。より詳細には、コントローラCPUにより必要とされるデータ処理は初期化パラメータの発生に限定され、これは典型的には、結果としてメモリエンジンにより発生される大量の不連続メモリアドレスと比較して数バイトから成る。
この発明のもう一つの利点は、歴史的に、DMAエンジンのようなメモリアドレスエンジンがコントローラ又はCPUからの介入なしには不連続メモリアドレスで作られたメモリアドレスの連続ストリームを作成できなかったことである。この発明は、メモリアドレスを処理するアルゴリズムの性質により、この有益作用を生み出すことが出来、それにより既知のメモリアドレスエンジンよりコントローラ入力を低減する。
好都合にも、初期化パラメータの発生はデータボリュームを通るある角度で取られたデータの論理平面の観察を可能にし、一連のパラメータの発生がデータの論理平面の一部の観察を可能にすることも好都合である。これは特に3−Dボリュームの2−D画像観察に当てはまる。
好ましくは、方法は論理平面内の行上の各データ点に対して漸進的にメモリアドレスを計算するステップと、論理平面内の行の数だけ上記の計算を繰り返すステップとを組み入れるアルゴリズムを含む。論理空間の処理要素のこの規則性により、メモリアドレスが必要とする論理空間の連続点をパラメータ化するタスクが簡略化出来る。即ち、論理空間を記述する処理要素の分布が規則的であればあるほど、コントローラからのより最小限の命令でアドレス処理エンジンが実行出来る。
実世界平面において平面ごとにメモリアドレスを計算し、論理平面内のデータ点に関連付けられた必要なメモリアドレスを単に保持するよりも、論理平面内のデータ点に対してだけメモリアドレスを計算する方がずっと効率的である。
特許請求された方法のもう一つの有利な特徴は、コンフィギュレーションステップが論理平面内の初期データ点の座標を指定するステップと、論理平面の列の単位増分に対するベクトルを指定するステップと、論理平面内の行の単位増分に対するベクトルを指定するステップと、論理平面内の必要なデータに対する列限界と行限界を指定するステップとを組み入れれば達成される。
上記のステップは、論理平面内の必要なデータ点に関連付けられたメモリアドレスのみを如何に計算すべきかの問題を解決する基本的な帰納的計算手順を概説している。これらの値はメモリアドレスエンジンに対する初期化パラメータのコアセットから成り、それらがメモリアドレスエンジンに実行させるメモリアドレス計算と比較してコントローラに対しては比較的些細な計算要件である。
上記の好都合な特徴に関して、論理平面上の初期データ点の座標を指定するステップはデカルト座標を用いて実行してもよい。同様に、列ベクトルと行ベクトルを指定するステップは好ましくはデカルト座標を用いて実行される。論理平面は好ましくは実世界サンプルを通る平面を表し、従って、論理平面内の各点は適当な座標により表すことが出来る。またこれは、座標軸のそれぞれが独立であるので処理タスクがメモリアドレスエンジンにおいてアルゴリズムにより各軸に対して同時に実行出来ることを意味する。
論理平面は実世界デカルト座標空間に対して任意の角度で傾斜していてもよいので、論理平面内の行と列を移動する必要のあるベクトルはこれらの三つの軸のそれぞれに成分を持ち得る。
この方法がメモリアドレスの組み換えられたストリームをメモリ記憶装置、典型的には「補助データ記憶装置」に出力するするステップを更に含むことが望ましいかも知れない。「補助データ記憶装置」はどのようなメモリでもよく、例えばメインシステムメモリでもよい。
特許請求された方法の代わりの態様において、アルゴリズムを実行するステップは好ましくは、発生されたメモリアドレスがメモリアドレスエンジンにアクセス可能かどうかをチェックするステップを更に含む。
メモリアドレスエンジンに、それらがメモリ空間のどこにアクセス可能であるかについて制限が課せられているのが普通である。アクセスとはそのメモリアドレスから読み出し、あるいはそれに書き込むことを意味する。これは効率上の理由のため、例えば、それぞれのメモリアドレスエンジンが異なる範囲のメモリアドレスに並列に取り組めるようにメモリースペースをいくつかのメモリアドレスエンジンに分割するためである。
上記の代りの態様において、アルゴリズムを実行するときに、これが、発生されたメモリアドレスをメモリアドレスエンジンにアクセス可能な所定の範囲のメモリアドレスと比較するステップを含むことが好ましい。この簡単なチェックが、メモリアドレスエンジンがアクセス出来ないメモリ位置からデータを検索しようとする処理時間の浪費を防止するために必要な全てである。そのようなアドレスが検出された場合、実行ステップは無結果を返すステップを更に含んでもよい。無結果は例えば画像データを囲む枠として表示できるので、これは処理を助ける。
本発明は、好ましくも複数のアドレスエンジンがあるときはもっと効率的である。この場合、コンフィギュレーションステップは、発生された初期化パラメータを用いて少なくとも一つの更なるメモリエンジンをコンフィギュレーションするステップを更に含んでもよく、実行ステップは複数の不連続メモリアドレスを作成するために少なくとも一つの更なるメモリアドレスエンジンのそれぞれにおいて実行してもよい。
並列に処理するためにいくつかのメモリアドレスエンジン間のメモリアドレス発生要件をいくつかのメモリアドレスエンジンに分割すれば一つのメモリアドレスエンジンのみを使用するよりもっと効率的である。単一命令多重データ(SIMD)モードで動作するメモリアドレスエンジンの場合、各メモリアドレスエンジンは同じ初期化パラメータを用いて設定される。
いくつかのメモリアドレスエンジンを使用する場合、各メモリアドレスエンジンにおいてアルゴリズムを実行するときに、これが、発生されたメモリアドレスが、隣接するメモリアドレスエンジンにアクセス可能であるかどうかを決定するステップを組み入れることが好ましい。
アクセス可能である場合、各メモリアドレスエンジンにおいてアルゴリズムを実行するときに、これが、隣接するメモリアドレスエンジンのためにメモリアドレスを発生するステップを更に含むこともまた望ましい。
これらの二つの特徴はアドレス計算タスクが、並列するメモリアドレスエンジンの配列にわたり分配され、そのそれぞれがそれらの個々のメモリ記憶装置にアクセスするようにする。速度の著しい増加という利点はわずかな付加的なアドレス問題をはるかに埋め合わせる。
上記のことに関し、それは好ましくは、隣接するメモリアドレスエンジンのためにメモリアドレスを発生するときにそれがあたかも隣接するメモリアドレスエンジンの個々のメモリ記憶装置から戻されたかのように個々のメモリアドレスエンジンに関連付けられたメモリ記憶装置から戻されたデータをルーティングするステップを更に含む。このようにして、隣接するデータ記憶装置から得られるデータの転送先はそこからのデータが予測されるメモリアドレス用エンジンに関連付けられた処理装置または記憶装置に正しく向けることが出来る。これはそのデータで動作するあらゆるデータ処理アルゴリズムの変更を最小にする。
ルーティングするステップはメモリアドレスデータが隣接するメモリアドレスエンジンにルーティングされることを排除するステップを更に含んでもよい。これはデータとアドレスの分離を保ち、このことは動作のし易さにとって重要であり、またルーティング機能のシリコンでの実施に必要な入力/出力ピン数を最小にする。
隣接するメモリアドレスエンジンのためにメモリアドレスを発生するときに、これが、隣接するメモリアドレスエンジンを用いてデータ転送を同期するステップを更に含むとことが好ましい。各メモリアドレスエンジンはある程度独立に動作できるけれども、隣にデータをルーティングするときは、これは普遍的なデータフローの変更であり、そのためにエンジン間に同期があることは非常に好都合である
本発明の代わりの態様において、外部コントローラにより設定された、論理空間において連続点を記述する初期化パラメータを受けるように配列されたメモリアドレスエンジンが提供され、メモリアドレスエンジンは、初期化パラメータで実行される少なくとも一つのアルゴリズムに従って複数の不連続メモリアドレスを発生するようになっているアドレス発生器と、データメモリに出力するために不連続メモリアドレスを出力メモリアドレスのストリームに組み換えるようになっている組み換え手段とを備える。
本発明のもう一つの態様によれば、少なくとも第一と第二のメモリアドレスエンジンと、それぞれのメモリアドレスエンジンに関連付けられた第一と第二の主データ記憶装置と、それぞれのメモリアドレスエンジンに関連付けられた第一と第二の補助データ記憶装置と、各メモリアドレスエンジンをその関連する主及び補助データ記憶装置に接続するデータバスと、各メモリアドレスエンジンに関連付けられたデータルータとを備えるメモリアドレス処理システムが提供され、第一のメモリアドレスエンジンに関連付けられたデータルータは命令により第一のメモリアドレスエンジンの第一の補助データ記憶装置から第二のメモリアドレスエンジンの第二の主データ記憶装置にデータをルーティングするようになっている。
上記のメモリアドレス処理システムは必要なアドレスを迅速に計算するために複数のメモリアドレスエンジンを持つという利点を利用する。アドレス計算は論理空間の小さなサブセットについて実行され、従って一つの大きな空間について実行する場合よりもかなり速い。新しい分布構造を扱うために処理アルゴリズムを変更するよりも、二つのメモリアドレスエンジン間にルータを設ければ処理がずっと容易になる。
上記のシステムにおいて、第一のメモリアドレスエンジンに関連付けられたデータルータに対する命令が第一のメモリアドレスエンジンから送られるのが好ましい。これはコントロールをローカルに留め、いつデータルータがそれ自身のローカルデータ記憶装置から直接コントローラにデータをルーティングすべきか、またいつそれがその隣接するメモリアドレスエンジンのローカルデータ記憶装置からデータをルーティングすべかをメモリアドレスエンジンが指定出来るようにする。後者は通常、メモリアドレスがそのローカルデータ記憶装置にないことを第一のメモリアドレスエンジンが計算するときに必要である。
本発明のもう一つの態様によれば、複数のメモリアドレスエンジンを備えるメモリアドレス処理システムと共に使用されるルータが提供され、ルータは第一のメモリアドレスエンジンからの命令により第一のメモリアドレスエンジンに関連付けられたメモリ記憶装置から第二のメモリアドレスエンジンに関連付けられたメモリ記憶装置にデータを向けるようになっている。
そのようなルータは、多くの異なる処理装置とメモリアドレスエンジンが一緒に動作するようにメモリアドレス計算のタスクを細分化する場合、特定の用途を有する。二つのコンフィギュレーションの一つにおいて、即ち、関連するメモリアドレスエンジンのデータ記憶装置から直接、あるいは隣接するメモリアドレスエンジンに関連付けられたデータ記憶装置から、データをルーティングするように出来るので、ルーティングは複雑ではない。従って、各ルータはスペースとコストの点で比較的安価にシリコンに作り込むことが出来、どの返還データが有効であり、どの要求を表すかを算出しなければならないCPUの計算費用の著しい低減をもたらす。
好ましくは、第一のメモリエンジンに関連付けられた第一のメモリ記憶装置からのデータのみが第二のメモリアドレスエンジンに関連付けられたメモリ記憶装置に向けられる。これによりルータを単純に構成しかつ各メモリアドレスエンジンに対して繰り返し使用することが可能になる。
さて、発明がより容易に理解出来るように、添付図を参照して例として発明を説明する。
図1にCPU2、DMAエンジン8及びメモリ記憶装置4を備える簡単な先行技術の処理システムを示す。CPU2はデータバス6によりメモリ記憶装置4に接続される。CPUはメモリアドレス要求をDMAエンジン8に送信し、これがメモリ記憶装置4をページしてそのメモリアドレスに存在するデータを処理用のCPU2に送る。メモリ記憶装置4から送られたデータは、CPUがメモリ記憶装置から送られたデータを処理する準備が出来る前はメモリキャッシュ(図示せず)に集められてもよい。
図2は本発明の第一の実施例による処理システムを示す。理解を容易にするために、第一の実施例と先行技術の差が第一の実施例を説明するために使用される。図1のメモリ記憶装置4は非常に大きい2−D又は3−Dデータセットを記憶するために使用される「補助データ記憶装置(SDS)」14により置き換えられる。SDS14はデータ転送パイプライン16に接続され、次にこれが「主データ記憶装置(PDS)」12に接続される。PDS12はCPU2にローカルなキャッシュ、あるいは何らかの他の処理装置、例えば関連するストリング処理装置であると考えることが出来る(これはWO 02/42906として公開された本出願人の同時係属中の国際特許出願の主題である)。必要な2−D又は3−DデータセットはPDSに関連付けられた処理装置による処理に先立ちPDSに転送される。このネットワークにおけるアドレス発生は、データアドレス要求をパイプライン16を介してSDS14に送る「補助データ移動コントローラ(SDMC)」18と呼ばれるスマートDMAエンジンにより取り扱われる。SDMC18はCPU2からのアドレス命令を用いてセットアップされる。SDMC18をセットアップするCPUは必ずしもPDSに関連付けられた同一処理装置である必要はない。
前に述べたメモリ階層の観点から、SDSはPDSと比較してより下層のどんなメモリ又はメモリキャッシュでもよい。PDSがSDMC18にローカルな処理装置に密接に関連付けられるというシナリオ、特に処理装置がベクトル処理装置であるというシナリオはこの特定の発明にとって特別な重要性を持っている。
データ転送パイプライン16はアドレスデータ(ピン15)とデータ(ピン17)の同時送信を可能にするピン15と17によりSDS14に接続される。データ転送パイプラインはまたPDSにデータを転送し、データ帯域幅はコネクタ17と19にあるピン数を決定する。
SDMC18は従来のx、y、z軸を有するデカルト座標を採用する。3−D(ボリューム)データセットのサイズと配置はxSize、ySize及びzSizeにより定められる。前に述べたように、単位はボクセル(画素の3−D等価物)であり、これは用途にふさわしい解像力/精度を持っている。例えば、ボクセルを表すデータは色、濃度、透明度等についての情報から成っていてもよく、その場合、記憶装置の複数バイト(voxelSize)を占めることになる。これは以下のバイト数から成るデータセット総数をもたらす。即ち、
voxelSize*xSize*ySize*zSizeバイト
パラメータxSize、ySize及びzSizeはSDMCアーキテクチャにより直接使用されない。その代わり、ユーザはx、y及びz軸のそれぞれに沿って一つのボクセルを移動するために何バイトのメモリを省略すべきかを指定する。これらの量はxScale、yScale及びzScaleと呼ばれる。典型的には(必須ではないが)、xSize、ySize及びzSizeの値は同一である。
どんな3−DデータセットもそれぞれがxSize×ySizeの寸法を持つzSize平面群と解釈出来る。3−Dデータは習慣的に一番目の平面(z=0)の一番目の行(y=0)がメモリ内で物理的に一番目であるようにSDSに配列される。この一番目の行の一番目のデータ要素は当然x=0にある要素であり、その後にx=1が続き、x=xSize−1まで続く。この後に一番目の平面の第二の行が続き、一番目の平面の最後のボクセル(x=xSize−1、y=ySize−1)まで同様に続く。一番目の平面の最後のボクセルから当然二番目の平面の一番目のボクセル(x=0、y=0、z=1)に移動し、データセットにわたりこれを繰り返す。
この全てはxが小寸法で、zが大寸法とすることにより、より簡潔に表すことが出来る。xSize、 ySize及び zSizeと、xScale、yScale及び zScaleの間の関係はこのことから以下のようになる。即ち、
xScale=voxelSize
yScale=xScale*xSize
zScale=ySize*yScale
SDMC18はSDS14とPDS12間のボクセルデータの転送を容易にする。ボクセルの実際のメモリアドレスを決定するために、それは、転送すべき各ボクセルの座標(x,y,z)を内部で計算してこれらにスケールファクター(それぞれxScale、yScale及びzScale)を掛ける。
通信ネットワークにより相互接続された実行ユニットの配列が、コンボリューションやマトリックス掛け算のような共通処理タスクの間、隣のデータを共有するために効率的に使用できるように、多くの並列処理アプリケーションは隣接ボクセルが隣接する処理要素にロードされることを常に必要とする。従って、SDMC18は2−D「パッチ状ボクセル」をSDSへ、またSDSから転送するように設計される。
「パッチ」は全てボリュームデータセット内の任意の同一平面にあるボクセルの矩形配列である。この2−D「パッチ状ボクセル」は2−D画像と混同すべきではない(一定の非常に特殊な環境では二つは同一であるけれども)。この平面の向きは任意でよい。言い換えれば、転送に係わるSDSに記憶されたボクセルの位置と順序は概念的にボリュームデータ内に位置する任意の方向に向いた矩形により定められる。SDMCのパラメータのほとんどはボリュームデータ内のボクセルデータのこのパッチの位置、サイズ及び向きについて指定する必要がある。
ボクセルデータのパッチは列寸法と行寸法を持つ。列寸法は常に小寸法である。即ち、データが行ごとに転送され、従って列インデックスは転送中に最も頻繁に変化する。
使用時、CPU2は初期化中に一連のアドレス命令を用い、また後で詳細に説明し、またその例をここで説明するハードウェアで実施されたアルゴリズムを使用することにより、SDMC18をセットアップするように命令を発行する。SDMC18はSDSに対してページされかつPDSに戻される必要な一連のメモリアドレスを発生することが出来る。従って、メモリアドレス計算はCPUからSDMC18に任せられ、CPUはPDSから得られたデータの処理にクロックサイクルを集中することが出来る。
図3は、データアイテム21のパッチ20(図3ではデータアイテム21の一部のみに付番される)が図解の都合だけのためにz平面に合致するように選択された図例を示す。この例ではパッチのサイズは3×3個のデータアイテムである。
ColIncrは「データパッチ」の行に沿って次のデータ要素のアドレスを計算するのに必要なベクトルである。RowIncrは次の行の次のデータ要素のメモリアドレスを計算するのに必要なベクトルである。ColIncrとRowIncrはそれぞれ、x、y及びz方向に対してそれぞれ一つの、三つの成分(xColIncr、yColIncr等)を持つ。パッチ状ボクセルはこの図解ではz平面上にあるので図ではzColIncrとzRowIncが表されないのは明らかである。
しかしながら、選択された平面がz平面に平行でない場合は各ベクトルColIncrとRowIncrは三つの軸のそれぞれに成分をもつ。
選択された平面は論理平面と呼ばれ、ColIncr及びRowIncrベクトルは物理的平面におけるベクトルであり、これらを合成すると論理平面における単位ベクトルを表す。
CPU2はColIncrとRowIncrの両方に対するx、y及びz成分を算出し、これは初期化中にSDMC18に送られ、必要なパッチに対するデータ点の全てが計算されるまで、後に続く全ての計算の間中、維持される。
制御用パラメータのもっと完全な説明が以下の節において成される。
xInit、yInit、zInit
ボクセルデータ20の矩形パッチ、又はマトリックスの位置はその一番目のボクセル(マトリックス内の最小の列及び行座標を持つボクセル)のx、y、z座標により決定される。この位置はSDMCパラメータxInit、yInit及びzInitにより指定される。xInit、yInit及びzInitの値は端数部を表す下位16ビットを持つ32ビット符号付きの固定小数点値である。
ColIncr及びRowIncr
矩形パッチ20の向きは二つのベクトル、ColIncr(x,y,z)とRowIncr(x,y,z)により指定される。ColIncrは矩形パッチ20の行に沿って次のデータに移動するのに必要なベクトルである。RowIncrはある行から次の行に移動するのに必要なベクトルである。ColIncrとRowIncrのそれぞれは、x、y及びz方向に対してそれぞれ一つの、三つの成分(xColIncr、yColIncr等)を持つ。これらの成分は32ビット整数部を表す上位16ビットと端数部を表す下位16ビットを持つ32ビットの2の補数の固定小数点値である。
CalLimit及びRowLimit
パッチ内の転送元/転送先データ要素の数(従ってそのサイズも)はColLimitL、ColLimitH、RowLimitL及びRowLimitHにより指定される。これらは矩形パッチ20により定められるデータ要素を横切るのに使用される内部のSDMC行及び列カウンタの始め及び終りの限界を指定する。即ち、列カウンタはColLimitLからColLimitHまでカウントし、行カウンタはRowLimitLからRowLimitHまでカウントする。このように、選択されたパッチのサブセットはユーザの自由裁量で転送出来る。
上記の三つのパラメータセット、開始ボクセルの初期値、論理平面内の単位増分ベクトル及び論理平面限界が、論理平面内のパッチ状データを指定するのに必要とされる全てである。更に、SDMCの機能性を増すために随意のパラメータが与えられてもよい。
例えば、SDMC18は完全な「パッチ(矩形)状データ」を転送する必要はなく、転送すべきデータ要素の実際の数はTfrLength(転送長さ)により指定される。TfrLengthはRowLimitとColLimitにより定められるデータ要素の数より少なくてもよいが、もっとあり得るのは、それがこの値と同じか、その整数倍(ロード動作中にPDSに転送されるべき矩形パッチデータの多重コピーを可能にする)であることである。
もう一つの例はプログラム可能なパラメータRowBound、ColBound及びNullDataの供給である。SDSからのパッチ状データのサブセットのみが抽出される必要があり、残りのデータアイテムを何らかの任意のNULL値で埋めることがしばしばある。SDMC18は、SDSからのこのサブセットデータのみを選択し、PDSに転送すべきNULLデータで残りの位置を埋める役目をする付加的な機能を持つ。
同様に、パッチ状データの処理は無効結果がローカルPDSに戻されることになるかも知れない(即ち、処理後のパッチの境界において)。これらの無効結果の発生(SIMD処理装置では非実用的であり、あるいは望ましくない)を抑えるためにCPU2における計算帯域幅を浪費するよりも、どんな無効境界データも処理、廃棄した後に有効結果のみをSDSにライトバックする方がよい。
内部SDMC列カウントが≧ColBoundLで≦ColBoundHであり、内部SDMC行カウントが≧RowBoundLで≦RowBoundHである、即ち、RowBoundH、RowBoundL、ColBoundH及びColBoundLがその中の有効データが転送される内部行及び列カウンタの境界を示すときのみPDSとSDS間でデータが転送される。行カウンタと列カウンタのどちらかがそれぞれの境界を越えたら、NULLデータ値がロード動作中にPDSにロードされる。記憶サイクル中にそのPDSデータは廃棄され、SDSにはデータは何も書き込まれない。NULLデータ値はNullData SDMCパラメータにより指定される。
図4はMPEGビデオ復号における例を示し、IDCT(逆離散余弦変換)が8×8マトリックスについて実行されねばならず、その結果(8×8マトリックス)は半画素内挿により9×9マトリックスから作成された基準データに加算されねばならない。一つのアプローチは、先ず余計なスペースを必要としないでIDCT結果に対して9×9の基準データをロードする十分な余地を与えるために、計算を処理するのに64個ではなく81個のSIMD処理要素を採用してもよい。この状況では、一つの転送でIDCT入力データ全体(64データ要素)を81個の「連想処理要素」までロードしたいと思うであろう。しかしながら、マトリックス掛け算を容易にするために、入力データからの各8行目が、SIMD処理装置配列において9行目に合致したままにし、最終ブランクの9行目が「終わり」に来ることが必要であろう。
このことはRowBoundとColBoundの適当な指定によりSDMC18を用いて容易に達成出来る。MPEGの例に関して、以下のように簡単に設定してもよい。即ち、TfrCountを81に設定することを念頭において、ColLimitL = RowLimitL=0、ColLimitH=RowLimitH=8、そしてRowBoundL=ColBoundL=0、RowBoundH=ColBoundH=7。
SDMC処理データの配列が並列の場合、単一命令多重データ(SIMD)モードにおいて、図5に示す処理システムで表される本発明の第二の実施例を採用出来る。この並列構造において、補助データ転送(SDT)ルータ20はパイプライン16とPDS12の間に配置される。CPUが初期命令を用いてSDMC18をセットアップするときにCPUはまた、各SDMC18がどのメモリアドレス列にアクセス可能であるかをSDMC18に知らせる。
第一のSDMC18がCPUにより初期化された一連のアドレス命令を処理する過程で、発生されたメモリアドレスがそれ自身の割り当てられたローカルなメモリアドレス列の外側にあることをSDMC18が知ったら、SDMC18はどの隣接SDMCがこのメモリアドレスにアクセス可能であるかを決定し、それに従ってルータがそれ自身を、データを隣接するSDMCのルータ(22、24)から第一のSDMCのルータ20を介して第一のSDMC18のPDSにデータをルーティングするように設定する。
SDMCプログラムパラメータが、グローバルなボクセルアドレスが計算されるようにすることを覚えておくことは重要である。グローバルデータセットは、それぞれがそれら自身のSDMCと、PDSへの補助I−Oチャンネルを持つ多数のローカルSDS全体に分配され、それにより向上された補助I−O(入力−出力)性能を提供する。多くのSIMDアプリケーションは、このようにデータを多数の独立なデータセットに単純に分割することにより動作する。
しかしながら、隣接するSDMCチャンネルが、それらをシステムSDS全体にわたってデータを参照させるグローバルアドレス方式を維持しながら、互いのローカルデータへの物理的アクセスを有するという能力は利点を生じる。常にこれはデータセットが同じサイズと形状を有し、データのアクセスが隣接するSDSに制限されると仮定している(SIMD 2−D及び3−D画像形成用途においては妥当で費用効果の大きい仮定である)。
従って、「チャンネル」アーキテクチャは特定のSDMC18がその最も近い隣がもつSDSの一つからデータを効率的に読み取れるようにする。問題のSDMC18は直接データ自身をフェッチしないが、このフェッチを行うために隣がもつSDMCを利用する。言い換えれば、各SDMCはグローバルアドレスを発行し、データをフェッチする。しかしながら、このデータが実際に隣接するSDSにあることを認識してSDMCは適当なオフセットをそれ自身のグローバルアドレスに与えてローカルアドレスを作り出し、得られたデータ転送を単純な隣のスイッチングネットワークを介してその隣にルーティングする。
実際には、これはプログラムにおいて同一点における隣接するSDSデータへのアクセスを要する全てのSDSチャンネルに依存し、従って、それらは全て隣のためにそれらのローカルSDSからデータをフェッチしている。これは隣接するSDS間にハンドシェークチャンネルを採用することにより行われる。SIMDモードで動作するSDMCの配列において、各SDMC18は、処理するために初期化されたアドレス命令列のわずかに異なる場所にあってもよい。各SDMC18が同じ命令セットを動作しているので、たとえデータの異なる部分に対してであっても、一つのSDMC18が、発生されたアドレスがそのローカルデータ記憶装置の外側にあることを理解するや否や、それはハンドシェーク信号を隣接するSDMCに送る。全てのSDMCが同じ位置に達し、次のアドレスがそれらのローカルSDSの外側にあることを理解するや否や、ルータが作動され、各SDMCは適当な隣がもつアドレスページを処理し、ルータは戻されたデータを隣がもつPDSにルーティングする。
一つのSDMCが、隣接するSDSに保持されたデータを必要とし、従って全ての処理ユニットも同様に必要とする場合、ハンドシェーク処理はSIMD処理アーキテクチャにおけるように上記のシナリオにとって重要である。この転送は、全ての処理ユニットが処理命令列内の同じ段階に同期されるまで行うことは出来ない。
この実施例は本発明の拡張性を示すだけでなく、ルータを用いて各SDMCに対するローカルデータ記憶装置のサイズを如何に小さく出来るかを示す。ルータ機能がなければ、各SDMCはSDS全体と同じサイズのアクセス可能なローカルメモリ記憶装置を持つ必要があり、これには金がかかる。
更に、パイプライン16とSDS14の間ではなく、データ転送パイプライン16とPDS12の間へのルータの配置は供給を要する信号が顕著に少なくなることを意味し、ルータがPDS12へのデータ転送を可能にするに十分なピンを備えることだけが必要であるが、一方、パイプライン16とSDS14の間へのルータの配置はアドレスデータを送信するために更なるピンの具備を必要とする。図5に示すようにルータを配置することにより処理システムにおいて必要な接続数、即ちピン総数がかなり減る。これは回路基板の設備、コスト及び電力消費の顕著な低減と同等である。
実際には、図5に示すルータの作動はパラメータWrapBaseとWrapLimitを設定することにより制御される。WrapBaseとWrapLimitはグローバルな位置ベクトル(これは隣がもつSDSにおける物理的位置と言ってもよい)を修正するためにSDMC18により使用され、従ってそれは常にローカルSDS内の対応する位置を指す。ルータをイネーブルするビットはこの機能性を必要とする転送に対してSDMC機能レジスタにおいて設定されねばならず、ルータはx、y又はz方向のそれぞれにおいてローカルSDSの境界を越えるアクセスに対して独立にイネーブルされねばならない。
WrapBaseとWrapLimitはまた特定のSDMCのSDSがグローバルSDSのどのサブセットを占有するかを指定する(即ち、各SDMC18に特有のローカルSDSを定める)。WrapBase(xWrapBase、yWrapBase及びzWrapBase)はローカルSDSにおける一番目のボクセルに対応するグローバルボクセル座標を指定する。WrapLimit(xWrapLimit、yWrapLimit及びzWrapLimit)はローカルSDSの限界に達するまでの各軸に沿って取れるボクセルステップ数を指定する。
ボリュームが多数のローカルSDS(それぞれはそれら自身のSDMC18とPDSへの補助I−Oチャンネルを持つ)にわたって分割される場合、xInit、yInit及びzInit値は与えられたデータチャンネルのxWrapBase、yWrapBase及びzWrapBase値に呼応して供給されねばならない。
第一のSDMC18の必要なメモリアドレスがWrapLimitより大きければ、必要なアドレスはWrapLimitから減算され、第一のSDMC18は、より小さなローカル範囲のメモリアドレスを持つ隣接するSDMCのアドレスを第一のSDMCのローカルSDSから戻すように設定され、このデータは、第一及び隣接するSDMCのルータの両方を介してルーティングすることにより隣接するSDMCのPDSにルーティングされる。第一のSDMC18により必要とされるデータは他のSDMCのルータと第一のSDMCのルータを介して他の隣接するSDMCにより第一のSDMCのPDSに戻される。
逆に、必要なメモリアドレスがWrapLimitより小さければ、必要なアドレスはWrapLimitに加算され、第一のSDMCは、それ自身のものより大きいローカルSDS範囲を持つ隣接するSDMCに戻されるデータをそのローカルSDSから戻すように設定される。
図6a乃至6dはこの方式に基づいてサポートされるルータ20に対するルーティングコンフィギュレーションを示す。示された例では、ルータ20はデータロードサイクル(即ち、SDSからPDSへの転送)の間動作するだけであることに注意のこと。これは、この例ではこの方式が、与えられた処理装置が隣接するデータ転送元からの「重複」データにアクセスしようとし、一般的にこれを、ローカル結果を計算するために使用する(即ち、それ自身のローカルSDSに記憶する)だけであることを予測するからである。この制限は常に一般的な場合に適用する必要はない。
アルゴリズム(ハードウェアで実施される)により設定される他のパラメータは明確な境界のチェックのための上限及び下限、HardBoundH及びHardBoundLである。SDMC18はデータが無効な場所に対して読み書きされないようにそれが計算したアドレスに対する境界チェックを行う。これは、それらのデータセットを多数のSDSチャンネルにわたって分割し、隣のデータアクセスを採用する用途に特に有用である。この状況では、データセットの「端」を含むチャンネルはグローバルデータセットの外側にあるアドレスを必然的に発生する。
HardBoundH(xHardBoundH、yHardBoundH及びzHardBoundH)とHardBoundL(xHardBoundL、yHardBoundL及びzHardBoundL)はSDMC18により計算されたグローバル位置ベクトルに課せられた「明確な」境界を指定する。明確な境界を越えたら、メモリに対する読み書きは発生せず、NullData値が読みデータに代わって返される。
図5と図6で言及されるSDMC18は図7に示すようなコンフィギュレーションレジスタを有する。図8で言及されるAddressBaseはローカルSDSの初めから設定されるデータのオフセットである。これはSDS記憶装置内の単純なオフセットを表し、2−D又は3−Dデータセットサイズ、あるいはその座標系との特別な関係は持たない。
図5乃至7で言及される第二の実施例に使用するSDMC18の詳細なアーキテクチャを図8に示す。
このSDMCは特に第二の実施例に関するものであるけれども、第一の実施例での使用に直ちに適合することが出来る。
図8に示す回路に対して三つの主なユニットがあり、このユニットが次に論理平面ベクトルRowIncr及びColIncrのそれぞれのx、y及びz成分の発生を担当する。上を要約すると、RowIncr及びColIncrは論理平面内の単位ベクトルに関連し、論理平面は観察される実世界サンプルに対して任意の角度を成してよいので、RowIncr及びColIncrは三つの軸全てに成分を持ち得る。詳細な回路はRowIncr及びColIncrの各ベクトル計算においてx成分の計算を担当するユニットに対してのみ示すが、他の二つのユニットは正確に同じ構成要素を備える。動作時に、全ての三つのユニットは全ての三つのユニットからの出力を含む一つの最終メモリアドレスを発生するために同時に動作する。
パッチインデックス論理回路(図示せず)と呼ばれるカウント機構はx、y及びz成分処理ユニットを駆動するクロック信号を供給し、これは既知の方法で直ぐに達成出来る。このカウント機構は論理平面の列と行にわたってインデックスを付けて列と行が幾つ処理されたかを追跡し、また列限界と行限界に到達したら処理を停止する。
以下はX成分の計算を担当するユニットに関してのみ述べる。他のY成分及びX成分のユニットにおいて全く同じ処理が後に続く。カウント機構からの適当な信号により、xColIncr多重化装置が、動作の開始時に初期化されるパラメータの一つであるColIncrの加算を開始する。
{x,y,z}パラメータ空間におけるグローバルアドレスを計算する主要モジュールはRowIncr及びColIncrオフセットを適用するために32ビット固定小数点四則演算を利用する。最も効率的なやり方でこの概念を実行するために、本発明はローカルなWrapBase(x,y,z)に対するチャンネルごとのInit(x,y,z)値を供給する。このようにして、全てのアドレス計算がローカルSDSメモリに対して実際に成されるが、WrapBaseオフセットをローカルアドレスに単純に加算することによりグローバルアドレス空間(即ち、明確な境界のチェックのために)に直ぐに作り直すことが出来る。
ラップオフセットを適用するために、アドレスの整数部(WrapBaseに対する)はWrapLimitと比較される。アドレスがWrapLimitより大きいか、あるいは0より小さいなら、ルータはそれぞれ右又は左の隣接するPDSにデータを向け直すようにイネーブルされる。これらの条件の下ではアドレスルータを介して向けられず、厳密にローカルのままであるので、隣にルーティングされたデータにローカルアドレスを与えるように修正されねばならない。アドレスがWrapLimitより大きければ、WrapLimitはローカルアドレスを計算するために減算される。アドレスが負なら、ローカルアドレスを計算するためにそれはWrapLimitと再度合算される。
あるいは、ルータネットワークが必要ないなら、グローバルアドレスは無修正でScal乗算器に送られる。
次に明確な境界のチェックが実行される。アドレスはグローバルアドレスを計算するために先ずWrapBaseと合算され、次いでHardBound限界と比較される。
その後、1でないボクセルサイズを考慮するために、アドレスがScaleファクターで乗算される。
最後にx、y及びz成分が組み合わされて最終SDSアドレスを発生する。これらの最終段階においてAddressBaseオフセットが与えられる。
これらのステップは論理平面の各行内の全ての点に対して繰り返される。行の終りに到達したら、カウント機構はxRowIncr多重化装置に異なる信号を送ってxColIncrに対してそのクロックサイクルにおいて計算されたアドレス値にRowIncrを加算する。
一旦これが加算されたら残りの手順は同じままである。必要な論理平面内の全ての点、あるいは論理平面のパッチが計算されるまで、点ごと、及び行ごとにこの手順は続けられる。
AddressBaseの合算の直前に多重化装置を経由してメモリアドレス別の転送元がこの段階においてメモリアドレスを供給する(これはAddressMemoryという用語で表される)。しかしながらこのことは、本設計についてフレキシビリティーを示し、現存のネットワーク設計とのより大きな適合性を与えるためにこの図のみに存在する。一例として、AddressMemory多重化装置で多重化される前にSDMC18のアドレス発生論理ユニットにより発生されたアドレスは連想処理装置又は連想処理装置配列で発生されたアドレスで置き換えることが出来、これがその代わりにメモリアドレスを発生し、これらをローカルSDSに供給する。連想処理装置はベクトル処理装置であるので発生されたメモリアドレスは多重化装置に流される前に、更なるレジスタ又はキャッシュ(図示せず)にダンプされるが、これはメモリアドレスがメモリ記憶装置により直線的にしか扱えないからである。連想処理装置配列はメモリアドレスが多重化装置に流される前にアドレスをこのレジスタ又はキャッシュにダンプすることが出来る。
この処理は図9に示すフローチャートで表され、これは座標軸の一つ、この場合X軸に対する処理を示すだけである。この処理の説明で示すように、三つ全ての軸において後続の点において計算されたメモリアドレスは合計されて最終グローバルメモリアドレスを作成する。
論理平面パッチ上の一番目の点の座標、xInit、yInit及びzInitは既知であり、初期化中に記憶される。図9に示す処理はデータ点の新しい行を計算すべきかどうかの決定を必要とするステップ50で始まる。YESならパッチインデックス論理ユニットがxRowレジスタ内の値にRowIncrを加算し、新しい値がxRowレジスタに記憶される。これはステップ52、54及び56のシーケンスにより表される。50での決定が、論理平面上の新しい行が開始されていないということであったなら、処理はステップ58に直接飛び、その場合、ステップ58と60で示すxColIncrを加算することによりxColレジスタ値が修正される。
実際には、論理平面上の点は行ごとに計算されるので、最も増加される回数の多いのは列増分ベクトルxColIncrである。XRowIncrは論理平面パッチ上の各新しい行の開始においてxRowレジスタ値に加算されるだけである。
各データ点に対してxRowレジスタ値とxColレジスタ値がステップ60において合算されてMemoryAddress(MA)を形成する。MAはステップ62において捨てられる端数部である。
次に、ステップ64においてMAの残りの整数部がWrapLimit(WL)と比較される。この比較ステップには三つの結果がある、即ち、MAが0より小さいか、MAがWLより大きいか、あるいは0<MA<WL。それぞれの三つの結果は66、68及び70と付番される。
66が当てはまる場合、ルータは現在のSDSより小さいアクセス可能なメモリアドレス範囲を持つ隣接するSDSにローカルなPDSにルーティングするように設定される(これは72で示される)。68が当てはまる場合、ルータは現在のSDSより大きいアクセス可能なメモリアドレス範囲を持つ隣接するSDSにルーティングするように設定される(74で示すように)。図6aと6bから分かるように、ルータが隣接するルータを介して隣接するPDSにデータをルーティングするように設定されるときに、ルータはそれと同時に他の隣接するルータから戻されたローカルPDSデータの中に受けられるようにセットアップする。
条件0<M<WLが当てはまる(ステップ70)ためにルータが全く作動されない場合、ルータは76においてパスモードに設定され、MAが88において加算ステップに直接送られる。
72と74に戻って言及すれば、72の後に、MA(これもやはりグローバルMAである)はWLに加算されて修正されたローカルMA78を作成し、74の後に、WLがグローバルMAから減算されて修正されたローカルMA80を作成する。
78又は80から続くMAはHardBoundチェックステップ82を通り、HBoundL≧MA≧HBoundHが当てはまれば修正されたローカルMAは境界の外側にある(ステップ84)。他の場合は全て、86が当てはまると見なされ、MAが88まで行き、対応するY軸及びZ軸論理ユニットにより発生されたMemoryAddressに加算される。
88の後に、ステップ90においてAddressBase(AB)がメモリに加算され、その後、ルータがパスするように設定されているかどうかをチェックステップ92が判断する。ルータがパスするように設定されていたら、MAはローカルSDSに送られてステップ96においてルータを介してデータを戻す(この場合データをローカルPDSに戻す)。
ルータがパスするように設定されていなかったら、94においてハンドシェークステップが作動され、各SDMCは隣接するSDMCの準備が出来かつ個々のルータを介するSDMC間のデータ転送に対して同期されるまで待つ。このハンドシェークステップは以下にもっと詳細に述べる。
ハンドシェークステップが一旦完了したら、MAはローカルSDSに送られてステップ96においてルータを介してデータを戻し、この場合データは隣接するローカルPDSに戻される。
98においてデータがPDSにより受け取られた後、パッチの最後に達するか、転送長さを越える(この場合SDMCは待機状態に入る)かしない限りステップ50において処理が再開される。
上記のハンドシェークステップは全てのSDMCが同期してそれらの間でデータを転送することを保証することになっている。前に述べたように、SIMDシナリオにおいてこの方法は始めて動作する。そのローカルSDSから隣接するPDSへのデータの転送が必要であることを理解したら、各SDMCは、データのルーティング先である隣接するSDMCに通知信号を送る。隣接するSDMCは適当な時点で通知信号を検出し、受領確認信号を返す。それと同時に、他の隣接するSDMCは第一のSDMCに通知信号を送り、受領確認信号を受け取るのを待っている。こうして、第一のSDMCが受領確認を受け取り、受領確認信号を送るや否や、それは、次のクロックサイクルにおいてSDMC間データ転送を開始する準備が出来たことを知る。
そのクロックサイクルの間、配列内の全てのSDMCはおとなしくしており、SDMC間データ転送の開始を準備及び待機をしている。もちろん、ハンドシェーク処理を完了するためにかかる時間は配列に採用されたSDMCの数と共に増加し、SDMCが多すぎて一つのクロックサイクルのスペースでハンドシェークを完了出来ない場合、制御用CPUはこのことについて通知され、SDMC間のデータ転送をさせる前に全てのSDMCに対してハンドシェークを完了するために必要な数のクロックサイクルが経過するようにする。
配列の端にあるSDMCに対して両端のSDMC間のハンドシェークをイネーブルするリンクがあり、それにより、事実上、ハンドシェークステップに関して最初及び最後のSDMCを持つラインとは反対のSDMCの円がある。
本発明の更なる実施例において、SDMC18が、関連する並列処理装置に接続される以外は、ハードウェア構成は第二の実施例に類似している。第三の実施例の処理システムの動作は図10に示すフローチャートにより表される。CPUによる初期化において、CPUはそれぞれステップ100と102で示す初期命令を用いてSDMC18及び関連する処理装置の両方を設定する。SDMC18は一連のメモリアドレスの転送と、これらのメモリアドレス計算の実行に必要なパラメータとを用いて設定される(ステップ100)。ステップ102において、関連する処理装置は処理装置機能列(従来の処理装置言語シナリオにける手順又は機能の呼び出しに類似している)を用いて設定される。初期化段階が完了したら、ステップ104においてCPUが開始信号を送り、ステップ106においてSDMC18が列を成すメモリアドレスの処理を開始し、各メモリアドレスをローカルSDSに出力し、108において、要求されたデータがPDSにあることを関連する処理装置に通知する。処理装置がPDS内のデータを処理した後に、処理済みデータを再びPDSに戻し(ステップ110)、112において、処理済みデータがPDSに存在し、SDMCがそれを他の場所に移動する準備が出来ていることをSDMCに通知する。この場合、ステップ114においてSDMCはデータをSDSに戻す。
各データパッチが処理された後に、116において、処理装置はSDMCとハンドシェークし、実行すべき命令が残っているかどうかを問い合わせる。もしそうであれば、処理は106に戻って処理サイクルを続ける。SDMCが処理すべき更なる命令がなくなれば、118において、それが次の命令バッチを受ける準備が出来ているという状態フラッグを設定する。明らかなように、このセットアップには固有の拡張性が組み込まれている。
説明しない他のシナリオは、関連する処理装置がデータを処理し、データをSDMCに対するPDSにダンプして、SDMCがデータを処理する必要が全くなしに別のデータ記憶装置に移動し、それを先ずPDSに移動するというものを含む。代わりのシナリオはSDMがPDSからデータを移動することを必要とせずに、データを処理しまたそれをPDSに移動することのみを必要とする。
処理装置、特に並列処理装置に密接に関連付けられたSDMC18の説明したシナリオにおいて、本発明の更なる恩恵が得られる。必要なデータが処理装置のレジスタに必要な時にロードする準備が出来ていることは並列処理装置とって重要であり、SDMC18を採用してデータをレジスタに接続されたPDSに移動することにより、データがPDSにおいて利用可能になるのを待たなくても、PDSに十分なデータがあって処理装置が全速力で動作出来るようにする。
上記のパラメータは、説明したアルゴリズムを実行するためにSDMC18の中にハードウェアで作成される。本実施例において、このSDMC18の応用は特に2−D及び3−D画像の処理に適用可能である。もちろん、他で述べたSDMC18の別の応用にもっと適した他のアルゴリズムは異なったハードウェア作成のパラメータを利用してもよい。データセットに与えられるベクトル命令セットを必要とするどのような大きなデータセットも、データセットを一連の小さな断片に分解し、各データ断片を個々のSDMC18(及び関連するSDS)に割り当て、初期化パラメータを用いて各SDMC18を設定することによりこの発明に特に適用可能であることは以上の説明から明らかである。
本発明の特に好ましい実施例を説明したが、問題の実施例は例示に過ぎず、添付された特許請求項に記載された発明の精神と範囲から逸脱することなく、適当な知識と技能を有するものが思いつくような変形と修正を成し得ることは言うまでもない。例えば本発明はSIMD技術に限定されず、如何なるデータ並列処理技術にも適用出来る。
図1は、先行技術のDMAの例を示す模式的ブロックダイヤグラムである。 図2は、発明の第一の実施例による処理システムを示す模式的ブロックダイヤグラムである。 図3は、z軸に直交するボクセルデータの任意の矩形パッチの代表であり、図2の処理システムに使用される異なる初期化パラメータを図解する。 図4は、MPEGプログラム計算を決定する現行実施例の具現化候補の例を示す。 図5は、主データ記憶装置とルータを有する「補助データ移動コントローラ(SDMS)」を備える本発明の第二の実施例を示す模式的ブロックダイヤグラムである。 図6a〜図6dは、図5におけるルータのルータコンフィギュレーション候補を示す模式図である。 図7は、第二の実施例のSDMC制御と状態レジスタを示す表である。 図8は、図5のSDMCの詳細なアーキテクチャを示す。 図9は、図8に示すアーキテクチャに利用されるデータパスのフローチャートである。 図10は、関連する処理装置を有するSDMCを備える本発明の代わりの実施例において使用される処理のフローチャートである。

Claims (10)

  1. 論理空間内の連続点を表す不連続メモリアドレスのストリームを発生する方法であって、
    論理空間内の連続点を記述する初期化パラメータを発生するステップと、
    前記初期化パラメータを用いてメモリアドレスエンジンをコンフィギュレーションするステップと、
    複数の不連続メモリアドレスを作成するために前記初期化パラメータに従って前記メモリアドレスエンジンにおいてアルゴリズムを実行するステップと、
    データメモリへ出力するために前記不連続メモリアドレスをメモリアドレスのストリームに組み換えるステップと
    を含み、
    前記初期化パラメータ発生ステップがデータのボリュームを通るある角度で取られたデータの論理平面の観察を可能にし、
    前記初期化パラメータ発生ステップがデータの論理平面の一部の観察を可能にし、
    前記アルゴリズムを実行するステップが、論理空間の論理平面内の行上の各データ点に対してメモリアドレスを漸進的に計算するステップと、論理平面内の行の数だけ前記計算を繰り返すステップとを含み、また、
    前記初期化パラメータ発生ステップが、論理平面内の初期データ点に関連付けられた初期化パラメータと、論理平面の列及び行のそれぞれに対する単位増分と、論理平面内の必要なデータに対する列及び行の限界とを発生するステップとを含み、
    前記メモリアドレスエンジンをコンフィギュレーションするステップが、論理平面内の初期データ点の座標を指定するステップと、論理平面の各列における単位増分に対する列ベクトルを指定するステップと、論理平面の各行における単位増分に対する行ベクトルを指定するステップと、論理平面内の必要なデータに対する列限界(ColLimitL、ColLimitH)と行限界(RowLimitL、RowLimitH)を指定するステップを含み、
    複数のメモリアドレスエンジンがあり、前記コンフィギュレーションするステップが前記発生された初期化パラメータを用いて少なくとも一つの更なるメモリアドレスエンジンをコンフィギュレーションするステップを更に含み、前記実行するステップが前記複数の不連続メモリアドレスを作成するために前記少なくとも一つの更なるメモリアドレスエンジンのそれぞれにおいて実行され、
    前記実行ステップが、発生されたメモリアドレスが隣接するメモリアドレスエンジンにアクセス可能であるかどうかを決定するステップを組み入れ、
    前記実行ステップが隣接するメモリアドレスエンジンのためにメモリアドレスを計算するステップを更に含み、
    あたかも隣接するメモリアドレスエンジンの個々のメモリ記憶装置から戻されたかのように個々のメモリアドレスエンジンに関連付けられたメモリ記憶装置から戻されたデータをルーティングするステップを更に含み、
    メモリアドレスエンジンのデータ転送をその隣接するメモリアドレスエンジンのそれと同期させるステップを更に含む、
    ことを特徴とするメモリアドレス発生方法。
  2. 前記論理平面上の初期データ点の座標を指定するステップがデカルト座標(xInit,yInit,zInit)を用いて実行され、また
    前記列ベクトルと行ベクトルを指定するステップがデカルト座標(ColIncr(x,y,z),RowIncr(x,y,z))を用いて実行されることを特徴とする特許請求の範囲第1項に記載の方法。
  3. 前記実行するステップが、発生されたメモリアドレスが前記メモリアドレスエンジンにアクセス可能かどうかをチェックするステップを更に含み、
    前記実行するステップが、発生されたメモリアドレスを、前記メモリアドレスエンジンにアクセス可能なメモリアドレスの所定の範囲のアドレスと比較するステップを更に備え、また
    前記発生されたメモリアドレスが前記メモリアドレスエンジンにアクセス出来ない場合、無結果を返すステップを前記実行するステップが更に含むことを特徴とする請求項1又は2に記載の方法。
  4. 外部コントローラにより設定された論理空間内の連続点を記述する初期化パラメータを受けるようになっているメモリアドレスエンジンであって、
    前記初期化パラメータで実行される少なくとも一つのアルゴリズムに従って複数の不連続メモリアドレスを発生するようになっているアドレス発生器と、
    データメモリに出力するために不連続メモリアドレスを出力メモリアドレスのストリームに組み換えるようになっている組み換え手段とを備え、
    前記アルゴリズムが前記アドレス発生器の部分としてハードウェアで実行され、
    前記アドレス発生器が論理空間の論理平面内の行上の各データ点に対してメモリアドレスを漸進的に計算する手段と、論理平面内の行の数だけ前記計算を繰り返す手段とを備え、
    前記アドレス発生器が論理平面内の初期データ点を記述する受信された初期化パラメータである論理平面の各列における単位増分に対する列ベクトルと、論理平面の各行における単位増分に対する行ベクトルと、論理平面内の必要なデータに対する列及び行限界とを処理するようになっており、
    発生されたメモリアドレスが前記メモリアドレスエンジンにアクセス可能であるかどうかを決定するアクセス手段を更に備え、
    前記アクセス手段が、発生されたメモリアドレスが隣接するメモリアドレスエンジンにアクセス可能かどうかを決定するようになっており、
    前記アクセス手段が隣接するメモリアドレスエンジンのためにメモリアドレスを計算するようになっており、
    前記アドレス発生器が、一つ以上の関連ストリング処理装置を備える連想処理装置配列を備える、
    ことを特徴とするメモリアドレスエンジン。
  5. 前記アドレス発生器がデカルト座標において指定された少なくともいくつかの初期化パラメータを処理するようになっていることを特徴とする請求項4に記載のメモリアドレスエンジン。
  6. 前記アクセス手段が発生されたメモリアドレスを、前記メモリアドレスエンジンにアクセス可能なメモリアドレスの所定の範囲のそれと比較するようになっており、
    前記発生されたメモリアドレスが前記メモリアドレスエンジンにアクセス不可能であった場合、前記アクセス手段が無結果を返すようになっていることを特徴とする請求項4または請求項5に記載のメモリアドレスエンジン。
  7. メモリアドレス処理システムであって、
    メモリアドレス発生の指示を行う少なくとも第一及び第二のメモリアドレスエンジンと、
    前記個々のメモリアドレスエンジンに関連付けられた第一及び第二の主データ記憶装置と、
    前記個々のメモリアドレスエンジンに関連付けられた第一及び第二の補助データ記憶装置と、
    各メモリアドレスエンジンと、主データ記憶装置と、補助データ記憶装置との間に接続された第一及び第二のデータ転送パイプラインと、
    各メモリアドレスエンジンをその関連する主データ記憶装置及び補助データ記憶装置に接続するデータバスと、
    各データ転送パイプラインと各主データ記憶装置との間に接続されたデータルータであって、各メモリアドレスエンジンからの命令により第一及び第二の補助データ記憶装置のいずれかから第一及び第二の主データ記憶装置のいずれかへのデータの流れをルーティングするデータルータと、
    を備え、
    前記データルータは、各データ転送パイプラインと各主データ記憶装置に直接接続され且つ各メモリアドレスエンジンに関連付けられた補助データ転送ルータと、補助データ転送ルータから分岐した状態で当該補助データ転送ルータに接続された複数の隣接補助データ転送ルータとから成り、前記第一のメモリアドレスエンジンに関連付けられた前記補助データ転送ルータが命令により前記第一のメモリアドレスエンジンの前記第一の補助データ記憶装置から前記第二のメモリアドレスエンジンの第二の主データ記憶装置にデータをルーティングし、
    前記少なくとも第一と第二のメモリアドレスエンジンは、
    外部コントローラにより設定された論理空間内の連続点を記述する初期化パラメータを受けるようになっているメモリアドレスエンジンであって、
    前記初期化パラメータで実行される少なくとも一つのアルゴリズムに従って複数の不連続メモリアドレスを発生するようになっているアドレス発生器と、
    データメモリに出力するために不連続メモリアドレスを出力メモリアドレスのストリームに組み換えるようになっている組み換え手段とを備え、
    前記アルゴリズムが前記アドレス発生器の部分としてハードウェアで実行され、
    前記アドレス発生器が論理空間の論理平面内の行上の各データ点に対してメモリアドレスを漸進的に計算する手段と、論理平面内の行の数だけ前記計算を繰り返す手段とを備え、
    前記アドレス発生器が論理平面内の初期データ点を記述する受信された初期化パラメータである論理平面の各列における単位増分に対する列ベクトルと、論理平面の各行における単位増分に対する行ベクトルと、論理平面内の必要なデータに対する列及び行限界とを処理するようになっているメモリアドレスエンジンを備えることを特徴とするメモリアドレス処理システム。
  8. 前記第一のメモリアドレスエンジンに関連付けられた前記データルータに対する前記命令が前記第一のメモリアドレスエンジンから送られることを特徴とする請求項7に記載のメモリアドレス処理システム。
  9. 複数のメモリアドレスエンジンを備える請求項7又は請求項8に記載のメモリアドレス処理システムと共に使用するルータであって、第一のメモリアドレスエンジンからの命令により前記第一のメモリアドレスエンジンに関連付けられたメモリ記憶装置から第二のメモリアドレスエンジンに関連付けられたメモリ記憶装置にデータを向けるようになっているルータ。
  10. 前記第一と第二のメモリアドレスエンジンが隣接するメモリアドレスエンジンとして一緒に論理的に接続され、また
    前記第一のメモリエンジンに関連付けられた前記メモリ記憶装置からのメモリデータのみが第二のメモリアドレスエンジンに関連付けられた前記メモリ記憶装置に向けられることを特徴とする請求項9に記載のルータ。
JP2003555354A 2001-12-20 2002-12-20 メモリアドレス技術に関する改良 Expired - Fee Related JP4531398B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0130534.1A GB0130534D0 (en) 2001-12-20 2001-12-20 Improvements relating to data transfer addressing
PCT/GB2002/005852 WO2003054707A2 (en) 2001-12-20 2002-12-20 Method and apparatus to generate a stream of non-contiguous memory addresses

Publications (2)

Publication Number Publication Date
JP2005514677A JP2005514677A (ja) 2005-05-19
JP4531398B2 true JP4531398B2 (ja) 2010-08-25

Family

ID=9928073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003555354A Expired - Fee Related JP4531398B2 (ja) 2001-12-20 2002-12-20 メモリアドレス技術に関する改良

Country Status (6)

Country Link
US (1) US7750916B2 (ja)
EP (1) EP1456749B1 (ja)
JP (1) JP4531398B2 (ja)
AU (1) AU2002353202A1 (ja)
GB (1) GB0130534D0 (ja)
WO (1) WO2003054707A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200518070A (en) 2003-10-10 2005-06-01 Matsushita Electric Ind Co Ltd Recording medium, reproduction device, program, and reproduction method
JP4433311B2 (ja) 2005-09-12 2010-03-17 ソニー株式会社 半導体記憶装置、電子機器及びモード設定方法
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8141163B2 (en) * 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
US20100180100A1 (en) * 2009-01-13 2010-07-15 Mavrix Technology, Inc. Matrix microprocessor and method of operation
US8451271B2 (en) * 2009-01-22 2013-05-28 Oracle International Corporation Methods and systems for displaying graphical markers in a mixed box chart
US8810573B2 (en) * 2009-01-22 2014-08-19 Oracle International Corporation Method and systems for displaying graphical markers in a discrete box chart
US9519947B2 (en) * 2009-09-25 2016-12-13 Nvidia Corporation Architecture and instructions for accessing multi-dimensional formatted surface memory
US11113062B2 (en) 2013-07-15 2021-09-07 Texas Instruments Incorporated Inserting predefined pad values into a stream of vectors
KR20160071774A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체
GB2536211B (en) * 2015-03-04 2021-06-16 Advanced Risc Mach Ltd An apparatus and method for executing a plurality of threads
RU2666334C2 (ru) * 2015-06-30 2018-09-06 Общество С Ограниченной Ответственностью "Яндекс" Способ обработки данных
CN113853591A (zh) * 2019-05-23 2021-12-28 德州仪器公司 将预定义填补值插入到向量流中
CN112168140B (zh) * 2019-07-05 2021-07-13 山东大学齐鲁医院 基于人工智能芯片的穿戴式生物信息监测设备及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4855903A (en) * 1984-12-20 1989-08-08 State University Of New York Topologically-distributed-memory multiprocessor computer
AU582632B2 (en) 1985-04-05 1989-04-06 Raytheon Company Method and apparatus for addressing a memory by array transformations
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
EP0408810B1 (en) * 1989-07-20 1996-03-20 Kabushiki Kaisha Toshiba Multi processor computer system
JPH0455986A (ja) 1990-06-26 1992-02-24 Toshiba Corp 画像処理装置
US5241625A (en) * 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
KR100319770B1 (ko) * 1991-08-13 2002-01-16 마거리트 와그너-달 영상화 및 그래픽 처리 시스템내에서의 다차원 주소발생방법
US5900878A (en) 1994-01-18 1999-05-04 Hitachi Medical Corporation Method of constructing pseudo-three-dimensional image for obtaining central projection image through determining view point position by using parallel projection image and apparatus for displaying projection image
JP3597917B2 (ja) 1995-09-08 2004-12-08 株式会社日立メディコ 擬似三次元画像構成法並びに投影画像表示装置
US5634043A (en) 1994-08-25 1997-05-27 Intel Corporation Microprocessor point-to-point communication
US5628026A (en) 1994-12-05 1997-05-06 Motorola, Inc. Multi-dimensional data transfer in a data processing system and method therefor
JP3664336B2 (ja) 1996-06-25 2005-06-22 株式会社日立メディコ 三次元画像構成法における視点位置及び視線方向の設定方法及び装置
US6282625B1 (en) * 1997-06-25 2001-08-28 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6438675B1 (en) * 1998-03-23 2002-08-20 Ati Technologies, Inc. Variable format memory access device
GB0028354D0 (en) 2000-11-21 2001-01-03 Aspex Technology Ltd Improvements relating to memory addressing

Also Published As

Publication number Publication date
AU2002353202A8 (en) 2003-07-09
EP1456749A2 (en) 2004-09-15
US7750916B2 (en) 2010-07-06
EP1456749B1 (en) 2013-11-13
WO2003054707A2 (en) 2003-07-03
GB0130534D0 (en) 2002-02-06
AU2002353202A1 (en) 2003-07-09
WO2003054707A3 (en) 2003-12-31
JP2005514677A (ja) 2005-05-19
US20050206649A1 (en) 2005-09-22

Similar Documents

Publication Publication Date Title
JP4531398B2 (ja) メモリアドレス技術に関する改良
JP7358382B2 (ja) 演算を加速するための加速器及びシステム
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
US6530010B1 (en) Multiplexer reconfigurable image processing peripheral having for loop control
US7447873B1 (en) Multithreaded SIMD parallel processor with loading of groups of threads
KR101270925B1 (ko) 신호 처리 장치
US6260088B1 (en) Single integrated circuit embodying a risc processor and a digital signal processor
CN114503072A (zh) 用于向量中的区的排序的方法及设备
KR101107394B1 (ko) 명령어 차단 시퀀서 로직을 갖는 다중 실행 유닛 처리 유닛
US5437045A (en) Parallel processing with subsampling/spreading circuitry and data transfer circuitry to and from any processing unit
US8254728B2 (en) Method and apparatus for two dimensional image processing
EP1927949A1 (en) Array of processing elements with local registers
AU747283B2 (en) Data processing system for logically adjacent data samples such as image data in a machine vision system
US5736988A (en) Apparatus and method for accelerated tiled data retrieval
JP2014501007A (ja) 汎用レジスタファイルからsimdレジスタファイルへデータを移動させるための方法及び装置
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
KR20120099075A (ko) 픽셀 레이트에서의 이미지 처리를 위한 방법 및 장치
TW202247043A (zh) 在卷積網路—填磚組態中之無損填磚
WO1999063751A1 (en) Low-power parallel processor and imager integrated circuit
CN114830082A (zh) 从多个寄存器中选择的simd操作数排列
JP7136343B2 (ja) データ処理システム、方法、およびプログラム
WO2020237231A1 (en) Inserting predefined pad values into a stream of vectors
EP1927950A1 (en) Array of processing elements with local registers
JP2001084242A (ja) 可変演算プロセッサ
Stechele et al. A coprocessor for accelerating visual information processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090402

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090703

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100302

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100325

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100525

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100609

R150 Certificate of patent or registration of utility model

Ref document number: 4531398

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees