JP2806093B2 - ロード・ストア処理装置 - Google Patents

ロード・ストア処理装置

Info

Publication number
JP2806093B2
JP2806093B2 JP22056991A JP22056991A JP2806093B2 JP 2806093 B2 JP2806093 B2 JP 2806093B2 JP 22056991 A JP22056991 A JP 22056991A JP 22056991 A JP22056991 A JP 22056991A JP 2806093 B2 JP2806093 B2 JP 2806093B2
Authority
JP
Japan
Prior art keywords
data
instruction
address
register
program
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
JP22056991A
Other languages
English (en)
Other versions
JPH0561672A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP22056991A priority Critical patent/JP2806093B2/ja
Publication of JPH0561672A publication Critical patent/JPH0561672A/ja
Application granted granted Critical
Publication of JP2806093B2 publication Critical patent/JP2806093B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、演算処理装置における
ロード・ストア処理装置に利用され、特に、スーパース
ケーラ方式、VLIW(Very Long Inst
ruction Word)方式、およびスーパーパイ
プライン方式の演算処理装置で使用される並列化実行に
用いるロード・ストア処理装置に関する。
【0002】
【従来の技術】コンパイラがプログラムの動作を解析
し、その処理の依存関係を調べ、通常のアプリケーショ
ンからできるだけ並列性を引き出せるコンパイラ技術と
して、自動ベクトル化(対話型も含む)コンパイラやト
レーススケジューリングの技術がある。ベクトル化はベ
クトルプロセッサに対して有効な命令コードを発生させ
るために考え出された技術である。ベクトルプロセッサ
にかけられるプログラムは以下のようなものである。こ
れは、浮動小数点ベンチマークテストのもっとも一般的
な「リバモア・フォートランカーネル」からの抜粋であ
る。
【0003】 1 CDIR$VECTOR 2 DO 1k=1,n 3 1X(k)=Q+Y(k)*(R*ZX(k+10)+T*ZX(k+1 1)) 一行目にある「CDIR$VECTOR」はコンパイラ
・ディレクティブと呼ばれ、以下の部分のループは、ベ
クトル化が可能であることを示す。これは、データの依
存関係もなく、データの依存関係を無視して並列化を行
っていいことを示す。
【0004】また、コンパイラ・ディレクティブがない
場合でも、ループ内での評価を行って式で使われている
データの依存関係を調べ、つまり、X(k)が更新され
ても演算の右辺の値と関係がないことが確認された時点
で最適化(ベクトル化)を行う。
【0005】これらはソースレベルでのデータの依存関
係の解析を行い依存関係がないことを検出するか、また
は依存関係がないものとみなして並列化を行う。逆に依
存関係が一部分だけでもある場合は、ベクトル化はルー
プ全体に対して行われるためにベクトル化ができないこ
とになる。
【0006】次に、コンパイラの最適化技術について述
べる。最適化は局所的な最適化、および、大域的な最適
化に分類される。ここでは簡単のために局所的な最適化
を例にして説明する。局所的な最適化は一つの基本ブロ
ックに対応して行われる最適化である。基本ブロックと
は始めの命令以外のところへ分岐してくることはなく、
終わりの命令以外から飛びこしていくことのない一連の
命令のことをいう。
【0007】この基本ブロックの最適化のアルゴリズム
として閉路のない有効グラフ(Direct acyc
lic graph:DAG)を用いる方法がある(詳
しくは後記の参考文献を参照)。この方法を用いて最適
化を行うと以下のようになる。この例は、共通部分式の
抽出であり、A〔I〕が対象となっている。ただし、I
=JでしかもY≠A〔I〕の場合にはこの最適化は結果
に影響が現れる。
【0008】 これを避けるために、結局A〔I〕の値を変えるような
最適化は行ってはいけない。一般的な最適化では、その
最適化で弊害が起こる場合、または弊害が起こるかどう
か予測不可な場合はその最適化を禁止するのが普通であ
る。このように配列およびポインタは最適化の妨げとな
る場合が多い。しかし、逆にベクトル化(並列化)しや
すいのも並列演算である。
【0009】VLIWやスーパースケーラのための最適
化(トレーススケジューリング)を進めると、配列演算
はさらに問題となる。この最もよい例がVLIWでのソ
フトウエアパイプライン最適化で発生する。
【0010】ソフトウエアパイプライン最適化は、ルー
プのアンロール(転開)技法の一種である。スーパース
ケーラや、VLIWで高速なベクトル処理を行う手法で
ある。まずアンロールとは、ループを以下に示すように
展開し、 1 DO 1I=0,99 2 X(k+0)=Q+Y(k+0)*(R*ZX(k+10)+T*ZX( k+11)) 3 X(k+1)=Q+Y(k+1)*(R*ZX(k+11)+T*ZX( k+12)) 4 X(k+2)=Q+Y(k+2)*(R*ZX(k+12)+T*ZX( k+13)) 5 1 X(k+3)=Q+Y(k+3)*(R*ZX(k+13)+T*Z X(k+14)) さらに最適化翻訳を行い、並列実行またはベクトル化を
行い高速化をはかることである。
【0011】次に、スーパースケーラの手法について説
明する。スーパースケーラによる並列化にはいくつかの
手法がある。一つはレジスタのスコアボーディングであ
り、もう一つはトマスローのアルゴリズムと呼ばれてい
るものである。どちらも直列に並んだ命令を順々に受け
つけ、かつ並列実行をさせる手法である。前記スコアボ
ーディング法は、「CDC6600」に初めて採用され
た方法である。複数の演算ユニットの並列実行のため、
レジスタに演算の状態を示す状態表示板をつけ、演算中
のレジスタの値を使用することを避けるようになってい
る。つまり、前の演算結果を次の演算が使う場合は前の
演算が終わるまで、次の演算をインターロックする機構
として、レジスタに表示板をつけるやり方である(後記
の文献〔5〕参照)。
【0012】トマスローのアルゴリズムは、IBMの3
60/91型の演算処理装置に始めて導入された手法
で、現在もスーパースケーラに使用されている方法であ
る。前記スコアボーディング法より一歩進んだ命令の追
い越し実行を行う。IBM360/91では、浮動小数
点演算器にこの手法が使われている。この型の計算機の
基本的な構造は、「リザベーション・ステーション」と
呼ばれる予約された演算が貯められている装置である。
受け付けられた命令は、直ちにレジスタからの読み出し
が行われる。ただし、このレジスタの値が、演算の結果
待ちである場合は、その演算結果に与えられている固有
のタグが読み出される。また演算の結果となるレジスタ
は、固有なタグが与えられ、この値が書き込まれる。読
み出されたレジスタは、命令と共にリザベーション・ス
テーションに書き込まれる。リザベーション・ステーシ
ョンの中でレジスタの値がすべて確定しているものから
順々に演算が行われる。結果は、タグと共に共通データ
バスに乗せられ、レジスタに書き戻される。同時にリザ
ベーション・ステーションで、同一のタグを持つデータ
が読み出され、結果待ちであったデータが書き込まれ
る。
【0013】以下、具体的例により説明する。
【0014】コンパイラが命令コードの並べ変えを含む
最適化を行う場合、基本的には任意のレジスタのメモリ
へのストアより前に、同じアドレスのメモリからのロー
ド命令を持っていくことは許されない。
【0015】コンパイラが以下のようなプログラムを最
適化する場合に、5行目で、式の右辺と左辺で
X(..)が使用されているため、この式では左辺の値
が右辺の値を更新する場合がある。このため、ベクトル
化またはソフトウエアパイプラインによる並列化が困難
となる。
【0016】 1 DO 444 L=1,LOOP 2 DO 444 K=7,1001,m 3 IW=K−6 4 DO 4J=5,n,5 5 X(K−1)=X(K−1)−X(IW)* Y(J) 6 4 IW=IW+1 7 444 X(K−1)=Y(5) *X(K−1) つまり、前記のプログラムを効果的に最適化するために
は、ループ内の5、6行目の式をアンロールまたはベク
トル化することが必要である。
【0017】このため、ループ内を以下のように変換す
る。なおここでは、ループの一部分を示す。アンロール
は4回行う。さらに最適化のシーケンスとして、以上の
式を分解し、並列実行できるように書き直す。
【0018】 3 DO 4 J=5,n,10 4 X(K−1)=X(K−1)−X(IW)* Y(J) 4 X(K)=X(K)−X(IW+1)* Y(J+5) 5 4 IW=IW+2 まず、通常のループ内のコンパイル状態を示す。三つの
値をロードし、演算を行い結果を書き戻す。並列動作で
きる資源が無限個あった場合はこのループは、依存関係
のために4段階で回ることができる。このままでは、こ
れ以上の高速が不可能である。
【0019】 LoadX(K−1) LoadX(IW) LoadY(J) tmp1=X(IW)* Y(J) tmp5=X(K−1)tmp1 STORE tmp5,X(K−1) さらに、高速化を図る方法としてアンロールが必要にな
る。次に、以下は2回アンロールした場合の例をコンパ
イルした場合である。上の例では2回のループで実行し
ていたことを、1回のループで実行することができる。
同様に無限の資源があった場合には、4クロックで回る
ことができる。以下の例がそうである。実際は資源が高
速化することは難しい。しかし、前記の場合に比べて、
かなりの改善がみられる。この場合は、さらに、同時に
実行できるものはまとめてある。つまり、2クロックで
1回のループを回れるわけである。
【0020】一般的には、これが正しい場合もあるが、
この例を含めて、データの依存関係がある場合には、こ
のような最適化が、正しくない結果を導くこともある。
この例では、K−1とIW+1が等しい値であれば、そ
の結果が上のループと違うものになる。
【0021】 LoadX(K−1) LoadX(IW) LoadY(J) LoadX(K) LoadX(IW+1) LoadY(J+1) tmp1=X(IW)* Y(J) tmp2=X(IW+1)* Y(J+1) tmp5=X(K−1)−tmp1 tmp6=X(K)−tmp2 STORE tmp5,X(K−1) STORE tmp6,X(K) 前のループのストア命令で変更されているはずのデータ
をそれより前に読み出しを行ってしまっているために、
間違ったデータを読み込んでしまっているわけである。
つまり、このようにアンロールを行うことで、正しくな
い結果を導いてしまうこともある。
【0022】上の例では、ループ内では滅多に起こらな
い。ループ内では僅か1回起こるだけであるが、このた
めに、このようなアンロールを使う最適化はすることが
できない。
【0023】従来の技術では、レジスタ資源の管理によ
る命令の追い越しまでは、行うことができるが、メモリ
上のデータに対する依存関係まで含めたプログラムの正
当性に関しては、まったく考慮されていなかった。
【0024】〔参考文献〕 〔1〕コンパイラA.V.Aho,J.D.Ullma
n著/土居範久訳 培風館 〔2〕Compilers principles,t
echniques,and tools A.V.A
ho,J.D.Ullman,Sethi(Addis
on Wesley) 〔3〕Bulldog:A Compiler for
VLIW Architectures John
R.Ellis(The MIT Press) 〔4〕Software Pipelining:An
EffectiveScheduling Tecn
ique for VLIW Machines Mo
nica Lam(SIGPLAN’88 P318−
328) 〔5〕Computer Architecture
A Auantitative Approac
ohn L.Hennessy,David A.Pa
tterson(MORGAN KAUFMANN)
【0025】
【発明が解決しようとする課題】以上説明したように、
コンパイラが命令コードの並べ変えを含む最適化を行う
場合に、レジスタへのロード命令を、それより以前に発
生したストア命令より前方に並べ変えることは基本的に
禁止されている。それは、レジスタがアドレスを持って
いないため、後に発生するロード命令がその前のストア
命令の更新したメモリの内容を読み込む命令でない保証
がないからである。
【0026】このため、プログラム中で発生したロード
・ストアの順序は、ある特殊な場合を除いて守らなけれ
ばならない。しかし、一般的には、前方でストアしたデ
ータをロードする場合は非常に少なく(あくまで統計的
であるが)この制限は最適化の大きな妨げになる。大規
模な行列演算などでは、ループの展開、ソフトウエアパ
イプライニングが行われるが、一部分のデータが、前記
条件にあてはまる場合は、すべてが前記条件を満足する
ような形で最適化されている。
【0027】本発明の目的は、この、一部の依存関係の
ために、プログラムの最適化ができないことをなくし、
より高速な演算のための正しい最適化を可能にするロー
ド・ストア処理装置を提供することにある。
【0028】
【課題を解決するための手段】本発明は、ループ展開前
のプログラムの実行順において、先のストア命令でデー
タをストアする記憶域のアドレスを記憶する記憶手段
と、後のロード命令でデータをロードするデータの記憶
域のアドレスと前記記憶手段に記憶した前記アドレス
を比較する比較手段と、前記プログラムのループ展開後
プログラム処理を実行して前記比較手段で比較一致
果が得られた場合に、前記ループ展開後のプログラムに
代えて前記ループ展開前のプログラムに戻す例外処理手
段とを備えることを特徴とする。
【0029】また、本発明は、前記例外処理手段は、
記機能に代えて前記ロード命令でロードするデータの記
憶域にデータをストアして前記記憶域のデータが有効に
なるまで、前記記憶域のデータを用いるデータ依存関係
のある命令の実行を中断する中断処理手段であることが
できる。
【0030】
【作用】仮想ストア命令により、特定の実効アドレスを
発生し、命令記憶手段のアドレス領域に登録しておき、
例外処理手段により登録された実効アドレスと同じ実効
アドレスに対応するロード命令に対しては、割り込みま
たはインタロッキングなどの例外処理を発生させ、削除
手段により登録された実効アドレスへのストア命令が発
生した場合には登録された実効アドレスの登録を削除す
る。
【0031】従って、別名を持った変数を検出すること
ができ、変数の依存関係のあるループの最適化が可能と
なる。
【0032】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0033】図1は本発明の一実施例の要部を示すブロ
ック構成図、および図2は本発明を適用する演算処理装
置の一例の要部を示すブロック構成図である。
【0034】図1によると、本実施例は、ロード命令1
01およびストア命令106を記憶し出力する命令記憶
手段としてのレジスタ107と、デコーダ112とを備
えたロード・ストア処理装置において、本発明の特徴と
するところの、レジスタ107は、特定の実効アドレス
(disp(Regnum))105およびレジスタ番
号(Regnum)104を生成し、レジスタ107に
登録する仮想ストア命令103を有し、この仮想ストア
命令103による実効アドレス105を登録するアドレ
ス領域(アドレス)109と、このアドレス領域に実効
アドレス105が登録されたことを示すフラグ111
と、データ領域110と、この登録された実効アドレス
105と同一のアドレスに対応するロード命令101に
対して例外処理を起こす例外処理信号108を出力する
例外処理手段、および登録された実効アドレス105へ
のストア命令106により当該実効アドレスの登録を削
除する削除手段としての、比較器116およびアンド回
路117を含んでいる。
【0035】なお、レジスタ107は、32ビットのレ
ジスタで、各ビットのレジスタごとに、アドレス領域1
09、データ領域110、フラグ111、比較器116
およびアンド回路117を含んでいる。
【0036】また、図1において、113は、ポートA
アドレス、114はポートBアドレス、115は書き込
みアドレス、118は読み出し用のポートA、および1
19は読み出し用のポートBである。
【0037】図2において、本発明が適用される演算処
理装置は、読み出し2ポート(ポートA、B)書き込み
1ポートのレジスタ201、ロード・ストアユニット2
02、演算器203、イミディエイトユニット204、
命令フェッチユニット205および外部インタフェース
225を含み、Tバス207、Sバス208、命令バス
209、R1バス226、R2バス230、ならびにパ
ス210〜224、227および228により接続され
る。
【0038】次に、この演算処理装置の構成の詳細とそ
の動作を説明する。
【0039】命令フェッチユニット205は、現在のレ
ジスタ(プログラムカウンタ)201の値の図外のメモ
リから、外部インタフェース命令を取り込み命令バス2
09に出力する。分岐などの場合は、新しいレジスタ2
01の値を演算器203から取り込む。
【0040】レジスタ201は、同時に二つのレジスタ
の読み出し、一つのレジスタの書き込みをすることがで
きる。レジスタ201の入出力ポートは、パス219お
よび220を介してそれぞれSバス208およびTバス
206に接続される。
【0041】演算器203は論理演算および算術演算を
行うことができ、演算命令の実行およびアドレス計算を
行う。
【0042】イミディエイトユニット204は、命令コ
ードの中からイミディエイト値を抽出し、符合拡張また
は0−拡張し演算器203に対して、その値を供給す
る。
【0043】ロード・ストアユニット202は、演算器
203で計算されたアドレスからデータをロード、また
はストアする。また、外部インタフェース225を含
む。
【0044】また、各ユニットが継るバスはそれぞれ以
下のデータが乗せられる。
【0045】Sバス208:オペランドの一方の値が乗
る。すなわち、レジスタ201のポートBがパス219
を介して継り、パス214を介して演算器203に入力
される。
【0046】Tバス206、207:それぞれオペラン
ドのもう一方の値およびイミディエイト値が乗せられ
る。すなわち、レジスタ201のポートAがパス220
を介して継り、イミディエイトユニット204の出力が
パス212を介して継り、セレクタ229およびパス2
15を介して演算器203に入力される。
【0047】R1バス226、R2バス230:演算結
果がる。
【0048】典型的な命令のフォーマットを以下に述べ
る。
【0049】
【数1】 以下、上で用いた略語の意味を述べる。
【0050】op 演算命令。例えば「ADD」、「A
ND」など。
【0051】load ロード命令。メモリからレジス
タへのデータ転送 store ストア命令。レジスタからメモリへのデー
タ転送 b.cond 条件分岐。「cond」に条件がはい
る。
【0052】disp ディスプレースメント。
【0053】r1、r2、r3 レジスタ名。レジスタ
番号を示す。
【0054】#num イミディエイト値 memory..メモリの値 pstore 仮想ストア命令 次に、各ユニットの継りと動作を述べる。レジスタ−レ
ジスタ演算命令は、レジスタ201から二つの値を読み
出し、Tバス206およびSバス208を通じて演算器
203に渡す。二つの値を受け取った演算器203は、
命令に従って演算し結果を演算結果用のR1バス22
6、およびR2バス230に出力する。R1バス226
の値をレジスタ201は取り込む。
【0055】レジスタ−イミディエイト演算命令は、前
記の演算とほぼ同じである。異なるのは、演算の一方の
ソースが、イミディエイトユニット204から供給され
ることである。
【0056】ロード命令は、レジスタ201からの値
と、イミディエイトユニット204の値の和を実効アド
レスとする。この演算は演算器203で実行される。レ
ジスタ201のポートBに接続するSバス208の値と
イミディエイトユニット204からのTバス207の値
が演算器203の入力値であり、アドレスとなる。ま
た、ロード時は、外部から読み込まれた値が結果用のR
1バス226に乗せられ、レジスタ201の書き込みポ
ートから書き込まれる。読み出し時は、レジスタ201
のポートAから読み出された値が外部に出力される。
【0057】分岐命令は、分岐先アドレスの計算が演算
器203で行われる。プログラムカウンタおよび分岐オ
フセットがそれぞれSバス208およびTバス207に
乗せられる。分岐先アドレスは、命令フェッチユニット
205に送られる。
【0058】次に、図1の実施例の動作について、図3
に示す流れ図を参照して説明する。なお、図1はレジス
タにメモリ番地を予約する機構をつけた場合を示す。
【0059】仮想ストア命令103の動作は三つの部分
で構成される。第一の部分は、仮想ストア命令103が
実行された場合の動作である。仮想ストア命令103が
実行された場合、その実効アドレス105がレジスタ1
07の、アドレス領域109に入れられフラグ111が
立てられる(ステップS1)。
【0060】第二の部分は、ロード命令101が発生し
た場合である。この場合は、あるアドレスからのロード
命令101が発生した場合、この実効アドレス102
と、レジスタ107の内部のアドレス領域109で同じ
ものがあるかを調べる(ステップS2)。これは図1の
比較器116で比較される。この場合は32本のレジス
タ107に同様な装置が含まれており、いずれかのレジ
スタ107に同じアドレスがない場合は通常のロードシ
ーケンスとして処理される(ステップS5)。同じアド
レスのエントリで、かつフラグが1の場合は(ステップ
S3)、このロードは間違った値を、ロードしようとし
ていことになるため、例外処理を発生させることにな
る(ステップS4)。この場合は例外処理信号108の
いずれかが「1」になるため、これによって、割り込み
を掛ける。
【0061】第三の部分は、ストア命令が発生した場合
で、あるレジスタ107のストア命令106が発生した
場合は、フラグ111をクリアし、そのレジスタ107
がストアされるアドレスを無効化する(ステップS
6)。
【0062】以上が、最も簡単な場合の仮想ストア命令
103のインプリメントである。
【0063】仮想ストア命令103は以下の形式を持
ち、従来のストア命令と全く変わらない。
【0064】pst reg num,offset
(reg num2)割り込みが発生した場合は、ルー
プのアドレスによって別の手段により正確に実行する。
例えば、アンロールされたループの場合は、アンロール
されていないループで実行をすればよい。
【0065】次に、本実施例により、従来の技術で述べ
た具体例を処理すると以下のようになる。
【0066】 LoadX(K−1) LoadX(IW) LoadY(J) PSTX( K−1) LoadX(K) LoadX(IW+1) LoadY(J+1) PST X(K) tmp1=X(IW)* Y(J) tmp2=X(IW+1)* Y(J+1) tmp5=X(K−1)−tmp1 tmp6=X(K)−tmp2 STORE tmp5,X(K−1) STORE tmp6,X(K) 以上が本実施例により、仮想ストア命令103を用いた
場合のアンロールされたプログラムで、K−1とIW+
1が等しい場合には、2ブロック目で割り込みが発生す
る。この場合はアンロールしない形のループにおき変え
て実行すれば始めの場合と答えは同じである。これによ
って、ループを5段階で回ることができるようになる。
【0067】次に、この仮想ストア命令103をトマス
ローのアルゴリズムに適応した場合を示す。トマスロー
のアルゴリズムはIBMの360/91に採り入れられ
ている。ハードウエアによる動的な命令の追い越しの機
構である。詳しくは、従来の技術で動作を説明した。
【0068】ここでは、トマスローのアルゴリズムを用
いた計算機での仮想ストア命令の処理に必要である機構
について述べる。
【0069】トマスローのアルゴリズムは、ダイナミッ
クスケジューリングと呼ばれるもので、動的に命令の依
存関係を検出し、依存関係のとけたものから実行を開始
するものである。
【0070】文献〔Compter Archite
cture A Quantitative Appr
oach,John L Hennessy,Davi
dA Patterson〕の6.7章に述べられてい
る機構に、さらに、図1の機構を付け加えることで実現
することが可能である。
【0071】トマスローのアルゴリズムは、あらかじめ
命令の追い越しを考慮に入れているため装置の変更は少
なくてすみ効果的である。
【0072】
【発明の効果】以上説明したように、本発明は、ソフト
ウエアでは従来検出するのが困難なため、最適化が不可
能であった部分の最適化(アンロール)を行うことがで
きる効果がある。たとえば、リバモアベンチマークで
は、2,4番が依存関係を無視するコンパイラディレク
ティブを入れなくても最適化が可能である。また、従来
は4ステップ/ループであったものが、依存関係がある
ループでもアンロールが可能であるため、1クロック/
ループ近くまで下げられることになる。
【図面の簡単な説明】
【図1】本発明の一実施例の要部を示すブロック構成
図。
【図2】本発明が適用される演算処理手段の一例を示す
ブロック構成図。
【図3】図1の主要動作を示す流れ図。
【符号の説明】
101 ロード命令 102 (ロード命令の)実効アドレス 103 仮想ストア命令 104 レジスタ番号 105 (仮想ストア命令の)実効アドレス 106 ストア命令 107、201 レジスタ 108 例外処理信号 109 アドレス領域 110 データ領域 111 フラグ 112 デコーダ 113 ポートAアドレス 114 ポートBアドレス 115 書き込みアドレス 116 比較器 117 アンド回路 202 ロード・ストアユニット 203 演算器 204 イミディエイトユニット 205 命令フェッチユニット 206、207 Tバス 208 Sバス 209 命令バス 210〜224、227、228 パス 225 外部インタフェース 226 R1バス 229 セレクタ 230 R2バス S1〜S6 ステップ

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 ループ展開前のプログラムの実行順にお
    いて、先のストア命令でデータをストアする記憶域のア
    ドレスを記憶する記憶手段と、 後のロード命令でデータをロードするデータの記憶域の
    アドレスと前記記憶手段に記憶した前記アドレスとを比
    較する比較手段と、前記プログラムの ループ展開後にプログラム処理を実行
    して前記比較手段で比較一致結果が得られた場合に、前
    記ループ展開後のプログラムに代えて前記ループ展開前
    のプログラムに戻す例外処理手段とを備えることを特徴
    とするロード・ストア処理装置。
  2. 【請求項2】 ループ展開前のプログラムの実行順にお
    いて、先のストア命令でデータをストアする記憶域のア
    ドレスを記憶する記憶手段と、 後のロード命令でデータをロードするデータの記憶域の
    アドレスと前記記憶手段に記憶した前記アドレスとを比
    較する比較手段と、 前記プログラムのループ展開後にプログラム処理を実行
    して前記比較手段で比較一致結果が得られた場合に、
    記ロード命令でロードするデータの記憶域にデータをス
    トアして当該記憶域のデータが有効になるまで、当該
    憶域のデータを用いるデータ依存関係のある命令の実行
    を中断する例外処理手段 を備えることを特徴とする
    ード・ストア処理装置。
