JPH1097423A - ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ - Google Patents

ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ

Info

Publication number
JPH1097423A
JPH1097423A JP8249594A JP24959496A JPH1097423A JP H1097423 A JPH1097423 A JP H1097423A JP 8249594 A JP8249594 A JP 8249594A JP 24959496 A JP24959496 A JP 24959496A JP H1097423 A JPH1097423 A JP H1097423A
Authority
JP
Japan
Prior art keywords
pointer
register
instruction
logical register
logical
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
JP8249594A
Other languages
English (en)
Inventor
Yuji Tsushima
雄次 對馬
Giichi Tanaka
義一 田中
Yoshiko Tamaoki
由子 玉置
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP8249594A priority Critical patent/JPH1097423A/ja
Priority to US08/934,061 priority patent/US5872989A/en
Publication of JPH1097423A publication Critical patent/JPH1097423A/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7828Architectures of general purpose stored program computers comprising a single central processing unit without memory
    • G06F15/7832Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 小さい命令フィールドによる大容量レジスタ
ファイルを扱い、命令レベル並列処理を有効利用するた
めのソフトウェア技法であるソフトウェアパイプライン
を効率良く支援する。 【解決手段】 命令実行に伴う論理レジスタへのアクセ
スで使用される物理レジスタとして、当該論理レジスタ
番号毎に対応するポインタにより指定される物理レジス
タを使用し、当該命令で指定のある場合は、アクセスに
用いたポインタのインクリメントを行い、以降の当該論
理レジスタへのアクセスを行う命令に関しては、異なる
物理レジスタを使用させる。 【効果】 SWPLにおける同一論理レジスタへの書き
込みと読み出しの順序保障に伴う逐次化による命令レベ
ル並列性の低下を防げる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】命令レベル並列処理を行うプ
ロセッサに係わり、命令レベル並列処理プロセッサを有
効に機能させるためのソフトウェア技法であるソフトウ
ェアパイプラインに適したレジスタ構成およびそれを含
むプロセッサに関する。
【0002】
【従来の技術】計算機の性能は、マシンサイクルと1命
令を実行するのに必要となるクロック・マシンサイクル
数CPI(clock cycles per ins
truction)により決定される。したがって、計
算機の性能向上にはマシンサイクルの短縮とCPIを小
さくすることが肝要となる。従来のCPIを小さくする
手法として、パイプライン処理やスーパスカラとVLI
W(Very LongInstruction Wo
rd)に代表される命令レベル並列処理が挙げられる。
【0003】パイプライン処理では、1命令の実行をフ
ェッチ、デコード、実行、書き戻し等のように、複数の
細かな処理単位(ステージ)に分割し、複数の命令でス
テージ間をオーバラップさせることにより、同時実行す
る技術である。このパイプライン処理では、各ステージ
を1マシンサイクルで処理することにより、理想的には
CPIを1とすることが可能となる。
【0004】一方、命令レベル並列処理は、同時に複数
の命令を上記のパイプライン処理することにより、より
多くの命令を同時実行することが可能であり、1以下の
CPIの実現を図るものである。スーパスカラとVLI
Wの違いについては、同時実行を行う命令に関して、ス
ーパスカラでは動的に命令列から実行可能なものをハー
ドウェアにより選択し実行するのに対して、VLIWで
は1命令で複数の操作が指定できる命令形式を有してお
り、コンパイラにより静的に同時実行可能な操作を命令
中に配置する点にある。
【0005】これらの手法を有するプロセッサを使用す
る上で、最も重要となるのは、パイプラインに有効な命
令が詰まっている状態を維持するようにコンパイラによ
り命令を配置することである。これは、特に動的に実行
可能な命令の選択機能のないVLIW方式では重要度が
高くなる。このコンパイラによる命令配置のソフトウェ
ア技法がソフトウェアパイプライン(以下では、SWP
Lと呼ぶ)である。SWPLでは、図1のようにループ
に関して、ループの内容(ループボディ)の命令列を、
命令間の依存関係やプロセッサの資源数に基づいて複数
の固まり(以下では、SWPLのステージと呼ぶ)に分
割し、図2に示すようにII(Initiation
Interval)と呼ばれるマシンサイクル毎に、新
たなイタレーションのステージをパイプラインへ投入し
て行く。これにより、理想的な定常状態では、イタレー
ション(ループ処理における1回分のループ処理)の異
なる全てのステージが同時実行されるため、高い並列度
が得られ、命令パイプラインや命令レベル並列を行うプ
ロセッサを有効に利用することが可能となる。
【0006】しかし、通常のレジスタのみを有するプロ
セッサでは、同一レジスタへの書き込みに対する読み出
しが存在する場合、書き込みに対する読み出しの順序を
保証しなければならないため、後続イタレーションのレ
ジスタの書き込みは、前のイタレーションのレジスタの
読み出しより後にスケジューリングされる必要がある。
つまり、同一レジスタの書き込みと読み出しが逐次化さ
れる。したがって、同時実行される命令数が減少する可
能性が高く、ソフトウェアパイプラインで得られる効果
が低くなると言う問題がある。
【0007】この問題に関して、並列処理シンポジウム
JSPP’93の307ページから314ページ(以
下、第一の従来技術)では、命令で指定される論理レジ
スタ毎にキュー構造の物理レジスタとリードとライト用
の物理レジスタへのポインタを用意し、命令中の論理レ
ジスタ指定フィールドにあるレジスタ制御フィールドに
より、読み出し/書き込みに応じてポインタを進める方
式が提案されている。レジスタへの書き込み時にポイン
タを進めることにより、同一命令に関するレジスタ書き
込みに関して、イタレーション毎に異なる物理レジスタ
へ書き込むように制御できるので、後続イタレーション
の同一論理レジスタへの書き込みを読み出しより先行さ
せて実行することが可能となる。
【0008】また、“THE 25th ANNUAL
INTERNATIONAL SYMPOSIUM
ON MICROARCHITECTURE”の158
ページから169ページ(以下、第二の従来技術)で
は、物理レジスタへのベースレジスタを持ち、レジスタ
アクセスの際に、命令で指定される論理レジスタ番号と
ベースレジスタの値を加算した値により物理レジスタに
アクセスし、ベースレジスタは新たなSWPLのステー
ジが投入される度に、デクリメントされる方法が提案さ
れている。この方法では、後続イタレーションの書き込
みは新たな、SWPLの新たなステージとして投入され
るため、同一論理レジスタ番号でも、ベースレジスタの
値が異なるため、異なる物理レジスタ番号が得られるの
で、読み出しに先行して、後続イタレーションの書き込
みを行うことが出来る。
【0009】
【発明が解決しようとする課題】上記第一の従来技術で
は、プログラム中における通常のレジスタの使用方法を
考えると、レジスタの値は多くの場合、出来る限り再利
用されるため、同一論理レジスタがSWPLのステージ
を越えて多数読み出しされる場合がある。このような場
合、この方式では、最後のレジスタ読み出しのみでポイ
ンタを更新する制御を行い、残りは同じ物理レジスタを
使用するように制御する。このため、最後の読み出しに
先行して後続イタレーションの書き込みを実行できない
ため、IIが増大する。このため、第一の従来技術で
は、SWPLのステージを越えるレジスタの再利用があ
る場合、レジスタの定義から使用までの期間をII以下
にするためのコピー命令を挿入する必要があり、コピー
命令のためのソフトウェアオーバヘッドとコピーに伴う
論理レジスタの消費があると言う問題がある。
【0010】さらに、論理レジスタ毎に独立した物理レ
ジスタを有しているため、ある論理レジスタ番号により
定義された値の読み出しを他の論理レジスタで行えな
い。したがって、全体の物理レジスタとしては十分に用
意されている状況でも、命令で使用されている論理レジ
スタに関する物理レジスタのみしか使用せず、物理レジ
スタの使用効率が悪くなるという問題がある。
【0011】上記第二の従来技術では、命令中の論理レ
ジスタを示すフィールドが全ての物理レジスタを指し示
す必要があるため、レジスタフィールドは物理レジスタ
の容量に応じて増大して行くと言う問題と、レジスタア
クセスの際にベースレジスタと論理レジスタ番号の加算
を行うため、レジスタアクセス時間が増大する可能性が
あるという問題がある。特に、前者の問題に関しては、
VLIW方式を採用する際には、1命令中に多数のレジ
スタ指定フィールドがあるため、非常に大きな問題点と
なる。また、ループの繰り返し毎にベースレジスタを更
新するための命令が必要となるため、ソフトウェアオー
バヘッドが生じるという問題もある。
【0012】本発明の目的は、(1)ソフトウェアオー
バヘッド無しにSWPLを支援し、(2)VLIW方式
での使用に耐えるように、小さなレジスタ指定フィール
ドによって大容量のレジスタファイルを物理レジスタの
フラグメンテーションなく扱うことを可能にすることに
ある。
【0013】
【課題を解決するための手段】上記の目的を達成するた
めに、本発明の計算機では、命令で指定される論理レジ
スタフィールド毎に、任意の物理レジスタを指し示すこ
との出来るリードポインタあるいはライトポインタを指
定するフィールドと、ポインタをインクリメントする/
しないを制御するフィールドを持ち、オペコードのデコ
ード結果、命令中の論理レジスタフィールドに関するア
クセスの種類が決まると、その論理レジスタフィールド
中のポインタ指定フィールドの値をインデックスとして
リードポインタあるいはライトポインタから値を読みだ
し、その値を物理レジスタ番号として、レジスタファイ
ルへのアクセスを行う。また、このリードポインタとラ
イトポインタに関して、初期値の設定するための手段も
備えている。
【0014】これにより、ポインタをインクリメントす
るように指定された命令に関しては、イタレーション毎
の書き込みに関して異なる物理レジスタを使用すること
ができるため、読み出しに先行して後続イタレーション
の書き込みを実行することが可能となる。また、リード
ポインタとライトポインタは任意の物理レジスタを指定
可能なため、異なる論理レジスタに関するポインタが同
一物理レジスタを指し示すことができる。したがって、
他の論理レジスタ番号により、書き込まれた値を別の論
理レジスタ番号により読み出すことが可能になる。
【0015】また、SWPLのIIを越えて同一物理レ
ジスタの値の再利用を行う場合、異なる論理レジスタ番
号のリードポインタを同一の物理レジスタを指し示すよ
うにしておくことで、ある論理レジスタ番号で定義され
た値を他の論理レジスタ番号により、読み出すことが出
来るため、レジスタの定義から使用までの期間を短縮す
るための余分なコピー命令が不要となる。また、リード
ポインタとライトポインタのインクリメントは、インク
リメント指定のある命令の実行により自動的になされる
ため、使用する物理レジスタの切り替えのために、特別
な命令を実行する必要がない。
【0016】また、各論理レジスタ番号のリードポイン
タとライトポインタが任意の物理レジスタを指せるた
め、物理レジスタのフラグメンテーションを防ぐことが
できる。一方、物理レジスタ数はリードポインタとライ
トポインタの幅により規定されるため、論理レジスタ数
すなわち、命令中のレジスタ指定フィールドに影響がな
く、レジスタフィールドが従来のプロセッサと同程度で
も、大容量のレジスタファイルの扱いが可能となる。
【0017】
【発明の実施の形態】以下、本発明に係わるレジスタ方
式の構成を図面に示した実施例を参照し更に詳細に説明
する。
【0018】(実施例1)図3に示すシステムは、主記
憶100(キャッシュを含んでいても良い)と、それに
接続された命令レベル並列処理を行うプロセッサ200
からなるシステムである。このプロセッサでは、フェッ
チユニット201が主記憶からプログラムカウンタで指
定される命令をフェッチし、デコードユニット202に
より命令を順次解読し、演算器206a,206bおよ
びLD/ST(Load/Store)ユニット205
a,205bと分岐ユニット207へ信号線301を介
して命令が発行される。同時にデコードステージで解読
された情報は、信号線302を介してレジスタ制御部2
03へ渡され、演算器およびLD/STユニットなどで
使用される物理レジスタの番号が生成され、信号線30
3を介してレジスタファイル204へ入力される。
【0019】演算器では、命令で指定された論理レジス
タ番号によりレジスタ制御部で生成された番号の物理レ
ジスタで示されるレジスタファイル中のレジスタを共有
バス304を介してアクセスしながら、命令のオペコー
ドにより指定される動作を行う。
【0020】LD/STユニットでは、命令で指定され
た論理レジスタ番号によりレジスタ制御部で生成された
番号の物理レジスタに関して、命令のオペコードが主記
憶上のデータを演算で使用するためにレジスタに移動す
る命令であることを示す場合、命令中のオペランドから
生成される主記憶上のアドレスからデータ読み出し、当
該レジスタへ書き込みを行う。また、命令のオペコード
が、演算の結果得られたデータを主記憶に書き戻す命令
であることを示す場合には、当該レジスタからデータが
読み出され、オペランドで指定される主記憶上のアドレ
スへ書き込みを行う。
【0021】分岐ユニットでは、分岐命令で指定される
分岐条件が成立しているかどうかを調べ、条件が成立し
ていれば命令で指定されるアドレスから次命令のフェッ
チを行うようにプログラムカウンタの設定を行う。ま
た、レジスタ制御部へ信号線305を介してレジスタ制
御部内のバッファを無効化するための信号を送ることも
ある。
【0022】図4は、本プロセッサで使用する命令形式
を表しており、命令はオペコード10とオペランド12
により構成され、オペランドに論理レジスタ11あるい
は即値15を指定可能となっており、論理レジスタ指定
時には、そのフィールドは論理レジスタ番号14とレジ
スタ制御フィールド13から構成さる。図4では、例と
して2つの論理レジスタ指定フィールドと1つの即値か
らオペランドが構成される例を示している。
【0023】デコードユニット202でのデコードステ
ージでは、フェッチユニット201でのフェッチステー
ジから送られて来る上記の命令形式の命令に対して、オ
ペコードにより各論理レジスタ指定フィールドで指定さ
れるレジスタへのアクセスの種類を判定し、論理レジス
タ指定フィールドに含まれる論理レジスタ番号を、図5
で示されるレジスタ制御部203の読み出し用論理レジ
スタ番号302−1、あるいは、書き込み用論理レジス
タ番号302−2の入力として、どちらかに振り分けて
レジスタ制御部の入力とする。また、論理レジスタ指定
フィールド内のレジスタ制御フィールドの値も同様に、
アクセス種類に応じて読み込み用論理レジスタのモード
302−3、あるいは、書き込み用論理レジスタのモー
ド302−4のどちらかに振り分けて、レジスタ制御部
へ出力する。
【0024】ただし、デコードステージにおいて、フェ
ッチステージから送られて来る命令として、レジスタ制
御部内にあるポインタの設定命令である場合について本
実施例では、この命令は、オペランドフィールドに論理
レジスタ指定フィールド1つと、即値指定のフィールド
を持ち、デコードステージにより、命令で指定される論
理レジスタ番号を、レジスタ制御部の読み出し用論理レ
ジスタ番号と書き込み用論理レジスタ番号の両方へ出力
し、命令で指定される即値をレジスタ制御部の命令中の
即値302−5に出力する。
【0025】図5に示すレジスタ制御部203では、論
理レジスタ数分のリードポインタ集合400とライトポ
インタ集合401を保持しており、ポインタ設定命令以
外の時は、デコードステージから302−1,2を介し
て送られて来る読み出し用論理レジスタ番号と書き込み
用論理レジスタ番号をインデックスとして、論理レジス
タに対応するリードポインタ、ライトポインタをリード
ポインタ集合とライトポインタ集合から読み出し、この
読み出された値を物理レジスタ番号として、303を介
してレジスタファイル204へ出力する。
【0026】アクセスされたポインタに関して、リード
ポインタは、302−3により与えられる読み出し用論
理レジスタのモードの値1/0に応じて加算器405
a,bを制御することにより、読み出したリードポイン
タをインクリメントし、または、インクリメントせず
に、404a,bを介して読み出されたのと同じリード
ポインタへ書き戻す。
【0027】ライトポインタに関しては、デコードステ
ージからレジスタ制御部へ渡される書き込み用論理レジ
スタ番号302−2により読み出されたライトポインタ
の値がレジスタファイルへ出力されるのは、当該論理レ
ジスタ番号を指定している命令の実行後であるため、レ
ジスタ制御部内で書き込み用論理レジスタ番号をバッフ
ァ402に、書き込み用論理レジスタのモードをバッフ
ァ403にバッファしておき、適切なサイクル数だけ遅
延させて、論理レジスタ番号に対応するライトポインタ
を読み出し、レジスタファイルへ出力させる。
【0028】書き込み用論理レジスタのモードに関して
は、その値が1の場合、加算器405cを制御し読み出
したライトポインタをインクリメントし、404cを介
して同じライトポインタへ書き戻し、値が0の場合は、
インクリメントと書き戻しを行わない。ただし、書き込
み用論理レジスタ番号がデコードステージから送られて
来てからレジスタファイルへ出力されるまでの間、すな
わち、402と403にバッファされている間に、予測
された分岐の方向と異なる方向に分岐が生じた場合に
は、分岐ユニットから予測ミスの信号が無効化305を
介してレジスタ制御部へ入力され、402と403でバ
ッファされている論理レジスタ番号とそのモードの無効
化を行う。
【0029】これらのリードポインタとライトポインタ
に値を設定するには、ポインタ設定命令を実行する。こ
のポインタ設定命令は、論理レジスタ番号と設定する値
を示す即値をオペランドとしており、デコードステージ
により、この論理レジスタ番号が、レジスタ制御部の読
み出し用論理レジスタ番号の1つと書き込み用論理レジ
スタ番号として入力される。レジスタ制御部では、リー
ドポインタ集合とライトポインタ集合の内の指定された
論理レジスタ番号に対応するリードポインタとライトポ
インタを書き込み可能状態とし、命令中の即値により与
えられるデータをこの両者に書き込む動作を行う。した
がって、ポインタ設定命令で指定される論理レジスタの
リードポインタとライトポインタは同じ命令で指定され
る即値の値を持つことになる。
【0030】以下、本実施例では、この種類のポインタ
設定命令を使用するものとするが、以下のような変形例
も可能である。
【0031】ポインタ設定命令として、リードポインタ
あるいはライトポインタの一方へ設定を行うように、オ
ペコードあるいはオペランドで指定し、指定された側の
ポインタの設定を行うようにも出来る。この変形例は図
5と同じ構成であり、デコードステージが、読み出し用
論理レジスタ番号あるいは書き込み用論理レジスタ番号
の片方に命令で指定された論理レジスタ番号を出力し、
レジスタ制御部では、指定された論理レジスタ番号に対
応するポインタを書き込み状態にし、命令で指定される
即値をそのポインタへ格納することにより実現される。
【0032】以上のレジスタ制御部による動作により、
論理レジスタへの書き込みに関して、そのレジスタ制御
フィールドを1とした場合は、連続する物理レジスタを
使用することになるので、SWPLにおいて、後続のイ
タレーションによるレジスタへの書き込みが読み出しに
先行できるようになる。また、論理レジスタの読み出し
に関しては、上記ポインタ設定の動作により、リードポ
インタの初期値はライトポインタの初期値と同じである
から、レジスタ制御フィールドを1とした命令により連
続する物理レジスタを順に読み出して行くので、書き込
み命令が実行された順序により物理レジスタを読み出す
ことが出来る。
【0033】以下では、このレジスタ構成を使用して、
SWPLを施したプログラムとその動作について、例を
挙げて詳細に動作説明を行う。使用するプログラムは図
7で示されるフォートランプログラムであり、これを仮
想的なプロセッサのアセンブラにより記述したのが、図
9である。
【0034】この仮想的なプロセッサの命令について、
図9の(1)〜(4)のMTSPR命令は、上記のポイ
ンタ設定を行う命令である。例えば、(1)の命令で
は、論理レジスタ0番に関するリードポインタとライト
ポインタの値は共に0となる。ここで、各命令の論理レ
ジスタに関して、レジスタ指定にq/nがあるのは、そ
れぞれ論理レジスタのモードに相当し、qであれば、ポ
インタをインクリメントし、nであれば、ポインタのイ
ンクリメントを行わないことを表している。
【0035】また、図9の(5)、(6)、(7)のL
DF命令は、第二オペランドで与えられる主記憶のアド
レスにあるデータを読み出し、第一オペランドにより指
定される論理レジスタに書き込む命令である。一方、
(9)、(12)のSTF命令は、第一オペランドで指
定される論理レジスタから値を読み出し、第二オペラン
ドで与えられる主記憶のアドレスにデータを書き込む命
令である。また、これらLDF命令とSTF命令は、そ
の実行後にオペランドのアドレスを保持するレジスタ
(図中では略)の値を指定のアドレスだけ増加させる。
また、(8)および(11)のFDAA命令は、第二・
三オペランドで指定される論理レジスタの値を読み出
し、それらを加算し、第一オペランドで指定される論理
レジスタに書き込む命令である。(10)のFMUL命
令は、第二・三オペランドで指定される論理レジスタの
値を読み出し、この2つの値を積算を行い第一オペラン
ドで指定される論理レジスタに書き込む命令である。
【0036】図11は、図9(本願発明のプロセッサ)
で示したプロセッサのアセンブラによる動作例を示す。
図11では、この仮想プロセッサのロードレイテンシを
8、演算レイテンシを2とし、LD/STユニット、
(浮動小数点)演算器が2つ、ループ長を8とした場合
の実行の様子を表している。図11の左側で横軸はイタ
レーション、縦軸は時間を表しており、各イタレーショ
ンの処理を表す箱の中には、図9に示したループ中の命
令の番号が、上記のレイテンシなどの条件を満たすよう
に配置されている。また、図11の右側の表は、図7中
のU(K),U(K−1)に関係する論理レジスタ番号
(FR0,FR1,FR2,FR3)と、リードポイン
タとライトポインタの値の遷移が記されている。
【0037】図11に示すように、本方式では、後続の
イタレーションに関する同一論理レジスタへの書き込み
が読み出しに先行して実行されている。例えば、K=
3,4,5,6の命令(7)がK=2の命令(8)より
前に実行されている。また、ループの前の各レジスタに
関するポインタ設定によって、他の論理レジスタ番号に
より書き込まれた物理レジスタを別の論理レジスタ番号
で読み出しているのが、FR0とFR1,FR2の関係
に表れている。これにより、ループ中での余分なコピー
命令を不要となっている。
【0038】ここで、同じプログラムに関して、第一の
従来の技術によるレジスタ構成を有する同様の仮想プロ
セッサに適用した場合のアセンブラを図10に示す。た
だし、論理レジスタ指定フィールドのq/nに関して
は、図9と同じである。また、(4)(6)(8)のF
MOV命令に関しては、第二オペランドで与えられる論
理レジスタから値を読み出し、第一オペランドで与えら
れる論理レジスタに書き込む命令である。
【0039】この命令列に対して、同様にSWPLを施
した場合、図12に示す状況となる。ただし、図12で
は使用されない演算器の命令フィールドは除いている。
図12から分かるように、余分なコピー命令(4)
(6)(8)の挿入によりループ中の命令コードが増加
しており、さらに、イタレーション:KのFADD F
R2.q,FR0.q,FR1.q以降でなければ、F
R0のリードポインタが更新されないため、イタレーシ
ョン:K+1のFMOV FR1.q,FR0.nが実
行できない。その結果、II(Initiation
Interval)が9に増大しており、性能低下をも
たらしている。
【0040】以下では、図11に関して、各時間毎の命
令の動作を詳細に説明を行う。時間0から時間3までの
間は、(7)の命令が実行される。命令(7)のFR0
は.q指定であるため、U(2)からU(5)が主記憶
から読み出され、論理レジスタFR0のライトポインタ
が順次インクリメントされるので、物理レジスタ1から
4に順に書き込みが行われる。
【0041】時間4では、K=2の命令(8)とK=6
の命令(7)が実行される。命令(7)では、論理レジ
スタFR0のライトポインタで表される書き込み用の物
理レジスタ5に、主記憶からU(6)の値が格納され
る。また、命令中に.q指定があるので、ライトポイン
タがインクリメントされる。命令(8)では、論理レジ
スタFR0とFR2のリードポインタは、命令(1)、
(3)により0と1に設定されているため、物理レジス
タ0と1からU(1)とU(2)の値を読み出して、加
算を行い、Z(2)の値を生成し、論理レジスタFR3
のライトポインタで表される書き込み用の物理レジスタ
10に値を書き込む。また、使用した論理レジスタは全
て.q指定であるので、それぞれのポインタはインクリ
メントされる。
【0042】時間5では、K=2の命令(9)(10)
とK=3の命令(8)、K=7の命令(7)が実行され
る。命令(7)と命令(8)に関しては、時間4と同様
であり、命令(7)では、物理レジスタ6に主記憶から
U(7)が格納され、ライトポインタが更新される。命
令(8)では、物理レジスタ1と2からU(2)とU
(3)の値を読み出して、加算を行い物理レジスタ11
へZ(3)の値を格納し、各ポインタをインクリメント
する。命令(9)では、論理レジスタFR2のリードポ
インタで表される物理レジスタ10に保持されているZ
(2)の値を、主記憶上のZ(2)のアドレスへ書き戻
す。また、論理レジスタFR2では、.n指定であるの
で、リードポインタはインクリメントされない。命令
(10)では、論理レジスタFR10は、スカラ変数R
の値が格納されており、論理レジスタFR3のリードポ
インタで表される物理レジスタ10に保持されているZ
(2)の値とFR10の積を計算し、FR5のライトポ
インタで表される物理レジスタへ書き込まれ、FR3、
FR5は.q指定であるため、FR3のリードポインタ
とFR5のライトポインタがインクリメントされる。こ
こで、FR10に関して、他論理レジスタへの定義によ
り内容を変更されないように、他論理レジスタが使用し
ない物理レジスタを使用するように設定しておく必要が
ある。これは、図7のプログラム例では、ループ長が8
と既知であるため、ループ中で書き込みに使用される論
理レジスタの初期値の内、最大の値+ループ長で表され
る番号以上の値をFR10のリードポインタとしてい
る。
【0043】時間6では、K=2の命令(11)、K=
3の命令(9)(10)、K=4の命令(8)およびK
=8の命令(7)が実行される。命令(7)と(8)に
関しては、時間4と同様であり、命令(7)では、物理
レジスタ7に主記憶からU(7)が格納され、ライトポ
インタが更新される。命令(8)では、物理レジスタ2
と3から、U(3)とU(4)の値を読み出して加算を
行い物理レジスタ12へZ(4)の値を格納し、各ポイ
ンタをインクリメントする。また、命令(9)と(1
0)に関しては、時間5と同様であり、命令(9)で
は、物理レジスタ11に保持されているZ(3)の値
を、主記憶上のZ(3)のアドレスへ書き戻し、命令
(10)では、物理レジスタ11に保持されているZ
(3)とFR10のスカラ変数Rの積を計算し、FR5
のライトポインタにより表される物理レジスタへ格納
し、各ポインタをインクリメントする。命令(11)で
は、時間5に命令(10)でFR5のライトポインタが
表す物理レジスタへ書き込まれた値と、FR1のリード
ポインタで表される物理レジスタ1の内容を加算し、得
られた値をFR6のライトポインタが表す物理レジスタ
へ格納し、各ポインタをインクリメントする。
【0044】時間7では、K=2の命令(12)、K=
3の命令(11)、K=4の命令(9)(10)、K=
5の命令(8)、およびK=9の命令(7)が実行され
る。命令(7)と(8)に関しては、時間4と同様であ
り、命令(7)では、物理レジスタ8に主記憶からU
(8)が格納され、ライトポインタが更新される。命令
(8)では、物理レジスタ3と4から、U(4)とU
(5)の値を読み出して加算を行い物理レジスタ13へ
Z(5)の値を格納し、各ポインタをインクリメントす
る。また、命令(9)と(10)に関しては、時間5と
同様であり、命令(9)では、物理レジスタ12に保持
されているZ(4)の値を、主記憶上のZ(3)のアド
レスへ書き戻し、命令(10)では、物理レジスタ12
に保持されているZ(4)とFR10のスカラ変数Rの
積を計算し、FR5のライトポインタにより表される物
理レジスタへ格納し、各ポインタをインクリメントす
る。命令(11)に関しては、時間6に命令(10)で
FR5のライトポインタが表す物理レジスタへ書き込ま
れた値と、物理レジスタ2の内容を加算し、得られた値
をFR6のライトポインタが表す物理レジスタへ格納
し、書くポインタをインクリメントする。命令(12)
では、時間6に命令(11)でFR6のライトポインタ
が表す物理レジスタから値を読み出し、主記憶上のX
(2)のアドレスに書き戻し、FR6のリードポインタ
をインクリメントする。
【0045】時間8,9,10,11では、それぞれ、
K=3,4,5,6の命令(12)、K=4,5,6,
7の命令(11)、K=5,6,7,8の命令(9)
(10)、K=6,7,8,9の命令(8)が実行され
る。命令(7)と(8)に関しては、時間4と同様であ
り、命令(8)では、各時間で物理レジスタ4と5、5
と6、6と7、7と8から、U(5)とU(6)、U
(6)とU(7)、U(7)とU(8)、U(8)とU
(9)の値を読み出して加算を行い物理レジスタ14,
15,16,17へZ(6),Z(7),Z(8),Z
(9)の値を格納していく。また、命令(9)と(1
0)に関しては、時間5と同様であり、命令(9)で
は、物理レジスタ13,14,15,16に保持されて
いる、Z(5),Z(6),Z(7),Z(8)の値を
主記憶上の対応するアドレスへ書き戻し、命令(10)
では、物理レジスタ13,14,15,16に保持され
ているZ(5),Z(6),Z(7),Z(8)とFR
10のスカラ変数Rの積を計算し、FR5のライトポイ
ンタにより表される物理レジスタへ格納する。命令(1
1)に関しては、時間7,8,9,10に命令(10)
でFR5のライトポインタが表す物理レジスタへ書き込
まれた値と、物理レジスタ3,4,5,6の内容を加算
し、得られた値をFR6のライトポインタが表す物理レ
ジスタへ順次格納する。命令(12)に関しては、命令
(12)を実行する前の時間でFR6のライトポインタ
が表す物理レジスタから値を読み出し、主記憶上のX
(3),X(4),X(5),X(6)のアドレスに書
き戻す。
【0046】時間12では、K=7の命令(12)、K
=8の命令(11)、K=9の命令(9)(10)が実
行される。命令(9)(10)に関しては、時間5と同
様であり、命令(9)では、物理レジスタ17に保持さ
れているZ(9)の値を主記憶上の対応するアドレスへ
書き戻し、命令(10)では、物理レジスタ17の保持
されているZ(9)とFR10のスカラ変数Rの積を計
算し、FR5のライトポインタにより表される物理レジ
スタへ格納する。命令(11)に関しては、時間11に
命令(10)でFR5のライトポインタが表す物理レジ
スタへ書き込まれた値と、物理レジスタ7の内容を加算
し、得られた値をFR6のライトポインタが表す物理レ
ジスタが表す物理レジスタへ格納する。命令(12)に
関しては、その実行の前の時間でFR6のライトポイン
タが表す物理レジスタから値を読み出し、主記憶上のX
(7)のアドレスに書き戻す。
【0047】時間13では、K=8の命令(12)、K
=9の命令(11)が実行される。命令(11)に関し
ては、時間12に命令(10)でFR5のライトポイン
タが表す物理レジスタへ書き込まれた値と、物理レジス
タ8の内容を加算し、得られた値をFR6のライトポイ
ンタが表す物理レジスタが表す物理レジスタへ格納す
る。命令(12)に関しては、その実行の前の時間でF
R6のライトポインタが表す物理レジスタから値を読み
出し、主記憶上のX(8)のアドレスに書き戻す。
【0048】時間14では、K=9の命令(12)が実
行され、この命令(12)に関しては、その実行の前の
時間でFR6のライトポインタが表す物理レジスタから
値を読み出し、主記憶上のX(9)のアドレスに書き戻
す。
【0049】(実施例2)本実施例は実施例1の変形で
あり、レジスタ制御部203とレジスタファイル204
を図8のような構成としたものである。本実施例では、
レジスタファイルとして、実施例1のように論理レジス
タ番号によりリード/ライトポインタを介して、物理レ
ジスタをアクセスするためのレジスタファイル411に
加えて、論理レジスタ番号と物理レジスタ番号が1対1
で対応し、他の論理レジスタ番号により破壊されない固
定用レジスタファイル412を加えている。これによ
り、実施例1の図7で示したコード中のRのようなルー
プ中の定数をこの固定レジスタファイル中のレジスタ
(以下、固定レジスタと呼ぶ)を使用することにより、
コンパイラによる物理レジスタ管理を軽減する。
【0050】本実施例では、固定レジスタ番号は連続的
であり、ある決められた番号より小さな番号であるとし
ている。また、レジスタファイルでは、固定レジスタ番
号用に別のレジスタファイルを設けており、他のレジス
タファイルと区別している。さらに、本実施例の変形と
して、レジスタファイルの一部を固定用のレジスタファ
イルとして使用する構成も考えられるが、ここでは述べ
ない。
【0051】本実施例のレジスタ制御部の構成を表す図
8中で、図5と同じ番号を持つ構成要素に付いては、実
施例1と同様の動作を行うものであるので、本実施例で
は、実施例1と異なる部分について述べる。デコードス
テージから302−1,2を介して、送られて来る読み
込み用論理レジスタ番号と、書き込み用論理レジスタ番
号を比較器406a,b,cで、固定レジスタ番号の最
大値+1を保持する境界レジスタ407と比較を行い、
境界レジスタの値以上の値をしている論理レジスタ指定
フィールドに関しては、固定レジスタではないので、該
フィールドに関するものは、実施例1のように302−
1,2の値をインデックスとして、リードポインタ集合
とライトポインタ集合から、リードポインタとライトポ
インタを読み出し、その値を物理レジスタ番号として、
レジスタファイル204へ303−1または2または3
を介して出力するようにセレクタ409a,b,cを比
較器406a,b,cの出力により制御する。この時、
比較器406a,b,cの結果もあわせてレジスタファ
イルへ303−3,4,5を介して出力する。レジスタ
ファイルでは、303−3,4,5の結果に基づいて、
303−1,2,3を固定レジスタファイル412へ入
力するか、レジスタファイル411へ入力するかを、ス
イッチ(SW)410a,b,cで決定する。ここで、
比較器、406cの前段にバッファ402があるのは、
実施例1と同じ理由によるものである。
【0052】また、境界レジスタ未満の値を指定してい
る論理レジスタ指定フィールドに関しては、固定レジス
タをアクセスするようにするため、該フィールドに対応
するセレクタ409aまたはbまたはcを制御し、デコ
ードステージから送られて来る読み出し用論理レジスタ
番号、または書き込み用論理レジスタ番号をレジスタフ
ァイル204へ出力するようにする。同時に比較器40
6a,b,cの結果もレジスタファイル204へ出力さ
れ、この値に基づいてスイッチ410a,b,cの制御
を行い該フィールドのものに関しては、411のレジス
タファイルへ入力するようにする。
【0053】これにより、命令中の論理レジスタフィー
ルドに境界レジスタに保持される値以下の論理レジスタ
番号を使用しているものに関しては、その論理レジスタ
に対応する物理レジスタとして、固定用レジスタファイ
ル中のものをアクセスし、逆に大きな値を指定している
フィールドに関しては、Queue用レジスタファイル
をアクセスし、演算器、LD/STユニット、分岐ユニ
ットとの間でデータの受渡しを行うことになる。
【0054】(実施例3)本実施例は実施例1の変形で
あり、ポインタ設定に関して、命令で指定される第一の
論理レジスタ番号のポインタ設定に関して、命令で指定
される第二の論理レジスタ番号のポインタを参照し、命
令で指定された即値を加えるためのものである。これ
は、論理レジスタ間の距離のみが問題で、各論理レジス
タが使用する物理レジスタのレジスタファイル中の位置
が問題にならない場合等に使用されるものである。本実
施例でのレジスタ制御ユニットの構成を図6に示す。
【0055】ただし、同様の変形は実施例2にも適用可
能であり、同様の効果が得られるが、本実施例では実施
例1を基にした構成のみを示している。また、本実施例
の構成図である図6において、実施例1の図5と同じ番
号を有する構成要素に付いては、実施例1と同様の動作
を行うものであるので、本実施例では、実施例1と異な
る部分について述べる。
【0056】本実施例の構成では、ポインタ設定命令以
外の際には、実施例1と全く同じ動作を行い、ポインタ
設定命令に関してのみ実施例1と動作が異なる。本実施
例のポインタ設定命令は2つの論理レジスタ指定フィー
ルドと1つの即値を指定できるオペランドを持ち、オペ
コードにより、指定を行うポインタの種類の選択を行
う。選択されたポインタの種類の集合、すなわち、リー
ドポインタ集合400またはライトポインタ集合40
1、の中で、第一の論理レジスタ指定フィールドにより
指定される論理レジスタ番号をインデックスとして、選
択されたポインタ集合中のポインタを書き込み可能な状
態とし、第二の論理レジスタ指定フィールドにより指定
される論理レジスタ番号をインデックスとして、選択さ
れたポインタ集合中のポインタを読みだし、命令で指定
される即値フィールドの値をデコードステージから30
2−5から受取り、読み出したポインタの値と即値の値
を加算器413aまたは、413bにより加算し、書き
込み可能な状態のポインタへ書き戻す。
【0057】(実施例4)本実施例は実施例1の変形で
あり、ポインタ設定に関して、各ポインタの初期値とし
て予め決められたパターンがしてあり、ポインタ設定命
令実行により各ポインタの内容がそのパターンとなるも
のである。実施例1では、SWPL化されたループ内で
使用される論理レジスタに関するポインタ設定命令を実
行する必要があるため、ループ起動のオーバヘッドを生
じることになる。これに対して、本実施例のポインタ設
定方法により、コンパイラが適切に値の離れた論理レジ
スタ番号を使用するようにレジスタ割り付けを行うこと
により、このオーバヘッドは削減することが出来る。図
13は、本実施例におけるレジスタ制御部の構成例を示
している。なお、図13において、実施例1の図5と同
じ番号を有する構成要素に付いては、実施例1と同様の
動作を行うのであるので、本実施例では、実施例1と異
なる部分について述べる。
【0058】本実施例の構成では、ポインタ設定命令以
外の際には、実施例1と全く同様の動作を行い、ポイン
タ設定命令に関してのみ実施例1と動作が異なる。本実
施例のポインタ設定命令は、論理レジスタ指定フィール
ドは持たず、即値指定フィールドのみをオペランドとす
る。この即値指定フィールドの値は、デコードステージ
よりレジスタ制御部へ302−5を介して入力される。
302−5はレジスタ制御部内のパターン生成回路41
5において、リードポインタ集合400とライトポイン
タ集合401に設定するポインタのパターンの選択に使
用され、パターン生成回路で生成された値を416a,
bを介してリードポインタ集合とライトポインタ集合中
の各ポインタに値を格納する。
【0059】パターン生成回路内の機能例として、各論
理レジスタ番号に対応するポインタの内容を自論理レジ
スタ番号を(物理レジスタ数)/(論理レジスタ数)の
対数ビット分左シフトすることにより、各論理レジスタ
が使用する物理レジスタがレジスタファイル中で等間隔
にしたり、予めパターン生成回路内に初期値を持つポイ
ンタ集合を持ちポインタ設定命令により、リードポイン
タ集合とライトポインタ集合にコピーを行う等の方式が
考えられる。
【0060】
【発明の効果】本発明では、全物理レジスタを指し示す
事のできるリードポインタとライトポインタを論理レジ
スタ毎に設け、命令のレジスタアクセス毎に、このポイ
ンタを物理レジスタ番号として使用する。また、命令で
指定のある場合は、物理レジスタアクセスに使用するポ
インタのインクリメントを行うことで、以降の同一論理
レジスタ番号への同種類のアクセスで異なる物理レジス
タを使用する事ができる。これにより、SWPLにおけ
る同一論理レジスタへの書き込みと読み出しの順序保証
に伴う逐次化による命令レベル並列性の低下を防ぐこと
が可能となる効果がある。また、物理レジスタの切り替
えを指定のある命令実行毎に行うため、従来のレジスタ
リネーミングのように使用する物理レジスタを切り替え
るための命令の実行が不要となるという効果もある。
【0061】また、物理レジスタアクセスにレジスタ指
定フィールドを直接用いていないので、命令中のレジス
タ指定フィールドが小さくても、大容量の物理レジスタ
ファイルを扱う事が可能になると言う効果がある。
【図面の簡単な説明】
【図1】SWPLにおけるステージ分割の概要である。
【図2】SWPLの動作概要である。
【図3】本発明によるプロセッサの概略構成図である。
【図4】本発明によるプロセッサの命令形式を表す図で
ある。
【図5】本発明によるレジスタ制御部の第1の構成図で
ある。
【図6】本発明によるレジスタ制御部の第2の構成図で
ある。
【図7】図3の装置で実行される処理のフォートランプ
ログラム例を示す図である。
【図8】本発明によるレジスタ制御部の第3の構成図で
ある。
【図9】図7を本発明のレジスタ構成を有する仮想プロ
セッサのアセンブラにより記述した例を示す図である。
【図10】図7を第一の従来技術のレジスタ構成を有す
る仮想プロセッサのアセンブラにより記述した例を示す
図である。
【図11】図9の仮想プロセッサ上の動作例である。
【図12】図10の仮想プロセッサ上の動作例である。
【図13】本発明によるレジスタ制御部の第4の構成図
である。
【符号の説明】
100 主記憶、 200 プロセッサ、 201 フェッチ、 202 デコード、 203 レジスタ制御部、 204 レジスタファイル、 206a,206b 演算器、 207 分岐ユニット、 400 リードポインタ集合、 401 ライトポインタ集合、 402 書き込み用論理レジスタ番号用バッファ、 403 書き込み用論理レジスタのモード用バッファ。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】論理レジスタ番号で指定される複数の論理
    レジスタと、物理レジスタ番号で指定される複数の物理
    レジスタから構成されるレジスタファイルと、論理レジ
    スタ番号を任意の物理レジスタ番号に変換する手段を有
    するプロセッサであって、 第一の論理レジスタへの書き込み命令を複数回実行する
    際、前記書き込み命令を契機として、順次異なる物理レ
    ジスタへアクセスする手段と、 論理レジスタからの読み出し命令を複数回実行する際、
    前記読み出し命令を契機として、前記第一の論理レジス
    タへの書き込み命令によって順次書き込まれた、前記物
    理レジスタの順に物理レジスタの内容を、任意の箇所か
    ら読み出す手段を有することを特徴とするプロセッサ。
  2. 【請求項2】請求項1のプロセッサにおいて、 該論理レジスタ番号から物理レジスタ番号に変換する手
    段は、各ポインタが全物理レジスタを指し示すリードポ
    インタ群とライトポインタ群を有し、 論理レジスタ番号と該論理レジスタ番号に対応するポイ
    ンタを制御するレジスタ制御フィールドを有する命令中
    の、論理レジスタ番号と、オペコードによって決められ
    る前記レジスタ番号の論理レジスタに関するアクセスの
    種類に応じて、リードポインタ群あるいはライトポイン
    タ群の一方から、リードポインタあるいはライトポイン
    タを読み出し、その内容が表す値を物理レジスタ番号と
    してレジスタファイル中の物理レジスタへアクセスする
    手段と、 命令中の該論理レジスタ番号に対応するレジスタ制御フ
    ィールドの値に応じて、該リードポインタあるいは該ラ
    イトポインタの値を、該論理レジスタフィールドを含む
    命令の実行を契機として、インクリメントし該論理レジ
    スタ番号に対応するリードポインタ群あるいはライトポ
    インタ群のリードポインタあるいはライトポインタに書
    き戻す手段と、 命令中の論理レジスタフィールドの論理レジスタ番号に
    対応するリードポインタとライトポインタへ任意の値を
    設定する命令を実行する手段を有するプロセッサ。
  3. 【請求項3】請求項1のプロセッサにおいて、 該論理レジスタの内の一部の論理レジスタ番号を有する
    論理レジスタは、固定的に同じ物理レジスタに対応付け
    られているプロセッサ。
  4. 【請求項4】請求項2または請求項3のプロセッサにお
    いて、 論理レジスタへのアクセスの際に参照されるリードポイ
    ンタとライトポインタの値を設定するポインタ設定命令
    を実行する手段と、 該ポインタ設定命令により指定される論理レジスタ番号
    のリードポインタとライトポインタを選択し、該設定命
    令で指定され、物理レジスタ番号を表す即値を該リード
    ポインタとライトポインタに設定する手段を有するプロ
    セッサ。
  5. 【請求項5】請求項2または請求項3のプロセッサにお
    いて、 論理レジスタへのアクセスの際に参照されるリードポイ
    ンタとライトポインタの値を設定するポインタ設定命令
    を実行する手段と、 該ポインタ設定命令により指定される論理レジスタ番号
    と該設定命令のオペコードによりリードポインタあるい
    はライトポインタを選択し、該設定命令で指定され、物
    理レジスタ番号を表す即値を選択した該ポインタに設定
    する手段を有するプロセッサ。
  6. 【請求項6】請求項2または請求項3のプロセッサにお
    いて、 論理レジスタへのアクセスの際に参照されるリードポイ
    ンタとライトポインタの値を設定するポインタ設定命令
    を実行する手段と、 該ポインタ設定命令により指定される第一の論理レジス
    タ番号と第二の論理レジスタ番号により、リードポイン
    タとライトポインタを選択し、第二の論理レジスタ番号
    に対応するリードポインタとライトポインタに該ポイン
    タ設定命令で指定され、両ポインタの差分を表す即値を
    加算し、第一の論理レジスタ番号に対応するリードポイ
    ンタとライトポインタに書き戻す手段を有するプロセッ
    サ。
  7. 【請求項7】請求項2または請求項3のプロセッサにお
    いて、 論理レジスタへのアクセスの際に参照されるリードポイ
    ンタとライトポインタの値を設定するポインタ設定命令
    を実行する手段と、 該ポインタ設定命令により指定される第一の論理レジス
    タ番号と、第二の論理レジスタ番号と該ポインタ設定命
    令のオペコードによりリードポインタあるいはライトポ
    インタを選択し、第二の論理レジスタ番号に対応する該
    ポインタに該ポインタ設定命令で指定され、両ポインタ
    の差分を表す即値を加算し、第一の論理レジスタ番号に
    対応するリードポインタあるいはライトポインタに書き
    戻す手段を有するプロセッサ。
  8. 【請求項8】請求項2または請求項3のプロセッサにお
    いて、論理レジスタへのアクセスの際に参照されるリー
    ドポインタとライトポインタの値を設定するポインタ設
    定命令を実行する手段を有し、該ポインタ設定命令の実
    行によりリードポインタとライトポインタが予め決めら
    れた値にセットされる手段を有するプロセッサ。
