(57)【要約】【課題】ストアデータをキャッシュメモリに効率的に反映すること。【解決手段】ストアバッファおよびライトバッファを用いて記憶装置へのストアデータの反映を制御する場合において、ストアバッファおよびライトバッファの状態を取得する手段を設け、取得した状態に基づいてマージ処理に伴う待合せを開始することによりマージ機会を増加させ、取得した状態と、待ち時間を制限するタイマ処理などの待合せ解除条件検出処理とによりかかる待合せを解除する。【選択図】        図２
2006048163.tif 000002
【特許請求の範囲】
【請求項１】
ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御装置であって、
前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得手段と、
前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御手段と
を備えたことを特徴とするストアデータ制御装置。
【請求項２】
前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合であっても、前記ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始することを特徴とする請求項１に記載のストアデータ制御装置。
【請求項３】
前記待合せ制御手段は、前記ライトバッファに前記マージ処理が可能なストアデータがない場合に、該マージ処理に伴う待合せ処理を解除することを特徴とする請求項１または２に記載のストアデータ制御装置。
【請求項４】
前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする請求項１、２または３に記載のストアデータ制御装置。
【請求項５】
前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、該待合せを解除することを特徴とする請求項１〜４のいずれか一つに記載のストアデータ制御装置。
【請求項６】
前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、該待合せを解除することを特徴とする請求項１〜５のいずれか一つに記載のストアデータ制御装置。
【請求項７】
前記待合せ制御手段は、前記ストアバッファがストアデータを保持していない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする請求項１〜６のいずれか一つに記載のストアデータ制御装置。
【請求項８】
前記待合せ制御手段は、前記ストアバッファが保持するストアデータおよび前記ライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除することを特徴とする請求項１〜７のいずれか一つに記載のストアデータ制御装置。
【請求項９】
前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除することを特徴とする請求項１〜８のいずれか一つに記載のストアデータ制御装置。
【請求項１０】
ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御方法であって、
前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得工程と、
前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御工程と
を含んだことを特徴とするストアデータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、ストアバッファからライトバッファへストアデータを転送させる際に、ストアデータのマージ処理をおこなうストアデータ制御装置およびストアデータ制御方法に関し、特に、マージ処理に伴う待合せ処理および待合せ解除処理を適切に制御し、マージ処理の機会を増加させ、かつ、マージ処理待ちによる処理の遅れを防止することにより、ストアデータをキャッシュメモリなどの記憶装置に効率的に反映することができるストアデータ制御装置およびストアデータ制御方法に関するものである。
【背景技術】
【０００２】
従来、ストアデータを一時的に保持するバッファを用いて、かかるバッファにおいてストアデータをマージ処理し、記憶装置へのストアデータの反映をおこなうストアデータ制御装置が知られている。ストアデータをマージ処理することにより、記憶装置へのストアデータの反映命令の頻度が下がるので、記憶装置へのストアデータの反映を効率的におこなうことが可能となる。
【０００３】
たとえば、特許文献１には、演算装置から受取ったストアデータをライトバッファに保持してマージ処理に伴う待合せをおこなうとともに、演算装置からの書込み要求の間隔を監視するタイマを設けて、タイマのタイムアウトを検出したときに、かかる待合せの解除をおこなうストアデータ制御技術が開示されている。
【０００４】
【特許文献１】特開２０００−１８１７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、この従来技術を用いた場合、待合せの解除はタイマのタイムアウトを検出した際にのみおこなわれる。このように、待合せの解除条件がタイマのタイムアウトのみであると、タイムアウトを検出するまでは一律に待合せが解除されないため、不要な待合せが多発することにより、記憶装置へのストアデータの反映の効率が悪化してしまうという問題点がある。
【０００６】
たとえば、ライトバッファ上のストアデータがマージ処理に伴う待合せ中である場合に、かかるストアデータのフェッチ処理をおこなう後続のフェッチ命令は、タイマがタイムアウトするまで待たされることになる。
【０００７】
一方で、マージ処理に伴う不要な待合せを回避するために、マージ処理の機会を減少させ、マージ処理の頻度を下げようとすれば、ライトバッファが浪費されるとともに、記憶装置へのストアデータの反映命令が多発することにより、記憶装置へのストアデータの反映の効率が悪化してしまう。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、マージ処理の機会を増加させ、かつ、マージ処理に伴う待合せの解除の機会を増加させる制御をおこない、もってストアデータの記憶装置への反映を効率的におこなうことができるストアデータ制御装置およびストアデータ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明に係るストアデータ制御装置は、ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御装置であって、前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得手段と、前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御手段とを備えたことを特徴とする。
【００１０】
また、本発明に係るストアデータ制御方法は、ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御方法であって、前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得工程と、前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御工程とを含んだことを特徴とする。
【００１１】
この発明によれば、ストアバッファおよび／またはライトバッファのバッファ状態を取得して、状態取得手段が取得したバッファ状態に基づいて、マージ処理に伴う待合せの開始および／または解除を制御するよう構成したので、マージ処理の機会を増加させ、かつ、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００１２】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合であっても、前記ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始することを特徴とする。
【００１３】
この発明によれば、ストアバッファにライトバッファへの転送が可能なストアデータがない場合であっても、ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始するよう構成したので、マージ処理の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００１４】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ライトバッファに前記マージ処理が可能なストアデータがない場合に、該マージ処理に伴う待合せ処理を解除することを特徴とする。
【００１５】
この発明によれば、ライトバッファにマージ処理が可能なストアデータがない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００１６】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする。
【００１７】
この発明によれば、ストアバッファにライトバッファへの転送が可能なストアデータがない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００１８】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、該待合せを解除することを特徴とする。
【００１９】
この発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００２０】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、該待合せを解除することを特徴とする。
【００２１】
この発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００２２】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ストアバッファがストアデータを保持していない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする。
【００２３】
この発明によれば、ストアバッファがストアデータを保持していない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００２４】
また、本発明に係るストアデータ制御装置は、上記の発明において、前記待合せ制御手段は、前記ストアバッファが保持するストアデータおよび前記ライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除することを特徴とする。
【００２５】
この発明によれば、ストアバッファが保持するストアデータおよびライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【００２６】
また、本発明に係るストアデータ制御装置は、前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除することを特徴とする。
【００２７】
この発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができる。
【発明の効果】
【００２８】
本発明によれば、ストアバッファおよび／またはライトバッファのバッファ状態を取得して、状態取得手段が取得したバッファ状態に基づいて、マージ処理に伴う待合せの開始および／または解除を制御するよう構成したので、マージ処理の機会を増加させ、かつ、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００２９】
また、本発明によれば、ストアバッファにライトバッファへの転送が可能なストアデータがない場合であっても、ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始するよう構成したので、マージ処理の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３０】
また、本発明によれば、ライトバッファにマージ処理が可能なストアデータがない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３１】
また、本発明によれば、ストアバッファにライトバッファへの転送が可能なストアデータがない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３２】
また、本発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３３】
また、本発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３４】
また、本発明によれば、ストアバッファがストアデータを保持していない場合に、マージ処理に伴う待合せ処理を解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３５】
また、本発明によれば、ストアバッファが保持するストアデータおよびライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【００３６】
また、本発明によれば、ライトバッファのストアデータがマージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除するよう構成したので、マージ処理に伴う待合せの解除の機会を増加させることができ、もってストアデータの記憶装置への反映を効率的におこなうことができるという効果を奏する。
【発明を実施するための最良の形態】
【００３７】
以下に添付図面を参照して、この発明に係るストアデータ制御装置およびストアデータ制御方法の好適な実施例を詳細に説明する。なお、本実施例では、本発明を中央処理装置に適用した場合について説明する。
【実施例】
【００３８】
まず、本実施例の特徴部分であるストアデータ制御部の構成について説明する。図１は、かかるストアデータ制御部を含む中央処理装置の機能ブロック図である。同図に示すように、本実施例に係る中央処理装置１０は、メモリ制御装置２０を介して、主記憶に接続される。メモリ制御装置２０は、中央処理装置１０の要求に基づいて主記憶からのデータおよび命令のフェッチと主記憶へのデータのストアとを制御する装置である。
【００３９】
中央処理装置１０は、命令処理装置１１、演算装置１２および記憶処理装置１３を有し、この記憶処理装置１３は、さらに、ストアポート１４、フェッチポート１５、一次キャッシュ１６、二次キャッシュ１７およびストアデータ制御部１００を有する。
【００４０】
命令処理装置１１は、主記憶に展開されたプログラムの命令を読取り、これを演算装置１２に実行させる処理装置であり、演算装置１２は、命令処理装置１１の指示により各種演算をおこなう装置である。また、記憶処理装置１３は、メモリ制御装置２０と記憶データの入出力処理をおこなう処理装置である。一次キャッシュ１６および二次キャッシュ１７は、アクセスされる可能性の高い命令やデータを一時的に保持するキャッシュメモリである。
【００４１】
ストアポート１４は、一次キャッシュ１６にデータを書き込む命令であるストア命令を一時的に記憶するバッファであり、フェッチポート１５は、一次キャッシュ１６からデータを読み出す命令であるフェッチ命令を一時的に記憶するバッファである。
【００４２】
また、ストアデータ制御部１００は、ストアポート１４に入力されたストアを一時的に格納するストアバッファ１１０およびライトバッファ１２０を有する。かかるストアは、ストアバッファ１１０内のキューにいったん格納され、状況に応じて、ライトバッファ１２０に転送される。そして、ライトバッファ１２０に格納されたストアは、ライトバッファ１２０内のキューの先頭から順次、一次キャッシュ１６へ書き込まれる。
【００４３】
一方で、ライトバッファ内のキューの末尾は、ストアバッファ１１０のストアとのマージ処理をおこなうための待ちあわせをおこなう。かかるマージ処理をおこなうことにより、一次キャッシュ１６への書込み回数を減少させることができるので、ストアデータを効率的に一次キャッシュ１６へ反映させることが可能となる。しかしながら、マージ処理には、次のストアとの待合せ処理が伴うため、かかる待合せの解除を効率的におこなわないとマージ処理のための無駄な待合せが発生し、ストアデータを速やかに一次キャッシュ１６に反映することができない。
【００４４】
本実施例においては、ストアバッファ１１０およびライトバッファ１２０の状態を取得する手段を設け、取得した状態に基づいてマージ機会を増加させるとともに、取得した状態および待ち時間を制限するタイマ処理などの待合せ解除条件検出処理を設けることにより、待合せ解除をすることとしている。このように、マージ処理に伴う待合せおよび待合せ解除を制御することにより、ストアデータを速やかに一次キャッシュ１６に反映させることができる。なお、本実施例においては、ストアデータ制御部１００を、一次キャッシュ１６へのストアデータの書き出しに適用した場合について説明するが、二次キャッシュ１７や、メモリ制御装置２０へのストアデータの書き出しに、かかるストアデータ制御部１００を適用することもできる。
【００４５】
ストアデータ制御部１００は、上述したマージ処理に伴う待合せおよび待合せ解除を制御するために、ストアバッファ状態取得部１０１、ライトバッファ状態取得部１０２、ストアデータ転送処理部１０３、ライトバッファ出力処理部１０４およびタイマ処理部１０５を有する。
【００４６】
ストアバッファ状態取得部１０１は、ストアバッファ１１０内のキュー状態およびキューに格納されるストアの状態を取得する処理部であり、ライトバッファ状態取得部１０２は、ライトバッファ１２０内のキュー状態およびキューに格納されるストアの状態を取得する処理部である。
【００４７】
ストアデータ転送処理部１０３は、ストアバッファ状態取得部１０１、ライトバッファ状態取得部１０２およびタイマ処理部１０５から情報を取得し、これらの情報に基づいて、ストアデータをストアバッファ１１０からライトバッファ１２０へ転送する処理をおこなう処理部である。また、タイマ処理部１０５は、マージ処理に伴う待合せの時間を制限するタイマ処理をおこなう処理部である。
【００４８】
ここで、ストア命令の処理の手順について説明しておく。まず、ストア命令は、命令処理装置１１で解読され、解読されたストア命令は、記憶処理装置１３に送信される。記憶処理装置１３は、かかるストア命令をストアポート１４およびフェッチポート１５により受取る。
【００４９】
ストア命令を受取ったストアポート１４は有効（Valid）状態となる。また、ストア命令を受取ったフェッチポート１５は、かかるストア命令を記憶処理装置１３内のパイプラインへ投入し、ストア対象領域のキャッシュヒットの有無を確認し、キャッシュミスしていれば、キャッシュラインを一次キャッシュ１６へと登録する処理を実施しておく。この登録処理と並行してＴＬＢ（Translation Look-aside Buffer）を検索し、ストア対象の仮想アドレスを物理アドレスへと変換し、かかる変換結果をストアポート内のデータに反映させる。さらに、ＴＬＢに登録されている仮想アドレスのページ属性からストアアクセスの例外チェックをおこなう。
【００５０】
そして、かかる例外チェックにより取得した例外の有無を、ＳＴＶ（Status Valid）信号を用いて、記憶処理装置１３から命令処理装置１１へと通知する。この通知と前後して命令処理装置１１では、演算処理装置１２でストアデータの準備が整ったならば、かかるストアデータを記憶処理装置１３へと発行するとともに、ストアデータを発行したことをＳＴＤＶ（Store Data Valid）信号により通知する。
【００５１】
ストアデータを受取った記憶処理装置１３は、受取ったストアデータをストアデータのオペランド長およびアライン情報に基づいて中央処理装置１０上でのデータの並びに整列し、ＳＴＤＲ（Sore Data Register）へと格納する。命令処理装置１１が、上述したＳＴＶ信号およびＳＴＤＶ信号の受信を完了すると、かかるストア命令は実行待ち状態となる。
【００５２】
実行待ち状態のストア命令に先行するストア命令、フェッチ命令、分岐命令、演算命令などの、すべての命令の実行が完了したならば、実行待ち状態のストア命令は、実行可能状態となる。そして、実行可能状態となったストア命令について、命令処理装置１１から記憶処理装置１３へとストア許可をあらわすコミット信号を通知する。
【００５３】
コミット信号を受取った記憶処理装置１３は、受取ったコミット信号とともに示されるコミット対象ストアポートをあらわすＩＤ（識別番号）を参照して、指定されたストアポート１４で、コミット信号を受信する。そして、コミット信号を受信したストアポート１４は、ＲＥＡＤＹ状態となり、ストアバッファ１１０からライトバッファ１２０へストアデータの転送が可能となる。
【００５４】
次に、本実施例の特徴部分であるストアデータ制御部１００の処理概要について説明する。図２は、ストアデータ制御処理概要を説明するための説明図である。同図に示すように、ストアバッファ（ＳＴＢ）１１０にいったん保持されたストアデータは、ライトバッファ（ＷＢ）１２０へと転送され、一次キャッシュ１６に書き込まれる。
【００５５】
同図に示したように、ストアバッファ１１０およびライトバッファ１２０は、所定の数のストアデータを格納可能なキューである。ストアバッファ１１０に順次格納されたストアデータは、最も古く格納されたキューを示すＴＯＱ（Top Of Queue）により管理され、ＴＯＱのストアデータが、ライトバッファ１２０への転送対象データとなる。また、ライトバッファ１２０は、最も古く格納されたキューを示すＴＯＱ（Top Of Queue）および最も新しく格納されたキューを示すＢＯＱ（Bottom Of Queue）により管理され、ＢＯＱのストアデータがマージ処理の対象となり、ＴＯＱのストアデータが、一次キャッシュ１６に対してキャッシュ書込み２３０の書込対象データとなる。
【００５６】
ところで、ストアバッファのＴＯＱのデータであるＳＴＢ（ＴＯＱ）１１０ａが、ライトバッファ１２０に転送される際には、ストアデータ転送処理部１０３は、マージ待合せ２１０の場合と、マージ待合せ解除２２０の場合とでライトバッファ１２０内の異なるキューに、ＳＴＢ（ＴＯＱ）１１０ａを転送する。すなわち、マージ処理の待合せをおこなう際のライトバッファ１２０の対象キューはＷＢ（ＢＯＱ）１２０ａであり、待合せを解除する条件を検出した際には、対象キューをＷＢ（ＢＯＱ＋１）１２０ｂに変更する。なお、待合せの解除条件については後述する。
【００５７】
ここで、ライトバッファ１２０の構成を、図３を用いて説明しておく。図３は、ライトバッファ１２０の構成を説明するための説明図である。同図に示すように、ＴＯＱは、複数あるライトバッファ内のキューの中で、最も古く書き込まれたキューを指す。ライトバッファから一次キャッシュ１６への書込みが完了すると、ＴＯＱは次のキューを指すために、＋１加算（インクリメント）される。そして、ＴＯＱがライトバッファ１２０の「ｎ」のキューに達して次のライトバッファのキューを指す際には、ラップアラウンドして「０」のキューを指すことになる。
【００５８】
ＢＯＱは、複数あるライトバッファ１２０のキューの中で、最も新しく書き込まれたキューを指すが、ライトバッファ１２０に空きキューがある場合には、かかる空きキューの中で最もＴＯＱに近いキューを指す。そして、このＢＯＱまたはＢＯＱ＋１が、ストアバッファ１１０のＴＯＱに格納されるストアデータの転送先となる。なお、かかる転送先の切替えは、ストアデータ転送処理部１０３がおこなう。
【００５９】
転送先がＢＯＱとなる場合と、ＢＯＱ＋１となる場合の条件は以下のようになる。すなわち、ライトバッファ１２０のＢＯＱが空である場合には、ＢＯＱが転送先となる。また、ライトバッファ１２０のＢＯＱに、先行するストアデータが格納されており、かつ、このストアデータとストアバッファ１１０のＴＯＱのストアデータとがマージ可能である場合には、同様に、ＢＯＱが転送先となる。一方、ライトバッファ１２０のＢＯＱに、先行するストアデータが格納されており、かつ、このストアデータとストアバッファ１１０のＴＯＱのストアデータとがマージ不可能である場合には、ＢＯＱ＋１が転送先となる。
【００６０】
また、ストアデータ転送処理部１０３が、マージ処理に伴う待合せを解除する条件を検出した際にも、ＢＯＱ＋１が転送先になる。このように、ＢＯＱ＋１が新たな転送先となる場合に、ＢＯＱは次のキューを指すために、＋１加算（インクリメント）される。そして、ＢＯＱがライトバッファ１２０の「ｎ」のキューに達して次のライトバッファのキューを指す際には、ラップアラウンドして「０」のキューを指すことになる。
【００６１】
ストアデータ転送処理部１０３は、ライトバッファのＢＯＱが、ストアデータの一次キャッシュ１６への書込みを実施しないよう制御する。ＢＯＱとＴＯＱが一致しているとき、ＴＯＱのストアデータの一次キャッシュ１６への書込みを開始してから、書込みを完了するまでの間に、かかるストアデータと後続のストア命令とのマージ処理が発生した場合に、後続のストア命令のストアデータが一次キャッシュ１６に反映されずデータ化けを起こすからである。したがって、ライトバッファのＢＯＱからの書込みを禁止するよう制御することによりかかるデータ化けを防止することができる。
【００６２】
また、ストアデータ転送処理部１０３は、ＢＯＱに格納されるデータのみが、マージ対象のキューとなるよう制御する。ＢＯＱ以外に格納されるデータをもマージ対象とすると、ストア命令の実行順序が崩れることになり、ＴＳＯ（Total Store Order）または暗黙のシリアライズと呼ばれる、マルチプロセッサ環境下のストア命令の実行順序を保障することができずデータ化けを起こすからである。したがって、ＢＯＱに格納されるデータのみをマージ対象のキューとすることによりかかるデータ化けを防止することができる。
【００６３】
このようにして、ストアバッファ１１０のストアデータは、ライトバッファ１２０のＢＯＱに格納される。そして、ＢＯＱがインクリメントされ、ＢＯＱでなくなったキューのストアデータは、ＴＯＱとなった際に、一次キャッシュ１６へ書き込まれる。
【００６４】
次に、本実施例の特徴部分であるストアデータ制御部１００の処理手順について説明する。図４は、ストアデータ制御処理の処理手順を示すフローチャートである。
【００６５】
ストアデータ転送処理部１０３は、ライトバッファ１２０のＢＯＱに有効なストアデータが格納されている場合に、マージ処理に伴う待合せ処理を開始する。そして、ライトバッファ１２０のＢＯＱをマージ対象とする（ステップＳ１０１）。かかる待合せは、ライトバッファ１２０のＢＯＱを維持すること（インクリメントしないこと）によりおこなわれる。
【００６６】
そして、ストアデータ転送処理部１０３は、ストアバッファ状態取得部１０１、ライトバッファ状態取得部１０２およびタイマ処理部１０３から取得した情報に基づいて、待合せ解除条件の検出処理をおこなう（ステップＳ１０２）。そして、かかる検出処理の結果が「待合せ解除」である場合には（ステップＳ１０３肯定）、ライトバッファ１２０のＢＯＱをインクリメントする（ステップＳ１０４）。すなわち、マージ処理に伴う待合せの解除は、待合せ解除条件検出処理（ステップＳ１０２）が、後述する待合せ解除条件を検出した場合におこなわれる。
【００６７】
一方、かかる検出処理の結果が「待合せ継続」である場合には（ステップＳ１０３否定）、再度、ステップＳ１０２以降の処理をおこなう。すなわち、待合せ処理中には、待合せを解除する条件の発生を継続して監視し、待合せ解除条件を検出するとただちに後続のストア命令との待合せを解除することで、無駄な待合せがおこなわれることを防止する。
【００６８】
ＢＯＱをインクリメントすることによりマージ処理の対象から外されたキューは、一次キャッシュ１６への書込み対象のキューとして、かかる書込みに関する一連の処理を開始することになる。
【００６９】
次に、図４に示した待合せ解除条件検出処理の処理手順について図５を用いて説明する。図５は、待合せ解除条件検出処理の処理手順を示すフローチャートである。同図に示すように、待合せ解除条件は、Ｓ２０１〜Ｓ２０７の７つである。なお、同図においては説明の都合上、Ｓ２０１〜Ｓ２０７を順次実行するよう記載しているが、これらのステップの順序を限定するものではない。また、これらのステップを並列的に実行することもできる。
【００７０】
まず、待合せ解除条件検出処理においては、ライトバッファ１２０のＢＯＱがマージ不可能なストア命令であるか否かを判定する（ステップＳ２０１）。具体的には、ライトバッファ状態取得部１０２により、かかるＢＯＱに格納されているストアデータを参照し、このストアデータに対応するストア命令がマージ不可能なストア命令である場合には（ステップＳ２０１肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかるストア命令がマージ可能なストア命令である場合には（ステップＳ２０１否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７１】
つづいて、ストアバッファ１１０のＴＯＱがマージ不可能なストア命令であるか否かを判定する（ステップＳ２０２）。具体的には、ストアバッファ状態取得部１０１により、かかるＴＯＱに格納されているストアデータを参照し、このストアデータに対応するストア命令がマージ不可能なストア命令である場合には（ステップＳ２０２肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかるストア命令がマージ可能なストア命令である場合には（ステップＳ２０２否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７２】
つづいて、ライトバッファ１２０のＢＯＱのストア命令により後続のフェッチ命令が実行を阻害されているか否かを判定する（ステップＳ２０３）。具体的には、ライトバッファ状態取得部１０２により、かかるＢＯＱに格納されているストアデータを参照し、このストアデータに対応するストア命令により、処理を待たされている後続のフェッチ命令がある場合には（ステップＳ２０３肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかるフェッチ命令が実行を阻害されていない場合には（ステップＳ２０３否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７３】
つづいて、ライトバッファ１２０のＢＯＱのストア命令により他の中央処理装置の吐き出し要求の実行が阻害されているか否かを判定する（ステップＳ２０４）。具体的には、ライトバッファ状態取得部１０２により、かかるＢＯＱに格納されているストアデータを参照し、このストアデータに対応するストア命令により、実行を阻害されている他の中央処理装置の吐き出し要求がある場合には（ステップＳ２０４肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかる吐き出し要求の実行が阻害されていない場合には（ステップＳ２０４否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７４】
つづいて、ストアバッファ１１０のＴＯＱが空であるか否かを判定する（ステップＳ２０５）。具体的には、ストアバッファ状態取得部１０１により、かかるＴＯＱを参照し、このキューにストアデータが格納されていない場合には（ステップＳ２０５肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかるキューにストアデータが格納されている場合には（ステップＳ２０５否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７５】
つづいて、ストアバッファ１１０のＴＯＱおよびライトバッファ１２０のＢＯＱに格納されているストアデータが示すアドレス位置がマージ不可の関係にあるか否かを判定する（ステップＳ２０６）。具体的には、ストアバッファ状態取得部１０１およびライトバッファ状態取得部１０２により、かかるＴＯＱおよびかかるＢＯＱを参照し、それぞれのキューに格納されているストアデータが示すアドレス位置がマージ不可の関係にある場合には（ステップＳ２０６肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。一方、かかるアドレス位置がマージ可能な関係にある場合には（ステップＳ２０６否定）、引き続き、待合せ解除条件の検出をおこなう。
【００７６】
つづいて、ストアバッファ１１０のＴＯＱに、ライトバッファ１２０に転送可能な状態（上述した、ＲＥＡＤＹ状態）のストアデータがないまま所定時間継続しているか否かを判定する（ステップＳ２０７）。具体的には、ストアバッファ状態取得部１０１により、かかるＴＯＱを参照するとともに、タイマ処理部１０５により、待合せ開始からの経過時間を参照することにより、ライトバッファ１２０に書込み可能なストアデータがないまま所定時間が経過したことを検出した場合には（ステップＳ２０７肯定）、「待合せ解除」を戻り値に設定し（ステップＳ２０９）、リターンする。
【００７７】
そして、上述したＳ２０１〜Ｓ２０７のすべてが否定である場合、すなわち、待合せ解除条件を検出しなかった場合には、「待合せ継続」を戻り値に設定し（ステップＳ２０８）リターンする。
【００７８】
上述してきたように、本実施例では、ストアバッファおよびライトバッファの状態を取得する手段を設け、取得した状態に基づいてマージ機会を増加させるとともに、取得した状態および待ち時間を制限するタイマ処理などの待合せ解除条件検出処理を設けることにより、待合せ解除をするととしたので、ストアデータの記憶装置への反映を効率的におこなうことができる。
【００７９】
（付記１）ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御装置であって、
前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得手段と、
前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御手段と
を備えたことを特徴とするストアデータ制御装置。
【００８０】
（付記２）前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合であっても、前記ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始することを特徴とする付記１に記載のストアデータ制御装置。
【００８１】
（付記３）前記待合せ制御手段は、前記ライトバッファに前記マージ処理が可能なストアデータがない場合に、該マージ処理に伴う待合せ処理を解除することを特徴とする付記１または２に記載のストアデータ制御装置。
【００８２】
（付記４）前記待合せ制御手段は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする付記１、２または３に記載のストアデータ制御装置。
【００８３】
（付記５）前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、該待合せを解除することを特徴とする付記１〜４のいずれか一つに記載のストアデータ制御装置。
【００８４】
（付記６）前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、該待合せを解除することを特徴とする付記１〜５のいずれか一つに記載のストアデータ制御装置。
【００８５】
（付記７）前記待合せ制御手段は、前記ストアバッファがストアデータを保持していない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする付記１〜６のいずれか一つに記載のストアデータ制御装置。
【００８６】
（付記８）前記待合せ制御手段は、前記ストアバッファが保持するストアデータおよび前記ライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除することを特徴とする付記１〜７のいずれか一つに記載のストアデータ制御装置。
【００８７】
（付記９）前記待合せ制御手段は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除することを特徴とする付記１〜８のいずれか一つに記載のストアデータ制御装置。
【００８８】
（付記１０）ストアデータを一時的に保持するストアバッファおよびライトバッファを有し、前記ストアバッファから前記ライトバッファへ前記ストアデータを転送させる際に、該ストアデータのマージ処理をおこなうストアデータ制御方法であって、
前記ストアバッファおよび／または前記ライトバッファのバッファ状態を取得する状態取得工程と、
前記状態取得手段が取得した前記バッファ状態に基づいて、前記マージ処理に伴う待合せの開始および／または解除を制御する待合せ制御工程と
を含んだことを特徴とするストアデータ制御方法。
【００８９】
（付記１１）前記待合せ制御工程は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合であっても、前記ストアバッファが保持するストアデータの転送が可能な状態になったならば、マージ処理に伴う待合せを開始することを特徴とする付記１０に記載のストアデータ制御方法。
【００９０】
（付記１２）前記待合せ制御工程は、前記ライトバッファに前記マージ処理が可能なストアデータがない場合に、該マージ処理に伴う待合せ処理を解除することを特徴とする付記１０または付記１１に記載のストアデータ制御方法。
【００９１】
（付記１３）前記待合せ制御工程は、前記ストアバッファに前記ライトバッファへの転送が可能なストアデータがない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする付記１０、１１または１２に記載のストアデータ制御方法。
【００９２】
（付記１４）前記待合せ制御工程は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、後続のフェッチ命令の実行が阻害されている場合に、該待合せを解除することを特徴とする付記１０〜１３のいずれか一つに記載のストアデータ制御方法。
【００９３】
（付記１５）前記待合せ制御工程は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せ中であるために、他の中央処理装置の吐き出し要求の実行が阻害されている場合に、該待合せを解除することを特徴とする付記１０〜１４のいずれか一つに記載のストアデータ制御方法。
【００９４】
（付記１６）前記待合せ制御工程は、前記ストアバッファがストアデータを保持していない場合に、前記マージ処理に伴う待合せ処理を解除することを特徴とする付記１０〜１５のいずれか一つに記載のストアデータ制御方法。
【００９５】
（付記１７）前記待合せ制御工程は、前記ストアバッファが保持するストアデータおよび前記ライトバッファが保持するストアデータのアドレスがマージ可能な位置関係にない場合に、マージ処理に伴う待合せを解除することを特徴とする付記１０〜１６のいずれか一つに記載のストアデータ制御方法。
【００９６】
（付記１８）前記待合せ制御工程は、前記ライトバッファのストアデータが前記マージ処理に伴う待合せを所定時間継続している場合に、マージ処理に伴う待合せを解除することを特徴とする付記１０〜１７のいずれか一つに記載のストアデータ制御方法。
【産業上の利用可能性】
【００９７】
以上のように、本発明に係るストアデータ制御装置およびストアデータ制御方法は、ストアバッファとライトバッファとの間のマージ制御に有用であり、特に、効率的なマージ制御が必要な場合に適している。
【図面の簡単な説明】
【００９８】
【図１】本実施例に係るストアデータ制御部の機能ブロック図である。
【図２】本実施例に係るストアデータ制御処理の概要を説明するための説明図である。
【図３】本実施例に係るライトバッファの構成を説明するための説明図である。
【図４】本実施例に係るストアデータ制御処理の処理手順を示すフローチャートである。
【図５】図４に示した待合せ解除条件検出処理の処理手順を示すフローチャートである。
【符号の説明】
【００９９】
１０    中央処理装置
１１    命令処理装置
１２    演算装置
１３    記憶処理装置
１４    ストアポート
１５    フェッチポート
１６    一次キャッシュ
１７    二次キャッシュ
２０    メモリ制御装置
１００    ストアデータ制御部
１０１    ストアバッファ状態取得部
１０２    ライトバッファ状態取得部
１０３    ストアデータ転送処理部
１０４    ライトバッファ出力処理部
１１０    ストアバッファ（ＳＴＢ）
１１０ａ  ＳＴＢ（ＴＯＱ）
１２０    ライトバッファ（ＷＢ）
１２０ａ  ＷＢ（ＢＯＱ）
１２０ｂ  ＷＢ（ＢＯＱ＋１）
１２０ｃ  ＷＢ（ＴＯＱ）
２１０    マージ待合せ
２２０    マージ待合せ解除
２３０    キャッシュ書込み
【図１】
2006048163.tif 000003
【図２】
2006048163.tif 000004
【図３】
2006048163.tif 000005
【図４】
2006048163.tif 000006
【図５】
2006048163.tif 000007