[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2000259498A - Instruction cache for multi-thread processor - Google Patents

Instruction cache for multi-thread processor

Info

Publication number
JP2000259498A
JP2000259498A JP2000062593A JP2000062593A JP2000259498A JP 2000259498 A JP2000259498 A JP 2000259498A JP 2000062593 A JP2000062593 A JP 2000062593A JP 2000062593 A JP2000062593 A JP 2000062593A JP 2000259498 A JP2000259498 A JP 2000259498A
Authority
JP
Japan
Prior art keywords
instruction
cache
address
array
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.)
Granted
Application number
JP2000062593A
Other languages
Japanese (ja)
Other versions
JP3431878B2 (en
Inventor
William Doing Richard
リチャード・ウィリアム・ドゥーイング
Nick Carla Ronald
ロナルド・ニック・カーラ
Joseph Schwein Stephen
ステファン・ジョセフ・シュワイン
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/en
Application granted granted Critical
Publication of JP3431878B2 publication Critical patent/JP3431878B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

PROBLEM TO BE SOLVED: To reduce competitions between different threads by storing at least one part of a real address in the desired instruction to be retrieved in response to an instruction cache error corresponding to respective plural threads. SOLUTION: A CPU 101 for processing an instruction is provided with independent internal level 1 instruction cache 106 (L1I cache) and level 1 data cache 107 (L1D cache). The L1I cache 106 is composed of a directory array and an array of cached instructions and both the arrays are shared by all the threads and accessed by composing a hash function of the effective address of the desired instruction. Each entry of the directory array stores at least one part of the read address of a correspondent cache line in the array of cached instructions. Namely, at least one part of the read address in the desired instruction to be retrieved is stored in response to the instruction cache error corresponding to plural threads.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、一般的にはデジタ
ル・データ処理に関し、特にデジタル・コンピュータ・
システムの処理装置に命令を提供する命令キャッシュに
関する。
FIELD OF THE INVENTION The present invention relates generally to digital data processing, and more particularly to digital computer processing.
The present invention relates to an instruction cache for providing an instruction to a processing unit of a system.

【0002】[0002]

【従来の技術】通常、現在のコンピュータ・システム
は、中央処理装置(CPU)と、通信バスやメモリ等、
情報の保存、検索、転送に必要なハードウェアを含む。
また、入出力コントローラ、または記憶装置コントロー
ラ等、外部との通信に必要なハードウェアや、それらに
接続されるキーボード、モニタ、テープ・ドライブ、デ
ィスク・ドライブ、ネットワークに接続される通信ライ
ン等の装置も含まれる。システムの中心はCPUであ
る。CPUは、コンピュータ・プログラムを構成する命
令を実行し、他のシステム要素の操作を指示する。
2. Description of the Related Art Today's computer systems typically include a central processing unit (CPU) and a communication bus and memory.
Includes hardware needed to store, retrieve, and transfer information.
Also, hardware necessary for external communication, such as an input / output controller or a storage device controller, and devices such as a keyboard, a monitor, a tape drive, a disk drive, and a communication line connected to a network connected thereto. Is also included. The heart of the system is the CPU. The CPU executes instructions constituting the computer program and instructs operation of other system elements.

【0003】コンピュータのハードウェアの観点から
は、ほとんどのシステムは基本的には同じように動作す
る。プロセッサは、算術、論理比較、データ移動等、一
定の単純な操作を実行できる。ただし各操作は極めて高
速に実行される。こらら単純な操作を多量に実行するこ
とをコンピュータに指示するプログラムがあるため、コ
ンピュータは何か高度なことを実行しているといった幻
想が生じる。コンピュータ・システムの新しい機能や機
能の向上とユーザが認めるものは、基本的には同じ単純
な操作であっても、より高速に実行することによって実
現される。従って、コンピュータ・システムの改良を続
けるには、そうしたシステムを更に高速にする必要があ
る。
[0003] From a computer hardware perspective, most systems behave essentially the same. Processors can perform certain simple operations, such as arithmetic, logical comparisons, and data movement. However, each operation is performed extremely fast. Because there are programs that instruct the computer to perform a lot of these simple operations, the illusion that the computer is doing something sophisticated is created. What a user perceives as a new function or an improvement in a computer system is realized by executing the same simple operation at a higher speed. Therefore, as computer systems continue to improve, they need to be faster.

【0004】コンピュータ・システム全体の速度("ス
ループット"ともいう)は、おおよそ単位時間に実行さ
れる操作の回数で測られる。概念上、考えられる限りの
改良の中で最も単純な改良は、様々な構成要素のクロッ
ク速度を上げることであり、特にプロセッサのクロック
速度を上げることである。例えば、全て2倍速く動作
し、他の点では全く同じように機能する場合、そのシス
テムは、あるタスクを半分の時間で実行することにな
る。初期のコンピュータ・プロセッサは、多くの個別要
素から構成されていて、構成要素を小型化し、要素数を
減らし、最終的にはプロセッサ全体を1つのチップ上の
集積回路とすることで、かなりの高速化が可能になっ
た。小型化によりプロセッサのクロック速度を上げるこ
とができ、その結果、システムが高速になった。
[0004] The speed (also called "throughput") of an entire computer system is roughly measured by the number of operations performed per unit time. Conceptually, the simplest of the possible improvements is to increase the clock speed of various components, in particular to increase the clock speed of the processor. For example, if they all run twice as fast and otherwise function exactly the same, the system will perform some tasks in half the time. Early computer processors consisted of a number of discrete components, resulting in significantly faster speeds by miniaturizing components, reducing the number of components, and ultimately making the entire processor an integrated circuit on a single chip. Has become possible. The miniaturization allowed the processor clock speed to increase, resulting in a faster system.

【0005】集積回路により大幅な高速化が実現したに
もかかわらず、より高速なコンピュータ・システムに対
する需要は絶えることがない。ハードウェアの設計者
は、集積度を上げる(つまり1つのチップに集積する回
路数を増やす)、回路を更に小型化する等、様々な手法
により速度を更に改良しているが、物理的な小型化を無
制限に続けることができないことはわかっており、プロ
セッサのクロック速度を上げ続ける能力にも限度があ
る。そのような背景から、コンピュータ・システム全体
の速度を上げる他のアプローチに関心が集まっている。
[0005] Despite the significant speed gains achieved with integrated circuits, there is an ever-increasing demand for faster computer systems. Hardware designers have further improved the speed by various techniques, such as increasing the degree of integration (that is, increasing the number of circuits integrated on a single chip) and further miniaturizing the circuit. We know that we cannot keep going indefinitely, and there is a limit to the processor's ability to keep increasing the clock speed. Against this background, there is interest in other approaches to speeding up the overall computer system.

【0006】クロック速度を変えずに、システムのスル
ープットを改良することは、複数のプロセッサを使用す
れば可能である。集積回路チップに組み込まれる個々の
プロセッサのコストは高くないので、これは現実的な方
法である。複数のプロセッサを使用する潜在的なメリッ
トは確かにあるが、アーキテクチャ上の問題が生じる。
こうした問題を細かく調べるのでなければ、複数のCP
Uを使用するか1つのCPUにするかにかかわらず、個
々のCPUの速度を改良する理由は未だに数多くあるこ
とがわかる。CPUのクロック速度が一定の場合、個々
のCPUの速度を更に上げる、つまり1秒間に実行され
る操作の回数を増やすことは、1クロック・サイクル当
たりの操作の平均回数を増やすことによって可能であ
る。
[0006] Improving system throughput without changing the clock speed is possible using multiple processors. This is a practical method since the cost of the individual processors integrated into the integrated circuit chip is not high. While the potential benefits of using multiple processors are true, they do introduce architectural issues.
If you don't look into these issues,
It turns out that there are still many reasons to improve the speed of individual CPUs, whether using U or one CPU. Given a constant CPU clock speed, it is possible to further increase the speed of individual CPUs, that is, to increase the number of operations performed per second, by increasing the average number of operations per clock cycle. .

【0007】CPU速度を上げるために、高性能プロセ
ッサを設計する際によく行われることは、命令のパイプ
ライン化、及びキャッシュ・メモリのレベルの採用であ
る。パイプライン命令が実行されると、前に発行された
命令が終了する前に後続の命令の実行を開始できる。キ
ャッシュ・メモリは、頻繁に使用されるデータや他のデ
ータをプロセッサの近くに記憶し、命令の実行をほとん
どの場合、メイン・メモリのフル・アクセス時間を待つ
ことなく継続できる。
[0007] When designing high performance processors to increase CPU speed, it is common to employ instruction pipelining and the use of cache memory levels. When a pipeline instruction is executed, execution of a subsequent instruction can begin before the previously issued instruction ends. A cache memory stores frequently used data and other data close to the processor and can continue executing instructions in most cases without waiting for full access time of main memory.

【0008】パイプラインは特定の状況下では機能しな
くなる。前にディスパッチされた命令の結果に依存する
命令で、まだ完了していない命令はパイプラインが機能
を停止する原因になることがある。例えば、必要なデー
タがキャッシュにない(つまりキャッシュ・ミス)ロー
ド/ストア命令に依存する命令は、データがキャッシュ
から使用できるようになるまで実行できない。必要なデ
ータを実行を続けるために必要なキャッシュに維持し、
高いヒット率、つまりデータ・リクエスト数に対してデ
ータをキャッシュからすぐ使用できる回数、は、特に大
きいデータ構造が関係する計算では無視できない。キャ
ッシュ・ミスが起こると、パイプラインが数サイクルの
間停止することがある。そのとき、データがほとんどの
時間使用できない場合、メモリ遅延の合計は大きな問題
になる。メイン・メモリに使用されるメモリ装置は高速
になっているが、そのようなメモリ・チップとハイエン
ド・プロセッサの間の速度ギャップはますます大きくな
っている。そのため、現在設計されているハイエンド・
プロセッサのかなりの実行時間が、キャッシュ・ミスの
解決を待つ時間として費やされている。
[0008] The pipeline fails under certain circumstances. An instruction that depends on the result of a previously dispatched instruction but has not yet completed may cause the pipeline to stop functioning. For example, an instruction that relies on a load / store instruction for which the required data is not in the cache (ie, a cache miss) cannot be executed until the data is available from the cache. Keep the data you need in the cache needed to keep it running,
The high hit ratio, the number of times data is readily available from the cache for the number of data requests, cannot be ignored, especially in calculations involving large data structures. When a cache miss occurs, the pipeline may stall for several cycles. Then, if the data is not available most of the time, the total memory delay becomes a major problem. Although memory devices used for main memory are becoming faster, the speed gap between such memory chips and high-end processors is becoming larger. Therefore, the high-end
Considerable execution time of the processor is spent waiting for cache miss resolution.

【0009】プロセッサが何らかのイベントを待つ時
間、例えばパイプラインのリフィルやメモリからのデー
タ検索の時間を少なくすると、1クロック・サイクル当
たりの平均操作回数が増えることがわかる。この問題を
扱うアーキテクチャ上のイノベーションとして"マルチ
スレッド"処理がある。この手法では、作業負荷がスレ
ッドと呼ばれる独立した複数の実行可能な命令シーケン
スに分けられる。CPUは、どの瞬間でも、複数のスレ
ッドの状態を維持する。その結果、スレッドを切り替え
ることは比較的簡単であり高速に行われる。
It can be seen that reducing the amount of time the processor waits for some event, such as refilling the pipeline or retrieving data from memory, increases the average number of operations per clock cycle. An architectural innovation that addresses this problem is "multi-threaded" processing. In this approach, the workload is divided into a plurality of independent executable instruction sequences called threads. The CPU maintains the state of the threads at any moment. As a result, switching threads is relatively simple and fast.

【0010】"マルチスレッド"という用語は、コンピュ
ータ・アーキテクチャの分野では、ソフトウェアの分野
の定義とは異なり、ソフトウェア分野では、1つのタス
クを、関連する複数のスレッドに更に細分することをい
う。アーキテクチャ上の定義では、スレッドは独立でも
よい。その2つの定義を区別するために"ハードウェア
・マルチスレッド"という用語もよく用いられる。ここ
では、ハードウェア・マルチスレッドの意味で"マルチ
スレッド"という用語を用いる。
[0010] The term "multithreading" differs from the definition of software in the field of computer architecture and refers to the subdivision of a task into multiple related threads in the software domain. Architecturally, threads may be independent. The term "hardware multithreading" is often used to distinguish between the two definitions. Here, the term "multithread" is used to mean hardware multithread.

【0011】マルチスレッドの基本的な形式は2つあ
る。従来型の形式は"ファイン・グレイン・マルチスレ
ッド"ともいい、プロセッサがN個のスレッドを並列に
実行するために実行をサイクル・ベースでインタリーブ
する。これにより、1つのスレッド内での各命令の実行
にギャップが生じるので、命令パイプラインのリフィル
等、プロセッサが短い遅延イベントを待機する必要がな
くなる。もう1つのマルチスレッドは、"コース・グレ
イン・マルチスレッド"ともいい、キャッシュ・ミス
等、比較的長い遅延イベントがプロセッサにより検出さ
れるまで、1つのスレッドで複数の命令が順に実行され
る。
There are two basic forms of multithreading. The traditional form is also referred to as "fine grain multithreading," in which processors interleave execution on a cycle basis to execute N threads in parallel. This creates a gap in the execution of each instruction in one thread, eliminating the need for the processor to wait for short delay events, such as refilling the instruction pipeline. Another multi-thread is also referred to as "coarse-grain multi-threading," in which multiple instructions are executed sequentially in one thread until a relatively long delay event, such as a cache miss, is detected by the processor.

【0012】通常、マルチスレッドでは、複数のスレッ
ドの状態を維持するために、スレッド毎にプロセッサ・
レジスタが複製される。例えば、PowerPC(商標)とし
て販売されているアーキテクチャを実装したプロセッサ
がマルチスレッドを実現する場合、プロセッサはN個の
スレッドを実行するためにN個の状態を維持する必要が
ある。従って、汎用レジスタ、浮動小数点レジスタ、条
件レジスタ、浮動小数点ステータス/制御レジスタ、カ
ウント・レジスタ、リンク・レジスタ、例外レジスタ、
保存/復元レジスタ、及び専用レジスタはN回複製され
る。また、セグメント・ルックアサイド・バッファなど
の特殊なバッファが複製されるか、各エントリにスレッ
ド番号のタグが付けられることがあり、タグが付けられ
ない場合は、スレッドの切り替え毎にフラッシュする必
要がある。また、相関レジスタ、戻りスタック等の分岐
予測メカニズムも複製する必要がある。
Normally, in a multithread, in order to maintain a state of a plurality of threads, a processor
Registers are duplicated. For example, when a processor implementing an architecture sold as PowerPC (trademark) implements multi-threading, the processor needs to maintain N states to execute N threads. Thus, general purpose registers, floating point registers, condition registers, floating point status / control registers, count registers, link registers, exception registers,
The save / restore registers and dedicated registers are duplicated N times. Also, special buffers, such as segment lookaside buffers, may be duplicated, or each entry may be tagged with a thread number; otherwise, flushing must be performed on each thread switch. is there. It is also necessary to duplicate branch prediction mechanisms such as correlation registers and return stacks.

【0013】普通、レベル1命令キャッシュ、レベル1
データ・キャッシュ、機能ユニット、実行ユニット等、
比較的大きいハードウェア構造は複製されない。他は全
て同じで比較的大きいハードウェア構造を複製すること
には、パフォーマンス上多少とも段階的、増分的なメリ
ットがあろう。ただし、そのようなアプローチでは、こ
うした増分的なメリットと所要ハードウェアを秤にかけ
る必要がある。キャッシュは、他の用途に充てることも
できるプロセッサ・チップ上のかなりの領域を消費す
る。従って、キャッシュのサイズ、及びキャッシュの数
と機能を慎重に選択する必要がある。
Normally, level 1 instruction cache, level 1
Data cache, functional unit, execution unit, etc.
Relatively large hardware structures are not duplicated. Duplicating a relatively large hardware structure that is otherwise the same may have some incremental or incremental performance benefits. However, such an approach requires weighing these incremental benefits and the required hardware. The cache consumes a significant amount of space on the processor chip that can be devoted to other uses. Therefore, the size of the cache and the number and function of the caches must be carefully selected.

【0014】高性能設計の場合、プロセッサ・チップに
はレベル1命令キャッシュ(L1Iキャッシュ)がよく
採用される。L1 Iキャッシュは、比較的短時間のう
ちに実行される可能性があるとみなされる命令を保持す
るためのキャッシュである。
For high performance designs, processor chips often employ a level one instruction cache (L1I cache). The L1 I-cache is a cache for holding instructions that are considered to be executed in a relatively short time.

【0015】L1 Iキャッシュがマルチスレッドのプ
ロセッサに用いられると、また別の問題が生じる。Iキ
ャッシュは、高速なスレッド切り替えをスレッド間の過
度の競合なしにサポートする必要がある。競合を避ける
方法として、スレッド毎に個別のIキャッシュが使用さ
れるが、その場合は、貴重なハードウェアが消費される
か、1つのスレッドに対する個々のキャッシュが過度に
小さくなる。スレッド間で過度の競合が発生することな
く、1つのL1 Iキャッシュを全てのスレッドが共有
するのが望ましい。また、キャッシュ・アクセス・メカ
ニズムにより、低速なアドレス変換メカニズムは可能な
限り使用しない方が都合が良い。
Another problem arises when the L1 I-cache is used in a multi-threaded processor. The I-cache needs to support fast thread switching without excessive contention between threads. A way to avoid contention is to use a separate I-cache for each thread, which either consumes valuable hardware or makes the individual cache for one thread too small. It is desirable that all threads share a single L1 ICache without excessive contention between threads. Further, it is more convenient not to use a low-speed address translation mechanism as much as possible due to the cache access mechanism.

【0016】L1 Iキャッシュの設計は、プロセッサ
の高速動作にとって大きな課題である。Iキャッシュの
ミス率が高い場合、アクセスが遅すぎる場合、別々のス
レッド間で競合が過度に発生する場合、またはキャッシ
ュのコヒーレンシを維持するのが困難な場合、プロセッ
サは、次の命令の実行を待つ時間を過度に費やすことに
なる。プロセッサの改良を継続するには、L1 Iキャ
ッシュがこうした課題に、特にマルチスレッド環境での
課題に効率よく応える必要がある。
The design of the L1 I-cache is a major challenge for high speed operation of the processor. If the I-cache miss rate is high, access is too slow, contention between separate threads is excessive, or it is difficult to maintain cache coherency, the processor will stop executing the next instruction. You will spend too much time waiting. To continue improving the processor, the L1 I-cache must efficiently meet these challenges, especially in multi-threaded environments.

【0017】[0017]

【発明が解決しようとする課題】本発明の目的は、改良
されたプロセッサ装置を提供することである。
SUMMARY OF THE INVENTION It is an object of the present invention to provide an improved processor device.

【0018】本発明の他の目的は、マルチスレッド・プ
ロセッサに用いられる改良された命令キャッシュ装置を
提供することである。
It is another object of the present invention to provide an improved instruction cache for use in a multi-threaded processor.

【0019】本発明の他の目的は、命令キャッシュにア
クセスするマルチスレッド・プロセッサのスレッド間の
競合を少なくすることである。
Another object of the present invention is to reduce contention between threads of a multi-threaded processor accessing an instruction cache.

【0020】[0020]

【課題を解決するための手段】マルチスレッド・プロセ
ッサは、全てのスレッドに共有されるレベル1命令キャ
ッシュ(L1 Iキャッシュ)を含む。L1 Iキャッ
シュは、ディレクトリ・アレイ及びキャッシュ済み命令
のアレイで構成され、アレイは、両方とも全てのスレッ
ドに共有され、所望の命令の有効アドレスからハッシュ
関数を構成することによりアクセスされる。ディレクト
リ・アレイの各エントリは、キャッシュ済み命令のアレ
イの対応するキャッシュ・ラインの実アドレスの少なく
とも一部を記憶する。そこから、キャッシュ内の命令の
完全な実アドレスを導くことができる。スレッド毎に独
立したライン・フィル・シーケンサが存在するので、1
つのスレッドのキャッシュ・ライン・フィル・リクエス
トを満足しながら、別のスレッドがキャッシュ・エント
リにアクセスでき、或いは実行中のスレッドに対してラ
インをプリフェッチできるようになる。
SUMMARY OF THE INVENTION A multithreaded processor includes a level one instruction cache (L1 I-cache) that is shared by all threads. The L1 I-cache consists of a directory array and an array of cached instructions, both shared by all threads and accessed by constructing a hash function from the effective addresses of the desired instructions. Each entry in the directory array stores at least a portion of the real address of a corresponding cache line in the array of cached instructions. From there, the full real address of the instruction in the cache can be derived. Since there is an independent line fill sequencer for each thread,
While satisfying the cache line fill request of one thread, another thread can access the cache entry or prefetch the line for the executing thread.

【0021】好適実施例の場合、これらのアレイは複数
のセットに分けられ、セットはそれぞれ1つのエントリ
がハッシュ関数の各値に対応する(Nウェイ連想キャッ
シュ)。この例のプロセッサは、2つの独立したスレッ
ドの状態情報を維持し、命令キャッシュ・アレイは2つ
のセットに分けられる。ただし、スレッドとキャッシュ
連想性の数は変えてもよい。各スレッドが、ハッシュ値
は同じでも属するセットが異なるキャッシュ済み命令に
独立にアクセスできるので、異なるスレッド間の競合が
少なくなる。
In the preferred embodiment, the arrays are divided into sets, each set having one entry corresponding to each value of the hash function (N-way associative cache). The processor in this example maintains state information for two independent threads, and the instruction cache array is divided into two sets. However, the number of threads and cache associativity may vary. Each thread has independent access to cached instructions with the same hash value but different sets but less contention between different threads.

【0022】Iキャッシュは、好適には、メイン・メモ
リのアドレス変換テーブルのキャッシュとして機能する
有効/実アドレス・テーブル(EffectiveーtoーReal Addr
essTable、ERAT)を含む。ERATは、有効アドレ
ス部とこれに対応する実アドレス部のペアを含む。ER
ATのエントリは、所望の命令の有効アドレスのハッシ
ュ関数でアクセスされる。ERATエントリの有効アド
レス部は、次に、所望の命令の有効アドレスと比較さ
れ、ERATヒットが確認される。対応する実アドレス
部は、ディレクトリ・アレイの実アドレス部と比較さ
れ、キャッシュ・ヒットが確認される。
The I-cache is preferably an effective / real address table (Effective-to-Real Addr) which functions as a cache of an address translation table of the main memory.
essTable, ERAT). The ERAT includes a pair of an effective address part and a corresponding real address part. ER
The AT entry is accessed with a hash function of the effective address of the desired instruction. The effective address portion of the ERAT entry is then compared with the effective address of the desired instruction to confirm an ERAT hit. The corresponding real address portion is compared with the real address portion of the directory array to confirm a cache hit.

【0023】ライン・フィル・シーケンサは、好適に
は、キャッシュ・ミスに応答して動作する。その際、要
求された有効アドレスのERATエントリが存在する
(ERATヒット)。その場合、ERATの有効アドレ
スと情報から所望の命令の完全実アドレスを構成できる
ので、メイン・メモリの低速なアドレス変換メカニズム
にアクセスする必要はなくなる。ライン・フィル・シー
ケンサは、構成された実アドレスを使ってメモリに直接
アクセスする。
The line fill sequencer preferably operates in response to a cache miss. At that time, there is an ERAT entry of the requested effective address (ERAT hit). In that case, the full real address of the desired instruction can be constructed from the effective address of the ERAT and the information, eliminating the need to access the slow address translation mechanism of the main memory. The line fill sequencer accesses the memory directly using the configured real address.

【0024】スレッド毎に独立したライン・フィル・シ
ーケンサがあるので、スレッドは互いに待機することな
く、キャッシュ・フィル・リクエストを独立に満足する
ことができる。また、Iキャッシュのインデックスは、
エントリに対応する実ページ番号を記憶するので、キャ
ッシュのコヒーレンシが簡素化される。更に、ERAT
を使用して有効ページ番号と実ページ番号を関連付ける
と、多くの場合、低速なメモリ変換メカニズムにアクセ
スする必要がなくなる。そして、キャッシュのNウェイ
連想性により、全てのスレッドが、スレッドの過度の競
合なしに共通のキャッシュを使用できる。
Since there is an independent line fill sequencer for each thread, the threads can independently satisfy cache fill requests without waiting for each other. Also, the I-cache index is
Since the real page number corresponding to the entry is stored, cache coherency is simplified. In addition, ERAT
Using to associate valid and real page numbers often eliminates the need to access slow memory translation mechanisms. And the N-way associativity of the cache allows all threads to use a common cache without excessive thread contention.

【0025】[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装置との通信をサポートす
る。
FIG. 1 illustrates the main hardware components of a single CPU computer system 100 employing an instruction cache architecture, according to a preferred embodiment of the present invention. The CPU 101 that processes the instruction
Independent internal level 1 instruction cache 106 (L1 I
Cache) and level 1 data cache 107 (L
1D cache). L1 I-cache 106
Stores an instruction executed by the CPU 101. L
The 1D cache is processed by the CPU 101.
Stores data other than instructions. CPU 101 is level 2
Connected to the cache (L2 cache) 108,
The cache 108 is used to hold both instructions and data. The memory bus 109 is connected to one L2 cache 108 or CPU 101 and the other main bus.
Data is transferred between the memories 102. CPU 101,
The L2 cache 108 and the main memory 102 also communicate with the system bus 110 via the bus interface 105. Various I / O processing units (IOP)
111 to 115 are connected to the system bus 110,
It supports communication with a variety of storage and I / O devices, such as direct access storage devices (DASD), tape drives, workstations, printers, remote communication lines that communicate with remote devices and other computer systems.

【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に関連付けられる。
FIG. 1 conceptually shows the main components of the system 100, and the number and types of such components are not necessarily constant. In particular, multiple CPUs can be used in system 100. Such a multi-CPU system is shown in FIG. The system of FIG. 2 has four CPUs,
101A, 101B, 101C, 101D, and CP
U, L1 I-caches 106A, 106B,
106C, 106D, and L1 D cache 107
A, 107B, 107C and 107D. In addition, independent L2 caches 108A, 108B, 108C, 1
08D is associated with each CPU.

【0027】好適実施例では、各CPUが2つのスレッ
ドの状態を維持することができ、ある遅延イベントで実
行をスレッド間で切り替える。つまり、CPUは1つの
スレッド(アクティブ・スレッド)を、CPUが待機せ
ざるを得ないような何らかの遅延イベントが検出される
まで実行する(コース・グレイン・マルチスレッドの1
形態)。ただし、本発明は、各CPUのスレッド状態の
数を変えて実施でき、また、各スレッドからの命令の実
行をサイクル・ベースでインタリーブする(ファイン・
グレイン・マルチスレッド)か、他の基準によりスレッ
ドを切り替えることも可能である。
In the preferred embodiment, each CPU can maintain the state of two threads, and switches execution between threads at some delay event. In other words, the CPU executes one thread (the active thread) until some delay event that the CPU has to wait for is detected (coarse grain multi-thread 1).
Form). However, the present invention can be implemented by changing the number of thread states of each CPU, and interleave the execution of instructions from each thread on a cycle basis (fine
It is also possible to switch the thread according to (grain / multithread) or other criteria.

【0028】図3は、CPU101の主な構成要素の図
である。CPU101は、好適実施例に従って、図1乃
至図3よりも詳しく示してある。この例で、図3の構成
要素は、1つの半導体チップに集積される。CPU10
1は、命令ユニット部201、実行ユニット部211、
及び記憶制御部221を含む。一般に、命令ユニット2
01はL1 Iキャッシュ106から命令を取得し、命
令をデコードして実行する操作を決定し、分岐条件を判
別してプログラムの流れを制御する。実行ユニット21
1は、レジスタのデータに対して算術演算や論理演算を
行い、データをロードまたは記憶する。記憶制御装置2
21は、L1データ・キャッシュのデータにアクセスす
るか、または命令やデータをフェッチまたは記憶する必
要のあるCPUの外部のメモリまたはインタフェースを
とる。
FIG. 3 is a diagram of the main components of the CPU 101. CPU 101 is shown in more detail than in FIGS. 1-3, according to a preferred embodiment. In this example, the components of FIG. 3 are integrated on one semiconductor chip. CPU10
1 is an instruction unit 201, an execution unit 211,
And a storage control unit 221. Generally, instruction unit 2
01 obtains an instruction from the L1 I-cache 106, determines an operation to decode and execute the instruction, determines a branch condition, and controls the flow of the program. Execution unit 21
1 performs an arithmetic operation or a logical operation on the data in the register, and loads or stores the data. Storage control device 2
21 accesses the data in the L1 data cache or takes a memory or interface external to the CPU that needs to fetch or store instructions and data.

【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からバッファをリフィル
する。
The instruction unit 201 includes the branch unit 20
2, buffers 203, 204, 205, and decode /
A dispatch unit 206 is included. Instructions from L1 I-cache 106 are loaded from L1 I-cache instruction bus 232 into one of three buffers. The sequential buffer 203 stores 16 instructions in the current execution sequence. The branch buffer 205 stores eight instructions from the branch destination. These are speculatively loaded into the buffer 205 before branch evaluation if a branch is taken. The thread switch buffer 204 stores eight instructions of the inactive thread. If you need to switch from the currently active thread to the inactive thread, these instructions are immediately available. Decode / dispatch unit 206 receives and decodes the current instruction to be executed from one of the buffers to ascertain the operation or branch condition to be executed.
Branch unit 202 evaluates branch conditions to control program flow and refills buffers from L1 I-cache 106 by sending the effective address of the desired instruction on L1 I-cache address bus 231.

【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セットに分けられる。
The execution unit 211 includes an S pipe 213,
M pipe 214, R pipe 215, and general purpose register 2
Includes 17 banks. The registers 217 are divided into two sets, each of which corresponds to each thread. R pipe 215
Is a pipeline arithmetic unit that performs some of the functions of simple integer arithmetic and logic. M-pipe 214 is a pipeline arithmetic unit that performs a relatively large set of operations and logic functions. The S pipe 213 is a pipeline device that executes load and store. Floating point unit (FPU) 212 and its associated floating point registers 216 are used for complex floating point operations that typically require several cycles. Floating point register 21
6 is divided into two sets corresponding to each thread, similarly to the general-purpose register 217.

【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からフェッチされる。
The storage control device 221 is a memory management device 2
22, an L2 cache directory 223, an L2 cache interface 224, an L1 data cache 107, and a memory bus interface 225. The L1 D-cache is an on-chip cache used for data (rather than instructions). The L2 cache directory 223 is a directory of the contents of the L2 cache 108. The L2 cache interface 224 handles direct data transfer to and from the L2 cache 108. Memory bus interface 22
5 handles data transfer on the memory bus 109. The data transfer of the memory bus 109 is performed by the main memory 10.
2 or an L2 cache unit associated with another CPU. Memory management device 222
Is responsible for routing data access to various units. For example, if the S pipe 213 is loaded
When processing a command, if the data needs to be loaded into a register, the memory management unit will store the data in L1 D
It can be fetched from cache 107, L2 cache 108, or main memory 102. The memory management device 222 determines where to obtain the data. Since the L1 Dcache 107 can be directly accessed similarly to the L2 cache directory 223, the unit 222 stores the data in the L1 Dcache 1
07 or in the L2 cache 108. If the data is not in the on-chip L1 D-cache 107 or L2 cache 108, the memory bus
9 is fetched.

【0032】CPUの様々な構成要素について説明して
いるが、好適実施例のCPUには、ここに示していない
多くの要素を使用でき、それらは、本発明の理解に不可
欠ではない。例えば、通常の設計では、専用レジスタを
追加する必要があるが、それらのいくつかはスレッド毎
に複製する必要がある。CPU101内の構成要素の
数、タイプ、配置は一定でなくてもよい。例えば、バッ
ファとキャッシュの数と構成、実行ユニット・パイプラ
インの数と機能、レジスタを構成するアレイやセット等
は変更可能であり、専用浮動小数点処理ハードウェアは
使用してもしなくてもよい。
Although various components of the CPU have been described, many components not shown can be used in the CPU of the preferred embodiment, which are not essential to an understanding of the present invention. For example, a typical design would require the addition of dedicated registers, some of which would need to be duplicated per thread. The number, type, and arrangement of the components in the CPU 101 need not be constant. For example, the number and configuration of buffers and caches, the number and function of execution unit pipelines, arrays and sets that make up registers, and the like can be changed, and dedicated floating point processing hardware may or may not be used.

【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に保
持された、前にアクティブでなかったスレッドの命令の
処理を開始する。
Instruction unit 201 ideally decodes in decode / dispatch unit 206,
It provides a stream of instructions for execution by the execution unit 211. The L1 I-cache 106 must respond to an access request with a minimum delay. When the requested instruction is actually in the L1 I-cache, the decode / dispatch unit 20
6 must be able to respond and fill the corresponding buffer without having to wait. The L1 I-cache cannot respond (i.e., the requested instruction is
When not in the cache), a relatively long path to the memory manager 222 via the cache fill bus 233 must be taken. In that case, the instructions may be obtained from the L2 cache 108, from the main memory 102, and possibly from disk or other storage. Also, if there are multiple processors in system 100, the instructions are:
It can also be obtained from the L2 cache of another processor. In either case, the instruction unit 201 may switch threads depending on the delay time when fetching an instruction from a remote location. That is, the active thread becomes inactive, the previously inactive thread becomes active, and the instruction unit 201 begins processing instructions of the previously inactive thread held in the thread switch buffer 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は、有効ページ番号と実ページ番号のペア
を記憶し、有効アドレスを実アドレスに関連付けるため
に使用される。
FIG. 4 shows the main components of the L1 I-cache 106 in accordance with the preferred embodiment in more detail than FIGS. The L1 I-cache 106 includes an effective / real address table (ERAT) 301, an I-cache directory array 302, and an I-cache instruction array 30.
3 inclusive. I-cache instruction array 303 stores the actual instructions sent to instruction unit 201 for execution. The I-cache directory array 302 stores a set of information, such as real page numbers and valid bits, to manage the instruction array 303, and in particular to determine whether the desired instruction is actually in the instruction array 303. . E
The RAT 301 stores a pair of a valid page number and a real page number, and is used to associate a valid address with a real address.

【0035】好適実施例のCPU101は、図11にロ
ジックを示す通り、複数のアドレス変換レベルをサポー
トする。基本的なアドレス指定構造体は、有効アドレス
801、仮想アドレス802、実アドレス803の3つ
である。"有効アドレス"は、命令を参照するために命令
ユニット201により生成されるアドレスをいう。つま
り、これは、ユーザの実行可能コードの観点から見たア
ドレスである。有効アドレスは、従来の様々な方法で生
成できる。例えば、専用レジスタの上位アドレス・ビッ
ト(新しいタスクの実行開始時等、頻繁には変化しな
い)と、命令からの下位アドレス・ビットの連結、汎用
レジスタのアドレスから計算されたオフセット、現在実
行中の命令からのオフセット等として生成される。この
実施例の有効アドレスは、64ビットで0乃至63の番
号が付けられる(0は最上位ビット)。"仮想アドレス"
は、異なるユーザのアドレス空間を分離するために用い
られるオペレーティング・システムの構造体である。つ
まり、各ユーザが、有効アドレスの全範囲を参照できる
場合、競合を避けるために、異なるユーザの有効アドレ
ス空間を、比較的大きい仮想アドレス空間にマップする
必要がある。仮想アドレスは、レジスタに記憶されると
いう意味で物理的実体ではなく、52ビットの仮想セグ
メントID 814と有効アドレスの下位28ビットを
連結して得られる計80ビットの論理構造である。"実
アドレス"は、命令が記憶されるメモリ102の物理的
位置をいう。実アドレスは40ビットで、24乃至63
の番号が付けられる(24は最上位ビット)。
The CPU 101 of the preferred embodiment supports a plurality of address translation levels, as shown by the logic in FIG. There are three basic addressing structures: an effective address 801, a virtual address 802, and a real address 803. “Effective address” refers to an address generated by the instruction unit 201 to refer to the instruction. That is, this is the address in terms of the user's executable code. The effective address can be generated in various conventional ways. For example, the upper address bits of a dedicated register (which do not change often, such as when a new task starts running), the concatenation of lower address bits from an instruction, the offset calculated from the address of a general register, It is generated as an offset from the instruction. The effective addresses in this embodiment are 64 bits and numbered from 0 to 63 (0 is the most significant bit). "Virtual address"
Is an operating system structure used to separate the address space of different users. In other words, if each user can refer to the entire range of effective addresses, it is necessary to map the effective address space of different users to a relatively large virtual address space to avoid contention. The virtual address is not a physical entity in the sense that it is stored in a register, but has a total 80-bit logical structure obtained by connecting the 52-bit virtual segment ID 814 and the lower 28 bits of the effective address. "Real address" refers to the physical location in memory 102 where the instruction is stored. The real address is 40 bits, 24 to 63
(24 is the most significant bit).

【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アドレス・ビッ
ト)は、ページ内のアドレスを指定し、そのアドレスが
有効アドレス、仮想アドレス、または実アドレスかどう
かにかかわらず同じである。上位ビットはページを指定
し、従って、"有効ページ番号"または"実ページ番号"と
も呼ばれる。
As shown in FIG. 11, the effective address 801
Contains a 36-bit valid segment ID 811, a 16-bit page number 812, and a 12-bit byte index 813, where the valid segment ID occupies the most significant bit position. The virtual address 802 is obtained by converting a 36-bit valid segment ID 811 into a 52-bit virtual segment ID.
814 and the resulting virtual segment ID 814
To the page number 812 and the byte index 813 to form an effective address. The real address 803 is derived from the virtual address by mapping the virtual segment ID 814 and page number 812 to a 52-bit real page number 815 and concatenating the real page number with the byte index 813. Since a page of main memory is 4K (or 2 @ 12) bytes, the byte index 813 (the least significant 12 address bits) specifies an address within the page and determines whether the address is a valid address, a virtual address, or a real address. Same whether or not. The high order bits specify the page and are therefore also called "valid page numbers" or "real page numbers".

【0037】コンピュータ・システム100には、CP
U101により生成される有効アドレスをメモリ102
の実アドレスに変換するアドレス変換メカニズムがあ
る。このアドレス変換メカニズムは、有効セグメントI
D811を仮想セグメントID814にマップするセグ
メント・テーブル・メカニズム821と、仮想セグメン
トID814とページ番号812を実ページ番号815
にマップするページ・テーブル・メカニズム822を含
む。これらのメカニズムは、図11では便宜上シングル
・エンティティとして示しているが、実際にはレベルの
異なる複数のテーブルやレジスタを含む。つまり完全な
ページ・テーブルと完全なセグメント・テーブルがメイ
ン・メモリ102にあり、これらのテーブルの比較的小
さい様々なデータ・キャッシュ部は、CPU101自体
またはL2キャッシュに記憶される。また、一定の条件
下で有効アドレスから実アドレスに直接変換する変換メ
カニズムもある(図示せず)。
The computer system 100 has a CP
The effective address generated by U101 is stored in memory 102
There is an address translation mechanism that translates to a real address. This address translation mechanism uses the valid segment I
A segment table mechanism 821 that maps D811 to a virtual segment ID 814, and a virtual page ID 814 that maps the virtual segment ID 814 and the page number 812 to a real page number 815.
Page table mechanism 822 that maps to Although shown as a single entity for convenience in FIG. 11, these mechanisms actually include a plurality of tables and registers at different levels. That is, there is a complete page table and a complete segment table in main memory 102, and the various smaller data caches of these tables are stored in CPU 101 itself or in the L2 cache. There is also a translation mechanism for directly translating an effective address to a real address under certain conditions (not shown).

【0038】CPU101は、図11のようにアドレス
変換をサポートするが、より簡単なアドレス指定もサポ
ートする。具体的には、好適実施例のCPU101
は、"タグ・アクティブ"・モードまたは"タグ非アクテ
ィブ"・モードのいずれかで動作する。モードが異なる
のは、アドレス指定の違いを示し、サポートするオペレ
ーティング・システムも異なる。マシン状態レジスタ
(専用レジスタ)のビットは、現在の動作モードを記録
する。上に述べた完全アドレス指定変換は"タグ非アク
ティブ"・モードで使用される。"タグ・アクティブ"・
モードでは、有効アドレスは仮想アドレスと同じである
(つまり、有効セグメントID811は、ルックアップ
なしに仮想セグメントID813に直接マップされるの
で、仮想セグメントIDの上位16ビットは常に0であ
る)。CPU101はまた、有効=実アドレスのアドレ
ス指定モードでも動作する(後述)。
The CPU 101 supports address conversion as shown in FIG. 11, but also supports simpler address designation. Specifically, the CPU 101 of the preferred embodiment
Operates in either "tag active" or "tag inactive" mode. The different modes indicate different addressing and support different operating systems. The bits of the machine status register (dedicated register) record the current operation mode. The full addressing translation described above is used in "tag inactive" mode. "Tag active"
In mode, the effective address is the same as the virtual address (ie, since the effective segment ID 811 is mapped directly to the virtual segment ID 813 without lookup, the upper 16 bits of the virtual segment ID are always 0). The CPU 101 also operates in an effective = real address addressing mode (described later).

【0039】有効アドレスから実アドレスへの変換に
は、複数のレベルのテーブル・ルックアップが必要であ
る。更にアドレス変換メカニズムの各部は、CPUチッ
プから離れたところに位置し、メモリ102に関連付け
られるのでこのメカニズムへのアクセスは、オンチップ
のキャッシュ・メモリへのアクセスよりかなり遅い。E
RAT301は、アドレス変換メカニズムにより維持さ
れる情報の一部を記憶し、有効アドレスを実アドレスに
マップするので、ほとんどの場合、アドレス変換メカニ
ズムにアクセスする必要なしに、L1 Iキャッシュ内
で有効アドレスと実アドレスの関連付けを高速に行える
小さいキャッシュと考えることができる。
The translation from a valid address to a real address requires multiple levels of table lookup. In addition, access to this mechanism is significantly slower than access to on-chip cache memory because the parts of the address translation mechanism are located remotely from the CPU chip and are associated with the memory 102. E
Since the RAT 301 stores some of the information maintained by the address translation mechanism and maps the effective address to the real address, in most cases the effective address and the effective address are stored in the L1 I-cache without having to access the address translation mechanism. It can be considered as a small cache that can associate real addresses at high speed.

【0040】命令ユニット201が、Iキャッシュ10
6に命令を要求し、要求された命令の有効アドレスを提
供するとき、Iキャッシュは、要求された命令が実際に
キャッシュにあるかどうかを高速に判定し、存在する場
合は命令を返し、存在しない場合は命令をどこかから
(L2キャッシュ、メイン・メモリ等)取得する処理を
開始する必要がある。通常の場合、命令は実際にL1
Iキャッシュ106にあり、図4に示すように、Iキャ
ッシュ内で以下の処理が並行して発生する。 a)命令装置201からの有効アドレスにより、ERA
T301のエントリがアクセスされ、有効ページ番号と
これに関連する実ページ番号が導かれる。 b)命令装置201からの有効アドレスにより、ディレ
クトリ・アレイ302のエントリがアクセスされ、実ペ
ージ番号のペアが導かれる。 c)命令装置201からの有効アドレスにより、命令ア
レイ303のエントリがアクセスされ、命令を含むキャ
ッシュ・ラインのペアが導かれる。
The instruction unit 201 is the I-cache 10
6, when requesting an instruction and providing the effective address of the requested instruction, the I-Cache quickly determines whether the requested instruction is actually in the cache, returns the instruction if it is present, and returns If not, it is necessary to start processing to acquire the instruction from somewhere (L2 cache, main memory, etc.). In the normal case, the instruction is actually L1
In the I-cache 106, the following processing occurs in parallel in the I-cache as shown in FIG. a) According to the effective address from the instruction device 201, ERA
The entry at T301 is accessed to derive a valid page number and an associated real page number. b) The entry in the directory array 302 is accessed by the effective address from the instruction device 201, and a pair of real page numbers is derived. c) The entry in the instruction array 303 is accessed by the effective address from the instruction unit 201 to derive a cache line pair containing the instruction.

