マルチモードアクセス可能な記憶装置
ブロックアクセスモードでのブロックアクセスおよび行アクセスモードでの行アクセスを可能にするマルチモードアクセス可能な記憶装置(10)を開示する。記憶装置は、各々がそれぞれのバンクインデックス(0、…、F)を有する複数のメモリバンク(20.0、…、20.F)を備えるメモリユニット(20)と、前記メモリバンクの各々について入力アドレスおよびシフトパラメータの関数として回転されたバンクアドレスを生成するアドレス発生器(30)と、入力ベクトルを回転させ、回転された入力ベクトルのベクトル要素をメモリユニットのそれぞれのバンクに供給する入力ベクトルデータ回転器(40)と、メモリユニットのそれぞれのバンクから取得されるベクトル要素を含むベクトルを逆回転させ、回転した出力ベクトルを供給する出力ベクトル回転器(50)と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチモードアクセス可能な記憶装置に関する。
本発明は、さらに、データ要素の行を格納する方法に関する。
本発明は、さらに、データ要素のブロックを取得する方法に関する。
【背景技術】
【0002】
多くの画像処理アルゴリズムでは、画像データの任意のブロックが迅速に利用できることが必要である。したがって、これらのアルゴリズムに対し、ブロック毎にアクセスが可能な記憶装置が必須である。一方、これらのアルゴリズムのための入力データは、通常、ラスタスキャン方式で線状に供給される。同様に、処理されたデータを再びラスタスキャン方式で供給することが必要な場合もある。リアルタイムの現実的なシーンレンダリングを可能とするように、処理速度およびラスタサイズに関するユーザ要件が急速に増大していることがさらに留意される。
【0003】
特許文献1は、ブロックアクセス可能なバッファメモリを備えた画像処理回路について記載している。バッファメモリは、ウィンドウからのピクセル値を格納する複数行のメモリ回路を備えている。メモリ回路は、各々それぞれの行に対してシフト回路として設けられ、それぞれの行からグループへのピクセル値の割当てをシフトするように設けられている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2006/120620号
【発明の概要】
【発明が解決しようとする課題】
【0005】
標準的なマルチバンクメモリにおいて、ラスタスキャン方式でのアクセスとブロック単位のアクセスとをともに効率的にサポートする記憶装置を提供する必要がある。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、ブロックアクセスモードでのブロックアクセスおよび行アクセスモードでの行アクセスを可能にするマルチモードアクセス可能な記憶装置が提供され、この装置は、
各々がそれぞれのバンクインデックスを有する複数のメモリバンクを備えるメモリユニットと、
前記メモリバンクの各々につい入力アドレスおよびシフトパラメータの関数として回転されたバンクアドレスを生成するアドレス発生器と、
入力行を回転させ、回転された入力行のデータ要素をメモリユニットのそれぞれのバンクに供給する入力データ回転器と、
メモリユニットのそれぞれのバンクから取得されるデータ要素を含む行を逆回転させ、回転された出力行を供給する出力回転器と、
を備える。
【0007】
本発明の第2の態様によれば、データ要素の行を格納する方法が提供され、この方法は、
行を受け取るステップと、
行の記憶位置を示す入力アドレスを受け取るステップと、
行の記憶位置に応じた量だけ行内のデータ要素を回転させるステップと、
各要素について入力アドレスの関数としてバンクアドレスを割り当てるステップと、
マルチバンクメモリに行を格納するステップと、を含み、それぞれのデータ要素はそれぞれのバンクのそれぞれのバンクアドレスに格納される。
【0008】
本発明の第3の態様によれば、マルチバンクメモリからデータ要素のブロックを取得する方法が提供され、この方法は、
データ要素のブロックの記憶位置を示す入力アドレスを受け取るステップと、
複数のメモリバンクについて入力アドレスの関数としてバンクアドレスを計算するステップと、
前記メモリのうち前記メモリバンクに対して計算されたバンクアドレスからそれぞれのデータ要素を含む行を取得するステップと、
ブロックの記憶位置に応じた量だけ行内のデータ要素を回転させ、回転されたデータ要素を含む行をブロックとして供給するステップと、
を含む。
【0009】
行アクセスモードでは、受け取られた行は、行の記憶位置、すなわちバンクにおけるアドレスに応じた量だけ回転される。したがって、後続するアドレスに格納される行は、相互に異なるように回転して格納される。回転は、循環シフトであるように理解される。したがって、NRだけ回転するということは、本来はインデックスIBのメモリバンクに割り当てられるデータが、代りに、NBがメモリバンクの数である場合、メモリバンクIB+NR mod NBに割り当てられることを示す。したがって、ブロックの異なる行のデータは、異なるメモリバンクに割り当てられる。これにより、ブロックアクセスモードにおいて前記データを同時に取得することが可能になる。ブロックアクセスモードでは、アドレス発生器は、メモリバンクの各々に対し、ブロックの適切なラインを取得するために、入力アドレスおよびシフトパラメータの関数として、回転されたバンクアドレスを生成する。
【0010】
これらの態様および他の態様について、図面を参照してより詳細に説明する。
【図面の簡単な説明】
【0011】
【図1】データ処理装置を概略的に示す図である。
【図2】複数のアクセスモードを示す図である。
【図3】本発明による記憶装置の実施形態を示す図である。
【図4】図3の実施形態の一部をより詳細に示す図である。
【図5】記憶装置の代替実施形態における前記部分を示す図である。
【図6A】データ要素のマッピングを示す図である。
【図6B】データ要素のマッピングを示す図である。
【図7】実施形態に適したアドレス発生器の例示的な実施態様を示す図である。
【図8A】データ要素のブロックの配置の第1の例を示す図である。
【図8B】データ要素のブロックの配置の第2の例を示す図である。
【図9】本発明による記憶装置のさらなる実施形態を示す図である。
【図10】前記実施形態の一部をより詳細に示す図である。
【図11A】記憶装置の実施形態の2つの動作モードのうちの1つを示す図である。
【図11B】記憶装置の実施形態の2つの動作モードのうちの1つを示す図である。
【図12】記憶装置の実施形態におけるプレーンの内容を概略的に示す図である。
【発明を実施するための形態】
【0012】
以下の詳細な説明では、本発明が十分に理解されるようにするために、多数の特定の詳細を示す。しかしながら、当業者には、本発明をこれらの特定の詳細なしに実施してもよいことが理解されよう。他の場合では、周知の方法、手続きおよび構成要素については、本発明の態様を不明瞭にしないように詳細には説明していない。
【0013】
本発明を、本発明の実施形態が示されている添付図面を参照して以下により十分に説明する。しかしながら、この発明は、多くの異なる形態で具現化することができるものであり、本明細書に示す実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態を、この開示が綿密にかつ十分となるように、かつ当業者に本発明の範囲を十分に伝えるように提供する。1つの要素が別の要素に「接続されて」いるかまたは「結合されて」いると言及される場合、それは、他方の要素に直接接続されまたは結合されていてもよく、または介在する要素が存在してもよいことが理解されよう。一方、1つの要素が別の要素に「直接接続されて」いるかまたは「直接結合されて」いると言及される場合、介在する要素は存在していない。全体を通して、同様の番号は同様の要素を指す。本明細書で、「および/または」という用語は、関連する列挙された項目のうちの1つまたは複数のありとあらゆる組合せを含む。
【0014】
本明細書において、さまざまな要素、構成要素および/または部分について述べるために第1の、第2の、第3の等という用語を用いる場合があるが、これら要素、構成要素および/または部分は、これらの用語によって限定されるべきではないことが理解されよう。これらの用語は、1つの要素、構成要素または部分を別の要素、構成要素および/または部分から識別するためにのみ用いられている。したがって、後述する第1の要素、構成要素および/または部分を、本発明の教示から逸脱することなく、第2の要素、構成要素および/または部分と呼ぶことができる。
【0015】
特に定義しない限り、本明細書で用いるすべての用語(技術的用語および科学的用語を含む)は、本発明が属する技術分野における当業者が一般に理解する意味と同じ意味を有している。一般に用いられる辞書で定義される用語等の用語は、関連技術との関連におけるそれらの意味と一致する意味を有しているものと解釈されるべきであり、本明細書において明示的に定義しない限り、理想化されたまたは過度に形式的な意味で解釈されないことがさらに理解されよう。本明細書で言及するすべての出版物、特許出願、特許および他の参考文献は、開示内容がすべて参照により本明細書に組み込まれる。矛盾する場合、定義を含めて本明細書が優先する。さらに、材料、方法および例は、単に例示するものであって、限定するものであるようには意図されていない。
【0016】
図1は、概して、データ処理装置を示す。装置は、ベクトルデータVload/Storeを記憶装置10と交換するベクトル処理ユニット74を有するVLIWプロセッサ70を備えている。VLIWプロセッサ70は、プログラムカウンタPCを生成し、プログラムカウンタが示すプログラムメモリ80のアドレスからVLIW命令IVLIWを取得する。この場合、VLIWプロセッサ70は、データSLSをスカラデータメモリ60と交換するスカラ処理ユニット72を有している。この実施形態では、スカラプロセッサ72は、プログラムカウンタPCを生成する役割を有している。データ処理装置は、特にさまざまな特性の画像データのような2次元データを処理するのに適している。
【0017】
図2は、記憶装置用の複数のアクセスモードを示す。行アクセスモード10Aによれば、記憶装置は行単位でアクセスされる。そのアクセスモードでは、一行の要素が同時にアクセスされ、すなわちメモリに書き込まれるかまたはメモリから読み出される。これは、記憶装置が他の装置とデータを交換する時、たとえばデータがスキャナまたはカメラから取得される時か、またはデータがフレームバッファに供給される時のデータアクセスの一般的な方法である。しかしながら、画像処理タスクに対し、他のアクセスモード、たとえば列アクセスモード10Bまたはブロックアクセスモードも必要である。画像処理アルゴリズムのタイプに応じて、たとえばアクセスモード10Cによる4×4ブロック、アクセスモード10Dによる8×2ブロック、またはアクセスモード10Eによる2×8ブロックへのアクセスが必要な場合がある。列(10B)を、1×16ブロックとみなすことができる。
【0018】
図3は本発明による記憶装置10の実施形態をより詳細に示す。記憶装置10は、行アクセスモードおよびブロックアクセスモードの両方を可能にするという点でマルチモードアクセス可能な記憶装置である。記憶装置10は、各々がそれぞれのバンクインデックス0、…、Fを有する複数のメモリバンク20.0、…、20.Fを有するメモリユニット20を備えている。明確にするために、最初のバンクおよび最後のバンクのみを参照符号で示す。例として、メモリユニットは16のバンクを備えるものと仮定する。しかしながら、いかなる数NBのバンクも可能であることが理解されよう。
【0019】
記憶装置10は、メモリバンク20.0、…、20.Fの各々に対して、入力アドレスおよびシフトパラメータSの関数として回転したバンクアドレスを生成するアドレス発生器30をさらに備えている。
【0020】
記憶装置10は、入力行を量SRだけ回転させ、その回転した入力行をメモリユニット20に供給する入力データ回転器40をさらに備えている。
【0021】
記憶装置10は、メモリユニット20から取得した行を量SLだけ逆回転させ、その回転した出力行を供給する出力回転器50もまた備えている。
【0022】
アドレス発生器30は、メモリバンク20.0、…、20.Fの各々に対し、入力アドレスAddressおよびシフトパラメータSRの関数として、回転したバンクアドレスBA(0)、…、BA(F)を生成する。
【0023】
図4は、アドレス発生器30の実施形態をより詳細に概略的に示す。この実施形態では、アドレス発生器30は、選択されたブロック幅WBに応じてそれぞれのバンク20.0〜20.Fに対して回転したバンクアドレスを生成するセクション30.0〜30.Fと、それぞれのセクション30.0〜30.Fによって供給される回転したバンクアドレスかまたは元のアドレスy0のいずれかを選択する、信号S1によって制御される多重化素子32.0〜32.Fとを備えている。明確にするために、最初のセクションおよび最後のセクションとそれらの対応する多重化素子のみを示す。アドレス発生器は、入力パラメータWBおよびモード選択指示信号S1によって制御可能である。この実施形態では、S1=0は行アクセスモードを示し、S1=1はブロックアクセスモードを示す。
【0024】
図5において、図4のものに対応する部分は、100を足した参照数字を有している。図5は、本発明による記憶装置の別の実施形態のアドレス発生器130を示し、それは、座標X,Yを有する第1の座標系からの座標を、座標X*,Y*を有する第2の座標系にマッピングする第1のマッピングユニット134を備えている。第1の座標系のX座標は、ビットXnx1-1,…,X0によって定義され、第1の座標系のY座標は、ビットYny1-1,…,Y0によって定義され、第2の座標系のX*座標は、ビットX*nx2-1,…,X*0によって定義され、第2の座標系のY*座標は、ビットY*ny2-1,…,Y*0によって定義される。インデックス0は最下位ビットを示し、nx1-nx2=ny2-ny1=nである。マッピングユニット134は、以下に従って、X*およびY*座標を有する出力アドレスを生成する。
X*=Xnx1-n-1,…,X0
Y*=Yny1-1,…,Ym,Xnx1-1,…,Xnx1-n,Ym-1,…,Y0
このアドレスマッピングの例を、図6A、図6Bを参照して説明する。図6Aは、幅Wが2048ピクセルであり高さHが2048ピクセルである画像を概略的に示す。したがって、この実施形態では、nx1=11、ny1=11である。画像は、幅64ピクセルおよび高さ8ピクセルの一次セルに分割される。一次セルは、左から右へかつ上から下へ順序付けられている。これらの一次セルのうちの4つを、それらの番号0、31、32、63によって示す。マッピングユニット134によるアドレスマッピング後、画像データは、図6Bに概略的に示すように配置される。この第2の座標系X*,Y*は、以下のように入力座標系X,Yに関係する。
X*=X5,…,X0
Y*=Y10,…,Y3,X10,…,X6,Y2,…,Y0
ここで、nx2=6、ny2=16、n=5、m=3である。
【0025】
図7は、アドレス発生器30の例示的な実施態様を示す。図7では、ブロック座標発生器302において、アドレス指定されるブロックの1つの要素の座標(x0,y0)から開始して、ブロックの各要素(x0+1,y0)、…(x0+1,y0+7)のアドレスA0、…、AFが計算される。ブロックの要素の数は、記憶装置のバンクの数に対応する。ブロック要素は、複数のピクセルを含むことができる。たとえば、8ビットの4ピクセルを、32ビットの単一メモリバンク要素に格納してもよい。その場合、x座標の最下位ビット部分を用いて、メモリバンク要素内の特定のピクセルを特定することができる。
【0026】
生成されたアドレスAを、以下のようにビット群から構成されているものとみなすことができる。
A=<SN><CLN><CN><CW>
ここで、SNおよびCLNは、それぞれ、y座標の最上位ビット部分および最下位ビット部分を示す。CNおよびCWは、x座標の最上位ビット部分および最下位ビット部分を示す。
【0027】
画像を、複数の一次セルとして構成されているものとみなすことができ、ここで、x座標およびy座標の最上位ビット部分は座標の一次セルを特定し、x座標およびy座標の最下位ビット部分はその一次セル内の座標の相対位置を示す。
【0028】
次いで、生成されたアドレスAの各々は、アドレス順序変更ユニット304により、以下によって定義される、順序変更されたアドレスA*に順序変更される。
A*=<SN><CN><CLN><CW>
【0029】
次いで、順序変更されたアドレスのセットA*0,…,A*Fは、回転ユニット306により、SRYを用いて以下のように回転される。
A**I=A*I-SRY mod NB
ここで、SRY=(WB)・y0であり、NBはバンクの数である。WBはバンク数でのブロック幅である。ブロック幅が整数個のバンクに等しい場合、SRYの計算は極めて簡略化される。たとえば、ブロック幅WBが2である場合、SRYの値は単に2×y0であり、それはy0<<2に等しい。
【0030】
SRYによるアドレスのセットの回転を、それ自体既知である回転器306により、たとえばバレルシフタにより、効率的に行うことができる。
【0031】
回転がNBを法(modulo)として行われるという事実を考慮して、計算にはy0のnly個の最下位ビットのみが必要である。ここで、
nly=log2(NB)-log2(WB)
である。ここで、NB=16、WB=2である場合、nlyの値=3である。アドレス順序変更ユニット304および回転ユニット306の順序を逆にしてもよいということに留意されたい。
【0032】
次いで、オフセット加算モジュール308が、オフセットOIを計算し、以下に従ってアドレスA**Iの各々に加算する。
A***I=A**I+OI
【0033】
オフセットOIは、以下に従って計算される。
【0034】
【数1】
【0035】
したがって、ブロック幅WBが2バンクである例では、計算は
【0036】
【数2】
【0037】
となり、以下のオフセットのシーケンスが得られる。
OI=0,0,1,1,…,7,7
【0038】
バンクアドレスBIは、第2の回転ユニット310により、アドレスA***Iから、量SRXだけ回転させることによって計算される。
【0039】
したがって、バンクIのアドレスBIは、
BI=A***I-SRX mod NB
となる。SRXは、一次セル内のブロックのx0座標から導出される。回転操作がNBを法とする演算であるという事実を考慮して、x位置のnx個の最下位ビットのみが関係し、ここでnx=log2NBである。バンク要素毎にND>1ピクセルがある場合、ブロックのx0座標は、以下の式により、x0ピクセル座標x'0から導出される。
【0040】
【数3】
【0041】
ここで、npはlog2NDである。
【0042】
ここで、本発明による記憶装置10のさまざまなアクセスモードについて説明する。
【0043】
本発明による記憶装置の行アクセスモードで行を書き込む時、入力データ回転器40は、入力行を量SRだけ回転させ、回転させた入力行をメモリユニット20に供給する。ここで、SR=WB・yであり、yは行のy座標である。
【0044】
この回転により、座標x,yを有するデータ要素は、以下のようにバンクインデックスIBにマッピングされる。
IB=(WB・y+x>>np)mod NB
行の要素は、各バンクにおいてバンクアドレスAB=yにマッピングされる。ここで、WBはブロック幅である。ブロックアクセスモード中、データを、記憶装置のこの幅のブロックから取得することができる。NBはバンクの数であり、2npはバンクアドレス毎のデータ要素の数である。
【0045】
図8Aは、ブロック幅WBが2バンクに等しく、バンクNBの数が16である一例を、概略的に示す。すべてのバンクアドレスが4個のデータ要素を含むものとさらに仮定する。この例では、バンクアドレス0を有するデータ要素の第1の行0〜0Fは、回転なしに格納され、バンクアドレス1を有する第2の行は2だけ回転し、バンクアドレス2を有する第3の行は4だけ回転する。
【0046】
この実施形態では、読み出されるブロックを、4ピクセルのステップで位置合わせすることができる。
【0047】
この実施形態では、次の行は各々、ブロック幅WBに対応する量だけ回転する。したがって、バンクアドレスABに格納されている行は、WB×AB mod NBだけ回転する。
【0048】
各メモリバンクの幅が4ピクセルであるため、これは、後続する行の各々が2バンク回転し、それが8ピクセルに等価であることを意味する。しかしながら、他のブロックサイズを選択してもよい。図8Bは、たとえば、同じ記憶装置において、幅が16ピクセルであって高さが4ピクセルであるブロックの形態の取得に適しているデータをいかに格納し得るかを示す。この場合、後続する行の各々は、4バンク回転する。たとえば図9に関して示すように、記憶装置は、異なるプレーンを有することができる。第1のプレーンは、たとえば、16×4ブロックとしてアクセスされるデータを格納することができ、別のプレーンはたとえば8×8ブロックとしてデータを格納することができる。
【0049】
行を、行番号の単純な関数である量だけ回転させることは不要である。ブロックの別個の行が別個のバンクに格納されることで十分である。たとえば、出力回転器により逆関数が既知であれば、入力回転器により疑似乱数関数を用いてもよい。
【0050】
行読出しアクセスモード中、行yを読み出している時、出力回転器50により、SL個のバンクの量の逆回転が適用される。ここで、SL=WB・yである。
【0051】
ブロック書込みアクセスモード中、アドレス発生器30は、メモリバンク20.0、…、20.Fの各々に対し、以下のように入力アドレスおよびシフトパラメータの関数として、回転したバンクアドレスを生成する。
【0052】
【数4】
【0053】
ここで、NROWはブロックの行の許容可能な最大数であり、IBはバンクインデックスであり、x0、y0は取得されるブロックの基準座標、たとえば左上隅を示す。ブロックの水平位置は、ブロックの左上データ要素のバンクインデックスIBに対応する。
【0054】
ブロックの行の許容可能な最大数NROWは、バンクの数NBをブロックの幅WBで割った数である。
【0055】
例として、図8Aでは第1のブロックを明るいグレーで示す。このブロックは水平位置x0=0を有している。したがって、生成されるバンクアドレスBA(IB)は、(y0,y0,y0+1,y0+1,…,y0+7,y0+7)である。バンクインデックス2に等価である水平位置x0=8を有するブロックの場合、生成されるバンクアドレスBA(IB)は、(y0+7,y0+7,y0,y0,…,y0+6,y0+6)である。
【0056】
図1に示すデータ処理装置は、任意に、(破線で示す)データ供給ユニット90を有し、それは、記憶装置10の複数のメモリバンクによって定義される総データ幅より大きい幅の画像の画像データを供給する。したがって、図5に関して説明したように別のアドレス発生器130が供給される。画像供給ユニット90はカメラまたは別のメモリであってもよい。
【0057】
図9は、本発明によるマルチモードアクセス可能な記憶装置210のさらなる実施形態を示す。ここで図3のものに対応する部分は、100を足した参照数字を有している。図9に示す実施形態では、記憶装置210はアドレス解析器214を備えており、それは、アドレスポートに供給されるアドレスADDRを、記憶装置210内のアドレスADDR1を特定するアドレスラインの第1のセットと、コマンドCMNDをアクセスモードコントローラ216に供給するアドレスラインの第2のセットとに分離する。
【0058】
実施形態では、アドレスADDRの最上位部分がコマンドCMNDを形成する。例として、コマンドは以下のフィールドから構成される。
<モード(2)>|<R/B(2)>|<プレーンID(4)> → ニブル(4ビット)に位置合わせされる8ビット
これらのフィールドは以下の意味を有する。
【0059】
【表1】
【0060】
第1のコマンドビットはアクセスモードを確定する。第1のアクセスモード(ベクトル単一アドレス指定)では、記憶装置210は、従来のメモリとしてアクセス可能である。したがって、アドレス発生器230はアドレス回転を行わず、入力回転器240および出力回転器250は非アクティブ状態である。2次元(2D)アクセスモードでは、記憶装置210は、行アクセスR/B=00とともにブロックアクセスR/B=01を可能にする。
【0061】
この実施形態による記憶装置210では、記憶空間を、一意の特性を有するさまざまな部分(ここではプレーンとして示す)に細分することができる。これらのプレーンに対する設定を定義するために、記憶装置210は、プレーンアクセスモード(モード=11)として示すさらなるアドレス指定モードを有する。アクセスされるプレーンは、プレーンIDフィールドによって示される。この場合、16の異なるプレーンを定義することができるが、他の実施形態では、数がより多いか少ないプレーンを可能とすることができる。
【0062】
図10に示すように、アクセスモードコントローラ216は、制御ロジック218およびプレーンレジスタファイル217を備えている。
【0063】
各プレーンに対する設定を、プレーンレジスタファイル217においてそれぞれのレジスタによって定義することができる。これらのレジスタは以下のフィールドを有することができる。
【0064】
【表2】
【0065】
図11Aは、標準プレーンアクセスの例を示す。図11Bは、インタリーブプレーンアクセスの例を示す。後者のアクセスモードは、各ベクトル要素がLUMAおよびCHROMA成分を有する場合に適している。その場合、データは、インタリーブ方式でプレーン幅が2倍(2048×2=4096)であるものとして表すことができる。このインタリーブ方式では、各奇数ラインは、LUMA成分を含み、(グレーで示す)後続する偶数ラインは対応するCHROMA成分を含む。このインタリーブは、LUMA/CHROMA成分ベクトルの各々に対して別個の基準アドレスを生成しないストリーミングインタフェースに対して必要である場合がある。各成分タイプのブロックを、奇数ラインまたは偶数ラインのいずれかをアドレス指定することにより別個に取得することができる。
【0066】
図12は、第1の座標系において、幅が2048ピクセルであり高さが16ピクセルである記憶装置のプレーンの内容を概略的に示す。ピクセルはそれらのアドレスAによって示され、A=X+2048×Yである。図示する実施形態では、記憶装置は、16バンクを有するメモリを備えている。各メモリ要素は、16ビットの4ベクトル要素を有している。すべてのビットを必ずしも使用する必要はない。実施形態では、たとえば、ベクトル要素毎に9ビットが使用される。プレーンは、長さが64ビットである1024ベクトルの記憶容量を有している。左上隅において、いくつかのベクトルが白およびグレーで示されている。すなわち、第1のベクトルはアドレス0〜63を占有する。第2のベクトルは、64〜127を占有する、等である。図12は、さらに、この記憶装置内のピクセルのブロックのアドレス指定可能性を概略的に示す。開始アドレスA=0を有する第1のブロックB1は、ベクトル境界に位置合わせされる。しかしながら、原点A=0に対してオフセットX=4×m、y=nである任意のブロック(m、nは0以上の整数である)を、ブロックB2、B3、B4によって示すようにアドレス指定することができる。モジュロ式アドレス計算が適用され、すなわち、開始アドレス22648を有するブロックB5は、Y=15まで広がる第1の部分B5aを含む。ブロックB5の次のラインは15+1 mod 16=0であり、それにより、そのブロックは、プレーンの最上部において第2の部分B5bを有する。同様に、開始アドレス18428を有するブロックB6は、X=2044からX=2047まで広がる第1の部分B6aと、プレーンの左側においてX=0からX=3まで広がる第2の部分とを有する。
【0067】
本発明によれば、画像ラインは、画像メモリに回転方式で格納される。一次セルの後続する画像ラインの各々は、フェッチされるブロックの幅Bxに対応するバンクの数だけ回転(循環的にシフト)する。後続するラインの各々がメモリバンクの異なるセットに格納されるという事実のために、それらを、メモリから同時に取得することができる。
【0068】
特許請求の範囲において、「具備する、備える」という語は、他の要素またはステップを排除するものではなく、不定冠詞「1つの(a、an)」は複数を排除するものではない。単一の構成要素または他のユニットが、特許請求の範囲に列挙するいくつかの項目の機能を達成する場合もある。いくつかの手段が相互に異なる請求項に列挙されているという単なる事実は、これらの手段の組合せを用いて利益を得ることができないことを示すものではない。特許請求におけるいかなる参照符号も、その範囲を限定するものと解釈されるべきではない。さらに、反対の意味で明示的に述べない限り、「または(or)」は、包括的論理和を指し、排他的論理和を指すものではない。たとえば、条件AまたはBは、以下のうちのいずれによっても満足される。すなわち、Aは真であり(または存在し)かつBは偽である(または存在しない)、Aは偽であり(または存在せず)かつBは真である(または存在する)、ならびにAおよびBはともに真である(または存在する)。
【0069】
記憶装置のさまざまな機能を、専用のハードウェアで、または適当なプログラムされたプロセッサにより、またはそれらの組合せによって実施することができる。
【符号の説明】
【0070】
10 記憶装置
20 メモリユニット
20.0、…、20.F メモリバンク
30 アドレス発生器
40 入力データ回転器
50 出力回転器
74 ベクトル処理ユニット
90 データ供給ユニット
130 アドレス発生器
134 マッピングユニット
210 記憶装置
216 アクセスモードコントローラ
217 プレーンレジスタファイル
【技術分野】
【0001】
本発明は、マルチモードアクセス可能な記憶装置に関する。
本発明は、さらに、データ要素の行を格納する方法に関する。
本発明は、さらに、データ要素のブロックを取得する方法に関する。
【背景技術】
【0002】
多くの画像処理アルゴリズムでは、画像データの任意のブロックが迅速に利用できることが必要である。したがって、これらのアルゴリズムに対し、ブロック毎にアクセスが可能な記憶装置が必須である。一方、これらのアルゴリズムのための入力データは、通常、ラスタスキャン方式で線状に供給される。同様に、処理されたデータを再びラスタスキャン方式で供給することが必要な場合もある。リアルタイムの現実的なシーンレンダリングを可能とするように、処理速度およびラスタサイズに関するユーザ要件が急速に増大していることがさらに留意される。
【0003】
特許文献1は、ブロックアクセス可能なバッファメモリを備えた画像処理回路について記載している。バッファメモリは、ウィンドウからのピクセル値を格納する複数行のメモリ回路を備えている。メモリ回路は、各々それぞれの行に対してシフト回路として設けられ、それぞれの行からグループへのピクセル値の割当てをシフトするように設けられている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2006/120620号
【発明の概要】
【発明が解決しようとする課題】
【0005】
標準的なマルチバンクメモリにおいて、ラスタスキャン方式でのアクセスとブロック単位のアクセスとをともに効率的にサポートする記憶装置を提供する必要がある。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、ブロックアクセスモードでのブロックアクセスおよび行アクセスモードでの行アクセスを可能にするマルチモードアクセス可能な記憶装置が提供され、この装置は、
各々がそれぞれのバンクインデックスを有する複数のメモリバンクを備えるメモリユニットと、
前記メモリバンクの各々につい入力アドレスおよびシフトパラメータの関数として回転されたバンクアドレスを生成するアドレス発生器と、
入力行を回転させ、回転された入力行のデータ要素をメモリユニットのそれぞれのバンクに供給する入力データ回転器と、
メモリユニットのそれぞれのバンクから取得されるデータ要素を含む行を逆回転させ、回転された出力行を供給する出力回転器と、
を備える。
【0007】
本発明の第2の態様によれば、データ要素の行を格納する方法が提供され、この方法は、
行を受け取るステップと、
行の記憶位置を示す入力アドレスを受け取るステップと、
行の記憶位置に応じた量だけ行内のデータ要素を回転させるステップと、
各要素について入力アドレスの関数としてバンクアドレスを割り当てるステップと、
マルチバンクメモリに行を格納するステップと、を含み、それぞれのデータ要素はそれぞれのバンクのそれぞれのバンクアドレスに格納される。
【0008】
本発明の第3の態様によれば、マルチバンクメモリからデータ要素のブロックを取得する方法が提供され、この方法は、
データ要素のブロックの記憶位置を示す入力アドレスを受け取るステップと、
複数のメモリバンクについて入力アドレスの関数としてバンクアドレスを計算するステップと、
前記メモリのうち前記メモリバンクに対して計算されたバンクアドレスからそれぞれのデータ要素を含む行を取得するステップと、
ブロックの記憶位置に応じた量だけ行内のデータ要素を回転させ、回転されたデータ要素を含む行をブロックとして供給するステップと、
を含む。
【0009】
行アクセスモードでは、受け取られた行は、行の記憶位置、すなわちバンクにおけるアドレスに応じた量だけ回転される。したがって、後続するアドレスに格納される行は、相互に異なるように回転して格納される。回転は、循環シフトであるように理解される。したがって、NRだけ回転するということは、本来はインデックスIBのメモリバンクに割り当てられるデータが、代りに、NBがメモリバンクの数である場合、メモリバンクIB+NR mod NBに割り当てられることを示す。したがって、ブロックの異なる行のデータは、異なるメモリバンクに割り当てられる。これにより、ブロックアクセスモードにおいて前記データを同時に取得することが可能になる。ブロックアクセスモードでは、アドレス発生器は、メモリバンクの各々に対し、ブロックの適切なラインを取得するために、入力アドレスおよびシフトパラメータの関数として、回転されたバンクアドレスを生成する。
【0010】
これらの態様および他の態様について、図面を参照してより詳細に説明する。
【図面の簡単な説明】
【0011】
【図1】データ処理装置を概略的に示す図である。
【図2】複数のアクセスモードを示す図である。
【図3】本発明による記憶装置の実施形態を示す図である。
【図4】図3の実施形態の一部をより詳細に示す図である。
【図5】記憶装置の代替実施形態における前記部分を示す図である。
【図6A】データ要素のマッピングを示す図である。
【図6B】データ要素のマッピングを示す図である。
【図7】実施形態に適したアドレス発生器の例示的な実施態様を示す図である。
【図8A】データ要素のブロックの配置の第1の例を示す図である。
【図8B】データ要素のブロックの配置の第2の例を示す図である。
【図9】本発明による記憶装置のさらなる実施形態を示す図である。
【図10】前記実施形態の一部をより詳細に示す図である。
【図11A】記憶装置の実施形態の2つの動作モードのうちの1つを示す図である。
【図11B】記憶装置の実施形態の2つの動作モードのうちの1つを示す図である。
【図12】記憶装置の実施形態におけるプレーンの内容を概略的に示す図である。
【発明を実施するための形態】
【0012】
以下の詳細な説明では、本発明が十分に理解されるようにするために、多数の特定の詳細を示す。しかしながら、当業者には、本発明をこれらの特定の詳細なしに実施してもよいことが理解されよう。他の場合では、周知の方法、手続きおよび構成要素については、本発明の態様を不明瞭にしないように詳細には説明していない。
【0013】
本発明を、本発明の実施形態が示されている添付図面を参照して以下により十分に説明する。しかしながら、この発明は、多くの異なる形態で具現化することができるものであり、本明細書に示す実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態を、この開示が綿密にかつ十分となるように、かつ当業者に本発明の範囲を十分に伝えるように提供する。1つの要素が別の要素に「接続されて」いるかまたは「結合されて」いると言及される場合、それは、他方の要素に直接接続されまたは結合されていてもよく、または介在する要素が存在してもよいことが理解されよう。一方、1つの要素が別の要素に「直接接続されて」いるかまたは「直接結合されて」いると言及される場合、介在する要素は存在していない。全体を通して、同様の番号は同様の要素を指す。本明細書で、「および/または」という用語は、関連する列挙された項目のうちの1つまたは複数のありとあらゆる組合せを含む。
【0014】
本明細書において、さまざまな要素、構成要素および/または部分について述べるために第1の、第2の、第3の等という用語を用いる場合があるが、これら要素、構成要素および/または部分は、これらの用語によって限定されるべきではないことが理解されよう。これらの用語は、1つの要素、構成要素または部分を別の要素、構成要素および/または部分から識別するためにのみ用いられている。したがって、後述する第1の要素、構成要素および/または部分を、本発明の教示から逸脱することなく、第2の要素、構成要素および/または部分と呼ぶことができる。
【0015】
特に定義しない限り、本明細書で用いるすべての用語(技術的用語および科学的用語を含む)は、本発明が属する技術分野における当業者が一般に理解する意味と同じ意味を有している。一般に用いられる辞書で定義される用語等の用語は、関連技術との関連におけるそれらの意味と一致する意味を有しているものと解釈されるべきであり、本明細書において明示的に定義しない限り、理想化されたまたは過度に形式的な意味で解釈されないことがさらに理解されよう。本明細書で言及するすべての出版物、特許出願、特許および他の参考文献は、開示内容がすべて参照により本明細書に組み込まれる。矛盾する場合、定義を含めて本明細書が優先する。さらに、材料、方法および例は、単に例示するものであって、限定するものであるようには意図されていない。
【0016】
図1は、概して、データ処理装置を示す。装置は、ベクトルデータVload/Storeを記憶装置10と交換するベクトル処理ユニット74を有するVLIWプロセッサ70を備えている。VLIWプロセッサ70は、プログラムカウンタPCを生成し、プログラムカウンタが示すプログラムメモリ80のアドレスからVLIW命令IVLIWを取得する。この場合、VLIWプロセッサ70は、データSLSをスカラデータメモリ60と交換するスカラ処理ユニット72を有している。この実施形態では、スカラプロセッサ72は、プログラムカウンタPCを生成する役割を有している。データ処理装置は、特にさまざまな特性の画像データのような2次元データを処理するのに適している。
【0017】
図2は、記憶装置用の複数のアクセスモードを示す。行アクセスモード10Aによれば、記憶装置は行単位でアクセスされる。そのアクセスモードでは、一行の要素が同時にアクセスされ、すなわちメモリに書き込まれるかまたはメモリから読み出される。これは、記憶装置が他の装置とデータを交換する時、たとえばデータがスキャナまたはカメラから取得される時か、またはデータがフレームバッファに供給される時のデータアクセスの一般的な方法である。しかしながら、画像処理タスクに対し、他のアクセスモード、たとえば列アクセスモード10Bまたはブロックアクセスモードも必要である。画像処理アルゴリズムのタイプに応じて、たとえばアクセスモード10Cによる4×4ブロック、アクセスモード10Dによる8×2ブロック、またはアクセスモード10Eによる2×8ブロックへのアクセスが必要な場合がある。列(10B)を、1×16ブロックとみなすことができる。
【0018】
図3は本発明による記憶装置10の実施形態をより詳細に示す。記憶装置10は、行アクセスモードおよびブロックアクセスモードの両方を可能にするという点でマルチモードアクセス可能な記憶装置である。記憶装置10は、各々がそれぞれのバンクインデックス0、…、Fを有する複数のメモリバンク20.0、…、20.Fを有するメモリユニット20を備えている。明確にするために、最初のバンクおよび最後のバンクのみを参照符号で示す。例として、メモリユニットは16のバンクを備えるものと仮定する。しかしながら、いかなる数NBのバンクも可能であることが理解されよう。
【0019】
記憶装置10は、メモリバンク20.0、…、20.Fの各々に対して、入力アドレスおよびシフトパラメータSの関数として回転したバンクアドレスを生成するアドレス発生器30をさらに備えている。
【0020】
記憶装置10は、入力行を量SRだけ回転させ、その回転した入力行をメモリユニット20に供給する入力データ回転器40をさらに備えている。
【0021】
記憶装置10は、メモリユニット20から取得した行を量SLだけ逆回転させ、その回転した出力行を供給する出力回転器50もまた備えている。
【0022】
アドレス発生器30は、メモリバンク20.0、…、20.Fの各々に対し、入力アドレスAddressおよびシフトパラメータSRの関数として、回転したバンクアドレスBA(0)、…、BA(F)を生成する。
【0023】
図4は、アドレス発生器30の実施形態をより詳細に概略的に示す。この実施形態では、アドレス発生器30は、選択されたブロック幅WBに応じてそれぞれのバンク20.0〜20.Fに対して回転したバンクアドレスを生成するセクション30.0〜30.Fと、それぞれのセクション30.0〜30.Fによって供給される回転したバンクアドレスかまたは元のアドレスy0のいずれかを選択する、信号S1によって制御される多重化素子32.0〜32.Fとを備えている。明確にするために、最初のセクションおよび最後のセクションとそれらの対応する多重化素子のみを示す。アドレス発生器は、入力パラメータWBおよびモード選択指示信号S1によって制御可能である。この実施形態では、S1=0は行アクセスモードを示し、S1=1はブロックアクセスモードを示す。
【0024】
図5において、図4のものに対応する部分は、100を足した参照数字を有している。図5は、本発明による記憶装置の別の実施形態のアドレス発生器130を示し、それは、座標X,Yを有する第1の座標系からの座標を、座標X*,Y*を有する第2の座標系にマッピングする第1のマッピングユニット134を備えている。第1の座標系のX座標は、ビットXnx1-1,…,X0によって定義され、第1の座標系のY座標は、ビットYny1-1,…,Y0によって定義され、第2の座標系のX*座標は、ビットX*nx2-1,…,X*0によって定義され、第2の座標系のY*座標は、ビットY*ny2-1,…,Y*0によって定義される。インデックス0は最下位ビットを示し、nx1-nx2=ny2-ny1=nである。マッピングユニット134は、以下に従って、X*およびY*座標を有する出力アドレスを生成する。
X*=Xnx1-n-1,…,X0
Y*=Yny1-1,…,Ym,Xnx1-1,…,Xnx1-n,Ym-1,…,Y0
このアドレスマッピングの例を、図6A、図6Bを参照して説明する。図6Aは、幅Wが2048ピクセルであり高さHが2048ピクセルである画像を概略的に示す。したがって、この実施形態では、nx1=11、ny1=11である。画像は、幅64ピクセルおよび高さ8ピクセルの一次セルに分割される。一次セルは、左から右へかつ上から下へ順序付けられている。これらの一次セルのうちの4つを、それらの番号0、31、32、63によって示す。マッピングユニット134によるアドレスマッピング後、画像データは、図6Bに概略的に示すように配置される。この第2の座標系X*,Y*は、以下のように入力座標系X,Yに関係する。
X*=X5,…,X0
Y*=Y10,…,Y3,X10,…,X6,Y2,…,Y0
ここで、nx2=6、ny2=16、n=5、m=3である。
【0025】
図7は、アドレス発生器30の例示的な実施態様を示す。図7では、ブロック座標発生器302において、アドレス指定されるブロックの1つの要素の座標(x0,y0)から開始して、ブロックの各要素(x0+1,y0)、…(x0+1,y0+7)のアドレスA0、…、AFが計算される。ブロックの要素の数は、記憶装置のバンクの数に対応する。ブロック要素は、複数のピクセルを含むことができる。たとえば、8ビットの4ピクセルを、32ビットの単一メモリバンク要素に格納してもよい。その場合、x座標の最下位ビット部分を用いて、メモリバンク要素内の特定のピクセルを特定することができる。
【0026】
生成されたアドレスAを、以下のようにビット群から構成されているものとみなすことができる。
A=<SN><CLN><CN><CW>
ここで、SNおよびCLNは、それぞれ、y座標の最上位ビット部分および最下位ビット部分を示す。CNおよびCWは、x座標の最上位ビット部分および最下位ビット部分を示す。
【0027】
画像を、複数の一次セルとして構成されているものとみなすことができ、ここで、x座標およびy座標の最上位ビット部分は座標の一次セルを特定し、x座標およびy座標の最下位ビット部分はその一次セル内の座標の相対位置を示す。
【0028】
次いで、生成されたアドレスAの各々は、アドレス順序変更ユニット304により、以下によって定義される、順序変更されたアドレスA*に順序変更される。
A*=<SN><CN><CLN><CW>
【0029】
次いで、順序変更されたアドレスのセットA*0,…,A*Fは、回転ユニット306により、SRYを用いて以下のように回転される。
A**I=A*I-SRY mod NB
ここで、SRY=(WB)・y0であり、NBはバンクの数である。WBはバンク数でのブロック幅である。ブロック幅が整数個のバンクに等しい場合、SRYの計算は極めて簡略化される。たとえば、ブロック幅WBが2である場合、SRYの値は単に2×y0であり、それはy0<<2に等しい。
【0030】
SRYによるアドレスのセットの回転を、それ自体既知である回転器306により、たとえばバレルシフタにより、効率的に行うことができる。
【0031】
回転がNBを法(modulo)として行われるという事実を考慮して、計算にはy0のnly個の最下位ビットのみが必要である。ここで、
nly=log2(NB)-log2(WB)
である。ここで、NB=16、WB=2である場合、nlyの値=3である。アドレス順序変更ユニット304および回転ユニット306の順序を逆にしてもよいということに留意されたい。
【0032】
次いで、オフセット加算モジュール308が、オフセットOIを計算し、以下に従ってアドレスA**Iの各々に加算する。
A***I=A**I+OI
【0033】
オフセットOIは、以下に従って計算される。
【0034】
【数1】
【0035】
したがって、ブロック幅WBが2バンクである例では、計算は
【0036】
【数2】
【0037】
となり、以下のオフセットのシーケンスが得られる。
OI=0,0,1,1,…,7,7
【0038】
バンクアドレスBIは、第2の回転ユニット310により、アドレスA***Iから、量SRXだけ回転させることによって計算される。
【0039】
したがって、バンクIのアドレスBIは、
BI=A***I-SRX mod NB
となる。SRXは、一次セル内のブロックのx0座標から導出される。回転操作がNBを法とする演算であるという事実を考慮して、x位置のnx個の最下位ビットのみが関係し、ここでnx=log2NBである。バンク要素毎にND>1ピクセルがある場合、ブロックのx0座標は、以下の式により、x0ピクセル座標x'0から導出される。
【0040】
【数3】
【0041】
ここで、npはlog2NDである。
【0042】
ここで、本発明による記憶装置10のさまざまなアクセスモードについて説明する。
【0043】
本発明による記憶装置の行アクセスモードで行を書き込む時、入力データ回転器40は、入力行を量SRだけ回転させ、回転させた入力行をメモリユニット20に供給する。ここで、SR=WB・yであり、yは行のy座標である。
【0044】
この回転により、座標x,yを有するデータ要素は、以下のようにバンクインデックスIBにマッピングされる。
IB=(WB・y+x>>np)mod NB
行の要素は、各バンクにおいてバンクアドレスAB=yにマッピングされる。ここで、WBはブロック幅である。ブロックアクセスモード中、データを、記憶装置のこの幅のブロックから取得することができる。NBはバンクの数であり、2npはバンクアドレス毎のデータ要素の数である。
【0045】
図8Aは、ブロック幅WBが2バンクに等しく、バンクNBの数が16である一例を、概略的に示す。すべてのバンクアドレスが4個のデータ要素を含むものとさらに仮定する。この例では、バンクアドレス0を有するデータ要素の第1の行0〜0Fは、回転なしに格納され、バンクアドレス1を有する第2の行は2だけ回転し、バンクアドレス2を有する第3の行は4だけ回転する。
【0046】
この実施形態では、読み出されるブロックを、4ピクセルのステップで位置合わせすることができる。
【0047】
この実施形態では、次の行は各々、ブロック幅WBに対応する量だけ回転する。したがって、バンクアドレスABに格納されている行は、WB×AB mod NBだけ回転する。
【0048】
各メモリバンクの幅が4ピクセルであるため、これは、後続する行の各々が2バンク回転し、それが8ピクセルに等価であることを意味する。しかしながら、他のブロックサイズを選択してもよい。図8Bは、たとえば、同じ記憶装置において、幅が16ピクセルであって高さが4ピクセルであるブロックの形態の取得に適しているデータをいかに格納し得るかを示す。この場合、後続する行の各々は、4バンク回転する。たとえば図9に関して示すように、記憶装置は、異なるプレーンを有することができる。第1のプレーンは、たとえば、16×4ブロックとしてアクセスされるデータを格納することができ、別のプレーンはたとえば8×8ブロックとしてデータを格納することができる。
【0049】
行を、行番号の単純な関数である量だけ回転させることは不要である。ブロックの別個の行が別個のバンクに格納されることで十分である。たとえば、出力回転器により逆関数が既知であれば、入力回転器により疑似乱数関数を用いてもよい。
【0050】
行読出しアクセスモード中、行yを読み出している時、出力回転器50により、SL個のバンクの量の逆回転が適用される。ここで、SL=WB・yである。
【0051】
ブロック書込みアクセスモード中、アドレス発生器30は、メモリバンク20.0、…、20.Fの各々に対し、以下のように入力アドレスおよびシフトパラメータの関数として、回転したバンクアドレスを生成する。
【0052】
【数4】
【0053】
ここで、NROWはブロックの行の許容可能な最大数であり、IBはバンクインデックスであり、x0、y0は取得されるブロックの基準座標、たとえば左上隅を示す。ブロックの水平位置は、ブロックの左上データ要素のバンクインデックスIBに対応する。
【0054】
ブロックの行の許容可能な最大数NROWは、バンクの数NBをブロックの幅WBで割った数である。
【0055】
例として、図8Aでは第1のブロックを明るいグレーで示す。このブロックは水平位置x0=0を有している。したがって、生成されるバンクアドレスBA(IB)は、(y0,y0,y0+1,y0+1,…,y0+7,y0+7)である。バンクインデックス2に等価である水平位置x0=8を有するブロックの場合、生成されるバンクアドレスBA(IB)は、(y0+7,y0+7,y0,y0,…,y0+6,y0+6)である。
【0056】
図1に示すデータ処理装置は、任意に、(破線で示す)データ供給ユニット90を有し、それは、記憶装置10の複数のメモリバンクによって定義される総データ幅より大きい幅の画像の画像データを供給する。したがって、図5に関して説明したように別のアドレス発生器130が供給される。画像供給ユニット90はカメラまたは別のメモリであってもよい。
【0057】
図9は、本発明によるマルチモードアクセス可能な記憶装置210のさらなる実施形態を示す。ここで図3のものに対応する部分は、100を足した参照数字を有している。図9に示す実施形態では、記憶装置210はアドレス解析器214を備えており、それは、アドレスポートに供給されるアドレスADDRを、記憶装置210内のアドレスADDR1を特定するアドレスラインの第1のセットと、コマンドCMNDをアクセスモードコントローラ216に供給するアドレスラインの第2のセットとに分離する。
【0058】
実施形態では、アドレスADDRの最上位部分がコマンドCMNDを形成する。例として、コマンドは以下のフィールドから構成される。
<モード(2)>|<R/B(2)>|<プレーンID(4)> → ニブル(4ビット)に位置合わせされる8ビット
これらのフィールドは以下の意味を有する。
【0059】
【表1】
【0060】
第1のコマンドビットはアクセスモードを確定する。第1のアクセスモード(ベクトル単一アドレス指定)では、記憶装置210は、従来のメモリとしてアクセス可能である。したがって、アドレス発生器230はアドレス回転を行わず、入力回転器240および出力回転器250は非アクティブ状態である。2次元(2D)アクセスモードでは、記憶装置210は、行アクセスR/B=00とともにブロックアクセスR/B=01を可能にする。
【0061】
この実施形態による記憶装置210では、記憶空間を、一意の特性を有するさまざまな部分(ここではプレーンとして示す)に細分することができる。これらのプレーンに対する設定を定義するために、記憶装置210は、プレーンアクセスモード(モード=11)として示すさらなるアドレス指定モードを有する。アクセスされるプレーンは、プレーンIDフィールドによって示される。この場合、16の異なるプレーンを定義することができるが、他の実施形態では、数がより多いか少ないプレーンを可能とすることができる。
【0062】
図10に示すように、アクセスモードコントローラ216は、制御ロジック218およびプレーンレジスタファイル217を備えている。
【0063】
各プレーンに対する設定を、プレーンレジスタファイル217においてそれぞれのレジスタによって定義することができる。これらのレジスタは以下のフィールドを有することができる。
【0064】
【表2】
【0065】
図11Aは、標準プレーンアクセスの例を示す。図11Bは、インタリーブプレーンアクセスの例を示す。後者のアクセスモードは、各ベクトル要素がLUMAおよびCHROMA成分を有する場合に適している。その場合、データは、インタリーブ方式でプレーン幅が2倍(2048×2=4096)であるものとして表すことができる。このインタリーブ方式では、各奇数ラインは、LUMA成分を含み、(グレーで示す)後続する偶数ラインは対応するCHROMA成分を含む。このインタリーブは、LUMA/CHROMA成分ベクトルの各々に対して別個の基準アドレスを生成しないストリーミングインタフェースに対して必要である場合がある。各成分タイプのブロックを、奇数ラインまたは偶数ラインのいずれかをアドレス指定することにより別個に取得することができる。
【0066】
図12は、第1の座標系において、幅が2048ピクセルであり高さが16ピクセルである記憶装置のプレーンの内容を概略的に示す。ピクセルはそれらのアドレスAによって示され、A=X+2048×Yである。図示する実施形態では、記憶装置は、16バンクを有するメモリを備えている。各メモリ要素は、16ビットの4ベクトル要素を有している。すべてのビットを必ずしも使用する必要はない。実施形態では、たとえば、ベクトル要素毎に9ビットが使用される。プレーンは、長さが64ビットである1024ベクトルの記憶容量を有している。左上隅において、いくつかのベクトルが白およびグレーで示されている。すなわち、第1のベクトルはアドレス0〜63を占有する。第2のベクトルは、64〜127を占有する、等である。図12は、さらに、この記憶装置内のピクセルのブロックのアドレス指定可能性を概略的に示す。開始アドレスA=0を有する第1のブロックB1は、ベクトル境界に位置合わせされる。しかしながら、原点A=0に対してオフセットX=4×m、y=nである任意のブロック(m、nは0以上の整数である)を、ブロックB2、B3、B4によって示すようにアドレス指定することができる。モジュロ式アドレス計算が適用され、すなわち、開始アドレス22648を有するブロックB5は、Y=15まで広がる第1の部分B5aを含む。ブロックB5の次のラインは15+1 mod 16=0であり、それにより、そのブロックは、プレーンの最上部において第2の部分B5bを有する。同様に、開始アドレス18428を有するブロックB6は、X=2044からX=2047まで広がる第1の部分B6aと、プレーンの左側においてX=0からX=3まで広がる第2の部分とを有する。
【0067】
本発明によれば、画像ラインは、画像メモリに回転方式で格納される。一次セルの後続する画像ラインの各々は、フェッチされるブロックの幅Bxに対応するバンクの数だけ回転(循環的にシフト)する。後続するラインの各々がメモリバンクの異なるセットに格納されるという事実のために、それらを、メモリから同時に取得することができる。
【0068】
特許請求の範囲において、「具備する、備える」という語は、他の要素またはステップを排除するものではなく、不定冠詞「1つの(a、an)」は複数を排除するものではない。単一の構成要素または他のユニットが、特許請求の範囲に列挙するいくつかの項目の機能を達成する場合もある。いくつかの手段が相互に異なる請求項に列挙されているという単なる事実は、これらの手段の組合せを用いて利益を得ることができないことを示すものではない。特許請求におけるいかなる参照符号も、その範囲を限定するものと解釈されるべきではない。さらに、反対の意味で明示的に述べない限り、「または(or)」は、包括的論理和を指し、排他的論理和を指すものではない。たとえば、条件AまたはBは、以下のうちのいずれによっても満足される。すなわち、Aは真であり(または存在し)かつBは偽である(または存在しない)、Aは偽であり(または存在せず)かつBは真である(または存在する)、ならびにAおよびBはともに真である(または存在する)。
【0069】
記憶装置のさまざまな機能を、専用のハードウェアで、または適当なプログラムされたプロセッサにより、またはそれらの組合せによって実施することができる。
【符号の説明】
【0070】
10 記憶装置
20 メモリユニット
20.0、…、20.F メモリバンク
30 アドレス発生器
40 入力データ回転器
50 出力回転器
74 ベクトル処理ユニット
90 データ供給ユニット
130 アドレス発生器
134 マッピングユニット
210 記憶装置
216 アクセスモードコントローラ
217 プレーンレジスタファイル
【特許請求の範囲】
【請求項1】
ブロックアクセスモードでのブロックアクセスおよび行アクセスモードでの行アクセスを可能にするマルチモードアクセス可能な記憶装置(10)であって、
各々がそれぞれのバンクインデックス(0、…、F)を有する複数のメモリバンク(20.0、…、20.F)を備えるメモリユニット(20)と、
前記メモリバンクの各々について入力アドレスおよびシフトパラメータの関数として回転されたバンクアドレスを生成するアドレス発生器(30)と、
入力ベクトルを回転させ、前記回転された入力ベクトルのベクトル要素を前記メモリユニットのそれぞれのバンクに供給する入力ベクトルデータ回転器(40)と、
前記メモリユニットのそれぞれのバンクから取得されるベクトル要素を含むベクトルを逆回転させ、前記回転された出力ベクトルを供給する出力ベクトル回転器(50)と、
を備えるマルチモードアクセス可能な記憶装置。
【請求項2】
前記アドレス発生器(130)は、座標X,Yを有する第1座標系からの座標を座標X*,Y*を有する第2の座標系にマッピングするマッピングユニット(134)を備え、前記第1の座標系のX座標はビットXnx1-1,…,X0によって定義され、前記第1の座標系のY座標はビットYny1-1,…,Y0によって定義され、前記第2の座標系のX*座標はビットX*nx2-1,…,X*0によって定義され、前記第2の座標系のY*座標はビットY*ny2-1,…,Y*0によって定義され、インデックス0は最下位ビットを示し、nx1-nx2=ny2-ny1=nであり、前記マッピングユニットは、
X*=Xnx1-n-1,…,X0
Y*=Yny1-1,…,Ym,Xnx1-1,…,Xnx1-n,Ym-1,…,Y0
に従ってX*およびY*座標を有する出力アドレスを生成する請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項3】
アクセスモードコントローラ(216)をさらに備える請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項4】
前記アクセスモードコントローラ(216)は、ブロック単位のデータアクセスに適用可能なブロックサイズを示す値を含む少なくとも1つのレジスタ(217)を有する請求項3に記載のマルチモードアクセス可能な記憶装置。
【請求項5】
前記マルチモードアクセス可能記憶装置内のアドレス(ADDR1)を特定するアドレスラインの第1のセットと、前記アクセスモードコントローラ(216)にコマンド(CMND)を供給するアドレスラインの第2のセットとを有するアドレスポートを有する請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項6】
前記アドレスラインの第2のセットは、動作モード指示ラインおよびアクセスモード指示ラインのうちの少なくとも1つを含む請求項5に記載のマルチモードアクセス可能な記憶装置。
【請求項7】
マルチモードアクセス可能な記憶装置(210)は複数のプレーンを有し、前記アドレスラインの第2のセットはプレーン識別ラインを含む請求項6に記載のマルチモードアクセス可能な記憶装置。
【請求項8】
請求項1に記載のマルチモードアクセス可能な記憶装置(10)と、前記マルチモードアクセス可能な記憶装置に結合されたベクトル処理ユニット(74)とを有するデータ処理装置。
【請求項9】
前記複数のメモリバンクによって定義される総データ幅より大きい幅を有する画像の画像データを供給するデータ供給ユニット(90)をさらに有し、前記アドレス発生器は、前記データ供給ユニットからの画像データを一次セルとして編成し、各一次セルは前記総データ幅に対応する幅を有する請求項8に記載のデータ処理装置。
【請求項10】
前記一次セルは、前記画像データ供給ユニットによって供給される画像の高さより低い高さを有する請求項9に記載のデータ処理装置。
【請求項11】
データ要素の行を格納する方法であって、
前記データ要素の行を受け取るステップと、
前記行の記憶位置を示す入力アドレスを受け取るステップと、
前記行の記憶位置に応じた量だけ前記行内のデータ要素を回転させるステップと、
各データ要素について前記入力アドレスの関数としてバンクアドレスを割り当てるステップと、
マルチバンクメモリに前記行を格納するステップと、
を含み、
それぞれのデータ要素はそれぞれのバンクのそれぞれのバンクアドレスに格納される方法。
【請求項12】
マルチバンクメモリからデータ要素のブロックを取得する方法であって、
前記データ要素のブロックの記憶位置を示す入力アドレスを受け取るステップと、
複数のメモリバンクについて前記入力アドレスの関数としてバンクアドレスを計算するステップと、
前記メモリのうち前記メモリバンクについて計算されたバンクアドレスからそれぞれのデータ要素を有する行を取得するステップと、
前記行の記憶位置に応じた量だけ前記行内のデータ要素を回転させ、前記回転されたデータ要素を有する行をブロックとして供給するステップと、
を含む方法。
【請求項13】
前記バンクアドレスを割り当てるステップは、
画像におけるx位置を示す第1のデータとy位置を示す第2のデータとを含む入力アドレスを受け取るステップと、
前記第1のデータを最上位部分および最下位部分に区分するステップと、
前記第1のデータの最上位部分および前記第2のデータに基づき前記バンクアドレスを割り当てるステップと、
を含む請求項11に記載の方法。
【請求項14】
マルチバンクメモリに2次元データを格納する方法であって、
前記2次元データは少なくとも第1および第2の相互に独立した座標の関数としての値を含み、
前記方法は、
第1の座標(x)および第2の座標(y)についての値を受け取るステップと、
バンクインデックスIBおよびバンク内のアドレスAを割り当てて前記値を格納するステップと、
を含み、
前記バンクインデックスIBはIB=Nb・yによる前記第1および第2の座標の両方の関数である方法。
【請求項1】
ブロックアクセスモードでのブロックアクセスおよび行アクセスモードでの行アクセスを可能にするマルチモードアクセス可能な記憶装置(10)であって、
各々がそれぞれのバンクインデックス(0、…、F)を有する複数のメモリバンク(20.0、…、20.F)を備えるメモリユニット(20)と、
前記メモリバンクの各々について入力アドレスおよびシフトパラメータの関数として回転されたバンクアドレスを生成するアドレス発生器(30)と、
入力ベクトルを回転させ、前記回転された入力ベクトルのベクトル要素を前記メモリユニットのそれぞれのバンクに供給する入力ベクトルデータ回転器(40)と、
前記メモリユニットのそれぞれのバンクから取得されるベクトル要素を含むベクトルを逆回転させ、前記回転された出力ベクトルを供給する出力ベクトル回転器(50)と、
を備えるマルチモードアクセス可能な記憶装置。
【請求項2】
前記アドレス発生器(130)は、座標X,Yを有する第1座標系からの座標を座標X*,Y*を有する第2の座標系にマッピングするマッピングユニット(134)を備え、前記第1の座標系のX座標はビットXnx1-1,…,X0によって定義され、前記第1の座標系のY座標はビットYny1-1,…,Y0によって定義され、前記第2の座標系のX*座標はビットX*nx2-1,…,X*0によって定義され、前記第2の座標系のY*座標はビットY*ny2-1,…,Y*0によって定義され、インデックス0は最下位ビットを示し、nx1-nx2=ny2-ny1=nであり、前記マッピングユニットは、
X*=Xnx1-n-1,…,X0
Y*=Yny1-1,…,Ym,Xnx1-1,…,Xnx1-n,Ym-1,…,Y0
に従ってX*およびY*座標を有する出力アドレスを生成する請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項3】
アクセスモードコントローラ(216)をさらに備える請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項4】
前記アクセスモードコントローラ(216)は、ブロック単位のデータアクセスに適用可能なブロックサイズを示す値を含む少なくとも1つのレジスタ(217)を有する請求項3に記載のマルチモードアクセス可能な記憶装置。
【請求項5】
前記マルチモードアクセス可能記憶装置内のアドレス(ADDR1)を特定するアドレスラインの第1のセットと、前記アクセスモードコントローラ(216)にコマンド(CMND)を供給するアドレスラインの第2のセットとを有するアドレスポートを有する請求項1に記載のマルチモードアクセス可能な記憶装置。
【請求項6】
前記アドレスラインの第2のセットは、動作モード指示ラインおよびアクセスモード指示ラインのうちの少なくとも1つを含む請求項5に記載のマルチモードアクセス可能な記憶装置。
【請求項7】
マルチモードアクセス可能な記憶装置(210)は複数のプレーンを有し、前記アドレスラインの第2のセットはプレーン識別ラインを含む請求項6に記載のマルチモードアクセス可能な記憶装置。
【請求項8】
請求項1に記載のマルチモードアクセス可能な記憶装置(10)と、前記マルチモードアクセス可能な記憶装置に結合されたベクトル処理ユニット(74)とを有するデータ処理装置。
【請求項9】
前記複数のメモリバンクによって定義される総データ幅より大きい幅を有する画像の画像データを供給するデータ供給ユニット(90)をさらに有し、前記アドレス発生器は、前記データ供給ユニットからの画像データを一次セルとして編成し、各一次セルは前記総データ幅に対応する幅を有する請求項8に記載のデータ処理装置。
【請求項10】
前記一次セルは、前記画像データ供給ユニットによって供給される画像の高さより低い高さを有する請求項9に記載のデータ処理装置。
【請求項11】
データ要素の行を格納する方法であって、
前記データ要素の行を受け取るステップと、
前記行の記憶位置を示す入力アドレスを受け取るステップと、
前記行の記憶位置に応じた量だけ前記行内のデータ要素を回転させるステップと、
各データ要素について前記入力アドレスの関数としてバンクアドレスを割り当てるステップと、
マルチバンクメモリに前記行を格納するステップと、
を含み、
それぞれのデータ要素はそれぞれのバンクのそれぞれのバンクアドレスに格納される方法。
【請求項12】
マルチバンクメモリからデータ要素のブロックを取得する方法であって、
前記データ要素のブロックの記憶位置を示す入力アドレスを受け取るステップと、
複数のメモリバンクについて前記入力アドレスの関数としてバンクアドレスを計算するステップと、
前記メモリのうち前記メモリバンクについて計算されたバンクアドレスからそれぞれのデータ要素を有する行を取得するステップと、
前記行の記憶位置に応じた量だけ前記行内のデータ要素を回転させ、前記回転されたデータ要素を有する行をブロックとして供給するステップと、
を含む方法。
【請求項13】
前記バンクアドレスを割り当てるステップは、
画像におけるx位置を示す第1のデータとy位置を示す第2のデータとを含む入力アドレスを受け取るステップと、
前記第1のデータを最上位部分および最下位部分に区分するステップと、
前記第1のデータの最上位部分および前記第2のデータに基づき前記バンクアドレスを割り当てるステップと、
を含む請求項11に記載の方法。
【請求項14】
マルチバンクメモリに2次元データを格納する方法であって、
前記2次元データは少なくとも第1および第2の相互に独立した座標の関数としての値を含み、
前記方法は、
第1の座標(x)および第2の座標(y)についての値を受け取るステップと、
バンクインデックスIBおよびバンク内のアドレスAを割り当てて前記値を格納するステップと、
を含み、
前記バンクインデックスIBはIB=Nb・yによる前記第1および第2の座標の両方の関数である方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6A−6B】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図12】
【図11A】
【図11B】
【図2】
【図3】
【図4】
【図5】
【図6A−6B】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図12】
【図11A】
【図11B】
【公表番号】特表2012−518831(P2012−518831A)
【公表日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−551027(P2011−551027)
【出願日】平成22年2月22日(2010.2.22)
【国際出願番号】PCT/NL2010/050086
【国際公開番号】WO2010/095944
【国際公開日】平成22年8月26日(2010.8.26)
【出願人】(511203318)
【Fターム(参考)】
【公表日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成22年2月22日(2010.2.22)
【国際出願番号】PCT/NL2010/050086
【国際公開番号】WO2010/095944
【国際公開日】平成22年8月26日(2010.8.26)
【出願人】(511203318)
【Fターム(参考)】
[ Back to top ]