JP3431878B2 - マルチスレッド・プロセッサの命令キャッシュ - Google Patents

マルチスレッド・プロセッサの命令キャッシュ

Info

Publication number
JP3431878B2
JP3431878B2 JP2000062593A JP2000062593A JP3431878B2 JP 3431878 B2 JP3431878 B2 JP 3431878B2 JP 2000062593 A JP2000062593 A JP 2000062593A JP 2000062593 A JP2000062593 A JP 2000062593A JP 3431878 B2 JP3431878 B2 JP 3431878B2
Authority
JP
Japan
Prior art keywords
instruction
cache
array
address
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000062593A
Other languages
English (en)
Other versions
JP2000259498A (ja
Inventor
リチャード・ウィリアム・ドゥーイング
ロナルド・ニック・カーラ
ステファン・ジョセフ・シュワイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/266,133 external-priority patent/US6161166A/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000259498A publication Critical patent/JP2000259498A/ja
Application granted granted Critical
Publication of JP3431878B2 publication Critical patent/JP3431878B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはデジタ
ル・データ処理に関し、特にデジタル・コンピュータ・
システムの処理装置に命令を提供する命令キャッシュに
関する。
【0002】
【従来の技術】通常、現在のコンピュータ・システム
は、中央処理装置(CPU)と、通信バスやメモリ等、
情報の保存、検索、転送に必要なハードウェアを含む。
また、入出力コントローラ、または記憶装置コントロー
ラ等、外部との通信に必要なハードウェアや、それらに
接続されるキーボード、モニタ、テープ・ドライブ、デ
ィスク・ドライブ、ネットワークに接続される通信ライ
ン等の装置も含まれる。システムの中心はCPUであ
る。CPUは、コンピュータ・プログラムを構成する命
令を実行し、他のシステム要素の操作を指示する。
【0003】コンピュータのハードウェアの観点から
は、ほとんどのシステムは基本的には同じように動作す
る。プロセッサは、算術、論理比較、データ移動等、一
定の単純な操作を実行できる。ただし各操作は極めて高
速に実行される。こらら単純な操作を多量に実行するこ
とをコンピュータに指示するプログラムがあるため、コ
ンピュータは何か高度なことを実行しているといった幻
想が生じる。コンピュータ・システムの新しい機能や機
能の向上とユーザが認めるものは、基本的には同じ単純
な操作であっても、より高速に実行することによって実
現される。従って、コンピュータ・システムの改良を続
けるには、そうしたシステムを更に高速にする必要があ
る。
【0004】コンピュータ・システム全体の速度("ス
ループット"ともいう)は、おおよそ単位時間に実行さ
れる操作の回数で測られる。概念上、考えられる限りの
改良の中で最も単純な改良は、様々な構成要素のクロッ
ク速度を上げることであり、特にプロセッサのクロック
速度を上げることである。例えば、全て2倍速く動作
し、他の点では全く同じように機能する場合、そのシス
テムは、あるタスクを半分の時間で実行することにな
る。初期のコンピュータ・プロセッサは、多くの個別要
素から構成されていて、構成要素を小型化し、要素数を
減らし、最終的にはプロセッサ全体を1つのチップ上の
集積回路とすることで、かなりの高速化が可能になっ
た。小型化によりプロセッサのクロック速度を上げるこ
とができ、その結果、システムが高速になった。
【0005】集積回路により大幅な高速化が実現したに
もかかわらず、より高速なコンピュータ・システムに対
する需要は絶えることがない。ハードウェアの設計者
は、集積度を上げる(つまり1つのチップに集積する回
路数を増やす)、回路を更に小型化する等、様々な手法
により速度を更に改良しているが、物理的な小型化を無
制限に続けることができないことはわかっており、プロ
セッサのクロック速度を上げ続ける能力にも限度があ
る。そのような背景から、コンピュータ・システム全体
の速度を上げる他のアプローチに関心が集まっている。
【0006】クロック速度を変えずに、システムのスル
ープットを改良することは、複数のプロセッサを使用す
れば可能である。集積回路チップに組み込まれる個々の
プロセッサのコストは高くないので、これは現実的な方
法である。複数のプロセッサを使用する潜在的なメリッ
トは確かにあるが、アーキテクチャ上の問題が生じる。
こうした問題を細かく調べるのでなければ、複数のCP
Uを使用するか1つのCPUにするかにかかわらず、個
々のCPUの速度を改良する理由は未だに数多くあるこ
とがわかる。CPUのクロック速度が一定の場合、個々
のCPUの速度を更に上げる、つまり1秒間に実行され
る操作の回数を増やすことは、1クロック・サイクル当
たりの操作の平均回数を増やすことによって可能であ
る。
【0007】CPU速度を上げるために、高性能プロセ
ッサを設計する際によく行われることは、命令のパイプ
ライン化、及びキャッシュ・メモリのレベルの採用であ
る。パイプライン命令が実行されると、前に発行された
命令が終了する前に後続の命令の実行を開始できる。キ
ャッシュ・メモリは、頻繁に使用されるデータや他のデ
ータをプロセッサの近くに記憶し、命令の実行をほとん
どの場合、メイン・メモリのフル・アクセス時間を待つ
ことなく継続できる。
【0008】パイプラインは特定の状況下では機能しな
くなる。前にディスパッチされた命令の結果に依存する
命令で、まだ完了していない命令はパイプラインが機能
を停止する原因になることがある。例えば、必要なデー
タがキャッシュにない(つまりキャッシュ・ミス)ロー
ド/ストア命令に依存する命令は、データがキャッシュ
から使用できるようになるまで実行できない。必要なデ
ータを実行を続けるために必要なキャッシュに維持し、
高いヒット率、つまりデータ・リクエスト数に対してデ
ータをキャッシュからすぐ使用できる回数、は、特に大
きいデータ構造が関係する計算では無視できない。キャ
ッシュ・ミスが起こると、パイプラインが数サイクルの
間停止することがある。そのとき、データがほとんどの
時間使用できない場合、メモリ遅延の合計は大きな問題
になる。メイン・メモリに使用されるメモリ装置は高速
になっているが、そのようなメモリ・チップとハイエン
ド・プロセッサの間の速度ギャップはますます大きくな
っている。そのため、現在設計されているハイエンド・
プロセッサのかなりの実行時間が、キャッシュ・ミスの
解決を待つ時間として費やされている。
【0009】プロセッサが何らかのイベントを待つ時
間、例えばパイプラインのリフィルやメモリからのデー
タ検索の時間を少なくすると、1クロック・サイクル当
たりの平均操作回数が増えることがわかる。この問題を
扱うアーキテクチャ上のイノベーションとして"マルチ
スレッド"処理がある。この手法では、作業負荷がスレ
ッドと呼ばれる独立した複数の実行可能な命令シーケン
スに分けられる。CPUは、どの瞬間でも、複数のスレ
ッドの状態を維持する。その結果、スレッドを切り替え
ることは比較的簡単であり高速に行われる。
【0010】"マルチスレッド"という用語は、コンピュ
ータ・アーキテクチャの分野では、ソフトウェアの分野
の定義とは異なり、ソフトウェア分野では、1つのタス
クを、関連する複数のスレッドに更に細分することをい
う。アーキテクチャ上の定義では、スレッドは独立でも
よい。その2つの定義を区別するために"ハードウェア
・マルチスレッド"という用語もよく用いられる。ここ
では、ハードウェア・マルチスレッドの意味で"マルチ
スレッド"という用語を用いる。
【0011】マルチスレッドの基本的な形式は2つあ
る。従来型の形式は"ファイン・グレイン・マルチスレ
ッド"ともいい、プロセッサがN個のスレッドを並列に
実行するために実行をサイクル・ベースでインタリーブ
する。これにより、1つのスレッド内での各命令の実行
にギャップが生じるので、命令パイプラインのリフィル
等、プロセッサが短い遅延イベントを待機する必要がな
くなる。もう1つのマルチスレッドは、"コース・グレ
イン・マルチスレッド"ともいい、キャッシュ・ミス
等、比較的長い遅延イベントがプロセッサにより検出さ
れるまで、1つのスレッドで複数の命令が順に実行され
る。
【0012】通常、マルチスレッドでは、複数のスレッ
ドの状態を維持するために、スレッド毎にプロセッサ・
レジスタが複製される。例えば、PowerPC(商標)とし
て販売されているアーキテクチャを実装したプロセッサ
がマルチスレッドを実現する場合、プロセッサはN個の
スレッドを実行するためにN個の状態を維持する必要が
ある。従って、汎用レジスタ、浮動小数点レジスタ、条
件レジスタ、浮動小数点ステータス/制御レジスタ、カ
ウント・レジスタ、リンク・レジスタ、例外レジスタ、
保存/復元レジスタ、及び専用レジスタはN回複製され
る。また、セグメント・ルックアサイド・バッファなど
の特殊なバッファが複製されるか、各エントリにスレッ
ド番号のタグが付けられることがあり、タグが付けられ
ない場合は、スレッドの切り替え毎にフラッシュする必
要がある。また、相関レジスタ、戻りスタック等の分岐
予測メカニズムも複製する必要がある。
【0013】普通、レベル1命令キャッシュ、レベル1
データ・キャッシュ、機能ユニット、実行ユニット等、
比較的大きいハードウェア構造は複製されない。他は全
て同じで比較的大きいハードウェア構造を複製すること
には、パフォーマンス上多少とも段階的、増分的なメリ
ットがあろう。ただし、そのようなアプローチでは、こ
うした増分的なメリットと所要ハードウェアを秤にかけ
る必要がある。キャッシュは、他の用途に充てることも
できるプロセッサ・チップ上のかなりの領域を消費す
る。従って、キャッシュのサイズ、及びキャッシュの数
と機能を慎重に選択する必要がある。
【0014】高性能設計の場合、プロセッサ・チップに
はレベル1命令キャッシュ(L1Iキャッシュ)がよく
採用される。L1 Iキャッシュは、比較的短時間のう
ちに実行される可能性があるとみなされる命令を保持す
るためのキャッシュである。
【0015】L1 Iキャッシュがマルチスレッドのプ
ロセッサに用いられると、また別の問題が生じる。Iキ
ャッシュは、高速なスレッド切り替えをスレッド間の過
度の競合なしにサポートする必要がある。競合を避ける
方法として、スレッド毎に個別のIキャッシュが使用さ
れるが、その場合は、貴重なハードウェアが消費される
か、1つのスレッドに対する個々のキャッシュが過度に
小さくなる。スレッド間で過度の競合が発生することな
く、1つのL1 Iキャッシュを全てのスレッドが共有
するのが望ましい。また、キャッシュ・アクセス・メカ
ニズムにより、低速なアドレス変換メカニズムは可能な
限り使用しない方が都合が良い。
【0016】L1 Iキャッシュの設計は、プロセッサ
の高速動作にとって大きな課題である。Iキャッシュの
ミス率が高い場合、アクセスが遅すぎる場合、別々のス
レッド間で競合が過度に発生する場合、またはキャッシ
ュのコヒーレンシを維持するのが困難な場合、プロセッ
サは、次の命令の実行を待つ時間を過度に費やすことに
なる。プロセッサの改良を継続するには、L1 Iキャ
ッシュがこうした課題に、特にマルチスレッド環境での
課題に効率よく応える必要がある。
【0017】
【発明が解決しようとする課題】本発明の目的は、改良
されたプロセッサ装置を提供することである。
【0018】本発明の他の目的は、マルチスレッド・プ
ロセッサに用いられる改良された命令キャッシュ装置を
提供することである。
【0019】本発明の他の目的は、命令キャッシュにア
クセスするマルチスレッド・プロセッサのスレッド間の
競合を少なくすることである。
【0020】
【課題を解決するための手段】マルチスレッド・プロセ
ッサは、全てのスレッドに共有されるレベル1命令キャ
ッシュ(L1 Iキャッシュ)を含む。L1 Iキャッ
シュは、ディレクトリ・アレイ及びキャッシュ済み命令
のアレイで構成され、アレイは、両方とも全てのスレッ
ドに共有され、所望の命令の有効アドレスからハッシュ
関数を構成することによりアクセスされる。ディレクト
リ・アレイの各エントリは、キャッシュ済み命令のアレ
イの対応するキャッシュ・ラインの実アドレスの少なく
とも一部を記憶する。そこから、キャッシュ内の命令の
完全な実アドレスを導くことができる。スレッド毎に独
立したライン・フィル・シーケンサが存在するので、1
つのスレッドのキャッシュ・ライン・フィル・リクエス
トを満足しながら、別のスレッドがキャッシュ・エント
リにアクセスでき、或いは実行中のスレッドに対してラ
インをプリフェッチできるようになる。
【0021】好適実施例の場合、これらのアレイは複数
のセットに分けられ、セットはそれぞれ1つのエントリ
がハッシュ関数の各値に対応する(Nウェイ連想キャッ
シュ)。この例のプロセッサは、2つの独立したスレッ
ドの状態情報を維持し、命令キャッシュ・アレイは2つ
のセットに分けられる。ただし、スレッドとキャッシュ
連想性の数は変えてもよい。各スレッドが、ハッシュ値
は同じでも属するセットが異なるキャッシュ済み命令に
独立にアクセスできるので、異なるスレッド間の競合が
少なくなる。
【0022】Iキャッシュは、好適には、メイン・メモ
リのアドレス変換テーブルのキャッシュとして機能する
有効/実アドレス・テーブル(EffectiveーtoーReal Addr
essTable、ERAT)を含む。ERATは、有効アドレ
ス部とこれに対応する実アドレス部のペアを含む。ER
ATのエントリは、所望の命令の有効アドレスのハッシ
ュ関数でアクセスされる。ERATエントリの有効アド
レス部は、次に、所望の命令の有効アドレスと比較さ
れ、ERATヒットが確認される。対応する実アドレス
部は、ディレクトリ・アレイの実アドレス部と比較さ
れ、キャッシュ・ヒットが確認される。
【0023】ライン・フィル・シーケンサは、好適に
は、キャッシュ・ミスに応答して動作する。その際、要
求された有効アドレスのERATエントリが存在する
(ERATヒット)。その場合、ERATの有効アドレ
スと情報から所望の命令の完全実アドレスを構成できる
ので、メイン・メモリの低速なアドレス変換メカニズム
にアクセスする必要はなくなる。ライン・フィル・シー
ケンサは、構成された実アドレスを使ってメモリに直接
アクセスする。
【0024】スレッド毎に独立したライン・フィル・シ
ーケンサがあるので、スレッドは互いに待機することな
く、キャッシュ・フィル・リクエストを独立に満足する
ことができる。また、Iキャッシュのインデックスは、
エントリに対応する実ページ番号を記憶するので、キャ
ッシュのコヒーレンシが簡素化される。更に、ERAT
を使用して有効ページ番号と実ページ番号を関連付ける
と、多くの場合、低速なメモリ変換メカニズムにアクセ
スする必要がなくなる。そして、キャッシュのNウェイ
連想性により、全てのスレッドが、スレッドの過度の競
合なしに共通のキャッシュを使用できる。
【0025】
【発明の実施の形態】図1は、本発明の好適実施例に従
った、命令キャッシュ・アーキテクチャを採用した単一
CPUのコンピュータ・システム100の主なハードウ
ェア構成要素を示す。命令を処理するCPU101は、
独立した内部レベル1命令キャッシュ106(L1 I
キャッシュ)とレベル1データ・キャッシュ107(L
1 Dキャッシュ)を含む。L1 Iキャッシュ106
は、CPU101により実行される命令を記憶する。L
1 Dキャッシュは、CPU101により処理される、
命令以外のデータを記憶する。CPU101はレベル2
キャッシュ(L2キャッシュ)108に接続され、L2
キャッシュ108は、命令、データの両方を保持するた
めに使用される。メモリ・バス109は、一方のL2キ
ャッシュ108またはCPU101と、他方のメイン・
メモリ102の間でデータを転送する。CPU101、
L2キャッシュ108、及びメイン・メモリ102はま
た、バス・インタフェース105を介してシステム・バ
ス110と通信する。様々なI/O処理装置(IOP)
111乃至115がシステム・バス110に接続され、
直接アクセス記憶装置(DASD)、テープ・ドライ
ブ、ワークステーション、プリンタ、離れた装置や他の
コンピュータ・システムと通信するリモート通信ライン
等、様々な記憶装置やI/O装置との通信をサポートす
る。
【0026】図1は、システム100の主な構成要素を
概念的に示すものであり、そのような要素の数やタイプ
は必ずしも一定ではない。特に、システム100には複
数のCPUを使用できる。そのようなマルチCPUシス
テムを図2に示す。図2のシステムは、4つのCPU、
101A、101B、101C、101Dを備え、CP
UそれぞれにL1 Iキャッシュ106A、106B、
106C、106D、及びL1 Dキャッシュ107
A、107B、107C、107Dがある。また、独立
したL2キャッシュ108A、108B、108C、1
08Dが各CPUに関連付けられる。
【0027】好適実施例では、各CPUが2つのスレッ
ドの状態を維持することができ、ある遅延イベントで実
行をスレッド間で切り替える。つまり、CPUは1つの
スレッド(アクティブ・スレッド)を、CPUが待機せ
ざるを得ないような何らかの遅延イベントが検出される
まで実行する(コース・グレイン・マルチスレッドの1
形態)。ただし、本発明は、各CPUのスレッド状態の
数を変えて実施でき、また、各スレッドからの命令の実
行をサイクル・ベースでインタリーブする(ファイン・
グレイン・マルチスレッド)か、他の基準によりスレッ
ドを切り替えることも可能である。
【0028】図3は、CPU101の主な構成要素の図
である。CPU101は、好適実施例に従って、図1乃
至図3よりも詳しく示してある。この例で、図3の構成
要素は、1つの半導体チップに集積される。CPU10
1は、命令ユニット部201、実行ユニット部211、
及び記憶制御部221を含む。一般に、命令ユニット2
01はL1 Iキャッシュ106から命令を取得し、命
令をデコードして実行する操作を決定し、分岐条件を判
別してプログラムの流れを制御する。実行ユニット21
1は、レジスタのデータに対して算術演算や論理演算を
行い、データをロードまたは記憶する。記憶制御装置2
21は、L1データ・キャッシュのデータにアクセスす
るか、または命令やデータをフェッチまたは記憶する必
要のあるCPUの外部のメモリまたはインタフェースを
とる。
【0029】命令ユニット201は、分岐ユニット20
2、バッファ203、204、205、及びデコード/
ディスパッチ・ユニット206を含む。L1 Iキャッ
シュ106からの命令は、L1 Iキャッシュ命令バス
232から3つのバッファの1つにロードされる。順次
バッファ203は、16の命令を現在の実行シーケンス
で記憶する。分岐バッファ205は、分岐先からの8つ
の命令を記憶する。これらは、分岐が行われる場合に
は、分岐評価の前にバッファ205に投機的にロードさ
れる。スレッド切り替えバッファ204は、アクティブ
ではないスレッドの8つの命令を記憶する。現在アクテ
ィブなスレッドからアクティブではないスレッドへの切
り替えが必要な場合、これらの命令はすぐに使用でき
る。デコード/ディスパッチ・ユニット206は、バッ
ファの1つから実行される現在の命令を受け取り、デコ
ードして、実行される操作または分岐条件を確認する。
分岐ユニット202は、分岐条件を評価してプログラム
の流れを制御し、L1 Iキャッシュ・アドレス・バス
231の所望の命令の有効アドレスを送ることによっ
て、L1 Iキャッシュ106からバッファをリフィル
する。
【0030】実行ユニット211は、Sパイプ213、
Mパイプ214、Rパイプ215、及び汎用レジスタ2
17のバンクを含む。レジスタ217は2セットに分け
られ、それぞれ各スレッドに対応する。Rパイプ215
は、単純整数の算術やロジックの機能の一部を実行する
パイプライン演算装置である。Mパイプ214は、比較
的大きい操作とロジックの機能セットを実行するパイプ
ライン演算装置である。Sパイプ213は、ロードとス
トアを実行するパイプライン装置である。浮動小数点ユ
ニット(FPU)212とこれに関連する浮動小数点レ
ジスタ216は、通常は数サイクルを必要とする複雑な
浮動小数点演算に使用される。浮動小数点レジスタ21
6は、汎用レジスタ217と同様、それぞれ各スレッド
に対応する2セットに分けられる。
【0031】記憶制御装置221は、メモリ管理装置2
22、L2キャッシュ・ディレクトリ223、L2キャ
ッシュ・インタフェース224、L1データ・キャッシ
ュ107、メモリ・バス・インタフェース225を含
む。L1 Dキャッシュは(命令ではなく)データに使
用されるオンチップ・キャッシュである。L2キャッシ
ュ・ディレクトリ223は、L2キャッシュ108の内
容のディレクトリである。L2キャッシュ・インタフェ
ース224は、L2キャッシュ108との間で直接デー
タ転送を処理する。メモリ・バス・インタフェース22
5は、メモリ・バス109のデータ転送を処理する。メ
モリ・バス109のデータ転送は、メイン・メモリ10
2や、他のCPUに関連付けられたL2キャッシュ・ユ
ニットに対する転送等である。メモリ管理装置222
は、様々なユニットへのデータ・アクセスをルーティン
グする役割を持つ。例えば、Sパイプ213がロード・
コマンドを処理するときに、データをレジスタにロード
する必要があると、メモリ管理装置はデータをL1 D
キャッシュ107、L2キャッシュ108、またはメイ
ン・メモリ102からフェッチすることができる。メモ
リ管理装置222は、データをどこから取得するかを決
定する。L1 Dキャッシュ107は、L2キャッシュ
・ディレクトリ223と同様に直接アクセスできるの
で、ユニット222は、データがL1 Dキャッシュ1
07にあるか、L2キャッシュ108にあるか確認する
ことができる。データがオンチップのL1 Dキャッシ
ュ107にもL2キャッシュ108にもない場合は、メ
モリ・インタフェース225を使ってメモリ・バス10
9からフェッチされる。
【0032】CPUの様々な構成要素について説明して
いるが、好適実施例のCPUには、ここに示していない
多くの要素を使用でき、それらは、本発明の理解に不可
欠ではない。例えば、通常の設計では、専用レジスタを
追加する必要があるが、それらのいくつかはスレッド毎
に複製する必要がある。CPU101内の構成要素の
数、タイプ、配置は一定でなくてもよい。例えば、バッ
ファとキャッシュの数と構成、実行ユニット・パイプラ
インの数と機能、レジスタを構成するアレイやセット等
は変更可能であり、専用浮動小数点処理ハードウェアは
使用してもしなくてもよい。
【0033】命令ユニット201は、理想的には、デコ
ード/ディスパッチ・ユニット206でのデコードと、
実行ユニット211による実行を目的に一定の命令スト
リームを提供する。L1 Iキャッシュ106は、アク
セス・リクエストに対して最小限の遅延時間で応答する
必要がある。要求された命令が実際にL1 Iキャッシ
ュにあるとき、デコード/ディスパッチ・ユニット20
6が待機する必要なしに、応答し、対応するバッファを
埋めることができなければならない。L1 Iキャッシ
ュが応答できない(つまり、要求された命令がL1 I
キャッシュにない)ときは、キャッシュ・フィル・バス
233を介したメモリ管理装置222までの比較的長い
パスを取る必要がある。その場合、命令は、L2キャッ
シュ108から、メイン・メモリ102から、また可能
ならディスクや他の記憶装置から取得できる。また、シ
ステム100に複数のプロセッサがある場合、命令は、
他のプロセッサのL2キャッシュから取得することも可
能である。いずれの場合についても、離れた場所から命
令をフェッチするときの遅延時間により、命令ユニット
201がスレッドを切り替えることがある。つまり、ア
クティブなスレッドはアクティブでなくなり、前にアク
ティブでなかったスレッドはアクティブになり、命令ユ
ニット201は、スレッド切り替えバッファ204に保
持された、前にアクティブでなかったスレッドの命令の
処理を開始する。
【0034】図4は、好適実施例に従ったL1 Iキャ
ッシュ106の主な構成要素を、図1、図2よりも詳し
く示す。L1 Iキャッシュ106は、有効/実アドレ
ス・テーブル(ERAT)301、Iキャッシュ・ディ
レクトリ・アレイ302、Iキャッシュ命令アレイ30
3を含む。Iキャッシュ命令アレイ303は、実行のた
め命令ユニット201に送られる実際の命令を記憶す
る。Iキャッシュ・ディレクトリ・アレイ302は、命
令アレイ303を管理するため、特に所望の命令が実際
に命令アレイ303にあるかどうかを確認するため、実
ページ番号、有効ビット等の情報の集合を記憶する。E
RAT301は、有効ページ番号と実ページ番号のペア
を記憶し、有効アドレスを実アドレスに関連付けるため
に使用される。
【0035】好適実施例のCPU101は、図11にロ
ジックを示す通り、複数のアドレス変換レベルをサポー
トする。基本的なアドレス指定構造体は、有効アドレス
801、仮想アドレス802、実アドレス803の3つ
である。"有効アドレス"は、命令を参照するために命令
ユニット201により生成されるアドレスをいう。つま
り、これは、ユーザの実行可能コードの観点から見たア
ドレスである。有効アドレスは、従来の様々な方法で生
成できる。例えば、専用レジスタの上位アドレス・ビッ
ト(新しいタスクの実行開始時等、頻繁には変化しな
い)と、命令からの下位アドレス・ビットの連結、汎用
レジスタのアドレスから計算されたオフセット、現在実
行中の命令からのオフセット等として生成される。この
実施例の有効アドレスは、64ビットで0乃至63の番
号が付けられる(0は最上位ビット)。"仮想アドレス"
は、異なるユーザのアドレス空間を分離するために用い
られるオペレーティング・システムの構造体である。つ
まり、各ユーザが、有効アドレスの全範囲を参照できる
場合、競合を避けるために、異なるユーザの有効アドレ
ス空間を、比較的大きい仮想アドレス空間にマップする
必要がある。仮想アドレスは、レジスタに記憶されると
いう意味で物理的実体ではなく、52ビットの仮想セグ
メントID 814と有効アドレスの下位28ビットを
連結して得られる計80ビットの論理構造である。"実
アドレス"は、命令が記憶されるメモリ102の物理的
位置をいう。実アドレスは40ビットで、24乃至63
の番号が付けられる(24は最上位ビット)。
【0036】図11に示すように、有効アドレス801
は、36ビットの有効セグメントID811、16ビッ
トのページ番号812、12ビットのバイト・インデッ
クス813を含み、有効セグメントIDは最上位ビット
位置を占める。仮想アドレス802は、36ビット有効
セグメントID811を52ビット仮想セグメントID
814にマップし、得られる仮想セグメントID814
をページ番号812とバイト・インデックス813に連
結することによって、有効アドレスから構成される。実
アドレス803は、仮想セグメントID814とページ
番号812を52ビット実ページ番号815にマップ
し、実ページ番号をバイト・インデックス813と連結
することで、仮想アドレスから導かれる。メイン・メモ
リのページは4K(つまり212)バイトなので、バイト
・インデックス813(最下位の12アドレス・ビッ
ト)は、ページ内のアドレスを指定し、そのアドレスが
有効アドレス、仮想アドレス、または実アドレスかどう
かにかかわらず同じである。上位ビットはページを指定
し、従って、"有効ページ番号"または"実ページ番号"と
も呼ばれる。
【0037】コンピュータ・システム100には、CP
U101により生成される有効アドレスをメモリ102
の実アドレスに変換するアドレス変換メカニズムがあ
る。このアドレス変換メカニズムは、有効セグメントI
D811を仮想セグメントID814にマップするセグ
メント・テーブル・メカニズム821と、仮想セグメン
トID814とページ番号812を実ページ番号815
にマップするページ・テーブル・メカニズム822を含
む。これらのメカニズムは、図11では便宜上シングル
・エンティティとして示しているが、実際にはレベルの
異なる複数のテーブルやレジスタを含む。つまり完全な
ページ・テーブルと完全なセグメント・テーブルがメイ
ン・メモリ102にあり、これらのテーブルの比較的小
さい様々なデータ・キャッシュ部は、CPU101自体
またはL2キャッシュに記憶される。また、一定の条件
下で有効アドレスから実アドレスに直接変換する変換メ
カニズムもある(図示せず)。
【0038】CPU101は、図11のようにアドレス
変換をサポートするが、より簡単なアドレス指定もサポ
ートする。具体的には、好適実施例のCPU101
は、"タグ・アクティブ"・モードまたは"タグ非アクテ
ィブ"・モードのいずれかで動作する。モードが異なる
のは、アドレス指定の違いを示し、サポートするオペレ
ーティング・システムも異なる。マシン状態レジスタ
(専用レジスタ)のビットは、現在の動作モードを記録
する。上に述べた完全アドレス指定変換は"タグ非アク
ティブ"・モードで使用される。"タグ・アクティブ"・
モードでは、有効アドレスは仮想アドレスと同じである
(つまり、有効セグメントID811は、ルックアップ
なしに仮想セグメントID813に直接マップされるの
で、仮想セグメントIDの上位16ビットは常に0であ
る)。CPU101はまた、有効=実アドレスのアドレ
ス指定モードでも動作する(後述)。
【0039】有効アドレスから実アドレスへの変換に
は、複数のレベルのテーブル・ルックアップが必要であ
る。更にアドレス変換メカニズムの各部は、CPUチッ
プから離れたところに位置し、メモリ102に関連付け
られるのでこのメカニズムへのアクセスは、オンチップ
のキャッシュ・メモリへのアクセスよりかなり遅い。E
RAT301は、アドレス変換メカニズムにより維持さ
れる情報の一部を記憶し、有効アドレスを実アドレスに
マップするので、ほとんどの場合、アドレス変換メカニ
ズムにアクセスする必要なしに、L1 Iキャッシュ内
で有効アドレスと実アドレスの関連付けを高速に行える
小さいキャッシュと考えることができる。
【0040】命令ユニット201が、Iキャッシュ10
6に命令を要求し、要求された命令の有効アドレスを提
供するとき、Iキャッシュは、要求された命令が実際に
キャッシュにあるかどうかを高速に判定し、存在する場
合は命令を返し、存在しない場合は命令をどこかから
(L2キャッシュ、メイン・メモリ等)取得する処理を
開始する必要がある。通常の場合、命令は実際にL1
Iキャッシュ106にあり、図4に示すように、Iキャ
ッシュ内で以下の処理が並行して発生する。 a)命令装置201からの有効アドレスにより、ERA
T301のエントリがアクセスされ、有効ページ番号と
これに関連する実ページ番号が導かれる。 b)命令装置201からの有効アドレスにより、ディレ
クトリ・アレイ302のエントリがアクセスされ、実ペ
ージ番号のペアが導かれる。 c)命令装置201からの有効アドレスにより、命令ア
レイ303のエントリがアクセスされ、命令を含むキャ
ッシュ・ラインのペアが導かれる。
【0041】前記のいずれの場合でも、ERAT31
0、ディレクトリ・アレイ302、命令アレイ303の
いずれか1つへの入力は、これらの構成要素のうち他の
いずれか1つの出力に依存しないので、前記の処理はい
ずれも、開始する前に他の完了を待機する必要がない。
次に、ERAT301、ディレクトリ・アレイ302、
命令アレイ303の出力は以下のように処理される。
【0042】a)ERAT301からの有効ページ番号
が、比較器304で、命令装置201からの有効アドレ
スの同じアドレス・ビットと比較される。一致する場合
はERAT"ヒット"がある。 b)ERAT301からの実ページ番号が、比較器30
5、306で、ディレクトリ・アレイ302からの実ペ
ージ番号それぞれと比較される。いずれかが一致する場
合、また、ERATヒットがある場合、Iキャッシュ
・"ヒット"がある。つまり要求された命令は実際にIキ
ャッシュ106に、具体的には命令アレイ303にあ
る。 c)ERAT301とディレクトリ・アレイ302から
の実ページ番号の比較の出力により、命令アレイ303
からのキャッシュ・ラインのペアのうち、所望の命令の
あるペアが選択される(選択マルチプレクサ307を使
用)。
【0043】これらの処理を並行して実行することで、
所望の命令が実際にIキャッシュにある場合の遅延が最
小になる。所望の命令がIキャッシュにあるかどうかに
かかわらず、命令装置201へのIキャッシュの出力に
データが多少とも存在する。独立したIキャッシュ・ヒ
ット信号により、出力データに実際に所望の命令がある
ことが命令装置201に示される。Iキャッシュ・ヒッ
ト信号がないとき、命令装置201は出力データを無視
する。キャッシュ・ミスの場合にIキャッシュ106に
より実行される処理については後述する。
【0044】図5、図6は、ERAT301とこれに関
連する制御構造を詳しく示す。ERAT301は82ビ
ット×128アレイである(つまり128のエントリが
あり、各エントリは82ビットである)。ERATエン
トリはそれぞれ、有効アドレスの一部(ビット0乃至4
6)、実アドレスの一部(ビット24乃至51)、及び
追加ビットを含む(後述)。
【0045】ERAT301は、制御ラインと共に、有
効アドレス(EA)のビット45乃至51のハッシュ関
数を構成することによってアクセスされる。制御ライン
は、マルチスレッドがアクティブかどうかを示す(好適
実施例のCPU設計では、マルチスレッドをオフにする
ことができる)マルチスレッド制御ライン(MT)と、
2つのスレッドのどちらがアクティブかを示すアクティ
ブ・スレッド・ライン(ActT)の2つである。ハッ
シュ関数は以下の通りである。
【数1】
【0046】これは7ビット関数で、ERATの128
エントリを指定するには充分である。選択ロジック40
1は、前記のハッシュ関数に従って対応するERATエ
ントリを選択する。
【0047】比較器304は、命令装置201により生
成される有効アドレスのビット0乃至46を、選択され
たERATエントリの有効アドレス部と比較する。命令
装置201からの有効アドレスのビット47乃至51
は、ハッシュ関数を構成するために用いられたので、ビ
ット0乃至46が一致すると、アドレスの完全有効ペー
ジ番号部、つまりビット0乃至51の一致を保証するに
は充分である。これら2つのアドレス部の一致は、ER
ATの実ページ番号(RA24:51)が、実際には、
命令装置201により指定される有効アドレスのページ
番号(EA0:51)に対応する実ページ番号であるこ
とを意味する。そのため、ERATエントリに記憶され
た有効アドレス部は、厳密な意味ではなく有効ページ番
号と呼ばれることもある。ただし、好適実施例では、有
効ページ番号のビット0乃至46しか含まれない。
【0048】CPU101は、場合によっては、有効=
実モード(E=R)等と表記される特別なアドレス指定
モードで動作する。このモードで動作しているとき、命
令装置201により生成される有効アドレスの下位40
ビット(つまりEA24:63)は実アドレス(RA2
4:63)と同じである。通常このモードは、同じ実ア
ドレス位置に常に記憶される場合は比較的効率的に働く
低レベルのオペレーティング・システム機能用に予約さ
れている。図5、図6に示すように、制御ラインE=R
がアクティブなとき、ERAT301は効果的にバイパ
スされる。つまり、選択マルチプレクサ402は、E=
Rが偽のとき、選択されたERATエントリからRA2
4:51を実ページ番号(RPN)として選択し、E=
Rが真のときは、命令装置201からEA24:51を
選択する。また、E=Rが真なら、比較器304の比較
結果にかかわらず、ERATはヒットとみなされる。
【0049】ERATは、先に図8とあわせて述べたア
ドレス変換メカニズムを効果的にバイパスするので、通
常のアドレス変換メカニズムに含まれるアクセス制御情
報を一部複製する。つまり有効アドレスから実アドレス
への変換は、通常は、セグメント・テーブル・メカニズ
ム821、ページ・テーブル・メカニズム822等に含
まれる追加情報によりアクセス権を確認する。ERAT
301は、この情報の一部をキャッシュして、これらア
ドレス変換メカニズムを参照する必要をなくす。ERA
Tの動作について詳しくは、1997年11月10日付
米国特許出願第08/966706号、"Effective-To-
Real Address Cache Managing Apparatus and Method"
を参照されたい。
【0050】ERATエントリは、パリティ・ビット、
保護ビット、アクセス制御ビットを含む。特にERAT
エントリはそれぞれ、キャッシュ禁止ビット、問題状態
ビット、アクセス制御ビットを含む。また、個別アレイ
403(1ビット×128)は、各ERATエントリに
関連付けられる1つの有効ビットを含む。更に、タグ・
モード・ビットのペアが個別レジスタ404に記憶され
る。アレイ403からの有効ビットは、対応するERA
Tエントリが有効かどうかを記録する。様々な条件によ
り、プロセッサ・ロジック(図示せず)が有効ビットを
リセットする結果、対応するERATエントリへの後の
アクセスによってエントリが再ロードされる。キャッシ
ュ禁止ビットは、要求された命令をIキャッシュ命令ア
レイ303に書込むことを禁止するために用いられる。
つまり、アドレス範囲には、ERATのエントリが含ま
れることがあるが、このアドレス範囲でIキャッシュに
命令をキャッシュすることを避けたい場合がある。その
場合、このアドレス範囲の命令に対するリクエストによ
って、ライン・フィル・シーケンス・ロジック(後述)
が要求された命令を取得するが、命令はアレイ303に
書込まれない(ディレクトリ・アレイ302が更新され
ることもない)。問題状態ビットは、ERATエントリ
がロードされる時点で、実行中のスレッド(つまりスー
パバイザかユーザ)の"問題状態"を記録する。スーパバ
イザ状態で実行中のスレッドは、一般には、問題状態の
スレッドよりもアクセス権が大きい。ある状態でERA
Tエントリがロードされた場合、問題状態はその後に変
更され、現在実行中のスレッドは、ERATエントリの
範囲のアドレスにはアクセスできない恐れが生じ、この
情報は、ERATがアクセスされるときに確認する必要
がある。アクセス制御ビットはまた、ERATエントリ
がロードされた時点でアクセス情報を記録し、また、ア
クセスの時点でチェックされる。タグ・モード・ビット
404は、プロセッサのタグ・モード(タグ・アクティ
ブかタグ非アクティブ)を、ERATがロードされたと
き記録する。ERATの各半分(64エントリ)にタグ
・モード・ビット1つが関連付けられる。これはERA
T HASH関数の0ビットを使って選択される。タグ
・モードは、有効アドレスの解釈に影響を与えるので、
タグ・モードの変更はつまり、ERATエントリの実ペ
ージ番号が信頼できるとみなされないことを意味する。
タグ・モードは、変更される場合は、あまり頻繁には変
更されないと想定される。従って、変更が検出された場
合、ERATの対応する半分の全てのエントリが無効と
マークされ、最終的には再ロードされる。
【0051】ERATロジック405は、セレクタ30
4の出力、有効=実モード、先に述べた様々なビット、
及びCPUのマシン状態レジスタ(図示せず)のビット
をもとに、選択マルチプレクサのRPN出力の使用状態
とERATのメンテナンスを制御する信号を生成する。
特に、ロジック405は、ERATヒット信号410、
保護例外信号411、ERATミス信号412、及びキ
ャッシュ禁止信号413を生成する。
【0052】ERATヒット信号410は、選択マルチ
プレクサ402のRPN出力が、要求された有効アドレ
スに対応する真の実ページ番号として使用できることを
示す。この信号は、有効=実のとき(ERATをバイパ
ス)、または比較器304が一致を検出し、保護例外が
なく、ERATミスを強制する特定条件がないときは、
アクティブである。これは以下のロジックで表せる。
【0053】Match_304は、比較器304から
の信号で命令装置201からのEA0:46がERAT
エントリのEA0:46と一致することを示し、Val
idはアレイ403からの有効ビットの値である。
【数2】
【0054】保護例外信号411は、ERATエントリ
は有効なデータを含むが、現在実行中のプロセスは所望
の命令へのアクセスを許可されないことを示す。ERA
Tミス信号412は、要求されたERATエントリに所
望の実ページ番号がないか、または信頼できるとみなさ
れないことを示し、いずれの場合も、ERATエントリ
を再ロードする必要がある。キャッシュ禁止信号413
は、要求された命令が命令アレイ303にキャッシュさ
れるのを防ぐ。これらの信号は以下のロジックで導かれ
る。
【数3】
【0055】ここで、 ERAT(Pr)はERATエントリからの問題状態ビ
ット ERAT(AC)はERATエントリからのアクセス制
御ビット ERAT(CI)はERATエントリからのキャッシュ
禁止ビット MSR(TA)はマシン状態レジスタからのタグ・アク
ティブ・ビット MSR(Us)はマシン状態レジスタからのユーザ状態
ビット Tag_404はレジスタ404からの選択済みタグ・
ビット
【0056】図7は、Iキャッシュ・ディレクトリ・ア
レイ302とこれに関連する制御構造を詳しく示す。I
キャッシュ・ディレクトリ・アレイは、実ページ番号と
特定の制御ビットを保持する66ビット×512アレイ
502と、MRU(most-recently-used)ビットを記憶
する1ビット×512アレイ503を含む。アレイ50
2及び503は物理的に独立しているが、論理的には1
つのアレイとして扱える。アレイ502は、論理的に2
セットに分けられる。各アレイ・エントリの最初の33
ビットは最初のセット(セット0)に属し、各エントリ
の最後の33ビットは第2セット(セット1)に属す
る。アレイ502の各エントリは、セット0に対応する
28ビットの実ページ番号(つまり実アドレス・ビット
24乃至51)、セット0の4つの有効ビット、セット
0のパリティ・ビット、セット1の28ビットの実ペー
ジ番号、セット1の4つの有効ビット、及びセット1の
パリティ・ビットを含む。
【0057】図8は、Iキャッシュ命令アレイ303と
これに関連する制御構造を詳しく示す。Iキャッシュ命
令アレイ303は、64バイト×2048アレイを含
み、これは、ディレクトリ・アレイ502と同様、論理
的に2つのセットに分けられる。各アレイ・エントリの
最初の32バイトはセット0に属し、残り32バイトは
セット1に属する。命令アレイ303の各エントリは、
セット0に対応しプロセッサで実行できる8つの命令
(それぞれ4バイト)と、セット1に対応しプロセッサ
で実行できる8つの命令(それぞれ4バイト)を含む。
【0058】ディレクトリ・アレイ502の各エントリ
は、命令アレイ303の4つのエントリで構成される連
続したグループに関連付けられる。1つのセット(セッ
ト0または1)に含まれる4エントリのこの連続グルー
プは、キャッシュ・ラインと呼ばれ、いずれかのセット
に含まれるシングル・エントリはキャッシュ・サブライ
ンと呼ばれる。選択ロジック601は、各エントリ(つ
まり、キャッシュ・サブラインのペアで、セット0、及
びセット1それぞれから1つ)に独立にアクセスできる
が、各キャッシュ・ラインまたは4つのサブラインのグ
ループに対応する、ディレクトリ・アレイ502の実ペ
ージ番号は1つだけである。そのため、キャッシュ・ラ
インを構成する4つのキャッシュ・サブラインは、1回
のキャッシュ・ライン・フィル動作でグループとして埋
められる(後述)。
【0059】好適実施例では、命令アレイ303のキャ
ッシュ・ラインは、128バイトを含み、キャッシュ・
ラインの空間内でバイトを指定するために7アドレス・
ビット(アドレス・ビット57乃至63)を必要とす
る。アドレス・ビット57及び58は、キャッシュ・ラ
イン内の4つのキャッシュ・サブラインのうち1つを指
定する。キャッシュ・ラインの実アドレスは、実アドレ
ス・ビット24乃至56で指定される。有効アドレス・
ビット48乃至56(キャッシュ・ラインの下位アドレ
ス・ビットに対応する)は、アレイ502及び503の
エントリを選択するのに用いられる。選択ロジック50
1は、これらアドレス・ビットの直接デコードである。
事実上これは簡単なハッシュ関数である。つまり、有効
アドレス・ビット48乃至56に可能な組み合わせは2
9あるが、キャッシュ・ラインに可能な実アドレス233
個(実アドレス・ビット24乃至56の組み合わせ)が
このアレイにマップされる。同様に、有効アドレス・ビ
ット48乃至58(キャッシュ・サブラインの下位アド
レス・ビットに対応する)は、命令アレイ303のエン
トリを選択するのに用いられ、選択ロジック601は、
これらアドレス・ビットの直接デコードである。命令ア
レイ303のキャッシュ・サブラインの実アドレスは、
有効アドレス・ビット52乃至58(EA52:58)
と連結された、ディレクトリ・アレイ502の対応する
エントリとセットの実ページ番号(RA24:51)で
ある。
【0060】各エントリに2つの実ページ番号(セット
0及びセット1から)があるので、Iキャッシュ・ディ
レクトリには、有効アドレス・ビット48乃至56のそ
れぞれ9ビットの組み合わせに対応する2つの実ページ
番号(及び命令アレイ303に2つのキャッシュ・ライ
ン)がある。この特性から、スレッド間のIキャッシュ
の競合を避けることができる。
【0061】選択ロジック501は、疎なハッシュ関数
として機能するのでアレイ502のエントリに含まれる
実ページ番号のいずれかが、所望の命令の完全有効アド
レス・ページ番号に対応することの保証はない。対応を
確認するため、選択された両方の実ページ番号が、比較
器305及び306を使って、ERAT301のページ
番号出力411と同時に比較される。この比較と同時に
有効アドレス・ビット57、58により、アレイ502
の選択されたエントリから、セット0の4つの有効ビッ
トのうち対応する1つ(セレクタ504)と、セット1
の4つの有効ビットのうち1つ(セレクタ505)が選
択される。選択される有効ビットは、所望の命令のキャ
ッシュ・サブラインに対応する。これらは、対応する比
較器305、306の出力とのANDが取られ、それぞ
れのセットの一致を示す信号のペアが生成される。これ
らの信号の論理ORは、ERATヒット信号410との
ANDが取られ、所望の命令が実際にL1 Iキャッシ
ュにあることを示すIキャッシュ・ヒット信号510が
生成される。
【0062】先に説明したように、選択ロジック601
は、命令装置により与えられる所望の命令の有効アドレ
スを使用して、命令アレイ303のエントリ("サブラ
イン"のペア)にアクセスする。セレクタ602は、ア
レイ303のセット0からのサブラインか、または、キ
ャッシュ書込みバス604からのバイパス・サブライン
値を選択する。バイパス・サブライン値は、キャッシュ
・ラインがキャッシュ・ミスの後に埋められているとき
に使用される。その場合、新しいキャッシュ・サブライ
ン値が外部ソースから使用できるとすぐにキャッシュ書
込みバス604から得られるので、最初に命令アレイ3
03に書込む必要がない。従って、キャッシュ・フィル
動作中に命令アレイをバイパスすることで、少しの時間
が節約される。バイパス・サブライン値はまた、キャッ
シュ禁止ライン413がアクティブなときにも使用され
る。
【0063】セレクタ603は、セット選択ライン51
1の値に応じて、セレクタ602の出力かまたはアレイ
303のセット1からのサブラインを選択する。セット
選択ライン511は、キャッシュのセット1の半分でキ
ャッシュ・ヒットがあった場合はHIGHである。つま
り比較器306は、ERATからの実ページ番号411
とディレクトリ・アレイ502の選択されたエントリか
らのセット1実ページ番号との一致を検出する。セレク
タ505により選択される対応するサブライン有効ビッ
トは有効で、セット選択ライン511はHIGHにな
り、セレクタ603は、アレイ303のセット1からサ
ブラインを選択する。他の場合では(キャッシュ・ミス
を含む)、セレクタ602の出力が選択される。セレク
タ603の出力は、連続メモリ位置からの8つの命令を
表す32バイトのデータである。これは、順次バッファ
203、スレッド・バッファ204、または分岐バッフ
ァに書込むために命令装置201に送られる。キャッシ
ュ・ミスが生じた場合、Iキャッシュ・ヒット・ライン
510はLOWになり、セレクタ603の出力は無視さ
れる(つまり、命令装置201のバッファの1つに書込
まれない)。キャッシュ・ヒットがあった場合(ライン
510がアクティブ)、選択されたディレクトリ・エン
トリに対応するアレイのMRUビットが、セット選択ラ
イン511の値で更新される。
【0064】上の説明は、検索される命令が実際にIキ
ャッシュにある状況に関する。Iキャッシュ・ミスがあ
るとき、可能性は2つある。a)ERATヒットがある
が、命令は命令アレイにないか、b)ERATミスがあ
る。ERATヒットがある場合、所望のキャッシュ・ラ
インをかなり高速に埋めることができる。実ページ番号
はERATにあるので、所望のデータはメイン・メモリ
にあることがわかる(また、L2キャッシュにある可能
性もある)。L1 Iキャッシュ106のロジックで、
ERATデータから所望の命令の完全実アドレスを構成
することは、外部のアドレス変換メカニズムにアクセス
することなしに可能であり、このデータはL2キャッシ
ュまたはメモリから直接フェッチすることもできる。E
RATミスがあった場合、所望の命令の実アドレスを構
成するために、また必要に応じて新しい実ページ番号で
ERATを更新するために、外部のアドレス変換メカニ
ズムにアクセスする必要がある。その場合、所望のデー
タはメイン・メモリには全く存在しない可能性があり、
ディスク・ドライブ等の2次記憶装置から読出す必要が
ある。理論的には、所望の命令が実際に命令アレイ30
3にあるときにERATミスの可能性があるが、これは
希な事例とみなされる。従って、ERATミスがあった
ときには、命令アレイのライン・フィルが同時に開始さ
れる。
【0065】図9、図10は、主な高速ライン・フィル
・シーケンサのロジック、つまり、ERATヒットがあ
ったとき、また、キャッシュ・ミスの場合にキャッシュ
・ライン・フィルを生成する制御ロジックを示す。高速
ライン・フィル・シーケンサ・ロジックは、ライン・フ
ィル開始ロジック701と、ライン・フィル操作の完了
を保留するライン・フィル・リクエスト・パラメータを
記憶するレジスタ710、711のペア(それぞれLF
Addr0、LFAddr1と示す)を含む。
【0066】LFAddrレジスタ710、711はそ
れぞれ2つのスレッドの一方に対応する。つまりLFA
ddr0 710はスレッド0に、LFAddr1 7
11はスレッド1に対応する。命令装置201が、スレ
ッド0の実行中に命令リクエストを出すと、リクエスト
・パラメータがLFAddr0レジスタ710に記憶さ
れ、同様に、スレッド1の実行中のリクエストはLFA
ddr1レジスタ711に記憶される。(マルチスレッ
ドがオフの場合、LFAddr0レジスタ710しか用
いられない。)LFAddrレジスタ710、711は
それぞれ、1つのライン・フィル・リクエストしか記憶
しない。従って、あるスレッドで、同じスレッドについ
て未決のライン・フィル・リクエストが保留されている
間、ERATヒットとIキャッシュ・ミスがあった場
合、2つ目のリクエストは遅らせる必要がある。
【0067】LFAddrレジスタはそれぞれ、有効ア
ドレス・ビット48乃至58(EA48:58)、実ア
ドレス・ビット24乃至51(RA24:51)、セッ
ト・ビット、及びリクエスト未決("R")ビットを含
む。アドレス・ビットは、埋められるキャッシュ・ライ
ンのメモリの実アドレスを生成し、キャッシュ・ライン
が返されたときにディレクトリ・アレイ502と命令ア
レイ303に書込むために用いられる。セット・ビット
は、ディレクトリ・アレイ502と命令アレイ303の
いずれのセット(セット0またはセット1)に書込まれ
るかを判定する。リクエスト未決("R")ビットは、L
FAddrレジスタに未決リクエストが入ったときに1
に設定され、ライン・フィル・リクエストが完了すると
リセットされる(リセット・ロジックは図示せず)。
【0068】ライン・フィル開始ロジック701は、入
力としてERATヒット・ライン410、Iキャッシュ
・ヒット・ライン510、どのスレッドがアクティブか
を指定するアクティブ・スレッド制御ライン(Act
T)、及びLFAddr0レジスタ710とLFAdd
r1レジスタ711からのリクエスト未決ビット(それ
ぞれ"R0"、"R1"と示す)を受け取る。ライン・フィ
ル・リクエストは、ERATヒットがあるとき、Iキャ
ッシュ・ミスがあるとき、また、現在アクティブなスレ
ッドに対応するLFAddrレジスタにライン・フィル
・リクエストが現在保留されていないときに開始される
(ライン・フィル・リクエスト・ライン703がアクテ
ィブになる)。ERATヒットとIキャッシュ・ミスが
あり、現在アクティブなスレッドに対応するLFAdd
rレジスタにライン・フィル・リクエストが保留されて
いる場合、Iキャッシュは、保留中のライン・フィル・
リクエストが完了する("R"ビットをリセットする)ま
で待機してから、新しいライン・フィル・リクエストを
開始する。これらの入力と出力の論理関係は以下のよう
に表せる。
【数4】
【0069】ライン・フィル・リクエストが開始される
と、ライン・フィル開始ロジックが、書込み信号70
4、705を生成し、リクエスト・パラメータがLFA
ddrレジスタ710、711に書込まれる。書込み信
号704、705のいずれか1つは常にアクティブであ
り得る。書込み信号704、705のいずれか1つがア
クティブになると、EA48:58(L1 Iキャッシ
ュ・アドレス・バス231から)、RA24:51(パ
ス411、ERAT301から)、及びセット・ロジッ
ク720からのセット・ビットが、現在アクティブなス
レッドに対応するLFAddrレジスタに記憶される。
同時に、レジスタのリクエスト未決ビットが1に設定さ
れる。書込み信号は、論理的には以下のように導かれ
る。
【数5】
【0070】ディレクトリ・アレイ502と命令アレイ
303は2セット(セット0とセット1)に分けられ、
それぞれ同じハッシュ関数で索引が付けられるので、ラ
イン・フィル・リクエストからのキャッシュ・ライン
は、論理的にいずれかのセットに書込める。キャッシュ
・ラインが書込まれるセットは、ライン・フィル・リク
エストが出された時点でセット・ロジック720により
判定され、対応するLFAddrレジスタのセット・ビ
ットに記憶される。一般に、選択されるセットは、埋め
られるキャッシュ・ラインのLRUセットである。つま
りセットは、ハッシュ関数により索引が付けられるディ
レクトリ・アレイ502のエントリに対応するMRUビ
ットの反転である。ただし、アクティブではないスレッ
ドで未決ライン・フィル・リクエストがあり、この未決
ライン・フィルで同じキャッシュ・ラインが埋められる
特別な場合では、選択されるセットは、アクティブでは
ないスレッドに対する未決ライン・フィル・リクエスト
に選択されるセットとは反対である。従って、ライン・
フィル・リクエストが開始される時点でセットを固定す
ると、ライブ・ロック(つまり、2つの未決ライン・フ
ィル・リクエストが同じセットに書込もうとする状況)
が発生する可能性は回避される。
【0071】図9、図10は、レジスタ710に記憶さ
れる情報の使用方法を示す。便宜上、レジスタ711か
らの同様のデータ・パスは図示していない。要求された
命令を含むキャッシュ・サブラインのアドレスは、対応
するLRAddrレジスタに記憶されたアドレス情報か
ら導かれる。具体的には、実ページ番号(RA24:5
1)がビットEA52:58と連結されて、キャッシュ
・サブラインの実アドレスが得られる。これは図9、図
10ではフィーチャ712として示してある。これは必
ずしも個別レジスタではなく、LFAddrレジスタの
1つの対応するビットからのアドレスの組み合わせの表
現にすぎない。ライン・フィル・リクエスト・ライン7
03は、メモリ管理装置222に対するデータ・リクエ
ストを開始し、キャッシュ・フィル・バス233で71
2として示したアドレスを転送する。スレッド・タグ・
ビットも転送され、L1 Iキャッシュ制御ロジックは
その後、返された命令に関連付けるLFAddrレジス
タを判定できる。次に、メモリ管理装置は、要求された
命令をL2キャッシュ108、メイン・メモリ102、
または他のソースのいずれから取得するかを判定する。
要求された命令がメモリ管理装置222から使用できる
場合は、バス233でL1 Iキャッシュに、スレッド
・タグ・ビットと共に転送される。
【0072】バス233で要求された命令が返される
と、制御信号が生成され、データがディレクトリ・アレ
イ502と命令アレイ303に書込まれる。具体的に
は、対応するLFAddrレジスタ710、711から
のEA48:56は、アレイ502のエントリを選択す
るために使用される。LFAddrレジスタからのセッ
ト・ビットは、制御信号と共に、書込み信号ライン70
6、707の1つのアレイ502の半分に対して書込み
信号を生成するために使用され、セット・ビットの状態
は、アレイ502のどちらか半分に書込まれるか(つま
り、書込み信号ライン706、707のどちらがアクテ
ィブか)を決定する。LFAddrレジスタからの実ペ
ージ番号(RA24:51)は、セット・ビットで決定
されるアレイ502の半分の、EA48:51により選
択されるエントリに書込まれる。ディレクトリ・アレイ
のMRUビットは同時に更新される。
【0073】上の操作と並行して、LFAddrレジス
タからのEA48:56は、命令アレイ303のエント
リを選択するために用いられ、LFAddrレジスタか
らのセット・ビットは、同様に、アレイの半分に対する
書込み信号を生成するために用いられる。この場所に書
込まれるデータは、バス233からのデータ(一連の命
令)であり、図8に示すLFデータ・バス604に送ら
れる。ただし、命令アレイ303を埋める場合には、一
度に1つのサブラインしか書込めない。LFデータ・バ
ス604は、一度に1つのサブライン(32バイト)を
送る。完全なサブラインは、選択ロジック601により
LFAddrレジスタからのEA48:56と、シーケ
ンス・ロジック(図示せず)により与えられる2つのア
ドレス・ビット57、58を使って選択される。従っ
て、キャッシュ・ライン全体を埋めるには4回の書込み
サイクルが必要である。
【0074】更新された命令アレイ・エントリの実ペー
ジ番号がディレクトリ・アレイ502に書込まれると、
4つの有効ビット(各サブラインに1つ)が最初は無効
と設定される。連続したサブラインがそれぞれ命令アレ
イ303に書込まれるとき、ディレクトリ・アレイ50
2の対応する有効ビットが更新されてデータが有効にな
ったことが示される。上に述べたように連続した書込み
サイクルでのキャッシュ・ラインの書込みを、どのよう
な理由であれ解釈する必要がある場合、ディレクトリ・
アレイ502は正しい情報を含む。
【0075】ERATミスの場合、選択マルチプレクサ
402の実ページ番号出力は信頼性がない。他の何らか
の処理を行う前に、命令装置201からの有効アドレス
のページ番号部を、実ページ番号に変換する必要があ
る。ERAT_Missライン412は、図11に示し
たアドレス変換メカニズムをトリガする。実際にこの変
換を行うハードウェアは、Iキャッシュ106の一部で
はない。ハードウェアの一部はCPU201に組み込
め、他のハードウェアはメイン・メモリ102等に置け
る。このアドレス変換は、通常、先に述べたライン・フ
ィル操作よりも多くのサイクルを必要とする。ERAT
ミスに続いて、変換された実ページ番号が返されると、
これと並行して実ページ番号がERAT301の更新に
使用され、対応するLFAddrレジスタ(710また
は711)に書込まれ、ライン・フィル操作が開始され
る。その場合、理論上、要求された命令は、ERATミ
スにかかわらず既にキャッシュにあるが、これは充分に
希な事例とみなされ、ERATエントリの埋め込みを待
つのではなく、ライン・フィル操作をすぐに要求するこ
とでパフォーマンスが改良される。
【0076】本発明の理解に必要不可欠ではないロジッ
ク回路の図や説明は、ここでは便宜上省略してある。例
えば、アレイ502にMRUビットを維持するロジッ
ク、パリティ・エラーを検出して補正処置を取るロジッ
ク等は省略してある。
【0077】好適実施例では、キャッシュ・ヒットを確
認する目的で、ディレクトリ・アレイの実ページ番号と
比較するよう実アドレス(実ページ番号の一部)を提供
するためにERATが用いられる。この設計が望ましい
のは、ERATが実ページ番号への高速変換を行うから
である。高速変換は、基本的なアドレス変換メカニズム
の応答時間に依存しない。これにより、システム設計者
は一定の制約を免れる。つまり、Iキャッシュで1サイ
クルの応答時間をサポートするため必要な高速度でアド
レスを変換するための基本アドレス変換メカニズムは不
要になる。ただし、別の実施例では、ここで説明してい
る通り、ERATなしに命令キャッシュを構成すること
も可能である。その場合、ディレクトリ・アレイの実ペ
ージ番号と比較する実ページ番号を提供するために、基
本アドレス変換メカニズムが用いられる。また別の実施
例では、L1 Iキャッシュの内部または外部の別のメ
カニズムを使用して実ページ番号を提供することもでき
よう。
【0078】キャッシュ連想性の数は、好適実施例では
スレッド数と同じである。これは、共通のキャッシュに
対するスレッドの競合を避けるのに有益である。ただ
し、これに代えて、ここで述べているように、スレッド
数がキャッシュ連想性と同じではないキャッシュを設計
することも可能である。例えば、プロセッサによりサポ
ートされるスレッド数が多い場合、スレッド数と同じ程
度のキャッシュ連想性は、競合を避けるためには必ずし
も必要ない。その場合、理論上、連想性がスレッド数よ
りも少ないときに競合の可能性はあるが、その可能性は
充分に小さいと考えられるので、キャッシュ連想性を少
なくすることも許容範囲内である。更に、何らかの競合
の可能性はあるとしても、キャッシュ連想性を1として
も許容できる場合がある。
【0079】
【0080】
【図面の簡単な説明】
【図1】本発明の好適実施例に従った、CPUが1つの
コンピュータ・システムの主なハードウェア構成要素の
図である。
【図2】本発明の好適実施例に従った、CPUが複数の
コンピュータ・システムの主なハードウェア構成要素の
図である。
【図3】好適実施例に従ったコンピュータ・システムの
中央処理装置の図である。
【図4】好適実施例に従ったL1命令キャッシュの主な
構成要素の図である。
【図5】好適実施例に従った有効/実アドレス・テーブ
ルとこれに関連する制御構造の図である。
【図6】好適実施例に従った有効/実アドレス・テーブ
ルとこれに関連する制御構造の図である。
【図7】好適実施例に従ったL1命令キャッシュとこれ
に関連する制御構造の図である。
【図8】好適実施例に従ったL1命令キャッシュの命令
アレイとこれに関連する制御構造の図である。
【図9】好適実施例に従ってキャッシュ・ライン・フィ
ルを生成する主な制御ロジックの図である。
【図10】好適実施例に従ってキャッシュ・ライン・フ
ィルを生成する主な制御ロジックの図である。
【図11】好適実施例に従ったアドレス変換の図であ
る。
【符号の説明】
100 システム 101、101A、101B、101C、101D C
PU 102 メイン・メモリ 105 バス・インタフェース 106、106A、106B、106C、106D レ
ベル1命令キャッシュ(L1 Iキャッシュ) 107、107A、107B、107C、107D レ
ベル1データ・キャッシュ(L1 Dキャッシュ) 108、108A、108B、108C、108D レ
ベル2キャッシュ(L2キャッシュ) 109 メモリ・バス 110 システム・バス 111、112、113、114、115 I/O処理
装置(IOP) 201 命令ユニット 202 分岐ユニット 203 順次バッファ 204 切り換えバッファ 205 分岐バッファ 206 デコード/ディスパッチ・ユニット 211 実行ユニット 212 浮動小数点ユニット(FPU) 213 Sパイプ 214 Mパイプ 215 Rパイプ 216 浮動小数点レジスタ 217 汎用レジスタ 221 記憶制御装置 222 メモリ管理装置 223 L2キャッシュ・ディレクトリ 224 L2キャッシュ・インタフェース 225 メモリ・バス・インタフェース 232 L1 Iキャッシュ命令バス 233 キャッシュ・フィル・バス 301 有効/実アドレス・テーブル(ERAT) 302 Iキャッシュ・ディレクトリ・アレイ 303 Iキャッシュ命令アレイ 304、305、306 比較器 310 ERAT310 403 個別アレイ 404 個別レジスタ 405 ERATロジック 410 ERATヒット信号 411 保護例外信号 412 ERATミス信号 413 キャッシュ禁止信号 501、601 選択ロジック 502 66ビット×512アレイ 503 1ビット×512アレイ 505、602 セレクタ 510 Iキャッシュ・ヒット信号 511 セット選択ライン 604 キャッシュ書込みバス 801 有効アドレス 701 ライン・フィル開始ロジック 704、705 書込み信号 710、711 LFAddrレジスタ 720 セット・ロジック 802 仮想アドレス 803 実アドレス 814 仮想セグメントID 811 36ビットの有効セグメントID 812 16ビットのページ番号 813 12ビットのバイト・インデックス 814 52ビット仮想セグメントID 815 52ビット実ページ番号 821 セグメント・テーブル・メカニズム 822 ページ・テーブル・メカニズム
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 12/08 565 G06F 12/08 565 12/10 509 12/10 509Z (72)発明者 ロナルド・ニック・カーラ アメリカ合衆国55991、ミネソタ州ザン ブロ・フォールス、イースト・ライアン ズ・ベイ・ロード、ボックス 77エイ、 レイルロード 1 (72)発明者 ステファン・ジョセフ・シュワイン アメリカ合衆国55044、ミネソタ州レイ クビル、ジュビリー・ウェイ 17902− エイ (56)参考文献 特開 平3−216744(JP,A) 特開 平3−20847(JP,A) 特開 昭59−75483(JP,A) 特開 昭58−182180(JP,A) 特開 昭56−140575(JP,A) 特開 平6−161900(JP,A) 特開 平4−205636(JP,A) 特開 平3−235143(JP,A) 特開 平2−5173(JP,A) 特開 昭63−284648(JP,A) 特開 昭63−254544(JP,A) 特開 昭56−77965(JP,A) 特開 昭54−75938(JP,A) 特表 平6−502033(JP,A) 木村浩三、他5名,マルチスレッドプ ロセッサのデータキャッシュ制御方式, 映像情報メディア学会誌,日本,社団法 人映像情報メディア学会,1998年 5月 20日,第52巻,第5号,p.742−749 伊藤英治、他3名,関数型プログラム の実行に適したマルチスレッド型プロセ ッサ・アーキテクチャの提案,情報処理 学会研究報告,日本,社団法人情報処理 学会,1996年12月12日,第96巻,第121 号,(96−ARC−121),p.81−88 (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】マルチスレッドのコンピュータ処理装置で
    あって、 複数のスレッドの実行をサポートし、それぞれ該複数の
    スレッドのそれぞれに対応する複数のレジスタ・セット
    と、 命令をデコードするデコード・ロジックと、実行される
    命令の有効アドレスを生成するシーケンス・ロジックを
    含む命令装置と、 前記命令装置により生成される所望の有効アドレスに応
    答して命令を提供する、命令キャッシュとを含み、該命
    令キャッシュは、 a)複数のエントリがあり、それぞれ命令の実アドレス
    の一部を含み、前記所望の有効アドレスを使ってエント
    リが選択される、ディレクトリ・アレイと、 b)複数のエントリがあり、それぞれ前記ディレクトリ
    ・アレイのエントリに関連付けられ、少なくとも1つの
    命令を含み、前記ディレクトリ・アレイのエントリが前
    記所望の有効アドレスを使って選択される、命令アレイ
    と、 c)それぞれ前記複数のスレッドに対応し、命令キャッ
    シュ・ミスに応答して検索される所望の命令の実アドレ
    スの少なくとも一部を記憶する、複数のライン・フィル
    ・レジスタとを含む、マルチスレッド・コンピュータ処
    理装置。
  2. 【請求項2】前記命令キャッシュは、 d)複数のエントリを含み、各エントリが有効アドレス
    の一部と実アドレスの一部を含み、前記所望の有効アド
    レスを使ってエントリが選択される、有効/実アドレス
    変換アレイを含み、 前記ライン・フィル・レジスタに記憶される所望の命令
    の実アドレスの前記一部は、前記有効/実アドレス変換
    アレイのエントリから取得される、 請求項1記載のマルチスレッド・コンピュータ処理装
    置。
  3. 【請求項3】前記命令キャッシュは、 e)前記有効/実アドレス変換アレイのエントリからの
    有効アドレスの前記一部を、前記所望の有効アドレスの
    対応する一部と比較して、有効/実アドレス変換アレイ
    ・ヒットを判定する比較器を含む、 請求項2記載のマルチスレッド・コンピュータ処理装
    置。
  4. 【請求項4】前記ディレクトリ・アレイはNセット(N
    >1)に分けられ、前記ディレクトリ・アレイ・エント
    リはそれぞれ、命令の複数の実アドレスの一部を含み、
    該実アドレス部はそれぞれ、前記ディレクトリ・アレイ
    の該Nセットのうち対応するセットに属し、 前記命令アレイはNセットに分けられ、各セットは前記
    ディレクトリ・アレイのセットに対応し、前記命令アレ
    イ・エントリはそれぞれ複数の命令を含み、各命令は
    れぞれ前記命令アレイの該Nセットのうち対応するセッ
    に属する、 請求項1記載のマルチスレッド・コンピュータ処理装
    置。
  5. 【請求項5】前記マルチスレッド・コンピュータ処理装
    置はNスレッドの実行をサポートする、請求項4記載の
    マルチスレッド・コンピュータ処理装置。
  6. 【請求項6】前記ライン・フィル・レジスタはそれぞれ
    セット・フィールドを含み、該セット・フィールドは、
    検索される所望の命令が検索後に記憶される前記Nセッ
    トのうちのセットを指定する、請求項4記載のマルチス
    レッド・コンピュータ処理装置。
  7. 【請求項7】前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
    付けられ、前記ディレクトリ・アレイの選択されたエン
    トリの関連付けられた部分からの命令の実アドレスの前
    一部を、前記所望の有効アドレスに関連付けられた実
    アドレスの対応する一部と比較して、キャッシュ・ヒッ
    トを判定する、N個の比較器を含む、 請求項4記載のマルチスレッド・コンピュータ処理装
    置。
  8. 【請求項8】前記命令キャッシュは、 d)複数のエントリがあり、各エントリは、有効アドレ
    スの一部と実アドレスの一部を含み、前記所望の有効ア
    ドレスを使ってエントリが選択される、有効/実アドレ
    ス変換アレイを含み、 前記ライン・フィル・レジスタに記憶された所望の命令
    の実アドレスの前記少なくとも一部が、前記有効/実ア
    ドレス変換アレイのエントリから取得される、請求項4
    記載のマルチスレッド・コンピュータ処理装置。
  9. 【請求項9】前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
    付けられ、前記ディレクトリ・アレイの選択されたエン
    トリの関連付けられた部分からの命令の実アドレスの前
    一部を、前記所望の有効アドレスに関連付けられた実
    アドレスの対応する一部と比較して、キャッシュ・ヒッ
    トを判定し、キャッシュ・ヒットを判定するために比較
    される前記所望の有効アドレスに関連付けられた実アド
    レスの前記対応する一部は、前記有効/実アドレス変換
    アレイのエントリから取得される、N個の比較器を含
    む、 請求項8記載のマルチスレッド・コンピュータ処理装
    置。
