JPH1091455A - キャッシュ・ヒット/ミスにおける分岐 - Google Patents

キャッシュ・ヒット/ミスにおける分岐

Info

Publication number
JPH1091455A
JPH1091455A JP9053619A JP5361997A JPH1091455A JP H1091455 A JPH1091455 A JP H1091455A JP 9053619 A JP9053619 A JP 9053619A JP 5361997 A JP5361997 A JP 5361997A JP H1091455 A JPH1091455 A JP H1091455A
Authority
JP
Japan
Prior art keywords
instruction
storage
storage access
miss
level
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
JP9053619A
Other languages
English (en)
Other versions
JP3290372B2 (ja
Inventor
Marshall Burton Charles Iii
チャールズ・マーシャル・バートン・サード
Kummer Dubei Puradeiipu
プラディープ・クマール・デュベイ
Hamubaato Moreno James
ジェイム・ハムバート・モレノ
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)

Abstract

(57)【要約】 (修正有) 【課題】キャッシュ・ヒット及び、キャッシュ・ミスの
際、コンバイル時に最適化を図り、多数の記憶階層にわ
たり、命令及びデータの取出しを改善する。解消する。 【解決手段】階層記憶を含み、記憶アクセス命令を含む
静的命令順序、及びそれぞれが記憶階層のあるレベルで
のヒット又はミスの一方を起こす記憶アクセス命令の実
行に依存して最適化された関連の記憶アクセス待ち時間
特定的コード順序を含むコンピュータ・システムにおい
て、命令及びデータを処理する場合、記憶アクセス命令
をデコードし、実行し、記憶アクセス命令の実行がヒッ
トを起こしたのかミスを起こしたのかを示す情報を格納
するステップに応答して、その情報がヒットを示すとき
にはキャッシュ・ヒット最適化コード順序に分岐し、そ
の情報がミスを示すときにはキャッシュ・ミス最適化コ
ード順序に分岐する。

Description

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

