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
Links
Landscapes
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Description
ロード・ストア処理装置に利用され、特に、スーパース
ケーラ方式、VLIW(Very Long Inst
ruction Word)方式、およびスーパーパイ
プライン方式の演算処理装置で使用される並列化実行に
用いるロード・ストア処理装置に関する。
し、その処理の依存関係を調べ、通常のアプリケーショ
ンからできるだけ並列性を引き出せるコンパイラ技術と
して、自動ベクトル化(対話型も含む)コンパイラやト
レーススケジューリングの技術がある。ベクトル化はベ
クトルプロセッサに対して有効な命令コードを発生させ
るために考え出された技術である。ベクトルプロセッサ
にかけられるプログラムは以下のようなものである。こ
れは、浮動小数点ベンチマークテストのもっとも一般的
な「リバモア・フォートランカーネル」からの抜粋であ
る。
・ディレクティブと呼ばれ、以下の部分のループは、ベ
クトル化が可能であることを示す。これは、データの依
存関係もなく、データの依存関係を無視して並列化を行
っていいことを示す。
場合でも、ループ内での評価を行って式で使われている
データの依存関係を調べ、つまり、X(k)が更新され
ても演算の右辺の値と関係がないことが確認された時点
で最適化(ベクトル化)を行う。
係の解析を行い依存関係がないことを検出するか、また
は依存関係がないものとみなして並列化を行う。逆に依
存関係が一部分だけでもある場合は、ベクトル化はルー
プ全体に対して行われるためにベクトル化ができないこ
とになる。
べる。最適化は局所的な最適化、および、大域的な最適
化に分類される。ここでは簡単のために局所的な最適化
を例にして説明する。局所的な最適化は一つの基本ブロ
ックに対応して行われる最適化である。基本ブロックと
は始めの命令以外のところへ分岐してくることはなく、
終わりの命令以外から飛びこしていくことのない一連の
命令のことをいう。
として閉路のない有効グラフ(Direct acyc
lic graph:DAG)を用いる方法がある(詳
しくは後記の参考文献を参照)。この方法を用いて最適
化を行うと以下のようになる。この例は、共通部分式の
抽出であり、A〔I〕が対象となっている。ただし、I
=JでしかもY≠A〔I〕の場合にはこの最適化は結果
に影響が現れる。
最適化は行ってはいけない。一般的な最適化では、その
最適化で弊害が起こる場合、または弊害が起こるかどう
か予測不可な場合はその最適化を禁止するのが普通であ
る。このように配列およびポインタは最適化の妨げとな
る場合が多い。しかし、逆にベクトル化(並列化)しや
すいのも並列演算である。
化(トレーススケジューリング)を進めると、配列演算
はさらに問題となる。この最もよい例がVLIWでのソ
フトウエアパイプライン最適化で発生する。
プのアンロール(転開)技法の一種である。スーパース
ケーラや、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)) さらに最適化翻訳を行い、並列実行またはベクトル化を
行い高速化をはかることである。
明する。スーパースケーラによる並列化にはいくつかの
手法がある。一つはレジスタのスコアボーディングであ
り、もう一つはトマスローのアルゴリズムと呼ばれてい
るものである。どちらも直列に並んだ命令を順々に受け
つけ、かつ並列実行をさせる手法である。前記スコアボ
ーディング法は、「CDC6600」に初めて採用され
た方法である。複数の演算ユニットの並列実行のため、
レジスタに演算の状態を示す状態表示板をつけ、演算中
のレジスタの値を使用することを避けるようになってい
る。つまり、前の演算結果を次の演算が使う場合は前の
演算が終わるまで、次の演算をインターロックする機構
として、レジスタに表示板をつけるやり方である(後記
の文献〔5〕参照)。
60/91型の演算処理装置に始めて導入された手法
で、現在もスーパースケーラに使用されている方法であ
る。前記スコアボーディング法より一歩進んだ命令の追
い越し実行を行う。IBM360/91では、浮動小数
点演算器にこの手法が使われている。この型の計算機の
基本的な構造は、「リザベーション・ステーション」と
呼ばれる予約された演算が貯められている装置である。
受け付けられた命令は、直ちにレジスタからの読み出し
が行われる。ただし、このレジスタの値が、演算の結果
待ちである場合は、その演算結果に与えられている固有
のタグが読み出される。また演算の結果となるレジスタ
は、固有なタグが与えられ、この値が書き込まれる。読
み出されたレジスタは、命令と共にリザベーション・ス
テーションに書き込まれる。リザベーション・ステーシ
ョンの中でレジスタの値がすべて確定しているものから
順々に演算が行われる。結果は、タグと共に共通データ
バスに乗せられ、レジスタに書き戻される。同時にリザ
ベーション・ステーションで、同一のタグを持つデータ
が読み出され、結果待ちであったデータが書き込まれ
る。
最適化を行う場合、基本的には任意のレジスタのメモリ
へのストアより前に、同じアドレスのメモリからのロー
ド命令を持っていくことは許されない。
適化する場合に、5行目で、式の右辺と左辺で
X(..)が使用されているため、この式では左辺の値
が右辺の値を更新する場合がある。このため、ベクトル
化またはソフトウエアパイプラインによる並列化が困難
となる。
は、ループ内の5、6行目の式をアンロールまたはベク
トル化することが必要である。
る。なおここでは、ループの一部分を示す。アンロール
は4回行う。さらに最適化のシーケンスとして、以上の
式を分解し、並列実行できるように書き直す。
値をロードし、演算を行い結果を書き戻す。並列動作で
きる資源が無限個あった場合はこのループは、依存関係
のために4段階で回ることができる。このままでは、こ
れ以上の高速が不可能である。
る。次に、以下は2回アンロールした場合の例をコンパ
イルした場合である。上の例では2回のループで実行し
ていたことを、1回のループで実行することができる。
同様に無限の資源があった場合には、4クロックで回る
ことができる。以下の例がそうである。実際は資源が高
速化することは難しい。しかし、前記の場合に比べて、
かなりの改善がみられる。この場合は、さらに、同時に
実行できるものはまとめてある。つまり、2クロックで
1回のループを回れるわけである。
この例を含めて、データの依存関係がある場合には、こ
のような最適化が、正しくない結果を導くこともある。
この例では、K−1とIW+1が等しい値であれば、そ
の結果が上のループと違うものになる。
をそれより前に読み出しを行ってしまっているために、
間違ったデータを読み込んでしまっているわけである。
つまり、このようにアンロールを行うことで、正しくな
い結果を導いてしまうこともある。
い。ループ内では僅か1回起こるだけであるが、このた
めに、このようなアンロールを使う最適化はすることが
できない。
る命令の追い越しまでは、行うことができるが、メモリ
上のデータに対する依存関係まで含めたプログラムの正
当性に関しては、まったく考慮されていなかった。
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 Approach J
ohn L.Hennessy,David A.Pa
tterson(MORGAN KAUFMANN)
コンパイラが命令コードの並べ変えを含む最適化を行う
場合に、レジスタへのロード命令を、それより以前に発
生したストア命令より前方に並べ変えることは基本的に
禁止されている。それは、レジスタがアドレスを持って
いないため、後に発生するロード命令がその前のストア
命令の更新したメモリの内容を読み込む命令でない保証
がないからである。
・ストアの順序は、ある特殊な場合を除いて守らなけれ
ばならない。しかし、一般的には、前方でストアしたデ
ータをロードする場合は非常に少なく(あくまで統計的
であるが)この制限は最適化の大きな妨げになる。大規
模な行列演算などでは、ループの展開、ソフトウエアパ
イプライニングが行われるが、一部分のデータが、前記
条件にあてはまる場合は、すべてが前記条件を満足する
ような形で最適化されている。
ために、プログラムの最適化ができないことをなくし、
より高速な演算のための正しい最適化を可能にするロー
ド・ストア処理装置を提供することにある。
のプログラムの実行順において、先のストア命令でデー
タをストアする記憶域のアドレスを記憶する記憶手段
と、後のロード命令でデータをロードするデータの記憶
域のアドレスと前記記憶手段に記憶した前記アドレスと
を比較する比較手段と、前記プログラムのループ展開後
にプログラム処理を実行して前記比較手段で比較一致結
果が得られた場合に、前記ループ展開後のプログラムに
代えて前記ループ展開前のプログラムに戻す例外処理手
段とを備えることを特徴とする。
記機能に代えて前記ロード命令でロードするデータの記
憶域にデータをストアして前記記憶域のデータが有効に
なるまで、前記記憶域のデータを用いるデータ依存関係
のある命令の実行を中断する中断処理手段であることが
できる。
発生し、命令記憶手段のアドレス領域に登録しておき、
例外処理手段により登録された実効アドレスと同じ実効
アドレスに対応するロード命令に対しては、割り込みま
たはインタロッキングなどの例外処理を発生させ、削除
手段により登録された実効アドレスへのストア命令が発
生した場合には登録された実効アドレスの登録を削除す
る。
ができ、変数の依存関係のあるループの最適化が可能と
なる。
て説明する。
ック構成図、および図2は本発明を適用する演算処理装
置の一例の要部を示すブロック構成図である。
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を含んでいる。
ジスタで、各ビットのレジスタごとに、アドレス領域1
09、データ領域110、フラグ111、比較器116
およびアンド回路117を含んでいる。
アドレス、114はポートBアドレス、115は書き込
みアドレス、118は読み出し用のポートA、および1
19は読み出し用のポートBである。
理装置は、読み出し2ポート(ポートA、B)書き込み
1ポートのレジスタ201、ロード・ストアユニット2
02、演算器203、イミディエイトユニット204、
命令フェッチユニット205および外部インタフェース
225を含み、Tバス207、Sバス208、命令バス
209、R1バス226、R2バス230、ならびにパ
ス210〜224、227および228により接続され
る。
の動作を説明する。
ジスタ(プログラムカウンタ)201の値の図外のメモ
リから、外部インタフェース命令を取り込み命令バス2
09に出力する。分岐などの場合は、新しいレジスタ2
01の値を演算器203から取り込む。
の読み出し、一つのレジスタの書き込みをすることがで
きる。レジスタ201の入出力ポートは、パス219お
よび220を介してそれぞれSバス208およびTバス
206に接続される。
行うことができ、演算命令の実行およびアドレス計算を
行う。
ードの中からイミディエイト値を抽出し、符合拡張また
は0−拡張し演算器203に対して、その値を供給す
る。
203で計算されたアドレスからデータをロード、また
はストアする。また、外部インタフェース225を含
む。
下のデータが乗せられる。
る。すなわち、レジスタ201のポートBがパス219
を介して継り、パス214を介して演算器203に入力
される。
ドのもう一方の値およびイミディエイト値が乗せられ
る。すなわち、レジスタ201のポートAがパス220
を介して継り、イミディエイトユニット204の出力が
パス212を介して継り、セレクタ229およびパス2
15を介して演算器203に入力される。
果が載る。
る。
ND」など。
タへのデータ転送 store ストア命令。レジスタからメモリへのデー
タ転送 b.cond 条件分岐。「cond」に条件がはい
る。
番号を示す。
ジスタ演算命令は、レジスタ201から二つの値を読み
出し、Tバス206およびSバス208を通じて演算器
203に渡す。二つの値を受け取った演算器203は、
命令に従って演算し結果を演算結果用のR1バス22
6、およびR2バス230に出力する。R1バス226
の値をレジスタ201は取り込む。
記の演算とほぼ同じである。異なるのは、演算の一方の
ソースが、イミディエイトユニット204から供給され
ることである。
と、イミディエイトユニット204の値の和を実効アド
レスとする。この演算は演算器203で実行される。レ
ジスタ201のポートBに接続するSバス208の値と
イミディエイトユニット204からのTバス207の値
が演算器203の入力値であり、アドレスとなる。ま
た、ロード時は、外部から読み込まれた値が結果用のR
1バス226に乗せられ、レジスタ201の書き込みポ
ートから書き込まれる。読み出し時は、レジスタ201
のポートAから読み出された値が外部に出力される。
器203で行われる。プログラムカウンタおよび分岐オ
フセットがそれぞれSバス208およびTバス207に
乗せられる。分岐先アドレスは、命令フェッチユニット
205に送られる。
に示す流れ図を参照して説明する。なお、図1はレジス
タにメモリ番地を予約する機構をつけた場合を示す。
で構成される。第一の部分は、仮想ストア命令103が
実行された場合の動作である。仮想ストア命令103が
実行された場合、その実効アドレス105がレジスタ1
07の、アドレス領域109に入れられフラグ111が
立てられる(ステップS1)。
た場合である。この場合は、あるアドレスからのロード
命令101が発生した場合、この実効アドレス102
と、レジスタ107の内部のアドレス領域109で同じ
ものがあるかを調べる(ステップS2)。これは図1の
比較器116で比較される。この場合は32本のレジス
タ107に同様な装置が含まれており、いずれかのレジ
スタ107に同じアドレスがない場合は通常のロードシ
ーケンスとして処理される(ステップS5)。同じアド
レスのエントリで、かつフラグが1の場合は(ステップ
S3)、このロードは間違った値を、ロードしようとし
ていることになるため、例外処理を発生させることにな
る(ステップS4)。この場合は例外処理信号108の
いずれかが「1」になるため、これによって、割り込み
を掛ける。
で、あるレジスタ107のストア命令106が発生した
場合は、フラグ111をクリアし、そのレジスタ107
がストアされるアドレスを無効化する(ステップS
6)。
103のインプリメントである。
ち、従来のストア命令と全く変わらない。
(reg num2)割り込みが発生した場合は、ルー
プのアドレスによって別の手段により正確に実行する。
例えば、アンロールされたループの場合は、アンロール
されていないループで実行をすればよい。
た具体例を処理すると以下のようになる。
場合のアンロールされたプログラムで、K−1とIW+
1が等しい場合には、2ブロック目で割り込みが発生す
る。この場合はアンロールしない形のループにおき変え
て実行すれば始めの場合と答えは同じである。これによ
って、ループを5段階で回ることができるようになる。
ローのアルゴリズムに適応した場合を示す。トマスロー
のアルゴリズムはIBMの360/91に採り入れられ
ている。ハードウエアによる動的な命令の追い越しの機
構である。詳しくは、従来の技術で動作を説明した。
いた計算機での仮想ストア命令の処理に必要である機構
について述べる。
クスケジューリングと呼ばれるもので、動的に命令の依
存関係を検出し、依存関係のとけたものから実行を開始
するものである。
cture A Quantitative Appr
oach,John L Hennessy,Davi
dA Patterson〕の6.7章に述べられてい
る機構に、さらに、図1の機構を付け加えることで実現
することが可能である。
命令の追い越しを考慮に入れているため装置の変更は少
なくてすみ効果的である。
ウエアでは従来検出するのが困難なため、最適化が不可
能であった部分の最適化(アンロール)を行うことがで
きる効果がある。たとえば、リバモアベンチマークで
は、2,4番が依存関係を無視するコンパイラディレク
ティブを入れなくても最適化が可能である。また、従来
は4ステップ/ループであったものが、依存関係がある
ループでもアンロールが可能であるため、1クロック/
ループ近くまで下げられることになる。
図。
ブロック構成図。
Claims (2)
- 【請求項1】 ループ展開前のプログラムの実行順にお
いて、先のストア命令でデータをストアする記憶域のア
ドレスを記憶する記憶手段と、 後のロード命令でデータをロードするデータの記憶域の
アドレスと前記記憶手段に記憶した前記アドレスとを比
較する比較手段と、前記プログラムの ループ展開後にプログラム処理を実行
して前記比較手段で比較一致結果が得られた場合に、前
記ループ展開後のプログラムに代えて前記ループ展開前
のプログラムに戻す例外処理手段とを備えることを特徴
とするロード・ストア処理装置。 - 【請求項2】 ループ展開前のプログラムの実行順にお
いて、先のストア命令でデータをストアする記憶域のア
ドレスを記憶する記憶手段と、 後のロード命令でデータをロードするデータの記憶域の
アドレスと前記記憶手段に記憶した前記アドレスとを比
較する比較手段と、 前記プログラムのループ展開後にプログラム処理を実行
して前記比較手段で比較一致結果が得られた場合に、 前
記ロード命令でロードするデータの記憶域にデータをス
トアして当該記憶域のデータが有効になるまで、当該記
憶域のデータを用いるデータ依存関係のある命令の実行
を中断する例外処理手段と を備えることを特徴とするロ
ード・ストア処理装置。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07200512A (ja) * | 1993-09-13 | 1995-08-04 | Ezel Inc | 最適化問題解決装置 |
-
1991
- 1991-08-30 JP JP22056991A patent/JP2806093B2/ja not_active Expired - Lifetime
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 |