(57)【要約】【課題】２次キャッシュにおけるキャッシュヒット率を向上させることが可能なデータ処理装置を提供すること。【解決手段】Ｌ２制御部３２は、タグメモリ３４を参照して、１次キャッシュ１２および２２のいずれかからの要求データがデータメモリ３３に格納されていると判断した場合、データメモリ３３から当該データを読み出して要求があった１次キャッシュに出力し、タグメモリ３４に格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。したがって、２次キャッシュ３１にそのデータがしばらく残ることになり、複数のＣＰＵが同じデータに対して集中してアクセスするような場合であっても、２次キャッシュ３１におけるキャッシュヒット率が低下するのを防止することが可能となる。【選択図】図１
2011100390.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを含んだデータ処理装置であって、
前記複数のプロセッサのそれぞれに個別に接続される複数の１次キャッシュと、
前記複数の１次キャッシュによって共有される２次キャッシュと、
前記２次キャッシュに接続される主記憶とを含み、
前記２次キャッシュは、前記複数の１次キャッシュが使用するデータを記憶するデータメモリと、
前記データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、
前記タグメモリを参照して、前記複数の１次キャッシュのいずれかからの要求データが前記データメモリに格納されていると判断した場合、前記データメモリから当該データを読み出して要求があった１次キャッシュに出力し、前記タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する制御手段とを含む、データ処理装置。
【請求項２】
前記制御手段は、前記タグメモリを参照して、前記複数の１次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合、前記主記憶から当該データを読み出して、前記データメモリに格納せずに、要求があった１次キャッシュに出力する、請求項１記載のデータ処理装置。
【請求項３】
前記データ処理装置はさらに、前記複数の１次キャッシュから前記２次キャッシュへのアクセス要求をモニタしており、前記複数の１次キャッシュのいずれかから前記２次キャッシュに対する読み出し要求がある場合に、他の１次キャッシュに対してライトバック要求を出力し、当該他の１次キャッシュのすべてからライトバック終了通知があるまで、前記２次キャッシュから要求があった１次キャッシュへのデータ転送を待たせるスヌープ制御手段を含む、請求項１または２記載のデータ処理装置。
【請求項４】
前記タグメモリは、前記複数の１次キャッシュが記憶するデータに対応するタグ情報も記憶しており、
前記制御手段は、前記タグメモリを参照して、前記複数の１次キャッシュのいずれかからの要求データが前記データメモリに格納されていないと判断した場合であって、前記タグメモリを参照して他の１次キャッシュが当該要求データを記憶していると判断した場合には、当該他の１次キャッシュから当該要求データを読み出して、要求があった１次キャッシュに当該要求データを転送する、請求項１〜３のいずれかに記載のデータ処理装置。
【請求項５】
前記制御手段は、要求があった１次キャッシュに他の１次キャッシュから要求データを読み出して転送するときに、前記タグメモリに記憶される要求があった１次キャッシュに関するタグ情報を更新する、請求項４記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層的に構築されたキャッシュメモリを制御する技術に関し、特に、２次キャッシュを効率的に使用することが可能なデータ処理装置に関する。
【背景技術】
【０００２】
近年、処理速度の高速化のためにマイクロコンピュータにキャッシュメモリが搭載されることが多い。ＣＰＵ（Central Processing Unit）がキャッシュメモリを介して主記憶にアクセスすることにより、キャッシュにヒットしたときの処理速度を向上させることができる。
【０００３】
このようなキャッシュメモリを介して主記憶にアクセスするＣＰＵを複数搭載したマルチプロセッサシステムにおいては、キャッシュメモリを階層構造とし、さらに処理速度の高速化を図ったものがある。これに関連する技術として、下記の特許文献１〜２に開示された発明がある。
【０００４】
特許文献１は、１次，２次キャッシュメモリの２階層のキャッシュメモリを有し、両キャッシュメモリ間で同一データを極力あるいは全く重複して登録しないようにすることにより、２次キャッシュメモリの容量以上のデータコピーを主記憶からキャッシュメモリ全体に登録することを目的とする。データ処理装置からのデータリードアクセス要求に対してキャッシュメモリ全体の中に要求データが存在しない場合、１次キャッシュメモリでは主記憶から転送されてきたアクセス対象データを登録し、２次キャッシュメモリではそのデータの登録を行わない。２次キャッシュメモリにおいてデータの登録が行われるのは、１次キャッシュメモリでデータの登録が行われる際に無効化されるデータが発生した場合にそのデータを登録する。
【０００５】
特許文献２は、２次キャッシュの有効利用によりシステムの処理能力を向上させることを目的とする。まず、プロセッサが要求するアドレスに対応するデータが１次キャッシュに存在するか否かを判別する。当該データが１次キャッシュに存在しないときは、２次キャッシュに存在するか否かを判別する。そして、当該２次キャッシュに存在するときは、当該２次キャッシュ上のデータを１次キャッシュに転記し、この転記により１次キャッシュから追い出されたデータを２次キャッシュに転記する。このようにして、１次キャッシュにあったデータは、２次キャッシュに転送して格納され、これにより、２次キャッシュを有効に利用することが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−２５０９２６号公報
【特許文献２】特開平０５−０７３４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
１次キャッシュに存在するデータと同じデータが２次キャッシュにも存在することを許容する、いわゆるinclusiveキャッシュアーキテクチャにおいては、１次キャッシュに存在するデータがほとんど２次キャッシュにも存在するため、実際にキャッシュできるデータ量は２次キャッシュの容量とほぼ等しくなる。
【０００８】
一方、１次キャッシュに存在するデータと同じデータが２次キャッシュにも存在することを許容しない、いわゆるexclusiveキャッシュアーキテクチャにおいては、１次キャッシュに存在するデータが２次キャッシュには存在しないため、実際にキャッシュできるデータ量は１次キャッシュの容量と２次キャッシュの容量との合計となる。したがって、inclusiveキャッシュアーキテクチャと比較して、キャッシュメモリの容量を有効に利用することができる。
【０００９】
上記特許文献１および特許文献２は、exclusiveキャッシュアーキテクチャに類似の構成を有しており、１次キャッシュにミスヒットして２次キャッシュにヒットした場合、２次キャッシュからデータが読み出された後、２次キャッシュからそのデータが消去されることになる。しかしながら、複数のＣＰＵが同じデータを短時間に集中してアクセスするような場合には、２次キャッシュにおけるヒット率が低下することになる。
【００１０】
本発明は、上記問題点を解決するためになされたものであり、その目的は、２次キャッシュにおけるキャッシュヒット率を向上させることが可能なデータ処理装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明の一実施例によれば、複数のＣＰＵのそれぞれに個別に接続される複数の１次キャッシュと、複数の１次キャッシュによって共有される２次キャッシュと、２次キャッシュに接続される主記憶とを含んだデータ処理装置が提供される。２次キャッシュは、複数の１次キャッシュが使用するデータを記憶するデータメモリと、データメモリに記憶されるデータに対応するタグ情報を記憶するタグメモリと、Ｌ２制御部とを含む。Ｌ２制御部は、タグメモリを参照して、複数の１次キャッシュのいずれかからの要求データがデータメモリに格納されていると判断した場合、データメモリから当該データを読み出して要求があった１次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定する。
【発明の効果】
【００１２】
この実施例によれば、Ｌ２制御部が、データメモリからデータを読み出して要求があった１次キャッシュに出力し、タグメモリに格納される当該データに対応するタグ情報の追い出し優先順位を所定よりも高い値に設定するので、２次キャッシュにそのデータがしばらく残ることになる。２次キャッシュにそのデータが残っている期間に他のＣＰＵが同じデータに対してアクセスするような場合であっても、２次キャッシュにおけるキャッシュヒット率が低下するのを防止することが可能となり、一方で他のＣＰＵからのアクセスがない場合には、別のデータに置き換えが行なわれるため、２次キャッシュの利用効率を向上させることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態におけるデータ処理装置の構成例を示すブロック図である。
【図２】タグメモリ１５，２５および３４に格納されるタグ情報を説明するための図である。
【図３】本発明の第１の実施の形態におけるデータ処理装置の第１の動作を説明するための図である。
【図４】図３に示すＣＰＵ２側の動作を説明するためのタイミングチャートである。
【図５】本発明の第１の実施の形態におけるデータ処理装置の第２の動作を説明するための図である。
【図６】図５に示す動作によって更新された後のタグメモリ３４のタグ情報を示す図である。
【図７】図５に示すＣＰＵ２側の動作を説明するためのタイミングチャートである。
【図８】本発明の第１の実施の形態におけるデータ処理装置の第３の動作を説明するための図である。
【図９】本発明の第１の実施の形態におけるデータ処理装置の第４の動作を説明するための図である。
【図１０】本発明の第１の実施の形態におけるデータ処理装置の第５の動作を説明するための図である。
【図１１】図１０に示す動作によって更新された後のタグメモリ３４のタグ情報を示す図である。
【図１２】Ｌ１制御部１３および２３の処理手順を説明するためのフローチャートである。
【図１３】Ｌ１制御部１３および２３がスヌープ制御部４１から無効化要求を受けたときの処理手順を説明するためのフローチャートである。
【図１４】Ｌ１制御部１３および２３がスヌープ制御部４１からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。
【図１５】スヌープ制御部４１の処理手順を説明するためのフローチャートである。
【図１６】Ｌ２制御部３２の処理手順を説明するためのフローチャート（その１）である。
【図１７】Ｌ２制御部３２の処理手順を説明するためのフローチャート（その２）である。
【図１８】本発明の第２の実施の形態におけるデータ処理装置の動作を説明するための図である。
【図１９】図１８に示す第２の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。
【図２０】本発明の第２の実施の形態におけるＬ１制御部１３および２３に追加された処理の手順を説明するためのフローチャートである。
【図２１】本発明の第２の実施の形態におけるＬ２制御部３２の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるデータ処理装置の構成例を示すブロック図である。このデータ処理装置は、ＣＰＵ１１および２１と、１次キャッシュ１２および２２と、２次キャッシュ３１と、スヌープ制御部４１と、主記憶５１とを含む。
【００１５】
ＣＰＵ１１は、１次キャッシュ１２に対して命令コードのフェッチやオペランドデータの読み出し／書き込みを行なうときに、１次キャッシュ１２にアクセス要求信号Ｒｅｑ１１を出力する。そして、ＣＰＵ１１は、Ｄａｔａ１１信号によって命令コード／オペランドデータの入力やオペランドデータの出力を行なう。なお、以下の説明においては、簡単のために命令コードおよびオペランドデータをまとめてデータと呼ぶことにする。
【００１６】
１次キャッシュ１２は、ＣＰＵ１１が使用するデータを一時的に格納する。この１次キャッシュ１２は、１次キャッシュ１２全体の制御を行なうＬ１制御部（Ｌ１制御１）１３と、データメモリ（Ｃ１１Ｄ−ＲＡＭ）１４と、タグメモリ（Ｃ１１Ｔ−ＲＡＭ）１５とを含む。
【００１７】
Ｌ１制御部１３は、ＣＰＵ１１からアクセス要求を受けると、Ｃ１１Ｔａｇ信号を介してタグメモリ１５の内容を参照し、そのデータがデータメモリ１４に格納されているか否かを判定する。データメモリ１４にそのデータがある場合、すなわちキャッシュヒットした場合、Ｌ１制御部１３は、Ｃ１１Ｄａｔａ信号を介してデータメモリ１４に対するデータ書き込みまたはデータ読み出しを行なう。
【００１８】
また、データメモリ１４にそのデータがない場合、すなわちミスヒットの場合、Ｌ１制御部１３は２次キャッシュ３１に対してアクセス要求信号Ｒｅｑ２１を出力し、Ｄａｔａ２１信号を介してデータを入力する。そして、Ｌ１制御部１３は、そのデータをデータメモリ１４に格納すると共に、タグメモリ１５にそのデータの新規登録を行なう。
【００１９】
また、Ｌ１制御部１３は、スヌープ制御部４１からアクセス要求信号ＲｅｑＳ１１によってライトバック要求を受けると、タグメモリ１５の内容を参照して、データメモリ１４にそのデータがあるか否かを判定する。データメモリ１４にそのデータがあり、Ｄｉｒｔｙの場合には、２次キャッシュ３１に対してそのデータのライト要求を出力する。
【００２０】
ＣＰＵ２１は、１次キャッシュ２２に対してデータの読み出し／書き込みを行なうときに、１次キャッシュ２２にアクセス要求信号Ｒｅｑ１２を出力する。そして、ＣＰＵ２１は、Ｄａｔａ１２信号によってデータの入出力を行なう。
【００２１】
１次キャッシュ２２は、ＣＰＵ２１が使用するデータを一時的に格納する。この１次キャッシュ２２は、１次キャッシュ２２全体の制御を行なうＬ１制御部（Ｌ１制御２）２３と、データメモリ（Ｃ１２Ｄ−ＲＡＭ）２４と、タグメモリ（Ｃ１２Ｔ−ＲＡＭ）２５とを含む。なお、これらの構成要素は、１次キャッシュ１２内の対応する構成要素と同じ構成および機能を有している。したがって、それらの構成および機能の詳細な説明は繰り返さない。
【００２２】
２次キャッシュ３１は、１次キャッシュ１２および２２に共有のキャッシュメモリであり、１次キャッシュ１２および２２が使用するデータを一時的に格納する。この２次キャッシュ３１は、２次キャッシュ３１全体の制御を行なうＬ２制御部（Ｌ２制御）３２と、データメモリ（Ｃ２Ｄ−ＲＡＭ）３３と、タグメモリ（Ｃ２Ｔ−ＲＡＭ）３４とを含む。
【００２３】
Ｌ２制御部３２は、１次キャッシュ１２または１３からアクセス要求を受けると、Ｃ２Ｔａｇ信号を介してタグメモリ３４の内容を参照し、そのデータがデータメモリ３３に格納されているか否かを判定する。データメモリ３３にそのデータがある場合、すなわちキャッシュヒットした場合、Ｌ２制御部３２は、Ｃ２Ｄａｔａ信号を介してデータメモリ３３からデータ読み出しを行なう。
【００２４】
また、データメモリ３３にそのデータがない場合、すなわちミスヒットの場合、Ｌ２制御部３２は主記憶５１に対してアクセス要求信号Ｒｅｑ３を出力し、Ｄａｔａ３信号を介してデータを入力する。そして、Ｌ２制御部３２は、そのデータをデータメモリ３３に格納すると共に、タグメモリ３４にそのデータのタグ情報の新規登録を行なう。
【００２５】
スヌープ制御部４１は、ＣＰＵ１１または２１からＬ１制御部１３または２３に対してＷＲＩＴＥ要求があり、それがキャッシュヒットの場合、すなわちそのデータがＤｉｒｔｙの場合に、他のすべてのＬ１制御部に対してそのデータの無効化要求を出力する。
【００２６】
また、スヌープ制御部４１は、Ｌ１制御部１３または２３からＬ２制御部３２へのＲＥＡＤ要求をモニタしており、ＲＥＡＤ要求を検知すると、他のすべてのＬ１制御部に対してライトバック要求を出力する。
【００２７】
図２は、タグメモリ１５，２５および３４に格納されるタグ情報を説明するための図である。タグメモリ１５，２５および３４は、データメモリ１４，２４または３３に格納されるキャッシュラインのそれぞれに対応してタグ情報を有しており、それぞれのタグ情報はタグアドレスと、Ｖａｌｉｄビットと、Ｄｉｒｔｙビットと、追い出し優先順位とを含む。
【００２８】
タグアドレスは、データの原本が存在する主記憶５１のアドレス上位ビットを示している。Ｖａｌｉｄビットは、そのデータが有効か否かを示すフラグである。Ｄｉｒｔｙビットは、そのデータが書き換えられたか否かを示すフラグである。また、追い出し優先順位は、同じキャッシュラインで別のウェイの各データの中での追い出し優先順位を示す。なお、数字が小さいほど追い出し優先順位が高いものとする。
【００２９】
図３は、本発明の第１の実施の形態におけるデータ処理装置の第１の動作を説明するための図である。なお、図３においては、１次キャッシュをＬ１とし、２次キャッシュをＬ２としている。以下の説明においても同様である。
【００３０】
また、Ｌ１およびＬ２のそれぞれの箱は、インデクス（アドレス下位ビット）が同一の、あるキャッシュラインを表している。Ｌ１のウェイ数をそれぞれ１、Ｌ２のウェイ数を４としている。丸で囲まれたＡ〜Ｄは、それぞれキャッシュに格納されたデータを示しており、アドレス下位ビット（インデクス）が同一で、アドレス上位ビット（タグアドレス）が異なるデータである。
【００３１】
また、図３、図５、図８〜１０に示す第１〜第５の動作は、本発明の第１の実施の形態におけるデータ処理装置の一連の動作を模式的に示している。
【００３２】
ＣＰＵ１がデータ“Ｃ”を読み出すときに、Ｌ１およびＬ２の両方でミスヒットし、主記憶５１からデータ“Ｃ”が読み出される場合には、Ｌ２にはデータ“Ｃ”がアロケートされず、Ｌ１にのみアロケートされる。
【００３３】
また、ＣＰＵ２がデータ“Ａ”を読み出すときに、Ｌ１およびＬ２の両方でミスヒットし、主記憶５１からデータ“Ａ”が読み出される場合であって、データ“Ｄ”がＬ１から追い出される場合には、それがダーティであるか否かにかかわらずデータ“Ｄ”のライトバックを行ない、追い出されたデータ“Ｄ”がＬ２にアロケートされる。
【００３４】
図３に示すこれらの動作においては、Ｌ１およびＬ２の両方に同じデータが存在することは起こらなことになる。
【００３５】
図４は、図３に示すＣＰＵ２側の動作を説明するためのタイミングチャートである。Ｔ１において、ＣＰＵ２１（ＣＰＵ２）がＲｅｑ１２信号によってデータ“Ａ”のＲＥＡＤ要求を出力すると、Ｌ１制御部２３（Ｌ１制御２）は、タグメモリ２５を参照することによりキャッシュミスの発生を検出する。
【００３６】
Ｔ２において、Ｌ１制御部２３は、Ｒｅｑ２２信号によってデータ“Ａ”のＲＥＡＤ要求をＬ２制御部３２（Ｌ２制御）に出力する。また、Ｔ３において、Ｌ１制御部２３は、追い出すデータ“Ｄ”をデータメモリ２４（Ｃ１２Ｄ−ＲＡＭ）から読み出すと共に、タグメモリ２５からそのデータに対応するタグ情報を無効化する。なお、Ｌ１制御部２３は、タグメモリ２５に格納される追い出し優先順位を参照することにより、追い出すデータを決定する。この追い出し優先順位は、たとえばＬＲＵ（Least Recently Used）方式によって更新される。
【００３７】
スヌープ制御部４１は、Ｌ１制御部２３からＬ２制御部３２への読み出し要求を検出すると、Ｔ４において、ＲｅｑＳ１１信号によってライトバック要求をＬ１制御部１３（Ｌ１制御１）に出力する。
【００３８】
Ｌ１制御部１３は、タグメモリ１５を参照することによりデータ“Ａ”が存在しないことを検出すると、Ｔ５において、何も行なわずにＡｃｋＳ１１信号によってスヌープ制御部４１にライトバック終了を通知する。タグメモリ１５を参照することによりデータメモリ１４にデータ“Ａ”が存在することを検出した場合には、Ｔ５において主記憶５１へライトバックを行なうためのアクセスを行なった後に、ＡｃｋＳ１１信号によってスヌープ制御部４１にライトバック終了を通知する。
【００３９】
スヌープ制御部４１は、Ｌ１制御部１３からライトバック終了通知を受けると、Ｔ６において、Ｌ２制御部３２にＲｅｑＳ２信号を出力することによって、Ｌ２制御部３２に転送許可を通知する。
【００４０】
Ｌ２制御部３２は、スヌープ制御部４１から転送許可通知を受けると、Ｔ７において、主記憶５１に対してアクセス要求信号Ｒｅｑ３を出力し、データ“Ａ”の読み出しを要求する。
【００４１】
Ｔ８において、Ｌ１制御部２３は、Ｒｅｑ２２信号によってＬ２制御部３２に追い出しデータ“Ｄ”のＷＲＩＴＥ要求を出力すると共に、Ｄａｔａ２２信号によって追い出しデータ“Ｄ”を出力する。
【００４２】
Ｔ９において、Ｌ２制御部３２は、データメモリ３３（Ｃ２Ｄ−ＲＡＭ）にデータ“Ｄ”を格納すると共に、タグメモリ３４にデータ“Ｄ”のタグ情報の新規登録を行なう。
【００４３】
Ｔ１０において、Ｌ２制御部３２は、主記憶５１からデータ“Ａ”を入力する。そして、Ｔ１１において、Ｌ２制御部３２は、Ｄａｔａ２２信号によってデータ“Ａ”をＬ１制御部２３に転送する。このとき、データ“Ａ”は、２次キャッシュ３１のデータメモリ３３にはアロケートされない。
【００４４】
Ｔ１２において、Ｌ１制御部２３は、Ｄａｔａ１２信号によってデータ“Ａ”をＣＰＵ２１に出力する。そして、Ｔ１３において、Ｌ１制御部２３は、Ｃ１２Ｄａｔａ信号によってデータ“Ａ”をデータメモリ２４に書き込むと共に、タグメモリ２５にデータ“Ａ”のタグ情報の新規登録を行なう。
【００４５】
図５は、本発明の第１の実施の形態におけるデータ処理装置の第２の動作を説明するための図である。ＣＰＵ２がデータ“Ｂ”を読み出すときに、Ｌ１でミスヒットし、Ｌ２でヒットした場合、Ｌ２からＬ１にデータ“Ｂ”をコピーする。そして、Ｌ１から追い出されたデータ“Ａ”がＬ２にアロケートされる。
【００４６】
このとき、Ｌ１およびＬ２の両方にデータ“Ｂ”が存在することになるが、かかる動作を行なう前のＬ２におけるデータ“Ｂ”の追い出し優先順位に関係なく、Ｌ２におけるデータ“Ｂ”の追い出し優先順位を最高の“１”にする。すなわち、Ｌ２においてデータの追い出しが必要な状況が発生したときに、どのウェイのデータを追い出すかを判定する際、データ“Ｂ”を追い出すと判定される。これによって、Ｌ１およびＬ２の両方に同じデータが存在する期間を短くすることができる。
【００４７】
図６は、図５に示す動作によって更新された後のタグメモリ３４のタグ情報を示す図である。上述のように、Ｌ１にコピーされたデータ“Ｂ”に対応する追い出し優先順位が最高の“１”となる。そして、データ“Ｂ”を有効（Ｖａｌｉｄビット＝１）とし、Ｃｌｅａｎな状態（Ｄｉｒｔｙビット＝０）とする。
【００４８】
また、追い出されたデータ“Ａ”に対応する追い出し優先順位が最低の“３”となる。このデータ“Ａ”が有効（Ｖａｌｉｄビット＝１）とされるが、Ｌ１においてデータが書き換えられているため、Ｄｉｒｔｙな状態（Ｄｉｒｔｙビット＝１）とされている。
【００４９】
図７は、図５に示すＣＰＵ２側の動作を説明するためのタイミングチャートである。Ｔ１において、ＣＰＵ２１（ＣＰＵ２）がＲｅｑ１２信号によってデータ“Ｂ”のＲＥＡＤ要求を出力すると、Ｌ１制御部２３（Ｌ１制御２）は、タグメモリ２５を参照することによりキャッシュミスの発生を検出する。
【００５０】
Ｔ２において、Ｌ１制御部２３は、Ｒｅｑ２２信号によってデータ“Ｂ”のＲＥＡＤ要求をＬ２のＬ２制御部３２（Ｌ２制御）に出力する。このとき、Ｌ２制御部３２は、タグメモリ３４を参照することによりデータ“Ｂ”がヒットしたことを検出する。
【００５１】
Ｔ３において、Ｌ１制御部２３は、追い出すデータ“Ａ”をデータメモリ２４（Ｃ１２Ｄ−ＲＡＭ）から読み出すと共に、タグメモリ２５からそのデータに対応するタグを削除する。
【００５２】
スヌープ制御部４１は、Ｌ１制御部２３からＬ２制御部３２へのＲＥＡＤ要求を検出すると、Ｔ４において、ＲｅｑＳ１１信号によってライトバック要求をＬ１制御部１３（Ｌ１制御１）に出力する。
【００５３】
Ｌ１制御部１３は、タグメモリ１５を参照することによりデータ“Ｂ”が存在しないことを検出すると、Ｔ５において、何も行なわずにＡｃｋＳ１１信号によってスヌープ制御部４１にライトバック終了を通知する。データ“Ｂ”がデータメモリ１４に存在する場合は、データ“Ｂ”は１次キャッシュ１２と２次キャッシュ３１とに重複して存在すると共に、主記憶５１に存在することになる。この場合については後述する。
【００５４】
スヌープ制御部４１は、Ｌ１制御部１３からライトバック終了通知を受けると、Ｔ６において、Ｌ２制御部３２にＲｅｑＳ２信号を出力することによって、Ｌ２制御部３２に転送許可を通知する。
【００５５】
Ｌ２制御部３２は、スヌープ制御部４１から転送許可通知を受けると、Ｔ７において、Ｃ２Ｄａｔａ信号によってデータメモリ３３からデータ“Ｂ”を読み出し、Ｄａｔａ２２信号によってデータ“Ｂ”をＬ１制御部２３に出力する。このとき、Ｌ２制御部３２は、データ“Ｂ”の追い出し優先順位が最高となるようにタグ情報を更新する。
【００５６】
Ｔ８において、Ｌ１制御部２３は、Ｌ２制御部３２から受けたデータ“Ｂ”をＣＰＵ２１に出力する。また、Ｔ９において、Ｌ１制御部２３は、Ｃ１２Ｄａｔａ信号によってデータ“Ｂ”をデータメモリ２４に格納すると共に、タグメモリ２５にデータ“Ｂ”のタグ情報の新規登録を行なう。
【００５７】
Ｔ１０において、Ｌ１制御部２３は、Ｒｅｑ２２信号によってＬ２制御部３２に追い出しデータ“Ａ”のＷＲＩＴＥ要求を出力すると共に、Ｄａｔａ２２信号によって追い出しデータ“Ｂ”を出力する。
【００５８】
Ｔ１１において、Ｌ２制御部３２は、データメモリ３３にデータ“Ａ”を格納すると共に、タグメモリ３４にデータ“Ａ”のタグ情報の新規登録を行なう。
【００５９】
図８は、本発明の第１の実施の形態におけるデータ処理装置の第３の動作を説明するための図である。図８〜図１０はデータのアクセスの点において連続する。
【００６０】
図５を用いて説明したように、Ｌ２からＣＰＵ２のＬ１にデータ“Ｂ”をコピーするときに、データ“Ｂ”のＬ２での追い出し優先順位が最高となるが、このデータ“Ｂ”はしばらくＬ２に残ることになる。このとき、複数のＣＰＵが同じデータ“Ｂ”を短時間に集中してアクセスする場合、たとえばＣＰＵ１がデータ“Ｂ”をアクセスする場合には、Ｌ２においてこのデータ“Ｂ”にヒットすることになる。この場合、スヌープ制御部４１はＬ１制御部２３に対してライトバック要求を出力する。
【００６１】
ＣＰＵ１１または１２からのデータライト要求に対して、１次キャッシュ１２，２２および２次キャッシュ３１がライトスルー動作を行なう場合、１次キャッシュ２２と２次キャッシュ３１との両方に存在するデータ“Ｂ”は一致しており、１次キャッシュ２２は何も行なわずにＡｃｋＳ１１信号によってスヌープ制御部４１にライトバック終了を通知してよい。
【００６２】
一方で、ＣＰＵ１１または１２からのデータライト要求に対して、１次キャッシュ１２，２２および２次キャッシュ３１がライトバック動作を行なう場合、１次キャッシュ２２と２次キャッシュ３１（および主記憶５１）に存在するデータ“Ｂ”は不一致であることが考えられる。そのため、スヌープ制御部４１からのライトバック要求に対して、１次キャッシュ２２は２次キャッシュ３１（および主記憶５１）に対してデータ“Ｂ”のライトバックを行なうアクセスを行なった後に、ＡｃｋＳ１１信号によってスヌープ制御部４１にライトバック終了を通知する。
【００６３】
図８においては、ＣＰＵ１がデータ“Ｂ”を読み出すときに、Ｌ１でミスヒットし、Ｌ２でヒットするので、Ｌ２からＬ１にデータ“Ｂ”がコピーされる。そして、Ｌ１から追い出されたデータ“Ｃ”がＬ２にアロケートされる。このとき、Ｌ２におけるデータ“Ｂ”の追い出し優先順位が最高のまま維持される。
【００６４】
図９は、本発明の第１の実施の形態におけるデータ処理装置の第３の動作に続く第４の動作を説明するための図である。ＣＰＵ１がデータ“Ｃ”を読み出すときに、Ｌ１でミスヒットし、Ｌ２でヒットするので、Ｌ２からＬ１にデータ“Ｃ”がコピーされる。このとき、Ｌ２におけるデータ“Ｃ”の追い出し優先順位を最高とする。そして、Ｌ１から追い出されたデータ“Ｂ”がＬ２にアロケートされるが、データ“Ｂ”は既にＬ２に存在しているため、Ｌ２に存在する当該データ“Ｂ”を更新し、通常のＬＲＵ制御等によりデータ“Ｂ”の追い出し優先順位が決定される。
【００６５】
また、ＣＰＵ２がデータ“Ｅ”を読み出すときに、Ｌ１およびＬ２の両方でミスヒットし、主記憶５１からデータ“Ｅ”が読み出される。そして、Ｌ１から追い出されたデータ“Ｂ”がＬ２にアロケートされる。この場合も、ＣＰＵ１からデータ“Ｂ”が追い出された場合と同じ動作が繰り返される。
【００６６】
図１０は、本発明の第１の実施の形態におけるデータ処理装置の第４の動作に続く第５の動作を説明するための図である。ＣＰＵ２がデータ“Ａ”を読み出すときに、Ｌ１でミスヒットし、Ｌ２でヒットする。このとき、ＣＰＵ２のＬ１から追い出されたデータ“Ｅ”がＬ２にアロケートされることになるが、追い出し優先順位が最高のデータ“Ｃ”がＬ２から追い出される。その後、Ｌ２からＬ１にデータ“Ａ”がコピーされ、Ｌ２におけるデータ“Ａ”の追い出し優先順位を最高とする。
【００６７】
図１１は、図１０に示す動作によって更新された後のタグメモリ３４のタグ情報を示す図である。上述のように、Ｌ１にコピーされたデータ“Ａ”に対応する追い出し優先順位が最高の“１”となる。このデータ“Ａ”は有効（Ｖａｌｉｄビット＝１）であり、Ｌ１においてデータが書き換えられているため、Ｄｉｒｔｙな状態（Ｄｉｒｔｙビット＝１）である。
【００６８】
また、追い出されたデータ“Ｅ”に対応する追い出し優先順位が最低の“４”となる。このデータ“Ｅ”が有効（Ｖａｌｉｄビット＝１）とされるが、Ｌ１においてデータが書き換えられていないため、Ｃｌｅａｎな状態（Ｄｉｒｔｙビット＝０）とされている。
【００６９】
図１２は、Ｌ１制御部１３および２３の処理手順を説明するためのフローチャートである。Ｌ１制御部１３および２３の処理手順は同じであるので、代表してＬ１制御部１３の処理手順のみを説明することにする。
【００７０】
まず、Ｌ１制御部１３がＣＰＵ１１からデータのアクセス要求を受けると（Ｓ１１）、タグメモリ１５に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する（Ｓ１２）。
【００７１】
ミスヒットの場合には（Ｓ１３，ミス）、２次キャッシュ３１に対してＲＥＡＤ要求を出力し（Ｓ１４）、データメモリ１４からデータを追い出すべきか否かを判断する（Ｓ１５）。データを追い出す必要がない場合には（Ｓ１６，Ｎｏ）、ステップＳ１９に処理が進む。
【００７２】
データを追い出す必要がある場合には（Ｓ１６，Ｙｅｓ）、データメモリ１４から優先順位が最高のデータを読み出し、そのデータに対応するＶａｌｉｄビットに“０”を書き込んで無効化する（Ｓ１７）。そして、Ｌ２制御部３２に対して追い出しデータを転送し、ＷＲＩＴＥ要求を出力する（Ｓ１８）。
【００７３】
Ｌ１制御部１３がＬ２制御部３２から要求データを受けると（Ｓ１９）、ＣＰＵ１１からのアクセス要求がＷＲＩＴＥ要求の場合には、要求データにＣＰＵ１１から受けたデータを上書きし（Ｓ２０）、スヌープ制御部４１に対してデータが書き換えられたことを通知する、Ｄｉｒｔｙ通知を発行する（Ｓ２１）。なお、アクセス要求がＷＲＩＴＥ要求の場合には、後述のステップＳ２３の処理は行なわれない。
【００７４】
そして、Ｌ１制御部１３は、キャッシュアロケートしてデータメモリ１４に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ１５に新規登録する（Ｓ２２）。
【００７５】
また、ＣＰＵ１１からのアクセス要求がＲＥＡＤ要求の場合には、ＣＰＵ１１に対して要求データを転送する（Ｓ２３）。なお、アクセス要求がＲＥＡＤ要求の場合には、上述のステップＳ２０およびＳ２１の処理は行なわれない。
【００７６】
また、キャッシュヒットの場合には（Ｓ１３，ヒット）、ＣＰＵ１１からのアクセス要求がＲＥＡＤ要求であるか、ＷＲＩＴＥ要求であるかを判断する（Ｓ２４）。アクセス要求がＲＥＡＤ要求の場合（Ｓ２４，ＲＥＡＤ）、Ｌ１制御部１３は、データメモリ１４から要求データを読み出して（Ｓ２５）、要求データをＣＰＵ１１に転送する（Ｓ２６）。
【００７７】
また、アクセス要求がＷＲＩＴＥ要求の場合（Ｓ２４，ＷＲＩＴＥ）、Ｌ１制御部１３は、データメモリ１４に要求データを書き込むと共に、そのデータに対応するタグ情報を更新する（Ｓ２７）。そして、Ｌ１制御部１３は、スヌープ制御部４１に対してデータが書き換えられたことを通知する、Ｄｉｒｔｙ通知を発行する（Ｓ２８）。
【００７８】
図１３は、Ｌ１制御部１３および２３がスヌープ制御部４１から無効化要求を受けたときの処理手順を説明するためのフローチャートである。Ｌ１制御部１３および２３の処理手順は同じであるので、代表してＬ１制御部１３の処理手順のみを説明することにする。
【００７９】
まず、スヌープ制御部４１から無効化要求を受けると（Ｓ３１）、Ｌ１制御部１３は、タグメモリ１５を参照して、無効化要求を受けたデータと同じアドレスのデータがあるか否かを調べる（Ｓ３２）。
【００８０】
同じアドレスのデータがある場合（Ｓ３３，Ｙｅｓ）、Ｌ１制御部１３は、無効化要求を受けたデータに対応するタグ情報のＶａｌｉｄビットに“０”を書き込んで無効化する（Ｓ３４）。また、同じアドレスのデータがない場合には（Ｓ３３，Ｎｏ）、そのまま処理を終了する。
【００８１】
図１４は、Ｌ１制御部１３および２３がスヌープ制御部４１からライトバック要求を受けたときの処理手順を説明するためのフローチャートである。Ｌ１制御部１３および２３の処理手順は同じであるので、代表してＬ１制御部１３の処理手順のみを説明することにする。
【００８２】
まず、スヌープ制御部４１からライトバック要求を受けると（Ｓ４１）、Ｌ１制御部１３は、タグメモリ１５を参照して、ライトバック要求を受けたデータと同じアドレスのデータがあるか否かを調べる（Ｓ４２）。同じアドレスのデータがない場合（Ｓ４３，Ｎｏ）、スヌープ制御部４１に対してライトバック終了通知を発行する（Ｓ４７）。
【００８３】
同じアドレスのデータがある場合（Ｓ４３，Ｙｅｓ）、Ｌ１制御部１３は、タグメモリ１５を参照して、ライトバック要求を受けたデータがＤｉｒｔｙな状態であるか否かを判断する（Ｓ４４）。ライトバック要求を受けたデータがＣｌｅａｎな状態であれば（Ｓ４４，Ｎｏ）、スヌープ制御部４１に対してライトバック終了通知を発行する（Ｓ４７）。
【００８４】
ライトバック要求を受けたデータがＤｉｒｔｙな状態であれば（Ｓ４４，Ｙｅｓ）、Ｌ１制御部１３は、データメモリ１４から要求データを読み出し（Ｓ４５）、Ｌ２制御部３２に要求データを転送してＷＲＩＴＥ要求を出力する（Ｓ４６）。そして、Ｌ１制御部１３は、スヌープ制御部４１に対してライトバック終了通知を発行する（Ｓ４７）。
【００８５】
図１５は、スヌープ制御部４１の処理手順を説明するためのフローチャートである。まず、スヌープ制御部４１がＬ１制御部１３または２３からＤｉｒｔｙ通知を受けると（Ｓ５１）、他のすべてのＬ１制御部に対して無効化要求を出力する（Ｓ５２）。
【００８６】
また、スヌープ制御部４１は、Ｌ１制御部１３または２３からＬ２制御部３２へのＲＥＡＤ要求を検知すると（Ｓ５３）、他のすべてのＬ１制御部に対してライトバック要求を出力する（Ｓ５４）。
【００８７】
そして、すべてのＬ１制御部からのライトバック終了通知を待つ（Ｓ５５）。未だライトバック終了通知が来ていないＬ１制御部があれば（Ｓ５６，Ｎｏ）、すべてのＬ１制御部からのライトバック終了通知があるまでステップＳ５５の処理を繰り返す。また、すべてのＬ１制御部からのライトバック終了通知があれば（Ｓ５６，Ｙｅｓ）、Ｌ２制御部３２に対してデータ転送許可を出力する（Ｓ５７）。
【００８８】
図１６は、Ｌ２制御部３２の処理手順を説明するためのフローチャート（その１）である。まず、Ｌ２制御部３２がＬ１制御部１３または２３からデータのアクセス要求を受けると（Ｓ６１）、タグメモリ３４に格納されるタグ情報を参照してキャッシュミスであるか、キャッシュヒットであるかを判断する（Ｓ６２）。キャッシュヒットの場合には（Ｓ６３，ヒット）、図１７の（１）に処理が進む。
【００８９】
また、ミスヒットの場合（Ｓ６３，ミス）、Ｌ２制御部３２は、アクセス要求がＲＥＡＤ要求か、ＷＲＩＴＥ要求かを判断する（Ｓ６４）。アクセス要求がＷＲＩＴＥ要求の場合（Ｓ６４，ＷＲＩＴＥ）、Ｌ２制御部３２は、そのデータがＬ１制御部１３または２３からの追い出しデータであるか否かを判断する（Ｓ６５）。
【００９０】
Ｌ１制御部１３または２３からの追い出しデータでない場合（Ｓ６５，Ｎｏ）、Ｌ２制御部３２は、主記憶５１に追い出しデータを転送し、主記憶５１に対してＷＲＩＴＥ要求を出力する（Ｓ７１）。
【００９１】
また、Ｌ１制御部１３または２３からの追い出しデータの場合（Ｓ６５，Ｙｅｓ）、Ｌ２制御部３２は、データメモリ３３からデータを追い出す必要があるか否かを判断する（Ｓ６６）。この判定は、Ｌ２制御部３２がタグメモリ３４を参照し、対応する４つのキャッシュラインのすべてに有効なデータが格納されているか否かを判定することによって行なわれる。データを追い出す必要がない場合（Ｓ６７，Ｎｏ）、ステップＳ７０に処理が進む。
【００９２】
また、データを追い出す必要がある場合（Ｓ６７，Ｙｅｓ）、Ｌ２制御部３２は、データメモリ３３から優先順位が最高のデータを読み出し、そのデータに対応するタグ情報のＶａｌｉｄビットに“０”を書き込んで無効化する（Ｓ６８）。そして、主記憶５１に対して追い出しデータを転送し、ＷＲＩＴＥ要求を出力する（Ｓ６９）。
【００９３】
そして、Ｌ２制御部３２は、キャッシュアロケートしてデータメモリ３３に要求データを書き込むと共に、そのデータに対応するタグ情報をタグメモリ３４に新規登録する（Ｓ７０）。
【００９４】
また、Ｌ１制御部１３または２３からのアクセス要求がＲＥＡＤ要求の場合には（Ｓ６４，ＲＥＡＤ）、スヌープ制御部４１からの転送許可通知を待った後（Ｓ７２）、主記憶５１に対してＲＥＡＤ要求を出力する（Ｓ７３）。そして、主記憶５１から要求データを受けて（Ｓ７４）、図１７の（３）に処理が進む。
【００９５】
図１７は、Ｌ２制御部３２の処理手順を説明するためのフローチャート（その２）である。図１６のステップＳ６３において、キャッシュヒットの場合（Ｓ６３，ヒット）、Ｌ１制御部１３または２３からのアクセス要求がＲＥＡＤ要求であるか、ＷＲＩＴＥ要求であるかを判断する（Ｓ８１）。
【００９６】
Ｌ１制御部１３または２３からのアクセス要求がＲＥＡＤ要求の場合（Ｓ８１，ＲＥＡＤ）、スヌープ制御部４１からの転送許可通知を待った後（Ｓ８２）、Ｌ２制御部３２は、データメモリ３３から要求データを読み出す（Ｓ８３）。
【００９７】
そして、Ｌ２制御部３２は、タグメモリ３４に格納される要求データに対応する追い出し優先順位を最も高くし（Ｓ８４）、要求元のＬ１制御部１３または２３に要求データを転送する（Ｓ８５）。
【００９８】
また、Ｌ１制御部１３または２３からのアクセス要求がＷＲＩＴＥ要求の場合（Ｓ８１，ＷＲＩＴＥ）、Ｌ２制御部３２は、データメモリ３３に要求データを書き込むと共に、タグメモリ３４に格納されるそのデータに対応するタグ情報を更新する（Ｓ８６）。
【００９９】
以上説明したように、本実施の形態におけるデータ処理装置によれば、ＣＰＵ１１または２１がデータを読み出すときに、１次キャッシュ１２または２２でミスヒットし、２次キャッシュ３１でヒットした場合、２次キャッシュ３１から１次キャッシュ１２または２２にデータをコピーする。このとき、２次キャッシュにおけるそのデータの追い出し優先順位を最高にするようにしたので、１次キャッシュ１２および２２と２次キャッシュ３１との両方に同じデータが存在することが少なくなり、キャッシュメモリに多くのデータを格納することができるので、キャッシュヒット率を向上させることが可能となった。
【０１００】
また、追い出し優先順位を最高にしてしばらく２次キャッシュ３１にそのデータを残しておくので、複数のＣＰＵが同じデータに対して集中してアクセスするような場合であっても、２次キャッシュ３１におけるキャッシュヒット率が低下するのを防止することが可能となった。
【０１０１】
なお、以上の説明においては、ＣＰＵ１１または２１がデータを読み出すときに、１次キャッシュ１２または２２でミスヒットし、２次キャッシュ３１でヒットした場合、２次キャッシュ３１がそのデータを出力すると共に、そのデータの追い出し優先順位を最高にするとして説明した。しかしながら、追い出し優先順位を最高にするのではなく、ＬＲＵ方式で決定される通常の追い出し優先順位よりも高くすれば同様の効果が得られることは言うまでもない。
【０１０２】
（第２の実施の形態）
本発明の第２の実施の形態におけるデータ処理装置の構成は、図１に示す第１の実施の形態におけるデータ処理装置の構成と比較して、２次キャッシュ３１のタグメモリ３４に、１次キャッシュ１２および２２のタグメモリ１５および２５に格納されるタグ情報と同じ情報を格納する領域が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１０３】
図１８は、本発明の第２の実施の形態におけるデータ処理装置の動作を説明するための図である。なお、図１８においては、１次キャッシュをＬ１とし、２次キャッシュをＬ２としている。
【０１０４】
Ｌ１およびＬ２のそれぞれの上段の箱は、インデクス（アドレス下位ビット）が同一の、あるキャッシュラインを表している。また、Ｌ１およびＬ２のそれぞれの下段の箱は、上段のキャッシュラインに対応するタグ情報を格納する領域を表している。なお、Ｌ２の下段の左端の箱は、ＣＰＵ１のＬ１と同じタグ情報を格納する領域を表しており、Ｌ２の下段の右端の箱は、ＣＰＵ２のＬ１と同じタグ情報を格納する領域を表している。
【０１０５】
ＣＰＵ２がデータを読み出すときに、Ｌ１でミスヒットした場合、Ｌ２でヒットするか否かを判断することになるが、このとき他のＬ１に対応するタグ情報も参照してヒットするか否かを判断する。
【０１０６】
たとえば、ＣＰＵ２がデータ“Ｃ”を読み出すときに、Ｌ１でミスヒットし、Ｌ２でもミスヒットすることになるが、Ｌ２の下段の左端にデータ“Ｃ”に対応するタグ情報があるため、ＣＰＵ１のＬ１にデータ“Ｃ”が存在することが分かる。このとき、Ｌ２は、ＣＰＵ１のＬ１からデータ“Ｃ”をコピーし、そのデータ“Ｃ”をＣＰＵ２のＬ１に転送する。
【０１０７】
図１９は、図１８に示す第２の実施の形態におけるデータ処理装置の動作を説明するためのタイミングチャートである。Ｔ１において、ＣＰＵ２１（ＣＰＵ２）がＲｅｑ１２信号によってデータ“Ｃ”のＲＥＡＤ要求を出力すると、Ｌ１制御部２３（Ｌ１制御２）は、タグメモリ２５を参照することによりキャッシュミスの発生を検出する。
【０１０８】
Ｔ２において、Ｌ１制御部２３は、Ｒｅｑ２２信号によってデータ“Ｃ”のＲＥＡＤ要求をＬ２制御部３２（Ｌ２制御）に出力する。
【０１０９】
データ“Ｃ”のＲＥＡＤ要求を受けると、Ｔ３において、Ｌ２制御部３２は、Ｃ２Ｔａｇ信号によってタグメモリ３４（Ｃ２Ｔ−ＲＡＭ）からタグ情報を読み出し、それを参照することによりデータ“Ｃ”が１次キャッシュ１２に存在することを検出する。
【０１１０】
Ｔ４において、Ｌ２制御部３２は、Ｌ１制御部１３（Ｌ１制御１）に対してデータ“Ｃ”のＲＥＡＤ要求を出力する。なお、本実施の形態においては、Ｌ２制御部３２からＬ１制御部１３および２３に対するアクセス要求信号が追加されているものとする。
【０１１１】
Ｌ２制御部３２からデータ“Ｃ”のＲＥＡＤ要求を受けると、Ｔ５において、Ｌ１制御部１３は、Ｃ１１Ｄａｔａ信号によってデータメモリ１４（Ｃ１１Ｄ−ＲＡＭ）からデータ“Ｃ”を読み出す。そして、Ｔ６において、Ｌ１制御部１３は、Ｄａｔａ２１信号によってデータ“Ｃ”をＬ２制御部３２に転送する。
【０１１２】
Ｌ１制御部１３からデータ“Ｃ”を受けると、Ｔ７において、Ｌ２制御部３２は、Ｄａｔａ２２信号によってデータ“Ｃ”をＬ１制御部２３に出力する。そして、Ｔ８において、Ｌ１制御部２３は、Ｃ１２Ｄａｔａ信号によってデータ“Ｃ”をデータメモリ２４に書き込むと共に、タグメモリ２５にデータ“Ｃ”のタグ情報の新規登録を行なう。そして、Ｔ９において、Ｌ１制御部２３は、Ｄａｔａ１２信号によってデータ“Ｃ”をＣＰＵ２１に出力する。
【０１１３】
図２０は、本発明の第２の実施の形態におけるＬ１制御部１３および２３に追加された処理の手順を説明するためのフローチャートである。Ｌ１制御部１３および２３の処理手順は同じであるので、代表してＬ１制御部１３の処理手順のみを説明することにする。
【０１１４】
まず、Ｌ１制御部１３がＬ２制御部３２からＲＥＡＤ要求を受けると（Ｓ９１）、データメモリ１４から要求データを読み出す（Ｓ９２）。そして、Ｌ１制御部１３は、Ｌ２制御部３２に対して要求データを転送する（Ｓ９３）。
【０１１５】
図２１は、本発明の第２の実施の形態におけるＬ２制御部３２の処理手順を説明するためのフローチャートである。なお、本実施の形態におけるＬ２制御部３２は、図１６に示すフローチャートと同様の処理を行なうものとし、図２１には、図１６のステップＳ６３においてキャッシュヒットした場合以降の処理を示すものとする。また、図１７と同じ処理については、同じステップ番号を付すものとし、その詳細な説明は繰り返さない。
【０１１６】
キャッシュヒットした場合（Ｓ６３，ヒット）、Ｌ２制御部３２は、タグメモリ３４を参照して、そのデータが２次キャッシュ３１のデータメモリ３３にあるか否かを判断する（Ｓ１０１）。
【０１１７】
そのデータが２次キャッシュ３１、または２次キャッシュ３１および別の１次キャッシュの両方にある場合（Ｓ１０１，Ｌ２又は両方）、ステップＳ８１以降の処理を行なう。また、そのデータが別の１次キャッシュのみにある場合（Ｓ１０１，別のＬ１のみ）、アクセス要求がＲＥＡＤ要求であるか、ＷＲＩＴＥ要求であるかを判断する（Ｓ１０２）。
【０１１８】
アクセス要求がＷＲＩＴＥ要求の場合（Ｓ１０２，ＷＲＩＴＥ）、図１６のステップＳ６５に処理が進む。また、アクセス要求がＲＥＡＤ要求の場合（Ｓ１０２，ＲＥＡＤ）、Ｌ２制御部３２は、その別のＬ１制御部に対してＲＥＡＤ要求を出力する（Ｓ１０３）。
【０１１９】
そして、その別のＬ１制御部から要求データを受けて（Ｓ１０４）、タグメモリ３４の要求元のＬ１制御部と同じタグ情報を格納する領域に、そのタグ情報を書き込んで（Ｓ１０５）、要求元のＬ１制御部１３または２３に要求データを転送する（Ｓ８５）。
【０１２０】
なお、Ｌ２制御部３２は、Ｌ１制御部１３および２３からのアクセス要求、スヌープ制御部４１からの無効化要求、ライトバック要求などをモニタしており、Ｌ１制御部１３および２３がタグメモリ１５および２５のタグ情報を更新するときに、２次キャッシュ３１のタグメモリ３４に格納される対応の情報を同様に更新するものとする。
【０１２１】
以上説明したように、本実施の形態におけるデータ処理装置によれば、２次キャッシュ３１のタグメモリ３４に、１次キャッシュ１２および２２のタグ情報と同じタグ情報を格納する領域を設ける。そして、Ｌ１制御部１３または２３からの要求データがデータメモリ３３にない場合でも、他の１次キャッシュにそのデータがある場合には、他の１次キャッシュから要求データを読み出してＬ１制御部１３または２３に転送するようにした。したがって、第１の実施の形態において説明した効果に加えて、２次キャッシュ３１のデータメモリ３３に要求データが存在しないことによるキャッシュヒット率の低下を防止することが可能となった。
【０１２２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２３】
１１，２１  ＣＰＵ、１２，２２  １次キャッシュ、１３，２３  Ｌ１制御部、１４，２４，３３  データメモリ、１５，２５，３４  タグメモリ、４１  スヌープ制御部、５１  主記憶。
【図１】
2011100390.tif 000003
【図２】
2011100390.tif 000004
【図３】
2011100390.tif 000005
【図４】
2011100390.tif 000006
【図５】
2011100390.tif 000007
【図６】
2011100390.tif 000008
【図７】
2011100390.tif 000009
【図８】
2011100390.tif 000010
【図９】
2011100390.tif 000011
【図１０】
2011100390.tif 000012
【図１１】
2011100390.tif 000013
【図１２】
2011100390.tif 000014
【図１３】
2011100390.tif 000015
【図１４】
2011100390.tif 000016
【図１５】
2011100390.tif 000017
【図１６】
2011100390.tif 000018
【図１７】
2011100390.tif 000019
【図１８】
2011100390.tif 000020
【図１９】
2011100390.tif 000021
【図２０】
2011100390.tif 000022
【図２１】
2011100390.tif 000023