(57)【特許請求の範囲】
【請求項１】
主記憶部に対して発行するリクエストを保持するロードストアキューの制御方法であって、
前記ロードストアキュー内の前記リクエストのうちストアリクエストを、前記ロードストアキューに対して新たに発行されるリクエストの個数が所定の個数となるまでの間前記ロードストアキュー内に保持し、
当該保持されたストアリクエストに後続するロードリクエストの前記主記憶部への前記リクエストの発行順序を、当該保持されたストアリクエストよりも先に並び替える
ロードストアキューの制御方法。
【請求項２】
前記ストアリクエストに後続して発行される前記リクエストの個数をカウントし、当該カウント値が所定の値となるまでの間、前記ロードストアキュー内に前記ストアリクエストを保持する
ことを特徴とする請求項１記載のロードストアキューの制御方法。
【請求項３】
前記ロードストアキュー内の第１のリクエストのアドレスと第２のリクエストのアドレスが前記主記憶部において同一の処理単位に含まれるアドレスである場合には、前記第１のリクエストを前記主記憶部に発行する際に、前記第２のリクエストを併せて前記主記憶部へと発行する
ことを特徴とする請求項１又は２記載のロードストアキューの制御方法。
【請求項４】
前記第１のリクエストと前記第２のリクエストは共にロードリクエストか、又は、共にストアリクエストである
ことを特徴とする請求項３記載のロードストアキューの制御方法。
【請求項５】
前記処理単位は同一ロー単位であり、当該処理単位に含まれるアドレスが同一のローアドレスに含まれるアドレスである
ことを特徴とする請求項３又は４記載のロードストアキューの制御方法。
【請求項６】
前記処理単位は同一ランク単位であり、当該処理単位に含まれるアドレスが同一のランクアドレスに含まれるアドレスである
ことを特徴とする請求項３又は４記載のロードストアキューの制御方法。
【請求項７】
前記ロードストアキュー内の第１のストアリクエストと第２のストアリクエストについて、当該第２のストアリクエストのアドレスと前記第１のストアリクエストのアドレスを比較し、前記第２のストアリクエストのアドレスが前記第１のストアリクエストのアドレスと同一である場合には、前記第２のストアリクエストを前記第１のストアリクエストにマージする
ことを特徴とする請求項１又は２記載のロードストアキューの制御方法。
【請求項８】
前記主記憶部をＤＲＡＭで構成する
ことを特徴とする請求項１乃至７いずれか１項記載のロードストアキューの制御方法。
【請求項９】
前記主記憶部をシンクロナスＤＲＡＭで構成する
ことを特徴とする請求項１乃至７いずれか１項記載のロードストアキューの制御方法。
【請求項１０】
前記主記憶部をＤＲＡＭ又はシンクロナスＤＲＡＭを用いたＤＩＭＭ若しくはＳＩＭＭで構成する
ことを特徴とする請求項１乃至７いずれか１項記載のロードストアキューの制御方法。
【請求項１１】
主記憶部に対して発行するリクエストを保持するロードストアキューと、当該ロードストアキューを制御する制御部と、を備えたロードストアキューの制御システムであって、
前記制御部は、
前記ロードストアキュー内の前記リクエストのうちストアリクエストを、前記ロードストアキューに対して新たに発行されるリクエストの個数が所定の個数となるまでの間前記ロードストアキュー内に保持するストアリクエスト制御手段と、
当該保持されたストアリクエストに後続するロードリクエストの前記主記憶部への前記リクエストの発行順序を、当該保持されたストアリクエストよりも先に並び替えるロードリクエスト制御手段と、を備える
ロードストアキューの制御システム
【請求項１２】
前記ストアリクエスト制御手段は、
前記ストアリクエストに後続して発行される前記リクエストの個数をカウントするリクエスト計測手段を備え、
前記リクエスト計測手段によりカウントされたカウント値が所定の値となるまでの間、前記ロードストアキュー内に前記ストアリクエストを保持する
ことを特徴とする請求項１１記載のロードストアキューの制御システム。
【請求項１３】
前記制御部は、
前記ロードストアキュー内の第１のリクエストのアドレスと第２のリクエストのアドレスが前記主記憶部において同一の処理単位に含まれるアドレスであるか否かを判定するアドレス判定手段を備え、
前記アドレス判定手段による判定の結果、前記第１のリクエストのアドレスと前記第２のリクエストのアドレスが前記主記憶部において同一の処理単位に含まれるアドレスである場合には、前記第１のリクエストを前記主記憶部に発行する際に、前記第２のリクエストを併せて前記主記憶部へと発行する
ことを特徴とする請求項１１又は１２記載のロードストアキューの制御システム。
【請求項１４】
前記第１のリクエストと前記第２のリクエストは共にロードリクエストか、又は、共にストアリクエストである
ことを特徴とする請求項１３記載のロードストアキューの制御システム。
【請求項１５】
前記処理単位は同一ロー単位であり、当該処理単位に含まれるアドレスが同一のローアドレスに含まれるアドレスである
ことを特徴とする請求項１３又は１４記載のロードストアキューの制御システム。
【請求項１６】
前記処理単位は同一ランク単位であり、当該処理単位に含まれるアドレスが同一のランクアドレスに含まれるアドレスである
ことを特徴とする請求項１３又は１４記載のロードストアキューの制御システム。
【請求項１７】
前記制御部は、
前記ロードストアキュー内の第１のストアリクエストと第２のストアリクエストについて、当該第２のストアリクエストのアドレスと前記第１のストアリクエストのアドレスを比較し、当該第２のストアリクエストのアドレスが、前記第１のストアリクエストのアドレスと同一である場合には、当該第２のストアリクエストを前記第１のストアリクエストにマージする
ことを特徴とする請求項１１又は１２記載のロードストアキューの制御システム。
【請求項１８】
前記主記憶部をＤＲＡＭで構成する
ことを特徴とする請求項１１乃至１７いずれか１項記載のロードストアキューの制御システム。
【請求項１９】
前記主記憶部をシンクロナスＤＲＡＭで構成する
ことを特徴とする請求項１１乃至１７いずれか１項記載のロードストアキューの制御システム。
【請求項２０】
前記主記憶部をＤＲＡＭ又はシンクロナスＤＲＡＭを用いたＤＩＭＭ若しくはＳＩＭＭで構成する
ことを特徴とする請求項１１乃至１７いずれか１項記載のロードストアキューの制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶部に対して発行するリクエストを保持するロードストアキューの制御方法に関し、特にキャッシュと主記憶部との間に設けられたロードストアキューの制御方法に関する。
【背景技術】
【０００２】
近年、プロセッサからキャッシュへとロード・ストアリクエストを発行する際、或いはキャッシュから主記憶部へとロード・ストアリクエストを発行する際に、アクセスレイテンシ、データ転送性能差を隠蔽するためのロードストアキューが実装されてきた。ロードストアキューは、プロセッサとキャッシュ、或いは、キャッシュと主記憶部の中間位置に設けられ、その制御方法についてこれまでにも多くの工夫がなされてきた。
【０００３】
ロードストアキューに関するアクセスレイテンシ、データ転送性能を向上させる技術としては、例えば以下のような技術が良く知られている。
（１）ストアキュー内に発行待ちとなっているリクエストと同一アドレスの後続ロードリクエストが存在する場合には、キャッシュ若しくは主記憶部へとロードアクセスリクエストを発行する代わりに、発行待ちとなっているストアキューのデータをロードアクセス結果としてリプライすることにより、短アクセスタイム化を計っている。
（２）また、処理時間のかかるロードリクエストを、先行するストアリクエストより先に発行するなどの工夫がなされている。
（３）さらに、先行ストアリクエストと同一アドレスの後続リクエストが存在する場合には、ストアデータの置き換え、或いはマージを行い、ストアリクエストの圧縮を行っている。そして、これらの機能の高速化手法も提案されている。
【０００４】
また、プロセッサとキャッシュとの間に実装されるロードストアキューに関する技術として、特許文献１では、ストアリクエストが発生したにも関わらずそのストアデータが揃わない場合に、先行ストアリクエストと後続ロードリクエストが同一アドレスでない場合、ロードストアバッファにおいて順番を入れ替え、ロードリクエストを先に発行する主記憶アクセス制御方式を提供している。即ち、特許文献１に開示される主記憶アクセス制御方式は、ストアリクエストが別要因で遅れてしまい、アドレスが一致しないロードリクエストを優先して主記憶部へと発行するものである。特許文献２では、同一アドレスのストアリクエストをマージするキャッシュメモリアクセスシステムが提案されている。特許文献３及び４では、同一アドレスを有するストアリクエスト後のロードリクエストについて、その高速化手法が提案されている。
【特許文献１】特開平０６−１３１２３９号公報
【特許文献２】特開平０１−０５０１３９号公報
【特許文献３】特開２０００−２５９４１２号公報
【特許文献４】特開２００２−２８７９５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したいずれの技術もプロセッサとキャッシュとの間に実装されるロードストアキューに関するものであり、主記憶部であるＤＲＡＭ、シンクロナスＤＲＡＭ及びそれらを用いたＤＩＭＭやＳＩＭＭの特性を利用することで、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現する内容ではない。
【０００６】
プロセッサとキャッシュとの間に実装されるロードストアキューに関しては、プロセッサから発行されるリクエストは主記憶部に対して直接アクセスを伴うものではないため、主記憶部におけるリードサイクルとライトサイクル間のバス切替サイクルについて問題とはならない。一方、キャッシュと主記憶部との間に実装されるロードストアキューに関しては、主記憶部であるＤＲＡＭ、シンクロナスＤＲＡＭが双方向バスである場合には、リードサイクルとライトサイクルの間にはバス切替サイクルを必要とする。このため、ロードリクエストからストアリクエスト、或いはストアリクエストからロードリクエストへの切替に際しては、バス競合回避のために、１サイクル以上の空きサイクルを設けなければならない。例えば、リクエストが、ロードリクエスト、ストアリクエスト、ロードリクエスト、ストアリクエストという順番で交互に発行される場合には、空きサイクルが毎サイクル発生してしまうなど、空きサイクルの発生により、アクセスレイテンシ、データ転送が低下するという課題がある。
【０００７】
本発明の目的は、上記知見に基づいてなされたものであって、キャッシュと主記憶部との間に実装されるロードストアキューについて、リードサイクル及びライトサイクル間のバス切替における空きサイクルの発生を抑制して、主記憶部に対して効率的にリクエストを発行することで、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現するロードストアキューの制御方法及び制御システムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係るロードストアキューの制御方法の一態様は、主記憶部に対して発行するリクエストを保持するロードストアキューの制御方法であって、前記ロードストアキュー内における前記リクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。
【０００９】
また、本発明に係るロードストアキューの制御システムの一態様は、主記憶部に対して発行するリクエストを保持するロードストアキューと、当該ロードストアキューを制御する制御部と、を備えたロードストアキューの制御システムであって、前記制御部は、前記ロードストアキュー内における前記リクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。
【発明の効果】
【００１０】
本発明によれば、キャッシュと主記憶部との間に実装されるロードストアキューについて、主記憶部に対して効率的にリクエストを発行することで、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現するロードストアキューの制御方法及び制御システムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡潔化がなされている。各図面において同一の構成又は機能を有する構成要素及び相当部分には、同一の符号を付し、その説明を省略する。
【００１２】
図１は、本発明の各実施形態のロードストアキュー制御方法の共通した全体概念図である。ロードストアキュー１０は、キャッシュ２０と主記憶部３０の間に実装されている。ロードストアキュー１０は主記憶部３０に対して発行するリクエストを保持する。尚、ロードストアキュー１０は主記憶部３０に対してリクエストを直接発行するロードストアキューであればよく、ロードストアキュー１０に対してリクエストを発行する装置はキャッシュ２０に限定されない。ロードストアキューは、図示しないプロセッサからリクエストを直接発行されるロードストアキューであってもよい。
【００１３】
キャッシュ２０はロードストアキュー１０に対してリクエスト５０を新たに発行する。リクエスト５０は、ロードリクエスト又はストアリクエストのいずれのリクエストであるかを示すリクエスト種類情報（ＬＤ／ＳＴ４１）と、リクエストで使用するデータを指定するアドレス４２と、主記憶部３０に格納するストアデータ４８と、を含む。
【００１４】
ロードストアキュー１０は、主記憶部３０に対するリクエストを実際に発行するリクエストキュー１１と、ストアデータ４８を保持するストアデータキュー１２と、ロードリクエストに対するリプライ情報（ＬＤリクエストリプライ情報４９）を保持するリプライキュー１３と、を含む。尚、図示は省略するが、ロードストアキュー１０は、ロードデータを保持するロードキューを更に備えていてもよい。
【００１５】
ロードストアキューの制御方法は、ランダムに発生するロードリクエスト及びストアリクエストを、ロードストアキュー１０内でそのリクエスト順序を並び替え、連続したロードリクエストと連続したストアリクエストとなるように制御する。このため、キャッシュ２０からロードストアキュー１０へと新たに発行されたリクエスト５０に対して制御情報４３を付与し、ロードストアキュー１０内におけるリクエストの順序を並び替える。
【００１６】
ロードストアキュー１０内のキューについて、主記憶部３０により近いキューを上位キューとし、ロードストアキュー１０に新たに発行されたリクエストは、ロードストアキュー１０内において上位キューへと移動する。
【００１７】
ロードストアキューの制御方法は、ロードストアキュー１０内でその順序を並び替えたリクエストを、主記憶部３０に対して発行する。リクエストがストアリクエストである場合には、ストアデータ４８を主記憶部３０に転送し、指定されたアドレス４２に格納する。リクエストがロードリクエストである場合には、主記憶部３０からロードストアキュー１０に対して、ロードデータとロードリクエストに関するLDリクエストリプライ情報４９が転送される。リクエストキュー11は、同一アドレスのロードがあった場合、１つのリクエストに圧縮して主記憶部３０にリクエストされるが、LDリクエストリプライ情報４９は、圧縮前のロードリクエスト情報を記憶している。主記憶部３０からのロードデータは、LDリクエストリプライ情報と照合され、キャッシュ２０からのロードリクエスト毎にリプライを返す。
【００１８】
尚、ロードストアキュー１０のリクエストキュー１１及びリプライキュー１３は、例えばフリップフロップ（ＦＦ）で構成することができ、ストアデータキュー１２はランダムアクセスメモリ（ＲＡＭ）で構成することができる。主記憶部３０は、ＤＲＡＭやシンクロナスＤＲＡＭ（ＳＤＲＡＭ）で構成され、これらＤＲＡＭを用いたＤＩＭＭやＳＩＭＭにより構成してもよい。
【００１９】
図２はロードストアキュー内におけるリクエストキューの制御内容を説明するための図である。リクエストキュー１１内に保持されたリクエストの制御情報４３は、リクエストの有効性を示す有効情報（Ｖ４４）と、ストアｗａｉｔカウント（ＳＴｗａｉｔ４６）と、ストアｗａｉｔ  ｖａｌｉｄ（ＳＴｗａｉｔＶ４５）と、近接アドレスフラグコード４７と、を含む。
【００２０】
ＳＴｗａｉｔ４６及びＳＴｗａｉｔＶ４５は、所定の条件を満足するまでの間、ロードストアキュー１０内のストアリクエストをロードストアキュー１０内に保持するように制御するための制御情報である。例えば所定の条件としては、ストアリクエストに後続するリクエストの個数に応じて制御することができる。
【００２１】
より具体的には、ストアリクエストに後続して発行されるリクエストの個数をＳＴｗａｉｔ４６を用いてカウントし、当該カウント値が規定回数となった場合には、ＳＴｗａｉｔＶ４５を規定の値に設定する。ＳＴｗａｉｔＶ４５が規定の値となった場合には、そのストアリクエストを主記憶部３０に対して発行するように制御することができる。一方、ＳＴｗａｉｔＶ４５が規定の値となるまでの間は、そのストアリクエストを主記憶部３０に対して発行せずに、ロードストアキュー１０内に保持するように制御することができる。
【００２２】
このように、ロードストアキュー１０に対して新たに発行されるリクエストの個数が所定の個数となるまでの間、ロードストアキュー１０内にストアリクエストを保持することで、先行するストアリクエストと、同じアドレスの後続ストアリクエストがあった場合、ロードストアキュー１０内により多くのストアリクエストを滞留させることができるため、効率よくストアデータをマージすると共に、ストアリクエスト毎に保持する時間を変えることにより、ストアリクエストとロードリクエストを分離して主記憶部３０に発行することができる。
【００２３】
近接アドレスフラグコード４７は、主記憶部３０において予め定めたアドレスの処理単位に基づいて、ロードストアキュー１０内のリクエストを分類するための制御情報である。主記憶部３０におけるアドレスは予め複数の処理単位に分割され、近接アドレスフラグコード４７は、それら処理単位のいずれかを示す識別情報である。ロードストアキュー１０内のリクエストに近接アドレスフラグコード４７を付与することで、リクエストをアドレスに応じて分類して管理することができる。例えば、同一のローアドレスを有するリクエストに対して同一の近接アドレスフラグコード４７を付与し、同一のランクアドレスを有するリクエストに同一の近接アドレスフラグコード４７を付与することができる。
【００２４】
より具体的には、ロードストアキューの制御方法は、ロードストアキュー１０内のリクエストと新たに発行されるリクエストをそのアドレスについて互いに比較し、リクエストを近接アドレスフラグコード４７に応じて分類する。そして、ロードストアキュー１０内のリクエストを主記憶部３０へと発行する際には、リクエストのうち同一の近接アドレスフラグコード４７を有するリクエストをまとめて連続して主記憶部３０へと発行する。例えばメモリリクエスト選択ユニット（ＭＲＳＵ１５）によって、ロードリクエストを主記憶部３０へと発行する場合には、同一の近接フラグコード４７を有するロードストアキュー１０内のロードリクエストを選択した上で、それらロードリクエストを全て連続して発行するようにマルチプレクサを制御することができる。
【００２５】
また、ストアリクエストを主記憶部３０へと発行する場合には、ＳＴｗａｉｔＶ４５が規定の値となったストアリクエストを主記憶部３０へとまず発行した後、同一の近接アドレスフラグコード４７を有するストアリクエストを連続して発行するように制御することができる。尚、ストアリクエストによっては、ＳＴｗａｉｔＶ４５が規定の値となる前に発行するように制御してもよいし、ＳＴｗａｉｔＶ４５が規定の値となったストアリクエストから常に選択して発行するように制御することもできる。
【００２６】
さらにまた、ロードストアキューの制御方法は、同一アドレスリクエスト制御部１４によって、同一のアドレスを有するリクエストについて下記（ｉ）乃至（ｉｉｉ）で説明する制御を実行することができる。
【００２７】
（ｉ）ロードストアキュー１０内において、先行ロードリクエストと後続ロードリクエストのアドレスが同一であった場合には、主記憶部３０に対するロードリクエストを１つにする。より具体的には、新規に発行されたロードリクエストのアドレスとロードストアキュー１０内の全てのロードリクエストのアドレスとを比較し、同一のアドレスを有するロードリクエストが存在する場合には、リクエストキュー１１には１つのロードリクエストのみをキューイングし、リプライキュー１３には同一のアドレスを有する全てのロードリクエストの個数分のＬＤリクエストリプライ情報４９がキューイングされる。尚、本制御機能は一般的にキャッシュ２０内に実装されることもあるが、ロードストアキュー１０のリクエスト元がキャッシュ２０ではない場合には、ロードストアキュー１０に実装してもよい。
【００２８】
（ｉｉ）先行ストアリクエストと後続ストアリクエストのアドレスが同一であった場合には、それらストアリクエストのストアデータをマージする。より具体的には、ロードストアキュー１０内の全てのストアリクエストについて、先行するストアリクエストと後続ストアリクエストのアドレスを比較し、同一のアドレスを有するストアリクエストが存在する場合には、後続ストアリクエストのストアデータ４８を先行ストアリクエストのストアデータ４８にマージする。この場合、リクエストキュー１１には、１つのストアリクエストのみがキューイングされ、ストアデータキュー１２には、マージされた１つのストアデータ４８が保持される。
【００２９】
（ｉｉｉ）先行ストアリクエストと後続ロードリクエストのアドレスが同一であった場合には、ストアデータキュー１２に保持されたストアデータ４８の内容を後続ロードリクエストのデータとしてリプライする。より具体的には、新規に発行されたロードリクエストのアドレスとロードストアキュー１０内の全てのストアリクエストのアドレスとを比較し、同一のアドレスを有するストアリクエストが存在する場合には、ロード結果として、ストアデータキュー１２に保持されたストアデータ４８の内容をキャッシュにリプライする。
【００３０】
実施の形態１．
実施の形態１では、ロードストアキューの制御方法は、ロードストアキュー１０内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。図３は、本実施形態のロードストアキューの制御方法が、ロードストアキュー内のリクエストを制御する手順の一例を示すフローチャートである。図３に示すようにステップＳ１０３乃至Ｓ１０７において、新規発行されたロードリクエストの順序を制御する。また、ステップＳ１０８乃至Ｓ１１７において、新規発行されたストアリクエストをロードストアキュー１０内に待機させると共に、その順序を制御する。以下、図３を参照しながらロードストアキューの制御方法について詳細に説明する。尚、ロードリクエストと同一アドレスの先行ストアリクエストがリクエストキュー上にあった場合で、ロードデータの一部のデータがストアデータとして存在しないような場合に、当該ストアリクエストのストアデータをロードリクエストのデータとしてキャッシュにリプライできないとき、ストアリクエストは規定回数待つことなしに、ロードリクエストに先立ってストアリクエストを主記憶部に発行しなければならないが、当該制御は、本発明の本質ではないため、記述していない。また、実施の形態１では、リクエストキューで、ストアリクエストの直上位キューにあるのがストアリクエストであった場合で、当該直上位キューが主記憶部に発行された場合には、ストアリクエストの発行待ちをせずに主記憶部へ発行する制御の場合を示している。
【００３１】
まず、ロードストアキューの制御方法は、新規発行されたリクエストの有効情報Ｖ４４と、ＳＴｗａｉｔＶ４５と、ＳＴｗａｉｔ４６の値を初期化する（Ｖ＝１，ＳＴｗａｉｔＶ＝０，ＳＴｗａｉｔ＝０）（ステップＳ１０１）。次いで、リクエスト種類情報（ＬＤ／ＳＴ４１）より、リクエストがロードリクエストであるか否かを判定する（ステップＳ１０２）。
【００３２】
ステップＳ１０２における判定の結果、リクエストがロードリクエストでない場合（即ちストアリクエストである場合）には、ステップＳ１０８へと進む。一方、リクエストがロードリクエストである場合には、ロードストアキュー１０内の上位キューに有効なリクエスト（ここでは、Ｖ＝１のリクエスト）が存在するか否かを判定する（ステップＳ１０３）。即ち、ロードストアキュー１０内に先行する有効なリクエストが存在するか否かを確認する。
【００３３】
ステップＳ１０３における判定の結果、上位キューに有効なリクエストが存在しない場合には、ステップＳ１１８へと進む。一方、上位キューに有効なリクエストが存在する場合には、リクエストが最上位キューに位置するものであるか否かを更に判定する（ステップＳ１０４）。即ち、リクエストが主記憶部３０に対して次に発行対象となるリクエストであるか否かを確認する。
【００３４】
ステップＳ１０４における判定の結果、リクエストが最上位キューに位置するものである場合にはステップＳ１１８へと進む。一方、リクエストが最上位キューに位置するものではない場合には、上位キューのリクエストが全てストアリクエストであるか否かを更に判定する（ステップＳ１０５）。即ち、ロードリクエストに対して先行するリクエストが、全てストアリクエストであるか否かを確認する。
【００３５】
ステップＳ１０５における判定の結果、上位キューのリクエストが全てストアリクエストである場合にはステップＳ１１８へと進む。一方、上位キューのリクエストが全てストアリクエストでない場合には、直上キューのリクエストが有効なリクエスト（ここでは、Ｖ＝１のリクエスト）であるか否かを更に判定する（ステップＳ１０６）。即ち、ロードストアキュー１０内において、直前に先行する有効なリクエストが存在するか否かを確認する。
【００３６】
ステップＳ１０６における判定の結果、直上キューのリクエストが有効なリクエストである場合には再びステップＳ１０６へと戻る。即ち、ロードストアキュー１０内において、直前に先行する有効リクエストが存在する場合には、その先行するリクエストが無効となるまでの間、待機する。一方、直上キューのリクエストが有効なリクエストでない場合には、リクエストを上位キューへと移動して、ステップＳ１０３へと戻る（ステップＳ１０７）。
【００３７】
他方、ステップＳ１０２における判定の結果、リクエストがロードリクエストでない（即ちストアリクエストである）場合には、直上位のリクエストがストアリクエストであるか否かを更に判定する（ステップＳ１０８）。即ち、直前に先行するリクエストがストアリクエストであるか否かを確認する。
【００３８】
ステップＳ１０８における判定の結果、直上位のリクエストがストアリクエストでない場合にはステップＳ１１０へと進む。一方、直上位のリクエストがストアリクエストである場合には、直上位のリクエストが主記憶部３０に対して発行されたか否かを更に判定する（ステップＳ１０９）。即ち、直前に先行するストアリクエストが発行済みであるか否かを確認する。
【００３９】
ステップＳ１０９における判定の結果、直上位のリクエストが主記憶部３０に対して発行された場合にはステップＳ１１８へと進む。一方、直上位のリクエストが主記憶部３０に対して発行されていない場合には、ロードストアキュー１０に対して新たなリクエストが発行されたか否かを更に判定する（ステップＳ１１０）。即ち、ストアリクエストに対して後続するリクエストが発行されたか否かを確認する。
【００４０】
ステップＳ１１０における判定の結果、新たなリクエストが発行されていない場合には、ステップＳ１１０へと戻る。即ち、ロードストアキュー１０に対して後続するリクエストが発行されるまでの間待機する。一方、新たなリクエストが発行された場合には、ＳＴｗａｉｔ４６の値をインクリメントする（ＳＴｗａｉｔ＝＋１）（ステップＳ１１１）。即ち、後続するリクエストの個数をカウントする。
【００４１】
次いで、ＳＴｗａｉｔ４６の値に基づいて、ストアリクエストがロードストアキュー１０内において規定回数待ったか否かを判定する（ステップＳ１１２）。即ち、ストアリクエストが発行可能状態であるか否かを確認する。
【００４２】
ステップＳ１１２における判定の結果、規定回数待っていない場合には、ステップＳ１１０へと戻る。即ち、後続するリクエストの個数をカウントし、そのカウント値が規定の値となるまでの間、ロードストアキュー１０内にストアリクエストを保持する。一方、規定回数待った場合には、ＳＴｗａｉｔＶ４５の値を有効値へと変更する（ＳＴｗａｉｔＶ＝１）（ステップＳ１１３）。即ち、ストアリクエストを発行可能状態とする。
【００４３】
次いで、ロードストアキュー１０内の上位キューに有効なリクエスト（ここでは、Ｖ＝１のリクエスト）が存在するか否かを判定する（ステップＳ１１４）。判定の結果、上位キューに有効なリクエストが存在しない場合にはステップＳ１１８へと進む。一方、上位キューに有効なリクエストが存在する場合には、リクエストが最上位キューに位置するものであるか否かを更に判定する（ステップＳ１１５）。
【００４４】
ステップＳ１１５における判定の結果、リクエストが最上位キューに位置するものである場合にはステップＳ１１８へと進む。一方、リクエストが最上位キューに位置するものでない場合には、直上キューのリクエストが有効なリクエスト（ここでは、Ｖ＝１のリクエスト）であるか否かを更に判定する（ステップＳ１１６）。
【００４５】
ステップＳ１１６における判定の結果、直上キューのリクエストが有効なリクエストである場合には再びステップＳ１１６へと戻る。即ち、ロードストアキュー１０内において、直前に先行する有効リクエストが存在する場合には、その先行するリクエストが無効となるまでの間、待機する。一方、直上キューのリクエストが有効なリクエストでない場合には、リクエストを上位キューへと移動して、ステップＳ１０８へと戻る（ステップＳ１１７）。
【００４６】
他方、ステップＳ１０３、Ｓ１０４、Ｓ１０５、Ｓ１０９、Ｓ１１４、Ｓ１１５の判定の結果、リクエストが主記憶部３０へ発行対象となった場合には、リクエストの有効情報Ｖ４４の値をクリアし（Ｖ＝０）（ステップＳ１１８）、主記憶部３０に対してロードストアキュー１０からリクエストを発行し（ステップＳ１１９）、リクエストキューからエントリを解除する。
【００４７】
このように、後続リクエスト個数が所定の個数となるまでの間、ロードストアキュー１０内のストアリクエストを主記憶部３０に対して発行せずに保持すると共に、そのストアリクエストの後続ロードリクエストの順序を先に並び替えることで、ロードストアキュー１０内のストアリクエストを連続して保持することができる。このため、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する際には、ストアリクエストを連続して発行することができると共に、ストアリクエスト間のロードリクエストについても連続して発行することができる。従って、リードサイクル及びライトサイクル間のバス切替における空きサイクルの発生を抑制して、主記憶部３０に対して効率的にリクエストを発行することができ、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現することができる。
【００４８】
実施の形態２．
次に、本発明の実施の形態２について図面を参照して詳細に説明する。実施の形態２では、ロードストアキューの制御方法は、ロードストアキュー１０内のリクエストのアドレスが主記憶部３０において同一の処理単位に含まれるか否かを判定し、主記憶部３０へとリクエストを発行する際には、同一の処理単位に含まれるアドレスを有するリクエストをまとめて連続して発行するよう制御する。図４は、本実施形態のロードストアキューの制御方法が、ロードストアキュー内のリクエストを制御する手順の一例を示すフローチャートである。以下、図４を参照しながらロードストアキューの制御方法について詳細に説明する。
【００４９】
まず、ロードストアキューの制御方法は、新規発行されたリクエストの有効情報Ｖ４４の値を初期化する（Ｖ＝１）（ステップＳ２０１）。次いで、ロードストアキュー１０内の上位キューに存在する全てのリクエストのアドレスと、新規発行されたリクエストのアドレスとを比較して検索を行う（ステップＳ２０２）。
【００５０】
ステップＳ２０２における検索の結果、ロードストアキュー１０内の上位キューに、新規発行リクエストのアドレスと同一のローアドレス或いは同一のランクアドレスを有するリクエストが存在するか否かを判定する（ステップＳ２０３）。即ち、新規発行リクエストに先行するリクエストであって、新規リクエストと同一のローアドレス或いは同一のランクアドレスを有しており、主記憶部３０に発行する際に、新規発行リクエストと同時に発行可能なリクエストがロードストアキュー１０内に既に存在しているか否かを確認する。
【００５１】
ステップＳ２０３における判定の結果、新規発行リクエストのアドレスと同一のローアドレス或いは同一のランクアドレスを有するリクエストが既に存在している場合には、ロードストアキュー１０内のそのリクエストに付与された近接アドレスフラグコード４７を新規発行リクエストに付与する（ステップＳ２１０）。一方、新規発行リクエストのアドレスと同一のローアドレス或いは同一のランクアドレスを有するリクエストが存在しない場合には、新たな近接アドレスフラグコード４７を生成して、その新規発行リクエストに付与する（ステップＳ２０４）。
【００５２】
次いで、ロードストアキュー１０内の上位キューに有効なリクエスト（ここでは、Ｖ＝１のリクエスト）が存在するか否かを判定する（ステップＳ２０５）。判定の結果、上位キューに有効なリクエストが存在しない場合には、ステップＳ２１１へと進む。一方、上位キューに有効なリクエストが存在する場合には、リクエストが最上位キューに位置するものであるか否かを更に判定する（ステップＳ２０６）。
【００５３】
ステップＳ２０６における判定の結果、リクエストが最上位キューに位置するものである場合にはステップＳ２１１へと進む。一方、リクエストが最上位キューに位置するものではない場合には、同一の近接アドレスフラグコード４７を有するリクエストが、主記憶部３０に対して発行されたか否かを更に判定する（ステップＳ２０７）。即ち、同一の近接アドレスフラグコード４７を有するリクエストをまとめて連続して発行するか否かを確認する。
【００５４】
ステップＳ２０７における判定の結果、同一の近接アドレスフラグコード４７を有するリクエストが、主記憶部３０に対して発行された場合にはステップＳ２１１へと進む。一方、同一の近接アドレスフラグコード４７を有するリクエストが、主記憶部３０に対して発行されていない場合には、直上キューのリクエストが有効なリクエスト（ここでは、Ｖ＝１のリクエスト）であるか否かを更に判定する（ステップＳ２０８）。
【００５５】
ステップＳ２０８における判定の結果、直上キューのリクエストが有効なリクエストである場合には再びステップＳ２０８へと戻る。一方、直上キューのリクエストが有効なリクエストでない場合には、リクエストを上位キューへと移動して、ステップＳ２０５へと戻る（ステップＳ２０９）。
【００５６】
他方、ステップＳ２０５、Ｓ２０６、Ｓ２０７の判定の結果、リクエストが主記憶部３０への発行対象となった場合には、リクエストの有効情報Ｖ４４の値をクリアし（Ｖ＝０）（ステップＳ２１１）、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する（ステップＳ２１２）。
【００５７】
このように、ロードストアキュー１０内のリクエストについて、そのアドレスが同一のローアドレス或いは同一のランクアドレスである場合には、同一の近接アドレスフラグコード４７を有するリクエストを併せて主記憶部３０へと発行することで、同一のローアドレス或いは同一のランクアドレスにより主記憶部３０に対して連続してアクセスすることができる。このため、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する際には、同一のローアドレスの転送について、ＲＡＳを１回のみアクティベートすれば良く、ＲＡＳのアクティベート実行回数を削減することができる。また、ＤＩＭＭ等が主記憶部３０に使用されており、同一ランクアドレスアクセスが連続する場合の方が、異ランクアドレスアクセスが連続する場合より、高速にアクセスできる場合は、同一ランクアドレスアクセスを連続させることができ、主記憶部３０の処理を高速化できる。
【００５８】
実施の形態３．
上述した実施の形態１では、ロードストアキューの制御方法は、所定の条件が満足されるまでの間、ロードストアキュー１０内にストアリクエストを保持することで、連続したストアリクエストと連続したロードリクエストとなるように制御する。また、実施の形態２では、ロードストアキューの制御方法は、ロードストアキュー１０内のリクエストのアドレスが主記憶部３０において同一の処理単位に含まれるか否かを判定し、主記憶部３０へとリクエストを発行する際には、同一の処理単位に含まれるアドレスを有するリクエストをまとめて連続して発行するように制御する。実施の形態３では、ロードストアキューの制御方法は、ロードストアキュー内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御すると共に、リクエストを主記憶部３０へと発行する際には、ロードストアキュー１０内のリクエストのアドレスが主記憶部３０において同一の処理単位に含まれるアドレスである場合には、同一の処理単位に含まれるアドレスを有するリクエストを併せて発行するように制御する。
【００５９】
より具体的には、まず、図３に示したフローチャートにおいて説明したように、後続リクエスト個数が所定の個数となるまでの間、ロードストアキュー１０内のストアリクエストを主記憶部３０に対して発行せずに保持すると共に、そのストアリクエストの後続ロードリクエストの順序を先に並び替える。そして、図４に示したフローチャートにおいて説明したように、ロードストアキュー１０内のリクエストについて、そのアドレスが同一のローアドレス或いは同一のランクアドレスである場合には、同一の近接アドレスフラグコード４７を有するリクエストを併せて主記憶部３０へと発行する。ロードストアキューの制御方法は、例えばＳＴｗａｉｔ４６及びＳＴｗａｉｔＶ４５を用いることで、所定の条件を満足するまでの間、ストアリクエストをロードストアキュー１０内に保持することができ、例えば近接アドレスフラグコード４７を用いることで、主記憶部３０において同一のアドレスの処理単位に基づいて、ロードストアキュー１０内のリクエストを分類して管理することができる。
【００６０】
このようにすると、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する際には、連続したロードリクエストと連続したストアリクエストをより効率的に発行することができるため、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現することができる。
【００６１】
尚、ストアリクエストを主記憶部３０へと発行する場合には、ＳＴｗａｉｔＶ４５が規定の値となったストアリクエストを主記憶部３０へと先に発行した後、同一の近接アドレスフラグコード４７を有するストアリクエストを連続して発行するよう制御し、ＳＴｗａｉｔＶ４５が規定の値となる前に発行するように制御してもよい。
【００６２】
また、ロードストアキューの制御方法は、まず、図４に示したフローチャートにおいて説明したように、ロードストアキュー１０内のリクエストについて、そのアドレスが同一のローアドレス或いは同一のランクアドレスである場合には、同一の近接アドレスフラグコード４７を有するリクエストが連続するようにリクエストの順序を並び替える。そして、図３に示したフローチャートにおいて説明したように、後続ストアリクエスト個数が所定の個数となった場合に、同一の近接アドレスフラグコード４７を有するリクエストの中で、ロードリクエストとストアリクエストを分離して、主記憶部３０へと発行するようにしてもよい。
【００６３】
実施の形態４．
実施の形態４では、ロードストアキューの制御方法は、まず、図３に示したフローチャートにおいて説明したように、後続リクエスト個数が所定の個数となるまでの間、ロードストアキュー１０内のストアリクエストを主記憶部３０に対して発行せずに保持すると共に、そのストアリクエストの後続ロードリクエストの順序を先に並び替える。そして更に、ロードストアキュー１０内の全てのストアリクエストについて、先行するストアリクエストと後続ストアリクエストのアドレスを比較し、同一のアドレスを有するストアリクエストが存在する場合には、後続するストアリクエストのストアデータ４８を先行するストアリクエストのストアデータ４８にマージして１つのストアリクエストとするように制御する。
【００６４】
このように、ロードストアキュー１０内のストアリクエストを所定の条件が満足されるまで発行しない構成とすることで、より多くのストアリクエストをロードストアキュー１０内に滞留させることができる。従って、ロードストアキュー１０に対して発行されるストアリクエストのマージ確率をより向上させることができ、主記憶部３０に対して更に効率的にストアリクエストを発行することができる。
【００６５】
実施の形態５．
実施の形態５では、ロードストアキューの制御方法は、まず、図３に示したフローチャートにおいて説明したように、後続リクエスト個数が所定の個数となるまでの間、ロードストアキュー１０内のストアリクエストを主記憶部３０に対して発行せずに保持すると共に、そのストアリクエストの後続ロードリクエストの順序を先に並び替える。そして更に、新規発行ロードリクエストのアドレスとロードストアキュー１０内の全てのストアリクエストのアドレスとを比較し、同一のアドレスを有するストアリクエストが存在する場合には、ロードリクエストを主記憶部３０に対して発行せずに、ロード結果として、ストアデータキュー１２に保持されたストアデータ４８の内容をリプライする。
【００６６】
このように、ストアリクエストの発行を遅延させることで、連続したロードリクエストと連続したストアリクエストを主記憶部３０にリクエストすることができる。また、ロードストアキュー１０内により多くのストアリクエストを滞留させることで、先行ストアリクエストと同一アドレスを有する後続ロードリクエストがロードストアキュー１０内に存在する確率を向上させることができ、主記憶部３０に対して更に効率的にリクエストを発行することができる。
【００６７】
実施の形態６．
実施の形態６では、ロードストアキューの制御方法は、まず、図３に示したフローチャートにおいて説明したように、後続リクエスト個数が所定の個数となるまでの間、ロードストアキュー１０内のストアリクエストを主記憶部３０に対して発行せずに保持すると共に、そのストアリクエストの後続ロードリクエストの順序を先に並び替える。そして更に、新規発行されたロードリクエストのアドレスとロードストアキュー１０内の全てのロードリクエストのアドレスとを比較し、同一のアドレスを有するロードリクエストが存在する場合には、リクエストキュー１１には１つのロードリクエストのみをキューイングするように制御する。
【００６８】
このように、ストアリクエストの発行を遅延させることで、連続したロードリクエストと連続したストアリクエストを主記憶部３０にリクエストすることができる。更に、同一のアドレスを有するロードリクエストを１つにすることで、主記憶部３０に対してより効率的にリクエストを発行することができる。
【００６９】
実施の形態７．
実施の形態７では、ロードストアキューの制御システムは、ロードストアキュー１０内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。図５は、実施の形態７のロードストアキュー制御システムの機能ブロック図である。ロードストアキューの制御システム１００は、主記憶部３０に対して発行するリクエストを保持するロードストアキュー１０と、ロードストアキュー１０を制御する制御部１１０と、を備える。
【００７０】
制御部１１０は、ロードストアキュー１０内における前記リクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。制御部１１０は、ストアリクエスト制御部１２０と、ロードリクエスト制御部１３０と、リクエスト判定部１４０と、アドレス判定部１５０と、を備える。ストアリクエスト制御部１２０は、更にリクエスト計測部１２１を備える。
【００７１】
ストアリクエスト制御部１２０は、ロードストアキュー１０内のリクエストのうちストアリクエストを所定の条件を満足するまでの間、ロードストアキュー１０内に保持する。ストアリクエスト制御部１２０は、例えば、ロードストアキュー１０に対して新たに発行されるリクエストの個数が所定の個数となるまでの間ロードストアキュー１０内にストアリクエストを保持する。より具体的には、ストアリクエスト制御部１２０は、リクエスト計測部１２１によりストアリクエストに後続して発行されるリクエストの個数をカウントし、カウントされたカウント値が所定の値となるまでの間、ロードストアキュー１０内にストアリクエストを保持する。尚、ストアリクエスト制御部１２０は、ロードストアキュー１０内のストアリクエストをロードストアキュー１０内に所定の時間保持するように制御してもよい。
【００７２】
ロードストアリクエスト制御部１３０は、ロードキュー１０内に保持されたストアリクエストに後続するロードリクエストの順序を、その保持されたストアリクエストよりも先に並び替える。
【００７３】
また、制御部１３０は、リクエスト判定部１４０により、ロードストアキューから主記憶部３０に対して発行対象となるリクエストがストアリクエスト又はロードリクエストのいずれかであるかを判定し、リクエストがストアリクエストである場合には、ロードストアキュー１０内にそのストアリクエストを保持する。
【００７４】
さらにまた、制御部１１０は、アドレス判定部１６０により、ロードストアキュー１０内の第１のリクエストのアドレスと第２のリクエストのアドレスが主記憶部３０において同一の処理単位に含まれるアドレスであるか否かを判定し、第１のリクエストのアドレスと第２のリクエストのアドレスがロードストアキュー１０内の処理単位に含まれるアドレスである場合には、第１のリクエストを主記憶部３０に発行する際に、その第２のリクエストを併せて主記憶部３０へと発行する
【００７５】
その他の実施の形態．
上述した実施の形態１乃至６においては、所定の条件が満足されるまでの間、ロードストアキュー１０内にストアリクエストを保持するように制御する構成としたが、本発明はこれに限定されない。例えば、ロードストアキュー１０内において、リクエストが主記憶部３０に対して発行対象となった場合に、そのリクエストがストアリクエスト又はロードリクエストのいずれかであるかを判定し、当該判定の結果、リクエストがストアリクエストである場合には、ロードストアキュー１０内に当該ストアリクエストを保持するように制御してもよい。また、上述した実施の形態においては、後続リクエストの個数に応じてストアリクエストを保持するように制御する構成としたが、ロードストアキュー１０内に所定の時間ストアリクエストを保持するように制御してもよい。
【００７６】
以上説明してきたように、本発明のロードストアキューの制御方法の一態様は、主記憶部３０に対して発行するリクエストを保持するロードストアキュー１０の制御方法であって、ロードストアキュー１０内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。
【００７７】
このように、ロードストアキュー１０内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御することで、ロードストアキュー１０内により多くのストアリクエストをまとめて滞留させることができる。このため、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する際には、連続したストアリクエストと連続したロードリクエストを発行することができる。従って、リードサイクル及びライトサイクル間のバス切替における空きサイクルの発生を抑制して、主記憶部３０に対して効率的にリクエストを発行することができ、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現することができる。
【００７８】
また、本発明のロードストアキューの制御システムの一態様は、主記憶部３０に対して発行するリクエストを保持するロードストアキュー１０と、ロードストアキュー１０を制御する制御部１１０と、を備えたロードストアキューの制御システム１００であって、制御部１１０は、ロードストアキュー１０内におけるリクエストの順序を並び替え、連続したストアリクエストと連続したロードリクエストとなるように制御する。
【００７９】
これにより、ロードストアキュー１０から主記憶部３０に対してリクエストを発行する際には、ストアリクエストを連続して発行することができると共に、ロードリクエストについても連続して発行することができる。従って、リードサイクル及びライトサイクル間のバス切替における空きサイクルの発生を抑制して、主記憶部３０に対して効率的にリクエストを発行することができ、アクセスレイテンシ、データ転送に関して性能改善及び低消費電力化を実現することができる。
【００８０】
尚、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施の形態１のロードストアキュー制御方法を示す全体概念図である
【図２】本発明の実施の形態１のリクエストキューの制御内容を説明するための図である。
【図３】本発明の実施の形態１のロードストアキュー制御方法による制御手順の一例を示すフローチャートである。
【図４】本発明の実施の形態２のロードストアキュー制御方法による制御手順の一例を示すフローチャートである。
【図５】本発明の実施の形態７のロードストアキュー制御システムの機能ブロック図である。
【符号の説明】
【００８２】
１０  ロードストアキュー、
１１  リクエストキュー、  １２  ストアデータキュー、  １３  リプライキュー、
１４  同一アドレスリクエスト制御部、  １５  ＭＲＳＵ、
２０  キャッシュ、
３０  主記憶部、
４１  リクエスト種類情報（ＬＤ／ＳＴ）、  ４２  アドレス、  ４３  制御情報、
４４  有効情報、  ４５  ＳＴｗａｉｔＶ、  ４６  ＳＴｗａｉｔ、
４７  近接アドレスフラグコード、  ４８  ストアデータ、
４９  ＬＤリクエストリプライ情報、
１００  ロードストアキューの制御システム、
１１０  制御部、  １２０  ストアリクエスト制御部、  １２１  リクエスト計測部、
１３０  ロードリクエスト制御部、  １４０  リクエスト判定部、
１５０  アドレス判定部
【図１】
0004569628.tif 000002
【図２】
0004569628.tif 000003
【図３】
0004569628.tif 000004
【図４】
0004569628.tif 000005
【図５】
0004569628.tif 000006