JP4156794B2 - iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 - Google Patents
iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 Download PDFInfo
- Publication number
- JP4156794B2 JP4156794B2 JP2000519833A JP2000519833A JP4156794B2 JP 4156794 B2 JP4156794 B2 JP 4156794B2 JP 2000519833 A JP2000519833 A JP 2000519833A JP 2000519833 A JP2000519833 A JP 2000519833A JP 4156794 B2 JP4156794 B2 JP 4156794B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- vim
- vliw
- register
- bits
- 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.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 title claims description 25
- 230000001360 synchronised effect Effects 0.000 title claims description 16
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000007246 mechanism Effects 0.000 claims abstract description 14
- 230000000873 masking effect Effects 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 29
- 230000008520 organization Effects 0.000 abstract description 4
- 239000013598 vector Substances 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 4
- VZSRBBMJRBPUNF-UHFFFAOYSA-N 2-(2,3-dihydro-1H-inden-2-ylamino)-N-[3-oxo-3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propyl]pyrimidine-5-carboxamide Chemical compound C1C(CC2=CC=CC=C12)NC1=NC=C(C=N1)C(=O)NCCC(N1CC2=C(CC1)NN=N2)=O VZSRBBMJRBPUNF-UHFFFAOYSA-N 0.000 description 3
- 101150071111 FADD gene Proteins 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- AFCARXCZXQIEQB-UHFFFAOYSA-N N-[3-oxo-3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propyl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(CCNC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 AFCARXCZXQIEQB-UHFFFAOYSA-N 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 208000010378 Pulmonary Embolism Diseases 0.000 description 1
- OJCZPLDERGDQRJ-UHFFFAOYSA-N Sufentanil citrate Chemical compound OC(=O)CC(O)(C(O)=O)CC(O)=O.C1CN(CCC=2SC=CC=2)CCC1(COC)N(C(=O)CC)C1=CC=CC=C1 OJCZPLDERGDQRJ-UHFFFAOYSA-N 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Radio Transmission System (AREA)
- Plural Heterocyclic Compounds (AREA)
Description
関連出願
本発明は、「Methods and Apparatus for Efficient Synchronous MIMD VLIW Communication」という名称で1997年11月7日に出願された、米国特許仮出願第60/064619号の特典を請求するものである。
【0002】
発明の分野
所与の数の平行処理要素を伴う任意の単一命令多重データ・ストリーム(SIMD)の場合、使用可能な並行処理要素または言い換えれば使用可能な計算リソースを、効率的に使用することができないアルゴリズムが存在する。多重命令多重データ・ストリーム(MIMD)クラスのマシンは、これらアルゴリズムの中のいくつかをより効率的に実行するが、各プロセッサ上にある別の命令ストリームをサポートするために追加のハードウェアが必要であり、密結合されたプログラムの実施に伴う通信待ち時間により性能が低下する。本発明は、ハードウェアのコストおよび複雑さを削減すると同時に、SIMDマシンならびにMIMDマシンの最高の特性を維持し、通信待ち時間を最小限に抑えるこれらのアルゴリズムを実行するためのよりよいマシン編成を対象とする。本発明は、MIMDの計算自律性レベルをSIMDのiVLIW(間接的超長命令語)処理要素に提供すると同時に、SIMDマシン編成内で使用される単一制御スレッドを維持する。したがって本発明は、同期MIMD(SMIMD)という用語を用いて記述される。
【0003】
発明の背景
主要な平行プログラミング・モデルには、SIMDモデルおよびMIMDモデルの2つがある。SIMDモデルには、同期ロック・ステップ・モードで複数の処理要素(processing element−PE)を制御する単一のプログラム・スレッドがある。それぞれのPEが、同じ命令を異なるデータ上で実行する。これは、制御の複数のプログラム・スレッドが存在し、通信前に独立したプログラム・スレッドを同期させるための要件により、任意のプロセッサ間動作が、複数プロセッサ間で通信を行うときに発生する待ち時間に対処しなければならない、MIMDモデルとは対照的である。SIMDに伴う問題は、プロセッサ内に存在する使用可能な並行処理を、すべてのアルゴリズムが効率的に使用できるわけではないことである。異なるアルゴリズム内にある固有の並行処理の量は異なっており、SIMDマシン上で多彩なアルゴリズムを効率的に実施するときの難点に通じている。MIMDマシンに伴う問題は、1つのアルゴリズムの処理に関して協働するために、プロセッサを効率的に同期化させるときの難点につながる、複数プロセッサ間での通信の待ち時間である。典型的には、各MIMD PEは、ハードウェアがかなりの量になる可能性のある、独自の命令順序付け機構を持たなければならないため、MIMDマシンはSIMDマシンに比べて実施のコストも多くなる。MIMDマシンは、本質的に、独立した並行処理要素を管理するために必要なプログラミング制御も、より複雑である。したがって、平行処理要素が使用されるときに、多彩なコンテキストにおいて、いろいろなレベルのプログラムの複雑さおよび通信待ち時間が発生する。以下でより詳細に論じるように、こうした問題を効率的に解決することが非常に有利である。
【0004】
発明の概要
本発明は、1997年6月30日出願の米国特許出願第08/885310号、1997年10月10日出願の米国第08/949122号、1998年10月9日出願の米国第09/169255号、1998年10月9日出願の米国第09/169256号、および1998年10月9日出願の米国第09/169072号、1997年12月4日出願の「Method and Apparatus for Dynamically Modifying Instructions in a Very Long Instruction Word Processor」という名称の仮出願第60/067511号、1997年12月18日出願の「Methods and Apparatus for Scalable Instruction Set Architecture」という名称の仮出願第60/068021号、1998年1月12日出願の「Methods and Apparatus to Dynamically Expand the Instruction Pipeline of a Very Long Instruction Word Processor」という名称の仮出願第60/071248号と、1988年1月28日出願の「Methods and Apparatus to Support Conditional Execution in a VLIW−Based Array Processor with Subword Execution」という名称の仮出願第60/072915号、1998年3月12日出願の「Register File Indexing Methods and Apparatus for Providing Indirect Control of Register in a VLIW Processor」という名称の仮出願第60/077766号、1998年7月9日出願の「Methods and Apparatus for Instruction Addressing in Indirect VLIW Processors」という名称の仮出願第60/092130号、1998年10月9日出願の「Efficient Complex Multiplication and Fast Fourier Transform (FFT) Implementation on the ManArray」という名称の仮出願第60/103712号、および1998年11月3日出願の「Methods and Apparatus for Improved Motion Estimation for Video Encoding」という名称の仮出願第_____号に、それぞれその様々な態様がより詳細に記載されたManArrayアーキテクチャと共に使用されることが好ましく、これらはすべて本発明の譲受人に譲渡され、完全に本発明に組み込まれる。
【0005】
本発明により、ManArrayのiVLIW(間接的超長命令語)と共に使用するのに好適なManArrayプロセッサは、間接的超長命令語アーキテクチャを提供するために、処理要素(PE)のスケーラブル配列のための配列制御装置として動作するシーケンス・プロセッサ(SP)を有する配列プロセッサとして実施される可能性がある。本発明による間接超長命令語(iVLIW)は、SIMD配列制御装置のシーケンス・プロセッサすなわちSPによって、iVLIW命令メモリ(VIM)内で構成される可能性がある。VIMは各処理要素すなわちPE内に存在し、複数のiVLIWを含むことが好ましい。1つのiVLIWがVIM内で構成された後、好ましい実施形態中では「iVLIWを実行する」ために、XVと呼ばれる他のSP命令がすべてのPE内の同一のVIMアドレスでiVLIWを同時に実行する。すべてのPEのVIMが同じ命令を含んでいる場合、SIMD動作が発生する。XV命令と、各PE内に存在する単一の同一iVLIWとの間には、1対1のマッピングが存在する。
【0006】
ManArray上で実行中の一定アルゴリズムの効率を上げるために、VLIW実行(XV)命令によって開始される間接的実行及び複数のPE内の同じVLIWメモリ・アドレスに格納された異なるVLIW命令により、VLIWメモリ内に格納されたVLIW命令に対して間接的に動作することが可能である。SP命令によってこのiVLIWセットがすべてのPEにまたがって同時に実行されると、同期MIMDすなわちSMIMDが発生する。XV命令と、各PE内に存在する複数の異なるiVLIWとの間に、1対多マッピングが存在する。XV命令の発行を伴う単一の制御ポイントSPにより、複数の異なるiVLIW実行が同期的に起こるため、特殊な同期化機構は必要ない。PEとManArrayネットワークとの間の通信を管理するために受信モデルを使用することから、下記でさらに詳しく述べるように、MIMD動作に共通の特性である通信待ち時間が避けられる。さらに、実行の同期位置が1箇所であるため、各PE内にある別々のプログラム・フローに対して追加のMIMDハードウェアは必要ない。この方法では、マシンはハードウェアのコストを削減すると同時に通信待ち時間も最低限に抑えながら、SMIMD動作をサポートするように編成される。
【0007】
ManArrayの間接的VLIWすなわちiVLIWは、プログラム制御の下でローディングされることが好ましいが、代替形態のiVLIWのダイレクト・メモリ・アクセス(DMA)ローディング、および固定iVLIWを含むROMによるVIMアドレス空間の1セクション実施も除外されない。一定レベルの動的プログラム・フレキシビリティを維持するために、全VIMでない場合はVIMの一部が、典型的にランダム・アクセス・タイプのメモリになる。ランダム・アクセス・タイプのVIMをロードするためには、区切り符号命令、iVLIWのロードの場合はLVが、区切り符号の後に続く一定数の命令が実行されるのではなくVIM内にロードされることを指定する。SIMD動作の場合、各PEは各VIMアドレスについて同じ命令を受け取る。SMIMD動作用にセットアップするには、各PE内の同じVIMアドレスに異なる命令をロードする必要がある。
【0008】
これは現在の好ましい実施形態では、VIMのローディングがONにマスクされたPE上でのみ発生するように機能する、マスキング機構によって達成される。OFFにマスクされたPEは区切り符号命令を実行しないため、区切り符号に続く指定された命令セットをVIM内にロードしない。あるいは、異なる命令がPEローカル・メモリから平行にロードされるか、またはVIMがDMA転送のターゲットになることができる。異なる命令を同じVIMアドレス内にローディングするための代替方法は、LV命令に続く第2の32ビット制御ワードを有する第2のLV命令、LV2を使用することである。第1および第2の制御ワードは、PEラベルを追加できるように、それらの間のビットを再配置する。この第2のLV2方法は、PEがマスクされる必要がなく、異なるシステムを実施するときに何らかの利点を与える場合がある。異なる命令を、異なるPE上にある同じVIMアドレス内に選択的にローディングすることによって、ManArrayがSMIMD動作用にセットアップされる。
【0009】
SMIMD動作を実施するときに遭遇する1つの問題は、処理要素間通信を処理することである。SIMDモードでは、配列内のすべてのPEが同じ命令を実行中である。典型的には、これらのSIMD PE間通信命令は、送信モデルを使用するとみなされる。言い換えれば、SIMDの送信モデル通信命令は、各PEがそのデータをどの方向へ、すなわちどのターゲットPEへ送信すべきかを示す。SEND−WESTなどの通信命令に遭遇すると、各PEは、位相的にその西隣として定義されたPEにデータを送信する。送信モデルは、送信元PEおよび受信側PEの両方を指定する。SEND−WESTの例では、各PEがその西側にあるPEにそのデータを送信し、その東側にあるPEからデータを受信する。SIMDモードでは、これは問題ではない。
【0010】
送信モデルを使用するSMIMDモードの動作では、複数の処理要素がすべて同じ隣のPEへデータの送信を試行することができる。ManArrayにおけるこのような処理要素は、1回に他の1つの処理要素からのみ受信できる受信ポートを1つだけ有すると定義される可能性があるので、この試行は危険な状況を表す。各処理要素が1つの受信ポートを有すると定義されるときは、このように試行された動作は首尾良く完了できず、通信ハザードを引き起こすことになる。
【0011】
上記の通信ハザードを避けるために、PE間の通信には受信モデルが使用される。各処理要素は受信モデルを使用して、どの処理要素から受信するかを選択するスイッチを制御する。任意の2つの処理要素が同じ受信ポートを争うことはあり得ないため、通信ハザードが発生することはあり得ない。定義上、各PEはそれ専用の受信ポートを制御し、ターゲットPEを指定せずにデータを使用可能にする。受信モデルを使用して処理要素間に任意の意味ある通信を発生させるためには、使用可能にされたデータをPEが協働して受信するようにプログラムされなければならない。同期MIMD(SMIMD)を使用して、協働命令がすべて同じiVLIW位置に存在する場合にこれが発生するように保証される。SMIMDを使用しない場合、複雑な機構は、通信を同期化して受信モデルを使用する必要が生じることになる。
【0012】
本発明をより完全に理解すれば、以下の詳細な説明および添付の図面から本発明の特徴および利点が明らかになろう。
【0013】
詳細な説明
本発明に関して使用するための、現在好ましい間接的超長命令語(iVLIW)制御命令の1セットについて、以下に詳細に記載する。図1は、アドレス「i」でiVLIWを実行するためのシステムを示し、ここでiVLIWは、PE0〜PE3のPEからなる2×2のManArray100内で、各VIM内の垂直なボックス・セットSLAMD105で示され、S=ストア、L=ロード、A=演算論理ユニット(ALU)、M=乗積算ユニット、およびD=データ選択ユニット(DSU)の命令セットを表す。図1では、2×2のManArray100は、32ビット命令を単一の32ビット・バスを介して配列PEに送出する、シーケンス・プロセッサ(SP)制御装置102をさらに含む。32ビット命令の1タイプは、実行iVLIW(XV)命令であり、これは実行されることが望ましいiVLIWを示すポインタを生成するためにVIMベース・アドレスと共に使用される、VIMアドレス・オフセット値を含む。PE104は、クラスタ・スイッチ107によって相互接続される。
【0014】
本発明により使用されるように適合されたSP102およびManArrayアーキテクチャ内の各PE104は、図1に示すように、ある量のiVLIWメモリ(VIM)106を含む。各VIM106は、複数のVLIW命令アドレス103を保持するための格納スペースを含み、各アドレスは8つまでの単体の命令を格納することができる。現在好ましい実施形態では、各iVLIW命令が5つまでの単体の(simplex)命令を含むことが可能であって、格納ユニット108、ロード・ユニット110、演算論理ユニット112(ALU)、乗積算ユニット114(MAU)、およびデータ選択ユニット116(DSU)のそれぞれと関連付けられる。たとえば、VIMアドレス「i」にあるiVLIW命令105は、5つの命令SLAMDを含む。
【0015】
図2は、基本的なiVLIWデータ・パス配列200を示し、これによってフェッチされた命令が、VIMロードおよび格納制御機能22に接続された命令レジスタ20に格納される。このVIMロードおよび格納制御機能は、VIM24にインターフェース信号を送る。VIM24はVIM106に対応しており、図2に示されるように、図1の各VIM106は関連付けられたレジスタおよび制御を有する。VIM24の出力は、iVLIWレジスタ26にパイプライン処理される。図3は、0、1、...N−1のN個のエントリを備えた5スロットiVLIWのVIM300を示す。各VIM300のアドレス位置には、格納、ロード、ALU、MAU、およびDSUの命令301〜305用の格納スペースが含まれる。拡張されたALUスロット・ビュー303'は、ビットd1「d」がハイライト表示された32ビットの格納スペースを示す。VIM記憶装置内の命令を使用する方法について、以下でより詳細に論じる。
【0016】
iVLIW命令をPEのVIMの配列内に集合的にロードするか、あるいは単数または複数のPEをマスクするために特別な命令を使用して、各PEのVIMへ個別にロードすることが可能である。VIM内のiVLIW命令は、単一命令として実行されると、VIMメモリ・アドレスに配置された単体の命令を同時実行させる、実行VLIW(XV)命令を介して実行するためにアクセスされる。XV命令は、以下を同時実行させることができる。
【0017】
1.個別のSPまたはPEのVIMアドレスに配置された、すべての単体の命令。
【0018】
2.同じ相対VIMアドレスにあるすべてのPEに配置された、すべての命令。
【0019】
3.同じ相対VIMアドレスにあるすべてのPEのサブセットまたはグループに配置された、すべての命令。
【0020】
iVLIWメモリをロード/修正し、iVLIW命令を実行するのに必要な制御命令は、以下の2つだけである。
【0021】
1.図4Aに示されたVLIWメモリ・アドレスロード/修正(LV)命令。
【0022】
2.図4Bに示されたVLIW実行(XV)命令。
【0023】
図4Aに示されたLV命令400は、符号化ブロック410に示されるような32ビット符号化のためのものであり、以下でさらに述べるように、構文/演算ブロック420に示される現在の好ましい構文/演算を有する。LV命令400は、指定されたSPまたはPEのVLIWメモリ(VIM)の個別の命令スロットをロードおよび/または使用不能にするために使用される。VIMアドレスは、図4Aの符号化ブロック410の中で、基本VIMアドレス・レジスタVb(V0またはV1)と、ビット・ブロック411のビット0〜7に示された符号なし8ビット・オフセットVIMOFFSとの合計として計算される。VIMアドレスは、ハードウェア構成用の有効領域内でなければならず、そうでなければこの命令の演算は定義されない。
【0024】
個別の命令スロットの任意の組み合わせは、使用不能スロットパラメータ「d={SLAMD}」を介して使用不能にすることができるが、ここでS=ストアユニット(SU)、L=ロード・ユニット(LU)、A=演算論理ユニット(ALU)、M=乗積算ユニット(MAU)、およびD=データ選択ユニット(DSU)である。ブランクの「d=」パラメータは、どんなスロットも使用不能にしない。指定されたスロットは、ロードされる任意の命令の前に使用不能にされる。
【0025】
ロードする命令の数は、InstrCntパラメータを利用して指定される。本実施態様では、有効値は0〜5である。LVに続く次のInstrCnt命令は、指定されたVIMにロードされる。ユニット作用フラグ(UAF)のパラメータ「F=[AMD]」は、どの演算命令スロット(A=ALU、M=MAU、D=DSU)が、指定されたVIMが実行されたときに条件フラグを設定できるかを選択する。ブランクの「F=」は、ALU命令スロットを選択する。LV命令の処理中には、どの演算フラグも影響を受けず、サイクル数は、1に、ロードされる命令数を加えた数である。
【0026】
図4Bに示されたXV命令425も、符号化ブロック430に示すような32ビット符号化用であり、以下でさらに述べるような、構文/演算ブロック435に示された現在の好ましい構文/演算を有する。XV命令425は、指定されたSPまたはPEのVLIWメモリ(VIM)の個別の命令スロットを実行するのに使用される。VIMアドレスは、図4Bの符号化ブロック430の中で、基本VIMアドレス・レジスタVb(V0またはV1)と、ビット・ブロック431のビット0〜7に示された符号なし8ビット・オフセットVIMOFFSとの合計として計算される。VIMアドレスは、ハードウェア構成用の有効領域内でなければならず、そうでなければこの命令の演算は定義されない。
【0027】
個別の命令スロットの任意の組み合わせは、実行スロットパラメータ「E={SLAMD}」を介して実行することができるが、ここでS=ストアユニット(SU)、L=ロード・ユニット(LU)、A=演算論理ユニット(ALU)、M=乗積算ユニット(MAU)、およびD=データ選択ユニット(DSU)である。ブランク「E=」パラメータは、どんなスロットも実行しない。ユニット作用フラグ(UAF)パラメータ「F=[AMDN]」は、LV命令を介してロードされたときに、VLIWに指定されたUAFをオーバライドする。このオーバライドは、どの演算命令スロット(A=ALU、M=MAU、D=DSU)が、このVLIWの実行について条件フラグを設定できるか、あるいはどれでもないか(N=NONE)を選択する。このオーバライドは、LV命令が指定したUAF設定に影響を与えない。ブランクの「F=」は、VLIWがロードされたときに指定されたUAFを選択する。
【0028】
条件フラグは、元のLV命令からの「F=」パラメータの設定によって指定されたスロット内にある個別の単体の命令によって、またはXV命令内の「F=[AMD]」パラメータによってオーバライドされたときに設定される。条件フラグは、「F=N」のときには影響を受けない。演算は1サイクル中に発生する。パイプラインに関する考慮事項は、実行される各スロット内にある個別の単体の命令に基づいて考慮しなければならない。これらiVLIW命令内にある個別のフィールドの説明は、図4Cおよび4Dに示される。図4Cおよび4Dは、名前442、ビット数444、および説明/値446で作表された命令フィールド定義440を示す。図4Eおよび4Fはそれぞれ、現在の好ましいADD命令、および2×2ManArray構成内にある3つの同期MIMD iVLIWのためのスロット記憶装置を示す。
【0029】
図4Eに示されたADD命令450は、符号化ブロック455に示されるような32ビット符号化用でもあり、以下でさらに述べるように、構文/演算ブロック460に示された現在の好ましい構文/演算を有する。ADD命令450は、ソース・レジスタRxおよびRyの合計をターゲット・レジスタRtに格納するのに使用される。演算スカラ・フラグは最下位演算に影響を与えるが、ここでN=結果の合計のMSBであり、結果がゼロの場合はZ=1で、そうでなければ0、オーバフローが発生した場合はV=1で、そうでなければ0、ならびに桁上がりが発生した場合はC=1で、そうでなければ0である。vビットは、符号付き演算に対して有意であり、Cビットは符号なし演算に対して有意である。サイクル数は1である。
個別、グループ、および「同期MIMD」のPEのiVLIW演算
LVおよびXV命令は、プログラマによって画定された個別のPEまたはPEグループ内で、iVLIW命令をロード、修正、ディスエーブル、または実行するために使用することができる。これを行うために、数ある中で特に各PEをイネーブルまたはディスエーブルにする、各PEに配置された制御レジスタを修正する命令によって、個別のPEがイネーブルまたはディスエーブルされる。個別のPEまたはPEのグループをロードおよび動作させるために、個別のPEをイネーブルし、他のすべてをディスエーブルするように制御レジスタが修正される。これで通常のiVLIW命令は、イネーブルされたPE上でのみ動作することになる。
【0030】
図5を参照すると、iVLIWのロードおよびフェッチ・パイプラインの態様が、iVLIWシステム500に関して記載されている。図5は、他の態様の中で、VIMメモリから命令を選択できるようにするための選択機構を示す。フェッチされた命令は、第1の命令レジスタ(IR1)510にロードされる。レジスタ510は、一般に図2の命令レジスタ20に対応する。IR1の出力は、第2の命令レジスタ(IR2)514をロードする前のパイプライン・サイクルの初期に、プリデコーダまたはプリデコード機能512内で、プリデコードされる。IR1内の命令が非ゼロ命令カウントを伴うロードiVLIW命令(LV)であると、プリデコーダ512は、LC演算サイクルをセットアップするために使用されるLVc1制御信号515を生成し、加算器504によってパス503を介してLM命令内に含まれたオフセット値に追加された、指定のVbレジスタ502を使用して、VIMアドレス511が計算される。その結果生じるVIMアドレス511は、レジスタ506内に格納され、マルチプレクサ508を介してVIM516をアドレス指定するために渡される。VIM516は、一般に図1のVIM106に対応する。レジスタ506は、LV動作中にVIMアドレス507を保持する必要がある。VIMアドレス511およびLV制御状態は、LV命令の後に受け取った命令を、VIM516にロードすることができる。LVが受け取られたサイクルの終わりに、命令をVIM516へローディングするときに使用するために、図4Aに示された使用不能ビット10〜17がdビット・レジスタ518にロードされる。VIM516にロードされることになっている、IR1 510内の次の命令を受け取ると同時に、Storec1 519、Loadc1 521、ALUc1 523、MAUc1 525、またはDSUc1 527の命令タイプに応じて、適切な制御信号が生成される。プリデコード機能512は、図4A、B、およびEに示された命令タイプを定めるグループ・ビット(ビット30および31)、ならびに図4Dおよび4Eに示されたユニット・フィールド・ビット(実行ユニット・タイプを指定するビット27および28)の単純な解読に基づいて提供されることが好ましい。このプリデコードステップを使用することによって、IR1 510内の命令を、正しい機能ユニット位置にあるVIM516にロードすることができる。たとえば、命令のLVリストに含まれる図4EのADD命令の場合、この命令がIR1 510内で受信されると、この命令がVIM516内のALU命令スロット520にロードされるべきであることを、プリデコード機能512によって決定することができる。さらに、その機能スロット位置に対して適切なdビット531が、そのスロットのビット31にロードされる。ロードされたdビットは、元の命令からのグループ・コード・ビット位置の1つを占有する。
【0031】
IR1 510内のXV命令を受信すると同時に、VIMアドレス511は、加算器504によってパス503を介してXV命令内に含まれたオフセット値に追加された、指定されたVbレジスタ502を使用して計算される。その結果生じるVIMアドレス507は、マルチプレクサ508を介してVIMをアドレス指定するために渡される。指定アドレスにあるiVLIWがVIM516から読み取られ、マルチプレクサ530、532、534、536、および538を介してIR2レジスタ514に渡される。読取られたVIMアクセス・タイミングのクリティカル・パスを最小限に抑えるための代替形態として、VIM516の出力を、復号状態論理の前に出力がマルチプレクサを介して渡されるレジスタにラッチすることができる。
【0032】
XV命令を実行するために、IR2MUX1制御信号533はプリデコードXVc1制御信号517と共に、すべてのIR2マルチプレクサ530、532、534、536、および538に、VIM出力パス541、543、545、547、および549を選択させる。この時点で、iVLIWの並列処理実行性能を同時発生で提供しながら、パイプライン540、542、544、546、および548の5つの個別のデコード段階および実行段階が完了する。単一の32ビット命令が独自にPEまたはSP内で実行できるようにするために、バイパスVIMパス535が示される。たとえば、シンプレックスADD命令が、平行配列の実行のためにIR1 510内に受信されると、プリデコード機能512は、IR2MUX1制御信号533を生成するが、この信号は、命令タイプのプリデコード信号すなわちADDの場合信号523と共に、XV517またはLV515のアクティブ制御信号なしで、ALUマルチプレクサ534にバイパスパス535を選択させる。
【0033】
ManArrayは様々な数のPEで構成することが可能であるため、図6では、図5に示されたシステム500などのiVLIWシステムの例示的SIMD iVLIWの使用法を示す。図6では、PE0〜PEJまでの番号が付けられたPEによって示されるように、J+1個のPEがある。ロード・ユニットおよびMAU命令スロットが使用不能であり、3つの命令がVIMアドレス27でロードされることを示す、LVコードの一部が図6に示される。このローディング動作は、図4Aに示された構文に基づいてLV命令601から決定される。すべてのPEがONにマスクされると仮定すると、表示された3つの命令603、605、および607は、配列内にあるそれぞれのJ+1 PE内のVIMアドレス27にロードされることになる。このローディングの結果は、VIM内の適切な実行スロットに格納された命令、すなわちALUスロット内の命令603、DSUスロット内の命令605、および格納ユニット・スロット内の命令607を示すことによって、図6に表示される。
【0034】
図3、5、および6によってカバーされた前述の考察で、プリデコード機能はVIMスロット・フィールドの複数のビット31位置に、VIMローディング・シーケンスを開始したLV命令から生成された、図5に示された格納dビット518が書き込めるようにすることに留意されたい。さらに、演算命令内のユニット・フィールド、ビット27および28は、たとえば図4Eをみればわかるように、どのVIMスロットに演算命令がロードされるのかを決めるのに必要であることに留意されたい。したがって、IR1内の命令は具体的に言えば、プリデコード機能を使用してVIM内の実行ユニット・スロットに関連付けられるため、グループ・ビットおよびユニット・フィールド・ビットはVIM内に格納する必要がなく、前の考察で単一のdビットを使用して実証したように、他の目的に使用することができる。VIMスロット内の特定のビット位置は、図7のVIM 700に示され、ここで命令グループ・ビット、すなわち図4Eのビット30のうちの1つ、ならびに命令ユニット・フィールド・ビット、すなわちビット27および28が、図7では721とラベル表示されたOPコード拡張ビット30には「o」、723とラベル表示されたレジスタ・ファイル拡張ビット28には「r」、725とラベル表示された条件付き実行拡張ビット27には「c」という、変換拡張オプション・ビットによってVIM 700内で置き換えられる。これらの追加ビットは、プログラマがそこへロードできるかまたはそこから格納できる、図8Aに示された雑レジスタ850内に別々に格納される。これらのビットは、32ビット命令形式の命令符号化ビットがないために提供できなかった、拡張機能を提供する。OPコード拡張ビット「o」の場合、1セットの命令を新しいセットの命令にマッピングすることが可能である。レジスタ拡張ビット「r」の場合、レジスタ・ファイル・スペースを2倍にし、追加のレジスタ・スペースか、あるいは2つのレジスタ・バンクを2つのコンテキスト間で分けられるようにする高速コンテキスト・スイッチング機構として動作することのいずれかを提供する、2バンクのレジスタを有することが可能である。条件実行拡張ビット「c」の場合、2つの異なる条件セットを指定するか、またはプログラマ制御の下で異なる条件付き実行機能性を指定することが可能である。
【0035】
図8Aは、o、r、およびcビット・レジスタ850の追加、ならびに1組のプリデコード制御信号815、817、819、821、823、825、827、および833を示す、iVLIW変換拡張ロードおよびフェッチ・パイプラインの態様を図示した、iVLIWシステム800を示す。これらの解放されたビットは他の目的で使用できることに留意されたい。たとえば、すべての3ビットをレジスタ・ファイル拡張に使用して、3つのオペランド命令に個別に制御を与えるか、または32×32レジスタの8つまでのバンクを与えるかのいずれかが可能である。
【0036】
単一の32ビット命令それ自体をiVLIWのPEまたはiVLIWのSPで実行させるために、VIMをバイパスする径路835を図8Aに示す。たとえば、単体のADD命令が平行配列実行のためにIR1 810に受信されると、プリデコード機能812がIR2MUX2制御信号833を生成するが、これは命令タイププリデコード信号、すなわちADDの場合には信号823と共に、およびXV817またはLV815のアクティブ制御信号なしで、ALUマルチプレクサ834にバイパスパス835を選択させる。本明細書に記載のように、バイパス動作はパイプラインの全段階で生じるものであるため、バイパスされた命令内のグループ・ビットおよびユニット・フィールド・ビットを、IR2ラッチ段階に入ったときに置き換えることができる。これは、図8A中で、マルチプレクサ830、832、834、836、および838への入力の適切なビット位置を置き換えるのに使用される、「o、r、およびc」ビット信号パス851で示される。
【0037】
VIMのiVLIW記憶装置は代替形式が可能であり、技術および設計の考慮事項によって決められることがで好ましいことに留意されたい。たとえば、図8Bは、図7および8Aからの代替形式VIM800'を示す。実行スロット当たりdビットが、追加のビット「o、r、c、およびuaf」ビットと共にグループにまとめられる。これらの10ビットは、各スロット当たりビット0〜26、29に画定された実行ユニット機能ビットから、別々にグループ化される。「uaf」ビットはどの演算ユニットが実行時にフラグに影響を与えるかに関係するため、LV命令からの図4Aのユニット作用フィールド(uaf)ビット22および23は、単一のiVLIWのVIMアドレスに格納される必要がある。他の記憶装置形式も可能であり、たとえば、dビットを、機能ビットおよび、別々に格納された「uaf」ビットなどのiVLIW全体に関連付けられたビットと共に格納することができる。kスロットiVLIWの場合、k*32ビットは必ずしもVIMに格納される必要はないことにも留意されたい。プリデコード機能により、k32ビット命令を格納するのに必要であると仮定される追加ビットをk*32ビット・スペースに格納できるだけでなく、ビットをすべて使用する必要がない場合は、k*32ビット・スペースを減らすこともできる。これは図8Bに示されており、VIMアドレス当たりの記憶装置ビットの合計数は、実行ユニット・スロット位置(0〜26および29)当たり必要な28ビットの5倍に5つのdビットを加え、さらに3つの「o、r、およびc」ビットと2つの「uaf」ビットを加えることで得られ、必要と仮定される5*32=160ビットよりも10少ない、iVLIWアドレス当たり合計150ビットとなる。その結果、機能性は向上し、VIMメモリ・スペースは削減される。一般に追加情報は、VIM内で実行ユニットごとに、またはそのVIMアドレスに格納されたiVLIWを介して制御に影響を与える別々の個別ビットとして、個別に格納することができる。たとえば、16の追加のロード即時ビットを、別々の「定数」レジスタ内に格納し、VIMアドレス内にロードして、ロード・ユニットの容量を拡張し、32ビットの即時データをロードすることができる。この拡張を達成するには、VIMデータ幅を適切に拡張しなければならない。格納されたiVLIWのサイズが、命令サイズの倍数から減結合され、これによって格納されたiVLIWが、要件に応じて、k命令iVLIWに対するk*32ビットよりも大きいかまたは小さくなるようにすることができる。
【0038】
図1には示したが図9または図10では図を見やすくするために示していないSP制御装置102およびPE配列からなる、図9のプロセッサ900または図10のプロセッサ1000などのプロセッサ内では、PE間通信を処理しているときにSMIMD動作を実施すると、問題が発生する可能性がある。典型的なSIMDモードの通信は、すべてのPEが同じPE間通信命令を実行するように指定する。各PE内で同じであるこのSIMDのPE間命令は、PE間で画定された共通の動作に確実に従うために、共通の制御機構を必要とする。一般に、SEND−WESTなどの単一の命令が配列内にあるすべてのPEに送出される、送信モデルが使用される。SIMDのPE間通信命令は、PE間のネットワーク・インターフェースの制御を調整し、各PEがPE間命令によって位相的に定められたPEにデータを送信できるようにするものである。すべてのPEが同じ命令を受け取るので、この単一SIMD命令を解釈し、図9に示すように、単一のPEによってネットワーク・インターフェース911を制御することができる。図9に示すManArray 2×2クラスタ・スイッチは、DSU間のインターフェース入出力(I/O)バスに対して、4つの4対1マルチプレクサ920、922、924、および926で構成されることに留意されたい。これらのバスは、8、9、16、32、64または他の数のビット、ビット・バスであってもよく、制限はない。単一の4対1マルチプレクサを制御するには、2ビットを制御して、可能な4つのパスから1つを選択するだけでよい。これは必要に応じてより大きなマルチプレクサを使用して、PEのより大きなクラスタに拡張することができる。SIMDシステム内でも、図10に示したような、PE間のインターフェース・ネットワークに対する集中制御を有することが可能である。図10では、集中制御装置1010が、他のPEがネットワーク内で実行するのと同じ、ディスパッチされたPE間通信命令1011をSP制御装置から受け取る。この機構により、ネットワーク接続をサイクルごとに変更することができる。SIMD送信モデルの2つの属性は、すべてのPEに対する共通の命令と、送信側ならびに受信側の仕様である。SIMDモードでは、この方法は問題ではない。
【0039】
送信モデルをSMIMDモードに拡張しようとすると、別の問題が発生する可能性がある。こうした問題の1つが、SMIMDモードでは、各PEが異なるPE間通信命令を受信できるので、多重処理要素すべてが単一のPEに対するデータ送信を試みることが可能なことである。SIMD送信モデルの2つの属性は即時に分析され、すなわち共通のPE間命令を有し、ソースとターゲットの両方、言い換えれば送信側と受信側の両方を指定する。単一サイクル通信を備えたSIMDモデル内の同じPEが複数のPEターゲットを有すると、通信ハザードとなる。この通信ハザードは図9に示すが、PE1、2、および3のDSUがデータをPE0に送信する一方で、PE0はデータをPE3に送信する。PE0は3つのデータ入力を受け取ることはできない。他のシステムでは、多くの場合この種の問題を解決するために、インターフェース・バッファおよび優先度制御論理を挿入して、1つまたは複数の競合パスを遅延させる。この方法は、PE内で実行されるiVLIW命令のプログラミング中に、単一サイクルの通信動作をスケジューリングしなければならないため、SMIMD処理の持つ本来的な同期的性質を妨害する。同期MIMD要件を妨害せずにこの通信ハザードを避けるためには、受信モデルを使用するのが好都合である。送信モデルによって送信された、単一PE内または集中制御機構内に配置されたネットワーク制御の単一ポイントが、受信モデルでは、分散ネットワーク・インターフェース制御に置き換えられる。各PEが、専用の受信ポートを制御する。受信モデルは、ネットワーク・インターフェースを介して受信パスを指定する。ManArrayネットワークの場合、各PEが、クラスタ・スイッチの専用のマルチプレクサ入力パスを制御する。
【0040】
この配列は、図11に2×2配列のプロセッサ1100として示され、各PEがそれぞれ、そのマルチプレクサ1120、1122、1124、または1126の専用の制御を有する。たとえば、PE0はその入力マルチプレクサ1120を制御するために、制御信号1111を有する。さらに受信モデルは、ターゲットPEを指定せずに、インターフェース・ネットワークへのPE出力ポート上でデータを使用可能にしなければならない。したがって、受信モデルを使用して、処理要素間で任意の有意な通信を発生させるためには、使用可能にされたデータを受信するときに協働するように、PEをプログラミングしなければならない。同期MIMDを使用すると、協働命令が同じiVLIW位置内に存在すれば、この協働が発生することが保証される。XV命令が実行されるときのこの命令の位置を使用して、協働PEは正しいPE間通信命令を実行し、任意の2つまたはそれ以上のPE間でデータを移動させる。一般に、PEの1配列内には、複数のPEグループが存在できる。こうしたそれぞれのグループ内では、1つまたは複数のPEが別のPEからデータを受け取ると同時に、別のグループ内で、1つまたは複数のPEが異なるPEからデータを受け取ることができる。グループのサイズは、2つのPEから全配列のPEまで変更可能である。図11では、図を見やすくするため、図1のSP制御装置102などのSPを示していない。しかし、前記に参照によって組み込まれた米国仮出願第60/077457で教示されたように、SPの機能性はPE0などのPEに併合可能であるか、または、SPの機能性はすべてのPEに追加可能であるが、このように機能性を向上させることは相対的にコストがかかることは理解されるであろうとはいえ、こうした制御装置は含まれることが好ましい。
【0041】
図4Fは、2×2 ManArray構成中にある3つの同期MIMDのiVLIWの定義470を示す。上位セクション480は、演算の記述を示す。下位セクション490は、それぞれLU、MAU、ALU、DSU、およびSU内にロードされた、対応する命令記憶術を示す。各iVLIWには、各PEに1行ずつ、計4行が含まれており、それぞれの間が太い黒線で区切られている。図の一番左の列は、PEのiVLIW命令メモリ(VIM)内でiVLIWがロードされるアドレスを示す。次の列は、PE番号を示す。各iVLIWには、各PEについて1行が含まれ、そのPEのVIMエントリにロードされる命令を示す。残りの列には、ロード・ユニット(LU)、乗積算ユニット(MAU)、演算論理ユニット(ALU)、データ選択ユニット(DSU)、およびストアユニット(SU)の5つの実行ユニットについて、それぞれの命令がリスト表示されている。
【0042】
たとえば、PE2 495のVIMのエントリ番号29には、li.p.w R3,A1+,A7、fmpy.pm.1fw R5,R2,R31、fadd.pa.1fw R9,R7,R5、およびpexchg.pd.w R8,R0,2x2_PE3なる4つの命令がロードされる。これらの命令は、図4Fの次の行から最終行まで見られる。同じVIMのエントリ(29)でも、VIMのエントリ29上でこれらのPEに対応する行、すなわちPE0 491、PE2 493、およびPE3 497を見ればわかるように、PE0、1、および3には異なる命令が含まれる。
【0043】
以下の例1−1は、図4Fに定義されたような、PEのVIMメモリをロードする命令シーケンスを示す。異なる命令を、同じアドレスの異なるPEのVIMにロードするために、PEマスキングが使用されることに留意されたい。
【0044】
例1−1 同期MIMD iVLIWのPEのVIMへのローディング
【0045】
【表1】
【0046】
【表2】
【0047】
【表3】
以下の例1−2は、図4Fのコード例1−1によってロードされた、エントリを実行する命令シーケンスを示す。PEマスキングは不要であることに留意されたい。指定されたVIMエントリは、PE0、PE1、PE2、およびPE3の各PEで実行される。
【0048】
例1−2 PE VIMからの同期MIMD iVLIWの実行
【0049】
【表4】
実行される例示アルゴリズムの説明
図4Fで画定されたiVLIWは、PEのローカル・データ・メモリに格納された3×1の変数ベクトルのストリームを使用して、3×1の定数ベクトルの内積を得るために使用される。各PEが、ベクトルの1成分を格納する。PE1は成分xを格納し、PE2は成分yを格納し、PE3は成分zを格納する。PE0は何の成分も格納しない。定数ベクトルは、PEレジスタ内、この場合は計算レジスタR31内で、同じ形式で保持される。
【0050】
冗長な計算や遊休PEを避けるために、iVLIWは同時に3つの変数ベクトル上で動作する。PEの上でのベクトル成分の分布により、第4番目のベクトルの内積を計算するためにPE0を使用することはできない。PE0は、将来のアルゴリズム段階に対して何らかのセットアップを処理する代わりに使用されるのが有利である。iVLIWのロード・スロットに見られるように、ベクトル1がiVLIW27にロードされる(前述のように、成分的にはPEを横断する)と、ベクトル2はiVLIW 28にロードされ、ベクトル3はiVLIW29にロードされる(li.p.w R*,A1+,A7)。PE1は、3つの各ベクトルについて、内積の成分xを計算する。PE2は成分yを計算し、PE3は成分zを計算する(fmpy.pm.1fw R*,R*,R31)。この時点で、PE1に対するベクトル1の内積の成分yおよびz、PE2に対するベクトル2内積の成分xおよびz、PE3に対するベクトル3の内積の成分xおよびyを得るために、PE間の通信が発生しなければならない。この通信は、pexchg命令を介してDSU内で発生する。この方法では、それぞれのPEが、固有の内積結果の成分を同時に合計している(fadd.pa.1fw R9,R7,R*およびfadd.pa.1fw R10,R9,R8)。次いでこれらの結果、PEメモリに格納される(si.p.w R10,+A2,A6)。各PEはあらゆる第3番目の結果を計算し、格納することに留意されたい。次いで、結果の最終セットが、PE1、2、および3から順繰りにアクセスされる。
【0051】
さらに、各PEはその内積結果とゼロ(PEレジスタR0内に保持)との比較を実行し(fcmpLE.pa.1fw R10,R0)、その内積が負であったなら、計算された内積の代わりに条件付きでゼロを格納する(t.sii.p.w R0,A2+,0)。すなわち、その比較は、R10がR0より小さいということが真であるかを判定する。負の値を取り除くこの内積の実施は、たとえば、3次元グラフィックス・アプリケーションのためのライティング計算で使用される。
【0052】
ここまで本発明について、本発明を実施するための現在の好ましい方法および装置のコンテキストで開示してきたが、当分野の一般技術者であれば、様々な代替および変形の実施態様がすでに明らかであろう。たとえば、本発明は、命令をVIMにロードし、さらにその命令を実行するための機能を除外するものではない。この機能は、命令の形式およびハードウェアの複雑さなど、他の考慮すべき点の中で、現在の好ましいプログラミング・モデルを必要以上に複雑化してしまうものであるとみなされた。したがって、ロードiVLIW区切り符号方式が選択されたのである。
【図面の簡単な説明】
【図1】 本発明による、ManArrayの間接的VLIEW命令メモリの様々な態様を示す。
【図2】 基本的なiVLIWデータ・パスを示す。
【図3】 ALUスロットの拡大図を備えた、5スロットiVLIWを示す。
【図4A】 LVロード/修正VLIW命令を示す。
【図4B】 XV実行VLIW命令を示す。
【図4C】 命令フィールド定義を示す。
【図4D】 他の命令フィールド定義を示す。
【図4E】 ADD命令を示す。
【図4F】 2×2 ManArray構成における、3つの同期MIMD iVLIW用のスロット記憶装置を示す。
【図5】 本発明による、iVLIWロードおよびフェッチ・パイプラインを示す。
【図6】 SIMD iVLIW配列処理の態様を示す。
【図7】 iVLIW変換拡張を示す。
【図8A】 iVLIW変換拡張のロードおよびフェッチ・パイプラインを示す。
【図8B】 VIM iVLIW記憶装置用の代替形式を示す。
【図9】 送信モデルを使用したSMIMD通信に関する、送信モデル・クラスタ・スイッチ制御および例示的障害を示す。
【図10】 中央クラスタ・スイッチ制御を備えた送信モデルを示す。
【図11】 SMIMDモード動作中の通信ハザードを避けるために使用される、受信モデル・クラスタ・スイッチ制御を示す。
Claims (33)
- 処理システムであって、
VIMメモリ位置内のスロットに命令を格納するための超長命令語(VLIW)命令メモリ(VIM)を有する第1の処理要素(PE)と、
命令タイプのグループを定義する複数のグループ・ビットおよび実行ユニット・タイプを定義する複数のユニット・フィールド・ビットおよび命令タイプを定義するOPコードを有する機能命令を格納するための第1のレジスタと、
複数のグループ・ビットを解読し、解読されたグループ・ビットに基づいて複数のユニット・フィールド・ビットを解読するためのプリデコーダと、
前記機能命令の実行に先立って、解読されたユニット・フィールド・ビットに対応するVIM内にある前記スロットのうちの適切な1つに、前記OPコードを含む機能命令をロードするためのロード機構とを含むシステム。 - VLIWを実行するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行VLIW命令(XV)である制御命令を実行可能な、請求項1に記載のシステム。
- VLIWをロード或いは修正するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード/修正VLIW命令(LV)である制御命令を実行可能な、請求項1に記載のシステム。
- 記憶部がよりコンパクトになるように、機能命令がVIMに格納される前に、前記機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットが取り除かれる、請求項1に記載のシステム。
- 機能命令が前記VIMに格納される前に、機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットが取り除かれ、少なくとも1つの置換ビットが前記グループ・ビットまたは前記ユニット・フィールド・ビットのいずれかの位置に追加される、請求項1に記載のシステム。
- 前記置換ビットがイネーブル/ディスエーブル・ビットである、請求項5に記載のシステム。
- 前記置換ビットが動作コード拡張ビットである、請求項5に記載のシステム。
- 前記置換ビットがレジスタ・ファイル拡張ビットである、請求項5に記載のシステム。
- 前記置換ビットが条件付き実行拡張ビットである、請求項5に記載のシステム。
- 複数の実行ユニットならびに第1および第2のレジスタ・バンクをさらに含み、
レジスタ・ファイル拡張ビットが使用され、複数の実行ユニットが前記第1のレジスタ・バンクまたは前記第2のレジスタ・バンクからの読取りまたはそこへの書込みを行う、請求項8に記載のシステム。 - 機能命令を格納するための、前記第1のレジスタとは異なる第2のレジスタと、
前記第1のレジスタの出力を前記第2のレジスタの入力に接続するためのバイパス径路と、
機能命令が前記VIMにロードされることなく前記第1のレジスタから前記第2のレジスタに渡される、バイパス動作を選択するための選択機構とをさらに含み、
前記第2のレジスタは、前記処理システムの実行ユニットのデコード段階を先取りする請求項1に記載のシステム。 - 制御命令が前記第2のレジスタ内に格納される前に、1つまたは複数の前記グループ・ビットおよびユニット・フィールド・ビットが置き換えられる、請求項11に記載のシステム。
- ネットワーク・インターフェース接続を介して前記第1のPEに接続された少なくとも1つの追加PEをさらに含み、各PEが、それによって制御される受信ポートに接続された関連付けられたクラスタ・スイッチを有する、請求項1に記載のシステム。
- 前記関連付けられたクラスタ・スイッチが、PEのクラスタ内にPE間の独立した径路を提供するために相互接続されたマルチプレクサを備えた、請求項13に記載のシステム。
- 前記第1のPEに接続されたシーケンス・プロセッサ(SP)をさらに含み、制御命令と前記機能命令の両方を前記第1のPEに提供し、前記制御命令は、実行VLIW命令(XV)または、VLIWをロードあるいは修正するためのロード/修正VLIW命令(LV)のいずれかであり、XV命令およびLV命令の両方が、VLIWを実行するためのアドレス・オフセットおよびベース・ポインタを含んでいる、請求項1に記載のシステム。
- SPに接続された少なくとも1つの追加PEをさらに含み、前記XV命令が前記第1のPEおよび前記少なくとも1つの追加PEの両方に同期的に提供されるために、同じVIMアドレスで異なるVLIWを実行するときに、前記PEを同期的多重命令多重データ・ストリーム(SMIMD)マシンとして動作させ、同じVIMアドレスで同じVLIWを実行する場合は前記PEが単一命令多重データ(SIMD)マシンとして動作する、請求項15に記載のシステム。
- 複数のPEが前記SPに接続され、前記複数のPEが1つまたは複数のPEの第1グループおよび第2グループに編成された、請求項16に記載のシステム。
- PEの前記第1グループが、動作サイクル中に第1のVIMアドレスにあるVLIW命令に対して動作し、PEの前記第2グループが、動作サイクル中に同じ第1のVIMアドレスにある異なるVLIW命令に対して動作する、請求項17に記載のシステム。
- 各PEが受信ポートを有し、前記受信ポートでデータを受け取るかどうかを制御する通信制御の受信モデルに従って前記複数のPEが動作する、請求項17に記載のシステム。
- 各PEが、受信ポートに接続された入力マルチプレクサを有し、前記入力マルチプレクサを制御することによって通信を制御する、請求項19に記載のシステム。
- 前記複数のPEが前記複数のPEのそれぞれについてVIM内の同じ位置に協働受信命令を格納することで協働するようにプログラミングされており、それによって、1つのPEが、他のPEのひとつがデータを使用可能にしている径路を指定する受信命令を有する、請求項19に記載のシステム。
- 個別のPEのオンまたはオフをマスキングするためのマスキング機構をさらに含む、請求項17に記載のシステム。
- VLIWのローディング動作中に、VLIWはONにマスクされたPEのVIMにロードされ、VLIWはOFFにマスクされたPEのVIMにはロードされない、請求項22に記載のシステム。
- 同じサイクル中に、異なるPEが異なるVLIWを実行する、請求項17に記載のシステム。
- 前記VIMが、格納ユニット命令、ロード・ユニット命令、演算論理ユニット命令、乗積算ユニット命令、またはデータ選択ユニット命令といったタイプの機能命令を格納するためのスロットを備えた、請求項1に記載のシステム。
- 複数のPEが使用され、VLIWスロットが異なるタスクに関連付けられており、PEが同じサイクル中に異なるタスクに対して複数の動作を同時に実行することができる、請求項25に記載のシステム。
- 処理システムの運転方法であって、
第1の処理要素(PE)内にある超長命令語(VLIW)命令メモリ(VIM)内に格納すべき第1のVLIW機能命令をフェッチするステップであって、前記VLIW機能命令が、命令タイプのグループを定義する複数のグループ・ビットと、実行ユニット・タイプを定義する複数のユニット・フィールド・ビットと、命令タイプを定義するOPコードとを有するステップと、
第1のレジスタ内に前記第1のVLIW機能命令を格納するステップと、
プリデコーダを利用して、前記複数のグループ・ビットを解読するステップと、
解読された前記グループ・ビットに基づいて前記複数のユニット・フィールド・ビットを解読するステップと、
前記第1の機能命令の実行に先立って、前記VIMのロード機構を用いて、解読された前記ユニット・フィールド・ビットに対応する前記VIM内の適切なアドレスに前記OPコードを含む前記機能命令をロードするステップと
を含む方法。 - VLIWを実行するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行VLIW命令(XV)である制御命令を受け取るステップをさらに含む、請求項27に記載の方法。
- VLIWをロードあるいは修正するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード/修正VLIW命令(LV)である制御命令を受け取るステップをさらに含む、請求項27に記載の方法。
- 記憶部がよりコンパクトになるように、機能命令がVIMに格納される前に、前記機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットを取り除くステップをさらに含む、請求項27に記載の方法。
- 前記機能命令がVIMに格納される前に、前記機能命令からグループ・ビットおよびユニット・フィールド・ビットを取り除くステップと、少なくとも1つの置換ビットをグループ・ビットまたはユニット・フィールド・ビットのいずれかの位置に追加するステップとをさらに含む、請求項27に記載の方法。
- バイパス命令を受け取るステップと、第1のVLIW機能命令をVIM内にロードせずに、前記第1のレジスタとは異なる第2のレジスタ内に格納するステップとをさらに含み、前記第2のレジスタは、前記処理システムの実行ユニットのデコード段階を先取りする、請求項27に記載の方法。
- 前記第1のPEに接続されたシーケンス・プロセッサ(SP)から、制御命令と第1のPEへの前記機能命令の両方を受け取るステップをさらに含み、前記制御命令が、アドレスオフセットおよびベースポインタにより特定される前記VIM中のアドレスにおけるVLIW内に機能命令をロードするためのアドレスオフセットおよびベースポインタを含むロード/修正VLIW命令(LV)である、請求項27に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US6461997P | 1997-11-07 | 1997-11-07 | |
US60/064,619 | 1997-11-07 | ||
PCT/US1998/023650 WO1999024903A1 (en) | 1997-11-07 | 1998-11-06 | METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001523023A JP2001523023A (ja) | 2001-11-20 |
JP4156794B2 true JP4156794B2 (ja) | 2008-09-24 |
Family
ID=22057176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000519833A Expired - Fee Related JP4156794B2 (ja) | 1997-11-07 | 1998-11-06 | iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 |
Country Status (10)
Country | Link |
---|---|
US (3) | US6151668A (ja) |
EP (1) | EP1029266B1 (ja) |
JP (1) | JP4156794B2 (ja) |
KR (1) | KR20010031884A (ja) |
CN (1) | CN100380313C (ja) |
AT (1) | ATE362623T1 (ja) |
CA (1) | CA2310584A1 (ja) |
DE (1) | DE69837791T2 (ja) |
IL (1) | IL135953A0 (ja) |
WO (1) | WO1999024903A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8295350B2 (en) | 1996-08-15 | 2012-10-23 | Mitsubishi Denki Kabushiki Kaisha | Image coding apparatus with segment classification and segmentation-type motion prediction circuit |
US8345744B2 (en) | 2002-03-28 | 2013-01-01 | Sony Corporation | Image compression system with coding quantity control |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366999B1 (en) * | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
US6219776B1 (en) * | 1998-03-10 | 2001-04-17 | Billions Of Operations Per Second | Merged array controller and processing element |
US6356994B1 (en) * | 1998-07-09 | 2002-03-12 | Bops, Incorporated | Methods and apparatus for instruction addressing in indirect VLIW processors |
US6839728B2 (en) * | 1998-10-09 | 2005-01-04 | Pts Corporation | Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture |
US6826522B1 (en) * | 1999-06-21 | 2004-11-30 | Pts Corporation | Methods and apparatus for improved efficiency in pipeline simulation and emulation |
US6748517B1 (en) * | 1999-06-22 | 2004-06-08 | Pts Corporation | Constructing database representing manifold array architecture instruction set for use in support tool code creation |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
JP3971535B2 (ja) * | 1999-09-10 | 2007-09-05 | 株式会社リコー | Simd型プロセッサ |
JP3730455B2 (ja) * | 1999-10-01 | 2006-01-05 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US20020010810A1 (en) * | 2000-03-01 | 2002-01-24 | Ming-Kang Liu | xDSL function ASIC processor & method of operation |
RU2158319C1 (ru) * | 2000-04-25 | 2000-10-27 | Институт металлургии и материаловедения им. А.А. Байкова РАН | Высокопрочная коррозионно- и износостойкая аустенитная сталь |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
JP4502532B2 (ja) * | 2001-02-23 | 2010-07-14 | 株式会社ルネサステクノロジ | データ処理装置 |
US20030090190A1 (en) | 2001-06-14 | 2003-05-15 | Hyperion Catalysis International, Inc. | Field emission devices using modified carbon nanotubes |
GB2382886B (en) * | 2001-10-31 | 2006-03-15 | Alphamosaic Ltd | Vector processing system |
US7398374B2 (en) * | 2002-02-27 | 2008-07-08 | Hewlett-Packard Development Company, L.P. | Multi-cluster processor for processing instructions of one or more instruction threads |
JP3856737B2 (ja) * | 2002-07-19 | 2006-12-13 | 株式会社ルネサステクノロジ | データ処理装置 |
JP4570962B2 (ja) * | 2002-12-30 | 2010-10-27 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 処理システム |
WO2004090716A1 (en) * | 2003-04-07 | 2004-10-21 | Koninklijke Philips Electronics N.V. | Data processing system with clustered ilp processor |
US7725681B2 (en) * | 2003-08-15 | 2010-05-25 | Nxp B.V. | Parallel processing array |
US20050216700A1 (en) * | 2004-03-26 | 2005-09-29 | Hooman Honary | Reconfigurable parallelism architecture |
US7299339B2 (en) * | 2004-08-30 | 2007-11-20 | The Boeing Company | Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
JP5240424B2 (ja) * | 2004-11-05 | 2013-07-17 | 日本電気株式会社 | Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式 |
US7493474B1 (en) * | 2004-11-10 | 2009-02-17 | Altera Corporation | Methods and apparatus for transforming, loading, and executing super-set instructions |
KR100636596B1 (ko) * | 2004-11-25 | 2006-10-23 | 한국전자통신연구원 | 고에너지 효율 병렬 처리 데이터 패스 구조 |
US7912311B2 (en) * | 2005-03-21 | 2011-03-22 | Intel Corporation | Techniques to filter media signals |
WO2006123822A1 (ja) * | 2005-05-20 | 2006-11-23 | Sony Corporation | 信号処理装置 |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US8077174B2 (en) | 2005-12-16 | 2011-12-13 | Nvidia Corporation | Hierarchical processor array |
US20080046684A1 (en) * | 2006-08-17 | 2008-02-21 | International Business Machines Corporation | Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same |
US8099583B2 (en) * | 2006-08-23 | 2012-01-17 | Axis Semiconductor, Inc. | Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
US9354890B1 (en) | 2007-10-23 | 2016-05-31 | Marvell International Ltd. | Call stack structure for enabling execution of code outside of a subroutine and between call stack frames |
US8261025B2 (en) * | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
US8095775B1 (en) * | 2007-11-21 | 2012-01-10 | Marvell International Ltd. | Instruction pointers in very long instruction words |
US8526422B2 (en) | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
US7917703B2 (en) * | 2007-12-13 | 2011-03-29 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidate commands |
US8473667B2 (en) | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
US8010750B2 (en) * | 2008-01-17 | 2011-08-30 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidate commands |
US7841436B2 (en) | 2008-01-21 | 2010-11-30 | Amigo Mobility International | Personal mobility vehicle |
US8018466B2 (en) * | 2008-02-12 | 2011-09-13 | International Business Machines Corporation | Graphics rendering on a network on chip |
US8490110B2 (en) | 2008-02-15 | 2013-07-16 | International Business Machines Corporation | Network on chip with a low latency, high bandwidth application messaging interconnect |
US7913010B2 (en) * | 2008-02-15 | 2011-03-22 | International Business Machines Corporation | Network on chip with a low latency, high bandwidth application messaging interconnect |
US8103853B2 (en) * | 2008-03-05 | 2012-01-24 | The Boeing Company | Intelligent fabric system on a chip |
US20090245257A1 (en) * | 2008-04-01 | 2009-10-01 | International Business Machines Corporation | Network On Chip |
US20090271172A1 (en) * | 2008-04-24 | 2009-10-29 | International Business Machines Corporation | Emulating A Computer Run Time Environment |
US8078850B2 (en) * | 2008-04-24 | 2011-12-13 | International Business Machines Corporation | Branch prediction technique using instruction for resetting result table pointer |
US8423715B2 (en) | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
KR100960148B1 (ko) * | 2008-05-07 | 2010-05-27 | 한국전자통신연구원 | 데이터 프로세싱 회로 |
US8020168B2 (en) * | 2008-05-09 | 2011-09-13 | International Business Machines Corporation | Dynamic virtual software pipelining on a network on chip |
US7861065B2 (en) * | 2008-05-09 | 2010-12-28 | International Business Machines Corporation | Preferential dispatching of computer program instructions |
US7991978B2 (en) * | 2008-05-09 | 2011-08-02 | International Business Machines Corporation | Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor |
US7958340B2 (en) * | 2008-05-09 | 2011-06-07 | International Business Machines Corporation | Monitoring software pipeline performance on a network on chip |
US8494833B2 (en) | 2008-05-09 | 2013-07-23 | International Business Machines Corporation | Emulating a computer run time environment |
US8392664B2 (en) | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
US8214845B2 (en) | 2008-05-09 | 2012-07-03 | International Business Machines Corporation | Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data |
US8040799B2 (en) * | 2008-05-15 | 2011-10-18 | International Business Machines Corporation | Network on chip with minimum guaranteed bandwidth for virtual communications channels |
US8230179B2 (en) | 2008-05-15 | 2012-07-24 | International Business Machines Corporation | Administering non-cacheable memory load instructions |
US8078833B2 (en) * | 2008-05-29 | 2011-12-13 | Axis Semiconductor, Inc. | Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions |
US8181003B2 (en) * | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
US8438578B2 (en) | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
JP2010039625A (ja) * | 2008-08-01 | 2010-02-18 | Renesas Technology Corp | 並列演算装置 |
US8195884B2 (en) * | 2008-09-18 | 2012-06-05 | International Business Machines Corporation | Network on chip with caching restrictions for pages of computer memory |
WO2011094346A1 (en) * | 2010-01-26 | 2011-08-04 | Hobbs Barry L | Integrated concurrent multi-standard encoder, decoder and transcoder |
US9582443B1 (en) | 2010-02-12 | 2017-02-28 | Marvell International Ltd. | Serial control channel processor for executing time-based instructions |
GB2486485B (en) | 2010-12-16 | 2012-12-19 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution |
US8884920B1 (en) | 2011-05-25 | 2014-11-11 | Marvell International Ltd. | Programmatic sensing of capacitive sensors |
US9098694B1 (en) | 2011-07-06 | 2015-08-04 | Marvell International Ltd. | Clone-resistant logic |
US9069553B2 (en) | 2011-09-06 | 2015-06-30 | Marvell World Trade Ltd. | Switching tasks between heterogeneous cores |
US10565036B1 (en) | 2019-02-14 | 2020-02-18 | Axis Semiconductor, Inc. | Method of synchronizing host and coprocessor operations via FIFO communication |
CN112230995B (zh) * | 2020-10-13 | 2024-04-09 | 广东省新一代通信与网络创新研究院 | 一种指令的生成方法、装置以及电子设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0740252B2 (ja) * | 1986-03-08 | 1995-05-01 | 株式会社日立製作所 | マルチプロセツサシステム |
DE4129614C2 (de) * | 1990-09-07 | 2002-03-21 | Hitachi Ltd | System und Verfahren zur Datenverarbeitung |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5963745A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US6002880A (en) * | 1992-12-29 | 1999-12-14 | Philips Electronics North America Corporation | VLIW processor with less instruction issue slots than functional units |
US5682491A (en) * | 1994-12-29 | 1997-10-28 | International Business Machines Corporation | Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier |
US5649135A (en) * | 1995-01-17 | 1997-07-15 | International Business Machines Corporation | Parallel processing system and method using surrogate instructions |
US5680597A (en) * | 1995-01-26 | 1997-10-21 | International Business Machines Corporation | System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions |
US5659785A (en) * | 1995-02-10 | 1997-08-19 | International Business Machines Corporation | Array processor communication architecture with broadcast processor instructions |
US5669001A (en) * | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
-
1998
- 1998-11-06 DE DE69837791T patent/DE69837791T2/de not_active Expired - Lifetime
- 1998-11-06 JP JP2000519833A patent/JP4156794B2/ja not_active Expired - Fee Related
- 1998-11-06 US US09/187,539 patent/US6151668A/en not_active Expired - Lifetime
- 1998-11-06 IL IL13595398A patent/IL135953A0/xx unknown
- 1998-11-06 EP EP98957630A patent/EP1029266B1/en not_active Expired - Lifetime
- 1998-11-06 WO PCT/US1998/023650 patent/WO1999024903A1/en active IP Right Grant
- 1998-11-06 CN CNB988107678A patent/CN100380313C/zh not_active Expired - Fee Related
- 1998-11-06 KR KR1020007004975A patent/KR20010031884A/ko not_active Application Discontinuation
- 1998-11-06 AT AT98957630T patent/ATE362623T1/de not_active IP Right Cessation
- 1998-11-06 CA CA002310584A patent/CA2310584A1/en not_active Abandoned
-
2000
- 2000-10-02 US US09/677,732 patent/US6446191B1/en not_active Ceased
-
2004
- 2004-06-21 US US10/872,995 patent/USRE41703E1/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8295350B2 (en) | 1996-08-15 | 2012-10-23 | Mitsubishi Denki Kabushiki Kaisha | Image coding apparatus with segment classification and segmentation-type motion prediction circuit |
US8345744B2 (en) | 2002-03-28 | 2013-01-01 | Sony Corporation | Image compression system with coding quantity control |
Also Published As
Publication number | Publication date |
---|---|
WO1999024903A1 (en) | 1999-05-20 |
EP1029266A4 (en) | 2005-08-17 |
US6446191B1 (en) | 2002-09-03 |
KR20010031884A (ko) | 2001-04-16 |
IL135953A0 (en) | 2001-05-20 |
CN1278342A (zh) | 2000-12-27 |
JP2001523023A (ja) | 2001-11-20 |
CA2310584A1 (en) | 1999-05-20 |
DE69837791T2 (de) | 2007-10-18 |
CN100380313C (zh) | 2008-04-09 |
EP1029266A1 (en) | 2000-08-23 |
US6151668A (en) | 2000-11-21 |
USRE41703E1 (en) | 2010-09-14 |
ATE362623T1 (de) | 2007-06-15 |
DE69837791D1 (de) | 2007-06-28 |
EP1029266B1 (en) | 2007-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4156794B2 (ja) | iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 | |
US6851041B2 (en) | Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor | |
JP3149348B2 (ja) | 代理命令を用いる並列処理システム及び方法 | |
JP5474014B2 (ja) | サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置 | |
US6356994B1 (en) | Methods and apparatus for instruction addressing in indirect VLIW processors | |
US5872987A (en) | Massively parallel computer including auxiliary vector processor | |
WO2000022535A1 (en) | Methods and apparatus for dynamically merging an array controller with an array processing element | |
US9021236B2 (en) | Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution | |
MXPA00003803A (en) | METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051028 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20051205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070330 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070628 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070713 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070727 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070810 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070830 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071001 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071026 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20071205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071212 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080423 |
|
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: 20080613 |
|
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: 20080710 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110718 Year of fee payment: 3 |
|
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: 20110718 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120718 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130718 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |