(57)【要約】【課題】主記憶装置のデータに対する参照を効率的に制御することができること。【解決手段】中央処理装置１０は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、ロード命令とストア命令とプリフェッチ命令とを少なくとも実行し、有効ＭＩＢ検出部１０４１ａは、主記憶装置３０のデータに対する一次キャッシュ１０３４の参照要求が保持された一次キャッシュＭＩＢ１０３６の数を検出し、ＭＩＢ制御部１０４１ｃは、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュＭＩＢ１０３６に保持するよう制御する。【選択図】        図１
2006048181.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
を備えたことを特徴とする記憶制御装置。
【請求項２】
前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、
前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、
前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項１または２に記載の記憶制御装置。
【請求項４】
前記ストア命令を保持するバッファであるストアポートをさらに備え、
前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項３に記載の記憶制御装置。
【請求項５】
前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、
前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする請求項１〜４のいずれか一つに記載の記憶制御装置。
【請求項６】
主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
【請求項７】
前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項６に記載のムーブインバッファ制御方法。
【請求項８】
前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、
前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項６または７に記載のムーブインバッファ制御方法。
【請求項９】
前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、
前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする請求項８に記載のムーブインバッファ制御方法。
【請求項１０】
主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶制御装置、ムーブインバッファ制御方法およびプログラムに関し、特に主記憶装置のデータに対する参照を効率的に制御することができる記憶制御装置、ムーブインバッファ制御方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来、中央処理装置の動作速度は、主記憶装置の動作速度に比較して大幅に高速化され、主記憶装置を参照すると中央処理装置の動作が長時間にわたって待たされるという問題があった。
【０００３】
この問題に対処するために、将来使用するデータを予めキャッシュに取り出しておくプリフェッチ命令により主記憶装置のデータに対する参照による中央処理装置の実行待ちを回避する従来技術が開示されている。すなわち、キャッシュまたは主記憶装置から取り出したデータを演算装置へ格納するロード命令、演算結果をキャッシュまたは主記憶装置へ書き込むストア命令など、中央処理装置がキャッシュまたは主記憶装置のデータに対する参照の完了を待つ処理であるデマンド要求が実行されるとき、デマンド要求に必要とされるキャッシュラインがプリフェッチ命令によりキャッシュ上にすでに準備されているように動作することにより、主記憶装置のデータに対する参照による中央処理装置の実行待ちを回避することができる。
【０００４】
また、キャッシュまたは主記憶装置のデータに対する参照要求をアウトオブオーダ処理することによって主記憶装置からのデータの取り出しを待つ時間、すなわちメモリレイテンシを短縮する従来技術が開示されている。すなわち、アウトオブオーダ処理とは命令をプログラム順序どおり実行するのではなく、実行可能な命令から実行していくというものである。例えば、先行する命令がキャッシュミスを起こして主記憶装置からデータの取り出しを待っている間に後続の命令を実行する。後続の命令がキャッシュヒットすればキャッシュから取り出したデータを演算装置のレジスタへ格納し、格納したデータを用いて演算を行い、プログラムの実行を可能な範囲で進める。後続の命令がキャッシュミスを起こした場合は、必要なキャッシュラインを主記憶装置から取り出す。こうして、複数のキャッシュミスを同時に処理した場合、キャッシュミスを逐次処理した場合と比較して、メモリレイテンシを短縮することができる。
【０００５】
また、キャッシュごとにキャッシュＭＩＢ（以下においては「ムーブインバッファ」をＭＩＢ（Ｍｏｖｅ  Ｉｎ  Ｂｕｆｆｅｒ）という。）を設け、キャッシュミスが生じて主記憶装置からキャッシュラインを取り出す場合に、参照要求中のキャッシュラインの物理アドレスを記憶することによって、キャッシュＭＩＢの確保からキャッシュへの転送完了までの時間を短縮し、同一アドレスに対する複数の参照を要求することを回避しており、キャッシュＭＩＢを無駄に確保することを回避すると共に、データ転送によるデータ転送バスの無駄な使用を回避する。
【０００６】
一方、多次元配列を参照して演算を行うプログラムのように、多くのデータを参照する場合、プリフェッチ命令により多数のキャッシュラインを一次キャッシュへ取り出す必要が生じるので、一次キャッシュの一次キャッシュＭＩＢの枯渇が頻発する。このような場合、デマンド要求が一次キャッシュＭＩＢを確保しようとしても、一次キャッシュＭＩＢを確保できないので一次キャッシュＭＩＢの空きができるまでデマンド要求の実行は待たされることになる。すなわち、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするデマンド要求がさまたげられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
【０００７】
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュＭＩＢを全て確保した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュＭＩＢを確保できずに実行が妨げられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
【０００８】
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュＭＩＢを先に確保して、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題があった。
【０００９】
例えば、特許文献１では、キャッシュにロードする命令のプリフェッチ数をオペランドのプリフェッチ数より増やしてシステム性能を向上させる従来技術が開示されている。また、特許文献２では、ブロックフェッチの最大許容回数以内で要求される任意回数のプリフェッチを施行することができる従来技術が開示されている。また、特許文献３では、無駄なプリフェッチを削減することにより一次キャッシュＭＩＢの枯渇を防止する従来技術が開示されている。
【００１０】
【特許文献１】特開平４−２１０４４号公報
【特許文献２】特開平６―９０６８１号公報
【特許文献３】特開平８―１６４６８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
特許文献１の従来技術では、キャッシュにロードする命令のプリフェッチ数をオペランドのプリフェッチ数より増やしてシステム性能を向上させることができる。また、特許文献２の従来技術では、ブロックフェッチの最大許容回数以内で要求される任意回数のプリフェッチを施行することができる。また、特許文献３の従来技術では、無駄なプリフェッチを削減することにより一次キャッシュＭＩＢの枯渇を防止することができる。
【００１２】
しかし、特許文献１〜３の従来技術では、一次キャッシュＭＩＢがプリフェッチ命令により占有されることが回避できないので、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするデマンド要求がさまたげられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
【００１３】
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュＭＩＢを全て確保した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュＭＩＢを確保できずに実行が妨げられ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
【００１４】
また、アウトオブオーダ処理によって後続のロード要求またはストア要求が一次キャッシュＭＩＢを先に確保して、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされ、結果的に、主記憶装置のデータに対する参照を効率的に制御することができないという課題が未解決であった。
【００１５】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、主記憶装置のデータに対する参照を効率的に制御することができる記憶制御装置、ムーブインバッファ制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、を備えたことを特徴とする。
【００１７】
また、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、を含んだことを特徴とする。
【００１８】
また、本発明は、主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、をコンピュータに実行させることを特徴とする。
【００１９】
かかる発明によれば、中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、キャッシュまたは主記憶装置から演算装置にデータを格納する命令であるロード命令と、演算装置の演算結果をキャッシュまたは主記憶装置に書き込むストア命令と、主記憶装置のデータをキャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、主記憶装置のデータに対するキャッシュの参照要求が保持されたキャッシュバッファの数を検出し、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先してキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
【００２０】
また、本発明は、前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２１】
また、本発明は、前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２２】
かかる発明によれば、命令の実行順序に基づいてロード命令またはストア命令による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュＭＩＢを確保できずに実行が妨げられることを回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
【００２３】
また、本発明は、前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２４】
また、本発明は、前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２５】
かかる発明によれば、キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持し、保持されたフェッチ処理要求の実行を監視し、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
【００２６】
また、本発明は、前記ストア命令を保持するバッファであるストアポートをさらに備え、前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２７】
また、本発明は、前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする。
【００２８】
かかる発明によれば、ストア命令を保持し、保持されたストア命令の実行をさらに監視し、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による参照要求をキャッシュバッファに保持するよう制御することとしたので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができる。
【００２９】
また、本発明は、前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする。
【００３０】
かかる発明によれば、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送することとしたので、記憶制御装置は、一次キャッシュバッファの空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置から二次キャッシュまでのムーブインを要求することができ、もって主記憶装置のデータに対する参照を効率的に制御することができる。
【発明の効果】
【００３１】
本発明によれば、中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、キャッシュまたは主記憶装置から演算装置にデータを格納する命令であるロード命令と、演算装置の演算結果をキャッシュまたは主記憶装置に書き込むストア命令と、主記憶装置のデータをキャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、主記憶装置のデータに対するキャッシュの参照要求が保持されたキャッシュバッファの数を検出し、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先してキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
【００３２】
また、本発明によれば、命令の実行順序に基づいてロード命令またはストア命令による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュＭＩＢを確保できずに実行が妨げられることを回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
【００３３】
また、本発明によれば、キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持し、保持されたフェッチ処理要求の実行を監視し、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
【００３４】
また、本発明によれば、ストア命令を保持し、保持されたストア命令の実行をさらに監視し、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による参照要求をキャッシュバッファに保持するよう制御するよう構成したので、記憶制御装置は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
【００３５】
また、本発明によれば、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送するよう構成したので、記憶制御装置は、一次キャッシュバッファの空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置から二次キャッシュまでのムーブインを要求することができ、もって主記憶装置のデータに対する参照を効率的に制御することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３６】
以下に添付図面を参照して、この発明に係る記憶制御装置の好適な２つの実施例を詳細に説明する。実施例１では、本発明に係る記憶制御装置をコンピュータシステムに適用する場合について説明する。また、実施例２では、本発明に係る記憶制御装置と同じ機能を有するムーブインバッファ制御プログラムを実行する場合について説明する。
【実施例１】
【００３７】
本実施例１では、本発明に係る記憶制御装置をコンピュータシステムに適用する場合について説明する。ここでは、（１）記憶制御装置の概要と主要な特徴、（２）コンピュータシステムの構成、（３）ストア命令およびフェッチ処理要求に対するＭＩＢ制御、（４）ロード命令／ストア命令の実行停滞に対するＭＩＢ制御、（５）プリフェッチ命令に対するＭＩＢ制御手順、（６）アウトオブオーダ処理に対するＭＩＢ制御手順、（７）ロード命令／ストア命令の実行停滞に対するＭＩＢ制御手順の順番で説明する。
【００３８】
（１）記憶制御装置の概要と主要な特徴
図１を参照して、記憶制御装置１０３の概要と主要な特徴について説明する。図１は、実施例１に係るコンピュータシステム１の構成を示す機能ブロック図である。
【００３９】
本発明に係る記憶制御装置１０３は、主記憶装置３０と中央処理装置１０に含まれる命令処理装置１０１および演算装置１０２との間に介在し、命令処理装置１０１および演算装置１０２から主記憶装置３０のデータに対する参照を制御し、主記憶装置３０のデータおよびデータに対応するアドレス情報を記憶する一次キャッシュ１０３４および二次キャッシュ１０３８と、主記憶装置３０のデータに対する一次キャッシュ１０３４および二次キャッシュ１０３８の参照要求であるアドレス情報をそれぞれ保持する一次キャッシュＭＩＢ１０３６および二次キャッシュＭＩＢ１０３９と、を有する制御装置であり、主記憶装置３０のデータに対する参照を効率的に制御することができることを特徴とする。
【００４０】
中央処理装置１０は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、一次キャッシュ１０３４、二次キャッシュ１０３８、または主記憶装置３０から演算装置１０２にデータを格納する命令であるロード命令と、演算装置１０２の演算結果を一次キャッシュ１０３４、二次キャッシュ１０３８または、主記憶装置３０に書き込むストア命令と、主記憶装置３０のデータを一次キャッシュ１０３４、二次キャッシュ１０３８へ格納する命令であるプリフェッチ命令と、を少なくとも実行する。また、有効ＭＩＢ検出部１０４１ａは、主記憶装置３０のデータに対する一次キャッシュ１０３４の参照要求が保持された一次キャッシュＭＩＢ１０３６の数を検出し、ＭＩＢ制御部１０４１ｃは、検出されたキャッシュバッファの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュＭＩＢ１０３６に保持するよう制御する。したがって、記憶制御装置１０３は、将来必要になると思われるデータを用意するためのプリフェッチ要求によって今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【００４１】
（２）コンピュータシステムの構成
次に、図１を参照して、実施例に係るコンピュータシステム１の構成について説明する。コンピュータシステム１は、中央処理装置１０、５０、システムコントローラ２０、主記憶装置３０、入出力装置４０を有するマルチプロセッサシステムである。中央処理装置１０、５０は、主記憶装置３０に格納されたプログラムに従い、データを処理した結果を再び主記憶装置３０に格納する処理部であり、命令処理装置１０１、演算装置１０２、記憶制御装置１０３を有する。
【００４２】
命令処理装置１０１は、中央処理装置１０の全体を制御する処理部であり、主記憶装置３０からプログラムを構成している命令を読み出して、読み出した命令を解読し、解読した命令に基づいて各装置に要求を出し、プログラムの実行を制御する。また、演算装置１０２は、主記憶装置３０からデータを読み出して、読み出したデータに基づいて各種の演算を実行する。また、記憶制御装置１０３は、命令処理装置１０１および演算装置１０２と主記憶装置３０との間に介在し、命令処理装置１０１および演算装置１０２から主記憶装置３０のデータに対する参照を制御する処理部である。なお、記憶制御装置１０３の詳細については、コンピュータシステム１の構成について説明した後に、詳細に説明する。
【００４３】
システムコントローラ２０は、複数の中央処理装置１０、５０、主記憶装置３０、入出力装置４０からなるマルチプロセッサシステムであるコンピュータシステム１の全体を制御する制御部である。主記憶装置３０は、プログラムおよびデータを記憶する記憶装置であり、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの半導体記憶素子から構成される。
【００４４】
入出力装置４０は、ユーザからの要求、指示を入力するキーボードやマウスなどの入力装置、プログラムおよびデータを入力するフロッピー（登録商標）ディスク、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの外部記憶装置、データを出力するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、プリンタなどの出力装置である。
【００４５】
続いて、記憶制御装置１０３の詳細について説明する。記憶制御装置１０３は、命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュ１０３４、一次キャッシュＭＩＢ１０３６、二次キャッシュ１０３８、二次キャッシュＭＩＢ１０３９、プリフェッチポート１０４０、一次キャッシュ制御部１０４１、二次キャッシュ制御部１０４２を有する。
【００４６】
命令ポート１０３１は、一次キャッシュ１０３４から取り出された一連のプログラムの命令を一次的に記憶するバッファである。また、ストアポート１０３２は、演算結果を一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０に書き込む命令であるストア命令を一次的に記憶するバッファである。また、フェッチポート１０３３は、一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０から読み出すフェッチ処理要求を一時的に記憶するバッファである。
【００４７】
ここで、図２を参照して、図１に示す命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュＭＩＢ１０３６／二次キャッシュＭＩＢ１０３９、プリフェッチポート１０４０のデータ構造の一例について説明する。図２は、図１に示す命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュＭＩＢ１０３６／二次キャッシュＭＩＢ１０３９、プリフェッチポート１０４０のデータ構造の一例を示す図である。同図に示すように、命令ポート１０３１のデータは、６４ビットの仮想アドレスと３２バイトのデータから成っている。また、ストアポート１０３２のデータは、７ビットのＯＰ（オペレーション）コードと４３ビットの物理アドレスと８バイトのデータから成っている。また、フェッチポート１０３３のデータは、４ビットのＯＰコードと６４ビットの仮想アドレスから成っている。また、一次キャッシュＭＩＢ１０３６／二次キャッシュＭＩＢ１０３９は、４３ビットの物理アドレスと６４バイトのデータから成っている。また、プリフェッチポート１０４０のデータは、４３ビットの物理アドレスと１ビットの登録型フラグから成っている。なお、登録型フラグとは、キャッシュへのデータの登録型、すなわち共有型、排他型を識別するフラグである。
【００４８】
図１の説明に戻ると、一次キャッシュ１０３４は、二次キャッシュ１０３８のデータとデータに対応する物理アドレスを記憶するキャッシュであり、プログラムを記憶する命令キャッシュ１０３４ａ、データを記憶するオペランドキャッシュ１０３４ｂを有する。また、一次ャッシュＭＩＢ１０３６は、キャッシュミスを起こし二次キャッシュ１０３８からキャッシュラインのムーブイン、すなわちデータを参照する場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、プログラムに対する物理アドレスを記憶する命令キャッシュＭＩＢ１０３６ａ、データに対する物理アドレスを記憶するオペランドキャッシュＭＩＢ１０３６ｂを有する。命令キャッシュＭＩＢ１０３６ａ、オペランドキャッシュＭＩＢ１０３６ｂはそれぞれ、例えば、４個のＭＩＢを有する。なお、一次キャッシュ１０３４から一次キャッシュＭＩＢ１０３６の数を超えて二次キャッシュ１０３８に対してムーブインを要求することはできない。
【００４９】
二次キャッシュ１０３８は、主記憶装置３０のプログラムまたはデータの一部を記憶するキャッシュである。二次キャッシュＭＩＢ１０３９は、キャッシュミスを起こし主記憶装置３０からキャッシュラインの参照を行う場合、参照要求であるキャッシュラインの物理アドレスを記憶するバッファであり、例えば、１６個のＭＩＢを有する。なお、二次キャッシュ１０３８から二次キャッシュＭＩＢ１０３９の数を超えて主記憶装置３０に対して参照を要求することはできない。
【００５０】
プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の空きがない場合、一次キャッシュ制御部１０４１が二次キャッシュ１０３８に対して主記憶装置３０からデータの参照要求を転送するバッファであり、一次キャッシュＭＩＢ１０３６を経由する経路とは別に二次キャッシュＭＩＢ１０３９へプリフェッチを要求する。
【００５１】
さらに詳細に説明すると、プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置３０から二次キャッシュまでのムーブインを要求することができる。また、プリフェッチポート１０４０は、一次キャッシュ１０３４までのムーブインを実行することはできないが、後で一次キャッシュ１０３４に空きができた場合に、一次キャッシュＭＩＢ１０３６を経由して一次キャッシュ１０３４へムーブインを要求する。
【００５２】
すなわち、プリフェッチポート１０４０は、予め二次キャッシュ１０３８までのムーブインを開始しておくことで、一次キャッシュＭＩＢ１０３６の空きができた場合に、一次キャッシュ１０３４へのムーブインを開始したときには、キャッシュラインがすでに二次キャッシュに届いているか、二次キャッシュの近くまで届いている。したがって、プリフェッチポート１０４０は、一次キャッシュＭＩＢ１０３６の確保からムーブイン完了までの時間、すなわちキャッシュミスレイテンシを短縮することができる。
【００５３】
一次キャッシュ制御部１０４１は、命令ポート１０３１、ストアポート１０３２、フェッチポート１０３３、一次キャッシュ１０３４、一次命令キャッシュＭＩＢ１０３６、プリフェッチポート１０４０を制御する制御部であり、有効ＭＩＢ検出部１０４１ａ、命令識別部１０４１ｂ、ＭＩＢ制御部１０４１ｃ、命令実行監視部１０４１ｄを有する。
【００５４】
有効ＭＩＢ検出部１０４１ａは、主記憶装置３０のデータに対する一次キャッシュの参照要求が保持されたＭＩＢの数を検出する検出部である。ここで、図３を参照して、図１に示す有効ＭＩＢ検出部１０４１ａの構成について説明する。図３は、図１に示す有効ＭＩＢ検出部１０４１ａの構成を示す機能ブロック図である。
【００５５】
同図に示すように、一次キャッシュＭＩＢ１０３６は、ＭＩＢごとに使用中であることを示す有効フラグを有する。この有効フラグが“１”である場合、該当するＭＩＢが使用中であることを示す。有効ＭＩＢ検出部１０４１ａは、４つのＭＩＢのうち少なくとも３つが有効であることを示す４つの組み合わせに関して、該当する有効フラグの出力を４つの論理積回路の入力とする。さらに、４つの論理積回路の出力を１つの論理和回路の入力とすると、有効ＭＩＢ検出部１０４１ａは、論理和回路の出力が“１”の場合に４つのＭＩＢのうちの任意の３つが使用中であることを検出する。
【００５６】
図１の説明に戻ると、命令識別部１０４１ｂは、一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０から演算装置１０２にデータを格納する命令であるロード命令と、演算装置１０２の演算結果を一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０に書き込むストア命令と、データを一次キャッシュ１０３４または二次キャッシュ１０３８へ格納する命令であるプリフェッチ命令と、を少なくとも識別する識別部である。例えば、命令識別部１０４１ｂは、一次キャッシュ１０３４のパイプラインを流れている命令を識別するためのＯＰコード（図２参照）を参照することによってプリフェッチ命令であることが確認できる。また、命令識別部１０４１ｂは、一次キャッシュ１０３４のパイプラインを流れている処理を識別するためのパイプライン識別子を参照することによってプリフェッチポート１０４０を介して処理されるプリフェッチ処理であることが確認できる。
【００５７】
ＭＩＢ制御部１０４１ｃは、有効ＭＩＢ検出部１０４１ａによって検出されたＭＩＢの数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュＭＩＢ１０３６に保持するよう制御する制御部である。例えば、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６のうち３つのＭＩＢがすでに使用されている場合は、プリフェッチ命令のための新たなＭＩＢの確保を禁止する。
【００５８】
ＭＩＢ制御部１０４１ｃは、命令の実行順序に基づいてロード命令またはストア命令による参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御する。ここで、図４を参照して、図１に示すＭＩＢ制御部１０４１ｃによるプリフェッチ命令およびストア命令に対するＭＩＢ制御について説明する。図４は、図１に示すＭＩＢ制御部１０４１ｃによるプリフェッチ命令およびストア命令に対するＭＩＢ制御を示す図である。
【００５９】
同図に示すように、一次キャッシュ１０３４のパイプラインに投入された要求がプリフェッチ命令、プリフェッチポート１０４０を介した二次キャッシュ１０３４へのプリフェッチ処理、または突き放されたストア命令であり、ＭＩＢが３つ使用中であることが有効ＭＩＢ検出部１０４１ａによって検出された場合は、ＭＩＢ制御部１０４１ｃは、これらの処理がキャッシュミスを起こしていても新たなＭＩＢの確保を禁止する。そして、ＭＩＢ制御部１０４１ｃは、４つのＭＩＢのうち４つが使用中であることを示すＭＩＢ−ＢＵＳＹ信号をＯＮにし、一次キャッシュＭＩＢ１０３６の新たな確保を禁止すると共に、プリフェッチポート１０４０を介して二次キャッシュ１０３８へムーブイン要求を転送する。なお、突き放されたストア命令とは、ストア命令がキャッシュミスを起こした場合、ストア命令を完了待ちの状態にしておいて、一次キャッシュＭＩＢ１０３６に空きがあればムーブイン要求を出しておき、ストア許可が出てから一次キャッシュメモリ１０３４、二次キャッシュメモリ１０３６または主記憶装置３０への書き込みを実行する命令である。
【００６０】
このように、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６がプリフェッチのためのムーブイン要求によって占有されることを回避しつつ、プリフェッチポート１０４０を介してデータのプリフェッチを二次キャッシュ１０３８まで実行することによってキャッシュミスレイテンシを短縮することができる。なお、ストア命令およびフェッチ命令に対するＭＩＢ制御、およびロード命令／ストア命令の実行停滞に対するＭＩＢ制御については別途詳細に説明する。
【００６１】
図１の説明に戻ると、命令実行監視部１０４１ｄは、ストアポート１０３２およびフェッチポート１０３３に記憶されているストア命令、フェッチ処理要求のＴＯＱ（Ｔｏｐ  Ｏｆ  Ｑｕｅｕｅ、すなわち一番初めに処理しなければならない要求）の更新を監視する監視部である。ストアポート１０３２のＴＯＱおよびフェッチポート１０３３のＴＯＱは、ストアポート１０３２またはフェッチポート１０３３が開放された場合、開放信号をＯＮにして、次に開放対象となるストアポート１０３２およびフェッチポート１０３３を示すように更新される。
【００６２】
（３）ストア命令およびフェッチ処理要求に対するＭＩＢ制御
次に、ストア命令に対するＭＩＢ制御について説明する。一次キャッシュ制御部１０４１は、ストア命令に例外、すなわちアドレス変換バッファのページ属性にアクセス不可があったか否かを確認し、確認結果を命令処理装置１０１に通知する。そして、命令処理装置１０１は、ストア命令に例外が発生せず、ストアデータを記憶制御装置１０３へ出力済みであり、ストア命令が実行中の先頭にきた場合は、記憶制御装置１０３に対しストア命令についてストア許可を出力する。
【００６３】
この時点では、ストア対象領域が一次キャッシュ１０３５にすでに搭載されている場合もあるし、未搭載の場合もある。一次キャッシュ制御部１０４１は、一次キャッシュ１０３４にストア対象領域が存在していない場合は、ＳＴ１−ＲＥＱという要求を一次キャッシュ１０３４のパイプラインに投入する。さらに、一次キャッシュ制御部１０４１は、キャッシュタグを検索してキャッシュミスを起こしている場合は、ＭＩＢを確保し、二次キャッシュから一次キャッシュ１０３４へキャッシュラインを取り込むことを要求する。
【００６４】
そして、一次キャッシュ制御部１０４１は、一次キャッシュ１０３４へ新たなキャッシュが登録されたことを契機として、再度ＳＴ１−ＲＥＱを一次キャッシュ１０３４のパイプラインへ投入し、キャッシュタグの検索とキャッシュデータのエラーの有無を確認し、一次キャッシュ１０３４への書き込みが可能かどうか判断する。さらに、一次キャッシュ制御部１０４１は、一次キャッシュ１０３４への書き込みが可能であれば、ＳＴ２−ＲＥＱという要求を一次キャッシュ１０３４のパイプラインに投入し、ストアデータを一次キャッシュ１０３４に反映し、ＳＴ２−ＲＥＱが割り当てられていたストアポート１０３２を開放する。
【００６５】
このように、ＳＴ１−ＲＥＱは、アウトオブオーダ処理が可能であるが、ストアポート１０３２の複数のＳＴ１−ＲＥＱによりスラッシングが発生していると、ストアポート１０３２のＴＯＱによるＭＩＢの確保が阻害される。そこで、一次キャッシュ制御部１０４１は、パイプラインに流れるパイプライン識別子によりＳＴ１−ＲＥＱが実行されていることを確認すると共に、ＭＩＢの状態を確認する。
【００６６】
そして、一次キャッシュ制御部１０４１は、パイプラインを流れている要求がＳＴ１−ＲＥＱであって、一次キャッシュＭＩＢ１０３６が３つ占有されていて、そのとき実行されているストア命令がストアポート１０３２のＴＯＱでなければ、キャッシュミスを起こしていてもＭＩＢ−ＢＩＳＹ信号をＯＮにし、ＴＯＱを優先して実行する。これにより、ストア許可を受け取ったストア命令の間でスラッシングが発生しているときであっても、スラッシングを回避してＴＯＱからＭＩＢを確保して、ストア命令を完了させることが可能となる。
【００６７】
次に、フェッチ命令におけるＭＩＢ制御について説明する。一次キャッシュ制御部１０４１は、パイプラインを流れている要求がパイプライン識別子によりフェッチポート１０３３から投入された要求であることが確認され、一次キャッシュＭＩＢ１０３６が３つ占有されていて、そのとき実行されているフェッチ命令がフェッチポート１０３３のＴＯＱでなければ、キャッシュミスを起こしていてもＭＩＢ−ＢＩＳＹ信号をＯＮにし、ＴＯＱを優先して実行する。これにより、一次キャッシュ制御部１０４１は、一次キャッシュＭＩＢ１０３６の新たな確保を禁止すると共に二次キャッシュ１０３８へのプリフェッチを起動する。その結果、一次キャッシュＭＩＢ１０３６を確保できなかった要求も二次キャッシュＭＩＢ１０３９を確保するように二次キャッシュ１０３８へ要求が送られる。
【００６８】
このようにして、一次キャッシュ制御部１０４１は、フェッチポート１０３３のＴＯＱ以外の要求による二次キャッシュ１０３８への記憶領域参照が一次キャッシュＭＩＢ１０３６を占有することを回避しつつ、データのプリフェッチは二次キャッシュ１０３８まで実行しておくことで、プリフェッチ効果が現れるように制御する。同時に、これによりフェッチポート１０３３の間でのスラッシングを防止することが可能となる。
【００６９】
（４）ロード命令／ストア命令の実行停滞に対するＭＩＢ制御
次に、ロード命令／ストア命令の実行停滞、すなわちハング防止のためのＭＩＢ制御について説明する。命令実行監視部１０４１ｄは、開放信号がＯＦＦであって、ストアポート１０３２およびフェッチポート１０３３に有効な命令が滞留している場合、ストアポート１０３２およびフェッチポート１０３３のそれぞれが有するハングカウンタを加算する。すなわち、命令実行監視部１０４１ｄは、実行完了による開放を待つポートが存在し、ポートの開放が行われない場合は、ハングカウンタを加算する。このハングカウンタが所定の閾値、例えば２０００サイクルを超えた場合、ストアポート１０３２またはフェッチポート１０３３でハングが発生していると看做して、ＭＩＢ制御部１０４１ｃは、ストアポート１０３２またはフェッチポート１０３３のＴＯＱ以外の命令が一次キャッシュＭＩＢ１０３６を確保することを禁止する。
【００７０】
特に、命令実行監視部１０４１ｄは、ストアポート１０３２については、ハング検出条件として、書き込み許可を受けたストア命令を保持しつつ、一次キャッシュ１０３４または主記憶装置３０への書き込みができない状態を監視する。これによりストアポート１０３２のハングカウンタが所定の閾値、例えば２０００サイクルを超えて、ハングしたと看做される状態が発生したら、フェッチポート１０３３に格納されている命令はすべてストアポート１０３２のＴＯＱよりも後に処理する命令であることが保障される。したがって、ストアポート１０３２のハングカウンタが所定の閾値を超えたら、ＭＩＢ制御部１０４１ｃは、フェッチポート１０３３からパイプラインに投入される全要求とＴＯＱ以外のストアポートから投入された全要求について一次キャッシュＭＩＢ１０３６の確保を禁止する。
【００７１】
このように、命令実行監視部１０４１ｄがハングを検出した場合、ＭＩＢ制御部１０４１ｃは、アウトオブオーダ処理から逐次処理に移行することにより、少なくとも一つの命令の処理を完了することができる。一つの命令の処理が完了すると、ストアポート１０３２のＴＯＱが更新されるため、ストアポート１０３２またはフェッチポート１０３３でのハングは解消し、速やかにストアポート１０３２のストア命令がＭＩＢ確保可能になって、最大限の性能を発揮する動作状態に復帰することができる。
【００７２】
（５）プリフェッチ命令に対するＭＩＢ制御手順
次に、図５を参照して、図１に示すＭＩＢ制御部１０４１ｃによるプリフェッチ命令に対するＭＩＢ制御手順について説明する。図５は、図１に示すＭＩＢ制御部１０４１ｃによるプリフェッチ命令に対するＭＩＢ制御手順を示すフローチャートである。同図に示すように、一次キャッシュ１０３４のパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つがキャッシュミスをすると（ステップＳ５０１）、ＭＩＢ制御部１０４１ｃは、有効ＭＩＢ検出部１０４１ａに一次キャッシュＭＩＢ１０３６が満杯か否かを確認する（ステップＳ５０２）。なお、ストア命令には、突き放されたストア命令が含まれる。
【００７３】
その結果、一次キャッシュＭＩＢ１０３６が満杯である場合（ステップＳ５０２肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ５０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ５０４）。
【００７４】
一方、一次キャッシュＭＩＢ１０３６が満杯でない場合（ステップＳ５０２否定）、ＭＩＢ制御部１０４１ｃは、さらに有効ＭＩＢ検出部１０４１ａによって一次キャッシュＭＩＢ１０３６の残りのエントリが１つか否かを確認する（ステップＳ５０５）。
【００７５】
その結果、一次キャッシュＭＩＢ１０３６の残りのエントリが２つ以上である場合は（ステップＳ５０５否定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ５０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ５０８）。
【００７６】
一方、一次キャッシュＭＩＢ１０３６の残りのエントリが１つである場合は（ステップＳ５０５肯定）、ＭＩＢ制御部１０４１ｃは、さらに、一次キャッシュミスをした命令がプリフェッチ命令か否かを確認する（ステップＳ５０６）。
【００７７】
その結果、一次キャッシュミスをした命令がプリフェッチ命令である場合は（ステップＳ５０６肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ５０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ５０４）。
【００７８】
一方、一次キャッシュミスをした命令がプリフェッチ命令でない場合は（ステップＳ５０６否定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ５０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ５０８）。
【００７９】
このように、本手順によれば、ＭＩＢ制御部１０４１ｃは、一次キャッシュ１０３４のパイプラインへ投入された命令がプリフェッチ命令であり、ＭＩＢの残りが１エントリである場合は、プリフェッチ命令のための一次キャッシュＭＩＢ１０３６の確保を禁止し、プリフェッチポート１０４０を確保して、二次キャッシュ１０３８へのムーブインを要求することとしたので、記憶制御装置１０３は、プリフェッチ命令によって一次キャッシュＭＩＢ１０３６が占有されることを回避しつつ、プリフェッチの効果は現れるようにすることができる。なお、一次キャッシュ１０３４のパイプラインへ投入された命令とは、パイプライン識別子を用いたプリフェッチポートを介したプリフェッチ処理要求を含む。
【００８０】
（６）アウトオブオーダ処理に対するＭＩＢ制御手順
次に、図６を参照して、図１に示すＭＩＢ制御部１０４１ｃによるアウトオブオーダ処理に対するＭＩＢ制御手順について説明する。図６は、図１に示すＭＩＢ制御部１０４１ｃによるアウトオブオーダ処理に対するＭＩＢ制御手順を示すフローチャートである。同図に示すように、一次キャッシュのパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つが一次キャッシュミスをすると（ステップＳ６０１）、ＭＩＢ制御部１０４１ｃは、有効ＭＩＢ検出部１０４１ａに一次キャッシュＭＩＢ１０３６が満杯か否かを確認する（ステップＳ６０２）。なお、ストア命令には、突き放されたストア命令が含まれる。
【００８１】
その結果、一次キャッシュＭＩＢ１０３６が満杯である場合（ステップＳ６０２肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ６０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ６０４）。
【００８２】
一方、一次キャッシュＭＩＢ１０３６が満杯でない場合（ステップＳ６０２否定）、ＭＩＢ制御部１０４１ｃは、さらに有効ＭＩＢ検出部１０４１ａによって一次キャッシュＭＩＢ１０３６の残りのエントリが１つか否かを確認する（ステップＳ６０５）。
【００８３】
その結果、一次キャッシュＭＩＢ１０３６の残りのエントリが２つ以上である場合は（ステップＳ６０５否定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ６０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ６０８）。
【００８４】
一方、一次キャッシュＭＩＢ１０３６の残りのエントリが１つである場合は（ステップＳ６０５肯定）、ＭＩＢ制御部１０４１ｃは、さらに一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱの命令か否かを確認する（ステップＳ６０６）。
【００８５】
その結果、一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱの命令である場合は（ステップＳ６０６肯定）、ＭＩＢ制御部１０４１ｃは、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ６０７）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ６０８）。
【００８６】
一方、一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱの命令でない場合は（ステップＳ６０６否定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ６０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ６０４）。
【００８７】
このように、本手順によれば、ＭＩＢ制御部１０４１ｃは、ＭＩＢの残りが１エントリである場合は、一次キャッシュミスをした命令がフェッチポートのＴＯＱの命令に限り、一次キャッシュＭＩＢ１０３６を確保して、一次キャッシュ１０３４へのムーブインを要求することができ、それ以外の命令の場合は、プリフェッチポート１０４０を確保して、二次キャッシュへのムーブインを要求することとしたので、記憶制御装置１０３は、アウトオブオーダ処理によってＴＯＰ以外の命令によって一次キャッシュＭＩＢ１０３６が占有されることを回避しつつ、プリフェッチの効果は現れるようにすることができる。
【００８８】
（７）ロード命令／ストア命令の実行停滞に対するＭＩＢ制御手順
次に、図７を参照して、図１に示すＭＩＢ制御部１０４１ｃによるロード命令／ストア命令の実行停滞に対するＭＩＢ制御手順について説明する。図７は、図１に示すＭＩＢ制御部１０４１ｃによるロード命令／ストア命令の実行停滞に対するＭＩＢ制御手順を示すフローチャートである。同図に示すように、一次キャッシュのパイプラインに投入されたロード命令、ストア命令、プリフェッチ命令のいずれか一つが一次キャッシュミスをすると（ステップＳ７０１）、ＭＩＢ制御部１０４１ｃは、有効ＭＩＢ検出部１０４１ａに一次キャッシュＭＩＢ１０３６が満杯か否かを確認する（ステップＳ７０２）。なお、ストア命令には、突き放されたストア命令が含まれる。
【００８９】
その結果、一次キャッシュＭＩＢ１０３６が満杯である場合（ステップＳ７０２肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ７０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ７０４）。
【００９０】
一方、一次キャッシュＭＩＢ１０３６が満杯でない場合（ステップＳ７０２否定）、ＭＩＢ制御部１０４１ｃは、さらに有効ＭＩＢ検出部１０４１ａによって一次キャッシュＭＩＢ１０３６の残りのエントリが１つか否かを確認する（ステップＳ７０５）。
【００９１】
その結果、一次キャッシュＭＩＢ１０３６の残りのエントリが２つ以上である場合は（ステップＳ７０５否定）、ＭＩＢ制御部１０４１ｃは、さらに命令実行監視部１０４１ｄに一次キャッシュミスした命令で、ストアポート１０３２でハングしているか否かを確認する（ステップＳ７０８）。
その結果、ストアポート１０３２でハングしており、ストアポートのＴＯＱ以外の命令である場合は（ステップＳ７０８肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ７０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ７０４）。
一方、ストアポート１０３２でハングしていないか、またはストアポートのＴＯＱの命令である場合は（ステップＳ７０８否定）、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ７０９）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ７１０）。
【００９２】
一方、一次キャッシュＭＩＢ１０３６の残りのエントリが１つである場合は（ステップＳ７０５肯定）、ＭＩＢ制御部１０４１ｃは、さらに一次キャッシュミスした命令がプリフェッチ命令であるか否かを確認する（ステップＳ７０６）。
その結果、一次キャッシュミスした命令がプリフェッチ命令である場合は（ステップＳ７０６肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ７０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ７０４）。
【００９３】
一方、一次キャッシュミスした命令がプリフェッチ命令でない場合は（ステップＳ７０６否定）、ＭＩＢ制御部１０４１ｃは、さらに一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱの命令で、かつフェッチポート１０３３がハングしているか否かを確認する（ステップＳ７０７）。
【００９４】
その結果、一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱ命令か、またはフェッチポート１０３３がハングしていない場合は（ステップＳ７０７否定）、ＭＩＢ制御部１０４１ｃは、さらに命令実行監視部１０４１ｄにストアポート１０３２でハングしているか否かを確認する（ステップＳ７０８）。
その結果、ストアポート１０３２でハングしている場合は（ステップＳ７０８肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ７０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ７０４）。
一方、ストアポート１０３２でハングしていないか、またはストアポートのＴＯＱの命令である場合は（ステップＳ７０８否定）、一次キャッシュＭＩＢ１０３６を確保して（ステップＳ７０９）、一次キャッシュ１０３４へのムーブインを要求する（ステップＳ７１０）。
【００９５】
一方、一次キャッシュミスした命令がフェッチポート１０３３のＴＯＱ以外の命令で、かつフェッチポート１０３３がハングしている場合は（ステップＳ７０７肯定）、ＭＩＢ制御部１０４１ｃは、プリフェッチポート１０４０を確保して（ステップＳ７０３）、二次キャッシュ１０３８へのムーブインを要求する（ステップＳ７０４）。
【００９６】
このように、本手順によれば、ＭＩＢ制御部１０４１ｃは、ＭＩＢの残りが１エントリであり、ストアポート１０３２でハングしていることが検出されていない場合で、ＴＯＱ以外の命令は、一次キャッシュミスをした命令がフェッチポート１０３３のＴＯＱの命令か、フェッチポート１０３３がハングしてないときに限り、一次キャッシュＭＩＢ１０３６を確保して、一次キャッシュ１０３４へのムーブインを要求することができ、それ以外のときは、プリフェッチポート１０４０を確保して、二次キャッシュ１０３８へのムーブインを要求することとしたので、記憶制御装置１０３は、フェッチポート１０３３がハングしていることが検出された場合、アウトオブオーダ処理から逐次処理に移行することにより少なくとも一つのフェッチ処理要求を処理することができる。
【００９７】
また、ストアポート１０３２でハングしていることが検出された場合は、ストアポートのＴＯＱ以外の一次キャッシュミスをした命令は、プリフェッチポート１０４０を確保して、二次キャッシュ１０３８へのムーブインを要求することとしたので、記憶制御装置１０３は、ストアポート１０３２がハングしていることが検出された場合、アウトオブオーダ処理から逐次処理に移行することにより少なくとも一つのストア命令を処理することができる。
【００９８】
上述してきたように、本実施例１では、中央処理装置１０は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０から演算装置１０２にデータを格納する命令であるロード命令と、演算装置１０２の演算結果を一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０に書き込むストア命令と、主記憶装置３０のデータを一次キャッシュ１０３４または二次キャッシュ１０３８へ格納する命令であるプリフェッチ命令と、を少なくとも実行し、有効ＭＩＢ検出部１０４１ａは、主記憶装置３０のデータに対する一次キャッシュ１０３４の参照要求が保持された一次キャッシュＭＩＢ１０３６の数を検出し、ＭＩＢ制御部１０４１ｃは、検出された一次キャッシュＭＩＢ１０３４の数が所定の数に達した場合に、ロード命令またはストア命令による参照要求をプリフェッチ命令による参照要求に優先して一次キャッシュＭＩＢ１０３６に保持するよう制御することとしたので、記憶制御装置１０３は、将来必要になると思われるデータを用意するためのプリフェッチ要求により、今すぐに実行の完了を必要とするロード命令またはストア命令がさまたげられることが回避でき、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【００９９】
また、ＭＩＢ制御部１０４１ｃは、命令の実行順序に基づいてロード命令またはストア命令による参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御することとしたので、記憶制御装置１０３は、命令実行上一番先に実行されなければならないロード要求またはストア要求が一次キャッシュＭＩＢ１０３６を確保できずに実行が妨げられることが回避でき、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【０１００】
また、フェッチポート１０３３は、一次キャッシュ１０３４、二次キャッシュ１０３８または主記憶装置３０からデータを取り出す要求であるフェッチ処理要求を保持し、命令実行監視部１０４１ｄは、保持されたフェッチ処理要求の実行を監視し、ＭＩＢ制御部１０４１ｃは、フェッチ処理が所定の時間停滞していることが検出された場合は、保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御し、フェッチ処理が所定の時間停滞していることが検出されなかった場合は、フェッチ処理要求による参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御することとしたので、記憶制御装置１０３は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【０１０１】
また、ストアポート１０３２は、ストア命令を保持し、命令実行監視部１０４１ｄは、保持されたストア命令の実行をさらに監視し、ＭＩＢ制御部１０４１ｃは、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、ストアポート１０３２に保持されているストア命令のなかで最も古く格納されたストア命令による参照要求を一次キャッシュＭＩＢ１０３６に保持するよう制御することとしたので、記憶制御装置１０３は、キャッシュラインのスラッシングが発生した場合、命令実行上一番先に実行されなければならないロード要求またはストア要求が長時間実行を待たされることが回避でき、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【０１０２】
また、ＭＩＢ制御部１０４１ｃは、参照要求を一次キャッシュバッファに保持するよう制御し、一次キャッシュバッファに保持するよう制御した参照要求以外の参照要求を参照要求転送ポートによって一次キャッシュから二次キャッシュへ転送することとしたので、記憶制御装置１０３は、一次キャッシュＭＩＢ１０３４の空きがなく、後続の命令がキャッシュミスを起こした場合、主記憶装置３０から二次キャッシュ１０３８までのムーブインを要求することができ、もって主記憶装置３０のデータに対する参照を効率的に制御することができる。
【実施例２】
【０１０３】
ところで、上記実施例１で説明した記憶制御装置およびムーブインバッファ制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、本実施例２では、上記実施例１で説明した記憶制御装置と同様の機能を有するムーブインバッファ制御プログラムを実行するコンピュータシステムについて説明する。
【０１０４】
図８は、実施例２に係るコンピュータシステムの構成を示すシステム構成図であり、図９は、図８に示すコンピュータシステムにおける本体部の構成を示すブロック図である。図８に示すように、実施例２に係るコンピュータシステム２００は、本体部２０１と、本体部２０１からの指示によって表示画面２０２ａに画像などの情報を表示するためのディスプレイ２０２と、このコンピュータシステム２００に種々の情報を入力するためのキーボード２０３と、ディスプレイ２０２の表示画面２０２ａ上の任意の位置を指定するためのマウス２０４とを備える。
【０１０５】
また、このコンピュータシステム２００における本体部２０１は、図９に示すように、ＣＰＵ２２１と、ＲＡＭ２２２と、ＲＯＭ２２３と、ハードディスクドライブ（ＨＤＤ）２２４と、ＣＤ−ＲＯＭ２０９を受け入れるＣＤ−ＲＯＭドライブ２２５と、フレキシブルディスク（ＦＤ）２０８を受け入れるＦＤドライブ２２６と、ディスプレイ２０２、キーボード２０３並びにマウス２０４を接続するＩ／Ｏインターフェース２２７と、ローカルエリアネットワークまたは広域エリアネットワーク（ＬＡＮ／ＷＡＮ）２０６に接続するＬＡＮインターフェース２２８と、を備える。
【０１０６】
さらに、このコンピュータシステム２００には、インターネットなどの公衆回線２０７に接続するためのモデム２０５が接続されるとともに、ＬＡＮインターフェース２２８およびＬＡＮ／ＷＡＮ２０６を介して、他のコンピュータシステム（ＰＣ）２１１、サーバ２１２並びにプリンタ２１３などが接続される。
【０１０７】
そして、このコンピュータシステム２００は、所定の記録媒体に記録されたムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置を実現する。ここで、所定の記録媒体とは、フレキシブルディスク（ＦＤ）２０８、ＣＤ−ＲＯＭ２０９、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」の他に、コンピュータシステム２００の内外に備えられるハードディスクドライブ（ＨＤＤ）２２４や、ＲＡＭ２２２、ＲＯＭ２２３などの「固定用の物理媒体」、さらに、モデム２０５を介して接続される公衆回線２０７や、他のコンピュータシステム２１１並びにサーバ２１２が接続されるＬＡＮ／ＷＡＮ２０６などのように、プログラムの送信に際して短期にプログラムを保持する「通信媒体」など、コンピュータシステム２００によって読み取り可能なムーブインバッファ制御プログラムを記録する、あらゆる記録媒体を含むものである。
【０１０８】
すなわち、ムーブインバッファ制御プログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものであり、コンピュータシステム２００は、このような記録媒体からムーブインバッファ制御プログラムを読み出して実行することで記憶制御装置およびムーブインバッファ制御方法を実現する。なお、ムーブインバッファ制御プログラムは、コンピュータシステム２００によって実行されることに限定されるものではなく、他のコンピュータシステム２１１またはサーバ２１２がムーブインバッファ制御プログラムを実行する場合や、これらが協働してムーブインバッファ制御プログラムを実行するような場合にも、本発明を同様に適用することができる。
【０１０９】
（付記１）主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手段と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手段と、
を備えたことを特徴とする記憶制御装置。
【０１１０】
（付記２）前記バッファ制御手段は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１に記載の記憶制御装置。
【０１１１】
（付記３）前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求を保持するバッファであるフェッチポートと、
前記フェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手段と、をさらに備え、
前記バッファ制御手段は、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手段によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１または２に記載の記憶制御装置。
【０１１２】
（付記４）前記ストア命令を保持するバッファであるストアポートをさらに備え、
前記命令実行監視手段は、前記ストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御手段は、前記命令実行監視手段によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記３に記載の記憶制御装置。
【０１１３】
（付記５）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求を保持するバッファである参照要求転送ポートと、をさらに備え、
前記バッファ制御手段は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記１〜４のいずれか一つに記載の記憶制御装置。
【０１１４】
（付記６）主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御方法であって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出工程と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御工程と、
を含んだことを特徴とするムーブインバッファ制御方法。
【０１１５】
（付記７）前記バッファ制御工程は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記６に記載のムーブインバッファ制御方法。
【０１１６】
（付記８）前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持工程と、
前記フェッチポート保持工程でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視工程と、をさらに含み、
前記バッファ制御工程は、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視工程によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記６または７に記載のムーブインバッファ制御方法。
【０１１７】
（付記９）前記ストア命令をバッファであるストアポートに保持するストアポート保持工程をさらに含み、
前記命令実行監視工程は、前記ストアポート保持工程でストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御工程は、前記命令実行監視工程によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記８に記載のムーブインバッファ制御方法。
【０１１８】
（付記１０）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求をバッファである参照要求転送ポートに保持する参照要求転送ポート保持工程と、をさらに含み、
前記バッファ制御工程は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記６〜９に記載のムーブインバッファ制御方法。
【０１１９】
（付記１１）主記憶装置と中央処理装置に含まれる命令処理装置および演算装置との間に介在し、前記命令処理装置および演算装置から前記主記憶装置のデータに対する参照を制御し、また前記主記憶装置のデータおよび該データに対応するアドレス情報を記憶するキャッシュと、前記主記憶装置のデータに対する前記キャッシュの参照要求であるアドレス情報を保持するキャッシュバッファと、を有する記憶制御装置に用いられるムーブインバッファ制御プログラムであって、
前記中央処理装置は、命令の実行順序を変換して処理するアウトオブオーダ処理に基づいて、前記キャッシュまたは主記憶装置から前記演算装置に前記データを格納する命令であるロード命令と、前記演算装置の演算結果を前記キャッシュまたは前記主記憶装置に書き込むストア命令と、前記主記憶装置のデータを前記キャッシュへ格納する命令であるプリフェッチ命令と、を少なくとも実行し、
前記主記憶装置のデータに対する前記キャッシュの参照要求が保持されたキャッシュバッファの数を検出する有効バッファ検出手順と、
前記検出されたキャッシュバッファの数が所定の数に達した場合に、前記ロード命令または前記ストア命令による前記参照要求を前記プリフェッチ命令による前記参照要求に優先して前記キャッシュバッファに保持するよう制御するバッファ制御手順と、
をコンピュータに実行させることを特徴とするムーブインバッファ制御プログラム。
【０１２０】
（付記１２）前記バッファ制御手順は、前記命令の実行順序に基づいて前記ロード命令または前記ストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１１に記載のムーブインバッファ制御プログラム。
【０１２１】
（付記１３）前記キャッシュまたは主記憶装置からデータを取り出す要求であるフェッチ処理要求をバッファであるフェッチポートに保持するフェッチポート保持手順と、
前記フェッチポート保持手順でフェッチポートに保持されたフェッチ処理要求の実行を監視する命令実行監視手順と、をさらにコンピュータに実行させ、
前記バッファ制御手順は、前記命令実行監視手順によってフェッチ処理が所定の時間停滞していることが検出された場合は、前記フェッチポートに保持されているフェッチ処理要求のなかで最も古く格納されたフェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御し、前記命令実行監視手順によってフェッチ処理が所定の時間停滞していることが検出されなかった場合は、前記フェッチ処理要求による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１１または１２に記載のムーブインバッファ制御プログラム。
【０１２２】
（付記１４）前記ストア命令をバッファであるストアポートに保持するストアポート保持手順をさらにコンピュータに実行させ、
前記命令実行監視手順は、前記ストアポート保持手順でストアポートに保持されたストア命令の実行をさらに監視し、
前記バッファ制御手順は、前記命令実行監視手順によって、書き込みを許可されたストア命令が所定の時間停滞していることが検出された場合は、前記ストアポートに保持されているストア命令のなかで最も古く格納されたストア命令による前記参照要求を前記キャッシュバッファに保持するよう制御することを特徴とする付記１３に記載のムーブインバッファ制御プログラム。
【０１２３】
（付記１５）前記キャッシュは、前記主記憶装置のデータおよび該データに対応したアドレス情報を記憶する二次キャッシュと、前記二次キャッシュのデータおよび該データに対応したアドレス情報を記憶する一次キャッシュと、を有し、
前記キャッシュバッファは、前記主記憶装置のデータに対する前記二次キャッシュの参照要求を保持する二次キャッシュバッファと、前記二次キャッシュのデータに対する前記一次キャッシュの参照要求を保持する一次キャッシュバッファと、を有し、
前記一次キャッシュから前記二次キャッシュへ転送する前記参照要求をバッファである参照要求転送ポートに保持する参照要求転送ポート保持手順と、をさらにコンピュータに実行させ、
前記バッファ制御手順は、前記キャッシュバッファに保持するよう制御した参照要求を前記一次キャッシュバッファに保持するよう制御し、前記キャッシュバッファに保持するよう制御した参照要求以外の前記参照要求を前記参照要求転送ポートによって前記一次キャッシュから前記二次キャッシュへ転送することを特徴とする付記１１〜１４のいずれか一つに記載のムーブインバッファ制御プログラム。
【産業上の利用可能性】
【０１２４】
以上のように、本発明に係る記憶制御装置は、特に、コンピュータに適している。
【図面の簡単な説明】
【０１２５】
【図１】実施例１に係るコンピュータシステムの構成を示す機能ブロック図である。
【図２】図１に示す命令ポート、ストアポート、フェッチポート、一次キャッシュＭＩＢ／二次キャッシュＭＩＢ、プリフェッチポートのデータ構造の一例を示す図である。
【図３】図１に示す有効ＭＩＢ検出部の構成を示す機能ブロック図である。
【図４】図１に示すＭＩＢ制御部によるプリフェッチ命令およびストア命令に対するＭＩＢ制御を示す図である。
【図５】図１に示すＭＩＢ制御部によるプリフェッチ命令に対するＭＩＢ制御手順を示すフローチャートである。
【図６】図１に示すＭＩＢ制御部によるアウトオブオーダ処理に対するＭＩＢ制御手順を示すフローチャートである。
【図７】図１に示すＭＩＢ制御部によるロード命令／ストア命令の実行停滞に対するＭＩＢ制御手順を示すフローチャートである。
【図８】実施例２に係るコンピュータシステムの構成を示すシステム構成図である。
【図９】図８に示すコンピュータシステムにおける本体部の構成を示すブロック図である。
【符号の説明】
【０１２６】
１    コンピュータシステム
１０、５０    中央処理装置
２０    システムコントローラ
３０    主記憶装置
４０    入出力装置
１０１    命令処置装置
１０２    演算装置
１０３    記憶制御装置
１０３１    命令ポート
１０３２    ストアポート
１０３３    フェッチポート
１０３４    一次キャッシュ
１０３４ａ  命令キャッシュ
１０３４ｂ  オペランドキャッシュ
１０３６    一次キャッシュＭＩＢ
１０３６ａ  命令キャッシュＭＩＢ
１０３６ｂ  オペランドキャッシュＭＩＢ
１０３８    二次キャッシュ
１０３９    二次キャッシュＭＩＢ
１０４０    プリフェッチポート
１０４１    一次キャッシュ制御部
１０４１ａ  有効ＭＩＢ検出部
１０４１ｂ  命令識別部
１０４１ｃ  ＭＩＢ制御部
１０４１ｄ  命令実行監視部
１０４２    二次キャッシュ制御部
２００    コンピュータシステム
２０１    本体部
２０２    ディスプレイ
２０２ａ  表示画面
２０３    キーボード
２０４    マウス
２０５    モデム
２０６    ローカルエリアネットワークまたは広域エリアネットワーク（ＬＡＮ／ＷＡＮ）
２０７    公衆回線
２０８    フレキシブルディスク（ＦＤ）
２０９    ＣＤ−ＲＯＭ
２１１    他のコンピュータシステム（ＰＣ）
２１２    サーバ
２１３    プリンタ
２２１    ＣＰＵ
２２２    ＲＡＭ
２２３    ＲＯＭ
２２４    ハードディスクドライブ（ＨＤＤ）
２２５    ＣＤ−ＲＯＭドライブ
２２６    ＦＤドライブ
２２７    Ｉ／Ｏインターフェース
２２８    ＬＡＮインターフェース
【図１】
2006048181.tif 000003
【図２】
2006048181.tif 000004
【図３】
2006048181.tif 000005
【図４】
2006048181.tif 000006
【図５】
2006048181.tif 000007
【図６】
2006048181.tif 000008
【図７】
2006048181.tif 000009
【図８】
2006048181.tif 000010
【図９】
2006048181.tif 000011