JP2010505158A - 複数のメモリーバンクを有するデータ処理 - Google Patents
複数のメモリーバンクを有するデータ処理 Download PDFInfo
- Publication number
- JP2010505158A JP2010505158A JP2009528858A JP2009528858A JP2010505158A JP 2010505158 A JP2010505158 A JP 2010505158A JP 2009528858 A JP2009528858 A JP 2009528858A JP 2009528858 A JP2009528858 A JP 2009528858A JP 2010505158 A JP2010505158 A JP 2010505158A
- Authority
- JP
- Japan
- Prior art keywords
- plane
- memory
- block
- circuit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 222
- 238000012545 processing Methods 0.000 title claims abstract description 35
- 238000006243 chemical reaction Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 4
- 238000013519 translation Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 230000003936 working memory Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000006880 cross-coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
Abstract
データ処理回路は、命令実行回路14および複数のメモリーバンクを備える。命令実行回路14は、データ値のブロック(例えば、二次元の画素ブロックに対する画素値)を並列に処理できる。このデータ値は、メモリーバンクに記憶され(好ましくは、キャッシュされ)、そして並列に供給される。複数の変換回路22が、命令実行回路のブロックアドレス指定出力と、メモリーバンクのアドレス入力との間に結合される。この変換回路は、異なるメモリーバンクから、並列に、複数のブロックのアドレス指定を可能にする。データは、選択されたメモリーバンクから実行回路に、ルーティング回路によってルーティングされる。一実施例では、各変換回路は、バンクのすべてのメモリーをアドレス指定できる。別の実施例では、変換回路は、画素画像のデータをメモリーバンク全体に分配する複数の方法を、例えば、小さなブロックでアクセスされるデータには、少ないバンクのみを使用し、そして高い並列処理でアクセスされるデータには、より多くのバンクを使用して、サポートする。
Description
本発明は、多次元配列データを処理するための処理回路および方法に関する。
国際出願公開WO2005/104027は、画素位置のブロックに対する画素値への並列アクセスをサポートするメモリーを有する画像処理回路を開示する。周知のように、ビデオ画像は、それぞれが対応する画素値を有する、例えば、およそ1000×500画素位置の二次元配列を使用して、表すことができる。このような画像では、処理の目的で、例えば、32×32位置の小さなウィンドウからの画素値が、高速メモリーに記憶される。公知の処理回路は、このようなウィンドウ内の、例えば、4×4画素の小さなブロックの画素に対する画素値への並列アクセスを提供する。
この形式の並列アクセスを提供するため、この高速メモリーは、集合で組織される複数の並列アクセス可能なメモリーバンクを有する作業メモリーを備える。ウィンドウからの画素位置のラインに沿った連続する位置に対する画像値は、メモリーバンク全体に広がって記憶され、通常は、異なるバンクの同じアドレスであり、かつ連続するアドレスにラップアラウンドしている。次のラインのそれぞれは、先行するラインの終わりに続いて記憶され、オプションとして、現在のウィンドウの次の領域に対する画素値を先取りするため、連続するラインの間にいくらかのメモリー空間を有する。
ブロックは、記憶されたウィンドウの画素位置の部分集合を収容する。ブロックが、作業メモリーにおいてアドレス指定される場合、このブロックの左上隅の座標が、指示される。この情報から、処理回路は、ラインの開始ポイントにある画素位置に対する画素値を収容するバンク、およびそのバンクでのそれらのアドレスを識別する。処理回路は、これらのバンクおよび後続のバンクからの画素値を、ブロックの座標に関連する特定位置からの画素値を必要とする計算回路のそれぞれの入力にルーティングする。
作業メモリーへのこの形式のアクセスの制御は、ブロックの左上隅の座標に加えて、ウィンドウの画素値の記憶方法を説明する情報を必要とし、この情報は、ウィンドウの左上隅に対する画素値が記憶される開始バンク、そのバンクにおけるこの画素値のアドレス、ウィンドウの記憶されたラインの長さ、ラインがラップアラウンドする前のバンク数などに関する。
ブロックからの画素値で実行される典型的な演算は、例えば、動きベクトル推定、DCT(離散コサイン変換)計算などの一部としてのブロックマッチングを含む。これらの演算には、異なる画像から取得される複数のブロックが関与するものがある。このような複数アクセスをサポートするため、上記タイプの作業メモリーを、複数設けてもよい。しかしながら、これには、相当な量の回路領域が必要となる。
本発明の目的の一つは、複数の異なるウィンドウにアクセスしなければならない場合に必要とされるオーバーヘッドを少なくする多次元配列データの処理、を提供することである。本発明は、独立請求項によって定義される。従属請求項は、有利な実施例を定義する。
本発明によるデータ処理回路は、画素位置のブロックに対する画素値といった、領域のまとまりに対するデータ値にアクセスする命令を並列に実行するための命令実行回路および複数のメモリーバンクを備える。実行される命令は、プレーンおよびそのプレーンでの領域のまとまりを複数選択する指示を定義する。これらの選択を、メモリーバンクおよびそのメモリーバンクでのアドレスの選択に同時変換するため、複数の変換回路が、設けられる。したがって、命令は、同時に複数のブロックをアドレス指定するように実行できる。
都合のよいことに、ルーティング回路は、命令実行回路の任意のブロックデータポートと、任意のメモリーバンクまたは任意のメモリーバンク集合との間で、アドレス指定ブロックに対するデータ値のルーティングを提供する。したがって、命令の異なる関数に対してブロックをアドレス指定する異なるブロックデータポートは、すべてのメモリーバンクまたはメモリーバンク集合へのアクセスを共有できるので、命令実行回路の異なるブロックポートが、異なる時間に同じウィンドウをアドレス指定しなければならない場合、あるバンクから別のバンクにコピーする必要がない。
一実施例では、プレーン選択の指示は、ブロックに対するデータ値を配置できる可変数のメモリーバンクを定義してもよい。したがって、例えば、1つまたは複数の第1ブロックに対するデータを、1つのメモリーバンク集合上に分配して配置してもよく、そして1つまたは複数の第2ブロックに対するデータを、2つのメモリーバンク集合上に分配して配置してもよい。オプションとして、1つまたは複数の第3ブロックに対するデータを、4つのメモリーバンク集合上に分配して配置してもよい。この命令は、どのメモリーバンクをいくつ使用するかを定義する。定義されたバンク数に応じて、多いまたは少ないバンク数を使用して、命令実行回路により、領域のまとまりに対するデータ値にアクセスしてもよい。したがって、ブロックへの異なる形式の並列アクセスは、互いに混在してサポートできる。
一実施例では、プレーン情報ルックアップメモリーが、それぞれのプレーンに対するプレーン情報を同時記憶するために、設けられる。プレーン情報は、実行される命令によって提供されるプレーンの識別を使用してアクセスされる。各プレーンに対するプレーン情報は、そのプレーンに対するデータ値を記憶するために使用するメモリーバンクを指示する情報を備える。
一実施例では、各変換回路は、それぞれの集合におけるメモリーバンクのアドレス指定を制御するため、それぞれのメモリーバンク集合に結合される。さらなるルーティング回路が、設けられて、領域のまとまりの選択指示を、選択されたプレーンの制御下で、変換回路のそれぞれのものにルーティングする。したがって、変換回路とメモリーバンク集合との間に、さらなる回路は、必要ない。
さらなる実施例では、さらなるルーティング回路は、領域のまとまりの選択指示を、ブロックアドレス指定出力の少なくとも1つから、複数の変換回路に、ルーティングするように構成される。これは、ブロックに対するデータ値が配置できる可変数のメモリーバンクの使用をサポートする。
一実施例では、これらの命令は、アドレス指定される領域のまとまりのサイズおよび/または形状を定義する。各ブロックは、例えば、二次元配列においてN×M形状の位置でもよく、整数N、M値の異なる組み合わせに応じて、異なる形状を有する。この場合、NとMとの積が、サイズである。変換回路は、指示されたサイズおよび/または形状に応じて変換を実行する。
これらおよびその他の目的ならびに利点は、以下の図を使用して、代表的な実施例を説明することにより、明らかとなるであろう。
図1は、バンク型メモリー回路10、ベクトルアクセスユニット12、複数の機能ユニット14、命令制御回路16、メモリーアクセスユニット18およびメインメモリー19を備える処理回路を示す。命令制御回路16は、実行すべき演算を選択するため、機能ユニット14に結合される出力、これらの演算に関与するデータのメモリー位置を選択するため、ベクトルアクセスユニット12に結合される出力、およびメインメモリーとバンク型メモリー回路との間の転送を制御するため、メモリーアクセスユニット18に結合される出力を有する。機能ユニット14は、これらの演算に関与するオペランドデータを受信するため、ベクトルアクセスユニット12の複数のポートに結合され、そしてオプションとして、結果データをライトバックするためのポートに結合される。ベクトルアクセスユニット12は、データにアクセスするため、バンク型メモリー回路10に結合される。メモリーアクセスユニット18は、バンク型メモリー回路10とメインメモリー19との間に結合される。一実施例では、複数の機能ユニットの代わりに、単一の機能ユニットを、使用してもよい。
図2は、ベクトルアクセスユニット12およびバンク型メモリー回路10を、より詳細に示す。バンク型メモリー回路10は、メモリーバンク26の集合20を複数と、集合20のそれぞれのものに対するアドレス計算回路22と、制御回路24と、を備える。集合あたり4つのメモリーバンクが、説明のために示される。実際には、異なる数の集合および/または集合あたり異なる数のメモリーバンクを、使用してもよい。
バンク型メモリー回路10は、メインメモリー19におけるデータ値の部分コピーを記憶するために使用される。メインメモリー19のデータは、位置の配列(通常は、二次元以上の配列)におけるそれぞれの位置に対するデータ値を表す。バンク型メモリー回路10は、すべての位置についてではなく、このような配列における位置のウィンドウについて、これらのデータ値を記憶する。バンク型メモリー回路10は、ウィンドウ内の選択可能な領域のまとまりに対するデータ値への並列アクセスを提供する。通常、これらブロックのサイズは、ウィンドウのサイズよりも小さい。
演算中には、ウィンドウが移動されるので、バンク型メモリー回路10は、配列における異なる位置のウィンドウに対するデータ値を進行的に記憶する。ウィンドウの移動を実現するためのデータ移動量を最小とするため、古いウィンドウと新しいウィンドウとの両方に属する位置に対するデータ値は、メモリーバンクにおいて同じ位置のままである。この結果、ウィンドウの進行的な移動により、ウィンドウでの位置と、バンク型メモリー回路10でのメモリー位置との間の関係が、進行的に変化することになる。
命令制御回路16は、プログラムメモリー、プログラムメモリーでの連続する命令をアドレス指定するシーケンサー、および個々のオペランドを記憶するためのレジスターファイルを備えてもよい。アドレス指定される命令は、演算選択コード、および異なる機能ユニットに対する複数の演算のためのオペランドおよび結果レジスターアドレス選択コードを含むVLIWタイプの命令でもよい。あるいは、単一の機能ユニットに対する単一演算命令を、単一の演算選択コード、ならびに選択された演算に対するオペランド選択コードおよび結果レジスターアドレスとともに、使用してもよい。一実施例では、オペランド選択コードが、レジスターをアドレス指定し、そしてアドレス指定されるレジスターの出力を、ベクトルアクセスユニット12に結合して、ブロック選択を制御してもよい。あるいは、命令それ自体からのオペランド選択コードを、ベクトルアクセスユニット12に結合してもよいし、または命令からのコードと、その命令によってアドレス指定されるレジスターとの組み合わせを、使用してもよい。
この回路は、二次元以上の位置配列のデータを使用する任意の種類の処理に適用可能であるが、この回路は、二次元配列が関与する画像処理演算に関して説明される。これは、例えば、ビデオ圧縮または解凍といったビデオ画像処理に適用できる。本明細書に使用される図では、多くの並列信号線が、単線で描かれていることを理解すべきである。さらに、好ましくは、広範囲なパイプライン処理を使用してもよく、すなわち、説明される演算の異なる連続する段階を、異なる実行サイクルで実行してもよいし、一方で、後の演算の早い段階が、進行してもよいことを、理解すべきである。しかしながら、パイプライン処理については、この演算の理解には必要ないので、説明されない。
演算では、処理回路が、プログラム、例えば、画像処理のためのプログラム、の命令を処理する。メインメモリー19は、画像全体を表すデータを記憶する。画像は、画素位置の二次元配列およびこれらの画素位置すべてに対する画素値によって定義される。このプログラムは、画素位置のブロックに対する画素値に並列演算を適用する命令を収容する。このブロックは、画像全体よりも大幅に小さく、例えば、4×4位置または8×8位置のブロックである。並列演算を実行する命令は、ブロックをアドレス指定し、そして命令の実行には、バンク型メモリー回路10における並列でのそのブロックの画素位置に対する画素値のロードおよび/または記憶が関与してもよい。
バンク型メモリー回路10は、ブロック全体に対する画素値への並列アクセスを提供する。実際に、バンク型メモリー10は、ブロックよりも大きい画素位置ウィンドウに対する画素値を記憶する。メモリーアクセスユニット18は、メインメモリー19とバンク型メモリー10との間の画素値の転送を制御する。この目的のため、メモリーアクセスユニット18は、初期化コマンド、ウィンドウ移動コマンド、ロードコマンドおよび記憶コマンドを含む、命令実行の一部としての複数の異なるタイプのコマンドを実行するように構成してもよい。
初期化コマンドは、制御回路24にプレーンを定義する。この初期化コマンドは、plane_idを定義するパラメーター、このプレーンに対する画素値が記憶される1つまたは複数のメモリーバンク集合を選択するためのパラメーター、選択されたメモリーバンク集合(1つまたは複数)に画素値が同時記憶される画素位置のウィンドウ寸法を定義するパラメーター、現在のウィンドウに近接する画素位置の先取り領域の寸法を定義するパラメーター、およびこのプレーンに対する画素値が記憶されるメモリーバンクにおける開始アドレスを定義するパラメーター、を有してもよい。オプションとして、初期化コマンドは、画素位置の異なるラインに対して使用するため、選択されたメモリーバンク集合(1つまたは複数)内に部分集合を定義するパラメーターを有してもよい。オプションとして、このウィンドウの寸法および先取り領域は、標準ウィンドウサイズを参照して定義してもよい。
ウィンドウ移動コマンドが、実行される場合、制御回路24は、画像における現在のウィンドウの位置を変更する。これには、メモリーバンクにおけるウィンドウの開始アドレスを表すプレーン情報の更新が、関与する。さらに、実行により、次のウィンドウでの画素位置に対する画素値の先取り、および/またはストール(現在のウィンドウのすべての画素位置に対する画素値がロードされるまで)をトリガーしてもよい。ウィンドウ移動コマンドは、このコマンドを適用するplane_idを定義するパラメーター、スキャンモード選択パラメーター、およびオプションとして、関与するメモリーバンク集合を選択するための選択パラメーター、を有してもよい。
ロードおよび記憶コマンドは、実行される場合、画素位置のアドレス指定ブロックに対する画素値が、選択されたプレーンについてアクセスされる。これらのコマンドは、plane_idを選択するパラメーター、およびコマンドで関与するブロックをアドレス指定する座標を有してもよい。オプションとして、関与する1つまたは複数の集合を、選択してもよい。ロードまたは記憶コマンドの実行には、選択されたブロックのアドレスによって決定されるアドレスでの、プレーンを記憶する1つまたは複数のメモリーバンク集合、選択されたプレーンに対するメモリーバンクでの開始アドレス、および現在のウィンドウの開始アドレス、へのアクセスが、関与する。
命令制御回路16が、命令を処理して画素ブロックに演算を適用する場合、命令制御回路16は、選択情報を有するコマンドをベクトルアクセスユニット12に適用して、この命令に対するオペランドとして選択される1つまたは複数のブロックを指示する。これに応答して、ベクトルアクセスユニット12は、この選択された1つまたは複数のブロックに対する画素値を、並列に、機能ユニット14に供給する。命令制御回路16は、演算選択コードを機能ユニット14に適用して、画素値に適用される演算を制御する。
演算の典型的な例は、ブロック比較であり、ビデオ圧縮計算またはフレーム間圧縮演算の一部としての動きベクトル推定に使用できる。ブロック比較には、選択したブロックのペア(可能性としては、異なる画像)での、画素値の画素単位の減算が、関与する。このような演算の場合、異なるブロックにおける対応する位置の画素値が、機能ユニット14に一緒に供給されなければならない。
バンク型メモリー10は、複数のウィンドウに対する画素値を一緒にストレージでき、これにより、異なるウィンドウからの画素位置のブロックに対する画素値に、互いに混在してアクセスできる。典型的な例では、各ウィンドウは、異なる画像からの画素値を収容するか、または同一もしくは異なる画像からの異なる色プレーンに対する画素値を収容するが、もう一つの方法として、異なるウィンドウが、異なるウィンドウ位置における同一の画像および/または色プレーンからの画素値を収容してもよい。
図3は、バンク型メモリー10における複数のウィンドウのストレージの第1実施例の一例を線図的に説明する。長方形30は、それぞれのウィンドウに対する画素値30のストレージを記号化したものであり、それぞれが、集合での連続するアドレスに広がり、アドレス数が、その長方形の高さによって記号化されている。1つまたは複数のブロックにアクセスする命令が実行される場合、命令制御回路16は、そのウィンドウにおけるブロックのx, y座標および「plane_id」をベクトルアクセスユニット12に供給する。このplane_idは、アドレス指定されるウィンドウを識別する。このplane_idは、x, y座標と組み合わせられるプレーン情報を参照し、メモリーバンクにおける画素値のアドレスを計算する。この計算は、プレーンに対する画素値がメモリーバンクに記憶される方法に依存する。
ウィンドウに対する画素値は、本来的に公知の方法でメモリーバンク画素上に分配されて記憶されるので、ウィンドウの行に沿った画素位置のセグメントに対する画素値および連続する行のグループに対する画素値には、異なるメモリーバンクから並列にアクセスできる。すなわち、画素値は、バンクに分配して記憶されるので、同じブロックに属する画素値は、同じメモリーバンクの異なるアドレスには記憶されない。これは、本来的に公知である。
一実施例では、この分配には、十分な数のメモリーバンクの使用が関与し、こうすることで、ブロックの高さよりも小さく離れたブロックの異なる行を、異なるメモリーバンクに記憶できる。さらには、この実施例では、ブロック幅よりも小さく離れた行における異なる画素位置に対する画素値を記憶するために、互いに異なるメモリーバンクの使用が、関与する。また、一実施例では、近接する画素位置に対する複数の画素値は、オプションとして、同じアドレスのメモリーバンクに一緒に記憶できる。
最初に、ウィンドウの左上隅の画素位置に対する画素値は、プレーンにリザーブされるアドレス範囲の第1アドレスにある第1メモリーバンクに記憶される。しかし、このウィンドウが移動される場合、「新しい」ウィンドウの画素位置に対する画素値が、メモリーバンクの「古い」ウィンドウにある画素位置に対する画素値に連続的に置き換わる。こうすることで、数回の移動後には、プレーンにリザーブされたアドレス範囲の第1アドレスにある第1メモリーバンクは、現在のウィンドウの左上隅にある位置の画素値を、もはや記憶せず、その代わりに、このウィンドウ内の他の場所の画素位置に対する画素値を記憶することになる。
一実施例では、プレーン情報は、関連ウィンドウの画素値を記憶するために使用されるメモリーバンクにおけるアドレス範囲、記憶されたウィンドウの座標、およびウィンドウの左上隅の画素値が記憶される開始メモリーバンクアドレスを指示する。ウィンドウの保存に異なる方法が使用できる、さらなる実施例では、プレーン情報は、画素値がメモリーバンク上に分配される方法を指示する情報も収容する。
図4は、メモリーバンク集合にアクセスするための集合アクセス回路40を線図的に示す。複数のメモリーバンク集合が、使用される場合、このタイプの集合アクセス回路が、メモリーバンク集合のそれぞれに対して少なくとも1つずつとなるように、複数使用できる。集合アクセス回路40は、プレーン情報ルックアップメモリー42、アドレス変換回路44、およびルーティング回路として動作するデータクロスバースイッチ46を備える。
プレーン情報ルックアップメモリーについては、いくつもの別の実施例が、存在する。一実施例では、プレーン情報ルックアップメモリー42は、複数のレジスター集合を備え、各集合が、それぞれのplane_idに対するもので、異なるレジスターが、異なるプレーン特性を制御する。別のプレーン情報ルックアップメモリー42は、プレーン特性を制御するためのデータを収容する異なるメモリー位置を有するメモリー行列を備えてもよい。もう一つ別の方法として、命令によってアドレス指定されるレジスターファイルにおける汎用レジスターを使用して、プレーン情報を記憶および呼び出してもよい。この代替方法では、プレーン情報の呼び出しは、従来のレジスターアクセスとして実行される。
この回路は、プレーン情報ルックアップメモリー42と結合されるplane_id選択入力41を有する。プレーン情報ルックアップメモリー42は、アドレス変換回路44およびデータクロスバースイッチ46の制御入力に結合される出力を有する。アドレス変換回路44は、ブロック座標情報を受信するための入力43に結合される。アドレス変換回路44は、異なるメモリーバンク(図示せず)に結合されるアドレス出力44aを有する。データクロスバースイッチ46は、メモリーバンク(図示せず)のデータ出力に結合される入力および画素値を並列に機能ユニット(図示せず)に供給する出力45を有する。データ出力45のみを有する実施例が、例として示されているが、もう一つの方法として、データ入力またはデータ入力/出力を設け、この回路をメモリーバンクのデータ入力またはデータ入力/出力に結合してもよいことを、理解すべきである。
演算では、命令制御回路16が、plane_idおよびブロック座標を集合アクセス回路40に供給する。これに応答して、集合アクセス回路40は、plane_idを使用して、プレーン情報ルックアップメモリー42からプレーン情報を呼び出す。アドレス変換回路44は、呼び出されたプレーン情報およびブロック座標を使用して、メモリーバンク(図示せず)にアクセスするためのアドレスを計算する。データクロスバースイッチ46は、呼び出されたプレーン情報および、オプションとして、ブロック座標を使用して、メモリーバンク(図示せず)のデータ接続および機能ユニット(図示せず)へのデータ接続の間の接続を制御する。
プレーン情報ルックアップメモリー42は、同じメモリーバンク集合における異なるウィンドウ(例えば、異なるウィンドウ30)に対する複数のplane_id値についてのプレーン情報を同時記憶するためのメモリー空間を有する。プレーン情報ルックアップメモリー42は、供給されたplane_idの値によって選択されるプレーンについてのプレーン情報を供給する。
第1実施例では、集合アクセス回路40は、異なるメモリーバンクから、一度にウィンドウの1行のみの画素位置、すなわち、N×1サイズのブロック(Nはブロック幅)、のセグメントに対する画素値への並列アクセスをサポートする。この目的に対するアドレス計算は、本来的に公知である。参照のための一例として、この実施例では、アドレス変換回路44は、ブロックの開始ポイント(例えば、左上隅)の画素値を記憶するメモリーバンクのインデックスをA0+x/K+w' *y mod Lから計算してもよい。ここで、A0は、現在のウィンドウ(プレーン情報で定義されるところの)の第1画素値を記憶するメモリーバンクのインデックスであり、xおよびyは、ブロックの開始ポイントのアドレスを形成し(ウィンドウの始まりに関連する座標)、Kは、各バンクに記憶される位置数であり、w'は、ウィンドウの連続するラインの開始バンク間の間隔(プレーン情報で定義されるところの)、そしてLは、ウィンドウに使用される(プレーン情報で定義されるところの)バンク数である。
開始ポイントの画素値を記憶するメモリーバンクの計算されたインデックスを使用して、そのインデックスを有するメモリーバンクからの画素値(1つまたは複数)を、開始ポイントに対する画素値が供給されるべきポート54の部分にルーティングできるように、データクロスバースイッチを制御する。
また、アドレス変換回路44は、ブロックの画素値が記憶されるメモリーバンクでのアドレスを計算してもよい。アドレス変換回路44は、開始ポイントに対するアドレスを、例えば、B0(ウィンドウの左上隅に対する画素値が記憶されるアドレスであり、プレーン情報で定義される)と、(x/K+w'*y-A0)/Lの整数部分との和から計算してもよい。アドレス変換回路44は、最初のバンクよりも小さなインデックスを有するバンクにおいてこのアドレスに1を足した画素値を計算してもよい。計算されたアドレスを使用して、メモリーバンクにおけるメモリー位置をアドレス指定する。
さらに複雑な第2の実施例では、集合アクセス回路40は、異なるメモリーバンクから、近接する複数の行における複数のセグメントでの画素位置に対する画素値への、すなわち、ブロック幅Nでブロック高さM(1より大きい)の画素位置を有するN×Mサイズのブロックへの、アクセスをサポートするように構成してもよい。理解されるように、これには、ブロックにおける異なるライン、および異なるメモリーバンクの異なる行における同じ列の画素位置に分配される画素値のストレージについての、アドレス変換回路44による同様のアドレス計算が、関与する。
さらなる一実施例では、ブロックのサイズおよび/または形状は、動的に選択可能である。したがって、例えば、N×Mのブロックを選択できて、整数NおよびMは、異なる命令に対して、いくつもの異なる値をとることができる。NおよびMは、例えば、命令において、またはプレーン情報において、指示してもよい。この実施例の一例では、アドレス変換回路44は、選択されたNおよびMの値について情報を受信し、そしてこの情報を使用して必要なバンクを計算する。
命令制御回路16は、複数のブロックを選択するための出力を有する。複数の集合アクセス回路40が、設けられて、すべての出力からの選択を並列に処理できるようにする。一実施例では、各集合アクセス回路40が、メモリーバンク集合および命令制御回路16の出力のそれぞれの組み合わせに対して、設けられる。したがって、プロセッサーが、選択オペランドブロックに対して複数のフィールドを有する命令を実行する場合、各フィールドを、既定の集合アクセス回路40と関連づけてもよい。このフィールドは、命令において、例えば、文字表記のplane_idおよびブロック座標として、ブロックを定義するか、またはplane_idおよびブロック座標を収容するレジスターを示す選択値によって定義するか、または文字表記のデータおよびレジスター選択の組み合わせ、例えば、命令における文字表記のplane_idおよびブロック座標を収容するレジスターを示すフィールドの選択値として定義される。
この実施例では、命令の各フィールドがもたらすplane_idおよびブロック座標は、そのフィールドに関連する集合アクセス回路40に供給される。集合アクセス回路40の出力45からのデータは、オペランドとしてのフィールドを有する命令で選択される演算を実行する機能ユニットに転送される。このフィールドが、演算結果を選択するフィールドである場合、出力45の代わりに、入力が使用され、そしてデータは、この演算を実行する機能ユニットから転送される。
図5は、命令フィールドとメモリーバンク集合の、より柔軟な関連づけを提供するベクトルアクセスユニットの一実施例を線図的に示す。ベクトルアクセスユニットは、プレーン関連づけ回路50、さらなるルーティング回路として機能するオペランドクロスバースイッチ52、および複数の集合アクセス回路40を備える。このユニットは、命令制御回路(図示せず)と結合される制御入力がある複数のポート54を有し、各ポート54を、実行される命令におけるそれぞれの既定のフィールドと関連づける。ポート54はまた、このフィールドによって選択されるデータを使用または生成する機能ユニット(図示せず)に結合されるデータ出力および/または入力を有する。4つのポート54が示されているが、これよりも多い、または少ない数でもよいことを、理解すべきである。
オペランドクロスバースイッチ52は、集合アクセス回路40およびポート54の間に結合され、そしてプレーンおよびブロック選択を各ポート54から任意の集合アクセス回路40に、ポート54から供給されるplane_idに応じて、ルーティングするためのルーティング回路として動作する。ポート54のplane_id接続は、オペランドクロスバースイッチ52の入力に結合される出力を有するプレーン関連づけ回路50に結合される。プレーン関連づけ回路50は、プレーン情報ルックアップメモリーの共有部分として考えてもよいが、明確にするため、別々に示されている。
プレーン関連づけ回路50は、集合アクセス回路40および複数のポート54の間のクロスカップリングを制御し、plane_idによって識別されるプレーンを記憶するメモリーバンク集合に対する集合アクセス回路40に各ポートを結合する。一実施例では、プレーン関連づけ回路50は、それぞれの対応するplane_id値に関連する集合アクセス回路40の識別を記憶し、受信したplane_id値に応答して、これらの識別を呼び出し、そしてオペランドクロスバースイッチ52を、ポート54のplane_id入力によって識別される集合アクセス回路40への各ポート54に結合させる。オペランドクロスバースイッチ52は、ポート54からのplane_idおよびブロック座標を、選択された集合アクセス回路40に渡す。オペランドクロスバースイッチ52は、選択された集合アクセス回路40との間でデータを双方向に受け渡す。
好ましくは、オペランドクロスバースイッチ52は、選択可能なルーティングパスを提供し、命令の任意のオペランド選択フィールドを任意の集合アクセス回路40にルーティングできるようにする。したがって、各オペランド選択フィールドは、任意のメモリーバンク集合をアドレス指定できる。オプションとして、すべての集合アクセス回路40のデータクロスバースイッチ46もまた、任意のメモリーバンク集合と任意のポート54との間のデータを、オペランドクロスバースイッチ52によるルーティングと調和して、ルーティングするように構成される。あるいは、オペランドクロスバースイッチ52は、このレベルでのルーティングを提供するために、さらなるデータクロスバースイッチを備えてもよい。結果的に、異なるポートで使用するために、同じ画素値のコピーを記憶する必要はない。
あるいは、オペランドクロスバースイッチ52は、限られた変量のクロスカップリングを提供できるようにして、すべてのポートをすべての集合にカップリングすることを許可せずに、ポートをメモリーバンク集合の重複する組み合わせにカップリングすることを許可する。これにより、ポート間で他のメモリーバンクを共有することなく、メモリーバンクのある程度の共有(または、少なくとも、すべてのポート間には至らないメモリーバンクの共有)が可能となる。こうして、あるメモリーバンク集合を共有する必要がないことが、あらかじめ分かっている場合、回路オーバーヘッドを、低減することができる。
原則として、プレーン情報ルックアップメモリーは、各ポート54と関連づけられてもよく、この場合、オペランドクロスバースイッチは、プレーン情報を関連する集合アクセス回路40にルーティングするように構成される。別の実施例では、plane_idのみがルーティングされ、プレーン情報ルックアップメモリーは、このルーティングされたplane_idによってアドレス指定した集合アクセス回路と関連づけられる。
一実施例は、集合アクセス回路40がメモリーバンク集合と関連づけられているものを示しており、ブロックアドレスは、plane_idまたはプレーン情報の制御下でポート54から集合アクセス回路40にルーティングされなければならないが、もう一つの方法として、集合アクセス回路40が、ポート54と関連づけられて、バンクアドレス指定をルーティングしなければならないようにできることも、理解すべきである。この実施例では、バンク選択は、ルーティングの前または後、すなわち、オペランドクロスバースイッチ52を基準としてメモリーバンク側またはポート54側で作用できる。
図6は、ウィンドウ60、62、64、66を適合可能な複数のメモリーバンク集合上に分配して記憶できる一実施例のバンク型メモリー10の使用を説明する。この例では、一ウィンドウ60に対する画素値は、すべての集合上に分配して記憶される。別のウィンドウ62に対する画素値は、2つの集合上に分配して記憶される。さらなるウィンドウ64、66に対する画素値は、それぞれの集合上に分配して記憶される。図は、ストレージの一例を表しているだけであることを、理解すべきである。実際には、他の組み合わせのウィンドウのストレージを使用してもよい。各プレーンに対して、選択された組み合わせのメモリーバンク集合を、使用してもよく、そして選択された集合のメモリーバンクにはアドレスの範囲(1つまたは複数)がある。例えば、1つの集合を使用するプレーン、2つの集合を使用するプレーン、および4つのプレーンを使用するプレーンが、選択できる。より多くの集合を使用すると、選択された集合に対して、より高い並列処理が可能になる。
この形式のストレージの一利点は、異なるサイズのブロックをオペランドとして使用することをサポートすることである。例えば、1つの集合にあるウィンドウ64に対する画素値のストレージは、4×4画素領域のまとまりへの並列アクセスをサポートし、4つの集合にあるウィンドウ60に対する画素値のストレージは、8×8画素領域のまとまりへの並列アクセスをサポートする。
一実施例では、ベクトルアクセスユニットは、図6に示されるタイプのストレージをサポートするように構成される。この目的のため、図5に示される構造の回路を使用でき、ここでは、オペランドクロスバースイッチ52は、ブロック座標およびplane_id(またはプレーン情報)を単一のポートから複数の集合アクセス回路40に渡し(その単一のポート54へのplane_idに対するプレーン情報が、プレーンに対して複数の集合が使用されることを示す場合)、そしてその複数の集合と、単一のポートおよび/またはブロックにアクセスするために単一のポートとともに使用されるポート群との間で画素値を渡すように構成される。
データ側では、ポート54は、可変数の画素値の入力および/または出力をサポートするように構成してもよく、複数の集合アクセス回路40からの画素値は、単一のポート54に供給される(その単一のポート54へのplane_idに対するプレーン情報が、示されたプレーンに対して複数の集合が使用されることを示す場合)。あるいは、一方のデータに対してと、他方のplane_idおよびブロック座標に対してとで、別々のルーティング制御を、使用してもよい。したがって、例えば、オペランドクロスバースイッチ52は、単一のポート54によってアドレス指定される画素値を、この単一のポート54および1つまたは複数のポート54の論理的近隣を含むポート群に、ルーティングするように構成してもよい(その単一のポート54へのplane_idに対するプレーン情報が、示されたプレーンに対して、複数の集合が使用されることを示す場合)。
他の実施例では、機能ユニットに供給される画素値の数が、使用される集合の数に依存しないモードを、サポートしてもよい。この実施例では、追加の画素値選択回路(図示せず)が、集合アクセス回路40とオペランドクロスバースイッチ52との間に設けられて、複数の集合アクセス回路によって供給される画素値からポートに供給するための画素値を選択してもよい。この実施例では、画素値選択回路は、関連するポート54でplane_idによって選択されるプレーン情報からの制御下、例えば、プレーン関連づけ回路50を介して、選択を実行する。
一実施例では、メモリーアクセスユニット18は、ウィンドウ(1つまたは複数)の移行を実施するため、画素値の進行的な置き換えを制御する。したがって、画素値は、メインメモリーとメモリーバンクとの間でコピーされ、移行ウィンドウに対する画素値は、メモリーバンクでアクセス可能になる。これには、メモリーバンクのサイズが、相対的に小さく保てるという利点がある。しかしながら、もう一つの方法として、プレーン全体を記憶できる大きなメモリーバンクを、使用してもよい。この場合、メインメモリーの使用、およびメモリーバンクとメインメモリーとの間のコピーは、必要ない。
メモリーアクセスユニット18は、プレーン情報のコピーに従って、異なるプレーンについての画素位置に対するメインメモリーアドレスおよびメモリーバンクアドレスを計算し、そして計算位置での画素値を読み取りおよび書き込みする。機能ユニットで複数の命令が実行されるごとにのみ、ウィンドウが移動されるので、通常、メモリーアクセスユニット18によって実行される計算量は、機能ユニットによって実行されるものよりも、大幅に少ない。そのため、メモリーアクセスユニット18は、通常、機能ユニットと同じような大量並列アクセスを、必要としない。一実施例では、メモリーアクセスユニット18は、プログラムプロセッサーとして実装でき、このプログラムプロセッサーは、プレーン情報のコピーに従って、異なるプレーンについての画素位置に対するメインメモリーアドレスおよびメモリーバンクアドレスを計算し、そして計算位置での画素値を読み取りおよび書き込みするようにプログラムされる。別の実施例では、進行的な置き換えを実行する目的で設計された回路を、使用してもよい。
水平方向右側に移行するウィンドウには、このウィンドウの左側の列に対する画素値を、このウィンドウの右側の列に対する画素値によって置き換えることが、関与する。例えば、メインメモリー19からバンク型メモリー10へのデータ転送の場合、メモリーアクセスユニット18は、ウィンドウの左側の列にある画素位置に対する画素値を記憶するバンクにおけるメモリー位置を、ウィンドウの右側の列にある画素位置に対する画素値で上書きする。理解されるように、これは、現在記憶されているウィンドウの左上の画素位置に対する画素値を記憶するメモリー位置が、処理中に、進行的に変化していることを意味する。水平方向左側に移行するウィンドウも、同様の方法で実施できる。
一実施例では、メモリーアクセスユニット18は、先取りベースで、バックグラウンドにおいて演算される一方、機能ユニット14は、現在のウィンドウ位置に適用する命令を処理する。この目的のため、追加空間をメモリーバンクにリザーブしてもよく、ここでは、現在のウィンドウの外側にある位置に対する画素値は、次の移動でウィンドウに入る位置に対する画素値によって、置き換えられる。メモリーバンクへのインターリーブアクセスおよび/またはマルチポートアクセスを、このようなバックグラウンド演算に対して使用してもよい。これにより、ウィンドウ外側の位置に対する画素値を置き換えながらも、ウィンドウ全体を、並列アクセスに利用し続ることが可能になる。
したがって、例えば、N×Mのウィンドウが、一度にS画素位置のステップで右側に進行的に移動される場合、少なくとも(N+S)×M画素位置の領域に対する画素値が、記憶される。最初に、最も左側のN画素位置が、ウィンドウを定義する。これらの画素位置に対する画素値は、並列アクセスのため、メモリーバンクに記録され続ける。同時に、メモリーアクセスユニット18は、メモリーバンク内へ右側に次のS画素位置に対する後続の画素値をロードする。ウィンドウが、S画素位置だけ右側に移動された後、ウィンドウの左側のS画素位置に対する画素値を記憶するメモリー位置は、利用可能となり、メモリーアクセスユニット18は、ウィンドウの右側の次のS画素位置に対する後続の画素値をメモリーバンクのこれらの位置にロードする、といったように続く。必要な変更を加えることで、同様のアプローチを、左側に移動する場合にも使用できる。
加えて、垂直方向上側または下側に移行するウィンドウは、このウィンドウの左側の列に対する画素値を、このウィンドウの右側の列に対する画素値によって置き換えることが関与することでサポートされる。同様に、ウィンドウが、S画素位置のステップで上側または下側に移動される場合、N×(M+S)画素位置に対するメモリー空間を、リザーブしてもよい。動的に選択可能な移動方向は、(N+S)×(M+S)画素位置に対するメモリー空間をリザーブし、そしてこのウィンドウに沿うL形状の縁に対する画素値をプレロードすることによって提供される。同様のアプローチが、出力画素値に対しても使用できる。例えば、S画素位置のステップで右側に移動される出力ウィンドウの場合、メモリーアクセスユニット18は、現在のウィンドウの左側のS画素位置に対する画素値をメインメモリーにライトバックするので、次の移動後には、ウィンドウの右側にS画素位置の空間を作り出す。
あるいは、メモリーアクセスユニット18は、このウィンドウの一番下または一番上にある行の画素位置に対する画素値によって、ウィンドウの一番上または一番下の行にある画素位置に対する画素値を記憶するバンクにおけるメモリー位置を上書きするが、この場合、画素値がアップロードされる間、画素アクセスのために機能ユニットを使用することは、避けるか、または休止しなければならない。
現在のウィンドウの処理が終了したことが、信号伝達されると、メモリーアクセスユニット18は、必要な場合、次のウィンドウの先取りを完了し、そしてそのウィンドウに対するプレーン情報をアップデートする。理解されるように、機能ユニット14(1つまたは複数)によって生成される画素値を有するウィンドウの場合、メモリーアクセスユニット18は、現在のウィンドウの外側にある画素値についても、可能性としては、バックグラウンドで、メインメモリーへのライトバックを実行してもよい。メモリーアクセスユニット18は、異なるplane_idによって識別される複数のウィンドウに対しても先取り、および/またはライトバックを実行してもよい。
一実施例では、異なるウィンドウに対するプレーン情報は、プログラム制御下で、動的に生成される。あるいは、プログラム実行全体で同じままの定義済みプレーン情報を、使用してもよい。動的定義の場合、プレーンの定義には、plane_idに対するアドレス範囲を識別するためのplane_idに対するデータを、ルックアップメモリー42に書き込み、そしてさらに、ウィンドウの座標およびそのplane_idのウィンドウの第1画素位置に対する画素値の位置へのポインターを初期化することが、関与してもよい。加えて、ウィンドウのサイズが選択できる場合、このサイズを定義する情報が、このplane_idについて書き込まれる。この情報は、このウィンドウが記憶される集合アクセス回路に対するルックアップメモリー42に書き込まれる。異なる集合を同じポート54からアドレス指定できる実施例では、情報は、プレーン関連づけ回路50にも書き込まれて、plane_idをこのプレーンの画素が記憶される集合と関連づける。
プレーンの画素値を複数の集合に分配して記憶できる実施例では、プレーンの定義には、plane_idに対するアドレス範囲を識別するため、各集合アクセス回路40のデータをその集合に記憶し、そしてさらに、ウィンドウの座標およびそのplane_idのウィンドウの第1画素位置に対する画素値の位置へのポインターを初期化することが、関与する。この実施例では、plane_idをプレーンの画素が記憶される複数の集合と関連づけるため、情報が、プレーン関連づけ回路50にも書き込まれる。理解されるように、これにより、演算中、異なる種類のウィンドウのため、バンク型メモリーを再利用できる。
図7は、命令処理のフローチャートを示す。第1ステップ71では、命令が受信され、そしてデコードされる。第2ステップ72では、画素位置オフセットが、命令のオペランドから計算される。オプションの第3ステップ73では、命令を完了するのに十分なデータが、メモリーバンクにない場合、命令処理が、遅延される(命令の実行を開始する前に、十分なデータが利用できるように構成される回路の場合、このステップは、必要とされない)。また、必要な場合、オプションとして、同じデータへの同時アクセスによって生じる衝突を防止するため、アクセスアービトレーションが、実行される。別のアクセスとの衝突がある場合、例えば、他方のアクセスを遅延するか、または命令の実行を遅延させるかして、この衝突が、解決される。第4ステップ74では、命令からのplane_idを使用して、プレーン情報を呼び出す。第5ステップ75では、このプレーン情報を使用して、命令のためにアクセスする必要があるメモリーバンクにおけるアドレスを計算する。第6ステップ76では、メモリーバンクが、アクセスされる。第7ステップ77では、メモリーバンクからの画素位置の異なるラインに対するデータが、記録される。第8ステップ78では、メモリーバンクからの画素位置のライン内の異なる位置に対するデータが、記録される。当業者には、複数の異なるステップを、異なる命令に対して、パイプライン方式で実行してもよいことが、理解されるであろう。
この記録ステップは、本来的に公知であり、そして、そのため、詳細には説明されない。簡単に説明すると、ブロックの異なるラインの画素値は、このメモリーバンクと、異なるメモリーバンクとでは、異なるアドレス(または連続するアドレスの集合)に記憶される。データの進行的な置き換えのため、後続ラインが、後続のアドレスまたはバンクに記憶され、周期的にロールアラウンドしながら、置き換えがどの程度進行しているかに応じて、ブロックの一番上のラインを、これらのアドレス(アドレス集合)の任意の1つで、そしてバンクの任意の1つに、記憶できる。ライン再配列では、ブロックの一番上の画素位置に対する画素値を収容するバンクからの画素値を、このブロックの一番上からの画素値を受信しなければならないデータポート部分などに、ルーティングする。画素再配列では、ブロックの一番左の画素位置に対する画素値を収容するバンクからの画素値を、このブロックの左からの画素値を受信しなければならないデータポート部分などに、ルーティングする。
少なくとも、メモリーバンクの一部、例えば、命令実行回路の異なるポートからアドレス指定できるウィンドウに使用されるような部分は、共有してもよい。
上記の実施例は、本発明を限定するというよりも、むしろ説明するものであり、そして当業者には、添付の請求の範囲を逸脱することなく、多くの別の実施例が設計できることに留意すべきである。請求項において、括弧内に配置されるすべての参照符号は、本請求項を限定するものとして解釈されない。用語「備える」は、請求項において列挙されるもの以外のエレメントまたはステップの存在を排除しない。エレメントに先行する単語「a」または「an」は、このようなエレメントの複数形の存在を排除しない。本発明および本発明で使用される回路は、複数の相異なるエレメントを備えるハードウェアを用いて、および/または適切にプログラムされたプロセッサーを用いて実施してもよい。エレメントを列挙するデバイス請求項において、これらのエレメントの複数を、ハードウェアの同一の一アイテムによって実施してもよい。ある対策が互いに異なる従属請求項で復唱されているという単なる事実は、これらの対策を有利に組み合わせて使用できないことを示唆するものではない。
Claims (10)
- ブロックデータポート、および前記ブロックデータポートの少なくとも1つのグループに対して、実行される命令によって定義されるプレーンおよび該プレーンにおける領域のまとまりの選択の指示を出力するための、ブロックアドレス指定出力部、を有する、命令実行回路と、
アドレス入力部および並列メモリーアクセスポートを有する複数のメモリーバンクと、
前記プレーンおよび前記領域のまとまりの選択の指示の1つを、メモリーバンクの選択および該選択されたメモリーバンクにおけるアドレスに変換するために、前記ブロックアドレス指定出力部と前記アドレス入力部との間に結合される複数の変換回路と、
各ブロックに対する複数のデータ値を、並列に、前記選択されたメモリーバンクにおいて選択されたアドレスと前記それぞれのグループの前記ブロックデータポートとの間でルーティングするために、前記並列メモリーアクセスポートと前記ブロックデータポートとの間に結合されるルーティング回路と、
を備える、データ処理回路。 - 前記ルーティング回路が、さらに、実行される命令の制御下で、任意のそれぞれのグループの前記ブロックデータポートと任意の前記メモリーバンクとの間、または複数の集合からの任意の集合から前記メモリーバンクがグループ化されるものに、選択可能に前記データ値をルーティングする、
請求項1に記載のデータ処理回路。 - プレーンの前記選択指示が、前記プレーンに対するデータ値を記憶するメモリーバンクを指示に応じた数だけ定義できる形式でコード化され、
前記データ処理回路が、前記指示によって定義されるメモリーバンク数に応じて、前記指示の少なくとも1つを、複数の変換回路に同時にルーティングする、さらなるルーティング回路を備える、
請求項1に記載のデータ処理回路。 - それぞれのプレーンに対するプレーン情報を同時記憶するためのプレーン情報ルックアップメモリーを備え、
各プレーンに対する前記プレーン情報が、どの前記メモリーバンクが、前記プレーンに対する前記データ値を記憶するのに使用されるかを指示する情報を備え、
前記プレーン情報ルックアップメモリーが、前記実行される命令によって選択されるプレーン情報を変換の使用のために供給する前記変換回路に結合されている、
請求項1に記載のデータ処理回路。 - 前記変換回路のそれぞれが、前記それぞれの集合における前記メモリーバンクのアドレス指定を制御するため、前記メモリーバンクのそれぞれの集合に結合され、
前記データ処理回路が、前記命令実行回路の前記ブロックアドレス指定出力部と前記変換回路との間に結合される、さらなるルーティング回路を備え、
前記変換回路が、前記実行される命令によって前記それぞれのブロックアドレス指定出力部に対して選択される前記プレーンの制御下で、前記ブロックの前記選択指示を、前記変換回路のそれぞれのものにルーティングする、
請求項1に記載のデータ処理回路。 - 前記ブロックアドレス指定出力部の前記1つに対して選択された前記プレーンの制御下で、
前記ブロックアドレス指定出力部の前記1つによって選択された前記プレーンに対するプレーン情報に応答して、
そのプレーン情報が、前記プレーンのデータ値は、当該の複数の変換回路に結合されるメモリーバンクの前記集合に分配して記憶されることを示す場合に、
前記さらなるルーティング回路が、
前記ブロックアドレス指定出力部の少なくとも1つから、前記ブロックの前記選択指示を、複数の前記変換回路にルーティングする、
請求項5に記載のデータ処理回路。 - 前記命令実行回路の前記ブロックアドレス指定出力部で供給される前記ブロックの前記指示が、それぞれ、前記ブロックのサイズおよび/または形状の指示を備え、
前記変換回路が、当該変換を、前記指示されたサイズおよび/または形状に応じて実行する、
請求項1に記載のデータ処理回路。 - アレイにおける領域のまとまりに対するデータ値を処理するための命令を実行する方法であって、
前記命令において、プレーンおよび該プレーンにおける領域のまとまりの選択のそれぞれについて複数の指示を供給し、
前記指示されたプレーンに対して、並列に、データ値の記憶のためのバンクメモリ回路からのメモリーバンクの選択を有するプレーン情報を提供し、
前記指示されたプレーンに対する前記プレーン情報を使用して、前記領域のまとまりを、前記選択されたメモリーバンクのアドレス指定に変換し、
前記命令の実行の一部として、前記領域のまとまりに対するデータ値をロードおよび/またはストアするため、前記アドレス指定されたメモリーバンクと命令プロセッサーの少なくとも一つのデータポートのグループとの間で、データ値を、ルーティングする
ことを備える、方法。 - 当該ルーティングが、任意の前記メモリーバンクから、選択的に、データポートの任意の前記グループに、データ値のルーティングを提供する、
請求項8に記載の方法。 - 前記プレーンに対するデータ値を記憶する複数のメモリーバンクの定義を供給し、
前記メモリーバンクの数が、前記選択されたプレーンに依存し、そして
前記ブロックの前記選択指示の少なくとも1つを、プレーンに依存した複数回、前記メモリーバンクのそれぞれのものに対して、並列に変換する
ことを、さらに、備える、
請求項8に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06121280 | 2006-09-26 | ||
PCT/IB2007/053836 WO2008038204A2 (en) | 2006-09-26 | 2007-09-21 | Data processing with a plurality of memory banks |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010505158A true JP2010505158A (ja) | 2010-02-18 |
Family
ID=39230633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009528858A Pending JP2010505158A (ja) | 2006-09-26 | 2007-09-21 | 複数のメモリーバンクを有するデータ処理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20100088475A1 (ja) |
EP (1) | EP2070332A2 (ja) |
JP (1) | JP2010505158A (ja) |
KR (1) | KR20090064394A (ja) |
CN (1) | CN101558649A (ja) |
WO (1) | WO2008038204A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023085611A1 (ko) * | 2021-11-11 | 2023-05-19 | 삼성전자주식회사 | 메모리 어레이 내의 연결 회로 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013106210A1 (en) * | 2012-01-10 | 2013-07-18 | Intel Corporation | Electronic apparatus having parallel memory banks |
US20150010087A1 (en) * | 2013-07-05 | 2015-01-08 | Parabola Research Limited | Image Processing Method and Apparatus |
KR20150028118A (ko) * | 2013-09-05 | 2015-03-13 | 삼성전자주식회사 | 메모리 장치의 동작 방법, 이를 이용한 데이터 기입 방법 및 데이터 독출 방법 |
US9848141B2 (en) * | 2016-05-10 | 2017-12-19 | Semiconductor Components Industries, Llc | Image pixels having processed signal storage capabilities |
US10868769B1 (en) | 2018-08-07 | 2020-12-15 | Innovium, Inc. | Read instruction queues in a network device |
US10846225B1 (en) * | 2018-08-07 | 2020-11-24 | Innovium, Inc. | Buffer read optimizations in a network device |
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11842266B2 (en) | 2020-01-07 | 2023-12-12 | SK Hynix Inc. | Processing-in-memory (PIM) device, controller for controlling the PIM device, and PIM system including the PIM device and the controller |
US11474718B2 (en) | 2020-01-07 | 2022-10-18 | SK Hynix Inc. | Processing-in-memory (PIM) device and PIM system including the PIM device |
CN113965705A (zh) * | 2021-11-04 | 2022-01-21 | 地太科特电子制造(北京)有限公司 | 一种cmos像素寻址模块和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005104027A2 (en) * | 2004-04-22 | 2005-11-03 | Koninklijke Philips Electronics N.V. | Data processing apparatus that provides parallel access to multi-dimensional array of data values |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6289149A (ja) * | 1985-10-15 | 1987-04-23 | Agency Of Ind Science & Technol | 多ポ−トメモリシステム |
US5594813A (en) * | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
US5895501A (en) * | 1996-09-03 | 1999-04-20 | Cray Research, Inc. | Virtual memory system for vector based computer systems |
US5966734A (en) * | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US6215822B1 (en) * | 1997-12-30 | 2001-04-10 | Sony Corporation | Motion compensated digital video decoding and buffer memory addressing therefor |
US6430655B1 (en) * | 2000-01-31 | 2002-08-06 | Mips Technologies, Inc. | Scratchpad RAM memory accessible in parallel to a primary cache |
US6836833B1 (en) * | 2002-10-22 | 2004-12-28 | Mips Technologies, Inc. | Apparatus and method for discovering a scratch pad memory configuration |
-
2007
- 2007-09-21 CN CNA2007800358749A patent/CN101558649A/zh active Pending
- 2007-09-21 WO PCT/IB2007/053836 patent/WO2008038204A2/en active Application Filing
- 2007-09-21 KR KR1020097005928A patent/KR20090064394A/ko not_active Application Discontinuation
- 2007-09-21 JP JP2009528858A patent/JP2010505158A/ja active Pending
- 2007-09-21 EP EP07826489A patent/EP2070332A2/en not_active Withdrawn
- 2007-09-21 US US12/442,594 patent/US20100088475A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005104027A2 (en) * | 2004-04-22 | 2005-11-03 | Koninklijke Philips Electronics N.V. | Data processing apparatus that provides parallel access to multi-dimensional array of data values |
JP2007534077A (ja) * | 2004-04-22 | 2007-11-22 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ値の多次元アレイへのパラレルなアクセスを提供するデータ処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023085611A1 (ko) * | 2021-11-11 | 2023-05-19 | 삼성전자주식회사 | 메모리 어레이 내의 연결 회로 |
Also Published As
Publication number | Publication date |
---|---|
EP2070332A2 (en) | 2009-06-17 |
CN101558649A (zh) | 2009-10-14 |
WO2008038204A3 (en) | 2009-06-18 |
US20100088475A1 (en) | 2010-04-08 |
KR20090064394A (ko) | 2009-06-18 |
WO2008038204A2 (en) | 2008-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010505158A (ja) | 複数のメモリーバンクを有するデータ処理 | |
JP4861338B2 (ja) | 読み出し機能及びフェッチ機能を分けることによるデータ処理装置のメモリユニットの性能向上 | |
JP4744510B2 (ja) | データ値の多次元アレイへのパラレルなアクセスを提供するデータ処理装置 | |
KR100648293B1 (ko) | 그래픽 시스템 및 그것의 그래픽 처리 방법 | |
US8547385B2 (en) | Systems and methods for performing shared memory accesses | |
EP1880277B1 (en) | Command execution controlling apparatus, command execution instructing apparatus and command execution controlling method | |
KR100291628B1 (ko) | 3차원 그래픽 텍스쳐 맵핑용 캐쉬 메모리 및 그의 캐쉬 미스페널티 저감방법 | |
KR20230005393A (ko) | 행렬 처리를 위한 가변 위치 시프트 | |
WO2009116115A1 (ja) | メモリコントローラ及びそれを使用したメモリシステム | |
JP5248482B2 (ja) | プログラマブルデータ処理回路 | |
JPH04146487A (ja) | 画像データのブロック転送装置 | |
US20180103174A1 (en) | Image processing apparatus and method for controlling the same | |
WO2006120620A2 (en) | Image processing circuit with block accessible buffer memory | |
US7106347B1 (en) | Transforming pixel data and addresses | |
KR20220046794A (ko) | 신경망 처리 시스템에서 효율적 메모리 접근을 위한 방법 및 장치 | |
JP2010033507A (ja) | メモリコントローラおよび画像処理装置 | |
US7769247B2 (en) | Method and apparatus for data re-arrangement | |
JP3699003B2 (ja) | データ処理装置および方法 | |
JP2001216275A (ja) | 画像処理装置および画像処理方法 | |
JP2009003632A (ja) | 画像処理システム | |
TW202340947A (zh) | 用於處置儲存在陣列儲存器中之資料元素之技術 | |
JP2005182499A (ja) | 並列演算装置 | |
TW202340948A (zh) | 用於處置儲存在陣列儲存器中之資料元素之技術 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120904 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130214 |