【0041】前記のいずれの場合でも、ERAT31
0、ディレクトリ・アレイ302、命令アレイ303の
いずれか1つへの入力は、これらの構成要素のうち他の
いずれか1つの出力に依存しないので、前記の処理はい
ずれも、開始する前に他の完了を待機する必要がない。
次に、ERAT301、ディレクトリ・アレイ302、
命令アレイ303の出力は以下のように処理される。
In any of the above cases, ERAT31
0, the directory array 302, and the input to any one of the instruction arrays 303 do not depend on the output of any one of these components, so none of the above processing can be performed before starting. There is no need to wait for completion.
Next, ERAT 301, directory array 302,
The output of the instruction array 303 is processed as follows.

【0042】a)ERAT301からの有効ページ番号
が、比較器304で、命令装置201からの有効アドレ
スの同じアドレス・ビットと比較される。一致する場合
はERAT"ヒット"がある。 b)ERAT301からの実ページ番号が、比較器30
5、306で、ディレクトリ・アレイ302からの実ペ
ージ番号それぞれと比較される。いずれかが一致する場
合、また、ERATヒットがある場合、Iキャッシュ
・"ヒット"がある。つまり要求された命令は実際にIキ
ャッシュ106に、具体的には命令アレイ303にあ
る。 c)ERAT301とディレクトリ・アレイ302から
の実ページ番号の比較の出力により、命令アレイ303
からのキャッシュ・ラインのペアのうち、所望の命令の
あるペアが選択される(選択マルチプレクサ307を使
用)。
A) The valid page number from ERAT 301 is compared in comparator 304 with the same address bits of the valid address from instruction unit 201. If they match, there is an ERAT "hit". b) The actual page number from the ERAT 301 is
At 5 and 306, each of the real page numbers from the directory array 302 is compared. If any match, and if there is an ERAT hit, there is an I-cache "hit". That is, the requested instruction is actually in the I-cache 106, specifically in the instruction array 303. c) The output of the comparison of the real page numbers from the ERAT 301 and the directory
Are selected (using the select multiplexer 307).

