JP2002024011A - プロセッサにおける命令の叙述された実行 - Google Patents

プロセッサにおける命令の叙述された実行

Info

Publication number
JP2002024011A
JP2002024011A JP2001172447A JP2001172447A JP2002024011A JP 2002024011 A JP2002024011 A JP 2002024011A JP 2001172447 A JP2001172447 A JP 2001172447A JP 2001172447 A JP2001172447 A JP 2001172447A JP 2002024011 A JP2002024011 A JP 2002024011A
Authority
JP
Japan
Prior art keywords
register
predicate
processor
state
predicate register
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.)
Pending
Application number
JP2001172447A
Other languages
English (en)
Inventor
Nigel Peter Topham
ナイジェル・ピーター・トファム
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.)
Siroyan Ltd
Original Assignee
Siroyan Ltd
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 Siroyan Ltd filed Critical Siroyan Ltd
Publication of JP2002024011A publication Critical patent/JP2002024011A/ja
Pending 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

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

Abstract

(57)【要約】 【課題】 プロセッサにおける命令の実行手段を提供す
る。 【解決手段】 プロセッサは、一連の述語レジスタ(1
35)と、制御情報保持ユニット(131)と、複数の
オペレーティングユニット(133)とを含む。一連の
各述語レジスタ(135)は、少なくとも個々の第1及
び第2の状態間で切換可能であり、かつ1つまたは複数
の叙述された実行命令に割当て可能である。制御情報保
持ユニット(131)は、述語レジスタに個々に対応す
る制御情報の項目を保持し、各オペレーティングユニッ
トもまた述語レジスタの1つに個々に対応する。各オペ
レーティングユニットは、そのユニット独自の対応述語
レジスタに対応する制御情報項目を受信するために制御
情報保持ユニット(131)に接続された第1の制御入
力を有し、また述語レジスタのさらなる1つに対応する
制御情報項目を受信するために接続された第2の制御入
力を有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサにおけ
る命令の叙述された実行に関する。特に本発明は、例え
ばマイクロプロセッサにおけるフレキシブルな命令の順
序づけ、及びパイプライン化されたループのループ制御
に関する。
【0002】
【従来の技術】高性能演算においては、目標マシン(マ
イクロプロセッサ等)の高速の命令実行が一般に要求さ
れるソフトウェアパイプラインループとの関連におい
て、命令の叙述された実行に対する要求が発生する。実
行時間は、アプリケーションプログラム内部のループ構
造で占められる場合が多い。高速の命令実行を可能にす
るため、プロセッサは、個別のユニットが各々、他の実
行ユニットによる命令の実行と並行して1つまたは複数
の命令を実行可能であるような、複数の個別の実行ユニ
ットを含むことができる。
【0003】こうした複数の実行ユニットは、複数の個
別のステージで作り上げられるいわゆるソフトウェアパ
イプラインを提供するために使用されることが可能であ
る。各ソフトウェアパイプラインステージは、特定の実
行ユニットとの固定的な物理的連絡を保有しない。アプ
リケーションプログラムにおけるループ構造がコンパイ
ルされると、ループの個々の反復を作り上げる機械語命
令が、ソフトウェアパイプライン計画に従って異なる実
行ユニットによる実行のためにスケジュールされる。こ
の計画は連続するステージに分かれており、命令のスケ
ジュールは、複数の反復を、連続する反復の開始間の選
択されたループ開始間隔で異なる実行ユニットにより重
複して実行させるように行われる。従って、反復iの第
1のステージが終了して当該反復が第2のステージに入
ると、次の反復であるi+1の実行が反復i+1の第1
のステージで開始される。よって、反復i+1の第1の
ステージにおける命令は、反復iの第2のステージにお
ける命令の実行と並行して実行される。
【0004】こうしたソフトウェアパイプラインループ
では、典型的には、どの瞬間においても部分的な完成状
態にあるループの反復が幾つか存在する。故に、各実行
ユニットは、うち続くサイクルにおける異なる反復から
の命令を処理している可能性があり、かつ或る任意の時
点では、当該実行ユニットは異なる反復からの個々の命
令を処理している可能性がある。また、各ループ内で計
算された各値のライブコピーも幾つか存在する場合があ
る。これらの値を区別し、かつこれらを現行の反復に対
して識別するためには、レジスタ内に保持される各値の
名称は、ループ実行の間の明確な瞬間に必ず変化するこ
とが必要である。これらの改名ポイントはコンパイラに
は周知であり、コンパイラはまた、各命令内部で各値に
アクセスするために必要なレジスタ名を、値が計算され
た反復に依存して決定する。
【0005】
【発明が解決しようとする課題】こうしたソフトウェア
パイプラインスキームの場合、ソフトウェアパイプライ
ンループの実行中の任意のポイントでは、一定間隔で開
始される新たな反復が存在すると思われる。他の時点で
は、一定間隔で開始する任意の反復、並びに終了する他
の反復が存在し、また他の時点では、完了しようとする
反復しか存在しないと思われる。幾つかの実行ユニット
によって幾つかの重複するソフトウェアパイプラインル
ープが並行実施されているこのスキームは、これらのソ
フトウェアパイプラインループの開始及び停止の慎重な
制御を要求する。こうした制御は実行時に発生する必要
があり、よって、効率的かつ適正な作動を保証するよう
に設定される制御機構は、それでなくとも高度に速度が
重視される中で作動しているプロセッサに絶対に過大な
時間要求を課さないことが重要である。従って、ソフト
ウェアパイプラインループにおける命令の順序付けの制
御に掛かる時間は、可能な限り短いことが望ましい。
【0006】
【課題を解決するための手段】本発明の第1の態様によ
って提供される、述語ベースの命令を実行するように機
能することが可能なプロセッサは、各々が少なくとも個
々の第1及び第2の状態間で切換可能であり、かつ各々
が1つまたは複数の叙述された実行命令に割当て可能で
ある一連の述語レジスタと、上記一連における上記述語
レジスタに個々に対応する制御情報の項目を保持するた
めの制御情報保持手段と、上記述語レジスタに個々に対
応する複数のオペレーティングユニットであって、各々
がそのユニット独自の対応する述語レジスタに対応する
制御情報項目を受信するために上記制御情報保持手段に
接続された第1の制御入力を有し、かつさらに他の上記
述語レジスタの1つに対応する制御情報項目を受信する
ために接続された第2の制御入力を有し、かつ受信され
た制御情報項目に依存してその上記独自の述語レジスタ
の上記状態が決定される状態決定オペレーションを実行
するように作動することが可能な複数のオペレーティン
グユニットとを含み、上記複数のオペレーティングユニ
ットは、個々のこうした状態決定オペレーションを実行
するように互いに並行して作動することができる。
【0007】本発明の第2の態様によって提供される、
述語ベースの命令を実行するように機能することが可能
なプロセッサは、各々が少なくとも個々の第1及び第2
の状態間で切換可能であり、かつ各々が1つまたは複数
の叙述された実行命令に割当て可能である一連の述語レ
ジスタと、上記一連における1つまたは複数の述語レジ
スタを個々のシフトレジスタとして指定するためのシフ
トレジスタ指定手段と、シフトレジスタ指定手段によっ
てこうしたシフトレジスタとして指定された述語レジス
タまたは各述語レジスタに関しては、上記一連における
先行レジスタの状態が関連のレジスタへと移行されるシ
フトオペレーションを実行するための、上記述語レジス
タに接続されたシフト手段とを含み、こうした移行は、
こうしたシフトレジスタとして指定されない上記一連に
おける任意のレジスタへは実行されない。
【0008】
【発明の実施の形態】次に、添付の図面を例示的に参照
していく。図1は、本発明を具現するプロセッサの各部
分を示したものである。この例では、プロセッサは、ソ
フトウェアのパイプライン化及びレジスタの循環改名の
ためのハードウェアサポートを有する超長命令語(VL
IW)プロセッサである。プロセッサ1は、命令発行ユ
ニット10と、スケジュール記憶ユニット12と、ルー
プ制御ユニット13と、各第1、第2及び第3の実行ユ
ニット14、16及び18と、レジスタファイル20と
を含んでいる。命令発行ユニット10は、各々第1、第
2及び第3の実行ユニット14、16及び18に接続さ
れた3つの発行スロットIS1、IS2及びIS3を有
している。
【0009】第1のバス22は、3つの実行ユニット1
4、16及び18の全てをレジスタファイル20に接続
している。第2のバス24は、第1及び第2のユニット
14及び16(この例では第3の実行ユニットは除かれ
る)を、本例では外部のランダムアクセスメモリ(RA
M)装置であるメモリ26に接続している。代替とし
て、メモリ26はプロセッサ1の内部RAMであること
も可能である。
【0010】ちなみに、図1は複数の実行ユニットをレ
ジスタファイル20及びメモリ26に接続する共用のバ
ス22及び24を示しているが、代替として、各実行ユ
ニットがレジスタファイル及びメモリとの固有の独立し
た接続を保有し得ることは認識されるであろう。
【0011】プロセッサ1は、一連の処理サイクルを実
行する。各処理サイクルにおいて、命令発行ユニット1
0は、発行スロットIS1乃至IS3の各々で1つの命
令を発行することができる。命令は、スケジュール記憶
ユニット12に格納された(下記の)ソフトウェアパイ
プラインスケジュールに従って発行される。
【0012】以下、ループ制御ユニット13について、
ループのセットアップ及び停止を制御するタスクに関連
して詳述する。最初は、図1のプロセッサに関連してソ
フトウェアパイプラインループの一般概念及びオペレー
ションについて説明する。
【0013】命令発行ユニット10により異なる発行ス
ロットで発行される命令は、対応する実行ユニット1
4、16及び18によって実行される。本例では、実行
ユニットの各々は同時に複数の命令を実行することが可
能であり、新たな命令の実行は、関連の実行ユニットに
対して発行された先の命令の実行が完了する前に開始さ
れる場合がある。
【0014】命令を実行するために、各実行ユニット1
4、16及び18は、第1のバス22を介してレジスタ
ファイル20へのアクセスを有している。従って、レジ
スタファイル20に包含されるレジスタ内に保持される
値は、実行ユニット14、16及び18によって読取ら
れ、かつ書き込まれることが可能である。第1及び第2
の実行ユニット14及び16はまた、第2のバス24を
介して外部メモリ26とのアクセスを有しており、外部
メモリ26の記憶位置に格納された値も読取られ、かつ
書き込まれることが可能にされる。本例では、第3の実
行ユニット18は外部メモリ26へのアクセスを保有し
ていないため、同ユニットはレジスタファイル20に含
まれる値しか操作することができない。
【0015】命令の順序付け及びレジスタ改名の概念
は、多くの線形代数パッケージにおいて一般に見受けら
れるCプログラミング言語で書かれた以下の単純ループ
を考慮することにより、図1のプロセッサを参照して説
明することができる。 (i=0; i<m; i++)の場合、 dy(i)=dy(i)+da x dx(i)
【0016】このループでは、アレーdyの各要素dy
(i)(i=0,1,...,m−1)は、定値daと
後続アレーdxの対応する要素dx(i)との積だけ増
加される。
【0017】ソフトウェアのパイプライン化及びレジス
タの循環改名のためのハードウェアサポートを有する超
長命令語(VLIW)プロセッサの場合のこのループの
コンパイリング工程は、典型的には、図2が示すような
データフローの記号グラフの作成によって始まる。
【0018】このデータフローの記号グラフは、データ
及び当該データに作用する演算子がループの間に如何に
使用されるかを示すものであり、ループ内での時間依存
性を強調する場合、及びループの時間効率を増大するた
めに行われることが可能な任意の時間最適化を決定する
場合に有益である。
【0019】例えば、ノードD5における「加算」オペ
レーションは、まず、dy(i)の値がアクセスされ
(ノードD4)、さらにdaとdx(i)の値がアクセ
スされて(各々ノードD1及びD2)乗算される(D
3)ことを要求する。オペレーション(D1,D2,D
3)はオペレーションD4と同時に、もしくはオペレー
ションD4と重複して実行されることが可能であり、オ
ペレーションD5に必要な値は何れも、当該オペレーシ
ョンの開始までには使用できる状態となっていることは
明白である。ノードD5における「加算」オペレーショ
ンの結果は、続いてノードD5においてdy(i)に格
納される。ノードD7乃至D9は、毎反復の終わりにア
レー変数「i」の増分を実行する。
【0020】アレーdx及びdyは、外部メモリ26
(図1)内の記憶位置に格納されるため、図1のデータ
フローグラフにおけるこれらへのレファレンスは、対応
するメモリアクセスオペレーションに変換されなければ
ならない。従って、各アレーdx及びdyは、アレーの
要素が格納されている外部メモリ26内の格納位置を指
示するための少なくとも1つのポインタを必要とする。
こうしたポインタは各々、レジスタファイル20のレジ
スタ内に保持されている。
【0021】定値daはメモリ内のその位置を示す同様
のポインタを使用して処理されることが可能であるが、
当該値はループ不変であるため、ループ実行中は、これ
をレジスタファイル20のその固有のレジスタ内に直接
保存する方がより便利であり、高速である。
【0022】上記のコードボックスに示されたループ例
をコンパイルする工程における次のステップは、様々な
最適化を実行して図2が示すデータフローグラフを実際
の機械語命令により近い形式に変換することである。こ
の工程の間、コンパイラは、典型的には、ループ内でど
の値が変化し、どの値が一定であるかを決定しようとす
る。例えばこの事例の場合、「da」の値はループの間
に全く変更されない。アレーレファレンスはポインタア
クセスに変換され、目標マシンにその機能サポートがあ
れば、自動増分アドレス指定モードが使用される。
【0023】図3は、結果として生じる内部三層構造コ
ンパイラを表したものである。図面は、個々の機械語オ
ペレーションT1乃至T6及びこれらの依存関係(矢
印)を示し、各矢印には、矢印の出発点であるオペレー
ションの完了に必要なプロセッササイクル数を表す整数
が付いている。
【0024】以下のリストは、図2に示された各機械語
オペレーションの意味の簡単な説明である。 ld A,B:記憶位置Bの内容をレジスタAにロード
する。 mul A,B,C:レジスタBの内容にレジスタCの
内容を掛けて結果をレジスタAに格納する。 add A,B,C:レジスタBの内容をレジスタCの
内容に加算して結果をレジスタAに格納する。 st A,B:レジスタAの内容を記憶位置Bに格納す
る。
【0025】図3でレジスタが括弧の中に示されている
場合、これは、使用されている同レジスタに格納された
アドレスによって指示される記憶位置の内容である。レ
ジスタ名に続く記号「++」は、同レジスタの内容が、
特定のオペレーションで使用された後に自動増分される
ことを意味している。
【0026】図3に示された命令T1乃至T6は、図2
に示されたデータフロー記号グラフの対応するノードD
1乃至D6に密接に関連している。中間の値は、割り当
てられた仮想のレジスタ番号(識別子)v0乃至v3で
あり、他の値は、割り当てられたレジスタ番号(識別
子)r1乃至r3である。仮想のレジスタ番号は最終的
なレジスタの割当てではなく、(以下で詳述されるよう
に)図2に示されたデータフローグラフにおける矢印の
ための単なる一時的なラベルに過ぎない。
【0027】以下のリストは、図3に示された各レジス
タ識別子の用途の要約である。 r0:カレントdxを指示するポインタ r1:da r2:カレントdyを指示する第1のポインタ r3:カレントdyを指示する第2のポインタ v0:dxの一時的ラベル v1:da*dxの一時的ラベル v2:dyの一時的ラベル v3:dy+da*dxの一時的ラベル
【0028】例えば命令T2では、レジスタr0によっ
て指示された記憶位置の内容は、レジスタv0にロード
され、レジスタr0に格納されている値(ポインタ)
は、続いて増分される。レジスタr0に格納された値は
カレントdxを指示するポインタであるため、これは、
図2のノードD2に対応する値dx(i)へのアクセス
を表している。アレーレファレンスはポインタアクセス
に変換されているため、コードボックスのライン1にお
ける変数iの増分は、命令T2におけるdxを指示する
ポインタ、及び命令T4及びT6におけるdyを指示す
る2つのポインタを増分することによって実行される。
【0029】任意の命令対の間の最長経路は、ループの
1つの反復を実行するために必要な最短時間を限定す
る。これは「スケジュール長さ」として周知であり、最
長(限界)経路に沿った待ち時間の合計プラス1として
正式に限定されている。従って本例の場合、スケジュー
ル長さは10サイクルである。或るサイクルで自動増分
されるレジスタは、次のサイクルで再度使用できる状態
にある。
【0030】本明細書に記述されているコンパイルの後
続ステージは全て、ソフトウェアのパイプライン化に特
有のものである。ソフトウェアのパイプライン化の第1
の段階は、ループの連続する反復の開始間の間隔である
ループ初期化間隔(単に「II」と呼ばれる)を決定す
ることである。ループ初期化間隔は、実行する命令の数
やデータフローグラフにおける任意サイクルの存在より
も、利用可能な資源に依存する。
【0031】例えば図1が示すプロセッサは、3つの命
令発行スロットIS1乃至IS3と3つの実行ユニット
14、16及び18を有し、そのうち外部メモリ26に
アクセスできるのは第1及び第2の実行ユニット14及
び16だけである。また、実行ユニットは、異なるタス
クを実行するために個々に最適化されているという意味
では「特殊化された」ユニットであるとも言える。例え
ば、おそらくは、実行ユニットのうちの幾つかだけがあ
る種の命令を実行する能力を有している。
【0032】本例の場合、利用可能な資源を考慮すれ
ば、ループ初期化間隔IIは2プロセッササイクルとし
て決定されることが想定されるであろう。また、第3の
実行ユニット18のみに加算命令及び乗算命令の実行に
必要な資源(例えば、算術論理演算装置ALU)が装備
されることも想定されるであろう。
【0033】次のステップは、いわゆるモジューロスケ
ジューリング制約に準じるスケジュールを作成するもの
である。図4は、スケジュールの例を示している。こう
したスケジュールは、図1が示すプロセッサ1のスケジ
ュール記憶ユニット12に格納される。図4のスケジュ
ールでは、第1の発行スロットは「ロード」命令のみを
扱い、第2の発行スロットは「格納」命令のみを扱い、
第3の発行スロットは算術演算子の「乗算」及び「加
算」のみを扱う。
【0034】モジューロスケジューリング制約は、各発
行スロットに関して、命令は、時間jにおいて何ら命令
が計画されていない場合に限り、時間iに計画されるこ
とが可能である点を明記している。これは、新たな反復
がIIサイクル毎に始まる場合、特定のサイクルにおい
て特定の発行スロットから複数の命令が発行されなけれ
ばならないような可能性はないことを保証するものであ
る。
【0035】このモジューロスケジューリング表は、ル
ープの1反復を構成する5つの命令T2乃至T6が如何
にして計画されるかを示している。特に表の3乃至5欄
は、各命令が発行される際のスケジュールにおけるサイ
クル、これが発生するソフトウェアパイプラインステー
ジ及び命令が発行される発行スロット(即ち、命令を実
行する実行ユニット)を示している。終わりの4欄は論
理レジスタ番号を示し、図6乃至8を参照して後に詳述
される値の寿命が斜線によって示されている。
【0036】表が示すように、モジューロスケジューリ
ング制約に起因して、2つの命令が同じ発行スロットに
おいて2の倍数サイクルを隔てて計画されることはな
い。従って、第1のロード命令T2がサイクル0におい
て発行スロット1からの発行を計画されていると、次の
命令、即ちサイクル2において発行が予定される乗算命
令T3は、発行スロット1以外の発行スロット、この場
合は発行スロット3において計画されなければならな
い。発行スロット3が選択されるのは、本例では第3の
実行ユニット18しか乗算命令を実行できないためであ
る。同様に、第2のロード命令T4がサイクル3におい
て発行スロット1からの発行を計画されていれば、次の
命令、即ちサイクル5において発行が計画される加算命
令T5は、スロット1以外のスロット、この場合もやは
りスロット3から発行されなければならない。格納命令
T6である第5の命令は、サイクル9で発行されること
が要求される。モジューロ制約に起因して、これは発行
スロット1や発行スロット3の何れにおいても発行され
ることはなく、よって発行スロット2に割り当てられな
ければならない。
【0037】図4の表におけるスケジュールは、1反復
のみに関連したものであることは理解されなければなら
ない。他の反復は、同じスケジュールによってIIサイ
クル毎に開始される。従って、現行の反復がステージ1
にある場合、その直前の反復はステージ2にあり、その
前の反復はステージ3に、その前の反復はステージ4
に、さらにその前の反復はステージ5にあることにな
る。命令は、全ての反復において同一の発行スロットに
よる発行を計画されており、各発行スロットは、IIサ
イクル毎に同じ命令を発行する。
【0038】目標マシンがs0、s1、s2乃至srと
呼ばれる1組の回転(論理)レジスタを有していれば、
これらは、右端の4欄に示されるように仮想レジスタの
場所に割り当てられることが可能である。図4から、v
0に割り当てられたレジスタは、ステージ1においてs
0であることからステージ2におけるs1へと変化する
ことは明白である。これは、パイプラインの境界が越え
られて新たな反復が開始される度に、改名メカニズムが
レジスタ名を1つ効果的にシフトするためである。これ
は、反復iにおいて計算されるv0の値が、反復i+1
及びi−1において計算されるv0の値とは区別される
ことを可能にする。
【0039】これは、レジスタにアクセスするハードウ
ェアに、一定間隔でレジスタをシフトするように要求す
る。レジスタ名とレジスタ内容との結合が固定的である
場合、シフトは、レジスタファイルのシフト領域におけ
る全てのiについて、siをsi+1に物理的にコピー
することによってのみ達成可能である。これは、極端に
経費が掛かることが予想されるため、代わりに、レジス
タ名とレジスタ位置との結合は、シフトオペレーション
が要求されるときは回転するように作られることが可能
である。従って、上記のレジスタs0乃至srは最終的
な物理的レジスタ番号ではなく、実行時に物理的レジス
タ番号に変換(マップ)される論理レジスタ番号であ
る。
【0040】多くのソフトウェアパイプラインループも
また、多くのループ不変値がレジスタにおいて利用可能
であることを要求する。ループ不変値はループ内部で使
用される値であるが、これは、ループ内では絶対に再計
算されない。一例は、先のループ例における「da」値
である。こうした値は、ループ実行の間にレジスタ改名
を受けないレジスタ(静的に命名されたレジスタ)内に
格納されなければならない。本例では、アレーdx及び
dyのポインタも、ループ不変値ではないが静的に命名
されたレジスタ内に格納されることが可能である。結果
的に、この文脈における使用のためのレジスタファイル
の好適な形態は、ループ変動値を保持するための改名可
能な部分と、ループ不変値及び他の適正値を保持するた
めの静的に命名された部分とを有することができる。
【0041】図5には、こうしたレジスタファイルの一
例が示されている。図5が示すレジスタファイル例12
0は、N個のレジスタで構成されている。当然ながら、
低位の番号Kは静的に命名され、高位の番号N−Kは動
的に命名されている(改名可能)。静的に命名されるレ
ジスタはレジスタファイルの静的に命名された部分12
0Sを構成し、改名可能なレジスタはレジスタファイル
の改名可能部分120Rを構成している。
【0042】各命令は、論理レジスタ番号によってその
レジスタオペランドを指定する。これは、領域0乃至N
−1におけるmビットの2進整数、但し 、である。図5のレジスタファイルは、論理レジスタ識
別子(番号)から物理的レジスタ識別子(アドレス)ま
での全単射を実行するマッピング回路を必要とする。各
物理的レジスタアドレスPもまた領域0乃至N−1にお
けるmビットの2進整数であり、実際のハードウェアレ
ジスタの1つを直接同定する。
【0043】命令が論理レジスタ番号Rをそのオペラン
ドの1つとして指定し、かつRが0乃至K−1の領域内
にあるとすれば、物理的レジスタ番号は、そのオペラン
ドの論理レジスタ番号と同一である。但し、RがK乃至
N−1の領域にあれば、そのオペランドの論理レジスタ
番号は、以下のようなPによって与えられる。 P=K+│R−K+オフセット│N-K ...(1)
【0044】この表記法においては、│y│xは、xを
法としてyを意味する。「オフセット」はマッピングの
オフセット値(整数)であり、レジスタが改名される度
に単調に1だけ増加(または減少)する。
【0045】次に、図6(a)及び図6(b)が示す表
を参照して、論理レジスタ番号Rから物理的レジスタ番
号Pまでのこのマッピングについてさらに詳しく説明す
る。図6(b)の表は、図6(a)が示す表の続きであ
る。本表は、上記の例と同じオペレーションにおけるレ
ジスタ改名スキームを示しており、最初の2反復が図6
(a)に、次の2反復が図6(b)に示されている。
【0046】本例では、Kの値が4であると想定されて
いる(静的に命名されたレジスタはr0乃至r3の4個
が存在しているため)。Nの値は、本例の進行に影響し
ないような高値であることが想定されている。マッピン
グのオフセット値である「オフセット」は値6に初期設
定されており、図6(a)及び図6(b)の第2欄が示
すように、パイプライン境界が越えられる度に1ずつ減
少される。
【0047】図6(a)の反復0の第1欄に示された命
令のシーケンスは、図4において3つの欄(発行スロッ
ト1乃至3)に分かれて示されている命令のシーケンス
と同じである。静的に命名されるレジスタには、論理レ
ジスタ番号r0乃至r3が割当てられている。ループ変
動レジスタには、一時的なレジスタ番号(ラベル)v0
乃至v3が与えられている。各反復には同じ一時的ラベ
ルセットが使用されるため、各反復の第1欄は、反復間
隔II(この場合は2サイクル)だけシフトされた同じ
命令シーケンスを示している。
【0048】コンパイルに際しては、図6(a)及び図
6(b)が示す各反復内部のv0乃至v3の見出しの付
いた対応欄において示されているように、一時的な仮想
レジスタ番号v0乃至v3が論理レジスタ番号に変換さ
れる。例えば、反復0のサイクル0及び1における仮想
レジスタ番号v0には、コンパイラによって論理レジス
タ番号r4が割当てられている。実行時には、この論理
レジスタ番号は、RからPにマッピングするための上記
の式(1)を使用して物理的レジスタ番号に変換され
る。本事例の場合、R=4、K=4及び「オフセット」
=6であるため、マッピングされた物理的レジスタ番号
は10となる。故に本例では、論理レジスタ番号r4
は、実行時に物理的レジスタ番号p10にマッピングさ
れる。
【0049】パイプライン境界が越えられると、境界が
越えられた後の同じレジスタを同定するために、コンパ
イラは、超過より前に使用された論理レジスタ番号より
も1だけ増分された論理レジスタ番号を使用しなければ
ならない。よって、実行時に各パイプライン境界におい
てマッピングもまた回転されると、適正な物理的レジス
タがステージからステージへとアクセスされる。例え
ば、反復0における仮想レジスタ番号v0について考慮
すれば、サイクル1からサイクル2へ進んでパイプライ
ン境界が越えられると、論理レジスタ番号はr4からr
5へと増分され、第2のステージでは、「オフセット」
が5に減少していることを考慮して、同じ物理的レジス
タ番号(p10)がアクセスされる。
【0050】図7は、図6(a)及び図6(b)が示す
反復0乃至3の各々の命令シーケンスに対する、コンパ
イラによる論理レジスタ番号の割当て結果を示したもの
である。図8は、実行時に論理レジスタ番号を物理的レ
ジスタ番号にマッピングするように実行されるレジスタ
マッピングの効果を示したものである。
【0051】図6(a)及び図6(b)の表においてv
0乃至v3と標識されている変数の各々に割当てられた
物理的レジスタ番号について考慮すると、1つの反復に
おける変数の値は、当該変数に割当てられた物理的レジ
スタは反復毎に異なるという理由から、隣の反復におけ
る変数の値とは区別され得ることが分かる。従って、パ
イプライン化されたループの正確なオペレーションが保
証される。
【0052】ちなみに、論理レジスタ番号Rから物理的
レジスタPへのマッピングのための上記のマッピング方
程式(1)を使用すると、回転レジスタを改名する際
に、「オフセット」が増分される、もしくは減少される
場合がある。これが増分される場合は、特定の物理的レ
ジスタの論理レジスタ番号は、「オフセット」が増分さ
れる度に1ずつ減少する。同様に、「オフセット」が減
少されれば、論理レジスタ番号は増大する。
【0053】上記のマッピングの実行に適するマッピン
グ回路については、当方の英国同時係属出願第0004
582.3号に説明されており、その全内容は本明細書
に参照として編入されている。
【0054】図9は、図6乃至8を参照して先に説明し
たものと同じ4つの反復について、プロセッサ1の命令
発行ユニット10における発行スロットIS1乃至IS
3の各々で発行される命令のシーケンスを示している。
図9に示された命令は、図8に示された物理的レジスタ
番号へのマッピングより前にコンパイラによって割当て
られた論理レジスタ番号を使用している図7における命
令に対応している。また、各発行スロットには、各命令
と対照させて反復及びその命令が属するパイプラインス
ケジュールステージも示されている。
【0055】図9からは、発行スロット1においては、
ループがその初期ステージにある最初のIIサイクルの
間に、反復0の「ロード」命令しか発行されないことが
分かる。(反復0の第1のパイプラインステージが完了
して)処理がサイクル2に至ると、反復1の第1のパイ
プラインステージが、反復0の第2のパイプラインステ
ージと同時に開始される。従って、サイクル2から7ま
では、図4が示す原初のスケジュールの設定により、第
1の実行ユニット14は、スケジュールのステージ1か
らの「ロード」命令の実行と、スケジュールのステージ
2からの「ロード」命令の実行とを交互に行う。連続す
る各「ロード」命令対における2つの「ロード」命令
は、異なる個々の反復からのものである。この交互の実
行は、本例では反復3以降に実行される反復がないため
に発行スロット1で何の命令も発行されないサイクル8
まで継続され、ループは停止し始める。
【0056】図9の発行スロット3においても同様のパ
ターンが見受けられ、この場合は、第3の実行ユニット
18によって実行される命令が、サイクル4から9ま
で、スケジュールのステージ2の「乗算」命令と、スケ
ジュールのステージ3の「加算」命令との間で交番され
る。ループの始動期間であるサイクル0から3までは、
サイクル2において僅か1つの「乗算」命令が発行され
るだけである。同様に、ループの停止期間中は、ステー
ジ3で「加算」命令が1つだけ発行される(サイクル1
0及び11)。
【0057】この特定例におけるスケジュールの構成に
起因して、発行スロット2では、サイクル9からサイク
ル15までIIサイクル毎に1つの命令(「格納」命
令)が発行される。
【0058】図10は、(a)ループの1つの反復のた
めの単一の命令シーケンスから、(b)上記の5つのス
テージより成るパイプライン化されたループスケジュー
ルの生成を経て、(c)パイプライン化されたループの
7つの反復の重複された実行に至る、3ステージの工程
を示している。図10(c)は、図9を参照した上記の
ループ反復の設定及び停止をグラフに纏めたものであ
る。図10(c)が示すように、新たな反復はパイプラ
イン境界が越される度に開始され、第1の反復から最後
(第7)の反復まで階段構造で重複された反復が生成さ
れる。
【0059】これらの重複された7つの反復の実行は、
「プロローグ」段階と、「カーネル」段階と、「エピロ
ーグ」段階との3つの概念的段階に分割されることが可
能である。プロローグ段階は、開始される反復のみによ
って構成され、IIサイクル毎に新たな反復が開始され
る。カーネル段階は、完了される反復と開始される反復
の双方より成り、IIサイクル毎に1つの反復が完了
し、IIサイクル毎に新たな反復が開始される。最後
に、エピローグ段階は完了される反復のみによって構成
され、IIサイクル毎に1つの反復が完了される。
【0060】図9及び10が示すようなソフトウェアパ
イプラインループの始動及び停止の制御は、ループの適
正な作動を保証する実行時のパイプラインステージの系
統的な可能化及び不能化を必要とする。このタスクは、
図1が示すプロセッサ1のループ制御ユニット13によ
って実行される。
【0061】次に、図11を参照して、反復の開始及び
完了を制御するための1つの可能なスキームについて説
明する。本スキームは、パイプラインステージの可能化
(プロローグ及びカーネル段階の間)、及び不能化(カ
ーネル及びエピローグ段階の間)を系統的に可能にす
る。本スキームは、汎用述語レジスタのコレクションを
基礎として叙述された実行をサポートするあらゆるプロ
セッサにおいて有用である。各述語レジスタは単一のビ
ットを含み、1つの状態(「真」または「偽」)を格納
することができる。述語レジスタを有するプロセッサ
は、典型的にはこれらの述語レジスタを使用してソフト
ウェアパイプラインループスケジュール内の命令を可能
化または不能化する。
【0062】図11が示す(各々が5つのステージより
成る)重複された反復は、図10が示す重複された反復
に対応している。また、図11には、5パイプラインス
テージ述語レジスタセットP1乃至P5が示されてい
る。これらの述語レジスタP1乃至P5は各々、パイプ
ライン化されたループスケジュール内のパイプラインス
テージ1乃至5に対応しており、述語レジスタ内に格納
された各状態は、ループ実行の間に1つのステージから
次のステージへと変化することができる。これらの述語
レジスタは、プロセッサ1のループ制御ユニット13内
に保持されている。
【0063】ソフトウェアパイプラインスケジュールに
おける各命令は、述語番号でタグ付けされている。これ
は、述語レジスタP1乃至P5のうちの1つに対する識
別子である。例えば図11の例では、パイプラインスケ
ジュールのステージ1乃至5における命令は、述語レジ
スタの識別子P1乃至P5で各々タグ付けされている。
【0064】命令発行ユニット10によって命令が発行
されると、まずは、その命令に対応する述語レジスタの
状態が(当該命令のタグによって同定されるとおりに)
真であるか、偽であるかを決定するように、ループ制御
ユニット13がアクセスされる。対応する述語レジスタ
の状態が偽であれば、命令はNOP命令に自動的に変換
される。対応する述語レジスタの状態が真であれば、命
令は正常であるとして実行される。
【0065】従って、このスキームの場合、パイプライ
ンステージiにおける全ての命令が述語識別子Piによ
ってタグ付けされる。本スキームが適正に機能するため
には、ループ実行の間に、パイプラインステージiが可
能化されなければならないときは常に、述語レジスタP
iの状態がiのあらゆる関連値に関して真でなければな
らないように調整される必要がある。これは、ステージ
を可能化及び不能化してループの実行を制御するための
メカニズムを提供する。
【0066】図11は、各ソフトウェアパイプラインス
テージの述語レジスタ状態がループの実行の間に変化す
る様子を示している。ループの開始に先立って、述語レ
ジスタP1乃至P5の各々は状態0(偽状態)でロード
される。第1の反復の開始前には、状態1(真状態)が
第1の述語レジスタP1にロードされ、これにより各反
復の第1のステージ内に包含される全ての命令が可能化
される。他の述語レジスタP2乃至P5は全て状態0を
保有しており、第2乃至第5のパイプラインステージ内
に包含される命令は、最初のIIサイクルの間は一切実
行されない。
【0067】第2の反復の開始前には、状態1が第2の
述語レジスタP2にもロードされ、これによりループス
ケジュールの第2のステージ内に包含される全ての命令
が可能化される。述語レジスタP1はまだ状態1を有し
ており、第1のステージ内部に包含される命令もまた第
2のIIサイクルの間に実行される。第3乃至第5のパ
イプラインステージ内に包含される命令は何れもいまだ
必要でないため、述語レジスタP3乃至P5は状態0の
ままである。
【0068】プロローグ段階の間、連続する各述語レジ
スタは順次状態1に変えられて各パイプラインステージ
が系統的に可能化され、ついには5つの述語レジスタが
全て状態1を保持し、全てのステージが可能化される。
これにより、全てのパイプラインステージからの命令が
異なる反復において実行されるカーネル段階が始まる。
カーネル段階の間は終始、全ての述語レジスタが状態1
を保有する。
【0069】エピローグ段階の間、パイプラインステー
ジは、ステージ1からステージ5まで系統的に不能化さ
れなければならない。従って、各パイプラインステージ
境界より前に、状態0がP1に始まって各述語レジスタ
P1乃至P5に順次ロードされる。従ってパイプライン
ステージは系統的に不能化され、ループの適正な停止が
保証される。
【0070】図11が示す述語レジスタからは、動的パ
ターンが明らかに見て取れるが、この動的パターンは利
用できる。先に考察された或るスキームは、単純なシフ
トレジスタを利用してシフト述語レジスタファイルを実
行している。当該シフトレジスタにおける各ビットは述
語値の1つを表し、述語値はシフトレジスタファイルに
格納される。
【0071】こうした装置の場合は、各新規反復の開始
に先立って、「1」または「0」が右端のレジスタにシ
フトされる。当初、シフト述語レジスタは値00000
を包含する。次いで、第1の反復より前に1が1つ述語
シフトセットの右端にシフトされ、新規値は00001
となる。これはパイプラインステージ1をオン切換する
が、これらのIIサイクルの間、ステージ2乃至5は不
能化されたままである。このパターンは、ICループ反
復(IC=反復計数)に渡って継続する。この場合、I
Cは7である。ICループが開始されていれば、ループ
はエピローグ段階に入り、ループコントローラは、各反
復に先立ってゼロをシフト述語レジスタファイルにシフ
トし始め、パイプラインステージを正しい順序でオフ切
換していく。
【0072】こうしたスキームはパイプラインステージ
の適度な制御を提供し、その実行は潜在的に簡単であ
る。しかしながら、上記のように、各ソフトウェアパイ
プラインスケジュールにおけるパイプラインステージの
数は、コード構成及び利用可能な資源(同時に発行され
ることが可能な命令の数等)の双方に依存する。従って
これは、実際にどの述語レジスタがパイプラインステー
ジ制御機能に割当てられるかの選定において、ある程度
の柔軟さを要求する。さらに、下記の説明から明らかと
なるように、所定の環境下ではフレキシブルに述語レジ
スタを変化させる、及び/または述語レジスタにアクセ
スする能力を有することが効果的である。
【0073】図12は、本発明の或る実施形態によるプ
ロセッサにおいて使用するためのループ制御ユニット1
3の各部を示すブロック図である。プロセッサは、図1
が示すプロセッサ1であることが可能である。ループ制
御ユニット13は、制御情報部分130と、述語オペレ
ーティング部分132と、述語部分134とを備えてい
る。制御情報部分130は、制御情報の項目を保持する
ための制御情報保持ユニット131を含み、述語オペレ
ーティング部分132はオペレーティングユニット部分
133を含み、述語部分134は述語レジスタファイル
135を含んでいる。述語オペレーティング部分132
は、プロセッサ1の命令発行ユニット10、並びに制御
情報部分130及び述語部分134と連絡している。さ
らに、制御情報部分130は、プロセッサ1のスケジュ
ール記憶ユニット12と連絡している。
【0074】ループが実行される間、実行される各命令
について、命令発行ユニット10はスケジュール記憶ユ
ニット12からの当該命令を検索し、(上記のように)
その命令に付着されている述語レジスタ識別子を精査す
る。次いで命令発行ユニット10は、ループ制御ユニッ
ト13の述語オペレーティング部分132に対し、その
命令が正常であるとして実行されるべきか、自動的にN
OPオペレーションに変換されるべきかを決定するよう
に要求する。次いで述語オペレーティング部分132
は、述語レジスタの現行状態の記録を包含する述語部分
134にアクセスし、関連の述語レジスタ状態の真偽を
決定する。次いで述語オペレーティング部分132は、
この真偽を命令発行ユニット10に戻す。
【0075】この実施形態では、初期設定、シフト、ル
ープの停止及び終了の検出は、制御情報部分130及び
述語オペレーティング部分132が述語部分134にア
クセスして行われる。次に、図13を参照して、制御情
報保持ユニット131及び述語レジスタファイル135
の使用についてより詳細に説明する。述語オペレーティ
ング部分132については、その後に詳述する。
【0076】図13では、制御情報保持ユニット131
は、ループを制御する目的でシフト述語レジスタとして
使用されるn−3(またはこれより少ない)述語レジス
タ(P3乃至Pn−1)のシフトサブセット136を同
定するために使用されるnビットのレジスタ(以後、
「ループマスク」レジスタと称する)で構成されてい
る。ループマスクレジスタ131は、各々述語レジスタ
ファイル135内のn個の述語レジスタに対応するn個
のビット(制御情報の項目)を保持している。
【0077】述語レジスタPiがシフト述語レジスタの
セット136内に包含されるべきものであれば、ループ
マスクレジスタ131内の対応するビットiは値「1」
に設定される。逆に、述語レジスタPiがシフト述語レ
ジスタのセット136内に包含されるべきものでなけれ
ば、ループマスクレジスタ131内の対応するビットi
は値「0」に設定される。典型的には、ループマスクレ
ジスタ131は、ビット3以降の任意の場所で始まる、
最大長n−3であるものによる単一の連続順序を含む。
【0078】例えばP0及びP1である2つの述語レジ
スタは各々、恒久的に2つの可能な状態0及び1に設定
されることが好適である。これらのレジスタは、本明細
書ではプリセットレジスタ139と称される。これは、
例えば特定の命令が常時実行されることが知られている
場合には有益である。こうした命令は、プリセットレジ
スタP1(常時状態「1」を有することで知られる)で
タグ付けされることも可能である。その他、例えばある
特定の述語レジスタを状態0に初期設定する必要がある
状況もある。プリセットレジスタP0を永続的に状態0
に設定すると、この初期設定は、P0から関連の述語レ
ジスタへの単純なコピーによって実行されることが可能
になる。
【0079】本明細書ではシードレジスタ137と称さ
れている1つの追加的な述語レジスタは、ループの開始
及び終了を制御するために使用される。従って、プリセ
ットレジスタ139及びシードレジスタ137がシフト
レジスタセット136内に含まれることはない。本例で
は、残りの述語レジスタ138は、述語レジスタファイ
ルに対して実行されるオペレーションには影響されな
い。
【0080】各命令に付着される述語レジスタの識別子
は、好適には、述語レジスタファイル135内の述語レ
ジスタの1つを直接同定する。例えば、32個の述語レ
ジスタが存在するのであれば、述語レジスタ識別子は、
命令内に含まれる5ビットフィールドの形式を採ること
ができる。
【0081】本例では、ある特定のパイプラインステー
ジにおける全ての命令の識別子は同じであるため、これ
らは全て、対応する述語レジスタ値に従って可能化また
は不能化される。但し、特定のステージ(例えば、if
/then/elseまたは比較命令)に複数の述語レ
ジスタが関係づけられている場合もある。
【0082】図13には、ループマスクレジスタ131
におけるビット(制御情報の項目)と述語レジスタファ
イル135における述語レジスタとの関係が示されてい
る。本例では、ループマスクレジスタ131のビット1
4乃至25は1に設定され、他のビットは全て0に設定
されている。
【0083】また制御情報部分130は、ループマスク
レジスタ131における制御情報の項目を初期設定する
ために使用される回路(図示されていない)を含んでい
る。この初期設定は、プロセッサ1のスケジュール記憶
ユニット12から取得される情報に依存して実行され
る。こうした情報には、例えばパイプラインステージの
数(従って、ループ制御に必要とされる述語の数も)が
含まれる。
【0084】述語レジスタP0乃至Pn−1は、ループ
実行の間に、(ループマスクレジスタ131内の制御情
報の項目にアクセスすることにより)制御情報部分13
0から供給される情報に依存して、述語オペレーティン
グ部分132により、予め決められた方法で初期設定さ
れ、かつ変更される。次に、述語レジスタファイル13
5へのこれらの更新について、より詳細に説明する。
【0085】連続する各ループ反復の開始に先立って、
シフトサブセットの各述語レジスタの内容がその直ぐ右
手の述語レジスタの内容の受容体であるようなシフトオ
ペレーションが実行される。シフトサブセットの直ぐ右
手の述語レジスタ(図13におけるP13)は、シード
レジスタ137である。従って、各シフトオペレーショ
ンにおいては、シフトレジスタサブセット136の最初
の述語レジスタ(P14)の内容は、シードレジスタ
(「シード」)の内容に設定される。
【0086】例えば、図11を参照すると、ループ実行
のプロローグ段階及びカーネル段階の間、シードレジス
タ137は状態「1」にプリセットされるが、エピロー
グ段階の間、シードレジスタ137は状態「0」にプリ
セットされ、ループ停止が実行される。シフトが発生す
る際には、シードは右端のレジスタ(P14)へとコピ
ーされるが、シード自体は変わらないままである。
【0087】ループの順序付けの間に述語レジスタファ
イル135上で行われる4つの主要なオペレーション
は、初期設定、シフト、停止及び終了の検出である。プ
ロセッサ1は、適正な時点でこれらのオペレーションの
各々を行わせる。オペレーションは各々、ループマスク
レジスタ131における制御情報の項目に依存して、述
語レジスタファイル135の内容を固有の方法で修正す
る。
【0088】この実施形態では、上記のオペレーション
は、述語オペレーティング部分132内のオペレーティ
ングユニット部分133によって実行される。次に、図
14乃至16を参照してオペレーティングユニット部分
133について説明する。
【0089】図14は、図12のオペレーティングユニ
ット部分133をより詳細に示したブロック図である。
オペレーティングユニット部分133は、各々図13に
おける上記の述語レジスタP2乃至Pn−1に対応す
る、複数の個々のオペレーティングユニットOU2乃至
OUn-1を含んでいる。各オペレーティングユニット
は、状態決定ユニット300を含んでいる。各オペレー
ティングユニットOUiは、制御情報保持ユニット(ル
ープマスクレジスタ)からそのユニット独自の対応述語
レジスタPiに対応する制御情報の項目Liを受信するた
めに接続された第1の制御入力C1(i)を有してい
る。各オペレーティングユニットOUiは、制御情報保
持ユニット(ループマスクレジスタ)から、この実施形
態ではそのユニット固有の対応述語レジスタPiの直後
の述語レジスタPi+1に対応する項目Li+1である制御情
報のさらなる項目を受信するために接続された第2の制
御入力C2(i)を有している。
【0090】各オペレーティングユニットはまた、各々
が述語レジスタのうちの予め決められた1つの状態(内
容)を指示する状態情報の項目Pを受信するために述語
レジスタファイル135に接続されている、1つまたは
複数の状態入力を有している。この実施形態では、各オ
ペレーティングユニットOUiは、そのユニット固有の
対応する述語レジスタPiに関する状態情報項目を受信
する第1の状態入力S1(i)と、当該ユニット固有の
対応する述語レジスタPiの直前の述語レジスタPi-1に
関する状態情報項目を受信する第2の状態入力S2
(i)とを有している。
【0091】状態決定ユニット300は状態決定オペレ
ーションを実行し、受信された制御情報項目及び1つま
たは複数の受信された状態情報項目に依存してその固有
の対応する述語レジスタPiが決定される。決定された
新たな状態Pi’は、出力Pout(i)において利用
可能にされる。オペレーティングユニットOU2乃至O
n-1は、互いに並行作動して個々のこうした状態決定
オペレーションを実行することが好適である。
【0092】各オペレーティングユニットは、複数の状
態決定オペレーションを実行するように作動することが
可能である。これは、各々が異なる状態決定オペレーシ
ョンを実行する能力のある複数のこうした状態決定ユニ
ット300を有する各オペレーティングユニットによっ
て達成され得る。代替として、各オペレーティングユニ
ットには、複数の状態決定オペレーションを選択的に実
行するように作動することが可能な状態決定ユニット3
00を供給される場合がある。こうした場合、オペレー
ティングユニットには、オペレーティングユニットによ
って実行される状態決定オペレーションの種類の決定に
使用される1つまたは複数の選択信号を受信する選択入
力SEL(i)を供給されることが好適である。
【0093】この実施形態では、選択されることが可能
な状態決定オペレーションには、上記の初期設定、シフ
ト及び停止の各オペレーション[I,S,D]が含まれ
る。この実施形態においては、完了検出オペレーション
は、何れの述語レジスタの状態の決定にも関わらないた
めに、利用可能な状態決定オペレーションの1つとはな
らない。但し他の実施形態では、所望されれば、オペレ
ーティングユニットは、完了検出オペレーションを実行
するように設計されることが可能である。
【0094】状態決定ユニット300の1つの可能な実
施形態について説明する前に、ここで、図13に関連し
て先に説明したループマスクレジスタ131及び述語レ
ジスタファイル135を参照しながら上記の4つのオペ
レーションについて順次説明する。
【0095】ソフトウェアパイプラインループの開始に
先立つ述語レジスタファイル135の初期設定は、擬似
コードで表示された以下の論理オペレーションを実行す
ることによって達成されることが可能である。 2からn−1までの全てのiについて:
【0096】これらの論理オペレーションは、述語レジ
スタファイル137のシフトレジスタサブセット136
内の各述語レジスタを状態0にリセットさせる(これら
のレジスタの場合、 であるため)。シードレジスタ以外の他の述語レジスタ
は全て、影響を受けない シードレジスタ137は、まだ状態1に設定されていな
ければ、状態1に設定される(Li=0かつLi+1=1で
あり、よってPi’=1であるため)。シードレジスタ
137が状態1に設定されてループ開始の準備が整う
と、1はシフトレジスタサブセット136へとその右端
から順次シフトするように要求される。
【0097】各反復の開始に先立って、シフトレジスタ
サブセット136内の述語レジスタの状態は、1レジス
タだけ左にシフトされなければならない。これは、対応
するループマスクビットLiが設定される全ての述語レ
ジスタPiに関する、Pi-1からPiへの選択的なコピー
を含んでいる。これは、以下の擬似コードによって表す
ことができる。 2からn−1までの全てのiについて:
【0098】第1のブラケット対内に含まれる論理式
(Li及びPi)は単に、Liに格納された値が値0であ
ればPiの現存状態を保持させる。第2のブラケット対
内に含まれる論理式(Li及びPi-1)は、Liに格納さ
れた値が値1であれば(即ち、レジスタPiがシフトレ
ジスタサブセット136内に含まれていれば)Pi-1
格納された状態をPiへとコピーさせる。こうして、図
13が示す例の場合には、シードレジスタP13及びシ
フトレジスタP14乃至P24に格納された各状態は、
1レジスタだけ左にシフトされる。シードレジスタ13
7の状態はそのままにされ、シフトレジスタサブセット
の左端におけるレジスタP25の現存状態は廃棄(重ね
書き)される。述語レジスタP26の状態は、変わらな
い。
【0099】ループの停止を開始するためには、シード
レジスタ137がまずクリアされなければならない。シ
ードレジスタ137の位置は、Liが0でありかつLi+1
が1であるループマスクレジスタ131の連続ビット対
を位置づけるために、ループマスクレジスタ131内の
ビットパターンを観察することにより決定されることが
可能である。シードレジスタをクリアするこのアクショ
ンは、以下の擬似コードで表すことができる。 2からn−1までの全てのiについて:
【0100】上記の3つの状態決定オペレーションに加
えて、特定の述語レジスタを1つまたは複数の論理結果
を生み出す比較オペレーションのための目標レジスタと
して的にすることができれば好適である。故に、個々の
述語レジスタに状態0または状態1を設定するためのフ
ァシリティも、さらなる状態決定オペレーション(書込
みオペレーション)を供給するものとして望ましい。こ
れは、各オペレーティングユニットOUiにデータ信号
Vを受信するためのデータ入力DATA(i)を供給す
ることと、(1つまたは複数の)選択入力SEL(i)
に印加されるさらなる(書込み可能な)選択信号Wを使
用することによって達成可能である。
【0101】上記の4つの状態決定オペレーションより
成るセット全体を実行するための回路は、各オペレーテ
ィングユニットOU内で状態決定ユニット300として
使用するための有限状態機械を生み出す標準論理設計技
術を使用して実施されることが可能である。Piの次の
状態の計算に対する入力は、4つの利用可能な状態決定
オペレーションから1つを選択するための選択信号セッ
トI、S、D、Wと、2つの制御情報項目Li及びLi+1
と、述語レジスタPi及びPi-1の現存状態を指示する2
つの状態情報項目Li及びLi+1と、データ信号Dとであ
る。この状態決定ユニットの論理の複雑さは、3ステー
ジの論理ゲートと同程度の低位であることが可能であ
る。
【0102】図15には、本実施形態における状態決定
ユニット300の1つの実施例が示されている。状態決
定回路300は、6つのインバータ(NOTゲート)3
10 1乃至3106と、7つのANDゲート3201乃至
3207と、1つのORゲート330とを備えている。
【0103】第1のインバータ3101は、その入力で
停止選択信号Dを受信し、その出力は第2のANDゲー
ト3202の1つの入力に接続されている。第2のイン
バータ3102は、その入力で制御情報項目Liを受信
し、その出力は第1、第2、第5及び第6のANDゲー
ト3201、3202、3205及び3206の各々の入力
に接続されている。第3のインバータ3103は、その
入力で初期設定選択信号Iを受信し、その出力は第3及
び第4のANDゲート3203及び3204双方の各入力
に接続されている。第4のインバータ3104は、その
入力で制御情報項目Li+1を受信し、その出力は第1の
ANDゲート3201の1つの入力に接続されている。
第5のインバータ3105は、その入力でシフト選択信
号Sを受信し、その出力は第3のANDゲート3203
の1つの入力に接続されている。第6のインバータ31
6は、その入力で選択信号Wを受信し、その出力は第
1乃至第6のANDゲート3201乃至3206の各々の
入力に接続されている。
【0104】インバータ3101乃至3106から受信さ
れる上記の入力に加えて、ANDゲート3201乃至3
207はさらに、以下のような入力を受信する。第1、
第2、第3及び第6のANDゲート3201、3202
3203及び3206は各々、状態情報項目Piをさらな
る入力として受信する。第3のANDゲート320
3は、制御情報項目Liをさらなる入力として受信する。
第4のANDゲート3204は、状態情報項目Pi-1と、
制御情報項目Liと、選択信号Wとをさらなる入力とし
て受信する。第5のANDゲート3205は、選択信号
Iを入力として受信し、かつ制御情報項目Li+1をさら
なる入力として受信する。第6のANDゲート3206
は、選択信号Sをさらなる入力として受信する。第7の
ANDゲート3207は、データ信号V及び書込み選択
信号Wの双方を入力として受信する。
【0105】7つのANDゲート3201乃至3207
個々の出力は、全てORゲート330の個々の入力に接
続されている。述語レジスタPiの新たな状態Pi’は、
ORゲート330の出力で取得される。
【0106】次に、図15の状態決定回路のオペレーシ
ョンについて説明する。上記のように本回路は、4つの
オペレーション、即ち初期設定、シフト、停止及び書込
みを実行するように機能する。
【0107】図16が示すように、書込みオペレーショ
ンが実行される際には、選択信号(書込み可能化信号)
Wは値1に設定され、データ信号Vは述語レジスタPi
に書き込まれる予定の状態に設定される。図16が示す
図解では、他の3つの選択信号D、I及びSは各々値0
に設定されている。但し実際には、これらが接続されて
いるANDゲートは、それらの各々が第6のインバータ
3106を介して入力W=0を受信していて何れにせよ
不能化されているため、これらは任意の値をとることが
できる。第7のANDゲート3207の出力はデータ信
号Vに一致しており、よってORゲート330から出力
される新たな状態Pi’はデータ信号Vである。述語レ
ジスタPiのこの新たな状態Pi’は、次いで述語部分1
34内の回路(図示されていない)によって、述語レジ
スタファイル135内に含まれるその述語レジスタにロ
ードされる。
【0108】ちなみに、図15においては各オペレーテ
ィングユニットOUはその固有の独立した書込み選択信
号W及びその固有の独立したデータ信号Vを受信してい
るが、代替として信号W及びVの一方または双方を全て
のオペレーティングユニットに共通して供給することも
可能である点は認識されるであろう。
【0109】図17が示すように、初期設定オペレーシ
ョンが実行される際には、初期設定選択信号Iは値1に
設定され、他の3つの選択信号D、S及びWは各々値0
に設定される。従って、([A AND B] OR
A)≡Aであることから、ORゲート330の出力
i’は、下記の式によって与えられる。 i’のこの式は、初期設定オペレーションに関連する
先の説明で与えられたものと同じである。
【0110】図18が示すように、シフトオペレーショ
ンが実行される際には、シフト選択信号Sは値1に設定
され、他の3つの選択信号D、I及びWは各々値0に設
定される。従って、ORゲート330の出力Pi’は、
下記の式によって与えられることが分かる。 i’のこの式は、シフトオペレーションに関連する先
の説明で与えられたものと同じである。
【0111】図19が示すように、停止オペレーション
が実行される際には、停止選択信号Dは値1に設定さ
れ、他の3つの選択信号I、S及びWは各々値0に設定
される。従って、([A AND B] OR B)≡
(A OR B)であることから、ORゲート330の
出力Pi’は、下記の式によって与えられることが分か
る。 i’のこの式は、停止オペレーションに関連する先の
説明で与えられたものと同じである。
【0112】エピローグ段階の終端は、各述語レジスタ
の状態Piと関連述語レジスタに対応する制御情報項目
iの値とのANDオペレーション、即ちループマスク
レジスタ131と述語レジスタファイル135との1ビ
ットワイズANDを実行することによって検出されるこ
とが可能である。ANDオペレーションの結果の最終的
なコレクションが全て偽であれば、ループは終了してい
る。この試験は、以下の擬似コードで表すことができ
る。 2からn−1までの全てのiについて:
【0113】この手順の後に の値が0であれば、エピローグ段階の終端が検出されて
いる。
【0114】各オペレーティングユニットOUiには、
その対応する述語レジスタに関するANDオペレーショ
ンを実行するための完了検出回路(例えば、入力として
i、Li及び完了検出オペレーションの選択に使用され
るさらなる選択信号を受信する3入力ANDゲート)を
供給することもできる。次に個々のANDオペレーショ
ン結果は、 信号を生成するさらなる完了検出回路(n入力NORゲ
ート等)に出力される。
【0115】本実施形態のオペレーティングユニットに
は複数の異なる種類の状態決定オペレーションを実行す
る能力があるが、これは本発明に不可欠な特徴ではな
い。同様に、状態決定オペレーションが上記の特定のオ
ペレーション(初期設定、シフト、停止及び書込み)で
あることも不可欠ではない。オペレーティングユニット
は、任意の適正な状態決定オペレーションを互いに並行
して実行するように設計されることが可能である。ま
た、対応する述語レジスタがシフトサブセットに属する
か否かの表示に制御情報項目が使用されることも不可欠
ではない。制御情報項目は、述語レジスタ間のおおまか
な区別のような任意の適正な目的のために使用されるこ
とが可能である。
【0116】制御情報項目は、2進値である0及び1に
限定されない。各項目は記号であることも、2以上のビ
ットを有する場合もあり、よって各項目で3つ以上の値
が表示されることも可能である。
【0117】上記の実施形態では、複数の個々のオペレ
ーティングユニットが互いに並行して各々の状態決定オ
ペレーションを実行する能力を有することは認識される
であろう。本発明の他の態様においては、互いに並行し
て作動するオペレーティングユニットは不可欠の特徴で
はない。この本発明の他の態様においては、制御情報項
目を使用して述語レジスタファイルの1つまたは複数の
述語レジスタが個々のシフトレジスタとして指定され
る。従って、シフトオペレーションでは、こうしたシフ
トレジスタとして指定された各述語レジスタに関して、
先行するレジスタの状態が関連のレジスタへと移行さ
れ、こうしたシフトレジスタとして指定されないレジス
タの何れにも、こうした移行は実行されない。この場
合、シフトオペレーションが互いに並行して作動するオ
ペレーティングユニットによって実行される必要はな
い。シフトオペレーションは、指定されたシフトレジス
タに関して順次実行されることが可能である。
【0118】本発明のこの態様を具現する回路もまた、
例えば初期設定、停止及び書込みオペレーションといっ
た上記の他の種類のオペレーションを実行する能力を有
する場合があるが、これは不可欠ではない。こうしたオ
ペレーションが利用可能であるとしても、やはり異なる
オペレーティングユニットによって並行して実行される
必要はない。例えば停止オペレーションでは、ループマ
スクレジスタ131における制御情報の項目を順次精査
して、シードレジスタの位置を発見することが可能であ
る。
【0119】さらに、本発明のこの態様においては、ル
ープマスクレジスタを何らかの他の装置に代えて、述語
レジスタファイルのどの述語レジスタがシフトレジスタ
になるかをフレキシブルに指定することができる。例え
ば、この指定回路は1対の制御レジスタであることが可
能であり、一方はシフトレジスタとして指定される第1
の述語レジスタ(図13のP14等)の位置を指示し、
本対の他の制御レジスタはこうして指定された最後のレ
ジスタ(P25)を指定する。代替として、最後のレジ
スタを指示せず、代わりにシフトサブセット内のレジス
タの数が格納されることも可能であり、他の変形例も可
能である。
【0120】上記の説明は、ソフトウェアパイプライン
を実行可能なVLIWプロセッサに関する例示的なもの
であるが、本発明がこうした機能を保有しないプロセッ
サにも適用可能であることは認識されるであろう。本発
明を具現するプロセッサは、マルチメディア用途、ネッ
トワークルータ、画像携帯電話、インテリジェント自動
車、ディジタルテレビ、音声認識、3Dゲーム他で使用
される高度に統合された「システム・オン・ア・チッ
プ」(SOC)において、プロセッサ「コア」として包
含されることが可能である。
【図面の簡単な説明】
【図1】 本発明を具現するプロセッサの各部分を示し
た図である。
【図2】 単一の命令ループのデータフローを記号で例
示したグラフである。
【図3】 図2の記号データフローグラフに対応する内
部コンパイラの三層構造を表示した図である。
【図4】 モジューロスケジューリング制約に準じる命
令スケジュールを示した表である。
【図5】 統計的かつ動的にアドレス指定された領域を
含むレジスタファイルの例を示した図である。
【図6】 (a)、(b)は、それぞれ、あるループの
幾つかの反復の仮想、論理及び物理的レジスタ番号間の
関係を示す表である。
【図7】 或るループの幾つかの反復のコンパイルされ
た命令シーケンスの一例を示している図である。
【図8】 物理的レジスタに対する論理レジスタの実行
時間をマッピングした後の図7のシーケンス例を示した
図である。
【図9】 発行スロット別に分けられた図7のシーケン
ス例を示した図である。
【図10】 或るソフトウェアパイプラインループの異
なる位相を示した略図である。
【図11】 図10のループの叙述された制御を示した
図である。
【図12】 図1のループ制御ユニットの構造の1つの
可能性を示す、より詳細なブロック図である。
【図13】 制御情報保持ユニットと述語レジスタファ
イルの構造の1つの可能性を示した図である。
【図14】 図13のオペレーティングユニット部分を
示す、より詳細なブロック図である。
【図15】 図14の状態決定ユニットの実行の1つの
可能性を示した図である。
【図16】 書込みオペレーションを実行する図15の
状態決定回路を示した図である。
【図17】 初期設定オペレーションを実行する図15
の状態決定回路を示した図である。
【図18】 シフトオペレーションを実行する図15の
状態決定回路を示した図である。
【図19】 停止オペレーションを実行する図15の状
態決定回路を示した図である。
【符号の説明】
1…プロセッサ1、10…命令発行ユニット、12…ス
ケジュール記憶ユニット、13…ループ制御ユニット、
14…第1実行ユニット、16…第2実行ユニット、1
8…第3実行ユニット、20…レジスタファイル、22
…第1のバス、24…第2のバス、26…メモリ。

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 述語ベースの命令を実行するように機能
    することが可能なプロセッサであって、 各々が少なくとも個々の第1及び第2の状態間で切換可
    能であり、かつ各々が1つまたは複数の叙述された実行
    命令に割当て可能である一連の述語レジスタと、 上記一連における上記述語レジスタに個々に対応する制
    御情報の項目を保持するための制御情報保持手段と、 上記述語レジスタに個々に対応する複数のオペレーティ
    ングユニットとを備え、各ユニットは、そのユニット独
    自の対応述語レジスタに対応する制御情報項目を受信す
    るために上記制御情報保持手段に接続された第1の制御
    入力を有し、かつさらに他の上記述語レジスタの1つに
    対応する制御情報項目を受信するために接続された第2
    の制御入力を有し、かつ受信された制御情報項目に依存
    してその上記独自の述語レジスタの上記状態が決定され
    る状態決定オペレーションを実行するように作動するこ
    とが可能であり、上記複数のオペレーティングユニット
    は、個々のこうした状態決定オペレーションを実行する
    ように互いに並行して作動することができるプロセッ
    サ。
  2. 【請求項2】 上記一連の最終の述語レジスタ以外の各
    上記述語レジスタの場合、上記述語レジスタのさらなる
    1つは上記一連における上記独自の述語レジスタに続く
    レジスタである請求項1に記載のプロセッサ。
  3. 【請求項3】 各上記オペレーティングユニットはま
    た、上記一連の上記述語レジスタのうちの予め決められ
    た1つの上記状態を指示する状態情報の項目を受信する
    ために接続された少なくとも1つの状態入力を有し、か
    つ上記状態情報項目にも依存してその上記独自の述語レ
    ジスタの状態を設定するように機能することが可能な請
    求項1または2に記載のプロセッサ。
  4. 【請求項4】 各上記オペレーティングユニットの場
    合、上記状態情報項目はユニットの上記独自の述語レジ
    スタの上記状態を指示する請求項3に記載のプロセッ
    サ。
  5. 【請求項5】 各上記オペレーティングユニットは、上
    記述語レジスタの異なる2つの状態の各々を示すこうし
    た状態情報項目を個々に受信するために接続された第1
    及び第2のこうした各状態入力を有し、かつ上記状態情
    報項目にも依存してその上記独自の述語レジスタの状態
    を設定するように機能することが可能な請求項3または
    4に記載のプロセッサ。
  6. 【請求項6】 各上記オペレーティングユニットの場
    合、上記2つの述語レジスタは、ユニットの上記独自の
    述語レジスタと、上記一連において上記独自の述語レジ
    スタに先行する述語レジスタとである請求項5に記載の
    プロセッサ。
  7. 【請求項7】 制御情報の項目はプロセッサの使用中に
    変更可能である先行する任意の請求項に記載のプロセッ
    サ。
  8. 【請求項8】 各上記オペレーティングユニットは、複
    数の異なるこうした状態決定オペレーションのうちの任
    意の1つを実行するように選択的に機能することが可能
    である先行する任意の請求項に記載のプロセッサ。
  9. 【請求項9】 各上記オペレーティングユニットは、1
    つまたは複数の選択信号を受信するための選択入力を有
    し、オペレーティングユニットによって実行される予定
    の上記状態決定オペレーションは、上記選択入力に印加
    される上記1つまたは複数の選択信号によって選択され
    る請求項8に記載のプロセッサ。
  10. 【請求項10】 各上記制御情報項目は、少なくとも第
    1の値と第2の値との間で変更可能である先行する任意
    の請求項に記載のプロセッサ。
  11. 【請求項11】 上記状態決定オペレーションまたは上
    記複数の状態決定オペレーションの1つは、その述語レ
    ジスタに対応する制御情報項目が上記第1の値を有する
    場合に、各オペレーティングユニットがその独自の述語
    レジスタを上記第2の状態に設定する初期設定オペレー
    ションである請求項10に記載のプロセッサ。
  12. 【請求項12】 上記初期設定オペレーションにおい
    て、各上記オペレーティングユニットは、その述語レジ
    スタに対応する制御情報項目が上記第2の値を有する場
    合、かつ上記一連において上記独自の述語レジスタに続
    く述語レジスタに対応する上記制御情報項目が上記第1
    の値を有する場合に、その上記独自の述語レジスタを上
    記第1の状態に設定する請求項11に記載のプロセッ
    サ。
  13. 【請求項13】 上記状態決定オペレーションまたは上
    記複数の状態決定オペレーションの1つは、各指定され
    た1つのオペレーティングユニットが上記一連において
    上記独自の述語レジスタに先行する述語レジスタの上記
    状態に依存してその独自の述語レジスタの上記状態を設
    定するシフトオペレーションである請求項10乃至12
    の何れかに記載されたプロセッサ。
  14. 【請求項14】 各オペレーティングユニットは、ユニ
    ットの上記独自の述語レジスタに対応する上記制御情報
    項目が上記第1の値を有する場合に、上記シフトオペレ
    ーションにおいて指定される請求項13に記載のプロセ
    ッサ。
  15. 【請求項15】 上記状態決定オペレーションまたは上
    記複数の状態決定オペレーションの1つは、その述語レ
    ジスタに対応する制御情報項目が上記第2の値を有する
    場合、かつ上記一連において上記独自の述語レジスタに
    続く述語レジスタに対応する制御情報項目が上記第1の
    値を有する場合に、各オペレーティングユニットがその
    上記独自の述語レジスタを上記第2の状態に設定する停
    止オペレーションである請求項10乃至14の何れかに
    記載されたプロセッサ。
  16. 【請求項16】 上記状態決定オペレーションまたは上
    記複数の状態決定オペレーションの1つは、各指定され
    た1つのオペレーティングユニットが、その上記独自の
    述語レジスタを上記第1及び第2の状態のうちの選定さ
    れた一方に設定する書込みオペレーションである請求項
    10乃至15の何れかに記載されたプロセッサ。
  17. 【請求項17】 各オペレーティングユニットは、上記
    選定された状態を指示するデータ信号を受信するための
    データ入力を有する請求項16に記載のプロセッサ。
  18. 【請求項18】 その対応する制御情報項目が上記第1
    の値を有する全ての述語レジスタに関しては、述語レジ
    スタが上記第2の状態を有していれば、予め決められた
    プロセッサのオペレーションは完了されていると決定す
    るように機能することが可能である完了検出手段をさら
    に含む請求項10乃至17の何れかに記載されたプロセ
    ッサ。
  19. 【請求項19】 上記完了検出手段は、複数の個々の完
    了検出回路を備え、各オペレーティングユニットは上記
    複数の上記完了検出手段の1つを含み、各上記完了検出
    回路は、そのユニットの上記独自の対応する述語レジス
    タの上記状態及びその述語レジスタに対応する上記制御
    情報項目を基礎として、その特定のオペレーティングユ
    ニットに関する検出結果を生成するように機能すること
    が可能な請求項18に記載のプロセッサ。
  20. 【請求項20】 各上記オペレーティングユニットは、
    上記状態決定オペレーションまたは各上記状態決定オペ
    レーションを実行するための組み合わせ論理回路を含む
    先行する任意の請求項に記載のプロセッサ。
  21. 【請求項21】 述語ベースの命令を実行するように機
    能することが可能なプロセッサであって、 各々が少なくとも個々の第1及び第2の状態間で切換可
    能であり、かつ各々が1つまたは複数の叙述された実行
    命令に割当て可能である一連の述語レジスタと、 上記一連における1つまたは複数の述語レジスタを個々
    のシフトレジスタとして指定するためのシフトレジスタ
    指定手段と、 シフトレジスタ指定手段によってこうしたシフトレジス
    タとして指定された述語レジスタまたは各述語レジスタ
    に関しては、上記一連における先行レジスタの状態が関
    連のレジスタへと移行されるシフトオペレーションを実
    行するための、上記述語レジスタに接続されたシフト手
    段とを含み、こうした移行は、こうしたシフトレジスタ
    として指定されていない上記一連における任意のレジス
    タへは実行されないプロセッサ。
  22. 【請求項22】 上記シフトレジスタ指定手段は、プロ
    セッサの使用中に、上記一連の上記述語レジスタに個々
    に対応する指定情報の項目を保持するように機能し、こ
    うした項目は各々、対応する述語レジスタが上記シフト
    レジスタの1つであるか否かを指示する請求項21に記
    載のプロセッサ。
  23. 【請求項23】 上記指定情報項目は、プロセッサの使
    用中に変更可能である請求項22に記載のプロセッサ。