JP2000062593A 1999-03-10 2000-03-07 マルチスレッド・プロセッサの命令キャッシュ Expired - Fee Related JP3431878B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/266133 1999-03-10
US09/266,133 US6161166A (en) 1997-11-10 1999-03-10 Instruction cache for multithreaded processor

Publications (2)

Publication Number Publication Date
JP2000259498A JP2000259498A (ja) 2000-09-22
JP3431878B2 true JP3431878B2 (ja) 2003-07-28

Family

ID=23013309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000062593A Expired - Fee Related JP3431878B2 (ja) 1999-03-10 2000-03-07 マルチスレッド・プロセッサの命令キャッシュ

Country Status (2)

Country Link
JP (1) JP3431878B2 (ja)
CN (1) CN1168025C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011065492A1 (ja) * 2009-11-26 2011-06-03 日本電気株式会社 排他制御装置、方法及びプログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
JP3900025B2 (ja) 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
US20050071564A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Reduction of cache miss rates using shared private caches
US7136967B2 (en) * 2003-12-09 2006-11-14 International Business Machinces Corporation Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
CN100426260C (zh) * 2005-12-23 2008-10-15 中国科学院计算技术研究所 利用路预测技术的多线程处理器的取指方法及系统
WO2009107462A1 (ja) 2008-02-26 2009-09-03 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
CN102057359A (zh) * 2009-04-10 2011-05-11 松下电器产业株式会社 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5475938A (en) * 1977-11-30 1979-06-18 Fujitsu Ltd Data processor of multiplex artificial memory system
JPS5677965A (en) * 1979-11-26 1981-06-26 Fujitsu Ltd Buffer memory control system
US4332010A (en) * 1980-03-17 1982-05-25 International Business Machines Corporation Cache synonym detection and handling mechanism
JPS58182180A (ja) * 1982-04-16 1983-10-25 Hitachi Ltd バツフア記憶装置
JPS5975483A (ja) * 1982-10-22 1984-04-28 Fujitsu Ltd バツフア・ストレ−ジ制御方式
JPH06100987B2 (ja) * 1987-04-10 1994-12-12 日本電信電話株式会社 アドレス変換制御方法
JPS63284648A (ja) * 1987-05-18 1988-11-21 Fujitsu Ltd キャッシュメモリ制御方法
EP0325384B1 (en) * 1988-01-15 1993-09-29 Quantel Limited Data processing and communication
JPH0320847A (ja) * 1989-06-19 1991-01-29 Fujitsu Ltd キャッシュメモリ制御方式
JPH03216744A (ja) * 1990-01-22 1991-09-24 Fujitsu Ltd 内蔵キャッシュ・メモリ制御方式
JPH03235143A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
DE69106384T2 (de) * 1990-10-19 1995-08-10 Cray Research Inc Skalierbares parallel-vektorrechnersystem.
JPH04205636A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 高速アドレス変換装置
JP3100807B2 (ja) * 1992-09-24 2000-10-23 松下電器産業株式会社 キャッシュメモリ装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
伊藤英治、他3名,関数型プログラムの実行に適したマルチスレッド型プロセッサ・アーキテクチャの提案,情報処理学会研究報告,日本,社団法人情報処理学会,1996年12月12日,第96巻,第121号,(96−ARC−121),p.81−88
木村浩三、他5名,マルチスレッドプロセッサのデータキャッシュ制御方式,映像情報メディア学会誌,日本,社団法人映像情報メディア学会,1998年 5月20日,第52巻,第5号,p.742−749

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011065492A1 (ja) * 2009-11-26 2011-06-03 日本電気株式会社 排他制御装置、方法及びプログラム