【0043】これらの処理を並行して実行することで、
所望の命令が実際にIキャッシュにある場合の遅延が最
小になる。所望の命令がIキャッシュにあるかどうかに
かかわらず、命令装置201へのIキャッシュの出力に
データが多少とも存在する。独立したIキャッシュ・ヒ
ット信号により、出力データに実際に所望の命令がある
ことが命令装置201に示される。Iキャッシュ・ヒッ
ト信号がないとき、命令装置201は出力データを無視
する。キャッシュ・ミスの場合にIキャッシュ106に
より実行される処理については後述する。
By executing these processes in parallel,
The delay when the desired instruction is actually in the I-cache is minimized. Regardless of whether the desired instruction is in the I-cache, there is some data at the output of the I-cache to the instruction unit 201. The independent I-cache hit signal indicates to the instruction device 201 that the output data actually has the desired instruction. When there is no I-cache hit signal, the instruction device 201 ignores the output data. The processing executed by the I-cache 106 in the case of a cache miss will be described later.

【0044】図5、図6は、ERAT301とこれに関
連する制御構造を詳しく示す。ERAT301は82ビ
ット×128アレイである(つまり128のエントリが
あり、各エントリは82ビットである)。ERATエン
トリはそれぞれ、有効アドレスの一部(ビット0乃至4
6)、実アドレスの一部(ビット24乃至51)、及び
追加ビットを含む(後述)。
FIGS. 5 and 6 show the ERAT 301 and its related control structure in detail. ERAT 301 is an 82 bit x 128 array (i.e., there are 128 entries, each entry being 82 bits). Each ERAT entry is a part of an effective address (bits 0 to 4).
6), a part of the real address (bits 24 to 51), and an additional bit (described later).

