(57)【要約】  画像プロセッサユニットが記載される。画像プロセッサユニットは、少なくとも１つの入力画像を受信するための複数の入力と、少なくとも１つの出力画像を提供するための複数の出力とを備える。画像プロセッサユニットは、複数の入力および複数の出力に結合されたネットワークとを備える。ネットワークは、少なくとも１つの入力を少なくとも１つの出力に結合する。画像プロセッサユニットは、ネットワークに結合された画像プロセッサ回路を備える。ネットワークは、１つの入力で受信した入力画像を画像プロセッサ回路にルーティングする。画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、入力画像から処理済み出力画像を生成する。ネットワークは、処理済み出力画像を少なくとも１つの出力にルーティングする。
2020516981.tif 000002
【特許請求の範囲】
【請求項１】
画像プロセッサユニットであって、
少なくとも１つの入力画像を受信するための複数の入力と、
少なくとも１つの出力画像を提供するための複数の出力と、
前記複数の入力および前記複数の出力に結合されたネットワークとを備え、前記ネットワークは、少なくとも１つの前記入力を少なくとも１つの前記出力に結合し、
前記ネットワークに結合された画像プロセッサ回路を備え、前記ネットワークは、１つの前記入力で受信した入力画像を前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、前記入力画像から処理済み出力画像を生成し、前記ネットワークは、前記処理済み出力画像を少なくとも１つの前記出力にルーティングする、画像プロセッサユニット。
【請求項２】
前記ネットワークは、前記入力画像を前記画像プロセッサ回路にルーティングしている間に、１つの前記入力で受信した第２の入力画像を１つの前記出力にルーティングする、請求項１に記載の画像プロセッサユニット。
【請求項３】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項１または２に記載の画像プロセッサユニット。
【請求項４】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、画像信号処理パイプラインを実施することである、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項５】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、画像統計値を生成することである、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項６】
ホストシステムへのインターフェイスをさらに備え、
前記インターフェイスは、前記ホストシステムから入力データを受信し、前記ネットワークは、前記入力データを前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記入力データに対して画像処理プログラムコードを実行することによって結果データを生成し、前記ネットワークは、前記結果データを前記ホストにルーティングする、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項７】
前記画像プロセッサ回路による前記画像処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項８】
メモリを前記画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
前記ネットワークは、前記画像プロセッサ回路が前記入力画像を処理する前に、前記入力画像を前記メモリにルーティングすること、および／または、出力画像を前記メモリから１つの前記出力にルーティングすることを行う、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項９】
前記メモリは、複数の画像を格納し、
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、前記複数の画像のより多くの露出不足領域を前記複数の画像のより少ない過度露出領域とブレンドすることである、および／または、前記複数の画像を分析することによって最良の静止画を決定することである、請求項８に記載の画像プロセッサユニット。
【請求項１０】
カメラドライバプログラムコードを実行するための埋め込み型プロセッサ回路をさらに備える、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項１１】
前記画像プロセッサユニットは、アプリケーションプロセッサ上に実装される、先行する請求項の少なくとも１項に記載の画像プロセッサユニット。
【請求項１２】
前記画像プロセッサのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１３】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または前記画像プロセッサチップがマルチプレクサとして構成される、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１４】
画像の統計値を処理および／または生成するように構成される、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１５】
前記画像プロセッサは、画像データのステンシルに対して未処理画像を処理するように構成され、特に、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１６】
ステンシルプロセッサにさらに結合される、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１７】
データ計算ユニットが、前記実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、特に前記実行レーンアレイの外側にレジスタが存在する、先行する請求項の少なくとも１項に記載の画像プロセッサ。
【請求項１８】
コンピューティングシステムであって、
複数の汎用プロセッサとメインメモリサブシステムとを含むホストシステムと、
１つ以上のカメラと、
画像信号処理プログラムコードを格納するための記憶媒体と、
前記１つ以上のカメラと前記ホストシステムとの間に結合された画像プロセッサユニットとを備え、
前記画像プロセッサユニットは、以下のａ）、ｂ）、ｃ）およびｄ）、すなわち、
ｅ）少なくとも１つの入力画像を受信するための複数の入力と、
ｆ）少なくとも１つの出力画像を提供するための複数の出力と、
ｇ）前記複数の入力および前記複数の出力に結合されたネットワークとを備え、前記ネットワークは、少なくとも１つの前記入力を少なくとも１つの前記出力に結合し、
ｈ）前記ネットワークに結合された画像プロセッサ回路を備え、前記ネットワークは、１つの前記入力で受信した入力画像を前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記画像信号処理プログラムコードを実行することによって、前記入力画像から処理済み出力画像を生成し、前記ネットワークは、前記処理済み出力画像を少なくとも１つの前記出力にルーティングする、コンピューティングシステム。
【請求項１９】
前記ネットワークは、前記入力画像を前記画像プロセッサ回路にルーティングしている間に、１つの前記入力で受信した第２の入力画像を１つの前記出力にルーティングする、請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項１８または１９に記載のコンピューティングシステム。
【請求項２１】
ホストシステムへのインターフェイスをさらに備え、
前記インターフェイスは、前記ホストシステムから入力データを受信し、前記ネットワークは、前記入力データを前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記入力データに対して画像処理プログラムコードを実行することによって結果データを生成し、前記ネットワークは、前記結果データを前記ホストにルーティングする、請求項１８〜２０の少なくとも１項に記載のコンピューティングシステム。
【請求項２２】
前記画像プロセッサ回路による前記画像処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、請求項１８〜２１の少なくとも１項に記載のコンピューティングシステム。
【請求項２３】
メモリを前記画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
前記ネットワークは、前記画像プロセッサ回路が前記入力画像を処理する前に、前記入力画像を前記メモリにルーティングすること、および／または、出力画像を前記メモリから１つの前記出力にルーティングすることを行う、請求項１８〜２２の少なくとも１項に記載のコンピューティングシステム。
【請求項２４】
前記メモリは、複数の画像を格納し、
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、前記複数の画像のより多くの露出不足領域を前記複数の画像のより少ない過度露出領域とブレンドすることである、および／または、前記複数の画像を分析することによって最良の静止画を決定することである、請求項１８〜２３の少なくとも１項に記載のコンピューティングシステム。
【請求項２５】
前記画像プロセッサのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、請求項１８〜２４の少なくとも１項に記載のコンピューティングシステム。
【請求項２６】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または前記画像プロセッサチップがマルチプレクサとして構成される、請求項１８〜２５の少なくとも１項に記載のコンピューティングシステム。
【請求項２７】
画像の統計値を処理および／または生成するように構成される、請求項１８〜２６の少なくとも１項に記載のコンピューティングシステム。
【請求項２８】
画像データのステンシルに対して未処理画像を処理するように構成され、特に、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、請求項１８〜２７の少なくとも１項に記載のコンピューティングシステム。
【請求項２９】
データ計算ユニットが、前記実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、特に前記実行レーンアレイの外側にレジスタが存在する、請求項１８〜２８の少なくとも１項に記載のコンピューティングシステム。
【請求項３０】
画像プロセッサユニットによって実行される方法であって、
第１の入力画像を前記画像プロセッサユニットの第１の出力に転送することと、
第２の入力画像を画像プロセッサ回路に転送することとを含み、前記画像プロセッサ回路は、実行レーンアレイと、２次元シフトレジスタアレイとを備え、
前記画像プロセッサ上で画像信号処理プログラムコードを実行することによって処理画像を生成することを含み、前記画像信号処理プログラムコードの実行により、２次元シフトレジスタアレイは、データを前記実行レーンアレイによって実行されている画像信号演算処理の間にシフトし、
前記処理画像を前記画像プロセッサユニットの第２の出力に転送することを含む、方法。
【請求項３１】
前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項３０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明の分野は、一般に、計算科学に関し、より具体的には、構成可能且つプログラム可能な画像プロセッサユニットに関する。
【背景技術】
【０００２】
背景
画像処理は、典型的には、アレイに編成されたピクセル値の処理を含む。ここで、空間的に編成された２次元アレイは、画像の２次元的性質を捕捉する（追加の次元は、時間（例えば２次元画像のシーケンス）、深さ（例えば、畳み込みニューラルネットワークの中間層の深さ）およびデータ型（例えば、色）を含み得る）。典型的なシナリオにおいて、アレイに編成されたピクセル値は、静止画像または動画を捕捉するための一連のフレームを生成するカメラによって提供される。従来の画像プロセッサは、通常、２つの極端のどちらかに該当する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
第１の極端は、画像処理タスクを、汎用プロセッサまたは汎用の様なプロセッサ（例えば、ベクトル命令拡張を備えた汎用プロセッサ）上で実行されるソフトウェアプログラムとして実行する。第１の極端は、一般的に非常に汎用性の高いアプリケーションソフトウェア開発プラットフォームを提供するが、関連するオーバーヘッド（例えば、命令のフェッチおよびデコード、オンチップおよびオフチップデータの処理、投機的実行）と組み合わせられたより細かいデータ構造の使用は、最終的には、プログラムコードの実行中に、単位データあたりにより多くのエネルギーを消費してしまうことになる。
【０００４】
反対の第２の極端は、固定機能のハードワイヤード回路をはるかに大きなデータブロックに適用する。カスタム設計された回路に直接適用される、（より細かいブロックとは対照的に）より大きなデータブロックの使用は、単位データあたりの消費電力を大幅に削減する。しかしながら、カスタム設計された固定機能回路系の使用は、一般に、プロセッサが実行することができるタスクの数が限られる結果となる。このように、（第１の極端に関連する）汎用性の高いプログラミング環境は、第２の極端に欠けている。
【０００５】
汎用性の高いアプリケーションソフトウェア開発機会と、単位データあたりの電力効率の向上とを両立させた技術プラットフォームは、依然として望ましいが、欠けている解決策である。
【課題を解決するための手段】
【０００６】
概要
記載されたのは、画像プロセッサユニットである。画像プロセッサユニットは、少なくとも１つの入力画像を受信するための複数の入力と、少なくとも１つの出力画像を提供するための複数の出力とを備える。画像プロセッサユニットは、複数の入力および複数の出力に結合されたネットワークとを備える。ネットワークは、少なくとも１つの入力を少なくとも１つの出力に結合する。画像プロセッサユニットは、ネットワークに結合された画像プロセッサ回路を備える。ネットワークは、１つの入力で受信した入力画像を画像プロセッサ回路にルーティングする。画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、入力画像から処理済み出力画像を生成する。ネットワークは、処理済み出力画像を少なくとも１つの出力にルーティングする。
【０００７】
以下の説明および添付の図面は、本発明の実施形態を例示するために使用される。
【図面の簡単な説明】
【０００８】
【図１ａ】従来技術のコンピューティングシステムおよび集積化された画像信号処理機能を示す図である。
【図１ｂ】従来技術のコンピューティングシステムおよび集積化された画像信号処理機能を示す図である。
【図１ｃ】従来技術のコンピューティングシステムおよび集積化された画像信号処理機能を示す図である。
【図２】新たな画像プロセッサアーキテクチャの実行レーンアレイおよび２次元シフトレジスタアレイを示す図である。
【図３】システムに集積化された画像プロセッサユニットを示す高レベル図である。
【図４ａ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｂ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｃ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｄ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｅ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｆ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｇ】画像プロセッサユニットの異なる構成を示す図である。
【図４ｈ】画像プロセッサユニットの異なる構成を示す図である。
【図５】画像処理ユニットの実施形態を示す図である。
【図６】画像プロセッサユニットによって実行される方法を示す図である。
【図７】画像プロセッサハードウェアアーキテクチャの実施形態を示す図である。
【図８ａ】画像データを行グループに解析すること、行グループをシートに解析すること、および重なり合うステンシルを有するシートに対して実行された処理を示す図である。
【図８ｂ】画像データを行グループに解析すること、行グループをシートに解析すること、および重なり合うステンシルを有するシートに対して実行された処理を示す図である。
【図８ｃ】画像データを行グループに解析すること、行グループをシートに解析すること、および重なり合うステンシルを有するシートに対して実行された処理を示す図である。
【図８ｄ】画像データを行グループに解析すること、行グループをシートに解析すること、および重なり合うステンシルを有するシートに対して実行された処理を示す図である。
【図８ｅ】画像データを行グループに解析すること、行グループをシートに解析すること、および重なり合うステンシルを有するシートに対して実行された処理を示す図である。
【図９ａ】ステンシルプロセッサの実施形態を示す図である。
【図９ｂ】ステンシルプロセッサの命令語の実施形態を示す図である。
【図１０】ステンシルプロセッサ内のデータ計算ユニットの実施形態を示す図である。
【図１１ａ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｂ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｃ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｄ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｅ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｆ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｇ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｈ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｉ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｊ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１１ｋ】２次元シフトアレイおよび実行レーンアレイを用いて、重なり合うステンシルを有する隣接の出力ピクセル値の対を決定する例を示す図である。
【図１２】実行レーンアレイおよび２次元シフトアレイを集積化した単位セルの実施形態を示す図である。
【図１３】例示的なコンピューティングシステムを示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明
１．０  現行の画像信号プロセッサシステムの集積
図１ａは、スマートフォンなどのモバイルコンピューティングシステムの典型的な設計１００を示している。図１から見られるように、コンピューティングシステムは、多くのコンピューティングシステム基本要素を含む大規模システムオンチップ（ＳＯＣ、アプリケーションプロセッサとも呼ばれる）１０１を含む。これらのコンピューティングシステム基本要素は、１つ以上の汎用処理コア１０２＿１〜１０２＿Ｎ、メインメモリコントローラ１０３、ディスプレイインターフェイス１０４、周辺または「Ｉ／Ｏ」制御ハブ１０５、および内部ネットワーク１０６を含む。メインメモリコントローラ１０３は、メインメモリ１０７（システムメモリとも呼ばれる）とインターフェイスで接続する。ディスプレイインターフェイス１０４は、平板パネルタッチスクリーンなどのディスプレイ１０８上で表示される出力データを提供する。
【００１０】
内部ネットワーク１０６は、例えば、アプリケーションプロセッサの様々なコンポーネント１０２〜１０５の間にデータの引き渡しを提供する。例えば、内部ネットワーク１０６によって、処理コア１０２によって実行されるソフトウェア用のプログラムコード命令およびデータは、メインメモリコントローラ１０３を介して、メインメモリ１０７から処理コア１０２に渡される。同様に、ソフトウェアの実行によって作成されたデータは、メインメモリコントローラ１０３を介して、処理コア１０２からメインメモリ１０７に渡されてもよい。さらに、例えば、メインメモリコントローラ１０３は、ディスプレイ１０８に表示されるデータをメインメモリ１０７から読み出し、ディスプレイインターフェイス１０４に転送することができる。
【００１１】
他の基本的なデータ移動は、周辺機器で生成または受信されたデータを、メインメモリ１０７に書き込むために周辺機器制御ハブ１０５を介してメインメモリコントローラ１０３に渡すこと、またはシステムソフトウェアによる処理のために処理コア１０２に渡すこと、またはディスプレイ１０８上で表示するためにディスプレイインターフェイス１０４に渡すことを含む。図１に示されていないが、１つ以上のネットワークインターフェイス（例えば、セルラーネットワークインターフェイス、無線ローカルエリアネットワークインターフェイス（例えば、ＷｉＦｉ（登録商標）インターフェイス）、または、ポイントツーポイントリンクインターフェイス（例えば、ブルートゥース（登録商標）インターフェイス））は、周辺制御ハブ１０５に結合することができる。これによって、コンピューティングシステムが接続されているネットワーク／リンクから受信したデータを上述したいずれかのデータフローに従ってルーティングすることができる。
【００１２】
なお、周辺制御ハブ１０５は、必ずしも必要ではない。すなわち、一部または全ての周辺機器は、中継の周辺制御ハブを経由せず、ネットワーク１０６に結合されてもよい。説明を容易にするために、本説明の残りは、周辺制御ハブ１０５が存在すると仮定する。内部ネットワーク１０６は、様々なネットワークトポロジー（例えば、リング、クロスバースイッチ、マルチドロップバス）を有する１つ以上の相互接続ネットワークで構成されてもよい。
【００１３】
図１ａに示すように、アプリケーションプロセッサ１０１上の画像信号プロセッサ１１０＿１および１１０＿２に各々結合された一対のカメラ１０９＿１および１０９＿２は、システムの周辺機器またはＩ／Ｏ複合体の一部を構成する。例えば、第１のカメラ１０９＿１は、スマートフォンの前面に位置する前面カメラであってもよく、第２のカメラ１０９＿２は、スマートフォンの背面に位置する背面カメラであってもよい。カメラ１０９＿１および１０９＿２は、通常、赤（Ｒ）、緑（Ｇ）および青（Ｂ）ピクセルからなる「生」（ＲＡＷ）の処理されていないまたは適度に処理されたラスター走査ストリームを生成する。また、より先進的なシステムにおいて、カメラは、赤外線ピクセルストリームおよび／または深度情報（例えば、飛行時間）ピクセルもしくは他の信号ストリームを提供することもできる。ストリームは、通常、個々の画像フレームを識別できるようにフォーマットされる。次に、未処理画像は、画像信号プロセッサ１１０＿１および１１０＿２によって処理される。
【００１４】
画像信号プロセッサ１１０＿１および１１０＿２によって実行される典型的なプロセスは、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正および色補正を含む。他のプロセスは、例えば、画像のサイズを拡大または縮小するためのアップコンバージョンまたはダウンコンバージョンなどのさまざまなサイズ変更操作、または画像データのフットプリント／サイズを削減するための圧縮を含む。通常、画像信号プロセッサ１１０＿１および１１０＿２は、画像をＪＰＥＧまたはＴＩＦＦ（静止画）またはＭＰＥＧ（動画ストリーム）などの非ＲＡＷ業界標準フォーマットに処理する。
【００１５】
図１ｂは、コンピューティングシステム、例えば図１ａのコンピューティングシステム内の典型的な画像データフローを示している。図１ｂから見られるように（および上述したように）、未処理画像データ１１４は、カメラ１０９によって生成され、アプリケーションプロセッサ１０１上の画像信号プロセッサ１１０に転送される。次に、画像信号プロセッサ１１０は、例えば、業界標準フォーマットの静止画像またはビデオストリームを生成する。
【００１６】
また、画像信号プロセッサ１１０は、処理する画像の様々な統計値（例えば、任意／全ての入力ストリーム／画像および／または出力ストリーム／画像の平均ピクセル値、最大ピクセル値または最小ピクセル値）を生成する。画像および統計値の両方は、コンピューティングシステムの１つ以上のＣＰＵコア１０２上で動作するカメラドライバソフトウェア１１１によって処理される。画像および統計値を処理した後、ドライバソフトウェアは、制御信号１１５を生成する。この制御信号１１５は、（例えば、画像信号プロセッサの自動ホワイトバランス、レンズシェーディング補正または色補正プロセスを制御するために）画像信号プロセッサ１１０に送信され、（例えば、カメラの自動焦点合わせ機構または自動露出設定を制御するために）カメラ１０９に送信される。
【００１７】
通常、画像信号プロセッサ１１０からの画像は、処理コア１０２上で実行するアプリケーションソフトウェアプログラム１１２（例えば、カメラアプリケーションまたはビデオチャットアプリケーション）および／またはシステムのディスプレイにも送信される。なお、画像および統計値の両方は、通常、画像信号プロセッサによって生成された後、メインメモリ１０７に格納される。その後、画像および統計値は、さらなる処理／使用のためにＣＰＵコア１０２上で実行するドライバ／アプリケーションによってメインメモリ１０７から読み出される、および／またはディスプレイ上で表示のためにメインメモリ１０７から読み出され、ディスプレイに送信される。
【００１８】
再び図１ａを参照して、画像プロセッサ１１０＿１および１１０＿２は、しばしば未処理の画像データのステンシルを処理する。当該技術分野で知られているように、ステンシルとは、基本的なデータ単位として使用される画像表面領域の（「ブロック」とも呼ばれる）一部分である。例えば、画像信号プロセッサ１１０＿１によって作成されている出力画像内の特定の「出力」ピクセル位置の新しい値は、当該特定のピクセル位置を囲む未処理の入力画像データ領域内のピクセル値の平均値として計算されてもよい。例えば、ステンシルのサイズが３×３ピクセルである場合、特定の出力ピクセル位置は、未処理の入力画像データの３×３ピクセル配列の中間ピクセルに対応し、平均値は、３×３の未処理ピクセル配列内の全ての９ピクセルに対して計算することができる。場合によって、異なるステンシルサイズおよび／またはステンシルに対して異なる機能を実行することが望ましい。したがって、理想的には、画像プロセッサ１１０＿１および１１０＿２は、実行する機能に対して、ある程度のユーザ定義および／またはプログラム可能性を提供することができる。
【００１９】
しかしながら、画像信号プロセッサ１１０＿１および１１０＿２は、ユーザ定義またはプログラム可能な動作の実行にまだ適していない。すなわち、幅広い応用可能性に亘って許容可能な画像処理の改善を行うために、画像信号プロセッサ１１０＿１および１１０＿２は、様々なステンシルサイズおよび撮影条件に対して様々な処理アルゴリズムを実行できるように容易に構成可能にする必要がある。特に電池によって駆動されている装置例えばスマートフォンの場合、アルゴリズムの実行は、より多くの電力ではなくより少ない電力を消費する必要がある。しかしながら、背景で説明したように、特にステンシルに対して処理を実行する場合、画像信号プロセッサ１１０＿１および１１０＿２は、ハードワイヤードＡＳＩＣのようなものになり、少ない電力を消費するが、汎用性が低くなる、または伝統的なプロセッサのようなものになり、汎用性が高くなるが、より多くの電力を消費する。
【００２０】
図１ｃを参照して、さらに他のデータフローシナリオにおいて、アプリケーションプロセッサ１０１上の埋め込み型画像信号プロセッサ１１０は、画像処理の目的に大部分または完全にバイパスされ（使用されず）、主に統計値の生成１１６のみに使用される。この場合、カメラ１０９からの未処理画像データ１１４は、ＣＰＵコア１０２上で実行するプログラムコードによる後続処理のために、メインメモリに書き込まれる。ＣＰＵコア１０２上で実行するカメラドライバソフトウェア１１１は、未処理画像データから、例えば、自動ホワイトバランス、レンズ補正および色補正を制御するための制御信号１１７を生成する。例えば、埋め込み型画像信号プロセッサ１０９の代わりに、１つ以上のＣＰＵコア１０２上で実行するオペレーティングシステム１１２内のより高いレベルのソフトウェア１１８は、未処理データに対して実際の画像処理を実行することによって、例えばＪＰＥＧ／ＭＰＥＧ画像を生成する。例えば、高レベルソフトウェア１１８は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換（例えば、高速フーリエ変換を含むフーリエ変換）を実行する。
【００２１】
この場合、埋め込み型画像信号プロセッサ１０９をバイパスする代わりに、ＣＰＵコア１０２上で画像処理を実行するという決定は、必要な処理能力およびより精巧または複雑な画像処理タスクを実行するために必要なメモリ容量の何らかの組み合わせによるものである。すなわち、ＣＰＵ処理コア１０２は、通常、埋め込み型画像信号プロセッサ１０９よりも全体の処理能力、汎用性およびメモリ割り当てが高い。そのため、より複雑な画像処理技術は、埋め込み型画像信号プロセッサ１０９ではなく、ＣＰＵコア１０２上で実行される。
【００２２】
このような精巧な画像処理技術の１つは、ＨＤＲ＋と呼ばれ、Google（登録商標）社（カリフォルニア州マウンテンビュー）が提供するAndroid（登録商標）オペレーティングシステムを有するシステムのコンポーネントである。この画像処理技術は、カメラ１０９からの画像フレームの実行ストリームを待ち行列（queue）に入れ、待ち行列内のフレームに対して特定の処理を実行する。例えば、待ち行列内のより多くの画像フレームを使用して画像の露出不足部分を撮影し、待ち行列内のより少ない画像フレームを使用して画像の露出過度部分を撮影する。異なる部分をブレンドすることによって、画像撮影プロセスの全体的なダイナミックレンジ（強い信号および弱い信号の両方を撮影する能力）を強化する。別の例として、画像および／またはカメラの動きによるブレを低減するために、ＨＤＲ＋は、待ち行列内の画像を各々分析することによって、最もブレのないベストショットを決定する。また、ＨＤＲ＋は、ＲＧＢをＹＵＶ、Ｙ′ＵＶ、ＹＣｂＣｒ、または人間の知覚を考慮した他の色空間形式にフォーマットする。しかしながら、上記で示唆したように、処理コア１０２などの従来の汎用プロセッサ上で複雑な処理を実行する場合、装置の消費電力が増加する。
【００２３】
２．０  新しい画像プロセッサアーキテクチャ
当技術分野で知られているように、プログラムコードを実行するための基本的な回路構造は、実行ステージおよびレジスタ空間を含む。実行ステージは、命令を実行するための実行ユニットを含む。実行される命令の入力オペランドは、レジスタ空間から実行ステージに提供される。実行ステージにおいて命令を実行することによって生成された結果は、レジスタ空間に書き込まれる。
【００２４】
従来のプロセッサ上でソフトウェアスレッドの実行は、実行ステージの全体に亘って一連の命令を順次に実行する必要がある。最も一般的には、単一の入力オペランドセットから単一の結果を生成するという意味において、これらの処理は「スカラー」である。「ベクトル」プロセッサの場合、実行ステージによる命令の実行は、入力オペランドセットのベクトルから、結果のベクトルを生成する。
【００２５】
図２は、ハードウェアの２次元シフトレジスタアレイ２０２に結合されたハードウェアの実行レーンアレイ２０１を含む独特な画像プロセッサアーキテクチャ２００の命令実行リソースおよびレジスタリソースを示す。図２のプロセッサアーキテクチャにおいて、実行レーンアレイ２０１内の各実行レーンは、プロセッサ２００によってサポートされる命令セットの実行に必要な実行ユニットを含む個別の実行ステージとして見なすことができる。様々な実施形態において、各実行ステージは、同一のマシンサイクルに実行する同一の命令を受信する。したがって、プロセッサは、２次元の単一命令多重データ（ＳＩＭＤ）プロセッサとして動作する。
【００２６】
また、各実行レーンは、２次元シフトレジスタアレイ２０２内の対応する位置に専用のレジスタ空間を有する。例えば、隅部の実行レーン２０３は、隅部のシフトレジスタ位置２０４に専用のレジスタ空間を有し、隅部の実行レーン２０５は、隅部のシフトレジスタ位置２０６に専用のレジスタ空間を有する。
【００２７】
さらに、シフトレジスタアレイ２０２は、その内容をシフトすることができる。これによって、各実行レーンは、各自のレジスタ空間から、前回のマシンサイクル中に別の実行レーンのレジスタ空間に保持された値を直接に処理することができる。例えば、＋１の水平シフトによって、各実行レーンのレジスタ空間は、左端に隣接するレジスタ空間から値を受け取る。水平軸に沿って左右の方向に且つ垂直軸に沿って上下の方向に値をシフトする能力によって、プロセッサは、画像データのステンシルを効率的に処理することができる。すなわち、従来のプロセッサは、ステンシルを処理するときに同一のデータ値を複数回に読み取る傾向があるため、電力消費を増加する。対照的に、図２のプロセッサアーキテクチャは、メモリから値を読み取ると、レジスタ空間に残っているうちに、何度も再利用するように構成されている。
【００２８】
図１のプロセッサ２００の様々な処理の実施形態によれば、実行レーンアレイ２０１の各実行レーンは、プロセッサが生成している出力画像内の特定の位置のピクセル値を計算するように機能する。したがって、上記の３×３ステンシルの平均化の例において、入力ピクセルデータの初期ロードおよびシフトレジスタアレイ２０２内の８つのシフト処理の協調シフトシーケンスの後、実行レーンアレイ２０１の各実行レーンは、対応するピクセル位置の平均値を計算するために必要な全ての９つのピクセル値を受信して、ローカルレジスタ空間に格納する。
【００２９】
プロセッサは、プログラムコードを実行し、したがって広く構成可能／適応可能である。さらに、上記で示唆したように、画像データがメモリからレジスタ空間に呼び出され、その使用が殆ど（または完全に）なくなるまでレジスタ空間に保持されるため、プロセッサは、従来のプロセッサよりも著しく少ない電力を消費する。図２のプロセッサアーキテクチャは、２次元配列構造によって画像ステンシルを処理するように特別に構成されているため、ステンシルプロセッサとも呼ばれる。
【００３０】
３．０  新しい画像プロセッサのシステム集積
図３は、上述した実行レーンアレイおよび２次元シフトレジスタを有する画像プロセッサ３２０を含む改良したコンピューティングシステムの設計を示す。図３から見られるように、画像プロセッサ３２０およびその周辺ロジック３２１は、カメラ３０９とアプリケーションプロセッサ３０１との間に挿入される。
【００３１】
図示のように、画像プロセッサ３２０およびその周辺ロジック３２１は、個別の画像プロセッサチップ３２２として実装される。個別の画像プロセッサチップ３２２は、１つ以上のカメラ３０９から未処理の入力データを受信し、未処理のカメラデータ、処理済みカメラデータおよび／または関連する統計値のいずれかをアプリケーションプロセッサ３０１に提供する。破線の境界線３２３は、いくつかの実施形態において画像プロセッサ３２０およびその周辺ロジック３２１をアプリケーションプロセッサ３０１に集積することができることを示している。図示されていないが、他の実施形態において、画像プロセッサ３２０およびその周辺ロジック３２１は、カメラ３０９のうちの１つに集積されてもよい（他の「クライアント」カメラは、画像プロセッサを備えた「ホスト」カメラに未処理データを送信する）。したがって、画像プロセッサ３２０およびその周辺ロジック３２１は、一般的に画像プロセッサユニット３２２と呼ばれる。しかしながら、簡単化のために、以下の説明における実施形態において、画像プロセッサ３２０およびその周辺ロジック３２１は、個別の半導体チップ３２２として実装される。
【００３２】
様々な構成において、画像プロセッサ３２０は、アプリケーションプロセッサ３０１および／またはアプリケーションプロセッサ３０１の汎用ＣＰＵコアに集積された従来の埋め込み型画像信号プロセッサ３１０に比べて、より低い電力消費、より高い処理性能および／またはより高い汎用性で、カメラ３０９によって生成された未処理画像データに対して画像処理タスクを実行することができる。なお、汎用処理コア３０２、メインメモリコントローラ３３０およびメインメモリ３３１は、コンピューティングシステム全体のホストシステムの主なコンポーネントとして見なすことができる。すなわち、コンピューティングシステム全体は、通常、汎用処理コア３０２および（メインメモリコントローラ３３０およびメインメモリ３３１を含む）メインメモリサブシステムを備えるホストシステムを含むと見なすことができ、ディスプレイ、画像プロセッサユニット３２２およびカメラ３０９などの他の周辺装置は、ホストシステムに結合しているコンポーネントである。
【００３３】
図４ａ〜４ｈは、画像プロセッサおよびその周辺ロジックのいくつかの可能な構成および使用を詳細に示している。説明を簡単にするために、画像プロセッサ４２０およびその周辺ロジック４２１は、画像プロセッサチップ４２２としてまとめて呼ばれる。しかしながら、留意すべきことは、画像プロセッサチップ４２２の回路をアプリケーションプロセッサ４０１に集積することができ、またはカメラ４０９のうちの１つに集積することができることである。
【００３４】
また、図４ａ〜４ｈは、３つのカメラ４０９＿１、４０９＿２および４０９＿３を有するシステムを示している。この場合、システムは、例えば、スマートフォンに対応する。スマートフォンの片側には、１つのカメラ４０９＿１が設けられ、スマートフォンの反対側には、（例えば、立体画像の撮影、広い視野の画像および狭い視野の画像の撮影、カラー画像およびモノクロ画像の撮影およびＳ／Ｎ比の改善を行うために）２つのカメラ４０９＿２および４０９＿３が設けられる。
【００３５】
したがって、図４ａ〜４ｈの実施形態において、画像プロセッサチップ４２２は、（例えば、３つの別個のＭＩＰＩ入力として実装され得る）３つの入力４３１＿１、４３１＿２および４３１＿３と、（例えば、２つの別個のＭＩＰＩ出力として実装され得る）２つの出力４３２＿１および４３２＿２とを有し、例えば、アプリケーションプロセッサ４０１上の一対の埋め込み型画像信号プロセッサ４１０＿１および４１０＿２に入力ストリームを提供する。また、以下でさらに説明するように、画像プロセッサチップ４３２は、周辺Ｉ／Ｏインターフェイス４３３（例えば、ＰＣＩｅインターフェイス）を含む。したがって、画像プロセッサチップ４３２は、例えばコプロセッサとして、１つ以上のアプリケーションプロセッサの汎用ＣＰＵコア４０２によって使用されてもよい。
【００３６】
図４ａから見られるように、画像プロセッサ４２０を使用しない第１のバイパスモードが示されている。この場合、画像プロセッサチップは、１つの入力４３１＿１で１つのカメラ４０９＿１から未処理データ４５１を受け取り、同一の未処理データ４５１を１つの出力４３２＿１からアプリケーションプロセッサ４０１上の画像信号プロセッサ４１０＿１に転送する。図４ａの構成によって、システムは、例えば、図１ｂに関して上述した従来のシステム構成のいずれかに逆戻りすることができる。この場合、アプリケーションプロセッサ４０１およびソフトウェアドライバ４１１は、図１ｂに関して上述したように動作する。
【００３７】
図４ｂは、複数の異なるバイパス構成をサポートする画像プロセッサチップの多様な能力を示している。図４ｂに示すように、画像プロセッサチップ４２２は、３：２マルチプレクサとして見なすことができる。この３：２マルチプレクサは、チップの３つのＭＩＰＩ入力４３１＿１、４３１＿２および４３１＿３のいずれかに提供された未処理のカメラデータをチップの２つの出力４３２＿１および４３２＿２のいずれかにルーティングすることができる。なお、この画像プロセッサチップは、入力４３１＿１、４３１＿２および４３１＿３のうちの１つで受信した単一の入力画像を出力４３２＿１および４３２＿２の２つに（および図４ｂに明示的に示されていない周辺インターフェイス４３３に）同時にルーティングするブロードキャスト構成を含む。図４ｂは、入力４３１＿１、４３１＿２および４３１＿３でそれぞれ受信した２つ以上の入力画像を２つ以上の出力４３２＿１、４３２＿２および４３３にそれぞれルーティングする（例えば、入力４３１＿１で受信した第１の入力画像ストリームを出力４３２＿１にルーティングし、同時に入力４３１＿２で受信した第２の入力画像ストリームを出力４３２＿２にルーティングする）並列配置を含むように解釈することもできる。
【００３８】
図４ｃから見られるように、図４ａおよび４ｂのバイパスモードとは異なり、画像プロセッサ４２０は、未処理の画像ストリームからの画像を処理するために使用され、一方、アプリケーションプロセッサ４０１上の画像信号プロセッサ４１０＿２は、画像の統計値を処理するために使用される。この場合、カメラ４０９＿２からの未処理画像データは、画像プロセッサチップ４２２内の（画像処理のために）画像プロセッサ４２０に送られ、アプリケーションプロセッサ４０１による受信のために出力４３２＿２に送られる。図４ｃの構成において、画像プロセッサ４２０は、画像信号プロセッサの画像処理アルゴリズム（オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換（例えば、高速フーリエ変換を含むフーリエ変換））を効果的に実行して、例えば、ＪＰＥＧもしくはＴＩＦＦ静止画像またはＭＰＥＧビデオ画像を画像プロセッサチップの周辺インターフェイス４３３に提供する。
【００３９】
図４ｃの特定の実施形態において、処理画像がアプリケーションプロセッサの埋め込み型画像信号プロセッサ４１０＿１および４１０＿２の「前」に生成されるため、画像プロセッサチップ４２２は、処理画像を周辺インターフェイス４３３からアプリケーションプロセッサに送信する。アプリケーションプロセッサ４０１は、１つの標準周辺インターフェイス、例えばＰＣＩｅインターフェイス４３４を介して、処理画像を受信する。カメラドライバソフトウェア４１１は、統計値および画像を処理する。図４ｃには示されていないが、カメラドライバソフトウェア４１１は、受信した画像および統計値に対して実行した処理に基づいて、カメラおよび画像プロセッサ４２０に制御信号を送信する。
【００４０】
図４ｄは、同一のシステム上で同時に動作するように、図４ａのバイパスモードと図４ｃの画像プロセッサ構成とを組み合わせた別の構成を示している。この場合、図４ａのバイパスモードは、例えば、第１のカメラ４０９＿１に使用されてもよく、別個の画像プロセッサは、第２のカメラ４０９＿２または（例えば、立体画像処理を実現するための）第２のカメラ４０９＿２および第３のカメラ４０９＿３からの画像を処理するために使用されてもよい。
【００４１】
この場合、アプリケーションプロセッサ４０１上の１つの画像信号プロセッサ４１０＿１は、第１のカメラ４０９＿１の画像および統計値の両方を処理するが、アプリケーションプロセッサ４０１上の第２の埋め込み型画像信号プロセッサ４１０＿２は、第２のカメラ４０９＿２の統計値または第２のカメラ４０９＿１および第３のカメラ４０９＿２の統計値のみを処理する。したがって、第１のカメラの未処理データは、画像プロセッサチップ４２２の第１の出力４３２＿１から送られ、第２（または第２および第３）のカメラの未処理データは、画像プロセッサチップ４２２の第２の出力４３２＿２から送られる。
【００４２】
図４ｄの構成において、第１のカメラ４０９＿１のドライバソフトウェア４１１＿１は、第１のカメラと、第１のカメラの画像および統計値を処理するための埋め込み型画像信号プロセッサ４１０＿１とに制御信号を送信する。同時に、第２のカメラ４０９＿２（または第２のカメラ４０９＿２および第３のカメラ４０９＿３）のドライバソフトウェア４１１＿２は、第２のカメラ４０９＿２（または第２のカメラ４０９＿２および第３のカメラ４０９＿３）と、画像プロセッサチップ４２２上の画像プロセッサ４２０とに制御信号を送信する。
【００４３】
図４ｅから見られるように、個別の画像プロセッサは、画像の処理および統計値の生成に使用される。この場合、処理画像および統計値の両方は、出力４３２＿１および４３２＿２のいずれかではなく、周辺インターフェイス４３３／４３４（例えばＰＣＩｅ）を介してアプリケーションプロセッサに転送することができる。図４ｅの構成において、カメラドライバは、画像プロセッサ４２０から受信した処理画像および統計値に基づいて、カメラおよび画像プロセッサ４２０に制御信号を送信する。図示されていないが、図４ｅの構成は、例えば、図４ａのバイパス構成と同時に組み合わせることができる。これによって、アプリケーションプロセッサ４０１の埋め込み型画像信号プロセッサ４１０＿１または４１０＿２を用いて、第１のカメラ４０９＿１からの画像および統計値を処理すると共に、個別の画像プロセッサを用いて、第２のカメラ４０９＿２（または第２のカメラ４０９＿２および第３のカメラ４０９＿３）からの画像および統計値を処理することができる。
【００４４】
上記で示唆したように、画像プロセッサチップ４２２上の画像プロセッサ４２０を用いてカメラからの未処理画像を処理するための任意の構成は、画像プロセッサの低能力２次元アレイアーキテクチャを活用して、画像データのステンシルを処理することができる。例示として、ステンシルを処理することによって、個別の画像プロセッサ上で、例えば、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピング、時間−周波数変換（例えば、高速フーリエ変換を含むフーリエ変換）のいずれかを実行することができる。
【００４５】
また、画像プロセッサ４２０上で上述したＨＤＲ＋などのより複雑な画像処理アルゴリズムを実行する場合に、アプリケーションプロセッサ４０１の１つ以上の汎用ＣＰＵコア４０２上でこれらのアルゴリズムを実行する場合に比べて、著しく少ない電力を消費しながら、アルゴリズムを実施することができる。例えば、ＨＤＲ＋モードをサポートするために、画像の連続ストリームを、画像プロセッサチップのローカルメモリ（図示を簡単にするために、図４ａ〜４ｇに示されていない）の処理行列に入れることができる。次に、画像プロセッサ４２０は、画像を整列し、より多くの露出不足部分をより少ない過度露出部分と合併することによって、高ダイナミックレンジの画像処理チャネルをもたらすことができる。さらに、画像プロセッサ４２０は、ローカルメモリ内の待ち行列内の多数の画像を分析することによって、カメラまたは撮影される対象物の動きによる最小限のブレを有する最良の静止画を決定することができる。画像プロセッサは、ＲＧＢ形式の未処理データをＹＵＶ、Ｙ′ＵＶ、ＹＣｂＣｒ、または人間の知覚を考慮した他の色空間形式に変換することもできる。
【００４６】
追加の複雑な画像処理タスクは、例えば、２つのカメラからの画像データを処理することによって、例えば、立体画像の撮影、広い視野の画像および狭い視野の画像の撮影、カラー画像およびモノクロ画像の撮影およびＳ／Ｎ比の改善を実現するデュアルカメラ融合（dual camera fusion）を含む。より複雑な画像処理タスクは、ニューラルネットワーク（例えば、畳み込みニューラルネットワーク、深層ニューラルネットワーク、リカレントニューラルネットワークまたは長短期記憶ネットワーク）を実行することによって、例えば、顔検出、顔認識、製品認識（特定の市販製品の認識）、シーン認識および／または言語翻訳などの機械学習機能を実現することを含む。さらに、少なくとも図４ｅの構成に関して、画像プロセッサ４２０は、配列されたハードウェアアーキテクチャを有するため、大量の電力を消費することなく統計値を計算することができる。
【００４７】
特に図４ｅには示されていないが、様々な構成において、画像プロセッサ４２０によって生成された処理画像は、インターフェイス４３３ではなく、出力４３２＿１および４３２＿２のいずれかまたは両方に送られる。画像信号プロセッサ４１０＿１および４１０＿２は、処理画像をさらに処理するまたはバイパスすることができる。後者の場合、出力４３２＿１および４３２＿２から受信した処理画像は、例えば、システム／メインメモリにまたはディスプレイに直接に転送されてもよい。
【００４８】
図４ｆは、画像プロセッサ４２０が未処理の入力情報を処理し、プロセッサの出力４３２＿２に送信される未処理の出力情報または処理画像を出力する別の構成を示している。図４ｆの構成において、例えば、画像プロセッサチップ４２２上の画像プロセッサ４２０を用いていくつかの画像信号処理タスクを実行すると共に、アプリケーションプロセッサ上の埋め込み型画像信号プロセッサ４１０＿２を用いて他の画像信号処理タスクを実行するまたは画像信号プロセッサ４１０＿２をバイパスする。
【００４９】
図４ｇは、さらに別の構成を示す。この構成において、個別の画像処理チップは、埋め込み型汎用プロセッサ４３５を備える。これによって、少なくとも１つのカメラ４０９＿１、４０９＿２および４０９＿３のファームウェア／ドライバソフトウェア４３６は、アプリケーションプロセッサ４０１の汎用ＣＰＵコア４０２の上ではなく、画像プロセッサチップ４２２上で直接実行することができる。図４ｇは、画像プロセッサ４２０を用いて画像を処理するだけでなく統計値を生成するという図４ｅの画像プロセッサチップ構成を含む。埋め込み型プロセッサ４３５は、（例えば、直接にまたは画像プロセッサチップのローカルメモリを介して）画像プロセッサ４２０によって生成された画像および統計値の両方にアクセスすることができる。したがって、埋め込み型プロセッサ４３５上で実行するファームウェア／ドライバソフトウェア４３６は、画像プロセッサチップから、画像プロセッサおよび１つ以上のカメラの両方の制御信号をローカルに生成することができる。再び、画像プロセッサによって生成された処理画像および／または統計値は、出力４１０＿１および４１０＿２のいずれかまたは両方に送られてもよい。
【００５０】
なお、図４ｇの手法は、例えば、図４ａの手法と組み合わせることができる。これによって、例えば、１つ以上のカメラの画像、統計値および制御情報は、画像プロセッサチップ４２２上でローカルに生成され（図４ｇ）、別のカメラの画像、統計値および制御情報は、アプリケーションプロセッサ４０１上の画像信号プロセッサ４１０＿１および４１０＿２のうちの１つによって生成される。
【００５１】
実際には、図４ａ〜４ｇを参照して上記で説明した特定のカメラまたは１対のカメラののデータフローを互いに組み合わせることによって、無数のシステムおよび画像プロセッサチップの可能な構成をもたらすことができる。すなわち、図４ａ〜４ｇを参照して上記で図示または説明した特定のカメラ（または１対のカメラ）のデータフローは、第１のカメラ（または１対のカメラ）に使用することができる。構成されたデータフローは、図４ａ〜４ｇを参照して上記で説明した特定のカメラ（または１対のカメラ）のデータフローと組み合わせて、別の異なるカメラ（または１対のカメラ）に使用することができる。これは、同一のデータフロー構成の複数のインスタンスを含む（例えば、図４ｇの構成は、２つの異なるカメラの各々のために一回ずつ、２回にインスタンス化することができる）。したがって、強調すべきことは、図４ａ〜４ｇは、全ての可能な構成のうち、限られた一部のみを示していることである。
【００５２】
図４ｈは、画像プロセッサ４２０をアプリケーションプロセッサ４０１の１つ以上のＣＰＵコア４０２のコプロセッサとして使用する別の構成を示す。図４ｈの構成において、カメラから未処理画像を受信してその場で未加工データを処理するの代わりに、入力データは、例えば、アプリケーションプロセッサ４０１のいずれか／全ての汎用ＣＰＵコア４０２上で実行するアプリケーションソフトウェア４１２によって作成される。この場合、アプリケーションプロセッサ４０１の汎用処理コアおよびメインメモリサブシステムは、より一般的に、画像プロセッサの共同処理機能を呼び出すホストシステムと見なすことができる。アプリケーションソフトウェア４１２が作業中のデータをさらに処理するために非常に効率的な画像処理エンジンを必要とするときに、アプリケーションソフトウェア４１２は、画像プロセッサ４２０を呼び出してデータを処理する。
【００５３】
したがって、画像プロセッサ４２０によって処理されている入力データは、例えば、コンピューティングシステムのメインメモリ４０７から、画像プロセッサのローカルメモリ（図４ｈには示されていない）に送られる。また、アプリケーションソフトウェア４１２は、実行される特定のアルゴリズム（例えば、前述した機械学習プロセスのいずれかを実施するための畳み込みニューラルネットワークアルゴリズム）を記述する１つ以上のコマンドを画像プロセッサ４２０に送信する。次に、画像プロセッサ４２０は、入力データに対して特定のアルゴリズムを実行することによって、結果の出力データを生成する。この出力データは、メインメモリ４０７に転送される前に画像プロセッサチップのローカルメモリに格納されてもよい（または出力データは、メインメモリ４０７に直接転送されてもよい）。画像プロセッサ４２０によって生成された結果の出力データがメインメモリ４０７に格納されると、アプリケーションソフトウェア４１２は、プログラムの実行を継続し、結果の出力データを処理することができる。なお、個別の画像プロセッサとＣＰＵコアとの間のデータおよびコマンドの通信は、周辺インターフェイス４３３／４３４を介して行われてもよい。
【００５４】
なお、図４ｈのコプロセッサ構成は、図４ａ〜４ｇを参照して上記で説明した様々なカメラの１つ以上のデータフローと組み合わせることができる。これによって、画像プロセッサチップ４２２は、未処理カメラ画像の処理および共同処理を同時にサポートすることができる。
【００５５】
図５は、画像プロセッサチップ５２２およびそのローカルメモリ５４０の実施形態を示す。図５から見られるように、チップ５２２は、画像プロセッサ５２０を含み、画像プロセッサ５２０は、例えば、図２を参照して上述したように、各々が実行レーンアレイおよび２次元シフトレジスタアレイを含む複数のステンシルプロセッサを備える。チップ５２２内の周辺回路は、図４ａ〜４ｈを参照して上述した様々な構成をサポートする。
【００５６】
この場合、画像プロセッサチップは、例えば、３つの異なるカメラからＲＧＢストリームを同時に受信するための３つの未処理カメラ画像入力５３１＿１、５３１＿２および５３１＿３を含む。また、３つの入力の各々は、一対の出力マルチプレクサ５３７＿１、５３７＿２およびメモリコントローラ５３８にルーティングされる。したがって、３つの入力５３１＿１、５３１＿２および５３１＿３のいずれかは、画像プロセッサ５２０に直接供給されることに加えて、（例えば、バイパスモード時に）出力５３２＿１、５３２＿２に直接転送することができ、または（例えば、画像フレームを待ち行列に入れるために）ローカルメモリ５４０に直接転送することができる。メモリコントローラ５３８は、入力５３１＿１、５３１＿２または５３１＿３、画像プロセッサ５２０、または周辺機器インターフェイス５３３のいずれかから、ローカルメモリ５４０に対するアクセス要求を調停する。上述したように、（例えば、コプロセッサモードの場合）処理済みの出力データをアプリケーションプロセッサに送信するおよび／またはアプリケーションプロセッサから入力データまたはコマンドを受信するために使用される周辺機器インターフェイス５３３は、画像プロセッサ５２０およびメモリコントローラ５３８の両方に接続され、アプリケーションプロセッサと、画像プロセッサ５２０および／またはローカルメモリ５４０との間の直接通信をサポートする。また、メモリコントローラ５３８は、１対の出力ポート５３２＿１および５３２＿２に接続され、ローカルメモリ５４０から出力ポート５３２＿１および５３２＿２のいずれかに情報を転送することもできる。
【００５７】
また、画像プロセッサチップ５２２は、埋め込み型（例えば、汎用）プロセッサ５３５を含む。様々な実施形態において、埋め込み型プロセッサ５３５は、例えば、アプリケーションプロセッサ上で実行しているシステム構成ファームウェア／ソフトウェアによって設定された画像プロセッサチップ５２２の構成レジスタ空間に応じて、画像プロセッサチップ５２２の内部設定を管理する（例えば、図４ａ〜４ｈの画像プロセッサユニットのいずれかの構成または画像プロセッサユニットの他の構成をもたらす）。図４ｈを参照して上述したように、埋め込み型プロセッサ５３５は、画像プロセッサ５２０および／またはカメラのファームウェア／ドライバソフトウェアを実行することによって、これらのタスクをアプリケーションプロセッサの汎用ＣＰＵコアからオフロードすることができる。
【００５８】
なお、各々の出力ポート５３２＿１、５３２＿２および周辺インターフェイス５３３は、画像プロセッサチップ５２２の出力を含むと見なされてもよい。上述のように、一実施形態において、出力ポート５３２＿１および５３２＿２は、ＭＩＰＩインターフェイスとして実装され、周辺インターフェイス５３３は、ＰＣＩｅインターフェイスとして実装される。通常、ＭＩＰＩインターフェイスは、主に一方向のトラフィックフローをサポートする低レベルの物理層インターフェイス（単方向インターフェイス）であり、一方、ＰＣＩｅインターフェイスは、高レベルの機能（例えば、データリンクおよびトランザクション層）を含み、２方向（双方向）のトラフィックフローを容易にサポートする。それにもかかわらず、各々の出力ポート５３２＿１、５３２＿２および周辺インターフェイス５３３は、画像プロセッサチップ５２２から情報を送信することができるため、画像プロセッサチップ５２２の出力を含むものとして特徴付けることができる。
【００５９】
なお、様々な構成において、同一の出力を介して、異なる出力ストリームを多重化すること（例えば、周辺インターフェイス５３３を介して、異なる出力ストリームを転送すること）ができる。さらに、様々な構成において、複数の出力から同一の出力ストリームをブロードキャストできる（例えば、入力５３１＿１、５３１＿２および５３１＿３の１つから受信した単一の出力ストリームは、複数の出力５３２＿１、５３２＿２および５３３から送信することができる）。同様に、さらに別の可能な構成において、（例えば、１つの入力から受信した）同一の入力ストリームを出力ポートと画像プロセッサ５２０および／またはメモリインターフェイス５３８の両方に直接送信することができる。さらに、上述したように、異なる入力から各々受信した２つ以上の異なる入力ストリームを２つ以上の異なる出力に同時にルーティングすることができる（例えば、入力５３１＿１から受信した入力ストリームを出力５３２＿１にルーティングすると共に、入力５３１＿２から受信した入力ストリームを出力５３２＿２にルーティングする）。
【００６０】
さらに、異なる入力から各々受信した２つ以上の異なる入力画像ストリームは、直接におよび／または間接的に（メモリインターフェイス５３８およびメモリ５４０を介して）画像プロセッサ５２０にルーティングすることができる。画像プロセッサ５２０は、例えば、２つの入力画像ストリームを処理することによって、２つの異なる処理済み出力画像ストリームをそれぞれ生成し、２つの異なる出力（例えば、出力５３２＿１および出力５３２＿２）にそれぞれ送信することができる。代替的に、画像プロセッサ５２０は、例えば、複数の入力画像ストリームを処理することによって、単一の出力画像ストリームを生成し、１つ以上の異なる出力にルーティングすることができる。さらに、入力５３１＿１、５３１＿２および５３１＿３の１つから単一の入力画像ストリームを受信し、直接にまたは間接的に画像プロセッサ５２０にルーティングすることができる。その後、画像プロセッサは、入力画像ストリームを処理することによって、複数の処理済みの出力画像ストリームを生成することができる。次いで、複数の処理済みの出力画像ストリームは、画像処理チップ５２２の異なる出力（例えば、出力５３２＿１および５３２＿２）にそれぞれルーティングすることができる。
【００６１】
図面において、線５４５＿１および５４５＿２の間の回路は、画像プロセッサチップ５２２が上述した様々な／異なる構成および関連する内部データフローをサポートできるようにするための画像プロセッサチップ５２２の内部ネットワークとして見なすことができる。様々な実施形態において、埋め込み型プロセッサ５３５を介して適切なネットワーク構成パラメータを設定することによって、ネットワークの特定のルーティングスキームを構成することができる。図示を簡単にするために、図５に示されていないが、ネットワークは、入力５３１＿１、５３１＿２および５３１＿３のいずれかと周辺インターフェイス５３３との間のルーティング経路を含むことができる。これによって、周辺インターフェイス５３３は、例えば、入力５３１＿１、５３１＿２および５３１＿３のいずれかから受信した入力画像ストリームのバイパス構成の出力として使用することができる。
【００６２】
様々な実施形態において、画像プロセッサによって実行されるプログラムコードは、不揮発性記憶装置（例えば、不揮発性メモリ装置、ハードディスクドライブ）に格納されてもよい。不揮発性記憶装置は、ホストシステムのメイン不揮発性記憶装置、または、例えば画像プロセッサユニットに主に関連している不揮発性記憶要素である。起動時および／または実行時の必要に応じて、プログラムコードは、例えば、不揮発性記憶装置から画像プロセッサが実行するメモリ（例えば、メモリ５４０）にロードされる。不揮発性メモリは、画像プロセッサユニットの内部または外部に結合されてもよい。
【００６３】
図６は、上述の画像プロセッサユニットを動作させる方法を示す。この方法は、第１の入力画像を画像プロセッサユニットの第１の出力にルーティングするステップ６０１を含む。この方法は、第２の入力画像を、実行レーンアレイおよび２次元シフトレジスタアレイを含む画像プロセッサにルーティングするステップ６０２を含み、画像プロセッサは、実行レーンアレイおよび２次元シフトレジスタアレイを含む。この方法は、画像プロセッサ上で画像信号処理プログラムコードを実行することによって、処理画像を生成するステップ６０３を含み、プログラムコードの実行により、２次元シフトレジスタアレイは、実行レーンアレイによって実行されている画像信号演算処理の間にデータをシフトする。方法は、処理画像を画像プロセッサユニットの第２の出力にルーティングするステップ６０４を含む。
【００６４】
４．０  画像プロセッサおよびステンシルプロセッサの実施形態
図７は、画像プロセッサのハードウェアアーキテクチャ７００の実施形態を示す。画像プロセッサは、例えば、模擬環境内で仮想プロセッサ用に書かれたプログラムコードを、ハードウェアプロセッサによって実際に実行されるプログラムコードに変換するためのコンパイラの対象とされてもよい。図７に示すように、アーキテクチャ７００は、複数のラインバッファユニット７０１＿１〜７０１＿Ｍを含み、これらのラインバッファユニットは、ネットワーク７０４（例えば、オンチップスイッチネットワーク、オンチップリングネットワークまたは他の種類のネットワークを含むネットワークオンチップ（ＮＯＣ））を介して、複数のステンシルプロセッサユニット７０２＿１〜７０２＿Ｎおよび対応するシート生成部ユニット７０３＿１〜７０３＿Ｎに相互接続される。一実施形態において、任意のラインバッファユニットは、ネットワーク７０４を介して、任意のシート生成部および対応するステンシルプロセッサに接続することができる。
【００６５】
一実施形態において、プログラムコードは、コンパイルされ、対応するステンシルプロセッサ７０２にロードされ、ソフトウェア開発者によって以前に定義された画像処理動作を実行する（プログラムコードは、例えば、設計および実装に応じて、ステンシルプロセッサに関連するシート生成部７０３にロードされてもよい）。少なくともいくつかの例において、第１のパイプラインステージ用の第１のカーネルプログラムを第１のステンシルプロセッサ７０２＿１にロードし、第２のパイプラインステージ用の第２のカーネルプログラムを第２のステンシルプロセッサ７０２＿２にロードすることによって、画像処理パイプラインを実現することができる。第１のカーネルは、パイプラインの第１ステージの機能を実行し、第２のカーネルは、パイプラインの第２ステージの機能を実行する。追加の制御フロー方法をインストールして、出力画像データをパイプラインの１つのステージからの次のステージに渡す。したがって、例えば、オフセット補正ステージ、ノイズ低減ステージ、自動ホワイトバランスステージ、デモザイク処理ステージ、シャープニングステージ、レンズシェーディング補正ステージ、色補正ステージ、トーンマッピングステージおよび時間−周波数変換ステージを有するように、画像処理パイプラインを容易に構築することができる。
【００６６】
他の構成において、画像プロセッサは、同様のカーネルプログラムコードを動作させる２つ以上のステンシルプロセッサ７０２＿１および７０２＿２を備える並列マシンとして実現されてもよい。例えば、各々が同様の機能を実行する複数のステンシルプロセッサにフレームを分散することによって、高密度且つ高データレートの画像データストリームを処理することができる。
【００６７】
さらに他の構成において、独自のプログラムコードのカーネルを有するように各々のステンシルプロセッサを構成し、出力画像をＤＡＧ設計における１つのカーネルから次のカーネルの入力に転送するように適切な制御フローフックをハードウェアに構成することによって、本質的に任意カーネルのＤＡＧをハードウェアプロセッサにロードすることができる。
【００６８】
一般的な流れとして、画像データのフレームは、マクロＩ／Ｏユニット７０５によって受信され、フレームごとに１つ以上のラインバッファユニット７０１に渡される。特定のラインバッファユニットは、画像データのフレームを「ライングループ」と呼ばれる画像データのより小さな領域に解析し、ネットワーク７０４を介してライングループを特定のシート生成部に渡す。単一の完全なまたは「フル」ライングループは、例えば、フレームの複数の連続した完全な行（row）または列（column）のデータで構成することができる（簡単化のために、本明細書では主に連続した行と称する）。シート生成部は、画像データのライングループを「シート」と呼ばれる画像データのより小さな領域にさらに解析し、そのシートを対応するステンシルプロセッサに提供する。
【００６９】
単一の入力を有する画像処理パイプラインまたはＤＡＧフローの場合、一般に、入力フレームは、同一のラインバッファユニット７０１＿１に転送され、ラインバッファユニット７０１＿１は、画像データをライングループに解析し、これらのライングループをシート生成部７０３＿１（シート生成部７０３＿１に対応するステンシルプロセッサ７０２＿１がパイプライン／ＤＡＧ内の第１のカーネルのコードを実行している）に転送する。ライングループに対するステンシルプロセッサ７０２＿１の処理が完了すると、シート生成部７０３＿１は、出力ライングループを「下流」のラインバッファユニット７０１＿２に送信する（一部の使用例において、出力ライングループは、以前にライングループを送信した同様のラインバッファユニット７０１＿１に送信されてもよい）。
【００７０】
その後、他のシート生成部およびステンシルプロセッサ（例えば、シート生成部７０３＿２およびステンシルプロセッサ７０２＿２）上でそれぞれ実行するパイプライン／ＤＡＧの次のステージ／動作を表す１つ以上の「消費側」カーネルは、下流ラインバッファユニット７０１＿２から、第１のステンシルプロセッサ７０２＿１によって生成された画像データを受信する。このようにして、第１のステンシルプロセッサ上で動作する「作成側」カーネルは、出力データを、第２のステンシルプロセッサ上で動作する「消費側」カーネルに転送し、消費側カーネルは、パイプラインまたはＤＡＧ全体の設計と整合する作成側カーネルの後に次のタスクセットを実行する。
【００７１】
ステンシルプロセッサ７０２は、画像データの複数の重なり合うステンシルを同時に処理するように設計されている。複数の重なり合うステンシルおよびステンシルプロセッサ内部ハードウェアの処理能力は、事実上、シートのサイズを決定する。この場合、ステンシルプロセッサ７０２において、実行レーンのアレイは、同時に動作して、複数の重なり合うステンシルによって覆われた画像データの表面領域を同時に処理する。
【００７２】
以下でより詳細に説明するように、様々な実施形態において、画像データのシートは、ステンシルプロセッサ７０２内の２次元レジスタアレイ構造にロードされる。シートおよび２次元レジスタアレイ構造を使用することによって、例えば単一のロード動作で大量のデータを大量のレジスタ空間にロードした直後、実行レーンアレイを用いてデータに対して処理タスクを直接に実行することによって、電力消費を効果的に改善すると考えられている。さらに、実行レーンアレイおよび対応するレジスタアレイを使用することによって、容易にプログラム可能／設定可能な異なるステンシルサイズを提供する。
【００７３】
図８ａ〜８ｅは、ラインバッファユニット７０１の解析動作およびシート生成部ユニット７０３のより細かい解析動作並びにシート生成部７０３に結合されるステンシルプロセッサ７０２のステンシル処理動作の両方の高レベルの実施形態を示す。
【００７４】
図８ａは、画像データ８０１の入力フレームの実施形態を示す。また、図８ａは、ステンシルプロセッサに処理されるように設計された３つの重なり合うステンシル８０２（各ステンシルは、３ピクセル×３ピクセルの寸法を有する）の概要を示す。各ステンシルが出力画像データを各々生成するための出力ピクセルは、濃い黒色で強調表示されている。簡単化のために、３つの重なり合うステンシル８０２は、垂直方向にのみ重なり合うように示されている。実際には、ステンシルプロセッサは、垂直方向および水平方向の両方に重なるステンシルを有するように設計されてもよいことを認識することが適切である。
【００７５】
図８ａから見られるように、ステンシル８０２がステンシルプロセッサ内で垂直に重なり合うため、単一のステンシルプロセッサが処理することができるフレーム内に広い帯域の画像データが存在する。以下でより詳細に説明するように、一実施形態において、ステンシルプロセッサは、画像データの左から右への態様で、重なり合うステンシル内のデータを処理する（上から下の順序で次のラインセットの処理を繰り返す）。したがって、ステンシルプロセッサが処理を進めるにつれて、濃い黒色の出力ピクセルブロックの数は、水平方向に沿って右側に増加する。上述したように、ラインバッファユニット７０１は、ステンシルプロセッサが今後多数のサイクルにわたって処理するのに十分である入力フレームからの入力画像データのライングループを解析するように機能する。ライングループの例示的な図示は、陰影領域８０３として示されている。一実施形態において、ラインバッファユニット７０１は、シート生成部との間でライングループを送受信するための異なるダイナミクスを含むことができる。例えば、「完全なグループ」と呼ばれる１つのモードにおいて、画像データの全幅のラインは、ラインバッファーユニットとシート生成部との間に渡される。「事実上大量」と呼ばれる第２のモードにおいて、最初に、ライングループの全幅行（row）のサブセットが渡され、その後、残りの行（row）が、より小さい（全幅未満の）断片で順番に渡される。
【００７６】
入力画像データのライングループ８０３がラインバッファユニットによって画定され、シート生成部ユニットに渡されると、シート生成部ユニットは、ステンシルプロセッサのハードウェア制限により正確に適合するように、ライングループをより細かいシートにさらに解析する。より具体的には、以下でより詳細に説明するように、一実施形態において、各ステンシルプロセッサは、２次元シフトレジスタアレイを含む。２次元シフトレジスタアレイは、基本的に、画像データを実行レーンアレイの「下方」にシフトする。このようなシフトパターンによって、各実行レーンは、それ自身のステンシル内のデータを処理する（すなわち、各実行レーンは、それ自身のステンシルの情報を処理することによってそのステンシルの出力を生成する）。一実施形態において、シートは、２次元シフトレジスタアレイに「入力」されるまたはロードされる入力画像データの表面領域である。
【００７７】
以下でより詳細に説明するように、様々な実施形態において、実際には、任意のサイクルにおいて、２次元レジスタデータの複数の層をシフトすることができる。便宜上、本説明の多くは、単に「２次元シフトレジスタ」などの用語を用いて、シフト可能な２次元レジスタデータの１つ以上層を有する構造を指す。
【００７８】
したがって、図８ｂから見られるように、シート生成部は、まず、ライングループ８０３のシート８０４を解析し、それをステンシルプロセッサに提供する（この図において、データシートは、一般的に参照番号８０４によって示された陰影領域に対応する）。図８ｃおよび８ｄから見られるように、ステンシルプロセッサは、事実上、重なり合うステンシル８０２をシート上で左から右に移動することによって、入力画像データのシートを処理する。図８ｄに示すように、シート内のデータから出力値を計算できるピクセルの数は、使い果たされている（他のピクセル位置はシート内の情報から決定される出力値を有することができない）。簡単化のために、画像の境界領域は、無視される。
【００７９】
図８ｅから見られるように、シート生成部は、次いで、ステンシルプロセッサが継続して処理する次のシート８０５を提供する。なお、次のシートの処理を開始するときのステンシルの初期位置は、（上記の図８ｄに示すように）第１のシートの消耗点から右への次の数列である。ステンシルプロセッサが第１のシートに対する処理と同様に新たなシートを処理することにつれて、ステンシルは、新たなシート８０５で右に移動し続ける。
【００８０】
なお、出力ピクセル位置を囲むステンシルの境界領域により、第１のシート８０４のデータと第２のシート８０５のデータとの間にある程度の重複がある。シート生成部は、重複データを２回再送信することによって、この重複を簡単に処理することができる。別の実現例において、次のシートをステンシルプロセッサに供給するために、シート生成部は、ステンシルプロセッサに新たなデータのみを送信し、ステンシルプロセッサは、前のシートから重複データを再利用する。
【００８１】
図９は、ステンシルプロセッサアーキテクチャ９００の実施形態を示している。図９から見られるように、ステンシルプロセッサは、データ計算ユニット９０１、スカラープロセッサ９０２、関連メモリ９０３、およびＩ／Ｏユニット９０４を含む。データ計算ユニット９０１は、実行レーンアレイ９０５、２次元シフトアレイ構造９０６、およびアレイの特定の行（row）または列（column）に関連する別個のランダムアクセスメモリ９０７を含む。
【００８２】
Ｉ／Ｏユニット９０４は、シート生成部から受信したデータの「入力」シートをデータ計算ユニット９０１にロードし、ステンシルプロセッサからのデータの「出力」シートをシート生成部に格納するように機能する。一実施形態において、データ計算ユニット９０１へのシートデータのロードは、受信したシートを画像データの行／列に解析し、画像データの行／列を２次元シフトレジスタ構造９０６または実行レーンアレイの行／列に対応するランダムアクセスメモリ９０７にロードする必要がある（以下で詳しく説明する）。最初にシートをメモリ９０７にロードした場合、実行レーンアレイ９０５内の個々の実行レーンは、（例えば、シートのデータを処理する前のロード命令に従って）シートデータをランダムアクセスメモリ９０７から２次元シフトレジスタ構造９０６に適切にロードすることができる。（シート生成部から直接にまたはメモリ９０７から）レジスタ構造９０６へのデータシートのロードが完了すると、実行レーンアレイ９０５の実行レーンは、データを処理し、最終的に完成したデータをシートとしてシート生成部にまたはランダムアクセスメモリ９０７に直接に「書き戻す」。データをランダムアクセスメモリ９０７に「書き戻す」場合、Ｉ／Ｏユニット９０４は、ランダムアクセスメモリ９０７からデータを取り出して出力シートを形成し、シート生成部に転送する。
【００８３】
スカラープロセッサ９０２は、スカラーメモリ９０３からステンシルプロセッサのプログラムコードの命令を読み出し、その命令を実行レーンアレイ９０５内の実行レーンに発行するためのプログラムコントローラ９０９を含む。一実施形態において、データ計算ユニット９０１からＳＩＭＤのような動作をもたらすために、同様の単一命令は、実行レーンアレイ９０５内の全ての実行レーンにブロードキャストされる。一実施形態において、スカラーメモリ９０３から読み出され、実行レーンアレイ９０５内の実行レーンに発行された命令の命令フォーマットは、命令ごとに２つ以上のオペコードを含む非常に長い命令語（ＶＬＩＷ）タイプのフォーマットを含む。さらなる実施形態において、ＶＬＩＷフォーマットは、（以下に説明するように、一実施形態では２つ以上の従来のＡＬＵ演算を指定することができる）各実行レーンのＡＬＵによって実行される数学関数を指定するＡＬＵオペコードと、（特定の実行レーンまたは実行レーンセットに対する記憶操作を指定する）記憶オペコードとの両方を含む。
【００８４】
「実行レーン」という用語は、命令を実行することができる１つ以上の実行ユニットのセット（例えば、命令を実行することができる論理回路）を指す。しかしながら、様々な実施形態において、実行レーンは、単なる実行ユニットを超えて、プロセッサのような機能性を含むことができる。例えば、実行レーンは、１つ以上の実行ユニットに加えて、受信した命令をデコードする論理回路、またはＭＩＭＤに非常に類似する設計の場合、命令をフェッチおよびデコードする論理回路を含むことができる。ＭＩＭＤのようなアプローチに関して、本明細書では主に集中プログラム制御アプローチを説明してきたが、様々な代替実施形態において、（例えば、各実行レーンアレイ９０５がプログラムコードおよびプログラムコントローラを含む）より分散型アプローチを実装することもできる。
【００８５】
実行レーンアレイ９０５、プログラムコントローラ９０９および２次元シフトレジスタ構造９０６の組み合わせは、広範囲のプログラム可能な機能のために、幅広く適応可能／構成可能なハードウェアプラットフォームを提供する。例えば、アプリケーションソフトウェア開発者は、個々の実行レーンが多種多様な機能を実行することができ且つ任意の出力アレイ位置に近接する入力画像データに容易にアクセスすることができれば、多くの異なる機能および寸法（例えば、ステンシルサイズ）を有するようにカーネルをプログラミングすることができる。
【００８６】
実行レーンアレイ９０５によって処理される画像データのデータ記憶装置として機能するとは別に、ランダムアクセスメモリ９０７は、１つ以上のルックアップテーブルを保持することもできる。様々な実施形態において、１つ以上のスカラールックアップテーブルは、スカラーメモリ９０３内でインスタンス化することもできる。
【００８７】
スカラールックアップは、同様のルックアップテーブルからの同様のデータ値を同様のインデックスから実行レーンアレイ９０５内の各実行レーンに渡すことを含む。様々な実施形態において、上述したＶＬＩＷ命令フォーマットは、スカラープロセッサによって実行されるルックアップ動作をスカラールックアップテーブルに向けるスカラーオペコードを含むように拡張される。オペコードと共に使用するように指定されたインデックスは、即値オペランドであってもよく、他のデータ記憶位置からフェッチされてもよい。いずれにせよ、一実施形態において、スカラーメモリ内のスカラールックアップテーブルからのルックアップは、基本的に同一のクロックサイクル中に実行レーンアレイ９０５内の全ての実行レーンに同様のデータ値をブロードキャストすることを含む。ルックアップテーブルの使用および動作に関する追加の詳細は、以下でさらに説明する。
【００８８】
図９ｂは、上述したＶＬＩＷ命令語の実施形態を要約している。図９ｂから見られるように、ＶＬＩＷ命令語のフォーマットは、３つの別個の命令のフィールドを含む。３つの別個の命令は、１）スカラープロセッサによって実行されるスカラー命令９５１、２）実行レーンアレイ内の各々のＡＬＵによってＳＩＭＤ方式でブロードキャストされ実行されるＡＬＵ命令９５２、および３）部分的なＳＩＭＤ方式でブロードキャストされ実行されるメモリ命令９５３を含む（例えば、実行レーンアレイ内の同一の行に沿った実行レーンが同一のランダムアクセスメモリを共有する場合、異なる行の各々からの１つの実行レーンが実際に命令を実行する（メモリ命令９５３のフォーマットは、命令を実行する各行の実行レーンを特定するオペランドを含むことができる）。
【００８９】
命令語のフォーマットは、１つ以上の即値オペランド９５４のフィールドをさらに含む。命令９５１、９５２および９５３のどれがどの即値オペランド情報を使用するかは、命令フォーマットで特定することができる。また、命令９５１、９５２および９５３の各々は、それ自身に対応する入力オペランドおよび結果情報（例えば、ＡＬＵ演算用のローカルレジスタ並びにメモリアクセス命令用のローカルレジスタおよびメモリアドレス）を含む。一実施形態において、スカラー命令９５１は、実行レーンアレイ内の実行レーンが他の２つの命令９５２および９５３のいずれかを実行する前に、スカラープロセッサによって実行される。すなわち、ＶＬＩＷ命令語の実行は、スカラー命令９５１を実行する第１のサイクルと、続いて他の命令９５２および９５３を実行する第２のサイクルとを含む（なお、様々な実施形態において、命令９５２および９５３は、並列して実行されてもよい）。
【００９０】
一実施形態において、スカラープロセッサによって実行されるスカラー命令は、データ計算ユニットのメモリもしくは２Ｄシフトレジスタからシートをロードするまたはシートをそれに格納するようにシート生成部に発行されるコマンドを含む。この場合、シート生成部の動作は、ラインバッファユニットの動作またはシート生成部がスカラープロセッサによって発行されたコマンドを完了するまでにかかるサイクル数のプレランタイムの包含を妨げる他の変数に依存し得る。したがって、一実施形態において、スカラー命令９５１がシート生成部に発行されるべきコマンドに対応するか、さもなければコマンドをシート生成部７０３に発行させるＶＬＩＷ命令語は、他の２つの命令フィールド９５２および９５３に無演算（ＮＯＯＰ）命令を含む。次に、プログラムコードは、シート生成部がデータ計算ユニットからシートのロードまたはデータ計算ユニットにシートの格納を完了するまで、命令フィールド９５２および９５３のＮＯＯＰ命令ループに入る。この場合、スカラープロセッサは、コマンドをシート生成部に発行するときに、シート生成部がコマンドの完了時にリセットするインターロックレジスタのビットを設定することができる。ＮＯＯＰループの間に、スカラープロセッサは、インターロックビットのビットを監視する。スカラープロセッサが、シート生成部がそのコマンドを完了したことを検出すると、通常の実行が再開される。
【００９１】
図１０は、データ計算コンポーネント１００１の実施形態を示す。図１０から見られるように、データ計算コンポーネント１００１は、２次元シフトレジスタアレイ構造１００６の「上方」に論理的に配置された実行レーンアレイ１００５を含む。上述したように、様々な実施形態において、シート生成部によって提供された画像データのシートは、２次元シフトレジスタ１００６にロードされる。その後、実行レーンは、レジスタ構造１００６からのシートデータを処理する。
【００９２】
実行レーンアレイ１００５およびシフトレジスタ構造１００６は、互いに対して適所に固定される。しかしながら、シフトレジスタアレイ１００６内のデータを戦略的且つ協調的にシフトすることによって、実行レーンアレイ内の各実行レーンは、データ内の異なるステンシルを処理することができる。したがって、各実行レーンは、生成される出力シート内の異なるピクセルの出力画像値を決定する。図１０のアーキテクチャから、実行レーンアレイ１００５が垂直方向に隣接する実行レーンおよび水平方向に隣接する実行レーンを含むため、重なり合うステンシルが垂直方向だけでなく水平方向にも配置されることは明らかである。
【００９３】
データ計算ユニット１００１のいくつかの注目すべきアーキテクチャ上の特徴は、実行レーンアレイ１００５よりも広い寸法を有するシフトレジスタ構造１００６を含む。すなわち、実行レーンアレイ１００５の外側にレジスタ１００９の「ハロー」が存在する。ハロー１００９は、実行レーンアレイの２つの側に存在すると示されているが、実現例に応じて、実行レーンアレイ１００５の２つ未満（１つ）または２つ以上（３つまたは４つ）の側に存在してもよい。ハロー１００５は、データを実行レーン１００５の「下方」にシフトするときに、実行レーンアレイ１００５の境界の外側に溢流するデータ用の「溢流」空間を提供するように機能する。単純な例として、実行レーンアレイ１００５の右端を中心とする５×５のステンシルは、ステンシルの左端のピクセルを処理するときに、さらに右側に４つのハローレジスタ位置を必要とする。図面を簡単にするために、図１０は、名目上の実施例において、いずれか一方側（右、底）のレジスタが水平方向接続および垂直方向接続の両方を有する場合、ハローの右側のレジスタは、水平方向シフト接続のみを有し、ハローの底側のレジスタは、垂直方向シフト接続のみを有することを示している。様々な実施形態において、ハロ領域は、画像処理命令の実行に対応する実行レーンロジックを含まない（例えば、ＡＬＵが存在しない）。しかしながら、個々のハローレジスタロケーションがメモリからデータを個別にロードし、データをメモリに格納できるように、個々のメモリアクセスユニット（Ｍ）は、各々のハロー領域の位置に存在する。
【００９４】
追加の溢流空間は、アレイの各行および／または各列にもしくはその一部に結合されているランダムアクセスメモリ１００７によって提供される（例えば、ランダムアクセスメモリは、４つの実行レーン行および２つの実行レーン列に跨る実行レーンアレイの「領域」に割り当てられてもよい。簡略化のために、アプリケーションの残りの部分は、主に、行および／または列に基づく割り当てスキームを指す）。この場合、実行レーンのカーネル演算が（一部の画像処理ルーチンが必要とする場合がある）２次元シフトレジスタアレイ１００６の外側のピクセル値を処理することを必要とする場合、画像データの面は、ハロー領域１００９からランダムアクセスメモリ１００７にさらに溢流することができる。例えば、ハードウェアが実行レーンアレイの右端に位置する実行レーンの右側の４つのみの記憶素子からなるハロー領域を含む場合の６×６ステンシルを検討する。この場合、ステンシルを完全に処理するために、データをハロー１００９の右端からさらに右側にシフトする必要があるであろう。ハロー領域１００９の外側にシフトされたデータは、ランダムアクセスメモリ１００７に溢流する。以下、ランダムアクセスメモリ１００７および図９のステンシルプロセッサの他の適用例をさらに説明する。
【００９５】
図１１ａ〜１１ｋは、上述したように、画像データが実行レーンアレイ「下方」の２次元シフトレジスタアレイにシフトされる実施例を示している。図１１ａから見られるように、２次元シフトアレイのデータ内容は、第１のアレイ１１０７に示され、実行レーンアレイは、フレーム１１０５によって示される。また、実行レーンアレイ内の２つの隣接する実行レーン１１１０は、簡略に示されている。この簡略な図示において、各実行レーン１１１０は、シフトレジスタからデータを受け入れ、（例えば、サイクル全体のアキュムレータとして動作するように）ＡＬＵ出力からデータを受け入れることができ、または出力先に出力データを書き込むことができるレジスタＲ１を含む。
【００９６】
また、各実行レーンは、ローカルレジスタＲ２において、その「下方」にある２次元シフトアレイ内の内容を利用することができる。したがって、Ｒ１は、実行レーンの物理レジスタであり、Ｒ２は、２次元シフトレジスタアレイの物理レジスタである。実行レーンは、Ｒ１および／またはＲ２によって提供されるオペランドを処理できるＡＬＵを含む。さらに以下でより詳細に説明するように、一実施形態において、シフトレジスタは、実際にはアレイ位置ごとに複数の（ある「深さ」の）記憶／レジスタ素子で実現されるが、シフトの動作は、記憶素子の１つの面に限られる（例えば、記憶素子の１つの面のみがサイクルごとにシフトすることができる）。図１１ａ〜１１ｋは、各々の実行レーンからの結果Ｘを格納するために使用されるより深いレジスタ位置の１つを示している。例示を容易にするために、より深い結果のレジスタは、その対応するレジスタＲ２の下方ではなく、その側方に図示されている。
【００９７】
図１１ａ〜１１ｋは、中心位置が実行レーンアレイ内に示された実行レーン位置１１１１の対に対して整列された２つのステンシルの計算に着目する。例示を容易にするために、実行レーン１１１０の対は、水平方向に隣接する実行レーンとして図示されている。実際には、以下の例によれば、実行レーン１１１０の対は、垂直方向に隣接する。
【００９８】
まず、図１１ａから見られるように、実行レーンは、それらの中央ステンシルの位置を中心にして配置される。図１１ｂは、両方の実行レーンによって実行される目的コードを示す。図１１ｂから見られるように、両方の実行レーンのプログラムコードは、シフトレジスタアレイ内のデータを、１つの位置だけ下方にシフトさせ、１つの位置だけ右側にシフトさせる。これによって、両方の実行レーンは、対応するステンシルの左上隅に整列される。次に、プログラムコードは、（Ｒ２内の）対応する位置のデータをＲ１にロードさせる。
【００９９】
図１１ｃから見られるように、次に、プログラムコードによって、実行レーンの対は、シフトレジスタアレイ内のデータを１単位だけ左側にシフトする。これによって、各実行レーンの各々の位置の右側の値は、各実行レーンの位置にシフトされる。Ｒ１の値（過去値）は、次いで、（Ｒ２内の）実行レーンの位置にシフトされた新しい値と共に加算される。結果は、Ｒ１に書き込まれる。図１１ｄから見られるように、図１１ｃを参照して上述したものと同様のプロセスを繰り返すことによって、結果としてのＲ１は、上方の実行レーンの値Ａ＋Ｂ＋Ｃおよび下方の実行レーンの値Ｆ＋Ｇ＋Ｈを含む。この時点において、両方の実行レーンは、対応するステンシルの上方の行を処理した。なお、（実行レーンアレイの左側にハロー領域が存在する場合に）左側のハロー領域に溢流し、実行レーンアレイの左側にハロー領域が存在しない場合に、ランダムアクセスメモリに溢流する。
【０１００】
図１１ｅから見られるように、次に、プログラムコードによって、シフトレジスタアレイ内のデータは、１単位だけ上方にシフトされる。これによって、両方の実行レーンは、対応するステンシルの中間行の右端に整列される。両方の実行レーンのレジスタＲ１は、現在、ステンシルの最上行および中間行の右端の値の合計を含む。図１１ｆおよび１１ｇは、両方の実行レーンのステンシルの中間行にわたって左方向に移動移動し続けることを示している。累積加算は、図１１ｇの処理が終了する時に両方の実行レーンが対応するステンシルの最上行の値と中間行の値との合計を含むように、継続する。
【０１０１】
図１１ｈは、各実行レーンを対応するステンシルの最下行に整列させる別のシフトを示している。図１１ｉおよび１１ｊは、両方の実行レーンのステンシルに対する処理を完了するための継続的なシフトを示している。図１１ｋは、各実行レーンをデータアレイ内の正しい位置に整列させ、その結果をデータアレイに書き込むための追加のシフトを示している。
【０１０２】
なお、図１１ａ〜１１ｋの例においてシフト動作を行うための目的コードは、（Ｘ，Ｙ）座標で表されるシフトの方向および大きさを特定するための命令フォーマットを含むことができる。例えば、１つの位置で上方へのシフトは、目的コードでＳＨＩＦＴ０，＋１として表現されてもよい。別の例として、１つの位置で右方向へのシフトは、目的コードでＳＨＩＦＴ＋１，０として表現されてもよい。様々な実施形態において、目的コードでより大きいサイズのシフトを指定することができる（例えば、ＳＨＩＦＴ０，＋２）。この場合、２Ｄシフトレジスタハードウェアが１つのサイクルにおいて１つの位置のシフトしかサポートしない場合、命令は、機械によって複数のサイクルの実行を要求するように解釈されてもよく、または２Ｄシフトレジスタハードウェアは、１つのサイクルにおいて２つ以上の位置のシフトをサポートするように設計されてもよい。いか、後者の実施形態をより詳細に説明する。
【０１０３】
図１２は、アレイ実行レーンおよび対応するシフトレジスタ構造の単位セルの別のより詳細な図を示す（様々な実施形態において、ハロー領域内のレジスタは、対応する実行レーンを含まないが、メモリ装置を含む）。一実施形態において、実行レーンおよび実行レーンアレイの各位置に関連するレジスタ空間は、実行レーンアレイの各ノードにおいて、図１２に示す回路をインスタンス化することによって実現される。図１２から見られるように、単位セルは、４つのレジスタＲ２〜Ｒ５からなるレジスタファイル１２０２に結合される実行レーン１２０１を含む。任意のサイクルにおいて、実行レーン１２０１は、レジスタＲ１〜Ｒ５のいずれかに対して読み書きすることができる。２つの入力オペランドを必要とする命令の場合、実行レーンは、Ｒ１〜Ｒ５のいずれかから２つのオペランドを取り出すことができる。
【０１０４】
一実施形態において、２次元シフトレジスタ構造は、単一のサイクルにおいて、出力マルチプレクサ１２０３を介して、レジスタＲ２〜Ｒ４のいずれか１つ（のみ）の内容を隣接するレジスタファイルの１つにシフト「アウト」し、入力マルチプレクサ１２０４を介して、レジスタＲ２〜Ｒ４のいずれか１つ（のみ）の内容を隣接するレジスタファイルの対応するものからシフト「イン」された内容で置換することによって、隣接するレジスタファイルの間のシフトが同じ方向にあるように（例えば、全ての実行レーンが左にシフトするまたは全ての実行レーンが右にシフトする）、実現される。一般的には、同一のレジスタの内容をシフトアウトし、同一のサイクルにおいてシフトインされた内容で置換するが、マルチプレクサ１２０３および１２０４は、同一のサイクルにおいて、同一のレジスタファイル内で異なるソースレジスタおよびターゲットレジスタをシフトすることができる。
【０１０５】
図１２に示すように、シフトシーケンスの間に、実行レーンは、そのレジスタファイル１２０２から内容をその左側、右側、上側および下側の隣接するレジスタファイルにシフトアウトする。同一のシフトシーケンスにおいて、実行レーンはまた、内容をその左側、右側、上側および下側の隣接するレジスタファイルうち、特定のレジスタファイルから別のレジスタファイルにシフトする。また、全ての実行レーンのシフトアウトターゲットおよびシフトインソースを同じシフト方向に一致しなければならない（例えば、シフトアウトを右隣に対して行う場合、シフトインを左隣からしなければならない）。
【０１０６】
一実施形態において、１つのサイクルにおいて、１つの実行レーンは、１つのレジスタの内容のみをシフトすることができるが、他の実施形態において、１つの実行レーンは、２つ以上のレジスタの内容をシフトイン／アウトすることができる。例えば、図１２に示されたマルチプレクサ回路系１２０３および１２０４の第２のインスタンスが図１２の設計に組み込まれた場合、同一のサイクルの間に２つのレジスタの内容をシフトアウト／インすることができる。当然ながら、１つのサイクルにおいて１つのレジスタの内容のみをシフトできる実施形態において、複数のレジスタのシフトは、数学演算の間のシフトに対してより多くのクロックサイクルを消費することによって、数学演算の間に行われてもよい（例えば、２つのレジスタは、数学演算の間に２つのシフト演算を消費することによって、その内容を数学演算の間にシフトすることができる）。
【０１０７】
なお、シフトシーケンス中に実行レーンのレジスタファイルの全ての内容がシフトアウトされていない場合、各実行レーンのシフトアウトされていないレジスタの内容は、所定の位置に残る（シフトされない）。したがって、シフトインされる内容によって置換えされていない未シフトの内容は、シフトサイクル中に実行レーンにローカルに保持される。各実行レーンに見られるメモリユニット（「Ｍ」）は、実行レーンアレイ内の実行レーンの行および／または列に関連するランダムアクセスメモリ空間からデータをロードするまたはデータをランダムアクセスメモリ空間に格納するために使用される。この場合、Ｍユニットは、実行レーンの自身のレジスタ空間からロードまたはそれに格納できないデータをロード／格納するためによく使用されるという点で、標準的なＭユニットとして機能する。様々な実施形態において、Ｍユニットの主な動作は、ローカルレジスタからのデータをメモリに書き込み、メモリから読み出したデータをローカルレジスタに書き込むことである。
【０１０８】
ハードウェア実行レーン１２０１のＡＬＵユニットによってサポートされるＩＳＡオペコードに関して、様々な実施形態において、ハードウェアＡＬＵによってサポートされる数学的オペコードは、例えば、ＡＤＤ、ＳＵＢ、ＭＯＶ、ＭＵＬ、ＭＡＤ、ＡＢＳ、ＤＩＶ、ＳＨＬ、ＳＨＲ、ＭＩＮ／ＭＡＸ、ＳＥＬ、ＡＮＤ、ＯＲ、ＸＯＲ、ＮＯＴを含む。上述したように、メモリアクセス命令は、実行レーン１２０１を用いて、データを関連するランダムアクセスメモリからフェッチまたはそれに格納することによって、実行されてもよい。また、ハードウェア実行レーン１２０１は、２次元シフトレジスタ構造内のデータをシフトするためのシフト演算命令（右、左、上、下）をサポートする。上述したように、プログラム制御命令は、主にステンシルプロセッサのスカラープロセッサによって実行される。
【０１０９】
５．０  実装の実施形態
留意すべきことは、上述した様々な画像プロセッサアーキテクチャの特徴は、必ずしも従来の画像処理に限定されず、したがって、画像プロセッサを再特徴付ける（またはしない）ことができる他のアプリケーションに適用することができることである。例えば、上述した様々な画像プロセッサアーキテクチャの特徴のいずれかを用いて、実際のカメラ画像の処理ではなく、アニメーションを作成および／または生成および／またはレンダリングする場合、画像プロセッサは、グラフィックス処理ユニットとして特徴づけられてもよい。また、上述した画像プロセッサアーキテクチャの特徴は、ビデオ処理、視覚処理、画像認識および／または機械学習などの他の技術応用に適用することもできる。このように適用される場合、画像プロセッサは、（例えば、コンピューティングシステムのＣＰＵであるまたはその一部である）汎用プロセッサと（例えばコプロセッサとして）一体化されてもよく、またはコンピューティングシステム内のスタンドアロンプロセッサであってもよい。
【０１１０】
上述したハードウェア設計の実施形態は、半導体チップ内において、および／または最終的に半導体製造プロセス向けの回路設計の記述として実施することができる。後者の場合、そのような回路記述は、（例えばＶＨＤＬもしくはVerilog）レジスタ転送レベル（ＲＴＬ）回路記述、ゲートレベル回路記述、トランジスタレベル回路記述もしくはマスク記述、またはそれらの様々な組み合わせの形態をとってもよい。回路記述は、典型的には、コンピュータ可読記憶媒体（例えば、ＣＤ−ＲＯＭまたは他の種類の記憶技術）上に実施される。
【０１１１】
留意すべきことは、前述のセクションから、上記の画像プロセッサは、（例えば、携帯装置のカメラからのデータを処理するための携帯装置のシステムオンチップ（ＳＯＣ）の一部として）コンピュータシステム上のハードウェアで実現することができることである。なお、画像プロセッサがハードウェア回路として実現された場合、画像プロセッサによって処理される画像データは、カメラから直接に受信されてもよい。この場合、画像プロセッサは、別体のカメラの一部であってもよく、一体化されたカメラを備えるコンピューティングシステムの一部であってもよい。後者の場合、画像データは、カメラからまたはコンピューティングシステムのシステムメモリから直接に受信することができる（例えば、カメラは、画像データを画像プロセッサではなくシステムメモリに送信する）。なお、前述のセクションにおいて説明した機能の多くは、（アニメーションをレンダリングする）グラフィックスプロセッサユニットに適用することができる。
【０１１２】
図１３は、コンピューティングシステムの例示的な図である。以下に説明されるコンピューティングシステムのコンポーネントの多くは、一体化されたカメラおよび関連する画像プロセッサ（例えば、スマートフォンまたはタブレットコンピューターなどの携帯装置）を備えたコンピューティングシステムに適用することができる。当業者は、この２つを簡単に区別することができる。さらに、図１３のコンピューティングシステムは、ワークステーションまたはスーパーコンピューターなどの高性能コンピューティングシステムの多くの特徴を含む。
【０１１３】
図１３から見られるように、基本的なコンピューティングシステムは、（例えば、マルチコアプロセッサまたはアプリケーションプロセッサ上に配置された複数の汎用処理コア１３１５＿１〜１３１５＿Ｎおよびメインメモリコントローラ１３１７を含み得る）中央処理ユニット１３０１、システムメモリ１３０２、ディスプレイ１３０３（例えばタッチスクリーン、平板パネル）、ローカル有線ポイントツーポイントリンク（例えば、ＵＳＢ）インターフェイス１３０４、様々なネットワークＩ／Ｏ機能１３０５（イーサネット（登録商標）インターフェイスおよび／またはセルラーモデムサブシステムなど）、無線ローカルエリアネットワーク（例えばＷｉＦｉ（登録商標））インターフェイス１３０６、ワイヤレスポイントツーポイントリンク（例えば、ブルートゥース（登録商標））インターフェイス１３０７、ＧＰＳインターフェイス１３０８、様々なセンサ１３０９＿１〜１３０９＿Ｎ、１つ以上のカメラ１３１０、バッテリ１３１１、電力管理制御ユニット１３１２、スピーカおよびマイクロホン１３１３、並びに音声コーダ／デコーダ１３１４を含んでもよい。
【０１１４】
アプリケーションプロセッサまたはマルチコアプロセッサ１３５０は、そのＣＰＵ１３０１内の１つ以上の汎用処理コア１３１５、１つ以上のグラフィカル処理ユニット１３１６、メモリ管理機能（例えば、メモリコントローラ）１３１７、Ｉ／Ｏ制御機能１３１８および画像処理ユニット１３１９を含んでもよい。汎用処理コア１３１５は、通常、コンピューティングシステムのオペレーティングシステムおよびアプリケーションソフトウェアを実行する。グラフィックス処理ユニット１３１６は、通常、ディスプレイ１３０３上に表示されるグラフィックス情報を生成するために、グラフィックス集約機能を実行する。メモリ制御機能１３１７は、インターフェイスでシステムメモリ１３０２と接続することによって、システムメモリ１３０２との間でデータの書き込み／読み出しを行う。電力管理制御ユニット１３１２は、システム１３００の電力消費を全体的に制御する。
【０１１５】
画像プロセッサユニット１３１９は、例えば、システムのカメラとシステムのアプリケーションプロセッサとの間に設けられた画像プロセッサユニットチップ上に一体化されるものを含み、上記のセクションで詳細に説明した画像プロセッサユニットの実施形態のいずれかに従って実装されてもよい。代替的にまたは組み合わせて、画像プロセッサユニット１３１９は、コプロセッサとして、ＧＰＵ１３１６およびＣＰＵ１３０１の一方または両方に結合されてもよい。さらに、様々な実施形態において、ＧＰＵ１３１６は、上記で詳細に説明された画像プロセッサ機能のいずれかで実装されてもよい。画像プロセッサユニットは、アプリケーションプロセッサに一体化されてもよい。
【０１１６】
タッチスクリーンディスプレイ１３０３、通信インターフェイス１３０４〜１３０７、ＧＰＳインターフェイス１３０８、センサ１３０９、カメラ１３１０、およびスピーカ／マイクコーデック１３１３および１３１４の各々は全て、コンピューティングシステムの全体に対して様々な形態のＩ／Ｏ（入力および／または出力）として、必要に応じて一体化された周辺装置（例えば、１つ以上のカメラ１３１０）を含むＩ／Ｏとして見なすことができる。実現例に応じて、これらのＩ／Ｏコンポーネントの各々は、アプリケーションプロセッサ／マルチコアプロセッサ１３５０に一体化されてもよく、またはアプリケーションプロセッサ／マルチコアプロセッサ１３５０のダイから離れてまたはそのパッケージの外側に配置されてもよい。
【０１１７】
一実施形態において、１つ以上のカメラ１３１０は、カメラと視野内の物体との間の深度を測定することができる深度カメラを含む。アプリケーションプロセッサまたは他のプロセッサの汎用ＣＰＵコア（もしくはプログラムコードを実行するための命令実行パイプラインを有する他の機能ブロック）上で実行されるアプリケーションソフトウェア、オペレーティングシステムソフトウェア、デバイスドライバソフトウェアおよび／またはファームウェアは、上記の機能のいずれかを実行してもよい。
【０１１８】
本発明の実施形態は、上述した様々なプロセスを含むことができる。これらのプロセスは、機械実行可能命令で実装されてもよい。これらの命令を用いて、汎用または特殊目的のプロセッサに、特定のプロセスを実行させることができる。代替的に、これらのプロセスは、プロセスを実行するためのハードワイヤード論理を含む特定のハードウェアコンポーネントによって、またはプログラミングされたコンピュータコンポーネントとカスタムされたハードウェアコンポーネントとの任意の組み合わせによって実行されてもよい。
【０１１９】
また、本発明の要素は、機械実行可能命令を記憶するための機械可読媒体として提供されてもよい。機械可読媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、および光磁気ディスク、フラッシュメモリ、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気もしくは光カード、伝搬媒体、または電子命令を記憶するのに適した他のタイプの媒体／機械可読媒体を含むが、それらに限定はされない。例えば、本発明は、通信リンク（例えばモデムもしくはネットワーク接続）を介して、搬送波または他の伝搬媒体に具体化されたデータ信号として遠隔のコンピュータ（例えば、サーバ）から要求側コンピュータ（例えば、クライアント）に転送されるコンピュータプログラムとしてダウンロードすることができる。
【０１２０】
前述の明細書において、特定の例示的な実施形態を説明した。しかしながら、特許請求の範囲に記載される本発明のより広い精神および範囲から逸脱することなく、様々な修正および変更がなされ得ることは明らかであろう。したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきである。
【０１２１】
以下、いくつかの例示的な実施形態を説明する。
【実施例１】
【０１２２】
画像プロセッサユニットであって、
少なくとも１つの入力画像を受信するための複数の入力と、
少なくとも１つの出力画像を提供するための複数の出力と、
複数の入力および複数の出力に結合されたネットワークとを備え、ネットワークは、少なくとも１つの入力を少なくとも１つの出力に結合し、
ネットワークに結合された画像プロセッサ回路を備え、ネットワークは、１つの入力で受信した入力画像を画像プロセッサ回路にルーティングし、画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、入力画像から処理済み出力画像を生成し、ネットワークは、処理済み出力画像を少なくとも１つの出力にルーティングする。
【実施例２】
【０１２３】
ネットワークは、入力画像を画像プロセッサ回路にルーティングしている間に、１つの入力で受信した第２の入力画像を１つの出力にルーティングする、実施例１に記載の画像プロセッサユニット。
【実施例３】
【０１２４】
画像プロセッサ回路による画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、実施例１または２に記載の画像プロセッサユニット。
【実施例４】
【０１２５】
画像プロセッサ回路による画像信号処理プログラムコードの実行は、画像信号処理パイプラインを実施することである、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例５】
【０１２６】
画像プロセッサ回路による画像信号処理プログラムコードの実行は、画像統計値を生成することである、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例６】
【０１２７】
ホストシステムへのインターフェイスをさらに備え、
インターフェイスは、ホストシステムから入力データを受信し、ネットワークは、入力データを画像プロセッサ回路にルーティングし、画像プロセッサ回路は、入力データに対して画像処理プログラムコードを実行することによって結果データを生成し、ネットワークは、結果データをホストにルーティングする、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例７】
【０１２８】
画像プロセッサ回路による画像処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例８】
【０１２９】
メモリを画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
ネットワークは、画像プロセッサ回路が入力画像を処理する前に、入力画像をメモリにルーティングすること、および／または、出力画像をメモリから１つの出力にルーティングすることを行う、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例９】
【０１３０】
メモリは、複数の画像を格納し、
画像プロセッサ回路による画像信号処理プログラムコードの実行は、複数の画像のより多くの露出不足領域を複数の画像のより少ない過度露出領域とブレンドすることである、および／または、複数の画像を分析することによって最良の静止画を決定することである、実施例８に記載の画像プロセッサユニット。
【実施例１０】
【０１３１】
カメラドライバプログラムコードを実行するための埋め込み型プロセッサ回路をさらに備える、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例１１】
【０１３２】
画像プロセッサユニットは、アプリケーションプロセッサ上に実装される、先行する実施例の少なくとも１つに記載の画像プロセッサユニット。
【実施例１２】
【０１３３】
画像プロセッサのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１３】
【０１３４】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または画像プロセッサチップがマルチプレクサとして構成される、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１４】
【０１３５】
画像の統計値を処理および／または生成するように構成される、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１５】
【０１３６】
画像プロセッサは、画像データのステンシルに対して未処理画像を処理するように構成され、特に、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１６】
【０１３７】
ステンシルプロセッサにさらに結合される、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１７】
【０１３８】
データ計算ユニットが、実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、特に実行レーンアレイの外側にレジスタが存在する、先行する実施例の少なくとも１つに記載の画像プロセッサ。
【実施例１８】
【０１３９】
コンピューティングシステムであって、
複数の汎用プロセッサとメインメモリサブシステムとを含むホストシステムと、
１つ以上のカメラと、
画像信号処理プログラムコードを格納するための記憶媒体と、
１つ以上のカメラとホストシステムとの間に結合された画像プロセッサユニットとを備え、
画像プロセッサユニットは、以下のａ）、ｂ）、ｃ）およびｄ）、すなわち、
ａ）少なくとも１つの入力画像を受信するための複数の入力と、
ｂ）少なくとも１つの出力画像を提供するための複数の出力と、
ｃ）複数の入力および複数の出力に結合されたネットワークとを備え、ネットワークは、少なくとも１つの入力を少なくとも１つの出力に結合し、
ｄ）ネットワークに結合された画像プロセッサ回路を備え、ネットワークは、１つの入力で受信した入力画像を画像プロセッサ回路にルーティングし、画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、入力画像から処理済み出力画像を生成し、ネットワークは、処理済み出力画像を少なくとも１つの出力にルーティングする。
【実施例１９】
【０１４０】
ネットワークは、入力画像を画像プロセッサ回路にルーティングしている間に、１つの入力で受信した第２の入力画像を１つの出力にルーティングする、実施例１８に記載のコンピューティングシステム。
【実施例２０】
【０１４１】
画像プロセッサ回路による画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、実施例１８または１９に記載のコンピューティングシステム。
【実施例２１】
【０１４２】
ホストシステムへのインターフェイスをさらに備え、
インターフェイスは、ホストシステムから入力データを受信し、ネットワークは、入力データを画像プロセッサ回路にルーティングし、画像プロセッサ回路は、入力データに対して画像処理プログラムコードを実行することによって結果データを生成し、ネットワークは、結果データをホストにルーティングする、実施例１８〜２０の少なくとも１つに記載のコンピューティングシステム。
【実施例２２】
【０１４３】
画像プロセッサ回路による画像処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、実施例１８〜２１の少なくとも１つに記載のコンピューティングシステム。
【実施例２３】
【０１４４】
メモリを画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
ネットワークは、画像プロセッサ回路が入力画像を処理する前に、入力画像をメモリにルーティングすること、および／または、出力画像をメモリから１つの出力にルーティングすることを行う、実施例１８〜２２の少なくとも１つに記載のコンピューティングシステム。
【実施例２４】
【０１４５】
メモリは、複数の画像を格納し、
画像プロセッサ回路による画像信号処理プログラムコードの実行は、複数の画像のより多くの露出不足領域を複数の画像のより少ない過度露出領域とブレンドすることである、および／または、複数の画像を分析することによって最良の静止画を決定することである、実施例１８〜２３の少なくとも１つに記載のコンピューティングシステム。
【実施例２５】
【０１４６】
画像プロセッサのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、実施例１８〜２４の少なくとも１つに記載のコンピューティングシステム。
【実施例２６】
【０１４７】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または画像プロセッサチップがマルチプレクサとして構成される、実施例１８〜２５の少なくとも１つに記載のコンピューティングシステム。
【実施例２７】
【０１４８】
画像の統計値を処理および／または生成するように構成される、実施例１８〜２６の少なくとも１つに記載のコンピューティングシステム。
【実施例２８】
【０１４９】
画像データのステンシルに対して未処理画像を処理するように構成され、特に、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、実施例１８〜２７の少なくとも１つに記載のコンピューティングシステム。
【実施例２９】
【０１５０】
データ計算ユニットが、実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、特に実行レーンアレイの外側にレジスタが存在する、実施例１８〜２８の少なくとも１つに記載のコンピューティングシステム。
【実施例３０】
【０１５１】
画像プロセッサユニットによって実行される方法であって、
第１の入力画像を画像プロセッサユニットの第１の出力に転送することと、
第２の入力画像を画像プロセッサ回路に転送することとを含み、画像プロセッサ回路は、実行レーンアレイと、２次元シフトレジスタアレイとを備え、
画像プロセッサ上で画像信号処理プログラムコードを実行することによって処理画像を生成することを含み、画像信号処理プログラムコードの実行により、２次元シフトレジスタアレイは、データを実行レーンアレイによって実行されている画像信号演算処理の間にシフトさせ、
処理画像を画像プロセッサユニットの第２の出力に転送することを含む。
【実施例３１】
【０１５２】
画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、実施例３０に記載の方法。
【図１ａ】
2020516981.tif 000003
【図１ｂ】
2020516981.tif 000004
【図１ｃ】
2020516981.tif 000005
【図２】
2020516981.tif 000006
【図３】
2020516981.tif 000007
【図４ａ】
2020516981.tif 000008
【図４ｂ】
2020516981.tif 000009
【図４ｃ】
2020516981.tif 000010
【図４ｄ】
2020516981.tif 000011
【図４ｅ】
2020516981.tif 000012
【図４ｆ】
2020516981.tif 000013
【図４ｇ】
2020516981.tif 000014
【図４ｈ】
2020516981.tif 000015
【図５】
2020516981.tif 000016
【図６】
2020516981.tif 000017
【図７】
2020516981.tif 000018
【図８ａ】
2020516981.tif 000019
【図８ｂ】
2020516981.tif 000020
【図８ｃ】
2020516981.tif 000021
【図８ｄ】
2020516981.tif 000022
【図８ｅ】
2020516981.tif 000023
【図９ａ】
2020516981.tif 000024
【図９ｂ】
2020516981.tif 000025
【図１０】
2020516981.tif 000026
【図１１ａ】
2020516981.tif 000027
【図１１ｂ】
2020516981.tif 000028
【図１１ｃ】
2020516981.tif 000029
【図１１ｄ】
2020516981.tif 000030
【図１１ｅ】
2020516981.tif 000031
【図１１ｆ】
2020516981.tif 000032
【図１１ｇ】
2020516981.tif 000033
【図１１ｈ】
2020516981.tif 000034
【図１１ｉ】
2020516981.tif 000035
【図１１ｊ】
2020516981.tif 000036
【図１１ｋ】
2020516981.tif 000037
【図１２】
2020516981.tif 000038
【図１３】
2020516981.tif 000039
【手続補正書】
【提出日】令和1年10月18日(2019.10.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像プロセッサユニットであって、
少なくとも１つの入力画像を受信するための複数の入力と、
少なくとも１つの出力画像を提供するための複数の出力と、
前記複数の入力および前記複数の出力に結合されたネットワークとを備え、前記ネットワークは、少なくとも１つの前記入力を少なくとも１つの前記出力に結合し、
前記ネットワークに結合された画像プロセッサ回路を備え、前記ネットワークは、１つの前記入力で受信した入力画像を前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、画像信号処理プログラムコードを実行することによって、前記入力画像から処理済み出力画像を生成し、前記ネットワークは、前記処理済み出力画像を少なくとも１つの前記出力にルーティングする、画像プロセッサユニット。
【請求項２】
前記ネットワークは、前記入力画像を前記画像プロセッサ回路にルーティングしている間に、１つの前記入力で受信した第２の入力画像を１つの前記出力にルーティングする、請求項１に記載の画像プロセッサユニット。
【請求項３】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項１または２に記載の画像プロセッサユニット。
【請求項４】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、画像信号処理パイプラインを実施することである、請求項１〜請求項３のいずれか１項に記載の画像プロセッサユニット。
【請求項５】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、画像統計値を生成することである、請求項１〜請求項４のいずれか１項に記載の画像プロセッサユニット。
【請求項６】
ホストシステムへのインターフェイスをさらに備え、
前記インターフェイスは、前記ホストシステムから入力データを受信し、前記ネットワークは、前記入力データを前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記入力データに対して前記画像信号処理プログラムコードを実行することによって結果データを生成し、前記ネットワークは、前記結果データを前記ホストシステムにルーティングする、請求項１〜請求項５のいずれか１項に記載の画像プロセッサユニット。
【請求項７】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、請求項１〜請求項６のいずれか１項に記載の画像プロセッサユニット。
【請求項８】
メモリを前記画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
前記ネットワークは、前記画像プロセッサ回路が前記入力画像を処理する前に、前記入力画像を前記メモリにルーティングすること、および／または、出力画像を前記メモリから１つの前記出力にルーティングすることを行う、請求項１〜請求項７のいずれか１項に記載の画像プロセッサユニット。
【請求項９】
前記メモリは、複数の画像を格納し、
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、前記複数の画像のより多くの露出不足領域を前記複数の画像のより少ない過度露出領域とブレンドすることである、および／または、前記複数の画像を分析することによって最良の静止画を決定することである、請求項８に記載の画像プロセッサユニット。
【請求項１０】
カメラドライバプログラムコードを実行するための埋め込み型プロセッサ回路をさらに備える、請求項１〜請求項９のいずれか１項に記載の画像プロセッサユニット。
【請求項１１】
前記画像プロセッサユニットは、アプリケーションプロセッサ上に実装される、請求項１〜請求項１０のいずれか１項に記載の画像プロセッサユニット。
【請求項１２】
前記画像プロセッサユニットのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、請求項１〜請求項１１のいずれか１項に記載の画像プロセッサユニット。
【請求項１３】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または前記画像プロセッサユニットがマルチプレクサとして構成される、請求項１〜請求項１２のいずれか１項に記載の画像プロセッサユニット。
【請求項１４】
画像の統計値を処理および／または生成するように構成される、請求項１〜請求項１３のいずれか１項に記載の画像プロセッサユニット。
【請求項１５】
前記画像プロセッサユニットは、画像データのステンシルに対して未処理画像を処理するように構成され、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、請求項１〜請求項１４のいずれか１項に記載の画像プロセッサユニット。
【請求項１６】
ステンシルプロセッサにさらに結合される、請求項１〜請求項１５のいずれか１項に記載の画像プロセッサユニット。
【請求項１７】
データ計算ユニットが、前記実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、前記実行レーンアレイの外側にレジスタが存在する、請求項１２に記載の画像プロセッサユニット。
【請求項１８】
コンピューティングシステムであって、
複数の汎用プロセッサとメインメモリサブシステムとを含むホストシステムと、
１つ以上のカメラと、
画像信号処理プログラムコードを格納するための記憶媒体と、
前記１つ以上のカメラと前記ホストシステムとの間に結合された画像プロセッサユニットとを備え、
前記画像プロセッサユニットは、以下のａ）、ｂ）、ｃ）およびｄ）、すなわち、
ｅ）少なくとも１つの入力画像を受信するための複数の入力と、
ｆ）少なくとも１つの出力画像を提供するための複数の出力と、
ｇ）前記複数の入力および前記複数の出力に結合されたネットワークとを備え、前記ネットワークは、少なくとも１つの前記入力を少なくとも１つの前記出力に結合し、
ｈ）前記ネットワークに結合された画像プロセッサ回路を備え、前記ネットワークは、１つの前記入力で受信した入力画像を前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記画像信号処理プログラムコードを実行することによって、前記入力画像から処理済み出力画像を生成し、前記ネットワークは、前記処理済み出力画像を少なくとも１つの前記出力にルーティングする、コンピューティングシステム。
【請求項１９】
前記ネットワークは、前記入力画像を前記画像プロセッサ回路にルーティングしている間に、１つの前記入力で受信した第２の入力画像を１つの前記出力にルーティングする、請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項１８または１９に記載のコンピューティングシステム。
【請求項２１】
ホストシステムへのインターフェイスをさらに備え、
前記インターフェイスは、前記ホストシステムから入力データを受信し、前記ネットワークは、前記入力データを前記画像プロセッサ回路にルーティングし、前記画像プロセッサ回路は、前記入力データに対して前記画像信号処理プログラムコードを実行することによって結果データを生成し、前記ネットワークは、前記結果データを前記ホストシステムにルーティングする、請求項１８〜２０のいずれか１項に記載のコンピューティングシステム。
【請求項２２】
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、ニューラルネットワーク処理、機械学習、顔検出、顔認識、製品認識、シーン認識および言語翻訳のいずれかを実行することである、請求項１８〜２１のいずれか１項に記載のコンピューティングシステム。
【請求項２３】
メモリを前記画像プロセッサユニットに結合するためのメモリインターフェイスをさらに備え、
前記ネットワークは、前記画像プロセッサ回路が前記入力画像を処理する前に、前記入力画像を前記メモリにルーティングすること、および／または、出力画像を前記メモリから１つの前記出力にルーティングすることを行う、請求項１８〜２２のいずれか１項に記載のコンピューティングシステム。
【請求項２４】
前記メモリは、複数の画像を格納し、
前記画像プロセッサ回路による前記画像信号処理プログラムコードの実行は、前記複数の画像のより多くの露出不足領域を前記複数の画像のより少ない過度露出領域とブレンドすることである、および／または、前記複数の画像を分析することによって最良の静止画を決定することである、請求項２３に記載のコンピューティングシステム。
【請求項２５】
前記画像プロセッサユニットのアーキテクチャは、ハードウェアの２次元シフトレジスタアレイに結合されたハードウェアの実行レーンアレイを含む、請求項１８〜２４のいずれか１項に記載のコンピューティングシステム。
【請求項２６】
少なくとも１つのバイパスモードにおいて、入力データが少なくとも１つの出力に転送され、および／または前記画像プロセッサユニットがマルチプレクサとして構成される、請求項１８〜２５のいずれか１項に記載のコンピューティングシステム。
【請求項２７】
画像の統計値を処理および／または生成するように構成される、請求項１８〜２６のいずれか１項に記載のコンピューティングシステム。
【請求項２８】
前記画像プロセッサユニットは、画像データのステンシルに対して未処理画像を処理するように構成され、ステンシルを処理することによって、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび／または時間−周波数変換を実行する、請求項１８〜２７のいずれか１項に記載のコンピューティングシステム。
【請求項２９】
データ計算ユニットが、前記実行レーンアレイよりも広い寸法を有するシフトレジスタ構造を備え、前記実行レーンアレイの外側にレジスタが存在する、請求項２５に記載のコンピューティングシステム。
【請求項３０】
画像プロセッサユニットによって実行される方法であって、
第１の入力画像を前記画像プロセッサユニットの第１の出力に転送することと、
第２の入力画像を画像プロセッサ回路に転送することとを含み、前記画像プロセッサ回路は、実行レーンアレイと、２次元シフトレジスタアレイとを備え、
前記画像プロセッサユニット上で画像信号処理プログラムコードを実行することによって処理画像を生成することを含み、前記画像信号処理プログラムコードの実行により、２次元シフトレジスタアレイは、データを前記実行レーンアレイによって実行されている画像信号演算処理の間にシフトし、
前記処理画像を前記画像プロセッサユニットの第２の出力に転送することを含む、方法。
【請求項３１】
前記画像信号処理プログラムコードの実行は、オフセット補正、ノイズ低減、自動ホワイトバランス、デモザイク処理、シャープニング、レンズシェーディング補正、色補正、トーンマッピングおよび時間−周波数変換のいずれかを実行することである、請求項３０に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
図９ａは、ステンシルプロセッサアーキテクチャ９００の実施形態を示している。図９ａから見られるように、ステンシルプロセッサは、データ計算ユニット９０１、スカラープロセッサ９０２、関連メモリ９０３、およびＩ／Ｏユニット９０４を含む。データ計算ユニット９０１は、実行レーンアレイ９０５、２次元シフトアレイ構造９０６、およびアレイの特定の行（row）または列（column）に関連する別個のランダムアクセスメモリ９０７を含む。
【国際調査報告】
2020516981.tif 000040
2020516981.tif 000041
2020516981.tif 000042
2020516981.tif 000043