JPH0689174A - コンピュータメモリシステム - Google Patents

コンピュータメモリシステム

Info

Publication number
JPH0689174A
JPH0689174A JP5090911A JP9091193A JPH0689174A JP H0689174 A JPH0689174 A JP H0689174A JP 5090911 A JP5090911 A JP 5090911A JP 9091193 A JP9091193 A JP 9091193A JP H0689174 A JPH0689174 A JP H0689174A
Authority
JP
Japan
Prior art keywords
instruction
load
load instruction
memory
data
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.)
Pending
Application number
JP5090911A
Other languages
English (en)
Inventor
Frederic C Amerson
フレデリック・シー・アマーソン
Rajiv Gupta
ラジブ・グプタ
Vinod K Kathail
ビンド・ケー・カサイル
Michael S Schlansker
ミッシェル・エス・シュランスカー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH0689174A publication Critical patent/JPH0689174A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】待ち時間の長いロード命令を持つコンピュータ
システムにおいて、ロード命令を早期にスタートさせる
コードを発生するコンパイラを用いてプログラム実行効
率を改善するとき、命令の順番を入れ替えたことによっ
てロード命令が誤りデータを返しそうになる場合は、そ
れを検出し正しいデータをCPU に送るメモリシステムを
提供する。 【構成】CPU16 からの命令を命令検査器20で検査し、ロ
ード命令ならば情報をレジスタファイル22に記録し、格
納命令ならば格納場所がレジスタファイルに記録された
アドレスと一致していないかをアドレス比較器28で比較
し、結果をレジスタファイルに記録する。ロード命令の
待ち時間後レジスタファイルを検査し、ロード命令の参
照アドレスと格納命令の格納先が一致していたならば、
CPU を一時停止させ、命令発生器26でロード命令を再発
行しマルチプレクサ18を用いて正しいデータをCPU に供
給する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータのメモリシ
ステムに関し、更に詳細には、長い待ち時間を持つメモ
リシステムに関する。
【0002】
【従来技術と発明が解決しようとする課題】伝統的なコ
ンピュータシステムは、ロード命令に応答してデータを
中央処理装置(CPU)に供給し、格納命令に応答してデー
タをメモリシステムに格納するメモリシステムを利用し
ている。メモリシステムの待ち時間はロードするデータ
がメモリから戻されて利用可能な状態になるまでのロー
ド動作の開始からのサイクル数として定義される。多く
の場合ロード命令の待ち時間はシステムにより実行され
るプログラムの効率にとって非常に重要である。この非
能率を回避する一つの方法は、データが必要になる前に
充分な余裕をもってロード命令を発してデータを読み込
むメモリ時間を与え、必要なときには利用できる状態に
なっているようにすることである。
【0003】データをメモリシステムから積極的にロー
ドしてプログラム実行時間を減らすことができる方法は
次の簡単なコンピュータプログラムを参照して更に容易
に理解することができる。 R1=(A1) (A2)=52 (A3)=64 R2=(A4) R3=R2+2 ここで、メモリアドレスは( )で示してあり、レジスタ
をRnと記してある。
【0004】加算及びメモリ格納の各動作の待ち時間は
1サイクルずつであり、メモリロード動作の待ち時間は3
サイクルであると仮定する。動作がプログラムで示され
た順序で実行されれば、プログラムを実行するのに7サ
イクル必要である。7サイクルは次のとおりである。 (A1)からR1にロードする 52を(A2)に格納する 64を(A3)に格納する (A4)からR2にロードする 時間かせぎ(stall) 時間かせぎ R2に2を加え、R3に格納する 二つの「時間かせぎ」命令は、最後の命令でR2の値を使用
する前にメモリシステムがロード動作を終了することが
できるようにするのに必要である。
【0005】しかし、R2にロードするロード命令が(A2)
及び(A3)に格納する命令の前に開始されれば、プログラ
ムが必要とするのは次の5サイクルだけである。 (A1)からR1にロードする (A4)からR2にロードする 52を(A2)に格納する 64を(A3)に格納する R2に2を加え、R3に格納する
【0006】しかし、長い待ち時間のロード命令を早期
に発することは、ロード命令の前に格納命令がある場合
があるため常に可能であるとは限らない。この問題は次
のプログラムを参照すれば一層容易に理解することがで
きる。 (A1)からR1にロードする 52を(A2)に格納する 64を(A3)に格納する (A3)からR2にロードする R2に2を加え、R3に格納する
【0007】このプログラムは通常次のように実行され
る。 (A1)からR1にロードする 52を(A2)に格納する 64を(A3)に格納する (A3)からR2にロードする 時間かせぎ 時間かせぎ R2に2を加え、R3に格納する
【0008】コンパイラがR2にロードする命令を2命令
分手前に移動しようとする場合には、次のコードが発生
される。 (A1)からR1にロードする (A3)からR2にロードする 52を(A2)に格納する 64を(A3)に格納する R2に2を加え、R3に格納する
【0009】このコードは、プログラムを正しく実行し
ない。それは、元来のプログラムでは、(A3)への格納は
(A3)からのロードの前に実行されることになっているの
に反して、ここでは(A3)からロードした後に実行される
メモリロケーション(A3)への格納命令が存在するからで
ある。元来のプログラムでの(A3)からのロードは、64す
なわち前の格納命令により(A3)に格納されている値を戻
す。しかしながら、修正したプログラムでの(A3)からの
ロードは、(A3)への格納によりメモリロケーション(A3)
を修正する前の(A3)の内容を戻す。
【0010】上に示した簡単な例では、コンパイラは、
原理的には、問題を検出し、ロード命令の早期発生を取
り止めることができた。残念ながら、ほとんどのプログ
ラムは間接参照方式を使用しており、このような方法は
非現実的になっている。したがって、コンパイラは待ち
時間の長いロード命令を早期に発生するという利点を活
用しない保守的なコードを発生しなければならない。
【0011】概して言えば、本発明の目的はコンパイラ
が待ち時間の長いロード命令を早期に発することができ
るコンピュータメモリシステムを提供することである。
【0012】本発明の他の目的は間接アドレス法を利用
しているシステムにおいても待ち時間の長いロード命令
を早期に発することができるメモリシステムを提供する
ことである。
【0013】本発明のこれらの及び他の目的は当業者に
は、本発明の下記詳細説明及び付図から明らかになるで
あろう。
【0014】
【課題を解決するための手段】本発明は、コードシーケ
ンス中で移動されたロード命令が、このロード命令で指
定されたメモリロケーションへの後続の格納動作のため
に誤った結果を戻すことがないようなメモリ処理装置を
有する。メモリ処理装置は通常、メモリと計算処理装置
を含むシステムの一部であり、このシステム中でメモリ
処理装置は、計算処理装置からメモリへ伝えられる格納
命令及びロード命令に応答して、メモリからのデータを
格納及びロードする。本発明のシステムはメモリへの格
納命令及びロード命令を受け取る。各格納命令は格納ア
ドレスを参照し、各ロード命令はロードアドレスを含ん
でいる。各ロード命令に対して観察窓(watch window)が
定義される。ロードアドレスを参照する格納命令が観察
窓の期間中に検出されれば、本発明により誤りデータを
計算処理装置に伝送しないようにする。本発明のシステ
ムは受け取ったロード命令を格納するレジスタファイル
を備えている。
【0015】本発明の一実施例では、レジスタファイル
は、受け取られた各命令がこのレジスタファイルに格納
されて以来の命令サイクル数を数えるためのカウンタ、
及び格納されたロード命令によって指示されるアドレス
の内容の状態を示すためのフラグを各々の格納されたロ
ード命令毎に備えている。各フラグは、二つの状態のう
ちの一つをとり、フラグはロード命令が受け取られた時
には二つの状態のうちの第1の状態にセットされる。本
発明は受け取った各格納命令の格納アドレスと格納され
ている各ロード命令のロードアドレスとを比較し、ロー
ドアドレスが格納アドレスに一致すれば、このロード命
令に対応するフラグを二つの状態のうちの第2の状態に
セットする比較器を備えている。本発明は格納されてい
るロード命令の一つが所定の数の命令サイクルの間に格
納されたか判定するためのコントローラを備えている。
このようなロード命令が存在し、このロード命令に対応
するフラグが前記第2の状態にセットされていれば、コ
ントローラはこのロード命令を指定する信号を発生す
る。再発生されたロード命令は、本発明のシステムが接
続されているメモリシステムにより実行される次の命令
として命令シーケンスに挿入される。
【0016】本発明の他の実施例では、ロード命令が移
動されていない場合にメモリによって供給されることに
なっていたデータが本発明のシステムに格納される。こ
のデータはレジスタファイルにあるアドレスを参照する
後続の格納動作により更新される。ロード命令に関連す
るフラグによりロード命令で指定されるアドレスが後続
格納動作の主体であったことが示されるならば、更新さ
れたデータが、問題としているロード命令により発生さ
れたデータの代わりに処理装置に送られる。
【0017】
【実施例】本発明は、ロード命令のアドレス(及び他の
パラメータ)がメモリに提示される時刻とロード命令が
メモリの状態を実際にサンプルする時刻とを事実上分離
する。従来技術のシステムでは、ロード命令のアドレス
がメモリに提示される時刻はロードがメモリの状態を実
際にサンプルする時刻でもある。これはロードが「実行
されている」と言われる時刻でもある。ロード命令が発
せられてから多数のサイクル後のメモリの状態を物理的
にサンプルするパイプライン式メモリシステムにおいて
さえ、このロードにより戻されるデータがロードの前に
発せられる動作により行われる全てのメモリ状態の修正
を取り込むために、メモリは実効的にはロードが発せら
れた瞬間にサンプルされる。これは、ロードの前に発せ
られたこれらの動作がロードが発生される時刻までにメ
モリを物理的に更新していない場合でさえ正しい。
【0018】しばしば、ロードのアドレスは早期に提供
され得るが、メモリは、ロードに先行し、既に発せられ
たロードによって戻されるデータを修正してしまう可能
性のある全ての動作の後でのみ、実際にサンプルされる
ことができる。このロードに後続する格納動作により誤
りデータを戻さないようにするのに、従来技術のシステ
ムはロード命令の発生とメモリの状態がサンプルされる
時刻とを緊密に結び付ける必要がある。その結果、ロー
ド命令の待ち時間をロード命令の早期発生により覆い隠
すことができない。本発明はロード命令の発生とメモリ
の状態がサンプルされる時刻との間の結合を断ってい
る。本発明はロード命令が発せられた時刻に対して、メ
モリの状態がサンプルされる相対時刻を別に定義するロ
ード命令を利用している。
【0019】本発明を利用するコンピュータシステムで
は、コンパイラは待ち時間の長いロード命令をコードの
手前の位置まで積極的に動かして、そうしなければ長い
待ち時間により生ずるであろう遅れを回避している。本
発明は、移動すればメモリシステムがそのロード命令に
応じて誤りデータを戻すことになるロード命令を検出す
る。本発明が移動したロード命令が誤りデータを生ずる
可能性があることを判定すると、本発明は正しいデータ
をCPUに伝えるかまたはCPUに動作を停止させてコードシ
ーケンスの以前の位置にロード命令を発生しなおすかす
る。この再実行ロード命令によりその待ち時間に等しい
遅れが生ずる。したがって、システムは従来技術のシス
テムが命令を実行するのと同じ時刻にこの命令を実行す
ることになる。他方、移動によって誤りデータを戻すこ
とのないロード命令は、少ない待ち時間で実行し、それ
により、プログラムの全体の効率を増加させる。
【0020】本発明と共に使用されるとき、「観察窓」
は、コンパイラによって移動させられる各ロード命令に
対して定義される。本発明の一実施例では、コンパイラ
は各々の待ち時間の長いロード命令毎に、その命令が元
のプログラムで示されるコードの並びの上で何命令移動
したかを示す数を示すカウントを格納する。本発明では
このようなロード命令をそれがメモリパイプラインに入
るとき検出し、ロード命令及びそれが飛び越して移動さ
せられた命令の数を指定する情報を格納する。待ち時間
の長いロード命令が移動させられる命令の数をNとす
る。連続するN命令サイクルの各々で、本発明はメモリ
パイプラインに入る命令を検査し、当該命令がロード命
令で指定されているものと同じメモリロケーションを参
照する格納命令であるかを判定する。このような格納命
令が検出されなければ、問題としているロード命令は有
効データを戻すことになり、なにも処置をする必要はな
い。しかし、問題としているメモリロケーションを参照
する格納命令がN命令サイクル中に検出されれば、本発
明は、長い待ち時間のロード命令をコードシーケンス中
で移動されなければ実行されることになっていたロケー
ションで再実行させる。この再実行中、本発明はCPUに
問題のロード命令の待ち時間だけ動作を停止するように
信号を送る。
【0021】本発明がこれらの機能を行う方法は図1を
参照することにより一層容易に理解することができる。
図1は本発明によるメモリ処理装置10の一実施例を利用
しているメモリシステムのブロック図である。メモリシ
ステムはデータをCPU16に供給する。メモリシステム
は、それぞれL及びSで示されているロード命令及び格納
命令に応答してCPU16に対するデータ及び命令を格納す
るメモリ12を備えている。処理装置10はメモリ12に入る
命令の源を切り替えるマルチプレクサ18を備えている。
通常、マルチプレクサ18はCPU16からの命令をメモリ12
に伝える。CPU16からメモリ12への典型的な命令のシー
ケンスを14で示してある。各命令がマルチプレクサ18に
入るにつれて、命令検出器20は命令を検査して命令が移
動されているロード命令であるか、または格納命令であ
るかを判定する。命令が命令シーケンス内で移動させら
れたロード命令であれば、コントローラ24は命令を指定
する情報をレジスタファイル22に格納させる。加えて、
コントローラ24は各々の格納済みロード命令に関連する
カウンタをそのロード命令に関連するNの値で初期化
し、各ロード命令に関連するフラグを第1の状態にセッ
トさせる。Nの値はコンパイラが命令を移動させるとき
にコンパイラによりセットされ、ロード命令が元のコー
ド順序に対して何命令分移動させられたかを示す命令数
に等しい。命令が格納命令であれば、コントローラ24は
アドレス比較器28に格納命令で指定されたアドレスをレ
ジスタファイル22に格納されている各ロード命令で指定
されたアドレスと比較させる。以下で更に詳細に説明す
るように、アドレス比較器28は好ましくは、レジスタフ
ァイル22に格納されている全てのアドレスを一度に比較
してこの動作に必要な時間を最小にしている。アドレス
がこのようなロード命令のどれかのアドレスと一致すれ
ば、レジスタファイル22に入っているロード命令と関連
するフラグが第2の状態にセットされる。
【0022】各命令サイクルの終わりに、コントローラ
24はレジスタファイル22の各カウンタの値をデクリメン
トし、カウンタのどれかに現在0の値が入っているか確
認する。カウンタに現在0の値があれば、対応するロー
ド命令に関連するフラグが調べられる。フラグが第2の
状態にあれば、コントローラは命令発生器26に対応する
ロード命令を再構成させる。再構成されたロード命令を
次にメモリ12により実行される次の命令とする。この命
令はマルチプレクサ18を経由してメモリ12に伝えられ
る。加えて、コントローラ24はCPU16に問題としている
ロード命令の待ち時間に等しい時間だけ動作を停止させ
る。これによりロード命令が元のプログラムで示された
順序で実行される。こうしてからレジスタファイル22の
ロード命令エントリが取り除かれる。
【0023】問題としているフラグがなお第1の状態に
あれば、ロード命令を移動しても誤りデータをCPU16に
送ることにはならなかったことになる。この場合には、
レジスタファイル22のロード命令エントリが単に除かれ
るだけである。
【0024】図2はレジスタファイル22のレジスタ102の
好適実施例のブロック図である。レジスタ102はそこに
格納されるロード命令を指定する情報を格納する格納領
域104を備えている。この情報はロード命令の形式及び
ロード命令によって参照されるアドレス及びレジスタを
備えている。レジスタ102はロード命令で指定されたNの
値がロードされるカウンタ106をも備えている。このカ
ウンタは継続する命令サイクルごとにデクリメントされ
る。最後に、レジスタ102は再発行しなければならない
ロード命令をマークするのに使用されるフラグ108を備
えている。本発明の好適実施例では、アドレス比較器28
は各レジスタに対応する比較器110を備えている。比較
器110は領域104に格納されているアドレスを命令検出器
20により検出された格納命令のアドレスと比較する。検
出されたアドレスはアドレス比較器28の内部バスで全て
の比較器110に伝えられる。
【0025】上に述べた本発明の実施例では、待ち時間
の長いロード命令が何命令移動させられるかはコンパイ
ラにより決定される。当業者には最大プログラム実行効
率はNが移動させられる長い待ち時間を持つロード命令
の待ち時間に等しいときに得られるということが明らか
であろう。しかし、この最適条件は実際には常に得られ
るとは限らない。レジスタファイルの大きさにより或る
一時刻に収容することができる早期に実行されるロード
命令の最大数が決まる。コンパイラはこの数より多いロ
ード命令をどのような時にも格納しないことを保証しな
ければならない。しかし、これを行うには、コンパイラ
は待ち時間の長いロード命令の早期実行をやめるかまた
は問題としているロード命令に対して最適より少ないN
を使用するかする必要がある。しかし、レジスタファイ
ルの大きさをどのように決めても、本発明はやはり従来
技術のシステムよりはかなり改善されている。
【0026】本発明の上述の実施例はポートが一つしか
ないメモリを利用しているが、本発明の他の実施例では
複数ポートのメモリを利用することができる。このよう
なメモリにはロードを受け取り命令を格納するための複
数の入力ポートがある。複数ポートのメモリ212を使用
する本発明の一実施例を図3に200で示してある。メモリ
212はデータ及び命令をCPU216に供給する。CPU216は各
命令サイクルで複数のロード命令及び格納命令を開始す
ることができる。問題としている命令は複数のポートに
よりメモリ212に入力される。各ポートは命令を問題と
しているポートに入力するマルチプレクサを備えてい
る。マルチプレクサの例を218及び219で示す。各マルチ
プレクサはCPU216からの命令または命令発生器226から
の命令を選択する。
【0027】CPU216からの命令は命令検出器210で検査
される。命令がコンパイラにより命令シーケンス内で移
動されている待ち時間の長いロード命令であれば、その
命令は図1に示すレジスタファイル22の機能と類似の機
能を行うレジスタファイル222に入力される。レジスタ
ファイル222は複数のレジスタを備えている。各レジス
タは4種類のデータに対する空間を備えている。第1に、
ロード命令を指定する情報を格納するための空間が設け
られている。第2に、コンパイラがロード命令を移動す
る命令数を示すカウントに初期設定されるカウンタのた
めの空間が設けられている。第3に、命令が検出される
メモリ212のポートのIDを格納するための空間が設けら
れており、第4に、ロード命令を再発行すべきかを示す
フラグのための空間が設けられている。ロード命令がレ
ジスタファイル222に格納されると、フラグは第1の値に
セットされる。
【0028】命令のうちどれかが格納命令であれば、ア
ドレス比較器228は格納命令で参照されたアドレスをレ
ジスタファイル222に格納されているロード命令のアド
レスと比較する。格納命令のアドレスがレジスタファイ
ル222に格納されているロード命令のものと一致すれ
ば、そのロード命令に関連するフラグが第2の値にセッ
トされ、コンパイラがそのロード命令を命令シーケンス
内で移動させなかった場合に発せられることになってい
た時刻に、そのロード命令を再発行すべきことを示す。
【0029】各命令サイクルで、コントローラ224は全
てのカウンタをデクリメントする。コントローラ224は
次に各カウンタを調べてそこに格納されているカウント
が0であるかを確認する。カウントが0であれば、コント
ローラ224はロード命令に関連するフラグを調べてロー
ド命令を再発行すべきか否かを判断する。フラグが第2
の値にセットされていれば、コントローラ224は命令発
生器226にロード命令を再発行させる。別の実施例では
ロード命令を、命令が最初にメモリ212に入力されたの
と同じポートで、またはロード命令が最初にメモリ212
に入力されたポートとは無関係のポートで再発行するこ
とを選択することができる。コントローラ224は次にCPU
216に問題としているロード命令の待ち時間に等しい時
間だけ動作を停止するよう信号を出す。コントローラ22
4は次にレジスタファイル222からカウンタ値0のロード
命令を取り除く。
【0030】本発明の上述の実施例は、本発明がロード
命令を図1に示すマルチプレクサ18のようなマルチプレ
クサを通して再発行させる機構を利用している。このよ
うなマルチプレクサはメモリシステムに許容できないほ
どの遅れをもたらすことがある。このようなマルチプレ
クサを回避する本発明の一実施例を図4に400で示してあ
る。メモリ処理装置400はCPU416によりメモリ412に送ら
れる命令を監視する。CPU416により送られるロード命令
のアドレスはCPU416の内部にあるレジスタファイル452
に問題としているロード命令の待ち時間が続く間格納さ
れる。コンパイラは、ロード命令のアドレスを格納する
のに使用されるレジスタファイル452の特定のレジスタ
の内容が、問題としているロード命令の待ち時間のあい
だ確実に重ね書きされないようにする。命令検出器420
がメモリ412への入力でロード命令を検出すると、命令
検出器420はレジスタファイル452のレジスタの指標をレ
ジスタファイル422に格納させるばかりでなく、ロード
命令で参照されたアドレス及び問題としているロードに
対する「観察窓」の長さを指定するカウントをも格納させ
る。格納命令が命令検出器420で検出されるごとに、コ
ントローラ424はアドレス比較器428にレジスタファイル
422に格納されているロード命令に関連するアドレスを
検出された格納命令のアドレスと比較させる。検出され
た格納アドレスがロード命令アドレスの一つと一致すれ
ば、ロード命令に関連するフラグがセットされてロード
命令を再発行しなければならないことを示す。各命令の
終わりに、レジスタファイル422のカウントが全てデク
リメントされ、ロード命令のどれかに関連する観察窓が
期限切れになっているか確認する。
【0031】コントローラ424が再発行すべきロード命
令について観察窓が期限切れになっていることを確認す
ると、コントローラ424はCPU416への割込みを命令す
る。割込みには再発行すべきロード命令のアドレスが入
っているレジスタファイル452の中のレジスタの指標が
入っている。すると、割込み処理ルーチンはCPU416にロ
ード命令を再発行し、ロード動作を完了することができ
るよう適切なサイクル数だけ停止させる。
【0032】レジスタファイル422の大きさが本発明に
よるメモリ処理装置のコストに関して重要な要因である
場合には、レジスタファイル422の大きさを各ロード命
令が参照するアドレスの一部分だけを格納することによ
り縮小することができる。本発明のこの実施例では、レ
ジスタファイル422の全アドレスを格納アドレスと比較
するために必要なゲート数はレジスタファイル422に格
納されるアドレスの大きさに比例するので、比較器428
の複雑さも減少する。アドレスの部分ストリングだけが
格納されるので、比較動作の或るものはロード命令を誤
って再発行することがある。これによりコードの実行効
率がわずかに下がるが、誤りデータがCPU416に送られる
ことはない。したがって、この構成はロード命令を積極
的に実行することに関連する利益の大部分をなおも維持
しながら本発明に関連するハードウェアのコストを減ら
す方法を提供している。
【0033】上に記した本発明の実施例は、そのアドレ
スが観察窓の期間中に命令を格納するために使用された
ロード命令を、ロード命令がコンパイラにより移動され
なかった場合にそのロード命令が発行されることになっ
ていたコードシーケンス中のロケーションで、再発行さ
せている。この状況を処理する代わりの機構はデータ回
送システムを設けることである。このようなデータ回送
器を利用している本発明によるメモリ処理装置510のブ
ロック図を図5及び図6に示してある。先に記した本発明
の実施例の場合のように、メモリ処理装置510はCPU516
によりメモリ512に伝えられるロード命令及び格納命令
を検出する。命令はコンパイラにより命令シーケンス中
で早期に実行されるロード命令を認識する命令検出器52
0により検出される。ロード命令を指定する情報はメモ
リ処理装置10に関連して上に説明したようにレジスタフ
ァイル522に記録される。ロード命令のアドレスを指定
する情報もデータ回送回路550に記録される。ロード命
令は質問メモリ512に進み、対応するメモリデータは待
ち時間の終わりにデータ回送器550に戻される。データ
はCPU516のレジスタファイルに直接戻すこともできる。
アドレス比較器528は全ての格納命令のアドレスをレジ
スタファイル522に格納されているロード命令のアドレ
スと比較して、ロード命令及び格納命令によりアクセス
されるメモリロケーションが部分的にまたは完全に重な
っているかチェックする。格納命令がロード命令により
アクセスされているデータの一部または全部に重ね書き
されれば、コントローラ524は問題としているロード命
令に対応するフラグをセットする。
【0034】あるロード命令についての観察窓が完了し
ており且つ当該ロード命令のフラグがそのロード命令に
指定されたアドレスにアクセスした格納ロケーションを
示すようにセットされているとコントローラ524が判定
する時、コントローラ524はデータ回送器550にデータを
CPU516へ送らせる。レジスタファイル522に格納されて
いるロード命令に指定されたデータを受け取ることの他
に、データ回送器550はレジスタファイル522に格納され
ているロード命令で指定されているアドレスを参照する
格納命令で指定されているデータをも受け取る。コント
ローラ524からの信号に応答して、データ回送器550はこ
のデータをCPU516に出力する。データ回送器550はデー
タを図6に示される構造に格納する。この整列機構560及
びメモリ機構570は標準のキャッシュ構造で見られるも
のと同様である。標準キャッシュの場合のように、整列
機構560は格納データに部分的にアクセスするのに使用
される。メモリ570のエントリはレジスタファイル522の
レジスタと1対1に対応している。
【0035】データ回送器550の内部動作はコントロー
ラ580により制御される。ロード命令のアドレスはメモ
リ570のレジスタファイル522の対応するエントリと同じ
エントリに記録される。レジスタファイル522の1つまた
は複数のエントリを参照するどの格納動作もメモリ570
の対応するエントリの適切なバイトに重ね書きする。メ
モリ512によりデータ回送器550に戻されるデータはメモ
リ570の、観察窓の期間中に発行された格納動作で書き
込まれていないロケーションにのみ書き込まれる。この
選択書き込み動作は各バイトについてフラグビットをエ
ントリに保持することにより行われる。フラグビットは
最初、ロード命令がデータ回送器550に記録されると
き、第1の値にセットされる。フラグは、格納命令が問
題としているバイトを書き込む時にはいつでも第2の状
態にセットされる。格納動作は二つ以上の格納エントリ
の二つ以上のバイトロケーションに書き込むことができ
ることに注目すべきである。メモリ512から戻されたデ
ータバイトは第1の状態にあるフラグを有するロケーシ
ョンにのみ書込むことができる。したがって、観察窓の
終わりには常にデータ回送器550はCPU516に送る正しい
データを備えている。
【0036】上記のとおり、各々のロードに関連して観
察窓が存在する。観察窓はロード命令が発行される時刻
に、すなわち、アドレスがメモリに提示される時刻に始
まり、メモリ状態がサンプルされる時刻に終わる。観察
窓の期間中に発行された格納命令が同じメモリロケーシ
ョンにアクセスすれば、適切な処置を取らなければなら
ない。すなわち、ロード命令を再発行するかまたは回送
データをデータ回送回路から送り出さなければならな
い。観察窓の終わりを指定するには多数の方法が存在す
る。上に記した方法は観察窓の長さを定義するのにカウ
ントNを利用している。上述の実施例では、カウントは
経過しなければならないサイクルの数を指している。し
かし、実行しなければならないある指定された形式の命
令、たとえば、格納命令、分岐命令などの数を指定する
カウントを使用することもできる。格納命令をカウント
することは、それがどれだけ多数の格納命令を捕えるべ
きかに直接関わっているので、特に魅力的である。Nの
値はハードウェアまたはコンパイラにより確定される。
前者の場合には、全てのロード命令が同じ観察窓を備え
ていなければならない。後者の場合には、窓の長さをロ
ードごとに変えることができる。
【0037】観察窓の終わりを指定するには少なくとも
更に4つの方法が存在する。第1に、観察窓の終わりをそ
の実行が観察窓を終結させる命令のアドレスを指定する
ことにより指定することができる。問題としているアド
レスは絶対アドレスまたは現在のプログラムのカウント
値からの変位のどちらでも良い。観察窓を全ての実行経
路に沿って正しく終結させるには、コンパイラが、指定
されたアドレスにある命令が全ての実行経路に沿って実
行されていることを保証しなければならないか、または
下に記すもののような第2の追加の終結条件を実現しな
ければならない。
【0038】第2に、ロードのターゲットレジスタを使
用または再定義してそのロードに対する観察窓の終わり
に印をつけることができる。データをメモリからレジス
タR2にロードするロードを考える。メモリ処理装置はCP
Uに対する全ての命令を監視してR2の内容を使用する全
ての命令を見つける。このような命令は観察窓を終結さ
せる。
【0039】第3に、別個の窓終結命令を定義すること
ができる。このような命令は命令に関連するタグにより
指定された命令に対する観察窓を終結させる。積極的ロ
ードに関連するタグは幾つかの仕方で得ることができ
る。コンパイラはタグとしてユニークな数を割当てるこ
とができ、積極的ロードのターゲットレジスタ番号をタ
グとして使用することができ、積極的ロードのアドレス
をタグとして使用することができ、またはレジスタファ
イル22のレジスタがコンパイラでアドレス可能であれ
ば、ロードデータが格納されるレジスタ番号をタグとし
て使用することができる。この最後の場合には、コンパ
イラはロード命令を指定するデータを入れることになっ
ているレジスタファイル22のレジスタを指定する。こう
すれば、観察窓が同じレジスタに記録されている他のロ
ードにより終結される。
【0040】最後に、コンピュータアーキテクチャは先
に記録されているロード命令の全てを終結させるある形
式の命令を定義することができる。たとえば、観察窓を
分岐命令に遭遇したとき終結することができる。
【0041】待ち時間の長い命令をあらかじめ発行し、
そうしなければロード命令の待ち時間から生ずる非能率
を減らすコンパイラに関する手段を提供するメモリシス
テムをここで説明してきた。当業者には本発明に対する
各種修正が前述の説明及び付図から明らかになるであろ
う。したがって、本発明は特許請求の範囲によってのみ
限定されるべきである。
【0042】
【発明の効果】以上のように本発明で述べたメモリシス
テム及びコンパイラを用いれば、ロード命令の待ち時間
から生ずる効率の悪化を改善する効果がある。
【図面の簡単な説明】
【図1】本発明によるメモリシステムの一実施例のブロ
ック図。
【図2】図1で示されるレジスターファイルからの記録
内容のブロック図である。
【図3】本発明によるメモリシステムの第2の実施例の
ブロック図。
【図4】本発明によるメモリシステムの第3の実施例の
ブロック図。
【図5】本発明によるメモリシステムの第4の実施例の
ブロック図。
【図6】本発明によるデータ回送回路のブロック図。
【符号の説明】
10:本発明によるメモリ処理装置 12:メモリ 14:CPU16からメモリ12への典型的な命令のシーケン
ス 16:CPU 18:マルチプレクサ 20:命令検出器 22:レジスタファイル 24:コントローラ 26:命令発生器 28:アドレス比較器
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.5 識別記号 庁内整理番号 FI 技術表示箇所 G06F 12/00 561 9366−5B (72)発明者 ビンド・ケー・カサイル アメリカ合衆国カリフォルニア州クパチー ノ、フットヒル・ブールバード・ノース 19270 ナンバー・シー5 (72)発明者 ミッシェル・エス・シュランスカー アメリカ合衆国カリフォルニア州サニーベ イル、セナンドー 1139

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】ロード命令を所定時間先行して発生させる
    コードを実行できるコンピュータシステムにおいて、前
    記ロード命令を先行して発生させたことによるコードシ
    ーケンスの変更によって、前記発生から前記所定時間後
    に誤ったデータがロードされたかを検査し、その場合に
    は前記ロード命令により読み出されたデータを破棄する
    メモリ処理装置を有することを特徴とするコンピュータ
    メモリシステム。
  2. 【請求項2】請求項1記載のコンピュータメモリシステ
    ムにおいて、誤ってロードされたデータを破棄すると共
    に、前記ロード命令を再発行することを特徴とするコン
    ピュータメモリシステム。
  3. 【請求項3】請求項1記載のコンピュータメモリシステ
    ムにおいて、誤ってロードされたデータを破棄すると共
    に、あらかじめ保持しておいた前記ロード命令で指定さ
    れたアドレスを指定した格納命令の格納内容を出力する
    手段を有することを特徴とするコンピュータメモリシス
    テム。
  4. 【請求項4】処理装置とメモリを有するデータ処理シス
    テムにおいて、前記メモリは、前記処理装置からの格納
    命令に応答してデータを格納し前記処理装置からのロー
    ド命令に応答してデータを前記処理装置に送る手段と、
    コードシーケンス中で移動されたロード命令が前記ロー
    ド命令で指定されるメモリロケーションへの格納命令に
    よって間違った結果を戻すのを防ぐためのメモリ処理装
    置を設け、前記メモリ処理装置は次の(1)、(2)、(3)及
    び(4)を有することを特徴とするコンピュータメモリシ
    ステム: (1)前記格納命令及び前記ロード命令を受け取る受け取
    り手段:各前記格納命令は格納アドレスを参照し各前記
    ロード命令はロードアドレスを備える; (2)前記受け取とられたロード命令を格納するために前
    記受け取り手段に接続された格納手段:前記格納手段は
    更に各前記ロード命令に関連する観察窓と前記格納手段
    で格納された各前記受け取とられたロード命令に対応す
    るフラグを定義する手段を有し、前記フラグは2つの状
    態のうちの1つを持ち、前記フラグはロード命令が受け
    取られた時に2つの状態の第1の状態にセットされる; (3)前記受け取り手段に接続され、各々の受け取られた
    格納命令の前記格納アドレスと前記格納手段で格納した
    各前記ロード命令のロードアドレスを比較し、もし前記
    ロードアドレスが前記格納アドレスに一致するなら、前
    記ロード命令に対応する前記フラグを前記2つの状態の
    第2の状態にセットする手段; (4)前記格納手段に接続され、前記格納されたロード命
    令のための観察窓が終っているかどうかを判定するコン
    トロール手段:前記コントロール手段は、更にもし前記
    ロード命令に関連した前記フラグが前記第2の状態にセ
    ットされているならば、前記移動させられたロード命令
    が仮に移動されていなかった場合に当該ロード命令によ
    って読み込まれていたデータを前記処理ユニットへ出力
    させるためのデータ配布手段を有する。
  5. 【請求項5】請求項4記載のコンピュータメモリシステ
    ムにおいて、前記データ配布手段は、次の(1)、(2)、
    (3)及び(4)を有することを特徴とするコンピュータメモ
    リシステム: (1)前記格納手段で格納された前記ロード命令のどれか
    で指定されたアドレスを指し示す格納命令を受け取るた
    めの前記メモリに接続された手段; (2)前記受け取られた格納命令によって指定された前記
    メモリの前記アドレスの新しい内容を格納するための手
    段; (3)各々の前記ロード命令に応答して前記メモリが発生
    するデータを受け取る手段; (4)前記ロード命令に対応した前記フラグの状態に応じ
    て前記処理装置への前記ロード命令に対応する前記メモ
    リ或いは前記新しい内容によって発生されたデータのど
    ちらかを出力する手段。
  6. 【請求項6】処理ユニットを含むデータ処理システムで
    使われるメモリであって、前記メモリは格納命令に応答
    してデータを格納し、ロード命令に応答してデータが読
    み出され、次の(1)及び(2)を有することを特徴とするメ
    モリ: (1)前記処理ユニットへ返されるべき格納されたデータ
    のロケーションを指定するアドレスを受け取り前記アド
    レスの前記メモリの状態が実際にサンプルされるための
    時刻を指定するための手段; (2)前記指定された時刻に前記メモリの状態を実効的に
    サンプルするための手段。
