JP2725546B2 - デ−タ処理装置 - Google Patents

デ−タ処理装置

Info

Publication number
JP2725546B2
JP2725546B2 JP4326435A JP32643592A JP2725546B2 JP 2725546 B2 JP2725546 B2 JP 2725546B2 JP 4326435 A JP4326435 A JP 4326435A JP 32643592 A JP32643592 A JP 32643592A JP 2725546 B2 JP2725546 B2 JP 2725546B2
Authority
JP
Japan
Prior art keywords
register
instruction
window
value
physical
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 - Lifetime
Application number
JP4326435A
Other languages
English (en)
Other versions
JPH06176053A (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 JP4326435A priority Critical patent/JP2725546B2/ja
Priority to GB9324877A priority patent/GB2273186B/en
Publication of JPH06176053A publication Critical patent/JPH06176053A/ja
Priority to US08/275,347 priority patent/US5729723A/en
Priority to US08/600,155 priority patent/US5581721A/en
Application granted granted Critical
Publication of JP2725546B2 publication Critical patent/JP2725546B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • 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
    • 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
    • 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)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】 本発明はデ−タ処理装置に関
し、さらに具体的には命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とする技術に関する。特に、このようにすることに
よって、キャッシュがあまり有効でない大規模なデ−タ
を連続的に処理するいわゆるベクトル処理に際して、主
記憶からの転送のための性能低下がほとんど生じないよ
うにし、効率のよい擬似ベクトル処理を通常のデ−タ処
理装置で実現可能とする技術に関する。
【0002】
【従来の技術】 (従来技術1)従来、命令によってア
ドレス可能なレジスタの数より多いレジスタをデ−タ処
理装置がアクセス可能とする技術としては、特開昭57
−166649号に記載があり、その方式によると、ま
ず、プログラムによってアドレス可能な汎用レジスタの
数よりも多いハ−ドウエアレジスタと称するレジスタ群
を設け、異なった主記憶アドレスから同一の汎用レジス
タに対する複数のロ−ド命令があったら、該ロ−ド命令
の数だけハ−ドウエアレジスタに保持する(すなわち、
プログラムによってアドレス可能な汎用レジスタの数が
16である場合、ハ−ドウエアレジスタを各汎用レジス
タ当たり16、つまり、合計256用意し、たとえば、
汎用レジスタ0にはハ−ドウエアレジスタ0から15を
割り当てる。汎用レジスタ0に対して16個の異なった
主記憶アドレスを指定したロ−ド命令が実行された場合
は、該16個のロ−ド命令からのデ−タをハ−ドウエア
レジスタ0からハ−ドウエアレジスタ15までの中に保
持する)。そして、過去に実行されたロ−ド命令の主記
憶アドレスとその時ロ−ドされたデ−タが格納されてい
るハ−ドウエアレジスタ番号を登録しておく記憶機構を
設け、プログラムで発行されたロ−ド命令が該記憶機構
に登録されている主記憶アドレスと一致したら、主記憶
からデ−タを読まずに、対応するハ−ドウエアレジスタ
からデ−タを読みだす。この方式により、主記憶参照回
数が低減でき、また、命令間の参照レジスタのぶつかり
による性能低下を防ぐことができる。
【0003】(従来技術2)従来、命令によってアドレ
ス可能なレジスタの数より多いレジスタをデ−タ処理装
置がアクセス可能とする技術としては、J.L.Hen
nesy and D.A.Patterson ”C
omputerArchitecture : A Q
uantitativeApproach”, Mor
gan Kaufmann Publish−ers,
Inc.(1990)に記載があり、その方式による
と、まず、プログラムによってアドレス可能なレジスタ
の数より多い物理レジスタと称するレジスタを設け、該
物理レジスタを複数個のウィンドウと呼ばれる部分に分
ける。すなわち、各ウィンドウは複数個の物理レジスタ
から成る。たとえば、プログラムによってレジスタが番
号1からnまで番号づけられるとし、物理レジスタがn
*m個、すなわち、番号1からn*mまで設けられたと
する。ウィンドウをm個、すなわち、番号1からmまで
設けるとすれば、ウィンドウ1は物理レジスタ1から
n、ウィンドウ2は物理レジスタn+1から2nという
ように割り当てることができる。実際には、全ウィンド
ウ共通の物理レジスタや、隣合うウィンドウ共通の物理
レジスタなどを設けるのが通例であるが、簡単のため、
前記の例を示した。各ウィンドウは1つのプログラムが
使用するレジスタを持つ。すなわち、あるプログラムで
アドレス可能なレジスタを参照することは、実際には、
あるウィンドウに属する物理レジスタを参照することに
なる。たとえば、前記の例では、あるプログラムにウィ
ンドウ2が割当てられていたとしたら、該プログラムで
レジスタkを指定したら、参照される物理レジスタは物
理レジスタn+kになる。
【0004】このウィンドウは以下のように使う。仮
に、あるプログラムにウィンドウjが割当てられていた
場合、該プログラムが別のプログラムを呼んだ(cal
lした)場合、呼ばれたプログラムには、ウィンドウj
+1が割当てられる。また、あるプログラムにウィンド
ウjが割当てられていた場合、該プログラムから該プロ
グラムを呼んだプログラムに戻った(returnし
た)場合、戻り先のプログラムには、ウィンドウj−1
が割当てられる。このように使うことによって、以下の
効果がある。プログラムによってアドレス可能なレジス
タの数だけのレジスタしか持たないシステムでは、前記
のようなプログラムの呼びが発生するたびに、該呼び発
生時点の情報保存のために、レジスタに格納されていた
デ−タを主記憶に格納しなければならず、プログラムの
戻りが発生するたびに、プログラムの再開のために、主
記憶に格納されていたデ−タをレジスタに書き戻さなく
てはならない。前記のウィンドウの機構を持つシステム
では、異なるウィンドウが割当てられているプログラム
は異なる物理レジスタを参照しているので、前記のレジ
スタからの主記憶への格納、主記憶からレジスタへの書
き戻しの操作が不要になり、処理が高速化される。
【0005】ただし、該ウィンドウの機構を持つシステ
ムでは、「最大のウィンドウ番号のプログラムからプロ
グラムの呼びが発された場合、ウィンドウオ−バフロ−
の割込みを起こし、最小のウィンドウ番号のプログラム
からプログラムの戻りが発された場合、ウィンドウアン
ダフロ−の割込みを起こす」という制御が必要になる。
【0006】
【発明が解決しようとする課題】本発明は命令によって
アドレス可能なレジスタの数より多いレジスタをデ−タ
処理装置がアクセス可能とする技術に関するものである
が、レジスタとして浮動小数点数が格納される浮動小数
点レジスタを例にとって述べる。
【0007】科学技術計算の大部分は、以下に示すよう
な、ベクトル演算である。
【0008】 A(i)=B(i)*S i=1,N (1) ここで、A、B,は要素数Nのベクトル、Sはスカラで
ある。
【0009】以下の説明で、浮動小数点レジスタのデ−
タ幅は8バイトとする。
【0010】式(1)を、汎用計算機で実行すると、図
6のようなプログラムになる。
【0011】図6中の各命令の機能を以下に説明する。
【0012】FLDM a(GRm),FRn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。
【0013】その後、汎用レジスタmの値をa加える。
【0014】FMLT FRj,FRm,FRn (機能)浮動小数点レジスタmの値と浮動小数点レジス
タnの値の積を浮動小数点レジスタjに格納する。
【0015】FSTM a(GRm),FRn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。
【0016】その後、汎用レジスタmの値をa加える。
【0017】BCNT GRm,t (機能)GRmの値を1減じる。その値がゼロでなけれ
ば、番地tに分岐する。ゼロならば、分岐しない。
【0018】ここで、図6のプログラムの実行に先だっ
て、ベクトルBは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、B
(1)の主記憶アドレスがad1、B(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad3から始まる連続
領域に格納するものとする。汎用レジスタ1にはad1
が、汎用レジスタ3にはad3が、汎用レジスタ4には
Nが前もって格納されているものとする。浮動小数点レ
ジスタ7にはSが前もって格納されているものとする。
【0019】図6からわかるように、No.1のFLD
M命令で、B(i)が浮動小数点レジスタ8にロ−ドさ
れ、No.2のFMLT命令で、該浮動小数点レジスタ
の値と浮動小数点レジスタ7の値の積が浮動小数点レジ
スタ10に格納され、No.3のFSTM命令で該浮動
小数点レジスタの値がA(i)にストアされる。
【0020】すなわち、4命令からなるル−プを1回実
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
【0021】ここで、1ル−プの実行時間が問題にな
る。まずNo.1のFLDM命令で浮動小数点レジスタ
8に主記憶からデ−タをロ−ドしているが、キャッシュ
にデ−タがある場合はFLDM命令は短いサイクル数で
終わるが、キャッシュにない場合は、キャッシュよりは
かなり低速の主記憶からデ−タを読みださなくてはなら
ず、キャッシュにデ−タがある場合に比べ、かなり時間
がかかることになる。次にNo.2のFMLT命令は浮
動小数点レジスタ8の値を使うので、前記ロ−ドが完了
しないと、実行が開始できない。No.3のFSTM命
令は浮動小数点レジスタ10の値を使うが、浮動小数点
レジスタ10の値は先行するFMLT命令の実行が終わ
らないと値が決まらないので、実行が開始できない。
【0022】すなわち、(1)デ−タ読みだし時間、
(2)レジスタのぶつかりという2つの性能低下要因が
ル−プの実行時間を長くすることになる。特に(1)は
長大デ−タを扱う計算の場合は深刻で、必要なデ−タが
キャッシュにはいりきらない場合が多くなり、性能の低
下は大きくなる。
【0023】この問題を解決する一手法がル−プアンロ
−リングであり、図7に示す手法である。すなわち、1
ル−プで複数要素(=n)を処理し、1ル−プで1要素
を処理する場合に比べ、ル−プ回数を1/nにする方式
である。図7は1ル−プで4要素を処理する方式であ
る。
【0024】ここで、図7のプログラムの実行に先だっ
て、ベクトルBは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、B
(1)の主記憶アドレスがad1、B(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad3から始まる連続
領域に格納するものとする。汎用レジスタ1にはad1
が、汎用レジスタ3にはad3が、汎用レジスタ4には
N/4が前もって格納されているものとする。浮動小数
点レジスタ7にはSが前もって格納されているものとす
る。
【0025】図7からわかる通り、13命令からなるル
−プを1回実行することによって、4要素の結果が求ま
り、このル−プをN/4回実行することによって全要素
計算ができる。
【0026】図7からわかる通り、i番目の要素に関
し、ロ−ドをNo.1のFLDM命令で、乗算をNo.
5のFMLT命令で、ストアをNo.9のFSTM命令
で行なう。同様に、i+1番目の要素に関し、ロ−ドを
No.2のFLDM命令で、乗算をNo.6のFMLT
命令で、ストアをNo.10のFSTM命令で行なう。
同様に、i+2番目の要素に関し、ロ−ドをNo.3の
FLDM命令で、乗算をNo.7のFMLT命令で、ス
トアをNo.11のFSTM命令で行なう。同様に、i
+3番目の要素に関し、ロ−ドをNo.4のFLDM命
令で、乗算をNo.8のFMLT命令で、ストアをN
o.12のFSTM命令で行なう。したがって、図6に
比べ、ある1つの要素番号で示される要素に関するロ−
ド、乗算、ストアという一連の処理が、命令列上で離れ
ることになり、前記の(1)デ−タ読みだし時間、
(2)レジスタのぶつかりという2つの性能低下要因の
影響を低減できる。たとえば、No.1のFLDM命令
でB(i)のロ−ドが行われ、そのロ−ド結果が使われ
るのが、4命令後になるので、デ−タ読みだし時間が4
サイクル以内ならば、そのロ−ド結果を使うNo.5の
FMLT命令が待たされることはない。また、No.5
のFMLT命令による乗算結果B(i)*Sが使われる
のが4命令後になるので、乗算に要する時間が4サイク
ル以内ならば、No.9のFSTM命令が待たされるこ
とはない。
【0027】このように、ル−プアンロ−リングによっ
て、性能は向上するが、この方式の欠点は、多くのレジ
スタを必要とすることである。図6のプログラムが3本
の浮動小数点レジスタを必要とするのに対し、図7のプ
ログラムは9本の浮動小数点レジスタを必要とする。デ
−タの読みだしに要する時間がさらに長かったり、演算
に要する時間がさらに長かったりすると、もっと多くの
要素を1ル−プで処理しなくてはならず、より多くのレ
ジスタが必要となることになる。
【0028】一般に、レジスタはアクティブな素子(す
なわち、メモリ素子ではない)で構成され、読みだし/
書き込みのためのポ−ト(すなわち、デ−タの出入口)
を多く用意することができるので、いわゆる記憶装置が
1つの動作サイクルに1個のデ−タの読みだし/書き込
みしかできないのに比べ、極めて高速である。したがっ
て、主記憶はもちろん、キャッシュに比べても、高速化
のためには、十分な容量のレジスタをもっていることが
必要不可欠である。それにもかかわらず、従来、レジス
タの数が比較的少なかったのは、ビット当たりのコスト
が高価であったことと、下記に示すように命令形式上の
レジスタ番号のフィ−ルドの長さに制限があったためで
ある。コストの問題はLSI化で解決されつつあるが、
後者はまだ未解決であった。
【0029】プログラムでアドレス可能なレジスタの数
は、ア−キテクチャ上から制限されている。たとえば、
命令語中にレジスタ指定フィ−ルドが5ビットあれば、
アドレス可能なレジスタの数は32(2の5乗)であ
る。該レジスタ指定フィ−ルドのビット数を増せば、プ
ログラムでアドレス可能なレジスタの数は増えるが、命
令形式が変わるので、既存のプログラムの変更が必要と
なり、非現実的である。
【0030】そこで、デ−タ処理装置のア−キテクチャ
を変えずに、命令によってアドレス可能なレジスタの数
より多いレジスタをデ−タ処理装置がアクセス可能とす
る方式が必要となるが、従来技術1では、過去にロ−ド
命令が実行された主記憶アドレスに対し、新たにロ−ド
命令が実行された場合は高速化される。しかし、式
(1)のようなベクトル計算は多くの場合、図6のプロ
グラムのように主記憶上のデ−タに対するロ−ド要求は
1度しか出ないので、従来技術では高速化されないとい
う問題がある。
【0031】また、従来技術2では、1つのプログラム
で使えるのはある1つのウインドウに属する物理レジス
タのみであり、その数はプログラムでアドレス可能なレ
ジスタの数に等しく、1つのプログラムで行なわれる演
算を高速化できない。すなわち、前記のウインドウの機
能は、プログラムの呼びと戻りが発生する場合のみ処理
の高速化がなされ、式(1)のベクトル計算のように1
つのプログラムで処理が完結しているような場合は高速
化されないという問題がある。また、前記のウインドウ
オ−バフロ−、ウインドウアンダフロ−の割込みは式
(1)のベクトル計算のように1つのプログラムで処理
が完結していて、プログラムの呼びと戻りが発生しない
場合は不要であるという問題がある。
【0032】本発明の目的は、デ−タ処理装置のア−キ
テクチャを変えずに、命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とし、科学技術計算におけるベクトル計算を高速に
実行する方式を提供することにある。
【0033】
【課題を解決するための手段】上記目的を達成するため
に、命令の浮動小数点レジスタフィ−ルドによってアド
レス可能な浮動小数点レジスタの数より多い、物理浮動
小数点レジスタ番号で参照される物理浮動小数点レジス
タと呼ばれる浮動小数点レジスタ、ウインドウスタ−ト
ポインタと呼ばれる数を格納するウインドウスタ−トポ
インタレジスタ、ウインドウスタ−トポインタが有効で
あることを示すウインドウスタ−トポインタ有効レジス
タと呼ばれるレジスタ、該ウインドウスタ−トポインタ
有効レジスタが1のときに、ウインドウスタ−トポイン
タの値、または、ウインドウスタ−トポインタと特定命
令中に示されるウインドウストライドの値によって、論
理浮動小数点レジスタ番号と呼ばれる、命令中の浮動小
数点レジスタフィ−ルドに示された値を物理浮動小数点
レジスタ番号に変換する変換回路、命令中に浮動小数点
レジスタフィ−ルドとウインドウストライドフィ−ルド
を持ち、論理浮動小数点レジスタ番号をウインドウスタ
−トポインタとウインドウストライドから得られた値に
よって変換した物理浮動小数点レジスタに主記憶デ−タ
を格納する浮動小数点レジスタプリロ−ド命令、命令中
に浮動小数点レジスタフィ−ルドとウインドウストライ
ドフィ−ルドを持ち、論理浮動小数点レジスタ番号をウ
インドウスタ−トポインタとウインドウストライドから
得られた値によって変換した物理浮動小数点レジスタか
ら主記憶にデ−タを格納する浮動小数点レジスタポスト
ストア命令、ウインドウスタ−トポインタレジスタに値
をセットするウインドウスタ−トポインタセット命令を
設ける。
【0034】
【作用】前記浮動小数点レジスタプリロ−ド命令、前記
浮動小数点レジスタポストストア命令以外の浮動小数点
レジスタを参照する命令は全て、命令中にウインドウス
トライドフィ−ルドを持たないので、ウインドウスタ−
トポインタ有効レジスタの値が1であれば、ウインドウ
ストライドの値を0とみなして、論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換が行われ、浮
動小数点レジスタの参照で物理浮動小数点レジスタ番号
が参照される。ウインドウスタ−トポインタ有効レジス
タの値が0であれば、論理浮動小数点レジスタ番号は物
理浮動小数点レジスタ番号に等しい。
【0035】前記浮動小数点レジスタプリロ−ド命令、
前記浮動小数点レジスタポストストア命令では、ウイン
ドウスタ−トポインタ有効レジスタの値が1であれば、
前記の通り、論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換が行われ、物理浮動小数点レジス
タが参照される。ウインドウスタ−トポインタ有効レジ
スタの値が0であれば、論理浮動小数点レジスタ番号は
参照される物理浮動小数点レジスタ番号に等しい。
【0036】論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換は以下のようにして行われる。
論理浮動小数点レジスタ番号が物理浮動小数点レジスタ
番号のどの範囲を指定するかを、複数通り設け、この範
囲の指定をウインドウと呼び、ウインドウ番号をwと表
記することにする。ここで、レジスタ番号スライド量と
いう数を導入し、以後pという記号で表すことにする。
【0037】ウインドウの設けかたの一例を図1、図2
に示す。本例では、論理浮動小数点レジスタは32本
で、論理浮動小数点レジスタ番号は0から31まで指定
可能とする。物理浮動小数点レジスタは128本で、物
理浮動小数点レジスタ番号は0から127である。以
下、物理浮動小数点レジスタの本数をmr、mrが2の
べき乗であるときは指数の値をsmという記号であらわ
す(すなわち、mr=2**sm)。ここで、”**”
はべき乗を表わす。mrが2のべき乗でないときは、l
og2(2を底とする対数) mrより小さく,最も近
い整数をsmとする。
【0038】以下、smをポインタ幅最大値と呼ぶこと
にする。
【0039】すなわち、本実施例では、mr=128,
sm=7である。物理浮動小数点レジスタのうち、論理
浮動小数点レジスタ番号−物理浮動小数点レジスタ番号
変換において、必ず同一のレジスタ番号に変換され、全
ウインドウが共通に使うレジスタをグロ−バルレジスタ
と呼び、グロ−バルレジスタの本数をmgという記号で
あらわすこととする。本例ではmg=8とする。 ここ
でウインドウスタ−トポインタレジスタのビット数をウ
インドウスタ−トポインタレジスタ幅と呼び、q(qは
sm以下の正の整数値)という記号であらわす。
【0040】ここで、ウインドウ番号wは、ウインドウ
スタ−トポインタの値をFWSTP,命令中のウインド
ウストライドの値をwstrとすると、以下のように表
わされる。
【0041】浮動小数点レジスタプリロ−ド命令では、 w=FWSTP+wstr, mod (mr−mg)/(2**(sm−q)) (2) 浮動小数点レジスタポストストア命令では、 w=FWSTP−wstr, mod (mr−mg)/(2**(sm−q)) (3) 上記2命令以外の命令では、 w=FWSTP, mod (mr−mg)/(2**(sm−q)) (4) ここで、式(2)−(4)でmr−mgは物理浮動小数
点レジスタの本数からグロ−バルレジスタの本数を減じ
た値で、ロ−カルレジスタ本数と呼び、各ウインドウを
用いるプログラムが、個々に参照する物理浮動小数点レ
ジスタの本数である。式(2)−(4)で2**(sm
−q)は、隣合うウインドウが、物理浮動小数点レジス
タ番号の上でいくつ離れているかを示し、ウインドウ刻
み幅と呼ぶ。式(2)−(4)で(mr−mg)/(2
**(sm−q))はロ−カルレジスタ本数をウインド
ウ刻み幅で除した値で、ウインドウの総数をあらわし、
ウインドウ数と呼ぶ。
【0042】レジスタ番号スライド量pは、以下のよう
に表わされる。
【0043】 p=2**(sm−q) * w (5) すなわち、ウインドウ刻み幅にウインドウ番号を乗じた
値であり、各ウインドウのロ−カルレジスタ(=グロ−
バルレジスタ以外のレジスタ)の先頭が、ウインドウ0
のロ−カルレジスタの先頭から、物理浮動小数点レジス
タ番号の上でいくつ離れているかを示す。
【0044】例として、sm=7,q=5の場合を、図
1、図2に示す。ウインドウはw0からw29の30通
り設けられる。すなわち、ウインドウ数は30である。
【0045】ここで、wの算出はウインドウ数を法とし
て行なわれるので、たとえば、w=29では、w+1の
値は0になる。
【0046】ここで、論理浮動小数点レジスタ番号をr
と表記し、物理浮動小数点レジスタ番号はwとrから決
まるので、<w,r>と表記することにする。
【0047】図1、図2の例では、以下のように論理浮
動小数点レジスタ番号−物理浮動小数点レジスタ番号変
換が行われる。
【0048】 1. 0≦r≦7の時 : wに関係なく(すなわち、pにも関係なく) <w,r>=r (6) 2. 8≦r≦31の時 : <w,r>=p+r, (7) 上記の式(2)−(7)で表わされる変換法で以下の3
つが特長的である。
【0049】1. 0番から7番の理浮動小数点レジス
タは、各ウインドウ共通に使う。これらのレジスタは、
グロ−バルレジスタとして、それぞれのウインドウを用
いる演算ル−プに共通のデ−タを保持する。
【0050】2. 各ウインドウの論理浮動小数点レジ
スタと、ウインドウ番号が1つ大きいウインドウの論理
浮動小数点レジスタには同一の物理浮動小数点レジスタ
を指すものがある。
【0051】これらのレジスタは、オ−バラップレジス
タとして隣合うウインドウを用いる演算ル−プ間のデ−
タの受渡しに用いる。
【0052】3. ポインタ幅最大値smまたはウイン
ドウスタ−トポインタレジスタ幅qを変えることによっ
て、ウインドウ刻み幅を変えることができる。
【0053】sm=7のとき、q=6では2レジスタ刻
み、q=4では8レジスタ刻みになる。
【0054】以後の説明ではsm=7,q=5に固定し
て述べる。
【0055】ここで、グロ−バルレジスタを設けない実
現法も考えられる。この場合は、式(2)−(4)のm
r−mgがmrで置き換えられ、式(6)、(7)がr
によらず、 <w,r>=p+r (8) となる。
【0056】前記新設命令の命令ニモニックと機能を、
一例として、以下のように定める。
【0057】1.ウインドウスタ−トポインタセット命
令 (命令ニモニック)FWSTPS u,v (機能)u=0の時、ウインドウスタ−トポインタレジ
スタにvをセットする。u=1の時、ウインドウスタ−
トポインタレジスタの値にvを加える。ここで、加算は
(mr−mg)/(2**(sm−q))を法として行
なわれる 2.浮動小数点レジスタプリロ−ド命令 (命令ニモニック)FLDPRM a(GRm),FR
n,wstr (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。このとき、上記(2)、(5)によって
求めたpの値で、論理浮動小数点レジスタ番号−物理浮
動小数点レジスタ番号変換が行われる。
【0058】その後、汎用レジスタmの値をa加える。
【0059】3.浮動小数点レジスタポストストア命令 (命令ニモニック)FSTPOM a(GRm),FR
n,wstr (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。このとき、上記(3)、(5)によって求めたpの
値で、論理浮動小数点レジスタ番号−物理浮動小数点レ
ジスタ番号変換が行われる。
【0060】その後、汎用レジスタmの値をa加える。
【0061】また、一般の浮動小数点命令(すなわち、
浮動小数点レジスタを用いる命令で上記2,3を除く命
令)では、上記(4)、(5)によって求めたpの値
で、論理浮動小数点レジスタ番号−物理浮動小数点レジ
スタ番号変換が行われる。
【0062】本発明は、modulo schedul
ingというコ−ディング法に特に有効である。mod
ulo schedulingに関しては、B.R.R
auet al. ”Register Alloca
tion for Software Pipelin
ed Loops”:ACM SIGPLAN ,92
pp.283−299とP.Tirumalai e
t al. ”Parallelization Of
Loops With ExitsOn Pipel
ined Architectures”:Super
−computing 90 ,pp.200−212
に記述がある。ここで、以下、本発明で対象とする計算
機はロ−ド命令、演算命令、ストア命令を並列実行可能
なス-パ-スカラプロセッサとする。すなわち、ロ−ド命
令を実行するユニット、演算命令を実行するユニット、
ストア命令を実行するユニットが分離されており、同時
に起動できるとする。式(1)をmodulo sch
edulingでコ−ディングしたものを図3に示す。
図3中、LOAD B(i)とは、B(i)を主記憶か
ら浮動小数点レジスタにロ−ドする命令であり、浮動小
数点レジスタ番号は省略して記してある。MULT B
(i)*Sとは、LOAD B(i)によって主記憶か
ら浮動小数点レジスタにロ−ドされたB(i)と別の浮
動小数点レジスタに格納されているSを乗算して、さら
に別の浮動小数点レジスタに格納する命令であり、浮動
小数点レジスタ番号は省略して記してある。STORE
A(i)とは、MULT B(i)*Sによって浮動
小数点レジスタに格納された演算結果を主記憶のA
(i)の位置にストアする命令であり、浮動小数点レジ
スタ番号は省略して記してある。図3中、「サイクル」
とはマシンサイクル単位の時刻を表し、同一サイクルの
ところに書かれている命令が同時実行開始される。すな
わち、サイクル1では、LOAD B(1)のみが実行
開始され、サイクル5では、LOAD B(5)、MU
LT B(1)*Sが同時実行開始され、サイクル9で
は、LOAD B(9)、MULT B(5)*S、S
TORE A(1)が同時実行開始される。ここで、実
際のプログラムの命令列は、同時実行開始される複数命
令は逐次的に書かれている。たとえば、サイクル5で同
時実行されるLOAD B(5)、MULT B(1)
*Sは、実際のプログラム上は、この順に書かれてい
る。ハ−ドウエアが、この連続する2命令LOAD B
(5)、MULT B(1)*Sが同時実行開始できる
ことを判定し、それぞれの実行ユニットに起動をかけ
る。以下、図3の意味について説明する。
【0063】式(1)を実行するには、各要素の処理を
1つのiterationによって行い、1つのite
rationはステ−ジ1:Bのロ−ド、ステ−ジ2:
乗算、ステ−ジ3:Aへのストアの3ステ−ジとする。
ここで、各ステ−ジは4サイクルを要すると仮定する。
すなわち、メモリの読みだし、乗算、メモリへの書き込
みにそれぞれ4サイクルかかるとする。すると、第i要
素に関するステ−ジ1の開始から、ステ−ジ2の開始ま
で4サイクル、ステ−ジ2の開始からステ−ジ3の開始
まで4サイクルかかることになる。そこで、第i要素に
関するロ−ドの4サイクル後に乗算を開始し、その4サ
イクル後にストアを開始することにする。また、第i要
素に関するロ−ドの1サイクル後に、第i+1要素に関
するロ−ドを開始し、第i要素に関する乗算の1サイク
ル後に、第i+1要素に関する乗算を開始し、第i要素
に関するストアの1サイクル後に、第i+1要素に関す
るストアを開始することにする。このように命令をスケ
ジュ−リングすると、図3のように、第i+8要素に関
するステ−ジ1と、第i+4要素に関するステ−ジ2
と、第i要素に関するステ−ジ3が同時実行できる部分
ができる、この部分をカ−ネルと呼ぶ。ここで、”同時
実行”といったのは、第i+8要素に関するステ−ジ1
と、第i+4要素に関するステ−ジ2と、第i要素に関
するステ−ジ3の各サイクルが同一時刻に同時進行して
いることを意味する。これは、本発明で対象とする計算
機はロ−ド命令、演算命令、ストア命令を並列実行可能
なス-パ-スカラプロセッサであるからである。すなわ
ち、カ−ネル部分は、3ステ−ジが同時に動いているの
で、高速である。ここで、図3のようなプログラムで、
カ−ネルの前の部分をプロロ−グ、カ−ネルの後の部分
をエピロ−グと呼ぶ。ここで、前述のように、実際のプ
ログラムの命令列は、同時実行開始される複数命令は逐
次的に書かれている式(1)を、上記新設機能を用い
て、図3のmodulo schedul−ingを用
いると、図8、図9のようなプログラムになる。
【0064】ここで、図8、図9のプログラムを実行す
る計算機は、前記の通り、ロ−ド命令、演算命令、スト
ア命令を並列実行可能なス-パ-スカラプロセッサとす
る。
【0065】ここで、図8、図9のプログラムの実行に
先だって、ベクトルBは、主記憶アドレスad1から始
まる連続領域に格納されているものとする。すなわち、
B(1)の主記憶アドレスがad1、B(2)の主記憶
アドレスがad1+8というように格納されている。同
様にベクトルAは、主記憶アドレスad3から始まる連
続領域に格納するものとする。汎用レジスタ1にはad
1が、汎用レジスタ3にはad3が、汎用レジスタ4に
はN−8、ウインドウスタ−トポインタ有効レジスタに
は1が、物理浮動小数点レジスタ7にはSが格納されて
いるものとする。
【0066】以下、図8、図9について説明する。N
o.1のFWSTPS命令では、ウインドウスタ−トポ
インタに0をセットする。No.2のFLDPRM命令
では、w=FWSTP+wstr=0+0=0なので、
B(1)が物理浮動小数点レジスタ<0、8>に格納さ
れる。No.3のFLDPRM命令では、w=FWST
P+wstr=0+1=1なので、B(2)が物理浮動
小数点レジスタ<1、8>に格納される。No.4のF
LDPRM命令では、w=FWSTP+wstr=0+
2=2なので、B(3)が物理浮動小数点レジスタ<
2、8>に格納される。No.5のFLDPRM命令で
は、w=FWSTP+wstr=0+3=3なので、B
(4)が物理浮動小数点レジスタ<3、8>に格納され
る。No.6のFLDPRM命令では、w=FWSTP
+wstr=0+4=4なので、B(5)が物理浮動小
数点レジスタ<4、8>に格納される。No.7のFM
LT命令では、論理浮動小数点レジスタ7が指定されて
おり、該レジスタは、式(6)より物理浮動小数点レジ
スタ7である(すなわち、グロ−バルレジスタ)ので、
物理浮動小数点レジスタ7の値(=S)を読みだし、w
=FWSTP=0なので物理浮動小数点レジスタ<0、
8>(=B(1))と積をとって、物理浮動小数点レジ
スタ<0、10>に格納する。No.8のFWSTPS
命令では、ウインドウスタ−トポインタに1を加える。
すなわち、FWSTP=1となる。No.9のFLDP
RM命令では、w=FWSTP+wstr=1+4=5
なので、B(6)が物理浮動小数点レジスタ<5、8>
に格納される。No.10のFMLT命令では、w=F
WSTP=1なので物理浮動小数点レジスタ<1、8>
(=B(2))とSと積をとって、物理浮動小数点レジ
スタ<1、10>に格納する。No.11のFWSTP
S命令では、ウインドウスタ−トポインタに1を加え
る。すなわち、FWSTP=2となる。No.12のF
LDPRM命令では、w=FWSTP+wstr=2+
4=6なので、B(7)が物理浮動小数点レジスタ<
6、8>に格納される。No.13のFMLT命令で
は、w=FWSTP=2なので物理浮動小数点レジスタ
<2、8>(=B(3))とSと積をとって、物理浮動
小数点レジスタ<2、10>に格納する。No.14の
FWSTPS命令では、ウインドウスタ−トポインタに
1を加える。すなわち、FWSTP=3となる。No.
15のFLDPRM命令では、w=FWSTP+wst
r=3+4=7なので、B(8)が物理浮動小数点レジ
スタ<7、8>に格納される。No.16のFMLT命
令では、w=FWSTP=3なので物理浮動小数点レジ
スタ<3、8>(=B(4))とSと積をとって、物理
浮動小数点レジスタ<3、10>に格納する。No.1
7のFWSTPS命令では、ウインドウスタ−トポイン
タに1を加える。すなわち、FWSTP=4となる。以
上、No.1からNo.17までの命令列が図3のプロ
ロ−グを形成している。
【0067】No.18のFLDPRM命令からNo.
22のBCNT命令までが、ル−プを構成し、N−8回
くりかえし実行される。以下、第i回目に実行されるル
−プについて見る(iは1から始まる)。FWSTPは
i+3を指している。No.18のFLDPRM命令
で、B(i+8)が、w=FWSTP+wstr=(i
+3)+4=i+7なので、物理浮動小数点レジスタ<
i+7(mod 30),8>にロ−ドされる。No.
19のFMLT命令では、w=FWSTP=i+3なの
で物理浮動小数点レジスタ<i+3(mod 30)、
8>(=B(i+4))とSと積をとって、物理浮動小
数点レジスタ<i+3(mod 30)、10>に格納
する。No.20のFSTPOM命令で,w=FWST
P−wstr=(i+3)−4=i−1なので、物理浮
動小数点レジスタ<i−1(mod30),10>の値
がA(i)の主記憶位置に格納される。No.17のF
WSTPS命令では、ウインドウスタ−トポインタに1
を加える。すなわち、FWSTP=i+4となる。N
o.22のBCNT命令でル−プの先頭に戻る。 すな
わち、第iル−プの中では、、4つ後のル−プで乗算さ
れるデ−タB(i+8)を物理浮動小数点レジスタ<i
+7(mod 30),8>に格納し、4つ前のル−プ
で物理浮動小数点レジスタ<i+3(mod 30),
8>に格納されたB(i+4)を用いて乗算を行い、そ
の結果を物理浮動小数点レジスタ<i+3(mod 3
0),10>に格納し、4つ前のル−プで得られた乗算
結果であり、物理浮動小数点レジスタ<i−1(mod
30),10>に格納されているB(i)*Sを、A
(i)の主記憶位置に格納する。
【0068】以上、No.18のFLDPRM命令から
No.22のBCNT命令までが、図3のカ−ネルを形
成している。
【0069】ル−プを抜けた後のNo.23からNo.
41の命令は、未処理の要素の処理である。No.23
のFMLT命令では、w=FWSTP=N−4なので物
理浮動小数点レジスタ<N−4(mod 30)、8>
(=B(N−3))とSと積をとって、物理浮動小数点
レジスタ<N−4(mod 30)、10>に格納す
る。No.24のFSTPOM命令で,w=FWSTP
−wstr=(N−4)−4=N−8なので、物理浮動
小数点レジスタ<N−8(mod 30),10>の値
がA(N−7)の主記憶位置に格納される。No.25
のFWSTPS命令では、ウインドウスタ−トポインタ
に1を加える。すなわち、FWSTP=N−3となる。
No.26のFMLT命令では、w=FWSTP=N−
3なので物理浮動小数点レジスタ<N−3(mod 3
0)、8>(=B(N−2))とSと積をとって、物理
浮動小数点レジスタ<N−3(mod 30)、10>
に格納する。No.27のFSTPOM命令で,w=F
WSTP−wstr=(N−3)−4=N−7なので、
物理浮動小数点レジスタ<N−7(mod 30),1
0>の値がA(N−6)の主記憶位置に格納される。N
o.28のFWSTPS命令では、ウインドウスタ−ト
ポインタに1を加える。すなわち、FWSTP=N−2
となる。No.29のFMLT命令では、w=FWST
P=N−2なので物理浮動小数点レジスタ<N−2(m
od 30)、8>(=B(N−1))とSと積をとっ
て、物理浮動小数点レジスタ<N−2(mod 3
0)、10>に格納する。No.30のFSTPOM命
令で,w=FWSTP−wstr=(N−2)−4=N
−6なので、物理浮動小数点レジスタ<N−6(mod
30),10>の値がA(N−5)の主記憶位置に格
納される。No.31のFWSTPS命令では、ウイン
ドウスタ−トポインタに1を加える。すなわち、FWS
TP=N−1となる。No.32のFMLT命令では、
w=FWSTP=N−1なので物理浮動小数点レジスタ
<N−1(mod 30)、8>(=B(N))とSと
積をとって、物理浮動小数点レジスタ<N−1(mod
30)、10>に格納する。No.33のFSTPO
M命令で,w=FWSTP−wstr=(N−1)−4
=N−5なので、物理浮動小数点レジスタ<N−5(m
od 30),10>の値がA(N−4)の主記憶位置
に格納される。No.34のFWSTPS命令では、ウ
インドウスタ−トポインタに1を加える。すなわち、F
WSTP=Nとなる。No.35のFSTPOM命令
で,w=FWSTP−wstr=N−4=N−4なの
で、物理浮動小数点レジスタ<N−4(mod 3
0),10>の値がA(N−3)の主記憶位置に格納さ
れる。No.36のFWSTPS命令では、ウインドウ
スタ−トポインタに1を加える。すなわち、FWSTP
=N+1となる。No.37のFSTPOM命令で,w
=FWSTP−wstr=(N+1)−4=N−3なの
で、物理浮動小数点レジスタ<N−3(mod30),
10>の値がA(N−2)の主記憶位置に格納される。
No.38のFWSTPS命令では、ウインドウスタ−
トポインタに1を加える。すなわち、FWSTP=N+
2となる。No.39のFSTPOM命令で,w=FW
STP−wstr=(N+2)−4=N−2なので、物
理浮動小数点レジスタ<N−2(mod 30),10
>の値がA(N−1)の主記憶位置に格納される。N
o.40のFWSTPS命令では、ウインドウスタ−ト
ポインタに1を加える。すなわち、FWSTP=N+3
となる。No.41のFSTPOM命令で,w=FWS
TP−wstr=(N+3)−4=N−1なので、物理
浮動小数点レジスタ<N−1(mod 30),10>
の値がA(N)の主記憶位置に格納される。以上、N
o.23からNo.41までの命令列が図3のエピロ−
グを形成している。 第iル−プ内の処理からわかるよ
うに、No.18のFLDPRM命令で論理浮動小数点
レジスタ番号8にデ−タを書き込み、直後のNo.19
のFMLT命令で論理浮動小数点レジスタ8を使ってい
るが、アクセスしている物理浮動小数点レジスタは<i
+7(mod 30),8>と<i+3(mod 3
0),8>であり、異なる。したがって、図6のプログ
ラムで発生した、デ−タ読みだし待ちで後続命令の実行
が待たされるという現象は起こらず、言いかえれば、デ
−タ読みだしは4ル−プ後のFMLT命令の実行までに
完了すればよいわけで、プログラムが高速に実行され
る。ここでNo.18のFLDPRM命令、No.19
のFMLT命令、No.20のFSTPOM命令は同時
実行開始される。すなわち、該4ル−プ後のFMLT命
令の実行は((No.18のFLDPRM命令、No.
19のFMLT命令、No.20のFSTPOM命令)
の実行開始サイクル(=1サイクル)+No.21のF
WSTPSの命令実行サイクル+No.22のBCNT
命令の実行サイクル)*4のサイクル数後であるので、
4サイクルかかるデ−タ読みだしは、4ル−プ後には完
了しており、デ−タ読みだし待ちによる性能低下はな
い。また、No.19のFMLT命令で論理浮動小数点
レジスタ番号10にデ−タを書き込み、直後のNo.2
0のFSTPOM命令で論理浮動小数点レジスタ10を
使っているが、アクセスしている物理浮動小数点レジス
タは<i+3(mod 30),10>と<i−1(m
od 30),10>であり、異なる。したがって、図
6のプログラムで発生した、演算結果待ちで後続命令の
実行が待たされるという現象は起こらず、言いかえれ
ば、乗算は4ル−プ後の実行までに完了すればよいわけ
で、プログラムが高速に実行される。ここで前述のよう
に、No.18のFLDPRM命令、No.19のFM
LT命令、No.20のFSTPOM命令は同時実行開
始される。すなわち、該4ル−プ後のFSTPOM命令
の実行は((No.18のFLDPRM命令、No.1
9のFMLT命令、No.20のFSTPOM命令)の
実行開始サイクル(=1サイクル)+No.21のFW
STPSの命令実行サイクル+No.22のBCNT命
令の実行サイクル)*4のサイクル数後であるので、4
サイクルかかる乗算は、4ル−プ後には完了しており、
演算実行待ちによる性能低下はない。
【0070】また、プログラムで指定している論理浮動
小数点レジスタは3つだけであり、図7のプログラムの
ように浮動小数点レジスタを9つも使う必要もない。
【0071】ここで、図8、図9のプログラムには、図
6のプログラムにはないウインドウスタ−トポインタの
更新の処理があってオ−バヘッドになっている。たとえ
ば、図6のプログラムのル−プが4命令で構成されてい
るのに対し、図8、図9のプログラムのル−プは5命令
で構成されている。しかし、図8、図9のプログラムの
ル−プの5命令中の3命令は同時実行できるうえ、図6
のプログラムにあるデ−タ読みだし待ちで後続命令の実
行が待たされるオ−バヘッドの方がはるかに大きい。ま
た、図7のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、ウインドウスタ−トポイ
ンタの更新のオ−バヘッドがあっても、本発明の方式の
ほうがすぐれていると考えられる。
【0072】また、浮動小数点レジスタプリロ−ド命令
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められるので、デ−タ読み
だし時間、演算時間の変化に対し、柔軟に対応できる。
【0073】さらに、ウインドウポインタレジスタ幅を
変更することにより(通常、ポインタ幅最大値は固
定)、ウインドウ刻み幅、レジスタ番号スライド量を自
由に変更できることになり、柔軟なプログラミングがで
きる。
【0074】
【実施例】以下、本発明の一実施例を図を用いて説明す
る。図4に本実施例のデ−タ処理装置を示す。デ−タ処
理装置は、命令の発行および実行を行なう命令処理ユニ
ット10、命令処理ユニットで実行する命令やデ−タを
記憶する主記憶30、命令処理ユニットと主記憶との間
のデ−タのやりとりを制御する記憶制御ユニット20か
ら構成される。
【0075】命令処理ユニット10は、実行する命令を
保持する命令レジスタ101、命令レジスタ101の内
容を解読し、命令実行の制御を行なう命令制御部10
2、汎用演算およびアドレス計算に必要なデ−タを保持
する汎用レジスタ群103、命令で指定される汎用演算
を実行する汎用演算器104、浮動小数点演算に必要な
デ−タを保持する物理浮動小数点レジスタ群105、命
令で指定される浮動小数点演算を実行する浮動小数点演
算器106、主記憶デ−タをアクセスするための主記憶
アドレスを計算するアドレス加算器107、記憶制御ユ
ニット20から読みだされた主記憶デ−タを保持するキ
ャッシュ108、キャッシュ108の検索結果に従い記
憶制御ユニット20から主記憶デ−タを読みだすなどの
制御を行なう主記憶アクセス制御部109、ウィンドウ
スタ−トポインタを格納するウィンドウスタ−トポイン
タレジスタ110、ウィンドウスタ−トポインタが有効
であることを示すウィンドウスタ−トポインタ有効レジ
スタ111、命令で指定された論理浮動小数点レジスタ
番号を示す信号115、命令で指定されたウインドウス
トライドの値を示す信号116、ウィンドウスタ−トポ
インタセット命令のvフィ−ルドの値を示す信号11
7、ウィンドウスタ−トポインタレジスタ110の値、
信号115、信号116から、式(2)−(7)にした
がって物理浮動小数点レジスタ番号に変換する変換回路
112から構成される。また,変換回路112は、ウィ
ンドウスタ−トポインタレジスタ110の値に信号11
7の値を加算する機能も持つ。
【0076】ここで、「作用」に述べた通り、命令レジ
スタ101には複数命令(ここでは3命令)が格納さ
れ、命令制御部102は同時に複数命令(ここでは3命
令)が解読実行できるとする。また、主記憶アクセス制
御部109はロ−ド、ストアを同時実行できるものとす
る。そのために、アドレス加算器107はロ−ド命令、
ストア命令のアドレス加算を同時にできるものとする。
【0077】ここで、このデ−タ処理装置には、図5で
示すように、3つの命令が新たに追加される。それら
は、(a)ウィンドウスタ−トポインタセット命令、
(b)浮動小数点レジスタプリロ−ド命令、(c)浮動
小数点レジスタポストストア命令、である。
【0078】図5(a)中、命令コ−ドは、ウィンドウ
スタ−トポインタセット命令であることを示すものであ
る。uは、該命令が以下の(i),(ii)の動作のい
ずれを実行するかを指定する。vは、(i)u=0の場
合:ウィンドウスタ−トポインタレジスタにセットされ
る値を指定する。(ii)u=1の場合:ウィンドウス
タ−トポインタレジスタに加算される値を指定する。こ
こで、加算は(mr−mg)/(2**(sm−q))
を法として行われる。すなわち、上記の例では、mr=
128,mg=8,sm=7,q=5であるので、ウィ
ンドウスタ−トポインタFWSTPの値が29、v=1
であれば、加算結果は0になる。
【0079】図5(b)中、命令コ−ドは、浮動小数点
レジスタプリロ−ド命令であることを示すものである。
浮動小数点レジスタ番号は主記憶デ−タが格納される論
理浮動小数点レジスタ番号(rとする)であり、対応す
る物理浮動小数点レジスタ番号は、ウィンドウスタ−ト
ポインタをFWSTP,命令中に指定されるウインドウ
ストライドをwstrとして,レジスタ番号スライド量
pを式(2),(5)で定義して、<w,r>である。
汎用レジスタの値が、デ−タを主記憶から読みだすため
の主記憶アドレスである。該読みだし実行後、汎用レジ
スタに加える値がインクリメント値である。 図5
(c)中、命令コ−ドは、浮動小数点レジスタポストス
トア命令であることを示すものである。浮動小数点レジ
スタ番号はデ−タが読みだされる論理浮動小数点レジス
タ番号(rとする)であり、対応する物理浮動小数点レ
ジスタ番号は、ウィンドウスタ−トポインタをFWST
P,命令中に指定されるウインドウストライドをwst
rとして,レジスタ番号スライド量pを式(3),
(5)で定義して、<w,r>である。汎用レジスタの
値がデ−タが格納される主記憶のアドレスである。該読
みだし実行後、汎用レジスタに加える値がインクリメン
ト値である。
【0080】これらの命令の動作を図4に従い、説明す
る。まず、ウィンドウスタ−トポインタセット命令につ
いて説明する。命令レジスタ101に命令が取り込まれ
ていると、命令は命令制御部102で解読され、ウィン
ドウスタ−トポインタ変更命令であることが識別される
と、(i)u=0であると、命令中に指定されたvがウ
ィンドウスタ−トポインタレジスタ110にセットさ
れ、(ii)u=1であると、命令中に指定されたvが
変換論理112に信号117を通じて送られ、変換論理
112でウィンドウスタ−トポインタレジスタ110の
値と加算され、加算結果がウィンドウスタ−トポインタ
レジスタ110にセットされる。
【0081】次に浮動小数点レジスタプリロ−ド命令に
ついて説明する。命令レジスタ101に命令が取り込ま
れていると、命令は命令制御部102で解読され、浮動
小数点レジスタプリロ−ド命令であることが識別される
と、アドレス加算器107は、命令に指定された汎用レ
ジスタ番号で示される汎用レジスタの内容をデ−タを主
記憶から読みだすための主記憶アドレスとする。主記憶
アクセス制御部109は前記主記憶アドレスをもとにキ
ャッシュ108を検索し、キャッシュに所望のデ−タが
あれば、キャッシュからデ−タを転送し、なければ、記
憶制御ユニット20経由で、主記憶30からデ−タを転
送する。該転送デ−タは、浮動小数点レジスタ105に
格納されるが、格納される浮動小数点レジスタの物理浮
動小数点レジスタ番号は、変換回路112で以下のよう
にして求められる。命令中に指定された浮動小数点レジ
スタ番号は論理浮動小数点レジスタ番号(rとする)で
あり、ウィンドウスタ−トポインタレジスタ110の値
をFWSTP,命令中に指定されたウインドウストライ
ドの値をwstrとして、レジスタ番号スライド量pを
式(2)、(5)にもとずいて計算し、該pの値を使っ
て、式(6)、(7)にもとずいて<w,r>を物理浮
動小数点レジスタ番号とする。該デ−タ転送動作開始
後、汎用演算器104で汎用レジスタの値にインクリメ
ント値を加える。
【0082】次に浮動小数点レジスタポストストア命令
について説明する。命令レジスタ101に命令が取り込
まれていると、命令は命令制御部102で解読され、浮
動小数点レジスタポストストア命令であることが識別さ
れると、アドレス加算器107は、命令に指定された汎
用レジスタ番号で示される汎用レジスタの内容をデ−タ
を主記憶に格納するための主記憶アドレスとする。浮動
小数点レジスタ105からデ−タが読みだされるが、読
みだされるレジスタの物理浮動小数点レジスタ番号は、
変換回路112で以下のようにして求められる。命令中
に指定された浮動小数点レジスタ番号は論理浮動小数点
レジスタ番号(rとする)であり、ウィンドウスタ−ト
ポインタレジスタ110の値をFWSTP,命令中に指
定されたウインドウストライドの値をwstrとして、
レジスタ番号スライド量pを式(3)、(5)にもとず
いて計算し、該pの値を使って、式(6)、(7)にも
とずいて<w,r>を物理浮動小数点レジスタ番号とす
る。主記憶アクセス制御部109は前記主記憶アドレス
をもとにキャッシュ108を検索し、キャッシュ中に、
主記憶30の該主記憶アドレスに格納されているデ−タ
の写しがあれば、該デ−タを前記読みだしデ−タに置き
換え、なければ、キャッシュは操作しない。さらに、主
記憶アクセス制御部109は記憶制御ユニット20経由
で、主記憶30の前記主記憶アドレスに前記読みだしデ
−タを格納する。該デ−タ転送動作開始後、汎用演算器
104で汎用レジスタの値にインクリメント値を加え
る。
【0083】また、一般の浮動小数点命令(すなわち、
浮動小数点レジスタを用いる命令で、前記の浮動小数点
レジスタプリロ−ド命令、浮動小数点レジスタポストス
トア命令を除く命令)では、ウインドウスタ−トポイン
タ有効レジスタ111が「1」であると、命令中に示さ
れた論理浮動小数点レジスタ番号rは、変換論理112
で、ウィンドウスタ−トポインタレジスタ110の値を
FWSTPとして、レジスタ番号スライド量pを式
(4)、(5)にもとずいて計算し、該pの値を使っ
て、式(6)、(7)にもとずいて<w,r>で表わさ
れる物理浮動小数点レジスタ番号に変換され、該物理浮
動小数点レジスタ番号の示す物理浮動小数点レジスタが
参照される。
【0084】浮動小数点レジスタを参照する命令では全
て、ウインドウスタ−トポインタ有効レジスタ111が
「1」であると、変換回路112における論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
なわれ、「0」であると、論理浮動小数点レジスタ番号
−物理浮動小数点レジスタ番号変換は行なわれず、命令
で指定された論理浮動小数点レジスタ番号がそのまま物
理浮動小数点レジスタ番号になり、該物理浮動小数点レ
ジスタ番号の示す物理浮動小数点レジスタが参照され
る。
【0085】ここで、ウィンドウスタ−トポインタ有効
レジスタ111には、デ−タ処理システムの制御情報を
格納する既存のレジスタの空きビットを割当てれば良
く、該レジスタに値を格納する既存の命令を用いて値を
セットするものとする。
【0086】以上のようにウィンドウスタ−トポインタ
セット命令、浮動小数点レジスタプリロ−ド命令、浮動
小数点レジスタポストストア命令とウィンドウスタ−ト
ポインタの制御下での一般の浮動小数点命令は動作す
る。
【0087】上記の実施例により、図8、図9のような
プログラムが実現でき、ベクトル計算が高速化されるこ
とは、「作用」の欄に述べた。
【0088】したがって、本発明の方式によると、ウィ
ンドウスタ−トポインタと命令中のウインドウストライ
ドを変えることにより、命令中のある浮動小数点レジス
タ番号は異なる物理浮動小数点レジスタ番号に変換され
るので、命令によってアドレス可能なレジスタの数より
も多い物理レジスタをデ−タ処理装置のア−キテクチャ
を変えることなくアクセス可能にでき、図8、図9に示
すようなプログラムが実現でき、デ−タ読みだし、レジ
スタのぶつかりによって命令実行が待たされることによ
る性能低下を防ぐことができ、プログラムの高速な実行
が可能である。
【0089】特に、図8、図9のプログラムからもわか
る通り、命令列のル−プのくりかえしが主となる科学技
術計算のベクトル計算では、命令ごとに使うウインドウ
を変え、i番目の要素の処理を、第i−nkル−プにお
ける浮動小数点プリロ−ド命令によるオペランドベクト
ルの第i要素のロ−ド、第iル−プにおける演算、第i
+nmル−プにおける浮動小数点ポストストア命令によ
る結果格納用ベクトルの第i要素への演算結果のストア
を行うことによって(nk,nmはプログラムで指定で
きる整数)、1つのデ−タに対するロ−ド、演算、スト
アの処理の命令列上での距離が大きくなり、デ−タの読
みだし時間、演算実行時間の影響による性能低下を防ぐ
ことができる。
【0090】さらに、本発明の利点の一つは、浮動小数
点レジスタプリロ−ド命令と浮動小数点レジスタポスト
ストア命令で、命令中のウインドウストライドにより、
デ−タをロ−ド/ストアするウインドウ番号を自由に決
められることであり、デ−タ読みだし時間、演算時間の
変化に対し、柔軟に対応できる。
【0091】さらに、本発明の利点の一つは、ウインド
ウポインタレジスタ幅を変更することにより、ウインド
ウ刻み幅、レジスタ番号スライド量を自由に変更できる
ことであり、柔軟なプログラミングができる。
【0092】
【発明の効果】本発明によれば、ウィンドウスタ−トポ
インタまたは命令中のウインドウストライドを変えるこ
とにより、命令中のある浮動小数点レジスタ番号は異な
る物理浮動小数点レジスタ番号に変換されるので、命令
によってアドレス可能な浮動小数点レジスタの数よりも
多い物理浮動小数点レジスタをデ−タ処理装置のア−キ
テクチャを変えることなくアクセス可能にできるので、
デ−タ読みだし、レジスタのぶつかりによって命令実行
が待たされることによる性能低下を防ぐことができ、プ
ログラムの高速な実行が可能であるという効果がある。
【0093】特に、命令列のル−プのくりかえしが主と
なる科学技術計算のベクトル計算では、命令ごとに使う
ウインドウを変え、i番目の要素の処理を、第i−nk
ル−プにおける浮動小数点レジスタプリロ−ド命令によ
るオペランドベクトルの第i要素のロ−ド、第iル−プ
における演算、第i+nmル−プにおける浮動小数点ポ
ストストア命令による結果格納用ベクトルの第i要素へ
のストアによって行うことによって(nk,nmはプロ
グラムで指定できる整数)、1つのデ−タに対するロ−
ド、演算、ストアの処理の命令列上での距離が大きくな
り、デ−タの読みだし時間、演算実行時間の影響による
性能低下を防ぐことができ、高速化ができる。
【0094】また、浮動小数点レジスタプリロ−ド命令
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められることであり、デ−
タ読みだし時間、演算時間の変化に対し、柔軟に対応で
きる。
【0095】さらに、ウインドウポインタレジスタ幅を
変更することにより、ウインドウ刻み幅、レジスタ番号
スライド量を自由に変更できることになり、柔軟なプロ
グラミングができる。
【図面の簡単な説明】
【図1】 本発明による論理浮動小数点レジスタ番号−
物理浮動小数点レジスタ番号変換の一実施例。
【図2】 本発明による論理浮動小数点レジスタ番号−
物理浮動小数点レジスタ番号変換の一実施例。
【図3】 本発明で特に有効となるmodulo sc
hedulingの原理を示す図。
【図4】 本発明による図5で示す命令を実行するデ−
タ処理装置の一実施例を示す構成図。
【図5】 本発明によるウィンドウスタ−トポインタセ
ット命令、浮動小数点レジスタプリロ−ド命令、浮動小
数点レジスタポストストア命令の一実施例を示す図。
【図6】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例。
【図7】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムをル−プアンロ
−リング手法を用いて書き直した例。
【図8】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムを本発明による
命令を用いて書き直した例。
【図9】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムを本発明による
命令を用いて書き直した例。
【符号の説明】
10…は命令処理ユニット、 20…は記憶制御ユニット、 30…は主記憶、 101…命令レジスタ 102…命令制御部 103…汎用レジスタ 104…汎用演算器 105…物理浮動小数点レジスタ 106…浮動小数点演算器 107…アドレス加算器 108…キャッシュ 109…主記憶アクセス制御部 110…ウィンドウスタ−トポインタレジスタ 111…ウィンドウスタ−トポインタ有効レジスタ 112…変換論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 藤井 啓明 東京都国分寺東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 昭61−241870(JP,A) 特開 昭61−267134(JP,A) 特開 昭61−136131(JP,A) 特開 昭60−129838(JP,A) PROC.SUPERCOMPUTI NG’92 P.642−651

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】命令やデ−タを保持する主記憶と、該主記
    憶内に保持された主記憶デ−タを用いて命令を実行し、
    その命令には、該主記憶から主記憶デ−タを読みだし、
    命令中で番号づけされたレジスタに格納するロ−ド命
    令、命令中で番号づけされたレジスタから該主記憶にデ
    −タを格納するストア命令、演算を行い、演算結果を命
    令中で番号づけされたレジスタに格納する演算命令を含
    む命令処理ユニットから成るデ−タ処理装置において、
    命令によってアドレス可能なレジスタの数より多い物理
    レジスタと呼ばれるレジスタ、複数のビットから成る
    ウインドウスタ−トポインタレジスタと呼ばれるレジス
    、1ビットのウインドウスタ−トポインタ有効レジ
    スタと呼ばれるレジスタ、該ウインドウスタ−トポイ
    ンタ有効レジスタの値が1のときに、命令中のレジスタ
    番号を物理レジスタ番号へ変換し、かつ前記ウインドウ
    スタ−トポインタレジスタの値、または特定命令中に指
    定される1または複数ビットのウインドウストライドと
    呼ばれる値と前記ウインドウスタ−トポインタレジスタ
    の値から得られた値によって該変換のパタ−ンを変える
    変換回路とを有し前記命令処理ユニットは、前記ウイ
    ンドウスタ−トポインタレジスタの値をセットするため
    のウインドウポインタセット命令、命令中にレジスタ番
    号と前記ウインドウストライドを持ち、命令中のレジス
    タ番号を、前記ウインドウスタ−トポインタレジスタの
    値と前記ウインドウストライドの値から得られた値によ
    って前記変換回路で物理レジスタ番号へ変換し、該物理
    レジスタ番号の示す物理レジスタに主記憶デ−タを格納
    するレジスタプリロ−ド命令、命令中にレジスタ番号と
    前記ウインドウストライドを持ち、命令中のレジスタ番
    号を、前記ウインドウスタ−トポインタレジスタの値と
    前記ウインドウストライドの値から得られた値によって
    前記変換回路で物理レジスタ番号へ変換し、該物理レジ
    スタ番号の示す物理レジスタからデ−タを主記憶に格納
    するレジスタポストストア命令を実行する手段を有し、
    前記レジスタプリロ−ド命令、前記レジスタポストスト
    ア命令を除く、前記ロ−ド命令、前記ストア命令、前記
    演算命令では命令中のレジスタ番号を前記ウインドウス
    タ−トポインタレジスタの値によって前記変換回路で物
    理レジスタ番号へ変換し、該物理レジスタ番号の示す物
    理レジスタを参照するように制御することを特徴とする
    デ−タ処理装置。
  2. 【請求項2】前記命令中で番号づけされたレジスタと前
    記物理レジスタが浮動小数点レジスタと呼ばれる、浮動
    小数点数を格納する専用のレジスタであることを特徴と
    する請求項1記載のデ−タ処理装置。
  3. 【請求項3】命令中のレジスタ番号から前記物理レジス
    タ番号の変換において、命令中のレジスタ番号のうち、
    1つまたは複数個は、前記ウインドウスタ−トポインタ
    レジスタの値および命令中の前記ウインドウストライド
    によらずグロ−バルレジスタ番号と呼ばれる同一の前記
    物理レジスタ番号に変換されることを特徴とする請求項
    1記載のデ−タ処理装置。
  4. 【請求項4】命令中のレジスタ番号から前記物理レジス
    タ番号への変換において、前記物理レジスタの本数から
    前記グロ−バルレジスタの本数を減じた値をロ−カルレ
    ジスタ本数、前記ウインドウスタ−トポインタレジスタ
    のビット数をウインドウスタ−トポインタレジスタ幅、
    前記ウインドウスタ−トポインタレジスタ幅以上のある
    整数値をポインタ幅最大値、前記ポインタ幅最大値から
    前記ウインドウスタ−トポインタレジスタ幅を減じた値
    を指数とする2のべき乗をウインドウ刻み幅、前記ロ−
    カルレジスタ本数を前記ウインドウ刻み幅で除した値を
    ウインドウ数と定義したとき、前記レジスタプリロ−ド
    命令、前記レジスタポストストア命令、該2命令を除く
    前記ロ−ド命令、前記ストア命令、前記演算命令で、命
    令中のグロ−バルレジスタを示すレジスタ番号は同一番
    号の物理レジスタ番号に変換され、命令中のグロ−バル
    レジスタ以外を示すレジスタ番号は、前記レジスタプリ
    ロ−ド命令では、前記ウインドウスタ−トポインタレジ
    スタの値と命令中の前記ウインドウストライドの値を、
    前記ウインドウ数を法として加えたウインドウ番号と呼
    ばれる値に、前記ウインドウ刻み幅を乗じた、レジスタ
    番号スライド量と呼ばれる値に、命令中のレジスタ番号
    を加えた値であらわされる物理レジスタ番号に変換さ
    れ、前記レジスタポストストア命令では、前記ウインド
    ウスタ−トポインタレジスタの値から命令中の前記ウイ
    ンドウストライドの値を、前記ウインドウ数を法として
    減じたウインドウ番号と呼ばれる値に、前記ウインドウ
    刻み幅を乗じた、レジスタ番号スライド量と呼ばれる値
    に、命令中のレジスタ番号を加えた値であらわされる物
    理レジスタ番号に変換され、前記レジスタプリロ−ド命
    令、前記レジスタポストストア命令を除く、前記ロ−ド
    命令、前記ストア命令、前記演算命令では、前記ウイン
    ドウスタ−トポインタレジスタの値を、前記ウインドウ
    数を法として、変換したウインドウ番号と呼ばれる値
    に、前記ウインドウ刻み幅を乗じた、レジスタ番号スラ
    イド量と呼ばれる値に、命令中のレジスタ番号を加えた
    値であらわされる物理レジスタ番号に変換されることを
    特徴とする請求項3記載のデ−タ処理装置。
  5. 【請求項5】命令中のレジスタ番号から前記物理レジス
    タ番号への変換において、前記物理レジスタの本数を物
    理レジスタ本数、前記ウインドウスタ−トポインタレジ
    スタのビット数をウインドウスタ−トポインタレジスタ
    幅、前記ウインドウスタ−トポインタレジスタ幅以上の
    ある整数値をポインタ幅最大値、前記ポインタ幅最大値
    から前記ウインドウスタ−トポインタレジスタ幅を減じ
    た値を指数とする2のべき乗をウインドウ刻み幅、前記
    物理レジスタ本数を前記ウインドウ刻み幅で除した値を
    ウインドウ数と定義したとき、命令中のレジスタ番号
    は、前記レジスタプリロ−ド命令では、前記ウインドウ
    スタ−トポインタレジスタの値と命令中の前記ウインド
    ウストライドの値を、前記ウインドウ数を法として加え
    たウインドウ番号と呼ばれる値に、前記ウインドウ刻み
    幅を乗じた、レジスタ番号スライド量と呼ばれる値に、
    命令中のレジスタ番号を加えた値であらわされる物理レ
    ジスタ番号に変換され、前記レジスタポストストア命令
    では、前記ウインドウスタ−トポインタレジスタの値か
    ら命令中の前記ウインドウストライドの値を、前記ウイ
    ンドウ数を法として減じたウインドウ番号と呼ばれる値
    に、前記ウインドウ刻み幅を乗じた、レジスタ番号スラ
    イド量と呼ばれる値に、命令中のレジスタ番号を加えた
    値であらわされる物理レジスタ番号に変換され、前記レ
    ジスタプリロ−ド命令、前記レジスタポストストア命令
    を除く、前記ロ−ド命令、前記ストア命令、前記演算命
    令では、前記ウインドウスタ−トポインタレジスタの値
    を、前記ウインドウ数を法として、変換したウインドウ
    番号と呼ばれる値に、前記ウインドウ刻み幅を乗じた、
    レジスタ番号スライド量と呼ばれる値に、命令中のレジ
    スタ番号を加えた値であらわされる物理レジスタ番号に
    変換されることを特徴とする請求項1記載のデ−タ処理
    装置。
  6. 【請求項6】前記物理レジスタの本数がポインタ幅最大
    値という値を指数とする2のべき乗であり、前記ウイン
    ドウスタ−トポインタレジスタのビット数はポインタ幅
    最大値以下であり、命令中のレジスタ番号から前記物理
    レジスタ番号への変換において、前記物理レジスタの本
    数から前記グロ−バルレジスタの本数を減じた値をロ−
    カルレジスタ本数、前記ウインドウスタ−トポインタレ
    ジスタのビット数をウインドウスタ−トポインタレジス
    タ幅、前記ポインタ幅最大値から前記ウインドウスタ−
    トポインタレジスタ幅を減じた値を指数とする2のべき
    乗をウインドウ刻み幅、前記ロ−カルレジスタ本数を前
    記ウインドウ刻み幅で除した値をウインドウ数と定義し
    たとき、前記レジスタプリロ−ド命令、前記レジスタポ
    ストストア命令、該2命令を除く前記ロ−ド命令、前記
    ストア命令、前記演算命令で、命令中のグロ−バルレジ
    スタを示すレジスタ番号は同一番号の物理レジスタ番号
    に変換され、命令中のグロ−バルレジスタ以外を示すレ
    ジスタ番号は、前記レジスタプリロ−ド命令では、前記
    ウインドウスタ−トポインタレジスタの値と命令中の前
    記ウインドウストライドの値を、前記ウインドウ数を法
    として加えたウインドウ番号と呼ばれる値に、前記ウイ
    ンドウ刻み幅を乗じた、レジスタ番号スライド量と呼ば
    れる値に、命令中のレジスタ番号を加えた値であらわさ
    れる物理レジスタ番号に変換され、前記レジスタポスト
    ストア命令では、前記ウインドウスタ−トポインタレジ
    スタの値から命令中の前記ウインドウストライドの値
    を、前記ウインドウ数を法として減じたウインドウ番号
    と呼ばれる値に、前記ウインドウ刻み幅を乗じた、レジ
    スタ番号スライド量と呼ばれる値に、命令中のレジスタ
    番号を加えた値であらわされる物理レジスタ番号に変換
    され、前記レジスタプリロ−ド命令、前記レジスタポス
    トストア命令を除く、前記ロ−ド命令、前記ストア命
    令、前記演算命令では、前記ウインドウスタ−トポイン
    タレジスタの値を、前記ウインドウ数を法として、変換
    したウインドウ番号と呼ばれる値に、前記ウインドウ刻
    み幅を乗じた、レジスタ番号スライド量と呼ばれる値
    に、命令中のレジスタ番号を加えた値であらわされる物
    理レジスタ番号に変換されることを特徴とする請求項3
    記載のデ−タ処理装置。
  7. 【請求項7】前記物理レジスタの本数がポインタ幅最大
    値という値を指数とする2のべき乗であり、前記ウイン
    ドウスタ−トポインタレジスタのビット数はポインタ幅
    最大値以下であり、命令中のレジスタ番号から前記物理
    レジスタ番号への変換において、前記物理レジスタの本
    数を物理レジスタ本数、前記ウインドウスタ−トポイン
    タレジスタのビット数をウインドウスタ−トポインタレ
    ジスタ幅、前記ポインタ幅最大値から前記ウインドウス
    タ−トポインタレジスタ幅を減じた値を指数とする2の
    べき乗をウインドウ刻み幅、前記物理レジスタ本数を前
    記ウインドウ刻み幅で除した値をウインドウ数と定義し
    たとき、命令中のレジスタ番号は、前記レジスタプリロ
    −ド命令では、前記ウインドウスタ−トポインタレジス
    タの値と命令中の前記ウインドウストライドの値を、前
    記ウインドウ数を法として加えたウインドウ番号と呼ば
    れる値に、前記ウインドウ刻み幅を乗じた、レジスタ番
    号スライド量と呼ばれる値に、命令中のレジスタ番号を
    加えた値であらわされる物理レジスタ番号に変換され、
    前記レジスタポストストア命令では、前記ウインドウス
    タ−トポインタレジスタの値から命令中の前記ウインド
    ウストライドの値を、前記ウインドウ数を法として減じ
    たウインドウ番号と呼ばれる値に、前記ウインドウ刻み
    幅を乗じた、レジスタ番号スライド量と呼ばれる値に、
    命令中のレジスタ番号を加えた値であらわされる物理レ
    ジスタ番号に変換され、前記レジスタプリロ−ド命令、
    前記レジスタポストストア命令を除く、前記ロ−ド命
    令、前記ストア命令、前記演算命令では、前記ウインド
    ウスタ−トポインタレジスタの値を、前記ウインドウ数
    を法として、変換したウインドウ番号と呼ばれる値に、
    前記ウインドウ刻み幅を乗じた、レジスタ番号スライド
    量と呼ばれる値に、命令中のレジスタ番号を加えた値で
    あらわされる物理レジスタ番号に変換されることを特徴
    とする請求項1記載のデ−タ処理装置。
  8. 【請求項8】 前記ポインタ幅最大値または前記ウインド
    ウスタ−トポインタレジスタ幅を可変にすることによっ
    て、前記ウインドウ刻み幅を可変にすることを特徴とす
    る請求項4記載のデ−タ処理装置。
  9. 【請求項9】 前記ポインタ幅最大値または前記ウインド
    ウスタ−トポインタレジスタ幅を可変にすることによっ
    て、前記ウインドウ刻み幅を可変にすることを特徴とす
    る請求項5記載のデ−タ処理装置。
  10. 【請求項10】 前記ポインタ幅最大値または前記ウイン
    ドウスタ−トポインタレジスタ幅を可変にすることによ
    って、前記ウインドウ刻み幅を可変にすることを特徴と
    する請求項6記載のデ−タ処理装置。
  11. 【請求項11】 前記ポインタ幅最大値または前記ウイン
    ドウスタ−トポインタレジスタ幅を可変にすることによ
    って、前記ウインドウ刻み幅を可変にすることを特徴と
    する請求項7記載のデ−タ処理装置。
JP4326435A 1992-11-16 1992-12-07 デ−タ処理装置 Expired - Lifetime JP2725546B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP4326435A JP2725546B2 (ja) 1992-12-07 1992-12-07 デ−タ処理装置
GB9324877A GB2273186B (en) 1992-12-07 1993-12-03 Data processing unit
US08/275,347 US5729723A (en) 1992-11-16 1994-07-15 Data processing unit
US08/600,155 US5581721A (en) 1992-12-07 1996-02-12 Data processing unit which can access more registers than the registers indicated by the register fields in an instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4326435A JP2725546B2 (ja) 1992-12-07 1992-12-07 デ−タ処理装置

Publications (2)

Publication Number Publication Date
JPH06176053A JPH06176053A (ja) 1994-06-24
JP2725546B2 true JP2725546B2 (ja) 1998-03-11

Family

ID=18187778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4326435A Expired - Lifetime JP2725546B2 (ja) 1992-11-16 1992-12-07 デ−タ処理装置

Country Status (3)

Country Link
US (1) US5581721A (ja)
JP (1) JP2725546B2 (ja)
GB (1) GB2273186B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1245634B (it) * 1990-06-28 1994-09-29 Ducati Meccanica Spa Generatore con sistema di alimentazione per l'accensione elettronica nei motori a combustione interna
JP3630804B2 (ja) * 1995-11-30 2005-03-23 三洋電機株式会社 データ処理装置
US5799166A (en) * 1996-06-17 1998-08-25 Sun Microsystems, Inc. Window delta from current window for fast register file address dependency checking
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
JPH1097423A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
JPH1196002A (ja) 1997-09-18 1999-04-09 Sanyo Electric Co Ltd データ処理装置
US6167504A (en) * 1998-07-24 2000-12-26 Sun Microsystems, Inc. Method, apparatus and computer program product for processing stack related exception traps
CA2277636A1 (en) * 1998-07-30 2000-01-30 Sun Microsystems, Inc. A method, apparatus & computer program product for selecting a predictor to minimize exception traps from a top-of-stack cache
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
JP2006004042A (ja) * 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US20110289485A1 (en) * 2010-05-21 2011-11-24 International Business Machines Corporation Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4340932A (en) * 1978-05-17 1982-07-20 Harris Corporation Dual mapping memory expansion unit
JPS57166649A (en) * 1981-03-30 1982-10-14 Ibm Data processing system
EP0476722B1 (en) * 1985-04-08 1997-02-26 Hitachi, Ltd. Data processing system
US5111389A (en) * 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US5179674A (en) * 1988-07-25 1993-01-12 Digital Equipment Corporation Method and apparatus for predicting valid performance of virtual-address to physical-address translations
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
US5247645A (en) * 1991-03-12 1993-09-21 International Business Machines Corporation Dynamic memory mapper which supports interleaving across 2N +1, 2.sup.NN -1 number of banks for reducing contention during nonunit stride accesses
US5278963A (en) * 1991-06-21 1994-01-11 International Business Machines Corporation Pretranslation of virtual addresses prior to page crossing
US5438669A (en) * 1991-11-20 1995-08-01 Hitachi, Ltd. Data processor with improved loop handling utilizing improved register allocation
US5437043A (en) * 1991-11-20 1995-07-25 Hitachi, Ltd. Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PROC.SUPERCOMPUTING’92 P.642−651

Also Published As

Publication number Publication date
GB2273186A (en) 1994-06-08
US5581721A (en) 1996-12-03
GB9324877D0 (en) 1994-01-19
GB2273186B (en) 1996-11-20
JPH06176053A (ja) 1994-06-24

Similar Documents

Publication Publication Date Title
JP2725546B2 (ja) デ−タ処理装置
EP1160663B1 (en) Processor for executing software pipelined loops and corresponding method
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
US6988183B1 (en) Methods for increasing instruction-level parallelism in microprocessors and digital system
EP0723221B1 (en) Information processing apparatus for prefetching data structure either from a main memory or its cache memory
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US6988190B1 (en) Method of an address trace cache storing loop control information to conserve trace cache area
US5664135A (en) Apparatus and method for reducing delays due to branches
EP0735463A2 (en) Computer processor having a register file with reduced read and/or write port bandwidth
EP0394624B1 (en) Multiple sequence processor system
EP0543366B1 (en) Data processing method and apparatus
JPH02130634A (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
KR20020022056A (ko) 소프트웨어 데이터 프리펫치의 오버헤드 감소 방법
EP4152146A1 (en) Data processing method and device, and storage medium
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
US5729723A (en) Data processing unit
JPH0820951B2 (ja) プロセッサの動作速度を速める方法
JP3317985B2 (ja) 擬似ベクトルプロセッサ
JP3097981B2 (ja) データ処理装置
US6115805A (en) Non-aligned double word fetch buffer
JPH0512751B2 (ja)
JP2000029865A (ja) デ―タ処理装置
JP2875426B2 (ja) 擬似ベクトルプロセッサ