JP8249594A 1996-09-20 1996-09-20 ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ Pending JPH1097423A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP8249594A JPH1097423A (ja) 1996-09-20 1996-09-20 ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
US08/934,061 US5872989A (en) 1996-09-20 1997-09-19 Processor having a register configuration suited for parallel execution control of loop processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8249594A JPH1097423A (ja) 1996-09-20 1996-09-20 ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ

Publications (1)

Publication Number Publication Date
JPH1097423A true JPH1097423A (ja) 1998-04-14

Family

ID=17195346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8249594A Pending JPH1097423A (ja) 1996-09-20 1996-09-20 ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ

Country Status (2)

Country Link
US (1) US5872989A (ja)
JP (1) JPH1097423A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
US6938149B2 (en) 2000-09-28 2005-08-30 Kabushiki Kaisha Toshiba Renaming apparatus and processor
JP2008523523A (ja) * 2004-12-13 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム
US7856629B2 (en) 2005-06-06 2010-12-21 Panasonic Corporation Compiler apparatus
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
US6598155B1 (en) 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
US7836279B2 (en) * 2003-09-05 2010-11-16 Stmicroelectronics, Inc. Method and system for supporting software pipelining using a shifting register queue
US20050259777A1 (en) * 2004-05-19 2005-11-24 George Claseman Method for expanding the addressing capability of a plurality of registers and apparatus for implementation thereof
JP2006004042A (ja) * 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
US8443351B2 (en) * 2006-02-23 2013-05-14 Microsoft Corporation Parallel loops in a workflow
GB2507484A (en) * 2012-10-30 2014-05-07 Ibm Limiting the number of concurrent requests in a database system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
JP2504312B2 (ja) * 1990-08-29 1996-06-05 三菱電機株式会社 プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP3205092B2 (ja) * 1991-11-20 2001-09-04 株式会社日立製作所 情報処理装置
JP2725546B2 (ja) * 1992-12-07 1998-03-11 株式会社日立製作所 デ−タ処理装置
JP3220881B2 (ja) * 1992-12-29 2001-10-22 株式会社日立製作所 情報処理装置
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
WO1996012228A1 (en) * 1994-10-14 1996-04-25 Silicon Graphics, Inc. Redundant mapping tables
US5740414A (en) * 1995-02-14 1998-04-14 Hal Computer Systems, Inc. Method and apparatus for coordinating the use of physical registers in a microprocessor

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
US6938149B2 (en) 2000-09-28 2005-08-30 Kabushiki Kaisha Toshiba Renaming apparatus and processor
JP2008523523A (ja) * 2004-12-13 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム
US7856629B2 (en) 2005-06-06 2010-12-21 Panasonic Corporation Compiler apparatus
USRE45199E1 (en) 2005-06-06 2014-10-14 Panasonic Corporation Compiler apparatus
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US5872989A (en) 1999-02-16

Similar Documents

Publication Publication Date Title
US6185668B1 (en) Method and apparatus for speculative execution of instructions
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
US5655096A (en) Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5941983A (en) Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
US5710902A (en) Instruction dependency chain indentifier
JP3120152B2 (ja) コンピューターシステム
EP1023659B1 (en) Efficient processing of clustered branch instructions
KR100852563B1 (ko) 디지털 신호 처리 장치 및 방법
US20010021970A1 (en) Data processor
JP2000148488A (ja) ス―パ―スカラプロセッサ
JPH1097423A (ja) ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP2006518053A (ja) ハードウェア・スカウト・スレッディングを通してコードを推測で実行することによるプリフェッチの生成
JP2009099097A (ja) データ処理装置
JP3866513B2 (ja) データストリーミングのためのコンピュータのプロセッサ及び方法
US6516462B1 (en) Cache miss saving for speculation load operation
JP2001092657A (ja) 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
EP1378824A1 (en) A method for executing programs on multiple processors and corresponding processor system
JP7048612B2 (ja) ベクトル生成命令
JPH03233630A (ja) 情報処理装置
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
JPH11242599A (ja) コンピュータプログラム製品
JP2006506727A (ja) コピーレジスタファイルを有するvliw
US11347506B1 (en) Memory copy size determining instruction and data transfer instruction

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080426

Year of fee payment: 6

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

Year of fee payment: 7

Free format text: PAYMENT UNTIL: 20090426

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

Free format text: PAYMENT UNTIL: 20100426

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110426

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120426

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130426

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130426

Year of fee payment: 11

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

Year of fee payment: 12

Free format text: PAYMENT UNTIL: 20140426

EXPY Cancellation because of completion of term