JP5090911A 1992-03-25 1993-03-25 コンピュータメモリシステム Pending JPH0689174A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US85838992A 1992-03-25 1992-03-25
US858,389 1992-03-25

Publications (1)

Publication Number Publication Date
JPH0689174A true JPH0689174A (ja) 1994-03-29

Family

ID=25328197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5090911A Pending JPH0689174A (ja) 1992-03-25 1993-03-25 コンピュータメモリシステム

Country Status (4)

Country Link
US (1) US5475823A (ja)
JP (1) JPH0689174A (ja)
DE (1) DE4237417C2 (ja)
GB (1) GB2265481B (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761472A (en) * 1994-03-09 1998-06-02 Sun Microsystems, Inc. Interleaving block operations employing an instruction set capable of delaying block-store instructions related to outstanding block-load instructions in a computer system
WO1996025705A1 (en) * 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5694577A (en) * 1995-06-06 1997-12-02 Matsushita Electric Industrial Co., Ltd. Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
JP3435267B2 (ja) * 1995-11-07 2003-08-11 株式会社東芝 マイクロプロセッサ及びそのロードアドレス予想方法
US6147976A (en) * 1996-06-24 2000-11-14 Cabletron Systems, Inc. Fast network layer packet filter
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US6275948B1 (en) * 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US5964867A (en) * 1997-11-26 1999-10-12 Digital Equipment Corporation Method for inserting memory prefetch operations based on measured latencies in a program optimizer
US7779236B1 (en) * 1998-12-31 2010-08-17 Stmicroelectronics, Inc. Symbolic store-load bypass
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6675374B2 (en) 1999-10-12 2004-01-06 Hewlett-Packard Development Company, L.P. Insertion of prefetch instructions into computer program code
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US6578135B1 (en) * 2000-01-11 2003-06-10 Broadcom Corporation Method and apparatus for performing addressing operations in a superscalar superpipelined processor
EP1785862A3 (en) * 2000-02-29 2007-08-15 Fujitsu Limited Method and apparatus for pipeline processing
JP2003029967A (ja) 2001-07-17 2003-01-31 Fujitsu Ltd マイクロプロセッサ
US7203817B2 (en) * 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US8606960B2 (en) * 2002-12-09 2013-12-10 Intel Corporation Method and apparatus for improving packet processing
US7914764B2 (en) 2003-02-28 2011-03-29 Exxonmobil Research And Engineering Company Hydrogen manufacture using pressure swing reforming
US7217303B2 (en) 2003-02-28 2007-05-15 Exxonmobil Research And Engineering Company Pressure swing reforming for fuel cell systems
US20060015866A1 (en) * 2004-07-16 2006-01-19 Ang Boon S System installer for a reconfigurable data center
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US8990547B2 (en) * 2005-08-23 2015-03-24 Hewlett-Packard Development Company, L.P. Systems and methods for re-ordering instructions
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9940264B2 (en) * 2014-10-10 2018-04-10 International Business Machines Corporation Load and store ordering for a strongly ordered simultaneous multithreading core
CN106537331B (zh) * 2015-06-19 2019-07-09 华为技术有限公司 指令处理方法及设备
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1273339B (de) * 1965-08-20 1968-07-18 Kaspar Klaus Lastfahrzeuganhaenger
GB1273339A (en) * 1969-09-24 1972-05-10 Philips Electronic Associated Data processing arrangement for processing waiting time commands
JPS57101957A (en) * 1980-12-17 1982-06-24 Hitachi Ltd Storage control device
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US5121488A (en) * 1986-06-12 1992-06-09 International Business Machines Corporation Sequence controller of an instruction processing unit for placing said unit in a ready, go, hold, or cancel state
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US5201057A (en) * 1987-01-22 1993-04-06 Uht Augustus K System for extracting low level concurrency from serial instruction streams
JPH0682320B2 (ja) * 1988-06-08 1994-10-19 日本電気株式会社 データ処理装置
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5119495A (en) * 1989-12-21 1992-06-02 Bull Hn Information Systems Inc. Minimizing hardware pipeline breaks using software scheduling techniques during compilation
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
JP3644959B2 (ja) * 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム

Also Published As

Publication number Publication date
DE4237417A1 (de) 1993-09-30
GB2265481A (en) 1993-09-29
US5475823A (en) 1995-12-12
GB9302148D0 (en) 1993-03-24
GB2265481B (en) 1995-12-20
DE4237417C2 (de) 1997-01-30

Similar Documents

Publication Publication Date Title
JPH0689174A (ja) コンピュータメモリシステム
JP3644959B2 (ja) マイクロプロセッサシステム
US5051885A (en) Data processing system for concurrent dispatch of instructions to multiple functional units
KR920006275B1 (ko) 데이타 처리 장치
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
US5297281A (en) Multiple sequence processor system
JP3553946B2 (ja) データ処理命令の実行
JPS6331813B2 (ja)
JPH10232826A (ja) コンピュータ・システム
US6725365B1 (en) Branching in a computer system
JPH05204709A (ja) プロセッサ
US4737908A (en) Buffer memory control system
EP0415351A2 (en) Data processor for processing instruction after conditional branch instruction at high speed
JP3263110B2 (ja) ストアマージ制御方式
US5349672A (en) Data processor having logical address memories and purge capabilities
JP2666737B2 (ja) トレースメモリ内蔵マイクロプロセッサおよびトレース方法
JPH07114509A (ja) メモリアクセス装置
JPS62264332A (ja) 命令先読み制御回路
JPH0279122A (ja) 浮動小数点演算機構
JPH0635787A (ja) ライトバッファ制御方式
JPS63311438A (ja) ストア命令不一致制御回路
JPH058459B2 (ja)
JPH0373021A (ja) マイクロコンピュータ
JPS59177653A (ja) 命令先取り制御方式