JP5300407B2 - 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 - Google Patents

仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 Download PDF

Info

Publication number
JP5300407B2
JP5300407B2 JP2008269940A JP2008269940A JP5300407B2 JP 5300407 B2 JP5300407 B2 JP 5300407B2 JP 2008269940 A JP2008269940 A JP 2008269940A JP 2008269940 A JP2008269940 A JP 2008269940A JP 5300407 B2 JP5300407 B2 JP 5300407B2
Authority
JP
Japan
Prior art keywords
cache
memory
tlb
virtual
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008269940A
Other languages
English (en)
Other versions
JP2010097558A (ja
Inventor
泰彦 黒澤
光男 斎藤
宏雄 林
誠司 前田
繁明 岩佐
信博 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008269940A priority Critical patent/JP5300407B2/ja
Priority to US12/580,732 priority patent/US8949572B2/en
Priority to CN2009102050381A priority patent/CN101727405B/zh
Publication of JP2010097558A publication Critical patent/JP2010097558A/ja
Application granted granted Critical
Publication of JP5300407B2 publication Critical patent/JP5300407B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Description

本発明は、仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法に関し、特に、仮想記憶をサポートするプロセッサのための仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法に関する。
従来より、仮想記憶を採用するプロセッサでは、プロセスに固有のアドレス空間である仮想アドレス空間からプロセッサが搭載されている計算機システム全体のアドレス空間である実アドレス空間へのアドレス変換を高速に実行するため、オペレーティングシステム(以下、OSという)で管理されているページテーブルのコピーを置くための専用のキャッシュメモリであるTLB( Translation Lookaside Buffer )が搭載されている。
一方で、プロセッサは、メモリアクセスのレイテンシを隠蔽するためにメモリのデータをキャッシュメモリ(以下、キャッシュともいう)にコピーして利用している。キャッシュにコピーされたデータを保持しているメモリのデータのアドレスを特定するため、メモリのデータを保持するデータメモリのほかに、そのデータのアドレスやそのデータの状態(有効か、メモリ内容を更新したか、など)を保持するタグ(Tag)メモリを、プロセッサは、有している。タグメモリは一般にはメモリアドレスの下位ビットを、キャッシュのインデックスとし、メモリアドレスの上位ビット(Tag)やデータの状態をデータとして保持するように構成されている。
上記のアドレス変換は、プロセッサ設計においてタイミング上のクリティカルパスとなることが多い。プロセッサが階層メモリを採用する場合にはプロセッサに近い位置にあるレベル1キャッシュ(以下、L1キャッシュともいう)は、仮想アドレスを用いてアクセスされ、レベル2(L2キャッシュ)以降のキャッシュは、後述するエイリアス対策などのため、物理アドレスを用いてアクセスされる構成を採用する場合が多い。
アドレス変換は、命令のフェッチ、ロード命令、ストア命令によるメモリアクセスの全てにおいて行われるので、TLBミスが性能に与える影響は通常のキャッシュミスより大きくなる。そのため、TLBは、キャッシュとは別の専用メモリとして設けられる。
しかし、上述した従来のTLBとキャッシュメモリの構成には、次の問題がある。
TLBとキャッシュのタグメモリの容量に関する問題である。
TLBは、データとして仮想ページ番号と物理ページ番号、およびページ属性、ページ状態などのデータを保持する。32ビット以上の物理アドレス空間を持つプロセッサでは、TLBに保持するデータの中で仮想ページ番号と物理ページ番号の占める割合は大きい。TLBの大きさは、主に物理アドレス空間の大きさ、最小ページサイズ、およびTLBのエントリ数によって決まる。
キャッシュのタグメモリは、データとして、Tag、およびキャッシュ状態などのデータを保持する。32ビット以上の物理アドレス空間を持つプロセッサでは、キャッシュのタグメモリに保持するデータの中でTagの占める割合は大きい。キャッシュのタグメモリの大きさは、主に物理アドレス空間の大きさ、キャッシュラインサイズ、およびキャッシュ容量で決まる。
「Computer Architecture - A Quantitative Approach - Third Edition」 の Figure 5.57 および Figure 5.58 (505ページ、506ページ)によると、最近のプロセッサでは、
・L1 サイズ 8kB 〜 64kB, direct map もしくは 2way set associative
・TLB エントリ数 4〜512 エントリ full associative
・最小ページサイズ 1〜64k Byte
となっている(非特許文献1,2,3参照)。
Computer Architecture - A Quantitative Approach - Third Edition 、 Figure5.57 および Figure5.58 (505ページ、506ページ) Computer Organization and Design -- The Hardware/Software interface --second edition (1998 Morgan Kaufmann : ISBN 1-55860-428-6)by David.A.Patterson and John L. Hennessy (p592) Integrating virtual memory, TLB and Caches (p593) Figure 7.25 (p594) Figure 7.26 Computer Architecture -- A Quantitative Approach--third edition (2003 Morgan Kaufmann : ISBN 1-55860-596-7)by John L. Hennessy and David.A.Patterson(p444) "Second Hit Time Reduction Technique:Avoiding Address Translation during Indexing of Cache"
本発明は、上述した問題に鑑みてなされたもので、TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができる仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法を提供することを目的とする。
本発明の一態様によれば、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグのうち、最下位ビットを含む複数の下位ビットを第1インデックスとして、前記仮想ページタグを含むエントリデータを保持し、プロセッサからの前記仮想ページタグが一致するとヒット信号を出力するTLB仮想ページメモリと、前記第1インデックス及びページオフセットを含む第2インデックスを用いて、前記第1インデックスと同一のエントリには、前記仮想ページメモリと同一の仮想ページタグに対応するキャッシュデータを保持するデータメモリと、前記第2インデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、を有する仮想アドレスキャッシュメモリを提供することができる。
本発明によれば、TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができる仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法を実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
(構成)
まず図1に基づき、本発明の第1の実施の形態に係わるプロセッサシステムの構成を説明する。図1は、本発明の第1の実施の形態に係わるプロセッサシステムの構成を示す構成図である。
プロセッサシステム1は、中央処理装置(以下、CPUという)11と、仮想アドレスキャッシュメモリとしてのレベル1(L1)のキャッシュメモリ12と、主メモリとしてのDRAM13とを有して構成される。プロセッサシステム1は、仮想記憶機構とキャッシュメモリをもつプロセッサである。キャッシュメモリ12とDRAM13は、互いにバスで接続されている。CPU11は、いわゆるCPUコアである。
なお、本実施の形態では、1つのCPU11がDRAM13をアクセスする例であるが、CPU11とキャッシュメモリ12の対が複数あって、その複数の対が、システムバス等を介して、1つのDRAM13と接続されるようなマルチコアの構成でもよい。
さらに、L1キャッシュであるキャッシュメモリ12とDRAM13の間に、L2キャッシュ等があってもよい。
CPU11は、主メモリ13に記憶された命令あるいはデータを、キャッシュメモリ制御回路を含むキャッシュメモリ12を介して読み出して実行する。CPU11は、プログラムの実行に必要な命令あるいはデータ(以下、単にデータともいう)がキャッシュメモリにあれば、キャッシュメモリ12から読み出してそのプログラムを実行する。
CPU11は、そのデータを指定するために仮想アドレス(EA)をキャッシュメモリ12に出力し、キャッシュメモリ12は、キャッシュメモリ12中に入力された仮想アドレス(EA)に対応するデータが存在すれば、そのデータをCPU11へ出力する。キャッシュメモリ12中にストアされたデータが無ければ、リフィル処理によりDRAM13からそのデータを読み出してキャッシュメモリ12に書き込み、CPUコア11に出力する。
本実施の形態のキャッシュメモリ12は、データ入れ替えすなわちキャッシュリプレースを、複数のプロセスの実行を管理するOSで管理する仮想ページ単位で行い、キャッシュステート管理を、キャッシュライン単位すなわちキャッシュブロック単位で行う。本実施の形態のプロセッサでは、L1キャッシュであるキャッシュメモリ12へのアクセスは、仮想アドレスにより行われ、キャッシュのコヒーレンシは、スヌープ方式により行われる。
図2は、仮想アドレスキャッシュメモリとしてのキャッシュメモリ12の構成図である。
キャッシュメモリ12は、TLB仮想ページメモリ(TLB EPメモリ)21と、TLB物理ページメモリ(TLB RPメモリ)22と、データメモリ23と、キャッシュステートメモリ24と、TLB物理ページCAMメモリ(TLB RP CAMsメモリ)25とを含んで構成される。
CPU11は、キャッシュメモリ12へ、仮想アドレス(EA)31を出力し、キャッシュメモリ12は、DRAM13へ物理アドレス32を出力する。
本実施の形態のキャッシュメモリ12は、TLB およびL1キャッシュとしての機能を、4ウェイセットアソシアティブ構成のキャッシュメモリにより実現している。キャッシュメモリ12のL1キャッシュとしての容量は、256KB(キロバイト。以下、同じ。)である。各ウェイの大きさは、ページサイズを超えるが、仮想アドレスにページカラーリング(page coloring)は、施されていない。
本実施の形態のキャッシュメモリ12は、仮想アドレス(EA)を4KBのページ単位で分け、仮想アドレスEAの上位ビット(32:12) を仮想ページタグとし、さらにウェイあたりのキャッシュ容量である 64KBを4KBで分割した中位ビット(15:12) を仮想ページインデックス(EP_Index)とする4ウェイセットアソシアティブのキャッシュである。すなわち、キャッシュメモリ12は、TLBとL1キャッシュを構成する。本実施の形態では、仮想アドレス31によりL1キャッシュとしてのキャッシュメモリ12がアクセスされ、各ウェイのサイズ(64KB)がページサイズ(4KB)より大きいので、図2に示すように、仮想ページタグ(EP_Tag)と仮想ページインデックス(EP_Index。以下、TLBインデックスともいう。)は、それぞれ仮想アドレス(EA)のビット(31:12)と(15:12)が割り当てられて、オーバーラップする。
CPU11からの仮想アドレス31がキャッシュメモリ12に入力される。仮想アドレス31は、32ビットで構成され、上位ビット(31:12)が仮想ページタグ(EP_Tag)であり、ビット(11:7)はページオフセットであり、ビット(6:2)は、ブロックオフセットであり、最下位ビット(1:0)はワードオフセットである。上位ビット(31:12)の仮想ページタグは、仮想アドレス31の仮想ページ番号のタグである。
また、CPU11からは、プロセスを識別するための識別子としてのプロセス番号(PID)もキャッシュメモリ12に入力される。
そして、CPU11は、キャッシュラインサイズあるいはキャッシュラインサイズ以下のデータを、キャッシュメモリ12から取り出す。ここでは、CPU11は、32ビットのデータをキャッシュメモリ12から取り出している。
TLB仮想ページメモリ21は、ウェイ毎のTLB仮想ページメモリを含み、各TLB仮想ページメモリは、各ページの状態を示す、Valid(V),Reference(R)、Dirty(D)等の状態情報、プロセスを識別するための識別子としてのプロセス番号(PID)、仮想ページ番号(EP)、及びウェイ番号(WN)等のデータを記憶可能である。仮想ページ番号(EP)は、仮想アドレス(EA)中の上位ビット(31:12)に対応するデータである。なお、今回の例ではウェイ番号(WN)はTLBのウェイ番号と同じ値を用いるので、ウェイ番号(WN)のフィールドを実装しても良いし、ウェイ番号(WN)のフィールド省略してTLBのウェイ番号を流用するような構成にしても良い。また、プロセスIDをもたないアーキテクチャのプロセッサでは、プロセスIDを用いずに仮想ページ番号だけを用いて本実施の形態の動作を行うものとする。
TLB仮想ページメモリ21の各データは、TLBインデックスとしての仮想アドレス(EA)31の上位ビット(31:12)中の4ビット(15:12)により、指定される。
各TLB仮想ページメモリのプロセス番号(PID)と仮想ページ番号(EP)と、CPU11からのプロセス番号(PID)と仮想アドレス31中の仮想ページタグ(EP_Tag)とを比較する4つの比較器21aが設けられている。4つの比較器21aは、TLB仮想ページメモリ21の出力として、ヒット時は、ヒット信号として、ウェイ番号(WN)を出力し、ヒットしなかった時は、ノンヒット信号を出力する。
TLB物理ページメモリ22は、ウェイ毎のTLB物理ページメモリを含む。各TLB物理ページメモリの各データは、TLBインデックスとしての、仮想アドレス31の上位ビット(31:12)中の4ビット(15:12)の仮想ページインデックス(EP_Index)により、指定される。
TLB物理ページメモリ22のデータ、すなわち物理ページ番号は、TLB仮想ページメモリ21の各ウェイと仮想ページインデックス(EP_Index)と対応しており、仮想アドレス空間を、1ページあたり4KBの単位で管理されている。
TLB物理ページメモリ22のデータは、後述するように、キャッシュミス及びTLBミスの場合に使用される。TLB物理ページメモリ22は、各ウェイに対応して、4つ物理アドレスページビット(39:12)を出力する。
データメモリ23は、ウェイ毎のデータメモリを含む。各データメモリは、各キャッシュデータを128バイト単位で管理している。各データメモリの各データは、キャッシュインデックスとしての仮想アドレス31中の9ビット(15:7)と、ブロックオフセット(6:2)により、指定される。9ビット(15:7)は、仮想ページインデックス(EP_Index)である4ビット(15:12)と、ページオフセットである5ビット(11:7)とからなる。
そして、データメモリ23中のキャッシュデータの入れ替えすなわちキャッシュリプレースは、OSの管理する仮想ページ単位で行われる。
各データメモリの出力は、対応する32入力1出力のマルチプレクサ(32:1 MUX)23aに入力される。セレクタとしてのマルチプレクサ23aは、各データメモリに対応して複数(ここでは4つ)設けられ、仮想ページインデックス(EP_Index)とページオフセットによって選択されたデータの中から、仮想アドレスデータ(EA)中のブロックオフセット(6:2)により選択されたブロックのキャッシュデータを選択して出力する。
キャッシュステートメモリ24は、ウェイ毎のキャッシュステートメモリを含む。データメモリ23と同様に、各キャッシュステートメモリ24の各データは、仮想アドレス31中の9ビット(15:7)により、指定される。キャッシュステートメモリ24は、キャッシュライン単位(すなわちキャッシュブロック単位)で、キャッシュのステート管理を行うためのメモリである。
キャッシュステートメモリ(以下、ステートメモリともいう)24は、マルチタスクに対応するために、例えば、MESIプロトコルに基づくキャッシュブロックの状態のデータを記憶する。MESIプロトコルの場合、M(Modified)、E(Exclusive)、S(Shared)、I(Invalid)のデータが記憶される。
キャッシュステートメモリ24からの出力データは、データメモリ23の各データの状態、すなわちデータの有効/無効、読み出しの可否等を示すデータなので、図示しない制御回路に入力されて、利用される。
TLB物理ページCAMメモリ25は、ウェイ毎のTLB物理ページCAM(Content Addressable Memory)を含む。各TLB物理ページCAMの各データは、物理ページ番号と、Validの状態情報を含む。
TLB物理ページCAM25は、TLB仮想ページメモリ21の各ウェイに対応して、かつ仮想ページインデックス(EP_Index)に対応して、物理ページ番号のデータが記憶されている。TLB物理ページCAM25のデータは、TLB仮想ページメモリ21のデータの登録時に、登録される。
後述するように、TLB物理ページCAM25は、他のプロセッサとデータのコヒーレンシを保つために、物理ページから仮想ページの求める逆引きのためと、TLBミス時のエイリアスチェックのために用いられる。また、TLB物理ページCAM25に登録されている物理ページと、対応するエントリ番号のTLB物理ページメモリ22に登録されている物理ページRPは同じものであり、TLB物理ページCAM25もTLB物理ページメモリ22もアクセスされる頻度はTLB仮想ページメモリ21より遙かに小さいので、TLB物理ページメモリ22の機能をTLB物理ページCAM25に統合した実装としても構わない。
エイリアス問題は、ページサイズより大きなL1キャッシュに仮想アドレスが用いられる場合、別の仮想アドレスに同一物理アドレスが割り当てられると、本来、キャッシュに存在するデータを違うアドレスとして扱ってしまい、データの不一致が発生するという問題である。
この問題を防ぐために従来より2つの方法が考案されている。1つは、TLBミスした場合にはエイリアスが発生する可能性のあるエントリをすべてチェックし、物理アドレスが一致した場合に該当する仮想ページに属するすべてのキャッシュラインをフラッシュするものである。
もう一つは、OS等の、仮想アドレスを管理するソフトウェアの助けを借りて、複数のページを並べてエイリアスが発生しないアドレス空間を作成し(たとえば上記例では 64kB / 2way = 32kB の領域を作るように8個の4kBページを並べて)エイリアスの発生をソフトウェア的に防止するページカラーリングと呼ばれる方法である。
しかし、いずれの場合も、複数プロセスで同一ページを共有する場合には、TLB ミスが発生して TLB エントリの入れ替えを行うと同時に古いプロセスで使っていたページに属するデータはキャッシュ上で一度すべて無効化し、新しいTLBを使ってもう一度ロードする必要があった。
特に、エイリアス問題は、複数プロセス間でデータを共有させるつもりでプログラミングしているにも関わらず、共有データはキャッシュ上で一度無効化され、新しい仮想アドレスで、全く同じデータをキャッシュにロードする、という問題があり、該当プロセスおよびシステム全体の性能低下を引き起こし、消費電力を増大させていた。
また、DRAM13に接続されたバスに流れているすなわち出力している物理アドレス(RA)がいわゆるスヌープ方式により監視されて、TLB物理ページCAM25に入力される。その監視している、すなわち入力された物理アドレス(RA)の中に、TLB物理ページCAM25に登録されている物理ページ番号と同じページ番号を有する物理アドレスが検出されると、一致したTLB物理ページCAM 25 のエントリ番号と同じエントリ番号で示されるキャッシュステートメモリ24の状態を示す状態データが変更される。すなわち、良く知られているスヌープ方式のキャッシュコヒーレンシ機構を適用することにより、同一物理アドレスを持つすべてのキャッシュラインに関し、キャッシュラインの状態を示すキャッシュステートメモリ24の状態の整合性を保つことができる。また、スヌープによりMESIプロトコルのModified状態のように、DRAMに記録されているデータよりも新しいデータをキャッシュが持っている場合など、コヒーレンスプロトコルによりキャッシュからのデータ出力が必要な場合にはTLB物理ページCAM 25 のエントリ番号と同じエントリ番号で示されるデータメモリ23をアクセスし、データをバスに出力する。このように、コヒーレンシを保つ処理に、このTLB物理ページCAM25は用いられる。
また、複数のプロセスの実行時に、TLBミスがあった場合に、上述したエイリアスの問題があるので、TLB物理ページメモリミスがあったときに、このTLB物理ページCAM25は用いられる。
TLB物理ページメモリ22、マルチプレクサ23a及びキャッシュステートメモリ24の出力は、それぞれ4入力1出力のマルチプレクサ(4:1 MUX)22b、23b、24bに入力される。セレクタとしての各マルチプレクサ22b、23b、24bは、それぞれ、TLB仮想ページメモリ21からのウェイ番号(WN)が入力され、そのウェイ番号(WN)により選択されたデータを選択して出力する。
なお、本実施の形態では、CPU11は、データ幅32bitでデータを取り出す構成にしているが、プロセッサコアの仕様次第でキャッシュラインサイズ以下の任意のデータ幅を取り出すことができる。
(動作)
次に、上述したキャッシュメモリ12の動作を説明する。図3は、メモリリード時の処理の流れを説明するためのフローチャートである。図4は、TLB登録処理の流れを説明するためのフローチャートである。図5は、TLBミス処理の流れを説明するためのフローチャートである。図6は、キャッシュリード時の処理の流れを説明するためのフローチャートである。
図2の構成における動作を説明する前に、図3から図6を用いて、プロセッサシステム1の全体的な処理を説明する。
図3に示すように、メモリリードが開始されると、仮想インデックスで、ステートメモリ24とデータメモリ23とTLB仮想ページメモリ21へのアクセスが行われる(ステップS1)。TLB仮想ページメモリ21がヒットしなかった時は、TLBヒットの判断(ステップS2)でNOとなり、リード時のTLB登録処理が実行される(ステップS3)。TLBがヒットした時は、TLBヒットの判断(ステップS2)でYESとなり、その仮想ページはリード可能かの判断がされる(ステップS4)。仮想ページはリード可能の場合は、ステップS4でYESとなり、キャッシュリードが行われる(ステップS5)。仮想ページはリード可能でない場合は、ステップS4でNOとなり、割込処理により、プロテクト違反をCPU11通知し(ステップS6)、OSによる例外処理が実行される。
図4に示すように、TLB登録処理が開始されると、登録するPTE(ページテーブルエントリ)が、DRAM13から読み出される(ステップS11)。読み出したPTE(ページテーブルエントリ)が、DRAM13に存在するかが判断され(ステップS12)、存在しない場合は、ステップS12でNOとなって、OSに例外発生の通知が行われる(ステップS13)。
読み出したPTE(ページテーブルエントリ)が、DRAM13に存在する場合は、ステップS12でYESとなって、TLBミスの原因は、ロード命令であるか否かが判断される(ステップS14)。TLBミスの原因が、ロード命令でない場合は、ステップS14でNOとなって、このプロセスに書き込みを許可するか否かが判断される(ステップS15)。プロセスに書き込みを許可しない場合は、ステップS15でNOとなり、処理は、ステップS13に進む。
プロセスに書き込みを許可する場合は、ステップS15でYESとなりとなり、PTE(ページテーブルエントリのdirtyビットとreferenceビットを立てる(ステップS16)。
そして、読み出したPTE(ページテーブルエントリ)と有効な全TLBエントリのいずれかと、物理ページ番号が一致したか否かが判断される(ステップS17)。ステップS17で、物理ページ番号が一致しない場合は、NOとなり、TLBミス処理が実行され(ステップS18),新しいPTE(ページテーブルエントリ)がTLBエントリとして登録される(ステップS19)。
また、ステップS17で、物理ページ番号が一致した場合は、YESとなり、一致したTLBエントリは登録するエントリと仮想インデックスとが同じか否かが判断される(ステップS20)。登録するエントリと仮想インデックスとが同じでない場合は、ステップS20でNOとなり、一致したTLBエントリのページのキャッシュフラッシュが行われ(ステップS21)、処理は、ステップS18に進む。
登録するエントリと仮想インデックスとが同じ場合は、ステップS20でYESとなり、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号(PID)及びプロテクション情報の書き換えが行われる(ステップS22)。
また、TLBミスの原因が、ロード命令である場合は、ステップS14でYESとなって、このプロセスに読み出しを許可するか否かが判断される(ステップS23)。このプロセスに読み出しを許可しない場合はステップS23でNOとなって、処理はステップS13に進む。このプロセスに読み出しを許可する場合は、ステップS23でYESとなって、PTE(ページテーブルエントリ)のreferenceビットを立て(ステップS24)、処理は、ステップS17に進む。
図5に示すように、TLBミス処理が開始されると、同一の仮想インデックスに未使用のTLBエントリが存在するか否かが判断される(ステップS31)。未使用のTLBエントリが存在する場合、ステップS31でYESとなり、処理は終了する。
未使用のTLBエントリが存在しない場合、ステップS31でNOとなり、追い出すTLBエントリを決定し(ステップS32)、追い出すTLBエントリにModifiedのキャッシュラインが存在するか否かが判断される(ステップS33)。Modifiedのキャッシュラインが存在しない場合は、ステップS33でNOとなり、処理は、終了する。
Modifiedのキャッシュラインが存在する場合は、ステップS33でYESとなり、追い出すページの全てのModifiedのキャッシュラインをフラッシュし(ステップS34)、処理は、終了する。
図6に示すように、キャッシュリードの処理が開始されると、仮想インデックスで引いたステートメモリ24の出力が、仮想ページのオフセットとブロックオフセットにより選択され(ステップS41)、TLBヒットしているページのキャッシュステートの出力が選択される(ステップS42)。
キャッシュヒットしているか否かが判断され(ステップS43)、キャッシュヒットしていない場合は、TLBの物理ページ番号から物理アドレスを生成してメモリアクセスが行われる(ステップS44)。そして、得られたデータをキャッシュメモリに取り込み(ステップS45)、CPU11へのデータの送信が行われる(ステップS46)。
キャッシュヒットしている場合は、ステップS43でYESとなり、仮想インデックスで引いたデータメモリの出力が、TLBからのウェイ番号(WN)で選択されて、処理は、ステップS46に進む。
以上が、プロセッサシステム1の処理の内容であり、次に、TLBヒットとTLBミスヒットの場合の動作について、図2に基づいて説明する。
(TLBヒットの場合)
まず、上述したように、CPU11からキャッシュメモリ12へ仮想アドレス31とプロセス番号(PID)が入力される。TLB仮想ページメモリ21では、入力された仮想アドレス31中の仮想ページインデックス(EP_Index)(15:12)を用いて、各ウェイのデータが選択される。そして、選択されたデータの中で、TLB仮想ページメモリ21は、入力された仮想アドレス31に関わるプロセスの識別子であるプロセス番号(PID)と、入力された仮想アドレス31中の仮想ページタグ(EA_Tag)としての上位ビット(31:12)とが、それぞれTLB仮想ページメモリ21のプロセス番号(PID)と仮想ページ(EP)とに一致する場合に、比較器21aから、一致したウェイ番号(WN)をヒット信号として出力する。比較器21aでは、各TLB仮想ページメモリからの4つの出力と、仮想アドレス31の上位ビット(31:12)及びプロセス番号(PID)が比較される。なお、一致しない場合には、不一致を示すノンヒット信号が出力される。
ここで、TLB仮想ページメモリ21の仮想ページ(EP)が、仮想ページインデックス(EP_Index)を含むようにしているのは、仮想タグとして使用されるためである。
TLB物理ページメモリ22では、入力された仮想アドレス31中の仮想ページインデックス(EP_Index)(15:12)を用いて、各ウェイのデータ、すなわち物理アドレスのページ番号が選択される。後述するように、キャッシュミスが発生したり、他のキャッシュを無効化したりする場合を除き、TLB物理ページメモリ22に保持されている物理ページ情報は使わないので、TLB物理ページメモリ22の情報が必要になってから、TLB物理ページメモリ22へのアクセスを開始するような実装にしても構わない。
データメモリ23では、上述した仮想アドレス31中の9ビット(15:7)とブロックオフセット(ビット(6:2))とを用いて、各ウェイのデータ、すなわちキャッシュブロックのデータが選択される。すなわち、入力された仮想アドレス31中のブロックオフセット(6:2)を用いて、マルチプレクサ23aは、1ブロックすなわち1ライン(128バイト)の中の、1つのデータ(32ビット)を選択する。よって、データメモリ23からは、4つのウェイから4つのキャッシュブロックデータが出力され、マルチプレクサ23aからは、4つのウェイに対応する4つのデータ(それぞれが32ビット)が出力される。
また、キャッシュステートメモリ24では、上述した仮想アドレス31中の9ビット(15:7)を用いて、各ウェイのキャッシュブロックの状態データ(キャッシュステートのデータ)を選択し、出力する。
よって、プロセッサコアとしてのCPU11からのDRAM13へのメモリリードアクセスがあると、次のように動作する。
まず、仮想アドレス31中の仮想ページインデックス(EP_Index)(15:12)を、TLBインデックスとして、TLB仮想ページメモリ21がアクセスされる。すなわち、TLB仮想ページメモリ21では、仮想アドレス31中のビット (15:12) をTLBインデックスとして、仮想アドレス(31:16)およびプロセス番号(PID)とCPU11からのプロセス番号(PID)及び仮想アドレス31中の仮想ページインデックス(EP_Index)(15:12)とが、一致するエントリを検索する。
TLB仮想ページメモリ21は、その一致したエントリのあるウェイの有無と、有る場合には、そのウェイ番号(WN)を出力する。一致するエントリがない場合は、TLBミスとして扱われる。
以下、一致するエントリが存在する場合について記述し、TLBミスの場合については後で記述する。
一方、仮想アドレス31中のビット (15:7) を、キャッシュインデックスとして、L1 キャッシュであるデータメモリ23がアクセスされる。そして、ブロックオフセット(6:2)がマルチプレクサ23aに入力される。
上述したように、データメモリ23の各ウェイからのデータが出力される。本実施の形態の構成では、32ビット幅でCPU11にデータが渡されるので、仮想アドレス31中のブロックオフセット(6:2)を用いて、それぞれのウェイの出力から、1つの32ビット幅のデータが、マルチプレクサ23aにより選択される。
そして、TLB仮想ページメモリ21から出力されたウェイ番号(WN)を用いて、セレクタであるマルチプレクサ23bにより、ヒットしたウェイのデータだけが選択されて出力される。
そして、CPU11は、出力された128バイトの中の32ビットデータが読み出される。
また、データメモリ23からデータが出力されるのと同時に、ステートメモリ24の各ウェイからキャッシュステートのデータが出力される。
そして、ステートメモリ24も、TLB仮想ページメモリ21から出力されたウェイ番号(WN)を用いて、セレクタであるマルチプレクサ24bにより、ヒットしたウェイのデータだけを選択して出力する(図6のステップS42)。
ステートメモリ24から出力された状態(キャッシュステート)が、invalid 以外であれば、L1キャッシュとしてのデータメモリ23から出力されたデータは使用できるので(図6のステップS47)、CPU11へ出力する(図6のステップS46)。状態(キャッシュステート)が invalidであれば、後述するキャッシュミスの処理動作を行う(図6のステップS44)。
このように、TLB、キャッシュともにヒットする場合には仮想アドレス(EA)だけで処理を進めることができる。すなわち、TLB、キャッシュともにヒットする場合には、TLB物理ページメモリ22は使用する必要はない。
次にキャッシュミスの場合について説明する。
TLBヒット時にキャッシュミスが発生した場合には以下の動作が追加される。TLBヒット時にキャッシュミスが発生する場合とは、TLBヒットはしているが、キャッシュステートがinvalidであるため、キャッシュのデータのDRAM13からの読みだしが必要な場合である。
TLB物理ページメモリ22は、仮想アドレス31の仮想ページインデックス(EP_Index)(15:12)をインデックスとしてアクセスされ、TLB物理ページメモリ22も4ウェイセットアソシアティブ形式なので、4つの物理ページ番号(39:12) を出力する。
マルチプレクサ22bは、TLB仮想ページメモリ21からのウェイ番号(WN)を用いて、出力された物理ページ番号から一つを選択する。
その選択された物理ページ番号(39:12)に、CPU11からのリード要求のあった仮想アドレス31中の下位ビット(11:0) を結合して物理アドレスRA(39:0) を生成し、CPU11とのバスにその物理アドレスRAを用いて、DRAM13へリード要求が送られ(図6のステップS46)、データが得られると、そのデータは、データメモリ23の対応する領域に書き込まれる。
(TLBミスヒットの場合)
TLB ミス時には以下の動作が追加される。
該当する仮想ページが載っているPTE(ページテーブルエントリ)がメインメモリであるDRAM13からロードされる(図4のステップS11)。そして、物理ページ番号(real address page number)がTLB物理ページCAM25に入力され、同一の物理ページ番号が存在するかがチェックされる。
同一物理ページ番号がない場合は、次の登録処理が行われる(図4のステップS17以降)。
すなわち、上述した読み出されたPTE(ページテーブルエントリ)から仮想ページ番号をもとめ、TLB 仮想ページメモリ21、TLB物理ページメモリ22及びTLB物理ページCAM25に対するデータの登録が行われる(図4のステップS18、図5のステップS31)。
同一物理ページ番号がある場合(すなわちエイリアスがある場合)は、次の処理が行われる。
TLB物理ページCAM25中に同一の物理ページ番号が存在するので、TLB物理ページCAM25は、同一物理ページ番号が存在する仮想ページインデックス(EP_Index)と、ウェイ番号(WN)を出力する。
出力された仮想ページインデックス(EP_Index)が、PTE(ページテーブルエントリ)から求められた仮想ページ番号の仮想ページインデックス(EP_Index)と一致する場合、一致したエントリに対して以下の書き換えが行われる(図4のステップS22)。
まず、TLB仮想ページメモリ21では プロセス番号(PID)と仮想ページ(EP)を書き換え、対応するReference(R)のビットを立てる。そして、その他の必要な情報は変更も行われる。
そして、TLB物理ページメモリ22とTLB物理ページCAM25は、物理ページ番号が一致しているので、書き変えない。
さらに、キャッシュステートメモリ24とデータメモリ23の内容は、キャッシュの内容を引き継ぐので書き換えない。
出力された仮想ページインデックス(EP_Index)が、 (PTE(ページテーブルエントリ)から求められた仮想ページ番号の仮想ページインデックス(EP_Index)と一致しない場合、以下の処理が行われる(図4のステップS21)。
TLB物理ページCAM25から出力された仮想ページインデックス(EP_Index)と、ウェイ番号(WN)を対応するエントリ、すなわちエイリアスが発生している1つのTLBエントリの無効化が行われる。無効化処理には、対応する仮想ページのキャッシュフラッシュが含まれる。
さらに、エイリアスが発生している他方のTLB エントリの無効化も行われる。この無効化処理にも、対応する仮想ページのキャッシュフラッシュが含まれる。
上記2つのTLBエントリの無効化が終わったら、PTE(ページテーブルエントリ)から求められたTLBエントリに対して、所定の登録処理が行われる。
具体的には、TLB仮想ページメモリ21へプロセス番号(PID)と仮想ページ(EP)が登録される。さらに、PTE(ページテーブルエントリ)のダーティビット(Dirty bit)の書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
そして、TLB物理ページCAM25 において、PTE(ページテーブルエントリ)から求められたTLBエントリに物理ページ(RP)を書き込み、Valid(V)ビットをたてる。さらに、TLB 物理ページメモリ22において、PTE(ページテーブルエントリ)から求められたTLBエントリに物理ページ(RP)を書き込む。
また、同一物理ページ番号がない場合(すなわちエイリアスがない場合)は、次の処理が行われる(図4のステップS18、図5のステップS32)。
PTE(ページテーブルエントリ)から求められたTLBエントリの無効化が行われる。無効化処理には、対応する仮想ページのキャッシュフラッシュが含まれる。
TLBエントリの無効化が終わったら、PTE(ページテーブルエントリ)から求められたTLBエントリに、所定の登録処理が行われる(図4のステップS19)。
具体的には、TLB仮想ページメモリ21へプロセス番号(PID)と仮想ページ(EP)が登録される。さらに、PTE(ページテーブルエントリ)のダーティビット(Dirty bit)の書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
そして、TLB物理ページCAM25 において、PTE(ページテーブルエントリ)から求められたTLBエントリに物理ページ(RP)を書き込み、Valid(V)ビットをたてる。さらに、TLB 物理ページメモリ22において、PTE(ページテーブルエントリ)から求められたTLBエントリに物理ページ(RP)を書き込む。
次にキャッシュスヌープについて説明する。キャッシュスヌープは、ハードウェア回路であるスヌーパによって、以下のように行われる。スヌーパは、キャッシュメモリ12とDRAM13間のバスのデータを監視する。
スヌープに使うTLB物理ページCAM25とステートメモリ24は、TLB登録用と、CPU11からのアクセス用とに共用される。
バスにコヒーレントトランザクションが流れると、検出された物理アドレス(39:12)をTLB物理ページCAM25に入力し、対応する仮想ページ(EP)がTLB仮想ページメモリ21に登録されているかが、チェックされる。
対応する仮想ページ(EP)があれば、TLB仮想ページメモリ21の仮想ページインデックス(EP_Index)とウェイ番号(WN)が得られる。
なお、対応する仮想ページ(EP)がTLB仮想ページメモリ21になければ、L1キャッシュにデータは存在しないのでスヌープ処理はその後何もしない。
対応する仮想ページ(EP)があれば、得られた仮想ページインデックス(EP_Index)とウェイ番号(WN)をキャッシュステートメモリ24に入力して、キャッシュステートのチェックが行われる。
得られたキャッシュステートと、トランザクションの種類に応じて、所定の処理が実行される。
なお、本実施の形態では、TLB物理ページCAM25とTLB物理ページメモリ22は、別々のメモリとして構成されているが、次の3つの場合を除き、アクセスされることはないので、物理的に同じメモリに含まれるように構成しても良い。その3つの場合は、キャッシュミス の場合(すなわち、TLB物理ページメモリ22のみアクセスされる)、TLB ミス時 (TLB物理ページCAM25がアクセスされてエイリアスがチェックされ、新しい TLB エントリ登録時に TLB物理ページCAM25とTLB物理ページメモリ22に登録される)、及びスヌープ時 (TLB物理ページCAM25のみアクセスされる)である。
さらになお、本実施の形態の仮想アドレスキャッシュメモリによれば、異なるプロセッサで実行する複数のプロセスで共有するメモリ空間の場合であっても、仮想アドレスのページに制約はない。
さらに、上述した本実施の形態は、セットアソシアティブ方式のキャッシュであるが、ダイレクトマップ方式のキャッシュにも適用できることは言うまでもない。
以上のように、上述した実施の形態のキャッシュメモリによれば、それぞれが仮想アドレスの上位ビットの一部(ここでは仮想ページインデックスとページオフセット)をインデックスとするキャッシュステートメモリとデータメモリを設けたので、従来のような複雑な回路構成でなく、TLBの機能をキャッシュメモリ上で実現し、かつエイリアスの問題を解消することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について説明する。
第2の実施の形態に係る仮想アドレスキャッシュメモリの基本的な構成は、上述した第1の実施の形態と同じであるが、エイリアスを検出した場合の動作が異なる。
本実施の形態では、エイリアスが検出された場合、第1の実施の形態では、図4のステップS17以降に示すように、エイリアスを起こしたTLBエントリの無効化処理が行われた。
これに対して、本実施の形態では、ステップS21の処理は行わない。すなわち、エイリアスを起こしたTLBエントリの無効化は行わずに新しいエントリが登録される。本実施の形態では、同一プロセッサのキャッシュ、TLB内部でエイリアスは発生しているが、スヌーピングによるキャッシュコヒーレンス制御を同一プロセッサにも適用することでエイリアスを解決する。すなわち、エイリアスを起こしているアドレスはL1キャッシュ内で複数存在しているが、エイリアスを起こしているそれぞれのキャッシュラインにコヒーレンスプロトコルを適用することで、複数のキャッシュラインの状態のコヒーレンシが保持される。
例えば、プロセスAが書き込んだ物理アドレスをプロセスBが読み出すと、以下のような動作が行われる。プロセスAが書き込んだ直後に同一プロセッサ上のプロセスBが読みだそうとしているケースを考える。プロセスAの仮想アドレスからみると、キャッシュステートはModifiedであり、プロセスBの仮想アドレスからみると、キャッシュステートは Invalid である。
プロセスBからみるとそのアドレスはキャシュ上invalid状態に見える。キャッシュミスなので、図6のステップ S44に進んでメインメモリであるDRAMのアクセスが行われる。
このDRAMへのアクセスに対して、スヌープが行われる。すなわち、図2のTLB物理ページCAM25をアクセスし、プロセスAが管理するTLBエントリがヒットする。プロセスAが書き込んだキャッシュラインがアクセスされ、Modifiedレスポンスが返されて、データが出力される。プロセスAが管理するキャッシュラインはSharedステートになる。CPU11は、プロセスAが出力したModifiedレスポンスとデータを受け取る。リクエストを出したプロセスBが管理するキャシュラインが取り込まれ、キャッシュステートはSharedにされる。
本実施の形態では、同一プロセッサ上で時分割で実行されているプロセスAとプロセスBが、あたかも別々のプロセッサで実行されているかのような動作をする。
なお、本実施の形態の構成の場合、TLB物理ページCAM25ではマルチヒットが許される。具体的には、TLB物理ページCAM25のヒット出力は、エントリ毎に1ビットが割り当てられ、エンコードされない。また、TLB物理ページCAM25がマルチヒットを許すことに対応して、キャッシュステートメモリ24は、全エントリの同時アクセスを可能とする。具体的には、キャッシュステートメモリ24は、SRAMではなく、通常のロジック回路により構成される。そして、キャッシュステートメモリ24からの出力は、コヒーレントバスのステートのようにプライオリティーエンコーダなどでエンコードされる。ステートのエンコードには、ステート毎に1ビットを割り当てるようにキャッシュステートをエンコードし、ステートメモリ24のエイリアスを発生している全てのエントリからの論理ORをとって、ステートメモリ24としてのステートを得る、などの方法を用いても良い。
本実施の形態の仮想アドレスキャッシュメモリによれば、第1の実施の形態の構成と同様の効果が得られると共に、エイリアスを起こしたTLBエントリの無効化処理を省くことができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態について説明する。
第3の実施の形態に係る仮想アドレスキャッシュメモリの基本的な構成は、上述した第2の実施の形態と同じであるが、第3の実施の形態では、エイリアスを起こしているTLB仮想ページメモリ21のインデックスと、登録しようとしているインデックスが一致しても TLB エントリを書き換えない。つまり、エイリアスを起こしているTLB 仮想ページメモリ21の各エントリは完全に独立した制御となり、TLB でのエイリアス処理をなくして、エイリアスを起こしているエントリ間の整合性はキャッシュコヒーレンス機構に任せられる。
すなわち、第3の実施の形態は、第2の実施の形態とは、構成は略同じで、エイリアスを検出した場合にTLB仮想ページメモリ21のインデックスのチェックを行わない点で、異なっている。
本実施の形態のTLBエントリ登録処理では、図4のステップS17、S20、S21及びS22の処理が除かれ、ステップS16及びS24の処理の後に、ステップS18及びS19の処理が実行される。
なお、本実施の形態の構成の場合、ハードウェア構成上の制約は第2の実施の形態と同じで、TLB物理ページCAM25でのマルチヒットが認められ、キャッシュステートメモリ24は、複数のエントリを同時にアクセスすることができる。
本実施の形態によれば、TLBエントリが完全に独立して行われ、同一プロセッサで実行される複数のプロセスは、異なるプロセッサで実行されるのとまったく同じ動きとなる。
よって、本実施の形態は、上述した第2の実施の形態と同様の効果を有し、複数のプロセスを実行する時にそれぞれのプロセスのTLBエントリが無効化されないので、TLBミスのオーバーヘッドは小さくなる。
(第4の実施の形態)
次に、本発明の第4の実施の形態について説明する。
第4の実施の形態に係る仮想アドレスキャッシュメモリは、フルアソシアティブキャッシュである。
図7は、本実施の形態に係るキャッシュメモリの構成図である。
図7に示すように、TLBCAM21Aと、TLB物理ページメモリ22Aと、データメモリ23Aと、キャッシュステートメモリ24Aとを含んで構成されている。
例えば、キャッシュ容量 256kB、キャッシュラインサイズ 128バイトのフルアソシアティブキャッシュを 4kB ページサイズ単位で管理する構成となっている。TLBで管理していたページ情報を10bit、キャッシュラインの状態も10ビット持つと仮定する。
このとき、本実施の形態の TLBCAM21Aのサイズは物理アドレス、仮想アドレスをそれぞれ40ビット, 32ビットとすると、
物理ページ番号 40ビット - 12ビット = 28ビット、
仮想ページ番号 32ビット - 12ビット = 20ビット、
エントリ数 256KB / 4KB = 64 エントリ、
であるから、
TLB サイズ= (物理ページ番号 + 仮想ページ番号 + 状態ビット) * エントリ数
= (28+20+10) * 64
= 3712ビット
L1 キャッシュのステートメモリ(従来のタグメモリに相当する)のサイズは、キャッシュのリプレースをページ単位で行うように制限したのでエントリ数が大幅に減少する。
すなわち、
エントリ数 = 256KB / 4KB = 64 エントリ、
(64エントリ = アドレス 6ビット)、
Index ビット数= ウェイあたりのエントリ数 = 6ビット、
Tag ビット数= 物理アドレス空間 - ( エントリ数 + ラインサイズ)
= 40ビット - ( 6ビット + 12ビット)
= 40ビット - 18ビット
= 22ビット
であり、この構成で必要なのは物理ページ情報であり仮想ページ情報は不要なので、
L1 Tag メモリサイズ
= ( Tag ビット数 ) * エントリ総数
+ (状態ビット数*ページ内のライン数 * エントリ総数
= ( 22 ビット*64) + 10 ビット*64 * 32 )
= 1408 + 20480 ビット
= 21888 ビット
となる。
よって、次の条件、
L1 サイズ 256kB、full set associative (ただし、管理は 4kB )、
TLB エントリ数 64 エントリ full associative、
最小ページサイズ 4kB、
仮想アドレス/物理アドレスサイズ 32bit/40bit、
L1 ラインサイズ 128 Byte、
において、 TLBCAM21Aは、約4000ビット、 L1 ステートメモリであるキャッシュステートメモリ24Aは約22000ビット、合計で約26000ビットのメモリしか必要としない。
従来よりも少ないメモリでL1キャッシュを管理できることができる。容量あたりのタグとTLBの容量が減るのは、L1 キャッシュのタグがページ番号に関連づけられたことによって省略可能となったためである。
次に性能面でのメリットを考えると、同一プロセッサで(互いに独立した仮想アドレス空間をもつ)2つのプロセスが動き、この2つのプロセスが同一の物理アドレスページを共有してデータの受け渡しを行っている状況を考える。2つのプロセスをそれぞれプロセスA,プロセスBとし、共用している物理ページを RP_1、これに対応するプロセスA、プロセスBの仮想ページをEP_1A, EP_1B とし、プロセスAが更新したページをプロセスBが読み出す場合を考える。
プロセスAに対しては、このページは書き込み許可が出されているが、プロセスBに対してはこのページは書き込み許可は出されていないものとする。ページテーブルは予め作成されており、プロセスAがプロセスBに渡すデータの作成を始めるまで、この物理ページは使用されていなかったものとする。また、プロセスAはプロセスBが使用するデータを作成し終わると閉じられ、プロセスBが呼び出されるものとする。また、キャッシュはライトアロケート、ライトバック方式を採用しているものとする。
以下、図8と図9を用いて、共有メモリリードと共有メモリライトを説明する。図8は、本実施の形態における共有メモリリード時のフローチャートである。図9は、本実施の形態における共有メモリライト時のフローチャートである。
プロセスAがプロセスBに渡すデータの作成を開始するとき、仮想インデックスでTLBをアクセスするが、図9のステップS122でTLB ミスが発生するので、物理ページ RP_1 を仮想ページ EP_1A に関連付けるページテーブルエントリが TLB に呼び出される(ステップS123)。このとき、 TLB の Valid ビットが セットされ、ページ内の各キャッシュラインの状態は invalid である。プロセスAに対しては、このページの write bit が立っているのでプロセスAはこのページに書き込むことができる。また、プロセス開始時にはこのページに対して書き込みは行っていないのでこのページは clean であるが、メモリライトでアクセスしているのでページのdirtyビットをたてる(ステップS135)。
ライトアロケート方式なので、書き込まれるキャッシュラインを主記憶から読みだし(ステップS44)、このキャッシュラインの状態をvalid, dirty として TLB を書き変える。以後、プロセスAによるキャッシュへの書き込みがキャッシュヒットするとキャッシュ上のデータの更新が行われ、キャッシュミスすると主記憶からデータをキャッシュにアロケートした上でキャッシュの更新が行われる。ライトアロケート方式であるので、キャッシュラインの一部のみ更新しても、該当キャッシュラインは最新の状態を保っている。
プロセスAによるページへの書き込みが終わり、プロセスAからプロセスBに切り替わった状態を考える。プロセスBが立ち上がるまで、物理アドレス RP_1 はアクセスされることなく、また、L1キャッシュからも追い出されていないものとする。プロセスBが物理アドレス RP_1 をアクセスすると、プロセスID が異なるため仮想アドレスはミスするが(ステップS102)、物理アドレスはヒットする(ステップ108)。そこで、TLB はページの valid bit と dirty bitは書き変えずに、仮想ページ番号を EP_1A から EP_1B に、プロセスIDをプロセスAからプロセスBに変更する、プロセスBに対しては write bitを落とすなど、プロセス切り替えのために必要な操作を行う(ステップS111)。このとき、書き換えるのはページ情報のみで、キャッシュライン情報は書き変えないし、キャッシュフラッシュも行わない。
プロセスBが仮想アドレス空間EP_1Bを指定して物理アドレス空間 RP_1 をアクセスする場合を考える。上記のように TLB のプロセスID,仮想ページ情報が書き換えられているが、TLB 上のページテーブルは保持されており、L1キャッシュの内容も保持されているので、プロセスAが書き込んだ情報をプロセスBはキャッシュから読みだすことができる。同一ページ内でプロセスAが書き込んでいない領域に関しては、キャッシュラインの状態が invalid であるのでキャッシュミスは発生するものの、メモリからデータをキャッシュにアロケートすることで正しいデータを読み出すことができる。
このように、プロセスBは不要なキャッシュミス、TLBミスを起こすことなく、プロセスAとの共用データをキャッシュから読みだすことができる。
他の TLB ミスのためにRP_1 がリプレース対象になった場合など、TLBを invalidate する必要である場合には、以下の動作を行うことでシステムが正しい動作をすることを保証することができる。図10は、本実施の形態におけるTLBミス処理時のフローチャートである。図11は、本実施の形態におけるTLB登録処理時のフローチャートである。
本実施の形態のTLBエントリを見ると、キャッシュラインが valid かる dirty なものがdirty なデータをもつキャッシュラインがわかる。そのキャッシュラインを主記憶に書き戻し、該当キャッシュラインのvalid ビットを落とす。
また、該当 ページに dirtyなキャッシュラインがなくなるまで キャッシュフラッシュを行う。また、ページ内の キャッシュフラッシュが終わるとページをinvalidにする。
リプレース対象のページテーブルエントリを TLB に登録する。
本実施の形態では、TLBミスした場合に、「TLB上にRPがHitするエントリが存在するか」のチェックが追加され(ステップS108,S128)、存在した場合にTLBエントリの一部を書き換える処理(ステップS111,S131)が追加されている。従来はTLBミスが発生すると無条件でTLBミスとTLB登録という非常に重い処理が発生した。また、プロセスBが共有メモリへのアクセスを始めると、共有メモリ空間に対しては必ずプロセスAのTLBエントリの無効化と、そのエントリで示されるページ内のキャッシュフラッシュという重い処理が発生した。これに対し、本実施の形態によれば、TLBエントリを書き換えるという比較的軽い処理が呼び出される可能性が高くなっている。
なお、本実施の形態において、キャッシュステートをページ単位で管理することも可能である。キャッシュステートをページ単位で管理する場合、キャッシュステートメモリ24Aをページオフセット毎に持たずにページ全体で一組持つ構成にする。すなわち、ページオフセット(0~31)のデコードをせずに、コヒーレンシプロトコル、たとえば MESI の状態をページ全体で一組だけ持つ。ページ単位でキャッシュステートを管理する場合にも、データメモリは、図7(及び後述する図12)と同様にアドレス (11:0) のようにページ内のオフセットをデータメモリに与えてアクセスされる。すなわち、キャッシュのステートメモリ以外は全く同じ構成で実装することができる。
以上のように、本実施の形態の仮想アドレスキャッシュメモリによれば、フルアソシアティブ方式においても、第1の実施の形態の構成と同様の効果を得ることができる。
(第5の実施の形態)
次に、本発明の第5の実施の形態について説明する。
第5の実施の形態に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
図12は、本実施の形態に係るキャッシュメモリの構成図である。
図12に示すように、TLBCAM21Bと、TLB物理ページメモリ22Bと、データメモリ23Bと、キャッシュステートメモリ24Bと、TLB物理ページCAM25Bを含んで構成されている。
本実施の形態では、TLB物理ページCAM25Bにより、スヌープが行える構成となっている。
本実施の形態では、プロセッサコア側からの仮想アドレスでのアクセスはスヌープ機構のない第4の実施の形態とほぼ同様であるので、説明を省略する。プロセッサバスからの物理アドレスでのアクセスがあると、以下のような手順でキャッシュ状態のチェックを行う。
プロセッサバスの物理アドレスのページ番号にあたるビット(39:12)をTLB物理ページCAM25Bに入力する。TLB物理ページCAM25にマッチする物理ページがあれば、TLB物理ページCAM25はエントリ番号を出力する。マッチする物理ページがなければ、スヌーはプ終了する。
エントリ番号でキャッシュステートメモリ24Bをアクセスする。このとき、CPU11からのアクセスと競合したら、スヌープを優先する。
キャッシュステートメモリ24Bでキャッシュ状態をチェックする。要求されたリクエストとキャッシュステートに応じてスヌープレスポンスを決め、キャッシュステートを更新する。キャッシュステートが、MESIの Modified などで、データ転送が必要であれば、データ転送を行う。
CPU11からのリクエストに対し、本構成のキャッシュは次のようにスヌープリクエストを出力する。
CPU11からの仮想アドレス31中のビット(11:7) で キャッシュステートメモリ24Bをアクセスし、キャッシュステートをチェックする。キャッシュはフルアソシアティブなので64個の候補がある。
同時に仮想アドレス31のビット(31:12)のページ番号およびプロセス番号(PID )を使って TLB仮想ページCAM21Bをアクセス。一致するエントリがないか、チェック。ある場合にはエントリ番号を出力する。無い場合には、TLB ミスの処理を行う。TLBミスについては既に説明したので省略する。
TLB ヒットの場合、TLB 仮想ページCAM21Bのエントリ番号出力を使ってキャッシュステートメモリ24Bからキャッシュステートを選択する。キャッシュがMもしくはEの場合、スヌープは不要である。それ以外の場合、プロセッサコアであるCPU11からの要求とキャッシュステートに応じて、必要ならスヌープ要求を出す。
スヌープが必要な例としては、ステートに対するライト、あるいは、TLBヒット条件下でのキャッシュミスがある。
スヌープ対応構成では、スヌープは TLB物理ページCAM25Bを用いてスヌープ対象のアドレスがキャッシュに存在するかチェックする。TLB 物理ページCAM25BはTLB ミス時にTLBに該当エントリが存在するかのチェックと共用であるが、TLBミスは頻発しないのでスヌープと共用してもオーバーヘッドは小さい。一方、キャッシュステートメモリ24Bはデータキャッシュアクセスの度に参照されるので頻繁にアクセスされるが、スヌープはTLB物理ページCAM25Bであらかじめ不要なトランザクションを除外しているのでキャッシュに存在しないはずのトランザクションのキャッシュ状態をチェックする必要がないのでオーバーヘッドは小さい。
以上のように、本実施の形態の仮想アドレスキャッシュメモリによれば、フルアソシアティブ方式においても、第1の実施の形態の構成と同様の効果を得ることができる。
(第6の実施の形態)
次に、本発明の第6の実施の形態について説明する。
第6の実施の形態に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
図13は、本実施の形態に係るキャッシュメモリの構成図である。
図13に示すように、TLBCAM21Cと、TLB物理ページメモリ22Cと、データメモリ23Cとを含んで構成されている。
本実施の形態では、TLB物理ページメモリ22C は、エントリ毎にキャッシュステートの情報を含む構成となっている。
以上のように、本実施の形態のフルアソシアティブ方式の仮想アドレスキャッシュメモリにおいても、第1の実施の形態の構成と同様の効果を得ることができる。
(第7の実施の形態)
次に、本発明の第7の実施の形態について説明する。
本実施の形態のキャッシュメモリは、TLB は一次TLBのほかに、二次TLBを有する。そして、二次TLBはキャッシュとはリンクされていない、あるいはページテーブルのみで変換機構を有していないメモリである。
二次TLBは、一次と同じ4ウェイもしくはそれ以上のアソシアティブで、一次より多いエントリ数かつ、一次を包含する。そして、二次TLBでdirtyやreferenceが管理される。
仮想キャッシュメモリの構成は、キャッシュは 4ウェイセットアソシアティブで、キャッシュはページ単位でリプレース管理され、キャッシュステートはキャッシュラインで管理され、エイリアス対策は以下のように行う。
例えば、仮想インデックスが一致したら、TLB の PID, 仮想ページ番号、プロテクションなどが書き換えらえる。仮想インデックスが一致しなければ、エイリアスを起こしている TLB エントリは invalidateせず、そのままにする。
また、異なる インデックス間で エイリアスが発生しているが、キャッシュライン単位でコヒーレンシ制御を行い、エントリ間のコヒーレンシはプロセッサバスのコヒーレンシ機構を使う。その結果、エントリ間はコヒーレントとなる。
(第8の実施の形態)
次に、本発明の第8の実施の形態について説明する。
本実施の形態のキャッシュメモリは、TLB登録処理をおこなうとき、登録されたTLBエントリで示されるページを低優先順位でメモリから読みだす機構を設けたメモリである。
低優先順位でのアクセス中にプロセッサが該当ページの中のキャッシュラインへのアクセスを行うとそのキャッシュラインは高優先順位でアクセスされる。
以上説明した各実施の形態のキャッシュメモリは、ハードウェアのみで実装が可能であり、OSを含むソフトウェアからは通常のキャッシュ、TLBをもつプロセッサのように見せることが可能である。
以上のように、各実施の形態のキャッシュメモリによれば、仮想記憶機構とキャッシュメモリをもつプロセッサにおいて、キャッシュを仮想記憶機構のページ単位で管理することにより、TLBとキャッシュのTagメモリを共用とすることで回路量を削減することができる。
さらに、仮想キャッシュにおけるエイリアスのチェック処理を軽減し、TLBミス時のオーバーヘッドを軽減することもできる。
特に、TLBとキャッシュメモリをもつプロセッサにおいて、キャッシュのタグは、TLBで管理するページ単位とすることにより、タグメモリはキャッシュ状態だけ保持すればよくなるのでタグメモリの容量を減らすことができる。
また、キャッシュの状態管理はキャッシュライン単位で行われるようにすることによって、プロセス起動時に、必要な部分のみ初期化すればよくなるので起動が早くなる。TLBを無効化する場合など、キャッシュフラッシュをする場合に、ページ全体でなく dirty なキャッシュラインだけフラッシュすれば良いので、TLB 無効化のオーバーヘッドが小さくなる。また、コヒーレントキャッシュを用い、かつ、共有メモリでプロセッサ間の通信を行う場合には、コヒーレントキャッシュの機構を使うことができるので、実装面、性能面で効率がよい。
また、TLBの物理アドレスのページ番号を保持したまま仮想アドレスのページ番号を書き換えることを可能にし、あるいはキャッシュ状態を保持したままTLBの仮想アドレスのページ番号を書き換えることにより、同一プロセッサで、共有メモリを使ってプロセス間通信をする場合に、オーバーヘッドの大きなキャッシュフラッシュ、TLB無効化処理をする必要がなく、共有データがキャッシュから追い出されることがなくなるので注目しているプロセスの性能が上がると同時に、システム全体としてもバスやメモリのバンド幅を浪費することがない。
また、上述したように、プロセッサバスをスヌープするためのタグメモリをもつことにより、コヒーレントなスヌーピングキャッシュ機構を利用することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本発明の第1の実施の形態に係わるプロセッサシステムの構成を示す構成図である。 本発明の第1の実施の形態に係わる、仮想アドレスキャッシュメモリとしてのキャッシュメモリの構成図である。 本発明の第1の実施の形態に係わるメモリリード時の処理の流れを説明するためのフローチャートである。 本発明の第1の実施の形態に係わるTLB登録処理の流れを説明するためのフローチャートである。 本発明の第1の実施の形態に係わるTLBミス処理の流れを説明するためのフローチャートである。 本発明の第1の実施の形態に係わるキャッシュリード時の処理の流れを説明するためのフローチャートである。 本発明の第4の実施の形態に係わるキャッシュメモリの構成図である。 本発明の第4の実施の形態における共有メモリリード時のフローチャートである。 本発明の第4の実施の形態における共有メモリライト時のフローチャートである。 本発明の第4の実施の形態に係わる、TLBミス処理時のフローチャートである。 本発明の第4の実施の形態に係わるTLB登録処理時のフローチャートである。 本発明の第5の実施の形態に係わるキャッシュメモリの構成図である。 本発明の第6の実施の形態に係わるキャッシュメモリの構成図である。
符号の説明
1 プロセッサシステム、11 CPU、12 キャッシュメモリ、13 DRAM、21 TLB仮想ページメモリ、22 TLB物理ページメモリ、23 データメモリ、24キャッシュステートメモリ、31 仮想アドレス、32 物理アドレス

Claims (16)

  1. プロセスの仮想アドレスの所定の上位ビットの仮想ページタグのうち、最下位ビットを含む複数の下位ビットを第1インデックスとして、前記仮想ページタグを含むエントリデータを保持し、プロセッサからの前記仮想ページタグが一致するとヒット信号を出力するTLB仮想ページメモリと、
    前記第1インデックス及びページオフセットを含む第2インデックスを用いて、前記第1インデックスと同一のエントリには、前記TLB仮想ページメモリと同一の仮想ページタグに対応するキャッシュデータを保持するデータメモリと、
    前記第2インデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
    を有することを特徴とする仮想アドレスキャッシュメモリ。
  2. 前記データメモリは、前記プロセスの実行を管理するオペレーティングシステムの仮想ページ単位で、前記キャッシュデータのリプレースを行うことを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  3. 前記キャッシュステートメモリのキャッシュステート管理は、ページサイズより小さいキャッシュブロック単位で行われることを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  4. 前記データメモリの前記キャッシュデータのコヒーレンシを保持するためのスヌープ機構を有することを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  5. プロセスの仮想アドレスの所定の上位ビットの仮想ページタグのうち、最下位ビットを含む複数の下位ビットを第1インデックスとして、前記仮想ページタグを含むエントリデータを保持するTLB仮想ページメモリ中の前記エントリデータにおける前記仮想ページタグと、プロセッサからの前記仮想ページタグが一致するとヒット信号を出力し、
    前記ヒット信号が出力されると、前記第1インデックス及びページオフセットを含む第2インデックスを用いて、前記第1インデックスと同一のエントリには、前記仮想ページメモリと同一の仮想ページタグに対応するキャッシュデータを保持するデータメモリと、前記第2インデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリとをアクセスする、ことを特徴とする仮想アドレスキャッシュ方法。
  6. 前記仮想アドレスに加えて、プロセス識別子などの仮想アドレス以外の識別番号も比較の対象とすることを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  7. 前記データメモリに保持する前記キャッシュデータに対応する物理アドレスを保持して、該当する物理アドレスのデータを前記データメモリ中に保持しているかどうかを調べる機構を有する請求項1に記載の仮想アドレスキャッシュメモリ。
  8. 同一の前記物理アドレスを複数のエントリに登録可能であることを、特徴とする請求項7に記載の仮想アドレスキャッシュメモリ。
  9. 同一の前記物理アドレスを複数のエントリに登録可能でないことを、特徴とする請求項7に記載の仮想アドレスキャッシュメモリ。
  10. 前記仮想アドレス及び、その他の識別子などの全部または一部を選択的に比較の対象とし、指定された部分の一致のみでヒットとみなすことを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  11. 前記キャッシュステートメモリの状態に応じて該当のブロックのみのデータの入れ替えを行う機構を有することを特徴とする請求項3に記載の仮想アドレスキャッシュメモリ。
  12. 前記物理アドレスを保持する手段として、フルアソシアティブメモリを使うことを特徴とする請求項7に記載の仮想アドレスキャッシュメモリ。
  13. 前記フルアソシアティブメモリは、インデックスによる読み出しも可能なフルアソシアティブメモリを使うことを特徴とする請求項12に記載の仮想アドレスキャッシュメモリ。
  14. 前記TLB仮想ページメモリは、前記データメモリ全体を保持することを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  15. 前記TLB仮想ページメモリは、その保持するアドレスの範囲を前記データメモリ全体よりも大きくすることを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
  16. キャッシュミス時に、前記仮想アドレスと対応する物理ページを保持するTLB機構を別途持つことを特徴とする請求項1に記載の仮想アドレスキャッシュメモリ。
JP2008269940A 2008-10-20 2008-10-20 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 Expired - Fee Related JP5300407B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008269940A JP5300407B2 (ja) 2008-10-20 2008-10-20 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US12/580,732 US8949572B2 (en) 2008-10-20 2009-10-16 Effective address cache memory, processor and effective address caching method
CN2009102050381A CN101727405B (zh) 2008-10-20 2009-10-20 虚拟地址高速缓冲存储器和方法以及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008269940A JP5300407B2 (ja) 2008-10-20 2008-10-20 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法

Publications (2)

Publication Number Publication Date
JP2010097558A JP2010097558A (ja) 2010-04-30
JP5300407B2 true JP5300407B2 (ja) 2013-09-25

Family

ID=42109532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008269940A Expired - Fee Related JP5300407B2 (ja) 2008-10-20 2008-10-20 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法

Country Status (3)

Country Link
US (1) US8949572B2 (ja)
JP (1) JP5300407B2 (ja)
CN (1) CN101727405B (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239799B2 (en) * 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
JP2011095852A (ja) * 2009-10-27 2011-05-12 Toshiba Corp キャッシュメモリ制御回路
US8862827B2 (en) * 2009-12-29 2014-10-14 International Business Machines Corporation Efficient multi-level software cache using SIMD vector permute functionality
JP2011198091A (ja) * 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US8671245B2 (en) * 2010-12-27 2014-03-11 Lsi Corporation Using identification in cache memory for parallel requests
WO2012156850A1 (en) * 2011-05-19 2012-11-22 International Business Machines Corporation Managing the translation look-aside buffer (tlb) of an emulated machine
JP2013097416A (ja) * 2011-10-28 2013-05-20 Hitachi Ltd 記憶装置および計算機
US9323691B2 (en) * 2012-03-08 2016-04-26 Freescale Semiconductor, Inc. Multiple page size memory management unit
CN102662860B (zh) * 2012-03-15 2015-07-01 天津国芯科技有限公司 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
US20140059293A1 (en) * 2012-08-27 2014-02-27 Samsung Electronics Co., Ltd. Method for protecting a gpt cached disks data integrity in an external operating system environment
CN103207844B (zh) * 2013-04-18 2017-06-06 上海云间半导体科技有限公司 缓存系统及缓存访问方法
US9593571B2 (en) * 2013-05-30 2017-03-14 Schlumberger Technology Coproration Determining correct drill pipe length and formation depth using measurements from repeater subs of a wired drill pipe system
CN104298616B (zh) * 2013-07-15 2017-10-17 华为技术有限公司 数据块初始化方法、高速缓冲存储器和终端
JP6088951B2 (ja) * 2013-09-20 2017-03-01 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
TWI489279B (zh) 2013-11-27 2015-06-21 Realtek Semiconductor Corp 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
CN104699633B (zh) * 2013-12-04 2019-04-23 瑞昱半导体股份有限公司 虚拟物理地址转换系统及其管理方法
US9135184B2 (en) * 2013-12-12 2015-09-15 International Business Machines Corporation Load-through fault mechanism
CN104899159B (zh) 2014-03-06 2019-07-23 华为技术有限公司 高速缓冲存储器Cache地址的映射处理方法和装置
CN105095108A (zh) * 2014-05-06 2015-11-25 展讯通信(上海)有限公司 输入输出存储器管理单元及控制方法、装置
CN105094953B (zh) * 2014-05-09 2018-09-07 华为技术有限公司 数据访问方法及装置
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US11620220B2 (en) * 2014-07-14 2023-04-04 Via Alliance Semiconductor Co., Ltd. Cache system with a primary cache and an overflow cache that use different indexing schemes
CN105993004B (zh) * 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
JP5974133B1 (ja) 2015-03-20 2016-08-23 株式会社東芝 メモリシステム
US9830275B2 (en) * 2015-05-18 2017-11-28 Imagination Technologies Limited Translation lookaside buffer
CN106933749B (zh) * 2015-12-31 2020-10-13 北京国睿中数科技股份有限公司 应用于缓存验证系统的地址随机方法和装置
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10061712B2 (en) * 2016-05-10 2018-08-28 Oracle International Corporation Virtual memory page mapping overlays
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10579522B2 (en) * 2016-09-13 2020-03-03 Andes Technology Corporation Method and device for accessing a cache memory
US10719451B2 (en) * 2017-01-13 2020-07-21 Optimum Semiconductor Technologies Inc. Variable translation-lookaside buffer (TLB) indexing
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10831664B2 (en) 2017-06-16 2020-11-10 International Business Machines Corporation Cache structure using a logical directory
US10698836B2 (en) 2017-06-16 2020-06-30 International Business Machines Corporation Translation support for a virtual cache
CN107885596B (zh) * 2017-06-22 2021-06-15 叶雅敏 用于音视频解码、编码的高频访问内存的程序优化方法
CN107992433A (zh) * 2017-12-19 2018-05-04 北京云知声信息技术有限公司 二级缓存检测方法及装置
GB2571536B (en) * 2018-02-28 2020-03-11 Imagination Tech Ltd Coherency manager
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
CN108710584B (zh) * 2018-05-22 2021-08-31 郑州云海信息技术有限公司 一种提高tlb刷新效率的方法
US11106600B2 (en) * 2019-01-24 2021-08-31 Advanced Micro Devices, Inc. Cache replacement based on translation lookaside buffer evictions
US10936493B2 (en) 2019-06-19 2021-03-02 Hewlett Packard Enterprise Development Lp Volatile memory cache line directory tags
CN112231241B (zh) * 2019-07-15 2023-02-17 深圳市中兴微电子技术有限公司 一种数据读取方法和装置、计算机可读存储介质
CN113157606A (zh) * 2021-04-21 2021-07-23 上海燧原科技有限公司 一种缓存器实现方法、装置和数据处理设备
US11593108B2 (en) 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache footprint between multiple threads
US11593109B2 (en) 2021-06-07 2023-02-28 International Business Machines Corporation Sharing instruction cache lines between multiple threads

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288940A (ja) * 1988-05-16 1989-11-21 Nec Corp 論理アドレスキャッシュ制御方式
JPH0245847A (ja) * 1988-08-06 1990-02-15 Nec Corp 仮想アドレスキャッシュ制御装置
JPH02253356A (ja) 1989-03-28 1990-10-12 Toshiba Corp 階層キャッシュメモリ装置とその制御方式
JPH0383150A (ja) * 1989-08-28 1991-04-09 Fujitsu Ltd アドレス変換機構付キャッシュ装置の制御方式
JP2818249B2 (ja) 1990-03-30 1998-10-30 株式会社東芝 電子計算機
US5446849A (en) 1990-11-30 1995-08-29 Kabushiki Kaisha Toshiba Electronic computer which executes squash branching
JPH04235648A (ja) * 1991-01-11 1992-08-24 Nec Corp 論理キャッシュメモリ装置
JPH04328655A (ja) * 1991-04-30 1992-11-17 Toshiba Corp キャッシュメモリ
US5634027A (en) 1991-11-20 1997-05-27 Kabushiki Kaisha Toshiba Cache memory system for multiple processors with collectively arranged cache tag memories
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5826057A (en) 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5522058A (en) 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
US5530824A (en) * 1994-04-04 1996-06-25 Motorola, Inc. Address translation circuit
JP2005108262A (ja) * 1994-09-09 2005-04-21 Renesas Technology Corp データ処理装置
JPH08185359A (ja) 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
US5682495A (en) * 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US5881264A (en) 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
JP2916420B2 (ja) 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
US6161166A (en) * 1997-11-10 2000-12-12 International Business Machines Corporation Instruction cache for multithreaded processor
US6493790B1 (en) * 1998-01-30 2002-12-10 Sun Microsystems, Inc. Translation-lookaside buffer with current tracking reference circuit
JP4303803B2 (ja) 1998-04-22 2009-07-29 株式会社東芝 キャッシュフラッシュ装置
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7103748B2 (en) 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US20050027960A1 (en) * 2003-07-31 2005-02-03 International Business Machines Corporation Translation look-aside buffer sharing among logical partitions
US7093100B2 (en) * 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
JP2008226141A (ja) 2007-03-15 2008-09-25 Toshiba Corp プログラムおよび情報処理装置
JP2008262390A (ja) 2007-04-12 2008-10-30 Toshiba Corp プログラム
JP2009020696A (ja) 2007-07-11 2009-01-29 Toshiba Corp 情報処理装置及びシステム

Also Published As

Publication number Publication date
US8949572B2 (en) 2015-02-03
CN101727405B (zh) 2012-07-18
US20100100685A1 (en) 2010-04-22
JP2010097558A (ja) 2010-04-30
CN101727405A (zh) 2010-06-09

Similar Documents

Publication Publication Date Title
JP5300407B2 (ja) 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US9081711B2 (en) Virtual address cache memory, processor and multiprocessor
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
JP2839060B2 (ja) データ処理システムおよびデータ処理方法
US8782348B2 (en) Microprocessor cache line evict array
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
JP5580894B2 (ja) Tlbプリフェッチング
US6321297B1 (en) Avoiding tag compares during writes in multi-level cache hierarchy
EP3486786B1 (en) System and methods for efficient virtually-tagged cache implementation
US20070136535A1 (en) System and Method for Reducing Unnecessary Cache Operations
EP0945805A1 (en) A cache coherency mechanism
US20160140042A1 (en) Instruction cache translation management
US11734015B2 (en) Cache systems and circuits for syncing caches or cache sets
US11048636B2 (en) Cache with set associativity having data defined cache sets
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US11010288B2 (en) Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution
US11194582B2 (en) Cache systems for main and speculative threads of processors
US20140289469A1 (en) Processor and control method of processor
JP5319049B2 (ja) キャッシュシステム
US20100257319A1 (en) Cache system, method of controlling cache system, and information processing apparatus
US7685372B1 (en) Transparent level 2 cache controller
US20030033483A1 (en) Cache architecture to reduce leakage power consumption
KR100343940B1 (ko) 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지
CN116830092A (zh) 用于跟踪存储器区域的内容的修改的技术

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130430

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130618

LAPS Cancellation because of no payment of annual fees