【0045】ERAT301は、制御ラインと共に、有
効アドレス(EA)のビット45乃至51のハッシュ関
数を構成することによってアクセスされる。制御ライン
は、マルチスレッドがアクティブかどうかを示す(好適
実施例のCPU設計では、マルチスレッドをオフにする
ことができる)マルチスレッド制御ライン(MT)と、
2つのスレッドのどちらがアクティブかを示すアクティ
ブ・スレッド・ライン(ActT)の2つである。ハッ
シュ関数は以下の通りである。
ERAT 301 is accessed by constructing a hash function of bits 45-51 of the effective address (EA) along with the control lines. A control line (MT) which indicates whether multithreading is active (multithreading can be turned off in the preferred embodiment CPU design);
Two active thread lines (ActT) that indicate which of the two threads is active. The hash function is as follows.

【数1】 (Equation 1)

【0046】これは7ビット関数で、ERATの128
エントリを指定するには充分である。選択ロジック40
1は、前記のハッシュ関数に従って対応するERATエ
ントリを選択する。
This is a 7-bit function, and
Enough to specify the entry. Selection logic 40
1 selects a corresponding ERAT entry according to the hash function described above.

【0047】比較器304は、命令装置201により生
成される有効アドレスのビット0乃至46を、選択され
たERATエントリの有効アドレス部と比較する。命令
装置201からの有効アドレスのビット47乃至51
は、ハッシュ関数を構成するために用いられたので、ビ
ット0乃至46が一致すると、アドレスの完全有効ペー
ジ番号部、つまりビット0乃至51の一致を保証するに
は充分である。これら2つのアドレス部の一致は、ER
ATの実ページ番号(RA24:51)が、実際には、
命令装置201により指定される有効アドレスのページ
番号(EA0:51)に対応する実ページ番号であるこ
とを意味する。そのため、ERATエントリに記憶され
た有効アドレス部は、厳密な意味ではなく有効ページ番
号と呼ばれることもある。ただし、好適実施例では、有
効ページ番号のビット0乃至46しか含まれない。
The comparator 304 compares bits 0 to 46 of the effective address generated by the instruction device 201 with the effective address part of the selected ERAT entry. Bits 47 to 51 of the effective address from the instruction device 201
Was used to construct the hash function, so that a match in bits 0-46 is sufficient to guarantee a match in the fully valid page number portion of the address, bits 0-51. The match between these two address parts is determined by the ER
The actual page number of the AT (RA24: 51) is actually
This means a real page number corresponding to the page number (EA0: 51) of the effective address specified by the instruction device 201. Therefore, the effective address part stored in the ERAT entry is not strictly meaning but may be called an effective page number. However, in the preferred embodiment, only bits 0 through 46 of the valid page number are included.

【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はヒットとみなされる。
In some cases, the CPU 101
It operates in a special addressing mode, such as the real mode (E = R). When operating in this mode, the lower 40 of the effective address generated by the instruction device 201
Bits (that is, EA24: 63) are assigned to the real address (RA2
4:63). Normally, this mode is reserved for low-level operating system functions that work relatively efficiently if they are always stored at the same real address location. As shown in FIGS. 5 and 6, the control line E = R
Is active, ERAT 301 is effectively bypassed. That is, the selection multiplexer 402 sets E =
If R is false, RA2 from selected ERAT entry
4:51 is selected as the real page number (RPN) and E =
When R is true, EA 24:51 is selected from the instruction device 201. If E = R is true, ERAT is regarded as a hit regardless of the comparison result of the comparator 304.

【0049】ERATは、先に図8とあわせて述べたア
ドレス変換メカニズムを効果的にバイパスするので、通
常のアドレス変換メカニズムに含まれるアクセス制御情
報を一部複製する。つまり有効アドレスから実アドレス
への変換は、通常は、セグメント・テーブル・メカニズ
ム821、ページ・テーブル・メカニズム822等に含
まれる追加情報によりアクセス権を確認する。ERAT
301は、この情報の一部をキャッシュして、これらア
ドレス変換メカニズムを参照する必要をなくす。ERA
Tの動作について詳しくは、1997年11月10日付
米国特許出願第08/966706号、"Effective-To-
Real Address Cache Managing Apparatus and Method"
を参照されたい。
Since the ERAT effectively bypasses the address translation mechanism previously described in conjunction with FIG. 8, the ERAT partially copies the access control information included in the normal address translation mechanism. That is, the conversion from the effective address to the real address is usually performed by confirming the access right based on additional information included in the segment table mechanism 821, the page table mechanism 822, and the like. ERAT
301 caches some of this information, eliminating the need to reference these address translation mechanisms. ERA
For more information on the operation of T, see U.S. patent application Ser. No. 08 / 966,706, Nov. 10, 1997, "Effective-To-
Real Address Cache Managing Apparatus and Method "
Please refer to.

【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の対応する半分の全てのエントリが無効と
マークされ、最終的には再ロードされる。
The ERAT entry contains a parity bit,
Includes protection bits and access control bits. Especially ERAT
Each entry includes a cache inhibit bit, a problem state bit, and an access control bit. Also, the individual array 403 (1 bit × 128) includes one valid bit associated with each ERAT entry. In addition, tags
The mode bit pairs are stored in individual registers 404. The valid bits from array 403 are the corresponding ERA
Record whether the T entry is valid. Various conditions cause processor logic (not shown) to reset the valid bit, resulting in a subsequent access to the corresponding ERAT entry to reload the entry. The cache inhibit bit is used to inhibit writing of the requested instruction to I-cache instruction array 303.
That is, the address range may include an ERAT entry, but there may be a case where it is desired to avoid caching an instruction in the I-cache in this address range. In that case, a request for an instruction in this address range causes a line fill sequence logic (described later).
Obtains the requested instruction, but the instruction is not written to array 303 (the directory array 302 is not updated). The problem state bit records the "problem state" of the executing thread (i.e., supervisor or user) at the time the ERAT entry is loaded. Threads running in the supervisor state generally have greater access rights than threads in the problem state. ERA in a certain state
If the T entry is loaded, the problem state is subsequently changed, and the currently executing thread may not be able to access addresses in the range of the ERAT entry, and this information will be verified when the ERAT is accessed. There is a need. The access control bits also record access information when the ERAT entry is loaded and are checked at the time of access. Tag mode bit 404 records the tag mode of the processor (tag active or tag inactive) when ERAT is loaded. One tag mode bit is associated with each half (64 entries) of the ERAT. This is ERA
Selected using the 0 bit of the T HASH function. Tag mode affects the interpretation of effective addresses,
Changing the tag mode means that the real page number of the ERAT entry is not considered reliable.
If the tag mode changes, it is assumed that it will not change very often. Thus, if a change is detected, all corresponding half entries in the ERAT are marked invalid and eventually reloaded.

【0051】ERATロジック405は、セレクタ30
4の出力、有効=実モード、先に述べた様々なビット、
及びCPUのマシン状態レジスタ(図示せず)のビット
をもとに、選択マルチプレクサのRPN出力の使用状態
とERATのメンテナンスを制御する信号を生成する。
特に、ロジック405は、ERATヒット信号410、
保護例外信号411、ERATミス信号412、及びキ
ャッシュ禁止信号413を生成する。
The ERAT logic 405 is connected to the selector 30
4 outputs, valid = real mode, various bits mentioned above,
And a signal for controlling the use state of the RPN output of the selection multiplexer and the maintenance of the ERAT based on bits of a machine state register (not shown) of the CPU.
In particular, logic 405 includes an ERAT hit signal 410,
A protection exception signal 411, an ERAT miss signal 412, and a cache inhibit signal 413 are generated.

【0052】ERATヒット信号410は、選択マルチ
プレクサ402のRPN出力が、要求された有効アドレ
スに対応する真の実ページ番号として使用できることを
示す。この信号は、有効=実のとき(ERATをバイパ
ス)、または比較器304が一致を検出し、保護例外が
なく、ERATミスを強制する特定条件がないときは、
アクティブである。これは以下のロジックで表せる。
The ERAT hit signal 410 indicates that the RPN output of the select multiplexer 402 can be used as a true real page number corresponding to the requested valid address. This signal can be asserted when valid = real (bypass ERAT), or when comparator 304 detects a match, there is no protection exception, and no specific condition to force an ERAT miss,
Active. This can be expressed by the following logic.

【0053】Match_304は、比較器304から
の信号で命令装置201からのEA0:46がERAT
エントリのEA0:46と一致することを示し、Val
idはアレイ403からの有効ビットの値である。
Match_304 is a signal from the comparator 304, and EA0: 46 from the instruction device 201 is ERAT.
Indicates that it matches EA0: 46 of the entry, and Val
id is the value of the valid bit from array 403.

【数2】 (Equation 2)

【0054】保護例外信号411は、ERATエントリ
は有効なデータを含むが、現在実行中のプロセスは所望
の命令へのアクセスを許可されないことを示す。ERA
Tミス信号412は、要求されたERATエントリに所
望の実ページ番号がないか、または信頼できるとみなさ
れないことを示し、いずれの場合も、ERATエントリ
を再ロードする必要がある。キャッシュ禁止信号413
は、要求された命令が命令アレイ303にキャッシュさ
れるのを防ぐ。これらの信号は以下のロジックで導かれ
る。
The protection exception signal 411 indicates that the ERAT entry contains valid data, but that the currently executing process is not authorized to access the desired instruction. ERA
The T miss signal 412 indicates that the requested ERAT entry does not have the desired real page number or is not considered reliable, and in either case, the ERAT entry needs to be reloaded. Cache inhibit signal 413
Prevents the requested instruction from being cached in the instruction array 303. These signals are derived by the following logic.

【数3】 (Equation 3)

【0055】ここで、 ERAT(Pr)はERATエントリからの問題状態ビ
ット ERAT(AC)はERATエントリからのアクセス制
御ビット ERAT(CI)はERATエントリからのキャッシュ
禁止ビット MSR(TA)はマシン状態レジスタからのタグ・アク
ティブ・ビット MSR(Us)はマシン状態レジスタからのユーザ状態
ビット Tag_404はレジスタ404からの選択済みタグ・
ビット
Here, ERAT (Pr) is a problem status bit from the ERAT entry. ERAT (AC) is an access control bit from the ERAT entry. ERAT (CI) is a cache inhibit bit from the ERAT entry. MSR (TA) is a machine status register. MSR (Us) is the user status bit from the machine status register Tag_404 is the selected tag from the register 404
bit