Also Published As

Publication number Publication date
CN1168025C (zh) 2004-09-22
CN1267024A (zh) 2000-09-20
JP2000259498A (ja) 2000-09-22

Similar Documents

Publication Publication Date Title
US6161166A (en) Instruction cache for multithreaded processor
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US5623627A (en) Computer memory architecture including a replacement cache
US7415575B1 (en) Shared cache with client-specific replacement policy
US6138209A (en) Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US5526510A (en) Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US6138208A (en) Multiple level cache memory with overlapped L1 and L2 memory access
US5715427A (en) Semi-associative cache with MRU/LRU replacement
JP4065660B2 (ja) 機能が並列に分散された変換索引バッファ
US20020099913A1 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
KR20010101695A (ko) 가상 메모리 시스템에서의 메모리 접근 개선 기술
JPH08272682A (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
WO1993012484A1 (en) A cache memory hierarchy that reduces power consumption by reducing accesses to main memory
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
JP3262519B2 (ja) 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム
JP3431878B2 (ja) マルチスレッド・プロセッサの命令キャッシュ
JP3245125B2 (ja) 垂直キャッシュのための擬似精細i−キャッシュ包含性
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US5926841A (en) Segment descriptor cache for a processor
US6338128B1 (en) System and method for invalidating an entry in a translation unit
WO1997034229A9 (en) Segment descriptor cache for a processor
US5905999A (en) Cache sub-array arbitration
US20100306475A1 (en) Data cache with modified bit array

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080523

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080523

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090523

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100523

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130523

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20140523

Year of fee payment: 11

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees