JP6745389B2 - 低減された配線複雑度を有するシフトレジスタ - Google Patents

低減された配線複雑度を有するシフトレジスタ Download PDF

Info

Publication number
JP6745389B2
JP6745389B2 JP2019139835A JP2019139835A JP6745389B2 JP 6745389 B2 JP6745389 B2 JP 6745389B2 JP 2019139835 A JP2019139835 A JP 2019139835A JP 2019139835 A JP2019139835 A JP 2019139835A JP 6745389 B2 JP6745389 B2 JP 6745389B2
Authority
JP
Japan
Prior art keywords
shift
processing unit
data
unit cell
circuit
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.)
Active
Application number
JP2019139835A
Other languages
English (en)
Other versions
JP2019207745A (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 JP2019207745A publication Critical patent/JP2019207745A/ja
Application granted granted Critical
Publication of JP6745389B2 publication Critical patent/JP6745389B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/38Digital stores in which the information is moved stepwise, e.g. shift registers two-dimensional, e.g. horizontal and vertical shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/14Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components sensitive to infrared radiation, light, electromagnetic radiation of shorter wavelength or corpuscular radiation and specially adapted either for the conversion of the energy of such radiation into electrical energy or for the control of electrical energy by such radiation
    • H01L27/144Devices controlled by radiation
    • H01L27/146Imager structures
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01PWAVEGUIDES; RESONATORS, LINES, OR OTHER DEVICES OF THE WAVEGUIDE TYPE
    • H01P5/00Coupling devices of the waveguide type
    • H01P5/12Coupling devices having more than two ports
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/17744Structural details of routing resources for input/output signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/10Cameras or camera modules comprising electronic image sensors; Control thereof for generating image signals from different wavelengths
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/907Television signal recording using static stores, e.g. storage tubes or semiconductor memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Electromagnetism (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Logic Circuits (AREA)
  • Shift Register Type Memory (AREA)
  • Image Processing (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Manipulation Of Pulses (AREA)

Description

関連出願
本願は、その全体が参照により組み込まれている、2015年12月4日に出願した、「Shift Register With Reduced Wiring Complexity」と題する、米国仮出願第62/263,530号の利益を主張する。
発明の分野は、一般的にコンピューティングサイエンスに関し、より具体的には、低減された配線複雑度を有するシフトレジスタに関する。
画像処理は、配列で構成されているピクセル値の処理を一般的に伴う。ここで、空間的に組織化された2次元アレイは、画像の2次元的特質をキャプチャする(追加の次元は、時間(例えば、2次元画像のシーケンス)およびデータタイプ(例えば、色)を含み得る)。一般的なシナリオにおいては、配列化されたピクセル値は、静止画をまたはモーションの画像をキャプチャするために一連のフレームを生成したカメラによって提供される。従来の画像プロセッサは、二極化したいずれかの一端に一般的に行き着く。
第1の一端は、汎用プロセッサまたは汎用的なプロセッサ(例えば、ベクトル命令エンハンスメントを有する汎用プロセッサ)において実行されるソフトウェアプログラムとして画像処理タスクを行うことである。第1の一端は、汎用性の高いアプリケーションソフトウェア開発プラットフォームを一般的に提供するが、関連するオーバーヘッド(例えば、命令フェッチおよびデコード、オンチップおよびオフチップデータの処理、投機的実行)を伴う微細な粒度のデータ構造の使用により、プログラムコードの実行中にデータのユニットあたりで消費されるエネルギーが最終的により多くの量となってしまう。
第2の反対側の一端は、固定機能のハードワイヤード回路をかなり大規模なデータのブロックに適用することである。カスタム設計された回路に直接適用される大規模(より微細な粒度の対語として)なデータのブロックの使用は、データのユニットあたりの電力消費を大幅に低減する。しかしながら、カスタム設計された固定機能の回路の使用は、一般的に、プロセッサが行うことができるタスクのセットが制限されることになる。そのため、(第1の一端に関連する)汎用性の広いプログラミング環境は、第2の一端が欠けている。
改善されたデータのユニットあたりの電力効率を伴った汎用性の高いアプリケーションソフトウェア開発状況という両端を提供する技術プラットフォームが、まだ見つかっていない望ましいソリューションとして残っている。
シフトレジスタを記載している。シフトレジスタは、複数のセルと、レジスタ空間とを含む。シフトレジスタは、シフト済みデータを受信する入力とシフト済みデータを送信する出力とを有する回路を含む、ここで、i)第1の論理的な順序のセルと第2の論理的な順序のセルとの間に物理的に位置するセルの回路は、論理的なシフトを行わないように構成され、ii)直前にある論理的な順序のセルによって送信されたシフト済みデータを受信するために接続されたセルの回路は、シフトレジスタによって実行されるシフトコマンドで指定されたシフトの量を割り当てられている入力において受信されるデータをローカルレジスタ空間に書き込むための回路を含み、iii)直後にある論理的な順序のセルにシフト済みデータを送信するために接続されたセルの回路は、データが受信された入力のシフト量から増分したシフト量を割り当てられている出力からデータを送信する回路を含む。
シフトレジスタのセルは、それぞれの入力においてそれぞれのデータアイテムを受信するための手段であって、入力は各々、異なるそれぞれのシフト量を割り当てられている、手段を有する形で表される。シフトレジスタのためのセルはまた、シフトコマンドによって指定されたシフト量を有する入力のうちの1つにおいて受信されるデータアイテムのうちの1つをレジスタ空間に書き込むための手段を有する。シフトレジスタのためのセルはまた、他のデータアイテムがそれぞれ受信されるそれぞれの入力のものより増分的により高いシフト量を割り当てられているそれぞれの出力から他のデータアイテムを送信するための手段であって、増分的により高いシフト量は、シフトコマンドによって指定されたシフト量未満である、手段を有する。シフトレジスタのセルはまた、レジスタ空間からデータアイテムを読み込み、1という大きさを有するシフト量を割り当てられている出力から読み込んだデータアイテムを送信するための手段を有する。
以下の説明および添付の図面は、発明の実施形態を図示するために使用される。
閉ループシフトレジスタを示す図である。 厳密な論理的な順序でレイアウトされていないセルを有する閉ループシフトレジスタを示す図である。 厳密な論理的な順序でレイアウトされておらず単一のサイクルにおいて異なるシフト量をサポートするセルを有する閉ループシフトレジスタを示す図である。 単一のサイクルにおいて異なるシフト量をサポートする改善されたシフトレジスタのための機構を示す図である。 図3のシフトレジスタのセルのサポートロジック回路のためのユニットセル設計を示す図である。 シフトレジスタによる異なるシフト動作を示す図である。 シフトレジスタによる異なるシフト動作を示す図である。 シフトレジスタによる異なるシフト動作を示す図である。 図5a、5b、および5cのシフトレジスタとは異なる物理的なレイアウトを有するシフトレジスタによるシフト動作を示す図である。 シフト処理ユニットセルロジック回路設計を示す図である。 双方向シフトレジスタを示す図である。 2次元シフトレジスタアレイを示す図である。 シフトレジスタのインスタンスの応用を使用した2次元シフトレジスタアレイのための設計を示す図である。 2次元シフトレジスタの水平シフトレジスタと垂直シフトレジスタとの間の接続を示す図である。 2次元シフトレジスタの水平シフトレジスタユニットセル回路と垂直シフトレジスタユニットセル回路との間の接続を示す図である。 本明細書に記載したようなシフトレジスタによって行われる方法の手順を示す図である。 画像プロセッサのステンシルプロセッサコンポーネントを示す図である。 コンピューティングシステムを示す図である。
図1は、8という次元を有する例示的な閉ループシフトレジスタ回路100を示している。ここで、一意なデータが、8つのセルの各々に記憶されている。シフトコマンドがあると、各レジスタの内容は、1番目のセルにその内容をロールバックする8番目のセルを除くすべてのセルに関して「右に」セル1つ分シフトすることになる。すなわち、セル0は、その内容をセル1にシフトすることになり、セル1は、その内容をセル2にシフトすることになり、その他も同様にシフトすることになり、セル7は、その内容をセル0にシフトすることになる。
図1は、シフトレジスタの例示的な物理的なレイアウトを図示している。図1でみられるように、セルは、論理的な順序で物理的にレイアウトされている。すなわち、セル0は、セル1の隣に物理的に隣接しており、セル1は、セル2の隣に物理的に隣接しており、以下同様である。論理的な順序でセルを物理的にレイアウトすることの問題は、配線101の長さである。ここで、当業者に理解されているように、より長い配線は、よい多く抵抗および容量、すなわち、所与のドライブ強度に対するより低速の伝搬遅延(または、逆に言えば、他のセル間のより短い長さの配線と同一の伝搬遅延で配線101をドライブしようとした場合にはセル7の出力ドライバによるより多くの電力消費)に対応することになる。ここで、信号配線は、RCの影響を大きく受ける。そのため、遅延は、リピータが挿入されると、線形的に距離に比例することになる。配線101が他のセル間のより短い配線と比較してより長い伝搬遅延を有していると仮定すると、さらにより短い出力の配線を有するセル0から6が、セル7がセル0にその内容をシフトすることができるよりもさらに速く、それらの隣接セルにそれらの内容をシフトすることができたとしても、シフトレジスタ100のパフォーマンスは、配線101によって制限されることになる。
上述した問題に対するソリューションは、それらの論理的な順序とは異なる順序でシフトレジスタのセルを物理的にレイアウトすることである。図2aは、図1のシフトレジスタに対する本アプローチを実例説明している。図2aでみられるように、セル1は、セル5の隣に物理的に位置している。それらの論理的な順序とは異なる順序でセルを物理的にレイアウトすることによって、図2aのシフトレジスタ内の最長の配線は、図1の配線101より短くなり、このことは、同様に、図1のシフトレジスタと比較して図2aのシフトレジスタによる潜在的なより優れたパフォーマンスに対応する。
図1および2aのシフトレジスタの両方とも+1のシフトレジスタのみを図示している(シフトレジスタはデータ内容を右に1つの論理ユニットセル分シフトすることのみが可能となっている)。図2bは、+1のシフトだけでなく+2のシフトもサポートするようにさらに設計された場合の図2aのシフトレジスタを示している。すなわち、単一のサイクルにおいて、図2bのシフトレジスタの任意のセルは、その次の論理的な隣またはその2番目に次の論理的な隣のいずれかにその内容をシフトすることができる。
例えば、図2bの直接配線から、セル0は、(配線201を介して)セル1または(配線202を介して)セル2にその内容をシフトすることができる。しかしながら、図2bの直接配線アプローチの問題は、配線複雑度である。端的に言って、図2aと2bとを比較すると、もう1つの論理的なシフトを単に導入することによって、図2aの回路と比べてかなりの数のより長い配線が図2bの回路に導入されている。配線複雑度問題は、(ユニットセルの数の観点で)より大きい次元のシフトレジスタおよび/またはより多様な論理的なシフト(例えば、+1、+2、+3、および+4)をサポートするシフトレジスタについてはその問題が悪化する。r個のレジスタを用いて、+nのシフトをサポートするためには、図2bのアプローチでは、2*(n-1)個のユニット長の最長の配線を有するr*n本の配線が必要となる。
そのため、例えば、多様な論理的なシフトの選択肢を有する大規模な次元のシフトレジスタためのより優れたシフトレジスタ設計が必要となる、ここで、より高いパフォーマンス且つ低減された電力消費が望ましい。
図3は、改善されたシフトレジスタ設計300の物理的機構を示している。図3でみられるように、シフトレジスタ300は、そのサポートロジックが上部301および下部302を有する複数のユニットセルとしてみなすことができる。論理的および物理的なシフトが、シフトレジスタを一周する「ループ」内で一方向に生じる。様々な実施形態において、上部301が一方向に(例えば、右に)物理的にシフトすると想定し得るし、下部302がもう一方の方向に(例えば、左に)物理的にシフトすると想定し得るし、すべての論理的なシフトが同一の方向(例えば、正または「+」)という場合もある。図3でみられるように、各ユニットセルをサポートするそれぞれのロジック回路303_0から303_Nは、両方の物理的方向にシフトすることを行うことができる。
図4は、図3のサポートロジック回路303_1から303_Nのためのユニットセルロジック回路設計401、402を示している。図4の各ユニットセルロジック設計401、402は、一方向にシフトすることをサポートすることを可能としている。そのため、図3のシフトレジスタのサポートロジック303_1から303_Nの各インスタンスは、図4のユニットセルロジック設計401、402から選択したユニットセルロジックの2つのインスタンス(すなわち、各方向について1つの選択したユニットセルロジック設計、または、別の方法では、上部について1つの選択および下部について1つの選択)を有する。
さらに以下でより詳細に説明しているように、どちらの特定のユニットセルロジック設計を任意の特定のユニットセルのサポートロジックの任意の特定の方向/部分について選択するかは、シフトレジスタのユニットセル間の論理的関係全体に関連する各セルの物理的なレイアウト位置についての働きによる。そのため、シフトレジスタ内のそれらの論理識別子および物理的位置に応じて、いくつかのユニットセルは、ユニットセル401の2つのインスタンスを有し得るし、他のユニットセルは、ユニットセル402の2つのインスタンスを有し得るし、さらに他のユニットセルは、ユニットセル401の1つのインスタンスおよびユニットセル402の1つのインスタンスを有し得る。単なる一例として、図4のユニットセル401、402は、+1、+2、+3、および+4の論理的なシフトを行うことができるシフトレジスタのためのものである。以下で詳細に説明しているような設計アプローチ全体にそのまま一致する一方で、他のシフト量のスキームが可能である。
図4の2つのユニットセルは、シフト処理ユニットセル401と非シフト処理(または、「ストレートスルー」)ユニットセル402とを含む。シフト処理ユニットセル401は、入力データ内容を隣接セルから受信する。ここで、各入力は、入力において受信されるデータに既に適用し終えた論理的なシフトの量を表している。例として、+1の入力において受信されたデータは、シフト処理ユニットセル401におけるその受信時までに論理的に1回シフトされていて、+2の入力において受信されたデータは、シフトセル401におけるその受信時までに論理的に2回シフトされていて、+3の入力において受信されたデータは、シフトセル401におけるその受信時までに論理的に3回シフトされていて、+4の入力におけるデータは、シフトセル401におけるその受信時までに論理的に4回シフトされている。
シフトセル401はまた、送信されるデータがシフトセル401から送信される時点でどれくらいシフトされているかを示す出力を有する。すなわち、+1の出力は、シフトセル401によって送信される時点で論理的に1回シフトされているデータに対応し、+2の出力は、シフトセル401によって送信される時点で論理的に2回シフトされているデータに対応し、+3の出力は、シフトセル401によって送信される時点で論理的に3回シフトされているデータに対応し、+4の出力は、シフトセル401によって送信される時点で論理的に4回シフトされているデータに対応する。
定義上は、+1の出力において送信されるデータは、ユニットセルのローカルレジスタ空間403から読み込まれる。すなわち、ローカルレジスタ403から読み込まれユニットセル401から次のセルに送信されるデータは、それが送信される時点で+1ほどシフトされる。そのため、+1の出力は、シフト処理ユニットセル401のローカルレジスタ空間403に接続される。同様に、+2の出力から送信されるデータは、それがシフト処理ユニットセル401によって受信された時点で+1ほど既にシフトされていたものでなければならない。そのため、+2の出力は、+1の入力によって直接供給される。同様の理由により、+3の出力は、+2の入力によって直接供給され、+4の出力は、+3の入力によって直接供給される。
シフトセルが入力データに適用する処理は、シフト量コマンド(例えば、+1、+2、+3、+4)に依存する。シフトコマンドより少ないシフト量に対応する入力(例えば、入力データが+1の入力において受信されシフトコマンドが+3である)については、シフトセル401は、入力データを次のより高いシフト出力上で再送信する(例えば、+3のシフトコマンドについては、データがローカルレジスタ403から読み込まれ+1の出力において送信され、+1の入力において受信されたデータが+2の出力から送信され、+2の入力において受信されたデータが+3の出力から送信される)。シフトコマンドと同一のシフト量を有する入力において受信された入力データ(例えば、入力データが+3の入力において受信され且つシフトコマンドが+3である)については、ユニットセルは、そのローカルレジスタ空間403に入力データを記憶する。以下の説明から明らかとなっているように、シフトコマンドより大きいシフト量を有する入力および出力は、必然的にセルによって使用されない(例えば、+3のシフトコマンドについては、任意のセルの+4の入力または+4の出力にはデータは現れない)。
ローカルレジスタ空間403は、ある実施形態においては、データの幅は2倍であり、自身の内部にシフト能力を有している。ここで、第1の時間フレーム(例えば、第1のハーフサイクル)の間に、データが、レジスタ空間403_1の「第1の」ハーフから読み込まれ、データは、それらの適切な入力/出力経路に沿ってユニットセル間をシフトレジスタを介して伝搬される。第2の時間フレーム(例えば、第2のハーフサイクル)の間に、データが、各ユニットセルにおいてローカルに、レジスタ空間403_2の「第2の」ハーフに書き込まれる。レジスタ空間403のどの部分から読み込むのか(すなわち、どちらのハーフが「第1の」ハーフであるか)およびどの部分に書き込むか(すなわち、どちらのハーフが「第2の」ハーフであるか)が、連続したサイクル間で切り替わる。本プロセスによれば、様々な量のシフト(例えば、+1、+2、+3、および+4)が各々単一のサイクルにおいて生じ得る。しかしながら、他のアプローチを使用してレジスタ空間を実装してもよい、との気付きは的を射たことである。例えば、別の実施形態においては、フロップベースのマルチポートレジスタファイルが使用されてもよく、そこではすべてのデータがクロックエッジで読み込みまたは更新される。さらに他の可能な実施形態が存在してもよい。
ストレートスルーセル402は、あるシフト量をシフトセルのある入力/出力に割り当てるスキームに支障を来たさないように、論理的な順序以外の順序でセルの物理的なレイアウトを可能にするために使用される。すなわち、的確な論理的なシフト順序が、ストレートスルーユニット402によって、つまり、入力ノードにおいて受信されるものと同一のシフト量で各出力ノードを供給することによって保たれる。そのため、論理的な順序における2つのシフト処理ユニットセルがそれらの間に1つまたは複数の他のセルを物理的に有している場合には、これらの他のセルは、送信ユニットセルの出力において送信されるとともに受信シフト処理ユニットセルの入力において受信される際の的確なシフト量を保持するために、ストレートスルーセルを有している。
図5aから5cは、+1、+2、+3、および+4のシフトをサポートする次元が10のシフトレジスタによって確立されたデータ経路を検討している。上記説明と整合して、セルの各々のためのサポートロジック回路は、一方向に(「右に」)データをシフトする4つの入力および4つの出力を有する上半分と、もう一方の方向に(「左に」)データをシフトする4つの入力および4つの出力をまた有する下半分とを有しているとみなすことができる。セルが純粋な論理的な順序以外の順序で物理的にレイアウトされている(すべてのセルがその論理的な順序の隣接関係上の隣に物理的に存在するわけではない)ことに留意されたい。
以下の説明から明確になっているように、ユニットセル1、2、3および4のサポートロジック回路は、その上半分にあるシフト処理ユニットセルとその下半分にあるストレートスルーユニットセルとを有する。一方、ユニットセル9、8、7、6のためのサポートロジックは、その上半分にあるストレートスルーユニットセルおよびその下半分にあるシフト処理ユニットセルを有する。ユニットセル5は、その上部にあるシフト処理ユニットセルの受信部分およびその下部にあるシフト処理ユニットセルの送信部分から構成される。ユニットセル0は、その下部にあるシフト処理ユニットセルの受信部分およびその上部にあるシフト処理ユニットセルの送信部分から構成される。セル0および5の両方については、受信部分の入力は、シフト処理ユニットセル401の設計と整合するように送信部分に有線接続されている。
図5aは、+1のシフトの動作を示している。ここで、その受信側においてその論理的な順序の隣接関係上の隣に各々が物理的に存在しているセル1から4を用いて、各セルの上部は、その的確な論理的な隣からデータを直接受信することになる。そのため、上述したように、セル1から4の上部は、+1のシフトに関する的確なシフト機能を実施していると認められる。すなわち、セル1から4の各々の上部は、その+1の入力においてデータを受信し、そのローカルレジスタ空間にそれを記憶する。加えて、ユニットセル1から4の各々は、そのローカルレジスタ空間からデータを読み込み、その+1の出力からそれを送信する。
ユニットセル4と5とは、ユニットセル9、8、7および6によって物理的に分離されている。そのため、ユニットセル9、8、7および6の上半分は、ストレートスルー機能を実施していると認められる。ユニットセル9、8、7および6の上半分がストレートスルー機能を実施しているため、ユニットセル5は、的確なシフト量を反映している入力において(すなわち、その+1の入力において)ユニットセル4によって送信されたデータを受信する。そのため、ユニットセル5の上部は、シフト処理ユニットセルの受信側機能を実行していると認められる。ユニットセル5の下部は、シフト処理ユニットセルの送信側機能を実行する。シフトレジスタ全体の下部の実行が、(ユニットセル0がその下部では受信側シフトセル機能およびその上部では送信側シフト処理ユニットセル機能を実行していることを除いて)異なる方向であること以外上部と同一である。すべてのセルのユニットセルロジックが+1の入力および出力のみを使用していることに留意されたい。すなわち、すべてのユニットセルの+2、+3、および+4の入力および出力はデータを搬送しない。
図5bは、+2のシフトを行う同一のシフトレジスタを示している。ここで、この場合も同様に、セル1から4の上部は、+2のシフトに関するシフト処理ユニットセル機能を実施していると認められる。これらのセルの各ユニットは、その+2の入力において受信したデータをローカルに記憶し、そのローカルレジスタの内容をその+1の出力から送信し、その+1の入力において受信したデータをその+2の出力から送信する。ここで、+1および+2のデータ入力および出力はセルによって使用されているが+3および+4の入力および出力は使用されていないことに留意されたい。同様に、ユニットセル9、8、7および6の上部によって実施されるストレートスルー機能は、+1および+2の両方の入力および出力を使用する。既に述べたように、終端ユニットセル5は、その上部では+2の受信側シフト処理ユニットセル機能を、その下部では+2の送信側シフト処理ユニットセル機能を実施する。同様に、終端ユニットセル0は、その下部では+2の受信側シフト処理ユニットセル機能を、その上部では+2の送信側シフト処理ユニットセル機能を実施する。
図5cは、+3のシフトを行う同一のシフトレジスタを示している。セル1から4の上部は、+3のシフトに関するシフト処理ユニットセル機能を実施していると認められる。これらのセルの各々は、その+3の入力において受信したデータをローカルに記憶し、そのローカルレジスタの内容をその+1の出力から送信し、その+1の入力において受信したデータをその+2の出力から送信し、その+2の入力において受信したデータをその+3の出力から送信する。ここで、+1、+2、および+3のデータ入力および出力はユニットセルによって使用されているが+4の入力および出力は使用されていないことに留意されたい。ユニットセル9、8、7および6の上部によって実施されるストレートスルー機能は、+1、+2、および+3の入力および出力を使用する。既に述べたように、終端ユニットセル5は、その上部において+3の受信側シフト処理ユニットセル機能を、その下部において+3の送信側シフト処理ユニットセル機能を実施する。同様に、終端ユニットセル0は、その下部では+3の受信側シフト処理ユニットセル機能を、その上部では+3の送信側シフト処理ユニットセル機能を実施する。
図6は、物理的なレイアウトが異なっていることを除いて上述したものと同一の原理に従って設計された別の次元が10のシフトレジスタを示している。ここで、図6の設計は、(図5aから5cの設計と同様に)論理的な順序でレイアウトされている5つのセルのセットおよび5つの隣接するストレートスルーセルのセットの代わりに、論理的な順序でレイアウトされている2つのセルのセットおよび2つの隣接するストレートスルーセルのセットを有する。図6は、図6のシフトレジスタによって行われる+1のシフトを示している。
図5aのシフトレジスタと図6のシフトレジスタとを比較すれば、図6のシフトレジスタ(図6中には1セル距離が4ホップ存在している)と比べてより多くの最短可能距離ホップを有している(図5a中には1セル距離が8ホップ存在している)と図5aのシフトレジスタを特徴付けることができることに留意されたい。加えて、図5aのシフトレジスタは、図6のシフトレジスタと比べてより長い最大距離ホップを有している(図5aのシフトレジスタが5セルの最大ホップ距離を有している一方で、図6のシフトレジスタは3セルの最大ホップ距離を有している)。
そのため、図6のシフトレジスタは、図5aのシフトレジスタより速いはずである。回路のおおまかな原理および特性は、遅延(距離)が増大するのに先立ってセルをレジスタの最大シフト量以下の論理的な順序で物理的にグループ分けし得ることである。図5aのシフトレジスタは、最大シフトレジスタ量(4)より大きい量(5)で論理的な順序でセルを物理的にグループ化している一方で、図6のシフトレジスタはしていない。そのため、この場合も同様に、図6の回路は、図5aの回路より速いはずである。
図7は、シフト処理ユニットセル401のためのロジック設計の実施形態701を示している。ここで、マルチプレクサ701は、シフトコマンドに基づいてシフト済み入力のどれをそのローカルレジスタ空間に書き込むかを選択する。すなわち、シフトコマンドによって指定されたシフトの量は、マルチプレクサ701のチャネル選択入力を対象としている。回路はまた、内部制御信号を利用し、第1の内部制御信号は、何らかのシフト(+1、+2、+3または+4)が発生しているかどうかを示し、+1の出力を有効にするために使用される。第2の内部制御信号は、+2、+3または+4のシフトが発生しているかどうかを示し、+2の出力を有効にするために使用される。第3の内部制御信号は、+3または+4のシフトが発生しているかどうかを示し、+3の出力を有効にするために使用される。第4の内部制御信号は、+4のシフトが発生しているかどうかを示し、+4の出力を有効にするために使用される。データ経路はマルチビットデータ経路であると理解され、ワイドデータワードをそれらに沿って搬送することができる。
上記の説明では、一方向に(+、または「右に」)シフトするシフトレジスタに焦点を当てていた。図8は、両方向に(+や右に、-や左に)シフトすることができる双方向レジスタの高次の図を示している。ここで、双方向シフトレジスタは、+のシフトレジスタのためにサポートユニットセルロジック801を構成し、-のシフトレジスタのためにサポートユニットセルロジック802を構成し、同一のレジスタ空間803に両方向に関して同一の論理セルを接続する(簡潔にするために図8は1つのセルのための接続のみを示している)ことによって実装されている。+のシフトレジスタ801のためのロジック設計は、例えば、図5a〜cおよび6に関して上述したようなことと同一である一方で、-のシフトレジスタ802のためのロジック設計も、シフトおよびデータフロー方向が時計回りの方向ではなく反時計回りの方向であること以外、図5a〜cに関して上述したようなことと同一である。+のシフトを実装するために、+のロジック801が使用され、-のロジックは使用しない。-のシフトを実装するために、-のロジック802が使用され、+のロジック801は使用しない。そのため、どちらの方向のシフトも追加の配線リソースを消費することなく可能となっている。すなわち、配線が+のシフト方向と-のシフト方向との間で共有される。例えば、図7のデータ+4出力の配線はまた、同一のユニットセルに対するデータ-4入力の配線のためのバイパス配線を実装するために使用され得る。そのため、本設計は、かなりの配線削減効率を可能としている。
図9は、2次元シフトレジスタアレイ900を示している。図9でみられるように、2次元シフトレジスタアレイは、レジスタの2次元アレイを効率的に形成する、多数の行または列のレジスタを含む。セル間の矢印は、2次元レジスタアレイが右、左、上、または下にシフトすることが可能であることを示している(図面を簡易にするために、任意の行または列に沿ったループバック能力が存在し得るが図示はしていない)。そのため、2次元シフトレジスタアレイは、SHIFT(+/-X; +/-Y)形式のシフトコマンドをサポートし得る、ここで、Xは、行軸に沿ったシフト量に対応し、Yは、列軸に沿ったシフト量に対応し、極性(+または-)は、どちらかの軸に沿ったシフトの方向(行軸に沿った左もしくは右または列軸に沿った上もしくは下)を示す。2次元シフトレジスタは、さらに以下で詳細に説明しているように、例えば、画像プロセスにおいて実装され得る。
図10は、図3から6について詳細に上述した基本シフトレジスタ設計から構成される2次元シフトレジスタの高次の図を示している。ここで、ロジック回路インスタンス1001_1から1001_Nは、特定の行軸に沿ったシフトレジスタのためのユニットセルロジック回路をそれぞれ実装している、ここで、各シフトレジスタは、上述したシフトレジスタ設計原理を実装している。回路1001_1は、第1の行に沿ったシフトレジスタを実装するために使用されるロジック回路に対応し、回路1001_2は、第2の行に沿ったシフトレジスタを実装するために使用されるロジック回路に対応し、以下同様である。図面を簡易にするために、回路は、一方向におけるシフト能力のみを示している、しかしながら、インスタンス1001_1から1001_Nの各々は、図8について上述した原理と整合性が取れる双方向シフト能力を実施してもよい。
同様に、ロジック回路インスタンス1002_1から1002_Mは、特定の列軸に沿ったシフトレジスタのためのユニットセルロジック回路をそれぞれ実装している、ここで、各シフトレジスタは、上述したシフトレジスタ設計原理を実装している。回路1002_1は、第1の列に沿ったシフトレジスタを実装するために使用されるロジック回路に対応し、回路1002_2は、第2の列に沿ったシフトレジスタを実装するために使用されるロジック回路に対応し、以下同様である。この場合も同様に、図面を簡易にするために、回路は、一方向におけるシフト能力のみを示している、しかしながら、インスタンス1002_1から1002_Nの各々は、図8について上述した原理と整合性が取れる双方向シフト能力を実施してもよい。
図10の回路インスタンス1001、1002が、水平シフト能力を示す回路1001および垂直シフト能力を示す回路1002を用いてシフトレジスタのセルを実装するために使用されるロジック回路を図示していることに留意されたい。同一のアレイセルに関連付けられた水平シフトおよび垂直ユニットセルシフト回路は、同一のレジスタ空間に接続されている。水平シフトを実装するために、水平シフト回路1001_1から1001_Mが、すべての行に沿った水平シフト処理を達成するために使用され、垂直シフトを実装するために、垂直シフト回路1002_1から1002_Mが、すべての列に沿った垂直シフトを実装するために使用される。
2次元シフトレジスタを実装することに伴う問題は、例えば、水平シフトおよび垂直シフトを単一のコマンド(例えば、SHIFT(+3, +4))で行うことができるように、水平シフト回路1001を垂直シフト回路1002に接続することである。図11は、10x10の2次元シフトレジスタアレイの物理的なレイアウトを示している、ここで、各行のレジスタ回路は、図5aから5cの物理的なセルレイアウトを実装し、各列のレジスタ回路は、図5aから5cの物理的なレイアウトを実装している。ここで、アレイのセルは、Q/R形式の数値シンタックスを含み、Qは、垂直論理セル割り当てを表し、Rは、水平論理セル割り当てを表す(図11の左および上の端に沿って見えている「行」および「列」ラベルは物理的な行および列に対応している)。そのため、任意の行にわたるRの値だけに注目すれば、図5aから5cのセルパターンが見て取れる。加えて、任意の列にわたるQの値だけに注目すれば、図5aから5cのセルパターンがまた見て取れる。
水平シフトのみが必要な場合には、データシフトは行のみに沿って生じる(図10の回路インスタンス1001のみを使用する)。垂直シフトのみが必要な場合には、データシフトは列のみに沿って生じる(図10の回路インスタンス1002のみを使用する)。水平および垂直シフトの両方が発生する場合には、データユニットを、例えば、まず水平にシフトして次に垂直にシフトする実施形態においては、特定の行から的確な論理垂直セルに的確にシフトする必要がある。例として、行0に沿ったすべてのセルは、垂直論理セル0(それらのRの値の各々が0)内に存在するとしてみなされる。+1のシフトアップを行うためには、行0の各セルの内容を、1という垂直論理値を有するセルにシフトする必要がある(すなわち、内容を、各々が1というQの値を有するセルにシフトする必要がある)。したがって、矢印1101は、的確なシフトを論理的に行う物理配線を示している。
図12は、水平シフトロジックと垂直シフトロジックとの間の接続の例を示している。ここで、例えば、シフト処理ユニットセル1201は、図11中の行0の任意のセルのための水平シフトロジックに対応する。したがって、シフト処理ユニットセル1202は、データが水平移動から垂直移動にシフトするように変換するために水平シフトロジック1201がシフトする先のセルの垂直シフトロジックに対応する。この特定の例においては、垂直シフトロジック1202は、水平シフトロジック1201と同一の列にあるが1という論理垂直値を有する(すなわち、1というQの値を有する)垂直シフトロジックに対応する。そのため、例として、回路1201は、図11のセル1102のための水平シフト回路に対応し、回路1202は、図11のセル1103のための垂直シフト回路に対応している。
水平次元から垂直次元へのシフトの動作は、+1の水平シフトに対応する。そのため、データは、次のより高い垂直論理値を有するセル(例えば、0というQの値を有するセル1102から1というQの値を有するセル1103に)の+1の入力において受信される。データが+1の入力において垂直シフト回路にシフトされると、垂直シフト回路の動作は、詳細に上述したような動作をする(例えば、+2の垂直移動が必要な場合には、+1の垂直シフト済みデータは、+2の信号ラインにシフトアップされ次の論理的により高いセルのレジスタに書き込まれることになる)。
水平から垂直への接続は、図11中の行0から3の各々については接続1101に類似している。一方、接続1104は、4というQの論理値から5というQの論理値への接続には行4から行9へのジャンプが必要になるため、より長くなる。図12にはマルチプレクサ1203が存在することに留意されたい。ここで、実施形態に従って、水平シフトは、任意のシフトコマンドに対して垂直シフトの前に行われる。すべての水平シフト処理が完了してシフトコマンドを満足した際に、垂直シフトがコマンドで指定されていない場合には、マルチプレクサ1203は、水平シフト回路1201のローカルレジスタへの書き込むチャネルを有効にする。一方、コマンドが垂直シフトを指定している場合には、シフトコマンドによって指定されたすべての水平シフト処理が完了すると、マルチプレクサ1203は、垂直シフト回路1202にデータをルーティングするチャネルを有効にする。+1のみの垂直シフトが指定されていた場合、データは、シフト回路1202のローカルレジスタ空間に書き込まれる。より多くの垂直シフト処理が指定されていた場合には、ユニットセル1201からユニットセル1202までシフトされたデータは、ユニットセル1202の+2の出力から送信される。
シフトレジスタ全体の合成プロセスにおけるグリッチを避けるために、EDAコンパイラで用いるシフトレジスタの回路記述(例えば、合成ツールで用いるRTL記述)を2つの別個のシフトレジスタに分けてもよい、との気付きは的を射たことである。例えば、第1のシフトレジスタを、例えば、開始端(セル0)において送信側シフト処理ユニットセル回路と終端(セル5)において受信側シフト処理ユニットセル回路とを用いる前述した図5a〜5cのシフトレジスタの上部として記述してもよい。第2のシフトレジスタを、例えば、前述した図5aから5cのシフトレジスタの下部として記述してもよい。シフトレジスタを2つの別個のシフトレジスタ記述に分けることによって、合成ツールがシフトレジスタの設計のような論理的な「ループ」で有し得る任意の問題を回避することができる。
図13は、上述したようなシフトレジスタのセルによって行われる方法の手順を示している。方法は、それぞれの入力においてそれぞれのデータアイテムを受信するステップであって、入力は各々、異なるそれぞれのシフト量を割り当てられている、ステップ1301を含む。方法は、シフトコマンドによって指定されたシフト量を有する入力のうちの1つにおいて受信されるデータアイテムのうちの1つをレジスタ空間に書き込むステップ1302を含む。方法は、他のデータアイテムがそれぞれ受信されるそれぞれの入力のものより増分的により高いシフト量を割り当てられているそれぞれの出力から他のデータアイテムを送信するステップであって、増分的により高いシフト量は、シフトコマンドによって指定されたシフト量未満である、ステップ1303を含む。方法は、レジスタ空間からデータアイテムを読み込み、1という大きさを有するシフト量を割り当てられている出力から読み込んだデータアイテムを送信するステップ1304を含む。
上述した2次元シフトレジスタアレイの実施形態は、1つまたは複数の統合ステンシルプロセッサを有する画像プロセッサ内に実装されてもよい。ステンシルプロセッサは、以下の説明からより明確になっているように、画像データのステンシルを処理するために最適化またさもなければ設計されたプロセッサである。
図14は、ステンシルプロセッサ機構1400の実施形態を示している。図14でみられるように、ステンシルプロセッサは、データ計算ユニット1401、スカラプロセッサ1402、関連メモリ1403、およびI/Oユニット1404を含む。データ計算ユニット1401は、実行レーンのアレイ1405、2次元シフトアレイ構造1406、およびアレイの特定の行または列に関連付けられた別個のランダムアクセスメモリ1407を含む。
I/Oユニット1404は、データ計算ユニット1401に受信した画像データの入力「シート」をロードするとともに、ステンシルプロセッサからのデータの出力シートをデータ計算ユニットの外部に記憶する責任を負う。ある実施形態においては、データ計算ユニット1401にシートデータをロードする処理は、画像データの行/列に受信したシートをパースする処理と、2次元シフトレジスタ構造1406または実行レーンアレイの行/列のそれぞれのランダムアクセスメモリ1407(以下でより詳細に説明)に画像データの行/列をロードする処理とを伴う。シートがまずメモリ1407にロードされると、実行レーンアレイ1405内の個々の実行レーンはその後、適切なときに(例えば、シートのデータに対する処理の直前のロード命令のときに)、ランダムアクセスメモリ1407から2次元シフトレジスタ構造1406にシートデータをロードし得る。データのシートをレジスタ構造1406に(シートジェネレータから直接またはメモリ1407からのどちらかから)ロードする処理が完了すると、実行レーンアレイ1405の実行レーンは、データを処理し、ステンシルプロセッサの外部にまたはランダムアクセスメモリ1407に出来上がったデータを最終的に「ライトバック」する。後者である場合には、I/Oユニット1404は、ランダムアクセスメモリ1407からデータをフェッチして、その後シートジェネレータの外部に書き込まれる出力シートを形成する。
スカラプロセッサ1402は、命令メモリ1403からステンシルプロセッサのプログラムコードの命令読み込み、実行レーンアレイ1405内の実行レーンに命令を発行する、プログラムコントローラ1409を含む。ある実施形態においては、単一の同一の命令が、アレイ1405内のすべての実行レーンにブロードキャストされ、データ計算ユニット1401からSIMD的な挙動をもたらす。ある実施形態においては、スカラメモリ1403から読み込まれ実行レーンアレイ1405の実行レーンに発行される命令の命令フォーマットは、命令あたり2つ以上のオペコードを含む超長命令語(VLIW)タイプのフォーマットを含む。さらに実施形態においては、VLIWフォーマットは、各実行レーンのALUによって行われる数学的機能を指示するALUオペコードおよび(実行レーンの特定の実行レーンまたはセットに対するメモリ演算を指示する)メモリオペコードの両方を含む。様々な実施形態において、実行レーンそのものが、それらが所有するそれぞれのシフト命令を実行して、シフトレジスタの内容の大規模SIMD2次元シフトを達成する。
「実行レーン」という用語は、命令を実行することが可能な1つまたは複数の実行ユニット(例えば、命令を実行することができるロジック回路)のセットを指す。ただし、様々な実施形態において、実行レーンは、単なる実行ユニットを超えたよりプロセッサ的な機能性を含む。例えば、実行レーンはまた、1つまたは複数の実行ユニットの傍らに、受信した命令をデコードするロジック回路、または、よりMIMD的な設計のケースでは、命令をフェッチおよびデコードするロジック回路を含み得る。MIMD的なアプローチについては、集中型プログラム制御アプローチを主に本明細書に説明しているが、より分散したアプローチを、(例えば、アレイ1405の各実行レーン内にプログラムコードおよびプログラムコントローラを含む)様々な別の実施形態において実施してもよい。
実行レーンアレイ1405、プログラムコントローラ1409、および2次元シフトレジスタ構造1406の組合せは、幅広く適用可能/設定可能なハードウェアプラットフォームを多様なプログラマブル機能に提供している。例えば、アプリケーションソフトウェアデベロッパは、個々の実行レーンが多種多様な機能を行うことが可能であるとともに任意の出力アレイの位置に最も近い入力画像データに容易にアクセスすることが可能であることを考えれば、多様な異なる機能的能力および次元(例えば、ステンシルサイズ)を有するカーネルをプログラムすることが可能である。
演算中、実行レーンアレイ1405および2次元シフトレジスタ1406が理由で、画像の複数のステンシルを並列に演算することができる(その分野で理解されているように、ステンシルは画像内で隣接するNxMまたはNxMxCのピクセルのグループとして一般的に実施される(ここで、NがMに等しくてもよい))。ここで、例えば、各実行レーンは、画像データ内のデータに相当する特定のステンシルのための処理を行うための演算を実行する一方で、2次元シフトアレイは、そのデータをシフトして、ステンシルのためのタスクを実行している実行レーンに接続されたレジスタ空間に各ステンシルのデータをシーケンシャルに渡している。また、2次元シフトレジスタ1406が実行レーンアレイ1405より大きい次元であり得る(例えば、実行レーンアレイが次元XxXである場合には、2次元シフトレジスタ1406は次元YxYであり得る、ここで、Y>X)ことに留意されたい。ここで、ステンシルを完全に処理するためには、ステンシルの左端が実行レーンによって処理されると、シフトレジスタ1406内のデータは、実行レーンアレイ1405の右端から「押し出す」ことになる。シフトレジスタ1406の余剰な次元は、実行レーンアレイの端から押し出されるデータを負担することができる。
実行レーンアレイ1405で処理される画像データのためのデータストアとしての動作とは別に、ランダムアクセスメモリ1407はまた、1つまたは複数のルックアップテーブルを保持し得る。様々な実施形態において、1つまたは複数のスカラルックアップテーブルもスカラメモリ1403内にインスタンス化され得る。
スカラルックアップは、同一のルックアップテーブルからの同一のデータ値を同一のインデックスから実行レーンアレイ1405内の実行レーンの各々に渡す処理を伴う。様々な実施形態において、上述したようなVLIW命令フォーマットは、スカラプロセッサによって行われるルックアップ演算を指示するスカラオペコードもスカラルックアップテーブルに含めるように拡張される。オペコードを伴った使用のために指定されるインデックスは、即値オペランドであり得る、または、いくつかの他のデータストレージロケーションからフェッチされ得る。いずれにせよ、ある実施形態においては、スカラメモリ内のスカラルックアップテーブルからのルックアップは、同一のクロックサイクル中に実行レーンアレイ1405内のすべての実行レーンに同一のデータ値をブロードキャストする処理を原則的に伴う。
上述した様々な画像プロセッサ機構の特徴は、従来の観念における画像処理に必ずしも限定されるわけではなく、したがって、画像プロセッサに再び特徴付けされるようにさせ得る(またはさせ得ない)他のアプリケーションに適用されてもよい、との指摘は的を射たことである。例えば、上述した様々な画像プロセッサ機構の特徴の一部が実際のカメラ画像の処理とは対照的にアニメーションの作成および/または生成および/またはレンダリングにおいて使用されているならば、画像プロセッサは、グラフィック処理ユニットとして特徴付けられ得る。加えて、上述した画像プロセッサの機構上の特徴は、ビデオ処理、ビジョン処理、画像認識、および/または機械学習などの他の技術的アプリケーションに適用され得る。このような適用において、画像プロセッサは、より汎用的なプロセッサ(例えば、コンピューティングシステムのCPUまたはその一部)と(例えば、それに対するコプロセッサとして)統合され得る、または、コンピューティングシステム内のスタンドアローンプロセッサであり得る。
上述したハードウェア設計の実施形態は、半導体チップ内におよび/または最終的な半導体製造プロセスへのターゲッティングのための回路設計の記述として、具現化され得る。後者のケースでは、回路設計のそのような記述は、(例えば、VHDLまたはVerilog)レジスタ転送レベル(RTL)回路記述、ゲートレベル回路記述、トランジスタレベル回路記述、もしくはマスク記述、または様々なその組合せの形式を取り得る。回路設計の記述は、コンピュータ可読記憶媒体(CD-ROMまたは他のタイプのストレージ技術など)上に一般的に具現化される。回路設計の記述は、コンピュータ可読記憶媒体(CD-ROMまたは他のタイプのストレージ技術など)上に一般的に具現化される。
前述の記載から、上述したような画像プロセッサをコンピュータシステム上のハードウェアに(例えば、ハンドヘルドデバイスのカメラからのデータを処理するハンドヘルドデバイスのシステム・オン・チップ(SOC)の一部として)具現化してもよい、との認識することは的を射たことである。画像プロセッサがハードウェア回路として具現化されるケースにおいては、画像プロセッサによって処理される画像データがカメラから直接受信され得ることに留意されたい。ここで、画像プロセッサは、個別のカメラの一部、または、統合カメラを有するコンピューティングシステムの一部であり得る。後者のケースでは、画像データは、カメラから、または、コンピューティングシステムのシステムメモリ(例えば、カメラはその画像データを画像プロセッサではなくシステムメモリに送信する)から、直接受信され得る。前述の記載において説明した特徴の多くが(アニメーションをレンダリングする)グラフィックプロセッサユニットに適用可能であり得ることに留意されたい。
図15は、コンピューティングシステムの例示的な図を提供している。以下で説明しているコンピューティングシステムのコンポーネントの多くは、統合カメラおよび関連画像プロセッサを有しているコンピューティングシステム(例えば、スマートフォンまたはタブレットコンピュータなどのハンドヘルドデバイス)に適用可能である。当業者は、2つの間を容易に記述することができるであろう。
図15でみられるように、基本コンピューティングシステムは、中央処理ユニット1501(例えば、複数の汎用処理コア1515_1から1515_Nと、マルチコアプロセッサまたはアプリケーションプロセッサ上に配置されたメインメモリコントローラ1517とを含み得る)、システムメモリ1502、ディスプレイ1503(例えば、タッチスクリーン、フラットパネル)、ローカル有線ポイント・ツー・ポイントリンク(例えば、USB)インターフェース1504、様々なネットワークI/O機能1505(イーサネット(登録商標)インターフェースおよび/またはセルラモデムサブシステムなど)、無線ローカルエリアネットワーク(例えば、WiFi)インターフェース1506、無線ポイント・ツー・ポイントリンク(例えば、Bluetooth(登録商標))インターフェース1507、およびグローバル・ポジショニング・システムインターフェース1508、様々なセンサ1509_1から1509_N、1つまたは複数のカメラ1510、バッテリ1511、電力管理制御ユニット1512、スピーカおよびマイクロフォン1513、ならびにオーディオエンコーダ/デコーダ1514を含み得る。
アプリケーションプロセッサまたはマルチコアプロセッサ1550は、そのCPU1501内の1つまたは複数の汎用処理コア1515、1つまたは複数のグラフィカル処理ユニット1516、メモリ管理機能1517(例えば、メモリコントローラ)、I/O制御機能1518および画像処理ユニット1519を含み得る。汎用処理コア1515は、コンピューティングシステムのオペレーティングシステムおよびアプリケーションソフトウェアを一般的に実行する。グラフィック処理ユニット1516は、例えば、ディスプレイ1503に表示されるグラフィック情報を生成するために、グラフィックの集約的機能を一般的に実行する。メモリ制御機能1517は、データをシステムメモリ1502に書き込み/から読み込むためにシステムメモリ1502とのインターフェースを有する。システム1500の電力管理制御ユニット1512は、電力消費を一般的に制御する。
画像処理ユニット1519は、前述の記載において詳細に上述した画像処理ユニット実施形態のいずれかに従って実装され得る。代替としてまたは組合せて、IPU1519は、GPU1516およびCPU1501のいずれかまたは両方にそのコプロセッサとして接続され得る。加えて、様々な実施形態において、GPU1516は、詳細に上述した画像プロセッサの特徴のいずれかを用いて実装され得る。
本明細書に記載および図示したシフトレジスタは、画像処理以外のアプリケーションのために使用されてもよい。例として、シフトレジスタは、パラレルシリアルデータコンバージョン、またはシリアルパラレルデータコンバージョンにおいて使用されてもよい。シフトレジスタは、遅延回路において使用されてもよい。シフトレジスタは、デジタルパルス拡張器において使用されてもよい。シフトレジスタは、デジタル信号プロセッサ(DSP)、汎用プロセッサコア、またはASICにおいて使用されてもよい。
タッチスクリーンディスプレイ1503の各々、通信インターフェース1504〜1507、GPSインターフェース1508、センサ1509、カメラ1510、スピーカ/マイクロフォン1513、およびコーデック1514のすべては、コンピューティングシステム全体に関連する様々な形式のI/O(入力および/または出力)としてみなすことができ、同様に、コンピューティングシステムは、統合周辺機器デバイス(例えば、1つまたは複数のカメラ1510)を適切な場所に含む。実施形態に応じて、これらのI/Oコンポーネントのいくつかを、アプリケーションプロセッサ/マルチコアプロセッサ1550に統合してもよい、または、ダイとは別にもしくはアプリケーションプロセッサ/マルチコアプロセッサ1550のパッケージの外部に配置してもよい。
ある実施形態において、1つまたは複数のカメラ1510は、カメラとその視野内のオブジェクトとの間の深度を測定することができる深度カメラを含む。アプリケーションプロセッサまたは他のプロセッサの汎用CPUコア(または、プログラムコードを実行するための命令実行パイプラインを有する他の機能ブロック)において実行されるアプリケーションソフトウェア、オペレーティングシステムソフトウェア、デバイスドライバソフトウェア、および/またはファームウェアは、上述した機能のいずれかを行い得る。
発明の実施形態は、上述したような様々なプロセスを含み得る。プロセスは、マシン実行可能命令に具現化され得る。命令は、汎用または特殊用途プロセッサにあるプロセスを行わせるために使用され得る。あるいは、これらのプロセスは、プロセスを行うためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって、または、任意の組合せでプログラムされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントによって、行われ得る。
本発明の要素はまた、マシン実行可能命令を記憶するための機械可読媒体として提供され得る。機械可読媒体は、フロッピーディスケット、光ディスク、CD-ROM、および光磁気ディスク、FLASHメモリ、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、伝搬媒体、または電子命令を記憶するのに適した他のタイプの媒体/機械可読媒体を含み得るがそれらに限定されない。例えば、本発明は、搬送波に具現化されたデータ信号または通信リンク(例えば、モデムまたはネットワーク接続)を介した他の伝搬媒体を経由して、リモートコンピュータ(例えば、サーバ)から要求コンピュータ(例えば、クライアント)に伝達され得るコンピュータプログラムとしてダウンロードされ得る。
前述の本明細書においては、発明をその特定の例示的な実施形態を参照して説明してきた。しかしながら、添付の特許請求の範囲に記載されているような発明の大局的な精神および範囲を逸脱しない限り様々な修正および変更をしてもよいことは明白であろう。それゆえ、本明細書および図面は、制限的な観念ではなく例示的なものとしてみなされるべきである。
1400 ステンシルプロセッサ
1401 データ計算ユニット
1402 スカラプロセッサ
1403 スカラメモリ
1404 I/Oユニット
1405 実行レーンアレイ
1406 2次元シフトレジスタ
1407 ランダムアクセスメモリ
1409 プログラムコントローラ
1500 システム
1501 中央処理ユニット
1502 システムメモリ
1503 ディスプレイ
1504 ローカル有線ポイント・ツー・ポイントリンクインターフェース
1505 ネットワークI/O機能
1506 無線ローカルエリアネットワークインターフェース
1507 無線ポイント・ツー・ポイントリンクインターフェース
1508 グローバル・ポジショニング・システムインターフェース
1509_1 センサ
1509_2 センサ
1509_N センサ
1510 カメラ
1511 バッテリ
1512 電力管理制御ユニット
1513 スピーカ/マイクロフォン
1514 オーディオエンコーダ/デコーダ
1515_1 コア
1515_2 コア
1515_N コア
1516 グラフィカル処理ユニット
1517 メモリ管理機能
1518 I/O制御機能
1519 画像処理ユニット

