JP3218317B2 - 集積キャッシュユニットおよびその構成方法 - Google Patents

集積キャッシュユニットおよびその構成方法

Info

Publication number
JP3218317B2
JP3218317B2 JP01093689A JP1093689A JP3218317B2 JP 3218317 B2 JP3218317 B2 JP 3218317B2 JP 01093689 A JP01093689 A JP 01093689A JP 1093689 A JP1093689 A JP 1093689A JP 3218317 B2 JP3218317 B2 JP 3218317B2
Authority
JP
Japan
Prior art keywords
cache
bus
memory
icu
unit
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 - Lifetime
Application number
JP01093689A
Other languages
English (en)
Other versions
JPH01237836A (ja
Inventor
ジギィ・バロア
Original Assignee
アドバンスト・マイクロ・ディバイシズ・インコーポレーテッド
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 アドバンスト・マイクロ・ディバイシズ・インコーポレーテッド filed Critical アドバンスト・マイクロ・ディバイシズ・インコーポレーテッド
Publication of JPH01237836A publication Critical patent/JPH01237836A/ja
Application granted granted Critical
Publication of JP3218317B2 publication Critical patent/JP3218317B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Description

【発明の詳細な説明】 発明の背景 発明の分野 この発明は、一般的には、キャッシュメモリを編成す
るための方法および装置に関し、特に、フレキシブルな
キャッシュシステム設計を可能とする集積キャッシュユ
ニットを編成するための方法および装置に関する。結果
として得られるキャッシュユニットはプログラム可能で
あり、単一プロセッサ動作をサポートするのに加えて、
たとえばコピーバックおよび所有権方式を実装すること
によってマルチプロセッサ動作をサポートすることがで
きる。また縮小命令セットコンピュータ(RISC)環境で
の高速命令およびデータ処理をサポートすることができ
る、さらにまた単一のチップ上に集積するのに適したア
ーキテクチャで上述した機能のすべてをサポートするこ
とができる。
関連技術の説明 キャッシュメモリおよびキャッシュメモリ用の制御器
は周知である。シングルチップ上にメモリ回路部分と制
御器回路部分との両方を集積するデバイスも知られてい
る。これらは、NECにより製造された市場で入手可能な4
3608を含んでいる。そのようなデバイスは、以後「集積
されたキャッシュユニット(ICU)」と呼ばれる。先行
技術のICUデバイスは、データおよび命令をキャッシュ
するために予め定められたアルゴリズムを利用してい
る。すなわち、先行技術のデバイスはプログラム可能で
ない。以前には、シングルチップ上にキャッシュメモリ
回路部分と、キャッシュ制御器回路部分と、プログラム
可能な回路部分とを集積することは、部分的には回路密
度およびデータ経路の制約のせいで達成されていない。
公知のICUアーキテクチャはさらに、プログラム可能で
ないことに加えて、高速なRISC処理システム、特にマル
チプロセッサ能力を有する高速RISCシステムをサポート
するために必要な回路密度およびデータ経路の制約に関
する問題を克服していない。
キャッシュアルゴリズムの選択または修正またはその
双方が当然に可能となるという柔軟性を有しているとい
う理由で、プログラム可能集積キャッシュユニットを実
現することが望ましい。
先に述べたプログラム可能という特徴を有するシング
ルチップICUも、スペース要件とユニット消費電力要件
とを最小限にするために望ましいであろう。またさら
に、RISC環境と非RISC環境との双方に対して、シングル
プロセッサモードとマルチプロセッサモードとの両方で
高速処理動作をサポートするためにそのような集積キャ
ッシュユニットを使用することが可能であることが望ま
しい。
発明の概要 キャッシュシステム設計のためにフレキシブルに使用
できる集積キャッシュを実現するための方法および装置
が開示されている。この発明の好ましい実施例は単一チ
ップ上にキャッシュメモリとキャッシュコントローラと
の両方を備えており、プログラム可能であり、先に述べ
た他の望ましい特徴を含んでいる。
この発明の好ましい実施例に従えば、適当なキャッシ
ュのオプションビットを設定することにより、ユーザが
所望のキャッシュの特徴を容易に指定することができる
方法および装置によって、フレキシブルなキャッシュシ
ステム設計が達成される。これは、ソフトウェア制御の
下で達成でき、高性能なキャッシュシステムを、少ない
部品で、低コストで、および高い効率の実行能力を持っ
て設計することができる。
この発明の好ましい実施例は、8kバイトのデータと、
512個の20ビットワードのタグと、RISC環境と非RISC環
境との両方においてキャッシュ機能を十分に実現するの
に必要な制御とを含む集積キャッシュユニット(ICU)
に関連して説明される。ICUの好ましい実施例は2個の
バスを有する。その一方はプロセッサインターフェイス
に対するものであり、他方はメモリインターフェイスに
対するものである。
この開示においては、プロセッサバスは非多重化32ビ
ットアドレスおよびデータバスである。プロセッサバス
は、バーストアクセスおよびパイプラインアクセスをサ
ポートしている。さらに、この開示では、メモリバスは
メインメモリへのインターフェイスを与え、マルチプロ
セッサ編成に対応している。
この発明の好ましい実施例によれば、ICUは25メガヘ
ルツを超過する周波数で動作することが可能であり、一
連のシーケンスの中の最初のアクセスに対しては2サイ
クルの、バーストモードのアクセスまたはパイプライン
化アクセスに対しては1サイクルのプロセスアクセス時
間を達成している。それは、フレキシブルな内部キャッ
シュ編成を有する命令キャッシュとしても、データキャ
ッシュとしても使用できる。RISCプロセッサおよび2個
のICU(命令キャッシュおよびデータキャッシュ用)に
より、16kバイトのキャッシュを有する非常に高性能な
プロセッサが実現される。さらにICUを追加することに
より、より大規模なキャッシュを設計することができ
る。
この発明の目的は、たとえば置換アルゴリズムと、キ
ャッシュ編成と、マルチプロセッササポート機構とを指
定するために使用できる、ユーザが使用できる広範囲な
オプションを持ったプログラム可能キャッシュユニット
を実現するための方法および装置を提供することであ
る。
この発明のさらなる目的は、RISCアーキテクチャ環境
と非RISCアーキテクチャ環境との両方において高速なデ
ータおよび命令処理アプリケーションをサポートするの
に適した、プログラム可能な集積キャッシュユニットを
実現するための方法および装置を提供することである。
この発明のなお別の目的は、単一のチップ上に集積す
ることができるキャッシュアーキテクチャで、先に述べ
た目的を実現することである。
開示されたICUは、データキャッシュとしても命令キ
ャッシュとしても使用できる。
さらなる特徴としては、フレキシブルでかつ広範囲な
マルチプロセッササポートのためのハードウェア要件、
モジュール性に関する要件、低消費電力に関する要件な
どが含まれる。バス監視と、所有権機構と、ソフトウェ
ア制御と、ハードウェア制御とを新規なICUと組合せて
用いることにより、キャッシュの整合性を達成すること
ができる。
この発明のこれらおよび他の目的および特徴は、以下
に述べる詳細な説明と、添付の図面とを考慮すれば、当
業者には明らかになるであろう。図において同一の参照
符号は同一の特徴を表わす。
詳細な説明 第1図は、新規なICUを含むであろう典型的な計算機
システム構成を示す。
例示のみを目的として、この発明を、シングルプロセ
ッサモードとマルチプロセッサモードとの両方の動作を
有するRISC処理システムに関連して説明する。当業者に
は、後に詳細に説明するICUが、非RISC環境においても
同様に使用できることが明らかであろう。
第1図は2個の新規なICUを示す。このICU101は命令
キャッシュとして使用され、ICU102はデータキャッシュ
として使用されている。
RISC効率化命令プロセッサ(Streamlined instructio
n processor)(SIP)をキャッシュに結合する、適当な
高速インターフェイスを用いることが望ましい。
第1図はさらに、アドレスバス120およびデータバス1
21からなるプロセッサバスを示す。命令ROM150および命
令キャッシュICU101内の命令は、プロセッサ110により
アドレスバス120を介してアドレッシングされる。取出
された命令はバス125を介してプロセッサ110に与えられ
る。
データキャッシュICU120もアドレスバス120を介して
アドレッシングされる。プロセッサ110とICU102との間
で、データバス121を介する両方向のデータの流れが可
能である。
メモリバス175は、メインメモリ190をICU101およびIC
U102と結合するバスである。説明の便宜のため、典型的
なRISCシステム構成の一部を構成する算術増速器195
が、バス120および121に結合されて示されている。また
データ転送制御器(DTC)198が、たとえば、高速プロセ
ッサよりはるかに低い速度を有する、市場で入手可能な
周辺装置をプロセッサ、キャッシュユニットなどの性能
を制限することなくシステムに取付けることができるよ
う、典型的なシステム構成の一部として使用できる。
詳細な説明を続ける前に、以下の説明を明確にするた
めにまず一般的なキャッシュ用語とマルチプロセッサキ
ャッシュ用語とを定義し、それらを用いて新規な集積キ
ャッシュアーキテクチャを説明する。ここで用いられる
一般的キャッシュ用語は次のように定義される。
ブロック−キャッシュブロックは、タグと関連付けら
れたシーケンシャルなワード線のグループである。キャ
ッシュブロックは、必要なときにはいつでも1グループ
として割当てたり置換したりすることができる。ICUの
好ましい実施例では、ブロックサイズは4ワード(4ワ
ードにつき1タグ)である。
ブロックステータス−キャッシュブロックと関連付け
られたステータスビットである。ICUの好ましい実施例
では、1ブロックにつきステータスビットが存在する。
それらはブロックのモディファィドおよびシェアードの
ステータスを特定する。
ブロックステータスアレイ−ブロックステータスビッ
トを含む、オンチップのランダムアクセスメモリアレ
イ。
コピーバック−ヒットの場合に、キャッシュにのみ書
込アクセスが行なわれる書込ポリシー(方式)。書込ま
れたデータを含むブロックがモディファィドとマークさ
れる。データは、修正されたブロックが置換されるとき
のみ、メインメモリに書込まれる。すなわちコピーバッ
クされる。
データキャッシュ−頻繁に使用されるプロセッサデー
タ変数をキャッシュするために使用されるキャッシュ。
直接マップ−これは、ワンウェイセットアソシアティ
ブ編成の別名である。特定のアドレスは、キャッシュ内
の、(アドレスにより直接にマップされる)1個の特定
のロケーションにのみキャッシュできる。
ヒット−アクセスアドレスにより特定されるワード
が、キャッシュメモリアレイ内に存在すること。アドレ
ス一致がタグアレイにおいて見出され、さらに、対応す
る有効ビットがセットされている。
無効化−キャッシュから有効なデータを除去する動
作。1個以上の有効ビットがリセットされ、そのため対
応するワードが無効になる。
命令キャッシュ−頻繁に使用されるプロセッサ命令を
キャッシュするために使用されるキャッシュ。
LRU(Least Recently Used)−置換されるべきブロッ
クが、その使用の記録に従って選択される置換アルゴリ
ズム。最も古く使用されたブロックが置換される。
キャッシュ内ロック−データ変数または命令は、キャ
ッシュ内でロックすることができる。たとえ置換アルゴ
リズムによってそれらが選択されたとしても、それらは
置換されないであろう。後に説明する、ICUに入力にさ
れる*LOCKはインターロック動作を指定し、キャッシュ
内ロックのために用いられるのではないことに注意すべ
きである。ブロックをロックすることを容易にするため
に、ロックビットが各ブロックと関連付けられている。
メモリアレイ−キャッシュされたデータまたは命令を
含む、オンチップのランダムアクセスメモリ。
メモリバス−キャッシュをメインメモリに接続するバ
ス。
ミス−アクセスアドレスにより特定されるワードがキ
ャッシュメモリアレイ内に存在しないこと。
変更ブロック−コピーバック書込ポリシーでは、書込
まれたブロックはモディファイド(変更)とマークされ
る。これは、メインメモリに対してこのブロックが変更
され、より最近のデータを含んでいることを示す。
キャッシュ不能−キャッシュすることができない命令
またはデータ変数。キャッシュ不能動作はICUによって
メモリバスに転送される。このためにキャッシュをサー
チすることはなく、キャッシュブロックが割当てられる
ことはない。
プリフェッチ−変数または命令を、それらに対する要
求が発生する前にキャッシュにフェッチする動作。
プリフェッチバッファ−メモリバスから読出されたプ
リフェッチされたデータ変数または命令を、キャッシュ
に書込む前に保持するバッファ。ICU内では、読出バッ
ファがプリフェッチバッファの機能のために使用され
る。
プリロード−キャッシュに特定のデータ変数または命
令をロードする特殊なプリフェッチ動作。プリロード動
作のためのアドレスは、他のプリフェッチ動作のように
プリフェッチアドレスがキャッシュによって決定される
のと異なりユーザによって特定される。
プロセッサバス−キャッシュをプロセッサに接続する
バス。
ランダム置換−置換されるブロックをランダムに選択
する置換アルゴリズム。
読出バッファ−メモリバスから読出されたデータ変数
または命令を、キャッシュに書込む前に保持するバッフ
ァ。このICUの好ましい実施例においては、読出バッフ
ァは4ワードの深さであり、プリフェッチバッファの機
能のためにも使用される。
リードスルー−キャッシュミスの場合に、要求された
データまたは命令はメモリから受取られるとすぐにプロ
セッサに転送される。再ロード動作が並列に完了され
る。リードスルーのないキャッシュでは、再ロード動作
は要求されたデータまたは命令がプロセッサに転送され
る前に完了される。
再ロード−キャッシュミスの場合に行なわれる動作で
あり、要求されたデータまたは命令をメインメモリから
フェッチする。
置換アルゴリズム−新たなブロックをキャッシュ内に
割当てる際に、置換されるべきブロックを決定するため
のアルゴリズム。要求された新たなアドレスを含んだセ
ットから1つのブロックが選択される。
スコープ−この語は、キャッシュ命令に関連して、そ
の命令の影響の範囲を定義するために使用される。この
命令は、1つの特定のICU、複数の命令キャッシュ、複
数のデータキャッシュ、または複数の命令およびデータ
キャッシュに影響を及ぼし得る。
セット−タグと、関連したキャッシュブロックとのグ
ループであって、同時に読出され要求されたアドレスと
比較されるもの。セットのタグのいずれに対しても一致
が生じ得る。セットはアドレスビットのいくつかに従っ
て特定される。セット内のタグ数は、キャッシュ組織内
の「ウェイ」(以下に定義する)の数と等しい。
セットアソシアティブ−特定のアドレスをキャッシュ
内の複数のロケーションにキャッシュすることが可能な
キャッシュ編成。この数はアソシアティビティの程度と
呼ばれる。それはキャッシュ組織内の「ウェイ」の数お
よび同時に読出され比較されるタグの数を特定する。開
示されたICUは2ウェイおよび1ウェイのセットアソシ
アティブ編成をサポートしている。
サブブロック−再ロード動作において、要求されたワ
ードとともにメインメモリからフェッチされた1以上の
ワードのグループ。サブブロックのサイズが、フェッチ
されるワードの最大数を規定する。サブブロックのサイ
ズはブロックサイズ以下である。
タグ−タグはキャッシュ内に現在存在するデータまた
は命令のアドレスを特定する。各キャッシュブロックに
対してキャッシュタグが関連付けされており、キャッシ
ュタグはタグアレイにストアされている。ICUの好まし
い実施例では、各タグは4ワードブロックに対応してい
る。
タグアレイ−キャッシュされたデータまたは命令のた
めのアドレスタグを含んだ、オンチップのランダムアク
セスメモリアレイ。
メモリ更新−キャッシュからメインメモリへの更新を
引き起こす動作。変更されたブロックがキャッシュから
メインメモリに書込まれ、メインメモリが最も新しいデ
ータによって更新される。
有効性アレイ−有効ビットを含んだオンチップのラン
ダムアクセスメモリアレイ。
有効ビット−キャッシュされたデータの有効性を示す
ビット。ICUの好ましい実施例では、キャッシュされた
各ワードに対して1つの有効ビットが関連付けされてい
る。
ウェイ−タグアレイモジュールと関連付けされたタグ
のグループ。モジュールのアドレスデコーダによって特
定されたただ1つのタグのみが各ウェイから読出され比
較される。ICUの好ましい実施例では各々256タグを含ん
だ2つのウェイが存在する。
書込割当−書込動作でのキャッシュミスの場合に、書
込アドレスを含んだブロックに対して1つのキャッシュ
ブロックが割当てられる。要求されたブロックに対して
再ロード動作が行なわれる。非書込割当では、ブロック
が割当てられず書込はメモリに対してのみ行なわれる。
書込バッファ−メモリバスに対する書込アクセスが行
なわれるまでの間、書込アクセス情報(アドレス、デー
タおよび制御)を保持するためのバッファ。ICUの好ま
しい実施例は4つの書込アクセスまで保持できる、深さ
4の書込バッファを含む。
ライトスルー−すべての書込アクセスがメインメモリ
に対して行なわれる書込ポリシー。キャッシュヒットの
場合にはデータもキャッシュに書込まれる。
ここで使用されるマルチプロセッサキャッシュ用語は
以下のように定義される。
バス監視−メモリバスがスレーブキャッシュによって
モニタ(監視)される。スレーブキャッシュは転送され
たアドレスをタグバッファアドレスと比較する。一致が
生じた場合には特定の動作を行なうことができる。バス
スヌーピングまたはスヌーピングキャッシュという用語
はこれとほぼ等しい。
キャッシュ整合性−これらは、マルチプロセッサキャ
ッシュシステムにおけるデータ整合性をいうための別の
用語である。
データ整合性−これがマルチプロセッサキャッシュシ
ステムにおける主な問題である。ある変数が複数のプロ
セッサによって共有されている(シェアード)場合、そ
のデータは複数のキャッシュによってキャッシュされる
ことがある。この変数に対するアクセスが生じたときに
はいつでも、その変数の最も新しいものを返す必要があ
る。それによってシステム内でのデータ変数の整合性を
確保できる。
データ介入−メモリバス読出アクセスの場合に一致が
検出されたときに、スレーブキャッシュによって実行で
きる動作。そのスレーブキャッシュが変更されたデータ
(そのデータの最も新しい値)を含んでいるときには、
このキャッシュはアクセスに介入しそのデータを供給す
る。この場合メインメモリはデータを供給してはならな
い。
排他的−変数またはキャッシュブロックがただ1つの
キャッシュのみに(排他的に)存在することを示す。そ
のブロックは1つのプロセッサによって排他的に使用す
ることもできるし、複数のプロセッサによって使用する
こともできるが1つのキャッシュ内にのみ存在する。IC
Uの好ましい実施例では、シェアードブロックステータ
スビットがLOW(ロー)の場合、排他的ブロックを示
す。そのブロックは排他的非モディファイドまたは排他
的モディファイドのどちらであってもよい。
インターロック−インターロック動作は、ある変数
(インターロック変数)を、1つのプロセッサが排他的
に使用するために一時的にロックするために使用され
る。他のどのプロセッサまたはキャッシュもこの変数が
インターロックされている間にはその変数を使用するこ
とはできない。ICUへの*LOCK入力(後述する)はイン
ターロック動作を示している。
マスタキャッシュ−メモリバスのマスタであるキャッ
シュ。マスタキャッシュは要求を発行し応答を待つ。
一致−メモリバスアクセスのアドレスがタグバッファ
内のアドレスの1つと一致し、対応するワードが有効で
ある場合。この用語はメモリバスアドレス比較のために
使用され、プロセッサバスに対して用いられる用語であ
るヒットと同様である。
所有権−これはデータの整合性を保証するための機構
である。ある変数の最も新しい値は1つのキャッシュま
たはメインメモリによって所有される。変数の整合性を
維持するのは所有者の責任である。何種類かの所有権機
構が存在するが、それらの相違は変数に割当てられる状
態の数および所有権と状態の遷移のためのアルゴリズム
による。
シェアード−ある変数またはキャッシュブロックが1
以上のプロセッサによって共有されていることを示す。
共有変数は1以上のキャッシュに存在することができ
る。ICUの好ましい実施例ではシェアードブロックステ
ータスビット内のHIGHはシェアードブロックであること
を示す。このブロックはシェアードの非モディファイド
またはシェアードのモディファイドのどちらともなり得
る。
シェアードモディファイド−ICUのブロックステータ
スであって、キャッシュブロックが共有され変更されて
いることを示す。これはまたこのブロックがキャッシュ
によって所有されていることを示し、それがシステム内
でのそのブロックの最も新しい値であることを示す。
スレーブキャッシュ−メモリバスのマスタでないキャ
ッシュ。スレーブキャッシュはデータ整合性をとる目的
のために、メモリバスを監視することができる。
スヌーピング−バス監視に代えて使用される別の用
語、バススヌーピングまたはスヌーピングキャッシュも
同様である。
以下に使用する用語を定義し終えたので、新規なICU
の好ましい実施例についての詳細な説明を、ピンの説明
および機能組織に関してこのすぐ後に開始する。
ピンの説明に関して、「3状態」という用語が、通常
の動作においてハイインピーダンス状態にすることがで
きるような信号を説明するために使用されていることに
注意されたい。すべての出力(後に説明するMSERRを除
く)は*TEST入力(これについても以下に述べる)によ
ってハイインピーダンス状態とされる。
新規なICUの好ましい実施例は第2図に示されるよう
に、CMOSであって169ピングリッドアレイパッケージで
ある。
プロセッサバスインターフェイスについて最初に説明
する。それは以下を含む。
アドレスバス、第2図のピンA0−A31はICU入力であ
り、同期式であり、プロセッサバス上のキャッシュアク
セスのためのバイトアドレスを転送する。
アクセスステータス制御信号は第2図においてASTC0
およびASTC1として示されているが、アクセスに関連し
たステータス制御を特定する同期式入力である。それら
は本願発明の好ましい実施例では次のようにコード化さ
れている。 ASTC1 ASTC0 意味 0 0 排他的ライトスルー 0 1 排他的コピーバック 1 0 シェアード 1 1 キャッシュ不能 これらの入力はプロセッサ110のMPGM0−MPGM1出力に
通常は接続される。
*BINV、バス無効は、同期式ICU入力かつアクティブ
ローであって、アドレスバスおよび関連した制御が無効
であることを示す。それはプロセッサバス120上のアイ
ドルサイクルを規定する。
*CBACK、キャッシュバースト肯定応答は、ICU出力、
同期式、かつアクティブローである。この出力はプロセ
ッサバス120上でバーストモードキャッシュアクセスが
確定されたときには常にアサートされる。
*CBREQ、キャッシュバースト要求はICU入力、同期
式、かつアクティブローである。この入力はプロセッサ
バス上でのバーストモードキャッシュアクセスを確定
し、バーストモードキャッシュアクセスの間の次の転送
を要求するために使用される。この信号は以下に述べる
*DREQまたは*IREQと比較してサイクル内の終盤部分で
有効となる。
*CERR、キャッシュエラーはICU出力であり、同期式
かつアクティブローである。この出力は現在のキャッシ
ュアクセスの間にエラーが発生したことを示す。
*CRDY、キャッシュレディはICU出力、同期式かつア
クティブローである。プロセッサバスキャッシュ読出に
対しては、この出力はキャッシュバス上に有効なデータ
が存在することを示す。キャッシュ書込に対してはこの
出力はもはやデータをキャッシュバス上に出力する必要
がないことを示す。
CREQT0−CREQT1、キャッシュ要求タイプは、同期入力
である。この信号は以下のようにプロセッサ上でのキャ
ッシュアクセスに対するアドレス空間を特定する。
命令キャッシュとしての使用については、CREQT1は特
殊な機能を有する。それはRESETの間にサンプリングさ
れ、サンプリングされた値がハイであればICUは命令ROM
アクセスに対して応答する。サンプリングされた値がロ
ーであればICUは命令ROMアクセスに対して応答しない。
RESETの後CREQT1入力は命令キャッシュとしての使用で
は無視される。
*CSEL、チップ選択は、同期式入力、アクティブロー
である。*CSEL入力がアクティブであるとプロセッサバ
スキャッシュ命令アクセスのためのICUを選択する。通
常のメモリアクセスではこれは使用されない。*CSEL入
力はICUの一部であって後述するチップ選択マッピング
レジスタによって不能化できる。*CSELが可能化されア
サートされていないときには、ICUはプロセッサ−バス
キャッシュ命令アクセスに対して応答しない。
*CSM、メモリアクセスのためのチップ選択は同期ICU
入力でありアクティブローである。*CSM入力がアクテ
ィブレベルであるとメモリアクセスのためのICUを選択
する。これはキャッシュ拡張およびキャッシュアドレス
空間選択のために使用できる。*CSM入力はチップ選択
マッピングレジスタによって可能化できる。*CSMが可
能化されていると、ICUは*CSMがアサートされ、アドレ
スが、チップ選択マッピングレジスタ(詳細は後述す
る)の予め選択されたフィールド内の対応する可能化さ
れたビットと一致したときのみメモリアクセスに対して
応答する。
CB0−CB31、キャッシュバスは双方向、同期式かつ3
状態である。キャッシュバスはプロセッサバス上の、IC
Uへ、およびICUから命令またはデータを転送する。
*DREQ、データ要求は同期式ICU入力でアクティブロ
ーである。この入力はプロセッサバス上のデータアクセ
スを要求する。これがアクティブであると、アクセスの
ためのアドレスがアドレスバス上に現われる。ICUの命
令キャッシュ使用では*DREQはプロセッサバスキャッシ
ュ命令転送のために使用される。
*IREQ、命令要求は同期式ICU入力でアクティブロー
である。この入力はプロセッサバス上で命令キャッシュ
アクセスを要求する。これがアクティブであると、アク
セスのためのアドレスがアドレスバス上に現われる。こ
の入力はICUのリセット動作時には特殊な機能を有す
る。この信号はRESET(後述する)がアクティブのとき
にSYSCLの立上がりエッジでサンプリングされる。最後
にサンプリングされた値がICUの動作をデータキャッシ
ュ(*IREQがロー)または命令キャッシュ(*IREQがハ
イ)として定める。データキャッシュ動作に対しては*
IREQはローに固定される(通常動作では無視される)。
命令キャッシュ動作では、*IREQはプロセッサの*IREQ
出力に接続され、この*IREQ出力はRESETの間にはデア
サートされる。RESETの間にプロセッサがテストモード
となった場合、外部の論理がIREQをハイに駆動すべきで
あることに注意されたい。
*LOCK、ロック、はICU入力、同期式およびアクティ
ブローである。この入力はプロセッサキャッシュアクセ
スがインターロックされた変数に対してのものであるこ
とを示す。ICUは、後に詳細に明らかにされるインター
ロック機能について説明する特殊な方法でこのアクセス
を取扱う。
MSERR、マスタ/スレーブエラーは同期式、ICU出力で
アクティブハイである。この出力はICU出力とアクティ
ブドライバに対して内部的に与えられた信号との比較結
果を示す。可能化されたドライバのいずれかに対して相
違が存在するとこの信号はアサートされる。
OPT0−OPT2、オプション制御は同期式ICU入力であ
る。これら信号はキャッシュアクセスと関連付けされた
オプション制御ビットを反映している。これら信号はデ
ータ長と、特殊アクセス情報とを特定するために使用さ
れる。これら信号の解釈はICUをデータキャッシュまた
は命令キャッシュのいずれとして使用しているかに依存
する。これら入力の符号化方法および解釈について、本
願発明の好ましい実施例によれば以下のとおりである。
DRQT1がハイの場合、OPT入力は無視される(アクセス
がないものとして取扱われる)。符号100、101はDRQT0
がハイの場合にはアクセスなしとして取扱われる。符号
100は命令ROMをデータとして読出すために使用される。
データキャッシュは、後に定義するモードレジスタ内の
ROM可能化ビットがハイの場合のみこのコードに応答す
る。この場合この要求はキャッシュ不能アクセスとして
取扱われる。符号101はICUプロセッサバスキャッシュ命
令のためのオペランド転送を示す。本願発明の好ましい
実施例によれば、符号110は特別なデバッグモジュール
アクセスのために使用される。データキャッシュは*CR
DYを4サイクルにわたってハイとすることにより応答
し、その後*CRDYは1サイクルの間アサートされる。
*PCA、パイプライン化キャッシュアクセスは同期ICU
入力でアクティブローである。もしデータキャッシュで
の*DREQまたは命令キャッシュでの*IREQがアクティブ
でなければこの入力はキャッシュアクセスが他の進行中
のキャッシュアクセスとパイプライン化されていること
を示す。パイプライン化されたアクセスは、第1のアク
セスが完了しない限り完了できない。第1のアクセスが
完了したことはデータキャッシュの場合には*DREQが、
命令キャッシュの場合には*IREQがアサートされること
によって示される。
*RESET、リセットは同期式入力でありアクティブロ
ーである。この入力はICUをリセットする。
R/*W、読出/書込は同期式入力である。この入力は
キャッシュアクセスがICUからプロセッサ(R/*Wがハ
イ)の転送であるか、またはプロセッサからICU(R/*
Wがロー)の転送であるかを示す。
SEP/*US、スーパーバイザ/ユーザモードは同期式入
力である。この入力は、アクセスの間に、例として挙げ
たプロセッサのプログラムモード(スーパーバイザモー
ドまたはユーザモード)を示す。ICU内部レジスタおよ
びキャッシュ命令の実行は、ユーザモードアクセスに対
して保護されている。
SYSCLK、システムクロックはICUの動作周波数の外部
クロック入力である。
*TEST、テストモード、は同期入力、アクティブロー
である。この入力がアクティブの場合にはICUはテスト
モードである。MSERRを除く全出力および双方向ライン
は強制的にハイインピーダンス状態にされる。
WREP、置換ウェイは同期式入力である。この入力はキ
ャッシュミスの場合の、置換されるウェイ番号を強制す
る。2ウェイセットアソシアティブ編成でのミスは(置
換モードが外部の場合)WREPによって決定される置換を
行なう。WREPがローであればウェイ0が置換されWREPが
ハイであればウェイ1が置換される。
次に、引続き第2図を参照してメモリバスインターフ
ェイスについて説明する。メモリバスは以下を含む。
BSTC0−BSTC1、ブロックステータス制御は双方向、同
期式および3状態である。これら信号はキャッシュブロ
ックステータス情報を調べ更新するために使用される。
メモリバス命令によって必要となると、ICUはこれらを
用いて、与えられたアドレスに関連したブロックステー
タスビットを示す。これら信号はまた、ブロックステー
タス書込命令に対しては、メモリバスからのブロックス
テータスを与えるために使用される。上記した機能の双
方についてのこれら信号の符号化方法は次のとおりであ
る。 BSTC1 BSCT0 意味 0 0 排他的非モディファイド 0 1 排他的モディファイド 1 0 シェアード非モディファイド 1 1 シェアードモディファイド *DI、データ介入は同期出力、3状態およびアクティ
ブローである。この出力はメモリバス上でのデータ介入
動作を示すために使用される。データ介入動作は、ある
種のマルチプロセッサ構成において使用され、最も新し
い変数の値を、(メモリからではなく)適切なキャッシ
ュから供給するために用いられる。ICUマスタはメモリ
バス読出アクセスのアドレスサイクルの間に、*DI信号
をプリチャージする。ICUマスタはさらにこの信号を3
状態モードにする。バスマスタではないICUは、データ
介入によって応答する場合には*DI信号をディスチャー
ジする。
*GRT、メモリバスグラントは同期入力、アクティブ
ローである。この入力はメモリバスのICUによる使用が
許可されたことを示す。
*HIT、ヒットは双方向、同期式、3状態およびアク
ティブローである。この信号は出力のみまたは入力/出
力信号のいずれにもプログラム可能である。出力として
はこの信号はヒットを示すために使用される。メモリバ
ス上に存在するアドレスに対してタグバッファ内でヒッ
トが検出された場合にこの信号がアサートされる。メモ
リバス命令のある種のものではこの信号は、ワードまた
はブロックの有効性を示すために使用される。
入力/出力信号としてプログラムされたときには、こ
の信号は上記した出力機能に加えて、他の任意のキャッ
シュでのヒットを検出するための信号として使用でき
る。ICUマスタはアドレスサイクルの間に*HIT信号をプ
リチャージし、その後それを入力3状態モードにする。
バスマスタでないICUはそれらのタグバッファ内でヒッ
トが検出されたときのみ*HIT信号をディスチャージす
る。
*MASTB、メモリアドレスストローブは双方向、同期
式、3状態およびアクティブローである。ICUがメモリ
バスマスタである場合にはこの信号はICUによってアサ
ートされバイトアドレスがメモリバス上に存在すること
を示す。ICUがマスタでない場合にはこの信号は、他の
バスマスタからのバイトアドレスがメモリバス上に存在
することを示す。仮に命令キャッシュおよびデータキャ
ッシュがともにシステムに存在している場合、2つの*
MASTB信号が可能である。これら2つの信号を用いて、
命令およびデータアクセスの間での区別を行なうことが
できる。
*MBACK、メモリバースト肯定応答は同期式入力、ア
クティブローである。この入力はメモリバス上でのバー
ストモードキャッシュアクセスが確立されたときはいつ
でもアクティブとなる。
MBP0−MBP3、メモリバイトパリティは双方向、同期式
および3状態である。これはメモリバス上の転送につい
てのバイトパリティバスである。偶数または奇数パリテ
ィを指定することができる。MBP0はMEMAD0−MEMAD7のた
めのバイトパリティであり、MBP1はMEMAD8−MEMAD15の
ためのバイトパリティであり、以下同様である。ICUか
らメモリへの転送に対しては、ICUがパリティを発生さ
せる。ICUへの転送に対しては、ICUはバイトパリティを
チェックする。
仮にパリティエラーが検出され、データがプロセッサ
バス上で転送される場合には、*CERR信号がアサートさ
れる。もしデータをプロセッサに転送する必要がない
(たとえばブロック再ロード)場合には、ステータスレ
ジスタ(後述する)内のエラービットがセットされその
データは無視される。パリティの発生およびチェックは
不能化できる。メモリバスデータのタイミングはパリテ
ィ発生および検証が不能化された場合には緩和される。
*MBREQ、メモリバースト要求は双方向、同期式、3
状態およびアクティブローである。この信号はメモリバ
ス上でのバーストモードアクセスを確立し、バーストモ
ードアクセスの間の次の転送を要求するために使用され
る。ICUがバスマスタである場合には、この信号は出力
である。ICUがマスタでない場合にはこの信号は入力で
あり、データ整合性動作を行なうためにICUが使用す
る。
MDLN0−MDLN1、メモリデータ長は双方向、同期式およ
び3状態である。これら信号はメモリデータアクセスに
ついてはデータ長を示す。命令アクセスに対してはこれ
らは無視される。データキャッシュ使用に対してはICU
は8、16および32ビット転送をサポートする。これらの
信号の、本願発明の好ましい実施例による符号化方式は
以下のとおりである。MREQT1 MREQT0 意味 0 0 データメモリアクセス 0 1 データ入力/出力アクセス 1 0 命令メモリアクセス 1 1 命令ROMアクセス なお、本願発明の例示の実施例で使用されているプロ
セッサに関しては、MDLN0およびMDLN1のコード化はそれ
ぞれOPT0およびOPT1に対応する。
MEMAD0−MEMAD31、メモリアドレス/データバスは双
方向、同期式および3状態である。メモリバスはメモリ
インタフェースのために使用される多重化されたアドレ
ス/データバスである。*MASTBがアサートされると
き、このバスはメモリバスアクセスのバイトアドレスを
保持する。ICUがバスマスタのときにはこのバスはアド
レスを出力する。ICUがバスマスタでないときには、バ
スは入力でありアドレスはICUによってラッチされて内
部で使用される。MASTBがアサートされていないときに
はメモリバスはICUへおよびICUからデータを転送するた
めに使用される。*MERR、メモリエラーは同期式ICU入
力でアクティブローである。この入力は現在のメモリア
クセスの間にエラーが発生したことを示す。ICUはまた
この信号をデータ整合性動作のために使用する。
*MLOCK、メモリロックは双方向、同期式、3状態で
アクティブローである。この信号はメモリアクセスがイ
ンターロックされたアクセスであることを示す。ICUマ
スタはインターロックされたアクセスがメモリバス上に
存在しているときにこの出力をアサートする。ICUがバ
スマスタでないときには、この信号は入力として用いら
れる。*MLOCKがアサートされた状態で書込アクセスに
対し一致が検出された場合には、それに関連したワード
が無効化される。この特徴はインターロック変数のキャ
ッシングを可能化する方式のために使用される。
*MRDY、メモリレディは双方向、同期式でアクティブ
ローである。ICUがバスマスタであるときはこの信号は
入力として用いられる。メモリバス読出の場合には、こ
の入力はメモリバス上に有効データが存在していること
を示す。メモリバス書込に対してはこの信号は、もはや
データメモリバス上に出力する必要がないことを示す。
ICUがバスマスタでないときにはこの信号はデータ整合
性動作のための入力として使用される。データ介入およ
びメモリバス特別動作の場合にはこの信号は出力として
用いられる。ICUは*MRDYをアサートしてメモリバス上
に有効なデータが存在していることを示す。
MREQT0−MREQT1、メモリ要求タイプは双方向、同期式
で3状態である。これら信号はメモリバス上のアクセス
のためのアドレス空間を特定する。ICUがバスマスタで
ある場合には、ICUがこれら信号を出力として用いる。
バスマスタでないときにはMREQT信号はデータ整合性動
作のための入力として用いられる。本願発明の好ましい
実施例による符号化方式は以下のとおりである。MREQT1 MREQT0 意味 0 0 データメモリアクセス 0 1 データ入力/出力アクセス 1 0 命令メモリアクセス 1 1 命令ROMアクセス ICUがバスマスタでないときにはMREQT信号はICUのた
めのメモリバスキャッシュ命令を特定するために(MRW
信号とともに)使用される。
MRW0−MRW1、メモリ書込読出は双方向、同期式および
3状態である。これら信号はメモリバス上の読出および
書込動作の態様を特定するために用いられる。ICUがバ
スマスタであるときにはICUは要求された動作を示すた
めにこれら信号を用いる。ICUがバスマスタでないとき
にはこれら信号は入力であり、データ整合性動作のため
に使用される。この発明の好ましい実施例によるこれら
信号の符号化方式は以下のとおりである。MRW1 MRW0 意味 0 0 書込 0 1 読出 1 0 書込ブロードキャスト 1 1 修正のための読出 上記した読出および書込動作はICUを基準としたもの
であり、たとえば読出はメモリからICUへのものであ
る。
ICUがバスマスタでないときにはMRW信号はICUのため
のメモリバスキャッシュ命令を特定するために(MREGT
信号とともに)使用される。ここに説明するICUととも
に用いるのに適したメモリバス命令セットの説明を以下
詳細に述べる。
MS/*MU、メモリスーパーバイザ/ユーザモードは同
期式ICU出力で3状態である。この出力はメモリアクセ
スの間にプロセッサのプログラムモード(スーパーバイ
ザモードまたはユーザモード)を示す。ICUはプロセッ
サバス上に存在するSUP/*USの値を適切なトランザクシ
ョンに対してはメモリバス上のMS/*MUの値に転送す
る。
*REQ、メモリバス要求は同期式のICU出力でアクティ
ブローである。この出力はICUによってメモリバスを要
求するのに用いられる。
*VSI、有効状態または命令は同期式、ICU入力であり
アクティブローである。ICUがバススレーブである場合
には*VSIがアサートされるとメモリバスキャッシュ命
令アクセスを示す。ICUがバスマスタであり、再ロード
のための読出要求を発行した場合には、*VSIをアサー
トすると特別な書込ブロックステータス命令が実行され
るべきであることを示す。適切なメモリバスキャッシュ
命令セットおよび*VSIの用法について以下に詳細に説
明する。
第2図のピンアウトダイヤグラムに関連して、新規な
ICUへのおよびICUからのさまざまな入出力について説明
したので、ICUの機能組織の詳細な説明を参照して新規
な方法および装置について完全に理解することができる
であろう。以下の説明はいくつかの部分に分けて行な
う。まず、ICUがいかにして計算機システム、特に本願
発明の用途および動作を例証するために用いられるRISC
システムにどのように組込まれるかについて説明する。
次に、ICUを通るデータの流れを詳細に説明する。第3
に、本願発明を実現するのに適したレジスタセットのレ
ジスタレベルでの説明を行なう。また、適切なキャッシ
ュ命令セット、データフォーマットおよび取扱の説明、
キャッシュアクセスおよびプリフェッチ動作についても
説明する。
ICU書込バッファ、初期化およびリセット動作につい
ても後にさらに詳細に説明する。
最後に、ICUによるマルチプロセッサのサポートおよ
び特別なICUインターロック機能について説明して、本
願発明の詳細な説明を終わる。
既に説明したように、新規なICUはSIPを含むRISCアー
キテクチャに関連して説明される。本願発明の好ましい
実施例を、このアーキテクチャをサポートするように記
載する。当業者であれば、新規なICUの好ましい実施例
について、本願発明の本質から離れることなく、たとえ
ば非RISCプロセッサをサポートするために修正できるこ
とが容易に見て取れるであろう。以下の説明はしたがっ
て、例示のためだけを目的としてなされる。
ICUの好ましい実施例のコアは、8kバイトのメモリア
レイとそれに関連したタグおよび有効性アレイとであ
る。これらアレイはタグあたり4ワード(ブロックサイ
ズ=4ワード)および1ワードあたり1有効ビットをも
つツーウェイセットアソシアティブキャッシュとして編
成されている。この基本的な編成は、直接マップされた
キャッシュ、可変のブロックおよびサブブロックサイズ
および柔軟な再ロード方式をもサポートする。ブロック
ステータスアレイおよびLRUアレイもまた組込まれてい
る。これらはキャッシュ置換、キャッシュ内のデータロ
ック、およびデータ整合性ポリシーのために使用され
る。ICUは種々のキャッシュポリシー、アルゴリズムお
よび命令のための制御論理をすべて含んでいる。プログ
ラム可能なオプションの選択、キャッシュ命令実装およ
びステータス報告のために特別なレジスタが実装されて
いる。
キャッシュポリシーはプログラム可能オプションを用
いることにより選択できる。キャッシュ書込ポリシーは
ライトスルー、コピーバックまたはアクセスごとにフレ
キシブルにプログラムできる。書込割当または非書込割
当オプションを選択することが可能である。書込アクセ
スを効率的に実装するために4ワードの書込バッファが
組込まれている。この書込バッファは可能化または不能
化できる。置換アルゴリズムはLRU、ランダムまたは外
部としてプログラムできる。フレキシブルプリフェッチ
ポリシーを選択できる。リードスルーオプションを可能
化できる。効率的なプリフェッチおよび読出動作をサポ
ートするために4ワード読出バッファが組込まれてい
る。
マルチプロセッサをサポートする方式もシステムごと
に調整できる。マルチプロセッササポートのレベルは、
単純なソフトウェアによってコントロールされた編成か
ら広範にわたる所有権方式まで変化することができる。
バス監視機能も可能化または不能化できる。所有権アル
ゴリズムは、必要とされる方式をサポートするよう制御
可能である。インターロック変数のキャッシングも可能
化または不能化できる。
2つのチップ選択入力およびチップ選択マッピングレ
ジスタがキャッシュ拡張を容易にし、マルチキャッシュ
編成をも容易にする。再ロード機能は再ロードサイズ、
開始および停止アドレス、バーストおよびラップアラウ
ンドなどの適切なアクセス制御オプションを選択するこ
とによりシステムごとに調整可能である。
ここでもまた、ICUの好ましい実施例はここに述べて
いる例示としてのRISCプロセッサと同じ周波数、すなわ
ち25MHzで動作し、公称周波数はさらに高い周波数とな
ることが可能であろう。それは、最初のヒットアクセス
に対しては2つのサイクル、そして次のバーストモード
またはパイプラインビットアクセスに対しては1サイク
ルのアクセスタイムを達成する。
3個のICからなる構成、1つはRISCプロセッサを含
み、他の2つがICUを含んだ構成(1つは命令キャッシ
ュ、そして他の1つはデータキャッシュ)は、16kバイ
トのキャッシュをもつ非常に高性能なキャッシュシステ
ムである。
第1図を参照して既に述べたように、ICUは2つのイ
ンタフェースバスをもつ。1つはプロセッサバスであ
り、他の1つはメモリバスである。それはインタフェー
スロジックなしでRISCプロセッサに直接接続できる。IC
Uキャッシュバスはデータキャッシュまたは命令キャッ
シュに対してそれぞれプロセッサのデータバスまたは命
令バスに接続される。パイプライン化されたバーストモ
ードアクセスが、プロセッサチャネルを最大限利用する
ためにサポートされている。メモリバスはメモリ、他の
プロセッサおよびシステムバスへの別個のインタフェー
スである。それはバーストモードアクセスをサポートし
た多重化されたアドレスおよびデータバスである。それ
にはまたマルチプロセッササポート機能も組込まれてい
る。共有メモリマルチプロセッサ環境ではメモリバスは
シェアードマルチプロセッサバスとして効率的に使用す
ることができる。単一のプロセッサシステムについては
それはシステムバスまたはローカルバスとして使用でき
る。
ICUの好ましい実施例はフォールトトレランスをサポ
ートするために特別なハードウェアを含んでいる。それ
はマスタ/スレーブチェックと、メモリバス上のバイト
パリティの発生およびチェックとをサポートしている。
マスタ/スレーブチェックのために、1以上のICUが1
以上のキャッシュ(スレーブ)と並列に接続されマスタ
の出力をチェックする。バイトパリティ発生およびチェ
ックは信頼性のあるバス転送のためにメモリバス上で使
用することができる。
本願発明の好ましい実施例は上に示したように、CMOS
テクノロジーを用いて製造され、最大電力消費は1.5Wで
ある。
ICUの内部データフローの編成が第3図に示されてい
る。以下の説明はこのデータフローダイヤグラム上の機
能的要素について述べる。ICUは3つの主要機能ユニッ
トに分割されている。すなわちプロセッサバスユニッ
ト、メモリバスユニットおよびキャッシュユニットであ
って、これらはいずれも第3図に示されている。以下の
説明では任意の数の目的のために用いられている種々の
ワードの特定のビットロケーションやフィールドについ
て述べながら行なわれる。当業者であれば、これらの言
及が決して限定的なものではなく、目的とされる応用処
理に適するように変更することが可能であることを容易
に理解できるであろう。これらの特定な言及は、実現可
能な、例示の、本願発明の好ましい実施例を説明するう
えで説明を明確にする目的だけのために行なわれてい
る。
プロセッサバスユニットはすべてのプロセッサバス上
での活動を制御する。それはすべてのRISC/SIPチャネル
プロトコルをサポートしている。すなわちシングル、バ
ーストおよびパイプライン化である。それはアドレスイ
ンクリメンタ、データシフタおよびプロセッサバス制御
を含んでおり、このすぐ後に各々説明する。
アドレスインクリメンタ(AI)はアドレスバス入力を
ラッチする。それは各サイクルにインクリメント可能で
ある。AI出力はキャッシュアクセスのためのアドレスで
ある。AIは第3図にユニット301として示されている。
データシフタ(DSH)はデータ整列のために使用され
る。それはバイトおよび半ワードをシフトしキャッシュ
書込アクセスのためにデータを保持する。それはまたバ
イトおよび半ワード読出の場合には適切なバイトおよび
半ワードシフト演算にも用いられる。DSHは第3図にユ
ニット302として示されている。
プロセッサバス制御(PBC)は種々のプロセッサバス
動作を制御する。PBCは第3図ではユニット303として示
されている。
メモリバスユニットはメモリバス上のアクティビティ
を制御する。それは書込バッファ、メモリアドレス論
理、メモリ読出バッファおよびメモリバス制御を含んで
おり、それらについてはすぐ後に説明する。
本願発明の好ましい実施例で使用されている書込バッ
ファ(WB)は2つの4ワードの先入れ先出し(FIFO)バ
ッファを含んでいる(1つはアドレスのため、他の1つ
はデータのため)。WBはすべてのICU書込動作をバッフ
ァすることができる。ライトスルー動作のためにはそれ
は4バイト、ハーフワードまたはワード書込までバッフ
ァする。コピーバック動作のためにはそれは4ワードブ
ロックをバッファする。WBは第3図ではユニット304と
して示されている。
メモリアドレス論理(MAL)は2つのアドレスインク
リメンタを含む。第1のアドレスインクリメンタはバス
からICUへの動作のためのメモリバスアドレスをラッチ
しインクリメントする。第2のアドレスインクリメンタ
はICUによって開始された読出動作のためのアドレスを
ラッチしインクリメントする。MALは第3図ではユニッ
ト305として示されている。
メモリ読出バッファ(MRB)は4ワードデータバッフ
ァである。それはメモリバスからのデータを、キャッシ
ュが更新動作のために利用可能となるまでバッファす
る。MRBはプリフェッチが可能化されている場合にはプ
リフェッチバッファとして使用される。MRBは第3図で
ユニット306として示されている。
最後にメモリバス制御(MBC)はメモリバス動作を制
御するが、第3図ではユニット307として示されてい
る。
キャッシュユニットはすべてのキャッシュ機能を実行
する。それはメモリアレイ、タグアレイ、有効アレイ、
ブロックステータスアレイ、LRUアレイ、特殊レジスタ
およびキャッシュ制御を含んでおり、その各々について
はすぐ後に説明する。
メモリアレイはキャッシュされた命令またはデータの
ための64kビットの記憶アレイである。それは各々1024
ワードの2つのウェイに編成されている。読出動作のた
めには、この2つのウェイは本願発明の好ましい実施例
では、アドレスのビット11−2を用いて同時にアクセス
される。タグアレイからのヒット信号に基づいて、適切
なワードが選択される。書込動作に対しては、アレイ内
の正確なワードが、タグアクセスが完了しヒット信号が
生成された後に書込まれる。メモリアレイは第3図では
ユニ310として示されている。
タグアレイは2ウェイセットアソシアティブ編成でキ
ャッシュタグをストアする。各ウェイは256×20ビット
で編成されている。各タグは4つの連続したキャッシュ
されたワードのブロックに対応する。各キャッシュアク
セスに対してアドレスのビット11−4を用いて2つのタ
グが同時にアクセスされる。これらタグはアドレスのビ
ット31−12(本願発明の1つの実施例では)と比較され
る。ヒット信号が比較結果とコンフィギュレーションビ
ットとから生成される。タグアレイは、ミスが発生しキ
ャッシュブロックが割当てられるたびに書込まれる。タ
グは、アドレスのビット11−4と置換アルゴリズムとに
よって選択される。アドレスビット31−12がタグアレイ
に書込まれる。タグアレイは第3図ではユニット311と
して示されている。
有効アレイは第3図のユニット312であるが、キャッ
シュされた各ワードに対する有効ビットをストアする2k
ビットのアレイである。それは2つの1024×1アレイと
して編成されている。各ワードがキャッシュに書込まれ
るたびに有効ビットがセットされる。有効ビットがアド
レスビット11−2(メモリアレイと同様)およびマッチ
ング方法によって選択される。2つのウェイに対応する
2つの有効ビットが各キャッシュアクセスでチェックさ
れる。適切な有効ビットがセットされている場合のみヒ
ット信号が生成される。
ブロックステータスアレイは第3図のユニット313で
あるが、各キャッシュブロックごとに3つのブロックス
テータスビットを含んだ1536ビットのアレイである。そ
れは2つの256×3アレイ(これはタグアレイ編成に対
応)として編成されている。3ビットとはモディファイ
ド、シェアードおよびロックトである。モディファイド
ビットはブロックが変更され、置換前にメモリに書き戻
されるべきであることを示す。これはコピーバック動作
およびデータ整合性動作のために使用される。シェアー
ドビットはブロックが共有されていることを示す。それ
はデータの整合性動作のために使用される。ロックトビ
ットは、そのブロックがロックされており置換できない
ことを示す。それはキャッシュ内の重要なデータまたは
命令をロックするために使用される。
LRUアレイは第3図でユニット314で示されているが、
LRUビットをストアする256ビットアレイである。それは
256×1アレイに編成されている。各LRUビットが2つの
タグの集合に対応している。LRUアレイはLRU置換アルゴ
リズムが選択されたときに用いられる。この集合内の2
つのブロックのうち最も古く使用されたブロックを示す
ために、適切なLRUビットが行使される。必要に応じ
て、LRUビットはその集合内のどのブロックが置換され
るべきかを決定する。
特殊レジスタブロックは第3図にユニット315として
示されているが、ICUのためのすべての特殊レジスタを
含んでいる。それらはICUオプション、特別動作の制
御、およびステータス情報を保持するために使用され
る。
最後に、キャッシュ制御ブロックは第3図のユニット
316であるが、キャッシュ動作のための制御論理を含ん
でいる。
第3図を参照して新規なICU内のデータの流れを述べ
説明してきたので、ICUのデータフローおよび制御をサ
ポートするためのレジスタ構造について説明する。
ICUの好ましい実施例は8つの特殊レジスタを含む。
これらレジスタはプログラム可能オプションを選択し、
キャッシュ制御動作をサポートし、キャッシュステータ
ス情報を示す。各レジスタはプロセッサバスまたはメモ
リバスを介してプロセッサにより読出または書込可能で
ある。レジスタ読出またはレジスタ書込キャッシュ命令
は適切なキャッシュ命令プロトコルを用いてバスの1つ
の上でICUに転送される。プロセッサバス命令に対して
はオペコードの下位3ビットを用いてレジスタ番号が特
定される。命令転送プロトコルおよびICU応答はそれぞ
れモッドb(Modb)レジスタ内のレジスタ読出制御およ
び命令転送プロトコル制御によって制御される。メモリ
バス命令に対しては、アドレスの下位3ビットによって
レジスタ番号が特定される。これら例示されたプロトコ
ルおよび応答についての詳細な説明を以下に述べる。
プロセッサバスアクセスに対しては、すべてのICU特
殊レジスタが保護されている。それらはSUP/*US入力が
ハイの場合のみアクセス可能である。ユーザモードアク
セスは実行されない。*CERR応答信号によって、無効な
ユーザモードアクセスが示される。これらレジスタはメ
モリバスキャッシュ命令については保護されない。
本願発明の好ましい実施例によれば、各レジスタには
次の番号が割当てられている。レジスタ番号 レジスタ名 0 チップ選択マッピング 1 命令 2 アドレスオペランド 3 カウント 4 エラーアドレス 5 ステータス 6 モッドa 7 モットb 各レジスタについては一般的な機能の説明のみ以下に
述べる。なぜならば当業者であれば、応用に依存した目
的のための特定のビット割当が行なわれることを理解で
きるだろうからである。
チップ選択マッピングレジスタは特殊レジスタ0であ
る。それはICUチップ選択機能のためのアドレスおよび
条件を特定する。ICUは2つの独立したチップ選択機
能、すなわち通常のキャッシュアクセスとキャッシュ命
令アクセスのための機能を有している。
通常のキャッシュアクセスに対しては、キャッシュ選
択機能はキャッシュ拡張、キャッシュアドレス空間割
当、および複数キャッシュコンフィギュレーションのた
めに使用できる。本願発明の好ましい実施例では外部の
チップ選択ハードウェアを用いることなく32個のICU(1
6個の命令キャッシュおよび16個のデータキャッシュ)
までが使用可能である。メモリアクセス(MA)選択もま
た*CSM入力とモッドa(Moda)レジスタ内のメモリビ
ット可能化フィールドに影響される。もし*CSM入力が
可能化されていれば、それはメモリアクセスを可能化す
るためにアサートされなければならない。*CSM入力が
不能化されている場合無視される。メモリビット可能化
フィールドは、適切なアドレスビットを、チップ選択メ
モリレジスタ内の対応する(MA)フィールドビットと比
較することを選択的に可能化できる。比較のためのビッ
トが不能化されるとそれは無視される。すべてのビット
が不能化されると強制的に一致が発生される。なお、*
CSMが可能化されているときには、サービスされるべき
メモリアクセスに対してはそれがアサートされ、MAフィ
ールド比較は一致すべきである。キャッシュ命令アクセ
スに対しては、チップ選択機能はアクセスのための適切
なICUを選択するために使用される。キャッシュ命令ア
クセスは*CSELがアサートされ可能化されているか、ま
たはアドレス入力A31−A14およびCREQT0がキャッシュ命
令アドレスおよびチップ選択マッピングレジスタ内のキ
ャッシュ命令アドレス空間フィールドと一致していると
きに可能化される。2番目の場合、一致が生じたすべて
のキャッシュが選択される。もし命令のスコープが複数
のキャッシュであれば、選択されたすべてのキャッシュ
が応答する。命令スコープが1つのキャッシュであれ
ば、アドレス入力A13−A8がチップ選択マッピングレジ
スタの特別キャッシュ番号フィールドと一致したキャッ
シュのみが応答する。
初期化処理の間*CSEL入力は所与のICUのチップ選択
マッピングレジスタをプログラムするために使用され
る。典型的な構成では、別のアドレスビットが、別のIC
Uの*CSELに接続できる。*CSELがアサートされ可能化
されているとき、ICUはデータアクセスをキャッシュ命
令アクセスとして取扱う。チップ選択マッピングレジス
タがプログラムされた後、*CSEL入力を不能化すること
ができ、チップ選択マッピングレジスタによって特定さ
れたマッピングが適用される。
命令レジスタは特殊レジスタ1である。それはICUへ
の命令を特定するために用いられる。命令レジスタは他
の特殊レジスタと同様、読出または書込が可能である
が、有効なキャッシュ命令に対してはそれは自動的にロ
ードされる。有効なキャッシュ命令は*CSEL入力がアサ
ートされ可能化されているときか、アドレス入力A31−A
14およびCREQT0がキャッシュ命令アドレスおよびチップ
選択マッピングレジスタ内のキャッシュ命令アドレス空
間フィールドと一致しているときに検出される。これら
の場合には、命令はアドレス入力A7−A0からコピーされ
る。
命令レジスタは命令転送プロトコルの間にプロセッサ
割込が発生した場合、または複数キャッシュ命令が割込
まれた場合にICUの状態をセーブしリストアするため
に、特殊レジスタとしてアクセスすることができる。特
殊レジスタとしてそれがアクセスされた場合には、読出
またはレジスタ書込キャッシュ命令がICUに転送され
る。レジスタ読出命令およびオプションのオペランドを
ラッチし、しかも要求された以前の命令およびオペラン
ドレジスタの内容を破壊しないことを可能にするため
に、シャドーレジスタが組込まれている。シャドー命令
レジスタには、最初に命令がロードされる。レジスタ読
出およびレジスタ書込命令を除くすべての命令に対し
て、命令実行が開始されると命令レジスタは更新され
る。レジスタ読出およびレジスタ書込命令については、
命令レジスタは命令レジスタ内に他の有効な命令が存在
していないときのみ更新される。命令レジスタ内に有効
な命令が存在している場合にはレジスタ読出命令は命令
およびオペランドレジスタに影響を与えることなく実行
される。この特徴は、キャッシュ命令の実行に影響を与
えることなくICUの状態をチェックするために使用され
る。
要求されたすべてのオペランドが有効であるときにそ
の命令はICUによって実行される。例示の命令、要求さ
れるオペランドおよびキャッシュ命令アクセスの詳細な
説明を以下に述べる。
オペランドレジスタは特殊レジスタ2である。それは
特定のICU命令のためのオペランドを特定する。このレ
ジスタはオペランドレジスタ値の有効性を示すビット
(OVビット)を含む。レジスタ読出およびレジスタ書込
命令を正確に実行するために、シャドーオペランドレジ
スタがICUに組込まれている。シャドーオペランドレジ
スタには最初にオペランドがロードされる。レジスタ読
出およびレジスタ書込命令を除くすべての命令に対し
て、有効ビットがリセットされているとオペランドレジ
スタは更新される。もしOVビットがセットされている
と、ICUはOVビットがリセットされるまで(前の命令の
完了)*CRDY応答を遅延させ、その後レジスタをロード
する。レジスタ読出およびレジスタ書込命令について
は、命令レジスタ内に他の有効な命令が存在していない
ときのみオペランドレジスタが更新される。有効な命令
が命令レジスタ内に依存している場合には、レジスタ読
出およびレジスタ書込命令は命令およびオペランドレジ
スタに影響を与えることなく実行される。これによっ
て、必要な場合にオペランドレジスタをセーブしリスト
アすることが可能となる。必要な場合には、レジスタ読
出またはレジスタ書込命令を用いてオペランドレジスタ
の読出または書込をすることができる。
カウントレジスタは特殊レジスタ3である。それは特
定のICU命令が操作するワード数を特定する。カウント
レジスタは命令実行によっては影響されない。
例外アドレスレジスタは特殊レジスタ4である。それ
はいくつかの例外に関連するアドレスを報告するために
用いられる。例外アドレスレジスタには例外アドレスが
ロードされる。例外タイプはステータスレジスタ内に存
在する。
ステータスレジスタは特殊レジスタ5である。それは
ICUの状態を報告するために、およびタグ読出およびタ
グ書込キャッシュ命令(後述する)におけるICUとプロ
セッサとの間の情報転送のために用いられる。タグ読出
命令についてはタグの値を報告するために、タグ書込命
令についてはタグを転送するために、キャッシュされた
データのウェイを報告するために、タグ書込命令に対し
てはブロックの有効ビットを報告しその有効ビットを転
送するために、タグ書込命令に対してそのブロックに対
するロックトビットを報告し、ロックトビットを転送す
るために、タグ書込命令についてそのブロックのシェア
ードビットを報告しシェアードビットを転送するため
に、タグ書込命令についてそのブロックのモディファイ
ドビットを報告しモディファイドビットを転送するため
に、キャッシュ内でヒットがあったことを示すために、
保護違反、不法な命令、メモリエラーおよびパリティエ
ラーを示すためにそれぞれビットが予約されている。
モッドaレジスタは、特殊レジスタ6である。それは
種々のICUオプションを選択するために使用される。モ
ッドaレジスタは初期化の間にリセットされる。
グローバルキャッシュ動作を制御するために、すべて
のキャッシュロケーションをロックするために、書込バ
ッファを不能化するために、およびリードスルーオプシ
ョンを不能化するために、フィールドが予約されてい
る。
このレジスタ内にはROM可能化ビットが含まれてお
り、このビットは命令キャッシュとデータキャッシュ使
用とで異なる機能を有する(「ROME」ビット)。
命令キャッシュとして使用の場合、このビットがセッ
トされるとICUがROMアクセスに応答してそれらをキャッ
シュする。このビットが0であるとROMアクセスは無視
される。
データキャッシュとして使用の場合、このビットがセ
ットされるとデータキャッシュは命令メモリアクセスに
ついて(データのように)可能化される。OPT入力が命
令メモリアクセスを示している場合、ICUはそれをキャ
ッシュ不能トランザクションとして取扱う。特定された
アドレスがメモリバス上で読出され、プロセッサに転送
されるがキャッシュにロードされることはない。ROMEビ
ットが0のとき、ICUはこのタイプのトランザクション
を無視する。
さらにこのレジスタ内には、単一アクセスのためのプ
リフェッチオプションを可能化するため、アドレスラッ
プアラウンドオプションを不能化するため、単一アクセ
スミス時のICU動作を制御するため、プロセッサによっ
てバーストモードの読出要求が終了されたときにICU動
作を制御するため、バーストアクセスのためのプリフェ
ッチオプションを可能化するため、およびサブブロック
サイズ(SBS)を選択するために、それぞれさらにフィ
ールドが設けられている。
サブブロックサイズが、キャッシュ再ロード動作の制
御において使用されることが理解できるであろう。単一
のキャッシュミスに対してキャッシュに再ロードされる
べきワード数は、規定されたサブブロックサイズおよび
アクセスミスに対するICU動作を制御しているフィール
ドにストアされている情報(たとえばサブブロック境界
の開始および終了などの制御情報)によって規定され
る。SBSフィールドはまた、バーストモード制御情報と
ともに、バースト終了制御でも使用される。ICUの本来
のブロックサイズは4ワードであり、4データワードに
対して1つのタグが関連づけされている。サブブロック
サイズは1、2または4ワードである。
さらに、モッドaレジスタはメモリバスアドレス転送
の拡張を制御するために、書込割当オプションがオンか
どうかを示すための、および全体的な書込ポリシーオプ
ションを選択するためのフィールドを含んでいる。
本願発明の好ましい実施例によれば書込ポリシーはフ
レキシブル、ライトスルーまたはコピーバックである。
ライトスルーポリシーが選択されたときには、ICUへ
のどのプロセッサ書込もメモリに書込まれる。コピーバ
ックが選択されたときには、どのプロセッサ書込ヒット
もキャッシュに書込まれ、モディファイドビットがセッ
トされる。そのブロックが置換されるときだけメモリに
コピーバックされる。フレキシブルポリシーが選択され
たときには、アクセスごとにライトスルーまたはコピー
バック動作が選択できる。アクセスについての書込ポリ
シーはまた、ASTC入力、ブロックステータスシェアード
情報およびモッドbレジスタ(後述)の書込共有ヒット
制御およびプロセッサ状態ビット制御フィールドによっ
ても影響される。
モッドaレジスタはまたブロック置換ポリシーを選択
するために使用されるフィールドを含む。この選択は直
接マップ編成には使用されない。2ウェイセットアソシ
アティブ編成では、ブロックのうちの1つが有効でない
場合にそのブロックが新たなブロックのために選択され
る。本願発明の好ましい実施例によれば、置換ポリシー
のオプションは、LRU、ランダムまたは外部である。
LRUポリシーが選択されるとLRUアレイは置換されるべ
きブロックを選択するために用いられる。LRUアレイは
各キャッシュアクセスごとに更新される。各セットに対
して1ビットが関連づけされる。それはセット内の2つ
のブロックから最も古く使用されたブロックを指す。
ランダムポリシーが選択されると、擬似ランダム論理
が置換されるべきブロックを選択する。この論理は単純
なフリップフロップであって、各クロックサイクルごと
にその状態を変え全セットに対して使用される。
外部ポリシーが選択されるとWREP入力がプロセッサア
ドレスとともにラッチされる。ラッチされた値によって
置換されるブロック選択が強制される。このオプション
は、キャッシュのテストおよびマルチレベルのキャッシ
ュ編成のために使用可能である。
最後に、モッドaレジスタはキャッシュ編成(2ウェ
イセットアソシアティブまたは直接マップ)を選択する
ために、キャッシュ動作を命令キャッシュまたはデータ
キャッシュとして選択するための、パリティ発生および
チェックオプション、メモリアクセスの際のアドレス比
較のためのチップ選択マッピングレジスタ内の対応する
MAビットを可能化するためのメモリビット可能化情報を
制御するための、フィールドを含んでいる。
モッドbレジスタは、特殊レジスタ7である。それは
種々のICUオプションを選択するために使用される。モ
ッドbレジスタの1つはマルチプロセッサ組織に関連し
ている。マルチプロセッサ組織およびこのフィールドの
使用方法については後述する。
モッドbレジスタはまた、プロセッサバス上の入力/
出力データアクセスのためにICUを制御するためのビッ
ト(命令キャッシュでの使用の場合には無視される)、
ICUレジスタの読出のモードを特定するビット、プロセ
ッサバス上のキャッシュ命令転送のプロトコルを特定す
るビット、および関連した適当なICU動作について、ワ
ード内のバイトおよびハーフワードの順序づけを制御す
るためのビットを含んでいる。
モッドbレジスタ内の、マルチプロセッサに関する情
報は以下のものを含む。キャッシュインターロック可能
化ビット。読出バス監視可能化ビット。書込バス監視可
能化。他のマスタによるメモリバス読出での一致があっ
たときのICUの動作を制御するためのフィールド。他の
マスタによるメモリバス書込動作での一致があった場合
の動作を制御するためのフィールド。書込割当でのコピ
ーバック書込ミスに対するICUのメモリバス動作を制御
するための書込ミスメモリアクセス制御。共有されたブ
ロックへの書込ヒットの際の動作を制御する書込共有ヒ
ット制御フィールド。セットされたとき、各プロセッサ
アクセスに対してブロックステータスシェアビットが変
更されるようにするプロセッサ共有ビット制御。および
共有ブロックステータスの割当を外部制御によって制御
するための外部共有ビット制御。外部共有制御について
は、*HIT信号がメモリバス読出および/または書込ア
クセスのための入力として使用される。もしこの信号が
アサートされると、このデータは他のキャッシュにも存
在しており、このブロックにはシェアード状態が割当て
られる。もし*HIT入力がアサートされていなければこ
の変数はどのキャッシュにも存在しておらず、このブロ
ックには排他状態が割当てられる。この特徴に関する詳
細な説明を、ICUマルチプロセッサのサポートについて
以下に述べる。
ICU命令セットについて以下に述べる。
ICUの好ましい実施例は20のプロセッサバスキャッシ
ュ命令と、9個のメモリバスキャッシュ命令とを実装し
ている。プロセッサバス命令はプロセッサによって、特
殊レジスタクセスのために、および特別なキャッシュ動
作要求のために発行される。メモリバス命令は特別なキ
ャッシュ動作要求に対して特別なロジックによりメモリ
バス上に発行される。この部分では、種々の命令転送プ
ロトコルの例を記載し、典型的なプロセッサバス命令お
よびメモリバス命令セットの例を詳細に説明する。
プロセッサバスキャッシュ命令およびオペランドはプ
ロセッサバストランザクションの特別なシーケンスによ
ってプロセッサからICUに転送される。この命令は必要
なすべてのオペランドがICUに転送されるといつでも実
行される。
いくつかのプロセッサバスキャッシュ命令は、4種類
の、オプションの、動作のスコープを持っている。命令
スコープはキャッシュ命令により影響を受けるICUの数
を特定する。スコープは命令テーブル内の(s)によっ
て指定されている。(s)という指定のない命令は1つ
の特定のICUの上でのみ動作する。命令スコープは以下
のように指定される。
この柔軟性により、システム設計者が、適切なキャッ
シュ内の所望のアドレスを操作するキャッシュ命令を発
行することが可能になる。複数ICU環境では、すべての
キャッシュを同時に操作する1つの命令を発行する方が
より効果的である。たとえば、ブロック無効化命令は
(s)=A(INVBA)であるが、すべてのICU内の特定さ
れたブロックを(そのブロックが有効であれば)並列に
無効化する。
多くの命令は2つのサイクルで実行される。しかし、
以下に示すように例外が存在する。プロセッサバスキャ
ッシュ命令実行の間には、ICUは他のプロセッサのトラ
ンザクションを受けることができる(新たな命令転送を
含む)が、多くの場合(命令の記述でそうでないと指定
されている場合を除き)それらはプロセッサバスキャッ
シュ命令が完了した後でないとサービスを受けない。メ
モリバストランザクションはプロセッサバスキャッシュ
命令実行の間にもサービスされる。しかし、それらは命
令実行と同期化しているので、ICUの動作はキャッシュ
の現在の状態を反映している。
すべてのプロセッサバスキャッシュ命令は特権命令で
ある。もしSUP/*US入力がローであればプロセッサバス
キャッシュ命令が実行されるとそれは無視され*CERRが
それに応答してアサートされる。ステータスレジスタは
適切な命令のためのステータス情報によって更新され
る。例外の場合には、例外情報によって例外アドレスレ
ジスタおよびステータスレジスタが更新される。
キャッシュ命令実行の間のICUとプロセッサとの間の
通信にはいくつかのオプションがある。プロトコルはモ
ッドbレジスタの命令転送プロトコル制御(ITPC)およ
びレジスタ読出制御(RRC)ビットと、キャッシュ命令
のタイプおよびスコープによって規定される。レジスタ
読出を除くすべての命令は、書込動作を用いて転送され
る。レジスタ読出命令はモッドbレジスタのレジスタ読
出制御によって定義される読出または書込動作を用いる
ことによって転送される。これらオプションについての
説明は以下に述べるレジスタ読出命令の説明の中に存在
する。
各命令の第1の部分はプロセッサバスキャッシュ命令
要求の検出である。プロセッサバスキャッシュ命令要求
は読出または書込プロセッサバスアクセスであり得る。
それはICUによって2つの場合に検出される。(1)*C
SELがアサートされ可能化されているか、または(2)
アドレス入力およびCREQT0がチップ選択マッピングレジ
スタ内のキャッシュ命令アドレスおよびキャッシュ命令
アドレス空間フィールドと一致しているかである。
命令実行に対してオペランドが必要でない場合、その
転送は1サイクルで完了する。この場合キャッシュバス
上の値は関係なく命令実行は直ちに開始される。
もしオペランドが必要であれば、ICUによってサポー
トされている2つのオプションの転送プロトコルが存在
する。プロトコルはモッドbレジスタの命令転送プロト
コル制御ビットに従って選択される。
ITPCが1のとき、キャッシュバスはオペランドの転送
のために使用される。プロセッサは通常の書込動作を使
用し、プロセッサアドレスおよびデータバスがともに用
いられる。ICUはキャッシュバスからオペランドの値を
ラッチする。命令キャッシュとして使用されているICU
については、ICUデータバスからキャッシュバスにデー
タを転送するために外部のトランシーバが必要となる。
このオプションはデータキャッシュとして使用されるIC
Uの場合には自然な選択である。命令キャッシュとして
使用されているICUの場合にも、外部のトランシーバを
使用すればより効率的なプロトコルを達成することがで
きる。
ITPCが0のときにはキャッシュバスは使用されない。
オペランドはプロセッサアドレスバス上を転送される。
特別な2サイクルプロトコルが命令およびオペランド転
送に必要となる。有効な命令がラッチされた後、ICUは
プロセッサバス上での特別なデータトランザクションを
待つ。CREQT入力がメモリデータトランザクションを特
定し、オプション入力はキャッシュオペランド転送を特
定し、アドレスバスがオペランドを含む。この特別な書
込トランザクションはICUにより検知され、アドレスバ
ス上のオペランドがラッチされる。なお上述したトラン
ザクションはプロセッサバスに接続された他のすべての
構成要素によっては無視されるべきである。このオプシ
ョンは前述した他のオプションに比べて効率的ではない
が命令キャッシュとして使用されているICUについてト
ランシーバを必要としない。
データキャッシュまたは命令キャッシュとして使用さ
れているICUについて上述したオプションは独立に選択
できる。しかし、システムプログラミングという観点か
らすると、いずれのキャッシュにも同じ方法でアクセス
できることが望ましい。この場合にはいずれのキャッシ
ュも同じプロトコルに対し応答するようにプログラム可
能である。
カウントオペランドが命令実行に必要な場合、命令実
行が開始する前に、それをカウントレジスタに書込むた
めにレジスタ書込命令を実行すべきである。この命令は
命令と必要なすべてのオペランドとが有効なときにはい
つでもICUによって実行される。
キャッシュ命令転送プロトコルの間にプロセッサ割込
が生じ得る。ICUの好ましい実施例はそのような場合か
らの回復をするための論理を含んでいる。命令レジス
タ、オペランドレジスタおよびカウントレジスタはレジ
スタ書込命令を用いることによって、それらに影響を与
えることなくその内容を読出しセーブすることができ
る。命令有効、オペランド有効、およびカウント有効ビ
ットが対応するレジスタの有効性を示す。セーブおよび
リストア動作によって、命令転送プロトコルを割込時点
から継続することができる。
本願発明の一実施例において有用であると認められた
プロセッサバスキャッシュ命令のセットを、ニモニック
と対応の記述およびその目的の説明の形でテーブル形式
ですぐ後に示す。ニモニック 記述 NOP 動作なし INVW(s) ワードを無効化 INVB(s) ブロックを無効化 INVM(s) 複数無効化 INVA(s) すべてを無効化 SWM(s) モディファイドならワードを転送 SBM(s) モディファイドならブロックを転送 UPMI(s) メモリ更新および無効化 UPIM(s) メモリ更新および複数無効化 LCK(s) ロックブロック ULCK(s) アンロックブロック RBST(s) ブロックステータス読出 WBST(s) ブロックステータス書込 SWH ヒットの場合はワードを転送 RTAG タグ読出 WTAG タグ書込 PRLD キャッシュをプリロード RST リセット RDR(i) レジスタ読出 WRR(i) レジスタ書込 なお、命令ニモニック内の(s)のシンボルはここで
以前に定義した命令スコープを示し、RDRおよびWRR命令
内の(i)のシンボルはオペコードの下位3ビットによ
って特定されるレジスタ番号を示す。
さらにまた、特定英のオペランド(ここでは述べない
が)が、命令の要求に従って特定される。もし1以上の
オペランドが特定される場合には、特定された第2のオ
ペランドをロードするためにWRR命令が必要となる。
機能的なレベルでは、命令の実行により次のような動
作を生じる。
動作なし(NOP)。この命令に対してはICUによっては
何の命令も実行されない。
ワード無効化(INVWO、INVWI、INVWD、INVWA)(スコ
ープが異なる)−アドレスオペランドにより特定された
ワードが無効化される(対応する有効ビットがリセット
される)。
ブロック無効化(INVBO、INVBI、INVBD、INVBA)−ア
ドレスオペランドによって特定される4ワードブロック
が無効化される(対応の有効ビットがすべてリセットさ
れる)。
複数ブロック無効化(INVMO、INVMY、INVMD、INVMA)
−ICUにより複数の連続する4ワードブロックが無効化
される。1つずつの命令はいずれもINVB命令と同様であ
る。この命令は複数サイクル(初期化のための2サイク
ル+1ワードブロックにつき1サイクル)で実行され
る。この命令に対してはカウントレジスタは有効なカウ
ントを含んでいなければならない。カウントレジスタは
レジスタ書込命令を用いてロードされる。カウント有効
ビットは命令実行の後でもセットされたままである。正
確な実行を保証するために、カウントレジスタはINVM命
令が要求される前にロードされるか、以前の演算からの
正確な値を含んでいるべきである。この命令はページフ
レームを無効化するために用いることができる。カウン
トレジスタはページ内の4ワードブロックの数(ページ
サイズをバイトで表わし16で割ったもの)を含んでいな
ければならない。
すべて無効化(INVAO、INVAI、INVAD、INVAA)−この
命令はキャッシュ内のすべての命令を無効化する。すべ
ての有効ビットがリセットされる。
モデファイドならワードを転送(SWMO、SWMI、SWMD、
SWMA)−アドレスオペランドによって特定されたワード
がキャッシュ内に存在し、そのブロックのモディファイ
ドビットがセットされていれば、それはメモリ内の対応
するアドレスに書込まれる。
モディファイドならブロック転送(SBMO、SBMI、SBM
D、SBMA)−アドレスオペランドによって特定される4
ワードブロックが変更されていれば、すべての有効ワー
ドがメモリ内の対応するアドレスに書込まれる。
メモリ更新および無効化(UPMIO、UPMII、UPMID、UMP
IA)−アドレスオペランドにより特定される4ワードブ
ロックが変更されていれば、すべての有効ワードはメモ
リ内の対応アドレスに書込まれる。その後すべての有効
ビットがリセットされる。メモリバスがICUにグラント
された後、バーストモードまたは単一のメモリバス書込
アクセス(有効ワードの数による)を用いて書込動作が
行なわれる。
メモリ更新および複数無効化(UPIMO、UPIMI、UPIM
D、UPIMA)−ICUにより、複数のメモリ更新および無効
化動作が順に実行される。1つ1つの動作はいずれもメ
モリ更新および無効化命令と同様である。この命令は複
数サイクルで行なわれる(初期化に2サイクル+1サイ
クルおよび4ワードブロックごとにオプションのメモリ
バス4ワード書込アクセス)。この命令に対しては、カ
ウントレジスタは有効なカウント値を含んでいなければ
ならない。カウントレジスタがWRR命令を用いることに
より応答される。カウント有効ビットは命令実行の後に
もセットされたままである。正確な実行を保証するため
に、カウントレジスタがUPIM命令が要求される前にロー
ドされるか、以前の命令からの正確な値を含んでいなけ
ればならない。この命令はメモリを更新しページフレー
ムを無効化するために用いることができる。カウントレ
ジスタはページ内のブロック数(ページサイズをバイト
で表わしたものを16で除したもの)を含んでいなければ
ならない。
ロックブロック(LCKO、LCKI、LCKD、LCKA)−もしア
ドレスオペランドによって特定される4ワードブロック
(またはその一部)がキャッシュ内に存在している場合
には、対応するブロックステータスのロックトビットが
セットされる。
アンロックブロック(ULCKO、ULCKI、ULCKD、UCLKA)
−もしアドレスオペランドによって特定される4ワード
ブロック(またはその一部)がキャッシュ内に存在して
いれば、対応するブロックステータスのロックトビット
がリセットされる。
ブロックステータス読出(RBSTO、RBSTI、RBSTD、RBS
TA)−特定されたワードアドレスがキャッシュ内にある
かどうかチェックされ、それに従ってステータスレジス
タが更新される。
ブロックステータス書込(WBSTO、WBSTI、WBSTD、WBS
TA)−特定されたワードアドレスを含むブロックがキャ
ッシュ内に存在するかどうかチェックされる。もしその
ブロックがキャッシュ内に存在すればそのブロックのス
テータスビットがステータスレジスタ内のそのビットの
値に基づいて更新される。
ヒットならワード転送(SWH)−もしアドレスオペラ
ンドによって特定されたワードがキャッシュに存在して
いればそのワードはメモリ内の対応するアドレスに書込
まれる。
タグ読出(RTAG)−この命令はキャッシュ内の特定の
タグを読出すのに使用される。
タグ書込(WTAG)−この命令はキャッシュ内の特定の
タグを書くために用いられる。
プリロード(PRLD)−プリロードは特定のデータ変数
または命令を、それらが必要となる前にキャッシュにロ
ードするために行なわれる特別な動作である。この動作
はソフトウェア制御によって行なわれる。要求される変
数または命令のアドレスはユーザによって供給される。
なおプリロード動作は単純なプリフェッチ動作とは異な
る。プリフェッチは通常はハードウェア制御のもとで行
なわれプリフェッチされるアドレスは元となるメモリ要
求のアドレスの近傍付近にある。
プログラムに関するユーザおよびコンパイラの知識
が、最も有用な命令またはデータ変数を予測するために
使用される。適切なアドレスが、そのプログラムの実行
が開始される前に命令およびデータキャッシュにロード
される。この動作はプロセッサの介入なしにキャッシュ
制御のもとで行なわれ得る。これによってキャッシュを
より効率的に使用でき全体的性能を高めることができ
る。
それ自体新規なプリロード動作を、組込まれたRISC/S
IPアーキテクチャに関連して説明する。他のキャッシュ
システムでも同様に用いることができる。
命令は、オペコードおよびオペランドを適切なキャッ
シュユニットに転送することにより、プロセッサによっ
て開始される。2つのオペランドが必要である。メモリ
バス読出バーストトランザクションを用い、ICU制御の
もとで複数の一連のワードがキャッシュにロードされ
る。アドレスオペランドは開始ワードアドレスを特定す
る。カウントレジスタは4ワードブロックの数を特定す
る。可能な最も高いアドレスに達したらラップアラウン
ドが行なわれる。
この命令は複数サイクルで行なわれる(初期化に2サ
イクル+ワードあたり1メモリバスバースト読出アクセ
ス)。この命令に対しては、カウントレジスタは有効な
カウントを含んでいなければならない。リロード命令は
種々の方法で用いることができる。基本的な2つのオプ
ションは以下のようなものである。
プリロード命令を用いる単純な方法は特別なキャッシ
ュ構成を必要とせず、どのようなキャッシュシステムで
も用いることができる。この方法ではプリロード命令は
プログラム実行の前にソフトウェア制御のもトで発行さ
れる。この命令はコンテキストスイッチ手続の一部とし
て発行することもできる。キャッシュはプリロードされ
ているのでコールドスタートの影響は最小限にできる。
この方法の主な欠点は、プリロード動作がプロセッサの
必要としている他の動作と干渉するということである。
より複雑なキャッシュ構成によって上記した制限を克
服することができる。この構成(切換可能キャッシュと
呼ぶ)は、各プロセッサにつき1を超えるキャッシュ
と、キャッシュを切換える方法を必要とする。切換可能
キャッシュ構成によって、同一のアドレス空間上で複数
のキャッシュ動作を行なうことができる。2以上のキャ
ッシュを並列に置くことができるが、プロセッサメモリ
アクセスの応答のためにはただ1つのキャッシュのみが
可能化される。他のキャッシュは、次のプログラム(ま
たは手続)のために必要とされる変数または命令をプリ
ロードするようにプログラムできる。次のプログラム開
始の実行の前に、適切なキャッシュ(プリロードデータ
を含むもの)が可能化され、他のキャッシュは不能化さ
れる。
こうした方式の実装はICUによって完全にサポートさ
れている。必要なサポートのすべてが単一のチップ上に
実装されている。個々のICUはモードレジスタをプログ
ラムすることにより不能化または可能化できる。この方
式をサポートするためにプリロード命令が実装されてい
る。特にICUは、通常のキャッシュ動作について不能化
されているときであっても、プリロード命令は実行する
ことができる。2以上のICUを並列に置くことができ、
通常のキャッシュ動作では1つのみが可能化され、他の
キャッシュはプリロード動作を行なう(グルー論理は必
要とされない)。
この構成によって性能上の大きな効果を奏することが
できる。なぜならばプリロード動作は現在のプログラム
実行に対して最小限の影響しか与えず実行可能だからで
ある。
リセット(RST)−リセット命令は*RESET入力をアサ
ートするのと同じ機能を実行する。ICUがイニシャライ
ズされる。RST命令は受付けられるとすぐに実行され
る。複数命令(INVM、UPIM、PRLD)の実行は終了され
る。
レジスタ読出(RDR)−レジスタ読出命令はICUの特殊
レジスタの読出をするのに用いられる。特殊レジスタ番
号はオペコードにより特定される。ICUはこの命令に対
し、モッドbレジスタ内のレジスタ読出制御(RRC)ビ
ットの状態によりさまざまな仕方で応答する。RRCが1
のときには、アドレスバス上の命令によって読出トラン
ザクションが命令を開始させる。RRCが0のときには、
レジスタから読出すのにメインメモリが使用される。
レジスタ書込(WRR)−レジスタ書込命令はICUの特殊
レジスタに書くために用いられる。特殊レジスタ番号は
オペコードにより特定される。データは命令オペランド
として特定される。WRR命令は受付けられるとすぐに実
行される。命令およびオペランドレジスタに有効な命令
およびオペランドが存在している場合にはこの命令はそ
れらの内容に影響を与えることなく実行される。この特
徴を、ICUレジスタをリストアするのに使用することが
できる。
前に示したように、メモリバス上の特別な論理によ
り、メモリバスキャッシュ命令が発行される。この論理
は命令を適切なICUに向けることができる。システム内
のすべてのICUであって、それらの入力に有効な命令を
認識できるものはそれを実行する。メモリバス上では、
プロセッサバス命令スコープおよび特権命令と等価な概
念は存在しない。
すべてのメモリバスキャッシュ命令はICUがバススレ
ーブである場合には、1つのキャッシュ命令転送メモリ
バストランザクションを用いることによりICUに転送で
きる。書込ブロックステータス命令はICUがバスマスタ
であるときに、*VSI入力をアサートすることにより転
送可能である。この命令は命令およびオペランドが受付
けられた後、必要とされるキャッシュリソースが利用可
能なときにはいつでも実行される。すべての命令は内部
で2サイクルで実行される。命令実行に対してメモリバ
ス動作が必要な場合には、バス動作のためのサイクル数
を加算しなければならない。
メモリバスキャッシュ命令はプロセッサバス上の他の
ICU動作とは独立して実行される(プロセッサバスキャ
ッシュ命令を含む)。メモリバス命令およびプロセッサ
バス動作はそれらが受信された順序に従って実行され
る。メモリバス命令の結果はキャッシュの現在の状態を
反映する。メモリバスキャッシュ命令が複数プロセッサ
バスキャッシュ命令の実行の間に受付けられると、それ
は複数命令の実行に影響を与えることなく実行される。
キャッシュへのワード書込を除くすべてのメモリバス
キャッシュ命令は類似した名前の、等価なプロセッサバ
スキャッシュ命令を持っている。これらの命令は内部キ
ャッシュに対して同様の効果を持っているが、プロセッ
サバスとメモリバスとは異なっている。
すべてのメモリバスキャッシュ命令は1つのキャッシ
ュ命令転送メモリバストランザクションを用いて転送さ
れる。ICUがバスマスタでないときには、*VSIをアサー
トすることによってメモリバス上でのキャッシュ命令ト
ランザクションが生じる。トランザクションの1番目の
サイクルでは、MRW、MREQT、BSTC信号およびアドレスが
ラッチされる。MRWおよびMREQT信号は命令を特定する。
BSTC信号は関連する命令のブロック数状態を特定する。
アドレスは関連の命令のためのアドレスオペランドとし
て用いられる。命令がデータオペランドを必要とする場
合には、そのデータは第2のサイクルの間にラッチされ
る。
ICUがバスマスタであり、再ロード動作のための読出
要求を発行したときには、*VSI入力は特別な機能を持
つ。もしそれが、トランザクションが完了する前にアサ
ートされると(最後の*MRDYが受付けられていない)、
BSTC信号はラッチされ、ブロックステータス書込命令が
実行される。アドレスオペランドは再ロードオペレーシ
ョンのために、ICUによって転送されたアドレスに対応
するブロックアドレスである。
本願発明の一実施例で有用と認められたメモリバスキ
ャッシュ命令のセットを、ニモニックと、関連の記述
と、目的の簡単な説明の形でこのすぐ後にテーブル形式
で示す。
なお、MRWOが他のメモリバス動作と整合性を持つよう
に命令コードが配置されていることに注意されたい。MR
WOがローの場合、方向はICUからメモリバスであり、MRW
Oがハイの場合には、方向はメモリバスからICUへであ
る。
機能的なレベルでは、これら命令の実行により以下の
活動が生ずる。
動作なし(NOP)−この命令はICUに対し何の影響も与
えない。メモリバスキャッシュ命令トランザクションプ
ロトコルは任意の命令と同様実行される。
ヒットならワード転送(SWH)−アドレスオペランド
によって特定されるワードがキャッシュ内に存在すれ
ば、*HIT信号がアサートされる。そのワードはメモリ
アドレスバス上に出力され、ブロックステータスのシェ
アードおよびモディファイドビットがBSTC信号に出力さ
れ、*MRDYがアサートされる。
モディファイドならワード転送(SWM)−アドレスオ
ペランドによって特定されたワードがキャッシュ内に存
在し、そのブロックのモディファイドビットがセットさ
れていれば、*HITおよび*MRDY信号がアサートされ、
ブロックステータスのシェアードおよびモディファイド
ビットがBSTC信号に出力される。その後、そのワードは
メモリ内の対応するアドレスに書込まれる。
モディファイドならブロック転送(SBM)−アドレス
オペランドによって特定される4ワードブロックが変更
されていれば、*HITおよび*MRDY信号がアサートさ
れ、ブロックステータスのシェアードおよびモディファ
イドビットがBSTC信号に出力される。その後、すべての
有効ワードはメモリ内の対応するアドレスに書込まれ
る。
ワード無効化(INVW)−アドレスオペランドにより特
定されるワードが無効化される(対応する有効ビットが
リセットされる)。*HIT信号がヒットまたはミス条件
に従って駆動され、命令実行が完了した後*MRDYがアサ
ートされる。
ブロック無効化(INVB)−アドレスオペランドにより
特定される4ワードブロックが無効化される(対応する
すべての有効ビットがリセットされる)。+HIT信号は
ヒットまたはミス条件に従って駆動され、*MRDYがイン
ストラクション実行の完了後にアサートされる。
ブロックステータス書込(WBST)−この命令はICUが
バススレーブである場合にもバスマスタである場合にも
実行可能である。ICUがスレーブのときにはアドレスオ
ペランドはメモリバストランザクションにより特定され
る。この場合、特定されたワードアドレスを含むブロッ
クがキャッシュ内に存在するかどうかチェックされる。
そのブロックが存在する場合には*HITおよび*MRDY信
号がアサートされ、ブロックステータスビットがBSTC信
号からコピーされる。当該ブロックがキャッシュ内に存
在していなければ*HIT信号がデアサートされ、*MRDY
信号はアサートされる。ステータスレジスタのヒットお
よび有効ビットはリセットされる。
ICUがバスマスタでありそれが再ロード動作のための
読出要求を発行した場合には、*VSI入力は特別な機能
を有する。もしトランザクションの完了前にそれがアサ
ートされると(最後の*MRDYが受付けられていない)、
BSTC信号がラッチされ、ブロックステータス書込命令が
実行される。アドレスオペランドは再ロード動作のため
にICUにより転送されたアドレスである。この場合特定
されたワードアドレスを含むブロックは常にキャッシュ
内に存在する(なぜなら再ロードされたからである)。
このブロックのブロックステータスビットはBSTC信号か
らコピーされる。ステータスレジスタは影響を受けな
い。
レジスタ書込(WRR)−レジスタ書込命令はICUの特殊
レジスタに書くために用いられる。
メモリ更新および無効化(UPMI)−アドレスオペラン
ドにより特定され得る4ワードブロックが変更されてい
れば、*HITおよび*MRDY信号はアサートされ、ブロッ
クステータスのシェアードおよびモディファイドビット
がBSTC信号に出力される。その後、すべての有効なワー
ドがメモリ内の対応するアドレスに書込まれ、有効ビッ
トがリセットされる。
ブロックステータス読出(RBST)−特定されたワード
アドレスがキャッシュ内に存在するかどうかチェックさ
れる。ブロックステータスビットはBSTC信号に出力され
る。*HITおよび*MRDYもまた同様に出力される。
レジスタ読出(RDR)−レジスタ読出命令はICUの特殊
レジスタから読出すために用いられる。
キャッシュへのワード書込(WRW)−アドレスオペラ
ンドによって特定されたワードがキャッシュ内に存在し
ている場合、*HIT信号はアサートされ、供給されたデ
ータがキャッシュ内に書込まれる。アドレスの下位2ビ
ットは無視される。なお、アドレスサイクルは*VIS入
力によって特定され、*MASTB信号によって特定される
のではない。データはアドレスサイクルに続くサイクル
内でのメモリバス上の値によって特定される。もしこの
ワードがキャッシュ内に存在していなければ、*HIT信
号がデアサートされ、ステータスレジスタのヒットおよ
び有効ビットがリセットされる。*MRDY信号はICUがメ
モリバスからデータをラッチするときにアサートされ
る。
本願発明の好ましい実施例で用いるのに適した適切か
つ有効な命令セットを完全に説明してきたので、新規な
ICUによってサポートされているデータフォーマットお
よびデータ操作機構についての簡単な説明を行なう。
上に示したように、ワードは32ビットのデータとして
定義される。1ハーフワードは16ビットを含む。1バイ
トは8ビットからなる。ICUはワード、ハーフワードお
よびバイトアクセスを直接にサポートする。プロセッサ
バス上では、アクセス長はOPT入力に従って判定され
る。アクセス長は単一のデータメモリアクセスに対して
のみ効果を持つ。他のすべてのプロセッサバスアクセス
(バーストモードメモリアクセスを含む)において、そ
れは無視されワード長が仮定される。メモリバス上では
アクセス長はMDLN信号により判定される。
本願発明の好ましい実施例における、ワード内でのデ
ータ単位の番号づけの取決めは、以下のとおりである。
各ビットは右から左への昇順で番号づけされる。バイト
およびハーフワードは右から左または左から右のいずれ
の順序にも、モッドbレジスタのバイト順序ビットによ
って制御される。ICUの好ましい実施例はバイト、ハー
フワードおよびワードアクセスを完全にサポートするた
めに必要なハードウェアを含んでいる。さまざまなデー
タ型は、それらの自然なアドレス境界上で整列されなけ
ればならない。自然な境界上でないアクセスはエラーお
よびステータスレジスタによって報告されるが、そのア
クセスはあたかも正しく整列されているかのようにサー
ビスを受ける(すなわち、適切なアドレスビットが無視
される)。
プロセッサバス上でのメモリバイト読出動作について
は、整列ハードウェアが各バイトをワード内の低位(右
側の)ロケーションにシフトする。
プロセッサバス上でのメモリハーフワード読出動作に
対しては、整列ハードウェアはハーフワードをワードの
低位(最も右側の)ロケーションにシフトする。
メモリ読出動作でミスが発生した場合、ICUは再ロー
ドオペレーションのためにメモリバス上でのワードアク
セスを用いる。キャッシュ不能読出アクセスについて
は、バイトおよびハーフワードアクセスが用いられる。
バイトまたはハーフワードはプロセッサに送られる前に
整列される。アクセス長はプロセッサバス(OPT入力)
からメモリバス(MDLN信号)に転送される。
メモリ書込動作に対しては、ICUはバイトおよびハー
フワードを適切なキャッシュロケーションに書込む。バ
イト書込については、そのバイトはワード内の低位のバ
イトロケーションから他のすべてのバイトロケーション
に複製される。正しいバイトをキャッシュに書込むため
に、適切なバイト書込可能化が活性化される。ハーフワ
ード書込については、そのハーフワードはワード内の低
位から高位に向けて複製される。その後、それは適切な
バイト可能化を活性化することによりキャッシュに書込
まれる。
ライトスルーおよびキャッシュ不能書込アクセスにつ
いては、アクセス長はプロセッサバス(OPT入力)から
メモリバス(MDLN信号)に転送される。複製されたバイ
トまたはハーフワードはメモリバス上に出力される。メ
モリコントローラはアドレスおよび長さをデコードし、
正確な書込可能化信号を活性化する。
ICUはバイトおよびハーフワードアクセスをサポート
してはいるけれども、システムがそれらをサポートする
かどうかをユーザが決定できることに注意されたい。も
しワードアクセスのみをサポートするように決定した場
合には、OPTおよびMDLN入力は常にワードアクセスを特
定すべきである。
以下に続く説明は、プロセッサおよびメモリバス上で
のキャッシュアクセスのさまざまな場合についてのICU
の動作を説明するものである。
プロセッサバスアクセスは単一、パイプライン化、バ
ーストモードアクセスのいずれでもいい。
プロセッサバス上のすべてのアクセスはプロセッサに
より開始される。ICUは3つのアクセスプロトコルをサ
ポートしている。
単一アクセスは単一のデータ読出および書込アクセス
と特別な命令アクセスとのために用いられる。
パイプライン化アクセスはICUによってサポートされ
ている。ICUはアドレスをラッチする(*PENが外部論理
によって駆動されなければならない)。プロセッサはア
ドレスバスを他のICUアクセスを開始するために使用す
ることができる。パイプライン化アクセスのアドレス
は、ICUによって、前のアクセスとパイプライン化され
てタグ比較機能のために使用することができる。キャッ
シュヒットの場合、最初のアクセスが完了した後は、パ
イプライン化アクセスが完了するには1サイクルのみが
必要である。キャッシュミスの場合には、メモリバスア
クセスは1サイクル早く開始する。バーストモードアク
セスは命令アクセスおよび複数データアクセスに用いら
れる。これらアクセスでは、第1のワードのアドレスが
転送された後、後続のワードについてはシーケンシャル
アドレスが仮定される。バーストモード読出および書込
アクセスはこのICUによって完全にサポートされてい
る。キャッシュヒットについては、1サイクルあたり1
ワードという最大の速度が達成されている。
単一メモリ読出アクセスはデータキャッシュからデー
タ変数を読出すために用いられる。(組込まれたRISCプ
ロセッサはバーストモードプロトコルを用いてすべての
命令読出を実行する。)このアドレスは、要求されたワ
ードを求めてキャッシュをサーチするために用いられ
る。もしそのワードが見つかれば(ヒット)、そのデー
タはプロセッサに転送され*CRDY出力がアサートされ
る。バイトおよびハーフワードアクセスについては整列
が実行される。単一メモリ読出アクセスに対しては、IC
Uは2サイクルで応答する。
要求されたワードがキャッシュ内に存在していなけれ
ば(ミス)、ICUは予め定められたミス処理手続を開始
する。ブロックステータスのシェアードビットはミスご
とに更新される。また、そのセットと関連づけされたLR
Uビットは各アクセスごとに更新されて最も新しく使用
されたブロックを反映するようにする。
バーストモードメモリ読出アクセスはICUによって、
一連の順次のメモリ読出アクセスとして取扱われる。バ
ーストモード読出アクセスの最初のサイクルでは、最初
のワードのアドレスがプロセッサにより転送される。バ
ーストモード読出アクセスがICUによって検出される
と、ICUはこのアドレスをラッチし、*CBACK信号をアサ
ートする。このアドレスはバースト内の各ワードごとに
比較され自動的にインクリメントされる。キャッシュヒ
ットの場合にはICUは2サイクルのうちに最初のワード
によって応答する。アドレスは1サイクルあたり1回と
いう最高速度でインクリメントされ、比較することがで
きる。これによってキャッシュヒットの場合には1ワー
ドあたり1サイクルという速度を達成できる。なお、1
サイクルアクセスはブロック境界をまたぐ場合にも維持
される。
バーストモードアクセス内のどの時点でもミスが生じ
ると、予め定められたバーストミス処理手続が開始され
る。
メモリバスバーストモードアクセスの間には、次のワ
ードアドレス(現在のワードアドレス+1)がキャッシ
ュ内でチェックされる。メモリバスバーストモード動作
の間にヒットが見出されれば、メモリバスアクセスは終
了されキャッシュからのデータ転送が継続される。ミス
およびヒットならびに一方から他方への転送はプロセッ
サにとっては等価的である(アクセスタイムのみが影響
を受ける)。
バーストモード読出アクセスは、どの時点でも*BREQ
をデアサートすることによりプロセッサが終わらせるこ
とができる。組込まれたRISCプロセッサのバーストモー
ドプロトコルでは、さらにもう1ワードがサービスされ
るように規定されている。
単一メモリ書込アドレスは、データ変数をキャッシュ
に書込むために使用される。アドレスとデータとはアク
セスの最初のサイクルでICUによってラッチされ、*CRD
Y信号がこのサイクル内でアサートされる(単一サイク
ル書込)。なお*CRDY信号はヒットまたはミス条件とは
独立にアサートされる。
キャッシュヒットの場合にはデータは2番目のサイク
ルでキャッシュに書込まれる。書込ポリシーはASTC入
力、モッドaレジスタの書込ポリシーフィールド、モッ
ドbレジスタの書込シェアードヒット制御およびプロセ
ッサシェアードビット制御フィールド、ならびにブロッ
クステータスのシェアードビットにより決定される。可
能なポリシーとして3つの書込ポリシーがある。すなわ
ち排他的ライトスルー、排他的コピーバックおよびシェ
アードである。
排他的ライトスルー書込アクセスの場合、データはメ
モリにも書込まれる。書込バッファが可能化されている
と、データは書込バッファに書込まれる。書込バッファ
が不能化されていると、書込動作は書込バッファの説明
として以下に述べるようにバッファされない。いずれの
場合にも、メモリバスアクセスはそれ以前に実行される
べき他のメモリバス動作が存在しておらず、かつメモリ
バスが利用可能なときに開始される。
排他的コピーバック書込アクセスについては、データ
はキャッシュのみに書込まれ、モディファイドビットが
セットされる。データはブロックが置換されるときにメ
モリに書込まれる。
シェアード書込アクセスの場合には、メモリバス上で
常にライトスルーまたは書込ブロードキャストアクセス
が行なわれる。この場合にはモッドaレジスタの書込ポ
リシーフィールドではなく、モッドbレジスタの書込シ
ェアードヒット制御フィールドがICUの動作を制御す
る。
キャッシュミスの場合には、ICU動作はモッドaレジ
スタの書込割当ビットに従って決定される。書込割当が
可能化されていると、ミスが発生したブロックに対して
キャッシュブロックが割当てられ、ミス手続が開始され
る。ミス手続はメモリ読出ミス手続と同様である。ミス
手続が完了した後、書込ヒットの場合について前に説明
したのと同様、キャッシュ動作が継続する。
もし書込割当が不能化されていると、キャッシュでは
ブロックは割当てられない。データはライトスルー動作
について説明したとおりメモリのみに書込まれる。なお
この場合、コピーバック書込はライトスルーアクセスの
ように取扱われる。
ブロックステータスのシェアードビットは各ミスごと
に更新される。シェアードビットは、モッドbレジスタ
の適切なビットがセットされていると、キャッシュヒッ
トの場合にも更新される。
セットに関連づけされたLRUビットは各アクセスごと
に更新され、最も新しく使用されたブロックを反映する
ようにしている。
バーストモードメモリ書込アクセスは、ICUによっ
て、一連の順次のメモリ書込アクセスとして取扱われ
る。バーストモード書込アクセスの最初のサイクルにお
いて、1番目のワードのアドレスおよびデータがプロセ
ッサにより転送される。バーストモード書込アクセスが
ICUによって検知されると、ICUはアドレスおよびデータ
をラッチし、*CRDYおよび*CBACK信号をアサートす
る。このアドレスはバースト内の各ワードについて比較
され自動的にインクリメントされる。
キャッシュヒットの場合,ICUは最初のワードを2番目
のサイクル内でキャッシュに書込む。アドレスは1サイ
クルあたり1回という最大速度でインクリメントされ比
較される。これによって1ワードあたり1サイクルとい
う速度がキャッシュヒットの場合には達成できる。な
お、ブロック境界をまたぐ場合にも1サイクルアクセス
は維持される。メモリバス書込動作も、単一メモリ書込
と同様の条件で開始可能である。書込バッファが可能化
されていると4回の書込までバッファするよう書込バッ
ファは使用される。メモリバスアクセスはバーストモー
ド書込である。メモリバス動作についての条件がバース
ト内の各ワードごとにチェックされ、それに従ってメモ
リバス動作が行なわれる。
バーストモードアクセスの間のどの時点でもミスが発
生すると、ICU動作はモッドaレジスタの書込割当ビッ
トに従って決定される。書込割当が可能化されている
と、ミスが発生したブロックに対してキャッシュブロッ
クが割当てられ、ミス処理手続が開始される。メモリバ
スアクセスは、モッドbレジスタ内の書込ミスメモリア
クセス制御ビットがハイであるかローであるかによって
それぞれ読出または変更のための読出のどちらともなり
得る。ミス手続が完了した後、キャッシュ動作はヒット
の場合に記載したのと同様に継続される。なおこの場
合、ミスが発生したサブブロックは各々、最初にキャッ
シュに読出され書込まれる。メモリバス動作は連続した
バーストではない。
書込割当が不能化されていると、キャッシュ内にブロ
ックは割当てられない。データはバーストモード書込動
作を用いてメモリのみに書込まれる。バースト内の各ワ
ードについて、メモリバス動作のための条件がチェック
され、メモリバス動作がそれに従って実行される。
各ワードの書込ごとに、次のワードアドレス(現在の
ワードアドレス+1)がキャッシュ内にあるかどうかチ
ェックされる。1以上のミスの後にヒットが発生した
ら、ICUはヒットの場合に記載したのと同様に動作を続
ける。ミスおよびヒットと、一方から他方への転送はプ
ロセッサには透過的である(アクセスタイムのみが影響
を受ける)。
バーストモード書込アクセスは*BREQをデアサートす
ることにより、どの時点でもプロセッサによって終了す
ることができる。ICUは、必要であれば最後のワード書
込を行なった後、メモリバスバーストモードアクセスを
終了する。
次に、本願発明の好ましい実施例によりサポートされ
る種々の他のアクセス手続について説明する。
キャッシュ不能メモリアクセスがサポートされてい
る。これは特殊な変数へのアクセスのためにキャッシュ
をバイパスするために用いられる。このアクセスについ
ては、必要とされるデータについてキャッシュはサーチ
されない。メモリアクセスはメモリ内のデータの読出ま
たは書込のために開始される。このデータについてはキ
ャッシュ内のどのブロックも割当てられない。
命令ROMアクセスはオプションとしてサポートされ
る。これらアクセスは通常のメモリ読出アクセスとして
命令キャッシュによりサービス提供される。ミスの場合
にはメモリバスアクセスはROMアクセスとして指定され
る。ICUはROMアクセスを無視するようにプログラム可能
である。
入力/出力アクセスはオプションとしてサポートさ
れ、データキャッシュによってキャッシュ不能アクセス
として取扱われる。ICUはこのアクセスをI/O表示ととも
にメモリバスに転送する。ICUは入力/出力アクセスを
無視するようにプログラム可能である。
コプロセッサ転送はデータキャッシュにより無視され
る。
インターロックアクセスとして特定されるメモリアク
セスもまたサポートされている。これは*LOCK入力をセ
ットすることにより行なわれる。インターロックアクセ
スは、セマフォーおよび他の同期化された共有変数をア
クセスするために用いられる。インターロックアクセス
はモッドbレジスタにより制御される。
データとしての命令メモリアクセスがサポートされて
いる。これは命令メモリの内容を読出しまたは書込みす
るために用いられる特別なデータアクセスである。それ
はOPT入力への特別なコードによって表示される。
デバッグモジュールアクセスもまたサポートされてい
る。これはRISC/SIPデバッグモジュールにアクセスする
ために用いられる特別なデータアクセスである。それは
OPTインプット上の特別なコードで表示される。ICUはこ
のアクセスのために*CRDY信号を駆動する。*CRDYは4
サイクルの間ハイに駆動され、その後1サイクルの間ア
サートされる。これはプロセッサの*RDYロジックに影
響を与えることなくキャッシュシステム内にデバッグモ
ジュールを挿入できるようにするために行なわれる。
上記したすべてに加えて、キャッシュ命令アクセスが
サポートされている。このアクセスはプロセッサバスキ
ャッシュ命令をICUに転送するために用いられる。
以下ではメモリバスアクセスについて論じるが、メモ
リバスはICUマスタキャッシュおよびスレーブキャッシ
ュのいずれによっても使用されるということが理解され
るべきである。メモリはメモリバスアクセスを発行する
ことによりICUバスマスタによりアクセスされる。ICUは
*BUSR(バス要求)出力をアサートし*MBGRT(バスグ
ランド)を待つことによりバスの所有権を獲得する。IC
Uバススレーブはキャッシュの整合性を取る目的でメモ
リバスアクセスを監視することができる。キャッシュ命
令はメモリバス上の特別なアクセスで活性化できる。
読出アクセス、書込アクセスおよび変更のための読出
アクセスもICUによりサポートされており、それを以下
に説明する。
メモリバス読出アクセスは、再ロード動作およびキャ
ッシュ不能アクセスに対してキャッシュマスタにより開
始される。すべての再ロード動作はアクセス長としてワ
ードを用いる。キャッシュ不能アクセスの場合、アクセ
スタイプと適切なアクセス長とがプロセッサバスからMD
LN、MREQTおよび*MROCKメモリバス信号に転送される。
1を超えるワードが必要な場合には再ロードの動作のた
めにバーストモードアクセスが用いられる。他のすべて
の場合には単一アクセスが使用される。再ロード動作は
元のプロセッサバス動作による。それは単一アクセスと
バーストモードアクセスとの場合で異なる。プロセッサ
バス単一メモリ読出動作におけるキャッシュミスの場
合、開始および終了アドレス、ならびにアドレスラップ
アラウンドまたはラップアラウンドなしはモッドaレジ
スタの単一ミス制御(SMC)およびサブブロックサイズ
(SBS)フィールドにより制御される。
プロセッサバスバーストモード読出アクセスにおける
キャッシュミスの場合には、再ロードオペレーションの
ためにバーストモードアクセスがメモリバス上で開始さ
れる。再ロード開始アドレスは常にミスされたワードの
アドレスである。バースト終了アドレスはモッドaレジ
スタにより制御される。
ICUがバスマスタであり、再ロードオペレーションの
ために読出要求を発行した場合には、*VSI入力は特別
な機能を有する。もしもトランザクションが完了する前
に(最後の*MRDYが受取られていない)それがアサート
されると、BSTC信号はラッチされ、特別なブロックステ
ータス書込命令が実行される。
メモリバス読出アクセスのためのスレーブキャッシュ
の動作について、ICUマルチプロセッササポートの関連
で以下に説明する。
まず書込アクセスに注目する。書込動作は、キャッシ
ュマスタにより、ライトスルーおよびキャッシュ不能書
込アクセス、変更されたブロックのメモリへのコピーバ
ック、および共有されたブロックの書込ヒット動作の際
に開始される。バーストモードアクセスは変更されたブ
ロックのコピーバック動作およびプロセッサバス上のバ
ーストモード書込アクセスにおいて開始される。他のす
べての場合には単一アクセスが開始される。単一アクセ
スについては、アクセスタイプおよびアクセス長がプロ
セッサバスからMDLN、MREQTおよび*MLOCKメモリバス信
号に転送される。
メモリバス読出アクセスは再ロード動作およびキャッ
シュ不能アクセスに対してキャッシュマスタによって開
始される。再ロード動作はアクセス長としてワードを用
いる。キャッシュ不能アクセスに対しては、アクセスタ
イプおよび適切なアクセス長がプロセッサバスからMDL
N、MREQTおよび*MLOCKメモリバス信号に転送される。
1ワードを超えるワードが必要な場合には再ロード動作
に対してはバーストモードアクセスが用いられる。他の
すべての場合については単位アクセスが用いられる。
再ロード動作は元々のプロセッサバス動作によって異
なる。単一アクセスおよびバーストモードアクセスの場
合で異なっている。プロセッサバス単一メモリ読出動作
でのキャッシュミスの場合には、開始および終了アドレ
スと、アドレスラップアラウンドまたはラップアラウン
ドなしとは、モッドaレジスタの単一ミス制御(SMC)
およびサブブロックサイズ(SBS)フィールドによって
制御される。
プロセッサバスバーストモード読出アクセスでのキャ
ッシュミスの場合には、再ロードオペレーションに対し
てはバーストモードアクセスがメモリバス上で開始され
る。再ロード開始アドレスは常にミスが生じたワードの
うちの1つである。バースト終了アドレスはモッドaレ
ジスタによって制御される。
ICUがバスマスタであり再ロード動作に対する読出要
求を発行した場合には、*VSI入力は特別な機能を有す
る。もし*VSIがトランザクションの完了前(最後の*M
RDYが受付けられていない)にアサートされた場合、BST
C信号がラッチされ特別なブロックステータス書込命令
が実行される。
メモリバス読出アクセスについてのスレーブキャッシ
ュの動作を、ICUマルチプロセッサについてのサポート
との関連で以下に説明する。
まず書込アクセスについて述べる。書込動作はライト
スルーおよびキャッシュ不能書込アクセス、メモリへの
モディファイドブロックのコピーバック、および共有ブ
ロック書込ヒット動作についてキャッシュマスタによっ
て開始される。モディファイドブロックのコピーバック
動作、およびプロセッサバス上でのバーストモード書込
アクセスについてはバーストモードアクセスが開始され
る。他のすべての場合には単一アクセスが開始される。
単一アクセスに対しては、アクセスタイプおよびアクセ
ス長はプロセッサバスからMDLN、MREQTおよび*MLOCKメ
モリバス信号に転送される。
メモリバス上のバーストモード書込アクセスは要求さ
れた開始位置ワードアドレスで開始しメモリに書込むこ
とが要求されている最後のワードで停止する。バースト
モード読出アクセスの場合のようにそれはモッドaオプ
ションによっては影響されない。
共有ブロックに対するヒットの場合には、レジスタの
書込シェアードフィット制御フィールドの値によって、
モッドbレジスタの制御の下でライトスルー動作が開始
される。
メモリバス書込アクセスに対するスレーブキャッシュ
の動作についてもICUマルチプロセッサのサポートに関
連して以下に説明する。
変更のための読出は特別な読出動作である。それはコ
ピーバック書込動作でのミスの場合に、モッドbレジス
タの制御の下でICUによって用いられる。マスタキャッ
シュは、そのブロックが読出の完了後に変更される予定
であることを示す。他のすべての点ではマスタの動作は
読出アクセスの場合と同様である。
ICUがバスマスタであって、再ロードオペレーション
のために変更のための読出要求を発行した場合には、*
VSI入力は特別な機能を持つ。もしトランザクション完
了前(最後の*MRDYがまだ受付けられていない)ときに
アサートされた場合には、BSTC信号がラッチされ、特別
なブロックステータス書込命令が実行される。
変更のための読出アクセスについてのスレーブキャッ
シュ動作をICUマルチプロセッサに関するサポートとの
関連で以下に説明する。
ICUの好ましい実施例ではさらに2つの動作、すなわ
ち、書込ブロードキャスト動作およびメモリバスキャッ
シュ命令アクセスの2つの動作がサポートされている。
書込ブロードキャスト動作は共有ブロックへの書込ヒ
ットの場合にのみ、モッドbレジスタの制御の下でICU
によって開始される。書込ブロードキャストと通常の書
込との間の相違は、書込ブロードキャストではメモリが
更新されないということである。他のすべての点でこの
動作は書込アクセスと同様である。
メモリバスキャッシュ命令アクセスは外部ロジックに
よってメモリバス上で開始されるであろう。ICUがバス
マスタでない場合には、*VSIをアサートすることによ
ってメモリバス上にキャッシュ命令トランザクションが
生じる。トランザクションの最初のサイクルの間に、MW
R、MREQT、BSTC信号およびアドレスがラッチされる。MW
RおよびMREQT信号は命令を特定する。BSTC信号は関連す
る命令に対するブロックの状態を特定する。アドレスは
関連の命令に対するアドレスオペランドとして使用され
る。命令がデータオペランドを必要とする場合には、そ
のデータは第2のサイクルの間にラッチされる。
ICUの好ましい実施例は、種々のキャッシュアクセス
に関し以下に述べるような優先順位規則に従う。
1.すべてのアクセスは先着順でサービスを受ける。
2.第1の命令が完了する間に第2のアクセスがパイプラ
イン中で開始してもよい。タグおよびメモリ制御は各サ
イクルで異なるアクセスに対してサービスすることがで
きる。
3.もしプロセッサバス上での1つのアクセスとメモリバ
ス上での1つのアクセスとが同時にタグアレイへのアク
セスを要求する場合には、プロセッサバスアクセスが優
先権を持つのは、それが一次(パイプライン化でもなく
バースト継続でもない)メモリアクセスの場合のみであ
る。他のすべての場合においてメモリバスアクセスが優
先権を持つ。
4.プロセッサバスアクセスに対する応答は常に受信され
た順番で行なわれる。もしパイプライン化されたまたは
バースト継続アクセスがキャッシュ内でヒットした場
合、その応答は一次アクセスが完了するまで遅延され
る。なお、パイプライン化されたまたはバースト継続ア
クセスは一次アクセスの応答が送信された後、かつそれ
が完全に完了する前に完了することができる。これが生
ずるのは、再ロード動作に対して要求されたデータプロ
セッサに送信された後に、メモリバス上での書込が実行
される前の一次書込アクセスに対してと、いくつかの特
別な命令の実行のときである。
当業者であれば、ICUの特殊レジスタがプログラム可
能なオプションの選択とステータスの報告とを行なうこ
とができることを理解できるであろう。プログラム可能
オプションを用いることによってキャッシュポリシーを
選択することができる。キャッシュ書込ポリシーは、ラ
イトスルー、コピーバックまたはアクセスごとのフレキ
シブル、としてプログラム可能である。書込割当または
非書込割当オプションを選択することができる。置換ア
ルゴリズムはLRU、ランダムまたは外部としてプログラ
ムすることができる。柔軟なプリフェッチポリシーを選
択することができる。リードスルーオプションを可能化
することができる。効率的なプリフェッチおよび読出動
作をサポートするために4ワード読出バッファが組込ま
れている。
以前に示したオプションビットが、オプションの選択
として定義されておりモッドaレジスタにストアされて
いる。
既に示したように、プリロード命令との比較におい
て、プリフェッチ動作は、変数または命令をそれらが必
要とされる前にフェッチすることとして定義されてい
る。ICUはいくつかのプログラム可能プリフェッチのオ
プションをサポートするためのハードウェアを含んでい
る。ICUはまたプリフェッチバッファとして使用される
メモリ読出バッファも含んでいる。プリフェッチされた
ワードはキャッシュアレイを更新することができない場
合にはプリフェッチバッファ内にセーブすることができ
る。以下のプリフェッチオプションの各々は、独立に、
またはどのような組合せでも使用することができる。
プリフェッチの最も単純な形は、1ワードよりも大き
なサブブロックサイズを用いることによって達成するこ
とができる。ミスの場合には、ICUはサブブロックを再
ロードする。要求されたワードと同じサブブロック内の
ワードはプリフェッチされることになる。
モッドaレジスタが単一アクセスミスでのICUの動作
を制御する。
モッドaレジスタはまた、バーストモードアクセスで
のミスについてのICUの動作を制御する。プロセッサに
よってバーストがサスペンドされた場合、キャッシュは
メモリバーストを停止する前にさらにワードをプリフェ
ッチすることができる。この場合にはプリフェッチは、
同じサブブロックまたは次のサブブロックの最後まで進
むことができる。
モッドaレジスタはまた、単一アクセスキャッシュヒ
ットおよびバーストアクセスキャッシュヒットでのプリ
フェッチのオプションを可能化する。
プリフェッチに加えて再ロード動作も定義されており
プログラム可能モッドaレジスタの制御の下で行なわれ
る。
再ロード動作は元のプロセッサバス動作に依存する。
単一アクセスとバーストモードアクセスとで異なってい
る。
プロセッサバス単一メモリ読出動作でのキャッシュミ
スの場合には、開始および終了アドレスと、アドレスラ
ップアラウンドまたはラップアラウンドなしはモッドa
レジスタによって制御される。
プロセッサバスバーストモード読出アクセスでのキャ
ッシュミスの場合には、再ロード動作に対してバースト
モードアクセスがメモリバス上で開始される。再ロード
開始アドレスは常にミスが生じたワードのうちの1つで
ある。バースト終了アドレスは常にモッドaレジスタに
よって制御される。
次に、いかにしてICUがマルチプロセッサ動作をサポ
ートしているかについての詳細な説明を行なう前に、IC
U書込バッファならびにICU初期化およびリセットの基準
について述べる。
ICUは4ロケーションの書込バッファを有している。
この書込バッファは4つの書込アクセス(アドレス、制
御およびでデータ)までをバッファすることができる。
書込バッファはモッドaレジスタ内のあるビットをセッ
トすることにより不能化することができる。
可能化されると、メモリバス上の書込アクセスをバッ
ファリングするために書込バッファを使用することがで
きる。ライトスルーおよび書込ブロードキャストアクセ
スに対しては、4つの独立した書込アクセスをバッファ
することができる。書込は、バスが利用可能となるまで
書込バッファ内で待機する。これによってライトスルー
キャッシュに対して、または多数の書込ブロードキャス
ト動作が存在する場合について、性能をかなり改善する
ことができる。
書込バッファは修正されたブロックがメモリに書込ま
れる前にそれをバッファリングすることも用いられる。
ミスの場合には、もし変更されたブロックが置換のため
に選択された場合には、そのブロックは書込バッファ上
にストアされる。ミスが生じたサブブロックに対する読
出の前に開始することができる。これによってICUがプ
ロセッサの要求に対してより速く応答することが可能に
なる。
書込バッファが一杯の場合であっても、ICUはメモリ
バスが必要とされる(読出ヒットまたはコピーバック書
込ヒット)のでない限りは、もう1つのキャッシュアク
セスに対してサービスすることができる。もう1つの書
込動作についてメモリバスが要求された場合には、キャ
ッシュは書込バッファ内に書込のためのスペースが1つ
利用可能となるまで停止する。すべての他の要求は、書
込バッファが空になった後に始めてサービスを受ける。
これが必要とされるのは、要求の順序が正しいことを保
証するためである。すなわち、メモリ読出におけるミス
は、更新されたメモリから読出を行なうためにはすべて
の書込が実行された後まで待たなければならないという
ことである。
書込バッファが不能化された場合には書込アクセスは
バッファされない。バスが利用可能となればすぐにメモ
リバス上で書込動作が開始される。その場合にもICUは
メモリバスが必要とされる(読出ヒットまたはコピーバ
ック書込ヒット)のでない限りはもう1つのキャッシュ
アクセスに対してサービスすることができる。メモリバ
スが要求される場合、キャッシュはその前の動作が完了
するまで停止する。
初期化については、ICUは電源が最初に供給されたと
きに初期化されなければならない。ICUはまた、必要な
場合にはその後の任意の時点で初期化される。
ICUを初期化するには2つの方法がある。1つは*RES
T入力をアサートすることであり、他の1つはリセット
命令を発行することである。2つの方法はICUに対して
正確に同じ影響を及ぼす。本願発明の好ましい実施例に
よれば、特別な初期化シーケンスが以下のように実行さ
れる。
1.実行中のキャッシュ動作またはキャッシュ命令はどの
ようなものであれサスペンドされる。
2.メモリバス動作はいずれもサスペンドされる。
3.チップ選択マッピングレジスタ内にストアされている
チップ選択不能化およびメモリアクセスに対するチップ
選択可能化ビットはリセットされる。
4.命令レジスタにストアされている、命令およびオペラ
ンドの有効性を示すビットはリセットされる。
5.カウントレジスタにストアされている、命令カウント
の有効性を示すビットはリセットされる。
6.ステータスレジスタ内のパリティエラー、メモリエラ
ー、違法命令および保護違反ビットはリセットされる。
7.読出専用メモリ可能化(ROME)およびキャッシュが命
令またはデータキャッシュであることを示すビット(ID
ビット)を除くすべてのモッドaレジスタ内のビットは
リセットされる。
8.モッドbレジスタのすべてのビットはリセットされ
る。
9.すべての有効ビットがリセットされる。
適切なリセット動作のためには以下の条件が維持され
なければならない。
1.システム内のすべてのICUデータキャッシュ内の*IRE
Q入力はロウレベルに接続されなければならない。すべ
ての命令キャッシュの*IREQはプロセッサの*IREQ出力
に接続されなければならない。
2.ただしROMリセットがメモリバス上に出力されいれ
ば、1つのみの命令キャッシュのDREQT1がハイレベルに
接続されなければならない。ROMリセットがプロセッサ
バス上に出力されている場合にはすべてのDREQT1はロウ
レベルに接続されなければならない。
3.異なるICUのチップ選択マッピングレジスタは、メモ
リアクセスおよびキャッシュ命令アクセスについて異な
るアドレスに応答するようにプログラムされなければな
らない。これは*CSEL入力を用いることによって行なう
ことができる。外部のハードウェアを必要としない簡単
な構成も可能である。異なるキャッシュの*CSEL入力を
異なるアドレスビットに接続し、適切なアドレスを使用
することができる。初期レジスタプログラミングが完了
した後に、*CSEL入力を不能化することができる。
4.ICUレジスタのプログラミングが、リセット後の最初
の動作シーケンスでなければならない。ICUが特定のシ
ステムに従って設定される前には、(命令ROMアクセス
を除き)いかなるメモリ、I/Oまたはコプロセッサアク
セスも実行されてはならない。
5.仮にデータ転送制御器(DTC)がシステム内に存在し
ている場合に、DTCアクセスが行なわれる前にロッドb
レジスタがプログラムされなければならない。DTCがプ
ロセッサバス上に存在している場合にはDTCはI/Oアドレ
スに対して応答するようプログラムされなければならな
い(ICUはI/Oアクセスを無視するようにプログラムされ
なければならない)。
次にICUの、マルチプロセッサをサポートする特徴に
ついて検討する。
キャッシュという観点から見た場合のマルチプロセッ
サ構成での主要な問題は、データの整合性という問題で
ある。この問題は、同じメモリロケーションのコピーを
複数のキャッシュが持っており、そのうちの1つのキャ
ッシュに保持されているデータがプロセッサによって変
更された場合に生ずる。この場合他のキャッシュはその
データの、古くなった(更新されていない)コピーを含
んでいることになる。新たなICUアーキテクチャはこの
問題に対応する。当業者であれば、新規なICUに組込ま
れているマルチプロセッサに対するサポートのための構
成が、他のマルチプロセッサのキャッシュ環境について
も適用可能であることを理解することができるであろ
う。
ICUによるマルチプロセッサのサポートの背後にある
基本的な考え方は、高性能かつ高効率のマルチプロセッ
サキャッシュシステムを可能とするために、多くの特徴
を含ませるという点である。そうした特徴は、マルチプ
ロセッサシステム構成に対してICUが課す制約を最小限
とするために、十分な柔軟性を含んでいる。このマルチ
プロセッサをサポートする特徴を使用するための適切な
方法は簡単に選択することができる。それは、オンチッ
プの特殊レジスタ内のオプションビットをプログラムす
ることによりソフトウェア制御によって行なうことがで
きる。
ここで第4図を参照する。
第4図には、典型的な、単純化されたバス共有マルチ
プロセッサシステムのブロック図が示されている。2以
上のプロセッサクラスタが同じメモリバスを共有するこ
とができる(図には2つが示されている)。各プロセッ
サクラスタは1つのプロセッサと2つのICUとからな
る。1つのICUが命令キャッシュのために用いられ、他
の1つはデータキャッシュのために用いられている。プ
ロセッサアドレスバス(A)が、2つのICUのアドレス
バッファ(A)に接続して示されている。プロセッサ命
令バス(I)が命令キャッシュのキャッシュバス(CB)
に接続されている。プロセッサデータバス(D)はデー
タキャッシュのキャッシュバス(CB)に接続されてい
る。ICUのメモリバス(MEMAD)はいずれも共有されたメ
モリバスに接続されている。この基本的なブロック図に
対して種々の変更を行ない、しかも本願発明の精神およ
び範囲を逸脱しないようにすることが可能である。
ここで、本願発明の好ましい実施例によれば、各キャ
ッシュブロックに対して2つのブロックステータスビッ
トおよび4つの有効ビットが関連付けされていることを
想起されたい。有効ビットはブロック内のワードの有効
性を示す。各有効ビットは1ワードに対応する。もし1
つの有効ビットでもセットされていればそのブロックは
有効であり、そのブロックステータスビットは有効状態
を示す。もしすべての有効ビットがリセットされていれ
ば、そのブロックは無効状態にあり、ブロックステータ
スビットは不適切である。ブロックステータスビットは
シェアードおよびモディファィドビットと呼ばれる。シ
ェアードビットは、このブロックが2以上のプロセッサ
によって共有されているか、2以上のキャッシュ内に存
在しているかを示す。モディファィドビットは、このブ
ロックがメインメモリに対して変更されているかどうか
を示す。これら2つのビットは独立であり、有効ブロッ
クには以下のような状態が割当てられる。
また、キャッシュ不能データとはキャッシュされない
データ変数であることを想起されたい。キャッシュ不能
プロセッサバスアクセスはICUのASTC入力に示される。
このアクセスに対しては、要求されたデータに対するキ
ャッシュサーチは行なわれない。このデータについての
メモリに対する読出または書込のためのメモリアクセス
が開始される。このデータに対してはキャッシュ内には
ブロックは割当てられない。キャッシュ不能データはア
クセスごとに割当てることができる。通常ASTC入力はプ
ロセッサのMMUプログラム可能(MPGM)出力に接続され
る。この場合にはキャッシュ不能データはMMUページ単
位で割当てられる。キャッシュ不能データは、システム
によってキャッシュ不能として割当てられたロケーショ
ン内に置かれるべきである。このデータの整合性という
問題を解決するための1つの方法は、そういう変数をキ
ャッシュ不能とすることである。
プロセッサバスメモリアクセスはまたインターロック
アクセスとすることもできる。これはICUの*LOCK入力
をセットすることによって行なわれる。インターロック
アクセスはモッドbレジスタによって制御され、キャッ
シュ可能またはキャッシュ不能アクセスのいずれにも指
定することができる。
マルチプロセッサ環境では、インターロック変数を同
期、同期通信のために用いることができる。これら変数
は同期化された方法でアクセスされる。これら変数はあ
る一時点においては1つのプロセッサのみよって書込可
能である。インターロックアクセスについてのICUのサ
ポートについての詳細な説明を以下で行なう。
このICUは、柔軟なライトスルーおよびコピーバック
書込ポリシーをサポートしている。これら書込ポリシー
はグローバル(全体的)にも、アクセスごとにも割当て
ることができる。グローバル書込ポリシーはモッドaレ
ジスタが制御する。モッドaレジスタは柔軟なライトス
ルーまたはコピーバックポリシーを規定することができ
る。ASTC入力はアクセスごとに書込ポリシーを規定す
る。アクセスは、排他的ライトスルー、排他的コピーバ
ック、またはシェアードとして割当てることができる。
キャッシュヒットの場合、ASTC入力のシェアードビット
割当とキャッシュ内のブロックステータスシェアードビ
ットとの間で矛盾が生じた場合には、書込動作がモッド
bレジスタ内のプロセッサシェアードビット制御(PSB
C)の値によって制御される。PSBCが0であればブロッ
クステータスシェアードビットは影響を受けず書込ポリ
シーはブロックステータスに従って決定される。PSBCが
1であれば、ブロックステータスシェアードビットはAS
TC入力に従って割当てられ書込ポリシーはこれに従い決
定される。
シェアード書込アクセスの場合には、ライトスルーま
たは書込ブロードキャストアクセスは常にメモリバス上
で行なわれる。この場合には書込ポリシーフィールドで
はなく、モッドbレジスタ内の書込シェアードヒット制
御(WSHC)フィールドがICUの動作を制御する。
マルチプロセッサキャッシュ環境では、ライトスルー
ポリシーはコピーバックポリシーよりも問題が少ない。
ライトスルーが用いられた場合には、メモリは常に最新
版のデータを含んでいる。ライトスルーアクセスはま
た、他のキャッシュが自分自身のコピーを無効化するた
めに他のキャッシュが使用することもできる。
システムはマルチプロセッサ環境でキャッシュを制御
するためにプロセッサバスキャッシュ命令を使用するこ
とができる。古いデータを無効化するためには無効化命
令を使用することができる。ブロックステータスの読出
および書込、メモリ更新、およびキャッシュデータをメ
モリバス上に送信するために、他の命令を、より複雑な
ソフトウェア制御されたマルチプロセッサキャッシュ内
で使用することもできる。
このICUの、マルチプロセッサに関するサポートの他
の特徴は「バス監視」である。この新規なICUは、メモ
リバスアドレスを監視し、タグアレイ内のアドレスと一
致しているか否かをチェックすることができる。この動
作はプロセッサバスキャッシュアクセスにとっては透過
的に行なわれる。モッドbレジスタ内のバス読出監視可
能化情報がメモリバス読出アクセスに対するバス監視能
力を制御(可能化または不能化)する。モッドbレジス
タ内のバス書込監視可能化情報はメモリバス書込アクセ
スに対し同じことを行なう。可能化されるとバスは、IC
Uがバススレーブのときのみ監視される。アドレスの一
致が発生した場合、ICUはモッドbレジスタ内の読出一
致制御および書込一致制御情報によって制御される動作
を行なう。
メモリバス読出での一致の場合、*HITC信号がICUに
よりアサートされる。シェアードブロックステータスビ
ットがセットされる。なぜならならばこのブロックは潜
在的に他のキャッシュによってフェッチされているから
である。モッドbレジスタがデータ介入動作とブロック
ステータスモディファィドビット割当とを制御する。オ
プションとしては、データ介入なし、データ介入(モデ
ィファィドビット変更なし)およびデータ介入(モディ
ファィドビットリセット)とである。
データ介入が不能化されると、他のマスタあによるメ
モリバス読出での一致があった場合、ICUは*HIT信号を
アサートするがデータは出力しない。ブロックステータ
スモディファィド情報は変更されない。データ介入が可
能化され、他のマスタによるメモリバス読出に対して一
致が検出されかつブロックが変更されている場合、ICU
は*DI出力をアサートし、要求されたデータをメモリバ
ス上に供給する。ブロックステータスモディファィドビ
ットは変更されないかまたはリセットされる。
変更のための読出アクセスでの一致が生じた場合、ス
レーブキャッシュによって対応するワードが無効化され
る。他のすべての点ではスレーブキャッシュの動作は通
常の読出アクセスでの一致の場合と同様である。
メモリバスバーストモードアクセスに対しては、初期
アドレスがラッチされる。このアドレスは各単一の転送
に対してスレーブキャッシュ内でインクリメントされチ
ェックされる。一致した場合のスレーブキャッシュの動
作は単一アクセスでの一致のときと同様である。
読出時のバス監視は、以下に述べるデータ整合性所有
権方式をサポートする上で不可欠である。
データ介入というオプションは、ある種の所有権方式
によって必要とされる。それら方式については、メモリ
はそれをサポートするように設計されなければならな
い。*DI信号は、アクセスの最初のサイクルの間にマス
タキャッシュによってプリチャージされる。このプリチ
ャージされたハイという値を保持するために、外部のプ
ルアップレジスタが*DI信号上に設けられなければなら
ない。*DI信号は、データ介入動作が行なわれた場合に
スレーブキャッシュによってディスチャージされる。こ
の場合データはメモリによって供給されてはならず、読
出アクセスはメモリ内で取消されなければならない。な
お*DI出力はアドレスがメモリバス上に出力されてから
2サイクル後に有効となる。メモリはこれらサイクルの
間に応答することはできない。
メモリバス書込または書込ブロードキャストでの一致
の場合、*HIT信号がアサートされる。
バーストモード書込アクセスについては、初期アドレ
スがラッチされる。このアドレスは各単一のデータ転送
ごとにスレーブキャッシュ内でインクリメントされチェ
ックされる。一致の場合のスレーブキャッシュの動作は
単一アクセスでの一致の場合と同様である。
書込のためのバス監視はデータの整合性方式をサポー
トする方式の多くのサポートにおいて不可欠である。
ブロックステータスのシェアードビットがどのように
して割当てられるかについての説明を以下で行なう。
ブロックステータスシェアードビットはソフトウェア
またはハードウェア制御によって割当てることができ
る。ソフトウェア制御の場合、プロセッサがASTC入力を
用いてシェアードビットを割当てることができる。これ
ら入力はアクセスごとにシェアードビットの割当てを定
める。アクセスには、排他的ライトスルー、排他的コピ
ーバック、またはシェアードが割当てられる。通常はAS
TC入力はプロセッサのMPGM信号に接続されており、この
MPGM信号はMMUのユーザプログラム可能なビットに従っ
て駆動される。共有されかつ排他的な変数は共有のまた
は排他的なページに置かれ、それらページのためのユー
ザプログラム可能なビットはそれに従って割当てられ
る。モッドbレジスタのPSBCビット(前述)の状態に従
ってシェアードビットは各プロセッサアクセスごとに変
更され(PSBC=1)、またはキャッシュミスの場合だけ
変更される(PSBC=0)。
ハードウェア制御の場合、シェアードビットは*HIT
信号を用いるか、メモリバス上の特殊目的論理およびブ
ロックステータス書込メモリバスキャッシュ命令を用い
て割当てることができる。*HIT信号を読出および書込
アクセスにおいて使用するのは、モッドbレジスタの外
部シェアードビット制御(ESBC)フィールドによって制
御される。
マスタキャッシュが*HIT信号を使用する場合、マス
タキャッシュはメモリバスアクセスの最初のサイクルの
間に*HIT信号をプリチャージする。その後*HIT信号は
3状態に置かれる。プリチャージされたハイの値を保持
するために、外部のプルアップレジスタを*HIT信号に
接続しなければならない。スレーブキャッシュは、それ
らのタグバッファ内での一致を見出した場合、それをデ
ィスチャージする。*HIT信号は*MRDYがアサートされ
るか、メモリバスアドレスサイクルの2サイクル後か、
いずれか遅い方のときにマスタキャッシュによってラッ
チされる。仮に*HIT信号がアサートされた場合、その
場合にはその変数は他のキャッシュ内にも存在してお
り、そのブロックにはシェアード状態が割当てられる。
もし*HIT入力がアサートされなければ、その変数はど
のキャッシュにも存在しておらず、そのブロックには排
他的状態が割当てられる。
この方法のいくつかの所有権管理方式で使用される。
これによってシェアード状態が、変数の状態を正確に表
わすことが保証される。それは、他のキャッシュにもそ
れが存在しているときのみ共有される。なおこの*HIT
信号を用いる場合、これに関連して性能上の犠牲を払わ
なければならない。すなわちICUが、他のすべてのキャ
ッシュが応答するまで2サイクルの間待機しなければな
らないということである。もしシェアードビットを変更
しなければならない場合、特別な内部キャッシュアレイ
のアクセスも必要となる。このためこうしたやり方は、
このオプションを選択するまでは有利な点ではないと考
えられる。
既に述べたブロックステータス書込メモリバスキャッ
シュ命令を、ブロックステータスシェアードビットに特
定のステータスを書込むために使用することができる。
この命令はシェアードビットを柔軟に制御するために外
部論理によって用いることができる。
上記した3つの方法の間での共有ブロックの割当に矛
盾が生じた場合、本願発明の好ましい実施例によれば、
以下のような優先順位に従って動作が行なわれる。
1.ブロックステータス書込命令 2.*HIT入力制御 3.ASTC入力制御 たとえば、もしブロックにASTC入力によって排他が割
当てられ、一方でメモリバスアクセスが要求された場合
を考える。*HIT入力の使用が可能化され、それによっ
てそのブロックが排他的ブロックであることが示され
る。ブロックステータス書込命令もまたメモリアクセス
の間に用いることができ、共有状態を割当てる。そのブ
ロックは最終的に共有状態となる。
共有ブロックの割当に関する種々の方法とそれらの組
合せは、新規なICUによってサポートされているマルチ
プロセッサキャッシュシステムのすべてを実装するため
に用いられる。
次に、共有ブロックへのヒットが生じた場合のICUの
動作について説明する。
書込アクセスが共有ブロックに対するものであって、
キャッシュ内でヒットがあった場合、メモリバス上で特
別な動作が行なわれる。システム内の他のキャッシュは
共有されたデータ変数が変更されたという事実を知って
いなければならない。それら変数のコピーは無効化され
るか、共有変数の現在の値を反映するために更新されな
ければならない。メインメモリには書込があってもなく
てもよい。マスタキャッシュのブロックステータスもこ
れに従って影響を受ける。共有ブロックへの書込ヒット
での場合のICUの動作は、モッドbレジスタ内のシェア
ードヒット書込制御(WSHC)フィールドによって制御さ
れる。符号化方法の1つは以下のとおりである。
WSHC=00のとき、ICUはどのような書込ヒットも共有
ブロックにライトスルーする。メモリは更新され他のキ
ャッシュは無効化される。ブロックには排他的非モディ
ファイド状態が割当てられる。このブロックが排他的と
なったため、同一のブロックへさらに書込むのはこのキ
ャッシュに対してのみとなる。この方法は、ある共有変
数が他のプロセッサによって必要とされる前に1つのプ
ロセッサによって多数回書込まれる場合に有効である。
WSHC=01のとき、ICUはメモリバス上の書込ブロード
キャストトランザクションを使用する。メモリは更新さ
れず他のキャッシュは無効化される。ブロックには排他
的モディファイド状態が割当てられる。このブロックが
排他的となるため、同一のこのブロックはこのキャッシ
ュに対してのみ書込まれる。メモリが更新されないため
モディファィドビットがセットされる。他のマスタがこ
のブロックを読出そうとする場合、最も新しい値を供給
するためにデータ介入のオプションを可能化しなければ
ならない。
WSHC=10のとき、ICUは共有ブロックへの書込ヒット
はいずれもライトスルーする。メモリは更新され多のキ
ャッシュも更新される。書込アクセスに対してESBCが可
能化されない場合、このブロックにはシェアード非モデ
ィファイド状態が割当てられる。書込アクセスに対して
ESBCが可能化される場合、このブロックには排他的非モ
ディファイドまたはシェアード非モディファイド状態が
*HIT入力に従って割当てられる。この方式では共有ブ
ロックへの各書込に対してメモリバス書込トランザクシ
ョンが発生する代償として、すべてのキャッシュが同期
している状態に維持できる。この方式は、共有変数が他
のプロセッサによって必要とされる前に1つのプロセッ
サによって多数回書込まれるのでない場合に効率的であ
る。
WSHC=11のとき、ICUは共有ブロックへのどの書込ヒ
ットについても書込ブロードキャストする。メモリは更
新されず他のキャッシュは更新される。書込アクセスに
対してESBCが可能化されていなければ、ブロックにはシ
ェアードモディファイド状態が割当てられる。書込アク
セスに対してESBCが可能化されていれば、このブロック
には*HIT入力に従って排他的モディファイドまたはシ
ェアードモディファイド状態が割当てられる。この方式
では共有ブロックに対する各書込についてメモリバス書
込トランザクションが発生することを代償として、すべ
てのキャッシュが同期した状態に維持される。この方式
は、共有変数が、他のプロセッサによって必要とされる
前に1つのプロセッサによって多数回書込まれない場合
に効率的である。メモリが更新されないのでモディファ
ィドビットがセットされる。他のマスタがこのブロック
を読出そうとする場合、最も新しい値を供給するために
は、データ介入のオプションを可能化しなければならな
い。
さまざまな所有権方式についてWSHCのオプションが使
用される。それらはまた、他のマルチプロセッサキャッ
シュシステムに対しても用いることができる。
書込割当式のコピーバックライトのミスに対するICU
メモリバス動作はモッドbレジスタの書込ミスメモリア
クセス制御(WMMC)ビットによって制御される。それは
書込割当なしのライトスルーアクセスまたはコピーバッ
クアクセスに対しては影響を持たない。WMMC=1のと
き、ICUは要求されたサブブロックをフェッチするため
のメモリバス上の読出アクセスと、その後に続くキャッ
シュ書込アクセスとを使用する。このアクセスは別個の
キャッシュ書込動作として取扱われる。それは常にヒッ
トし、そのキャッシュに書込まれる。もしそのブロック
が共有されている場合、モッドbレジスタのWSHCフィー
ルドに従ってメモリバス動作が行なわれる。WMMC=0の
とき、要求されたサブブロックをフェッチするためにメ
モリバス上の変更のための読出トランザクションが使用
される。一致が発生した場合、スレーブキャッシュはそ
のブロックのそれらが保持するコピーを無効化する。書
込はメモリバス動作なしにキャッシュ内で実行される。
さまざまな所有権方式に対してWMMCオプションが使用
される。それはまた、他のマルチプロセッサキャッシュ
システムに対しても使用することができる。
メモリバスキャッシュ命令はメモリバス上の特別ロジ
ックによって発行される。それらはキャッシュを柔軟に
制御することを可能にする。キャッシュされたデータは
無効化され、読出され、書込まれることができる。ブロ
ックステータスは読出および書込することができる。メ
モリバスキャッシュ命令の詳細な説明は上に述べてき
た。
マルチプロセッサ環境では、この特別な制御論理は命
令を適切なICUに向けることができなければならない。
この論理は必要とされるどのようなマルチプロセッサシ
ステムに対しても設計することができる。特に、1つの
共有バスのないシステム(クロスバースイッチまたはマ
ルチバス構成)に対してはこの方法を使用することが必
要である。これらシステムではバス監視機能は効率的で
はなく、特別な論理がメモリアクセスを監視してそれに
従いシステム内の種々のICUに対してコマンドを発行し
なければならない。制御論理はまた、ICUによって直接
的にはサポートされていない特定のマルチプロセッサ方
式を実装するよう設計することもできる。
マルチプロセッサキャッシュ構成にはさまざまな可能
性がある。ICUは種々の共有メモリマルチプロセッサキ
ャッシュ構成をサポートするよう設計される。ICUは非
共有メモリ構成内で使用するように、かつこれらシステ
ムのための特別なハードウェアサポートを含ませること
なく使用することができる。以下に述べる詳細な説明は
このICUによってサポートされている主たる共有メモリ
構成について述べる。ここに記載されたシステムと異な
る変形、組合せおよび他のシステムもまた可能である。
共有メモリ構成のうちサポートされた主たるものは以
下のとおりである。
ソフトウェア制御のキャッシュ、ライトスルーキャッ
シュ、ライトスルー共有変数を持つコピーバックキャッ
シュ、非共有バス編成における所有権方式および共有メ
モリ。
ソフトウェア制御のキャッシュについては、すべての
マルチプロセッサの間の通信および同期はソフトウェア
制御の下で行なわれる。キャッシュの整合性はソフトウ
ェアによって維持される。これは、キャッシュ不能変
数、インターロック動作(詳細は後述)の、およびキャ
ッシュ命令の使用(たとえば無効化)を組合せて使用す
ることによって行なわれる。共有変数には、他のプロセ
ッサによって変更された場合、他のキャッシュからキャ
ッシュ不能または無効化を割当てられる。同期化のため
にはインターロック動作が用いられる。共有バッファす
なわちメールボックスが通信のために用いられる。
これは、特別なハードウェア要求または制約のない非
常に柔軟な方式である。それは、共有の量の少ないシス
テムにおいて使用するとうまくいく。しかし、共有量が
高い場合、この方式ではシステム性能が非常に低下す
る。多くの変数がキャッシュできなくなるか、キャッシ
ュの整合性を維持するために大きなオーバヘッドが課さ
れる。この方式の他の欠点は、キャッシュがソフトウェ
アにとって透過的でなく、どの変数が共有されているか
についての情報を知らなければならないという点であ
る。ソフトウェア制御は他のマルチプロセッサ方式のい
ずれとも組合せて用いることができる。
この構成については、特別なプログラム可能オプショ
ンの要件はない。モッドbレジスタは0にプログラムで
きる。
ライトスルーキャッシュについては、複数のプロセッ
サが同一のバスおよびメモリを共有し、すべてのキャッ
シュがライトスルーポリシーを用いる。マスタキャッシ
ュは各プロセッサ書込動作をメモリバスに転送する。キ
ャッシュの整合性は書込に対するバス監視を用いること
によって維持される。共有メモリバス上の各読出動作は
すべてのスレーブキャッシュでチェックされる。一致が
見出されると、対応するアドレスが無効化される。これ
は単純なデータの整合性方式である。その主たる欠点
は、各書込がメモリバス動作を生じさせるという点であ
る。そのため性能は著しく劣化する。メモリバスの使用
量は非常に高くなり、そのためシステム内に置くことが
できるプロセッサの数はごく少なくなる。この悪影響
は、書込バッファを用いると緩和できる。
このオプションについては、すべてのブロックには排
他的ライトスルーが割当てられなければならず、書込ポ
リシーはライトスルーにプログラムされなければなら
ず、バス監視が書込アクセスに対して可能化されていな
ければならず、モッドbレジスタはワード無効化を特定
しなければならない。
ライトスルー共有変数のコピーバックキャッシュにつ
いては、複数のプロセッサが同一のバスおよびメモリを
共有し、それらキャッシュがフレキシブル書込ポリシー
を使用する。排他的変数はコピーバックオプションを用
いる(排他的コピーバックが割当てられたページ内に置
かれる)。1つのプロセッサによって排他的に使用され
ている変数のみが排他的コピーバックとして割当てられ
るように保証するのはシステムの責任である。なお、プ
ロセスの移送が許容されている場合、古いプロセッサの
キャッシュ内の排他的変数は無効化されなければならな
い。
共有変数はライトスルーオプションを使用する(排他
的ライトスルーが割当られたページ内に置かれる)。共
有される可能性のあるすべての変数についてもこの状態
を割当てるのは(I/Oまたはキャッシュなしのプロセッ
サと共有する場合も含めて)システムの責任である。I/
Oと同様、いくつかの変数に依然としてキャッシュ不能
が割当てられなければならない。書込のためのバス監視
方式(ライトスルーキャッシュに対するものと同様)
が、データの整合性を維持するために使用される。スレ
ーブキャッシュは一致の場合、それらの保持するコピー
を無効化する。性能をよりよくする1つの可能性とし
て、スレーブキャッシュがそれらのコピーを無効化する
代わりに更新する、という方法がある。
この方式は、すべての共有変数が知られており、ライ
トスルーまたは共有ページに置かれているという仮定に
基づいている。もしこれが当てはまるのであれば、ライ
トスルー方式と比較してよりよい性能を達成することが
できる。しかし、共有量が高いと共有データのライトス
ルー動作による欠点はより大きくなり、性能は低下す
る。
共有および排他的変数の割当からの場合を除き、書込
アクセスにたいするバス監視が可能化されなければなら
ず、モッドbレジスタがワード無効化を特定しなければ
ならない。スレーブキャッシュを更新する方式が望まし
い場合には、モッドbレジスタはそれに従って適切にプ
ログラムされなければならない。
次に所有権方式について述べる。これら方式はデータ
の整合性を維持するためのバス監視付きの共有メモリお
よび共有バス構成に基づいている。この所有権方式の基
本原理は、変数が1つのキャッシュのみによって所有さ
れるということである。所有しているキャッシュはその
変数の最も新しい値を保持しており、その整合性を維持
するのはそのキャッシュの責任である。ある変数がどの
キャッシュによっても所有されていない場合、メモリが
更新値を保持している。他のすべての所有権方式では、
ある変数はキャッシュ内でいくつかの状態(最大5つ)
のうちの1つであり得る。本願の好ましい実施例によっ
てサポートされている可能な5つの状態(ブロックステ
ータス)は以下のとおりである。
1.排他的ライトスルー 2.排他的コピーバック 3.シェアード非モディファイド 4.シェアードモディファイド 5.有効でない どの所有権方式もハードウェアによって実装された状
態機械によってサポートされており、この状態機械が状
態遷移を制御する。そのような所有権方式は、読出一
致、書込一致、書込ヒットおよび書込ミスの場合に異な
る動作を必要とする。キャッシュ内およびシステム全体
内におけるハードウェアのサポート量もそれに従って異
なる量が必要とされる。どの所有権方式もキャッシュの
ソフトウェア制御は必要としない。それは、必要とされ
るハードウェアがより複雑になることを代償としてより
高い性能を可能とする。
当業者に周知の6つの所有権機構がある。それらは以
下のとおりである。
1.ライトワンス 2.バークレー 3.イリノイ 4.ファイヤーフライ 5.ドラゴン 6.フューチャーバス シナプス方式と呼ばれるもう1つの方式があるが、こ
れはライトワンス方式と同様で、ただしメインメモリ内
に各キャッシュブロックに対して含まれている単一のビ
ットタグに基づいている。この方式はICUによっては直
接的にはサポートされていないが、ライトワンスオプシ
ョンといくらかの外部論理を使用することによって実装
することができる。
種々の所有権方式の詳細については周知であり印刷刊
行物によって教示されているが、各方式の主たる特徴に
ついての説明を、これら方式がこのICUによってどのよ
うにサポートされているかについての説明を完全にしか
つ容易にするために以下に行なう。
このICUは上記した所有権方式のすべてを直接的にサ
ポートしており、それらから発展する他の方式をサポー
トすることができるであろう。これは、必要とされるプ
ログラム可能なオプションを選択することによって行な
われる。どの所有権方式でも、書込ポリシーはフレキシ
ブル(柔軟)としてプログラムされる。書込アクセスの
ほとんどは、コピーバックポリシーを用いることができ
る。読出および書込の双方に対してバス監視を可能化す
ることができる。既に述べたとおりの種々の制御フィー
ルドを持ったモッドbレジスタを、種々の所有権方式を
実装するために用いることができる。
ライトワンス方式では、排他的非モディファイド、排
他的モディファイド、シェアード非モディファイド、お
よび無効状態が定義されている。シェアードモディファ
イド状態は使用されない。この方式の基本原理は、キャ
ッシュ内でヒットする最初の書込(共有ページへの書
込)のすべてがライトスルー動作を生じさせるというこ
とである。このブロックには排他的モディファイドが割
当てられ、後続の書込はキャッシュに対してのみ実行さ
れる。排他的ブロックへのコピーバック書込はモディフ
ァイドビットをセットする。排他的モディファイドブロ
ックはキャッシュによって所有され、他のキャッシュが
それを読出そうとする場合にはデータ介入が用いられる
(メモリも更新され、ブロックはその後シェアード非モ
ディファイドが割当てられる。この方式にたいしては、
すべてのプロセッサアクセスには共有が割当てられる。
なお排他的ブロックステータスはASTC入力による共有表
示をオーバライドする。
バークレー方式では、排他的モディファイド、シェア
ード非モディファイド、シェアードモディファイド、お
よび無効状態のみが定義される。排他的非モディファイ
ド状態は使用されない。排他的モディファイドまたはシ
ェアードモディファイドブロックを保持しているキャッ
シュがその所有者である。読出時のミスの場合、そのブ
ロックにはシェアード非モディファイドが割当てられ
る。共有ブロックへの書込ヒットの場合には、書込ブロ
ードキャスト動作が行なわれ、そのブロックには排他的
モディファイドが割当てられる。他のキャッシュはその
ブロックのそれらが保持しているコピーを無効化する。
読出時の一致の場合には、所有者によってデータ介入が
行なわれる。この方式に対しては、すべてのプロセッサ
アクセスには共有が割当てられる。
イリノイ方式では、排他的非モディファイド、排他的
モディファイド、シェアード非モディファイドおよび無
効状態のみが定義される。シェアードモディファイド状
態は使用されない。排他的モディファイドブロックを保
持するキャッシュがその社有者である。読出時のミスの
場合、このブロックにはシェアード非モディファイドま
たは排他的非モディファイドが*HIT入力に従って割当
てられる。共有ブロックへの書込ヒットの場合には、書
込ブロードキャスト動作が行なわれ、そのブロックには
排他的モディファイドが割当てられる。他のキャッシュ
はそのブロックのそれらが保持するコピーを無効化す
る。読出時の一致の場合、所有者によってデータ介入が
行なわれる。なお、データ介入動作は元のイリノイ方式
での定義とは異なっているが、最終的な結果は同じであ
る。元の定義では、必要とされるデータのコピーを保持
するすべてのキャッシュは介入しようと試みる。我々の
場合には、データ介入が行なわれるのはブロックが変更
されている場合だけである。もしブロックがシェアード
非モディファイドであればデータはメモリから供給され
る。この方式についてはプロセッサアクセスのシェアー
ドビット割当は意味がない。なぜならば*HIT信号がこ
の目的のために使用されるからである。
ファイヤーフライ方式では、排他的非モディファイ
ド、排他的モディファイド、シェアード非モディファイ
ドおよび無効状態のみが定義される。シェアードモディ
ファイド状態は使用されない。排他的モディファイドブ
ロックを保持するキャッシュがその所有者である。読出
時のミスの場合、そのブロックにはシェアード非モディ
ファイドまたは排他的非モディファイドが*HIT入力に
従って割当てられる。共有ブロックへの書込ヒットの場
合には、ライトスルー動作が行なわれブロックにはシェ
アード非モディファイドまたは排他的非モディファイド
が*HIT入力に従って割当てられる。他のキャッシュは
メモリアレイ内のそれらのデータを更新する。読出時の
一致の場合には、所有者によってデータ介入が行なわれ
る。なお、データ介入動作は元のファイヤーフライ方式
での定義とは異なっているが、結果は最終的には同じで
ある。元の定義では、要求されたデータのコピーを保持
しているすべてのキャッシュは介入しようと試みる。我
々の場合には、データ介入は、ブロックが変更されてい
る場合のみ行なわれる。もしそのブロックがシェアード
非モディファイドであればデータはメモリから供給され
る。この方式に対してはプロセッサアクセスのシェアー
ドビット割当は意味がない。なぜならば*HIT信号がこ
の目的のために使用されるからである。
ドラゴン方式では、5つのブロックステータスのすべ
てが使用される。排他的モディファイドまたはシェアー
ドモディファイドブロックを保持するキャッシュがその
所有者である。読出時のミスの場合、そのブロックには
シェアード非モディファイドまたは排他的非モディファ
イドが*HIT入力に従って割当てられる。共有ブロック
への書込ヒットの場合は、書込ブロードキャスト動作が
行なわれ(メモリは更新されない)そのブロックにはシ
ェアード非モディファイドまたは排他的モディファイド
が*HIT入力に従って割当てられる。他のキャッシュは
そのデータのそれら自身のコピーを更新する。読出時の
一致の場合には所有者によってデータ介入が行なわれ
る。この方式では、プロセッサアクセスのシェアードビ
ット割当は意味がない。なぜならば*HIT信号がこの目
的のために使用されるからである。
フューチャーバス方式では、5つのブロックステータ
スのすべてが使用される。この方式は他のすべての所有
権方式を(いくらかの修正を施して)実現できるように
する柔軟な方式である。読出および書込時の一致、書込
ヒットならびに読出および書込ミスの場合のキャッシュ
動作は種々の所有権方式の実装化に対して十分な柔軟性
を持って定義されている。*HIT信号の使用もオプショ
ンである。フューチャーバス方式はこのICUの柔軟性に
よって完全にサポートされている。このICUはフューチ
ャーバス方式で要求されている以上の柔軟性を有してお
り、データ介入時のメモリ更新および書込ブロードキャ
ストのサポートなどのような制約のいくつかが取除かれ
ている。この方式では、プロセッサアクセスのシェアー
ドビット割当はソフトウェア割当によって、または*HI
T信号を用いることによって行なわれる。
最後に、共有バスなし編成での共有メモリについて述
べる。まず、バス監視能力が有用なのは、共有バスマル
チプロセッサ編成のときだけだということに注意された
い。他の共有メモリ編成であって複数のバスまたはクロ
スバースイッチを含むものもまたこのICUによってサポ
ートされている。これら編成は、共有バスがシステム内
のボトルネックとなったときに必要とされる。この場合
これによってプロセッサの数を多くでき性能を高めるこ
とができる。
これら編成に対する基本的なサポートはメモリバスキ
ャッシュ命令である。メモリバスキャッシュ命令につい
ての詳細な説明は上に述べてきた。メモリアクセスを監
視し適切なICUに対してキャッシュ命令を発行するため
には外部制御論理が必要である。この論理は特定のシス
テム編成に従って設計すればよい。それはすべてのメイ
ンメモリアクセスをモニタすることができる(この機能
はメモリコントローラ内に設けることもできる)。これ
により、グローバルな情報に従って、メモリバスキャッ
シュ命令を適切なキャッシュに向けることができる。そ
のような実装の詳細はシステムに依存しており本願発明
の一部をなすものではなく、また多くの変更が可能であ
る。これら編成をICUによってサポートすることを説明
するために、いくつかの基本的な機能について以下に説
明する。
あるキャッシュがメモリからあるブロックを読出そう
とする場合、制御論理はそのブロックをシェアードまた
は排他的と指定するためにブロックステータス書込命令
を使用することができる。要求された変数の更新された
値がメモリ内になくキャッシュのうちの1つに存在する
場合、ワード送信、変更ならワード送信、または変更な
らブロック送信という命令を、更新後の値を受けるため
に用いることができる。
キャッシュのうちのいくつかの中に存在する共有変数
がプロセッサの1つによって書かれた場合、ICUをプロ
グラムしてライトスルーを行なうか、書込情報を書込ブ
ロードキャストするかさせることができる。他のキャッ
シュ内のそのコピーを無効化または更新するために、ワ
ード無効化、ブロック無効化、またはキャッシュ書込命
令を使用することができる。
どのキャッシュブロックのブロックステータスもブロ
ックステータス読出またはブロックステータス書込命令
を使用することによって必要であればいつでも読出また
は書込することができる。これは制御論理によって、キ
ャッシュ内容に関する情報を集めたり、ブロックステー
タスを特定したりするために使用することができる。
プログラム可能オプションのうちのいくつかを、これ
らの編成に対して使用して、共有ヒット、読出および書
込ミスの場合のICUの動作を特定することができる。特
別な論理を設計してICUメモリバス上に読出および書込
動作を発行させるようにした場合、メモリバスキャッシ
ュ命令に代えてバス監視を用いることができる。
マルチバス編成では、バス監視とメモリバスキャッシ
ュ命令との組合せを用いることができる。バス監視は同
じバスを共有するキャッシュの間でのデータの整合性を
カバーすることができる。関連のアクセスを転送した
り、適切なキャッシュにメモリバス命令を発行してバス
間のデータの整合性を取るようにする、すなわちあるバ
ス上での動作が他のバス上のキャッシュ内のデータに影
響を与えるような動作のために、特別な論理が必要であ
る。この特別な論理のための設計は当業者の能力の範囲
内であり、本願発明の範囲の外である。
新規なICUの説明の最後にあたって、インターロック
機能について詳細に説明する。しかし第1に、ICUに関
連して考えた場合、当業者であればインターロック変数
がマルチプロセッサまたはマルチタスク環境でのセマフ
ォおよび他の同期のための変数のために使用できること
が理解されるであろう。同期変数はまた、共有メモリ領
域のための保護キーとして用いることもできる。インタ
ーロック変数へのアクセスは同期化されなければならな
い。どのある時点でも、インターロック変数に対するア
クセスが許可されるのはただ1つのプロセッサでなけれ
ばならない。インターロック変数に対するどの読出も、
その変数の最も新しい値を返さなければならない。
インターロック変数アクセスをサポートするために、
プロセッサはある種のアトミックな読出−変更−書込動
作を含まなければならない。これによりプロセッサによ
る変数のチェックおよび変更を他のプロセッサの干渉な
しにアトミックな形で行なうことができる。キャッシュ
メモリを含むシステムでは、インターロック変数は特別
な問題を発生させる。なぜならばそれら変数へのアクセ
スはキャッシュとは独立に同期化されなければならない
からである。
この問題に対する簡単な解決は、すべての変数にキャ
ッシュ不能を割当てることである。この場合にはインタ
ーロック変数はキャッシュされず、すべてのインターロ
ックアクセスはメモリに対して向けられる。この方法は
知られているキャッシュシステムのほとんどにおいて使
用されている。主な欠点な性能が低下すること、メモリ
へのインターロック変数アクセスによりバス使用率が高
くなることである。インターロックアクセスの数が増大
すると、性能にたいする影響は重大なものとなる。
新規なICUおよびそれ自身新規な、以下に述べるイン
ターロック機能によりインターロック変数をキャッシュ
することが可能になる。これにより性能が向上しバス使
用率を低くすることができる。インターロック変数アク
セスの大部分はより速くなり、メモリバス上には生じな
い。なぜならばアクセスはキャッシュ内でのみ行なわれ
るからである。この方式は簡単でありシングルチップIC
U上に実装することができる。
インターロック変数に関する同期化を保証するために
いくつかの方法がある。本願発明の実施例に関連するプ
ロセッサは効率的なインターロックに必要な基本的動作
を含んでいる。これらはLOADSET、LOADLおよびSTOREL命
令、現在のプロセッサステータスレジスタのLTビット、
および*LOCK出力とである。このICUはインターロック
変数を取扱うために2つの方式を実装している。モッド
bレジスタのキャッシュインターロック可能化(CILE)
ビットをプログラムすることにより所望の方式を選択す
ることができる。
CILEビットがローであればインターロック変数のキャ
ッシングは不能化される。インターロックアクセス(*
LOCKビットがアサート)はキャッシュ不能アクセスとし
て取扱われる。ヒットがあるかどうかを求めてキャッシ
ュがサーチされることはなく、アクセスはロック表示
(*MLOCKアサート)とともにメモリバスに転送され
る。このオプションではインターロック変数の取扱いは
メモリ制御の下で行なわれる。メモリは*MLOCK信号が
アサートされている間インターロック変数上のアクセス
は不能化しなければならない。LOADSET命令は、メモリ
内のインターロック変数の検査および設定に用いること
ができる。
CILEビットがハイの場合、インターロック変数のキャ
ッシング機能は可能化される。これは特別な機能であっ
て、インターロック変数をより効率的に取扱うことが可
能なようにICUに組込まれている。これはプロセッサと
互換性を有しており、プロセッサの種々のインターロッ
クの基本的動作を利用している。
インターロックされた読出および書込動作(*LOCKが
アサート)は特別な方法で取扱われる。インターロック
された読出(LOADLおよびLOADSET命令にたいしてプロセ
ッサにより生成される)は、共有ブロック内でヒットし
ないかぎりミスとして取扱われる。再ロード動作が、*
MLOCKがアサートされた状態でメモリアドレスバス上で
開始される。読出されたデータはキャッシュ内にストア
され、ブロックにはシェアードが割当てられる。共有ブ
ロックでのヒットに対しては、データはメモリアドレス
バスアクセスなしでキャッシュから供給される。
インターロックされた書込動作はプロセッサSTORELに
対しては、LOADSET命令とは異なって取扱われる。ICUは
2つのタイプのインターロック書込を、書込アクセスの
前のサイクル内の*LOCK入力の状態に従って区別するこ
とができる。*LOCKビットがセットされていた場合、そ
れはインターロック書込がLOADSET命令の書込であるこ
とを意味する。もしそれがセットされていなかったので
あればそれはSTORELの書込である。
インターロックされたSTOREL書込に対しては、ICUは
メモリへのライトスルー動作を開始する。キャッシュヒ
ットの場合ブロックは無効化される。
インターロックされたLOADSET書込の場合、データは
キャッシュ内に書込まれる。データはLOADSET命令の読
出アクセスによりミスが発生した場合のみメモリにも書
込まれる。これによってインターロックされた変数が最
初に読出されたときのみメモリへの書込が行なわれるこ
とが保証される。
いずれの場合にも*MLOCK出力はメモリ書込動作の間
アサートされる。他のすべてのキャッシュは他のマスタ
によって*MLOCKがアサートされた状態での書込がされ
ると、それ自身のコピーを無効化する。
インターロック機能が可能化されている場合、プロセ
ッサがインターロック変数をアクセスすべき特別な方法
が存在する(変更も可能である)。インターロック変数
を調べ設定するためには、LOADSET命令が用いられる。
変数値が0であれば、それはビジーでなくそのプロセッ
サ(またはプロセス)によって使用することができる。
なお、LOADSET命令の結果、サブブロックがキャッシュ
内にロードされる。このサブブロックはインターロック
変数(ワード)およびサブブロックサイズが1ワードよ
り大きければおそらく他のいくつかのワードも含む。ユ
ーザはこの事実を利用し、インターロック変数と同じサ
ブブロック内に関連の情報を置くことができる。
変数値が1であればそれはビジーでありそれ(または
それが保護する領域)は使用することができない。プロ
グラムはビジー待機方式を用いて、変数がフリーになる
までテストし続けるか、または他の動作(またはタス
ク)を行ない変数を後でチェックすることができる。変
数のテストはLOADSET命令を用いて行なわれる。
マスタICUは最初のLOADSET命令に対してのみメモリア
ドレスバスを使用する。変数はメモリから読出され共有
ブロックステータスとともにキャッシュ内に置かれる。
LOADSETの最初の書込もまたメモリに書込まれる。次のL
OADSET命令はキャッシュ内でヒットし(多くの場合)、
メモリアドレスバスを使用しない。他のキャッシュは*
MLOCKがアサートされた状態での書込時の一致があった
場合には、それら自身のコピーを無効化する。
インターロックされた変数の解放のためにはSTOREL命
令が用いられる。STOREL命令の結果、*MLOCKがアサー
トされた書込アクセスがメモリアドレスバス上でマスタ
キャッシュによって開始され、他のすべてのキャッシュ
内でのその変数は無効化される。もしその変数が依然と
してマスタキャッシュ内にあればそれもまた無効化され
る。これは、プロセッサによるこの変数への次のアクセ
スがミスとなることを保証するために行なわれる。その
変数の最も新しい値を得るためには、その変数はメモリ
から読出される。なお、マスタキャッシュによってイン
ターロック変数が使用されている間、他のプロセッサが
最初に(LOADSETを用いて)同じ変数をテストしようと
した場合、LOADSETの書込がメモリアドレスバス上に発
行され、他のすべてのキャッシュ(マスタキャッシュを
含む)で変数が無効化される。
その変数を待機していた他のすべてのプロセッサはそ
れらが次にその変数をテストしようとした場合メモリを
アクセスしなければならない。バス調停を勝ち取った1
つのキャッシュのみが利用可能なインターロック変数を
得ることができる。
インターロック機能を用いる主たる利点は、性能が向
上しメモリバスの使用率が低くなることである。多数の
インターロック変数アクセスが生じるマルチプロセッサ
システムでは、これにより相当な性能の向上を達成する
ことができる。他の利点は、メモリコントローラがイン
ターロックアクセスを通常のアクセスとして取扱うこと
ができるということである。
なおまた、インターロック機能はさまざまな種類のRI
SC/SIPプロセッサにおいて実現することができる。
以上の説明は、新規なICUそのものと、柔軟なキャッ
シュシステム設計のためのICUの新規な構成と、新たな
キャッシュインターロック機能と、新規かつ柔軟なマル
チプロセッササポート方式と、集積されたキャッシュメ
モリのためのプリロード方式を含む。これらの詳細が、
新規なICUの機能、その内部レジスタ、入出力、見本と
なる命令セット、データフォーマット、プログラム可能
性、サポートされているシステムのタイプなどとの関連
で説明されてきた。これら開示に基づけば、当業者には
上記した本願発明の目的は達成されていることが容易に
わかるであろう。
上記した新規な方法および装置の好ましい実施例の説
明は、例示および説明のためだけのものである。上記し
たものによって尽きているわけではなく、また発明が開
示された正確な形式そのものに限定されるわけではな
く、さまざまな修正および変更が上記の教示に照らして
可能であることは明らかである。
ここに明らかにされた実施例および具体例は、本願発
明の原理とその実際的応用とを最もよく説明し、当業者
が本願発明を所望の特定の用途に適するような種々の実
施例の形で種々の変更をもって利用することができるよ
うに説明されてきた。
この発明の範囲は前掲の特許請求の範囲により規定さ
れることが意図されている。
【図面の簡単な説明】
第1図は、2個の新規なICUを含む計算機システムのブ
ロック図である。 第2図は、ピンパッケージと、新規なICUへのおよびそ
こからの種々の入出力の図である。 第3図は、新規なICUを介する、第1図のプロセッサバ
スユニットとメモリバスユニットとの間のデータの流れ
を描く、データの流れの図である。 第4図は、一方が命令キャッシュとして使用され、他方
がデータキャッシュとして使用される。1プロセッサ当
たり2個のICUを有する、共有バスマルチプロセッサの
簡略化されたシステム図である。 図において10は命令キャッシュ、102はデータキャッシ
ュ、110命令プロセッサ、150は命令ROM、190はメモリ、
195は算術加速器、198はデータ転送制御器である。
フロントページの続き (56)参考文献 Sachs h.”THE FAIR CHILD CLIPPER MICR OPROCESSOR FAMILY− A HIGH PERFORMANCE 32−BIT PROCESSOR” Wescon Conference Proceedings 24(1985) p.6.5.1−6.5.6 Katz R.H.et al.”I MPLEMENTING A CACH E CONSISTENCY PROT OCOL”Proceedings o f 12th Annual Inter national Symposium on Computer Archi tecture(1985)p.276−283 田中康陽他「キャッシュユニットμP D43608」NEC技報第40巻第10号 (1987)p.84−87 (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 G06F 9/38

Claims (41)

    (57)【特許請求の範囲】
  1. 【請求項1】計算システムにおいてフレキシブルなキャ
    ッシュシステム設計をサポートしかつキャッシュ機能を
    実現する集積キャッシュユニット(ICU)であって、前
    記システムは、少なくとも1個の中央処理ユニット(CP
    U)と、前記CPUとICUの間の通信を容易にするためのプ
    ロセッサバス手段と、メモリと、前記メモリとICUの間
    の通信を容易にするためのメモリバス手段とを含み、さ
    らに (a) 前記プロセッサバス手段に結合され、ICU/プロ
    セッサバスインターフェイスを制御するためのプロセッ
    サバスユニットと、 (b) 前記メモリバス手段に結合され、ICU/メモリバ
    スインターフェイスを制御するためのメモリバスユニッ
    トと、 (c) 前記プロセッサバスユニットと前記メモリバス
    ユニットの両方に結合され、キャッシュ機能を行うため
    のプログラム可能キャッシュユニットとを備え、前記プ
    ログラム可能キャッシュユニットは、タグアレイ手段お
    よび有効性アレイ手段と、関連するメモリアレイ手段と
    を含み、さらに、前記タグアレイ手段と、前記有効性ア
    レイ手段と、前記メモリアレイ手段とは、2nウェイセッ
    トアソシアティブキャッシュとして編成され、ただしn
    は0以上の整数であり、前記プログラム可能キャッシュ
    ユニットはさらに、前記プロセッサバスユニットと前記
    メモリバスユニットとに結合された1組の特殊レジスタ
    を含み、前記1組の特殊レジスタのうちの一つは、プロ
    グラム可能なキャッシュ動作を選択するためのものであ
    る、集積キャッシュユニット。
  2. 【請求項2】前記メモリアレイ手段が、キャッシュされ
    たデータおよび命令信号をストアし、かつ1組のブロッ
    クとして編成されており、各ブロックが予め定められた
    数のキャッシュされたワードに対応する、請求項1に記
    載の集積キャッシュユニット。
  3. 【請求項3】各ブロックに対して、少なくとも1個の関
    連するタグが前記タグアレイにストアされる、請求項1
    に記載の集積キャッシュユニット。
  4. 【請求項4】各ブロックに対して、少なくとも1個の関
    連する妥当性ビットが前記有効性アレイ手段にストアさ
    れる、請求項3に記載の集積キャッシュユニット。
  5. 【請求項5】前記プログラム可能キャッシュユニットが
    ブロックおよびサブブロックサイズの変更をサポートす
    る、請求項4に記載の集積キャッシュユニット。
  6. 【請求項6】前記プログラム可能ICUがフレキシブルな
    再ロードキャッシュ動作をサポートする、請求項4に記
    載の集積キャッシュユニット。
  7. 【請求項7】前記プロセッサバスユニットが、 (a) 前記プロセッサバス手段と前記プログラム可能
    キャッシュユニットとに結合され、前記プロセッサバス
    手段から入力されるアドレス信号を受け、ラッチし、イ
    ンクリメントするための、およびキャッシュアクセスを
    容易にするように前記プログラム可能キャッシュユニッ
    トへアドレス信号を出力するための第1のアドレス増分
    器手段と、 (b) 前記プロセッサバス手段と前記プログラム化キ
    ャッシュユニットとに結合され、前記プロセッサバス手
    段から入力されるデータ信号を整列させるための、およ
    び前記プログラム可能キャッシュユニットによって出力
    されるデータ信号を前記プロセッサへの伝送のために整
    列させるためのデータシフト器手段と、 (c) 前記第1のアドレス増分器手段と、前記データ
    シフト器手段と、前記プログラム可能キャッシュユニッ
    トとの動作を同期化し制御するためのプロセッサバスユ
    ニット制御手段とをさらに備える、請求項4に記載の集
    積キャッシュユニット。
  8. 【請求項8】前記メモリバスユニットが、 (a) 前記メモリバス手段と前記プログラム可能キャ
    ッシュ手段との間で伝送されるアドレス信号およびデー
    タ信号をバッファするための、選択的に可能化される書
    込バッファと、 (b) 前記メモリバス手段と、前記書込バッファと、
    前記プログラム可能キャッシュユニットとに結合され、
    前記メモリバス手段を介して入力されるメモリバスアド
    レスをラッチしインクリメントするための、および前記
    プログラム可能キャッシュ手段により開始されるキャッ
    シュ読出動作のためのアドレスをラッチしインクリメン
    トするためのメモリアドレス論理手段と、 (c) 前記メモリバス手段と、前記書込バッファと、
    前記プログラム可能キャッシュ手段とに結合され、前記
    プログラム可能キャッシュ手段が更新のために利用可能
    になるまで前記メモリバス手段からのデータをバッファ
    するための、およびプリフェッチ動作と読出動作との両
    方をサポートするためのメモリ読出バッファ手段と、 (d) 前記書込バッファと、前記メモリアドレス論理
    手段と、前記メモリ読出バッファ手段と、前記プログラ
    ム可能キャッシュユニットとの動作を同期化および制御
    するためのメモリバスユニット制御手段とを備える、請
    求項4に記載の集積キャッシュユニット。
  9. 【請求項9】前記書込バッファがアドレスバッファとデ
    ータバッファとをさらに備える、請求項8に記載の集積
    キャッシュユニット。
  10. 【請求項10】前記プログラム可能キャッシュユニット
    が、 (a) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合され、アドレス信号を搬送するための
    キャッシュユニットアドレスバスと、 (b) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合され、データ信号を搬送するためのキ
    ャッシュユニットデータバスと、 (c) 前記キャッシュデータバスに結合され、各ブロ
    ックのモディファィド、シェアード、およびロックトに
    関するステータスの表示をストアするためのブロックス
    テータスアレイ手段とを含み、 (d) 前記1組の特殊レジスタは、前記キャッシュユ
    ニットアドレスバスと前記キャッシュデータバスとに結
    合され、前記1組の特殊レジスタの少なくとも1つは、
    キャッシュステータス情報を表示するためのものであ
    り、 前記プログラム可能キャッシュユニットはさらに、 (e) 前記プロセッサバス制御手段と前記メモリバス
    制御手段とに結合され、前記プログラム可能キャッシュ
    ユニットと、前記プロセッサバスユニットと、前記メモ
    リバスユニットとの動作を同期化し制御するためのキャ
    ッシュユニット制御手段をさらに備える、請求項4に記
    載の修正キャッシュユニット。
  11. 【請求項11】前記キャッシュ制御手段が、前記キャッ
    シュユニットアドレスバスと前記タグアレイとに結合さ
    れ、前記キャッシュユニットアドレスバス上のアドレス
    を前記タグアレイ内のタグと比較するための論理手段を
    さらに備える、請求項10に記載の集積キャッシュユニッ
    ト。
  12. 【請求項12】前記キャッシュ制御手段が、前記有効性
    アレイ手段に結合され、キャッシュアクセス時に特定の
    キャッシュされたワードが有効であるかどうかを決定す
    るための論理手段をさらに含む、請求項11に記載の集積
    キャッシュユニット。
  13. 【請求項13】前記キャッシュ制御手段が、有効なキャ
    ッシュアクセスに対しヒット信号を発生させるようにさ
    らに動作し、かつ前記特殊レジスタの組と前記ブロック
    ステータスアレイとにストアされたデータを維持および
    更新する、請求項12に記載の集積キャッシュユニット。
  14. 【請求項14】LRU置換アルゴリズムが前記プログラム
    可能キャッシュユニットにより利用されるときはいつで
    も、LRUビットをストアするためのLRUアレイ手段をさら
    に備える、請求項10に記載の集積キャッシュユニット。
  15. 【請求項15】前記特殊レジスタの組が、ユーザが選択
    したICUオプションおよびポリシーを示す信号をストア
    するための少なくとも1個のプログラム可能レジスタを
    さらに備える、請求項10に記載の集積キャッシュユニッ
    ト。
  16. 【請求項16】フレキシブルなマルチプロセッサ動作を
    サポートしキャッシュデータ整合性を保証するための手
    段をさらに備える、請求項15に記載の集積キャッシュユ
    ニット。
  17. 【請求項17】シングルチップ上に集積され、モジュラ
    でありかつ拡張可能である、請求項15に記載の集積キャ
    ッシュユニット。
  18. 【請求項18】前記特殊レジスタの組が、リードスルー
    オプションを不能化するための少なくとも1ビットを有
    する少なくとも1個のプログラム可能レジスタを含む、
    請求項15に記載の集積キャッシュユニット。
  19. 【請求項19】前記特殊レジスタの組が、単一アクセス
    のプリフェッチを可能化するための少なくとも1ビット
    を有する少なくとも1個のプログラム可能レジスタを含
    む、請求項15に記載の集積キャッシュユニット。
  20. 【請求項20】前記特殊レジスタの組が、ラップアラウ
    ンドアドレス指定を不能化するための少なくとも1ビッ
    トを有する少なくとも1個のプログラム可能レジスタを
    含む、請求項16に記載の集積キャッシュユニット。
  21. 【請求項21】前記特殊レジスタの組が、単一アクセス
    のミスの場合にICUの動作を制御するための少なくとも
    1ビットを有する少なくとも1個のプログラム可能レジ
    スタを含む、請求項15に記載の集積キャッシュユニッ
    ト。
  22. 【請求項22】前記特殊レジスタの組が、バーストモー
    ドの読出要求がプロセッサにより終了される場合のICU
    の動作を制御するための少なくとも1ビットを有する少
    なくとも1個のプログラム可能レジスタを含む、請求項
    15に記載の集積キャッシュユニット。
  23. 【請求項23】前記特殊レジスタの組が、バーストモー
    ドにおけるプリフェッチオプションを可能化するための
    少なくとも1ビットを有する少なくとも1個のプログラ
    ム可能レジスタを含む、請求項15に記載の集積キャッシ
    ュユニット。
  24. 【請求項24】前記特殊レジスタの組が、サブブロック
    のサイズを指定し変更するための少なくとも1ビットを
    有する少なくとも1個のプログラム可能レジスタを含
    む、請求項15に記載の集積キャッシュユニット。
  25. 【請求項25】前記特殊レジスタの組が、書込割当オプ
    ションを選択するための少なくとも1ビットを有する少
    なくとも1個のプログラム可能レジスタを含む、請求項
    15に記載の集積キャッシュユニット。
  26. 【請求項26】前記特殊レジスタの組が、全体的な書込
    ポリシーオプションを選択するための少なくとも1ビッ
    トを有する少なくとも1個のプログラム可能レジスタを
    含む、請求項15に記載の集積キャッシュユニット。
  27. 【請求項27】前記特殊レジスタの組が、ブロック置換
    ポリシーを指定するための少なくとも1ビットを有する
    少なくとも1個のプログラム可能レジスタを含む、請求
    項15に記載の集積キャッシュユニット。
  28. 【請求項28】前記特殊レジスタの組が、2nウェイセッ
    トアソシアティブキャッシュ編成を選択するための少な
    くとも1ビットを有する少なくとも1個のプログラム可
    能レジスタを含む、請求項15に記載の集積キャッシュユ
    ニット。
  29. 【請求項29】前記特殊レジスタの組が、第1のモード
    においては命令キャッシュとしてキャッシュ動作を指定
    し、第2のモードにおいてはデータキャッシュとしてキ
    ャッシュ動作を指定するための少なくとも1ビットを有
    する少なくとも1個のプログラム可能レジスタを含む、
    請求項15に記載の集積キャッシュユニット。
  30. 【請求項30】ユーザが指定する、ライトスルーおよび
    コピーバック書込ポリシーをアクセスごとにフレキシブ
    ルにサポートするための手段をさらに備える、請求項26
    に記載の集積キャッシュユニット。
  31. 【請求項31】前記CPUがバーストプロトコルおよびパ
    イプライン化プロトコルを有する簡略化された命令プロ
    セッサであり、さらに、前記ICUが前記プロトコルをサ
    ポートするための手段を備える、請求項15に記載の集積
    キャッシュユニット。
  32. 【請求項32】バイトパリティを発生させチェックする
    ための手段を含むフォールトトレランスサポート手段を
    さらに備える、請求項15に記載の集積キャッシュユニッ
    ト。
  33. 【請求項33】前記フォールトレランスサポート手段
    が、キャッシュマスタモードおよびキャッシュスレーブ
    モードで前記ICUを動作させるための手段をさらに備え
    る、請求項26に記載の集積キャッシュユニット。
  34. 【請求項34】前記プロセッサによるプログラム実行の
    開始前の、命令およびデータの前記キャッシュメモリへ
    のプリロードをサポートする、請求項15に記載の集積キ
    ャッシュユニット。
  35. 【請求項35】計算システムにおいてキャッシュ機能を
    実現する集積キャッシュユニット(ICU)をフレキシブ
    ルに構成する方法であって、前記システムは、少なくと
    も1個の中央処理ユニット(CPU)と、前記CPUとICUの
    間の通信を容易にするためのプロセッサバス手段と、メ
    モリと、前記メモリとICUの間の通信を容易にするため
    のメモリバス手段とを含み、さらに (a) 前記プロセッサバス手段に結合されるプロセッ
    サバスユニットを利用して前記ICU内からICU/プロセッ
    サバスインターフェイスを制御するステップと、 (b) 前記メモリバス手段に結合されるメモリバスユ
    ニットを利用して前記ICU内からICU/メモリバスインタ
    ーフェイスを制御するステップと、 (c) 前記プロセッサバスユニットと前記メモリバス
    ユニットの両方に結合されるプログラム可能キャッシュ
    ユニットを利用して前記ICU内からキャッシュ機能を行
    うステップとを備え、前記プログラム可能キャッシュユ
    ニットは、タグアレイ手段および有効性アレイ手段と、
    関連するメモリアレイ手段とを含み、前記タグアレイ手
    段と、前記有効性アレイ手段と、前記メモリアレイ手段
    とは2nウェイセットアソシアティブキャッシュとして編
    成され、ただしnは0以上の整数であり、前記プログラ
    ム可能キャッシュユニットはさらに、前記プロセッサバ
    スユニットと前記メモリバスユニットとに結合された1
    組の特殊レジスタを含み、前記1組の特殊レジスタのう
    ちの少なくとも1つは、プログラム可能なキャッシュ動
    作を選択するためのものである、方法。
  36. 【請求項36】前記メモリアレイ手段を1組のブロック
    として編成するステップをさらに含み、各ブロックは予
    め定められた数のキャッシュされたワードに対応する、
    請求項35に記載の方法。
  37. 【請求項37】前記ICU/プロセッサバスインターフェイ
    スを制御するステップが、 (a) 前記プロセッサバス手段と前記プログラム可能
    キャッシュユニットとに結合される第1のアドレス増分
    器手段を利用して前記プロセッサバス手段から入力され
    るアドレス信号を受け、ラッチし、インクリメントする
    ステップと、 (b) キャッシュアクセスを容易にするように前記第
    1の増分器手段から前記プログラム可能キャッシュユニ
    ットへアドレス信号を出力するステップと、 (c) 前記プロセッサバス手段と前記プログラム可能
    キャッシュユニットとに結合されるデータシフト器手段
    を利用して前記プロセッサバス手段から入力されるデー
    タ信号を整列させるステップと、 (d) 前記データシフト器手段を介して前記プロセッ
    サへ伝送するために、前記プログラム可能キャッシュユ
    ニットにより出力されるデータ信号を整列させるステッ
    プと、 (e) 前記第1のアドレス増分器手段と、前記データ
    シフト器手段と、前記プログラム可能キャッシュユニッ
    トとの動作をプロセッサバスユニット制御手段を介して
    同期化し制御するステップとをさらに含む、請求項36に
    記載の方法。
  38. 【請求項38】前記ICU/メモリバスインターフェイス制
    御するステップが、 (a) 前記メモリバス手段と前記プログラム可能キャ
    ッシュ手段との間で伝送されるアドレス信号およびデー
    タ信号を、選択的に可能化される書込バッファにバッフ
    ァするステップと、 (b) 前記メモリバス手段と、前記書込バッファと、
    前記プログラム可能キャッシュユニットとに結合される
    メモリアドレス論理手段を利用して前記メモリバス手段
    を介して入力されるメモリバスアドレスをラッチしイン
    クリメントするステップと、 (c) 前記メモリアドレス論理手段を利用して前記プ
    ログラム可能キャッシュ手段により開始されるキャッシ
    ュ読出動作のためのアドレスをラッチしインクリメント
    するステップと、 (d) 前記プログラム可能キャッシュ手段が更新のた
    めに利用可能になるまで、前記メモリバス手段と、前記
    書込バッファと、前記プログラム可能キャッシュ手段と
    に結合されるメモリ読出バッファ手段を利用して前記メ
    モリバス手段からのデータをバッファするステップと、 (e) 前記書込バッファと、前記メモリアドレス論理
    手段と、前記メモリ読出バッファ手段と、前記プログラ
    ム可能キャッシュユニットとの動作をメモリバスユニッ
    ト制御手段を介して同期化し制御するステップとをさら
    に含む、請求項36に記載の方法。
  39. 【請求項39】プログラム可能キャッシュユニットを利
    用してキャッシュ機能を行う前記ステップが、 (a) 前記ICU内において、前記プロセッサバスユニ
    ットと前記メモリバスユニットとに結合される内部のキ
    ャッシュユニットアドレスバス上でアドレス信号を搬送
    するステップと、 (b) 前記ICU内において、前記プロセッサバスユニ
    ットと前記メモリバスユニットとに結合される内部キャ
    ッシュユニットデータバス上でデータ信号を搬送するス
    テップと、 (c) キャッシュされるべきデータ信号および命令信
    号を前記メモリアレイ手段にストアするステップと、 (d) 各タグが予め定められた数のキャッシュされた
    ワードのブロックに対応するキャッシュタグを前記タグ
    アレイ手段にストアするステップと、 (e) 各キャッシュされたワードの妥当性に関連する
    データを前記有効性アレイ手段にストアするステップ
    と、 (f) 各ブロックのモディファィド、シェアード、お
    よびロックトに関するステータスの表示を前記キャッシ
    ュデータバスに結合されるブロックステータスアレイ手
    段にストアするステップと、 (g) 前記キャッシュユニットアドレスバスと前記キ
    ャッシュユニットデータバスとに結合された前記1組の
    特殊レジスタのうちの、キャッシュステータス情報を表
    示するための少なくとも1つを利用するステップと、 (h) 前記プログラム可能キャッシュユニットと、前
    記プロセッサバスと、前記メモリバスユニットとの動作
    をキャッシュユニット制御手段を介して同期化および制
    御するステップとをさらに含む、請求項36に記載の方
    法。
  40. 【請求項40】前記同期化および制御するステップが、 (a) 前記キャッシュユニットアドレスバス上のアド
    レスを前記タグアレイ内のタグと比較するステップと、 (b) キャッシュアクセス時に特定のキャッシュされ
    たワードが有効であるかどうかを決定するステップと、 (c) 有効なキャッシュアクセスに対しヒット信号を
    発生させるステップと、 (d) 前記特殊レジスタの組と前記ブロックステータ
    スアレイとにストアされたデータを維持および更新する
    ためのステップとをさらに含む、請求項39に記載の方
    法。
  41. 【請求項41】ユーザが選択したICUオプションおよび
    ポリシーを示す信号を少なくとも1個の前記特殊レジス
    タの組にストアするステップをさらに含む、請求項39に
    記載の方法。
JP01093689A 1988-01-20 1989-01-19 集積キャッシュユニットおよびその構成方法 Expired - Lifetime JP3218317B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US146,009 1988-01-20
US07/146,009 US5025366A (en) 1988-01-20 1988-01-20 Organization of an integrated cache unit for flexible usage in cache system design

Publications (2)

Publication Number Publication Date
JPH01237836A JPH01237836A (ja) 1989-09-22
JP3218317B2 true JP3218317B2 (ja) 2001-10-15

Family

ID=22515521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01093689A Expired - Lifetime JP3218317B2 (ja) 1988-01-20 1989-01-19 集積キャッシュユニットおよびその構成方法

Country Status (5)

Country Link
US (1) US5025366A (ja)
EP (1) EP0325420B1 (ja)
JP (1) JP3218317B2 (ja)
AT (1) ATE136136T1 (ja)
DE (1) DE68926059T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160029086A (ko) * 2013-07-08 2016-03-14 에이알엠 리미티드 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513353A (en) * 1987-09-30 1996-04-30 Kabushiki Kaisha Toshiba Cache control system which permanently inhibits local but not global parameter data writes to main memory
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5822578A (en) * 1987-12-22 1998-10-13 Sun Microsystems, Inc. System for inserting instructions into processor instruction stream in order to perform interrupt processing
US5761413A (en) * 1987-12-22 1998-06-02 Sun Microsystems, Inc. Fault containment system for multiprocessor with shared memory
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
ATE138212T1 (de) * 1988-01-20 1996-06-15 Advanced Micro Devices Inc Integrierte cachespeichereinheit
DE68917326T2 (de) * 1988-01-20 1995-03-02 Advanced Micro Devices Inc Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
JPH01217530A (ja) * 1988-02-26 1989-08-31 Hitachi Ltd キヤツシユメモリ
JP2818415B2 (ja) * 1988-05-18 1998-10-30 日本電気株式会社 バッファ記憶装置
GB8814077D0 (en) * 1988-06-14 1988-07-20 Int Computers Ltd Data memory system
JP2776841B2 (ja) * 1988-09-28 1998-07-16 株式会社日立製作所 ディスク制御装置におけるディスクアクセス制御方法
US5193166A (en) * 1989-04-21 1993-03-09 Bell-Northern Research Ltd. Cache-memory architecture comprising a single address tag for each cache memory
JPH0348951A (ja) * 1989-07-18 1991-03-01 Fujitsu Ltd アドレスモニタ装置
JP2509344B2 (ja) * 1989-09-19 1996-06-19 富士通株式会社 デ―タ処理装置
US5265227A (en) * 1989-11-14 1993-11-23 Intel Corporation Parallel protection checking in an address translation look-aside buffer
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
JPH03188546A (ja) * 1989-12-18 1991-08-16 Fujitsu Ltd バスインターフェイス制御方式
DE69025302T2 (de) * 1989-12-22 1996-10-02 Digital Equipment Corp Hochleistungsrasterpuffer- und -cachespeicheranordnung
JP2820752B2 (ja) * 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
US5307471A (en) * 1990-01-31 1994-04-26 Nec Corporation Memory controller for sub-memory unit such as disk drives
US5226143A (en) * 1990-03-14 1993-07-06 International Business Machines Corporation Multiprocessor system includes operating system for notifying only those cache managers who are holders of shared locks on a designated page by global lock manager
EP0449369B1 (en) * 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
US5197139A (en) * 1990-04-05 1993-03-23 International Business Machines Corporation Cache management for multi-processor systems utilizing bulk cross-invalidate
US5261067A (en) * 1990-04-17 1993-11-09 North American Philips Corp. Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system
US5611070A (en) * 1990-05-10 1997-03-11 Heidelberger; Philip Methods and apparatus for performing a write/load cache protocol
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US5276833A (en) * 1990-07-02 1994-01-04 Chips And Technologies, Inc. Data cache management system with test mode using index registers and CAS disable and posted write disable
US5530941A (en) * 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
US5835945A (en) * 1990-08-06 1998-11-10 Ncr Corporation Memory system with write buffer, prefetch and internal caches
GB9019023D0 (en) * 1990-08-31 1990-10-17 Ncr Co Work station having multiplexing and burst mode capabilities
US5295259A (en) * 1991-02-05 1994-03-15 Advanced Micro Devices, Inc. Data cache and method for handling memory errors during copy-back
US5228134A (en) * 1991-06-04 1993-07-13 Intel Corporation Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
US5293603A (en) * 1991-06-04 1994-03-08 Intel Corporation Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5396604A (en) * 1991-07-12 1995-03-07 Hewlett-Packard Company System and method for reducing the penalty associated with data cache misses
GB9118312D0 (en) * 1991-08-24 1991-10-09 Motorola Inc Real time cache implemented by dual purpose on-chip memory
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
CA2078312A1 (en) 1991-09-20 1993-03-21 Mark A. Kaufman Digital data processor with improved paging
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
US5301298A (en) * 1991-10-11 1994-04-05 Intel Corporation Processor for multiple cache coherent protocols
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5802548A (en) * 1991-10-25 1998-09-01 Chips And Technologies, Inc. Software programmable edge delay for SRAM write enable signals on dual purpose cache controllers
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US5423016A (en) * 1992-02-24 1995-06-06 Unisys Corporation Block buffer for instruction/operand caches
US5555382A (en) * 1992-04-24 1996-09-10 Digital Equipment Corporation Intelligent snoopy bus arbiter
EP0568231B1 (en) * 1992-04-29 1999-03-10 Sun Microsystems, Inc. Methods and apparatus for providing multiple outstanding operations in a cache consistent multiple processor computer system
US5809531A (en) * 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
GB2271202B (en) * 1992-10-01 1995-12-13 Digital Equipment Int Dynamic non-coherent cache memory resizing mechanism
EP0597729A1 (en) * 1992-11-13 1994-05-18 Cyrix Corporation Method of allowing write-back caching in a write-through environment
US5664149A (en) * 1992-11-13 1997-09-02 Cyrix Corporation Coherency for write-back cache in a system designed for write-through cache using an export/invalidate protocol
US6356989B1 (en) * 1992-12-21 2002-03-12 Intel Corporation Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled
US5465342A (en) * 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss
US5809525A (en) * 1993-09-17 1998-09-15 International Business Machines Corporation Multi-level computer cache system providing plural cache controllers associated with memory address ranges and having cache directories
GB2282248B (en) * 1993-09-27 1997-10-15 Advanced Risc Mach Ltd Data memory
US5835934A (en) * 1993-10-12 1998-11-10 Texas Instruments Incorporated Method and apparatus of low power cache operation with a tag hit enablement
GB2284911A (en) * 1993-12-16 1995-06-21 Plessey Semiconductors Ltd Flexible lock-down cache.
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
KR970010368B1 (ko) * 1994-01-18 1997-06-25 삼성전자 주식회사 캐시라인 리프레이스장치 및 방법
US5603007A (en) * 1994-03-14 1997-02-11 Apple Computer, Inc. Methods and apparatus for controlling back-to-back burst reads in a cache system
US5577226A (en) * 1994-05-06 1996-11-19 Eec Systems, Inc. Method and system for coherently caching I/O devices across a network
US5539895A (en) * 1994-05-12 1996-07-23 International Business Machines Corporation Hierarchical computer cache system
US5604889A (en) * 1994-06-15 1997-02-18 Texas Instruments Incorporated Memory management system for checkpointed logic simulator with increased locality of data
US5613125A (en) * 1994-06-17 1997-03-18 Motorola, Inc. Method and system for selectively defining hardware parameters in an executable operating system program
US5784590A (en) * 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
US5692152A (en) * 1994-06-29 1997-11-25 Exponential Technology, Inc. Master-slave cache system with de-coupled data and tag pipelines and loop-back
KR100391727B1 (ko) * 1994-11-09 2003-11-01 소니 일렉트로닉스 인코포레이티드 메모리시스템및메모리억세싱방법
US6509927B1 (en) * 1994-12-16 2003-01-21 Hyundai Electronics America Inc. Programmably addressable image sensor
US5717942A (en) * 1994-12-27 1998-02-10 Unisys Corporation Reset for independent partitions within a computer system
US5603005A (en) * 1994-12-27 1997-02-11 Unisys Corporation Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed
US6223255B1 (en) * 1995-02-03 2001-04-24 Lucent Technologies Microprocessor with an instruction level reconfigurable n-way cache
US5694567A (en) * 1995-02-09 1997-12-02 Integrated Device Technology, Inc. Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits
US5652915A (en) * 1995-02-21 1997-07-29 Northern Telecom Limited System for controlling mode of operation of a data cache based on storing the DMA state of blocks by setting the DMA state to stall
US5701313A (en) * 1995-02-24 1997-12-23 Unisys Corporation Method and apparatus for removing soft errors from a memory
US5511164A (en) * 1995-03-01 1996-04-23 Unisys Corporation Method and apparatus for determining the source and nature of an error within a computer system
US6412045B1 (en) * 1995-05-23 2002-06-25 Lsi Logic Corporation Method for transferring data from a host computer to a storage media using selectable caching strategies
US5699548A (en) * 1995-06-01 1997-12-16 Intel Corporation Method and apparatus for selecting a mode for updating external memory
US5761709A (en) * 1995-06-05 1998-06-02 Advanced Micro Devices, Inc. Write cache for servicing write requests within a predetermined address range
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5815648A (en) * 1995-11-14 1998-09-29 Eccs, Inc. Apparatus and method for changing the cache mode dynamically in a storage array system
US5724533A (en) * 1995-11-17 1998-03-03 Unisys Corporation High performance instruction data path
US5793941A (en) * 1995-12-04 1998-08-11 Advanced Micro Devices, Inc. On-chip primary cache testing circuit and test method
US5774682A (en) * 1995-12-11 1998-06-30 International Business Machines Corporation System for concurrent cache data access by maintaining and selectively merging multiple ranked part copies
US5778428A (en) * 1995-12-22 1998-07-07 International Business Machines Corporation Programmable high performance mode for multi-way associative cache/memory designs
US5781923A (en) * 1996-05-28 1998-07-14 Hewlett-Packard Company Adding a field to the cache tag in a computer system to indicate byte ordering
US5734849A (en) * 1996-07-01 1998-03-31 Sun Microsystems, Inc. Dual bus memory transactions using address bus for data transfer
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US6167486A (en) 1996-11-18 2000-12-26 Nec Electronics, Inc. Parallel access virtual channel memory system with cacheable channels
US5822759A (en) * 1996-11-22 1998-10-13 Versant Object Technology Cache system
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US6279098B1 (en) 1996-12-16 2001-08-21 Unisys Corporation Method of and apparatus for serial dynamic system partitioning
US5875201A (en) * 1996-12-30 1999-02-23 Unisys Corporation Second level cache having instruction cache parity error control
US5960455A (en) * 1996-12-30 1999-09-28 Unisys Corporation Scalable cross bar type storage controller
US5970253A (en) * 1997-01-09 1999-10-19 Unisys Corporation Priority logic for selecting and stacking data
US5822766A (en) * 1997-01-09 1998-10-13 Unisys Corporation Main memory interface for high speed data transfer
US5860093A (en) * 1997-01-21 1999-01-12 Unisys Corporation Reduced instruction processor/storage controller interface
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6061755A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Method of layering cache and architectural specific functions to promote operation symmetry
US5978888A (en) * 1997-04-14 1999-11-02 International Business Machines Corporation Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US6026470A (en) * 1997-04-14 2000-02-15 International Business Machines Corporation Software-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US6058456A (en) * 1997-04-14 2000-05-02 International Business Machines Corporation Software-managed programmable unified/split caching mechanism for instructions and data
US6061762A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Apparatus and method for separately layering cache and architectural specific functions in different operational controllers
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US6175899B1 (en) * 1997-05-19 2001-01-16 International Business Machines Corporation Method for providing virtual atomicity in multi processor environment having access to multilevel caches
US6678790B1 (en) * 1997-06-09 2004-01-13 Hewlett-Packard Development Company, L.P. Microprocessor chip having a memory that is reconfigurable to function as on-chip main memory or an on-chip cache
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6092159A (en) * 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
US6240490B1 (en) 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
US6560677B1 (en) 1999-05-04 2003-05-06 International Business Machines Corporation Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6708254B2 (en) 1999-11-10 2004-03-16 Nec Electronics America, Inc. Parallel access virtual channel memory system
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6857049B1 (en) 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US7069391B1 (en) 2000-08-30 2006-06-27 Unisys Corporation Method for improved first level cache coherency
US6928517B1 (en) 2000-08-30 2005-08-09 Unisys Corporation Method for avoiding delays during snoop requests
US6697925B1 (en) 2000-12-22 2004-02-24 Unisys Corporation Use of a cache ownership mechanism to synchronize multiple dayclocks
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6516387B1 (en) * 2001-07-30 2003-02-04 Lsi Logic Corporation Set-associative cache having a configurable split and unified mode
US6785775B1 (en) 2002-03-19 2004-08-31 Unisys Corporation Use of a cache coherency mechanism as a doorbell indicator for input/output hardware queues
US6877046B2 (en) * 2002-03-29 2005-04-05 International Business Machines Corporation Method and apparatus for memory with embedded processor
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US6961877B2 (en) 2002-07-19 2005-11-01 Qlogic Corporation System and method for in-line error correction for storage systems
US6961807B1 (en) 2002-08-27 2005-11-01 Cypress Semiconductor Corporation Device, system and method for an integrated circuit adaptable for use in computing systems of differing memory requirements
US6978349B1 (en) * 2003-01-09 2005-12-20 Hewlett-Packard Development Company, L.P. Adaptive cache memory management
US7848332B2 (en) * 2004-11-15 2010-12-07 Cisco Technology, Inc. Method and apparatus for classifying a network protocol and aligning a network protocol header relative to cache line boundary
US7752354B2 (en) * 2005-02-11 2010-07-06 International Business Machines Corporation Auxiliary mechanism to manage instruction restart and restart coming in a lookahead processor
US7406568B2 (en) * 2005-06-20 2008-07-29 Intel Corporation Buffer allocation for split data messages
US8458404B1 (en) * 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
US8839025B2 (en) * 2011-09-30 2014-09-16 Oracle International Corporation Systems and methods for retiring and unretiring cache lines
US10282302B2 (en) * 2016-06-30 2019-05-07 Hewlett Packard Enterprise Development Lp Programmable memory-side cache management for different applications
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3898624A (en) * 1973-06-14 1975-08-05 Amdahl Corp Data processing system with variable prefetch and replacement algorithms
US4156906A (en) * 1977-11-22 1979-05-29 Honeywell Information Systems Inc. Buffer store including control apparatus which facilitates the concurrent processing of a plurality of commands
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
DE3138972A1 (de) * 1981-09-30 1983-04-14 Siemens AG, 1000 Berlin und 8000 München Onchip mikroprozessorchachespeichersystem und verfahren zu seinem betrieb
US4506323A (en) * 1982-03-03 1985-03-19 Sperry Corporation Cache/disk file status indicator with data protection feature
US4464717A (en) * 1982-03-31 1984-08-07 Honeywell Information Systems Inc. Multilevel cache system with graceful degradation capability
US4775955A (en) * 1985-10-30 1988-10-04 International Business Machines Corporation Cache coherence mechanism based on locking
JPS62145340A (ja) * 1985-12-20 1987-06-29 Toshiba Corp キヤツシユメモリ制御方式
US4758982A (en) * 1986-01-08 1988-07-19 Advanced Micro Devices, Inc. Quasi content addressable memory
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
US4811209A (en) * 1986-07-31 1989-03-07 Hewlett-Packard Company Cache memory with multiple valid bits for each data indication the validity within different contents
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
ATE138212T1 (de) * 1988-01-20 1996-06-15 Advanced Micro Devices Inc Integrierte cachespeichereinheit
DE68917326T2 (de) * 1988-01-20 1995-03-02 Advanced Micro Devices Inc Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Katz R.H.et al."IMPLEMENTING A CACHE CONSISTENCY PROTOCOL"Proceedings of 12th Annual International Symposium on Computer Architecture(1985)p.276−283
Sachs h."THE FAIRCHILD CLIPPER MICROPROCESSOR FAMILY−A HIGH PERFORMANCE 32−BIT PROCESSOR" Wescon Conference Proceedings 24(1985)p.6.5.1−6.5.6
田中康陽他「キャッシュユニットμPD43608」NEC技報第40巻第10号(1987)p.84−87

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160029086A (ko) * 2013-07-08 2016-03-14 에이알엠 리미티드 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법
KR102344008B1 (ko) * 2013-07-08 2021-12-28 에이알엠 리미티드 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법

Also Published As

Publication number Publication date
EP0325420A2 (en) 1989-07-26
DE68926059D1 (de) 1996-05-02
EP0325420B1 (en) 1996-03-27
DE68926059T2 (de) 1996-10-17
EP0325420A3 (en) 1991-01-09
US5025366A (en) 1991-06-18
ATE136136T1 (de) 1996-04-15
JPH01237836A (ja) 1989-09-22

Similar Documents

Publication Publication Date Title
JP3218317B2 (ja) 集積キャッシュユニットおよびその構成方法
JP3158161B2 (ja) 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法
JP2881309B2 (ja) 集積回路、コンピュータシステム、および集積回路内のキャッシュにおけるキャッシュブロックステータスを更新する方法
US5185878A (en) Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
JP3067112B2 (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US5692152A (en) Master-slave cache system with de-coupled data and tag pipelines and loop-back
EP0352633B1 (en) A pipeline having an integral cache for computer processors
US6665774B2 (en) Vector and scalar data cache for a vector multiprocessor
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US6408345B1 (en) Superscalar memory transfer controller in multilevel memory organization
US20090132749A1 (en) Cache memory system
EP1782184B1 (en) Selectively performing fetches for store operations during speculative execution
JPH10187533A (ja) キャッシュシステム、プロセッサ及びプロセッサを動作させる方法
JP3218316B2 (ja) 集積キャッシュユニットおよびその内部でキャッシュ機能を実現するための方法
US11720495B2 (en) Multi-level cache security
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
US6973541B1 (en) System and method for initializing memory within a data processing system
US5895486A (en) Method and system for selectively invalidating cache lines during multiple word store operations for memory coherence
JP2001043133A (ja) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム
US7035981B1 (en) Asynchronous input/output cache having reduced latency
AU628531B2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070810

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080810

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080810

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090810

Year of fee payment: 8

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090810

Year of fee payment: 8