JPH07160580A - プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法 - Google Patents

プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法

Info

Publication number
JPH07160580A
JPH07160580A JP6257826A JP25782694A JPH07160580A JP H07160580 A JPH07160580 A JP H07160580A JP 6257826 A JP6257826 A JP 6257826A JP 25782694 A JP25782694 A JP 25782694A JP H07160580 A JPH07160580 A JP H07160580A
Authority
JP
Japan
Prior art keywords
physical
tag
address
linear
cache
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.)
Withdrawn
Application number
JP6257826A
Other languages
English (en)
Inventor
David B Witt
デイビッド・ビィ・ウィット
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07160580A publication Critical patent/JPH07160580A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed

Abstract

(57)【要約】 【目的】 キャッシュが外部バスによって素早くアクセ
スされ、一方機能ユニットのための論理アドレスへの高
速変換が可能なプロセッサを提供する。 【構成】 線形にアドレス指定可能なキャッシュ10
4,150と、物理アドレスおよび線形アドレスを変換
する第1の変換回路と、線形アドレスおよび論理アドレ
スを変換する第2の変換回路とをマイクロプロセッサに
設ける。プロセッサの機能ユニットは論理アドレスで、
キャッシュは線形アドレスで、それぞれアドレス指定さ
れる。

Description