JP2001172447A 2000-06-13 2001-06-07 プロセッサにおける命令の叙述された実行 Pending JP2002024011A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0014432 2000-06-13
GB0014432A GB2363480B (en) 2000-06-13 2000-06-13 Predicated execution of instructions in processors

Publications (1)

Publication Number Publication Date
JP2002024011A true JP2002024011A (ja) 2002-01-25

Family

ID=9893558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001172447A Pending JP2002024011A (ja) 2000-06-13 2001-06-07 プロセッサにおける命令の叙述された実行

Country Status (5)

Country Link
US (1) US6944853B2 (ja)
EP (1) EP1164471A3 (ja)
JP (1) JP2002024011A (ja)
CN (1) CN1329303A (ja)
GB (2) GB2363480B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380112B2 (en) 2003-03-24 2008-05-27 Matsushita Electric Industrial Co., Ltd. Processor and compiler for decoding an instruction and executing the decoded instruction with conditional execution flags
JP2011526045A (ja) * 2008-06-27 2011-09-29 クゥアルコム・インコーポレイテッド ループ制御システムおよび方法
CN104412233A (zh) * 2013-05-30 2015-03-11 英特尔公司 流水线调度中混叠寄存器的分配
JP2016519375A (ja) * 2013-05-30 2016-06-30 インテル コーポレイション パイプラインソフトウェアの動的な最適化

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069545B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Quantization and compression for computation reuse
EP1552411A2 (en) * 2002-10-08 2005-07-13 Koninklijke Philips Electronics N.V. Integrated circuit and method for exchanging data
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US20040210886A1 (en) * 2003-04-15 2004-10-21 Sverre Jarp Optimized switch statement code employing predicates
US7496732B2 (en) * 2003-12-17 2009-02-24 Intel Corporation Method and apparatus for results speculation under run-ahead execution
US20050147036A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Method and apparatus for enabling an adaptive replay loop in a processor
US7143270B1 (en) 2004-01-30 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for adding an instruction to an instruction set architecture
JP4784912B2 (ja) * 2004-03-02 2011-10-05 パナソニック株式会社 情報処理装置
US7673294B2 (en) * 2005-01-18 2010-03-02 Texas Instruments Incorporated Mechanism for pipelining loops with irregular loop control
CN100520714C (zh) 2005-01-25 2009-07-29 Nxp股份有限公司 多线程处理器
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US8561026B2 (en) * 2007-11-27 2013-10-15 International Business Machines Corporation Method, apparatus and computer program for facilitating the improvement of a user interface
US9262140B2 (en) * 2008-05-19 2016-02-16 International Business Machines Corporation Predication supporting code generation by indicating path associations of symmetrically placed write instructions
KR101645001B1 (ko) 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
US8769500B2 (en) * 2010-10-29 2014-07-01 Fujitsu Limited Node computation initialization technique for efficient parallelization of software analysis in a distributed computing environment
US9465613B2 (en) 2011-12-19 2016-10-11 International Business Machines Corporation Instruction predication using unused datapath facilities
US9632779B2 (en) 2011-12-19 2017-04-25 International Business Machines Corporation Instruction predication using instruction filtering
US9244677B2 (en) 2012-09-28 2016-01-26 Intel Corporation Loop vectorization methods and apparatus
US9304771B2 (en) 2013-02-13 2016-04-05 International Business Machines Corporation Indirect instruction predication
EP2972781A4 (en) * 2013-03-15 2016-10-19 Intel Corp METHOD AND SYSTEMS FOR VECTORIZING SCALAR COMPUTER PROGRAM GRINDINGS WITH GRINDING DEPENDENCIES
KR20140122564A (ko) * 2013-04-10 2014-10-20 삼성전자주식회사 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
US10579378B2 (en) * 2014-03-27 2020-03-03 Intel Corporation Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
WO2015179865A1 (en) * 2014-05-23 2015-11-26 The George Washington University System and method for uncovering covert timing channels
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
US5958048A (en) * 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
US5826070A (en) * 1996-08-30 1998-10-20 International Business Machines Corporation Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US6286135B1 (en) * 1997-03-26 2001-09-04 Hewlett-Packard Company Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
US6338137B1 (en) * 1998-05-29 2002-01-08 Texas Instruments Incorporated Data processor having memory access unit with predetermined number of instruction cycles between activation and initial data transfer
US6301705B1 (en) * 1998-10-01 2001-10-09 Institute For The Development Of Emerging Architectures, L.L.C. System and method for deferring exceptions generated during speculative execution
US6772106B1 (en) * 1999-08-20 2004-08-03 Hewlett-Packard Development Company, L.P. Retargetable computer design system
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6505345B1 (en) * 2000-01-18 2003-01-07 Intel Corporation Optimization of initialization of parallel compare predicates in a computer system
US6721875B1 (en) * 2000-02-22 2004-04-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form
US6637026B1 (en) * 2000-03-01 2003-10-21 Intel Corporation Instruction reducing predicate copy
US6658471B1 (en) * 2000-06-29 2003-12-02 International Business Machines Corporation Method and system for zero overhead software performance measurement instrumentation

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380112B2 (en) 2003-03-24 2008-05-27 Matsushita Electric Industrial Co., Ltd. Processor and compiler for decoding an instruction and executing the decoded instruction with conditional execution flags
JP2011526045A (ja) * 2008-06-27 2011-09-29 クゥアルコム・インコーポレイテッド ループ制御システムおよび方法
JP2016157463A (ja) * 2008-06-27 2016-09-01 クゥアルコム・インコーポレイテッドQualcomm Incorporated ループ制御システムおよび方法
CN104412233A (zh) * 2013-05-30 2015-03-11 英特尔公司 流水线调度中混叠寄存器的分配
JP2015520905A (ja) * 2013-05-30 2015-07-23 インテル・コーポレーション パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て
JP2016519375A (ja) * 2013-05-30 2016-06-30 インテル コーポレイション パイプラインソフトウェアの動的な最適化
CN104412233B (zh) * 2013-05-30 2019-05-14 英特尔公司 流水线调度中混叠寄存器的分配

