(57)【要約】【課題】　メモリ・バスのアクティビティに基づいたリクエストの自発的な再優先順位付けによりメモリ・コントローラを最適化するための方法及びプログラムを提供する。【解決手段】　本発明は、メモリ・バスのアクティビティを継続的に監視し、必要な場合に、未処理のメモリ・リクエストのキューを再優先順位付けする。更に、メモリ・バスにおける既存のリクエストを打ち切り、又は、既存のリクエストを中断して未処理のリクエストを完了させる。【選択図】　図１
2004118833.tif 000002
【特許請求の範囲】
【請求項１】
　チップの内部メモリ・コントローラを自発的に最適化する方法であって、該内部メモリ・コントローラが複数のリクエスタからのメモリ・バスに対する複数の未処理のリクエストを有し、
　メモリ・バスのアクティビティを監視するステップと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを再優先順位付けするステップと、
　前記監視するステップ及び再優先順位付けするステップを繰り返すステップと、
　を含む方法。
【請求項２】
　更に、前記メモリ・バスにおける既存のリクエストを打ち切って、未処理のリクエストを完了させるステップを含む、請求項１に記載の方法。
【請求項３】
　更に、前記メモリ・バスにおける既存のリクエストを中断し、未処理のリクエストを完了させ、該既存のリクエストを継続するステップを含む、請求項１に記載の方法。
【請求項４】
　前記監視するステップが、メモリ・バス・パフォーマンス係数を収集するステップを含む、請求項１に記載の方法。
【請求項５】
　各リクエスタが評価期間レジスタ、リクエスタ最小スループット・レジスタ、及び効率レジスタを含み、各未処理のリクエストがウェート係数を含み、
　前記再優先順位付けするステップが、
　前記メモリ・バスのスループットを決定するステップと、
　リクエスタが前記バスへのアクセスを獲得するために待たなければならない見積もり待ち時間を決定するステップと、
　それぞれのリクエスタ評価期間、リクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算するステップと、
　見積もり待ち時間よりも小さい受け入れ可能な待ち時間を有する各未処理のリクエストに新たなウェート係数を割り当てるステップと、
　未処理のリクエストの優先順位付けされたキューを再優先順位付けするステップと、
　を含む、請求項４に記載の方法。
【請求項６】
　前記再優先順位付けするステップが、ハッシュ・アルゴリズムをインプリメントするステップを含む、請求項５に記載の方法。
【請求項７】
　前記メモリ・バスのスループットが、特定のタイプの転送に対する少なくとも１つの転送速度、前記転送の部分相互間のラグ・タイム、及び前記評価期間に基づく、請求項５に記載の方法。
【請求項８】
　メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するためのメモリ・コントローラであって、
　メモリ・バス監視システムと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けする再優先順位付けシステムと、
　を含むメモリ・コントローラ。
【請求項９】
前記再優先順位付けシステムが、
メモリ・バス・スループット計算器と、
リクエスタ受け入れ可能待ち時間計算器と、
見積もり待ち時間計算器と、
前記受け入れ可能待ち時間を前記見積もり待ち時間に比較するための比較器と、
前記受け入れ可能待ち時間が前記見積もり待ち時間よりも小さい場合、未処理のメモリ・リクエストにウェート係数を割り当てるウェート・アサイナと、
前記ウェート係数に基づいて未処理のメモリ・リクエストの優先順位付けされたキューを再優先順位付けする再優先順位付け手段と、
を含む、請求項８に記載のメモリ・コントローラ。
【請求項１０】
　更に、前記未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントすべき時を決定するライトバック制御手段を有するインプリメンテーション・システムを含む、請求項９に記載のメモリ・コントローラ。
【請求項１１】
　更に、ライトバック制御手段を有するインプリメンテーション・システムを含み、前記ライトバック制御手段が、それぞれの未処理のメモリ・リクエストに関する少なくとも１つのリクエスタの優先順位レジスタを変更することによって、未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントする、請求項１０に記載のメモリ・コントローラ。
【請求項１２】
　前記ライトバック制御手段が、
　前記メモリ・バスにおける既存のリクエストを打ち切り、未処理のリクエストを完了させるステップ、及び
　前記メモリ・バスにおける既存のリクエストを中断し、未処理のリクエストを完了させ、前記既存のリクエストを継続するステップ
　の少なくとも１つのステップを行うことによって、前記未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントする、請求項１１に記載のメモリ・コントローラ。
【請求項１３】
　更に、前記未処理のメモリ・リクエストの優先順位付けされたキューを記憶するための優先順位遷移レジスタを含む、請求項９に記載のメモリ・コントローラ。
【請求項１４】
　前記メモリ・バス・スループット計算器が、特定のタイプの転送に対する少なくとも１つの転送速度、前記転送の部分相互間のラグ・タイム、及び前記評価期間に基づいてメモリ・バスのスループットを決定する、請求項９に記載のメモリ・コントローラ。
【請求項１５】
　前記受け入れ可能待ち時間計算器が、所定のリクエスタ評価期間、所定のリクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算する、請求項９に記載のメモリ・コントローラ。
【請求項１６】
　前記見積もり待ち時間計算器が、リクエスタ評価期間及び前記メモリ・バス・スループットに基づいてリクエスタに対する見積もり待ち時間を計算する、請求項９に記載のメモリ・コントローラ。
【請求項１７】
　前記再優先順位付け手段がハッシュ・アルゴリズムをインプリメントする、請求項９に記載のメモリ・コントローラ。
【請求項１８】
　メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するメモリ・コントローラを最適化するためのコンピュータ可読プログラム・コードを具体化したコンピュータ使用可能媒体を含むコンピュータ・プログラムであって、
　メモリ・バスのアクティビティを監視するように構成されたプログラム・コードと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けするように構成されたプログラム・コードと、
　を含むコンピュータ・プログラム。
【請求項１９】
　前記再優先順位付けするように構成されたプログラム・コードが、
　前記メモリ・バスのスループットを決定する作業、
　リクエスタが前記バスへのアクセスを獲得するために待たなければならない見積もり待ち時間を決定する作業、
　それぞれのリクエスタ評価期間、リクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算する作業、
　見積もり待ち時間よりも小さい受け入れ可能な待ち時間を有する各未処理のリクエストにウェート係数を割り当てる作業、及び
　前記ウェート係数に基づいて未処理のメモリ・リクエストの優先順位付けされたキューを再優先順位付けする作業、
　の少なくとも１つを完了させるように構成されたプログラム・コードを含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
　更に、それぞれの未処理のメモリ・リクエストに関する少なくとも１つのリクエスタの優先順位レジスタを変更することによって未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントするように構成されたプログラム・コードを含む、請求項１８に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、メモリ転送に関し、特に、メモリ・コントローラ最適化及びメモリ・コントローラを最適化するための関連した方法及びプログラムに関するものである。
【背景技術】
【０００２】
　メモリ・バスのアービトレーション時、内部メモリ・コントローラは、メモリ・バスからの既存のリクエストに対する肯定応答に対処することに大量のサイクルが費やされる。このラグ・タイムは、数多くの不利な点を作り出す。第１に、ラグ・タイム中、メモリ・バス及び（又は）対応するメモリ・コントローラがアイドル状態にあるために、リソースが十分に活用されない。第２に、メモリ・コントローラにとって未処理のメモリ・リクエストのキューが残っている場合、高い優先順位の未処理のリクエストが、メモリ・バスにおける低い優先順位の既存のリクエストの終了を待つように強いられることがある。別の状況では、未処理のリクエストが別の未処理のリクエストよりも高い優先順位を持つことがあるが、キューにおいて正しく位置決めされないことがある。外部制御からの何らかの選択可能な設定に基づいて、メモリ・リクエストの優先順位を調整するための、即ち、キューを再配列するための現在のテクノロジが知られている。残念ながら、バスのアクティビティに基づいて未処理のリクエストを自発的には再優先順位付けしないいずれの再配列手段も、メモリ・コントローラの使用を十分に最適化することができない。更に、現在のテクノロジは、既存のリクエストを打ち切るか又は既存のリクエストを中断することによって得られる効率に関する利点を利用していない。
【０００３】
　以上の点から見て、従来技術には、メモリ・バスのアクティビティに基づいて未処理のリクエストを自発的に再優先順位付けすること及び、適切な場合には、既存のリクエストを打ち切る又は中断することによるメモリ・コントローラ最適化を求める要求がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
　本発明は、メモリ・バスのアクティビティに基づいてリクエストの再優先順位付けを行うことによる自発的な最適化を示すメモリ・コントローラ、方法、及びプログラムを提供するものである。本発明は、メモリ・バスのアクティビティを連続的に監視し、必要に応じて、未処理のリクエストを再優先順位付けする。更に、メモリ・バスにおける既存のリクエストを打ち切る又は中断するための機構が提供される。
【課題を解決するための手段】
【０００５】
　本発明の１つの局面は、チップの内部メモリ・コントローラを自発的に最適化する方法に関する。その内部メモリ・コントローラは、複数のリクエスタからのメモリ・バスに対する複数の未処理のリクエストを有する。この方法は、メモリ・バスのアクティビティを監視するステップと、メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを再優先順位付けするステップと、上記の２つのステップを繰り返すステップとを含む。
【０００６】
　本発明の第２の局面は、メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するためのメモリ・コントローラに関する。そのメモリ・コントローラは、メモリ・バス監視システムと、メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けする再優先順位付けシステムとを含む。
【０００７】
　本発明の第３の局面は、メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するメモリ・コントローラを最適化するためのコンピュータ可読プログラム・コードを具体化されたコンピュータ使用可能媒体を含むコンピュータ・プログラムに関する。そのコンピュータ・プログラムは、メモリ・バスのアクティビティを監視するように構成されたプログラム・コードと、メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けするように構成されたプログラム・コードとを含む。
【０００８】
　本発明の上記及び他の特徴は、本発明の実施例に関する以下の更に詳細な説明から明らかであろう。
【発明を実施するための最良の形態】
【０００９】
　添付図面を参照すると、図１は、メモリ・インターフェース１０を含むコンピュータ・システム１２のブロック図である。コンピュータ・システム１２は、特に、中央処理ユニット（ＣＰＵ）１４、メモリ１６、設計済みのメモリ・バス１７、メモリ・バス・コントローラ１８、及びそのシステムの種々の機能を提供する少なくとも１つのチップ２０を含む。各チップ２０は、複数の内部チップレット（chiplet）２４によってアクセスされる内部メモリ・コントローラ２２を含む。チップレット２４は、本願では、「リクエスタ」と呼ばれる。それは、本発明では、それら各チップレットがメモリ・アクセス・バス１７をアクセスするために内部メモリ・コントローラ２２に対してメモリ・リクエストを発行するためである。各チップ２０は、未処理のリクエストの優先順位付けされたキュー５６を記憶するための遷移レジスタ５４も含む。メモリ・バス１７は、メモリ・バス・コントローラ１８を介してデータを読み取り又は書き込むべく、特に、メモリ１６をアクセスするために、メモリ・バス・コントローラ１８とコミュニケーションを行う。
【００１０】
　キャッシュ・メモリ、通信システム、システム・ソフトウェア等のような更なるコンポーネントがコンピュータ・システム１２の一部分として提供可能である。メモリ１６は、磁気媒体、光学的媒体、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、データ・オブジェクト等を含む任意のタイプのデータ記憶装置及び（又は）通信媒体を含み得る。更に、メモリ１６は、１つ又はそれ以上のタイプのデータ記憶装置を含む単一の物理的ロケーションにあり、或いは複数の物理的システムに分散可能である。ＣＰＵ１４も同様に、単一の処理ユニット、或いは１つ又はそれ以上のロケーションに分散された複数の処理ユニットを含み得る。１つのチップ２０が示されているけれども、任意の数のチップ２０がメモリ・バス１７をアクセスし得ることは明らかである。
【００１１】
　図１に示されるように、各リクエスタ２４は、特に、識別標識３０、所定の評価期間３２、所定のリクエスタの最小スループット３４、リクエスタ優先順位３６、及び効率３８を記憶するための多数のレジスタを含む。
【００１２】
　説明の便宜上、内部メモリ・コントローラ２２は、図２に示されるように区分けされた本発明に関連した機能を有し得る。特に、コントローラ２２は、メモリ・バス監視システム２６及びメモリ・バス・アクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けする再優先順位付けシステム２７を含むものとして示される。また、インプリメンテーション・システム２８は、未処理のリクエストの優先順位付けされたキューがいつ及びどのようにしてインプリメントされるかを決定するために設けられる。再優先順位付けシステム２７は、メモリ・バス・スループット計算器４０、受け入れ可能待ち時間計算器４２、見積もり待ち時間計算器４４、比較器４６、ウェート・アサイナ（assigner）割当器４８、及び再優先順位付け器５０を含むように区分けされた機能を有し得る。インプリメンテーション・システム２８は、ライトバック（writeback）制御器５２を含み得る。メモリ・コントローラ２２は、図示されてないがメークアップに固有であると考えられる転送に関する種々の他の機能を含むことは明らかである。
【００１３】
　図２を参照して、上記の機能のオペレーションを説明する。そのオペレーションのすべてのステップを説明するけれども、それらステップすべてが、特許請求の範囲に示されたようなメモリ・コントローラ２２の発明上の本質を構成するわけではない。更に、図示のステップの順序は、望ましい場合、いくつかの例において変更可能である。
【００１４】
　第１のステップＳ１では、内部メモリ・コントローラ２２の監視システム２６を監視することによって、メモリ・バス１７のアクティビティが継続的に監視される。このステップは、メモリ・バス１７のビジー状態を監視することを含むが、種々の転送タイプ、転送速度及び期間、並びに転送におけるタイム・ラグのようなメモリ・バスのパフォーマンス係数を収集することも含み得る。それぞれの転送のリクエスト、肯定応答、及び完了における任意の２つ相互間のラグ・タイムが決定され得る。
【００１５】
　ステップＳ２−Ｓ７において、メモリ・バスのパフォーマンス・パラメータが再優先順位付けシステム２７によって使用され、メモリ・バス１７のアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けする。ステップ２では、メモリ・バス・スループット計算器４０（図１）を使用してメモリ・バスのスループットを計算するために、メモリ・バス・パフォーマンス・パラメータが使用され得る。メモリ・バスのスループットは、或る量のデータ、例えば、単位時間当たりのバイト数で表記され得るし、特定のタイプの転送（バスの幅及び時間に基づいた）に対する転送速度、及び転送の部分相互間、例えば、リクエストと肯定応答、リクエストと転送完了等の間におけるラグ・タイムの関数である。メモリ・バスのスループットは、評価期間３２（図１）、即ち、リクエスタがメモリ・バスのアクティビティを評価したいウィンドウまたは期間の関数でもある。例えば、特定のバス（幅）に対するメモリ・バスのスループットは、転送が３nsの間１ビット／nsで生じ、２nsの間停止し、３nsの間２ビット／nsで継続し、しかる後、残りの２nsの間再び停止する１０nsウィンドウにわたって評価され、その結果、０.９ビット／ns（９ビット／１０ns）が生じ得る。従って、各リクエスタ２４は、それぞれの評価期間に基づいてメモリ・バスのスループットのカスタマイズされた評価を開始し得る。
【００１６】
　ステップＳ３では、リクエスタ２４にとって受け入れ可能な待ち時間が受け入れ可能待ち時間計算器４２（図１）によって計算される。以後、ＡＷＴと呼ばれるその「受け入れ可能待ち時間」は、リクエスタがメモリ・バス１７へのアクセスを待つことを意図したカスタマイズし得る量の時間である。ＡＷＴは多くの方法で計算可能であり、或いはレジスタによって簡単にセット可能である。計算の１つの実施例は、それぞれのリクエスタの評価期間３２（図１）、リクエスタの最小スループット３４（図１）、効率３８（図１）、及びバス１７の幅に基づいている。「リクエスタの最小スループット」３４は、リクエスタが受け入れるであろうメモリ・バス１７の最小スループットである。効率は、リクエスタ最小スループット３４に適用されるべきユーザ定義のパーセンテージである。この実施例では、ＡＷＴ＝［効率ｘリクエスタ最小スループット］／ビット・カウント　である。但し、ビット・カウントは、評価期間３２中にカウントされたサイクル数掛けるバス幅である。例えば、３２ビット時の５サイクルは１６０ビットである。
【００１７】
　ステップＳ４では、その後のメモリ・リクエスト完了に対する見積もり待ち時間が見積もり待ち時間計算器４４によって計算される。１つの実施例では、以後、ＥＷＴと呼ばれる「見積もり待ち時間」は、メモリ・バス・スループット（ステップＳ２から）及びリクエスタ評価期間３２に基づいている。即ち、メモリ・バス・スループットがリクエスタ評価期間３２によって除される。ＥＷＴは、メモリ・バス１７が評価期間中に未処理のリクエストを完了するために必要とすると思われる時間の量を表し、メモリ・バス１７のワークロードに依存して変わるであろう。換言すれば、ＥＷＴは、平均的には、メモリ・コントローラ２２が転送を完了するために待たなければならない時間の量、従って、メモリ・コントローラ２２が再優先順位付けのような他の仕事を完了するために使用し得る時間の量である。
【００１８】
　ステップＳ２−Ｓ４に関して、リクエスタに対して１つの評価期間３２しか説明しなかったけれども、種々の計算に対する種々の評価期間、例えば、ＡＷＴ及びＥＷＴ計算の各々に対して評価期間が設定可能であることは明らかである。更に、ＡＷＴ、ＥＷＴ、及びメモリ・バス・スループットを計算するための特定の実施例が説明されたけれども、ユーザの好みに従って種々の係数及び数学的公式がインプリメント可能であることは明らかである。
【００１９】
　ステップＳ５では、比較器４６が各リクエストに対してＡＷＴをＥＷＴに比較する。ＡＷＴがＥＷＴよりも小さい場合、「ウェート割り当て」イネーブル信号がそのリクエスタのリクエストに対するウェート・アサイナ４８に送られる。ＡＷＴがＥＷＴよりも大きいとき、それぞれのリクエスタがメモリ・バス１７にアクセスするための見積もり待ち時間を受け入れること及びリクエストの優先順位付けの自発的な再評価が完了していないことが重要である。しかし、リクエストの優先順位は、以下で説明するように、他の未処理のリクエストを再優先順位付けすることによって変更可能である。
【００２０】
　ステップ６では、「ウェート割り当て」イネーブル信号を生成する未処理のリクエストがウェート・アサイナ４８によって新たなウェート付け係数を割り当てられる。つまり、未処理のメモリ・リクエストはウェート付け係数を有し、新たなリクエストは、後述するように、内部メモリ・コントローラ２２によって最初に受け取られるとき、ウェート・アサイナ４８によってウェート付け係数を割り当てられる。ウェートを割り当てることは、未処理のリクエストにウェート付け係数を割り当てるハッシュ・アルゴリズムをインプリメントすることを含む。ウェート付け係数を計算する１つの技法は、リクエスタのそれぞれの識別標識３０（図１）、ＥＷＴ、及びＡＷＴ上にそれらを基礎付けることである。更に詳しく言えば、各未処理のリクエストは、それぞれのＡＷＴによってそれぞれのＥＷＴを除すること、即ち、ＥＷＴ／ＡＷＴによって決定されたウェート付け係数を割り当てられ得る。ウェート付け係数は、リクエスタの識別標識３０（図１）の何らかの表示を含み得るので、より重要なリクエスタからのリクエストが早く処理され得る。未処理のリクエストのキュー５６と比較するために、メモリ・バス１７における既存のリクエストは上述のように計算されたウェート付け係数も持ち得る。ウェート付け係数が多数の方法で計算され得ること、及び上述の実施例が単なる１つの計算方法であることは明らかである。
【００２１】
　ステップ７では、優先順位遷移レジスタ５４に記憶された未処理のメモリ・リクエストのキュー５６が、未処理のリクエストの変更されたウェート付け係数に基づいて再優先順位付け器５０により再優先順位付けされる。そこで、新たなキュー５６が優先順位遷移レジスタ５４に記憶される。
【００２２】
　ステップＳ８−Ｓ９における新たなキューをインプリメントするタスクは、インプリメンテーション・システム２８の機能である。ステップ８では、未処理のリクエストのキュー５６がインプリメントされる時を、ライトバック制御器５２が決定する。ライトバック制御器５２は、リクエスタ２４とインターフェースするメモリ・コントローラ２２におけるハンドシェーク制御装置から生成される。新たなキュー５６をインプリメントすべき時の決定を行う場合、種々の要素が考慮され得る。例えば、いずれの未処理のリクエストよりも高い優先順位の既存のリクエストの転送が生じようとする場合、ライトバック制御器５２は、インプリメンテーションがその転送を遅らせる場合、新たなキューをインプリメントするために待ち得る。別の例では、ライトバック制御器５２は、新たなキューをインプリメントする前に、現行の未処理のリクエストが開始されるのを待ち得る。種々の所定シナリオのいずれも、新たなキュー５６がインプリメントされるときの更なる制御のために、コンピュータ・システム１２の他の部分によってライトバック制御器５２をオーバライドすることを可能にするホスト制御器６０が設けられる。例えば、ホスト制御器６０は、既知のタイプの転送が生じ且つ計算が必要ないか、または或るシステム・コンポーネントが転送の手操作制御を望むとき、ライトバック制御器５２をオーバライドし得る。
【００２３】
　ステップＳ９では、新たなキュー５６をインプリメントする方法がライトバック制御器５２によって決定される。インプリメンテーションは種々の形式を取り得る。説明の便宜上、４つのリクエスタ２４Ａ、２４Ｂ、２４Ｃ、及び２４Ｄが対応するリクエストＡ、Ｂ、Ｃ、及びＤ、並びにそれぞれの優先順位１、２、３、及び４（１が最高である）と共に存在し得る。第１の例では、インプリメンテーションは、転送アクティビティにおける直接変更のないリクエスタ２４Ａ−２４Ｄの優先順位レジスタ３６（図１）のオーバライドを含む。即ち、内部メモリ・コントローラ２２がリクエストに関連して作業する順序が変更されるように、キュー５６からの未処理のメモリ・リクエストの優先順位がそれぞれのリクエスタ優先順位レジスタ３６においてインプリメントされる。例えば、優先順位の順序がＡ、Ｂ、Ｃ、ＤからＤ、Ａ、Ｂ、Ｃに変えられるように、リクエスタ２４Ｄのリクエストの優先順位が上げられてしまうことがある。
【００２４】
　第２の例では、ライトバック制御器５２がメモリ・バス１７におけるリクエスタの既存のリクエストの打ち切りをインプリメントし、他の未処理のリクエストを完了させ得る。この状況は、既存のリクエスト、例えば、Ｄの優先順位が低く、新たな未処理のリクエスト、例えば、Ａの優先順位が非常に高く、従って、既存のリクエストの打ち切りを必要とする場合に起こり得る。
【００２５】
　第３の例では、ライトバック制御器５２が既存のリクエストの中断をインプリメントし、他の未処理のリクエストを完了させ、しかる後、元の既存のリクエストを進め得る。この状況は、既存のリクエスト、例えば、既存のリクエスト、例えば、Ｃに対するメモリ・バス１７からの肯定応答を待っており且つ未処理のリクエスト、例えば、Ａに対するＥＴＷがその未処理のリクエストを既存のリクエストＣの前に完了させ得ることを表すけれども、メモリ・コントローラ２２がアイドル状態にある場合に生じ得る。この場合、メモリ・コントローラ２２は、既存のリクエストＣを中断し（即ち、一時保留し）、未処理のリクエストＡを完了させ、しかる後、既存のリクエストＣを継続するように命令される。もちろん、未処理のリクエストの完了は、既存リクエスタの２４ＣのＡＷＴに反しないことを基礎とする。
【００２６】
　ステップ９に続いて、上記のプロセスが反復する、即ち、ステップＳ１においてバスのアクティビティの監視を継続する。
【００２７】
　上記の発明は、チップ２０において更なる効力を提供し、内部メモリ・コントローラ２２を効率的に利用するために最良の機会を与える。メモリ・バス１７のアクティビティを継続的に監視することによって、本発明は、静的な優先順位に比べて、内部メモリ・バス・コントローラ２２のワークロードに関する融通性を増加させる。
【００２８】
　前述の説明において、検討された方法ステップが、チップ２０内に含まれたハードウェアによって、及び内部メモリ・コントローラ２２及び（又は）リクエスタ２４内のレジスタ・セット及び制御ハードウェアによって遂行されることが理解されるであろう。しかし、本願において開示された種々の装置、モジュール、メカニズム、及びシステムがハードウェア又はソフトウェア、或いはハードウェア及びソフトウェアの組み合わせによって実現され得ること、及び示されたもの以外のものに区画けされ得ることも明らかである。それらは、任意のタイプのコンピュータ・システム又は本願において開示された方法を実行するように適応した他の装置によってインプリメントされ得る。ハードウェア及びソフトウェアの典型的な組み合わせは、本願において開示された方法を実行するためのコンピュータ・プログラムがロードされそして実行されるとき、そのコンピュータ・プログラムによって制御される汎用コンピュータ・システムである。別の方法として、本発明の１つ又はそれ以上の機能的タスクを実行するための特殊なハードウェアを含む特定用途のコンピュータが利用可能であろう。本発明は、コンピュータ・プログラムにも組み込まれ得る。そのプログラムは、本願において開示された方法及び機能のインプリメンテーションを可能にするすべてのフィーチャを含み、コンピュータ・システムにロードされたとき、これらの方法及び機能を実行することができるものである。本明細書におけるコンピュータ・プログラム、ソフトウェア・プログラム、プログラム、プログラム、又はソフトウェアは、直接に、或いは、
（ａ）他の言語、コード、又は表記法に変換した後、及び（又は）
（ｂ）異なるマテリアル・フォームに複製した後
情報処理能力を持ったシステムに特定の機能を遂行させることを意図された一連の命令を任意の言語、コード、又は表記法において表現したあらゆるものを意味する。
【００２９】
　上記の特定の実施例に関連して本発明を説明したけれども、多くの代替え、修正、及び変更が当業者にとって明白であることは明らかである。従って、上記の本発明の実施例は、例示的であることを意図し、限定するものではない。特許請求の範囲において定義された本発明の精神及び範囲から逸脱することなく種々の変更が行われ得る。
【００３０】
　まとめとして、本発明の構成に関して以下の事項を開示する。
【００３１】
（１）チップの内部メモリ・コントローラを自発的に最適化する方法であって、該内部メモリ・コントローラが複数のリクエスタからのメモリ・バスに対する複数の未処理のリクエストを有し、
　メモリ・バスのアクティビティを監視するステップと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを再優先順位付けするステップと、
　前記監視するステップ及び再優先順位付けするステップを繰り返すステップと、
　を含む方法。
（２）更に、前記メモリ・バスにおける既存のリクエストを打ち切って、未処理のリクエストを完了させるステップを含む、上記（１）に記載の方法。
（３）更に、前記メモリ・バスにおける既存のリクエストを中断し、未処理のリクエストを完了させ、該既存のリクエストを継続するステップを含む、上記（１）に記載の方法。
（４）前記監視するステップが、メモリ・バス・パフォーマンス係数を収集するステップを含む、上記（１）に記載の方法。
（５）各リクエスタが評価期間レジスタ、リクエスタ最小スループット・レジスタ、及び効率レジスタを含み、各未処理のリクエストがウェート係数を含み、
　前記再優先順位付けするステップが、
　前記メモリ・バスのスループットを決定するステップと、
　リクエスタが前記バスへのアクセスを獲得するために待たなければならない見積もり待ち時間を決定するステップと、
　それぞれのリクエスタ評価期間、リクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算するステップと、
　見積もり待ち時間よりも小さい受け入れ可能な待ち時間を有する各未処理のリクエストに新たなウェート係数を割り当てるステップと、
　未処理のリクエストの優先順位付けされたキューを再優先順位付けするステップと、
　を含む、上記（４）に記載の方法。
（６）前記再優先順位付けするステップが、ハッシュ・アルゴリズムをインプリメントするステップを含む、上記（５）に記載の方法。
（７）前記メモリ・バスのスループットが、特定のタイプの転送に対する少なくとも１つの転送速度、前記転送の部分相互間のラグ・タイム、及び前記評価期間に基づく、上記（５）に記載の方法。
（８）メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するためのメモリ・コントローラであって、
　メモリ・バス監視システムと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けする再優先順位付けシステムと、
　を含むメモリ・コントローラ。
（９）前記再優先順位付けシステムが、
メモリ・バス・スループット計算器と、
リクエスタ受け入れ可能待ち時間計算器と、
見積もり待ち時間計算器と、
前記受け入れ可能待ち時間を前記見積もり待ち時間に比較するための比較器と、
前記受け入れ可能待ち時間が前記見積もり待ち時間よりも小さい場合、未処理のメモリ・リクエストにウェート係数を割り当てるウェート・アサイナと、
前記ウェート係数に基づいて未処理のメモリ・リクエストの優先順位付けされたキューを再優先順位付けする再優先順位付け手段と、
を含む、上記（８）に記載のメモリ・コントローラ。
（１０）更に、前記未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントすべき時を決定するライトバック制御手段を有するインプリメンテーション・システムを含む、上記（９）に記載のメモリ・コントローラ。
（１１）更に、ライトバック制御手段を有するインプリメンテーション・システムを含み、前記ライトバック制御手段が、それぞれの未処理のメモリ・リクエストに関する少なくとも１つのリクエスタの優先順位レジスタを変更することによって、未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントする、上記（１０）に記載のメモリ・コントローラ。
（１２）前記ライトバック制御手段が、
　前記メモリ・バスにおける既存のリクエストを打ち切り、未処理のリクエストを完了させるステップ、及び
　前記メモリ・バスにおける既存のリクエストを中断し、未処理のリクエストを完了させ、前記既存のリクエストを継続するステップ
　の少なくとも１つのステップを行うことによって、前記未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントする、上記（１１）に記載のメモリ・コントローラ。
（１３）更に、前記未処理のメモリ・リクエストの優先順位付けされたキューを記憶するための優先順位遷移レジスタを含む、上記（９）に記載のメモリ・コントローラ。
（１４）前記メモリ・バス・スループット計算器が、特定のタイプの転送に対する少なくとも１つの転送速度、前記転送の部分相互間のラグ・タイム、及び前記評価期間に基づいてメモリ・バスのスループットを決定する、上記（９）に記載のメモリ・コントローラ。
（１５）前記受け入れ可能待ち時間計算器が、所定のリクエスタ評価期間、所定のリクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算する、上記（９）に記載のメモリ・コントローラ。
（１６）前記見積もり待ち時間計算器が、リクエスタ評価期間及び前記メモリ・バス・スループットに基づいてリクエスタに対する見積もり待ち時間を計算する、上記（９）に記載のメモリ・コントローラ。
（１７）前記再優先順位付け手段がハッシュ・アルゴリズムをインプリメントする、上記（９）に記載のメモリ・コントローラ。
（１８）メモリ・バスに対する複数の未処理のメモリ・リクエストを管理するメモリ・コントローラを最適化するためのコンピュータ可読プログラム・コードを具体化したコンピュータ使用可能媒体を含むコンピュータ・プログラムであって、
　メモリ・バスのアクティビティを監視するように構成されたプログラム・コードと、
　メモリ・バスのアクティビティに基づいて未処理のメモリ・リクエストを自発的に再優先順位付けするように構成されたプログラム・コードと、
　を含むコンピュータ・プログラム。
（１９）前記再優先順位付けするように構成されたプログラム・コードが、
　前記メモリ・バスのスループットを決定する作業、
　リクエスタが前記バスへのアクセスを獲得するために待たなければならない見積もり待ち時間を決定する作業、
　それぞれのリクエスタ評価期間、リクエスタ最小スループット、効率、及びバス幅に基づいて、リクエスタにとって受け入れ可能な待ち時間を計算する作業、
　見積もり待ち時間よりも小さい受け入れ可能な待ち時間を有する各未処理のリクエストにウェート係数を割り当てる作業、及び
　前記ウェート係数に基づいて未処理のメモリ・リクエストの優先順位付けされたキューを再優先順位付けする作業、
　の少なくとも１つを完了させるように構成されたプログラム・コードを含む、上記（１８）に記載のコンピュータ・プログラム。
（２０）更に、それぞれの未処理のメモリ・リクエストに関する少なくとも１つのリクエスタの優先順位レジスタを変更することによって未処理のメモリ・リクエストの優先順位付けされたキューをインプリメントするように構成されたプログラム・コードを含む、上記（１８）に記載のコンピュータ・プログラム。
【図面の簡単な説明】
【００３２】
【図１】チップ、メモリ・バス、及びメモリの間のメモリ・インターフェースを含むコンピュータ・システムのブロック図である。
【図２】メモリ・コントローラを最適化するための処理の流れ図である。
【図１】
2004118833.tif 000003
【図２】
2004118833.tif 000004