JP2018532200A - 画像プロセッサ用多機能実行レーン - Google Patents

画像プロセッサ用多機能実行レーン Download PDF

Info

Publication number
JP2018532200A
JP2018532200A JP2018519299A JP2018519299A JP2018532200A JP 2018532200 A JP2018532200 A JP 2018532200A JP 2018519299 A JP2018519299 A JP 2018519299A JP 2018519299 A JP2018519299 A JP 2018519299A JP 2018532200 A JP2018532200 A JP 2018532200A
Authority
JP
Japan
Prior art keywords
instruction
alu
unit
logical unit
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018519299A
Other languages
English (en)
Other versions
JP6789287B2 (ja
Inventor
アルテム・ヴァシリエフ
ジェイソン・ルパート・レッドグレイヴ
アルバート・メイクスナー
オフェル・シャチャム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2018532200A publication Critical patent/JP2018532200A/ja
Application granted granted Critical
Publication of JP6789287B2 publication Critical patent/JP6789287B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Processing Or Creating Images (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

積和算出ユニットと第1のALU論理ユニットと第2のALU論理ユニットとを有する実行ユニットを含む装置が説明される。ALUユニットは、第1の命令、第2の命令、第3の命令、および第4の命令を行う。第1の命令は積和命令である。第2の命令は、同時に動作する第1のALU論理ユニットおよび第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせる。第3の命令は、ALU論理ユニットの他方の出力から動作するALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定する。第4の命令は、第1のALU論理ユニットおよび第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行う。

Description

本発明の分野は、一般にコンピューティング科学に関し、より詳細には、画像プロセッサ用多機能実行レーンに関する。
画像処理は、一般的には、配列へと編成されたピクセル値の処理を伴う。ここで、空間的に編成された2次元配列は、画像の2次元性を捕らえる(さらなる次元としては、時間(たとえば、2次元画像のシーケンス)およびデータタイプ(たとえば、色)があり得る)。一般的なシナリオでは、配列化されたピクセル値は、モーションの画像を捕らえるために静止画像またはフレームのシーケンスを生成したカメラによって提供される。従来の画像プロセッサは、一般的には、2つの両極のいずれかに位置付けられる。
第1の極は、汎用プロセッサまたは汎用様プロセッサ(たとえば、ベクトル命令拡張を有する汎用プロセッサ)上で実行されるソフトウェアプログラムとして画像処理タスクを行う。第1の極は、一般的には、非常に多用途なアプリケーションソフトウェア開発プラットフォームを提供するが、関連付けられたオーバヘッド(たとえば、命令のフェッチおよび復号、オンチップデータおよびオフチップデータの処理、投機的実行)と組み合わされたそのよりきめの細かいデータ構造の使用は、最終的に、プログラムコードの実行中にデータの単位あたり、より大量のエネルギーが消費されるという結果になる。
第2の、反対の極は、データのはるかに大きなブロックに固定関数ハードワイヤード回路を適用する。カスタム設計回路に直接的に適用されるデータのより大きな(よりきめの細かいものとは反対に)ブロックの使用は、データの単位あたりの電力消費量を大きく減少させる。しかしながら、カスタム設計固定関数回路の使用は、一般に、プロセッサが行うことができるタスクの限られたセットという結果になる。したがって、広く多用途なプログラミング環境(第1の極と関連付けられた)は、第2の極では欠けている。
データの単位あたりの改善された電力効率と、非常に多用途なアプリケーションソフトウェア開発機会とを組み合わせて両方とも提供する技術プラットフォームは、解決策として望ましいがまだ見つかっていない。
積和算出ユニットと第1のALU論理ユニットと第2のALU論理ユニットとを有する実行ユニットを含む装置が説明される。ALUユニットは、第1の命令、第2の命令、第3の命令、および第4の命令を行う。第1の命令は積和命令である。第2の命令は、同時に動作する第1のALU論理ユニットおよび第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせることができる。第3の命令は、ALU論理ユニットの他方の出力から動作するALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定することができる。第4の命令は、第1のALU論理ユニットおよび第2のALU論理が反復中に交互に演算して商桁値を決定する反復除算演算を行う。
画像プロセッサの実行ユニットを備える装置が説明される。ALUユニットは、第1の命令を実行するための手段を備え、この第1の命令は積和命令である。ALUユニットは、同時に動作する第1のALU論理ユニットおよび第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせることを含む、第2の命令を実行するための手段を備える。ALUユニットは、ALU論理ユニットの他方の出力から動作するALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定することを含む、第3の命令を実行するための手段を備える。ALUユニットは、第1のALU論理ユニットおよび第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行うことを含む、第4の命令を実行するための手段を備える。
以下の説明および添付の図面は、本発明の実施形態を示すために使用される。
画像プロセッサのステンシルプロセッサ構成要素を示す図である。 実行レーンのインスタンスおよびその2次元シフトレジスタへの結合を示す図である。 図2の実行レーンの一実施形態によって行われる機能の相対的遅延を示す図である。 多機能実行レーンのための設計を示す図である。 反復除算演算を行う回路および方法を示す図である。 反復除算演算を行う回路および方法を示す図である。 図3〜図5a、図5bを参照しながら説明される実行レーンによって行われる方法を示す図である。 コンピューティングシステムの一実施形態を示す図である。
図1は、ステンシルプロセッサアーキテクチャ100の一実施形態を示す。ステンシルプロセッサとは、以下の説明からより明確にされるように、画像データのステンシルを処理するように最適化または設計されたプロセッサである。1つまたは複数のステンシルプロセッサは、プロセッサによって処理される画像上でステンシルベースのタスクを行う画像プロセッサに統合されてよい。図1において見られるように、ステンシルプロセッサは、データ算出ユニット101と、スカラプロセッサ102と、関連付けられたメモリ103と、I/Oユニット104とを含む。データ算出ユニット101は、実行レーンの配列105と、2次元シフト配列構造106と、配列の特定の行または列と関連付けられた別個のランダムアクセスメモリ107とを含む。
I/Oユニット104は、受信された画像データの入力「シート」をデータ算出ユニット101にロードし、ステンシルプロセッサからの外部データ算出ユニットからのデータの出力シートを記憶することを担当する。一実施形態では、データ算出ユニット101へのシートデータのロードは、受信されたシートを画像データの行/列へと解析し、その画像データの行/列を2次元シフトレジスタ構造106または実行レーン配列の行/列のそれぞれのランダムアクセスメモリ107へとロードすることを伴う(以下でより詳細に説明される)。
シートが最初にメモリ107にロードされる場合、実行レーン配列105内の個々の実行レーンは、適宜(たとえば、シートのデータに対する演算の直前のロード命令として)シートデータをランダムアクセスメモリ107から2次元シフトレジスタ構造106へとロードしてよい。レジスタ構造106へのデータのシートのロード(シートジェネレータから直接的であるにせよ、メモリ107からであるにせよ)が完了すると、実行レーン配列105の実行レーンは、データに影響し、最終的には、完成したデータをステンシルプロセッサから外部に、またはランダムアクセスメモリ107へと「ライトバック」する。後で、I/Oユニット104がランダムアクセスメモリ107からデータをフェッチして出力シートを形成する場合、その出力シートは、ステンシルプロセッサから外部に書き込まれる。
スカラプロセッサ102は、命令メモリ103からステンシルプロセッサのプログラムコードの命令を読み出し、実行レーン配列105内の実行レーンに命令を出すプログラムコントローラ109を含む。一実施形態では、単一の同じ命令が、データ算出ユニット101からSIMDに似た挙動を実施するために、配列105内のすべての実行レーンにブロードキャストされる。一実施形態では、スカラメモリ103から読み出され、実行レーン配列105の実行レーンに出される命令の命令フォーマットとしては、命令ごとに複数のオペコードを含む超長命令語(VLIW)タイプのフォーマットがある。さらなる実施形態では、VLIWフォーマットは、各実行レーンのALUによって行われる数学関数を指示するALUオペコードと、メモリオペコード(特定の実行レーンまたは実行レーンのセットに対するメモリ演算を指示する)の両方を含む。
「実行レーン」という用語は、命令を実行することが可能な1つまたは複数の実行ユニットのセット(たとえば、命令を実行することができる論理回路)を指す。しかしながら、実行レーンは、さまざまな実施形態では、単に実行ユニットを越えてよりプロセッサに似た機能を含むことができる。たとえば、1つまたは複数の実行ユニットの他に、実行レーンは、受信された命令を復号する論理回路も含んでもよいし、よりMIMDに似た設計では、命令をフェッチおよび復号する論理回路も含んでもよい。MIMDに似た手法に関して、集中型プログラム制御手法が主に本明細書で説明されているが、より分散型の手法が、さまざまな代替実施形態において実施されてよい(たとえば、プログラムコードと、配列105の各実行レーン内のプログラムコントローラとを含む)。
実行レーン配列105、プログラムコントローラ109、および2次元シフトレジスタ構造106の組み合わせは、広く適合可能な/構成可能なハードウェアプラットフォームに、広範囲のプログラム可能な機能を提供する。たとえば、個々の実行レーンが多種多様の機能を行うことができ、任意の出力配列場所に近接した入力画像データに容易にアクセスすることができると仮定すれば、アプリケーションソフトウェア開発者は、広範囲の異なる機能能力ならびに寸法(たとえば、ステンシルサイズ)を有するカーネルをプログラムすることができる。
演算中、実行レーン配列105および2次元シフトレジスタ106のため、画像の複数のステンシルは、並列に影響され得る(当技術分野で理解されるように、ステンシルは、一般的に、画像内のピクセルの連続したN×MまたはN×M×Cグループとして実施される(ここで、NはMに等しくすることができる))。ここで、たとえば、2次元シフト配列が、ステンシルのためのタスクを実行している実行レーンに結合されたレジスタ空間に各ステンシルのデータを順次渡すために、そのデータをシフトする間、各実行レーンは、演算を実行して、画像データ内のデータに値する特定のステンシルのための処理を行う。2次元シフトレジスタ106は、実行レーン配列105よりも大きい寸法であってもよい(たとえば、実行レーン配列が寸法X×Xである場合、2次元シフトレジスタ106は、寸法Y×Yであってよく、ここでY>X)ことに留意されたい。ここで、ステンシルを完全に処理するために、ステンシルの左端が実行レーンによって処理されているとき、シフトレジスタ106内のデータは、実行レーン配列105の右端から「押し出す」。シフトレジスタ106の余分な寸法は、実行レーン配列の端から押し出されたデータを吸収することができる。
実行レーン配列105によって影響される画像データのためのデータストアとして機能することは別として、ランダムアクセスメモリ107は、1つまたは複数のルックアップテーブルを保持し得る。さまざまな実施形態では、1つまたは複数のスカラルックアップテーブルは、スカラメモリ103内でインスタンス化されてもよい。
スカラルックアップは、同じインデックスからの同じルックアップテーブルからの同じデータ値を実行レーン配列105内の実行レーンの各々に渡すことを伴う。さまざまな実施形態では、上記で説明されたVLIW命令フォーマットは、スカラプロセッサによって行われたルックアップ演算をスカラルックアップテーブルへと向けるスカラオペコードも含むように拡張される。オペコードとともに使用するために指定されたインデックスは、即値オペランドであってもよいし、何らかの他のデータ記憶場所からフェッチされてもよい。ともかく、一実施形態では、スカラメモリ内のスカラルックアップテーブルからのルックアップは、同じクロックサイクル中に同じデータ値を実行レーン配列105内のすべての実行レーンにブロードキャストすることを本質的に伴う。
図2は、実行レーン201内のALU実行ユニット205のためのユニットセルおよび対応するローカルシフトレジスタ構造の別の、より詳細な記述を示す。実行レーンおよび実行レーン配列内の各場所と関連付けられたレジスタ空間は、一実施形態では、図2における実行レーン配列の各ノードにおいて見られる回路をインスタンス化することによって実施される。図2において見られるように、ユニットセルは、4つのレジスタR1からR4からなるレジスタファイル202に結合された実行レーン201を含む。任意のサイクル中に、ALU実行ユニットは、レジスタR1からR4のいずれかから読み出され、レジスタR1からR4のいずれかに書き込んでよい。
一実施形態では、2次元シフトレジスタ構造は、単一サイクル中に、レジスタR1からR3のうちの1つ(のみ)のいずれかの内容をその隣接物のレジスタファイルのうちの1つに出力マルチプレクサ203を通してシフト「アウト」を可能にすることと、隣接物間のシフトが同じ方向である(たとえば、すべての実行レーンが左にシフトする、すべての実行レーンが右にシフトする、など)ようにレジスタR1からR3の1つ(のみ)のいずれかの内容をその隣接物の対応するものから入力マルチプレクサ204を通してシフト「イン」される内容と置き換えさせることによって実施される。さまざまな実施形態では、実行レーン自体が、それら自体のそれぞれのシフト命令を実行して、シフトレジスタの内容の大規模SIMD2次元シフトを実施する。同じレジスタがその内容をシフトアウトさせ、同じサイクル上でシフトインされた内容と置き換えさせることは一般的であり得るが、マルチプレクサ構成203、204は、同じサイクル中に同じレジスタファイル内の異なるシフトソースおよびシフトターゲットレジスタを可能にする。
図2に示されるように、シフトシーケンス中に、実行レーンが、そのレジスタファイル202からその左隣接物、右隣接物、上隣接物、および下隣接物の各々に内容をシフトアウトすることに留意されたい。同じシフトシーケンスに関連して、実行レーンはまた、内容を、その左隣接物、右隣接物、上隣接物、および下隣接物のうちの特定の隣接物からそのレジスタファイルへとシフトする。同じく、シフトアウトターゲットおよびシフトインソースは、すべての実行レーンに対して同じシフト方向に一致するべきである(たとえば、シフトアウトが右隣接物に対してである場合、シフトインは、左隣接物からであるべきである)。
一実施形態では、サイクルごとの実行レーンにつき1つのレジスタのみの内容がシフトされることが許可されるが、他の実施形態は、複数のレジスタの内容をシフトイン/シフトアウトすることを可能にする。たとえば、図2において見られるマルチプレクサ回路203、204の第2のインスタンスが図2の設計に組み込まれる場合、2つのレジスタの内容が同じサイクル中にシフトアウト/シフトインされてよい。もちろん、サイクルごとに1つのレジスタのみの内容がシフトされることが可能である実施形態では、複数のレジスタからのシフトが、数学演算間のシフトのためにより多くのクロックサイクルを消費することによって数学演算間で行われてよい(たとえば、2つのレジスタの内容は、数学演算間で2つのシフト演算を消費することによって、数学演算間でシフトされてよい)。
実行レーンのレジスタファイルの部分的な内容がシフトシーケンス中にシフトアウトされる場合、各実行レーンのシフトアウトされないレジスタの内容は所定の位置にあるままである(シフトしない)ことに留意されたい。したがって、シフトインされた内容と置き換えられないシフトされないすべての内容は、シフトサイクルにわたって実行レーンに対してローカルに存続する。例示的な容易さのために図2に示されていないメモリ実行ユニットはまた、実行レーン配列内の実行レーンの行および/または列と関連付けられたランダムアクセスメモリ空間からデータをロードする、またはランダムアクセスメモリ空間にデータを記憶するために、各実行レーン201内に存在してもよい。ここで、メモリユニットは、実行レーン自体のレジスタ空間からロードできない、または実行レーン自体のレジスト空間に記憶できないデータをロード/記憶するために使用されることが多いので、標準的なMユニットとして機能する。さまざまな実施形態では、Mユニットの主な演算は、ローカルレジスタからメモリへとデータを書き込むことと、メモリからデータを読み出し、そのデータをローカルレジスタに書き込むことである。
ハードウェア実行レーン201のALUユニット205によってサポートされるISAオペコードに関して、さまざまな実施形態では、ALUユニット205によってサポートされる数学オペコードとしては、以下のALU演算、すなわち、加算(ADD)、減算(SUB)、移動(MOV)、乗算(MUL)、積和(MAD)、絶対値(ABS)、除算(DIV)、左シフト(SHL)、右シフト(SHR)、最小値または最大値を返す(MIN/MAX)、選択(SEL)、論理AND(AND)、論理OR(OR)、論理XOR(XOR)、先行ゼロ計数(CLZまたはLZC)、および論理補数(NOT)、のいずれかであってよい。以下で図3〜図5を参照しながらより詳細に説明されるALUユニット205またはその一部分の一実施形態。すぐ上で説明されたように、メモリアクセス命令は、関連付けられたランダムアクセスメモリからデータをフェッチする、または関連付けられたランダムアクセスメモリにデータを記憶するために実行レーン201によって実行可能である。さらに、ハードウェア実行レーン201は、2次元シフトレジスタ構造内のデータをシフトするために、シフトオペ命令(右、左、上、下)をサポートする。上記で説明されたように、プログラム制御命令は、主にステンシルプロセッサのスカラプロセッサによって実行される。
図3は、すぐ上で説明された実行レーンの実行ユニットまたはその一部分のための消費時間マップを示す。具体的には、図3は、実行ユニットによって実行可能ないくつかの異なる命令の各々によって消費される時間の量をマップアウトする。図3において見られるように、実行ユニットは、1)積和命令(MAD)301、2)並列な2つの全幅ALU演算(FW)または4つの半幅(HW)ALU演算302、3)2倍幅(2XW)ALU演算303、4)((C op D) op B)という形の融合演算304、および5)反復除算(DIV)演算306を行うことができる。
図3において見られるように、MAD演算301は、単独で、実行ユニットが実行することができるさまざまな命令の中で最も多くの時間を消費する。したがって、設計観点は、実行ユニットが、たとえば、並列に複数のALU演算(演算302など)を、および/また連続して複数のALU演算(演算304など)を行うために、MAD演算を行う論理の他に、複数のALU論理ユニットとともに拡張可能であるということである。
図4は、図3に示される異なる命令をサポートすることができる実行ユニット405のための設計の一実施形態を示す。図4において見られるように、実行ユニット405は、第1のALU論理ユニット401と、第2のALU論理ユニット402と、ならびに積和論理ユニット403とを含む。レジスタファイルからの入力は、A、B、C、Dとラベルされるが、レジスタファイルにライトバックされる出力はXおよびYとラベルされる。したがって、実行ユニット405は、4つの入力ポート、2つの出力ポートの実行ユニットである。
積和論理ユニット403は、一実施形態では、完全積和命令を行う。すなわち、積和論理ユニット403は関数(A*B)+(C,D)を行い、ここで、Aは全幅入力オペランド、Bは全幅オペランド、(C,D)は、2倍幅和項を形成するための2つの全幅オペランドの連結である。たとえば、全幅が16ビットに対応する場合、Aは16ビットであり、Bも16ビットであり、和項は32ビットである。当技術分野で理解されるように、2つの全幅値の積和は、2倍幅結果を生じることができる。したがって、MAD演算の結果はX出力ポート、Y出力ポートにわたって書き込まれ、ここで、たとえば、Xは結果の上半分を含み、Yは結果の下半分を含む。さらなる実施形態では、積和ユニット403は、半幅積和をサポートする。ここで、たとえば、Aの下半分は第1の被乗数として使用され、Bの下半分は第2の被乗数として使用され、CまたはDのどちらか(連結ではないが)が加数として使用される。
上記で図3に関して言及されたように、MAD演算の実行は、一般的なALU論理ユニットよりも多くの時間を消費することがある。したがって、実行ユニットは、ALU演算の並列実行だけでなく逐次ALU演算も提供するために、ALU論理ユニット401、402のペアを含む。
ここで、図3および図4を参照すると、デュアル並列FW演算302に対して、第1のALU論理ユニット401は第1の全幅ALU演算(A op B)を行い、第2のALUは、第1の全幅ALU演算と並列に、第2の全幅ALU演算(C op D)を行う。同じく、一実施形態では、全幅演算は16ビットに対応する。ここで、第1のALU論理ユニット401は、(A op B)の結果をレジスタXへと書き込み、第2のALU論理ユニット402は、(C op D)の結果をレジスタYへと書き込む。
一実施形態では、デュアル並列全幅ALU演算302を実行するための命令フォーマットとしては、デュアル全幅演算および宛先レジスタを指定するオペコードがある。さらなる実施形態では、オペコードは、デュアル並列全幅演算を指定することの他に、1つまたは2つのALU演算も指定する。オペコードが1つの演算のみを指定する場合、ALU論理ユニット401と402の両方は、同じ演算を行う。対照的に、オペコードが第1の異なるALU演算および第2の異なるALU演算を指定する場合、第1のALU論理ユニット401は演算のうちの1つを行い、第2のALU論理ユニット402は演算の第2のものを行う。
演算302の半幅(HW)特徴に関して、4つの半幅ALU演算が並列に行われる。ここで、入力A、B、C、およびDの各々は、2つの別個の入力オペランドを各々含むと理解される。すなわち、たとえば、Aの上半分は第1の入力オペランドに対応し、Aの下半分は第2の入力オペランドに対応し、Bの上半分は第3の入力オペランドに対応し、Bの下半分は第4の入力オペランドに対応する、などである。
したがって、ALU論理ユニット401は2つのALU演算を並列に取り扱い、ALU論理ユニット402は2つのALU演算を並列に取り扱う。したがって、実行中に、すべての4つの半幅演算が並列に行われる。演算302の終了時に、ALU論理ユニット401は2つの半幅結果をレジスタXへと書き込み、ALU論理ユニット402は2つの半幅結果をレジスタYへと書き込む。したがって、レジスタXおよびY内に4つの別個の半幅結果が存在する。
一実施形態では、命令フォーマットは、並列半幅演算が行われ得ると指定するだけでなく、どのALU演算が行われ得るかも指定する。さまざまな実施形態では、命令フォーマットは、すべての4つの演算が同じであり、1つの演算のみを指定してもよい、および/またはすべての4つの演算が異なると指定し、4つの異なる演算を指定してもよい。後者の場合、あるいは、すべての4つの演算に対して同じ演算を実施するために、命令フォーマットは、同じ演算を4回指定してよい。これらの命令フォーマット手法のさまざまな組み合わせも可能である。
図3の2倍幅ALU演算303に関しては、一実施形態では、実行ユニット405は演算(A,C) op (B,D)を行い、ここで、(A,C)は、第1の2倍幅入力オペランドを形成する入力AおよびCの連結、(B,D)は、第2の2倍幅入力オペランドを形成する入力BおよびDの連結である。ここで、桁上げ項は、全幅から2倍幅に前方に演算を桁上げするために、桁上げ線404に沿って第1のALU論理ユニット401から第2のALU論理ユニット402に渡されてよい。
すなわち、一実施形態では、C項およびD項は、2つの2倍幅入力オペランドの下位の順序付けられた半分を表す。第2のALU論理ユニット402は、2つの下半分に対して指定された演算(たとえば、ADD)を行い、生成される結果は、2倍幅結果全体の下半分に対応する。したがって、第2のALU論理ユニット402からの結果はレジスタYに書き込まれる。下半分に対する演算は、入力オペランドの2つのそれぞれの上半分AおよびCの演算を継続する第1のALU論理ユニット401に桁上げされる桁上げ項を生成してよい。第1のALU論理ユニット401からの結果は、出力レジスタXに書き込まれる結果全体の上半分に対応する。第1のALU論理ユニット401による上半分に対する演算は、第2のALU論理ユニット402から桁上げ項を受け取るまで開始することができない場合があるので、ALU論理ユニット402、401の演算は、並列ではなく逐次的である。したがって、図3において見られるように、2倍幅演算303は、並列全/半幅演算302の約2倍の長さを要する場合がある。
それにもかかわらず、MAD演算301は、2つの連続したALU論理ユニット演算よりも多くの時間を消費することができるので、機械が、その最も長い伝搬遅延演算によって消費される期間へのできる限り多くの関数の挿入を試行することができる実行ユニット405のまわりに構築可能である。したがって、一実施形態では、実行ユニット405のサイクル時間は、MAD命令301の実行時間に対応する。一実施形態では、2倍幅演算のための命令フォーマットは、行われることになる演算だけでなく、演算が2倍幅演算であることも指定する。
融合演算304に関して、実行ユニット405は、演算(C op D) op Bを行う。ここで、すぐ上で説明された2倍幅ALU演算303のように、第2の演算が第1の演算の結果に影響するので、デュアルALU論理ユニット401、402は順次演算する。ここで、第2のALU論理ユニット402は、全幅入力CおよびDに対して初期演算を行う。第2のALU論理402の結果は、結果レジスタ空間に書き込まれる代わりに、マルチプレクサ406を介して第1のALU論理ユニット401の入力へと多重送信される。次いで、第1のALU論理ユニット401が、第2の演算を行い、結果をレジスタXへと書き込む。
さらなる実施形態では、半幅融合演算も行われ得る。ここで、演算は、入力オペランドの半分のみが利用されることを除いて、上記で説明されたとおりである。すなわち、たとえば、(C op D) op Bを計算する際、Cの下半分およびDの下半分のみが、第1の演算に対する半幅結果を決定するために使用され、次いで、Bの下半分のみが、第2の演算を行うために第1の演算の半幅結果とともに使用される。結果は、レジスタX内に半幅値として書き込まれる。さらに、2つの半幅融合演算が並列に行われ得る。ここで、演算は、すぐ上で説明されたように、オペランドの上位半分を除き、同じ論理演算を用いて同時に行われる。結果は、レジスタXに書き込まれる2つの半幅値である。
一実施形態では、融合演算のための命令フォーマットは、融合演算が行われ得ると指定し、2つの演算を指定する。同じ演算が2回行われ得る場合、一実施形態では、命令は、演算を1回のみ指定する、または演算を2回指定する。さらなる実施形態では、融合演算および行われることになっている演算を指定することは別として、命令フォーマットは、全幅演算が行われ得るか半幅演算が行われ得るかをさらに指定してよい。
図3の演算306は、反復除算演算も実行ユニットによって行われ得ることを示す。特に、以下でより詳細に説明されるように、さまざまな実施形態では、ALU論理ユニット401と402の両方は、反復除算演算中に並列に協力して関与する。
図5aおよび図5bは、図3の反復除算命令306を実行するための一実施形態に関係する。図5aは、反復除算命令の実行を可能にするために図4の実行ユニット回路405に追加されることになっているさらなる回路を示す(図4の同じALU論理ユニット401、402であると理解されるALU論理ユニット501、502を除く)。図5bは、反復除算命令の実行中の実行ユニットのマイクロシーケンス演算の一実施形態を示す。以下の説明からより明確であるように、命令の単一実行は、本質的に、分子(除算される値)の先頭桁を除数(分子が除算される値)によって除算するために試行が行われる長除法の動作(atomic act)に類似している2回の反復を行う。
簡単にするために、16ビット除算が説明される(当業者は、本教示を異なる幅の実施形態に拡張することができるであろう)。2つの長除法動作を行う本明細書において説明される実施形態では、命令の8回の逐次実行が、16ビット除数によって16ビット分子を完全に除算するために使用される。すなわち、各長除法動作は、分子の次の上位ビットの処理に対応する。2つのそのような上位ビットは、命令の単一実行中に処理される。したがって、分子のすべてのビットを処理するために、命令の8つの逐次実行は、完全除算を完全に行うために必要とされる。第1の命令の出力はレジスタファイルに書き込まれ、次の以後の命令のための入力として使用される。
図5aを参照すると、分子入力はB入力において提供され、除数はD入力のところに存在する。同じく、本実施形態では、B入力オペランドとD入力オペランドの両方が16ビットである。A入力オペランドおよびB入力オペランドの連結A,B(Aオペランドも16ビットである)である「パックされた」32ビットデータ構造「PACK」は、完全除算プロセスの初期データ構造としてみなされる。初期条件として、Aは16個のゼロ(000…0)の文字列に設定され、Bは分子値である。
図5aおよび図5bを参照すると、第1のマイクロシーケンス中に、PACKデータ構造の左シフトが、PACKの最上位語(「PACK msw」)と呼ばれる、A[14:0]、B[15]データ構造を生じさせるために行われる。次いで、除数Dが、PACK mswから第2のALU論理ユニット502の分だけ減算される511。この演算は、除数が最初に分子の先頭桁を割る長除法に対応する。一実施形態では、ALU論理ユニット501、502は実際には3つの入力ALUであり、図4によって示唆される2つの入力ALUではない(第3の入力は、反復除算演算の場合の除数Dのために予約される)ことに留意されたい。
次いで、減算511の結果の符号512に応じて、異なるデータ処理手順が続く。重要なことに、第1の商結果ビット(すなわち、除算結果の第1のビット)が、Y出力ポート509の第2のビットから最下位ビットに書き込まれるように段階的に行われる(「NEXT B[1]」)。減算の結果が負の場合、商結果ビットB[1]は0に設定される513。減算の結果が正の場合、商結果ビットB[1]は1に設定される514。このビットの設定は、除数値が分子の第1の桁を割り切り可能であるかどうかを確立することによって商結果の第1の桁が決定される、長除法におけるプロセスに対応する。
さらに、2つの異なるデータ構造が作られ、マルチプレクサ506(図4のマルチプレクサ406と同じマルチプレクサであってよい)のそれぞれの入力ポート(「1」、「2」)に提示される。第1のデータ構造は、Pack msw(A[13:0],B[15],B[14])の左シフトに対応し、マルチプレクサ506の入力1において提示される。このデータ構造の作成は、除数が最上位隣接物を割り切らない場合に分子の次の桁がその最上位隣接物に加えられる、長除法におけるプロセスに対応する。
第2の作られたデータ構造は、ビットB[13]が加えられた第2のALU論理ユニット502によってちょうど行われた減算511の結果の左シフトに対応し、マルチプレクサ506の第2の入力(「2」)において提示される。このデータ構造の作成は、除数が分子の第1の桁を割り、それによって、分子の第1の桁と除数の倍数との差の結果への次の除算がセットアップされる、長除法の状況に対応する。
次いで、第2のALU論理ユニット502によって行われた減算の結果が正の結果をもたらすか負の結果をもたらすかに応じて、第1のデータ構造または第2のデータ構造が、マルチプレクサ506によって選択される。減算が負の結果をもたらした(除数が分子の次の上位桁を割り切ることができないことに対応する)場合、第1のデータ構造が選択される513。減算が正の結果をもたらした(除数が分子の次の上位桁を割り切ることができることに対応する)場合、第2のデータ構造が選択される514。
マルチプレクサ506の出力は、ここで、PACKデータ構造(new PACK msw)の新しい最上位語であることが理解され、除数が割り切りを試行する予定である長除法シーケンスにおける次の値に対応する。したがって、第1のALU論理ユニット501は、new PACK msw値から除数Dを減算する515。Y出力B[0]の最下位ビット510は、第1のALU501からの減算結果の符号に応じて1または0として書き込まれるように段階的に行われ、商結果517、518における次の桁を表す。
第2のマルチプレクサ508は、第1のALU論理ユニットの減算515の符号に応じて516、第1のデータ構造および第2のデータ構造から選択する。第2のマルチプレクサ508の入力「1」において提示される第1のデータ構造は、new PACK msw値に対応する。第2のマルチプレクサ508の入力「2」において提示される第2のデータ構造は、第1のALU論理ユニット501によって行われる減算の結果に対応する。2つのデータ構造のうちのどちらが選択されるかは、第1のALU501によって行われる減算515の結果の符号に依存する。減算の結果が負の場合、マルチプレクサは、new PACK msw値を選択する517。減算の結果が正の場合、マルチプレクサは、new PACK msw-D値を選択する518。
第2のマルチプレクサ508の出力は、X出力からレジスタファイルに書き込まれるNEXT A値に対応する。Y出力(B[15:0])において提示される値は、2つの行われたばかりの反復によって消費されたその2つの最上位ビット(B[13:0])より少なく、Bオペランドの先頭端において構成される。Bのこれらの剰余ビットの、2つの新しく計算された商桁結果との連結は、新しいBオペランドNEXT Bとしてレジスタファイルに書き込まれる。次の反復のために、前の命令からのX出力がAオペランドに読み込まれ、前の命令からのY出力がBオペランドに読み込まれる。次いで、元のBオペランドのすべての桁が処理される(同じく、16ビットの場合、Bオペランドは、命令の8つの逐次実行を消費する)まで、プロセスが繰り返す。すべての反復が終結すると、最終的な商がY出力からレジスタファイルに書き込まれ、剰余は、X出力からレジスタファイルに書き込まれるNEXT A値において表される。
図6は、上記で説明されたALUユニットによって行われる方法の一実施形態を示す。図6において見られるように、方法は、画像プロセッサのALUユニットで以下を行うことを含む。第1の命令を実行すること、この第1の命令は積和命令である601。同時に動作する第1のALU論理ユニットおよび第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせることを含む、第2の命令を実行すること602。ALU論理ユニットの他方の出力から動作するALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定することを含む、第3の命令を実行すること603。第1のALU論理ユニットおよび第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行うことを含む、第4の命令を実行すること604。
上記で説明されたさまざまな画像プロセッサアーキテクチャ特徴は、必ずしも従来の意味での画像処理に限定されず、したがって、画像プロセッサを再度特徴付けさせ得る(または特徴付けさせなくてもよい)他の適用例に適用されてよいことを指摘することが適切である。たとえば、上記で説明されたさまざまな画像プロセッサアーキテクチャ特徴のいずれかが、実際のカメラ画像の処理とは反対に、アニメーションの作成および/または生成および/またはレンダリングにおいて使用された場合、画像プロセッサは、グラフィックス処理ユニットと特徴付けられてよい。さらに、上記で説明された画像プロセッサアーキテクチャの特徴は、ビデオ処理、映像処理、画像認識、および/または機械学習などの他の技術的適用例に適用されてよい。このように適用されると、画像プロセッサは、より汎用的なプロセッサ(たとえば、これに対するコプロセッサとして)と統合されてもよいし(たとえば、コンピューティングシステムのCPUまたはその一部である)、コンピューティングシステム内のスタンドアロンプロセッサであってもよい。
上記で説明したハードウェア設計実施形態は、半導体チップ内で、および/または半導体製造プロセスに対する最終的なターゲティングのための回路設計の記述として、実施されてよい。後者の場合、そのような回路記述は、(たとえば、VHDLまたはVerilog)レジスタ転送レベル(RTL)回路記述、ゲートレベル回路記述、トランジスタレベル回路記述、またはマスク記述、またはそれらのさまざまな組み合わせの形をとってよい。回路記述は、一般的には、コンピュータ可読記憶媒体(CD-ROMまたは他のタイプの記憶技術など)上で実施される。
先行するセクションから、上記で説明された画像プロセッサはコンピュータシステム上のハードウェア内で(たとえば、ハンドヘルドデバイスのカメラからのデータを処理する、ハンドヘルドデバイスのシステムオンチップ(SOC)の一部として)実施され得ることを認識することが適切である。画像プロセッサがハードウェア回路として実施される場合、画像プロセッサによって処理される画像データは、カメラから直接的に受信可能であることに留意されたい。ここで、画像プロセッサは、別個のカメラの一部であってもよいし、統合されたカメラを有するコンピューティングシステムの一部であってもよい。後者の場合、画像データは、カメラから、またはコンピューティングシステムのシステムメモリから直接的に受信されてよい(たとえば、カメラは、その画像データを、画像プロセッサではなくシステムメモリに送信する)。先行するセクションにおいて説明された特徴の多くが、グラフィックスプロセッサユニット(アニメーションをレンダリングする)に適用得ることにも留意されたい。
図7は、コンピューティングシステムの例示的な記述を提供する。以下で説明されるコンピューティングシステムの構成要素の多くは、統合されたカメラと関連付けられた画像プロセッサを有するコンピューティングシステム(たとえば、スマートフォンまたはタブレットコンピュータなどのハンドヘルドデバイス)に適用可能である。当業者は、この2つを容易に詳しく説明することができよう。
図7において見られるように、基本的なコンピューティングシステムは、中央処理装置701(たとえば、複数の汎用処理コア715_1から715_Nと、マルチコアプロセッサまたはアプリケーションプロセッサ上に配置されたメインメモリコントローラ717とを含んでよい)と、システムメモリ702と、ディスプレイ703(たとえば、タッチスクリーン、フラットパネル)と、ローカルワイヤードポイントツーポイントリンク(たとえば、USB)インタフェース704と、さまざまなネットワークI/O機能705(イーサネット(登録商標)インタフェースおよび/またはセルラーモデムサブシステムなど)と、ワイヤレスローカルエリアネットワーク(たとえば、WiFi)インタフェース706と、ワイヤレスポイントツーポイントリンク(たとえば、ブルートゥース(登録商標))インタフェース707と、全地球測位システムインタフェース708と、さまざまなセンサ709_1から709_Nと、1つまたは複数のカメラ710と、バッテリ711と、電力管理制御ユニット712と、スピーカおよびマイクロホン713と、オーディオコーダ/デコーダ714とを含んでよい。
アプリケーションプロセッサまたはマルチコアプロセッサ750は、そのCPU701内の1つまたは複数の汎用処理コア715と、1つまたは複数のグラフィカル処理ユニット716と、メモリ管理機能717(たとえば、メモリコントローラ)と、I/O制御機能718と、画像処理ユニット719とを含んでよい。汎用処理コア715は、一般的には、コンピューティングシステムのオペレーティングシステムおよびアプリケーションソフトウェアを実行する。グラフィックス処理ユニット716は、一般的には、たとえば、ディスプレイ703上に提示されたグラフィックス情報を生成するために、グラフィックスを多く使用する機能を実行する。メモリ制御機能717は、システムメモリ702にデータを書き込む、またはシステムメモリ702からデータを読み取るためにシステムメモリ702とインタフェースする。電力管理制御ユニット712は、一般に、システム700の電力消費を制御する。
画像処理ユニット719は、上記で先行するセクションにおいて十分に説明された画像処理ユニット実施形態のいずれかに従って実施されてよい。代替的に、または組み合わせて、IPU719は、GPU716とCPU701のどちらかまたは両方に、そのコプロセッサとして結合されてよい。さらに、さまざまな実施形態では、GPU716は、上記で十分に説明された画像プロセッサ特徴のいずれかとともに実施されてよい。
タッチスクリーンディスプレイ703、通信インタフェース704〜707、GPSインタフェース708、センサ709、カメラ710、およびスピーカ/マイクロホンコーデック713、714の各々はすべて、適切な場合には統合された周辺デバイス(たとえば、1つまたは複数のカメラ710)も含むコンピューティングシステム全体に対するさまざまな形のI/O(入力および/または出力)として見なされてよい。実装形態に応じて、これらのI/O構成要素のうちのさまざまな構成要素が、アプリケーションプロセッサ/マルチコアプロセッサ750上で統合されてもよいし、ダイから離れて、またはアプリケーションプロセッサ/マルチコアプロセッサ750のパッケージの外部に設置されてもよい。
一実施形態では、1つまたは複数のカメラ710は、カメラとその視野内の物体と間の深度を測定することが可能なデプスカメラを含む。アプリケーションプロセッサまたは他のプロセッサの汎用CPUコア(またはプログラムコードを実行するための命令実行パイプラインを有する他の機能ブロック)上で実行されるアプリケーションソフトウェア、オペレーティングシステムソフトウェア、デバイスドライバソフトウェア、および/またはファームウェアは、上記で説明された機能のいずれかを行ってよい。
本発明の実施形態は、上記に記載されたさまざまなプロセスを含んでよい。プロセスは、機械実行可能命令内で実施されてよい。命令は、汎用プロセッサまたは専用プロセッサに特定のプロセスを行わせるために使用可能である。あるいは、これらのプロセスは、プロセスを行うためのハードワイヤード論理を含む特定のハードウェア構成要素によって行われてもよいし、プログラムされたコンピュータ構成要素とカスタムハードウェア構成要素の任意の組み合わせによって行われてもよい。
本発明の要素はまた、機械実行可能命令を記憶するための機械可読媒体として提供されてよい。機械可読媒体としては、限定するものではないが、フロッピー(登録商標)ディスケット、光ディスク、CD-ROM、および光磁気ディスク、フラッシュメモリ、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光学カード、伝搬媒体、または電子命令を記憶するのに適した他のタイプの媒体/機械可読媒体があり得る。たとえば、本発明は、通信リンク(たとえば、モデムまたはネットワーク接続)を介して搬送波または他の伝搬媒体内で実施されたデータ信号によってリモートコンピュータ(たとえば、サーバ)から要求元コンピュータ(たとえば、クライアント)に転送され得るコンピュータプログラムとしてダウンロードされてよい。
前述の明細書では、本発明は、その特定の例示的な実施形態に関して説明されてきた。しかしながら、それに対して、添付の特許請求の範囲に記載される本発明のより広い趣旨および範囲から逸脱することなく、さまざまな修正および変更がなされてよいことは明らかである。したがって、明細書および図面は、制限的な意味ではなく例示的な意味で見なされるべきである。
1 入力
100 ステンシルプロセッサアーキテクチャ
101 データ算出ユニット
102 スカラプロセッサ
103 メモリ、命令メモリ、スカラメモリ
104 I/Oユニット
105 配列、実行レーン配列
106 2次元シフト配列構造、2次元シフトレジスタ構造、レジスタ構造、2次元シフトレジスタ、シフトレジスタ
107 ランダムアクセスメモリ、メモリ
109 プログラムコントローラ
201 実行レーン、ハードウェア実行レーン
202 レジスタファイル
203 出力マルチプレクサ、マルチプレクサ構成、マルチプレクサ回路
204 マルチプレクサ構成、マルチプレクサ回路、入力マルチプレクサ
205 ALU実行ユニット、ALUユニット
301 積和(MAD)演算、MAD演算、MAD命令
302 演算、デュアル並列FW演算、デュアル並列全幅ALU演算、半幅演算
303 2倍幅ALU演算
304 演算、融合演算
306 演算、反復除算命令
401 第1のALU論理ユニット、論理ユニット、ALU論理ユニット
402 第2のALU論理ユニット、論理ユニット、ALU論理ユニット、第2のALU論理
403 積和論理ユニット、積和ユニット
404 桁上げ線
405 実行ユニット、実行ユニット回路
406 マルチプレクサ
501 第1のALU論理ユニット、論理ユニット、第1のALU
502 第2のALU論理ユニット、論理ユニット
506 マルチプレクサ
508 第2のマルチプレクサ
509 Y出力ポート
510 最下位ビット
511 減算
515 減算
517 商結果
518 商結果
700 システム
701 CPU、中央処理装置
702 システムメモリ
703 タッチスクリーンディスプレイ、ディスプレイ
704 通信インタフェース、インタフェース
705 ネットワークI/O機能
706 通信インタフェース、インタフェース
707 通信インタフェース、インタフェース
708 GPSインタフェース、全地球測位システムインタフェース
709 センサ
709_1 センサ
709_N センサ
710 カメラ
711 バッテリ
712 電力管理制御ユニット
713 マイクロホン、マイクロホンコーデック
714 デコーダ、マイクロホンコーデック
715 汎用処理コア
715_1 汎用処理コア
715_N 汎用処理コア
716 グラフィカル処理ユニット、グラフィックス処理ユニット
717 メモリ制御機能、メモリ管理機能、メインメモリコントローラ
718 I/O制御機能
719 画像処理ユニット
750 マルチコアプロセッサ

