JP2002536738A - 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム - Google Patents

間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム

Info

Publication number
JP2002536738A
JP2002536738A JP2000596762A JP2000596762A JP2002536738A JP 2002536738 A JP2002536738 A JP 2002536738A JP 2000596762 A JP2000596762 A JP 2000596762A JP 2000596762 A JP2000596762 A JP 2000596762A JP 2002536738 A JP2002536738 A JP 2002536738A
Authority
JP
Japan
Prior art keywords
vim
instruction
vliw
processor
address
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.)
Withdrawn
Application number
JP2000596762A
Other languages
English (en)
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 JP2002536738A publication Critical patent/JP2002536738A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/3842Speculative instruction execution
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 パイプラインされた処理装置(100)であって、超長命令語(VLIWS)を含むランダム・アクセス・メモリ(516)を有する命令シーケンサ(101)と、n個の演算を並列に実行することができるn個の機能ユニットを備える。各VLIWは、VLIWメモリ(VIM)(516)の各アドレスまたはエントリでロードおよび連結され、間接的なVLIW(iVLIW)を形成する複数の短命令語(SIW)で構成される。各SIWは、固有の機能ユニットと関連付けられた固有の命令タイプに対応する。iVLIWはVLIW実行(XV)命令を介して実行される。XV1命令は、XV1命令が実行されるたびに変更することのできるマスク・フィールドを使用して、iVLIWの実行中にどの機能ユニットが使用可能あるいは使用不可能であるかを指定する。VIM(516)は、さらに分離したメモリ(520、522、524、526、528)に区分することができ、それぞれが機能的デコードおよび実行ユニット(540、542、544、546、548)と関連付けられる。第2のXV命令XV2は、独立してVIM(516)の各機能ユニット部分をアドレス指定することができる。

Description

