(57)【要約】  画像プロセッサが記載される。画像プロセッサは、画像プロセッサによる処理のために外部メモリから入力画像データを読み出し、画像プロセッサからの出力画像データを外部メモリに書き込むＩ／Ｏユニットを備える。Ｉ／Ｏユニットは、複数の論理チャネルユニットを含む。各論理チャネルユニットは、外部メモリと画像プロセッサ内のそれぞれの作成構成要素または消費構成要素との間に論理チャネルを形成する。各論理チャネルユニットは、再フォーマット回路系およびアドレス指定回路系を利用するように設計される。アドレス指定回路系は、外部メモリに適用されるアドレス指定スキーム、および外部メモリとそれぞれの作成構成要素または消費構成要素との間の画像データの再フォーマットを制御する。再フォーマット回路系は再フォーマットを実行する。
2019509549.tif 000002
【特許請求の範囲】
【請求項１】
画像プロセッサであって、
前記画像プロセッサによる処理のために外部メモリから入力画像データを読み出し、前記画像プロセッサからの出力画像データを前記外部メモリに書き込むＩ／Ｏユニットを備え、前記Ｉ／Ｏユニットは、
複数の論理チャネルユニットを含み、各論理チャネルユニットは、外部メモリと、前記画像プロセッサ内のそれぞれの作成構成要素または消費構成要素との間に論理チャネルを形成し、各論理チャネルユニットは、
前記外部メモリに適用されるアドレス指定スキーム、および外部メモリとそれぞれの作成構成要素または消費構成要素との間の画像データの再フォーマットを制御するアドレス指定回路系と、
前記再フォーマットを実行する再フォーマット回路系とを利用するように設計される、画像プロセッサ。
【請求項２】
前記アドレス指定回路系は、前記画像フレームよりも小さい幅を有する入力画像フレームの領域が前記外部メモリと前記それぞれの作成構成要素または消費構成要素との間で渡されることができるように前記外部メモリをアドレス指定することができる、請求項１に記載の画像プロセッサ。
【請求項３】
前記領域は、前記入力画像フレームを横切ってアドホックな態様で配列され得る、請求項２に記載の画像プロセッサ。
【請求項４】
前記再フォーマット回路系は、前記画像プロセッサへの提示のためにすべて１つの色のピクセルのブロックを構築することができる、請求項１〜請求項３のいずれか１項に記載の画像プロセッサ。
【請求項５】
前記画像プロセッサは、同じ色のピクセル値のシートを処理するそれぞれの二次元シフトレジスタアレイ回路構造を各々が有する内部の複数のプロセッサを含む、請求項４に記載の画像プロセッサ。
【請求項６】
前記再フォーマット回路系は、前記画像プロセッサによって生成された同じ色のピクセル出力データのブロックから外部メモリに書き込むためのＲＧＢフォーマットされた出力データを構築することができる、先行する請求項のいずれか１項に記載の画像プロセッサ。
【請求項７】
前記画像プロセッサは、同じ色のピクセル値のシートを処理するそれぞれの二次元シフトレジスタアレイ回路構造を各々が有する内部の複数のプロセッサを含む、請求項６に記載の画像プロセッサ。
【請求項８】
コンピューティングシステムであって、
１つ以上の汎用プロセッサと、
システムメモリと、
前記システムメモリに結合されたメモリコントローラと、
請求項１〜請求項７のいずれか１項に記載の画像プロセッサとを備える、コンピューティングシステム。
【請求項９】
前記外部メモリの少なくとも一部は前記システムメモリ内にある、請求項８に記載のコンピュータシステム。
【請求項１０】
方法であって、
画像プロセッサ内における消費構成要素への論理接続を可能にすることと、
画像データのフレームから一連の制限された幅の画像領域を読み出すこととを備え、各前記画像領域はＲＧＢフォーマットに従ってフォーマットされ、前記方法はさらに、
前記一連の制限された幅の画像領域を同じ色成分を有する画像データのブロックに再フォーマットすることと、
前記同じ色成分を有する画像データのブロックを前記消費構成要素に転送することとを備える、方法。
【請求項１１】
同じ色を有する画像データのブロックを、二次元シフトレジスタアレイ回路構造から入力オペランドを受け取り、前記二次元シフトレジスタアレイ回路構造に出力オペランドを書き込む実行レーンのアレイで処理することをさらに備える、請求項１０に記載の方法。
【請求項１２】
前記二次元シフトレジスタアレイ回路構造は、同じ色を有する画像データのシートを含む、請求項１１に記載の方法。
【請求項１３】
前記消費構成要素は、画像データの同じ色の領域を前記実行レーンに向けて供給するラインバッファユニットである、請求項１１に記載の方法。
【請求項１４】
前記制限された幅の画像領域は、前記画像フレームを横切ってアドホックな態様で分散される、請求項１０から請求項１３のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連事例
この出願は、２０１６年２月２８日に出願された米国仮出願第６２／３００，８８０号「画像プロセッサのためのマクロＩ／Ｏユニット（“Macro I/O Unit For Image Processor”）」の利益を主張し、その全体をここに引用により援用する。
【０００２】
発明の分野
本発明は、一般に、画像処理に関し、特に、画像プロセッサのためのマクロＩ／Ｏユニットに関する。
【背景技術】
【０００３】
背景
画像処理は、典型的には、アレイに編成されたピクセル値の処理を含む。ここで、空間的に編成された二次元アレイは、画像の二次元的性質を捕捉する（追加の次元は、時間（例えば二次元画像のシーケンス）およびデータタイプ（例えば色）を含み得る。典型的なケースでは、アレイ化されたピクセル値は、静止画像または動きの画像を捕捉するためにフレームのシーケンスを生成したカメラによって提供される。伝統的な画像プロセッサは、典型的には、２つの極端な側面のいずれかに分類される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
第１の極端な側面は、汎用プロセッサまたは汎用状プロセッサ（例えばベクトル命令拡張を備えた汎用プロセッサ）上で実行されるソフトウェアプログラムとして画像処理タスクを実行する。第１の極端な側面は、一般的に非常に汎用性の高いアプリケーションソフトウェア開発プラットフォームを提供するが、関連するオーバーヘッド（例えば、命令フェッチおよびデコード、オンチップおよびオフチップデータの処理、投機的実行）と組み合わされたより精細な粒子のデータ構造の使用は、究極的には、プログラムコードの実行中に、データの単位あたり、より多くのエネルギーが消費される結果となる。
【０００５】
第２の逆の極端な側面は、固定機能のハードワイヤード回路系をはるかに大きなデータブロックに適用する。カスタム設計された回路に直接適用される、（粒度の細かいブロックとは対照的な）より大きなデータブロックの使用は、データ単位あたりの消費電力を大幅に削減する。しかしながら、カスタム設計された固定機能回路系の使用は、一般に、プロセッサが実行することができるタスクのセットが限られる結果となる。このように、（第１の極端な側面に関連する）幅広く汎用性の高いプログラミング環境は第２の極端な側面においては欠けている。
【０００６】
高度に汎用性の高いアプリケーションソフトウェア開発の機会と、データ単位あたりの電力効率の向上とを両立させた技術プラットフォームは、依然として望ましいが、欠けている解決策である。
【課題を解決するための手段】
【０００７】
概要
画像プロセッサが記載される。画像プロセッサは、画像プロセッサによる処理のために外部メモリから入力画像データを読み出し、画像プロセッサからの出力画像データを外部メモリに書き込むＩ／Ｏユニットを備える。Ｉ／Ｏユニットは、複数の論理チャネルユニットを含む。各論理チャネルユニットは、外部メモリと画像プロセッサ内のそれぞれの作成構成要素または消費構成要素との間に論理チャネルを形成する。各論理チャネルユニットは、再フォーマット回路系およびアドレス指定回路系を利用するように設計される。アドレス指定回路系は、外部メモリに適用されるアドレス指定スキーム、および外部メモリとそれぞれの作成構成要素または消費構成要素との間の画像データの再フォーマットを制御する。再フォーマット回路系は再フォーマットを実行する。
【０００８】
装置が記載される。装置は、画像プロセッサ内における消費構成要素への論理接続を可能にするための手段を含む。装置はまた、画像データのフレームから一連の制限された幅の画像領域を読み出すための手段を含み、各画像領域はＲＧＢフォーマットに従ってフォーマットされている。装置はまた、一連の制限された幅の画像領域を同じ色を有する画像データのブロックに再フォーマットするための手段を含む。装置はまた、同じ色を有する画像データのブロックを消費構成要素に転送するための手段を含む。
【０００９】
図面のリスト
以下の説明および添付の図面は、本発明の実施形態を例示するために使用される。
【図面の簡単な説明】
【００１０】
【図１】技術プラットフォームの様々なコンポーネントを示す。
【図２ａ】カーネルとともに構築されたアプリケーションソフトウェアの実施形態を示す。
【図２ｂ】カーネルの構造の実施形態を示す。
【図３】カーネルの動作の実施形態を示す。
【図４】画像プロセッサハードウェアアーキテクチャの実施形態を示す。
【図５ａ】画像データのライングループへの解析、ライングループのシートへの解析、および重なり合うステンシルを伴うシートに対して実行される操作を示す。
【図５ｂ】画像データのライングループへの解析、ライングループのシートへの解析、および重なり合うステンシルを伴うシートに対して実行される操作を示す。
【図５ｃ】画像データのライングループへの解析、ライングループのシートへの解析、および重なり合うステンシルを伴うシートに対して実行される操作を示す。
【図５ｄ】画像データのライングループへの解析、ライングループのシートへの解析、および重なり合うステンシルを伴うシートに対して実行される操作を示す。
【図５ｅ】画像データのライングループへの解析、ライングループのシートへの解析、および重なり合うステンシルを伴うシートに対して実行される操作を示す。
【図６】ステンシルプロセッサの実施形態を示す。
【図７】画像プロセッサの構成およびプログラミングの実施形態を示す。
【図８】ライングループからなる画像フレームを示す。
【図９ａ】ラインバッファユニットの設計および動作上の実施形態を示す。
【図９ｂ】ラインバッファユニットの設計および動作上の実施形態を示す。
【図９ｃ】ラインバッファユニットの設計および動作上の実施形態を示す。
【図９ｄ】画像プロセッサのプログラマブルなレジスタ空間の実施形態を示す。
【図９ｅ】画像プロセッサのプログラマブルなレジスタ空間の実施形態を示す。
【図１０ａ】仮想的に高い動作モードを示す。
【図１０ｂ】仮想的に高い動作モードを示す。
【図１１ａ】マクロＩ/Ｏユニットの実施形態を示す。
【図１１ｂ】マクロＩ/Ｏユニットの実施形態を示す。
【図１２ａ】マクロＩ／Ｏユニットの実施形態の第１の能力を示す。
【図１２ｂ】マクロＩ／Ｏユニットの実施形態の第１の能力を示す。
【図１３】マクロＩ／Ｏユニットの実施形態の第２の能力を示す。
【図１４】マクロＩ／Ｏユニットの実施形態によって実行される方法を示す図である。
【図１５】コンピューティングシステムの実施形態を示す。
【発明を実施するための形態】
【００１１】
詳細な記載
ｉ．導入
以下の説明は、広く汎用性のあるアプリケーションソフトウェア開発環境を提供する新たな画像処理技術プラットフォームに関する多数の実施形態を記載するものであり、それは改善された電力効率を提供するために、より大きなデータのブロック（例えば、以下にさらに説明するようなライングループおよびシート）を使用する。
【００１２】
１．０  アプリケーションソフトウェア開発環境
ａ．カーネルの用途および構造
図１は、仮想画像処理環境１０１と、実際の画像処理ハードウェア１０３と、仮想処理環境１０１のために書かれたよりハイレベルのコードを、実際のハードウェア１０３が物理的に実行するオブジェクトコードに変換するためのコンパイラ１０２とを含む、画像プロセッサ技術プラットフォームのハイレベル図である。以下でより詳細に説明するように、仮想処理環境１０１は、アプリケーションの構成プロセスの容易な視覚化のために開発および調整できるアプリケーションの点で、広く汎用性が高い。開発者１０４によるプログラムコード開発努力が完了すると、コンパイラ１０２は、仮想処理環境１０１内で書かれたコードを、実際のハードウェア１０３に対して対象とされるオブジェクトコードに変換する。
【００１３】
図２ａは、仮想環境内で書かれたアプリケーションソフトウェアが取ることができる構造および形態の例を示す。図２ａにおいて見られるように、プログラムコードは、入力画像データ２０１の１つ以上のフレームを処理して、入力画像データ２０１上で何らかの全体的な変換を行うことが期待される。変換は、開発者によって明示されたオーケストレーションされたシーケンスで入力画像データに対して動作するプログラムコード２０２の１つ以上のカーネルの動作によって実現される。
【００１４】
例えば、図２ａにおいて見られるように、最初に第１のカーネルＫ１で各入力画像を処理することによって全体の変換が行われる。カーネルＫ１によって生成された出力画像は、カーネルＫ２によって操作される。カーネルＫ２によって生成された出力画像の各々は、カーネルＫ３＿１またはＫ３＿２によって操作され、カーネルＫ３＿１／Ｋ３＿２によって生成された出力画像は、カーネルＫ４によって操作される。カーネルＫ３＿１およびＫ３＿２は、Ｋ３ステージで並列処理を課すことによって全体の処理を高速化するように設計された同一のカーネルであってもよいし、異なるカーネルであってもよい（例えば、カーネルＫ３＿１は第１の特定タイプの入力画像で動作し、カーネルＫ３＿２は第２の異なるタイプの入力画像で動作する）。
【００１５】
このように、全体的な画像処理シーケンスが大きくなると、画像処理パイプラインまたは有向非循環グラフ（ＤＡＧ）の形を取り得、開発環境は、開発されているプログラムコードのそのようなものとしての表現を実際に開発者に提示するよう備えられてもよい。カーネルは、開発者によって個々に開発されてもよく、ならびに／または任意の基礎となる技術を供給するエンティティ（実際の信号プロセッサハードウェアおよび／もしくはその設計など）および／もしくは第三者（例えば、開発環境向けに作成されたカーネルソフトウェアのベンダー）によって提供されてもよい。したがって、名目上の開発環境には、開発者がより大きな開発努力の全体的な流れを達成するために様々な方法で自由に「つなぐ」ことができるカーネルの「ライブラリ」が含まれることが期待される。そのようなライブラリの一部であると予想されるいくつかの基本的なカーネルは、以下の基本的な画像処理タスク：畳み込み、ノイズ除去、色空間変換、エッジおよびコーナー検出、シャープニング、ホワイトバランス、γ補正、トーンマッピング、行列乗算、画像レジストレーション、ピラミッド構築、ウェーブレット変換、ブロック状離散コサイン、およびフーリエ変換のうちの１つ以上を提供するようカーネルを含んでもよい。
【００１６】
図２ｂは、開発者が構想することができるカーネル２０３の構造の例示的な図を示す。図２ｂにおいて見られるように、カーネル２０３は、それぞれの下位プロセッサ２０５上で各々動作しているプログラムコード２０４のいくつかの並列スレッド（「スレッド」）として見ることができ、各プロセッサ２０５は、出力アレイ２０６における特定の位置（カーネルが生成している出力画像内の特定のピクセル位置など）に向けられる。簡略化のために、３つのプロセッサおよび対応するスレッドのみが図２ｂに示されている。様々な実施形態では、図示された各出力アレイ位置は、それ自身の専用プロセッサおよび対応するスレッドを有するであろう。すなわち、別個のプロセッサおよびスレッドを出力アレイの各ピクセルに割り当てることができる。
【００１７】
以下でより詳細に説明するように、様々な実施形態では、実際の基礎となるハードウェアにおいて、実行レーンのアレイおよび対応するスレッドが一致して（例えば、単一命令複数データのような態様において）動作して、現在処理中のフレームの「ライングループ」の一部のために出力画像データを生成する。ライングループは、画像フレームの連続したサイズ決め可能な部分である。様々な実施形態では、開発者は、ハードウェアがライングループに対して動作することを意識し得、または、開発環境は、例えば、出力フレーム内のすべてのピクセル（例えば、それ自身の専用プロセッサおよびスレッドによって生成された出力フレームにおけるすべてのピクセル）に対して別個のプロセッサおよびスレッドが存在する抽象化を提示し得る。いずれにせよ、様々な実施形態において、開発者は、各出力ピクセルについて個々のスレッドを含むようにカーネルを理解する（出力アレイが視覚化されているかどうかは、出力フレーム全体またはその一部である）。
【００１８】
以下でより詳細に説明するように、一実施形態では、仮想環境内で開発者に提示されるプロセッサ２０５は、標準（例えばＲＩＳＣ）オペコードをサポートするだけでなく、開発者が実行されているピクセル毎の処理を容易に視覚化することを可能にするフォーマットされたデータアクセス命令も含む命令セットアーキテクチャ（ＩＳＡ）を有する。従来の数学的およびプログラム制御オペコードのＩＳＡ全体と組み合わせて任意の入力アレイ位置を容易に定義／視覚化する能力は、理想的には、任意のサイズの画像表面上で実行されるべき任意の所望の機能をアプリケーションプログラム開発者が定義することを本質的に可能にする非常に汎用性の高いプログラミング環境を可能にする。例えば理想的には、任意の数学演算を任意のステンシルサイズに適用するように容易にプログラミングすることができる。
【００１９】
データアクセス命令に関して、一実施形態では、仮想プロセッサのＩＳＡ（「仮想ＩＳＡ」）は、特殊なデータロード命令および特殊なデータストア命令を含む。データロード命令は、画像データの入力アレイ内の任意の位置から読み出しできる。データストア命令は、画像データの出力アレイ内の任意の位置に書き込むことができる。後者の命令は、同じプロセッサの複数のインスタンスを異なる出力ピクセル位置に簡単に割り当てることを可能にする（各プロセッサは出力アレイ内の異なるピクセルに書き込む）。したがって、例えば、ステンシルサイズ自体（例えば、ピクセルの幅およびピクセルの高さとして表現される）を、容易にプログラマブルな特徴にすることができる。処理操作の視覚化は、特殊なロードおよびストア命令の各々が特殊な命令フォーマットを有して、更に単純化され、これにより、ターゲットアレイ位置がＸおよびＹ座標として単純に指定される。
【００２０】
いずれにせよ、出力アレイ内の複数の位置各々に対して別個のプロセッサをインスタンス化することにより、プロセッサはそれぞれのスレッドを並列に実行し、例えば出力アレイ内のすべての位置に対するそれぞれの値が同時に生成される。多くの画像処理ルーチンは、典型的には、同じ出力画像の異なるピクセル上で同じ操作を実行することは注目に値する。このように、開発環境の一実施形態では、各プロセッサは同一であると推定され、同じスレッドプログラムコードを実行する。したがって、仮想化された環境は、ロックステップで同一のコードを各々実行する同一のプロセッサなどの二次元アレイからなる一種の二次元（２Ｄ）ＳＩＭＤプロセッサとして見ることができる。
【００２１】
図３は、出力アレイ内の２つの異なるピクセル位置について同一のコードを処理している２つの仮想プロセッサのための処理環境のより詳細な例を示す。図３は、生成されている出力画像に対応する出力アレイ３０４を示す。ここでは、第１の仮想プロセッサがスレッド３０１のコードを処理して出力アレイ３０４の位置Ｘ１に出力値を生成し、第２の仮想プロセッサがスレッド３０２のコードを処理して出力アレイ３０４の位置Ｘ２に出力値を生成している。再び、様々な実施形態において、開発者は、出力アレイ３０４内の各ピクセル位置について別個のプロセッサおよびスレッドが存在することを理解するであろう（単純にするため、図３はそのうちの２つのみを示す）。しかしながら、様々な実施形態で、開発者は、（マシンのＳＩＭＤのような性質のため、）１つのプロセッサおよびスレッドに対してコードを開発するだけでよい。
【００２２】
当技術分野で知られているように、出力ピクセル値は、しばしば、対応する出力ピクセル位置を含みそれを囲む入力アレイのピクセルを処理することによって決定される。例えば、図３からわかるように、出力アレイ３０４の位置Ｘ１は、入力アレイ３０３の位置Ｅに対応する。したがって、出力値Ｘ１を決定するために処理されるであろう入力アレイ３０３のピクセル値のステンシルは、入力値ＡＢＣＤＥＦＧＨＩに対応するであろう。同様に、出力値Ｘ２を決定するために処理される入力アレイピクセルのステンシルは、入力値ＤＥＦＧＨＩＪＫＬに対応するであろう。
【００２３】
図３は、出力値Ｘ１およびＸ２をそれぞれ計算するために使用され得るスレッド３０１，３０２の対に対する対応する仮想環境プログラムコードの例を示す。図３の例では、両方のコード対が同一であり、９つの入力アレイ値のステンシルを平均して、対応する出力値を決定する。２つのスレッドの唯一の違いは、入力アレイから呼び出される変数および書き込まれる出力アレイの位置である。具体的には、出力位置Ｘ１に書き込むスレッドは、ステンシルＡＢＣＤＥＦＧＨＩで動作し、出力位置Ｘ２に書き込むスレッドはステンシルＤＥＦＧＨＩＪＫＬで動作する。
【００２４】
スレッド３０１，３０２の対からのそれぞれのプログラムコードからわかるように、各仮想プロセッサは、少なくとも内部レジスタＲ１およびＲ２を含み、少なくとも以下の命令をサポートする：１）入力アレイからＲ１へのＬＯＡＤ（ロード）命令；２）入力アレイからＲ２へのＬＯＡＤ命令；３）Ｒ１およびＲ２の内容を加算して結果をＲ２に入れるＡＤＤ（加算）命令；４）Ｒ２内の値を即値オペランド９で除算するＤＩＶ（除算）命令；および５）スレッドの専用の出力アレイ位置にＲ２の内容を格納するＳＴＯＲＥ（格納）命令。ここでもまた、図３には２つの出力アレイ位置ならびに２つのスレッドおよび対応するプロセッサしか描かれていないが、おそらく、出力アレイ内のすべての位置にこれらの機能を実行する仮想プロセッサおよび対応するスレッドを割り当てることができる。様々な実施形態では、処理環境のＳＩＭＤのような性質にしたがって、複数のスレッドが互いに独立して実行される。つまり、仮想プロセッサ間にスレッド間通信は存在しない（１つのＳＩＭＤチャネルが別のＳＩＭＤチャネルと交差しないようにしている）。
【００２５】
ｂ．仮想プロセッサメモリモデル
様々な実施形態において、仮想プロセッサの関連する特徴は、それらのメモリモデルである。当該技術分野で理解されるように、プロセッサは、メモリからデータを読み出し、そのデータを操作し、新たなデータをメモリに書き戻す。メモリモデルは、プロセッサが有する、データがメモリ内に編成される方法のパースペクティブまたはビューである。一実施形態では、仮想プロセッサのメモリモデルは、入力アレイ領域および出力アレイ領域の両方を含む。スレッドの入力ピクセル値は入力アレイ領域に格納され、スレッドによって生成された出力ピクセル値は出力アレイ領域に格納される。
【００２６】
一実施形態では、新規なメモリアドレス指定方式を使用して、仮想プロセッサのメモリモデルの入力アレイ部分からどの特定の入力値が呼び込まれるかを規定する。具体的には、従来の線形メモリアドレスではなく、Ｘ、Ｙ座標で所望の入力データを定義する「位置相対的」アドレス指定方式が使用される。このように、仮想プロセッサのＩＳＡのロード命令は、Ｘ成分とＹ成分とで入力アレイ内の特定のメモリ位置を識別する命令フォーマットを含む。このように、二次元座標系を使用して、入力アレイから読み出される入力値に対してメモリをアドレス指定する。
【００２７】
位置相対的メモリアドレス指定アプローチの使用は、仮想プロセッサが動作している画像の領域が、開発者にとってより容易に識別可能であることを可能にする。上記したように、従来の数学的およびプログラム制御オペコードのＩＳＡ全体と組み合わせて任意の入力アレイ位置を容易に定義／視覚化する能力は、理想的には、任意のサイズの画像表面上で実行されるべき任意の所望の機能をアプリケーションプログラム開発者が容易に定義することを本質的に可能にする非常に汎用性の高いプログラミング環境を可能にする。位置相対的アドレス指定方式を採用する命令のための様々な命令フォーマットの実施形態が、サポートされるＩＳＡの他の特徴の実施形態とならんで、以下により詳細に説明される。
【００２８】
出力アレイには、スレッドが生成を担う出力画像データが含まれる。出力画像データは、全体の画像処理シーケンスに従うディスプレイ上に提示される実際の画像データなどの最終画像データであってもよいし、全体の画像処理シーケンスの次のカーネルがその入力画像データ情報として使用する中間画像データであってもよい。ここでも、典型的には、仮想プロセッサは、同じサイクル中に出力画像データの異なるピクセル位置に書き込むので、同じ出力データ項目に対して競合しない。
【００２９】
一実施形態では、位置相対的アドレス指定方式は、出力アレイへの書込にも使用される。そのため、各仮想プロセッサに対するＩＳＡは、その命令フォーマットが、従来のランダムアクセスメモリアドレスではなく、二次元のＸ、Ｙ座標としてメモリ内の目標とされる書込位置を規定するストア命令を含む。
【００３０】
２．０  ハードウェアアーキテクチャの実施形態
ａ．画像プロセッサハードウェアアーキテクチャおよび動作
図４は、ハードウェアで実現される画像プロセッサのためのアーキテクチャ４００の実施形態を示す。画像プロセッサは、例えば、シミュレートされた環境内で仮想プロセッサ用に書かれたプログラムコードを、ハードウェアプロセッサによって実際に実行されるプログラムコードに変換するコンパイラによって対象とされてもよい。図４に示すように、アーキテクチャ４００は、複数のラインバッファユニット４０１＿１〜４０１＿Ｍを含み、それらは、複数のステンシルプロセッサユニット４０２＿１〜４０２＿Ｎおよび対応するシート生成部ユニット４０３＿１〜４０３＿Ｎに、ネットワーク４０４（例えば、ネットワークオンチップ（ＮＯＣ）（オンチップスイッチネットワーク、オンチップリングネットワークまたは他の種類のネットワークを含む））を介して相互接続される。一実施形態では、どのラインバッファユニットが、ネットワーク４０４を介してどのシート生成部および対応するステンシルプロセッサに接続してもよい。
【００３１】
一実施形態では、プログラムコードはコンパイルされ、対応するステンシルプロセッサ４０２にロードされて、ソフトウェア開発者によって以前に定義された画像処理動作を実行する（プログラムコードは、例えば、設計および実装に応じて、ステンシルプロセッサの関連のシート生成部４０３にもロードされてもよい）。少なくともいくつかの例では、画像処理パイプラインを、第１のパイプラインステージ用の第１のカーネルプログラムを第１のステンシルプロセッサ４０２＿１にロードし、第２のパイプラインステージ用の第２のカーネルプログラムを第２のステンシルプロセッサ４０２＿２にロードするなどして、実現することができ、第１のカーネルはパイプラインの第１ステージの機能を実行し、第２のカーネルはパイプラインの第２ステージの機能を実行し、追加の制御フロー方法がインストールされて、出力画像データをパイプラインの１つのステージからの次のステージに渡す。
【００３２】
他の構成では、画像プロセッサは、同じカーネルプログラムコードを動作させる２つ以上のステンシルプロセッサ４０２＿１，４０２＿２を有する並列マシンとして実現することができる。例えば、画像データの高密度かつ高データレートのストリームが、各々が同じ機能を実行する複数のステンシルプロセッサにわたってフレームを広げることによって処理されてもよい。
【００３３】
さらに他の構成では、カーネルの本質的に任意のＤＡＧのハードウェアプロセッサへのロードを、それぞれのステンシルプロセッサをそれら自身のプログラムコードのカーネルとともに構成し、適切な制御フローフックをハードウェアに構成して、出力画像をＤＡＧ設計における１つのカーネルから次のカーネルの入力に向けることによって、行なってもよい。
【００３４】
一般的なフローとして、画像データのフレームは、マクロＩ／Ｏユニット４０５で受信され、フレーム単位でラインバッファユニット４０１の１つ以上に渡される。特定のラインバッファユニットは、それの画像データのフレームを、「ライングループ」と呼ばれる画像データのより小さな領域に解析し、次いでライングループをネットワーク４０４を介して特定のシート生成部に渡す。ある完全な（ｆｕｌｌ）単数のライングループを、例えば、フレームの複数の連続した完全な行または列のデータで構成することができる（簡単にするために、本明細書では主に連続した行と称する）。シート生成部は、画像データのライングループを「シート」と呼ばれる画像データのより小さな領域にさらに解析し、そのシートを対応するステンシルプロセッサに提示する。
【００３５】
単一入力の画像処理パイプラインやＤＡＧフローの場合、一般に、入力フレームは、同じラインバッファユニット４０１＿１に向けられ、それは、画像データをライングループに解析し、ライングループを対応するシート生成部４０３＿１（対応するステンシルプロセッサ４０２＿１はパイプライン／ＤＡＧにおいて第１のカーネルのコードを実行している）に向ける。ステンシルプロセッサ４０２＿１による、それが処理するライングループでの動作が終了した後、シート生成部４０３＿１は、出力ライングループを「下流」のラインバッファユニット４０１＿２に送信する（ある使用例では、出力ライングループは、先に入力ライングループを送信したのと同じラインバッファ装置４０１＿１に送り返すことができる）。
【００３６】
自身のそれぞれの他のシート生成部およびステンシルプロセッサ（例えば、シート生成部４０３＿２およびステンシルプロセッサ４０２＿２）上で実行されるパイプライン／ＤＡＧにおける次のステージ／動作を表す１つ以上の「消費側」カーネルは、下流ラインバッファユニット４０１＿２から、第１のステンシルプロセッサ４０２＿１によって生成された画像データを受信する。このようにして、第１のステンシルプロセッサ上で動作する「作成側」カーネルは、その出力データが、第２のステンシルプロセッサ上で動作する「消費側」カーネルに転送され、消費側カーネルは、パイプラインまたはＤＡＧ全体の設計と整合する作成側カーネルの後に次のタスクのセットを実行する。
【００３７】
ステンシルプロセッサ４０２は、画像データの複数の重なり合うステンシル上で同時に動作するように設計されている。複数の重なり合うステンシルおよびステンシルプロセッサの内部ハードウェア処理能力は、シートのサイズを効果的に決定する。ここでは、ステンシルプロセッサ４０２内で、実行レーンのアレイが一致して動作して、複数の重なり合うステンシルによってカバーされる画像データ表面領域を同時に処理する。
【００３８】
以下でより詳細に説明するように、様々な実施形態において、画像データのシートは、ステンシルプロセッサ４０２内において二次元レジスタアレイ構造にロードされる。シートおよび二次元レジスタアレイ構造の使用は、大量のデータを、大量のレジスタ空間に、例えば、処理タスクが実行レーンアレイによってその直後に直接データ上で実行される単一のロード動作として移動することによって、電力消費の改善を効果的に提供すると考えられている。さらに、実行レーンアレイおよび対応するレジスタアレイの使用は、容易にプログラマブル／設定可能な異なるステンシルサイズを提供する。
【００３９】
図５ａ〜図５ｅは、ラインバッファユニット４０１の解析アクティビティ、およびシート生成部ユニット４０３のより微細な粒子の解析アクティビティ、ならびにシート生成部４０３に結合されるステンシルプロセッサ４０２のステンシル処理アクティビティの両方のハイレベルの実施形態を示す。
【００４０】
図５ａは、画像データ５０１の入力フレームの一実施形態を示す。図５ａはまた、ステンシルプロセッサが動作するように設計された３つの重なり合うステンシル５０２（各々３ピクセル×３ピクセルの寸法を有する）の概要を示す。各ステンシルがそれぞれ出力画像データを生成する出力ピクセルは、ベタ黒で強調表示される。簡略化のために、３つの重なり合うステンシル５０２は、垂直方向にのみ重なるように示されている。実際には、ステンシルプロセッサは、垂直方向および水平方向の両方に重なるステンシルを有するように設計されてもよいことを認識することが適切である。
【００４１】
図５ａに見られるように、ステンシルプロセッサ内の垂直に重なり合うステンシル５０２のために、フレーム内に単一のステンシルプロセッサが動作することができる画像データの広い帯域が存在する。以下でより詳細に説明するように、一実施形態では、ステンシルプロセッサは、データを、それらの重なり合うステンシル内で、左から右への態様で、画像データにわたって処理する（そして、次のラインのセットに対して、上から下の順序で繰り返す）。このように、ステンシルプロセッサがそれらの動作を前方に進めるにつれて、ベタ黒出力ピクセルブロックの数は、水平方向に右に成長する。上述したように、ラインバッファユニット４０１は、ステンシルプロセッサが今後の拡張された数のサイクルにわたって動作するのに十分な入来フレームからの入力画像データのライングループを解析することを担う。ライングループの例示的な図示は、陰影領域５０３として示されている。一実施形態では、以下でさらに説明するように、ラインバッファユニット４０１は、ライングループをシート生成部との間で送受信するための異なるダイナミクスを理解することができる。例えば、「完全なグループ」と呼ばれる１つのモードによれば、画像データの完全な全幅のラインが、ラインバッファユニットとシート生成部との間で渡される。「仮想的に高い」と呼ばれる第２のモードによれば、ライングループは最初に全幅行のサブセットと共に渡される。その後、残りの行は、より小さい（全幅未満の）片で順番に渡される。
【００４２】
入力画像データのライングループ５０３がラインバッファユニットによって画定され、シート生成部ユニットに渡されると、シート生成部ユニットはさらに、ライングループを、ステンシルプロセッサのハードウェア制限に、より正確に適合する、より微細なシートに、解析する。より具体的には、以下でさらに詳細に説明するように、一実施形態では、各ステンシルプロセッサは、二次元シフトレジスタアレイからなる。二次元シフトレジスタアレイは、本質的に、画像データを実行レーンのアレイの「真下」にシフトし、シフトのパターンは、各実行レーンをそれ自身のステンシル内においてデータに対して動作させる（すなわち、各実行レーンは、それ自身の情報のステンシル上で処理して、そのステンシルの出力を生成する）。一実施形態では、シートは、二次元シフトレジスタアレイを「満たす」か、さもなければ二次元シフトレジスタアレイにロードされる入力画像データの表面領域である。
【００４３】
したがって、図５ｂに見られるように、シート生成部は、ライングループ５０３から最初のシート５０４を解析し、それをステンシルプロセッサに供給する（ここで、データのシートは、参照番号５０４によって全体的に識別される陰影領域に対応する）。図５ｃおよび図５ｄに示すように、ステンシルプロセッサは、重なるステンシル５０２をシート上で左から右へ効果的に移動させることによって、入力画像データのシートに対して動作する。図５ｄのように、シート内のデータから出力値を計算することができるピクセル数が使い果たされる（他のピクセル位置は、シート内の情報から決定される出力値を有することができない）。簡単にするために、画像の境界領域は無視されている。
【００４４】
図５ｅにおいて見られるように、シート生成部は次いで、ステンシルプロセッサが動作を継続する次のシート５０５を提供する。ステンシルが次のシートに対して動作を開始するときのステンシルの初期位置は、（先に図５ｄに示されている）最初のシート上の消耗点から右への次の進行であることに留意されたい。新たなシート５０５で、ステンシルプロセッサが最初のシートの処理と同じ態様で新たなシートに対して動作するにつれ、ステンシルは単に右に移動し続ける。
【００４５】
出力ピクセル位置を取り囲むステンシルの境界領域のために、第１のシート５０４のデータと第２のシート５０５のデータとの間にいくらかの重なりがあることに留意されたい。重なりは、シート生成部が重なり合うデータを２回再送信することによって簡単に処理することができる。別の実現例では、次のシートをステンシルプロセッサに供給するために、シート生成部は、ステンシルプロセッサに新たなデータを送るだけに進んでもよく、ステンシルプロセッサは、前のシートからの重なり合うデータを再利用する。
【００４６】
ｂ．ステンシルプロセッサ設計および動作
図６は、ステンシルプロセッサ６００の実施形態を示す。図６において見られるように、ステンシルプロセッサは、データ計算ユニット６０１、スカラープロセッサ６０２および関連するメモリ６０３およびＩ／Ｏユニット６０４を含む。データ計算ユニット６０１は、実行レーンのアレイ６０５、二次元シフトアレイ構造６０６、およびアレイの特定の行または列に関連する別個のランダムアクセスメモリ６０７を含む。
【００４７】
Ｉ／Ｏユニット６０４は、シート生成部から受け取ったデータの「入力」シートをデータ計算ユニット６０１にロードし、ステンシルプロセッサからのデータの「出力」シートをシート生成部に格納する役割を果たす。一実施形態では、データ計算ユニット６０１へのシートデータのロードは、受け取ったシートを画像データの行／列に解析し、画像データの行／列を二次元シフトレジスタ構造６０６または実行レーンアレイの行／列のそれぞれのランダムアクセスメモリ６０７にロードすることを必要とする（以下でより詳細に説明する）。シートが最初にメモリ６０７にロードされる場合、実行レーンアレイ６０５内の個々の実行レーンは、適宜、ランダムアクセスメモリ６０７からシートデータを二次元シフトレジスタ構造６０６にロードすることができる（例えば、シートのデータ上での動作のすぐ前のロード命令として）。データのシートのレジスタ構造６０６へのロード（シート生成部からの直接的であろうとまたはメモリ６０７からであろうと）が完了すると、実行レーンアレイ６０５の実行レーンはデータに対して動作し、最終的に、完成したデータをシートとしてシート生成部に、またはランダムアクセスメモリ６０７に「書き戻す」。後者の場合、Ｉ／Ｏユニット６０４はランダムアクセスメモリ６０７からデータをフェッチして出力シートを形成し、出力シートはシート生成部に転送される。
【００４８】
スカラープロセッサ６０２は、スカラーメモリ６０３からステンシルプロセッサのプログラムコードの命令を読み出し、実行レーンアレイ６０５の実行レーンに命令を発行するプログラムコントローラ６０９を含む。一実施形態では、データ計算ユニット６０１からＳＩＭＤのような動作を実行するために、単一の同じ命令がアレイ６０５内のすべての実行レーンにブロードキャストされる。一実施形態では、スカラーメモリ６０３から読み出され、実行レーンアレイ６０５の実行レーンに発行される命令の命令フォーマットは、命令当たり２つ以上のオペコードを含む非常に長い命令語（ＶＬＩＷ）タイプのフォーマットを含む。さらなる実施形態では、ＶＬＩＷフォーマットは、（以下に説明するように、一実施形態では２つ以上の従来のＡＬＵ動作を指定することができる）各実行レーンのＡＬＵによって実行される数学的機能を指示するＡＬＵオペコードと、（特定の実行レーンまたは実行レーンのセットに対してメモリ操作を指示する）メモリオペコードとの両方を含む。
【００４９】
「実行レーン」という用語は、命令を実行することができる１つ以上の実行ユニットのセット（例えば、命令を実行することができる論理回路系）を指す。実行レーンは、しかしながら、様々な実施形態では、単なる実行ユニットを超えた、よりプロセッサに似た機能を含むことができる。例えば、１つ以上の実行ユニットに加えて、実行レーンは、受信された命令をデコードする論理回路系、または、よりＭＩＭＤのような設計の場合、命令をフェッチおよびデコードする論理回路系を含むことができる。ＭＩＭＤのようなアプローチに関しては、ここでは集中プログラム制御アプローチが主に記載されているが、より分散型のアプローチが様々な代替実施形態（例えば、アレイ６０５の各実行レーン内のプログラムコードおよびプログラムコントローラを含む）において実施されてもよい。
【００５０】
実行レーンアレイ６０５、プログラムコントローラ６０９および二次元シフトレジスタ構造６０６の組み合わせは、広範囲のプログラマブルな機能のための幅広く適応可能／設定可能なハードウェアプラットフォームを提供する。例えば、アプリケーションソフトウェア開発者は、個々の実行レーンが多種多様な機能を実行することができ、任意の出力アレイ位置に近接した入力画像データに容易にアクセスすることができれば、寸法（例えばステンシルサイズ）だけでなく幅広い異なる機能能力を有するカーネルをプログラミングすることができる。
【００５１】
実行レーンアレイ６０５によって操作される画像データのためのデータ記憶装置として機能することとは別に、ランダムアクセスメモリ６０７は、１つ以上のルックアップテーブルを保持することもできる。様々な実施形態では、１つ以上のスカラールックアップテーブルをスカラーメモリ６０３内でインスタンス化することもできる。
【００５２】
スカラールックアップは、同じルックアップテーブルからの同じインデックスからの同じデータ値を実行レーンアレイ６０５内の各実行レーンに渡すことを含む。様々な実施形態では、上述のＶＬＩＷ命令フォーマットは、スカラープロセッサによって実行されるルックアップ動作をスカラールックアップテーブルに向けるスカラーオペコードを含むようにも拡張される。オペコードとともに使用するために指定されたインデックスは、即値オペランドでもよいし、他のデータ記憶位置からフェッチされてもよい。いずれにせよ、一実施形態では、スカラーメモリ内のスカラールックアップテーブルからのルックアップは、基本的に同じクロックサイクル中に実行レーンアレイ６０５内のすべての実行レーンに同じデータ値をブロードキャストすることを含む。
【００５３】
３．０  ラインバッファユニットの実施形態
ａ．ラインバッファユニット概観
上記におけるセクション１．０での議論から、様々な実施形態において、ハードウェアプラットフォーム用に書かれたプログラムコードは、その命令フォーマットが入力および出力アレイ位置、例えば、Ｘ、Ｙ座標を特定するロードおよびストア命令を有する命令セットを含む一意的な仮想コードで書かれる。様々な実施態様において、Ｘ、Ｙ座標情報は実際にはハードウェアプラットフォームにプログラミングされ、そのコンポーネントの様々なものによって認識／理解される。これは、例えば、Ｘ、Ｙ座標を（例えばコンパイラ内で）異なる情報に変換することとは別である。例えば、ステンシルプロセッサ内の二次元シフトレジスタ構造の場合、Ｘ、Ｙ座標情報はレジスタシフト移動に変換される。対照的に、ハードウェアプラットフォームの他の部分は、元はより高い仮想コードレベルで表現されるＸ、Ｙ座標情報を具体的に受け取り、理解してもよい。
【００５４】
図７で見られるように、セクション１．０で説明したように、プログラムコード開発者は、データ位置を、Ｘ、Ｙ座標として、特殊な命令フォーマットが仮想コードレベルにある状態で、表現する（７１０）。コンパイル段階の間に、仮想コードは、ハードウェアによって実際に処理されるプログラムコード（オブジェクトコード）と、ハードウェアの構成（例えばレジスタ）空間にロードされる対応する構成情報とに変換される。図７に示すように、一実施形態では、特定のカーネルのためのオブジェクトコードが、ステンシルプロセッサのスカラープロセッサ７０５のプログラム空間にロードされる。
【００５５】
構成プロセスの一部として、スカラープロセッサ７０５上で実行される構成ソフトウェアは、適切な構成情報７１１，７１２を、ステンシルプロセッサ７０２に結合されるシート生成部ユニット７０３と、ステンシルプロセッサ７０２のために新たなシートを生成して、ステンシルプロセッサ７０２によって生成された処理済みシートに対して動作するかまたはそれを受取るラインバッファユニット７０１との両方にロードする。ここで、一般的に、シートを依然として全体画像のＸ、Ｙ座標に関して企図することができる。すなわち、一旦画像またはフレームが（例えば、行当たりのピクセル数、行数、列当たりのピクセル数および列数に関して）規定されても、画像のどの部分または位置も、依然としてＸ、Ｙ座標で言及され得る。
【００５６】
このように、様々な実施形態では、シート生成部ユニット７０３およびラインバッファユニット７０１のいずれかまたは両方は、情報７１１，７１２が、画像またはフレームの特定の位置および／または領域（例えば、ライングループ、シート）がＸ、Ｙ座標で識別される情報プラットフォームを確立するそれらのそれぞれの構成空間７０６，７０７内にある状態で、構成されている。様々な実現例／用途において、Ｘ、Ｙ座標は、仮想コードレベルで表現される同じＸ、Ｙ座標であってもよい。
【００５７】
このような情報の例は、例えば、ラインバッファユニット内のアクティブなライングループの数、各ライングループについての画像サイズ（例えば、４つのＸ、Ｙ座標のセット（各角に１つ）またはＸ、Ｙ座標の対（１つは下側のより近くの角に、もう１つは上側のより遠い角に））絶対画像幅および画像高さ、ステンシルサイズ（単一のステンシルのサイズおよび／またはステンシルプロセッサの重なり合うステンシルの領域を定義するＸ、Ｙ値として表される）、シートおよび／またはライングループサイズ（例えば、画像サイズと同じ点で指定されるが、より小さい寸法を有する）などを含む。さらに、ラインバッファユニット７０１は、少なくともラインバッファユニット７０１によって管理されるライングループを書き込む作成側カーネルの数および読み取る消費側カーネルの数などの追加の構成情報でプログラミングされてもよい。画像データに関連するチャネルの数および／または寸法も、典型的には、構成情報として含まれる。
【００５８】
図８は、画像内でライングループを一例として定義するＸ、Ｙ座標の使用を示す。ここで、Ｎ個のライングループ８０１＿１，８０１＿２，…８０１＿Ｎが画像８０１内で見ることができる。図８から分かるように、各ライングループは、例えばライングループの角の点の１つ以上を規定する画像内のＸ、Ｙ座標を参照することによって容易に規定することができる。したがって、様々な実施形態では、特定のライングループを規定するために使用されるライングループの名称または他のデータ構造は、そのライングループを特に識別するためにそれに関連付けられたＸ、Ｙ座標位置を含むことができる。
【００５９】
図７を簡単に参照すると、図７は、ランタイム中、シート生成部７０３は、例えば、所望のデータ領域を規定するＸ、Ｙ座標情報を含むことによって、ラインバッファユニット７０１から「次の」ライングループ（またはライングループの一部）を要求することができることを示す。図８は、画像データの完全な行のみからなる名目上「全幅」のライングループを示す。以下でさらに詳細に説明する「仮想的に高い」と呼ばれる代替構成では、ラインバッファユニット７０１は、最初に画像データの全幅の行としてライングループの第１の上側部分のみを通過させる。ライングループの後続の下側の行が、次いで、全幅の行よりも小さい連続した塊でシート生成部によって具体的に要求され、別個に要求される。したがって、完全なライングループを得るために、シート生成部によって複数の要求が行われる。ここで、各そのような要求は、次の下側部分に起因するＸ、Ｙ座標によって次の下側部分を規定してもよい。
【００６０】
図９ａ〜図９ｃは、ラインバッファユニットの実施形態９００の様々な特徴を示す。図９ａに示すように、ラインバッファユニットは、ライングループ９０３＿１〜９０３＿Ｎが格納されるメモリ９０２（例えば、スタティックまたはダイナミックランダムアクセスメモリ（ＳＲＡＭまたはＤＲＡＭ））を含む。図９ａは、メモリ９０２内において特定の画像／フレームについてライングループ９０３＿１〜９０３＿Ｎを作成および消費する様々なカーネル間のアクティビティを示す。
【００６１】
図９ａで見られるように、作成側カーネルＫ１は、別々の時間インスタンスＰ１、Ｐ２〜ＰＮにわたって、新たなライングループをメモリ９０２に送信する。作成側カーネルＫ１は、新たなデータシートを生成するステンシルプロセッサ上で実行される。ステンシルプロセッサに結合されるシート生成部はシートを集積してライングループを形成し、ライングループをメモリ９０２に転送する。
【００６２】
また、図９ａに示すように、作成側カーネルＫ１によって生成されたライングループ９０３＿１〜９０３＿Ｎに対して動作する２つの消費側カーネルＫ２、Ｋ３が存在する。ここで、消費側カーネルＫ２およびＫ３は、それぞれ時間Ｃ２１およびＣ３１で第１のライングループ９０３＿１を受け取る。明らかに、時間Ｃ２１およびＣ３１は時間Ｐ１の後に生じる。他の制約は存在しなくてもよい。例えば、時間Ｃ２１および／または時間Ｃ３１は、時間Ｐ２からＰＮのいずれかの前または後に生じてもよい。ここで、カーネルＫ２およびＫ３のためのそれぞれのシート生成部は、それらのそれぞれのカーネルに適した時間に次のライングループを要求する。カーネルＫ２、Ｋ３のいずれかが時間Ｐ１の前にライングループ９０３＿１を要求すると、ライングループ９０３＿１が実際にメモリ９０２に書き込まれるまで、要求はアイドル状態にされる。多くの実現例では、作成側カーネルは、消費側カーネルとは異なるステンシルプロセッサ上で動作する。
【００６３】
おそらく、全てのライングループ９０３＿１〜９０３＿Ｎに対するカーネルＫ２およびＫ３の一方または両方からの要求は、時間Ｐ１の前に到着し得る。したがって、ライングループは、いつでも消費側カーネルによって要求され得る。しかしながら、消費側カーネルがライングループを要求すると、ライングループは、作成側カーネルＫ１がそれらを生成することができるレートを条件として、消費側カーネルに転送される。様々な実施形態では、消費側カーネルは順番にライングループを要求し、同様にそれらを順番に受け取る（カーネルＫ２は、ライングループ９０２＿２〜９０２＿Ｎを時間Ｃ２２〜Ｃ２Ｎでシーケンスで受け取る）。簡略化のために、特定のライングループに対して１つの作成側カーネルしか示されていない。異なる作成側が同じライングループに書き込むことができるように様々な実施形態を設計することが考えられる（例えば、すべての作成側がライングループに書き込んでしまうまで消費側にサービスを提供することが許可されていない場合など）。
【００６４】
（消費側カーネルがプロセッサのＤＡＧ処理フローにおける最初のカーネルであるため）作成側カーネルが存在しない場合、画像データのフレームは、メモリ９０２に（例えば、ダイレクトメモリアクセス（ＤＭＡ）を介して、またはカメラから）転送され、ライングループに解析されてもよい。（作成側カーネルがプロセッサの全体的なプログラムフローの最後のカーネルであるため）消費側カーネルが存在しない場合、結果のライングループを組み合わせて出力フレームを形成してもよい。
【００６５】
図９ｂは、ラインバッファユニット９００全体のより詳細な実施形態を示す。議論のため、図９ａのアクティビティは、図９ｂのラインバッファユニット９００に重ね合わされる。図９ｂに見られるように、ラインバッファユニット９００は、ラインバッファユニット回路系９０１に結合されるメモリ９０２を含む。ラインバッファユニット回路系９０１は、例えば、専用の論理回路系で構成することができる。ラインバッファユニット回路系９０１内では、メモリ９０２内のライングループ９０３＿１〜９０３＿Ｎ毎にラインバッファインタフェースユニット９０４＿１〜９０４＿Ｎが確保されている。様々な実施形態では、ラインバッファユニットが任意の時点で管理できるライングループの数の上限を設定する固定数のラインバッファインタフェースユニット９０４＿１〜９０４＿Ｎが存在する（Ｎ個より少ないライングループがアクティブである場合、対応するより少ない数のラインバッファユニットインタフェースが起動され、いつでも使用される）。
【００６６】
図９ｂに示すように、総数Ｎ個のラインバッファインタフェースユニット９０４がラインバッファユニット回路系９０１内にある状態で、ラインバッファユニット９００は最大数のライングループを処理している。さらに、（ライングループサイズが設定可能なパラメータである）最大許容ライングループサイズで、メモリ９０２についてのおおよそのサイズを決定することができる（もちろん、ハードウェアの効率を考慮するために、より小さいメモリフットプリントを、Ｎ個の最大サイズのライングループを同時に許可しないことを犠牲にしてインスタンス化してもよい）。
【００６７】
各ラインバッファインタフェースユニット９０４＿１〜９０４＿Ｎは、それが処理するように割り当てられた特定のライングループに対する作成側および消費側の要求を処理する役割を担う。例えば、ラインバッファインタフェースユニット９０４＿１は、時間Ｐ１における作成側Ｋ１からのライングループ９０３＿１を格納するようにとの要求を処理するとともに、ライングループ９０３＿１に対する消費側カーネルＫ２およびＫ３からの要求を処理する。前者に応答して、ラインバッファインタフェースユニット９０４＿１はライングループ９０３＿１をメモリ９０２に書き込む。後者に応答して、ラインバッファインタフェースユニット９０４＿１は、メモリ９０２からのライングループ９０３＿１のそれぞれの読出を実行し、ライングループ９０３＿１を消費側Ｋ２およびＫ３に時刻Ｃ２１およびＣ３１でそれぞれ転送する。
【００６８】
ライングループのすべての消費側がそれらのライングループのコピーを転送された後、ラインバッファインタフェースユニットは別のライングループに割り当てられるよう「フリー」になる。例えば、ライングループ９０３＿１がフレームのシーケンスの第１の画像フレーム内で第１のライングループを表す場合、ライングループ９０３＿１が時間Ｃ２１およびＣ３１で消費側Ｋ２およびＫ３に転送された後、ラインバッファインタフェースユニット９０４＿１が、次に、フレームのシーケンスの、次の第２の画像フレーム内で第１のライングループを処理するように割り当てられてもよい。このようにして、ラインバッファユニット回路系９０１はラインバッファインタフェースユニット９０４の「プール」を有すると見ることができ、直前のライングループが最後の消費側に供給された後に管理すべき新たなライングループが各インタフェースユニットに割り当てられる。したがって、最後の消費側にサービスを提供し、そして次のライングループを待つラインバッファインタフェースユニットの「フリープール」にインタフェースユニット繰り返し入り、およびそれから取除かれるときに、インタフェースユニットのローテーションがある。
【００６９】
図９ｃは、ローテーションの実施形態をより詳細に示す。図９ｃに示すように、利用可能なラインバッファインタフェースユニットは、ラインバッファユニット回路系内においてラインバッファインタフェースユニットのフリープールから選択される（９１０）。次いで、ラインバッファインタフェースユニットは、次いで、適切な構成情報（例えば、新たなライングループのＸ、Ｙ位置情報または線形メモリアドレス等価物）を用いて構成される（９１１）。ここで、図９ｂにおいて、各ラインバッファインタフェースユニットは、そのような構成情報が保持される構成レジスタ空間９０５を含むことができることに留意されたい。
【００７０】
次いで、ラインバッファインタフェースユニットは、その新たに割り当てられたライングループについて作成側および消費側の要求を処理することに進む（９１２）。最後の作成側がライングループに書き込んだ後（様々な実施形態では、ライングループごとにただ１つの作成側が存在する）、最後の消費側にその作成側によって書き込まれたライングループのバージョンが提供された後、ラインバッファインタフェースユニットはフリープールに戻され、プロセスは次のライングループのために９１０を繰り返す。図９ｃの制御フローを監督するラインバッファユニット回路９０１内の制御論理回路系は、例示の便宜のために図９ｂには示されていない。
【００７１】
ｂ．プログラマブルなレジスタ空間の実施形態
次のライングループの割り当ての一部としてラインバッファインタフェースユニットに提供される更新された構成情報９１１に関して、公称の場合、ラインバッファユニット９００それ自体は、例えば、１つ以上の消費側からなる固定されたセットに供給しているわずか１つの固定された作成側の静的な構成を処理している。この場合、主要な構成情報（例えば、ライングループサイズ、消費側の数など）も静的でありがちであり、ライングループからライングループに変化しない。むしろ、ラインバッファインタフェースユニットに提供される新たな構成情報は、主に新たなライングループ（例えば、メモリ内のライングループの位置など）を識別する。しかしながら、より複雑な潜在的な構成／設計も可能である。これらのうちのいくつかは、この後より詳細に説明される。
【００７２】
図９ｄは、ラインバッファインタフェースユニットのレジスタ空間の内容（例えば、図９ｂのレジスタ空間９０５＿１の内容）の実施形態を示す。いくつかのレジスタフィールドの説明がすぐ後に続く。
【００７３】
ＬＢ＿Ｅｎａｂｌｅフィールド９２１は、本質的にラインバッファインタフェースユニットをイネーブルにし、ラインバッファインタフェースユニットをフリープールから取得するプロセスの一部として「設定」される。Ｎｕｍ＿Ｃｈａｎｎｅｌｓフィールド９２２は、ライングループの画像データ内のチャネル数を定義する。一実施形態では、Ｎｕｍ＿Ｃｈａｎｎｅｌｓフィールド９２２を使用して、ライングループごとのデータの総量を決定することができる。例えば、ビデオストリームは、しばしば、赤（Ｒ）ピクセルのフレームシーケンス、青（Ｂ）ピクセルのフレームシーケンス、および緑（Ｇ）ピクセルのフレームシーケンスを含む。したがって、どのライングループでも、実際には３つのライングループ分の情報（Ｒ、Ｇ、Ｂ）がある。
【００７４】
Ｎｕｍ＿Ｃｏｎｓｕｍｅｒｓフィールド９２３は、ライングループを要求する消費側の数を記述する。一実施形態では、ライングループインスタンスが、Ｎｕｍ＿Ｃｏｎｓｕｍｅｒｓフィールド９２３の値に等しい回数だけ送られた後、ラインバッファインタフェースユニットはフリープールに入れられる。
【００７５】
Ｒｏｗ＿Ｗｉｄｔｈフィールド９２４は、ある完全なライングループの幅を（例えばピクセル数で）定義する。Ｒｏｗ＿Ｗｉｄｔｈ９２４の値は、コンパイラによって提供されるＸ座標値として表すことができることに留意されたい。ＦＢ＿Ｒｏｗｓフィールド９２６は、ある完全なライングループの高さを（例えばピクセル数で）定義する。ＦＢ＿Ｒｏｗｓフィールド９２４は、コンパイラによって提供されるＹ座標値として表すことができることに留意されたい。
【００７６】
ＦＢ＿Ｂａｓｅ＿Ａｄｄｒｅｓｓフィールド９３０は、ラインバッファユニットメモリにおいてライングループの位置を定義する。「完全」ライングループモードと呼ばれる第１の動作モードでは、ある完全なサイズのライングループがメモリ内でアクセスされる（ライングループは作成側から受け取られ、消費側にそれらのそれぞれのデータの全量を含むとして送られる）。完全ライングループモードでは、Ｎｕｍ＿Ｃｈａｎｎｅｌｓフィールド９２２、Ｒｏｗ＿Ｗｉｄｔｈフィールド９２４およびＦＢ＿Ｒｏｗｓフィールド９２６をＦＢ＿Ａｄｄｒｅｓｓフィールド９３０とともに使用して、ある完全なライングループに完全にアクセスするためにメモリに適用されるアドレスの範囲を決定することができる。さらに、これらの同じパラメータを使用して、Ｘ、Ｙ座標でライングループを要求したシート生成部からの要求を線形メモリアドレスに「変換」することができる。
【００７７】
ＶＢ＿Ｅｎａｂｌｅ、ＶＢ＿Ｒｏｗｓ、ＶＢ＿Ｃｏｌｓ、Ｎｕｍ＿Ｒｅｕｓｅ＿ＲｏｗｓおよびＶＢ＿Ｂａｓｅ＿Ａｄｄｒｅｓｓフィールド９２５，９２７，９２８，９３１は、「仮想的に高い」ライングループモードと呼ばれる別の動作モードで使用され、これについては後で詳しく説明する。
【００７８】
図９ｄは単一のラインバッファインタフェースユニットに対する構成レジスタ空間９０５を表示したが、図９ｅは全体としてラインバッファユニット回路系９０１のためのグローバル構成レジスタ空間９０７の内容の実施形態を示す。図９ｄのラインバッファインタフェースユニットレジスタ空間は、特定のライングループに焦点を当てているのに対して、図９ｅのグローバルレジスタ空間９０７は、同じ画像からの異なるライングループの解析、および画像の処理に関連する作成側／消費側の組み合わせに固有の他の情報の理解に焦点を当てている。
【００７９】
図９ｅにおいて見られるように、グローバルレジスタ空間の実施形態は、特定の画像に対するチャネルの数９３２および消費側の数９３３を含む。簡単にするために、図９ｅのレジスタ空間は、１組の作成側および消費側（例えば、ＤＡＧにおける単一のビデオストリームおよび単一の点のみ）を伴う１つの画像のみを考えている。おそらく、図９ｅのレジスタ空間の複数のインスタンスを割り当てて、ラインバッファユニット回路系が効果的にマルチタスクを行えるようにすることが考えられる。
【００８０】
マルチタスク化の第１の形態は、画像プロセッサに実装されるＤＡＧまたはソフトウェアパイプライン内にある。ここでは、同じラインバッファユニットを、ＤＡＧ内の２つの異なるノードについての、またはパイプラインの２つの異なるステージについてのライングループ化を処理するように構成することができる（すなわち、１つのラインバッファユニットが複数のステンシルプロセッサをサポートすることができる）。異なるノード／ステージは、異なる数の消費側を容易に有し得るが、多くの場合、同じ画像およびステンシルサイズ特性を有する可能性が高い。マルチタスク化の第２の形態は、同一の画像プロセッサハードウェア上に実装される複数の異なるＤＡＧおよび／または複数の異なるパイプラインにわたる。例えば、４つのステンシルプロセッサを有する画像プロセッサは、完全に異なるステンシル寸法を伴う完全に異なる画像サイズをそれぞれ処理する２つの完全に異なる２ステージパイプラインを同時に実行し得る。
【００８１】
図９ｅの特定の実施形態に戻ると、ＤＡＧ内またはパイプラインステージ間の任意の特定のノードは、画像内のチャネル数、画像サイズ、適用可能なステンシルの寸法およびライングループの消費側の数によって、ハイレベルに特徴付けることができることに留意されたい（図９ｅは再びライングループ当たり１つの作成側を仮定するが、おそらくは２つ以上の作成側が１つのライングループに書き込むことができ、その場合には図９ｅのグローバルレジスタ空間は作成側の数に対するフィールドも含むであろう）。Ｎｕｍ＿ＣｈａｎｎｅｌｓおよびＮｕｍ＿Ｃｏｎｓｕｍｅｒｓフィールド９３２，９３３は、図９ｃの対応するフィールド９２２，９２３と本質的に同じである。
【００８２】
Ｉｍａｇｅ＿ＳｉｚｅおよびＳｔｅｎｃｉｌ＿Ｄｉｍｅｎｓｉｏｎフィールド９３４，９３５は、本質的に、処理される画像の寸法と、画像からそれぞれ分割されるべきライングループに対して動作するステンシルの寸法を記述する。両方のフィールド９３４，９３５は、Ｘ、Ｙ座標値によって表現することができ、コンパイラから提供することができることに留意されたい。さらに、一実施形態では、ラインバッファ回路系ユニット（図９ｂには図示せず）内の制御論理回路は、Ｉｍａｇｅ＿ＳｉｚｅおよびＳｔｅｎｃｉｌ＿Ｄｉｍｅｎｓｉｏｎフィールド９３４，９３５を使用して、ラインバッファインタフェースユニットが、グローバル情報が関係する作成側／消費側の組からのライングループを処理するように割り当てられているときに、バッファインタフェースユニットのレジスタ空間にロードされるラインにロードされるＲｏｗ＿Ｗｉｄｔｈ９２４、ＦＢ＿Ｒｏｗｓ９２６およびＦＢ＿Ｂａｓｅ＿Ａｄｄｒｅｓｓ値９３０を決定する。代替的またはさらなる実施形態では、画像サイズは２つの別個の値、ｉｍａｇｅ＿ｗｉｄｔｈおよびｉｍａｇｅ＿ｈｅｉｇｈｔとして表され、それらはそれらの別個にアドレス指定可能なレジスタ空間を有してもよい。同様に、ステンシルサイズは、２つの別個の値、ｓｔｅｎｃｉｌ＿ｗｉｄｔｈおよびｓｔｅｎｃｉｌ＿ｈｅｉｇｈｔとして表現されてもよく、それらはそれらの別個にアドレス指定可能なレジスタ空間を有してもよい。
【００８３】
Ｒｏｗ＿Ｗｉｄｔｈ９２４は、Ｉｍａｇｅ＿Ｓｉｚｅ９３４情報から直接取得可能である。例えば、Ｉｍａｇｅ＿Ｓｉｚｅが画像原点から最も遠いピクセル（原点が左下隅にある場合は右上角）のＸ、Ｙ座標の対として表される場合、Ｒｏｗ＿ＷｉｄｔｈはＸ座標値として決定できる。
【００８４】
ＦＢ＿ＲｏｗｓおよびＦＢ＿Ｂａｓｅ＿Ａｄｄｒｅｓｓフィールド９２６，９３０は、Ｉｍａｇｅ＿ＳｉｚｅおよびＳｔｅｎｃｉｌ＿Ｄｉｍｅｎｓｉｏｎフィールド９３４，９３５から決定することができる。ここで、具体的には、画像の高さ（Ｉｍａｇｅ＿Ｓｉｚｅ９３４のＹ座標値）およびステンシルの高さ（Ｓｔｅｎｃｉｌ＿Ｄｉｍｅｎｓｉｏｎ９３５のＹ座標値）から、各ライングループの高さ（ＦＢ＿Ｒｏｗｓ９２６）を算出することができる。ライングループの高さが分かれば、画像から解析されるライングループの数およびメモリ内における各そのようなライングループに対する開始線形アドレス（ＦＢ＿Ｂａｓｅ＿Ａｄｄｒｅｓｓ９３０）も決定することができる。
【００８５】
したがって、一実施形態では、グローバルレジスタ空間が図９ｅのレジスタフィールドによって特徴付けられる特定の作成側／消費側の組み合わせに対してライングループを処理するためにラインバッファユニットが割り当てられると、上述の決定はオンザフライで計算され、ＦＢ＿Ｗｉｄｔｈ９２４、ＦＢ＿Ｒｏｗｓ９２６、Ｂａｓｅ＿Ａｄｄｒｅｓｓ９３４の各々は、ラインバッファインタフェースユニットの特定のレジスタ空間に、直接的にコピーするＮｕｍ＿Ｃｈａｎｎｅｌｓ９２２およびＮｕｍ＿Ｃｏｎｓｕｍｅｒｓ９２３と共にロードされる。従って、論理回路系およびデータ経路は、グローバルレジスタ空間とラインバッファインタフェースユニットレジスタ空間の各インスタンスとの間に存在して、これらの決定およびデータ転送を実行してもよい。
【００８６】
代替の実施形態では、コンパイラは、これらの計算の各々を実行し、それにより、グローバルレジスタ空間の全てではないにしても大部分を排除する。ここで、例えば、コンパイラは、各ライングループについてＢａｓｅ＿Ａｄｄｒｅｓｓ値を決定し、それらの値をラインバッファ回路系ユニット内のルックアップテーブルにロードすることができる。値は、それらの対応するライングループが構成されると、ルックアップテーブルから呼び出され、ラインバッファインタフェースユニットのレジスタ空間にロードされる。これら２つの極端なもの（ハードウェアオンザフライ対決定される静的なコンパイラ）の間の異なる組合せも実装することができる。
【００８７】
上記の実施形態は、レジスタ回路系（「レジスタ空間」）における構成情報の保持を強調したが、他のまたは組み合わせられた実施形態では、構成情報をメモリ（バッファユニットメモリなど）または他のメモリもしくは情報保持回路系に保持することができる。
【００８８】
ｃ．完全ライングループモード対実質的に高いモード
上記の議論は、大部分は、「完全ライングループ」モードに主に向けられ、そこにおいては、ライングループは、完全な全ライングループとして言及され、シート生成部とラインバッファユニットとの間で渡される。「仮想的に高い」と呼ばれる別のモードでは、ライングループは、分離した個別のセグメントで完成される全幅の上側部分および下側部分として言及され、シート生成部間で渡される。
【００８９】
図１０ａおよび図１０ｂは、例示的な仮想的に高いモードシーケンスの図を示す。図１０ａにおいて見られるように、ライングループは、最初は、全幅の行の上側部分１００３および第１のより短い幅のセグメントのみを有する第１の下側部分１００４＿１として形成される。ライングループの最初の形成物は、作成側シート生成部によってラインバッファユニットに提供されてもよく、またはラインバッファユニットによって消費側シート生成部に提供されてもよい。
【００９０】
作成側の場合、ライングループは、ステンシル１００２が下側部分１００４＿１を処理した後に形成される（おおよそのステンシル配置が図１０ｂに見られる）。作成側ステンシルプロセッサが下側部分１００４＿１を処理した後、ステンシルは前方に水平に右に進む。最終的に、それらは次の下側部分１００４＿２を処理する。次の下側部分１００４＿２が完了すると、次の下側部分１００４＿２がシート生成部からラインバッファユニットに送られ、メモリ内において正しい位置、例えば第１の下側部分１００４＿１の「隣」に格納される。ライングループがラインバッファユニットメモリに完全に書き込まれるまで、プロセスは継続される。
【００９１】
消費側の場合、ライングループは、図１０ａに示すように、まずシート生成部に送られる。ステンシルプロセッサは、ライングループの第１の部分１００４＿１に対して動作する。第１の部分１００４＿１の処理の完了に近づくと、シート生成部は、次の下側部分１００４＿２を要求し、それはメモリからフェッチされ、ラインバッファユニットによって送られる。このプロセスは、ライングループが完全に処理されるまで続く。
【００９２】
作成側および消費側の両方にとって、下側部分はシート生成部によって具体的に識別されることに注目されたい。すなわち、作成側の場合および消費側の場合の両方において、下側部分１００４＿２はシート生成部によって具体的に識別され、ラインバッファユニットは具体的にメモリにアクセスして下側部分１００４＿２を格納／フェッチする。実施形態では、シート生成部は、コンパイラによって提供される情報に基づいて企図されるＸ、Ｙ座標値を介して下側部分１００４＿２を識別する（例えば、下側部分１００４＿２の任意の角、下側部分１００４＿２のすべての４つの角、Ｘ座標値だけなど）。
【００９３】
４．０マクロＩ／Ｏユニットの実施形態
図４の議論から、入力画像データを画像プロセッサに供給するために、マクロＩ／Ｏユニット４０５は画像データのフレームをラインバッファユニット４０１に渡すことを想起されたい。同様に、画像プロセッサから、処理された画像データを、なんであれ画像プロセッサを利用しているシステムリソース（例えば、アプリケーションソフトウェアプログラム、ディスプレイ、カメラなど）に供給するために、画像データの処理された出力フレームが、ラインバッファユニット４０１からマクロＩ／Ｏユニット４０５に転送される。
【００９４】
図１１ａは、マクロＩ／Ｏユニット１１０５の実施形態をより詳細に示す。図１１ａに示すように、一実施形態によれば、マクロＩ／Ｏユニット１１０５は、画像プロセッサ１１０１の外部にあるメモリ１１０６に結合される。ここで、例えば、外部メモリ１１０６は、コンピュータシステムのシステムメモリ、画像プロセッサ１１０１が構成部分であるかまたは他の態様で関連付けられるカメラ、グラフィックスプロセッサ、アクセラレータおよび／またはコプロセッサへのローカルメモリであってもよい。外部メモリ１１０６は、画像プロセッサ１１０１の論理自体から外部にあり、したがって画像プロセッサの内部メモリ（ラインバッファユニット４０１またはシート生成部４０３にローカルなメモリなど）とは異なる任意のメモリであると理解される。
【００９５】
公称動作の間、画像プロセッサ１１０１によって処理される画像データの入力フレームは、まず外部メモリ１１０６に書き込まれる。マクロＩ／Ｏユニット１１０５は、次いで、外部メモリ１１０６から画像フレームを読み出し、画像プロセッサ１１０１に供給する。画像プロセッサ１１０１がフレームの１つ以上の十分な部分を処理し終えると、マクロＩ／Ｏユニットは、処理された部分を画像プロセッサの出力として外部メモリ１００６に書き込む。フレーム自体が完全に処理される前に、フレームの一部を外部メモリに書き込むことができる。
【００９６】
図１１ａは、マクロＩ／Ｏユニット１１０５の実施形態の高次レベルの表現を示す。図１１ａに見られるように、マクロＩ／Ｏユニット１１０５は、外部メモリ１１０６と、外部メモリから読み出され画像プロセッサによって処理される画像データの内部消費側、または画像プロセッサから外部メモリ１１０６に書き出される必要がある出力画像データの内部作成側との間の論理チャネルを確立することを各々が担ういくつかの論理チャネルユニット１１１０＿１〜１１１０＿Ｎを含むように設計される。
【００９７】
様々な実施形態において、そのような消費側または作成側は、ラインバッファユニットまたはステンシルプロセッサのシート生成部であってもよい。ここで、図４を再び参照すると、一実施形態では、マクロＩ／Ｏユニット４０５は、ネットワーク４０４に直接結合され、ラインバッファユニット４０１だけでなく、特定のステンシルプロセッサ４０２の任意のシート生成部４０３への通信も許す。様々な他の実施形態では、ネットワーク４０４は、マクロＩ／Ｏユニット４０５が、図４によって示唆されたように直接ラインバッファユニット４０１にではなくネットワーク４０４を介してラインバッファユニット４０１に通信するという点で、よりグローバルである。
【００９８】
図１１ｂは、論理チャネルユニット１１１０のための論理回路設計の実施形態を示す。図１１ｂに見られるように、論理チャネルユニット１１１０は、ステートマシン論理回路１１１１、コンテキストレジスタ空間１１１２、再フォーマット論理１１１３、入力キュー１１１４、出力キュー１１１５、および他の論理チャネルユニットへの通信チャネル１１１６を含む。代替的な実施形態では、再フォーマット論理１１１３は、図１１ｂによって示唆されるように各チャネルがそれ自体の専用の再フォーマット論理を有するのではなく、複数の論理チャネルユニットによって共有される単一の集中型ブロックとして実装され得ることに留意されたい。説明を簡単にするために、議論の残りの部分では、集中型の再フォーマットではなく、チャネルごとの再フォーマット論理ブロックが実装されていると仮定する。
【００９９】
論理チャネルユニット１１１０が受信した画像データは、入力キュー１１１４に受信される。入力キュー１１１４にある入力データのピクセルは、多くの場合、再フォーマット論理１１１３によって選択的に選択され、再フォーマット論理１１１３は入力キュー１１１４の入力ピクセルがフォーマットされるものとは異なるフォーマットに従って出力キュー１１１５に出力データの単位を構築する。すなわち、出力データのピクセルは、典型的には、入力キュー１１１４における入力ピクセルがフォーマットされているものとは異なるフォーマット構造に従って出力キュー１１１５において編成される。
【０１００】
例えば、外部メモリから画像プロセッサに入力データを供給する場合、外部メモリにある入力画像データは、ＲＧＢ、ＲＧＢ、ＲＧＢ、ピクセルデータフォーマットに従って編成され得る。しかしながら、ステンシルプロセッサは、同じ色を有するピクセルデータのシート上で動作し得る。すなわち、ステンシルプロセッサは、Ｒピクセルのシート、Ｇピクセルのシート、およびＢピクセルのシート上で別々に動作し得る。このように、入力画像データを、外部メモリにおけるそのフォーマットから、ステンシルプロセッサによって利用されるフォーマットに準備するために、再フォーマット論理１１１３は、例えば、入力キュー１１１４からＲピクセルを選択して、Ｒピクセルのブロックを出力キュー１１１５に構築する。十分なサイズのＲピクセルのブロックが出力キュー１１１５に構築されると、ブロックはラインバッファユニットまたはステンシルプロセッサのシート生成部に転送される。
【０１０１】
例えば、Ｒピクセルの供給が尽きて画像プロセッサ内でより深く転送された後、再フォーマット論理１１１３は、入力キュー１１１４からＧピクセルのみを選択して出力キュー１１１５にＧピクセルのブロックを構築することができる。再び、Ｇピクセルの供給が尽きて転送された後、再フォーマット論理１１１３は、入力キュー１１１４からＢピクセルを選択して、画像プロセッサ内でより深く転送するために出力キュー１１０５にＢピクセルのブロックを構築する。
【０１０２】
逆に、論理チャネルユニット１１１０が画像プロセッサからの出力画像の外部メモリへの書き込みをサポートするために使用される逆方向では、同じピクセルタイプのブロックが入力キュー１１１４にロードされる。すなわち、例えば、Ｒピクセル、Ｇピクセル、およびＢピクセルのブロックが、ラインバッファユニットまたはステンシルプロセッサのシート生成部から入力キュー１１１４で受け取られる。再フォーマット論理１１１３は、これらのピクセルのうちのあるものを選択して、外部メモリに書き込むために、出力キュー１１１５において、元のＲＧＢ、ＲＧＢフォーマット構造を有する出力ブロックを形成する。
【０１０３】
ステートマシン論理１１１１は、再フォーマット論理１１１３の再フォーマット挙動を制御し、外部メモリにアクセスする際にどのようなアドレスおよび／またはアドレス指定スキームを使用するかを決定するとともに、外部メモリへの論理チャネルを形成する際にそれがどのラインバッファユニットまたはシート生成部と通信しているかを理解する。
【０１０４】
様々な実施形態では、ステートマシン論理１１１１および再フォーマット論理１１１３は、専用論理回路系とともに実装される。他の実施形態では、ステートマシン論理１１１１および／または再フォーマット論理１１１３は、ステートマシン／再フォーマット機能を実装するためのプログラムコードを実行するマイクロコントローラとして実装されてもよい。さらに他の実施形態では、ステートマシン論理１１１１／再フォーマット論理１１１３は、プログラムされた専用の論理回路系の組み合わせとして実装されてもよい。専用論理回路系は、ハードワイヤードおよび／またはプログラマブル論理回路（例えば、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはプログラマブル論理アレイ（ＰＬＡ）が後者の例である）として実装することができる。
【０１０５】
ステートマシンがその様々な責任を理解するために参照する情報本体は、コンテキストレジスタ空間１１１２内に保持されるが、それは、まず、例えば画像プロセッサが特定のＤＡＧまたはパイプラインを実行するように構成されているときに、そのＤＡＧまたはパイプラインのための適切なコンテキスト情報がロードされる。ＤＡＧまたはパイプラインの実行中のレジスタ空間１１１２へのその後の更新は、ステートマシン論理１１１１、画像プロセッサ内の他のインテリジェンス（ステンシルプロセッサ内のスカラープロセッサおよび／または画像プロセッサを用いているシステム（例えば、コンピュータ、カメラなど））によってなされてもよい。
【０１０６】
一実施形態では、コンテキストレジスタ空間１１１２は、以下の情報：１）入力データを画像プロセッサに供給する場合に外部メモリから読み出されるか、または画像プロセッサから出力データを書き込む場合に外部メモリに書き込まれる画像データのフレームのベース外部メモリアドレス、２）（例えば、ピクセルの単位における幅と重量の点での）画像フレームのサイズ、３）外部メモリにおけるデータのフォーマット、４）画像プロセッサ内で使用されるデータのフォーマット、および、５）チャネルが外部メモリに論理的に結合している特定のシート生成部、ステンシルプロセッサまたはラインバッファユニットの識別、を含む。様々な実施形態では、いずれの方向のサポートされた画像データフォーマットも、考えられるものの中でとりわけ、ＲＧＢ、全て１色、パックされたＲＡＷ等を含む。
【０１０７】
図１１で見られるように、論理チャネルユニット１１１０はまた、複数の論理チャネル間の調整を行うために他の論理チャネルの状態を理解できるように、通信リンク１１１６を含む。一例として、画像プロセッサに入力データを供給している論理チャネルは、画像データを最初に画像プロセッサにロードした後、出力画像の次のフレームが画像プロセッサから外部メモリに書き込まれるまで、入力画像データの次のフレームを外部メモリから画像プロセッサにロードすることを控えるように構成することができる。そのような調整がなければ、画像プロセッサの内部メモリリソースは、例えば、いくつかのＤＡＧまたはパイプライン設計についてはオーバーランする可能性がある。
【０１０８】
さらに、図１２ａ、図１２ｂおよび図１３は、論理チャネルのステートマシン１１１１が影響を及ぼすことができる種類の処理動作のいくつかの関連する特徴をさらに詳しく説明する。図１２ａおよび図１２ｂは、論理バッファユニットがより効率的に動作できるように、論理チャネルユニットによって実行可能な外部メモリの特別なアドレス指定手順に関する。
【０１０９】
図１０ａおよび図１０ｂの議論から想起されるように、ラインバッファユニットは、「仮想的に高い」モードに従って動作することができ、このモードでは、前の行からのすべてのデータが完全に転送されるまで次の行からのデータが転送されない場合、全幅ラインバッファを渡したり、または全フレーム幅を横切ってラスタ走査を行なうのではなく、全フレーム幅を横切って延びていない二次元画像領域１００４＿１，１００４＿２がラインバッファからシート生成部に順次渡される。
【０１１０】
図１２ａおよび図１２ｂは、論理チャネルユニット１１１０のステートマシン論理１１１１が、論理バッファユニットの「仮想的に高い」技術などに従ったシート生成部へのデータ転送を補完するために実現できるメモリアドレス指定スキームを示しており、先行する行からのすべてのデータが完全に転送される前に、次の行からのデータが転送される。ここで、図１２ａを参照すると、画像領域１２０１は、例えば、図１０ａの画像データ１００４＿１を含む画像データとして見ることができる。
【０１１１】
ここで、画像フレーム１２２０内の画像データ１２０１が外部メモリから読み出され、ラインバッファユニットに渡された後、ラインバッファユニットは画像データ１００４＿１をシート生成部に転送する。画像データ１２０１をラインバッファユニットに転送するためには、メモリアドレス指定は、画像フレーム１２２０のデータの全行を読み取ることを控えるべきであり、むしろ、行１２１０の限定された区域を読み取った後、ドロップダウンして、次の下位の行１２１１の次の限定された区域を読み取ることに注目されたい。
【０１１２】
プロセスは、領域１２０１の全てが外部メモリから読み出されて（例えば、それは、限られた区域行１２１２の読み取りの後に完了する）、それがラインバッファユニットに渡されることができるようになるまで継続する。画像領域１２０１がラインバッファユニットに渡された後、ラインバッファユニットは画像データ１００４＿１をシート生成部に転送する立場にある。
【０１１３】
図１２ｂで見られるのと同じアプローチを続けると、次の画像領域１２０２が、図１２ａおよび画像領域１２０１に関して上述したように、同じアドレス指定技術１２１０，１２１１，…１２１２に従って、外部メモリから読み出される。特別なメモリアドレス指定アプローチによって画像領域１２０２が外部メモリから読み出された後、画像領域１２０２は、ラインバッファユニットに転送され、ラインバッファユニットは、図１０ｂの画像データ１００４＿２を同じシート生成部に転送する立場になる。
【０１１４】
このように、外部メモリと論理バッファユニットとの間に存在する論理チャネルユニットは、ラインバッファユニットが画像データをシート生成部に転送するのと同様にデータをラインバッファユニットに転送することができる。ラインバッファユニットがシート生成部に入力データを供給するのと同様の方法で入力データを論理バッファユニットに供給することにより、ラインバッファユニットの全体的なスループットおよび効率が向上する。なお、論理チャネルユニットは、外部メモリからの入力データの読み出しと、ラインバッファユニットへの入力データの転送との間で、上述のような再フォーマット（例えば、ＲＧＢ→全てのＲ、全てのＧ、全てのＢ）を行ってもよい。
【０１１５】
図１２ａおよび図１２ｂの特殊アドレス指定モードは、画像プロセッサからの出力データを外部メモリに書き込む方向にも適用することができる。ここで、シート生成部は、処理された出力画像データをラインバッファに「仮想的に高い」モードで渡すことができ、それは、次いで、ラインバッファユニットを促して、図１２の領域１２０１，１２０２に近い限られた区域を有する画像データの領域を論理チャネルユニットに転送させる。それに応答して、論理チャネルユニットは、同じ特殊アドレス指定手法１２１０，１２１１、１２１２に従って、データを外部メモリ書き込むことになる。再び再フォーマットすることを、ラインバッファユニットからの出力画像データの受信と外部メモリへの出力画像データの書き込みとの間で、論理チャネルによって実行してもよい。
【０１１６】
図１３は、別の特殊なアドレス指定手法に関しており、例えば、ステンシルプロセッサ上で実行するカーネルが、シーケンスにおいて順序付けられたりまたは整列されているのではなく、入力フレーム内の位置において、よりランダムまたはアドホックな個々の表面領域を具体的に要求する。例えば、図１３で見られるように、ステンシルプロセッサは、入力フレーム（ライングループ、仮想的に高い、またはその他）の幅を横切って順序付けられたシーケンシャルなモードでデータを要求するのではなく、画像領域１３０１，１３０２，１３０３および１３０４を順次要求し得る。ここで、各領域１３０１〜１３０４は、図１２ａ、図１２ｂの限定区域アドレス指定手法１２１０，１２１１，…１２１２を、ただしアドホック画像領域１３０１〜１３０４の範囲内で用いることによって、読み出される。したがって、外部メモリ取り出し領域の形状は構成可能にされる。
【０１１７】
順序付けされたシーケンスではなく、アドホックでの画像領域の処理は、例えば動き補償ルーチン（画像ストリーム内の特徴が移動する）、幾何学的歪みルーチン（例えば、収集された画像データのフレームが歪む、レンズまたは他の画像収集不完全を補償するため）、および行列の乗法または転置の操作に対して、有用であり得る。
【０１１８】
一実施形態では、アドホックアドレス指定は、マクロＩ／Ｏユニット１１０５内で２つの論理チャネルユニット１１１０を消費する。第１の論理チャネルユニットは、ステンシルプロセッサが要求している各アドホック画像領域のベース座標値を受け取る。例えば、所望の画像領域は、ステンシルプロセッサが、その領域の高さ及び幅を、その領域の左下隅のアドレスとともに識別することによって、指定されてもよい。
【０１１９】
公称の動作が、各所望の領域が同じ幅および高さを有することを含む、と仮定すると、各所望の領域の左下隅の座標値を第１の論理チャネルユニットに転送することにより、一連のアドホック画像領域を識別することができる（例えば、まず、領域１３０１の左下隅の座標値が第１の論理チャネルユニットに送信され、次に領域１３０２の左下隅の座標値が第１の論理チャネルユニットに送信される、など）。次いで、第１の論理チャネルユニットは、受信された座標値を第２の論理チャネルユニットに（例えば、図１１の通信チャネル１１０６を介して）転送し、それは、外部メモリから所望の領域を読み出し、再フォーマットして、要求元のステンシルプロセッサに転送する。アドホック画像領域のシーケンスがそれらの間に実質的な重なりを有し得ることに留意されたい。すなわち、第１の画像領域は、第２の画像領域も消費する同じ画像領域の大部分を消費し得る。一実施形態では、外部メモリと論理チャネルとの間にキャッシュが実装され、複数の画像領域の間で重複する画像データを保持して、同じデータに対するメモリへの複数のアクセスを回避することができる。
【０１２０】
図１４は、上述のように論理チャネルユニットによって実行可能な方法論を示す。図１４で見られるように、この方法論は、画像プロセッサ内における消費構成要素への論理接続を可能にすること１４０１を含む。この方法はまた、画像データのフレームから一連の制限された幅の画像領域を読み出すこと１４０２を含み、各画像領域はＲＧＢフォーマットに従ってフォーマットされている。この方法はまた、一連の制限された幅の画像領域を同じ色成分を有する画像データのブロックに再フォーマットすること１４０３を含む。この方法はまた、同じ色成分を有する画像データのブロックを消費構成要素に転送すること１４０４を含む。
【０１２１】
ｅ．実現例の実施形態
上述した様々な画像プロセッサアーキテクチャの特徴は、必ずしも従来の意味での画像処理に限定されず、したがって、画像プロセッサを再特徴付けしてもよい（またはしなくてもよい）他のアプリケーションに適用することができることを指摘することが適切である。例えば、実際のカメラ画像の処理とは対照的に、アニメーションの作成および／または生成および／またはレンダリングにおいて上述した様々な画像プロセッサアーキテクチャの特徴のいずれかが使用される場合、画像プロセッサはグラフィックス処理ユニットとして徳経づけられてもよい。さらに、上述した画像プロセッサアーキテクチャの特徴は、ビデオ処理、視覚処理、画像認識および／または機械学習などの他の技術的用途にも適用することができる。このように適用されて、画像プロセッサは、より汎用的なプロセッサ（例えば、コンピューティングシステムのＣＰＵの一部であるか、またはその一部である）と（例えばコプロセッサとして）一体化されてもよく、またはコンピューティングシステム内のスタンドアロンプロセッサであってもよい。
【０１２２】
上述したハードウェア設計の実施形態は、半導体チップ内において、および／または最終的に半導体製造プロセスに向けての回路設計の記述として実施することができる。後者の場合、そのような回路記述は、（例えばＶＨＤＬもしくはＶｅｒｉｌｏｇ）レジスタ転送レベル（ＲＴＬ）回路記述、ゲートレベル回路記述、トランジスタレベル回路記述もしくはマスク記述、またはそれらの様々な組み合わせの形態をとってもよい。回路記述は、典型的には、コンピュータ可読記憶媒体（例えばＣＤ−ＲＯＭまたは他のタイプの記憶技術）上に実施される。
【０１２３】
先のセクションから、上記の画像プロセッサは、（例えば、ハンドヘルド装置のカメラからのデータを処理するハンドヘルド装置のシステムオンチップ（ＳＯＣ）の一部として）コンピュータシステム上のハードウェアで実施できることを認識することに関係する。画像プロセッサがハードウェア回路として実施される場合、画像プロセッサによって処理される画像データはカメラから直接受信されてもよいことに留意されたい。ここで、画像プロセッサは、別体のカメラの一部であってもよいし、一体化されたカメラを有するコンピューティングシステムの一部であってもよい。後者の場合、画像データは、カメラから直接、またはコンピューティングシステムのシステムメモリから受信することができる（例えば、カメラは、その画像データを画像プロセッサではなくシステムメモリに送信する）。先のセクションで説明した機能の多くは、（アニメーションをレンダリングする）グラフィックスプロセッサユニットにも適用可能であることにも留意されたい。
【０１２４】
図１５は、コンピューティングシステムの例示的な図である。以下に説明するコンピューティングシステムのコンポーネントの多くは、一体化されたカメラおよび関連する画像プロセッサ（例えば、スマートフォンまたはタブレットコンピュータなどのハンドヘルドデバイス）を有するコンピューティングシステムに適用可能である。当業者は、２つの間の範囲を容易に定めることができるであろう。
【０１２５】
図１５に見られるように、基本的なコンピューティングシステムは、中央処理ユニット１５０１（例えば、マルチコアプロセッサまたはアプリケーションプロセッサ上に配置された複数の汎用処理コア１５１５＿１〜１５１５＿Ｎおよびメインメモリコントローラ１５１７を含み得る）、システムメモリ１５０２、ディスプレイ１５０３（例えばタッチスクリーン、フラットパネル）、ローカル有線ポイントツーポイントリンク（例えばＵＳＢ）インタフェース１５０４、様々なネットワークＩ／Ｏ機能１５０５（イーサネット（登録商標）インタフェースおよび／またはセルラーモデムサブシステムなど）、無線ローカルエリアネットワーク（例えばＷｉＦｉ）インタフェース１５０６、ワイヤレスポイントツーポイントリンク（例えばブルートゥース（登録商標））インタフェース１５０７およびグローバルポジショニングシステムインタフェース１５０８、様々なセンサ１５０９＿１〜１５０９＿Ｎ、１つ以上のカメラ１５１０、バッテリ１５１１、電力管理制御ユニット１５１２、スピーカおよびマイクロホン１５１３、ならびに音声コーダ／デコーダ１５１４を含んでもよい。
【０１２６】
アプリケーションプロセッサまたはマルチコアプロセッサ１５５０は、そのＣＰＵ１５０１内における１つ以上の汎用処理コア１５１５、１つ以上のグラフィカル処理ユニット１５１６、メモリ管理機能１５１７（例えばメモリコントローラ）、Ｉ／Ｏ制御機能１５１８および画像処理ユニット１５１９を含んでもよい。汎用処理コア１５１５は、典型的には、コンピューティングシステムのオペレーティングシステムおよびアプリケーションソフトウェアを実行する。グラフィックス処理ユニット１５１６は、典型的には、ディスプレイ１５０３上に提示されるグラフィックス情報を生成するために、グラフィックス集中型機能を実行する。メモリ制御機能１５１７は、システムメモリ１５０２とインタフェースして、システムメモリ１５０２との間でデータの書込／読出を行う。電力管理制御ユニット１５１２は、システム１５００の電力消費を全体的に制御する。
【０１２７】
画像処理ユニット１５１９は、先のセクションで説明した画像処理ユニットの実施形態のいずれかに従って実現することができる。代替的にまたは組み合わせて、ＩＰＵ１５１９は、ＧＰＵ１５１６およびＣＰＵ１５０１のいずれかまたは両方にそのコプロセッサとして結合されてもよい。さらに、様々な実施形態では、ＧＰＵ１５１６は、上で説明した画像プロセッサの特徴のいずれかを用いて実現することができる。
【０１２８】
タッチスクリーンディスプレイ１５０３、通信インタフェース１５０４〜１５０７、ＧＰＳインタフェース１５０８、センサ１５０９、カメラ１５１０、およびスピーカ／マイクコーデック１５１３，１５１４の各々はすべて、適切な場合には、一体化された周辺装置（例えば１つ以上のカメラ１５１０）も含むコンピューティングシステム全体に対して様々な形態のＩ／Ｏ（入力および／または出力）として見ることができる。実現例によっては、これらのＩ／Ｏコンポーネントの様々なものは、アプリケーションプロセッサ／マルチコアプロセッサ１５５０上に統合されてもよく、またはアプリケーションプロセッサ／マルチコアプロセッサ１５５０のダイから離れて、またはそのパッケージ外に配置されてもよい。
【０１２９】
一実施形態では、１つ以上のカメラ１５１０は、カメラとその視野内の対象との間の深度を測定することができる深度カメラを含む。アプリケーションプロセッサまたは他のプロセッサの汎用ＣＰＵコア（もしくはプログラムコードを実行するために命令実行パイプラインを有する他の機能ブロック）上で実行されるアプリケーションソフトウェア、オペレーティングシステムソフトウェア、デバイスドライバソフトウェアおよび／またはファームウェアは、上記の機能のいずれかを実行してもよい。
【０１３０】
本発明の実施形態は、上述したような様々なプロセスを含むことができる。これらのプロセスは、機械実行可能命令で実施されてもよい。これらの命令は、汎用または特殊目的のプロセッサに特定のプロセスを実行させるために使用できる。代替的に、これらのプロセスは、プロセスを実行するためのハードワイヤード論理を含む特定のハードウェアコンポーネントによって、またはプログラミングされたコンピュータコンポーネントとカスタムハードウェアコンポーネントとの任意の組み合わせによって実行されてもよい。
【０１３１】
本発明の要素はまた、機械実行可能命令を記憶するための機械可読媒体として提供されてもよい。機械可読媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、および光磁気ディスク、フラッシュメモリ、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気もしくは光カード、伝搬媒体、または電子命令を記憶するのに適した他のタイプの媒体／機械可読媒体を含むが、それらに限定はされない。例えば、本発明は、搬送波または通信リンク（例えばモデムもしくはネットワーク接続）を介する他の伝搬媒体で実施されたデータ信号によって、遠隔のコンピュータ（例えばサーバ）から要求側コンピュータ（例えばクライアント）に転送され得るコンピュータプログラムとしてダウンロードすることができる。
【０１３２】
前述の明細書では、本発明をその特定の例示的な実施形態を参照して説明した。しかしながら、特許請求の範囲に記載される本発明のより広い精神および範囲から逸脱することなく、様々な修正および変更がなされ得ることは明らかであろう。したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきである。
【図１】
2019509549.tif 000003
【図２ａ】
2019509549.tif 000004
【図２ｂ】
2019509549.tif 000005
【図３】
2019509549.tif 000006
【図４】
2019509549.tif 000007
【図５ａ】
2019509549.tif 000008
【図５ｂ】
2019509549.tif 000009
【図５ｃ】
2019509549.tif 000010
【図５ｄ】
2019509549.tif 000011
【図５ｅ】
2019509549.tif 000012
【図６】
2019509549.tif 000013
【図７】
2019509549.tif 000014
【図８】
2019509549.tif 000015
【図９ａ】
2019509549.tif 000016
【図９ｂ】
2019509549.tif 000017
【図９ｃ】
2019509549.tif 000018
【図９ｄ】
2019509549.tif 000019
【図９ｅ】
2019509549.tif 000020
【図１０ａ】
2019509549.tif 000021
【図１０ｂ】
2019509549.tif 000022
【図１１ａ】
2019509549.tif 000023
【図１１ｂ】
2019509549.tif 000024
【図１２ａ】
2019509549.tif 000025
【図１２ｂ】
2019509549.tif 000026
【図１３】
2019509549.tif 000027
【図１４】
2019509549.tif 000028
【図１５】
2019509549.tif 000029
【手続補正書】
【提出日】平成30年10月4日(2018.10.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像プロセッサであって、
前記画像プロセッサによる処理のために外部メモリから入力画像データを読み出し、前記画像プロセッサからの出力画像データを前記外部メモリに書き込むＩ／Ｏユニットを備え、前記Ｉ／Ｏユニットは、
複数の論理チャネルユニットを含み、各論理チャネルユニットは、外部メモリと、前記画像プロセッサ内のそれぞれの作成側または消費側プログラムコードを実行するそれぞれの画像処理コアとの間に論理チャネルを形成し、各論理チャネルユニットは、
前記外部メモリに適用されるアドレス指定スキームを制御するアドレス指定回路系と、
外部メモリと前記それぞれの画像処理コアとの間で画像データを第１の画像フォーマットタイプから第２の画像フォーマットタイプに再フォーマットする再フォーマット回路系とを利用するように設計される、画像プロセッサ。
【請求項２】
前記アドレス指定回路系は、画像フレームよりも小さい幅を有する入力画像フレームの領域が前記外部メモリと前記それぞれの作成側または消費側プログラムコードとの間で渡されることができるように前記外部メモリをアドレス指定することができる、請求項１に記載の画像プロセッサ。
【請求項３】
前記領域は、前記入力画像フレームを横切ってランダムな態様で配列され得る、請求項２に記載の画像プロセッサ。
【請求項４】
前記再フォーマット回路系は、前記画像プロセッサへの提示のためにすべて１つの色のピクセルのブロックを構築することができる、請求項１〜請求項３のいずれか１項に記載の画像プロセッサ。
【請求項５】
前記画像プロセッサは、同じ色のピクセル値のシートを処理するそれぞれの二次元シフトレジスタアレイ回路構造を各々が有する内部の複数のプロセッサを含む、請求項４に記載の画像プロセッサ。
【請求項６】
前記再フォーマット回路系は、前記画像プロセッサによって生成された同じ色のピクセル出力データのブロックから外部メモリに書き込むためのＲＧＢフォーマットされた出力データを構築することができる、請求項１〜５のいずれか１項に記載の画像プロセッサ。
【請求項７】
前記画像プロセッサは、同じ色のピクセル値のシートを処理するそれぞれの二次元シフトレジスタアレイ回路構造を各々が有する内部の複数のプロセッサを含む、請求項６に記載の画像プロセッサ。
【請求項８】
コンピューティングシステムであって、
１つ以上の汎用プロセッサと、
システムメモリと、
前記システムメモリに結合されたメモリコントローラと、
請求項１〜請求項７のいずれか１項に記載の画像プロセッサとを備える、コンピューティングシステム。
【請求項９】
前記外部メモリの少なくとも一部は前記システムメモリ内にある、請求項８に記載のコンピュータシステム。
【請求項１０】
方法であって、
画像プロセッサ内における消費構成要素への論理接続を可能にすることと、
画像データのフレームから一連の制限された幅の画像領域を読み出すこととを備え、各前記画像領域はＲＧＢフォーマットに従ってフォーマットされ、前記方法はさらに、
前記一連の制限された幅の画像領域を同じ色成分を有する画像データのブロックに再フォーマットすることと、
前記同じ色成分を有する画像データのブロックを前記消費構成要素に転送することとを備える、方法。
【請求項１１】
同じ色を有する画像データのブロックを、二次元シフトレジスタアレイ回路構造から入力オペランドを受け取り、前記二次元シフトレジスタアレイ回路構造に出力オペランドを書き込む実行レーンのアレイで処理することをさらに備える、請求項１０に記載の方法。
【請求項１２】
前記二次元シフトレジスタアレイ回路構造は、同じ色を有する画像データのシートを含む、請求項１１に記載の方法。
【請求項１３】
前記消費構成要素は、画像データの同じ色の領域を前記実行レーンに向けて供給するラインバッファユニットである、請求項１１に記載の方法。
【請求項１４】
前記制限された幅の画像領域は、前記フレームを横切ってランダムな態様で分散される、請求項１０から請求項１３のいずれか１項に記載の方法。
【請求項１５】
請求項１０〜１４のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【国際調査報告】
2019509549.tif 000030
2019509549.tif 000031
2019509549.tif 000032