(57)【要約】  本発明に係るＬ２キャッシュ（２０２）は、ＣＰＵ（２０１）からのコマンドが入力される第１ポート（２１１）と、ＤＭＡＣ（２０５）からのコマンドが入力される第３ポート（２１３）と、第３ポート（２１３）にコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをＬ２キャッシュ（２０２）が格納しているか否かを判定するヒット判定部（７１）と、コマンドが第３ポート（２１３）に入力され、かつヒット判定部（７１）により格納していると判定された場合、当該格納するデータと、メモリ（２０４）に格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドをＤＭＡＣ（２０５）から出力されたコマンドとしてメモリ（２０４）に出力するＤＭＡＣアクセス制御部（６３）とを備える。
2010035425.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、
前記プロセッサからのコマンドが入力される第１ポートと、
前記プロセッサ以外のマスタからのコマンドが入力される第２ポートと、
前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、
前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御部とを備える
キャッシュメモリ。
【請求項２】
前記第１制御部は、
前記コマンドとしてリードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第１リード制御部を備える
請求項１記載のキャッシュメモリ。
【請求項３】
前記第１リード制御部は、前記リードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する
請求項１又は２記載のキャッシュメモリ。
【請求項４】
請求項２又は３記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
前記メインメモリは、前記第１リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
メモリシステム。
【請求項５】
前記キャッシュメモリは、さらに、
前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第２リード制御部を備える
請求項４記載のメモリシステム。
【請求項６】
前記メモリシステムは、さらに、
前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
前記メモリコントローラは、
前記第１リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第３ポートと、
前記第２リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第４ポートとを有し、
前記メモリコントローラは、前記第３ポートに入力されたリードコマンドと、前記第４ポートに入力されたリードコマンドとを、当該リードコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたリードコマンドであるかに応じて調停する
請求項５記載のメモリシステム。
【請求項７】
前記メモリシステムは、さらに、
前記第１リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、
前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
請求項４記載のメモリシステム。
【請求項８】
前記第１制御部は、
前記コマンドとしてライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第１ライト制御部を備える
請求項１〜３のいずれか１項に記載のキャッシュメモリ。
【請求項９】
前記第１ライト制御部は、前記ライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する
請求項８記載のキャッシュメモリ。
【請求項１０】
請求項８又は９記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、
前記メインメモリは、前記マスタにより出力されたライトデータを、前記第１ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する
メモリシステム。
【請求項１１】
前記キャッシュメモリは、さらに、
前記ライトコマンド及びライトデータが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第２ライト制御部を備え、
前記第２ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力する
請求項１０記載のメモリシステム。
【請求項１２】
前記メモリシステムは、さらに、
前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
前記メモリコントローラは、
前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第３ポートと、
前記第２ライト制御部により出力されたライトコマンド及びライトデータが入力される第４ポートとを有し、
前記メモリコントローラは、前記第３ポートに入力されたライトコマンドと、前記第４ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたライトコマンドであるかに応じて調停する
請求項１１記載のメモリシステム。
【請求項１３】
前記メモリシステムは、さらに、
前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、
前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納する
請求項１０記載のメモリシステム。
【請求項１４】
前記プロセッサは、レベル１キャッシュを備え、
前記キャッシュメモリは、レベル２キャッシュである
請求項４〜７及び１０〜１３のいずれか１項に記載のメモリシステム。
【請求項１５】
前記メモリシステムは、
前記プロセッサを含む複数のプロセッサを含み、
前記複数のプロセッサの各々は、レベル１キャッシュを備え、
前記キャッシュメモリは、前記複数のプロセッサに共用される
請求項１４記載のメモリシステム。
【請求項１６】
プロセッサからのコマンドが入力される第１ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第２ポートとを備え、前記プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリの制御方法であって、
前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定ステップと、
前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定ステップで格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御ステップとを含む
キャッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ、メモリシステム及びその制御方法に関し、特に、プロセッサからのアクセスに応じて、メインメモリに格納されるデータの一部を格納するキャッシュメモリ、及び当該キャッシュメモリを含むメモリシステムに関する。
【背景技術】
【０００２】
近年のメモリシステムでは、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、又はその近傍に配置している。このようなメモリシステムでは、マイクロプロセッサがメインメモリから読み出したデータの一部、及び、メインメモリに書き込むデータの一部を、キャッシュメモリが記憶する（キャッシュする）ことによって、マイクロプロセッサのメモリアクセスを高速化させている。【０００３】
図１４は、従来のメモリシステム１００の構成を示す図である。図１４に示すメモリシステム１００は、ＣＰＵ１０１と、キャッシュメモリ１０２と、メモリコントローラ１０３と、メインメモリであるメモリ１０４と、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１０５とを備える。【０００４】
キャッシュメモリ１０２は、ＣＰＵ１０１からメモリ１０４へのアクセスが発生した場合、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（以下ヒット）、当該格納しているデータをＣＰＵ１０１に出力する（リード時）、又は、当該データを更新する（ライト時）。また、キャッシュメモリ１０２は、当該アクセス先のアドレスのデータを格納していない場合（以下キャッシュミス）、ＣＰＵ１０１から出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメモリ１０４から読み出したうえで格納するとともに、読み出したデータをＣＰＵ１０１に出力する（リード時）。【０００５】
また、キャッシュミスの場合には、キャッシュメモリ１０２は、当該キャッシュメモリ１０２内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。【０００６】
ここで、従来のメモリシステム１００では、ライト時には一時的にキャッシュメモリ１０２にライトデータが格納される。これにより、メモリ１０４に格納されているデータと、キャッシュメモリ１０２に格納されているデータが異なるという状態が発生する。つまり、この状態で、ＤＭＡＣ１０５がメモリ１０４にアクセスした場合、ＣＰＵ１０１とＤＭＡＣ１０５とでデータの一貫性（コヒーレンシ）を保てないという問題が生じる。【０００７】
このコヒーレンシを保つために、ＣＰＵ１０１は、キャッシュメモリ１０２に書き込みを行った後に、ライトバック（パージ）をキャッシュメモリ１０２に指示する必要がある。しかしながら、ＣＰＵ１０１は、このパージ処理が完了するまで、次の処理を行うことができない。つまり、ＣＰＵ１０１の処理性能が低下するという問題が生じる。【０００８】
さらに、レベル２キャッシュを備えるメモリシステムでは、レベル１キャッシュ及びレベル２キャッシュに対して、このパージ処理を行う必要があるので、ＣＰＵ１０１の処理性能の低下はさらに大きく。【０００９】
この問題に対して、キャッシュメモリ１０２を、ＣＰＵ１０１とＤＭＡＣ１０５とで共用する方法が知られている（例えば、特許文献１参照）。【００１０】
以下、キャッシュメモリ１０２を共用する従来のメモリシステム１１０について説明する。【００１１】
図１５は、キャッシュメモリ１０２を共用する従来のメモリシステム１１０の構成を示す図である。【００１２】
図１５に示すメモリシステム１１０は、図１４に示す構成に加え、バス１０６を備える。これにより、ＣＰＵ１０１とＤＭＡＣ１０５とがメモリ１０４に格納される同じデータを用いる場合には、ＤＭＡＣ１０５はバス１０６を介して、ＣＰＵ１０１と同様に、キャッシュメモリ１０２にアクセスできる。【００１３】
図１６は、ＤＭＡＣ１０５からのアクセスに対するキャッシュメモリ１０２の動作の概略を示す図である。【００１４】
図１６に示すように、リード時かつヒットの場合、キャッシュメモリ１０２は、ヒットしたデータをＤＭＡＣ１０５に出力する。また、ライト時かつヒットの場合、キャッシュメモリ１０２は、ヒットしたデータを更新する。【００１５】
また、リード時かつキャッシュミスの場合、キャッシュメモリ１０２がメモリ１０４からデータを読み出したうえで格納するとともに、読み出したデータをＤＭＡＣ１０５に出力する、又は、ＤＭＡＣ１０５がメモリ１０４からデータを読み出す。また、ライト時かつキャッシュミスの場合、キャッシュメモリ１０２がＤＭＡＣ１０５から出力されたアドレス及びデータを格納する、又はＤＭＡＣ１０５がメモリ１０４にデータを書き込む。【００１６】
以上の構成により、ＣＰＵ１０１がキャッシュメモリ１０２のデータを更新したとしても、ＤＭＡＣ１０５は、更新されたキャッシュメモリ１０２のデータを読み出すので、ＣＰＵ１０１は、上述したパージ処理を行う必要がない。よって、メモリシステム１１０は、コヒーレンシを保ちながら、ＣＰＵ１０１の処理性能の低下を抑制できる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００２−２７８８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、図１５に示すメモリシステム１１０は、バス１０６を備える必要があるので、図１４に示すメモリシステム１００に比べて、面積が増加するという問題がある。これは、メモリシステム１１０内に、ＤＭＡＣ１０５等のマスタが複数含まれる場合には、さらに顕著になる。【００１９】
さらに、ＤＭＡＣ１０５とメモリ１０４との間のデータ伝送に用いられるプロトコルとして複数のバスプロトコルが用いられている場合には、ＤＭＡＣ１０５とキャッシュメモリ１０２とインターフェースが複雑化するという問題がある。【００２０】
そこで、本発明は、コヒーレンシを保つために生じるＣＰＵ等のプロセッサの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明に係るキャッシュメモリは、プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、前記プロセッサからのコマンドが入力される第１ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第２ポートと、前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御部とを備える。【００２２】
この構成によれば、ＤＭＡＣ等のマスタからのアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該ヒットしたデータをマスタに出力する、又は、当該ヒットしたデータを更新するのではなく、当該ヒットしたデータとメインメモリに格納されるデータとのコヒーレンシを保つための処理を行った後、メインメモリにコマンドを出力する。【００２３】
これにより、キャッシュメモリのデータがＣＰＵ等のプロセッサにより更新されている場合でも、マスタからメインメモリへのアクセス時には、キャッシュメモリによりコヒーレンシを保つための処理が行われる。これにより、その後にキャッシュメモリにより出力されたコマンドにより発生するメインメモリへのアクセスにおいて、キャッシュメモリとメインメモリとのコヒーレンシが保たれる。よって、ＣＰＵ等のプロセッサは、書き込み処理を行った後にパージ処理等のコヒーレンシを保つための処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。【００２４】
さらに、本発明に係るキャッシュメモリでは、マスタからのアクセスがヒットした場合でも、当該キャッシュメモリとマスタとの間でリードデータ又はライトデータの伝送を行う必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータ又はライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。【００２５】
さらに、リードデータ又はライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００２６】
また、前記第１制御部は、前記コマンドとしてリードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第１リード制御部を備えてもよい。【００２７】
この構成によれば、マスタからのリードアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納するデータをマスタに出力するのではなく、当該データをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。これにより、キャッシュメモリのデータが、プロセッサにより更新されたことにより、キャッシュメモリのデータとメインメモリのデータとが一致しない場合でも、マスタは、正しいデータ（更新された後のデータ）を読み出せる。つまり、プロセッサは、書き込み処理を行った後にパージ処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。【００２８】
さらに、本発明に係るキャッシュメモリでは、マスタからのリードアクセスがヒットした場合でも、当該キャッシュメモリが格納するデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。【００２９】
さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００３０】
また、前記第１リード制御部は、前記リードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力してもよい。【００３１】
この構成によれば、マスタからのリードアクセスがキャッシュミスした場合でも、キャッシュメモリは、メインメモリから読み出したデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００３２】
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記メインメモリは、前記第１リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する。【００３３】
この構成によれば、リードデータは、キャッシュメモリを経由せずに、メインメモリから直接マスタに出力される。よって、キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００３４】
また、前記キャッシュメモリは、さらに、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第２リード制御部を備えてもよい。【００３５】
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。【００３６】
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第１リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第３ポートと、前記第２リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第４ポートとを有し、前記メモリコントローラは、前記第３ポートに入力されたリードコマンドと、前記第４ポートに入力されたリードコマンドとを、当該リードコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたリードコマンドであるかに応じて調停してもよい。【００３７】
この構成によれば、マスタからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第３ポートに入力され、プロセッサからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第４ポートに入力される。これにより、マスタにより出力されたリードコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第３ポートにマスタに対するバンド幅を割り当て、第４ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。【００３８】
また、前記メモリシステムは、さらに、前記第１リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力してもよい。【００３９】
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。【００４０】
また、本発明に係るキャッシュメモリにおいて、前記第１制御部は、前記コマンドとしてライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第１ライト制御部を備えてもよい。【００４１】
この構成によれば、マスタからのアクセスにおいてライトヒットした場合には、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納しているヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。これにより、マスタによるライトにより、キャッシュメモリのデータとメインメモリのデータとが一致しなくなることを防止できる。つまり、キャッシュメモリとメインメモリとのコヒーレンスを保つために、プロセッサ及びマスタは、特段の処理（パージ処理等）を追加する必要はない。このように、本発明は、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。【００４２】
さらに、本発明に係るキャッシュメモリでは、マスタからのライトアクセスがヒットした場合でも、当該キャッシュメモリがライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。【００４３】
さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００４４】
また、前記第１ライト制御部は、前記ライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力してもよい。【００４５】
この構成によれば、マスタからのライトアクセスがキャッシュミスした場合でも、キャッシュメモリは、ライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００４６】
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、前記メインメモリは、前記マスタにより出力されたライトデータを、前記第１ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する。【００４７】
この構成によれば、ライトデータは、キャッシュメモリを経由せずに、マスタからメインメモリに直接出力される。よって、キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。【００４８】
また、前記キャッシュメモリは、さらに、前記ライトコマンド及びライトデータが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第２ライト制御部を備え、前記第２ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力してもよい。【００４９】
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。【００５０】
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第３ポートと、前記第２ライト制御部により出力されたライトコマンド及びライトデータが入力される第４ポートとを有し、前記メモリコントローラは、前記第３ポートに入力されたライトコマンドと、前記第４ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたライトコマンドであるかに応じて調停してもよい。【００５１】
この構成によれば、マスタからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第３ポートに入力され、プロセッサからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第４ポートに入力される。これにより、マスタにより出力されたライトコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第３ポートにマスタに対するバンド幅を割り当て、第４ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。【００５２】
また、前記メモリシステムは、さらに、前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納してもよい。【００５３】
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。【００５４】
また、前記プロセッサは、レベル１キャッシュを備え、前記キャッシュメモリは、レベル２キャッシュであってもよい。【００５５】
この構成によれば、本発明に係るキャッシュメモリは、レベル２キャッシュに適用される。ここで、レベル２キャッシュがメモリシステム全体に与える影響は、レベル１キャッシュに比べ低い。具体的には、レベル１キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル１キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル１キャッシュへのアクセスに悪影響が出てしまう。よって、レベル２キャッシュに本発明に係るキャッシュメモリを適用することで、レベル１キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。【００５６】
また、前記メモリシステムは、前記プロセッサを含む複数のプロセッサを含み、前記複数のプロセッサの各々は、レベル１キャッシュを備え、前記キャッシュメモリは、前記複数のプロセッサに共用されてもよい。【００５７】
この構成によれば、複数のプロセッサにより共用されているレベル２キャッシュに本発明に係るキャッシュメモリが適用される。ここで、複数のプロセッサによりレベル２キャッシュが共用されている場合には、複数のレベル１キャッシュと、レベル２キャッシュとのコヒーレンシを保つために、複数のプロセッサは、スヌープ方式等のアルゴリズムに基づいた制御を行う必要がある。よって、この制御に加え、レベル２キャッシュとメインメモリとの間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをレベル２キャッシュに用いることで、レベル２キャッシュとメインメモリとの間のコヒーレンスを保つための処理を削減できるので、上記制御の複雑化を回避できる。【００５８】
なお、本発明は、このようなキャッシュメモリ及びメモリシステムとして実現できるだけでなく、キャッシュメモリ及びメモリシステムに含まれる特徴的な手段をステップとするキャッシュメモリの制御方法及びメモリシステムの制御方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。【００５９】
また、本発明は、このようなキャッシュメモリ及びメモリシステムの機能の一部又は全てを有する半導体集積回路としても実現できる。
【発明の効果】
【００６０】
以上より、本発明は、コヒーレンシを保つために生じるＣＰＵの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供できる。
【図面の簡単な説明】
【００６１】
【図１】図１は、本発明の実施の形態に係るメモリシステムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係るキャッシュメモリの構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係るキャッシュ格納部及びヒット判定部の構成を示す図である。
【図４】図４は、本発明の実施の形態に係るウェイの構成を示す図である。
【図５】図５は、本発明の実施の形態に係るメモリシステムにおける接続関係を示す図である。
【図６】図６は、本発明の実施の形態に係るキャッシュメモリにおけるＤＭＡＣからのアクセスに対する動作の概略を示す図である。
【図７】図７は、本発明の実施の形態に係るメモリシステムにおけるリードヒット時の動作の流れを示す図である。
【図８】図８は、本発明の実施の形態に係るメモリシステムにおけるリードミス時の動作の流れを示す図である。
【図９】図９は、本発明の実施の形態に係るメモリシステムにおけるライトヒット時の動作の流れを示す図である。
【図１０】図１０は、本発明の実施の形態に係るメモリシステムにおけるライトミス時の動作の流れを示す図である。
【図１１】図１１は、本発明の実施の形態に係るキャッシュメモリにおけるリード時の動作の流れを示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係るキャッシュメモリにおけるライト時の動作の流れを示すフローチャートである。
【図１３】図１３は、本発明の実施の形態に係るメモリシステムの変形例の構成を示すブロック図である。
【図１４】図１４は、従来のメモリシステムの構成を示すブロック図である。
【図１５】図１５は、従来のメモリシステムの構成を示すブロック図である。
【図１６】図１６は、従来のキャッシュメモリにおけるＤＭＡＣからのアクセスに対する動作の概略を示す図である。
【発明を実施するための形態】
【００６２】
以下、本発明に係るキャッシュメモリの実施の形態について、図面を参照しながら詳細に説明する。
【００６３】
（実施の形態１）
本発明の実施の形態に係るキャッシュメモリは、ＤＭＡＣ等のマスタからのリードアクセスがヒットした場合、ヒットしたデータをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。また、マスタからのライトアクセスがヒットした場合、ヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。
【００６４】
これにより、ＣＰＵ等のプロセッサ及びマスタがパージ処理を行わなくても、キャッシュメモリとメインメモリとの間のコヒーレンシを保つことができる。よって、本発明の実施の形態に係るキャッシュメモリは、キャッシュメモリとメインメモリとの間のコヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
【００６５】
さらに、リードデータ及びライトデータは、キャッシュメモリを経由せずに、マスタとメインメモリとの間で直接伝送される。これにより、キャッシュメモリとマスタとの間にリードデータ及びライトデータを伝送するためのバスを形成する必要がないので、メモリシステムの面積を削減できるとともに、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００６６】
まず、本発明の実施の形態に係るキャッシュメモリを含むメモリシステムの構成を説明する。
【００６７】
図１は、本発明の実施の形態に係るメモリシステムの構成を示す図である。
【００６８】
図１に示すメモリシステム２００は、２個のＣＰＵ２０１と、Ｌ２（レベル２）キャッシュ２０２と、メモリコントローラ２０３と、メモリ２０４と、２個のＤＭＡＣ２０５と、バス制御部２０６とを含む。また、複数のＣＰＵ２０１は、それぞれＬ１（レベル１）キャッシュ２０７を備える。
【００６９】
Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、メモリ２０４に比べ、高速であるが容量が少ないキャッシュメモリである。例えば、Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、ＳＲＡＭである。なお、Ｌ１キャッシュ２０７は、Ｌ２キャッシュ２０２よりＣＰＵ２０１の近くに配置されればよく、ＣＰＵ２０１の外に配置されてもよい。
【００７０】
このＬ１キャッシュ２０７及びＬ２キャッシュ２０２は、ＣＰＵ２０１がメモリ２０４から読み出したデータの一部、及び、メモリ２０４に書き込むデータの一部を記憶する、所謂キャッシュ動作を行う。ここでキャッシュ動作とは、ＣＰＵ２０１からメモリ２０４へのアクセスが発生した場合、Ｌ２キャッシュ２０２が、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（ヒット）、当該格納しているデータをＣＰＵ２０１に出力する（リード時）、又は、当該データを更新する（ライト時）動作である。また、Ｌ２キャッシュ２０２は、当該アクセス先のアドレスのデータを格納していない場合（キャッシュミス）、ＣＰＵ２０１から出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメモリ２０４から読み出したうえで格納するとともに、読み出したデータをＣＰＵ２０１に出力する（リード時）。
【００７１】
また、キャッシュミスの場合には、Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、当該Ｌ１キャッシュ２０７又はＬ２キャッシュ２０２内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。
【００７２】
また、Ｌ２キャッシュ２０２は、２個のＣＰＵ２０１で共通に用いられる。
【００７３】
メモリコントローラ２０３は、Ｌ２キャッシュからメモリ２０４へのアクセス、及び複数のＤＭＡＣ２０５それぞれからのメモリ２０４へのアクセスを調停する、メモリ２０４のインターフェースである。
【００７４】
メモリ２０４は、ＳＤＲＡＭ等の大容量のメインメモリである。
【００７５】
ＤＭＡＣ２０５は、外部の機器（外部デバイス及び外部メモリ等）と、メモリ２０４との間のデータ転送を行うマスタである。
【００７６】
バス制御部２０６は、ＤＭＡＣ２０５により出力されたコマンドをＬ２キャッシュ２０２又はメモリコントローラ２０３に出力する。また、バス制御部２０６は、Ｌ２キャッシュ２０２により出力されたコマンドをメモリコントローラ２０３に出力する。また、バス制御部２０６は、ＤＭＡＣ２０５により出力されたライトデータを、Ｌ２キャッシュ２０２を経由せずに、メモリコントローラ２０３に出力し、メモリコントローラ２０３により出力されたリードデータを、Ｌ２キャッシュ２０２を経由せずに、ＤＭＡＣ２０５に出力する。
【００７７】
ここで、コマンドとは、データ書き込み又はデータ読み出しを指定する情報と、アクセス先のアドレスを示す情報とを含む。また、ライトデータとは、メモリ２０４に書き込むデータであり、リードデータとは、メモリ２０４から読み出したデータ、又は、Ｌ２キャッシュ２０２に格納されていたデータである。また、データ書き込みを指示するコマンドをライトコマンド、データ読み出しを指示するコマンドをリードコマンドと呼ぶ。また、ラインコマンド及びリードコマンドを共に称して、単に「コマンド」と記す。
【００７８】
また、図１に示す各構成要素は、典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。また、各構成要素が、複数のチップで実現されてもよい。
【００７９】
以下では、Ｌ２キャッシュ２０２に本発明に係るキャッシュメモリを適用した例について説明する。
【００８０】
図２は、Ｌ２キャッシュ２０２の機能構成を示すブロック図である。
【００８１】
図２に示すように、Ｌ２キャッシュ２０２は、制御部３８と、キャッシュ格納部７０と、ヒット判定部７１と、第１ポート２１１と、第２ポート２１２と、第３ポート２１３と、第４ポート２１４とを備える。
【００８２】
第１ポート２１１は、ＣＰＵ２０１と接続され、ＣＰＵ２０１から出力されたコマンド及びライトデータが入力され、ＣＰＵ２０１へリードデータを出力する。
【００８３】
第２ポート２１２は、メモリコントローラ２０３と接続され、メモリコントローラ２０３により出力されたリードデータが入力され、メモリコントローラ２０３へコマンド及びライトデータを出力する。言い換えると、第２ポート２１２は、メモリ２０４によりリードデータが入力され、メモリ２０４へコマンド及びライトデータを出力する。
【００８４】
第３ポート２１３は、バス制御部２０６と接続され、バス制御部２０６により出力されたコマンドが入力される。言い換えると、第３ポート２１３は、ＤＭＡＣ２０５により出力されたコマンドが入力される。
【００８５】
第４ポート２１４は、バス制御部２０６と接続され、バス制御部２０６へコマンドを出力する。言い換えると、第４ポート２１４は、メモリ２０４へコマンドを出力する。
【００８６】
キャッシュ格納部７０は、ＣＰＵ２０１からアクセスがあった、メモリ２０４に格納されるデータを格納する。
【００８７】
ヒット判定部７１は、ＣＰＵ２０１及びＤＭＡＣ２０５からコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか（ヒット）、格納していないか（キャッシュミス）を判定する。
【００８８】
制御部３８は、Ｌ２キャッシュ２０２全体の制御を行う。具体的には、ＣＰＵ２０１がメモリ２０４から読み出したデータの一部、及び、メモリ２０４に書き込むデータの一部を記憶する、所謂キャッシュ動作を制御する。また、制御部３８は、ＣＰＵ２０１からのアクセスであるか、ＤＭＡＣ２０５からのアクセスであるかに応じて、異なる処理を行う。
【００８９】
この制御部３８は、ＣＰＵ２０１からのアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵアクセス制御部６０と、ＤＭＡＣ２０５からのアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣアクセス制御部６３とを備える。
【００９０】
ＣＰＵアクセス制御部６０は、ＣＰＵ２０１からのリードアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵリード制御部６１と、ＣＰＵ２０１からのライトアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵライト制御部６２とを備える。
【００９１】
ＣＰＵリード制御部６１は、メモリ２０４へのリードコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７０によりヒットと判定された場合、ヒットしたデータを、第１ポート２１１からＣＰＵ２０１に出力する。また、ＣＰＵリード制御部６１は、メモリ２０４へのリードコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７０によりキャッシュミスと判定された場合、入力されたリードコマンドで指定されるアドレスのデータを、第２ポート２１２を介してメモリ２０４から読み出し、当該読み出したデータをキャッシュ格納部７０に格納するとともに、当該読み出したデータを第１ポート２１１からＣＰＵ２０１に出力する。
【００９２】
ＣＰＵライト制御部６２は、メモリへ２０４のライトコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータを、ＣＰＵ２０１から入力されたライトデータに更新する。また、ＣＰＵライト制御部６２は、メモリ２０４へのライトコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、キャッシュ格納部７０に新たにライトデータを格納する。また、ＣＰＵライト制御部６２は、キャッシュ格納部７０が格納するデータをメモリ２０４に書き込むためのライトコマンド及びライトデータを第２ポート２１２からメモリ２０４に出力する。つまり、ＣＰＵライト制御部６２は、ＣＰＵ２０１からの指示、又は所定のタイミングで、更新したライトデータを、メモリ２０４に書き戻す（ライトバックする）。
【００９３】
ＤＭＡＣアクセス制御部６３は、コマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータと、メモリ２０４に格納されているデータとのコヒーレンシを保つための処理を行うとともに、第３ポート２１３に入力されたコマンドをＤＭＡＣ２０５から出力されたコマンドとして、第４ポート２１４からメモリ２０４に出力する。また、ＤＭＡＣアクセス制御部６３は、コマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたコマンドをＤＭＡＣ２０５から出力されたコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９４】
このＤＭＡＣアクセス制御部６３は、ＤＭＡＣ２０５からのリードアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣリード制御部６４と、ＤＭＡＣ２０５からのライトアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣライト制御部６５とを備える。
【００９５】
ＤＭＡＣリード制御部６４は、メモリ２０４へのリードコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７０によりヒットと判定された場合、ヒットしたデータを、第２ポート２１２を介してメモリ２０４にライトバックし、当該ライトバックが完了した後に、第３ポート２１３に入力されたリードコマンドをＤＭＡＣ２０５から出力されたリードコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９６】
また、ＤＭＡＣリード制御部６４は、メモリ２０４へのリードコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたリードコマンドをＤＭＡＣ２０５から出力されたリードコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９７】
ＤＭＡＣライト制御部６５は、メモリ２０４へのライトコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータを無効化するとともに、第３ポート２１３に入力されたライトコマンドをＤＭＡＣ２０５から出力されたライトコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９８】
また、ＤＭＡＣライト制御部６５は、メモリ２０４へのライトコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたライトコマンドをＤＭＡＣ２０５から出力されたライトコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９９】
図３は、キャッシュ格納部７０及びヒット判定部７１の構成例を示すブロック図である。また、Ｌ２キャッシュ２０２の具体例として、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。図３に示すようにキャッシュ格納部７０は、デコーダ３０と、４つのウェイ３１ａ〜３１ｄとを備える。なお、４つのウェイ３１ａ〜３１ｄを特に区別しない場合には、ウェイ３１と記す。
【０１００】
また、ヒット判定部７１は、４つの比較器３２ａ〜３２ｄと、４つのアンド回路３３ａ〜３３ｄと、オア回路３４とを備える。また、Ｌ２キャッシュ２０２は、さらに、アドレスレジスタ２０と、メモリＩ／Ｆ２１と、セレクタ３５及び３６と、デマルチプレクサ３７を備える。
【０１０１】
アドレスレジスタ２０は、メモリ２０４へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは３２ビットであるものとする。図３に示すように、アクセスアドレスは、最上位ビットから順に、２１ビットのタグアドレス５１と、４ビットのセットインデックス（ＳＩ）５２と、５ビットのワードインデックス（ＷＩ）５３とを含む。
【０１０２】
ここで、タグアドレス５１は、ウェイ３１にマッピングされるメモリ２０４中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、タグアドレス５１よりも下位のアドレスビット（Ａ１０〜Ａ０）で定まるサイズつまり２ｋバイトであり、１つのウェイ３１のサイズでもある。
【０１０３】
セットインデックス５２はウェイ３１ａ〜３１ｂに跨る複数セットの１つを指す。このセット数は、セットインデックス５２が４ビットなので１６セットある。タグアドレス５１及びセットインデックス５２で特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックス５２よりも下位のアドレスビット（Ａ６〜Ａ０）で定まるサイズつまり１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。
【０１０４】
ワードインデックス（ＷＩ）５３は、ラインデータを構成する複数ワード中の１ワードを指す。また、アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【０１０５】
メモリＩ／Ｆ２１は、Ｌ２キャッシュ２０２からメモリ２０４をアクセスするためのインターフェースである。具体的には、メモリＩ／Ｆ２１は、Ｌ２キャッシュ２０２からメモリ２０４へのデータのライトバック、及びメモリ２０４からＬ２キャッシュ２０２へのデータのロード等を行う。
【０１０６】
デコーダ３０は、セットインデックス５２の４ビットをデコードし、４つのウェイ３１ａ〜３１ｄに跨る１６セット中の１つを選択する。
【０１０７】
４つのウェイ３１ａ〜３１ｄは、同じ構成を有し、各ウェイ３１は、２ｋバイトの容量を有する。
【０１０８】
図４は、ウェイ３１の構成を示す図である。図４に示すように、各ウェイ３１は、１６個のキャッシュエントリ４０を有する。各キャッシュエントリ４０は、２１ビットのタグ４１と、バリッドフラグ４２と、ダーティフラグ４３と、１２８バイトのラインデータ４４とを有する。
【０１０９】
タグ４１は、メモリ２０４上のアドレスの一部であり、２１ビットのタグアドレス５１のコピーである。
【０１１０】
ラインデータ４４は、タグアドレス５１及びセットインデックス５２により特定されるブロック中の１２８バイトデータのコピーである。
【０１１１】
バリッドフラグ４２は、当該キャッシュエントリ４０のデータが有効か否かを示す。例えば、データが有効な場合、バリッドフラグ４２は「１」であり、データが無効な場合、バリッドフラグ４２は「０」である。また、バリッドフラグ４２を「０」にすることを、データを無効化するとも言う。
【０１１２】
ダーティフラグ４３は、当該キャッシュエントリ４０にＣＰＵ２０１から書き込みがあったか否か、つまりラインデータ４４が更新されている状態であるか否かを示す。言い換えると、ダーティフラグ４３は、当該キャッシュエントリ４０中にキャッシュされたラインデータ４４が存在するが、ＣＰＵ２０１からの書き込みにより当該ラインデータ４４がメモリ２０４中のデータと異なるため、当該ラインデータ４４をメモリ２０４に書き戻すことが必要であるか否かを示す。例えば、ラインデータ４４が更新されている場合、ダーティフラグ４３は「１」であり、ラインデータ４４が更新されていない場合、ダーティフラグ４３は「０」である。また、ダーティフラグ４３を「１」にすることを、ダーティフラグをセットするとも言う。また、ダーティフラグ４３が「１」の場合を、当該データがダーティであるとも言う。
【０１１３】
比較器３２ａは、アドレスレジスタ２０中のタグアドレス５１と、セットインデックス５２により選択されたセットに含まれる４つのタグ４１中のウェイ３１ａのタグ４１とが一致するか否かを比較する。比較器３２ｂ〜３２ｃについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。
【０１１４】
アンド回路３３ａは、バリッドフラグ４２と比較器３２ａの比較結果とが一致するか否かを比較する。この比較結果をｈ０とする。比較結果ｈ０が「１」である場合は、アドレスレジスタ２０中のタグアドレス５１及びセットインデックス５２に対応するラインデータ４４が存在すること、つまりウェイ３１ａにおいてヒットしたことを意味する。また、比較結果ｈ０が「０」である場合は、キャッシュミスしたことを意味する。アンド回路３３ｂ〜３３ｄについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。つまり、その比較結果ｈ１〜ｈ３は、ウェイ３１ｂ〜３１ｄでヒットしたかミスしたかを意味する。
【０１１５】
オア回路３４は、比較結果ｈ０〜ｈ３のオアをとる。このオアの結果をｈｉｔとする。ｈｉｔは、キャッシュメモリにヒットしたか否かを示す。
【０１１６】
セレクタ３５は、選択されたセットにおけるウェイ３１ａ〜３１ｄのラインデータ４４のうち、ヒットしたウェイ３１のラインデータ４４を選択する。
【０１１７】
セレクタ３６は、セレクタ３５により選択された３２ワードのラインデータ４４にうち、ワードインデックス５３で示される１ワードを選択する。
【０１１８】
デマルチプレクサ３７は、キャッシュエントリ４０にデータを書き込む際に、ウェイ３１ａ〜３１ｄの１つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
【０１１９】
図５は、バス制御部２０６の構成及び接続関係を示す図である。なお、説明の簡単化のため、以下、ＣＰＵ２０１が１個の場合を例に説明する。
【０１２０】
図５に示すように、バス制御部２０６は、２個の第１ポート２２１と、２個の第２ポート２２２と、第３ポート２２３と、第４ポート２２４と、調停部２２５と、２個の選択部２２６とを備える。
【０１２１】
第１ポート２２１、第２ポート２２２及び選択部２２６は、ＤＭＡＣ２０５ごとに設けられる。第１ポート２２１は、対応するＤＭＡＣ２０５に接続され、対応するＤＭＡＣ２０５から出力されたコマンド及びライトデータが入力され、対応するＤＭＡＣ２０５へリードデータを出力する。
【０１２２】
第２ポート２２２は、メモリコントローラ２０３と接続され、メモリコントローラ２０３により出力されたリードデータが入力され、メモリコントローラ２０３へコマンド及びライトデータを出力する。
【０１２３】
第３ポート２２３は、Ｌ２キャッシュ２０２の第３ポート２１３と接続され、Ｌ２キャッシュ２０２へコマンドを出力する。
【０１２４】
第４ポート２２４は、Ｌ２キャッシュ２０２の第４ポート２１４と接続され、Ｌ２キャッシュ２０２により出力されたコマンドが入力される。
【０１２５】
調停部２２５は、複数の第１ポート２２１に入力されたコマンドを調停し、調停したコマンドを第３ポート２２３に出力する。つまり、調停部２２５は、複数の第１ポート２２１のいずれかにコマンドが入力された場合には、当該入力されたコマンドを選択し、選択したコマンドを第３ポート２２３に出力する。また、調停部２２５は、複数の第１ポート２２１に同時にコマンドが入力された場合、予め定められた優先度に従って、いずれかのコマンドを選択し、選択したコマンドを第３ポート２２３に出力する。
【０１２６】
選択部２２６は、対応する第１ポート２２１に入力されたコマンド、及び第４ポートに入力されたコマンドのうち一方を選択し、選択したコマンドを対応する第２ポート２２２に出力する。つまり、選択部２２６は、ＤＭＡＣリード制御部６４により出力されたコマンドと、ＤＭＡＣ２０５により出力されたコマンドとのうち一方を選択し、選択したコマンドをメモリ２０４に出力する。具体的には、選択部２２６は、通常モード時には、第４ポート２２４に入力されたコマンドを選択し、バイパスモード時には、第１ポート２２１に入力されたコマンドを選択する。なお、以下、特段の記載がない限り、通常モードについての説明である。
【０１２７】
ここで、通常モードとは、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由して、メモリ２０４にアクセスするモードである。また、バイパスモードとは、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずに、直接メモリ２０４にアクセスするモードである。
【０１２８】
また、ＣＰＵ２０１とＤＭＡＣ２０５とが、メモリ２０４の同じアドレスのデータを使用する場合には通常モードが選択され、ＤＭＡＣ２０５とＣＰＵ２０１とが同じアドレスのデータを使用しない場合、つまり、特別な制御を行わなくてもコヒーレンシが保てる場合に、バイパスモードが選択される。また、通常モードとバイパスモードとの切り替えは、ＣＰＵ２０１等により行われる。
【０１２９】
また、選択部２２６は、通常モードにおいて、第４ポート２２４に入力されたコマンドが、対応するＤＭＡＣ２０５から出力されたコマンドに応じて、Ｌ２キャッシュ２０２が出力したコマンドである場合は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力し、対応しない他のＤＭＡＣ２０５から出力されたコマンドに応じて、Ｌ２キャッシュ２０２が出力したコマンドである場合は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力しない。
【０１３０】
具体的には、Ｌ２キャッシュ２０２が出力するコマンドに、当該コマンドが２個のＤＭＡＣ２０５のうちいずれから出力されたコマンドであるかを示す情報が含まれ、当該情報に応じて選択部２２６は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力する、又は出力しないを決定する。
【０１３１】
また、第１ポート２２１に入力されたライトデータは、対応する第２ポート２２２に直接出力され、第２ポート２２２に入力されたリードデータは、対応する第１ポート２２１に直接出力される。
【０１３２】
また、図５に示すように、メモリコントローラ２０３は、第１ポート２３１と、２個の第２ポート２３２とを備える。第１ポート２３１はＬ２キャッシュ２０２に対応し、２個の第２ポート２３２は、それぞれ２個のＤＭＡＣ２０５と一対一に対応する。
【０１３３】
第１ポート２３１は、ＣＰＵリード制御部６１により出力されたリードコマンドと、ＣＰＵライト制御部６２により出力されたライトコマンド及びライトデータとが入力される。また、第１ポート２３１は、メモリ２０４から出力されたリードデータをＬ２キャッシュ２０２に出力する。具体的には、第１ポート２３１は、Ｌ２キャッシュ２０２の第２ポート２１２と接続される。
【０１３４】
第２ポート２３２は、バス制御部２０６の第２ポート２２２ごとに設けられ、対応する第２ポート２２２と接続される。この第２ポート２３２は、バス制御部２０６の対応する第２ポート２２２からから出力されたコマンド及びライトデータが入力され、対応する第２ポート２２２へ、メモリ２０４から出力されたリードデータを出力する。
【０１３５】
具体的には、通常モード時においては、第２ポート２３２に、ＤＭＡＣリード制御部６４により出力されたリードコマンドと、ＤＭＡＣライト制御部６５により出力されたライトコマンドとが入力される。また、バイパスモード時においては、第２ポート２３２に、対応するＤＭＡＣ２０５により出力されたリードコマンド及びライトコマンドが入力される。また、通常モード時及びバイパスモード時の両方において、第２ポート２３２は、対応するＤＭＡＣ２０５により出力されたライトデータが入力され、リードコマンドに応じてメモリ２０４から出力されたリードデータを対応するＤＭＡＣ２０５へ出力する。
【０１３６】
ここで、メモリコントローラ２０３は、第１ポート２３１及び２個の第２ポート２３２に入力されたコマンド（リードコマンド及びライトコマンド）を、当該コマンドが、第１ポート２３１及び２個の第２ポート２３２のうちいずれに入力されたコマンドであるかに応じて調停する。具体的には、各ポートには、帯域（バンド幅）が割り当てられており、メモリコントローラ２０３は、当該帯域が満たされるように、調停を行う。例えば、第１ポート２３１及び２個の第２ポート２３２に２：１：１で帯域が割り当てられている場合には、メモリコントローラ２０３は、第１ポートに入力されたコマンドを２回実行するごとに、各第２ポート２３２に入力されたコマンドを１回ずつ実行する。
【０１３７】
次に、本発明の実施の形態に係るメモリシステム２００の動作を説明する。
【０１３８】
以下、ＤＭＡＣ２０５からメモリ２０４へのアクセスが発生した際の動作を説明する。
【０１３９】
図６は、Ｌ２キャッシュ２０２からアクセスが発生した際の、メモリシステム２００の動作の概略を示す図である。
【０１４０】
図６に示すように、リード時、かつヒット（以下、リードヒット）の場合には、Ｌ２キャッシュ２０２は、ヒットしたデータをライトバックする。その後、メモリ２０４のデータが読み出され、ＤＭＡＣ２０５へ送られる。
【０１４１】
また、リード時、かつキャッシュミス（以下、リードミス）の場合には、メモリ２０４のデータが読み出され、ＤＭＡＣ２０５へ送られる。
【０１４２】
また、ライト時、かつヒット（以下、ライトヒット）の場合には、Ｌ２キャッシュ２０２は、ヒットしたデータを無効化する。また、メモリ２０４へライトデータが書き込まれる。
【０１４３】
また、ライト時、かつキャッシュミス（以下、ライトミス）の場合には、メモリ２０４へライトデータが書き込まれる。
【０１４４】
以下、各動作を個別に説明する。まず、リードヒット時の動作を説明する。
【０１４５】
図７は、メモリシステム２００におけるリードヒット時の動作の流れを示す図である。
【０１４６】
図７に示すように、まず、ＤＭＡＣ２０５は、リードコマンドをＬ２キャッシュ２０２に出力する（Ｓ１０１）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にリードコマンドを出力する。バス制御部２０６の第１ポート２２１に入力されたリードコマンドは、調停部２２５及び第３ポート２２３を順次経由して、Ｌ２キャッシュ２０２の第３ポート２１３に入力される。
【０１４７】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納している（ヒット）と判定する（Ｓ１０２）。
【０１４８】
次に、Ｌ２キャッシュ２０２のＤＭＡＣリード制御部６４は、ヒットしたデータをライトバックする（Ｓ１０３）。つまり、ＤＭＡＣリード制御部６４は、ヒットしたデータをメモリ２０４に書き戻す。
【０１４９】
ライトバックが完了した後、ＤＭＡＣリード制御部６４は、メモリ２０４にリードコマンドを出力する（Ｓ１０４）。具体的には、ＤＭＡＣリード制御部６４は、第４ポート２１４にリードコマンドを出力する。また、このリードコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１５０】
第４ポート２１４に出力されたリードコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。メモリコントローラ２０３は、第２ポート２３２に入力されたリードコマンドをメモリ２０４に出力する。
【０１５１】
リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスに格納しているリードデータを、Ｌ２キャッシュ２０２を経由せずに、直接ＤＭＡＣ２０５に出力する（Ｓ１０５）。具体的には、メモリ２０４はリードデータをメモリコントローラ２０３に出力し、メモリコントローラ２０３は、メモリ２０４により出力されたリードデータを、リードコマンドが入力された第２ポート２３２に出力する。当該第２ポート２３２に出力されたリードデータは、バス制御部２０６の第２ポート２２２及び第１ポート２２１を順次介して、ＤＭＡＣ２０５に出力される。
【０１５２】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてリードヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータをライトバックした後、メモリ２０４からデータを読み出す。
【０１５３】
これにより、Ｌ２キャッシュ２０２のデータがＣＰＵ２０１により更新されたことにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータと一致しない場合でも、ＤＭＡＣ２０５は、正しいデータ（更新された後のデータ）を読み出せる。つまり、ＣＰＵ２０１は、書き込み処理を行った後にパージ（ライトバック）処理をＬ２キャッシュ２０２に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム２００は、ＣＰＵ２０１によりパージ処理を削減できるので、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０１５４】
さらに、Ｌ２キャッシュ２０２は、ライトバックが完了した後に、第４ポート２１４にリードコマンドを出力する。これにより、ライトバックの完了前に、メモリ２０４からデータが読み出されることを防止できる。
【０１５５】
次に、リードミス時の動作を説明する。
【０１５６】
図８は、メモリシステム２００におけるリードミス時の動作の流れを示す図である。
【０１５７】
図８に示すように、まず、ＤＭＡＣ２０５は、リードコマンドをＬ２キャッシュ２０２に出力する（Ｓ１１１）。なお、ステップＳ１１１、Ｓ１１４及びＳ１１５の動作は、図７に示すＳ１０１、Ｓ１０４及びＳ１０５と同様であり、詳細な説明は省略する。
【０１５８】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納していない（キャッシュミス）と判定する（Ｓ１１２）。
【０１５９】
次に、Ｌ２キャッシュ２０２のＤＭＡＣリード制御部６４は、メモリ２０４にリードコマンドを出力する（Ｓ１１４）。具体的には、ＤＭＡＣリード制御部６４は、第４ポート２１４にリードコマンドを出力する。また、このリードコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１６０】
第４ポート２１４に出力されたリードコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。メモリコントローラ２０３は、第２ポート２３２に入力されたリードコマンドをメモリ２０４に出力する。
【０１６１】
リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスのリードデータをＤＭＡＣ２０５に出力する（Ｓ１１５）。
【０１６２】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてリードミスした場合には、メモリ２０４からデータを読み出す。
【０１６３】
このように、本発明の実施の形態に係るＬ２キャッシュ２０２は、Ｌ２キャッシュ２０２は、リードヒット時の場合でも、ヒットしたデータをＤＭＡＣ２０５に出力しない。つまり、ＤＭＡＣ２０５からのリードアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、メモリ２０４により出力されるリードデータは、Ｌ２キャッシュ２０２を経由せずに直接、ＤＭＡＣ２０５に出力される。これにより、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間に、リードデータを伝送するためのバスを形成する必要がない。つまり、図５に示すように、Ｌ２キャッシュ２０２の第３ポート２１３にはリードコマンドのみを入力し、第３ポート２１３からはリードコマンドのみを出力すればよい。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。
【０１６４】
さらに、リードデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０１６５】
また、Ｌ２キャッシュ２０２が第４ポート２１４に出力したリードコマンドは、メモリコントローラ２０３の、リードコマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該リードコマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。一方、Ｌ２キャッシュ２０２がリードコマンドをメモリコントローラ２０３の第１ポート２３１に出力した場合には、当該リードコマンドは、Ｌ２キャッシュ２０２（ＣＰＵ２０１）により発行されたものとして扱われ、Ｌ２キャッシュ２０２に割り当てられた帯域を使用することになる。
【０１６６】
このように、ＤＭＡＣリード制御部６４により出力されたコマンドを、ＤＭＡＣ２０５に対応する第２ポート２３２に入力することにより、ＤＭＡＣ２０５から出力されたコマンドがＬ２キャッシュ２０２を経由してメモリ２０４に送られる場合であっても、メモリコントローラ２０３は、第１ポート２３１にＣＰＵ２０１に対するバンド幅を割り当て、第２ポート２３２にＤＭＡＣ２０５に対するバンド幅を割り当てるという容易な制御で、ＣＰＵ２０１及びＤＭＡＣ２０５に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。
【０１６７】
次に、ライトヒット時の動作を説明する。
【０１６８】
図９は、メモリシステム２００におけるライトヒット時の動作の流れを示す図である。
【０１６９】
図９に示すように、まず、ＤＭＡＣ２０５は、ライトコマンドをＬ２キャッシュ２０２に出力する（Ｓ１２１）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にライトコマンドを出力する。バス制御部２０６の第１ポート２２１に入力されたライトコマンドは、調停部２２５及び第３ポート２２３を順次経由して、Ｌ２キャッシュ２０２の第３ポート２１３に入力される。
【０１７０】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納している（ヒット）と判定する（Ｓ１２２）。
【０１７１】
次に、Ｌ２キャッシュ２０２のＤＭＡＣライト制御部６５は、ヒットしたデータを無効化する（Ｓ１２３）。具体的には、ＤＭＡＣライト制御部６５は、ヒットしたデータのバリッドフラグ４２を「０」に設定する。
【０１７２】
次に、ＤＭＡＣライト制御部６５は、メモリ２０４にライトコマンドを出力する（Ｓ１２４）。具体的には、ＤＭＡＣライト制御部６５は、第４ポート２１４にライトコマンドを出力する。また、このライトコマンドは、ステップＳ１２１でＤＭＡＣ２０５により出力されたライトコマンドと同じアドレスを指定するものである。
【０１７３】
第４ポート２１４に出力されたライトコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１７４】
一方、ＤＭＡＣ２０５は、ライトデータを、Ｌ２キャッシュ２０２を経由せずに、メモリ２０４に出力する（Ｓ１２５）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にライトデータを出力する。第１ポート２２１に入力されたライトデータは、第２ポート２２２を経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１７５】
メモリコントローラ２０３は、第２ポート２３２に入力されたライトコマンド及びライトデータをメモリ２０４に出力する。
【０１７６】
ライトコマンド及びライトデータを受けたメモリ２０４は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する（Ｓ１２６）。
【０１７７】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータを無効化するとともに、メモリ２０４にデータを書き込む。
【０１７８】
これにより、ＤＭＡＣ２０５によるライトにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータとが一致しなくなることを防止できる。つまり、Ｌ２キャッシュ２０２とメモリ２０４とのコヒーレンスを保つために、ＣＰＵ２０１及びＤＭＡＣは、特段の処理（パージ処理）を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム２００は、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０１７９】
次に、ライトミス時の動作を説明する。
【０１８０】
図１０は、メモリシステム２００におけるライトミス時の動作の流れを示す図である。
【０１８１】
図１０に示すように、まず、ＤＭＡＣ２０５は、ライトコマンドをＬ２キャッシュ２０２に出力する（Ｓ１３１）。なお、ステップＳ１３１、及びＳ１３４〜Ｓ１３６の動作は、図９に示すＳ１２１、及びＳ１２４〜Ｓ１２６と同様であり、詳細な説明は省略する。
【０１８２】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納していない（キャッシュミス）と判定する（Ｓ１３２）。
【０１８３】
次に、Ｌ２キャッシュ２０２のＤＭＡＣライト制御部６５は、メモリ２０４にライトコマンドを出力する（Ｓ１３４）。具体的には、ＤＭＡＣライト制御部６５は、第４ポート２１４にライトコマンドを出力する。また、このライトコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１８４】
第４ポート２１４に出力されたライトコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１８５】
一方、ＤＭＡＣ２０５は、ライトデータをメモリ２０４に出力する（Ｓ１３５）。
【０１８６】
ライトコマンド及びライトデータを受けたメモリ２０４は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する（Ｓ１３６）。
【０１８７】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトミスした場合には、メモリ２０４にライトデータが書き込まれる。
【０１８８】
このように、本発明の実施の形態に係るＬ２キャッシュ２０２は、ライトヒット時の場合でも、ライトデータを格納しない。つまり、ＤＭＡＣ２０５からのライトアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、ＤＭＡＣ２０５により出力されるライトデータは、Ｌ２キャッシュ２０２を経由せずに直接、メモリ２０４に出力される。これにより、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間に、ライトデータを伝送するためのバスを形成する必要がない。つまり、図５に示すように、Ｌ２キャッシュ２０２の第３ポート２１３にはライトコマンドのみを入力し、第３ポート２１３からはライトコマンドのみを出力すればよい。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。
【０１８９】
さらに、ライトデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０１９０】
また、Ｌ２キャッシュ２０２が第４ポート２１４に出力したライトコマンドは、メモリコントローラ２０３の、ライトコマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該ライトコマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。つまり、リードアクセス時と同様に、メモリコントローラ２０３は、第１ポート２３１にＣＰＵ２０１に対するバンド幅を割り当て、第２ポート２３２にＤＭＡＣ２０５に対するバンド幅を割り当てるという容易な制御で、ＣＰＵ２０１及びＤＭＡＣ２０５に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。
【０１９１】
次に、Ｌ２キャッシュ２０２の動作の流れを説明する。
【０１９２】
まず、リードアクセス時のＬ２キャッシュ２０２の動作を説明する。
【０１９３】
図１１は、リードコマンドが入力された際の、Ｌ２キャッシュ２０２の動作の流れを示すフローチャートである。
【０１９４】
図１１に示すように、ＤＭＡＣ２０５によりリードコマンドが発行された場合、つまり第３ポート２１３にリードコマンドが入力された場合（Ｓ２０１でＤＭＡＣ）、ヒット判定部７１は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２０２）。
【０１９５】
格納している場合（Ｓ２０２でヒット）、次に、ＤＭＡＣリード制御部６４は、ヒットしたデータがダーティであるか否か、つまりヒットしたデータが、ＣＰＵ２０１により更新されているか否かを判定する（Ｓ２０３）。具体的には、Ｌ２キャッシュ２０２は、ヒットしたデータのダーティフラグ４３が「１」の場合、ダーティであると判定し、当該ダーティフラグ４３が「０」の場合、ダーティでないと判定する。
【０１９６】
ダーティの場合（Ｓ２０３でＹｅｓ）、ＤＭＡＣリード制御部６４は、ヒットしたデータをライトバックする（Ｓ２０４）。
【０１９７】
ライトバックが完了した後、ＤＭＡＣリード制御部６４は、リードコマンドを第４ポート２１４に出力する（Ｓ２０５）。
【０１９８】
また、ダーティでない場合（Ｓ２０３でＮｏ）、又は、ステップＳ２０２でキャッシュミスの場合（Ｓ２０２でミス）、ＤＭＡＣリード制御部６４は、ライトバック（Ｓ２０４）を行わずに、リードコマンドを第４ポート２１４に出力する（Ｓ２０５）。
【０１９９】
一方、ＣＰＵ２０１によりリードコマンドが発行された場合、つまり第１ポート２１１にリードコマンドが入力された場合（Ｓ２０１でＣＰＵ）、ヒット判定部７１は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２０６）。
【０２００】
格納している場合（Ｓ２０６でヒット）、ＣＰＵリード制御部６１は、ヒットしたデータをリードデータとしてＣＰＵ２０１（第１ポート２１１）に出力する（Ｓ２０８）。
【０２０１】
一方、格納していない場合（Ｓ２０６でミス）、ＣＰＵリード制御部６１は、リードコマンドで指定されるアドレスのデータをメモリ２０４から読み出す（Ｓ２０７）。具体的には、ＣＰＵリード制御部６１は、ＣＰＵ２０１により入力されたリードコマンドと同じアドレスを指定するリードコマンドを第２ポート２１２に出力する。第２ポート２１２に出力されたリードコマンドは、メモリコントローラ２０３の第１ポート２３１を介して、メモリ２０４に出力される。リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスに格納するデータをリードデータとしてメモリコントローラ２０３に出力する。メモリコントローラ２０３は、メモリ２０４により出力されたリードデータを第１ポート２３１から、Ｌ２キャッシュ２０２の第２ポート２１２に出力する。
【０２０２】
ＣＰＵリード制御部６１は、第２ポート２１２に入力されたリードデータをキャッシュ格納部７０に格納するとともに、当該リードデータを第１ポート２１１からＣＰＵ２０１に出力する（Ｓ２０８）。
【０２０３】
次に、ライトアクセス時のＬ２キャッシュ２０２の動作を説明する。
【０２０４】
図１２は、ライトコマンドが入力された際の、Ｌ２キャッシュ２０２の動作の流れを示すフローチャートである。
【０２０５】
図１２に示すように、ＤＭＡＣ２０５によりライトコマンドが発行された場合、つまり第３ポート２１３にライトコマンドが入力された場合（Ｓ２１１でＤＭＡＣ）、ヒット判定部７１は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２１２）。
【０２０６】
格納している場合（Ｓ２１２でヒット）、次に、Ｌ２キャッシュ２０２は、ヒットしたデータを無効化する（Ｓ２１３）。具体的には、Ｌ２キャッシュ２０２は、ヒットしたデータのバリッドフラグ４２を「０」に設定する。
【０２０７】
次に、Ｌ２キャッシュ２０２は、ライトコマンドを第４ポート２１４に出力する（Ｓ２１４）。
【０２０８】
また、ステップＳ２１２でキャッシュミスの場合（Ｓ２１２でミス）、Ｌ２キャッシュ２０２は、無効化（Ｓ２１３）を行わずに、ライトコマンドを第４ポート２１４に出力する（Ｓ２１４）。
【０２０９】
一方、ＣＰＵ２０１によりライトコマンドが発行された場合、つまり第１ポート２１１にライトコマンド及びライトデータが入力された場合（Ｓ２１１でＣＰＵ）、ヒット判定部７１は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２１５）。
【０２１０】
格納している場合（Ｓ２１５でヒット）、ＣＰＵライト制御部６２は、ヒットしたデータを第１ポートに入力されたライトデータに更新する（Ｓ２１６）。具体的には、ＣＰＵライト制御部６２は、ヒットしたデータをライトデータに変更したうえで、ダーティフラグ４３をセットする。
【０２１１】
一方、格納していない場合（Ｓ２１５でミス）、ＣＰＵライト制御部６２は、ライン入れ替えを行う。つまり、ＣＰＵライト制御部６２は、新たなキャッシュエントリ４０を選択し、選択したキャッシュエントリ４０に、第１ポートに入力されたライトデータを格納する（Ｓ２１７）。また、ＣＰＵライト制御部６２は、当該ライトデータのダーティフラグをセットする。
【０２１２】
以上より、本発明の実施の形態に係るメモリシステム２００では、ＤＭＡＣ２０５からのアクセスにおいてリードヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータをライトバックした後、メモリ２０４からデータを読み出す。
【０２１３】
これにより、Ｌ２キャッシュ２０２のデータがＣＰＵ２０１により更新されたことにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータと一致しない場合でも、ＤＭＡＣ２０５は、正しいデータ（更新された後のデータ）を読み出せる。つまり、ＣＰＵ２０１は、書き込み処理を行った後にパージ（ライトバック）をＬ２キャッシュ２０２に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム２００は、ＣＰＵ２０１によりパージ処理を削減できるので、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０２１４】
また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータを無効化するとともに、メモリ２０４にデータを書き込む。
【０２１５】
これにより、ＤＭＡＣ２０５によるライトにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータとが一致しなくなることを防止できる。つまり、Ｌ２キャッシュ２０２とメモリ２０４とのコヒーレンスを保つために、ＣＰＵ２０１及びＤＭＡＣ２０５は、特段の処理（パージ処理）を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム２００は、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０２１６】
さらに、本発明の実施の形態に係るメモリシステム２００では、Ｌ２キャッシュ２０２は、ＤＭＡＣ２０５からのリードアクセスがヒットした場合でも、Ｌ２キャッシュ２０２が格納するデータをＤＭＡＣ２０５に出力しない。また、Ｌ２キャッシュ２０２は、ＤＭＡＣ２０５からのライトアクセスがヒットした場合でも、ＤＭＡＣ２０５から出力されたライトデータを格納しない。
【０２１７】
よって、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間にデータを伝送するためのバスを形成する必要がない。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。さらに、リードデータ及びライトデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０２１８】
また、本発明の実施の形態に係るメモリシステム２００では、Ｌ２キャッシュ２０２が第４ポート２１４に出力したコマンドは、メモリコントローラ２０３の、コマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該コマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。つまり、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。また、メモリ２０４へのアクセスにおける各マスタ（ＣＰＵ２０１及びＤＭＡＣ２０５）に対するバンド幅の割り当て制御を容易に実現できる。
【０２１９】
なお、上述したインターフェースの複雑化は、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されている場合に特に問題となる。言い換えると、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されている場合に、特に、有効である。
【０２２０】
例えば、リングバスを用いるメモリシステムでは、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されるので、本発明は、特に有効である。
【０２２１】
図１３は、本発明の実施の形態に係るメモリシステム２００の変形例であり、リングバスを用いるメモリシステム２１０の構成を示す図である。図１３に示すように、メモリシステム２１０は、リングバス２４１を備える。なお、図１と同様の要素には同一の符号を付しており説明は省略する。Ｌ２キャッシュ２０２、バス制御部２０６及びメモリコントローラ２０３は、リングバス２４１を経由して接続される。
【０２２２】
以上、本発明の実施の形態に係るキャッシュメモリについて説明したが、本発明は、この実施の形態に限定されるものではない。
【０２２３】
例えば、上記説明では、Ｌ２キャッシュ２０２及びＬ１キャッシュを備えるメモリシステムを例に説明したが、Ｌ１キャッシュのみを備えるメモリシステムに本発明を適用してもよい。
【０２２４】
なお、メモリシステムがレベル１キャッシュとレベルキャッシュとを有する場合には、レベル２キャッシュに本発明を適用することが好適である。なぜなら、レベル２キャッシュがメモリシステム全体に与える影響は、レベル１キャッシュに比べ低い。具体的には、レベル１キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル１キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル１キャッシュへのアクセスに悪影響が出てしまう。よって、レベル２キャッシュに本発明に係るキャッシュメモリを適用することで、レベル１キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
【０２２５】
また、レベル３キャッシュ以上を備えるメモリシステムに本発明を適用してもよい。この場合、上述した理由により最大レベルのキャッシュに本発明のキャッシュメモリを適用することが好ましい。
【０２２６】
また、図１において、２個のＣＰＵ２０１と、２個のＤＭＡＣ２０５とを示しているが、ＣＰＵ２０１及びＤＭＡＣ２０５の数は、１個又は３個以上であってもよい。また、ＤＭＡＣ２０５以外のマスタが含まれてもよい。
【０２２７】
なお、図１に示すように、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１により共用されるＬ２キャッシュ２０２に本発明に係るキャッシュメモリを適用することは、特に好適である。
【０２２８】
なぜなら、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１によりＬ２キャッシュ２０２が共用される場合、複数のＬ１キャッシュ２０７と、共用されているＬ２キャッシュ２０２との間のコヒーレンシを保つために、複数のＣＰＵ２０１は、スヌープ方式等のアルゴリズムに基づいた制御を行っている。よって、この制御に加え、Ｌ２キャッシュ２０２とメモリ２０４との間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをＬ２キャッシュ２０２に適用することで、Ｌ２キャッシュ２０２とメモリ２０４との間のコヒーレンスを保つための処理（パージ処理）を削減できるので、上記制御の複雑化を回避できる。このように、本発明に係るキャッシュメモリは、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１により共用されるＬ２キャッシュ２０２に適用することが、特に好適である。
【０２２９】
また、上記説明は、Ｌ２キャッシュ２０２が４ウェイ・セット・アソシエイティブ方式のキャッシュメモリの場合を例に説明したが、ウェイ３１の数は４個以外でもよい。
【０２３０】
さらに、フルアソシエイティブ方式のキャッシュメモリ、又は、ダイレクトマップ方式のキャッシュメモリに本発明を適用してもよい。
【産業上の利用可能性】
【０２３１】
本発明は、キャッシュメモリ及びキャッシュメモリを備えるメモリシステムに適用できる。
【符号の説明】
【０２３２】
２０  アドレスレジスタ
２１  メモリＩ／Ｆ
３０  デコーダ
３１、３１ａ、３１ｂ、３１ｃ、３１ｄ  ウェイ
３２ａ、３２ｂ、３２ｃ、３２ｄ  比較器
３３ａ、３３ｂ、３３ｃ、３３ｄ  アンド回路
３４  オア回路
３５、３６  セレクタ
３７  デマルチプレクサ
３８  制御部
４０  キャッシュエントリ
４１  タグ
４２  バリッドフラグ
４３  ダーティフラグ
４４  ラインデータ
５１  タグアドレス
５２  セットインデックス
５３  ワードインデックス
６０  ＣＰＵアクセス制御部
６１  ＣＰＵリード制御部
６２  ＣＰＵライト制御部
６３  ＤＭＡＣアクセス制御部
６４  ＤＭＡＣリード制御部
６５  ＤＭＡＣライト制御部
７０  キャッシュ格納部
７１  ヒット判定部
１００、１１０、２００、２１０  メモリシステム
１０１、２０１  ＣＰＵ
１０２  キャッシュメモリ
１０３、２０３  メモリコントローラ
１０４、２０４  メモリ
１０５、２０５  ＤＭＡＣ
１０６  バス
２０２  Ｌ２キャッシュ
２０６  バス制御部
２０７  Ｌ１キャッシュ
２１１、２２１、２３１  第１ポート
２１２、２２２、２３２  第２ポート
２１３、２２３  第３ポート
２１４、２２４  第４ポート
２２５  調停部
２２６  選択部
２４１  リングバス
【図１】
2010035425.tif 000003
【図２】
2010035425.tif 000004
【図３】
2010035425.tif 000005
【図４】
2010035425.tif 000006
【図５】
2010035425.tif 000007
【図６】
2010035425.tif 000008
【図７】
2010035425.tif 000009
【図８】
2010035425.tif 000010
【図９】
2010035425.tif 000011
【図１０】
2010035425.tif 000012
【図１１】
2010035425.tif 000013
【図１２】
2010035425.tif 000014
【図１３】
2010035425.tif 000015
【図１４】
2010035425.tif 000016
【図１５】
2010035425.tif 000017
【図１６】
2010035425.tif 000018
【手続補正書】
【提出日】平成22年12月27日(2010.12.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ、メモリシステム及びその制御方法に関し、特に、プロセッサからのアクセスに応じて、メインメモリに格納されるデータの一部を格納するキャッシュメモリ、及び当該キャッシュメモリを含むメモリシステムに関する。
【背景技術】
【０００２】
近年のメモリシステムでは、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、又はその近傍に配置している。このようなメモリシステムでは、マイクロプロセッサがメインメモリから読み出したデータの一部、及び、メインメモリに書き込むデータの一部を、キャッシュメモリが記憶する（キャッシュする）ことによって、マイクロプロセッサのメモリアクセスを高速化させている。
【０００３】
図１４は、従来のメモリシステム１００の構成を示す図である。図１４に示すメモリシステム１００は、ＣＰＵ１０１と、キャッシュメモリ１０２と、メモリコントローラ１０３と、メインメモリであるメモリ１０４と、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１０５とを備える。
【０００４】
キャッシュメモリ１０２は、ＣＰＵ１０１からメモリ１０４へのアクセスが発生した場合、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（以下ヒット）、当該格納しているデータをＣＰＵ１０１に出力する（リード時）、又は、当該データを更新する（ライト時）。また、キャッシュメモリ１０２は、当該アクセス先のアドレスのデータを格納していない場合（以下キャッシュミス）、ＣＰＵ１０１から出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメモリ１０４から読み出したうえで格納するとともに、読み出したデータをＣＰＵ１０１に出力する（リード時）。
【０００５】
また、キャッシュミスの場合には、キャッシュメモリ１０２は、当該キャッシュメモリ１０２内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。
【０００６】
ここで、従来のメモリシステム１００では、ライト時には一時的にキャッシュメモリ１０２にライトデータが格納される。これにより、メモリ１０４に格納されているデータと、キャッシュメモリ１０２に格納されているデータが異なるという状態が発生する。つまり、この状態で、ＤＭＡＣ１０５がメモリ１０４にアクセスした場合、ＣＰＵ１０１とＤＭＡＣ１０５とでデータの一貫性（コヒーレンシ）を保てないという問題が生じる。
【０００７】
このコヒーレンシを保つために、ＣＰＵ１０１は、キャッシュメモリ１０２に書き込みを行った後に、ライトバック（パージ）をキャッシュメモリ１０２に指示する必要がある。しかしながら、ＣＰＵ１０１は、このパージ処理が完了するまで、次の処理を行うことができない。つまり、ＣＰＵ１０１の処理性能が低下するという問題が生じる。
【０００８】
さらに、レベル２キャッシュを備えるメモリシステムでは、レベル１キャッシュ及びレベル２キャッシュに対して、このパージ処理を行う必要があるので、ＣＰＵ１０１の処理性能の低下はさらに大きくなる。
【０００９】
この問題に対して、キャッシュメモリ１０２を、ＣＰＵ１０１とＤＭＡＣ１０５とで共用する方法が知られている（例えば、特許文献１参照）。
【００１０】
以下、キャッシュメモリ１０２を共用する従来のメモリシステム１１０について説明する。
【００１１】
図１５は、キャッシュメモリ１０２を共用する従来のメモリシステム１１０の構成を示す図である。
【００１２】
図１５に示すメモリシステム１１０は、図１４に示す構成に加え、バス１０６を備える。これにより、ＣＰＵ１０１とＤＭＡＣ１０５とがメモリ１０４に格納される同じデータを用いる場合には、ＤＭＡＣ１０５はバス１０６を介して、ＣＰＵ１０１と同様に、キャッシュメモリ１０２にアクセスできる。
【００１３】
図１６は、ＤＭＡＣ１０５からのアクセスに対するキャッシュメモリ１０２の動作の概略を示す図である。
【００１４】
図１６に示すように、リード時かつヒットの場合、キャッシュメモリ１０２は、ヒットしたデータをＤＭＡＣ１０５に出力する。また、ライト時かつヒットの場合、キャッシュメモリ１０２は、ヒットしたデータを更新する。
【００１５】
また、リード時かつキャッシュミスの場合、キャッシュメモリ１０２がメモリ１０４からデータを読み出したうえで格納するとともに、読み出したデータをＤＭＡＣ１０５に出力する、又は、ＤＭＡＣ１０５がメモリ１０４からデータを読み出す。また、ライト時かつキャッシュミスの場合、キャッシュメモリ１０２がＤＭＡＣ１０５から出力されたアドレス及びデータを格納する、又はＤＭＡＣ１０５がメモリ１０４にデータを書き込む。
【００１６】
以上の構成により、ＣＰＵ１０１がキャッシュメモリ１０２のデータを更新したとしても、ＤＭＡＣ１０５は、更新されたキャッシュメモリ１０２のデータを読み出すので、ＣＰＵ１０１は、上述したパージ処理を行う必要がない。よって、メモリシステム１１０は、コヒーレンシを保ちながら、ＣＰＵ１０１の処理性能の低下を抑制できる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００２−２７８８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、図１５に示すメモリシステム１１０は、バス１０６を備える必要があるので、図１４に示すメモリシステム１００に比べて、面積が増加するという問題がある。これは、メモリシステム１１０内に、ＤＭＡＣ１０５等のマスタが複数含まれる場合には、さらに顕著になる。
【００１９】
さらに、ＤＭＡＣ１０５とメモリ１０４との間のデータ伝送に用いられるプロトコルとして複数のバスプロトコルが用いられている場合には、ＤＭＡＣ１０５とキャッシュメモリ１０２とインターフェースが複雑化するという問題がある。
【００２０】
そこで、本発明は、コヒーレンシを保つために生じるＣＰＵ等のプロセッサの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明に係るキャッシュメモリは、プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、前記プロセッサからのコマンドが入力される第１ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第２ポートと、前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御部とを備える。
【００２２】
この構成によれば、ＤＭＡＣ等のマスタからのアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該ヒットしたデータをマスタに出力する、又は、当該ヒットしたデータを更新するのではなく、当該ヒットしたデータとメインメモリに格納されるデータとのコヒーレンシを保つための処理を行った後、メインメモリにコマンドを出力する。
【００２３】
これにより、キャッシュメモリのデータがＣＰＵ等のプロセッサにより更新されている場合でも、マスタからメインメモリへのアクセス時には、キャッシュメモリによりコヒーレンシを保つための処理が行われる。これにより、その後にキャッシュメモリにより出力されたコマンドにより発生するメインメモリへのアクセスにおいて、キャッシュメモリとメインメモリとのコヒーレンシが保たれる。よって、ＣＰＵ等のプロセッサは、書き込み処理を行った後にパージ処理等のコヒーレンシを保つための処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
【００２４】
さらに、本発明に係るキャッシュメモリでは、マスタからのアクセスがヒットした場合でも、当該キャッシュメモリとマスタとの間でリードデータ又はライトデータの伝送を行う必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータ又はライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
【００２５】
さらに、リードデータ又はライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００２６】
また、前記第１制御部は、前記コマンドとしてリードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第１リード制御部を備えてもよい。
【００２７】
この構成によれば、マスタからのリードアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納するデータをマスタに出力するのではなく、当該データをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。これにより、キャッシュメモリのデータが、プロセッサにより更新されたことにより、キャッシュメモリのデータとメインメモリのデータとが一致しない場合でも、マスタは、正しいデータ（更新された後のデータ）を読み出せる。つまり、プロセッサは、書き込み処理を行った後にパージ処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
【００２８】
さらに、本発明に係るキャッシュメモリでは、マスタからのリードアクセスがヒットした場合でも、当該キャッシュメモリが格納するデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
【００２９】
さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００３０】
また、前記第１リード制御部は、前記リードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力してもよい。
【００３１】
この構成によれば、マスタからのリードアクセスがキャッシュミスした場合でも、キャッシュメモリは、メインメモリから読み出したデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００３２】
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記メインメモリは、前記第１リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する。
【００３３】
この構成によれば、リードデータは、キャッシュメモリを経由せずに、メインメモリから直接マスタに出力される。よって、キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００３４】
また、前記キャッシュメモリは、さらに、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第２リード制御部を備えてもよい。
【００３５】
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
【００３６】
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第１リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第３ポートと、前記第２リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第４ポートとを有し、前記メモリコントローラは、前記第３ポートに入力されたリードコマンドと、前記第４ポートに入力されたリードコマンドとを、当該リードコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたリードコマンドであるかに応じて調停してもよい。
【００３７】
この構成によれば、マスタからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第３ポートに入力され、プロセッサからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第４ポートに入力される。これにより、マスタにより出力されたリードコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第３ポートにマスタに対するバンド幅を割り当て、第４ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
【００３８】
また、前記メモリシステムは、さらに、前記第１リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力してもよい。
【００３９】
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
【００４０】
また、本発明に係るキャッシュメモリにおいて、前記第１制御部は、前記コマンドとしてライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第１ライト制御部を備えてもよい。
【００４１】
この構成によれば、マスタからのアクセスにおいてライトヒットした場合には、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納しているヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。これにより、マスタによるライトにより、キャッシュメモリのデータとメインメモリのデータとが一致しなくなることを防止できる。つまり、キャッシュメモリとメインメモリとのコヒーレンスを保つために、プロセッサ及びマスタは、特段の処理（パージ処理等）を追加する必要はない。このように、本発明は、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
【００４２】
さらに、本発明に係るキャッシュメモリでは、マスタからのライトアクセスがヒットした場合でも、当該キャッシュメモリがライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
【００４３】
さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００４４】
また、前記第１ライト制御部は、前記ライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力してもよい。
【００４５】
この構成によれば、マスタからのライトアクセスがキャッシュミスした場合でも、キャッシュメモリは、ライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００４６】
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、前記メインメモリは、前記マスタにより出力されたライトデータを、前記第１ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する。
【００４７】
この構成によれば、ライトデータは、キャッシュメモリを経由せずに、マスタからメインメモリに直接出力される。よって、キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００４８】
また、前記キャッシュメモリは、さらに、前記ライトコマンド及びライトデータが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第２ライト制御部を備え、前記第２ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力してもよい。
【００４９】
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
【００５０】
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第３ポートと、前記第２ライト制御部により出力されたライトコマンド及びライトデータが入力される第４ポートとを有し、前記メモリコントローラは、前記第３ポートに入力されたライトコマンドと、前記第４ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたライトコマンドであるかに応じて調停してもよい。
【００５１】
この構成によれば、マスタからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第３ポートに入力され、プロセッサからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第４ポートに入力される。これにより、マスタにより出力されたライトコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第３ポートにマスタに対するバンド幅を割り当て、第４ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
【００５２】
また、前記メモリシステムは、さらに、前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納してもよい。
【００５３】
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
【００５４】
また、前記プロセッサは、レベル１キャッシュを備え、前記キャッシュメモリは、レベル２キャッシュであってもよい。
【００５５】
この構成によれば、本発明に係るキャッシュメモリは、レベル２キャッシュに適用される。ここで、レベル２キャッシュがメモリシステム全体に与える影響は、レベル１キャッシュに比べ低い。具体的には、レベル１キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル１キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル１キャッシュへのアクセスに悪影響が出てしまう。よって、レベル２キャッシュに本発明に係るキャッシュメモリを適用することで、レベル１キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
【００５６】
また、前記メモリシステムは、前記プロセッサを含む複数のプロセッサを含み、前記複数のプロセッサの各々は、レベル１キャッシュを備え、前記キャッシュメモリは、前記複数のプロセッサに共用されてもよい。
【００５７】
この構成によれば、複数のプロセッサにより共用されているレベル２キャッシュに本発明に係るキャッシュメモリが適用される。ここで、複数のプロセッサによりレベル２キャッシュが共用されている場合には、複数のレベル１キャッシュと、レベル２キャッシュとのコヒーレンシを保つために、複数のプロセッサは、スヌープ方式等のアルゴリズムに基づいた制御を行う必要がある。よって、この制御に加え、レベル２キャッシュとメインメモリとの間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをレベル２キャッシュに用いることで、レベル２キャッシュとメインメモリとの間のコヒーレンスを保つための処理を削減できるので、上記制御の複雑化を回避できる。
【００５８】
なお、本発明は、このようなキャッシュメモリ及びメモリシステムとして実現できるだけでなく、キャッシュメモリ及びメモリシステムに含まれる特徴的な手段をステップとするキャッシュメモリの制御方法及びメモリシステムの制御方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【００５９】
また、本発明は、このようなキャッシュメモリ及びメモリシステムの機能の一部又は全てを有する半導体集積回路としても実現できる。
【発明の効果】
【００６０】
以上より、本発明は、コヒーレンシを保つために生じるＣＰＵの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供できる。
【図面の簡単な説明】
【００６１】
【図１】図１は、本発明の実施の形態に係るメモリシステムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係るキャッシュメモリの構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係るキャッシュ格納部及びヒット判定部の構成を示す図である。
【図４】図４は、本発明の実施の形態に係るウェイの構成を示す図である。
【図５】図５は、本発明の実施の形態に係るメモリシステムにおける接続関係を示す図である。
【図６】図６は、本発明の実施の形態に係るキャッシュメモリにおけるＤＭＡＣからのアクセスに対する動作の概略を示す図である。
【図７】図７は、本発明の実施の形態に係るメモリシステムにおけるリードヒット時の動作の流れを示す図である。
【図８】図８は、本発明の実施の形態に係るメモリシステムにおけるリードミス時の動作の流れを示す図である。
【図９】図９は、本発明の実施の形態に係るメモリシステムにおけるライトヒット時の動作の流れを示す図である。
【図１０】図１０は、本発明の実施の形態に係るメモリシステムにおけるライトミス時の動作の流れを示す図である。
【図１１】図１１は、本発明の実施の形態に係るキャッシュメモリにおけるリード時の動作の流れを示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係るキャッシュメモリにおけるライト時の動作の流れを示すフローチャートである。
【図１３】図１３は、本発明の実施の形態に係るメモリシステムの変形例の構成を示すブロック図である。
【図１４】図１４は、従来のメモリシステムの構成を示すブロック図である。
【図１５】図１５は、従来のメモリシステムの構成を示すブロック図である。
【図１６】図１６は、従来のキャッシュメモリにおけるＤＭＡＣからのアクセスに対する動作の概略を示す図である。
【発明を実施するための形態】
【００６２】
以下、本発明に係るキャッシュメモリの実施の形態について、図面を参照しながら詳細に説明する。
【００６３】
（実施の形態１）
本発明の実施の形態に係るキャッシュメモリは、ＤＭＡＣ等のマスタからのリードアクセスがヒットした場合、ヒットしたデータをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。また、マスタからのライトアクセスがヒットした場合、ヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。
【００６４】
これにより、ＣＰＵ等のプロセッサ及びマスタがパージ処理を行わなくても、キャッシュメモリとメインメモリとの間のコヒーレンシを保つことができる。よって、本発明の実施の形態に係るキャッシュメモリは、キャッシュメモリとメインメモリとの間のコヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
【００６５】
さらに、リードデータ及びライトデータは、キャッシュメモリを経由せずに、マスタとメインメモリとの間で直接伝送される。これにより、キャッシュメモリとマスタとの間にリードデータ及びライトデータを伝送するためのバスを形成する必要がないので、メモリシステムの面積を削減できるとともに、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
【００６６】
まず、本発明の実施の形態に係るキャッシュメモリを含むメモリシステムの構成を説明する。
【００６７】
図１は、本発明の実施の形態に係るメモリシステムの構成を示す図である。
【００６８】
図１に示すメモリシステム２００は、２個のＣＰＵ２０１と、Ｌ２（レベル２）キャッシュ２０２と、メモリコントローラ２０３と、メモリ２０４と、２個のＤＭＡＣ２０５と、バス制御部２０６とを含む。また、複数のＣＰＵ２０１は、それぞれＬ１（レベル１）キャッシュ２０７を備える。
【００６９】
Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、メモリ２０４に比べ、高速であるが容量が少ないキャッシュメモリである。例えば、Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、ＳＲＡＭである。なお、Ｌ１キャッシュ２０７は、Ｌ２キャッシュ２０２よりＣＰＵ２０１の近くに配置されればよく、ＣＰＵ２０１の外に配置されてもよい。
【００７０】
このＬ１キャッシュ２０７及びＬ２キャッシュ２０２は、ＣＰＵ２０１がメモリ２０４から読み出したデータの一部、及び、メモリ２０４に書き込むデータの一部を記憶する、所謂キャッシュ動作を行う。ここでキャッシュ動作とは、ＣＰＵ２０１からメモリ２０４へのアクセスが発生した場合、Ｌ２キャッシュ２０２が、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（ヒット）、当該格納しているデータをＣＰＵ２０１に出力する（リード時）、又は、当該データを更新する（ライト時）動作である。また、Ｌ２キャッシュ２０２は、当該アクセス先のアドレスのデータを格納していない場合（キャッシュミス）、ＣＰＵ２０１から出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメモリ２０４から読み出したうえで格納するとともに、読み出したデータをＣＰＵ２０１に出力する（リード時）。
【００７１】
また、キャッシュミスの場合には、Ｌ１キャッシュ２０７及びＬ２キャッシュ２０２は、当該Ｌ１キャッシュ２０７又はＬ２キャッシュ２０２内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。
【００７２】
また、Ｌ２キャッシュ２０２は、２個のＣＰＵ２０１で共通に用いられる。
【００７３】
メモリコントローラ２０３は、Ｌ２キャッシュからメモリ２０４へのアクセス、及び複数のＤＭＡＣ２０５それぞれからのメモリ２０４へのアクセスを調停する、メモリ２０４のインターフェースである。
【００７４】
メモリ２０４は、ＳＤＲＡＭ等の大容量のメインメモリである。
【００７５】
ＤＭＡＣ２０５は、外部の機器（外部デバイス及び外部メモリ等）と、メモリ２０４との間のデータ転送を行うマスタである。
【００７６】
バス制御部２０６は、ＤＭＡＣ２０５により出力されたコマンドをＬ２キャッシュ２０２又はメモリコントローラ２０３に出力する。また、バス制御部２０６は、Ｌ２キャッシュ２０２により出力されたコマンドをメモリコントローラ２０３に出力する。また、バス制御部２０６は、ＤＭＡＣ２０５により出力されたライトデータを、Ｌ２キャッシュ２０２を経由せずに、メモリコントローラ２０３に出力し、メモリコントローラ２０３により出力されたリードデータを、Ｌ２キャッシュ２０２を経由せずに、ＤＭＡＣ２０５に出力する。
【００７７】
ここで、コマンドとは、データ書き込み又はデータ読み出しを指定する情報と、アクセス先のアドレスを示す情報とを含む。また、ライトデータとは、メモリ２０４に書き込むデータであり、リードデータとは、メモリ２０４から読み出したデータ、又は、Ｌ２キャッシュ２０２に格納されていたデータである。また、データ書き込みを指示するコマンドをライトコマンド、データ読み出しを指示するコマンドをリードコマンドと呼ぶ。また、ラインコマンド及びリードコマンドを共に称して、単に「コマンド」と記す。
【００７８】
また、図１に示す各構成要素は、典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。また、各構成要素が、複数のチップで実現されてもよい。
【００７９】
以下では、Ｌ２キャッシュ２０２に本発明に係るキャッシュメモリを適用した例について説明する。
【００８０】
図２は、Ｌ２キャッシュ２０２の機能構成を示すブロック図である。
【００８１】
図２に示すように、Ｌ２キャッシュ２０２は、制御部３８と、キャッシュ格納部７０と、ヒット判定部７１と、第１ポート２１１と、第２ポート２１２と、第３ポート２１３と、第４ポート２１４とを備える。
【００８２】
第１ポート２１１は、ＣＰＵ２０１と接続され、ＣＰＵ２０１から出力されたコマンド及びライトデータが入力され、ＣＰＵ２０１へリードデータを出力する。
【００８３】
第２ポート２１２は、メモリコントローラ２０３と接続され、メモリコントローラ２０３により出力されたリードデータが入力され、メモリコントローラ２０３へコマンド及びライトデータを出力する。言い換えると、第２ポート２１２は、メモリ２０４によりリードデータが入力され、メモリ２０４へコマンド及びライトデータを出力する。
【００８４】
第３ポート２１３は、バス制御部２０６と接続され、バス制御部２０６により出力されたコマンドが入力される。言い換えると、第３ポート２１３は、ＤＭＡＣ２０５により出力されたコマンドが入力される。
【００８５】
第４ポート２１４は、バス制御部２０６と接続され、バス制御部２０６へコマンドを出力する。言い換えると、第４ポート２１４は、メモリ２０４へコマンドを出力する。
【００８６】
キャッシュ格納部７０は、ＣＰＵ２０１からアクセスがあった、メモリ２０４に格納されるデータを格納する。
【００８７】
ヒット判定部７１は、ＣＰＵ２０１及びＤＭＡＣ２０５からコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか（ヒット）、格納していないか（キャッシュミス）を判定する。
【００８８】
制御部３８は、Ｌ２キャッシュ２０２全体の制御を行う。具体的には、ＣＰＵ２０１がメモリ２０４から読み出したデータの一部、及び、メモリ２０４に書き込むデータの一部を記憶する、所謂キャッシュ動作を制御する。また、制御部３８は、ＣＰＵ２０１からのアクセスであるか、ＤＭＡＣ２０５からのアクセスであるかに応じて、異なる処理を行う。
【００８９】
この制御部３８は、ＣＰＵ２０１からのアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵアクセス制御部６０と、ＤＭＡＣ２０５からのアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣアクセス制御部６３とを備える。
【００９０】
ＣＰＵアクセス制御部６０は、ＣＰＵ２０１からのリードアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵリード制御部６１と、ＣＰＵ２０１からのライトアクセスに対するＬ２キャッシュ２０２の動作を制御するＣＰＵライト制御部６２とを備える。
【００９１】
ＣＰＵリード制御部６１は、メモリ２０４へのリードコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７０によりヒットと判定された場合、ヒットしたデータを、第１ポート２１１からＣＰＵ２０１に出力する。また、ＣＰＵリード制御部６１は、メモリ２０４へのリードコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７０によりキャッシュミスと判定された場合、入力されたリードコマンドで指定されるアドレスのデータを、第２ポート２１２を介してメモリ２０４から読み出し、当該読み出したデータをキャッシュ格納部７０に格納するとともに、当該読み出したデータを第１ポート２１１からＣＰＵ２０１に出力する。
【００９２】
ＣＰＵライト制御部６２は、メモリへ２０４のライトコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータを、ＣＰＵ２０１から入力されたライトデータに更新する。また、ＣＰＵライト制御部６２は、メモリ２０４へのライトコマンドがＣＰＵ２０１から第１ポート２１１に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、キャッシュ格納部７０に新たにライトデータを格納する。また、ＣＰＵライト制御部６２は、キャッシュ格納部７０が格納するデータをメモリ２０４に書き込むためのライトコマンド及びライトデータを第２ポート２１２からメモリ２０４に出力する。つまり、ＣＰＵライト制御部６２は、ＣＰＵ２０１からの指示、又は所定のタイミングで、更新したライトデータを、メモリ２０４に書き戻す（ライトバックする）。
【００９３】
ＤＭＡＣアクセス制御部６３は、コマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータと、メモリ２０４に格納されているデータとのコヒーレンシを保つための処理を行うとともに、第３ポート２１３に入力されたコマンドをＤＭＡＣ２０５から出力されたコマンドとして、第４ポート２１４からメモリ２０４に出力する。また、ＤＭＡＣアクセス制御部６３は、コマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたコマンドをＤＭＡＣ２０５から出力されたコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９４】
このＤＭＡＣアクセス制御部６３は、ＤＭＡＣ２０５からのリードアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣリード制御部６４と、ＤＭＡＣ２０５からのライトアクセスに対するＬ２キャッシュ２０２の動作を制御するＤＭＡＣライト制御部６５とを備える。
【００９５】
ＤＭＡＣリード制御部６４は、メモリ２０４へのリードコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７０によりヒットと判定された場合、ヒットしたデータを、第２ポート２１２を介してメモリ２０４にライトバックし、当該ライトバックが完了した後に、第３ポート２１３に入力されたリードコマンドをＤＭＡＣ２０５から出力されたリードコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９６】
また、ＤＭＡＣリード制御部６４は、メモリ２０４へのリードコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたリードコマンドをＤＭＡＣ２０５から出力されたリードコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９７】
ＤＭＡＣライト制御部６５は、メモリ２０４へのライトコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりヒットと判定された場合、ヒットしたデータを無効化するとともに、第３ポート２１３に入力されたライトコマンドをＤＭＡＣ２０５から出力されたライトコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９８】
また、ＤＭＡＣライト制御部６５は、メモリ２０４へのライトコマンドがＤＭＡＣ２０５から第３ポート２１３に入力され、かつヒット判定部７１によりキャッシュミスと判定された場合、第３ポート２１３に入力されたライトコマンドをＤＭＡＣ２０５から出力されたライトコマンドとして、第４ポート２１４からメモリ２０４に出力する。
【００９９】
図３は、キャッシュ格納部７０及びヒット判定部７１の構成例を示すブロック図である。また、Ｌ２キャッシュ２０２の具体例として、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。図３に示すようにキャッシュ格納部７０は、デコーダ３０と、４つのウェイ３１ａ〜３１ｄとを備える。なお、４つのウェイ３１ａ〜３１ｄを特に区別しない場合には、ウェイ３１と記す。
【０１００】
また、ヒット判定部７１は、４つの比較器３２ａ〜３２ｄと、４つのアンド回路３３ａ〜３３ｄと、オア回路３４とを備える。また、Ｌ２キャッシュ２０２は、さらに、アドレスレジスタ２０と、メモリＩ／Ｆ２１と、セレクタ３５及び３６と、デマルチプレクサ３７を備える。
【０１０１】
アドレスレジスタ２０は、メモリ２０４へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは３２ビットであるものとする。図３に示すように、アクセスアドレスは、最上位ビットから順に、２１ビットのタグアドレス５１と、４ビットのセットインデックス（ＳＩ）５２と、５ビットのワードインデックス（ＷＩ）５３とを含む。
【０１０２】
ここで、タグアドレス５１は、ウェイ３１にマッピングされるメモリ２０４中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、タグアドレス５１よりも下位のアドレスビット（Ａ１０〜Ａ０）で定まるサイズつまり２ｋバイトであり、１つのウェイ３１のサイズでもある。
【０１０３】
セットインデックス５２はウェイ３１ａ〜３１ｂに跨る複数セットの１つを指す。このセット数は、セットインデックス５２が４ビットなので１６セットある。タグアドレス５１及びセットインデックス５２で特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックス５２よりも下位のアドレスビット（Ａ６〜Ａ０）で定まるサイズつまり１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。
【０１０４】
ワードインデックス（ＷＩ）５３は、ラインデータを構成する複数ワード中の１ワードを指す。また、アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【０１０５】
メモリＩ／Ｆ２１は、Ｌ２キャッシュ２０２からメモリ２０４をアクセスするためのインターフェースである。具体的には、メモリＩ／Ｆ２１は、Ｌ２キャッシュ２０２からメモリ２０４へのデータのライトバック、及びメモリ２０４からＬ２キャッシュ２０２へのデータのロード等を行う。
【０１０６】
デコーダ３０は、セットインデックス５２の４ビットをデコードし、４つのウェイ３１ａ〜３１ｄに跨る１６セット中の１つを選択する。
【０１０７】
４つのウェイ３１ａ〜３１ｄは、同じ構成を有し、各ウェイ３１は、２ｋバイトの容量を有する。
【０１０８】
図４は、ウェイ３１の構成を示す図である。図４に示すように、各ウェイ３１は、１６個のキャッシュエントリ４０を有する。各キャッシュエントリ４０は、２１ビットのタグ４１と、バリッドフラグ４２と、ダーティフラグ４３と、１２８バイトのラインデータ４４とを有する。
【０１０９】
タグ４１は、メモリ２０４上のアドレスの一部であり、２１ビットのタグアドレス５１のコピーである。
【０１１０】
ラインデータ４４は、タグアドレス５１及びセットインデックス５２により特定されるブロック中の１２８バイトデータのコピーである。
【０１１１】
バリッドフラグ４２は、当該キャッシュエントリ４０のデータが有効か否かを示す。例えば、データが有効な場合、バリッドフラグ４２は「１」であり、データが無効な場合、バリッドフラグ４２は「０」である。また、バリッドフラグ４２を「０」にすることを、データを無効化するとも言う。
【０１１２】
ダーティフラグ４３は、当該キャッシュエントリ４０にＣＰＵ２０１から書き込みがあったか否か、つまりラインデータ４４が更新されている状態であるか否かを示す。言い換えると、ダーティフラグ４３は、当該キャッシュエントリ４０中にキャッシュされたラインデータ４４が存在するが、ＣＰＵ２０１からの書き込みにより当該ラインデータ４４がメモリ２０４中のデータと異なるため、当該ラインデータ４４をメモリ２０４に書き戻すことが必要であるか否かを示す。例えば、ラインデータ４４が更新されている場合、ダーティフラグ４３は「１」であり、ラインデータ４４が更新されていない場合、ダーティフラグ４３は「０」である。また、ダーティフラグ４３を「１」にすることを、ダーティフラグをセットするとも言う。また、ダーティフラグ４３が「１」の場合を、当該データがダーティであるとも言う。
【０１１３】
比較器３２ａは、アドレスレジスタ２０中のタグアドレス５１と、セットインデックス５２により選択されたセットに含まれる４つのタグ４１中のウェイ３１ａのタグ４１とが一致するか否かを比較する。比較器３２ｂ〜３２ｃについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。
【０１１４】
アンド回路３３ａは、バリッドフラグ４２と比較器３２ａの比較結果とが一致するか否かを比較する。この比較結果をｈ０とする。比較結果ｈ０が「１」である場合は、アドレスレジスタ２０中のタグアドレス５１及びセットインデックス５２に対応するラインデータ４４が存在すること、つまりウェイ３１ａにおいてヒットしたことを意味する。また、比較結果ｈ０が「０」である場合は、キャッシュミスしたことを意味する。アンド回路３３ｂ〜３３ｄについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。つまり、その比較結果ｈ１〜ｈ３は、ウェイ３１ｂ〜３１ｄでヒットしたかミスしたかを意味する。
【０１１５】
オア回路３４は、比較結果ｈ０〜ｈ３のオアをとる。このオアの結果をｈｉｔとする。ｈｉｔは、キャッシュメモリにヒットしたか否かを示す。
【０１１６】
セレクタ３５は、選択されたセットにおけるウェイ３１ａ〜３１ｄのラインデータ４４のうち、ヒットしたウェイ３１のラインデータ４４を選択する。
【０１１７】
セレクタ３６は、セレクタ３５により選択された３２ワードのラインデータ４４にうち、ワードインデックス５３で示される１ワードを選択する。
【０１１８】
デマルチプレクサ３７は、キャッシュエントリ４０にデータを書き込む際に、ウェイ３１ａ〜３１ｄの１つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
【０１１９】
図５は、バス制御部２０６の構成及び接続関係を示す図である。なお、説明の簡単化のため、以下、ＣＰＵ２０１が１個の場合を例に説明する。
【０１２０】
図５に示すように、バス制御部２０６は、２個の第１ポート２２１と、２個の第２ポート２２２と、第３ポート２２３と、第４ポート２２４と、調停部２２５と、２個の選択部２２６とを備える。
【０１２１】
第１ポート２２１、第２ポート２２２及び選択部２２６は、ＤＭＡＣ２０５ごとに設けられる。第１ポート２２１は、対応するＤＭＡＣ２０５に接続され、対応するＤＭＡＣ２０５から出力されたコマンド及びライトデータが入力され、対応するＤＭＡＣ２０５へリードデータを出力する。
【０１２２】
第２ポート２２２は、メモリコントローラ２０３と接続され、メモリコントローラ２０３により出力されたリードデータが入力され、メモリコントローラ２０３へコマンド及びライトデータを出力する。
【０１２３】
第３ポート２２３は、Ｌ２キャッシュ２０２の第３ポート２１３と接続され、Ｌ２キャッシュ２０２へコマンドを出力する。
【０１２４】
第４ポート２２４は、Ｌ２キャッシュ２０２の第４ポート２１４と接続され、Ｌ２キャッシュ２０２により出力されたコマンドが入力される。
【０１２５】
調停部２２５は、複数の第１ポート２２１に入力されたコマンドを調停し、調停したコマンドを第３ポート２２３に出力する。つまり、調停部２２５は、複数の第１ポート２２１のいずれかにコマンドが入力された場合には、当該入力されたコマンドを選択し、選択したコマンドを第３ポート２２３に出力する。また、調停部２２５は、複数の第１ポート２２１に同時にコマンドが入力された場合、予め定められた優先度に従って、いずれかのコマンドを選択し、選択したコマンドを第３ポート２２３に出力する。
【０１２６】
選択部２２６は、対応する第１ポート２２１に入力されたコマンド、及び第４ポートに入力されたコマンドのうち一方を選択し、選択したコマンドを対応する第２ポート２２２に出力する。つまり、選択部２２６は、ＤＭＡＣリード制御部６４により出力されたコマンドと、ＤＭＡＣ２０５により出力されたコマンドとのうち一方を選択し、選択したコマンドをメモリ２０４に出力する。具体的には、選択部２２６は、通常モード時には、第４ポート２２４に入力されたコマンドを選択し、バイパスモード時には、第１ポート２２１に入力されたコマンドを選択する。なお、以下、特段の記載がない限り、通常モードについての説明である。
【０１２７】
ここで、通常モードとは、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由して、メモリ２０４にアクセスするモードである。また、バイパスモードとは、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずに、直接メモリ２０４にアクセスするモードである。
【０１２８】
また、ＣＰＵ２０１とＤＭＡＣ２０５とが、メモリ２０４の同じアドレスのデータを使用する場合には通常モードが選択され、ＤＭＡＣ２０５とＣＰＵ２０１とが同じアドレスのデータを使用しない場合、つまり、特別な制御を行わなくてもコヒーレンシが保てる場合に、バイパスモードが選択される。また、通常モードとバイパスモードとの切り替えは、ＣＰＵ２０１等により行われる。
【０１２９】
また、選択部２２６は、通常モードにおいて、第４ポート２２４に入力されたコマンドが、対応するＤＭＡＣ２０５から出力されたコマンドに応じて、Ｌ２キャッシュ２０２が出力したコマンドである場合は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力し、対応しない他のＤＭＡＣ２０５から出力されたコマンドに応じて、Ｌ２キャッシュ２０２が出力したコマンドである場合は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力しない。
【０１３０】
具体的には、Ｌ２キャッシュ２０２が出力するコマンドに、当該コマンドが２個のＤＭＡＣ２０５のうちいずれから出力されたコマンドであるかを示す情報が含まれ、当該情報に応じて選択部２２６は、第４ポート２２４に入力されたコマンドを第２ポート２２２に出力する、又は出力しないを決定する。
【０１３１】
また、第１ポート２２１に入力されたライトデータは、対応する第２ポート２２２に直接出力され、第２ポート２２２に入力されたリードデータは、対応する第１ポート２２１に直接出力される。
【０１３２】
また、図５に示すように、メモリコントローラ２０３は、第１ポート２３１と、２個の第２ポート２３２とを備える。第１ポート２３１はＬ２キャッシュ２０２に対応し、２個の第２ポート２３２は、それぞれ２個のＤＭＡＣ２０５と一対一に対応する。
【０１３３】
第１ポート２３１は、ＣＰＵリード制御部６１により出力されたリードコマンドと、ＣＰＵライト制御部６２により出力されたライトコマンド及びライトデータとが入力される。また、第１ポート２３１は、メモリ２０４から出力されたリードデータをＬ２キャッシュ２０２に出力する。具体的には、第１ポート２３１は、Ｌ２キャッシュ２０２の第２ポート２１２と接続される。
【０１３４】
第２ポート２３２は、バス制御部２０６の第２ポート２２２ごとに設けられ、対応する第２ポート２２２と接続される。この第２ポート２３２は、バス制御部２０６の対応する第２ポート２２２からから出力されたコマンド及びライトデータが入力され、対応する第２ポート２２２へ、メモリ２０４から出力されたリードデータを出力する。
【０１３５】
具体的には、通常モード時においては、第２ポート２３２に、ＤＭＡＣリード制御部６４により出力されたリードコマンドと、ＤＭＡＣライト制御部６５により出力されたライトコマンドとが入力される。また、バイパスモード時においては、第２ポート２３２に、対応するＤＭＡＣ２０５により出力されたリードコマンド及びライトコマンドが入力される。また、通常モード時及びバイパスモード時の両方において、第２ポート２３２は、対応するＤＭＡＣ２０５により出力されたライトデータが入力され、リードコマンドに応じてメモリ２０４から出力されたリードデータを対応するＤＭＡＣ２０５へ出力する。
【０１３６】
ここで、メモリコントローラ２０３は、第１ポート２３１及び２個の第２ポート２３２に入力されたコマンド（リードコマンド及びライトコマンド）を、当該コマンドが、第１ポート２３１及び２個の第２ポート２３２のうちいずれに入力されたコマンドであるかに応じて調停する。具体的には、各ポートには、帯域（バンド幅）が割り当てられており、メモリコントローラ２０３は、当該帯域が満たされるように、調停を行う。例えば、第１ポート２３１及び２個の第２ポート２３２に２：１：１で帯域が割り当てられている場合には、メモリコントローラ２０３は、第１ポートに入力されたコマンドを２回実行するごとに、各第２ポート２３２に入力されたコマンドを１回ずつ実行する。
【０１３７】
次に、本発明の実施の形態に係るメモリシステム２００の動作を説明する。
【０１３８】
以下、ＤＭＡＣ２０５からメモリ２０４へのアクセスが発生した際の動作を説明する。
【０１３９】
図６は、Ｌ２キャッシュ２０２からアクセスが発生した際の、メモリシステム２００の動作の概略を示す図である。
【０１４０】
図６に示すように、リード時、かつヒット（以下、リードヒット）の場合には、Ｌ２キャッシュ２０２は、ヒットしたデータをライトバックする。その後、メモリ２０４のデータが読み出され、ＤＭＡＣ２０５へ送られる。
【０１４１】
また、リード時、かつキャッシュミス（以下、リードミス）の場合には、メモリ２０４のデータが読み出され、ＤＭＡＣ２０５へ送られる。
【０１４２】
また、ライト時、かつヒット（以下、ライトヒット）の場合には、Ｌ２キャッシュ２０２は、ヒットしたデータを無効化する。また、メモリ２０４へライトデータが書き込まれる。
【０１４３】
また、ライト時、かつキャッシュミス（以下、ライトミス）の場合には、メモリ２０４へライトデータが書き込まれる。
【０１４４】
以下、各動作を個別に説明する。まず、リードヒット時の動作を説明する。
【０１４５】
図７は、メモリシステム２００におけるリードヒット時の動作の流れを示す図である。
【０１４６】
図７に示すように、まず、ＤＭＡＣ２０５は、リードコマンドをＬ２キャッシュ２０２に出力する（Ｓ１０１）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にリードコマンドを出力する。バス制御部２０６の第１ポート２２１に入力されたリードコマンドは、調停部２２５及び第３ポート２２３を順次経由して、Ｌ２キャッシュ２０２の第３ポート２１３に入力される。
【０１４７】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納している（ヒット）と判定する（Ｓ１０２）。
【０１４８】
次に、Ｌ２キャッシュ２０２のＤＭＡＣリード制御部６４は、ヒットしたデータをライトバックする（Ｓ１０３）。つまり、ＤＭＡＣリード制御部６４は、ヒットしたデータをメモリ２０４に書き戻す。
【０１４９】
ライトバックが完了した後、ＤＭＡＣリード制御部６４は、メモリ２０４にリードコマンドを出力する（Ｓ１０４）。具体的には、ＤＭＡＣリード制御部６４は、第４ポート２１４にリードコマンドを出力する。また、このリードコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１５０】
第４ポート２１４に出力されたリードコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。メモリコントローラ２０３は、第２ポート２３２に入力されたリードコマンドをメモリ２０４に出力する。
【０１５１】
リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスに格納しているリードデータを、Ｌ２キャッシュ２０２を経由せずに、直接ＤＭＡＣ２０５に出力する（Ｓ１０５）。具体的には、メモリ２０４はリードデータをメモリコントローラ２０３に出力し、メモリコントローラ２０３は、メモリ２０４により出力されたリードデータを、リードコマンドが入力された第２ポート２３２に出力する。当該第２ポート２３２に出力されたリードデータは、バス制御部２０６の第２ポート２２２及び第１ポート２２１を順次介して、ＤＭＡＣ２０５に出力される。
【０１５２】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてリードヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータをライトバックした後、メモリ２０４からデータを読み出す。
【０１５３】
これにより、Ｌ２キャッシュ２０２のデータがＣＰＵ２０１により更新されたことにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータと一致しない場合でも、ＤＭＡＣ２０５は、正しいデータ（更新された後のデータ）を読み出せる。つまり、ＣＰＵ２０１は、書き込み処理を行った後にパージ（ライトバック）処理をＬ２キャッシュ２０２に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム２００は、ＣＰＵ２０１によりパージ処理を削減できるので、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０１５４】
さらに、Ｌ２キャッシュ２０２は、ライトバックが完了した後に、第４ポート２１４にリードコマンドを出力する。これにより、ライトバックの完了前に、メモリ２０４からデータが読み出されることを防止できる。
【０１５５】
次に、リードミス時の動作を説明する。
【０１５６】
図８は、メモリシステム２００におけるリードミス時の動作の流れを示す図である。
【０１５７】
図８に示すように、まず、ＤＭＡＣ２０５は、リードコマンドをＬ２キャッシュ２０２に出力する（Ｓ１１１）。なお、ステップＳ１１１、Ｓ１１４及びＳ１１５の動作は、図７に示すＳ１０１、Ｓ１０４及びＳ１０５と同様であり、詳細な説明は省略する。
【０１５８】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納していない（キャッシュミス）と判定する（Ｓ１１２）。
【０１５９】
次に、Ｌ２キャッシュ２０２のＤＭＡＣリード制御部６４は、メモリ２０４にリードコマンドを出力する（Ｓ１１４）。具体的には、ＤＭＡＣリード制御部６４は、第４ポート２１４にリードコマンドを出力する。また、このリードコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１６０】
第４ポート２１４に出力されたリードコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。メモリコントローラ２０３は、第２ポート２３２に入力されたリードコマンドをメモリ２０４に出力する。
【０１６１】
リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスのリードデータをＤＭＡＣ２０５に出力する（Ｓ１１５）。
【０１６２】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてリードミスした場合には、メモリ２０４からデータを読み出す。
【０１６３】
このように、本発明の実施の形態に係るＬ２キャッシュ２０２は、Ｌ２キャッシュ２０２は、リードヒット時の場合でも、ヒットしたデータをＤＭＡＣ２０５に出力しない。つまり、ＤＭＡＣ２０５からのリードアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、メモリ２０４により出力されるリードデータは、Ｌ２キャッシュ２０２を経由せずに直接、ＤＭＡＣ２０５に出力される。これにより、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間に、リードデータを伝送するためのバスを形成する必要がない。つまり、図５に示すように、Ｌ２キャッシュ２０２の第３ポート２１３にはリードコマンドのみを入力し、第３ポート２１３からはリードコマンドのみを出力すればよい。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。
【０１６４】
さらに、リードデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０１６５】
また、Ｌ２キャッシュ２０２が第４ポート２１４に出力したリードコマンドは、メモリコントローラ２０３の、リードコマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該リードコマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。一方、Ｌ２キャッシュ２０２がリードコマンドをメモリコントローラ２０３の第１ポート２３１に出力した場合には、当該リードコマンドは、Ｌ２キャッシュ２０２（ＣＰＵ２０１）により発行されたものとして扱われ、Ｌ２キャッシュ２０２に割り当てられた帯域を使用することになる。
【０１６６】
このように、ＤＭＡＣリード制御部６４により出力されたコマンドを、ＤＭＡＣ２０５に対応する第２ポート２３２に入力することにより、ＤＭＡＣ２０５から出力されたコマンドがＬ２キャッシュ２０２を経由してメモリ２０４に送られる場合であっても、メモリコントローラ２０３は、第１ポート２３１にＣＰＵ２０１に対するバンド幅を割り当て、第２ポート２３２にＤＭＡＣ２０５に対するバンド幅を割り当てるという容易な制御で、ＣＰＵ２０１及びＤＭＡＣ２０５に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。
【０１６７】
次に、ライトヒット時の動作を説明する。
【０１６８】
図９は、メモリシステム２００におけるライトヒット時の動作の流れを示す図である。
【０１６９】
図９に示すように、まず、ＤＭＡＣ２０５は、ライトコマンドをＬ２キャッシュ２０２に出力する（Ｓ１２１）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にライトコマンドを出力する。バス制御部２０６の第１ポート２２１に入力されたライトコマンドは、調停部２２５及び第３ポート２２３を順次経由して、Ｌ２キャッシュ２０２の第３ポート２１３に入力される。
【０１７０】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納している（ヒット）と判定する（Ｓ１２２）。
【０１７１】
次に、Ｌ２キャッシュ２０２のＤＭＡＣライト制御部６５は、ヒットしたデータを無効化する（Ｓ１２３）。具体的には、ＤＭＡＣライト制御部６５は、ヒットしたデータのバリッドフラグ４２を「０」に設定する。
【０１７２】
次に、ＤＭＡＣライト制御部６５は、メモリ２０４にライトコマンドを出力する（Ｓ１２４）。具体的には、ＤＭＡＣライト制御部６５は、第４ポート２１４にライトコマンドを出力する。また、このライトコマンドは、ステップＳ１２１でＤＭＡＣ２０５により出力されたライトコマンドと同じアドレスを指定するものである。
【０１７３】
第４ポート２１４に出力されたライトコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１７４】
一方、ＤＭＡＣ２０５は、ライトデータを、Ｌ２キャッシュ２０２を経由せずに、メモリ２０４に出力する（Ｓ１２５）。具体的には、ＤＭＡＣ２０５は、バス制御部２０６の第１ポート２２１にライトデータを出力する。第１ポート２２１に入力されたライトデータは、第２ポート２２２を経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１７５】
メモリコントローラ２０３は、第２ポート２３２に入力されたライトコマンド及びライトデータをメモリ２０４に出力する。
【０１７６】
ライトコマンド及びライトデータを受けたメモリ２０４は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する（Ｓ１２６）。
【０１７７】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータを無効化するとともに、メモリ２０４にデータを書き込む。
【０１７８】
これにより、ＤＭＡＣ２０５によるライトにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータとが一致しなくなることを防止できる。つまり、Ｌ２キャッシュ２０２とメモリ２０４とのコヒーレンスを保つために、ＣＰＵ２０１及びＤＭＡＣは、特段の処理（パージ処理）を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム２００は、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０１７９】
次に、ライトミス時の動作を説明する。
【０１８０】
図１０は、メモリシステム２００におけるライトミス時の動作の流れを示す図である。
【０１８１】
図１０に示すように、まず、ＤＭＡＣ２０５は、ライトコマンドをＬ２キャッシュ２０２に出力する（Ｓ１３１）。なお、ステップＳ１３１、及びＳ１３４〜Ｓ１３６の動作は、図９に示すＳ１２１、及びＳ１２４〜Ｓ１２６と同様であり、詳細な説明は省略する。
【０１８２】
Ｌ２キャッシュ２０２のヒット判定部７１は、第３ポート２１３に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判定する。ここでは、ヒット判定部７１は、指定されるアドレスのデータをキャッシュ格納部７０が格納していない（キャッシュミス）と判定する（Ｓ１３２）。
【０１８３】
次に、Ｌ２キャッシュ２０２のＤＭＡＣライト制御部６５は、メモリ２０４にライトコマンドを出力する（Ｓ１３４）。具体的には、ＤＭＡＣライト制御部６５は、第４ポート２１４にライトコマンドを出力する。また、このライトコマンドは、ステップＳ１０１でＤＭＡＣ２０５により出力されたリードコマンドと同じアドレスを指定するものである。
【０１８４】
第４ポート２１４に出力されたライトコマンドは、バス制御部２０６の第４ポート２２４、選択部２２６及び第２ポート２２２を順次経由して、メモリコントローラ２０３の第２ポート２３２に入力される。
【０１８５】
一方、ＤＭＡＣ２０５は、ライトデータをメモリ２０４に出力する（Ｓ１３５）。
【０１８６】
ライトコマンド及びライトデータを受けたメモリ２０４は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する（Ｓ１３６）。
【０１８７】
以上のように、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトミスした場合には、メモリ２０４にライトデータが書き込まれる。
【０１８８】
このように、本発明の実施の形態に係るＬ２キャッシュ２０２は、ライトヒット時の場合でも、ライトデータを格納しない。つまり、ＤＭＡＣ２０５からのライトアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、ＤＭＡＣ２０５により出力されるライトデータは、Ｌ２キャッシュ２０２を経由せずに直接、メモリ２０４に出力される。これにより、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間に、ライトデータを伝送するためのバスを形成する必要がない。つまり、図５に示すように、Ｌ２キャッシュ２０２の第３ポート２１３にはライトコマンドのみを入力し、第３ポート２１３からはライトコマンドのみを出力すればよい。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。
【０１８９】
さらに、ライトデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０１９０】
また、Ｌ２キャッシュ２０２が第４ポート２１４に出力したライトコマンドは、メモリコントローラ２０３の、ライトコマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該ライトコマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。つまり、リードアクセス時と同様に、メモリコントローラ２０３は、第１ポート２３１にＣＰＵ２０１に対するバンド幅を割り当て、第２ポート２３２にＤＭＡＣ２０５に対するバンド幅を割り当てるという容易な制御で、ＣＰＵ２０１及びＤＭＡＣ２０５に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。
【０１９１】
次に、Ｌ２キャッシュ２０２の動作の流れを説明する。
【０１９２】
まず、リードアクセス時のＬ２キャッシュ２０２の動作を説明する。
【０１９３】
図１１は、リードコマンドが入力された際の、Ｌ２キャッシュ２０２の動作の流れを示すフローチャートである。
【０１９４】
図１１に示すように、ＤＭＡＣ２０５によりリードコマンドが発行された場合、つまり第３ポート２１３にリードコマンドが入力された場合（Ｓ２０１でＤＭＡＣ）、ヒット判定部７１は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２０２）。
【０１９５】
格納している場合（Ｓ２０２でヒット）、次に、ＤＭＡＣリード制御部６４は、ヒットしたデータがダーティであるか否か、つまりヒットしたデータが、ＣＰＵ２０１により更新されているか否かを判定する（Ｓ２０３）。具体的には、Ｌ２キャッシュ２０２は、ヒットしたデータのダーティフラグ４３が「１」の場合、ダーティであると判定し、当該ダーティフラグ４３が「０」の場合、ダーティでないと判定する。
【０１９６】
ダーティの場合（Ｓ２０３でＹｅｓ）、ＤＭＡＣリード制御部６４は、ヒットしたデータをライトバックする（Ｓ２０４）。
【０１９７】
ライトバックが完了した後、ＤＭＡＣリード制御部６４は、リードコマンドを第４ポート２１４に出力する（Ｓ２０５）。
【０１９８】
また、ダーティでない場合（Ｓ２０３でＮｏ）、又は、ステップＳ２０２でキャッシュミスの場合（Ｓ２０２でミス）、ＤＭＡＣリード制御部６４は、ライトバック（Ｓ２０４）を行わずに、リードコマンドを第４ポート２１４に出力する（Ｓ２０５）。
【０１９９】
一方、ＣＰＵ２０１によりリードコマンドが発行された場合、つまり第１ポート２１１にリードコマンドが入力された場合（Ｓ２０１でＣＰＵ）、ヒット判定部７１は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２０６）。
【０２００】
格納している場合（Ｓ２０６でヒット）、ＣＰＵリード制御部６１は、ヒットしたデータをリードデータとしてＣＰＵ２０１（第１ポート２１１）に出力する（Ｓ２０８）。
【０２０１】
一方、格納していない場合（Ｓ２０６でミス）、ＣＰＵリード制御部６１は、リードコマンドで指定されるアドレスのデータをメモリ２０４から読み出す（Ｓ２０７）。具体的には、ＣＰＵリード制御部６１は、ＣＰＵ２０１により入力されたリードコマンドと同じアドレスを指定するリードコマンドを第２ポート２１２に出力する。第２ポート２１２に出力されたリードコマンドは、メモリコントローラ２０３の第１ポート２３１を介して、メモリ２０４に出力される。リードコマンドを受けたメモリ２０４は、当該リードコマンドで指定されるアドレスに格納するデータをリードデータとしてメモリコントローラ２０３に出力する。メモリコントローラ２０３は、メモリ２０４により出力されたリードデータを第１ポート２３１から、Ｌ２キャッシュ２０２の第２ポート２１２に出力する。
【０２０２】
ＣＰＵリード制御部６１は、第２ポート２１２に入力されたリードデータをキャッシュ格納部７０に格納するとともに、当該リードデータを第１ポート２１１からＣＰＵ２０１に出力する（Ｓ２０８）。
【０２０３】
次に、ライトアクセス時のＬ２キャッシュ２０２の動作を説明する。
【０２０４】
図１２は、ライトコマンドが入力された際の、Ｌ２キャッシュ２０２の動作の流れを示すフローチャートである。
【０２０５】
図１２に示すように、ＤＭＡＣ２０５によりライトコマンドが発行された場合、つまり第３ポート２１３にライトコマンドが入力された場合（Ｓ２１１でＤＭＡＣ）、ヒット判定部７１は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２１２）。
【０２０６】
格納している場合（Ｓ２１２でヒット）、次に、Ｌ２キャッシュ２０２は、ヒットしたデータを無効化する（Ｓ２１３）。具体的には、Ｌ２キャッシュ２０２は、ヒットしたデータのバリッドフラグ４２を「０」に設定する。
【０２０７】
次に、Ｌ２キャッシュ２０２は、ライトコマンドを第４ポート２１４に出力する（Ｓ２１４）。
【０２０８】
また、ステップＳ２１２でキャッシュミスの場合（Ｓ２１２でミス）、Ｌ２キャッシュ２０２は、無効化（Ｓ２１３）を行わずに、ライトコマンドを第４ポート２１４に出力する（Ｓ２１４）。
【０２０９】
一方、ＣＰＵ２０１によりライトコマンドが発行された場合、つまり第１ポート２１１にライトコマンド及びライトデータが入力された場合（Ｓ２１１でＣＰＵ）、ヒット判定部７１は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部７０が格納しているか否かを判断する（Ｓ２１５）。
【０２１０】
格納している場合（Ｓ２１５でヒット）、ＣＰＵライト制御部６２は、ヒットしたデータを第１ポートに入力されたライトデータに更新する（Ｓ２１６）。具体的には、ＣＰＵライト制御部６２は、ヒットしたデータをライトデータに変更したうえで、ダーティフラグ４３をセットする。
【０２１１】
一方、格納していない場合（Ｓ２１５でミス）、ＣＰＵライト制御部６２は、ライン入れ替えを行う。つまり、ＣＰＵライト制御部６２は、新たなキャッシュエントリ４０を選択し、選択したキャッシュエントリ４０に、第１ポートに入力されたライトデータを格納する（Ｓ２１７）。また、ＣＰＵライト制御部６２は、当該ライトデータのダーティフラグをセットする。
【０２１２】
以上より、本発明の実施の形態に係るメモリシステム２００では、ＤＭＡＣ２０５からのアクセスにおいてリードヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータをライトバックした後、メモリ２０４からデータを読み出す。
【０２１３】
これにより、Ｌ２キャッシュ２０２のデータがＣＰＵ２０１により更新されたことにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータと一致しない場合でも、ＤＭＡＣ２０５は、正しいデータ（更新された後のデータ）を読み出せる。つまり、ＣＰＵ２０１は、書き込み処理を行った後にパージ（ライトバック）をＬ２キャッシュ２０２に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム２００は、ＣＰＵ２０１によりパージ処理を削減できるので、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０２１４】
また、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５からのアクセスにおいてライトヒットした場合には、Ｌ２キャッシュ２０２に格納されているヒットしたデータを無効化するとともに、メモリ２０４にデータを書き込む。
【０２１５】
これにより、ＤＭＡＣ２０５によるライトにより、Ｌ２キャッシュ２０２のデータとメモリ２０４のデータとが一致しなくなることを防止できる。つまり、Ｌ２キャッシュ２０２とメモリ２０４とのコヒーレンスを保つために、ＣＰＵ２０１及びＤＭＡＣ２０５は、特段の処理（パージ処理）を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム２００は、コヒーレンシを保つために生じるＣＰＵ２０１の処理性能低下を抑制できる。
【０２１６】
さらに、本発明の実施の形態に係るメモリシステム２００では、Ｌ２キャッシュ２０２は、ＤＭＡＣ２０５からのリードアクセスがヒットした場合でも、Ｌ２キャッシュ２０２が格納するデータをＤＭＡＣ２０５に出力しない。また、Ｌ２キャッシュ２０２は、ＤＭＡＣ２０５からのライトアクセスがヒットした場合でも、ＤＭＡＣ２０５から出力されたライトデータを格納しない。
【０２１７】
よって、Ｌ２キャッシュ２０２とＤＭＡＣ２０５との間にデータを伝送するためのバスを形成する必要がない。よって、本発明に係るメモリシステム２００は、図１５に示すメモリシステム１１０に比べ、面積を削減できる。さらに、リードデータ及びライトデータがＬ２キャッシュを経由しないので、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、ＤＭＡＣ２０５とＬ２キャッシュ２０２とのインターフェースが複雑化することを抑制できる。
【０２１８】
また、本発明の実施の形態に係るメモリシステム２００では、Ｌ２キャッシュ２０２が第４ポート２１４に出力したコマンドは、メモリコントローラ２０３の、コマンド発行もとのＤＭＡＣ２０５に対応する第２ポート２３２に入力される。これにより、メモリコントローラ２０３は、当該コマンドを、ＤＭＡＣ２０５が発行したものとして扱うことになる。つまり、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５がＬ２キャッシュ２０２を経由せずにメモリ２０４にアクセスする場合から、メモリコントローラ２０３の制御を変更することなく、実現できる。また、メモリ２０４へのアクセスにおける各マスタ（ＣＰＵ２０１及びＤＭＡＣ２０５）に対するバンド幅の割り当て制御を容易に実現できる。
【０２１９】
なお、上述したインターフェースの複雑化は、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されている場合に特に問題となる。言い換えると、本発明の実施の形態に係るメモリシステム２００は、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されている場合に、特に、有効である。
【０２２０】
例えば、リングバスを用いるメモリシステムでは、ＤＭＡＣ２０５等の外部マスタと、メモリ２０４との間で複数のバスプロトコルが使用されるので、本発明は、特に有効である。
【０２２１】
図１３は、本発明の実施の形態に係るメモリシステム２００の変形例であり、リングバスを用いるメモリシステム２１０の構成を示す図である。図１３に示すように、メモリシステム２１０は、リングバス２４１を備える。なお、図１と同様の要素には同一の符号を付しており説明は省略する。Ｌ２キャッシュ２０２、バス制御部２０６及びメモリコントローラ２０３は、リングバス２４１を経由して接続される。
【０２２２】
以上、本発明の実施の形態に係るキャッシュメモリについて説明したが、本発明は、この実施の形態に限定されるものではない。
【０２２３】
例えば、上記説明では、Ｌ２キャッシュ２０２及びＬ１キャッシュを備えるメモリシステムを例に説明したが、Ｌ１キャッシュのみを備えるメモリシステムに本発明を適用してもよい。
【０２２４】
なお、メモリシステムがレベル１キャッシュとレベルキャッシュとを有する場合には、レベル２キャッシュに本発明を適用することが好適である。なぜなら、レベル２キャッシュがメモリシステム全体に与える影響は、レベル１キャッシュに比べ低い。具体的には、レベル１キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル１キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル１キャッシュへのアクセスに悪影響が出てしまう。よって、レベル２キャッシュに本発明に係るキャッシュメモリを適用することで、レベル１キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
【０２２５】
また、レベル３キャッシュ以上を備えるメモリシステムに本発明を適用してもよい。この場合、上述した理由により最大レベルのキャッシュに本発明のキャッシュメモリを適用することが好ましい。
【０２２６】
また、図１において、２個のＣＰＵ２０１と、２個のＤＭＡＣ２０５とを示しているが、ＣＰＵ２０１及びＤＭＡＣ２０５の数は、１個又は３個以上であってもよい。また、ＤＭＡＣ２０５以外のマスタが含まれてもよい。
【０２２７】
なお、図１に示すように、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１により共用されるＬ２キャッシュ２０２に本発明に係るキャッシュメモリを適用することは、特に好適である。
【０２２８】
なぜなら、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１によりＬ２キャッシュ２０２が共用される場合、複数のＬ１キャッシュ２０７と、共用されているＬ２キャッシュ２０２との間のコヒーレンシを保つために、複数のＣＰＵ２０１は、スヌープ方式等のアルゴリズムに基づいた制御を行っている。よって、この制御に加え、Ｌ２キャッシュ２０２とメモリ２０４との間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをＬ２キャッシュ２０２に適用することで、Ｌ２キャッシュ２０２とメモリ２０４との間のコヒーレンスを保つための処理（パージ処理）を削減できるので、上記制御の複雑化を回避できる。このように、本発明に係るキャッシュメモリは、それぞれがＬ１キャッシュ２０７を備える複数のＣＰＵ２０１により共用されるＬ２キャッシュ２０２に適用することが、特に好適である。
【０２２９】
また、上記説明は、Ｌ２キャッシュ２０２が４ウェイ・セット・アソシエイティブ方式のキャッシュメモリの場合を例に説明したが、ウェイ３１の数は４個以外でもよい。
【０２３０】
さらに、フルアソシエイティブ方式のキャッシュメモリ、又は、ダイレクトマップ方式のキャッシュメモリに本発明を適用してもよい。
【産業上の利用可能性】
【０２３１】
本発明は、キャッシュメモリ及びキャッシュメモリを備えるメモリシステムに適用できる。
【符号の説明】
【０２３２】
２０  アドレスレジスタ
２１  メモリＩ／Ｆ
３０  デコーダ
３１、３１ａ、３１ｂ、３１ｃ、３１ｄ  ウェイ
３２ａ、３２ｂ、３２ｃ、３２ｄ  比較器
３３ａ、３３ｂ、３３ｃ、３３ｄ  アンド回路
３４  オア回路
３５、３６  セレクタ
３７  デマルチプレクサ
３８  制御部
４０  キャッシュエントリ
４１  タグ
４２  バリッドフラグ
４３  ダーティフラグ
４４  ラインデータ
５１  タグアドレス
５２  セットインデックス
５３  ワードインデックス
６０  ＣＰＵアクセス制御部
６１  ＣＰＵリード制御部
６２  ＣＰＵライト制御部
６３  ＤＭＡＣアクセス制御部
６４  ＤＭＡＣリード制御部
６５  ＤＭＡＣライト制御部
７０  キャッシュ格納部
７１  ヒット判定部
１００、１１０、２００、２１０  メモリシステム
１０１、２０１  ＣＰＵ
１０２  キャッシュメモリ
１０３、２０３  メモリコントローラ
１０４、２０４  メモリ
１０５、２０５  ＤＭＡＣ
１０６  バス
２０２  Ｌ２キャッシュ
２０６  バス制御部
２０７  Ｌ１キャッシュ
２１１、２２１、２３１  第１ポート
２１２、２２２、２３２  第２ポート
２１３、２２３  第３ポート
２１４、２２４  第４ポート
２２５  調停部
２２６  選択部
２４１  リングバス
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、
前記プロセッサからのコマンドが入力される第１ポートと、
前記プロセッサ以外のマスタからのコマンドが入力される第２ポートと、
前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、
前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御部とを備える
キャッシュメモリ。
【請求項２】
前記第１制御部は、
前記コマンドとしてリードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第１リード制御部を備える
請求項１記載のキャッシュメモリ。
【請求項３】
前記第１リード制御部は、前記リードコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する
請求項１又は２記載のキャッシュメモリ。
【請求項４】
請求項２又は３記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
前記メインメモリは、前記第１リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
メモリシステム。
【請求項５】
前記キャッシュメモリは、さらに、
前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第１ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第２リード制御部を備える
請求項４記載のメモリシステム。
【請求項６】
前記メモリシステムは、さらに、
前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
前記メモリコントローラは、
前記第１リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第３ポートと、
前記第２リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第４ポートとを有し、
前記メモリコントローラは、前記第３ポートに入力されたリードコマンドと、前記第４ポートに入力されたリードコマンドとを、当該リードコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたリードコマンドであるかに応じて調停する
請求項５記載のメモリシステム。
【請求項７】
前記メモリシステムは、さらに、
前記第１リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、
前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
請求項４記載のメモリシステム。
【請求項８】
前記第１制御部は、
前記コマンドとしてライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第１ライト制御部を備える
請求項１〜３のいずれか１項に記載のキャッシュメモリ。
【請求項９】
前記第１ライト制御部は、前記ライトコマンドが前記第２ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する
請求項８記載のキャッシュメモリ。
【請求項１０】
請求項８又は９記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、
前記メインメモリは、前記マスタにより出力されたライトデータを、前記第１ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する
メモリシステム。
【請求項１１】
前記キャッシュメモリは、さらに、
前記ライトコマンド及びライトデータが前記第１ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第２ライト制御部を備え、
前記第２ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力する
請求項１０記載のメモリシステム。
【請求項１２】
前記メモリシステムは、さらに、
前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
前記メモリコントローラは、
前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第３ポートと、
前記第２ライト制御部により出力されたライトコマンド及びライトデータが入力される第４ポートとを有し、
前記メモリコントローラは、前記第３ポートに入力されたライトコマンドと、前記第４ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第３ポート及び前記第４ポートのうちいずれに入力されたライトコマンドであるかに応じて調停する
請求項１１記載のメモリシステム。
【請求項１３】
前記メモリシステムは、さらに、
前記第１ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、
前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納する
請求項１０記載のメモリシステム。
【請求項１４】
前記プロセッサは、レベル１キャッシュを備え、
前記キャッシュメモリは、レベル２キャッシュである
請求項４〜７及び１０〜１３のいずれか１項に記載のメモリシステム。
【請求項１５】
前記メモリシステムは、
前記プロセッサを含む複数のプロセッサを含み、
前記複数のプロセッサの各々は、レベル１キャッシュを備え、
前記キャッシュメモリは、前記複数のプロセッサに共用される
請求項１４記載のメモリシステム。
【請求項１６】
プロセッサからのコマンドが入力される第１ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第２ポートとを備え、前記プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリの制御方法であって、
前記第１ポート及び前記第２ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定ステップと、
前記コマンドが前記第２ポートに入力され、かつ前記ヒット判定ステップで格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第１制御ステップとを含む
キャッシュメモリの制御方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010035425.tif 000019
【図２】
2010035425.tif 000020
【図３】
2010035425.tif 000021
【図４】
2010035425.tif 000022
【図５】
2010035425.tif 000023
【図６】
2010035425.tif 000024
【図７】
2010035425.tif 000025
【図８】
2010035425.tif 000026
【図９】
2010035425.tif 000027
【図１０】
2010035425.tif 000028
【図１１】
2010035425.tif 000029
【図１２】
2010035425.tif 000030
【図１３】
2010035425.tif 000031
【図１４】
2010035425.tif 000032
【図１５】
2010035425.tif 000033
【図１６】
2010035425.tif 000034
【国際調査報告】
2010035425.tif 000035
2010035425.tif 000036