Claims (23)

  1. 積和算出ユニットと第1のALU論理ユニットと第2のALU論理ユニットとを備える実行ユニットであって、
    第1の命令であって、積和命令である第1の命令、
    第2の命令であって、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせるための第2の命令、
    第3の命令であって、前記ALU論理ユニットの他方の出力から動作する前記ALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定するための第3の命令、
    第4の命令であって、前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行うための第4の命令
    を行う実行ユニット
    を備える装置。
  2. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令は、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算も行う、請求項1に記載の装置。
  3. 前記第2の命令と前記第5の命令が、異なるデータ幅に従って演算する、請求項2に記載の装置。
  4. 前記幅の一方が8ビットであり、前記幅のもう一方が16ビットである、請求項3に記載の装置。
  5. 前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが、桁上げ項信号線と結合される、請求項1に記載の装置。
  6. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令が融合命令である、請求項1に記載の装置。
  7. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令は、前記第1のALU論理ユニットおよび前記第2のALU論理ユニットがそれぞれ結果の異なる半分を生成する2倍幅命令である、請求項1に記載の装置。
  8. 前記第2の命令、前記第3の命令、および前記第4の命令が前記第1の命令よりも多くの時間を消費せず、前記実行ユニットのサイクル時間が前記積和命令に相応する、請求項1に記載の装置。
  9. 実行レーンの配列を備える画像プロセッサであって、各実行レーンが実行ユニットを備え、前記実行ユニットが、積和算出ユニットと、第1のALU論理ユニットと、第2のALU論理ユニットとを備え、前記ALUユニットが、
    第1の命令であって、積和命令である第1の命令、
    第2の命令であって、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせるための第2の命令、
    第3の命令であって、前記ALU論理ユニットの他方の出力から動作する前記ALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定するための第3の命令、
    第4の命令であって、前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが第1の結果桁値および第2の結果桁値を決定するように動作する反復的除算演算を行うための第4の命令
    を行う、画像プロセッサ
    を備える装置。
  10. 前記画像プロセッサが2次元シフトレジスタ配列構造をさらに備え、前記2次元シフトレジスタ配列の配列場所が前記実行レーンの配列のそれぞれの実行レーンにローカルに結合する、請求項9に記載の装置。
  11. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令は、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算も行う、請求項9に記載の装置。
  12. 前記第2の命令と前記第5の命令が、異なるデータ幅に従って演算する、請求項11に記載の装置。
  13. 前記幅の一方が8ビットであり、前記幅のもう一方が16ビットである、請求項12に記載の装置。
  14. 前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが、桁上げ項信号線と結合される、請求項11に記載の装置。
  15. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令が融合命令である、請求項10に記載の装置。
  16. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令は、前記第1のALU論理ユニットおよび前記第2のALU論理ユニットがそれぞれ結果の異なる半分を生成する2倍幅命令である、請求項10に記載の装置。
  17. 前記第2の命令、前記第3の命令、および前記第4の命令が前記第1の命令よりも短い時間を消費し、前記実行ユニットのサイクル時間が、前記第1の命令によって消費される時間に相応する、請求項9に記載の装置。
  18. 前記画像プロセッサがコンピューティングシステム内にある、請求項9に記載の装置。
  19. 実行ユニットの回路設計合成ツール互換記述であって、前記実行ユニットが、積和算出ユニットと、第1のALU論理ユニットと、第2のALU論理ユニットとを備え、前記ALUユニットが、
    第1の命令であって、積和命令である第1の命令、
    第2の命令であって、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせるための第2の命令、
    第3の命令であって、前記ALU論理ユニットの他方の出力から動作する前記ALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定するための第3の命令、
    第4の命令であって、前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行うための第4の命令
    を行う、回路設計合成ツール互換記述
    を備える装置。
  20. 前記記述が、実行レーンの配列を備える画像プロセッサについてさらに記述し、前記実行レーンの1つが前記実行ユニットを備える、請求項19に記載の装置。
  21. 前記画像プロセッサが2次元シフトレジスタ配列回路をさらに備え、前記2次元シフトレジスタ配列回路の配列場所が前記実行レーンの配列のそれぞれのALUユニットにローカルに結合する、請求項20に記載の装置。
  22. 前記実行ユニットがさらに、第5の命令を行い、前記第5の命令は、同時に動作する前記第1のALU論理ユニットおよび前記第2のALU論理ユニットを用いて並列ALU演算も行う、請求項19に記載の装置。
  23. 画像プロセッサの実行ユニットを用いて、
    第1の命令を実行するステップであって、前記第1の命令が積和命令である、ステップと、
    同時に動作する第1のALU論理ユニットおよび第2のALU論理ユニットを用いて並列ALU演算を行って第2の命令の異なるそれぞれの出力結果を生じさせるステップを含む、第2の命令を実行するステップと、
    前記ALU論理ユニットの他方の出力から動作する前記ALU論理ユニットのうちの一方を用いて逐次的ALU演算を行って第3の命令の出力結果を決定するステップを含む、第3の命令を実行するステップと、
    前記第1のALU論理ユニットおよび前記第2のALU論理ユニットが第1の除算結果桁値および第2の除算結果桁値を決定するように動作する反復的除算演算を行うステップを含む、第4の命令を実行するステップ
    を行うステップ
    を含む方法。
