JP2011198091A - 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム - Google Patents
仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム Download PDFInfo
- Publication number
- JP2011198091A JP2011198091A JP2010064639A JP2010064639A JP2011198091A JP 2011198091 A JP2011198091 A JP 2011198091A JP 2010064639 A JP2010064639 A JP 2010064639A JP 2010064639 A JP2010064639 A JP 2010064639A JP 2011198091 A JP2011198091 A JP 2011198091A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- cache
- data
- tlb
- virtual
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
【課題】TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができ、さらにタスク切り替えの応答性が向上したプロセッサを提供する。
【解決手段】仮想アドレスキャッシュメモリは、TLBの書き換えが発生したときにエントリデータの書き換えを行うTLB仮想ページメモリ21と、仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリ23と、キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリ24と、TLBの書き換えが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリ22と、TLBの書き換えの発生後、データメモリへの前記キャッシュデータを書き込むときに保持している物理アドレスの書き換えを行う第2の物理アドレスメモリ25とを有する。
【選択図】図9
【解決手段】仮想アドレスキャッシュメモリは、TLBの書き換えが発生したときにエントリデータの書き換えを行うTLB仮想ページメモリ21と、仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリ23と、キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリ24と、TLBの書き換えが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリ22と、TLBの書き換えの発生後、データメモリへの前記キャッシュデータを書き込むときに保持している物理アドレスの書き換えを行う第2の物理アドレスメモリ25とを有する。
【選択図】図9
Description
本発明は、仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステムに関する。
従来より、仮想記憶を採用するプロセッサでは、プロセスに固有のアドレス空間である仮想アドレス空間からプロセッサが搭載されている計算機システム全体のアドレス空間である実アドレス空間へのアドレス変換を高速に実行するため、オペレーティングシステム(以下、OSという)で管理されているページテーブルのコピーを置くための専用のキャッシュメモリであるTLB( Translation Lookaside Buffer )が搭載されている。
一方で、プロセッサは、メモリアクセスのレイテンシを隠蔽するためにメモリのデータをキャッシュメモリ(以下、キャッシュともいう)にコピーして利用している。キャッシュにコピーされたデータを保持しているメモリのデータのアドレスを特定するため、メモリのデータを保持するデータメモリのほかに、そのデータのアドレスやそのデータの状態(有効か、メモリ内容を更新したか、など)を保持するタグ(Tag)メモリを、プロセッサは、有している。タグメモリは一般にはメモリアドレスの下位ビットを、キャッシュのインデックスとし、メモリアドレスの上位ビット(Tag)やデータの状態をデータとして保持するように構成されている。
上記のアドレス変換は、プロセッサ設計においてタイミング上のクリティカルパスとなることが多い。プロセッサが階層メモリを採用する場合にはプロセッサに近い位置にあるレベル1キャッシュ(以下、L1キャッシュという)は、仮想アドレスを用いてアクセスされ、レベル2(L2キャッシュ)以降のキャッシュは、後述するエイリアス対策などのため、物理アドレスを用いてアクセスされる構成を採用する場合が多い。
アドレス変換は、命令のフェッチ、ロード命令、ストア命令によるメモリアクセスの全てにおいて行われるので、TLBミスが性能に与える影響は通常のキャッシュミスより大きくなる。そのため、TLBは、キャッシュとは別の専用メモリとして設けられる。
しかし、上述した従来のTLBとキャッシュメモリの構成には、次の問題がある。
TLBとキャッシュのタグメモリの容量に関する問題である。
TLBは、データとして仮想ページ番号と物理ページ番号、およびページ属性、ページ状態などのデータを保持する。32ビット以上の物理アドレス空間を持つプロセッサでは、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参照)。
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参照)。
(第1の課題)
また、従来は、実行タスクが切り替わるタスクスイッチが発生した場合、TLBの内容の書き換えが行われ、さらにキャッシュメモリの無効化処理が行われる。このとき、キャッシュメモリ中のデータが更新されていて、Dirtyビットが立っている場合は、主メモリへのキャッシュデータの書き戻しが行われる。
また、従来は、実行タスクが切り替わるタスクスイッチが発生した場合、TLBの内容の書き換えが行われ、さらにキャッシュメモリの無効化処理が行われる。このとき、キャッシュメモリ中のデータが更新されていて、Dirtyビットが立っている場合は、主メモリへのキャッシュデータの書き戻しが行われる。
しかし、主メモリへのデータの書き戻しに掛かる時間は、タスク切り替えの他の処理に掛かる時間に比べて極めて長いので、プロセッサにおけるタスク切り替えの応答性が悪いという問題があった。
(第2の課題)
さらに、従来より、マルチプロセッサシステムにおいて、主メモリと自己のキャッシュメモリとの間、及び各キャッシュメモリ間で、データの読み出しと書き込みが行われるシステムがある。
例えば、マルチプロセッサシステムにおいて、あるプロセッサが、演算結果を自己のキャッシュメモリに書き込むと、その演算結果データに対応する主メモリにおけるデータの値が異なってしまう。従って、他のプロセッサがその演算結果データを参照する場合、プロセッサがキャッシュメモリに書き込んだ値のキャッシュメモリから主メモリへの書き戻し、すなわちキャストアウトが行われる。この書き戻しが行われた結果、主メモリに正しいデータが格納されるので、その演算結果データを、他のプロセッサも利用できるようになる。言い換えると、マルチプロセッサシステムでは、あるプロセッサが書き換えたデータを、他のプロセッサでもそのデータを利用可能とするためには、そのデータを書き換えたプロセッサは、そのデータを、主メモリへ書き戻さなければならなかった。
さらに、従来より、マルチプロセッサシステムにおいて、主メモリと自己のキャッシュメモリとの間、及び各キャッシュメモリ間で、データの読み出しと書き込みが行われるシステムがある。
例えば、マルチプロセッサシステムにおいて、あるプロセッサが、演算結果を自己のキャッシュメモリに書き込むと、その演算結果データに対応する主メモリにおけるデータの値が異なってしまう。従って、他のプロセッサがその演算結果データを参照する場合、プロセッサがキャッシュメモリに書き込んだ値のキャッシュメモリから主メモリへの書き戻し、すなわちキャストアウトが行われる。この書き戻しが行われた結果、主メモリに正しいデータが格納されるので、その演算結果データを、他のプロセッサも利用できるようになる。言い換えると、マルチプロセッサシステムでは、あるプロセッサが書き換えたデータを、他のプロセッサでもそのデータを利用可能とするためには、そのデータを書き換えたプロセッサは、そのデータを、主メモリへ書き戻さなければならなかった。
上記書き戻しは、主メモリへのアクセスが生じるので、大きなレイテンシによるマルチプロセッサシステムのパフォーマンスの低下の原因となり、さらに入出力回路の動作により消費電力の増加の原因となる、という問題があった。
(第3の課題)
さらにまた、従来より、DMA技術が、CPUの負荷を増やすことなく、主メモリの異なるアドレス領域間あるいは主メモリと入出力装置との間でデータ転送を行うために利用されている。マルチプロセッサシステムにおいても、各プロセッサが、DMAを利用して、主メモリと自己のローカルメモリとの間で、データの転送を行う技術が実用化されている。
さらにまた、従来より、DMA技術が、CPUの負荷を増やすことなく、主メモリの異なるアドレス領域間あるいは主メモリと入出力装置との間でデータ転送を行うために利用されている。マルチプロセッサシステムにおいても、各プロセッサが、DMAを利用して、主メモリと自己のローカルメモリとの間で、データの転送を行う技術が実用化されている。
例えば、マルチプロセッサシステムにおける各プロセッサのCPUすなわちCPUコアは、対応するローカルメモリに、ロード命令及びストア命令によりアクセスし、ロード命令によりローカルメモリからデータを読み出してCPUのレジスタファイルへデータを書き込み、ストア命令によりCPUのレジスタファイルからデータを取り出してローカルメモリへ書き込む。そして、各CPUは、ローカルメモリへの主メモリからのデータの読み出し(GET)及びローカルメモリから主メモリへのデータの書き込み(PUT)を、DMAにより行っている。
DMA転送は、それぞれが物理アドレスであるソースアドレス及びデスティネーションアドレスが指定されることによってDMAコントローラにより制御される。さらに、上述したマルチプロセッサシステムにおいても、キャッシュ可能領域のDMA転送は、サポートされていない。
よって、DMA時も物理アドレスによりソースアドレスとデスティネーションアドレスが指定されるので、プログラマは、データ処理時間とデータアクセス時間とを予測した上で、各CPUで実行されるプログラムを記述することができる。
各プロセッサの処理速度を上げるために、各CPUのプロセッサにキャッシュメモリを設けることも考えられるが、キャッシュメモリを介して主メモリへのアクセスを行うようにすると、キャッシュミス時に、キャッシュヒットの場合とキャッシュミスの場合で、データのアクセス時間が異なってしまう場合があるうえに、キャッシュミス時に主メモリからキャッシュデータを転送するのに掛かる時間が予測できないという問題がある。
さらに、プログラム開発の自由度を高めるために、上述したマルチプロセッサシステムで実行可能なプログラムを仮想アドレスで実行可能にすることも考えられるが、ローカルメモリに仮想アドレスを用いたシステムにDMAが対応できない、という問題もある。
(第4の課題)
また、一般に、キャッシュメモリには、複数レベルのキャッシュメモリがあり、プロセッサは、その複数レベルのキャッシュを有するものがある。その場合、L1キャッシュの記憶容量は、L2キャッシュの記憶容量よりも小さい。一般に、レベルが上位のキャッシュの記憶容量は、下位のキャッシュの記憶容量より小さい。
また、一般に、キャッシュメモリには、複数レベルのキャッシュメモリがあり、プロセッサは、その複数レベルのキャッシュを有するものがある。その場合、L1キャッシュの記憶容量は、L2キャッシュの記憶容量よりも小さい。一般に、レベルが上位のキャッシュの記憶容量は、下位のキャッシュの記憶容量より小さい。
しかし、L1キャッシュのヒット率は、一般に高く、さらに、L1キャッシュがアクセスされると、仮想アドレスから物理アドレスへの変換のためにTLBが必ず参照される。従って、プロセッサにおいて、TLBハードウェアの消費電力は大きいものとなっていた。
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"
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"
本発明は、上述した第1の問題に鑑みてなされたもので、TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができ、さらにタスク切り替えの応答性が向上したキャッシュメモリ及びプロセッサを提供することを第1の目的とする。
もう一つの本発明は、さらに、上述した第2の問題に鑑みてなされたもので、各プロセッサによるデータの書き戻し処理に基づく主メモリへアクセス量を低減させることができるマルチプロセッサシステムを提供することを第2の目的とする。
さらにもう一つの本発明は、さらに、上述した第3の問題に鑑みてなされたもので、仮想アドレスでDMAを実行可能として、DMA転送時のキャッシュヒット率の高めることができる、あるいはDMA転送後に対応するプロセッサがアクセスしたときのキャッシュヒット率を高めることができるプロセッサを提供することを第3の目的とする。
そこで、さらにもう一つの本発明は、さらに上述した第4の問題に鑑みてなされたもので、複数レベルのキャッシュメモリを有するプロセッサにおいて、TLBの参照頻度を低くしてプロセッサの消費電力を低くすることが可能なプロセッサを提供することを第4の目的とする。
本発明の一態様によれば、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスの発生後、前記データメモリへの前記キャッシュデータを書き込むときに保持している物理アドレスの書き換えを行う第2の物理アドレスメモリと、を有する仮想アドレスキャッシュメモリを提供することができる。
本発明の一態様によれば、一貫性保持プロトコル機構を有するバスと、前記バスを介して接続され、それぞれがCPUとキャッシュメモリを有する複数のプロセッサと、前記バスに接続され、主メモリのための制御部であるメモリコントローラと、を有し、前記キャッシュメモリは、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリとを含み、前記キャッシュメモリは、前記バスを介して受信した一のプロセッサからの書き戻しデータと同じ物理アドレスが、前記第2の物理アドレスメモリ中に存在し、前記TLB仮想ページメモリにおいても有効であって、かつデータメモリの対応するデータがInvalidである場合に、前記書き戻しデータを取り込み、前記メモリコントローラは、前記一のプロセッサからの書き戻しデータが他のプロセッサのキャッシュメモリに取り込まれたときは、前記主メモリへのデータの書き戻しを行わないことを特徴とするマルチプロセッサシステムを提供することができる。
本発明の一態様によれば、バスを介して接続され、CPU、キャッシュメモリ及びDMAコントローラを有するプロセッサと、前記バスに接続され、主メモリのための制御部であるメモリコントローラと、を有し、前記キャッシュメモリは、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリ、を含み、前記CPUは、前記主メモリから前記キャッシュメモリに、前記DMAコントローラによるDMA転送によりデータ転送する場合は、前記DMA転送における転送元アドレスと転送先アドレスを仮想アドレスにより設定し、前記キャッシュメモリは、前記転送先アドレスにデータを書き込んだときは、前記キャッシュステートメモリの前記データが書き込まれた領域に対応するエントリに、Dirtyを書き込むプロセッサを提供することができる。
本発明の一態様によれば、バスを介して接続され、CPU、キャッシュメモリ及びDMAコントローラを有するプロセッサと、前記バスに接続され、主メモリのための制御部であるメモリコントローラと、を有し、前記キャッシュメモリは、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリを含み、前記CPUは、前記キャッシュメモリから前記主メモリに、前記DMAコントローラによるDMA転送によりデータ転送する場合は、前記DMA転送における転送元アドレスと転送先アドレスを仮想アドレスにより設定し、前記キャッシュメモリは、前記転送元アドレスについての前記TLBミスあるいはキャッシュミスのときは、TLBミス処理あるいはキャッシュミス処理を行わないで、前記仮想アドレスの前記転送元アドレスに対応する物理アドレスから対象データを読み出して、前記主メモリにおけるの前記転送先アドレスに対応する物理アドレスに、前記対象データを書き込むプロセッサを提供することができる。
本発明の一態様によれば、CPUと、一次キャッシュメモリと、二次あるいは三次以上のキャッシュメモリとを有し、前記二次あるいは三次以上のキャッシュメモリは、プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力するTLB仮想ページメモリと、前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、を有するプロセッサを提供することができる。
本発明の一態様によれば、上述した問題に鑑みてなされたもので、TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができ、さらにタスク切り替えの応答性が向上したキャッシュメモリ及びプロセッサを提供することができる。
さらに、本発明の一態様によれば、各プロセッサによるデータの書き戻し処理に基づく主メモリへアクセス量を低減させることができるマルチプロセッサシステムを提供することができる。
さらに、本発明の一態様によれば、仮想アドレスでDMAを実行可能として、DMA転送時のキャッシュヒット率を高めることができる、あるいはDMA転送後に対応するプロセッサがアクセスしたときのキャッシュヒット率を高めることができるプロセッサを提供することができる。
さらに、本発明の一態様によれば、複数レベルのキャッシュメモリを有するプロセッサにおいて、TLBの参照頻度を低くしてプロセッサの消費電力を低くすることが可能なプロセッサを提供することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(構成)
まず図1に基づき、本発明の実施の形態に係わるプロセッサシステムの構成を説明する。図1は、本発明の実施の形態に係わるプロセッサシステムの構成を示す構成図である。
まず図1に基づき、本発明の実施の形態に係わるプロセッサシステムの構成を説明する。図1は、本発明の実施の形態に係わるプロセッサシステムの構成を示す構成図である。
プロセッサシステム1は、中央処理装置(以下、CPUという)11と、仮想アドレスキャッシュメモリとしてのレベル1(L1)のキャッシュメモリ12と、主メモリとしてのDRAM13とを有して構成される。プロセッサシステム1は、仮想記憶機構とキャッシュメモリをもつプロセッサである。CPU11は、いわゆるCPUコアである。キャッシュメモリ12は、キャッシュメモリ制御回路を含む。キャッシュメモリ12とDRAM13は、互いにバスで接続されている。DRAM13は、図示しないメモリコントローラを介してバスに接続されている。なお、ここでは、主メモリは、DRAMの例を挙げて説明するが、他の種類のメモリであってもよい。
なお、本実施の形態では、1つのCPU11がDRAM13をアクセスする例であるが、CPU11とキャッシュメモリ12の対が複数あって、その複数の対が、システムバス等を介して、1つのDRAM13と接続されるようなマルチコアの構成でもよい。また、DRAMはアドレスによって複数のメモリに分かれていてもよいし、DRAM以外のメモリ、例えばSRAMで構成されていてもよい。
さらに、L1キャッシュであるキャッシュメモリ12とDRAM13の間に、L2キャッシュ等があってもよい。
なお、本実施の形態では、1つのCPU11がDRAM13をアクセスする例であるが、CPU11とキャッシュメモリ12の対が複数あって、その複数の対が、システムバス等を介して、1つのDRAM13と接続されるようなマルチコアの構成でもよい。また、DRAMはアドレスによって複数のメモリに分かれていてもよいし、DRAM以外のメモリ、例えばSRAMで構成されていてもよい。
さらに、L1キャッシュであるキャッシュメモリ12とDRAM13の間に、L2キャッシュ等があってもよい。
CPU11は、主メモリ13に記憶された命令あるいはデータを、キャッシュメモリ12を介して読み出して実行する。CPU11は、プログラムの実行に必要な命令あるいはデータ(以下、単にデータともいう)がキャッシュメモリ12にあれば、その命令あるいはデータを読み出してプログラムを実行する。
CPU11は、そのデータを指定するために仮想アドレスEAをキャッシュメモリ12に出力する。キャッシュメモリ12は、入力された仮想アドレスに対応するデータがキャッシュメモリ12中に存在すれば、そのデータをCPU11へ出力する。ストアされたデータがキャッシュメモリ12中に無ければ、リフィル処理によりDRAM13からそのデータを読み出してキャッシュメモリ12に書き込み、CPUコア11に出力する。
本実施の形態のキャッシュメモリ12は、キャッシュエントリリプレースを複数のプロセスの実行を管理するOSで管理する仮想ページ単位で行い、キャッシュステート管理をキャッシュライン単位すなわちキャッシュブロック単位で行う。本実施の形態のプロセッサシステムでは、キャッシュメモリ12へのアクセスは仮想アドレスにより行われ、キャッシュのコヒーレンシはスヌープ方式により行われる。スヌープ方式については、Parallel Computer Architecture -- A Hardware/Software Approach -- (1999 Morgan Kaufmann : ISBN 1-55860-343-3)by David.E.Culler, Jaswinder P. Singh and Anoop Gupta における、(p277) 5.1.2. Cache Coherence through Bus Snooping 、(p278) Figure 5.4、(p380-p393) 6.2. Base Design : Single-level Caches with an Atomic Bus、(p386) Figure 6.4、及び(p388) Figure 6.5を参照されたし。
図2は、仮想アドレスキャッシュメモリとしてのキャッシュメモリ12の構成図である。
キャッシュメモリ12は、TLB仮想ページメモリ(TLB EPメモリ)21と、TLB物理ページメモリ(TLB RPメモリ:第1の物理アドレスメモリ)22と、データメモリ23と、キャッシュステートメモリ24と、TLB物理ページCAMメモリ(TLB RP CAMsメモリ:第2の物理アドレスメモリ)25とを含んで構成される。
キャッシュメモリ12は、CPU11から仮想アドレス(EA)を入力し、DRAM13へ物理アドレス32を出力する。
キャッシュメモリ12は、TLB およびL1キャッシュとしての機能を、4ウェイセットアソシアティブ構成のキャッシュメモリにより実現している。キャッシュメモリ12のL1キャッシュとしての容量は、256KB(キロバイト。以下、同じ。)である。
各ウェイの大きさはページサイズを超えるが、仮想アドレスにページカラーリング(page coloring)は施されていない。
キャッシュメモリ12は、仮想アドレスEAを4KBのページ単位で分けた4ウェイセットアソシアティブのキャッシュで、TLBとL1キャッシュを構成する。本実施の形態では、例えば32ビットの仮想アドレス31によりL1キャッシュとしてのキャッシュメモリ12がアクセスされる。
仮想アドレスEAは、上位ビット(31:12)が仮想ページタグ(EP_Tag)であり、さらにウェイあたりのキャッシュ容量である 64KBを4KBで分割した中位ビット(15:12) が仮想ページインデックス(EP_Index。以下、TLBインデックスともいう。)である。また、ビット(11:7)はページオフセットであり、ビット(6:2)は、ブロックオフセットであり、最下位ビット(1:0)はワードオフセットである。
各ウェイのサイズ(64KB)がページサイズ(4KB)より大きいので、図2に示すように、仮想ページタグと仮想ページインデックスは、それぞれ仮想アドレスEAのビット(31:12)と(15:12)が割り当てられてオーバーラップする。
各ウェイのサイズ(64KB)がページサイズ(4KB)より大きいので、図2に示すように、仮想ページタグと仮想ページインデックスは、それぞれ仮想アドレスEAのビット(31:12)と(15:12)が割り当てられてオーバーラップする。
また、CPU11からは、プロセスを識別するための識別子としてのプロセス番号PIDもキャッシュメモリ12に入力される。
そして、CPU11は、キャッシュラインサイズ以下のデータを、キャッシュメモリ12から読み出す。ここでは、CPU11は、32ビットのデータをキャッシュメモリ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のウェイ番号を流用するような構成にしても良い。また、プロセス番号をもたないアーキテクチャのプロセッサでは、プロセス番号を用いずに仮想ページ番号だけを用いて本実施の形態の動作を行うものとする。
TLB仮想ページメモリ21の各データは、TLBインデックスとしての仮想アドレスEAの4ビット(15:12)により指定される。
TLB仮想ページメモリ21の各データは、TLBインデックスとしての仮想アドレスEAの4ビット(15:12)により指定される。
各TLB仮想ページメモリ21のプロセス番号PIDと仮想ページ番号EPと、CPU11からのプロセス番号PIDと仮想アドレスEA中の仮想ページタグEP_Tagとを比較する4つの比較器21aが設けられている。4つの比較器21aは、TLB仮想ページメモリ21の出力として、ヒット時はヒット信号としてウェイ番号WNを出力し、ヒットしなかった時はノンヒット信号を出力する。
TLB物理ページメモリ22は、ウェイ毎のTLB物理ページメモリを含む。各TLB物理ページメモリ22の各データは、仮想ページインデックスEP_Indexにより指定される。
TLB物理ページメモリ22のデータ、すなわち物理ページ番号RPは、TLB仮想ページメモリ21の各ウェイと仮想ページインデックスEP_Indexとに対応しており、仮想アドレス空間を1ページあたり4KBの単位で管理されている。
TLB物理ページメモリ22のデータは、キャッシュミス及びTLBミスの場合に使用される。TLB物理ページメモリ22は、各ウェイに対応して4つ物理アドレスページビット(39:12)を出力する。
TLB物理ページメモリ22のデータ、すなわち物理ページ番号RPは、TLB仮想ページメモリ21の各ウェイと仮想ページインデックスEP_Indexとに対応しており、仮想アドレス空間を1ページあたり4KBの単位で管理されている。
TLB物理ページメモリ22のデータは、キャッシュミス及びTLBミスの場合に使用される。TLB物理ページメモリ22は、各ウェイに対応して4つ物理アドレスページビット(39:12)を出力する。
データメモリ23は、ウェイ毎のデータメモリを含む。各データメモリ23は、各キャッシュデータを例えば128バイト単位で管理している。各データメモリ23のデータは、キャッシュインデックスとしての仮想アドレス31中の9ビット(仮想ページインデックスおよびページオフセット)(15:7)とブロックオフセット(6:2)により、指定される。
そして、CPU11からのキャッシュデータの入れ替え、すなわちデータメモリ23に対するロードあるいはストアは、ワードサイズ(32ビット単位)で行われる。システムバスでのデータの入れ替えは、キャッシュラインサイズの単位で行われる。
各データメモリ23の出力は、対応する32入力1出力のマルチプレクサ(32:1 MUX)23aに入力される。セレクタとしてのマルチプレクサ23aは、各データメモリに対応して複数(ここでは4つ)設けられている。マルチプレクサ23aは、仮想ページインデックスとページオフセットによって選択されたデータの中から、ブロックオフセット(6:2)により選択されたブロックのキャッシュデータを選択して出力する。
各データメモリ23の出力は、対応する32入力1出力のマルチプレクサ(32:1 MUX)23aに入力される。セレクタとしてのマルチプレクサ23aは、各データメモリに対応して複数(ここでは4つ)設けられている。マルチプレクサ23aは、仮想ページインデックスとページオフセットによって選択されたデータの中から、ブロックオフセット(6:2)により選択されたブロックのキャッシュデータを選択して出力する。
キャッシュステートメモリ(以下、ステートメモリともいう)24は、ウェイ毎のキャッシュステートメモリを含む。各キャッシュステートメモリ24のデータは、仮想アドレスEA中の9ビット(15:7)により指定される。キャッシュステートメモリ24は、キャッシュライン単位(キャッシュブロック単位)でキャッシュのステート管理を行うためのメモリである。
キャッシュステートメモリ24は、マルチタスクに対応するために、例えば、MESIプロトコルに基づくキャッシュブロックの状態のデータを記憶する。MESIプロトコルの場合、M(Modified)、E(Exclusive)、S(Shared)、I(Invalid)のデータが記憶される。MESIプロトコルについては、上述したParallel Computer Architecture -- A Hardware/Software Approach -- (1999 Morgan Kaufmann : ISBN 1-55860-343-3)by David.E.Culler, Jaswinder P. Singh and Anoop Guptaにおける、 (p299) 5.3.2. A Four-State(MESI) Write-Back Invalidation Protocol、及び(p301) Figure 5.15を参照されたし。
キャッシュステートメモリ24からの出力データは、データメモリ23の各データの状態、すなわちデータの有効/無効、読み出しの可否等を示すデータである。出力データは、図示しない制御回路に入力されて利用される。
TLB物理ページCAM25は、ウェイ毎のTLB物理ページCAM(Content Addressable Memory)を含む。各TLB物理ページCAMのデータは、物理ページ番号と、Validの状態情報を含む。
TLB物理ページCAM25は、TLB仮想ページメモリ21の各ウェイかつ仮想ページインデックスに対応して、物理ページ番号のデータが記憶されている。TLB物理ページCAM25のデータは、TLB仮想ページメモリ21のデータの登録時に登録される。
TLB物理ページCAM25は、TLB仮想ページメモリ21の各ウェイかつ仮想ページインデックスに対応して、物理ページ番号のデータが記憶されている。TLB物理ページCAM25のデータは、TLB仮想ページメモリ21のデータの登録時に登録される。
TLB物理ページCAM25は、他のプロセッサとデータのコヒーレンシを保つために、物理ページから仮想ページの求める逆引きと、TLBミス時のエイリアスチェックに用いられる。また、TLB物理ページCAM25と対応するエントリ番号のTLB物理ページメモリ22に登録されている両物理ページRPは同じものである。TLB物理ページCAM25もTLB物理ページメモリ22もアクセスされる頻度はTLB仮想ページメモリ21より遙かに小さいので、TLB物理ページメモリ22の機能をTLB物理ページCAM25に統合した実装としても構わない。
エイリアス問題とは、ページサイズより大きなL1キャッシュに仮想アドレスが用いられる場合、別の仮想アドレスに同一物理アドレスが割り当てられると、本来、キャッシュに存在するデータを違うアドレスとして扱ってしまい、データの不一致が発生するという問題である。
この問題を防ぐために従来より2つの方法が考案されている。一つは、TLBミスした場合にはエイリアスが発生する可能性のあるエントリをすべてチェックし、物理アドレスが一致した場合に該当する仮想ページに属するすべてのキャッシュラインをフラッシュするものである。
もう一つは、例えばOS等の仮想アドレスを管理するソフトウェアにより、複数のページを並べてアドレス空間を作成し(上記例では 256kB /4way = 64kB の領域を作るように16個の4kBページを並べて)エイリアスの発生をソフトウェア的に防止するページカラーリングと呼ばれる方法である。
もう一つは、例えばOS等の仮想アドレスを管理するソフトウェアにより、複数のページを並べてアドレス空間を作成し(上記例では 256kB /4way = 64kB の領域を作るように16個の4kBページを並べて)エイリアスの発生をソフトウェア的に防止するページカラーリングと呼ばれる方法である。
しかし、いずれの場合も、複数プロセスで同一ページを共有する場合には、TLB ミスが発生して TLB エントリの入れ替えを行うと同時に、古いプロセスで使っていたページに属するデータはキャッシュ上で一度すべて無効化し、新しいTLBを使ってもう一度ロードする必要があった。
特に、エイリアス問題は、複数プロセス間でデータを共有させるつもりでプログラミングしているにも関わらず、共有データはキャッシュ上で一度無効化され、新しい仮想アドレスで全く同じデータをキャッシュにロードしていた。これにより、該当プロセスおよびシステム全体の性能低下を引き起こし、消費電力を増大させていた。
また、DRAM13に接続されたバスに出力している物理アドレスがいわゆるスヌープ方式により監視されて、TLB物理ページCAM25に入力される。その監視されている、すなわち入力された物理アドレスの中に、TLB物理ページCAM25に登録されている同じ物理ページ番号を有する物理アドレスが検出されると、TLB物理ページCAM 25と同じエントリ番号で示されるキャッシュステートメモリ24の状態を示す状態データが変更される。すなわち、スヌープ方式のキャッシュコヒーレンシ機構を適用することにより、同一物理アドレスを持つすべてのキャッシュラインに関し、キャッシュラインの状態を示すキャッシュステートメモリ24の状態の整合性を保つことができる。また、スヌープによりMESIプロトコルのModified状態のように、DRAM13に記録されているデータよりも新しいデータをキャッシュが持っている場合など、コヒーレンスプロトコルによりキャッシュからのデータ出力が必要な場合には、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からのウェイ番号により選択されたデータを選択して出力する。
なお、本実施の形態では、CPU11はデータ幅32ビットでデータを取り出す構成にしているが、プロセッサコアの仕様次第でキャッシュラインサイズ以下の任意のデータ幅を取り出すことができる。
次に、上述したキャッシュメモリ12の動作を説明する。以下の説明の中で、プロセッサからのメモリアクセス要求と、そのメモリアクセス要求に対するスヌープ応答、スヌープレスポンスについて記載しているが、それらは商用のマルチプロセッサ用プロセッサ、たとえばIBM PowerPC 970 FX RISC Microprocessor、 に用いられているコヒーレンシ制御プロトコルと同等のものである。IBM PowerPC 970 FX RISC Microprocessorについては、参照文献としてのIBM PowerPC 970FX RISC Microprocessor User’s Manual Version1.7を参照されたし(2009年9月30日現在、次の URL より取得可能である。https://www-01.ibm.com/chips/techlib/techlib.nsf/products/PowerPC_970MP_Microprocessor)。
(メモリリード動作)
図3は、メモリリード時の処理を示すフローチャートである。図4は、TLB登録処理を示すフローチャートである。図5は、TLBミス処理を示すフローチャートである。図6は、キャッシュリード時の処理を示すフローチャートである。
図3は、メモリリード時の処理を示すフローチャートである。図4は、TLB登録処理を示すフローチャートである。図5は、TLBミス処理を示すフローチャートである。図6は、キャッシュリード時の処理を示すフローチャートである。
まず、図3から図6を用いて、プロセッサシステム1の全体的な処理を説明する。
図3に示すように、メモリリードが開始されると、仮想インデックスで、TLB仮想ページメモリ21とデータメモリ23とステートメモリ24へのアクセスが行われる(S1)。TLB仮想ページメモリ21がヒットしなかった時(S2、NO)は、リード時のTLB登録処理が実行される(S3)。TLBがヒットした時(S2、YES)は、その仮想ページはリード可能かの判断がされる(S4)。仮想ページがリード可能の場合(S4、YES)は、キャッシュリードが行われる(S5)。仮想ページがリード可能でない場合(S4、NO)は、割込処理によりプロテクト違反をCPU11通知し(S6)、OSによる例外処理が実行される。
図3に示すように、メモリリードが開始されると、仮想インデックスで、TLB仮想ページメモリ21とデータメモリ23とステートメモリ24へのアクセスが行われる(S1)。TLB仮想ページメモリ21がヒットしなかった時(S2、NO)は、リード時のTLB登録処理が実行される(S3)。TLBがヒットした時(S2、YES)は、その仮想ページはリード可能かの判断がされる(S4)。仮想ページがリード可能の場合(S4、YES)は、キャッシュリードが行われる(S5)。仮想ページがリード可能でない場合(S4、NO)は、割込処理によりプロテクト違反をCPU11通知し(S6)、OSによる例外処理が実行される。
図4に示すように、TLB登録処理が開始されると、登録するPTE(ページテーブルエントリ)が、DRAM13から読み出される(S11)。読み出したPTE(ページテーブルエントリ)が、DRAM13に存在するかが判断される(S12)。PTEが存在しない場合(S12、NO)は、OSに例外発生の通知が行われる(S13)。
PTEが存在する場合(S12、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S14)。
PTEが存在する場合(S12、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S14)。
ストア命令でない場合(S14、NO)は、このプロセスに読み出しを許可するか否かが判断される(S23)。読み出しを許可しない場合(S23、NO)は、処理はS13に進む。読み出しを許可する場合(S23、YES)は、PTEのreferenceビットを立て(S24)、処理はS17に進む。
そして、読み出したPTEと有効な全TLBエントリのいずれかと、物理ページ番号が一致したか否かが判断される(S17)。物理ページ番号が一致しない場合(S17、NO)は、TLBミス処理が実行され(S18)、新しいPTEがTLBエントリとして登録される(S19)。
また、物理ページ番号が一致した場合(S17、YES)は、一致したTLBエントリは登録するエントリと仮想インデックスとが同じか否かが判断される(S20)。同じでない場合(S20、NO)は、一致したTLBエントリのページのキャッシュフラッシュが行われ(S21)、処理はS18に進む。
同じ場合(S20、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われる(S22)。
図5に示すように、TLBミス処理が開始されると、同一の仮想インデックスに未使用のTLBエントリが存在するか否かが判断される(S31)。未使用のTLBエントリが存在する場合(S31、YES)、処理は終了する。
未使用のTLBエントリが存在しない場合(S31、NO)、追い出すTLBエントリを決定し(S32)、追い出すTLBエントリにModifiedのキャッシュラインが存在するか否かが判断される(S33)。Modifiedのキャッシュラインが存在しない場合(S33、NO)は、処理は終了する。
Modifiedのキャッシュラインが存在する場合(S33、YES)は、追い出すページの全てのModifiedのキャッシュラインをフラッシュし(S34)、処理は終了する。
同じ場合(S20、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われる(S22)。
図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)。キャッシュヒットしていない場合(S43、NO)は、TLBの物理ページ番号から物理アドレスを生成してメモリアクセス要求を発行する(S44)。このメモリアクセス要求は、PowerPC 970FX の Readトランザクション、あるいはBusRdトランザクションにおいて処理される要求と同様である。上述したIBM PowerPC 970FX RISC Microprocessor User’s Manual Version1.7におけるPowerPC 970FX の Readトランザクションの欄、及び上述したParallel Computer Architecture -- A Hardware/Software Approach --のFigure 6.5の BusRdトランザクションを参照されたし。
そして、得られたデータをキャッシュメモリに取り込む(S45)。
そして、得られたデータをキャッシュメモリに取り込む(S45)。
メモリアクセス要求は、メモリ、および他のプロセッサでスヌープされる。メモリアクセス要求をスヌープしたプロセッサは、自分の管理するキャッシュ状態をチェックし、キャッシュ状態が Modified の場合には、スヌープ応答として Modified レスポンス、キャッシュ状態が Exclusive または Shared の場合には Shared レスポンスを返すので、要求を出力したプロセッサはスヌープ応答に応じてキャッシュステートメモリ24の状態を更新する。すなわち、スヌープ応答が Shared レスポンスまたは Modifeid レスポンスであれば(S46、YES)、キャッシュステートメモリ24にある要求したキャッシュラインの状態を “Shared” に(S47)、スヌープ応答が Shared レスポンスもしくは Modified レスポンスのいずれでもなければ(S46、NO)、要求したキャッシュラインの状態を “Exclusive” に変更する(S48)。そして、CPU11へのデータの送信が行われる(S49)。
キャッシュヒットしている場合(S43、YES)は、仮想インデックスで引いたデータメモリの出力が、TLBからのウェイ番号で選択されて(S50)、処理はS49に進む。キャッシュヒットの場合には、メモリアクセス要求は発行せず、キャッシュ状態の更新も行われない。
(メモリライト動作)
図7は、メモリライト時の処理を示すフローチャートである。図8は、キャッシュライト時の処理を示すフローチャートである。
図7に示すように、メモリライトが開始されると、仮想インデックスで、TLB仮想ページメモリ21とデータメモリ23とステートメモリ24へのアクセスが行われる(S61)。TLB仮想ページメモリ21がヒットしなかった時(S62、NO)は、ライト時のTLB登録処理が実行される(S63)。TLBがヒットした時(S62、YES)は、TLBヒットの判断となり、その仮想ページはライト可能かの判断がされる(S64)。ライト可能の場合(S64、YES)は、キャッシュライトが行われる(S65)。ライト可能でない場合(S64、NO)は、割込処理によりプロテクト違反をCPU11に通知し(S66)、OSによる例外処理が実行される。
図7は、メモリライト時の処理を示すフローチャートである。図8は、キャッシュライト時の処理を示すフローチャートである。
図7に示すように、メモリライトが開始されると、仮想インデックスで、TLB仮想ページメモリ21とデータメモリ23とステートメモリ24へのアクセスが行われる(S61)。TLB仮想ページメモリ21がヒットしなかった時(S62、NO)は、ライト時のTLB登録処理が実行される(S63)。TLBがヒットした時(S62、YES)は、TLBヒットの判断となり、その仮想ページはライト可能かの判断がされる(S64)。ライト可能の場合(S64、YES)は、キャッシュライトが行われる(S65)。ライト可能でない場合(S64、NO)は、割込処理によりプロテクト違反をCPU11に通知し(S66)、OSによる例外処理が実行される。
図4に示すように、TLB登録処理が開始されると、登録するPTEがDRAM13から読み出される(S11)。読み出したPTEが、DRAM13に存在するかが判断される(ステップS12)。存在しない場合(S12、NO)は、OSに例外発生の通知が行われる(S13)。
存在する場合(S12、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S14)。ストア命令の場合(S14、YES)は、このプロセスに書き込みを許可するか否かが判断される(S15)。プロセスに書き込みを許可しない場合(S15、NO)は、処理はS13に進む。
プロセスに書き込みを許可する場合(S15、YES)は、PTEのdirtyビットとreferenceビットを立てる(S16)。
存在する場合(S12、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S14)。ストア命令の場合(S14、YES)は、このプロセスに書き込みを許可するか否かが判断される(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エントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われる(S22)。
なお、TLBミス処理は、上述したメモリリード時の場合の動作と同様である。
同じ場合(S20、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われる(S22)。
なお、TLBミス処理は、上述したメモリリード時の場合の動作と同様である。
図8に示すように、キャッシュライトの処理が開始されると、仮想インデックスで引いたステートメモリ24の出力が、仮想ページのオフセットとブロックオフセットにより選択され(S71)、TLBヒットしているページのキャッシュステートの出力が選択される(S72)。
そして、キャッシュヒットしているか否かが判断される(S73)。キャッシュヒットしていない場合(S73、NO)は、TLBの物理ページ番号から物理アドレスを生成してメモリアクセス要求を発行する(S74)。この場合、出力されるメモリアクセス要求は「他のキャッシュラインを無効化するメモリリード要求」、例えばRWITM、BUSRdx、である。メモリアクセス要求はメモリ、および他のプロセッサでスヌープされる。メモリアクセス要求をスヌープしたプロセッサは、自分の管理するキャッシュ状態をチェックし、キャッシュ状態が Modified の場合には、スヌープ応答として Modified レスポンスを出力するとともに、キャッシュ状態をInvalidにし、要求されたキャッシュラインのデータを要求元のプロセッサに向けて出力する。このとき、メモリは要求されたキャッシュラインへのリードアクセスおよび、要求元プロセッサへのデータ出力をキャンセルする。キャッシュ状態が Exclusive または Shared の場合には Shared レスポンスを返し、キャッシュ状態を Invalid に変更する。要求されたキャッシュラインのデータはメモリが要求元プロセッサに対して出力する。そして、得られたデータをキャッシュメモリに取り込み(S75)、CPU11から受け取ったデータをキャッシュに上書きする。要求を出力したプロセッサはスヌープ応答に応じてキャッシュステートメモリ24の状態を更新する。さらに、メモリリード要求(RWTIM もしくは BusRdX)を出力したプロセッサは、キャッシュステートメモリ24にある要求したキャッシュラインの状態を “Modified” に変更する(S79)。
キャッシュヒットしている場合(S73、YES)は、仮想インデックスで引いたデータメモリの出力がTLBからのウェイ番号で選択されて(S76)、処理はS77に進む。キャッシュ状態が “Modified” の場合(S77、YES)、キャッシュ状態は変更しない。キャッシュ状態が “Exclusive” の場合(S78)、キャッシュ状態を “Modified” に変更する(S79)。キャッシュ状態が “Shared” の場合(S78、NO)、プロセッサは、キャッシュライン無効化トランザクション(DClaim)を発行する(S80)。そして、他のプロセッサのキャッシュを無効化し、スヌープ応答を受け取るとキャッシュの状態を“Modifed” に変更する(S79)。キャッシュ状態が “Modified” になると、プロセッサからのデータをキャッシュに書き込む(S81)。このキャッシュライン無効化トランザクションは、PowerPC 970FX の DClaim トランザクション、あるいは BusRdXトランザクション) において処理される要求と同様である。上述した参考文献としてのIBM PowerPC 970FX RISC Microprocessor User’s Manual Version1.7におけるPowerPC 970FX の DClaim トランザクション、及び上述したParallel Computer Architecture -- A Hardware/Software Approach --におけるBusRdXトランザクションを参照されたし。
次に、TLBヒットとTLBミスの場合の動作について、図2に基づいて説明する。
(TLBヒットの場合)
まず、CPU11からキャッシュメモリ12へ仮想アドレスEAとプロセス番号PIDが入力される。TLB仮想ページメモリ21では、入力された仮想アドレス中の仮想ページインデックス(15:12)を用いて、各ウェイのデータが選択される。そして、選択されたデータの中で、入力されたプロセス番号と、入力された仮想アドレス中の仮想ページタグ(31:12)とが、それぞれTLB仮想ページメモリ21のプロセス番号と仮想ページとを比較し一致する場合に、TLB仮想ページメモリ21は、比較器21aから一致したウェイ番号WNをヒット信号として出力する。なお、一致しない場合には、不一致を示すノンヒット信号が出力される。
ここで、TLB仮想ページメモリ21の仮想ページEPが、仮想ページインデックスEP_Indexを含むようにしているのは、仮想タグとして使用されるためである。
次に、TLBヒットとTLBミスの場合の動作について、図2に基づいて説明する。
(TLBヒットの場合)
まず、CPU11からキャッシュメモリ12へ仮想アドレスEAとプロセス番号PIDが入力される。TLB仮想ページメモリ21では、入力された仮想アドレス中の仮想ページインデックス(15:12)を用いて、各ウェイのデータが選択される。そして、選択されたデータの中で、入力されたプロセス番号と、入力された仮想アドレス中の仮想ページタグ(31:12)とが、それぞれTLB仮想ページメモリ21のプロセス番号と仮想ページとを比較し一致する場合に、TLB仮想ページメモリ21は、比較器21aから一致したウェイ番号WNをヒット信号として出力する。なお、一致しない場合には、不一致を示すノンヒット信号が出力される。
ここで、TLB仮想ページメモリ21の仮想ページEPが、仮想ページインデックスEP_Indexを含むようにしているのは、仮想タグとして使用されるためである。
TLB物理ページメモリ22では、入力された仮想アドレス中の仮想ページインデックスEP_Index(15:12)を用いて、物理アドレスのページ番号が選択される。なお、キャッシュミスが発生したり他のキャッシュを無効化したりする場合を除き、TLB物理ページメモリ22に保持されている物理ページ情報は使わないので、TLB物理ページメモリ22の情報が必要になってから、TLB物理ページメモリ22へのアクセスを開始するような実装にしても構わない。
データメモリ23では、仮想アドレス31中の9ビット(15:7)とブロックオフセット(6:2)とを用いて、キャッシュブロックのデータが選択される。すなわち、入力された仮想アドレス中のブロックオフセット(6:2)を用いて、マルチプレクサ23aは1ブロックすなわち1ライン(128バイト)の中の1つのデータ(32ビット)を選択する。よって、データメモリ23からは、4つのウェイから4つのキャッシュブロックデータが出力され、マルチプレクサ23aからは、4つのウェイに対応する4つのデータ(それぞれが32ビット)が出力される。
また、キャッシュステートメモリ24では、仮想アドレス中の9ビット(15:7)を用いて、各ウェイのキャッシュブロックの状態データ(キャッシュステートのデータ)を選択し、出力する。
また、キャッシュステートメモリ24では、仮想アドレス中の9ビット(15:7)を用いて、各ウェイのキャッシュブロックの状態データ(キャッシュステートのデータ)を選択し、出力する。
よって、プロセッサコアとしてのCPU11からのDRAM13へのメモリリードアクセスがあると、次のように動作する。
まず、仮想アドレス中の仮想ページインデックスEP_Index(15:12)をTLBインデックスとして、TLB仮想ページメモリ21がアクセスされる。TLB仮想ページメモリ21では、TLBインデックスにより、仮想アドレス(31:16)およびプロセス番号とCPU11からのプロセス番号及び仮想ページインデックスEP_Index(15:12)とが、一致するエントリを検索する。
まず、仮想アドレス中の仮想ページインデックスEP_Index(15:12)をTLBインデックスとして、TLB仮想ページメモリ21がアクセスされる。TLB仮想ページメモリ21では、TLBインデックスにより、仮想アドレス(31:16)およびプロセス番号とCPU11からのプロセス番号及び仮想ページインデックスEP_Index(15:12)とが、一致するエントリを検索する。
TLB仮想ページメモリ21は、その一致したエントリのあるウェイの有無と、有る場合には、そのウェイ番号WNを出力する。一致するエントリがない場合は、TLBミスとして扱われる。
以下、一致するエントリが存在する場合について説明する。
仮想アドレス31中のビット (15:7) をキャッシュインデックスとして、L1 キャッシュであるデータメモリ23がアクセスされる。そして、ブロックオフセット(6:2)がマルチプレクサ23aに入力され、各ウェイからのデータが出力される。本実施の形態の構成では、32ビット幅でCPU11にデータが渡されるので、ブロックオフセット(6:2)を用いて、それぞれのウェイの出力から1つの32ビット幅のデータが、マルチプレクサ23aにより選択される。
仮想アドレス31中のビット (15:7) をキャッシュインデックスとして、L1 キャッシュであるデータメモリ23がアクセスされる。そして、ブロックオフセット(6:2)がマルチプレクサ23aに入力され、各ウェイからのデータが出力される。本実施の形態の構成では、32ビット幅でCPU11にデータが渡されるので、ブロックオフセット(6:2)を用いて、それぞれのウェイの出力から1つの32ビット幅のデータが、マルチプレクサ23aにより選択される。
TLB仮想ページメモリ21から出力されたウェイ番号WNを用いて、セレクタであるマルチプレクサ23bにより、ヒットしたウェイのデータだけが選択されて出力される。
そして、ステートメモリ24も、TLB仮想ページメモリ21から出力されたウェイ番号WNを用いて、データメモリ23からデータが出力されるのと同時に、セレクタであるマルチプレクサ24bにより、ヒットしたウェイのデータだけを選択して出力する(図6のS42)。
ステートメモリ24から出力された状態(キャッシュステート)が、invalid 以外であれば、L1キャッシュとしてのデータメモリ23から出力されたデータは使用できるので(S47)、CPU11へ出力する(S49)。状態(キャッシュステート)が invalidであれば、キャッシュミスの処理動作を行う(S44)。
このように、TLB、キャッシュともにヒットする場合には仮想アドレスEAだけで処理を進めることができる。すなわち、TLB、キャッシュともにヒットする場合には、TLB物理ページメモリ22は使用する必要はない。
次にキャッシュミスの場合について説明する。
TLBヒット時にキャッシュミスが発生した場合には以下の動作が追加される。TLBヒット時にキャッシュミスが発生する場合とは、TLBヒットはしているが、キャッシュステートがinvalidであるため、キャッシュのデータのDRAM13からの読みだしが必要な場合である。
TLBヒット時にキャッシュミスが発生した場合には以下の動作が追加される。TLBヒット時にキャッシュミスが発生する場合とは、TLBヒットはしているが、キャッシュステートがinvalidであるため、キャッシュのデータのDRAM13からの読みだしが必要な場合である。
TLB物理ページメモリ22は、仮想アドレスの仮想ページインデックスEP_Index(15:12)をインデックスとしてアクセスされる。TLB物理ページメモリ22も4ウェイセットアソシアティブ形式なので、4つの物理ページ番号を出力する。
マルチプレクサ22bは、TLB仮想ページメモリ21からのウェイ番号WNを用いて、出力された物理ページ番号から一つを選択する。
その選択された物理ページ番号(39:12)に、CPU11からのリード要求のあった仮想アドレス中の下位ビット(11:0) を結合して物理アドレスRA(39:0) を生成し、DRAM13へリード要求が送られる(S44)。得られたデータは、データメモリ23の対応する領域に書き込まれる(S45)。
(TLBミスの場合)
TLB ミス時には以下の動作が追加される。
該当する仮想ページが載っているPTEがDRAM13からロードされる(図4のS11)。そして、物理ページ番号がTLB物理ページCAM25に入力され、同一の物理ページ番号が存在するかがチェックされる。
TLB ミス時には以下の動作が追加される。
該当する仮想ページが載っているPTEがDRAM13からロードされる(図4のS11)。そして、物理ページ番号がTLB物理ページCAM25に入力され、同一の物理ページ番号が存在するかがチェックされる。
同一物理ページ番号がない場合は、次の登録処理が行われる(S17以降)。すなわち、読み出されたPTEから仮想ページ番号を求め、TLB 仮想ページメモリ21、TLB物理ページメモリ22及びTLB物理ページCAM25に対するデータの登録が行われる(図4のS18、図5のステップS31)。
同一物理ページ番号がある場合(すなわちエイリアスがある場合)は、次の処理が行われる。
TLB物理ページCAM25中に同一の物理ページ番号が存在するので、TLB物理ページCAM25は、同一物理ページ番号が存在する仮想ページインデックスEP_Indexと、ウェイ番号WNを出力する。
TLB物理ページCAM25中に同一の物理ページ番号が存在するので、TLB物理ページCAM25は、同一物理ページ番号が存在する仮想ページインデックスEP_Indexと、ウェイ番号WNを出力する。
出力された仮想ページインデックスEP_Indexが、PTEから求められた仮想ページ番号の仮想ページインデックスEP_Indexと一致する場合、一致したエントリに対して以下の書き換えが行われる(S22)。
まず、TLB仮想ページメモリ21では プロセス番号PIDと仮想ページEPを書き換え、対応するReference(R)のビットを立てる。そして、その他の必要な情報も変更が行われる。
そして、TLB物理ページメモリ22とTLB物理ページCAM25は、物理ページ番号が一致しているので、書き変えない。
さらに、キャッシュステートメモリ24とデータメモリ23は、キャッシュの内容を引き継ぐので書き換えない。
さらに、キャッシュステートメモリ24とデータメモリ23は、キャッシュの内容を引き継ぐので書き換えない。
一方、出力された仮想ページインデックスEP_Indexが、PTEから求められた仮想ページ番号の仮想ページインデックスEP_Indexと一致しない場合、以下の処理が行われる(S21)。
TLB物理ページCAM25から出力された仮想ページインデックスEP_Indexと、ウェイ番号WNに対応するエントリ、すなわちエイリアスが発生している1つのTLBエントリの無効化が行われる。無効化処理には、対応する仮想ページのキャッシュフラッシュが含まれる。
さらに、エイリアスが発生している他方のTLB エントリの無効化も行われる。この無効化処理にも、対応する仮想ページのキャッシュフラッシュが含まれる。
さらに、エイリアスが発生している他方のTLB エントリの無効化も行われる。この無効化処理にも、対応する仮想ページのキャッシュフラッシュが含まれる。
上記2つのTLBエントリの無効化が終わったら、PTEから求められたTLBエントリに対して、所定の登録処理が行われる。
具体的には、TLB仮想ページメモリ21にプロセス番号PIDと仮想ページEPが登録される。さらに、PTEのダーティビット(Dirty bit)の書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
そして、TLB物理ページCAM25 において、TLBエントリに物理ページRPを書き込み、Valid(V)ビットをたてる。さらに、TLB 物理ページメモリ22において、TLBエントリに物理ページRPを書き込む。
具体的には、TLB仮想ページメモリ21にプロセス番号PIDと仮想ページEPが登録される。さらに、PTEのダーティビット(Dirty bit)の書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
そして、TLB物理ページCAM25 において、TLBエントリに物理ページRPを書き込み、Valid(V)ビットをたてる。さらに、TLB 物理ページメモリ22において、TLBエントリに物理ページRPを書き込む。
また、同一物理ページ番号がない場合(すなわちエイリアスがない場合)は、次の処理が行われる(図4のS18、図5のS32)。
PTEから求められたTLBエントリの無効化が行われる。無効化処理には、対応する仮想ページのキャッシュフラッシュが含まれる。
PTEから求められたTLBエントリの無効化が行われる。無効化処理には、対応する仮想ページのキャッシュフラッシュが含まれる。
無効化が終わったら、PTEから求められたTLBエントリに所定の登録処理が行われる(S19)。
具体的には、TLB仮想ページメモリ21へプロセス番号PIDと仮想ページEPが登録される。さらに、PTEのダーティビットの書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
具体的には、TLB仮想ページメモリ21へプロセス番号PIDと仮想ページEPが登録される。さらに、PTEのダーティビットの書き込みが行われ、対応するValid(V)ビット、Reference(R)ビットをたてる。
そして、TLB物理ページCAM25 において、該TLBエントリに物理ページRPを書き込み、Valid(V)ビットをたてる。さらに、TLB 物理ページメモリ22において、該TLBエントリに物理ページRPを書き込む。
次にキャッシュスヌープについて説明する。キャッシュスヌープは、ハードウェア回路であるスヌーパによって、以下のように行われる。スヌーパは、キャッシュメモリ12とDRAM13間のバスのデータを監視する。
スヌープに使うTLB物理ページCAM25とステートメモリ24は、TLB登録用と、CPU11からのアクセス用とに共用される。
スヌープに使うTLB物理ページCAM25とステートメモリ24は、TLB登録用と、CPU11からのアクセス用とに共用される。
バスにコヒーレントトランザクションが流れると、検出された物理アドレス(39:12)をTLB物理ページCAM25に入力し、対応する仮想ページ(EP)がTLB仮想ページメモリ21に登録されているかが、チェックされる。
対応する仮想ページEPがあれば、TLB仮想ページメモリ21の仮想ページインデックスEP_Indexとウェイ番号WNが得られる。
なお、対応する仮想ページがTLB仮想ページメモリ21になければ、L1キャッシュにデータは存在しないのでスヌープ処理についてはその後何もしない。
対応する仮想ページがあれば、得られた仮想ページインデックスとウェイ番号をキャッシュステートメモリ24に入力して、キャッシュステートのチェックが行われる。得られたキャッシュステートとトランザクションの種類に応じて、所定の処理が実行される。
なお、本実施の形態では、TLB物理ページCAM25とTLB物理ページメモリ22は、別々のメモリとして構成されているが、次の3つの場合を除き、アクセスされることはないので、物理的に同じメモリに含まれるように構成しても良い。その3つの場合は、(1)キャッシュミス の場合(TLB物理ページメモリ22のみアクセスされる)、(2)TLB ミス時 (TLB物理ページCAM25がアクセスされてエイリアスがチェックされ、新しい TLB エントリ登録時に TLB物理ページCAM25とTLB物理ページメモリ22に登録される)、(3)スヌープ時 (TLB物理ページCAM25のみアクセスされる)である。
さらになお、本実施の形態の仮想アドレスキャッシュメモリによれば、異なるプロセッサで実行する複数のプロセスで共有するメモリ空間の場合であっても、仮想アドレスのページに制約はない。
さらに、本実施の形態は、セットアソシアティブ方式のキャッシュであるが、ダイレクトマップ方式のキャッシュにも適用できることは言うまでもない。
さらに、本実施の形態は、セットアソシアティブ方式のキャッシュであるが、ダイレクトマップ方式のキャッシュにも適用できることは言うまでもない。
以上のように、上述した実施の形態のキャッシュメモリによれば、それぞれが仮想アドレスの上位ビットの一部をインデックスとするキャッシュステートメモリとデータメモリを設けたので、従来のような複雑な回路構成でなく、TLBの機能をキャッシュメモリ上で実現し、かつエイリアスの問題を解消することができる。
次に、上述したキャッシュメモリの構成を利用したタスク切り替え、データの書き戻し、DMA処理及びL2キャッシュへの適用について説明する。
I)タスク切り替え時の処理
本実施の形態に係るキャッシュメモリにおけるタスク切り替え時の処理について説明する。
タスク切り替え時には、ソフトウェアによってTLB内容の書き換えが行なわれる場合がある。その際に、タスク切り替え前の仮想アドレスに関するTLBエントリと物理アドレス(以下、先の物理アドレスともいう)は無効化されるため、先の物理アドレスのデータが書き換えられているとき(すなわちDirtyビットが立っているとき)は、主メモリに最新のデータを格納するために、そのデータの書き戻し処理が必要となる。
I)タスク切り替え時の処理
本実施の形態に係るキャッシュメモリにおけるタスク切り替え時の処理について説明する。
タスク切り替え時には、ソフトウェアによってTLB内容の書き換えが行なわれる場合がある。その際に、タスク切り替え前の仮想アドレスに関するTLBエントリと物理アドレス(以下、先の物理アドレスともいう)は無効化されるため、先の物理アドレスのデータが書き換えられているとき(すなわちDirtyビットが立っているとき)は、主メモリに最新のデータを格納するために、そのデータの書き戻し処理が必要となる。
しかし、タスク切り替え時に、そのデータの書き戻し処理を行なうと、DRAM13へのアクセスが発生するため、タスク切り替えの応答性が悪くなるという問題が発生する。
そこで、本実施の形態では、タスク切り替え時のTLB書き換え処理を行なう場合には、TLB仮想ページメモリ21とTLB物理ページメモリ22に対する書き換え処理は行われるが、データメモリ23のデータの書き戻しと、TLB物理ページCAM25のデータの書き換えは行わない。
その代わり、TLB書き換え処理時に特定のフラグデータをセットし、その後、初回のメモリアクセスが発生したときに、その特定のフラグデータを参照して、書き戻しが必要であれば、TLB物理ページCAM25に書かれたアドレス(すなわち先の物理アドレス)を用いて、データメモリ23のデータの書き戻しを行う。
そして、その書き戻しの後、TLB物理ページCAM25に、TLB物理ページメモリ22に登録されている物理アドレス(以下、後の物理アドレスともいう)への書き換えが行われる。
以下、具体的に説明する。
TLB仮想ページメモリ21は、「旧データキャッシュ状態」を示すデータ、例えば、フラグデータもページ毎に記憶可能に構成されている。ここでは、旧データキャッシュ状態フラグKは、TLB書き換え処理中は「1」にセットされ、初回のメモリアクセスが発生し、書き戻し処理が完了すると「0」にリセットされる。
TLB仮想ページメモリ21は、「旧データキャッシュ状態」を示すデータ、例えば、フラグデータもページ毎に記憶可能に構成されている。ここでは、旧データキャッシュ状態フラグKは、TLB書き換え処理中は「1」にセットされ、初回のメモリアクセスが発生し、書き戻し処理が完了すると「0」にリセットされる。
図9は、TLB書き換え処理を示すフローチャートである。
TLB書き換え処理が開始されると、同一の仮想インデックスに未使用のTLBエントリが存在するか否かが判断される(S31)。未使用のTLBエントリが存在する場合(S31、YES)、TLB仮想ページメモリ21、TLB物理ページメモリ22、TLB物理ページCAM25の内容を書き込み(S32)、処理は終了する。
未使用のTLBエントリが存在しない場合(S31、NO)、追い出すTLBエントリが決定され(S33)、TLB仮想ページメモリ21とTLB物理ページメモリ22のみ、内容が書き換えられる(S34)。
そして、その追い出すTLBエントリの旧データキャッシュ状態ビットKを「1」にセットし(S35)、処理は終了する。
以上のようにして、TLB書き換え時には、追い出されるTLBエントリのページについての旧データキャッシュ状態ビットKは「1」にセットされる。
以上のようにして、TLB書き換え時には、追い出されるTLBエントリのページについての旧データキャッシュ状態ビットKは「1」にセットされる。
図10は、タスク切り替えのオーバーヘッドを低減する構成を取った場合の、メモリリード時の処理を示すフローチャートである。図10において、図3と同じ処理については、同じステップ番号を付して、図10は、図3と異なる点を主に説明する。
図10に示すように、メモリリードが開始されると、仮想インデックスで、ステートメモリ24とデータメモリ23とTLB仮想ページメモリ21へのアクセスが行われる(S1)。TLB仮想ページメモリ21がヒットしなかった時(S2、NO)は、リード時のTLB登録処理が実行される(S3)。TLBがヒットした時(S2、YES)は、旧データキャッシュ状態ビットKが「1」であるか否かが判断される(S51)。「1」でない場合は、S4に処理は移行する。「1」である場合は、ページに含められるキャッシュラインの状態がModifiedであるか否かが判断される(S52)。Modifiedでない場合(S52、NO)は、処理はS54に移行する。状態がModifiedで有るキャッシュラインが存在する場合(S52、YES)は、TLB物理ページCAM25の対応するエントリの物理ページRPから物理アドレスRAを生成し、データメモリ23上のデータの書き戻し処理が行われて(S53)、処理はS54に移行する。さらに、TLBヒットに対応したTLB物理ページメモリ22のエントリに登録されている物理ページRPが、TLB物理ページCAM25の対応するエントリに登録され(S54)、旧データキャッシュ状態ビットKを「0」にセットする(S55)。上述の操作後、その仮想ページはリード可能かの判断がされる(S4)。仮想ページがリード可能の場合(S4、YES)は、キャッシュリードが行われる(S5)。仮想ページがリード可能でない場合(S4、NO)は、割込処理によりプロテクト違反をCPU11通知し(S6)、OSによる例外処理が実行される。
以上のように、本実施の形態のタスク切り替え処理によれば、タスク切り替えが発生して、TLB書き換え処理を行なった場合、TLB仮想ページメモリ21とTLB物理ページメモリ22に対する書き換え処理は行われるが、データメモリ23のデータの書き戻しと、TLB物理ページCAM25のデータの書き換えは行わない。その後、TLB書き換えを行なった仮想アドレスに対する対するCPU11からの最初のアクセスがあったときに、書き換えられたデータが存在していた場合に、TLB物理ページCAM25に残っている物理アドレス(すなわち先の物理アドレス)を用いて、DRAM13への書き戻しが行われる。その書き戻しの後、TLB物理ページCAM25に、TLB物理ページメモリ22に登録されている物理アドレス(すなわち後の物理アドレス)の書き換えが行われる。
以上のようなTLBミス処理とキャッシュリード処理を行うことによって、タスク切り替えの応答性を向上させると共に、タスク切り替え時にTLBエントリの更新を行なったものの、その領域にメモリアクセスをしなかった場合のオーバーヘッドを削減することができる。
以上のようなTLBミス処理とキャッシュリード処理を行うことによって、タスク切り替えの応答性を向上させると共に、タスク切り替え時にTLBエントリの更新を行なったものの、その領域にメモリアクセスをしなかった場合のオーバーヘッドを削減することができる。
(マルチプロセッサシステムへの適用)
複数のプロセッサからなるマルチプロセッサシステムあるいはマルチコアシステムにおいて、各プロセッサに、上述したキャッシュメモリを適用した例を説明する。
複数のプロセッサからなるマルチプロセッサシステムあるいはマルチコアシステムにおいて、各プロセッサに、上述したキャッシュメモリを適用した例を説明する。
図11は、複数のプロセッサを有するマルチプロセッサシステム1Aの構成を示すブロック図である。図11に示すように、複数のプロセッサP0、P1、・・・が、バス14を介して互いに接続されている。さらに、主メモリとしてのDRAM13も、メモリコントローラ15を介してバス14に接続されている。プロセッサシステム1Aは、各プロセッサがCPU11とキャッシュメモリ12を有し、CPU11がキャッシュメモリ12を介してDRAM13にアクセスできるように、構成されている。
また、バス14は、コヒーレンシを保持するスヌープ機構16を有するバスであり、各プロセッサとバスコントローラ15には、スヌープ機構用、もしくはディレクトリ方式コヒーレンシ管理機構用のハードウェア回路16aが設けられている。以下、スヌープ機構の例を示すが、ディレクトリ方式のコヒーレンシ管理でもほぼ同様の仕組みを実装できる。また、図11には明示されていないが、ハードウェア回路16aは各プロセッサが出力した「書き戻しデータ受け取りレスポンス」に関し、「最終的にどのプロセッサが書き戻しデータを受け取るか」を決めるアービタが内蔵されている。 図11に示すような構成において、各プロセッサは、仮想アドレス空間の仮想アドレスを用いてキャッシュメモリ12にアクセスできる。さらに、キャッシュメモリ12は、CPU11からのアクセスについてTLBミス処理及びキャッシュミス処理を行いながら、DRAM13からのデータの読み出しと、DRAM13へのデータの書き込みを行う。
以下の説明では、2つのプロセッサの場合について説明するが、3以上のプロセッサであっても同様の作用である。
図12は、プロセッサにおけるキャッシュミス時の処理を示すフローチャートである。
各プロセッサでは、TLB書き換え処理を行なったとき、キャッシュメモリ12のTLB仮想ページメモリ21とTLB物理ページメモリ22に対する書き換え処理は行われるが、データメモリ23のデータの書き戻しと、TLB物理ページCAM25のデータの書き換えは行わない。
図12は、プロセッサにおけるキャッシュミス時の処理を示すフローチャートである。
各プロセッサでは、TLB書き換え処理を行なったとき、キャッシュメモリ12のTLB仮想ページメモリ21とTLB物理ページメモリ22に対する書き換え処理は行われるが、データメモリ23のデータの書き戻しと、TLB物理ページCAM25のデータの書き換えは行わない。
いま、プロセッサP1において、キャッシュミスが発生したとする。キャッシュミスが発生すると、リフィルのために、キャッシュメモリ12は、TLBの物理ページメモリ22の物理ページ番号RPから物理アドレスRAを生成して、DRAM13へのメモリアクセスを行う(S201)。
DRAM13へのメモリアクセスは、スヌープ機構16によって監視されている。メモリアクセスが発生すると、スヌープ機構はスヌープレスポンスを返す。プロセッサP1はその結果、そのメモリアクセスに係る物理アドレスRAに対応する有効な物理ページRPが、DRAM13ではなく、バス14上の他のどれかのプロセッサのTLB物理ページCAM25の物理ページRPに一致するか否かを判断する(S202)。
例えば、プロセッサP0に、その有効な物理ページRPが有ったとする。このような場合が生じ得るのは、プロセッサP0において変更されたデータは、TLB書き換え時にデータの書き戻しがされなければならないが、データの書き戻しがされるまでは、データはデータメモリ23に残っているからである。
従って、物理アドレスRAに対応する有効な物理ページRPが他のどれかのプロセッサのTLB物理ページCAM25の物理ページRPに一致する(S202、YES)と、その一致したプロセッサ(ここではプロセッサP0)は該当するキャッシュラインについて、ステートメモリ24を引いて、キャッシュステートがInvalidでなければ、データメモリ23から対応するデータが転送されるので、プロセッサP1のキャッシュメモリ12は、データを、プロセッサP0から取得する(S203)。プロセッサP1は、図11において、矢印A2で示すルートでデータを取得することができる。
この場合、プロセッサP1からDRAM13へのアクセスは発生しないので、プロセッサP1は、データをプロセッサP0からのデータ転送により高速に取得できる。よって、タスク切り替えの応答性が向上したプロセッサを実現することができる。
以上のように、本実施の形態のタスク切り替え処理によれば、TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができるキャッシュメモリを用いながら、さらにタスク切り替えの応答性が向上した仮想アドレスキャッシュメモリ及びプロセッサを実現することができる。
II)マルチプロセッサシステムにおけるデータの書き戻し処理
次に、本実施の形態に係るマルチプロセッサシステムにおけるデータの書き戻し処理について説明する。
マルチプロセッサシステムあるいはマルチコアシステムに含まれる各プロセッサに、上述したキャッシュメモリを適用することができる。
次に、本実施の形態に係るマルチプロセッサシステムにおけるデータの書き戻し処理について説明する。
マルチプロセッサシステムあるいはマルチコアシステムに含まれる各プロセッサに、上述したキャッシュメモリを適用することができる。
図11に示した構成を有するマルチプロセッサシステム1Aにおいて、あるプロセッサが、DRAM13に対するデータの書き戻し(すなわちキャストアウト)を行う場合がある。例えば、あるプロセッサの仮想アドレスキャッシュメモリ12において、キャッシュミスが発生したときに、そのプロセッサは、データメモリ23のデータを主メモリであるDRAM13に書き戻す場合である。
従来は、主メモリへのデータの書き戻しは必ず行わなければならず、そのため、主メモリへのデータの転送量が多くなると、システム全体のパフォーマンスの低下と転送処理のための消費電力の増加が必ず発生していた。
そこで、本実施の形態は、書き戻しデータが、主メモリへではなく、他のプロセッサのキャッシュメモリへ転送されるようにして、システム全体のパフォーマンスの低下を抑え、転送処理のための消費電力の低減を図るものである。
ここで、例えば、プロセッサP1でキャッシュミスが発生して、プロセッサP1がある物理アドレスRAのデータの書き戻しを行うとする。プロセッサP1は、DRAM13へのデータの書き戻し処理に関するデータをバス14に出力する。
バス14上のそのデータは、スヌープ機構16により監視されており、スヌープ機構16により、そのデータが他のプロセッサに通知される。
バス14上のそのデータは、スヌープ機構16により監視されており、スヌープ機構16により、そのデータが他のプロセッサに通知される。
例えば、プロセッサP0は、その通知に基づいて、図13の処理を実行する。図13は、キャッシュミス時の書き戻し処理の例を示すフローチャートである。図13の処理は、キャッシュメモリ12上のハードウェア回路によって実行される。さらに、以下に説明するスヌープ機構16の機能は、スヌープ機構16の機能を拡張することによって、実現される。すなわち、一貫性(すなわちコヒーレンシ)保持プロトコル機構であるスヌープ機構16は、DRAM13への書き戻しデータを監視し、書き戻しデータを検出したときは、書き戻しデータを発生したプロセッサ以外のプロセッサに書き戻しデータを通知する。
プロセッサP0では、バス14を介して受信したその通知に含まれる書き戻しデータに基づいて、書き戻し先の物理アドレスRAの物理ページRPが、自己のTLB物理ページCAM25中の物理ページRPと一致するものがあるか否かが判断される(S301)。
一致するものがある場合(S301、YES)は、TLB仮想ページメモリ21の対応するエントリが有効状態か否かが判断される(S302)。
一致するものがある場合(S301、YES)は、TLB仮想ページメモリ21の対応するエントリが有効状態か否かが判断される(S302)。
有効状態である場合(S302、YES)は、キャッシュステートメモリ24の対応するエントリがInvalidであるか否かが判断される(S303)。
Invalidである場合(S303、YES)、書き戻しデータを受け取れるプロセッサの中で、自プロセッサP0が最も優先順位が高いかが判断される(S303A)。自プロセッサP0が最も優先順位が高い場合(S303A,YES)、書き戻しデータをキャッシュメモリ12の対応するデータメモリ23上に転送し、キャッシュステートをInvalidからModifiedに変更する(S304)。
S301,S302,S303あるいはS303AにおいてNOの場合は、処理は何もしないで終了する。なお、MOESIなど、dirty shared を許すプロトコルを採用する場合には、S303Aの判定で「最も優先順位の高いプロセッサ」はS304において「書き戻しのデータを対応するキャッシュ上に転送し、キャッシュステートを Ownedに変更する」、「最も優先順位が高いプロセッサ以外」では「S304において「書き戻しのデータを対応するキャッシュ上に転送し、キャッシュステートを Shared に変更する」など、コヒーレンスプロトコルに応じた最適化が可能であることは言うまでもない。
Invalidである場合(S303、YES)、書き戻しデータを受け取れるプロセッサの中で、自プロセッサP0が最も優先順位が高いかが判断される(S303A)。自プロセッサP0が最も優先順位が高い場合(S303A,YES)、書き戻しデータをキャッシュメモリ12の対応するデータメモリ23上に転送し、キャッシュステートをInvalidからModifiedに変更する(S304)。
S301,S302,S303あるいはS303AにおいてNOの場合は、処理は何もしないで終了する。なお、MOESIなど、dirty shared を許すプロトコルを採用する場合には、S303Aの判定で「最も優先順位の高いプロセッサ」はS304において「書き戻しのデータを対応するキャッシュ上に転送し、キャッシュステートを Ownedに変更する」、「最も優先順位が高いプロセッサ以外」では「S304において「書き戻しのデータを対応するキャッシュ上に転送し、キャッシュステートを Shared に変更する」など、コヒーレンスプロトコルに応じた最適化が可能であることは言うまでもない。
すなわち、同じ物理アドレスがTLB物理ページCAM25中にあって、TLB仮想ページメモリ21も有効であって、かつデータメモリ23の対応するデータがInvalidである場合は、プロセッサP0のキャッシュメモリ12上には、対応するエントリが存在するにも拘わらずデータが格納されていない領域が、存在することになる。そのような場合は、プロセッサP0では、その書き戻しデータを、キャッシュメモリ12に転送させて格納する。
次に、主メモリのための制御部としてメモリコントローラ15における処理について説明する。
図14は、書き戻し時のメモリコントローラ15の処理を示すフローチャートである。
メモリコントローラ15は、プロセッサP1からの書き戻しデータを取り込む(S311)。
図14は、書き戻し時のメモリコントローラ15の処理を示すフローチャートである。
メモリコントローラ15は、プロセッサP1からの書き戻しデータを取り込む(S311)。
次に、メモリコントローラ15は、その書き戻しデータの取り込みを行ったか否かを、スヌープ機構16を介して全プロセッサに問い合わせる(S312)。スヌープ機構16は、その問い合わせに応じて、レスポンスを生成してメモリコントローラ15に返す。すなわち、一貫性保持プロトコル機構であるスヌープ機構16は、書き戻しデータが他のプロセッサのキャッシュメモリに取り込まれたことを、メモリコントローラ15からの問い合わせに応じて通知する。
そして、メモリコントローラ15は、問い合わせに対するレスポンスに基づいて、いずれかのプロセッサがキャッシュメモリ12にそのデータの取り込んだか否かを判断する(S313)。
そして、メモリコントローラ15は、問い合わせに対するレスポンスに基づいて、いずれかのプロセッサがキャッシュメモリ12にそのデータの取り込んだか否かを判断する(S313)。
いずれかのプロセッサが、キャッシュメモリ12にそのデータの取り込みを行っていない場合(S313、NO)は、DRAM13へデータの書き込み処理を行う(S314)。
いずれかのプロセッサがキャッシュメモリ12にそのデータの取り込みを行っていた場合(S313、YES)は、メモリコントローラ15は処理を終了する。
いずれかのプロセッサがキャッシュメモリ12にそのデータの取り込みを行っていた場合(S313、YES)は、メモリコントローラ15は処理を終了する。
図15は、データの書き戻しの状態を説明するための図である。図15に示すように、プロセッサP1からの書き戻しデータは、S313でNOの場合は、点線の矢印A3で示すように、DRAM13へ転送されるが、S313でYESの場合は、実線の矢印A4で示すように、プロセッサP0に転送される。
DRAM13へのデータの書き込み処理が発生すると、システム全体のパフォーマンスの低下と転送処理のための消費電力の増加に繋がる。本実施の形態によれば、書き戻しデータがいずれかのプロセッサのキャッシュメモリ12に取り込まれているときは、メモリコントローラ15は主メモリへのデータの書き戻しを行わない。
よって、本実施の形態のマルチプロセッサシステムによれば、上述したデータの書き戻し処理を行うことによって、各プロセッサによるデータの書き戻し処理に基づく主メモリへアクセス量を低減させることができる。
TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができ、さらに各プロセッサによるデータの書き戻し処理に基づく主メモリへのアクセス量を低減させることができるマルチプロセッサシステムを実現することができる。
TLBの機能をキャッシュメモリ上で実現して、回路量の削減を図ることができ、さらに各プロセッサによるデータの書き戻し処理に基づく主メモリへのアクセス量を低減させることができるマルチプロセッサシステムを実現することができる。
なお、上述した例では、メモリコントローラ15は、書き戻しデータがいずれかのプロセッサのキャッシュメモリ12に取り込まれているときは、主メモリへのデータの書き戻しを行わないが、主メモリへの書き戻しを行うようにしてもよい。
III)DMA処理
次に、本実施の形態に係るDMA処理について説明する。
図16は、複数のプロセッサを有するマルチプロセッサシステム1Bの構成を示すブロック図である。図16において、図11と同様の構成要素は、同じ符号を付して説明は省略する。図16に示すようなマルチプロセッサシステム1Bにおいて、各プロセッサは、DRAM13との間でDMAによるデータ転送を行うことができる。そのために、各プロセッサには、DMAコントローラ(以下、DMACと略す)26が設けられている。DMAC26は、TLBを含むメモリ管理ユニット(以下、MMUと略す)を有するDMACである。
次に、本実施の形態に係るDMA処理について説明する。
図16は、複数のプロセッサを有するマルチプロセッサシステム1Bの構成を示すブロック図である。図16において、図11と同様の構成要素は、同じ符号を付して説明は省略する。図16に示すようなマルチプロセッサシステム1Bにおいて、各プロセッサは、DRAM13との間でDMAによるデータ転送を行うことができる。そのために、各プロセッサには、DMAコントローラ(以下、DMACと略す)26が設けられている。DMAC26は、TLBを含むメモリ管理ユニット(以下、MMUと略す)を有するDMACである。
従来は、物理アドレスを用いて転送元アドレスと転送先アドレスを指定することによって、プロセッサとDRAM13間でDMA転送が行われるが、ここでは、DMAC26は、仮想空間の仮想アドレスを用いてDRAM13とキャッシュメモリ12Aとの間でDMA転送を行う。
図17は、DMA転送を行う機能に対応したキャッシュメモリの構成図である。図17において、図2と同じ構成要素は、同じ符号を付し、説明は省略する。
図17に示すキャッシュメモリ12Aは、仮想アドレスを入力する入力部として、マルチプレクサ(MUX)41とアービタ42を有する。アービタ42はマルチプレクサ41に接続されている。アービタ42は、CPU11とDMAC26からの信号を監視し、キャッシュメモリ12Aへ入力される仮想アドレスが、CPU11から供給されたものか、DMAC26から供給されたものかを判定し、その判定結果に応じて、入力される仮想アドレスを選択するように、選択信号SSをマルチプレクサ41に出力する。マルチプレクサ41は、選択信号SSに基づいて、入力信号を切り替える。すなわち、マルチプレクサ41には、CPU11とDMAC26からの仮想アドレスEAが入力され、選択されたいずれか一方の仮想アドレスEAがキャッシュメモリ12Aに入力されるように構成されている。
図17に示すキャッシュメモリ12Aは、仮想アドレスを入力する入力部として、マルチプレクサ(MUX)41とアービタ42を有する。アービタ42はマルチプレクサ41に接続されている。アービタ42は、CPU11とDMAC26からの信号を監視し、キャッシュメモリ12Aへ入力される仮想アドレスが、CPU11から供給されたものか、DMAC26から供給されたものかを判定し、その判定結果に応じて、入力される仮想アドレスを選択するように、選択信号SSをマルチプレクサ41に出力する。マルチプレクサ41は、選択信号SSに基づいて、入力信号を切り替える。すなわち、マルチプレクサ41には、CPU11とDMAC26からの仮想アドレスEAが入力され、選択されたいずれか一方の仮想アドレスEAがキャッシュメモリ12Aに入力されるように構成されている。
(GET操作)
あるプロセッサが、主メモリであるDRAM13からDMA転送によりキャッシュメモリ12Aにデータを転送するGET操作ついて説明する。図16のDMAC26は、メモリ管理ユニット(以下、MMUと略す)を有する。転送元アドレス(ソースアドレス)SAと転送先アドレス(デスティネーションアドレス)DAが、仮想アドレスとしてDMAC26に入力される。
あるプロセッサが、主メモリであるDRAM13からDMA転送によりキャッシュメモリ12Aにデータを転送するGET操作ついて説明する。図16のDMAC26は、メモリ管理ユニット(以下、MMUと略す)を有する。転送元アドレス(ソースアドレス)SAと転送先アドレス(デスティネーションアドレス)DAが、仮想アドレスとしてDMAC26に入力される。
例えば、プロセッサP0のCPU11が、仮想アドレスの転送元アドレスSAと転送先アドレスDAをDMAC26に供給する。すると、DMAC26は、スヌープ方式のキャッシュコヒーレンシ機構とMMUを利用して、転送元アドレスSAの示す最新のデータを保持する物理アドレスの記憶領域を捜し出し、自己のキャッシュメモリ12中の転送先アドレスDAへ、DMA転送によりデータを転送する。
転送されたデータは、プロセッサP0のキャッシュメモリ12Aのデータメモリ23の転送先アドレスDAに対応する記憶領域が確保されて、その記憶領域に書き込まれる。また、キャッシュメモリ12Aにその転送先アドレスDAに対応するエントリがあれば、その記憶領域に、転送されたデータが書き込まれる。そして、キャッシュメモリ12Aでは、ステートメモリ23中のその転送データが書き込まれた領域に対応するエントリに、ダーティビットが書かれる。
以上のようにGET操作が行われ、転送データがキャッシュメモリ12Aに記憶されることによって、CPU11は読み出して処理することができる。また、既にキャッシュメモリ12Aに対応する記憶領域が存在する場合は、キャッシュメモリ12Aに存在する他のデータが追い出されることがない。
よって、DMA転送終了時にGET操作の転送先アドレスDAのデータがキャッシュメモリ12Aに存在するので、それ以降のプロセッサによるアクセスにおいて、キャッシュヒット率が高くなることが期待できる。
次に、GET操作の処理について具体的に説明する。
図18は、DMAによるGET操作の処理を示すフローチャートである。
図18に示すように、まず、DMAC26は、自己のMMUを用いて、GET操作における仮想アドレスである転送元アドレスSAを変換して物理アドレスRAを取得する(S401)。CPU11上で実行されるプログラム中に記載されたDMA処理は、仮想アドレスで記述されているので、DMAC26において仮想アドレスから物理アドレスに変換される。
図18は、DMAによるGET操作の処理を示すフローチャートである。
図18に示すように、まず、DMAC26は、自己のMMUを用いて、GET操作における仮想アドレスである転送元アドレスSAを変換して物理アドレスRAを取得する(S401)。CPU11上で実行されるプログラム中に記載されたDMA処理は、仮想アドレスで記述されているので、DMAC26において仮想アドレスから物理アドレスに変換される。
DMAC26は、システムバスであるバス14を経由してDRAM13から、S401で取得したGET操作における物理アドレスである転送元アドレスSA上のデータを得る(S402)。
次に、キャッシュメモリ12Aには、DMAC26からの仮想アドレスである転送先アドレスDAが入力されて、対応するデータメモリ23中の記憶領域に転送データが書かれる(S403)。S403における処理は、図7のメモリライトの処理と同様である。キャッシュメモリ12Aでは、メモリライトの処理において、ステートメモリ23のその転送データが書き込まれた領域に対応するエントリに、ダーティビットが書かれる。
そして、DMAC26は、指定された転送サイズ分のデータを送ったか否かを判定する(S404)。
指定された転送サイズ分のデータが送られていなければ(S404、NO)、処理はS401に戻る。指定された転送サイズ分のデータが送られていれば(S404、YES)、処理は終了する。DMA転送はキャッシュラインサイズ単位でデータ転送を行うので、128バイトのデータ毎にS404の判断が行われる。
指定された転送サイズ分のデータが送られていなければ(S404、NO)、処理はS401に戻る。指定された転送サイズ分のデータが送られていれば(S404、YES)、処理は終了する。DMA転送はキャッシュラインサイズ単位でデータ転送を行うので、128バイトのデータ毎にS404の判断が行われる。
以上のようなGET操作により、キャッシュメモリ12Aに、キャッシュメモリサイズ内のデータを転送することができる。
したがって、あるプログラムがキャッシュメモリ12Aのメモリサイズ以下のプログラムであって、そのプログラム自体が仮想アドレスで実行されることが想定されていない物理アドレス空間下で実行されるものであっても、本実施の形態における仮想アドレスキャッシュメモリ12Aを利用して実行させることができる。例えば、キャッシュメモリ12Aのメモリサイズは256KBであり、そのプログラムも256KBである場合、そのプログラムのアドレスを仮想アドレス空間中の256KBの範囲内の仮想アドレスに変換することにより、そのプログラムを、本実施の形態のプロセッサにおいて実行させることができる。そのプログラムは、キャッシュメモリ12AにDMA転送でGETされて、実行される。
したがって、あるプログラムがキャッシュメモリ12Aのメモリサイズ以下のプログラムであって、そのプログラム自体が仮想アドレスで実行されることが想定されていない物理アドレス空間下で実行されるものであっても、本実施の形態における仮想アドレスキャッシュメモリ12Aを利用して実行させることができる。例えば、キャッシュメモリ12Aのメモリサイズは256KBであり、そのプログラムも256KBである場合、そのプログラムのアドレスを仮想アドレス空間中の256KBの範囲内の仮想アドレスに変換することにより、そのプログラムを、本実施の形態のプロセッサにおいて実行させることができる。そのプログラムは、キャッシュメモリ12AにDMA転送でGETされて、実行される。
(PUT操作)
次に、PUT操作について説明する。
あるプロセッサが、キャッシュメモリ12AのデータをDRAM13にDMA転送するPUT操作を行う場合、まず、転送元アドレスSAのキャッシュメモリ12Aのデータが最新のデータであるか否かがキャッシュステートメモリ24の状態を確認することによって行われ、最新でない場合は、一貫性保持プロトコルであるスヌープ機構16を用いて確認する。DMAC26は、転送元アドレスSAの最新のデータを読み出し、転送先アドレスDAにDMA転送を行う。
次に、PUT操作について説明する。
あるプロセッサが、キャッシュメモリ12AのデータをDRAM13にDMA転送するPUT操作を行う場合、まず、転送元アドレスSAのキャッシュメモリ12Aのデータが最新のデータであるか否かがキャッシュステートメモリ24の状態を確認することによって行われ、最新でない場合は、一貫性保持プロトコルであるスヌープ機構16を用いて確認する。DMAC26は、転送元アドレスSAの最新のデータを読み出し、転送先アドレスDAにDMA転送を行う。
転送元アドレスSAのデータエントリがキャッシュメモリ12A上に存在する場合は、転送元アドレスSAのデータはキャッシュメモリ12Aのデータを用いる。しかし、キャッシュメモリ12A上に転送元アドレスSAの最新データがない場合もある。その場合、DMAC26は、バス14を経由してDRAM13から値を取り出すが、キャッシュメモリ12A上にはそのエントリを置かず、データのみを取得する。
また、転送先アドレスDAも仮想アドレスであるので、転送先アドレスDAの最新データが、バス14上のキャッシュ一貫性プロトコルを用いて、もし、DRAM13に対応するキャッシュメモリ12Aにあれば、そのキャッシュメモリ12Aの対応するデータをinvalidにすると共に、その転送データをDRAM13に書き込むか、あるいは、他のプロセッサのキャッシュメモリ12Aのエントリを更新して転送データをそのデータメモリ23に書き込む。
以上のようにすることで、キャッシュメモリ12A上に転送元アドレスSAの最新データがない場合は、キャッシュメモリ12Aに既に存在するエントリを追い出すことをせずに、PUT操作を実行する。
図19は、DMAによるPUT操作の処理を示すフローチャートである。
図19に示すように、まず、キャッシュメモリ12Aのデータメモリ23から、仮想アドレスである転送元アドレスSAを読み出す(S411)。S411における処理は、図3のメモリリードの処理と同様である。
図19に示すように、まず、キャッシュメモリ12Aのデータメモリ23から、仮想アドレスである転送元アドレスSAを読み出す(S411)。S411における処理は、図3のメモリリードの処理と同様である。
キャッシュメモリ12Aにおいて、キャッシュヒットがあったか、否かが判断される(S412)。
キャッシュヒットがあれば(S412、YES)、キャッシュリードの処理が実行される(S413)。S413における処理は、図6のキャッシュリードの処理と同様である。S413の後に、処理はS416に移行する。
キャッシュヒットがあれば(S412、YES)、キャッシュリードの処理が実行される(S413)。S413における処理は、図6のキャッシュリードの処理と同様である。S413の後に、処理はS416に移行する。
キャッシュヒットがなければ(S412、NO)、DMAC26は自己のMMUを用いて、仮想アドレスである転送元アドレスSAを変換して物理アドレスRAを取得する(S414)。
DMAC26は、バス14を経由してDRAM13から、S414で取得した物理アドレスである転送元アドレスSA上のデータを得る(S415)。
DMAC26は、バス14を経由してDRAM13から、S414で取得した物理アドレスである転送元アドレスSA上のデータを得る(S415)。
次に、DMAC26は自己のMMUを用いて、仮想アドレスである転送先アドレスDAを変換して物理アドレスRAを取得する(S416)。
DMAC26は、バス14を経由してDRAM13から、S416で取得した物理アドレスである転送先アドレスDA上にデータを書く(S417)。
DMAC26は、バス14を経由してDRAM13から、S416で取得した物理アドレスである転送先アドレスDA上にデータを書く(S417)。
そして、DMAC26は、指定された転送サイズ分のデータを送ったか否かを判定する(S418)。
指定された転送サイズ分のデータが送られていなければ(S418、NO)、処理はS411に戻る。指定された転送サイズ分のデータが送られていれば(S418、YES)、処理は終了する。DMA転送は、キャッシュラインサイズ単位でデータ転送を行うので、128バイトのデータ毎にS418の判断が行われる。
指定された転送サイズ分のデータが送られていなければ(S418、NO)、処理はS411に戻る。指定された転送サイズ分のデータが送られていれば(S418、YES)、処理は終了する。DMA転送は、キャッシュラインサイズ単位でデータ転送を行うので、128バイトのデータ毎にS418の判断が行われる。
(プリフェッチの場合)
ここでは、キャッシュメモリ12Aにデータをプリフェッチする場合、すなわちDMA転送における転送元アドレスSAと転送先アドレスDAが同じ場合を説明する。
ここでは、キャッシュメモリ12Aにデータをプリフェッチする場合、すなわちDMA転送における転送元アドレスSAと転送先アドレスDAが同じ場合を説明する。
例えば、キャッシュメモリ12A中の仮想アドレスのデータがinvalidである場合、予め最新のデータをキャッシュメモリ12Aに転送しておき、CPU11はその転送後、直ぐにそのデータを利用できるようにしたい場合がある。
この場合、invaildの仮想アドレスのデータを更新するので、DMA転送では転送元アドレスSAと転送先アドレスDAが同じとなる。その結果、DMA転送によってキャッシュメモリ12Aのその仮想アドレスに最新のデータが転送される。
この場合、invaildの仮想アドレスのデータを更新するので、DMA転送では転送元アドレスSAと転送先アドレスDAが同じとなる。その結果、DMA転送によってキャッシュメモリ12Aのその仮想アドレスに最新のデータが転送される。
図20は、プリフェッチに係るGET操作の処理を示すフローチャートである。
図20に示すように、まず、DMAC26は、転送元アドレスSAと転送先アドレスDAが同じ仮想アドレス(EA)か否かを判定する(S421)。一致しないとき(S421、NO)は、処理は図18のGET操作の処理に移行する。
図20に示すように、まず、DMAC26は、転送元アドレスSAと転送先アドレスDAが同じ仮想アドレス(EA)か否かを判定する(S421)。一致しないとき(S421、NO)は、処理は図18のGET操作の処理に移行する。
一致したとき(S421、YES)は、処理はメモリリード2の処理が実行される(S422)。
そして、DMAC26は、指定された転送サイズ分のデータを送ったか否かを判定する(S423)。
指定された転送サイズ分のデータが送られていなければ(S423、NO)、処理はS421に戻る。指定された転送サイズ分のデータが送られていれば(S423、YES)、処理は終了する。
そして、DMAC26は、指定された転送サイズ分のデータを送ったか否かを判定する(S423)。
指定された転送サイズ分のデータが送られていなければ(S423、NO)、処理はS421に戻る。指定された転送サイズ分のデータが送られていれば(S423、YES)、処理は終了する。
図21は、図20のS422のメモリリード2の処理を示すフローチャートである。図21は、図3のメモリリードの処理と略同じ内容であり、同じ処理については、同じステップ番号を付し、説明は省略する。図21において図3と異なる点は、キャッシュリードの処理(S5)が、次に説明するキャッシュリード2の処理(S431)に変わったことである。さらに、メモリリードが、DMA転送のPUT操作のソース(転送元アドレスSA)に対するものか否かが判定される(S432)。DMA転送のPUT操作のソースに対するものであれば(S432、YES)、処理は終了し、そうでなければ、処理は、ステップS4に移行する。
図22は、図21のS431のキャッシュリード2の処理を示すフローチャートである。図22は、図6のキャッシュリードの処理と略同じ内容であり、同じ処理については、同じステップ番号を付し、説明は省略する。図22において図6と異なる点は、図6におけるS49とS50が無いことである。これらの処理が無いのは、DMA転送において転送元アドレスSAと転送先アドレスDAが同じ場合、すなわちプリフェッチ処理においては不要だからである。
また、DMAによるGETとPUTの操作がされる場合、TLB登録処理(図4)、キャッシュリード処理(図6)及びキャッシュライト処理(図8)の内容が次のように変更される。
図23は、DMA処理を含む場合のTLB登録処理の流れを示すフローチャートである。図23は、図4のTLB登録の処理と略同じ内容であり、同じ処理については、同じステップ番号を付し、説明は省略する。図23において図4と異なる点は、S16の後に、そのエントリに対応するアドレスはDMAのPUT操作のソースであるか、すなわち転送元アドレスであるか否かの判断がされる点である(S441)。そのアドレスが転送元アドレスであるとき(S441、YES)、TLBミスとその物理ページ番号RPをDMAC26へ通知し(S442)、 TLB登録処理は、終了する。そのアドレスが転送元アドレスでないとき(S441、NO)、処理はS17へ移行する。
図24は、DMA処理を含む場合のキャッシュリード処理を示すフローチャートである。図24は、図6のキャッシュリードの処理と略同じ内容であり、同じ処理については、同じステップ番号を付し説明は省略する。図24において図6と異なる点は、図6の処理がキャッシュコントローラにより実行されるのに対して、図24の処理はDMAC26により実行される点と、S44の後に、そのエントリに対応するアドレスはDMAのPUT操作のソースであるか、すなわち転送元アドレスであるか否かの判断がされる点である(スS451)。
そのアドレスが転送元アドレスであるとき(S451、YES)、データメモリ23のデータをDMAC26に送り(S452)、処理は終了する。そのアドレスが転送元アドレスでないとき(S451、NO)、処理はS45へ移行する。
図25は、DMA処理を含む場合のキャッシュライト処理を示すフローチャートである。図25は、図8のキャッシュライトの処理と略同じ内容であり、同じ処理については、同じステップ番号を付し説明は省略する。図25において図8と異なる点は、図8の処理がキャッシュコントローラにより実行されるのに対して、図25の処理はDMAC26により実行される点と、S73の後に、そのキャッシュライトがDMACからの要求で全キャッシュラインへの書き込みであるか否かの判断がされる点である(S461)。
そのキャッシュライトがDMAC26からの要求で全キャッシュラインへの書き込みであるとき(S461、YES)、処理はS79へ移行する。そのキャッシュライトがDMAC26からの要求で全キャッシュラインへの書き込みでないとき(S461、NO)、処理はS74へ移行する。
また、S79の後のS81におけるデータの書き込み処理は、データがDMAC26からの場合は、DMAC26からのデータがキャッシュメモリ12Aに書き込まれる(S462)。
以上のように、キャッシュメモリと主メモリとの間のデータ転送を、DMA処理することにより、仮想アドレスでDMAを実行可能として、DMA転送時のキャッシュヒット率の高めることができる、及び、DMA転送後に対応するプロセッサがアクセスしたときのキャッシュヒット率を高めることができるプロセッサを実現することができる。
IV)レベル2以上のレベルのキャッシュメモリへの適用
次に、本実施の形態に係るプロセッサについて説明する。ここでは、複数レベルのキャッシュを利用するマルチプロセッサシステムを例に挙げて説明する。
図26は、複数レベルのキャッシュメモリのプロセッサを有するマルチプロセッサシステム1Cの構成を示すブロック図である。図26に示すように、マルチプロセッサシステム1Cは、それぞれがL1キャッシュ51を有する複数のプロセッサP11,P12,・・と、複数のプロセッサのそれぞれのL1キャッシュ51と接続された1つのL2キャッシュ52と、そのL2キャッシュ52と接続された主メモリとしてのDRAM13とを含んで構成されている。マルチプロセッサシステム1Cが、全体で1つの半導体チップに形成されていてもよいし、一部が別の半導体装置に形成されていてもよい。
次に、本実施の形態に係るプロセッサについて説明する。ここでは、複数レベルのキャッシュを利用するマルチプロセッサシステムを例に挙げて説明する。
図26は、複数レベルのキャッシュメモリのプロセッサを有するマルチプロセッサシステム1Cの構成を示すブロック図である。図26に示すように、マルチプロセッサシステム1Cは、それぞれがL1キャッシュ51を有する複数のプロセッサP11,P12,・・と、複数のプロセッサのそれぞれのL1キャッシュ51と接続された1つのL2キャッシュ52と、そのL2キャッシュ52と接続された主メモリとしてのDRAM13とを含んで構成されている。マルチプロセッサシステム1Cが、全体で1つの半導体チップに形成されていてもよいし、一部が別の半導体装置に形成されていてもよい。
複数レベルのキャッシュ(例えば、プロセッサがL1キャッシュとL2キャッシュ)を有するプロセッサの場合、従来はL2キャッシュにおけるエイリアスの発生を回避するために、L2キャッシュへのアクセスは物理アドレスで行われていた。また、L1キャッシュにおけるエイリアスの発生を回避するために、L1キャッシュのコヒーレンシ管理では、物理アドレスが使用されていた。
このようなプロセッサにおいて、CPUによるL1キャッシュへのアクセスが発生すると、ほとんどの場合、L1キャッシュとは別に設けられているMMUのTLBへの参照が行われる。これは、L1キャッシュへのアクセス頻度が高いこと、および非特許文献1「Computer Architecture -- A Quantitative Approach -- Third Edition」の Figure 5.57 および Figure 5.58 に見られるように、L2 キャッシュのレイテンシは20サイクル程度以下であることが多く、L1ミスが発生したとき、すぐにL2をアクセスできるようにするためである。よって、プロセッサにおけるTLBのハードウェアの消費電力が大きいという問題があった。
そこで、本実施の形態は、TLBハードウェアの消費電力を小さくできるプロセッサ及びプロセッサシステムを提供するものである。
そこで、本実施の形態は、TLBハードウェアの消費電力を小さくできるプロセッサ及びプロセッサシステムを提供するものである。
図27は、L2キャッシュ52の構成図である。図27において、図17と同じ構成要素は、同じ符号を付し説明は省略する。
図27では、アービタ42はマルチプレクサ41に接続されている。アービタ42は、各プロセッサからの信号を監視し、L2キャッシュ52へ入力される仮想アドレスEAが、どのプロセッサから供給されたものかを判定し、その判定結果に応じて、入力される仮想アドレスEAを選択するように、選択信号SSをマルチプレクサ41に出力する。マルチプレクサ41は、選択信号SSに基づいて入力信号を切り替える。
図27では、アービタ42はマルチプレクサ41に接続されている。アービタ42は、各プロセッサからの信号を監視し、L2キャッシュ52へ入力される仮想アドレスEAが、どのプロセッサから供給されたものかを判定し、その判定結果に応じて、入力される仮想アドレスEAを選択するように、選択信号SSをマルチプレクサ41に出力する。マルチプレクサ41は、選択信号SSに基づいて入力信号を切り替える。
L1キャッシュ51は、TLBのハードウェアを有しないキャッシュである。各プロセッサのCPUは、仮想アドレスを用いてL1キャッシュ51にアクセスするが、L1キャッシュ51は、TLBを含まないので、キャッシュミスの場合、L2キャッシュ52へのアクセスは仮想アドレスにより行われる。L2キャッシュ52は、上述したキャッシュメモリ12等と略同様の構成を有し、仮想アドレスを用いてアクセスされ、物理アドレスによりDRAM13にアクセスする。
また、L2キャッシュ52は、複数のプロセッサP11,P12,・・・のそれぞれのL1キャッシュ51のためのキャッシュであるので、L2キャッシュ52において、キャッシュデータをプロセッサ毎に対応して管理して識別するために、プロセス番号PIDはプロセッサ識別子の情報を含む。
また、L2キャッシュ52は、複数のプロセッサP11,P12,・・・のそれぞれのL1キャッシュ51のためのキャッシュであるので、L2キャッシュ52において、キャッシュデータをプロセッサ毎に対応して管理して識別するために、プロセス番号PIDはプロセッサ識別子の情報を含む。
さらに、L2キャッシュ52のキャッシュステートメモリ24は、L2キャッシュ52のキャッシュステートだけでなく、L1キャッシュ51のキャッシュステートも管理する。
そのために、複数のL1キャッシュ51とL2キャッシュ52との間でキャッシュデータのコヒーレンシを維持するための一貫性保持プロトコル機構であるスヌープ機構16Aが、各プロセッサとL2キャッシュ52との間に設けられている。
よって、キャッシュステートメモリ24は、さらに各L1キャッシュ51に対応するキャッシュステートと各L1キャッシュ51のウエイ情報を記憶する記憶領域を含むように拡張される。
L2キャッシュ52の動作は、図3から図10のフローチャートに示した動作と同様である。
L1キャッシュ51のキャッシュヒット率が例えば95%以上であれば、L2キャッシュ52へのアクセス率は5%以下となる。よって、L2キャッシュ52においてのみTLBが参照されるので、TLB参照時における消費電力は小さくなる。
そのために、複数のL1キャッシュ51とL2キャッシュ52との間でキャッシュデータのコヒーレンシを維持するための一貫性保持プロトコル機構であるスヌープ機構16Aが、各プロセッサとL2キャッシュ52との間に設けられている。
よって、キャッシュステートメモリ24は、さらに各L1キャッシュ51に対応するキャッシュステートと各L1キャッシュ51のウエイ情報を記憶する記憶領域を含むように拡張される。
L2キャッシュ52の動作は、図3から図10のフローチャートに示した動作と同様である。
L1キャッシュ51のキャッシュヒット率が例えば95%以上であれば、L2キャッシュ52へのアクセス率は5%以下となる。よって、L2キャッシュ52においてのみTLBが参照されるので、TLB参照時における消費電力は小さくなる。
上述した例は、複数のプロセッサのそれぞれのL1キャッシュが1つのL2キャッシュに接続されるマルチプロセッサシステムである。しかし、1つのL1キャッシュと1つのL2キャッシュを有するプロセッサにおいて、そのL2キャッシュを上述した構成と同様にした場合においても、同様の効果を生じる。
また、上述した例は、L1キャッシュとL2キャッシュの例であるが、L2キャッシュとL3キャッシュの間のように、レベル2以下の下位のキャッシュ間において、より下位のキャッシュに、上述したL2キャッシュ52と同様の構成を有するようにしたプロセッサあるいはマルチプロセッサにおいても、同様の効果を得ることができる。
次に、上述したL2キャッシュ52の構成の変形例を説明する。以下、各変形例では、上述したL2キャッシュ52の構成と異なる点を主として説明し、同一の符号を付した構成要素についての説明は省略する。
(変形例1)
変形例1に係る仮想アドレスキャッシュメモリの基本的な構成は、上述したL2キャッシュ52と同じであるが、エイリアスを検出した場合の動作が異なる。
(変形例1)
変形例1に係る仮想アドレスキャッシュメモリの基本的な構成は、上述したL2キャッシュ52と同じであるが、エイリアスを検出した場合の動作が異なる。
実施の形態では、エイリアスが検出された場合、L2キャッシュ52では、図4のステップS17以降に示すように、エイリアスを起こしたTLBエントリの無効化処理が行われた。
これに対して、変形例1ではS21の処理は行わない。すなわち、エイリアスを起こしたTLBエントリの無効化は行わずに新しいエントリを登録する。変形例1では、同一プロセッサのキャッシュ、TLB内部でエイリアスは発生しているが、スヌーピングによるキャッシュコヒーレンス制御を同一プロセッサにも適用することでエイリアスを解決する。すなわち、エイリアスを起こしているアドレスはL2キャッシュ52内で複数存在しているが、エイリアスを起こしているそれぞれのキャッシュラインにコヒーレンスプロトコルを適用することで、複数のキャッシュラインの状態のコヒーレンシが保持される。
これに対して、変形例1ではS21の処理は行わない。すなわち、エイリアスを起こしたTLBエントリの無効化は行わずに新しいエントリを登録する。変形例1では、同一プロセッサのキャッシュ、TLB内部でエイリアスは発生しているが、スヌーピングによるキャッシュコヒーレンス制御を同一プロセッサにも適用することでエイリアスを解決する。すなわち、エイリアスを起こしているアドレスはL2キャッシュ52内で複数存在しているが、エイリアスを起こしているそれぞれのキャッシュラインにコヒーレンスプロトコルを適用することで、複数のキャッシュラインの状態のコヒーレンシが保持される。
例えば、プロセスAが書き込んだ物理アドレスをプロセスBが読み出すと、以下のような動作が行われる。プロセスAが書き込んだ直後に同一プロセッサ上のプロセスBが読みだそうとしているケースを考える。プロセスAの仮想アドレスからみると、キャッシュステートはModifiedであり、プロセスBの仮想アドレスからみると、キャッシュステートはInvalidである。
したがって、キャッシュミスなので、図6のS44に進んでDRAM13へのアクセスが行われる。
このDRAMへのアクセスに対して、スヌープが行われる。すなわち、図2のTLB物理ページCAM25をアクセスし、プロセスAが管理するTLBエントリがヒットする。プロセスAが書き込んだキャッシュラインがアクセスされ、Modifiedレスポンスが返されて、データが出力される。プロセスAが管理するキャッシュラインはSharedステートになる。該プロセッサは、プロセスAが出力したModifiedレスポンスとデータを受け取る。リクエストを出したプロセスBが管理するキャシュラインが取り込まれ、キャッシュステートはSharedにされる。
変形例1では、同一プロセッサ上で時分割で実行されているプロセスAとプロセスBが、あたかも別々のプロセッサで実行されているかのような動作をする。
変形例1では、同一プロセッサ上で時分割で実行されているプロセスAとプロセスBが、あたかも別々のプロセッサで実行されているかのような動作をする。
なお、変形例1の構成の場合、TLB物理ページCAM25ではマルチヒットが許される。具体的には、TLB物理ページCAM25のヒット出力は、エントリ毎に1ビットが割り当てられ、エンコードされない。また、TLB物理ページCAM25がマルチヒットを許すことに対応して、キャッシュステートメモリ24は、全エントリの同時アクセスを可能とする。具体的には、キャッシュステートメモリ24は、SRAMではなく、通常のロジック回路により構成される。そして、キャッシュステートメモリ24からの出力は、コヒーレントバスのステートのようにプライオリティーエンコーダなどでエンコードされる。ステートのエンコードには例えば、ステート毎に1ビットを割り当てるようにキャッシュステートをエンコードし、ステートメモリ24のエイリアスを発生している全てのエントリからの論理ORをとって、ステートメモリ24としてのステートを得る、などの方法を用いても良い。
変形例1の仮想アドレスキャッシュメモリによれば、L2キャッシュ52の構成と同様の効果が得られると共に、エイリアスを起こしたTLBエントリの無効化処理を省くことができる。
(変形例2)
変形例2に係る仮想アドレスキャッシュメモリの基本的な構成は、上述したL2キャッシュ52と同じであるが、変形例2ではエイリアスを起こしているTLB仮想ページメモリ21のインデックスと、登録しようとしているインデックスが一致してもTLBエントリを書き換えない。つまり、エイリアスを起こしているTLB仮想ページメモリ21の各エントリは完全に独立した制御となり、TLBでのエイリアス処理をなくして、エイリアスを起こしているエントリ間の整合性はキャッシュコヒーレンス機構に任せられる。
すなわち、変形例2は、エイリアスを検出した場合にTLB仮想ページメモリ21のインデックスのチェックを行わない点で異なっている。
変形例2に係る仮想アドレスキャッシュメモリの基本的な構成は、上述したL2キャッシュ52と同じであるが、変形例2ではエイリアスを起こしているTLB仮想ページメモリ21のインデックスと、登録しようとしているインデックスが一致してもTLBエントリを書き換えない。つまり、エイリアスを起こしているTLB仮想ページメモリ21の各エントリは完全に独立した制御となり、TLBでのエイリアス処理をなくして、エイリアスを起こしているエントリ間の整合性はキャッシュコヒーレンス機構に任せられる。
すなわち、変形例2は、エイリアスを検出した場合にTLB仮想ページメモリ21のインデックスのチェックを行わない点で異なっている。
変形例2のTLBエントリ登録処理では、図4のS17、S20、S21及びS22の処理が除かれ、S16及びS24の処理の後に、ステップS18及びS19の処理が実行される。
なお、変形例2の構成の場合、ハードウェア構成上の制約は変形例1と同じで、TLB物理ページCAM25でのマルチヒットが認められ、キャッシュステートメモリ24は、複数のエントリを同時にアクセスすることができる。
なお、変形例2の構成の場合、ハードウェア構成上の制約は変形例1と同じで、TLB物理ページCAM25でのマルチヒットが認められ、キャッシュステートメモリ24は、複数のエントリを同時にアクセスすることができる。
変形例2によれば、TLBエントリが完全に独立して行われ、同一プロセッサで実行される複数のプロセスは、異なるプロセッサで実行されるのとまったく同じ動きとなる。
よって、変形例2は、変形例1と同様の効果を有し、複数のプロセスを実行する時にそれぞれのプロセスのTLBエントリが無効化されないので、TLBミスのオーバーヘッドは小さくなる。
よって、変形例2は、変形例1と同様の効果を有し、複数のプロセスを実行する時にそれぞれのプロセスのTLBエントリが無効化されないので、TLBミスのオーバーヘッドは小さくなる。
(変形例3)
図28は、変形例3に係るキャッシュメモリの構成図である。
図28に示すように、TLBCAM21Aと、TLB物理ページメモリ22Aと、データメモリ23Aと、キャッシュステートメモリ24Aとを含んで構成されている。変形例3に係るキャッシュメモリは、フルアソシアティブキャッシュである。
図28は、変形例3に係るキャッシュメモリの構成図である。
図28に示すように、TLBCAM21Aと、TLB物理ページメモリ22Aと、データメモリ23Aと、キャッシュステートメモリ24Aとを含んで構成されている。変形例3に係るキャッシュメモリは、フルアソシアティブキャッシュである。
例えば、キャッシュ容量256KB、キャッシュラインサイズ128バイトのフルアソシアティブキャッシュを4KBページサイズ単位で管理する構成となっている。TLBで管理していたページ情報を10ビット、キャッシュラインの状態も10ビット持つと仮定する。
このとき、変形例3のTLBCAM21Aのサイズは物理アドレス、仮想アドレスをそれぞれ40ビット,32ビットとすると、
物理ページ番号 40ビット − 12ビット = 28ビット、
仮想ページ番号 32ビット − 12ビット = 20ビット、
エントリ数 256KB / 4KB = 64 エントリ、
であるから、
TLB サイズ= (物理ページ番号+仮想ページ番号+状態ビット) * エントリ数
= (28+20+10) * 64
= 3712ビット
L1キャッシュのステートメモリ(従来のタグメモリに相当する)のサイズは、キャッシュのリプレースをページ単位で行うように制限したのでエントリ数が大幅に減少する。
このとき、変形例3の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ビット
であり、この構成で必要なのは物理ページ情報であり仮想ページ情報は不要なので、
L1Tagメモリサイズ
= ( Tagビット数 ) * エントリ総数
+ (状態ビット数*ページ内のライン数*エントリ総数
= ( 22 ビット*64) + 10 ビット*64 * 32 )
= 1408 + 20480 ビット
= 21888 ビット
となる。
エントリ数 = 256KB / 4KB = 64 エントリ、
(64エントリ = アドレス 6ビット)、
Indexビット数= ウェイあたりのエントリ数 = 6ビット、
Tagビット数= 物理アドレス空間− ( エントリ数+ラインサイズ)
= 40ビット − ( 6ビット + 12ビット)
= 40ビット − 18ビット
= 22ビット
であり、この構成で必要なのは物理ページ情報であり仮想ページ情報は不要なので、
L1Tagメモリサイズ
= ( Tagビット数 ) * エントリ総数
+ (状態ビット数*ページ内のライン数*エントリ総数
= ( 22 ビット*64) + 10 ビット*64 * 32 )
= 1408 + 20480 ビット
= 21888 ビット
となる。
よって、次の条件、
L1サイズ 256KB、full set associative(ただし、管理は4KB)、
TLBエントリ数 64エントリ full associative、
最小ページサイズ 4KB、
仮想アドレス/物理アドレスサイズ 32bit/40bit、
L1ラインサイズ 128バイト、
において、TLBCAM21Aは、約4000ビット、L1キャッシュメモリであるキャッシュステートメモリ24Aは約22000ビット、合計で約26000ビットのメモリしか必要としない。
L1サイズ 256KB、full set associative(ただし、管理は4KB)、
TLBエントリ数 64エントリ full associative、
最小ページサイズ 4KB、
仮想アドレス/物理アドレスサイズ 32bit/40bit、
L1ラインサイズ 128バイト、
において、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が呼び出されるものとする。キャッシュはライトアロケート、ライトバック方式を採用しているものとする。
以下、図29と図30を用いて、共有メモリリードと共有メモリライトを説明する。図29は、変形例3における共有メモリリード時のフローチャートである。図30は、変形例3における共有メモリライト時のフローチャートである。
図29に示すように、メモリリードが開始されると、仮想インデックスで、TLB仮想ページメモリ21Aとデータメモリ23Aとステートメモリ24Aへのアクセスが行われる(S201)。TLB仮想ページメモリ21Aがヒットしなかった時(S202、NO)は、リード時のTLB登録処理が実行される。TLB仮想ページメモリ21Aがヒットした時(S202、YES)は、処理はS212に進む。
具体的には、登録するPTE(ページテーブルエントリ)が、DRAM13から読み出される(S203)。読み出したPTE(ページテーブルエントリ)が、DRAM13に存在するかが判断される(S204)。PTEが存在しない場合(S204、NO)は、OSに例外発生の通知が行われる(S205)。
PTEが存在する場合(S204、YES)は、このプロセスに読み出しを許可するか否かが判断される(S206)。読み出しを許可しない場合(S206、NO)は、処理はS205に進む。読み出しを許可する場合(S206、YES)は、PTEのreferenceビットを立て(S207)、処理はS208に進む。
PTEが存在する場合(S204、YES)は、このプロセスに読み出しを許可するか否かが判断される(S206)。読み出しを許可しない場合(S206、NO)は、処理はS205に進む。読み出しを許可する場合(S206、YES)は、PTEのreferenceビットを立て(S207)、処理はS208に進む。
そして、読み出したPTEと有効な全TLBエントリのいずれかと、物理ページ番号が一致したか否かが判断される(S208)。物理ページ番号が一致しない場合(S17、NO)は、TLBミス処理が実行され(S209)、新しいPTEがTLBエントリとして登録され(S210)、処理はS212に進む。
また、物理ページ番号が一致した場合(S208、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われ(S211)、処理はS212に進む。
S212では、その仮想ページはリード可能かの判断がされる。仮想ページがリード可能でない場合(S212、NO)は、割込処理によりプロテクト違反をCPU11通知し(S213)、OSによる例外処理が実行される。
S212では、その仮想ページはリード可能かの判断がされる。仮想ページがリード可能でない場合(S212、NO)は、割込処理によりプロテクト違反をCPU11通知し(S213)、OSによる例外処理が実行される。
仮想ページがリード可能の場合(S212、YES)は、キャッシュリードが行われる。すなわち、キャッシュヒットしているか否かが判断される(S214)。キャッシュヒットしていない場合(S214、NO)は、TLBの物理ページ番号から物理アドレスを生成してメモリアクセス要求を発行する(S215)。そして、得られたデータをキャッシュメモリに取り込む(S216)。
メモリアクセス要求は、メモリ、および他のプロセッサでスヌープされる。メモリアクセス要求をスヌープしたプロセッサは、自分の管理するキャッシュ状態をチェックし、キャッシュ状態が Modified の場合には、スヌープ応答として Modified レスポンス、キャッシュ状態が Exclusive または Shared の場合には Shared レスポンスを返すので、要求を出力したプロセッサはスヌープ応答に応じてキャッシュステートメモリ24Aの状態を更新する。すなわち、スヌープ応答が Shared レスポンスまたは Modifeid レスポンスであれば(S217、YES)、キャッシュステートメモリ24Aにある要求したキャッシュラインの状態を “Shared” に(S218)、スヌープ応答が Shared レスポンスもしくは Modified レスポンスのいずれでもなければ(S217、NO)、要求したキャッシュラインの状態を “Exclusive” に変更する(S219)。そして、CPU11へのデータの送信が行われる(S220)。
キャッシュヒットしている場合(S214、YES)は、処理は、S217に進む。
図30に示すように、メモリライトが開始されると、仮想インデックスで、TLB仮想ページメモリ21Aとデータメモリ23Aとステートメモリ24Aへのアクセスが行われる(S221)。TLB仮想ページメモリ21Aがヒットしなかった時(S222、NO)は、ライト時のTLB登録処理が実行される。
TLBがヒットした時(S222、YES)は、TLBヒットの判断となり、その仮想ページはライト可能かの判断がされる(S232)。ライト可能の場合(S232、YES)は、その仮想ページのDirtyビットは立っているか否かが判断され(S234)、その仮想ページのDirtyビットは立っていなければ(S234、NO)、TLBエントリとDRAM13上のPTEにDirtyビットを立て、キャッシュライトが行われる(S236)。その仮想ページのDirtyビットは立っていれば(S234、YES)、キャッシュライトが行われる(S236)。
また、その仮想ページがライト可能でない場合(S233、NO)は、割込処理によりプロテクト違反をCPU11に通知し(S233)、OSによる例外処理が実行される。
TLBがヒットしなかった時(S222、NO)は、TLB登録処理が開始され、登録するPTEが、DRAM13から読み出される(S223)。読み出したPTEが、DRAM13に存在するかが判断される(S224)。PTEが存在しない場合(S224、NO)は、OSに例外発生の通知が行われる(S226)。
PTEが存在する場合(S224、YES)は、このプロセスに書き込みを許可するか否かが判断される(S225)。プロセスに書き込みを許可しない場合(S225、NO)は、処理はS226に進む。
プロセスに書き込みを許可する場合(S225、YES)は、PTEのdirtyビットとreferenceビットを立てる(S227)。
PTEが存在する場合(S224、YES)は、このプロセスに書き込みを許可するか否かが判断される(S225)。プロセスに書き込みを許可しない場合(S225、NO)は、処理はS226に進む。
プロセスに書き込みを許可する場合(S225、YES)は、PTEのdirtyビットとreferenceビットを立てる(S227)。
そして、読み出したPTEと有効な全TLBエントリのいずれかと、物理ページ番号が一致したか否かが判断される(S228)。物理ページ番号が一致しない場合(S228、NO)は、TLBミス処理が実行され(S229)、新しいPTEがTLBエントリとして登録され(S230)、処理はS236に進む。
また、物理ページ番号が一致した場合(S228、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われ(S231)、処理はS236に進む。
図31に示すように、TLBミス処理が開始されると、未使用のTLBエントリが存在するか否かが判断される(S241)。未使用のTLBエントリが存在する場合(S241、YES)、処理は終了する。
未使用のTLBエントリが存在しない場合(S241、NO)、追い出すTLBエントリを決定し(S242)、追い出すTLBエントリにModifiedのキャッシュラインが存在するか否かが判断される(S243)。Modifiedのキャッシュラインが存在しない場合(S243、NO)は、処理は終了する。
Modifiedのキャッシュラインが存在する場合(S243、YES)は、追い出すページの全てのModifiedのキャッシュラインをフラッシュし(S244)、処理は終了する。
図31に示すように、TLBミス処理が開始されると、未使用のTLBエントリが存在するか否かが判断される(S241)。未使用のTLBエントリが存在する場合(S241、YES)、処理は終了する。
未使用のTLBエントリが存在しない場合(S241、NO)、追い出すTLBエントリを決定し(S242)、追い出すTLBエントリにModifiedのキャッシュラインが存在するか否かが判断される(S243)。Modifiedのキャッシュラインが存在しない場合(S243、NO)は、処理は終了する。
Modifiedのキャッシュラインが存在する場合(S243、YES)は、追い出すページの全てのModifiedのキャッシュラインをフラッシュし(S244)、処理は終了する。
図32に示すように、TLB登録処理が開始されると、登録するPTEが、DRAM13から読み出される(S251)。読み出したPTEが、DRAM13に存在するかが判断される(S252)。PTEが存在しない場合(S252、NO)は、OSに例外発生の通知が行われる(S253)。
PTEが存在する場合(S252、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S254)。
PTEが存在する場合(S252、YES)は、TLBミスの原因はストア命令であるか否かが判断される(S254)。
ストア命令でない場合(S254、NO)は、このプロセスに読み出しを許可するか否かが判断される(S257)。読み出しを許可しない場合(S257、NO)は、処理はS253に進む。読み出しを許可する場合(S257、YES)は、PTEのreferenceビットを立て(S258)、処理はS259に進む。
TLBミスの原因はストア命令である場合(S254、YES)は、このプロセスに書き込みを許可するか否かが判断される(S2555)。プロセスに書き込みを許可しない場合(S255、NO)は、処理はS253に進む。
プロセスに書き込みを許可する場合(S255、YES)は、PTEのdirtyビットとreferenceビットを立てる(S256)。
プロセスに書き込みを許可する場合(S255、YES)は、PTEのdirtyビットとreferenceビットを立てる(S256)。
そして、読み出したPTEと有効な全TLBエントリのいずれかと、物理ページ番号が一致したか否かが判断される(S259)。物理ページ番号が一致しない場合(S259、NO)は、TLBミス処理が実行され(S260)、新しいPTEがTLBエントリとして登録される(S261)。
また、物理ページ番号が一致した場合(S259、YES)は、物理ページ番号が一致したTLBエントリの仮想ページ番号、プロセス番号及びプロテクション情報の書き換えが行われる(S262)。
以上のように、プロセスAがプロセスBに渡すデータの作成を開始するとき、仮想インデックスでTLBをアクセスするが、図30のステップS222でTLBミスが発生するので、物理ページRP_1を仮想ページEP_1Aに関連付けるページテーブルエントリがTLBに呼び出される(S223)。このとき、TLBのValidビットがセットされ、ページ内の各キャッシュラインの状態はinvalidである。プロセスAに対しては、このページのwrite bitが立っているのでプロセスAはこのページに書き込むことができる。また、プロセス開始時にはこのページに対して書き込みは行っていないのでこのページはcleanであるが、メモリライトでアクセスしているのでページのdirtyビットをたてる(S235)。
ライトアロケート方式なので、書き込まれるキャッシュラインをDRAM13から読みだし(215)、このキャッシュラインの状態をvalid、dirtyとしてTLBを書き変える。以後、プロセスAによるキャッシュへの書き込みがキャッシュヒットするとキャッシュ上のデータの更新が行われ、キャッシュミスするとDRAM13からデータをキャッシュにアロケートした上でキャッシュの更新が行われる。ライトアロケート方式であるので、キャッシュラインの一部のみ更新しても、該当キャッシュラインは最新の状態を保っている。
プロセスAによるページへの書き込みが終わり、プロセスAからプロセスBに切り替わった状態を考える。プロセスBが立ち上がるまで、物理アドレスRP_1はアクセスされることなく、また、L1キャッシュからも追い出されていないものとする。プロセスBが物理アドレスRP_1をアクセスする(S201)と、プロセス番号が異なるため仮想アドレスはミスするが(S202)、物理アドレスはヒットする(S208)。そこで、TLBはページのvalid bitとdirty bitは書き変えずに、仮想ページ番号をEP_1AからEP_1Bに、プロセス番号をプロセスAからプロセスBに変更する、プロセスBに対してはwrite bitを落とすなど、プロセス切り替えのために必要な操作を行う(S211)。このとき、書き換えるのはページ情報のみで、キャッシュライン情報は書き変えないし、キャッシュフラッシュも行わない。
プロセスBが仮想アドレス空間EP_1Bを指定して物理アドレス空間RP_1をアクセスする場合を考える。TLBのプロセス番号、仮想ページ情報が書き換えられているが、TLB上のページテーブルは保持されており、L1キャッシュの内容も保持されているので、プロセスAが書き込んだ情報をプロセスBはキャッシュから読みだすことができる。同一ページ内でプロセスAが書き込んでいない領域に関しては、キャッシュラインの状態がinvalidであるのでキャッシュミスは発生するものの、メモリからデータをキャッシュにアロケートすることで正しいデータを読み出すことができる。
このように、プロセスBは不要なキャッシュミス、TLBミスを起こすことなく、プロセスAとの共用データをキャッシュから読みだすことができる。
他のTLBミスのためにRP_1がリプレース対象になった場合など、TLBをinvalid する必要である場合には、以下の動作を行うことでシステムが正しい動作をすることを保証することができる。図31は、変形例3におけるTLBミス処理時のフローチャートである。図32は、変形例3におけるTLB登録処理時のフローチャートである。
変形例3のTLBエントリを見ると、キャッシュラインがvaildか、そしてdirtyなデータを有するかが判る。そのキャッシュラインを主記憶に書き戻し、該当キャッシュラインのvalidビットを落とす(図31のS244)。
また、該当ページにdirtyなキャッシュラインがなくなるまでキャッシュフラッシュを行う。また、ページ内のキャッシュフラッシュが終わるとページをinvalidにする。リプレース対象のページテーブルエントリをTLBに登録する(図30のS230)。
変形例3では、TLBミスした場合に、「TLB上にRPがHitするエントリが存在するか」のチェックが追加され(S208,S228)、存在した場合にTLBエントリの一部を書き換える処理(S211,S231)が追加されている。従来はTLBミスが発生すると無条件でTLBミスとTLB登録という非常に重い処理が発生した。また、プロセスBが共有メモリへのアクセスを始めると、共有メモリ空間に対しては必ずプロセスAのTLBエントリの無効化と、そのエントリで示されるページ内のキャッシュフラッシュという重い処理が発生した。これに対し、変形例3によれば、TLBエントリを書き換えるという比較的軽い処理が呼び出される可能性が高くなっている。
なお、変形例3において、キャッシュステートをページ単位で管理することも可能である。キャッシュステートをページ単位で管理する場合、キャッシュステートメモリ24Aをページオフセット毎に持たずにページ全体で一組持つ構成にする。すなわち、ページオフセット(0~31)のデコードをせずに、コヒーレンシプロトコル、たとえばMESIの状態をページ全体で一組だけ持つ。ページ単位でキャッシュステートを管理する場合にも、データメモリは、図9(及び図14)と同様にアドレス(11:0)のようにページ内のオフセットをデータメモリに与えてアクセスされる。すなわち、キャッシュのステートメモリ以外は全く同じ構成で実装することができる。
以上のように、変形例3の仮想アドレスキャッシュメモリによれば、フルアソシアティブ方式においても、L2キャッシュ52と同様の効果を得ることができる。
以上のように、変形例3の仮想アドレスキャッシュメモリによれば、フルアソシアティブ方式においても、L2キャッシュ52と同様の効果を得ることができる。
(変形例4)
図33は、変形例4に係るキャッシュメモリの構成図である。
図33に示すように、TLBCAM21Bと、TLB物理ページメモリ22Bと、データメモリ23Bと、キャッシュステートメモリ24Bと、TLB物理ページCAM25Bを含んで構成されている。変形例4に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
図33は、変形例4に係るキャッシュメモリの構成図である。
図33に示すように、TLBCAM21Bと、TLB物理ページメモリ22Bと、データメモリ23Bと、キャッシュステートメモリ24Bと、TLB物理ページCAM25Bを含んで構成されている。変形例4に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
変形例4では、TLB物理ページCAM25Bにより、スヌープが行える構成となっている。
変形例4では、プロセッサコア側からの仮想アドレスでのアクセスはスヌープ機構のない変形例3とほぼ同様であるので、説明を省略する。プロセッサバスからの物理アドレスでのアクセスがあると、以下のような手順でキャッシュ状態のチェックを行う。
変形例4では、プロセッサコア側からの仮想アドレスでのアクセスはスヌープ機構のない変形例3とほぼ同様であるので、説明を省略する。プロセッサバスからの物理アドレスでのアクセスがあると、以下のような手順でキャッシュ状態のチェックを行う。
プロセッサバスの物理アドレスのページ番号にあたるビット(39:12)をTLB物理ページCAM25Bに入力する。TLB物理ページCAM25にマッチする物理ページがあれば、TLB物理ページCAM25はエントリ番号を出力する。マッチする物理ページがなければ、スヌープは終了する。
エントリ番号でキャッシュステートメモリ24Bをアクセスする。このとき、CPU11からのアクセスと競合したら、スヌープを優先する。
キャッシュステートメモリ24Bでキャッシュ状態をチェックする。要求されたリクエストとキャッシュステートに応じてスヌープレスポンスを決め、キャッシュステートを更新する。キャッシュステートが、MESIのModifiedなどで、データ転送が必要であれば、データ転送を行う。
キャッシュステートメモリ24Bでキャッシュ状態をチェックする。要求されたリクエストとキャッシュステートに応じてスヌープレスポンスを決め、キャッシュステートを更新する。キャッシュステートが、MESIのModifiedなどで、データ転送が必要であれば、データ転送を行う。
CPU11からのリクエストに対し、本構成のキャッシュは次のようにスヌープリクエストを出力する。
CPU11からの仮想アドレス31中のビット(11:7)でキャッシュステートメモリ24Bをアクセスし、キャッシュステートをチェックする。キャッシュはフルアソシアティブなので64個の候補がある。
同時に仮想アドレス31のビット(31:12)のページ番号およびプロセス番号PIDを
使ってTLB仮想ページCAM21Bをアクセスし、一致するエントリがないかを、チェックし、ある場合にはエントリ番号を出力する。無い場合には、TLBミスの処理を行う。TLBミスについては既に説明したので省略する。
使ってTLB仮想ページCAM21Bをアクセスし、一致するエントリがないかを、チェックし、ある場合にはエントリ番号を出力する。無い場合には、TLBミスの処理を行う。TLBミスについては既に説明したので省略する。
TLBヒットの場合、TLB仮想ページCAM21Bのエントリ番号出力を使ってキャッシュステートメモリ24Bからキャッシュステートを選択する。キャッシュが(M)もしくは(E)の場合、スヌープは不要である。それ以外の場合、プロセッサコアであるCPU11からの要求とキャッシュステートに応じて、必要ならスヌープ要求を出す。
スヌープが必要な例としては、ステートに対するライト、あるいは、TLBヒット条件下でのキャッシュミスがある。
スヌープ対応構成では、スヌープはTLB物理ページCAM25Bを用いてスヌープ対象のアドレスがキャッシュに存在するかチェックする。TLB物理ページCAM25BはTLBミス時にTLBに該当エントリが存在するかのチェックと共用であるが、TLBミスは頻発しないのでスヌープと共用してもオーバーヘッドは小さい。一方、キャッシュステートメモリ24Bはデータキャッシュアクセスの度に参照されるので頻繁にアクセスされるが、スヌープはTLB物理ページCAM25Bであらかじめ不要なトランザクションを除外しているのでキャッシュに存在しないはずのトランザクションのキャッシュ状態をチェックする必要がないのでオーバーヘッドは小さい。
以上のように、本変形例4の仮想アドレスキャッシュメモリによれば、フルアソシアティブ方式においても、L2キャッシュ52と同様の効果を得ることができる。
(変形例5)
図34は、本変形例5に係るキャッシュメモリの構成図である。
図34に示すように、TLBCAM21Cと、TLB物理ページメモリ22Cと、データメモリ23Cとを含んで構成されている。変形例5に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
変形例5では、TLB物理ページメモリ22Cは、エントリ毎にキャッシュステートの情報を含む構成となっている。
変形例5においても、L2キャッシュ52と同様の効果を得ることができる。
図34は、本変形例5に係るキャッシュメモリの構成図である。
図34に示すように、TLBCAM21Cと、TLB物理ページメモリ22Cと、データメモリ23Cとを含んで構成されている。変形例5に係る仮想アドレスキャッシュメモリも、フルアソシアティブキャッシュである。
変形例5では、TLB物理ページメモリ22Cは、エントリ毎にキャッシュステートの情報を含む構成となっている。
変形例5においても、L2キャッシュ52と同様の効果を得ることができる。
(変形例6)
変形例6のキャッシュメモリは、TLBは一次TLBのほかに、二次TLBを有する。二次TLBは、キャッシュとはリンクされていない、あるいは、ページテーブルのみで変換機構を有していないメモリである。
二次TLBは、一次TLBと同じ4ウェイもしくはそれ以上のアソシアティブで、一次TLBより多いエントリ数かつ、一次TLBを包含する。そして、二次TLBでdirtyやreferenceが管理される。
変形例6のキャッシュメモリは、TLBは一次TLBのほかに、二次TLBを有する。二次TLBは、キャッシュとはリンクされていない、あるいは、ページテーブルのみで変換機構を有していないメモリである。
二次TLBは、一次TLBと同じ4ウェイもしくはそれ以上のアソシアティブで、一次TLBより多いエントリ数かつ、一次TLBを包含する。そして、二次TLBでdirtyやreferenceが管理される。
仮想キャッシュメモリの構成において、キャッシュは4ウェイセットアソシアティブである。キャッシュはページ単位でリプレース管理され、キャッシュステートはキャッシュラインで管理される。変形例6でのエイリアス対策は以下のように行う。
例えば、仮想インデックスが一致したら、TLBのPID、仮想ページ番号、プロテクションなどが書き換えらえる。仮想インデックスが一致しなければ、エイリアスを起こしているTLBエントリはinvalidateせず、そのままにする。
また、異なるインデックス間でエイリアスが発生しているが、キャッシュライン単位でコヒーレンシ制御を行う。エントリ間のコヒーレンシはプロセッサバスのコヒーレンシ機構を使う。その結果、エントリ間はコヒーレントとなる。
変形例6においても、L2キャッシュ52と同様の効果を得ることができる。
変形例6においても、L2キャッシュ52と同様の効果を得ることができる。
(変形例7)
変形例7のキャッシュメモリは、TLB登録処理をおこなうとき、登録されたTLBエントリで示されるページを低優先順位でメモリから読みだす機構を設けたメモリである。
低優先順位でのアクセス中にプロセッサが該当ページの中のキャッシュラインへのアクセスを行うとそのキャッシュラインは高優先順位でアクセスされる。
変形例7においても、L2キャッシュ52と同様の効果を得ることができる。
変形例7のキャッシュメモリは、TLB登録処理をおこなうとき、登録されたTLBエントリで示されるページを低優先順位でメモリから読みだす機構を設けたメモリである。
低優先順位でのアクセス中にプロセッサが該当ページの中のキャッシュラインへのアクセスを行うとそのキャッシュラインは高優先順位でアクセスされる。
変形例7においても、L2キャッシュ52と同様の効果を得ることができる。
以上のように、L2キャッシュ52及びその変形例に係るL2キャッシュによれば、TLBハードウェアの消費電力を小さくすることができる。
また、上述したように、各変形例も、L2キャッシュに適用した場合だけでなくレベル2以下の下位のキャッシュに適用することもでき、そのような場合も、適用したレベルにおいてのみTLBが参照されるので、TLB参照時における消費電力は小さくなる。
また、図26に示すようなマルチプロセッサシステムにおいて、各プロセッサのL1キャッシュのためのL2キャッシュを設けることによって、L1キャッシュにTLBを設ける必要がないだけでなく、複数のL1キャッシュで一つのL2キャッシュを共有するので、全体のハードウェア量の低減を図ることができる。
また、図26に示すようなマルチプロセッサシステムにおいて、各プロセッサのL1キャッシュのためのL2キャッシュを設けることによって、L1キャッシュにTLBを設ける必要がないだけでなく、複数のL1キャッシュで一つのL2キャッシュを共有するので、全体のハードウェア量の低減を図ることができる。
以上説明した各キャッシュメモリは、ハードウェアのみで実装が可能であり、OSを含むソフトウェアからは通常のキャッシュ、TLBをもつプロセッサのように見せることが可能である。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 プロセッサシステム、1A、1B、1C マルチプロセッサシステム、11 CPU、12、12A キャッシュメモリ、13 DRAM、14 バス、15 メモリコントローラ、16 スヌープ機構、16a ハードウェア回路、21 TLB仮想ページメモリ、22 TLB物理ページメモリ、23 データメモリ、24 キャッシュステートメモリ、26 MMU付きDMAC、31 仮想アドレス、32 物理アドレス、41 マルチプレクサ、42 アービタ、51 L1キャッシュ、52 L2キャッシュ
Claims (6)
- プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBの書き換えが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、
前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、
前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBの書き換えが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、
前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBの書き換え後、前記データメモリへの前記キャッシュデータを書き込むときに保持している物理アドレスの書き換えを行う第2の物理アドレスメモリと、
を有することを特徴とする仮想アドレスキャッシュメモリ。 - 一貫性保持プロトコル機構を有するバスと、
前記バスを介して接続され、それぞれがCPUとキャッシュメモリを有する複数のプロセッサと、
前記バスに接続され、主メモリのための制御部であるメモリコントローラと、
を有し、
前記キャッシュメモリは、
プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、
前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、
前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、
前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリと、
を含み、
前記キャッシュメモリは、前記バスを介して受信した一のプロセッサからの書き戻しデータと同じ物理アドレスが、前記第2の物理アドレスメモリ中に存在し、前記TLB仮想ページメモリにおいても有効であって、かつデータメモリの対応するデータがInvalidである場合に、前記書き戻しデータを取り込み、
前記メモリコントローラは、前記一のプロセッサからの書き戻しデータが他のプロセッサのキャッシュメモリに取り込まれたときは、前記主メモリへのデータの書き戻しを行わないことを特徴とするマルチプロセッサシステム。 - バスを介して接続され、CPU、キャッシュメモリ及びDMAコントローラを有するプロセッサと、
前記バスに接続され、主メモリのための制御部であるメモリコントローラと、
を有し、
前記キャッシュメモリは、
プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、
前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、
前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、
前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリと、
を含み、
前記CPUは、前記主メモリから前記キャッシュメモリに、前記DMAコントローラによるDMA転送によりデータ転送する場合は、前記DMA転送における転送元アドレスと転送先アドレスを仮想アドレスにより設定し、
前記キャッシュメモリは、前記転送先アドレスにデータを書き込んだときは、前記キャッシュステートメモリの前記データが書き込まれた領域に対応するエントリに、Dirtyを書き込むことを特徴とするプロセッサ。 - 前記転送先アドレスは、前記転送元アドレスと同じであることを特徴とする請求項3に記載のプロセッサ。
- バスを介して接続され、CPU、キャッシュメモリ及びDMAコントローラを有するプロセッサと、
前記バスに接続され、主メモリのための制御部であるメモリコントローラと、
を有し、
前記キャッシュメモリは、
プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力すると共に、TLBミスが発生したときに、前記エントリデータの書き換えを行うTLB仮想ページメモリと、
前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、
前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
前記TLB仮想ページメモリに保持される仮想アドレスに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第1の物理アドレスメモリと、
前記データメモリに保持される前記キャッシュデータに対応する物理アドレスを保持すると共に、前記TLBミスが発生したときに、保持している物理アドレスの書き換えを行う第2の物理アドレスメモリと、
を含み、
前記CPUは、前記キャッシュメモリから前記主メモリに、前記DMAコントローラによるDMA転送によりデータ転送する場合は、前記DMA転送における転送元アドレスと転送先アドレスを仮想アドレスにより設定し、
前記キャッシュメモリは、前記転送元アドレスについての前記TLBミスあるいはキャッシュミスのときは、TLBミス処理あるいはキャッシュミス処理を行わないで、前記仮想アドレスの前記転送元アドレスに対応する物理アドレスから対象データを読み出して、前記主メモリにおけるの前記転送先アドレスに対応する物理アドレスに、前記対象データを書き込むことを特徴とするプロセッサ。 - CPUと、
一次キャッシュメモリと、
二次あるいは三次以上のキャッシュメモリと
を有し、
前記二次あるいは三次以上のキャッシュメモリは、
プロセスの仮想アドレスの所定の上位ビットの仮想ページタグを含むエントリデータを保持し、プロセッサからの仮想ページタグが一致するとヒット信号を出力するTLB仮想ページメモリと、
前記仮想ページタグ又はページオフセットをキャッシュインデックスとしてキャッシュデータを保持するデータメモリと、
前記キャッシュインデックスに対応して前記データメモリに記憶された前記キャッシュデータのキャッシュステートを保持するキャッシュステートメモリと、
を有する、ことを特徴とするプロセッサ。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010064639A JP2011198091A (ja) | 2010-03-19 | 2010-03-19 | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
| US12/958,298 US8607024B2 (en) | 2010-03-19 | 2010-12-01 | Virtual address cache memory, processor and multiprocessor |
| US14/090,428 US9081711B2 (en) | 2010-03-19 | 2013-11-26 | Virtual address cache memory, processor and multiprocessor |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010064639A JP2011198091A (ja) | 2010-03-19 | 2010-03-19 | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2011198091A true JP2011198091A (ja) | 2011-10-06 |
Family
ID=44648126
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010064639A Pending JP2011198091A (ja) | 2010-03-19 | 2010-03-19 | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US8607024B2 (ja) |
| JP (1) | JP2011198091A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014503103A (ja) * | 2011-12-23 | 2014-02-06 | インテル・コーポレーション | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 |
Families Citing this family (60)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8719500B2 (en) * | 2009-12-07 | 2014-05-06 | Intel Corporation | Technique for tracking shared data in a multi-core processor or multi-processor system |
| JP2011198091A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
| US8788789B2 (en) * | 2010-12-15 | 2014-07-22 | Advanced Micro Devices, Inc. | Power filter in data translation look-aside buffer based on an input linear address |
| WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
| CN103620547B (zh) | 2011-01-27 | 2018-07-10 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
| WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
| WO2012103367A2 (en) * | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
| WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
| WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
| EP2696289B1 (en) * | 2011-04-07 | 2016-12-07 | Fujitsu Limited | Information processing device, parallel computer system, and computation processing device control method |
| EP3712774B1 (en) | 2011-09-30 | 2023-02-15 | Tahoe Research, Ltd. | Apparatus and method for implementing a multi-level memory hierarchy |
| CN103946826B (zh) | 2011-09-30 | 2019-05-31 | 英特尔公司 | 用于在公共存储器通道上实现多级存储器层级的设备和方法 |
| EP3364304B1 (en) | 2011-09-30 | 2022-06-15 | INTEL Corporation | Memory channel that supports near memory and far memory access |
| EP2761464B1 (en) | 2011-09-30 | 2018-10-24 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
| JP2013097671A (ja) * | 2011-11-02 | 2013-05-20 | Fujitsu Ltd | アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置 |
| US9110830B2 (en) | 2012-01-18 | 2015-08-18 | Qualcomm Incorporated | Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods |
| US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
| US8904100B2 (en) | 2012-06-11 | 2014-12-02 | International Business Machines Corporation | Process identifier-based cache data transfer |
| US9304946B2 (en) * | 2012-06-25 | 2016-04-05 | Empire Technology Development Llc | Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table |
| US9552295B2 (en) | 2012-09-25 | 2017-01-24 | Empire Technology Development Llc | Performance and energy efficiency while using large pages |
| CN103034538B (zh) * | 2012-12-24 | 2015-06-17 | 珠海拓普智能电气股份有限公司 | 一种嵌入式操作系统中驱动程序的多级缓存处理方法 |
| US10467010B2 (en) | 2013-03-15 | 2019-11-05 | Intel Corporation | Method and apparatus for nearest potential store tagging |
| WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
| US9606935B2 (en) * | 2013-03-15 | 2017-03-28 | Intel Corporation | Method and apparatus for preventing non-temporal entries from polluting small structures using a transient buffer |
| EP2972798B1 (en) | 2013-03-15 | 2020-06-17 | Intel Corporation | Method and apparatus for guest return address stack emulation supporting speculation |
| US10152327B2 (en) | 2013-03-15 | 2018-12-11 | Intel Corporation | Apparatus for gating a load operation based on entries of a prediction table |
| CN105264501B (zh) | 2013-06-19 | 2018-06-08 | 英派尔科技开发有限公司 | 定位多核处理器中的被高速缓存的数据的方法和装置 |
| US9355262B2 (en) * | 2013-12-27 | 2016-05-31 | Intel Corporation | Modifying memory permissions in a secure processing environment |
| US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
| US9507527B2 (en) * | 2014-02-21 | 2016-11-29 | International Business Machines Corporation | Efficient cache management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap |
| US9535610B2 (en) * | 2014-02-21 | 2017-01-03 | International Business Machines Corporation | Optimizing peer-to-peer remote copy (PPRC) transfers for partial write operations using a modified sectors bitmap |
| US9600277B2 (en) | 2014-02-21 | 2017-03-21 | International Business Machines Corporation | Asynchronous cleanup after a peer-to-peer remote copy (PPRC) terminate relationship operation |
| CN104899159B (zh) * | 2014-03-06 | 2019-07-23 | 华为技术有限公司 | 高速缓冲存储器Cache地址的映射处理方法和装置 |
| KR101898322B1 (ko) * | 2014-07-14 | 2018-09-12 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템 |
| WO2016055828A1 (en) * | 2014-10-08 | 2016-04-14 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow fifo cache |
| 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 |
| US10419571B2 (en) * | 2015-03-24 | 2019-09-17 | Cavium, Llc | Packet processor forwarding database cache |
| CN111708717B (zh) * | 2015-06-30 | 2025-01-28 | 华为技术有限公司 | 数据拷贝方法、直接内存访问控制器及计算机系统 |
| CN105335305B (zh) * | 2015-10-30 | 2018-05-15 | 深圳盛思科教文化有限公司 | 一种交互式可编程硬件的缓冲机制实现方法及装置 |
| US10169009B2 (en) * | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs |
| US9934009B2 (en) | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
| US10169010B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing |
| US10303605B2 (en) * | 2016-07-20 | 2019-05-28 | Intel Corporation | Increasing invalid to modified protocol occurrences in a computing system |
| US10133669B2 (en) | 2016-11-15 | 2018-11-20 | Intel Corporation | Sequential data writes to increase invalid to modified protocol occurrences in a computing system |
| US10083126B2 (en) * | 2016-12-06 | 2018-09-25 | Arm Limited | Apparatus and method for avoiding conflicting entries in a storage structure |
| GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
| US11221956B2 (en) * | 2017-05-31 | 2022-01-11 | Seagate Technology Llc | Hybrid storage device with three-level memory mapping |
| US11392508B2 (en) * | 2017-11-29 | 2022-07-19 | Advanced Micro Devices, Inc. | Lightweight address translation for page migration and duplication |
| US11561906B2 (en) * | 2017-12-12 | 2023-01-24 | Advanced Micro Devices, Inc. | Rinsing cache lines from a common memory page to memory |
| CN108197456B (zh) * | 2018-01-16 | 2020-05-19 | 飞天诚信科技股份有限公司 | 一种设备数据的缓存方法及装置 |
| 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 |
| GB2574232B (en) | 2018-05-31 | 2020-10-21 | Siemens Healthcare Ltd | A method of processing MR images to estimate a longitudinal relaxation time constant. |
| CN110442462B (zh) * | 2019-07-16 | 2020-07-28 | 阿里巴巴集团控股有限公司 | Tee系统中的多线程数据传输方法和装置 |
| CN114116541B (zh) * | 2020-08-27 | 2025-06-27 | 华为技术有限公司 | 确定物理地址的方法及芯片系统 |
| KR20220052152A (ko) * | 2020-10-20 | 2022-04-27 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
| US20240045805A1 (en) * | 2021-01-20 | 2024-02-08 | Alibaba Group Holding Limited | Core-aware caching systems and methods for multicore processors |
| US12105634B2 (en) | 2021-09-27 | 2024-10-01 | Ati Technologies Ulc | Translation lookaside buffer entry allocation system and method |
| CN113934655B (zh) * | 2021-12-17 | 2022-03-11 | 北京微核芯科技有限公司 | 解决高速缓冲存储器地址二义性问题的方法和装置 |
| US12511237B2 (en) | 2023-10-18 | 2025-12-30 | Synopsys, Inc. | Memory address caching for neural networks |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0383150A (ja) * | 1989-08-28 | 1991-04-09 | Fujitsu Ltd | アドレス変換機構付キャッシュ装置の制御方式 |
Family Cites Families (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02253356A (ja) | 1989-03-28 | 1990-10-12 | Toshiba Corp | 階層キャッシュメモリ装置とその制御方式 |
| JP2818249B2 (ja) | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
| EP0488819B1 (en) | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
| 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 |
| JPH07287668A (ja) * | 1994-04-19 | 1995-10-31 | Hitachi Ltd | データ処理装置 |
| JPH08185359A (ja) | 1994-10-31 | 1996-07-16 | Toshiba Corp | メモリサブシステム |
| US5881264A (en) | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
| US5802576A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Speculative cache snoop during DMA line update |
| JP2916420B2 (ja) | 1996-09-04 | 1999-07-05 | 株式会社東芝 | チェックポイント処理加速装置およびデータ処理方法 |
| JP4303803B2 (ja) | 1998-04-22 | 2009-07-29 | 株式会社東芝 | キャッシュフラッシュ装置 |
| US6349362B2 (en) * | 1998-08-31 | 2002-02-19 | International Business Machines Corporation | Scheme to partition a large lookaside buffer into an L2 cache array |
| US6751720B2 (en) * | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy |
| US6760819B2 (en) * | 2001-06-29 | 2004-07-06 | International Business Machines Corporation | Symmetric multiprocessor coherence mechanism |
| US7096320B2 (en) * | 2001-10-31 | 2006-08-22 | Hewlett-Packard Development Company, Lp. | Computer performance improvement by adjusting a time used for preemptive eviction of cache entries |
| JP3749208B2 (ja) | 2002-08-14 | 2006-02-22 | 株式会社東芝 | プロセスマイグレーション方法、計算機 |
| JP4212521B2 (ja) | 2004-06-30 | 2009-01-21 | 株式会社東芝 | 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム |
| US8417915B2 (en) * | 2005-08-05 | 2013-04-09 | Arm Limited | Alias management within a virtually indexed and physically tagged cache memory |
| 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 | 情報処理装置及びシステム |
| JP2009252165A (ja) | 2008-04-10 | 2009-10-29 | Toshiba Corp | マルチプロセッサシステム |
| JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
| JP2010097557A (ja) | 2008-10-20 | 2010-04-30 | Toshiba Corp | セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法 |
| JP2011198091A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
-
2010
- 2010-03-19 JP JP2010064639A patent/JP2011198091A/ja active Pending
- 2010-12-01 US US12/958,298 patent/US8607024B2/en not_active Expired - Fee Related
-
2013
- 2013-11-26 US US14/090,428 patent/US9081711B2/en not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0383150A (ja) * | 1989-08-28 | 1991-04-09 | Fujitsu Ltd | アドレス変換機構付キャッシュ装置の制御方式 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014503103A (ja) * | 2011-12-23 | 2014-02-06 | インテル・コーポレーション | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 |
| US9411728B2 (en) | 2011-12-23 | 2016-08-09 | Intel Corporation | Methods and apparatus for efficient communication between caches in hierarchical caching design |
Also Published As
| Publication number | Publication date |
|---|---|
| US9081711B2 (en) | 2015-07-14 |
| US20110231593A1 (en) | 2011-09-22 |
| US8607024B2 (en) | 2013-12-10 |
| US20140164702A1 (en) | 2014-06-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2011198091A (ja) | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム | |
| JP5300407B2 (ja) | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 | |
| US10031849B2 (en) | Tracking alternative cacheline placement locations in a cache hierarchy | |
| US8782348B2 (en) | Microprocessor cache line evict array | |
| US6370622B1 (en) | Method and apparatus for curious and column caching | |
| US7941631B2 (en) | Providing metadata in a translation lookaside buffer (TLB) | |
| JP5414912B2 (ja) | キャッシュコヒーレンシ制御の方法、システムおよびプログラム | |
| CN102483719B (zh) | 基于块的非透明高速缓存 | |
| EP3486786B1 (en) | System and methods for efficient virtually-tagged cache implementation | |
| US5787478A (en) | Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy | |
| US20070136535A1 (en) | System and Method for Reducing Unnecessary Cache Operations | |
| US7539823B2 (en) | Multiprocessing apparatus having reduced cache miss occurrences | |
| US11354242B2 (en) | Efficient early ordering mechanism | |
| US20060123197A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
| US20210097000A1 (en) | Selective override of cache coherence in multi-processor computer systems | |
| US8473686B2 (en) | Computer cache system with stratified replacement | |
| JP5319049B2 (ja) | キャッシュシステム | |
| JP6249120B1 (ja) | プロセッサ | |
| US7543112B1 (en) | Efficient on-chip instruction and data caching for chip multiprocessors | |
| Goel et al. | E-cache memory becoming a boon towards memory management system | |
| Lai et al. | A memory management unit and cache controller for the MARS system | |
| WO2007094038A1 (ja) | システム制御装置、キャッシュ制御装置およびキャッシュ状態遷移制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120215 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120327 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120807 |