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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving 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までの中に保
持する)。そして、過去に実行されたロ−ド命令の主記
憶アドレスとその時ロ−ドされたデ−タが格納されてい
るハ−ドウエアレジスタ番号を登録しておく記憶機構を
設け、プログラムで発行されたロ−ド命令が該記憶機構
に登録されている主記憶アドレスと一致したら、主記憶
からデ−タを読まずに、対応するハ−ドウエアレジスタ
からデ−タを読みだす。この方式により、主記憶参照回
数が低減でき、また、命令間の参照レジスタのぶつかり
による性能低下を防ぐことができる。
ドレス可能なレジスタの数より多いレジスタをデ−タ処
理装置がアクセス可能とする技術としては、特開昭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になる。
ス可能なレジスタの数より多いレジスタをデ−タ処理装
置がアクセス可能とする技術としては、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
が割当てられる。このように使うことによって、以下の
効果がある。プログラムによってアドレス可能なレジス
タの数だけのレジスタしか持たないシステムでは、前記
のようなプログラムの呼びが発生するたびに、該呼び発
生時点の情報保存のために、レジスタに格納されていた
デ−タを主記憶に格納しなければならず、プログラムの
戻りが発生するたびに、プログラムの再開のために、主
記憶に格納されていたデ−タをレジスタに書き戻さなく
てはならない。前記のウィンドウの機構を持つシステム
では、異なるウィンドウが割当てられているプログラム
は異なる物理レジスタを参照しているので、前記のレジ
スタからの主記憶への格納、主記憶からレジスタへの書
き戻しの操作が不要になり、処理が高速化される。
に、あるプログラムにウィンドウ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バイトとする。
タ幅は8バイトとする。
【0010】式(1)を、汎用計算機で実行すると、図
6のようなプログラムになる。
6のようなプログラムになる。
【0011】図6中の各命令の機能を以下に説明する。
【0012】FLDM a(GRm),FRn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。
【0013】その後、汎用レジスタmの値をa加える。
【0014】FMLT FRj,FRm,FRn (機能)浮動小数点レジスタmの値と浮動小数点レジス
タnの値の積を浮動小数点レジスタjに格納する。
タnの値の積を浮動小数点レジスタjに格納する。
【0015】FSTM a(GRm),FRn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。
レジスタmの値で表される主記憶アドレスにストアす
る。
【0016】その後、汎用レジスタmの値をa加える。
【0017】BCNT GRm,t (機能)GRmの値を1減じる。その値がゼロでなけれ
ば、番地tに分岐する。ゼロならば、分岐しない。
ば、番地tに分岐する。ゼロならば、分岐しない。
【0018】ここで、図6のプログラムの実行に先だっ
て、ベクトルBは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、B
(1)の主記憶アドレスがad1、B(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad3から始まる連続
領域に格納するものとする。汎用レジスタ1にはad1
が、汎用レジスタ3にはad3が、汎用レジスタ4には
Nが前もって格納されているものとする。浮動小数点レ
ジスタ7にはSが前もって格納されているものとする。
て、ベクトル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)にストアされる。
M命令で、B(i)が浮動小数点レジスタ8にロ−ドさ
れ、No.2のFMLT命令で、該浮動小数点レジスタ
の値と浮動小数点レジスタ7の値の積が浮動小数点レジ
スタ10に格納され、No.3のFSTM命令で該浮動
小数点レジスタの値がA(i)にストアされる。
【0020】すなわち、4命令からなるル−プを1回実
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
【0021】ここで、1ル−プの実行時間が問題にな
る。まずNo.1のFLDM命令で浮動小数点レジスタ
8に主記憶からデ−タをロ−ドしているが、キャッシュ
にデ−タがある場合はFLDM命令は短いサイクル数で
終わるが、キャッシュにない場合は、キャッシュよりは
かなり低速の主記憶からデ−タを読みださなくてはなら
ず、キャッシュにデ−タがある場合に比べ、かなり時間
がかかることになる。次にNo.2のFMLT命令は浮
動小数点レジスタ8の値を使うので、前記ロ−ドが完了
しないと、実行が開始できない。No.3のFSTM命
令は浮動小数点レジスタ10の値を使うが、浮動小数点
レジスタ10の値は先行するFMLT命令の実行が終わ
らないと値が決まらないので、実行が開始できない。
る。まずNo.1のFLDM命令で浮動小数点レジスタ
8に主記憶からデ−タをロ−ドしているが、キャッシュ
にデ−タがある場合はFLDM命令は短いサイクル数で
終わるが、キャッシュにない場合は、キャッシュよりは
かなり低速の主記憶からデ−タを読みださなくてはなら
ず、キャッシュにデ−タがある場合に比べ、かなり時間
がかかることになる。次にNo.2のFMLT命令は浮
動小数点レジスタ8の値を使うので、前記ロ−ドが完了
しないと、実行が開始できない。No.3のFSTM命
令は浮動小数点レジスタ10の値を使うが、浮動小数点
レジスタ10の値は先行するFMLT命令の実行が終わ
らないと値が決まらないので、実行が開始できない。
【0022】すなわち、(1)デ−タ読みだし時間、
(2)レジスタのぶつかりという2つの性能低下要因が
ル−プの実行時間を長くすることになる。特に(1)は
長大デ−タを扱う計算の場合は深刻で、必要なデ−タが
キャッシュにはいりきらない場合が多くなり、性能の低
下は大きくなる。
(2)レジスタのぶつかりという2つの性能低下要因が
ル−プの実行時間を長くすることになる。特に(1)は
長大デ−タを扱う計算の場合は深刻で、必要なデ−タが
キャッシュにはいりきらない場合が多くなり、性能の低
下は大きくなる。
【0023】この問題を解決する一手法がル−プアンロ
−リングであり、図7に示す手法である。すなわち、1
ル−プで複数要素(=n)を処理し、1ル−プで1要素
を処理する場合に比べ、ル−プ回数を1/nにする方式
である。図7は1ル−プで4要素を処理する方式であ
る。
−リングであり、図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が前もって格納されているものとす
る。
て、ベクトル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回実行することによって全要素
計算ができる。
−プを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命令が待たされるこ
とはない。
し、ロ−ドを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ル−プで処理しなくてはならず、より多くのレ
ジスタが必要となることになる。
て、性能は向上するが、この方式の欠点は、多くのレジ
スタを必要とすることである。図6のプログラムが3本
の浮動小数点レジスタを必要とするのに対し、図7のプ
ログラムは9本の浮動小数点レジスタを必要とする。デ
−タの読みだしに要する時間がさらに長かったり、演算
に要する時間がさらに長かったりすると、もっと多くの
要素を1ル−プで処理しなくてはならず、より多くのレ
ジスタが必要となることになる。
【0028】一般に、レジスタはアクティブな素子(す
なわち、メモリ素子ではない)で構成され、読みだし/
書き込みのためのポ−ト(すなわち、デ−タの出入口)
を多く用意することができるので、いわゆる記憶装置が
1つの動作サイクルに1個のデ−タの読みだし/書き込
みしかできないのに比べ、極めて高速である。したがっ
て、主記憶はもちろん、キャッシュに比べても、高速化
のためには、十分な容量のレジスタをもっていることが
必要不可欠である。それにもかかわらず、従来、レジス
タの数が比較的少なかったのは、ビット当たりのコスト
が高価であったことと、下記に示すように命令形式上の
レジスタ番号のフィ−ルドの長さに制限があったためで
ある。コストの問題はLSI化で解決されつつあるが、
後者はまだ未解決であった。
なわち、メモリ素子ではない)で構成され、読みだし/
書き込みのためのポ−ト(すなわち、デ−タの出入口)
を多く用意することができるので、いわゆる記憶装置が
1つの動作サイクルに1個のデ−タの読みだし/書き込
みしかできないのに比べ、極めて高速である。したがっ
て、主記憶はもちろん、キャッシュに比べても、高速化
のためには、十分な容量のレジスタをもっていることが
必要不可欠である。それにもかかわらず、従来、レジス
タの数が比較的少なかったのは、ビット当たりのコスト
が高価であったことと、下記に示すように命令形式上の
レジスタ番号のフィ−ルドの長さに制限があったためで
ある。コストの問題はLSI化で解決されつつあるが、
後者はまだ未解決であった。
【0029】プログラムでアドレス可能なレジスタの数
は、ア−キテクチャ上から制限されている。たとえば、
命令語中にレジスタ指定フィ−ルドが5ビットあれば、
アドレス可能なレジスタの数は32(2の5乗)であ
る。該レジスタ指定フィ−ルドのビット数を増せば、プ
ログラムでアドレス可能なレジスタの数は増えるが、命
令形式が変わるので、既存のプログラムの変更が必要と
なり、非現実的である。
は、ア−キテクチャ上から制限されている。たとえば、
命令語中にレジスタ指定フィ−ルドが5ビットあれば、
アドレス可能なレジスタの数は32(2の5乗)であ
る。該レジスタ指定フィ−ルドのビット数を増せば、プ
ログラムでアドレス可能なレジスタの数は増えるが、命
令形式が変わるので、既存のプログラムの変更が必要と
なり、非現実的である。
【0030】そこで、デ−タ処理装置のア−キテクチャ
を変えずに、命令によってアドレス可能なレジスタの数
より多いレジスタをデ−タ処理装置がアクセス可能とす
る方式が必要となるが、従来技術1では、過去にロ−ド
命令が実行された主記憶アドレスに対し、新たにロ−ド
命令が実行された場合は高速化される。しかし、式
(1)のようなベクトル計算は多くの場合、図6のプロ
グラムのように主記憶上のデ−タに対するロ−ド要求は
1度しか出ないので、従来技術では高速化されないとい
う問題がある。
を変えずに、命令によってアドレス可能なレジスタの数
より多いレジスタをデ−タ処理装置がアクセス可能とす
る方式が必要となるが、従来技術1では、過去にロ−ド
命令が実行された主記憶アドレスに対し、新たにロ−ド
命令が実行された場合は高速化される。しかし、式
(1)のようなベクトル計算は多くの場合、図6のプロ
グラムのように主記憶上のデ−タに対するロ−ド要求は
1度しか出ないので、従来技術では高速化されないとい
う問題がある。
【0031】また、従来技術2では、1つのプログラム
で使えるのはある1つのウインドウに属する物理レジス
タのみであり、その数はプログラムでアドレス可能なレ
ジスタの数に等しく、1つのプログラムで行なわれる演
算を高速化できない。すなわち、前記のウインドウの機
能は、プログラムの呼びと戻りが発生する場合のみ処理
の高速化がなされ、式(1)のベクトル計算のように1
つのプログラムで処理が完結しているような場合は高速
化されないという問題がある。また、前記のウインドウ
オ−バフロ−、ウインドウアンダフロ−の割込みは式
(1)のベクトル計算のように1つのプログラムで処理
が完結していて、プログラムの呼びと戻りが発生しない
場合は不要であるという問題がある。
で使えるのはある1つのウインドウに属する物理レジス
タのみであり、その数はプログラムでアドレス可能なレ
ジスタの数に等しく、1つのプログラムで行なわれる演
算を高速化できない。すなわち、前記のウインドウの機
能は、プログラムの呼びと戻りが発生する場合のみ処理
の高速化がなされ、式(1)のベクトル計算のように1
つのプログラムで処理が完結しているような場合は高速
化されないという問題がある。また、前記のウインドウ
オ−バフロ−、ウインドウアンダフロ−の割込みは式
(1)のベクトル計算のように1つのプログラムで処理
が完結していて、プログラムの呼びと戻りが発生しない
場合は不要であるという問題がある。
【0032】本発明の目的は、デ−タ処理装置のア−キ
テクチャを変えずに、命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とし、科学技術計算におけるベクトル計算を高速に
実行する方式を提供することにある。
テクチャを変えずに、命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とし、科学技術計算におけるベクトル計算を高速に
実行する方式を提供することにある。
【0033】
【課題を解決するための手段】上記目的を達成するため
に、命令の浮動小数点レジスタフィ−ルドによってアド
レス可能な浮動小数点レジスタの数より多い、物理浮動
小数点レジスタ番号で参照される物理浮動小数点レジス
タと呼ばれる浮動小数点レジスタ、ウインドウスタ−ト
ポインタと呼ばれる数を格納するウインドウスタ−トポ
インタレジスタ、ウインドウスタ−トポインタが有効で
あることを示すウインドウスタ−トポインタ有効レジス
タと呼ばれるレジスタ、該ウインドウスタ−トポインタ
有効レジスタが1のときに、ウインドウスタ−トポイン
タの値、または、ウインドウスタ−トポインタと特定命
令中に示されるウインドウストライドの値によって、論
理浮動小数点レジスタ番号と呼ばれる、命令中の浮動小
数点レジスタフィ−ルドに示された値を物理浮動小数点
レジスタ番号に変換する変換回路、命令中に浮動小数点
レジスタフィ−ルドとウインドウストライドフィ−ルド
を持ち、論理浮動小数点レジスタ番号をウインドウスタ
−トポインタとウインドウストライドから得られた値に
よって変換した物理浮動小数点レジスタに主記憶デ−タ
を格納する浮動小数点レジスタプリロ−ド命令、命令中
に浮動小数点レジスタフィ−ルドとウインドウストライ
ドフィ−ルドを持ち、論理浮動小数点レジスタ番号をウ
インドウスタ−トポインタとウインドウストライドから
得られた値によって変換した物理浮動小数点レジスタか
ら主記憶にデ−タを格納する浮動小数点レジスタポスト
ストア命令、ウインドウスタ−トポインタレジスタに値
をセットするウインドウスタ−トポインタセット命令を
設ける。
に、命令の浮動小数点レジスタフィ−ルドによってアド
レス可能な浮動小数点レジスタの数より多い、物理浮動
小数点レジスタ番号で参照される物理浮動小数点レジス
タと呼ばれる浮動小数点レジスタ、ウインドウスタ−ト
ポインタと呼ばれる数を格納するウインドウスタ−トポ
インタレジスタ、ウインドウスタ−トポインタが有効で
あることを示すウインドウスタ−トポインタ有効レジス
タと呼ばれるレジスタ、該ウインドウスタ−トポインタ
有効レジスタが1のときに、ウインドウスタ−トポイン
タの値、または、ウインドウスタ−トポインタと特定命
令中に示されるウインドウストライドの値によって、論
理浮動小数点レジスタ番号と呼ばれる、命令中の浮動小
数点レジスタフィ−ルドに示された値を物理浮動小数点
レジスタ番号に変換する変換回路、命令中に浮動小数点
レジスタフィ−ルドとウインドウストライドフィ−ルド
を持ち、論理浮動小数点レジスタ番号をウインドウスタ
−トポインタとウインドウストライドから得られた値に
よって変換した物理浮動小数点レジスタに主記憶デ−タ
を格納する浮動小数点レジスタプリロ−ド命令、命令中
に浮動小数点レジスタフィ−ルドとウインドウストライ
ドフィ−ルドを持ち、論理浮動小数点レジスタ番号をウ
インドウスタ−トポインタとウインドウストライドから
得られた値によって変換した物理浮動小数点レジスタか
ら主記憶にデ−タを格納する浮動小数点レジスタポスト
ストア命令、ウインドウスタ−トポインタレジスタに値
をセットするウインドウスタ−トポインタセット命令を
設ける。
【0034】
【作用】前記浮動小数点レジスタプリロ−ド命令、前記
浮動小数点レジスタポストストア命令以外の浮動小数点
レジスタを参照する命令は全て、命令中にウインドウス
トライドフィ−ルドを持たないので、ウインドウスタ−
トポインタ有効レジスタの値が1であれば、ウインドウ
ストライドの値を0とみなして、論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換が行われ、浮
動小数点レジスタの参照で物理浮動小数点レジスタ番号
が参照される。ウインドウスタ−トポインタ有効レジス
タの値が0であれば、論理浮動小数点レジスタ番号は物
理浮動小数点レジスタ番号に等しい。
浮動小数点レジスタポストストア命令以外の浮動小数点
レジスタを参照する命令は全て、命令中にウインドウス
トライドフィ−ルドを持たないので、ウインドウスタ−
トポインタ有効レジスタの値が1であれば、ウインドウ
ストライドの値を0とみなして、論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換が行われ、浮
動小数点レジスタの参照で物理浮動小数点レジスタ番号
が参照される。ウインドウスタ−トポインタ有効レジス
タの値が0であれば、論理浮動小数点レジスタ番号は物
理浮動小数点レジスタ番号に等しい。
【0035】前記浮動小数点レジスタプリロ−ド命令、
前記浮動小数点レジスタポストストア命令では、ウイン
ドウスタ−トポインタ有効レジスタの値が1であれば、
前記の通り、論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換が行われ、物理浮動小数点レジス
タが参照される。ウインドウスタ−トポインタ有効レジ
スタの値が0であれば、論理浮動小数点レジスタ番号は
参照される物理浮動小数点レジスタ番号に等しい。
前記浮動小数点レジスタポストストア命令では、ウイン
ドウスタ−トポインタ有効レジスタの値が1であれば、
前記の通り、論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換が行われ、物理浮動小数点レジス
タが参照される。ウインドウスタ−トポインタ有効レジ
スタの値が0であれば、論理浮動小数点レジスタ番号は
参照される物理浮動小数点レジスタ番号に等しい。
【0036】論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換は以下のようにして行われる。
論理浮動小数点レジスタ番号が物理浮動小数点レジスタ
番号のどの範囲を指定するかを、複数通り設け、この範
囲の指定をウインドウと呼び、ウインドウ番号をwと表
記することにする。ここで、レジスタ番号スライド量と
いう数を導入し、以後pという記号で表すことにする。
数点レジスタ番号変換は以下のようにして行われる。
論理浮動小数点レジスタ番号が物理浮動小数点レジスタ
番号のどの範囲を指定するかを、複数通り設け、この範
囲の指定をウインドウと呼び、ウインドウ番号を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とする。
に示す。本例では、論理浮動小数点レジスタは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以下の正の整数値)という記号であらわす。
sm=7である。物理浮動小数点レジスタのうち、論理
浮動小数点レジスタ番号−物理浮動小数点レジスタ番号
変換において、必ず同一のレジスタ番号に変換され、全
ウインドウが共通に使うレジスタをグロ−バルレジスタ
と呼び、グロ−バルレジスタの本数をmgという記号で
あらわすこととする。本例ではmg=8とする。 ここ
でウインドウスタ−トポインタレジスタのビット数をウ
インドウスタ−トポインタレジスタ幅と呼び、q(qは
sm以下の正の整数値)という記号であらわす。
【0040】ここで、ウインドウ番号wは、ウインドウ
スタ−トポインタの値をFWSTP,命令中のウインド
ウストライドの値をwstrとすると、以下のように表
わされる。
スタ−トポインタの値を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))はロ−カルレジスタ本数をウインド
ウ刻み幅で除した値で、ウインドウの総数をあらわし、
ウインドウ数と呼ぶ。
点レジスタの本数からグロ−バルレジスタの本数を減じ
た値で、ロ−カルレジスタ本数と呼び、各ウインドウを
用いるプログラムが、個々に参照する物理浮動小数点レ
ジスタの本数である。式(2)−(4)で2**(sm
−q)は、隣合うウインドウが、物理浮動小数点レジス
タ番号の上でいくつ離れているかを示し、ウインドウ刻
み幅と呼ぶ。式(2)−(4)で(mr−mg)/(2
**(sm−q))はロ−カルレジスタ本数をウインド
ウ刻み幅で除した値で、ウインドウの総数をあらわし、
ウインドウ数と呼ぶ。
【0042】レジスタ番号スライド量pは、以下のよう
に表わされる。
に表わされる。
【0043】 p=2**(sm−q) * w (5) すなわち、ウインドウ刻み幅にウインドウ番号を乗じた
値であり、各ウインドウのロ−カルレジスタ(=グロ−
バルレジスタ以外のレジスタ)の先頭が、ウインドウ0
のロ−カルレジスタの先頭から、物理浮動小数点レジス
タ番号の上でいくつ離れているかを示す。
値であり、各ウインドウのロ−カルレジスタ(=グロ−
バルレジスタ以外のレジスタ)の先頭が、ウインドウ0
のロ−カルレジスタの先頭から、物理浮動小数点レジス
タ番号の上でいくつ離れているかを示す。
【0044】例として、sm=7,q=5の場合を、図
1、図2に示す。ウインドウはw0からw29の30通
り設けられる。すなわち、ウインドウ数は30である。
1、図2に示す。ウインドウはw0からw29の30通
り設けられる。すなわち、ウインドウ数は30である。
【0045】ここで、wの算出はウインドウ数を法とし
て行なわれるので、たとえば、w=29では、w+1の
値は0になる。
て行なわれるので、たとえば、w=29では、w+1の
値は0になる。
【0046】ここで、論理浮動小数点レジスタ番号をr
と表記し、物理浮動小数点レジスタ番号はwとrから決
まるので、<w,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つ大きいウインドウの論理
浮動小数点レジスタには同一の物理浮動小数点レジスタ
を指すものがある。
スタと、ウインドウ番号が1つ大きいウインドウの論理
浮動小数点レジスタには同一の物理浮動小数点レジスタ
を指すものがある。
【0051】これらのレジスタは、オ−バラップレジス
タとして隣合うウインドウを用いる演算ル−プ間のデ−
タの受渡しに用いる。
タとして隣合うウインドウを用いる演算ル−プ間のデ−
タの受渡しに用いる。
【0052】3. ポインタ幅最大値smまたはウイン
ドウスタ−トポインタレジスタ幅qを変えることによっ
て、ウインドウ刻み幅を変えることができる。
ドウスタ−トポインタレジスタ幅qを変えることによっ
て、ウインドウ刻み幅を変えることができる。
【0053】sm=7のとき、q=6では2レジスタ刻
み、q=4では8レジスタ刻みになる。
み、q=4では8レジスタ刻みになる。
【0054】以後の説明ではsm=7,q=5に固定し
て述べる。
て述べる。
【0055】ここで、グロ−バルレジスタを設けない実
現法も考えられる。この場合は、式(2)−(4)のm
r−mgがmrで置き換えられ、式(6)、(7)がr
によらず、 <w,r>=p+r (8) となる。
現法も考えられる。この場合は、式(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の値で、論理浮動小数点レジスタ番号−物理浮
動小数点レジスタ番号変換が行われる。
令 (命令ニモニック)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の
値で、論理浮動小数点レジスタ番号−物理浮動小数点レ
ジスタ番号変換が行われる。
n,wstr (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。このとき、上記(3)、(5)によって求めたpの
値で、論理浮動小数点レジスタ番号−物理浮動小数点レ
ジスタ番号変換が行われる。
【0060】その後、汎用レジスタmの値をa加える。
【0061】また、一般の浮動小数点命令(すなわち、
浮動小数点レジスタを用いる命令で上記2,3を除く命
令)では、上記(4)、(5)によって求めたpの値
で、論理浮動小数点レジスタ番号−物理浮動小数点レジ
スタ番号変換が行われる。
浮動小数点レジスタを用いる命令で上記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の意味について説明する。
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のようなプログラムになる。
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が格納されて
いるものとする。
先だって、ベクトル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のプロ
ロ−グを形成している。
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)の主記憶位置に格納する。
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のカ−ネルを形
成している。
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ル−プ後には完了しており、
演算実行待ちによる性能低下はない。
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つも使う必要もない。
小数点レジスタは3つだけであり、図7のプログラムの
ように浮動小数点レジスタを9つも使う必要もない。
【0071】ここで、図8、図9のプログラムには、図
6のプログラムにはないウインドウスタ−トポインタの
更新の処理があってオ−バヘッドになっている。たとえ
ば、図6のプログラムのル−プが4命令で構成されてい
るのに対し、図8、図9のプログラムのル−プは5命令
で構成されている。しかし、図8、図9のプログラムの
ル−プの5命令中の3命令は同時実行できるうえ、図6
のプログラムにあるデ−タ読みだし待ちで後続命令の実
行が待たされるオ−バヘッドの方がはるかに大きい。ま
た、図7のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、ウインドウスタ−トポイ
ンタの更新のオ−バヘッドがあっても、本発明の方式の
ほうがすぐれていると考えられる。
6のプログラムにはないウインドウスタ−トポインタの
更新の処理があってオ−バヘッドになっている。たとえ
ば、図6のプログラムのル−プが4命令で構成されてい
るのに対し、図8、図9のプログラムのル−プは5命令
で構成されている。しかし、図8、図9のプログラムの
ル−プの5命令中の3命令は同時実行できるうえ、図6
のプログラムにあるデ−タ読みだし待ちで後続命令の実
行が待たされるオ−バヘッドの方がはるかに大きい。ま
た、図7のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、ウインドウスタ−トポイ
ンタの更新のオ−バヘッドがあっても、本発明の方式の
ほうがすぐれていると考えられる。
【0072】また、浮動小数点レジスタプリロ−ド命令
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められるので、デ−タ読み
だし時間、演算時間の変化に対し、柔軟に対応できる。
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められるので、デ−タ読み
だし時間、演算時間の変化に対し、柔軟に対応できる。
【0073】さらに、ウインドウポインタレジスタ幅を
変更することにより(通常、ポインタ幅最大値は固
定)、ウインドウ刻み幅、レジスタ番号スライド量を自
由に変更できることになり、柔軟なプログラミングがで
きる。
変更することにより(通常、ポインタ幅最大値は固
定)、ウインドウ刻み幅、レジスタ番号スライド量を自
由に変更できることになり、柔軟なプログラミングがで
きる。
【0074】
【実施例】以下、本発明の一実施例を図を用いて説明す
る。図4に本実施例のデ−タ処理装置を示す。デ−タ処
理装置は、命令の発行および実行を行なう命令処理ユニ
ット10、命令処理ユニットで実行する命令やデ−タを
記憶する主記憶30、命令処理ユニットと主記憶との間
のデ−タのやりとりを制御する記憶制御ユニット20か
ら構成される。
る。図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の値を加算する機能も持つ。
保持する命令レジスタ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はロ−ド命令、
ストア命令のアドレス加算を同時にできるものとする。
スタ101には複数命令(ここでは3命令)が格納さ
れ、命令制御部102は同時に複数命令(ここでは3命
令)が解読実行できるとする。また、主記憶アクセス制
御部109はロ−ド、ストアを同時実行できるものとす
る。そのために、アドレス加算器107はロ−ド命令、
ストア命令のアドレス加算を同時にできるものとする。
【0077】ここで、このデ−タ処理装置には、図5で
示すように、3つの命令が新たに追加される。それら
は、(a)ウィンドウスタ−トポインタセット命令、
(b)浮動小数点レジスタプリロ−ド命令、(c)浮動
小数点レジスタポストストア命令、である。
示すように、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になる。
スタ−トポインタセット命令であることを示すものであ
る。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>である。汎用レジスタの
値がデ−タが格納される主記憶のアドレスである。該読
みだし実行後、汎用レジスタに加える値がインクリメン
ト値である。
レジスタプリロ−ド命令であることを示すものである。
浮動小数点レジスタ番号は主記憶デ−タが格納される論
理浮動小数点レジスタ番号(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にセットされる。
る。まず、ウィンドウスタ−トポインタセット命令につ
いて説明する。命令レジスタ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で汎用レジスタの値にインクリメ
ント値を加える。
ついて説明する。命令レジスタ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で汎用レジスタの値にインクリメント値を加え
る。
について説明する。命令レジスタ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>で表わさ
れる物理浮動小数点レジスタ番号に変換され、該物理浮
動小数点レジスタ番号の示す物理浮動小数点レジスタが
参照される。
浮動小数点レジスタを用いる命令で、前記の浮動小数点
レジスタプリロ−ド命令、浮動小数点レジスタポストス
トア命令を除く命令)では、ウインドウスタ−トポイン
タ有効レジスタ111が「1」であると、命令中に示さ
れた論理浮動小数点レジスタ番号rは、変換論理112
で、ウィンドウスタ−トポインタレジスタ110の値を
FWSTPとして、レジスタ番号スライド量pを式
(4)、(5)にもとずいて計算し、該pの値を使っ
て、式(6)、(7)にもとずいて<w,r>で表わさ
れる物理浮動小数点レジスタ番号に変換され、該物理浮
動小数点レジスタ番号の示す物理浮動小数点レジスタが
参照される。
【0084】浮動小数点レジスタを参照する命令では全
て、ウインドウスタ−トポインタ有効レジスタ111が
「1」であると、変換回路112における論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
なわれ、「0」であると、論理浮動小数点レジスタ番号
−物理浮動小数点レジスタ番号変換は行なわれず、命令
で指定された論理浮動小数点レジスタ番号がそのまま物
理浮動小数点レジスタ番号になり、該物理浮動小数点レ
ジスタ番号の示す物理浮動小数点レジスタが参照され
る。
て、ウインドウスタ−トポインタ有効レジスタ111が
「1」であると、変換回路112における論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
なわれ、「0」であると、論理浮動小数点レジスタ番号
−物理浮動小数点レジスタ番号変換は行なわれず、命令
で指定された論理浮動小数点レジスタ番号がそのまま物
理浮動小数点レジスタ番号になり、該物理浮動小数点レ
ジスタ番号の示す物理浮動小数点レジスタが参照され
る。
【0085】ここで、ウィンドウスタ−トポインタ有効
レジスタ111には、デ−タ処理システムの制御情報を
格納する既存のレジスタの空きビットを割当てれば良
く、該レジスタに値を格納する既存の命令を用いて値を
セットするものとする。
レジスタ111には、デ−タ処理システムの制御情報を
格納する既存のレジスタの空きビットを割当てれば良
く、該レジスタに値を格納する既存の命令を用いて値を
セットするものとする。
【0086】以上のようにウィンドウスタ−トポインタ
セット命令、浮動小数点レジスタプリロ−ド命令、浮動
小数点レジスタポストストア命令とウィンドウスタ−ト
ポインタの制御下での一般の浮動小数点命令は動作す
る。
セット命令、浮動小数点レジスタプリロ−ド命令、浮動
小数点レジスタポストストア命令とウィンドウスタ−ト
ポインタの制御下での一般の浮動小数点命令は動作す
る。
【0087】上記の実施例により、図8、図9のような
プログラムが実現でき、ベクトル計算が高速化されるこ
とは、「作用」の欄に述べた。
プログラムが実現でき、ベクトル計算が高速化されるこ
とは、「作用」の欄に述べた。
【0088】したがって、本発明の方式によると、ウィ
ンドウスタ−トポインタと命令中のウインドウストライ
ドを変えることにより、命令中のある浮動小数点レジス
タ番号は異なる物理浮動小数点レジスタ番号に変換され
るので、命令によってアドレス可能なレジスタの数より
も多い物理レジスタをデ−タ処理装置のア−キテクチャ
を変えることなくアクセス可能にでき、図8、図9に示
すようなプログラムが実現でき、デ−タ読みだし、レジ
スタのぶつかりによって命令実行が待たされることによ
る性能低下を防ぐことができ、プログラムの高速な実行
が可能である。
ンドウスタ−トポインタと命令中のウインドウストライ
ドを変えることにより、命令中のある浮動小数点レジス
タ番号は異なる物理浮動小数点レジスタ番号に変換され
るので、命令によってアドレス可能なレジスタの数より
も多い物理レジスタをデ−タ処理装置のア−キテクチャ
を変えることなくアクセス可能にでき、図8、図9に示
すようなプログラムが実現でき、デ−タ読みだし、レジ
スタのぶつかりによって命令実行が待たされることによ
る性能低下を防ぐことができ、プログラムの高速な実行
が可能である。
【0089】特に、図8、図9のプログラムからもわか
る通り、命令列のル−プのくりかえしが主となる科学技
術計算のベクトル計算では、命令ごとに使うウインドウ
を変え、i番目の要素の処理を、第i−nkル−プにお
ける浮動小数点プリロ−ド命令によるオペランドベクト
ルの第i要素のロ−ド、第iル−プにおける演算、第i
+nmル−プにおける浮動小数点ポストストア命令によ
る結果格納用ベクトルの第i要素への演算結果のストア
を行うことによって(nk,nmはプログラムで指定で
きる整数)、1つのデ−タに対するロ−ド、演算、スト
アの処理の命令列上での距離が大きくなり、デ−タの読
みだし時間、演算実行時間の影響による性能低下を防ぐ
ことができる。
る通り、命令列のル−プのくりかえしが主となる科学技
術計算のベクトル計算では、命令ごとに使うウインドウ
を変え、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つのデ−タに対するロ−
ド、演算、ストアの処理の命令列上での距離が大きくな
り、デ−タの読みだし時間、演算実行時間の影響による
性能低下を防ぐことができ、高速化ができる。
なる科学技術計算のベクトル計算では、命令ごとに使う
ウインドウを変え、i番目の要素の処理を、第i−nk
ル−プにおける浮動小数点レジスタプリロ−ド命令によ
るオペランドベクトルの第i要素のロ−ド、第iル−プ
における演算、第i+nmル−プにおける浮動小数点ポ
ストストア命令による結果格納用ベクトルの第i要素へ
のストアによって行うことによって(nk,nmはプロ
グラムで指定できる整数)、1つのデ−タに対するロ−
ド、演算、ストアの処理の命令列上での距離が大きくな
り、デ−タの読みだし時間、演算実行時間の影響による
性能低下を防ぐことができ、高速化ができる。
【0094】また、浮動小数点レジスタプリロ−ド命令
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められることであり、デ−
タ読みだし時間、演算時間の変化に対し、柔軟に対応で
きる。
と浮動小数点レジスタポストストア命令で、命令中のウ
インドウストライドにより、デ−タをロ−ド/ストアす
るウインドウ番号を自由に決められることであり、デ−
タ読みだし時間、演算時間の変化に対し、柔軟に対応で
きる。
【0095】さらに、ウインドウポインタレジスタ幅を
変更することにより、ウインドウ刻み幅、レジスタ番号
スライド量を自由に変更できることになり、柔軟なプロ
グラミングができる。
変更することにより、ウインドウ刻み幅、レジスタ番号
スライド量を自由に変更できることになり、柔軟なプロ
グラミングができる。
【図1】 本発明による論理浮動小数点レジスタ番号−
物理浮動小数点レジスタ番号変換の一実施例。
物理浮動小数点レジスタ番号変換の一実施例。
【図2】 本発明による論理浮動小数点レジスタ番号−
物理浮動小数点レジスタ番号変換の一実施例。
物理浮動小数点レジスタ番号変換の一実施例。
【図3】 本発明で特に有効となるmodulo sc
hedulingの原理を示す図。
hedulingの原理を示す図。
【図4】 本発明による図5で示す命令を実行するデ−
タ処理装置の一実施例を示す構成図。
タ処理装置の一実施例を示す構成図。
【図5】 本発明によるウィンドウスタ−トポインタセ
ット命令、浮動小数点レジスタプリロ−ド命令、浮動小
数点レジスタポストストア命令の一実施例を示す図。
ット命令、浮動小数点レジスタプリロ−ド命令、浮動小
数点レジスタポストストア命令の一実施例を示す図。
【図6】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例。
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例。
【図7】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムをル−プアンロ
−リング手法を用いて書き直した例。
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムをル−プアンロ
−リング手法を用いて書き直した例。
【図8】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムを本発明による
命令を用いて書き直した例。
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムを本発明による
命令を用いて書き直した例。
【図9】 本発明で対象とする科学技術計算のベクトル
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図6のプログラムを本発明による
命令を用いて書き直した例。
計算の一例であるベクトルとスカラの乗算の汎用計算機
用プログラム例である図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)
- 【請求項1】命令やデ−タを保持する主記憶と、該主記
憶内に保持された主記憶デ−タを用いて命令を実行し、
その命令には、該主記憶から主記憶デ−タを読みだし、
命令中で番号づけされたレジスタに格納するロ−ド命
令、命令中で番号づけされたレジスタから該主記憶にデ
−タを格納するストア命令、演算を行い、演算結果を命
令中で番号づけされたレジスタに格納する演算命令を含
む命令処理ユニットから成るデ−タ処理装置において、
命令によってアドレス可能なレジスタの数より多い物理
レジスタと呼ばれるレジスタと、複数のビットから成る
ウインドウスタ−トポインタレジスタと呼ばれるレジス
タと、1ビットのウインドウスタ−トポインタ有効レジ
スタと呼ばれるレジスタと、該ウインドウスタ−トポイ
ンタ有効レジスタの値が1のときに、命令中のレジスタ
番号を物理レジスタ番号へ変換し、かつ前記ウインドウ
スタ−トポインタレジスタの値、または特定命令中に指
定される1または複数ビットのウインドウストライドと
呼ばれる値と前記ウインドウスタ−トポインタレジスタ
の値から得られた値によって該変換のパタ−ンを変える
変換回路とを有し、前記命令処理ユニットは、前記ウイ
ンドウスタ−トポインタレジスタの値をセットするため
のウインドウポインタセット命令、命令中にレジスタ番
号と前記ウインドウストライドを持ち、命令中のレジス
タ番号を、前記ウインドウスタ−トポインタレジスタの
値と前記ウインドウストライドの値から得られた値によ
って前記変換回路で物理レジスタ番号へ変換し、該物理
レジスタ番号の示す物理レジスタに主記憶デ−タを格納
するレジスタプリロ−ド命令、命令中にレジスタ番号と
前記ウインドウストライドを持ち、命令中のレジスタ番
号を、前記ウインドウスタ−トポインタレジスタの値と
前記ウインドウストライドの値から得られた値によって
前記変換回路で物理レジスタ番号へ変換し、該物理レジ
スタ番号の示す物理レジスタからデ−タを主記憶に格納
するレジスタポストストア命令を実行する手段を有し、
前記レジスタプリロ−ド命令、前記レジスタポストスト
ア命令を除く、前記ロ−ド命令、前記ストア命令、前記
演算命令では命令中のレジスタ番号を前記ウインドウス
タ−トポインタレジスタの値によって前記変換回路で物
理レジスタ番号へ変換し、該物理レジスタ番号の示す物
理レジスタを参照するように制御することを特徴とする
デ−タ処理装置。 - 【請求項2】前記命令中で番号づけされたレジスタと前
記物理レジスタが浮動小数点レジスタと呼ばれる、浮動
小数点数を格納する専用のレジスタであることを特徴と
する請求項1記載のデ−タ処理装置。 - 【請求項3】命令中のレジスタ番号から前記物理レジス
タ番号の変換において、命令中のレジスタ番号のうち、
1つまたは複数個は、前記ウインドウスタ−トポインタ
レジスタの値および命令中の前記ウインドウストライド
によらずグロ−バルレジスタ番号と呼ばれる同一の前記
物理レジスタ番号に変換されることを特徴とする請求項
1記載のデ−タ処理装置。 - 【請求項4】命令中のレジスタ番号から前記物理レジス
タ番号への変換において、前記物理レジスタの本数から
前記グロ−バルレジスタの本数を減じた値をロ−カルレ
ジスタ本数、前記ウインドウスタ−トポインタレジスタ
のビット数をウインドウスタ−トポインタレジスタ幅、
前記ウインドウスタ−トポインタレジスタ幅以上のある
整数値をポインタ幅最大値、前記ポインタ幅最大値から
前記ウインドウスタ−トポインタレジスタ幅を減じた値
を指数とする2のべき乗をウインドウ刻み幅、前記ロ−
カルレジスタ本数を前記ウインドウ刻み幅で除した値を
ウインドウ数と定義したとき、前記レジスタプリロ−ド
命令、前記レジスタポストストア命令、該2命令を除く
前記ロ−ド命令、前記ストア命令、前記演算命令で、命
令中のグロ−バルレジスタを示すレジスタ番号は同一番
号の物理レジスタ番号に変換され、命令中のグロ−バル
レジスタ以外を示すレジスタ番号は、前記レジスタプリ
ロ−ド命令では、前記ウインドウスタ−トポインタレジ
スタの値と命令中の前記ウインドウストライドの値を、
前記ウインドウ数を法として加えたウインドウ番号と呼
ばれる値に、前記ウインドウ刻み幅を乗じた、レジスタ
番号スライド量と呼ばれる値に、命令中のレジスタ番号
を加えた値であらわされる物理レジスタ番号に変換さ
れ、前記レジスタポストストア命令では、前記ウインド
ウスタ−トポインタレジスタの値から命令中の前記ウイ
ンドウストライドの値を、前記ウインドウ数を法として
減じたウインドウ番号と呼ばれる値に、前記ウインドウ
刻み幅を乗じた、レジスタ番号スライド量と呼ばれる値
に、命令中のレジスタ番号を加えた値であらわされる物
理レジスタ番号に変換され、前記レジスタプリロ−ド命
令、前記レジスタポストストア命令を除く、前記ロ−ド
命令、前記ストア命令、前記演算命令では、前記ウイン
ドウスタ−トポインタレジスタの値を、前記ウインドウ
数を法として、変換したウインドウ番号と呼ばれる値
に、前記ウインドウ刻み幅を乗じた、レジスタ番号スラ
イド量と呼ばれる値に、命令中のレジスタ番号を加えた
値であらわされる物理レジスタ番号に変換されることを
特徴とする請求項3記載のデ−タ処理装置。 - 【請求項5】命令中のレジスタ番号から前記物理レジス
タ番号への変換において、前記物理レジスタの本数を物
理レジスタ本数、前記ウインドウスタ−トポインタレジ
スタのビット数をウインドウスタ−トポインタレジスタ
幅、前記ウインドウスタ−トポインタレジスタ幅以上の
ある整数値をポインタ幅最大値、前記ポインタ幅最大値
から前記ウインドウスタ−トポインタレジスタ幅を減じ
た値を指数とする2のべき乗をウインドウ刻み幅、前記
物理レジスタ本数を前記ウインドウ刻み幅で除した値を
ウインドウ数と定義したとき、命令中のレジスタ番号
は、前記レジスタプリロ−ド命令では、前記ウインドウ
スタ−トポインタレジスタの値と命令中の前記ウインド
ウストライドの値を、前記ウインドウ数を法として加え
たウインドウ番号と呼ばれる値に、前記ウインドウ刻み
幅を乗じた、レジスタ番号スライド量と呼ばれる値に、
命令中のレジスタ番号を加えた値であらわされる物理レ
ジスタ番号に変換され、前記レジスタポストストア命令
では、前記ウインドウスタ−トポインタレジスタの値か
ら命令中の前記ウインドウストライドの値を、前記ウイ
ンドウ数を法として減じたウインドウ番号と呼ばれる値
に、前記ウインドウ刻み幅を乗じた、レジスタ番号スラ
イド量と呼ばれる値に、命令中のレジスタ番号を加えた
値であらわされる物理レジスタ番号に変換され、前記レ
ジスタプリロ−ド命令、前記レジスタポストストア命令
を除く、前記ロ−ド命令、前記ストア命令、前記演算命
令では、前記ウインドウスタ−トポインタレジスタの値
を、前記ウインドウ数を法として、変換したウインドウ
番号と呼ばれる値に、前記ウインドウ刻み幅を乗じた、
レジスタ番号スライド量と呼ばれる値に、命令中のレジ
スタ番号を加えた値であらわされる物理レジスタ番号に
変換されることを特徴とする請求項1記載のデ−タ処理
装置。 - 【請求項6】前記物理レジスタの本数がポインタ幅最大
値という値を指数とする2のべき乗であり、前記ウイン
ドウスタ−トポインタレジスタのビット数はポインタ幅
最大値以下であり、命令中のレジスタ番号から前記物理
レジスタ番号への変換において、前記物理レジスタの本
数から前記グロ−バルレジスタの本数を減じた値をロ−
カルレジスタ本数、前記ウインドウスタ−トポインタレ
ジスタのビット数をウインドウスタ−トポインタレジス
タ幅、前記ポインタ幅最大値から前記ウインドウスタ−
トポインタレジスタ幅を減じた値を指数とする2のべき
乗をウインドウ刻み幅、前記ロ−カルレジスタ本数を前
記ウインドウ刻み幅で除した値をウインドウ数と定義し
たとき、前記レジスタプリロ−ド命令、前記レジスタポ
ストストア命令、該2命令を除く前記ロ−ド命令、前記
ストア命令、前記演算命令で、命令中のグロ−バルレジ
スタを示すレジスタ番号は同一番号の物理レジスタ番号
に変換され、命令中のグロ−バルレジスタ以外を示すレ
ジスタ番号は、前記レジスタプリロ−ド命令では、前記
ウインドウスタ−トポインタレジスタの値と命令中の前
記ウインドウストライドの値を、前記ウインドウ数を法
として加えたウインドウ番号と呼ばれる値に、前記ウイ
ンドウ刻み幅を乗じた、レジスタ番号スライド量と呼ば
れる値に、命令中のレジスタ番号を加えた値であらわさ
れる物理レジスタ番号に変換され、前記レジスタポスト
ストア命令では、前記ウインドウスタ−トポインタレジ
スタの値から命令中の前記ウインドウストライドの値
を、前記ウインドウ数を法として減じたウインドウ番号
と呼ばれる値に、前記ウインドウ刻み幅を乗じた、レジ
スタ番号スライド量と呼ばれる値に、命令中のレジスタ
番号を加えた値であらわされる物理レジスタ番号に変換
され、前記レジスタプリロ−ド命令、前記レジスタポス
トストア命令を除く、前記ロ−ド命令、前記ストア命
令、前記演算命令では、前記ウインドウスタ−トポイン
タレジスタの値を、前記ウインドウ数を法として、変換
したウインドウ番号と呼ばれる値に、前記ウインドウ刻
み幅を乗じた、レジスタ番号スライド量と呼ばれる値
に、命令中のレジスタ番号を加えた値であらわされる物
理レジスタ番号に変換されることを特徴とする請求項3
記載のデ−タ処理装置。 - 【請求項7】前記物理レジスタの本数がポインタ幅最大
値という値を指数とする2のべき乗であり、前記ウイン
ドウスタ−トポインタレジスタのビット数はポインタ幅
最大値以下であり、命令中のレジスタ番号から前記物理
レジスタ番号への変換において、前記物理レジスタの本
数を物理レジスタ本数、前記ウインドウスタ−トポイン
タレジスタのビット数をウインドウスタ−トポインタレ
ジスタ幅、前記ポインタ幅最大値から前記ウインドウス
タ−トポインタレジスタ幅を減じた値を指数とする2の
べき乗をウインドウ刻み幅、前記物理レジスタ本数を前
記ウインドウ刻み幅で除した値をウインドウ数と定義し
たとき、命令中のレジスタ番号は、前記レジスタプリロ
−ド命令では、前記ウインドウスタ−トポインタレジス
タの値と命令中の前記ウインドウストライドの値を、前
記ウインドウ数を法として加えたウインドウ番号と呼ば
れる値に、前記ウインドウ刻み幅を乗じた、レジスタ番
号スライド量と呼ばれる値に、命令中のレジスタ番号を
加えた値であらわされる物理レジスタ番号に変換され、
前記レジスタポストストア命令では、前記ウインドウス
タ−トポインタレジスタの値から命令中の前記ウインド
ウストライドの値を、前記ウインドウ数を法として減じ
たウインドウ番号と呼ばれる値に、前記ウインドウ刻み
幅を乗じた、レジスタ番号スライド量と呼ばれる値に、
命令中のレジスタ番号を加えた値であらわされる物理レ
ジスタ番号に変換され、前記レジスタプリロ−ド命令、
前記レジスタポストストア命令を除く、前記ロ−ド命
令、前記ストア命令、前記演算命令では、前記ウインド
ウスタ−トポインタレジスタの値を、前記ウインドウ数
を法として、変換したウインドウ番号と呼ばれる値に、
前記ウインドウ刻み幅を乗じた、レジスタ番号スライド
量と呼ばれる値に、命令中のレジスタ番号を加えた値で
あらわされる物理レジスタ番号に変換されることを特徴
とする請求項1記載のデ−タ処理装置。 - 【請求項8】 前記ポインタ幅最大値または前記ウインド
ウスタ−トポインタレジスタ幅を可変にすることによっ
て、前記ウインドウ刻み幅を可変にすることを特徴とす
る請求項4記載のデ−タ処理装置。 - 【請求項9】 前記ポインタ幅最大値または前記ウインド
ウスタ−トポインタレジスタ幅を可変にすることによっ
て、前記ウインドウ刻み幅を可変にすることを特徴とす
る請求項5記載のデ−タ処理装置。 - 【請求項10】 前記ポインタ幅最大値または前記ウイン
ドウスタ−トポインタレジスタ幅を可変にすることによ
って、前記ウインドウ刻み幅を可変にすることを特徴と
する請求項6記載のデ−タ処理装置。 - 【請求項11】 前記ポインタ幅最大値または前記ウイン
ドウスタ−トポインタレジスタ幅を可変にすることによ
って、前記ウインドウ刻み幅を可変にすることを特徴と
する請求項7記載のデ−タ処理装置。
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)
| 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 |
| US8743142B1 (en) | 2004-05-14 | 2014-06-03 | Nvidia Corporation | Unified data fetch graphics processing system and method |
| US8736628B1 (en) | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Single thread graphics processing system and method |
| US8711155B2 (en) * | 2004-05-14 | 2014-04-29 | Nvidia Corporation | Early kill removal graphics processing system and method |
| US8736620B2 (en) * | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Kill bit graphics processing system and method |
| US8687010B1 (en) | 2004-05-14 | 2014-04-01 | Nvidia Corporation | Arbitrary size texture palettes for use in graphics systems |
| US8860722B2 (en) * | 2004-05-14 | 2014-10-14 | Nvidia Corporation | Early Z scoreboard tracking 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 |
| US8736624B1 (en) | 2007-08-15 | 2014-05-27 | Nvidia Corporation | Conditional execution flag in graphics applications |
| US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
| US8775777B2 (en) * | 2007-08-15 | 2014-07-08 | Nvidia Corporation | Techniques for sourcing immediate values from a VLIW |
| US8521800B1 (en) | 2007-08-15 | 2013-08-27 | Nvidia Corporation | Interconnected arithmetic logic units |
| US9183607B1 (en) | 2007-08-15 | 2015-11-10 | Nvidia Corporation | Scoreboard cache coherence in a graphics pipeline |
| US20090046105A1 (en) * | 2007-08-15 | 2009-02-19 | Bergland Tyson J | Conditional execute bit 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)
| 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 |
| DE3650602T2 (de) * | 1985-04-08 | 1997-06-12 | Hitachi Ltd | Datenverarbeitungssystem |
| 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 |
-
1992
- 1992-12-07 JP JP4326435A patent/JP2725546B2/ja not_active Expired - Lifetime
-
1993
- 1993-12-03 GB GB9324877A patent/GB2273186B/en not_active Expired - Fee Related
-
1996
- 1996-02-12 US US08/600,155 patent/US5581721A/en not_active Expired - Fee Related
Non-Patent Citations (1)
| Title |
|---|
| PROC.SUPERCOMPUTING’92 P.642−651 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2273186A (en) | 1994-06-08 |
| JPH06176053A (ja) | 1994-06-24 |
| GB2273186B (en) | 1996-11-20 |
| US5581721A (en) | 1996-12-03 |
| GB9324877D0 (en) | 1994-01-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2725546B2 (ja) | デ−タ処理装置 | |
| 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 | |
| JP2531495B2 (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 | |
| EP1160663A2 (en) | Loop cache memory and cache controller for pipelined microprocessors | |
| EP0543366B1 (en) | Data processing method and apparatus | |
| EP0394624B1 (en) | Multiple sequence processor system | |
| JPH0588888A (ja) | アドレス生成機構及びデータの事前取り出し方法 | |
| EP4152146A1 (en) | Data processing method and device, and storage medium | |
| KR20020022056A (ko) | 소프트웨어 데이터 프리펫치의 오버헤드 감소 방법 | |
| EP0655679B1 (en) | Method and apparatus for controlling instruction in pipeline processor | |
| JPH07104784B2 (ja) | デジタルデータ処理装置 | |
| US20050102659A1 (en) | Methods and apparatus for setting up hardware loops in a deeply pipelined processor | |
| US5729723A (en) | Data processing unit | |
| JPH0820951B2 (ja) | プロセッサの動作速度を速める方法 | |
| JP3732234B2 (ja) | スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 | |
| US5197131A (en) | Instruction buffer system for switching execution of current instruction to a branch or to a return from subroutine | |
| JP3317985B2 (ja) | 擬似ベクトルプロセッサ | |
| JP3097981B2 (ja) | データ処理装置 | |
| US6115805A (en) | Non-aligned double word fetch buffer |