JP3097981B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JP3097981B2
JP3097981B2 JP05176886A JP17688693A JP3097981B2 JP 3097981 B2 JP3097981 B2 JP 3097981B2 JP 05176886 A JP05176886 A JP 05176886A JP 17688693 A JP17688693 A JP 17688693A JP 3097981 B2 JP3097981 B2 JP 3097981B2
Authority
JP
Japan
Prior art keywords
register
instruction
physical
floating
start pointer
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.)
Expired - Fee Related
Application number
JP05176886A
Other languages
English (en)
Other versions
JPH0736695A (ja
Inventor
英夫 和田
克己 竹田
泰弘 稲上
啓明 藤井
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 JP05176886A priority Critical patent/JP3097981B2/ja
Priority to EP19940110976 priority patent/EP0634717B1/en
Priority to DE1994622671 priority patent/DE69422671T2/de
Priority to US08/275,347 priority patent/US5729723A/en
Publication of JPH0736695A publication Critical patent/JPH0736695A/ja
Application granted granted Critical
Publication of JP3097981B2 publication Critical patent/JP3097981B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30101Special purpose 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、命令によってアドレス
可能なレジスタの数より多いレジスタをアクセスするこ
とが可能なデータ処理装置に係り、特に、このようにす
ることによって、キャッシュがあまり有効でない大規模
なデータを連続的に処理するいわゆるベクトル処理に際
して、主記憶装置からのデータの転送のための性能低下
をほとんど生じさせないようにし、かつ、効率のよい擬
似ベクトル処理を通常のデータ処理装置で実現可能とす
るデータ処理装置に関する。
【0002】
【従来の技術】命令によってアドレス可能なレジスタの
数より多いレジスタをアクセス可能なデータ処理装置に
関する従来技術として、例えば、特開昭57−1666
49号公報等に記載された技術が知られている。
【0003】この従来技術は、プログラムによってアド
レス可能な汎用レジスタの数よりも多いハードウエアレ
ジスタと称するレジスタ群を設け、異なった主記憶アド
レスから同一の汎用レジスタに対する複数のロード命令
があったら、該ロード命令の数だけハードウエアレジス
タにそのデータを保持させるというものである。
【0004】すなわち、前記従来技術は、プログラムに
よってアドレス可能な汎用レジスタの数が16である場
合、ハードウエアレジスタを各汎用レジスタ当たり1
6、つまり、合計256個のハードウエアレジスタを用
意し、汎用レジスタ“0”にハードウエアレジスタ
“0”から“15”を割り当て、汎用レジスタ“0”に
対して16個の異なった主記憶アドレスを指定したロー
ド命令が実行された場合、これらの16個のロード命令
からのデータをハードウエアレジスタ“0”からハード
ウエアレジスタ“15”までの中に保持する。
【0005】そして、前記従来技術は、過去に実行され
たロード命令の主記憶アドレスとそのときロードされた
データが格納されているハードウエアレジスタ番号を登
録しておく記憶機構を設け、プログラムで発行されたロ
ード命令が前記記憶機構に登録されている主記憶アドレ
スと一致した場合、主記憶からデータを読まずに、対応
するハードウエアレジスタからデータを読み出すように
している。
【0006】前記従来技術は、このような方式を持つこ
とにより、主記憶の参照回数を低減させることができ、
また、命令間の参照レジスタのぶつかりによる処理装置
の性能の低下を防止することができるものである。
【0007】また、命令によってアドレス可能なレジス
タの数より多いレジスタをアクセス可能なデータ処理装
置に関する他の従来技術として、例えば、Hennesy and
D.A.Patterson“Computer Architecture : A Quantitat
ive Approach", Morgan Kaufmann Publishers, Inc.
(1990)等に記載された技術が知られている。
【0008】この従来技術は、プログラムによってアド
レス可能なレジスタの数より多い物理レジスタと称する
レジスタを設け、これらの物理レジスタを複数個のウィ
ンドウと呼ばれる部分に分けて備えるものである。すな
わち、各ウィンドウは、複数個の物理レジスタから成
る。例えば、プログラムによってレジスタが番号“1”
から“n”まで番号付けられるとし、物理レジスタがn
×m個、すなわち、番号“1”から“n×m”まで設け
られたとする。
【0009】ウィンドウをm個、すなわち、番号“1”
から“m”まで設けるとすれば、ウィンドウ“1”には
物理レジスタ“1”から“n”を割り当て、ウィンドウ
“2”には物理レジスタ“n+1”から“2n”という
ように割り当てることができる。実際には、全ウィンド
ウ共通の物理レジスタ、隣合うウィンドウ共通の物理レ
ジスタ等が設けられるのが通例である。
【0010】そして、各ウィンドウは、1つのプログラ
ムが使用するレジスタを持つ。すなわち、あるプログラ
ムでアドレス可能なレジスタを参照することは、実際に
は、あるウィンドウに属する物理レジスタを参照するこ
とになる。例えば、前述の例の場合、あるプログラムに
ウィンドウ2が割り当てられているものとすると、この
プログラムでレジスタkを指定すれば、参照される物理
レジスタは、物理レジスタ“n+k”になる。
【0011】このウィンドウは、次に説明するように使
用される。いま、あるプログラムにウィンドウjが割り
当てられている場合、このプログラムが別のプログラム
を呼んだ(callした)場合、呼ばれたプログラムに
は、ウィンドウj+1が割り当てられる。また、あるプ
ログラムにウィンドウjが割り当てられていて、このプ
ログラムからこのプログラムを呼んだプログラムに戻っ
た(returnした)場合、戻り先のプログラムに
は、ウィンドウj−1が割り当てられる。
【0012】一般に、プログラムによってアドレス可能
なレジスタの数だけのレジスタしか持たないシステム
は、前記したようなプログラムの呼びが発生する度に、
その呼びの発生時点の情報保存のために、レジスタに格
納されていたデータを主記憶に格納しなければならず、
また、プログラムの戻りが発生する度に、プログラムの
再開のために、主記憶に格納されていたデータをレジス
タに書き戻さなくてはならない。
【0013】前記従来技術は、ウィンドウと物理レジス
タとを前述したように使用することにより、異なるウィ
ンドウが割当てられているプログラムが異なる物理レジ
スタを参照しているので、前述したようなレジスタから
主記憶への格納、主記憶からレジスタへの書き戻しの操
作を不要とすることができ、処理の高速化を図ることが
できる。
【0014】但し、前述したようなウィンドウの機構を
持つ従来技術のシステムは、最大のウィンドウ番号のプ
ログラムからプログラムの呼びが発せられた場合、ウィ
ンドウオーバフローの割込みを起こし、最小のウィンド
ウ番号のプログラムからプログラムの戻りが発せられた
場合、ウィンドウアンダフローの割込みを起こす、とい
う制御が必要になる。
【0015】
【発明が解決しようとする課題】本発明は、命令によっ
てアドレス可能なレジスタの数より多いレジスタをデー
タ処理装置がアクセス可能とする技術に関するものであ
るが、レジスタとして浮動小数点数が格納される浮動小
数点レジスタを使用される場合を例として、前述した従
来技術の問題点を説明する。
【0016】一般に、科学技術計算の大部分は、 A(i)=B(i)*S i=1,N (1) として示されるようなベクトル演算により実行される。
ここで、A、Bは要素数Nのベクトル、Sはスカラであ
る。
【0017】図11は前記式(1)を汎用計算機で実行
させる場合のプログラムであり、以下、このプログラム
を例に説明を続ける。なお、以下の説明において、浮動
小数点レジスタのデータ幅は8バイトとする。
【0018】まず、図11中の各命令の機能を説明す
る。
【0019】FLDM a(GRm),FRn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデータを読み出し、浮動小数点レジスタ
nに格納する。その後、汎用レジスタmの値にaを加え
る。
【0020】FMLT FRj,FRm,FRn (機能)浮動小数点レジスタmの値と浮動小数点レジス
タnの値との積を浮動小数点レジスタjに格納する。
【0021】FSTM a(GRm),FRj (機能)浮動小数点レジスタjの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。その後、汎用レジスタmの値にaを加える。
【0022】BCNT GRm,t (機能)GRmの値から1を減じる。その値がゼロでな
ければ、番地tに分岐する。ゼロならば、分岐しない。
【0023】前述において、図11に示すプログラムの
実行に先立って、ベクトルBは、主記憶アドレスad1
から始まる連続領域に格納されているものとする。すな
わち、ベクトルB(1)の主記憶アドレスがad1、ベ
クトルB(2)の主記憶アドレスがad1+8というよ
うに格納されている。同様に、ベクトルAは、主記憶ア
ドレスad3から始まる連続領域に格納されているもの
とする。また、汎用レジスタ1にはアドレスad1が、
汎用レジスタ3にはアドレスad3が、汎用レジスタ4
にはベクトルの要素数Nが前もって格納されているもの
とし、浮動小数点レジスタ7にはスカラSが前もって格
納されているものとする。
【0024】図11から判るように、No.1のFLDM
命令で、B(i)が浮動小数点レジスタ8にロードさ
れ、No.2のFMLT命令で、該浮動小数点レジスタ8
の値と浮動小数点レジスタ7の値との積が浮動小数点レ
ジスタ10に格納され、No.3のFSTM命令で該浮動
小数点レジスタ10の値が汎用レジスタ3が持つ主記憶
のアドレスにベクトルA(i)としてストアされる。
【0025】すなわち、図11に示すプログラムは、4
命令からなるループを1回実行することにより、1要素
の結果を求めることができ、このループをN回実行する
ことにより、全要素のベクトル計算を行うことができる
ものである。
【0026】このようなプログラムによる演算では、1
ループの実行時間が問題になる。図示プログラムの例で
は、まず、No.1のFLDM命令で浮動小数点レジスタ
8に主記憶からデータをロードしているが、キャッシュ
にデータがある場合、FLDM命令は短いサイクル数で
終了することができるが、キャッシュにデータがない場
合、キャッシュよりかなり低速の主記憶からデータを読
み出さなくてはならず、キャッシュにデータがある場合
に比べ、データの読み出しにかなり時間がかかることに
なる。
【0027】次に、No.2のFMLT命令は、浮動小数
点レジスタ8の値を使用するので、前記No.1のロード
が完了しないと、実行を開始することができない。ま
た、No.3のFSTM命令は、浮動小数点レジスタ10
の値を使用するが、浮動小数点レジスタ10の値は先行
するFMLT命令の実行が終わらないと値が決まらない
ので、No.2の命令の実行終了まで実行を開始すること
ができない。
【0028】すなわち、前述のプログラムは、(1)デ
ータ読み出し時間、(2)レジスタのぶつかりという2
つの性能低下要因がループの実行時間を長くすることに
なる。特に、(1)は長大なデータを扱う計算の場合に
は深刻で、必要なデータがキャッシュに入りきらない場
合が多くなり、性能の低下が大きくなる。
【0029】図12は前述の問題点を解決することので
きるプログラムの例を示す図であり、ループアンローリ
ングと呼ばれる手法である。
【0030】すなわち、この方法は、1ループで複数要
素(=n)を処理し、1ループで1要素を処理する場合
に比べ、ループ回数を1/nにする方法である。図12
に示す例は、1ループで4要素を処理することのできる
ものである。
【0031】図12において、図示プログラムの実行に
先だって、ベクトルBは、主記憶アドレスad1から始
まる連続領域に格納されているものとする。すなわち、
ベクトルB(1)は主記憶アドレスがad1に、ベクト
ルB(2)は主記憶アドレスがad1+8に、というよ
うに格納されている。同様に、ベクトルAは、主記憶ア
ドレスad3から始まる連続領域に格納されるものとす
る。また、汎用レジスタ1には主記憶アドレスad1
が、汎用レジスタ3には主記憶アドレスad3が、汎用
レジスタ4にはベクトルの要素数Nの1/4が前もって
格納され、さらに、浮動小数点レジスタ7にはスカラS
が前もって格納されているものとする。
【0032】図12に示すプログラムは、13命令から
なるループを1回実行することによって、4要素の結果
を求めることができ、このループをN/4回実行するこ
とによって全要素の計算を行うことができる。
【0033】すなわち、図12に示すプログラムは、i
番目の要素に関し、ロードをNo.1のFLDM命令で、
乗算をNo.5のFMLT命令で、ストアをNo.9のFS
TM命令で行う。同様に、i+1番目の要素に関し、ロ
ードをNo.2のFLDM命令で、乗算をNo.6のFML
T命令で、ストアをNo.10のFSTM命令で行う。同
様に、i+2番目の要素に関し、ロードをNo.3のFL
DM命令で、乗算をNo.7のFMLT命令で、ストアを
No.11のFSTM命令で行う。同様に、i+3番目の
要素に関し、ロードをNo.4のFLDM命令で、乗算を
No.8のFMLT命令で、ストアをNo.12のFSTM
命令で行う。
【0034】従って、図12に示すプログラムは、図1
1に示すプログラムに比較して、ある1つの要素番号で
示されるベクトル要素に関するロード、乗算、ストアと
いう一連の処理が、命令列上で離れて行われることにな
り、前述した(1)データ読み出し時間、(2)レジス
タのぶつかりという2つの性能低下要因の影響を低減す
ることができるものである。
【0035】例えば、図12において、No.1のFLD
M命令でB(i)のロードが行われるが、そのロードの
結果が使用されるのは、4命令後になるので、データ読
み出し時間が4サイクル以内であれば、そのロード結果
を使用するNo.5のFMLT命令が待たされることがな
くなる。また、No.5のFMLT命令による乗算結果B
(i)*Sが使用されるのが4命令後になるので、乗算
に要する時間が4サイクル以内であれば、No.9のFS
TM命令が待たされることがなくなる。
【0036】前述したように、ループアンローリングの
手法を使用することにより、処理性能の向上を図ること
ができるが、ループアンローリングの手法は、多くのレ
ジスタを必要とするという欠点を有している。すなわ
ち、図11に示すプログラムが3本の浮動小数点レジス
タを必要とするのに対し、図12に示すプログラムは、
9本もの浮動小数点レジスタを必要とする。ループアン
ローリングの手法は、データの読み出しに要する時間が
さらに長く、あるいは、演算に要する時間がさらに長い
等の場合、さらに多くのベクトル要素を1ループで処理
しなくてはならず、より多くのレジスタを必要とするこ
とになる。
【0037】一般に、レジスタは、アクティブな素子
(すなわち、メモリ素子ではない)で構成され、読み出
し/書き込みのためのポート(すなわち、データの出入
口)を多く用意することができるので、いわゆる記憶装
置が1つの動作サイクルに1個のデータの読み出し/書
き込みしかできないのに比べ、極めて高速に動作可能で
ある。従って、処理装置の高速化のためには、主記憶は
もちろん、キャッシュに比べても高速に動作可能な充分
な容量のレジスタを備えていることが必要不可欠であ
る。それにもかかわらず、従来、レジスタの数が比較的
少なかった理由は、レジスタのビット当たりのコストが
高価であったことと、以下に説明するように、命令形式
上のレジスタ番号のフィールドの長さに制限があったた
めである。コストの問題は、レジスタのLSI化により
解決されつつあるが、後者は、まだ未解決である。
【0038】また、一般に、プログラムによりアドレス
可能なレジスタの数は、アーキテクチャ上から制限され
ている。例えば、命令語中にレジスタ指定フィールドが
5ビットあれば、アドレス可能なレジスタの数は32
(2の5乗)である。このレジスタ指定フィールドのビ
ット数を増加させれば、プログラムによりアドレス可能
なレジスタの数を増加させることができるが、このよう
にすることは、命令形式を変更することになるので、既
存のプログラムの変更が必要となり非現実的である。
【0039】そこで、データ処理装置のアーキテクチャ
を変更することなく、命令によってアドレス可能なレジ
スタの数より多いレジスタをデータ処理装置がアクセス
可能とする方式が必要となる。このような方法が、前述
で説明した従来技術である。前者の従来技術は、過去に
ロード命令が実行された主記憶アドレスに対し、新たに
ロード命令が実行された場合に処理の高速化を図ること
ができる。しかし、この従来技術は、式(1)に示すよ
うな、主記憶上のデータに対するロード要求が1度しか
出ないベクトル計算を行う場合、処理の高速化を図るこ
とができないという問題点を有している。
【0040】また、後者の従来技術は、1つのプログラ
ムで使えるレジスタがある1つのウインドウに属する物
理レジスタのみであり、その数がプログラムでアドレス
可能なレジスタの数に等しく、1つのプログラムで行わ
れる演算を高速化することができないという問題点を有
している。
【0041】すなわち、前述した後者の従来技術は、ウ
インドウの機能が、プログラムの呼びと戻りとが発生す
る場合にのみ、処理の高速化を行うことが可能とするも
のであり、式(1)により示したベクトル計算のよう
に、1つのプログラムで処理が完結しているような場
合、処理の高速化を図ることができないという問題点を
有している。
【0042】また、後者の従来技術におけるウインドウ
オーバフロー、ウインドウアンダフローの割込みは、式
(1)に示したベクトル計算のように1つのプログラム
で処理が完結していて、プログラムの呼びと戻りが発生
しない場合、不要であるという問題点を有している。
【0043】本発明の目的は、前述した従来技術の問題
点を解決し、データ処理装置のアーキテクチャを変更す
ることなく、命令によってアドレス可能なレジスタの数
より多いレジスタをデータ処理装置がアクセス可能と
し、科学技術計算におけるベクトル計算を高速に実行す
ることのできるデータ処理装置を提供することにある。
【0044】
【課題を解決するための手段】本発明によれば前記目的
は、通常命令の浮動小数点レジスタフィールドによって
アドレス可能な浮動小数点レジスタの数より多い、物理
浮動小数点レジスタ番号で参照される物理浮動小数点レ
ジスタと呼ばれる浮動小数点レジスタと、ウィンドウス
タートポインタと呼ばれる数を格納するウィンドウスタ
ートポインタレジスタと、ウィンドウスタートポインタ
が有効であることを示すウィンドウスタートポインタ有
効レジスタと呼ばれるレジスタと、該ウィンドウスター
トポインタ有効レジスタが“1”のときに、ウィンドウ
スタートポインタの値によって、論理浮動小数点レジス
タ番号と呼ばれる、命令中の浮動小数点レジスタフィー
ルドに示された値を物理浮動小数点レジスタ番号に変換
する変換回路とを備え、さらに、命令として、命令中に
通常命令の浮動小数点レジスタフィールドより長い浮動
小数点レジスタフィールドを持ち、論理浮動小数点レジ
スタ番号をウィンドウスタートポインタによって変換し
た物理浮動小数点レジスタに主記憶データを格納する浮
動小数点レジスタプリロード命令と、命令中に通常命令
の浮動小数点レジスタフィールドより長い浮動小数点レ
ジスタフィールドを持ち、論理浮動小数点レジスタ番号
をウィンドウスタートポインタによって変換した物理浮
動小数点レジスタから主記憶にデータを格納する浮動小
数点レジスタポストストア命令と、ウィンドウスタート
ポインタレジスタに値をセットするウィンドウスタート
ポインタセット命令とを設けることにより達成される。
【0045】本発明によれば、前述の構成を備えること
により、通常命令の形式を変更する必要がないので、デ
ータ処理装置のアーキテクチャを変更する必要がなく、
従来のプログラムの書き変えを行う必要がない。
【0046】
【作用】本発明により新たに設けられる前記浮動小数点
レジスタプリロード命令、前記浮動小数点レジスタポス
トストア命令以外の浮動小数点レジスタを参照する通常
命令は、全てウインドウスタートポインタ有効レジスタ
の値が“1”である場合、論理浮動小数点レジスタ番号
−物理浮動小数点レジスタ番号変換が行われ、浮動小数
点レジスタの参照で物理浮動小数点レジスタ番号が参照
される。また、ウィンドウスタートポインタ有効レジス
タの値が“0”の場合、論理浮動小数点レジスタ番号
は、物理浮動小数点レジスタ番号に等しいとして扱われ
る。
【0047】そして、前記浮動小数点レジスタプリロー
ド命令、前記浮動小数点レジスタポストストア命令は、
ウィンドウスタートポインタ有効レジスタの値が“1”
である場合、前述と同様に、論理浮動小数点レジスタ番
号−物理浮動小数点レジスタ番号変換が行われ、この結
果により、物理浮動小数点レジスタの参照が行われる。
また、ウィンドウスタートポインタ有効レジスタの値が
“0”の場合、論理浮動小数点レジスタ番号は、参照さ
れる物理浮動小数点レジスタ番号に等しい。
【0048】論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換は、以下のようにして行われる。
【0049】以下の説明では、通常命令の論理浮動小数
点レジスタが32本、すなわち、通常命令中の浮動小数
点レジスタ指定フィールドが5ビットで、命令により、
論理浮動小数点レジスタ番号を、“0”から“31”ま
で指定可能であるとする。また、物理浮動小数点レジス
タが128本で、物理浮動小数点レジスタ番号は“0”
から“127”であるとする。また、物理浮動小数点レ
ジスタの本数をmr、mrが2のべき乗であるときはそ
の指数の値をsmという記号で表すものとする。すなわ
ち、mr=2**smと表す。なお、“**”はべき乗
を表わす。mrが2のべき乗でないときは、log2mrよ
り大きく、最も近い整数をsmとする。そして、以下で
は、smをポインタ幅最大値と呼ぶことにする。
【0050】すなわち、前述の例では、mr=128、
sm=7である。そして、物理浮動小数点レジスタのう
ち、論理浮動小数点レジスタ番号−物理浮動小数点レジ
スタ番号変換において、必ず同一のレジスタ番号に変換
され、全ウィンドウで共通に使用されるレジスタをグロ
ーバルレジスタと呼び、グローバルレジスタの本数をm
gという記号で表すこととする。また、ウィンドウスタ
ートポインタレジスタのビット数をウィンドウスタート
ポインタレジスタ幅と呼び、q(qはsm以下の正の整
数値)という記号で表し、2**(sm−q)をウィン
ドウ刻み幅と呼び、以後spという記号で表すことにす
る。また、ウィンドウスタートポインタの値をFWST
Pと表す。
【0051】ここで説明する例では、sm=7、q=5
であり、従って、sp=4、通常命令の浮動小数点レジ
スタ指定フィールドは5ビット、浮動小数点レジスタプ
リロード命令、浮動小数点レジスタポストストア命令の
浮動小数点レジスタ指定フィールドは7ビットとする。
また、論理浮動小数点レジスタ番号をrと表記すると、
物理浮動小数点レジスタ番号は、FWSTPとrとによ
り決まるので、<FWSTP,r>と表記することにす
る。
【0052】前述した例の場合、以下のように論理浮動
小数点レジスタ番号−物理浮動小数点レジスタ番号変換
が行われる。
【0053】1. 0≦r≦mg−1の時 : FWS
TPに関係なく <FWSTP,r>=r ……(2) 2. mg≦r≦31の時 : <FWSTP,r>=mg+{sp*FWSTP+〔r−mg〕,〔mod(mr−mg)〕} ……(3) 図3は前述の式(2)、(3)で表わされる論理浮動小
数点レジスタ番号−物理浮動小数点レジスタ番号変換法
を、FWSTP=15、mr=128,mg=8の場合
を例にして説明する図である。
【0054】式(2)、式(3)で表わされる変換法
は、以下の5つが特長的である。
【0055】1.“0”番から“mg−1”番の理浮動
小数点レジスタは、各FWSTP共通に使用される。こ
れらのレジスタは、グローバルレジスタとして、それぞ
れのFWSTPを用いる演算ループに共通のデータを保
持する。
【0056】2.グローバルレジスタ以外のレジスタ
で、あるFWSTPで指定できる論理浮動小数点レジス
タと、別のFWSTPで指定できる論理浮動小数点レジ
スタには同一の物理浮動小数点レジスタを指すものがあ
る。これらのレジスタは、オーバラップレジスタとして
異なるFWSTPを用いる演算ループ間のデータの受渡
しに用いられる。
【0057】3.ポインタ幅最大値smまたはウィンド
ウスタートポインタレジスタ幅qを変えることによっ
て、ウィンドウ刻み幅を変えることができる。例えば、
sm=7のとき、q=6の場合、2レジスタ刻み、q=
4の場合、8レジスタ刻みとなる。以後の説明ではsm
=7,q=5に固定して述べる。
【0058】4. 通常命令はrが5ビット、浮動小数
点レジスタプリロード命令、浮動小数点レジスタポスト
ストア命令はrが7ビットであるから、図3に示すよう
に、通常命令は、グローバルレジスタとして物理浮動小
数点レジスタ“0”から“mg−1”、ローカルレジス
タとして“FWSTP*sp+mg”から“FWSTP
*sp+31”(127を越えるとmgにラップアラウ
ンドする)をアクセスすることができ、浮動小数点レジ
スタプリロード命令、浮動小数点レジスタポストストア
命令は、全物理浮動小数点レジスタをアクセスすること
ができる。
【0059】5.mgを可変にすることにより、演算ル
ープに共通のデータ(ループインバリアントという)の
数の違うアプリケーションに柔軟に対応できる。
【0060】図4、図5はsp=4の場合の通常命令に
ついての全FWSTPに対する論理浮動小数点レジスタ
番号−物理浮動小数点レジスタ番号変換を説明する図、
図6、図7はsp=4の場合の浮動小数点レジスタプリ
ロード命令、浮動小数点レジスタポストストア命令につ
いての全FWSTPに対する論理浮動小数点レジスタ番
号−物理浮動小数点レジスタ番号変換を説明する図であ
る。
【0061】以後の説明では、mg=8に固定し、本発
明により新設される命令の命令ニモニックと機能とを、
一例として、以下のように定める。
【0062】1.ウィンドウスタートポインタセット命
令 (命令ニモニック) FWSTPS u,v (機能)u=0のとき、ウィンドウスタートポインタレ
ジスタにvをセットする。u=1のとき、ウィンドウス
タートポインタレジスタの値にvを加える。この場合、
加算は(mr−mg)/spを法として行われる。すな
わち、u=0で、v=1をセットするとFWSTP=1
となる。
【0063】2.浮動小数点レジスタプリロード命令 (命令ニモニック) FLDPRM a(GRm),F
Rn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデータを読み出し、浮動小数点レジスタ
nに格納する。このとき、前述した式(2)、(3)に
従って、論理浮動小数点レジスタ番号−物理浮動小数点
レジスタ番号変換が行われる。その後、汎用レジスタm
の値にaを加える。
【0064】3.浮動小数点レジスタポストストア命令 (命令ニモニック) FSTPOM a(GRm),F
Rn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。このとき、式(2)、(3)に従って、論理浮動小
数点レジスタ番号−物理浮動小数点レジスタ番号変換が
行われる。その後、汎用レジスタmの値にaを加える。
【0065】また、通常命令、すなわち、浮動小数点レ
ジスタを用いる命令で前記2、3を除く命令では、前記
式(2)、(3)に従って、論理浮動小数点レジスタ番
号−物理浮動小数点レジスタ番号変換が行われる。
【0066】本発明は、modulo scheduling と呼ばれる
コ−ディング法に特に有効である。modulo scheduling
に関しては、B.R.Rau et al. “Register Allocation f
or Software Pipelined Loops”:ACM SIGPLA
N ,92 pp.283−299、及び、P.Tirumalai
et al. “Parallelization Of Loops With Exits OnPip
elined Architectures”:Supercomputing 90 ,p
p.200−212に記述されている。
【0067】以下に説明する本発明が適用される計算機
は、複数命令を並列に実行することがスーパースカラプ
ロセッサであるとする。特に、以下では、ロード命令、
演算命令、ストア命令を並列に実行することが可能なス
ーパースカラプロセッサについて説明する。
【0068】以下の説明において、計算機は、ロード命
令を実行するユニット、演算命令を実行するユニット、
ストア命令を実行するユニットが分離されており、同時
に起動できるものとする。
【0069】図8は前述した式(1)をmodulo schedul
ing によりコーディングしたプログラムの例を示す図で
ある。
【0070】図8において、LOAD B(i)は、B
(i)を主記憶から浮動小数点レジスタにロードする命
令であり、浮動小数点レジスタ番号は省略して記してあ
る。MULT B(i)*Sは、LOAD B(i)に
よって主記憶から浮動小数点レジスタにロードされたB
(i)と別の浮動小数点レジスタに格納されているSと
の乗算を行って、さらに別の浮動小数点レジスタに格納
する命令であり、浮動小数点レジスタ番号は省略して記
してある。
【0071】STORE A(i)は、前述の命令MU
LT B(i)*Sによって浮動小数点レジスタに格納
された演算結果を主記憶のA(i)の位置にストアする
命令であり、浮動小数点レジスタ番号は省略して記して
ある。なお、図8に示す「サイクル」は、マシンサイク
ル単位の時刻を表し、同一サイクルのところに書かれて
いる命令の実行が同時に開始される。
【0072】すなわち、サイクル1では、LOAD B
(1)のみの実行が開始され、サイクル5では、LOA
D B(5)と、MULT B(1)*Sとが同時に実
行開始され、サイクル9では、LOAD B(9)、M
ULT B(5)*S、及び、STORE A(1)が
同時に実行開始される。
【0073】実際のプログラムの命令列は、同時に実行
が開始される複数の命令が逐次的に書かれている。例え
ば、サイクル5で同時実行されるLOAD B(5)、
及び、MULT B(1)*Sは、実際のプログラム上
では、この順に書かれている。そして、ハードウエア
が、この連続する2命令LOAD B(5)、MULT
B(1)*Sが同時に実行を開始できることを判定し、
それぞれの実行ユニットに起動をかける。
【0074】以下、図8に示す命令の意味について説明
する。
【0075】前述した式(1)を実行するためには、各
要素の処理を1つの iterationによって行い、1つの i
terationは、ステージ1:Bのロード、ステージ2:乗
算、ステージ3:Aへのストアの3ステージとする。そ
して、各ステージは、その実行に4サイクルを要すると
仮定する。すなわち、メモリの読み出し、乗算、メモリ
への書き込みにそれぞれ4サイクルを要するものとす
る。
【0076】前述の場合、第i要素に関するステージ1
の開始から、ステージ2の開始までに4サイクル、ステ
ージ2の開始からステージ3の開始までに4サイクルを
要することになる。そこで、第i要素に関するロードの
4サイクル後に乗算を開始し、その4サイクル後にスト
アを開始することにする。また、第i要素に関するロー
ドの1サイクル後に、第i+1要素に関するロードを開
始し、第i要素に関する乗算の1サイクル後に、第i+
1要素に関する乗算を開始し、第i要素に関するストア
の1サイクル後に、第i+1要素に関するストアを開始
することにする。
【0077】このように命令をスケジューリングする
と、プログラムは、図8に示すように、第i+8要素に
関するステージ1と、第i+4要素に関するステージ2
と、第i要素に関するステージ3を同時に実行すること
ができる部分があることになる。この部分をカーネルと
呼ぶ。
【0078】前述において、“同時に実行する”といっ
た意味は、第i+8要素に関するステージ1と、第i+
4要素に関するステージ2と、第i要素に関するステー
ジ3との各サイクルが同一時刻に同時に進行しているこ
とである。これは、本発明で対象とする計算機が、ロー
ド命令、演算命令、ストア命令を並列実行可能なスーパ
ースカラプロセッサであることにより可能とされる。す
なわち、カーネル部分は、3ステージが同時に処理され
ていているので、高速な処理が可能である。
【0079】なお、図8に示すようなプログラムで、カ
ーネルの前の部分をプロローグ、カーネルの後の部分を
エピローグと呼ぶ。そして、前述したように、実際のプ
ログラムの命令列は、同時に実行が開始される複数の命
令が逐次的に書かれている。
【0080】ここで、本発明を適用する計算機が、ロー
ド命令またはストア命令と、演算命令とを並列に実行す
ることが可能な、すなわち、ロード命令とストア命令と
を同時に実行することができないスーパースカラプロセ
ッサであってもよい。すなわち、前述のスーパースカラ
プロセッサよりも低性能のスーパースカラプロセッサで
あってもよい。この場合、図8のカーネル部分の各サイ
クルが2サイクル(LOAD命令を行うサイクルと、M
ULT命令及びSTORE命令を行うサイクル)になる
だけで、本質の動作は同一である。
【0081】図9、図10は前記した式(1)をmodulo
scheduling を用いてコーディングした図8に示すプロ
グラムを、本発明に適用するようにしたプログラムの例
を示す図である。
【0082】図9、図10のプログラムを実行する計算
機は、前述の場合と同様に、ロード命令、演算命令、ス
トア命令を並列に実行することが可能なスーパースカラ
プロセッサであるとする。また、図9、図10に示すプ
ログラムの実行に先立って、ベクトルBは、主記憶アド
レスad1から始まる連続領域に格納されているものと
する。すなわち、B(1)の主記憶アドレスがad1、
B(2)の主記憶アドレスがad1+8というように格
納されている。同様に、ベクトルAは、主記憶アドレス
ad3から始まる連続領域に格納されているものとす
る。さらに、汎用レジスタ1にはad1が、汎用レジス
タ3にはad3が、汎用レジスタ4にはN−8が格納さ
れ、ウィンドウスタートポインタ有効レジスタには1
が、物理浮動小数点レジスタ7にはSが格納されている
ものとする。
【0083】以下、図9、図10のプログラムについて
説明する。
【0084】No.1のFWSTPS命令は、ウィンドウ
スタートポインタに“0”をセットする。No.2のFL
DPRM命令は、FWSTP=“0”であるので、B
(1)を物理浮動小数点レジスタ<0,8>に格納す
る。No.3のFLDPRM命令は、FWSTP=“0”
であるので、B(2)を物理浮動小数点レジスタ<0,
12>(=物理浮動小数点レジスタ<1,8>)に格納
する。No.4のFLDPRM命令は、FWSTP=
“0”であるので、B(3)を物理浮動小数点レジスタ
<0,16>(=物理浮動小数点レジスタ<2,8>)
に格納する。No.5のFLDPRM命令は、FWSTP
=“0”であるので、B(4)を物理浮動小数点レジス
タ<0,20>(=物理浮動小数点レジスタ<3,8
>)に格納する。No.6のFLDPRM命令は、FWS
TP=“0”であるので、B(5)を物理浮動小数点レ
ジスタ<0,24>(=物理浮動小数点レジスタ<4,
8>)に格納する。
【0085】No.7のFMLT命令は、論理浮動小数点
レジスタ7が指定されており、該レジスタが式(2)に
より物理浮動小数点レジスタ7、すなわち、グローバル
レジスタであるので、物理浮動小数点レジスタ7の値
(=S)を読み出し、FWSTP=“0”であるので、
物理浮動小数点レジスタ<0,8>〔=B(1)〕と積
をとって、物理浮動小数点レジスタ<0,10>に格納
する。No.8のFWSTPS命令は、ウィンドウスター
トポインタに1を加える。すなわち、FWSTP=1と
なる。No.9のFLDPRM命令は、FWSTP=
“1”であるので、B(6)を物理浮動小数点レジスタ
<1,24>(=物理浮動小数点レジスタ<5,8>)
に格納する。
【0086】No.10のFMLT命令は、FWSTP=
“1”であるので、物理浮動小数点レジスタ<1,8>
(=B(2))とSとの積をとって、その結果を物理浮
動小数点レジスタ<1,10>に格納する。No.11の
FWSTPS命令は、ウィンドウスタートポインタに1
を加える。すなわち、FWSTP=2となる。No.12
のFLDPRM命令は、FWSTP=“2”であるの
で、B(7)を物理浮動小数点レジスタ<2,24>
(=物理浮動小数点レジスタ<6,8>)に格納する。
【0087】No.13のFMLT命令は、FWSTP=
“2”であるので、物理浮動小数点レジスタ<2,8>
〔=B(3)〕とSとの積をとって、その結果物理浮動
小数点レジスタ<2,10>に格納する。No.14のF
WSTPS命令は、ウィンドウスタートポインタに1を
加える。すなわち、FWSTP=3となる。No.15の
FLDPRM命令は、FWSTP=“3”であるので、
B(8)を物理浮動小数点レジスタ<3,24>(=物
理浮動小数点レジスタ<7,8>)に格納する。
【0088】No.16のFMLT命令は、FWSTP=
“3”であるので、物理浮動小数点レジスタ<3,8>
〔=B(4)〕とSとの積をとって、その結果を物理浮
動小数点レジスタ<3,10>に格納する。No.17の
FWSTPS命令は、ウィンドウスタートポインタに1
を加える。すなわち、FWSTP=4となる。
【0089】以上説明したNo.1からNo.17までの命
令列が図8に示したプロローグを形成している。そし
て、次のNo.18のFLDPRM命令からNo.22のB
CNT命令までがループを構成し、N−8回繰返し実行
される。
【0090】以下、第i回目に実行されるループについ
て説明する(iは1から始まる)。なお、FWSTPは
i+3(mod 30)を指しているものとする。
【0091】No.18のFLDPRM命令は、FWST
P=i+3(mod 30)であるので、B(i+8)
を、物理浮動小数点レジスタ<i+3(mod 3
0),24>(=物理浮動小数点レジスタ<i+7(m
od 30),8>)にロードする。ここで、このロー
ドされたデータは、4サイクル後にNo.19のFMLT
命令で使用される。
【0092】No.19のFMLT命令は、FWSTP=
i+3(mod 30)であるので、物理浮動小数点レ
ジスタ<i+3(mod 30)、8>(=B(i+
4))とSとの積をとって、その結果を物理浮動小数点
レジスタ<i+3(mod 30),10>に格納す
る。ここで、物理浮動小数点レジスタ<i+3(mod
30),8>に格納されているデータは、4サイクル前
にNo.18のFLDPRM命令でロードされたものであ
る。また、物理浮動小数点レジスタ<i+3(mod
30),10>に格納されるデータは、4サイクル後の
No.20のFSTPOM命令で使用される。
【0093】No.20のFSTPOM命令は、FWST
P=i+3(mod 30)であるので、物理浮動小数
点レジスタ<i+3(mod 30),114>(=物
理浮動小数点レジスタ<i−1(mod 30),10
>)の値をA(i)の主記憶位置に格納する。ここで、
物理浮動小数点レジスタ<i+3(mod 30),1
14>(=物理浮動小数点レジスタ<i−1(mod
30),10>)に格納されているデータは、4サイク
ル前にNo.19のFMLT命令で格納されたものであ
る。
【0094】No.21のFWSTPS命令は、ウィンド
ウスタートポインタに1を加える。すなわち、FWST
P=i+4(mod 30)となる。No.22のBCN
T命令でループの先頭に戻る。
【0095】前述したように、第iループの中では、4
つ後のループで乗算されるデータB(i+8)を物理浮
動小数点レジスタ<i+3(mod 30),24>
(=物理浮動小数点レジスタ<i+7(mod 3
0),8>)に格納し、4つ前のループで物理浮動小数
点レジスタ<i+3(mod 30),8>に格納され
たB(i+4)を用いて乗算を行い、その結果を物理浮
動小数点レジスタ<i+3(mod 30),10>に
格納し、4つ前のループで得られた乗算結果であり、物
理浮動小数点レジスタ<i+3(mod 30),11
4>(=物理浮動小数点レジスタ<i−1(mod 3
0),10>)に格納されているB(i)*Sを、A
(i)の主記憶位置に格納するという処理を行ってい
る。
【0096】前述したNo.18のFLDPRM命令から
No.22のBCNT命令までが、図8に示したカーネル
の部分に相当する。
【0097】前述したループを抜けた後のNo.23から
No.41の命令は、未処理の要素の処理であり、引き続
き、これについて説明する。
【0098】No.23のFMLT命令は、FWSTP=
N−4(mod 30)であるので、物理浮動小数点レ
ジスタ<N−4(mod 30),8>(=B(N−
3))とSとの積をとって、その結果を物理浮動小数点
レジスタ<N−4(mod 30),10>に格納す
る。No.24のFSTPOM命令は、FWSTP=N−
4であるので、物理浮動小数点レジスタ<N−4(mo
d 30),114>(=物理浮動小数点レジスタ<N
−8(mod 30),10>)の値を、A(N−7)
の主記憶位置に格納する。No.25のFWSTPS命令
は、ウィンドウスタートポインタに1を加える。すなわ
ち、FWSTP=N−3(mod 30)となる。
【0099】No.26のFMLT命令は、FWSTP=
N−3であるので物理浮動小数点レジスタ<N−3(m
od 30),8>〔=B(N−2)〕とSとの積をと
って、その結果を物理浮動小数点レジスタ<N−3(m
od 30),10>に格納する。No.27のFSTP
OM命令は、FWSTP=N−3であるので、物理浮動
小数点レジスタ<N−3(mod 30),114>
(=物理浮動小数点レジスタ<N−7(mod 3
0),10>)の値をA(N−6)の主記憶位置に格納
する。No.28のFWSTPS命令は、ウィンドウスタ
ートポインタに1を加える。すなわち、FWSTP=N
−2(mod 30)となる。
【0100】No.29のFMLT命令は、FWSTP=
N−2(mod 30)であるので、物理浮動小数点レ
ジスタ<N−2(mod 30),8>〔=B(N−
1)〕とSとの積をとって、その結果を物理浮動小数点
レジスタ<N−2(mod 30)、10>に格納す
る。No.30のFSTPOM命令は、FWSTP=N−
2であるので、物理浮動小数点レジスタ<N−2(mo
d 30),114>(=物理浮動小数点レジスタ<N
−6(mod 30),10>)の値をA(N−5)の
主記憶位置に格納する。No.31のFWSTPS命令
は、ウィンドウスタートポインタに1を加える。すなわ
ち、FWSTP=N−1(mod 30)となる。
【0101】No.32のFMLT命令は、FWSTP=
N−1(mod 30)であるので、物理浮動小数点レ
ジスタ<N−1(mod 30),8>(=B(N))
とSとの積をとって、その結果を物理浮動小数点レジス
タ<N−1(mod 30),10>に格納する。No.
33のFSTPOM命令は、FWSTP=N−1(mo
d 30)であるので、物理浮動小数点レジスタ<N−
1(mod 30),114>(=物理浮動小数点レジ
スタ<N−5(mod 30),10>)の値をA(N
−4)の主記憶位置に格納する。No.34のFWSTP
S命令は、ウィンドウスタートポインタに1を加える。
すなわち、FWSTP=N(mod 30)となる。
【0102】No.35のFSTPOM命令は、FWST
P=N(mod 30)であるので、物理浮動小数点レ
ジスタ<N(mod 30),114>(=物理浮動小
数点レジスタ<N−4(mod 30),10>)の値
をA(N−3)の主記憶位置に格納す。No.36のFW
STPS命令は、ウィンドウスタートポインタに1を加
える。すなわち、FWSTP=N+1(mod 30)
となる。
【0103】No.37のFSTPOM命令は、FWST
P=N+1(mod 30)であるので、物理浮動小数
点レジスタ<N+1(mod 30),114>(=物
理浮動小数点レジスタ<N−3(mod 30),10
>)の値をA(N−2)の主記憶位置に格納する。No.
38のFWSTPS命令は、ウィンドウスタートポイン
タに1を加える。すなわち、FWSTP=N+2(mo
d 30)となる。
【0104】No.39のFSTPOM命令は、FWST
P=N+2(mod 30)であるので、物理浮動小数
点レジスタ<N+2(mod 30),114>(=物
理浮動小数点レジスタ<N−2(mod 30),10
>)の値をA(N−1)の主記憶位置に格納する。No.
40のFWSTPS命令は、ウィンドウスタートポイン
タに1を加える。すなわち、FWSTP=N+3(mo
d 30)となる。
【0105】No.41のFSTPOM命令は、FWST
P=N+3(mod 30)であるので、物理浮動小数
点レジスタ<N+3(mod 30),114>(=物
理浮動小数点レジスタ<N−1(mod 30),10
>)の値をA(N)の主記憶位置に格納する。
【0106】前述で説明したNo.23からNo.41まで
の命令列が図8に示すプログラムのエピローグの部分に
相当する。
【0107】前述で説明したプログラムは、第iループ
内の処理から判るように、No.18のFLDPRM命令
で論理浮動小数点レジスタ番号24にデータを書き込
み、直後のNo.19のFMLT命令で論理浮動小数点レ
ジスタ8を使用している。そして、No.18のFLDP
RM命令でアクセスしている物理浮動小数点レジスタ
は、<i+3(mod 30),24>、すなわち<i
+7(mod 30),8>であり、No.19のFML
T命令でアクセスしている物理浮動小数点レジスタ<i
+3(mod 30),8>とは異なる。従って、デー
タの読み出し待ちにより、後続の命令の実行が待たされ
るという現象は起こらず、言いかえれば、データ読み出
しは、4ループ後のFMLT命令の実行までに完了すれ
ばよいわけである。この結果、プログラムが高速に実行
できることになる。
【0108】前述において、No.18のFLDPRM命
令、No.19のFMLT命令、No.20のFSTPOM
命令は、同時に実行が開始されている。すなわち、この
4ループ後のFMLT命令の実行は、〔(No.18のF
LDPRM命令、No.19のFMLT命令、No.20の
FSTPOM命令)の実行開始サイクル(=1サイク
ル)+No.21のFWSTPS命令の実行サイクル+N
o.22のBCNT命令の実行サイクル〕*4のサイクル
数後に行われるので、4サイクルかかるデータ読み出し
は、4ループ後には完了しており、データ読み出し待ち
による性能低下はない。
【0109】また、No.19のFMLT命令で論理浮動
小数点レジスタ番号10にデータを書き込み、直後のN
o.20のFSTPOM命令で論理浮動小数点レジスタ1
14を使用している。No.19のFMLT命令でアクセ
スしている物理浮動小数点レジスタは<i+3(mod
30),10>であり、No.20のFSTPOM命令
でアクセスしている物理浮動小数点レジスタ<i+3
(mod 30),114>,すなわち<i−1(mo
d 30),10>とは異なる。従って、演算結果待ち
により、後続の命令の実行が待たされるという現象は起
こらず、言いかえれば、乗算は、4ループ後の実行まで
に完了すればよいわけである。この結果、プログラムが
高速に実行できることになる。
【0110】前述したように、No.18のFLDPRM
命令、No.19のFMLT命令、No.20のFSTPO
M命令は、同時に実行が開始されている。すなわち、こ
の4ループ後のFSTPOM命令の実行は、〔(No.1
8のFLDPRM命令、No.19のFMLT命令、No.
20のFSTPOM命令)の実行開始サイクル(=1サ
イクル)+No.21のFWSTPS命令の実行サイクル
+No.22のBCNT命令の実行サイクル〕*4のサイ
クル数後に行われので、4サイクルかかる乗算は、4ル
ープ後には完了しており、演算実行待ちによる性能低下
はない。
【0111】第iループの処理を、前述のようにした理
由は以下の通りである。
【0112】第iループにおいて、No.18のFLDP
RM命令で物理浮動小数点レジスタ<i+3(mod
30),24>にデータをロードしているが、この物理
浮動小数点レジスタは<i+7(mod 30),8>
=<(i+3)+4(mod30),8>と同一であ
る。すなわち、当該ループのFWSTPに4を加えたF
WSTPに対して、論理浮動小数点レジスタ8である。
4ループ後には、当該ループのFWSTPに4を加えた
値がFWSTPになるので、当該物理浮動小数点レジス
タは4ループ後のNo.19のFMLT命令でアクセスさ
れる〔なぜなら、4ループ後のNo.19のFMLT命令
では物理浮動小数点レジスタは<i+7(mod 3
0),8>がアクセスされるからである〕。
【0113】第iループにおいて、No.20のFSTP
OM命令で物理浮動小数点レジスタ<i+3(mod
30),114>から、データがストアされるが、この
物理浮動小数点レジスタは<i−1(mod 30),
10>=<(i+3)−4(mod 30),10>と
同一である。すなわち、当該ループのFWSTPから4
を減じたFWSTPに対して、論理浮動小数点レジスタ
8である。4ループ前には、当該ループのFWSTPか
ら4を減じた値がFWSTPであるので、当該物理浮動
小数点レジスタは、4ループ前のNo.19のFMLT命
令で演算結果が格納されている〔なぜなら、4ループ前
のNo.19のFMLT命令で、物理浮動小数点レジスタ
は<i−1(mod 30),10>に演算結果を格納
しているからである)。
【0114】すなわち、あるループのNo.18のFLD
PRM命令は、そのループのFWSTPに4を加えたF
WSTPの下での(すなわち4ループ後の)論理浮動小
数点レジスタ8にデータをロードしている。4ループ
後、すなわち、FWSTPに4が加えられたループのN
o.19のFMLT命令は、前記論理浮動小数点レジスタ
8の値を用いて演算を行い、その結果を論理浮動小数点
レジスタ10に入れる。さらに、4ループ後、すなわ
ち、さらに、FWSTPに4が加えられループのNo.2
0のFSTPOM命令は、FWSTPから4が減じられ
たループ(すなわち4ループ前)の論理浮動小数点レジ
スタ10のデータをストアしている。
【0115】すなわち、図9、図10に示すプログラム
は、異なるFWSTPに対する同一論理浮動小数点レジ
スタを指定して、データをループ間で受け渡しているこ
とになり、これを通常命令より長いレジスタフィールド
によって実現しているのである。
【0116】本発明に使用する図9、図10のプログラ
ムは、ウィンドウスタートポインタの更新の処理があっ
てオーバヘッドになっており、プログラムのループが5
命令で構成されている。しかし、図9、図10のプログ
ラムは、ループを構成する5命令の中の3命令が同時に
実行できるうえ、ウィンドウスタートポインタの更新処
理によるオーバヘッドより大きいオーバヘッドとなるデ
ータ読み出し待ちで後続命令の実行が待たされることを
なくすことができる。
【0117】ここで、本発明を適用する計算機が、ロー
ド命令またはストア命令と、演算命令とを並列に実行す
ることが可能な、すなわち、ロード命令とストア命令と
を同時に実行することができないスーパースカラプロセ
ッサであってもよい。すなわち、前述のスーパースカラ
プロセッサよりも低性能のスーパースカラプロセッサで
あってもよい。この場合、図9、図10のプログラムは
同一であり、ループ内のNo.18、19、20の3命令
が同時に実行開始できずに、No.18、19の2命令の
実行開始の1サイクル後にNo.20の命令が開始される
だけで、すなわち、ループの実行時間が1サイクル延び
るだけで、本質の動作は同一である。
【0118】また、本発明に使用する図9、図10に示
すプログラムは、浮動小数点レジスタプリロード命令と
浮動小数点レジスタポストストア命令とで、命令中の通
常命令より長いレジスタフィールドにより、データをロ
ード/ストアする物理レジスタ番号を自由に決めること
ができるので、データ読み出し時間、演算時間の変化に
対して柔軟に対応することができる。
【0119】本発明は、ウィンドウポインタレジスタ幅
を変更することにより(通常、ポインタ幅最大値は固
定)、ウィンドウ刻み幅を自由に変更することができる
ようになり、柔軟なプログラミングを行うことができ、
さらに、グローバルレジスタ本数mgを可変とすること
により、様々な個数のループインバリアントを持つアプ
リケーションにも柔軟に対応することができる。
【0120】
【実施例】以下、本発明によるデータ処理装置の一実施
例を図面により詳細に説明する。
【0121】図1は本発明の一実施例によるデータ処理
装置の構成を示すブロック図、図2は本発明のために新
たに追加された命令を説明する図である。図1におい
て、10は命令処理ユニット、20は記憶制御ユニッ
ト、30は主記憶、101は命令レジスタ、102は命
令制御部、103は汎用レジスタ群、104は汎用演算
器、105は物理浮動小数点レジスタ群、106は浮動
小数点演算器、107はアドレス加算器、108はキャ
ッシュ、109は主記憶アクセス制御部、110はウィ
ンドウスタートポインタレジスタ、111はウィンドウ
スタートポインタ有効レジスタ、112は変換回路、1
18はグローバルレジスタ本数モードレジスタである。
【0122】図1に示す本発明の一実施例によるデータ
処理装置は、作用の項で説明したようなベクトル演算を
実行するものである。そして、このデータ処理装置は、
命令の発行及び実行を行う命令処理ユニット10と、命
令処理ユニット10で実行される命令、データ等を記憶
する主記憶30と、命令処理ユニット10と主記憶30
との間のデータの授受を制御する記憶制御ユニット20
とから構成される。
【0123】命令処理ユニット10は、実行する命令を
保持する命令レジスタ101と、命令レジスタ101の
内容を解読し、命令実行の制御を行う命令制御部102
と、汎用演算及びアドレス計算に必要なデータを保持す
る汎用レジスタ群103と、命令で指定される汎用演算
を実行する汎用演算器104と、浮動小数点演算に必要
なデータを保持する物理浮動小数点レジスタ群105
と、命令で指定される浮動小数点演算を実行する浮動小
数点演算器106と、主記憶30内のデータをアクセス
するための主記憶アドレスを計算するアドレス加算器1
07と、記憶制御ユニット20から読み出された主記憶
データを保持するキャッシュ108と、キャッシュ10
8の検索結果に従い記憶制御ユニット20から主記憶デ
ータを読み出す等の制御を行う主記憶アクセス制御部1
09と、ウィンドウスタートポインタを格納するウィン
ドウスタートポインタレジスタ110と、ウィンドウス
タートポインタが有効であることを示すウィンドウスタ
ートポインタ有効レジスタ111と、グローバルレジス
タの本数を示すグローバルレジスタ本数モ−ドレジスタ
118と、命令で指定された論理浮動小数点レジスタ番
号を示す信号115、ウィンドウスタートポインタセッ
ト命令のvフィールドの値を示す信号117、ウィンド
ウスタートポインタレジスタ110の値、信号115、
及び、グローバルレジスタ本数モードレジスタ118の
値から、前述で説明した式(2)、(3)に従って、論
理浮動小数点レジスタ番号を物理浮動小数点レジスタ番
号に変換する変換回路112とを備えて構成される。
【0124】そして、変換回路112は、ウィンドウス
タートポインタレジスタ110の値に、ウィンドウスタ
ートポインタセット命令のvフィールドの値を示す信号
117の値を加算する機能も持つ。また、グローバルレ
ジスタ本数モードレジスタ118は、格納されるデータ
がグローバルレジスタの本数を表すものでもよく、グロ
ーバルレジスタの本数を符号化したもの(たとえば、値
‘1’は本数4とする等)であってもよい。
【0125】命令レジスタ101には、複数の命令(こ
こでは3命令)が格納され、命令制御部102は、同時
に複数の命令(ここでは3命令)を解読実行することが
できるものとする。また、主記憶アクセス制御部109
は、ロード、ストアを同時に実行することができるもの
とする。このため、アドレス加算器107は、ロード命
令、ストア命令のアドレス加算を同時に行うことができ
るものとする。
【0126】そして、図1に示す本発明の一実施例によ
るデータ処理装置には、図2で示すように、3つの命令
が新たに追加される。それらは、(a)ウィンドウスタ
ートポインタセット命令、(b)浮動小数点レジスタプ
リロード命令、(c)浮動小数点レジスタポストストア
命令である。
【0127】図2(a)は、ウィンドウスタートポイン
タセット命令の形式を示しており、命令コードは、その
命令がウィンドウスタートポインタセット命令であるこ
とを示すものである。そして、uは、この命令が以下の
(i)、(ii)の動作のいずれを実行するかを指定す
る。vは、(i)u=0の場合、ウィンドウスタートポ
インタレジスタにセットされる値を指定し、(ii)u=
1の場合、ウィンドウスタートポインタレジスタに加算
する値を指定する。なお、加算は(mr−mg)/sp
を法として行われる。すなわち、本発明の一実施例で
は、mr=128、mg=8、sm=7、q=5である
ので、ウィンドウスタートポインタFWSTPの値が2
9、v=1であれば、加算結果は“0”になる。
【0128】図2(b)は、浮動小数点レジスタプリロ
ード命令の形式を示しており、命令コードは、その命令
が浮動小数点レジスタプリロード命令であることを示す
ものである。浮動小数点レジスタ(FR)番号は、主記
憶内のデータが格納される論理浮動小数点レジスタ番号
rを示し、7ビットで表される。この論理浮動小数点レ
ジスタ番号rに対応する物理浮動小数点レジスタ番号
は、ウィンドウスタートポインタをFWSTPとして、
式(2)、(3)で表される<FWSTP,r>であ
る。汎用レジスタ(GR)番号は、データを主記憶から
読み出すための主記憶アドレスを格納している汎用レジ
スタの番号である。インクリメント値は、この命令によ
る読み出し実行後、汎用レジスタに加える値である。
【0129】図2(c)は、浮動小数点レジスタポスト
ストア命令の形式を示しており、命令コードは、浮動小
数点レジスタポストストア命令であることを示すもので
ある。浮動小数点レジスタ(FR)番号は、データが読
み出される論理浮動小数点レジスタ番号rを示し、7ビ
ットで表される。この論理浮動小数点レジスタ番号rに
対応する物理浮動小数点レジスタ番号は、ウィンドウス
タートポインタをFWSTPとして、式(2)、(3)
で表される<FWSTP,r>である。汎用レジスタ
(GR)番号は、主記憶に格納するデータの主記憶のア
ドレスを格納している汎用レジスタの番号である。イン
クリメント値は、この命令による書き込み実行後、汎用
レジスタに加える値である。
【0130】次に、前述した命令による図1に示す本発
明の一実施例の動作を説明する。まず、ウィンドウスタ
ートポインタセット命令について説明する。
【0131】図1において、命令レジスタ101に命令
が取り込まれると、命令は命令制御部102で解読さ
れ、その命令が、ウィンドウスタートポインタセット命
令であることが識別されると、命令中のuがチェックさ
れ、(i)u=“0”である場合、命令中に指定された
vが、ウィンドウスタートポインタレジスタ110にセ
ットされる。また、(ii)u=1である場合、命令中に
指定されたvが、変換回路112に信号117として送
られ、変換回路112でウィンドウスタートポインタレ
ジスタ110の値と加算されて、その加算結果がウィン
ドウスタートポインタレジスタ110にセットされる。
【0132】次に、浮動小数点レジスタプリロード命令
について説明する。
【0133】命令レジスタ101に命令が取り込まれる
と、命令は命令制御部102で解読され、その命令が、
浮動小数点レジスタプリロード命令であることが識別さ
れると、アドレス加算器107は、命令に指定された汎
用レジスタ番号で示される汎用レジスタの内容をデータ
を主記憶から読み出すための主記憶アドレスとする。そ
して、主記憶アクセス制御部109は、前記主記憶アド
レスをもとにキャッシュ108を検索し、キャッシュ1
08に所望のデータがあれば、キャッシュからデータを
転送し、なければ、記憶制御ユニット20経由で、主記
憶30からデータを読み出して転送する。
【0134】この転送データは、物理浮動小数点レジス
タ群105の1つに格納されるが、格納される浮動小数
点レジスタの物理浮動小数点レジスタ番号は、変換回路
112で以下のようにして求められる。
【0135】すなわち、命令中に指定された浮動小数点
レジスタ番号は、7ビットで表される論理浮動小数点レ
ジスタ番号rであり、ウィンドウスタートポインタレジ
スタ110の値をFWSTPとして、前述した式
(2)、(3)に基づいて、<FWSTP,r>を計算
し、これを物理浮動小数点レジスタ番号とする。このデ
ータ転送動作開始後、汎用演算器104は、汎用レジス
タの値にインクリメント値を加える。
【0136】次に、浮動小数点レジスタポストストア命
令について説明する。
【0137】命令レジスタ101に命令が取り込まれる
と、命令は命令制御部102で解読され、その命令が浮
動小数点レジスタポストストア命令であることが識別さ
れると、アドレス加算器107は、命令に指定された汎
用レジスタ番号で示される汎用レジスタの内容をデータ
を主記憶に格納するための主記憶アドレスとする。そし
て、浮動小数点レジスタ群105の1つからデータを読
み出すが、読み出しを行うレジスタの物理浮動小数点レ
ジスタ番号は、変換回路112で以下のようにして求め
られる。
【0138】すなわち、命令中に指定された浮動小数点
レジスタ番号は、7ビットで表される論理浮動小数点レ
ジスタ番号rであり、ウィンドウスタートポインタレジ
スタ110の値をFWSTPとして、前述した式
(2)、(3)に基づいて、<FWSTP,r>を計算
し、これを物理浮動小数点レジスタ番号とする。主記憶
アクセス制御部109は、前記主記憶アドレスをもとに
キャッシュ108を検索し、キャッシュ中に、主記憶3
0の該主記憶アドレスに格納されているデータの写しが
あれば、該データを前記読み出しデータに置き換える。
なければ、主記憶アクセス制御部は、キャッシュを操作
することなく、記憶制御ユニット20経由で、主記憶3
0の前記主記憶アドレスに前記読み出しデータを格納す
る。このデータ転送動作開始後、汎用演算器104は、
汎用レジスタの値にインクリメント値を加える。
【0139】また、一般の浮動小数点命令、すなわち、
浮動小数点レジスタを用いる命令で、前記の浮動小数点
レジスタプリロード命令、浮動小数点レジスタポストス
トア命令を除く命令は、ウィンドウスタートポインタ有
効レジスタ111が“1”であると、命令中に示された
5ビットで表される論理浮動小数点レジスタ番号rを、
変換回路112で、ウィンドウスタートポインタレジス
タ110の値をFWSTPとして、前述した式(2)、
(3)に基づいて、<FWSTP,r>で表わされる物
理浮動小数点レジスタ番号に変換し、この物理浮動小数
点レジスタ番号の示す物理浮動小数点レジスタを参照す
る。
【0140】浮動小数点レジスタを参照する命令の全て
は、ウィンドウスタートポインタ有効レジスタ111が
“1”であると、変換回路112により、論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換を行
い、“0”であると、論理浮動小数点レジスタ番号−物
理浮動小数点レジスタ番号変換を行わず、命令で指定さ
れた論理浮動小数点レジスタ番号がそのまま物理浮動小
数点レジスタ番号になり、その物理浮動小数点レジスタ
番号の示す物理浮動小数点レジスタを参照する。
【0141】なお、ウィンドウスタートポインタ有効レ
ジスタ111、グローバルレジスタ本数モードレジスタ
118には、データ処理システムの制御情報を格納する
既存のレジスタの空きビットを割当てればよく、これら
のレジスタに値を格納する既存の命令を用いて値をセッ
トするものとする。
【0142】本発明の一実施例は、前述のようにウィン
ドウスタートポインタセット命令、浮動小数点レジスタ
プリロード命令、浮動小数点レジスタポストストア命令
が動作し、また、一般の浮動小数点命令(=通常命令)
が、ウィンドウスタートポインタの制御の下で動作す
る。
【0143】前述した本発明の一実施例により、図9、
図10に示すようなプログラムを実現することができ、
これにより、すでに説明したように、ベクトル計算を高
速に実行することができる。
【0144】ここで、本発明を適用する計算機が、ロー
ド命令またはストア命令と、演算命令とを並列に実行す
ることが可能な、すなわち、ロード命令とストア命令と
を同時に実行することができないスーパースカラプロセ
ッサであってもよい。すなわち、前述のスーパースカラ
プロセッサよりも低性能のスーパースカラプロセッサで
あってもよい。この場合、以下の点で前述と相違するこ
とになる。
【0145】命令レジスタ101には、複数の命令(こ
こでは2命令)が格納され、命令制御部102は、同時
に複数の命令(ここでは2命令)を解読実行することが
できるものとする。また、主記憶アクセス制御部109
は、ロード、ストアのうち、同時にはいずれか1つを実
行することができるものとする。このため、アドレス加
算器107は、ロード命令のアドレス加算、ストア命令
のアドレス加算のうち、同時には、いずれか1つを実行
することができるものとする。
【0146】ウィンドウスタートポインタセット命令、
浮動小数点レジスタプリロード命令、浮動小数点レジス
タポイントストア命令の動作は前述の場合と同一であ
る。
【0147】前述した本発明の一実施例によれば、ウィ
ンドウスタートポインタと命令中の浮動小数点レジスタ
番号とを変更することにより、命令中のある浮動小数点
レジスタ番号は、異なる物理浮動小数点レジスタ番号に
変換されるので、通常命令によってアドレス可能なレジ
スタの数よりも多い物理レジスタを、データ処理装置の
アーキテクチャを変えることなくアクセス可能とするこ
とができるので、図9、図10に示すようなプログラム
を実現することができ、データ読み出し、レジスタのぶ
つかりによって命令の実行が待たされることによる処理
装置の性能の低下を防止することができ、プログラムの
高速な実行が可能である。
【0148】特に、前述した本発明の一実施例は、図
9、図10に示すプログラムからも判る通り、命令列の
ループの繰返しが主となる科学技術計算等のベクトル計
算において、命令毎に使用するウィンドウを変更し、i
番目の要素の処理を、第i−nkループにおける浮動小
数点プリロード命令によるオペランドベクトルの第i要
素のロードと、第iループにおける演算、第i+nmル
ープにおける浮動小数点ポストストア命令による結果格
納用ベクトルの第i要素への演算結果のストアとにより
行うことによって(nk,nmはプログラムで指定でき
る整数)、1つのデータに対するロード、演算、ストア
の処理の命令列上での距離を大きくすることができ、デ
ータの読み出し時間、演算実行時間の影響による性能低
下を防止することができる。
【0149】さらに、本発明の一実施例によれば、浮動
小数点レジスタプリロード命令と浮動小数点レジスタポ
ストストア命令とにより、命令中の浮動小数点レジスタ
番号により、データをロード/ストアする物理浮動小数
点レジスタ番号を自由に決めることができることによ
り、データ読み出し時間、演算時間の変化に対し、柔軟
に対応することができる。
【0150】さらに、本発明の一実施例によれば、ウィ
ンドウポインタレジスタ幅を変更することにより、ウィ
ンドウ刻み幅を自由に変更することができ、これによ
り、柔軟なプログラミングを行うことができ、グローバ
ルレジスタ本数mgを可変にすることにより、様々な個
数のループインバリアントをもつアプリケ−ションに対
しても柔軟に対応することができる。
【0151】さらに、本発明の一実施例によれば、浮動
小数点レジスタプリロード命令と浮動小数点レジスタポ
ストストア命令が、物理浮動小数点レジスタ指定のため
に、浮動小数点レジスタ番号という1つの量のみを使用
しているので、プログラミングを容易に行うことができ
る。
【0152】
【発明の効果】以上説明したように本発明によれば、ウ
ィンドウスタートポインタを変更することにより、通常
命令中のある浮動小数点レジスタ番号を、異なる物理浮
動小数点レジスタ番号に変換することができるので、通
常命令によってアドレス可能な浮動小数点レジスタの数
よりも多い物理浮動小数点レジスタをデータ処理装置の
アーキテクチャを変えることなくアクセス可能にでき
る。
【0153】また、本発明によれば、浮動小数点レジス
タプリロード命令、浮動小数点レジスタポストストア命
令の浮動小数点レジスタ番号を変更することにより全物
理浮動小数点レジスタをアクセスすることができるの
で、データ読み出し、レジスタのぶつかりによって命令
の実行が待たされることによる性能低下を防止すること
ができ、プログラムを高速に実行することが可能であ
る。
【0154】特に、本発明によれば、命令列のループの
繰返しが主となる科学技術計算等のベクトル計算におい
て、命令毎に使用するウィンドウを変更し、i番目の要
素の処理を、第i−nkループにおける浮動小数点プリ
ロード命令によるオペランドベクトルの第i要素のロー
ドと、第iループにおける演算、第i+nmループにお
ける浮動小数点ポストストア命令による結果格納用ベク
トルの第i要素への演算結果のストアとにより行うこと
によって(nk,nmはプログラムで指定できる整
数)、1つのデータに対するロード、演算、ストアの処
理の命令列上での距離を大きくすることができ、データ
の読み出し時間、演算実行時間の影響による性能低下を
防止することができ、処理の高速化を図ることができ
る。
【0155】また、本発明によれば、浮動小数点レジス
タプリロード命令と浮動小数点レジスタポストストア命
令とにより、命令中の浮動小数点レジスタ番号により、
データをロード/ストアする物理浮動小数点レジスタ番
号を自由に決めることができることにより、データ読み
出し時間、演算時間の変化に対し、柔軟に対応すること
ができる。
【0156】さらに、本発明によれば、ウィンドウポイ
ンタレジスタ幅を変更することにより、ウィンドウ刻み
幅を自由に変更することができ、これにより、柔軟なプ
ログラミングを行うことができ、グローバルレジスタ本
数mgを可変にすることにより、様々な個数のループイ
ンバリアントをもつアプリケーションに対しても柔軟に
対応することができる。
【図面の簡単な説明】
【図1】本発明による図2で示す命令を実行するデータ
処理装置の一実施例を示す構成図である。
【図2】本発明によるウィンドウスタ−トポインタセッ
ト命令、浮動小数点レジスタプリロ−ド命令、浮動小数
点レジスタポストストア命令の一実施例を示す図であ
る。
【図3】本発明による論理浮動小数点レジスタ番号−物
理浮動小数点レジスタ番号変換の例を説明する図であ
る。
【図4】本発明の通常命令における論理浮動小数点レジ
スタ番号−物理浮動小数点レジスタ番号変換の例を説明
する図である。
【図5】本発明の通常命令における論理浮動小数点レジ
スタ番号−物理浮動小数点レジスタ番号変換の例を説明
する図である。
【図6】本発明の浮動小数点プリロード命令と浮動小数
点ポストストア命令とにおける論理浮動小数点レジスタ
番号−物理浮動小数点レジスタ番号変換の例を説明する
図である。
【図7】本発明の浮動小数点プリロード命令と浮動小数
点ポストストア命令とにおける論理浮動小数点レジスタ
番号−物理浮動小数点レジスタ番号変換の例を説明する
図である。
【図8】本発明で特に有効となるmodulo schedulingに
よりコーディングしたプログラムの例を説明する図であ
る。
【図9】ベクトル計算の一例であるベクトルとスカラと
の乗算のプログラムを本発明による命令を用いて書き直
したプログラムの例を示す図である。
【図10】ベクトル計算の一例であるベクトルとスカラ
との乗算のプログラムを本発明による命令を用いて書き
直したプログラムの例を示す図である。
【図11】ベクトル計算の一例であるベクトルとスカラ
との乗算の汎用計算機用プログラムの例を示す図であ
る。
【図12】図11のプログラムをループアンローリング
手法を用いて書き直したプログラムの例を示す図であ
る。
【符号の説明】
10 命令処理ユニット 20 記憶制御ユニット 30 主記憶 101 命令レジスタ 102 命令制御部 103 汎用レジスタ群 104 汎用演算器 105 物理浮動小数点レジスタ群 106 浮動小数点演算器 107 アドレス加算器 108 キャッシュ 109 主記憶アクセス制御部 110 ウィンドウスタートポインタレジスタ 111 ウィンドウスタートポインタ有効レジスタ 112 変換回路 118 グローバルレジスタ本数モードレジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 稲上 泰弘 東京都国分寺市東恋ケ窪1丁目280番地 株式会社 日立製作所 中央研究所内 (72)発明者 藤井 啓明 東京都国分寺市東恋ケ窪1丁目280番地 株式会社 日立製作所 中央研究所内 (56)参考文献 特開 平4−92282(JP,A) 特開 昭54−16939(JP,A) 特開 平1−159731(JP,A) 特開 平2−217925(JP,A) 特開 昭62−286128(JP,A) 特開 平6−176053(JP,A) 日経バイト,1988年3月,No.43, p.130−141 (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/355 G06F 9/40 - 9/42 G06F 12/00 - 12/06 G06F 17/16

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 主記憶と、それぞれが第1の長さのレジ
    スタ指定フィールドを持つロード命令、ストア命令、及
    び演算命令を、前記主記憶内に保持された主記憶データ
    を用いて実行する命令処理ユニットとを備えるデータ処
    理装置において、前記第1の長さのレジスタ指定フィー
    ルドによってアドレス可能なレジスタの数より多い物理
    レジスタと呼ばれるレジスタと、複数のビットから成る
    ウィンドウスタートポインタレジスタと呼ばれるレジス
    タと、命令中のレジスタ番号を物理レジスタ番号に変換
    し、かつ、前記ウィンドウスタートポインタレジスタの
    値によって前記変換のパターンを変える変換回路とを備
    え、前記ウィンドウスタートポインタレジスタの値をセ
    ットするためのウィンドウスタートポインタセット命令
    と、第2の長さのレジスタ指定フィールドを持ち、命令
    中のレジスタ指定フィールドに指定されたレジスタ番号
    を、前記ウィンドウスタートポインタレジスタの値によ
    って前記変換回路で物理レジスタ番号へ変換し、その物
    理レジスタ番号の示す物理レジスタに主記憶データを格
    納するレジスタプリロード命令と、前記第2の長さのレ
    ジスタ指定フィールドを持ち、命令中のレジスタ指定フ
    ィールドに指定されたレジスタ番号を、前記ウィンドウ
    スタートポインタレジスタの値によって前記変換回路で
    物理レジスタ番号へ変換し、その物理レジスタ番号の示
    す物理レジスタから読み出したデータを主記憶に格納す
    るレジスタポストストア命令とを設け、前記命令処理ユ
    ニットは、前記ロード命令、ストア命令、及び演算命令
    の実行時、命令中の前記第1の長さのレジスタ指定フィ
    ールドに指定されたレジスタ番号を、前記ウィンドウス
    タートポインタレジスタの値によって前記変換回路によ
    り物理レジスタ番号へ変換し、この物理レジスタ番号の
    示す物理レジスタを参照し、前記レジスタプリロード命
    令、レジスタポストストア命令の実行時、命令中の前記
    第2の長さのレジスタ指定フィールドに指定されたレジ
    スタ番号を、前記ウィンドウスタートポインタレジスタ
    の値によって前記変換回路により物理レジスタ番号へ変
    換し、この物理レジスタ番号の示す物理レジスタを参照
    することを特徴とするデータ処理装置。
  2. 【請求項2】 前記命令中のレジスタ番号から前記物理
    レジスタ番号への変換は、命令中のレジスタ番号の少な
    くとも1つの、前記ウィンドウスタートポインタレジス
    タの値によらずグローバルレジスタ番号と呼ばれる同一
    の前記物理レジスタ番号への変換であることを特徴とす
    る請求項1記載のデータ処理装置。
  3. 【請求項3】 前記物理レジスタの本数からグローバル
    レジスタ番号で番号づけられるグローバルレジスタと呼
    ばれるレジスタの本数を減じた値をローカルレジスタ本
    数、前記ウィンドウスタートポインタレジスタのビット
    数をウィンドウスタートポインタレジスタ幅、前記ウィ
    ンドウスタートポインタレジスタ幅以上のある整数値を
    ポインタ幅最大値、前記ポインタ幅最大値から前記ウィ
    ンドウスタートポインタレジスタ幅を減じた値を指数と
    する2のべき乗をウィンドウ刻み幅と定義したとき、前
    記レジスタプリロード命令、前記レジスタポストストア
    命令、それぞれが前記の第1の長さのレジスタ指定フィ
    ールドを持つロード命令、ストア命令、演算命令の命令
    中のグローバルレジスタ番号で番号付けられるレジスタ
    番号以外を示すレジスタ番号は、前記ウィンドウスター
    トポインタレジスタの値と前記ウィンドウ刻み幅の積
    に、命令中のレジスタ番号を加えた値であらわされる物
    理レジスタ番号に変換されることを特徴とする請求項
    記載のデータ処理装置。
  4. 【請求項4】 前記グローバルレジスタ番号で番号付け
    られるレジスタの本数を表すグローバルレジスタ本数モ
    ードレジスタを備え、該グローバルレジスタ本数モード
    レジスタの値により前記変換回路の変換のパターンを変
    更し、ソフトウエアにより前記グローバルレジスタ本数
    モードレジスタに値をセットすることにより、命令中の
    グローバルレジスタ番号で番号付けられるレジスタの本
    数をソフトウエアで可変にすることを特徴とする請求項
    記載のデータ処理装置。
  5. 【請求項5】 前記物理レジスタの本数からグローバル
    レジスタ番号で番号づけられるグローバルレジスタと呼
    ばれるレジスタの本数を減じた値をローカルレジスタ本
    数、前記ウィンドウスタートポインタレジスタのビット
    数をウィンドウスタートポインタレジスタ幅、前記ウィ
    ンドウスタートポインタレジスタ幅以上のある整数値を
    ポインタ幅最大値、前記ポインタ幅最大値から前記ウィ
    ンドウスタートポインタレジスタ幅を減じた値を指数と
    する2のべき乗をウィンドウ刻み幅と定義したとき、前
    記レジスタプリロード命令、前記レジスタポストストア
    命令、それぞれが前記の第1の長さのレジスタ指定フィ
    ールドを持つロード命令、ストア命令、演算命令の命令
    中のグローバルレジスタ番号で番号付けられるレジスタ
    番号以外を示すレジスタ番号は、前記ウィンドウスター
    トポインタレジスタの値と前記ウィンドウ刻み幅の積
    に、命令中のレジスタ番号からグローバルレジスタの本
    数を減じた値を、物理レジスタの本数からグローバルレ
    ジスタの本数を減じた値を法として加えた値に、グロー
    バルレジスタの本数を加えた値であらわされる物理レジ
    スタ番号に変換されることを特徴とする請求項記載の
    データ処理装置。
  6. 【請求項6】 前記レジスタプリロード命令は、主記憶
    データの読み出し時、主記憶の内容の一部を一時的に保
    持しておく緩衝記憶装置であるキャッシュに前記主記憶
    データが登録されていなかった場合、前記キャッシュの
    内容を変更せず、また、前記レジスタポストストア命令
    は、主記憶へのデータの書き込み時、該当する主記憶ア
    ドレスの主記憶データが前記キャッシュに登録されてい
    なかった場合、前記キャッシュの内容を変更しないこと
    を特徴とする請求項2ないし5のうち1記載のデータ処
    理装置。
  7. 【請求項7】 主記憶と、それぞれが5ビット長のレジ
    スタ指定フィールドを持つロード命令、ストア命令、及
    び演算命令を含む命令列を実行する命令処理ユニットと
    を備えるデータ処理装置において、前記5ビット長のレ
    ジスタ指定フィールドによってアドレス可能なレジスタ
    の数より多い複数の物理レジスタと、複数のビットから
    成るウインドウスタートポインタレジスタと、命令中の
    レジスタ番号を物理レジスタ番号に変換し、かつ、前記
    ウインドウスタートポインタレジスタの値によって前記
    変換のパターンを変える変換回路とを備え、前記命令列
    は、前記ウインドウスタートポインタレジスタの値をセ
    ットするためのウインドウスタートポインタセット命令
    と、7ビット長のレジスタ指定フィールドを持ち、該レ
    ジスタ指定フィールドにより指定された物理レジスタに
    主記憶から読み出したデータを格納するレジスタプリロ
    ード命令と、前記7ビット長のレジスタ指定フィールド
    を持ち、該レジスタ指定フィールドにより指定された物
    理レジスタから読み出したデータを主記憶に格納するレ
    ジスタポストストア命令とを含み、前記命令列の実行
    時、命令中の前記5ビット長のレジスタ指定フィールド
    または前記7ビット長のレジスタ指定フィールドに指定
    されたレジスタ番号を、前記ウインドウスタートポイン
    タレジスタの値に従って前記変換回路により物理レジス
    タ番号へ変換し、該物理レジスタ番号の示す物理レジス
    タを参照することを特徴とするデータ処理装置。
JP05176886A 1992-11-16 1993-07-16 データ処理装置 Expired - Fee Related JP3097981B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP05176886A JP3097981B2 (ja) 1993-07-16 1993-07-16 データ処理装置
EP19940110976 EP0634717B1 (en) 1993-07-16 1994-07-14 Data processing unit
DE1994622671 DE69422671T2 (de) 1993-07-16 1994-07-14 Datenverarbeitungseinheit
US08/275,347 US5729723A (en) 1992-11-16 1994-07-15 Data processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP05176886A JP3097981B2 (ja) 1993-07-16 1993-07-16 データ処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP11035971A Division JP2000029865A (ja) 1999-02-15 1999-02-15 デ―タ処理装置

Publications (2)

Publication Number Publication Date
JPH0736695A JPH0736695A (ja) 1995-02-07
JP3097981B2 true JP3097981B2 (ja) 2000-10-10

Family

ID=16021486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05176886A Expired - Fee Related JP3097981B2 (ja) 1992-11-16 1993-07-16 データ処理装置

Country Status (3)

Country Link
EP (1) EP0634717B1 (ja)
JP (1) JP3097981B2 (ja)
DE (1) DE69422671T2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0476722B1 (en) * 1985-04-08 1997-02-26 Hitachi, Ltd. Data processing system
US5438669A (en) * 1991-11-20 1995-08-01 Hitachi, Ltd. Data processor with improved loop handling utilizing improved register allocation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日経バイト,1988年3月,No.43,p.130−141

Also Published As

Publication number Publication date
EP0634717B1 (en) 2000-01-19
EP0634717A3 (ja) 1995-02-01
DE69422671D1 (de) 2000-02-24
DE69422671T2 (de) 2000-06-08
JPH0736695A (ja) 1995-02-07
EP0634717A2 (en) 1995-01-18

Similar Documents

Publication Publication Date Title
US5581721A (en) Data processing unit which can access more registers than the registers indicated by the register fields in an instruction
EP1010065B1 (en) Coprocessor data access control
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US5123095A (en) Integrated scalar and vector processors with vector addressing by the scalar processor
US4740893A (en) Method for reducing the time for switching between programs
JP3548616B2 (ja) 情報処理装置
JP3442225B2 (ja) 演算処理装置
US5438669A (en) Data processor with improved loop handling utilizing improved register allocation
EP0394624B1 (en) Multiple sequence processor system
US4771380A (en) Virtual vector registers for vector processing system
JPH0588888A (ja) アドレス生成機構及びデータの事前取り出し方法
JPH0517588B2 (ja)
JP2834292B2 (ja) データ・プロセッサ
JP3619939B2 (ja) 中央処理装置
US5896543A (en) Digital signal processor architecture
JPH0855028A (ja) マイクロプロセッサ
Padegs et al. The IBM System/370 vector architecture: Design considerations
JPH04260930A (ja) データ処理装置
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
JPH07104784B2 (ja) デジタルデータ処理装置
US5729723A (en) Data processing unit
JPH04260927A (ja) データ処理装置
JP3097981B2 (ja) データ処理装置
JP2001501001A (ja) データ処理システムにおける入力オペランド制御
JP3317985B2 (ja) 擬似ベクトルプロセッサ

Legal Events

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

Free format text: PAYMENT UNTIL: 20070811

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20080811

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20080811

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090811

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100811

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100811

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110811

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120811

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees