JP2001523023A - iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 - Google Patents

iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置

Info

Publication number
JP2001523023A
JP2001523023A JP2000519833A JP2000519833A JP2001523023A JP 2001523023 A JP2001523023 A JP 2001523023A JP 2000519833 A JP2000519833 A JP 2000519833A JP 2000519833 A JP2000519833 A JP 2000519833A JP 2001523023 A JP2001523023 A JP 2001523023A
Authority
JP
Japan
Prior art keywords
instruction
vim
vliw
pes
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.)
Granted
Application number
JP2000519833A
Other languages
English (en)
Other versions
JP4156794B2 (ja
Inventor
ジェラルド ジー ピーカネック
トーマス エル ドラベンストット
ジュアン ギラーモ レビラ
デビッド カール ストルーベ
グレイスン モーリス
Original Assignee
ボプス インコーポレイテッド
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 ボプス インコーポレイテッド filed Critical ボプス インコーポレイテッド
Publication of JP2001523023A publication Critical patent/JP2001523023A/ja
Application granted granted Critical
Publication of JP4156794B2 publication Critical patent/JP4156794B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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)

Abstract

(57)【要約】 【解決手段】通信ハザードが効率的な方法で除去される複数の並列プロセッサ(PE)を使用したSIMDマシン。間接的超長命令語命令メモリ(VIM)が実行命令および区切り符号命令と共に使用される。どのPEにそのVIMをロードさせるかを制御するためにマスキング機構が使用できる。さらに、受信動作モデルが使用されることが好ましい。一態様では、各PEが、どのPEから受け取るかを選択するスイッチを制御するように動作する。本発明は、ハードウェアのコストおよび複雑さを削減すると同時に、SIMDマシンならびにMIMDマシンの最高の特性を維持し、通信待ち時間を最小限に抑える並列アルゴリズムを実行するためのよりよいマシン編成を対象とする。本発明は、MIMDの計算自主性レベルをSIMDのiVLIW(間接的超長命令語)処理要素に提供すると同時に、SIMDマシン編成内で使用される単一制御スレッドを維持する。したがって本手法は、同期MIMD(SMIMD)という用語を用いて記述される。

Description