Claims (19)

  1. 論理的な順序の限りではない順序で物理的に配置される複数のシフト処理ユニットセルを含むデバイスであって、各シフト処理ユニットセルは、ローカルレジスタ空間と、シフト済みデータを受信するように構成された入力とシフト済みデータを送信するように構成された出力とを有する回路とを含み、前記入力の各々は、異なるそれぞれのシフト量を割り当てられ、前記出力の各々は、異なるそれぞれのシフト量を割り当てられ、各シフト処理ユニットセルの前記回路は、
    (i)シフトコマンドで指定されたそれぞれのシフト量を割り当てられているそれぞれの入力において、前にある論理的な順序のシフト処理ユニットセルから、データを受信し、前記受信したデータを前記シフト処理ユニットセルの前記ローカルレジスタ空間に書き込むように構成される、第1の回路と、
    (ii)前記データが受信された入力のシフト量から増分したシフト量を割り当てられているそれぞれの出力から、後にある論理的な順序のセルに、データを送信するように構成される、第2の回路と
    を含む、デバイス。
  2. 前記第2の回路は、前記シフト処理ユニットセルの前記ローカルレジスタ空間からデータを読み込み、1というシフト量を割り当てられている出力から前記データを送信するように構成された回路をさらに含む、請求項1に記載のデバイス。
  3. 前記シフト処理ユニットセルは、閉ループ内でデータを伝搬するように構成される、請求項1に記載のデバイス。
  4. 前記シフト処理ユニットセルは、シフトが前記閉ループに沿った第1の方向または第2の方向のいずれかで生じるように、物理的に配置される、請求項3に記載のデバイス。
  5. 各シフト処理ユニットセルは、双方向シフトレジスタの一部である、請求項1に記載のデバイス。
  6. 前記複数のシフト処理ユニットセルは、2次元シフトレジスタアレイを形成する、請求項1に記載のデバイス。
  7. シフト処理ユニットセルの複数の行および列を含む2次元シフトレジスタアレイであって、特定の行または列にある前記シフト処理ユニットセルは、論理的な順序の限りではない順序で物理的に配置されるであり、各シフト処理ユニットセルは、ローカルレジスタ空間と、シフト済みデータを受信するように構成された入力とシフト済みデータを送信するように構成された出力とを有する回路とを含み、前記入力の各々は、異なるそれぞれのシフト量を割り当てられ、前記出力の各々は、異なるそれぞれのシフト量を割り当てられ、各シフト処理ユニットセルの前記回路は、
    (i)シフトコマンドで指定されたそれぞれのシフト量を割り当てられているそれぞれの入力において、前にある論理的な順序のシフト処理ユニットセルから、データを受信し、前記受信したデータを前記シフト処理ユニットセルの前記ローカルレジスタ空間に書き込むように構成される、第1の回路と、
    (ii)前記データが受信された入力のシフト量から増分したシフト量を割り当てられているそれぞれの出力から、後にある論理的な順序のセルに、データを送信するように構成される、第2の回路と
    を含む、2次元シフトレジスタアレイ。
  8. 前記第2の回路は、前記シフト処理ユニットセルの前記ローカルレジスタ空間からデータを読み込み、1というシフト量を割り当てられている出力から前記データを送信するように構成された回路をさらに含む、請求項7に記載の2次元シフトレジスタアレイ。
  9. 前記シフト処理ユニットセルは、閉ループ内でデータを伝搬するように構成される、請求項7に記載の2次元シフトレジスタアレイ。
  10. 前記シフト処理ユニットセルは、シフトが前記閉ループに沿った第1の方向または第2の方向のいずれかで生じるように、物理的に配置される、請求項9に記載の2次元シフトレジスタアレイ。
  11. 各シフト処理ユニットセルは、双方向シフトレジスタの一部である、請求項7に記載の2次元シフトレジスタアレイ。
  12. 前記2次元シフトレジスタアレイは、システムメモリに接続されている1つまたは複数の処理コアを有するコンピューティングシステム内にある、請求項7に記載の2次元シフトレジスタアレイ。
  13. 各シフト処理ユニットセルについて、非シフト処理ユニットセルをさらに含み、各非シフト処理ユニットセルは、シフト済みデータを受信する入力と前記受信したシフト済みデータをさらにシフト処理することなく送信する対応する出力とを有し、前記入力の各々は、異なるそれぞれのシフト量を割り当てられている、請求項1に記載のデバイス。
  14. 各シフト処理ユニットセルについて、非シフト処理ユニットセルをさらに含み、各非シフト処理ユニットセルは、シフト済みデータを受信する入力と前記受信したシフト済みデータをさらにシフト処理することなく送信する対応する出力とを有し、前記入力の各々は、異なるそれぞれのシフト量を割り当てられている、請求項7に記載の2次元シフトレジスタアレイ。
  15. 画像プロセッサであって、
    2次元実行レーンアレイと、
    シフト処理ユニットセルの複数の行および列を含む2次元シフトレジスタアレイであって、特定の行または列にある前記シフト処理ユニットセルは、論理的な順序の限りではない順序で物理的に配置されるであり、各シフト処理ユニットセルは、ローカルレジスタ空間と、シフト済みデータを受信するように構成された入力とシフト済みデータを送信するように構成された出力とを有する回路とを含み、前記入力の各々は、異なるそれぞれのシフト量を割り当てられ、前記出力の各々は、異なるそれぞれのシフト量を割り当てられ、各シフト処理ユニットセルの前記回路は、
    (i)シフトコマンドで指定されたそれぞれのシフト量を割り当てられているそれぞれの入力において、前にある論理的な順序のシフト処理ユニットセルから、データを受信し、前記受信したデータを前記シフト処理ユニットセルの前記ローカルレジスタ空間に書き込むように構成される、第1の回路と、
    (ii)前記データが受信された入力のシフト量から増分したシフト量を割り当てられているそれぞれの出力から、後にある論理的な順序のセルに、データを送信するように構成される、第2の回路と
    を含む、2次元シフトレジスタアレイと
    を含む、画像プロセッサ。
  16. 前記第2の回路は、前記シフト処理ユニットセルの前記ローカルレジスタ空間からデータを読み込み、1というシフト量を割り当てられている出力から前記データを送信するように構成された回路をさらに含む、請求項15に記載の画像プロセッサ。
  17. 前記シフト処理ユニットセルは、閉ループ内でデータを伝搬するように構成される、請求項15に記載の画像プロセッサ。
  18. 前記シフト処理ユニットセルは、シフトが前記閉ループに沿った第1の方向または第2の方向のいずれかで生じるように、物理的に配置される、請求項17に記載の画像プロセッサ。
  19. 各シフト処理ユニットセルについて、非シフト処理ユニットセルをさらに含み、各非シフト処理ユニットセルは、シフト済みデータを受信する入力と前記受信したシフト済みデータをさらにシフト処理することなく送信する対応する出力とを有し、前記入力の各々は、異なるそれぞれのシフト量を割り当てられている、請求項15に記載の画像プロセッサ。
