JP3290372B2 - 最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム - Google Patents

最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム

Info

Publication number
JP3290372B2
JP3290372B2 JP05361997A JP5361997A JP3290372B2 JP 3290372 B2 JP3290372 B2 JP 3290372B2 JP 05361997 A JP05361997 A JP 05361997A JP 5361997 A JP5361997 A JP 5361997A JP 3290372 B2 JP3290372 B2 JP 3290372B2
Authority
JP
Japan
Prior art keywords
instruction
storage
level
miss
cache
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 - Fee Related
Application number
JP05361997A
Other languages
English (en)
Other versions
JPH1091455A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH1091455A publication Critical patent/JPH1091455A/ja
Application granted granted Critical
Publication of JP3290372B2 publication Critical patent/JP3290372B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ処理
装置に関し、より詳細には、コンピュータ処理装置の階
層記憶からの命令およびデータの取り出しに関連する遅
延のコンパイラ支援容認(compiler-assisted toleranc
e)に関する。
【0002】
【従来の技術】プロセッサの性能は1年で約50%向上
しているが、記憶アクセス時間は1年でわずか5〜10
%しか改善されていない。その結果、プロセッサ・サイ
クルのキャッシュ・ミスの待ち時間が急激に増大してい
る。加えて、より高い程度の命令レベル並列性をサポー
トするのに要するデータ・バンド幅の増大により、キャ
ッシュ・ミス待ち時間は、プロセッサ全体の性能のより
大きな割合を占めようとしている。って、キャッシュ
・ミス待ち時間を減らし、容認できるように種々の試み
が成されてきた。
【0003】現在のマイクロプロセッサのいくつか、例
えばIBM社によって商標「POWERPC」の下で販売され
ているものや、Hewlett-Packard 社によって商標「PA-R
ISC」の下で販売されているものは、キャッシュ・ブロ
ックの先取りに対するサポートを提供している。このサ
ポートは通常、識別されたラインをその最初の使用の前
にキャッシュの中に取り込もうとする(先取りしようと
する)コンパイラ挿入タッチ命令の形態である。
て、データ・キャッシュのタッチ命令は、例外の場合に
誤り処理プログラムを呼び出させないことを除き、ロー
ド命令に類似している。このアプローチが、現在のプロ
セッサにおける比較的大きなキャッシュと相まって、キ
ャッシュ・ミスを減らすのに様々な程度に効果的であっ
た。それでもなお、多くのアプリケーション、特に大き
なデータ・セットを伴う商業的アプリケーションの場合
に、キャッシュ・ミスが今も浪費サイクルの大部分を占
めている。先取りの潜在的な性能の利点は、以下の要
因のために限られている。まず、キャッシュ・ミス待ち
時間(プロセッサのクロックサイクル数で表される
が増すにつれ、先取りがますます困難になり、より非効
果的になる。先取りを開始するには、命令キャッシュお
よび/またはデータ・キャッシュのラインに関するアド
レスが、タッチを実行するのに十分に早く利用できなけ
ればならない。しかし、非常に早くに取り出されたライ
ンは、そのラインが使用される前に、置換アルゴリズム
によりキャッシュから放り出される可能性が高い。その
うえ、非常に早い先取りはまた、プログラムの制御フロ
ーの不確実性に遭遇する。その結果、キャッシュ・ミス
を減らそうとする最善の努力にもかかわらず、高性能プ
ロセッサは、キャッシュ・ミス待ち時間を容認するよう
に設計されなければならない。これが、本発明が取り組
もうとする他ならぬ問題である。従来技術では、この問
題は以下のつの方法で扱われてきた。
【0004】1.遅延スロット このアプローチは、データのロードと使用との間に、ロ
ードされるデータから独立した命令を導入する。その結
果、ロードにおいて起こりうる遅延(キャッシュ・ミス
によるもの)を容認することができる。このような命令
使用可能性が、このアプローチを使用してキャッシュ
・ミス待ち時間を容認することができる程度を決定す
る。これを、図1の従来技術サンプル・コード順序に
示す。この図の命令Iがデータのロードを開始し、命令
I+m+1がロードされたデータの使用を含む。間にあ
る命令I+1およびI+mは、命令Iにおけるロードか
ら独立した命令を指す。これらの中間命令の実行される
セットは、命令Iにおけるロードがキャッシュ・ヒット
またはキャッシュ・ミスのいずれを有するのかというこ
から独立している。従って、実行されるセットは、キ
ャッシュ・ヒットおよびキャッシュ・ミスの両方の場合
に良好な性能が得られるようには独自に最適化すること
ができない。換言すると、コンパイラが、キャッシュ・
ヒットおよびキャッシュ・ミスの両方の場合にも最適な
性能を有する共通の静的順序を決定することができない
ならば、コンパイラは、キャッシュ・ヒットまたはキャ
ッシュ・ミスのどちらかだけに対して最適化することを
強要される。って、中間命令の実行されるセットが命
令Iにおけるロードがキャッシュ・ヒットまたはキャッ
シュ・ミスのいずれを有するのかということに依存する
ような、命令およびデータを取り出す方法が求められ
る。って、実行されるセットは、キャッシュ・ヒット
およびキャッシュ・ミスの両方の場合にも良好な性能が
得られるように最適化される。
【0005】2.マルチスレッド処理 このアプローチは、実行を異なる実行スレッドに切り換
えることによって待ち時間容認の問題に対処する。「ス
レッド」とは、単一の命令順序制御(単一のプログラム
・カウンタを暗示する)およびアーキテクチャ可視性の
機械状態(例えば設計されたレジスタ)の共用セットを
使用して実行できる一連の命令をいう。って、マルチ
スレッド処理は、異なるスレッド間で文脈切り換えを可
能にするために多数のプログラム文脈をサポートする能
力を必要とする。これはさらに、そのような独立したス
レッドの検出を必要とし、それにはしばしばオペレーテ
ィング・システムの関与が求められる。って、単一
スレッド文脈においてキャッシュ・ミス待ち時間を容認
する、命令およびデータを取り出す方法が求められる。
本発明の実施態様は、単一のスレッドの文脈における待
ち時間容認を扱う。
【0006】概して、従来技術のコンピュータ・システ
ムでは、コンパイラまたはアセンブリ言語プログラマ
によって生成される命令は通常、実行時の前に、命令記
憶に順番に格納される。この順序を「静的順序」と呼
ぶ。「動的順序」は、コンピュータがこれらの命令を実
行する順序である。動的順序は静的順序と同じでも同じ
でなくてもよい。以下の述において「コンパイル時」
とは、実行時前の処理の期間をいう。しかし、そのよう
な処理はコンパイラによって実行することが非常に一般
的であるが、他の手段、例えばアセンブリ・レベル・プ
ログラミングを代わりに利用してもよい。
【0007】本発明は、階記憶数のレベルにかけ
て命令およびデータを取り出す改良された方法を提供す
る。このような記憶は当分野では周知であり、広く
使用されている。通常、そのような、例えばM個のレベ
ルからなる記憶は、最低レベル、例えばレベル1で
は最小(サイズの点で)かつ最速(アクセス時間の点
で)の記憶からなり、階層記憶の最高、すなわちM番目
のレベルでの最大かつ最低速の記憶へと進む。換言する
と、或るレベル、例えばIでの記憶は、次のレベルI+
1の記憶よりも小さく、かつ高速である。また、レベル
Mでは、いかなる項目(命令またはデータ)も確かに使
用可能であるが、このレベルでその項目にアクセスする
にはも長い時間を要する。他方、それよりも低いレベ
ルの記憶は通常、より高速のアクセスを有するが、その
項目がより低いレベルでミスしている確率がますます高
くなる。って、通常の記憶アクセスは、最低レベルか
らのデータ項目(あるならば)を待つことから始まる。
このレベルでミスした場合、次に高いレベルにアクセス
するためには追加の待機が必要である。換言すると、
初にヒットするまで、アクセスは次々と高いレベルで試
みられる。これはさらに、その項目が最終的に見つかる
ところの記憶レベルがどこであるかにより、項目の取り
出しに関連する命令の待ち時間(遅延)が広く異なるこ
とを暗示する。例えば、レベル1記憶のアクセス遅延は
通常1プロセッサ・サイクルであるが、より高レベルの
記憶のアクセス遅延は、プロセッサ・サイクルの何十倍
または何百倍にもなるおそれがある。レベル1記憶は通
常オン・チップであり、以下の述においてしばしば
「キャッシュ」と呼ぶ。
【0008】命令待ち時間の知識(「待ち時間」とは、
命令の実行を完了するためのサイクル数をいう)は、例
えば、典型的なスーパスケーラ機およびスーパパイプラ
イン機におけるコード順序変更の際およびVLIW(長
大命令語)機におけるスケジューリングの際に、多くの
コンパイル時最適化にとってきわめて重要である。スー
パスケーラ・マイクロプロセッサは当分野では周知であ
例えば、Mike Johnsonによる「Superscalar Microp
rocessor Design」Prentice Hall(1991)を参照)。
【0009】例えば、表1〜3および添付の図面に示す
コード順序を考えてみる。表1〜3に示すサイクル数
は、仮定上の目標スーパスケーラ・プロセッサの命令を
完了するのに予想されるサイクルを指す。このプロセッ
サは、整数装置、ロード/ストア装置および分岐装置か
らなる。命令は順番に発行され、発される準備のでき
たソース・オペランドを有しない最初の命令で発令が止
められる。1サイクルで3個までの命令(整数1個、ロ
ード/ストア1個、そして分岐1個)を発行することが
できる。さらに、ロード命令待ち時間が、キャッシュ
・ヒットの際には2サイクルであり、キャッシュ・ミス
の際には7サイクルであると仮定する。
【0010】例えば、表1の最適化されていないコード
順序を考えてみる。これは、表に示すように、ラベル
Lのロード命令についてキャッシュ・ヒットを仮定する
と、16サイクルを要する。キャッシュミスの場合に
は、このコード順序は21サイクルを要する。ラベルK
1〜K6の命令の順序を「Kスレッド」と呼び、残りの
命令を「Uスレッド」と呼ぶことにする。
【0011】
【表1】
【0012】次に、表2を考えてみる。表2は、表1の
KスレッドおよびUスレッドからの命令をインタリーブ
するキャッシュ・ヒット最適化コード順序の例を示す。
2個のスレッドの適切なインタリービングはしばしば、
資源の競合の際に比較的重要でないスレッドよりも優先
順位を与えられるより重大な(全体の待ち時間がより長
い)スレッドを決定するため、命令待ち時間の知識を必
要とする。例えば、ラベルK2およびU1の命令はいず
もサイクル単一の整数装置に発される準備がで
きており、よって資源の競合を暗示している。ラベル
ロード命令についてキャッシュ・ヒットを仮定して、
コンパイラは、残りのKスレッド(K2〜K6)が、残
りのUスレッド(U1〜U3)よりも長い全体の待ち時
間を有するものと判断する。って、この資源競合の
間、Kスレッドからの命令は、Uスレッドからの命令よ
りも優先順位を与えられる。って、ラベルU1の命令
は、コンパイル時コード順序付けにおいて、ラベルK2
の命令の次になるように延期される。同様に、ラベルK
5およびU3の命令はいずれもサイクル8で単一の実行
装置に発される準備ができている。残りのKスレッド
(K5〜K6)の全待ち時間が残りのUスレッド(U
3)の全待ち時間よりも長いため、Kスレッドは再び優
先順位を与えられ、ラベルU3の命令はラベルK5の命
令の次になるように延期される。表に示すように得ら
れたキャッシュ・ヒット最適化コード順序は、キャッシ
ュ・ヒットの際には10サイクルしか要ないが、キャ
ッシュ・ミスの際には14サイクルを要する。
【0013】
【表2】
【0014】あるいは、コンパイラは、ロード命令につ
いてキャッシュ・ミスを仮定して、表3に示すようなキ
ャッシュ・ミス最適化コード順序を生成することもでき
る。ここで、ラベルU1および5の命令がいずれも
の整数装置に発される準備ができているとき、サイ
クル8において資源の競合を考えてみる。残りのUスレ
ッド(U1〜U3)の待ち時間が残りのKスレッド(K
5〜K6)の待ち時間よりも長いため、表2の場合とは
異なり、UスレッドがKスレッドよりも優先順位を与え
られる。その結果、ラベルK5の命令はラベルU3の命
令の次になるように延期される。得られる順序は、キャ
ッシュ・ミスの際に実行するのに、表2の順序(14サ
イクル)よりも少ないサイクル(12サイクル)しか要
ない。逆に、この順序は、キャッシュ・ヒットの際に
は、表2のキャッシュ・ヒット最適化コード順序(10
サイクル)よりも長い時間(12サイクル)を実行に要
する。
【0015】
【表3】
【0016】従来技術の機械では、コンパイラは、ロー
命令が実行時ヒットすると事前に仮定するのかミス
すると事前に仮定するのかに依存して、つの順序(表
2および表3の順序)の一方を選択しなければならな
い。換言すると、2つの順序の一方だけが生成される。
前記のように、コンパイラが表2の順序を生成すること
を選択するならば、ロード命令がキャッシュ・ミスを引
き起こすような実行時の場合に、性能が最適未満とな
る。逆に、コンパイラが表3の順序を生成することを選
択するならば、ロード命令がキャッシュ・ヒットを引き
起こすような実行時の場合に、性能が最適未満となる。
当業者であれば、実行時に特定の項目が記憶のより
低い特定のレベルに存在するかどうか、コンパイル時
正確に予測することが非常に困難であることを認識す
るであろう。って、コンパイル時予測が不正確であ
る場合には、性能がさらに悪影響を受けるおそれがあ
る。
【0017】
【発明が解決しようとする課題】って、本発明の目的
は、記憶数のレベルにかけて命令およびデータ
を取り出す改良された方法を提供することにある。
【0018】本発明の他の目的は、記憶の異なるレ
ベルでヒットおよびミスのいずれの場合にも性能を改善
するコンパイル時最適化により、記憶数のレベ
ルにかけて命令およびデータを取り出す改良された方法
を提供することにある。本発明の他の目的および利点
は、以下の記述を考察することによって明白になり、ま
た、一部にはその記述から明白であるか、または、本発
明の実施によって学ぶことができる。
【0019】
【課題を解決するための手段】本発明の目的にって課
題を達成するために、本明細書に記載する本発明のコン
ピュータ処理装置の態様は、異なるつのコード順序、
すなわち、一方はコンパイル時にキャッシュ・ヒットを
仮定して最適化されたものと、もう一方はコンパイル時
にキャッシュ・ミスを仮定して最適化されたものとの間
で適切に動的な切り換えを行うことにより、キャッシュ
・ミス待ち時間を容認する問題を解決する。
【0020】階層記憶を有するコンピュータ・システム
上の実行に対して最適化された記憶アクセス待ち時間特
定的コード順序(memory access latency specific cod
e sequences:以下単に「記憶アクセス待ち時間コード
順序」という)を生成するための本発明の方法の好まし
い実施態様は、静的コード順序において記憶アクセス命
令を識別するステップと、階層記憶のるレベルでのヒ
ットに対して最適化された、記憶アクセス命令に関連す
る第の記憶アクセス待ち時間コード順序と、階層記憶
のそのレベルでのミスに対して最適化された、記憶アク
セス命令に関連する第の記憶アクセス待ち時間コード
順序とを生成するステップと、記憶アクセス命令の実行
がヒットを起こしたときには第の記憶アクセス待ち時
間コード順序を実行し、記憶アクセス命令の実行がミス
を起こしたときには第の記憶アクセス待ち時間コード
順序を実行するための命令を挿入するステップとを含
む。
【0021】階層記憶を含むコンピュータ・システムに
おいて命令およびデータを処理するための本発明のコン
パイル時最適化方法の好ましい実施態様は、記憶アクセ
ス命令を含む静的命令順序と、それぞれが階層記憶の
るレベルでのヒットまたはミスの一方を起こす記憶アク
セス命令の実行に依存して最適化された関連の記憶アク
セス待ち時間特定的コード順序を生成するステップと、
記憶アクセス命令をデコードし、実行し、記憶アクセス
命令の実行がヒットを起こしたのかミスを起こしたのか
を示す情報を格納するステップと、格納ステップに応答
して、その情報がヒットを示すときにはそのレベルでの
ヒットに対して最適化されたコード順序に分岐し、その
情報がミスを示すときにはそのレベルでのミスに対して
最適化されたコード順序に分岐するステップとを含む。
【0022】
【発明の実施の形態】本発明の実施態様は、「ブランチ
・オン・ミス(ミスならば分岐)命令」または「MBR
ANCH命令」と呼ぶことができる新規な命令を提案す
る。この命令は、キャッシュ・ヒットまたはキャッシュ
・ミスのいずれがあるのかに依存して、つにつのコ
ード順序に分岐する実行時能力を提供する。まず図2を
参照すると、このMBRANCH命令はラベルX1で
「mbranch m,1,KK2」と符号化されてい
る。つまり、記憶の1(レベル)でミス(m)の場
合にはラベルKK2に分岐せよ、ということである。こ
れは、コンパイラがつの順序、すなわち、一方がキャ
ッシュ・ヒットを仮定して最適化されたもの、もう一方
がキャッシュ・ミスを仮定して最適化されたものを生成
することを可能にする。キャッシュ・ヒット最適化コー
順序(表)は、ブランチ・オン・ミス命令のフォー
ルスルー経路(ラベルK2→K6)で生成され、キャッ
シュ・ミス最適化コード順序(表)は、ブランチ・オ
ン・ミス命令の分岐経路(ラベルKK2→UU3)で生
成される。その結果、実行時性能は今やキャッシュ・
ヒットおよびキャッシュ・ミスの両方の際に最適であ
り、性能はさらにキャッシュ・ヒットまたはキャッシュ
・ミスのコンパイル時予測の精度に感応しない。本発
明のMBRANCH命令の意味(セマンティクス)の実
施態様ならびにMBRANCH命令を実行することがで
きるコンピュータ・システムの動作を以下に説明する。
既存の命令コードの未使用のコードを例えば既存の条件
付き分岐命令の変形として使用して、この命令の機能
既存のアーキテクチャで符号化することも可能である。
【0023】本発明の好ましい実施態様はまた、それぞ
れが「キャッシュ・レコード・レジスタ」と呼ばれる1
個以上のレジスタのセットを提案する。このようなレジ
スタそれぞれは、好ましくは1個以上のフィールドから
なり、各フィールドが、記憶の特定のレベルと関連
している。フィールドは、その関連のレベルの記憶アク
セスの状態を符号化する。フィールドのデフォルト
たは初期設定は、そのレベルでのヒットを示すことが
できる。当業者であれば、機械アーキテクチャが1個以
上の既存の設計されたレジスタにおいて十分な予約ビッ
トを有する場合、そのような存在する予約ビットを使用
して、新たな明示的レジスタを機械アーキテクチャ状態
に加えることなく、キャッシュ・レコード・レジスタの
機能を加えることができることを察知するであろう。そ
うでなければ、十分に利用できるレジスタ・ビットを持
たない他の機械アーキテクチャの場合に、追加のアーキ
テクチャ可視性のレジスタを加えて、キャッシュ・レコ
ード・レジスタ・セットの機能をサポートすることもで
きる。
【0024】MBRANCH命令の詳細な説明 好ましい実施態様において、本発明のMBRANCH命
令は、記憶の識別されたレベルでキャッシュ・ミス
があるならば、静的順序でMBRANCH命令の直後に
ある順序を取り出し、実行する代わりに、識別された目
標アドレスに関連する命令順序を取り出し、実行するな
らば、性能がおそらくは改善するであろうというヒント
である。この命令は単にヒントであり、って、所与の
機械実現形態は、この命令を無視し、その意味を無視
し、キャッシュ・ヒットまたはキャッシュ・ミスにかか
わらず順番に取り出しを続けることも自由である。
て、プログラムの正当性は、この命令の意味が遵守され
るのか無視されのるかには依存しない。むしろ、プログ
ラム実行の性能は、潜在的には、この命令に関連する意
味が遵守されるかどうかの関数である。
【0025】次に図3を参照すると、本発明のMBRA
NCH命令300のフォーマットの実施態様が示され、
これは、命令コード・フィールド302と、ミス識別フ
ィールド304と、キャッシュ・レコード・レジスタ・
フィールド305と、アドレス・フィールド306とを
含む。アドレス・フィールド306は、命令順序のアド
レスを明瞭に識別する。ミス識別フィールド304は、
識別された命令アドレスに分岐するために命令取り出し
および実行の変更が推奨される記憶レベルのミスまたは
ヒットを指定する。極端な場合には、ミス識別フィール
ド304は、選択を何も提供しなくてもよく従っ
、その意味は命令コード・フィールド302によって
暗示することができ、明示的なミス識別フィールドの必
要はないかもしれない。しかし、一般的な場合には、ミ
ス識別フィールド304は、ミス指定のためのいくつか
の選択つを符号化することができる。本発明の好
ましい実施態様は、ミス識別フィールド304を2個の
サブフィールドに分割する。第1のヒット/ミス・サブ
フィールド3041は、キャッシュ・ミスまたはキャッ
シュ・ヒットのどちらの検出をもって分岐をとるかを識
別する。これはさらに、ヒット/ミス検出保留のオプシ
ョンを含むように拡張してもよい。第2の記憶レベル
サブフィールド3042は、ヒットまたはミスが検出さ
れるべき階層記憶の或る記憶レベルを指定する。指定さ
れた記憶レベルが、実現形態でサポートされている最高
記憶レベルよりも高いならば、アクセスは常にヒット
であると仮定することができる。キャッシュ・レコード
・レジスタ・フィールド305は、識別されたヒット/
ミス状態を決定するために検査すべきキャッシュ・レコ
ード・レジスタ(後述)を指定する。キャッシュ・レコ
ード・レジスタが1個だけの場合、このフィールド30
5は不要である。
【0026】変更記憶アクセス命令の詳細な説明 1個以上の記憶アクセスを伴う命令を「記憶アクセス命
令」と呼ぶ。図4は、本発明の記憶アクセス命令400
変更フォーマットを示す。図4に示すように、任意の
記憶アクセス命令の既存のフォーマット402は、1個
以上のキャッシュ・レコード・レジスタの識別を含むキ
ャッシュ・レコード・レジスタ・フィールド404を含
むように変更することができる。ここでもまた、キャッ
シュ・レコード・レジスタが1個だけの場合、フィール
ド404は不要である。そして、識別されたレジスタを
実行時に使用して、関連の記憶アクセスの状態を記録す
ることができる。例えば、記憶アクセス命令400の実
行の間、より低いレベル、例えばレベル1およびレベル
2でのミスは、これらレベル1および2に関連するサブ
フィールドを、この命令によって識別されるレジスタ中
に設定することによって記録することができる。
【0027】コンピュータ・システムの詳細な説明 図5は、本発明にって命令およびデータを取り出す改
良された方法を実行するマルチレベルの階層記憶を含む
コンピュータ・システムのブロック図である。このコン
ピュータ・システムは、プロセッサ500および関連の
階層憶100を含む。階層記憶100は、プロセッ
00で実行するためのプログラム・データおよび命令
を保持している。記憶装置は、階層記憶100の1個以
上のレベル100−1100−Mからなる(Mは最高
レベル、すなわち主記憶を表す)。最小(サイズの点
で)かつ最速(アクセス時間の点で)の記憶レベルが通
常「キャッシュ」と呼ばれ、プロセッサ500中に、そ
の最低レベルであるLEVEL_1(100−1)で組
み込まれている。記憶レベルは順次に直前の記憶レベル
よりも大きく、かつ遅くなる。換言すると、或るレベ
ル、例えばiの記憶は、次のレベルi+1の記憶よりも
小さく、かつ高速である。どの項目(命令またはデー
タ)も最高レベル(主記憶)LEVEL_Mで利用でき
るが、頻繁に使用される命令およびデータの部分は通
常、それぞれ命令キャッシュ101−1およびデータ・
キャッシュ103−1に保持されている。あるいは、
令キャッシュおよびデータ・キャッシュを単一のキャッ
シュに統合することもできる。より高いレベルの記憶も
また、命令とデータとに分割することもできるし、
統合することもできる。
【0028】従来どおり、命令キャッシュ101−1お
よびデータ・キャッシュ103−1にそれぞれ格納され
た命令/データはラインまたはブロックに分割される。
命令取り出し装置104が命令キャッシュ101−1に
格納された命令の1個以上のブロックをデコード装置1
08に取り込む。デコード装置108は、一般的な分岐
命令、MBRANCH命令および条件レジスタ更新命令
を実行するために分岐装置110に送り、他の順序どお
り(非分岐)の命令をディスパッチ実行装置112に送
る。ディスパッチ実行装置112は、保留中の命令の間
で依存性を解析し、1個以上の機能装置における命令の
実行をスケジューリングする。多様なトレードオフの結
果としてのこのようなディスパッチ実行装置112は当
分野では周知である例えば、Mike Johnsonによる「Su
perscalar Microprocessor Design」Prentice Hall(19
91)を参照)。代替的な実現形態は、複雑な命令間依存
性解析ハードウェアから、実行時依存性解析を実施しな
い非常に簡単なディスパッチ実行エンジンにまで及ぶ。
後者の場合、多くのVLIW(長大命令語)機における
ように、依存性解析はもっぱらコンパイル時に行われ
る。
【0029】図6に示す好ましい実施態様では、ディス
パッチ実行装置112は、ディスパッチ装置113と、
複数の機能装置115−1115−Kと、スケジュー
ラ116とからなる。ディスパッチ装置113は、デコ
ード装置108によって送られた命令の間で依存性を解
析し、これらの命令をスケジューラ116に送る。スケ
ジューラ116によって同サイクル中に受け取られる
すべての命令は、互いに独立しているとみなすことがで
きる。このようなスケジューラ116もまた、スーパス
ケーラ機の分野では周知である。そして、スケジューラ
116は命令を機能装置115に対してスケジューリン
グする。機能装置115は、1個以上の機能装置115
−1〜115−Kからなり、各装置が、いくつかまたは
すべてのタイプの命令を実行することができる。機能装
置115は、データ取り出し装置106を介して入力ソ
ース・オペランドをレジスタ・ファイル118またはデ
ータ・キャッシュ103−1から受け、出力結果をそれ
らに書き込む。図6に示す好ましい実施態様では、すべ
ての機能装置115−1〜115−Kは同一であり、
って、いかなる命令をも実行することができる。あるい
は、これらの機能装置は非対称的であってもよい。ここ
では、特定の機能装置は、命令のサブセット、例えばロ
ード/ストア命令または整数命令もしくは浮動小数点命
令だけを実行することができる。従来どおり、スケジュ
ーラ116は、そのような非対称性を認知し、命令を適
切にスケジューリングできなければならない。
【0030】データ取り出し装置106は、データ・キ
ャッシュ103−1からディスパッチ実行装置112の
機能装置115へのデータのブロックの取り込みを扱
う。データ・キャッシュ103−1は通常、命令によっ
てソース・オペランドとして使用されるデータ値と、実
行された命令によって生成されるデータ値とを保管して
いる。
【0031】プロセッサ500はまた、レジスタのセッ
トを含むレジスタ・ファイル118を含む。レジスタ・
ファイル118は、命令を実行するためにディスパッチ
実行装置112に関連する機能装置115にオペランド
を提供し、また、実行の結果を受け取る。このレジスタ
ファイル118は、アーキテクチャ可視性のレジスタ
のセットと、アーキテクチャ可視性のレジスタとにさ
らに分けられる。「アーキテクチャ可視性のレジスタ」
または「設計されたレジスタ」とは、機械のアセンブリ
・レベル・プログラマ(またはコンパイラ)がアクセス
することができる固定されたレジスタのセットをいう。
このようなレジスタ・ファイル118は当分野では周知
である。プロセッサ500はまた、アーキテクチャによ
って有効とみなされる順序で命令を実行する責任を負う
完了装置120を含む。ディスパッチ実行装置112
は、この順序を無視して命令をディスパッチし、実行す
ることできるとしても、プロセッサ500は、アーキ
テクチャの制約に依存して、命令を同じ順序で完了させ
てもよいし、そうしなくてもよい。
【0032】分岐装置110は、分岐命令、すなわち、
機械の順序制御の流れを潜在的に変えることができる命
令の意味を実現する責任を負う。分岐装置110はま
た、未解決の分岐を予測し、分岐解決ごとに各予測の有
効性を決定することもできる。分岐装置110はまた、
条件付き分岐命令の結果を評価するのに使用される条件
レジスタ(CR)と、ディスパッチ実行装置112によ
って実行される演算の結果にって条件レジスタを更新
する論理とを含むことができる。
【0033】本発明の実施態様によると、命令取り出し
装置104は、命令キャッシュ101−1に格納された
MBRANCH命令300前出)を取り出し、それを
デコード装置108に送る。デコード装置108は、M
BRANCH命令300を識別し、それを分岐装置11
0に送る。MBRANCH命令300に関連する条件の
有効性を決定するため、分岐装置110論理が、キャ
ッシュ・レコード・レジスタ管理装置102に対し、M
BRANCH命令300のミス識別フィールド304で
識別されたキャッシュ・レコード・レジスタ・フィール
ド30の値に関して問い合わせる。この条件の有効性
が、分岐の是非を決定する。キャッシュ・レコード・レ
ジスタ管理装置102は、キャッシュ・レコード・レジ
スタ・セット200中の1個以上のキャッシュ・レコー
ド・レジスタ200−1〜200−Nに対する読み出し
または書き込みを管理する責任を負う。キャッシュ・レ
コード・レジスタ・セット200は、主として、本発明
のMBRANCH命令300の意味を実現する責任を負
う。キャッシュ・レコード・レジスタ・セット200の
各レジスタは、それぞれのサブフィールド200−1.
200−1.Mおよび200−N.1200−
N.Mを含む。各サブフィールドは、記憶100の
特定の記憶レベル100−1100−Mとで関
連していることができる。記憶アクセス命令の実行は、
好ましくは、適切なキャッシュ・レコード・レジスタ
00−iのサブフィールドをデフォルト設定に初期化
することから始まる。命令実行が進むにつれ、それは、
記憶100の種々のレベルでのヒットまたはミスに
依存して、これらのサブフィールドのデフォルト設定
を更新する結果をもたらすことができる。例えば、
記憶のLEVEL_1(100−1)およびLEVEL
_2(100−2)でミスしたのち、LEVEL_3で
ヒットした場合、この状態を適切なキャッシュ・レコー
ド・レジスタ200−1の対応するサブフィールドに連
続的に記録することができる。すなわち、LEVEL_
1およびLEVEL_2に対応するサブフィールド20
0−1.1および200−1.2をセットし、LEVE
L_3に対応するサブフィールド200−1.3をリセ
ットすることによって、この状態を表示することができ
る。の実施態様では、キャッシュ・レコード・レジス
タ・セット200をレジスタ・ファイル11の一部に
してもよい。その場合、レジスタ・ファイル11中の
他のレジスタと同様に、キャッシュ・レコード・レジス
200−iを、MBRANCH命令300および記憶
アクセス命令それぞれの意味の一部として読み出し、更
新してもよい。さらに別の実施態様では、キャッシュ・
レコード・レジスタ・セット200を分岐装置110の
一部にして、その中に含まれる条件レジスタと同様に更
新/管理してもよい。
【0034】実行方法の詳細な説明 図7は、図5に示すコンピュータ・システムを使用して
MBRANCH命令300を処理する方法を説明する流
れ図を示す。ステップ1000で、コンパイル時に、コ
ンパイラが、MBRANCH命令300を考慮せずに静
的な命令順序を生成する。説明を明確にするため、以下
述では、別段指定しない限り、キャッシュとはデー
タ・キャッシュ103−1のみを指す。しかし、以下に
説明する方法は、命令キャッシュ101−1のアクセス
性能を最適化する場合にも応用することができる。ステ
ップ1002で、コンパイラは静的順序を解析して、キ
ャッシュ・アクセス時間が最適化されたならば性能が有
意に強化される可能性のある特定の場所を識別する。こ
れらの場所を「臨界ミスポイント」と呼ぶ。ステップ
1004で、識別された臨界ミスポイントごとに、コ
ンパイラは、このデータ・アクセスから生じるおそれの
あるキャッシュ・アクセス待ち時間のセットを考慮す
る。これらの可能なキャッシュ・アクセス待ち時間ごと
に、コンパイラは、対応する最適化されたコード順序
(記憶アクセス待ち時間コード順序)を生成する。
【0035】「キャッシュ・アクセス待ち時間」とは、
キャッシュからデータを検索するのに要する時間をい
う。キャッシュ・アクセス待ち時間は、データが見いだ
される階層憶100の記憶レベル100−1〜100
−Mの関数である図5に関連するアクセス処理説明
を参照)。
【0036】図7に戻ると、ステップ1005で、臨界
ミスポイントに関する記憶アクセス命令を変更して、
関連の記憶アクセスの結果を記録するために実行時に使
用することができるレジスタを識別する。そのような
記憶アクセス命令400を示す本発明の態様は、図4
を参照しながら先に説明したものである。ステップ10
06で、コンパイラがMBRANCH命令300を挿入
して、ステップ1004で生成された、最適化されたコ
ード順序に分岐できるようにする。前述のように、これ
らのコード順序は、関連の記憶アクセス命令の実行の際
に階層記憶100の種々のレベルでのアクセス結果に対
応する。ステップ1008で、実行時に、コンピュータ
・システムが、ステップ1006で静的順序に挿入され
たMBRANCH命令300を含むコンパイルされた命
令の静的順序を記憶100にロードする。記憶
100は、最低レベルの命令キャッシュ101−1を含
複数の記憶レベル100−1〜100−Mからなる。
従来どおり、階層記憶100のより高いレベルに格納
れた静的順序の一部は、より低いレベルに頻繁に転送さ
れ、最後には、実行されるために最低レベルの命令キャ
ッシュ101−1に転送される。ステップ1010で、
命令取り出し装置104が、命令キャッシュ101−1
にアドレスすることにより、次の命令順序を命令キャッ
シュ101−1から取り出す。その命令順序が命令キャ
ッシュ101−1に見当たらないならば、それは、
したように、記憶100のより高いレベルから取り
出される。命令取り出し装置104によって取り出され
た命令順序は、デコード装置108に転送される。ステ
ップ1012で、デコード装置108が1個以上の命令
を同時にデコードする。MBRANCH命令300を含
む、分岐命令としてデコードされた命令または条件レジ
スタ更新を伴う命令は、分岐装置110に送られる。ス
テップ1005でフォーマットを変更された変更記憶ア
クセス命令400を含む他の命令は、依存性解析、ディ
スパッチおよび実行のためにディスパッチ実行装置11
2に送られる。ステップ1014で、分岐装置110
が、本発明のMBRANCH命令300を含む、分岐命
令としてデコードされた命令または条件レジスタ更新を
伴う命令を処理する(ステップ1014のより詳細な説
明は図8に示す)。ステップ1016で、ディスパッチ
実行装置112が、分岐命令および条件レジスタ更新命
令以外の、本発明の変更記憶アクセス命令400を含む
命令を処理する(ステップ1016のより詳細な説明は
図9に示す)。最後に、ステップ1018で、完了装置
114が、述したようなアーキテクチャによって有効
であるとみなされる順序で命令実行を完了する。処理は
ステップ1010に戻って、次の命令順序を命令キャッ
シュ101−1から取り出し、プログラム実行の間、こ
のような処理が繰り返される。
【0037】ステップ1012で、デコード装置108
が1個以上の命令を同時にデコードすることを想起され
たい。本発明のMBRANCH命令300を含む、デコ
ード済みの分岐命令または条件レジスタ更新を伴う命令
は、ステップ1014で処理されるために分岐装置11
0に送られる。
【0038】次に図8を参照して、図7のステップ10
14を詳述する。ステップ10141で、分岐装置11
0が、デコード装置108から送られた命令をデコード
して、その命令がCR命令、すなわち、条件レジスタ
を伴う命令であるかどうかを決定する。それがCR命
令であるならば、処理に影響を加えないことが好まし
く、って、ステップ10142で従来の方法で実施す
る。
【0039】デコードされた命令がCR命令ではないな
らば、ステップ10143で、分岐装置110が、それ
がMBRANCH命令300であるかどうかを決定す
る。そうであれば、ステップ10144で、分岐のため
に比較すべき特定のミスビットを識別する。MBRA
NCH命令300のキャッシュ・レコード・レジスタ
ィールド305を使用して、ミスビットを含むキャ
ッシュ・レコード・レジスタ・セット200中の適切な
レジスタを識別することができる。記憶レベル・サブフ
ィールド3042で識別された記憶レベルを使用して、
特定のミスビットをさらに識別することができる。ス
テップ10145で、MBRANCH命令300のヒッ
ト/ミス・サブフィールド3041をデコードして、分
岐がヒットで推奨されるのかミスで推奨されるかを決定
する。ステップ1014で、MBRANCH命令30
がブランチ・オン・ミスとしてデコードされるなら
ば、ステップ10146で、ステップ10144で識別
されたミスビットセット状態または非セット状態
試験する。ミスビットがセット状態であって、所与の
記憶レベルでのミス(データは見つからず)を示すなら
ば、流れ制御はステップ10149に移り、これが、ア
ドレス・サブフィールド306で指定された目標アドレ
スでの命令に対する分岐を実現する。ミスビットが非
セット状態であるならば、識別された目標アドレスに分
岐しないまま、MBRANCH命令300の処理完了
る。
【0040】ステップ10145で、MBRANCH
300がブランチ・オン・ヒットとしてデコードされ
るならば、ステップ10147で、ステップ10144
で識別されたミスビットセット状態または非セット
状態試験する。ミスビットが非セット状態であっ
て、適切な記憶レベルでのヒット(データを発見)を示
すならば、流れ制御はステップ10149に移り、これ
が、アドレス・フィールド306で指定された目標アド
レスでの命令に対する分岐を実現する。ステップ101
47で、ミスビットがセット状態である(データは見
つからず)ならば、識別された目標アドレスに分岐しな
いまま、MBRANCH命令300の処理完了る。
【0041】ステップ10143で、送られた命令がM
BRANCH命令300ではないとしてデコードされる
(通常の分岐命令を暗示する)ならば、ステップ101
48が実行される。好ましくは、本発明は、非MBRA
NCH分岐命令の処理には変更を加えない。って、そ
のような命令はステップ10148で従来の方法で処理
される。
【0042】再び図7を参照して、ステップ1016
で、ディスパッチ実行装置112が、本発明にって
ォーマットを変更された変更記憶アクセス命令400を
含む命令を処理することを想起されたい。
【0043】次に図9を参照して、本発明にって、記
録を伴うキャッシュ・アクセスを含む、図7の「ディス
パッチおよび実行」(ステップ1016)を実施する方
法を説明する。ステップ10161で、従来どおり、デ
ィスパッチ実行装置112が、デコード装置108によ
って送られる命令に関して命令間依存性を解析する。独
立した命令は、実行のための機能装置115におけるス
ケジューリングのためにスケジューラ116にディスパ
ッチされる。ステップ10162で、ディスパッチ実行
装置112が、命令実行がデータ・キャッシュ103
−1アクセスを伴うかどうかを決定する。そうであれ
、ステップ10163で、キャッシュ・アクセスが記
録を伴うべきかそうではないかに関してさらに決定を下
す。「記録を伴うキャッシュ・アクセス」とは、キャッ
シュ・アクセスの結果(ヒットまたはミス)が後の処理
のために格納されることをいう。図10を参照して、本
発明による記録を伴うキャッシュ・アクセスの方法の詳
細な実施態様を説明する。ステップ10163にかかわ
る決定は、本発明により、ステップ1005の記憶アク
セス命令のフォーマット変更によって簡略化される。あ
るいは、すべての記憶アクセス命令が記録を伴うキャッ
シュ・アクセスを要するものと仮定することもできる。
【0044】図9に戻ると、ステップ10163で、記
録を伴うデータ・キャッシュ・アクセスが指定される
と、ステップ10164が実行される。ステップ101
64で、変更記アクセス命令400のフィールド40
4をデコードすることにより、記録に関連するキャッシ
ュ・レコード・レジスタ00−iを識別する。再び、
この特定の場合に、本発明の実施態様が1個のキャッシ
ュ・レコード・レジスタしか含まないとき、キャッシュ
・レコード・レジスタ200−iの明示的な識別が不要
になる。次に、ステップ10165で、識別されたキャ
ッシュ・レコード・レジスタ200−iをキャッシュ管
理装置102によってそのサブフィールドの適当なデフ
ォルト設定に初期化することができる。好ましくは、
デフォルト設定は、すべての記憶レベルでヒットを暗
示する。ステップ10166で、データ・キャッシュに
アクセスして結果を記録する。ステップ10163で、
キャッシュ・アクセスが記録を伴わないならば、従来の
キャッシュ・アクセスをステップ10168で実行す
る。データ・キャッシュ・アクセスがステップ1016
8または10166で完了したのち、ステップ1016
7で命令を実行し、従来どおりに完了させる。ステップ
10162で、命令実行がデータ・キャッシュ・アク
セスを要しないならば、ステップ10167で、命令
は、実行装置112および完了装置114によって実行
され、完了する。
【0045】図9において、ステップ10163で、デ
ータ・キャッシュ・アクセスがかかわるならば、キャッ
シュ・アクセスが記録を伴うべきかそうではないかに関
してさらなる決定が下されることを想起されたい。ま
た、キャッシュ・アクセスが記録を伴うとき、ステップ
10164で、キャッシュ・レコード・レジスタ200
−iが好ましくはキャッシュ管理装置102によって初
期化されて、すべての記憶レベルでのヒットを暗示する
ことを想起されたい。
【0046】図10は、マルチレベルのキャッシュ記憶
100−1100−i環境において記録を伴うキャッ
シュ・アクセスを実施する図9のステップ10166を
詳細に説明する。ステップ5001で、記憶100
中の最低レベル100−1にアクセスすることにより、
記録を伴うキャッシュ・アクセスが始まる。キャッシュ
・アクセスがヒットである(データを発見)ならば、ス
テップ5002を実行する。ステップ5002で、ステ
ップ10164で識別されたキャッシュ・レコード・レ
ジスタ200−i中のLEVEL_1に対応するサブフ
ィールドをリセットし、記録を伴うキャッシュ・アクセ
ス(ステップ10166)が完了する。そうでなけれ
ば、ステップ5001のアクセスはミスであり、ステッ
プ5003で、先のステップ10164で識別されたキ
ャッシュ・レコード・レジスタ200中のLEVEL_
1に対応するサブフィールドをセットした後、記録を伴
うキャッシュ・アクセス(ステップ10166)はステ
ップ5004に進む。ステップ5004で、次の記憶レ
ベルが記憶100の最高レベル(主記憶)、すなわ
ち100−Mよりも低いかどうかを検査する。ステップ
5004で次の記憶レベルがM未満であると決定される
と、ステップ5005で次の記憶レベルにアクセスす
る。ステップ5005でのアクセスがヒットであるなら
ば、ステップ5006で、先のステップ10164で識
別されたキャッシュ・レコード・レジスタ200−i中
のこのレベルに対応するサブフィールドをセットし、記
録を伴うキャッシュ・アクセス(ステップ10166)
が完了する。そうではなく、アクセスがミスであるなら
ば、ステップ5007で、先のステップ10164で識
別されたキャッシュ・レコード・レジスタ200−i
のこのレベルに対応するサブフィールドをセットし、
述したように、処理はステップ5004に戻る。ステッ
プ5004で、次の記憶レベルがMに等しいと決定され
るならば、ステップ5008で、次の記憶レベル、すな
わちLEVEL_Mにアクセスする。これが記憶1
00の最高レベルであるため、アクセスはヒットである
はずと仮定され、記録を伴うキャッシュ・アクセス(ス
テップ10166)が完了する。
【図面の簡単な説明】
【図1】データのロードと使用との間に、キャッシュ・
ミスまたはキャッシュ・ヒットから独立した命令を導入
する従来技術の方法を示す図である。
【図2】キャッシュ・ヒットに対して最適化されたコー
ド順序と、キャッシュ・ミスに対して最適化されたコー
ド順序との間で動的に切り換えるための、本発明のMB
RANCH命令の態様を含むプログラム順序を示す図で
ある。
【図3】本発明で提案されるMBRANCH命令の態様
を示す図である。
【図4】本発明にって変更された記憶アクセス命令の
態様を示す図である。
【図5】本発明のコンピュータ・システムの態様を示す
ブロック図である。
【図6】図5に示すディスパッチ実行の態様を示すブロ
ック図である。
【図7】図5に示すコンピュータ・システムを使用す
る、提案した実行方法の態様を説明する流れ図である。
【図8】図7の「分岐命令およびCR命令」ステップに
関連するサブステップを示す図である。
【図9】図7の「ディスパッチおよび実行」ステップに
関連するサブステップを示す図である。
【図10】図9の「記録を伴うキャッシュ・アクセス」
ステップに関連するサブステップを示す図である。
【符号の説明】
100 記憶装置 102 キャッシュ・レコード管理装置 104 命令取り出し装置 106 データ取り出し装置 108 デコード装置 110 分岐装置 112 ディスパッチ実行装置 113 ディスパッチ装置 115 機能装置 116 スケジューラ 118 レジスタ・ファイル 120 完了装置 200 キャッシュ・レコード・レジスタ・セット 500 プロセッ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 プラディープ・クマール・デュベイ アメリカ合衆国10606、ニューヨーク州 ホワイト プレインズ マーティン アヴェニュー 25 アパートメント 1015 (72)発明者 ジェイム・ハムバート・モレノ アメリカ合衆国10530、ニューヨーク州 ハーツデール ホルムス アヴェニュ ー 205 (56)参考文献 特開 昭63−198130(JP,A) 特開 平5−108352(JP,A) 特開 平3−282734(JP,A) 特開 平4−239323(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 12/08

Claims (22)

    (57)【特許請求の範囲】
  1. 【請求項1】階層記憶を有するコンピュータ・システム
    上の実行に対して最適化された記憶アクセス待ち時間コ
    ード順序を生成する方法であって、 (a)静的コード順序において記憶アクセス命令を識別
    するステップと、 (b)前記階層記憶の或るレベルでのヒットに対して最
    適化された、前記記憶アクセス命令に関連する第1の記
    憶アクセス待ち時間コード順序と、前記階層記憶の前記
    レベルでのミスに対して最適化された、前記記憶アクセ
    ス命令に関連する第2の記憶アクセス待ち時間コード順
    序とを生成するステップと、 (c)前記記憶アクセス命令の実行が前記ヒットを起こ
    したときには前記第1の記憶アクセス待ち時間コード順
    序を実行し、前記記憶アクセス命令の実行が前記ミスを
    起こしたときには前記第2の記憶アクセス待ち時間コー
    ド順序を実行するための第1の命令を挿入するステップ
    と、 (d) 前記階層記憶の他のレベルでのヒットに対して最
    適化された、前記記憶アクセス命令に関連する第3の記
    憶アクセス待ち時間コード順序と、前記階層記憶の前記
    他のレベルでのミスに対して最適化された、前記記憶ア
    クセス命令に関連する第4の記憶アクセス待ち時間コー
    ド順序とを生成するステップと、(e) 前記記憶アクセス命令の実行が前記他のレベルで
    前記ヒットを起こしたときには前記第3の記憶アクセス
    待ち時間コード順序を実行し、前記記憶アクセス命令の
    実行が前記他のレベルで前記ミスを起こしたときには前
    記第4の記憶アクセス待ち時間コード順序を実行するた
    めの第2の命令を挿入するステップと、を含ことを特徴とする前記方法。
  2. 【請求項2】前記識別ステップ(a)が、前記記憶アク
    セス命令を臨界ミス・ポイントとして識別するステップ
    を含み、前記生成ステップ(b)または(d)が、前記
    記憶アクセス命令を前記臨界ミス・ポイントとして識別
    する前記ステップに応答する請求項1記載の方法。
  3. 【請求項3】前記記憶アクセス命令の前記実行が前記ミ
    スを起こしたかどうかを示すためのミス・ビットを識別
    するように、前記記憶アクセス命令を変更するステップ
    をさらに含み、前記第1または第2の命令が前記ミス・
    ビットに応答する請求項1記載の方法。
  4. 【請求項4】前記第1の命令が、前記第1の記憶アクセ
    ス待ち時間コード順序に分岐するためのブランチ・オン
    ・ヒット命令および前記第2の記憶アクセス待ち時間コ
    ード順序に分岐するためのブランチ・オン・ミス命令の
    一方を含む請求項1記載の方法。
  5. 【請求項5】前記コンピュータ・システムがコンパイラ
    を含み、前記ステップ(a)ないし(e)をコンパイル
    時に実施する請求項1記載の方法。
  6. 【請求項6】階層記憶と、記憶アクセス命令を含む静的
    命令順序と、それぞれが前記階層記憶の或るレベルでの
    ヒットまたはミスの一方を起こす前記記憶アクセス命令
    の実行に依存して最適化された関連の記憶アクセス待ち
    時間コード順序とを含むコンピュータ・システムにおい
    て命令およびデータを処理する方法であって、 (a)前記記憶アクセス命令をデコードし、実行し、前
    記記憶アクセス命令の前記実行が前記ヒットを起こした
    のか前記ミスを起こしたのかを示す情報と、 前記ヒット
    または前記ミスに関連する前記階層記憶の前記レベルを
    示す情報を格納するステップと、 (b)前記格納ステップ(a)の間に格納された前記情
    報に応答して、前記情報が前記ヒットを示すときには前
    記階層記憶の前記レベルでのヒットに対して最適化され
    た記憶アクセス待ち時間コード順序に分岐し、前記情報
    が前記ミスを示すときには前記階層記憶の前記レベルで
    のミスに対して最適化された記憶アクセス待ち時間コー
    ド順序に分岐するステップと、 を含むことを特徴とする前記 方法。
  7. 【請求項7】前記記憶アクセス命令が、ロード命令、ス
    トア命令およびタッチ命令の1つである請求項記載の
    方法。
  8. 【請求項8】前記記憶アクセス命令を臨界ミス・ポイン
    トとして識別するステップをさらに含み、前記記憶アク
    セス待ち時間コード順序が前記臨界ミス・ポイントと関
    連している請求項記載の方法。
  9. 【請求項9】前記記憶アクセス命令に関連する分岐命令
    を挿入するステップと、 前記分岐命令をデコードするステップとをさらに含み、 前記分岐ステップ(b)が、前記分岐命令をデコードす
    る前記ステップに応答する請求項記載の方法。
  10. 【請求項10】前記分岐命令が、前記分岐ステップ
    (b)が推奨される前記階層記憶の或るレベルを指定す
    る請求項記載の方法。
  11. 【請求項11】階層記憶と、記憶アクセス命令を含む静
    的命令順序と、それぞれが前記階層記憶の或るレベルで
    のヒットまたはミスの一方を起こす前記記憶アクセス命
    令の実行に依存して最適化された関連の記憶アクセス待
    ち時間コード順序とを含むコンピュータ・システムにお
    いて命令およびデータを処理する方法であって、 (a)前記記憶アクセス命令をデコードし、実行し、前
    記記憶アクセス命令の前記実行が前記ヒットを起こした
    のか前記ミスを起こしたのかを示す情報を格納するステ
    ップと、 (b)前記格納ステップ(a)の間に格納された前記情
    報に応答して、前記情報が前記ヒットを示すときには前
    記階層記憶の前記レベルでのヒットに対して最適化され
    た記憶アクセス待ち時間コード順序に分岐し、前記情報
    が前記ミスを示すときには前記階層記憶の前記レベルで
    のミスに対して最適化された記憶アクセス待ち時間コー
    ド順序に分岐するステップとを含み、 前記階層記憶がマルチレベル・キャッシュ記憶を含み、
    前記コンピュータ・システムがレジスタ・セットを含
    み、前記レジスタ・セット中の各レジスタが複数のサブ
    フィールドを含み、前記複数のサブフィールドの各々が
    前記キャッシュ記憶の或るレベルと関連していることを
    特徴とする前記方法。
  12. 【請求項12】前記格納ステップ(a)が、 前記記憶アクセス命令の前記実行に応答して前記複数の
    サブフィールドをデフォルト設定値に初期化するステッ
    プと、 前記キャッシュ記憶の複数のレベルにアクセスし、前記
    キャッシュ記憶の連続するレベルでの前記ヒットおよび
    前記ミスに従って前記情報を前記複数のサブフィールド
    に記録するステップとをさらに含み、前記分岐ステップ
    (b)が前記複数のサブフィールドに記録された前記情
    報に応答する請求項11記載の方法。
  13. 【請求項13】階層記憶と、記憶アクセス命令を含む静
    的命令順序と、それぞれが前記階層記憶の或るレベルで
    のヒットまたはミスの一方を起こす前記記憶アクセス命
    令の実行に依存して最適化された関連の記憶アクセス待
    ち時間コード順序とを含み、前記階層記憶に格納された
    命令およびデータを処理するためのコンピュータ・シス
    テムであって、 前記命令順序を取り出し、デコードし、実行するため
    の、前記階層記憶に結合されたプロセッサを備え、 前記プロセッサが、 前記記憶アクセス命令の前記実行が前記ヒットを起こし
    たのか前記ミスを起こしたのかを示す情報と、 前記ヒッ
    トまたは前記ミスに関連する前記階層記憶の前記レベル
    を示す情報を格納するための手段と、 前記格納手段に格納された前記情報に応答して、前記情
    報が前記ヒットを示すときには前記階層記憶の 前記レベ
    でのヒットに対して最適化された記憶アクセス待ち時
    間コード順序に分岐し、前記格納手段に格納された前記
    情報が前記ミスを示すときには前記階層記憶の前記レベ
    ルでのミスに対して最適化された記憶アクセス待ち時間
    コード順序に分岐するための、分岐論理とを含むことを
    特徴とする前記システム。
  14. 【請求項14】前記記憶アクセス命令が、ロード命令、
    ストア命令およびタッチ命令の1つである請求項13
    載のシステム。
  15. 【請求項15】前記プロセッサが、キャッシュ・レコー
    ド・レジスタ・セットをさらに含み、前記記憶アクセス
    命令が、前記キャッシュ・レコード・レジスタ・セット
    中のレジスタを識別するキャッシュ・レコード・レジス
    タ・フィールドを含む請求項13記載のシステム。
  16. 【請求項16】前記階層記憶の他のレベルでのヒットに
    対して最適化された、前記記憶アクセス命令に関連する
    第3の記憶アクセス待ち時間コード順序と、前記階層記
    憶の前記他のレベルでのミスに対して最適化された、前
    記記憶アクセス命令に関連する第4の記憶アクセス待ち
    時間コード順序とを生成するための手段をさらに含み、 前記分岐論理が、前記記憶アクセス命令の実行が前記他
    のレベルで前記ヒットを起こしときには前記第3の記憶
    アクセス待ち時間コード順序に分岐し、前記記憶アクセ
    ス命令の実行が前記他のレベルで前記ミスを起こしとき
    には前記第4の記憶アクセス待ち時間コード順序に分岐
    する請求項13記載のシステム。
  17. 【請求項17】前記記憶アクセス命令を臨界ミス・ポイ
    ントとして識別するための手段をさらに含み、前記記
    アクセス待ち時間コード順序が前記臨界ミス・ポイント
    と関連している請求項13記載のシステム。
  18. 【請求項18】前記格納手段に格納された前記情報が前
    記ヒットを示すときには前記ヒットに対して最適化され
    た記憶アクセス待ち時間コード順序を指定し、前記格納
    手段に格納された前記情報が前記ミスを示すときには前
    記ミスに対して最適化された記憶アクセス待ち時間コー
    ド順序を指定するための分岐命令を挿入するための手段
    をさらに含み、前記分岐論理が前記分岐命令に応答する
    請求項13記載のシステム。
  19. 【請求項19】前記分岐命令が、前記分岐論理が応答す
    る前記階層記憶の或るレベルを指定する請求項18記載
    のシステム。
  20. 【請求項20】階層記憶と、記憶アクセス命令を含む静
    的命令順序と、それぞれが前記階層記憶の或るレベルで
    のヒットまたはミスの一方を起こす前記記憶アクセス命
    令の実行に依存して最適化された関連の記憶アクセス待
    ち時間コード順序とを含み、前記階層記憶に格納された
    命令およびデータを処理するためのコンピュータ・シス
    テムであって、 前記命令順序を取り出し、デコードし、実行するため
    の、前記階層記憶に結合されたプロセッサを備え、 前記プロセッサが、 前記記憶アクセス命令の前記実行が前記ヒットを起こし
    たのか前記ミスを起こしたのかを示す情報を格納するた
    めの手段と、 前記格納手段に格納された前記情報が前記ヒットを示す
    ときには前記階層記憶の前記レベルでのヒットに対して
    最適化された記憶アクセス待ち時間コード順序に分岐
    し、前記格納手段に格納された前記情報が前記ミスを示
    すときには前記階層記憶の前記レベルでのミスに対して
    最適化された記憶アクセス待ち時間コード順序に分岐す
    るための、分岐論理とを含み、 前記階層記憶がマルチレベル・キャッシュ記憶を含み、
    前記コンピュータ・システムがレジスタ・セットを含
    み、前記レジスタ・セット中の各レジスタが複数のサブ
    フィールドを含み、前記複数のサブフィールドの各々が
    前記キャッシュ記憶の或るレベルと関連していることを
    特徴とする前記システム。
  21. 【請求項21】前記格納手段が、前記キャッシュ記憶の
    複数のレベルにアクセスし、前記キャッシュ記憶の連続
    するレベルでの前記ヒットおよび前記ミスに従って前記
    情報を前記複数のサブフィールドに記録するためのキャ
    ッシュ・レコード・レジスタ管理装置をさらに含み、前
    記分岐論理が前記複数のサブフィールドに記録された前
    記情報に応答する請求項20記載のシステム。
  22. 【請求項22】記キャッシュ・レコード・レジスタ・
    セットが、アーキテクチャ可視性のレジスタを含むレジ
    スタ・ファイルの一部である請求項15記載のシステ
    ム。
JP05361997A 1996-03-14 1997-03-07 最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム Expired - Fee Related JP3290372B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/616131 1996-03-14
US08/616,131 US5761515A (en) 1996-03-14 1996-03-14 Branch on cache hit/miss for compiler-assisted miss delay tolerance

Publications (2)

Publication Number Publication Date
JPH1091455A JPH1091455A (ja) 1998-04-10
JP3290372B2 true JP3290372B2 (ja) 2002-06-10

Family

ID=24468174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05361997A Expired - Fee Related JP3290372B2 (ja) 1996-03-14 1997-03-07 最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム

Country Status (2)

Country Link
US (1) US5761515A (ja)
JP (1) JP3290372B2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3218932B2 (ja) * 1995-07-06 2001-10-15 株式会社日立製作所 データプリフェッチコード生成方法
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US5987254A (en) * 1997-07-14 1999-11-16 Hewlett Packard Company System-wide memoization of array dependence information
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US5983325A (en) * 1997-12-09 1999-11-09 Advanced Micro Devices, Inc. Dataless touch to open a memory page
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6430683B1 (en) 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6505277B1 (en) * 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
JP2001325111A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 投機機構向けコンパイル方法
US20060206874A1 (en) * 2000-08-30 2006-09-14 Klein Dean A System and method for determining the cacheability of code at the time of compiling
US6845501B2 (en) * 2001-07-27 2005-01-18 Hewlett-Packard Development Company, L.P. Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch
US7100157B2 (en) * 2002-09-24 2006-08-29 Intel Corporation Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor
US20040143821A1 (en) * 2003-01-21 2004-07-22 Sun Microsystems, Inc. Method and structure for converting data speculation to control speculation
US8180943B1 (en) * 2003-03-27 2012-05-15 Nvidia Corporation Method and apparatus for latency based thread scheduling
JP4837247B2 (ja) * 2003-09-24 2011-12-14 パナソニック株式会社 プロセッサ
JP2005115600A (ja) * 2003-10-07 2005-04-28 Hitachi Ltd 情報処理装置及び方法
US20050223385A1 (en) * 2004-03-31 2005-10-06 Christof Braun Method and structure for explicit software control of execution of a thread including a helper subthread
US7711928B2 (en) * 2004-03-31 2010-05-04 Oracle America, Inc. Method and structure for explicit software control using scoreboard status information
US7269805B1 (en) 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
US7231621B1 (en) 2004-04-30 2007-06-12 Xilinx, Inc. Speed verification of an embedded processor in a programmable logic device
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7506325B2 (en) 2004-10-07 2009-03-17 International Business Machines Corporation Partitioning processor resources based on memory usage
US20060080661A1 (en) * 2004-10-07 2006-04-13 International Business Machines Corporation System and method for hiding memory latency
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8966457B2 (en) 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9176878B2 (en) * 2012-03-15 2015-11-03 Oracle International Corporation Filtering pre-fetch requests to reduce pre-fetching overhead
US9098296B2 (en) 2012-06-17 2015-08-04 Freescale Semiconductor, Inc. Method for reducing memory latency in processor
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US10140210B2 (en) * 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
CN113127065B (zh) * 2021-04-19 2022-07-08 之江实验室 一种基于纯缺失检测方法的存算一体程序划分方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043870A (en) * 1982-02-24 1991-08-27 At&T Bell Laboratories Computer with automatic mapping of memory contents into machine registers during program execution
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
EP0365188B1 (en) * 1988-10-18 1996-09-18 Hewlett-Packard Company Central processor condition code method and apparatus
US5303377A (en) * 1990-03-27 1994-04-12 North American Philips Corporation Method for compiling computer instructions for increasing instruction cache efficiency
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
US5175856A (en) * 1990-06-11 1992-12-29 Supercomputer Systems Limited Partnership Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution
JPH04239323A (ja) * 1991-01-14 1992-08-27 Nec Corp 階層形命令制御における命令キャッシュ方式
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5664193A (en) * 1995-11-17 1997-09-02 Sun Microsystems, Inc. Method and apparatus for automatic selection of the load latency to be used in modulo scheduling in an optimizing compiler

Also Published As

Publication number Publication date
JPH1091455A (ja) 1998-04-10
US5761515A (en) 1998-06-02

Similar Documents

Publication Publication Date Title
JP3290372B2 (ja) 最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム
KR100958705B1 (ko) 로드 동작들의 추론적 결과들을 레지스터 값들에링크시키는 시스템 및 방법
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
TWI383320B (zh) 具有相關機制以預測是否載入與較舊儲存相關之處理器及相關方法和電腦系統
JP4538462B2 (ja) 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機
US7487340B2 (en) Local and global branch prediction information storage
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
JP3866261B2 (ja) ロード/ストア操作をバイパスするために投機的ソースオペランドを使用するシステムおよび方法
EP0738962B1 (en) Computer processing unit employing aggressive speculative prefetching of instruction and data
KR100981168B1 (ko) 데이터-추론-실행을 지원하는 마이크로프로세서에서 사용을위한 스케쥴러
JP2889955B2 (ja) 分岐予測の方法とそのための装置
US20050247774A1 (en) System and method for validating a memory file that links speculative results of load operations to register values
US20070288733A1 (en) Early Conditional Branch Resolution
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
US9378022B2 (en) Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
US20070288730A1 (en) Predicated Issue for Conditional Branch Instructions
US20040193849A1 (en) Predicated load miss handling
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
US7565658B2 (en) Hidden job start preparation in an instruction-parallel processor system
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
CN116414458A (zh) 指令处理方法以及处理器
US7694110B1 (en) System and method of implementing microcode operations as subroutines
WO2004099978A2 (en) Apparatus and method to identify data-speculative operations in microprocessor

Legal Events

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