JPH04299737A - 計算機の作動方法及び計算機 - Google Patents

計算機の作動方法及び計算機

Info

Publication number
JPH04299737A
JPH04299737A JP3277896A JP27789691A JPH04299737A JP H04299737 A JPH04299737 A JP H04299737A JP 3277896 A JP3277896 A JP 3277896A JP 27789691 A JP27789691 A JP 27789691A JP H04299737 A JPH04299737 A JP H04299737A
Authority
JP
Japan
Prior art keywords
data
instruction
cache
register
computer
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.)
Granted
Application number
JP3277896A
Other languages
English (en)
Other versions
JP3095831B2 (ja
Inventor
Chi-Hung Chi
チ−ハン チ
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
Koninklijke Philips Electronics NV
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 Philips Gloeilampenfabrieken NV, Koninklijke Philips Electronics NV filed Critical Philips Gloeilampenfabrieken NV
Publication of JPH04299737A publication Critical patent/JPH04299737A/ja
Application granted granted Critical
Publication of JP3095831B2 publication Critical patent/JP3095831B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は電子計算機のシステムに
関するものである。特に、相対的に高速で動作する処理
装置と相対的に低速なメモリとの間でデータを効率よく
交換できる計算機アーキテクチャに関するものである。
【0002】
【従来の技術】集積回路技術及び計算機アーキテクチャ
が急速に発展した結果、相対的に高速で動作する処理ユ
ニットと相対的に低速で動作するメモリとの間で生ずる
“メモリ参照遅延ギャップ(memory refer
emce delay gap)”が増大している。1
00MIPSに亘る最大スループットの高性能プロセッ
サチィップが商品として市販されている。これらのプロ
セッサチィップを処理ユニットとして用いるマルチプロ
セッサシステムも実用化されている。 一方、これら高性能なシステムをそのピーク速度で実行
させるために必要なメモリ装置は、構成上複雑すぎ又は
高価になりすぎてしまう。この結果、現在の高性能な計
算機システムの性能上の課題は、メモリ装置の効率では
なく処理ユニットの速度となる。この課題を解決するも
のとして、米国特許第4811215 号公報には、デ
ータ用及び命令用のキャッシュメモリを有する計算機が
開示されている。
【0003】キャッシュメモリは、計算機システムの中
央処理装置と主記憶装置の間の高速バッファメモリであ
り、プロセッサからのメモリアクセスに応答し、アクセ
スされたデータがキャッシュメモリで使用可能になると
、主記憶装置を待機させることなく処理を実行する。 アクセスされるべきデータが使用可能な場合だけキャッ
シュ誤りが生じたことが表示され、このデータは主記憶
装置から先取りされ、その後このデータはキャッシュメ
モリに記憶される。この計算機システムの目的は、全体
として高速技術を用いる1次メモリの構築が高価になる
とこなく高速なデータ/命令アクセスを達成することに
ある。キャッシュメモリは、マイクロプロセッサチィッ
プからスーパーコンピュータの範囲に亘る多くの計算機
システムにおいて広く使用されている。プロセッサの処
理速度はメモリのアクセス時間よりも一層高速であるた
め、将来の計算システムにおいてキャッシュの有効性は
一層重要になる。
【0004】高速な処理ユニットと低速なメモリとの間
の大きなメモリ参照遅延ギャップを解消するため、前述
した文献には“キャッシュ先取”として、既知の技術が
開示されている。この既知の技術において、メモリ参照
は、実際に必要になる前にキャッシュメモリに入力され
る。この先取が正しい場合、長時間に亘るメモリ参照遅
延時間はプログラムの実行とオーバラップ(部分的に又
は全体的に)させることができる。従って、処理装置を
待機させてしまうキャッシュ誤りの発生回数を低減させ
ることができる。
【0005】キャッシュ先取メモリにおいて、活動停止
のサイクルはデータ及び命令をキャッシュに書込むため
に用いられる。最も一般的に用いられる従来のキャッシ
ュ先取技術として以下のものがある。 〔ONE BLOCK LOOK−AHEAD〕キャッ
シュブロックiが参照されこのブロックがキャッシュ中
にない場合(すなわち、キャッシュ誤りが生じたとき)
、キャッシュブロックi及びi+1を共にキャッシュ中
に先取りする。 〔CACHE BLOCK SIZE GREATER
 THAN ONE 〕1以上のブロックサイズのキャ
ッシュを用いる場合、先取りされるブロック中でただ1
個の項目の参照によってキャッシュ誤りが生じた際、1
以上の項目をキャッシュに先取りする。 〔ALWAYS PREFETCHING〕ブロックi
の各メモリについて参照する場合、ブロックi+1がす
でにキャッシュにない場合このブロックi+1をキャッ
シュに先取りする。
【0006】ここで、“キャッシュブロックサイズ”は
、キャッシュと主記憶装置との間の情報伝達の基本単位
として規定する。“基本ブロック”は、1個の入力点と
1個の出力点を有する順次コード命令として規定する。
【0007】これら全ての先取技術の基本原理は参照ブ
ロックの空間位置、すなわちプログラムの後で用いられ
る参照ブロックの位置は現在の参照ブロックの位置の近
傍にあるものとみなすことに基いている。これらの先取
技術は、メモリアクセスが順次の番号に従って参照を行
なう特性を有しているものとみなしている。命令キャッ
シュにおいて、これらの先取技術は良好な性能を達成し
ている。この理由は、命令の参照は一般的に順番に行な
われるためである。例えば、基本ブロック内において命
令は常に順序に従って行なわれる。通常、このキャッシ
ュヒット率は改善され、バストラフィックは命令キャッ
シュ先取において増大する。ここで、キャッシュヒット
率は、プログラムユニットからのデータアイテム要求が
キャッシュメモリで発見される可能性を意味する。
【0008】
【発明が解決しようとする課題】しかしながら、順次先
取スキムはデータキャッシュの設計においては有効性が
ない。この理由は、これらの技術の全ては原理的に命令
キャッシュ用に設計されており、これらの基本原理は命
令の参照動作に基いているからである。データ参照動作
はどちらかというとランダムな参照動作であり、順次動
作である命令参照動作とは全く相異している。従って、
順次参照用に設計されている順次先取スキムをデータキ
ャッシュに適用することはほとんど有効性がないもので
ある。先取りされたデータが参照される機会は、命令キ
ャッシュにおいてよりもデータキャッシュにおける方が
一層低い。このため、参照されなかったデータはキャッ
シュに対して有害なものとなり、有用なキャッシュ空間
を不必要に占有することにより並びにバストラフィック
を増大させることによりシステムの全体性能を低下させ
てしまう。バスの帯域幅が限定されたリゾース(res
ource)のシステムにおいて、バス接続(すなわち
、データバスを使用しようとする要求がより多くある状
態)性能が一層悪化してしまう。参照されないデータを
先取することによりバスラインがビジーな状態になると
、バスを用いる他の要求(例えば、命令先取)の処理が
遅延してしまう。高性能プロセッサチィップの場合処理
速度が極めて高速であるが、バスの帯域幅が物理的制約
例えばチィップのピンの全数により制限されているため
、上述した状態がしばしば生じてしまう。さらに、デー
タキャッシュの空間には制限があるため参照されようと
しているキャッシュ中のデータが非参照先取データで置
換されてしまうような不都合が生じ、この結果キャッシ
ュ誤りが生じてしまう。従って、データをいかにして参
照するかについて一層有効な思想が得られない限り、キ
ャッシュデータ先取を有効に活用することができなくな
ってしまう。
【0009】上述した米国特許公報に記載されている別
の技術として、ロードされたデータが実際に到達する前
にロード命令の後プロセッサの実行を続行する技術があ
る。この技術を用いて実行速度を増大させるため、コン
パイラを用いてプログラムのLOAD命令をスケジュー
リンクすることによりプログラムの実行からメモリアク
セス時間を潜在させる試みがなされている。あるRIS
C (Reduced Instruction Se
tComputir) の設計思想において、コンパイ
ラは、データiのLOAD命令を適切にスケジューリン
クし、iについてのロードとデータiの最初の使用との
間の時間を少なくともメモリからデータiを先取りする
ために必要な時よりも長くなるように設定している。理
想状態において、全てのLOAD命令はこのようにして
スケジュールすることができ、プログラムの実行におけ
る全てのメモリ参照遅延時間を潜在化することができる
。(データキャッシュとは異なり)コンパイラの助けに
よりデータが必要になる前にデータはレジスタに先取さ
れ、データキャッシュ及びその先取スムキは共に不要に
なるようになる。しかしながら、以下の理由により、こ
れは実際には真実ではない。
【0010】第1に、たとえコンパイラが、データiに
ついてのLOADとデータiの最初の使用との間の時間
がデータiについてのメモリアクセス時間よりも長くな
るように全てのLOAD命令をスケジュールすることが
できても、バストラフィックの問題は依然として残存す
る。システムに有用なレジスタの数が制限されているた
め、レジスタを再使用してその後直ちに参照されるデー
タ値だけをレジスタに記憶する必要がある。すなわち、
データが必要になったときにデータを主記憶装置から先
取りする必要がある。良好なレジスタ割当スキムを用い
ればメモリアクセス遅延時間をプログラム実行時間とオ
ーバラップさせることができるが、バストラフィックの
大部分を除去することはできない。レジスタファイルを
、現在の実行点からはるかに離れて参照されるデータに
対してバックアップメモリとして作用させるには小さす
ぎてしまうので、バストラフィックを低減させるために
はデータキャッシュが依然として必要である。
【0011】第2に、LOAD命令のメモリアクセス遅
延時間をプログラムの実行とオーバラップさせることが
常に可能であるとは限らない。限られた数のレジスタを
再使用すること及びデータ中に依存性があることから、
命令のスケジューリングについて重要な制約がある。レ
ジスタ Ri についてのLOAD命令はレジスタ R
i の古い値を用いる命令を超えて移動させることがで
きない。つまり、レジスタ Ri についてのLOAD
命令とレジスタ Ri の最初の使用との間のギャップ
の大きさに制限があり、この制限はメモリアクセス時間
よりも常に大きいとは限らない。プロセスサイクル時間
に対してメモリアクセス時間が増大するため、メモリア
クセス時間がプログラムの実行から完全にかくれる機会
は減少する。しかしながら、この課題はキャッシュ管理
には存在しない。レジスタ Ri に入力されようとし
ているデータのキャッシュへの先取はレジスタ Ri 
のアクセスと平行して行なうことができる。従って、メ
モリアクセスによって生じるプロセッサのアイドル時間
に対してデータの先取は依然として有用である。
【0012】第3に、LOAD命令を基本ブロックを超
えて移動させることにより、図1のプログラムの実行に
おいて正確さに問題が生ずるおそれがある。命令をある
基本ブロック Bi から別の基本ブロック Bj に
移動させる場合、ブロック Bi ではなく Bj だ
けを実行するプログラムの制御経路の実行に誤った解答
が生じてしまう。一方、このような問題はキャッシュ管
理においては生じない。キャッシュ管理スキムがあるプ
ログラムの実行経路に基いてデータの先取りを行ない実
際のプログラムの実行は別の経路に基いて行なう場合、
プログラムの実行の正確さに問題はなく、機械の性能が
影響を受けるおそれがある。
【0013】第4に、プロセッサの命令組が限定されて
いるため、データiについてのLOAD命令をデータi
についての最初の使用から分離することは常に可能なも
のではない。例えば、CISC(Complex In
structions Set Compuuter)
 の設計思想において、あるアリスメティック操作すな
わち論理操作のオペランドはメモリ直接アクセス型のも
のとすることができる。この結果、メモリオペランドア
クセス時間をプログラムの実行とオーバラップさせるコ
ンパイラ使用スケジューリンクは不可能になる。
【0014】本発明の目的は、後で用いられるデータを
先取りするデータキャッシュ先取スキムを提供すること
にある。
【0015】本発明の別の目的は、明白なキャッシュ制
御命令を用いることなく且つキャッシュ誤りがあっても
待機することなく自動的に初期化され得るデータキャッ
シュ先取スキムを提供することにある。
【0016】本発明の別の目的は、平均データキャッシ
ュ誤りを減少させると共に、キャッシュ誤りを回避でき
ない場合でもメモリアクセス遅延時間をプログラムの実
行にオーバラップさせることにある。
【0017】本発明の別の目的は、キャッシュ中に存在
する期間中参照されないデータの先取を回避させること
にある。
【0018】
【課題を解決するための手段】上記目的を達成するため
、本発明は、処理ユニットと主記憶装置を有するデジタ
ル計算機を作動させるに当たり、処理ユニット命令を命
令キャッシュに先取りさせ、先取りされた命令を前記命
令キャッシュで復調し、この命令によりいかなるデータ
が参照されるかを決定し、前記命令キャッシュで復調さ
れた先取命令に基いて前記主記憶装置からデータを先取
りすることを特徴とする。
【0019】新しい命令キャッシュの設計(コンパイラ
駆動キャッシュ制御やチィップ命令キャッシュのマルチ
バッファ)並びにブランチターゲット述語技術(bra
nchtarget prediction tech
neque)の開発に伴ない、命令キャッシュの先取は
極めて正確に、且つ参照されるよりも一層早く実行する
ことができる。この結果、後で参照される可能性の高い
先取りされた命令からデータがいかにして参照されるか
についてのヒントが取り出される可能性が生ずる。すな
わち、キャッシュ中の命令は実行される高性能が高く、
命令の実行によって参照されるデータが使用される可能
性も高い。この情報はデータキャッシュ先取については
極めて重要である。この理由は、ブロック先取や常時先
取のような単純な推量機構よりも一層良好なデータ先取
参照動作が実現されるからである。 尚、上記ブロック先取や常時先取は順次参照の場合だけ
良好な作用を発揮するにすぎない。
【0020】この技術は、“現行窓データキャッシュ先
取(current window data cac
heprefetching)”又は“CWD 先取”
と称することにする。
【0021】“インテリジェント”命令キャッシュ先取
スキム(例えば、欧州特許出願第91201135.0
号公報に記載されているスキム)を用いて次の数サイク
ルで実行されることが予期される命令を高精度に先取す
る。特別なハードウェアを用いて、これら先取された命
令をプリデコードして先取された命令によって参照され
る全ての(数個の)データを見い出す。先取りされた命
令に関連する予期されたデータは順次データキャッシュ
に先取りされる。従って、データがキャッシュ中にすで
にない場合このデータは命令が実際に実行される前にキ
ャッシュに入力される。
【0022】従って、プロセッサが命令を実行するため
にデータを先取りしたとき、ほとんど常時キャッシュヒ
ットが存在する。この理由は、このデータは直前にキャ
ッシュに先取りされているからである。データキャッシ
ュを構築することにより、データがキャッシュに先取り
された後変更されても、このデータは確実に一致する。 例えば命令流中の予期しないブランチにより生ずる適切
なデータの先取の失敗によりキャッシュ誤りが生ずるお
それがある。このキャッシュ誤りは正しい命令の実行を
犠牲にしてではなくデータ先取の遅延を犠牲にしてデー
タキャッシュにより処理される。
【0023】次の数サイクルで実行される予定の命令が
命令キャッシュの先取ユニットで決定されると、この命
令はキャッシュ制御ユニットに送出され、ここでプリデ
コードされてデータのアドレスが決定される。CWD 
先取スキムにおいて、参照すべきデータのアドレスモー
ドは3個のカテゴリーに分類される。IMMEDIAT
E ADDRESSING MODE このアドレスモ
ードにおいて、オペランドの値は命令中で指定される。 このアドレスモードのもとではオペランドアドレスはな
い。DIRECT ADDRESSING MODEこ
のアドレスモードにおいて、オペランドのアドレスは命
令中に指定される。非自己変更命令であるとすると、オ
ペランドのアドレスはプログラムの実行中に変更されな
い。INDIRECTING  ADDRESSING
 MODE このアドレスモードにおいて、オペランド
のアドレスはあるレジスタ( 例えば、インデックス又
は基準化されたレジスタ) 及び/又はメモリ位置の関
数となる。レジスタの値はプログラムの実行中に変更さ
れ得るので、この種のデータのオペランドアドレスは固
定されない。通常、アドレスの実行に際し、オペランド
アドレスは種々のメモリ位置を指示する。
【0024】データ参照におけるこれら種類のアドレス
モードの各々は、CWD 先取スキムにおけるデータ参
照用のアドレス計算するためのハードウエア( 先取さ
れた命令をプリデコードするためのハードウエア以外の
もの)に対して種々の要求を有している。
【0025】本発明による計算機を作動させる方法の一
実施例においては、さらに、前記命令キャッシュで先取
りされた命令がデータを直接参照されるものかを決定し
、データを直接参照させている場合前記主記憶装置にデ
ータ要求を送出する工程を有する。
【0026】別の実施例においては、さらに、前記命令
キャッシュで先取りされた命令がデータを間接的に参照
されるものかを前記処理ユニットのレジスタに基いて決
定し、処理ユニットの各レジスタに対して、レジスタが
使用され得る前に通過すべきプロセッササイクルの数の
計数を続行して正確な間接アドレス計算を行なう工程を
有する。
【0027】このように構成すると、間接的なデータ参
照でさえも先取りすることができ、しかも命令の実行が
順次行なわれる限りキャッシュ誤りはほとんど全て回避
される。
【0028】本発明による計算機を作動させる方法の別
の実施例においては、さらに、各先取り要求が実行され
得る前に通過すべきプロセスサイクルの数を表示するカ
ウンタと間連して、データ先取要求をキューメモリに保
持する工程を有する。このように構成すれば、先取は復
調命令と同期しないで行なうことができる。さらに、本
発明による方法の実施例においては、前記先取キューの
データ先取要求に関連するカウンタが、データを要求す
る先取された命令によって間接アドレス計算に用いられ
るレジスタ用に維持されているカウンタフィールドの最
上位に最初にセットされる。
【0029】本発明による方法を実施するため、本発明
による計算機は、処理ユニットと、主記憶装置と、前記
主記憶装置から処理ユニットに対する命令を先取及び保
持するように構成した命令キャッシュ手段と、前記命令
キャッシュ手段に保持された命令においてデータの参照
が行なわれることを決定すると共に、この決定に際して
データの先取を発生させて前記データを取り込むデータ
キャッシュ制御手段と、前記主記憶装置に対して表示す
るものとしてキャッシュされたデータを保持するデータ
キャッシュ手段とを具えることを特徴とする。このよう
に構成することにより、プロセッサは別の操作を行なう
ことなく有効なデータキャッシングを達成することがで
きる。
【0030】本発明による計算機の一実施例は、前記デ
ータキャッシュ制御手段が、データ先取の要求を先取キ
ューにバッファリングするキュー手段を具える。この場
合、回線の競合を緩和するためデータ先取を遅延させる
ことができる。
【0031】緊急アドレスモードでデータ参照を行なう
場合、オペランドアドレスがないため、付加的なハード
ウエアは不要である。直接アドレスモードでデータ参照
を行なう場合も同様に付加的なハードウエアは不要であ
る。この理由は、オペランドのアドレスは命令で特定さ
れ、CWD 先取スキムにおいてはアドレス計算が不要
になるからである。
【0032】本発明による計算機の別の実施例は、前記
データキャッシュ制御手段が、命令が、前記処理ユニッ
トに具えられている1又はそれ以上のレジスタに保持さ
れている情報を用いる間接アドレスモードでデータの参
照を行なうかを決定すると共に、この際前記レジスタに
保持されている情報からデータの参照を決定するように
構成されていることを特徴とする。この場合、間接アド
レスシングを用いるデータ参照の多くは、キャッシュ誤
りの発生から阻止される。先取の後レジスタが変更され
た場合だけ、プロセッサがデータをアクセスした時プロ
セッサはデータキャッシュ手段においてキャッシュ誤り
を発生することができる。
【0033】本発明による計算機の実施例において、各
レジスタは2個のアクセスポートと、処理ユニットをア
クセスさせる第1ポートと、データキャッシュ制御手段
をアクセスする第2ポートとを有する。
【0034】間接アドレスモードでデータの参照を行な
う場合、アドレスのオペランドはレジスタ例えばベース
レジスタやインデックスレジスタのようなレジスタの値
の関数となるから、CWD 先取スキムはアドレス計算
においてレジスタをアクセスする必要がある。この結果
、処理ユニットは、データキャッシュ制御ユニットが予
期したデータのアドレス計算するためレジスタファイル
を読出そうとすると同時にレジスタファイルをアクセス
する必要があるため、マルチーリード−ポート型レジス
タファイルが有用である。さらに、読出要求と書込要求
とがレジスタに同時に入力した場合、これら2個の要求
を順次処理する必要がある。はじめに書込要求を作動さ
せその次に読出要求を作動させる。アドレス計算を実行
する必要があるため、データキャッシュ制御ユニトにお
いては相当な計算容量が必要である。先取りされた命令
I中の参照データのアドレス Ai が見い出されると
、位置 Ai の内容に対するデータ先取要求は直ちに
送出されるので、データ先取を実行するためのより長い
時間がある。 一方、メモリ位置 Ai の内容を先取することにより
得られたデータが命令Iの実行中に実際に参照されるデ
ータでない場合がある。
【0035】データの参照に間接アドレスモードを用い
る場合、先取りされた命令I中の参照データのアドレス
 Ai の計算はインデックスの値及びレジスタ Ri
 −−−− Rn の値に基いて行なう。データを先取
りするための十分な時間を確実に得るため、先取要求は
数個の命令の前に生じさせる必要がある。すなわち、メ
モリ位置A i の内容についての先取要求の発生と命
令Iの実行との間にある時間ギャップがある。一方、こ
の時間ギャップ中に、レジスタ R1 −−−− Rn
 の値が変更されない保証はない。 アドレス Ai の計算に用いた全てのレジスタの値が
変更されない場合、先取りされたデータは命令Iの実行
に必要なデータとなる。一方、アドレス Ai の計算
に用いたレジスタのうちの数個は時間ギャップ中に変更
することも可能である。この場合、先取されたデータは
命令Iの実行に必要なデータではなくなる。この理由は
、レジスタ R1 −−−− Rn の新しい値はデー
タのアドレス計算に用いられ、レジスタ R1 −−−
− Rn の新しい値は位置 Ai の実際の参照デー
タのアドレス計算に用いられるためである。
【0036】上記課題を解消する実施例は、第1のカウ
ンタ手段が前記各レジスタとそれぞれ関連し、現在の処
理ユニット命令と将来の処理ユニットによる各レジスタ
の内容変更との間の処理サイクルの各計数を持続する。
【0037】前記先取キューの先取要求と関連する第2
のカウンタ手段を具え、データ先取りを正確に実行する
前に通過すべき処理サイクルの数を表示するように構成
した本発明による計算機により、間接アドレシングの課
題は解決される。
【0038】
【実施例】図2は本発明の正確な実施例を示す。計算機
の処理ユニット10はレジスタファイル20を含み、こ
のレジスタファイルはレジスタセル R1 −−−− 
Rn を有する。 レジスタファイル20の各レジスタセルは2個のフィー
ルド、すなわちデータフィールドとカウンタフィールド
を有する。一般的なように、各レジスタセルのデータフ
ィールドはこのレジスタに記憶されている値を含んでい
る。アドレス計算においてデータ先取要求がレジスタを
用いる必要がある場合、レジスタのカウンタフィールド
を用いて送出する前にデータ先取要求を待機させる必要
のあるサイクルの数を表示する。カウンタフィールドは
キャッシュ制御ユニット30により更新すなわちセット
する。先取りされた命令中にレジスタに対する書込操作
がある場合には必ずカウンタフィールドを Tahea
d にセットする。ここで、Tahead は、CWD
 先取スキムが先取りする命令の数である。すなわち、
この Tahead は、 Tahed個のサイクル後
ににだけ新しいレジスタの値が有用になることを表示す
る。レジスタのカウンタフィールド中の零値は、データ
の先取に必要なアドレス計算のために使用されるために
用意されることを意味する。各命令が実行された後、レ
ジスタファイルのレジスタの各々のカウンタフィールド
は、このカウンタフィールドを1だけデクリメントする
ことにより(零でない場合)更新される必要がある。先
取キュー40を用いて、送出されるため待機ししている
データ先取要求をホールドする。この理由は、アドレス
計算に必要なレジスタの値が用意されず又はバスライン
が使用中のためである。アドレス計算に必要なレジスタ
の値が用意されていないため、データ先取要求が先取キ
ュー40に入力されると、先取キューのカウンタフィー
ルドはアドレス計算に用いられるレジスタのカウンタフ
ィールドの値の最大値に設定される。これにより、アド
レスするまで先取要求を待機させる時間が再計算され得
ることを意味する。一旦先取キューの先取要求のカウン
タが零になると、その先取りアドレスが再計算されこの
先取要求が送出されることになる。各命令が実行された
後、先取キューの各先取要求のカウンタフィールドは1
だけデクリメントすることにより更新される必要があり
(零でない場合)、レジスタのカウンタフィールドにつ
いても同様な操作を行なう。
【0039】ブランチが形成される場合必ず全てのレジ
スタのカウンタフィールドがリセットされ、ブランチの
前の先取キューに配置されている全ての先取要求が除去
される。すなわち、プログラムの実行がブランチに後続
する経路に沿って続行される場合、これら全てのカウン
タフィールド及び先取要求は将来のデータ基準に関する
正しいヒントを示すにすぎないためである。従って、ブ
ランチが一旦形成されると、これら全てのヒントは不要
になり除去する必要がある。
【0040】CWD 先取操作の第1実施例の制御機構
は以下のように要約される。次のT ahead 番目
のサイクルで実行される予定の命令Iは、命令キャッシ
ュ50(命令キャッシュ先取ヒントがある場合) 又は
主記憶装置60 (命令キャッシュ先取誤りがある場合
) のいずれかからキャッシュ制御ユニットに送出され
る。
【0041】先取りされた命令Iはキャッシュ制御ユニ
ット30においてプリデコードされ、更新されようとし
ているレジスタ及び命令Iが実行される場合に参照され
るべきデータを検索する。
【0042】先取された命令Iの実行により更新されよ
うとしているレジスタRi がある場合、レジスタ R
i のカウンタフィールドを Tahead に設定す
る。ここで、 Tahead は、CWD 先取スキム
が先取りするサイクルの数である。先取りされた命令I
によって参照されるデータがある場合、データ先取要求
が発生する。予期された参照すべきデータが最も近いア
ドレスモードの場合、先取要求は送出しない。予期され
た参照データ Di が直接的なアドレスモードの場合
、データキャッシュをチェックして参照データ Di 
がキャッシュ60にすでにあるか否かを確認する。参照
データ Di について先取キャッシュ誤りがある場合
だけDi の先取り要求を送出する。予期した参照デー
タ Di が間接的なアドレスモードの場合並びに D
i のアドレス計算に用いた全てのレジスタのカウンタ
フィールドが零の場合、データキャッシュ60をチェッ
クして参照データ Di がキャッシュ60にすでにあ
るか否かを調べる。参照データ Di がすでにキャッ
シュ60に存在する場合、参照データ Di について
の先取要求が打ち切られる。一方、キャッシュ中に存在
しない場合、参照データ Di についての先取要求は
、バスラインがフリーになりしだい主記憶装置に送出さ
れる。
【0043】先取りされた命令Iに係る参照データ D
i が存在するか又は Di のアドレス計算に用いた
レジスタのカウンタフィールドの数個が零でない場合、
 Di についての先取要求は先取キューに配置され、
そのカウンタフィールドは Di のアドレス計算に用
いたレジスタの非零値である最大値にセットする。
【0044】各命令の後、レジスタファイル20及び先
取キュー40の全てのカウンタは1だけデクリメントす
る(カウンタがすでに零になっている場合)。先取キュ
ーにおける先取要求のカウンタフィールドが零の場合、
その有効アドレスは再計算され、バスラインがフリーに
なりしだい、新しく計算されたアドレスを用いてデータ
先取要求を送出する。
【0045】データ先取の進行中に、システムの機能的
ユニットに対してバスラインを使用する新たな要求があ
る場合において、以下の状況が生じた場合にはデータの
先取は打ち切られる。 1.新しい要求が命令キャッシュ誤りの場合。 2.新しい要求が命令データキャッシュ誤りであり且つ
この新しい要求が現行のデータ先取要求と同一でない場
合 (制御ユニット30はどのデータ先取要求が供給さ
れているかを考慮し、2個の要求を比較してこれらの要
求が同一か否かを確認する)。 3.トラップ又はマスク不可能な割込のような一層高い
割込優先を有する他の要求が生じた場合。 ブランチが生ずると、ブランチ命令が実行される前に先
取キューに存在する全ての先取要求は先取キューから除
去される。
【0046】図3はCWD 先取機構を有する計算機の
簡単化した実施例を示す。図3の実施例の図2に示す実
施例に勝る主要な利点は、制御機構及びハードウエアが
一層簡単になることである。図2と比較して、図3の実
施例の主要な特徴は、レジスタが更新されようとする時
及び先取要求が送出され得る時にブックキーピング操作
が全くないことである。図3の実施例は、先取られた命
令Iに参照データがあるか否かを確認しようとするだけ
である。命令中に参照データがある場合、必要な場合に
はそのアドレス Ai はレジスタファイル中のレジス
タの現在の値を用いて直ちに計算される。次に、キャシ
ュがチェックされてアドレス Ai の内容がすでにキ
ャッシュ中に存在するか否かを確認する。先取誤りがあ
る場合、アドレス Ai についての先取要求は先取キ
ューに入力されバスラインがフリーになると送出される
。図3の実施例についての制御機構は以下のように要約
することができる。
【0047】次の Tahead 番目のサイクルで実
行される予定の命令Iは、命令キャッシュ(命令キャッ
シュ先取ヒットがある場合)又は主記憶装置(命令キャ
ッシュ先取誤りがある場合)からデータキャッシュ制御
ユニットに送出する。ここで、 Tahead はCW
D 先取スキムが先取りするサイクルの番号である。
【0048】命令Iはキャッシュ制御ユニット30にお
いてプリデコードされ、命令Iに係る参照データ Di
 のアドレスは、必要な場合レジスタファイル20のあ
るレジスタの現在値を用いて検索する。命令Iに参照す
べきデータ Di がある場合、データキャッシュ60
をチェックしてデータ Di が存在するか否かを確認
する。データ Di がすでにデータキャッシュ60に
存在する場合、先取要求は無視する。一方、データ D
i がキャッシュメモリに存在しない場合、データ D
i についての先取要求を先取キュー40に入力させる
。データ Di の先取は、バスラインがフリーになっ
たとき開始する。
【0049】データの先取操作の進行中に、システムの
機能しているユニットに対してバスラインを使用する新
たな要求がある場合、以下の状態が生じたときデータの
先取を打ち切る。 1.新しい要求が命令キャッシュ誤りの場合。 2.新しい要求がデータキャッシュ誤りであり、この新
しい要求が現在のデータ先取要求と同一でない場合。 3.トラップ又はマスク不可能な割込のような高い割込
優先を有する他の要求がシステムに生じた場合。 ブランチが生ずると、ブランチの実行前に先取キューに
ある全ての先取要求は先取キューから除去される。
【0050】図3の実施例において、レジスタが更新さ
れようとしているとき並びに先取要求を送出することが
できるときにおいて全てのブックキーピングが存在しな
いから、命令Iにより先取されたデータは、命令Iの実
行中に実際に参照される同一のデータではない。しかし
ながら、この状況はさほど悪いものではない。データD
i の先取りとデータ Di の実際の参照との間の時
間的ギャップ Tahead は数個の命令にすぎない
からである。この正しくないデータ先取の機会はさほど
高くない。このコンパィラは、CWD 先取スキムのア
ドレス計算に用いたレジスタを更新させる命令を移動さ
せて一層早く発生させることにより、この状態を回避し
続けることもできる。さらに、データ参照ポインタは通
常一定時間で更新される。従って、アドレス計算にレジ
スタの古い値を用いてCWD スキムのデータ先取を行
なう場合、生ずる参照アドレスはすでにデータキャッシ
ュに先取りされているデータを指示しなければならない
。この場合、先取は何んら送出されずデータキャッシュ
混乱も全く生じない。
【図面の簡単な説明】
【図1】図1は従来のレジスタプレローデング技術によ
る課題を説明するための線図である。
【図2】図2は本発明の正確な実施例を示すブロック図
である。
【図3】図3は一層簡単化した本発明の実施例を示すブ
ロック図である。
【符号の説明】
10  処理ユニット 20  レジスタファイル 30  制御ユニット 40  先取キュー 50  命令キャッシュ 60  主記憶装置

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】  処理ユニットと主記憶装置を有するデ
    ジタル計算機を作動させるに当たり、処理ユニット命令
    を命令キャッシュに先取りさせ、先取りされた命令を前
    記命令キャッシュで復調し、この命令によりいかなるデ
    ータが参照されるかを決定し、前記命令キャッシュで復
    調された先取命令に基いて前記主記憶装置からデータを
    先取りすることを特徴とする計算機の作動方法。
  2. 【請求項2】  請求項1に記載の計算機の作動方法に
    おいて、さらに、前記命令キャッシュで先取りされた命
    令がデータを直接参照されるものかを決定し、データを
    直接参照させている場合前記主記憶装置にデータ要求を
    送出する工程を有することを特徴とする計算機の作動方
    法。
  3. 【請求項3】  請求項1又は2に記載の計算機の作動
    方法において、さらに、前記命令キャッシュで先取りさ
    れた命令がデータを間接的に参照されるものかを前記処
    理ユニットのレジスタに基いて決定し、処理ユニットの
    各レジスタに対して、レジスタが使用され得る前に通過
    すべきプロセッササイクルの数の計数を続行して正確な
    間接アドレス計算を行なう工程を有することを特徴とす
    る計算機の作動方法。
  4. 【請求項4】  請求項3に記載の計算機の作動方法に
    おいて、さらに、各先取り要求が実行され得る前に通過
    すべきプロセスサイクルの数を表示するカウンタと間連
    して、データ先取要求をキューメモリに保持する工程を
    有することを特徴とする計算機の作動方法。
  5. 【請求項5】  請求項4に記載の計算機の作動方法に
    おいて、前記先取キューのデータ先取要求に関連するカ
    ウンタが、データを要求する先取された命令によって間
    接アドレス計算に用いられるレジスタ用に維持されてい
    るカウンタフィールドの最上位に最初にセットされるこ
    とを特徴とする計算機の作動方法。
  6. 【請求項6】  処理ユニットと、主記憶装置と、前記
    主記憶装置から処理ユニットに対する命令を先取及び保
    持するように構成した命令キャッシュ手段と、前記命令
    キャッシュ手段に保持された命令においてデータの参照
    が行なわれることを決定すると共に、この決定に際して
    データの先取を発生させて前記データを取り込むデータ
    キャッシュ制御手段と、前記主記憶装置に対して表示す
    るものとしてキャッシュされたデータを保持するデータ
    キャッシュ手段とを具えることを特徴とする計算機。
  7. 【請求項7】  請求項6に記載の計算機において、前
    記データキャッシュ制御手段を、命令に対して順次アド
    レスで前記決定を実行するように前記処理ユニットのプ
    ログラムカウンタの後段に配置したことを特徴とする計
    算機。
  8. 【請求項8】  請求項7に記載の計算機において、前
    記データキャッシュ制御手段が、データ先取の要求を先
    取キューにバッファリングするキュー手段を具えること
    を特徴とする計算機。
  9. 【請求項9】  請求項8に記載の計算機において、前
    記データ先取を送出し、又はデータ参照が間接アドレス
    モードの場合前記データ先取要求を先取キューに入力さ
    せる手段を具えることを特徴とする計算機。
  10. 【請求項10】  請求項6、7、8又は9に記載の計
    算機において前記データキャッシュ制御手段が、命令が
    、前記処理ユニットに具えられている1又はそれ以上の
    レジスタに保持されている情報を用いる間接アドレスモ
    ードでデータの参照を行なうかを決定すると共に、この
    際前記レジスタに保持されている情報からデータの参照
    を決定するように構成されていることを特徴とする計算
    機。
  11. 【請求項11】  請求項10に記載の計算機において
    、前記各レジスタが、2個のアクセスポートと、処理ユ
    ニットをアクセスさせる第1ポートと、データキャッシ
    ュ制御手段をアクセスさせる第2ポートとを有すること
    を特徴とする計算機。
  12. 【請求項12】  請求項10又は11に記載の計算機
    において、第1のカウンタ手段が前記各レジスタとそれ
    ぞれ関連し、現在の処理ユニット命令と将来の処理ユニ
    ットによる各レジスタの内容変更との間の処理サイクル
    の各計数を持続することを特徴とする計算機。
  13. 【請求項13】  請求項12及び8に記載の計算機に
    おいて、前記先取キューの先取要求と関連する第2のカ
    ウンタ手段を具え、データ先取りを正確に実行する前に
    通過すべき処理サイクルの数を表示するように構成した
    ことを特徴とする計算機。
  14. 【請求項14】  請求項13に記載の計算機において
    、前記数を、データの参照を決定するために用いた1又
    はそれ以上のレジスタと関連する各計数値の最高値に初
    期設定する手段を具えることを特徴とする計算機。
JP03277896A 1990-10-24 1991-10-24 計算機の作動方法及び計算機 Expired - Fee Related JP3095831B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60521290A 1990-10-24 1990-10-24
US07/605212 1990-10-24

Publications (2)

Publication Number Publication Date
JPH04299737A true JPH04299737A (ja) 1992-10-22
JP3095831B2 JP3095831B2 (ja) 2000-10-10

Family

ID=24422692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03277896A Expired - Fee Related JP3095831B2 (ja) 1990-10-24 1991-10-24 計算機の作動方法及び計算機

Country Status (4)

Country Link
EP (1) EP0482706B1 (ja)
JP (1) JP3095831B2 (ja)
KR (1) KR100262234B1 (ja)
DE (1) DE69130726T2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134898B1 (ko) * 2011-12-28 2012-04-17 (주)대양이티에스 건조기용 원적외선 히터

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4371927A (en) * 1977-11-22 1983-02-01 Honeywell Information Systems Inc. Data processing system programmable pre-read capability
EP0205193B1 (en) * 1985-06-17 1996-10-23 Nec Corporation Information processing system comprising a register renewal waiting control circuit with renewal register number registering means
GB8817912D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus

Also Published As

Publication number Publication date
EP0482706A2 (en) 1992-04-29
DE69130726D1 (de) 1999-02-18
JP3095831B2 (ja) 2000-10-10
KR100262234B1 (ko) 2000-07-15
DE69130726T2 (de) 1999-07-22
EP0482706B1 (en) 1999-01-07
KR920008588A (ko) 1992-05-28
EP0482706A3 (en) 1993-02-10

Similar Documents

Publication Publication Date Title
JP3425158B2 (ja) マルチバッファデータキャッシュを具えているコンピュータシステム
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
US5694568A (en) Prefetch system applicable to complex memory access schemes
USRE45086E1 (en) Method and apparatus for prefetching recursive data structures
US5473764A (en) Multilevel instruction cache
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
JP4142141B2 (ja) コンピュータ・システム
US6430657B1 (en) Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
EP1421490B1 (en) Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
US5784711A (en) Data cache prefetching under control of instruction cache
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US6643755B2 (en) Cyclically sequential memory prefetch
US20090106499A1 (en) Processor with prefetch function
EP0966710A1 (en) Penalty-based cache storage and replacement techniques
EP0582635A1 (en) Method for increasing the speed of data processing in a computer system
JPS63150731A (ja) コンピュータシステムおよびその実行方法
WO2004059472A2 (en) Method and apparatus for generating prefetches
WO2005088455A2 (en) Cache memory prefetcher
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
EP1030243B1 (en) Optimized hardware cleaning function for virtual index virtual tag data cache
US20030088636A1 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
WO2001037080A2 (en) Method and apparatus for performing prefetching at the critical section level
Oren A Survey of prefetching techniques
US20040168154A1 (en) Software processing method and software processing system

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees