JPH06230969A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH06230969A
JPH06230969A JP5336510A JP33651093A JPH06230969A JP H06230969 A JPH06230969 A JP H06230969A JP 5336510 A JP5336510 A JP 5336510A JP 33651093 A JP33651093 A JP 33651093A JP H06230969 A JPH06230969 A JP H06230969A
Authority
JP
Japan
Prior art keywords
instruction
write
functional unit
processor
port
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
JP5336510A
Other languages
English (en)
Other versions
JP3916680B2 (ja
Inventor
Gerrit Ray Slavenburg
レイ スラフェンブルフ ヘリット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Philips Electronics NV
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 Koninklijke Philips Electronics NV, Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JPH06230969A publication Critical patent/JPH06230969A/ja
Application granted granted Critical
Publication of JP3916680B2 publication Critical patent/JP3916680B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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
    • 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
    • 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

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)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 VLIWアーキテクチャのコストパフォーマ
ンスが改善された新しいプロセッサを提供する。 【構成】 命令送出レジスタのスロットの数とレジスタ
ファイルへのポートの数を減らすことによって、VLI
Wアーキテクチャのコストパフォーマンスを改善する。
命令の減少した数は、各命令が指向している機能ユニッ
トを識別する命令中のコードに従って、選ばれた機能ユ
ニットに分配される。命令は、更に活性化されている機
能ユニットに割当てられている読出しポートを識別す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、 a)相互に並列に処理を実行するための、3以上である
第1の数の機能ユニットと、 b)2以上で第1の数より小さい第2の数の命令を保持
するため、及び、命令と機能ユニットとの対応を特定す
るためのコードを保持するための命令レジスタと 、c)適切な1つの機能ユニットに命令レジスタで並列
に命令を実行させるための実行制御手段とを具えたプロ
セッサに関するものである。
【0002】
【従来の技術】前記のようなプロセッサは、論文「プロ
グラマブル命令フォーマットのVLIWアーキテクチャ
への拡張」("A programmable Instruction format ext
ensionto VLIW architectures", A.De Gloria著、コン
プユーロ(CompEuro)1992議事録「コンピュータシステ
ム及びソフトウェアエンジニアリング」"Computer syst
em and software engineering", IEEE computer societ
y press 発行)から既知である。VLIWとは「大変長
い命令語」(Very Long Instruction Word)を意味す
る。VLIWアーキテクチャを有するプロセッサは、乗
算器、加算器、ALU、定数発生ユニット、メモリー等
の機能ユニットを具える。VLIWアーキテクチャを有
するプロセッサは、コンパイラによってプランニングさ
れる命令の拡張における並列化を可能にする。
【0003】これは次のようにして実現される。各クロ
ックサイクルで多くの命令がプログラムメモリーから命
令レジスタに並列にロードされる。レジスタ中の命令
は、全ての機能ユニットに対する明示オプコード及びオ
ペランド仕様を含む。レジスタからの命令は並列に機能
ユニットに供給される。
【0004】しかしながら、実際の応用では、機能ユニ
ットの全てが同時に活性状態になることは極めて稀であ
る。この事実は、全ての機能ユニットに対して同時に必
要とするより少ないオプコード及びオペランド仕様を各
命令の中に具えたアーキテクチャを可能にする。マルチ
プレクサを用いることによって、各命令は、活性化され
るべき選択された機能ユニットに向く。このように、性
能を損なうことなく命令メモリーのサイズを節減するこ
とが可能になる。命令が元のVLIWアーキテクチャに
おけるように極めて長くない場合には、これを”ノット
ソーVLIW”アーキテクチャと呼んでもよい。
【0005】このアーキテクチャでは、命令レジスタは
異なったクロックサイクルに異なった機能ユニットに命
令を出さなければならない。このため、従来のアーキテ
クチャは、どの命令がどの機能ユニットに導かれるかを
選択するマルチプレクサを具え、そのオプコード及びそ
のオペランド仕様をこの選択された機能ユニットに送り
出している。
【0006】オペランド仕様は、オペランド自身(直接
モード)又はレジスタファイル中のオペランドのアドレ
ス(レジスタモード)を含む。後者のモードについて
は、各機能ユニットがレジスタファイルに対して少なく
とも1つの読出しポートを持つ。命令がレジスタモード
のときは、オペランド仕様が読出しポートのアドレス入
力に供給される。これに応答してアドレスレジスタの内
容が読出しポートに出力される。
【0007】処理の並列実行を支持するために、レジス
タは、レジスタから並列に読出すことができる読出しポ
ートを具えたマルチポートレジスタファイルに集められ
る。レジスタファイルは、各機能ユニットの各オペラン
ド入力に対してそれぞれのポートを持つ。例えば各乗算
器機能ユニットはそれぞれ2つの読出しポートに接続さ
れる。これと反対に、命令によって定められる定数が供
給される”定数”ユニットは、読出しポートには接続さ
れない。
【0008】
【発明が解決しようとする課題】統合化プロセッサで
は、このようなレジスタファイルはシリコンの大きな面
積を必要とし、かなりの電力を消費する。本発明は、特
に、シリコンの面積を減少させ、電力の消費を減少させ
ることを目的とするものである。
【0009】
【課題を解決するための手段】本発明のは、プロセッサ
が、命令レジスタの命令に関するオペランドを格納する
ためのマルチポートレジスタファイルを有すること、該
マルチポートレジスタファイルが、並列にオペランドに
アクセスするための第3の数の読出しポートを有するこ
と、該第3の数は、第2の数の機能ユニットからなる機
能ユニットのサブセットのいずれかによってレジスタフ
ァイルから要求されるオペランドの最大数以上であるこ
と、該第3の数は、機能ユニット全体によって要求され
るオペランドの総数より小さい数であること、及び、プ
ロセッサが、読出しポートに並列にアクセスして命令を
実行することを指示された機能ユニットの読出しアクセ
スを選択的に行わせるための読出しアクセス供与手段を
具備することを特徴とするプロセッサを提供するもので
ある。
【0010】レジスタファイルの面積と電力消費はポー
トの数に比例するので、ポートの数を減らせば必要な面
積と電力消費を減らすことができる。並列に使用される
ポートの数は、並列にスタートするために実行できる命
令の数によって決まる。この数は、全ての機能ユニット
が同時に要求するオペランドの全数より少ない。機能ユ
ニットとレジスタファイルへのポートとの間にプログラ
マブルな接続を設けることによって、プロセッサによっ
て達成される並列処理の処理量を減らすことなしに、レ
ジスタファイルへのポートの数をこのポートの全数より
小さくすることができる。
【0011】本発明の1つの実施例においては、読出し
ポートが読出しポートの群からなること、少なくとも1
つの特別な群が少なくとも2つの読出しポートを有する
こと、読出しアクセス供与手段が群毎の機能ユニットに
与えられた読出しポートを選択するように構成されたこ
と、少なくとも1つの機能ユニットがそれぞれのオペラ
ンドを同時に受信するための少なくとも2つの入力部を
有すること、及び、機能ユニットの1つに対して該特別
な群が選択される度毎に該入力部がそれぞれ所定の該特
別な群からの読出しポートに接続されることを特徴とす
る。プログラムの命令が該群のみを識別することが必要
のため、各ポートが該命令の中で個々に識別されるとき
に必要になるより小さい命令の部分がポート選択によっ
て占拠されるに過ぎない。
【0012】本発明の1つの実施例においては、命令レ
ジスタが命令を送出するための第2の数のそれぞれの送
出スロットからなること、各送出スロットが少なくとも
1つの読出しポートの群のそれぞれに対応すること、及
び、特別な機能ユニットが特別な送出スロットからの命
令を実行する度毎に該特別な送出スロットに対応する群
からの読出しポートにアクセスするように構成されたこ
とを特徴とする。このように、送出スロットを個々に識
別する必要がなく、機能ユニットに接続されたポートの
群を必要とし、これは、命令が送出スロットと群を個別
に識別することを含む場合より小さい命令が選択を満足
させることを意味する。
【0013】本発明の1つの実施例においては、各特別
な群が第4の数の所定のポートを含むこと、及び、該第
4の数が機能ユニットのいずれか1つによって要求され
るオペランドの最大数に等しいことを特徴とする。各群
がいずれの機能ユニットをも供給できるようにするた
め、各群のポートの数は、いずれかの機能ユニットによ
って必要とされるオペランドの最大数に等しい。実際に
は、一部の機能ユニットはそのように多くのオペランド
をレジスタファイルから要求しないかも知れない。
【0014】例えば、要求されるオペランドの最大数が
2(乗算器の場合のように)とすると、機能ユニットに
対して準備される群のポートの数は2である。この数の
ポートが、また、全くポートを必要としない定数を供給
する機能ユニットに対しても有効にされる。
【0015】本発明の他の実施例においては、各特別な
送出スロットが、該特別な送出スロットに対応する群の
読出しポートのそれぞれのアドレス入力に接続された同
じ所定数のアドレスフィールドを含み、該特別な送出ス
ロットからの命令を実行する機能ユニットがアドレスさ
れたオペランドを要求するか否かに拘わらず、該読出し
ポートでアドレスされたオペランドにアクセスするよう
に構成されたことを特徴とする。このように、アドレス
フィールドは、ポートにアクセスし得る機能ユニットと
は関係なしに、その機能ユニットがポートを全く使用し
ないかどうかに拘わらず、直接レジスタファイルに出力
される。これは、レジスタファイルのためのアドレスデ
コードが、送出スロットで命令を実行すべき機能ユニッ
トの選択が行われる直前に開始されるため、処理を高速
化する。
【0016】好ましくは、命令レジスタの構成が固定フ
ォーマットを持つことである。。即ち、命令レジスタの
それぞれの固有部分の一般の機能(オプコード、オペラ
ンドアドレス、命令を実行すべき機能ユニットを識別す
るためのコード、その他)は、命令の実行に使用される
機能ユニットに関係なく、並列に実行するために選択さ
れた機能ユニットの組み合わせに関係なく、或いは命令
自身に関係なく、少なくとも機能ユニットと命令の数に
ついては同じである。命令がデコードされるより前にア
ドレスデコードが開始されるため、これは利点である。
更に例えば、命令レジスタと命令のルートになる他のユ
ニットとの間に設けられるスイッチング回路を簡単にす
る利点もある。
【0017】本発明の1つの実施例においては、少なく
とも1つの機能ユニットが、1つの命令の実行を指示さ
れたとき、更に該1つの命令を送出する送出スロットの
アドレスフィールドから情報を受信し、該少なくとも1
つの機能ユニットが実行の間該情報をオペランドとして
使用することを特徴とする。このように、オペランド
は、直接オペランドを必要とする処理に対しては直接オ
ペランド(例えば定数)としても使用される。オプコー
ドがデコードされる前に、或いは少なくともオプコード
が指向する機能ユニットの識別がデコートされる前に、
そのオペランドが定数かアドレスかいずれであるかは分
からない。従って機能ユニットにオペランドが供給され
ると同時に、レジスタファイルはオペランドをアドレス
としてデコードを開始する。デコードを待つことは処理
の速度を低下させる。オペランドがイミジエートである
と、レジスタファイルからのデータアクセスは無視され
る。
【0018】本発明の1つの実施例においては、マルチ
ポートレジスタファイルが少なくとも1つの書込みポー
トを有すること、及び、プロセッサが、並列に命令を実
行することを指示された機能ユニットの書込みポートに
選択的にアクセスしそれから結果を生成する書込みアク
セス供与手段を有することを特徴とする。このようにし
て、レジスタファイルに対して機能ユニットより少ない
書込みポートを使用することが可能であり、これは面積
と電力消費を低減する。書込みポートの選択は送出スロ
ットからの明示の選択なしにプランニングされることも
ある。オプコードの送出と結果の生成との間に利用でき
る若干の時間があるため、これが処理速度を低下させる
ことはない。
【0019】本発明の1つの実施例においては、書込み
アクセス供与手段が、機能ユニットが命令を実行するこ
とを指示された後のレイテンシー期間に、結果アドレス
フィールドの内容に基づいて、機能ユニットの1つの出
力部を書込みポートに接続するように構成されたことを
特徴とする。このように、レジスタファイルへの書込み
ポートの数は、機能ユニットの数より小さく保つことが
できる。
【0020】本発明の1つの実施例においては、命令レ
ジスタが命令を送出するための第2の数のそれぞれの送
出スロットからなること、各送出スロットが同じそれぞ
れの数の結果アドレスフィールドを含むこと、及び、書
込みアクセス供与手段が該アドレスフィールドの内容を
書込みポートのアドレス入力部に送るように構成された
ことを特徴とする。
【0021】本発明の1つの実施例においては、書込み
アクセス供与手段が、機能ユニットが命令を実行するこ
とを指示された後のレイテンシー期間に、結果アドレス
フィールドの内容に基づいて、機能ユニットの1つの出
力部を書込みポートに接続するように構成されている。
機能ユニットが処理を実行するとき、処理の開始と結果
が有効になるまでの間に1クロックサイクル以上のレイ
テンシーがあることがある。このレイテンシーは使用さ
れる機能ユニットによって変化する。
【0022】本発明の1つの実施例の書込みアクセスに
おいては、レジスタファイルが少なくとも2つの書込み
ポートを持ち、書込み選択手段が予備的割当て手段を有
し、該予備的割当て手段がその予備的割当ての後1クロ
ックサイクルの間特別な書込みポートに機能ユニットを
予備的に割当て、そのクロックサイクルの中で該機能ユ
ニットの1つの実行の結果が有効になり、更に、該予備
的割当て手段が機能ユニット1つの出力を該特別な書込
みポートに接続し、該結果アドレスフィールドの内容を
該クロックサイクルの間該特別な書込みポートに与える
ように構成されたことを特徴とする。この実施例によれ
ば、プロセッサが有効になる結果のトラックを保持し、
結果が書込まれる前に書込みポートの割当てを計画す
る。
【0023】本発明の他の実施例においては、予備的割
当て手段が、クロックサイクルの間この特別な書込みポ
ートが以前に機能ユニットの1つに割当てられていない
との制約の下に書込みポートから該特別な書込みポート
を選択するように構成されたことを特徴とする。このよ
うに、これらの結果を生じる処理が異なった時刻に開始
されたとしても同時に結果を生じる機能ユニット間の衝
突を避けることができる。
【0024】
【実施例】次に図面を用いて本発を詳細に説明する。V
LIWのCPUは、種々の用途、即ち、スーパーコンピ
ュータからワークステーション及びパーソナルコンピュ
ータに至る用途に使われる。更に、ワークステーショ
ン、パーソナルコンピュータ、ビデオ或いはオーディオ
製品に専用又はプログラマブルなプロセッサとして使わ
れる。
【0025】図1は、従来のVLIW装置を示す。命令
は命令メモリー102 から命令出力レジスタIIRにロー
ドされる。各クロックサイクルに、新しい極めて長い命
令が命令出力レジスタから発信される。この命令は、V
LIW型CPUの中に各機能ユニット(CONTROL,CONST,
ALU1,ALU2,MUL,FPU,MEM )に対する送出スロットを有す
る。VLIWマシンは機能ユニットのどのような有用な
組み合わせをも包含し得るが、ここではその1つを例示
する。いくつかの機能ユニットがあり、必要とする処理
に依存する異なった型の機能ユニットがある。機能ユニ
ットに対するオペランドは、分割マルチポートを持つレ
ジスタファイル101 から読出す。機能ユニットからの結
果はまたこのファイルに書込まれる。
【0026】送出スロットは、機能ユニットの最新のク
ロックサイクルでスタートする処理を特定する。図2
は、CONTROL 処理、CONST 処理、ALU1処理、ALU2処理、
MUL 処理、FPU 処理、及びMEM 処理を含むVLIW命令
201 を示す。言い換えれば、VLIW命令は、図1のV
LIW型CPUの中に各機能ユニットに対して1つの送
出スロットを含む。
【0027】202 はCONTROL 処理に特定された送出スロ
ットの内容を示す。この送出スロットはCONTROL オプコ
ード及び2つのレジスタ仕様Rsrc1及びRsrc2を含む。
これらのレジスタはそれぞれソースレジスタ1及びソー
スレジスタ2である。203 はCONST 処理に特定された送
出スロットの内容を示す。この送出スロットは、定数値
及びレジスタ仕様Rdestを含む。このレジスタはデステ
ィネーションレジスタである。
【0028】204 はALU 処理を含む送出スロットの内容
を示す。この送出スロットはALU オプコード及び3つの
レジスタ仕様Rsrc1、Rsrc2及びRdestを含む。205 は
MUL 処理を含む送出スロットの内容を示す。この送出ス
ロットはMUL オプコード及び3つのレジスタ仕様Rsrc
1、Rsrc2及びRdestを含む。206 はFPU 処理を含む送
出スロットの内容を示す。この送出スロットはFPU オプ
コード及び3つのレジスタ仕様Rsrc1、Rsrc2及びRde
stを含む。
【0029】207 はMEM 処理を含む送出スロットの内容
を示す。この送出レジスタはMEM オプコード及び2つの
レジスタ仕様Rsrc1及びRsrc2又はRdestを含む。これ
らの送出スロットは例示であり、機能ユニットの他の有
用な構成に修正してもよい。
【0030】殆どの従来のマシンでは、処理は各サイク
ルで全ての機能ユニットでスタートさせることが可能で
ある。サイクル”i”でスタートした処理は、1サイク
ルで又は複数のサイクルで完結する。完結は、処理の結
果をデスティネーションレジスタに書込むことによって
証明される。結果のない処理("STORE" のような処理)
については、処理の完結は処理の生起に対応して状態が
変化する時である。
【0031】図1の殆どの機能ユニットは、CONST (定
数発生ユニット)のように単純である。このユニット
は、デスティネーションレジスタに置かれる定数を生成
する。ALU,MUL 及びFPU ユニットは、1つ又は2つの引
数について数学的、論理的及びシフト処理を実行し、デ
スティネーションレジスタに1つの結果を生成する。
【0032】CONTROL 及びMEM ユニットは若干異なって
いる。CONTROL ユニットは命令が送出されるシーケンス
を決める。NOP (処理せず)がCONTROL ユニットに送り
出される場合には、命令は命令メモリーから連続した順
序で送出される。CJMPF 又はCJMPT (それぞれ、条件ジ
ャンプ偽及び条件ジャンプ真)処理が制御ユニットに送
出されるときは、Rsrc1レジスタの内容が真値を持つと
判断される。即ち、ブール関数、値及びRsrc2の内容が
アドレスとして用いられ、特定の条件に合致したときの
みそこから命令の送出が続けられる。特定の条件に合致
しないときは、命令の送出は連続的に行われる。
【0033】MEM ユニットはロードと格納処理を実行す
る。換言すれば、データワードがレジスタファイルとシ
ステム主メモリーとの間を動く。ロード処理は、ロード
されるべきデータワードの主メモリーにおけるアドレス
としてRsrc1を用い、Rdestがロードされた値が格納さ
れるべきレジスタを決める。格納処理は、アドレスとし
てRsrc1の定数を用い、格納されるべき値としてRsrc2
の内容を用いる。勿論、ロード及び格納処理については
多くの変形がある。ロード命令はRsrc2を必要とせず、
格納命令はRdestを必要としないため、送出スロットは
ただ2つのレジスタフィールドを必要とするに過ぎな
い。
【0034】ソフトウェアプログラムがVLIWマシン
上で動作するためには、”微粒子並列”又は”命令レベ
ル並列”翻訳が行われなければならない。これは、AN
SIC等の通常の高水準プログラミング言語をVLIW
マシンのための命令に翻訳するコンパイラによって行わ
れる。VLIWマシンで使われるコンパイラは、ジョン
・アール・エリス(John R. Ellis )による「ブルドッ
グ:VLIWアーキテクチャのためのコンパイラ」(BU
LLDOG:A compiler for VLIW architectures, MIT Press
1985, ISBN 0-262-05034-X )に記述されている。
【0035】図1のVLIWをピークの処理速度で動作
させるために、1CONTROL,1CONSTANT, 2INTEGER ALU,
1INTEGER MULTIPLY, 1FLOATING POINT, 及び1MEMORY
の処理が各サイクル毎に送出されなければならない。高
水準言語で表された実際のプログラムの性質によって、
このピークでの実行を維持する処理の適切な混合を見出
すことができない。コンパイルの後、与えられたクロッ
クサイクルの中で並列に実行できる一連の処理は、利用
できる機能ユニット型にマッチしない混合型である。若
干の場合は、マシンのユニットの数より少ない並列処理
が行われるフェーズを通ってプログラムが進む。これ
は、種々の問題を生じる。
【0036】第1の問題は、レジスタファイルのポート
の利用が不充分であることである。中央レジスタファイ
ルのシリコン面積及び電力消費はポートの総数に比例す
る。従って、このポートの利用度が高いことは重要であ
る。
【0037】第2の問題は、VLIW型CPUをピーク
又はピーク付近の性能に維持するために必要な命令の帯
域幅が高いことである。NOP コードを含む空スロットが
この帯域幅に貢献する。帯域幅は、直接Iキャッシュ
(命令キャッシュ)サイズに、そして、バス及び他のメ
モリーシステムの部品のコストに跳ね返る。
【0038】第3の問題は、VLIWのために翻訳され
たプログラムのためのコードのサイズは、RISC型C
PUのために翻訳された同一プログラムのサイズより大
きいことである。VLIWの性能はRISCのそれより
高いとはいえ、VLIWのコストの効率はRISCのそ
れより低いのである。
【0039】図3は、本発明によるVLIW型CPUを
示す。IIRはマシンの機能ユニットより少ない送出ス
ロットを持つ。例えば、7つの機能ユニットのマシンに
対して3つの送出スロットで足りる。一般に、或る数及
び型の機能ユニットに対する送出スロットの数は、平均
効率とコストとの間の関係で決まる。しかし、Nユニッ
トのマシンは、N/4と2N/3との間の送出スロット
を持つとするのが合理的である。
【0040】CPUは、複数の群の読出しポート((R
1a, R1b)(R2a, R2b)(R3a,R3b))を有するレ
ジスタファイル403 を含む。適切なレジスタファイルの
例は、インテルiWARP&i960チップの中に見出
すことができる。それには、IIRの各スロットのため
の読出しポートの群がある。読出しポートはレジスタフ
ァイルの中のレジスタの内容を読むためのものである。
各群のポートの数は、いずれかの機能ユニットが必要と
するソースレジスタの最大数と同じである。この場合、
2つを超えるソースレジスタを必要とする機能ユニット
はないので、読出しポートの各群は2つの読出しポート
を有する。このように、2つの読出しポートの3つの群
があり、都合6つの読出しポートがある。
【0041】入力スイッチ制御902 (図6B)によって
制御されるスイッチマトリクス401が、どの読出しポー
トをどの機能ユニットの入力に接続するかを決める。
【0042】レジスタファイルもまた書込みポートの複
数の群(W1,W2,W3,W4 )を有する。IIRの各スロ
ットに対して少なくとも1つの書込みポート群がある。
各群の書込みポートの数は、どの機能ユニットも必要と
するデスティネーションレジスタの最大数である。この
例では、1つを超えるデスティネーションレジスタを必
要とする機能ユニットはないので、各群の書込みポート
はただ1つである。
【0043】第2のスイッチマトリクス402 が、書込み
制御ユニット(RFWC)の制御の下で、機能ユニット
の出力を書込みポートに接続する。
【0044】図4は、新しいVLIW命令410 のフォー
マットを示す。この命令は、処理のための3つのスロッ
トを持つ。各スロットはどのような型の処理も含む。前
記のように6つの型の処理があり、各型は機能ユニット
CONTROL,CONST,ALU,MUL,FPU,及びMEM のそれぞれの型で
ある。
【0045】送出スロットは前記の送出スロットとは種
々の点で異なる。第1は、送出スロットはスロット全て
同じ長さである。送出スロットの内容のフォーマット
は、CONTROL,CONST,ALU,MUL,FPU,及びMEM のそれぞれに
対して420,430,440,450,560,及び470 に示されている。
スロットが一定長のため、CONTROL型の処理420 の終端
に若干のブランクスペースを挿入する必要が生じる。
【0046】第2は、送出スロットの全てがどの機能ユ
ニットが処理を実行するかを識別する手段を有する。図
では、全ての送出スロットがUNIT ID フィールドを持
ち、これが処理を予定している機能ユニットを識別す
る。8つまでの機能ユニットを持つマシンについては、
UNIT ID フィールドは3ビット幅を必要とするに過ぎな
い。
【0047】これらの通常の技術では、ユニットを識別
する方法は多くの他の方法で置き換えることができる。
1つの代替方法は、オプコードにユニットを含ませるこ
とである。もう1つの代替方法は、オプコードにユニッ
ト型を含ませ、ハードウェアをその型のユニットに割り
当てることである。
【0048】図3のVLIW型CPUでは、各クロック
サイクルに3つの処理命令がIIRから送出される。送
出スロットのソースレジスタフィールド(Rsrc1, Rsr
c2)は、レジスタファイルの読出しポート((R1a, R
1b)(R2a, R2b)(R3a,R3b))をアドレスするた
めに使用される。ユニット識別フィールドに基づいて、
オプコード制御は定められた機能ユニットに向けられ
る。
【0049】全ての送出スロットのデスティネーション
レジスタは書込み制御ユニット(RFWC)に向けられ
る。この書込み制御ユニットは、各機能ユニットのレイ
テンシーを知り、結果が生成されたときにトラックを確
保する。この書込み制御ユニットは、結果を書込むため
に適当なバスをレジスタファイルに割り当てる。3送出
スロットマシンでは、ユニットレイテンシーが等しくな
いことによるトラヒックのバーストを処理するために3
つ以上の書込みバスがある。ここでは、4つの書込みバ
スがある。
【0050】前記の例は1つの実施例に過ぎない。デザ
イナーは、予想される仕事量に基づいて機能ユニットの
数と型を選ぶ必要がある。デザイナーはまた、IIRの
中の送出スロットの数とコストパフォーマンスを最良に
する書込みバスの数も選ばなければならない。
【0051】好ましい実施例のアーキテクチャは、容易
な上方互換性を与える。例えば、追加のFPU,ALU,及びCO
NST を含み、IIRのスロットの数を4つに増すことに
よって、高度の性能のCPUを作りたいと仮定する。古
いユニット識別フィールド値が新しいマシンの同じユニ
ット型にマップする限りは、新しいマシンは、古いマシ
ンからのバイナリーユニットIDを用いることができ
る。古いマシンのコードイメージは、従って新しいマシ
ン上でも動作する。例えば、プログラムのロードフェー
ズの間追加のNOP 処理を加える。新しいマシンが古いマ
シンより広いフィールドを持つ場合は、ユニットIDフ
ィールドにゼロを追加するだけでよい。しかしながら、
再コンパイル、再スケジューリング、コードの再アセン
ブル等は必要なく、全ての互換性出力はプログラムロー
ドの時に解決できる。
【0052】図5は、レジスタファイルの読出しポート
((R1a, R1b)(R2a, R2b)(R3a, R3b))と機
能ユニットの入力との間のスイッチングマトリクスの実
施例を示す。このスイッチングマトリクスに対しては、
多くの代替技術がある。マルチプレクサ801 は、対応す
る機能ユニットの入力ポートに接続されており、各レジ
スタファイルの読出しポートは全てのマルチプレクサ80
1 の入力に接続されている。例えばポートR1bが、全て
の機能ユニットのマルチプレクサのB入力に接続されて
いる。
【0053】命令が送出段に到達すると、IIRがその
命令のバイナリーコードを持つ。命令が送出されると、
各送出スロットのRsrc1及びRsrc2のフィールドがレジ
スタファイル読出しポート((R1a, R1b)(R2a, R
2b)(R3a, R3b))に対するアドレスを読出すために
使用される。これにより、6つのレジスタの全てが読出
される。実際にはこれらのレジスタが全て必要ではない
場合もある。例えばスロット1が定数型の処理を送出す
る場合もある。この場合はレジスタファイルのアドレス
はランダムである。しかしながら、送出された処理がR
src1又はRsrc2又は両者を必要とする場合は、適宜のレ
ジスタ値が機能ユニットの全てのMUX入力で、特に処
理が実行されるべき機能ユニットのMUXで有効にな
る。
【0054】図6Aは、レジスタファイル403 とその読
出しポート及びアドレッシングポートを示す。図6B
は、入力スイッチ制御論理ブロック902 を示す。図示し
たように、レジスタファイル403 に対する読出しアドレ
ス入力((AR1a, AR1b)(AR2a, AR2b)(AR
3a, AR3b))は、全て6ビット幅で命令送出レジスタ
IIRのレジスタソースフィールドから供給される。即
ち、それぞれ、IIR送出1.Rsrc1、IIR送出1.Rsr
c2、IIR送出2.Rsrc1、IIR送出2.Rsrc2、IIR
送出3.Rsrc1、IIR送出3.Rsrc2である。これらのア
ドレスを基にして、オペランドがそれを必要とする機能
ユニットに対して読出しポート((R1a, R1b)(R2
a, R2b)(R3a, R3b))から供給される。
【0055】書込みアドレス入力(W1.wa, W2.wa, W
3.wa, W4.wa)及び書込みエネーブル入力(W1.we, W
2.we, W3.we, W4.we)が図9AのRFWCから供給さ
れる。処理の結果は、図8のマルチプレクサ801,802,80
3 及び804 からW1,W2,W3及びW4 に供給される。
【0056】入力スイッチ制御902 に対するアドレッシ
ング入力、即ちIIR.送出1.UNITD、IIR.送出2.UNITID
、IIR.送出3.UNITID は、命令送出レジスタのユニッ
ト識別フィールドから供給される。これらのアドレッシ
ング入力から、入力スイッチ制御902 が2ビット信号M0
C, M1C, M2C, M3C, M4C, M5C及びM6C を決める。これら
のマルチプレクサ制御信号はマルチプレクサ801 に供給
され、レジスタファイルからそれぞれの機能ユニット入
力に対してオペランドを供給する読出しバスを選択す
る。
【0057】図7は、オプコードの生成及び全ての機能
ユニットのための全てのオプコードを発生する送信論理
の例を示す。
【0058】入力スイッチ制御902 は、例えばPLA或
いはROMルックアップテーブルのような標準セル論理
のような、既知の種々の方法で実現できる機能論理ブロ
ックである。ここでは、ID割当てユニットが次のよう
に割当てる。即ち、ユニット0=control,ユニット1=
CO,ユニット2=ALU1,ユニット3=ALU2,ユニット4
=MUL,ユニット5=FPU,ユニット6=MEM である。更
に、1のマルチプレクサ制御フィールドが最左側入力
を、2が中央の入力を、そして3が最右側の入力を選択
すると仮定する。これらの仮定から、任意のユニットI
Dの割当ての組み合わせから必要なマルチプレクサ制御
フィールドの組み合わせへの変換テーブルを構成でき
る。このテーブルから若干の入力及び出力ベクトルを次
に例示する。
【表1】
【0059】注意点(1):送出スロット1がCONST(定
数) ユニットの処理を送出する。CONST ユニットは入力
を持たないのでマルチプレクサ制御を受けない。しかし
ながら、図7のオプコード指向論理は、COユニットオプ
コードを制御し結果をマルチプレクサに送るためにM1C
信号を必要とする。送出スロット2はMUL 処理を送出す
る。ここでM4C =2は、MUL(乗算器) ユニットの2つの
マルチプレクサがR2ポート値を選択するようにセット
する。他の全てのマルチプレクサは位置0にセットさ
れ、これがオプコード送信論理上で特定の用途を持つ。
送出スロット3によって送出されたユニット6の処理が
ロードされると、Rsrc2オペランドはロード処理によっ
て使用されないので、MEM ユニット指向のオプコードは
R3bバスの値を無視する。
【0060】注意点(2):処理が送出される1つのユ
ニットに対する全てのマルチプレクサが、これらの処理
を送出する送出スロットに対応するレジスタポートを選
択する。これは入力スイッチ制御ブロックの論理式を作
るための一般則である。
【0061】レジスタ読出しポート値のスイッチングに
並列に、図7の回路が個別機能ユニットオプコードを発
生する。同じマルチプレクサ制御信号が図5のようにこ
の回路で使われる。規則は、送出スロットXがユニット
Yに対する処理を含む場合はユニットYがマルチプレク
サ制御信号値Xを受信し、Yのマルチプレクサは送出ス
ロットXの中のオプコードフィールドをその処理のため
のオプコードとして選択する。
【0062】何も送出されないユニットは、マルチプレ
クサ選択信号ゼロを受信する。そうすると、そのユニッ
トに対して無処理(NOP) オプコードを発生する。これ
は、無処理コード(図示せず)を受信するマルチプレク
サに対して追加の入力を加えるか、或いはオプコードマ
ルチプレクサユニットの論理式を変更するかによって行
われる。
【0063】図7では、CONST ユニットが特別である。
これは実際にはダミーユニットである。 それは、オプ
コード、COユニット処理が送出された送出スロットのR
src1及びRsrc2フィールドの連鎖である2進値を発生し
出力する。
【0064】図5−7の実施例の多くの代替技術が考え
られる。例えば、高パフォーマンスのマシンは多分パイ
プラインになろう。このような場合、パイプラインレジ
スタ及びバイパス回路がこの基礎デザインに付加され
る。更に、1つの処理におけるUNITID及びオプコードフ
ィールドは、フィールド間の可動分離によって単一フィ
ールドに結合されるかも知れない。この可動分離は、異
なった機能ユニットに要求される異なった数のオプコー
ドビットに適応する。例えば、ALU はMLU 又はMEM ユニ
ットに比較してかなり多くのオプコードビットを必要と
する。このように、ALU に対してはMUL 及びMEM に対し
てより、UNITIDフィールドは短く、オプコードフィール
ドは長くなる。この場合、オプコード送信論理が最長の
可能なオプコードを表すビットのセットを受信するのと
同時に、入力スイッチ制御ブロックが、最長の可能なユ
ニットIDを表すビットのセットを受信できる。
【0065】他の変形も可能である。UNITIDフィールド
を使わなくてもよい。ハードウェアとしては、どのオプ
コードをどの機能ユニット型にマップするかについてテ
ーブルを使い、ユニットIDフィールドをダイナミック
に割り当てることができる。
【0066】図8は、出力マトリクス402 を更に詳細に
示す。機能ユニットは実行した処理の結果を出力レジス
タ806,807,808,809,及び810 に書込む。レジスタ806,80
7,808,809,及び810 は、書込みポートマルチプレクサ80
1,802,803,及び804 に接続される。図7に示すように、
CONST ユニットの中ではオプコードと結果の導出との間
に時間の経過はないので、CONST ユニットオプコードは
直接マルチプレクサ801,802,803,及び804 に接続されて
いる。マルチプレクサ801,802,803,及び804 は、制御入
力W1MC,W2MC,W3MC及びW4MCに基づいてそれらの出力W1,
W2,W3 及びW4 にそれぞれにつながる入力を選択す
る。出力W1,W2,W3 及びW4 は、それぞれ32ビット
幅でレジスタファイル403 の書込みポートに接続されて
いる。制御入力W1MC, W2MC, W3MC及びW4MCは、レジスタ
ファイル書込み制御ユニット(RFWC)によって供給
される。
【0067】図9Aは、レジスタファイル書込み制御ユ
ニット(RFWC)を示す。RFWCの入力は、IIR
からのユニットのID(送出1.UNITID、送出2.UNITID、
送出3.UNITID)及びデスティネーションレジスタアドレ
ス(送出1.Rdest、送出2.Rdest、送出3.Rdest)であ
る。RFWCは、出力として、4つのマルチプレクサ制
御信号(W1MC, W2MC, W3MC及びW4MC)、レジスタファイ
ルをアドレスするための4つの書込みアドレス(W1.w
a, W2.wa, W3.wa, W4.wa)及びレジスタファイルを
更に指向する4つの書込みポート書込みエネーブル信号
(W1.we, W2.we, W3.we, W4.we)を生成する。
【0068】図9Bは、RFWC/WEエンコーダーを
示す。ユニットIDとオプコードを取り入れ、RFWC
のための書込みエネーブル入力を生成する。エンコーダ
ーは、ROM,PLA又は論理であってもよい。エンコ
ーダーは、処理が次の処理、即ちCONST,ALU,MUL,FPU 及
びMEM ロードのための結果を持つことを示すときは”
1”を得る。エンコーダーは、CONTROL 及びMEM ストア
に対して結果がないことを示すときは、”0”を得る。
【0069】図10は、RFWCブロックの1つの実行
例を示す。この例は、2つのサブブロック、SLOTブ
ロック1001及びLATブロック1002を含む。SLOTに
は4つの行と4つの列がある。4つの列は、レジスタフ
ァイルの4つの書込みポートW1,W2,W3 及びW4 に対
して必要である。4つの行は、機能ユニットの4つの可
能なレイテンシーに対して必要である。表にレイテンシ
ーの値を示した。機能ユニットのレイテンシーは、その
ユニットの処理のスタートからその処理の結果が書込み
マルチプレクサの入力点で有効になるまでの間のクロッ
クサイクルの数である。
【表2】
【0070】MUL のような各ユニットIDについて、対
応する入力書込みエネーブル信号が真ならば、レイテン
シーがRFWCのLATブロックによって見出される。
MULユニットの場合はレイテンシーが2である。RFW
Cはそれにより見出されたレイテンシーに対応するレイ
テンシー行に対してエネーブルフラグをセットする。MU
L 機能ユニットについてはフリーのSLOTがレイテン
シー行2に位置しており、そこにユニットID書込みア
ドレス及び書込みエネーブル情報が格納されている。続
く2クロックサイクルの間、この情報は1つの列を通っ
てレイテンシー行0に動く。
【0071】各SLOT行は特別なレイテンシーのため
に用いられる。最上行は、レイテンシー3のために使わ
れ、最下行は、レイテンシー0のために使われる。各行
を通ってデータが下方へクロックサイクル毎に動く。通
過するデータは、ユニットID、書込みアドレス及び書
込みエネーブル表示である。 レイテンシー行0の出力
は、RFWCブロックの出力である。
【0072】各行は、LATサブブロック1002で生成さ
れた3つの書込みエネーブル制御信号を得る。行の最右
側SLOTがこれらの制御入力を得る。若干の論理処理
の後、この最右側SLOTは3つの制御処理を通って同
一行の左側のSLOTブロックに動く。例えば、SLO
T33は3つの書込みエネーブル信号(L1.we, L2.we,
L3.we )をLATブロックから得る。SLOT33の制
御出力はスロット23に動く。SLOT33のデータ出力は
SLOT32に動く。
【0073】各LATユニットは、ユニットID(unit
id)及び書込みエネーブル信号(we)をIIRの送出ス
ロットから得る。この例のIIRには3つのスロットが
あるので、3つのLATユニットかある。LATユニッ
トは4つの書込みエネーブル信号(we0,we1,we2,we3 )
を生成する。ユニットIDがCONST (レイテンシー=
0)で対応するweが真ならば、we0 は真になる。ユ
ニットIDがALU1,ALU2又はMEM (レイテンシー=1)
で対応するweが真ならば、we1 は真になる。ユニッ
トIDがMUL (レイテンシー=2)で送出. weが真な
らば、we2 は真になる。ユニットIDがFPU (レイテ
ンシー=3)で送出. weが真ならば、we3 は真にな
る。
【0074】図11は、SLOTサブブロックの1つの
実行例を示す。各SLOTはIIRから4つのデータ入
力(in1,in2,in3,in4 )を得て、1つのデータ出力(ou
t )を生成する。in1,in2,in3,in4 及びout はそれぞれ
9線を持ち、そのうち3線はユニットIDを通り、6線
は書込みアドレス(wa)を通る。第1の入力(in1)
はIIR.送出1.unitid及びIIR.送出1.Rdest である。第2
の入力(in2 )はIIR.送出2.Rdest 及びIIR.送出2.unit
idである。第3の入力(in3 )はIIR.送出3.Rdest 及び
IIR.送出3.unitidである。第4の入力(in4 )は、最上
行を除いて上の行スロットの出力に接続されている。最
上行ではこの入力は全てゼロの受信に接続される。
【0075】各SLOTは、4つの制御信号("we indi
cator in", i1.we, i2.we, i3.we)を得る。信号 i1.w
e, i2.we,及びi3.we は、行の最右側のブロックを除い
て右側の次のブロックから来る。行の最右側のブロック
には、対応するLATブロックから来る。信号"we indi
cator in" は、最上のブロックを除いて上のブロックか
ら来る。最上のブロックには”0”の線が接続されてい
る。加えて、1つの行スロットの"we indicator in"
は、上のSLOTの"we indicator in" に接続されてい
る。最上行のSLOTは"0""we indicator in"を受信す
る。
【0076】各SLOTは4つの制御信号(o1.we, o2.
we, o3.we, "we indicator out" )を生成する。信号o
1.we, o2.we, 及びo3.we は、最左側のスロットを除い
て左側の次のブロックに供給される。最左側のスロット
はどこにも接続されていない。信号"we indicator out"
は、最下側のスロットを除いて下の次のブロックに供給
される。最下側のスロットからは、書込みポートエネー
ブル信号(W1.we, W2.we, W3.we, W4.we)としてレ
ジスタファイルに供給される。最下行のout.unitid信号
は、図8のマルチプレクサ801,802,803,及び804 に供給
されるW1MC, W2MC, W3MC及びW4MC信号である。最下行の
out.wa信号は、図6Bのレジスタファイル403 に供給さ
れるレジスタファイル書込みアドレス(W1.wa, W2.w
a, W3.wa,W4.wa)である。
【0077】各SLOTは4つのサブブロックを持つ。
4:1マルチプレクサMUXは、we1, we2, we3, we の
制御の下でin1, in2, in3, in4 の1つを選択する。優
先的エンコーダーPRENは、入力we, i1.we, i2.we,
i3.we からwe1, we2, we3, we, o1.we, o2.we, 及びo
3.we を生成する。4入力論理ORゲートはwe1, we2,we
3, we を入力する。MUXはレジスタREG1に出力
し、ORはレジスタREG2に出力する。レジスタの出
力は、ブロックの出力になる。最下行のスロットは、格
納する必要がないためこれらのレジスタを持たない。
【0078】PRENユニットは、全てのレイテンシー
に対する書込みエネーブルの全ての可能な組み合わせに
ついて、必要なレイテンシー行でフリースロットが見出
されることを明確にする。PRENについての真値テー
ブルを次に示す。
【表3】
【0079】図11のMUXは、"we indicator in" 信
号が活性化されているとin4 をoutに接続する。we3 が
活性化されているとin3 を、we2 が活性化されていると
in2を、we1 が活性化されているとin1 を、それぞれout
に接続する。PRENユニットは、同時にはその中の
1つだけを活性化("1")する。
【0080】図9−11に示したRFWC書込み制御ユ
ニットハードウェアは、同時に起きた4つを超える書込
みをプログラマー又はコンパイラが防ぐことを要求して
いる。例えば、次の処理シーケンスは禁止される。 time i :FPU ... i+1:MUL ... i+2:ALU1,ALU2 ... i+3:CO ...
【0081】この例示シーケンスは、5つのレジスタフ
ァイルへの書込みバスを必要とする。即ち、その1つ
は、サイクルi+3で完結するCO処理の結果を書込む
こと、そのうちの2つは、ALU1 及びALU2 につい
てi+2で処理がスタートしてi+3で完結すること、
その1つはMUL処理について、もう1つは、FPU処
理についてである。
【0082】処理のある種の稀なシーケンスの禁止がシ
ステムの効率とハードウェアのコスト低減に明らかに影
響している。この特別な例においては、4つの書込みポ
ートを持つレジスタファイルが、ずっと高価な5つの書
込みポートを持つレジスタファイルに代わって充分効果
があることが明確になった。
【図面の簡単な説明】
【図1】図1は、従来のVLIW型CPUを示す図であ
る。
【図2】図2は、従来のVLIW命令語のフォーマット
を示す図である。
【図3】図3は、本発明のVLIW型CPUを示す図で
ある。
【図4】図4は、本発明のVLIW命令語のフォーマッ
トを示す図である。
【図5】図5は、スイッチングマトリクス401 の細部を
示す図である。
【図6】図6Aは、レジスタファイルへの入力及びそれ
からの出力を示す図である。図6Bは、スイッチ制御へ
の入力及びそれからの出力を示す図である。
【図7】図7は、オプコード送信論理を示す図である。
【図8】図8は、出力マトリクス402 の細部を示す図で
ある。
【図9】図9Aは、レジスタファイルの書込制御ユニッ
トを示す図である。図9Bは、RFWC/WEエンコー
ダーを示す図である。
【図10】図10は、レジスタファイルの書込制御ユニ
ットの細部を示す図である。
【図11】図11は、図10のSLOTブロックの細部
を示す図である。
【符号の説明】
101 レジスタファイル 102 メモリー 201−207 送出スロット 401、402 スイッチマトリクス 403 レジスタファイル 410 新しいVLIW命令のフォーマット 420−470 送出スロットの内容のフォーマット 801−804 マルチプレクサ 806−810 出力レジスタ 902 入力スイッチ制御
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年1月27日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図4】
【図5】
【図7】
【図6】
【図8】
【図9】
【図10】
【図11】

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 a)相互に並列に処理を実行するため
    の、3以上である第1の数の機能ユニットと、 b)2以上で第1の数より小さい第2の数の命令を保持
    するため、及び、命令と機能ユニットとの対応を特定す
    るためのコードを保持するための命令レジスタと、 c)適切な1つの機能ユニットに命令レジスタで並列に
    命令を実行させるための実行制御手段とを具えたプロセ
    ッサにおいて、 プロセッサが、命令レジスタの命令に関するオペランド
    を格納するためのマルチポートレジスタファイルを有す
    ること、 該マルチポートレジスタファイルが、並列にオペランド
    にアクセスするための第3の数の読出しポートを有する
    こと、 該第3の数は、第2の数の機能ユニットからなる機能ユ
    ニットのサブセットのいずれかによってレジスタファイ
    ルから要求されるオペランドの最大数以上であること、 該第3の数は、機能ユニット全体によって要求されるオ
    ペランドの総数より小さい数であること、及び、 プロセッサが、読出しポートに並列にアクセスして命令
    を実行することを指示された機能ユニットの読出しアク
    セスを選択的に行わせるための読出しアクセス供与手段
    を具備することを特徴とするプロセッサ。
  2. 【請求項2】 該読出しポートが読出しポートの群から
    なること、少なくとも1つの特別な群が少なくとも2つ
    の読出しポートを有すること、該読出しアクセス供与手
    段が群毎の機能ユニットに与えられた読出しポートを選
    択するように構成されたこと、少なくとも1つの機能ユ
    ニットがそれぞれのオペランドを同時に受信するための
    少なくとも2つの入力部を有すること、及び、機能ユニ
    ットの1つに対して該特別な群が選択される度毎に該入
    力部がそれぞれ所定の該特別な群からの読出しポートに
    接続されることを特徴とする請求項1に記載のプロセッ
    サ。
  3. 【請求項3】 命令レジスタが命令を送出するための第
    2の数のそれぞれの送出スロットからなること、各送出
    スロットが少なくとも1つの読出しポートの群のそれぞ
    れに対応すること、及び、特別な機能ユニットが特別な
    送出スロットからの命令を実行する度毎に該特別な送出
    スロットに対応する群からの読出しポートにアクセスす
    るように構成されたことを特徴とする請求項1又は2に
    記載のプロセッサ。
  4. 【請求項4】 各特別な群が第4の数の所定のポートを
    含むこと、及び、該第4の数が機能ユニットのいずれか
    1つによって要求されるオペランドの最大数に等しいこ
    とを特徴とする請求項2又は3に記載のプロセッサ。
  5. 【請求項5】 各特別な送出スロットが、該特別な送出
    スロットに対応する群の読出しポートのそれぞれのアド
    レス入力に接続された同じ所定数のアドレスフィールド
    を含み、該特別な送出スロットからの命令を実行する該
    機能ユニットがアドレスされたオペランドを要求するか
    否かに拘わらず、該読出しポートでアドレスされたオペ
    ランドにアクセスするように構成されたことを特徴とす
    る請求項3又は4に記載のプロセッサ。
  6. 【請求項6】 少なくとも1つの機能ユニットが、1つ
    の命令の実行を指示されたとき、更に該1つの命令を送
    出する送出スロットのアドレスフィールドから情報を受
    信し、該少なくとも1つの機能ユニットが実行の間該情
    報をオペランドとして使用することを特徴とする請求項
    5に記載のプロセッサ。
  7. 【請求項7】 該マルチポートレジスタファイルが少な
    くとも1つの書込みポートを有すること、及び、プロセ
    ッサが、並列に命令を実行することを指示された機能ユ
    ニットの書込みポートに選択的にアクセスしそれから結
    果を生成する書込みアクセス供与手段を有することを特
    徴とする請求項1乃至6のいずれか1項に記載のプロセ
    ッサ。
  8. 【請求項8】 命令レジスタが命令を送出するための第
    2の数のそれぞれの送出スロットからなること、各送出
    スロットが同じそれぞれの数の結果アドレスフィールド
    を含むこと、及び、該書込みアクセス供与手段が該アド
    レスフィールドの内容を書込みポートのアドレス入力部
    に送るように構成されたことを特徴とする請求項7に記
    載のプロセッサ。
  9. 【請求項9】 該書込みアクセス供与手段が、該機能ユ
    ニットが命令を実行することを指示された後のレイテン
    シー期間に、該結果アドレスフィールドの内容に基づい
    て、機能ユニットの1つの出力部を書込みポートに接続
    するように構成されたことを特徴とする請求項8に記載
    のプロセッサ。
  10. 【請求項10】 レジスタファイルが少なくとも2つの
    書込みポートを持ち、書込み選択手段が予備的割当て手
    段を有し、該予備的割当て手段がその予備的割当ての後
    1クロックサイクルの間特別な書込みポートに機能ユニ
    ットを予備的に割当て、そのクロックサイクルの中で該
    機能ユニットの1つの実行の結果が有効になり、更に、
    該予備的割当て手段が機能ユニット1つの出力を該特別
    な書込みポートに接続し、該結果アドレスフィールドの
    内容を該クロックサイクルの間該特別な書込みポートに
    与えるように構成されたことを特徴とする請求項9に記
    載のプロセッサ。
  11. 【請求項11】 予備的割当て手段が、該クロックサイ
    クルの間この特別な書込みポートが以前に該機能ユニッ
    トの1つに割当てられていないとの制約の下に書込みポ
    ートから該特別な書込みポートを選択するように構成さ
    れたことを特徴とする請求項10に記載のプロセッサ。
  12. 【請求項12】 該予備的割当て手段がレジスタのマト
    リクスを含むことを特徴とする請求項11に記載のプロ
    セッサ。
