JPH10333986A - プロセス・バスに対するキャッシュ操作の要求ベースの発行方法及び装置 - Google Patents

プロセス・バスに対するキャッシュ操作の要求ベースの発行方法及び装置

Info

Publication number
JPH10333986A
JPH10333986A JP10097822A JP9782298A JPH10333986A JP H10333986 A JPH10333986 A JP H10333986A JP 10097822 A JP10097822 A JP 10097822A JP 9782298 A JP9782298 A JP 9782298A JP H10333986 A JPH10333986 A JP H10333986A
Authority
JP
Japan
Prior art keywords
cache
architectural
operations
processor
instruction
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
JP10097822A
Other languages
English (en)
Other versions
JP3007871B2 (ja
Inventor
Kumar Arimiri Ravi
ラビ・クマール・アリミリ
John Steven Dodson
ジョン・スチィーブン・ダッドソン
Don Lewis Jerry
ジェリー・ドン・ルイス
Edward Williams Derek
デレク・エドワード・ウイリアムズ
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 JPH10333986A publication Critical patent/JPH10333986A/ja
Application granted granted Critical
Publication of JP3007871B2 publication Critical patent/JP3007871B2/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/46Multiprogramming arrangements
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

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

Abstract

(57)【要約】 【課題】 コンピュータ・システムにおいてアーキテク
チャ操作を管理し、投機的に発行する方法を開示する。 【解決手段】 第1のアーキテクチャ操作をスヌープ
し、複数のグラニュラ・アーキテクチャ操作に変換して
大規模アーキテクチャ操作を実施する。第1のアーキテ
クチャ操作はメモリ・ブロックに向けられた第1のキャ
ッシュ命令とすることができ、メモリ・ブロックに関連
づけられたページに含まれるメモリ・ブロックに向けら
れた複数のキャッシュ命令が発行される。グラニュラ・
アーキテクチャ操作はコンピュータ・システムのプロセ
ッサ・バスに送られる。プロセッサ・バス履歴テーブル
を使用して、大規模アーキテクチャ操作の記録を記憶す
ることができる。次に履歴テーブルによって、大規模ア
ーキテクチャ操作に包含されるその後の任意のアーキテ
クチャ操作をフィルタ除外することができる。履歴テー
ブルは、プロセッサ・バスを監視してテーブルに記録さ
れた大規模アーキテクチャ操作が依然として有効である
ように保証する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にはコンピュー
タ・システムに関し、具体的にはキャッシュ命令などの
アーキテクチャ・レベルの操作を最適化する方法に係わ
る。
【0002】
【従来の技術】従来のコンピュータ・システム10の基
本構造を図1に示す。コンピュータ・システム10は、
1つまたは複数の処理ユニットを有することができ、そ
のうちの2つ12a及び12bが図示されている。処理
装置は、入出力(I/O)装置14(表示モニタ、キー
ボード、永続記憶装置など)、処理装置がプログラム命
令を実行するために使用するメモリ・デバイス16(ラ
ンダム・アクセス・メモリ、またはRAM)、及び、コ
ンピュータに最初に電源を入れたときに周辺装置の1つ
(通常は永続記憶装置)からオペレーティング・システ
ムを探し出してロードすることを主な目的とするファー
ムウェア18を含む様々な周辺装置に接続されている。
処理装置12a及び12bは、汎用相互接続機構または
バス20を含む様々な手段によって周辺装置と通信す
る。コンピュータ・システム10は、たとえばモデムや
プリンタなどに接続するためのシリアル・ポートやパラ
レル・ポートなど、図示されていない多くの追加の構成
要素を有することができる。当業者ならさらに、図1の
ブロック図に図示されている構成要素と共に使用可能な
他の構成要素もあることがわかるであろう。たとえば、
ビデオ表示モニタを制御するためにディスプレイ・アダ
プタを使用したり、メモリ16にアクセスするためにメ
モリ・コントローラを使用することができる。また、I
/O装置14をバス20に直接接続する代わりに、二次
(I/O)バスに接続することもでき、二次バスはさら
にI/Oブリッジに接続され、I/Oブリッジはバス2
0に接続される。コンピュータは3個以上の処理装置を
有することもできる。
【0003】対称マルチプロセッサ(SMP)コンピュ
ータでは、すべての処理装置は一般に同じである。すな
わち、すべての処理装置が命令及びプロトコルの共通の
セットまたはサブセットを使用して動作し、一般に同じ
アーキテクチャを有する。典型的なアーキテクチャは図
1に示す通りである。処理装置は、複数のレジスタと、
コンピュータを動作させるためにプログラム命令を実行
する実行ユニットとを含むプロセッサ・コア22を含
む。処理装置の例としては、インターナショナル・ビジ
ネス・マシーンズ・コーポレイション(IBM)が販売
するPowerPCTMプロセッサがある。処理装置は、
高速メモリ・デバイスを使用して実装された命令キャッ
シュ24やデータ・キャッシュ26などの1つまたは複
数のキャッシュも有することができる。キャッシュは、
メモリ16から値をロードする長いステップを回避する
ことによって処理を高速化する目的で、プロセッサによ
って繰り返しアクセスされる可能性のある値を一時的に
記憶するために一般的に使用される。これらのキャッシ
ュは、単一の集積チップ28上にプロセッサ・コアと一
体にパッケージされているときは、「オンボード」キャ
ッシュと呼ばれる。各キャッシュには、プロセッサ・コ
アとキャッシュ・メモリとの間のデータの転送を管理す
るキャッシュ・コントローラ(図示せず)が付随してい
る。
【0004】処理装置12は、オンボード(一次)キャ
ッシュ24及び26をサポートするため二次キャッシュ
(L2)と呼ばれるキャッシュ30などの追加のキャッ
シュを備えることができる。言い換えると、キャッシュ
30はメモリ16とオンボード・キャッシュとの間の媒
介として機能し、オンボード・キャッシュよりもはるか
に大量の情報(命令及びデータ)を記憶することができ
るが、アクセス・ペナルティは長い。たとえば、キャッ
シュ30は、256キロバイトまたは512キロバイト
の記憶容量を有するチップとすることができ、プロセッ
サは64キロバイトの合計記憶容量を持つオンボード・
キャッシュを有するIBM PowerPCTM604シ
リーズのプロセッサとすることができる。キャッシュ3
0はバス20に接続され、メモリ16からプロセッサ・
コア22への情報のロードはすべてキャッシュ30を介
して行わなければならない。図1には二次キャッシュ階
層しか図示されていないが、多くのレベルの直列接続さ
れたキャッシュを備えたマルチレベル・キャッシュ階層
を設けることもできる。
【0005】キャッシュは、様々な命令及びデータ値を
個別に記憶する多くのブロックまたはラインを有する。
キャッシュ・ライン(ブロック)の例としては、アドレ
ス・タグ・フィールド、状態ビット・フィールド、包含
ビット・フィールド、実際の命令及びデータを記憶する
値フィールドがある。状態ビット・フィールドと包含ビ
ット・フィールドは、マイクロプロセッサ・コンピュー
タ・システム内のキャッシュ・コヒーレンシを維持する
ために使用される(キャッシュに記憶されている値の有
効性を示す)。アドレス・タグは、対応するメモリ・ブ
ロックのフル・アドレスのサブセットである。着信有効
アドレスとアドレス・タグ・フィールド内のタグの1つ
との比較一致によって、キャッシュ「ヒット」が示され
る。キャッシュ内のすべてのアドレス・タグ(及び場合
によっては状態ビット・フィールドと包含ビット・フィ
ールド)の集まりをディレクトリと呼び、すべての値フ
ィールドの集まりはキャッシュ項目配列である。図1の
キャッシュ30は、そのようなキャッシュ項目配列32
とキャッシュ・ディレクトリ34を示している。
【0006】所与のキャッシュのセット内のすべてのブ
ロックがいっぱいになり、そのキャッシュがそのいっぱ
いになったセットにマップする記憶場所に対する「読取
り」または「書込み」要求を受け取った場合、そのキャ
ッシュは現在セット内にあるブロックの1つの「追い出
し」をしなければならない。キャッシュは、当業者に周
知のいくつかの手段(最低使用頻度(LRU)法、ラン
ダム法、疑似LRU法など)の1つによって、追い出す
ブロックを選択する。図1にはLURユニット36が図
示されている。選択されたブロック内のデータが変更さ
れた場合、そのデータはメモリ階層内の次に低いレベル
に書き込まれる。これは他のキャッシュ(この場合は一
次キャッシュすなわちオンボード・キャッシュ)または
メイン・メモリ(この場合は図1の2レベル・アーキテ
クチャに図示するような二次キャッシュ)でもよい。包
含の原理により、階層の下位レベルは書き込まれた変更
データを保持するために使用可能なブロックをすでに持
っていることになる。しかし、選択されたブロック内の
データが変更されなかった場合、そのブロックは単に放
棄されるだけで、階層内の次に低いレベルには書き込ま
れない。階層の1つのレベルからブロックを除去するこ
のプロセスを「追い出し」と呼ぶ。このプロセスの終わ
りに、キャッシュは追い出されたブロックのコピーをも
はや保持しない。
【0007】従来のキャッシュは多くの待ち行列を持
つ。キャッシュ可能ストア待ち行列38(これは着信し
たデータをフェッチしてそのキャッシュを再ロードす
る、キャッシュ・ディレクトリ、キャッシュ項目配列、
及びその他の配列のそれぞれの読取り待ち行列と書込み
待ち行列を含むことができる)、キャッシュ抑止ストア
待ち行列40、例えばあるデータに介入する要求を監視
するスヌープ待ち行列42、アーキテクチャ・レベルで
の制御を実行するキャッシュ命令を扱うキャッシュ操作
待ち行列44などがある。たとえば、PowerPCTM
プロセッサは、フラッシュ命令、キル命令、クリーン命
令、タッチ命令など、特にキャッシュに作用を及ぼす特
定の命令を使用する。これらの命令はキャッシュ操作待
ち行列44に格納される。
【0008】ソフトウェアはキャッシュ命令を使用して
キャッシュを管理することができる。命令には監視レベ
ルの命令(コンピュータのオペレーティング・システム
によってのみ実行される)と、ユーザ・レベルの命令
(アプリケーション・プログラムによって実行される)
がある。フラッシュ命令(データ・キャッシュ・ブロッ
ク・フラッシュ「dcbf」)は、キャッシュ・ブロッ
クがメモリ・ブロックの未変更(「共用」または「専
用」)コピーを含む場合はキャッシュ・ブロックを無効
化し、キャッシュ・ブロックがメモリ・ブロックの変更
されたコピーを含む場合は、まず変更された値をメモリ
階層内の下位レベルに書込み(「プッシュ」)、その後
でブロックを無効化することによって、キャッシュ・ブ
ロックを使用可能にする。キル命令(データ・キャッシ
ュ・ブロック無効化「dcbi」、命令キャッシュ・ブ
ロック無効化「icbi」、またはデータ・キャッシュ
・ブロック・ゼロ設定「dcbz」)は、フラッシュ命
令と似ているが、キャッシュ・ブロックをただちに強制
的に無効状態にし、したがって変更されたブロックがキ
ャッシュから押し出されずに殺される点が異なる。クリ
ーン命令(データ・キャッシュ・ブロック・ストア「d
cbst」)は、変更されたブロックをメイン・メモリ
に書き込ませる。これは、変更されたブロックにのみ作
用する。タッチ命令(データ・キャッシュ・ブロック・
タッチ「dcbt」)は、ソフトウェア開始プリフェッ
チ・ヒントを使用してパフォーマンスを向上させる方法
を提供する。
【0009】上述のキャッシュ命令はすべて、プロセッ
サ・コヒーレンシ・グラニュール(granule)と呼ばれ
るサイズを持つブロックに対して作用する。多くのコン
ピュータでは、プロセッサ・コヒーレンシ・グラニュー
ルとしてのブロック・サイズは32バイトである。すな
わち、プロセッサは一次キャッシュのキャッシュ・ブロ
ック内の32バイト・セクタを操作することができる。
しかし、システム・バス・グラニュールは、これより大
きく、たとえば64バイトまたは128バイトである。
すなわち、二次キャッシュからシステム・バスに送られ
るキャッシュ・ラインの全サイズは64バイトまたは1
28バイトである。言い換えると、システム・バスで送
られる命令は、32バイトではなく64バイト・ワード
または128バイト・ワードを参照する。コヒーレンシ
・サイズはさらに異なることがあり、たとえば2レベル
・キャッシュで3つのコヒーレンシ・サイズ(32バイ
トのプロセッサ・コヒーレンシ・グラニュールと、64
バイトのL1コヒーレンシ・グラニュールと、128バ
イトのL2/システム・バス・コヒーレンシ・グラニュ
ール)を有することがある。
【0010】メモリ階層によるコヒーレンシ・サイズの
この変化は、ある種の非効率につながることがある。た
とえば、プロセッサが特定の32バイト・セクタに「i
cbi」命令を出した場合、その命令はシステム・バス
で送られ、64バイト命令として扱われる。次に、プロ
セッサが同じ64バイト・ワードの一部だったもう一つ
の32バイト・セクタのために別の「icbi」命令を
ただちに出した場合、従来のシステムは、その2つの隣
接する32バイト・セクタをキルするのに1つのシステ
ム・バス命令で十分であっても、同じ64バイト・ワー
ドに第2の64バイト「icbi」命令を送る。2つの
異なるプロセスまたはスレッドが、同じキャッシュ命令
の冗長実行になる命令を出した場合、別の問題が発生す
る。たとえば、キャッシュ操作待ち行列に、同じオペラ
ンドを持つ(すなわち、まったく同じ32バイト・キャ
ッシュ・セクタに作用する)2つの「icbi」命令が
含まれている場合がある。この場合、この2つの命令は
冗長に繰り返される。
【0011】コヒーレンシ・グラニュラリティに関する
他の問題は、グラニュールすなわちブロック・サイズが
小さいと特定の大規模プロシージャを完了するのに要す
る命令の数が増えることである。たとえば、プロシージ
ャが、メモリのいくつかのページ(ページとは複数の連
続したメモリ・ブロックである)のコピーなどのページ
・レベルの操作を実行するとする。ページが4キロバイ
トでプロセッサ・コヒーレンシ・グラニュールが32バ
イトだとすれば、ページ全体のフラッシュを実行するプ
ロセッサは、128個の「dcbf」命令を出さなけれ
ばならないが、コヒーレンシ・グラニュールが64バイ
ト以上だとすると、命令の数はそれに比例して減少する
ことになる。その結果、プロシージャが多くのページ・
レベル・キャッシュ操作を行うときは、パフォーマンス
が低下する。キャッシュ命令を出すプロセッサは他のす
てべてのプロセッサからのスヌープ応答を待ってからで
なければ命令が完了したことを確認することができない
ため、プロセッサの数が多くなるにつれてパフォーマン
スはさらに低下する。
【0012】さらに、第1のプロセッサが出したキャッ
シュ命令に第2のプロセッサがどのように応答するかを
考えてみる。プロセッサ・コヒーレンシ・グラニュール
が32バイトでシステム・バス・グラニュールが128
バイトである場合は、第1のプロセッサが32バイトの
セクタをフラッシュしようとするとき、第2のプロセッ
サは結局は128バイトのフラッシュのスヌープを行う
ことになる。したがって、第1のプロセッサが単一の3
2バイト・セクタをフラッシュしたいに過ぎない場合で
あっても、第2のプロセッサのキャッシュでそのような
セクタを4個フラッシュしなければならないことにな
る。しかし、この問題は上述のようなページ・レベルの
キャッシュ操作を行う場合にはさらに悪化し、その結
果、多数(128)のそのような128バイトのスヌー
プ・フラッシュが行われることになる。命令とそれに続
く応答によって、大量のアドレス・トラフィックが生じ
る。したがって、バス・トラフィックを減少させた、ペ
ージ・レベルのキャッシュ命令などの大規模なアーキテ
クチャ操作を処理する方法を考案することが望ましい。
さらに、その方法の結果、メモリ階層のコヒーレンシ・
グラニュールの変化に関係なく、実行する必要のあるキ
ャッシュ命令の数が減少し、それらの命令の実行が迅速
化すればさらに有利であろう。
【0013】
【発明が解決しようとする課題】したがって、本発明の
目的はコンピュータ・システムにおけるアーキテクチャ
操作、特にキャッシュ命令を処理する改良された方法を
提供する。
【0014】本発明の他の目的は、メモリ階層のコヒー
レンシ・グラニュール・サイズに伴う非効率を少なくす
る方法を提供することである。
【0015】本発明の他の目的は、メモリ階層のコヒー
レンシ・グラニュール・サイズの変化を利用する方法を
提供することである。
【0016】
【課題を解決するための手段】上記の目的は、コンピュ
ータ・システムにおけるアーキテクチャ操作を管理する
方法であって、一般に第1のアーキテクチャ操作をスヌ
ープするステップと、第1のアーキテクチャ操作を複数
のグラニュラ・アーキテクチャ操作に変換して大規模ア
ーキテクチャ操作を実施するステップとを含む方法で達
成される。第1のアーキテクチャ操作はメモリ・ブロッ
クに送られる第1のキャッシュ命令とすることができ、
前記変換ステップは、メモリ・ブロックに関連づけられ
たページに含まれるメモリ・ブロックに対して向けられ
た複数のキャッシュ命令を発行するステップを含む。グ
ラニュラ・アーキテクチャ操作はコンピュータ・システ
ムのプロセッサ・バスに送られる。履歴テーブルを使用
して大規模アーキテクチャ操作の記録を記憶することが
できる。次にその履歴テーブルによって、大規模アーキ
テクチャ操作に包含されるその後の任意のアーキテクチ
ャ操作をフィルタ除去することができる。
【0017】
【発明の実施の形態】図面、特に図2を参照すると、本
発明により構成された単純化されたメモリ階層50の一
実施例が図示されている。メモリ階層50は、システム
・バス54に接続されたメモリ・デバイス52と、やは
りシステム・バス54に接続された2つのキャッシュ5
6a及び56bとを含む。好ましい実施例では、各キャ
ッシュ56a及び56bは同じである。マルチプロセッ
サ・コンピュータ・システムに2個以上のプロセッサが
備えられている場合、メモリ階層はさらに追加のキャッ
シュを含む。キャッシュ56aはキャッシュ論理回路5
8を含み、キャッシュ論理回路58はキャッシュ・ディ
レクトリと、キャッシュ項目配列と、LRUユニット
と、キャッシュ・ラインに書込みを行い、キャッシュ・
ヒットを検出し、記憶されている値を読み取る適切な論
理回路とを含む。キャッシュ論理回路はプロセッサ・バ
ス60によってプロセッサ、またはメモリ階層のプロセ
ッサ側に接続されている。キャッシュ56aはさらに、
キャッシュ操作待ち行列62を含む1つまたは複数の待
ち行列を有する。キャッシュ操作待ち行列62は、従来
の技術の項で前述したようなキャッシュ命令の順次リス
トを含む。後述するように、キャッシュ操作は、一般
に、その結果としてバス操作が行われるロード、スト
ア、またはフェッチ以外の操作を含む「アーキテクチ
ャ」操作のクラスの一部である。
【0018】図の実施例では、メモリ階層50のコヒー
レンシ・グラニュール・サイズ、すなわちブロック・サ
イズは様々である。一実施例では、32バイト・プロセ
ッサ・コヒーレンシ・グラニュールと、64バイトのシ
ステム・バス・コヒーレンシ・グラニュールを使用す
る。コヒーレンシ・グラニュール・サイズが異なること
に伴う非効率は、待ち行列コントローラ64を使用する
ことによって低減される。待ち行列コントローラ64は
キャッシュ操作待ち行列62に接続され、待ち行列にど
の命令を入れるかを制御する。待ち行列コントローラ6
4は、待ち行列62に入っている現在の項目を、待ち行
列にロードする新しい項目と連想的に比較する適切な論
理回路を含む。比較の結果、新しい項目が現行項目と重
複するために新しい項目を実行する必要がないことが示
された場合、その新しい項目は動的に現行項目に折り畳
まれる。すなわち単に待ち行列62にロードされない。
【0019】第1の32バイト・セクタを無効化するた
めに、キャッシュ56aに関連づけられたプロセッサに
よってPowerPCTMの「icbi」などの第1のキ
ル命令が発行される、以下のような例を考えてみる。第
1のキル命令は待ち行列62に入れられる。そのすぐ後
に(第1のキル命令がまだ待ち行列に入っている間
に)、同じプロセッサが第2の「icbi」命令を、今
度は第2の32バイトセクタに対して発行する。しかし
この第2のセクタは、システム・バスのコヒーレンシ・
グラニュールに基づいて第1の32バイト・セクタを補
完するセクタである。言い換えると、第2の32バイト
・セクタはメモリ・デバイス52内で第1の32バイト
・セクタと連続している。待ち行列コントローラ64
は、第2の32バイトセクタのアドレスを待ち行列62
内の前の項目と連想的に比較し、前の「icbi」命令
が大きなシステム・バス・グラニュラリティによって第
2の32バイト・アドレスに関連づけられたアドレスに
ついて発行されていないか判断する。この例では、待ち
行列コントローラが第2のキル命令をまだ待ち行列内に
ある第1のキル命令と関連づけるため(2つのキル命令
は同じコヒーレンシ・グラニュールにある)、比較の結
果は肯定になる。この結果に基づいて、待ち行列コント
ローラは第2のキル命令を待ち行列62にロードしな
い。
【0020】キャッシュ命令を現行待ち行列項目に動的
に折り畳むことによって、システム・バス上のアドレス
操作を大幅に減少させることができる。プロセッサから
見ると、折り畳まれた命令は完全に実行されているが、
レーテンシはまったく必要としない。この利点は、キャ
ッシュ操作待ち行列の項目数が増えるにつれ、またシス
テム・バス・コヒーレンシ・グラニュール・サイズが大
きくなるにつれ、大きくなる。図の実施例では、キャッ
シュ命令待ち行列の項目数は8である。待ち行列コント
ローラ64に必要な論理回路は比較的単純であり、得ら
れる利点に関しては特にそうである。
【0021】キャッシュ56a及び56bは他の方法を
使用して、コヒーレンシ・グラニュール・サイズに伴う
非効率を最小限にする。従来の技術の項で前述したよう
に、キャッシュ命令はページ・レベル操作の一部として
発行されることが多く、プロシージャを処理するのに多
くのバス操作を必要とする。本発明では、すべての適切
なキャッシュ操作をページ・レベルで投機的に実行する
ことによって、この問題に対処する。言い換えると、プ
ロセッサが第1のコヒーレンシ・サイズでキャッシュ命
令を出した場合、その命令はページ・レベル操作に変換
され、それがシステム・バスに送られる。これによっ
て、影響される1ページ当たり1回のバス操作で済むよ
うになる。比較すると、従来の技術では、ページを完全
にフラッシュするのにシステム・バスで128の32バ
イト・フラッシュを要するが、本発明ではこの手続きは
1つの操作だけで済む。したがって、本発明は特に、多
くのページ・レベル・キャッシュ操作/命令を行うとき
のアドレス・トラフィックを減少させる。
【0022】図2には、各キャッシュがシステム・バス
履歴テーブル66を有する様子が図示されている。シス
テム・バス履歴テーブル66が、システム・バスに対し
て最後に発行されたいくつかの(投機的または通常の)
ページ・レベル操作を追跡する。(上述のように)プロ
セッサ・グラニュラリティのレベルの後の操作を包含す
るページ・レベル操作が最近実行された場合、システム
・バス履歴テーブル66は後の操作をシステム・バスに
通過させないフィルタとして機能する。たとえば、プロ
セッサが32バイト・セクタに対する第1のフラッシュ
命令を出した場合、その命令はページ・レベル操作に変
換され、アクセスされるページのアドレス(たとえばペ
ージ・レベルの20ビット・アドレス)がシステム・バ
ス履歴テーブル66に記録されることになる。その後、
プロセッサが、まだ第1の命令と同じページにある第2
の32バイト・セクタについて第2のフラッシュ命令を
出した場合、システム・バス履歴テーブル66は、第2
の32バイト・セクタを含むそのページ全体がすでに投
機的にフラッシュされているためその第2のフラッシュ
命令が不要であることを認識する。この意味で、これら
のキャッシュ命令の発行は要求ベースである。すなわち
必要なときだけ行われる。
【0023】システム・バス履歴テーブル66はシステ
ム・バスを監視して、テーブルに記録されているページ
・レベル操作が依然として有効であるように保証する。
いずれかのプロセッサが、システム・バス履歴テーブル
66に記録されているページ・レベル操作に影響を与え
る命令を出した場合、その操作はテーブルから除去され
る。この実施例では、履歴テーブルの項目数は20であ
る。
【0024】本発明によるキャッシュ構成はさらに、小
さいコヒーレンシ・グラニュール・サイズに伴う非効率
を最小限にする手段を備える。キャッシュが命令をペー
ジ・レベルのシステム・バスに移すことができるのと同
様に、キャッシュはシステム・バス操作を、この場合も
投機的方式でページ・レベルのプロセッサ・バスに移す
ことができる。言い換えると、キャッシュが第1のコヒ
ーレンシ・サイズでキャッシュ命令をスヌープする場
合、その命令はページ・レベルの操作に投機的に変換さ
れ、それがプロセッサ・バスに送られる。たとえば、キ
ャッシュがシステム・バスから32バイトのフラッシュ
命令を受け取った場合、32バイト・セクタがどのペー
ジに入っているかを判断し、多数(たとえば128)の
キャッシュ命令をプロセッサ・バスに送ってページ全体
を完全にフラッシュする。そのようにしてプロセッサ・
バスに対して発行された最後のいくつかのページ・レベ
ル操作を、プロセッサ・バス履歴テーブル68を使用し
て追跡する。その後、キャッシュがすでにフラッシュさ
れているページの一部である32バイト・セクタについ
て後のフラッシュ命令を受け取った場合、プロセッサ・
バス履歴テーブル68は後の操作がプロセッサ・バスに
渡されないようにするフィルタとして機能する。したが
って、キャッシュ命令の発行はこの場合も要求ベースで
ある。
【0025】ページ・レベル操作を行うこの方法は、多
くのページ・レベルの操作が発行される状況では、実際
に必要なよりも多くの命令をプロセッサ・バスに対して
発行しなければならないことがあるが、アービトレーシ
ョンが単純化されており、パイプライン処理が可能なた
め、操作はより迅速に退去する。ただ1回のアービトレ
ーション・ステップと、その後のキャッシュ命令の(ペ
ージ相当の)バーストがあるだけである。
【0026】プロセッサ・バス履歴テーブル68は、キ
ャッシュがグラニュラリティの低い命令をページ・レベ
ルの操作に変換する複数の命令を生成しない場合でも使
用することができる。たとえば、プロセッサ・バス履歴
テーブル68は、前述のように前にプロセッサ・バスに
送られた(投機的または通常の)命令を追跡することが
できる。
【0027】以上、本発明について特定の実施態様を参
照しながら説明したが、この説明は限定的な意味に解釈
されることを意図したものではない。当業者なら、本発
明の説明を参照すれば、開示されている実施態様の様々
な修正及び本発明の代替実施態様が明らかになるであろ
う。たとえば、本発明をキャッシュ操作だけでなくどの
ような種類のアーキテクチャ操作に適用してもパフォー
マンス向上を達成することができる。履歴テーブルをデ
ィスプレイ・バッファと共に使用して、特定のマルチメ
ディア・プロシージャを改良することもできる。本発明
は一般に、単一のアーキテクチャ操作に加えてより多く
の操作が必要になると見越すことによってより効率的に
処理することができるどのような大規模アーキテクチャ
操作にも適用可能である。したがって、そのような修正
は特許請求の範囲で規定されている本発明の精神または
範囲から逸脱することなく加えることができるものと企
図される。
【0028】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0029】(1)コンピュータ・システムにおいてア
ーキテクチャ操作を管理する方法であって、第1のアー
キテクチャ操作をスヌープする操作と、第1のアーキテ
クチャ操作を複数のグラニュラ・アーキテクチャ操作に
変換して大規模アーキテクチャ操作を実施するステップ
とを含む方法。 (2)第1のアーキテクチャ操作がメモリ・ブロックに
向けられた第1のキャッシュ命令であり、前記変換ステ
ップが、メモリ・ブロックに関連づけられたページに含
まれるメモリ・ブロックに向けられた複数のキャッシュ
命令を発行するステップを含む、上記(1)に記載の方
法。 (3)グラニュラ・アーキテクチャ操作がコンピュータ
・システムのプロセッサ・バスに送られる、上記(1)
に記載の方法。 (4)大規模アーキテクチャ操作の記録を履歴テーブル
に記憶するステップをさらに含む、上記(1)に記載の
方法。 (5)履歴テーブルが、大規模アーキテクチャ操作によ
って実行要求された任意の後のアーキテクチャ操作をフ
ィルタ除外するステップをさらに含む、上記(4)に記
載の方法。 (6)コンピュータ・システムの構成要素においてアー
キテクチャ操作を管理する装置であって、第1のアーキ
テクチャ操作を複数のグラニュラ・アーキテクチャ操作
に変換して大規模アーキテクチャ操作を実施する手段
と、前記大規模アーキテクチャ操作の記録を記憶する履
歴テーブルとを含む装置。 (7)前記アーキテクチャ操作が第1のメモリ・ブロッ
クに向けられた第1のキャッシュ命令であり、前記変換
手段が前記第1のメモリ・ブロックに関連づけられたペ
ージに含まれるメモリ・ブロックに向けられた複数のキ
ャッシュ命令を発行する、上記(6)に記載の装置。 (8)前記変換手段が前記大規模アーキテクチャ操作を
コンピュータ・システムのプロセッサ・バスに送る手段
を含む、上記(6)に記載の装置。 (9)前記履歴テーブルが前記大規模アーキテクチャ操
作によって実行要求された任意の後のアーキテクチャ操
作をフィルタ除外する、上記(6)に記載の装置。
【図面の簡単な説明】
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
【図2】本発明によるキャッシュ構成の一実施例を示す
ブロック図である。
【符号の説明】
12 処理装置 14 入出力装置 16 メモリ・デバイス 18 ファームウェア 20 バス 22 プロセッサ・コア 24 一次キャッシュ 30 二次キャッシュ 32 キャッシュ項目 34 キャッシュ・ディレクトリ 36 LRUユニット 38 キャッシュ可能ストア待ち行列 40 キャッシュ抑止ストア待ち行列 42 スヌープ待ち行列 44 キャッシュ操作待ち行列 50 メモリ階層 52 メモリ・デバイス 54 システム・バス 56 キャッシュ 58 キャッシュ論理回路 60 プロセッサ・バス 62 キャッシュ操作待ち行列う 64 待ち行列コントローラ 66 システム・バス履歴テーブル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スチィーブン・ダッドソン アメリカ合衆国78660 テキサス州フラジ ャービル ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・ルイス アメリカ合衆国78681 テキサス州ラウン ド・ロック アローヘッド・サークル 3409 (72)発明者 デレク・エドワード・ウイリアムズ アメリカ合衆国78728 テキサス州オース チン シングル・トレース 14723

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムにおいてアーキテ
    クチャ操作を管理する方法であって、 第1のアーキテクチャ操作をスヌープする操作と、 第1のアーキテクチャ操作を複数のグラニュラ・アーキ
    テクチャ操作に変換して大規模アーキテクチャ操作を実
    施するステップとを含む方法。
  2. 【請求項2】第1のアーキテクチャ操作がメモリ・ブロ
    ックに向けられた第1のキャッシュ命令であり、前記変
    換ステップが、メモリ・ブロックに関連づけられたペー
    ジに含まれるメモリ・ブロックに向けられた複数のキャ
    ッシュ命令を発行するステップを含む、請求項1に記載
    の方法。
  3. 【請求項3】グラニュラ・アーキテクチャ操作がコンピ
    ュータ・システムのプロセッサ・バスに送られる、請求
    項1に記載の方法。
  4. 【請求項4】大規模アーキテクチャ操作の記録を履歴テ
    ーブルに記憶するステップをさらに含む、請求項1に記
    載の方法。
  5. 【請求項5】履歴テーブルが、大規模アーキテクチャ操
    作によって実行要求された任意の後のアーキテクチャ操
    作をフィルタ除外するステップをさらに含む、請求項4
    に記載の方法。
  6. 【請求項6】コンピュータ・システムの構成要素におい
    てアーキテクチャ操作を管理する装置であって、 第1のアーキテクチャ操作を複数のグラニュラ・アーキ
    テクチャ操作に変換して大規模アーキテクチャ操作を実
    施する手段と、 前記大規模アーキテクチャ操作の記録を記憶する履歴テ
    ーブルとを含む装置。
  7. 【請求項7】前記アーキテクチャ操作が第1のメモリ・
    ブロックに向けられた第1のキャッシュ命令であり、前
    記変換手段が前記第1のメモリ・ブロックに関連づけら
    れたページに含まれるメモリ・ブロックに向けられた複
    数のキャッシュ命令を発行する、請求項6に記載の装
    置。
  8. 【請求項8】前記変換手段が前記大規模アーキテクチャ
    操作をコンピュータ・システムのプロセッサ・バスに送
    る手段を含む、請求項6に記載の装置。
  9. 【請求項9】前記履歴テーブルが前記大規模アーキテク
    チャ操作によって実行要求された任意の後のアーキテク
    チャ操作をフィルタ除外する、請求項6に記載の装置。
JP10097822A 1997-04-14 1998-04-09 アーキテクチャ操作を管理する方法及び装置 Expired - Fee Related JP3007871B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/834113 1997-04-14
US08/834,113 US6173371B1 (en) 1997-04-14 1997-04-14 Demand-based issuance of cache operations to a processor bus

Publications (2)

Publication Number Publication Date
JPH10333986A true JPH10333986A (ja) 1998-12-18
JP3007871B2 JP3007871B2 (ja) 2000-02-07

Family

ID=25266149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10097822A Expired - Fee Related JP3007871B2 (ja) 1997-04-14 1998-04-09 アーキテクチャ操作を管理する方法及び装置

Country Status (3)

Country Link
US (1) US6173371B1 (ja)
JP (1) JP3007871B2 (ja)
KR (1) KR100304318B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250830A (ja) * 2004-03-04 2005-09-15 Hitachi Ltd プロセッサおよび主記憶共有マルチプロセッサ
JP2007207223A (ja) * 2006-01-30 2007-08-16 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
JP2012128842A (ja) * 2010-12-16 2012-07-05 Internatl Business Mach Corp <Ibm> キャッシュ・メモリに対する直接アクセスのための装置および方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020096252A (ko) * 2001-06-19 2002-12-31 인터내셔널 비지네스 머신즈 코포레이션 프로세서에서의 명령 실행 방법, 컴퓨터 시스템에사용하기 위한 프로세서 및 데이터 처리 시스템
US7360021B2 (en) * 2004-04-15 2008-04-15 International Business Machines Corporation System and method for completing updates to entire cache lines with address-only bus operations
US20080172529A1 (en) * 2007-01-17 2008-07-17 Tushar Prakash Ringe Novel context instruction cache architecture for a digital signal processor
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459845A (en) * 1990-12-20 1995-10-17 Intel Corporation Instruction pipeline sequencer in which state information of an instruction travels through pipe stages until the instruction execution is completed
US5526512A (en) * 1993-09-20 1996-06-11 International Business Machines Corporation Dynamic management of snoop granularity for a coherent asynchronous DMA cache
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5812813A (en) * 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250830A (ja) * 2004-03-04 2005-09-15 Hitachi Ltd プロセッサおよび主記憶共有マルチプロセッサ
JP2007207223A (ja) * 2006-01-30 2007-08-16 Internatl Business Mach Corp <Ibm> 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
JP2012128842A (ja) * 2010-12-16 2012-07-05 Internatl Business Mach Corp <Ibm> キャッシュ・メモリに対する直接アクセスのための装置および方法

Also Published As

Publication number Publication date
KR100304318B1 (ko) 2001-09-24
JP3007871B2 (ja) 2000-02-07
KR19980081314A (ko) 1998-11-25
US6173371B1 (en) 2001-01-09

Similar Documents

Publication Publication Date Title
US5996048A (en) Inclusion vector architecture for a level two cache
US5809530A (en) Method and apparatus for processing multiple cache misses using reload folding and store merging
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US6338119B1 (en) Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance
US6223258B1 (en) Method and apparatus for implementing non-temporal loads
JP3067112B2 (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
KR100327935B1 (ko) 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴
JP3434462B2 (ja) 割振り解除方法およびデータ処理システム
US20090132750A1 (en) Cache memory system
JP3714617B2 (ja) キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
US6574710B1 (en) Computer cache system with deferred invalidation
JP3007870B2 (ja) アーキテクチャ操作を管理する方法及び装置
JPH0962572A (ja) ストリーム・フィルタ装置及び方法
JP3669555B2 (ja) 可変キャッシュ・サイズのための改良されたキャッシュ・ディレクトリ・アドレシング方法及び装置
JPH10301849A (ja) キャッシュ・コヒーレンシを維持する方法及び装置
US6574714B2 (en) Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with write-back data cache
US20200371927A1 (en) Multi-level cache security
US5551000A (en) I/O cache with dual tag arrays
US5713004A (en) Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
US5809526A (en) Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
JP3007871B2 (ja) アーキテクチャ操作を管理する方法及び装置
US5920889A (en) Apparatus and method for write miss processing in a copy-back data cache with an allocating load buffer and a non-allocating store buffer

Legal Events

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