JPH10232834A - キャッシュメモリを作動する方法およびコンピュータシステム - Google Patents

キャッシュメモリを作動する方法およびコンピュータシステム

Info

Publication number
JPH10232834A
JPH10232834A JP10019476A JP1947698A JPH10232834A JP H10232834 A JPH10232834 A JP H10232834A JP 10019476 A JP10019476 A JP 10019476A JP 1947698 A JP1947698 A JP 1947698A JP H10232834 A JPH10232834 A JP H10232834A
Authority
JP
Japan
Prior art keywords
cache
memory
address
main memory
processor
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.)
Pending
Application number
JP10019476A
Other languages
English (en)
Inventor
Andrew Craig Sturges
アンドルー、クレイグ、スタージス
David May
デイビッド、メイ
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.)
STMicroelectronics Ltd Great Britain
Original Assignee
STMicroelectronics Ltd Great Britain
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 GBGB9701960.8A external-priority patent/GB9701960D0/en
Priority claimed from GBGB9725437.9A external-priority patent/GB9725437D0/en
Application filed by STMicroelectronics Ltd Great Britain filed Critical STMicroelectronics Ltd Great Britain
Publication of JPH10232834A publication Critical patent/JPH10232834A/ja
Pending 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 複数の並行処理を実行するプロセッサに対し
てより大きな予測可能性のあるキャシング動作をもたら
すキャッシュシステムを提供すること。 【解決手段】 キャッシュメモリを、それぞれキャッシ
ュメモリに項目を保持するためのアドレス指定可能な複
数の記憶位置を有する複数のキャッシュ区分に分割し、
キャッシュ区分のどれが当該処理の実行で使用するため
の項目を保持するために使用されるべきであるかを識別
する区分表示子を各処理に割り当て、プロセッサが現在
の処理の実行中に主メモリからの項目を要求し、かつこ
の項目がキャッシュメモリに保持されていない場合に、
その項目を主メモリからフェッチし、かつ識別されたキ
ャッシュ区分のアドレス指定可能な複数の記憶位置の中
の1つにロードする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサとコン
ピュータの主メモリとの間で作動するキャッシュシステ
ム、特に複数の並行処理を実行することができるプロセ
ッサに関するものである。
【0002】
【従来の技術】当該技術分野で周知のように、キャッシ
ュメモリは、ある種のデータおよびコードへのアクセス
待ち時間を減少させ、このデータおよびコードのために
使用されるメモリバンド幅を減少させるようにコンピュ
ータシステムにおいて使用されている。キャッシュメモ
リは、メモリアクセスを遅らせ、統合し、再配列するこ
とができる。
【0003】キャッシュメモリは、コンピュータのプロ
セッサと主メモリとの間で作動する。プロセッサで実行
するプロセスによって要求されるデータや命令は、この
処理を実行している間、キャッシュに保持することがで
きる。キャッシへのアクセスは、通常、主メモリへのア
クセスよりも非常に高速である。プロセッサがキャッシ
ュメモリに必要なデータ項目あるいは命令を置かなけれ
ば、プロセッサは、それを引き出すために主メモリを直
接アクセスし、要求されたデータ項目あるいは命令はキ
ャッシュにロードされる。キャッシュメモリを使用し、
取り替えをするためのいろいろな公知のシステムが存在
する。
【0004】実時間システムのキャッシュを当てにする
ために、キャッシュの動作は予測できる必要がある。す
なわち、キャッシュにあることが予想される特定のデー
タ項目あるいは命令が実際そこにあることに関して適度
の確実度がある必要がある。大部分の既存の取り替え機
構は、要求されたデータ項目あるいは命令をキャッシュ
に入れようと通常、常に試みている。これを行うため
に、この機構はキャッシュから他のデータ項目あるいは
命令を削除しなければならない。これは、後で使用する
ためにそこにあることが予想される、削除項目を生じ得
る。これは、特に、多重タスクプロセッサ、あるいは割
り込み処理あるいは他の予測不可能な処理を実効しなけ
ればならないプロセッサの場合である。
【0005】
【発明が解決しようとする課題】本発明の目的は、複数
の並行処理を実行するプロセッサに対してより大きな予
測可能性のあるキャシング動作をもたらすキャッシュシ
ステムを提供することにある。
【0006】
【課題を解決するための手段】これに関しては、並行処
理は、共有プロセッサによるが必ずしも同時に実行され
ない処理であるとみなされる。すなわち、第1の処理は
実行し始め、何らかの理由で割り込むことができる。そ
れから、プロセッサは、第2の処理を実行し始めるが、
第1の処理が再び、あるいは何らかの他のプロンプトに
応じていつでも実行できるようになったときに、第2の
処理にいつでも割り込みできるようになっている。これ
は処理ハンドラによって管理される。第1の処理に関連
したデータや命令が、第2の処理が実行している間にキ
ャッシュから追い出されないことが重要である。反対
に、第2の処理は、実行している間、キャッシュにアク
セスすることができることが有用である。例えば、2つ
の処理、すなわち処理Aおよび処理Bが1つのCPUで
同時に実行している図8に示された場合を考察する。処
理Aは最初にスケジュールされ、それがCPUを保有し
ている間、そのCPUは、データキャッシュをその専用
のデータで完全に満たすことができ、処理Bのためのデ
ータキャッシュに入れられたいかなるデータをも追い出
す。それから、制御は処理Bのためにスワッピングし、
そのときデータキャッシュの状態を無効にし、処理Aの
データの全てを取り除き、その専用のキャッシュに入れ
る。データキャッシュ状態のこのデータのピンポンは、
並行処理との間で共有しており、しばしば性能上、有害
である。
【0007】請求項1に係る発明は、それぞれ命令のシ
ーケンスを含む複数の処理を実行可能であるコンピュー
タのプロセッサと主メモリとの間に配置されたキャッシ
ュメモリを作動する方法において、キャッシュメモリ
を、それぞれキャッシュメモリに項目を保持するための
アドレス指定可能な複数の記憶位置を有する複数のキャ
ッシュ区分に分割するステップと、キャッシュ区分のど
れが当該処理の実行で使用するための項目を保持するた
めに使用されるべきであるかを識別する区分表示子を各
処理に割り当てるステップと、プロセッサが現在の処理
の実行中に主メモリからの項目を要求し、かつこの項目
がキャッシュメモリに保持されていない場合に、その項
目を主メモリからフェッチし、かつ識別されたキャッシ
ュ区分のアドレス指定可能な複数の記憶位置の中の1つ
にロードするステップとを含むことを特徴とするもので
ある。
【0008】区分表示子を各処理に割り当てることによ
って、プロセッサで同時に実行している処理は、各々の
他のデータや命令をキャッシュメモリから追い出すこと
が防止される。すなわち、例えばプロセッサで実行して
いる第1の処理に割り当てられたキャッシュ区分はその
後の第2の処理によって上書きすることができない。そ
の代わりに、第2の処理は、それに割り当てられたそれ
の専用のキャッシュ区分を有する。一旦第1の処理が完
全に完了すると、第1の処理に割り当てられたキャッシ
ュ区分はそれから他の処理に割り当てることができるよ
うに、区分表示子を処理に割り当てることを変えること
ができることはもちろん好ましい。
【0009】処理の要求に応じて、2つ以上のキャッシ
ュ区分を処理に割り当てるか、あるいはキャッシュへの
処理アクセスをともかく否定することができる。
【0010】本発明の実施の形態においては、実行され
ている現在処理のための区分表示子は、処理についての
状態情報をも保持する処理状態メモリに保持されてい
る。これは、ここではスレッド状態ワードレジスタと呼
ばれている。新しい処理がプロセッサによって実行され
るべきである場合、新しいスレッド状態ワードは、この
処理に割り当てられた新しい区分表示子とともにメモリ
にロードされる。
【0011】区分表示子は、処理のためのグループ識別
子の中に含むことができ、グループ識別子は処理のため
のアドレス空間を識別する。仮想アドレス指定方式で
は、プロセッサは、仮想ページ番号およびページ番号の
ラインを含むアドレスを発し、アドレス変換バッファ
は、仮想ページ番号を主メモリをアドレス指定する実ペ
ージ番号に変換するために備えられている。このよう
に、アドレス変換バッファは、グループ識別子も受け取
り、処理に割り当てられた仮想アドレス空間に応じて現
在処理のための区分表示子をそこから得ることができ
る。
【0012】アドレス指定された項目のラインインペー
ジ番号は、項目が置かれるべきキャッシュ区分内のアド
レス記憶位置を識別するために使用することができる。
すなわち、各キャッシュ区分は直接マッピングされる。
ラインインページ番号として項目アドレスのエンドビッ
トであるが、適当なビットのセットに他ならない全てを
使用することは必要ないことは明らかである。これら
は、通常、アドレスの最下位の終わりに近い。
【0013】1つあるいはそれ以上のキャッシュ区分を
処理に割り当てることができる。
【0014】このシステムは、キャッシュメモリからの
項目を、前記項目の主メモリのアドレスに従って、かつ
項目がキャッシュメモリに保持されるキャッシュ区分に
関係なくアクセスするキャッシュアクセス回路を含み得
る。すなわち、区分表示子は、取り替えで使用されるだ
けで、ルックアップでは使用されない。このように、キ
ャッシュされる項目は、たとえこのキャッシング後にこ
の区分が異なるアドレス空間に関連した処理に今すぐ割
り当てられるとしても、その区分から引き出すことがで
きる。
【0015】請求項8に係る発明は、それぞれが一連の
命令を含み、現在実行されている現在処理のための区分
表示子を保持する処理状態メモリを含んでいる複数の処
理を実行するためのプロセッサと、主メモリと、それぞ
れ処理の実行中のプロセッサによって使用するために主
メモリからフェッチされる項目を保持するアドレス指定
可能な複数の記憶位置を含む一連のキャッシュ区分を有
するキャッシュメモリと、主メモリから項目をフェッチ
し、この項目をアドレス指定可能な記憶位置のキャッシ
ュメモリにロードするように構成され、現在処理と関連
して処理状態メモリに保持された区分表示子に応じ項目
をロードするアドレス指定可能な記憶位置の中の1つを
選択するキャッシュ取り替え機構とを備えたことを特徴
とするコンピュータシステムを要旨とするものである。
【0016】各処理は、共有ページ番号内部に主メモリ
のアドレスに保持された2つ以上の命令シーケンスを含
むことができる。キャッシュ区分は、各キャッシュ区分
を主メモリの特定の処理のページ番号に関連付けること
によって処理に割り当てることができる。これは、我々
の以前の英国特許出願第9701960.8号明細書に
記載されている。
【0017】代替例として、区分表示子は、スレッド状
態ワードレジスタに保持し、キャッシュ取り替え機構に
直接供給することができる。
【0018】各キャッシュ区分におけるアドレス指定可
能な記憶位置の数は変更可能でありうる。さらに、ペー
ジ番号に対するキャッシュ番号の関連性は、変更可能で
ありうると同時に、これらのページ番号を使用するプロ
セスはプロセッサによって実行される。
【0019】以下に記載する発明の実施の形態は、他の
区分に入れられる他のデータのページからのキャッシュ
ラインから読み出すかあるいはこのキャッシュラインに
書き込むことによって予想できない追い出しからキャッ
シュの内容を保護するキャッシュシステムを示してい
る。この実施の形態は、キャッシュの内容を予測できる
システムも提供する。
【0020】
【発明の実施の形態】図1は、キャッシュシステムを組
み込むコンピュータのブロック図である。コンピュータ
は、主メモリ6から項目をアクセスするためのアドレス
バス4および項目をCPU2に戻すためのデータバス8
に接続されているCPU2を備えている。データバス8
はここではデータバスと呼ばれているが、この項目がC
PUによる実行のための実際のデータあるいは命令を構
成しようが構成しまいが、これは主メモリ6からの項目
の戻りのためであることが理解される。ここに記載され
ているシステムは命令キャッシュおよびデータキャッシ
ュの両方で使用するのに適している。公知であるよう
に、別個のデータキャッシュおよび命令キャッシュがあ
ってもよいし、あるいはデータキャッシュおよび命令キ
ャッシュは結合されてもよい。ここに記載されたコンピ
ュータでは、アドレス指定方式はいわゆる仮想アドレス
指定方式である。アドレスは、ページアドレスのライン
4aおよび仮想ページアドレス4bに分割される。仮想
ページアドレス4bはアドレス変換バッファ(TLB)
10に供給される。ページアドレスのライン4aはルッ
クアップ回路12に供給される。アドレス変換バッファ
10は、仮想ページアドレス4bに基づいて変換された
実ページアドレス14をルックアップ回路12に供給す
る。ルックアップ回路12は、アドレスバスおよびデー
タバス16,18を介してキャッシュアクセス回路20
に接続されている。さらに、データバス18は、主メモ
リ6からのデータ項目あるいは命令のためのものであっ
てもよい。キャッシュアクセス回路20は、アドレスバ
ス24、データバス26およびキャッシュメモリ22の
ための置換情報を転送する制御バス28を介してキャッ
シュメモリ22に接続されている。取り替えエンジン3
0は、取り替えエンジンとキャッシュアクセス回路との
間で置換情報、データ項目(あるいは命令)およびアド
レスを転送する取り替えバス32を介してキャッシュア
クセス回路20に接続されている。取り替えエンジン3
0はそれ自体主メモリ6に接続されている。
【0021】取り替えエンジン30は、アドレス変換バ
ッファ10から、主メモリ6の項目の実ページアドレス
およびラインインページアドレスを含む全実アドレス3
4を受け取る。取り替えエンジン30は、4ビットバス
上のアドレス変換バッファ10から区分表示子をも受け
取る。区分表示子の機能は以下に記載されている通りで
ある。
【0022】最後に、取り替えエンジン30は、以下に
より明確に記載されているようにルックアップ回路12
で発生される、ライン38上のミス信号を受け取る。
【0023】ここに記載されているキャッシュメモリ2
2は、直接マッピングキャッシュである。すなわち、こ
のキャッシュメモリ22は複数のアドレス指定可能な記
憶位置を有し、各位置は、キャッシュの1行を構成す
る。各行は、主メモリからの項目およびこの項目の主メ
モリのアドレスを含んでいる。各行は、この行に記憶さ
れたデータ項目の主メモリのアドレスの最下位ビットを
示す多数のビットによって構成される行アドレスによっ
てアドレス指定可能である。例えば、8行を有するキャ
ッシュメモリの場合、各行アドレスは、これらの行を独
自に識別するための3ビットの長さである。例えば、キ
ャッシュの第2行は行アドレス001を有するので、ビ
ット001で終わるアドレスを有する主メモリからの任
意のデータ項目を主メモリに保持することができる。明
らかに、主メモリでは、多数のこのようなアドレスがあ
るので、可能性としてキャッシュメモリのこの行に保持
される多数のデータ項目がある。もちろん、キャッシュ
メモリは、毎回この行に唯一のデータ項目を保持するこ
とができる。
【0024】次に、図1に示されたコンピュータシステ
ムの動作について説明するが、あたかも区分表示子が存
在しないようである。CPU2は、主メモリのアドレス
を使用して主メモリ6からの項目を要求し、このアドレ
スをアドレスバス4上に伝送する。仮想ページ番号は、
それを所定の仮想/実ページ変換アルゴリズムに従って
実ページ番号14に変換するアドレス変換バッファ10
に供給される。実ページ番号14は、CPU2によって
伝送された最初のアドレスのページ番号のライン4aと
ともにルックアップ回路12に供給される。ラインイン
ページアドレスは、キャッシュメモリ22をアドレス指
定するためにキャッシュアクセス回路20によって使用
される。ラインインページアドレスは、キャッシュメモ
リ22の行アドレスに等しい、メモリの主アドレスの
(必ずしもエンドビットを含まない)最下位数ビットの
セットを含んでいる。データ項目(あるいは命令)およ
びデータ項目(あるいは命令)のアドレスである、ペー
ジアドレスの行によって識別される行アドレスのキャッ
シュメモリの内容は、ルックアップ回路12に供給され
る。そこで、キャッシュメモリから引き出されたアドレ
スの実ページ番号は、アドレス変換バッファ10から供
給された実ページ番号と比較される。これらのアドレス
が一致するならば、ルックアップ回路はヒットを示し、
このヒットによってキャッシュメモリのこの行に保持さ
れたデータ項目はデータバス8に沿ってCPUに戻され
る。しかしながら、キャッシュメモリ22のアドレス指
定された行に保持されたアドレスの実ページ番号がアド
レス変換バッファ10から供給された実ページ番号に一
致しないならば、ミス信号は取り替えエンジン30のラ
イン38上に発生される。バス34上のアドレス変換バ
ッファ10から供給される実アドレスを使用して、主メ
モリ6から正しい項目を引き出すことは取り替えエンジ
ン30のタスクである。主メモリ6から1度フェッチさ
れたデータ項目は、取り替えバス32を介してキャッシ
ュアクセス回路20に供給され、主メモリのアドレスと
ともにキャッシュメモリ22にロードされる。データ項
目そのものはデータバス8に沿ってCPUにも戻される
ので、CPUは実行し続けることができる。上記に概略
されるような直接マッピングキャッシュメモリでは、主
メモリ6から呼び出されるデータ項目およびそのアドレ
スは、データ項目がチェックするために最初にアクセス
された記憶位置にロードされることは明らかである。す
なわち、データ項目は、主メモリのラインインページア
ドレスの最下位数ビットのセットに一致する行アドレス
を有するデータ項目を受け入れることができる唯一の記
憶位置に上書きされる。もちろん、キャッシュメモリに
最初に記憶されたデータ項目のページ番号およびいまキ
ャッシュメモリにロードされるべきデータ項目は異なっ
ている。この「1対1のマッピング」はキャッシュの有
用性を制限する。
【0025】より大きな柔軟性をキャッシュシステムに
提供するために、nウェイ・セット・アソシアティブ・
キャッシュが開発された。4ウェイ・セット・アソシア
ティブ・キャッシュは図2に示されている。キャッシュ
メモリは4つのバンクB1,B2,B3,B4に分割さ
れる。このバンクは、図2の1行に対して概略的に示さ
れているように、一般に共有行アドレスによって行方向
にアクセスされる。しかしながら、この行は4つのキャ
ッシュエントリ、すなわち各バンクに対して1つのキャ
ッシュエントリを含んでいる。バンクB1に対するキャ
ッシュエントリは、バス26a上に出力され、バンクB
2に対するキャッシュエントリは、バス26b上に出力
され、バンクB3およびB4に対しても同様である。し
たがって、これは、1行アドレス(あるいはページアド
レスの行)に対して4つのキャッシュエントリを可能に
する。行がアドレス指定される度に、4つのキャッシュ
エントリが出力され、そのアドレスの実ページ番号は、
アドレス変換バッファバッファ10から供給された実ペ
ージ番号と比較され、どのエントリが正しいエントリで
あるかを決定する。キャッシュに試みられたアクセスの
際にキャッシュミスがあるならば、取り替えエンジン3
0は、主メモリから要求された項目を引き出し、例え
ば、特定の項目がどれくらいの長さキャッシュに保持さ
れているか、あるいはシステムの他のプログラムパラメ
ータに基づいている取り替えアルゴリズムに従って、バ
ンクの中の1つの正しい行に要求された項目をロードす
る。このような置換アルゴリズムは公知であり、ここで
はこれ以上の説明は省略する。
【0026】それにもかかわらず、nウェイ・セット・
アソシアティブ・キャッシュ(ここでは、nはバンク数
であり、図2の4に等しい)は、単一の直接マッピング
システムの改良であるかぎり、なお汎用性がなく、より
重要なことはキャッシュの動作を適切に予測できないこ
とである。
【0027】ここに記載されたシステムは、より汎用性
のあるキャッシュ取り替えシステムによってキャッシュ
メモリのコンピュータ使用の最適化を可能にするキャッ
シュ分割機構を備えている。
【0028】図3は、図1のコンピュータを使用するC
PU2の概略ブロック図である。CPU2は、メモリバ
ス4を介してメモリをアドレス指定し、データバス8を
介してデータおよび命令を引き出すことができるフェッ
チ回路17に接続されている実行回路15を備えてい
る。汎用レジスタ7のセットは、プロセスを実行する際
に使用するためのデータおよび命令を保持する実行回路
15に接続されている。さらに、参照番号9、11およ
び13によって示される特別レジスタのセットが備えら
れている。任意の数の専用レジスタがあってもよく、例
として、レジスタ11は、現在実行されているコードの
ラインを識別する命令ポインタを保持する。さらに、特
殊レジスタ9は、CPU2によって実行されているプロ
セスの状態を規定するスレッド状態ワードを保持する。
実行回路15は、毎回1プロセスあるいは命令のシーケ
ンスを実行することができる。しかしながら、実行回路
15は、同様にこのプロセスに割り込み、第1のプロセ
スが実行し終える前に別のプロセスを実行し始める。実
行回路15によって現在実行されるプロセスに割り込む
ことができる多くの理由がある。1つは、より高い優先
順位の割り込み処理が直ちに実行されることである。も
う一つは、実行されている処理が現在長い待ち時間でデ
ータを待っているので、第1の処理がこのデータを待っ
ている間、その後の処理を実行し始めることは実行回路
にとってより効率的であることである。データが受け取
られた場合、第1のプロセスを実行するために再スケジ
ュールすることができる。並行処理の実行は、それ自体
は公知であり、処理ハンドラ19によって管理される。
【0029】各処理は、いわゆる制御の「スレッド」の
下で実行される。スレッドは下記の状態を有する。すな
わち、この処理において、スレッドがどこに進むかを示
している命令ポインタ、この処理が次にどこに分岐する
かを示すジャンプポインタ、直ちにアクセスできる値を
含んでいる汎用レジスタ7のセット、仮想アドレス/物
理アドレスのマッピング、仮想アドレスによりアクセス
可能なメモリの内容、および、スレッドおよび任意の他
の値によってこのような浮動小数点丸めモード、スレッ
ドがカーネル特権を有しているかどうか等をアクセスで
きる制御レジスタ。
【0030】上記の状態のいくつかは、ここではスレッ
ド状態ワードと呼ばれ、スレッド状態ワードレジスタ9
に保持されている小さい値のセットで指定される。スレ
ッド状態ワードは、特に下記についての情報を保持す
る。スレッドがカーネルモードにあるか否か、スレッド
はどの仮想アドレス空間にアクセスできるか、浮動小数
点フラグ、トラップイネーブルおよびトラップモード、
デバッグ情報、およびトラップ最適化情報。
【0031】スレッド状態ワードのフォーマットは表I
に規定されている。
【表1】
【0032】表Iから分かるように、スレッド状態は、
8ビットのグループ番号を含んでいる。これは、キャッ
シュ区分を割り当てる区分表示子を発生するために下記
に記載されるように示される。
【0033】ここに記載されたシステムのアドレス変換
バッファ10では、各TLBエントリは、仮想ページ番
号、実ページ番号および情報シーケンスに関連付けた。
情報シーケンスは公知であり、ここにこれ以上説明され
ていない方法でメモリのアドレスについてのいろいろな
情報を含んでいる。しかしながら、現在説明されている
システムによれば、情報シーケンスは、グループ番号お
よび仮想ページ番号によって決まる区分表示子を発生す
る区分コードをさらに含んでいる。これは、図4に概略
図で示されている。ここでは、VPは仮想ページ番号を
示し、RPは実ページ番号を示し、GNがグループ番号
を示し、INFOが情報シーケンスを示している。記載
されている実施の形態では、PIは4ビットの長さであ
る。
【0034】したがって、情報シーケンスINFOのビ
ット0〜3は区分表示子を構成する。区分表示子は、デ
ータ項目がキャッシュメモリ22に最初にロードされる
ときにデータ項目を入れることができる区分に関する情
報を示している。図2に示されたキャッシュ構造に関し
て、各区分はキャッシュの1バンクを構成することがで
きる。区分表示子において、各ビットはバンクの中の1
つを参照する。区分表示子のビットjの1の値は、この
ページのデータを区分jに入れることができないことを
意味する。ビットjの0の値は、このページのデータを
区分jに入れることができることを意味する。データ
は、区分表示子の2ビット以上に0を有することによっ
て2つ以上の区分に入れることができる。全て0である
区分表示子によって、データはキャッシュの任意の区分
に入れることができる。全て1である区分表示子によっ
て、任意のデータ項目は、キャッシュメモリにロードす
ることができない。これは、例えば、キャッシュの内容
を“凍結”するために、例えば診断目的のために使用す
ることができる。
【0035】図4に示された例では、区分表示子は、主
メモリにこの実ページ番号を有するデータ項目の置換が
バンクB1あるいはB3を使用することができず、バン
クB2あるいはB4が使用可能であることを示してい
る。
【0036】2つ以上のバンクをページに割り当てるこ
とは事実上可能である。この場合、ラインインページア
ドレスがキャッシュに対して行アドレスよりも多くのビ
ットを有するならば、区分はkウェイ・セット・アソシ
アティブ・キャッシュとして動作する。ここで、k個の
区分は1ページに割り当てられる。したがって、記載さ
れた例では、図4の処理はバンクB2およびB4を使用
することができる。しかしながら、この処理はバンクB
1およびB3を使用することができない。
【0037】区分情報は、キャッシュルックアップで使
用されないで、キャッシュ置換あるいは取り替えにだけ
使用される。このように、キャッシュアクセスは、キャ
ッシュメモリのどこにも保持されるデータ項目を探索で
きるのに対して、置換は、このページアドレスのために
許可された区分にデータを置換するだけである。
【0038】図5は、取り替えエンジン30の内容をよ
り詳細に示している。取り替えバス32は、3つの別個
のバス、データバス32a、アドレスバス32bおよび
置換情報を伝達するバス32cとして図4に示されてい
る。データバスおよびアドレスバス32aおよび32c
は、メモリバス54を介して主メモリをアクセスするメ
モリアクセス回路50に供給される。置換情報は、実ア
ドレス34、バス36上の区分表示子PIおよびミス信
号38も受け取る決定回路52に供給される。決定回路
52は、主メモリにアクセスされたデータが置かれるべ
きキャッシュの適切な区分を決定する。
【0039】ここに記載されたキャッシュ分割機構は特
に多重タスクCPUに有用である。多重タスクプロセッ
サは、2つ以上の処理を「同時に」実行することができ
る。実際には、プロセッサは処理の一部を実行し、この
処理が何かの理由で、多分続けるためのデータあるいは
スティミュラスの要求で停止されると、プロセッサは直
ちに他の処理を実行し始める。したがって、プロセッサ
は、個別処理を続けるためのデータあるいはスティミュ
ラスを待って中止することができるときさえ常に作動し
ている。図6は、このような状態を概略図で示してい
る。図6の左側には、プロセッサが異なるP1,P2,
P3,P4を実行することを引き受けることができるシ
ーケンスが示されている。これらの処理が、そのデータ
がメモリに保持されることを予想できる場合の図が、図
5の右側に示されている。したがって、処理P1のため
のデータはページ0に保持されている。処理P2のため
のデータはページ1およびページ2に保持されている。
処理P3およびP4のためのデータはページ3を共有す
る。この例では、プロセッサは、第1の処理のシーケン
スP1、第1の処理のシーケンスP2、第2の処理のシ
ーケンスP1、第2の処理のシーケンスP2を実行し、
それから第1の処理のシーケンスP3を実行する。第2
の処理のシーケンスP1が実行された場合、処理P1は
プロセッサによって完全に実行された。従来のキャッシ
ュシステムでは、一旦プロセッサが第1の処理のシーケ
ンスP2を実行し始め、このようにページ1からのアク
セスを要求すると、これらのラインのデータ項目および
命令は0ページからの予め記憶された記憶項目および命
令をキャッシュで置換することは容易に明らかである。
しかしながら、、第2の処理のシーケンスP1が実行さ
れると、これらはまもなく再び要求することができる。
【0040】ここに記載されているキャッシュ分割機構
は、これから生じる得るタイミング遅れおよび不正確さ
を避ける。図7は、プロセッサが処理P1を実行してい
る間のキャッシュの分割およびプロセッサが実行P3等
にスイッチする場合の分割の変化を示している。図6
は、各々の場合に対するTLBキャッシュ区分表示子も
示している。したがって、図5は、プロセッサが処理P
1およびP2を実行している間の分割されたキャッシュ
を左側に示している。処理P1はキャッシュのバンクB
1およびB2を使用することができるが、バンクB3お
よびB4を使用することはできない。反対に、処理P2
はバンクB3およびB4を使用することができるが、バ
ンクB1およびB2を使用することはできない。これは
TLBエントリで分かる。すなわち、処理P1は、バン
クB1およびB2をアクセスすることができるが、バン
クB3およびB4にアクセスできないキャッシュ区分表
示子を有する。処理P2は、バンクB3およびB4にア
クセスすることができるが、バンクB1おB2にアクセ
スできないキャッシュ区分表示子を有する。処理P3
は、キャッシュにアクセスすることを防止するキャッシ
ュ区分表示子を有する。したがって、処理P3からのデ
ータ項目をキャッシュにロードしようとするプロセッサ
によるいかなる試みも禁止される。しかしながら、前述
の処理シーケンスに関して、理解できるように、プロセ
ッサは、処理P1を実行し終えるまで、処理P3のいか
なる部分も実行するつもりはないために、これは不利な
ことではない。プロセッサが何らかの理由でP3を実行
しなければならないならば、唯一の不利な面は、プロセ
ッサがダイレクトメモリからそのアクセスを行わなけれ
ばならなく、キャッシュを使用できないことである。
【0041】処理P1が実行し終えた場合、プロセッサ
は、キャッシュ区分表示子を変えることができるように
カーネルモードを要求することができる。これが行われ
る方法は、分割機構が実行される方法で決まる。前述の
例の場合、区分コードは任意の他のTLBエントリと同
様にTLBにセットすることができる。このように、区
分コードはCPU2で実行するカーネルモードソフトウ
ェアによって通常セットされる。しかしながら、ユーザ
は、キャッシュ区分が変えられるべきであることを要求
することによって区分を変えることができる。この場
合、CPU2は、要求を実行するためにカーネルモード
に変え、それに応じてTLBエントリを変え、それから
ユーザモードに戻し、ユーザは継続することができる。
したがって、ユーザは、キャッシュの分割動作を変える
ことができるので、これまで可能であったよりも非常に
大きな柔軟性をもたらす。この変化は図6の右側に示さ
れている。したがって、次にキャッシュ区分表示子は、
処理P1がキャッシュをともかく使用することを防止す
るが、キャッシュ区分表示子がキャッシュのこれらのバ
ンクにアクセスできるように処理P3およびP4のため
のキャッシュ区分表示子を変えることによってバンクB
1およびB2を処理P3およびP4に割り当てる。この
ように、プロセッサが処理P3を実行することを予想し
ている場合、プロセッサは今やキャッシュ機構を有す
る。
【0042】したがって、並行処理がデータキャッシュ
から他の各データを追い出すことを防止するシステムが
前述された。すなわち、この処理はデータキャッシュ区
分をばらばらにするようにマッピングされる。これは、
それの独自の専用データキャッシュに各処理を有効的に
もたらす。これは両方の処理に使用可能なデータキャッ
シュ空間量を減少させるが、それによってその動作は正
確に予測するのが非常に容易になる。ここに記載されて
いるシステムの結果は図9に示されている。
【0043】ここに記載されているシステムが特に有用
である他の領域は性能に重要なルーチンの実行にある。
その性能がシステムの全性能に絶対的に重要である若干
のルーチンがある。これの適切な例は、呼び出される場
合、保証された(通常短い)時間の長さに効果を生じな
ければならない割り込みサービスルーチンであってもよ
い。これらの場合、キャッシュ区分は、これらの重要な
ルーチンに必要なデータおよびコードのためのデータキ
ャッシュおよび命令キャッシュの両方に取っておかれ
る。したがって、命令キャッシュおよびデータキャッシ
ュの残りは残りの処理の中で分配することができる。図
10は、可能な配置を示している。図10では、データ
キャッシュの1つの2キロバイトおよび命令キャッシュ
の1つの4キロバイトを動作に重要な割り込みサービス
ルーチンのために取っておく例が示されている。
【0044】本発明が上記に詳述された実施の形態に限
定されないことは明らかである。いくつかの特定の可能
な変更は後述されるが、これは本発明の範囲内で可能で
ある包括的な変更のリストではない。
【0045】上記の実施の形態では、アドレスバス4上
のCPUによって発されるアドレスは、仮想ページ番号
4bおよびラインインページ4aに分割される。しかし
ながら、本発明は、全仮想アドレスがCPUからキャッ
シュのためのルックアップ回路に送られている場合に使
用することもできる。反対に、本発明は、CPUが実ア
ドレスを直接にルックアップ回路に発する場合にも適用
可能である。重要なことは、キャッシュ区分表示子が実
行されている特定の処理と関連して提供されていること
である。
【0046】上記の実施の形態では、単一のキャッシュ
アクセス回路20は、ルックアップおよび取り替えの両
方に関してキャッシュをアクセスするように示されてい
る。しかしながら、キャッシュに取り替えのための付加
アクセスポートを装備することも可能なので、ルックア
ップおよび取り替えはキャッシュメモリ22のための異
なるアクセスポートによって行われる。
【0047】上述の実施の形態では、取り替えエンジン
30およびキャッシュアクセス回路20は個別ブロック
で示されている。しかしながら、その機能を組み合わせ
てルックアップおよび取り替えの両方を実行する単一の
キャッシュアクセス回路にすることも可能である。
【0048】下記は、特定の処理と関連して区分表示子
を発生するのに可能な代替例を示すものである。
【0049】1つの代替例では、区分表示子は、スレッ
ド状態ワードTSWに直接入れられる。記載されたスレ
ッド状態ワードの場合、これは、TSWの現在予備の5
6〜59を新しいフィールドTSW.PIに割り当てる
ことによって行うことができる。それから、TSW.P
Iの値は、CPUから直接取り替えエンジン30に送ら
れる。これは、TLB10からよりもむしろCPU2か
ら直接区分表示子を取り替えエンジン30に接続するた
めに図1に示されたアーキテクチャの修正を必要とす
る。これを実施するために、新しいスレッド状態ワード
TSWは実行される次のスレッドのためにロードされる
場合、区分表示子PIが変えられる。これは、スレッド
状態ワードのパラメータをセットする特定の設定命令で
行うことができる。
【0050】他の実施の形態では、仮想アドレスを使用
しないでグループ番号を区分表示子PIにマッピングす
るアドレス変換バッファ10にテーブルを備えることが
できる。これは、区分表示子をもたらすグループ番号に
よって索引付けられたテーブルあるいは一致グループの
ための区分表示子をもたらすグループ番号/区分表示子
対を有するテーブルを備えることによって行うことがで
きる。この場合、図1のアーキテクチャは変わらない
が、異なるテーブルはアドレス変換バッファ10で必要
である。これを実施する場合、区分表示子は、2つのオ
ペランド、すなわち変えられる制御レジスタ番号および
その新しい値を有する“put”命令を使用して変える
ことができる。全ての制御レジスタは、この命令を使用
してこのレジスタにアクセスするために使用することが
できる番号を割り当てられるので、グループ番号/区分
表示子テーブルの各エントリは独自の制御レジスタ番号
を有する。
【0051】
【発明の効果】本発明によれば、複数の並行処理を実行
するプロセッサに対してより大きな予測可能性のあるキ
ャシング動作をもたらすキャッシュシステムを提供する
ことができる。
【図面の簡単な説明】
本発明をより完全に理解し、同様に本発明を実行できる
方法を示すために、いま例として添付図面が参照され
る。
【図1】キャッシュシステムを組み込むコンピュータの
ブロック図である。
【図2】4ウェイ・セット・アソシアティブ・キャッシ
ュを示す略図である。
【図3】図1のCPUのブロック図である。
【図4】アドレス変換バッファのエントリの一例であ
る。
【図5】取り替えエンジンのブロック図である。
【図6】多重タスクプロセッサの動作を示す図である。
【図7】図6のシステムのためのキャシング動作の変更
を示す図である。
【図8】未分割キャッシュを示す図である。
【図9】本発明の有用なアプリケーションを示す図であ
る。
【図10】本発明の有用なアプリケーションを示す図で
ある。
【符号の説明】
2 CPU 6 主メモリ 7 レジスタバンク 10 アドレス変換バッファ(TLB) 12 ルックアップ回路 15 実行回路 17 フェッチ回路 19 処理ハンドラ 20 キャッシュアクセス回路 22 キャッシュメモリ 30 取り替えエンジン 50 メモリアクセス回路 52 決定回路

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】それぞれ命令のシーケンスを含む複数の処
    理を実行可能であるコンピュータのプロセッサと主メモ
    リとの間に配置されたキャッシュメモリを作動する方法
    において、 前記キャッシュメモリを、それぞれキャッシュメモリに
    項目を保持するためのアドレス指定可能な複数の記憶位
    置を有する複数のキャッシュ区分に分割するステップ
    と、 前記キャッシュ区分のどれが当該処理の実行で使用する
    ための項目を保持するために使用されるべきであるかを
    識別する区分表示子を各処理に割り当てるステップと、 前記プロセッサが現在の処理の実行中に主メモリからの
    項目を要求し、かつこの項目が前記キャッシュメモリに
    保持されていない場合に、その項目を主メモリからフェ
    ッチし、かつ識別されたキャッシュ区分のアドレス指定
    可能な複数の記憶位置の中の1つにロードするステップ
    とを含むことを特徴とする、キャッシュメモリを作動す
    る方法。
  2. 【請求項2】現在実行されている現在処理のための前記
    区分表示子をメモリに保持するステップを有することを
    特徴とする請求項1に記載の方法。
  3. 【請求項3】新しい処理が前記プロセッサによって実行
    されるべきある場合、この新しい処理に割り当てられた
    新しい区分表示子が前記メモリにロードされることを特
    徴とする請求項2に記載の方法。
  4. 【請求項4】前記現在処理のための区分表示子を保持す
    るメモリが前記処理についての状態情報をも保持する処
    理状態メモリであることを特徴とする請求項2または3
    に記載の方法。
  5. 【請求項5】前記区分表示子が前記処理のためのグルー
    プ識別子に含まれ、前記グループ識別子が前記処理のた
    めのアドレス空間を識別することを特徴とする請求項
    1、2または3に記載の方法。
  6. 【請求項6】前記プロセッサが仮想ページ番号およびラ
    インインページ番号を含むアドレスを発し、かつアドレ
    ス変換バッファが前記仮想ページ番号を、主メモリをア
    クセスする実ページ番号に変換するために備えられ、前
    記アドレス変換バッファが、前記グループ識別子をも受
    け取り、それから前記現在処理のための区分表示子を得
    ることを特徴とする請求項5に記載の方法。
  7. 【請求項7】各キャッシュ区分のアドレス指定可能な記
    憶位置数が変更可能であることを特徴とする請求項1な
    いし6のいずれかに記載の方法。
  8. 【請求項8】それぞれが一連の命令を含み、現在実行さ
    れている現在処理のための区分表示子を保持する処理状
    態メモリを含んでいる複数の処理を実行するためのプロ
    セッサと、 主メモリと、 それぞれ処理の実行中のプロセッサによって使用するた
    めに前記主メモリからフェッチされる項目を保持するア
    ドレス指定可能な複数の記憶位置を含む一連のキャッシ
    ュ区分を有するキャッシュメモリと、 前記主メモリから項目をフェッチし、この項目を前記ア
    ドレス指定可能な記憶位置のキャッシュメモリにロード
    するように構成され、現在処理と関連して処理状態メモ
    リに保持された区分表示子に応じ前記項目をロードする
    前記アドレス指定可能な記憶位置の中の1つを選択する
    キャッシュ取り替え機構とを備えたことを特徴とするコ
    ンピュータシステム。
  9. 【請求項9】前記区分表示子が前記処理のためのアドレ
    ス空間を識別する各処理のためのグループ識別子に含ま
    れていることを特徴とする請求項8に記載のコンピュー
    タシステム。
  10. 【請求項10】前記プロセッサが、仮想ページ番号およ
    びラインインページ番号を含むアドレスを発し、かつ前
    記システムが前記仮想ページ番号を、主メモリをアクセ
    スする実ページ番号に変換するアドレス変換バッファを
    備え、前記アドレス変換バッファが、前記グループ識別
    子をも受け取り、それから前記現処理のための区分表示
    子を得るように作動できることを特徴とする請求項9に
    記載のコンピュータシステム。
