JP2016502211A - 画像メモリアクセスの最適化 - Google Patents
画像メモリアクセスの最適化 Download PDFInfo
- Publication number
- JP2016502211A JP2016502211A JP2015549608A JP2015549608A JP2016502211A JP 2016502211 A JP2016502211 A JP 2016502211A JP 2015549608 A JP2015549608 A JP 2015549608A JP 2015549608 A JP2015549608 A JP 2015549608A JP 2016502211 A JP2016502211 A JP 2016502211A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- pixel
- image data
- processed
- processing
- 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
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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
- Image Input (AREA)
Abstract
メモリストレージにおける画像にアクセスする装置およびシステムが本明細書で開示される。当該装置は、複数の画像データを先読込するロジックを含み、複数の画像データは複数の画素領域を含む。当該装置はまた、複数の画像データを、線形的に処理される1次元配列のセットとして配置するロジックも含む。当該装置は更に、複数の画像データから第1画素領域を処理するロジックを含み、第1画素領域はキャッシュに格納される。更に、当該装置は、第1画素領域が処理された後に処理される第2画素領域を複数の画像データからキャッシュへと配置するロジックと、第2画素領域を処理するロジックとを含む。1次元配列のセットをメモリストレージに書き戻すロジックもまた提供され、第1画素領域はキャッシュから追い出される。
Description
本願発明は概して、メモリへのアクセスに関する。より具体的には、本願発明は、ステッパータイラーエンジン(Stepper Tiler Engine)を使用する画像メモリへのアクセスに関する。
メモリの中に格納された複数の画像にアクセスする複数のコンピュータアクティビティは、メモリの中の画像の幾つかの部分に継続的にアクセスし得る。従って、カメラからのビデオのストリーミング、または、複数の画像の高速プリンタへの送信は、毎秒数ギガバイトのデータ帯域幅を必要とし得る。メモリおよびデータ帯域幅の粗悪な管理は、粗悪な画像性能をもたらし得る。
更に、様々なタイプの非効率またはエラーが、ストレージの中の複数の画像にアクセスする間に生じ得る。例えば、あるプロセッサは、キャッシュに配置されていない画像のラインまたは領域を処理しようと試みて、その結果、ストレージから当該ラインまたは画像を処理するという結果をもたらし得る。キャッシュは、ストレージと比較した場合、より高速にアクセスされ得る小さなメモリである。当該画像のラインまたは領域をキャッシュの中で発見できず、その後にストレージから処理した場合、その結果はキャッシュミスである。キャッシュミスは、全くキャッシュミスせずに処理された画像と比較して、画像メモリアクセスを低速化させ得る。
以下の詳細な説明は、開示される主題の多数のオブジェクトおよび特徴の特定の複数の例を含む添付の複数の図面を参照することによって、より良く理解され得る。
複数の実施形態に従って使用され得るコンピューティングデバイスのブロック図である。
複数の実施形態による、ある画像の1次元配列への配置を示す図である。
矩形アセンブラの例示である。
複数の実施形態による、複数の矩形バッファを使用した画像の線形的処理の例を図示している。
複数の実施形態による、複数の矩形バッファを使用したある画像の線形的処理の例を図示している。
複数の実施形態による、複数の矩形バッファを使用したある画像の線形的処理の例を図示している。
複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
複数の実施形態による、メモリの中に格納された画像にアクセスする方法の処理フロー図である。
複数の実施形態による、メモリの中に格納された画像にアクセスするための複数の命令を含む、コンピュータ可読媒体の図である。
本開示及び図面を通じて、同様のコンポーネント及び特徴に言及すべく、同じ数字が使用される。100番台の数字は、図1で初出の複数の特徴を参照し、200番台の数字は、図2で初出の複数の特徴を参照し、他も同様である。
本明細書で説明される複数の実施形態は、画像メモリアクセスの最適化を開示する。画像は、線形アクセスパターンを可能にすべく、1次元(1D)配列として配置される。画像は、本明細書で使用されるように、2次元ビットマップ、ビデオのフレーム、または、3次元オブジェクトであり得る。画像データは、複数の画素領域から構成され得る。画素領域という用語は、本明細書で使用されるように、単一画素、複数の画素のグループ、複数の画素のある領域、または、それらの任意の組み合わせの少なくとも1つであり得る。画像は、複数のラインまたは複数の矩形領域の、複数の画素領域または複数のグループとして処理され得る。複数の実施形態において、インクリメントという用語もまた、ライン、ラインバッファ、矩形、矩形バッファ、データバッファ、配列、1次元配列またはバッファという複数の用語と互換的に、本明細書で参照され得る。処理は、本明細書で使用されるように、画像の複数のインクリメントまたは複数の画素領域の、メモリからプロセッサへのコピー、伝達またはストリーミングについて言及し得、または、コンピュータ、プリンタあるいはカメラのような電子デバイスの出力について言及し得る。従って、メモリアクセスおよび計算の簡略化を目的として、非線形な複数の矩形メモリ領域または非連続な複数のラインへの非効率なメモリアクセスの代わりに、望まれるデータの複数の矩形アクセスパターンまたはラインアクセスパターンを、複数の1次元配列のセットへと連続してパックする。複数のメモリパターンを複数の1次元配列へとパックする本方法によれば、データを効率的にアクセスおよび処理すべく、複数の標準ベクトル処理命令および複数の自動インクリメントメモリアクセス命令を使用できることが、当業者によって認識されるであろう。
ステッパータイラーエンジンは、矩形アセンブラに対して、複数のメモリパターンを先読込するパイプライン処理された機械として機能する。矩形アセンブラは、キャッシュの中で、複数のメモリパターンを線形にパックされた複数の1次元配列のセットへとアセンブルする。ステッパータイラーエンジンが次に、複数の1次元配列のセットを複数のプロセッサに利用可能とし得る。複数の処理ユニットが次に、複数のポインタを使用して複数の1次元配列にアクセスし得る。複数の処理ユニットはデータを処理し、次に、ステッパータイラーエンジンが、処理されたデータを複数の1次元配列からキャッシュまたはストレージへと書き戻す。当該処理が完了した後、矩形アセンブラは、キャッシュから複数の1次元配列を追い出し得る。
更に、ステッパータイラーエンジンは、上記で議論されたように、複数のメモリパターンに自動でアクセスして、それらを線形にパックされた複数の1次元配列へとアセンブルするようにプログラムされ得る、ステータスレジスタおよび制御レジスタのセットを含む。複数のメモリパターンは、パイプライン方式でアクセスされ得る。そこでは、各パターンは連続してアクセスされる。ステッパータイラーエンジンは、プログラム可能な、処理される画像領域全体を連続してステップオーバーする性能、および、パイプラインにおける先読込ステップとして複数の矩形および複数のラインのような複数のメモリパターンを線形にパックされた複数の1次元配列へとアセンブルする性能を含む。複数のメモリパターンは、先読込および処理も可能とする重畳的な方法でアクセスされ得る。複数のメモリパターンが先読込される場合、プロセッサがキャッシュから複数の1次元配列にアクセスしている間に、メモリはステッパータイラーエンジンによってアクセスされ、キャッシュ内で複数の1次元配列へとアセンブルされる。上記で議論されたように、既に処理または使用された複数の1次元配列は、それらがステッパータイラーエンジンによってメモリ内の適切な位置に書き戻された後に、キャッシュから追い出され得る。
更に、複数の実施形態において、画像のラインまたは領域が、複数のキャッシュミスを防止すべく処理される前に、キャッシュの中へと配置され得る。画像は1次元配列として配置され、且つ、アクセスパターンは線形なので、データの配列の処理は、複数のメモリアドレス指定自動インクリメント命令および複数の配列処理指向命令セットを使用してより高速となり得る。なぜならば、画像メモリアクセス中に処理される次のラインまたは領域を予測できるからである。高速アクセスおよび処理を目的として、キャッシュに格納することにより、当該ラインまたは領域を準備することができる。複数の矩形または複数の選択されたラインのような複数のメモリパターンを複数の線形1次元配列のセットへとパックする、本明細書で開示される複数の方法を使用することで、本明細書で説明される複数の実施形態は、処理を高速化すべく、メモリアクセスに複数の最適化を与えることができる。なぜならば、そうしなければ、複数のプロセッサは、処理を続行する前に、メモリが複数の読み取りおよび書き込みオペレーションを完了するのを待つ必要があるからである。
下記の説明及び特許請求の範囲において、「連結された」および「接続された」という用語は、それらの複数の派生語と共に使用され得る。これらの用語は、相互に同義語であることを意図するものではないことが理解されるべきである。むしろ、特定の複数の実施形態において、「接続された」は、2又は3以上の要素が互いに直接物理的又は電気的に接触した状態にあることを示すべく使用され得る。「連結された」は、2又は3以上の要素が直接物理的又は電気的に接触した状態にあることを意味し得る。しかしながら、「連結された」は、2又は3以上の要素が互いに直接接触した状態ではないが、やはりまだ互いに協働または相互作用することも意味し得る。
幾つかの実施形態は、ハードウェア、ファームウェアおよびソフトウェアのうちの1つ又は組み合わせで実装され得る。幾つかの実施形態は、本明細書で説明される複数のオペレーションを実行するコンピューティングプラットフォームによって読み取られて実行され得る機械可読媒体上に格納された、複数の命令として実装され得る。機械可読媒体は、例えばコンピュータといった機械によって読み取り可能な形で、情報を格納または送信するための任意のメカニズムを含み得る。例えば、機械可読媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、または、例えば搬送波、赤外線信号、デジタル信号、または、信号を送信および/または受信するインターフェースといった、電気信号、光信号、音響信号、もしくは他の形の伝播信号、等を含み得る。
ある実施形態は、実装又は例である。本明細書における「ある実施形態」、「1つの実施形態」、「幾つかの実施形態」、「様々な実施形態」、又は「他の複数の実施形態」という言及は、その複数の実施形態に関連して説明された特定の特徴、構造、又は特性が、必ずしも複数の本発明の全ての実施形態ではなく、少なくとも幾つかの実施形態に含まれることを意味する。「ある実施形態」、「1つの実施形態」、又は「幾つかの実施形態」の様々な出現は、必ずしも全て同じ実施形態に関することでない。ある実施形態の要素又は態様は、他の実施形態の要素又は態様に組み合わされ得る。
本明細書で説明及び示される全てのコンポーネント、特徴、構造、特性などは、特定の実施形態又は複数の実施形態に含まれる必要があるとは限らない。例えば、コンポーネント、特徴、構造、又は特性が含まれ「得る(may)」、「るかもしれない(might)」、「ることができる(can)」、又は「ることができるであろう(could)」と本明細書が述べる場合、その特定のコンポーネント、特徴、構造、又は特性は、含まれることが必要とされない。本明細書又は特許請求の範囲が「ある(a)」又は「ある(an)」要素と言及する場合、それは、その要素が1つだけあることを意味しない。本明細書または特許請求の範囲が、「追加の」要素と言及する場合、それは、その追加の要素が1より多くあることを除外しない。
幾つかの実施形態は特定の実装を参照して説明されるが、幾つかの実施形態に従って、他の実装が可能であるということに留意すべきである。更に、複数の図面で示され、および/または、本明細書で説明される複数の回路要素または他の複数の特徴の配置および/または順序は、図示されて説明された特定の方法で配置される必要はない。幾つかの実施形態に従って、多くの他の配置が可能である。
図に示される各システムにおいて、表わされる複数の要素が異なる、および/または、同様であり得ることを示唆すべく、場合によっては、複数の要素が同じ参照番号又は異なる参照番号をそれぞれ有し得る。しかしながら、ある要素は、異なる実装を有し、本明細書で示され又は説明されるシステムの幾つか又は全てと連携するのに十分に柔軟性を有し得る。図に示される様々な要素は、同じであるか異なっていてもよい。どの1つが第1の要素と称され、どれが第2の要素と呼ばれるかは任意である。
図1は、複数の実施形態に従って使用され得るコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、例えばラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、または、サーバ等であり得る。コンピューティングデバイス100は、格納された複数の命令を実行するように構成された中央処理ユニット(CPU)102、および、CPU102によって実行可能な複数の命令を格納するメモリデバイス104を含み得る。CPUは、バス106によってメモリデバイス104に連結され得る。更に、CPU102は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または、任意の数の他の構成であり得る。更に、コンピューティングデバイス100は、1より多くのCPU102を含み得る。CPU102によって実行される複数の命令は、メモリアクセスを最適化すべく使用され得る。CPUの側にある多数のコンピューティングアーキテクチャは、本発明のある実施形態において使用され得、例えば、単一命令複数データ(SIMD)命令セット、デジタル信号処理(DSP)プロセッサ、画像信号プロセッサ(ISP)、GPU、または、超長命令語(VLIW)機械のような他のタイプの配列プロセッサなどである。
コンピューティングデバイス100はまた、グラフィクス処理ユニット(GPU)108も含み得る。示されるように、CPU102は、バス106を通じてGPU108に連結され得る。GPU108は、コンピューティングデバイス100の中で任意の数のグラフィックオペレーションを実行するように構成され得る。例えば、GPU108は、複数のグラフィクス画像、グラフィクスフレーム、ビデオ等を、コンピューティングデバイス100のユーザに表示すべく描写または処理するように構成され得る。幾つかの実施形態において、GPU108は多数のグラフィクスエンジン(図示せず)を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行するように、または、特定の複数のタイプの仕事量を実行するように構成される。
メモリデバイス104は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、または任意の他の適したメモリシステムを含むことができる。例えば、メモリデバイス104は、ダイナミックランダムアクセスメモリ(DRAM)を含み得る。メモリデバイス104は、画像メモリアクセスを最適化するための複数の命令を実行するように構成されたデバイスドライバ110を含み得る。デバイスドライバ110は、ソフトウェア、アプリケーションプログラム、アプリケーションコード等であり得る。
コンピューティングデバイス100は、イメージキャプチャメカニズム112を含む。複数の実施形態において、イメージキャプチャメカニズム112は、カメラ、ステレオカメラ、赤外線センサ等である。イメージキャプチャメカニズム112は、画像情報をキャプチャすべく使用される。従って、コンピューティングデバイス100はまた、1または複数のセンサ114も含む。複数の例において、センサ114はまた、画像テクスチャ情報をキャプチャすべく使用される画像センサでもあり得る。更に、画像センサは、電荷結合素子(CCD)画像センサ、相補型金属酸化膜半導体(CMOS)画像センサ、システムオンチップ(SOC)画像センサ、複数の感光性薄膜トランジスタを備える画像センサ、または、それらの任意の組み合わせであり得る。デバイスドライバ110は、ステッパータイラーエンジンを使用してセンサ114によってキャプチャされた画像にアクセスし得る。
CPU102は、コンピューティングデバイス100を1または複数の入出力(I/O)デバイス118に接続するように構成されたI/Oデバイスインターフェース116に、バス106を通じて接続され得る。複数のI/Oデバイス118は、例えば、キーボードおよびポインティングデバイスを含み得、当該ポインティングデバイスは、タッチパッドまたはタッチスクリーン等を含み得る。複数のI/Oデバイス118は、コンピューティングデバイス100の複数のビルトインコンポーネントであり得、または、コンピューティングデバイス100に外部接続される複数のデバイスであり得る。
CPU102はまた、コンピューティングデバイス100をディスプレイデバイス122に接続するように構成されたディスプレイインターフェース120にも、バス106を通じてリンクされ得る。ディスプレイデバイス122は、コンピューティングデバイス100のビルトインコンポーネントであるディスプレイ画面を含み得る。ディスプレイデバイス122はまた、コンピューティングデバイス100に外部接続されるコンピュータモニタ、テレビまたはプロジェクタ等も含み得る。
コンピューティングデバイスはまた、ストレージデバイス124も含む。ストレージデバイス124は、例えばハードドライブ、光学的ドライブ、サムドライブ、複数のドライブの配列、または、それらの任意の組み合わせのような物理メモリである。ストレージデバイス124は、複数のリモートストレージドライブを含み得る。ストレージデバイス124は、コンピューティングデバイス100上で動作するように構成された任意の数のアプリケーション126を含む。複数のアプリケーション126は、画像データを処理すべく使用され得る。複数の例において、アプリケーション126は、画像メモリアクセスを最適化すべく使用され得る。更に、複数の例において、アプリケーション126は、複数の画像上で様々な処理を実行すべく、メモリの中の複数の画像にアクセスし得る。メモリの中の複数の画像は、以下で説明されるステッパータイラーエンジンを使用してアクセスされ得る。
コンピューティングデバイス100はまた、バス106を通じてコンピューティングデバイス100をネットワーク130に接続するように構成され得るネットワークインターフェースコントローラ(NIC)128も含み得る。ネットワーク130は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、または、インターネット等であり得る。
幾つかの実施形態において、アプリケーション126は、コンピューティングデバイス100からプリントエンジン132に画像を送信できる。プリントエンジンは、画像をプリントデバイス134に送信し得る。プリントデバイス134は、複数のプリンタ、ファックス機器、および、プリントオブジェクトモジュール136を使用して様々な画像をプリントできる他のプリントデバイスを含むことができる。複数の実施形態において、プリントエンジン132は、ネットワーク130を介してデータをプリントデバイス134に送信し得る。更に、イメージキャプチャメカニズム112のような複数のデバイスは、複数の画素の複数の配列を処理すべく、本明細書で説明される複数の技術を使用し得る。複数のディスプレイデバイス122はまた、ディスプレイ上での複数の画素の処理を加速すべく、複数の実施形態において、本明細書で説明される複数の技術も使用し得る。
図1のブロック図は、コンピューティングデバイス100が図1で示される全てのコンポーネントを含むということを、意図的に示すものではない。更に、コンピューティングデバイス100は、特定の実施形態の詳細に応じて、図1で示されていない任意の数の追加的なコンポーネントを含み得る。
図2は、複数の実施形態による、ある画像の1次元配列への配置スキーム200を示す図である。配置スキーム200は、メモリの中の画像にアクセスする複数の処理の効率を改善すべく、メモリの中の画像にアクセスする前にステッパータイラーエンジンおよび矩形アセンブラロジックによって実行され得る。ステッパータイラーエンジンは、2次元画像202の複数の領域が順番に急速に処理されるメモリバッファリングを提供できる。ステッパータイラーは、画像アクセス中に2次元画像の選択された複数の領域を格納すべく、ステッパーキャッシュを使用できる。本明細書で開示される複数の実施形態において、高速アクセス可能な任意のキャッシュを使用できることに留意すべきである。
メモリ104(図1)の中の2次元画像202は、多数の画素領域204に分割され得る。各画素領域204は、1または複数の画素を含み得る。複数の実施形態において、各画素領域204は、複数の画素の矩形グループ、または、複数の画素のライン、または、複数のラインおよび複数の矩形の両方から構成された領域を表わし得る。画像メモリアクセス中に、各画素領域204は、画素領域204がCPU102によって処理される場所となるキャッシュの中へと配置され、処理後に続けてキャッシュ110から取り除され得る。CPUに加えて、複数の実施形態は、ロジカルブロック、単一命令複数データ(SIMD)、GPU、デジタル信号プロセッサ(DSP)、画像信号プロセッサ(ISP)、または、超長命令語(VLIW)機械を含むがこれらに限定されない、任意の他の処理アーキテクチャまたは方法を使用し得る。
ステッパータイラーエンジンは、複数のラインおよび複数の矩形のような複数の領域の1次元配列206のセットとして2次元画像202を再構成できる。従って、複数の非線形メモリ領域と対照的に、メモリアクセスおよび計算の簡略化を目的として任意のアクセスパターンを線形1次元配列へとパックすることができる。1次元配列206の各ブロックは、複数の画素の矩形グループまたはラインであり得る画素領域204を表わし得る。2次元画像202の各矩形ブロックを1次元配列206の画素領域204へと変換することによる、2次元画像202を複数の1次元配列206のセットへとアセンブルする処理が図2で示されるが、その一方で、任意のタイプのアクセスパターンが使用され得る。例えば、2次元画像204の各列もまた、1次元配列へとアセンブルされ得る。
ステッパータイラーによる本構成によって、CPU102は、2次元配列に対して不規則なパターンと対照的に、線形連続パターンで各画素領域204を処理することができる。複数の不規則なメモリアクセスパターンによって、処理における遅延が引き起こされ得る。なぜならば、当該アクセスパターンを予測可能な方法で読み取ることができず、または、書き込むことができないからである。更に、メモリシステムは、様々なサイズおよびレベルのキャッシュから構成され得る。プロセッサの近くにある当該キャッシュは、プロセッサからずっと遠くに離れている他のメモリと比較して、より高速なアクセス時間を有する。複数の線形1次元配列へのメモリアクセスを最適化することによって、メモリ性能を最適化し、複数の処理ステージでパイプライン処理することができる。複数の実施形態において、複数の画素領域204は、左から右に、または、右から左に、読み取られ得る。1つの画素領域204を処理しながら、その順序で次の画素領域をメモリストレージ104からキャッシュへと送信しつつ、以前に処理された他の画素領域をキャッシュから取り除くことができる。
ステッパータイラーエンジンによって、1次元配列206の各画素領域204に急速アクセスすべく、複数の自動インクリメント命令を使用することができる。例えば、一般的にC++で使用される*data++のような高速結合メモリ自動インクリメント命令は、特定のメモリアクセスパターンを使用せずに、画像データの任意の部分にアクセスできる。複数の自動インクリメント命令は、ベースアドレス、および、一般的には配列における標的データのアドレスを発見するのに1つの計算を必要とするオフセットを使用して、データにアクセスできる。従って、複数の自動インクリメント命令により、複数の配列におけるデータにアクセスするのに使用される複数のモードをアドレス指定する場合と比較して、より高速なメモリアクセスが可能となる。例えば、C++を使用した場合、2次元配列は、複数のdata [x][y]のような命令を使用してアクセスされるであろう。x およびyはそれぞれ、標的データの行および列を表わす。しかしながら、そのような命令は一般的に、標的データのアドレスが得られる前に幾つもの計算を必要とする。従って、データを連続する1次元配列へと配置することによって、2次元配列と比較してより高速のデータアクセスが可能となる。
図3は、複数の実施形態による、矩形アセンブラ300を示す図である。矩形アセンブラ300は、メモリバッファリング用の複数の2次元画像を準備すべく使用され得るステッパータイラーにおける、エンジン、コマンドまたはロジックであり得る。矩形アセンブラ300は、複数の2次元配列302上で、それらを複数の1次元配列304または複数の領域ベクトルへとアセンブルすべく動作できる。複数の2次元配列302の各々は、幾つかの実施形態において、2次元画像の、複数の画素、または、複数の画素の複数のグループを表わし得る複数の画素領域を含む。2次元配列302における各ブロックは、2次元配列302の中の画素領域のXおよびY座標に対応する指示を与えられ得る。上記で議論されたように、C++での画素領域にアクセスする命令は、「data [x][y]」であろう。
矩形アセンブラ300は、各2次元配列302を、各配列の中に含まれる複数のブロックがより高速で予測可能なアクセスパターンを可能とする連続した順序で配置されるように、1次元配列304としてアセンブルすることができる。上記で議論されたように、CPUは、メモリアドレスを変更またはインクリメントする第1命令、および、処理を実行する第2命令を発するより効率的である同じ結合命令で処理およびメモリインクリメントの両方を実行できる自動インクリメント機械命令フォームで、各ブロックに順にアクセスできる。例えば、C++ソフトウェアでの一連のブロックにアクセスする命令は、現在のブロックを処理した後に続く各ブロックにアクセスするようCPUに指示する複数の自動インクリメント命令フォームを使用すべくコードを生成することを可能にするであろう「*data++」という命令を含み得る。複数のラインアクセスパターンの複数の矩形を複数の線形にパックされた1次元配列へとフォーマットすることで、ステッパータイラーエンジンにより、メモリにアクセスする速度の向上のみならず、効率的な結合処理および複数のメモリ自動インクリメント命令も提供される。なぜならば、複数の1次元配列を、当該複数の1次元配列がキャッシュにおいて複数のプロセッサの近くに保管されることを可能にするサイズにすることができるからである。
図4A、図4Bおよび図4Cは、複数の実施形態による、複数の矩形バッファを使用した画像の線形的処理の例を図示している。図4A、図4Bおよび図4Cは、ラインバッファのセットを横切って移動され、ステッパータイラー高速キャッシュの中に含まれ得る、処理される矩形領域を備えたステッパータイラーエンジンの使用を図示している。ステッパータイラーエンジンは、矩形アセンブラが処理用にパイプライン方式で複数の矩形領域を線形にパックされた複数の1次元配列のセットとしてプレアセンブルすることを可能とするのに複数のラインが必要とされる前に、当該複数のラインを先読込することができる。当該複数のラインは、先読込されて、複数の矩形を抽出するための複数の容器としての高速ステッパータイラーキャッシュの中に格納され得る。複数の図において、画像400における、複数の画素領域、または、複数のインクリメントの複数の領域は、隔てて区分され、処理領域401、活性状態のバッファ402、追い出しバッファ404、および、先読込バッファ406として指定され得る。複数の領域または複数のバッファの各々のサイズおよび形状は、処理の前に画定され得る。
処理領域401は、現在処理されている、画像400からの領域を表わし得る。画像は、プリンタ、ビデオデバイス、または、視聴用または複数の画像強調用のディスプレイインターフェースにストリームされ得る。複数の実施形態において、処理領域401は、CPU102によってキャッシュ110から出力デバイス106へとストリームされる矩形領域である。複数の説明的な目的で、処理領域401はブラックボックスとして示されている。活性状態のバッファ402は、キャッシュ110の中に格納される1または複数のラインのセットを表わし得る。複数の説明的な目的で、活性状態のバッファは、活性状態のバッファ402の複数のブロック内で複数のドットを使用して示されている。図4A、図4Bおよび図4Cにおいて、本例示的実施形態における活性状態のバッファ402は、各々が7つの画素領域を備える2本のラインを含むように画定されている。幾つかの実施形態において、活性状態のバッファ402は、異なる数の画素領域を含み得ることに留意すべきである。図4Aおよび図4Bで示されるように、処理領域401は、複数の画素または複数のインクリメントの各グループが連続した順序で処理されるに連れて、活性状態のバッファ402の間でインクリメンタルに移動する。活性状態のバッファ402内の全ての画素が処理された場合、図4Cで示されるように、ある順序で次の複数のラインのセットが活性状態のバッファ402の中へと配置される。
追い出しバッファ404は、活性状態のバッファ402の一部として以前に処理された1または複数のラインを表わし得る。図4A、図4Bおよび図4Cにおいて、本例示的実施形態における追い出しバッファ404は、7つの画素領域の単一ラインを含むように画定され得る。幾つかの実施形態において、追い出しバッファ404は、異なる数の画素領域を含み得ることに留意すべきである。当該複数のラインはもはや必要ないので、現在アクティブなバッファ402を処理しながら、追い出しバッファ404における複数のラインをキャッシュから取り除く。
先読込バッファ406は、その順序で次に、活性状態のバッファ402の一部として処理される1または複数のラインを表わし得る。図4A、図4Bおよび図4Cにおいて、先読込バッファ406は、7つの画素領域の単一ラインを含むように画定される。活性状態のバッファ402を処理しつつ、先読込バッファ404の複数のラインを、活性状態のバッファ402の複数のラインを処理し終えた後直ぐに処理できるように、キャッシュ110の中に配置することができる。
図5A、図5Bおよび図5Cは、複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。複数の図において、画像500における、複数の画素領域は、隔てて区分され、活性状態のバッファ502、追い出しバッファ504、および、先読込バッファ506として指定され得る。
活性状態のバッファ502は、キャッシュ110の中に格納される1または複数のラインのセットを表わし得る。図5A、図5Bおよび図5Cにおいて、活性状態のバッファ502は、7つの画素領域の単一ラインを含むように画定される。幾つかの実施形態において、活性状態のバッファ502は、異なる数の画素領域を含み得ることに留意すべきである。図5A、図5Bおよび図5Cで示されるように、活性状態のバッファ502は、各ラインが処理されるに連れて、ラインからラインへと連続した順序で移動する。
追い出しバッファ504は、活性状態のバッファ502の一部として以前に処理された1または複数のラインを表わし得る。図5A、図5Bおよび図5Cにおいて、追い出しバッファ504は、7つの画素領域の単一ラインを含むように画定される。当該複数のラインはもはや必要ないので、現在アクティブなバッファ502を処理しながら、追い出しバッファ504における複数のラインをキャッシュから取り除く。
先読込バッファ506は、その順序で次に、活性状態のバッファ502の一部として処理される1または複数のラインを表わし得る。図5A、図5Bおよび図5Cにおいて、先読込バッファ506は、7つの画素領域の単一ラインを含むように画定される。活性状態のバッファ502を処理しつつ、先読込バッファ504の複数のラインを、活性状態のバッファ502の複数のラインを処理し終えた後直ぐに処理できるように、キャッシュ110の中に配置することができる。
図6は、メモリの中に格納された画像にアクセスする方法600の処理フロー図である。当該方法600は、コンピュータまたはカメラのような電子デバイスにおけるCPUのステッパータイラーエンジンによって実行できる。当該方法600は、C、C++、MATLAB、FORTRANまたはJava(登録商標)で書き込まれたコンピュータコードで実装され得る。
ブロック602で、ステッパータイラーエンジンは、メモリストレージから画像データを先読込する。画像データは複数の画素領域から構成され得、当該複数の画素領域は、少なくとも1つの画素、複数の画素のグループ、複数の画素の領域、または、それらの任意の組み合わせであり得る。
ブロック604で、ステッパータイラーエンジンは、画像データを線形的に処理される1次元配列として配置する。1次元配列は、複数の画素領域の線形的順序としてアクセスされ得る。各画素領域の複数の特性およびサイズは、書き込まれたコードで判断できる。書き込まれたコードは、画像のストレージ位置および転送先の複数のアドレスも含み得る。2次元画像処理が説明されるけれども、複数の本技術は、2次元画像処理、3次元画像処理、または、n次元画像処理のような任意の画像処理に対して使用され得る。
複数の実施形態において、矩形アセンブラは、データを再び1次元配列へとコピーする代わりに、データを複数のポインタの配列としてキャッシュし得る。このように、複数の矩形が、複数の矩形を含むキャッシュの中の複数のラインへの複数のポインタの、複数の1次元配列へとアセンブルされる。結果として、複数の先読込されたラインがステッパータイラーキャッシュへと1回コピーされ、これによって、重複コピーが防止される。このタイプの1次元配列実施形態において、複数の1次元配列は、複数のラインバッファの中の複数の矩形領域への複数のポインタの配列として表わされる。それと同様に、キャッシュの追い出しの前にデータをメモリへ書き戻すべく、同じ配置を使用できる。
ブロック606で、ステッパータイラーエンジンは、キャッシュの中に格納された第1画素領域を処理する。例えば、第1画素を処理することは、画素領域を、コンピュータモニタ、プリンタまたはカメラのような入出力デバイスにストリーミングまたは伝達することを含み得る。
ブロック608で、ステッパータイラーエンジンは、第2画素領域を画像からキャッシュへと配置する。プロセッサは、1または複数の画素領域をキャッシュへと先読込することができ、または、キャッシュへと送信することができる。キャッシュへと先読込される画素領域の数は、書き込まれたコードで判断できる。第2画素領域は、第1画素領域が処理された後に処理される。
ブロック610で、ステッパータイラーエンジンは第2画素領域を処理する。プロセッサは、キャッシュへと配置された複数の画素領域を処理して、キャッシュに含まれる複数の画素を入出力デバイスにストリームすることができる。複数の画素領域は、全てを同時に、または、一度に1画素を処理できる。
ブロック612で、ステッパータイラーエンジンは、1次元配列をメモリストレージに書き戻す。1次元配列は、2次元画像として書き戻すことができる。
ブロック614で、ステッパータイラーエンジンは、キャッシュから第1画素領域を追い出す。キャッシュの中の複数の画素領域が処理された後、プロセッサは、キャッシュから画素領域を取り除くこと、または、追い出すことができる。複数の画素領域を、メモリストレージの中に格納し続けることができる。
当該方法600は、通信バスを介してステッパータイラーエンジンと行き来するプロトコルストリームを含む多数の方法で、または、共有されるメモリおよび制御レジスタ(CSR)インターフェースを通じて、ステッパータイラーエンジンにより制御することができる。表1は、当該方法600を実行するためのCSRインターフェースのある実施形態を示している。
当該方法600は、C、C++、Java(登録商標)、MATLAB、FORTRAN、または、任意の他のプログラミング言語で書き込まれたコードを使用して実行することができる。当該コードによって、ユーザは、多数のパラメータの中で、画像のサイズおよび解像度、画素領域の数、活性状態のバッファのサイズ、追い出しバッファのサイズ、先読込バッファのサイズ、および、一度に処理される画素領域の数をセットすることができる。当該コードにより、自動インクリメントコマンドまたはアルゴリズムを使用して、各画素または各画素領域を反復的に処理することができる。複数の本技術を説明する当該コードのある例は、以下で示されている。
class StepperTiler
{
int64 *ImageReadAddress;
int64 *ImageWriteAddress;
int16 ImageLineSize;
int16 imageLineCount;
int16 AreaXSize;
int16 AreaYsize;
int16 ActiveLineBufferCount;
int16 PrefetchLineCount;
int16 EvictLineCount;
int16 LineStepInterval;
int16 StartLineOffset;
int16 CurrentLineNumber;
int64 *CurrentLinePointer;
int16 CurrentAreaVectorIndex;
int16 CurrentAreaVectorPointer;
int32 PolicyControls;
int32 StartCommand;
int32 StopCommand;
int32 Status;
int32 EvictCommand;
int32 PrefetchCommand;
};
enum
{
polledCSRmode,
interruptonlineend,
interruptonAreaVectorend,
Interruptonerror,
startinlinemode,
startinareamode,
stop,
running,
stopped,
errorcondition,
evictanddiscard,
evictandwriteback,
prefetch,
loadactiveareaandprefetch,
prefectchandwriteback,
prefectandevict
} COMMANDS;
int main()
{
StepperTiler memory;
memory.ImageReadAddress = 0x1232300fffff;
memory.ImageWriteAddress = memory.ImageReadAddress; // in place computation
// set up for 1080p
memory.ImageLineSize = 1920;
memory.imageLineCount = 1080;
// set up for 3x3 convolution
memory.AreaXSize = 3;
memory.AreaYsize = 3;
memory.ActiveLineBufferCount = 3;
memory.EvictLineCount = 1;
memory.PrefetchLineCount = 1;
memory.PolicyControls = evictandwriteback;
memory.LineStepInterval = 1;
memory.StartCommand = loadactiveareaandprefetch;
for (int x = 0; x < 1029; x++)
{
for (int y = 0; y < 1080; y++)
{
// convolve as a 1d vector multiple operation
convolve(&kernel, &memory.CurrentAreaVectorPointer[x]);
}
memory.EvictCommand = evictandwriteback; // synchronous command
memory.PrefetchCommand = prefetch; //asynchonous command
}
}
{
int64 *ImageReadAddress;
int64 *ImageWriteAddress;
int16 ImageLineSize;
int16 imageLineCount;
int16 AreaXSize;
int16 AreaYsize;
int16 ActiveLineBufferCount;
int16 PrefetchLineCount;
int16 EvictLineCount;
int16 LineStepInterval;
int16 StartLineOffset;
int16 CurrentLineNumber;
int64 *CurrentLinePointer;
int16 CurrentAreaVectorIndex;
int16 CurrentAreaVectorPointer;
int32 PolicyControls;
int32 StartCommand;
int32 StopCommand;
int32 Status;
int32 EvictCommand;
int32 PrefetchCommand;
};
enum
{
polledCSRmode,
interruptonlineend,
interruptonAreaVectorend,
Interruptonerror,
startinlinemode,
startinareamode,
stop,
running,
stopped,
errorcondition,
evictanddiscard,
evictandwriteback,
prefetch,
loadactiveareaandprefetch,
prefectchandwriteback,
prefectandevict
} COMMANDS;
int main()
{
StepperTiler memory;
memory.ImageReadAddress = 0x1232300fffff;
memory.ImageWriteAddress = memory.ImageReadAddress; // in place computation
// set up for 1080p
memory.ImageLineSize = 1920;
memory.imageLineCount = 1080;
// set up for 3x3 convolution
memory.AreaXSize = 3;
memory.AreaYsize = 3;
memory.ActiveLineBufferCount = 3;
memory.EvictLineCount = 1;
memory.PrefetchLineCount = 1;
memory.PolicyControls = evictandwriteback;
memory.LineStepInterval = 1;
memory.StartCommand = loadactiveareaandprefetch;
for (int x = 0; x < 1029; x++)
{
for (int y = 0; y < 1080; y++)
{
// convolve as a 1d vector multiple operation
convolve(&kernel, &memory.CurrentAreaVectorPointer[x]);
}
memory.EvictCommand = evictandwriteback; // synchronous command
memory.PrefetchCommand = prefetch; //asynchonous command
}
}
図6の処理フロー図は、当該方法600の複数のブロックがいずれかの特定の順序で実行されるということ、または、全てのブロックが全ての場合に含まれるということを、意図的に示すものではない。更に、任意の数の追加的なブロックが、特定の実施形態の詳細に応じて、当該方法600の中に含まれ得る。
図7は、複数の実施形態による、メモリの中の画像にアクセスするためのコードを格納する、有形な非一時的コンピュータ可読媒体700を示すブロック図である。有形な非一時的コンピュータ可読媒体は、コンピュータバス704を介して、プロセッサ702によりアクセスされ得る。更に、有形な非一時的コンピュータ可読媒体700は、本明細書で説明される複数の方法を実行するようにプロセッサ702に対して命令するよう構成されたコードを含み得る。
本明細書で議論される様々なソフトウェアコンポーネントは、図7で示されるような有形な非一時的コンピュータ可読媒体700上に格納され得る。先読込モジュール706は、メモリストレージから画像データを先読込して、画素領域をキャッシュへと配置するように構成され得る。線形配置モジュール708は、画像データを線形的に処理することを可能にすべく、当該画像データを複数の1次元配列のセットとして配置するように構成され得る。処理ブロック710は、画素領域を処理するように構成され得る。追い出しブロック712は、キャッシュから画素領域を取り除くように構成され得る。メモリ再書き込みブロック714は、複数の1次元配列のセットをメモリストレージへと書き戻すように構成され得る。
図7のブロック図は、有形な非一時的コンピュータ可読媒体700が図7で示される全てのコンポーネントを含むということを、意図的に示すものではない。更に、有形な非一時的コンピュータ可読媒体700は、特定の実施形態の詳細に応じて、図7で示されていない任意の数の追加的なコンポーネントを含み得る。
例1
メモリの中の画像にアクセスする装置がここで説明される。当該装置は画像データを先読込するロジックを含み、当該画像データは、複数の画素領域、および、画像データを線形的に処理される複数の1次元配列のセットとして配置するロジックを含む。当該装置はまた、複数の1次元配列のセットからキャッシュの中に格納されている第1画素領域を処理するロジック、および、第1画素領域が処理された後に処理される第2画素領域を複数の1次元配列のセットからキャッシュへと配置するロジックも含む。更に、当該装置は、第2画素領域を処理するロジック、複数の1次元配列のセットの処理された複数の画素領域をメモリストレージへと書き戻すロジック、および、キャッシュから複数の画素領域を追い出すロジックを含む。
画像データは、画像のライン、領域、ブロック、または、グループであり得る。画像データは、画像データへの複数のポインタのセットを使用して配置され得る。複数の1次元配列の少なくとも1つは、複数の画素領域の線形的順序である。当該装置はまた、キャッシュの中で処理される画素領域の数を同時にセットするロジック、処理の前にキャッシュへと配置される画素領域の数をセットするロジック、または、処理の後にキャッシュから取り除かれる画素領域の数をセットするロジックも含み得る。複数の画素領域のラインが処理され得、または、複数の画素領域の矩形ブロックが処理される。複数の画素領域は、当該複数の画素領域がキャッシュから追い出される前にメモリに書き込まれ得る。読み取りおよび書き込みアクセス用に複数の画素領域が存在するメモリストレージへのポインタがセットされ得る。当該装置は、プリントデバイスであり得る。当該装置はまた、イメージキャプチャメカニズムでもあり得る。当該イメージキャプチャメカニズムは、画像データを収集する少なくとも1つまたは複数のセンサを含み得る。
例2
メモリストレージの中の画像にアクセスするシステムがここで説明される。当該システムは、画像データを格納するメモリストレージ、キャッシュおよびプロセッサを含む。当該プロセッサは、複数の画素領域を含む画像データを先読込し、画像データを線形的に処理される1次元配列のセットとして配置し、画像データからキャッシュに格納されている第1画素領域を処理し、且つ、第1画素領域が処理された後に処理される第2画素領域を画像データからキャッシュへと配置し得る。当該プロセッサはまた、第2画素領域を処理し、複数の1次元配列のセットをメモリストレージへと書き戻し、且つ、キャッシュから第1画素領域を追い出し得る。
画像データは、画像データへの複数のポインタのセットを使用して配置され得る。当該システムは、プロセッサに通信状態で連結され、画像を表示するように構成される出力デバイスを含み得る。当該出力デバイスは、プリンタまたはディスプレイ画面であり得る。プロセッサは、画像における各画素領域を、複数の1次元配列による連続した順序で処理し得る。画像は、ビデオのフレームであり得る。
例3
メモリストレージの中の画像にアクセスする有形な非一時的コンピュータ可読媒体がここで説明される。有形な非一時的コンピュータ可読媒体は複数の命令を含み、当該複数の命令は、プロセッサによって実行された場合に、複数の画素領域を含む画像データを先読込し、画像データを線形的に処理される複数の1次元配列のセットとして配置し、キャッシュの中に格納されている画像データから第1画素領域を処理するように構成される。当該複数の命令はまた、第1画素領域が処理された後に処理される第2画素領域を画像データからキャッシュへと配置し、第2画素領域を処理し、複数の1次元配列のセットをメモリストレージへと書き戻し、キャッシュから第1画素領域を追い出すように構成される。
1次元配列は、複数の画素領域の線形的順序であり得る。画像データは、画像データへの複数のポインタのセットを使用して配置され得る。キャッシュの中で同時に処理される画素領域の数がセットされ得る。更に、処理の前にキャッシュへと配置される画素領域の数がセットされ得る。処理の後にキャッシュから取り除かれる画素領域の数もまたセットされ得る。複数の画素領域のラインが処理され得、または、複数の画素領域の矩形ブロックが処理され得る。
上述の複数の例における個別の事柄は、1または複数の実施形態のいずれにおいても用いられ得ることが理解されるべきである。例えば、上記で説明されたコンピューティングデバイスの全ての選択的特徴は、本明細書で説明される複数の方法またはコンピュータ可読媒体のいずれかに対して実装され得る。更に、複数のフロー図および/または複数の状態図が、複数の実施形態を説明すべく本明細書で使用され得たけれども、複数の本発明は、本明細書で、これら複数の図または対応する複数の説明に限定されない。例えば、フローは、必ずしも、図示された各ボックスまたは状態によって、または、本明細書で図示されて説明されるものと厳密に同じ順序で、進む必要はない。
本発明は、本明細書で列挙された特定の複数の詳細に限定されない。実際に、本開示の利益を得る当業者は、多くの他の変形例が、複数の本願発明の範囲内で、前述の説明および複数の図面から作られ得ることを理解するだろう。従って、複数の本発明に関する任意の修正例を包含する以下の特許請求の範囲が、複数の本発明の範囲を規定している。
Claims (29)
- メモリストレージの中の画像にアクセスする装置であって、
複数の画素領域を含む画像データを先読込するロジックと、
前記画像データを、線形的に処理される複数の1次元配列のセットとして配置するロジックと、
前記複数の1次元配列のセットから、キャッシュの中に格納されている第1画素領域を処理するロジックと、
前記第1画素領域が処理された後に処理される第2画素領域を、前記複数の1次元配列のセットから前記キャッシュへと配置するロジックと、
前記第2画素領域を処理するロジックと、
前記複数の1次元配列のセットの前記処理された複数の画素領域を前記メモリストレージへと書き戻すロジックと、
前記キャッシュから前記複数の画素領域を追い出すロジックと
を備える装置。 - 前記画像データは、前記画像のライン、領域、ブロックまたはグループである、請求項1に記載の装置。
- 前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項1または2に記載の装置。
- 前記複数の1次元配列の少なくとも1つは、複数の画素領域の線形的順序、または、前記複数の画素領域の中の複数の画素への複数のポインタの1次元配列である、請求項1から3のいずれか一項に記載の装置。
- 前記キャッシュの中で同時に処理される画素領域の数をセットするロジックを更に備える、請求項1から4のいずれか一項に記載の装置。
- 処理の前に前記キャッシュへと配置される画素領域の数をセットするロジックを更に備える、請求項1から5のいずれか一項に記載の装置。
- 処理の後に前記キャッシュから取り除かれる画素領域の数をセットするロジックを更に備える、請求項1から6のいずれか一項に記載の装置。
- 複数の画素領域のラインが処理される、請求項1から7のいずれか一項に記載の装置。
- 前記複数の画素領域は、前記複数の画素領域が前記キャッシュから追い出される前にメモリに書き込まれる、請求項1から8のいずれか一項に記載の装置。
- 複数の画素領域の矩形ブロックが処理される、請求項1から9のいずれか一項に記載の装置。
- 読み取りおよび書き込みアクセス用に複数の画素領域が存在する前記メモリストレージへのポインタをセットするロジックを更に備える、請求項1から10のいずれか一項に記載の装置。
- 前記装置はプリントデバイスである、請求項1から11のいずれか一項に記載の装置。
- 前記装置はイメージキャプチャメカニズムである、請求項1から11のいずれか一項に記載の装置。
- 前記イメージキャプチャメカニズムは、画像データを収集する1または複数のセンサを有する、請求項13に記載の装置。
- メモリストレージの中の画像にアクセスするシステムであって、
画像データを格納するメモリストレージと、
キャッシュと、
プロセッサと
を備え、
前記プロセッサは、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の1次元配列のセットとして配置し、
前記画像データから、前記キャッシュの中に格納されている第1画素領域を処理し、
前記第1画素領域が処理された後に処理される第2画素領域を、前記画像データから前記キャッシュへと配置し、
前記第2画素領域を処理し、
前記複数の1次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第1画素領域を追い出す、
システム。 - 前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項15に記載のシステム。
- 前記プロセッサに通信状態で連結され、前記画像を表示する出力デバイスを更に備える、請求項15または16に記載のシステム。
- 前記出力デバイスはプリンタである、請求項17に記載のシステム。
- 前記出力デバイスはディスプレイ画面を有する、請求項17または18に記載のシステム。
- 前記プロセッサは、前記画像の中の各画素領域を、前記複数の1次元配列による連続した順序で処理する、請求項15から19のいずれか一項に記載のシステム。
- 前記画像はビデオのフレームである、請求項15から20のいずれか一項に記載のシステム。
- メモリストレージの中の画像にアクセスするプログラムであって、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の1次元配列のセットとして配置し、
前記画像データから、キャッシュの中に格納されている第1画素領域を処理し、
前記第1画素領域が処理された後に処理される第2画素領域を、前記画像データから前記キャッシュへと配置し、
前記第2画素領域を処理し、
前記複数の1次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第1画素領域を追い出す複数の命令
を備える有形な非一時的コンピュータ可読媒体。 - 前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項22に記載の有形な非一時的コンピュータ可読媒体。
- 前記1次元配列は複数の画素領域の線形的順序である、請求項22または23に記載の有形な非一時的コンピュータ可読媒体。
- 前記キャッシュの中で同時に処理される画素領域の数をセットする複数の命令を更に備える、請求項22から24のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
- 処理の前に前記キャッシュへと配置される画素領域の数をセットする複数の命令を更に備える、請求項22から25のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
- 処理の後に前記キャッシュから取り除かれる画素領域の数をセットする複数の命令を更に備える、請求項22から26のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
- 複数の画素領域のラインが処理される、請求項22から27のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
- 複数の画素領域の矩形ブロックが処理される、請求項22から28のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/727,736 US20140184630A1 (en) | 2012-12-27 | 2012-12-27 | Optimizing image memory access |
US13/727,736 | 2012-12-27 | ||
PCT/US2013/076014 WO2014105552A1 (en) | 2012-12-27 | 2013-12-18 | Optimizing image memory access |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016502211A true JP2016502211A (ja) | 2016-01-21 |
Family
ID=51016692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015549608A Pending JP2016502211A (ja) | 2012-12-27 | 2013-12-18 | 画像メモリアクセスの最適化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140184630A1 (ja) |
EP (1) | EP2939209A4 (ja) |
JP (1) | JP2016502211A (ja) |
KR (1) | KR20150080568A (ja) |
CN (1) | CN104981838B (ja) |
WO (1) | WO2014105552A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10032435B2 (en) * | 2014-10-02 | 2018-07-24 | Nagravision S.A. | Accelerated image gradient based on one-dimensional data |
US20170083827A1 (en) * | 2015-09-23 | 2017-03-23 | Qualcomm Incorporated | Data-Driven Accelerator For Machine Learning And Raw Data Analysis |
CN116881180A (zh) * | 2017-05-19 | 2023-10-13 | 莫维迪乌斯有限公司 | 用于当取回像素核时降低存储器延迟的方法、系统和设备 |
JP2020004247A (ja) * | 2018-06-29 | 2020-01-09 | ソニー株式会社 | 情報処理装置、情報処理方法およびプログラム |
CN110874809A (zh) * | 2018-08-29 | 2020-03-10 | 上海商汤智能科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
CN109461113B (zh) * | 2018-10-11 | 2021-07-16 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
EP3693861B1 (en) | 2019-02-06 | 2022-08-24 | Advanced Digital Broadcast S.A. | System and method for reducing memory fragmentation in a device lacking graphics memory management unit |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03154977A (ja) * | 1989-11-13 | 1991-07-02 | Sharp Corp | キャッシュメモリ装置 |
JPH0553909A (ja) * | 1991-08-23 | 1993-03-05 | Pfu Ltd | 画像データ処理におけるキヤツシユメモリ制御方式 |
JPH06231035A (ja) * | 1993-02-03 | 1994-08-19 | Oki Electric Ind Co Ltd | メモリアクセス装置 |
JPH07219847A (ja) * | 1994-01-31 | 1995-08-18 | Fujitsu Ltd | 情報処理装置 |
JP2006338334A (ja) * | 2005-06-02 | 2006-12-14 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
JP2008530680A (ja) * | 2005-02-15 | 2008-08-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 読み出し機能及びフェッチ機能を分けることによるデータ処理装置のメモリユニットの性能向上 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816946B2 (en) | 2002-07-01 | 2004-11-09 | Sony Computer Entertainment, Inc. | Methods and apparatus for controlling a cache memory |
CN100401371C (zh) * | 2004-02-10 | 2008-07-09 | 恩益禧电子股份有限公司 | 能够实现高速访问的图像存储器结构 |
JP2006031480A (ja) * | 2004-07-16 | 2006-02-02 | Sony Corp | 情報処理システム及び情報処理方法、並びにコンピュータプログラム |
US7304646B2 (en) * | 2004-08-19 | 2007-12-04 | Sony Computer Entertainment Inc. | Image data structure for direct memory access |
US20060050976A1 (en) * | 2004-09-09 | 2006-03-09 | Stephen Molloy | Caching method and apparatus for video motion compensation |
JP3906234B1 (ja) * | 2005-11-02 | 2007-04-18 | 株式会社アクセル | 画像用メモリ回路 |
JP4535047B2 (ja) * | 2006-09-06 | 2010-09-01 | ソニー株式会社 | 画像データ処理方法、画像データ処理方法のプログラム、画像データ処理方法のプログラムを記録した記録媒体及び画像データ処理装置 |
US20080098176A1 (en) * | 2006-10-18 | 2008-04-24 | Krishna M V V Anil | Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching |
US8570393B2 (en) * | 2007-11-30 | 2013-10-29 | Cognex Corporation | System and method for processing image data relative to a focus of attention within the overall image |
WO2010014696A1 (en) * | 2008-07-29 | 2010-02-04 | Marvell World Trade, Ltd. | Processing rasterized data |
JP2010033420A (ja) * | 2008-07-30 | 2010-02-12 | Oki Semiconductor Co Ltd | キャッシュ回路及びキャッシュメモリ制御方法 |
-
2012
- 2012-12-27 US US13/727,736 patent/US20140184630A1/en not_active Abandoned
-
2013
- 2013-12-18 EP EP13868536.7A patent/EP2939209A4/en not_active Withdrawn
- 2013-12-18 CN CN201380061805.0A patent/CN104981838B/zh not_active Expired - Fee Related
- 2013-12-18 JP JP2015549608A patent/JP2016502211A/ja active Pending
- 2013-12-18 WO PCT/US2013/076014 patent/WO2014105552A1/en active Application Filing
- 2013-12-18 KR KR1020157013863A patent/KR20150080568A/ko not_active Application Discontinuation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03154977A (ja) * | 1989-11-13 | 1991-07-02 | Sharp Corp | キャッシュメモリ装置 |
JPH0553909A (ja) * | 1991-08-23 | 1993-03-05 | Pfu Ltd | 画像データ処理におけるキヤツシユメモリ制御方式 |
JPH06231035A (ja) * | 1993-02-03 | 1994-08-19 | Oki Electric Ind Co Ltd | メモリアクセス装置 |
JPH07219847A (ja) * | 1994-01-31 | 1995-08-18 | Fujitsu Ltd | 情報処理装置 |
JP2008530680A (ja) * | 2005-02-15 | 2008-08-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 読み出し機能及びフェッチ機能を分けることによるデータ処理装置のメモリユニットの性能向上 |
JP2006338334A (ja) * | 2005-06-02 | 2006-12-14 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104981838A (zh) | 2015-10-14 |
US20140184630A1 (en) | 2014-07-03 |
EP2939209A4 (en) | 2016-08-03 |
WO2014105552A1 (en) | 2014-07-03 |
CN104981838B (zh) | 2020-06-09 |
KR20150080568A (ko) | 2015-07-09 |
EP2939209A1 (en) | 2015-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016502211A (ja) | 画像メモリアクセスの最適化 | |
JP4416694B2 (ja) | データ転送調停装置およびデータ転送調停方法 | |
JP5837153B2 (ja) | 画素速度での画像処理のための方法および装置 | |
KR20190116294A (ko) | 스트리밍 변환 색인 버퍼 | |
WO2017027169A1 (en) | Data reordering using buffers and memory | |
KR102636925B1 (ko) | 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치 | |
JP5706754B2 (ja) | データ処理装置及びデータ処理方法 | |
US9916251B2 (en) | Display driving apparatus and cache managing method thereof | |
Kim et al. | Data cache and direct memory access in programming mediaprocessors | |
KR20050116810A (ko) | 데이터 처리 시스템, 프리패치 방법 및 반도체 수단 | |
US10580107B2 (en) | Automatic hardware ZLW insertion for IPU image streams | |
TWI634436B (zh) | 緩衝裝置及卷積運算裝置與方法 | |
TWI645335B (zh) | 卷積運算裝置及卷積運算方法 | |
JP6414388B2 (ja) | アクセラレータ回路及び画像処理装置 | |
JP4266900B2 (ja) | 画像処理システム | |
US20180095929A1 (en) | Scratchpad memory with bank tiling for localized and random data access | |
KR20220086512A (ko) | 데이터 워핑 장치 및 방법 | |
US20130278775A1 (en) | Multiple Stream Processing for Video Analytics and Encoding | |
CN110223214B (zh) | 一种降低纹理单元访问量的方法、装置及计算机存储介质 | |
CN107168660B (zh) | 图像处理缓存系统及方法 | |
US20220292344A1 (en) | Processing data in pixel-to-pixel neural networks | |
JP2009003632A (ja) | 画像処理システム | |
WO2013102958A1 (ja) | メモリアクセス制御装置 | |
US20130120419A1 (en) | Memory Controller for Video Analytics and Encoding | |
US20130322551A1 (en) | Memory Look Ahead Engine for Video Analytics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160621 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160727 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160927 |