【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の
パリティ・ビットを含む。
FIG. 7 details the I-cache directory array 302 and its associated control structure. I
The cache directory array includes a 66-bit × 512 array 502 that holds real page numbers and specific control bits, and a 1-bit × 512 array 503 that stores MRU (most-recently-used) bits. Array 50
2 and 503 are physically independent, but logically 1
Can be treated as one array. Array 502 is logically 2
Divided into sets. First 33 of each array entry
The bits belong to the first set (set 0) and the last 33 bits of each entry belong to the second set (set 1). Each entry of array 502 has a 28-bit real page number (ie, real address bits 24-51) corresponding to set 0, four significant bits of set 0, a parity bit of set 0, and a 28-bit set 1 bit. It contains the real page number, the four significant bits of set 1, and the parity bit of set 1.

【0057】図8は、Iキャッシュ命令アレイ303と
これに関連する制御構造を詳しく示す。Iキャッシュ命
令アレイ303は、64バイト×2048アレイを含
み、これは、ディレクトリ・アレイ502と同様、論理
的に2つのセットに分けられる。各アレイ・エントリの
最初の32バイトはセット0に属し、残り32バイトは
セット1に属する。命令アレイ303の各エントリは、
セット0に対応しプロセッサで実行できる8つの命令
(それぞれ4バイト)と、セット1に対応しプロセッサ
で実行できる8つの命令(それぞれ4バイト)を含む。
FIG. 8 illustrates the I-cache instruction array 303 and its associated control structure in detail. I-cache instruction array 303 includes a 64-byte by 2048 array, which, like directory array 502, is logically divided into two sets. The first 32 bytes of each array entry belong to set 0, and the remaining 32 bytes belong to set 1. Each entry of the instruction array 303 is
It includes eight instructions (4 bytes each) that can be executed by the processor corresponding to set 0, and eight instructions (4 bytes each) that can be executed by the processor corresponding to set 1.

【0058】ディレクトリ・アレイ502の各エントリ
は、命令アレイ303の4つのエントリで構成される連
続したグループに関連付けられる。1つのセット(セッ
ト0または1)に含まれる4エントリのこの連続グルー
プは、キャッシュ・ラインと呼ばれ、いずれかのセット
に含まれるシングル・エントリはキャッシュ・サブライ
ンと呼ばれる。選択ロジック601は、各エントリ(つ
まり、キャッシュ・サブラインのペアで、セット0、及
びセット1それぞれから1つ)に独立にアクセスできる
が、各キャッシュ・ラインまたは4つのサブラインのグ
ループに対応する、ディレクトリ・アレイ502の実ペ
ージ番号は1つだけである。そのため、キャッシュ・ラ
インを構成する4つのキャッシュ・サブラインは、1回
のキャッシュ・ライン・フィル動作でグループとして埋
められる(後述)。
Each entry in directory array 502 is associated with a contiguous group of four entries in instruction array 303. This contiguous group of four entries in one set (set 0 or 1) is called a cache line, and a single entry in either set is called a cache subline. The selection logic 601 has independent access to each entry (ie, a pair of cache sublines, one from each of set 0 and set 1), but corresponding to each cache line or a group of four sublines. The array 502 has only one real page number. Therefore, the four cache sublines constituting the cache line are filled as a group by one cache line filling operation (described later).

【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)で
ある。
In the preferred embodiment, the cache line of the instruction array 303 contains 128 bytes and the cache line
7 addresses to specify a byte in the space of the line
Bits (address bits 57-63). Address bits 57 and 58 specify one of the four cache sublines in the cache line. The real address of the cache line is specified by real address bits 24-56. Effective address
Bits 48-56 (corresponding to the lower address bits of the cache line) are used to select entries in arrays 502 and 503. Selection logic 50
1 is a direct decode of these address bits.
This is effectively a simple hash function. That is, the possible combinations of valid address bits 48-56 are 2
There are nine, but 233 possible real addresses for the cache line
Individuals (combinations of real address bits 24-56) are mapped to this array. Similarly, valid address bits 48-58 (corresponding to the lower address bits of the cache sub-line) are used to select an entry in instruction array 303, and select logic 601
Direct decoding of these address bits. The real address of the cache subline of the instruction array 303 is
Valid address bits 52 through 58 (EA 52:58)
And the real page number of the corresponding entry and set of the directory array 502 (RA24: 51), concatenated with

【0060】各エントリに2つの実ページ番号(セット
0及びセット1から)があるので、Iキャッシュ・ディ
レクトリには、有効アドレス・ビット48乃至56のそ
れぞれ9ビットの組み合わせに対応する2つの実ページ
番号(及び命令アレイ303に2つのキャッシュ・ライ
ン)がある。この特性から、スレッド間のIキャッシュ
の競合を避けることができる。
Since each entry has two real page numbers (from set 0 and set 1), the I-cache directory contains two real page numbers corresponding to each 9-bit combination of effective address bits 48-56. There are numbers (and two cache lines in the instruction array 303). From this characteristic, it is possible to avoid I-cache contention between threads.

【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が
生成される。
Since the selection logic 501 functions as a sparse hash function, there is no guarantee that any of the real page numbers contained in the entries of the array 502 will correspond to the fully valid address page number of the desired instruction. In order to confirm the correspondence, both the selected real page numbers are compared with the page number output 411 of the ERAT 301 using the comparators 305 and 306. At the same time as this comparison, the valid address bits 57, 58 cause the array 502
Of the four valid bits of the set 0 (selector 504) and the set 1
Of the four valid bits (selector 505) is selected. The valid bit selected corresponds to the cache subline of the desired instruction. These are ANDed with the outputs of the corresponding comparators 305, 306 to generate a pair of signals indicating the respective set match. The logical OR of these signals is ANDed with the ERAT hit signal 410 to generate an I-cache hit signal 510 indicating that the desired instruction is actually in the L1 I-cache.

【0062】先に説明したように、選択ロジック601
は、命令装置により与えられる所望の命令の有効アドレ
スを使用して、命令アレイ303のエントリ("サブラ
イン"のペア)にアクセスする。セレクタ602は、ア
レイ303のセット0からのサブラインか、または、キ
ャッシュ書込みバス604からのバイパス・サブライン
値を選択する。バイパス・サブライン値は、キャッシュ
・ラインがキャッシュ・ミスの後に埋められているとき
に使用される。その場合、新しいキャッシュ・サブライ
ン値が外部ソースから使用できるとすぐにキャッシュ書
込みバス604から得られるので、最初に命令アレイ3
03に書込む必要がない。従って、キャッシュ・フィル
動作中に命令アレイをバイパスすることで、少しの時間
が節約される。バイパス・サブライン値はまた、キャッ
シュ禁止ライン413がアクティブなときにも使用され
る。
As described above, selection logic 601
Accesses the entry ("subline" pair) of the instruction array 303 using the effective address of the desired instruction provided by the instruction device. Selector 602 selects a subline from set 0 of array 303 or a bypass subline value from cache write bus 604. The bypass subline value is used when a cache line is being filled after a cache miss. In that case, the first instruction array 3
There is no need to write to 03. Thus, a small amount of time is saved by bypassing the instruction array during a cache fill operation. The bypass subline value is also used when the cache inhibit line 413 is active.

【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の値で更新される。
The selector 603 is connected to the set selection line 51
Depending on the value of 1, select the output of selector 602 or a subline from set 1 of array 303. Set select line 511 is HIGH when there is a cache hit in half of cache set 1. That is, the comparator 306 outputs the real page number 411 from the ERAT.
And a set 1 real page number from the selected entry of the directory array 502 is detected. The corresponding subline valid bit selected by selector 505 is valid, set select line 511 goes HIGH, and selector 603 selects a subline from set 1 of array 303. In other cases (including cache misses), the output of selector 602 is selected. The output of selector 603 is 32 bytes of data representing eight instructions from consecutive memory locations. This is sent to the instruction unit 201 for writing to the sequential buffer 203, thread buffer 204, or branch buffer. If a cache miss occurs, I-cache hit line 510 goes LOW and the output of selector 603 is ignored (ie, not written to one of the buffers of instruction unit 201). If there is a cache hit (line 510 active), the MRU bit of the array corresponding to the selected directory entry is updated with the value of set select line 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ミスがあった
ときには、命令アレイのライン・フィルが同時に開始さ
れる。
The above description relates to the situation where the retrieved instruction is actually in the I-cache. When there is an I-cache miss, there are two possibilities. a) There is an ERAT hit but the instruction is not in the instruction array or b) there is an ERAT miss. If there is an ERAT hit, the desired cache line can be filled much faster. Since the real page number is in ERAT, the desired data is known to be in main memory (and may be in the L2 cache). In the logic of the L1 I-cache 106,
Constructing the full real address of the desired instruction from the ERAT data is possible without accessing external address translation mechanisms, and this data can be fetched directly from the L2 cache or memory. E
In the event of a RAT miss, an external address translation mechanism will need to be accessed to configure the real address of the desired instruction and, if necessary, to update the ERAT with a new real page number. In that case, the desired data may not be present at all in main memory,
It must be read from a secondary storage device such as a disk drive. In theory, the desired instruction is actually
There is a possibility of an ERAT miss when at 3, but this is considered a rare case. Therefore, when there is an ERAT miss, line filling of the instruction array is started at the same time.

【0065】図9、図10は、主な高速ライン・フィル
・シーケンサのロジック、つまり、ERATヒットがあ
ったとき、また、キャッシュ・ミスの場合にキャッシュ
・ライン・フィルを生成する制御ロジックを示す。高速
ライン・フィル・シーケンサ・ロジックは、ライン・フ
ィル開始ロジック701と、ライン・フィル操作の完了
を保留するライン・フィル・リクエスト・パラメータを
記憶するレジスタ710、711のペア(それぞれLF
Addr0、LFAddr1と示す)を含む。
FIGS. 9 and 10 show the logic of the main high-speed line fill sequencer, that is, the control logic for generating a cache line fill in the event of an ERAT hit or in the event of a cache miss. . The high-speed line fill sequencer logic includes a pair of line fill start logic 701 and registers 710 and 711 for storing line fill request parameters for suspending the completion of the line fill operation (LF each).
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つ目のリクエストは遅らせる必要がある。
The LFAddr registers 710 and 711 each correspond to one of two threads. That is, LFA
ddr0 710 is in thread 0, LFAddr1 7
11 corresponds to the thread 1. When the instruction device 201 issues an instruction request during the execution of the thread 0, the request parameter is stored in the LFAddr0 register 710, and similarly, the request during the execution of the thread 1 is the LFA
The data is stored in the ddr1 register 711. (If multithreading is off, only the LFAddr0 register 710 is used.) The LFAddr registers 710, 711 each store only one line fill request. Therefore, if an ERAT hit and an I-cache miss occur while a thread has pending line fill requests for the same thread, the second request must be delayed.

【0067】LFAddrレジスタはそれぞれ、有効ア
ドレス・ビット48乃至58(EA48:58)、実ア
ドレス・ビット24乃至51(RA24:51)、セッ
ト・ビット、及びリクエスト未決("R")ビットを含
む。アドレス・ビットは、埋められるキャッシュ・ライ
ンのメモリの実アドレスを生成し、キャッシュ・ライン
が返されたときにディレクトリ・アレイ502と命令ア
レイ303に書込むために用いられる。セット・ビット
は、ディレクトリ・アレイ502と命令アレイ303の
いずれのセット(セット0またはセット1)に書込まれ
るかを判定する。リクエスト未決("R")ビットは、L
FAddrレジスタに未決リクエストが入ったときに1
に設定され、ライン・フィル・リクエストが完了すると
リセットされる(リセット・ロジックは図示せず)。
The LFAddr registers each include valid address bits 48-58 (EA 48:58), real address bits 24-51 (RA 24:51), set bits, and a request pending ("R") bit. The address bits are used to generate the real address of the memory of the cache line to be filled and to write to the directory array 502 and the instruction array 303 when the cache line is returned. The set bit determines which set (set 0 or set 1) of directory array 502 or instruction array 303 is to be written. Request pending (“R”) bit is L
1 when an undecided request enters the FAddr register
And reset when the line fill request is completed (reset logic not shown).

【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"ビットをリセットする)ま
で待機してから、新しいライン・フィル・リクエストを
開始する。これらの入力と出力の論理関係は以下のよう
に表せる。
The line fill start logic 701 has as inputs an ERAT hit line 410, an I-cache hit line 510, and an active thread control line (Act) that specifies which thread is active.
T), and LFAddr0 register 710 and LFAdd
The request pending bits (represented as “R0” and “R1”, respectively) from the r1 register 711 are received. A line fill request is initiated when there is an ERAT hit, when there is an I-cache miss, and when no line fill request is currently pending in the LFAddr register corresponding to the currently active thread ( The line fill request line 703 becomes active). LFAdd corresponding to currently active thread with ERAT hit and I-cache miss
If there is a pending line fill request in the r register, the I-cache will indicate the pending line fill request.
Wait for the request to complete (reset the "R" bit) before starting a new line fill request. The logical relationship between these inputs and outputs can be expressed as follows.