【発明の詳細な説明】
【0001】
【発明の背景】この発明はマイクロプロセッサに関し、
より特定的には、高性能キャッシュを有するマイクロプ
ロセッサを提供することに関する。
【0002】マイクロプロセッサは多くの産業の至ると
ころで広範囲に使用されている。どんなマイクロプロセ
ッサであってもその目標とするところは情報をすばやく
処理することである。マイクロプロセッサが情報を処理
する速度を上げるために使用される1つの技術は、マイ
クロプロセッサにキャッシュと呼ばれる高速ローカルメ
モリを含むアーキテクチャを与えることである。
【0003】キャッシュは命令およびデータを一時的に
ストアするためにマイクロプロセッサによって使用され
る。命令およびデータの双方をストアするキャッシュは
統合キャッシュと呼ばれ、命令のみをストアするキャッ
シュは命令キャッシュと呼ばれ、データのみをストアす
るキャッシュはデータキャッシュと呼ばれる。マイクロ
プロセッサアーキテクチャに統合キャッシュを与える
か、または命令キャッシュおよびデータキャッシュを与
えるかは設計上の選択事項である。
【0004】広範囲に受け入れられている1つのマイク
ロプロセッサアーキテクチャはX86アーキテクチャで
ある。このアーキテクチャは、始めにi386(商標)
マイクロプロセッサに導入されたものであるが、i48
6(商標)マイクロプロセッサおよびペンティアム(Pe
ntium )(商標)マイクロプロセッサの双方の基本アー
キテクチャでもあり、これらはすべてカリフォルニア
(California)州、サンタ・クララ(Santa Clara )の
インテル・コーポレイション(the Intel Corporation
)から入手可能である。X86アーキテクチャは3つ
の別個のタイプのアドレス、つまり論理(つまり仮想)
アドレス、線形アドレスおよび物理アドレスを扱う。
【0005】論理アドレスはセグメントベースアドレス
からのオフセットを示す。セグメントベースアドレスは
セレクタを介してアクセスされる。具体的には、セレク
タはセグメントレジスタにストアされ、グローバルディ
スクリプタテーブル(GDT)内の位置を指すインデッ
クスである。GDT位置はセグメントベースアドレスに
対応する線形アドレスをストアする。
【0006】論理アドレスと線形アドレスとの間の変換
はマイクロプロセッサが実モードにあるか保護モードに
あるかに依存する。マイクロプロセッサが実モードにあ
る場合、セグメンテーションユニットはセレクタを4ビ
ット左にシフトし、その結果をオフセットに加えて線形
アドレスを形成する。マイクロプロセッサが保護モード
にある場合、セグメンテーションユニットはセレクタに
よって指された線形ベースアドレスをオフセットに加え
て、線形アドレスを与える。
【0007】物理アドレスはマイクロプロセッサのアド
レスピン上に現われるアドレスであり、外部メモリを物
理的にアドレス指定するために使用される。物理アドレ
スは必ずしも線形アドレスに対応しない。もしページン
グがイネーブルされていなければ、32ビットの線形ア
ドレスは物理アドレスに対応する。ページングがイネー
ブルされれば、線形アドレスは物理アドレスに変換され
なければならない。ページングユニットは、通常はマイ
クロプロセッサのメモリ管理ユニットの一部として含ま
れており、この変換を実行する。
【0008】ページングユニットは線形アドレスを物理
アドレスに変換するために2つのレベルのテーブルを使
用する。第1レベルのテーブルはページディレクトリで
あり、第2レベルのテーブルはページテーブルである。
ページディレクトリは各々がページテーブルのアドレス
およびページテーブルについての情報を含む、複数のペ
ージディレクトリエントリを含む。線形アドレスの上位
10ビット(A22−A31)は、ページディレクトリ
エントリを選択するためのインデックスとして使用され
る。ページテーブルは各々がページフレームの開始アド
レスおよびそのページについての統計情報を含む、複数
のページテーブルエントリを含む。線形アドレスのアド
レスビットA12−A21は、ページテーブルエントリ
のうちの1つを選択するためのインデックスとして使用
される。ページフレームの開始アドレスは線形アドレス
の下位12ビットと連結されて物理アドレスを形成す
る。
【0009】各メモリ動作につき2つのレベルのテーブ
ルにアクセスすることはマイクロプロセッサの性能に影
響を及ぼすので、メモリ管理ユニットは一般に最も最近
にアクセスされたページテーブルエントリのキャッシュ
をさらに含み、このキャッシュはトランスレーションル
ックアサイドバッファ(TLB)と呼ばれる。マイクロ
プロセッサはエントリがTLB内にないときにのみペー
ジングユニットを使用する。
【0010】キャッシュを含むX86アーキテクチャに
従う最初のプロセッサは、8Kバイトの統合キャッシュ
を含む486プロセッサであった。ペンティアム(商
標)プロセッサは別個の8Kバイトの命令およびデータ
キャッシュを含む。486プロセッサキャッシュおよび
ペンティアム(商標)プロセッサキャッシュは物理アド
レスを介してアクセスされるが、これらのプロセッサの
機能ユニットは論理アドレスを使って動作する。したが
って、機能ユニットがこれらのキャッシュへのアクセス
を要求した場合、論理アドレスは線形アドレスに変換さ
れ、次に物理アドレスに変換されなければならない。
【0011】X86アーキテクチャ以外のマイクロプロ
セッサアーキテクチャにおいては、キャッシュヒット時
にアドレス変換時間を排除するために仮想的にアドレス
指定されたキャッシュを使用することが知られている。
しかしながら、入出力デバイス(I/O)は物理アドレ
スを使用するので、I/Oがキャッシュと相互に作用す
るためにはマッピングが必要である。これらのシステム
では、一般には2つのレベルのアドレッシング、つまり
仮想および物理アドレッシングしかなく、物理的にアド
レス指定されたI/Oデバイスが仮想的にアドレス指定
されたキャッシュと相互に作用するためには1回の変換
でよい。。加えて、仮想的にアドレス指定されたキャッ
シュを使用した場合には、プロセスが切換えられるたび
に、仮想アドレスは異なった物理アドレスを参照し、ゆ
えに仮想的にアドレス指定されたキャッシュエントリが
潜在的に無効であるのでキャッシュはフラッシュされな
ければならない。加えて、仮想的にアドレス指定された
キャッシュを使用した場合には、2つの異なった仮想ア
ドレスが同一の物理アドレスに対応することが可能であ
る。これらの複製アドレスはエイリアスと呼ばれ、同じ
物理アドレスからの情報を有する2つの位置が仮想キャ
ッシュに存在することになり、これらの位置の一方の情
報しか修正されない。
【0012】
【発明の概要】X86アーキテクチャに従うマイクロプ
ロセッサに線形にアドレス指定可能なキャッシュを与え
ることによって、マイクロプロセッサの機能ユニットを
使用する動作のために論理アドレスへの高速変換を許容
しながら、外部バスによってキャッシュを素早くアクセ
ス可能であることがわかった。加えて、線形タグアレイ
およびその線形タグアレイに対応する物理タグアレイを
与えることによって、マイクロプロセッサキャッシュの
内容は、主命令およびデータアクセス処理経路の速度を
遅くすることなく、外部バスから有利にモニタすること
ができることもかわった。
【0013】一実施例において、この発明は、物理アド
レスを使用して外部のデバイスと相互に作用する、情報
を処理するためのプロセッサに関する。このプロセッサ
は複数の機能ユニットと、複数の機能ユニットが使用す
るための情報を一時的にストアするためのキャッシュ
と、物理アドレスと線形アドレスとの間の変換を行な
い、プロセッサ外部のデバイスがキャッシュと通信でき
るようにする第1の変換回路と、線形アドレスと論理ア
ドレスとの間の変換を行ない、機能ユニットがキャッシ
ュと通信できるようにする第2の変換回路とを含む。機
能ユニットは論理アドレスを使用してアドレス指定さ
れ、キャッシュは線形アドレスを使用してアドレス指定
される。
【0014】この発明はキャッシュを有するシステムを
有利に与えるものであり、このシステムではキャッシュ
の線形アドレスから外部物理アドレスへの変換の際に遅
延はなく、キャッシュの線形アドレスから命令ポインタ
の論理アドレスへの変換の際に遅延はなく、物理タグの
みがチェックされるので外部バスウォッチングに対して
機能停止は要求されず、セグメント更新時に無効化は要
求されず、線形タグはTLBの更新時に無効化される必
要はなく、かつシステムは単一の統合TLBを使用す
る。
【0015】
【好ましい実施例の説明】以下はこの発明を実行するた
めの最良と考えられるモードの詳細な説明である。この
説明は発明の例示であることが意図され、制限であると
解釈されるべきではない。
【0016】図1を参照して、この発明はX86命令セ
ットを実行するスーパースカラX86マイクロプロセッ
サ100で考えると最もよく理解できる。マイクロプロ
セッサ100は、486XLバスまたは他の従来のマイ
クロプロセッサバスを介して物理的にアドレス指定され
た外部メモリ101に結合される。マイクロプロセッサ
100は、内部アドレスおよびデータ(IAD)バス1
02、XTARGETバス103、ならびに命令デコー
ダ108に結合されたバイトキュー106に結合される
命令キャッシュ104を含む。命令デコーダ108はR
ISCコア110に結合される。RISCコア110
は、レジスタファイル112、リオーダバッファ11
4、ならびに算術論理ユニット131(ALU0)、算
術論理およびシフトユニット132(ALU1&SH
F)、特殊レジスタブロック133(SRB)、ロード
/ストア機能ユニット134(LSSEC)、分岐セク
ション135(BRNSEC)、ならびに浮動小数点ユ
ニット136(FPU)などの様々な機能ユニットを含
む。
【0017】RISCコア110は機能ユニットに結合
されたAおよびBオペランドバス116、タイプおよび
ディスパッチ(TAD)バス118、ならびに結果タグ
および結果バス140を含む。AおよびBオペランドバ
ス116はまたレジスタファイル112およびリオーダ
バッファ114にも結合される。TADバス118はま
た命令デコーダ108にも結合される。結果バス140
はまたリオーダバッファ114にも結合される。加え
て、分岐セクション135はXターゲットバス103を
介してリオーダバッファ114、命令デコーダ108お
よび命令キャッシュ104に結合される。
【0018】命令キャッシュ104に加えて、マイクロ
プロセッサ100はまたデータキャッシュ150(DC
ACHE)および物理タグ回路162も含む。データキ
ャッシュ150はRISCコアのロード/ストア機能ユ
ニット134およびIADバス102に結合される。物
理タグ回路162はIADバス102を介して命令キャ
ッシュ104およびデータキャッシュ150の双方と相
互に作用する。命令キャッシュ104およびデータキャ
ッシュ150はともに線形的にアドレス指定可能なキャ
ッシュである。しかしながら、命令キャッシュ104お
よびデータキャッシュ150は物理的に別個であり、ど
ちらのキャッシュも同じアーキテクチャを使用して編成
される。つまり、どちらのキャッシュも対応のタグアレ
イとともにストアアレイを含む。
【0019】マイクロプロセッサ100はまたメモリ管
理装置(MMU)164およびバスインタフェースユニ
ット160(BIU)を含む。メモリ管理ユニット16
4はIADバス102および物理タグ回路162と結合
される。バスインタフェースユニット160は物理タグ
回路162およびIADバス102ならびに486XL
バスなどの外部マイクロプロセッサバスに結合される。
【0020】マイクロプロセッサ100は命令のシーケ
ンスを含むコンピュータプログラムを実行する。コンピ
ュータプログラムは典型的にハードディスク、フロッピ
ィディスクまたはコンピュータシステム内に配置される
他の不揮発性記憶媒体にストアされる。プログラムが実
行されると、プログラムはバスインタフェースユニット
160を介してマイクロプロセッサ100によってアク
セスされるメインメモリ101に記憶媒体からロードさ
れる。プログラム命令および関連データが一旦メインメ
モリ101にロードされると、個々の命令が実行に備え
て準備され、最終的にマイクロプロセッサ100によっ
て実行される。
【0021】メインメモリ101にストアされた後、命
令はバスインタフェースユニット160を介して命令キ
ャッシュ104へと送られ、そこで一時的に保持され
る。命令デコーダ108は命令キャッシュ104からバ
イトキュー106を介してその命令を受取り、バイトキ
ュー106はその命令を整列させかつバッファする。命
令デコーダ108は命令を調べ、とるべき適切なアクシ
ョンを決定する。たとえば、デコーダ108は特定の命
令がPUSH、POP、LOAD、AND、OR、EX
OR、ADD、SUB、NOP、JUMP、条件付J
UMP(BRANCH)であるかまたは他の命令である
かを決定する。デコーダ108が決定するどの特定の命
令があるかに依存して、命令はRISCコア110の適
切な機能ユニットにディスパッチされる。
【0022】RISCコア110にディスパッチされる
命令は、典型的に以下のフォーマットの複数のフィール
ド、つまりOP CODE、OPERAND A、OP
ERAND B、DESTINATION REGIS
ERを含む。たとえば、命令ADD A、B、Cはレジ
スタAの内容をレジスタBの内容に加えて、その結果を
レジスタCに置くことを意味する。
【0023】OP CODEはタイプおよびディスパッ
チ(TAD)バス118を介して命令デコーダ108か
らRISCコア110の機能ユニットに与えられる。特
定の命令に対するOP CODEが適切な機能ユニット
に与えられなければならないだけではなく、その命令に
対する指定されたOPERANDもまた取出されて機能
ユニットに送られなければならない。特定のオペランド
の値がメインメモリ101にストアされていれば、この
値は取出されデータキャッシュ150にストアされる。
この値はロードストア部134によってロードされてリ
オーダバッファ114に与えられる。代わりに、特定の
オペランドの値がまだ計算されていなければ、その値を
まず計算し、機能ユニットが実行可能になる前に機能ユ
ニットに与えなければならない。たとえば、現在の命令
が前の命令に依存しているのであれば、前の命令の結果
は現在の命令が実行可能になる前に決定されなければな
らない。この状況を依存性と呼ぶ。
【0024】特定の命令が機能ユニットによって実行さ
れるのに必要なオペランドは、レジスタファイル112
かリオーダバッファ114のいずれかによってオペラン
ドバスに与えられる。オペランドバスはそのオペランド
を適切な機能ユニットに伝える。機能ユニットが一旦O
P CODE、OPERAND A、およびOPERA
ND Bを受取ると、その機能ユニットはその命令を実
行し、その結果を結果バス140上に置く。結果バス1
40は機能ユニットのすべての出力およびリオーダバッ
ファ114に結合されている。
【0025】リオーダバッファ114は先入れ先出し方
式(FIFO)デバイスとして管理される。命令が命令
デコーダ108によってデコードされると、対応のエン
トリがリオーダバッファ114内に割当てられる。命令
によって計算された結果値が命令の実行が完了したとき
に、割当て済エントリに書込まれる。その結果値はその
後レジスタファイル112に書込まれ、その命令に関連
する例外が何もなければ、かつ命令に影響を及ぼす可能
性のある、解決されていない分岐が何もなければ、その
命令は廃棄される。関連のエントリがリオーダバッファ
114の先頭に到達したときに命令が完了していなけれ
ば、リオーダバッファ114の前進は命令が完了するま
で停止される。しかしながら、エントリはさらに割当て
られ続ける。
【0026】各機能ユニットは、その命令に対するオペ
ランドがまだ機能ユニットに利用可能ではないのでまだ
完了していない命令からのOP CODEをストアする
ためのそれぞれの保留ステーション(RS)121−1
26を含む。各保留ステーションは後から保留ステーシ
ョンに到着する抜けているオペランドのための場所を保
留するタグとともに命令のOP CODEをストアす
る。この技術は、解決されていない命令が保留ステーシ
ョンでそのオペランドと組合わされている間に、マイク
ロプロセッサ100が他の命令を実行し続けることを許
容することによって性能を高める。
【0027】マイクロプロセッサ100はデコーダ10
8をRISCコア110の機能ユニットから分離するこ
とによって順序外の発行を与えることができる。具体的
には、リオーダバッファ114および機能ユニットの保
留ステーションが分散命令ウィンドウを効果的に確立す
る。応じて、デコーダ108はたとえすぐに命令が実行
されなくても命令をデコードし続けることができる。命
令ウィンドウは、機能ユニットが前進し、命令を実行し
続けるときに命令を引出す命令のプールとして作用す
る。命令ウィンドウはこのようにマイクロプロセッサ1
00に予見能力を与える。依存性がクリアされ、かつオ
ペランドが利用可能になったとき、ウィンドウのより多
くの命令が機能ユニットによって実行され、デコーダは
ウィンドウをさらに多くのデコードされた命令で満たし
続ける。
【0028】マイクロプロセッサ100はその性能を高
めるためにRISCコアの分岐部135を使用する。分
岐が発生すると、次の命令はその分岐の結果に依存する
ので、プログラムの命令ストリームの分岐はマイクロプ
ロセッサの命令をフェッチする能力を妨げる。応じて、
予測された分岐は、命令キャッシュ104の後続アレイ
にストアされた情報を使用して予測されるのであるが、
分岐部135によって実行される。分岐部135は分岐
の結果を調べて予測された分岐が正しかったかどうかを
決定する。例外または分岐予測誤りがあれば、予測を誤
った分岐命令に続いて割当てられたリオーダバッファ1
14の内容は廃棄される。
【0029】図2を参照して、この発明を参照する命令
キャッシュ104が示される。「可変バイト長命令に特
に適したプリデコードされた命令キャッシュおよびその
ための方法(Pre-Decoded Instruction Cache and Meth
od Therefor Particularly Suitable for Variable Byt
e-Length Instructions )と題された米国特許出願連続
番号第145,905号は、より詳細に命令キャッシュ
104の構造および動作を記載している。この出願を引
用により援用する。命令キャッシュ104は線形的にア
ドレス指定される16Kバイトの4ウエイのセットアソ
シアティブキャッシュである。各セットは256のエン
トリを含み、各エントリは16バイトの命令ブロック、
線形アドレスタグおよび次に実行が予測される分岐情報
を含む。命令キャッシュ104はキャッシュコントロー
ラ170、アドレス回路172、プリデコード回路17
4およびキャッシュアレイ176を含む。キャッシュコ
ントローラ170は制御信号を与えて命令キャッシュ1
04の様々な動作を調整する。アドレス回路172は分
岐部135から受信される論理的目的プログラムカウン
タに基づいて線形フェッチプログラムカウンタ(FET
CH PC)を発生する。アドレス回路172はまた外
部メモリからの命令のプリフェッチに関連するアドレス
生成およびX86保護チェックを行なう。アドレス回路
172は論理アドレスと線形アドレスとの間の変換を行
なうための変換回路として機能する。プリデコード回路
174はIADバス102を介してプリフェッチされた
x86命令バイトを受取り、プリデコードビットを各x
86命令バイトに割当て、プリデコードされたx86命
令バイトをキャッシュアレイ176に書込む。キャッシ
ュアレイ176はプリデコード回路174から受取った
命令をストアし、線形FETCH PC信号によってア
ドレス指定されたときにこれらの命令をバイトキュー1
06に与える。
【0030】キャッシュアレイ176は3つのメインア
レイ、つまり命令キャッシュストアアレイ180、線形
タグアレイ182および後続アレイ184に編成され
る。命令キャッシュストアアレイ180は16バイトの
命令をストアする。線形タグアレイ182は命令に対応
する線形アドレスタグをストアする。後続アレイ184
は命令に対応する、分岐予測を支持するために使用され
る、予測された分岐情報をストアする。これらのアレイ
の各々はアドレス回路172によって与えられる線形F
ETCH PCアドレスによってアドレス指定される。
【0031】図3を参照して、線形FETCH PCア
ドレス186の上位ビットは線形タグアレイ182内に
ストアされたタグと比較される。これらのビットはエン
トリがキャッシュアレイ176にストアされるときに線
形タグとしてストアされる。FETCH PCアドレス
186の中位ビットはアレイ内のブロックをアドレス指
定し、かつアレイのブロックからエントリを取出すため
に使用されるキャッシュインデックスを与える。最下位
ビットは、命令ストアアレイ180にストアされた命令
ブロックのBYTE0からの、取出されたエントリのオ
フセットを与え、かくしてFETCH PCアドレスに
よってアドレス指定された実際のバイトをアクセスす
る。
【0032】キャッシュ104の命令キャッシュエント
リ188は線形アドレスタグエントリ190、命令エン
トリ192および予測された分岐エントリ194を含
む。命令エントリ192は16バイト(IBYTE0−
IBYTE15)ブロックの命令を含む。線形アドレス
タグエントリ190は線形タグ値(LTAG)、線形タ
グ有効ビット(TV)、16バイトの有効ビット(BV
0−BV15)、および有効物理変換ビット(P)を含
む。線形タグ値は線形FETCH PCアドレスの上位
20ビットに対応し、対応のストアアレイエントリにス
トアされたブロックの線形ブロックフレームアドレスを
示す。線形タグ有効値は線形タグ値が有効かどうかを示
す。各バイト有効ビットは16バイト命令エントリの対
応のバイトが有効であるかどうかを示す。有効物理変換
ビットはエントリが成功した物理タグヒットを与えるか
どうかを示す。
【0033】予測された分岐エントリ194は非順次ビ
ット(N)、4ビット分岐ブロックインデックス(BB
I)、および14ビット後続インデックスを含む。非順
次ビットは、アサートされたとき、現在のブロックの命
令の中にテークンと予測された分岐があることを示す。
分岐ブロックインデックスは、非順次ビットがアサート
されたとき、最後に実行が予測された命令バイトの現在
のブロック内のバイトオフセットを示す。後続インデッ
クスは、非順次ビットがアサートされたとき、アクセス
の対象となる後続キャッシュブロックのインデックス
(8ビット)、アクセスの対象となる後続キャッシュブ
ロックのカラム(2ビット)、および実行が予測された
次の命令のブロック内のバイトオフセット(4ビット)
を示す。つまり、分岐ブロックインデックスは現在のブ
ロック内のテークンと予測された分岐命令の最後のバイ
トを示し、一方後続インデックスは次に実行が予測され
る命令がキャッシュ内のどこにあるかを示す。
【0034】図4を参照して、線形的にアドレス指定可
能な命令キャッシュ104の線形タグアレイ182およ
び命令ストアアレイ180が示される。命令キャッシュ
104は命令キャッシュ104の4つのセットに対応す
る4つの4Kバイトカラム、つまりカラム0、カラム
1、カラム2およびカラム3に配列される。命令ストア
アレイ184は4つの別々のストアアレイ、つまりカラ
ム0ストアアレイ200、カラム1ストアアレイ20
1、カラム2ストアアレイ202、およびカラム3スト
アアレイ203、ならびにマルチプレクサ(MUX)回
路206を含む。マルチプレクサ206は線形タグアレ
イにストアされた線形タグ値に対する一致があったかど
うかを示すカラムヒット表示制御信号を線形タグアレイ
182から受取り、ストアアレイのカラムの1つにスト
アされた命令を出力として与える。マルチプレクサ20
6はまたプリデコード回路174からストアアレイ20
0−203にストアするための命令を受取り、アドレス
タグアレイ182からの制御信号に基づいてこれらの命
令を与える。
【0035】アドレスタグアレイ182はカラム0−3
に対応する線形タグアレイ210−213を含む。線形
タグアレイ210−213はストアアレイ200−20
3と同じセットおよびブロック構成で編成される。線形
タグアレイ210−213は各々それぞれのストアアレ
イ200−203のエントリに対応する複数の線形タグ
エントリを含む。各線形タグアレイはそれぞれのカラム
ヒット表示信号(COL HIT0−COL HIT
3)を与えるそれぞれの比較回路220−223と結合
される。応じて、命令キャッシュ104の各カラムはス
トアアレイ、線形タグアレイ、および比較回路を含む。
ストアアレイ200−203、アドレスタグアレイ21
0−211、および比較回路220−223は、すべて
アドレス回路172から線形アドレスFETCH PC
を受取る。
【0036】図5を参照して、この発明を参照するデー
タキャッシュ150の説明が示される。「高性能ロード
/ストア機能ユニットおよびデータキャッシュ(High P
erformance Load/Store Functional Unit and Data Cac
he)」と題される米国特許出願連続番号第146,37
6号は、データキャッシュ150の構造および動作につ
いてより詳細に説明している。この出願を引用により援
用する。データキャッシュ150は線形的にアドレス指
定された8Kバイトの4ウエイのセットアソシアティブ
キャッシュである。データキャッシュ150の各セット
は128のエントリを含み、各エントリは16バイトブ
ロックの情報を含む。データキャッシュ150はデータ
キャッシュコントローラ300およびデータキャッシュ
アレイ304を含む。データキャッシュコントローラ3
00は制御信号を与えてデータキャッシュ150の様々
な動作を調整する。データキャッシュコントローラ30
0はロードストア部134およびIADバス102から
制御信号(CONTROL)を受取り、制御信号をキャ
ッシュアレイ304に与える。キャッシュアレイ304
はブロック単位でデータをストアし、特定のブロックが
アドレス指定されたときそのデータのブロックを与え
る。データキャッシュアレイ304はまたIADバス1
02にも結合され、キャッシュコントローラ300から
の制御信号に加えて、ロードストア部134からのアド
レス信号およびデータ信号を受取る。
【0037】データキャッシュアレイ304は2つのア
レイ、データストアアレイ312およびデータ線形タグ
回路310に編成される。データストアアレイ312は
2つのデータ信号(DATA A、DATA B)を受
取り、ロード/ストア機能ユニット134に与える。デ
ータ線形タグ回路310はロード/ストア機能ユニット
134によって与えられる2つの線形アドレス(ADD
R A、ADDR B)によってアドレス指定され、こ
の2つの線形アドレスはまたデータストアアレイ312
にも与えられる。したがって、データキャッシュアレイ
304はデュアルポートメモリアレイであり、どちらの
ポートもロード/ストア機能ユニット134に結合され
て2つのデータ値が同時に書込まれるまたは読出される
ことを可能にする。データストアアレイ312はまた線
形タグアレイ310から制御信号を受取る。
【0038】図6を参照して、各線形アドレス319の
中位ビットは線形タグアレイの各カラム内のブロックを
アドレス指定し、かつ各ストアアレイからエントリを取
出すために使用されるキャッシュブロックインデックス
(INDEX)を与える。各線形アドレスの上位ビット
は線形タグアレイ310の各カラムの線形データタグと
比較されて、キャッシュブロックインデックスによって
アクセスされるカラムのうちの1つを選択する。各線形
アドレスの最下位ビットは取出されたエントリにオフセ
ット(OFF)を与えて、線形アドレスによってアドレ
ス指定された実際のバイトにアクセスする。
【0039】データキャッシュ150のデータキャッシ
ュエントリ320は線形アドレスタグエントリ324お
よびデータエントリ322を含む。データエントリ32
2は16バイト(DBYTE0−DBYTE15)ブロ
ックのデータを含む。データ線形アドレスタグエントリ
324はデータ線形タグ値(DTAG)、線形タグ有効
ビット(TV)、データ有効ビット(DV)、および有
効物理変換ビット(P)を含む。線形アドレスの上位2
1ビットに対応するデータ線形タグ値は、対応のストア
アレイエントリにストアされたブロックの線形ブロック
フレームアドレスを示す。線形タグ有効ビットは線形タ
グが有効であるかどうかを示す。データ有効ビットはス
トアアレイの対応のエントリが有効であるかどうかを示
す。有効物理変換ビットはエントリが以下に論じるよう
な成功した物理タグヒットを与えるかどうかを示す。
【0040】図7を参照して、線形的にアドレス指定可
能なデータキャッシュ150のデータキャッシュ線形タ
グ回路310およびデータキャッシュストアアレイ31
2が示される。データキャッシュ150は4つの2−K
バイトカラム、つまりカラム0、カラム1、カラム2お
よびカラム3に配列される。データ線形タグ回路310
およびデータキャッシュストアアレイ312のこの配列
は命令キャッシュ線形タグ回路182およびストアアレ
イ184の配列に類似している。しかしながら、データ
線形タグ回路310は同時に2つの線形アドレス(AD
DR A、ADDR B)を受取り、データストアアレ
イ312は2つのデータ信号(DATAA、DATA
B)を同時に受取りかつ与える。つまり、データキャッ
シュ150はデュアルポートデータキャッシュとして機
能する。
【0041】データストアアレイ312は4つの別個の
ストアアレイ、つまりカラム0ストアアレイ350、カ
ラム1ストアアレイ351、カラム2ストアアレイ35
2、およびカラム3ストアアレイ353、ならびにマル
チプレクサ(MUX)回路360を含む。マルチプレク
サ360はそれぞれの線形タグアレイにストアされた線
形タグ値に対する一致があるかどうかを示す制御信号を
データ線形タグ回路310から受取る。マルチプレクサ
360はデータを受取ってストアアレイ350−353
に与える。マルチプレクサ360はまたデータを受取っ
てIADバスおよびロード/ストア機能ユニット134
に与える。
【0042】線形タグ回路310はカラム0−3に対応
する線形タグアレイ370−373を含む。各線形タグ
アレイは対応の比較回路374−377に結合される。
したがって、データキャッシュ150の各カラムはスト
アアレイ、線形タグアレイ、および比較回路を含む。ス
トアアレイ350−353、アドレスタグアレイ370
−373、および比較回路374−377は、すべてロ
ード/ストア機能ユニット134から線形アドレスAD
DR A、ADDR Bを受取る。
【0043】図8を参照して、物理タグ回路162は命
令物理タグアレイ部390およびデータ物理タグアレイ
部392を含む。命令物理タグアレイ部390は複数の
命令物理タグアレイ400、401、402、403、
および複数の命令比較回路404、405、406、4
07を含む。データ物理タグアレイ部392は複数のデ
ータ物理タグアレイ408、409、410、411、
および複数の対応のデータ比較回路412、413、4
14、415を含む。命令物理タグアレイ400−40
3は命令キャッシュ104のカラム0−3に対応する。
データ物理タグアレイ408−411はデータキャッシ
ュ150のカラム0−3に対応する。
【0044】命令物理タグアレイ400−403はバス
インタフェースユニット160によって与えられる物理
アドレスの最下位ビットを受取り、それぞれの物理タグ
を比較回路404−407に与える。これらの回路はま
た同じ物理アドレスの最上位ビットを受取る。比較回路
404−407はそれぞれの命令カラムヒット表示信号
(IHIT C0−IHIT C3)を命令ストアアレ
イ180に与える。これらの命令カラムヒット表示信号
はマルチプレクサ206のHIT COL入力に与えら
れ、どのカラムストアアレイが出力命令を与えるかを制
御する。
【0045】データ物理タグアレイ408−411はバ
スインタフェースユニット160によって与えられる物
理アドレスの最下位ビットを受取り、それぞれのデータ
物理タグを比較回路412−415に与える。比較回路
412−415はまた同じ物理アドレスの最上位ビット
を受取る。比較回路412−415はそれぞれのデータ
カラムヒット表示信号(DHIT C0−DHIT C
3)をデータストアアレイ312に与える。これらのデ
ータカラムヒット表示信号はマルチプレクサ360のH
IT COL A入力に与えられ、どのカラムストアア
レイが出力命令を与えるかを制御する。
【0046】ストアアレイから別々にアクセスされる物
理タグアレイを与えることによって、キャッシュ150
はストアアレイ350−353にアクセスする必要がな
く、したがってこれらのアレイにアクセスするために必
要な電力を与える必要がなく、バスウォッチング動作中
に物理タグにアクセスする必要がないのでより効率的で
ある。
【0047】図3、図6および図8を参照して、物理タ
グアレイ400−403、408−411は対応の線形
タグアレイと同じセットおよびブロック関係で編成され
る。つまり、命令物理タグアレイ400、401、40
2、403は各々命令キャッシュ104の命令線形タグ
アレイ210、211、212、213のエントリに対
応する複数の命令物理タグエントリを含み、データ物理
タグアレイ408、409、410、411はデータキ
ャッシュ150の線形タグアレイ370、371、37
2、373のエントリに対応する複数のデータ物理タグ
エントリを含む。したがって、各命令物理タグエントリ
416は概念的に命令エントリ188の一部として含ま
れ、各データ物理タグエントリ417は概念的にデータ
エントリ320の一部として含まれる。
【0048】各物理タグエントリ416、417は物理
タグ値(PTAG)、物理タグ有効ビット(PV)、お
よびシェアードビット(S)を含む。さらに、各データ
物理タグエントリ417はまた変更ビット(M)、キャ
ッシュディスエーブルビット(CD)、およびライトス
ルービット(WT)を含む。物理タグ値は対応のストア
アレイの対応のエントリにストアされた情報に対応する
物理アドレス418の線形アドレスから変換後の物理ア
ドレスを示す。物理タグ有効ビットは対応のストアアレ
イの対応のエントリが有効情報を含むかをどうかを示
す。シェアードビットはプロセッサ100がその一部で
あるコンピュータシステム内の他のところの別のキャッ
シュが同じデータを有するかどうかを示す。変更ビット
はストアアレイにストアされたデータが変更され(つま
り書込まれ)、キャッシュの外部にストアされた対応の
データと一致していないかどうかを示す。キャッシュデ
ィスエーブルビットはこの特定のエントリがキャッシュ
ディスエーブルされるかどうか、つまりそのそれぞれの
キャッシュにストアすることができないかどうかを示
す。ライトスルービットは、エントリがキャッシュに書
込まれたときに、その対応の外部メモリ位置にも書込ま
れるべきかどうかを示す。
【0049】図9を参照して、メモリ管理ユニット16
4はTLBアレイ420およびTLB比較回路422を
含む。TLBアレイ420は4ウエイのセットアソシア
ティブキャッシュとして編成される。各セットは32の
エントリを含み、合計で128のTLBエントリを与え
る。メモリ管理ユニット164は線形アドレスと物理ア
ドレスとの間の変換を行なうための変換回路として機能
する。
【0050】図10を参照して、TLB164の各TL
Bエントリ430は線形タグ(LTAG)値および物理
タグ(PTAG)値を含む。線形タグ値は線形アドレス
320の最上位ビットに対応し、物理タグ値は線形アド
レス320に対応する物理アドレス418の最上位ビッ
トに対応する。物理タグ値を線形タグエントリに対応す
る線形アドレス320の下位ビットと連結することによ
り、2つのレベルのページテーブルを使用することなく
物理アドレスが得られる。
【0051】図1−4および図8−10を参照して、動
作中、キャッシュ104にストアされていない命令が分
岐部135によってリクエストされると、命令キャッシ
ュミスが発生する。キャッシュミスの検出時に、リクエ
ストされた命令は命令キャッシュ104のエントリにロ
ードされる。具体的には、分岐部135はキャッシュ1
04にリクエストされた命令のための線形アドレスを与
える。このように、分岐部135は命令キャッシュ10
4に与えられたアドレスのための論理アドレスから線形
アドレスへの変換回路として機能する。アドレス回路1
72はこの線形アドレスの境界をチェックし、線形FE
TCH PCアドレスを与える。この線形FETCH
PCアドレスはIADバス102を介してアドレス回路
172によってメモリ管理ユニット164に与えられ
る。命令の線形アドレスはTLB比較回路422によっ
てTLBアレイ420の線形タグ部分と比較してチェッ
クされ、TLBヒットがあるかどうか決定する。もしあ
れば、対応の線形アドレスから変換後の物理アドレスの
上位ビットが、線形アドレスのカラム選択ビットおよび
キャッシュブロックインデックスビットに対応する命令
物理タグアレイ部分390のエントリに書込まれる。線
形タグのカラム選択ビットおよび線形アドレスビットの
キャッシュブロックインデックスに対応する命令線形タ
グアレイエントリ210−213は、TLBアレイ42
0にストアされた線形タグに対応する線形タグとともに
書込まれる。TLBヒットがなければ、TLB420は
リクエストされた命令のアドレス変換を含むようにメモ
リ管理ユニット164によって更新され、それによって
TLBヒットがメモリ管理ユニット164によって生じ
るようにされ、その後実ページ番号が論じられたように
命令物理タグ部分392に書込まれる。
【0052】次にプリフェッチリクエストがアドレス回
路172によって外部メモリに対して行なわれ、分岐部
135によって与えられた線形アドレスに対応する物理
アドレスで外部メモリにストアされた値が外部メモリか
ら読出される。この値はそれぞれの物理および線形タグ
アレイにストアされた値の物理および線形タグのライン
およびカラム位置に対応するストアアレイ180のライ
ンおよびカラムにストアされる。物理タグアレイ390
の対応の物理タグ有効ビットがセットされて、物理タグ
に対応するエントリが有効であることを示す。線形タグ
アレイ182の対応の線形タグ有効ビット、バイト有効
ビット、および有効物理変換ビットもまたセットされ
て、線形タグが有効であること、ストアアレイにストア
された命令バイトエントリが有効であること、かつエン
トリが成功した物理変換を与えることを示す。
【0053】この命令に対する線形アドレスが分岐部1
35によって再びリクエストされると、アドレス回路1
72は線形アドレスを線形FETCH PCアドレスに
変換する。この命令は命令キャッシュ104にストアさ
れていたので、この線形FETCH PCアドレスはア
ドレスタグアレイ182における線形タグの一致を与え
る。バイト有効ビットがセットされ、かつ有効物理変換
ビットがセットされるので、線形アドレスヒットが発生
し、命令ストアアレイ180の対応のラインにストアさ
れたエントリはバイトキュー106に転送される。この
アクセス中、物理変換回路162またはメモリ管理ユニ
ット164のいずれかにアクセスする必要はない。その
理由はエントリが有効物理変換を有することを示す有効
物理変換ビットがセットされているからである。このプ
ロセスはTLB420が更新されるまで各命令キャッシ
ュアクセス毎に繰り返される。
【0054】キャッシュへのアクセスは線形アドレスを
使用するので、すべての命令およびデータキャッシュア
クセス毎に線形アドレスから物理アドレスへの変換を実
行する必要がない。したがって、線形アドレスから物理
アドレスへの変換はキャッシュアクセス速度経路の一部
ではない。応じて、命令キャッシュおよびデータキャッ
シュのための物理アドレスと線形アドレスとの間の変換
を行なうためには1つの統合TLBしか必要とされな
い。
【0055】TLB420が更新されると、線形アドレ
スから物理アドレスへのマッピングの少なくともいくら
かは変更される。したがって、線形タグ回路182およ
び物理タグ回路390にストアされたタグは潜在的に無
効である。しかしながら、命令キャッシュ104にスト
アされた情報をフラッシュするのではなく、命令キャッ
シュ制御回路170は線形タグ有効ビットおよび有効物
理変換ビットを使用して、特定の命令キャッシュエント
リ188が無効であるかどうかを決定する。
【0056】具体的には、TLB238が更新される
と、線形タグ回路182の有効物理変換ビットのすべて
はクリアされて、物理変換が無効であるかもしれないこ
とを示す。しかしながら、対応の線形タグ有効ビットは
セットされたままである。線形アドレスによって決定さ
れたキャッシュエントリへの後続のアクセスの間、セッ
トされた線形タグ有効ビットは、クリアされた有効物理
変換ビットとともに、TLB420が更新されたことを
キャッシュ制御回路170に示す。この状態を検出する
と、キャッシュ制御回路170は、物理タグ部分390
のアクセスされたキャッシュエントリに対応する物理タ
グ416にアクセスする一方で、このキャッシュエント
リに対する線形アドレスから物理アドレスへの変換が行
なわれたTLBアレイ420のエントリにアクセスす
る。TLB420によって変換された物理アドレスがキ
ャッシュエントリに対応する物理タグエントリ416と
一致すれば、有効物理アドレス変換が依然として存在し
ており、かつTLBアレイ420のこの特定のエントリ
は変更されなかったことになる。つまり、物理アドレス
変換は成功である。物理アドレス変換が成功した場合に
は、このエントリのための有効物理変換ビットが再びセ
ットされて、線形および物理タグは有効物理変換を与え
ることを示す。物理変換チェックが成功した場合、タグ
付エントリおよびストアされた命令はTLBルックアッ
プおよび物理タグ上のヒットの1サイクル内に使用され
る。この方法により、新しく参照されたアドレスを除い
て、TLB420が更新されるたびに命令キャッシュ1
04が外部から書換えられるのを防ぐ。
【0057】もしTLB420によって変換された物理
アドレスがキャッシュエントリに対応する物理タグエン
トリ416と一致しなければ、有効物理アドレス変換は
存在せず、かつTLBアレイ420のこの特定のエント
リは更新されていたことになる。したがって、このアク
セスはキャッシュミスとして処理され、キャッシュに新
しいエントリをロードするためのプロセスが開始され
る。
【0058】図11を参照して、プロセッサ100が理
論的に命令を実行しているときの線形的にアドレス指定
可能な命令キャッシュ104の分岐部135、アドレス
回路172およびストアアレイ176の間の相互作用が
示される。アドレス回路172は命令キャッシュアレイ
176に結合された理論上の命令フェッチポインタ回路
450を含み、フェッチポインタ回路450の出力はア
ドレスインクリメンタ回路452を介してフェッチポイ
ンタ450に入力として与えられる。アドレス回路17
2はまたコードセグメントベースレジスタ456に結合
される減算回路454も含む。減算回路454はまた命
令フェッチポインタ450に結合される。減算回路45
4は機能ユニット、プログラムカウンタ、および分岐部
135に論理アドレスを与える。分岐部135は分岐回
路470、加算器472、およびコードセグメントレジ
スタ474を含む。
【0059】命令フェッチポインタ450は、現在の線
形フェッチポインタアドレスをインクリメントするアド
レスインクリメンタ回路452からインクリメントされ
た線形アドレスを受取る。代わりに、もし理論上の分岐
が発生すれば、命令フェッチポインタ450は分岐部1
35から線形の理論上のフェッチポインタアドレスを受
取る。分岐部135は分岐回路470から論理的な理論
上の次のカウンタをとることによって、かつ加算器回路
472を使ってコードセグメントベースレジスタ474
からのコードセグメントベースを加算することによっ
て、理論上の次のカウンタを示す線形の理論上カウンタ
を維持する。この理論上の線形カウンタはフェッチポイ
ンタ450によってセグメント制限値と比較してチェッ
クされ、リクエストされた線形アドレスが有効であるこ
とを保証する。
【0060】コードセグメントベースレジスタ456に
ストアされたコードセグメントベースは、機能ユニット
およびプログラムカウンタに与えられる論理アドレスを
再形成するために減算回路454によって使用される。
具体的には、減算回路454は理論上のフェッチポイン
タ回路450によって与えられた線形アドレスからセグ
メントベースを減算し、機能ユニットおよびプログラム
カウンタに与えられる論理アドレスを与える。フェッチ
ポインタ450によって発生された線形アドレスは有効
であるので、論理アドレスが有効であることを保証する
ために必要なチェックはない。したがって、理論上の分
岐が発生したとき、命令キャッシュ104にストアされ
た理論上の命令は対応の論理アドレスとともに機能ユニ
ットに与えられる。
【0061】セグメントレジスタが更新されるとき(つ
まりマイクロプロセッサ100がセグメントを変更する
とき)、情報は線形アドレスに関するキャッシュにスト
アされているので、キャッシュ104は更新される必要
はない。したがって、マイクロプロセッサ100のある
動作モードでは普通に行なわれるセグメントレジスタ更
新は、キャッシュから線形アドレスがフラッシュされる
ことを必要とせず、したがって性能に影響を及ぼさな
い。
【0062】図1および図5−10を参照して、データ
キャッシュ150の動作は命令キャッシュ104の動作
に類似している。キャッシュ150にストアされていな
いデータ値がロード/ストア機能ユニット135によっ
てリクエストされると、キャッシュミスが発生する。キ
ャッシュミスの検出時に、リクエストされた値はデータ
キャッシュ150のエントリにロードされる。具体的に
は、ロード/ストア機能ユニット134はその値に対す
る論理アドレスを線形アドレスに変換する。この線形ア
ドレスはメモリ管理ユニット164に与えられる。この
値の線形アドレスは、TLB比較回路422によってT
LBアレイ420の線形タグ部分と比較してチェックさ
れ、TLBヒットがあるかどうか決定される。もしあれ
ば、対応の線形アドレスから変換された後の物理アドレ
スの上位ビットが、線形アドレスのカラム選択ビットお
よびキャッシュブロックインデックスビットに対応する
データ物理タグアレイ部分392のエントリに書込まれ
る。線形タグのカラム選択ビットおよび線形アドレスビ
ットのキャッシュブロックインデックスに対応するデー
タ線形タグアレイ350−353にはTLBアレイ42
0からの線形タグが書込まれる。TLBヒットがなけれ
ば、TLB420は、TLBヒットが生じるように、リ
クエストされた値のアドレスを含むようにメモリ管理ユ
ニット164によって更新され、すでに論じられたよう
にデータ物理タグ部分392にその後実ページ番号が書
込まれる。
【0063】プリフェッチリクエストがロード/ストア
機能ユニット134によって外部メモリに対して行なわ
れ、外部メモリの、線形アドレスに対応する物理アドレ
スにストアされた値が外部メモリから取出される。この
値は、それぞれの物理および線形タグアレイにストアさ
れたその値の物理および線形タグのラインおよびカラム
位置に対応するストアアレイ312のラインおよびカラ
ムにストアされる。物理タグアレイ392の対応の物理
タグ有効ビットがセットされて、物理タグが有効である
ことを示す。加えて、線形タグアレイ310の対応のデ
ータ有効ビット、線形タグ有効ビット、および有効物理
変換ビットもまたセットされて、線形タグに対応するエ
ントリが有効であること、線形タグが有効であること、
およびエントリが成功した物理変換を与えることを示
す。
【0064】この値に対する論理アドレスが再び機能ユ
ニットによってリクエストされると、ロード/ストア機
能ユニット135は線形アドレスタグアレイ310の線
形タグのリクエストされたアドレスとの一致を与える線
形アドレスに物理アドレスを変換する。有効ビットがセ
ットされ、かつ有効物理変換ビットがセットされている
ので、線形アドレスヒットが発生し、データストアアレ
イ304の対応のラインにストアされたエントリが、要
求している機能ユニットに転送される。ロード/ストア
機能ユニット134によるアクセスの間、物理アドレス
タグ回路162またはTLB回路164のいずれかにア
クセスする必要はない。なぜならエントリが有効物理変
換を有することを示す有効物理変換ビットがセットされ
ているからである。このプロセスはTLB420が更新
されるまで各データキャッシュアクセス毎に繰返され
る。
【0065】データエントリ変換を含むTLB420の
ラインが更新されるときのTLB420とデータキャッ
シュ150との間の相互作用は、命令エントリ変換を含
むTLB420のラインが更新されるときのTLB42
0と命令キャッシュ104との間の相互作用と同じであ
る。
【0066】486XLバスなどの外部バスからのバス
ウォッチングは物理タグにアクセスすることによって達
成される。物理タグを使用することによって、機能ユニ
ットは、命令キャッシュ104およびデータキャッシュ
150がバスウォッチングのための別個のポートを含ん
でいなくても、バス起動中キャッシュにアクセスし続け
ることができる。
【0067】バスウォッチング、つまり、スヌーピング
動作は、バスインタフェースユニット160が、外部バ
スが別のマスタ(図示せず)によって所有されていると
判断したときに開始され、読出または書込表示がバスイ
ンタフェースユニット160によって受取られる。外部
バスの物理アドレスが、カラムのいずれかの一致が発生
するかどうかを決定するために物理タグ回路390、3
92に与えられる。バスウォッチング読出またはバスウ
ォッチング書込のいずれかの間に一致が発生しなけれ
ば、内部スヌープは完了し、プロセッサ100はバスウ
ォッチング動作に参加しない。
【0068】もしヒットが発生すれば、スヌープされて
いる物理アドレスのコピーがプロセッサ100によって
保持され、外部バスを所有するデバイスに対して直ちに
ヒット表示が発行される。このヒット表示はマルチプロ
セシングスヌーピングプロトコルが受入れるものであれ
ばどんな従来の状態のものであってもよい。このヒット
に対応する、データキャッシュ150か命令キャッシュ
104のいずれかのキャッシュが停止され、検査され
る。
【0069】もしアドレスが物理タグ408−411に
よって決定されたデータキャッシュヒットを与え、かつ
リクエストが読出であれば、ヒットされたカラムに対応
するデータ物理タグが、物理アドレスの最下位ビットを
使用して読出され、対応のシェアードビットおよび変更
ビットにアクセスする。データが変更されていれば、そ
れは変更ビットがセットされていることでわかるのだ
が、物理アドレスの最下位ビットからのカラム選択ビッ
トおよびキャッシュインデックスビットによってアクセ
スされた、データキャッシュストアアレイにあるデータ
が、バスインタフェースユニット160を介してプロセ
ッサ100の外部に駆動される。次にシェアードビット
がセットされ、このブロックが現在別のキャッシュに含
まれていることを示す。データが変更されていなけれ
ば、それは変更ビットがクリアされていることによりわ
かるのだが、かつデータが共用されなければ、それはシ
ェアードビットがクリアされていることによりわかるの
だが、シェアードビットがセットされて、このブロック
が現在別のキャッシュに含まれていることを示す。変更
ビットがクリアされていることからデータが変更されて
いないことがわかり、かつシェアードビットがセットさ
れていることからデータが共用されていることがわかれ
ば、シェアードビットはセットされたままであり、ヒッ
ト表示が発行されて、リクエストされたブロックがキャ
ッシュ内にストアされていることを示す。
【0070】もしアドレスが物理タグ408−411に
よって決定されたデータキャッシュヒットを与え、かつ
リクエストがバスウォッチング書込であれば、ヒットさ
れたカラムに対応するデータ物理タグが、物理アドレス
の最下位ビットを使用してアクセスされ、対応のシェア
ードビットおよび変更ビットにアクセスする。変更ビッ
トがセットされていることによって示されるようにデー
タが変更されていれば、物理アドレスの最下位ビットか
らのカラム選択ビットおよびキャッシュインデックスビ
ットによってアクセスされた、データキャッシュストア
アレイにあるデータがメモリに書込まれ、外部デバイス
からの書込データで更新される。シェアードビットがセ
ットされ、このブロックが現在別のキャッシュにあるこ
とを示し、変更ビットがクリアされて、ストアされてい
るデータがもはや外部から使用されていないことを示
す。変更ビットがクリアされていることによって示され
るようにデータが変更されておらず、かつシェアードビ
ットがクリアされていることによって示されるようにデ
ータが共用されていなければ、シェアードビットがセッ
トされ、このブロックが現在別のキャッシュに含まれて
いることを示し、外部バス上に書込まれたデータがデー
タキャッシュに書込まれる。変更ビットがクリアされて
いることによって示されるようにデータが変更されてお
らず、かつシェアードビットがセットされていることに
よって示されるようにデータが共用されていれば、シェ
アードビットはセットされたままであり、データはデー
タキャッシュのそのラインに書込まれる。
【0071】もしアドレスが命令キャッシュヒットを与
えれば、いずれの変更データも可能ではない。もしアド
レスが物理タグ400−403によって決定される命令
キャッシュヒットを与え、かつリクエストが読出であれ
ば、ヒットされたカラムに対応する命令物理タグが、物
理アドレスの最下位ビットを使用して読出され、対応の
シェアードビットおよび変更ビットにアクセスする。シ
ェアードビットがクリアされていることによって示され
るように命令が共用されていなければ、シェアードビッ
トがセットされ、このブロックが現在別のキャッシュに
含まれていることを示す。シェアードビットがセットさ
れていることによって示されるように命令が共用されて
いれば、シェアードビットはセットされたままであり、
ヒット表示が発行されてリクエストされたブロックがキ
ャッシュ内にストアされていることを示す。
【0072】命令キャッシュへのバスウォッチング書込
により、書込まれた命令キャッシュラインが無効にされ
る。具体的には、もしバスウォッチングアドレスが命令
物理タグ400−403によって決定される命令キャッ
シュヒットを与え、かつそのリクエストがバスウォッチ
ング書込であれば、ヒットされたカラムに対応する命令
物理タグが物理アドレスの最下位ビットを使用してアク
セスされ、対応のシェアードビットおよび変更ビットが
アクセスされる。シェアードビットがクリアされている
ことによって示されるように命令が共用されていなけれ
ば、命令キャッシュエントリは物理タグアレイおよび線
形タグアレイの双方の有効ビットをクリアすることによ
ってクリアされる。なぜならコードストリームの変更は
命令キャッシュ104にストアされた命令、およびその
ブロックのプリデコード状態に対する乱れを無効にする
からである。シェアードビットがセットされていること
によって示されるように命令が共用されていれば、命令
キャッシュエントリは物理タグアレイおよび線形タグア
レイの双方の有効ビットをクリアすることによってクリ
アされる。なぜなら、コードストリームの変更は命令キ
ャッシュ104にストアされた命令を無効にするからで
ある。
【0073】図10を再び参照して、マイクロプロセッ
サ100は命令キャッシュ104およびデータキャッシ
ュ150を制御して、エイリアシング、つまり2つの線
形アドレスを同じ物理アドレスにマッピングさせること
を防ぐ。命令キャッシュ104およびデータキャッシュ
150のアーキテクチャでは、線形アドレス188およ
び物理アドレス418の最下位ビットはお互いに対応す
る。これらの最下位ビットはそれぞれの線形タグアレイ
および物理タグアレイの特定のラインをアドレス指定す
るために使用され、残りの最上位ビットはそれぞれのタ
グと比較するために使用される。したがって、いかなる
エイリアスを有する線形アドレスもこれらの最下位ビッ
トを使ってアクセスされるラインのカラムのうちの1つ
にしか存在できない。このように理解して、キャッシュ
への書込が制御され、エイリアシングを防ぐ。
【0074】動作において、命令キャッシュ104かデ
ータキャッシュ150のいずれかの線形タグ上でミスが
検出されると、対応の物理タグがメモリ管理ユニット1
64が線形アドレスを物理アドレスに変換した後でアク
セスされる。線形アドレス188が物理アドレス418
に変換された後、もし物理タグ上にヒットがあれば、同
じ物理アドレスが潜在的に2つの異なった線形アドレス
を有する可能性がある。しかしながら、ヒットを物理タ
グ上に与えた物理アドレスからのカラム選択ビットが線
形タグアレイに与えられ、物理タグヒットを与えたカラ
ムに対応するキャッシュアレイのカラムにこのエントリ
が書込まれる。したがって、最も最近リクエストされた
アドレスが好ましいエントリをアドレス指定すると仮定
すれば、潜在的にエイリアスを有するアドレスに対応す
るエントリが現存のエントリ上に上書きされる。キャッ
シュ104、150のアーキテクチャでこの方法を使用
することにより、多数の線形アドレスが同じ物理アドレ
スにマッピングすることが必然的に防止される。
【0075】
【他の実施例】他の実施例は前掲の特許請求の範囲内で
ある。
【0076】たとえば、命令キャッシュおよびデータキ
ャッシュに対する物理タグアレイは、別の物理タグアレ
イにあるのではなく、それぞれのキャッシュの一部とし
て組込まれてもよい。
【0077】またたとえば、キャッシュはそれぞれのト
ランスレーションルックアサイドバッファを含むように
構成されてもよい。
【0078】またたとえば、TLB更新手順が実行され
たエントリの実ページ番号の局所記憶を設けることによ
ってTLB更新手順はさらに向上され得る。同じページ
内のエントリは同じTLB変換を使用するので、同じペ
ージへの後続のアクセスが発生したとき、物理タグアレ
イは正しい物理ページを有すると仮定でき、これらの後
続のエントリに対する物理タグ有効ビットをセットでき
る。したがって、同じページへの前のアクセスの変換が
うまくいった場合には、後続のサイクルの間TLB23
8にアクセスしながら1サイクルの間パイプラインを停
止させる必要はない。
【図面の簡単な説明】
【図1】この発明に従うマイクロプロセッサのブロック
図である。
【図2】この発明に従う線形的にアドレス指定される命
令キャッシュのブロック図である。
【図3】対応の線形アドレスおよび物理アドレスととも
に図2の命令キャッシュのエントリを示すブロック図で
ある。
【図4】図2の命令キャッシュの線形タグアレイおよび
ストアアレイのブロック図である。
【図5】この発明に従う線形的にアドレス指定されるデ
ータキャッシュのブロック図である。
【図6】対応の線形アドレスおよび物理アドレスととも
に図5のデータキャッシュのエントリを示すブロック図
である。
【図7】図5のデータキャッシュの線形タグアレイおよ
びストアアレイのブロック図である。
【図8】この発明に従う物理タグ回路のブロック図であ
る。
【図9】この発明に従うトランスレーションルックアサ
イドバッファのブロック図である。
【図10】対応の線形アドレスおよび物理アドレスとと
もに図8の物理タグ回路のエントリおよび図9のトラン
スレーションルックアサイドバッファのエントリを示す
ブロック図である。
【図11】仮想的に命令を実行する場合の、図2の線形
的にアドレス指定される命令キャッシュを使用するブロ
ック図である。
【符号の説明】
100 マイクロプロセッサ 104 命令キャッシュ 106 バイトキュー 110 RISCコア 112 レジスタファイル 114 リオーダバッファ 131 機能ユニット 132 機能ユニット 133 機能ユニット 134 機能ユニット 135 機能ユニット 136 機能ユニット 150 データキャッシュ

