(57)【特許請求の範囲】
【請求項１】
複数のデータを記憶可能なストアバッファ回路と、
ストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択回路と、
前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージ回路と、
前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御回路と、
前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路と、
を具備し、
前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力する
ことを特徴とするストアマージ装置。
【請求項２】
前記追出制御回路は、中央処理装置からリセット信号が出力され、最初の命令が出力されてから所定時間経過した後に、前記追出指示信号を出力することを特徴とする請求項１に記載のストアマージ装置。
【請求項３】
複数のデータを記憶可能な主記憶装置と、
前記主記憶装置へのデータの書込命令であるストア命令を出力する中央処理装置と、
複数のデータを記憶可能なストアバッファ回路と、
前記中央処理装置から前記ストア命令が出力されると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択回路と、
前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージ回路と、
前記ストアバッファ回路が当該ストアバッファ回路の記憶するデータの前記主記憶装置への書込要求を出力するよう指示する追出指示信号を出力する追出制御回路と、
前記ストアバッファ回路が前記書込要求にて出力するデータを一時的に記憶して出力するライトバッファ回路と、
を具備し、
前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力する
ことを特徴とする情報処理装置。
【請求項４】
複数のデータを記憶可能なストアバッファ回路およびライトバッファ回路を具備するストアマージ装置のストアマージ方法であって、
マージ対象データ選択回路が、ストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択ステップと、
マージ回路が、前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージステップと、
追出制御回路が、前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御ステップと、
前記ライトバッファ回路が、前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路処理ステップと、
を具備し、
前記追出制御ステップにて、前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力する
ことを特徴とするストアマージ方法。
【請求項５】
複数のデータを記憶可能なストアバッファ回路およびライトバッファ回路を具備するストアマージ装置としてのコンピュータに
ストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択ステップと、
前記マージ対象データ選択ステップにて選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージステップと、
前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御ステップと、
前記ライトバッファ回路が、前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路処理ステップと、
を実行させ、
前記追出制御ステップにて、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると、前記追出指示信号を出力させる
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストアマージ装置、ストアマージ装置を具備する情報処理装置、ストアマージ方法およびプログラムに関する。
【背景技術】
【０００２】
記憶装置へのアクセス頻度を抑える方法の１つに、ストアマージ方法と呼ばれる方法がある。ストアマージ方法では、ストアマージ装置が、記憶装置の同一のライン（記憶装置またはキャッシュがデータの読み書きを行う際の単位ブロック）への複数のストア命令（書込命令）を１つに纏めてから記憶装置に書き込むことにより、記憶装置へのアクセス頻度を抑える。以下では、この複数のストア命令を１つに纏める処理を「マージ処理」と称する。
【０００３】
例えば、特許文献１に示されるストアマージ方法では、ストアデータ制御装置（ストアマージ装置）が、キュー（Ｑｕｅｕｅ）構造のストアバッファと、同じくキュー構造のライトバッファとを備える。そして、ストアバッファがストア命令を格納し、格納時刻の早いストア命令から順にライトバッファに転送する。
ストア命令の転送を受けたライトバッファは、転送されたストア命令を、ＢＯＱ（ライトバッファのデータ格納領域のうち、最後にデータを格納した領域）、または、ＢＯＱの次のデータ格納領域のいずれかに格納する。具体的には、転送されたストア命令とＢＯＱのストア命令とが、主記憶上の同一のアドレスに対するストア命令である場合は、マージ処理可能であると判定し、ライトバッファは、転送されたストア命令をＢＯＱに格納することによりマージ処理を行う。一方、転送されたストア命令とＢＯＱのストア命令とが、主記憶上の異なるアドレスに対するストア命令である場合は、マージ処理不可であると判定し、ライトバッファは、転送されたストア命令をＢＯＱの次のデータ格納領域に格納し、この新たにストア命令を格納した領域をＢＯＱとする。また、ライトバッファは、格納時刻の早いストア命令から順に、一次キャッシュ（記憶装置）に出力する。このように、ライトバッファは、マージ処理済みのストア命令を一次キャッシュに出力することにより、一次キャッシュへのアクセス頻度を抑える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−４８１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に示されるストアマージ方法では、主記憶上の異なるアドレスに対するストア命令が転送される毎に、ライトバッファがストア命令を格納する領域が変更され、この領域の数だけストア命令が一次キャッシュに出力される。すなわち、特許文献１に示されるストアマージ方法では、主記憶上の異なるアドレスに対するストア命令が転送された場合の記憶装置へのアクセスを抑えることはできない。
【０００６】
本発明は、このような事情を考慮してなされたものであり、その目的は、主記憶上の異なるアドレスに対するストア命令が転送された場合にも記憶装置へのアクセスを抑えることができるストアマージ装置、情報処理装置、ストアマージ方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるストアマージ装置は、複数のデータを記憶可能なストアバッファ回路と、ストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択回路と、前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージ回路と、前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御回路と、前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路と、を具備し、前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力することを特徴とする。
【０００８】
また、本発明の一態様による情報処理装置は、複数のデータを記憶可能な主記憶装置と、前記主記憶装置へのデータの書込命令であるストア命令を出力する中央処理装置と、複数のデータを記憶可能なストアバッファ回路と、前記中央処理装置から前記ストア命令が出力されると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択回路と、前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージ回路と、前記ストアバッファ回路が当該ストアバッファ回路の記憶するデータの前記主記憶装置への書込要求を出力するよう指示する追出指示信号を出力する追出制御回路と、前記ストアバッファ回路が前記書込要求にて出力するデータを一時的に記憶して出力するライトバッファ回路と、を具備し、前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力することを特徴とする。
【０００９】
また、本発明の一態様によるストアマージ方法は、複数のデータを記憶可能なストアバッファ回路およびライトバッファ回路を具備するストアマージ装置のストアマージ方法であって、マージ対象データ選択回路が、ストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択ステップと、マージ回路が、前記マージ対象データ選択回路が選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージステップと、追出制御回路が、前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御ステップと、前記ライトバッファ回路が、前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路処理ステップと、を具備し、前記追出制御ステップにて、前記追出制御回路は、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると前記追出指示信号を出力することを特徴とする。
【００１０】
また、本発明の一態様によるプログラムは、複数のデータを記憶可能なストアバッファ回路およびライトバッファ回路を具備するストアマージ装置としてのコンピュータにストア命令の入力を受けると、前記ストアバッファ回路が記憶する前記複数のデータのいずれかと前記ストア命令のデータとをマージ処理可能か否か判定し、マージ処理可能なデータがあると判定したときは、前記ストアバッファ回路の記憶する複数のデータのうちマージ処理可能と判定した前記データを選択するマージ対象データ選択ステップと、前記マージ対象データ選択ステップにて選択したデータと前記ストア命令のデータとをマージ処理し、マージ処理されたデータを前記ストアバッファ回路に書き戻すマージステップと、前記ストアバッファ回路が前記複数のデータのいずれかを出力するよう指示する追出指示信号を出力する追出制御ステップと、前記ライトバッファ回路が、前記ストアバッファ回路が出力するデータを一時的に記憶して出力するライトバッファ回路処理ステップと、を実行させ、前記追出制御ステップにて、前記ライトバッファ回路がデータを記憶していない状態から所定時間経過した後に、前記ライトバッファ回路の記憶するデータ数が所定数以下となると、前記追出指示信号を出力させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、主記憶上の異なるアドレスに対するストア命令が転送された場合にも記憶装置へのアクセスを抑えることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態における情報処理装置の概略構成を示す構成図である。
【図２】同実施形態において、ストアマージ装置が行うマージ処理の例を示す図である。
【図３】同実施形態におけるロード命令およびストア命令のデータ構成を示す構成図である。
【図４】同実施形態におけるマージ回路の概略構成を示す構成図である。
【図５】同実施形態におけるストアバッファ回路の概略構成を示す構成図である。
【図６】同実施形態におけるライトバッファ回路の構造を示す図である。
【図７】同実施形態におけるタイマ回路への入力とタイマ回路が行う動作との関係を示す表である。
【図８】同実施形態におけるタイマ回路の概略構成を示す構成図である。
【図９】同実施形態における追出制御回路への入力と追出制御回路が行う動作との関係を示す表である。
【図１０】同実施形態における追出制御回路の概略構成を示す構成図である。
【図１１】同実施形態におけるフル検出回路の概略構成を示す構成図である。
【図１２】同実施形態において、中央処理装置からロード命令が出力された際の情報処理装置の動作例を示すシーケンス図である。
【図１３】同実施形態において、中央処理装置からストア命令が出力された際の情報処理装置１の動作例を示すシーケンス図である。
【図１４】同実施形態において、ストアバッファ回路がストア命令を追い出す際の情報処理装置の動作例を示すシーケンス図である。
【図１５】同実施形態における読出回路の処理手順を示すフローチャートである。
【図１６】同実施形態におけるストアバッファ回路が記憶するデータ量（ストア命令数）の変化を示すグラフである。
【図１７】同実施形態におけるタイマ回路の変形例を示す構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本発明の一実施形態における情報処理装置の概略構成を示す構成図である。
同図において、情報処理装置１は、ストアマージ装置１０と、中央処理装置６０と、主記憶装置７０とを具備する。ストアマージ装置１０は、マージ回路１１と、ストアバッファ回路１２と、ライトバッファ回路１３と、タイマ回路１４と、追出制御回路１５と、フル検出回路１６と、データ数検出回路１７とを具備する。また、経路Ｗ１１１、Ｗ１２１、Ｗ１３１、Ｗ１４１は、ストア命令またはロード命令が出力される経路である。経路Ｗ１１２、Ｗ１２２、Ｗ１３２、Ｗ１４２は、ストアデータが出力される経路である。経路Ｗ１６１は、ロードデータが出力される経路である。
【００１４】
中央処理装置６０は、主記憶装置７０に対するデータ書込命令であるストア命令と、書込対象のデータであるストアデータとを出力する。また、中央処理装置６０は、主記憶装置７０に対するデータ読出命令であるロード命令を出力し、ロード命令に応じたデータを取得する。また、中央処理装置６０は、プログラム実行開始時などの処理開始時に、タイマ回路１４に対してリセット信号を出力する。
主記憶装置７０は、中央処理装置６０からのストア命令に従ってデータを記憶し、中央処理装置６０からのロード命令に従って、記憶しているデータを出力する。なお、主記憶装置７０がキャッシュを備えるようにしてもよい。
【００１５】
ストアバッファ回路１２は、主記憶装置７０よりも高速にアクセス可能なセットアソシアティブ方式の記憶装置を備え、中央処理装置６０から出力されるストア命令を記憶する。また、ストアバッファ回路１２は、マージ回路１１が中央処理装置６０から出力されるストアデータに対してマージ処理を行って得られたストアデータを記憶する。また、ストアバッファ回路１２は、追出制御回路１５から追出指示信号が出力されると、ストア命令およびストアデータをライトバッファ回路１３に追い出す。なお、ここでいう「追い出す」処理とは、ストア命令およびストアデータを出力し、当該ストア命令およびストアデータを記憶していた記憶領域に新たなデータを書込可能とする処理である。
【００１６】
マージ回路１１は、中央処理装置６０からストア命令が出力されると、このストア命令と主記憶装置７０にて同一のアドレス領域に書き込まれるストア命令のストアデータをストアバッファ回路１２から取得し、中央処理装置６０から出力されたストア命令のストアデータを、ストアバッファ回路１２から読み出されたストアデータに反映させ、反映後のデータをストアバッファ回路１２に書き戻す。なお、ここでいう「書き戻す」処理は、ストアバッファ回路１２にストアデータを記憶させる処理である。
【００１７】
ライトバッファ回路１３は、キュー（Ｑｕｅｕｅ）構造の記憶装置を備え、ストアバッファ回路１２から出力されるストア命令およびストアデータを一時的に保存し、これらストア命令およびストアデータを一定の時間間隔で主記憶装置７０に出力する。
【００１８】
タイマ回路１４は、中央処理装置６０からリセット信号が出力された後、中央処理装置６０から最初のストア命令またはロード命令が出力されてからの時間をカウントアップする。
フル検出回路１６は、ストアバッファ回路１２のメモリ使用状況を監視し、メモリ使用状況に応じて、追出処理が必要であることを示すフル検出信号を出力する。
データ数検出回路１７は、ライトバッファ回路１３の記憶するデータ数を検出する。
追出制御回路１５は、タイマ回路のカウントする時間と、フル検出回路１６からのフル検出信号と、データ数検出回路１７の検出するデータ数とに基づいて、ストアバッファ回路１２が追出処理を行う必要があるか否かを判定し、必要ありと判定すると追出処理の実行を指示する追出指示信号を出力する。
【００１９】
次に、図２を参照して、ストアデータのマージ処理について説明する。
図２は、ストアマージ装置１０が行うマージ処理の例を示す図である。
本実施形態では、中央処理装置６０は、ストア命令と共に８バイト（Ｂ）のストアデータを出力する。これに対して主記憶装置７０は、当該主記憶装置７０の記憶領域を６４バイト毎に分割したラインを、データの入出力を行う際の単位としている。
【００２０】
例えば、中央処理装置６０が主記憶装置７０に対して２４バイトのデータのストアを要求する場合、中央処理装置６０は、この２４バイトのデータを、図２のストアデータ１、２、３のように８バイト毎に分割し、３つのストア命令を出力する。このストアデータ１、２、３は元々連続するデータなので、主記憶装置７０において同一のラインに格納されるべきデータであることが考えられる。
【００２１】
この場合、ストアマージ装置１０が、中央処理装置６０からストア命令を受け取る毎に、主記憶装置７０からライン単位でデータを読み出し、ストア命令を反映させたライン単位のデータ書き戻すと、主記憶装置７０からのデータ読出と、主記憶装置７０へのデータ書込とを、それぞれ３回行う必要がある。
これに対して、ストアマージ装置１０が、主記憶装置７０からライン単位でデータを読み出し、図２に示すように、中央処理装置６０からの３つのストア命令を全て反映させたデータを生成し、生成したデータを書き戻すようにすれば、主記憶装置７０からのデータ読出と、主記憶装置７０へのデータ書込とが、それぞれ１回で済む。
そこで、ストアマージ装置は、主記憶装置７０から読み出したデータに中央処理装置６０からのストア命令を反映させた後、直ちに主記憶装置７０へストア命令の出力を行わずにストアバッファ回路１２に一旦蓄え、後述する一定の事象が発生した後に主記憶装置７０にストア命令を出力する。
【００２２】
次に、図３を参照してロード命令およびストア命令のデータ構成について説明する。
図３は、ロード命令およびストア命令のデータ構成を示す構成図である。同図に示すように、ロード命令およびストア命令は、いずれも、コマンド格納領域Ａ２１と、アドレス格納領域Ａ２２〜Ａ２４を含み、アドレス格納領域Ａ２２〜Ａ２４は、上位アドレス格納領域Ａ２２と、中位アドレス格納領域Ａ２３と、下位アドレス格納領域Ａ２４とから構成される。
【００２３】
コマンド格納領域Ａ２１は、ロード命令とストア命令とを識別するコマンドが格納される領域である。コマンドは、例えば、ロード命令を示す「Ｌ」またはストア命令を示す「Ｓ」のいずれかの値を取る。
アドレス格納領域Ａ２２〜Ａ２４には、ロードデータが格納されている主記憶装置７０上の記憶領域の先頭アドレス、または、ストアデータが格納されるべき主記憶装置７０上の記憶領域の先頭アドレスが格納される。
【００２４】
アドレス格納領域Ａ２２〜Ａ２４のうち、中位アドレス格納領域Ａ２３は、ストアバッファ回路１２が、後述するエントリを選択するために用いられる。
また、下位アドレス格納領域Ａ２４は、中央処理装置６０が出力するストアデータの、主記憶装置７０のライン中における位置を示し、後述するように、マージ回路１１が、中央処理装置６０から出力されるストアデータをストアバッファ回路１２から読み出されるストアデータに反映させる処理を行うために用いられる。
【００２５】
次に、図４を用いてマージ回路１１の構成について説明する。
図４は、マージ回路１１の概略構成を示す構成図である。同図において、マージ回路１１は、シフタ１１１とマージャ１１２とを具備する。
シフタ１１１は、中央処理装置６０から経路Ｗ１１１にて出力される命令（ロード命令またはストア命令）を取得すると、当該命令がロード命令かストア命令かを、コマンド格納領域を参照して判定する。
【００２６】
そして、ロード命令であると判定した場合は、シフタ１１１は別段処理を行わない。この場合、中央処理装置６０から出力されたロード命令が、そのままストアバッファ回路１２に転送される。
一方、取得した命令がストア命令であると判定した場合、マージ回路１１は、当該ストア命令に含まれる下位アドレスに基づいて、中央処理装置６０から経路Ｗ１１２にて出力されるストアデータ（８バイト）を、主記憶装置７０のライン（６４バイト）上での位置に合わせてシフトさせる。
【００２７】
マージャ１１２は、ストアバッファ回路１２から当該ストア命令に基づいて出力されるライン単位（６４バイト）のストアデータを取得し、シフタ１１１から出力される、シフトされたストアデータをライン単位のストアデータに反映させる。すなわち、マージャ１１２は、ライン単位６４バイトのストアデータのうち、中央処理装置６０から出力される８バイトのストアデータに相等する位置のデータを当該８バイトのストアデータのデータに置き換える。
これにより、ストアバッファ回路１２からのストアデータと、中央処理装置６０からのストアデータとが１つのストアデータにマージされるので、主記憶装置７０はマージ後のストアデータのみを記憶すればよい。すなわち、中央処理装置６０から出力されたストア命令と、マージ回路１１が記憶していたストア命令とが、１つのストア命令にマージされている。
そして、マージャ１１２は、マージ後のストアデータをストアバッファ回路１２に出力することにより、当該ストアデータをストアバッファ回路１２に書き戻す。
【００２８】
次に、図５を参照して、ストアバッファ回路１２の構成について説明する。
図５は、ストアバッファ回路１２の概略構成を示す構成図である。同図において、ストアバッファ回路１２は、アドレスアレイ１２１と、データアレイ１２２と、ストアバッファ制御回路１２３と、アレイ制御回路１２４と、読出回路１２５とを具備する。読出回路１２５は、命令出力回路１２６と、ロード命令退避回路１２７と、データ出力回路１２８とを具備する。
【００２９】
アドレスアレイ１２１と、データアレイ１２２とで、セットアソシアティブ方式の記憶装置を構成し、ストア命令およびストアデータを一時的に記憶する。アドレスアレイ１２１は、ストア命令に含まれるアドレスを記憶し、データアレイ１２２は、ストアデータを記憶する。
アドレスアレイ１２１の記憶領域は、ｍ行×ｎ列（ｍ、ｎは正整数）の領域に分割され、１つの領域に１つのアドレスが格納される。そして、アドレスアレイの各行は、ストア命令の中位アドレス値と１対１に対応付けられており、ストア命令のアドレスは、中位アドレスに応じた行の記憶領域に格納される。各行はｎ個のアドレス格納領域を有するので、アドレスアレイ１２１は、中位アドレス値が同一かつ上位アドレスが異なるアドレスを、ｎ個まで記憶し得る。なお、以下では、アドレスアレイ１２１の各行を「エントリ」と称する。
【００３０】
なお、アドレスアレイ１２１の、有効なアドレス値が格納されていない領域には、アドレス値と識別可能な値（例えば、マイナスの整数値）が格納される。これにより、当該領域が空き領域（新たなデータを書込可能な領域）であることが示される。
また、アドレスアレイ１２１は、各領域のアドレス値と対応付けて、当該アドレス値が最後にアクセスされた時刻、すなわち、当該ストア命令が最後にアクセスされた時刻を記憶する。
【００３１】
なお、ストアバッファ回路１２は、主記憶装置７０のラインに合わせてライン単位でデータの書込および読出を行う。このため、ストアバッファ回路１２は、ストア命令の下位アドレスを無視する。すなわち、上位アドレス値および中位アドレス値が同一であれば、下位アドレス値が異なっていても同一のアドレス値として扱い、データの読出等の処理を行う。
【００３２】
データアレイ１２２の記憶領域も、アドレスアレイ１２１と同様に、ｍ行×ｎ列の領域に分割され、各行はアドレスアレイ１２１の各行と１対１に対応付けられ、各列はアドレスアレイの各列と１対１に対応付けられている。これにより、アドレスアレイ１２１とデータアレイ１２２とでｎウェイ（Ｗａｙ）セットアソシアティブ方式の記憶装置を構成する。
ストアバッファ制御回路１２３は、マージ回路１１から出力される命令や追出制御回路１５から出力される追出指示信号を受けて、ストアバッファ回路１２の各部を制御する。
【００３３】
アレイ制御回路１２４は、アドレスアレイ１２１やデータアレイ１２２に対するストア命令（アドレス値およびストアデータ）の読み出しや書き込みの制御を行う。
具体的には、アレイ制御回路１２４は、命令や追出指示信号に含まれるアドレス値を読み出し、中位アドレス値に基づいて、アドレスアレイ１２１の行を選択する。
そして、ストアバッファ制御回路１２３は、ストア命令を読み出す際は、選択した行の各領域のアドレス値を読出回路１２５に出力するようアドレスアレイ１２１を制御する。さらに、アレイ制御回路１２４は、選択した行の各領域のストアデータを読出回路１２５に出力するようデータアレイ１２２を制御する。
【００３４】
また、ストア命令を書き込む際は、ストアバッファ制御回路１２３は、選択した行の領域のうち空き領域を選択し、命令記憶回路１２３から読み出したアドレス値を、選択した空き領域に書き込む。さらに、書込回路１２４は、データアレイ１２２の領域のうち、アドレスを書き込んだアドレスアレイの領域と同じ行かつ同じ列の領域に、マージ回路１１から出力されたストアデータを書き込む。
また、アレイ制御回路１２４は、アドレスアレイ１２１の行毎に、格納されているアドレスの数を随時計数し、係数結果と当該行を示すアドレス値とをフル検出回路１６に随時出力する。
【００３５】
読出回路１２５において、アドレスアレイ１２１から出力されるアドレス値に基づいてストア命令を生成し、ライトバッファ回路１１３に出力する。データ出力回路は１２８、データアレイ１２２から出力されるストアデータをライトバッファ回路１１３に出力する。ロード命令退避回路１２７は、ロード命令を一時的に記憶する。
【００３６】
次に、図６を参照して、ライトバッファ回路１３の構造について説明する。
図６は、ライトバッファ回路１３の構造を示す図である。同図に示すように、ライトバッファ回路１３はキュー構造の記憶装置を備える。そして、ライトバッファ回路１３の記憶領域は、行Ｌ３＿０〜Ｌ３＿ｐ−１のｐ行分の領域に分割され、各行は、命令の記憶領域Ａ３１と、データの記憶領域Ａ３２とを備える。
【００３７】
同図に示す状態では、ライトバッファ回路１３の記憶領域の行Ｌ３＿ｉから行Ｌ３＿ｊ−１までのｊ行分に命令が格納されており、最も早く命令が格納された行（以下では、「先頭行」と称する）Ｌ３＿ｉに対して、次に命令を読み出す行であることを示すリードポインタが設定されている。また、最後に命令が格納された行（以下では、「末尾行」と称する）３＿ｉ＋ｊ−１の次の行である行Ｌ３＿ｉ＋ｊに対して、次に命令を書き込む行であることを示すライトポインタが設定されている。
ライトバッファ回路１３は、ストアバッファ回路１２から出力される命令（ロード命令およびストア命令）を一時保存し、ストアバッファ回路１２から出力された順に主記憶装置７０に出力する。その際、ライトバッファ回路１３は、各命令を一定期間おきに出力することにより、主記憶装置７０の負荷が集中しないようにする。
【００３８】
次に、図７および８を参照してタイマ回路１４の機能および構成について説明する。
図７は、タイマ回路１４への入力とタイマ回路１４の出力との関係を示す表である。同図に示すように、タイマ回路１４は、中央処理装置６０からリセット信号が出力されると、カウンタ値を０にリセットする。また、タイマ回路１４は、中央処理装置６０からリセット信号が出力されていない状態で、中央処理装置６０から最初の命令が出力されるとタイマのカウントアップを開始し、以後、中央処理装置６０からリセット信号が出力されるまで、サイクル毎にカウントアップを行う。ここで、タイマ回路１４がカウントアップを行うサイクルは、時間を測定可能なサイクルであればよい。例えば、情報処理装置１のクロックサイクルを用いることができる。
【００３９】
図８は、タイマ回路１４の概略構成を示す構成図である。同図において、タイマ回路１４は、命令受付回路１４１と、レジスタ１４２と、ＯＲ回路１４３および１４８と、ＡＮＤ回路１４４および１４５と、カウンタ１４６と、カウント信号出力回路１４７とを具備する。
命令受付回路１４１は、中央処理装置６０から命令が出力されていないときは「０」を出力し、命令が出力されているときは「１」を出力する。
レジスタ１４２は、命令受付回路１４１からの出力に基づいて、中央処理装置６０からリセット信号が出力された後、最初の命令が出力済みである場合に「１」を出力する。
【００４０】
ＯＲ回路１４３は、最初の命令が出力済み、または、タイマ回路１４がカウント中の場合に「１」を出力し、それ以外の場合は「０」を出力する。
ＡＮＤ回路１４４は、最初の命令が出力済み、または、タイマ回路１４がカウント中であって、かつ、中央処理装置６０からリセット信号が出力されていない場合は「１」を出力し、それ以外の場合は「０」を出力する。
ＡＮＤ回路１４５は、最初の命令が出力済み、または、タイマ回路１４がカウント中であって、かつ、中央処理装置６０からリセット信号が出力されていない場合は、カウント信号出力回路１４７から出力されるカウントアップ信号をカウンタ１４６に出力する。
【００４１】
カウンタ１４６は、中央処理装置６０から出力されるリセット信号によりリセットされ、ＡＮＤ回路１４５から出力されるカウントアップ信号に従ってカウントアップする。
カウント信号出力回路１４７は、サイクル毎にカウントアップ信号を出力する。
ＯＲ回路１４８は、カウンタ１４６の出力するカウント値が０でないときはカウント中であることを示す信号「１」を出力し、カウント値が０のときは「０」を出力する。
かかる構成により、図７に示す入出力が実現される。
【００４２】
次に、図９および１０を用いて追出制御回路１５の機能および構成について説明する。
図９は、追出制御回路１５への入力と追出制御回路１５の出力との関係を示す表である。同図に示すように、追出制御回路１５は、タイマ回路１４から出力されるタイマカウント値が、予め設定されたタイマ設定値よりも大きい場合、または、データ数検出回路１７から出力されるライトバッファデータ数が、予め設定されたデータ数設定値よりも小さい場合、または、フル検出回路１６からエントリフル信号が出力される場合に、追出指示信号として「１」をストアバッファ回路１２に出力し、その他の場合は「０」を出力する。追出指示信号「１」は、ストアバッファ回路１２からストア命令を追い出すよう指示する信号である。また、追出制御回路１５は、フル検出回路１６からエントリフル信号が出力される場合は、上述の値「１」に加えてエントリフル信号に含まれるアドレス値を含む追出指示信号を生成し、ストアバッファ回路１２に出力する。
【００４３】
図１０は、追出制御回路１５の概略構成を示す構成図である。同図において、追出制御回路１５は、レジスタ１５１および１５３と、大小比較回路１５２および１５４と、ＡＮＤ回路１５５と、ＯＲ回路１５６と、アドレス付加回路１５７とを具備する。
レジスタ１５１は、予め設定されたタイマ設定値を記憶する。大小比較回路１５２は、タイマ回路１４から出力されるタイマカウント値と、レジスタ１５１の記憶するタイマ設定値とを比較し、タイマカウント値がタイマ設定値よりも大きい場合に「１」を出力し、その他の場合に「０」を出力する。
【００４４】
レジスタ１５３は、予め設定されたデータ数設定値を記憶する。大小比較回路１５４は、データ数検出回路１７から出力されるライトバッファデータ数（ライトバッファ記憶部１３が記憶しているデータの数）と、レジスタ１５３の記憶するデータ数設定値とを比較し、ライトバッファデータ数がデータ数設定値より小さい場合に「１」を出力し、その他の場合に「０」を出力する。
ＡＮＤ回路１５５は、タイマカウント値がタイマ設定値よりも大きく、かつ、ライトバッファデータ数がデータ数設定値より大きい場合に「１」を出力し、その他の場合に「０」を出力する。
ＯＲ回路１５６は、タイマカウント値がタイマ設定値よりも大きく、かつ、ライトバッファデータ数がデータ数設定値より大きい場合、あるいは、フル検出回路１６からエントリフル信号が出力される場合に、追出指示信号として「１」を出力し、その他の場合は「０」を出力する。
アドレス付加回路１５７は、ストアバッファ回路１２のアドレスアレイ１２１のあるエントリがフルである（当該エントリの全ての領域にアドレスが格納されている）ことを示すエントリフル信号がフル検出回路１６から出力されると、エントリフル信号から当該エントリを示すアドレス値を読出し、読み出したアドレス値を追出指示信号に含める。
かかる構成により、図１０に示す入出力が実現される。
【００４５】
次に図１１を参照してフル検出回路１６の構成について説明する。
図１１は、フル検出回路１６の概略構成を示す構成図である。同図において、データ数検出回路１７は、レジスタ１７１と大小比較回路１７２を具備する。
レジスタ１７１は、ストアバッファ回路１２のｗａｙ数（アドレスアレイ１２１の列数）を予め記憶する。大小比較回路１７１は、ストアバッファ回路１２から出力される、アドレスアレイ１２１の各行に記憶されているアドレス数（ストア命令数）と、レジスタ１７１の記憶するｗａｙ数とを比較し、アドレス数がｗａｙ数より多い行があれば、エントリフル信号として、エントリフルを示す「１」と、当該行を示すアドレス値とを出力する。
【００４６】
次に、図１２〜１４を参照して情報処理装置１の動作について説明する。
図１２は、中央処理装置６０からロード命令が出力された際の情報処理装置１の動作例を示すシーケンス図である。
まず、中央処理装置６０からリセット信号が出力されると（シーケンスＳ２０１）、タイマ回路１４は、カウンタ値を０にリセットする（シーケンスＳ２０２）。
次に、中央処理装置６０から最初の命令（ストア命令またはロード命令）が出力されると（シーケンスＳ２１１）、タイマ回路１４は、カウントアップを開始する（シーケンスＳ２１２）。また、マージ回路１１は、中央処理装置６０から出力された当該命令を、後述する処理手順に従って処理する。
【００４７】
その後、中央処理装置６０からロード命令が出力されると（シーケンスＳ２２１）、マージ回路１１は、ロード命令をストアバッファ回路１２に出力する（シーケンスＳ２２２）。ストアバッファ回路１２は、マージ回路１１から出力されたロード命令に対応するアドレスのストア命令を記憶しているか否かを判定する。当該ストア命令を記憶していないと判定すると（シーケンスＳ２２３）、ストアバッファ回路１２は、ロード命令をそのままライトバッファ回路１３に出力する（シーケンスＳ２２４）。そして、ライトバッファ回路１３は、ストアバッファ回路１２から出力されるロード命令を一時的に記憶し、主記憶装置７０に出力する（シーケンスＳ２２５）。ライトバッファ回路１３からロード命令の出力を受けた主記憶装置７０は、当該ロード命令に基づいてロードデータを中央処理装置６０に出力する。
【００４８】
なお、ライトバッファ回路１３が主記憶装置７０に命令を出力する際、主記憶装置７０の該当するバンクがビジー状態にありアクセス待ち状態となる場合は、当該命令よりも後から記憶した命令のうち、主記憶装置７０の該当するバンクが空き状態にある命令を先に出力するようにしてもよい。例えば、ライトバッファ回路１３が、主記憶装置７０のバンクごとにキュー構造の記憶装置を備え、バンクごとに並行して命令を出力することにより、記憶装置７０の該当するバンクが空き状態にある命令を先に出力できる。
【００４９】
また、シーケンスＳ２２１と同様、中央処理装置６０からロード命令が出力され（シーケンスＳ２３１）、シーケンスＳ２２２と同様、当該ロード命令がマージ回路１１から出力され（シーケンスＳ２３２）、ストアバッファ回路１２が、当該ロード命令に対応するアドレスのストア命令を記憶していると判定すると（シーケンスＳ２３３）、ストアバッファ回路１２は、ロード命令を一時的に記憶し、ストア命令をライトバッファ回路１３に出力する（追い出す。シーケンスＳ２３４）。その後、ストアバッファ回路１２は、一時的に記憶していたロード命令をライトバッファ回路１３に出力する（シーケンスＳ２３５）。
【００５０】
そして、ライトバッファ回路１３は、シーケンスＳ２３４にて出力されたストア命令を主記憶装置７０に出力し（シーケンスＳ２３６）、その後、シーケンスＳ２３５にて出力されたロード命令を主記憶装置７０に出力する（シーケンスＳ２３７）。
そして、主記憶装置７０は、記憶するデータをストア命令に従って更新した後、ロード命令に従ってロードデータを中央処理装置６０に出力する。
このように、ストアバッファ回路１２がロード命令を一時的に記憶し、先にストア命令を出力することにより、主記憶装置７０が、ストア命令の反映されていない誤ったロードデータを中央処理装置６０に出力することを防止する。
【００５１】
図１３は、中央処理装置６０からストア命令が出力された際の情報処理装置１の動作例を示すシーケンス図である。
中央処理装置６０からストア命令が出力されると（シーケンスＳ３０１）、マージ回路１１は、当該ストア命令をストアバッファ回路１２に出力する（シーケンスＳ３０２）。ストアバッファ回路１２は、マージ回路１１から出力されたストア命令に対応するアドレスのストア命令を記憶しているか否かを判定する。当該ストア命令を記憶していないと判定すると（シーケンスＳ３０３）、ストアバッファ回路１２は、当該ストア命令に含まれるアドレスを主記憶装置７０に出力してストアデータを要求する（シーケンスＳ３０４）。そして、主記憶装置７０は、要求されたストアデータをストアバッファ回路１２に出力する（シーケンスＳ３１１）。
【００５２】
ストアデータの出力を受けたストアバッファ回路１２は、当該ストアデータをマージ回路１１に出力する（シーケンスＳ３１２）。そして、マージ回路１１は、ストアバッファ回路１２から出力されたストアデータを、中央処理装置６０から出力されたストア命令に従って更新し（シーケンスＳ３１３）、ストアデータ更新後のストア命令をストアバッファ回路１２に出力する（シーケンスＳ３１４）。
ストアバッファ回路１２は、マージ回路１１から出力されたストア命令を記憶する（シーケンスＳ３１５）。
【００５３】
また、シーケンスＳ３１１と同様、中央処理装置６０からストア命令が出力され（シーケンスＳ３２１）、シーケンスＳ３１２と同様、当該ストア命令がマージ回路１１から出力され（シーケンスＳ３２２）、ストアバッファ回路１２が、当該当該ストア命令に対応するアドレスのストア命令を記憶している判定すると（シーケンスＳ３２３）、ストアバッファ回路１２は、この記憶しているストア命令をマージ回路１１に出力する（追い出す。シーケンスＳ３２４）。
【００５４】
そして、マージ回路１１は、ストアバッファ回路１２から出力されたストアデータを、中央処理装置６０から出力されたストア命令に従って更新する（シーケンスＳ３２５）。これにより、ストアバッファ回路１２が記憶していたストア命令と、中央処理装置６０から出力されたストア命令とがマージされる。そして、マージ回路１１は、ストアデータ更新後のストア命令をストアバッファ回路１２に出力する（シーケンスＳ３２６）。
ストアバッファ回路１２は、マージ回路１１から出力されたストア命令を記憶する（シーケンスＳ３２７）。
【００５５】
図１４は、ストアバッファ回路１２がストア命令を追い出す際の情報処理装置１の動作例を示すシーケンス図である。
タイマ回路１４は、タイマカウント値を追出制御回路１５に随時出力する（シーケンスＳ４０１）。
また、ストアバッファ回路１２は、アドレスアレイ１２１の各行の使用状況（記憶されているアドレスの数）を、フル検出回路１６に随時出力し（シーケンスＳ４１１）、フル検出回路１６は、ストアバッファ回路１２から出力されるアドレスアレイ１２１の各行の使用状況と、予め記憶している１行に記憶可能なアドレスの数とに基づいて、各行について、残り容量の有無（新たなアドレスおよびストアデータを記憶可能か否か）を判定し、残り容量が無いと判定した場合は、当該行を示すアドレスを含むエントリフル信号を追出制御回路１５に出力する。
【００５６】
また、ライトバッファ回路１３は、命令を記憶している先頭行を行番号にて示すリードポインタと、命令を記憶している末尾行の次の行を行番号にて示すライトポインタとをデータ数検出回路１７に出力する（シーケンスＳ４２１）。そして、データ数検出回路１７は、リードポインタとライトポインタとに基づいてライトバッファ回路１３が記憶している命令数を算出し、算出した命令数を追出制御回路１５に出力する（シーケンスＳ４２２）。
【００５７】
そして、追出制御回路１５は、タイマ回路１４から出力されるタイマカウント値と、フル検出回路１６から出力されるアドレスと、データ数検出回路１７から出力される命令数とに基づいて、ストアバッファ回路１２がストア命令の追い出しを行う必要があるか否かを判定し、追い出しを行う必要があると判定すると（シーケンスＳ４３１）、追出処理を指示する追出指示信号をストアバッファ回路１２に出力する（シーケンスＳ４３２）。
【００５８】
ストアバッファ回路１２は、追出制御回路１５から出力される追出指示信号に従って、ストア命令の追い出しを行う。具体的には、後述するように、追出対象のストア命令を決定し、当該ストア命令をライトバッファ回路１３に出力し（シーケンスＳ４３３）、当該ストア命令を記憶していた記憶領域を開放して新たなデータを書込可能とする。
そして、ライトバッファ回路１３は、ストアバッファ回路１２から出力されたストア命令を一時的に記憶した後、主記憶装置７０に出力する（シーケンスＳ４３４）。ライトバッファ回路から出力されたストア命令を受けた主記憶装置７０は、当該ストア命令に従ってデータを更新する。
【００５９】
次に、図１５を参照して、ストアバッファ回路１２が行う処理について説明する。
図１５は、ストアバッファ回路１２の処理手順を示すフローチャートである。ストアバッファ回路１２は、同図の処理を随時繰り返し実行する。
まず、ストアバッファ制御回路１２３が、マージ回路１１からストア命令が出力されたか否かを判定する（ステップＳ１０１）。ストア命令が出力されたと判定した場合、当該ストア命令をアレイ制御回路１２４と命令出力回路１２６とに出力する。
【００６０】
そして、アレイ制御回路１２４は、当該ストア命令に含まれるアドレス値に対応する行の各領域のアドレスおよびストアデータを、読出回路１２５に出力するよう、アドレスアレイ１２１およびデータアレイ１２２を制御する。具体的には、アレイ制御回路１２４は、ストア命令に含まれるアドレス値のうち、中位アドレス値に対応する行の各領域に格納されているアドレス値を出力するようアドレスアレイ１２１を制御する。また、アレイ制御回路１２４は、当該中位アドレス値に対応する行の各領域に格納されているストアデータを出力するようアドレスアレイ１２１を制御する。
【００６１】
読出回路１２５の命令出力回路１２６は、アドレスアレイ１２１から出力される各領域のデータのいずれかが、ストア命令に含まれるアドレス値にヒットするか否かを判定する（ステップＳ１０２）。具体的には、命令出力回路１２６は、判定対象のアドレス値の上位アドレス値と、アドレスアレイ１２１から出力された各領域のアドレス値の上位アドレス値とが同一か否かを判定する。上位アドレス値が同一のアドレス値があれば、命令出力回路１２６は、ヒットと判定し、無ければミスと判定する。
【００６２】
ヒットと判定した場合（ステップＳ１０２：ＹＥＳ）、命令出力回路１２６は、データアレイ１２２に記憶されているストアデータのうち、アドレス値がヒットした領域と同じ行かつ同じ列の領域に格納さているストアデータを取得するよう指示する信号をデータ出力回路１２８に出力し、データ出力回路１２８は当該ストアデータを取得する（ステップＳ１０３）。
そして、データ出力回路１２８は、取得したストアデータを、マージ回路１１に出力する（ステップＳ１０４）。
また、命令出力回路１２６は、ヒットしたアドレス値を含む開放要求信号をアレイ制御回路１２４に出力する。アレイ制御回路１２４は、アドレスアレイ１２１の、当該アドレス値に対応する領域（アドレスアレイ１２１の、当該アドレスを記憶している領域）に、アドレス値と識別可能な値を書き込む（ステップＳ１０４）。これにより、当該領域が空き領域となる。その後、同図の処理を終了する。
【００６３】
一方、ステップＳ１０２にてミスと判定した場合（ステップＳ１０２：ＮＯ）、命令出力回路１２６は、ストア命令から読み出したアドレス値を含むデータ要求信号を主記憶装置７０に出力する。そして、データ出力回路１２８が、主記憶装置７０から出力される、当該アドレス値に対応するラインのデータを取得する（ステップＳ１１１）。そして、読出回路１２５は、取得したデータをマージ回路１１に出力する（ステップＳ１１２）。その後、同図の処理を終了する。
【００６４】
一方、ステップＳ１０１にて、ストア命令が出力されていないと判定した場合（ステップＳ１０１：ＮＯ）、ストアバッファ制御回路１２３は、マージ回路１１からロード命令が出力されたか否かを判定する（ステップＳ１２１）。ロード命令が出力されたと判定した場合（ステップＳ１２１：ＹＥＳ）、ストアバッファ制御回路１２３は、当該ロード命令をアレイ制御回路１２４と命令出力回路１２６とに出力する。
そして、アレイ制御回路１２４は、上述したストア命令の場合と同様に、当該ロード命令に含まれるアドレス値に対応する行の各領域のアドレスおよびストアデータを、読出回路１２５に出力するよう、アドレスアレイ１２１およびデータアレイ１２２を制御する。また、読出回路１２５の命令出力回路１２６は、上述したストア命令の場合と同様に、アドレスアレイ１２１から出力される各領域のデータのいずれかが、ストア命令に含まれるアドレス値にヒットするか否かを判定する（ステップＳ１２２）。
ヒットすると判定した場合（ステップＳ１２２：ＹＥＳ）、命令出力回路１２６は、ロード命令退避回路１２７にロード命令を書き込む（ステップＳ１２３）。
【００６５】
そして、命令出力回路１２６は、上述したストア命令の場合と同様に、データアレイ１２２に記憶されているストアデータのうち、アドレス値がヒットした領域と同じ行かつ同じ列の領域に格納さているストアデータを取得するよう指示する信号をデータ出力回路１２８に出力し、データ出力回路１２８は当該ストアデータのうち、アドレス値がヒットした領域と同じ行かつ同じ列の領域に格納さているストアデータを取得する（ステップＳ１２４）。
また、命令出力回路１２５は、ストア命令を示すコマンド名（例えば「Ｓ」）を予め記憶しておき、当該コマンド名と、ヒットしたアドレス値とに基づいてストア命令を生成する。そして、命令出力回路１２５は、生成したストア命令をライトバッファ回路１３に出力する。また、データ出力回路１２８は、取得したストアデータをライトバッファ回路１３に出力する（ステップＳ１２５）。
【００６６】
また、命令出力回路１２６は、ヒットしたアドレス値を含む開放要求信号をアレイ制御回路１２４に出力する。アレイ制御回路１２４は、アドレスアレイ１２１の、当該アドレスに対応する領域に、アドレス値と識別可能な値を書き込む（ステップＳ１２６）。これにより、当該領域が空き領域となる。
さらに、命令出力回路１２６は、ロード命令退避回路１２７からロード命令を読み出し、読み出したロード命令をライトバッファ回路１３に出力する（ステップＳ１２７）。その後、同図の処理を終了する。
一方、ステップＳ１２２にて、ヒットしないと判定した場合（ステップＳ１２２：ＮＯ）、命令出力回路１２６は、ロード命令をライトバッファ回路１３に出力する（ステップＳ１３１）。その後、同図の処理を終了する。
【００６７】
一方、ステップＳ１２１にて、ロード命令が出力されていないと判定した場合、ストアバッファ制御回路１２３は、追出制御回路１５から追出指示信号が出力されたか否かを判定する（ステップＳ１４１）。追出指示信号が出力されたと判定した場合（ステップＳ１４１：ＹＥＳ）、ストアバッファ制御回路１２３は、当該追出指示信号をアレイ制御回路１２４と命令出力回路１２６とに出力する。アレイ制御回路１２４は、追出対象となるストア命令のアドレス値およびストアデータを、読出回路１２５に出力するよう、アドレスアレイ１２１およびデータアレイ１２２を制御する。そして、命令出力回路１２６は、アドレスアレイ１２１から出力されるアドレス値を取得し、データ出力回路１２８は、データアレイ１２２から出力されるストアデータを取得する（ステップＳ１４２）。
【００６８】
ここで、アレイ制御回路１２４は、追出指示信号にアドレス値が含まれているか否かを判定する。そして、アドレス値が含まれていると判定した場合、アレイ制御回路１２４は、アドレスアレイ１２１を参照して、当該アドレス値に対応する行の各領域のうち、最後にアクセスされた時刻が最も古いストア命令を、追出対象のストア命令に決定する。一方、アドレス値が含まれていないと判定した場合、アレイ制御回路１２４は、アドレスアレイ１２１を参照して、全領域のうち最後にアクセスされた時刻が最も古いストア命令を、追出対象のストア命令に決定する。
【００６９】
そして、命令出力回路１２６は、ステップＳ１２５と同様に、アドレスアレイ１２１から出力されるアドレスを含む命令を生成し、生成したストア命令をライトバッファ回路１３に出力する。また、データ出力回路１２８は、取得したストアデータをライトバッファ回路１３に出力する（ステップＳ１４３）。
【００７０】
また、命令出力回路１２６は、取得したアドレス値を含む開放要求信号をアレイ制御回路１２４に出力する。アレイ制御回路１２４は、アドレスアレイ１２１の、当該アドレスに対応する領域に、アドレス値と識別可能な値を書き込む（ステップＳ１２６）。これにより、当該領域が空き領域となる。その後、同図の処理を終了する。
一方、ステップＳ１４１において、追出指示信号が出力されていないと判定した場合（ステップＳ１４１：ＮＯ）同図の処理を終了する。
【００７１】
次に、図１６を参照してストアバッファ回路１２が記憶するデータ量について記憶する。
図１６は、ストアバッファ回路１２が記憶するデータ量（ストア命令数）の変化を示すグラフである。線Ｌ１３１はストアバッファ回路１２が記憶するデータ量の変化の例を示す。線Ｌ１３２は、追出制御回路１５が、ライトバッファデータ数がデータ数設定値より大きい場合と、エントリフル信号が「１」の場合に追出指示信号として「１」を出力する場合に、ストアバッファ回路１２が記憶するデータ量の変化を示すグラフである。
線Ｌ１３１が示すように、最初に命令が出力されてから一定時間は追出制御回路１５が追出指示信号の出力を抑制することで、ストアバッファ回路１２にストア命令が蓄積され、中央処理装置６０からストア命令に対して、ストアバッファ回路１２の記憶するストア命令がヒットする率が向上する。これにより、主記憶装置７０へのアクセス頻度を抑えることが出来る。
【００７２】
以上のように、ストアバッファ回路１２が複数のストア命令を記憶してマージ回路１１に出力するので、主記憶装置７０上の異なるアドレスに対するストア命令が中央処理装置６０から出力された場合にも、当該アドレスに対するストアデータをストアバッファ回路１２が記憶していることが期待できる。そして、ストアバッファ回路１２がストアデータを記憶している場合、主記憶装置７０へのアクセスを抑えることができ、主記憶装置７０へのアクセス待ちによる中央処理装置６０の処理速度低下を防止できる。
【００７３】
また、中央処理装置６０が、プログラム実行開始時などの処理開始時、すなわち、ストアバッファ回路１２の記憶するストア命令の数が少ないと考えられるタイミングでリセット信号を出力し、タイマ回路１４は、当該リセット信号が出力された後、中央処理装置６０から最初の命令が出力されるとカウントアップを開始する。そして、ストアバッファ回路１２は、ライトバッファ回路１３の記憶するデータ数がデータ数設定値以下になった場合でも、最初の命令が出力されてから一定時間経過するまでは、ストア命令の追い出しを抑制するので、中央処理装置６０からストア命令が出力された際のヒット率を高めることが出来る。
また、最初の命令が出力されてから一定時間経過後は、ライトバッファ回路１３の記憶するデータ数がデータ数設定値以下になった場合に、ストアバッファ回路１２がストア命令の追い出しを行うので、ライトバッファ回路１３の記憶するデータ数（ストア命令の数）の増大を防止でき、ライトバッファ回路が主記憶装置７０にアクセスする際のスループット低下を防止できる。
【００７４】
なお、タイマ回路の構成は上述したものに限らない。例えば、中央処理装置６０がリセット信号を出力せず、タイマ回路自身がリセット信号を生成するようにしてもよい。
図１７は、タイマ回路の変形例を示す構成図である。同図において、タイマ回路２４は、命令受付回路１４１と、レジスタ１４２および２４１と、ＯＲ回路１４３および１４８と、ＡＮＤ回路１４４、１４５および２４３と、カウンタ１４６と、カウント信号出力回路１４７と、大小比較回路２４２とを具備する。同図において、図８の各部と同様の機能を有する部分には同一の符号（１４１〜１４８）を付し、説明を省略する。
【００７５】
レジスタ２４１は、予め定められたデータ数設定値として「１」を記憶する。大小比較回路２４２は、データ数検出回路１７から経路Ｗ２４１にて出力されるライトバッファデータ数と、レジスタ２４１の記憶するデータ数設定値とを比較し、ライトバッファデータ数がデータ数設定値より小さい場合、すなわちライトバッファデータ数が０の場合に「１」を出力し、その他の場合に「０」を出力する。ＡＮＤ回路２４３は、ライトバッファデータ数がデータ数設定値より小さく、かつ、カウンタ１４６のある桁以上のビット値が１であるとき（例えば、下位から９桁目以上のいずれかの桁のビット値が１であるとき）にカウンタリセット信号「１」を出力し、その他のときに「０」を出力する。
【００７６】
この構成により、タイマ回路２４がカウントを開始してから一定時間以上が経過し、かつ、ライトバッファデータ数が０であるときにカウンタリセット信号を生成できる。したがって、ライトバッファ回路１３が空のときにタイマ回路２４がタイマカウント値をリセットして、ストアバッファ回路１２がストア命令を蓄積し、中央処理装置６０からストア命令が出力された際のヒット率を高めることができる。
ここで、ストアバッファ回路１２が蓄積するストア命令の数が増加した場合、ストアバッファ回路１２が連続してストア命令を追い出し、ライトバッファ回路１３に蓄積される命令の量が増大することが考えられる。この場合、ライトバッファ回路１３から主記憶装置７０への命令の出力に時間を要し、中央制御装置６０がロード命令を出力した際にデータを取得するまでの待ち時間が増大するおそれがある。さらには、ライトバッファ回路１３に空き領域がなくなった場合は、ライトバッファ回路１３に空き領域が生じるまで、ストアバッファ回路１２がストア命令の追出を待つ必要が生じ、処理の遅延につながる。
そこで、上記のように、ライトバッファ回路１３が空のときにストアバッファ回路１２がストア命令を蓄積することにより、ライトバッファ回路１３に大量の命令が蓄積されることを防止でき、待ち時間による処理の遅延を抑制しうる。
【００７７】
また、タイマ回路２４がカウンタリセット信号を生成するので、中央処理装置６０がリセット信号を出力する必要がない。したがって、中央処理装置６０とタイマ回路２４との間で入出力されるデータ量を削減でき、また、中央処理装置６０がカウンタリセット信号を生成する負荷を軽減できる。
【００７８】
なお、ストアマージ装置１０の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７９】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００８０】
１  情報処理装置
１０  ストアマージ装置
１１  マージ回路
１２  ストアバッファ回路
１３  ライトバッファ回路
１４  タイマ回路
１５  追出制御回路
１６  フル検出回路
１７  データ数検出回路
６０  中央処理装置
７０  主記憶装置
【図１】
0005522731.tif 000002
【図２】
0005522731.tif 000003
【図３】
0005522731.tif 000004
【図４】
0005522731.tif 000005
【図５】
0005522731.tif 000006
【図６】
0005522731.tif 000007
【図７】
0005522731.tif 000008
【図８】
0005522731.tif 000009
【図９】
0005522731.tif 000010
【図１０】
0005522731.tif 000011
【図１１】
0005522731.tif 000012
【図１２】
0005522731.tif 000013
【図１３】
0005522731.tif 000014
【図１４】
0005522731.tif 000015
【図１５】
0005522731.tif 000016
【図１６】
0005522731.tif 000017
【図１７】
0005522731.tif 000018