JP22056991A 1991-08-30 1991-08-30 ロード・ストア処理装置 Expired - Lifetime JP2806093B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22056991A JP2806093B2 (ja) 1991-08-30 1991-08-30 ロード・ストア処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22056991A JP2806093B2 (ja) 1991-08-30 1991-08-30 ロード・ストア処理装置

Publications (2)

Publication Number Publication Date
JPH0561672A JPH0561672A (ja) 1993-03-12
JP2806093B2 true JP2806093B2 (ja) 1998-09-30

Family

ID=16753048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22056991A Expired - Lifetime JP2806093B2 (ja) 1991-08-30 1991-08-30 ロード・ストア処理装置

Country Status (1)

Country Link
JP (1) JP2806093B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200512A (ja) * 1993-09-13 1995-08-04 Ezel Inc 最適化問題解決装置

Also Published As

Publication number Publication date
JPH0561672A (ja) 1993-03-12

Similar Documents

Publication Publication Date Title
US11340908B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US5421022A (en) Apparatus and method for speculatively executing instructions in a computer system
US5428807A (en) Method and apparatus for propagating exception conditions of a computer system
US7458069B2 (en) System and method for fusing instructions
US5420990A (en) Mechanism for enforcing the correct order of instruction execution
US7730463B2 (en) Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support
US7979637B2 (en) Processor and method for executing data transfer process
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
JPH11212788A (ja) プロセッサのデータ供給装置
US5812809A (en) Data processing system capable of execution of plural instructions in parallel
EP0742517B1 (en) A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
US6871343B1 (en) Central processing apparatus and a compile method
EP0742518B1 (en) Compiler and processor for processing loops at high speed
JPH07104784B2 (ja) デジタルデータ処理装置
JP2009230338A (ja) プロセサおよび情報処理装置
US6704861B1 (en) Mechanism for executing computer instructions in parallel
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
JPH09152973A (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP2806093B2 (ja) ロード・ストア処理装置
EP0698846A1 (en) Instruction result labeling in a counterflow pipeline processor
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
JP2894438B2 (ja) パイプライン処理装置
US6157995A (en) Circuit and method for reducing data dependencies between instructions
US11327758B2 (en) Non-transitory computer-readable recording medium, assembly instruction conversion method and information processing apparatus
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators

Legal Events

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

Free format text: PAYMENT UNTIL: 20070724

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20080724

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090724

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100724

Year of fee payment: 12

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

Year of fee payment: 12

Free format text: PAYMENT UNTIL: 20100724

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Year of fee payment: 12

Free format text: PAYMENT UNTIL: 20100724

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Year of fee payment: 13

Free format text: PAYMENT UNTIL: 20110724

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

Free format text: PAYMENT UNTIL: 20110724

Year of fee payment: 13

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

Year of fee payment: 14

Free format text: PAYMENT UNTIL: 20120724

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 14