JPWO2007096998A1 - キャッシュメモリ装置およびキャッシュメモリ制御方法 - Google Patents
キャッシュメモリ装置およびキャッシュメモリ制御方法 Download PDFInfo
- Publication number
- JPWO2007096998A1 JPWO2007096998A1 JP2008501551A JP2008501551A JPWO2007096998A1 JP WO2007096998 A1 JPWO2007096998 A1 JP WO2007096998A1 JP 2008501551 A JP2008501551 A JP 2008501551A JP 2008501551 A JP2008501551 A JP 2008501551A JP WO2007096998 A1 JPWO2007096998 A1 JP WO2007096998A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- tag information
- address
- cache
- unit
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止すること。エラー検出部(104)は、読み出し要求された所望データのアドレスに対応するタグ情報のエラー検出を行う。検索部(107)は、タグ情報にエラーが検出されない場合、このタグ情報に所望データのアドレスが含まれているか否かを検索する。ウェイ選択部(108)は、キャッシュミスが発生した場合、タグ情報から最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部(110)へ出力する。リプレース制御部(109)は、キャッシュミスが発生した場合、アドレス記憶部(110)からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換えるリプレース要求を2次キャッシュ制御部(300)へ出力する。アドレス記憶部(110)は、ウェイ選択部(108)から出力されるアドレスを記憶する。
Description
本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置およびキャッシュメモリ制御方法に関し、特に、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法に関する。
通常、CPUなどのプロセッサ内に備えられるキャッシュメモリは、高速アクセスが可能である反面、メインメモリよりも記憶容量が小さい。このため、メインメモリに記憶されているデータをすべてキャッシュメモリに記憶させることはできず、キャッシュメモリは、メインメモリに記憶されたデータの一部を記憶することになる。このため、メインメモリ上のどのアドレスのデータがキャッシュメモリに記憶されて(キャッシュされて)いるか検索できるよう、キャッシュメモリには、データそのものに加えてデータのメインメモリ上でのアドレスを示すタグ情報が記憶されている。
そして、CPUにおける処理の過程でキャッシュメモリに対するデータの読み出しおよび書き込みの処理が発生すると、まず、キャッシュメモリからタグ情報が読み出され、所望のデータがキャッシュメモリにキャッシュされているか否かが検索される。このとき、タグ情報の読み出し時にエラーが発生していないことを担保するため、タグ情報に付加されているパリティビットが用いられてエラー検出が行われることがある。
このエラー検出には、例えば特許文献1に記載されているように、パリティビットの他にECC(Error Correcting Code:誤り訂正符号)などが用いられることもある。そして、特許文献1においては、メインメモリ容量とキャッシュメモリ容量との割合に応じて、パリティビットまたはECCを用いてタグ情報のエラー検出を行い、信頼性を向上することが開示されている。
ところで、タグ情報のエラー検出の結果、読み出されたタグ情報にエラーが検出されない場合は、このタグ情報が検索されて所望のデータがキャッシュメモリに記憶されているか否かが判定される。この結果、キャッシュメモリに所望のデータが記憶されていない(キャッシュミス)場合は、現在のキャッシュメモリに記憶されているデータを、メインメモリまたは上位のキャッシュメモリ(すなわち2次キャッシュなど)に記憶されている所望のデータに置き換えるリプレース処理が行われることになる。
リプレース処理の際には、再びキャッシュメモリからタグ情報が読み出され、所望のデータに置き換えられるデータが決定される。置き換えられるデータが決定されると、このデータおよびデータに対応するタグ情報は、一時的に退避用のバッファに記憶されるとともに、タグ情報によって示されるアドレスのデータを所望のデータに置き換えることがメインメモリまたは上位のキャッシュメモリに要求される。
しかしながら、このとき、キャッシュメモリから読み出されたタグ情報が正しいという前提の下でリプレース処理が行われるため、キャッシュメモリからの読み出しおよび書き込みの際にタグ情報にエラーがなくても、リプレース処理の際のタグ情報の読み出しに際してエラーが発生した場合、システムの重大な損傷などを引き起こす恐れがあるという問題がある。
本発明はかかる点に鑑みてなされたものであり、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法を提供することを目的とする。
上記課題を解決するために、本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段とを有することを特徴とする。
また、本発明は、上記発明において、前記記憶手段は、前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、前記選択手段によって選択されたアドレスを記憶することを特徴とする。
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化することを特徴とする。
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送することを特徴とする。
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させることを特徴とする。
また、本発明は、上記発明において、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段とをさらに有することを特徴とする。
また、本発明は、上記発明において、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み/読み出しを実行する書込/読出手段をさらに有することを特徴とする。
また、本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程とを有することを特徴とする。
本発明によれば、キャッシュに対する所望データの書き込み/読み出し要求発生時に、タグ情報を読み出してエラーを検出し、エラー検出の結果、タグ情報にエラーが検出されない場合に、所望データのアドレスをタグ情報から検索し、検索の結果、所望データのアドレスがタグ情報に含まれない場合に、タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶し、記憶されたアドレスを用いてデータの置換を外部に要求する。このため、データの置換、すなわちリプレース処理時に用いられるアドレスは、エラーが検出されなかったタグ情報に基づくものとなり、タグ情報の正確性を担保することができ、リプレース処理時のタグ情報のエラーを防止し、結果としてシステムの損傷を防止することができる。
また、本発明によれば、タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択し、選択されたアドレスを記憶するため、アクセスされる可能性が最も低いデータがリプレース対象のデータとなり、キャッシュ効率を向上することができる。
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して無効化するため、リプレース対象のデータが無効化されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して外部へ転送するため、リプレース対象のデータが例えば2次キャッシュやメインメモリへ転送されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
また、本発明によれば、アドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと記憶されたアドレスとを比較し、両アドレスが一致する際に処理を中止させる。このため、リプレース対象となって無効化または転送されるデータに対して、例えばストア処理などが要求されても、無駄に処理が実行されることがない。
また、本発明によれば、エラー検出の結果、タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得し、取得されたタグ情報およびデータをキャッシュに書き込む。このため、タグ情報が更新され、エラーの再発を防止することができる。
また、本発明によれば、検索の結果、所望データのアドレスがタグ情報に含まれる場合に、キャッシュに記憶された所望データに対する書き込み/読み出しを実行するため、所望データがキャッシュに記憶されているキャッシュヒットの場合は、迅速にデータの書き込み/読み出しが行われる。
100 1次キャッシュ制御部
101 接続部
102 読出指示部
103 書込/読出部
104 エラー検出部
105 エラー通知部
106 タグ/データ取得部
107 検索部
108 ウェイ選択部
109 リプレース制御部
110 アドレス記憶部
111 データ記憶部
200 1次キャッシュ
300 2次キャッシュ制御部
400 2次キャッシュ
500 命令処理部
600 演算処理部
700 メインメモリ
101 接続部
102 読出指示部
103 書込/読出部
104 エラー検出部
105 エラー通知部
106 タグ/データ取得部
107 検索部
108 ウェイ選択部
109 リプレース制御部
110 アドレス記憶部
111 データ記憶部
200 1次キャッシュ
300 2次キャッシュ制御部
400 2次キャッシュ
500 命令処理部
600 演算処理部
700 メインメモリ
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下においては、CPUに1次キャッシュおよび2次キャッシュが備えられている場合を例に挙げて説明するが、CPUが1次キャッシュのみを備えている場合や、CPUがさらに3次以上のキャッシュメモリを備えている場合などにも本発明を適用することができる。
図1は、本発明の一実施の形態に係るキャッシュメモリ装置を備えたCPUの概略構成を示すブロック図である。図1に示すCPUは、1次キャッシュ制御部100、1次キャッシュ200、2次キャッシュ制御部300、2次キャッシュ400、命令処理部500、演算処理部600を備えている。また、このCPUは、メインメモリ700に接続されている。
1次キャッシュ制御部100は、命令処理部500からの命令に応じて1次キャッシュ200に対するデータの読み出しおよび書き込みを行う。また1次キャッシュ制御部100は、1次キャッシュ200からのデータの読み出しに際して所望のデータが記憶されていない場合、2次キャッシュ制御部300に対してリプレース要求を送出する。このとき、1次キャッシュ制御部100は、1次キャッシュ200からのデータの読み出し時にエラー検出されたタグ情報を保持しておき、このタグ情報に基づくリプレース処理を行う。1次キャッシュ制御部100の具体的な動作については、後に詳述する。
1次キャッシュ200は、2次キャッシュ400およびメインメモリ700上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのメインメモリ700上におけるアドレスを示すタグ情報を記憶する。本実施の形態においては、1次キャッシュ200は、メインメモリ700の所定のメモリブロックごとに複数のキャッシュラインが対応しているセットアソシアティブ構成を採っているものとする。以下では、同一のメモリブロックに対応する各キャッシュラインをウェイと呼ぶ。
2次キャッシュ制御部300は、1次キャッシュ制御部100からのリプレース要求に従って、2次キャッシュ400に対するデータの読み出しおよび書き込みを行う。また2次キャッシュ制御部300は、1次キャッシュ制御部100からタグ情報にエラーが検出された旨のエラー情報が出力された場合、1次キャッシュ200のタグ情報のコピーを参照して、エラーが発生したタグ情報とこのタグ情報に対応するデータとを2次キャッシュ400から読み出し、1次キャッシュ制御部100へ出力する。
2次キャッシュ400は、メインメモリ700上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのタグ情報および1次キャッシュ200のタグ情報のコピーを記憶する。
命令処理部500は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部600に指示するとともに、必要なデータの読み出しおよび書き込みを1次キャッシュ制御部100へ指示する。演算処理部600は、命令処理部500からの指示に応じて、1次キャッシュ200などから読み出されたデータを用いた演算処理を行う。
メインメモリ700は、主記憶装置であって、CPUにおける処理に必要なデータやプログラムを記憶している。メインメモリ700は、1次キャッシュ200および2次キャッシュ400と比較すると大容量であるが、アクセス速度が遅い。
図2は、本実施の形態に係る1次キャッシュ制御部100および1次キャッシュ200の要部構成を示すブロック図である。図2において、1次キャッシュ制御部100は、接続部101、読出指示部102、書込/読出部103、エラー検出部104、エラー通知部105、タグ/データ取得部106、検索部107、ウェイ選択部108、リプレース制御部109、アドレス記憶部110、およびデータ記憶部111を有している。また、1次キャッシュ200は、タグRAM201およびデータRAM202を有している。
接続部101は、命令処理部500と接続されており、命令処理部500からのデータの読み出し命令を読出指示部102へ通知し、1次キャッシュ200から読み出されたデータを命令処理部500へ出力する。
読出指示部102は、命令処理部500からデータの読み出し命令が出された場合、読み出すデータのアドレスを書込/読出部103へ指示する。
書込/読出部103は、読出指示部102からアドレスを指示されると、このアドレスに対応するタグ情報をタグRAM201から読み出し、エラー検出部104へ出力する。また、書込/読出部103は、検索部107からキャッシュヒットの旨が通知されると、読出指示部102から指示されたアドレスに対応するデータをデータRAM202から読み出し、接続部101経由で命令処理部500へ出力する。さらに、書込/読出部103は、タグ/データ取得部106から出力されるタグ情報およびデータをそれぞれタグRAM201およびデータRAM202に書き込む。また、書込/読出部103は、リプレース制御部109による制御に応じてデータRAM202からデータを読み出す。
エラー検出部104は、書込/読出部103から出力されるタグ情報のエラー検出を行う。具体的には、エラー検出部104は、タグ情報に付加されたパリティビットを用いてエラー検出を行い、タグ情報にエラーが検出されれば、その旨をエラー通知部105へ通知し、タグ情報にエラーが検出されなければ、その旨をタグ情報とともに検索部107へ通知する。
エラー通知部105は、タグ情報にエラーが検出された場合、このタグ情報とタグ情報に対応するデータとを更新するために、エラーが検出されたタグ情報を特定可能なエラー情報を2次キャッシュ制御部300へ出力する。
タグ/データ取得部106は、2次キャッシュ制御部300から出力されるタグ情報およびデータを取得し、取得されたタグ情報およびデータの1次キャッシュ200への書き込みを書込/読出部103へ指示する。
検索部107は、タグ情報にエラーが検出されない場合、このタグ情報に読出指示部102が書込/読出部103に読み出しを指示するアドレスが含まれているか否かを検索する。書込/読出部103によって読み出されるタグ情報には、同一のメモリブロックに対応する複数のウェイの情報が含まれており、したがって、ウェイごとに異なるデータのアドレスが格納されている。このため、所望のデータが1次キャッシュ200に記憶されているか否かを判断するためにタグ情報の検索が必要となり、検索の結果、読み出すデータのアドレスがタグ情報に含まれていればキャッシュヒットとなり、読み出すデータのアドレスがタグ情報に含まれていなければキャッシュミスとなる。
そして、検索部107は、キャッシュヒットの場合、1次キャッシュ200のデータRAM202からデータが読み出されるように、キャッシュヒットである旨を書込/読出部103へ通知する。一方、検索部107は、キャッシュミスの場合、タグ情報をウェイ選択部108へ出力し、キャッシュミスである旨をリプレース制御部109へ通知する。
ウェイ選択部108は、タグ情報からLRU(Least Recently Used)制御により、最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部110へ出力する。
リプレース制御部109は、キャッシュミスの場合、1次キャッシュ200のデータRAM202に記憶されているデータを2次キャッシュ400またはメインメモリ700に記憶されている所望のデータに置き換えるリプレース処理を開始する。すなわち、リプレース制御部109は、検索部107からキャッシュミスの旨が通知されると、アドレス記憶部110からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換える旨を要求するリプレース要求を2次キャッシュ制御部300へ出力する。
また、リプレース制御部109は、アドレス記憶部110に記憶されたアドレスのデータをデータRAM202から読み出すように書込/読出部103へ指示する。そして、リプレース制御部109は、書込/読出部103によって読み出されたデータをデータ記憶部111へ出力する。
アドレス記憶部110は、ウェイ選択部108から出力される、所望のデータと置き換えられるデータのアドレスを記憶する。アドレス記憶部110は、エラー検出部104によるエラー検出の結果、エラーが検出されないタグ情報から選択されたウェイに格納されたアドレスを記憶するため、記憶されるアドレスにはエラーがないことを担保することができる。
データ記憶部111は、リプレース制御部109から出力される、所望のデータと置き換えられるデータを記憶する。また、図2では省略したが、アドレス記憶部110およびデータ記憶部111は、2次キャッシュ制御部300から置き換えられるデータの無効化要求が発行された場合、記憶したアドレスおよびデータを無効化する。
タグRAM201は、1次キャッシュ200に記憶されるデータのメインメモリ700上のアドレスを示すタグ情報を記憶している。データRAM202は、タグRAM201に記憶されたアドレスに対応するデータを記憶している。上述したように、本実施の形態においては、1次キャッシュ200は、セットアソシアティブ構成を採っている。したがって、タグRAM201およびデータRAM202は、メインメモリ700の各メモリブロックに対して、例えば図3に示すような複数のウェイ0〜nのセットを対応付けて備えている。そして、タグRAM201の各ウェイには、対応するメモリブロック上のデータRAM202に記憶されたデータのアドレスが格納されており、データRAM202の各ウェイには、対応するメモリブロック上のデータそのものが格納されている。
また、ウェイ0〜nからなる各セットには、図3に示すように、このセットが有効であるか否かを示すバリッドビット(Valid bit)V、各ウェイに格納されているデータまたはアドレスに対応するシステム絶対アドレスAdrs、およびバリッドビットVとシステム絶対アドレスAdrsのエラー検出のためのパリティビット(Parity bit)Pが付加されている。
次いで、上記のように構成された1次キャッシュ制御部100によるキャッシュメモリ制御方法について、図4に示すフロー図を参照しながら説明する。
まず、命令処理部500から所望のデータを1次キャッシュ200から読み出す読出命令が発行され、1次キャッシュ制御部100の接続部101に到達する(ステップS101)。そして、接続部101によって読み出し命令が読出指示部102へ出力され、読出指示部102によって読み出し命令に含まれる所望のデータのアドレスが書込/読出部103へ通知され、書込/読出部103によって通知されたアドレスに対応するタグ情報が1次キャッシュ200のタグRAM201から読み出される(ステップS102)。
読み出されたタグ情報は、エラー検出部104へ出力され、エラー検出部104によってタグ情報のパリティビットが用いられ、タグ情報のエラー検出が実行される(ステップS103)。エラー検出の結果、タグ情報にエラーが検出された場合(ステップS103Yes)、エラー通知部105によってエラー情報が2次キャッシュ制御部300へ出力される(ステップS104)。そして、2次キャッシュ制御部300によって、1次キャッシュ200のタグ情報のコピーが参照され、エラー情報を基にエラーが検出されたタグ情報に対応するデータおよびタグ情報が2次キャッシュ400から読み出され、1次キャッシュ制御部100へ出力される。これらのデータおよびタグ情報は、1次キャッシュ制御部100のタグ/データ取得部106によって取得され、書込/読出部103に対してそれぞれデータRAM202およびタグRAM201への書き込みが指示される。これにより、書込/読出部103によってエラーがないデータおよびタグ情報がデータRAM202およびタグRAM201に書き込まれ、タグRAM201の更新が行われる(ステップS105)。
一方、タグ情報のエラー検出の結果、タグ情報にエラーが検出されない場合(ステップS103No)、タグ情報は検索部107へ出力され、検索部107によって所望のデータがタグ情報に登録されているか否かが検索される(ステップS106)。この結果、所望のデータがタグ情報に登録されておりキャッシュヒットすれば(ステップS106Yes)、命令処理部500からの読み出し命令に応じたデータがデータRAM202に記憶されているため、このデータの読み出し処理が実行される(ステップS107)。すなわち、検索部107によって所望のデータの読み出しが書込/読出部103へ指示され、書込/読出部103によってデータRAM202から所望のデータが読み出され、接続部101経由で命令処理部500へ出力される。
また、検索部107によるタグ情報の検索の結果、所望のデータがタグ情報に登録されておらずキャッシュミスすれば(ステップS106No)、タグ情報がウェイ選択部108へ出力されるとともに、リプレース制御部109へキャッシュミスの旨が通知される。そして、ウェイ選択部108によって、タグ情報に含まれる複数のウェイのうち、最近一番長い時間アクセスされていないウェイが選択される(すなわち、LRU制御が行われる)。このウェイは、最近のアクセス頻度が低いため、今回アクセスされる所望のデータとの置き換え対象のウェイとなる。このため、ウェイ選択部108によって選択されたウェイに格納されているアドレスは、アドレス記憶部110に記憶される(ステップS108)。ここで、アドレス記憶部110に記憶されるアドレスは、エラー検出部104によるエラー検出の結果、エラーが検出されなかったタグ情報から得られるものであるため、正確なものであることが担保される。
そして、キャッシュミスが発生した旨が通知されたリプレース制御部109によって、アドレス記憶部110に記憶されたアドレスが読み出され、1次キャッシュ200において、読み出されたアドレスのデータと所望のデータとの置き換えを要求するリプレース要求が2次キャッシュ制御部300へ発行される(ステップS109)。
さらに、リプレース制御部109によって、アドレス記憶部110から読み出されたアドレスのデータを読み出すように書込/読出部103へ指示され、このデータがリプレース対象のデータとしてデータRAM202から書込/読出部103によって読み出されると(ステップS110)、リプレース制御部109からデータ記憶部111へ出力されて記憶される(ステップS111)。
このようなリプレース処理時において、本実施の形態では、上述のようにアドレス記憶部110に記憶されたアドレスの正確さが担保されているため、リプレース処理時に改めてタグ情報をタグRAM201から読み出してエラー検出を行う必要がないとともに、リプレース処理に用いられるタグ情報(すなわちアドレス)にエラーが発生することもない。
なお、データRAM202からのデータの読み出しに際して、LRU制御によりリプレース対象のデータを格納するウェイを決定するようにしても良いが、タグRAM201のウェイとデータRAM202のウェイとが対応しているため、タグ情報に関するウェイ選択と同じウェイが選択されることになり、結果として、アドレス記憶部110に記憶されたアドレスのデータが格納されているウェイが選択されることになる。
その後、リプレース要求を受けた2次キャッシュ制御部300からリプレース対象のデータの無効化要求が発行されると、リプレース制御部109によって、アドレス記憶部110に記憶されたアドレスおよびデータ記憶部111に記憶されたデータが無効化され(ステップS112)、2次キャッシュ制御部300から出力された所望のデータおよびタグ情報がそれぞれデータRAM202およびタグRAM201に記憶され、リプレース処理が終了する。なお、2次キャッシュ制御部300は、リプレース要求された所望のデータが2次キャッシュ400に記憶されていない場合は、メインメモリ700から所望のデータを取得して、1次キャッシュ制御部100へ出力する。また、2次キャッシュ制御部300から、無効化要求の代わりにデータのムーブアウト要求が発行された場合は、リプレース制御部109によって、アドレス記憶部110に記憶されたアドレスおよびデータ記憶部111に記憶されたデータが2次キャッシュ制御部300へムーブアウトされるようにしても良い。
以上のように、本実施の形態によれば、データの読み出し命令に応じたタグ情報の読み出し時にタグ情報のエラー検出を実行し、タグ情報にエラーが検出されず、かつ、キャッシュミスが発生した場合は、エラーが検出されなかったタグ情報に格納されているアドレスをキャッシュミスに伴うリプレース処理用に一時的に保持しておく。このため、リプレース処理に用いられるタグ情報(アドレス)の正確性が担保され、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができる。
なお、上記一実施の形態において、アドレス記憶部110にアドレスが記憶された後であってリプレース処理が開始される前に、例えばストア処理が実行される場合は、ストア対象のデータのアドレスがアドレス記憶部110に記憶されたアドレスと比較され、両アドレスが一致する場合は、リプレースによって無効化またはムーブアウトされるデータのストア処理が実行されることを意味しているため、ストア処理の実行が中止されるようにしても良い。
本発明は、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止する場合に適用することができる。
本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置およびキャッシュメモリ制御方法に関し、特に、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法に関する。
通常、CPUなどのプロセッサ内に備えられるキャッシュメモリは、高速アクセスが可能である反面、メインメモリよりも記憶容量が小さい。このため、メインメモリに記憶されているデータをすべてキャッシュメモリに記憶させることはできず、キャッシュメモリは、メインメモリに記憶されたデータの一部を記憶することになる。このため、メインメモリ上のどのアドレスのデータがキャッシュメモリに記憶されて(キャッシュされて)いるか検索できるよう、キャッシュメモリには、データそのものに加えてデータのメインメモリ上でのアドレスを示すタグ情報が記憶されている。
そして、CPUにおける処理の過程でキャッシュメモリに対するデータの読み出しおよび書き込みの処理が発生すると、まず、キャッシュメモリからタグ情報が読み出され、所望のデータがキャッシュメモリにキャッシュされているか否かが検索される。このとき、タグ情報の読み出し時にエラーが発生していないことを担保するため、タグ情報に付加されているパリティビットが用いられてエラー検出が行われることがある。
このエラー検出には、例えば特許文献1に記載されているように、パリティビットの他にECC(Error Correcting Code:誤り訂正符号)などが用いられることもある。そして、特許文献1においては、メインメモリ容量とキャッシュメモリ容量との割合に応じて、パリティビットまたはECCを用いてタグ情報のエラー検出を行い、信頼性を向上することが開示されている。
ところで、タグ情報のエラー検出の結果、読み出されたタグ情報にエラーが検出されない場合は、このタグ情報が検索されて所望のデータがキャッシュメモリに記憶されているか否かが判定される。この結果、キャッシュメモリに所望のデータが記憶されていない(キャッシュミス)場合は、現在のキャッシュメモリに記憶されているデータを、メインメモリまたは上位のキャッシュメモリ(すなわち2次キャッシュなど)に記憶されている所望のデータに置き換えるリプレース処理が行われることになる。
リプレース処理の際には、再びキャッシュメモリからタグ情報が読み出され、所望のデータに置き換えられるデータが決定される。置き換えられるデータが決定されると、このデータおよびデータに対応するタグ情報は、一時的に退避用のバッファに記憶されるとともに、タグ情報によって示されるアドレスのデータを所望のデータに置き換えることがメインメモリまたは上位のキャッシュメモリに要求される。
しかしながら、このとき、キャッシュメモリから読み出されたタグ情報が正しいという前提の下でリプレース処理が行われるため、キャッシュメモリからの読み出しおよび書き込みの際にタグ情報にエラーがなくても、リプレース処理の際のタグ情報の読み出しに際してエラーが発生した場合、システムの重大な損傷などを引き起こす恐れがあるという問題がある。
本発明はかかる点に鑑みてなされたものであり、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法を提供することを目的とする。
上記課題を解決するために、キャッシュメモリ装置は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段とを有する構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記記憶手段は、前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、前記選択手段によって選択されたアドレスを記憶する構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化する構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送する構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させる構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段とをさらに有する構成を採る。
また、キャッシュメモリ装置は、上記構成において、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み/読み出しを実行する書込/読出手段をさらに有する構成を採る。
また、キャッシュメモリ制御方法は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程とを有するようにした。
本発明によれば、キャッシュに対する所望データの書き込み/読み出し要求発生時に、タグ情報を読み出してエラーを検出し、エラー検出の結果、タグ情報にエラーが検出されない場合に、所望データのアドレスをタグ情報から検索し、検索の結果、所望データのアドレスがタグ情報に含まれない場合に、タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶し、記憶されたアドレスを用いてデータの置換を外部に要求する。このため、データの置換、すなわちリプレース処理時に用いられるアドレスは、エラーが検出されなかったタグ情報に基づくものとなり、タグ情報の正確性を担保することができ、リプレース処理時のタグ情報のエラーを防止し、結果としてシステムの損傷を防止することができる。
また、本発明によれば、タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択し、選択されたアドレスを記憶するため、アクセスされる可能性が最も低いデータがリプレース対象のデータとなり、キャッシュ効率を向上することができる。
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して無効化するため、リプレース対象のデータが無効化されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して外部へ転送するため、リプレース対象のデータが例えば2次キャッシュやメインメモリへ転送されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
また、本発明によれば、アドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと記憶されたアドレスとを比較し、両アドレスが一致する際に処理を中止させる。このため、リプレース対象となって無効化または転送されるデータに対して、例えばストア処理などが要求されても、無駄に処理が実行されることがない。
また、本発明によれば、エラー検出の結果、タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得し、取得されたタグ情報およびデータをキャッシュに書き込む。このため、タグ情報が更新され、エラーの再発を防止することができる。
また、本発明によれば、検索の結果、所望データのアドレスがタグ情報に含まれる場合に、キャッシュに記憶された所望データに対する書き込み/読み出しを実行するため、所望データがキャッシュに記憶されているキャッシュヒットの場合は、迅速にデータの書き込み/読み出しが行われる。
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下においては、CPUに1次キャッシュおよび2次キャッシュが備えられている場合を例に挙げて説明するが、CPUが1次キャッシュのみを備えている場合や、CPUがさらに3次以上のキャッシュメモリを備えている場合などにも本発明を適用することができる。
図1は、本発明の一実施の形態に係るキャッシュメモリ装置を備えたCPUの概略構成を示すブロック図である。図1に示すCPUは、1次キャッシュ制御部100、1次キャッシュ200、2次キャッシュ制御部300、2次キャッシュ400、命令処理部500、演算処理部600を備えている。また、このCPUは、メインメモリ700に接続されている。
1次キャッシュ制御部100は、命令処理部500からの命令に応じて1次キャッシュ200に対するデータの読み出しおよび書き込みを行う。また1次キャッシュ制御部100は、1次キャッシュ200からのデータの読み出しに際して所望のデータが記憶されていない場合、2次キャッシュ制御部300に対してリプレース要求を送出する。このとき、1次キャッシュ制御部100は、1次キャッシュ200からのデータの読み出し時にエラー検出されたタグ情報を保持しておき、このタグ情報に基づくリプレース処理を行う。1次キャッシュ制御部100の具体的な動作については、後に詳述する。
1次キャッシュ200は、2次キャッシュ400およびメインメモリ700上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのメインメモリ700上におけるアドレスを示すタグ情報を記憶する。本実施の形態においては、1次キャッシュ200は、メインメモリ700の所定のメモリブロックごとに複数のキャッシュラインが対応しているセットアソシアティブ構成を採っているものとする。以下では、同一のメモリブロックに対応する各キャッシュラインをウェイと呼ぶ。
2次キャッシュ制御部300は、1次キャッシュ制御部100からのリプレース要求に従って、2次キャッシュ400に対するデータの読み出しおよび書き込みを行う。また2次キャッシュ制御部300は、1次キャッシュ制御部100からタグ情報にエラーが検出された旨のエラー情報が出力された場合、1次キャッシュ200のタグ情報のコピーを参照して、エラーが発生したタグ情報とこのタグ情報に対応するデータとを2次キャッシュ400から読み出し、1次キャッシュ制御部100へ出力する。
2次キャッシュ400は、メインメモリ700上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのタグ情報および1次キャッシュ200のタグ情報のコピーを記憶する。
命令処理部500は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部600に指示するとともに、必要なデータの読み出しおよび書き込みを1次キャッシュ制御部100へ指示する。演算処理部600は、命令処理部500からの指示に応じて、1次キャッシュ200などから読み出されたデータを用いた演算処理を行う。
メインメモリ700は、主記憶装置であって、CPUにおける処理に必要なデータやプログラムを記憶している。メインメモリ700は、1次キャッシュ200および2次キャッシュ400と比較すると大容量であるが、アクセス速度が遅い。
図2は、本実施の形態に係る1次キャッシュ制御部100および1次キャッシュ200の要部構成を示すブロック図である。図2において、1次キャッシュ制御部100は、接続部101、読出指示部102、書込/読出部103、エラー検出部104、エラー通知部105、タグ/データ取得部106、検索部107、ウェイ選択部108、リプレース制御部109、アドレス記憶部110、およびデータ記憶部111を有している。また、1次キャッシュ200は、タグRAM201およびデータRAM202を有している。
接続部101は、命令処理部500と接続されており、命令処理部500からのデータの読み出し命令を読出指示部102へ通知し、1次キャッシュ200から読み出されたデータを命令処理部500へ出力する。
読出指示部102は、命令処理部500からデータの読み出し命令が出された場合、読み出すデータのアドレスを書込/読出部103へ指示する。
書込/読出部103は、読出指示部102からアドレスを指示されると、このアドレスに対応するタグ情報をタグRAM201から読み出し、エラー検出部104へ出力する。また、書込/読出部103は、検索部107からキャッシュヒットの旨が通知されると、読出指示部102から指示されたアドレスに対応するデータをデータRAM202から読み出し、接続部101経由で命令処理部500へ出力する。さらに、書込/読出部103は、タグ/データ取得部106から出力されるタグ情報およびデータをそれぞれタグRAM201およびデータRAM202に書き込む。また、書込/読出部103は、リプレース制御部109による制御に応じてデータRAM202からデータを読み出す。
エラー検出部104は、書込/読出部103から出力されるタグ情報のエラー検出を行う。具体的には、エラー検出部104は、タグ情報に付加されたパリティビットを用いてエラー検出を行い、タグ情報にエラーが検出されれば、その旨をエラー通知部105へ通知し、タグ情報にエラーが検出されなければ、その旨をタグ情報とともに検索部107へ通知する。
エラー通知部105は、タグ情報にエラーが検出された場合、このタグ情報とタグ情報に対応するデータとを更新するために、エラーが検出されたタグ情報を特定可能なエラー情報を2次キャッシュ制御部300へ出力する。
タグ/データ取得部106は、2次キャッシュ制御部300から出力されるタグ情報およびデータを取得し、取得されたタグ情報およびデータの1次キャッシュ200への書き込みを書込/読出部103へ指示する。
検索部107は、タグ情報にエラーが検出されない場合、このタグ情報に読出指示部102が書込/読出部103に読み出しを指示するアドレスが含まれているか否かを検索する。書込/読出部103によって読み出されるタグ情報には、同一のメモリブロックに対応する複数のウェイの情報が含まれており、したがって、ウェイごとに異なるデータのアドレスが格納されている。このため、所望のデータが1次キャッシュ200に記憶されているか否かを判断するためにタグ情報の検索が必要となり、検索の結果、読み出すデータのアドレスがタグ情報に含まれていればキャッシュヒットとなり、読み出すデータのアドレスがタグ情報に含まれていなければキャッシュミスとなる。
そして、検索部107は、キャッシュヒットの場合、1次キャッシュ200のデータRAM202からデータが読み出されるように、キャッシュヒットである旨を書込/読出部103へ通知する。一方、検索部107は、キャッシュミスの場合、タグ情報をウェイ選択部108へ出力し、キャッシュミスである旨をリプレース制御部109へ通知する。
ウェイ選択部108は、タグ情報からLRU(Least Recently Used)制御により、最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部110へ出力する。
リプレース制御部109は、キャッシュミスの場合、1次キャッシュ200のデータRAM202に記憶されているデータを2次キャッシュ400またはメインメモリ700に記憶されている所望のデータに置き換えるリプレース処理を開始する。すなわち、リプレース制御部109は、検索部107からキャッシュミスの旨が通知されると、アドレス記憶部110からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換える旨を要求するリプレース要求を2次キャッシュ制御部300へ出力する。
また、リプレース制御部109は、アドレス記憶部110に記憶されたアドレスのデータをデータRAM202から読み出すように書込/読出部103へ指示する。そして、リプレース制御部109は、書込/読出部103によって読み出されたデータをデータ記憶部111へ出力する。
アドレス記憶部110は、ウェイ選択部108から出力される、所望のデータと置き換えられるデータのアドレスを記憶する。アドレス記憶部110は、エラー検出部104によるエラー検出の結果、エラーが検出されないタグ情報から選択されたウェイに格納されたアドレスを記憶するため、記憶されるアドレスにはエラーがないことを担保することができる。
データ記憶部111は、リプレース制御部109から出力される、所望のデータと置き換えられるデータを記憶する。また、図2では省略したが、アドレス記憶部110およびデータ記憶部111は、2次キャッシュ制御部300から置き換えられるデータの無効化要求が発行された場合、記憶したアドレスおよびデータを無効化する。
タグRAM201は、1次キャッシュ200に記憶されるデータのメインメモリ700上のアドレスを示すタグ情報を記憶している。データRAM202は、タグRAM201に記憶されたアドレスに対応するデータを記憶している。上述したように、本実施の形態においては、1次キャッシュ200は、セットアソシアティブ構成を採っている。したがって、タグRAM201およびデータRAM202は、メインメモリ700の各メモリブロックに対して、例えば図3に示すような複数のウェイ0〜nのセットを対応付けて備えている。そして、タグRAM201の各ウェイには、対応するメモリブロック上のデータRAM202に記憶されたデータのアドレスが格納されており、データRAM202の各ウェイには、対応するメモリブロック上のデータそのものが格納されている。
また、ウェイ0〜nからなる各セットには、図3に示すように、このセットが有効であるか否かを示すバリッドビット(Valid bit)V、各ウェイに格納されているデータまたはアドレスに対応するシステム絶対アドレスAdrs、およびバリッドビットVとシステム絶対アドレスAdrsのエラー検出のためのパリティビット(Parity bit)Pが付加されている。
次いで、上記のように構成された1次キャッシュ制御部100によるキャッシュメモリ制御方法について、図4に示すフロー図を参照しながら説明する。
まず、命令処理部500から所望のデータを1次キャッシュ200から読み出す読出命令が発行され、1次キャッシュ制御部100の接続部101に到達する(ステップS101)。そして、接続部101によって読み出し命令が読出指示部102へ出力され、読出指示部102によって読み出し命令に含まれる所望のデータのアドレスが書込/読出部103へ通知され、書込/読出部103によって通知されたアドレスに対応するタグ情報が1次キャッシュ200のタグRAM201から読み出される(ステップS102)。
読み出されたタグ情報は、エラー検出部104へ出力され、エラー検出部104によってタグ情報のパリティビットが用いられ、タグ情報のエラー検出が実行される(ステップS103)。エラー検出の結果、タグ情報にエラーが検出された場合(ステップS103Yes)、エラー通知部105によってエラー情報が2次キャッシュ制御部300へ出力される(ステップS104)。そして、2次キャッシュ制御部300によって、1次キャッシュ200のタグ情報のコピーが参照され、エラー情報を基にエラーが検出されたタグ情報に対応するデータおよびタグ情報が2次キャッシュ400から読み出され、1次キャッシュ制御部100へ出力される。これらのデータおよびタグ情報は、1次キャッシュ制御部100のタグ/データ取得部106によって取得され、書込/読出部103に対してそれぞれデータRAM202およびタグRAM201への書き込みが指示される。これにより、書込/読出部103によってエラーがないデータおよびタグ情報がデータRAM202およびタグRAM201に書き込まれ、タグRAM201の更新が行われる(ステップS105)。
一方、タグ情報のエラー検出の結果、タグ情報にエラーが検出されない場合(ステップS103No)、タグ情報は検索部107へ出力され、検索部107によって所望のデータがタグ情報に登録されているか否かが検索される(ステップS106)。この結果、所望のデータがタグ情報に登録されておりキャッシュヒットすれば(ステップS106Yes)、命令処理部500からの読み出し命令に応じたデータがデータRAM202に記憶されているため、このデータの読み出し処理が実行される(ステップS107)。すなわち、検索部107によって所望のデータの読み出しが書込/読出部103へ指示され、書込/読出部103によってデータRAM202から所望のデータが読み出され、接続部101経由で命令処理部500へ出力される。
また、検索部107によるタグ情報の検索の結果、所望のデータがタグ情報に登録されておらずキャッシュミスすれば(ステップS106No)、タグ情報がウェイ選択部108へ出力されるとともに、リプレース制御部109へキャッシュミスの旨が通知される。そして、ウェイ選択部108によって、タグ情報に含まれる複数のウェイのうち、最近一番長い時間アクセスされていないウェイが選択される(すなわち、LRU制御が行われる)。このウェイは、最近のアクセス頻度が低いため、今回アクセスされる所望のデータとの置き換え対象のウェイとなる。このため、ウェイ選択部108によって選択されたウェイに格納されているアドレスは、アドレス記憶部110に記憶される(ステップS108)。ここで、アドレス記憶部110に記憶されるアドレスは、エラー検出部104によるエラー検出の結果、エラーが検出されなかったタグ情報から得られるものであるため、正確なものであることが担保される。
そして、キャッシュミスが発生した旨が通知されたリプレース制御部109によって、アドレス記憶部110に記憶されたアドレスが読み出され、1次キャッシュ200において、読み出されたアドレスのデータと所望のデータとの置き換えを要求するリプレース要求が2次キャッシュ制御部300へ発行される(ステップS109)。
さらに、リプレース制御部109によって、アドレス記憶部110から読み出されたアドレスのデータを読み出すように書込/読出部103へ指示され、このデータがリプレース対象のデータとしてデータRAM202から書込/読出部103によって読み出されると(ステップS110)、リプレース制御部109からデータ記憶部111へ出力されて記憶される(ステップS111)。
このようなリプレース処理時において、本実施の形態では、上述のようにアドレス記憶部110に記憶されたアドレスの正確さが担保されているため、リプレース処理時に改めてタグ情報をタグRAM201から読み出してエラー検出を行う必要がないとともに、リプレース処理に用いられるタグ情報(すなわちアドレス)にエラーが発生することもない。
なお、データRAM202からのデータの読み出しに際して、LRU制御によりリプレース対象のデータを格納するウェイを決定するようにしても良いが、タグRAM201のウェイとデータRAM202のウェイとが対応しているため、タグ情報に関するウェイ選択と同じウェイが選択されることになり、結果として、アドレス記憶部110に記憶されたアドレスのデータが格納されているウェイが選択されることになる。
その後、リプレース要求を受けた2次キャッシュ制御部300からリプレース対象のデータの無効化要求が発行されると、リプレース制御部109によって、アドレス記憶部110に記憶されたアドレスおよびデータ記憶部111に記憶されたデータが無効化され(ステップS112)、2次キャッシュ制御部300から出力された所望のデータおよびタグ情報がそれぞれデータRAM202およびタグRAM201に記憶され、リプレース処理が終了する。なお、2次キャッシュ制御部300は、リプレース要求された所望のデータが2次キャッシュ400に記憶されていない場合は、メインメモリ700から所望のデータを取得して、1次キャッシュ制御部100へ出力する。また、2次キャッシュ制御部300から、無効化要求の代わりにデータのムーブアウト要求が発行された場合は、リプレース制御部109によって、アドレス記憶部110に記憶されたアドレスおよびデータ記憶部111に記憶されたデータが2次キャッシュ制御部300へムーブアウトされるようにしても良い。
以上のように、本実施の形態によれば、データの読み出し命令に応じたタグ情報の読み出し時にタグ情報のエラー検出を実行し、タグ情報にエラーが検出されず、かつ、キャッシュミスが発生した場合は、エラーが検出されなかったタグ情報に格納されているアドレスをキャッシュミスに伴うリプレース処理用に一時的に保持しておく。このため、リプレース処理に用いられるタグ情報(アドレス)の正確性が担保され、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができる。
なお、上記一実施の形態において、アドレス記憶部110にアドレスが記憶された後であってリプレース処理が開始される前に、例えばストア処理が実行される場合は、ストア対象のデータのアドレスがアドレス記憶部110に記憶されたアドレスと比較され、両アドレスが一致する場合は、リプレースによって無効化またはムーブアウトされるデータのストア処理が実行されることを意味しているため、ストア処理の実行が中止されるようにしても良い。
本発明は、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止する場合に適用することができる。
100 1次キャッシュ制御部
101 接続部
102 読出指示部
103 書込/読出部
104 エラー検出部
105 エラー通知部
106 タグ/データ取得部
107 検索部
108 ウェイ選択部
109 リプレース制御部
110 アドレス記憶部
111 データ記憶部
200 1次キャッシュ
300 2次キャッシュ制御部
400 2次キャッシュ
500 命令処理部
600 演算処理部
700 メインメモリ
101 接続部
102 読出指示部
103 書込/読出部
104 エラー検出部
105 エラー通知部
106 タグ/データ取得部
107 検索部
108 ウェイ選択部
109 リプレース制御部
110 アドレス記憶部
111 データ記憶部
200 1次キャッシュ
300 2次キャッシュ制御部
400 2次キャッシュ
500 命令処理部
600 演算処理部
700 メインメモリ
Claims (8)
- データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、
前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、
前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、
前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、
前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段と
を有することを特徴とするキャッシュメモリ装置。 - 前記記憶手段は、
前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、
前記選択手段によって選択されたアドレスを記憶することを特徴とする請求項1記載のキャッシュメモリ装置。 - 前記制御手段は、
前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化することを特徴とする請求項1記載のキャッシュメモリ装置。 - 前記制御手段は、
前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送することを特徴とする請求項1記載のキャッシュメモリ装置。 - 前記制御手段は、
前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させることを特徴とする請求項1記載のキャッシュメモリ装置。 - 前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、
前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段と
をさらに有することを特徴とする請求項1記載のキャッシュメモリ装置。 - 前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み/読み出しを実行する書込/読出手段をさらに有することを特徴とする請求項1記載のキャッシュメモリ装置。
- データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、
前記キャッシュに対する所望データの書き込み/読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、
前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、
前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、
前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程と
を有することを特徴とするキャッシュメモリ制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/303475 WO2007096998A1 (ja) | 2006-02-24 | 2006-02-24 | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2007096998A1 true JPWO2007096998A1 (ja) | 2009-07-09 |
Family
ID=38437060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008501551A Pending JPWO2007096998A1 (ja) | 2006-02-24 | 2006-02-24 | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20080320227A1 (ja) |
EP (1) | EP1988466A4 (ja) |
JP (1) | JPWO2007096998A1 (ja) |
WO (1) | WO2007096998A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2790107A1 (en) * | 2011-12-07 | 2014-10-15 | Fujitsu Limited | Processing unit and method for controlling processing unit |
WO2013084314A1 (ja) * | 2011-12-07 | 2013-06-13 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN104575584B (zh) * | 2013-10-23 | 2018-11-30 | 钰创科技股份有限公司 | 具有嵌入式内存的系统级封装内存模块 |
US10719434B2 (en) | 2014-12-14 | 2020-07-21 | Via Alliance Semiconductors Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
US9798668B2 (en) | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode |
JP6218971B2 (ja) * | 2014-12-14 | 2017-10-25 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択 |
US9946469B2 (en) | 2016-03-21 | 2018-04-17 | Smart Modular Technologies, Inc. | Solid state storage system with latency management mechanism and method of operation thereof |
US11237972B2 (en) | 2017-12-29 | 2022-02-01 | Advanced Micro Devices, Inc. | Method and apparatus for controlling cache line storage in cache memory |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5693163A (en) * | 1979-12-25 | 1981-07-28 | Fujitsu Ltd | Buffer access control system |
JPS60189553A (ja) * | 1984-03-09 | 1985-09-27 | Hitachi Ltd | バッファメモリ制御方法 |
JPH05165719A (ja) * | 1991-12-18 | 1993-07-02 | Nec Eng Ltd | メモリアクセス処理装置 |
JP3483296B2 (ja) * | 1994-04-28 | 2004-01-06 | 富士通株式会社 | 情報処理装置 |
JP2000020397A (ja) | 1998-07-03 | 2000-01-21 | Pfu Ltd | キャッシュメモリ制御装置 |
US6792568B2 (en) * | 2001-07-31 | 2004-09-14 | Hewlett Packard Development Co. Lp | Data transfer and storage device and method |
JP4673584B2 (ja) * | 2004-07-29 | 2011-04-20 | 富士通株式会社 | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
-
2006
- 2006-02-24 WO PCT/JP2006/303475 patent/WO2007096998A1/ja active Application Filing
- 2006-02-24 JP JP2008501551A patent/JPWO2007096998A1/ja active Pending
- 2006-02-24 EP EP06714614A patent/EP1988466A4/en not_active Withdrawn
-
2008
- 2008-08-22 US US12/230,113 patent/US20080320227A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080320227A1 (en) | 2008-12-25 |
EP1988466A4 (en) | 2009-12-23 |
EP1988466A1 (en) | 2008-11-05 |
WO2007096998A1 (ja) | 2007-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4297968B2 (ja) | コヒーレンシ維持装置およびコヒーレンシ維持方法 | |
US8285940B2 (en) | Method and apparatus for high speed cache flushing in a non-volatile memory | |
JPWO2007096998A1 (ja) | キャッシュメモリ装置およびキャッシュメモリ制御方法 | |
JP4608011B2 (ja) | 演算処理装置および演算処理方法 | |
US20100217937A1 (en) | Data processing apparatus and method | |
US7428617B2 (en) | Cache memory and method to maintain cache-coherence between cache memory units | |
JPS6135584B2 (ja) | ||
JPH07295886A (ja) | 階層メモリ、階層メモリを有するコンピュータ・システムおよび階層メモリ管理方法 | |
JP4297961B2 (ja) | メモリアクセス制御装置およびメモリアクセス制御方法 | |
US7716423B2 (en) | Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes | |
US20110072216A1 (en) | Memory control device and memory control method | |
JP4812876B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20080313409A1 (en) | Separating device and separating method | |
US20110179227A1 (en) | Cache memory and method for cache entry replacement based on modified access order | |
JP4900203B2 (ja) | 記憶情報配置システム、記憶情報配置方法、および記憶情報配置プログラム | |
US11269785B2 (en) | Cache systems of memory systems and data caching methods of cache systems | |
JP7470112B2 (ja) | 持続性メモリクリーニング | |
US9075732B2 (en) | Data caching method | |
JPH08137753A (ja) | ディスクキャッシュ装置 | |
JP6337570B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JPH04363738A (ja) | キャッシュメモリ装置 | |
JPH01169553A (ja) | バッファ記憶制御方式 | |
JPH04148256A (ja) | キャッシュ制御装置 | |
JPH0362143A (ja) | キャッシュライトバック制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090407 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090605 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090811 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100112 |