JP3158161B2 - 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法 - Google Patents

集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法

Info

Publication number
JP3158161B2
JP3158161B2 JP01093789A JP1093789A JP3158161B2 JP 3158161 B2 JP3158161 B2 JP 3158161B2 JP 01093789 A JP01093789 A JP 01093789A JP 1093789 A JP1093789 A JP 1093789A JP 3158161 B2 JP3158161 B2 JP 3158161B2
Authority
JP
Japan
Prior art keywords
cache
memory
bus
icu
access
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
JP01093789A
Other languages
English (en)
Other versions
JPH01239637A (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 JPH01239637A publication Critical patent/JPH01239637A/ja
Application granted granted Critical
Publication of JP3158161B2 publication Critical patent/JP3158161B2/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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7828Architectures of general purpose stored program computers comprising a single central processing unit without memory
    • G06F15/7835Architectures of general purpose stored program computers comprising a single central processing unit without memory on more than one IC chip

Description

【発明の詳細な説明】 発明の背景 発明の分野 この発明は、一般的にはキャッシュメモリを実現し制
御するための方法および装置に関する。より特定的に
は、プログラム可能であり、単一のプロセッサ動作をサ
ポートすることに加えて、たとえばコピーバックおよび
所有権機構の実現によってマルチプロセッサ動作をサポ
ートすることが可能であり、縮小命令セットコンピュー
タ(RISC)環境において高速な命令およびデータ処理を
サポートすることが可能であり、シングルチップ上の集
積に適したアーキテクチャで、上に述べた機能のすべて
をサポートすることが可能であるキャッシュメモリユニ
ットを実現し制御するための方法および装置に関する。
関連技術の説明 キャッシュメモリおよびキャッシュメモリ用の制御器
は周知である。シングルチップ上にメモリ回路部分と制
御器回路部分との両方を集積するデバイスも知られてい
る。これらは、NECにより製造された市場で入手可能な4
3608を含んでいる。そのようなデバイスは、以後「集積
されたキャッシュユニット(ICU)」と呼ばれる。
先行技術のICUデバイスは、データおよび命令をキャ
ッシュするために予め定められたアルゴリズムを利用し
ている。すなわち、先行技術のデバイスはプログラム可
能でない。以前には、シングルチップ上にキャッシュメ
モリ回路部分と、キャッシュ制御器回路部分と、プログ
ラム可能な回路部分とを集積することは、部分的には回
路密度およびデータ経路の制約のせいで達成されていな
い。公知のICUアーキテクチャはさらに、プログラム可
能でないことに加えて、高速なRISC処理システム、特に
マルチプロセッサ能力を有する高速RISCシステムをサポ
ートするために必要な回路密度およびデータ経路の制約
に関する問題を克服していない。
さらに、マルチプロセッサまたはマルチタスキングま
たはその双方のサポートに関して、従来技術はキャッシ
ュ内のインターロック変数をセマフォーや他の同期変数
として、すなわち共有メモリ領域に対する保護キーとし
て利用してきた。そのようなシステムではインターロッ
ク変数は特別な問題を発生させる。なぜならばそれらの
アクセスはキャッシュと独立に同期されなければならな
いからである。
この問題に対する単純な従来の技術の解決は、すべて
のインターロック変数をキャッシュ不能とすることであ
る。この場合には、インターロック変数はキャッシュさ
れずすべてのインターロックアクセスはメモリに向けら
れる。その主な欠点は性能が低下すること、およびメモ
リに対するインターロック変数アクセスによって引き起
こされるバス使用率の増大という点である。インターロ
ックアクセスの数が増加するほど性能に対する影響が深
刻になる。したがって、インターロック変数のキャッシ
ングに対応したキャッシュユニットが望ましい。
さらにまた、上述したインターロック変数をキャッシ
ュする能力を持つプログラム可能ICUによって、ユーザ
は、この特徴を可能化したり不能化したりすることがで
きるようになり、それに加えてキャッシングアルゴリズ
ム、ライトポリシーおよび他のシステム設計基準の選択
または変更またはその双方が可能となるような柔軟性を
当然持つことができるようになる。
先に述べたプログラム可能という特徴を有するシング
ルチップICUも、スペース要件とユニット消費電力要件
とを最小限にするために望ましいであろう。またさら
に、RISC環境と非RISC環境との双方に対して、シングル
プロセッサモードとマルチプロセッサモードとの両方で
高速処理動作をサポートするためにそのような集積キャ
ッシュユニットを使用することが可能であることが望ま
しい。
発明の概要 先に言及した所望の特徴を有する、第1のチップ上に
キャッシュメモリとキャッシュコントローラとの両方を
備えるキャッシュユニットである、集積キャッシュユニ
ットを実現するための方法および装置が開示されてい
る。
より特定的には、マルチプロセッサ動作またはマルチ
タスキング動作またはその双方をサポートすることに関
して、この発明はインターロック変数のキャッシングを
サポートする。この発明の好ましい実施例は、8kバイト
のデータと、512個の20ビットワードのタグと、RISC環
境および非RISC環境の両方においてキャッシュ機能を十
分に実装するのに必要な制御とを含む集積キャッシュユ
ニット(ICU)に関連して以下に述べられる。ICUの好ま
しい実施例は2個のバスを有する。一方はプロセッサイ
ンターフェイスに対するものであり、他方はメモリイン
ターフェイスに対するものである。開示された方法は、
インターロック変数アクセスのために、組込まれたプロ
セッサ上で実装された特別な命令を利用している。説明
されている方法は、他のプロセッサとともに、および他
のキャッシュ環境においても同様に利用することができ
る。
この開示のために、プロセッサバスは非多重化32ビッ
トアドレスおよびデータバスであるものとする。プロセ
ッサバスはバーストアクセスおよびパイプライン化アク
セスをサポートしている。さらに、この開示では、メモ
リバスは多重化32ビットアドレスおよびデータバスであ
る。メモリバスは、メインメモリへのインターフェイス
を提供し、かつマルチプロセッサ編成に対応している。
この発明の好ましい実施例によれば、ICUは25メガヘ
ルツを超過する周波数で動作することが可能であり、一
連のシーケンスにおける最初のアクセスに対しては2サ
イクルの、バーストモードアクセスまたはパイプライン
化アクセスに対しては1サイクルのプロセッサアクセス
時間を達成する。それは、フレキシブルな内部キャッシ
ュ編成とともに命令キャッシュとしても、データキャッ
シュとしても使用できる。RISCプロセッサおよび2個の
ICU(命令キャッシュおよびデータキャッシュ用)は、1
6kバイトのキャッシュを有する非常に高性能のプロセッ
サを実現する。さらにICUを追加することにより、より
大規模なキャッシュを設計することができる。
この発明は、インターロック変数のキャッシングを可
能にする方法を提供することである。
この発明のさらなる目的は、インターロック変数のキ
ャッシングを選択的に可能化することができるプログラ
ム可能キャッシュユニットを実現するための方法および
装置を提供することである。
さらに、この発明の目的は、RISCアーキテクチャ環境
と非RISCアーキテクチャ環境との両方において、高速な
データおよび命令処理アプリケーションをサポートする
のに適したプログラム可能な集積キャッシュユニットを
実現するための方法および装置を提供することである。
この発明のなおさらなる目的は、第1のチップ上に集
積できるキャッシュアーキテクチャを用いて、上に述べ
た目的を実現しデータキャッシュおよび命令キャッシュ
のいずれとしても、開示されたICUを使用することが可
能となるように、シングルプロセッサ環境とマルチプロ
セッサ環境との両方において、高速な処理アプリケーシ
ョンをサポートするための、プログラム可能集積キャッ
シュユニットと、それに関連する方法論とを提供するこ
とである。
開示される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つのキャッシュ内にのみ存在する。ICU
の好ましい実施例では、シェアードブロックステータス
ビットが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 CREQT0 意味 0 0 メモリアクセス 0 1 入力/出力アクセス 1 x コプロセッサ転送 (ICUにより無視される) 命令キャッシュ使用CREQT1 CREQT0 意味 x 0 メモリアクセス x 1 命令リードオンリメモリ アクセス 命令キャッシュとしての使用については、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のため
のメモリバスキャッシュ命令を特定するために(MREQT
信号とともに)使用される。ここに説明する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、STWM
D、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マルチプロセッササポートの関連
で以下に説明する。
まず書込アクセスに注目する。書込動作は、キャッシ
ュマスタにより、ライトスルーおよびキャッシュ不能書
込アクセス、変更されたブロックのメモリへのコピーバ
ック、および共有されたブロックの書込ヒット動作の際
に開始される。バーストモードアクセスは変更されたブ
ロックのコピーバック動作およびプロセッサバス上のバ
ーストモード書込アクセスにおいて開始される。他のす
べての場合には単一アクセスが開始される。単一アクセ
スについては、アクセスタイプおよびアクセス長がプロ
セッサバスからゥ、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つのみの命令キャッシュのDREGT1がハイレベルに
接続されなければならない。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つのビットは独立であり、有効ブロッ
クには以下のような状態が割当てられる。
ブロックステータスビット 値(シェアード、 モディファイド) 意味 00 排他的非モディファイド 01 排他的モディファイド 10 シェアード非モディファイド 11 シェアードモディファイド また、キャッシュ不能データとはキャッシュされない
データ変数であることを想起されたい。キャッシュ不能
プロセッサバスアクセスは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はデータ転送制御器である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 12/08 577 G06F 12/08 577 15/167 15/167 C 15/177 681 15/177 681A 682 682F (56)参考文献 特開 昭57−111896(JP,A) 特開 昭55−6632(JP,A) Dubois M.,Scheuri ch C.,Briggs F.A." Synchronization,Co herence,and Event Ordering in Multip rocessors”IEEE COM PUTER Vol.21 No.2(F eb.1988)p.9−21 Sachs H.,”THE FAI RCHILD CLIPPER MIC ROPROCESSOR FAMILY − A HIGH PERFORMA NCE 32−BIT PROCESSO R”Wescon Conferenc e Proceedings(1985) p.6.5.1−6.5.6 田中他「キャッシュユニットμPD 43608」NEC技報第40巻第10号(昭62 年)p.84−87

Claims (39)

    (57)【特許請求の範囲】
  1. 【請求項1】計算システムにおいて、他のキャッシュ機
    能の実現と一緒にインターロック変数のキャッシュをサ
    ポートする集積キャッシュユニット(ICU)であって、
    前記システムは、少なくとも1個の中央処理ユニット
    (CPU)と、前記CPUとICUの間の通信を容易にするため
    のプロセッサバス手段と、メモリと、前記メモリとICU
    の間の通信を容易にするためのメモリバス手段とを含
    み、さらに (a) 前記プロセッサバス手段に結合され、ICU/プロ
    セッサバスインターフェイスを制御するためのプロセッ
    サバスユニットと、 (b) 前記メモリバス手段に結合され、ICU/メモリバ
    スインターフェイス制御するためのメモリバスユニット
    と、 (c) 前記プロセッサバスユニットと前記メモリバス
    ユニットとの両方に結合され、キャッシュ機能を行うた
    めのプログラム可能キャッシュユニットとを備え、前記
    プログラム可能キャッシュユニットが、選択された場合
    にインターロック変数のキャッシングを許容するキャッ
    シュインターロック可能化オプションを含むプログラム
    可能オプションを選択するための1組の特殊レジスタを
    含む、集積キャッシュユニット。
  2. 【請求項2】前記プログラム可能キャッシュユニット
    が、前記プログラム可能キャッシュ手段内に配置される
    メモリアレイ手段と関連する、請求項1に記載の集積キ
    ャッシュユニット。
  3. 【請求項3】前記プログラム可能キャッシュユニット
    が、前記プログラム可能キャッシュ手段の外部に配置さ
    れるメモリアレイ手段と関連する、請求項1に記載の集
    積キャッシュユニット。
  4. 【請求項4】前記メモリアレイ手段が、キャッシュされ
    たデータおよび命令信号をストアし、かつ1組のブロッ
    クとして編成され、各ブロックは予め定められた数のキ
    ャッシュされたワードに対応する、請求項2または請求
    項3に記載の集積キャッシュユニット。
  5. 【請求項5】前記プログラム可能キャッシュユニット
    が、ブロックおよびサブブロックのサイズの変更をサポ
    ートする、請求項4に記載の集積キャッシュユニット。
  6. 【請求項6】前記プログラム可能キャッシュユニット
    が、 (a) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合され、アドレス信号を搬送するための
    キャッシュユニットアドレスバスと、 (b) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合され、データ信号を搬送するためのキ
    ャッシュユニットデータバスと、 (c) 前記キャッシュデータバスに結合され、各ブロ
    ックのモディファイド、シェアード、およびロックトの
    ステータスの表示をストアするためのブロックステータ
    スアレイ手段と、 (d) 前記プロセッサバス制御手段と前記メモリバス
    制御手段とに結合され、前記プログラム可能キャッシュ
    と、前記プロセッサバスユニットと、前記メモリバスユ
    ニットとの動作を同期化し制御するためのキャッシュ制
    御手段とをさらに備える、請求項4に記載の集積キャッ
    シュユニット。
  7. 【請求項7】前記キャッシュ制御手段が、有効なキャッ
    シュアクセスに対してヒット信号を発生させるようにさ
    らに動作し、かつ前記特殊レジスタの組と前記ブロック
    ステータスアレイとにストアされたデータを維持および
    更新する、請求項6に記載の集積キャッシュユニット。
  8. 【請求項8】前記キャッシュインターロック可能化オプ
    ションが選択されていないときはいつでもインターロッ
    ク変数をキャッシュ不能として取扱うように動作する手
    段をさらに備える、請求項7に記載の集積キャッシュユ
    ニット。
  9. 【請求項9】前記インターロック変数がキャッシュ不能
    であるときはいつでも、インターロック変数に対する全
    てのアクセスをロック表示とともに前記メモリへ転送す
    るための手段をさらに備える、請求項8に記載の集積キ
    ャッシュユニット。
  10. 【請求項10】プロセッサアクセスがインターロックさ
    れたアクセスであることを表示するための手段をさらに
    含む、請求項7に記載の集積キャッシュユニット。
  11. 【請求項11】前記メモリバスインターフェイスに結合
    され、メモリアクセスがインターロックされたアクセス
    であることを表示するための手段をさらに備える、請求
    項10に記載の集積キャッシュユニット。
  12. 【請求項12】マルチプロセッサ環境において、特定さ
    れたプロセッサが独占的に使用するために変数をロック
    するための手段をさらに備える、請求項11に記載の集積
    キャッシュユニット。
  13. 【請求項13】前記特殊レジスタの組が、2nウェイセッ
    トアソシアティブキャッシュ編成を選択するための少な
    くとも1ビットを有する、少なくとも1個のプログラム
    可能レジスタを含み、ただしnは0以上の整数である、
    請求項12に記載の集積キャッシュユニット。
  14. 【請求項14】インターロックされた変数をテストする
    ための手段をさらに備える、請求項7に記載の集積キャ
    ッシュユニット。
  15. 【請求項15】前記キャッシュ可能化オプションが選択
    されかつ共有されたブロックにおいてヒットが起こらな
    いときはいつでも、インターロックされた読出をミスと
    して取扱うように動作し、前記メモリバス上で再ロード
    動作を開始し、ロック表示信号を発生させ、読出された
    データを後にシェアードが割当てられるキャッシュメモ
    リブロックにストアする、請求項14に記載の集積キャッ
    シュユニット。
  16. 【請求項16】シェアードブロック内でヒットしたイン
    ターロックされた読出が発生するときはいつでも、メモ
    リバスアクセスなしでキャッシュからのデータを供給す
    るように動作する、請求項15に記載の集積キャッシュユ
    ニット。
  17. 【請求項17】前記キャッシュ可能化オプションが選択
    されるときはいつでも、書込アクセスの前のサイクルに
    前記プロセッサにより入力される、プロセッサが発生す
    るロック表示信号の状態の関数としてインターロックさ
    れた書込動作を取扱うように動作する、請求項15に記載
    の集積キャッシュユニット。
  18. 【請求項18】前記ロック表示信号が第1の状態にある
    ときはいつでも、前記メモリへのライトスルー動作を開
    始するように働く、請求項17に記載の集積キャッシュユ
    ニット。
  19. 【請求項19】前記ロック表示信号が第2の状態にある
    ときいつでも、前記メモリアレイ手段にデータを書込む
    ように働く、請求項18に記載の集積キャッシュユニッ
    ト。
  20. 【請求項20】インターロックされた変数が読出される
    最初のときのみメモリが書込まれることを保証するため
    に、先の読出アクセスがミスを発生した場合、データを
    前記メモリへ書込むようにさらに働く、請求項19に記載
    の集積キャッシュユニット。
  21. 【請求項21】メモリ書込動作の間前記メモリへのロッ
    ク表示信号をアサートするための手段をさらに備える、
    請求項20に記載の集積キャッシュユニット。
  22. 【請求項22】シングルチップ上に集積され、モジュー
    ル式でありかつ拡張可能である、請求項21に記載の集積
    キャッシュユニット。
  23. 【請求項23】ICUがキャッシュマスタとして動作され
    ることが可能である、請求項14に記載の集積キャッシュ
    ユニット。
  24. 【請求項24】インターロックされたアクセスが前記メ
    モリバス上に存在する場合にはいつでも、ICUキャッシ
    ュマスタが前記共有された手段を介してメモリバスアク
    セスを表示するための信号を出力する、請求項23に記載
    の集積キャッシュユニット。
  25. 【請求項25】インターロックされた変数を解放するた
    めの手段をさらに備える、請求項24に記載の集積キャッ
    シュユニット。
  26. 【請求項26】インターロックされた変数を解放するた
    めの前記手段が、その後のプロセッサアクセスがミスで
    あることを保証しかつ変数の最も新しい値がメモリから
    読出されることを保証するために、キャッシュ変数を無
    効にするための手段をさらに備える、請求項25に記載の
    集積キャッシュユニット。
  27. 【請求項27】シングルチップ上に集積され、モジュー
    ル式でありかつ拡張可能である、請求項26に記載の集積
    キャッシュユニット。
  28. 【請求項28】計算システムにおいて他のキャッシュ機
    能をサポートする集積キャッシュユニット(ICU)にお
    いてインターロック変数をキャッシュする方法であっ
    て、前記システムは、少なくとも1個の中央処理ユニッ
    ト(CPU)と、前記CPUとICUの間の通信を容易にするた
    めのプロセッサバス手段と、メモリと、前記メモリとIC
    Uの間の通信を容易にするためのメモリバス手段とを含
    み、さらに (a) 前記プロセッサバス手段に結合されるプロセッ
    サバスユニットを利用して前記ICU内からICU/プロセッ
    サバスインターフェイスを制御するステップと、 (b) 前記メモリバス手段に結合されるメモリバスユ
    ニットを利用して前記ICU内からICU/メモリバスインタ
    ーフェイスを制御するステップと、 (c) 前記プロセッサバスユニットと前記メモリバス
    ユニットの両方に結合されるプログラム可能キャッシュ
    ユニットを利用して前記ICU内からキャッシュ機能を行
    うステップとを含み、前記プログラム可能キャッシュユ
    ニットは、選択された場合に、関連するメモリアレイ手
    段にインターロック変数をキャッシュすることを許容す
    るキャッシュインターロック機能化オプションを含む、
    プログラム可能オプションを選択するための1組の特殊
    レジスタを含む、方法。
  29. 【請求項29】プログラム可能キャッシュユニットを利
    用してキャッシュ機能を行う前記ステップが、 (a) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合される内部キャッシュユニットアドレ
    ス上で前記ICU内のアドレス信号を搬送するステップ
    と、 (b) 前記プロセッサバスユニットと前記メモリバス
    ユニットとに結合される内部キャッシュユニットデータ
    バス上で前記ICU内のデータ信号を搬送するステップ
    と、 (c) 前記キャッシュデータバスに結合されるブロッ
    クステータスアレイ手段に、各ブロックのモディファイ
    ド、シェアード、およびロックトのステータスの表示を
    ストアするステップと、 (d) 前記プログラム可能キャッシュユニットと、前
    記プロセッサバスと、前記メモリバスユニットとの動作
    をキャッシュユニット制御手段を介して同期化し制御す
    るステップとをさらに含む、請求項28に記載の方法。
  30. 【請求項30】前記キャッシュ制御手段を介して、有効
    なキャッシュアクセスに対してヒット信号を発生させ、
    かつ前記特殊レジスタの組と前記ブロックステータスア
    レイとにストアされたデータを維持および更新するステ
    ップをさらに含む、請求項29に記載の方法。
  31. 【請求項31】前記キャッシュインターロック可能化オ
    プションが選択されていないときはいつでもインターロ
    ック変数をキャッシュ不能として取扱うステップをさら
    に含む、請求項30に記載の方法。
  32. 【請求項32】インターロック変数へのアクセスを前記
    メモリバスに転送し、前記インターロック変数がキャッ
    シュ不能であるときはいつでもロック表示信号を発生さ
    せるステップをさらに含む、請求項31に記載の方法。
  33. 【請求項33】プロセッサアクセスがインターロックさ
    れたアクセスであるときはいつでも第1の信号を発生さ
    せるステップをさらに含む、請求項31に記載の方法。
  34. 【請求項34】メモリアクセスがインターロックされた
    アクセスであるときはいつでも第2の信号を発生させる
    ステップをさらに含む、請求項33に記載の方法。
  35. 【請求項35】マイクロプロセッサ環境において、特定
    されたプロセッサが変数を排他的に使用するために当該
    変数をロックするステップをさらに含む、請求項34に記
    載の方法。
  36. 【請求項36】インターロックされた変数をテストする
    ための手段をさらに含む、請求項30に記載の方法。
  37. 【請求項37】前記キャッシュ可能化オプションが選択
    され、かつ共有されたブロックにおいてヒットが起こら
    ないときはいつでも、 (a) インターロックされた読出しをミスとして取扱
    うステップと、 (b) 前記メモリバス上で再ロード動作を開始するス
    テップと、 (c) ロック表示信号を発生させるステップと、 (d) 後にシェアードが割当てられるキャッシュメモ
    リアレイブロックに読出データをストアするステップと
    をさらに含む、請求項36記載の方法。
  38. 【請求項38】シェアードブロック内でヒットするイン
    ターロックされた読出が発生するときはいつでも、メモ
    リバスアクセスなしでキャッシュメモリアレイからのデ
    ータを供給するステップをさらに含む、請求項37に記載
    の方法。
  39. 【請求項39】前記キャッシュ可能化オプションが選択
    されるときはいつでも、書込アクセスより前のサイクル
    において前記プロセッサにより入力される、プロセッサ
    により発生されたロック表示信号の状態の関数としてイ
    ンターロックされた書込動作を取扱うステップをさらに
    含む、請求項37に記載の方法。
JP01093789A 1988-01-20 1989-01-19 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法 Expired - Lifetime JP3158161B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/146,020 US5136691A (en) 1988-01-20 1988-01-20 Methods and apparatus for caching interlock variables in an integrated cache memory
US146,020 1988-01-20

Publications (2)

Publication Number Publication Date
JPH01239637A JPH01239637A (ja) 1989-09-25
JP3158161B2 true JP3158161B2 (ja) 2001-04-23

Family

ID=22515558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01093789A Expired - Lifetime JP3158161B2 (ja) 1988-01-20 1989-01-19 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法

Country Status (6)

Country Link
US (1) US5136691A (ja)
EP (1) EP0325419B1 (ja)
JP (1) JP3158161B2 (ja)
AT (1) ATE109909T1 (ja)
DE (1) DE68917325T2 (ja)
ES (1) ES2057099T3 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
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.
EP0325422B1 (en) * 1988-01-20 1996-05-15 Advanced Micro Devices, Inc. Integrated cache unit
US5553262B1 (en) * 1988-01-21 1999-07-06 Mitsubishi Electric Corp Memory apparatus and method capable of setting attribute of information to be cached
JP2665813B2 (ja) * 1990-02-23 1997-10-22 三菱電機株式会社 記憶制御装置
DE69132495T2 (de) * 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5838946A (en) * 1990-04-14 1998-11-17 Sun Microsystems, Inc. Method and apparatus for accomplishing processor read of selected information through a cache memory
JP2708943B2 (ja) * 1990-08-08 1998-02-04 三菱電機株式会社 キャッシュメモリ制御装置
EP0855647A1 (en) * 1992-01-06 1998-07-29 Hitachi, Ltd. Computer for performing data fetch and data prefetch in parallel
US5555382A (en) * 1992-04-24 1996-09-10 Digital Equipment Corporation Intelligent snoopy bus arbiter
US5809531A (en) * 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
EP0601715A1 (en) * 1992-12-11 1994-06-15 National Semiconductor Corporation Bus of CPU core optimized for accessing on-chip memory devices
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
US5835934A (en) * 1993-10-12 1998-11-10 Texas Instruments Incorporated Method and apparatus of low power cache operation with a tag hit enablement
US5577226A (en) 1994-05-06 1996-11-19 Eec Systems, Inc. Method and system for coherently caching I/O devices across a network
US5490270A (en) * 1994-06-16 1996-02-06 International Business Machines Corporation Simultaneous updates to the modification time attribute of a shared file in a cluster having a server and client nodes
USRE38514E1 (en) 1994-11-18 2004-05-11 Apple Computer, Inc. System for and method of efficiently controlling memory accesses in a multiprocessor computer system
US5895496A (en) * 1994-11-18 1999-04-20 Apple Computer, Inc. System for an method of efficiently controlling memory accesses in a multiprocessor computer system
US6061731A (en) * 1994-12-06 2000-05-09 Thunderwave, Inc. Read only linear stream based cache system
US5623699A (en) * 1994-12-06 1997-04-22 Thunderwave, Inc. Read only linear stream based cache system
US5761722A (en) * 1995-01-30 1998-06-02 Sun Microsystems, Inc. Method and apparatus for solving the stale data problem occurring in data access performed with data caches
US5890216A (en) * 1995-04-21 1999-03-30 International Business Machines Corporation Apparatus and method for decreasing the access time to non-cacheable address space in a computer system
US6131152A (en) * 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
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
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
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
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
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
US6058456A (en) * 1997-04-14 2000-05-02 International Business Machines Corporation Software-managed programmable unified/split caching mechanism for instructions and data
US6098156A (en) * 1997-07-22 2000-08-01 International Business Machines Corporation Method and system for rapid line ownership transfer for multiprocessor updates
US6334173B1 (en) 1997-11-17 2001-12-25 Hyundai Electronics Industries Co. Ltd. Combined cache with main memory and a control method thereof
US6240490B1 (en) 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
US6460124B1 (en) * 2000-10-20 2002-10-01 Wisconsin Alumni Research Foundation Method of using delays to speed processing of inferred critical program portions
GB2370131C (en) * 2000-12-12 2006-09-06 Advanced Risc Mach Ltd Exclusive access control to a processing resource
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6839812B2 (en) * 2001-12-21 2005-01-04 Intel Corporation Method and system to cache metadata
US7340569B2 (en) * 2004-02-10 2008-03-04 Wisconsin Alumni Research Foundation Computer architecture providing transactional, lock-free execution of lock-based programs
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations
US8230180B2 (en) * 2008-06-11 2012-07-24 Samsung Electronics Co., Ltd. Shared memory burst communications
US8839025B2 (en) * 2011-09-30 2014-09-16 Oracle International Corporation Systems and methods for retiring and unretiring cache lines
US9165088B2 (en) 2013-07-08 2015-10-20 Hewlett-Packard Development Company, L.P. Apparatus and method for multi-mode storage
CN106293637B (zh) * 2015-05-28 2018-10-30 华为技术有限公司 数据移动、将数据设置为无效的方法、处理器及系统
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 (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3761883A (en) * 1972-01-20 1973-09-25 Ibm Storage protect key array for a multiprocessing system
FR2344093A1 (fr) * 1976-03-10 1977-10-07 Cii Systeme de gestion coherente d'une hierarchie de memoires
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
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
US4400770A (en) * 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
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
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
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
US4616310A (en) * 1983-05-20 1986-10-07 International Business Machines Corporation Communicating random access memory
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 キヤツシユメモリ制御方式
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
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
EP0325422B1 (en) * 1988-01-20 1996-05-15 Advanced Micro Devices, Inc. Integrated cache unit
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
Dubois M.,Scheurich C.,Briggs F.A."Synchronization,Coherence,and Event Ordering in Multiprocessors"IEEE COMPUTER Vol.21 No.2(Feb.1988)p.9−21
Sachs H.,"THE FAIRCHILD CLIPPER MICROPROCESSOR FAMILY − A HIGH PERFORMANCE 32−BIT PROCESSOR"Wescon Conference Proceedings(1985)p.6.5.1−6.5.6
田中他「キャッシュユニットμPD43608」NEC技報第40巻第10号(昭62年)p.84−87

Also Published As

Publication number Publication date
ES2057099T3 (es) 1994-10-16
EP0325419A2 (en) 1989-07-26
JPH01239637A (ja) 1989-09-25
ATE109909T1 (de) 1994-08-15
EP0325419A3 (en) 1991-01-02
EP0325419B1 (en) 1994-08-10
DE68917325D1 (de) 1994-09-15
DE68917325T2 (de) 1995-03-02
US5136691A (en) 1992-08-04

Similar Documents

Publication Publication Date Title
JP3158161B2 (ja) 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法
JP3218317B2 (ja) 集積キャッシュユニットおよびその構成方法
JP2881309B2 (ja) 集積回路、コンピュータシステム、および集積回路内のキャッシュにおけるキャッシュブロックステータスを更新する方法
US5185878A (en) Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
JP3067112B2 (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5692152A (en) Master-slave cache system with de-coupled data and tag pipelines and loop-back
EP1782184B1 (en) Selectively performing fetches for store operations during speculative execution
US11720495B2 (en) Multi-level cache security
JP3218316B2 (ja) 集積キャッシュユニットおよびその内部でキャッシュ機能を実現するための方法
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
JP2618178B2 (ja) スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
US6484237B1 (en) Unified multilevel memory system architecture which supports both cache and addressable SRAM
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) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム
AU600982B2 (en) Computer system architecture implementing split instruction and operand cache line-pair-state management
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
IE901514A1 (en) Method and apparatus for interfacing a system control unit¹for a multiprocessor system with the central processing¹units
KR980013130A (ko) 멀티프로세서시스템의 교체 라이트백 사이클 처리장치 및 방법

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: 20080216

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090216

Year of fee payment: 8

EXPY Cancellation because of completion of term