JP2019139835A 2015-12-04 2019-07-30 低減された配線複雑度を有するシフトレジスタ Active JP6745389B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562263530P 2015-12-04 2015-12-04
US62/263,530 2015-12-04
US15/352,260 US10313641B2 (en) 2015-12-04 2016-11-15 Shift register with reduced wiring complexity
US15/352,260 2016-11-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018519289A Division JP6567770B2 (ja) 2015-12-04 2016-11-29 低減された配線複雑度を有するシフトレジスタ

Publications (2)

Publication Number Publication Date
JP2019207745A JP2019207745A (ja) 2019-12-05
JP6745389B2 true JP6745389B2 (ja) 2020-08-26

Family

ID=57610386

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018519289A Active JP6567770B2 (ja) 2015-12-04 2016-11-29 低減された配線複雑度を有するシフトレジスタ
JP2019139835A Active JP6745389B2 (ja) 2015-12-04 2019-07-30 低減された配線複雑度を有するシフトレジスタ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018519289A Active JP6567770B2 (ja) 2015-12-04 2016-11-29 低減された配線複雑度を有するシフトレジスタ

Country Status (8)

Country Link
US (3) US10313641B2 (ja)
EP (2) EP3605544B1 (ja)
JP (2) JP6567770B2 (ja)
KR (1) KR102090885B1 (ja)
CN (1) CN108140417B (ja)
DE (1) DE112016005552T5 (ja)
GB (1) GB2557536B (ja)
WO (1) WO2017095824A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180007302A1 (en) * 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10489878B2 (en) * 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US11134534B2 (en) * 2017-10-23 2021-09-28 Avago Technologies International Sales Pte. Limited System on a chip with multiple cores
US10552939B1 (en) 2019-02-12 2020-02-04 Google Llc Image processor complex transfer functions
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
CN112181354B (zh) * 2020-10-12 2021-08-10 上海芯旺微电子技术有限公司 一种移位饱和同步处理的方法及其应用

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE3789070T2 (de) 1986-04-23 1994-08-18 Texas Instruments Inc Breitbandiger Differenzverstärker.
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
EP0293701B1 (en) 1987-06-01 1994-08-10 Applied Intelligent Systems, Inc. Parallel neighborhood processing system and method
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
JPH0246598A (ja) 1988-08-09 1990-02-15 Matsushita Electric Ind Co Ltd 可変長シフト・レジスタ
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
US5163120A (en) * 1989-10-13 1992-11-10 Texas Instruments Incorporated Second nearest-neighbor communication network for synchronous vector processor, systems and methods
WO1994009595A1 (en) 1991-09-20 1994-04-28 Shaw Venson M Method and apparatus including system architecture for multimedia communications
JP3482660B2 (ja) 1993-09-08 2003-12-22 ソニー株式会社 画像データ処理装置および画像データ処理方法
US6356973B1 (en) * 1993-10-15 2002-03-12 Image Telecommunications Corporation Memory device having a cyclically configured data memory and having plural data portals for outputting/inputting data
US5455525A (en) * 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
US5502731A (en) * 1994-08-18 1996-03-26 International Business Machines Corporation Delay test coverage without additional dummy latches in a scan-based test design
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
DE59607143D1 (de) 1996-01-15 2001-07-26 Infineon Technologies Ag Prozessor zur bildverarbeitung
US6263530B1 (en) 1996-09-24 2001-07-24 Steve Feher Selectively cooled or heated cushion and apparatus therefor
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5771268A (en) 1996-12-10 1998-06-23 International Business Machines Corporation High speed rotator with array method
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
US6970196B1 (en) 1999-03-16 2005-11-29 Hamamatsu Photonics K.K. High-speed vision sensor with image processing function
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
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
US8058899B2 (en) * 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
EP1330700B1 (en) 2000-10-16 2005-07-27 Nokia Corporation Multiplier and shift device using signed digit representation
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
GB2395299B (en) * 2002-09-17 2006-06-21 Micron Technology Inc Control of processing elements in parallel processors
GB2397668B (en) * 2003-01-27 2005-12-07 Picochip Designs Ltd Processor array
JP4283014B2 (ja) * 2003-03-19 2009-06-24 パナソニック株式会社 固体撮像装置、固体撮像装置の駆動方法およびカメラ
US7581080B2 (en) * 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
US7913062B2 (en) * 2003-04-23 2011-03-22 Micron Technology, Inc. Method of rotating data in a plurality of processing elements
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 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
KR100594317B1 (ko) * 2005-01-28 2006-06-30 삼성전자주식회사 소비전력이 적은 쉬프트 레지스터 및 상기 쉬프트레지스터의 동작방법
EP1877927B1 (en) 2005-04-28 2011-03-30 The University Court of the University of Edinburgh Reconfigurable instruction cell 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
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
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
US8126022B2 (en) 2007-04-02 2012-02-28 Stmicroelectronics Sa Electronic multimode data shift device, in particular for coding/decoding with an LDPC code
JP4389976B2 (ja) 2007-06-29 2009-12-24 ブラザー工業株式会社 画像処理装置および画像処理プログラム
EP2192765B1 (en) 2007-09-05 2015-11-11 Tohoku University Solid-state image sensor and drive method for the same
JP5020029B2 (ja) * 2007-11-16 2012-09-05 株式会社メガチップス 画像処理装置
KR101474478B1 (ko) 2008-05-30 2014-12-19 어드밴스드 마이크로 디바이시즈, 인코포레이티드 로컬 및 글로벌 데이터 공유
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 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
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
EP2444973B1 (en) * 2010-10-22 2015-12-23 Nxp B.V. Shift register, electronic device, control method and software program product
US8797323B2 (en) 2011-01-18 2014-08-05 Intel Corporation Shadowing dynamic volumetric media
CN103339604B (zh) 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器系统
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 コニカミノルタ株式会社 画像処理装置、連携方法および連携プログラム
FR2984556B1 (fr) * 2011-12-20 2014-09-26 Commissariat Energie Atomique Systeme et procede de communication entre un circuit d'acquisition et un circuit de traitement de donnees
JP5746100B2 (ja) 2011-12-27 2015-07-08 京セラドキュメントソリューションズ株式会社 画像形成装置
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
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
US20130316094A1 (en) 2012-05-25 2013-11-28 Novellus Systems, Inc. Rf-powered, temperature-controlled gas diffuser
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation 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
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
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
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
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
CN105161042B (zh) * 2015-10-10 2017-11-07 京东方科技集团股份有限公司 一种阵列基板、显示面板及显示装置

