(57)【要約】【課題】簡易なハードウェア構成で各プロセッサが使用可能なキャッシュメモリ量を保証することができるキャッシュメモリ装置を得ること。【解決手段】プロセッサ１，２が共有するウエイ４１〜４４を有するセットアソシアティブ方式のキャッシュメモリ装置において、プロセッサ１，２が使用可能なウエイ４１〜４４との対応が設定されるプロセッサ指定手段６１と、メモリアクセスを行ったプロセッサ１，２を識別するプロセッサ情報１３とプロセッサ指定手段６１の設定データとに基づきウエイ４１〜４４を選択するウエイ選択手段５１と、を備え、キャッシュヒットでない場合、ウエイ選択手段５１によって選択されたウエイにキャッシュ割り当てを行うこと。【選択図】        図２
2009015509.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサが共有する複数のウエイを有するセットアソシアティブ方式のキャッシュメモリ装置において、
複数のプロセッサと、プロセッサが使用可能なウエイとの対応が設定されるプロセッサ指定手段と、
メモリアクセスを行ったプロセッサを識別するプロセッサ情報とプロセッサ指定手段の設定データとに基づきウエイを選択するウエイ選択手段と、
を備え、キャッシュヒットでない場合、前記ウエイ選択手段によって選択されたウエイにキャッシュ割り当てを行うことを特徴とするキャッシュメモリ装置。
【請求項２】
ＯＳ毎に、当該ＯＳを使用するプロセッサの識別情報と、使用するキャッシュメモリのウエイの識別情報を保持するＯＳ情報保持手段を更に備え、
ＯＳ情報保持手段の内容に基づいて上記プロセッサ指定手段の設定を行うことを特徴とする請求項１に記載のキャッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セットアソシアティブ方式を用いてマルチプロセッサシステムで共有されるキャッシュメモリを制御するキャッシュメモリ装置に関するものである。
【背景技術】
【０００２】
一般的な情報処理システムでは、主記憶へのメモリアクセスは低速であるため、高速なキャッシュメモリを持ってキャッシュメモリにアクセスすることにより、主記憶へのメモリアクセス回数を低減し、処理性能の向上を図っている。
【０００３】
キャッシュメモリは通常は階層的な構成をとっている。主記憶を共有するマルチプロセッサシステムでは、プロセッサごとに専用のキャッシュメモリを持つ場合もあるが、複数のプロセッサが共有するキャッシュメモリを持つことがある。
【０００４】
複数のプロセッサが共有するキャッシュメモリでは、各プロセッサによるメモリアクセスの範囲や頻度により、それぞれのプロセッサが実質的に使用可能なキャッシュメモリの量が変動する。例えば、１つのプロセッサが大きな領域へのメモリアクセスを連続して行っているとすると、キャッシュメモリの内容はそのプロセッサのメモリアクセスによるもので占有されてしまうことになる。これによって、他のプロセッサはキャッシュメモリの効果が得られ難くなる。
【０００５】
この問題に対処する方法として、キャッシュのエントリ中にプロセッサの識別情報を格納し、プロセッサごとに設定された優先度に基づき、優先度の高い処理を行うプロセッサにより多くのキャッシュメモリが割り当てられるようにする方法がある(特許文献１)。
【０００６】
【特許文献１】特開平０７−２４８９６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１では、キャッシュメモリのエントリごとにタグアドレス、有効フラグのほかにプロセッサの識別情報を格納するため、全てのエントリを拡張するとともに、プロセッサの識別情報を認識できるように各部の機能を拡張する必要があり、ハードウェア量が増大するという問題があった。また、上記特許文献１では、すべてのプロセッサで単一のオペレーティングシステム（ＯＳ）が動作している場合は、各プロセッサで実行される処理の優先度を把握し、それにもとづいて共有するキャッシュメモリの制御をおこなうことは比較的容易であるが、プロセッサごとに異なるＯＳが動作している場合、異なるＯＳ間で処理の優先度を決定することは困難であるという問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、簡易なハードウェア構成で各プロセッサが使用可能なキャッシュメモリ量を保証することができるキャッシュメモリ装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサが共有する複数のウエイを有するセットアソシアティブ方式のキャッシュメモリ装置において、複数のプロセッサと、プロセッサが使用可能なウエイとの対応が設定されるプロセッサ指定手段と、メモリアクセスを行ったプロセッサを識別するプロセッサ情報とプロセッサ指定手段の設定データとに基づきウエイを選択するウエイ選択手段と、を備え、キャッシュヒットでない場合、前記ウエイ選択手段によって選択されたウエイにキャッシュ割り当てを行うことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、プロセッサ指定手段に、複数のプロセッサと、プロセッサが使用可能なウエイとの対応を設定し、キャッシュミス時に、プロセッサ指定手段の設定登録内容を用いて各プロセッサが使用可能なウエイを指定し、指定されたウエイにキャッシュメモリの割り当てをするようにしているので、簡易なハードウェア構成で、他のプロセッサの影響を受けることなく使用可能なキャッシュメモリ量を保証することができる。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明にかかるキャッシュメモリ装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１はこの発明のキャッシュメモリ方式を備えるマルチプロセッサシステムの構成例を示す図である。図１において、プロセッサ１，２はアドレスバス１１とデータバス１２とを介してキャッシュメモリ１４に接続されている。キャッシュメモリ１４は、アドレスバスとデータバスとによって主記憶１５に接続されている。各プロセッサ１，２からは、メモリアクセスを行う際に、すなわちアドレスバス１１にアドレスを送出する際に、キャッシュメモリ１４に対して、メモリアクセスを行うプロセッサを識別するためのプロセッサ情報１３が送信される。キャッシュメモリ１４は、このプロセッサ情報１３を識別することで、当該メモリアクセスが、プロセッサ１によるものか、プロセッサ２によるものかを識別することができる。この例ではプロセッサの個数を２としているが、２以上の任意の個数のプロセッサを持つことも可能である。プロセッサ情報１３としては、プロセッサの個数に対応する信号線、またはプロセッサの識別番号をエンコードしたものでも良い。
【００１３】
図２はキャッシュメモリ１４の内部の構成を示す図である。図２において、この場合、キャッシュメモリ１４は、４個のウエイ４１〜４４を有するセットアソシアティブ方式を採用しており、それぞれのウエイ４１〜４４には、１つのタグアレイ２１〜２４と、１つのデータアレイ３１〜３４をそれぞれ備えている。この例では、ウエイの数を４としているが、２以上の任意の数のウエイを持つことができる。
【００１４】
キャッシュメモリ１４は、ウエイに対するアクセスを制御するための手段として、ウエイ選択手段５１、プロセッサ指定手段６１、ヒット判定手段７１を備える。プロセッサ指定手段６１はプロセッサ１，２が使用可能なウエイの情報を保持する。ウエイ選択手段５１は、入力されたプロセッサ情報１３とプロセッサ指定手段６１の保持データに基づき、ウエイを選択する。ヒット判定手段７１は、プロセッサ１，２からのアドレス１１とタグアレイの内容からキャッシュヒットの判定を行う。
【００１５】
各ウエイ４１〜４４は、タグと属性情報とデータとから構成されるエントリを複数個備える。各ウエイ４１〜４４において、複数のタグおよび属性情報から成るエントリによってタグアレイ２１〜２４を形成し、複数のデータから成るエントリによってデータアレイ３１〜３４を形成している。図３はタグアレイを構成する１つのエントリの例を示すものである。図３において、１つのエントリはアドレスタグ１０１と、属性情報１１１からなり、属性情報として、有効フラグ１１２、変更フラグ１１３、参照履歴情報１１４を持つ。有効フラグ１１２は、エントリの内容が有効なものであるか否かを示すものであり、変更フラグ１１３は、エントリの内容が変更されているか否かを示すものであり、参照履歴情報１１４は、エントリへのアクセス頻度の履歴を記録したものである。
【００１６】
図４は、プロセッサ指定手段６１での設定登録内容の例を示す図である。プロセッサ指定手段６１の設定登録データは、プロセッサ識別情報としてのプロセッサ番号と、プロセッサがキャッシュの割り当てに使用可能なウエイ番号との対応関係を示すものであり、プロセッサ番号とウエイ番号に対して、それぞれの使用の可否を示すものである。この例では、プロセッサ１がウエイ番号１とウエイ番号２を使用可能であり、プロセッサ２がウエイ番号３とウエイ番号４を使用可能である。
【００１７】
図５は各プロセッサ１，２からアドレスバス１１に出力されるアドレスの、キャッシュメモリ１４での使用時の分割方法を示す図である。図５において、１４１はオフセット部、１４２はインデクス部、１４３はタグ部である。
【００１８】
オフセット部１４１はアドレスの下位のビットであり、キャッシュライン内のオフセットとなる。オフセット部１４１のビットの幅はキャッシュラインサイズにより決まり、例えばキャッシュラインサイズが３２バイトであれば５ビットとなる。
【００１９】
インデクス部１４２はアドレスの下位のビットであり、キャッシュアレイ（タグアレイおよびデータアレイ）内の使用されるエントリの位置を示す。インデクス部１４２のビットの幅は１つのキャッシュアレイのエントリの数によって決まり、例えばエントリ数が１０２４であれば１０ビットとなる。
【００２０】
タグ部１４３は残りの上位のビットであり、キャッシュヒット判定の際にタグアレイ２１〜２４に格納されたタグとの比較に使用される。タグ部１４３のビットの幅は、アドレスバスの総ビット数からインデクス部１４２とオフセット部１４１を引いたものになり、例えばアドレスバスが３２ビットでインデクス部１０ビット、オフセット部５ビットであればタグ部は１７ビットになる。
【００２１】
次に、図６を参照して、プロセッサ１がメモリアクセスを行なう場合の動作について説明する。プロセッサ１がメモリアクセスを行なう際、アドレスバス１１にアドレスを出力する（ステップＳ１０１）。ヒット判定手段７１は、アドレスのインデクス部１４２により指定される、全てのウエイ４１〜４４のエントリを選択し（ステップＳ１０２）、選択した各エントリのタグとアドレスのタグ部１４３とを比較する（ステップＳ１０３）。いずれかのウエイのエントリのタグがアドレスのタグ部１４３と一致し、かつそのエントリの属性情報１１１に有効フラグ１１２がセットされていれば（ステップＳ１０４）、キャッシュヒットと判定する。キャッシュヒットの場合、プロセッサ１はヒットしたエントリのデータに対してアクセスを行うことになる（ステップＳ１０５）。
【００２２】
ヒット判定手段７１は、ステップＳ１０３あるいはステップＳ１０４の判定がＮＯの場合に、キャッシュヒットでないすなわちキャッシュミスと判定する。キャッシュミスと判定された場合は、つぎにキャッシュ割り当て動作が実行される。まず、ウエイ選択手段５１は、このとき入力されているプロセッサ情報１３とプロセッサ指定手段６１の設定登録内容に基づいて使用可能なウエイを選択する（ステップＳ２０１）。図４に示したプロセッサ指定手段６１の設定登録内容の例では、プロセッサ１がキャッシュ割り当てに使用可能なウエイの番号は１および２であり、これらウエイ１，ウエイ２が使用可能なウエイとして選択される。
【００２３】
続いて、ヒット判定手段７１は、選択されたウエイのうちで、アドレスのインデクス部１４２により指定されるエントリのなかから、属性情報に有効フラグ１１２がセットされていないものがあるか調べる（ステップＳ２０３）。もし、有効フラグ１１２が有効でないエントリが存在すれば、そのエントリを割り当てるキャッシュエントリとして使用し、このキャッシュエントリにプロセッサ１がアクセスを行うことになる（ステップＳ２０７）。有効でないものが複数ある場合、その中での選択方法は任意である。
【００２４】
ヒット判定手段７１は、ステップＳ２０３において、選択されたウエイの、アドレスのインデクス部１４２により指定されるエントリすべてに有効フラグ１１２がセットされていると判定した場合は、これらのエントリの参照履歴情報１１４を調べることでそのうちの１つを選択する（ステップＳ２０４）。選択方法としては、例えば、最も長く参照されていないエントリを選択する方法(ＬＲＵ  Least Recently Used)を採用する。次に、ヒット判定手段７１は、選択されたエントリの変更フラグ１１３を調べ（ステップＳ２０５）、変更フラグ１１３がセットされていない場合は、このエントリを割り当てるキャッシュエントリとして使用し、このキャッシュエントリにプロセッサ１がアクセスを行うことになる（ステップＳ２０７）。また、変更フラグ１１３がセットされている場合は、そのエントリのデータアレイ中のデータラインを主記憶１５の対応するアドレスに書込んだ後（ステップＳ２０６）、このエントリを割り当てるキャッシュエントリとして選択する。
【００２５】
このようにして、キャッシュヒットでない場合は、割り当てられたエントリのデータラインに、主記憶から１ラインサイズ分のデータを読み込み、割り当てられたデータラインに対してプロセッサがアクセスを行う。
【００２６】
プロセッサ２がメモリアクセスを行う場合の動作は、キャッシュミスの場合のウエイ選択の動作のみが異なる。図４に示したプロセッサ指定手段の登録内容の例では、プロセッサ２がライン割り当てに使用可能なウエイ番号は３および４であり、これらが使用可能なウエイとして選択される。これ以外の動作はプロセッサ１の場合と同じである。
【００２７】
プロセッサ１があるメモリアドレスにアクセスした後、プロセッサ２が同じアドレスにアクセスする場合、図４に示したプロセッサ指定手段の例では、プロセッサ１のアクセスにより番号１のウエイまたは番号２のウエイを使用してキャッシュデータが保持されている。一方、プロセッサ２はキャッシュ割り当てには番号３のウエイおよび番号４のウエイのみを使用するが、ヒット判定手段７１ではキャッシュヒット判定の際には、プロセッサ指定手段６１の登録内容を参照しないため、プロセッサ２は番号１または番号２のウエイのキャッシュデータにアクセスすることが可能である。同様に、プロセッサ１は、番号３または番号４のウエイのキャッシュデータにアクセスすることが可能である。
【００２８】
図７は、プロセッサ指定手段６１の設定登録内容の他の例を示すものであり、プロセッサ１およびプロセッサ２がともに番号３のウエイを使用する設定となっている点が図４とは異なる。この場合の動作では、プロセッサ１のキャッシュ割り当て時に、ウエイの番号１、２および３が使用可能なウエイとして選択される（図６、ステップ２０１）。一方、プロセッサ２のキャッシュ割り当て時には、ウエイの番号３および４が使用可能なウエイとして選択される。これにより、ウエイ番号３はプロセッサ１およびプロセッサ２により共用されることになる。ウエイ番号３のエントリがどちらのプロセッサのキャッシュ割り当てにより使用されるかは、そのプロセッサが使用可能な他のウエイのエントリの参照履歴の内容とウエイ番号３のエントリの参照履歴の内容との関係により変わることになる。この例ではプロセッサ１はウエイ番号１およびウエイ番号２を占有しているので、プロセッサ１が使用可能なキャッシュメモリ量の下限は保証されている。これに加えてウエイ番号３は共用とすることで、プロセッサ２のキャッシュメモリ使用が少ない場合には、キャッシュメモリの使用効率を向上させることができる。
【００２９】
以上のように、実施の形態１では、キャッシュミス時に、プロセッサ指定手段の設定登録内容を用いてプロセッサ１または２が使用可能なウエイを指定し、指定されたウエイにキャッシュメモリの割り当てをするようにしているので、簡易なハードウェア構成で、他のプロセッサの影響を受けることなく使用可能なキャッシュメモリ量を保証することができる。
【００３０】
実施の形態２．
図８はこの発明の実施の形態２を示すものである。実施の形態２では、プロセッサ数が４個である点と、ＯＳ情報保持手段８１を備える点が実施の形態１と異なる。
【００３１】
図９は、ＯＳ情報保持手段８１の設定登録内容の例を示す図である。この例では、ＯＳ Ａはプロセッサ１で動作し、ウエイ数の５０％を使用する。また、ＯＳ Ｂはプロセッサ２、３、および４で動作し、ウエイ数の５０％を使用する。ここでは、全体のウエイ数に対する使用ウエイ数の割合を指定するようにしているが、ウエイ番号を直接指定するようにしても良い。
【００３２】
図１０は、図９に示したＯＳ情報保持手段８１の設定登録内容に基づく、プロセッサ指定手段６１の設定内容を示している。
【００３３】
次に図１１および図１２のフローチャートを参照して、ＯＳ情報保持手段８１の内容に基づくプロセッサ指定手段６１の設定動作を説明する。まず、プロセッサ指定手段６１の設定を初期化する（ステップＳ３０１）。すなわち、すべてのプロセッサですべてのウエイを不使用の設定とする。つぎに、ＯＳ情報保持手段８１の設定内容に基づいて１つのＯＳについてのウエイ割り当て処理を行う。この処理の詳細は、図１２のフローチャートで説明する。
【００３４】
ステップＳ３１１では、当該ＯＳが使用するウエイを決定する。ＯＳ情報保持手段８１において使用するウエイの割合が指定されている場合、全体のウエイ数に割合を乗じることでウエイ数が求められるので、このウエイ数分だけ未使用のウエイを割り当てることで、当該ＯＳが使用するウエイが決定される。図９のＯＳ情報保持手段８１の登録内容の例では、ＯＳ Ａの使用ウエイの割合を５０％としているので、全体のウエイ数４に対して、例えば、ウエイ番号１およびウエイ番号２の２つのウエイがＯＳ Ａに割り当てられる。
【００３５】
ステップＳ３１２では、決定したウエイを当該ＯＳを使用する１つのプロセッサが使用できるように、プロセッサ指定手段６１に設定する。図９のＯＳ情報保持手段８１の設定内容の例では、ＯＳ Ａの使用プロセッサはプロセッサ１のみであるので、図１０に示すように、プロセッサ指定手段６１のプロセッサ番号１の行のウエイ番号１およびウエイ番号２の項目にウエイを使用することを設定する。ウエイ番号３およびウエイ番号４は、ステップ３０１において不使用の設定とされているのでここでは変更しない。
【００３６】
つぎに、ステップＳ３１３で当該ＯＳが使用する他のプロセッサがあるかを調べるが、ＯＳ Ａが使用するプロセッサはプロセッサ１のみであるので処理を終了する。
【００３７】
続いて、図１１のステップＳ３０３に戻り、他のＯＳがあるかを調べる。図９に示すＯＳ情報保持手段８１の設定内容ではＯＳ Ｂの情報が存在するため、ステップＳ３０４を経てＯＳ Ｂについての設定をステップＳ３０２で行う。
【００３８】
図１２のステップＳ３１１でのウエイ決定では、ウエイ番号３およびウエイ番号４がＯＳ Ｂより使用されることになる。ＯＳ Ｂはプロセッサ２、３および４の３つのプロセッサを使用するため、図１０に示すように、プロセッサ指定手段６１のそれぞれのプロセッサ２，３，４の行に対して、ウエイ番号３およびウエイ番号４を使用するよう設定する。このようにして、図１０に示したプロセッサ指定手段６１の設定がなされる。
【００３９】
以上のように、実施の形態２では、ＯＳ情報保持手段８１の設定内容に基づいてプロセッサ指定手段６１の設定を行うので、ＯＳごとに指定されたウエイにキャッシュメモリの割り当てをすることができ、異なるＯＳが動作するプロセッサの影響を受けることなく使用可能なキャッシュメモリ量を保証することができる。
【産業上の利用可能性】
【００４０】
以上のように、本発明にかかるキャッシュメモリ装置は、セットアソシアティブ方式を用いてマルチプロセッサシステムで共有されるキャッシュメモリ装置に有用である。
【図面の簡単な説明】
【００４１】
【図１】この発明の実施の形態１にかかるキャッシュメモリ装置を備えるマルチプロセッサシステムの構成例を示す図である。
【図２】キャッシュメモリの内部の構成を示す図である。
【図３】タグアレイを構成する１つのエントリの例を示す図である。
【図４】プロセッサ指定手段での設定登録内容の例を示す図である。
【図５】各プロセッサからアドレスバスに出力されるアドレスの、キャッシュメモリでの使用時の分割方法を示す図である。
【図６】プロセッサがメモリアクセスを行なう場合の動作について説明するフローチャートである。
【図７】プロセッサ指定手段の設定登録内容の他の例を示す図である。
【図８】この発明の実施の形態２にかかるキャッシュメモリ装置を備えるマルチプロセッサシステムの構成例を示す図である。
【図９】ＯＳ情報保持手段の設定登録内容の例を示す図である。
【図１０】ＯＳ情報保持手段の設定登録内容に基づく、プロセッサ指定手段の設定内容を示す図である。
【図１１】ＯＳ情報保持手段の内容に基づくプロセッサ指定手段の設定動作を説明するフローチャートである。
【図１２】ＯＳ情報保持手段の設定内容に基づいて１つのＯＳについてのウエイ割り当て処理を説明するフローチャートである。
【符号の説明】
【００４２】
１，２，３，４  プロセッサ
１１  アドレスバス
１２  データバス
１３  プロセッサ情報
１４  キャッシュメモリ
１５  主記憶
２１，２２，２３，２４  タグアレイ
３１，３２，３３，３４  データアレイ
４１，４２，４３，４４  ウエイ
５１  ウエイ選択手段
６１  プロセッサ指定手段
７１  ヒット判定手段
８１  ＯＳ情報保持手段
１０１  アドレスタグ
１１１  属性情報
１１２  有効フラグ
１１３  変更フラグ
１１４  参照履歴情報
１４１  オフセット部
１４２  インデクス部
１４３  タグ部
【図１】
2009015509.tif 000003
【図２】
2009015509.tif 000004
【図３】
2009015509.tif 000005
【図４】
2009015509.tif 000006
【図５】
2009015509.tif 000007
【図６】
2009015509.tif 000008
【図７】
2009015509.tif 000009
【図８】
2009015509.tif 000010
【図９】
2009015509.tif 000011
【図１０】
2009015509.tif 000012
【図１１】
2009015509.tif 000013
【図１２】
2009015509.tif 000014