【数4】 (Equation 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に設定さ
れる。書込み信号は、論理的には以下のように導かれ
る。
When a line fill request is initiated, the line fill start logic causes the write signal 70
4, 705 and the request parameter is LFA
Written to ddr registers 710, 711. Either one of the write signals 704, 705 may always be active. When either one of the write signals 704, 705 becomes active, EA 48:58 (from the L1 I-cache address bus 231), RA 24:51 (from path 411, ERAT 301), and the set bit from the set logic 720 Is stored in the LFAddr register corresponding to the currently active thread.
At the same time, the request pending bit of the register is set to 1. The write signal is logically derived as follows.

【数5】 (Equation 5)

【0070】ディレクトリ・アレイ502と命令アレイ
303は2セット(セット0とセット1)に分けられ、
それぞれ同じハッシュ関数で索引が付けられるので、ラ
イン・フィル・リクエストからのキャッシュ・ライン
は、論理的にいずれかのセットに書込める。キャッシュ
・ラインが書込まれるセットは、ライン・フィル・リク
エストが出された時点でセット・ロジック720により
判定され、対応するLFAddrレジスタのセット・ビ
ットに記憶される。一般に、選択されるセットは、埋め
られるキャッシュ・ラインのLRUセットである。つま
りセットは、ハッシュ関数により索引が付けられるディ
レクトリ・アレイ502のエントリに対応するMRUビ
ットの反転である。ただし、アクティブではないスレッ
ドで未決ライン・フィル・リクエストがあり、この未決
ライン・フィルで同じキャッシュ・ラインが埋められる
特別な場合では、選択されるセットは、アクティブでは
ないスレッドに対する未決ライン・フィル・リクエスト
に選択されるセットとは反対である。従って、ライン・
フィル・リクエストが開始される時点でセットを固定す
ると、ライブ・ロック(つまり、2つの未決ライン・フ
ィル・リクエストが同じセットに書込もうとする状況)
が発生する可能性は回避される。
The directory array 502 and the instruction array 303 are divided into two sets (set 0 and set 1).
Because each is indexed with the same hash function, the cache lines from the line fill request can be written to any set logically. The set to which the cache line is written is determined by the set logic 720 at the time the line fill request is issued and stored in the corresponding LFAddr register set bit. Generally, the set selected is the LRU set of cache lines to be filled. That is, the set is the inverse of the MRU bit corresponding to the entry in directory array 502 that is indexed by the hash function. However, in the special case where there is a pending line fill request in an inactive thread and this pending line fill fills the same cache line, the set selected is the pending line fill request for the inactive thread. The opposite of the set selected for the request. Therefore, the line
Locking the set at the beginning of the fill request will result in a live lock (ie, two pending line fill requests trying to write to the same set)
Is avoided.

【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キャッシュに、スレッド
・タグ・ビットと共に転送される。
FIGS. 9 and 10 show how to use the information stored in the register 710. FIG. A similar data path from register 711 is not shown for convenience. The address of the cache subline containing the requested instruction is derived from the address information stored in the corresponding LRAddr register. Specifically, the actual page number (RA24: 5
1) is concatenated with bits EA 52:58 to get the real address of the cache subline. This is shown as feature 712 in FIGS. This is not necessarily an individual register, but merely a representation of the address combination from one corresponding bit of the LFAddr register. Line Fill Request Line 7
03 starts a data request to the memory management device 222 and
The address indicated as 2 is transferred. Thread tag
The bits are also transferred, and the L1 I-cache control logic can then determine the LFAddr register to associate with the returned instruction. Next, the memory management device stores the requested instruction in the L2 cache 108, the main memory 102,
Or from another source.
If the requested instruction is available from the memory manager 222, it is transferred on the bus 233 to the L1 I-cache along with the thread tag bit.

【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ビットは同時に更新される。
When the requested instruction is returned on bus 233, a control signal is generated and data is written to directory array 502 and instruction array 303. Specifically, EAs 48:56 from corresponding LFAddr registers 710, 711 are used to select an entry in array 502. The set bit from the LFAddr register, along with the control signal,
6, 707 is used to generate a write signal for one half of array 502, and the state of the set bit is written to either half of array 502 (ie, write signal lines 706, 707). Is active). The real page number (RA24: 51) from the LFAddr register is written to the half-array 502 determined by the set bit, the entry selected by EA 48:51. The MRU bits in the directory array are updated at the same time.

【0073】上の操作と並行して、LFAddrレジス
タからのEA48:56は、命令アレイ303のエント
リを選択するために用いられ、LFAddrレジスタか
らのセット・ビットは、同様に、アレイの半分に対する
書込み信号を生成するために用いられる。この場所に書
込まれるデータは、バス233からのデータ(一連の命
令)であり、図8に示すLFデータ・バス604に送ら
れる。ただし、命令アレイ303を埋める場合には、一
度に1つのサブラインしか書込めない。LFデータ・バ
ス604は、一度に1つのサブライン(32バイト)を
送る。完全なサブラインは、選択ロジック601により
LFAddrレジスタからのEA48:56と、シーケ
ンス・ロジック(図示せず)により与えられる2つのア
ドレス・ビット57、58を使って選択される。従っ
て、キャッシュ・ライン全体を埋めるには4回の書込み
サイクルが必要である。
In parallel with the above operation, EA 48:56 from the LFAddr register is used to select an entry in the instruction array 303, and the set bit from the LFAddr register is similarly written to half of the array. Used to generate a signal. The data written to this location is data (a series of instructions) from the bus 233 and sent to the LF data bus 604 shown in FIG. However, when filling the instruction array 303, only one subline can be written at a time. The LF data bus 604 sends one subline at a time (32 bytes). The complete subline is selected by selection logic 601 using EA 48:56 from the LFAddr register and two address bits 57, 58 provided by sequence logic (not shown). Therefore, four write cycles are required to fill the entire cache line.

【0074】更新された命令アレイ・エントリの実ペー
ジ番号がディレクトリ・アレイ502に書込まれると、
4つの有効ビット(各サブラインに1つ)が最初は無効
と設定される。連続したサブラインがそれぞれ命令アレ
イ303に書込まれるとき、ディレクトリ・アレイ50
2の対応する有効ビットが更新されてデータが有効にな
ったことが示される。上に述べたように連続した書込み
サイクルでのキャッシュ・ラインの書込みを、どのよう
な理由であれ解釈する必要がある場合、ディレクトリ・
アレイ502は正しい情報を含む。
When the real page number of the updated instruction array entry is written to directory array 502,
Four valid bits (one for each subline) are initially set to invalid. As successive sub-lines are written into instruction array 303, directory array 50
The two corresponding valid bits are updated to indicate that the data is valid. If the write of a cache line on successive write cycles as described above needs to be interpreted for any reason, the directory
Array 502 contains the correct information.

【0075】ERATミスの場合、選択マルチプレクサ
402の実ページ番号出力は信頼性がない。他の何らか
の処理を行う前に、命令装置201からの有効アドレス
のページ番号部を、実ページ番号に変換する必要があ
る。ERAT_Missライン412は、図11に示し
たアドレス変換メカニズムをトリガする。実際にこの変
換を行うハードウェアは、Iキャッシュ106の一部で
はない。ハードウェアの一部はCPU201に組み込
め、他のハードウェアはメイン・メモリ102等に置け
る。このアドレス変換は、通常、先に述べたライン・フ
ィル操作よりも多くのサイクルを必要とする。ERAT
ミスに続いて、変換された実ページ番号が返されると、
これと並行して実ページ番号がERAT301の更新に
使用され、対応するLFAddrレジスタ(710また
は711)に書込まれ、ライン・フィル操作が開始され
る。その場合、理論上、要求された命令は、ERATミ
スにかかわらず既にキャッシュにあるが、これは充分に
希な事例とみなされ、ERATエントリの埋め込みを待
つのではなく、ライン・フィル操作をすぐに要求するこ
とでパフォーマンスが改良される。
In the case of an ERAT miss, the output of the real page number of the selection multiplexer 402 is not reliable. Before performing any other processing, it is necessary to convert the page number portion of the effective address from the instruction device 201 into a real page number. The ERAT_Miss line 412 triggers the address translation mechanism shown in FIG. The hardware that actually performs this conversion is not part of the ICache 106. Part of the hardware can be incorporated in the CPU 201, and other hardware can be located in the main memory 102 or the like. This address translation typically requires more cycles than the line fill operation described above. ERAT
Following the mistake, when the translated real page number is returned,
In parallel with this, the real page number is used for updating the ERAT 301, written to the corresponding LFAddr register (710 or 711), and the line fill operation is started. In that case, in theory, the requested instruction is already in the cache regardless of the ERAT miss, but this is considered a rare enough case that a line fill operation can be performed immediately rather than waiting for the ERAT entry to be filled. To improve performance.

【0076】本発明の理解に必要不可欠ではないロジッ
ク回路の図や説明は、ここでは便宜上省略してある。例
えば、アレイ502にMRUビットを維持するロジッ
ク、パリティ・エラーを検出して補正処置を取るロジッ
ク等は省略してある。
Illustrations and descriptions of logic circuits that are not essential for understanding the present invention are omitted here for convenience. For example, logic to maintain the MRU bits in array 502, logic to detect parity errors and take corrective action, etc. are omitted.

【0077】好適実施例では、キャッシュ・ヒットを確
認する目的で、ディレクトリ・アレイの実ページ番号と
比較するよう実アドレス(実ページ番号の一部)を提供
するためにERATが用いられる。この設計が望ましい
のは、ERATが実ページ番号への高速変換を行うから
である。高速変換は、基本的なアドレス変換メカニズム
の応答時間に依存しない。これにより、システム設計者
は一定の制約を免れる。つまり、Iキャッシュで1サイ
クルの応答時間をサポートするため必要な高速度でアド
レスを変換するための基本アドレス変換メカニズムは不
要になる。ただし、別の実施例では、ここで説明してい
る通り、ERATなしに命令キャッシュを構成すること
も可能である。その場合、ディレクトリ・アレイの実ペ
ージ番号と比較する実ページ番号を提供するために、基
本アドレス変換メカニズムが用いられる。また別の実施
例では、L1 Iキャッシュの内部または外部の別のメ
カニズムを使用して実ページ番号を提供することもでき
よう。
In the preferred embodiment, the ERAT is used to provide a real address (part of the real page number) to compare with the real page number of the directory array for the purpose of verifying a cache hit. This design is desirable because ERAT provides high speed conversion to real page numbers. Fast translation does not depend on the response time of the underlying address translation mechanism. This avoids certain restrictions for the system designer. In other words, a basic address translation mechanism for translating addresses at the high speed required to support one cycle of response time in the I-cache is not required. However, in another embodiment, the instruction cache can be configured without an ERAT, as described herein. In that case, a basic address translation mechanism is used to provide a real page number that is compared to the real page number of the directory array. In another embodiment, another mechanism could be used to provide the real page number, either internal or external to the L1 I-cache.

【0078】キャッシュ連想性の数は、好適実施例では
スレッド数と同じである。これは、共通のキャッシュに
対するスレッドの競合を避けるのに有益である。ただ
し、これに代えて、ここで述べているように、スレッド
数がキャッシュ連想性と同じではないキャッシュを設計
することも可能である。例えば、プロセッサによりサポ
ートされるスレッド数が多い場合、スレッド数と同じ程
度のキャッシュ連想性は、競合を避けるためには必ずし
も必要ない。その場合、理論上、連想性がスレッド数よ
りも少ないときに競合の可能性はあるが、その可能性は
充分に小さいと考えられるので、キャッシュ連想性を少
なくすることも許容範囲内である。更に、何らかの競合
の可能性はあるとしても、キャッシュ連想性を1として
も許容できる場合がある。
The number of cache associativity is equal to the number of threads in the preferred embodiment. This is useful to avoid thread contention for a common cache. Alternatively, however, it is possible to design a cache in which the number of threads is not the same as the cache associativity, as described here. For example, if the number of threads supported by the processor is large, cache associativity as high as the number of threads is not necessary to avoid contention. In that case, in theory, there is a possibility of contention when the associativity is smaller than the number of threads, but it is considered that the possibility is sufficiently small, so that it is within an allowable range to reduce the cache associativity. Furthermore, even if there is a possibility of some contention, there is a case where the cache associativity is set to 1 in some cases.

【0079】まとめとして、本発明の構成に関して以下
の事項を開示する。
In summary, the following matters are disclosed regarding the configuration of the present invention.

