(57)【要約】【課題】マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができること。【解決手段】中央処理装置１０は、複数のスレッドごとに主記憶装置３０のデータの参照を要求し、スレッド識別情報取得部１０４１ｂは、複数のスレッドを識別するスレッド識別情報を取得し、有効ＭＩＢ検出部１０４１ｂは、主記憶装置３０のデータに対するキャッシュの参照要求が保持された一次キャッシュＭＩＢ１０３６の数をスレッド識別情報に基づいてスレッドごとに検出し、ＭＩＢ制御部１０４１ｃは、スレッドごとに検出された一次キャッシュＭＩＢ１０３６の数が所定の数を超えないように参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御する。【選択図】        図１
2006048182.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手段と、
前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手段と、
前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
を備えたことを特徴とする記憶制御装置。
【請求項２】
前記スレッド識別情報取得手段は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記バッファ制御手段は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする請求項１に記載の記憶制御装置。
【請求項４】
前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートをさらに備え、
前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする請求項１に記載の記憶制御装置。
【請求項５】
前記中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、
前記プロセッサは、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記スレッド識別情報取得手段は、前記複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、
前記有効バッファ検出手段は、前記参照要求が保持されたキャッシュバッファの数を前記プロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、
前記バッファ制御手段は、前記プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項１に記載の記憶制御装置。
【請求項６】
主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得工程と、
前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出工程と、
前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
【請求項７】
前記スレッド識別情報取得工程は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする請求項６に記載のムーブインバッファ制御方法。
【請求項８】
前記バッファ制御工程は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする請求項６に記載のムーブインバッファ制御方法。
【請求項９】
前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートに保持する参照要求転送ポート保持工程をさらに含み、
前記バッファ制御工程は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポート保持工程によって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする請求項６に記載のムーブインバッファ制御方法。
【請求項１０】
主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手順と、
前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手順と、
前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶制御装置、ムーブインバッファ制御方法およびプログラムに関し、特にマルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる記憶制御装置、ムーブインバッファ制御方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来、中央処理装置の動作速度は、主記憶装置の動作速度に比較して大幅に高速化され、主記憶装置を参照すると中央処理装置の動作が長時間にわたって待たされるという問題があった。
【０００３】
この問題に対処するために、主記憶装置への参照が発生して中央処理装置の動作が長時間にわたって停止している場合には、現在実行中のプログラムを中断し、別のプログラムへと動作を切り替えるマルチスレッド機構と呼ばれる方式が採用されるようになってきた。例えば、マルチスレッド機構の制御方式には、同時に二つ以上のプログラムを動作させるＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ  Ｔｈｒｅａｄｉｎｇ）、ＨＭＴ（Ｈｏｒｉｚｏｎｔａｌ  Ｍｕｌｔｉ  Ｔｈｒｅａｄｉｎｇ）と呼ばれる方式と、通常は一つのプログラムを動作させて主記憶装置待ちの発生を契機としてプログラムの切り替えを行うＶＭＴ（Ｖｅｒｔｉｃａｌ  Ｍｕｌｔｉ  Ｔｈｒｅａｄｉｎｇ）と呼ばれる方式が用いられる。
【０００４】
マルチスレッド動作を行う中央処理装置では、一般に演算装置、一次キャッシュメモリ、二次キャッシュメモリ、一次キャッシュや二次キャッシュのムーブインバッファ（以下においては、ムーブインバッファを「ＭＩＢ」という。）などがスレッド間で共用されている。二次キャッシュや主記憶装置のデータの参照は、中央処理装置に実装されているＭＩＢの数だけ同時に実行可能である。逆に言えば、二次キャッシュや主記憶装置のデータの参照は、中央処理装置に実装されているＭＩＢの数を超えて実行することはできない。
【０００５】
マルチスレッドで動作しているときに、一つのスレッドでＭＩＢを使い果たしてしまうと、他のスレッドがキャッシュミスを起こした場合、二次キャッシュや主記憶装置のデータの参照ができなくなる。ＭＩＢから要求したキャッシュラインが中央処理装置へと戻ってきて、キャッシュラインを中央処理装置の一次キャッシュまたは二次キャッシュに登録してからＭＩＢは開放されるので、主記憶装置までキャッシュラインを取りに行っているとＭＩＢの開放が大きく遅れることになる。その間、二次キャッシュや主記憶装置のデータが他のスレッドから参照ができなくなるので、マルチスレッド動作を行っているにも係らず、一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まってしまうという課題があった。例えば、特許文献１では、マルチスレッド動作時にスレッド間のキャッシュの共有・非共有を制御する従来技術が開示されている。
【０００６】
【特許文献１】特開２００２−３４２１６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の従来技術では、マルチスレッド動作時にスレッド間のキャッシュの共有・非共有を制御することができる。しかし、特許文献１では、キャッシュへのキャッシュラインの登録時に使用するＭＩＢについて従来技術が開示されていないので、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まってしまうという課題は、解決できなかった。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる記憶制御装置、ムーブインバッファ制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明は、主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手段と、前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手段と、前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手段と、を備えたことを特徴とする。
【００１０】
また、本発明は、主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得工程と、前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出工程と、前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御工程と、を含んだことを特徴とする。
【００１１】
また、本発明は、主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手順と、前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手順と、前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手順と、をコンピュータに実行させることを特徴とする。
【００１２】
かかる発明によれば、中央処理装置は、複数のスレッドごとに主記憶装置のデータの参照を要求し、複数のスレッドのスレッド識別情報を取得し、参照要求が保持されたキャッシュバッファの数をスレッド識別情報に基づいてスレッドごとに検出し、スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる。
【００１３】
また、本発明は、前記スレッド識別情報取得手段は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする。
【００１４】
また、本発明は、前記スレッド識別情報取得工程は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする。
【００１５】
かかる発明によれば、中央処理装置からスレッド識別情報を取得することとしたので、記憶制御装置は、スレッド識別情報によりスレッドの切り替えを確実に識別することができる。
【００１６】
また、本発明は、前記バッファ制御手段は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする。
【００１７】
また、本発明は、前記バッファ制御工程は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする。
【００１８】
かかる発明によれば、キャッシュバッファに参照要求を格納する場合に、参照要求にスレッド識別情報を付加するよう制御することとしたので、記憶制御装置は、同じスレッドの参照要求が占有しているキャッシュバッファの数を容易に検出することができる。
【００１９】
また、本発明は、前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートをさらに備え、前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする。
【００２０】
また、本発明は、前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートに保持する参照要求転送ポート保持工程をさらに含み、前記バッファ制御工程は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポート保持工程によって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする。
【００２１】
かかる発明によれば、キャッシュは、主記憶装置のデータおよびデータに対応したアドレス情報を記憶する二次キャッシュと、二次キャッシュのデータおよびデータに対応したアドレス情報を記憶する一次キャッシュと、を有し、キャッシュバッファは、主記憶装置のデータに対する二次キャッシュの参照要求を保持する二次キャッシュバッファと、二次キャッシュのデータに対する一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、キャッシュバッファに保持するよう制御した参照要求を一次キャッシュバッファに保持するよう制御し、キャッシュバッファに保持するよう制御した参照要求以外の参照要求を一次キャッシュから二次キャッシュへ転送することとしたので、記憶制御装置は、予め二次キャッシュまでのムーブインを開始しておくことで、一次キャッシュＭＩＢの確保からムーブイン完了までの時間を短縮することができる。
【００２２】
また、本発明は、前記中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、前記プロセッサは、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記スレッド識別情報取得手段は、前記複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、前記有効バッファ検出手段は、前記参照要求が保持されたキャッシュバッファの数を前記プロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、前記バッファ制御手段は、前記プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２３】
かかる発明によれば、中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、プロセッサは、複数のスレッドごとに主記憶装置のデータの参照を要求し、複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、参照要求が保持されたキャッシュバッファの数をプロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、中央処理装置が複数のプロセッサからなるマルチプロセッサであり、一つのプロセッサが引き起こしたキャッシュミスにより全てのプロセッサの動作が止まらないようにすることができると共に、個々のプロセッサがマルチスレッドで動作した場合でも、一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる。
【発明の効果】
【００２４】
本発明によれば、中央処理装置は、複数のスレッドごとに主記憶装置のデータの参照を要求し、複数のスレッドのスレッド識別情報を取得し、参照要求が保持されたキャッシュバッファの数をスレッド識別情報に基づいてスレッドごとに検出し、スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができるという効果を奏する。
【００２５】
また、本発明によれば、中央処理装置からスレッド識別情報を取得するよう構成したので、記憶制御装置は、スレッド識別情報によりスレッドの切り替えを確実に識別することができるという効果を奏する。
【００２６】
また、本発明によれば、キャッシュバッファに参照要求を格納する場合に、参照要求にスレッド識別情報を付加するよう制御するよう構成したので、記憶制御装置は、同じスレッドの参照要求が占有しているキャッシュバッファの数を容易に検出することができるという効果を奏する。
【００２７】
また、本発明によれば、キャッシュは、主記憶装置のデータおよびデータに対応したアドレス情報を記憶する二次キャッシュと、二次キャッシュのデータおよびデータに対応したアドレス情報を記憶する一次キャッシュと、を有し、キャッシュバッファは、主記憶装置のデータに対する二次キャッシュの参照要求を保持する二次キャッシュバッファと、二次キャッシュのデータに対する一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、キャッシュバッファに保持するよう制御した参照要求を一次キャッシュバッファに保持するよう制御し、キャッシュバッファに保持するよう制御した参照要求以外の参照要求を一次キャッシュから二次キャッシュへ転送するよう構成したので、記憶制御装置は、予め二次キャッシュまでのムーブインを開始しておくことで、一次キャッシュＭＩＢの確保からムーブイン完了までの時間を短縮することができるという効果を奏する。
【００２８】
また、本発明によれば、中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、プロセッサは、複数のスレッドごとに主記憶装置のデータの参照を要求し、複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、参照要求が保持されたキャッシュバッファの数をプロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、中央処理装置が複数のプロセッサからなるマルチプロセッサであり、一つのプロセッサが引き起こしたキャッシュミスにより全てのプロセッサの動作が止まらないようにすることができると共に、個々のプロセッサがマルチスレッドで動作した場合でも、一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２９】
以下に添付図面を参照して、この発明に係る記憶制御装置の好適な３つの実施例を詳細に説明する。
（１）実施例１は、本発明に係る記憶制御装置をマルチスレッド動作時のコンピュータシステムに適用する場合について説明する。
（２）実施例２は、本発明に係る記憶制御装置をマルチプロセッサシステムに適用する場合について説明する。
（３）実施例３は、本発明に係る記憶制御装置と同じ機能を有するムーブインバッファ制御プログラムを実行する場合について説明する。
【実施例１】
【００３０】
本実施例１では、本発明に係る記憶制御装置をマルチスレッド動作時のコンピュータシステムに適用する場合について説明する。ここでは、（１−１）記憶制御装置の概要と主要な特徴、（１−２）コンピュータシステムの構成、（１−３）マルチスレッド動作時のＭＩＢ制御、（１−４）マルチスレッド動作時のＭＩＢ制御手順の順番で説明する。
【００３１】
（１−１）記憶制御装置の概要と主要な特徴
図１を参照して、記憶制御装置１０３の概要と主要な特徴について説明する。図１は、実施例１に係るコンピュータシステム１の構成を示す機能ブロック図である。
【００３２】
本発明に係る記憶制御装置１０３は、主記憶装置３０に対する中央処理装置１０のデータの参照を制御し、また主記憶装置３０のデータおよびデータに対応したアドレス情報を記憶する二次キャッシュ１０３８と、二次キャッシュ１０３８のデータおよびデータに対応したアドレス情報を記憶する一次キャッシュ１０３４と、主記憶装置３０のデータに対する二次キャッシュ１０３８の参照要求を保持する二次キャッシュＭＩＢ１０３９と、二次キャッシュ１０３８のデータに対する一次キャッシュ１０３４の参照要求を保持する一次キャッシュＭＩＢ１０３６と、を有する制御装置であり、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができることを特徴とする。
【００３３】
中央処理装置１０は、複数のスレッドごとに主記憶装置３０のデータの参照を要求し、スレッド識別情報取得部１０４１ａは、複数のスレッドを識別するスレッド識別情報を取得し、有効ＭＩＢ検出部１０４１ｂは、参照要求が保持された一次キャッシュＭＩＢ１０３６の数をスレッド識別情報に基づいてスレッドごとに検出し、ＭＩＢ制御部１０４１ｃは、スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置１０３は、マルチスレッド動作時に一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる。
【００３４】
（１−２）コンピュータシステムの構成
次に、図１を参照して、実施例１に係るコンピュータシステム１の構成について説明する。コンピュータシステム１は、中央処理装置１０、５０、システムコントローラ２０、主記憶装置３０、入出力装置４０を有するシステムである。中央処理装置１０、５０は、主記憶装置３０に格納されたプログラムに従い、データを処理した結果を再び主記憶装置３０に格納する処理部であり、命令処理装置１０１、演算装置１０２、記憶制御装置１０３を有する。
【００３５】
命令処理装置１０１は、中央処理装置１０の全体を制御する処理部であり、主記憶装置３０からプログラムを構成している命令を読み出して、読み出した命令を解読し、解読した命令に基づいて各装置に要求を出し、プログラムの実行を制御する。また、演算装置１０２は、主記憶装置３０からデータを読み出して、読み出したデータに基づいて各種の演算を実行する。また、記憶制御装置１０３は、命令処理装置１０１および演算装置１０２と主記憶装置３０との間に介在し、命令処理装置１０１および演算装置１０２から主記憶装置３０のデータに対する参照を制御する処理部である。なお、記憶制御装置１０３の詳細については、コンピュータシステム１の構成について説明した後に、詳細に説明する。
【００３６】
システムコントローラ２０は、複数の中央処理装置１０、５０、主記憶装置３０、入出力装置４０からなるコンピュータシステム１の全体を制御する制御部である。主記憶装置３０は、プログラムおよびデータを記憶する記憶装置であり、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの半導体記憶素子から構成される。
【００３７】
入出力装置４０は、ユーザからの要求、指示を入力するキーボードやマウスなどの入力装置、プログラムおよびデータを入力するフロッピー（登録商標）ディスク、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの外部記憶装置、データを出力するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、プリンタなどの出力装置である。
【００３８】
続いて、記憶制御装置１０３の詳細について説明する。記憶制御装置１０３は、命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュ１０３４、一次キャッシュＭＩＢ１０３６、二次キャッシュ１０３８、二次キャッシュＭＩＢ１０３９、プリフェッチポート１０４０、一次キャッシュ制御部１０４１、二次キャッシュ制御部１０４２を有する。
【００３９】
命令ポート１０３１は、一次キャッシュ１０３４から取り出された一連のプログラムの命令を一時的に記憶するバッファである。また、ストアポート１０３２は、演算結果を一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０に書き込む命令であるストア命令を一時的に記憶するバッファである。また、フェッチポート１０３３は、一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０から読み出すフェッチ処理要求を一時的に記憶するバッファである。
【００４０】
一次キャッシュ１０３４は、二次キャッシュ１０３８のデータの一部とデータの一部に対応する物理アドレスを記憶するキャッシュであり、プログラムを記憶する命令キャッシュ１０３４ａ、データを記憶するオペランドキャッシュ１０３４ｂを有する。また、一次ャッシュＭＩＢ１０３６は、キャッシュミスを起こし二次キャッシュ１０３８からキャッシュラインのムーブイン、すなわちデータを参照する場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、プログラムの物理アドレスを記憶する命令キャッシュＭＩＢ１０３６ａ、データの物理アドレスを記憶するオペランドキャッシュＭＩＢ１０３６ｂを有する。命令キャッシュＭＩＢ１０３６ａ、オペランドキャッシュＭＩＢ１０３６ｂはそれぞれ、例えば、４個のＭＩＢを有する。なお、一次キャッシュ１０３４から一次キャッシュＭＩＢ１０３６の数を超えて二次キャッシュ１０３８に対してムーブインを要求することはできない。
【００４１】
二次キャッシュ１０３８は、主記憶装置３０のプログラムまたはデータの一部とプログラムおよびデータの一部に対応する物理アドレスを記憶するキャッシュである。二次キャッシュＭＩＢ１０３９は、キャッシュミスを起こし主記憶装置３０からキャッシュラインの参照を行う場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、例えば、１６個のＭＩＢを有する。なお、二次キャッシュ１０３８から二次キャッシュＭＩＢ１０３９の数を超えて主記憶装置３０に対して参照を要求することはできない。
【００４２】
プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の空きがない場合、一次キャッシュ制御部１０４１が二次キャッシュ１０３８に対して主記憶装置３０からデータの参照要求を転送するバッファであり、一次キャッシュＭＩＢ１０３６を経由する経路とは別に二次キャッシュＭＩＢ１０３９へデータのプリフェッチを要求する。
【００４３】
さらに詳細に説明すると、プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置３０から二次キャッシュまでのムーブインを要求する。また、プリフェッチポート１０４０は、一次キャッシュ１０３４までのムーブインを実行することはできないが、後で一次キャッシュ１０３４に空きができた場合に、一次キャッシュＭＩＢ１０３６を経由して一次キャッシュ１０３４へムーブインを要求する。
【００４４】
すなわち、プリフェッチポート１０４０は、一次キャッシュ１０３４までのムーブインを実行できないときに、予め二次キャッシュ１０３８までのムーブインを開始しておくことで、一次キャッシュＭＩＢ１０３６の空きができた場合に、一次キャッシュ１０３４へのムーブインを開始したときには、キャッシュラインがすでに二次キャッシュに届いているか、二次キャッシュの近くまで届いている。したがって、プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の確保からムーブイン完了までの時間を短縮することができる。
【００４５】
一次キャッシュ制御部１０４１は、命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュ１０３４、一次命令キャッシュＭＩＢ１０３６、プリフェッチポート１０４０を制御する制御部であり、スレッド識別情報取得部１０４１ａ、有効ＭＩＢ検出部１０４１ｂ、ＭＩＢ制御部１０４１ｃを有する。
【００４６】
スレッド識別情報取得部１０４１ａは、スレッドを識別するスレッド識別情報を取得する取得部であり、命令処理装置１０１からスレッド識別情報を取得する。また、有効ＭＩＢ検出部１０４１ｂは、主記憶装置３０のデータに対する一次キャッシュ１０３６の参照要求が保持された一次キャッシュＭＩＢ１０３６の数をスレッド識別情報に基づいてスレッドごとに検出する検出部である。なお、有効ＭＩＢ検出部１０４１ｂについては別途詳細に説明する。また、ＭＩＢ制御部１０４１ｃは、スレッドごとに検出された一次キャッシュＭＩＢ１０３６の数が所定の数を超えないように参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御する処理部である。
【００４７】
（１−３）マルチスレッド動作時のＭＩＢ制御
次に、図２を参照して、図１に示すＭＩＢ制御部１０４１ｃによるマルチスレッド動作時のＭＩＢ制御について説明する。図２は、図１に示すＭＩＢ制御部１０４１ｃによるマルチスレッド動作時のＭＩＢ制御を示す図である。同図に示すように、一次キャッシュ制御部１０４１は、あるスレッドの命令がキャッシュミスを起こした場合、一次キャッシュＭＩＢ１０３６の確保を要求する。そして、有効ＭＩＢ検出部１０４１ｂは、参照要求が保持された一次キャッシュＭＩＢ１０３６の数をスレッド識別情報に基づいてスレッドごとに検出する。さらに、ＭＩＢ制御部１０４１ｃは、スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御する。
【００４８】
ここで、図３を参照して、図１に示す有効ＭＩＢ検出部１０４１ｂが検出する一次キャッシュＭＩＢ１０３６のデータ構造について説明する。図３は、図１に示す有効ＭＩＢ検出部１０４１ｂが検出する一次キャッシュＭＩＢ１０３６のデータ構造を示す図である。同図に示すように、一次キャッシュＭＩＢ１０３６は、ＭＩＢごとに使用中であることを示す有効フラグを有する。この有効フラグが“１”である場合、該当するＭＩＢが使用中であることを示す。また、命令処理装置１０１が２つのスレッドを並行して実行している場合は、２つのスレッドは、例えば“０”、“１”というスレッド識別情報で識別できる。また、一次キャッシュＭＩＢ１０３６は、参照要求として物理アドレスなどを有する。
【００４９】
有効ＭＩＢ検出部１０４１ｂは、一次キャッシュＭＩＢ１０３６から有効フラグとスレッド識別情報を取り出して、スレッドごとに有効なＭＩＢの数を検出する。ここで、図４を参照して、図１に示す有効ＭＩＢ検出部１０４１ｂの構成について説明する。図４は、図１に示す有効ＭＩＢ検出部１０４１ｂの構成を示す機能ブロック図である。有効ＭＩＢ検出部１０４１ｂは、同図の右半分でスレッド“１”が４つのＭＩＢのうち任意の３つのＭＩＢを占有しているか否かを検出し、同図の左半分でスレッド“０”が４つのＭＩＢうち任意の３つのＭＩＢを占有しているか否かを検出する。
【００５０】
例えば、同図の右半分では、４つのＭＩＢの有効フラグの値“０”または“１”と、スレッド識別情報の値“０”または“１”とを１段目の論理積回路の入力とする。そして、一段目の論理積回路の４つの出力のうち３つの出力の組み合わせに関して、一段目の論理積回路の出力を２段目の論理積回路の入力とする。さらに、２段目の４つの論理積回路の出力を論理和回路の入力とすると、論理和回路の出力が“１”の場合に４つのＭＩＢのうちの任意の３つをスレッド“１”が使用していることを示す。同様に、同図の左半部では、論理和回路の出力が“１”の場合に４つのＭＩＢのうちの任意の３つをスレッド“０”が使用していることを示す。
【００５１】
（４）マルチスレッド動作時のＭＩＢ制御手順
次に、図５を参照して、図１に示すＭＩＢ制御部１０４１ｃによるマルチスレッド動作時のＭＩＢ制御手順について説明する。図５は、図１に示すＭＩＢ制御部１０４１ｃによるマルチスレッド動作時のＭＩＢ制御手順を示すフローチャートである。同図に示すように、一次キャッシュ１０３４のパイプラインに投入されたスレッド“０”または“１”のロード命令、ストア命令、プリフェッチ命令のいずれか一つがキャッシュミスをすると（ステップＳ５０１）、ＭＩＢ制御部１０４１ｃは、有効ＭＩＢ検出部１０４１ｂに一次キャッシュＭＩＢ１０３６が満杯か否かを確認する（ステップＳ５０２）。
【００５２】
その結果、一次キャッシュＭＩＢ１０３６が満杯である場合（ステップＳ５０２肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ５０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ５０４）。
【００５３】
一方、一次キャッシュＭＩＢ１０３６が満杯でない場合（ステップＳ５０２否定）、ＭＩＢ制御部１０４１ｃは、さらに有効ＭＩＢ検出部１０４１ｂに一次キャッシュＭＩＢ１０３６の残りのエントリが１つか否かを確認する（ステップＳ５０５）。
【００５４】
その結果、一次キャッシュＭＩＢ１０３６の残りのエントリが２つ以上である場合は（ステップＳ５０５否定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ５０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ５０８）。
【００５５】
一方、一次キャッシュＭＩＢ１０３６の残りのエントリが１つである場合は（ステップＳ５０５肯定）、ＭＩＢ制御部１０４１ｃは、さらに同一のスレッドがＭＩＢを占有しているか否かを確認する（ステップＳ５０６）。
【００５６】
その結果、同一のスレッドがＭＩＢを占有している場合は（ステップＳ５０６肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ５０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ５０４）。
【００５７】
一方、同一のスレッドがＭＩＢを占有していない場合は（ステップＳ５０６否定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ５０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ５０８）。
【００５８】
このように、本手順によれば、ＭＩＢ制御部１０４１ｃは、一次キャッシュ１０３４のパイプラインへ投入されたスレッド“０”または“１”のロード命令、ストア命令、プリフェッチ命令によってＭＩＢが占有されている場合は、同一のスレッドの命令による一次キャッシュＭＩＢ１０３６の確保を禁止し、プリフェッチポート１０４０を確保して、二次キャッシュ１０３８へのムーブインを要求することとしたので、記憶制御装置１０３は、同一のスレッドの命令によって一次キャッシュＭＩＢ１０３６が占有されることを回避しつつ、プリフェッチの効果が現れるようにすることができる。
【００５９】
上述してきたように、本実施例１では、中央処理装置１０は、複数のスレッドごとに主記憶装置のデータの参照を要求し、スレッド識別情報取得部１０４１ａは、複数のスレッドのスレッド識別情報を取得し、有効ＭＩＢ検出部１０４１ｂは、参照要求が保持されたキャッシュバッファの数をスレッド識別情報に基づいてスレッドごとに検出し、ＭＩＢ制御部１０４１ｃは、スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置１０３は、マルチスレッド動作時に一方のスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる。
【００６０】
スレッド識別情報取得部１０４１ａは、命令処理装置１０１からスレッド識別情報を取得することとしたので、記憶制御装置１０３は、スレッド識別情報によりスレッドの切り替えを確実に識別することができる。
【００６１】
ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６に参照要求を格納する場合に、参照要求にスレッド識別情報を付加するよう制御することとしたので、記憶制御装置１０３は、同じスレッドの参照要求が占有している一次キャッシュＭＩＢ１０３６の数を容易に検出することができる。
【００６２】
キャッシュは、主記憶装置１０３のデータおよびデータに対応したアドレス情報を記憶する二次キャッシュ１０３８と、二次キャッシュ１０３８のデータおよびデータに対応したアドレス情報を記憶する一次キャッシュ１０３４と、を有し、キャッシュバッファは、主記憶装置１０３のデータに対する二次キャッシュ１０３８の参照要求を保持する二次キャッシュＭＩＢ１０３９と、二次キャッシュ１０３８のデータに対する一次キャッシュ１０３４の参照要求を保持する一次キャッシュＭＩＢ１０３６と、を有し、キャッシュバッファに保持するよう制御した参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御し、キャッシュバッファに保持するよう制御した参照要求以外の参照要求を一次キャッシュ１０３４から二次キャッシュ１０３８へ転送することとしたので、記憶制御装置１０３は、予め二次キャッシュ１０３８までのムーブインを開始しておくことで、一次キャッシュＭＩＢ１０３６の確保からムーブイン完了までの時間を短縮することができる。
【実施例２】
【００６３】
本実施例２は、本発明に係る記憶制御装置をマルチプロセッサシステムに適用する場合について説明する。ここでは、図６を参照して、実施例２に係るコンピュータシステム２の構成について説明する。図６は、実施例２に係るコンピュータシステム２の構成を示す機能ブロック図である。なお、実施例１の構成と共通の内容については説明を省略する。
【００６４】
同図に示すように、コンピュータシステム２は、ＣＰＵ１１１、１１２を有する中央処理装置１１、５１、システムコントローラ２０、主記憶装置３０、入出力装置４０を有する。以下においては、実施例１との相違点である中央処理装置１１について説明する。
【００６５】
中央処理装置１１は、ＣＰＵ１１１、１１２、記憶制御装置１１３を有する。ＣＰＵ１１１、１１２は、実施例１の中央処理装置１０に相当し、命令処理装置および演算装置を少なくとも有する。これらの構成と機能については実施例１と同じなので、説明は省略する。
【００６６】
記憶制御装置１１３は、キャッシュ１１３１、キャッシュＭＩＢ１１３２、キャッシュ制御部１１３３を有する。キャッシュ１１３１は、主記憶装置３０のデータの一部およびデータの一部に対応する物理アドレスを記憶する二次キャッシュまたは三次キャッシュである。また、キャッシュＭＩＢ１１３２は、キャッシュミスを起こし主記憶装置３０からキャッシュラインのムーブイン、すなわちデータを参照する場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファである。
【００６７】
キャッシュ制御部１１３３は、キャッシュ１１３１、キャッシュＭＩＢ１１３２を制御する制御部であり、ＣＰＵ識別情報取得部１１３３ａ、有効ＭＩＢ検出部１１３３ｂ、ＭＩＢ制御部１１３３ｃを有する。ＣＰＵ識別情報取得部１１３３ａは、ＣＰＵ１１１、１１２のＣＰＵ識別情報およびスレッド識別情報を取得する取得部である。
【００６８】
有効ＭＩＢ検出部１１３３ｂは、参照要求が保持されたキャッシュＭＩＢ１１３２の数をＣＰＵ識別情報およびスレッド識別情報に基づいてＣＰＵおよびスレッドごとに検出する検出部である。また、有効ＭＩＢ検出部１１３３ｂは、ＣＰＵ毎またはスレッド毎に使用中のキャッシュＭＩＢ１１３２の数を計数するカウンタを備えている。また、有効ＭＩＢ検出部１１３３ｂは、キャッシュＭＩＢ１１３２が確保されたときに、キャッシュＭＩＢ１１３２を確保したＣＰＵまたはスレッドのカウンタを加算し、キャッシュＭＩＢ１１３２が開放されたときに、キャッシュＭＩＢ１１３２を開放したＣＰＵまたはスレッドのカウンタを減算する。なお、二次キャッシュまたは三次キャッシュに備えられるキャッシュバッファは、一次キャッシュに備えられるキャッシュバッファの数と比較して数倍から10倍程度の数となる。
【００６９】
また、ＭＩＢ制御部１１３３ｃは、ＣＰＵおよびスレッドごとに検出されたキャッシュＭＩＢ１１３２の数が所定の数を超えないように参照要求をキャッシュＭＩＢ１１３２に保持するよう制御する制御部である。
【００７０】
このように、記憶制御装置１１３は、ＣＰＵ１１１、１１２によって共有されており、主記憶装置３０に対するＣＰＵ１１１および１１２のデータの参照を制御する。したがって、一つのＣＰＵ１１１または１１２が記憶制御装置１１３のキャッシュＭＩＢ１１３２を占有することにより、他のＣＰＵ１１１または１１２のＭＩＢの確保が遅れるという状態を回避するために、実施例１で説明したマルチスレッド動作時のＭＩＢ制御と同じＭＩＢ制御が適用できる。
【００７１】
上述してきたように、本実施例２では、中央処理装置１１は、ＣＰＵ１１１、１１２からなるマルチプロセッサであり、ＣＰＵ１１１、１１２は、複数のスレッドごとに主記憶装置３０のデータの参照を要求し、ＣＰＵ識別情報取得部１１３３ａは、ＣＰＵ１１１、１１２のＣＰＵ識別情報およびスレッド識別情報を取得し、有効ＭＩＢ検出部１１３３ｂは、参照要求が保持されたキャッシュＭＩＢ１１３２の数をＣＰＵ識別情報およびスレッド識別情報に基づいてＣＰＵ１１１、１１２およびスレッドごとに検出し、ＭＩＢ制御部１１３３ｃは、ＣＰＵ１１１、１１２およびスレッドごとに検出されたキャッシュＭＩＢ１１３２の数が所定の数を超えないように参照要求をキャッシュＭＩＢ１１３２に保持するよう制御することとしたので、記憶制御装置１１３は、中央処理装置１１がＣＰＵ１１１、１１２からなるマルチプロセッサであり、一つのプロセッサが引き起こしたキャッシュミスにより全てのプロセッサの動作が止まらないようにすることができると共に、個々のＣＰＵ１１１、１１２がマルチスレッドで動作した場合でも、一つのスレッドが引き起こしたキャッシュミスにより全てのスレッドの動作が止まらないようにすることができる。
【実施例３】
【００７２】
ところで、上記実施例１および２で説明した記憶制御装置およびムーブインバッファ制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、本実施例３では、上記実施例１で説明した記憶制御装置と同様の機能を有するムーブインバッファ制御プログラムを実行するコンピュータシステムについて説明する。
【００７３】
図７は、実施例３に係るコンピュータシステムの構成を示すシステム構成図であり、図８は、図７に示すコンピュータシステムにおける本体部の構成を示すブロック図である。図７に示すように、実施例３に係るコンピュータシステム２００は、本体部２０１と、本体部２０１からの指示によって表示画面２０２ａに画像などの情報を表示するためのディスプレイ２０２と、このコンピュータシステム２００に種々の情報を入力するためのキーボード２０３と、ディスプレイ２０２の表示画面２０２ａ上の任意の位置を指定するためのマウス２０４とを備える。
【００７４】
また、このコンピュータシステム２００における本体部２０１は、図８に示すように、ＣＰＵ２２１と、ＲＡＭ２２２と、ＲＯＭ２２３と、ハードディスクドライブ（ＨＤＤ）２２４と、ＣＤ−ＲＯＭ２０９を受け入れるＣＤ−ＲＯＭドライブ２２５と、フレキシブルディスク（ＦＤ）２０８を受け入れるＦＤドライブ２２６と、ディスプレイ２０２、キーボード２０３並びにマウス２０４を接続するＩ／Ｏインターフェース２２７と、ローカルエリアネットワークまたは広域エリアネットワーク（ＬＡＮ／ＷＡＮ）２０６に接続するＬＡＮインターフェース２２８と、を備える。
【００７５】
さらに、このコンピュータシステム２００には、インターネットなどの公衆回線２０７に接続するためのモデム２０５が接続されるとともに、ＬＡＮインターフェース２２８およびＬＡＮ／ＷＡＮ２０６を介して、他のコンピュータシステム（ＰＣ）２１１、サーバ２１２並びにプリンタ２１３などが接続される。
【００７６】
そして、このコンピュータシステム２００は、所定の記録媒体に記録されたムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置を実現する。ここで、所定の記録媒体とは、フレキシブルディスク（ＦＤ）２０８、ＣＤ−ＲＯＭ２０９、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」の他に、コンピュータシステム２００の内外に備えられるハードディスクドライブ（ＨＤＤ）２２４や、ＲＡＭ２２２、ＲＯＭ２２３などの「固定用の物理媒体」、さらに、モデム２０５を介して接続される公衆回線２０７や、他のコンピュータシステム２１１並びにサーバ２１２が接続されるＬＡＮ／ＷＡＮ２０６などのように、プログラムの送信に際して短期にプログラムを保持する「通信媒体」など、コンピュータシステム２００によって読み取り可能なムーブインバッファ制御プログラムを記録する、あらゆる記録媒体を含むものである。
【００７７】
すなわち、ムーブインバッファ制御プログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものであり、コンピュータシステム２００は、このような記録媒体からムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置およびムーブインバッファ制御方法を実現する。なお、ムーブインバッファ制御プログラムは、コンピュータシステム２００によって実行されることに限定されるものではなく、他のコンピュータシステム２１１またはサーバ２１２がムーブインバッファ制御プログラムを実行する場合や、これらが協働してムーブインバッファ制御プログラムを実行するような場合にも、本発明を同様に適用することができる。
【００７８】
（付記１）主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手段と、前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手段と、前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手段と、を備えたことを特徴とする記憶制御装置。
【００７９】
（付記２）前記スレッド識別情報取得手段は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする付記１に記載の記憶制御装置。
【００８０】
（付記３）前記バッファ制御手段は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする付記１に記載の記憶制御装置。
【００８１】
（付記４）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートをさらに備え、
前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記１に記載の記憶制御装置。
【００８２】
（付記５）前記中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、
前記プロセッサは、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記スレッド識別情報取得手段は、前記複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、前記有効バッファ検出手段は、前記参照要求が保持されたキャッシュバッファの数を前記プロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、前記バッファ制御手段は、前記プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１に記載の記憶制御装置。
【００８３】
（付記６）主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得工程と、
前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出工程と、
前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
【００８４】
（付記７）前記スレッド識別情報取得工程は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする付記６に記載のムーブインバッファ制御方法。
【００８５】
（付記８）前記バッファ制御工程は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする付記６に記載のムーブインバッファ制御方法。
【００８６】
（付記９）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートに保持する参照要求転送ポート保持工程をさらに含み、
前記バッファ制御工程は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポート保持工程によって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記６に記載のムーブインバッファ制御方法。
【００８７】
（付記１０）前記中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、前記プロセッサは、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、前記スレッド識別情報取得工程は、前記複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、前記有効バッファ検出工程は、前記参照要求が保持されたキャッシュバッファの数を前記プロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、前記バッファ制御工程は、前記プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記６に記載のムーブインバッファ制御方法。
【００８８】
（付記１１）主記憶装置に対する中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記中央処理装置は、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記複数のスレッドのスレッド識別情報を取得するスレッド識別情報取得手順と、
前記参照要求が保持されたキャッシュバッファの数を前記スレッド識別情報に基づいてスレッドごとに検出する有効バッファ検出手順と、
前記スレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
【００８９】
（付記１２）前記スレッド識別情報取得手順は、前記中央処理装置から前記スレッド識別情報を取得することを特徴とする付記１１に記載のムーブインバッファ制御プログラム。
【００９０】
（付記１３）前記バッファ制御手順は、前記キャッシュバッファに前記参照要求を格納する場合に、前記参照要求に前記スレッド識別情報を付加するよう制御することを特徴とする付記１１に記載のムーブインバッファ制御プログラム。
【００９１】
（付記１４）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ前記参照要求を転送するバッファである参照要求転送ポートに保持する参照要求転送ポート保持手順をさらにコンピュータに実行させ、
前記バッファ制御手順は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポート保持手順によって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記１１に記載のムーブインバッファ制御プログラム。
【００９２】
（付記１５）前記中央処理装置は、複数のプロセッサからなるマルチプロセッサであり、
前記プロセッサは、複数のスレッドごとに前記主記憶装置のデータの参照を要求し、
前記スレッド識別情報取得手順は、前記複数のプロセッサのプロセッサ識別情報およびスレッド識別情報を取得し、
前記有効バッファ検出手順は、前記参照要求が保持されたキャッシュバッファの数を前記プロセッサ識別情報およびスレッド識別情報に基づいてプロセッサおよびスレッドごとに検出し、
前記バッファ制御手順は、前記プロセッサおよびスレッドごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１１に記載のムーブインバッファ制御プログラム。
【００９３】
（付記１６）主記憶装置に対する複数の中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
前記複数の中央処理装置の装置識別情報を取得する装置識別情報取得手段と、
前記参照要求が保持されたキャッシュバッファの数を前記装置識別情報に基づいて前記中央処理装置ごとに検出する有効バッファ検出手段と、
前記中央処理装置ごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
を備えたことを特徴とする記憶制御装置。
【００９４】
（付記１７）主記憶装置に対する複数の中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記複数の中央処理装置の装置識別情報を取得する装置識別情報取得工程と、
前記参照要求が保持されたキャッシュバッファの数を前記装置識別情報に基づいて前記中央処理装置ごとに検出する有効バッファ検出工程と、
前記中央処理装置ごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
【００９５】
（付記１８）主記憶装置に対する複数の中央処理装置のデータの参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記複数の中央処理装置の装置識別情報を取得する装置識別情報取得手順と、
前記参照要求が保持されたキャッシュバッファの数を前記装置識別情報に基づいて前記中央処理装置ごとに検出する有効バッファ検出手順と、
前記中央処理装置ごとに検出されたキャッシュバッファの数が所定の数を超えないように前記参照要求を前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
【産業上の利用可能性】
【００９６】
以上のように、本発明に係る記憶制御装置は、特に、コンピュータに適している。
【図面の簡単な説明】
【００９７】
【図１】実施例１に係るコンピュータシステムの構成を示す機能ブロック図である。
【図２】図１に示すＭＩＢ制御部１０４１ｃによるマルチスレッド動作時のＭＩＢ制御を示す図である。
【図３】図１に示す有効ＭＩＢ検出部が検出する一次キャッシュＭＩＢのデータ構造を示す図である。
【図４】図１に示す有効ＭＩＢ検出部の構成を示す機能ブロック図である。
【図５】図１に示すＭＩＢ制御部によるマルチスレッド動作時のＭＩＢ制御手順を示すフローチャートである。
【図６】実施例２に係るコンピュータシステムの構成を示す機能ブロック図である。
【図７】実施例３に係るコンピュータシステムの構成を示すシステム構成図である。
【図８】図７に示すコンピュータシステムにおける本体部の構成を示すブロック図である。
【符号の説明】
【００９８】
１、２    コンピュータシステム
１０、１１、５０、５１    中央処理装置
２０    システムコントローラ
３０    主記憶装置
４０    入出力装置
１０１    命令処置装置
１０２    演算装置
１０３、１１３    記憶制御装置
１１１、１１２    ＣＰＵ
１０３１    命令ポート
１０３２    ストアポート
１０３３    フェッチポート
１０３４    一次キャッシュ
１０３４ａ  命令キャッシュ
１０３４ｂ  オペランドキャッシュ
１０３６    一次キャッシュＭＩＢ
１０３６ａ  命令キャッシュＭＩＢ
１０３６ｂ  オペランドキャッシュＭＩＢ
１０３８    二次キャッシュ
１０３９    二次キャッシュＭＩＢ
１０４０    プリフェッチポート
１０４１    一次キャッシュ制御部
１０４１ａ  スレッド識別情報取得部
１０４１ｂ、１１３３ｂ  有効ＭＩＢ検出部
１０４１ｃ、１１３３ｃ  ＭＩＢ制御部
１０４２    二次キャッシュ制御部
１１３１    キャッシュ
１１３２    キャッシュＭＩＢ
１１３３    キャッシュ制御部
１１３３ａ  ＣＰＵ識別情報取得部
２００    コンピュータシステム
２０１    本体部
２０２    ディスプレイ
２０２ａ  表示画面
２０３    キーボード
２０４    マウス
２０５    モデム
２０６    ローカルエリアネットワークまたは広域エリアネットワーク（ＬＡＮ／ＷＡＮ）
２０７    公衆回線
２０８    フレキシブルディスク（ＦＤ）
２０９    ＣＤ−ＲＯＭ
２１１    他のコンピュータシステム（ＰＣ）
２１２    サーバ
２１３    プリンタ
２２１    ＣＰＵ
２２２    ＲＡＭ
２２３    ＲＯＭ
２２４    ハードディスクドライブ（ＨＤＤ）
２２５    ＣＤ−ＲＯＭドライブ
２２６    ＦＤドライブ
２２７    Ｉ／Ｏインターフェース
２２８    ＬＡＮインターフェース
【図１】
2006048182.tif 000003
【図２】
2006048182.tif 000004
【図３】
2006048182.tif 000005
【図４】
2006048182.tif 000006
【図５】
2006048182.tif 000007
【図６】
2006048182.tif 000008
【図７】
2006048182.tif 000009
【図８】
2006048182.tif 000010