Claims (46)

    【特許請求の範囲】
  1. 【請求項1】 物理アドレスを使用して外部のデバイス
    と相互に作用する、情報を処理するためのプロセッサで
    あって、 論理アドレスを使用してアドレス指定される複数の機能
    ユニットと、 線形アドレスを使用してアドレス指定される、前記複数
    の機能ユニットが使用するための情報を一時的にストア
    するためのキャッシュと、 物理アドレスを線形アドレスに、および線形アドレスを
    物理アドレスに変換して、前記プロセッサ外部の前記デ
    バイスが前記キャッシュと通信することを可能にするた
    めの第1の変換回路と、さらに線形アドレスを論理アド
    レスに、および論理アドレスを線形アドレスに変換し
    て、前記機能ユニットが前記キャッシュと通信すること
    を可能にするための第2の変換回路とを含む、プロセッ
    サ。
  2. 【請求項2】 前記キャッシュは前記機能ユニットが使
    用するための命令を一時的にストアするための命令キャ
    ッシュと、前記機能ユニットが使用するためのデータを
    一時的にストアするためのデータキャッシュとを含む、
    請求項1に記載のプロセッサ。
  3. 【請求項3】 対応の複数の命令物理アドレスタグをス
    トアするための複数の命令物理アドレスタグ位置を有す
    る命令物理タグアレイをさらに含み、前記複数の命令物
    理アドレスタグ位置は前記命令キャッシュの複数のライ
    ンに対応し、各命令物理アドレスタグ位置は前記命令キ
    ャッシュの対応のラインにストアされた情報の物理アド
    レスを示す命令物理アドレスタグをストアし、 対応の複数のデータ物理アドレスタグをストアするため
    の複数のデータ物理アドレスタグ位置を有するデータ物
    理タグアレイをさらに含み、前記複数のデータ物理アド
    レスタグ位置は前記データキャッシュの複数のラインに
    対応し、各データ物理アドレスタグ位置は前記データキ
    ャッシュの対応のラインにストアされた情報の物理アド
    レスを示すデータ物理アドレスタグをストアする、請求
    項2に記載のプロセッサ。
  4. 【請求項4】 複数の線形タグ値位置および対応の複数
    の物理アドレス位置を有するトランスレーションルック
    アサイドバッファをさらに含み、前記複数の線形タグ値
    位置の各々は線形アドレスを示す線形タグ値をストア
    し、かつ前記対応の複数の物理アドレス位置の各々は対
    応の物理アドレスをストアし、前記対応の物理アドレス
    は前記線形アドレスを変換したものであり、前記トラン
    スレーションルックアサイドバッファは前記命令キャッ
    シュおよび前記データキャッシュの双方によってアクセ
    スされる、請求項3に記載のプロセッサ。
  5. 【請求項5】 前記キャッシュは情報を一時的にストア
    するための複数のラインを有するストアアレイと、 対応の複数の線形アドレスタグをストアするための複数
    の線形アドレスタグ位置を有する線形タグアレイとをさ
    らに含み、前記複数の線形アドレスタグ位置は前記スト
    アアレイの前記複数のラインに対応し、各線形アドレス
    タグ位置は前記ストアアレイの対応のラインにストアさ
    れた情報の線形アドレスを示す線形アドレスタグをスト
    アする、請求項1に記載のプロセッサ。
  6. 【請求項6】 対応の複数の有効情報信号をストアする
    ための複数の有効情報信号を有する有効情報アレイをさ
    らに含み、前記複数の有効情報信号位置は前記ストアア
    レイの前記複数のラインに対応し、各前記有効情報信号
    は有効情報が前記ストアアレイの対応のラインにストア
    されているかどうかを示す、請求項5に記載のプロセッ
    サ。
  7. 【請求項7】 前記線形タグアレイは前記有効情報アレ
    イを含む、請求項6に記載のプロセッサ。
  8. 【請求項8】 対応の複数の物理アドレスタグをストア
    するための複数の物理アドレスタグ位置を有する物理タ
    グアレイをさらに含み、前記複数の物理アドレスタグ位
    置は前記キャッシュの複数のラインに対応し、各物理ア
    ドレスタグ位置は前記キャッシュの対応のラインにスト
    アされた情報の物理アドレスを示す物理アドレスタグを
    ストアする、請求項1に記載のプロセッサ。
  9. 【請求項9】 対応の複数の物理タグ有効情報信号をス
    トアするための複数の物理タグ有効情報信号位置を有す
    る物理タグ有効情報アレイをさらに含み、前記複数の物
    理タグ有効情報信号位置は前記キャッシュの前記複数の
    ラインに対応し、各前記物理タグ有効情報信号は有効物
    理タグが前記物理タグアレイの対応のラインにストアさ
    れているかどうかを示す、請求項8に記載のプロセッ
    サ。
  10. 【請求項10】 前記物理タグアレイは前記物理タグ有
    効情報アレイを含む、請求項9に記載のプロセッサ。
  11. 【請求項11】 複数の線形タグ値位置および対応の複
    数の物理アドレス位置を有するトランスレーションルッ
    クアサイドバッファをさらに含み、前記複数の線形タグ
    値位置の各々は線形アドレスを示す線形タグ値をストア
    し、かつ前記対応の複数の物理アドレス位置の各々は対
    応の物理アドレスをストアし、前記対応の物理アドレス
    は前記線形アドレスを変換したものである、請求項1に
    記載のプロセッサ。
  12. 【請求項12】 対応の複数の有効物理変換情報信号を
    ストアするための複数の有効物理変換情報信号位置を有
    する有効物理変換情報アレイをさらに含み、前記複数の
    有効物理変換情報信号位置は前記キャッシュのラインに
    対応し、各前記有効物理変換情報信号は前記キャッシュ
    の対応のラインにストアされた情報が成功の物理タグヒ
    ットを与えるかどうかを示す、請求項11に記載のプロ
    セッサ。
  13. 【請求項13】 前記線形タグアレイは前記有効物理変
    換情報アレイを含む、請求項12に記載のキャッシュ。
  14. 【請求項14】 前記キャッシュは複数のカラムを含
    み、 前記複数のカラムの各々はそれぞれのストアアレイおよ
    び線形タグアレイを含む、請求項5に記載のキャッシ
    ュ。
  15. 【請求項15】 前記複数のカラムに対応する複数の物
    理タグアレイをさらに含み、 各物理タグアレイは対応の複数の物理アドレスタグをス
    トアするための複数の物理アドレスタグを有し、前記複
    数の物理アドレスタグ位置は前記ストアアレイの前記複
    数のラインに対応し、各物理アドレスタグ位置は前記ス
    トアアレイの対応のラインにストアされた情報の物理ア
    ドレスを示す物理アドレスをストアする、請求項14に
    記載のプロセッサ。
  16. 【請求項16】 複数の線形アドレス位置および対応の
    複数の物理アドレス位置を有する統合トランスレーショ
    ンルックアサイドバッファをさらに含み、前記複数の線
    形アドレス位置の各々は線形アドレスをストアし、かつ
    前記対応の複数の物理アドレス位置の各々は対応の物理
    アドレスをストアし、前記対応の物理アドレスは前記線
    形アドレスを変換したものである、請求項15に記載の
    プロセッサ。
  17. 【請求項17】 マイクロプロセッサの機能ユニットが
    使用するための情報を一時的にストアするためのキャッ
    シュであって、前記マイクロプロセッサの前記機能ユニ
    ットは論理アドレスを使用して動作し、前記マイクロプ
    ロセッサは物理アドレスを使用して前記マイクロプロセ
    ッサ外部のデバイスにアクセスし、前記マイクロプロセ
    ッサは論理アドレス、線形アドレスおよび物理アドレス
    の間で変換を行ない、前記キャッシュは情報を一時的に
    ストアするための複数のラインを有するストアアレイ
    と、さらに対応の複数の線形アドレスタグをストアする
    ための複数の線形アドレスタグ位置を有する線形タグア
    レイとを含み、前記複数の線形アドレスタグ位置は前記
    ストアアレイの前記複数のラインに対応し、各線形アド
    レスタグ位置は前記ストアアレイの対応のラインにスト
    アされた情報の線形アドレスを示す線形アドレスタグを
    ストアする、キャッシュ。
  18. 【請求項18】 対応の複数の有効情報信号をストアす
    るための複数の有効情報信号位置を有する有効情報アレ
    イをさらに含み、前記複数の有効情報信号位置は前記ス
    トアアレイの前記複数のラインに対応し、各前記有効情
    報信号は有効情報が前記ストアアレイの対応のラインに
    ストアされるかどうかを示す、請求項17に記載のキャ
    ッシュ。
  19. 【請求項19】 前記線形タグアレイは前記有効情報ア
    レイを含む、請求項18に記載のキャッシュ。
  20. 【請求項20】 対応の複数の物理アドレスタグをスト
    アするための複数の物理アドレスタグ位置を有する物理
    タグアレイをさらに含み、前記複数の物理アドレスタグ
    位置は前記ストアアレイの前記複数のラインに対応し、
    各物理アドレスタグ位置は前記ストアアレイの対応のラ
    インにストアされた情報の物理アドレスを示す物理アド
    レスタグをストアする、請求項17に記載のキャッシ
    ュ。
  21. 【請求項21】 対応の複数の物理タグ有効情報信号を
    ストアするための複数の物理タグ有効情報信号位置を有
    する物理タグ有効情報アレイをさらに含み、前記複数の
    物理タグ有効情報信号位置は前記ストアアレイの前記複
    数のラインに対応し、各前記物理タグ有効情報信号は有
    効物理タグが前記物理タグアレイの対応のラインにスト
    アされているかどうかを示す、請求項20に記載のキャ
    ッシュ。
  22. 【請求項22】 前記物理タグアレイは前記物理タグ有
    効情報アレイを含む、請求項21に記載のキャッシュ。
  23. 【請求項23】 複数の線形タグ値位置および対応の複
    数の物理アドレス位置を有するトランスレーションルッ
    クアサイドバッファをさらに含み、前記複数の線形タグ
    値位置の各々は線形アドレスを示す線形タグ値をストア
    し、かつ前記対応の複数の物理アドレス位置の各々は対
    応の物理アドレスをストアし、前記対応の物理アドレス
    は前記線形アドレスを変換したものである、請求項17
    に記載のキャッシュ。
  24. 【請求項24】 対応の複数の有効物理変換情報信号を
    ストアするための複数の有効物理変換情報信号位置を有
    する有効物理変換情報アレイをさらに含み、前記複数の
    有効物理変換情報信号位置は前記ストアアレイの前記複
    数のラインに対応し、各前記有効物理変換情報信号は前
    記ストアアレイの対応のラインにストアされた情報が成
    功の物理タグヒットを与えるかどうかを示す、請求項2
    3に記載のキャッシュ。
  25. 【請求項25】 前記線形タグアレイは前記有効物理変
    換情報アレイを含む、請求項24に記載のキャッシュ。
  26. 【請求項26】 前記キャッシュは複数のカラムを含
    み、さらに前記複数のカラムの各々はそれぞれのストア
    アレイおよび線形タグアレイを含む、請求項17に記載
    のキャッシュ。
  27. 【請求項27】 前記複数のカラムの各々はそれぞれの
    物理タグアレイを含み、 各物理タグアレイは対応の複数の物理アドレスタグをス
    トアするための複数の物理アドレスタグ位置を有し、前
    記複数の物理アドレスタグ位置は前記ストアアレイの前
    記複数のラインに対応し、各物理アドレスタグ位置は前
    記ストアアレイの対応のラインにストアされた情報の物
    理アドレスを示す物理アドレスタグをストアする、請求
    項26に記載のキャッシュ。
  28. 【請求項28】 複数の線形アドレス位置および対応の
    複数の物理アドレス位置を有する統合トランスレーショ
    ンルックアサイドバッファをさらに含み、前記複数の線
    形アドレス位置の各々は線形アドレスをストアし、かつ
    前記対応の複数の物理アドレス位置の各々は対応の物理
    アドレスをストアし、前記対応の物理アドレスは前記線
    形アドレスを変換したものである、請求項27に記載の
    キャッシュ。
  29. 【請求項29】 論理アドレスを使用してアクセスされ
    る複数の機能ユニットを含むプロセッサ内でキャッシュ
    を使用するための方法であって、前記プロセッサは物理
    アドレスを使用して前記プロセッサ外部のデバイスと相
    互に作用し、前記方法は線形アドレスを使用して前記キ
    ャッシュをアドレス指定するステップと、 物理アドレスを線形アドレスに、および線形アドレスを
    物理アドレスに変換して、前記プロセッサ外部のデバイ
    スが前記キャッシュと通信することを可能にするステッ
    プと、さらに線形アドレスを論理アドレスに、および論
    理アドレスを線形アドレスに変換して、前記機能ユニッ
    トが前記キャッシュと通信することを可能にするステッ
    プとを含む、方法。
  30. 【請求項30】 論理アドレスを使用してアクセスされ
    る複数の機能ユニットを含むプロセッサ内でキャッシュ
    を使用する際にエイリアシングが発生するのを防ぐため
    の方法であって、前記プロセッサは物理アドレスを使用
    して前記プロセッサ外部のデバイスと相互に作用し、前
    記方法は線形アドレスを使用して前記キャッシュをアド
    レス指定するステップを含み、前記キャッシュは各々が
    複数のラインを含む複数のカラムを含み、各カラムの前
    記複数のラインは他のカラムの前記複数のラインに対応
    し、 物理アドレスを線形アドレスに、および線形アドレスを
    物理アドレスに変換して、前記プロセッサ外部のデバイ
    スが前記キャッシュと通信することを可能にするステッ
    プを含み、前記変換ステップは前記線形アドレスの最下
    位ビットが前記物理アドレスの最下位ビットに対応する
    ことを可能にし、 線形アドレスを論理アドレスに、および論理アドレスを
    線形アドレスに変換して、前記機能ユニットが前記キャ
    ッシュと通信することを可能にするステップと、さらに
    前記線形アドレスの最下位ビットが前記キャッシュの各
    カラムの特定のラインにアクセスするように前記キャッ
    シュのアドレシングを制御し、かつ物理アドレスに対応
    する情報が前記キャッシュの前記特定のラインの1つの
    カラムのみに書込まれるようにする、方法。
  31. 【請求項31】 情報を処理するための装置であって、 物理アドレスを使用してアドレス指定される、前記情報
    を保持するための外部メモリと、 プロセッサバスを介してメインメモリに結合されるプロ
    セッサとを含み、前記プロセッサは論理アドレスを使用
    してアドレス指定される複数の機能ユニットと、 前記複数の機能ユニットが使用するための情報を一時的
    にストアするための、線形アドレスを使用してアドレス
    指定されるキャッシュと、 線形アドレスを論理アドレスに、および論理アドレスを
    線形アドレスに変換して、前記機能ユニットが前記キャ
    ッシュと通信することを可能にする第1の変換回路とを
    含み、前記装置はさらに物理アドレスを線形アドレス
    に、および線形アドレスを物理アドレスに変換して、前
    記外部メモリが前記キャッシュと通信することを可能に
    する第2の変換回路を含む、装置。
  32. 【請求項32】 前記キャッシュは前記機能ユニットが
    使用するための命令を一時的にストアするための命令キ
    ャッシュと、前記機能ユニットが使用するためのデータ
    を一時的にストアするためのデータキャッシュとを含
    む、請求項31に記載の装置。
  33. 【請求項33】 対応の複数の命令物理アドレスタグを
    ストアするための複数の命令物理アドレスタグ位置を有
    する命令物理タグアレイをさらに含み、前記複数の命令
    物理アドレスタグ位置は前記命令キャッシュの複数のラ
    インに対応し、各命令物理アドレスタグ位置は前記命令
    キャッシュの対応のラインにストアされた情報の物理ア
    ドレスを示す命令物理アドレスをストアし、さらに対応
    の複数のデータ物理アドレスタグをストアするための複
    数のデータ物理アドレスタグ位置を有するデータ物理タ
    グアレイを含み、前記複数のデータ物理アドレスタグ位
    置は前記データキャッシュの複数のラインに対応し、各
    データ物理アドレスタグ位置は前記データキャッシュの
    対応のラインにストアされた情報の物理アドレスを示す
    データ物理アドレスタグをストアする、請求項32に記
    載の装置。
  34. 【請求項34】 複数の線形タグ値位置および対応の複
    数の物理アドレス位置を有するトランスレーションルッ
    クアサイドバッファをさらに含み、前記複数の線形タグ
    値位置の各々は線形アドレスを示す線形タグ値をストア
    し、かつ前記対応の複数の物理アドレス位置の各々は対
    応の物理アドレスをストアし、前記対応の物理アドレス
    は前記線形アドレスを変換したものであり、前記トラン
    スレーションルックアサイドバッファは前記命令キャッ
    シュおよび前記データキャッシュの双方によってアクセ
    スされる、請求項33に記載の装置。
  35. 【請求項35】 前記キャッシュは情報を一時的にスト
    アするための複数のラインを有するストアアレイと、さ
    らに対応の複数の線形アドレスタグをストアするための
    複数の線形アドレスタグ位置を有する線形タグアレイと
    を含み、前記複数の線形アドレスタグ位置は前記ストア
    アレイの前記複数のラインに対応し、各線形アドレスタ
    グ位置は前記ストアアレイの対応のラインにストアされ
    た情報の線形アドレスを示す線形アドレスタグをストア
    する、請求項31に記載の装置。
  36. 【請求項36】 対応の複数の有効情報信号をストアす
    るための複数の有効情報信号位置を有する有効情報アレ
    イをさらに含み、前記複数の有効情報信号位置は前記ス
    トアアレイの前記複数のラインに対応し、各前記有効情
    報信号は有効情報が前記ストアアレイの対応のラインに
    ストアされているかどうかを示す、請求項35に記載の
    装置。
  37. 【請求項37】 前記線形タグアレイは前記有効情報ア
    レイを含む、請求項36に記載の装置。
  38. 【請求項38】 対応の複数の物理アドレスタグをスト
    アするための複数の物理アドレスタグ位置を有する物理
    タグアレイをさらに含み、前記複数の物理アドレスタグ
    位置は前記キャッシュの複数のラインに対応し、各物理
    アドレスタグ位置は前記キャッシュの対応のラインにス
    トアされた情報の物理アドレスを示す物理アドレスタグ
    をストアする、請求項31に記載の装置。
  39. 【請求項39】 対応の複数の物理タグ有効情報信号を
    ストアするための複数の物理タグ有効情報信号位置を有
    する物理タグ有効情報アレイをさらに含み、前記複数の
    物理タグ有効情報信号位置は前記キャッシュの前記複数
    のラインに対応し、各前記物理タグ有効情報信号は有効
    物理タグが前記物理タグアレイの対応のラインにストア
    されているかどうかを示す、請求項38に記載の装置。
  40. 【請求項40】 前記物理タグアレイは前記物理タグ有
    効情報アレイを含む、請求項39に記載の装置。
  41. 【請求項41】 複数の線形タグ値位置および対応の複
    数の物理アドレス位置を有するトランスレーションルッ
    クアサイドバッファをさらに含み、前記複数の線形タグ
    値位置の各々は線形アドレスを示す線形タグ値をストア
    し、かつ前記対応の複数の物理アドレス位置の各々は対
    応の物理アドレスをストアし、前記対応の物理アドレス
    は前記線形アドレスを変換したものである、請求項31
    に記載の装置。
  42. 【請求項42】 対応の複数の有効物理変換情報信号を
    ストアするための複数の有効物理変換情報信号位置を有
    する有効物理変換情報アレイをさらに含み、前記複数の
    有効物理変換情報信号位置は前記キャッシュのラインに
    対応し、各前記有効物理変換情報信号は前記キャッシュ
    の対応のラインにストアされた情報が成功の物理タグヒ
    ットを与えるかどうかを示す、請求項31に記載の装
    置。
  43. 【請求項43】 前記線形タグアレイは前記有効物理変
    換情報アレイを含む、請求項42に記載の装置。
  44. 【請求項44】 前記キャッシュは各々がそれぞれのス
    トアアレイおよび線形タグアレイを含む、複数のカラム
    を含む、請求項35に記載のキャッシュ。
  45. 【請求項45】 前記複数のカラムに対応する複数の物
    理タグアレイをさらに含み、 各物理タグアレイは対応の複数の物理アドレスタグをス
    トアするための複数の物理アドレスタグ位置を有し、前
    記複数の物理アドレスタグ位置は前記ストアアレイの前
    記複数のラインに対応し、各物理アドレスタグ位置は前
    記ストアアレイの対応のラインにストアされた情報の物
    理アドレスを示す物理アドレスタグをストアする、請求
    項44に記載の装置。
  46. 【請求項46】 複数の線形アドレス位置および対応の
    複数の物理アドレス位置を有する統合トランスレーショ
    ンルックアサイドバッファをさらに含み、前記複数の線
    形アドレス位置の各々は線形アドレスをストアし、かつ
    前記対応の複数の物理アドレス位置の各々は対応の物理
    アドレスをストアし、前記対応の物理アドレスは前記線
    形アドレスを変換したものである、請求項45に記載の
    装置。
