データ処理装置
【課題】2次キャッシュにおけるキャッシュヒット率を向上させることが可能なデータ処理装置を提供すること。
【解決手段】L2制御部32は、タグメモリ34を参照して、1次キャッシュ12および22のいずれかからの要求データがデータメモリ33に格納されていると判断した場合、データメモリ33から当該データを読み出して要求があった1次キャッシュに出力し、タグメモリ34に格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。したがって、2次キャッシュ31にそのデータがしばらく残ることになり、複数のCPUが同じデータに対して集中してアクセスするような場合であっても、2次キャッシュ31におけるキャッシュヒット率が低下するのを防止することが可能となる。
【解決手段】L2制御部32は、タグメモリ34を参照して、1次キャッシュ12および22のいずれかからの要求データがデータメモリ33に格納されていると判断した場合、データメモリ33から当該データを読み出して要求があった1次キャッシュに出力し、タグメモリ34に格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。したがって、2次キャッシュ31にそのデータがしばらく残ることになり、複数のCPUが同じデータに対して集中してアクセスするような場合であっても、2次キャッシュ31におけるキャッシュヒット率が低下するのを防止することが可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、階層的に構築されたキャッシュメモリを制御する技術に関し、特に、2次キャッシュを効率的に使用することが可能なデータ処理装置に関する。
【背景技術】
【0002】
近年、処理速度の高速化のためにマイクロコンピュータにキャッシュメモリが搭載されることが多い。CPU(Central Processing Unit)がキャッシュメモリを介して主記憶にアクセスすることにより、キャッシュにヒットしたときの処理速度を向上させることができる。
【0003】
このようなキャッシュメモリを介して主記憶にアクセスするCPUを複数搭載したマルチプロセッサシステムにおいては、キャッシュメモリを階層構造とし、さらに処理速度の高速化を図ったものがある。これに関連する技術として、下記の特許文献1〜2に開示された発明がある。
【0004】
特許文献1は、1次,2次キャッシュメモリの2階層のキャッシュメモリを有し、両キャッシュメモリ間で同一データを極力あるいは全く重複して登録しないようにすることにより、2次キャッシュメモリの容量以上のデータコピーを主記憶からキャッシュメモリ全体に登録することを目的とする。データ処理装置からのデータリードアクセス要求に対してキャッシュメモリ全体の中に要求データが存在しない場合、1次キャッシュメモリでは主記憶から転送されてきたアクセス対象データを登録し、2次キャッシュメモリではそのデータの登録を行わない。2次キャッシュメモリにおいてデータの登録が行われるのは、1次キャッシュメモリでデータの登録が行われる際に無効化されるデータが発生した場合にそのデータを登録する。
【0005】
特許文献2は、2次キャッシュの有効利用によりシステムの処理能力を向上させることを目的とする。まず、プロセッサが要求するアドレスに対応するデータが1次キャッシュに存在するか否かを判別する。当該データが1次キャッシュに存在しないときは、2次キャッシュに存在するか否かを判別する。そして、当該2次キャッシュに存在するときは、当該2次キャッシュ上のデータを1次キャッシュに転記し、この転記により1次キャッシュから追い出されたデータを2次キャッシュに転記する。このようにして、1次キャッシュにあったデータは、2次キャッシュに転送して格納され、これにより、2次キャッシュを有効に利用することが可能となる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平06−250926号公報
【特許文献2】特開平05−073415号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
1次キャッシュに存在するデータと同じデータが2次キャッシュにも存在することを許容する、いわゆるinclusiveキャッシュアーキテクチャにおいては、1次キャッシュに存在するデータがほとんど2次キャッシュにも存在するため、実際にキャッシュできるデータ量は2次キャッシュの容量とほぼ等しくなる。
【0008】
一方、1次キャッシュに存在するデータと同じデータが2次キャッシュにも存在することを許容しない、いわゆるexclusiveキャッシュアーキテクチャにおいては、1次キャッシュに存在するデータが2次キャッシュには存在しないため、実際にキャッシュできるデータ量は1次キャッシュの容量と2次キャッシュの容量との合計となる。したがって、inclusiveキャッシュアーキテクチャと比較して、キャッシュメモリの容量を有効に利用することができる。
【0009】
上記特許文献1および特許文献2は、exclusiveキャッシュアーキテクチャに類似の構成を有しており、1次キャッシュにミスヒットして2次キャッシュにヒットした場合、2次キャッシュからデータが読み出された後、2次キャッシュからそのデータが消去されることになる。しかしながら、複数のCPUが同じデータを短時間に集中してアクセスするような場合には、2次キャッシュにおけるヒット率が低下することになる。
【0010】
本発明は、上記問題点を解決するためになされたものであり、その目的は、2次キャッシュにおけるキャッシュヒット率を向上させることが可能なデータ処理装置を提供することである。
【課題を解決するための手段】
【0011】
本発明の一実施例によれば、複数のCPUのそれぞれに個別に接続される複数の1次キャッシュと、複数の1次キャッシュによって共有される2次キャッシュと、2次キャッシュに接続される主記憶とを含んだデータ処理装置が提供される。2次キャッシュは、複数の1次キャッシュが使用するデータを記憶するデータメモリと、データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、L2制御部とを含む。L2制御部は、タグメモリを参照して、複数の1次キャッシュのいずれかからの要求データがデータメモリに格納されていると判断した場合、データメモリから当該データを読み出して要求があった1次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。
【発明の効果】
【0012】
この実施例によれば、L2制御部が、データメモリからデータを読み出して要求があった1次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定するので、2次キャッシュにそのデータがしばらく残ることになる。2次キャッシュにそのデータが残っている期間に他のCPUが同じデータに対してアクセスするような場合であっても、2次キャッシュにおけるキャッシュヒット率が低下するのを防止することが可能となり、一方で他のCPUからのアクセスがない場合には、別のデータに置き換えが行なわれるため、2次キャッシュの利用効率を向上させることが可能となる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態におけるデータ処理装置の構成例を示すブロック図である。
【図2】タグメモリ15,25および34に格納されるタグ情報を説明するための図である。
【図3】本発明の第1の実施の形態におけるデータ処理装置の第1の動作を説明するための図である。
【図4】図3に示すCPU2側の動作を説明するためのタイミングチャートである。
【図5】本発明の第1の実施の形態におけるデータ処理装置の第2の動作を説明するための図である。
【図6】図5に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。
【図7】図5に示すCPU2側の動作を説明するためのタイミングチャートである。
【図8】本発明の第1の実施の形態におけるデータ処理装置の第3の動作を説明するための図である。
【図9】本発明の第1の実施の形態におけるデータ処理装置の第4の動作を説明するための図である。
【図10】本発明の第1の実施の形態におけるデータ処理装置の第5の動作を説明するための図である。
【図11】図10に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。
【図12】L1制御部13および23の処理手順を説明するためのフローチャートである。
【図13】L1制御部13および23がスヌープ制御部41から無効化要求を受けたときの処理手順を説明するためのフローチャートである。
【図14】L1制御部13および23がスヌープ制御部41からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。
【図15】スヌープ制御部41の処理手順を説明するためのフローチャートである。
【図16】L2制御部32の処理手順を説明するためのフローチャート(その1)である。
【図17】L2制御部32の処理手順を説明するためのフローチャート(その2)である。
【図18】本発明の第2の実施の形態におけるデータ処理装置の動作を説明するための図である。
【図19】図18に示す第2の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。
【図20】本発明の第2の実施の形態におけるL1制御部13および23に追加された処理の手順を説明するためのフローチャートである。
【図21】本発明の第2の実施の形態におけるL2制御部32の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるデータ処理装置の構成例を示すブロック図である。このデータ処理装置は、CPU11および21と、1次キャッシュ12および22と、2次キャッシュ31と、スヌープ制御部41と、主記憶51とを含む。
【0015】
CPU11は、1次キャッシュ12に対して命令コードのフェッチやオペランドデータの読み出し/書き込みを行なうときに、1次キャッシュ12にアクセス要求信号Req11を出力する。そして、CPU11は、Data11信号によって命令コード/オペランドデータの入力やオペランドデータの出力を行なう。なお、以下の説明においては、簡単のために命令コードおよびオペランドデータをまとめてデータと呼ぶことにする。
【0016】
1次キャッシュ12は、CPU11が使用するデータを一時的に格納する。この1次キャッシュ12は、1次キャッシュ12全体の制御を行なうL1制御部(L1制御1)13と、データメモリ(C11D−RAM)14と、タグメモリ(C11T−RAM)15とを含む。
【0017】
L1制御部13は、CPU11からアクセス要求を受けると、C11Tag信号を介してタグメモリ15の内容を参照し、そのデータがデータメモリ14に格納されているか否かを判定する。データメモリ14にそのデータがある場合、すなわちキャッシュヒットした場合、L1制御部13は、C11Data信号を介してデータメモリ14に対するデータ書き込みまたはデータ読み出しを行なう。
【0018】
また、データメモリ14にそのデータがない場合、すなわちミスヒットの場合、L1制御部13は2次キャッシュ31に対してアクセス要求信号Req21を出力し、Data21信号を介してデータを入力する。そして、L1制御部13は、そのデータをデータメモリ14に格納すると共に、タグメモリ15にそのデータの新規登録を行なう。
【0019】
また、L1制御部13は、スヌープ制御部41からアクセス要求信号ReqS11によってライトバック要求を受けると、タグメモリ15の内容を参照して、データメモリ14にそのデータがあるか否かを判定する。データメモリ14にそのデータがあり、Dirtyの場合には、2次キャッシュ31に対してそのデータのライト要求を出力する。
【0020】
CPU21は、1次キャッシュ22に対してデータの読み出し/書き込みを行なうときに、1次キャッシュ22にアクセス要求信号Req12を出力する。そして、CPU21は、Data12信号によってデータの入出力を行なう。
【0021】
1次キャッシュ22は、CPU21が使用するデータを一時的に格納する。この1次キャッシュ22は、1次キャッシュ22全体の制御を行なうL1制御部(L1制御2)23と、データメモリ(C12D−RAM)24と、タグメモリ(C12T−RAM)25とを含む。なお、これらの構成要素は、1次キャッシュ12内の対応する構成要素と同じ構成および機能を有している。したがって、それらの構成および機能の詳細な説明は繰り返さない。
【0022】
2次キャッシュ31は、1次キャッシュ12および22に共有のキャッシュメモリであり、1次キャッシュ12および22が使用するデータを一時的に格納する。この2次キャッシュ31は、2次キャッシュ31全体の制御を行なうL2制御部(L2制御)32と、データメモリ(C2D−RAM)33と、タグメモリ(C2T−RAM)34とを含む。
【0023】
L2制御部32は、1次キャッシュ12または13からアクセス要求を受けると、C2Tag信号を介してタグメモリ34の内容を参照し、そのデータがデータメモリ33に格納されているか否かを判定する。データメモリ33にそのデータがある場合、すなわちキャッシュヒットした場合、L2制御部32は、C2Data信号を介してデータメモリ33からデータ読み出しを行なう。
【0024】
また、データメモリ33にそのデータがない場合、すなわちミスヒットの場合、L2制御部32は主記憶51に対してアクセス要求信号Req3を出力し、Data3信号を介してデータを入力する。そして、L2制御部32は、そのデータをデータメモリ33に格納すると共に、タグメモリ34にそのデータのタグ情報の新規登録を行なう。
【0025】
スヌープ制御部41は、CPU11または21からL1制御部13または23に対してWRITE要求があり、それがキャッシュヒットの場合、すなわちそのデータがDirtyの場合に、他のすべてのL1制御部に対してそのデータの無効化要求を出力する。
【0026】
また、スヌープ制御部41は、L1制御部13または23からL2制御部32へのREAD要求をモニタしており、READ要求を検知すると、他のすべてのL1制御部に対してライトバック要求を出力する。
【0027】
図2は、タグメモリ15,25および34に格納されるタグ情報を説明するための図である。タグメモリ15,25および34は、データメモリ14,24または33に格納されるキャッシュラインのそれぞれに対応してタグ情報を有しており、それぞれのタグ情報はタグアドレスと、Validビットと、Dirtyビットと、追い出し優先順位とを含む。
【0028】
タグアドレスは、データの原本が存在する主記憶51のアドレス上位ビットを示している。Validビットは、そのデータが有効か否かを示すフラグである。Dirtyビットは、そのデータが書き換えられたか否かを示すフラグである。また、追い出し優先順位は、同じキャッシュラインで別のウェイの各データの中での追い出し優先順位を示す。なお、数字が小さいほど追い出し優先順位が高いものとする。
【0029】
図3は、本発明の第1の実施の形態におけるデータ処理装置の第1の動作を説明するための図である。なお、図3においては、1次キャッシュをL1とし、2次キャッシュをL2としている。以下の説明においても同様である。
【0030】
また、L1およびL2のそれぞれの箱は、インデクス(アドレス下位ビット)が同一の、あるキャッシュラインを表している。L1のウェイ数をそれぞれ1、L2のウェイ数を4としている。丸で囲まれたA〜Dは、それぞれキャッシュに格納されたデータを示しており、アドレス下位ビット(インデクス)が同一で、アドレス上位ビット(タグアドレス)が異なるデータである。
【0031】
また、図3、図5、図8〜10に示す第1〜第5の動作は、本発明の第1の実施の形態におけるデータ処理装置の一連の動作を模式的に示している。
【0032】
CPU1がデータ“C”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“C”が読み出される場合には、L2にはデータ“C”がアロケートされず、L1にのみアロケートされる。
【0033】
また、CPU2がデータ“A”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“A”が読み出される場合であって、データ“D”がL1から追い出される場合には、それがダーティであるか否かにかかわらずデータ“D”のライトバックを行ない、追い出されたデータ“D”がL2にアロケートされる。
【0034】
図3に示すこれらの動作においては、L1およびL2の両方に同じデータが存在することは起こらなことになる。
【0035】
図4は、図3に示すCPU2側の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“A”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0036】
T2において、L1制御部23は、Req22信号によってデータ“A”のREAD要求をL2制御部32(L2制御)に出力する。また、T3において、L1制御部23は、追い出すデータ“D”をデータメモリ24(C12D−RAM)から読み出すと共に、タグメモリ25からそのデータに対応するタグ情報を無効化する。なお、L1制御部23は、タグメモリ25に格納される追い出し優先順位を参照することにより、追い出すデータを決定する。この追い出し優先順位は、たとえばLRU(Least Recently Used)方式によって更新される。
【0037】
スヌープ制御部41は、L1制御部23からL2制御部32への読み出し要求を検出すると、T4において、ReqS11信号によってライトバック要求をL1制御部13(L1制御1)に出力する。
【0038】
L1制御部13は、タグメモリ15を参照することによりデータ“A”が存在しないことを検出すると、T5において、何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知する。タグメモリ15を参照することによりデータメモリ14にデータ“A”が存在することを検出した場合には、T5において主記憶51へライトバックを行なうためのアクセスを行なった後に、AckS11信号によってスヌープ制御部41にライトバック終了を通知する。
【0039】
スヌープ制御部41は、L1制御部13からライトバック終了通知を受けると、T6において、L2制御部32にReqS2信号を出力することによって、L2制御部32に転送許可を通知する。
【0040】
L2制御部32は、スヌープ制御部41から転送許可通知を受けると、T7において、主記憶51に対してアクセス要求信号Req3を出力し、データ“A”の読み出しを要求する。
【0041】
T8において、L1制御部23は、Req22信号によってL2制御部32に追い出しデータ“D”のWRITE要求を出力すると共に、Data22信号によって追い出しデータ“D”を出力する。
【0042】
T9において、L2制御部32は、データメモリ33(C2D−RAM)にデータ“D”を格納すると共に、タグメモリ34にデータ“D”のタグ情報の新規登録を行なう。
【0043】
T10において、L2制御部32は、主記憶51からデータ“A”を入力する。そして、T11において、L2制御部32は、Data22信号によってデータ“A”をL1制御部23に転送する。このとき、データ“A”は、2次キャッシュ31のデータメモリ33にはアロケートされない。
【0044】
T12において、L1制御部23は、Data12信号によってデータ“A”をCPU21に出力する。そして、T13において、L1制御部23は、C12Data信号によってデータ“A”をデータメモリ24に書き込むと共に、タグメモリ25にデータ“A”のタグ情報の新規登録を行なう。
【0045】
図5は、本発明の第1の実施の形態におけるデータ処理装置の第2の動作を説明するための図である。CPU2がデータ“B”を読み出すときに、L1でミスヒットし、L2でヒットした場合、L2からL1にデータ“B”をコピーする。そして、L1から追い出されたデータ“A”がL2にアロケートされる。
【0046】
このとき、L1およびL2の両方にデータ“B”が存在することになるが、かかる動作を行なう前のL2におけるデータ“B”の追い出し優先順位に関係なく、L2におけるデータ“B”の追い出し優先順位を最高の“1”にする。すなわち、L2においてデータの追い出しが必要な状況が発生したときに、どのウェイのデータを追い出すかを判定する際、データ“B”を追い出すと判定される。これによって、L1およびL2の両方に同じデータが存在する期間を短くすることができる。
【0047】
図6は、図5に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。上述のように、L1にコピーされたデータ“B”に対応する追い出し優先順位が最高の“1”となる。そして、データ“B”を有効(Validビット=1)とし、Cleanな状態(Dirtyビット=0)とする。
【0048】
また、追い出されたデータ“A”に対応する追い出し優先順位が最低の“3”となる。このデータ“A”が有効(Validビット=1)とされるが、L1においてデータが書き換えられているため、Dirtyな状態(Dirtyビット=1)とされている。
【0049】
図7は、図5に示すCPU2側の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“B”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0050】
T2において、L1制御部23は、Req22信号によってデータ“B”のREAD要求をL2のL2制御部32(L2制御)に出力する。このとき、L2制御部32は、タグメモリ34を参照することによりデータ“B”がヒットしたことを検出する。
【0051】
T3において、L1制御部23は、追い出すデータ“A”をデータメモリ24(C12D−RAM)から読み出すと共に、タグメモリ25からそのデータに対応するタグを削除する。
【0052】
スヌープ制御部41は、L1制御部23からL2制御部32へのREAD要求を検出すると、T4において、ReqS11信号によってライトバック要求をL1制御部13(L1制御1)に出力する。
【0053】
L1制御部13は、タグメモリ15を参照することによりデータ“B”が存在しないことを検出すると、T5において、何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知する。データ“B”がデータメモリ14に存在する場合は、データ“B”は1次キャッシュ12と2次キャッシュ31とに重複して存在すると共に、主記憶51に存在することになる。この場合については後述する。
【0054】
スヌープ制御部41は、L1制御部13からライトバック終了通知を受けると、T6において、L2制御部32にReqS2信号を出力することによって、L2制御部32に転送許可を通知する。
【0055】
L2制御部32は、スヌープ制御部41から転送許可通知を受けると、T7において、C2Data信号によってデータメモリ33からデータ“B”を読み出し、Data22信号によってデータ“B”をL1制御部23に出力する。このとき、L2制御部32は、データ“B”の追い出し優先順位が最高となるようにタグ情報を更新する。
【0056】
T8において、L1制御部23は、L2制御部32から受けたデータ“B”をCPU21に出力する。また、T9において、L1制御部23は、C12Data信号によってデータ“B”をデータメモリ24に格納すると共に、タグメモリ25にデータ“B”のタグ情報の新規登録を行なう。
【0057】
T10において、L1制御部23は、Req22信号によってL2制御部32に追い出しデータ“A”のWRITE要求を出力すると共に、Data22信号によって追い出しデータ“B”を出力する。
【0058】
T11において、L2制御部32は、データメモリ33にデータ“A”を格納すると共に、タグメモリ34にデータ“A”のタグ情報の新規登録を行なう。
【0059】
図8は、本発明の第1の実施の形態におけるデータ処理装置の第3の動作を説明するための図である。図8〜図10はデータのアクセスの点において連続する。
【0060】
図5を用いて説明したように、L2からCPU2のL1にデータ“B”をコピーするときに、データ“B”のL2での追い出し優先順位が最高となるが、このデータ“B”はしばらくL2に残ることになる。このとき、複数のCPUが同じデータ“B”を短時間に集中してアクセスする場合、たとえばCPU1がデータ“B”をアクセスする場合には、L2においてこのデータ“B”にヒットすることになる。この場合、スヌープ制御部41はL1制御部23に対してライトバック要求を出力する。
【0061】
CPU11または12からのデータライト要求に対して、1次キャッシュ12,22および2次キャッシュ31がライトスルー動作を行なう場合、1次キャッシュ22と2次キャッシュ31との両方に存在するデータ“B”は一致しており、1次キャッシュ22は何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知してよい。
【0062】
一方で、CPU11または12からのデータライト要求に対して、1次キャッシュ12,22および2次キャッシュ31がライトバック動作を行なう場合、1次キャッシュ22と2次キャッシュ31(および主記憶51)に存在するデータ“B”は不一致であることが考えられる。そのため、スヌープ制御部41からのライトバック要求に対して、1次キャッシュ22は2次キャッシュ31(および主記憶51)に対してデータ“B”のライトバックを行なうアクセスを行なった後に、AckS11信号によってスヌープ制御部41にライトバック終了を通知する。
【0063】
図8においては、CPU1がデータ“B”を読み出すときに、L1でミスヒットし、L2でヒットするので、L2からL1にデータ“B”がコピーされる。そして、L1から追い出されたデータ“C”がL2にアロケートされる。このとき、L2におけるデータ“B”の追い出し優先順位が最高のまま維持される。
【0064】
図9は、本発明の第1の実施の形態におけるデータ処理装置の第3の動作に続く第4の動作を説明するための図である。CPU1がデータ“C”を読み出すときに、L1でミスヒットし、L2でヒットするので、L2からL1にデータ“C”がコピーされる。このとき、L2におけるデータ“C”の追い出し優先順位を最高とする。そして、L1から追い出されたデータ“B”がL2にアロケートされるが、データ“B”は既にL2に存在しているため、L2に存在する当該データ“B”を更新し、通常のLRU制御等によりデータ“B”の追い出し優先順位が決定される。
【0065】
また、CPU2がデータ“E”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“E”が読み出される。そして、L1から追い出されたデータ“B”がL2にアロケートされる。この場合も、CPU1からデータ“B”が追い出された場合と同じ動作が繰り返される。
【0066】
図10は、本発明の第1の実施の形態におけるデータ処理装置の第4の動作に続く第5の動作を説明するための図である。CPU2がデータ“A”を読み出すときに、L1でミスヒットし、L2でヒットする。このとき、CPU2のL1から追い出されたデータ“E”がL2にアロケートされることになるが、追い出し優先順位が最高のデータ“C”がL2から追い出される。その後、L2からL1にデータ“A”がコピーされ、L2におけるデータ“A”の追い出し優先順位を最高とする。
【0067】
図11は、図10に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。上述のように、L1にコピーされたデータ“A”に対応する追い出し優先順位が最高の“1”となる。このデータ“A”は有効(Validビット=1)であり、L1においてデータが書き換えられているため、Dirtyな状態(Dirtyビット=1)である。
【0068】
また、追い出されたデータ“E”に対応する追い出し優先順位が最低の“4”となる。このデータ“E”が有効(Validビット=1)とされるが、L1においてデータが書き換えられていないため、Cleanな状態(Dirtyビット=0)とされている。
【0069】
図12は、L1制御部13および23の処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0070】
まず、L1制御部13がCPU11からデータのアクセス要求を受けると(S11)、タグメモリ15に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する(S12)。
【0071】
ミスヒットの場合には(S13,ミス)、2次キャッシュ31に対してREAD要求を出力し(S14)、データメモリ14からデータを追い出すべきか否かを判断する(S15)。データを追い出す必要がない場合には(S16,No)、ステップS19に処理が進む。
【0072】
データを追い出す必要がある場合には(S16,Yes)、データメモリ14から優先順位が最高のデータを読み出し、そのデータに対応するValidビットに“0”を書き込んで無効化する(S17)。そして、L2制御部32に対して追い出しデータを転送し、WRITE要求を出力する(S18)。
【0073】
L1制御部13がL2制御部32から要求データを受けると(S19)、CPU11からのアクセス要求がWRITE要求の場合には、要求データにCPU11から受けたデータを上書きし(S20)、スヌープ制御部41に対してデータが書き換えられたことを通知する、Dirty通知を発行する(S21)。なお、アクセス要求がWRITE要求の場合には、後述のステップS23の処理は行なわれない。
【0074】
そして、L1制御部13は、キャッシュアロケートしてデータメモリ14に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ15に新規登録する(S22)。
【0075】
また、CPU11からのアクセス要求がREAD要求の場合には、CPU11に対して要求データを転送する(S23)。なお、アクセス要求がREAD要求の場合には、上述のステップS20およびS21の処理は行なわれない。
【0076】
また、キャッシュヒットの場合には(S13,ヒット)、CPU11からのアクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S24)。アクセス要求がREAD要求の場合(S24,READ)、L1制御部13は、データメモリ14から要求データを読み出して(S25)、要求データをCPU11に転送する(S26)。
【0077】
また、アクセス要求がWRITE要求の場合(S24,WRITE)、L1制御部13は、データメモリ14に要求データを書き込むと共に、そのデータに対応するタグ情報を更新する(S27)。そして、L1制御部13は、スヌープ制御部41に対してデータが書き換えられたことを通知する、Dirty通知を発行する(S28)。
【0078】
図13は、L1制御部13および23がスヌープ制御部41から無効化要求を受けたときの処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0079】
まず、スヌープ制御部41から無効化要求を受けると(S31)、L1制御部13は、タグメモリ15を参照して、無効化要求を受けたデータと同じアドレスのデータがあるか否かを調べる(S32)。
【0080】
同じアドレスのデータがある場合(S33,Yes)、L1制御部13は、無効化要求を受けたデータに対応するタグ情報のValidビットに“0”を書き込んで無効化する(S34)。また、同じアドレスのデータがない場合には(S33,No)、そのまま処理を終了する。
【0081】
図14は、L1制御部13および23がスヌープ制御部41からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0082】
まず、スヌープ制御部41からライトバック要求を受けると(S41)、L1制御部13は、タグメモリ15を参照して、ライトバック要求を受けたデータと同じアドレスのデータがあるか否かを調べる(S42)。同じアドレスのデータがない場合(S43,No)、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0083】
同じアドレスのデータがある場合(S43,Yes)、L1制御部13は、タグメモリ15を参照して、ライトバック要求を受けたデータがDirtyな状態であるか否かを判断する(S44)。ライトバック要求を受けたデータがCleanな状態であれば(S44,No)、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0084】
ライトバック要求を受けたデータがDirtyな状態であれば(S44,Yes)、L1制御部13は、データメモリ14から要求データを読み出し(S45)、L2制御部32に要求データを転送してWRITE要求を出力する(S46)。そして、L1制御部13は、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0085】
図15は、スヌープ制御部41の処理手順を説明するためのフローチャートである。まず、スヌープ制御部41がL1制御部13または23からDirty通知を受けると(S51)、他のすべてのL1制御部に対して無効化要求を出力する(S52)。
【0086】
また、スヌープ制御部41は、L1制御部13または23からL2制御部32へのREAD要求を検知すると(S53)、他のすべてのL1制御部に対してライトバック要求を出力する(S54)。
【0087】
そして、すべてのL1制御部からのライトバック終了通知を待つ(S55)。未だライトバック終了通知が来ていないL1制御部があれば(S56,No)、すべてのL1制御部からのライトバック終了通知があるまでステップS55の処理を繰り返す。また、すべてのL1制御部からのライトバック終了通知があれば(S56,Yes)、L2制御部32に対してデータ転送許可を出力する(S57)。
【0088】
図16は、L2制御部32の処理手順を説明するためのフローチャート(その1)である。まず、L2制御部32がL1制御部13または23からデータのアクセス要求を受けると(S61)、タグメモリ34に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する(S62)。キャッシュヒットの場合には(S63,ヒット)、図17の(1)に処理が進む。
【0089】
また、ミスヒットの場合(S63,ミス)、L2制御部32は、アクセス要求がREAD要求か、WRITE要求かを判断する(S64)。アクセス要求がWRITE要求の場合(S64,WRITE)、L2制御部32は、そのデータがL1制御部13または23からの追い出しデータであるか否かを判断する(S65)。
【0090】
L1制御部13または23からの追い出しデータでない場合(S65,No)、L2制御部32は、主記憶51に追い出しデータを転送し、主記憶51に対してWRITE要求を出力する(S71)。
【0091】
また、L1制御部13または23からの追い出しデータの場合(S65,Yes)、L2制御部32は、データメモリ33からデータを追い出す必要があるか否かを判断する(S66)。この判定は、L2制御部32がタグメモリ34を参照し、対応する4つのキャッシュラインのすべてに有効なデータが格納されているか否かを判定することによって行なわれる。データを追い出す必要がない場合(S67,No)、ステップS70に処理が進む。
【0092】
また、データを追い出す必要がある場合(S67,Yes)、L2制御部32は、データメモリ33から優先順位が最高のデータを読み出し、そのデータに対応するタグ情報のValidビットに“0”を書き込んで無効化する(S68)。そして、主記憶51に対して追い出しデータを転送し、WRITE要求を出力する(S69)。
【0093】
そして、L2制御部32は、キャッシュアロケートしてデータメモリ33に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ34に新規登録する(S70)。
【0094】
また、L1制御部13または23からのアクセス要求がREAD要求の場合には(S64,READ)、スヌープ制御部41からの転送許可通知を待った後(S72)、主記憶51に対してREAD要求を出力する(S73)。そして、主記憶51から要求データを受けて(S74)、図17の(3)に処理が進む。
【0095】
図17は、L2制御部32の処理手順を説明するためのフローチャート(その2)である。図16のステップS63において、キャッシュヒットの場合(S63,ヒット)、L1制御部13または23からのアクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S81)。
【0096】
L1制御部13または23からのアクセス要求がREAD要求の場合(S81,READ)、スヌープ制御部41からの転送許可通知を待った後(S82)、L2制御部32は、データメモリ33から要求データを読み出す(S83)。
【0097】
そして、L2制御部32は、タグメモリ34に格納される要求データに対応する追い出し優先順位を最も高くし(S84)、要求元のL1制御部13または23に要求データを転送する(S85)。
【0098】
また、L1制御部13または23からのアクセス要求がWRITE要求の場合(S81,WRITE)、L2制御部32は、データメモリ33に要求データを書き込むと共に、タグメモリ34に格納されるそのデータに対応するタグ情報を更新する(S86)。
【0099】
以上説明したように、本実施の形態におけるデータ処理装置によれば、CPU11または21がデータを読み出すときに、1次キャッシュ12または22でミスヒットし、2次キャッシュ31でヒットした場合、2次キャッシュ31から1次キャッシュ12または22にデータをコピーする。このとき、2次キャッシュにおけるそのデータの追い出し優先順位を最高にするようにしたので、1次キャッシュ12および22と2次キャッシュ31との両方に同じデータが存在することが少なくなり、キャッシュメモリに多くのデータを格納することができるので、キャッシュヒット率を向上させることが可能となった。
【0100】
また、追い出し優先順位を最高にしてしばらく2次キャッシュ31にそのデータを残しておくので、複数のCPUが同じデータに対して集中してアクセスするような場合であっても、2次キャッシュ31におけるキャッシュヒット率が低下するのを防止することが可能となった。
【0101】
なお、以上の説明においては、CPU11または21がデータを読み出すときに、1次キャッシュ12または22でミスヒットし、2次キャッシュ31でヒットした場合、2次キャッシュ31がそのデータを出力すると共に、そのデータの追い出し優先順位を最高にするとして説明した。しかしながら、追い出し優先順位を最高にするのではなく、LRU方式で決定される通常の追い出し優先順位よりも高くすれば同様の効果が得られることは言うまでもない。
【0102】
(第2の実施の形態)
本発明の第2の実施の形態におけるデータ処理装置の構成は、図1に示す第1の実施の形態におけるデータ処理装置の構成と比較して、2次キャッシュ31のタグメモリ34に、1次キャッシュ12および22のタグメモリ15および25に格納されるタグ情報と同じ情報を格納する領域が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0103】
図18は、本発明の第2の実施の形態におけるデータ処理装置の動作を説明するための図である。なお、図18においては、1次キャッシュをL1とし、2次キャッシュをL2としている。
【0104】
L1およびL2のそれぞれの上段の箱は、インデクス(アドレス下位ビット)が同一の、あるキャッシュラインを表している。また、L1およびL2のそれぞれの下段の箱は、上段のキャッシュラインに対応するタグ情報を格納する領域を表している。なお、L2の下段の左端の箱は、CPU1のL1と同じタグ情報を格納する領域を表しており、L2の下段の右端の箱は、CPU2のL1と同じタグ情報を格納する領域を表している。
【0105】
CPU2がデータを読み出すときに、L1でミスヒットした場合、L2でヒットするか否かを判断することになるが、このとき他のL1に対応するタグ情報も参照してヒットするか否かを判断する。
【0106】
たとえば、CPU2がデータ“C”を読み出すときに、L1でミスヒットし、L2でもミスヒットすることになるが、L2の下段の左端にデータ“C”に対応するタグ情報があるため、CPU1のL1にデータ“C”が存在することが分かる。このとき、L2は、CPU1のL1からデータ“C”をコピーし、そのデータ“C”をCPU2のL1に転送する。
【0107】
図19は、図18に示す第2の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“C”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0108】
T2において、L1制御部23は、Req22信号によってデータ“C”のREAD要求をL2制御部32(L2制御)に出力する。
【0109】
データ“C”のREAD要求を受けると、T3において、L2制御部32は、C2Tag信号によってタグメモリ34(C2T−RAM)からタグ情報を読み出し、それを参照することによりデータ“C”が1次キャッシュ12に存在することを検出する。
【0110】
T4において、L2制御部32は、L1制御部13(L1制御1)に対してデータ“C”のREAD要求を出力する。なお、本実施の形態においては、L2制御部32からL1制御部13および23に対するアクセス要求信号が追加されているものとする。
【0111】
L2制御部32からデータ“C”のREAD要求を受けると、T5において、L1制御部13は、C11Data信号によってデータメモリ14(C11D−RAM)からデータ“C”を読み出す。そして、T6において、L1制御部13は、Data21信号によってデータ“C”をL2制御部32に転送する。
【0112】
L1制御部13からデータ“C”を受けると、T7において、L2制御部32は、Data22信号によってデータ“C”をL1制御部23に出力する。そして、T8において、L1制御部23は、C12Data信号によってデータ“C”をデータメモリ24に書き込むと共に、タグメモリ25にデータ“C”のタグ情報の新規登録を行なう。そして、T9において、L1制御部23は、Data12信号によってデータ“C”をCPU21に出力する。
【0113】
図20は、本発明の第2の実施の形態におけるL1制御部13および23に追加された処理の手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0114】
まず、L1制御部13がL2制御部32からREAD要求を受けると(S91)、データメモリ14から要求データを読み出す(S92)。そして、L1制御部13は、L2制御部32に対して要求データを転送する(S93)。
【0115】
図21は、本発明の第2の実施の形態におけるL2制御部32の処理手順を説明するためのフローチャートである。なお、本実施の形態におけるL2制御部32は、図16に示すフローチャートと同様の処理を行なうものとし、図21には、図16のステップS63においてキャッシュヒットした場合以降の処理を示すものとする。また、図17と同じ処理については、同じステップ番号を付すものとし、その詳細な説明は繰り返さない。
【0116】
キャッシュヒットした場合(S63,ヒット)、L2制御部32は、タグメモリ34を参照して、そのデータが2次キャッシュ31のデータメモリ33にあるか否かを判断する(S101)。
【0117】
そのデータが2次キャッシュ31、または2次キャッシュ31および別の1次キャッシュの両方にある場合(S101,L2又は両方)、ステップS81以降の処理を行なう。また、そのデータが別の1次キャッシュのみにある場合(S101,別のL1のみ)、アクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S102)。
【0118】
アクセス要求がWRITE要求の場合(S102,WRITE)、図16のステップS65に処理が進む。また、アクセス要求がREAD要求の場合(S102,READ)、L2制御部32は、その別のL1制御部に対してREAD要求を出力する(S103)。
【0119】
そして、その別のL1制御部から要求データを受けて(S104)、タグメモリ34の要求元のL1制御部と同じタグ情報を格納する領域に、そのタグ情報を書き込んで(S105)、要求元のL1制御部13または23に要求データを転送する(S85)。
【0120】
なお、L2制御部32は、L1制御部13および23からのアクセス要求、スヌープ制御部41からの無効化要求、ライトバック要求などをモニタしており、L1制御部13および23がタグメモリ15および25のタグ情報を更新するときに、2次キャッシュ31のタグメモリ34に格納される対応の情報を同様に更新するものとする。
【0121】
以上説明したように、本実施の形態におけるデータ処理装置によれば、2次キャッシュ31のタグメモリ34に、1次キャッシュ12および22のタグ情報と同じタグ情報を格納する領域を設ける。そして、L1制御部13または23からの要求データがデータメモリ33にない場合でも、他の1次キャッシュにそのデータがある場合には、他の1次キャッシュから要求データを読み出してL1制御部13または23に転送するようにした。したがって、第1の実施の形態において説明した効果に加えて、2次キャッシュ31のデータメモリ33に要求データが存在しないことによるキャッシュヒット率の低下を防止することが可能となった。
【0122】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0123】
11,21 CPU、12,22 1次キャッシュ、13,23 L1制御部、14,24,33 データメモリ、15,25,34 タグメモリ、41 スヌープ制御部、51 主記憶。
【技術分野】
【0001】
本発明は、階層的に構築されたキャッシュメモリを制御する技術に関し、特に、2次キャッシュを効率的に使用することが可能なデータ処理装置に関する。
【背景技術】
【0002】
近年、処理速度の高速化のためにマイクロコンピュータにキャッシュメモリが搭載されることが多い。CPU(Central Processing Unit)がキャッシュメモリを介して主記憶にアクセスすることにより、キャッシュにヒットしたときの処理速度を向上させることができる。
【0003】
このようなキャッシュメモリを介して主記憶にアクセスするCPUを複数搭載したマルチプロセッサシステムにおいては、キャッシュメモリを階層構造とし、さらに処理速度の高速化を図ったものがある。これに関連する技術として、下記の特許文献1〜2に開示された発明がある。
【0004】
特許文献1は、1次,2次キャッシュメモリの2階層のキャッシュメモリを有し、両キャッシュメモリ間で同一データを極力あるいは全く重複して登録しないようにすることにより、2次キャッシュメモリの容量以上のデータコピーを主記憶からキャッシュメモリ全体に登録することを目的とする。データ処理装置からのデータリードアクセス要求に対してキャッシュメモリ全体の中に要求データが存在しない場合、1次キャッシュメモリでは主記憶から転送されてきたアクセス対象データを登録し、2次キャッシュメモリではそのデータの登録を行わない。2次キャッシュメモリにおいてデータの登録が行われるのは、1次キャッシュメモリでデータの登録が行われる際に無効化されるデータが発生した場合にそのデータを登録する。
【0005】
特許文献2は、2次キャッシュの有効利用によりシステムの処理能力を向上させることを目的とする。まず、プロセッサが要求するアドレスに対応するデータが1次キャッシュに存在するか否かを判別する。当該データが1次キャッシュに存在しないときは、2次キャッシュに存在するか否かを判別する。そして、当該2次キャッシュに存在するときは、当該2次キャッシュ上のデータを1次キャッシュに転記し、この転記により1次キャッシュから追い出されたデータを2次キャッシュに転記する。このようにして、1次キャッシュにあったデータは、2次キャッシュに転送して格納され、これにより、2次キャッシュを有効に利用することが可能となる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平06−250926号公報
【特許文献2】特開平05−073415号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
1次キャッシュに存在するデータと同じデータが2次キャッシュにも存在することを許容する、いわゆるinclusiveキャッシュアーキテクチャにおいては、1次キャッシュに存在するデータがほとんど2次キャッシュにも存在するため、実際にキャッシュできるデータ量は2次キャッシュの容量とほぼ等しくなる。
【0008】
一方、1次キャッシュに存在するデータと同じデータが2次キャッシュにも存在することを許容しない、いわゆるexclusiveキャッシュアーキテクチャにおいては、1次キャッシュに存在するデータが2次キャッシュには存在しないため、実際にキャッシュできるデータ量は1次キャッシュの容量と2次キャッシュの容量との合計となる。したがって、inclusiveキャッシュアーキテクチャと比較して、キャッシュメモリの容量を有効に利用することができる。
【0009】
上記特許文献1および特許文献2は、exclusiveキャッシュアーキテクチャに類似の構成を有しており、1次キャッシュにミスヒットして2次キャッシュにヒットした場合、2次キャッシュからデータが読み出された後、2次キャッシュからそのデータが消去されることになる。しかしながら、複数のCPUが同じデータを短時間に集中してアクセスするような場合には、2次キャッシュにおけるヒット率が低下することになる。
【0010】
本発明は、上記問題点を解決するためになされたものであり、その目的は、2次キャッシュにおけるキャッシュヒット率を向上させることが可能なデータ処理装置を提供することである。
【課題を解決するための手段】
【0011】
本発明の一実施例によれば、複数のCPUのそれぞれに個別に接続される複数の1次キャッシュと、複数の1次キャッシュによって共有される2次キャッシュと、2次キャッシュに接続される主記憶とを含んだデータ処理装置が提供される。2次キャッシュは、複数の1次キャッシュが使用するデータを記憶するデータメモリと、データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、L2制御部とを含む。L2制御部は、タグメモリを参照して、複数の1次キャッシュのいずれかからの要求データがデータメモリに格納されていると判断した場合、データメモリから当該データを読み出して要求があった1次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。
【発明の効果】
【0012】
この実施例によれば、L2制御部が、データメモリからデータを読み出して要求があった1次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定するので、2次キャッシュにそのデータがしばらく残ることになる。2次キャッシュにそのデータが残っている期間に他のCPUが同じデータに対してアクセスするような場合であっても、2次キャッシュにおけるキャッシュヒット率が低下するのを防止することが可能となり、一方で他のCPUからのアクセスがない場合には、別のデータに置き換えが行なわれるため、2次キャッシュの利用効率を向上させることが可能となる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態におけるデータ処理装置の構成例を示すブロック図である。
【図2】タグメモリ15,25および34に格納されるタグ情報を説明するための図である。
【図3】本発明の第1の実施の形態におけるデータ処理装置の第1の動作を説明するための図である。
【図4】図3に示すCPU2側の動作を説明するためのタイミングチャートである。
【図5】本発明の第1の実施の形態におけるデータ処理装置の第2の動作を説明するための図である。
【図6】図5に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。
【図7】図5に示すCPU2側の動作を説明するためのタイミングチャートである。
【図8】本発明の第1の実施の形態におけるデータ処理装置の第3の動作を説明するための図である。
【図9】本発明の第1の実施の形態におけるデータ処理装置の第4の動作を説明するための図である。
【図10】本発明の第1の実施の形態におけるデータ処理装置の第5の動作を説明するための図である。
【図11】図10に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。
【図12】L1制御部13および23の処理手順を説明するためのフローチャートである。
【図13】L1制御部13および23がスヌープ制御部41から無効化要求を受けたときの処理手順を説明するためのフローチャートである。
【図14】L1制御部13および23がスヌープ制御部41からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。
【図15】スヌープ制御部41の処理手順を説明するためのフローチャートである。
【図16】L2制御部32の処理手順を説明するためのフローチャート(その1)である。
【図17】L2制御部32の処理手順を説明するためのフローチャート(その2)である。
【図18】本発明の第2の実施の形態におけるデータ処理装置の動作を説明するための図である。
【図19】図18に示す第2の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。
【図20】本発明の第2の実施の形態におけるL1制御部13および23に追加された処理の手順を説明するためのフローチャートである。
【図21】本発明の第2の実施の形態におけるL2制御部32の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるデータ処理装置の構成例を示すブロック図である。このデータ処理装置は、CPU11および21と、1次キャッシュ12および22と、2次キャッシュ31と、スヌープ制御部41と、主記憶51とを含む。
【0015】
CPU11は、1次キャッシュ12に対して命令コードのフェッチやオペランドデータの読み出し/書き込みを行なうときに、1次キャッシュ12にアクセス要求信号Req11を出力する。そして、CPU11は、Data11信号によって命令コード/オペランドデータの入力やオペランドデータの出力を行なう。なお、以下の説明においては、簡単のために命令コードおよびオペランドデータをまとめてデータと呼ぶことにする。
【0016】
1次キャッシュ12は、CPU11が使用するデータを一時的に格納する。この1次キャッシュ12は、1次キャッシュ12全体の制御を行なうL1制御部(L1制御1)13と、データメモリ(C11D−RAM)14と、タグメモリ(C11T−RAM)15とを含む。
【0017】
L1制御部13は、CPU11からアクセス要求を受けると、C11Tag信号を介してタグメモリ15の内容を参照し、そのデータがデータメモリ14に格納されているか否かを判定する。データメモリ14にそのデータがある場合、すなわちキャッシュヒットした場合、L1制御部13は、C11Data信号を介してデータメモリ14に対するデータ書き込みまたはデータ読み出しを行なう。
【0018】
また、データメモリ14にそのデータがない場合、すなわちミスヒットの場合、L1制御部13は2次キャッシュ31に対してアクセス要求信号Req21を出力し、Data21信号を介してデータを入力する。そして、L1制御部13は、そのデータをデータメモリ14に格納すると共に、タグメモリ15にそのデータの新規登録を行なう。
【0019】
また、L1制御部13は、スヌープ制御部41からアクセス要求信号ReqS11によってライトバック要求を受けると、タグメモリ15の内容を参照して、データメモリ14にそのデータがあるか否かを判定する。データメモリ14にそのデータがあり、Dirtyの場合には、2次キャッシュ31に対してそのデータのライト要求を出力する。
【0020】
CPU21は、1次キャッシュ22に対してデータの読み出し/書き込みを行なうときに、1次キャッシュ22にアクセス要求信号Req12を出力する。そして、CPU21は、Data12信号によってデータの入出力を行なう。
【0021】
1次キャッシュ22は、CPU21が使用するデータを一時的に格納する。この1次キャッシュ22は、1次キャッシュ22全体の制御を行なうL1制御部(L1制御2)23と、データメモリ(C12D−RAM)24と、タグメモリ(C12T−RAM)25とを含む。なお、これらの構成要素は、1次キャッシュ12内の対応する構成要素と同じ構成および機能を有している。したがって、それらの構成および機能の詳細な説明は繰り返さない。
【0022】
2次キャッシュ31は、1次キャッシュ12および22に共有のキャッシュメモリであり、1次キャッシュ12および22が使用するデータを一時的に格納する。この2次キャッシュ31は、2次キャッシュ31全体の制御を行なうL2制御部(L2制御)32と、データメモリ(C2D−RAM)33と、タグメモリ(C2T−RAM)34とを含む。
【0023】
L2制御部32は、1次キャッシュ12または13からアクセス要求を受けると、C2Tag信号を介してタグメモリ34の内容を参照し、そのデータがデータメモリ33に格納されているか否かを判定する。データメモリ33にそのデータがある場合、すなわちキャッシュヒットした場合、L2制御部32は、C2Data信号を介してデータメモリ33からデータ読み出しを行なう。
【0024】
また、データメモリ33にそのデータがない場合、すなわちミスヒットの場合、L2制御部32は主記憶51に対してアクセス要求信号Req3を出力し、Data3信号を介してデータを入力する。そして、L2制御部32は、そのデータをデータメモリ33に格納すると共に、タグメモリ34にそのデータのタグ情報の新規登録を行なう。
【0025】
スヌープ制御部41は、CPU11または21からL1制御部13または23に対してWRITE要求があり、それがキャッシュヒットの場合、すなわちそのデータがDirtyの場合に、他のすべてのL1制御部に対してそのデータの無効化要求を出力する。
【0026】
また、スヌープ制御部41は、L1制御部13または23からL2制御部32へのREAD要求をモニタしており、READ要求を検知すると、他のすべてのL1制御部に対してライトバック要求を出力する。
【0027】
図2は、タグメモリ15,25および34に格納されるタグ情報を説明するための図である。タグメモリ15,25および34は、データメモリ14,24または33に格納されるキャッシュラインのそれぞれに対応してタグ情報を有しており、それぞれのタグ情報はタグアドレスと、Validビットと、Dirtyビットと、追い出し優先順位とを含む。
【0028】
タグアドレスは、データの原本が存在する主記憶51のアドレス上位ビットを示している。Validビットは、そのデータが有効か否かを示すフラグである。Dirtyビットは、そのデータが書き換えられたか否かを示すフラグである。また、追い出し優先順位は、同じキャッシュラインで別のウェイの各データの中での追い出し優先順位を示す。なお、数字が小さいほど追い出し優先順位が高いものとする。
【0029】
図3は、本発明の第1の実施の形態におけるデータ処理装置の第1の動作を説明するための図である。なお、図3においては、1次キャッシュをL1とし、2次キャッシュをL2としている。以下の説明においても同様である。
【0030】
また、L1およびL2のそれぞれの箱は、インデクス(アドレス下位ビット)が同一の、あるキャッシュラインを表している。L1のウェイ数をそれぞれ1、L2のウェイ数を4としている。丸で囲まれたA〜Dは、それぞれキャッシュに格納されたデータを示しており、アドレス下位ビット(インデクス)が同一で、アドレス上位ビット(タグアドレス)が異なるデータである。
【0031】
また、図3、図5、図8〜10に示す第1〜第5の動作は、本発明の第1の実施の形態におけるデータ処理装置の一連の動作を模式的に示している。
【0032】
CPU1がデータ“C”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“C”が読み出される場合には、L2にはデータ“C”がアロケートされず、L1にのみアロケートされる。
【0033】
また、CPU2がデータ“A”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“A”が読み出される場合であって、データ“D”がL1から追い出される場合には、それがダーティであるか否かにかかわらずデータ“D”のライトバックを行ない、追い出されたデータ“D”がL2にアロケートされる。
【0034】
図3に示すこれらの動作においては、L1およびL2の両方に同じデータが存在することは起こらなことになる。
【0035】
図4は、図3に示すCPU2側の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“A”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0036】
T2において、L1制御部23は、Req22信号によってデータ“A”のREAD要求をL2制御部32(L2制御)に出力する。また、T3において、L1制御部23は、追い出すデータ“D”をデータメモリ24(C12D−RAM)から読み出すと共に、タグメモリ25からそのデータに対応するタグ情報を無効化する。なお、L1制御部23は、タグメモリ25に格納される追い出し優先順位を参照することにより、追い出すデータを決定する。この追い出し優先順位は、たとえばLRU(Least Recently Used)方式によって更新される。
【0037】
スヌープ制御部41は、L1制御部23からL2制御部32への読み出し要求を検出すると、T4において、ReqS11信号によってライトバック要求をL1制御部13(L1制御1)に出力する。
【0038】
L1制御部13は、タグメモリ15を参照することによりデータ“A”が存在しないことを検出すると、T5において、何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知する。タグメモリ15を参照することによりデータメモリ14にデータ“A”が存在することを検出した場合には、T5において主記憶51へライトバックを行なうためのアクセスを行なった後に、AckS11信号によってスヌープ制御部41にライトバック終了を通知する。
【0039】
スヌープ制御部41は、L1制御部13からライトバック終了通知を受けると、T6において、L2制御部32にReqS2信号を出力することによって、L2制御部32に転送許可を通知する。
【0040】
L2制御部32は、スヌープ制御部41から転送許可通知を受けると、T7において、主記憶51に対してアクセス要求信号Req3を出力し、データ“A”の読み出しを要求する。
【0041】
T8において、L1制御部23は、Req22信号によってL2制御部32に追い出しデータ“D”のWRITE要求を出力すると共に、Data22信号によって追い出しデータ“D”を出力する。
【0042】
T9において、L2制御部32は、データメモリ33(C2D−RAM)にデータ“D”を格納すると共に、タグメモリ34にデータ“D”のタグ情報の新規登録を行なう。
【0043】
T10において、L2制御部32は、主記憶51からデータ“A”を入力する。そして、T11において、L2制御部32は、Data22信号によってデータ“A”をL1制御部23に転送する。このとき、データ“A”は、2次キャッシュ31のデータメモリ33にはアロケートされない。
【0044】
T12において、L1制御部23は、Data12信号によってデータ“A”をCPU21に出力する。そして、T13において、L1制御部23は、C12Data信号によってデータ“A”をデータメモリ24に書き込むと共に、タグメモリ25にデータ“A”のタグ情報の新規登録を行なう。
【0045】
図5は、本発明の第1の実施の形態におけるデータ処理装置の第2の動作を説明するための図である。CPU2がデータ“B”を読み出すときに、L1でミスヒットし、L2でヒットした場合、L2からL1にデータ“B”をコピーする。そして、L1から追い出されたデータ“A”がL2にアロケートされる。
【0046】
このとき、L1およびL2の両方にデータ“B”が存在することになるが、かかる動作を行なう前のL2におけるデータ“B”の追い出し優先順位に関係なく、L2におけるデータ“B”の追い出し優先順位を最高の“1”にする。すなわち、L2においてデータの追い出しが必要な状況が発生したときに、どのウェイのデータを追い出すかを判定する際、データ“B”を追い出すと判定される。これによって、L1およびL2の両方に同じデータが存在する期間を短くすることができる。
【0047】
図6は、図5に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。上述のように、L1にコピーされたデータ“B”に対応する追い出し優先順位が最高の“1”となる。そして、データ“B”を有効(Validビット=1)とし、Cleanな状態(Dirtyビット=0)とする。
【0048】
また、追い出されたデータ“A”に対応する追い出し優先順位が最低の“3”となる。このデータ“A”が有効(Validビット=1)とされるが、L1においてデータが書き換えられているため、Dirtyな状態(Dirtyビット=1)とされている。
【0049】
図7は、図5に示すCPU2側の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“B”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0050】
T2において、L1制御部23は、Req22信号によってデータ“B”のREAD要求をL2のL2制御部32(L2制御)に出力する。このとき、L2制御部32は、タグメモリ34を参照することによりデータ“B”がヒットしたことを検出する。
【0051】
T3において、L1制御部23は、追い出すデータ“A”をデータメモリ24(C12D−RAM)から読み出すと共に、タグメモリ25からそのデータに対応するタグを削除する。
【0052】
スヌープ制御部41は、L1制御部23からL2制御部32へのREAD要求を検出すると、T4において、ReqS11信号によってライトバック要求をL1制御部13(L1制御1)に出力する。
【0053】
L1制御部13は、タグメモリ15を参照することによりデータ“B”が存在しないことを検出すると、T5において、何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知する。データ“B”がデータメモリ14に存在する場合は、データ“B”は1次キャッシュ12と2次キャッシュ31とに重複して存在すると共に、主記憶51に存在することになる。この場合については後述する。
【0054】
スヌープ制御部41は、L1制御部13からライトバック終了通知を受けると、T6において、L2制御部32にReqS2信号を出力することによって、L2制御部32に転送許可を通知する。
【0055】
L2制御部32は、スヌープ制御部41から転送許可通知を受けると、T7において、C2Data信号によってデータメモリ33からデータ“B”を読み出し、Data22信号によってデータ“B”をL1制御部23に出力する。このとき、L2制御部32は、データ“B”の追い出し優先順位が最高となるようにタグ情報を更新する。
【0056】
T8において、L1制御部23は、L2制御部32から受けたデータ“B”をCPU21に出力する。また、T9において、L1制御部23は、C12Data信号によってデータ“B”をデータメモリ24に格納すると共に、タグメモリ25にデータ“B”のタグ情報の新規登録を行なう。
【0057】
T10において、L1制御部23は、Req22信号によってL2制御部32に追い出しデータ“A”のWRITE要求を出力すると共に、Data22信号によって追い出しデータ“B”を出力する。
【0058】
T11において、L2制御部32は、データメモリ33にデータ“A”を格納すると共に、タグメモリ34にデータ“A”のタグ情報の新規登録を行なう。
【0059】
図8は、本発明の第1の実施の形態におけるデータ処理装置の第3の動作を説明するための図である。図8〜図10はデータのアクセスの点において連続する。
【0060】
図5を用いて説明したように、L2からCPU2のL1にデータ“B”をコピーするときに、データ“B”のL2での追い出し優先順位が最高となるが、このデータ“B”はしばらくL2に残ることになる。このとき、複数のCPUが同じデータ“B”を短時間に集中してアクセスする場合、たとえばCPU1がデータ“B”をアクセスする場合には、L2においてこのデータ“B”にヒットすることになる。この場合、スヌープ制御部41はL1制御部23に対してライトバック要求を出力する。
【0061】
CPU11または12からのデータライト要求に対して、1次キャッシュ12,22および2次キャッシュ31がライトスルー動作を行なう場合、1次キャッシュ22と2次キャッシュ31との両方に存在するデータ“B”は一致しており、1次キャッシュ22は何も行なわずにAckS11信号によってスヌープ制御部41にライトバック終了を通知してよい。
【0062】
一方で、CPU11または12からのデータライト要求に対して、1次キャッシュ12,22および2次キャッシュ31がライトバック動作を行なう場合、1次キャッシュ22と2次キャッシュ31(および主記憶51)に存在するデータ“B”は不一致であることが考えられる。そのため、スヌープ制御部41からのライトバック要求に対して、1次キャッシュ22は2次キャッシュ31(および主記憶51)に対してデータ“B”のライトバックを行なうアクセスを行なった後に、AckS11信号によってスヌープ制御部41にライトバック終了を通知する。
【0063】
図8においては、CPU1がデータ“B”を読み出すときに、L1でミスヒットし、L2でヒットするので、L2からL1にデータ“B”がコピーされる。そして、L1から追い出されたデータ“C”がL2にアロケートされる。このとき、L2におけるデータ“B”の追い出し優先順位が最高のまま維持される。
【0064】
図9は、本発明の第1の実施の形態におけるデータ処理装置の第3の動作に続く第4の動作を説明するための図である。CPU1がデータ“C”を読み出すときに、L1でミスヒットし、L2でヒットするので、L2からL1にデータ“C”がコピーされる。このとき、L2におけるデータ“C”の追い出し優先順位を最高とする。そして、L1から追い出されたデータ“B”がL2にアロケートされるが、データ“B”は既にL2に存在しているため、L2に存在する当該データ“B”を更新し、通常のLRU制御等によりデータ“B”の追い出し優先順位が決定される。
【0065】
また、CPU2がデータ“E”を読み出すときに、L1およびL2の両方でミスヒットし、主記憶51からデータ“E”が読み出される。そして、L1から追い出されたデータ“B”がL2にアロケートされる。この場合も、CPU1からデータ“B”が追い出された場合と同じ動作が繰り返される。
【0066】
図10は、本発明の第1の実施の形態におけるデータ処理装置の第4の動作に続く第5の動作を説明するための図である。CPU2がデータ“A”を読み出すときに、L1でミスヒットし、L2でヒットする。このとき、CPU2のL1から追い出されたデータ“E”がL2にアロケートされることになるが、追い出し優先順位が最高のデータ“C”がL2から追い出される。その後、L2からL1にデータ“A”がコピーされ、L2におけるデータ“A”の追い出し優先順位を最高とする。
【0067】
図11は、図10に示す動作によって更新された後のタグメモリ34のタグ情報を示す図である。上述のように、L1にコピーされたデータ“A”に対応する追い出し優先順位が最高の“1”となる。このデータ“A”は有効(Validビット=1)であり、L1においてデータが書き換えられているため、Dirtyな状態(Dirtyビット=1)である。
【0068】
また、追い出されたデータ“E”に対応する追い出し優先順位が最低の“4”となる。このデータ“E”が有効(Validビット=1)とされるが、L1においてデータが書き換えられていないため、Cleanな状態(Dirtyビット=0)とされている。
【0069】
図12は、L1制御部13および23の処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0070】
まず、L1制御部13がCPU11からデータのアクセス要求を受けると(S11)、タグメモリ15に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する(S12)。
【0071】
ミスヒットの場合には(S13,ミス)、2次キャッシュ31に対してREAD要求を出力し(S14)、データメモリ14からデータを追い出すべきか否かを判断する(S15)。データを追い出す必要がない場合には(S16,No)、ステップS19に処理が進む。
【0072】
データを追い出す必要がある場合には(S16,Yes)、データメモリ14から優先順位が最高のデータを読み出し、そのデータに対応するValidビットに“0”を書き込んで無効化する(S17)。そして、L2制御部32に対して追い出しデータを転送し、WRITE要求を出力する(S18)。
【0073】
L1制御部13がL2制御部32から要求データを受けると(S19)、CPU11からのアクセス要求がWRITE要求の場合には、要求データにCPU11から受けたデータを上書きし(S20)、スヌープ制御部41に対してデータが書き換えられたことを通知する、Dirty通知を発行する(S21)。なお、アクセス要求がWRITE要求の場合には、後述のステップS23の処理は行なわれない。
【0074】
そして、L1制御部13は、キャッシュアロケートしてデータメモリ14に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ15に新規登録する(S22)。
【0075】
また、CPU11からのアクセス要求がREAD要求の場合には、CPU11に対して要求データを転送する(S23)。なお、アクセス要求がREAD要求の場合には、上述のステップS20およびS21の処理は行なわれない。
【0076】
また、キャッシュヒットの場合には(S13,ヒット)、CPU11からのアクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S24)。アクセス要求がREAD要求の場合(S24,READ)、L1制御部13は、データメモリ14から要求データを読み出して(S25)、要求データをCPU11に転送する(S26)。
【0077】
また、アクセス要求がWRITE要求の場合(S24,WRITE)、L1制御部13は、データメモリ14に要求データを書き込むと共に、そのデータに対応するタグ情報を更新する(S27)。そして、L1制御部13は、スヌープ制御部41に対してデータが書き換えられたことを通知する、Dirty通知を発行する(S28)。
【0078】
図13は、L1制御部13および23がスヌープ制御部41から無効化要求を受けたときの処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0079】
まず、スヌープ制御部41から無効化要求を受けると(S31)、L1制御部13は、タグメモリ15を参照して、無効化要求を受けたデータと同じアドレスのデータがあるか否かを調べる(S32)。
【0080】
同じアドレスのデータがある場合(S33,Yes)、L1制御部13は、無効化要求を受けたデータに対応するタグ情報のValidビットに“0”を書き込んで無効化する(S34)。また、同じアドレスのデータがない場合には(S33,No)、そのまま処理を終了する。
【0081】
図14は、L1制御部13および23がスヌープ制御部41からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0082】
まず、スヌープ制御部41からライトバック要求を受けると(S41)、L1制御部13は、タグメモリ15を参照して、ライトバック要求を受けたデータと同じアドレスのデータがあるか否かを調べる(S42)。同じアドレスのデータがない場合(S43,No)、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0083】
同じアドレスのデータがある場合(S43,Yes)、L1制御部13は、タグメモリ15を参照して、ライトバック要求を受けたデータがDirtyな状態であるか否かを判断する(S44)。ライトバック要求を受けたデータがCleanな状態であれば(S44,No)、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0084】
ライトバック要求を受けたデータがDirtyな状態であれば(S44,Yes)、L1制御部13は、データメモリ14から要求データを読み出し(S45)、L2制御部32に要求データを転送してWRITE要求を出力する(S46)。そして、L1制御部13は、スヌープ制御部41に対してライトバック終了通知を発行する(S47)。
【0085】
図15は、スヌープ制御部41の処理手順を説明するためのフローチャートである。まず、スヌープ制御部41がL1制御部13または23からDirty通知を受けると(S51)、他のすべてのL1制御部に対して無効化要求を出力する(S52)。
【0086】
また、スヌープ制御部41は、L1制御部13または23からL2制御部32へのREAD要求を検知すると(S53)、他のすべてのL1制御部に対してライトバック要求を出力する(S54)。
【0087】
そして、すべてのL1制御部からのライトバック終了通知を待つ(S55)。未だライトバック終了通知が来ていないL1制御部があれば(S56,No)、すべてのL1制御部からのライトバック終了通知があるまでステップS55の処理を繰り返す。また、すべてのL1制御部からのライトバック終了通知があれば(S56,Yes)、L2制御部32に対してデータ転送許可を出力する(S57)。
【0088】
図16は、L2制御部32の処理手順を説明するためのフローチャート(その1)である。まず、L2制御部32がL1制御部13または23からデータのアクセス要求を受けると(S61)、タグメモリ34に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する(S62)。キャッシュヒットの場合には(S63,ヒット)、図17の(1)に処理が進む。
【0089】
また、ミスヒットの場合(S63,ミス)、L2制御部32は、アクセス要求がREAD要求か、WRITE要求かを判断する(S64)。アクセス要求がWRITE要求の場合(S64,WRITE)、L2制御部32は、そのデータがL1制御部13または23からの追い出しデータであるか否かを判断する(S65)。
【0090】
L1制御部13または23からの追い出しデータでない場合(S65,No)、L2制御部32は、主記憶51に追い出しデータを転送し、主記憶51に対してWRITE要求を出力する(S71)。
【0091】
また、L1制御部13または23からの追い出しデータの場合(S65,Yes)、L2制御部32は、データメモリ33からデータを追い出す必要があるか否かを判断する(S66)。この判定は、L2制御部32がタグメモリ34を参照し、対応する4つのキャッシュラインのすべてに有効なデータが格納されているか否かを判定することによって行なわれる。データを追い出す必要がない場合(S67,No)、ステップS70に処理が進む。
【0092】
また、データを追い出す必要がある場合(S67,Yes)、L2制御部32は、データメモリ33から優先順位が最高のデータを読み出し、そのデータに対応するタグ情報のValidビットに“0”を書き込んで無効化する(S68)。そして、主記憶51に対して追い出しデータを転送し、WRITE要求を出力する(S69)。
【0093】
そして、L2制御部32は、キャッシュアロケートしてデータメモリ33に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ34に新規登録する(S70)。
【0094】
また、L1制御部13または23からのアクセス要求がREAD要求の場合には(S64,READ)、スヌープ制御部41からの転送許可通知を待った後(S72)、主記憶51に対してREAD要求を出力する(S73)。そして、主記憶51から要求データを受けて(S74)、図17の(3)に処理が進む。
【0095】
図17は、L2制御部32の処理手順を説明するためのフローチャート(その2)である。図16のステップS63において、キャッシュヒットの場合(S63,ヒット)、L1制御部13または23からのアクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S81)。
【0096】
L1制御部13または23からのアクセス要求がREAD要求の場合(S81,READ)、スヌープ制御部41からの転送許可通知を待った後(S82)、L2制御部32は、データメモリ33から要求データを読み出す(S83)。
【0097】
そして、L2制御部32は、タグメモリ34に格納される要求データに対応する追い出し優先順位を最も高くし(S84)、要求元のL1制御部13または23に要求データを転送する(S85)。
【0098】
また、L1制御部13または23からのアクセス要求がWRITE要求の場合(S81,WRITE)、L2制御部32は、データメモリ33に要求データを書き込むと共に、タグメモリ34に格納されるそのデータに対応するタグ情報を更新する(S86)。
【0099】
以上説明したように、本実施の形態におけるデータ処理装置によれば、CPU11または21がデータを読み出すときに、1次キャッシュ12または22でミスヒットし、2次キャッシュ31でヒットした場合、2次キャッシュ31から1次キャッシュ12または22にデータをコピーする。このとき、2次キャッシュにおけるそのデータの追い出し優先順位を最高にするようにしたので、1次キャッシュ12および22と2次キャッシュ31との両方に同じデータが存在することが少なくなり、キャッシュメモリに多くのデータを格納することができるので、キャッシュヒット率を向上させることが可能となった。
【0100】
また、追い出し優先順位を最高にしてしばらく2次キャッシュ31にそのデータを残しておくので、複数のCPUが同じデータに対して集中してアクセスするような場合であっても、2次キャッシュ31におけるキャッシュヒット率が低下するのを防止することが可能となった。
【0101】
なお、以上の説明においては、CPU11または21がデータを読み出すときに、1次キャッシュ12または22でミスヒットし、2次キャッシュ31でヒットした場合、2次キャッシュ31がそのデータを出力すると共に、そのデータの追い出し優先順位を最高にするとして説明した。しかしながら、追い出し優先順位を最高にするのではなく、LRU方式で決定される通常の追い出し優先順位よりも高くすれば同様の効果が得られることは言うまでもない。
【0102】
(第2の実施の形態)
本発明の第2の実施の形態におけるデータ処理装置の構成は、図1に示す第1の実施の形態におけるデータ処理装置の構成と比較して、2次キャッシュ31のタグメモリ34に、1次キャッシュ12および22のタグメモリ15および25に格納されるタグ情報と同じ情報を格納する領域が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0103】
図18は、本発明の第2の実施の形態におけるデータ処理装置の動作を説明するための図である。なお、図18においては、1次キャッシュをL1とし、2次キャッシュをL2としている。
【0104】
L1およびL2のそれぞれの上段の箱は、インデクス(アドレス下位ビット)が同一の、あるキャッシュラインを表している。また、L1およびL2のそれぞれの下段の箱は、上段のキャッシュラインに対応するタグ情報を格納する領域を表している。なお、L2の下段の左端の箱は、CPU1のL1と同じタグ情報を格納する領域を表しており、L2の下段の右端の箱は、CPU2のL1と同じタグ情報を格納する領域を表している。
【0105】
CPU2がデータを読み出すときに、L1でミスヒットした場合、L2でヒットするか否かを判断することになるが、このとき他のL1に対応するタグ情報も参照してヒットするか否かを判断する。
【0106】
たとえば、CPU2がデータ“C”を読み出すときに、L1でミスヒットし、L2でもミスヒットすることになるが、L2の下段の左端にデータ“C”に対応するタグ情報があるため、CPU1のL1にデータ“C”が存在することが分かる。このとき、L2は、CPU1のL1からデータ“C”をコピーし、そのデータ“C”をCPU2のL1に転送する。
【0107】
図19は、図18に示す第2の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。T1において、CPU21(CPU2)がReq12信号によってデータ“C”のREAD要求を出力すると、L1制御部23(L1制御2)は、タグメモリ25を参照することによりキャッシュミスの発生を検出する。
【0108】
T2において、L1制御部23は、Req22信号によってデータ“C”のREAD要求をL2制御部32(L2制御)に出力する。
【0109】
データ“C”のREAD要求を受けると、T3において、L2制御部32は、C2Tag信号によってタグメモリ34(C2T−RAM)からタグ情報を読み出し、それを参照することによりデータ“C”が1次キャッシュ12に存在することを検出する。
【0110】
T4において、L2制御部32は、L1制御部13(L1制御1)に対してデータ“C”のREAD要求を出力する。なお、本実施の形態においては、L2制御部32からL1制御部13および23に対するアクセス要求信号が追加されているものとする。
【0111】
L2制御部32からデータ“C”のREAD要求を受けると、T5において、L1制御部13は、C11Data信号によってデータメモリ14(C11D−RAM)からデータ“C”を読み出す。そして、T6において、L1制御部13は、Data21信号によってデータ“C”をL2制御部32に転送する。
【0112】
L1制御部13からデータ“C”を受けると、T7において、L2制御部32は、Data22信号によってデータ“C”をL1制御部23に出力する。そして、T8において、L1制御部23は、C12Data信号によってデータ“C”をデータメモリ24に書き込むと共に、タグメモリ25にデータ“C”のタグ情報の新規登録を行なう。そして、T9において、L1制御部23は、Data12信号によってデータ“C”をCPU21に出力する。
【0113】
図20は、本発明の第2の実施の形態におけるL1制御部13および23に追加された処理の手順を説明するためのフローチャートである。L1制御部13および23の処理手順は同じであるので、代表してL1制御部13の処理手順のみを説明することにする。
【0114】
まず、L1制御部13がL2制御部32からREAD要求を受けると(S91)、データメモリ14から要求データを読み出す(S92)。そして、L1制御部13は、L2制御部32に対して要求データを転送する(S93)。
【0115】
図21は、本発明の第2の実施の形態におけるL2制御部32の処理手順を説明するためのフローチャートである。なお、本実施の形態におけるL2制御部32は、図16に示すフローチャートと同様の処理を行なうものとし、図21には、図16のステップS63においてキャッシュヒットした場合以降の処理を示すものとする。また、図17と同じ処理については、同じステップ番号を付すものとし、その詳細な説明は繰り返さない。
【0116】
キャッシュヒットした場合(S63,ヒット)、L2制御部32は、タグメモリ34を参照して、そのデータが2次キャッシュ31のデータメモリ33にあるか否かを判断する(S101)。
【0117】
そのデータが2次キャッシュ31、または2次キャッシュ31および別の1次キャッシュの両方にある場合(S101,L2又は両方)、ステップS81以降の処理を行なう。また、そのデータが別の1次キャッシュのみにある場合(S101,別のL1のみ)、アクセス要求がREAD要求であるか、WRITE要求であるかを判断する(S102)。
【0118】
アクセス要求がWRITE要求の場合(S102,WRITE)、図16のステップS65に処理が進む。また、アクセス要求がREAD要求の場合(S102,READ)、L2制御部32は、その別のL1制御部に対してREAD要求を出力する(S103)。
【0119】
そして、その別のL1制御部から要求データを受けて(S104)、タグメモリ34の要求元のL1制御部と同じタグ情報を格納する領域に、そのタグ情報を書き込んで(S105)、要求元のL1制御部13または23に要求データを転送する(S85)。
【0120】
なお、L2制御部32は、L1制御部13および23からのアクセス要求、スヌープ制御部41からの無効化要求、ライトバック要求などをモニタしており、L1制御部13および23がタグメモリ15および25のタグ情報を更新するときに、2次キャッシュ31のタグメモリ34に格納される対応の情報を同様に更新するものとする。
【0121】
以上説明したように、本実施の形態におけるデータ処理装置によれば、2次キャッシュ31のタグメモリ34に、1次キャッシュ12および22のタグ情報と同じタグ情報を格納する領域を設ける。そして、L1制御部13または23からの要求データがデータメモリ33にない場合でも、他の1次キャッシュにそのデータがある場合には、他の1次キャッシュから要求データを読み出してL1制御部13または23に転送するようにした。したがって、第1の実施の形態において説明した効果に加えて、2次キャッシュ31のデータメモリ33に要求データが存在しないことによるキャッシュヒット率の低下を防止することが可能となった。
【0122】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0123】
11,21 CPU、12,22 1次キャッシュ、13,23 L1制御部、14,24,33 データメモリ、15,25,34 タグメモリ、41 スヌープ制御部、51 主記憶。
【特許請求の範囲】
【請求項1】
複数のプロセッサを含んだデータ処理装置であって、
前記複数のプロセッサのそれぞれに個別に接続される複数の1次キャッシュと、
前記複数の1次キャッシュによって共有される2次キャッシュと、
前記2次キャッシュに接続される主記憶とを含み、
前記2次キャッシュは、前記複数の1次キャッシュが使用するデータを記憶するデータメモリと、
前記データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、
前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていると判断した場合、前記データメモリから当該データを読み出して要求があった1次キャッシュに出力し、前記タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する制御手段とを含む、データ処理装置。
【請求項2】
前記制御手段は、前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合、前記主記憶から当該データを読み出して、前記データメモリに格納せずに、要求があった1次キャッシュに出力する、請求項1記載のデータ処理装置。
【請求項3】
前記データ処理装置はさらに、前記複数の1次キャッシュから前記2次キャッシュへのアクセス要求をモニタしており、前記複数の1次キャッシュのいずれかから前記2次キャッシュに対する読み出し要求がある場合に、他の1次キャッシュに対してライトバック要求を出力し、当該他の1次キャッシュのすべてからライトバック終了通知があるまで、前記2次キャッシュから要求があった1次キャッシュへのデータ転送を待たせるスヌープ制御手段を含む、請求項1または2記載のデータ処理装置。
【請求項4】
前記タグメモリは、前記複数の1次キャッシュが記憶するデータに対応するタグ情報も記憶しており、
前記制御手段は、前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合であって、前記タグメモリを参照して他の1次キャッシュが当該要求データを記憶していると判断した場合には、当該他の1次キャッシュから当該要求データを読み出して、要求があった1次キャッシュに当該要求データを転送する、請求項1〜3のいずれかに記載のデータ処理装置。
【請求項5】
前記制御手段は、要求があった1次キャッシュに他の1次キャッシュから要求データを読み出して転送するときに、前記タグメモリに記憶される要求があった1次キャッシュに関するタグ情報を更新する、請求項4記載のデータ処理装置。
【請求項1】
複数のプロセッサを含んだデータ処理装置であって、
前記複数のプロセッサのそれぞれに個別に接続される複数の1次キャッシュと、
前記複数の1次キャッシュによって共有される2次キャッシュと、
前記2次キャッシュに接続される主記憶とを含み、
前記2次キャッシュは、前記複数の1次キャッシュが使用するデータを記憶するデータメモリと、
前記データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、
前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていると判断した場合、前記データメモリから当該データを読み出して要求があった1次キャッシュに出力し、前記タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する制御手段とを含む、データ処理装置。
【請求項2】
前記制御手段は、前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合、前記主記憶から当該データを読み出して、前記データメモリに格納せずに、要求があった1次キャッシュに出力する、請求項1記載のデータ処理装置。
【請求項3】
前記データ処理装置はさらに、前記複数の1次キャッシュから前記2次キャッシュへのアクセス要求をモニタしており、前記複数の1次キャッシュのいずれかから前記2次キャッシュに対する読み出し要求がある場合に、他の1次キャッシュに対してライトバック要求を出力し、当該他の1次キャッシュのすべてからライトバック終了通知があるまで、前記2次キャッシュから要求があった1次キャッシュへのデータ転送を待たせるスヌープ制御手段を含む、請求項1または2記載のデータ処理装置。
【請求項4】
前記タグメモリは、前記複数の1次キャッシュが記憶するデータに対応するタグ情報も記憶しており、
前記制御手段は、前記タグメモリを参照して、前記複数の1次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合であって、前記タグメモリを参照して他の1次キャッシュが当該要求データを記憶していると判断した場合には、当該他の1次キャッシュから当該要求データを読み出して、要求があった1次キャッシュに当該要求データを転送する、請求項1〜3のいずれかに記載のデータ処理装置。
【請求項5】
前記制御手段は、要求があった1次キャッシュに他の1次キャッシュから要求データを読み出して転送するときに、前記タグメモリに記憶される要求があった1次キャッシュに関するタグ情報を更新する、請求項4記載のデータ処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−100390(P2011−100390A)
【公開日】平成23年5月19日(2011.5.19)
【国際特許分類】
【出願番号】特願2009−256005(P2009−256005)
【出願日】平成21年11月9日(2009.11.9)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年5月19日(2011.5.19)
【国際特許分類】
【出願日】平成21年11月9日(2009.11.9)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]