【発明の詳細な説明】
【0001】 関連出願 本発明は、「Methods and Apparatus for Eff
icient Synchronous MIMD VLIW Communi
cation」という名称で1997年11月7日に出願された、米国特許仮出
願第60/064619号の特典を請求するものである。
【0002】 発明の分野 所与の数の平行処理要素を伴う任意の単一命令多重データ・ストリーム(SI
MD)の場合、使用可能な並行処理要素または言い換えれば使用可能な計算リソ
ースを、効率的に使用することができないアルゴリズムが存在する。多重命令多
重データ・ストリーム(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/169
072号、1997年12月4日出願の「Method and Appara
tus for Dynamically Modifying Instru
ctions in a Very Long Instruction Wo
rd Processor」という名称の仮出願第60/067511号、19
97年12月18日出願の「Methods and Apparatus f
or Scalable Instruction Set Architec
ture」という名称の仮出願第60/068021号、1998年1月12日
出願の「Methods and Apparatus to Dynamic
ally Expand the Instruction Pipeline
of a Very Long Instruction Word Pro
cessor」という名称の仮出願第60/071248号と、1988年1月
28日出願の「Methods and Apparatus to Supp
ort Conditional Execution in a VLIW−
Based Array Processor with Subword E
xecution」という名称の仮出願第60/072915号、1998年3
月12日出願の「Register File Indexing Metho
ds and Apparatus for Providing Indir
ect Control of Register in a VLIW Pr
ocessor」という名称の仮出願第60/077766号、1998年7月
9日出願の「Methods and Apparatus for Inst
ruction Addressing in Indirect VLIW
Processors」という名称の仮出願第60/092130号、1998
年10月9日出願の「Efficient Complex Multipli
cation and Fast Fourier Transform (F
FT) 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によって、iVL
IW命令メモリ(VIM)内で構成される可能性がある。VIMは各処理要素す
なわちPE内に存在し、複数のiVLIWを含むことが好ましい。1つのiVL
IWがVIM内で構成された後、好ましい実施形態中では「iVLIWを実行す
る」ために、XVと呼ばれる他のSP命令がすべてのPE内の同一のVIMアド
レスでiVLIWを同時に実行する。すべてのPEのVIMが同じ命令を含んで
いる場合、SIMD動作が発生する。XV命令と、各PE内に存在する単一の同
一iVLIWとの間には、1対1のマッピングが存在する。
【0006】 ManArray上で実行中の一定アルゴリズムの効率を上げるために、VL
IW実行(XV)命令によって開始される間接的実行及び複数のPE内の同じV
LIWメモリ・アドレスに格納された異なるVLIW命令により、VLIWメモ
リ内に格納されたVLIW命令に対して間接的に動作することが可能である。S
P命令によってこの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を含むRO
MによるVIMアドレス空間の1セクション実施も除外されない。一定レベルの
動的プログラム・フレキシビリティを維持するために、全VIMでない場合はV
IMの一部が、典型的にランダム・アクセス・タイプのメモリになる。ランダム
・アクセス・タイプのVIMをロードするためには、区切り符号命令、iVLI
Wのロードの場合は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アドレス内に選択的にローディングすることによって、ManArra
yがSMIMD動作用にセットアップされる。
【0009】 SMIMD動作を実施するときに遭遇する1つの問題は、処理要素間通信を処
理することである。SIMDモードでは、配列内のすべてのPEが同じ命令を実
行中である。典型的には、これらのSIMD PE間通信命令は、送信モデルを
使用するとみなされる。言い換えれば、SIMDの送信モデル通信命令は、各P
Eがそのデータをどの方向へ、すなわちどのターゲット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位置に存在する場合にこれが発生するように保証される。SMI
MDを使用しない場合、複雑な機構は、通信を同期化して受信モデルを使用する
必要が生じることになる。
【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のManArray1
00は、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スロットi
VLIWの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=演算論理ユニット(A
LU)、M=乗積算ユニット(MAU)、およびD=データ選択ユニット(DS
U)である。ブランクの「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レジスタ5
02を使用して、VIMアドレス511が計算される。その結果生じるVIMア
ドレス511は、レジスタ506内に格納され、マルチプレクサ508を介して
VIM516をアドレス指定するために渡される。VIM516は、一般に図1
のVIM106に対応する。レジスタ506は、LV動作中にVIMアドレス5
07を保持する必要がある。VIMアドレス511およびLV制御状態は、LV
命令の後に受け取った命令を、VIM516にロードすることができる。LVが
受け取られたサイクルの終わりに、命令をVIM516へローディングするとき
に使用するために、図4Aに示された使用不能ビット10〜17がdビット・レ
ジスタ518にロードされる。VIM516にロードされることになっている、
IR1 510内の次の命令を受け取ると同時に、Storec1 519、L
oadc1 521、ALUc1 523、MAUc1 525、またはDSU
c1 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はプリデコードX
Vc1制御信号517と共に、すべてのIR2マルチプレクサ530、532、
534、536、および538に、VIM出力パス541、543、545、5
47、および549を選択させる。この時点で、iVLIWの並列処理実行性能
を同時発生で提供しながら、パイプライン540、542、544、546、お
よび548の5つの個別のデコード段階および実行段階が完了する。単一の32
ビット命令が独自にPEまたはSP内で実行できるようにするために、バイパス
VIMパス535が示される。たとえば、シンプレックスADD命令が、平行配
列の実行のためにIR1 510内に受信されると、プリデコード機能512は
、IR2MUX1制御信号533を生成するが、この信号は、命令タイプのプリ
デコード信号すなわちADDの場合信号523と共に、XV517またはLV5
15のアクティブ制御信号なしで、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、6
05、および607は、配列内にあるそれぞれのJ+1 PE内のVIMアドレ
ス27にロードされることになる。このローディングの結果は、VIM内の適切
な実行スロットに格納された命令、すなわちALUスロット内の命令603、D
SUスロット内の命令605、および格納ユニット・スロット内の命令607を
示すことによって、図6に表示される。
【0034】 図3、5、および6によってカバーされた前述の考察で、プリデコード機能は
VIMスロット・フィールドの複数のビット31位置に、VIMローディング・
シーケンスを開始したLV命令から生成された、図5に示された格納dビット5
18が書き込めるようにすることに留意されたい。さらに、演算命令内のユニッ
ト・フィールド、ビット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、82
7、および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記憶装置は代替形式が可能であり、技術および設計の考慮
事項によって決められることがで好ましいことに留意されたい。たとえば、図8
Bは、図7および8Aからの代替形式VIM800'を示す。実行スロット当た りdビットが、追加のビット「o、r、c、およびuaf」ビットと共にグルー
プにまとめられる。これらの10ビットは、各スロット当たりビット0〜26、
29に画定された実行ユニット機能ビットから、別々にグループ化される。「u
af」ビットはどの演算ユニットが実行時にフラグに影響を与えるかに関係する
ため、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つの「ua
f」ビットを加えることで得られ、必要と仮定される5*32=160ビットよ
りも10少ない、iVLIWアドレス当たり合計150ビットとなる。その結果
、機能性は向上し、VIMメモリ・スペースは削減される。一般に追加情報は、
VIM内で実行ユニットごとに、またはそのVIMアドレスに格納されたiVL
IWを介して制御に影響を与える別々の個別ビットとして、個別に格納すること
ができる。たとえば、16の追加のロード即時ビットを、別々の「定数」レジス
タ内に格納し、VIMアドレス内にロードして、ロード・ユニットの容量を拡張
し、32ビットの即時データをロードすることができる。この拡張を達成するに
は、VIMデータ幅を適切に拡張しなければならない。格納されたiVLIWの
サイズが、命令サイズの倍数から減結合され、これによって格納されたiVLI
Wが、要件に応じて、k命令iVLIWに対するk*32ビットよりも大きいか
または小さくなるようにすることができる。
【0038】 図1には示したが図9または図10では図を見やすくするために示していない
SP制御装置102およびPE配列からなる、図9のプロセッサ900または図
10のプロセッサ1000などのプロセッサ内では、PE間通信を処理している
ときにSMIMD動作を実施すると、問題が発生する可能性がある。典型的なS
IMDモードの通信は、すべてのPEが同じPE間通信命令を実行するように指
定する。各PE内で同じであるこのSIMDのPE間命令は、PE間で画定され
た共通の動作に確実に従うために、共通の制御機構を必要とする。一般に、SE
ND−WESTなどの単一の命令が配列内にあるすべてのPEに送出される、送
信モデルが使用される。SIMDのPE間通信命令は、PE間のネットワーク・
インターフェースの制御を調整し、各PEがPE間命令によって位相的に定めら
れたPEにデータを送信できるようにするものである。すべてのPEが同じ命令
を受け取るので、この単一SIMD命令を解釈し、図9に示すように、単一のP
Eによってネットワーク・インターフェース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制御装置から受け取る。こ
の機構により、ネットワーク接続をサイクルごとに変更することができる。SI
MD送信モデルの2つの属性は、すべてのPEに対する共通の命令と、送信側な
らびに受信側の仕様である。SIMDモードでは、この方法は問題ではない。
【0039】 送信モデルをSMIMDモードに拡張しようとすると、別の問題が発生する可
能性がある。こうした問題の1つが、SMIMDモードでは、各PEが異なるP
E間通信命令を受信できるので、多重処理要素すべてが単一のPEに対するデー
タ送信を試みることが可能なことである。SIMD送信モデルの2つの属性は即
時に分析され、すなわち共通のPE間命令を有し、ソースとターゲットの両方、
言い換えれば送信側と受信側の両方を指定する。単一サイクル通信を備えたSI
MDモデル内の同じ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、または112
6の専用の制御を有する。たとえば、PE0はその入力マルチプレクサ1120
を制御するために、制御信号1111を有する。さらに受信モデルは、ターゲッ
トPEを指定せずに、インターフェース・ネットワークへのPE出力ポート上で
データを使用可能にしなければならない。したがって、受信モデルを使用して、
処理要素間で任意の有意な通信を発生させるためには、使用可能にされたデータ
を受信するときに協働するように、PEをプログラミングしなければならない。
同期MIMDを使用すると、協働命令が同じiVLIW位置内に存在すれば、こ
の協働が発生することが保証される。XV命令が実行されるときのこの命令の位
置を使用して、協働PEは正しいPE間通信命令を実行し、任意の2つまたはそ
れ以上のPE間でデータを移動させる。一般に、PEの1配列内には、複数のP
Eグループが存在できる。こうしたそれぞれのグループ内では、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のiV
LIWの定義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 R 3,A1+,A7、fmpy.pm.1fw R5,R2,R31、fadd.pa.1 fw R9,R7,R5、およびpexchg.pd.w R8,R0,2x2_PE3 なる4つの命令がロードされる。これらの命令は、図4Fの次の行から最終行ま
で見られる。同じVIMのエントリ(29)でも、VIMのエントリ29上でこ
れらのPEに対応する行、すなわちPE0 491、PE2 493、およびP
E3 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間の通信が発生しなければならない。この通信は、pexch
g命令を介して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モード動作中の通信ハザードを避けるために使用される、受信モデ
ル・クラスタ・スイッチ制御を示す。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 Suite 210, 6340 Quadra ngle Drive, Chapel Hill, NC 27514 U.S.A. (72)発明者 ドラベンストット トーマス エル アメリカ合衆国 ノースカロライナ州 27514 チャペル ヒル, ファリントン ロード 6123 アパートメント エム9 (72)発明者 レビラ ジュアン ギラーモ アメリカ合衆国 ノースカロライナ州 27513 キャリー, ワゴン トレール ドライブ 211 (72)発明者 ストルーベ デビッド カール アメリカ合衆国 ノースカロライナ州 27613 ラレイ, ベンブリッジ ドライ ブ 2621 (72)発明者 モーリス グレイスン アメリカ合衆国 ノースカロライナ州 27707 ダーハム, ウォーリンフォード プレイス 4114 Fターム(参考) 5B045 BB54 GG12 GG14 GG15

Claims (41)

    【特許請求の範囲】
  1. 【請求項1】 間接的超長命令語(VLIW)処理システムであって、 VIMメモリ位置内のスロットに命令を格納するためのVLIW命令メモリ(
    VIM)を有する第1の処理要素(PE)と、 命令タイプを定義する複数のグループ・ビットおよび実行ユニット・タイプを
    定義する複数のユニット・フィールド・ビットを有する、機能命令を格納するた
    めの第1のレジスタと、 複数のグループ・ビットおよび複数のユニット・フィールド・ビットを解読す
    るためのプリデコーダと、 前記解読に基づいてVIM内にある前記スロットのうちの適切な1つに機能命
    令をロードするためのロード機構とを含むシステム。
  2. 【請求項2】 間接的にVLIWを実行するためのアドレス・オフセットお
    よびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行VLI
    W命令(XV)である制御命令をさらに含む、請求項1に記載のシステム。
  3. 【請求項3】 間接的にVLIWを実行するためのアドレス・オフセットお
    よびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード/修
    正VLIW命令(LV)である制御命令をさらに含む、請求項1に記載のシステ
    ム。
  4. 【請求項4】 記憶部がよりコンパクトになるように、機能命令がVIMに
    格納される前に、機能命令からグループ・ビットおよびユニット・フィールド・
    ビットが取り除かれる、請求項1に記載のシステム。
  5. 【請求項5】 制御命令がVIMに格納される前に、機能命令からグループ
    ・ビットおよびユニット・フィールド・ビットが取り除かれ、少なくとも1つの
    置換ビットがグループ・ビットまたはユニット・フィールド・ビットのいずれか
    に追加される、請求項1に記載のシステム。
  6. 【請求項6】 前記置換ビットがイネーブル/ディスエーブル・ビットであ
    る、請求項5に記載のシステム。
  7. 【請求項7】 前記置換ビットが動作コード拡張ビットである、請求項5に
    記載のシステム。
  8. 【請求項8】 前記置換ビットがレジスタ・ファイル拡張ビットである、請
    求項5に記載のシステム。
  9. 【請求項9】 前記置換ビットが条件付き実行拡張ビットである、請求項5
    に記載のシステム。
  10. 【請求項10】 複数の実行ユニットならびに第1および第2のレジスタ・
    バンクをさらに含み、レジスタ・ファイル拡張ビットが使用され、複数の実行ユ
    ニットが第1のレジスタ・バンクまたは第2のレジスタ・バンクからの読取りま
    たはそこへの書込みを行う、請求項8に記載のシステム。
  11. 【請求項11】 機能命令を格納するための第2のレジスタと、第1のレジ
    スタの出力を第2のレジスタの入力に接続するためのバイパス径路と、機能命令
    がVIMにロードされることなく第1のレジスタから第2のレジスタに渡される
    、バイパス動作を選択するための選択機構とをさらに含む、請求項1に記載のシ
    ステム。
  12. 【請求項12】 制御命令が第2のレジスタ内に格納される前に、1つまた
    は複数のグループ・ビットおよびユニット・フィールド・ビットが置き換えられ
    る、請求項11に記載のシステム。
  13. 【請求項13】 ネットワーク・インターフェース接続を介して第1のPE
    に接続された少なくとも1つの追加PEをさらに含み、各PEが、それによって
    制御される受信ポートに接続された関連付けられたクラスタ・スイッチを有する
    、請求項1に記載のシステム。
  14. 【請求項14】 前記関連付けられたクラスタ・スイッチが、PEのクラス
    タ内にPE間の独立した径路を提供するために相互接続されたマルチプレクサを
    備えた、請求項13に記載のシステム。
  15. 【請求項15】 第1のPEに接続されたシーケンス・プロセッサ(SP)
    をさらに含み、制御命令と前記機能命令の両方を第1のPEに提供し、制御命令
    が実行VLIW命令(XV)またはロード/修正VLIW命令(LV)のいずれ
    かであり、XV命令およびLV命令の両方が、間接的にVLIWを実行するため
    のアドレス・オフセットおよびベース・ポインタを含んでいる、請求項1に記載
    のシステム。
  16. 【請求項16】 SPに接続された少なくとも1つの追加PEをさらに含み
    、前記制御命令が第1のPEおよび前記少なくとも1つの追加PEの両方に同期
    的に提供されるために、同じVIMアドレスで異なるVLIWを実行するときに
    、前記PEを同期的多重命令多重データ・ストリーム(SMIMD)マシンとし
    て動作させ、そうでない場合は前記PEがSMIDマシンとして動作する、請求
    項15に記載のシステム。
  17. 【請求項17】 複数のPEがSPに接続され、前記複数のPEが1つまた
    は複数のPEの第1グループおよび第2グループに編成された、請求項16に記
    載のシステム。
  18. 【請求項18】 PEの第1グループが、動作サイクル中に第1のVIMア
    ドレスにあるVLIW命令に対して間接的に動作し、PEの第2グループが、動
    作サイクル中に同じ第1のVIMアドレスにある異なるVLIW命令に対して間
    接的に動作する、請求項17に記載のシステム。
  19. 【請求項19】 各PEが受信ポートを有し、前記受信ポートでデータを受
    け取るかどうかを制御する通信制御の受信モデルに従って複数のPEが動作する
    、請求項17に記載のシステム。
  20. 【請求項20】 各PEが、受信ポートに接続された入力マルチプレクサを
    有し、前記入力マルチプレクサを制御することによって通信を制御する、請求項
    19に記載のシステム。
  21. 【請求項21】 複数のPEが、1つのPEが、他のPEが前記複数のPE
    のそれぞれについてVIM内の同じ位置にあるデータを使用可能にしている径路
    を指定する受信命令を有するように協働命令を格納することで協働するようにプ
    ログラミングされている、請求項19に記載のシステム。
  22. 【請求項22】 個別のPEのオンまたはオフをマスキングするためのマス
    キング機構をさらに含む、請求項17に記載のシステム。
  23. 【請求項23】 VLIW動作中に、ONにマスクされたPEのVIMにロ
    ードされ、OFFにマスクされたPEのVIMにはロードされない、請求項22
    に記載のシステム。
  24. 【請求項24】 同じサイクル中に、異なるPEが異なるVLIWを実行す
    る、請求項17に記載のシステム。
  25. 【請求項25】 VIMが、格納ユニット命令、ロード・ユニット命令、演
    算論理命令、乗積算ユニット命令、またはデータ選択ユニット命令といったタイ
    プの機能命令を格納するためのスロットを備えた、請求項1に記載のシステム。
  26. 【請求項26】 複数のPEが使用され、VLIWスロットが異なるタスク
    に関連付けられており、PEが同じサイクル中に異なるタスクに対して複数の動
    作を同時に実行することができる、請求項25に記載のシステム。
  27. 【請求項27】 超長命令語(VLIW)処理システムであって、 指定されたVIMアドレスにあるスロットにVLIWを格納するためのVLI
    Wメモリ(VIM)を有する第1の処理要素(PE)と、 制御命令と機能命令の両方を格納するための第1のレジスタと、 複数のグループ・ビットを解読することで制御命令と機能命令とを区別するた
    めのプリデコーダと、 前記制御命令の前記復号に基づいて、VIM内にある前記スロットのうちの適
    切な1つに機能命令をロードするためのロード機構とを含むシステム。
  28. 【請求項28】 PEにロードVLIW(LV)区切り符号を送出するシー
    ケンス・プロセッサ(SP)制御装置をさらに含み、その後、LV区切り符号中
    で指定された前記VIM内のVIMアドレスに命令シーケンスがロードされる、
    請求項27に記載のVLIW処理システム。
  29. 【請求項29】 少なくとも2つの処理要素(PE)を備えた単一命令多重
    データ・ストリーム(SIMD)マシンであって、前記SIMDマシン内の各P
    Eが、VLIWメモリ(VIM)内に格納されたVLIW命令に対して間接的に
    動作し、間接的な実行が実行VLIW(XV)命令によって開始され、異なるV
    LIW命令が同じVIMアドレスのPE内に格納されるマシン。
  30. 【請求項30】 前記XV命令が、VLIWを間接的に実行するために、各
    PEごとにオフセット・アドレスおよびベース・アドレス・レジスタへのポイン
    タを含んでいる、請求項29に記載のマシン。
  31. 【請求項31】 命令が複数のPE内のVIMに受け取られたときにローデ
    ィング・プロセスをセットアップして命令をロードするロード制御命令(LV)
    を利用して、命令が複数のPEのVIM内に格納される、請求項29に記載のマ
    シン。
  32. 【請求項32】 制御命令XVおよびLVがSIMD SP制御装置によっ
    てPEにディスパッチされるSIMDシーケンス・プロセッサ(SP)制御装置
    をさらに含む、請求項30に記載のマシン。
  33. 【請求項33】 間接的超長命令語(VLIW)処理方法であって、 第1の処理要素(PE)内にあるVLIW命令メモリ(VIM)内に格納すべ
    き第1のVLIW機能命令をフェッチするステップであって、前記VLIW機能
    命令が、命令タイプを定義する複数のグループ・ビットと、実行ユニット・タイ
    プを定義する複数のユニット・フィールド・ビットとを有するステップと、 第1のレジスタ内に第1の機能命令を格納するステップと、 プリデコーダを利用して、複数のグループ・ビットおよび複数のユニット・フ
    ィールド・ビットを解読するステップと、 前記解読に基づいて前記VIMのロード機構を用いて、適切なアドレスにある
    前記VIM内に機能命令をロードするステップとを含む方法。
  34. 【請求項34】 VLIWを間接的に実行するためのアドレス・オフセット
    およびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行VL
    IW命令(XV)である制御命令を受け取るステップをさらに含む、請求項33
    に記載の方法。
  35. 【請求項35】 VLIWを間接的に実行するためのアドレス・オフセット
    およびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード/
    修正VLIW命令(LV)である制御命令を受け取るステップをさらに含む、請
    求項33に記載の方法。
  36. 【請求項36】 記憶部がよりコンパクトになるように、機能命令がVIM
    に格納される前に、機能命令からグループ・ビットおよびユニット・フィールド
    ・ビットを取り除くステップをさらに含む、請求項33に記載の方法。
  37. 【請求項37】 制御命令がVIMに格納される前に、機能命令からグルー
    プ・ビットおよびユニット・フィールド・ビットを取り除くステップと、少なく
    とも1つの置換ビットをグループ・ビットまたはユニット・フィールド・ビット
    のいずれかに追加するステップとをさらに含む、請求項33に記載の方法。
  38. 【請求項38】 バイパス命令を受け取るステップと、第1のVLIW機能
    命令をVIM内にロードせずに第2のレジスタ内に格納するステップとをさらに
    含む、請求項33に記載の方法。
  39. 【請求項39】 制御命令と第1のPEへの前記機能命令の両方を受け取る
    ステップをさらに含み、前記制御命令が実行VLIW命令(XV)またはロード
    /修正VLIW命令(LV)のいずれかであり、XV命令およびLV命令の両方
    が、第1のPEに接続されたシーケンス・プロセッサ(SP)から間接的にVL
    IWを実行するためのアドレス・オフセットおよびベース・ポインタを含んでい
    る、請求項33に記載の方法。
  40. 【請求項40】 超長命令語(VLIW)処理方法であって、 指定されたVIMアドレスにあるスロットにVLIW命令を格納するために、
    第1の処理要素(PE)内にあるVLIWメモリ(VIM)内に格納される機能
    命令をフェッチするステップと、 第1のレジスタ内に第1の機能命令と制御命令の両方を格納するステップと、 制御命令と機能命令を区別するために、プリデコーダを利用して複数のグルー
    プ・ビットを解読するステップと、 前記制御命令の前記解読に基づいて、VIM内にある前記スロットのうちの適
    切な1つに機能命令をロードするステップとを含む方法。
  41. 【請求項41】 ロードVLIW(LV)区切り符号を受け取るステップを
    さらに含み、その後、シーケンス・プロセッサ(SP)制御装置からLV区切り
    符号内で指定された前記VIM内のVIMアドレスに命令シーケンスがロードさ
    れる、請求項38に記載のVLIW方法。
JP2000519833A 1997-11-07 1998-11-06 iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 Expired - Fee Related JP4156794B2 (ja)

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 true JP2001523023A (ja) 2001-11-20
JP4156794B2 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067278A (ja) * 1999-01-28 2010-03-25 Altera Corp プロセッサでの条件付き実行をサポートする装置及びその方法

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798834B1 (en) 1996-08-15 2004-09-28 Mitsubishi Denki Kabushiki Kaisha Image coding apparatus with segment classification and segmentation-type motion prediction circuit
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 富士通株式会社 情報処理装置及び情報処理方法
US6988188B2 (en) * 2000-03-01 2006-01-17 Realtek Semiconductor Corp. Data object architecture and method for xDSL ASIC processor
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 株式会社ルネサステクノロジ データ処理装置
MXPA03011487A (es) 2001-06-14 2004-03-18 Hyperion Cataysis Internationa Dispositivos de emision de campo utilizando nanotubos de carbono modificado.
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
WO2003084243A1 (en) 2002-03-28 2003-10-09 Sony Corporation Image compression/encoding device, method, and program
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
AU2003283777A1 (en) * 2002-12-30 2004-07-22 Koninklijke Philips Electronics N.V. Processing system
KR101132341B1 (ko) * 2003-04-07 2012-04-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 시스템 및 클러스터화된 명령 레벨 병렬성 프로세서
KR20060060689A (ko) * 2003-08-15 2006-06-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 병렬 처리 어레이 및 데이터 처리 방법
US20050216700A1 (en) * 2004-03-26 2005-09-29 Hooman Honary Reconfigurable parallelism architecture
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
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
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
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
US8077174B2 (en) 2005-12-16 2011-12-13 Nvidia Corporation Hierarchical processor array
US7634637B1 (en) * 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization
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
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8490110B2 (en) 2008-02-15 2013-07-16 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 한국전자통신연구원 데이터 프로세싱 회로
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
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
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
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
US8230179B2 (en) 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
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)