JP33651093A 1992-12-29 1993-12-28 プロセッサ Expired - Lifetime JP3916680B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US99808092A 1992-12-29 1992-12-29
US07/998080 1992-12-29

Publications (2)

Publication Number Publication Date
JPH06230969A true JPH06230969A (ja) 1994-08-19
JP3916680B2 JP3916680B2 (ja) 2007-05-16

Family

ID=25544720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33651093A Expired - Lifetime JP3916680B2 (ja) 1992-12-29 1993-12-28 プロセッサ

Country Status (5)

Country Link
US (1) US6044451A (ja)
EP (1) EP0605927B1 (ja)
JP (1) JP3916680B2 (ja)
KR (1) KR100290325B1 (ja)
DE (1) DE69325785T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960035259A (ko) * 1995-03-31 1996-10-24 리 페치 감소된 판독 및/또는 기록 포트 대역폭을 갖는 레지스터 파일을 포함하는 컴퓨터 프로세서
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7383422B2 (en) 2004-02-12 2008-06-03 Matsushita Electric Industrial Co., Ltd. Very long instruction word (VLIW) computer having an efficient instruction code format
KR20150062877A (ko) * 2013-11-29 2015-06-08 삼성전자주식회사 재구성 가능 프로세서의 레지스터를 제어하는 방법 및 장치와 재구성 가능 프로세서의 레지스터를 제어하는 명령어를 생성하는 방법 및 장치
JP2015130057A (ja) * 2014-01-07 2015-07-16 富士通株式会社 処理装置

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
DE69518403T2 (de) * 1994-01-10 2001-03-29 The Dow Chemical Co., Midland Ein massiv multiplexierter, superskalarer prozessor mit harvard-architektur
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5931939A (en) * 1996-09-25 1999-08-03 Philips Electronics North America Corporation Read crossbar elimination in a VLIW processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
JP2000305781A (ja) 1999-04-21 2000-11-02 Mitsubishi Electric Corp Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
US6351802B1 (en) 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
JP4542722B2 (ja) * 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
US7360076B2 (en) * 2001-06-13 2008-04-15 Itt Manufacturing Enterprises, Inc. Security association data cache and structure
US7213148B2 (en) * 2001-06-13 2007-05-01 Corrent Corporation Apparatus and method for a hash processing system using integrated message digest and secure hash architectures
US7266703B2 (en) 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US7249255B2 (en) * 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
GB2420884B (en) * 2004-12-03 2009-04-15 Picochip Designs Ltd Processor architecture
US8713286B2 (en) 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
GB2454865B (en) * 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
GB2466661B (en) * 2009-01-05 2014-11-26 Intel Corp Rake receiver
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
JP5625903B2 (ja) * 2010-12-29 2014-11-19 富士通株式会社 演算処理装置および演算処理方法
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
NL8800071A (nl) * 1988-01-13 1989-08-01 Philips Nv Dataprocessorsysteem en videoprocessorsysteem, voorzien van een dergelijk dataprocessorsysteem.
JP2553200B2 (ja) * 1989-08-19 1996-11-13 富士通株式会社 情報処理装置
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninklijke Philips Electronics N.V., Eindhoven Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
US5161226A (en) * 1991-05-10 1992-11-03 Jmi Software Consultants Inc. Microprocessor inverse processor state usage
US5530866A (en) * 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US5628013A (en) * 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
US5619408A (en) * 1995-02-10 1997-04-08 International Business Machines Corporation Method and system for recoding noneffective instructions within a data processing system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960035259A (ko) * 1995-03-31 1996-10-24 리 페치 감소된 판독 및/또는 기록 포트 대역폭을 갖는 레지스터 파일을 포함하는 컴퓨터 프로세서
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7383422B2 (en) 2004-02-12 2008-06-03 Matsushita Electric Industrial Co., Ltd. Very long instruction word (VLIW) computer having an efficient instruction code format
US8738892B2 (en) 2004-02-12 2014-05-27 Panasonic Corporation Very long instruction word (VLIW) computer having efficient instruction code format
US9697004B2 (en) 2004-02-12 2017-07-04 Socionext Inc. Very-long instruction word (VLIW) processor and compiler for executing instructions in parallel
KR20150062877A (ko) * 2013-11-29 2015-06-08 삼성전자주식회사 재구성 가능 프로세서의 레지스터를 제어하는 방법 및 장치와 재구성 가능 프로세서의 레지스터를 제어하는 명령어를 생성하는 방법 및 장치
JP2015130057A (ja) * 2014-01-07 2015-07-16 富士通株式会社 処理装置