Claims (35)

    【特許請求の範囲】
  1. 【請求項1】階層記憶を有するコンピュータ・システム
    における実行に対して最適化された記憶アクセス待ち時
    間コード順序を生成するコンピュータ・インプリメンテ
    ーション式方法において、 静的コード順序において記憶アクセス命令を識別するス
    テップと、 前記階層記憶のあるレベルでのヒットに対して最適化さ
    れた、前記記憶アクセス命令に関連する第一の記憶アク
    セス待ち時間コード順序と、前記階層記憶の前記レベル
    でのミスに対して最適化された、前記記憶アクセス命令
    に関連する第二の記憶アクセス待ち時間コード順序とを
    生成するステップと、 前記記憶アクセス命令の実行が前記ヒットを起こしたと
    きには前記第一の記憶アクセス待ち時間コード順序を実
    行し、前記記憶アクセス命令の実行が前記ミスを起こし
    たときには前記第二の記憶アクセス待ち時間コード順序
    を実行するための命令を挿入するステップと、を含むこ
    とを特徴とする方法。
  2. 【請求項2】前記階層記憶の別のレベルでのヒットに対
    して最適化された、前記記憶アクセス命令に関連する第
    三の記憶アクセス待ち時間コード順序と、前記階層記憶
    の前記別のレベルでのミスに対して最適化された、前記
    記憶アクセス命令に関連する第四の記憶アクセス待ち時
    間コード順序とを生成するステップと、 前記記憶アクセス命令の実行が前記別のレベルで前記ヒ
    ットを起こしたときには前記第三の記憶アクセス待ち時
    間コード順序を実行し、前記記憶アクセス命令の実行が
    前記別のレベルで前記ミスを起こしたときには前記第四
    の記憶アクセス待ち時間コード順序を実行するためのも
    う一つの命令を挿入するステップと、をさらに含む請求
    項1記載のコンピュータ・インプリメンテーション式方
    法。
  3. 【請求項3】前記識別ステップが、前記記憶アクセス命
    令を臨界ミスポイントとして識別するステップをさらに
    含み、前記生成ステップが、前記記憶アクセス命令を前
    記臨界ミスポイントとして識別する前記ステップに応答
    する請求項1記載のコンピュータ・インプリメンテーシ
    ョン式方法。
  4. 【請求項4】前記記憶アクセス命令を修飾して、前記記
    憶アクセス命令の前記実行が前記ミスを起こしたかどう
    かを示すためのミスビットを識別するステップをさらに
    含み、前記実行命令が前記ミスビットに応答する請求項
    1記載のコンピュータ・インプリメンテーション式方
    法。
  5. 【請求項5】前記実行命令が、前記第一の記憶アクセス
    待ち時間コード順序に分岐するためのブランチ・オン・
    ヒット命令および前記第二の記憶アクセス待ち時間コー
    ド順序に分岐するためのブランチ・オン・ミス命令の一
    方を含む請求項1記載のコンピュータ・インプリメンテ
    ーション式方法。
  6. 【請求項6】前記コンピュータ・システムがコンパイラ
    を含み、前記方法ステップをコンパイル時で実施する請
    求項1記載のコンピュータ・インプリメンテーション式
    方法。
  7. 【請求項7】階層記憶を含み、記憶アクセス命令を含む
    静的命令順序と、それぞれが前記記憶階層のあるレベル
    でのヒットまたはミスの一方を起こす前記記憶アクセス
    命令の実行に依存して最適化された関連の記憶アクセス
    待ち時間コード順序とを含むコンピュータ・システムに
    おいて命令およびデータを処理するコンピュータ・イン
    プリメンテーション式方法において、 前記記憶アクセス命令をデコードし、実行し、前記記憶
    アクセス命令の前記実行が前記ヒットを起こしたのか前
    記ミスを起こしたのかを示す情報を格納するステップ
    と、 前記格納ステップに応答して、前記情報が前記ヒットを
    示すときにはキャッシュ・ヒット最適化コード順序に分
    岐し、前記情報が前記ミスを示すときにはキャッシュ・
    ミス最適化コード順序に分岐するステップと、を含むこ
    とを特徴とする方法。
  8. 【請求項8】前記記憶アクセス命令が、ロード命令、ス
    トア命令およびタッチ命令の一つである請求項7記載の
    方法。
  9. 【請求項9】前記格納ステップが、前記ヒットまたはミ
    スに関連する前記記憶のレベルを示す情報を格納するス
    テップをさらに含み、前記分岐ステップが前記レベルに
    応答する請求項7記載の方法。
  10. 【請求項10】前記記憶アクセス命令を臨界ミスポイン
    トとして識別する前記ステップをさらに含み、前記記憶
    アクセス待ち時間コード順序が前記臨界ミスポイントと
    関連している請求項7記載の方法。
  11. 【請求項11】前記記憶アクセス命令に関連する分岐命
    令を挿入するステップと、 前記分岐命令をデコードするステップとをさらに含み、
    前記分岐ステップが、前記分岐命令をデコードする前記
    ステップに応答する請求項7記載の方法。
  12. 【請求項12】前記分岐命令が、前記分岐ステップが推
    奨される前記記憶のレベルを指定する請求項11記載の
    方法。
  13. 【請求項13】前記コンピュータ・システムがレジスタ
    ・セットを含み、各レジスタが複数のサブフィールドを
    含み、各サブフィールドが前記マルチレベル・キャッシ
    ュ記憶のあるレベルと関連している請求項7記載の方
    法。
  14. 【請求項14】情報を格納する前記ステップが、 前記実行ステップに応答して前記サブフィールドをデフ
    ォルト設定に初期化するステップと、 前記記憶の複数のレベルにアクセスし、前記記憶の連続
    するレベルでの前記ヒットおよび前記ミスにしたがって
    前記情報を前記サブフィールドに記録するステップとを
    さらに含み、前記分岐ステップが前記サブフィールドに
    記録された前記情報に応答する請求項13記載の方法。
  15. 【請求項15】所与のコンピュータ・システム・インプ
    リメンテーションにおいて前記分岐ステップが任意であ
    る請求項7記載の方法。
  16. 【請求項16】一つの命令順序付け制御を使用して命令
    を実行することができる請求項7記載の方法。
  17. 【請求項17】静的コード順序において記憶アクセス命
    令を識別するステップと、 階層記憶のあるレベルでのヒットに対して最適化され
    た、前記記憶アクセス命令に関連する第一の記憶アクセ
    ス待ち時間コード順序と、前記階層記憶の前記レベルで
    のミスに対して最適化された、前記記憶アクセス命令に
    関連する第二の記憶アクセス待ち時間コード順序とを生
    成するステップと、 前記記憶アクセス命令の実行が前記ヒットを起こしたと
    きには前記第一の記憶アクセス待ち時間コード順序を実
    行し、前記記憶アクセス命令の実行が前記ミスを起こし
    たときには前記第二の記憶アクセス待ち時間コード順序
    を実行するための命令を挿入するステップと、を含む、
    キャッシュ記憶を含むコンピュータ・システムにおいて
    命令およびデータを取り出すコンパイル時最適化方法を
    実施するためにコンピュータによって実行可能な命令の
    プログラムを具現化するコンピュータ読み出し可能なプ
    ログラム記憶装置。
  18. 【請求項18】前記識別ステップが、前記記憶アクセス
    命令を臨界ミスポイントとして識別するステップをさら
    に含み、前記生成ステップが、前記記憶アクセス命令を
    前記臨界ミスポイントとして識別する前記ステップに応
    答する、請求項17記載の方法ステップを実施するため
    にコンピュータによって実行可能な命令のプログラムを
    具現化するコンピュータ読み出し可能なプログラム記憶
    装置。
  19. 【請求項19】前記記憶アクセス命令を修飾して、前記
    記憶アクセス命令の実行が前記ミスを起こしたかどうか
    を示すミスビットを識別するステップをさらに含み、前
    記実行命令が前記ミスビットに応答する、請求項17記
    載の方法ステップを実施するためにコンピュータによっ
    て実行可能な命令のプログラムを具現化するコンピュー
    タ読み出し可能なプログラム記憶装置。
  20. 【請求項20】前記階層記憶の別のレベルでのヒットに
    対して最適化された、前記記憶アクセス命令に関連する
    第三の記憶アクセス待ち時間コード順序と、前記階層記
    憶の前記別のレベルでのミスに対して最適化された、前
    記記憶アクセス命令に関連する第四の記憶アクセス待ち
    時間コード順序とを生成するステップと、 前記記憶アクセス命令の実行が前記別のレベルで前記ヒ
    ットを起こしたときには前記第三の記憶アクセス待ち時
    間コード順序を実行し、前記記憶アクセス命令の実行が
    前記別のレベルで前記ミスを起こしたときには前記第四
    の記憶アクセス待ち時間コード順序を実行するためのも
    う一つの命令を挿入するステップと、をさらに含む、請
    求項17記載の方法ステップを実施するためにコンピュ
    ータによって実行可能な命令のプログラムを具現化する
    コンピュータ読み出し可能なプログラム記憶装置。
  21. 【請求項21】前記実行命令が、前記記憶の指定レベル
    での前記ヒットまたは前記ミスにしたがって前記記憶ア
    クセス待ち時間コード順序の一方に分岐するためのブラ
    ンチ・オン・ヒット命令およびブランチ・オン・ミス命
    令の一方を含む、請求項20記載の方法ステップを実施
    するためにコンピュータによって実行可能な命令のプロ
    グラムを具現化するコンピュータ読み出し可能なプログ
    ラム記憶装置。
  22. 【請求項22】前記記憶アクセス命令がロード命令、ス
    トア命令およびタッチ命令の一つである、請求項17記
    載の方法ステップを実施するためにコンピュータによっ
    て実行可能な命令のプログラムを具現化するコンピュー
    タ読み出し可能なプログラム記憶装置。
  23. 【請求項23】記憶に格納された命令およびデータを取
    り出すためのコンピュータ・システムにおいて、前記命
    令が記憶アクセス命令を含み、前記システムが階層記憶
    を含み、記憶アクセス命令を含む静的命令順序と、それ
    ぞれが前記記憶階層のあるレベルでのヒットまたはミス
    の一方を起こす前記記憶アクセス命令の実行に依存して
    最適化された関連の記憶アクセス待ち時間コード順序を
    含み、前記システムが、 前記命令順序を取り出し、デコードし、実行するため
    の、前記記憶に結合されたプロセッサを含み、 前記プロセッサが、 前記記憶アクセス命令の前記実行が前記ヒットを起こし
    たのか前記ミスを起こしたのかを示す情報を格納するた
    めの手段と、 前記格納手段が前記ヒットを示したときにはヒット最適
    化コード順序に分岐し、前記格納手段が前記ミスを示し
    たときにはミス最適化コード順序に分岐するための、前
    記記憶に結合された分岐論理とを含むことを特徴とする
    システム。
  24. 【請求項24】前記記憶アクセス命令がロード命令、ス
    トア命令およびタッチ命令の一つである請求項23記載
    のシステム。
  25. 【請求項25】前記記憶アクセス命令が、前記レジスタ
    を識別するキャッシュ・レコード・レジスタ・フィール
    ドを含む請求項23記載のシステム。
  26. 【請求項26】一つの命令順序付け制御を使用して前記
    命令を実行することができる請求項23記載のシステ
    ム。
  27. 【請求項27】所与のコンピュータ・システム・インプ
    リメンテーションにおいて前記分岐論理の実行が任意で
    ある請求項23記載のシステム。
  28. 【請求項28】前記格納手段が、前記ヒットまたはミス
    に関連する前記記憶のレベルを示す情報を格納するため
    の手段をさらに含み、前記分岐論理が前記レベルに応答
    する請求項23記載のシステム。
  29. 【請求項29】前記階層記憶の別のレベルでのヒットに
    対して最適化された、前記記憶アクセス命令に関連する
    第三の記憶アクセス待ち時間コード順序と、前記階層記
    憶の前記別のレベルでのミスに対して最適化された、前
    記記憶アクセス命令に関連する第四の記憶アクセス待ち
    時間コード順序とを生成するための前記コンパイラ手段
    と、 前記記憶アクセス命令の実行が前記別のレベルで前記ヒ
    ットを起こしときには前記第三の記憶アクセス待ち時間
    コード順序に分岐し、前記記憶アクセス命令の実行が前
    記別のレベルで前記ミスを起こしときには前記第四の記
    憶アクセス待ち時間コード順序に分岐するための前記分
    岐論理とをさらに含む請求項28記載のシステム。
  30. 【請求項30】前記コンパイラ手段が、前記記憶アクセ
    ス命令を臨界ミスポイントとして識別するための手段を
    さらに含み、前記記憶アクセス待ち時間コード順序が前
    記臨界ミスポイントと関連している請求項23記載のシ
    ステム。
  31. 【請求項31】前記生成手段が、前記格納手段が前記ヒ
    ットを示したときには前記ヒット最適化コード順序を指
    定し、前記格納手段が前記ミスを示したときには前記ミ
    ス最適化コード順序を指定するための分岐命令を挿入す
    るための手段をさらに含み、前記分岐論理が前記分岐命
    令に応答する請求項23記載のシステム。
  32. 【請求項32】前記分岐命令が、前記分岐論理が応答す
    る前記記憶のレベルを指定する請求項31記載のシステ
    ム。
  33. 【請求項33】前記コンピュータ・システムがレジスタ
    ・セットを含み、各レジスタが複数のサブフィールドを
    含み、各サブフィールドが前記マルチレベル・キャッシ
    ュ記憶のあるレベルと関連している請求項23記載のシ
    ステム。
  34. 【請求項34】情報を格納するための前記手段が、前記
    記憶の複数のレベルにアクセスし、前記記憶の連続する
    レベルでの前記ヒットおよび前記ミスにしたがって前記
    情報を前記サブフィールドに記録するためのキャッシュ
    ・レコード・レジスタ管理装置をさらに含み、前記分岐
    論理が前記サブフィールドに記録された前記情報に応答
    する請求項23記載のシステム。
  35. 【請求項35】前記キャッシュ・レコード・レジスタ・
    セットが、アーキテクチャ可視性のレジスタを含むレジ
    スタ・ファイルの一部である請求項23記載のシステ
    ム。