【発明の詳細な説明】
【0001】 関連出願 本発明は、1997年12月4日に提出された「Method and Ap
paratus For Dynamically Modifying In
structions in a Very Long Instructio
n Word Processor」という名称の、米国仮出願第60/067
,511号の利益を請求するものである。
【0002】 発明の分野 本発明は、一般には並列処理の改良に関し、より詳細には、非間接VLIWプ
ロセッサにおける実行時間並列処理のために超長命令語(VLIW)のサブ命令
を動的に選択するための有利な技術に関する。
【0003】 発明の背景 VLIWプロセッサにおける典型的な問題は、ハードウェアで使用可能な固定
長のVLIWの全能力を効果的に使用するのが困難なことである。従来の設計で
はこの設計上の問題により、VLIWメモリは、VLIW内に多くのノー・オペ
レーション(NOP)命令を含む、非常に穴の多いものとなっていた。いくつか
のマシンでは、NOPを符号化してVLIWメモリ空間をより完全に利用するこ
とが試みられている。この試みの一動機は、上記のような初期のプロセッサに含
まれる高コストのVLIWメモリをより多く利用しようとすることであった。符
号化されたNOPは通常特定の各VLIWに割当てられ、異なるプログラム領域
で可能なVLIWの再使用は行われない。
【0004】 VLIW並列データ・プロセッサが応えるべき要求は他にもある。例えば、ス
ループットを最大にするためデータの流れを安定させるためには、パイプライン
動作が望ましい。VLIWごとに4つの短命令語(SIW)を有するVLIWア
ーキテクチャを使用した行列乗算の場合を考えてみたい。図1の例では、4要素
のベクトル2と4×4の行列4とが乗算される。レジスタ・ファイルに記憶され
ているオペランドと、レジスタ・ファイルのソース・データ・オペランド上で動
作して結果データをレジスタ・ファイルに納めるVLIW実行ユニットとがプロ
セッサに与えられているとすると、ベクトル要素はデータ・レジスタR20=a 0 、R21=a1、R22=a2、R23=a3に記憶され、4×4の行列4はプロ
セッサがアクセス可能なメモリに記憶されることが合理的に憶測される。図2は
、典型的な従来技術によるアプローチでどのように全体の動作が扱われるかを示
している。表10の各行は、ひとつの固有な短命令語(SIW)またはVLIW
命令を表しており、プログラムの流れは表の上部から始まり、時間の経過に従っ
てページの下方へと進行する。Loadオペレーションは、リストされたデータ
・エレメントをフェッチするために増分しながらメモリのアドレスを指定し、そ
のデータ・エレメントを指定のレジスタR0またはR1にロードする、索引付き
のロードである。Add命令およびMpy命令は、Rtarget=Rx Op
eration Ryなる関数を提供し、ここでRtargetは関数名に最も
近いオペランド・レジスタであり、ソース・オペランドRxおよびRyは指定さ
れた第2および第3のレジスタである。ひとつの固有なVLIWメモリ・アドレ
スはそれぞれ第1列の番号で識別される。図2の表10は、従来技術では、固有
なVLIWメモリ・アドレスそれぞれに記憶されている最低で7つのVLIWと
、3つの固有なSIWが所望の結果を達成するのに必要であることを示している
。7つのVLIWのうち、3つのVLIW、すなわちナンバー1、2、7は、V
LIWごとに2つのSIWしか使用せず、他の4つのVLIWはVLIWごとに
3つのSIWを使用する点は重要である。4つの命令スロットVLIWが2つの
SIWしか含まないとき、他の2つのスロットはNOP命令を含む。4つの命令
スロットVLIWが3つのSIWを含むとき、もう1つのスロットは単一のNO
Pを含む。下記で詳細に説明するが、命令スロットVLIWが5つの場合は、従
来技術を使用するとVLIWメモリの使用率がさらに低くなる。ベクトル行列の
例では、5番目のスロットがこの行列乗算の例には使用されないとすると、5ス
ロットのVLIWは、17のNOPを含む7×5=35個のVLIWメモリ位置
を使用することになる。従来技術による手法は、結果として多数のNOP命令が
ある非常に穴の多い(porous)VLIWメモリを生じさせる。
【0005】 使用可能なハードウェアをより効率的に使用できるようになるので、同一のタ
スクを達成するためには一意のVLIWメモリ・アドレスの数を減らすことが望
ましい。またVLIWメモリ・ストレージ中の重複命令を減らすことも望まれる
。これは、より小さなVLIWメモリをプロセッサ中に設計し、それによりその
コストを最小限にすることを可能にする重要な考察である。さらに同一のVLI
Wメモリ・アドレスを複数のコード・セクションで、さらには複数のプログラム
によっても共用することができれば、従来技術の手法に比べてVLIWメモリを
ロードする際の待ち時間コストを最小限にし、複数のプログラムにわたって償却
する(amortize)ことができ、それにより全体の性能を向上させること
が可能になる。さらにはこの概念を、複数処理エレメント(PE)、および単一
命令多重データ・ストリーム(SIMD)マシンのコントローラ・シーケンス・
プロセッサ(SP)に拡張することが望ましい。
【0006】 本発明の概要 本発明は、圧縮されたVLIWメモリと、VLIWの命令構成要素を再使用す
る機能を極めて有利な方法で提供することの必要性に向けられる。本発明の一態
様は、SIWメモリ(SIM)から命令を読み出すためのSIWフェッチ・コン
トローラと、構成されたVLIWを指定アドレスに記憶するためのVLIWメモ
リ(VIM)と、VIMから命令を間接的にロードし読み出すためのVLIWコ
ントローラと、命令のデコード・ユニットおよび実行ユニットを備える。本発明
のVLIWは、その実行前に、VIMアドレス中の複数のSIWをロードし連結
することにより構成される。
【0007】 SIMDマシンでは、SIWフェッチ・コントローラは、フェッチされた32
ビットの命令を配列PEにディスパッチするSIMD配列コントローラSP中に
備えられる。SPおよびPEには、VIM、VIMコントローラ、命令およびデ
コード実行ユニットが含まれる。この開示中で述べる概念は、SPコントローラ
中に置かれる間接VLIW(iVLIW)の装置およびメカニズムと、複数PE
配列SIMDマシン内の各PEの双方に適用される。
【0008】 少なくとも1つのVLIWがVIMにロードされると、それをVLIW実行(
XV)命令によって選択することができる。この発明で説明するXV命令には2
つのタイプがある。第1のタイプであるXV1は、実行時間並列処理のために、
スロットを超えて、同一のVIMアドレスにサブVLIW SIW選択を提供す
る。第2タイプのXV2は、実行時間並列処理のために、各スロットVIMセク
ション内の使用可能なSIWから独立して選択可能なSIWにより、サブVLI
W SIW選択を提供する。最初に、XV1命令についてこのアプローチの利点
を立証する例により説明する。それに続きXV2命令について、その固有の利点
を立証する例により説明する。
【0009】 XV1命令により、VIMベース・アドレス・レジスタから計算されたアドレ
ス情報と、XV1命令中にある即値のオフセット値に基づいて、記憶されている
VLIWが間接的に読み出される。XV1命令は、実行のためにスケジュールす
べき読み出しVLIWから命令を選択するマスク・イネーブル・ビットを含んで
いる。好適なManArrayの実施例では、実行ユニットごとに1ビットずつ
、8ビットのマスク・イネーブル・ビットがあり、単一のVLIWで8つまでの
SIWをサポートする。第1の態様については、5つのSIWを使用することが
好ましい。
【0010】 VIMベース・レジスタVbを使用することにより、VIMの無制限の記憶が
可能になる。第1の実施方法では、Vbベース・アドレスごとに、XV1命令は
8ビットのオフセットをサポートし、それによりVbアドレスごとに256個の
VLIWを可能にすることが好ましい。好適なManArrayアーキテクチャ
は、VIMアドレスごとに8つまでのSIWが記憶でき、本好適な実施形態では
最低限8ビットのマスク・イネーブル・ビットがスロットにつき1ビットずつサ
ポートされるよう指定している。また各VIMエントリに固有のアドレスがある
ので、各VIMを独立してロードし、修正し、実行し、あるいは使用不可能にす
ることができる。
【0011】 VIMエントリごとに8つのSIWスロットが使用できると、SIWタイプの
一意の組み合わせを255個まで各エントリに記憶することができ、例えばSI
W命令のタイプは、ストア、ロード、算術論理演算ユニット(ALU)、乗算累
算ユニット(MAU)、データ選択ユニット(DSU)の命令タイプを含むこと
ができる。組み合わせはそれぞれ、XV1の実行に使用できる固有の間接VLI
W(iVLIW)を表す。さらに、8ビットのマスクを含むXV1を介して以前
にロードされたVIMエントリからSIWの実行を呼び出すときには、そのVI
Mエントリだけで、固有のiVLIW演算を255個まで呼び出すことができる
【0012】 XV2命令により、VIMのスロット固有セクション内のVLIWグループ中
の重複命令を取り除くことができるようになる。この機能により、VIM内で命
令を最適にパックし、これによりその効率をさらに最適化し、特定のアプリケー
ションのためにそのサイズを最小限にすることができる。
【0013】 本発明の完全な理解、ならびに発明の他の特徴および利点は、下記の詳細な説
明および添付の図面から明らかになろう。
【0014】 詳細な説明 図3に示す本発明の好適な実施形態では、処理エレメント0(PE0)SP/
PE0 101と組み合わされたコントローラ・シーケンス・プロセッサ(SP
)を含んだ、ManArray 2×2 iVLIW単一命令多重データ・スト
リーム(SIMD)プロセッサ100(「Methods and Apparatus for Dynamic
Merging an Array Controller with an Array Processing Element」という名称
の同時係属出願第09/169,072号により詳細に扱われる)と、3つの追
加PE151、153、155が利用され、本発明の動的iVLIW修正技術を
実施する。SP/PE0 101にはフェッチ・コントローラ103が含まれ、
32ビットの命令メモリ105からSIWをフェッチすることを可能にする。フ
ェッチ・コントローラ103は、プログラム・カウンタ(PC)、ブランチ機能
、デジタル信号処理ループ操作、割り込みに対するサポートなどプログラム可能
なプロセッサで必要とされる典型的な機能を提供し、また、アプリケーションに
必要である場合には命令キャッシュを含むことのできる、命令メモリ・コントロ
ールも提供する。さらに、SIW I−フェッチ・コントローラ103は、32
ビットの命令バス102を介して、32ビットのSIWをシステム中のその他の
PEにディスパッチする。
【0015】 この例示システムでは、説明を平易にするために最初から最後まで共通のエレ
メントを使用する。他の実施方法がこの限定に制限されるものではないことは理
解されよう。例えば、組み合わされたSP/PE0 101中の実行ユニット1
31は、コントロール機能のために最適化された実行ユニットのセット、例えば
固定小数点実行ユニットに分割することができ、他のPEと同様にPE0も、浮
動小数点アプリケーションのために最適化することができる。発明の説明のため
に、実行ユニット131は、SP/PE0およびPEの実行ユニットと同一のタ
イプであると想定する。同様の方式で、SP/PE0および他のPEはVIMメ
モリ109および命令デコードを含む、5つの命令スロットiVLIWアーキテ
クチャと、SP/PE0のI−フェッチ・ユニット103からディスパッチされ
る命令を受け取り、VIMに記憶されブロック109に文字SLAMDで示され
る、iVLIWにアクセスするのに必要なアドレス/制御信号を生成するVIM
コントローラ機能ユニット107を使用する。iVLIWのローディングは、1
998年の11月6日に出願された「Methods and Apparatus for Efficient Sy
nchoronous MIMD Operations with iVLIW PE-to-PE Communications」という名
称の同時係属特許出願第09/187,539号により詳細に記載されている。
SP/PE0およびその他のPEには、共通のPE構成可能レジスタ・ファイル
127も含まれる。これについては、1998年10月9日に出願された「Meth
od and Apparatus for Dynamic Instruction Controlled Reconfiguration Regi
ster File with Extended Precision」という名称の同時係属特許出願第09/
169,255号に、より詳細に記載されている。SP/PE0 101の結合
的性質のため、データ・メモリ・インタフェース・コントローラ125は、メモ
リ121中のSPデータでSPコントローラのデータ処理をする必要性と、メモ
リ123中のPE0データでPE0のデータ処理をする必要性の両方に対処しな
ければならない。SP/PE0コントローラ125は、32ビットのブロードキ
ャスト・データ・バス126を通じて送られるデータのソースでもある。その他
のPE151、153、155は共通物理データ・メモリ・ユニット123'、
123''、123'''を含むが、それらに記憶されるデータは一般に、各PEで
行われるローカル処理で必要とされるデータとは異なる。これらのPEデータ・
メモリへのインタフェースは、PE1、2、3中でも共通の設計になっており、
PEローカル・メモリおよびデータ・バス・インタフェース論理157、157
’、157”によって指定される。データ転送通信のためにPEを相互接続して
いるのはクラスタ・スイッチ171であり、これについては、1997年6月3
0日に出願された「Manifold Array Processor」という名称の同時係属特許出願
第08/885,310号と、1997年10月10日に出願された「Methods an
d Apparatus for Manifold Array Processing」という名称の特許出願第08/9
49,122号と、1998年10月9日に提出された「Methods and Apparatus
for ManArray PE-to-PE Switch Control」という名称の特許出願第09/16
9,256号中に、より完全に記載される。上記の出願は本発明の譲受人に譲渡
され、本明細書に参照として完全に組み込まれる。ホスト・プロセッサ、他の周
辺装置、および/または外部メモリへのインタフェースは多くの方法で実現する
ことができる。完全を期すため示される主要なメカニズムはDMAコントロール
・ユニット181に含まれ、このユニットは、ManArrayコアの外部にあ
る装置およびインタフェース装置に接続するスケーラブルなManArrayデ
ータ・バス183を提供する。DMAコントロール・ユニット181は、上記の
外部装置がバス185を介してManArrayコア・メモリにインタフェース
するのに必要とされる、データ・フローおよびバス仲裁メカニズムを提供する。
【0016】 図4Aは基本的なiVLIWデータ経路400の全体を示し、フェッチされた
命令は、VIMをロードおよび記憶するコントロール機能ユニット403に接続
された命令レジスタ401に記憶される。VIMをロードおよび記憶するコント
ロール機能は、VIM405へのインタフェース信号を提供する。VIM405
の出力は、iVLIWレジスタ407にパイプラインで供給される。
【0017】 図4Bに、現在好適であるとされる1つのXV1命令425を示す。XV1命
令425は、符号化ブロック430に見られるように32ビットの符号化を行う
ものであり、以下でさらに述べるように、構文/演算ブロック435に示す現在
好ましいとされる構文/演算を有する。XV1命令425は、グループ・フィー
ルド・ビット30および31によって定義される命令コントロール・グループの
1つであり、VLIW(VIM)からVLIWを選択し、SP/PEのビット2
9によって選択可能な、指定されたSPまたはPEの個々の命令スロットを実行
するのに使用される。VIMアドレスは、ベースVIMアドレス・レジスタVb
(V0またはV1)と、図4Bの符号化ブロック430のビット・ブロック43
1のビット0〜7に示される無符号の8ビットのオフセットVIMOFFSとの
和として計算される。VIMアドレスはハードウェアを構成するのに有効な範囲
内になければならず、そうでない場合この命令の演算は定義されない。
【0018】 同様に図4Cは、VLIW−2機能をロード/修正するための現在好適とされ
るLV2命令455を示す。32ビットの符号化用の符号化ブロック450、お
よび構文/演算ブロック460が示される。図4Dは、32ビットの符号化ブロ
ック470と構文/演算ブロック480を有するXV2命令475を示す。
【0019】 動的SPおよびPE iVLIWスロット間圧縮操作 XV1命令は、サブiVLIW命令を修正し、使用可能/使用不可能にし、S
PおよびPEでiVLIW命令を間接的に実行するのに使用されると有利である
。iVLIWは、この出願中の他の個所ではLV1とも呼ばれるLV命令を使用
してVIMにロードされるが、これについては前述の同時係属出願第09/18
7,539号により詳細に記載されている。図5に示すように、各VIM516
のエントリは5つのSIWスロットからなり(実行ユニットにつき1つずつ)、
各SIWスロットには追加の状態ビットが関連付けられることが好ましいが、図
には5つだけを示している(スロットごとに1つのdビット)。5つの実行ユニ
ットに含まれるのは、VIM516のストア命令スロット520と関連付けられ
たストア・ユニット540と、ロード命令スロット522と関連付けられたロー
ド・ユニット542と、ALU命令スロット524と関連付けられた演算論理ユ
ニット(ALU)544と、MAU命令スロット526と関連付けられた乗算累
算ユニット(MAU)546と、DSU命令スロット528と関連付けられたデ
ータ選択ユニット(DSU)548である。
【0020】 5つの状態dビット521、523、525、527、529は、SIWスロ
ットが実行に使用可能であるかまたは実行に使用不可能であるかのいずれかを指
定する命令スロットのための、LVによってロードされたディセーブル・ビット
である。2進値でこの2つの状態を十分に区別できる。そのdビットが実行に使
用不可能な状態にセットされた命令スロットは、実行ユニットによりNOP(ノ
ー・オペレーション)命令として解釈される。さらにその機能スロット位置に適
したdビットが、そのスロットのビット31にロードされる。またはdビットを
グループ化してVIMアドレス・ライン内の異なる位置に記憶しながら、dビッ
トおよびそれに関連付けられた実行ユニットと、iVLIW内の命令スロットと
の関係を維持することもできる。
【0021】 図5は、iVLIW XV1のパイプライン500を示し、受領されたXV1
命令は命令レジスタ1(IR1)510にロードされる。IR1の出力は、VL
IW命令レジスタ2の値(IR2)514をロードする前に、パイプラインサイ
クルの初期にプリ・デコード512される。XV1命令をIR1 510で受領
すると、IR1 510のビット9をソースとするVb信号509によって選択
された指定のVbレジスタ501あるいは502を使用して、VIMアドレス5
11が計算され、加算器504により経路503を介してXV1命令に含まれる
オフセット値に加算される。ビット8およびビット9をともに使用することによ
り、4つまでのVbレジスタを指定できることに留意されたい。結果として得ら
れるVIMアドレス507は、マルチプレクサ508を通じて渡され、VIM5
16のアドレスを指定する。指定アドレスにあるiVLIWはVIM516から
読み出され、マルチプレクサ530、532、534、536、538を通って
、IR2レジスタ514に渡される。VIM516読み出しのアクセス・タイミ
ングのクリティカル・パスを最小限にするための代替策として、VIM516の
出力を、デコード状態論理の前に出力がマルチプレクサを通じて渡されるレジス
タにラッチすることができる。IR1 510に記憶されるXV1命令のビット
10〜17であるイネーブル・マスク・ビットは、経路537を介してビット・
ストア・ラッチに分配される。すなわちSのビット14はSラッチ550に、L
のビット13はLラッチ552に、Aのビット12はAラッチ554に、Mのビ
ット11はMラッチ556に、Dのビット10はDラッチ558に分配される。
【0022】 これらのイネーブル・マスク・ビットは、XV実行サイクルの各命令スロット
についてのdビットの実行使用可能な設定を無効にする。より詳細には、VLI
W−1ロード(LV1)命令は、dビットの設定を各VIMスロットにロードさ
せる。実行ユニット・スロットごとのdビットは、そのスロット位置の使用可能
あるいは使用不可能なステータスを表す。このビットの非活動状態、例えば「0
」は使用不可能な状態を表し、このビットの活動状態、例えば「1」は使用可能
な状態を表す。スロット内のdビットが使用可能である場合、そのビットはその
スロットに適したXV1マスク・イネーブル・ビットによって無効にされる。ス
ロット内のdビットが使用不可能である場合、そのビットを、そのスロットに適
したXV1マスク・イネーブル・ビットで無効にすることはできない。すなわち
、LV1命令によって使用不可能になったスロットを、XV1命令により再度使
用可能にすることはできない。逆にLV1命令で使用可能になったスロットは、
XV1命令で使用不可能にするかあるいは使用可能な状態に維持することができ
る。これを達成する単純論理は、各機能ユニットに位置する。この機能は、本明
細書に述べる機能性のために必要であり、また1998年11月6日に提出され
た同時係属特許出願第09/187,539号により詳細に記載される、同期M
IMD操作を効率的にサポートするためにも必要である。あるいはタイミング経
路により、オーバーライド論理をIR2の刻時の前にVIMの出力に位置させる
ことが可能になれば、ラッチ550〜558は回避することができる。いずれの
場合も、機能ユニットのデコードおよび実行論理540〜548は、VIMから
受け取ったすべての命令を実行するか、またはdビットおよびマスク・イネーブ
ル・ビットの設定に基づいてNOPを実行する。XV1を実行するには、IR2
MUX1制御信号519が、プリ・デコードXVc1制御信号517とともに、
すべてのIR2マルチプレクサ530、532、534、536、538に、V
IM出力経路541、543、545、547、549を選択させる。マスク・
イネーブル・ビットはそのラッチ入力にある。プリ・デコード・サイクルの終わ
りに、VLIW IR2 514およびマスク・イネーブル・ビット・ラッチは
クロックされ、その出力が機能ユニットの入力にあるようになる。この時点で、
パイプラインの5つの個々のデコードおよび実行段階540、542、544、
546、548は完了し、命令またはNOPを実行して、同時にiVLIWの並
列実行を遂行する。XVでない単一の32ビット機能命令がPEまたはSPでそ
れ自体で実行できるようにするために、バイパスVIM経路535が示される。
例えば、単一のADD命令が並列配列実行のためにIR1 510で受領される
と、プリ・デコード機能ユニット512はIR2MUX1 519制御信号を生
成する。この信号はADD命令プリ・デコード信号とともに、ALUマルチプレ
クサ534にバイパス経路535を選択させる。この場合は実行中にXV命令が
ないので、イネーブル・マスク・ビットは機能ユニット論理に無視される。
【0023】 個々の命令スロットの任意の組み合わせは、実行スロット・パラメータ「E=
{SLAMD}」を介して実行してもよく、この場合S=ストア・ユニット(S
U)、L=ロード・ユニット(LU)、A=演算論理ユニット(ALU)、M=
乗算累算ユニット(MAU)、D=データ選択ユニット(DSU)である。ブラ
ンクの「E=」パラメータはどのスロットも実行しない。Vxビット24は、こ
のXV1がLV UAFの設定を無効にするかどうかを指定する。Vx=0は、
LV UAFの設定を無効にするなということを意味し、Vx=1は、このXV
1のUAFフィールドのビット22および23で指定される設定で、LV UA
F設定を無効にせよということを意味する。Unit Affecting F
lags(UAF)パラメータ「F=〔AMDN〕」はLV命令を介してロード
されると、VLIWのために指定されたUAFを無効にする。オーバーライドは
、どの演算命令スロットにVLIWのこの実行についての条件フラグをセットさ
せるか(A=ALU、M=MAU、D=DSU)、あるいはどの演算命令スロッ
トにもセットさせないか(N=NONE)を選択する。オーバーライドは、LV
命令を介して指定されたUAF設定に影響を与えない。ブランク「F=」は、V
LIWがロードされると、指定されたUAFを選択する。
【0024】 条件フラグは個々の単一命令により、元のLV命令からの「F=」パラメータ
の設定によって指定されたスロット中にセットされるか、またはXV1命令中の
「F=〔AMD〕」パラメータによって無効にされる。条件フラッグは「F=N
」であるときには影響を受けない。
【0025】 実行される各スロット中の個々の単一命令に基づいてパイプラインが考慮され
ねばならないが、XV1演算は完了に1実行サイクルを要する。
【0026】 本発明の動作の全体は、従来技術の説明において例を示した課題へのその応用
例を検討することにより一層理解できよう。図6の表600で、各行はiVLI
Wを表している。固有のVIMアドレス610はそれぞれ第1列の番号で識別さ
れる。四角で囲った表項目は、実行中にXV1命令によってマスクされる(すな
わち使用不可能にされる)SIWを表す。図6の表600で、影をつけたVIM
アドレス−0のiVLIW612、614、616、618は、VIMアドレス
−0に記憶されているSIWがそのたびごとに異なるマスクでXV1命令によっ
て呼び出される、4つの場合を目立たせるように示している。命令が最初に呼び
出されるとき、実行を許されるのはロード・ユニットだけであり、乗算累算ユニ
ットおよびストア・ユニットはXV1命令によってマスクされる。2度目にVI
Mアドレス−0のiVLIW命令が呼び出されるときには、ロード・ユニットお
よび乗算累算ユニットが実行を許され、ストア・ユニットはXV1命令によって
マスクされる。3度目には、3つのユニットすべてを実行することができる。最
終的に、アドレス−0のiVLIWに記憶されている命令が4度目に呼び出され
るときには、ストア・ユニットだけが実行を許され、ロード・ユニットおよび乗
算累算ユニットはマスクされる。図3の2×2 ManArray100では、
4つの独立したベクトル×行列の演算が、各PEのローカル・データ・メモリに
記憶された独立ローカルPEデータ上で並列にかつ同期して行われ、その一方で
各PEに32ビットのXV1命令をディスパッチして、制御を単一のスレッドに
維持する。この例で識別されるiVLIWは各PEで識別されるiVLIWと同
一であり、各PEのローカル・レジスタ・ファイルおよびローカル・データ・メ
モリからアクセスされるオペランドを有する。
【0027】 図7は、VIMアドレス0〜3 710に記憶された図6の例の4つのiVL
IWと、サイクルごとにデコードおよび実行ユニットにディスパッチされる命令
シーケンス720を示している。ディスパッチされた命令シーケンス720は、
実行時間に並列で実行されるiVLIWの再使用とサイクルごとの再定義を示し
ている。この再定義とは、iVLIW中の固有のVIMアドレスに記憶されてい
るSIWを選択することである。例えば図のiVLIW−0は、iVLIW−0
のSIWの異なるグループ化により、命令実行サイクル1、3、7で使用されて
いる。サイクル1では、ロード・ユニット命令だけが使用される。サイクル3で
はロード・ユニットおよびMAUユニットが使用され、サイクル7ではストア・
ユニット、ロード・ユニット、MAUが使用される。図7は、本発明が、いくつ
かのVLIW演算を単一のVLIWメモリ・エントリに効果的に「パック」する
ことにより、プログラムが必要とする固有のVLIWメモリ・エントリ数の大幅
な節減を達成する仕組みを示している。したがって本発明によると、複数のiV
LIWを同一のVIMアドレスに記憶することにより、複数のプログラムが単一
のVLIWメモリ・エントリを共用することができる。この例は、ソフトウェア
・パイプラインの構築および解体を行うための本発明の使用例も示している。さ
らに並列プロセッサ中のiVLIWメモリのサイズは、構築するのに極端に高い
コストがかからないように維持することができる。図7Aは、XV1命令を使用
して、図3の2x2 ManArray100で図1のベクトルと行列の乗算を
行うための例示的プログラム・コード730を示している。
【0028】 動的SPおよびPE iVLIW スロット内圧縮操作 スロット内圧縮メカニズムの場合、VIMは、それぞれが機能的なデコードお
よび実行ユニットと関連付けられた別個のVIMセクションに分割される。VI
Mの各アドレス・マップは、アドレス指定可能な複数の4ビットのセクションに
分割され、各VIMスロット・セクションに対して指定することのできる分離し
たオフセットを有する、実行iVLIW命令の第2バージョンすなわちXV2に
含まれるオフセット・フィールドによって制御(govern)される。このV
IMの構成とXV2のアドレス指定オプションにより、各VIMスロットの4ビ
ットのアドレス範囲内で命令を独立して選択することが可能になる。この機能が
提供されることにより、アドレス指定可能な16個のiVLIWの範囲内で重複
SIWを取り除くことができ、複合VIM内でSIWをより多くパックすること
ができるようになる。無論、区分されたVIM内での独立したSIWの選択を可
能にする発明技術を利用することにより、アドレス指定オプションに対して多く
の変形例を構想することができるが、下記に1つの変形例を説明し、本発明によ
るスロット内圧縮の多様な態様を明らかにする。
【0029】 XV2命令は、それがサブiVLIW命令を修正し、使用可能/使用不可能に
し、SPおよびPEでiVLIW命令を間接的に実行するために使用されるとい
う点でXV1命令に類似する。ただしXV1命令とは異なる方法で上記の動作を
行う。XV2命令の場合は、VLIWロード命令の新バージョン、すなわち図4
CのLV2 455を使用して、iVLIWがこの新しい区分VIMにロードさ
れていることがなお想定される。LV2の符号化ブロック450は、LV2命令
の演算コードを表すビット25〜28のCtrlOpフィールドと、少なくとも
1つの命令をロードすべきかまたは指定アドレスについてのディセーブルdビッ
トだけをロードすべきかを指定する、ロード命令ビット23とからなる。ビット
22はロードされたディセーブルdビットである。ビット18〜21は、ビット
15〜17の指定された機能ユニットのVIMに16個までの命令をロードする
ことを指定し、ビット9のVbレジスタ・アドレスとビット0〜7のVIMPO
FFSオフセット・アドレスによって指定されたアドレスで始まる。構文/演算
についての詳細はブロック460に示す。XV2命令475が図4Dに示される
。符号化フォーマットは、下記の新しいビット・フィールドを備える符号化ブロ
ック470に示される。XV2ではUAFフィールド・ビット23および24は
任意選択ではなく、XV2を使用するたびに指定しなければならない。VIMベ
ース・レジスタ選択Vbはビット20であり、5つのオフセット・フィールドは
、ストアVIMオフセット(SOFS)ビット16〜19と、ロードVIMオフ
セット(LOFS)ビット12〜15と、ALU VIMオフセット(AOFS
)ビット8〜11と、MAU VIMオフセット(MOFS)ビット4〜7と、
DSU VIMオフセット(DOFS)ビット0〜3である。構文/演算はブロ
ック480に示す。
【0030】 iVLIW XV2のパイプライン800の態様を示す図8を参照すると、V
IM816は、それぞれがその機能的デコードおよび実行ユニットと関連付けら
れた複数の独立メモリ・ユニットからなっている。独立アドレス指定論理は、ス
ロットVIMごとに提供される。図8に示すように、各VIMエントリは5つの
SIWスロット(実行ユニットごとに1つ)からなり、各SIWスロットには、
図にそのうちの5つを示す追加の状態ビットが関連付けられることが好ましい(
スロットごとに1つのdビット)。5つの実行ユニットに含まれるのは、ストア
命令VIM820と関連付けられたストア・ユニット840と、ロード命令VI
M822と関連付けられたロード・ユニット842と、ALU命令VIM824
と関連付けられた演算論理ユニット(ALU)844と、MAU命令VIM82
6と関連付けられた乗算累算ユニット(MAU)846と、DSU命令VIM8
28と関連付けられたデータ選択ユニット(DSU)848である。
【0031】 ALU VIMアドレス加算器804によって例示される、図8のVIMアド
レス加算器機能ブロックは、構文/演算ブロック460に示す図4CのVLIW
−2ロード命令(LV2)が必要とするVIMアドレス増分機能をサポートする
ために、図5の加算器機能ブロック504とは異なる。この機能により、LV2
命令に続く命令をロードさせることが可能になる。 ・(V[01]+VIMOFFS)[UnitVIM]←LV2に続く第1番目
の命令 ・(V[01]+VIMOFFS+1)[UnitVIM]←LV2に続く第2
番目の命令 : ・(V[01]+VIMOFFS)+InstrCnt)[UnitVIM]←
LV2に続く(InstrCnt)番目の命令 命令カウントInstrCntは、コード化された0からFの2進数であり、
これらは、16個までの連続したUnitVIM位置にロードできる1〜16個
の命令を表す。
【0032】 5つの状態dビット821、823、825、827、829は、SIWスロ
ットが実行に使用可能であるか、あるいは実行に可能でないかのいずれかを指定
する命令スロットのために、LVでロードされたディセーブル・ビットである。
2進値はこの2つの状態を区別するのに十分である。そのdビットが実行に使用
不可能な状態にセットされた命令スロットは、実行ユニットによりNOP(ノー
・オペレーション)として解釈される。さらに、その機能スロット位置に適した
dビットがそのスロットのビット31にロードされる。
【0033】 iVLIW XV2のパイプライン800の動作は以下の通りである。受領さ
れたXV2命令は、命令レジスタ1(IR1)810にロードされる。IR1の
出力は、IR2 814内のVLIW命令レジスタ2の値をロードする前に、パ
イプライン・サイクルの早い段階にプリ・デコード機能ユニット812によって
プリ・デコードされる。IR1 810でXV2命令を受け取ると、複数のVI
Mアドレスが並列に計算される。各VIMスロット・セクションが、XV2命令
によってセットされたそれ自体のオフセット値を有するので、計算はVIMスロ
ット・セクションごとに異なる。VIMスロットの各計算は、Vb+0exte
nd{unitOFS[4]}の形をとり、Vbは2つのVIMアドレス・レジ
スタのうち1つを表し、0extendは、4ビット(unitOFS[4])
の値をVbの範囲に位置合わせする。例えば、ALU VIMのアドレス811
は、Vb+0extend{AOFS[4]}によって計算され、このVbの値
は、IR1のビット20であるVbフィールドによって選択されたV0またはV
1のいずれかをソースとする。加算は加算器804によって行われる。AOFS
[4]=IR1のビット8〜11は加算器804に接続され、加算器804の出
力807はマルチプレクサ808を通じて渡されて、ALU VIMスロット・
アドレス811を生成する。ゼロ拡張論理は説明を平易にするために示していな
い。エントリをXV2でマスクする機能は、XV1の演算の説明に関連して述べ
たイネーブル・マスク・ビットを使用せずに行うことができる。プログラマがエ
ントリをマスクする機能を望む場合は、そのために事前に計画を立てなければな
らず、オフセット・フィールドによって提供される16アドレスのグループの中
で、SIWのうち少なくとも1つはディセーブルdビットを使用して使用不可能
としてマークされる。マスク・オフされた特定のスロットで実行すべき特定のi
VLIWについては、そのユニットのVIMのunitOFSオフセットが使用
され、以前に記憶された使用不可能なSIWを選択する。スロットを使用不可能
にする必要がない場合は、16のアドレスは、「使用可能」なSIWが完全に使
用することができる。使用不可能にしたいスロットが1つだけである場合、その
スロットのVIMだけが、使用不可能な命令を含む必要がある。VIMアドレス
が選択されると、適切なSIWが読み出されそのデコードおよび実行ユニットに
送られる。XV2操作ではイネーブル・マスク・ビットが必要でないので、デコ
ードおよび実行ユニットへの入力に必要とされる追加状態ビットのラッチはない
。XV1とXV2の演算のもう1つの違いは、XV2の場合はUAFフィールド
が常に選択される点である。実行される各スロット内の個々の単一命令に基づい
てパイプラインを考慮しなければならないが、XV2の演算は完了に1実行サイ
クルを要する。
【0034】 本発明は、従来技術の説明中において例を示した課題へのXV2の応用を考察
することにより、その理解を深めることができよう。図9は、XV2のアプロー
チを使用する場合に必要なiVLIWを示している。デコードおよび実行ユニッ
トはそれぞれ、iVLIWの使用のためにそれぞれ異なる記憶要件でそれ自体の
VIMに関連付けられる。これは図8にも示され、機能ユニットVIMごとに異
なるアドレス範囲が示される;(0−(A−1))ストアVIM820と、(0
−(B−1))ロードVIM822と、(0−(C−1))ALU VIM82
4と、(0−(D−1))MAU VIM826と、(0−(E−1))DSU
VIM828である。図9で、複合VIM910は5つのデコードおよび実行
ユニットのVIMを示している。この複合VIM910の記憶要件は以下の通り
である。Store VIMは2つだけの位置を必要とし、Load VIMは
3つの位置を使用し、ALU VIMは4つの位置を使用し、MAU VIMは
5つの位置を使用し、DSU VIMは1つだけの位置を必要とする。各VIM
で1セットだけの使用不可能位置が使用され、これは従来のように各ユニットの
VIMのVIMアドレス0にある。ディスパッチされた命令シーケンス920は
、実行時間に並列に実行されるiVLIWの再使用およびサイクルごとの再定義
を表す。この再定義は、ユニットVIMに記憶されたSIWを選択することであ
るが、同一のVIMアドレスにあるすべてがXV1で行われるわけではない。例
えばシーケンス920の命令実行サイクル4で、Store SIWは、Sto
re VIMのアドレス0からアクセスされる使用不可能化されたdビット命令
であり、Load SIWは、Load VIMのアドレス2からアクセスされ
るR1ロード、データ命令であり、ALU SIWは、ALU VIMのアドレ
ス3からアクセスされるR9、R5、R6加算命令であり、MAU SIWは、
MAU VIMのアドレス3からアクセスされるR5、R0、R22乗算命令で
あり、DSU SIWは、DSU VIMのアドレス0からアクセスされる使用
不可能化されたdビット命令である。図10は、XV2命令を使用して、図3の
2×2 ManArray600で図1のベクトルと行列の乗算を行うための、
プログラム・コード1000を示す。具体的には図3の2×2 ManArra
yでは、各PEのローカル・データ・メモリに記憶された独立のローカルPEデ
ータ上で、4つの独立ベクトル×行列の演算が並に、かつ同期して行われ、一方
で32ビットのXV2命令を各PEにディスパッチして、制御を単一スレッドに
維持する。この例示的説明で識別されるiVLIWは、オペランドが各PEのロ
ーカル・レジスタ・ファイルおよびローカル・データ・メモリからアクセスされ
る各PE中のiVLIWと同一である。
【0035】 XV2のアプローチとXV1のアプローチを比較すると、図9に示すXV2ア
プローチの複合VIM910では15個だけの位置が使用され、図7に示すXV
1アプローチのVIM710では20個の位置が使用されることが分かる。どち
らのアプローチも、そのVLIWメモリ・ストレージの利用に関して従来技術を
大幅に凌ぐ。通常、従来技術のシステムによる5スロットのVLIWでは35個
の位置が必要とされた。コストに配慮する応用例では、XV2アプローチが、各
機能ユニットのVIMをその応用例のためにコストを最適化することを可能にす
ることにも留意されたい。
【0036】 本発明は、この発明を実行するのに現在好ましいとされる方法および装置との
関連で説明したが、当分野の技術者には多様な応用的態様および変形例が容易に
明らかになろう。
【図面の簡単な説明】
【図1】 行列によるベクトルの乗算を示す図である。
【図2】 従来技術による図1の乗算演算の手法を示す図である。
【図3】 本発明と併せて使用するための配列トポロジで接続された複数の処理エレメン
トへの接続を示す、ManArray 2x2 iVLIWプロセッサの図であ
る。
【図4A】 本発明の現在好ましいとされる実施形態による、VIMとのiVLIWデータ
経路の図である。
【図4B】 現在好ましいとされるXV1(VLIW実行)命令、およびその構文/演算の
詳細図である。
【図4C】 現在好ましいとされるLV2(VLIW−2のロード/修正)命令、およびそ
の構文/演算の詳細図である。
【図4D】 現在好ましいとされるXV2(VLIW実行)命令、およびその構文/演算の
詳細図である。
【図5】 本発明により、例示的XV1命令フォーマットとともに利用されるスロット間
圧縮を使用したiVLIW XV1パイプラインの態様を示す図である。
【図6】 図1の乗算演算に応用された本発明のアプローチを示す図である。
【図7】 実行時間並列処理のための、命令スロットを超えたサイクルごとの動的なiV
LIW命令の選択を示す図である。
【図7A】 XV1命令を使用して図1の乗算演算を行うためのプログラム・コードを示す
図である。
【図8】 本発明による、例示的XV2命令フォーマットを利用したスロット内圧縮によ
るiVLIW XV2パイプラインの態様を示す図である。
【図9】 実行時間並列処理のための、スロット内圧縮によるサイクルごとの動的なiV
LIW命令の選択を示す図である。
【図10】 XV2命令を使用して図1の乗算演算を行うためのプログラム・コードを示す
図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 レヴィッラ, ジュアン, ギレルモ アメリカ合衆国 ノースカロライナ州 27513, キャリー, ワゴン トレイル ドライブ 211 (72)発明者 バリー, エドウィン, エフ. アメリカ合衆国 ノースカロライナ州 27511, キャリー, ラークホール コ ート 1208 Fターム(参考) 5B013 DD00 DD01 5B033 AA13 CA00 DB02 【要約の続き】 6)の各機能ユニット部分をアドレス指定することがで きる。

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 間接超長命令語(VLIW)プロセッサであって、 複数の別個の演算を並列に実行することができる複数の実行ユニットと、 VLIWを記憶するためのVLIWメモリ(VIM)と、 VIM中の各メモリ・エントリへのアクセスを提供するアドレス指定メカニズ
    ムであって、前記メモリ・エントリがそれぞれ固有の実行ユニットと関連付けら
    れた少なくとも1つの命令スロットを含むアドレス指定メカニズムを備えるプロ
    セッサ。
  2. 【請求項2】 各命令スロットと関連付けられた少なくとも1つの状態ビッ
    トをさらに含み、前記状態ビットは、命令が実行に使用可能であるかまたは実行
    に使用不可能であるかを示す請求項1に記載の間接VLIWプロセッサ。
  3. 【請求項3】 VIMに記憶されたVLIWを実行する命令であって、VI
    Mアドレスを指定するためのフィールドと、少なくとも1つのマスク・イネーブ
    ル・ビットを含む命令をさらに備える請求項1に記載の間接VLIWプロセッサ
  4. 【請求項4】 前記複数の実行ユニットは、ストア・ユニット、ロード・ユ
    ニット、演算論理ユニット、乗算累算ユニット、データ選択ユニットを備える請
    求項1に記載の間接VLIWプロセッサ。
  5. 【請求項5】 前記メモリ・ユニットはそれぞれ、ストア命令スロット、ロ
    ード命令スロット、演算論理命令スロット、乗算累算命令スロット、データ選択
    ユニット・スロットを含む請求項1に記載の間接VLIWプロセッサ。
  6. 【請求項6】 前記アドレス指定メカニズムは、ベースVIMアドレスを記
    憶するためのベースVIMアドレス・レジスタと、ベースVIMアドレスを加算
    するための加算器と、VIMアドレスを生成するためのオフセット(VIMOF
    F)を備える請求項1に記載の間接VLIWプロセッサ。
  7. 【請求項7】 前記命令は、命令スロットごとに少なくとも1つのマスク・
    イネーブル・ビットを含み、各マスク・イネーブル・ビットを記憶するための少
    なくとも1つのストレージ・ラッチをさらに備える請求項3に記載の間接VLI
    Wプロセッサ。
  8. 【請求項8】 各命令スロットと関連付けられた少なくとも1つの状態ビッ
    トであって、命令が実行に使用可能であるかまたは使用不可能であるかを示す前
    記状態ビットと、少なくとも1つのストレージ・ラッチについて記憶されたマス
    ク・イネーブル・ビットとそれに関連付けられた命令スロットの前記状態ビット
    から、命令が実行されるかされないかを判定する実行ユニット・デコーダとをさ
    らに備える請求項7に記載の間接VLIWプロセッサ。
  9. 【請求項9】 複数の別個の演算を並列に実行することができる複数の実行
    ユニットと、 VLIWを記憶するためのVLIWメモリ(VIM)であって、前記複数の実
    行ユニットのうち1つとそれぞれが関連付けられた別個のVIMセクションに分
    割され、前記VIMセクションが各メモリ・エントリ・スロット中に命令を記憶
    するVLIWメモリと、 関連付けられたそのVIMセクション内の各メモリ・エントリへの独立したア
    クセスを提供する、前記各VIMセクションのためのアドレス指定メカニズムと
    を備える間接超長命令語(VLIW)プロセッサ。
  10. 【請求項10】 各VIMセクションと関連付けられた少なくとも1つの状
    態ビットをさらに含み、前記状態ビットは、命令が実行に使用可能であるかまた
    は使用不可能であるかを示す請求項1に記載の間接VLIWプロセッサ。
  11. 【請求項11】 VIMに記憶されたVLIWを実行するための命令をさら
    に備え、前記命令は、実行ユニットVIMごとに1つのオフセット・フィールド
    でVIMアドレスを指定するための複数のオフセット・フィールドを含む請求項
    1に記載の間接VLIWプロセッサ。
  12. 【請求項12】 複数の実行ユニットは、ストア・ユニット、ロード・ユニ
    ット、演算論理ユニット、乗算累算ユニット、データ選択ユニットを備える請求
    項11に記載の間接VLIWプロセッサ。
  13. 【請求項13】 前記アドレス指定メカニズムは、ベースVIMアドレスを
    記憶するためのベースVIMアドレス・レジスタと、ベースVIMアドレスを加
    算するための加算器と、VIMアドレスを生成するためのオフセットを備える請
    求項9に記載の間接VLIWプロセッサ。
  14. 【請求項14】 前記アドレス指定メカニズムは、ベースVIMアドレスを
    記憶するためのベースVIMアドレス・レジスタと、ベースVIMアドレスを加
    算するための加算器と、アドレスを生成するためのオフセットと、命令をVIM
    の複数のVIMアドレス中にロードするための増分メカニズムを備える請求項9
    に記載の間接VLIWプロセッサ。
  15. 【請求項15】 シーケンス・プロセッサ(SP)および複数の処理エレメ
    ント(PE)を備えた単一命令多重データ・ストリーム(SIMD)プロセッサ
    であって、SPおよび各PEは、 複数の別個の演算を並列に実行することができる複数の実行ユニットと、 VLIWを記憶するための超長命令語(VLIW)メモリ(VIM)と、 VIM中の各メモリ・エントリへのアクセスを提供する、前記VIMのための
    アドレス指定メカニズムであって、前記メモリ・エントリがそれぞれ、固有の実
    行ユニットと関連付けられた少なくとも1つの命令スロットと、各命令スロット
    と関連付けられた少なくとも1つの状態ビットとを含み、前記状態ビットが命令
    スロットのためのロード標識ビットとして作用するアドレス指定メカニズムとを
    備えるSIMDプロセッサ。
  16. 【請求項16】 VIMに記憶されているVLIWを実行するための命令で
    あって、VIMアドレスを指定するためのフィールドと、VLIW命令実行時間
    に実行ユニットを使用可能にするかあるいは使用不可能にする制御を行うための
    少なくとも1つのマスク・ビットを含む命令をさらに備える請求項15に記載の
    SIMDプロセッサ。
  17. 【請求項17】 複数のVLIW演算が単一のVLIWメモリ・エントリに
    パックされ、PEで同時に実行されている複数のプログラムが単一のVLIWメ
    モリ・エントリを共用することができる請求項15に記載のSIMDプロセッサ
  18. 【請求項18】 シーケンス・プロセッサ(SP)および複数の処理エレメ
    ント(PE)を備えた単一命令多重データ・ストリーム(SIMD)プロセッサ
    であって、SPおよび各PEが、 複数の別個の演算を並列に実行することができる複数の実行ユニットと、 VLIWを記憶するための超長命令語(VLIW)メモリ(VIM)であって
    、前記複数の実行ユニットのうち1つとそれぞれが関連付けられた別個のVIM
    セクションに分割され、前記VIMセクションが各メモリ・エントリ・スロット
    に命令を記憶するVIMと、 関連付けられたそのVIMセクション内の各メモリ・エントリへの独立したア
    クセスを提供する、前記各VIMセクションのためのアドレス指定メカニズムと
    を備えるSIMDプロセッサ。
  19. 【請求項19】 各VIMセクションと関連付けられた少なくとも1つの状
    態ビットをさらに備え、命令が実行に使用可能であるかまたは実行に使用不可能
    であるかを前記状態ビットが示す請求項18に記載のSMIDプロセッサ。
  20. 【請求項20】 VIMに記憶されているVLIWを実行するための命令で
    あって、複数のオフセット・フィールドを含み、実行ユニットVIMごとに1つ
    のオフセット・フィールドでVIMアドレスを指定する前記命令をさらに備える
    請求項18に記載のSMIDプロセッサ。
  21. 【請求項21】 複数の実行ユニットが、ストア・ユニット、ロード・ユニ
    ット、演算論理ユニット、乗算累算ユニット、データ選択ユニットを備える請求
    項18に記載のSMIDプロセッサ。
  22. 【請求項22】 前記アドレス指定メカニズムが、ベースVIMアドレスを
    記憶するためのベースVIMアドレス・レジスタと、ベースVIMアドレスを加
    算するための加算器と、VIMアドレスを生成するためのオフセットを備える請
    求項18に記載のSMIDプロセッサ。
JP2000596762A 1998-12-04 1999-12-02 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム Withdrawn JP2002536738A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/205,588 1998-12-04
US09/205,588 US6173389B1 (en) 1997-12-04 1998-12-04 Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
PCT/US1999/028506 WO2000034887A1 (en) 1998-12-04 1999-12-02 System for dynamic vliw sub-instruction selection for execution time parallelism in an indirect vliw processor

Publications (1)

Publication Number Publication Date
JP2002536738A true JP2002536738A (ja) 2002-10-29

Family

ID=22762812

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000596762A Withdrawn JP2002536738A (ja) 1998-12-04 1999-12-02 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム

Country Status (5)

Country Link
US (3) US6173389B1 (ja)
EP (1) EP1247196A1 (ja)
JP (1) JP2002536738A (ja)
IL (1) IL143430A0 (ja)
WO (1) WO2000034887A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6405301B1 (en) * 1999-06-15 2002-06-11 U.S. Philips Corporation Parallel data processing
US20080162875A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel Data Processing Apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
AU3829500A (en) 1999-04-09 2000-11-14 Clearspeed Technology Limited Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US8169440B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US8171263B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US7526630B2 (en) * 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US7802079B2 (en) 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US20010049757A1 (en) 2000-03-01 2001-12-06 Ming-Kang Liu Programmable task scheduler for use with multiport xDSL processing system
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
AU2001245833A1 (en) * 2000-03-27 2001-10-08 Infineon Technologies, Ag Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (cliw)
RU2158319C1 (ru) * 2000-04-25 2000-10-27 Институт металлургии и материаловедения им. А.А. Байкова РАН Высокопрочная коррозионно- и износостойкая аустенитная сталь
US6614438B1 (en) * 2000-05-30 2003-09-02 Koninlijke Philips Electronics N.V. Data-processing arrangement for processing different types of data
ATE498158T1 (de) * 2000-11-06 2011-02-15 Broadcom Corp Umkonfigurierbares verarbeitungssystem und - verfahren
US7127588B2 (en) * 2000-12-05 2006-10-24 Mindspeed Technologies, Inc. Apparatus and method for an improved performance VLIW processor
US7400668B2 (en) * 2001-03-22 2008-07-15 Qst Holdings, Llc Method and system for implementing a system acquisition function for use with a communication device
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7231500B2 (en) 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US7093104B2 (en) * 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7516334B2 (en) 2001-03-22 2009-04-07 Sony Computer Entertainment Inc. Power management for processing modules
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US7269720B2 (en) * 2001-06-29 2007-09-11 Nxp B.V. Dynamically controlling execution of operations within a multi-operation instruction
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7602740B2 (en) * 2001-12-10 2009-10-13 Qst Holdings, Inc. System for adapting device standards after manufacture
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7088825B2 (en) * 2001-12-12 2006-08-08 Quicksilver Technology, Inc. Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US20030108012A1 (en) * 2001-12-12 2003-06-12 Quicksilver Technology, Inc. Method and system for detecting and identifying scrambling codes
US7231508B2 (en) * 2001-12-13 2007-06-12 Quicksilver Technologies Configurable finite state machine for operation of microinstruction providing execution enable control value
US7403981B2 (en) * 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US7328414B1 (en) * 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7140019B2 (en) * 2002-06-28 2006-11-21 Motorola, Inc. Scheduler of program instructions for streaming vector processor having interconnected functional units
US7159099B2 (en) * 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
US7415601B2 (en) * 2002-06-28 2008-08-19 Motorola, Inc. Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
EP1387257B1 (en) * 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
CN1675619A (zh) * 2002-08-16 2005-09-28 皇家飞利浦电子股份有限公司 允述在超长指令字处理器中处理可变长指令的设备、方法和编译器
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) * 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7609297B2 (en) * 2003-06-25 2009-10-27 Qst Holdings, Inc. Configurable hardware based digital imaging apparatus
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
US7577824B2 (en) * 2003-09-08 2009-08-18 Altera Corporation Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
GB0400659D0 (en) * 2004-01-13 2004-02-11 Koninkl Philips Electronics Nv Microprocessor, related method of operating the same and related instruction word
US7937557B2 (en) * 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US7945760B1 (en) * 2004-04-01 2011-05-17 Altera Corporation Methods and apparatus for address translation functions
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US8069335B2 (en) * 2005-11-15 2011-11-29 Nxp B.V. Processing system and method for executing instructions
US7802241B2 (en) * 2005-12-12 2010-09-21 Freescale Semiconductor, Inc. Method for estimating processor energy usage
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7792895B1 (en) * 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US7912889B1 (en) * 2006-06-16 2011-03-22 Nvidia Corporation Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication
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
US20080182021A1 (en) * 2007-01-31 2008-07-31 Simka Harsono S Continuous ultra-thin copper film formed using a low thermal budget
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US20090198976A1 (en) * 2008-02-06 2009-08-06 Austel Vernon R Method and structure for high-performance matrix multiplication in the presence of several architectural obstacles
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
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
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
WO2013103571A1 (en) * 2012-01-06 2013-07-11 Intel Corporation Reducing the number of read/write operations performed by a cpu to duplicate source data to enable parallel processing on the source data
GB2551291B (en) 2013-05-23 2018-02-14 Linear Algebra Tech Limited Corner detection
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US20150269480A1 (en) * 2014-03-21 2015-09-24 Qualcomm Incorporated Implementing a neural-network processor
US20170177542A1 (en) * 2015-12-16 2017-06-22 Cognitive Systems Corp. Operating a VLIW Processor in a Wireless Sensor Device
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10496409B2 (en) 2016-11-22 2019-12-03 The Arizona Board Of Regents Method and system for managing control of instruction and process execution in a programmable computing system
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649135A (en) 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
JP4801163B2 (ja) * 2005-10-05 2011-10-26 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
US8396916B2 (en) 2005-10-05 2013-03-12 Qualcomm, Incorporated Fast DCT algorithm for DSP with VLIW architecture

Also Published As

Publication number Publication date
US6467036B1 (en) 2002-10-15
US20030079109A1 (en) 2003-04-24
EP1247196A1 (en) 2002-10-09
WO2000034887A9 (en) 2001-03-29
WO2000034887A1 (en) 2000-06-15
US6173389B1 (en) 2001-01-09
IL143430A0 (en) 2002-04-21
US6851041B2 (en) 2005-02-01

Similar Documents

Publication Publication Date Title
JP2002536738A (ja) 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム
JP3149348B2 (ja) 代理命令を用いる並列処理システム及び方法
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US6581152B2 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
JP4156794B2 (ja) iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
JP4879307B2 (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
JP2002333978A (ja) Vliw型プロセッサ
JPH09311786A (ja) データ処理装置
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US20020198606A1 (en) Data processing system and control method
US6670895B2 (en) Method and apparatus for swapping the contents of address registers
USRE41012E1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JPH03163627A (ja) 命令処理装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070206