Also Published As

Publication number Publication date
GB2367406B (en) 2002-06-05
EP1164471A3 (en) 2004-06-16
GB2363480A (en) 2001-12-19
GB0130781D0 (en) 2002-02-06
EP1164471A2 (en) 2001-12-19
CN1329303A (zh) 2002-01-02
US6944853B2 (en) 2005-09-13
GB2363480B (en) 2002-05-08
GB0014432D0 (en) 2000-08-09
GB2367406A (en) 2002-04-03
US20020091996A1 (en) 2002-07-11

Similar Documents

Publication Publication Date Title
JP2002024011A (ja) プロセッサにおける命令の叙述された実行
JP3442225B2 (ja) 演算処理装置
US5710902A (en) Instruction dependency chain indentifier
US6954845B2 (en) Reconfigurable instruction set computing
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
US6219775B1 (en) Massively parallel computer including auxiliary vector processor
JP4130654B2 (ja) 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置
US20040154006A1 (en) Compiler apparatus and compilation method
JP2006509306A (ja) 関係アプリケーションへのデータ処理システム相互参照用セルエンジン
US7512771B2 (en) Mapping circuitry and method comprising first and second candidate output value producing units, an in-range value determining unit, and an output value selection unit
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
US5890009A (en) VLIW architecture and method for expanding a parcel
JP2002251282A (ja) プロセッサにおけるループの処理
US7577824B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
JP7383390B2 (ja) 情報処理ユニット、情報処理装置、情報処理方法及びプログラム
JP3737573B2 (ja) Vliwプロセッサ
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
JPH0451328A (ja) 複合型命令スケジューリング処理装置
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JPH08263289A (ja) 複数命令流パイプライン計算機
JP3743155B2 (ja) パイプライン制御型計算機
JPH0442327A (ja) 先行制御装置
JP2002312178A (ja) メモリアクセス最適化方法