Also Published As

Publication number Publication date
US6044451A (en) 2000-03-28
DE69325785T2 (de) 2000-02-17
JP3916680B2 (ja) 2007-05-16
EP0605927A1 (en) 1994-07-13
DE69325785D1 (de) 1999-09-02
KR100290325B1 (ko) 2001-11-26
KR940015852A (ko) 1994-07-21
EP0605927B1 (en) 1999-07-28

Similar Documents

Publication Publication Date Title
JP3916680B2 (ja) プロセッサ
US6122722A (en) VLIW processor with less instruction issue slots than functional units
KR100638703B1 (ko) 데이터 프로세싱 시스템용 셀룰러 엔진
EP1038253B1 (en) Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US20060265555A1 (en) Methods and apparatus for sharing processor resources
KR20010042690A (ko) 구성가능 기능 유닛을 가진 데이터 프로세서 및 이러한데이터 프로세서를 사용한 방법
US5742783A (en) System for grouping instructions for multiple issue using plural decoders having forward and backward propagation of decoding information
US7617494B2 (en) Process for running programs with selectable instruction length processors and corresponding processor system
EP1623318B1 (en) Processing system with instruction- and thread-level parallelism
EP0363174A2 (en) Branch on bit processing
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
US5862399A (en) Write control unit
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
JP2006506727A (ja) コピーレジスタファイルを有するvliw
EP0305752B1 (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
US11775310B2 (en) Data processing system having distrubuted registers
JP3341662B2 (ja) 情報処理装置及び多ポートレジスタファイル
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
EP1378825A1 (en) A method for executing programs on selectable-instruction-length processors and corresponding processor system
CA2515283C (en) Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
JPH09244894A (ja) 演算装置
JPH07105017A (ja) レジスタリネーミング装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040621

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040727

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070207

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

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100216

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100216

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140216

Year of fee payment: 7

EXPY Cancellation because of completion of term