(57)【要約】  メモリストレージにおける画像にアクセスする装置およびシステムが本明細書で開示される。当該装置は、複数の画像データを先読込するロジックを含み、複数の画像データは複数の画素領域を含む。当該装置はまた、複数の画像データを、線形的に処理される１次元配列のセットとして配置するロジックも含む。当該装置は更に、複数の画像データから第１画素領域を処理するロジックを含み、第１画素領域はキャッシュに格納される。更に、当該装置は、第１画素領域が処理された後に処理される第２画素領域を複数の画像データからキャッシュへと配置するロジックと、第２画素領域を処理するロジックとを含む。１次元配列のセットをメモリストレージに書き戻すロジックもまた提供され、第１画素領域はキャッシュから追い出される。
2016502211.tif 000002
【特許請求の範囲】
【請求項１】
メモリストレージの中の画像にアクセスする装置であって、
複数の画素領域を含む画像データを先読込するロジックと、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置するロジックと、
前記複数の１次元配列のセットから、キャッシュの中に格納されている第１画素領域を処理するロジックと、
前記第１画素領域が処理された後に処理される第２画素領域を、前記複数の１次元配列のセットから前記キャッシュへと配置するロジックと、
前記第２画素領域を処理するロジックと、
前記複数の１次元配列のセットの前記処理された複数の画素領域を前記メモリストレージへと書き戻すロジックと、
前記キャッシュから前記複数の画素領域を追い出すロジックと
を備える装置。
【請求項２】
前記画像データは、前記画像のライン、領域、ブロックまたはグループである、請求項１に記載の装置。
【請求項３】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項１または２に記載の装置。
【請求項４】
前記複数の１次元配列の少なくとも１つは、複数の画素領域の線形的順序、または、前記複数の画素領域の中の複数の画素への複数のポインタの１次元配列である、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記キャッシュの中で同時に処理される画素領域の数をセットするロジックを更に備える、請求項１から４のいずれか一項に記載の装置。
【請求項６】
処理の前に前記キャッシュへと配置される画素領域の数をセットするロジックを更に備える、請求項１から５のいずれか一項に記載の装置。
【請求項７】
処理の後に前記キャッシュから取り除かれる画素領域の数をセットするロジックを更に備える、請求項１から６のいずれか一項に記載の装置。
【請求項８】
複数の画素領域のラインが処理される、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記複数の画素領域は、前記複数の画素領域が前記キャッシュから追い出される前にメモリに書き込まれる、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
複数の画素領域の矩形ブロックが処理される、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
読み取りおよび書き込みアクセス用に複数の画素領域が存在する前記メモリストレージへのポインタをセットするロジックを更に備える、請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
前記装置はプリントデバイスである、請求項１から１１のいずれか一項に記載の装置。
【請求項１３】
前記装置はイメージキャプチャメカニズムである、請求項１から１１のいずれか一項に記載の装置。
【請求項１４】
前記イメージキャプチャメカニズムは、画像データを収集する１または複数のセンサを有する、請求項１３に記載の装置。
【請求項１５】
メモリストレージの中の画像にアクセスするシステムであって、
画像データを格納するメモリストレージと、
キャッシュと、
プロセッサと
を備え、
前記プロセッサは、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置し、
前記画像データから、前記キャッシュの中に格納されている第１画素領域を処理し、
前記第１画素領域が処理された後に処理される第２画素領域を、前記画像データから前記キャッシュへと配置し、
前記第２画素領域を処理し、
前記複数の１次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第１画素領域を追い出す、
システム。
【請求項１６】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項１５に記載のシステム。
【請求項１７】
前記プロセッサに通信状態で連結され、前記画像を表示する出力デバイスを更に備える、請求項１５または１６に記載のシステム。
【請求項１８】
前記出力デバイスはプリンタである、請求項１７に記載のシステム。
【請求項１９】
前記出力デバイスはディスプレイ画面を有する、請求項１７または１８に記載のシステム。
【請求項２０】
前記プロセッサは、前記画像の中の各画素領域を、前記複数の１次元配列による連続した順序で処理する、請求項１５から１９のいずれか一項に記載のシステム。
【請求項２１】
前記画像はビデオのフレームである、請求項１５から２０のいずれか一項に記載のシステム。
【請求項２２】
メモリストレージの中の画像にアクセスするプログラムであって、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置し、
前記画像データから、キャッシュの中に格納されている第１画素領域を処理し、
前記第１画素領域が処理された後に処理される第２画素領域を、前記画像データから前記キャッシュへと配置し、
前記第２画素領域を処理し、
前記複数の１次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第１画素領域を追い出す複数の命令
を備える有形な非一時的コンピュータ可読媒体。
【請求項２３】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項２２に記載の有形な非一時的コンピュータ可読媒体。
【請求項２４】
前記１次元配列は複数の画素領域の線形的順序である、請求項２２または２３に記載の有形な非一時的コンピュータ可読媒体。
【請求項２５】
前記キャッシュの中で同時に処理される画素領域の数をセットする複数の命令を更に備える、請求項２２から２４のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２６】
処理の前に前記キャッシュへと配置される画素領域の数をセットする複数の命令を更に備える、請求項２２から２５のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２７】
処理の後に前記キャッシュから取り除かれる画素領域の数をセットする複数の命令を更に備える、請求項２２から２６のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２８】
複数の画素領域のラインが処理される、請求項２２から２７のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２９】
複数の画素領域の矩形ブロックが処理される、請求項２２から２８のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は概して、メモリへのアクセスに関する。より具体的には、本願発明は、ステッパータイラーエンジン（Stepper Tiler Engine）を使用する画像メモリへのアクセスに関する。
【背景技術】
【０００２】
メモリの中に格納された複数の画像にアクセスする複数のコンピュータアクティビティは、メモリの中の画像の幾つかの部分に継続的にアクセスし得る。従って、カメラからのビデオのストリーミング、または、複数の画像の高速プリンタへの送信は、毎秒数ギガバイトのデータ帯域幅を必要とし得る。メモリおよびデータ帯域幅の粗悪な管理は、粗悪な画像性能をもたらし得る。
【０００３】
更に、様々なタイプの非効率またはエラーが、ストレージの中の複数の画像にアクセスする間に生じ得る。例えば、あるプロセッサは、キャッシュに配置されていない画像のラインまたは領域を処理しようと試みて、その結果、ストレージから当該ラインまたは画像を処理するという結果をもたらし得る。キャッシュは、ストレージと比較した場合、より高速にアクセスされ得る小さなメモリである。当該画像のラインまたは領域をキャッシュの中で発見できず、その後にストレージから処理した場合、その結果はキャッシュミスである。キャッシュミスは、全くキャッシュミスせずに処理された画像と比較して、画像メモリアクセスを低速化させ得る。
【図面の簡単な説明】
【０００４】
以下の詳細な説明は、開示される主題の多数のオブジェクトおよび特徴の特定の複数の例を含む添付の複数の図面を参照することによって、より良く理解され得る。
【図１】複数の実施形態に従って使用され得るコンピューティングデバイスのブロック図である。
【図２】複数の実施形態による、ある画像の１次元配列への配置を示す図である。
【図３】矩形アセンブラの例示である。
【図４Ａ】複数の実施形態による、複数の矩形バッファを使用した画像の線形的処理の例を図示している。
【図４Ｂ】複数の実施形態による、複数の矩形バッファを使用したある画像の線形的処理の例を図示している。
【図４Ｃ】複数の実施形態による、複数の矩形バッファを使用したある画像の線形的処理の例を図示している。
【図５Ａ】複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
【図５Ｂ】複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
【図５Ｃ】複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。
【図６】複数の実施形態による、メモリの中に格納された画像にアクセスする方法の処理フロー図である。
【図７】複数の実施形態による、メモリの中に格納された画像にアクセスするための複数の命令を含む、コンピュータ可読媒体の図である。
【０００５】
本開示及び図面を通じて、同様のコンポーネント及び特徴に言及すべく、同じ数字が使用される。１００番台の数字は、図１で初出の複数の特徴を参照し、２００番台の数字は、図２で初出の複数の特徴を参照し、他も同様である。
【発明を実施するための形態】
【０００６】
本明細書で説明される複数の実施形態は、画像メモリアクセスの最適化を開示する。画像は、線形アクセスパターンを可能にすべく、１次元（１D）配列として配置される。画像は、本明細書で使用されるように、２次元ビットマップ、ビデオのフレーム、または、３次元オブジェクトであり得る。画像データは、複数の画素領域から構成され得る。画素領域という用語は、本明細書で使用されるように、単一画素、複数の画素のグループ、複数の画素のある領域、または、それらの任意の組み合わせの少なくとも１つであり得る。画像は、複数のラインまたは複数の矩形領域の、複数の画素領域または複数のグループとして処理され得る。複数の実施形態において、インクリメントという用語もまた、ライン、ラインバッファ、矩形、矩形バッファ、データバッファ、配列、１次元配列またはバッファという複数の用語と互換的に、本明細書で参照され得る。処理は、本明細書で使用されるように、画像の複数のインクリメントまたは複数の画素領域の、メモリからプロセッサへのコピー、伝達またはストリーミングについて言及し得、または、コンピュータ、プリンタあるいはカメラのような電子デバイスの出力について言及し得る。従って、メモリアクセスおよび計算の簡略化を目的として、非線形な複数の矩形メモリ領域または非連続な複数のラインへの非効率なメモリアクセスの代わりに、望まれるデータの複数の矩形アクセスパターンまたはラインアクセスパターンを、複数の１次元配列のセットへと連続してパックする。複数のメモリパターンを複数の１次元配列へとパックする本方法によれば、データを効率的にアクセスおよび処理すべく、複数の標準ベクトル処理命令および複数の自動インクリメントメモリアクセス命令を使用できることが、当業者によって認識されるであろう。
【０００７】
ステッパータイラーエンジンは、矩形アセンブラに対して、複数のメモリパターンを先読込するパイプライン処理された機械として機能する。矩形アセンブラは、キャッシュの中で、複数のメモリパターンを線形にパックされた複数の１次元配列のセットへとアセンブルする。ステッパータイラーエンジンが次に、複数の１次元配列のセットを複数のプロセッサに利用可能とし得る。複数の処理ユニットが次に、複数のポインタを使用して複数の１次元配列にアクセスし得る。複数の処理ユニットはデータを処理し、次に、ステッパータイラーエンジンが、処理されたデータを複数の１次元配列からキャッシュまたはストレージへと書き戻す。当該処理が完了した後、矩形アセンブラは、キャッシュから複数の１次元配列を追い出し得る。
【０００８】
更に、ステッパータイラーエンジンは、上記で議論されたように、複数のメモリパターンに自動でアクセスして、それらを線形にパックされた複数の１次元配列へとアセンブルするようにプログラムされ得る、ステータスレジスタおよび制御レジスタのセットを含む。複数のメモリパターンは、パイプライン方式でアクセスされ得る。そこでは、各パターンは連続してアクセスされる。ステッパータイラーエンジンは、プログラム可能な、処理される画像領域全体を連続してステップオーバーする性能、および、パイプラインにおける先読込ステップとして複数の矩形および複数のラインのような複数のメモリパターンを線形にパックされた複数の１次元配列へとアセンブルする性能を含む。複数のメモリパターンは、先読込および処理も可能とする重畳的な方法でアクセスされ得る。複数のメモリパターンが先読込される場合、プロセッサがキャッシュから複数の１次元配列にアクセスしている間に、メモリはステッパータイラーエンジンによってアクセスされ、キャッシュ内で複数の１次元配列へとアセンブルされる。上記で議論されたように、既に処理または使用された複数の１次元配列は、それらがステッパータイラーエンジンによってメモリ内の適切な位置に書き戻された後に、キャッシュから追い出され得る。
【０００９】
更に、複数の実施形態において、画像のラインまたは領域が、複数のキャッシュミスを防止すべく処理される前に、キャッシュの中へと配置され得る。画像は１次元配列として配置され、且つ、アクセスパターンは線形なので、データの配列の処理は、複数のメモリアドレス指定自動インクリメント命令および複数の配列処理指向命令セットを使用してより高速となり得る。なぜならば、画像メモリアクセス中に処理される次のラインまたは領域を予測できるからである。高速アクセスおよび処理を目的として、キャッシュに格納することにより、当該ラインまたは領域を準備することができる。複数の矩形または複数の選択されたラインのような複数のメモリパターンを複数の線形１次元配列のセットへとパックする、本明細書で開示される複数の方法を使用することで、本明細書で説明される複数の実施形態は、処理を高速化すべく、メモリアクセスに複数の最適化を与えることができる。なぜならば、そうしなければ、複数のプロセッサは、処理を続行する前に、メモリが複数の読み取りおよび書き込みオペレーションを完了するのを待つ必要があるからである。
【００１０】
下記の説明及び特許請求の範囲において、「連結された」および「接続された」という用語は、それらの複数の派生語と共に使用され得る。これらの用語は、相互に同義語であることを意図するものではないことが理解されるべきである。むしろ、特定の複数の実施形態において、「接続された」は、２又は３以上の要素が互いに直接物理的又は電気的に接触した状態にあることを示すべく使用され得る。「連結された」は、２又は３以上の要素が直接物理的又は電気的に接触した状態にあることを意味し得る。しかしながら、「連結された」は、２又は３以上の要素が互いに直接接触した状態ではないが、やはりまだ互いに協働または相互作用することも意味し得る。
【００１１】
幾つかの実施形態は、ハードウェア、ファームウェアおよびソフトウェアのうちの１つ又は組み合わせで実装され得る。幾つかの実施形態は、本明細書で説明される複数のオペレーションを実行するコンピューティングプラットフォームによって読み取られて実行され得る機械可読媒体上に格納された、複数の命令として実装され得る。機械可読媒体は、例えばコンピュータといった機械によって読み取り可能な形で、情報を格納または送信するための任意のメカニズムを含み得る。例えば、機械可読媒体は、リードオンリーメモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、または、例えば搬送波、赤外線信号、デジタル信号、または、信号を送信および／または受信するインターフェースといった、電気信号、光信号、音響信号、もしくは他の形の伝播信号、等を含み得る。
【００１２】
ある実施形態は、実装又は例である。本明細書における「ある実施形態」、「１つの実施形態」、「幾つかの実施形態」、「様々な実施形態」、又は「他の複数の実施形態」という言及は、その複数の実施形態に関連して説明された特定の特徴、構造、又は特性が、必ずしも複数の本発明の全ての実施形態ではなく、少なくとも幾つかの実施形態に含まれることを意味する。「ある実施形態」、「１つの実施形態」、又は「幾つかの実施形態」の様々な出現は、必ずしも全て同じ実施形態に関することでない。ある実施形態の要素又は態様は、他の実施形態の要素又は態様に組み合わされ得る。
【００１３】
本明細書で説明及び示される全てのコンポーネント、特徴、構造、特性などは、特定の実施形態又は複数の実施形態に含まれる必要があるとは限らない。例えば、コンポーネント、特徴、構造、又は特性が含まれ「得る（may）」、「るかもしれない（might）」、「ることができる（can）」、又は「ることができるであろう（could）」と本明細書が述べる場合、その特定のコンポーネント、特徴、構造、又は特性は、含まれることが必要とされない。本明細書又は特許請求の範囲が「ある（a）」又は「ある（an）」要素と言及する場合、それは、その要素が１つだけあることを意味しない。本明細書または特許請求の範囲が、「追加の」要素と言及する場合、それは、その追加の要素が１より多くあることを除外しない。
【００１４】
幾つかの実施形態は特定の実装を参照して説明されるが、幾つかの実施形態に従って、他の実装が可能であるということに留意すべきである。更に、複数の図面で示され、および／または、本明細書で説明される複数の回路要素または他の複数の特徴の配置および／または順序は、図示されて説明された特定の方法で配置される必要はない。幾つかの実施形態に従って、多くの他の配置が可能である。
【００１５】
図に示される各システムにおいて、表わされる複数の要素が異なる、および／または、同様であり得ることを示唆すべく、場合によっては、複数の要素が同じ参照番号又は異なる参照番号をそれぞれ有し得る。しかしながら、ある要素は、異なる実装を有し、本明細書で示され又は説明されるシステムの幾つか又は全てと連携するのに十分に柔軟性を有し得る。図に示される様々な要素は、同じであるか異なっていてもよい。どの１つが第１の要素と称され、どれが第２の要素と呼ばれるかは任意である。
【００１６】
図１は、複数の実施形態に従って使用され得るコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、例えばラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、または、サーバ等であり得る。コンピューティングデバイス１００は、格納された複数の命令を実行するように構成された中央処理ユニット（CPU）１０２、および、CPU１０２によって実行可能な複数の命令を格納するメモリデバイス１０４を含み得る。CPUは、バス１０６によってメモリデバイス１０４に連結され得る。更に、CPU１０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または、任意の数の他の構成であり得る。更に、コンピューティングデバイス１００は、１より多くのCPU１０２を含み得る。CPU１０２によって実行される複数の命令は、メモリアクセスを最適化すべく使用され得る。CPUの側にある多数のコンピューティングアーキテクチャは、本発明のある実施形態において使用され得、例えば、単一命令複数データ（SIMD）命令セット、デジタル信号処理（DSP）プロセッサ、画像信号プロセッサ（ISP）、GPU、または、超長命令語（VLIW）機械のような他のタイプの配列プロセッサなどである。
【００１７】
コンピューティングデバイス１００はまた、グラフィクス処理ユニット（GPU）１０８も含み得る。示されるように、CPU１０２は、バス１０６を通じてGPU１０８に連結され得る。GPU１０８は、コンピューティングデバイス１００の中で任意の数のグラフィックオペレーションを実行するように構成され得る。例えば、GPU１０８は、複数のグラフィクス画像、グラフィクスフレーム、ビデオ等を、コンピューティングデバイス１００のユーザに表示すべく描写または処理するように構成され得る。幾つかの実施形態において、GPU１０８は多数のグラフィクスエンジン（図示せず）を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行するように、または、特定の複数のタイプの仕事量を実行するように構成される。
【００１８】
メモリデバイス１０４は、ランダムアクセスメモリ（RAM）、リードオンリーメモリ（ROM）、フラッシュメモリ、または任意の他の適したメモリシステムを含むことができる。例えば、メモリデバイス１０４は、ダイナミックランダムアクセスメモリ（DRAM）を含み得る。メモリデバイス１０４は、画像メモリアクセスを最適化するための複数の命令を実行するように構成されたデバイスドライバ１１０を含み得る。デバイスドライバ１１０は、ソフトウェア、アプリケーションプログラム、アプリケーションコード等であり得る。
【００１９】
コンピューティングデバイス１００は、イメージキャプチャメカニズム１１２を含む。複数の実施形態において、イメージキャプチャメカニズム１１２は、カメラ、ステレオカメラ、赤外線センサ等である。イメージキャプチャメカニズム１１２は、画像情報をキャプチャすべく使用される。従って、コンピューティングデバイス１００はまた、１または複数のセンサ１１４も含む。複数の例において、センサ１１４はまた、画像テクスチャ情報をキャプチャすべく使用される画像センサでもあり得る。更に、画像センサは、電荷結合素子（CCD）画像センサ、相補型金属酸化膜半導体（CMOS）画像センサ、システムオンチップ（SOC）画像センサ、複数の感光性薄膜トランジスタを備える画像センサ、または、それらの任意の組み合わせであり得る。デバイスドライバ１１０は、ステッパータイラーエンジンを使用してセンサ１１４によってキャプチャされた画像にアクセスし得る。
【００２０】
CPU１０２は、コンピューティングデバイス１００を１または複数の入出力（Ｉ／Ｏ）デバイス１１８に接続するように構成されたＩ／Ｏデバイスインターフェース１１６に、バス１０６を通じて接続され得る。複数のＩ／Ｏデバイス１１８は、例えば、キーボードおよびポインティングデバイスを含み得、当該ポインティングデバイスは、タッチパッドまたはタッチスクリーン等を含み得る。複数のＩ／Ｏデバイス１１８は、コンピューティングデバイス１００の複数のビルトインコンポーネントであり得、または、コンピューティングデバイス１００に外部接続される複数のデバイスであり得る。
【００２１】
CPU１０２はまた、コンピューティングデバイス１００をディスプレイデバイス１２２に接続するように構成されたディスプレイインターフェース１２０にも、バス１０６を通じてリンクされ得る。ディスプレイデバイス１２２は、コンピューティングデバイス１００のビルトインコンポーネントであるディスプレイ画面を含み得る。ディスプレイデバイス１２２はまた、コンピューティングデバイス１００に外部接続されるコンピュータモニタ、テレビまたはプロジェクタ等も含み得る。
【００２２】
コンピューティングデバイスはまた、ストレージデバイス１２４も含む。ストレージデバイス１２４は、例えばハードドライブ、光学的ドライブ、サムドライブ、複数のドライブの配列、または、それらの任意の組み合わせのような物理メモリである。ストレージデバイス１２４は、複数のリモートストレージドライブを含み得る。ストレージデバイス１２４は、コンピューティングデバイス１００上で動作するように構成された任意の数のアプリケーション１２６を含む。複数のアプリケーション１２６は、画像データを処理すべく使用され得る。複数の例において、アプリケーション１２６は、画像メモリアクセスを最適化すべく使用され得る。更に、複数の例において、アプリケーション１２６は、複数の画像上で様々な処理を実行すべく、メモリの中の複数の画像にアクセスし得る。メモリの中の複数の画像は、以下で説明されるステッパータイラーエンジンを使用してアクセスされ得る。
【００２３】
コンピューティングデバイス１００はまた、バス１０６を通じてコンピューティングデバイス１００をネットワーク１３０に接続するように構成され得るネットワークインターフェースコントローラ（NIC）１２８も含み得る。ネットワーク１３０は、ワイドエリアネットワーク（WAN）、ローカルエリアネットワーク（LAN）、または、インターネット等であり得る。
【００２４】
幾つかの実施形態において、アプリケーション１２６は、コンピューティングデバイス１００からプリントエンジン１３２に画像を送信できる。プリントエンジンは、画像をプリントデバイス１３４に送信し得る。プリントデバイス１３４は、複数のプリンタ、ファックス機器、および、プリントオブジェクトモジュール１３６を使用して様々な画像をプリントできる他のプリントデバイスを含むことができる。複数の実施形態において、プリントエンジン１３２は、ネットワーク１３０を介してデータをプリントデバイス１３４に送信し得る。更に、イメージキャプチャメカニズム１１２のような複数のデバイスは、複数の画素の複数の配列を処理すべく、本明細書で説明される複数の技術を使用し得る。複数のディスプレイデバイス１２２はまた、ディスプレイ上での複数の画素の処理を加速すべく、複数の実施形態において、本明細書で説明される複数の技術も使用し得る。
【００２５】
図１のブロック図は、コンピューティングデバイス１００が図１で示される全てのコンポーネントを含むということを、意図的に示すものではない。更に、コンピューティングデバイス１００は、特定の実施形態の詳細に応じて、図１で示されていない任意の数の追加的なコンポーネントを含み得る。
【００２６】
図２は、複数の実施形態による、ある画像の１次元配列への配置スキーム２００を示す図である。配置スキーム２００は、メモリの中の画像にアクセスする複数の処理の効率を改善すべく、メモリの中の画像にアクセスする前にステッパータイラーエンジンおよび矩形アセンブラロジックによって実行され得る。ステッパータイラーエンジンは、２次元画像２０２の複数の領域が順番に急速に処理されるメモリバッファリングを提供できる。ステッパータイラーは、画像アクセス中に２次元画像の選択された複数の領域を格納すべく、ステッパーキャッシュを使用できる。本明細書で開示される複数の実施形態において、高速アクセス可能な任意のキャッシュを使用できることに留意すべきである。
【００２７】
メモリ１０４（図１）の中の２次元画像２０２は、多数の画素領域２０４に分割され得る。各画素領域２０４は、１または複数の画素を含み得る。複数の実施形態において、各画素領域２０４は、複数の画素の矩形グループ、または、複数の画素のライン、または、複数のラインおよび複数の矩形の両方から構成された領域を表わし得る。画像メモリアクセス中に、各画素領域２０４は、画素領域２０４がCPU１０２によって処理される場所となるキャッシュの中へと配置され、処理後に続けてキャッシュ１１０から取り除され得る。CPUに加えて、複数の実施形態は、ロジカルブロック、単一命令複数データ（SIMD）、GPU、デジタル信号プロセッサ（DSP）、画像信号プロセッサ（ISP）、または、超長命令語（VLIW）機械を含むがこれらに限定されない、任意の他の処理アーキテクチャまたは方法を使用し得る。
【００２８】
ステッパータイラーエンジンは、複数のラインおよび複数の矩形のような複数の領域の１次元配列２０６のセットとして２次元画像２０２を再構成できる。従って、複数の非線形メモリ領域と対照的に、メモリアクセスおよび計算の簡略化を目的として任意のアクセスパターンを線形１次元配列へとパックすることができる。１次元配列２０６の各ブロックは、複数の画素の矩形グループまたはラインであり得る画素領域２０４を表わし得る。２次元画像２０２の各矩形ブロックを１次元配列２０６の画素領域２０４へと変換することによる、２次元画像２０２を複数の１次元配列２０６のセットへとアセンブルする処理が図２で示されるが、その一方で、任意のタイプのアクセスパターンが使用され得る。例えば、２次元画像２０４の各列もまた、１次元配列へとアセンブルされ得る。
【００２９】
ステッパータイラーによる本構成によって、CPU１０２は、２次元配列に対して不規則なパターンと対照的に、線形連続パターンで各画素領域２０４を処理することができる。複数の不規則なメモリアクセスパターンによって、処理における遅延が引き起こされ得る。なぜならば、当該アクセスパターンを予測可能な方法で読み取ることができず、または、書き込むことができないからである。更に、メモリシステムは、様々なサイズおよびレベルのキャッシュから構成され得る。プロセッサの近くにある当該キャッシュは、プロセッサからずっと遠くに離れている他のメモリと比較して、より高速なアクセス時間を有する。複数の線形１次元配列へのメモリアクセスを最適化することによって、メモリ性能を最適化し、複数の処理ステージでパイプライン処理することができる。複数の実施形態において、複数の画素領域２０４は、左から右に、または、右から左に、読み取られ得る。１つの画素領域２０４を処理しながら、その順序で次の画素領域をメモリストレージ１０４からキャッシュへと送信しつつ、以前に処理された他の画素領域をキャッシュから取り除くことができる。
【００３０】
ステッパータイラーエンジンによって、１次元配列２０６の各画素領域２０４に急速アクセスすべく、複数の自動インクリメント命令を使用することができる。例えば、一般的にC++で使用される*data++のような高速結合メモリ自動インクリメント命令は、特定のメモリアクセスパターンを使用せずに、画像データの任意の部分にアクセスできる。複数の自動インクリメント命令は、ベースアドレス、および、一般的には配列における標的データのアドレスを発見するのに１つの計算を必要とするオフセットを使用して、データにアクセスできる。従って、複数の自動インクリメント命令により、複数の配列におけるデータにアクセスするのに使用される複数のモードをアドレス指定する場合と比較して、より高速なメモリアクセスが可能となる。例えば、C++を使用した場合、２次元配列は、複数のdata [x][y]のような命令を使用してアクセスされるであろう。x およびyはそれぞれ、標的データの行および列を表わす。しかしながら、そのような命令は一般的に、標的データのアドレスが得られる前に幾つもの計算を必要とする。従って、データを連続する１次元配列へと配置することによって、２次元配列と比較してより高速のデータアクセスが可能となる。
【００３１】
図３は、複数の実施形態による、矩形アセンブラ３００を示す図である。矩形アセンブラ３００は、メモリバッファリング用の複数の２次元画像を準備すべく使用され得るステッパータイラーにおける、エンジン、コマンドまたはロジックであり得る。矩形アセンブラ３００は、複数の２次元配列３０２上で、それらを複数の１次元配列３０４または複数の領域ベクトルへとアセンブルすべく動作できる。複数の２次元配列３０２の各々は、幾つかの実施形態において、２次元画像の、複数の画素、または、複数の画素の複数のグループを表わし得る複数の画素領域を含む。２次元配列３０２における各ブロックは、２次元配列３０２の中の画素領域のXおよびY座標に対応する指示を与えられ得る。上記で議論されたように、C++での画素領域にアクセスする命令は、「data [x][y]」であろう。
【００３２】
矩形アセンブラ３００は、各２次元配列３０２を、各配列の中に含まれる複数のブロックがより高速で予測可能なアクセスパターンを可能とする連続した順序で配置されるように、１次元配列３０４としてアセンブルすることができる。上記で議論されたように、CPUは、メモリアドレスを変更またはインクリメントする第１命令、および、処理を実行する第２命令を発するより効率的である同じ結合命令で処理およびメモリインクリメントの両方を実行できる自動インクリメント機械命令フォームで、各ブロックに順にアクセスできる。例えば、C++ソフトウェアでの一連のブロックにアクセスする命令は、現在のブロックを処理した後に続く各ブロックにアクセスするようCPUに指示する複数の自動インクリメント命令フォームを使用すべくコードを生成することを可能にするであろう「*data++」という命令を含み得る。複数のラインアクセスパターンの複数の矩形を複数の線形にパックされた１次元配列へとフォーマットすることで、ステッパータイラーエンジンにより、メモリにアクセスする速度の向上のみならず、効率的な結合処理および複数のメモリ自動インクリメント命令も提供される。なぜならば、複数の１次元配列を、当該複数の１次元配列がキャッシュにおいて複数のプロセッサの近くに保管されることを可能にするサイズにすることができるからである。
【００３３】
図４Ａ、図４Ｂおよび図４Ｃは、複数の実施形態による、複数の矩形バッファを使用した画像の線形的処理の例を図示している。図４Ａ、図４Ｂおよび図４Ｃは、ラインバッファのセットを横切って移動され、ステッパータイラー高速キャッシュの中に含まれ得る、処理される矩形領域を備えたステッパータイラーエンジンの使用を図示している。ステッパータイラーエンジンは、矩形アセンブラが処理用にパイプライン方式で複数の矩形領域を線形にパックされた複数の１次元配列のセットとしてプレアセンブルすることを可能とするのに複数のラインが必要とされる前に、当該複数のラインを先読込することができる。当該複数のラインは、先読込されて、複数の矩形を抽出するための複数の容器としての高速ステッパータイラーキャッシュの中に格納され得る。複数の図において、画像４００における、複数の画素領域、または、複数のインクリメントの複数の領域は、隔てて区分され、処理領域４０１、活性状態のバッファ４０２、追い出しバッファ４０４、および、先読込バッファ４０６として指定され得る。複数の領域または複数のバッファの各々のサイズおよび形状は、処理の前に画定され得る。
【００３４】
処理領域４０１は、現在処理されている、画像４００からの領域を表わし得る。画像は、プリンタ、ビデオデバイス、または、視聴用または複数の画像強調用のディスプレイインターフェースにストリームされ得る。複数の実施形態において、処理領域４０１は、CPU１０２によってキャッシュ１１０から出力デバイス１０６へとストリームされる矩形領域である。複数の説明的な目的で、処理領域４０１はブラックボックスとして示されている。活性状態のバッファ４０２は、キャッシュ１１０の中に格納される１または複数のラインのセットを表わし得る。複数の説明的な目的で、活性状態のバッファは、活性状態のバッファ４０２の複数のブロック内で複数のドットを使用して示されている。図４Ａ、図４Ｂおよび図４Ｃにおいて、本例示的実施形態における活性状態のバッファ４０２は、各々が７つの画素領域を備える２本のラインを含むように画定されている。幾つかの実施形態において、活性状態のバッファ４０２は、異なる数の画素領域を含み得ることに留意すべきである。図４Aおよび図４Bで示されるように、処理領域４０１は、複数の画素または複数のインクリメントの各グループが連続した順序で処理されるに連れて、活性状態のバッファ４０２の間でインクリメンタルに移動する。活性状態のバッファ４０２内の全ての画素が処理された場合、図４Cで示されるように、ある順序で次の複数のラインのセットが活性状態のバッファ４０２の中へと配置される。
【００３５】
追い出しバッファ４０４は、活性状態のバッファ４０２の一部として以前に処理された１または複数のラインを表わし得る。図４Ａ、図４Ｂおよび図４Ｃにおいて、本例示的実施形態における追い出しバッファ４０４は、７つの画素領域の単一ラインを含むように画定され得る。幾つかの実施形態において、追い出しバッファ４０４は、異なる数の画素領域を含み得ることに留意すべきである。当該複数のラインはもはや必要ないので、現在アクティブなバッファ４０２を処理しながら、追い出しバッファ４０４における複数のラインをキャッシュから取り除く。
【００３６】
先読込バッファ４０６は、その順序で次に、活性状態のバッファ４０２の一部として処理される１または複数のラインを表わし得る。図４Ａ、図４Ｂおよび図４Ｃにおいて、先読込バッファ４０６は、７つの画素領域の単一ラインを含むように画定される。活性状態のバッファ４０２を処理しつつ、先読込バッファ４０４の複数のラインを、活性状態のバッファ４０２の複数のラインを処理し終えた後直ぐに処理できるように、キャッシュ１１０の中に配置することができる。
【００３７】
図５Ａ、図５Ｂおよび図５Ｃは、複数の実施形態による、複数のラインバッファを使用した画像の線形的処理の例を図示している。複数の図において、画像５００における、複数の画素領域は、隔てて区分され、活性状態のバッファ５０２、追い出しバッファ５０４、および、先読込バッファ５０６として指定され得る。
【００３８】
活性状態のバッファ５０２は、キャッシュ１１０の中に格納される１または複数のラインのセットを表わし得る。図５Ａ、図５Ｂおよび図５Ｃにおいて、活性状態のバッファ５０２は、７つの画素領域の単一ラインを含むように画定される。幾つかの実施形態において、活性状態のバッファ５０２は、異なる数の画素領域を含み得ることに留意すべきである。図５Ａ、図５Ｂおよび図５Ｃで示されるように、活性状態のバッファ５０２は、各ラインが処理されるに連れて、ラインからラインへと連続した順序で移動する。
【００３９】
追い出しバッファ５０４は、活性状態のバッファ５０２の一部として以前に処理された１または複数のラインを表わし得る。図５Ａ、図５Ｂおよび図５Ｃにおいて、追い出しバッファ５０４は、７つの画素領域の単一ラインを含むように画定される。当該複数のラインはもはや必要ないので、現在アクティブなバッファ５０２を処理しながら、追い出しバッファ５０４における複数のラインをキャッシュから取り除く。
【００４０】
先読込バッファ５０６は、その順序で次に、活性状態のバッファ５０２の一部として処理される１または複数のラインを表わし得る。図５Ａ、図５Ｂおよび図５Ｃにおいて、先読込バッファ５０６は、７つの画素領域の単一ラインを含むように画定される。活性状態のバッファ５０２を処理しつつ、先読込バッファ５０４の複数のラインを、活性状態のバッファ５０２の複数のラインを処理し終えた後直ぐに処理できるように、キャッシュ１１０の中に配置することができる。
【００４１】
図６は、メモリの中に格納された画像にアクセスする方法６００の処理フロー図である。当該方法６００は、コンピュータまたはカメラのような電子デバイスにおけるCPUのステッパータイラーエンジンによって実行できる。当該方法６００は、C、C++、MATLAB、FORTRANまたはJava（登録商標）で書き込まれたコンピュータコードで実装され得る。
【００４２】
ブロック６０２で、ステッパータイラーエンジンは、メモリストレージから画像データを先読込する。画像データは複数の画素領域から構成され得、当該複数の画素領域は、少なくとも１つの画素、複数の画素のグループ、複数の画素の領域、または、それらの任意の組み合わせであり得る。
【００４３】
ブロック６０４で、ステッパータイラーエンジンは、画像データを線形的に処理される１次元配列として配置する。１次元配列は、複数の画素領域の線形的順序としてアクセスされ得る。各画素領域の複数の特性およびサイズは、書き込まれたコードで判断できる。書き込まれたコードは、画像のストレージ位置および転送先の複数のアドレスも含み得る。２次元画像処理が説明されるけれども、複数の本技術は、２次元画像処理、３次元画像処理、または、ｎ次元画像処理のような任意の画像処理に対して使用され得る。
【００４４】
複数の実施形態において、矩形アセンブラは、データを再び１次元配列へとコピーする代わりに、データを複数のポインタの配列としてキャッシュし得る。このように、複数の矩形が、複数の矩形を含むキャッシュの中の複数のラインへの複数のポインタの、複数の１次元配列へとアセンブルされる。結果として、複数の先読込されたラインがステッパータイラーキャッシュへと１回コピーされ、これによって、重複コピーが防止される。このタイプの１次元配列実施形態において、複数の１次元配列は、複数のラインバッファの中の複数の矩形領域への複数のポインタの配列として表わされる。それと同様に、キャッシュの追い出しの前にデータをメモリへ書き戻すべく、同じ配置を使用できる。
【００４５】
ブロック６０６で、ステッパータイラーエンジンは、キャッシュの中に格納された第１画素領域を処理する。例えば、第１画素を処理することは、画素領域を、コンピュータモニタ、プリンタまたはカメラのような入出力デバイスにストリーミングまたは伝達することを含み得る。
【００４６】
ブロック６０８で、ステッパータイラーエンジンは、第２画素領域を画像からキャッシュへと配置する。プロセッサは、１または複数の画素領域をキャッシュへと先読込することができ、または、キャッシュへと送信することができる。キャッシュへと先読込される画素領域の数は、書き込まれたコードで判断できる。第２画素領域は、第１画素領域が処理された後に処理される。
【００４７】
ブロック６１０で、ステッパータイラーエンジンは第２画素領域を処理する。プロセッサは、キャッシュへと配置された複数の画素領域を処理して、キャッシュに含まれる複数の画素を入出力デバイスにストリームすることができる。複数の画素領域は、全てを同時に、または、一度に１画素を処理できる。
【００４８】
ブロック６１２で、ステッパータイラーエンジンは、１次元配列をメモリストレージに書き戻す。１次元配列は、２次元画像として書き戻すことができる。
【００４９】
ブロック６１４で、ステッパータイラーエンジンは、キャッシュから第１画素領域を追い出す。キャッシュの中の複数の画素領域が処理された後、プロセッサは、キャッシュから画素領域を取り除くこと、または、追い出すことができる。複数の画素領域を、メモリストレージの中に格納し続けることができる。
【００５０】
当該方法６００は、通信バスを介してステッパータイラーエンジンと行き来するプロトコルストリームを含む多数の方法で、または、共有されるメモリおよび制御レジスタ（CSR）インターフェースを通じて、ステッパータイラーエンジンにより制御することができる。表１は、当該方法６００を実行するためのCSRインターフェースのある実施形態を示している。
【００５１】
【表１】
2016502211.tif 000003
【００５２】
当該方法６００は、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
}
}
【００５４】
図６の処理フロー図は、当該方法６００の複数のブロックがいずれかの特定の順序で実行されるということ、または、全てのブロックが全ての場合に含まれるということを、意図的に示すものではない。更に、任意の数の追加的なブロックが、特定の実施形態の詳細に応じて、当該方法６００の中に含まれ得る。
【００５５】
図７は、複数の実施形態による、メモリの中の画像にアクセスするためのコードを格納する、有形な非一時的コンピュータ可読媒体７００を示すブロック図である。有形な非一時的コンピュータ可読媒体は、コンピュータバス７０４を介して、プロセッサ７０２によりアクセスされ得る。更に、有形な非一時的コンピュータ可読媒体７００は、本明細書で説明される複数の方法を実行するようにプロセッサ７０２に対して命令するよう構成されたコードを含み得る。
【００５６】
本明細書で議論される様々なソフトウェアコンポーネントは、図７で示されるような有形な非一時的コンピュータ可読媒体７００上に格納され得る。先読込モジュール７０６は、メモリストレージから画像データを先読込して、画素領域をキャッシュへと配置するように構成され得る。線形配置モジュール７０８は、画像データを線形的に処理することを可能にすべく、当該画像データを複数の１次元配列のセットとして配置するように構成され得る。処理ブロック７１０は、画素領域を処理するように構成され得る。追い出しブロック７１２は、キャッシュから画素領域を取り除くように構成され得る。メモリ再書き込みブロック７１４は、複数の１次元配列のセットをメモリストレージへと書き戻すように構成され得る。
【００５７】
図７のブロック図は、有形な非一時的コンピュータ可読媒体７００が図７で示される全てのコンポーネントを含むということを、意図的に示すものではない。更に、有形な非一時的コンピュータ可読媒体７００は、特定の実施形態の詳細に応じて、図７で示されていない任意の数の追加的なコンポーネントを含み得る。
【００５８】
例１
【００５９】
メモリの中の画像にアクセスする装置がここで説明される。当該装置は画像データを先読込するロジックを含み、当該画像データは、複数の画素領域、および、画像データを線形的に処理される複数の１次元配列のセットとして配置するロジックを含む。当該装置はまた、複数の１次元配列のセットからキャッシュの中に格納されている第１画素領域を処理するロジック、および、第１画素領域が処理された後に処理される第２画素領域を複数の１次元配列のセットからキャッシュへと配置するロジックも含む。更に、当該装置は、第２画素領域を処理するロジック、複数の１次元配列のセットの処理された複数の画素領域をメモリストレージへと書き戻すロジック、および、キャッシュから複数の画素領域を追い出すロジックを含む。
【００６０】
画像データは、画像のライン、領域、ブロック、または、グループであり得る。画像データは、画像データへの複数のポインタのセットを使用して配置され得る。複数の１次元配列の少なくとも１つは、複数の画素領域の線形的順序である。当該装置はまた、キャッシュの中で処理される画素領域の数を同時にセットするロジック、処理の前にキャッシュへと配置される画素領域の数をセットするロジック、または、処理の後にキャッシュから取り除かれる画素領域の数をセットするロジックも含み得る。複数の画素領域のラインが処理され得、または、複数の画素領域の矩形ブロックが処理される。複数の画素領域は、当該複数の画素領域がキャッシュから追い出される前にメモリに書き込まれ得る。読み取りおよび書き込みアクセス用に複数の画素領域が存在するメモリストレージへのポインタがセットされ得る。当該装置は、プリントデバイスであり得る。当該装置はまた、イメージキャプチャメカニズムでもあり得る。当該イメージキャプチャメカニズムは、画像データを収集する少なくとも１つまたは複数のセンサを含み得る。
【００６１】
例２
【００６２】
メモリストレージの中の画像にアクセスするシステムがここで説明される。当該システムは、画像データを格納するメモリストレージ、キャッシュおよびプロセッサを含む。当該プロセッサは、複数の画素領域を含む画像データを先読込し、画像データを線形的に処理される１次元配列のセットとして配置し、画像データからキャッシュに格納されている第１画素領域を処理し、且つ、第１画素領域が処理された後に処理される第２画素領域を画像データからキャッシュへと配置し得る。当該プロセッサはまた、第２画素領域を処理し、複数の１次元配列のセットをメモリストレージへと書き戻し、且つ、キャッシュから第１画素領域を追い出し得る。
【００６３】
画像データは、画像データへの複数のポインタのセットを使用して配置され得る。当該システムは、プロセッサに通信状態で連結され、画像を表示するように構成される出力デバイスを含み得る。当該出力デバイスは、プリンタまたはディスプレイ画面であり得る。プロセッサは、画像における各画素領域を、複数の１次元配列による連続した順序で処理し得る。画像は、ビデオのフレームであり得る。
【００６４】
例３
【００６５】
メモリストレージの中の画像にアクセスする有形な非一時的コンピュータ可読媒体がここで説明される。有形な非一時的コンピュータ可読媒体は複数の命令を含み、当該複数の命令は、プロセッサによって実行された場合に、複数の画素領域を含む画像データを先読込し、画像データを線形的に処理される複数の１次元配列のセットとして配置し、キャッシュの中に格納されている画像データから第１画素領域を処理するように構成される。当該複数の命令はまた、第１画素領域が処理された後に処理される第２画素領域を画像データからキャッシュへと配置し、第２画素領域を処理し、複数の１次元配列のセットをメモリストレージへと書き戻し、キャッシュから第１画素領域を追い出すように構成される。
【００６６】
１次元配列は、複数の画素領域の線形的順序であり得る。画像データは、画像データへの複数のポインタのセットを使用して配置され得る。キャッシュの中で同時に処理される画素領域の数がセットされ得る。更に、処理の前にキャッシュへと配置される画素領域の数がセットされ得る。処理の後にキャッシュから取り除かれる画素領域の数もまたセットされ得る。複数の画素領域のラインが処理され得、または、複数の画素領域の矩形ブロックが処理され得る。
【００６７】
上述の複数の例における個別の事柄は、１または複数の実施形態のいずれにおいても用いられ得ることが理解されるべきである。例えば、上記で説明されたコンピューティングデバイスの全ての選択的特徴は、本明細書で説明される複数の方法またはコンピュータ可読媒体のいずれかに対して実装され得る。更に、複数のフロー図および／または複数の状態図が、複数の実施形態を説明すべく本明細書で使用され得たけれども、複数の本発明は、本明細書で、これら複数の図または対応する複数の説明に限定されない。例えば、フローは、必ずしも、図示された各ボックスまたは状態によって、または、本明細書で図示されて説明されるものと厳密に同じ順序で、進む必要はない。
【００６８】
本発明は、本明細書で列挙された特定の複数の詳細に限定されない。実際に、本開示の利益を得る当業者は、多くの他の変形例が、複数の本願発明の範囲内で、前述の説明および複数の図面から作られ得ることを理解するだろう。従って、複数の本発明に関する任意の修正例を包含する以下の特許請求の範囲が、複数の本発明の範囲を規定している。
【図１】
2016502211.tif 000004
【図２】
2016502211.tif 000005
【図３】
2016502211.tif 000006
【図４Ａ】
2016502211.tif 000007
【図４Ｂ】
2016502211.tif 000008
【図４Ｃ】
2016502211.tif 000009
【図５Ａ】
2016502211.tif 000010
【図５Ｂ】
2016502211.tif 000011
【図５Ｃ】
2016502211.tif 000012
【図６】
2016502211.tif 000013
【図７】
2016502211.tif 000014
【手続補正書】
【提出日】平成27年6月23日(2015.6.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリストレージの中の画像にアクセスするシステムであって、
画像データを格納するメモリストレージと、
キャッシュと、
プロセッサと
を備え、
前記プロセッサは、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置し、
前記画像データから、前記キャッシュの中に格納されている第１画素領域を処理し、
前記第１画素領域が処理された後に処理される第２画素領域を、前記画像データから前記キャッシュへと配置し、
前記第２画素領域を処理し、
前記複数の１次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第１画素領域を追い出す、
システム。
【請求項２】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項１に記載のシステム。
【請求項３】
前記プロセッサに通信状態で連結され、前記画像を表示する出力デバイスを更に備える、請求項１または２に記載のシステム。
【請求項４】
前記出力デバイスはプリンタである、請求項３に記載のシステム。
【請求項５】
前記出力デバイスはディスプレイ画面を有する、請求項３または４に記載のシステム。
【請求項６】
前記プロセッサは、前記画像の中の各画素領域を、前記複数の１次元配列による連続した順序で処理する、請求項１から５のいずれか一項に記載のシステム。
【請求項７】
前記画像はビデオのフレームである、請求項１から６のいずれか一項に記載のシステム。
【請求項８】
メモリストレージの中の画像にアクセスする装置であって、
複数の画素領域を含む画像データを先読込するロジックと、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置するロジックと、
前記複数の１次元配列のセットから、キャッシュの中に格納されている第１画素領域を処理するロジックと、
前記第１画素領域が処理された後に処理される第２画素領域を、前記複数の１次元配列のセットから前記キャッシュへと配置するロジックと、
前記第２画素領域を処理するロジックと、
前記複数の１次元配列のセットの前記処理された複数の画素領域を前記メモリストレージへと書き戻すロジックと、
前記キャッシュから前記複数の画素領域を追い出すロジックと
を備える装置。
【請求項９】
前記画像データは、前記画像のライン、領域、ブロックまたはグループである、請求項８に記載の装置。
【請求項１０】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項８または９に記載の装置。
【請求項１１】
前記複数の１次元配列の少なくとも１つは、複数の画素領域の線形的順序、または、前記複数の画素領域の中の複数の画素への複数のポインタの１次元配列である、請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
前記キャッシュの中で同時に処理される画素領域の数をセットするロジックを更に備える、請求項８から１１のいずれか一項に記載の装置。
【請求項１３】
処理の前に前記キャッシュへと配置される画素領域の数をセットするロジックを更に備える、請求項８から１２のいずれか一項に記載の装置。
【請求項１４】
処理の後に前記キャッシュから取り除かれる画素領域の数をセットするロジックを更に備える、請求項８から１３のいずれか一項に記載の装置。
【請求項１５】
複数の画素領域のラインが処理される、請求項８から１４のいずれか一項に記載の装置。
【請求項１６】
前記複数の画素領域は、前記複数の画素領域が前記キャッシュから追い出される前にメモリに書き込まれる、請求項８から１５のいずれか一項に記載の装置。
【請求項１７】
複数の画素領域の矩形ブロックが処理される、請求項８から１６のいずれか一項に記載の装置。
【請求項１８】
読み取りおよび書き込みアクセス用に複数の画素領域が存在する前記メモリストレージへのポインタをセットするロジックを更に備える、請求項８から１７のいずれか一項に記載の装置。
【請求項１９】
前記装置はプリントデバイスである、請求項８から１８のいずれか一項に記載の装置。
【請求項２０】
前記装置はイメージキャプチャメカニズムである、請求項８から１９のいずれか一項に記載の装置。
【請求項２１】
前記イメージキャプチャメカニズムは、画像データを収集する１または複数のセンサを有する、請求項２０に記載の装置。
【請求項２２】
メモリストレージの中の画像にアクセスする有形な非一時的コンピュータ可読媒体であって、
複数の画素領域を含む画像データを先読込し、
前記画像データを、線形的に処理される複数の１次元配列のセットとして配置し、
前記画像データから、キャッシュの中に格納されている第１画素領域を処理し、
前記第１画素領域が処理された後に処理される第２画素領域を、前記画像データから前記キャッシュへと配置し、
前記第２画素領域を処理し、
前記複数の１次元配列のセットを前記メモリストレージへと書き戻し、
前記キャッシュから前記第１画素領域を追い出す複数の命令
を備える有形な非一時的コンピュータ可読媒体。
【請求項２３】
前記画像データは、前記画像データへの複数のポインタのセットを使用して配置される、請求項２２に記載の有形な非一時的コンピュータ可読媒体。
【請求項２４】
前記１次元配列は複数の画素領域の線形的順序である、請求項２２または２３に記載の有形な非一時的コンピュータ可読媒体。
【請求項２５】
前記キャッシュの中で同時に処理される画素領域の数をセットする複数の命令を更に備える、請求項２２から２４のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２６】
処理の前に前記キャッシュへと配置される画素領域の数をセットする複数の命令を更に備える、請求項２２から２５のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２７】
処理の後に前記キャッシュから取り除かれる画素領域の数をセットする複数の命令を更に備える、請求項２２から２６のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２８】
複数の画素領域のラインが処理される、請求項２２から２７のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【請求項２９】
複数の画素領域の矩形ブロックが処理される、請求項２２から２８のいずれか一項に記載の有形な非一時的コンピュータ可読媒体。
【国際調査報告】
2016502211.tif 000015
2016502211.tif 000016