(57)【要約】【課題】キャッシュ排出処理に関する情報を通知しないプロセッサをもちいてマルチプロセッサシステムを構築した場合であっても確実にキャッシュの整合性制御をおこなうことができるメモリ制御装置およびメモリ制御方法を提供すること。【解決手段】ＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理の開始時に対象データのアドレス情報をＥＬＡレジスタ１６０に格納し、プロセッサから取得要求のあったデータのアドレスがＥＬＡレジスタ１６０に存在する間はリクエスト処理部がデータ取得処理を再実行し続ける。また、プロセッサによる自律的ムーブアウトの開始時に対象データのアドレス情報をＥＷＢバッファ１５０に格納し、ＢａｃｋＥｖｉｃｔｉｏｎ対象のデータのアドレスがＥＷＢバッファ１５０に存在する場合はＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理を中止する。【選択図】        図１
2006155080.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有する少なくとも１台のプロセッサと接続され、該プロセッサの主記憶へのアクセスを制御するメモリ制御装置であって、
前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段と、
前記プロセッサのメモリアクセス要求を処理するリクエスト処理手段であって、前記タグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理手段と、
前記リクエスト処理手段が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまでエントリの一つに記憶する排出対象データ記憶手段と、
前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理手段において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理手段にデータの取得経路判定処理を再実行させる再実行判定手段と
を備えたことを特徴とするメモリ制御装置。
【請求項２】
前記再実行判定手段は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理手段に前記取得経路判定処理を再実行させないことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記プロセッサのいずれかからのメモリアクセス要求を受付け、前記リクエスト処理手段に前記メモリアクセス要求に対する対応処理をおこなうように指示し、前記対応処理が完了するまで前記リクエスト処理手段における処理状況を監視するリクエスト受付手段をさらに備え、
前記リクエスト処理手段は、前記再実行判定手段が前記取得経路判定処理の再実行が必要と判断した場合に、前記リクエスト受付手段に前記対応処理の再実行を指示することを特徴とする請求項１または２に記載のメモリ制御装置。
【請求項４】
前記排出対象データ記憶手段は、情報を保持するエントリごとにデータの有効性を示す有効ビットを備えたことを特徴とする請求項１〜３のいずれか一つに記載のメモリ制御装置。
【請求項５】
前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで記憶する自律排出対象データ記憶手段と、
前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理手段に排出処理の要求を中止させるキャンセル判定手段と
をさらに備えたことを特徴とする請求項１〜４のいずれか一つに記載のメモリ制御装置。
【請求項６】
前記キャンセル判定手段は、前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理手段に排出処理の要求を中止させないことを特徴とする請求項１〜５のいずれか一つに記載のメモリ制御装置。
【請求項７】
キャッシュメモリを有する少なくとも１台のプロセッサと接続されたメモリ制御装置において、該プロセッサの主記憶へのアクセスを制御するメモリ制御方法であって、
前記プロセッサのメモリアクセス要求を処理するリクエスト処理工程であって、前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理工程と、
前記リクエスト処理工程が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまで排出対象データ記憶手段のエントリの一つに記憶させる排出対象データ記憶工程と、
前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理工程において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理工程にデータの取得経路判定処理を再実行させる再実行判定工程と
を含んだことを特徴とするメモリ制御方法。
【請求項８】
前記再実行判定工程は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理工程に前記取得経路判定処理を再実行させないことを特徴とする請求項７に記載のメモリ制御方法。
【請求項９】
前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで自律排出対象データ記憶手段に記憶させる自律排出対象データ記憶工程と、
前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理工程に排出処理の要求を中止させるキャンセル判定工程と
をさらに含んだことを特徴とする請求項７または８に記載のメモリ制御方法。
【請求項１０】
前記キャンセル判定工程は、前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理工程に排出処理の要求を中止させないことを特徴とする請求項７〜９のいずれか一つに記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリ制御装置およびメモリ制御方法に関し、特に、キャッシュ排出処理に関する情報を通知しないプロセッサをもちいてマルチプロセッサシステムを構築した場合であっても確実にキャッシュの整合性制御をおこなうことができるメモリ制御装置およびメモリ制御方法に関するものである。
【背景技術】
【０００２】
近年、プロセッサと主記憶の速度差を解消するために、プロセッサ内等にキャッシュメモリが設けられることが多い。キャッシュメモリはプロセッサから高速にアクセス可能であるが、主記憶と比べて容量が非常に小さい。このため、キャッシュメモリに主記憶のデータを全て格納することはできず、使用される可能性の高いものを順次入替えて格納することが必要となる。キャッシュメモリの内の古いデータを主記憶に排出し、替わりに新たに必要となったデータを主記憶からキャッシュメモリにコピーする動作をキャッシュリプレースという。
【０００３】
一般的なキャッシュリプレース動作に関する技術については、例えば特許文献１において開示されているが、ここでは、マルチプロセッサシステムにおけるキャッシュリプレース動作について説明する。
【０００４】
図９は、キャッシュリプレース動作の一例について説明するための説明図である。同図に示すように、マルチプロセッサシステムを構成するプロセッサ１０とプロセッサ２０は、それぞれキャッシュメモリ１１とキャッシュメモリ１２を内蔵している。ここでは、これらのキャッシュメモリは４Ｗａｙセットアソシエイティブ方式で制御されているものとする。また、あるキャッシュインデックスの全てのＷａｙが有効な状態であり、それぞれのＷａｙにデータＡ〜Ｄが格納されているものとする。
【０００５】
そして、プロセッサ１０とプロセッサ２０は、メモリ制御装置１００を介して主記憶４０と接続されている。プロセッサ１０および２０と主記憶４０の間のデータの入出力制御をおこなうメモリ制御装置１００は、キャッシュの整合性制御を効率的におこなうためにＴＡＧ−ＲＡＭ１３０を内蔵しており、ＴＡＧ−ＲＡＭ１３０は、キャッシュメモリ１１とキャッシュメモリ１２に格納されたデータのアドレス情報を保持している。
【０００６】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１３０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、無効化対象のブロックとしてＷａｙ１を選択したものとする（ステップＳ１３０２）。
【０００７】
プロセッサ１０は、Ｗａｙ１に格納されたデータＢを排出し、排出したあとのブロックを無効化するというキャッシュ排出処理をおこない、メモリ制御装置１００に対してデータＢのキャッシュ排出処理をおこなった旨を通知する（ステップＳ１３０３）。メモリ制御装置１００は、それを受けて、データＢのアドレス情報を格納したＴＡＧ−ＲＡＭ１３０のＷａｙ１を無効化し、プロセッサ１０が排出したデータＢを主記憶４０に書き込む。
【０００８】
その後、ステップＳ１３０１で要求されたデータＥが主記憶４０からメモリ制御装置１００に送出され、これを受け取ったメモリ制御装置１００は、このデータＥのアドレス情報を自身のＴＡＧ−ＲＡＭ１３０のＷａｙ１に格納するとともに、データＥをプロセッサ１０に転送する。そして、これを受け取ったプロセッサ１０は、データＥをＷａｙ１に格納し、一連のキャッシュリプレース動作が完了する。
【０００９】
このように、マルチプロセッサシステムにおけるキャッシュリプレース動作においては、プロセッサのキャッシュメモリの内容が更新されるだけでなく、メモリ制御装置のＴＡＧ−ＲＡＭの内容もキャッシュメモリの更新内容にあわせて更新される。メモリ制御装置は、ＴＡＧ−ＲＡＭを参照してデータの入出力経路を判断するため、プロセッサのキャッシュメモリとメモリ制御装置のＴＡＧ−ＲＡＭの内容を一致させることは、キャッシュの整合性管理をおこなう上で必要不可欠な要件である。
【００１０】
【特許文献１】特開平１０−５５３０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、プロセッサの中には、キャッシュ排出処理に関する情報をメモリ制御装置に対して通知しないものがある。そのようなプロセッサを用いてマルチプロセッサシステムを構成する場合は、図９で示したような一般的な方式ではキャッシュリプレース動作時にＴＡＧ−ＲＡＭの内容をプロセッサのキャッシュメモリと一致させることができない。
【００１２】
マルチプロセッサシステムにおいてＴＡＧ−ＲＡＭの内容をプロセッサのキャッシュメモリと一致させることができないとなると、メモリ制御装置はキャッシュの整合性を保つことができなくなる。もしも、ＴＡＧ−ＲＡＭを利用せずに整合性を保とうとすると、メモリアクセスが必要になるたびに全プロセッサにキャッシュの有無を確認する作業が必要となり、システム性能が大幅に低下してしまう。
【００１３】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、キャッシュ排出処理に関する情報を通知しないプロセッサをもちいてマルチプロセッサシステムを構築した場合であっても確実にキャッシュの整合性制御をおこなうことができるメモリ制御装置およびメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、本発明は、キャッシュメモリを有する少なくとも１台のプロセッサと接続され、該プロセッサの主記憶へのアクセスを制御するメモリ制御装置であって、前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段と、前記プロセッサのメモリアクセス要求を処理するリクエスト処理手段であって、前記タグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理手段と、前記リクエスト処理手段が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまでエントリの一つに記憶する排出対象データ記憶手段と、前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理手段において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理手段にデータの取得経路判定処理を再実行させる再実行判定手段とを備えたことを特徴とする。
【００１５】
また、本発明は、キャッシュメモリを有する少なくとも１台のプロセッサと接続されたメモリ制御装置において、該プロセッサの主記憶へのアクセスを制御するメモリ制御方法であって、前記プロセッサのメモリアクセス要求を処理するリクエスト処理工程であって、前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理工程と、前記リクエスト処理工程が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまで排出対象データ記憶手段のエントリの一つに記憶させる排出対象データ記憶工程と、前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理工程において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理工程にデータの取得経路判定処理を再実行させる再実行判定工程とを含んだことを特徴とする。
【００１６】
この発明によれば、プロセッサからキャッシュ排出処理が通知されないためにメモリ制御装置側からプロセッサにキャッシュ排出処理を要求したならば、その処理中は対象データのアドレス情報を記憶部に格納し、他のプロセッサから要求されたデータのアドレスがこの記憶部のデータのアドレス情報と一致した場合は、要求されたデータの取得処理をやり直すように構成したので、プロセッサにキャッシュ排出処理を要求する際にタグ情報記憶手段（ＴＡＧ−ＲＡＭ）の内容がキャッシュ不整合を示す状態になっても、プロセッサに不正なデータが応答される事態を回避することができる。
【００１７】
また、本発明は、上記の発明において、前記再実行判定手段は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理手段に前記取得経路判定処理を再実行させないことを特徴とする。
【００１８】
また、本発明は、上記の発明において、前記再実行判定工程は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理工程に前記取得経路判定処理を再実行させないことを特徴とする。
【００１９】
この発明によれば、プロセッサからキャッシュ排出処理が通知されないためにメモリ制御装置側からプロセッサにキャッシュ排出処理を要求したならば、その処理中は対象データのアドレス情報を記憶部に格納するが、他のプロセッサから要求されたデータのアドレスがこの記憶部のデータのアドレス情報と一致しない場合は、要求されたデータの取得処理のやり直しをおこなわないように構成したので、プロセッサにキャッシュ排出処理を要求している場合であってもレイテンシを増大させることなくプロセッサにデータを応答することができる。
【００２０】
また、本発明は、上記の発明において、前記プロセッサのいずれかからのメモリアクセス要求を受付け、前記リクエスト処理手段に前記メモリアクセス要求に対する対応処理をおこなうように指示し、前記対応処理が完了するまで前記リクエスト処理手段における処理状況を監視するリクエスト受付手段をさらに備え、前記リクエスト処理手段は、前記再実行判定手段が前記取得経路判定処理の再実行が必要と判断した場合に、前記リクエスト受付手段に前記対応処理の再実行を指示することを特徴とする。
【００２１】
この発明によれば、リクエスト処理手段の処理状況を管理するリクエスト受付手段が存在する場合は、再実行判定手段がリクエスト受付手段に対してデータの取得処理のやり直しをおこなうように指示するように構成したので、再実行判定手段はリクエスト処理手段の処理状況を確認する必要がなくなり、装置を簡略化することができる。
【００２２】
また、本発明は、上記の発明において、前記排出対象データ記憶手段は、情報を保持するエントリごとにデータの有効性を示す有効ビットを備えたことを特徴とする。
【００２３】
この発明によれば、排出対象データ記憶手段のエントリの有効ビットをオフにすることでそのエントリを無効化することができるように構成したので、エントリの無効化をおこなう仕組みを簡略化することができる。
【００２４】
また、本発明は、上記の発明において、前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで記憶する自律排出対象データ記憶手段と、前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理手段に排出処理の要求を中止させるキャンセル判定手段とをさらに備えたことを特徴とする。
【００２５】
また、本発明は、上記の発明において、前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで自律排出対象データ記憶手段に記憶させる自律排出対象データ記憶工程と、前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理工程に排出処理の要求を中止させるキャンセル判定工程とをさらに含んだことを特徴とする。
【００２６】
この発明によれば、プロセッサによる自律的ムーブアウトの処理中は対象データのアドレス情報を記憶部に格納し、メモリ制御装置側からプロセッサにキャッシュ排出処理を要求する際に排出処理対象のデータのアドレスがこの記憶部のデータのアドレス情報と一致した場合は、キャッシュ排出処理の要求を中止するように構成したので、自律的ムーブアウトにより無効化されたブロックを再度排出して、主記憶上のデータを不正に上書きする事態を回避することができる。
【００２７】
また、本発明は、上記の発明において、前記キャンセル判定手段は、前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理手段に排出処理の要求を中止させないことを特徴とする。
【００２８】
また、本発明は、上記の発明において、前記キャンセル判定工程は、前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理工程に排出処理の要求を中止させないことを特徴とする。
【００２９】
この発明によれば、プロセッサによる自律的ムーブアウトの処理中は対象データのアドレス情報を記憶部に格納するが、メモリ制御装置側からプロセッサにキャッシュ排出処理を要求する際に排出処理対象のデータのアドレスがこの記憶部のデータのアドレス情報と一致しなければ、キャッシュ排出処理の要求をそのまま継続するように構成したので、キャッシュの整合性を正常に保つことができる。
【発明の効果】
【００３０】
本発明によれば、プロセッサからキャッシュ排出処理が通知されないためにメモリ制御装置側からプロセッサにキャッシュ排出処理を要求したならば、その処理中は対象データのアドレス情報を記憶部に格納し、他のプロセッサから要求されたデータのアドレスがこの記憶部のデータのアドレス情報と一致した場合は、要求されたデータの取得処理をやり直すように構成したので、プロセッサにキャッシュ排出処理を要求する際にタグ情報記憶手段（ＴＡＧ−ＲＡＭ）の内容がキャッシュ不整合を示す状態になっても、プロセッサに不正なデータが応答される事態を回避することができるという効果を奏する。
【００３１】
また、本発明によれば、プロセッサからキャッシュ排出処理が通知されないためにメモリ制御装置側からプロセッサにキャッシュ排出処理を要求したならば、その処理中は対象データのアドレス情報を記憶部に格納するが、他のプロセッサから要求されたデータのアドレスがこの記憶部のデータのアドレス情報と一致しない場合は、要求されたデータの取得処理のやり直しをおこなわないように構成したので、プロセッサにキャッシュ排出処理を要求している場合であってもレイテンシを増大させることなくプロセッサにデータを応答することができるという効果を奏する。
【００３２】
また、本発明によれば、リクエスト処理手段の処理状況を管理するリクエスト受付手段が存在する場合は、再実行判定手段がリクエスト受付手段に対してデータの取得処理のやり直しをおこなうように指示するように構成したので、再実行判定手段はリクエスト処理手段の処理状況を確認する必要がなくなり、装置を簡略化することができるという効果を奏する。
【００３３】
また、本発明によれば、排出対象データ記憶手段のエントリの有効ビットをオフにすることでそのエントリを無効化することができるように構成したので、エントリの無効化をおこなう仕組みを簡略化することができるという効果を奏する。
【００３４】
また、本発明によれば、プロセッサによる自律的ムーブアウトの処理中は対象データのアドレス情報を記憶部に格納し、メモリ制御装置側からプロセッサにキャッシュ排出処理を要求する際に排出処理対象のデータのアドレスがこの記憶部のデータのアドレス情報と一致した場合は、キャッシュ排出処理の要求を中止するように構成したので、自律的ムーブアウトにより無効化されたブロックを再度排出して、主記憶上のデータを不正に上書きする事態を回避することができるという効果を奏する。
【００３５】
また、本発明によれば、プロセッサによる自律的ムーブアウトの処理中は対象データのアドレス情報を記憶部に格納するが、メモリ制御装置側からプロセッサにキャッシュ排出処理を要求する際に排出処理対象のデータのアドレスがこの記憶部のデータのアドレス情報と一致しなければ、キャッシュ排出処理の要求をそのまま継続するように構成したので、キャッシュの整合性を正常に保つことができるという効果を奏する。
【発明を実施するための最良の形態】
【００３６】
以下に添付図面を参照して、この発明に係るメモリ制御装置およびメモリ制御方法
の好適な実施の形態を詳細に説明する。ここでは、まず、発明が解決しようとする課題を解決するためのＢａｃｋＥｖｉｃｔｉｏｎというメモリ制御手法とその問題点について説明し、その後に、その問題点を解決した本発明に係るメモリ制御装置およびメモリ制御方法の好適な実施例を示すこととする。
【００３７】
（ＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式およびその問題点）
キャッシュ排出処理に関する情報をメモリ制御装置に対して通知しないプロセッサを用いてマルチプロセッサシステムを構成する場合、メモリ制御装置側からプロセッサに対してキャッシュ排出処理の指示をおこなうことで課題の多くの部分を解決することができる。このようにメモリ制御装置側からプロセッサに対してキャッシュ排出処理の指示をおこなうことをＢａｃｋＥｖｉｃｔｉｏｎと呼ぶことにする。
【００３８】
ＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式の一例を示す。図１０は、ＢａｃｋＥｖｉｃｔｉｏｎをともなうキャッシュリプレースの動作の一例について説明するための説明図である。同図に示すように、プロセッサ１０のキャッシュメモリ１１は、４Ｗａｙセットアソシエイティブ方式で制御されているものとする。また、あるキャッシュインデックスの全てのＷａｙが有効な状態であり、それぞれのＷａｙにデータＡ〜Ｄが格納されているものとする。
【００３９】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１４０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、Ｗａｙ２を無効化対象のブロックとして選択したものとする（ステップＳ１４０２）。プロセッサ１０がＷａｙ２を無効化対象のブロックとして選択したことは、メモリ制御装置１００には通知されない。
【００４０】
一方、プロセッサ１０が主記憶４０に対してデータＥを要求したことを検出したメモリ制御装置１００は、データＥのアドレス情報をどこに格納するかを判断するためにＴＡＧ−ＲＡＭ１３０を参照する。そして、同一キャッシュインデックスの全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、データＢのアドレス情報を格納したＷａｙ１を無効化することに決定したものとする（ステップＳ１４０３）。
【００４１】
ここで、メモリ制御装置１００は、プロセッサ１０に対してデータＢを格納したＷａｙのキャッシュ排出処理をおこなうように要求する（ステップＳ１４０４）。要求を受けたプロセッサ１０は、データＢを格納したＷａｙ１のキャッシュ排出処理をおこない、Ｗａｙ１を無効化する（ステップＳ１４０５）。
【００４２】
その後、ステップＳ１４０１で要求されたデータＥが主記憶４０からメモリ制御装置１００に送出され、これを受け取ったメモリ制御装置１００は、このデータＥのアドレス情報を自身のＴＡＧ−ＲＡＭ１３０のＷａｙ１に格納するとともに、データＥをプロセッサ１０に転送する。そして、これを受け取ったプロセッサ１０は、データＥをＷａｙ２に格納し、一連の動作が完了する。
【００４３】
この動作の結果、図１０に示すようにキャッシュメモリ１１とＴＡＧ−ＲＡＭ１３０のＷａｙ１とＷａｙ２の内容が相違することになるが、キャッシュメモリ１１に格納されているデータのアドレス情報は全てＴＡＧ−ＲＡＭ１３０に格納されていることになるためデータの整合性上は問題ない。この状態であれば、メモリ制御装置１００がＴＡＧ−ＲＡＭ１３０を参照した結果、データＡ、ＥおよびＤの最新データがキャッシュメモリ１１に存在するにもかかわらず、これらのデータを主記憶４０から取得することはあり得ないからである。
【００４４】
このように、キャッシュ排出処理に関する情報をメモリ制御装置に対して通知しないプロセッサを用いてマルチプロセッサシステムを構成する場合であっても、メモリ制御装置側からプロセッサに対してキャッシュ排出処理の指示をおこなうことで、ほとんどの場合において、データの整合性を保つことができる。ただし、以下の２つの場合は例外であり、データの整合性が保たれない可能性がある。
【００４５】
一つ目の場合は、ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合である。ＢａｃｋＥｖｉｃｔｉｏｎ中は、プロセッサ１０のキャッシュメモリ１１に最新データが存在するにもかかわらず、メモリ制御装置１００のＴＡＧ−ＲＡＭ１３０の当該データのブロックが無効化されているタイミングが存在する。そのタイミングで他のプロセッサからそのデータと同一ラインの取得要求があると、そのデータは主記憶４０から取得されてしまい、最新ではない古いデータが取得されてしまうことになる。
【００４６】
二つ目の場合は、ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合である。プロセッサは、キャッシュの効率利用を図るため、キャッシュメモリから古くなったデータを自律的に排出する場合がある。このような自律的ムーブアウトにより無効化されたブロックのデータを、そうと知らずにＢａｃｋＥｖｉｃｔｉｏｎにより再度排出すると、主記憶４０上の最新のデータを古いデータで上書きしてしまう可能性がある。
【００４７】
以下、この２つの例について、例を示して説明することとする。図１１は、ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合の動作の一例について説明するための説明図である。同図に示すように、プロセッサ１０のキャッシュメモリ１１は、あるキャッシュインデックスの全てのＷａｙが有効な状態であり、それぞれのＷａｙにデータＡ〜Ｄが格納されているものとする。
【００４８】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１５０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、Ｗａｙ２を無効化対象のブロックとして選択したものとする（ステップＳ１５０２）。
【００４９】
一方、プロセッサ１０が主記憶４０に対してデータＥを要求したことを検出したメモリ制御装置１００は、データＥのアドレス情報をどこに格納するかを判断するためにＴＡＧ−ＲＡＭ１３０を参照する。そして、同一キャッシュインデックスの全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、データＢのアドレス情報を格納したＷａｙ１を無効化することに決定したものとする（ステップＳ１５０３）。
【００５０】
ここで、メモリ制御装置１００は、プロセッサ１０に対してデータＢを格納したＷａｙのキャッシュ排出処理をおこなうように要求する（ステップＳ１５０４）。このとき、ＴＡＧ−ＲＡＭ１３０のＷａｙ１は無効化される。また、データＢの最新データはキャッシュメモリ１１上に存在し、キャッシュ排出処理が完了していないため主記憶４０には更新前の古いデータが格納されている。
【００５１】
このタイミングで、プロセッサ２０が、データＢを主記憶４０に要求したとする（ステップＳ１５０５）。ＴＡＧ−ＲＡＭ１３０のデータＢが格納されていたブロックは無効化されているため、プロセッサ２０が要求したデータはＴＡＧ−ＲＡＭ１３０にはヒットせず、データＢはいずれのプロセッサのキャッシュにも存在しないものと判断されて、主記憶４０から取得されたデータＢがプロセッサ２０に応答される（ステップＳ１５０６）。これは、最新のデータＢではないため、データの不整合が発生してしまう。
【００５２】
図１２は、ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合の動作の一例について説明するための説明図である。ここでも、プロセッサ１０のキャッシュメモリ１１は、あるキャッシュインデックスの全てのＷａｙが有効な状態であり、それぞれのＷａｙにデータＡ〜Ｄが格納されているものとする。
【００５３】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１６０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、Ｗａｙ２を無効化対象のブロックとして選択したものとする（ステップＳ１６０２）。
【００５４】
一方、プロセッサ１０が主記憶４０に対してデータＥを要求したことを検出したメモリ制御装置１００は、データＥのアドレス情報をどこに格納するかを判断するためにＴＡＧ−ＲＡＭ１３０を参照する。そして、同一キャッシュインデックスの全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、データＢのアドレス情報を格納したＷａｙ１を無効化することに決定したものとする（ステップＳ１６０３）。
【００５５】
ここで、プロセッサ１０がデータＢを格納したブロックを自律的にムーブアウトしたとする（ステップＳ１６０４）。このムーブアウトによりデータＢを格納していたキャッシュメモリ１１のＷａｙ１は無効化され、最新のデータＢは主記憶４０に格納されることになる。
【００５６】
このタイミングで、メモリ制御装置１００がプロセッサ１０に対しておこなった、データＢを格納したＷａｙのキャッシュ排出処理要求が機能したとする（ステップＳ１６０５）。このキャッシュ排出処理が実行されて、キャッシュメモリ１１のＷａｙ１の内容が主記憶４０に書き込まれてしまうと（ステップＳ１６０６）、主記憶４０のデータＢは最新でないデータで上書きされてしまうことになり、データの不整合が発生してしまう。
【００５７】
このようにＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式には２つの問題点が存在する。以下の実施例では、この２つの問題点を解決したメモリ制御方式について説明をおこなう。
【実施例】
【００５８】
以下、本実施例に係るメモリ制御装置およびメモリ制御方法について説明することとする。図１は、本実施例に係るメモリ制御装置１００の構成を示す機能ブロック図である。同図に示すように、メモリ制御装置１００は、プロセッサ１０〜３０および主記憶４０と接続された構成をとる。
【００５９】
プロセッサ１０〜３０は、各種演算をおこなう演算装置であり、それぞれキャッシュメモリ１１、２１および３１を内蔵している。これらのキャッシュメモリは、４Ｗａｙセットアソシエイティブ方式で管理されているものとする。なお、メモリ制御装置１００に接続されるプロセッサの数は３個である必要はなく、何個であっても構わない。また、主記憶４０は、プロセッサ１０〜３０が利用するデータやプログラムを一時記憶する記憶装置である。
【００６０】
メモリ制御装置１００は、プロセッサ１０〜３０の要求に従って、主記憶４０とプロセッサ１０〜３０に内蔵されたキャッシュメモリ１１、２１および３１の間でデータの入出力をおこない、これらの記憶装置間でデータの不整合が発生しないように制御する制御装置である。メモリ制御装置１００は、リクエスト受付部１１０と、リクエスト処理部１２０と、ＴＡＧ−ＲＡＭ１３０と、キャッシュ制御部１４０と、ＥＷＢ（Early Write Back）バッファ１５０と、ＥＬＡ（Eviction Lock Address）レジスタ１６０と、再実行判定部１７０と、キャンセル判定部１８０とを有する。
【００６１】
なお、ＥＷＢバッファ１５０およびＥＬＡレジスタ１６０は、それぞれ、特許請求の範囲における自律排出対象データ記憶手段と排出対象データ記憶手段とに相当する。
【００６２】
リクエスト受付部１１０は、プロセッサ１０〜３０からのデータ入出力要求を受け付ける受付部であり、複数のポートからなる。それぞれのポートは、受け付けたデータ入出力要求が完了するまで、リクエスト処理部１２０における処理状況を監視する。リクエスト処理部１２０は、リクエスト受付部１１０が受け付けた要求を処理する処理部であり、複数の要求を並列処理するためにパイプライン化されている。
【００６３】
ＴＡＧ−ＲＡＭ１３０は、キャッシュメモリ１１、２１および３１に格納されているデータのアドレス情報を記憶する記憶部である。キャッシュ制御部１４０は、プロセッサ１０〜３０から入出力要求のあったデータのアドレス情報とＴＡＧ−ＲＡＭ１３０に格納されたアドレス情報とを比較して、データの入出力先や入出力手順、キャッシュメモリ１１、２１および３１やＴＡＧ−ＲＡＭ１３０の更新内容などを判断する制御部である。
【００６４】
ＥＷＢバッファ１５０は、プロセッサ１０〜３０から自律的ムーブアウト要求のあったデータのアドレス情報を格納するバッファである。ＥＷＢバッファ１５０には、自律的ムーブアウトの開始時にアドレス情報が格納され、自律的ムーブアウトの完了までこれが保持される。
【００６５】
図２は、ＥＷＢバッファ１５０の登録・解放動作について説明するための説明図である。同図に示すように、プロセッサ１０〜３０からの自律的ムーブアウトの要求があると、その要求がリクエスト受付部１１０で受け付けられるとともに要求対象のデータのアドレス情報ＥＷＢバッファ１５０に格納される(ステップＳ１０１)。そして、リクエスト処理部１２０にて要求の処理が完了すると、その要求対象のデータのアドレス情報がＥＷＢバッファ１５０から削除される(ステップＳ１０２）。
【００６６】
ＥＬＡレジスタ１６０は、ＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理がおこなわれているデータのアドレス情報を格納するレジスタである。ＥＬＡレジスタ１６０には、ＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理の開始時に処理対象のデータのアドレス情報がエントリ登録され、キャッシュ排出処理の完了時にエントリが無効化される。
【００６７】
図３は、ＥＬＡレジスタ１６０の登録動作について説明するための説明図である。同図に示すように、プロセッサからのメモリ獲得要求があると（ステップＳ２０１）、その要求は、リクエスト受付部１１０のポートのいずれか一つを獲得後、有効タイミングでリクエスト処理部１２０のパイプラインへ投入される（ステップＳ２０２）。
【００６８】
キャッシュ判定部１４０によりＴＡＧ−ＲＡＭ１３０が検索され、要求されたデータがキャッシュメモリ１１、２１もしくは３１にキャッシュされておらず、かつ、要求されたデータと同一インデックスのキャッシュのＷａｙが全て有効であることが分かったとする。すると、キャッシュ判定部１４０は、要求されたデータを主記憶４０から取得すべきことと、取得したデータを格納する場所をキャッシュ上に確保するためにキャッシュ排出処理を実行すべきこととをリクエスト処理部１２０へ通知する（ステップＳ２０３）。
【００６９】
通知を受けたリクエスト処理部１２０は、主記憶４０に対してデータの取得要求を送出するとともに、キャッシュ判定部１４０がキャッシュ排出処理の対象として選定したＷａｙのデータのキャッシュ排出処理要求をデータ要求元のプロセッサに対しておこなう。このとき、キャッシュ排出処理の対象として選定されたＷａｙに格納されているデータのアドレス情報をＥＬＡレジスタ１６０にエントリ登録する（ステップＳ２０４）。
【００７０】
図３に示すように、ＥＬＡレジスタ１６０の各エントリは、物理アドレスを格納する領域以外にエントリの有効性を示す有効ビット（Ｖビット）をもっており、アドレス情報をエントリ登録する場合は、アドレス情報を物理アドレスエリアに転記し、さらに有効ビットをオンにする処理をおこなうことになる。
【００７１】
図４は、ＥＬＡレジスタ１６０の解放動作について説明するための説明図である。同図に示すように、ステップＳ２０４でプロセッサに対して要求したキャッシュ排出処理要求に対応する応答リクエストが発行されると（ステップＳ３０１）、そのリクエストは、リクエスト受付部１１０のポートのいずれか一つを獲得後、有効タイミングでリクエスト処理部１２０のパイプラインへ投入される（ステップＳ３０２）。
【００７２】
このリクエストは、リクエスト処理部１２０での処理が完了すると、キャッシュ排出処理の対象データのアドレスを格納したエントリをＥＬＡレジスタ１６０から探し出し、このエントリの有効ビットをオフにする（ステップＳ３０３）。
【００７３】
再実行判定部１７０は、プロセッサからのメモリ取得要求があった場合に、ＥＬＡレジスタ１６０を参照して要求されたデータがＢａｃｋＥｖｉｃｔｉｏｎ処理中かどうかを確認し、処理中の場合にはリクエスト受付部１１０に要求の再実行を指示する処理部である。
【００７４】
図５は、再実行判定部１７０の動作について説明するための説明図である。ここでは、プロセッサから要求されたデータがＢａｃｋＥｖｉｃｔｉｏｎ処理中である状況を想定している。従って、ＴＡＧ−ＲＡＭ１３０中の当該データのブロックは無効化され、プロセッサのキャッシュメモリ中の最新データは主記憶４０に書き出されていないものとする。また、図３の動作により、ＥＬＡレジスタ１６０に当該データのアドレス情報が有効に登録されているものとする。
【００７５】
同図に示すように、プロセッサからのメモリ獲得要求があると（ステップＳ４０１）、その要求は、リクエスト受付部１１０のポートのいずれか一つを獲得後、有効タイミングでリクエスト処理部１２０のパイプラインへ投入される（ステップＳ４０２）。ＴＡＧ−ＲＡＭ１３０を検索しても、当該データはヒットしないため、リクエスト処理部１２０は、主記憶４０へデータ取得要求を発行する。
【００７６】
ここで、再実行判定部１７０は、ＥＬＡレジスタ１６０を検索し、要求されたデータとアドレスが一致する有効なエントリが存在することを検出し、リクエスト処理部１２０に処理の再実行を指示する（ステップＳ４０３）。この結果、メモリ獲得要求はリクエスト受付部１１０に戻され、リクエスト処理部１２０のパイプラインへ再投入されることになる（ステップＳ４０４）。再実行判定部１７０によるステップＳ４０３の動作は、ＢａｃｋＥｖｉｃｔｉｏｎが完了し、ＥＬＡレジスタ１６０の当該エントリが解放されるまで繰り返される。
【００７７】
このように、本実施例に係るメモリ管理方式では、ＢａｃｋＥｖｉｃｔｉｏｎを実行中のデータのアドレスをＥＬＡレジスタ１６０に保持しておき、プロセッサから獲得要求があったデータとアドレスが一致する有効なエントリがＥＬＡレジスタ１６０に存在する間は、再実行判定部１７０が主記憶からのデータ取得を再実行するように指示をし続ける。これより、ＢａｃｋＥｖｉｃｔｉｏｎ実行中にＴＡＧ−ＲＡＭ１３０のデータが無効化されることによるデータ不整合の発生を防止することができる。
【００７８】
キャンセル判定部１８０は、ＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理をプロセッサに依頼する状況である時に、キャッシュ排出処理の対象のデータが自律的ムーブアウトにより排出される途中であるかどうかをＥＷＢバッファ１５０を参照して確認し、自律的ムーブアウトにより排出される途中である場合にはＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理を中止させる処理部である。
【００７９】
図６は、キャンセル判定部１８０の動作について説明するための説明図である。同図に示すように、プロセッサからのメモリ獲得要求があると（ステップＳ５０１）、その要求は、リクエスト受付部１１０のポートのいずれか一つを獲得後、有効タイミングでリクエスト処理部１２０のパイプラインへ投入される（ステップＳ５０２）。そして、キャッシュ制御部１４０がＴＡＧ−ＲＡＭ１３０を参照した結果、ＢａｃｋＥｖｉｃｔｉｏｎが必要であると判断し、リクエスト処理部１２０がＥＬＡレジスタ１６０にＢａｃｋＥｖｉｃｔｉｏｎ対象のデータのアドレスを登録し、プロセッサに対してキャッシュ排出処理を要求しようとしたとする。
【００８０】
このとき、キャンセル判定部１８０は、ＥＷＢバッファ１５０の全エントリを検索し、ＥＬＡレジスタ１６０に登録したデータとアドレスが一致するエントリが存在するか否かを確認する。一致するエントリが存在した場合、キャンセル判定部１８０は、ＥＬＡレジスタ１６０の当該エントリの有効ビットをオフにし、キャッシュ排出処理の要求をキャンセルさせる（ステップＳ５０３）。
【００８１】
このように、本実施例に係るメモリ管理方式では、自律的ムーブアウト要求がＥＷＢバッファ１５０に格納されている間は、この要求でムーブアウトされようとしているデータに対するキャッシュ排出処理要求は、キャンセル判定部１８０によってキャンセルされる。これにより、不当なＢａｃｋＥｖｉｃｔｉｏｎにより主記憶４０上の最新データが古いデータで上書きされることを防止することを防止することができる。
【００８２】
次に、本実施例に係るメモリ制御装置の動作について例を示して説明する。図７は、ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合の動作の一例について説明するための説明図である。この図は、図１１に示したＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式において問題が発生する第１の場面と同一の場面を示している。
【００８３】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１１０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、Ｗａｙ２を無効化対象のブロックとして選択したものとする（ステップＳ１１０２）。
【００８４】
一方、プロセッサ１０が主記憶４０に対してデータＥを要求したことを検出したメモリ制御装置１００は、データＥのアドレス情報をどこに格納するかを判断するためにＴＡＧ−ＲＡＭ１３０を参照する。そして、同一キャッシュインデックスの全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、データＢのアドレス情報を格納したＷａｙ１を無効化することに決定したものとする（ステップＳ１１０３）。
【００８５】
ここで、メモリ制御装置１００は、ＥＬＡレジスタ１６にキャッシュ排出処理の対象であるデータＢのアドレス情報を登録し（ステップＳ１１０４）、プロセッサ１０に対してデータＢを格納したＷａｙのキャッシュ排出処理をおこなうように要求する（ステップＳ１１０５）。このとき、ＴＡＧ−ＲＡＭ１３０のＷａｙ１は無効化される。また、データＢの最新データはキャッシュメモリ１１上に存在し、キャッシュ排出処理が完了していないため主記憶４０には更新前の古いデータが格納されている。
【００８６】
このタイミングで、プロセッサ２０が、データＢを主記憶４０に要求したとする（ステップＳ１１０６）。ＴＡＧ−ＲＡＭ１３０のデータＢが格納されていたブロックは無効化されているため、プロセッサ２０が要求したデータＢはＴＡＧ−ＲＡＭ１３０にはヒットしない。このため、リクエスト処理部１２０は、主記憶４０からデータＢを取得しようとするが、データＢのアドレス情報がＥＬＡレジスタ１６０の有効なエントリに存在することを検知した再実行判定部１７０によって処理のやり直しを命じられる（ステップＳ１１０７）。この処理のやり直しは、ＥＬＡレジスタ１６０に、データＢのアドレス情報を格納した有効なエントリが存在する間繰り返される。
【００８７】
ステップＳ１１０５で要求したキャッシュ排出処理が完了すると、キャッシュメモリ１１上のデータＢの最新データは主記憶４０に書き出され、ＥＬＡレジスタ１６０の該当エントリは無効化される（ステップＳ１１０８）。ＥＬＡレジスタ１６０のエントリが無効化されたことにより、再実行判定部による処理のやり直し要求はなされなくなる。そして、主記憶４０に対してデータＢの取得要求がなされ（ステップＳ１１０９）、データＢがプロセッサ２０に対して送出される。
【００８８】
ここで送出されるデータＢは、プロセッサ１０のキャッシュメモリ１１が書き出した最新のデータであり、データの不整合が発生することはない。このように、本実施例に係るメモリ制御方式では、ＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式の第１番目の問題が解決されている。
【００８９】
図８は、ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合の動作の一例について説明するための説明図である。この図は、図１２に示したＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式において問題が発生する第２の場面と同一の場面を示している。
【００９０】
まず、プロセッサ１０が主記憶４０に対してデータＡ〜Ｄと同一キャッシュインデックスのデータＥを要求したとする（ステップＳ１２０１）。プロセッサ１０は、データＥをキャッシュのどこに格納するかを判断するためにキャッシュメモリ１１を参照する。そして、全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、Ｗａｙ２を無効化対象のブロックとして選択したものとする（ステップＳ１２０２）。
【００９１】
一方、プロセッサ１０が主記憶４０に対してデータＥを要求したことを検出したメモリ制御装置１００は、データＥのアドレス情報をどこに格納するかを判断するためにＴＡＧ−ＲＡＭ１３０を参照する。そして、同一キャッシュインデックスの全てのＷａｙが有効であるため、いずれかのＷａｙを無効化する必要があると判断する。ここでは、データＢのアドレス情報を格納したＷａｙ１を無効化することに決定したものとする（ステップＳ１２０３）。
【００９２】
リクエスト処理部１２０は、Ｗａｙ１を無効化し、Ｗａｙ１に格納されていたデータＢのアドレス情報をＥＬＡレジスタ１６０へ登録する。そして、プロセッサ１０に対してデータＢを格納したブロックのキャッシュ排出処理をおこなうように要求しようとする（ステップＳ１２０４）。
【００９３】
このタイミングで、プロセッサ１０がデータＢを格納したブロックを自律的にムーブアウトしたとする。このムーブアウトによりデータＢを格納していたキャッシュメモリ１１のＷａｙ１は無効化され、最新のデータＢは主記憶４０に書き出されることになる。また、ムーブアウトが完了するまでの間、ＥＷＢバッファ１５０にデータＢのアドレス情報が保持される（ステップＳ１２０５）。
【００９４】
ここで、キャンセル判定部１８０は、キャッシュ排出処理を要求しようとしているデータＢのアドレス情報がＥＷＢバッファ１５０のエントリに存在することを検出し（ステップＳ１２０６）、プロセッサ１０へのデータＢを格納したブロックのキャッシュ排出処理要求をキャンセルさせ、ＥＬＡレジスタ１６０のエントリも解放させる（ステップＳ１２０７）。
【００９５】
キャッシュ排出処理要求がキャンセルされることにより、自律的にムーブアウトされたブロックに対して不当なキャッシュ排出処理が実行されることを回避することができる。このように、本実施例に係るメモリ制御方式では、ＢａｃｋＥｖｉｃｔｉｏｎをもちいたメモリ制御方式の第２番目の問題も解決されている。
【００９６】
上述してきたように、本実施例では、ＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理の開始時に対象データのアドレス情報をＥＬＡレジスタ１６０に格納し、プロセッサから取得要求のあったデータのアドレスがＥＬＡレジスタ１６０に存在する間はリクエスト処理部がデータ取得処理を再実行し続けるように構成したので、ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合であっても不正なデータが取得される事態が発生することがない。
【００９７】
また、本実施例では、プロセッサによる自律的ムーブアウトの開始時に対象データのアドレス情報をＥＷＢバッファ１５０に格納し、ＢａｃｋＥｖｉｃｔｉｏｎ対象のデータのアドレスがＥＷＢバッファ１５０に存在する場合はＢａｃｋＥｖｉｃｔｉｏｎによるキャッシュ排出処理を中止するように構成したので、ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合であっても不正なデータを主記憶４０に上書きする事態が発生することがない。
【００９８】
（付記１）キャッシュメモリを有する少なくとも１台のプロセッサと接続され、該プロセッサの主記憶へのアクセスを制御するメモリ制御装置であって、
前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段と、
前記プロセッサのメモリアクセス要求を処理するリクエスト処理手段であって、前記タグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理手段と、
前記リクエスト処理手段が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまでエントリの一つに記憶する排出対象データ記憶手段と、
前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理手段において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理手段にデータの取得経路判定処理を再実行させる再実行判定手段と
を備えたことを特徴とするメモリ制御装置。
【００９９】
（付記２）前記再実行判定手段は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理手段に前記取得経路判定処理を再実行させないことを特徴とする付記１に記載のメモリ制御装置。
【０１００】
（付記３）前記プロセッサのいずれかからのメモリアクセス要求を受付け、前記リクエスト処理手段に前記メモリアクセス要求に対する対応処理をおこなうように指示し、前記対応処理が完了するまで前記リクエスト処理手段における処理状況を監視するリクエスト受付手段をさらに備え、
前記リクエスト処理手段は、前記再実行判定手段が前記取得経路判定処理の再実行が必要と判断した場合に、前記リクエスト受付手段に前記対応処理の再実行を指示することを特徴とする付記１または２に記載のメモリ制御装置。
【０１０１】
（付記４）前記排出対象データ記憶手段は、情報を保持するエントリごとにデータの有効性を示す有効ビットを備えたことを特徴とする付記１〜３のいずれか一つに記載のメモリ制御装置。
【０１０２】
（付記５）前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで記憶する自律排出対象データ記憶手段と、
前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理手段に排出処理の要求を中止させるキャンセル判定手段と
をさらに備えたことを特徴とする付記１〜４のいずれか一つに記載のメモリ制御装置。
【０１０３】
（付記６）前記キャンセル判定手段は、前記リクエスト処理手段が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理手段が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理手段に排出処理の要求を中止させないことを特徴とする付記１〜５のいずれか一つに記載のメモリ制御装置。
【０１０４】
（付記７）キャッシュメモリを有する少なくとも１台のプロセッサと接続されたメモリ制御装置において、該プロセッサの主記憶へのアクセスを制御するメモリ制御方法であって、
前記プロセッサのメモリアクセス要求を処理するリクエスト処理工程であって、前記プロセッサの有するキャッシュメモリに保持されたデータのアドレス情報を保持するタグ情報記憶手段のいずれかのブロックを無効化することが必要になった場合に、該ブロックに保持されているデータを主記憶へ排出するキャッシュ排出処理をおこなうように当該データをキャッシュメモリに保持するプロセッサに要求するリクエスト処理工程と、
前記リクエスト処理工程が前記キャッシュ排出処理をプロセッサに要求する場合に、処理対象データのアドレス情報を当該処理が完了するまで排出対象データ記憶手段のエントリの一つに記憶させる排出対象データ記憶工程と、
前記プロセッサのいずれかから要求されたデータを取得するための取得経路判定処理が前記リクエスト処理工程において確定したときに、前記排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに要求されたデータのアドレス情報が含まれていたならば、前記リクエスト処理工程にデータの取得経路判定処理を再実行させる再実行判定工程と
を含んだことを特徴とするメモリ制御方法。
【０１０５】
（付記８）前記再実行判定工程は、前記プロセッサのいずれかから要求されたデータのアドレスが前記排出対象データ記憶手段のいずれのエントリに記憶されたデータのアドレスとも一致しない場合は、前記リクエスト処理工程に前記取得経路判定処理を再実行させないことを特徴とする付記７に記載のメモリ制御方法。
【０１０６】
（付記９）前記プロセッサのいずれかが自律的にキャッシュデータを排出する自律的キャッシュ排出処理の対象データのアドレス情報を処理が完了するまで自律排出対象データ記憶手段に記憶させる自律排出対象データ記憶工程と、
前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれかエントリに前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていたならば、前記リクエスト処理工程に排出処理の要求を中止させるキャンセル判定工程と
をさらに含んだことを特徴とする付記７または８に記載のメモリ制御方法。
【０１０７】
（付記１０）前記キャンセル判定工程は、前記リクエスト処理工程が前記プロセッサのいずれかにデータの排出処理をおこなうように要求しようとする場合に、前記自律排出対象データ記憶手段に記憶された情報を検索し、いずれのエントリにも前記リクエスト処理工程が排出処理を要求しようとしているデータのアドレス情報が含まれていないならば、前記リクエスト処理工程に排出処理の要求を中止させないことを特徴とする付記７〜９のいずれか一つに記載のメモリ制御方法。
【産業上の利用可能性】
【０１０８】
以上のように、本発明にかかるメモリ制御装置およびメモリ制御方法は、キャッシュの整合性制御に有用であり、特に、キャッシュ排出処理に関する情報を通知しないプロセッサをもちいてマルチプロセッサシステムを構築した場合であっても確実にキャッシュの整合性制御をおこなうことが必要な場合に適している。
【図面の簡単な説明】
【０１０９】
【図１】本実施例に係るメモリ制御装置の構成を示す機能ブロック図である。
【図２】ＥＷＢバッファの登録・解放動作について説明するための説明図である。
【図３】ＥＬＡレジスタの登録動作について説明するための説明図である。
【図４】ＥＬＡレジスタの解放動作について説明するための説明図である。
【図５】再実行判定部の動作について説明するための説明図である。
【図６】キャンセル判定部の動作について説明するための説明図である。
【図７】ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合の動作の一例について説明するための説明図である。
【図８】ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合の動作の一例について説明するための説明図である。
【図９】キャッシュリプレース動作の一例について説明するための説明図である。
【図１０】ＢａｃｋＥｖｉｃｔｉｏｎをともなうキャッシュリプレースの動作の一例について説明するための説明図である。
【図１１】ＢａｃｋＥｖｉｃｔｉｏｎ完了前に他のプロセッサから同一ラインのデータの取得要求があった場合の動作の一例について説明するための説明図である。
【図１２】ＢａｃｋＥｖｉｃｔｉｏｎ対象のラインが自律的ムーブアウトにより無効化されていた場合の動作の一例について説明するための説明図である。
【符号の説明】
【０１１０】
１０，２０，３０    プロセッサ
１１，２１，３１    キャッシュメモリ
４０    主記憶
１００    メモリ制御装置
１１０    リクエスト受付部
１２０    リクエスト処理部
１３０    ＴＡＧ−ＲＡＭ
１４０    キャッシュ制御部
１５０    ＥＷＢバッファ
１６０    ＥＬＡレジスタ
１７０    再実行判定部
１８０    キャンセル判定部
【図１】
2006155080.tif 000003
【図２】
2006155080.tif 000004
【図３】
2006155080.tif 000005
【図４】
2006155080.tif 000006
【図５】
2006155080.tif 000007
【図６】
2006155080.tif 000008
【図７】
2006155080.tif 000009
【図８】
2006155080.tif 000010
【図９】
2006155080.tif 000011
【図１０】
2006155080.tif 000012
【図１１】
2006155080.tif 000013
【図１２】
2006155080.tif 000014