* Cited by examiner, † Cited by third party
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
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
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
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067278A (ja) * 1999-01-28 2010-03-25 Altera Corp プロセッサでの条件付き実行をサポートする装置及びその方法
JP2012033176A (ja) * 1999-01-28 2012-02-16 Altera Corp サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置

Also Published As

Publication number Publication date
USRE41703E1 (en) 2010-09-14
CN100380313C (zh) 2008-04-09
US6446191B1 (en) 2002-09-03
EP1029266B1 (en) 2007-05-16
DE69837791T2 (de) 2007-10-18
US6151668A (en) 2000-11-21
EP1029266A4 (en) 2005-08-17
CA2310584A1 (en) 1999-05-20
JP4156794B2 (ja) 2008-09-24
KR20010031884A (ko) 2001-04-16
ATE362623T1 (de) 2007-06-15
DE69837791D1 (de) 2007-06-28
IL135953A0 (en) 2001-05-20
CN1278342A (zh) 2000-12-27
EP1029266A1 (en) 2000-08-23
WO1999024903A1 (en) 1999-05-20

Similar Documents

Publication Publication Date Title
JP4156794B2 (ja) iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置
US5872987A (en) Massively parallel computer including auxiliary vector processor
US6581152B2 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
JP3149348B2 (ja) 代理命令を用いる並列処理システム及び方法
US7366881B2 (en) Method and apparatus for staggering execution of an instruction
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
US6874078B2 (en) Merged control/process element processor for executing VLIW simplex instructions with SISD control/SIMD process mode bit
US20020178345A1 (en) Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US20030061473A1 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US6883088B1 (en) Methods and apparatus for loading a very long instruction word memory
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
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