【0080】(1)マルチスレッドのコンピュータ処理
装置であって、複数のスレッドの実行をサポートし、そ
れぞれ該複数のスレッドのそれぞれに対応する複数のレ
ジスタ・セットと、命令をデコードするデコード・ロジ
ックと、実行される命令の有効アドレスを生成するシー
ケンス・ロジックを含む命令装置と、前記命令装置によ
り生成される所望の有効アドレスに応答して命令を提供
する、命令キャッシュとを含み、該命令キャッシュは、 a)複数のエントリがあり、それぞれ命令の実アドレス
の一部を含み、前記所望の有効アドレスを使ってエント
リが選択される、ディレクトリ・アレイと、 b)複数のエントリがあり、それぞれ前記ディレクトリ
・アレイのエントリに関連付けられ、少なくとも1つの
命令を含み、前記ディレクトリ・アレイのエントリが前
記所望の有効アドレスを使って選択される、命令アレイ
と、 c)それぞれ前記複数のスレッドに対応し、命令キャッ
シュ・ミスに応答して検索される所望の命令の実アドレ
スの少なくとも一部を記憶する、複数のライン・フィル
・レジスタとを含む、マルチスレッド・コンピュータ処
理装置。 (2)前記命令キャッシュは、 d)複数のエントリを含み、各エントリが有効アドレス
の一部と実アドレスの一部を含み、前記所望の有効アド
レスを使ってエントリが選択される、有効/実アドレス
変換アレイと、前記ライン・フィル・レジスタに記憶さ
れる所望の命令の実アドレスの前記一部は、前記有効/
実アドレス変換アレイのエントリから取得される、前記
(1)記載のマルチスレッド・コンピュータ処理装置。 (3)前記命令キャッシュは、 e)前記有効/実アドレス変換アレイのエントリからの
有効アドレスの前記一部を、前記所望の有効アドレスの
対応する一部と比較して、有効/実アドレス変換アレイ
・ヒットを判定する比較器を含む、前記(2)記載のマ
ルチスレッド・コンピュータ処理装置。 (4)前記ディレクトリ・アレイはNセット(N>1)
に分けられ、前記ディレクトリ・アレイ・エントリはそ
れぞれ、命令の複数の実アドレスの一部を含み、該実ア
ドレス部はそれぞれ、前記ディレクトリ・アレイの該N
セットのうち対応するセットに属し、前記命令アレイは
Nセットに分けられ、各セットは前記ディレクトリ・ア
レイのセットに対応し、前記命令アレイ・エントリはそ
れぞれ複数の命令を含み、各命令は前記命令アレイの該
Nセットに属する、前記(1)記載のマルチスレッド・
コンピュータ処理装置。 (5)前記マルチスレッド・コンピュータ処理装置はN
スレッドの実行をサポートする、前記(4)記載のマル
チスレッド・コンピュータ処理装置。 (6)前記ライン・フィル・レジスタはそれぞれセット
・フィールドを含み、該セット・フィールドは、検索さ
れる所望の命令が検索後に記憶される前記Nセットのう
ちのセットを指定する、前記(4)記載のマルチスレッ
ド・コンピュータ処理装置。 (7)前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
付けられ、前記ディレクトリ・アレイの選択されたエン
トリの関連付けられた部分からの命令の実アドレスの前
記部分を、前記所望の有効アドレスに関連付けられた実
アドレスの共通部分と比較して、キャッシュ・ヒットを
判定する、N個の比較器を含む、前記(4)記載のマル
チスレッド・コンピュータ処理装置。 (8)前記命令キャッシュは、 d)複数のエントリがあり、各エントリは、有効アドレ
スの一部と実アドレスの一部を含み、前記所望の有効ア
ドレスを使ってエントリが選択される、有効/実アドレ
ス変換アレイを含み、前記ライン・フィル・レジスタに
記憶された所望の命令の実アドレスの前記部分が、前記
有効/実アドレス変換アレイのエントリから取得され
る、前記(4)記載のマルチスレッド・コンピュータ処
理装置。 (9)前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
付けられ、前記ディレクトリ・アレイの選択されたエン
トリの関連付けられた部分からの命令の実アドレスの前
記部分を、前記所望の有効アドレスに関連付けられた実
アドレスの共通部分と比較して、キャッシュ・ヒットを
判定し、キャッシュ・ヒットを判定するために比較され
る前記所望の有効アドレスに関連付けられた実アドレス
の前記共通部分は、前記有効/実アドレス変換アレイの
エントリから取得される、N個の比較器を含む、前記
(8)記載のマルチスレッド・コンピュータ処理装置。 (10)マルチスレッド・コンピュータ処理装置であっ
て、それぞれスレッドに対応する複数のレジスタ・セッ
トと、命令をデコードするデコード・ロジックと、実行
される命令の有効アドレスを生成するシーケンス・ロジ
ックとを含む命令装置と、前記命令装置により生成され
る所望の有効アドレスに応答して命令を与える命令キャ
ッシュとを含み、該命令キャッシュは、複数のエントリ
があり、Nセット(N>1)に分けられ、該エントリは
それぞれN部を含み、各エントリ部は該Nセットのうち
のセットに関連付けられ、命令の実アドレスの一部を含
み、前記所望の有効アドレスを使ってエントリが選択さ
れる、ディレクトリ・アレイと、複数のエントリがあ
り、各エントリは前記ディレクトリ・アレイのエントリ
に関連付けられ、複数の命令を含み、Nセットに分けら
れ、各セットは前記ディレクトリ・アレイのセットに対
応し、N部を含み、各エントリ部は前記命令アレイの前
記Nセットのうちのセットに関連付けられ、少なくとも
1つの命令を含み、前記所望の有効アドレスを使ってエ
ントリが選択される、命令アレイと、それぞれ前記ディ
レクトリ・アレイのセットに関連付けられ、前記ディレ
クトリ・アレイの選択されたエントリの関連付けられた
部分からの命令の実アドレスの前記部分を、前記所望の
有効アドレスに関連付けられた実アドレスの共通部分と
比較して、キャッシュ・ヒットを判定する、N個の比較
器と、を含む、マルチスレッド・コンピュータ処理装
置。 (11)前記マルチスレッド・コンピュータ処理装置
は、Nスレッドの実行をサポートする、前記(10)記
載のマルチスレッド・コンピュータ処理装置。 (12)前記命令キャッシュは、 d)複数のエントリがあり、各エントリは有効アドレス
の一部と実アドレスの対応する一部とを含み、前記所望
の有効アドレスを使ってエントリが選択される、有効/
実アドレス変換アレイを含み、キャッシュ・ヒットを判
定するために前記比較器により比較される、前記所望の
有効アドレスに関連付けられた実アドレスの前記共通部
分は、前記有効/実アドレス変換アレイのエントリから
取得される、前記(10)記載のマルチスレッド・コン
ピュータ処理装置。
(1) A multi-threaded computer processing device which supports the execution of a plurality of threads, a plurality of register sets respectively corresponding to each of the plurality of threads, and decode logic for decoding an instruction. , An instruction device including sequence logic for generating an effective address of an instruction to be executed, and an instruction cache for providing the instruction in response to a desired effective address generated by the instruction device, the instruction cache comprising: A) a directory array, wherein there are a plurality of entries, each containing a part of the real address of the instruction, and an entry is selected using the desired effective address; and b) a plurality of entries, each of which contains the directory The directory includes at least one instruction associated with an entry of the array; An instruction array in which a re-array entry is selected using the desired effective address; and c) a real address of a desired instruction, each of which corresponds to the plurality of threads and is retrieved in response to an instruction cache miss. And a plurality of line fill registers storing at least a portion of the multi-threaded computer processing device. (2) the instruction cache includes: d) a plurality of entries, each entry including a part of an effective address and a part of a real address, and an entry selected using the desired effective address. The address translation array and the portion of the real address of the desired instruction stored in the line fill register are stored in the valid /
The multi-thread computer processing device according to (1), wherein the multi-thread computer processing device is obtained from an entry of a real address translation array. (3) the instruction cache includes: e) comparing the portion of the effective address from the entry in the effective / real address translation array with a corresponding portion of the desired effective address, -The multi-threaded computer processing device according to (2), further including a comparator for determining a hit. (4) The directory array has N sets (N> 1)
And each of the directory array entries includes a portion of a plurality of real addresses of an instruction, and the real address portions are respectively associated with the N of the directory array.
Belonging to a corresponding one of the sets, the instruction array is divided into N sets, each set corresponding to the set of directory arrays, the instruction array entries each including a plurality of instructions, each instruction being the instruction The multi-thread according to (1), which belongs to said N sets of arrays.
Computer processing equipment. (5) The multi-thread computer processing device is N
The multi-thread computer processing device according to (4), which supports execution of a thread. (6) the line fill registers each include a set field, the set field specifying a set of the N sets in which a desired instruction to be retrieved is stored after retrieval; A multi-threaded computer processing device as described. (7) the instruction cache is: e) associating the portion of the real address of the instruction from the associated portion of the selected entry of the directory array with the desired validity; The multi-threaded computer processing device according to (4), further including N comparators for determining a cache hit by comparing with a common part of a real address associated with the address. (8) The instruction cache includes: d) a plurality of entries, each entry including a part of an effective address and a part of a real address, and an entry is selected using the desired effective address. The multi-thread of claim 4 including a real address translation array, wherein the portion of the real address of the desired instruction stored in the line fill register is obtained from an entry in the valid / real address translation array. -Computer processing equipment. (9) the instruction cache is: e) associating the portion of the real address of the instruction from the associated portion of the selected entry of the directory array with the desired validity, each associated with the set of directory arrays; Determining a cache hit in comparison with the intersection of the real addresses associated with the address; and the intersection of the real address associated with the desired effective address to be compared to determine the cache hit, The multi-threaded computer processing device according to (8), further comprising N comparators obtained from the valid / real address translation array entry. (10) A multi-threaded computer processing device, comprising: a plurality of register sets each corresponding to a thread; decode logic for decoding an instruction; and sequence logic for generating an effective address of an instruction to be executed. An instruction cache for providing instructions in response to a desired effective address generated by the instruction cache, the instruction cache having a plurality of entries, divided into N sets (N>1); The entries each include N parts, each entry part being associated with a set of the N sets, including a portion of the real address of the instruction, and selecting an entry using the desired effective address. There is an array and a plurality of entries, each entry associated with an entry of the directory array, , Wherein each set corresponds to the set of directory arrays and includes N portions, and each entry portion is associated with a set of the N sets of the instruction array and includes at least one And an array of instructions, each of which is associated with a set of the directory arrays, and from an associated portion of the selected entries of the directory array, the entries being selected using the desired effective address. N comparators comparing the portion of the real address of the instruction with a common portion of the real address associated with the desired effective address to determine a cache hit. apparatus. (11) The multi-thread computer processing device according to (10), wherein the multi-thread computer processing device supports execution of N threads. (12) The instruction cache includes: d) a plurality of entries, each entry including a part of an effective address and a corresponding part of a real address, and an entry is selected using the desired effective address; Effectiveness/
The common portion of the real address associated with the desired effective address, including the real address translation array and compared by the comparator to determine a cache hit, is derived from an entry in the effective / real address translation array. The multi-thread computer processing device according to (10), which is acquired.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の好適実施例に従った、CPUが1つの
コンピュータ・システムの主なハードウェア構成要素の
図である。
FIG. 1 is a diagram of the main hardware components of a single CPU computer system in accordance with a preferred embodiment of the present invention.

【図2】本発明の好適実施例に従った、CPUが複数の
コンピュータ・システムの主なハードウェア構成要素の
図である。
FIG. 2 is a diagram of the main hardware components of a computer system with multiple CPUs, according to a preferred embodiment of the present invention.

【図3】好適実施例に従ったコンピュータ・システムの
中央処理装置の図である。
FIG. 3 is a diagram of a central processing unit of a computer system according to a preferred embodiment.

【図4】好適実施例に従ったL1命令キャッシュの主な
構成要素の図である。
FIG. 4 is a diagram of the main components of an L1 instruction cache according to a preferred embodiment.

【図5】好適実施例に従った有効/実アドレス・テーブ
ルとこれに関連する制御構造の図である。
FIG. 5 is a diagram of a valid / real address table and associated control structure in accordance with a preferred embodiment.

【図6】好適実施例に従った有効/実アドレス・テーブ
ルとこれに関連する制御構造の図である。
FIG. 6 is a diagram of a valid / real address table and associated control structure in accordance with a preferred embodiment.

【図7】好適実施例に従ったL1命令キャッシュとこれ
に関連する制御構造の図である。
FIG. 7 is a diagram of an L1 instruction cache and its associated control structure according to a preferred embodiment.

【図8】好適実施例に従ったL1命令キャッシュの命令
アレイとこれに関連する制御構造の図である。
FIG. 8 is a diagram of an instruction array of an L1 instruction cache and associated control structures according to a preferred embodiment.

【図9】好適実施例に従ってキャッシュ・ライン・フィ
ルを生成する主な制御ロジックの図である。
FIG. 9 is a diagram of the main control logic for generating a cache line fill in accordance with a preferred embodiment.

【図10】好適実施例に従ってキャッシュ・ライン・フ
ィルを生成する主な制御ロジックの図である。
FIG. 10 is a diagram of the main control logic for generating a cache line fill in accordance with a preferred embodiment.

【図11】好適実施例に従ったアドレス変換の図であ
る。
FIG. 11 is a diagram of address translation according to a preferred embodiment.

【符号の説明】[Explanation of symbols]

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 ページ・テーブル・メカニズム
100 System 101, 101A, 101B, 101C, 101D C
PU 102 Main memory 105 Bus interface 106, 106A, 106B, 106C, 106D Level 1 instruction cache (L1 I cache) 107, 107A, 107B, 107C, 107D Level 1 data cache (L1 D cache) 108, 108A, 108B, 108C, 108D Level 2 cache (L2 cache) 109 Memory bus 110 System bus 111, 112, 113, 114, 115 I / O processing unit (IOP) 201 Instruction unit 202 Branch unit 203 Sequential buffer 204 Switching buffer 205 Branch Buffer 206 Decode / Dispatch Unit 211 Execution Unit 212 Floating Point Unit (FPU) 213 S Pipe 214 M Pipe 215 R Pipe 16 Floating-point register 217 General-purpose register 221 Storage controller 222 Memory management device 223 L2 cache directory 224 L2 cache interface 225 Memory bus interface 232 L1 I-cache instruction bus 233 Cache fill bus 301 Effective / real address table (ERAT) 302 I-cache directory array 303 I-cache instruction array 304, 305, 306 Comparator 310 ERAT 310 403 Individual array 404 Individual register 405 ERAT logic 410 ERAT hit signal 411 Protection exception signal 412 ERAT miss signal 413 Cache inhibit signal 501 , 601 selection logic 502 66-bit × 512 array 503 1-bit × 512 array 50 , 602 selector 510 I cache hit signal 511 set select line 604 cache write bus 801 effective address 701 line fill start logic 704, 705 write signal 710, 711 LFAddr register 720 set logic 802 virtual address 803 real address 814 virtual segment ID 811 36-bit valid segment ID 812 16-bit page number 813 12-bit byte index 814 52-bit virtual segment ID 815 52-bit real page number 821 Segment table mechanism 822 Page table mechanism

───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/12 G06F 12/12 A (72)発明者 リチャード・ウィリアム・ドゥーイング アメリカ合衆国55901、ミネソタ州ロチェ スター、ノース・ウエスト、フィフティナ インス・ストリート 2532 (72)発明者 ロナルド・ニック・カーラ アメリカ合衆国55991、ミネソタ州ザンブ ロ・フォールス、イースト・ライアンズ・ ベイ・ロード、ボックス 77エイ、レイル ロード 1 (72)発明者 ステファン・ジョセフ・シュワイン アメリカ合衆国55044、ミネソタ州レイク ビル、ジュビリー・ウェイ 17902−エイ──────────────────────────────────────────────────続 き Continued on the front page (51) Int.Cl. 7 Identification FI theme coat ゛ (Reference) G06F 12/12 G06F 12/12 A (72) Inventor Richard William Doing USA 55901, Rochester, Minnesota, Fiftina Inns Street, North West 2532 (72) Inventor Ronald Nick Carla United States 55991, Zambro Falls, MN, East Ryans Bay Road, Box 77A, Rail Road 1 (72) Inventor Stephen Joseph Schwein 17902-A Jubilee Way, Lakeville, MN 55044 United States 55044

Claims (12)

