JP2004171469A - キャッシュメモリシステムおよびキャッシュメモリ制御方法 - Google Patents
キャッシュメモリシステムおよびキャッシュメモリ制御方法 Download PDFInfo
- Publication number
- JP2004171469A JP2004171469A JP2002339433A JP2002339433A JP2004171469A JP 2004171469 A JP2004171469 A JP 2004171469A JP 2002339433 A JP2002339433 A JP 2002339433A JP 2002339433 A JP2002339433 A JP 2002339433A JP 2004171469 A JP2004171469 A JP 2004171469A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- access
- cache
- cache line
- system memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】キャッシュメモリシステムを用いて、バスマスタ装置による複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知する。
【解決手段】I/O装置14にメモリアクセス処理を実行させる場合、キャッシュメモリ121には、更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインが割り当てられ、それらキャッシュラインの有効フラグの値は無効に、また動作設定フラグの値はアクセス監視モードに設定される。キャッシュコントローラ122はシステムメモリ13に対するライトアクセスを監視し、そのライトアクセスで更新されるメモリ13上のアドレスに対応するキャッシュラインの有効フラグの値を有効に更新する。アクセス監視モードに設定された全てのキャッシュラインが有効になると、メモリアクセス処理の完了がキャッシュコントローラ122からプロセッサ11に通知される。
【選択図】 図1
【解決手段】I/O装置14にメモリアクセス処理を実行させる場合、キャッシュメモリ121には、更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインが割り当てられ、それらキャッシュラインの有効フラグの値は無効に、また動作設定フラグの値はアクセス監視モードに設定される。キャッシュコントローラ122はシステムメモリ13に対するライトアクセスを監視し、そのライトアクセスで更新されるメモリ13上のアドレスに対応するキャッシュラインの有効フラグの値を有効に更新する。アクセス監視モードに設定された全てのキャッシュラインが有効になると、メモリアクセス処理の完了がキャッシュコントローラ122からプロセッサ11に通知される。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明はキャッシュメモリシステムおよびキャッシュメモリ制御方法に関し、特にプロセッサとバスマスタ装置とを含む情報処理装置で用いられるキャッシュメモリシステムおよびキャッシュメモリ制御方法に関する。
【0002】
【従来の技術】
近年、パーソナルコンピュータ等を初めとする多くの情報処理装置においては、プロセッサによるシステムメモリのアクセスの高速化を図るために、キャッシュメモリが設けられている。
【0003】
通常、キャッシュメモリは、システムメモリ上のデータをそれぞれ格納する複数のキャッシュラインの各々について、当該キャッシュラインに格納されたデータの有効/無効を管理する機能を有している。キャッシュメモリは、バスマスタとして機能するI/O装置によるシステムメモリへのライトアクセスを監視し、そのライトアクセスによってシステムメモリ上のデータが更新された時に、その更新されたデータを含むデータブロックを保持するキャッシュラインを無効化する。
【0004】
これにより、I/O装置によるライトアクセスによって既に旧くなったキャッシュメモリ上のデータをプロセッサが誤って読み込むことを未然に防止することができる。
【0005】
また、I/O装置がDMA転送によってメモリからデータを読み込む際に生じるキャッシュコヒーレンスに関する問題を解決するための技術も知られている(例えば、特許文献1参照。)。この特許文献1のシステムは、DMA転送の際に、メモリに記憶された転送元領域の最新データ(ダーティ・データ)がキャッシュに保持されているならば、その最新データをI/O装置に転送すると共に、メモリに書き込むように構成されている。
【0006】
【特許文献1】
特開2001−56872号公報(第3−5頁)
【0007】
【発明が解決しようとする課題】
ところで、最近では、アウトオブオーダー機能をもつメモリやバスブリッジが開発され始めている。アウトオブオーダー機能を用いることにより、メモリに対するアクセスをメモリアクセス要求の発生順とは異なる最適な順序で行うという、いわゆる追い越し制御を実現することができ、結果としてメモリアクセスの効率化や、I/O装置とメモリとの間のデータ転送の効率化を図ることが可能となる。
【0008】
しかし、このような追い越し制御を用いたシステムにおいては、メモリへの複数回のデータ転送を伴うメモリアクセス処理をI/O装置に実行させる場合に次のような問題が生じる危険がある。
【0009】
例えば、I/O装置が、プロセッサからのDMA転送等の指示に従い、システムメモリへの2回のデータ転送を伴うライトアクセス処理を実行する場合を想定する。I/O装置は、1番目のデータ転送、および2番目のデータ転送を、この順で順次実行し、2番目のデータ転送が終了した時点で、ライトアクセス処理が完了したことをプロセッサに通知する。しかし、追い越し制御を用いたシステムにおいては、I/O装置とメモリとの間の経路上においてデータ転送の順番の入れ換えが発生し、これによって1番目のデータ転送に対応するライトアクセスが、2番目のデータ転送に対応するライトアクセスの後に実行される場合がある。
【0010】
この場合、1番目のデータ転送に対応するライトアクセスが未実行であるにもかかわらず、メモリアクセス処理の完了がI/O装置からプロセッサに誤って通知されてしまう。このような誤った通知が発生すると、正常なシステム動作の実行を保証することが出来なくなる。また通知後にプロセッサまたはキャッシュが、1番目のデータ転送に対応するライトアクセスが実行される前の更新前データを更新後の最新のデータとしてメモリからリードしてしまうという問題を引き起こすことにもなる。
【0011】
本発明は上述の事情を考慮してなされたものであり、バスマスタ装置による複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能なキャッシュメモリシステムおよびキャッシュメモリ制御方法を提供することを目的とする。
【0012】
【課題を解決するための手段】
上述の課題を解決するため、本発明のキャッシュメモリシステムは、システムメモリ上のデータを格納する複数のキャッシュラインの各々について、当該キャッシュラインに格納されるデータに対応する前記システムメモリ上のアドレスを示すアドレスタグ情報と、当該キャッシュラインに格納されたデータの有効/無効を示す有効フラグ情報と、当該キャッシュラインがプロセッサと前記システムメモリとの間のデータ転送に使用される通常モード、およびバスマスタ装置によるメモリアクセス処理の完了を監視するためのアクセス監視モードのいずれに設定されているかを示す動作設定フラグ情報とを保持するキャッシュメモリと、前記バスマスタ装置に前記システムメモリへの複数回のデータ転送を伴うメモリアクセス処理を実行させる場合、前記メモリアクセス処理によって更新対象となる前記システムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインを前記キャッシュメモリ上に割り当てる手段と、前記割り当てられたキャッシュラインそれぞれに対応する有効フラグ情報を用いて当該各キャッシュラインを無効化すると共に、当該キャッシュラインそれぞれに対応する動作設定フラグ情報を前記アクセス監視モードに設定する手段と、前記システムメモリへのライトアクセスを監視し、前記アクセス監視モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに前記ライトアクセスによる前記システムメモリ上のデータの更新結果を格納すると共に、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを有効化する手段と、前記アクセス監視モードに設定された全てのキャッシュラインが有効化された場合、前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知する手段とを具備することを特徴とする。
【0013】
このキャッシュメモリシステムによれば、バスマスタ装置にメモリアクセス処理を実行させる場合には、そのメモリアクセス処理によって更新されるシステムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインをキャッシュメモリ上に用意してシステムメモリへのライトアクセスを監視することにより、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能となる。
【0014】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るキャッシュメモリシステムを用いた情報処理装置の構成が示されている。この情報処理装置は、図示のように、プロセッサ11、キャッシュメモリシステム12、システムメモリ13、第1および第2の2つのI/O装置14,15、割り込みコントローラ16、およびバス17を備えている。
【0015】
プロセッサ11は本情報処理装置の動作を制御するためのCPUであり、本情報処理装置の主記憶装置であるシステムメモリ13に記憶されたプログラムを実行することにより、I/O装置14,15の制御、およびキャッシュメモリシステム12の制御を行う。プロセッサ11によるシステムメモリ13のアクセスは、キャッシュメモリシステム12を介して行われる。
【0016】
キャッシュメモリシステム12は、システムメモリ13に記憶されたデータ(命令を含む)の一部を保持するためのものであり、データを保持するためのキャッシュメモリ121と、そのキャッシュメモリ121を制御するためのキャッシュコントローラ122とから構成されている。以下では、キャッシュメモリシステム12のキャッシュポリシーがライトスルーである場合を想定することとする。
【0017】
キャッシュメモリ121は、システムメモリ13上のデータブロックがそれぞれ格納される複数のキャッシュラインを備えている。各キャッシュラインには、図示のように、アドレスタグ、データブロック、有効フラグ、および動作設定フラグをそれぞれ保持するための記憶エリアが用意されている。キャッシュメモリ121は、プロセッサ11からのシステムメモリ13へのアクセスに対応するメモリキャッシュとしての動作によるアドレスタグの更新制御とは独立に、プロセッサ11により任意のキャッシュラインのアドレスタグと有効フラグと動作設定フラグの設定操作が可能に構成されている。
【0018】
アドレスタグは、当該キャッシュラインのデータブロックに格納されるシステムメモリ13上のデータブロックのアドレスの一部を示す。有効フラグは、当該キャッシュラインのデータブロックの有効(V:valid)/無効(I:invalid)を示す。
【0019】
動作設定フラグは、当該キャッシュラインの動作モードを指定するフラグ情報である。本実施形態においては、動作設定フラグは、プロセッサモード(P)、アクセス監視モード(A)、アクセス監視モード(B)のいずれかを示す。
【0020】
プロセッサモード(P)は、当該キャッシュラインがプロセッサ11とシステムメモリ13との間のデータ転送に使用される通常モードであることを示す。プロセッサモード(P)に設定されたキャッシュラインについては、キャッシュコントローラ122は、プロセッサ11の動作およびシステムメモリ13での動作を監視しプロセッサ11によるシステムメモリ13のアクセスに対応する通常のメモリキャッシュとしての動作を行う。
【0021】
アクセス監視モード(A),(B)は、当該キャッシュラインがバスマスタ装置(I/O装置14,15)によるシステムメモリ13のアクセス処理の完了を監視するためのキャッシュラインであることを示す。
【0022】
アクセス監視モード(A)は、I/O装置(A)14によって実行されるメモリアクセス処理の完了を監視するモード(I/O装置A対応状態)であることを示し、アクセス監視モード(B)は、I/O装置(B)15によって実行されるメモリアクセス処理の完了を監視するモード(I/O装置B対応状態)であることを示す。
【0023】
なお、各I/O装置対応状態は、必ずしも対応するI/O装置によるアクセスの監視にしか使用できないというわけではなく、例えばI/O装置A対応状態であっても、I/O装置(B)15によるメモリアクセスを監視対象に含ませることも可能である。
【0024】
つまりアクセス監視モードの(A),(B)は、複数回のデータ転送を伴うあるメモリアクセス処理(A)と、複数回のデータ転送を伴う別のメモリアクセス処理(B)とを区別するための識別情報として用いられる。よって、アクセス監視モードの(A),(B)が、必ずしもI/O装置(A)14,I/O装置(B)15にそれぞれ一対一で対応付けされる必要はない。
【0025】
すなわち、バスマスタ装置によるあるメモリアクセス処理(A)によって更新対象となるシステムメモリ13上のアドレスグループを(m)、バスマスタ装置による別のメモリアクセス処理(B)によって更新対象となるシステムメモリ13上のアドレスグループを(n)とすれば、アクセス監視モード(A),(B)は、それぞれアクセス監視モード(m),(n)と表記することが出来る。
【0026】
この意味で、アクセス監視モードの(A),(B)は、監視対象とすべきアドレスグループを識別するための情報であり、当該キャッシュラインが、複数のメモリアクセス処理によって更新対象となるシステムメモリ13上の複数のアドレスグループの内のいずれのアドレスグループに対応するアクセス監視モードであるかを管理するために用いられる。以下では、動作設定フラグの値がAの状態を「監視対象アドレスグループ(m)対応状態」と称し、動作設定フラグの値がBの状態を「監視対象アドレスグループ(n)対応状態」と称し、動作設定フラグの値がAまたはBの状態を「監視対象アドレスグループ(m/n)対応状態」と称することとする。
【0027】
I/O装置(A)14,I/O装置(B)15は上述したようにそれぞれバスマスタ装置として機能し、プロセッサ11によるDMA転送のための動作設定に従い、複数回のデータ転送を伴うメモリアクセス処理を実行する。
【0028】
このメモリアクセス処理の実行に先立ち、キャッシュメモリ121には、プロセッサ11の制御の下に、そのメモリアクセス処理で更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインが割り当てられる。既に該当するアドレスタグを持つキャッシュラインがキャッシュメモリ121に存在する場合には、それ以外の他のアドレスに対応するアドレスタグを持つキャッシュラインのみが新たにキャッシュメモリ121上に用意される。新たに用意されたキャッシュラインのデータブロックは空きのままでよい。そして、プロセッサ11の制御の下に、更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインの有効フラグがI:無効に設定されると共に、動作設定フラグが「監視対象アドレスグループ(m)対応状態」(または「監視対象アドレスグループ(n)対応状態」)に設定される。
【0029】
キャッシュコントローラ122は、I/O装置(A)14またはI/O装置(B)15によるシステムメモリ13へのライトアクセスを監視し、「監視対象アドレスグループ(n)対応状態」に設定されたキャッシュラインのアドレスタグで指定されるシステムメモリ13上のアドレスに対するライトアクセスが実行される度に、その有効フラグの値がI:無効であれば、ライトアクセスによるシステムメモリ13上のデータの更新結果を該当するキャッシュラインに登録し、さらにそのキャッシュラインの有効フラグをV:有効に書き換える。そして、キャッシュコントローラ122は、「監視対象アドレスグループ(n)対応状態」に設定された全てのキャッシュラインの有効フラグの値がV:有効に設定されたときに、監視対象アドレスグループに対応するライトアクセス処理が完了したことを割り込みコントローラ16を通じて、割り込み信号によってプロセッサ11に通知する。
【0030】
このように、キャッシュメモリシステム12のバス監視機能を利用してメモリアクセス処理の完了を監視する構成を用いることにより、キャッシュメモリシステム12以外の他の特別なハードウェアを用意せずとも、実際に実行されるデータ転送やメモリアクセスの順序とは無関係に、複数回のデータ転送それぞれに対応するメモリアクセス全てが完了したかどうかを正しく判別することが可能となり、アウトオブオーダーによる追い越し制御の仕組みをもつ情報処理装置においても、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサ11に通知することが可能となる。
【0031】
さらに、システムメモリ13の更新内容はキャッシュメモリ121のデータブロックにも反映されているため、メモリアクセス処理の完了通知を受けたプロセッサ11はシステムメモリ13の更新の結果を、システムメモリ13をアクセスすることなくキャッシュメモリ121により利用することが可能となる。
【0032】
追い越し制御は、例えば、図2に示すようなシステムメモリ13の構成を採用すること、あるいは図3に示すようなバスブリッジ18をI/O装置(A)14またはI/O装置(B)15とシステムメモリ13との間に介在させることによって実現することができる。
【0033】
図2のシステムメモリ13は、独立してライト/リードアクセス動作の可能な2つのメモリバンク133,134を有している。これらメモリバンク133,134の各々には、複数のメモリライトアクセス要求を保持可能なメモリライトバッファ131と、複数のメモリリードアクセス要求を保持可能なメモリリードバッファ131とが接続されている。2つのメモリバンク133,134には、連続するアドレス空間が割り当てられている。
【0034】
メモリライトバッファ131はメモリバンク133用のバッファとメモリバンク134用のバッファとを有している。例えば、メモリバンク133用のバッファメモリには複数のライトアクセス要求が蓄積された状態で、メモリバンク134に対するライトアクセスが発生した場合には、そのライトアクセスは、メモリバンク134用のバッファを介して先に実行される。このようにして、ライトアクセスの追い越し制御が実行される。
【0035】
同様に、メモリリードバッファ132もメモリバンク133用のバッファとメモリバンク134用のバッファとを有しており、リードアクセスの追い越し制御も実行される。
【0036】
図3は、バス17にバスブリッジ18を挿入した場合を示している。バス17は、バスブリッジ18によって、システムメモリ13側のバス17aと、I/O装置14,15側のバス17bとに分離される。バスブリッジ18は、バス17aからバス17bへのデータ転送サイクルの伝達<およびバス17bからバス17aへのデータ転送サイクルの伝達を実行するデバイスである。
【0037】
バスブリッジ18はアウトオブオーダー制御ユニット181を備えている。アウトオブオーダー制御ユニット181は、例えば、システムメモリ13の各バンクのビジー/レディー状態等に応じて、バス17bを介してI/O装置14または15から送信される複数のデータ転送の中から、メモリアクセス可能なデータ転送を優先してバス17aに伝達する。このようなデータ転送の実行順に関するアウトオブオーダー制御により、システムメモリ13に対するライトアクセスの追い越し制御が実行される。
【0038】
図3の構成においては、キャッシュコントローラ122はバス17a上のメモリライトサイクルを監視すればよい。また図2の構成においては、例えば、メモリライトバッファ131とメモリバンク133,134との間のメモリバス上のメモリライトサイクルを監視しても良いし、また図2のメモリライトバッファ131をメモリバンク133,134と並列にバス17に接続する構成を採用することによって、バス17上のメモリライトサイクルを監視するようにしてもよい。
【0039】
次に、図4を参照して、キャッシュコントローラ122によって実行される監視動作の原理について説明する。
【0040】
ここでは、I/O装置(A)14が、プロセッサ11からのDMA転送指示に従い、データ転送1とデータ転送2の2回のデータ転送を伴うメモリアクセス処理を実行する場合を想定する。I/O装置(A)14は、データ転送1と、データ転送2を、この順で順次実行する。上述の追い越し制御の仕組みにより、例えば図3の構成においては、データ転送1よりも先にデータ転送2がシステムメモリ13に対して発行される場合がある。
【0041】
キャッシュメモリシステム13においては、各データ転送が実行される度に、「監視対象アドレスグループ(m/n)対応状態」に設定されたキャッシュラインの中から、該当するキャッシュラインにライトアクセスによるシステムメモリ13上のデータの更新結果を格納する処理と、そのキャッシュラインの有効フラグをI:無効から、V:有効に更新する処理が実行される。このようにして、データ転送1,2に対応するメモリアクセスの実行順とは無関係に、データ転送1,2にそれぞれ対応する個々のメモリアクセスの実行の有無を正しく管理することが出来る。
【0042】
次に、図5および図6のフローチャートを参照して、図1のシステムにおいて実行される一連の動作について説明する。
【0043】
まず、図5のフローチャートを参照して、I/O装置(A)14またはI/O装置(B)15にメモリアクセス処理を実行させる場合に行うことが必要な準備処理について説明する。
【0044】
以下では、I/O装置(A)14に複数のデータ転送を伴うメモリアクセス処理(DMA転送)を実行させる場合を想定する。
【0045】
プロセッサ11は、まず、I/O装置(A)14に対してDMA転送のためのメモリアクセスパラメタを設定する(ステップS101)。このメモリアクセスパラメタには、例えば、転送開始アドレスと転送データ長、さらにはメモリライトであることを示す転送種別情報などが含まれる。次いで、プロセッサ11は、キャッシュコントローラ122を用いて以下の処理を実行する。
【0046】
キャッシュコントローラ122は、プロセッサ11の制御に従い、I/O装置(A)14によるメモリアクセス処理で更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインをキャッシュメモリ121上に割り当てる(ステップS102)。次いで、キャッシュコントローラ122は、プロセッサ11の制御に従い、割り当てた各キャッシュラインの有効フラグをI(無効)に設定し(ステップS103)、そして動作設定フラグの値をAに設定して、当該キャッシュラインをアクセス監視モード、つまり「監視対象アドレスグループ(m)対応状態」に設定する(ステップS104)。
【0047】
この後、プロセッサ11は、まず、I/O装置(A)14に対してメモリアクセス処理(DMA転送)の開始を指示する(ステップS105)。
【0048】
I/O装置(B)15に複数のデータ転送を伴うメモリアクセス処理(DMA転送)を実行させる場合も、上述と同様の処理が実行される。
【0049】
次に、図6のフローチャートを参照して、キャッシュコントローラ122によって実行される監視動作を説明する。
【0050】
キャッシュコントローラ122は、バス上にシステムメモリ13へのライトアクセス(データ転送アクセス)が発生する度に以下の処理を実行する。まず、キャッシュコントローラ122は、キャッシュメモリ121の中から、ライトアクセスで指定されたアドレスに対応するキャッシュラインを選択し(ステップS111)、そしてそのキャッシュラインのアドレスタグとライトアクセスで指定されたアドレスとを比較することによって、選択されたキャッシュラインのアドレスタグの内容が、ライトアクセスで指定されたアドレスに対応するものであるかどうかを判別する(ステップS112)。
【0051】
選択されたキャッシュラインのアドレスタグの内容がライトアクセスで指定されたアドレスに対応するものであるならば(ステップS112のYES)、キャッシュコントローラ122は、選択されたキャッシュラインの動作設定フラグを参照することにより、動作設定フラグの値がP:プロセッサ対応状態であるかどうかを判別する(ステップS113)。動作設定フラグの値がP:プロセッサ対応状態であるならば(ステップS113のYES)、キャッシュコントローラ122は、当該キャッシュラインの有効フラグの値がV:有効であるかどうかを判別し(ステップS114)、もし有効であれば(ステップS114のYES)、当該キャッシュラインのデータブロックを無効化するために、有効フラグの値をV:有効から、I:無効に更新する(ステップS115)。
【0052】
一方、動作設定フラグの値がP:プロセッサ対応状態で無い場合には、動作設定フラグの値が、A:監視対象アドレスグループ(m)対応状態、あるいはB:監視対象アドレスグループ(n)対応状態のいずれかに設定されているかどうかを判別する(ステップS116)。
【0053】
動作設定フラグの値がA:監視対象アドレスグループ(m)対応状態、あるいはB:監視対象アドレスグループ(n)対応状態のいずれかに設定されているならば(ステップS116のYES)、キャッシュコントローラ122は、当該キャッシュラインの有効フラグの値がI:無効であるかどうかを判別する(ステップS117)。もしI:無効であるならば、キャッシュコントローラ122は、監視対象のメモリライトアクセスが実行されたものと判断し、当該キャッシュラインにメモリライトアクセスに含まれるライトデータを格納すると共に、当該キャッシュラインの有効フラグの値をI:無効から、V:有効に更新する(ステップS118)。
【0054】
この後、キャッシュコントローラ122は、動作設定フラグの値がAに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるかどうか、および動作設定フラグの値がBに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるかどうかを判別する(ステップS119,S121)。
【0055】
もし、動作設定フラグの値がAに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるならば(ステップS119のYES)、キャッシュコントローラ122は、監視対象アドレスグループ(m)対応状態に設定されたキャッシュラインによって監視されていた全てのアドレスに対するシステムメモリ13に対するライトアクセスが完了したと判断し、監視対象アドレスグループ(m)に対応するメモリアクセス処理の完了を割り込みコントローラ16を通じて割り込み信号によってプロセッサ11に通知する(ステップS120)。
【0056】
プロセッサ11は、現在どの監視対象アドレスグループに対応するメモリアクセス処理が実行されているかを認識しているので、キャッシュコントローラ122は、メモリアクセス処理の完了をプロセッサ11に通知するのみで良く、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかについては通知する必要はない。
【0057】
もちろん、複数のメモリアクセス処理を並列的に実行するような場合には、例えば、キャッシュコントローラ122内に、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかを識別するための識別フラグを保持しておき、割り込みを受けたプロセッサ11が当該識別フラグを参照して、どのメモリアクセス処理が完了したのかを確認できるようにしても良い。識別フラグとしては、動作モード設定フラグの値をそのまま利用することもできる。これにより、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかをプロセッサ11に通知する事が可能となる。
【0058】
また、もし動作設定フラグの値がBに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるならば(ステップS121のYES)、キャッシュコントローラ122は、監視対象アドレスグループ(n)対応状態に設定されたキャッシュラインによって監視されていた全てのアドレスに対するシステムメモリ13に対するライトアクセスが完了したと判断し、監視対象アドレスグループ(n)に対応するメモリアクセス処理の完了を割り込みコントローラ16を通じて割り込み信号によってプロセッサ11に通知する(ステップS122)。
【0059】
このようにして、監視対象のアドレスグループ毎に、当該アドレスグループに対応するアクセス監視モードに設定された全てのキャッシュラインが有効化されたかどうかを判別し、全てのキャッシュラインが有効化された場合にメモリアクセス処理の完了をプロセッサ11に通知する処理が実行される。
【0060】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。
【0061】
例えば、ライトアクセスに含まれるライトデータを該当するキャッシュラインに格納するのではなく、システムメモリ13上で更新されたデータをシステムメモリ13から読み込んで、該当するキャッシュラインに格納するようにしてもよい。また、本実施形態のキャッシュメモリシステム13は、コンピュータの他、例えば、PDA、携帯電話機、オーディオ・ビデオプレーヤのような、マイクロコンピュータ内蔵の各種電子機器に適用することも出来る。
【0062】
更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0063】
【発明の効果】
以上詳述した如く本発明によれば、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るキャッシュメモリシステムを用いた情報処理装置の構成を示すブロック図。
【図2】図1の情報処理装置に設けられるシステムメモリの構成例を示すブロック図。
【図3】図1の情報処理装置に設けられるバスブリッジを示すブロック図。
【図4】図1の情報処理装置においてキャッシュメモリシステムが実行する監視動作の原理を説明するための図。
【図5】図1の情報処理装置においてプロセッサの制御の下に実行される準備処理の手順を示すフローチャート。
【図6】図1の情報処理装置においてキャッシュメモリシステムによって実行される監視動作の手順を示すフローチャート。
【符号の説明】
11…プロセッサ
12…キャッシュメモリシステム
13…システムメモリ
14,15…I/O装置(バスマスタ装置)
16…割り込みコントローラ
18…バスブリッジ
121…キャッシュメモリ
122…キャッシュコントローラ
133,134…メモリバンク
181…アウトオブオーダー制御ユニット
【発明の属する技術分野】
本発明はキャッシュメモリシステムおよびキャッシュメモリ制御方法に関し、特にプロセッサとバスマスタ装置とを含む情報処理装置で用いられるキャッシュメモリシステムおよびキャッシュメモリ制御方法に関する。
【0002】
【従来の技術】
近年、パーソナルコンピュータ等を初めとする多くの情報処理装置においては、プロセッサによるシステムメモリのアクセスの高速化を図るために、キャッシュメモリが設けられている。
【0003】
通常、キャッシュメモリは、システムメモリ上のデータをそれぞれ格納する複数のキャッシュラインの各々について、当該キャッシュラインに格納されたデータの有効/無効を管理する機能を有している。キャッシュメモリは、バスマスタとして機能するI/O装置によるシステムメモリへのライトアクセスを監視し、そのライトアクセスによってシステムメモリ上のデータが更新された時に、その更新されたデータを含むデータブロックを保持するキャッシュラインを無効化する。
【0004】
これにより、I/O装置によるライトアクセスによって既に旧くなったキャッシュメモリ上のデータをプロセッサが誤って読み込むことを未然に防止することができる。
【0005】
また、I/O装置がDMA転送によってメモリからデータを読み込む際に生じるキャッシュコヒーレンスに関する問題を解決するための技術も知られている(例えば、特許文献1参照。)。この特許文献1のシステムは、DMA転送の際に、メモリに記憶された転送元領域の最新データ(ダーティ・データ)がキャッシュに保持されているならば、その最新データをI/O装置に転送すると共に、メモリに書き込むように構成されている。
【0006】
【特許文献1】
特開2001−56872号公報(第3−5頁)
【0007】
【発明が解決しようとする課題】
ところで、最近では、アウトオブオーダー機能をもつメモリやバスブリッジが開発され始めている。アウトオブオーダー機能を用いることにより、メモリに対するアクセスをメモリアクセス要求の発生順とは異なる最適な順序で行うという、いわゆる追い越し制御を実現することができ、結果としてメモリアクセスの効率化や、I/O装置とメモリとの間のデータ転送の効率化を図ることが可能となる。
【0008】
しかし、このような追い越し制御を用いたシステムにおいては、メモリへの複数回のデータ転送を伴うメモリアクセス処理をI/O装置に実行させる場合に次のような問題が生じる危険がある。
【0009】
例えば、I/O装置が、プロセッサからのDMA転送等の指示に従い、システムメモリへの2回のデータ転送を伴うライトアクセス処理を実行する場合を想定する。I/O装置は、1番目のデータ転送、および2番目のデータ転送を、この順で順次実行し、2番目のデータ転送が終了した時点で、ライトアクセス処理が完了したことをプロセッサに通知する。しかし、追い越し制御を用いたシステムにおいては、I/O装置とメモリとの間の経路上においてデータ転送の順番の入れ換えが発生し、これによって1番目のデータ転送に対応するライトアクセスが、2番目のデータ転送に対応するライトアクセスの後に実行される場合がある。
【0010】
この場合、1番目のデータ転送に対応するライトアクセスが未実行であるにもかかわらず、メモリアクセス処理の完了がI/O装置からプロセッサに誤って通知されてしまう。このような誤った通知が発生すると、正常なシステム動作の実行を保証することが出来なくなる。また通知後にプロセッサまたはキャッシュが、1番目のデータ転送に対応するライトアクセスが実行される前の更新前データを更新後の最新のデータとしてメモリからリードしてしまうという問題を引き起こすことにもなる。
【0011】
本発明は上述の事情を考慮してなされたものであり、バスマスタ装置による複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能なキャッシュメモリシステムおよびキャッシュメモリ制御方法を提供することを目的とする。
【0012】
【課題を解決するための手段】
上述の課題を解決するため、本発明のキャッシュメモリシステムは、システムメモリ上のデータを格納する複数のキャッシュラインの各々について、当該キャッシュラインに格納されるデータに対応する前記システムメモリ上のアドレスを示すアドレスタグ情報と、当該キャッシュラインに格納されたデータの有効/無効を示す有効フラグ情報と、当該キャッシュラインがプロセッサと前記システムメモリとの間のデータ転送に使用される通常モード、およびバスマスタ装置によるメモリアクセス処理の完了を監視するためのアクセス監視モードのいずれに設定されているかを示す動作設定フラグ情報とを保持するキャッシュメモリと、前記バスマスタ装置に前記システムメモリへの複数回のデータ転送を伴うメモリアクセス処理を実行させる場合、前記メモリアクセス処理によって更新対象となる前記システムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインを前記キャッシュメモリ上に割り当てる手段と、前記割り当てられたキャッシュラインそれぞれに対応する有効フラグ情報を用いて当該各キャッシュラインを無効化すると共に、当該キャッシュラインそれぞれに対応する動作設定フラグ情報を前記アクセス監視モードに設定する手段と、前記システムメモリへのライトアクセスを監視し、前記アクセス監視モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに前記ライトアクセスによる前記システムメモリ上のデータの更新結果を格納すると共に、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを有効化する手段と、前記アクセス監視モードに設定された全てのキャッシュラインが有効化された場合、前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知する手段とを具備することを特徴とする。
【0013】
このキャッシュメモリシステムによれば、バスマスタ装置にメモリアクセス処理を実行させる場合には、そのメモリアクセス処理によって更新されるシステムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインをキャッシュメモリ上に用意してシステムメモリへのライトアクセスを監視することにより、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能となる。
【0014】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るキャッシュメモリシステムを用いた情報処理装置の構成が示されている。この情報処理装置は、図示のように、プロセッサ11、キャッシュメモリシステム12、システムメモリ13、第1および第2の2つのI/O装置14,15、割り込みコントローラ16、およびバス17を備えている。
【0015】
プロセッサ11は本情報処理装置の動作を制御するためのCPUであり、本情報処理装置の主記憶装置であるシステムメモリ13に記憶されたプログラムを実行することにより、I/O装置14,15の制御、およびキャッシュメモリシステム12の制御を行う。プロセッサ11によるシステムメモリ13のアクセスは、キャッシュメモリシステム12を介して行われる。
【0016】
キャッシュメモリシステム12は、システムメモリ13に記憶されたデータ(命令を含む)の一部を保持するためのものであり、データを保持するためのキャッシュメモリ121と、そのキャッシュメモリ121を制御するためのキャッシュコントローラ122とから構成されている。以下では、キャッシュメモリシステム12のキャッシュポリシーがライトスルーである場合を想定することとする。
【0017】
キャッシュメモリ121は、システムメモリ13上のデータブロックがそれぞれ格納される複数のキャッシュラインを備えている。各キャッシュラインには、図示のように、アドレスタグ、データブロック、有効フラグ、および動作設定フラグをそれぞれ保持するための記憶エリアが用意されている。キャッシュメモリ121は、プロセッサ11からのシステムメモリ13へのアクセスに対応するメモリキャッシュとしての動作によるアドレスタグの更新制御とは独立に、プロセッサ11により任意のキャッシュラインのアドレスタグと有効フラグと動作設定フラグの設定操作が可能に構成されている。
【0018】
アドレスタグは、当該キャッシュラインのデータブロックに格納されるシステムメモリ13上のデータブロックのアドレスの一部を示す。有効フラグは、当該キャッシュラインのデータブロックの有効(V:valid)/無効(I:invalid)を示す。
【0019】
動作設定フラグは、当該キャッシュラインの動作モードを指定するフラグ情報である。本実施形態においては、動作設定フラグは、プロセッサモード(P)、アクセス監視モード(A)、アクセス監視モード(B)のいずれかを示す。
【0020】
プロセッサモード(P)は、当該キャッシュラインがプロセッサ11とシステムメモリ13との間のデータ転送に使用される通常モードであることを示す。プロセッサモード(P)に設定されたキャッシュラインについては、キャッシュコントローラ122は、プロセッサ11の動作およびシステムメモリ13での動作を監視しプロセッサ11によるシステムメモリ13のアクセスに対応する通常のメモリキャッシュとしての動作を行う。
【0021】
アクセス監視モード(A),(B)は、当該キャッシュラインがバスマスタ装置(I/O装置14,15)によるシステムメモリ13のアクセス処理の完了を監視するためのキャッシュラインであることを示す。
【0022】
アクセス監視モード(A)は、I/O装置(A)14によって実行されるメモリアクセス処理の完了を監視するモード(I/O装置A対応状態)であることを示し、アクセス監視モード(B)は、I/O装置(B)15によって実行されるメモリアクセス処理の完了を監視するモード(I/O装置B対応状態)であることを示す。
【0023】
なお、各I/O装置対応状態は、必ずしも対応するI/O装置によるアクセスの監視にしか使用できないというわけではなく、例えばI/O装置A対応状態であっても、I/O装置(B)15によるメモリアクセスを監視対象に含ませることも可能である。
【0024】
つまりアクセス監視モードの(A),(B)は、複数回のデータ転送を伴うあるメモリアクセス処理(A)と、複数回のデータ転送を伴う別のメモリアクセス処理(B)とを区別するための識別情報として用いられる。よって、アクセス監視モードの(A),(B)が、必ずしもI/O装置(A)14,I/O装置(B)15にそれぞれ一対一で対応付けされる必要はない。
【0025】
すなわち、バスマスタ装置によるあるメモリアクセス処理(A)によって更新対象となるシステムメモリ13上のアドレスグループを(m)、バスマスタ装置による別のメモリアクセス処理(B)によって更新対象となるシステムメモリ13上のアドレスグループを(n)とすれば、アクセス監視モード(A),(B)は、それぞれアクセス監視モード(m),(n)と表記することが出来る。
【0026】
この意味で、アクセス監視モードの(A),(B)は、監視対象とすべきアドレスグループを識別するための情報であり、当該キャッシュラインが、複数のメモリアクセス処理によって更新対象となるシステムメモリ13上の複数のアドレスグループの内のいずれのアドレスグループに対応するアクセス監視モードであるかを管理するために用いられる。以下では、動作設定フラグの値がAの状態を「監視対象アドレスグループ(m)対応状態」と称し、動作設定フラグの値がBの状態を「監視対象アドレスグループ(n)対応状態」と称し、動作設定フラグの値がAまたはBの状態を「監視対象アドレスグループ(m/n)対応状態」と称することとする。
【0027】
I/O装置(A)14,I/O装置(B)15は上述したようにそれぞれバスマスタ装置として機能し、プロセッサ11によるDMA転送のための動作設定に従い、複数回のデータ転送を伴うメモリアクセス処理を実行する。
【0028】
このメモリアクセス処理の実行に先立ち、キャッシュメモリ121には、プロセッサ11の制御の下に、そのメモリアクセス処理で更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインが割り当てられる。既に該当するアドレスタグを持つキャッシュラインがキャッシュメモリ121に存在する場合には、それ以外の他のアドレスに対応するアドレスタグを持つキャッシュラインのみが新たにキャッシュメモリ121上に用意される。新たに用意されたキャッシュラインのデータブロックは空きのままでよい。そして、プロセッサ11の制御の下に、更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインの有効フラグがI:無効に設定されると共に、動作設定フラグが「監視対象アドレスグループ(m)対応状態」(または「監視対象アドレスグループ(n)対応状態」)に設定される。
【0029】
キャッシュコントローラ122は、I/O装置(A)14またはI/O装置(B)15によるシステムメモリ13へのライトアクセスを監視し、「監視対象アドレスグループ(n)対応状態」に設定されたキャッシュラインのアドレスタグで指定されるシステムメモリ13上のアドレスに対するライトアクセスが実行される度に、その有効フラグの値がI:無効であれば、ライトアクセスによるシステムメモリ13上のデータの更新結果を該当するキャッシュラインに登録し、さらにそのキャッシュラインの有効フラグをV:有効に書き換える。そして、キャッシュコントローラ122は、「監視対象アドレスグループ(n)対応状態」に設定された全てのキャッシュラインの有効フラグの値がV:有効に設定されたときに、監視対象アドレスグループに対応するライトアクセス処理が完了したことを割り込みコントローラ16を通じて、割り込み信号によってプロセッサ11に通知する。
【0030】
このように、キャッシュメモリシステム12のバス監視機能を利用してメモリアクセス処理の完了を監視する構成を用いることにより、キャッシュメモリシステム12以外の他の特別なハードウェアを用意せずとも、実際に実行されるデータ転送やメモリアクセスの順序とは無関係に、複数回のデータ転送それぞれに対応するメモリアクセス全てが完了したかどうかを正しく判別することが可能となり、アウトオブオーダーによる追い越し制御の仕組みをもつ情報処理装置においても、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサ11に通知することが可能となる。
【0031】
さらに、システムメモリ13の更新内容はキャッシュメモリ121のデータブロックにも反映されているため、メモリアクセス処理の完了通知を受けたプロセッサ11はシステムメモリ13の更新の結果を、システムメモリ13をアクセスすることなくキャッシュメモリ121により利用することが可能となる。
【0032】
追い越し制御は、例えば、図2に示すようなシステムメモリ13の構成を採用すること、あるいは図3に示すようなバスブリッジ18をI/O装置(A)14またはI/O装置(B)15とシステムメモリ13との間に介在させることによって実現することができる。
【0033】
図2のシステムメモリ13は、独立してライト/リードアクセス動作の可能な2つのメモリバンク133,134を有している。これらメモリバンク133,134の各々には、複数のメモリライトアクセス要求を保持可能なメモリライトバッファ131と、複数のメモリリードアクセス要求を保持可能なメモリリードバッファ131とが接続されている。2つのメモリバンク133,134には、連続するアドレス空間が割り当てられている。
【0034】
メモリライトバッファ131はメモリバンク133用のバッファとメモリバンク134用のバッファとを有している。例えば、メモリバンク133用のバッファメモリには複数のライトアクセス要求が蓄積された状態で、メモリバンク134に対するライトアクセスが発生した場合には、そのライトアクセスは、メモリバンク134用のバッファを介して先に実行される。このようにして、ライトアクセスの追い越し制御が実行される。
【0035】
同様に、メモリリードバッファ132もメモリバンク133用のバッファとメモリバンク134用のバッファとを有しており、リードアクセスの追い越し制御も実行される。
【0036】
図3は、バス17にバスブリッジ18を挿入した場合を示している。バス17は、バスブリッジ18によって、システムメモリ13側のバス17aと、I/O装置14,15側のバス17bとに分離される。バスブリッジ18は、バス17aからバス17bへのデータ転送サイクルの伝達<およびバス17bからバス17aへのデータ転送サイクルの伝達を実行するデバイスである。
【0037】
バスブリッジ18はアウトオブオーダー制御ユニット181を備えている。アウトオブオーダー制御ユニット181は、例えば、システムメモリ13の各バンクのビジー/レディー状態等に応じて、バス17bを介してI/O装置14または15から送信される複数のデータ転送の中から、メモリアクセス可能なデータ転送を優先してバス17aに伝達する。このようなデータ転送の実行順に関するアウトオブオーダー制御により、システムメモリ13に対するライトアクセスの追い越し制御が実行される。
【0038】
図3の構成においては、キャッシュコントローラ122はバス17a上のメモリライトサイクルを監視すればよい。また図2の構成においては、例えば、メモリライトバッファ131とメモリバンク133,134との間のメモリバス上のメモリライトサイクルを監視しても良いし、また図2のメモリライトバッファ131をメモリバンク133,134と並列にバス17に接続する構成を採用することによって、バス17上のメモリライトサイクルを監視するようにしてもよい。
【0039】
次に、図4を参照して、キャッシュコントローラ122によって実行される監視動作の原理について説明する。
【0040】
ここでは、I/O装置(A)14が、プロセッサ11からのDMA転送指示に従い、データ転送1とデータ転送2の2回のデータ転送を伴うメモリアクセス処理を実行する場合を想定する。I/O装置(A)14は、データ転送1と、データ転送2を、この順で順次実行する。上述の追い越し制御の仕組みにより、例えば図3の構成においては、データ転送1よりも先にデータ転送2がシステムメモリ13に対して発行される場合がある。
【0041】
キャッシュメモリシステム13においては、各データ転送が実行される度に、「監視対象アドレスグループ(m/n)対応状態」に設定されたキャッシュラインの中から、該当するキャッシュラインにライトアクセスによるシステムメモリ13上のデータの更新結果を格納する処理と、そのキャッシュラインの有効フラグをI:無効から、V:有効に更新する処理が実行される。このようにして、データ転送1,2に対応するメモリアクセスの実行順とは無関係に、データ転送1,2にそれぞれ対応する個々のメモリアクセスの実行の有無を正しく管理することが出来る。
【0042】
次に、図5および図6のフローチャートを参照して、図1のシステムにおいて実行される一連の動作について説明する。
【0043】
まず、図5のフローチャートを参照して、I/O装置(A)14またはI/O装置(B)15にメモリアクセス処理を実行させる場合に行うことが必要な準備処理について説明する。
【0044】
以下では、I/O装置(A)14に複数のデータ転送を伴うメモリアクセス処理(DMA転送)を実行させる場合を想定する。
【0045】
プロセッサ11は、まず、I/O装置(A)14に対してDMA転送のためのメモリアクセスパラメタを設定する(ステップS101)。このメモリアクセスパラメタには、例えば、転送開始アドレスと転送データ長、さらにはメモリライトであることを示す転送種別情報などが含まれる。次いで、プロセッサ11は、キャッシュコントローラ122を用いて以下の処理を実行する。
【0046】
キャッシュコントローラ122は、プロセッサ11の制御に従い、I/O装置(A)14によるメモリアクセス処理で更新対象となるシステムメモリ13上の全てのアドレスに対応するアドレスタグを含むキャッシュラインをキャッシュメモリ121上に割り当てる(ステップS102)。次いで、キャッシュコントローラ122は、プロセッサ11の制御に従い、割り当てた各キャッシュラインの有効フラグをI(無効)に設定し(ステップS103)、そして動作設定フラグの値をAに設定して、当該キャッシュラインをアクセス監視モード、つまり「監視対象アドレスグループ(m)対応状態」に設定する(ステップS104)。
【0047】
この後、プロセッサ11は、まず、I/O装置(A)14に対してメモリアクセス処理(DMA転送)の開始を指示する(ステップS105)。
【0048】
I/O装置(B)15に複数のデータ転送を伴うメモリアクセス処理(DMA転送)を実行させる場合も、上述と同様の処理が実行される。
【0049】
次に、図6のフローチャートを参照して、キャッシュコントローラ122によって実行される監視動作を説明する。
【0050】
キャッシュコントローラ122は、バス上にシステムメモリ13へのライトアクセス(データ転送アクセス)が発生する度に以下の処理を実行する。まず、キャッシュコントローラ122は、キャッシュメモリ121の中から、ライトアクセスで指定されたアドレスに対応するキャッシュラインを選択し(ステップS111)、そしてそのキャッシュラインのアドレスタグとライトアクセスで指定されたアドレスとを比較することによって、選択されたキャッシュラインのアドレスタグの内容が、ライトアクセスで指定されたアドレスに対応するものであるかどうかを判別する(ステップS112)。
【0051】
選択されたキャッシュラインのアドレスタグの内容がライトアクセスで指定されたアドレスに対応するものであるならば(ステップS112のYES)、キャッシュコントローラ122は、選択されたキャッシュラインの動作設定フラグを参照することにより、動作設定フラグの値がP:プロセッサ対応状態であるかどうかを判別する(ステップS113)。動作設定フラグの値がP:プロセッサ対応状態であるならば(ステップS113のYES)、キャッシュコントローラ122は、当該キャッシュラインの有効フラグの値がV:有効であるかどうかを判別し(ステップS114)、もし有効であれば(ステップS114のYES)、当該キャッシュラインのデータブロックを無効化するために、有効フラグの値をV:有効から、I:無効に更新する(ステップS115)。
【0052】
一方、動作設定フラグの値がP:プロセッサ対応状態で無い場合には、動作設定フラグの値が、A:監視対象アドレスグループ(m)対応状態、あるいはB:監視対象アドレスグループ(n)対応状態のいずれかに設定されているかどうかを判別する(ステップS116)。
【0053】
動作設定フラグの値がA:監視対象アドレスグループ(m)対応状態、あるいはB:監視対象アドレスグループ(n)対応状態のいずれかに設定されているならば(ステップS116のYES)、キャッシュコントローラ122は、当該キャッシュラインの有効フラグの値がI:無効であるかどうかを判別する(ステップS117)。もしI:無効であるならば、キャッシュコントローラ122は、監視対象のメモリライトアクセスが実行されたものと判断し、当該キャッシュラインにメモリライトアクセスに含まれるライトデータを格納すると共に、当該キャッシュラインの有効フラグの値をI:無効から、V:有効に更新する(ステップS118)。
【0054】
この後、キャッシュコントローラ122は、動作設定フラグの値がAに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるかどうか、および動作設定フラグの値がBに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるかどうかを判別する(ステップS119,S121)。
【0055】
もし、動作設定フラグの値がAに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるならば(ステップS119のYES)、キャッシュコントローラ122は、監視対象アドレスグループ(m)対応状態に設定されたキャッシュラインによって監視されていた全てのアドレスに対するシステムメモリ13に対するライトアクセスが完了したと判断し、監視対象アドレスグループ(m)に対応するメモリアクセス処理の完了を割り込みコントローラ16を通じて割り込み信号によってプロセッサ11に通知する(ステップS120)。
【0056】
プロセッサ11は、現在どの監視対象アドレスグループに対応するメモリアクセス処理が実行されているかを認識しているので、キャッシュコントローラ122は、メモリアクセス処理の完了をプロセッサ11に通知するのみで良く、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかについては通知する必要はない。
【0057】
もちろん、複数のメモリアクセス処理を並列的に実行するような場合には、例えば、キャッシュコントローラ122内に、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかを識別するための識別フラグを保持しておき、割り込みを受けたプロセッサ11が当該識別フラグを参照して、どのメモリアクセス処理が完了したのかを確認できるようにしても良い。識別フラグとしては、動作モード設定フラグの値をそのまま利用することもできる。これにより、どの監視対象アドレスグループに対応するメモリアクセス処理が完了したかをプロセッサ11に通知する事が可能となる。
【0058】
また、もし動作設定フラグの値がBに設定されている全てのキャッシュラインの有効フラグの値がV:有効であるならば(ステップS121のYES)、キャッシュコントローラ122は、監視対象アドレスグループ(n)対応状態に設定されたキャッシュラインによって監視されていた全てのアドレスに対するシステムメモリ13に対するライトアクセスが完了したと判断し、監視対象アドレスグループ(n)に対応するメモリアクセス処理の完了を割り込みコントローラ16を通じて割り込み信号によってプロセッサ11に通知する(ステップS122)。
【0059】
このようにして、監視対象のアドレスグループ毎に、当該アドレスグループに対応するアクセス監視モードに設定された全てのキャッシュラインが有効化されたかどうかを判別し、全てのキャッシュラインが有効化された場合にメモリアクセス処理の完了をプロセッサ11に通知する処理が実行される。
【0060】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。
【0061】
例えば、ライトアクセスに含まれるライトデータを該当するキャッシュラインに格納するのではなく、システムメモリ13上で更新されたデータをシステムメモリ13から読み込んで、該当するキャッシュラインに格納するようにしてもよい。また、本実施形態のキャッシュメモリシステム13は、コンピュータの他、例えば、PDA、携帯電話機、オーディオ・ビデオプレーヤのような、マイクロコンピュータ内蔵の各種電子機器に適用することも出来る。
【0062】
更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0063】
【発明の効果】
以上詳述した如く本発明によれば、複数回のデータ転送を伴うメモリアクセス処理の完了を正しくプロセッサに通知することが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るキャッシュメモリシステムを用いた情報処理装置の構成を示すブロック図。
【図2】図1の情報処理装置に設けられるシステムメモリの構成例を示すブロック図。
【図3】図1の情報処理装置に設けられるバスブリッジを示すブロック図。
【図4】図1の情報処理装置においてキャッシュメモリシステムが実行する監視動作の原理を説明するための図。
【図5】図1の情報処理装置においてプロセッサの制御の下に実行される準備処理の手順を示すフローチャート。
【図6】図1の情報処理装置においてキャッシュメモリシステムによって実行される監視動作の手順を示すフローチャート。
【符号の説明】
11…プロセッサ
12…キャッシュメモリシステム
13…システムメモリ
14,15…I/O装置(バスマスタ装置)
16…割り込みコントローラ
18…バスブリッジ
121…キャッシュメモリ
122…キャッシュコントローラ
133,134…メモリバンク
181…アウトオブオーダー制御ユニット
Claims (6)
- システムメモリ上のデータを格納する複数のキャッシュラインの各々について、当該キャッシュラインに格納されるデータに対応する前記システムメモリ上のアドレスを示すアドレスタグ情報と、当該キャッシュラインに格納されたデータの有効/無効を示す有効フラグ情報と、当該キャッシュラインがプロセッサと前記システムメモリとの間のデータ転送に使用される通常モード、およびバスマスタ装置によるメモリアクセス処理の完了を監視するためのアクセス監視モードのいずれに設定されているかを示す動作設定フラグ情報とを保持するキャッシュメモリと、
前記バスマスタ装置に前記システムメモリへの複数回のデータ転送を伴うメモリアクセス処理を実行させる場合、前記メモリアクセス処理によって更新対象となる前記システムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインを前記キャッシュメモリ上に割り当てる手段と、
前記割り当てられたキャッシュラインそれぞれに対応する有効フラグ情報を用いて当該各キャッシュラインを無効化すると共に、当該キャッシュラインそれぞれに対応する動作設定フラグ情報を前記アクセス監視モードに設定する手段と、
前記システムメモリへのライトアクセスを監視し、前記アクセス監視モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに前記ライトアクセスによる前記システムメモリ上のデータの更新結果を格納すると共に、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを有効化する手段と、
前記アクセス監視モードに設定された全てのキャッシュラインが有効化された場合、前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知する手段とを具備することを特徴とするキャッシュメモリシステム。 - 前記システムメモリへのライトアクセスを監視し、前記通常モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを無効化する手段をさらに具備することを特徴とする請求項1記載のキャッシュメモリシステム。
- 前記動作設定フラグ情報は、前記アクセス監視モードに設定されたキャッシュライン毎に、当該キャッシュラインが、複数のメモリアクセス処理によって更新対象となる前記システムメモリ上の複数のアドレスグループの内のいずれのアドレスグループに対応するアクセス監視モードであるかを示す監視対象アドレスグループ識別情報を含み、
前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知する手段は、前記監視対象アドレスグループ識別情報によって指定されるアドレスグループ毎に、当該アドレスグループに対応するアクセス監視モードに設定された全てのキャッシュラインが有効化されたかどうかを判別する手段を含むことを特徴とする請求項1記載のキャッシュメモリシステム。 - システムメモリ上のデータブロックをそれぞれ格納する複数のキャッシュラインを含むキャッシュメモリを制御するためのキャッシュメモリ制御方法であって、
前記各キャッシュライン毎に、当該キャッシュラインに格納されるデータに対応する前記システムメモリ上のアドレスを示すアドレスタグ情報と、当該キャッシュラインに格納されたデータの有効/無効を示す有効フラグ情報と、当該キャッシュラインがプロセッサと前記システムメモリとの間のデータ転送に使用される通常モード、およびバスマスタ装置によるメモリアクセス処理の完了を監視するためのアクセス監視モードのいずれに設定されているかを示す動作設定フラグ情報とを管理するステップと、
前記バスマスタ装置に前記システムメモリへの複数回のデータ転送を伴うメモリアクセス処理を実行させる場合、前記メモリアクセス処理によって更新対象となる前記システムメモリ上の全てのデータそれぞれに対応するアドレスタグ情報がそれぞれ設定されたキャッシュラインを前記キャッシュメモリ上に割り当てるステップと、
前記割り当てられたキャッシュラインそれぞれに対応する有効フラグ情報を用いて当該各キャッシュラインを無効化すると共に、当該キャッシュラインそれぞれに対応する動作設定フラグ情報を前記アクセス監視モードに設定するステップと、
前記システムメモリへのライトアクセスを監視し、前記アクセス監視モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに前記ライトアクセスによる前記システムメモリ上のデータの更新結果を格納すると共に、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを有効化するステップと、
前記アクセス監視モードに設定された全てのキャッシュラインが有効化された場合、前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知するステップとを具備することを特徴とするキャッシュメモリ制御方法。 - 前記システムメモリへのライトアクセスを監視し、前記通常モードに設定されたキャッシュラインのアドレスタグ情報で指定される前記システムメモリ上のデータに対するライトアクセスが実行された場合、当該キャッシュラインに対応する有効フラグ情報を用いて当該キャッシュラインを無効化するステップをさらに具備することを特徴とする請求項4記載のキャッシュメモリ制御方法。
- 前記動作設定フラグ情報は、前記アクセス監視モードに設定されたキャッシュライン毎に、当該キャッシュラインが、複数のメモリアクセス処理によって更新対象となる前記システムメモリ上の複数のアドレスグループの内のいずれのアドレスグループに対応するアクセス監視モードであるかを示す監視対象アドレスグループ識別情報を含み、
前記メモリアクセス処理の実行が完了したことを前記プロセッサに通知するステップは、前記監視対象アドレスグループ識別情報によって指定されるアドレスグループ毎に、当該アドレスグループに対応するアクセス監視モードに設定された全てのキャッシュラインが有効化されたかどうかを判別するステップを含むことを特徴とする請求項4記載のキャッシュメモリ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002339433A JP2004171469A (ja) | 2002-11-22 | 2002-11-22 | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002339433A JP2004171469A (ja) | 2002-11-22 | 2002-11-22 | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004171469A true JP2004171469A (ja) | 2004-06-17 |
Family
ID=32702378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002339433A Abandoned JP2004171469A (ja) | 2002-11-22 | 2002-11-22 | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004171469A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007080266A (ja) * | 2005-09-15 | 2007-03-29 | Internatl Business Mach Corp <Ibm> | 方法、データ処理システム、メモリ・コントローラ(i/o書込みオペレーションのパイプライン化および多重オペレーション範囲を可能にするデータ処理システムおよび方法) |
CN102043730A (zh) * | 2009-10-14 | 2011-05-04 | 索尼公司 | 储存单元及存储系统 |
-
2002
- 2002-11-22 JP JP2002339433A patent/JP2004171469A/ja not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007080266A (ja) * | 2005-09-15 | 2007-03-29 | Internatl Business Mach Corp <Ibm> | 方法、データ処理システム、メモリ・コントローラ(i/o書込みオペレーションのパイプライン化および多重オペレーション範囲を可能にするデータ処理システムおよび方法) |
CN102043730A (zh) * | 2009-10-14 | 2011-05-04 | 索尼公司 | 储存单元及存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4050225B2 (ja) | マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置 | |
JP5536658B2 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
JP4050226B2 (ja) | マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用 | |
JP4687729B2 (ja) | キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 | |
JP4474570B2 (ja) | キャッシュコヒーレンシ制御方法 | |
JP2007011580A (ja) | 情報処理装置 | |
JP5063152B2 (ja) | 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム | |
JP5499987B2 (ja) | 共有キャッシュメモリ装置 | |
JP4434534B2 (ja) | プロセッサ・システム | |
JP2006048406A (ja) | メモリシステム制御装置およびメモリシステム制御方法 | |
JP5163220B2 (ja) | キャッシュ制御装置、情報処理装置 | |
US7096389B2 (en) | System and method for dynamically moving checksums to different memory locations | |
JP3550092B2 (ja) | キャッシュ装置及び制御方法 | |
US8185699B2 (en) | Cache memory controller and cache memory controlling method | |
JP2009169706A (ja) | メモリ制御装置 | |
JP2008521114A (ja) | ローカルメモリデータのコヒーレントなキャッシュ処理 | |
JP3320562B2 (ja) | キャッシュメモリを有する電子計算機 | |
JP2004171469A (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
JP5168800B2 (ja) | マルチプロセッサシステム | |
US9436613B2 (en) | Central processing unit, method for controlling central processing unit, and information processing apparatus | |
JP2001290704A (ja) | マルチプロセス制御装置及びマルチプロセス制御方法 | |
EP1895419B1 (en) | Information processing system, information processing board, and method of updating cache tag and snoop tag | |
JP2005352711A (ja) | キャッシュ制御方法およびデータ処理システム並びにその処理プログラム | |
JP4765249B2 (ja) | 情報処理装置およびキャッシュメモリ制御方法 | |
JP5828324B2 (ja) | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20041126 |