Also Published As

Publication number Publication date
US20170163931A1 (en) 2017-06-08
JP2019207745A (ja) 2019-12-05
EP3605544A1 (en) 2020-02-05
JP6567770B2 (ja) 2019-08-28
EP3384498A1 (en) 2018-10-10
WO2017095824A1 (en) 2017-06-08
KR20180045029A (ko) 2018-05-03
JP2019503027A (ja) 2019-01-31
US10477164B2 (en) 2019-11-12
EP3605544B1 (en) 2023-08-09
US20170251184A1 (en) 2017-08-31
WO2017095824A4 (en) 2017-07-20
US10313641B2 (en) 2019-06-04
DE112016005552T5 (de) 2018-08-09
CN108140417B (zh) 2021-08-03
GB201805589D0 (en) 2018-05-23
US10998070B2 (en) 2021-05-04
GB2557536A (en) 2018-06-20
EP3384498B1 (en) 2019-09-18
GB2557536B (en) 2020-09-23
US20200162705A1 (en) 2020-05-21
KR102090885B1 (ko) 2020-03-18
CN108140417A (zh) 2018-06-08

Similar Documents

Publication Publication Date Title
JP6745389B2 (ja) 低減された配線複雑度を有するシフトレジスタ
CN114238204B (zh) 可重构并行处理
KR102232722B1 (ko) 프로그램 가능한 2차원 이미지 프로세서상의 컨볼루션 신경망
JP6612403B2 (ja) 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ
KR101973733B1 (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
KR102202579B1 (ko) 이미지 프로세서를 위한 2차원 시프트 어레이
JP2019507922A (ja) 画像プロセッサのためのコンパイラ管理メモリ
EP3622399B1 (en) Determination of per line buffer unit memory allocation
JP6967597B2 (ja) 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク
EP3622396B1 (en) Configuration of application software on multi-core image processor
WO2017095547A1 (en) Multi-functional execution lane for image processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190731

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

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: 20200707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200803

R150 Certificate of patent or registration of utility model

Ref document number: 6745389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250