(57)【要約】メモリにアクセスする方法及び装置は、ハードウエアプリフェッチャによるメモリアクセスを監視し；前記ハードウエアプリフェッチャによるメモリアクセスがアウトオブオーダーコアにより使用されたか否かを判別し；前記ハードウエアプリフェッチャにより生成されたメモリアクセスがアウトオブオーダーコアにより使用された場合に、第１モードから第２モードにメモリアクセスを切り換える。
2005518606.tif 000002
【特許請求の範囲】
【請求項１】
メモリにアクセスする装置であって：
開いたメモリページを予測するページオープンプレディクタ；
メモリアクセスモードを第１モードから第２モードに切り換え、前記ページオープンプレディクタに結合されたフロントサイドバススケジューラ；及び
前記フロントサイドバススケジューラに結合され、メモリアクセスを制御するフロントサイドバスアクセスキュー；
を備えることを特徴とする装置。
【請求項２】
前記フロントサイトバスアクセスキューに結合されるプロセッサを更に備え、前記プロセッサはアウトオブオーダーコア及びハードウエアプリフェッチャより成る
ことを特徴とする請求項１記載の装置。
【請求項３】
前記フロントサイドバスアクセスキューに結合されたメモリコントローラを更に備える
ことを特徴とする請求項２記載の装置。
【請求項４】
前記ページオープンプレディクタが、メモリ中のページからなされるように予測されるメモリアクセスを予測する
ことを特徴とする請求項１記載の装置。
【請求項５】
前記フロントサイドバススケジューラが、処理されるアプリケーションが許容される待ち時間であるか許容されない待ち時間であるかを判別する
ことを特徴とする請求項１記載の装置。
【請求項６】
前記第１モードでは、前記フロントサイドバススケジューラがメモリアクセス待ち時間を最小化するようにメモリアクセスを予定し、前記第２モードでは、前記フロントサイドバススケジューラがメモリバス帯域を最大化するようにメモリアクセスを予定する
ことを特徴とする請求項１記載の装置。
【請求項７】
メモリアクセス待ち時間を最小化するモードにて、前記フロントサイドバススケジューラが、早期の命令に関連する最初のスケジュールメモリアクセスを予定する
ことを特徴とする請求項６記載の装置。
【請求項８】
メモリバス帯域を最大化するモードにて、前記フロントサイドバススケジューラが、オープンメモリページからデータをアクセスするように予測されたメモリアクセスを予定する
ことを特徴とする請求項６記載の装置。
【請求項９】
前記フロントサイドバススケジューラが、前記フロントサイドバスアクセスキュー内の第１エントリを予定する前に、オープンメモリページからデータにアクセスするように予測されたエントリを見出すために前記フロントサイドバスアクセスキュー内の所定数のエントリを探索する
ことを特徴とする請求項１記載の装置。
【請求項１０】
前記フロントサイドバススケジューラが、前記第１モードから第２モードへ及びその逆に自動的に切り換える
ことを特徴とする請求項５記載の装置。
【請求項１１】
ハードウエアプリフェッチャによってなされたアクセスのＸパーセンテージより多くに関し、ハードウエアプリフェッチャによりなされたアクセスのＹパーセンテージより多くが、アウトオブオーダーコアにより要求される場合に、任意の時点及び最新のｎ回のアクセス並びに時間及び最新のｎ回のアクセスの重み付けされた組合せに基づいて、最小のメモリアクセス待ち時間モードから最大のメモリバス帯域モードへフロントサイドバススケジューラが切り換える
ことを特徴とする請求項１０記載の装置。
【請求項１２】
ハードウエアプリフェッチャにより生成されたメモリアクセスを監視するステップ；
前記ハードウエアプリフェッチャによるメモリアクセスがアウトオブオーダーコアにより使用されたか否かを判別するステップ；及び
前記ハードウエアプリフェッチャにより生成されたメモリアクセスがアウトオブオーダーコアにより使用された場合に、第１モードから第２モードにメモリアクセスを切り換えるステップ；
を有することを特徴とする方法。
【請求項１３】
前記アウトオブオーダーコアにより使用された前記ハードウエアプリフェッチャにより生成されたメモリアクセスのパーセンテージが、単位時間当たり少なくとも５０パーセントである
ことを特徴とする請求項１２記載の方法。
【請求項１４】
前記第１モードのメモリアクセスはメモリアクセス待ち時間を最小化し、前記第２モードのメモリアクセスはメモリバス帯域を最大化する
ことを特徴とする請求項１２記載の方法。
【請求項１５】
メモリアクセス待ち時間を最小化するモードでは、前記フロントサイドバススケジューラが、早期の命令によりなされたメモリアクセスを最初に予定する
ことを特徴とする請求項１４記載の方法。
【請求項１６】
前記アウトオブオーダーコアからのアクセスが、前記ハードウエアプリフェッチャからのアクセス前に予定される
ことを特徴とする請求項１５記載の方法。
【請求項１７】
メモリバス帯域を最大化するモードでは、前記フロントサイドバススケジューラが、オープンメモリページからのデータをアクセスするように予測されるメモリアクセスを予定する
ことを特徴とする請求項１４記載の方法。
【請求項１８】
前記フロントサイドバスアクセスキューにて第１エントリを予定する前に、オープンメモリページからデータにアクセスするように予測されるエントリを見出すために、前記フロントサイドバススケジューラが、前記フロントサイドバスアクセスキュー内の所定数のエントリを探索する
ことを特徴とする請求項１７記載の方法。
【請求項１９】
単位時間当たりに前記ハードウエアプリフェッチャによりなされたメモリアクセスのパーセンテージにより、単位時間当たりにハードウエアプリフェッチャによりなされたメモリアクセスの５０パーセントより多くがアウトオブオーダーコアにより使用される場合に、メモリアクセス待ち時間を最小化するモードからバス帯域を最大化するモードに切り換える
ことを特徴とする請求項１２記載の方法。
【請求項２０】
バス；
前記バスに結合されたプロセッサ；
前記バスに結合されたフロントサイドバスコントローラであって、ページオープンプレディクタ及びフロントサイドバススケジューラより成り、前記フロントサイドバススケジューラは第１モードから第２モードへメモリアクセスを切り換え、前記フロントサイドバススケジューラは前記ページオープンプレディクタに結合されるところのフロントサイドバスコントローラ；及び
前記フロントサイドバススケジューラに結合され、メモリアクセスを制御するフロントサイドバスアクセスキュー；
を備えることを特徴とするコンピュータシステム。
【請求項２１】
前記プロセッサが、アウトオブオーダーコア及びハードウエアプリフェッチャより成る
ことを特徴とする請求項２０記載のコンピュータシステム。
【請求項２２】
前記ページオープンプレディクタが、メモリ内のページから起こる傾向にあるメモリアクセスを予測する
ことを特徴とする請求項２０記載のコンピュータシステム。
【請求項２３】
前記フロントサイドバススケジューラが、第１モードから第２モードへメモリアクセスモードを切り換える
ことを特徴とする請求項２０記載のコンピュータシステム。
【請求項２４】
前記第１モードのメモリアクセスはメモリアクセス待ち時間を最小化し、前記第２モードのメモリアクセスはメモリバス帯域を最大化する
ことを特徴とする請求項２３記載のコンピュータシステム。
【請求項２５】
メモリアクセス待ち時間を最小化するモードでは、前記フロントサイドバススケジューラが、早期の命令によりなされたメモリアクセスを最初に予定する
ことを特徴とする請求項２４記載のコンピュータシステム。
【請求項２６】
メモリバス帯域を最大化するモードでは、前記フロントサイドバススケジューラが、オープンメモリページからデータをアクセスするように予測されるメモリアクセスを予定する
ことを特徴とする請求項２４記載のコンピュータシステム。
【請求項２７】
前記フロントサイドバスアクセスキューにて第１エントリを予定する前に、オープンメモリページからデータをアクセスように予測されるエントリを見出すために、バス帯域を最大化するモードにおけるフロントサイドバススケジューラは、フロントサイドバスアクセスキュー内の所定数のエントリを探索する
ことを特徴とする請求項２４記載のコンピュータシステム。
【請求項２８】
単位時間当たりに前記ハードウエアプリフェッチャによりなされたメモリアクセスのパーセンテージにより、単位時間当たりにハードウエアプリフェッチャによりなされたメモリアクセスの５０パーセントより多くがアウトオブオーダーコアにより使用される場合に、メモリアクセス待ち時間を最小化するモードからメモリバス帯域を最大化するモードに前記フロントサイドバススケジューラが切り換える
ことを特徴とする請求項２２記載のコンピュータシステム。
【請求項２９】
前記フロントサイドバススケジューラが、メモリアクセス待ち時間を最小化するモードからメモリバス帯域を最大化するモードに動的に切り換える
ことを特徴とする請求項２６記載のコンピュータシステム。
【請求項３０】
単位時間当たりに前記ハードウエアプリフェッチャによりなされたメモリアクセスのパーセンテージにより、単位時間当たりにハードウエアプリフェッチャによりなされたメモリアクセスの５０パーセントより多くがアウトオブオーダーコアにより使用される場合に、メモリバス帯域を最大化するモードからメモリアクセス待ち時間を最小化するモードに前記フロントサイドバススケジューラが切り換える
ことを特徴とする請求項２２記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はエレクトロニクスの技術分野に関する。特に、本発明は、メモリアクセスを制御する方法及び装置に関する。
【背景技術】
【０００２】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、プリチャージ、アクティベート（活性化）、リード（読み込み）及びライト（書き込み）の動作を有する。特に、メモリのバンクをアドレス（指定）するメモリコントローラは、そのメモリバンクを先ずプリチャージする必要があり、そして、バンク内のアドレスされたページは、そのページ内のアドレスされたカラム（列）がアクセス（リード又はライト）される前に活性化される必要がある。「ＤＲＡＭページオープン」又は「ページヒット」は、アクセスされたメモリが既にプリチャージされ活性化されていることを示し、各メモリアクセス中にメモリをプリチャージ又は活性化することを要せずに、そのページからデータが読み出され又は書き込まれるかもしれない。「ページミス」が起こると（即ち、オープンされる（開かれる）ページ以外のページのメモリ内のページからデータがアクセスされた場合）、オープンページはセンスアンプからＤＲＡＭチップに書き戻される必要がある。次に、新たなメモリページが先ずプリチャージされ、そしてアクセスされる前に活性化される必要がある。ＤＲＡＭに古いページを書き込むこと、新たなＤＲＡＭページをプリチャージすること及び活性化することは時間を要し、メモリアクセスを遅延させ、メモリバスの非効率的な利用（減少した帯域）やＤＲＡＭを使用する装置のパフォーマンスの劣化を招く。
【０００３】
図１は、従来例によるメモリアクセスを管理するフロントサイドバス（ＦＳＢ）コントローラを示す。図１に示されるように、ＦＳＢコントローラ１０５は、ＦＳＢアクセスキュー１３０によるプロセッサ１１０からＤＲＡＭ１２０へのアクセス（リード及びライト）を管理するＦＳＢスケジューラ１２５を含む。ＦＳＢコントローラは、Ｌ２ミスリクエストバスを通じてプロセッサ１１０に、及びフロントサイドバスを通じてメモリコントローラ１１５に結合される。メモリコントローラ１１５はメモリバスを通じてＤＲＡＭ１２０に結合される。プロセッサ１１０は、アウトオブオーダーコア１３５及びハードウエアプリフェッチャ（ＨＷＰ）１４０より成る。アウトオブオーダーコア１３５はパイプライン技法を使用し、複数の命令が実行時に重複させられ、プロセッサの全体的なパフォーマンスを向上させようとする。ＨＷＰは、アウトオブオーダーコアの実行部で必要なデータをＤＲＡＭからプリフェッチする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＦＳＢコントローラ１０５、特にＦＳＢスケジューラ１２５は、アクセスを引き起こした命令の相対的な年齢（即ち、ＤＲＡＭに対するデータの読み出し又は書き込みの要求になるロード又はストア）に基づいて、プロセッサ１１０による（即ち、アウトオブオーダーコアから及びＨＷＰからの）ＤＲＡＭアクセスをスケジュール管理する。ＦＳＢアクセスキュー１３０内のアクセスは、ＤＲＡＭに対してプログラム順にスケジュール管理される。特に、アウトオブオーダーコアによるＤＲＡＭアクセスは、ＨＷＰによるＤＲＡＭアクセスを上回る優先度を有し、アウトオブオーダーコアにより生成されたアクセスはプログラム順にスケジュール管理される。ＦＳＢコントローラは、ＦＳＢアクセスキュー内の最も古い命令に関連するアクセスを最初に予定することで、ＤＲＡＭアクセス待ち時間を最小化する。しかしながら、ＤＲＡＭアクセスの待ち時間の最小化に基づくＤＲＡＭアクセスのスケジューリングは、連続的なＤＲＡＭアクセスが常にオープンＤＲＡＭページにアクセスしないかもしれないので、常に最適な解決手段ではない。閉じたＤＲＡＭページからのアクセスは、ＤＲＡＭに対する目下のオープンページに書き込むこと、新たなＤＲＡＭページをプリチャージすること及び活性化することを含む。従って、閉じたＤＲＡＭページをアクセスすることは、時間がかかり、メモリアクセスを遅延させ、プロセッサのＤＲＡＭバスを非効率的にしてしまう。
【課題を解決するための手段】
【０００５】
以下、本発明の実施例が添付図面と共に説明される。添付図面は本発明の範囲を限定するものではない。図中の同様な番号は同様な要素を示す。
【０００６】
メモリアクセスを制御する方法及び装置が説明される。以下の説明において、本発明に関する充分な理解をもたらすために、いくつもの具体的な詳細が説明される。しかしながら、本発明はそれらの具体的な詳細によらず実施されてもよいことを当業者は理解するであろう。また、本発明を不必要に複雑化することを回避するために、周知のアーキテクチャ、ステップ及び技術は詳細には示されていない。
【０００７】
説明の一部は当業者に一般的に使用される用語を用いて提示され、その用語は当該技術分野で彼らの業務内容を他者に伝達するためのものである。また、説明の一部は、プログラミング命令の実行により行われる動作の観点から与えられる。当業者に理解されるように、これらの動作は、格納、転送及び合成される又は例えば電子部品により処理されることの可能な電気的、磁気的又は光学的な信号の形式を使用する。  
【発明を実施するための最良の形態】
【０００８】
図２Ａは、メモリアクセスをスケジュール管理する本発明の一実施例によるフロントサイドバス（ＦＳＢ）を示す。図２Ａに例示されているように、ＦＳＢコントローラ２０５はＦＳＢスケジューラ２２５を含み、ＦＳＢスケジューラは、ＦＳＢアクセスキュー２３０を用いるプロセッサ２１０からＤＲＡＭ２２０へのＤＲＡＭアクセスをスケジュール管理する。ＦＳＢコントローラは、Ｌ２ミスリクエストバスを通じてプロセッサ２１０に、及びＦＳＢを通じてメモリコントローラ２１０に結合される。メモリコントローラ２１５はメモリバスを通じてＤＲＡＭ２２０に結合される。プロセッサ２１０はアウトオブオーダーコア２３５及びハードウエアプリフェッチャ（ＨＷＰ）２４０より成る。アウトオブオーダーコア２３５はパイプライン技法を利用し、プロセッサの全体的なパフォーマンスを向上させるために、複数の命令が実行時に重複させられる。ＨＷＰは、アウトオブオーダーコア内の実行部により最終的に必要とされるよう予測されたＤＲＡＭアクセスをプリフェッチする。
【０００９】
ＦＳＢコントローラ２０５は、ＦＳＢスケジューラ２２５及びＤＲＡＭページオープンプレディクタ２５０より成る。一実施例では、ＦＳＢスケジューラ２２５は、ＤＲＡＭページオープンプレディクタ２５０に結合され、ＦＳＢスケジューラはＦＳＢアクセスキュー２３０に結合される。別の実施例では、ＤＲＡＭページオープンプレディクタ及びＦＳＢスケジューラの双方がＦＳＢアクセスキュー２３０に結合されてもよい。一実施例では、ＦＳＢスケジューラ２２５は、プロセッサにより処理されるアプリケーション又はアプリケーションの一部に基づいてプロセッサ２１０から（即ち、アウトオブオーダーコアから及びＨＷＰから）ＤＲＡＭへのアクセスをスケジュール管理する。例えば、処理されるアプリケーションが許容可能な待ち時間であるならば、ＦＳＢ２２５はそのメモリバス帯域を最大化するメモリアクセスを予定する。或いは、処理されるアプリケーションが許容できない待ち時間であるならば、ＦＳＢスケジューラ２２５はメモリアクセス待ち時間を最小化するメモリアクセスを予定する。言い換えれば、ＦＳＢスケジューラは、プロセッサ２１０により処理されるアプリケーションの属性に基づいて、ＦＳＢアクセスキュー２３０内のメモリアクセスを整える。アプリケーションは許容できない待ち時間であるかもしれない、それは例えばメモリアクセスが分岐の予測ミスを解決するのに必要とされる場合であり、分岐が誤って予測された場合にコアによって行われる推測作業は、メモリアクセスが完了するまで及びプロセッサがプログラム実行の適切なブランチから命令をフェッチするで不使用である。アプリケーションが「許容可能な待ち時間」であるか「許容できない待ち時間」であるかを判別するために、ＦＳＢスケジューラ２２５は、ＨＷＰ２４０により及びアウトオブオーダーコア２３５により生成されたメモリアクセスを監視する。ＦＳＢは、ＦＳＢアクセスキュー２３０内のエントリを監視することでそれを行う。
【００１０】
図２Ｂは、本発明の一実施例によるメモリアクセスに関連するパラメータを示す。図２Ｂに示されるように、ＦＳＢアクセスキュー２３０内のＤＲＡＭアクセス（エントリ）の各々は、少なくとも以下の情報に関連する：ａ）命令数２６０、例えばＤＲＡＭアクセスのプログラム命令番号（即ち、ＤＲＡＭアクセスがなされて以来の命令数）；ｂ）ＤＲＡＭアクセスのメモリアドレス２６２；ｃ）ＦＳＢキュー内のＤＲＡＭアクセスの部分を示す数２６４（キューの階層において、より古いアクセスは、後の命令よりも上位に設けられる）；ｄ）アクセスがアウトオブオーダーコアにより作成されたかＨＷＰにより作成されたかを示すフラグ２６６；ｅ）ＨＷＰにより生成されたエントリがコアにより生成／使用されたか否かを示すフラグ２７０；ｆ）アクセスがオープンＤＲＡＭページへのアクセスを予定しているか否かを示すフラグ２７０；及びｇ）メモリアクセスがメモリのリード又はライトであるか否かを示すフラグ２７２。
【００１１】
本発明の一実施例では、ＦＳＢスケジューラによりメモリバスに予定されるメモリアクセスの大部分がＨＷＰ２４０により生成されたものであり（フラグ２６８がセットされているか否かを確認することで判別される）、生成されたアクセスの大部分がアウトオブオーダーコア２３５により使用されたものであるならば（フラグ２６６がセットされていることを確認することで判別される）、そのアプリケーションは許容可能な待ち時間であると判別される。待ち時間の許容されるアプリケーションに関し、本発明の一実施例では、ＦＳＢスケジューラ２２５は、メモリバス帯域を最大化するためにＦＳＢキュー２３０内のエントリを並べ換える。これは、ＦＳＢスケジューラは、同じＤＲＡＭページからデータにアクセスするように予測されたＤＲＡＭアクセスを優先させることを意味する。図２Ｂの例では、最大帯域モードにて、ＦＳＢスケジューラは、キューエントリ１，６，７，４，０，８，９，１１，２，１２，５及び３に従うメモリアクセスを予定する。オープンＤＲＡＭページにアクセスすることに関し、アウトオブオーダーコアによるアクセスは、ＨＷＰによるアクセスを上回る優先度を有する。しかしながら、最小待ち時間モードでは、ＦＳＢスケジューラは、キューエントリ５，３，１，６，７，４，０，８，９，１１，２及び１２に従うメモリアクセスを予定する。コアによる古い命令は、ＤＲＡＭページがオープンであるか否かによらず、ＨＷＰによる古い命令によってスケジュールされる。この詳細は図３に関連して後に説明される。
【００１２】
オープンＤＲＡＭページからデータにアクセスするように予測されたＤＲＡＭアクセスをスケジューリングするために、ＦＳＢ２２５はＤＲＡＭページオープンプレディクタ２５０を使用する。一実施例では、ＤＲＡＭページオープンプレディクタは、アクセスされたＤＲＡＭページの履歴を維持し、アクセスされたＤＲＡＭページの履歴に基づいて、ＤＲＡＭページオープンプレディクタ２５０はＤＲＡＭ内で開かれる（オープンされる）よう予測されるＤＲＡＭページのリストを作成する。例えば、ＤＲＡＭページ１２，１４，１６及び１８が過去にアクセスされた場合であって、４つのＤＲＡＭページが同時に開かれることをメモリシステムが許容する場合に、ＤＲＡＭページオープンプレディクタは、ページ１２に対する新たなアクセスがヒットし、ページ１３に対する新たなアクセスがミスするであろうことを予測する。本発明の一実施例では、ＤＲＡＭページオープンプレディクタ２５０は、少なくともメモリバスサイクル毎にＤＲＡＭ内で開かれるよう予定されるＤＲＡＭページのリストを作成又は更新し、別の実施例では、ＤＲＡＭページオープンプレディクタは、ＤＲＡＭの少数の（例えば、２より多くの）メモリバスサイクル毎に開かれるよう予定されるＤＲＡＭページのリストを作成又は更新してもよい。一実施例では、メモリコントローラは、ＦＳＢにより、オープンＤＲＡＭページのリストをＤＲＡＭページオープンプレディクタに送付する。別の実施例では、メモリコントローラはプロセッサコア上にあり、従って、メモリコントローラに必要なオープンＤＲＡＭページのリストは、ＤＲＡＭページオープンプレディクタのように使用可能である。別の実施例では、ＤＲＡＭページが以前のアクセスパターンに基づいて推察して開かれてもよいＤＲＡＭページをメモリコントローラは予測する。例えば、メモリコントローラは、（例えば、カーブフィットアルゴリズム）アルゴリズムを使用してもよく、そのアルゴリズムは、開かれてもよい将来的なＤＲＡＭページを予測するために以前に開いたＤＲＡＭページのアドレスを利用する。ＤＲＡＭページオープンプレディクタは、（例えば、製造時にＤＲＡＭページオープンプレディクタをプログラミングすることによって）このアルゴリズムを検知可能であり、メモリコントローラに送付されたアクセスから、メモリコントローラが推察的に開くページを判断する。これは、メモリコントローラがＤＲＡＭページのリストを送付する必要性を排除し、そのページはＤＲＡＭページオープンプレディクタに開かれるように予測されるものである。本発明の一実施例では、ＦＳＢスケジューラは、ＤＲＡＭページヒットプレディクタにより開かれるよう予測され、生成されたＤＲＡＭページのリストを、各メモリアクセス用のフラグ２７０を設定するために使用する。
【００１３】
図３は、本発明の一実施例によるメモリアクセスのフローチャートを示す。ＤＲＡＭページオープンプレディクタは、オープンＤＲＡＭページをアクセスするＤＲＡＭアクセス、及びクローズＤＲＡＭページをアクセスするアクセスを予測してもよい。この情報を利用して（即ち、ＤＲＡＭアクセスがオープンページをアクセスするように予測されるならば）、ＦＳＢスケジューラは、ＦＳＢアクセスキュー内のエントリ用のフラグ２７０（予測されたＤＲＡＭページオープンフラグ）を設定する。
【００１４】
３１０において、ＦＳＢスケジューラは、アウトオブオーダーコアにより使用される大部分のＤＲＡＭアクセスをＨＷＰが生成しているか否かを判別する。本発明の一実施例では、アウトオブオーダーコアにより使用されるＤＲＡＭアクセスの大部分をＨＷＰが生成しているか否かの判定は、フラグ２６６，２６８が、ある単位時間間隔の中で設定されているか否かを判別することを示す。本発明の別の実施例では、アウトオブオーダーコアにより使用されるＤＲＡＭアクセスの大部分をＨＷＰが生成したか否かの判断は、フラグ２６６，２６８の組の双方を有するアクセスのパーセンテージ（割合）が、例えばプログラム可能なパーセンテージのような、ある閾値を超えたか否かを示す。本発明の一実施例では、プログラム可能なパーセンテージは、ＦＳＢコントローラの製造時にプログラムされる。別の実施例では、プログラム可能なパーセンテージは、ユーザによりプログラムされ、又は実行されるプログラムによって自動的にプログラムされる。本発明の一実施例では、ＨＷＰがＤＲＡＭアクセスを生成する場合に、（例えば、ＨＷＰにより）ＨＷＰがＤＲＡＭアクセスを生成したことを示すフラグ２６６が設定される。その後に、アウトオブオーダーコアが同じＤＲＡＭアクセスを生成したならば、（例えば、アウトオブオーダーコアにより）アウトオブオーダーコアがＨＷＰにより生成されたアクセスを使用したことを示すフラグ２６８が設定される。従って、ＦＳＢキュー内のＤＲＡＭアクセスに関するフラグ２６６，２６８を監視することによって、大部分のＤＲＡＭアクセスに双方のフラグが設定されている場合に、以下の内容が判断されてもよい：１）要求されたＤＲＡＭアクセスをＨＷＰが生成していること及び２）ＨＷＰが不使用ＤＲＡＭアクセスを生成していないこと。上記の少なくとも１）及び２）の条件に基づいて、メモリバスが飽和することを判断してもよい。この仮定は、ＦＳＢキューを入力するＨＷＰ要求が、アウトオブオーダーコアが同じＤＲＡＭアクセスを生成する程度に充分長いＦＳＢキューに収容される事実に基づく。
【００１５】
上述の条件が満たされると、アプリケーションは許容可能な待ち時間として記述され、メモリバスの帯域が制約されるよう想定される。処理されるアプリケーションが許容可能な待ち時間であること及びメモリバスの帯域が制約されることをＦＳＢスケジューラが判断すると、ＦＳＢスケジューラは最大バス帯域モードに切り換える。或いは、ＦＳＢスケジューラは、処理されるアプリケーションが許容できない待ち時間であることを想定し、最小待ち時間モードに切り換える。本発明の一実施例では、ＦＳＢスケジューラが最大バス帯域モードにある場合に、ＦＳＢスケジューラは、メモリバス帯域を最大化するように、ＦＳＢアクセスキュー内のエントリを並べ換える。
【００１６】
最小待ち時間モードでは、３２０において、ＦＳＢスケジューラは、アウトオブオーダーコアの早期の命令により生成されたメモリアクセスが、後の命令により生成されたアクセスよりも前に予定されるように、ＦＳＢアクセスを予定する。また、ＦＳＢスケジューラは、ＨＷＰにより生成されたＤＲＡＭアクセスよりも前にアウトオブオーダーコアにより生成されたＤＲＡＭアクセスを予定する。最小待ち時間モードでは、時間的に最も早いエントリ（即ち、ＦＳＢキュー内で最も古い命令に関連するアクセス）をスケジューリングする際に、ＦＳＢスケジューラは、ＦＳＢアクセスキュー内のエントリがＤＲＡＭページからアクセスされたか又は異なるＤＲＡＭページからアクセスされたかを考慮しない。
【００１７】
最大帯域モードの場合には、ＦＳＢスケジューラは、最も古い命令（アウトオブオーダーコアからの命令はＨＷＰからの命令を超える優先度を有する）に関連するエントリのＦＳＢアクセスキューを探索し、その命令はオープンＤＲＡＭページをアクセスするように予測される。本発明の一実施例では、このサーチを実行する際に使用される２つのパラメータがある。第１のパラメータの「サーチウインドウサイズ」は、オープンＤＲＡＭページをアクセスするエントリを探索する際にどれだけ多くのエントリが探索されるかを記述する。エントリのリストから始まり、エントリに関連付けられる命令の年齢に従って格納され（例えば、エントリはＦＳＢキューに格納される）（より古い命令が先）、ＦＳＢスケジューラは、オープンＤＲＡＭページにアクセスするよう予測されるアクセスのリストにて「サーチウインドウサイズ」エントリを探索する。オープンＤＲＡＭページにアクセスするよう予定される「サーチウインドウサイズ」のエントリがなければ、そのリストの最初のエントリが予定される。
【００１８】
第２のパラメータの「最大バイパスカウント」は、リストの第１エントリが選択される前に、クローズＤＲＡＭページにアクセスするように予測されたとしても、リストの最初のエントリを迂回するのにどれだけ多くのエントリが許容されるかを決定する。リスト上で最初でないエントリが予定される場合に、「バイパスカウンタ」が増やされる。リスト上で最初のエントリが選択されると、「バイパスカウンタ」は０にリセットされる。バイパスカウンタの値が「最大バイパスカウント」より大きい又は等しい場合に、たとえクローズＤＲＡＭページのアクセスが予測されたとしても、リスト上の最初のエントリが選択される（バイパスカウンタは０にリセットされる）。本発明の一実施例では、最大バイパスカウント及びサーチウインドウサイズは、例えばＦＳＢスケジューラの製造時にプログラムされてもよい。
【００１９】
最大帯域モードでは、３３０において、バイパスカウンタが、そのバイパスカウントより大きいか否かの判定がなされる。バイパスカウンタが３５０にてバイパスカウントより大きい場合に、ＦＳＢの第１エントリはＤＲＡＭアクセスに予定され、バイパスカウンタは例えば０にリセットされる。３３０において、バイパスカウンタの値が最大バイパスカウントより大きくないならば、３３５において、サーチウインドウ（そのサーチウインドウは、サーチウインドウサイズに等しいＦＳＢアクセスキュー内のエントリとして定義される）内の最初のエントリがオープンＤＲＡＭページをアクセスするように予測されるか否かの判別がなされる。サーチウインドウ内の最初のエントリはがオープンＤＲＡＭページにクセスするように予定される場合に、３５０において、ＦＳＢスケジューラは、ＤＲＡＭアクセスに第１エントリを予定し、バイパスカウンタはリセットされる。
【００２０】
しかしながら、サーチウインドウ内の第１エントリがオープンＤＲＡＭページをアクセスするように予測されない場合には、３４０にて、ＦＳＢのサーチウインドウ内のいかなるエントリがオープンＤＲＡＭページをアクセスするように予測されるかの判定がなされる。サーチウインドウ内のどのエントリもオープンＤＲＡＭページにアクセスするよう予測されない場合には、３５０において、ＦＳＢアクセスキュー内の第１エントリが予定される。しかしながら、３４０にて、サーチウインドウ内の少なくとも１つのエントリがオープンＤＲＡＭページにアクセスするように予測されるならば、３４５にて、ＦＳＢスケジューラは、オープンＤＲＡＭページをアクセスするよう予定されたサーチウインドウ内で最も古いエントリを予定し、バイパスカウンタを増やす。
【００２１】
本発明の一実施例では、最大バス帯域モードにてＦＳＢスケジューラがＤＲＡＭアクセスを予定する場合であって、ＦＳＢスケジューラが、ＨＷＰにより生成されアウトオブオーダーコアにより要求されたＦＳＢアクセスキューにて予定されるアクセスのパーセンテージが、その閾値パーセンテージを下回るならば、ＦＳＢスケジューラは、ＤＲＡＭアクセスをスケジューリングするモードを、最大バス帯域モードから最小待ち時間モードに自動的に変更する。ＦＳＢスケジューラが最小待ち時間モードで動作する場合であって、ＦＳＢスケジューラが、ＨＷＰにより生成されアウトオブオーダーコアにより要求されたＦＳＢアクセスキューにて予定されるアクセスのパーセンテージが、その閾値に等しい又は上回るものと判断したならば、ＦＳＢスケジューラは、ＤＲＡＭアクセスをスケジューリングするモードを、最小待ち時間モードから最大バス帯域モードに自動的に変更する。こうして、一方から他方への変更は、処理されるアプリケーション又はその一部に基づいて、動的に（即ち実行中に）なされる。
【００２２】
図３の例はＤＲＡＭにアクセスしているが、別の実施例では、例えば同期式ＤＲＡＭ等のような別の種類のメモリへのアクセスでもよい。説明された例ではＦＳＢを個別素子として示したが、他の例では、プロセッサは或いはメモリコントローラでさえ、図３に関連して説明されたＦＳＢコントローラの機能を組み込んでもよい。
【００２３】
図４は本発明を利用するコンピュータシステムの一例を示す。概して、図４に図示されるコンピュータシステム４００は、バス４０１を介してシステムメモリ４１３に結合される処理部４０２を含む。システムメモリ４１３は、リードオンリメモリ（ＲＯＭ）４０４及びランダムアクセスメモリ（ＲＡＭ）４０３を有する。ＲＯＭ４０４は、基本的入出力システム（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）４１６を有し、ＲＡＭ４０３はオペレーティングシステム４１８、アプリケーションプログラム４２０及びプログラムデータ４２４を有する。処理部４０２は、ＦＳＢコントローラ４２２を通じてシステムメモリ４１３と通信し、ＦＳＢコントローラ４２２はメモリコントローラ（図示せず）を通じてシステムメモリ４１３と通信する。ＦＳＢコントローラ４２２は、図３に関連して説明されたフローチャートに従って動作する。
【００２４】
コンピュータシステム４００は、バス４０１を通じて処理部４０２に結合された、大容量格納装置４０７、入力装置４０６及びディスプレイ装置４０５を含む。大容量格納装置４０７は、フロップディスクドライブ、（例えば、磁気的、光学的、磁気−光学的等のような）固定ディスクドライブ又はストリーミングテープドライブのような永続的なデータ格納装置を表す。大容量格納装置は、アプリケーションプログラム４２８を含むプログラムデータ及びオペレーティングシステム４２６を格納する。処理部４０２は、広く様々ないかなる汎用プロセッサ若しくはマイクロプロセッサ（例えば、インテル（登録商標）コーポレーションにより製造されたペンティアム（登録商標）プロセッサファミリ）、特定用途向けプロセッサ又は個々にプログラムされた論理装置でもよい。
【００２５】
ディスプレイ装置４０５は、コンピュータシステム４００用の画像出力を与える。キーボードやマウスのような入力装置４０６は、情報及びコマンドの選択内容を処理部４０２とやりとりするバス４０１に結合されてもよい。１以上のネットワーク装置４０８がバス４０１を通じて処理部４０２に結合され、そのネットワーク装置は、コンピュータシステム４００に接続される電子装置を制御し、それらにデータを伝送するために使用可能である。ネットワーク装置４０８は、コンピュータシステム４００をネットワークに接続し、イーサーネット（登録商標）装置、電話ジャック及び衛星リンクを含んでもよい。
【００２６】
以上、メモリアクセスを制御する方法及び装置が説明された。本発明の例示として考察されるものが図示及び説明されたが、本発明の真の範囲から逸脱せずに、他の様々な修正がなされてもよいこと及び均等物が置換されてもよいことは当業者に理解されるであろう。更に、ここに説明済みの本発明の本質的概念から逸脱せずに、多くの修正が本発明の教示内容に関する特定の状況に採用されてもよい。従って、本発明は説明された特定の実施例に限定されず、本発明は添付の特許請求の範囲内にそれら全ての実施例を包含することが意図される。
【図面の簡単な説明】
【００２７】
【図１】メモリアクセスをスケジュール管理する従来例によるフロントサイドバス（ＦＳＢ）を示す。
【図２Ａ】メモリアクセスをスケジュール管理する本発明の一実施例によるフロントサイドバス（ＦＳＢ）を示す。
【図２Ｂ】本発明の一実施例によるメモリアクセスに関連するパラメータを示す。
【図３】本発明の一実施例によるメモリアクセスのフローチャートを示す。
【図４】本発明を使用するコンピュータシステムの一例を示す。
【図１】
2005518606.tif 000003
【図２Ａ】
2005518606.tif 000004
【図２Ｂ】
2005518606.tif 000005
【図３】
2005518606.tif 000006
【図４】
2005518606.tif 000007
【国際調査報告】
2005518606.tif 000008
2005518606.tif 000009