JPH10232839A - キャッシュシステムおよびキャッシュメモリの作動方法 - Google Patents
キャッシュシステムおよびキャッシュメモリの作動方法Info
- Publication number
- JPH10232839A JPH10232839A JP10019729A JP1972998A JPH10232839A JP H10232839 A JPH10232839 A JP H10232839A JP 10019729 A JP10019729 A JP 10019729A JP 1972998 A JP1972998 A JP 1972998A JP H10232839 A JPH10232839 A JP H10232839A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- address
- item
- main memory
- memory
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing 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)【要約】
【課題】 予測不可能な処理を取り除き、あるいは減少
させるキャッシュシステムを提供し、より大きな予測可
能性のあるキャッシング動作を提供すること。 【解決手段】 コンピュータのプロセッサ2と主メモリ
6との間に接続されるキャッシュシステムは一連のキャ
ッシュ区分を有するキャッシュメモリ22を含んでい
る。各キャッシュ区分は、プロセッサ2による使用のた
めに主メモリ6からフェッチされる項目を保持するアド
レス指定可能な複数の記憶位置を有する。キャッシュシ
ステムは、主メモリ6から項目をフェッチし、主メモリ
6の項目のアドレスによって決まるキャッシュ区分のア
ドレス指定可能な記憶位置の中の一つのキャッシュメモ
リに項目をロードするように構成されたキャッシュ取り
替えエンジン30も含んでいる。これは、項目がロード
されべき1つあるいはそれ以上のキャッシュ区分を識別
する多ビット区分表示子をキャッシュされる項目のアド
レスと関連して保持するキャッシュ区分アクセステーブ
ルによって得られる。
させるキャッシュシステムを提供し、より大きな予測可
能性のあるキャッシング動作を提供すること。 【解決手段】 コンピュータのプロセッサ2と主メモリ
6との間に接続されるキャッシュシステムは一連のキャ
ッシュ区分を有するキャッシュメモリ22を含んでい
る。各キャッシュ区分は、プロセッサ2による使用のた
めに主メモリ6からフェッチされる項目を保持するアド
レス指定可能な複数の記憶位置を有する。キャッシュシ
ステムは、主メモリ6から項目をフェッチし、主メモリ
6の項目のアドレスによって決まるキャッシュ区分のア
ドレス指定可能な記憶位置の中の一つのキャッシュメモ
リに項目をロードするように構成されたキャッシュ取り
替えエンジン30も含んでいる。これは、項目がロード
されべき1つあるいはそれ以上のキャッシュ区分を識別
する多ビット区分表示子をキャッシュされる項目のアド
レスと関連して保持するキャッシュ区分アクセステーブ
ルによって得られる。
Description
【0001】
【発明の属する技術分野】本発明は、プロセッサとコン
ピュータの主メモリとの間で作動するキャッシュシステ
ムに関するものである。
ピュータの主メモリとの間で作動するキャッシュシステ
ムに関するものである。
【0002】
【従来の技術】当該技術分野で周知のように、キャッシ
ュメモリは、ある種のデータおよびコードへのアクセス
待ち時間を減少させ、このデータおよびコードのために
使用されるメモリバンド幅を減少させるようにコンピュ
ータシステムで使用されている。キャッシュメモリはメ
モリアクセスを遅らせたり、統合させたり、再配列した
りすることができる。
ュメモリは、ある種のデータおよびコードへのアクセス
待ち時間を減少させ、このデータおよびコードのために
使用されるメモリバンド幅を減少させるようにコンピュ
ータシステムで使用されている。キャッシュメモリはメ
モリアクセスを遅らせたり、統合させたり、再配列した
りすることができる。
【0003】キャッシュメモリは、コンピュータのプロ
セッサと主メモリとの間で作動する。プロセッサで実行
するプロセスによって要求されるデータや命令は、この
プロセスを実行している間、キャッシュに保持すること
ができる。キャッシへのアクセスは、通常、主メモリへ
のアクセスよりも非常に高速である。プロセッサがキャ
ッシュメモリに必要なデータ項目あるいは命令を置かな
ければ、プロセッサは、それを引き出すために主メモリ
を直接アクセスし、要求されたデータ項目あるいは命令
はキャッシュにロードされる。キャッシュメモリを使用
し、取り替えをするためのいろいろな公知のシステムが
ある。
セッサと主メモリとの間で作動する。プロセッサで実行
するプロセスによって要求されるデータや命令は、この
プロセスを実行している間、キャッシュに保持すること
ができる。キャッシへのアクセスは、通常、主メモリへ
のアクセスよりも非常に高速である。プロセッサがキャ
ッシュメモリに必要なデータ項目あるいは命令を置かな
ければ、プロセッサは、それを引き出すために主メモリ
を直接アクセスし、要求されたデータ項目あるいは命令
はキャッシュにロードされる。キャッシュメモリを使用
し、取り替えをするためのいろいろな公知のシステムが
ある。
【0004】実時間システムのキャッシュを当てにする
ために、キャッシュの動作は予測できる必要がある。す
なわち、キャッシュにあることが予想される特定のデー
タ項目あるいは命令が実際そこにあることは適度の確実
度がある必要がある。大部分の既存の取り替え機構は、
要求されたデータ項目あるいは命令をキャッシュに入れ
ようと常に試みている。これを行うために、この機構は
キャッシュから他のデータ項目あるいは命令を削除しな
ければならない。これは、後で使用するためにそこにあ
ることが予想される削除項目を生じ得る。これは、特
に、多重タスクプロセッサ、あるいは割り込み処理ある
いは他の予測不可能な処理を実行しなければならないプ
ロセッサのための場合である。
ために、キャッシュの動作は予測できる必要がある。す
なわち、キャッシュにあることが予想される特定のデー
タ項目あるいは命令が実際そこにあることは適度の確実
度がある必要がある。大部分の既存の取り替え機構は、
要求されたデータ項目あるいは命令をキャッシュに入れ
ようと常に試みている。これを行うために、この機構は
キャッシュから他のデータ項目あるいは命令を削除しな
ければならない。これは、後で使用するためにそこにあ
ることが予想される削除項目を生じ得る。これは、特
に、多重タスクプロセッサ、あるいは割り込み処理ある
いは他の予測不可能な処理を実行しなければならないプ
ロセッサのための場合である。
【0005】
【発明が解決しようとする課題】本発明の目的は、この
不都合を取り除き、あるいは減少させるキャッシュシス
テムを提供し、より大きな予測可能性のあるキャッシン
グ動作を提供することにある。
不都合を取り除き、あるいは減少させるキャッシュシス
テムを提供し、より大きな予測可能性のあるキャッシン
グ動作を提供することにある。
【0006】
【課題を解決するための手段】本発明の1つの面によれ
ば、コンピュータのプロセッサと主メモリとの間で作動
するキャッシュシステムにおいて、それぞれプロセッサ
によって使用するために主メモリからフェッチされる項
目を保持するアドレス指定可能な複数の記憶位置を有す
る一連のキャッシュ区分を有するキャッシュメモリと、
主メモリから項目をフェッチし、アドレス指定可能な記
憶位置のキャッシュメモリにロードするように構成され
たキャッシュ取り替え機構と、どのキャッシュ区分に項
目をロードできるかを識別するそれぞれの多ビット区分
表示子をキャッシュされるように項目のアドレスと関連
して保持するキャッシュ区分アクセステーブルとを備
え、キャッシュ取り替え機構が、主メモリの項目のアド
レスに応じて1つあるいはそれ以上のキャッシュ区分を
主メモリからフェッチされる各項目に割り当てるように
作動可能であることを特徴とするものである。
ば、コンピュータのプロセッサと主メモリとの間で作動
するキャッシュシステムにおいて、それぞれプロセッサ
によって使用するために主メモリからフェッチされる項
目を保持するアドレス指定可能な複数の記憶位置を有す
る一連のキャッシュ区分を有するキャッシュメモリと、
主メモリから項目をフェッチし、アドレス指定可能な記
憶位置のキャッシュメモリにロードするように構成され
たキャッシュ取り替え機構と、どのキャッシュ区分に項
目をロードできるかを識別するそれぞれの多ビット区分
表示子をキャッシュされるように項目のアドレスと関連
して保持するキャッシュ区分アクセステーブルとを備
え、キャッシュ取り替え機構が、主メモリの項目のアド
レスに応じて1つあるいはそれ以上のキャッシュ区分を
主メモリからフェッチされる各項目に割り当てるように
作動可能であることを特徴とするものである。
【0007】したがって、項目が2つ以上のキャッシュ
の区分にアクセスすることは実際可能であるか、あるい
はさらに言えば、項目がキャッシュに全然アクセスする
ことをできないようにすることは可能である。前記の構
成において、主メモリの各アドレスはページ番号及び、
ラインインページ番号から成り、ページ番号は各々の区
分表示子に関してルックアップテーブルに保持される。
の区分にアクセスすることは実際可能であるか、あるい
はさらに言えば、項目がキャッシュに全然アクセスする
ことをできないようにすることは可能である。前記の構
成において、主メモリの各アドレスはページ番号及び、
ラインインページ番号から成り、ページ番号は各々の区
分表示子に関してルックアップテーブルに保持される。
【0008】仮想アドレス指定システムにおいて、プロ
セッサは、仮想ページ番号およびラインインページ番号
を含むアドレスを発する。この場合、システムは、仮想
ページ番号を主メモリをアクセスする実ページ番号に変
換するアドレス変換バッファを備え、このアドレス変換
バッファは、アドレス項目がロードされるキャッシュ区
分を識別するための実ページ番号と関連するそれぞれの
区分表示子も保持する。
セッサは、仮想ページ番号およびラインインページ番号
を含むアドレスを発する。この場合、システムは、仮想
ページ番号を主メモリをアクセスする実ページ番号に変
換するアドレス変換バッファを備え、このアドレス変換
バッファは、アドレス項目がロードされるキャッシュ区
分を識別するための実ページ番号と関連するそれぞれの
区分表示子も保持する。
【0009】アドレス指定される項目のラインインペー
ジ番号は、項目が置かれるべきキャッシュ区分内のアド
レス記憶位置を識別するために使用することができる。
すなわち、各キャッシュ区分は直接マップされる。ライ
ンインページ番号として項目アドレスのエンドビットで
あるが、適当なビットのセットに他ならない全てを使用
する必要はないことは明らかである。これらは、通常、
アドレスの最下位の終わりに近い。
ジ番号は、項目が置かれるべきキャッシュ区分内のアド
レス記憶位置を識別するために使用することができる。
すなわち、各キャッシュ区分は直接マップされる。ライ
ンインページ番号として項目アドレスのエンドビットで
あるが、適当なビットのセットに他ならない全てを使用
する必要はないことは明らかである。これらは、通常、
アドレスの最下位の終わりに近い。
【0010】1つあるいはそれ以上のキャッシュ区分は
主メモリのページに割り当てることができる。
主メモリのページに割り当てることができる。
【0011】このシステムは、キャッシュメモリからの
項目を、前記項目の主メモリのアドレスに従って、かつ
項目がキャッシュメモリに保持されるキャッシュ区分に
関係なくアクセスするキャッシュアクセス回路を含み得
る。すなわち、区分表示子は、取り替えで使用されるだ
けで、ルックアップで使用されない。このように、キャ
ッシュされる項目は、たとえこのキャッシング後にこの
区分が異なるアドレスのセットに今すぐ割り当てられる
としても、その区分から引き出すことができる。
項目を、前記項目の主メモリのアドレスに従って、かつ
項目がキャッシュメモリに保持されるキャッシュ区分に
関係なくアクセスするキャッシュアクセス回路を含み得
る。すなわち、区分表示子は、取り替えで使用されるだ
けで、ルックアップで使用されない。このように、キャ
ッシュされる項目は、たとえこのキャッシング後にこの
区分が異なるアドレスのセットに今すぐ割り当てられる
としても、その区分から引き出すことができる。
【0012】本発明の他の面によれば、コンピュータの
プロセッサと主メモリとの間に配置されたキャッシュメ
モリの作動方法において、プロセッサが、項目のための
主メモリのアドレスを使用して主メモリから項目を要求
し、かつこの項目がキャッシュメモリに保持されないと
き、項目が主メモリからフェッチされ、キャッシュメモ
リのアドレス指定可能な複数の記憶位置の中の1つにロ
ードされ、アドレス指定可能な記憶位置が一連のキャッ
シュ区分として配置され、かつ1つあるいはそれ以上の
キャッシュ区分が主メモリの項目のアドレスに応じて項
目に割り当てられるように各アドレスがどのキャッシュ
区分に項目をロードできるかを識別する多ビット区分表
示子と関連付けられていることを特徴とするものであ
る。
プロセッサと主メモリとの間に配置されたキャッシュメ
モリの作動方法において、プロセッサが、項目のための
主メモリのアドレスを使用して主メモリから項目を要求
し、かつこの項目がキャッシュメモリに保持されないと
き、項目が主メモリからフェッチされ、キャッシュメモ
リのアドレス指定可能な複数の記憶位置の中の1つにロ
ードされ、アドレス指定可能な記憶位置が一連のキャッ
シュ区分として配置され、かつ1つあるいはそれ以上の
キャッシュ区分が主メモリの項目のアドレスに応じて項
目に割り当てられるように各アドレスがどのキャッシュ
区分に項目をロードできるかを識別する多ビット区分表
示子と関連付けられていることを特徴とするものであ
る。
【0013】主メモリは複数のプロセスを保持でき、各
プロセスは、共通のページ番号内で主メモリのアドレス
に保持された1つあるいはそれ以上の命令シーケンスを
含んでいる。キャッシュ区分は、各キャッシュ区分を主
メモリの特定のプロセスのページ番号に関連づけること
によって割り当てることができる。
プロセスは、共通のページ番号内で主メモリのアドレス
に保持された1つあるいはそれ以上の命令シーケンスを
含んでいる。キャッシュ区分は、各キャッシュ区分を主
メモリの特定のプロセスのページ番号に関連づけること
によって割り当てることができる。
【0014】各キャッシュ区分におけるアドレス指定可
能な記憶位置の数は変更可能にすることができる。さら
に、ページ番号に対するキャッシュ番号の関連性は、変
更可能であり得ると共にこれらのページ番号を使用する
プロセスはプロセッサによって実行される。
能な記憶位置の数は変更可能にすることができる。さら
に、ページ番号に対するキャッシュ番号の関連性は、変
更可能であり得ると共にこれらのページ番号を使用する
プロセスはプロセッサによって実行される。
【0015】
【発明の実施の形態】以下に記載される実施の形態は、
他の区分に入れられる他のデータのページからのキャッ
シュラインから読み出すか、あるいはこのキャッシュラ
インに書き込むことによって予想できない立ち退きから
キャッシュの内容を保護するキャッシュシステムを示し
ている。この実施の形態は、キャッシュの内容を予測で
きるシステムをも提供する。
他の区分に入れられる他のデータのページからのキャッ
シュラインから読み出すか、あるいはこのキャッシュラ
インに書き込むことによって予想できない立ち退きから
キャッシュの内容を保護するキャッシュシステムを示し
ている。この実施の形態は、キャッシュの内容を予測で
きるシステムをも提供する。
【0016】図1は、キャッシュシステムを組み込むコ
ンピュータのブロック図である。コンピュータは、主メ
モリ6から項目をアクセスするためのアドレスバス4お
よび項目をCPUに戻すためのデータバス8に接続され
ているCPU2を備えている。データバス8はここでは
データバスと呼ばれるけれども、この項目がCPUによ
る実行のための実際のデータあるいは命令を構成しよう
が構成しまいが、これは主メモリ6からの項目の戻りの
ためであることが理解される。ここに記載されるシステ
ムは命令及びデータキャッシュにおける使用に好適なも
のである。周知のように、別個のデータキャッシュおよ
び命令キャッシュがあってもよいし、あるいはデータキ
ャッシュおよび命令キャッシュは結合することができ
る。ここに記載されたコンピュータでは、アドレス指定
方式はいわゆる仮想アドレス指定方式である。アドレス
は、ページアドレスのライン4aおよび仮想ページアド
レス4bに分割される。仮想ページアドレス4bはアド
レス変換バッファ(TLB)10に供給される。ページ
アドレスのライン4aはルックアップ回路12に供給さ
れる。アドレス変換バッファ10は、仮想ページアドレ
ス4bに基づいて変換された実ページアドレス14をル
ックアップ回路12に供給する。ルックアップ回路12
は、アドレスバスおよびデータバス16、18を介して
キャッシュアクセス回路20に接続されている。さら
に、データバス18は、主メモリ6からのデータ項目あ
るいは命令のためのものであってもよい。キャッシュア
クセス回路20は、アドレスバス24、データバス26
およびキャッシュメモリ22のための置換情報を転送す
る制御バス28を介してキャッシュメモリ22に接続さ
れている。取り替えエンジン30は、キャッシュアクセ
ス回路20との間で置換情報、データ項目(あるいは命
令)およびアドレスを転送する取り替えバス32を介し
て接続されている。取り替えエンジン30はそれ自体主
メモリ6に接続されている。
ンピュータのブロック図である。コンピュータは、主メ
モリ6から項目をアクセスするためのアドレスバス4お
よび項目をCPUに戻すためのデータバス8に接続され
ているCPU2を備えている。データバス8はここでは
データバスと呼ばれるけれども、この項目がCPUによ
る実行のための実際のデータあるいは命令を構成しよう
が構成しまいが、これは主メモリ6からの項目の戻りの
ためであることが理解される。ここに記載されるシステ
ムは命令及びデータキャッシュにおける使用に好適なも
のである。周知のように、別個のデータキャッシュおよ
び命令キャッシュがあってもよいし、あるいはデータキ
ャッシュおよび命令キャッシュは結合することができ
る。ここに記載されたコンピュータでは、アドレス指定
方式はいわゆる仮想アドレス指定方式である。アドレス
は、ページアドレスのライン4aおよび仮想ページアド
レス4bに分割される。仮想ページアドレス4bはアド
レス変換バッファ(TLB)10に供給される。ページ
アドレスのライン4aはルックアップ回路12に供給さ
れる。アドレス変換バッファ10は、仮想ページアドレ
ス4bに基づいて変換された実ページアドレス14をル
ックアップ回路12に供給する。ルックアップ回路12
は、アドレスバスおよびデータバス16、18を介して
キャッシュアクセス回路20に接続されている。さら
に、データバス18は、主メモリ6からのデータ項目あ
るいは命令のためのものであってもよい。キャッシュア
クセス回路20は、アドレスバス24、データバス26
およびキャッシュメモリ22のための置換情報を転送す
る制御バス28を介してキャッシュメモリ22に接続さ
れている。取り替えエンジン30は、キャッシュアクセ
ス回路20との間で置換情報、データ項目(あるいは命
令)およびアドレスを転送する取り替えバス32を介し
て接続されている。取り替えエンジン30はそれ自体主
メモリ6に接続されている。
【0017】取り替えエンジン30は、アドレス変換バ
ッファ10から、主メモリ6の項目の実ページアドレス
およびラインインページアドレスを含む全実アドレス3
4を受け取る。取り替えエンジン30は、4ビットバス
36上のアドレス変換バッファ10から区分表示子をも
受け取る。区分表示子の機能は以下に記載されている通
りである。
ッファ10から、主メモリ6の項目の実ページアドレス
およびラインインページアドレスを含む全実アドレス3
4を受け取る。取り替えエンジン30は、4ビットバス
36上のアドレス変換バッファ10から区分表示子をも
受け取る。区分表示子の機能は以下に記載されている通
りである。
【0018】最後に、取り替えエンジン30は、以下に
より明確に記載されているようにルックアップ回路12
で発生される、ライン38上のミス信号を受け取る。
より明確に記載されているようにルックアップ回路12
で発生される、ライン38上のミス信号を受け取る。
【0019】ここに記載されているキャッシュメモリ2
2は、直接マッピングキャッシュである。すなわち、こ
のキャッシュメモリ22はアドレス指定可能な複数の記
憶位置を有し、各位置は、キャッシュの1行を構成す
る。各行は、主メモリからの項目およびこの項目の主メ
モリのアドレスを含んでいる。各行は、この行に記憶さ
れたデータ項目の主メモリのアドレスの最下位ビットを
示す多数のビットによって構成される行アドレスによっ
てアドレス指定可能である。例えば、8行を有するキャ
ッシュメモリの場合、各行アドレスは、これらの行を独
自に識別するために3ビットの長さである。例えば、キ
ャッシュの第2行は行アドレス001を有するので、ビ
ット001で終わるアドレスを有する主メモリからの任
意のデータ項目を主メモリに保持することができる。明
らかに、主メモリでは、多数のこのようなアドレスがあ
るので、可能性としてキャッシュメモリのこの行に保持
される多数のデータ項目がある。もちろん、キャッシュ
メモリは、毎回この行に唯一のデータ項目を保持するこ
とができる。
2は、直接マッピングキャッシュである。すなわち、こ
のキャッシュメモリ22はアドレス指定可能な複数の記
憶位置を有し、各位置は、キャッシュの1行を構成す
る。各行は、主メモリからの項目およびこの項目の主メ
モリのアドレスを含んでいる。各行は、この行に記憶さ
れたデータ項目の主メモリのアドレスの最下位ビットを
示す多数のビットによって構成される行アドレスによっ
てアドレス指定可能である。例えば、8行を有するキャ
ッシュメモリの場合、各行アドレスは、これらの行を独
自に識別するために3ビットの長さである。例えば、キ
ャッシュの第2行は行アドレス001を有するので、ビ
ット001で終わるアドレスを有する主メモリからの任
意のデータ項目を主メモリに保持することができる。明
らかに、主メモリでは、多数のこのようなアドレスがあ
るので、可能性としてキャッシュメモリのこの行に保持
される多数のデータ項目がある。もちろん、キャッシュ
メモリは、毎回この行に唯一のデータ項目を保持するこ
とができる。
【0020】次に、図1に示されたコンピュータシステ
ムの動作について説明するが、あたかも区分表示子が存
在しないようである。CPU2は、主メモリのアドレス
を使用して主メモリ6からの項目を要求し、このアドレ
スをアドレスバス4上に伝送する。仮想ページ番号は、
それを所定の仮想/実ページ変換アルゴリズムに従って
実ページ番号14に変換するアドレス変換バッファ10
に供給される。実ページ番号14は、CPU2によって
伝送された最初のアドレスのラインインページ番号4a
とともにルックアップ回路12に供給される。ページア
ドレスのラインは、キャッシュメモリ22をアドレス指
定するためにキャッシュアクセス回路20によって使用
される。ラインインページアドレスは、キャッシュメモ
リ22の行アドレスに等しい、メモリの主アドレスの
(必ずしもエンドビットを含まない)最下位ビットのセ
ットを含んでいる。データ項目(あるいは命令)および
データ項目(あるいは命令)のアドレスである、ページ
アドレスの行によって識別される行アドレスのキャッシ
ュメモリの内容は、ルックアップ回路12に供給され
る。そこで、キャッシュメモリ22から引き出されたア
ドレスの実ページ番号は、アドレス変換バッファ10か
ら供給された実ページ番号と比較される。これらのアド
レスが一致するならば、ルックアップ回路12はヒット
を示し、このヒットによってキャッシュメモリ22のこ
の行に保持されたデータ項目はデータバス8に沿ってC
PU2に戻される。しかしながら、キャッシュメモリ2
2のアドレス指定された行に保持されたアドレスの実ペ
ージ番号がアドレス変換バッファ10から供給された実
ページ番号に一致しないならば、ミス信号が取り替えエ
ンジン30のライン38上に発生される。バス34上の
アドレス変換バッファ10から供給される実アドレスを
使用して、主メモリ6から正しい項目を引き出すことは
取り替えエンジン30のタスクである。主メモリ6から
一度フェッチされたデータ項目は、取り替えバス32を
介してキャッシュアクセス回路20に供給され、主メモ
リ6のアドレスとともにキャッシュメモリ22にロード
される。データ項目そのものはデータバス8に沿ってC
PU2にも戻されるので、CPU2は実行し続けること
ができる。上記に概略されるような直接マッピングキャ
ッシュメモリでは、主メモリ6から呼び出されるデータ
項目およびそのアドレスは、データ項目がチェックする
ために最初にアクセスされた記憶位置にロードされるこ
とは明らかである。すなわち、データ項目は、主メモリ
6のページアドレスのラインの最下位ビットのセットに
一致する行アドレスを有するデータ項目を受け入れるこ
とができる唯一の記憶位置に上書きされる。もちろん、
キャッシュメモリ22に最初に記憶されたデータ項目の
ページ番号およびいまキャッシュメモリ22にロードさ
れるべきデータ項目は異なっている。この“1対1のマ
ッピングはキャッシュの有用性を制限する。
ムの動作について説明するが、あたかも区分表示子が存
在しないようである。CPU2は、主メモリのアドレス
を使用して主メモリ6からの項目を要求し、このアドレ
スをアドレスバス4上に伝送する。仮想ページ番号は、
それを所定の仮想/実ページ変換アルゴリズムに従って
実ページ番号14に変換するアドレス変換バッファ10
に供給される。実ページ番号14は、CPU2によって
伝送された最初のアドレスのラインインページ番号4a
とともにルックアップ回路12に供給される。ページア
ドレスのラインは、キャッシュメモリ22をアドレス指
定するためにキャッシュアクセス回路20によって使用
される。ラインインページアドレスは、キャッシュメモ
リ22の行アドレスに等しい、メモリの主アドレスの
(必ずしもエンドビットを含まない)最下位ビットのセ
ットを含んでいる。データ項目(あるいは命令)および
データ項目(あるいは命令)のアドレスである、ページ
アドレスの行によって識別される行アドレスのキャッシ
ュメモリの内容は、ルックアップ回路12に供給され
る。そこで、キャッシュメモリ22から引き出されたア
ドレスの実ページ番号は、アドレス変換バッファ10か
ら供給された実ページ番号と比較される。これらのアド
レスが一致するならば、ルックアップ回路12はヒット
を示し、このヒットによってキャッシュメモリ22のこ
の行に保持されたデータ項目はデータバス8に沿ってC
PU2に戻される。しかしながら、キャッシュメモリ2
2のアドレス指定された行に保持されたアドレスの実ペ
ージ番号がアドレス変換バッファ10から供給された実
ページ番号に一致しないならば、ミス信号が取り替えエ
ンジン30のライン38上に発生される。バス34上の
アドレス変換バッファ10から供給される実アドレスを
使用して、主メモリ6から正しい項目を引き出すことは
取り替えエンジン30のタスクである。主メモリ6から
一度フェッチされたデータ項目は、取り替えバス32を
介してキャッシュアクセス回路20に供給され、主メモ
リ6のアドレスとともにキャッシュメモリ22にロード
される。データ項目そのものはデータバス8に沿ってC
PU2にも戻されるので、CPU2は実行し続けること
ができる。上記に概略されるような直接マッピングキャ
ッシュメモリでは、主メモリ6から呼び出されるデータ
項目およびそのアドレスは、データ項目がチェックする
ために最初にアクセスされた記憶位置にロードされるこ
とは明らかである。すなわち、データ項目は、主メモリ
6のページアドレスのラインの最下位ビットのセットに
一致する行アドレスを有するデータ項目を受け入れるこ
とができる唯一の記憶位置に上書きされる。もちろん、
キャッシュメモリ22に最初に記憶されたデータ項目の
ページ番号およびいまキャッシュメモリ22にロードさ
れるべきデータ項目は異なっている。この“1対1のマ
ッピングはキャッシュの有用性を制限する。
【0021】より大きな柔軟性をキャッシュシステムに
提供するために、nウェイ・セット・アソシアティブ・
キャッシュメモリが開発されてきた。4ウェイ・セット
・アソシアティブ・キャッシュは図2に示されている。
キャッシュメモリは4つのバンクB1,B2,B3,B
4に分割される。このバンクは、図2の1行に対して概
略的に示されているように、一般に共通行アドレスによ
って行方向にアドレス指定される。しかしながら、この
行は4つのキャッシュエントリ、すなわち各バンクに対
して1つのキャッシュエントリを含んでいる。バンクB
1に対するキャッシュエントリは、バス26a上に出力
され、バンクB2に対するキャッシュエントリは、バス
26b上に出力され、バンクB3およびB4に対してな
どである。したがって、これは、1行アドレス(あるい
はページアドレスの行)に対して4つのキャッシュエン
トリを可能にする。行がアドレス指定される度に、4つ
のキャッシュエントリは出力され、そのアドレスの実ペ
ージ番号は、アドレス変換バッファバッファ10から供
給された実ページ番号と比較され、どのエントリが正し
いエントリであるかを決定する。キャッシュに試みられ
たアクセスの際にキャッシュミスがあるならば、取り替
えエンジン30は、主メモリから要求された項目を引き
出し、例えば、特定の項目がどれくらいの長さキャッシ
ュに保持されているか、あるいはシステムの他のプログ
ラムパラメータに基づいている取り替えアルゴリズムに
従って、バンクの中の1つの正しい行に要求された項目
をロードする。このような置換アルゴリズムは周知であ
り、ここではこれ以上の説明は省略する。
提供するために、nウェイ・セット・アソシアティブ・
キャッシュメモリが開発されてきた。4ウェイ・セット
・アソシアティブ・キャッシュは図2に示されている。
キャッシュメモリは4つのバンクB1,B2,B3,B
4に分割される。このバンクは、図2の1行に対して概
略的に示されているように、一般に共通行アドレスによ
って行方向にアドレス指定される。しかしながら、この
行は4つのキャッシュエントリ、すなわち各バンクに対
して1つのキャッシュエントリを含んでいる。バンクB
1に対するキャッシュエントリは、バス26a上に出力
され、バンクB2に対するキャッシュエントリは、バス
26b上に出力され、バンクB3およびB4に対してな
どである。したがって、これは、1行アドレス(あるい
はページアドレスの行)に対して4つのキャッシュエン
トリを可能にする。行がアドレス指定される度に、4つ
のキャッシュエントリは出力され、そのアドレスの実ペ
ージ番号は、アドレス変換バッファバッファ10から供
給された実ページ番号と比較され、どのエントリが正し
いエントリであるかを決定する。キャッシュに試みられ
たアクセスの際にキャッシュミスがあるならば、取り替
えエンジン30は、主メモリから要求された項目を引き
出し、例えば、特定の項目がどれくらいの長さキャッシ
ュに保持されているか、あるいはシステムの他のプログ
ラムパラメータに基づいている取り替えアルゴリズムに
従って、バンクの中の1つの正しい行に要求された項目
をロードする。このような置換アルゴリズムは周知であ
り、ここではこれ以上の説明は省略する。
【0022】それにもかかわらず、nウェイ・セット・
アソシアティブ・キャッシュ(ここでは、nはバンク数
であり、図2の4に等しい)は、単一の直接マップシス
テムの改良である間、なお汎用性がなく、より重要なこ
とはキャッシュの動作を適切に予測できないことであ
る。
アソシアティブ・キャッシュ(ここでは、nはバンク数
であり、図2の4に等しい)は、単一の直接マップシス
テムの改良である間、なお汎用性がなく、より重要なこ
とはキャッシュの動作を適切に予測できないことであ
る。
【0023】ここに記載されたシステムは、より汎用性
のあるキャッシュ取り替えシステムによってキャッシュ
メモリのコンピュータ使用の最適化を可能にするキャッ
シュ分割機構を提供する。
のあるキャッシュ取り替えシステムによってキャッシュ
メモリのコンピュータ使用の最適化を可能にするキャッ
シュ分割機構を提供する。
【0024】図7は、図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によって管理される。
PU2の概略ブロック図である。CPU2は、メモリバ
ス4を介してメモリをアドレス指定し、データバス8を
介してデータおよび命令を引き出すことができるフェッ
チ回路17に接続されている実行回路15を備えてい
る。一連の汎用レジスタからなるレジスタバンク7は、
プロセスを実行する際に使用するためのデータおよび命
令を保持する実行回路15に接続されている。さらに、
参照番号9、11および13によって示される一連の特
別レジスタが備えられている。任意の数の専用レジスタ
があってもよく、一例として、レジスタ11は、現在実
行されているコードのラインを識別する命令ポインター
を保持する。さらに、レジスタ9は、CPU2によって
実行されているプロセスの状態を規定するスレッド状態
ワードを保持する。実行回路15は、毎回1プロセスあ
るいは命令のシーケンスを実行することができる。しか
しながら、実行回路15は、同様にこのプロセスに割り
込み、第1のプロセスが実行し終える前に別のプロセス
を実行し始める。実行回路15によって現在実行される
プロセスに割り込むことができる多くの理由がある。1
つは、より高い優先順位の割り込み処理が直ちに実行さ
れることである。もう一つは実行されている処理が現在
長い待ち時間でデータを待っているので、第1の処理が
このデータを待っている間、その後の処理を開始するこ
とは実行回路にとってより効率的である。データが受け
取られた場合、第1のプロセスを実行のために再スケジ
ュールすることができる。並行処理の実行は、それ自体
は周知であり、処理ハンドラ19によって管理される。
【0025】各処理は、いわゆる制御の「スレッド」の
下で実行される。スレッドは下記の状態を有する。すな
わち、この処理において、スレッドがどこに進むかを示
す命令ポインタ、この処理が次にどこに分岐するかを示
すジャンプポインタ、直ちにアクセスすることができる
値を含んでいるレジスタバンク7、仮想アドレスから物
理アドレスのマッピング、仮想アドレスによりアクセス
可能なメモリの内容、スレッドおよび任意の他の値によ
ってこのような浮動小数点丸めモード、スレッドがカー
ネル特権を有しているかどうか等をアクセスすることが
できる制御レジスタ。
下で実行される。スレッドは下記の状態を有する。すな
わち、この処理において、スレッドがどこに進むかを示
す命令ポインタ、この処理が次にどこに分岐するかを示
すジャンプポインタ、直ちにアクセスすることができる
値を含んでいるレジスタバンク7、仮想アドレスから物
理アドレスのマッピング、仮想アドレスによりアクセス
可能なメモリの内容、スレッドおよび任意の他の値によ
ってこのような浮動小数点丸めモード、スレッドがカー
ネル特権を有しているかどうか等をアクセスすることが
できる制御レジスタ。
【0026】上記の状態のいくつかは、ここではスレッ
ド状態ワードと呼ばれ、スレッド状態ワードレジスタ9
に保持されている小さい値のセットで指定される。スレ
ッド状態ワードは、特に下記についての情報を保持す
る。すなわち、スレッドがカーネルモードにあるか否
か、スレッドはどの仮想アドレス空間にアクセスするこ
とができるか、浮動小数点フラグ、トラップイネーブル
およびトラップモード、デバッグ情報、およびトラップ
最適化情報。
ド状態ワードと呼ばれ、スレッド状態ワードレジスタ9
に保持されている小さい値のセットで指定される。スレ
ッド状態ワードは、特に下記についての情報を保持す
る。すなわち、スレッドがカーネルモードにあるか否
か、スレッドはどの仮想アドレス空間にアクセスするこ
とができるか、浮動小数点フラグ、トラップイネーブル
およびトラップモード、デバッグ情報、およびトラップ
最適化情報。
【0027】スレッド状態ワードのフォーマットは表I
に規定されている。
に規定されている。
【表1】
【0028】ここに記載されたシステムのアドレス変換
バッファ10では、各TLBエントリは、仮想ページ番
号、実ページ番号および情報シーケンスに関連付けた。
一例のエントリは図3に示されている。ここで、VPは
仮想ページ番号を示し、RPは実ページ番号を示し、I
NFOは情報シーケンスを示している。情報シーケンス
は、公知であり、ここにこれ以上説明されていない方法
でメモリのアドレスについてのいろいろな情報を含んで
いる。しかしながら、現在説明されているシステムによ
れば、情報シーケンスは、説明されている実施の形態で
は4ビットの長さである区分表示子PIをさらに含んで
いる。したがって、情報シーケンスINFOのビット0
〜3は区分表示子を構成する。
バッファ10では、各TLBエントリは、仮想ページ番
号、実ページ番号および情報シーケンスに関連付けた。
一例のエントリは図3に示されている。ここで、VPは
仮想ページ番号を示し、RPは実ページ番号を示し、I
NFOは情報シーケンスを示している。情報シーケンス
は、公知であり、ここにこれ以上説明されていない方法
でメモリのアドレスについてのいろいろな情報を含んで
いる。しかしながら、現在説明されているシステムによ
れば、情報シーケンスは、説明されている実施の形態で
は4ビットの長さである区分表示子PIをさらに含んで
いる。したがって、情報シーケンスINFOのビット0
〜3は区分表示子を構成する。
【0029】TLBエントリのための他の配置が図8に
示されている。表Iから分かるように、スレッド状態ワ
ードは8ビットのグループ番号を含んでいる。これは、
下記に説明されているように、キャッシュ区分を割り当
てる区分表示子を発生するために使用される。
示されている。表Iから分かるように、スレッド状態ワ
ードは8ビットのグループ番号を含んでいる。これは、
下記に説明されているように、キャッシュ区分を割り当
てる区分表示子を発生するために使用される。
【0030】アドレス変換バッファ10では、各TLB
エントリは、仮想ページ番号、実ページ番号および情報
シーケンスと関連付けした。情報シーケンスは、公知で
あり、ここにこれ以上説明されていない方法でメモリの
アドレスについてのいろいろな情報を含んでいる。しか
しながら、本実施の形態では、情報シーケンスは、グル
ープ番号および仮想ページ番号によって決まる区分表示
子PIを発生する区分コードをさらに含んでいる。これ
は、図8に図解的に示されている。ここで、VPは仮想
ページ番号を示し、RPは実ページ番号を示し、GNは
グループ番号を示し、INFOは情報シーケンスを示し
ている。説明されている実施の形態では、PIは4ビッ
トの長さである。
エントリは、仮想ページ番号、実ページ番号および情報
シーケンスと関連付けした。情報シーケンスは、公知で
あり、ここにこれ以上説明されていない方法でメモリの
アドレスについてのいろいろな情報を含んでいる。しか
しながら、本実施の形態では、情報シーケンスは、グル
ープ番号および仮想ページ番号によって決まる区分表示
子PIを発生する区分コードをさらに含んでいる。これ
は、図8に図解的に示されている。ここで、VPは仮想
ページ番号を示し、RPは実ページ番号を示し、GNは
グループ番号を示し、INFOは情報シーケンスを示し
ている。説明されている実施の形態では、PIは4ビッ
トの長さである。
【0031】区分表示子は、データ項目がキャッシュメ
モリ22に最初にロードされるときにデータ項目を入れ
ることができる区分に関する情報を提供している。図2
に示されたキャッシュ構造に関して、各区分はキャッシ
ュの1バンクを構成することができる。区分表示子にお
いて、各ビットはバンクの中の1つを参照する。区分表
示子のビットjの1の値は、このページのデータを区分
jに入れることができないことを意味する。ビットjの
0の値は、このページのデータを区分jに入れることが
できることを意味する。データは、区分表示子の2以上
のビットに0を有することによって2以上の区分に入れ
ることができる。全て0である区分表示子によって、デ
ータはキャッシュの任意の区分に入れることができる。
全て1である区分表示子によって、任意のデータ項目
は、キャッシュメモリにロードすることができない。こ
れは、例えば、キャッシュの内容を“凍結”するため
に、例えば診断目的のために使用することができる。
モリ22に最初にロードされるときにデータ項目を入れ
ることができる区分に関する情報を提供している。図2
に示されたキャッシュ構造に関して、各区分はキャッシ
ュの1バンクを構成することができる。区分表示子にお
いて、各ビットはバンクの中の1つを参照する。区分表
示子のビットjの1の値は、このページのデータを区分
jに入れることができないことを意味する。ビットjの
0の値は、このページのデータを区分jに入れることが
できることを意味する。データは、区分表示子の2以上
のビットに0を有することによって2以上の区分に入れ
ることができる。全て0である区分表示子によって、デ
ータはキャッシュの任意の区分に入れることができる。
全て1である区分表示子によって、任意のデータ項目
は、キャッシュメモリにロードすることができない。こ
れは、例えば、キャッシュの内容を“凍結”するため
に、例えば診断目的のために使用することができる。
【0032】図3に示された例では、区分表示子は、主
メモリにこの実ページ番号を有するデータ項目の置換が
バンクB1あるいはB3を使用できなくて、バンクB2
あるいはB4を使用することができることを示してい
る。
メモリにこの実ページ番号を有するデータ項目の置換が
バンクB1あるいはB3を使用できなくて、バンクB2
あるいはB4を使用することができることを示してい
る。
【0033】2つ以上のバンクをページに割り当てるこ
とが事実上可能である。この場合、ラインインページ番
号がキャッシュに対して行アドレスよりも多くのビット
を有するならば、区分はkウェイ・セット・アソシアテ
ィブ・キャッシュとして動作する。ここで、k個の区分
は1ページに割り当てられる。したがって、説明された
例では、図3の実ページ番号はバンクB2およびB4を
使用することができる。しかしながら、この実ページ番
号はバンクB1およびB3を使用することができない。
とが事実上可能である。この場合、ラインインページ番
号がキャッシュに対して行アドレスよりも多くのビット
を有するならば、区分はkウェイ・セット・アソシアテ
ィブ・キャッシュとして動作する。ここで、k個の区分
は1ページに割り当てられる。したがって、説明された
例では、図3の実ページ番号はバンクB2およびB4を
使用することができる。しかしながら、この実ページ番
号はバンクB1およびB3を使用することができない。
【0034】区分情報は、キャッシュルックアップで使
用されないで、キャッシュ置換あるいは取り替えにだけ
使用される。このように、キャッシュアクセスは、キャ
ッシュメモリのどこにも保持されるデータ項目を探索す
ることができるのに対して、置換は、このページアドレ
スのために許可された区分にデータを置換するだけであ
る。
用されないで、キャッシュ置換あるいは取り替えにだけ
使用される。このように、キャッシュアクセスは、キャ
ッシュメモリのどこにも保持されるデータ項目を探索す
ることができるのに対して、置換は、このページアドレ
スのために許可された区分にデータを置換するだけであ
る。
【0035】図4は、取り替えエンジン30の内容をよ
り詳細に示している。取り替えバス32は、3つの別個
のバス、データバス32a、アドレスバス32bおよび
置換情報を伝達するバス32cとして図4に示されてい
る。データバスおよびアドレスバス32aおよび32b
は、メモリバス54を介して主メモリをアクセスするメ
モリアクセス回路50に供給される。置換情報は、実ア
ドレス34、バス36上の区分表示子PIおよびミス信
号38も受け取る決定回路52に供給される。決定回路
52は、主メモリにアクセスされたデータが置かれるべ
きキャッシュの適切な区分を決定する。
り詳細に示している。取り替えバス32は、3つの別個
のバス、データバス32a、アドレスバス32bおよび
置換情報を伝達するバス32cとして図4に示されてい
る。データバスおよびアドレスバス32aおよび32b
は、メモリバス54を介して主メモリをアクセスするメ
モリアクセス回路50に供給される。置換情報は、実ア
ドレス34、バス36上の区分表示子PIおよびミス信
号38も受け取る決定回路52に供給される。決定回路
52は、主メモリにアクセスされたデータが置かれるべ
きキャッシュの適切な区分を決定する。
【0036】区分表示子PIは、任意の他のTLBエン
トリのようにTLBにセットすることができる。前述さ
れた例では、区分表示子は、CPU2で実行するカーネ
ルモードソフトウェアによってセットされ、特定のキャ
ッシュ区分に入れるべきでないページがこの区分のため
にセットされたその区分表示子ビットを有しないことを
確実にするこのカーネルモードソフトウェアの責務を有
する。しかしながら、ユーザは、キャッシュ区分が変え
られるべきであることを要求することによって区分を変
えることができる。この場合、CPU2は、要求を実行
するカーネルモードに変えるので、TLBエントリを変
え、ユーザモードに変え、ユーザが続けることを可能に
する。したがって、ユーザはキャッシュの分割動作を変
えることができるので、これまで可能であったよりも非
常に大きい柔軟性を提供する。
トリのようにTLBにセットすることができる。前述さ
れた例では、区分表示子は、CPU2で実行するカーネ
ルモードソフトウェアによってセットされ、特定のキャ
ッシュ区分に入れるべきでないページがこの区分のため
にセットされたその区分表示子ビットを有しないことを
確実にするこのカーネルモードソフトウェアの責務を有
する。しかしながら、ユーザは、キャッシュ区分が変え
られるべきであることを要求することによって区分を変
えることができる。この場合、CPU2は、要求を実行
するカーネルモードに変えるので、TLBエントリを変
え、ユーザモードに変え、ユーザが続けることを可能に
する。したがって、ユーザはキャッシュの分割動作を変
えることができるので、これまで可能であったよりも非
常に大きい柔軟性を提供する。
【0037】これまで説明されたキャッシュ分割機構
は、特に多重タスクCPUには有用である。多重タスク
プロセッサは、2つ以上の処理を「同時に」実行するこ
とができる。実際には、プロセッサは処理の一部を実行
し、この処理が何らかの理由で、多分続けるためのデー
タあるいはスティミュラスの要求で停止されると、プロ
セッサは、直ちに他の処理を実行し始める。したがっ
て、プロセッサは、個別処理を続けるためのデータある
いはスティミュラスを待って中止することができるとき
さえ常に作動している。図5は、このような状態を図解
的に示されている。図5の左側にはプロセッサが異なる
プロセス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が実行された場合、処理P
1はプロセッサによって完全に実行された。従来のキャ
ッシュシステムでは、一旦プロセッサが第1の処理のシ
ーケンスP2を実行し始め、このようにページ1からの
アクセスを要求すると、これらのラインのデータ項目お
よび命令は0ページからの予め記憶された記憶項目およ
び命令をキャッシュで置換することは容易に明らかであ
る。しかしながら、、第2の処理のシーケンスP1が実
行されると、これらはまもなく再び要求することができ
る。
は、特に多重タスクCPUには有用である。多重タスク
プロセッサは、2つ以上の処理を「同時に」実行するこ
とができる。実際には、プロセッサは処理の一部を実行
し、この処理が何らかの理由で、多分続けるためのデー
タあるいはスティミュラスの要求で停止されると、プロ
セッサは、直ちに他の処理を実行し始める。したがっ
て、プロセッサは、個別処理を続けるためのデータある
いはスティミュラスを待って中止することができるとき
さえ常に作動している。図5は、このような状態を図解
的に示されている。図5の左側にはプロセッサが異なる
プロセス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が実行された場合、処理P
1はプロセッサによって完全に実行された。従来のキャ
ッシュシステムでは、一旦プロセッサが第1の処理のシ
ーケンスP2を実行し始め、このようにページ1からの
アクセスを要求すると、これらのラインのデータ項目お
よび命令は0ページからの予め記憶された記憶項目およ
び命令をキャッシュで置換することは容易に明らかであ
る。しかしながら、、第2の処理のシーケンスP1が実
行されると、これらはまもなく再び要求することができ
る。
【0038】ここに記載されているキャッシュ分割機構
は、これから生じる得るタイミング遅れおよび不正確さ
を避ける。図6は、プロセッサが処理P1を実行してい
る間のキャッシュの分割およびプロセッサが実行P3等
にスイッチする場合の分割の変化を示している。図6
は、各々の場合に対するTLBキャッシュ区分表示子も
示している。左側に図5は、プロセッサが処理P1およ
びP2を実行している間に分割されたキャッシュを示し
ている。処理P1はキャッシュのバンクB1およびB2
を使用することができるが、バンクB3およびB4を使
用することはできない。反対に、処理P2はバンクB3
およびB4を使用することができるが、バンクB1およ
びB2を使用することはできない。これは下記のTLB
エントリで分かる。すなわち、ページ0は、バンクB1
およびB2にアクセスすることはできるが、バンクB3
およびB4にアクセスすることはできないキャッシュ区
分表示子を有する。ページ1およびページ2は、バンク
B3およびB4にアクセスすることはできるが、バンク
B1およびB2にアクセスすることができないキャッシ
ュ区分表示子を有する。ページ3は、キャッシュにアク
セスすることを防止するキャッシュ区分表示子を有す
る。したがって、処理P3からのデータ項目をキャッシ
ュにロードしようとするプロセッサによるいかなる試み
も禁止される。しかしながら、前述の処理シーケンスに
関して、理解できるように、プロセッサは、処理P1を
実行し終えるまで、処理P3のいかなる部分も実行する
つもりはないために、これは不利なことではない。プロ
セッサが何らかの理由でP3を実行しなければならない
ならば、唯一の不利な面は、プロセッサがダイレクトメ
モリからそのアクセスを行わなければならなく、キャッ
シュを使用することができないことである。
は、これから生じる得るタイミング遅れおよび不正確さ
を避ける。図6は、プロセッサが処理P1を実行してい
る間のキャッシュの分割およびプロセッサが実行P3等
にスイッチする場合の分割の変化を示している。図6
は、各々の場合に対するTLBキャッシュ区分表示子も
示している。左側に図5は、プロセッサが処理P1およ
びP2を実行している間に分割されたキャッシュを示し
ている。処理P1はキャッシュのバンクB1およびB2
を使用することができるが、バンクB3およびB4を使
用することはできない。反対に、処理P2はバンクB3
およびB4を使用することができるが、バンクB1およ
びB2を使用することはできない。これは下記のTLB
エントリで分かる。すなわち、ページ0は、バンクB1
およびB2にアクセスすることはできるが、バンクB3
およびB4にアクセスすることはできないキャッシュ区
分表示子を有する。ページ1およびページ2は、バンク
B3およびB4にアクセスすることはできるが、バンク
B1およびB2にアクセスすることができないキャッシ
ュ区分表示子を有する。ページ3は、キャッシュにアク
セスすることを防止するキャッシュ区分表示子を有す
る。したがって、処理P3からのデータ項目をキャッシ
ュにロードしようとするプロセッサによるいかなる試み
も禁止される。しかしながら、前述の処理シーケンスに
関して、理解できるように、プロセッサは、処理P1を
実行し終えるまで、処理P3のいかなる部分も実行する
つもりはないために、これは不利なことではない。プロ
セッサが何らかの理由でP3を実行しなければならない
ならば、唯一の不利な面は、プロセッサがダイレクトメ
モリからそのアクセスを行わなければならなく、キャッ
シュを使用することができないことである。
【0039】処理P1を実行し終えた場合、プロセッサ
は、TLB(アドレス変換バッファ)のキャッシュ区分
表示子を変えることができるようにカーネルモードを要
求することができる。前述の実施の形態では、カーネル
処理はキャッシュへのアクセスがない。その代わりに、
このカーネル処理は、区分表示子のためのTLBエント
リを修正し、キャッシュの動作を修正する。この変化は
図6の右側に示されている。したがって、次に、キャッ
シュ区分表示子は、処理P1がキャッシュをともかく使
用することを防止するが、ページ3のためのキャッシュ
区分表示子を変えることによってバンクB1およびB2
をB3およびB4に割り当てるので、キャッシュ区分表
示子はキャッシュのこれらのバンクをアクセスすること
ができる。したがって、プロセッサは処理P3を実行す
ることを期待している場合、プロセッサは現在キャッシ
ュ機構を有している。
は、TLB(アドレス変換バッファ)のキャッシュ区分
表示子を変えることができるようにカーネルモードを要
求することができる。前述の実施の形態では、カーネル
処理はキャッシュへのアクセスがない。その代わりに、
このカーネル処理は、区分表示子のためのTLBエント
リを修正し、キャッシュの動作を修正する。この変化は
図6の右側に示されている。したがって、次に、キャッ
シュ区分表示子は、処理P1がキャッシュをともかく使
用することを防止するが、ページ3のためのキャッシュ
区分表示子を変えることによってバンクB1およびB2
をB3およびB4に割り当てるので、キャッシュ区分表
示子はキャッシュのこれらのバンクをアクセスすること
ができる。したがって、プロセッサは処理P3を実行す
ることを期待している場合、プロセッサは現在キャッシ
ュ機構を有している。
【0040】本発明は上記に明確に記載された実施の形
態に限定されることはない。ある種の特定の可能な変更
は下記に述べられているが、これは、本発明の範囲内で
可能である包括的な変更のリストではない。
態に限定されることはない。ある種の特定の可能な変更
は下記に述べられているが、これは、本発明の範囲内で
可能である包括的な変更のリストではない。
【0041】前述の実施の形態では、アドレスバス4上
にCPUによって発されたアドレスは、仮想ページ番号
4bおよびページライン4aに分割される。しかしなが
ら、本発明は、全仮想アドレスがCPUからキャッシュ
のためのルックアップ回路に送られる場合に使用するこ
ともできる。反対に、本発明は、CPUが実アドレスを
ルックアップ回路に直接発する場合にも適用することが
できる。重要であることは、キャッシュ区分表示子が主
メモリのアドレスと関連して備えられていることであ
る。
にCPUによって発されたアドレスは、仮想ページ番号
4bおよびページライン4aに分割される。しかしなが
ら、本発明は、全仮想アドレスがCPUからキャッシュ
のためのルックアップ回路に送られる場合に使用するこ
ともできる。反対に、本発明は、CPUが実アドレスを
ルックアップ回路に直接発する場合にも適用することが
できる。重要であることは、キャッシュ区分表示子が主
メモリのアドレスと関連して備えられていることであ
る。
【0042】前述の実施の形態では、ルックアップおよ
び取り替えの両方でキャッシュをアクセスするための単
一のキャッシュアクセス回路20が示されている。しか
し、キャッシュに取り替えするための他のアクセスポー
トを備えることもできるので、ルックアップおよび取り
替えは、キャッシュメモリ22のための異なるアクセス
ポートを介して行われる。
び取り替えの両方でキャッシュをアクセスするための単
一のキャッシュアクセス回路20が示されている。しか
し、キャッシュに取り替えするための他のアクセスポー
トを備えることもできるので、ルックアップおよび取り
替えは、キャッシュメモリ22のための異なるアクセス
ポートを介して行われる。
【0043】前述の実施の形態では、取り替えエンジン
30およびキャッシュアクセス回路20は異なるブロッ
クで示されている。しかしながら、これらの機能をルッ
クアップおよび取り替えを実行する単一のキャッシュア
クセス回路に結合することは事実上可能である。
30およびキャッシュアクセス回路20は異なるブロッ
クで示されている。しかしながら、これらの機能をルッ
クアップおよび取り替えを実行する単一のキャッシュア
クセス回路に結合することは事実上可能である。
【0044】
【発明の効果】予測不可能な処理を取り除き、あるいは
減少させるキャッシュシステムを提供し、より大きな予
測可能性のあるキャッシング動作を提供することができ
る。
減少させるキャッシュシステムを提供し、より大きな予
測可能性のあるキャッシング動作を提供することができ
る。
【図1】キャッシュシステムを組み込むコンピュータの
ブロック図である。
ブロック図である。
【図2】4ウェイ・セット・アソシアティブ・キャッシ
ュを示す略図である。
ュを示す略図である。
【図3】アドレス変換バッファのエントリの例を示す図
である。
である。
【図4】取り替えエンジンのブロック図である。
【図5】多重タスクプロセッサの動作を示す図である。
【図6】図5のシステムのためのキャッシング動作の変
更を説明する図である。
更を説明する図である。
【図7】CPUの概略ブロック図である。
【図8】第2の実施の形態におけるアドレス交換バッフ
ァ(TLB)のエントリの例を示す図である。
ァ(TLB)のエントリの例を示す図である。
2 CPU 6 主メモリ 7 レジスタバンク 10 アドレス変換バッファ(TLB) 12 ルックアップ回路 15 実行回路 17 フェッチ回路 19 処理ハンドラ 20 キャッシュアクセス回路 22 キャシュメモリ 30 取り替えエンジン 50 メモリアクセス回路 52 決定回路
フロントページの続き (72)発明者 デイビッド、メイ イギリス国ブリストル、クリフトン、イー トン、クレスント、9 (72)発明者 グレン、ファーラル イギリス国ブリストル、ロング、アシュト ン、ロング、アシュトン、ロード、157 (72)発明者 ブルューノ、フェル フランス国サスナージュ、リュ、ド、ムー シュロット、14 (72)発明者 キャサリン、バーナビー イギリス国ブリストル、コールピット、ヒ ース、ラウンドウェイズ、18
Claims (11)
- 【請求項1】コンピュータのプロセッサと主メモリとの
間で作動するキャッシュシステムにおいて、 それぞれ前記プロセッサによって使用するために前記主
メモリからフェッチされる項目を保持するアドレス指定
可能な複数の記憶位置を有する一連のキャッシュ区分を
有するキャッシュメモリと、 前記主メモリから項目をフェッチし、前記アドレス指定
可能な記憶位置のキャッシュメモリにロードするように
構成されたキャッシュ取り替え機構と、 どのキャッシュ区分に前記項目をロードできるかを識別
するそれぞれの多ビット区分表示子をキャッシュされる
ように項目のアドレスと関連して保持するキャッシュ区
分アクセステーブルとを備え、前記キャッシュ取り替え
機構が、前記主メモリの前記項目のアドレスに応じて1
つあるいはそれ以上の前記キャッシュ区分を前記主メモ
リからフェッチされる各前記項目に割り当てるように作
動可能であることを特徴とするキャッシュシステム。 - 【請求項2】主メモリの各アドレスは、ページ番号およ
びラインインページ番号を含み、かつ前記ページ番号
が、それぞれの区分表示子と関連してルックアップテー
ブルに保持されていることを特徴とする請求項1に記載
のキャッシュシステム。 - 【請求項3】前記プロセッサが仮想ページ番号およびラ
インインページ番号を含み、かつ前記システムが、仮想
ページ番号を、主メモリをアクセスするための実ページ
番号に変換するアドレス変換バッファを含み、前記アド
レス変換バッファが、アドレス指定された項目がロード
されるべきであるキャッシュ区分を識別するための実ペ
ージ番号と関連してそれぞれの区分表示子を保持するこ
とを特徴とする請求項1に記載のキャッシュシステム。 - 【請求項4】前記項目のアドレスのラインインページ番
号が、前記項目が置かれるべき前記キャッシュ区分内の
アドレス記憶位置を識別するために使用されることを特
徴とする請求項2または3に記載のキャッシュシステ
ム。 - 【請求項5】1つあるいはそれ以上のキャッシュ区分が
主メモリのページに割り当てられていることを特徴とす
る請求項2ないし4のいずれか1項に記載のキャッシュ
システム。 - 【請求項6】前記項目の主メモリのアドレスにより、か
つ前記項目がキャッシュメモリに保持されているキャッ
シュ区分に関係なく前記キャッシュメモリからの項目に
アクセスするキャッシュアクセス回路を備えていること
を特徴とする請求項1ないし5のいずれか1項に記載の
キャッシュシステム。 - 【請求項7】コンピュータのプロセッサと主メモリとの
間に配置されたキャッシュメモリの作動方法において、
前記プロセッサが、項目のための主メモリのアドレスを
使用して主メモリから前記項目を要求し、かつこの項目
が前記キャッシュメモリに保持されないとき、前記項目
が前記主メモリからフェッチされ、前記キャッシュメモ
リのアドレス指定可能な複数の記憶位置の中の1つにロ
ードされ、前記アドレス指定可能な記憶位置が一連のキ
ャッシュ区分として配置され、かつ1つあるいはそれ以
上のキャッシュ区分が主メモリの前記項目の前記アドレ
スに応じて前記項目に割り当てられるように各アドレス
がどのキャッシュ区分に前記項目をロードできるかを識
別する多ビット区分表示子と関連付けられていることを
特徴とするキャッシュメモリの作動方法。 - 【請求項8】主メモリの各アドレスがページ番号および
ラインインページ番号を含み、かつ複数のプロセスが主
メモリに保持され、各プロセスが共通ページ番号を有す
る主メモリのアドレスに保持された1つあるいはそれ以
上の命令のシーケンスを含むことを特徴とする請求項7
に記載の方法。 - 【請求項9】前記キャッシュ区分の中の1つが、前記1
つのキャッシュ区分を前記主メモリのプロセスのページ
番号に関連付けることによってそのプロセスに割り当て
られることを特徴とする請求項8に記載の方法。 - 【請求項10】各キャッシュ区分のアドレス指定可能な
記憶位置数が変更可能であることを特徴とする請求項7
ないし9のいずれか1項に記載の方法。 - 【請求項11】キャッシュ区分をページ番号に関連付け
ることが変更可能であると共にこれらのページ番号を使
用するプロセスが前記プロセッサによって実行されるこ
とを特徴とする請求項7ないし10のいずれか1項に記
載の方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9701960.8 | 1997-01-30 | ||
GBGB9701960.8A GB9701960D0 (en) | 1997-01-30 | 1997-01-30 | A cache system |
GB9725437.9 | 1997-12-01 | ||
GBGB9725437.9A GB9725437D0 (en) | 1997-12-01 | 1997-12-01 | A Cache system for concurrent proceses |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10232839A true JPH10232839A (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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10019476A Pending JPH10232834A (ja) | 1997-01-30 | 1998-01-30 | キャッシュメモリを作動する方法およびコンピュータシステム |
Country Status (4)
Country | Link |
---|---|
US (3) | US6453385B1 (ja) |
EP (2) | EP0856797B1 (ja) |
JP (2) | JPH10232839A (ja) |
DE (2) | DE69814703D1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004178571A (ja) * | 2002-11-11 | 2004-06-24 | Matsushita Electric Ind Co Ltd | キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム |
US7493448B2 (en) | 2002-06-24 | 2009-02-17 | Nec Corporation | Prevention of conflicting cache hits without an attendant increase in hardware |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0856797B1 (en) * | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | A cache system for concurrent processes |
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 |
AU7728300A (en) * | 1999-11-22 | 2001-06-04 | 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 |
JP2002342163A (ja) * | 2001-05-15 | 2002-11-29 | Fujitsu Ltd | マルチスレッドプロセッサ用キャッシュ制御方式 |
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収容装置、マルチキャスト配信システム及びデータ配信方法 |
US6768358B2 (en) * | 2001-08-29 | 2004-07-27 | Analog Devices, Inc. | Phase locked loop fast power up methods and apparatus |
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 |
KR100985239B1 (ko) * | 2003-02-24 | 2010-10-04 | 엔엑스피 비 브이 | 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체 |
KR20050116811A (ko) * | 2003-03-06 | 2005-12-13 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법 |
CA2435148A1 (en) | 2003-07-15 | 2005-01-15 | Robert J. Blainey | System and method for lock caching for compound atomic operations on shared memory |
CN1879092B (zh) * | 2003-11-12 | 2010-05-12 | 松下电器产业株式会社 | 高速缓冲存储器及其控制方法 |
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 |
US7257678B2 (en) * | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Dynamic reconfiguration of cache memory |
US7472224B1 (en) | 2004-10-01 | 2008-12-30 | Advanced Micro Devices, Inc. | Reconfigurable processing node including first and second processor cores |
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 |
US8275942B2 (en) * | 2005-12-22 | 2012-09-25 | Intel Corporation | Performance prioritization in multi-threaded processors |
US20070162475A1 (en) * | 2005-12-30 | 2007-07-12 | Intel Corporation | Method and apparatus for hardware-based dynamic escape detection in managed run-time environments |
WO2007099483A2 (en) * | 2006-03-02 | 2007-09-07 | 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 |
JP5245349B2 (ja) | 2007-10-17 | 2013-07-24 | 日本電気株式会社 | 登録先ウェイの固定方法、プロセッサ、及び情報処理装置 |
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 |
JP5239890B2 (ja) * | 2009-01-21 | 2013-07-17 | トヨタ自動車株式会社 | 制御装置 |
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 |
MX345332B (es) * | 2010-01-29 | 2017-01-25 | Nestec Sa | Arenas extruidas para animales con indice de absorcion incrementado. |
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 |
US9824013B2 (en) | 2012-05-08 | 2017-11-21 | Qualcomm Incorporated | Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors |
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 |
WO2024006371A1 (en) | 2022-06-28 | 2024-01-04 | Apple Inc. | Pc-based computer permissions |
Family Cites Families (12)
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 |
EP0856797B1 (en) * | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | A cache system for concurrent processes |
-
1998
- 1998-01-26 EP EP98300515A patent/EP0856797B1/en not_active Expired - Lifetime
- 1998-01-26 DE DE69814703T patent/DE69814703D1/de not_active Expired - Lifetime
- 1998-01-26 EP EP98300518A patent/EP0856798B1/en not_active Expired - Lifetime
- 1998-01-26 DE DE69826539T patent/DE69826539D1/de not_active Expired - Lifetime
- 1998-01-27 US US09/014,315 patent/US6453385B1/en not_active Expired - Lifetime
- 1998-01-27 US US09/014,194 patent/US6295580B1/en not_active Expired - Lifetime
- 1998-01-30 JP JP10019729A patent/JPH10232839A/ja active Pending
- 1998-01-30 JP JP10019476A patent/JPH10232834A/ja active Pending
-
2001
- 2001-08-08 US US09/924,289 patent/US6629208B2/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | パナソニック株式会社 | キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム |
Also Published As
Publication number | Publication date |
---|---|
US6295580B1 (en) | 2001-09-25 |
EP0856798A1 (en) | 1998-08-05 |
EP0856798B1 (en) | 2004-09-29 |
US6453385B1 (en) | 2002-09-17 |
DE69826539D1 (de) | 2004-11-04 |
US6629208B2 (en) | 2003-09-30 |
EP0856797B1 (en) | 2003-05-21 |
DE69814703D1 (de) | 2003-06-26 |
US20020002657A1 (en) | 2002-01-03 |
JPH10232834A (ja) | 1998-09-02 |
EP0856797A1 (en) | 1998-08-05 |
US20020083269A1 (en) | 2002-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10232839A (ja) | キャッシュシステムおよびキャッシュメモリの作動方法 | |
US7437514B2 (en) | Cache system | |
US8806177B2 (en) | Prefetch engine based translation prefetching | |
US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
EP0097790B1 (en) | Apparatus for controlling storage access in a multilevel storage system | |
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 | |
US5715427A (en) | Semi-associative cache with MRU/LRU replacement | |
JP2968509B2 (ja) | コンピュータシステム及びキャッシュの内容のコヒーレンシー状態を変更する方法 | |
US7039768B2 (en) | Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions | |
JP2001184263A (ja) | 旧キャッシュラインを無効化および除去する装置 | |
US6101589A (en) | High performance shared cache | |
US6038642A (en) | Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system | |
US6751700B2 (en) | Date processor and storage system including a set associative cache with memory aliasing | |
JPH11328018A (ja) | スヌ―プ・ポ―トを用いるプリフェッチ・キャッシュ問い合わせのための方法及びシステム | |
US6766435B1 (en) | Processor with a general register set that includes address translation registers | |
JPH0756808A (ja) | データキャッシュバッファ及び記憶方法 | |
EP0611462B1 (en) | Memory unit including a multiple write cache | |
US5412790A (en) | High-throughput data processing system equipped with cache memory system for achieving high hit ratio | |
JP2002116956A (ja) | キャッシュ制御方法及びキャッシュ制御システム | |
CN118093450A (zh) | 通过优化tlb提高mcm gpu地址翻译效率的方法 | |
JPH0337745A (ja) | キャッシュメモリ制御装置 |
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 |