【特許請求の範囲】[Claims] 【請求項1】マルチスレッドのコンピュータ処理装置で
あって、 複数のスレッドの実行をサポートし、それぞれ該複数の
スレッドのそれぞれに対応する複数のレジスタ・セット
と、 命令をデコードするデコード・ロジックと、実行される
命令の有効アドレスを生成するシーケンス・ロジックを
含む命令装置と、 前記命令装置により生成される所望の有効アドレスに応
答して命令を提供する、命令キャッシュとを含み、該命
令キャッシュは、 a)複数のエントリがあり、それぞれ命令の実アドレス
の一部を含み、前記所望の有効アドレスを使ってエント
リが選択される、ディレクトリ・アレイと、 b)複数のエントリがあり、それぞれ前記ディレクトリ
・アレイのエントリに関連付けられ、少なくとも1つの
命令を含み、前記ディレクトリ・アレイのエントリが前
記所望の有効アドレスを使って選択される、命令アレイ
と、 c)それぞれ前記複数のスレッドに対応し、命令キャッ
シュ・ミスに応答して検索される所望の命令の実アドレ
スの少なくとも一部を記憶する、複数のライン・フィル
・レジスタとを含む、マルチスレッド・コンピュータ処
理装置。
1. A multi-threaded computer processing device, comprising: a plurality of register sets each supporting execution of a plurality of threads, each corresponding to each of the plurality of threads; decoding logic for decoding instructions; An instruction device including sequence logic for generating an effective address of an instruction to be executed; and an instruction cache for providing the instruction in response to a desired effective address generated by the instruction device, the instruction cache comprising: a) a directory array, where there are a plurality of entries, each containing a portion of the real address of the instruction, and the entry is selected using the desired effective address; The directory associated with an entry of the array and including at least one instruction; An instruction array in which an entry in the array is selected using the desired effective address; and c) at least a real address of a desired instruction, each of which corresponds to the plurality of threads and is retrieved in response to an instruction cache miss. A multi-threaded computer processing device including a plurality of line fill registers for storing a portion.
【請求項2】前記命令キャッシュは、 d)複数のエントリを含み、各エントリが有効アドレス
の一部と実アドレスの一部を含み、前記所望の有効アド
レスを使ってエントリが選択される、有効/実アドレス
変換アレイと、 前記ライン・フィル・レジスタに記憶される所望の命令
の実アドレスの前記一部は、前記有効/実アドレス変換
アレイのエントリから取得される、 請求項1記載のマルチスレッド・コンピュータ処理装
置。
2. The instruction cache, comprising: d) a plurality of entries, each entry including a portion of a valid address and a portion of a real address, wherein an entry is selected using the desired valid address. 2. The multi-thread of claim 1, wherein the real address translation array and the portion of the real address of the desired instruction stored in the line fill register are obtained from an entry in the valid / real address translation array. -Computer processing equipment.
【請求項3】前記命令キャッシュは、 e)前記有効/実アドレス変換アレイのエントリからの
有効アドレスの前記一部を、前記所望の有効アドレスの
対応する一部と比較して、有効/実アドレス変換アレイ
・ヒットを判定する比較器を含む、 請求項2記載のマルチスレッド・コンピュータ処理装
置。
3. The instruction cache further comprises: e) comparing the portion of the effective address from the entry in the effective / real address translation array with a corresponding portion of the desired effective address. 3. The multi-threaded computer processing device of claim 2, including a comparator that determines a translation array hit.
【請求項4】前記ディレクトリ・アレイはNセット(N
>1)に分けられ、前記ディレクトリ・アレイ・エント
リはそれぞれ、命令の複数の実アドレスの一部を含み、
該実アドレス部はそれぞれ、前記ディレクトリ・アレイ
の該Nセットのうち対応するセットに属し、 前記命令アレイはNセットに分けられ、各セットは前記
ディレクトリ・アレイのセットに対応し、前記命令アレ
イ・エントリはそれぞれ複数の命令を含み、各命令は前
記命令アレイの該Nセットに属する、 請求項1記載のマルチスレッド・コンピュータ処理装
置。
4. The directory array includes N sets (N sets).
> 1), wherein each of the directory array entries includes a portion of a plurality of real addresses of an instruction;
The real address portions each belong to a corresponding set of the N sets of the directory array, the instruction array is divided into N sets, each set corresponding to the set of directory arrays, The multi-threaded computer processing apparatus of claim 1, wherein each entry includes a plurality of instructions, each instruction belonging to said N sets of said instruction array.
【請求項5】前記マルチスレッド・コンピュータ処理装
置はNスレッドの実行をサポートする、請求項4記載の
マルチスレッド・コンピュータ処理装置。
5. The multi-threaded computer processing device of claim 4, wherein said multi-threaded computer processing device supports N-thread execution.
【請求項6】前記ライン・フィル・レジスタはそれぞれ
セット・フィールドを含み、該セット・フィールドは、
検索される所望の命令が検索後に記憶される前記Nセッ
トのうちのセットを指定する、請求項4記載のマルチス
レッド・コンピュータ処理装置。
6. The line fill registers each include a set field, the set field comprising:
5. The multi-threaded computer processing device of claim 4, wherein the desired instruction to be searched specifies a set of the N sets that are stored after the search.
【請求項7】前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
付けられ、前記ディレクトリ・アレイの選択されたエン
トリの関連付けられた部分からの命令の実アドレスの前
記部分を、前記所望の有効アドレスに関連付けられた実
アドレスの共通部分と比較して、キャッシュ・ヒットを
判定する、N個の比較器を含む、 請求項4記載のマルチスレッド・コンピュータ処理装
置。
7. The instruction cache includes: e) each associated with the set of directory arrays, and retrieving the portion of an instruction's real address from an associated portion of a selected entry of the directory array to the desired address. 5. The multi-threaded computer processing device of claim 4, further comprising N comparators for determining a cache hit as compared to a common portion of the real address associated with the effective address of the multi-threaded address.
【請求項8】前記命令キャッシュは、 d)複数のエントリがあり、各エントリは、有効アドレ
スの一部と実アドレスの一部を含み、前記所望の有効ア
ドレスを使ってエントリが選択される、有効/実アドレ
ス変換アレイを含み、 前記ライン・フィル・レジスタに記憶された所望の命令
の実アドレスの前記部分が、前記有効/実アドレス変換
アレイのエントリから取得される、請求項4記載のマル
チスレッド・コンピュータ処理装置。
8. The instruction cache includes: d) a plurality of entries, each entry including a part of an effective address and a part of a real address, and an entry is selected using the desired effective address; 5. The multi-function system according to claim 4, further comprising a valid / real address translation array, wherein said portion of a real address of a desired instruction stored in said line fill register is obtained from an entry in said valid / real address translation array. Thread computer processing unit.
【請求項9】前記命令キャッシュは、 e)それぞれ前記ディレクトリ・アレイのセットに関連
付けられ、前記ディレクトリ・アレイの選択されたエン
トリの関連付けられた部分からの命令の実アドレスの前
記部分を、前記所望の有効アドレスに関連付けられた実
アドレスの共通部分と比較して、キャッシュ・ヒットを
判定し、キャッシュ・ヒットを判定するために比較され
る前記所望の有効アドレスに関連付けられた実アドレス
の前記共通部分は、前記有効/実アドレス変換アレイの
エントリから取得される、N個の比較器を含む、 請求項8記載のマルチスレッド・コンピュータ処理装
置。
9. The instruction cache further comprises: e) each associated with the set of directory arrays, and retrieving the portion of an instruction's real address from an associated portion of a selected entry of the directory array to the desired portion. Determining a cache hit in comparison with a common portion of a real address associated with the effective address of the first one, and comparing the common portion of the real address associated with the desired valid address to be compared to determine the cache hit 9. The multi-threaded computer processing device of claim 8, further comprising: N comparators obtained from the valid / real address translation array entries.
【請求項10】マルチスレッド・コンピュータ処理装置
であって、 それぞれスレッドに対応する複数のレジスタ・セット
と、 命令をデコードするデコード・ロジックと、実行される
命令の有効アドレスを生成するシーケンス・ロジックと
を含む命令装置と、 前記命令装置により生成される所望の有効アドレスに応
答して命令を与える命令キャッシュとを含み、該命令キ
ャッシュは、 複数のエントリがあり、Nセット(N>1)に分けら
れ、該エントリはそれぞれN部を含み、各エントリ部は
該Nセットのうちのセットに関連付けられ、命令の実ア
ドレスの一部を含み、前記所望の有効アドレスを使って
エントリが選択される、ディレクトリ・アレイと、 複数のエントリがあり、各エントリは前記ディレクトリ
・アレイのエントリに関連付けられ、複数の命令を含
み、Nセットに分けられ、各セットは前記ディレクトリ
・アレイのセットに対応し、N部を含み、各エントリ部
は前記命令アレイの前記Nセットのうちのセットに関連
付けられ、少なくとも1つの命令を含み、前記所望の有
効アドレスを使ってエントリが選択される、命令アレイ
と、 それぞれ前記ディレクトリ・アレイのセットに関連付け
られ、前記ディレクトリ・アレイの選択されたエントリ
の関連付けられた部分からの命令の実アドレスの前記部
分を、前記所望の有効アドレスに関連付けられた実アド
レスの共通部分と比較して、キャッシュ・ヒットを判定
する、N個の比較器と、 を含む、マルチスレッド・コンピュータ処理装置。
10. A multi-threaded computer processing device, comprising: a plurality of register sets each corresponding to a thread; decode logic for decoding instructions; and sequence logic for generating effective addresses of instructions to be executed. And an instruction cache for providing an instruction in response to a desired effective address generated by the instruction device. The instruction cache has a plurality of entries and is divided into N sets (N> 1). Each of the entries includes N portions, each entry portion being associated with a set of the N sets, including a portion of a real address of an instruction, and selecting an entry using the desired effective address. There is a directory array and a plurality of entries, each entry associated with an entry in the directory array. And a plurality of instructions, each of which corresponds to the set of directory arrays and includes N portions, each entry portion being associated with a set of the N sets of the instruction array. An array of instructions, each including at least one instruction, wherein an entry is selected using the desired effective address, each associated with a set of the directory arrays, and associated with the selected entry of the directory arrays. N comparators comparing the portion of the real address of the instruction from the portion with a common portion of the real address associated with the desired effective address to determine a cache hit; -Computer processing equipment.
【請求項11】前記マルチスレッド・コンピュータ処理
装置は、Nスレッドの実行をサポートする、請求項10
記載のマルチスレッド・コンピュータ処理装置。
11. The multi-threaded computer processing device supports N threads of execution.
A multi-threaded computer processing device as described.
【請求項12】前記命令キャッシュは、 d)複数のエントリがあり、各エントリは有効アドレス
の一部と実アドレスの対応する一部とを含み、前記所望
の有効アドレスを使ってエントリが選択される、有効/
実アドレス変換アレイを含み、 キャッシュ・ヒットを判定するために前記比較器により
比較される、前記所望の有効アドレスに関連付けられた
実アドレスの前記共通部分は、前記有効/実アドレス変
換アレイのエントリから取得される、 請求項10記載のマルチスレッド・コンピュータ処理装
置。
12. The instruction cache includes: d) a plurality of entries, each entry including a part of an effective address and a corresponding part of a real address, and the entry is selected using the desired effective address. Valid /
The common portion of the real address associated with the desired effective address, which is compared by the comparator to determine a cache hit, includes a real address translation array from the entry in the effective / real address translation array. The multi-threaded computer processing device of claim 10, obtained.
JP2000062593A 1999-03-10 2000-03-07 Instruction cache for multithreaded processors Expired - Fee Related JP3431878B2 (en)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=23013309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000062593A Expired - Fee Related JP3431878B2 (en) 1999-03-10 2000-03-07 Instruction cache for multithreaded processors

Country Status (2)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342163A (en) * 2001-05-15 2002-11-29 Fujitsu Ltd Method for controlling cache for multithread processor
JP2005529383A (en) * 2002-03-29 2005-09-29 サン・マイクロシステムズ・インコーポレイテッド Time-multiplexed speculative multithreading to support single-threaded applications
US7493448B2 (en) 2002-06-24 2009-02-17 Nec Corporation Prevention of conflicting cache hits without an attendant increase in hardware
JP2014078248A (en) * 2005-10-20 2014-05-01 Qualcomm Incorporated Caching memory attribute indicators with cached memory data
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
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
CN100426260C (en) * 2005-12-23 2008-10-15 中国科学院计算技术研究所 Fetching method and system for multiple line distance processor using path predicting technology
JP5347019B2 (en) * 2009-04-10 2013-11-20 パナソニック株式会社 Cache memory device, cache memory control method, program, and integrated circuit
JP2013050745A (en) * 2009-11-26 2013-03-14 Nec Corp Exclusive control device, method, and program

Citations (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
JPS56140575A (en) * 1980-03-17 1981-11-02 Ibm Cash memory system
JPS58182180A (en) * 1982-04-16 1983-10-25 Hitachi Ltd Buffer storage device
JPS5975483A (en) * 1982-10-22 1984-04-28 Fujitsu Ltd Buffer storage control system
JPS63254544A (en) * 1987-04-10 1988-10-21 Nippon Telegr & Teleph Corp <Ntt> Control system for address conversion
JPS63284648A (en) * 1987-05-18 1988-11-21 Fujitsu Ltd Cache memory control system
JPH025173A (en) * 1988-01-15 1990-01-10 Quantel Ltd Data processor and communication system
JPH0320847A (en) * 1989-06-19 1991-01-29 Fujitsu Ltd Cache memory control system
JPH03216744A (en) * 1990-01-22 1991-09-24 Fujitsu Ltd Built-in cache memory control system
JPH03235143A (en) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd Cache memory controller
JPH04205636A (en) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd High speed address translation device
JPH06502033A (en) * 1990-10-19 1994-03-03 クレイ・リサーチ・インコーポレイテッド Scalable parallel vector computer system
JPH06161900A (en) * 1992-09-24 1994-06-10 Matsushita Electric Ind Co Ltd Cache memory device

Patent Citations (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
JPS56140575A (en) * 1980-03-17 1981-11-02 Ibm Cash memory system
JPS58182180A (en) * 1982-04-16 1983-10-25 Hitachi Ltd Buffer storage device
JPS5975483A (en) * 1982-10-22 1984-04-28 Fujitsu Ltd Buffer storage control system
JPS63254544A (en) * 1987-04-10 1988-10-21 Nippon Telegr & Teleph Corp <Ntt> Control system for address conversion
JPS63284648A (en) * 1987-05-18 1988-11-21 Fujitsu Ltd Cache memory control system
JPH025173A (en) * 1988-01-15 1990-01-10 Quantel Ltd Data processor and communication system
JPH0320847A (en) * 1989-06-19 1991-01-29 Fujitsu Ltd Cache memory control system
JPH03216744A (en) * 1990-01-22 1991-09-24 Fujitsu Ltd Built-in cache memory control system
JPH03235143A (en) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd Cache memory controller
JPH06502033A (en) * 1990-10-19 1994-03-03 クレイ・リサーチ・インコーポレイテッド Scalable parallel vector computer system
JPH04205636A (en) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd High speed address translation device
JPH06161900A (en) * 1992-09-24 1994-06-10 Matsushita Electric Ind Co Ltd Cache memory device

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342163A (en) * 2001-05-15 2002-11-29 Fujitsu Ltd Method for controlling cache for multithread processor
JP2005529383A (en) * 2002-03-29 2005-09-29 サン・マイクロシステムズ・インコーポレイテッド Time-multiplexed speculative multithreading to support single-threaded applications
US7493448B2 (en) 2002-06-24 2009-02-17 Nec Corporation Prevention of conflicting cache hits without an attendant increase in hardware
JP2014078248A (en) * 2005-10-20 2014-05-01 Qualcomm Incorporated Caching memory attribute indicators with cached memory data
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams

Also Published As

Publication number Publication date
CN1168025C (en) 2004-09-22
CN1267024A (en) 2000-09-20
JP3431878B2 (en) 2003-07-28

Similar Documents

Publication Publication Date Title
US6161166A (en) Instruction cache for multithreaded processor
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
JP3577331B2 (en) Cache memory system and method for manipulating instructions in a microprocessor
US5623627A (en) Computer memory architecture including a replacement cache
US6772316B2 (en) Method and apparatus for updating and invalidating store data
US5694568A (en) Prefetch system applicable to complex memory access schemes
US6647466B2 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
JP2554449B2 (en) Data processing system having cache memory
US7415575B1 (en) Shared cache with client-specific replacement policy
JP4065660B2 (en) Translation index buffer with distributed functions in parallel
US5715427A (en) Semi-associative cache with MRU/LRU replacement
JPH06318177A (en) Method, device and computer system for reducing cache mistake penalty
JPH08272682A (en) Tag separated at inside of load/store unit provided with load buffer and method for access to data array as well as apparatus provided with said array
JPH1074166A (en) Multilevel dynamic set predicting method and its device
US10831675B2 (en) Adaptive tablewalk translation storage buffer predictor
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
KR20030010727A (en) A translation lookaside buffer flush filter
JP3245125B2 (en) Pseudo-definition I-cache inclusion for vertical cache
US5737749A (en) Method and system for dynamically sharing cache capacity in a microprocessor
JP3431878B2 (en) Instruction cache for multithreaded processors
JP2004199677A (en) System for and method of operating cache
US5926841A (en) Segment descriptor cache for a processor
WO1997034229A9 (en) Segment descriptor cache for a processor

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