JP2018519299A 2015-12-04 2016-10-19 画像プロセッサ用多機能実行レーン Active JP6789287B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/960,334 US9830150B2 (en) 2015-12-04 2015-12-04 Multi-functional execution lane for image processor
US14/960,334 2015-12-04
PCT/US2016/057771 WO2017095547A1 (en) 2015-12-04 2016-10-19 Multi-functional execution lane for image processor

Publications (2)

Publication Number Publication Date
JP2018532200A true JP2018532200A (ja) 2018-11-01
JP6789287B2 JP6789287B2 (ja) 2020-11-25

Family

ID=57223790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018519299A Active JP6789287B2 (ja) 2015-12-04 2016-10-19 画像プロセッサ用多機能実行レーン

Country Status (9)

Country Link
US (4) US9830150B2 (ja)
EP (2) EP3384376B1 (ja)
JP (1) JP6789287B2 (ja)
KR (1) KR102000894B1 (ja)
CN (1) CN108139886B (ja)
DE (1) DE112016005521T5 (ja)
GB (1) GB2561306A (ja)
TW (3) TWI622014B (ja)
WO (1) WO2017095547A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
US10534736B1 (en) 2018-12-31 2020-01-14 Texas Instruments Incorporated Shared buffer for multi-output display systems
CN109902795B (zh) * 2019-02-01 2023-05-23 京微齐力(北京)科技有限公司 处理单元设置有输入复用器的人工智能模块和系统芯片
US10552939B1 (en) 2019-02-12 2020-02-04 Google Llc Image processor complex transfer functions

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US542600A (en) * 1895-07-09 Lattice hedge fence and method of plashing
US4445177A (en) 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US4486848A (en) * 1982-07-28 1984-12-04 Sperry Corporation Microprocessor parallel additive execution of a computer count ones instruction
DE3851005T2 (de) 1987-06-01 1995-04-20 Applied Intelligent Syst Inc Paralleles Nachbarverarbeitungssystem und -Verfahren.
US4935894A (en) 1987-08-31 1990-06-19 Motorola, Inc. Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information
US5253308A (en) 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
WO1994009595A1 (en) 1991-09-20 1994-04-28 Shaw Venson M Method and apparatus including system architecture for multimedia communications
US5258944A (en) 1992-09-01 1993-11-02 Cray Research, Inc. High performance mantissa divider
JP3482660B2 (ja) 1993-09-08 2003-12-22 ソニー株式会社 画像データ処理装置および画像データ処理方法
US5426600A (en) 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
JPH07234778A (ja) 1994-02-22 1995-09-05 Texas Instr Japan Ltd 演算回路
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US5777918A (en) * 1995-12-22 1998-07-07 International Business Machines Corporation Fast multiple operands adder/subtracter based on shifting
EP0875031B1 (de) 1996-01-15 2001-06-20 Infineon Technologies AG Prozessor zur bildverarbeitung
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US6366289B1 (en) 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US6587158B1 (en) 1998-07-23 2003-07-01 Dvdo, Inc. Method and apparatus for reducing on-chip memory in vertical video processing
US7010177B1 (en) 1998-08-27 2006-03-07 Intel Corporation Portability of digital images
WO2000055810A1 (fr) 1999-03-16 2000-09-21 Hamamatsu Photonics K. K. Capteur de vision ultra-rapide
JP3922859B2 (ja) 1999-12-28 2007-05-30 株式会社リコー 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6745319B1 (en) 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
US7124160B2 (en) * 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
US6728862B1 (en) 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US7286717B2 (en) 2001-10-31 2007-10-23 Ricoh Company, Ltd. Image data processing device processing a plurality of series of data items simultaneously in parallel
JP4146654B2 (ja) 2002-02-28 2008-09-10 株式会社リコー 画像処理回路、複合画像処理回路、および、画像形成装置
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
WO2003088033A1 (en) 2002-04-09 2003-10-23 University Of Rochester Multiplier-based processor-in-memory architectures for image and graphics processing
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
ATE459042T1 (de) * 2003-04-15 2010-03-15 Koninkl Philips Electronics Nv Rechnersystem mit parallelität auf befehls- und draht-ebene
DE602004006516T2 (de) * 2003-08-15 2008-01-17 Koninklijke Philips Electronics N.V. Parallel-verarbeitungs-array
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
US7873815B2 (en) * 2004-03-04 2011-01-18 Qualcomm Incorporated Digital signal processors with configurable dual-MAC and dual-ALU
US20060044576A1 (en) 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
US7667764B2 (en) 2004-06-04 2010-02-23 Konica Minolta Holdings, Inc. Image sensing apparatus
JP4219887B2 (ja) 2004-12-28 2009-02-04 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
ATE504043T1 (de) 2005-04-28 2011-04-15 Univ Edinburgh Umkonfigurierbares anweisungs-zellen-array
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP2007067917A (ja) 2005-08-31 2007-03-15 Matsushita Electric Ind Co Ltd 画像データ処理装置
US7602974B2 (en) 2005-10-21 2009-10-13 Mobilic Technology (Cayman) Corp. Universal fixed-pixel-size ISP scheme
FR2895103B1 (fr) 2005-12-19 2008-02-22 Dxo Labs Sa Procede et systeme de traitement de donnees numeriques
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7882307B1 (en) * 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US20080111823A1 (en) 2006-11-13 2008-05-15 Faraday Technology Corp. Graphics processing system
EP1927949A1 (en) 2006-12-01 2008-06-04 Thomson Licensing Array of processing elements with local registers
US8321849B2 (en) 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US20080244222A1 (en) 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
JP4389976B2 (ja) 2007-06-29 2009-12-24 ブラザー工業株式会社 画像処理装置および画像処理プログラム
US8521800B1 (en) * 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
EP2663071B1 (en) 2007-09-05 2015-11-18 Tohoku University Solid-state image sensor and drive method for the same
CN102047241B (zh) 2008-05-30 2014-03-12 先进微装置公司 本地与全局数据共享
JP4999791B2 (ja) 2008-06-30 2012-08-15 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US8456480B2 (en) 2009-01-14 2013-06-04 Calos Fund Limited Liability Company Method for chaining image-processing functions on a SIMD processor
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US8429453B2 (en) 2009-07-16 2013-04-23 Hitachi, Ltd. Management system for outputting information denoting recovery method corresponding to root cause of failure
TWI398781B (zh) * 2009-08-03 2013-06-11 Hon Hai Prec Ind Co Ltd 離散餘弦轉換電路及裝置
US20110055495A1 (en) 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8436857B2 (en) 2009-10-20 2013-05-07 Oracle America, Inc. System and method for applying level of detail schemes
US8595428B2 (en) 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
US8749667B2 (en) 2010-08-02 2014-06-10 Texas Instruments Incorporated System and method for maintaining maximum input rate while up-scaling an image vertically
US8508612B2 (en) 2010-09-30 2013-08-13 Apple Inc. Image signal processor line buffer configuration for processing ram image data
US8797323B2 (en) 2011-01-18 2014-08-05 Intel Corporation Shadowing dynamic volumetric media
CN103339604B (zh) 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器系统
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US9092267B2 (en) 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US20130027416A1 (en) 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
JP5742651B2 (ja) 2011-10-15 2015-07-01 コニカミノルタ株式会社 画像処理装置、連携方法および連携プログラム
JP5746100B2 (ja) 2011-12-27 2015-07-08 京セラドキュメントソリューションズ株式会社 画像形成装置
EP2798467A4 (en) 2011-12-30 2016-04-27 Intel Corp CONFIGURABLE CORE WITH RESTRICTED COMMAND SET
US8823736B2 (en) 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
CN102637124B (zh) * 2012-03-22 2015-09-30 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
CN102750133B (zh) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
US9588766B2 (en) 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US10318308B2 (en) 2012-10-31 2019-06-11 Mobileye Vision Technologies Ltd. Arithmetic logic unit
US9378181B2 (en) 2012-11-09 2016-06-28 Intel Corporation Scalable computing array
US8954992B2 (en) 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing
US9323535B2 (en) 2013-06-28 2016-04-26 Intel Corporation Instruction order enforcement pairs of instructions, processors, methods, and systems
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure

Also Published As

Publication number Publication date
DE112016005521T5 (de) 2018-08-30
KR102000894B1 (ko) 2019-07-16
CN108139886A (zh) 2018-06-08
GB201805590D0 (en) 2018-05-23
US20190213006A1 (en) 2019-07-11
TWI680435B (zh) 2019-12-21
US20220206796A1 (en) 2022-06-30
EP3633504A1 (en) 2020-04-08
TWI622014B (zh) 2018-04-21
TW201721580A (zh) 2017-06-16
US10185560B2 (en) 2019-01-22
GB2561306A (en) 2018-10-10
EP3384376A1 (en) 2018-10-10
TW201816715A (zh) 2018-05-01
EP3384376B1 (en) 2019-12-04
TW202004655A (zh) 2020-01-16
US9830150B2 (en) 2017-11-28
CN108139886B (zh) 2021-11-16
TWI724545B (zh) 2021-04-11
US20170161064A1 (en) 2017-06-08
US20170242695A1 (en) 2017-08-24
WO2017095547A1 (en) 2017-06-08
JP6789287B2 (ja) 2020-11-25
KR20180052721A (ko) 2018-05-18
EP3633504B1 (en) 2021-10-06

Similar Documents

Publication Publication Date Title
US20220043652A1 (en) Systems, methods, and apparatus for tile configuration
KR102232722B1 (ko) 프로그램 가능한 2차원 이미지 프로세서상의 컨볼루션 신경망
KR102278658B1 (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
US20220206796A1 (en) Multi-functional execution lane for image processor
JP5089776B2 (ja) 浮動小数点演算のための再構成アレイプロセッサ
Yu et al. Vector processing as a soft-core CPU accelerator
TWI752343B (zh) 用於執行絕對差計算之加總的執行單元電路、影像處理器以及方法
JP6745389B2 (ja) 低減された配線複雑度を有するシフトレジスタ
CN107533460B (zh) 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令
CN110909883A (zh) 用于执行指定三元片逻辑操作的指令的系统和方法
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
EP1936492A1 (en) SIMD processor with reduction unit
US20050055394A1 (en) Method and system for high performance, multiple-precision multiply-and-add operation
Hansson et al. Case study of efficient parallel memory access programming for the embedded heterogeneous multicore DSP architecture ePUMA
WO2008077803A1 (en) Simd processor with reduction unit
CN115857872A (zh) 针对每个矩阵维度的多个片的矩阵操作

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191216

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20191218

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20191220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200825

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201102

R150 Certificate of patent or registration of utility model

Ref document number: 6789287

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250