JP2008003708A - 映像処理エンジンおよびそれを含む映像処理システム - Google Patents
映像処理エンジンおよびそれを含む映像処理システム Download PDFInfo
- Publication number
- JP2008003708A JP2008003708A JP2006170382A JP2006170382A JP2008003708A JP 2008003708 A JP2008003708 A JP 2008003708A JP 2006170382 A JP2006170382 A JP 2006170382A JP 2006170382 A JP2006170382 A JP 2006170382A JP 2008003708 A JP2008003708 A JP 2008003708A
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- register
- cpu
- video processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】命令のオペランドに2次元のソースレジスタとデスティネーションレジスタを指定する手段を設け、複数サイクルで、複数のソースレジスタを使用した演算を実行し、複数のデスティネーションを得る。複数ソースレジスタを利用して、複数サイクル消費してデスティネーションを得る命令において、データ丸め込み演算器をパイプラインの最終段に接続する。更に、複数のCPUを直列接続し、共有型の命令メモリを共有して使用する。この際、各CPUの命令オペランドに、隣り合うCPU間の同期を制御するためのフィールドを有し、同期化制御を行う。
【選択図】図2
Description
定常状態時の消費電力は、動作周波数、論理物量、トランジスタの活性化率、および供給電圧の2乗に比例する。従って、低電力化は、これらの要素を小さくすることで実現できる。
これらのように、プロセッサの命令供給は、命令メモリアクセスに依存し、消費する電力の比率も大きい。
図1は、本実施例における組込みシステムのブロック図である。
本組込みシステムは、システムの制御と汎用的な処理を行うCPU1と、MPEGなどの画像コーデックの1処理であるストリーム処理を行うストリーム処理部2と、ストリーム処理部2と連携して画像コーデックの符号化や復号化を行う映像処理部6と、AACやMP−3などの音声コーデックの符号化や復号化を行う音声処理部3と、SDRAMなどで構成する外部メモリ20のアクセスを制御する外部メモリ制御部4と、標準バスであるPCIバス22と接続するためのPCIインタフェース5と、画像表示を制御する表示制御部8と、様々なIOデバイスに対して、ダイレクトメモリアクセスを行うDMAコントローラ7が、内部バス9に相互接続される。
PCIバス22には、ハードディスクやフラッシュメモリなどの様々なPCIデバイス23が接続される。
映像処理部6は、画像コーデックや画像の拡大縮小、また画像のフィルタリングなど、2次元画像に対して処理を施す処理部である。
このように、本組込みシステムは、映像や音声の入出力を有し、映像や音声処理を行うシステムである。例えば、携帯電話や、HDDレコーダ、監視装置、車載向け画像処理装置などが上げられる。
映像処理部6は、内部バスブリッジ60を介して内部バス9に接続される。内部バスブリッジ60は、パス63を介して内部バスマスタ制御部61と、パス64を介して内部バススレーブ制御部62に接続される。内部バスマスタ制御部61は、映像処理部6が内部バス9に対してバスマスタとなり、リードアクセスやライトアクセスのリクエストを生成し、内部バスブリッジ60にリクエストを出力するブロックである。内部バス9に対するライトアクセス時は、リクエスト、アドレス、データを出力する。内部バス9に対するリードアクセス時は、リクエストとアドレスを出力し、数サイクル後、リードデータが返送される。内部バススレーブ制御部62は、内部バス9から入力され、内部バスブリッジ60を経由して入力されるリード要求やライト要求を受付け、対応して処理を行うブロックである。内部バスブリッジ60は、内部バス9と内部バスマスタ制御部61間、および内部バス9と内部バススレーブ制御部62との間で受け渡されるリクエストやデータの調停を行うブロックである。
シフト型バス50は、映像処理部6内のブロック間データ転送を行うバスである。各ブロックとシフト型バス50は、3種類の信号線群で接続される。まず、図3と図4を使用して、シフト型バス50の説明を行う。
各シフトレジスタスロット500、501、505は、直列に接続される。例えば、シフトレジスタスロット500の出力50eは、シフトレジスタスロット501の51dに入力され、シフトレジスタスロット501の出力51fは、シフトレジスタスロット500の50gに入力される。同様に、シフトレジスタスロット505の出力55eは、シフトレジスタスロット500の50dに入力され、シフトレジスタスロット500の出力50fは、シフトレジスタスロット505の55gに入力される。
信号線500pは、シフトレジスタスロット毎に供給されるクロック停止信号500pであり、50p端子、51p端子、55p端子に入力される。クロック停止信号500pに関しては後述する。
シフトレジスタスロット500、501、505は、後述する自身ブロックIDを除き、同一の構成である。従って、代表して、シフトレジスタスロット500について、詳細に説明する。
なお、各信号線群50a、50b、50c、50d、50e、50f、50gは、同一サイクルで有効な値である。
入力されたEIDとブロックIDが等しくなく、かつ、WEが1の場合、セレクタ513には、信号線群511を選択し、信号線群50eには、信号線群511が出力される。結果、信号線群50dが1サイクル遅れて、信号線群50eに出力され、次段のシフトレジスタスロットに投入され、有効なデータライトトランザクションとして引き継がれる。本プロトコルは、図5におけるデータシフト出力である。
次に、入力されたEIDとブロックIDが等しく、かつ、WEが1の場合、自身のブロックへの入力として認知し、信号線群50aのR_WE_IN信号を1とする。本R_WE_IN信号が1の場合、各ブロックは、右回りシフト型バスからの入力がデータライトトランザクションであると認識し、データライト処理を実行する。本プロトコルは、図5におけるデータライトである。
SBR_OUT_REQが0の場合は、次段シフトレジスタスロットには、無効なトランザクションとして入力される。本プロトコルは、図5におけるデータライトと同様である。
SBR_OUT_REQが1の場合は、次段シフトレジスタスロットには、有効なトランザクションとして入力される。これは、図5におけるデータライト&データ出力である。
なお、入力されたWEが0の場合、無効なトランザクションが入力されたと認知し、セレクタ513を入力信号線群50b側に選択し、自身ブロックからのデータライトを可能である。
1つは、一方のシフト型バスをストールさせ、一方からのデータライトを優先するものである。この場合、競合信号を全ブロックにブロードキャストして停止する。また、信号線群50aと信号線群50cをFIFOに投入することで、競合の頻度を削減できる。更に、このようなメモリを使用する場合は、インタリーブ型メモリ構成をとり、右回りシフト型バスと左回りシフト型バスからの書込みを別バンクメモリとすることで競合を回避できる。
但し、データフローがシンプルで、ブロック間のデータ引渡しは右回りシフト型バスを使用し、外部メモリからの読み込み、すなわち内部バスブリッジ60を介したデータライトトランザクションは左回りシフト型バスを使用することにより、競合を回避できる。また、1つのメモリに対し、右回りシフト型バスと左回りシフト型バスから同一サイクルで、データライトトランザクションが発生し競合する確率は非常に小さい。このため、性能低下の割合は小さいと言える。
一般的に、トライステートバス方式や、クロスバスイッチ型バスでは、ブロック数が増加した場合、タイミングクリティカルや、配線物量が増加するが、本方式によれば、バスに接続するブロック数を増加させた場合においても、タイミングクリティカルと配線量増加を抑止することが可能である。
この様に、シフト型バス50のバスプロトコルは、データのライトのみである。データライトのバスプロトコルでは、リクエスト信号(WE_OUT)と同一サイクルにて、アドレス(ADDR_OUT)やデータ(DATA_OUT)を出力することが可能で、FIFOやキューを用いて、状態を保持しながら実行するバス構造と比較し、よりシンプルなバスを構成できる。
なお、シフト型バスでは、リードトランザクションも有する。本リードトランザクションについても後述する。
シフト型バス50には、複数のブロックが接続される。先に示した内部バスマスタ制御部61、内部バススレーブ制御部62に加え、映像処理部6全体で共有可能なメモリを有する共有ローカルメモリ65、ソフトウェアによって動作する、映像コーデックや画像の回転、拡大縮小など、2次元の画像に対して処理を行う複数の映像処理エンジン66、67、画像処理の一部の処理を実行する専用ハードウェア68などが接続される。専用ハードウェア68の一例としては、MPEG−2やH.264符号化規格における、エンコード時の動き予測などを処理するブロックである。但し、専用ハードウェア68の処理内容は、本発明の本質に係りを持たないため、説明を省略する。
映像処理エンジン66、67は、プロセッサ型のブロックで、シフト型バス上に複数接続することができる。
共有ローカルメモリ65、映像処理エンジン66、67、専用ハードウェア68、内部マスタ制御部61、内部バススレーブ制御部62は、それぞれ独自のブロックIDを有し、シフト型バス50の共通バスプロトコルで、相互に接続される。
映像処理エンジン66のインタフェースは、シフト型バス50とのインタフェースのみであり、右回りシフト型バスの入力信号51a、左回りシフト型バスの入力信号51c、及び、シフト型バス50への出力信号51bである。これら3種の信号は、データパス部36に接続される。データパス部36には、信号線44を介して、シフト型バス50に対してデータ出力処理を行うローカルDMAC34が接続される。
命令メモリ制御部32は、シフト型バス50からの命令メモリ31へのデータライトと、CPU部30への命令供給を制御するブロックで、パス40を介して命令メモリ31と、パス37を介してCPU部30と、パス42を介してデータパス部36に接続される。
データメモリ制御部33は、シフト型バス50からのデータメモリ35へのデータライトと、ローカルDMAC34が制御する、データメモリ35からシフト型バス50へのデータ出力の制御と、CPU30からデータメモリ35へのアクセスの制御を行うブロックである。データメモリ35の制御は、パス41を使用して行う。
本発明を説明するにあたり、CPU30による演算内容を定義する。但し、本演算内容は、本発明の本質を説明するためのものであり、演算内容の種類については限定を持たない。
特許文献1に示したSIMD型演算器を使用した場合、必要サイクルは、行列Aの読出しに4サイクル、行列Bの読出しに4サイクル、加算に4サイクル、減算に4サイクル消費し、合計16サイクル必要となる。なお、SIMD型演算器の並列数を8とした場合、加算に必要なサイクル数は2となるが、本説明では、4並列のSIMD型演算器として説明する。この時、SIMD型演算器が必要と総命令数は、必要サイクル数と同一の16命令である。本演算内容を使用し、本発明の実現方式について述べる。
4命令は、分岐命令、リード命令、ライト命令、加算命令とする。各命令の命令フォーマットにおいて、必要なビットフィールドを表8から表11に示す。
また、リード命令、ライト命令、分割加算命令のWidthフィールドには、8、16、32が定義できるものとし、カウントフィールドには、1から16まで、1間隔で指定できるものとする。
命令メモリ制御部32は、命令メモリ31のメモリアクセスを制御するブロックである。命令メモリ31には、CPU部30からの命令フェッチアクセスと、シフト型バス50からのアクセスがあり、命令メモリ制御部32はこれらのアクセスを調停して、命令メモリ31をアクセスするものである。アクセス調停は調停部320で行う。メモリアクセス要求は、CPU部30から入力される命令フェッチ要求37rと、データパス部36から入力されるパス42である。調停結果により、セレクタ323を制御し、命令メモリ31をアクセスするためのアドレスなどの制御線40cを出力する。
データメモリ35は、CPU部30からのリード及びライトアクセスと、シフト型バス50からのライト処理と、ローカルDMAC34からのリードアクセスが可能で、データメモリ制御部33は、これらのアクセスの調停を行うブロックである。これらの調停は、調停部330で行い、アドレスセレクタ331とデータセレクタ332の制御を行う。なお、データメモリ35との信号線41は、41a、41d、41wの3つの信号線に分類される。またデータパス部36との信号線43は、信号線43a、43d、41l、43rの4つの信号線に分類される。
次にシフト型バス50からのライト処理では、アドレス線43aがアドレスセレクタ331を通り、データメモリアドレス41aとして、データメモリ35に入力される。同時にデータ線43dがデータセレクタ332を経由して、ライトデータ41wとしてデータメモリ35に入力される。
ローカルDMAC34は、シフト型バス50に対してデータ出力する処理における、データメモリアドレス44daと、シフト型バス50から入力されるデータメモリ35からのリードアクセスに対応して、リード処理を行うためのデータメモリアドレス44da生成する機能と、シフト型バス50に対してデータ出力する際の、シフト型バスアドレス44saを生成する機能と、シフト型バス50に対して、リードコマンドを発生させるための機能を有する。ローカルDMAC34は、信号線44にてデータパス部36のみが接続される。ここで、信号線44は、信号線44pw、44swb、44da、44sa、44dwの5種の信号線に分類できる。
これら3つのモードの組合せにより、映像処理エンジンなどのブロック間で、データ転送を実現する。
Modeフィールドがデータライトモードを示している場合、アドレスセレクタ344を介して、マスタDレジスタ340のMADDR、MWidth、MCount、MPitchはデータメモリアドレス生成器346に転送される。データメモリアドレス生成器346は、データメモリ35を読み出すためのアドレス生成を行い、アドレス44daを出力する。アドレス生成の方式は、CPU部30内の命令デコード部303が生成するアクセスアドレス45と同一の方式で生成される。従って、データメモリアドレス生成器346にはWcカウンタを有し、MWidth、MCount、MPitchをそれぞれWidth、Count、Pitchと置き換えたアドレス生成により、2次元矩形のアドレスを生成する。
転送先ブロックがリードコマンドを受託後、先のデータライト処理とほぼ同様な動作にて、リードデータを読出し、シフト型バス50に対して出力する。スレーブDレジスタ342のMADDR,MWidth、MCount,MPitchは、アドレスセレクタ344を経由して、データメモリアドレス発生器346に入力され、アドレス44daとしてデータメモリ35をアクセスする。その後の振る舞いは、データライト時と同様である。
同様に、スレーブSレジスタ343のSADDR,SWidth、SCount,SPitchは、セレクタ345を経由して、シフト型バスアドレス生成器347に入力され、アドレス44saが生成される。その後の動作は、データライト時と同様である。
これら3つのローカルDMAC34の振る舞いにより、シフト型バス50では、アドレスとデータが同一サイクルで出力可能なライトトランザクションのみでデータ転送を実現する。一般に、バスの性能を向上するため、アドレスとデータを分離したスプリット型のバスが使用される。スプリット型バスとは、アドレスとデータを同一のトランザクションIDなどのIDで管理し、各リクエストスレーブ側は、アドレスをFIFOなどにキューイングして、データ受信まで待機する。従って、キューやFIFOの段数により、バス性能が制限される。一方、本方式では、全てのバス転送において、同一サイクルでアドレスとデータを転送可能であり、FIFO段数などによる性能の飽和が発生しない。
また、リード転送に関しては、1セットのスレーブDレジスタ342とスレーブSレジスタ343のみ有するため、リード処理実行中は、次のリードコマンド受託を禁止し、シフト型バス50上にて終端を行わない。シフト型バス50は、ループ形状をしており、本リードコマンドがシフト型バス50を一周した時点で、リードコマンドを受託することにより、リードコマンドの再起動を可能とする。
ブロック間のデータ転送の大部分をライトモードで行い、リードの発生頻度を抑えることで、この性能低下を低減可能である。映像処理は、データフロー的な振る舞いが多く、ブロック間転送は、ライトモードの使用が大部分となるため、本方式は性能低下を抑止できる。
データパス部36は、シフト型バス50と、命令メモリ制御部32とデータパス部33とローカルDMAC34との間のデータ受渡しを行うブロックである。
まず、シフト型バス部50からのデータ入力について説明する。右回りシフト型バスの入力である信号線群51aと左回りシフト型バスの入力である信号線群51cは、命令メモリ31への書込みパスであるパス42と、データメモリ35への書込みパスであり、そのうちアドレスであるパス43aとデータであるパス43d、及びローカルDMAC34内のスレーブDレジスタ342とスレーブSレジスタ343への書込みパスであるパス44swに接続される。シフト型バス50へのデータ出力である信号線群51bは、2つのブロックから入力され、1つはデータメモリ35からのリードデータ43rであり、2つ目は、ローカルDMAC34からの出力である、マスタDレジスタ340とマスタSレジスタ341の直接出力信号44swbと、シフト型バス50への出力アドレス44saである。これらは、排他的に処理され、シフト型バス50のプロトコルをもって制御される。
また、ローカルDMAC34がデータメモリ35を読み出すためのアドレス44daは、データメモリ制御部33のアドレス43pに接続される。
1つ目は、CPU部30の入力データ30iと演算データ30wbが、ベクトル演算部46に接続されたものである。入力データ30iは、CPU部30内のレジスタファイル304に入力するデータであり、レジスタファイル304のデータを更新可能である。演算データ30wbは、CPU部30演算結果であり、ベクトル演算部46に入力される。
2つ目は、図6の命令メモリ制御部32に対し、命令メモリ制御部47が接続される。命令メモリ制御部47は、複数のプログラムカウンタを有し、命令メモリ31の制御を行う。これに伴い、三つ目の差分は、ベクトル演算部46が、命令メモリ制御部47にパス37を介して接続される。
ベクトル演算部46の演算内容については、図21から図26を用いて後述する。
1つ目は、調停部470で、CPU部30とベクトル演算部46からの2つの命令フェッチ要求37rを受託し、調停する。
調停結果471は、ベクトル演算部46向けのプログラムカウンタ472に入力される。また、セレクタ475を制御して、命令メモリ31をアクセスするためのアドレスなどの制御線40cを出力する。このように、命令メモリ31からは2つのCPUの命令列が格納され、命令メモリ31を共有することが可能である。第1の実施例の説明にて、本方式では、命令フェッチの発行間隔を大きく出来ると述べた。従って、複数のCPUが共有の命令メモリ31をアクセスした場合においても、アクセス競合の発生する頻度は低く、性能低下を抑止可能である。
2つ目の差分は、同期制御部473である。同期制御部473は、CPU部30とベクトル演算部46の同期処理を行うブロックで、各CPUに対するストール信号474を生成する。
同期制御部473は、これら3つの同期化処理を行う。次に、同期制御方式について説明する。
同期制御には、CPU毎に配置される4つのカウンタと、ブロックに1ペアで配置される2つのカウンタと、命令上に定義された5つのフラグにより同期化を行う。表16にカウンタの定義を示す。また、表17に命令内に配置する同期化フィールドの定義を示す。
なお、ここでは、実行レディカウンタERCとスレーブ要求数カウンタSRCを使用した入力同期について説明したが、1ビット幅のフラグでも可能である。例えば、実行レディカウンタERCの更新条件でフラグをセットする。本フラグと演算データの受け手側のCPU命令のISYNCフラグが共に1になるまで、2つのCPUはストールする。ストール解除時点で、フラグをクリアすることにより、少ない論理回路で、2つのCPU間の同期化を可能とする。
同様に、CPU部30のレジスタファイル304が書込み可能となるまで、ベクトル演算部46はストールする出力同期では、ベクトル演算部46がOSYNCを使用し、CPU部30がRFRフィールドをセットすることで、2CPU間の出力同期を実現する。
これら入力同期と出力同期の組合せにより、2つのCPU間のレジスタファイルレベルの細粒度な同期化を実現する。これらの同期化方式では、命令自身に同期化フィールドを有することが特徴である。
1つ目のカウンタは、データメモリレディカウンタDMRCで、先に示したシフト型バス50の転送にて、“Last”信号を伴う転送にてカウントアップするカウンタである。これは、ローカルDMAC34のマスタDレジスタ340の“Last”フラグの設定により、ダイレクトメモリ転送の最終転送、すなわち、2次元矩形転送の最後の転送時点でアサートされる。すなわち、ダイレクトメモリ転送が終了したことを認知可能な信号で、これが“1”のときに、データメモリレディカウンタDMRCをカウントアップする。すなわち、CPU部30から見た場合、データの準備ができていることを示す。
この時、各CPUはそれぞれプログラムカウンタを有す構成となり、実際には図16で示した命令メモリ制御部47内のプログラムカウンタを複数持つ構成となる。調停部470は、複数の命令フェッチ要求37rから、命令フェッチの選択を行う。
また、CPU部30とCPU部30sは共にデータメモリ35をアクセスする。従って、図11で示したデータメモリ制御部33も、複数のデータメモリアクセスを制御する。
本方式によれば、CPU部30にて、データメモリ35からのデータ読み込みを行い、ベクトル演算部46に転送する。ベクトル演算器46の演算結果をベクトル演算器46nに転送し、ベクトル演算器nは、次の処理を行い、CPU部30sに演算データを転送する。CPU部30sは、演算結果をデータメモリ35に転送することで、データのリード、演算、データの格納がパイプラインで動作し、高い演算スループットを得ることが出来る。特にデータメモリ35をインタリーブ構成とし、リード命令とライト命令、およびダイレクトメモリアクセスのブロックを分割することで、高いスループットを得ることが可能である。
レジスタ0:{A00、A10,A20,A30}
レジスタ1:{A01、A11,A21,A31}
レジスタ2:{A02、A12,A22,A32}
レジスタ3:{A03、A13,A23,A33}
レジスタ4:{B00、B10,B20,B30}
レジスタ5:{B01、B11,B21,B31}
レジスタ6:{B02、B12,B22,B32}
レジスタ7:{B03、B13,B23,B33}
このように、2次元内積演算では、演算の入力に複数のレジスタを使用することが特徴である。図22に示す一般的な1サイクルに1命令を発行する4並列のSIMD型演算器では、以下のような命令列で処理される。なお、行列Aは、以下のように転置された値が格納されているものとする。
レジスタ0:{A00、A01,A02,A03}
レジスタ1:{A10、A11,A12,A13}
レジスタ2:{A20、A21,A22,A23}
レジスタ3:{A30、A31,A32,A33}
命令1:Src1(レジスタ0)、Src2(レジスタ4)、Dest(レジスタ8[0])とする、積和演算。
命令2:Src1(レジスタ0)、Src2(レジスタ5)、Dest(レジスタ8[1])とする、積和演算。
命令3:Src1(レジスタ0)、Src2(レジスタ6)、Dest(レジスタ8[2])とする、積和演算。
命令4:Src1(レジスタ0)、Src2(レジスタ7)、Dest(レジスタ8[3])とする、積和演算。
Src1には行列B、すなわちレジスタ4を設定し、Src2には行列A、すなわちレジスタ0を設定する。Src1側は、クロックが供給されるたびに、レジスタ4、レジスタ5、レジスタ6、レジスタ7、再びレジスタ4の順で供給する。Src2側は、1サイクル目にレジスタ0を入力し、2,3,4サイクル目は、パス610を使用して左シフトする。この時セレクタ609は、Src2[0]データを選択する。これにより、Src2出力は、1サイクル目はA00となり、2サイクル目はA10となり、3サイクル目はA20となり、4サイクル目はA30となる。5サイクル目にはレジスタ1を供給し、6,7,8サイクルは同様にシフトする。このようなデータ供給により、4サイクルで1行の演算結果を得ることが出来る。これにより、4サイクルに一度、演算結果Dest606が生成され、このタイミングにて、レジスタファイル462を更新する。本方式により、レジスタファイル462の書込みにバイトイネーブルを必要とせず、レジスタファイルの面積を縮小できると共に、データの転置を必要とせず、合計16サイクルで内積演算を実現する。
次に畳み込み演算の動作例について説明する。畳み込み演算は、画像のローパスフィルタやハイパスフィルタなどによるフィルタリング処理やエッジ強調などに使用される。また、画像コーデックの動き補償処理などでも使用される演算である。畳み込み演算は、内積演算と異なり、第2行列(畳み込み係数とする)が固定で、本畳み込み係数を、第1行列の全データ要素に対して演算するものである。図25に2次元の畳み込み演算例を示す。図が示すとおり、出力データの全データ要素には、第2配列の畳み込み係数が乗じられ、シグマ加算したものである。
畳み込み演算の動作を示す。まず、配列Aと配列Bは、以下に示すレジスタに配置されているものとする。この時、配列Aの1列目から4列目のデータと5列目のデータは異なったレジスタに配置する。配列Bは1つのレジスタに配置する。
レジスタ0:{A00、A10,A20,A30}
レジスタ1:{A40、なし,なし,なし}
レジスタ2:{A01、A11,A21,A31}
レジスタ3:{A41、なし,なし,なし}
レジスタ4:{A02、A12,A22,A32}
レジスタ5:{A42、なし,なし,なし}
レジスタ6:{A03、A13,A23,A33}
レジスタ7:{A43、なし,なし,なし}
レジスタ8:{B00、B01,B10,B11}
Src1には、レジスタ0を投入し、Src2にはレジスタ8と投入する。この時、Src2の出力はセレクタ609により、Src2の第一データ要素が投入される。すなわち、Src2[0]、Src2[0]、Src2[0]、Src2[0]である。1サイクル目での、4つの乗算器600の出力は以下の通りである。
1サイクル目:
600[0]出力:A00*B[00]
600[1]出力:A10*B[00]
600[2]出力:A20*B[00]
600[3]出力:A30*B[00]
2サイクル目では、Src1とSrc2共にパス610と612を使用して左シフトする。Src1は、レジスタ1の第1データ要素であるA40をSrc1の[3]に投入する。結果、4つの乗算器600の出力は以下となる。な
2サイクル目:
600[0]出力:A10*B[01]
600[1]出力:A20*B[01]
600[2]出力:A30*B[01]
600[3]出力:A40*B[01]
3サイクル目では、Src2はパス612を使用して左シフトする。Src1は読み出しレジスタポインタを更新し、レジスタ2を投入する。結果、4つの乗算器600の出力は以下となる。
3サイクル目:
600[0]出力:A01*B[10]
600[1]出力:A11*B[10]
600[2]出力:A21*B[10]
600[3]出力:A31*B[10]
4サイクル目では、2サイクル目と同様に、Src1とSrc2共にパス610とパス612を使用して左シフトする。結果、4つの乗算器600の出力は以下となる。
4サイクル目:
600[0]出力:A11*B[10]
600[1]出力:A21*B[10]
600[2]出力:A31*B[10]
600[3]出力:A41*B[10]
この4サイクル分のデータをシグマ加算器607でシグマ加算することにより、1行目の畳み込み演算結果を得る。
5サイクル目では、再度、Src1にレジスタ2を投入し、Src2には再度レジスタ8を投入し、第2行目の畳み込み演算を行う。結果、16サイクルで、4x4行列の畳み込み演算結果を得る。
460…命令レジスタ、461…命令デコード部、462…レジスタファイル、463…演算部、470…調停部、472…プログラムカウンタ、473…同期制御部、475…セレクタ、500,501,505…シフトレジスタスロット、512,516…BIDデコーダ、510,514,518…レジスタ、600…乗算器、601…レジスタ、602…加算器、604…レジスタ、605…丸め込みシフタ、606…Destレジスタ、607…シグマ加算器、609,612…セレクタ。
Claims (10)
- 命令メモリとデータメモリとCPUとを具備した映像処理エンジンであって、
前記CPUは、さらに命令デコーダと汎用レジスタと演算器とを有し、
前記CPUの命令オペランドは、データ幅並びに高さ方向を示すデータカウント数を指定するフィールドと、演算処理に使用するデータが格納された汎用レジスタの起点を示すソースレジスタポインタと、演算結果を格納する汎用レジスタの起点を示すデスティネーションレジスタポインタとを有し、
前記データ幅と前記データカウント数と前記ソースレジスタポインタと前記デスティネーションレジスタポインタとに基づいて、アクセスする前記ソースレジスタのアドレスおよび前記デスティネーションレジスタのアドレスを、サイクル毎に、順次生成する手段を有し、
前記ソースレジスタから読み出されたデータを前記演算器に投入して演算を実行し、得られた演算結果を順次、前記デスティネーションレジスタに格納することにより、一つの命令で、複数サイクルを消費して、複数の演算を行う映像処理エンジン。 - 前記CPUにおいて、
前記データメモリに対してリード命令およびライト命令を発行する命令のオペランドが、データ幅とデータカウント数とデータ間隔とを指定するフィールドを有し、
前記データメモリへのアクセスの際に、前記データ幅と前記データカウント数と前記データ間隔から、2次元矩形を表現可能なデータメモリアドレスを生成し、前記データメモリアドレスを用いて、1命令にて、複数サイクルを消費して、複数回に亘り、前記データメモリをアクセスすることにより、2次元のデータを1命令にてアクセス可能である請求項1に記載の映像処理エンジン。 - 前記CPUにおいて、前記CPUが発行する畳み込み演算命令と内積演算命令を有し、
前記ソースレジスタポインタにより指定されて読み出されたソースデータを入力するデータ入力段において、供給するクロック毎に前記ソースデータをシフト出力する手段と、畳み込み演算および内積演算に特化したソースレジスタアドレスとデスティネーションレジスタアドレスを生成する手段を有し、
前記演算器は、乗算器とシグマ加算器とデータ丸め込み演算器とが直列接続され、1次元もしくは2次元の前記畳み込み演算、および前記内積演算を一つの命令で実行可能である請求項1に記載の映像処理エンジン。 - 前記CPUにおいて、前記命令メモリから読み出した命令を格納する命令レジスタを複数セット有し、
前記命令レジスタのいずれもが有効でない場合、自動的に次の命令読出しを行う手段を有し、
前記命令読出しの際に、読み出した命令が分岐命令の場合、前記分岐命令を前記命令レジスタに格納せず、分岐先の命令を直ちに読み出し、前記分岐先の命令を前記命令レジスタに格納し、前記分岐命令のオペランドの一つに、分岐するかしないかを指定する分岐条件レジスタを指定するフィールドを有し、
前記分岐命令時に、選択された分岐条件レジスタの値により、分岐するか分岐しないかを判定する手段を有し、分岐しない場合、次の命令を読み出し、前記分岐命令を命令レジスタには格納せず、
前記命令メモリからの命令読出しを毎サイクル行わないことで、前記分岐命令による命令の再読出しに要するサイクルを隠蔽する請求項1に記載の映像処理エンジン。 - 前記映像処理エンジン内に、請求項1から請求項3のいずれかに記載のCPUを複数有し、前記複数のCPUの各々の演算結果を隣り合うCPUのレジスタに格納する手段を有し、前記複数のCPUは、互いに隣り合うCPUに対して接続され、最終端のCPUは初段CPUに接続されてリング状の接続がなされる請求項1に記載の映像処理エンジン。
- 前記CPUが発行する命令のオペランド中に、前記CPUの次段側のCPUが有するレジスタにデータを格納することが可能か否かを確認するための第1のフラグを有し、
前記次段側のCPUが発行する命令のオペランド中には、前段のCPUからのデータ書き込みが受託可能か否かを示す第2のフラグを有し、
隣り合う2つのCPU間にて、前記第1及び第2のフラグにより同期化を行う回路を有し、
書き込みが不可の場合、前段CPUはストールする手段を有し、
また、前記CPUが発行する命令のオペランド中に、前段のCPUからレジスタに対してデータ書き込みが終了し、データが使用可能か否かを判断するための第3のフラグを有し、前段のCPUが発行する命令のオペランドには、後段のCPUにデータの書き込みを終了したことを伝えるための第4のフラグを有し、
2つのCPU間で、前記第3および第4のフラグの情報から、同期化を行う回路を有し、
データの準備が終了していない場合、後段のCPUを待機させるためのストール信号を出力する手段を有し、
命令のオペランドに隣り合う2つのCPU間の同期化を行うためのフラグを有し、これらのフラグと共に、同期化を制御する回路を有する請求項5に記載の映像処理エンジン。 - 前記複数のCPUは、命令メモリを共有し、命令の返送をサイクル毎に時分割で行う請求項5に記載の映像処理エンジン。
- 請求項1から請求項7のいずれかに記載の映像処理エンジンが、バスを介して複数個接続された映像処理部を有する映像処理システムであって、
前記映像処理エンジンの各々には、前記映像処理エンジンの一つが有するデータメモリからデータを読出し、他の一つの映像処理エンジン内のデータメモリに対して、前記データをダイレクトメモリアクセス転送するダイレクトメモリアクセスコントローラを有し、
前記CPUは、ダイレクトメモリアクセスコントローラを起動および制御する手段を有し、複数の映像処理エンジン間でダイレクトメモリアクセスによるデータ転送を行うことが可能な映像処理システム。 - 前記映像処理部において、バスに接続するブロックの一つに、映像処理エンジンに加えて、システムバスなどの第2の内部バスと前記バスとの間でデータ転送を行う内部バスマスタ制御部と内部バススレーブ制御部、および内部バスブリッジからなるデータ転送回路を有し、
前記データ転送回路では、前記第2のバスを介して、外部メモリに対してアクセスすることが可能で、前記映像処理エンジンの各々と前記外部メモリとの間でデータ転送を可能とする請求項8に記載の映像処理システム。 - 複数のシフトレジスタで構成され、前記シフトレジスタ間毎に、同時に複数のデータ転送が可能で、前記シフトレジスタの接続方向を互いに逆とする第1のバスを有し、
前記第1のバスの一方は、映像処理エンジン間および映像処理エンジンからデータ転送回路の方向に対してデータ転送を行い、
前記第1のバスの他方は、外部メモリから読み出されたデータを、内部バスとデータ転送回路を介して、各映像処理エンジンに対してデータ転送を行い、
前記複数の第1のバスにより、映像処理エンジン間のデータ転送と、外部メモリからのデータ転送の競合が発生しない、若しくは、競合頻度を削減できる請求項9に記載の映像処理システム。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006170382A JP4934356B2 (ja) | 2006-06-20 | 2006-06-20 | 映像処理エンジンおよびそれを含む映像処理システム |
| US11/688,894 US20070294514A1 (en) | 2006-06-20 | 2007-03-21 | Picture Processing Engine and Picture Processing System |
| KR1020070034573A KR100888369B1 (ko) | 2006-06-20 | 2007-04-09 | 영상 처리 엔진 및 그것을 포함하는 영상 처리 시스템 |
| CNB2007100917561A CN100562892C (zh) | 2006-06-20 | 2007-04-09 | 图像处理引擎及包含图像处理引擎的图像处理系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006170382A JP4934356B2 (ja) | 2006-06-20 | 2006-06-20 | 映像処理エンジンおよびそれを含む映像処理システム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2008003708A true JP2008003708A (ja) | 2008-01-10 |
| JP4934356B2 JP4934356B2 (ja) | 2012-05-16 |
Family
ID=38862873
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006170382A Expired - Fee Related JP4934356B2 (ja) | 2006-06-20 | 2006-06-20 | 映像処理エンジンおよびそれを含む映像処理システム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20070294514A1 (ja) |
| JP (1) | JP4934356B2 (ja) |
| KR (1) | KR100888369B1 (ja) |
| CN (1) | CN100562892C (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012522280A (ja) * | 2009-03-30 | 2012-09-20 | 日本電気株式会社 | リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ |
| US8345113B2 (en) | 2008-10-28 | 2013-01-01 | Kabushiki Kaisha Toshiba | Image processing apparatus and image processing system |
| JP2014186433A (ja) * | 2013-03-22 | 2014-10-02 | Mitsubishi Electric Corp | 信号処理システム及び信号処理方法 |
| US9052614B2 (en) | 2010-10-29 | 2015-06-09 | Canon Kabushiki Kaisha | Vibration control apparatus, lithography apparatus, and method of manufacturing article |
| EP3264261A2 (en) | 2016-06-29 | 2018-01-03 | Fujitsu Limited | Processor and control method of processor |
| JP2021190066A (ja) * | 2020-06-02 | 2021-12-13 | インテル・コーポレーション | 行列演算の最適化メカニズム |
| JP2024533255A (ja) * | 2021-09-08 | 2024-09-12 | グラフコアー リミテッド | 可変ストライドパターンを使用する処理装置 |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100932667B1 (ko) * | 2007-10-26 | 2009-12-21 | 숭실대학교산학협력단 | 적응적 비동기 파이프라인 구조의 h.264 디코더 |
| CN101369345B (zh) * | 2008-09-08 | 2011-01-05 | 北京航空航天大学 | 一种基于绘制状态的多属性对象绘制顺序优化方法 |
| CN104023243A (zh) * | 2014-05-05 | 2014-09-03 | 北京君正集成电路股份有限公司 | 视频前处理方法和系统,视频后处理方法和系统 |
| US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
| US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
| US12118451B2 (en) | 2017-01-04 | 2024-10-15 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
| US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
| CN109003132B (zh) * | 2017-10-30 | 2021-12-14 | 上海寒武纪信息科技有限公司 | 广告推荐方法及相关产品 |
| CN109074334A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
| US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
| US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
| US20220197634A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Efficient divide and accumulate instruction when an operand is equal to or near a power of two |
| CN118069224B (zh) * | 2024-04-19 | 2024-08-16 | 芯来智融半导体科技(上海)有限公司 | 地址生成方法、装置、计算机设备和存储介质 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5039437A (ja) * | 1973-08-10 | 1975-04-11 | ||
| JPS62208158A (ja) * | 1986-03-08 | 1987-09-12 | Hitachi Ltd | マルチプロセツサシステム |
| JPH022451A (ja) * | 1987-12-22 | 1990-01-08 | Kendall Square Res Corp | マルチプロセッサ構造体のための相互接続システム |
| JPH04113444A (ja) * | 1990-09-04 | 1992-04-14 | Oki Electric Ind Co Ltd | 双方向リングバス装置 |
| JP2000057111A (ja) * | 1998-08-04 | 2000-02-25 | Hitachi Ltd | 並列処理プロセッサ、および、並列処理方法 |
| JP2001184336A (ja) * | 1999-12-17 | 2001-07-06 | Samsung Electronics Co Ltd | マトリックス演算装置及びマトリックス演算機能を有するデジタル信号処理装置 |
| JP2001188675A (ja) * | 1999-12-28 | 2001-07-10 | Nec Eng Ltd | データ転送装置 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3794984A (en) * | 1971-10-14 | 1974-02-26 | Raytheon Co | Array processor for digital computers |
| US4967340A (en) * | 1985-06-12 | 1990-10-30 | E-Systems, Inc. | Adaptive processing system having an array of individually configurable processing components |
| US5119481A (en) * | 1987-12-22 | 1992-06-02 | Kendall Square Research Corporation | Register bus multiprocessor system with shift |
| JP3547139B2 (ja) * | 1995-03-17 | 2004-07-28 | 株式会社 日立製作所 | プロセッサ |
| US5991865A (en) * | 1996-12-31 | 1999-11-23 | Compaq Computer Corporation | MPEG motion compensation using operand routing and performing add and divide in a single instruction |
| US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
| US6959378B2 (en) * | 2000-11-06 | 2005-10-25 | Broadcom Corporation | Reconfigurable processing system and method |
| JP2003271361A (ja) | 2002-03-18 | 2003-09-26 | Ricoh Co Ltd | 画像処理装置及び複合機 |
| US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
| US20040128475A1 (en) * | 2002-12-31 | 2004-07-01 | Gad Sheaffer | Widely accessible processor register file and method for use |
-
2006
- 2006-06-20 JP JP2006170382A patent/JP4934356B2/ja not_active Expired - Fee Related
-
2007
- 2007-03-21 US US11/688,894 patent/US20070294514A1/en not_active Abandoned
- 2007-04-09 CN CNB2007100917561A patent/CN100562892C/zh not_active Expired - Fee Related
- 2007-04-09 KR KR1020070034573A patent/KR100888369B1/ko not_active Expired - Fee Related
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5039437A (ja) * | 1973-08-10 | 1975-04-11 | ||
| JPS62208158A (ja) * | 1986-03-08 | 1987-09-12 | Hitachi Ltd | マルチプロセツサシステム |
| JPH022451A (ja) * | 1987-12-22 | 1990-01-08 | Kendall Square Res Corp | マルチプロセッサ構造体のための相互接続システム |
| JPH04113444A (ja) * | 1990-09-04 | 1992-04-14 | Oki Electric Ind Co Ltd | 双方向リングバス装置 |
| JP2000057111A (ja) * | 1998-08-04 | 2000-02-25 | Hitachi Ltd | 並列処理プロセッサ、および、並列処理方法 |
| JP2001184336A (ja) * | 1999-12-17 | 2001-07-06 | Samsung Electronics Co Ltd | マトリックス演算装置及びマトリックス演算機能を有するデジタル信号処理装置 |
| JP2001188675A (ja) * | 1999-12-28 | 2001-07-10 | Nec Eng Ltd | データ転送装置 |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8345113B2 (en) | 2008-10-28 | 2013-01-01 | Kabushiki Kaisha Toshiba | Image processing apparatus and image processing system |
| JP2012522280A (ja) * | 2009-03-30 | 2012-09-20 | 日本電気株式会社 | リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ |
| US9052614B2 (en) | 2010-10-29 | 2015-06-09 | Canon Kabushiki Kaisha | Vibration control apparatus, lithography apparatus, and method of manufacturing article |
| JP2014186433A (ja) * | 2013-03-22 | 2014-10-02 | Mitsubishi Electric Corp | 信号処理システム及び信号処理方法 |
| EP3264261A2 (en) | 2016-06-29 | 2018-01-03 | Fujitsu Limited | Processor and control method of processor |
| EP3264261A3 (en) * | 2016-06-29 | 2018-05-23 | Fujitsu Limited | Processor and control method of processor |
| US10754652B2 (en) | 2016-06-29 | 2020-08-25 | Fujitsu Limited | Processor and control method of processor for address generating and address displacement |
| JP2021190066A (ja) * | 2020-06-02 | 2021-12-13 | インテル・コーポレーション | 行列演算の最適化メカニズム |
| JP7582603B2 (ja) | 2020-06-02 | 2024-11-13 | インテル・コーポレーション | 行列演算の最適化メカニズム |
| JP2024533255A (ja) * | 2021-09-08 | 2024-09-12 | グラフコアー リミテッド | 可変ストライドパターンを使用する処理装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN100562892C (zh) | 2009-11-25 |
| US20070294514A1 (en) | 2007-12-20 |
| KR20070120877A (ko) | 2007-12-26 |
| CN101093577A (zh) | 2007-12-26 |
| JP4934356B2 (ja) | 2012-05-16 |
| KR100888369B1 (ko) | 2009-03-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN100562892C (zh) | 图像处理引擎及包含图像处理引擎的图像处理系统 | |
| US6289434B1 (en) | Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates | |
| US8024553B2 (en) | Data exchange and communication between execution units in a parallel processor | |
| US7937559B1 (en) | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes | |
| EP2480979B1 (en) | Unanimous branch instructions in a parallel thread processor | |
| CN101506774A (zh) | 相依指令线程调度 | |
| JP2001256105A (ja) | 非整列循環アドレス指定を用いるマイクロプロセッサ | |
| US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
| US9395997B2 (en) | Request coalescing for instruction streams | |
| CN117785480A (zh) | 处理器、归约计算方法及电子设备 | |
| US6574724B1 (en) | Microprocessor with non-aligned scaled and unscaled addressing | |
| US11256518B2 (en) | Datapath circuitry for math operations using SIMD pipelines | |
| US9508112B2 (en) | Multi-threaded GPU pipeline | |
| CN114830082A (zh) | 从多个寄存器中选择的simd操作数排列 | |
| US9594395B2 (en) | Clock routing techniques | |
| CN115934168A (zh) | 处理器和内存访问方法 | |
| CN112559037B (zh) | 一种指令执行方法、单元、装置及系统 | |
| US10699366B1 (en) | Techniques for ALU sharing between threads | |
| JP2002507789A (ja) | デジタル信号プロセッサ | |
| WO2024001699A1 (zh) | 一种着色器输入数据的处理方法和图形处理装置 | |
| KR100267092B1 (ko) | 멀티미디어신호프로세서의단일명령다중데이터처리 | |
| JP2023552789A (ja) | 算術論理演算ユニット用のソフトウェアベースの命令スコアボード | |
| US9323521B2 (en) | Decimal floating-point processor | |
| GB2394815A (en) | Scheduling instruction streams in a SIMD array wherein a determination is made as to which stream has priority and that stream is transferred to the array | |
| CN121166610A (zh) | 通用计算单元和计算设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090223 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100510 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110304 |
|
| 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: 20120207 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120220 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150224 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |