JP2011258207A - 多次元データをデータ競合なしで同時検索するための処理システム、データ構造およびデータ処理方法 - Google Patents
多次元データをデータ競合なしで同時検索するための処理システム、データ構造およびデータ処理方法 Download PDFInfo
- Publication number
- JP2011258207A JP2011258207A JP2011129228A JP2011129228A JP2011258207A JP 2011258207 A JP2011258207 A JP 2011258207A JP 2011129228 A JP2011129228 A JP 2011129228A JP 2011129228 A JP2011129228 A JP 2011129228A JP 2011258207 A JP2011258207 A JP 2011258207A
- Authority
- JP
- Japan
- Prior art keywords
- data
- array
- arrays
- elements
- row
- 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.)
- Withdrawn
Links
Images
Classifications
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Input (AREA)
Abstract
【課題】多次元データをデータ競合なしで同時検索する。
【解決手段】1個のデータポートを有する単一の方形データアレイは、多次元ピクセルアレイを表すデータ要素セットを記憶できる。ロード/記憶ユニットはデータ要素セットを受取り、各別のアドレスポートを有する複数の個別アドレス指定可能データアレイの間で分割記憶できる。個別アドレス指定可能データアレイは、ピクセルアレイの多次元サブアレイを表すデータ要素サブセットからのデータ要素を記憶する単一行を含んでよい。1回の計算サイクルでデータ要素の完全なサブセットを検索するプロセッサは、個別アドレス指定可能データアレイのそれぞれに対応するそれぞれのアドレスポートにアクセスすることで、複数のアドレス指定可能データアレイそれぞれの単一行に同時アクセスできる。実行ユニットは、データ要素サブセットで命令実行できる。
【選択図】 図4
【解決手段】1個のデータポートを有する単一の方形データアレイは、多次元ピクセルアレイを表すデータ要素セットを記憶できる。ロード/記憶ユニットはデータ要素セットを受取り、各別のアドレスポートを有する複数の個別アドレス指定可能データアレイの間で分割記憶できる。個別アドレス指定可能データアレイは、ピクセルアレイの多次元サブアレイを表すデータ要素サブセットからのデータ要素を記憶する単一行を含んでよい。1回の計算サイクルでデータ要素の完全なサブセットを検索するプロセッサは、個別アドレス指定可能データアレイのそれぞれに対応するそれぞれのアドレスポートにアクセスすることで、複数のアドレス指定可能データアレイそれぞれの単一行に同時アクセスできる。実行ユニットは、データ要素サブセットで命令実行できる。
【選択図】 図4
Description
本発明は、映像と画像アプリケーションとに関する。具体的には本発明は、たとえば映像および画像アプリケーションにおいて多次元データを同時に処理するためのデータ処理方法に関する。
映像および画像アプリケーションは、コンピュータメモリからのデータを処理することがある。映像データおよび画像データは、多次元データアレイで記憶され得る。多次元データアレイ内の各データ要素は、画像または映像フレーム内のピクセルに一意的に関連付けられた値を有することができる。多次元データアレイは、それぞれ複数の行または列に及ぶブロックまたはサブアレイに分割され得る。各サブアレイ内のデータ要素は、関係し、互いに相関し、または相互依存しているので、或るプログラムにおける命令は、従来の映像処理メカニズムに従いすべてのデータ要素で一緒にグループとして実行され得る。
プロセッサは、コンピュータメモリから映像データまたは画像データを、データ要素のバースト、束またはグループで検索できる。バーストは、多次元データアレイの単一の行に順次整えられた複数のデータ要素を含んでよい。各ロード操作で、たとえば多次元データアレイの単一の行に順次列挙された4個、8個または16個のデータ要素が検索され得る。データ要素は、1行ずつ順次検索されるので、検索される(単一の行に順次列挙された)データ要素のバーストまたはグループは、互いに相関するデータ要素の(サブアレイの複数行に及ぶ)グループにはしばしば対応しない。したがって、各サブアレイ内の一緒に処理されるすべてのデータを検索するために、プロセッサは、複数のロード操作を通してサブアレイの各行に循環することで、多次元アレイにおけるデータの完全なグループを得ることができる。
発明と見なされる主題は、明細書の結論部分において具体的に指摘され、明確に請求されている。しかしながら本発明は、作動の組織と方法に関して、対象、特徴および利点と併せ、添付の図面を参照しながら以下の詳細な説明を読むことによって最も良く理解されよう。本発明の特定の実施態様を以下の図面に基づいて説明する。
図解を単純で分かりやすくするために、図中に示された要素は、必ずしも縮尺通りに描かれていないことは理解されよう。たとえば分かりやすくするために幾つかの要素の寸法は、他の要素に対して誇張されることがある。さらに、適切と考えられる場合には、対応する要素または類似の要素を示すために図中で参照符号が繰返されることがある。
以下の記述において、本発明の種々の側面を記述する。説明の目的のために、本発明の完全な理解を提供すべく、特定の構成および詳細が記される。しかしながら当業者にとって、本発明は、本明細書中に記された特定の詳細なしに実施できることは明白であろう。さらに、本発明を曖昧にしないために、良く知られている特徴は省略するか、単純化することがある。
特に別途指摘しない限り、以下の議論から明らかなように、明細書全体を通して「処理」、「コンピューティング」、「計算」、「判定」などの用語を用いた議論は、コンピュ
ーティングシステムのレジスタおよび/またはメモリにおいて物理的な量、たとえば電子的な量で表されるデータを、コンピューティングシステムのメモリ、レジスタまたは他の類似の情報記憶ユニット、伝送装置または表示装置における物理的な量として類似に表される他のデータに操作および/または変換するコンピュータ、コンピューティングシステムまたは類似の電子計算装置の動作および/またはプロセスに関係している。
ーティングシステムのレジスタおよび/またはメモリにおいて物理的な量、たとえば電子的な量で表されるデータを、コンピューティングシステムのメモリ、レジスタまたは他の類似の情報記憶ユニット、伝送装置または表示装置における物理的な量として類似に表される他のデータに操作および/または変換するコンピュータ、コンピューティングシステムまたは類似の電子計算装置の動作および/またはプロセスに関係している。
従来のシステムではデジタル画像は、多次元グリッドまたはピクセルアレイを有することができ、これらはコンピュータメモリに記憶された対応するデータ要素の多次元アレイによって表すことができ、その際に各データ要素は、一意的に1ピクセルに対応している。計算オーバーヘッドを低減するために、データアレイは、単一のアドレスポートを有してよい。プロセッサは、典型的に、各計算サイクルにおいてデータ要素を単一のデータアレイ行から各アドレスポート経由で検索する。しかしながらプロセッサは、単一の行ではなく、データアレイの多次元サブアレイで命令を実行してもよい。多次元サブアレイの要素は複数行に及ぶので、従来のプロセッサは、各行のデータを検索するために各別の計算サイクルを使用し、それによって多次元サブアレイのすべての要素を検索するために複数の計算サイクルを使用するであろう。
本発明の実施態様は、1回の計算サイクルで多次元サブアレイのすべての要素が検索されるのを可能にする改善されたメモリ構造を対象としている。
本発明の幾つかの実施態様に従い、個別にアクセス可能および/またはアドレス指定可能な複数のメモリサブユニットが、たとえばプロセッサの内部に設けられている。従来は単一のメモリユニットに記憶される多次元サブアレイからの互いに相関するデータ要素は、複数の個別にアドレス指定可能なメモリサブユニットの間で展開または分割されて、各行は、互いに異なるメモリサブユニットに記憶される。多次元サブアレイの各行は、互いに異なるメモリサブユニットに別々に記憶され、各メモリサブユニットは、それぞれ互いに異なるアドレスポート経由で別々にアクセス可能なので、プロセッサは、1回の計算サイクルで多次元サブアレイに対応するすべての行に同時にアクセスできる。
本発明の幾つかの実施態様に従い、個別にアクセス可能および/またはアドレス指定可能な複数のメモリサブユニットが、たとえばプロセッサの内部に設けられている。従来は単一のメモリユニットに記憶される多次元サブアレイからの互いに相関するデータ要素は、複数の個別にアドレス指定可能なメモリサブユニットの間で展開または分割されて、各行は、互いに異なるメモリサブユニットに記憶される。多次元サブアレイの各行は、互いに異なるメモリサブユニットに別々に記憶され、各メモリサブユニットは、それぞれ互いに異なるアドレスポート経由で別々にアクセス可能なので、プロセッサは、1回の計算サイクルで多次元サブアレイに対応するすべての行に同時にアクセスできる。
図1は、本発明の実施態様に従う例示的な装置の概略的な図解を参照する。
装置100は、コンピュータ装置、映像または画像取込装置または再生装置、セル装置、またはその他の何らかのデジタル装置、たとえば携帯電話、個人用デジタル補助装置(PDA)、ビデオゲームコンソールなどを含んでよい。装置100は、映像データまたは画像データを記録、保存、記憶、処理、編集、表示、投影、受信、送信などして使用または操作するための一連の命令を実行できる装置を含むことができる。装置100は、入力装置101を有することができる。装置100が記録能力を有するときは、入力装置101は、撮像装置、たとえばイメージャ、1個以上のレンズ、プリズムまたはミラーなどを含むカムコーダを備えて、物理的対象の像を、対象から出る光波の反射を介して取込むことができ、および/またはオーディオレコーダ、マイクロホンなどを含む録音装置を備えて、これに投射される音波を記録することができる。
装置100は、コンピュータ装置、映像または画像取込装置または再生装置、セル装置、またはその他の何らかのデジタル装置、たとえば携帯電話、個人用デジタル補助装置(PDA)、ビデオゲームコンソールなどを含んでよい。装置100は、映像データまたは画像データを記録、保存、記憶、処理、編集、表示、投影、受信、送信などして使用または操作するための一連の命令を実行できる装置を含むことができる。装置100は、入力装置101を有することができる。装置100が記録能力を有するときは、入力装置101は、撮像装置、たとえばイメージャ、1個以上のレンズ、プリズムまたはミラーなどを含むカムコーダを備えて、物理的対象の像を、対象から出る光波の反射を介して取込むことができ、および/またはオーディオレコーダ、マイクロホンなどを含む録音装置を備えて、これに投射される音波を記録することができる。
装置100が画像処理能力を有するときは、入力装置101は、ユーザが映像または画
像処理操作を制御、修正または選択するために、ポインティングデバイス、クリックホイールもしくはマウス、キー、タッチスクリーン、音声認識を用いたレコーダ/マイクロホン、その他の入力コンポーネントを有してよい。装置100は、プロセッサ1によって実行される命令のシーケンスに従って映像データまたは画像データをユーザインタフェースに表示するための出力装置102(たとえばモニター、プロジェクタ、スクリーン、プリンタまたはディスプレイ)を有してよい。
像処理操作を制御、修正または選択するために、ポインティングデバイス、クリックホイールもしくはマウス、キー、タッチスクリーン、音声認識を用いたレコーダ/マイクロホン、その他の入力コンポーネントを有してよい。装置100は、プロセッサ1によって実行される命令のシーケンスに従って映像データまたは画像データをユーザインタフェースに表示するための出力装置102(たとえばモニター、プロジェクタ、スクリーン、プリンタまたはディスプレイ)を有してよい。
例示的な装置100は、プロセッサ1を含むことができる。プロセッサ1は、中央処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、マイクロプロセッサ、コントローラ、チップ、マイクロチップ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)またはその他の何らかの集積回路(IC)、またはその他の何らかの適切な多目的もしくは特定プロセッサまたはコントローラを有してよい。
装置100は、外部メモリユニット2とメモリコントローラ3を含んでよい。メモリコントローラ3は、たとえば1個以上のデータバス8を介してプロセッサ1、外部メモリユニット2および出力装置102との間のデータ伝送を制御できる。装置100は、たとえば1個以上のデータバス9を介して出力装置102に表示されるデータ伝送を制御するためのディスプレイコントローラ5を含んでよい。
装置100は、記憶ユニット(ストレージユニット)4を備えることができる。記憶ユニット4は、映像データまたは画像データを圧縮して記憶でき、外部メモリユニット2は、映像データまたは画像データを圧縮せずに記憶され得る。しかしながら、圧縮されたデータまたは圧縮されないデータは、いずれのメモリユニットでも記憶されることができ、またデータを1個以上のメモリに記憶するための別の配置構成が使用されてもよい。各圧縮されないデータ要素は、画像または映像フレーム内の1ピクセルに一意的に関連付けられた値を持つことができ、各圧縮されたデータ要素は、1フレーム内のピクセルの値、またはビデオストリームもしくは動画における連続フレームの間のピクセルの値の変動または変化を表すことができる。別途指摘のない限り、本明細書中で使用されるデータ要素は一般に、たとえば単一の画像フレームにおける1ピクセル値またはピクセル成分値(たとえばYUV値またはRGB値)に関係する圧縮されないデータ要素を指し、たとえば連続画像フレームにおけるピクセルの値の間の変化に関係する圧縮されたデータ要素を指すのではない。ピクセルアレイに対する圧縮されないデータは、対応する1個の多次元データアレイ(たとえば図2に示す)または複数個の多次元データアレイ(たとえば図3に示す)において表されてよく、圧縮されたデータは、データストリームまたは一次元(1D)データアレイ(図示せず)として表されてよい。
内部メモリユニット14は、直接アクセス可能か、またはプロセッサ1の内部の(物理的に取付けた、もしくは内部に格納された)メモリユニットであることができる。内部メモリユニット14は、短期的メモリユニットであってよく、外部メモリユニット2は、長期的または短期的メモリユニットであってよく、記憶ユニット4は、長期的メモリユニットであってよい。しかしながらこれらのいずれのメモリも長期的メモリユニットまたは短期的メモリユニットであることができる。記憶ユニット4は、1個以上の外部駆動装置、たとえばディスクドライブもしくはテープドライブ、または外部装置、たとえばビデオレコーダ、オーディオレコーダおよび/または画像レコーダ内のメモリを含んでよい。内部メモリユニット14、外部メモリユニット2および記憶ユニット4は、たとえばランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、キャッシュメモリ、揮発性メモリ、非揮発性メモリまたはその他の適切なメモリユニットもしくは記憶ユニットを含むことができる。内部メモリユニット14、外部メモリユニット2および記憶ユニット4は、各別のメモリユニット(たとえば「オフチップ」)または一体
化されたメモリユニット(たとえば「オンチップ」)として実装できる。多層メモリまたはメモリ階層が存在する実施態様において、記憶ユニット4と外部メモリユニット2は、オフチップであってよく、内部メモリユニット14は、オンチップであってよい。たとえば内部メモリユニット14は、密結合メモリ(TCM)、バッファまたはキャッシュ、たとえばL1キャッシュもしくはL2キャッシュを含んでよい。L1キャッシュは、L2キャッシュよりも比較的多くプロセッサ1に一体化され、プロセッサのクロックレートで動作できるのに対し、L2キャッシュは、L1キャッシュよりも比較的少なくプロセッサ1に一体化され、プロセッサのクロックレートとは異なる速度で動作できる。一実施態様において、プロセッサ1は、メモリユニット、たとえば外部メモリユニット2、内部メモリユニット14および/または記憶ユニット4との間でデータの読取り、書込み、および/または伝送を行うためにダイレクトメモリアクセス(DMA)ユニットを使用してよい。その他の、または追加のメモリアーキテクチャーも使用できる。
化されたメモリユニット(たとえば「オンチップ」)として実装できる。多層メモリまたはメモリ階層が存在する実施態様において、記憶ユニット4と外部メモリユニット2は、オフチップであってよく、内部メモリユニット14は、オンチップであってよい。たとえば内部メモリユニット14は、密結合メモリ(TCM)、バッファまたはキャッシュ、たとえばL1キャッシュもしくはL2キャッシュを含んでよい。L1キャッシュは、L2キャッシュよりも比較的多くプロセッサ1に一体化され、プロセッサのクロックレートで動作できるのに対し、L2キャッシュは、L1キャッシュよりも比較的少なくプロセッサ1に一体化され、プロセッサのクロックレートとは異なる速度で動作できる。一実施態様において、プロセッサ1は、メモリユニット、たとえば外部メモリユニット2、内部メモリユニット14および/または記憶ユニット4との間でデータの読取り、書込み、および/または伝送を行うためにダイレクトメモリアクセス(DMA)ユニットを使用してよい。その他の、または追加のメモリアーキテクチャーも使用できる。
プロセッサ1は、ロードユニット12、マップユニット6および実行ユニット11を含んでよい。プロセッサ1は、外部メモリユニット2、内部メモリユニット14および/または記憶ユニット4からのデータを要求、検索および処理でき、一般にデータで実行された操作のパイプラインフローを制御できる。
各ロード操作または計算サイクルにおいて、ロードユニット12は、データ構造(たとえば図2の多次元データアレイ200)の単一の行からの順次データ要素のセットまたは「バースト」を検索し、または取出し、このデータをロードして内部メモリまたはレジスタに記憶され得る。ロードユニット12が1回のサイクルで2行以上の単一のアドレスポートを有するデータ構造にアクセスしようとすると、ロードユニット12は、「データ競合」を経験することで、現在のサイクルでは1行しか検索できず、残りの各行へのアクセスは、別のサイクルまで遅れることになろう。
代替的な実施態様において、単一の行からデータ要素を検索する代わりに、ロードユニット12は、各ロード操作において外部メモリユニット2内のデータ構造の単一の列から(または斜めに横断するか、他の所定のパターンで)順次データ要素を検索してよい。
プロセッサ1は、ロードされたデータを内部メモリ14、たとえばバッファ、密結合メモリまたはキャッシュに書き込んでよい。プロセッサ1は、多次元サブアレイの複数行に及ぶ互いに相関するデータ要素の完全なセットが内部メモリ14に記憶されて初めてデータ要素で命令を実行できる。
互いに相関するデータ要素の完全なセットがロードされて内部メモリ14に記憶されたら、プロセッサ1は、データセットに対する命令を呼出して解読し、それから実行ユニット11がこれらの命令を実行できる。命令は、プログラムメモリ(たとえば外部メモリユニット2および/または記憶ユニット4)に記憶されて、たとえばコンピュータプログラムの仕様に従い相関映像データまたは画像データの完全なセットに順次適用されてよい。プロセッサ1は、たとえば各命令に対して、以下に例示する順次パイプラインステージを実行できる。
多次元映像データまたは画像データに対する各命令を実行するために、プロセッサ1は、多次元の或る次元の各データ要素を、多次元のうちの他の次元の互いに相関するデータ要素と一緒に処理できる。互いに相関するデータセットが多次元によって定義されるとき、多次元のすべての座標は、何らかの適切な映像処理メカニズムに従い、グループとして一緒に処理されて完全または精確なデータを生成する。直交座標空間(xyz)における点配置が(x)、(y)および(z)すべての値で定義されて、(x)のみの値で定義されるのではないように、1個の多次元映像データまたは画像データは、すべての相関多次
元データ要素によって定義され得る。
元データ要素によって定義され得る。
映像データまたは画像データは、多次元データ構造に記憶され得る。多次元データ構造は、互いに相関するデータ要素の特異的なセットまたはこれに関連するピクセルと、それぞれ一意的に対応する複数の多次元サブアレイを含んでよい。各サブアレイ内の互いに相関するデータ要素は、多次元データアレイの複数の行または列に及んでよい。
図2は、本発明の実施態様の理解に有用な映像データおよび画像データを記憶するための2次元(2D)データアレイ200を示す。2次元(2D)データアレイ200は、たとえば複数のブロックまたはサブアレイ201−264を含んでよく、それぞれ互いに相関するデータ要素の特異的なセットを含んでいる。たとえばサブアレイ201におけるすべての互いに相関するデータ要素265がメモリから検索されて、一緒に処理され得る。図2に示す例において、データアレイ200は、(256個の)サブアレイ201−264を有する(64x64個の)データアレイ(64x64ピクセルグリッドに対応)であり、各サブアレイは、(16個の)互いに相関するデータ要素を有する(4x4)サブアレイである。
サブアレイ201内の(16個の)互いに相関するデータ要素265を検索するために、プロセッサは、複数の操作サイクルを実行することで、複数行サブアレイ201のそれぞれの行におけるデータ要素265を各別にロードできる。たとえばプロセッサは、図2で(4)行の(4x4)サブアレイ201−264のそれぞれから、それぞれ互いに異なるロードサイクルで一度に1行ずつデータ要素265を検索できる。したがって、(4)行の(4x4)サブアレイ201における(16個の)互いに相関するデータ要素265のすべてを検索するには、プロセッサは、(4)各別の計算サイクルで(4個の)各別のバーストにおいてデータメモリにアクセスできる。
サブアレイ201の各行において最初の4個の(4)順次データ要素265のみが互いに相関しているので、各バーストにおけるデータ要素の数を増やすことで、(4)よりも大きく、たとえば(8)または(16)にすると、そのようなプロセッサは、データ要素266をさらに(たとえばサブアレイ202内の)各行に沿って検索するであろうが、これらのデータ要素266は、最初の(4個の)データ要素265とは相関していない。したがって従来のプロセッサを使用すると、バーストサイズは、(16個の)互いに相関するデータ要素265を検索するために必要とされる計算サイクルの数に影響せず、その数は、この例では、各バーストで検索されるデータ要素の数に関わりなく同じ(たとえば4サイクル)である。
本発明の実施態様は、各(たとえば4x4)サブアレイ201−209のすべての互いに相関するデータ要素が1回の計算サイクルで検索され得るようにする内部および/または外部メモリデータ構造を対象としている。データを検索するとは、データをロードすること、またはデータを記憶することのいずれも指すことができる。本発明の実施態様は、図2のデータアレイ200からのデータ要素を、図3のデータ構造300に変換することを含んでよい。図2のデータアレイ200は、単一のメモリポートを有してよく、図3のデータ構造300は、複数のデータポートを有してよいのに対し、1個のポートがデータ構造300内の複数のデータアレイのそれぞれに個別にアクセスする。図2のデータアレイ200は、図1の外部メモリユニット2内のメモリサブユニット16(単一のアドレスポートを有する)に記憶されてよく、図3のデータアレイ300は、図1の内部メモリユニット14内のメモリユニット120の複数のメモリバンクまたはメモリサブユニット118(各々それぞれ互いに異なるアドレスポートを有する)に記憶されてよい。ただし、図2のデータアレイ200または図3のデータ構造300は、内部メモリユニット14、外部メモリユニット2および/または記憶ユニット4のいずれにも記憶され得る。
図3は、本発明の幾つかの実施態様に従い、映像データおよび画像データを記憶するためのデータ構造300を概略的に図解する。データ構造300は、個別にアクセス可能および/またはアドレス指定可能な複数のデータアレイ301−308を含んでよい。多次元サブアレイの互いに相関するデータ要素(たとえば図2のサブアレイ201における互いに相関するデータ要素265)は、データ競合を排除するために複数の個別アドレス指定可能データアレイ301−308の間で展開または分割されてよく、そうすることによってすべてのデータ要素が同時に、すなわち1回の計算サイクルでアクセスされ得るようになる。
プロセッサの単一のロードユニット12は、1回の計算サイクルで個別にアドレス指定可能な各データ構造の単一の行からしかデータ要素をロードできないため、本発明の実施態様は、複数行サブアレイの行を個別にアドレス指定可能な複数の互いに異なるデータアレイ301−308に分けることができる。
同じサブアレイからの要素が個別アドレス指定可能データアレイ301−308のいずれか1つの互いに異なる2行には存在しないことを保証するために、データ構造300は、要素をスタガー配列させることができる。一実施態様において、(n個の)積み重ねた行のそれぞれが個別にアドレス指定可能な1個以上の互いに異なるデータアレイ301−308に別々に記憶され、そうして個別にアドレス指定可能な同じデータアレイ301−308の2行が同じサブアレイからのデータを記憶しないように、(nxm個の)サブアレイの(n個の)積み重ねた行のそれぞれが垂直方向にスタガー配列され得る。したがって、個別アドレス指定可能データアレイのそれぞれ301−308は、せいぜい1行の各サブアレイからの互いに相関するデータ要素のセットを有する。プロセッサは、個別アドレス指定可能データアレイのそれぞれ301−308の単一の行に別々にアクセスでき、互いに相関するデータ要素は、個別アドレス指定可能データアレイのそれぞれ301−308のせいぜい単一の行に記憶されているので、プロセッサは、1回の計算サイクルで複数行データアレイのすべての行に対応するすべての互いに相関するデータ要素を同時に検索できる。
図2の単一のデータアレイ200からのデータ要素を、図3の複数の個別アドレス指定可能データアレイ301−308に変換するために、本発明の実施態様に従い、データ要素は、複数の個別アドレス指定可能データアレイ301−308の間で分割され、かつその内部でスタガー配列され得る。一実施態様において、マップユニット6がデータ要素を変換できる。他の実施態様において、図3の個別アドレス指定可能データアレイ301−308は、アドレスを有するアドレスポートのシーケンスを有してよく、アドレスポートのアドレス自体も整えられる。このような実施態様において、アドレスポートのアドレスは、データ要素が伝送される順序に従って整えられる。たとえば個別にアドレス指定可能な第1データアレイ301は、第1アドレスを持ち、個別にアドレス指定可能な第2データアレイ302は、第2アドレスを持つというように続く。したがってプロセッサ1は、図2のデータアレイ200からのデータ要素を、図3の個別アドレス指定可能データアレイ301−308の順次アドレスに従って自動的に変換することができ、各別のマップユニットは、必要とはされない(ただし、マップユニットを使用してもよい)。
1個のアドレスを有する単一のデータアレイ(たとえばデータアレイ200または図2)からのデータ要素を、個別アドレス指定可能データアレイ301−308の間で分割するために、一実施態様においてプロセッサは、データアレイからのデータ要素を、データアレイの各行に順次列挙されている順に、行シーケンスの順序で一度に1行ずつ、個別にアドレス指定可能なすべてのデータアレイ301−308の最初(最上部)の利用可能な行が満杯になるまで伝送でき、さらに次の利用可能な行へと続く。すなわち多次元データ
アレイまたはグリッド内のデータ要素の各(n番目の)行は、個別にアドレス指定可能なそれぞれのデータアレイ301−308における複数の(n番目および/またはn+1番目の)行、つまり隣り合って展開または整列される複数行に分割され得る。一般にプロセッサは、データ要素aij(1≦i≦M、1≦j≦N)を、(NxM個の)データアレイ200において、要素が各行に順次列挙されている順序(たとえば左から右)で行の順番(たとえば上から下)で、a11,…,a1N,a21,…,a2N,a31,…,a3N,…,aM1,…,aMNのように整えることができる。プロセッサデータ要素のシーケンスを、複数(PxQ)の個別アドレス指定可能データアレイ301−308で順番に記憶でき、たとえばすべてのデータアレイ301−308の利用可能な第k行:1≦k≦Pを、データアレイ301−308の順序で満杯にし、データアレイ301−308の次の利用可能な第k+1行:1≦k+1≦Pに進む。
アレイまたはグリッド内のデータ要素の各(n番目の)行は、個別にアドレス指定可能なそれぞれのデータアレイ301−308における複数の(n番目および/またはn+1番目の)行、つまり隣り合って展開または整列される複数行に分割され得る。一般にプロセッサは、データ要素aij(1≦i≦M、1≦j≦N)を、(NxM個の)データアレイ200において、要素が各行に順次列挙されている順序(たとえば左から右)で行の順番(たとえば上から下)で、a11,…,a1N,a21,…,a2N,a31,…,a3N,…,aM1,…,aMNのように整えることができる。プロセッサデータ要素のシーケンスを、複数(PxQ)の個別アドレス指定可能データアレイ301−308で順番に記憶でき、たとえばすべてのデータアレイ301−308の利用可能な第k行:1≦k≦Pを、データアレイ301−308の順序で満杯にし、データアレイ301−308の次の利用可能な第k+1行:1≦k+1≦Pに進む。
最上部サブアレイ201−216の(n)行に及ぶデータアレイの(n)行からのデータ要素が変換された後、次のサブアレイに及ぶデータアレイの次の(n)行が変換される、というように続く。このパターンは、図2のすべてのサブアレイ201−264が、図3の個別アドレス指定可能データアレイ301−308における対応する位置に変換されるまで続くことができる。
しかしながら、単に単一のデータアレイ200からのデータ要素のシーケンスを、複数の個別アドレス指定可能データアレイ301−308に変化するだけでは、互いに相関する要素間のデータ競合を排除できない。図2に示すサブアレイの複数の行において積み重ねられた(たとえば垂直方向に整列された)互いに相関する要素は、図3に示す個別アドレス指定可能データアレイ301−308の複数の行でなおも積み重ねられることができる(たとえば直接互いの行の上か、間に他の行を入れて積み重ねられる)。互いに相関する要素がデータアレイ301−308に積み重ねられると、プロセッサは、1回の計算サイクルで同じデータアレイの複数の行にアクセスできないので、プロセッサは、データ競合を経験し、2回以上の計算サイクルですべての互いに相関するデータ要素の完全なセットを検索せざるを得なくなるであろう。
データ競合を排除することで、1回のサイクルですべての互いに相関するデータ要素を検索するために、本発明の実施態様は、図2の同じサブアレイ201−264からの互いに相関するデータ要素が、いずれかの単一のデータアレイ301−308の2行以上に記憶されないように、プロセッサがデータ要素を変換することを保証できる。たとえば各データアレイ301−308は、各サブアレイ201−264からの互いに相関するデータ要素、たとえばサブアレイ203からの(16個の)互いに相関するデータ要素8−11、72−75、136−139および200−203を記憶するせいぜい単一の行を有することができる。このことを確実にするために、プロセッサは、互いに相関するデータ要素をスタガー配列させてよい。一実施態様において、プロセッサは、データアレイ301−308に、たとえばデータアレイ200のそれぞれの行からのデータ要素のシーケンスの間に「プレースホルダー」または「ヌル」データ要素のシーケンスを挿入できる。ヌルデータ要素を挿入することによって、元のデータアレイ200で垂直方向に整列された互いに相関するデータ要素は、互いに異なるデータアレイ301−308に変換されるときにスタガー配列され、それによってデータ競合を排除できる。
一実施態様において、互いに相関するデータ要素をスタガー配列させることで、個別アドレス指定可能データアレイのそれぞれ301−308がいずれかの単一の(nxm個の)サブアレイ201−264からの互いに相関するデータ要素を記憶するせいぜい1行(または1行の部分)を有するように、(nxm個の)サブアレイ201に及ぶ(NxM個の)データアレイ200からのデータ要素をデータ構造300に変換できる。他の実施態様において、個別アドレス指定可能データアレイのそれぞれ301−308は、各サブア
レイ201−264の各列からのせいぜい1要素を記憶できる。たとえば個別アドレス指定可能データアレイのそれぞれ301−308は、第1サブアレイ201の第1列からのせいぜい1要素(0、64、128または192)に記憶でき、第1サブアレイ201の第2列からのせいぜい1要素(1、65、129または193)に記憶できる、というようにすべてのサブアレイ201−264に続く。したがって、個別アドレス指定可能データアレイのそれぞれ301−308は、(64x64個)200のうち各(4x64個)部分の(64)列のそれぞれからせいぜい1要素を記憶できる。たとえば第1(4x64個の)データアレイ部分は、サブアレイ201−216に対応し、次の部分は、サブアレイ217−232に対応し、そしてサブアレイ233−248、サブアレイ249−264へと続く。
レイ201−264の各列からのせいぜい1要素を記憶できる。たとえば個別アドレス指定可能データアレイのそれぞれ301−308は、第1サブアレイ201の第1列からのせいぜい1要素(0、64、128または192)に記憶でき、第1サブアレイ201の第2列からのせいぜい1要素(1、65、129または193)に記憶できる、というようにすべてのサブアレイ201−264に続く。したがって、個別アドレス指定可能データアレイのそれぞれ301−308は、(64x64個)200のうち各(4x64個)部分の(64)列のそれぞれからせいぜい1要素を記憶できる。たとえば第1(4x64個の)データアレイ部分は、サブアレイ201−216に対応し、次の部分は、サブアレイ217−232に対応し、そしてサブアレイ233−248、サブアレイ249−264へと続く。
図3の例において、プロセッサは、(64x64個の)データアレイ(画像の(64x64個の)ピクセル領域に対応)を、(8個の)それぞれ4ピクセル列の個別アドレス指定可能データアレイ301−308に変換できる。プロセッサは、データアレイ200の第1行(1x64)からの第1データ要素(32個の)を、全(8個の)個別アドレス指定可能データアレイ301−308のすべての第1行が満杯になるまで変換でき、次にデータアレイ200の第1行に残りのデータ要素があれば(この場合は32個の要素が残っている)、プロセッサは、全データアレイ301−308の次の(第2)行が満杯になるまで進む、というように続く。プロセッサは、データアレイの各(1x64)行の(64個の)データ要素の間にヌルデータ要素(図3で「X」と表示)を記憶できる。プロセッサは、データアレイ301−308におけるデータ競合を排除するために互いに相関するデータ要素をスタガー配列させる整数個のヌルデータ要素を記憶でき、その数は、データ構造300の次元によって異なってよい。図3の例ではプロセッサは、(8個の)ヌルデータ要素を記憶できるが、他の数が使用されてもよい。これらのヌルデータ要素は、(64x64個の)データアレイにおける(4x4)サブアレイの互いに相関するデータ要素をスタガー配列させ、その結果として各アドレス指定可能なデータアレイ301−308は、1行に満たない(4x4)サブアレイからの互いに相関するデータ要素と、サブアレイの(4)行に及ぶデータアレイ部分(4x64個)の各列(1)−(64)からのせいぜい1個のデータ要素(1、2、…、64)しか持たない。
互いに相関するデータ要素のセットが1個のアドレスポートを有する単一のデータ構造200の複数行に及んでいる図2とは対照的に、図3では、同じ互いに相関するデータ要素のセットは、個別アドレス指定可能データアレイのそれぞれ301−308のせいぜい1行にしか及ばない。
図2を参照して説明した例において、2Dデータアレイ200は、1個のアドレスポートを有するので、プロセッサは、一度に1行からしかデータを検索できない。したがって、プロセッサは、(4回の)各別のロードサイクルで2D(4x4)サブアレイの互いに相関するデータを検索できる。たとえばバースト1は、行1の要素(6)−(9)を含んでよく、バースト2は、行2の要素(70)−(73)を含んでよく、バースト3は、行3の要素(134)−(137)を含んでよく、バースト4は、行4の要素(198)−(201)を含んでよい。
図3を参照して説明した例において、図2の(4x4)サブアレイ(4x4ピクセルアレイに対応)の積み重ねた(4)行と連続した(4)列からの(16個の)互いに相関するデータ要素の各セットは、(8個の)個別アドレス指定可能データアレイ301−308に配置されており、各データアレイ301−308のせいぜい単一の行が互いに相関するデータ要素を有している。各データアレイ301−308は、個別にアドレス指定可能なので、1回の計算サイクルで(4x4)サブアレイ(たとえば図2で強調されたサブアレイ280)の全(4)行を検索するために、プロセッサは、各データアレイ301−3
08の単一の互いに相関する行からのデータバーストに同時にアクセスできる。たとえばプロセッサは、両データアレイ302と303の行1からの(4x4)サブアレイの第1行に対応するデータ要素(6)−(9)、両データアレイ304と305の行3からの(4x4)サブアレイの第2行に対応するデータ要素(6)−(9)、両データアレイ306と307の行5からの(4x4)サブアレイの第3行に対応するデータ要素(6)−(9)、データアレイ308の行7からの(4x4)サブアレイの第4行に対応するデータ要素(6)−(7)、およびデータアレイ301の行8からの(4x4)サブアレイの第4行に対応するデータ要素(8)−(9)を同時に検索できる。
08の単一の互いに相関する行からのデータバーストに同時にアクセスできる。たとえばプロセッサは、両データアレイ302と303の行1からの(4x4)サブアレイの第1行に対応するデータ要素(6)−(9)、両データアレイ304と305の行3からの(4x4)サブアレイの第2行に対応するデータ要素(6)−(9)、両データアレイ306と307の行5からの(4x4)サブアレイの第3行に対応するデータ要素(6)−(9)、データアレイ308の行7からの(4x4)サブアレイの第4行に対応するデータ要素(6)−(7)、およびデータアレイ301の行8からの(4x4)サブアレイの第4行に対応するデータ要素(8)−(9)を同時に検索できる。
図2のデータ構造200から1個のアドレスポート経由で(4x4)サブアレイのデータ要素を検索するために(4回の)各別のロードサイクルが使用されるのとは対照的に、図3のデータ構造300から複数のアドレスポート経由で同じ要素を検索するために単一(1回)の計算サイクルが使用される。したがって、本発明の実施態様は、たとえば命令の処理に使用される映像データおよび画像データの互いに相関するセットの検索において効率の4倍増を提供できる。
或る実施態様において、互いに相関するデータ要素が個別アドレス指定可能データアレイ301−308の行に一致する行に記憶される場合(たとえばデータ要素(4)−(7))、プロセッサは、データアレイ301−308のサブセット(4)から互いに相関するデータ要素を検索できる。たとえばプロセッサは、データアレイ302、304、306および308から互いに相関するデータ要素(4)−(7)を検索でき、残りのデータアレイ301、303、305および307にアクセスする必要はない。これによってデータメモリの効率が改善され、その結果として性能が向上し、消費電力が減少する。さらに、2個の特異的な互いに相関するデータセットがいずれも個別アドレス指定可能データアレイ301−308のそれぞれ互いに異なるサブセットに一致する場合、プロセッサは、1回の計算サイクルで互いに相関するデータ要素の両セットを同時に検索できる。たとえばプロセッサは、(4)行の互いに相関するデータ要素(8)−(11)を検索するためにデータアレイ301、303、305および307にアクセスし、(4)行の互いに相関するデータ要素(4)−(7)を検索するためにデータアレイ302、304、306および308にアクセスでき、これによって1回の計算サイクルで2個の(4x4)ピクセルサブアレイから要素を検索する。この例では従来のプロセッサは、(4x4)サブアレイをロードするために(4)サイクル使用し、それゆえ2個のそのようなサブアレイをロードするために(8)サイクル使用したので、1(1回の)サイクルで2個のサブアレイから互いに相関するデータを検索できる本発明の実施態様は、効率の8倍増を提供できる。
個別アドレス指定可能データアレイのそれぞれ301−308における互いに相関する行は、或るパターンに従って編成されてよい。図2のデータアレイ200で垂直方向に整列されて(上下に)隣り合った各対のデータ要素は、1行のデータ構造に含まれる要素の間に挿入されたヌルデータ要素の数を加えた数のデータ要素によって分離された一連のデータ要素に変換される。図3に示す例において、(64x64個の)データアレイから変換されて、各行は、(64個の)要素を持ち、(8個の)ヌル要素が使用されている。したがって、図2のデータアレイ200で垂直方向に整列されて隣り合うデータ要素の各対は、データアレイ301−308の所定の位置に変換される。これらのデータ要素は、要素が記憶された順序で数えて(たとえば次の行のセットに進む前に全データアレイ301−308のすべての整列された行を横断して)(64個)+(8個)=(72個の)個別のデータ要素である。1対のあらかじめ整列されて隣り合うデータ要素の間の「距離」もしくはデータ要素の数は、垂直方向に隣り合う要素の「ストライド」または分離と呼ばれる。図3の例では一定のストライド(72)が使用されている。しかしながらストライドでは一定でも可変でもよく、またたとえば或る領域に存在するデータ要素またはピクセル
の数および/または使用されたヌルデータ要素の数に依存した他の任意の数であってもよい。互いに相関するデータの(たとえば変換される前の1方形サブアレイに及ぶ)セットを検索するためにプロセッサは、たとえば(72個の)データ要素のストライドによって分離された個別アドレス指定可能データアレイ301−308の行に自動的にアクセスできる。
の数および/または使用されたヌルデータ要素の数に依存した他の任意の数であってもよい。互いに相関するデータの(たとえば変換される前の1方形サブアレイに及ぶ)セットを検索するためにプロセッサは、たとえば(72個の)データ要素のストライドによって分離された個別アドレス指定可能データアレイ301−308の行に自動的にアクセスできる。
本発明の実施態様は、同じ(4x4)サブアレイに対応する2Dデータアレイ内の互いに相関するデータに関して説明されているが、たとえば(4x8)、(8x4)、(8x8)、(4x16)、(16x16)など任意の方形サブアレイが使用され得ることは理解されよう。さらに、より高次元の、たとえば3次元(3D)データアレイが使用されてよく、これらは、3Dマトリックスまたはテンソルデータ構造によって表され得ることが理解されよう。一例において、LUMAデータ要素は、2Dデータアレイで表され、クロマデータ要素は、2Dまたは3Dデータアレイで表され得る。
(64個の)互いに相関するデータ要素の(4x4x4)サブアレイに分割された3Dデータアレイに対して、プロセッサは、各3D(64x64x64個の)データアレイを(4個の)順次2D(64x64個の)データアレイに変換し、次に、たとえば上で図2と図3を参照して説明したように、各2D(64x64個の)データアレイを複数の(8個の)個別アドレス指定可能データアレイに変換できる。したがって各(4x4x4)サブアレイからの互いに相関するデータ要素は、(32個の)個別アドレス指定可能データアレイに記憶され得る。(32個の)データアレイからの(64個の)互いに相関するデータ要素を検索するために、プロセッサは、各データアレイの単一の行に同時にアクセスでき、各データアレイ行に対してそれぞれ互いに異なるアドレスを用いて、すべての互いに相関するデータ要素を検索する。
対照的に従来の非効率的なプロセッサは、各ロードサイクルで(4x4x4)サブアレイの単一の(4x4)サブアレイの単一の行からデータ要素を検索できる(本発明の実施態様におけるように個別にアドレス指定可能な32個のデータアレイから同時に検索できない)。そのようなプロセッサは、(16の)互いに異なる行にアクセスして(64個の)要素を検索するために、(16の)各別の連続したロードサイクルを用いるであろう。これは、本発明の実施態様に従い同じデータを検索するために用いられる1回のサイクルと比較して計算サイクルの著しい増加である。
他の互いに異なる次元、行、列、アレイまたはサブアレイ、互いに相関する要素の数、ヌルデータ要素の数、サブアレイにおける要素の数、個別アドレス指定可能データアレイ301−308または、メモリバンクの数、バーストサイズ、ロードサイクルまたはクロックサイクルを使用できる。
或る実施態様において、プロセッサは、内部メモリと外部メモリ(たとえば図1に示す内部メモリユニット14と外部メモリユニット2)の両方の個別アドレス指定可能データアレイ301−308に、データ要素を記憶できる。他の実施態様では、プロセッサは、最初に外部メモリ内に存在する図2のデータアレイ200にデータ要素を記憶でき、またプロセッサが1回のロードサイクルで互いに相関するデータセットを直接検索できるように、プロセッサは、内部メモリ内にある図3の個別アドレス指定可能データアレイ301−308にデータ要素を再配列し、マッピングし、変換し、順序付け、展開し、またはその他の方法で再配置してよい。
図4は、本発明の実施態様に従う方法のフローチャートを参照する。
ステップS410において、プロセッサ(たとえば図1のプロセッサ1)は、第1データ構造(たとえば図2の単一のデータアレイ200)からのデータ要素を、第2データ構
造(たとえば図3の複数の個別アドレス指定可能データアレイ301−308を含むデータ構造300)に変換できる。第1データ構造は、1個のアドレスポートを有してよく、第2データ構造は、複数のデータアレイを含み、それぞれが複数のデータアレイの各々に個別にアクセスするための各別のアドレスポートを有してよい。
ステップS410において、プロセッサ(たとえば図1のプロセッサ1)は、第1データ構造(たとえば図2の単一のデータアレイ200)からのデータ要素を、第2データ構
造(たとえば図3の複数の個別アドレス指定可能データアレイ301−308を含むデータ構造300)に変換できる。第1データ構造は、1個のアドレスポートを有してよく、第2データ構造は、複数のデータアレイを含み、それぞれが複数のデータアレイの各々に個別にアクセスするための各別のアドレスポートを有してよい。
プロセッサは、たとえばデータバーストのシーケンスで第2データ構造に変換されるべき第1データ構造から、一連のデータ要素を生成してよい。一連のデータ要素は、たとえば第1データ構造の各行に順次列挙されている順に行シーケンスの順序で一度に1行ずつ整えられてよい。プロセッサは、データ構造の異なる第1行からのデータ要素の間にヌルデータ要素のシーケンスを挿入できる。プロセッサは、たとえば第2データ構造のすべてのデータアレイの(最上部)利用可能な第1行を、データアレイのシーケンスの順序で満杯にすることによって一連のデータ要素を変換でき、それから次の利用可能な行を満杯にする、というように続く。このような変換は、第1データ構造の単一の行を、第2データ構造のそれぞれのデータアレイで整列された複数の行に分割できる。第1データ構造の連続した行からの要素の間にヌルデータ要素を挿入することで、第1データ構造において元は、垂直方向に(他のデータ要素の上か、または重なって)整列されていたデータ要素は、垂直方向に重ならずに斜めになるか、または第2データ構造の互いに異なるデータアレイにスタガー配列され得る。
互いに相関するデータ要素のセットは、垂直方向に積み重ねた複数行(たとえば(4x4)サブアレイを積み重ねた(4)行)に及ぶ第1データ構造のサブセットを含んでよい。プロセッサは、第1データ構造で垂直方向に積み重ねられていた各互いに相関する行を変換することで、第2データ構造のそれぞれ互いに異なるデータアレイ垂直方向にスタガー配列または展開させることができる。一実施態様において、第1データ構造の複数の積み重ねられた行に及ぶ各互いに相関するデータセットは、第2データ構造の各データアレイのせいぜい単一の行に及んでよい。
ステップS420において、データ要素が第2データ構造に変換されたら、プロセッサは、そこから互いに相関するデータ要素のセットを検索できる。第2データ構造の各データアレイは、互いに異なるアドレスポート経由で個別にアクセス可能なので、プロセッサは、1回の計算サイクルで各データアレイの単一の互いに相関する行からのデータバーストに同時にアクセスすることで、互いに相関するデータセットの全(16個の)要素を検索できる。プロセッサは、データ要素のストライドによって分離されたデータアレイの行に、自動的にアクセスできる。
第1データ構造とは対照的に、第1データ構造は(一度に1行のデータにアクセスするための)1個のアドレスポートのみ有し、互いに相関するデータセットは、積み重ねられた(4)行に及ぶので、プロセッサは、(4回の)各別の計算サイクルで互いに相関するデータセットを検索できる。したがって、第2データ構造から互いに相関するデータセットを検索するのは、第1データ構造から同じ互いに相関するデータセットを検索するよりも4倍速いであろう。
ステップS430で、プロセッサは、たとえば第1データ構造の単一のサブアレイから変換されたすべての互いに相関するデータ要素が、第2データ構造から検索されたことを判定できる。したがって互いに相関するデータのデータセットは、完全であり、適切に処理され得る。
ステップS440で、プロセッサは、処理で、たとえばステップS430の完全な互いに相関するデータセットで命令を実行できる。
ステップS450で、ディスプレイ(たとえば図1の出力装置102)は、ステップS
440で処理された互いに相関するデータを表示できる。他のステップまたは一連の操作が使用されてよい。
ステップS450で、ディスプレイ(たとえば図1の出力装置102)は、ステップS
440で処理された互いに相関するデータを表示できる。他のステップまたは一連の操作が使用されてよい。
当業者によって認識されるべきこととして、本発明の実施態様は、映像データまたは画像データに関連して記述されているが、同じまたは類似の、しかし互いに異なるデータタイプに適したデジタル構造を有する任意のデータが使用されてよい。類似のデジタル構造は、互いに相関または相互依存する値のセット、同じデータを相互的もしくは結合的に記述するセット、または多次元データの個々の次元成分のセットを有するデータを含んでよい。
当業者によって認識されるべきこととして、本発明の実施態様は、1個のアドレスを有するデータアレイからのデータ要素を、複数のアドレスを有する複数のデータアレイに配置、整列または変換するシステム、データ構造および方法を記述するが、本発明の他の実施態様において、たとえばデータ要素それ自体を実際に動かし、または再位置決めすることなく、元のデータ構造に複数のアドレスポートが同等に割り当てられてよい。
アドレスポートの数が増えれば、たとえばポートを管理するための計算能力を必要とするなどプロセッサオーバーヘッドが増えることは、理解されよう。したがってアドレスポートは、好ましくはポートの追加がこれに伴うオーバーヘッドの増加という欠点を上回る場合のみ追加されてよい。一例において、或るデータ構造は、図2に示すようにデータアレイ当り1個のポートを使用する。本発明の実施態様は、アドレスポートの数を(たとえば8に)増やすが、それはこのように増やすことが顕著な計算上の利点を有し、たとえば多次元データの検索において図2のデータ構造と比較して4ないし8倍増加するからである。一例において、或るデータ構造は、アドレスポートの数をさらに増やすことによって、同じ計算上の利点を提供できる。たとえば図2の標準データアレイは、個々のデータ要素がそれ自身のアドレスポートを有する場合に提供され得る。このような実施態様では、プロセッサは、1回の計算サイクルで各互いに相関するデータ要素に個々のアドレスで直接アクセスできる。しかしながらそのような実施態様は、本発明の実施態様に従って使用される(8個の)アドレスポートよりも多数のアドレスポート(たとえば64x64サブアレイに対して4096アドレスポート)を使用する。したがって、本発明の実施態様は、同じ計算上の利点を達成するためにプロセッサオーバーヘッドを減少させることで、そのようなデータ構造に対して顕著な利点を提供する。
バーストは、単一の行に配置された順次エントリーとして記述されているが、代替としてバーストは、複数の行を横断する単一の列における順次エントリーであってよいことが理解されよう。そのような実施態様では、プロセッサは、垂直方向に隣り合う(4)列の互いに相関する(4x4)サブアレイを、列が水平方向にスタガー配列された、それぞれ互いに異なるデータアレイに変換できる。一実施態様において、各データアレイは、せいぜい1列の同じサブアレイからの互いに相関するデータ要素を有している。したがって個別アドレス指定可能データアレイのそれぞれからの1列の互いに相関する要素に同時にアクセスすることによって、1回のサイクルで互いに相関するデータ要素の完全なセットが検索され得る。
図2のデータアレイ200から変換されたデータ要素がそれぞれ画像中のピクセルに対応しているのとは異なり、本明細書中に記述されたヌルデータ要素は、典型的に画像情報を持たず、一般に図3のデータ構造300を編成するためにのみ使用される。たとえばヌルデータ要素は、ゼロまたは他の所定の値もしくはマーカーのシーケンスであってよく、または代替としてヌルデータ座標は、空であってよい。したがってヌルデータ要素は、たとえば先行画像行の数、画像行の終わりまたは画像領域を示す画像情報を有してよい。
本発明の実施態様は、プロセッサまたはコントローラ(たとえば図1のプロセッサ1)によって実行されるときに本明細書中に開示された方法を実施する命令を符号化、包含または記憶する物品、たとえばコンピュータまたはプロセッサ可読媒体、コンピュータまたはプロセッサ記憶媒体、たとえばメモリ、ディスクドライブ、USBフラッシュメモリを含むことができる。
以上に示された記述された特定の実施態様は、本発明に関連した多くの配分システムにとって有用であることが明らかであるが、本発明の別の修正も当業者に想到されよう。そのような修正は、すべて添付の特許請求の範囲によって定義される本発明の範囲と精神の内部にあるものと考量される。
Claims (15)
- 多次元データを処理するためのデータ処理方法であって、前記データ処理方法は、
それぞれデータ要素が1ピクセルを表すように、多次元ピクセルアレイを表す複数の前記データ要素からなるデータ要素セットを受取ることと;
複数の個別アドレス指定可能データアレイの間で分割された前記データ要素セットを記憶することであって、それぞれ前記個別アドレス指定可能データアレイは、データ要素サブセットからのデータ要素を記憶するせいぜい単一の行を含み、前記データ要素サブセットは、前記多次元ピクセルアレイの多次元サブアレイを表すことと;
前記データ要素の完全なサブセットを1回の計算サイクルで検索するために、前記個別アドレス指定可能データアレイのそれぞれに対して各別のアドレスポートにアクセスすることによって、複数の前記個別アドレス指定可能データアレイの各単一の行に同時にアクセスすることと;
前記データ要素サブセットに関する1個以上の命令を実行することと;
前記データ要素サブセットに関する1個以上の前記命令を実行することによって処理された映像または画像を表示することと
を備えることを特徴とする、データ処理方法。 - 前記データ処理方法はさらに、前記データ要素セットを、1個のデータポートを有する単一の方形データアレイから、複数のアドレスポートを有する複数のデータアレイに変換することを含む、
請求項1記載のデータ処理方法。 - 単一の方形データアレイの各行から行シーケンスの順序で一度に1行ずつ順次整えられた一連のデータ要素は、複数のデータアレイ全体にわたり複数のデータアレイの順序で最初の利用可能な行の間で分割され、
その後に前記データ要素は、複数の前記データアレイにおける次の利用可能な行の間で分割される、
請求項2記載のデータ処理方法。 - 単一の前記方形データアレイ内では垂直方向に整えられていた前記データ要素は、単一の前記方形データアレイの互いに異なる行から変換されたデータ要素の間に整数個のヌルデータ要素が挿入されることで、複数の前記データアレイの互いに異なるデータアレイへとスタガー配列される、
請求項3記載のデータ処理方法。 - 単一の前記方形データアレイの1行に含まれるデータ要素の数に、前記データアレイの行の間に挿入されたヌルデータ要素の数を加えたものに、等しい数のデータ要素によって分離されている複数の前記データアレイの行から、前記データ要素は検索される、
請求項2記載のデータ処理方法。 - 単一の前記方形データアレイにおいて垂直方向に積み重ねられた前記データ要素の行は、複数のデータアレイのそれぞれ互いに異なるデータアレイに垂直方向にスタガー配列される、
請求項2記載のデータ処理方法。 - 個別アドレス指定可能データアレイの各別のアドレスポートのアドレスは、前記データ要素がこれらに変換される順序で整えられている、
請求項2記載のデータ処理方法。 - 前記変換は、マップユニットによって実行され、
前記データ要素は、単一の前記方形データアレイからロードされ、
前記データ要素は、複数の前記データアレイに記憶されるときにマッピングされる、
請求項2記載のデータ処理方法。 - 前記データ要素は、複数の前記データアレイのそれぞれの各行からバーストで同時に検索される、
請求項1記載のデータ処理方法。 - 多次元データを処理するためのデータプロセッサであって、前記データプロセッサは、
各データ要素が1ピクセルを表すように多次元ピクセルアレイを表すデータ要素のセットとしてのデータ要素セットを受取り、かつ複数の個別アドレス指定可能データアレイの間で分割された前記データ要素セットを記憶するためのロード/記憶ユニットを有し、それぞれ前記個別アドレス指定可能データアレイは、データ要素サブセットからのデータ要素を記憶するせいぜい単一の行を含み、前記データ要素サブセットは、前記多次元ピクセルアレイの多次元サブアレイを表し、
前記データプロセッサは、1回の計算サイクルで前記データ要素の完全なサブセットを検索するために、前記個別アドレス指定可能データアレイのそれぞれに対して各別のアドレスポートにアクセスすることによって、複数の前記個別アドレス指定可能データアレイの各単一の行に同時にアクセスするように構成され、
さらに前記データプロセッサは、前記データ要素サブセットに関する1個以上の命令を実行するための実行ユニットを有していることを特徴とする、
多次元データを処理するためのデータプロセッサ。 - 前記ロード/記憶ユニットは、前記データ要素セットを、1個のデータポートを有する単一の方形データアレイから、複数のアドレスポートを有する複数のデータアレイに変換するように構成されている、
請求項10記載のデータプロセッサ。 - 前記ロード/記憶ユニットは、単一の前記方形データアレイの各行から行シーケンスの順序で一度に1行ずつ順次整えられた一連のデータ要素を、複数のデータアレイ全体にわたり複数のデータアレイの順序で最初の利用可能な行の間に記憶し、
その後に前記ロード/記憶ユニットは、複数の前記データアレイにおいて次の利用可能な行の間に前記データ要素を記憶する、
請求項10記載のデータプロセッサ。 - 前記ロード/記憶ユニットは、単一の前記方形データアレイにおいて垂直方向に積み重ねられたデータ要素の行を、複数の前記データアレイのそれぞれ互いに異なるデータアレイに垂直方向にスタガー配列させるように変換するように構成されている、
請求項10記載のデータプロセッサ。 - 前記データプロセッサは、複数のデータアレイのそれぞれの各行から、前記データ要素の完全なサブセットを同時にバーストで検索する、
請求項10記載のデータプロセッサ。 - 多次元データを処理するための処理システムであって、前記処理システムは、
各データ要素が1ピクセルを表すように、多次元ピクセルアレイを表すデータ要素のセットであるデータ要素セットを記憶する1個のデータポートを有する単一の方形データアレイと;
前記データ要素セットを受取り、かつそれぞれ複数のアドレスポートの各別のアドレス
ポートを有して複数の個別アドレス指定可能データアレイの間で分割された前記データ要素セットを記憶するためのロード/記憶ユニットであって、それぞれ前記個別アドレス指定可能データアレイは、データ要素サブセットからのデータ要素を記憶するせいぜい単一の行を含み、前記データ要素サブセットは、前記多次元ピクセルアレイの多次元サブアレイを表す、ロード/記憶ユニットと;
前記データ要素の完全なサブセットを1回の計算サイクルで検索するために、それぞれ前記個別アドレス指定可能データアレイに対してそれぞれ対応するアドレスポートにアクセスすることによって、複数の前記個別アドレス指定可能データアレイの各単一の行に同時にアクセスするためのプロセッサと;
前記データ要素サブセットで1個以上の命令を実行するための実行ユニットと
を有することを特徴とする、多次元データを処理するための処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/797,727 | 2010-06-10 | ||
US12/797,727 US8320690B2 (en) | 2010-06-10 | 2010-06-10 | System, data structure, and method for simultaneously retrieving multi-dimensional data with zero contention |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011258207A true JP2011258207A (ja) | 2011-12-22 |
Family
ID=44584702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011129228A Withdrawn JP2011258207A (ja) | 2010-06-10 | 2011-06-09 | 多次元データをデータ競合なしで同時検索するための処理システム、データ構造およびデータ処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8320690B2 (ja) |
EP (1) | EP2395473A1 (ja) |
JP (1) | JP2011258207A (ja) |
CA (1) | CA2742586C (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5615386B2 (ja) * | 2010-03-08 | 2014-10-29 | ダグ カーソン アンド アソシエーツ,インク. | 基板への繰返しパターンの特徴の書込み |
US9652622B2 (en) * | 2014-12-17 | 2017-05-16 | Princeton SciTech, LLC | Data security utilizing disassembled data structures |
US10489479B1 (en) | 2016-09-12 | 2019-11-26 | Habana Labs Ltd. | Matrix multiplication engine |
US10204600B2 (en) * | 2017-03-31 | 2019-02-12 | Apical Ltd. | Storage system |
GB2561002B (en) * | 2017-03-31 | 2019-06-26 | Apical Ltd | Storage system |
US10713214B1 (en) | 2017-09-27 | 2020-07-14 | Habana Labs Ltd. | Hardware accelerator for outer-product matrix multiplication |
US11321092B1 (en) * | 2017-11-08 | 2022-05-03 | Habana Labs Ltd. | Tensor-based memory access |
US10915297B1 (en) | 2017-11-15 | 2021-02-09 | Habana Labs Ltd. | Hardware accelerator for systolic matrix multiplication |
WO2022098289A1 (en) * | 2020-11-06 | 2022-05-12 | Santos Ferreira Lucas | System and method for high-throughput image processing |
EP4268086A1 (en) * | 2020-12-23 | 2023-11-01 | Imsys AB | A novel data processing architecture and related procedures and hardware improvements |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6028807A (en) | 1998-07-07 | 2000-02-22 | Intel Corporation | Memory architecture |
TWI335764B (en) | 2007-07-10 | 2011-01-01 | Faraday Tech Corp | In-loop deblocking filtering method and apparatus applied in video codec |
US20110157194A1 (en) * | 2009-12-31 | 2011-06-30 | Omri Eisenbach | System, data structure, and method for processing multi-dimensional video data |
-
2010
- 2010-06-10 US US12/797,727 patent/US8320690B2/en active Active
-
2011
- 2011-06-08 EP EP11169190A patent/EP2395473A1/en not_active Withdrawn
- 2011-06-09 JP JP2011129228A patent/JP2011258207A/ja not_active Withdrawn
- 2011-06-09 CA CA2742586A patent/CA2742586C/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8320690B2 (en) | 2012-11-27 |
US20110307459A1 (en) | 2011-12-15 |
CA2742586C (en) | 2016-08-30 |
EP2395473A1 (en) | 2011-12-14 |
CA2742586A1 (en) | 2011-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011258207A (ja) | 多次元データをデータ競合なしで同時検索するための処理システム、データ構造およびデータ処理方法 | |
US20120113133A1 (en) | System, device, and method for multiplying multi-dimensional data arrays | |
JP3278756B2 (ja) | 画像処理方法及び装置 | |
US10070134B2 (en) | Analytics assisted encoding | |
JP2002328881A (ja) | 画像処理装置および画像処理方法並びに携帯用映像機器 | |
EP2354950A1 (en) | System, data structure, and method for processing multi-dimensional data | |
WO2019041264A1 (zh) | 图像处理装置、方法及相关电路 | |
JP2012009025A (ja) | 多次元データを転置することで垂直フィルタと水平フィルタを切替えるためのシステム、データ構造、および方法 | |
US8305383B2 (en) | Data access apparatus and method | |
US8473679B2 (en) | System, data structure, and method for collapsing multi-dimensional data | |
WO2020107319A1 (zh) | 图像处理方法和设备,以及视频处理器 | |
CN105427235A (zh) | 一种图像浏览方法及系统 | |
US20130278775A1 (en) | Multiple Stream Processing for Video Analytics and Encoding | |
US8350865B2 (en) | Method and system for efficiently organizing data in memory | |
US20140040570A1 (en) | On Die/Off Die Memory Management | |
US8923405B1 (en) | Memory access ordering for a transformation | |
US9179156B2 (en) | Memory controller for video analytics and encoding | |
WO2021092941A1 (zh) | 感兴趣区域-池化层的计算方法与装置、以及神经网络系统 | |
CA2752287A1 (en) | System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120112 |
|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140902 |