JP10019476A 1997-01-30 1998-01-30 キャッシュメモリを作動する方法およびコンピュータシステム Pending JPH10232834A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GBGB9701960.8A GB9701960D0 (en) 1997-01-30 1997-01-30 A cache system
GBGB9725437.9A GB9725437D0 (en) 1997-12-01 1997-12-01 A Cache system for concurrent proceses
GB9725437.9 1997-12-01
GB9701960.8 1997-12-01

Publications (1)

Publication Number Publication Date
JPH10232834A true JPH10232834A (ja) 1998-09-02

Family

ID=26310901

Family Applications (2)

Application Number Title Priority Date Filing Date
JP10019729A Pending JPH10232839A (ja) 1997-01-30 1998-01-30 キャッシュシステムおよびキャッシュメモリの作動方法
JP10019476A Pending JPH10232834A (ja) 1997-01-30 1998-01-30 キャッシュメモリを作動する方法およびコンピュータシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP10019729A Pending JPH10232839A (ja) 1997-01-30 1998-01-30 キャッシュシステムおよびキャッシュメモリの作動方法

Country Status (4)

Country Link
US (3) US6453385B1 (ja)
EP (2) EP0856798B1 (ja)
JP (2) JPH10232839A (ja)
DE (2) DE69826539D1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP2004178571A (ja) * 2002-11-11 2004-06-24 Matsushita Electric Ind Co Ltd キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP2006520044A (ja) * 2003-03-06 2006-08-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データフローアプリケーションを処理するために最適化されるキャッシュを備えるデータ処理システム
US7493448B2 (en) 2002-06-24 2009-02-17 Nec Corporation Prevention of conflicting cache hits without an attendant increase in hardware
JP2009098933A (ja) * 2007-10-17 2009-05-07 Nec Corp 登録先ウェイの固定方法、プロセッサ、及び情報処理装置
JP2009518754A (ja) * 2005-12-22 2009-05-07 インテル コーポレイション マルチスレッド・プロセッサにおける性能の優先順位付け
JP2010170272A (ja) * 2009-01-21 2010-08-05 Toyota Motor Corp 制御装置
JP2015519654A (ja) * 2012-05-08 2015-07-09 クアルコム,インコーポレイテッド マルチスレッドプロセッサ内の区分された共有キャッシュにおけるスレッド単位のキャッシュライン割当て機構

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0856798B1 (en) * 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
GB9704542D0 (en) * 1997-03-05 1997-04-23 Sgs Thomson Microelectronics A cache coherency mechanism
JPH10340197A (ja) * 1997-06-09 1998-12-22 Nec Corp キャッシング制御方法及びマイクロコンピュータ
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6349363B2 (en) 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
GB9901933D0 (en) * 1999-01-28 1999-03-17 Univ Bristol Cache memory
US6453321B1 (en) * 1999-02-11 2002-09-17 Ibm Corporation Structured cache for persistent objects
US6493800B1 (en) * 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6625693B2 (en) * 1999-05-04 2003-09-23 Intel Corporation Fast exception processing
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
JP4497689B2 (ja) * 1999-10-01 2010-07-07 キヤノン株式会社 印刷装置、交換ユニット、及び、メモリユニット
US7689462B1 (en) 1999-10-28 2010-03-30 Ebay Inc. Computer system and method for providing an on-line mall
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
WO2001038970A2 (en) * 1999-11-22 2001-05-31 Ericsson Inc Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6662297B1 (en) * 1999-12-30 2003-12-09 Intel Corporation Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6587937B1 (en) * 2000-03-31 2003-07-01 Rockwell Collins, Inc. Multiple virtual machine system with efficient cache memory design
WO2002008911A1 (fr) * 2000-07-24 2002-01-31 Hitachi,Ltd Systeme de traitement de donnees
JP2002189603A (ja) * 2000-12-19 2002-07-05 Fujitsu Ltd 計算機とその制御方法
US6961773B2 (en) * 2001-01-19 2005-11-01 Esoft, Inc. System and method for managing application service providers
US6604175B2 (en) * 2001-03-01 2003-08-05 Sony Corporation Data cache and method of storing data by assigning each independently cached area in the cache to store data associated with one item type
US7555561B2 (en) * 2001-03-19 2009-06-30 The Aerospace Corporation Cooperative adaptive web caching routing and forwarding web content data broadcasting method
US20030041213A1 (en) * 2001-08-24 2003-02-27 Yakov Tokar Method and apparatus for using a cache memory
JP2003069639A (ja) * 2001-08-27 2003-03-07 Nec Corp xDSL収容装置、マルチキャスト配信システム及びデータ配信方法
AU2002327599A1 (en) 2001-08-29 2003-03-18 Analog Devices, Inc. Generic serial port architecture and system
US6848026B2 (en) * 2001-11-09 2005-01-25 International Business Machines Corporation Caching memory contents into cache partitions based on memory locations
US6857046B1 (en) * 2002-03-28 2005-02-15 Cisco Technology, Inc. Caching for context switching applications
US6857937B2 (en) * 2002-05-30 2005-02-22 Komag, Inc. Lapping a head while powered up to eliminate expansion of the head due to heating
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7088950B2 (en) * 2002-11-26 2006-08-08 Nokia Corporation Method and apparatus for controlling integrated receiver operation in a communications terminal
US7103748B2 (en) 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
US7353337B2 (en) 2003-02-24 2008-04-01 Nxp B.V. Reducing cache effects of certain code pieces
CA2435148A1 (en) 2003-07-15 2005-01-15 Robert J. Blainey System and method for lock caching for compound atomic operations on shared memory
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US9124653B2 (en) * 2004-09-03 2015-09-01 Symantec Corporation Method and apparatus for allowing sharing of streamable applications
US7472224B1 (en) 2004-10-01 2008-12-30 Advanced Micro Devices, Inc. Reconfigurable processing node including first and second processor cores
US7257678B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Dynamic reconfiguration of cache memory
WO2006082554A2 (en) * 2005-02-02 2006-08-10 Koninklijke Philips Electronics N.V. Data processing system comprising a cache unit
US8489846B1 (en) 2005-06-24 2013-07-16 Rockwell Collins, Inc. Partition processing system and method for reducing computing problems
US20070136177A1 (en) * 2005-12-09 2007-06-14 Ebay Inc. Registry for on-line auction system
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
EP1999596A2 (en) * 2006-03-02 2008-12-10 Nxp B.V. Method and apparatus for dynamic resizing of cache partitions based on the execution phase of tasks
US8898652B2 (en) * 2006-03-23 2014-11-25 Microsoft Corporation Cache metadata for accelerating software transactional memory
US20080010413A1 (en) * 2006-07-07 2008-01-10 Krishnan Kunjunny Kailas Method and apparatus for application-specific dynamic cache placement
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US7565492B2 (en) 2006-08-31 2009-07-21 Intel Corporation Method and apparatus for preventing software side channel attacks
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US8230154B2 (en) * 2007-01-19 2012-07-24 Spansion Llc Fully associative banking for memory
US7681020B2 (en) * 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US8095736B2 (en) * 2008-02-25 2012-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US8250305B2 (en) * 2008-03-19 2012-08-21 International Business Machines Corporation Method, system and computer program product for data buffers partitioned from a cache array
US8108650B2 (en) * 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources
US8250332B2 (en) * 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
US8543769B2 (en) * 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US8745618B2 (en) * 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
WO2011094022A1 (en) * 2010-01-29 2011-08-04 Nestec S.A. Extruded animal litters
US9104583B2 (en) 2010-06-24 2015-08-11 International Business Machines Corporation On demand allocation of cache buffer slots
FR2962567B1 (fr) * 2010-07-12 2013-04-26 Bull Sas Procede d'optimisation d'acces memoire, lors de la reprise d'execution d'une application, dans un microprocesseur comprenant plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
US9424188B2 (en) * 2011-11-23 2016-08-23 Smart Modular Technologies, Inc. Non-volatile memory packaging system with caching and method of operation thereof
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9336147B2 (en) 2012-06-12 2016-05-10 Microsoft Technology Licensing, Llc Cache and memory allocation for virtual machines
US9432806B2 (en) 2012-12-04 2016-08-30 Ebay Inc. Dynamic geofence based on members within
US9098417B2 (en) * 2012-12-13 2015-08-04 Advanced Micro Devices, Inc. Partitioning caches for sub-entities in computing devices
JP6088951B2 (ja) 2013-09-20 2017-03-01 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
JP5992592B1 (ja) 2015-09-16 2016-09-14 株式会社東芝 キャッシュメモリシステム
US20170083441A1 (en) * 2015-09-23 2017-03-23 Qualcomm Incorporated Region-based cache management
US10197999B2 (en) 2015-10-16 2019-02-05 Lemmings, Llc Robotic golf caddy
US9852084B1 (en) 2016-02-05 2017-12-26 Apple Inc. Access permissions modification
US20190034337A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Multi-level system memory configurations to operate higher priority users out of a faster memory level
CN111984197B (zh) * 2020-08-24 2023-12-15 许昌学院 计算机缓存分配方法
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58147879A (ja) * 1982-02-26 1983-09-02 Toshiba Corp キヤツシユメモリ制御方式
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5487162A (en) * 1992-02-25 1996-01-23 Matsushita Electric Industrial Co., Ltd. Cache lock information feeding system using an address translator
WO1995012165A1 (en) * 1993-10-22 1995-05-04 Gestalt Technologies, Incorporated Distributed management in a partitioned memory system
US5537635A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
US5796944A (en) * 1995-07-12 1998-08-18 3Com Corporation Apparatus and method for processing data frames in an internetworking device
JP3348367B2 (ja) * 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US5809522A (en) * 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
EP0856798B1 (en) * 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
US7493448B2 (en) 2002-06-24 2009-02-17 Nec Corporation Prevention of conflicting cache hits without an attendant increase in hardware
JP2004178571A (ja) * 2002-11-11 2004-06-24 Matsushita Electric Ind Co Ltd キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム
JP4664586B2 (ja) * 2002-11-11 2011-04-06 パナソニック株式会社 キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム
JP2006520044A (ja) * 2003-03-06 2006-08-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データフローアプリケーションを処理するために最適化されるキャッシュを備えるデータ処理システム
US7502887B2 (en) 2003-11-12 2009-03-10 Panasonic Corporation N-way set associative cache memory and control method thereof
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP2009518754A (ja) * 2005-12-22 2009-05-07 インテル コーポレイション マルチスレッド・プロセッサにおける性能の優先順位付け
JP2009098933A (ja) * 2007-10-17 2009-05-07 Nec Corp 登録先ウェイの固定方法、プロセッサ、及び情報処理装置
US8423719B2 (en) 2007-10-17 2013-04-16 Nec Corporation Apparatus, processor and method of controlling cache memory
JP2010170272A (ja) * 2009-01-21 2010-08-05 Toyota Motor Corp 制御装置
JP2015519654A (ja) * 2012-05-08 2015-07-09 クアルコム,インコーポレイテッド マルチスレッドプロセッサ内の区分された共有キャッシュにおけるスレッド単位のキャッシュライン割当て機構
JP2017152009A (ja) * 2012-05-08 2017-08-31 クアルコム,インコーポレイテッド マルチスレッドプロセッサ内の区分された共有キャッシュにおけるスレッド単位のキャッシュライン割当て機構
US9824013B2 (en) 2012-05-08 2017-11-21 Qualcomm Incorporated Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors

Also Published As

Publication number Publication date
EP0856797B1 (en) 2003-05-21
DE69814703D1 (de) 2003-06-26
US6629208B2 (en) 2003-09-30
US20020002657A1 (en) 2002-01-03
US20020083269A1 (en) 2002-06-27
DE69826539D1 (de) 2004-11-04
US6453385B1 (en) 2002-09-17
EP0856798B1 (en) 2004-09-29
EP0856797A1 (en) 1998-08-05
US6295580B1 (en) 2001-09-25
EP0856798A1 (en) 1998-08-05
JPH10232839A (ja) 1998-09-02

Similar Documents

Publication Publication Date Title
JPH10232834A (ja) キャッシュメモリを作動する方法およびコンピュータシステム
JP3370683B2 (ja) キャッシュシステム
US6038647A (en) Cache memory device and method for providing concurrent independent multiple accesses to different subsets within the device
US8806177B2 (en) Prefetch engine based translation prefetching
US5586283A (en) Method and apparatus for the reduction of tablewalk latencies in a translation look aside buffer
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US6625714B1 (en) Parallel distributed function translation lookaside buffer
EP0097790A2 (en) Apparatus for controlling storage access in a multilevel storage system
JP2011181094A (ja) アーキテクチャイベントの間のプロセッサリソースの保持
JP2968509B2 (ja) コンピュータシステム及びキャッシュの内容のコヒーレンシー状態を変更する方法
US6298411B1 (en) Method and apparatus to share instruction images in a virtual cache
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
JP2005174341A (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
US5603008A (en) Computer system having cache memories with independently validated keys in the TLB
US5428759A (en) Associative memory system having segment and page descriptor content-addressable memories
US6766435B1 (en) Processor with a general register set that includes address translation registers
EP0611462B1 (en) Memory unit including a multiple write cache
KR0173854B1 (ko) 캐시메모리제어 방법 및 장치
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer
CN118093450A (zh) 通过优化tlb提高mcm gpu地址翻译效率的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070907