JP05361997A 1996-03-14 1997-03-07 最適化された記憶アクセス待ち時間コード順序を生成する方法、命令およびデータを処理する方法、コンピュータ・システム Expired - Fee Related JP3290372B2 (ja)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
JPH1091455A true JPH1091455A (ja) 1998-04-10
JP3290372B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534476A (ja) * 2013-09-24 2016-11-04 インテル・コーポレーション キャッシュ占有決定および命令スケジューリングのための方法および装置

Families Citing this family (35)

* 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
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
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
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
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
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
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 情報処理装置及び方法
US7711928B2 (en) * 2004-03-31 2010-05-04 Oracle America, Inc. Method and structure for explicit software control using scoreboard status information
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
US7231621B1 (en) 2004-04-30 2007-06-12 Xilinx, Inc. Speed verification of an embedded processor in a programmable logic device
US7269805B1 (en) 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20060080661A1 (en) * 2004-10-07 2006-04-13 International Business Machines Corporation System and method for hiding memory latency
US7506325B2 (en) 2004-10-07 2009-03-17 International Business Machines Corporation Partitioning processor resources based on memory usage
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
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
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534476A (ja) * 2013-09-24 2016-11-04 インテル・コーポレーション キャッシュ占有決定および命令スケジューリングのための方法および装置
US10140210B2 (en) 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling

Also Published As

Publication number Publication date
US5761515A (en) 1998-06-02
JP3290372B2 (ja) 2002-06-10

Similar Documents

Publication Publication Date Title
JPH1091455A (ja) キャッシュ・ヒット/ミスにおける分岐
US6263427B1 (en) Branch prediction mechanism
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
EP0738962B1 (en) Computer processing unit employing aggressive speculative prefetching of instruction and data
US8719806B2 (en) Speculative multi-threading for instruction prefetch and/or trace pre-build
USRE35794E (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5903750A (en) Dynamic branch prediction for branch instructions with multiple targets
US7010648B2 (en) Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
EP0933698B1 (en) Probing computer memory latency
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
CN101501636A (zh) 用于基于动态可改变延迟来执行处理器指令的方法和设备
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
US7051193B2 (en) Register rotation prediction and precomputation
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
US7565658B2 (en) Hidden job start preparation in an instruction-parallel processor system
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US8359589B2 (en) Helper thread for pre-fetching data
WO2021036173A1 (zh) 解释执行字节码指令流的方法及装置
US7600102B2 (en) Condition bits for controlling branch processing
TW202344988A (zh) 用於最佳化迴路重放性能的處理器中捕獲迴路的最佳化
WO2018083550A1 (en) Single-thread processing of multiple code regions
MXPA98002291A (en) Apparatus for detection based on region of interference between reordered memory operations in a process

Legal Events

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