JP6257826A 1993-10-29 1994-10-24 プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法 Withdrawn JPH07160580A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US146381 1988-02-03
US14638193A 1993-10-29 1993-10-29

Publications (1)

Publication Number Publication Date
JPH07160580A true JPH07160580A (ja) 1995-06-23

Family

ID=22517116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6257826A Withdrawn JPH07160580A (ja) 1993-10-29 1994-10-24 プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法

Country Status (4)

Country Link
US (3) US5623619A (ja)
EP (1) EP0651332B1 (ja)
JP (1) JPH07160580A (ja)
DE (1) DE69427734T2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69427734T2 (de) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher
US5890221A (en) * 1994-10-05 1999-03-30 International Business Machines Corporation Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
US6813699B1 (en) 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
KR970029072A (ko) * 1995-11-17 1997-06-26 김주용 이중 디렉토리 가상 캐쉬 및 그 제어 방법
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US5790821A (en) * 1996-03-08 1998-08-04 Advanced Micro Devices, Inc. Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
US5822560A (en) * 1996-05-23 1998-10-13 Advanced Micro Devices, Inc. Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
KR19980032776A (ko) * 1996-10-16 1998-07-25 가나이 츠토무 데이타 프로세서 및 데이타 처리시스템
KR100204024B1 (ko) * 1996-11-06 1999-06-15 김영환 페이지 경계에 걸리는 분할 라인을 한 사이클에 억세스할 수 있는 컴퓨팅 시스템
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US6189074B1 (en) 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
US5933629A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6446189B1 (en) 1999-06-01 2002-09-03 Advanced Micro Devices, Inc. Computer system including a novel address translation mechanism
US6279080B1 (en) * 1999-06-09 2001-08-21 Ati International Srl Method and apparatus for association of memory locations with a cache location having a flush buffer
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6442707B1 (en) 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
AU2745001A (en) * 1999-12-31 2001-07-16 Intel Corporation External microcode
US6510508B1 (en) 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
US6665788B1 (en) 2001-07-13 2003-12-16 Advanced Micro Devices, Inc. Reducing latency for a relocation cache lookup and address mapping in a distributed memory system
US6859868B2 (en) * 2002-02-07 2005-02-22 Sun Microsystems, Inc. Object addressed memory hierarchy
US7958374B2 (en) * 2002-03-19 2011-06-07 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium
US9081725B2 (en) 2002-03-19 2015-07-14 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium
US6957317B2 (en) * 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
US20040103255A1 (en) * 2002-11-25 2004-05-27 Howlett Warren Kurt Memory sub-array selection monitoring
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7685354B1 (en) * 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
US9280473B2 (en) 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
WO2006117504A1 (en) * 2005-05-04 2006-11-09 Arm Limited Use of a data engine within a data processing apparatus
US7630388B2 (en) * 2005-05-04 2009-12-08 Arm Limited Software defined FIFO memory for storing a set of data from a stream of source data
US7920584B2 (en) * 2005-05-04 2011-04-05 Arm Limited Data processing system
US20070005933A1 (en) * 2005-06-29 2007-01-04 Kopec Brian J Preventing multiple translation lookaside buffer accesses for a same page in memory
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US9740494B2 (en) 2011-04-29 2017-08-22 Arizona Board Of Regents For And On Behalf Of Arizona State University Low complexity out-of-order issue logic using static circuits
US9367477B2 (en) * 2014-09-24 2016-06-14 Intel Corporation Instruction and logic for support of code modification in translation lookaside buffers
US20170255569A1 (en) * 2016-03-01 2017-09-07 Qualcomm Incorporated Write-allocation for a cache based on execute permissions
US11853231B2 (en) 2021-06-24 2023-12-26 Ati Technologies Ulc Transmission of address translation type packets

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781808A (en) * 1972-10-17 1973-12-25 Ibm Virtual memory system
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4384343A (en) * 1979-02-12 1983-05-17 Honeywell Information Systems Inc. Firmware controlled search and verify apparatus and method for a data processing system
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
AU3229484A (en) * 1983-09-07 1985-03-14 Amdahl Corporation Time shared translation buffer
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
JPS6194159A (ja) * 1984-07-31 1986-05-13 テキサス インスツルメンツ インコ−ポレイテツド メモリ装置
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
US5133062A (en) * 1986-03-06 1992-07-21 Advanced Micro Devices, Inc. RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
EP0259095A3 (en) * 1986-08-27 1990-02-28 Amdahl Corporation Cache storage queue
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5222230A (en) * 1988-01-29 1993-06-22 Texas Instruments Incorporated Circuitry for transferring data from a data bus and temporary register into a plurality of input registers on clock edges
US5056006A (en) * 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
KR940003383B1 (ko) * 1989-08-28 1994-04-21 니뽄 덴끼 가부시끼가이샤 파이프라인 처리 방식으로 동작하는 프리디코더 유니트 및 주 디코더 유니트를 구비한 마이크로프로세서
US5255377A (en) * 1989-11-13 1993-10-19 Intel Corporation Interface for arbitrating access to the paging unit of a computer processor
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
US5201056A (en) * 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
DE69130588T2 (de) * 1990-05-29 1999-05-27 Nat Semiconductor Corp Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5325499A (en) * 1990-09-28 1994-06-28 Tandon Corporation Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5473348A (en) * 1992-06-09 1995-12-05 Kabushiki Kaisha Toshiba Apparatus and method of controlling paging unit of coprocessor built in display control system
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE69427734T2 (de) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher

Also Published As

Publication number Publication date
EP0651332B1 (en) 2001-07-18
US5761691A (en) 1998-06-02
US5623619A (en) 1997-04-22
US6240484B1 (en) 2001-05-29
DE69427734D1 (de) 2001-08-23
EP0651332A1 (en) 1995-05-03
DE69427734T2 (de) 2002-05-23

Similar Documents

Publication Publication Date Title
JPH07160580A (ja) プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法
AU654204B2 (en) Translation buffer for virtual machines with address space match
EP1006448B1 (en) Pipelined non-blocking two level cache system with inherent transaction collision-avoidance
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
US6185675B1 (en) Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
JP4437001B2 (ja) 変換索引バッファのフラッシュフィルタ
EP0380854B1 (en) Instruction buffer system for a digital computer
US6339822B1 (en) Using padded instructions in a block-oriented cache
US5623627A (en) Computer memory architecture including a replacement cache
JP3977015B2 (ja) リネームタグのスワッピングにより転送を行なうレジスタリネーミング
US5761712A (en) Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US6092182A (en) Using ECC/parity bits to store predecode information
US6157986A (en) Fast linear tag validation unit for use in microprocessor
JPH07182167A (ja) マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置
US6240506B1 (en) Expanding instructions with variable-length operands to a fixed length
JPH06119166A (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JPH0695969A (ja) 高性能プロセッサの変換バッファのためのグラニュラリティヒ ント
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
JPH06131179A (ja) 分岐を除去することによりコンピュータ性能を改善する方法
JPH06236353A (ja) マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム
US6446189B1 (en) Computer system including a novel address translation mechanism
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
JPH04251352A (ja) マイクロプロセサのオンチップキャッシュ内のメモリ位置の選択的ロック
KR20010049340A (ko) 변환 장치의 엔트리를 무효로 하는 시스템 및 방법

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020115