(57)【特許請求の範囲】
【請求項１】
メモリコントローラにおいて帯域幅プロビジョニングを実行するための方法であって、
複数のマスタからバスファブリックを介してメモリ要求を受信するステップと、
前記メモリ要求の各メモリ要求に割り当てられる優先順位レベルを決定するステップと、
メモリデバイスから受信された、最後に発行された要求に関する情報に基づいて、要求の帯域幅コストを算出するステップと、
メモリデータバス上で各マスタにより消費される、１つの要求当たりのメモリデータバス帯域幅の量を決定するステップと、
各マスタに割り当てられた優先順位クラスと、前記最後に発行された要求に関する前記情報に基づく、各要求の前記帯域幅コストと、各マスタにより消費される、１つの要求当たりのメモリデータバス帯域幅の量と、に基づいて、サービス品質（ＱｏＳ）ロジックを適用して、前記メモリ要求のスケジュールを算出するステップであって、各マスタにより消費される、１つの要求当たりの前記メモリデータバス帯域幅は、最後に発行された要求に関する情報であって、該最後に発行された要求によりターゲットとされたページのページアドレス及びバンクと、該最後に発行された要求の要求タイプと、該最後に発行された要求が、ページヒットを有していたかページミスを有していたか又はページ競合を有していたかと、を含む情報に基づいて算出される、ステップと、
前記スケジュールに基づいて、
前記メモリ要求をメモリコマンドに変換するステップと、
メモリコマンドバスを介して前記メモリコマンドを少なくとも１つのメモリデバイスに送信するステップと、
前記少なくとも１つのメモリデバイスから前記メモリデータバスを介して応答を受信するステップと、
を含む方法。
【請求項２】
前記少なくとも１つのメモリデバイスは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスであり、前記メモリデータバスは、ＤＲＡＭデータバスであり、前記メモリ要求は、ＤＲＡＭメモリ要求であり、前記メモリコマンドは、ＤＲＡＭメモリコマンドであり、前記メモリコマンドバスは、ＤＲＡＭコマンドバスであり、
前記方法は、
前記優先順位レベルに基づいて、複数の優先順位キューのうちの１つの優先順位キューに各ＤＲＡＭ要求を割り当てるステップ
をさらに含む、請求項１記載の方法。
【請求項３】
前記複数の優先順位キューからマスタスケジューリングマルチプレクサに前記ＤＲＡＭ要求を送信するステップと、
各マスタに割り当てられた帯域幅の未使用部分を定期的にモニタリングするステップと、
前記帯域幅の前記未使用部分が予め定められたレベル以下に低下した場合に前記メモリコントローラにおける前記ＤＲＡＭ要求を限定するように前記スケジュールを算出するステップと、
をさらに含む、請求項２記載の方法。
【請求項４】
各マスタに割り当てられた帯域幅の未使用部分を定期的にモニタリングする前記ステップは、
ＱｏＳ帯域幅プロビジョニングロジックを適用して、前記複数のマスタの各マスタに、前記ＤＲＡＭデータバスにおける予め定められた量の帯域幅を割り当てるステップ
を含む、請求項３記載の方法。
【請求項５】
各マスタに割り当てられた帯域幅の未使用部分を定期的にモニタリングする前記ステップは、
ＱｏＳクレジットアキュムレータを適用して、前記複数のマスタの各マスタについてのクレジットをインクリメンタルに累積するステップであって、累積のレートは、前記ＱｏＳ帯域幅プロビジョニングロジックにより各マスタに割り当てられた前記帯域幅に対応し、各マスタについての総クレジットは、予め定められた最大ＱｏＳクレジット値を超えない、ステップ
を含む、請求項４記載の方法。
【請求項６】
各マスタに割り当てられた帯域幅の未使用部分を定期的にモニタリングする前記ステップは、
ＱｏＳチャージ勘定ロジックを適用して、各ＤＲＡＭメモリ要求により消費される前記ＤＲＡＭデータバス上の帯域幅を算出するステップと、
前記ＱｏＳクレジットアキュムレータにおける、各マスタに対応する前記クレジットから、前記の算出された帯域幅を減算することにより、各マスタについてのクレジット残余を算出するステップと、
を含む、請求項５記載の方法。
【請求項７】
各ＤＲＡＭメモリ要求により消費される前記ＤＲＡＭデータバス上の帯域幅を算出することは、最後に発行された要求に関する前記情報に基づいて、要求の前記帯域幅コストを算出することを含む、請求項６記載の方法。
【請求項８】
スケジューリングロジックを適用して、前記帯域幅の未使用部分が予め定められたレベル以下に低下した場合に前記メモリコントローラにおけるＤＲＡＭ要求を限定することは、
ＱｏＳスケジューリングロジックを適用して、各ＤＲＡＭ要求の前記優先順位クラスに基づいて前記ＤＲＡＭ要求をスケジューリングし、ＤＲＡＭ要求を発行したマスタについての、前記ＱｏＳクレジットアキュムレータにおける前記クレジット残余が、予め定められた最小ＱｏＳクレジット値未満である場合に、前記ＤＲＡＭ要求を限定するように前記スケジュールを算出する
ことにより達成される、請求項７記載の方法。
【請求項９】
前記ＤＲＡＭ要求を、複数のＤＲＡＭデバイスのうちの少なくとも１つのＤＲＡＭデバイスに送信することは、
前記マスタスケジューリングマルチプレクサからＤＲＡＭプロトコルエンジンに前記ＤＲＡＭ要求を送信することと、
前記ＤＲＡＭプロトコルエンジンから前記複数のＤＲＡＭデバイスのうちの少なくとも１つのＤＲＡＭデバイスに前記ＤＲＡＭ要求を送信することと、
を含む、請求項８記載の方法。
【請求項１０】
複数のマスタからバスファブリックを介してメモリ要求を受信し、
前記複数のマスタの各マスタに割り当てられる優先順位レベルを決定し、
メモリデバイスから受信された、最後に発行された要求に関する情報に基づいて、要求の帯域幅コストを算出し、
メモリデータバス上で各マスタにより消費される、１つの要求当たりのメモリデータバス帯域幅の量を決定し、
各マスタに割り当てられた優先順位クラスと、前記最後に発行された要求に関する前記情報に基づく、各要求の前記帯域幅コストと、各マスタにより消費される、１つの要求当たりのメモリデータバス帯域幅の量と、に基づいて、サービス品質（ＱｏＳ）ロジックを適用して、前記メモリ要求のスケジュールを算出し、ここで、各マスタにより消費される、１つの要求当たりの前記メモリデータバス帯域幅は、最後に発行された要求に関する情報であって、該最後に発行された要求によりターゲットとされたページのページアドレス及びバンクと、該最後に発行された要求の要求タイプと、該最後に発行された要求が、ページヒットを有していたかページミスを有していたか又はページ競合を有していたかと、を含む情報に基づいて算出され、
前記スケジュールに基づいて、
前記メモリ要求をメモリコマンドに変換し、
メモリコマンドバスを介して前記メモリコマンドを少なくとも１つのメモリデバイスに送信し、
前記少なくとも１つのメモリデバイスから前記メモリデータバスを介して応答を受信する
よう構成されているメモリコントローラ。
【発明の詳細な説明】
【背景技術】
【０００１】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスは、コンピュータ、スマートフォン、タブレット、ゲームコンソール、及びテレビジョンを含む多種多様な電子デバイス内で見つけられる。ＤＲＡＭデバイスは、それらの電子デバイス上で動作しているアプリケーションが、電子デバイス内の不揮発性ストレージ（例えば、フラッシュメモリやハードドライブ）から命令及びデータを、こうした命令が電子デバイスの中央処理装置（ＣＰＵ）又は他の固定ハードウェアユニットにより実行される前に、一時的に記憶させることを可能にする。
【０００２】
効率性の理由から、ＤＲＡＭデバイスは、電子システムにおいて、ＤＲＡＭメモリデバイスへの読み取りトラフィック又は書き込みトラフィックを生成し得る多くの異なるマスタデバイス又はＩＰ（intellectual-property）ロジックブロックにより共用される。各マスタデバイスは、しばしばバスファブリック及びメモリコントローラを介して、メモリ要求をＤＲＡＭデバイスに発行する。メモリコントローラは、これらのメモリ要求をスケジューリングし、これらのメモリ要求がＤＲＡＭデバイスにどのように送信されるかを決定する役割を担う。ＤＲＡＭデバイスのアクセス待ち時間、したがって、ＤＲＡＭデバイスの実効利用帯域幅は、メモリコントローラがメモリ要求をいかに効率的且つ実効的にスケジューリングできるかに依存する。このスケジューリングが非効率的である場合、過度の帯域幅変動が、ビデオゲームにおけるフレームレート低下やオーディオフレームの欠落に起因するサウンドポッピング（sound  popping）といった、システムのハードウェア及びソフトウェアアプリケーションの不具合を生じさせ得る。これらの不具合を防止するための一般的なアプローチは、メモリ要求がどのようにスケジューリングされるかを決定するサービス品質（ＱｏＳ）ロジックを利用すること、及び、できる限り多くの既知の帯域幅変動シナリオ下でアプリケーションに不具合が生じないことを確実にするための広範なテストを実行すること、である。
【０００３】
従来技術において、ＱｏＳロジックソリューションは、主として、優先順位付け及び速度制限という２つのメカニズムに依拠していた。優先順位付けメカニズムは、システムによってより高い優先順位が割り当てられたマスタからの要求を、より低い優先順位が割り当てられたマスタからの要求よりも優先させる。一方、低優先順位のマスタの不足を防止するために、速度制限メカニズムは、高優先順位のマスタが、システムによってそれらに割り当てられた帯域幅の量を超えるのを防止するために使用される。
【０００４】
しかしながら、これらの従来のＱｏＳロジックソリューションは、マスタデバイスにより認識されるような、ＤＲＡＭデバイスの実効帯域幅の大幅な変動を依然として可能にしてしまう。したがって、従来のＱｏＳロジックソリューションを利用する電子システム用に開発されたソフトウェアアプリケーションは、帯域幅変動が広範にテストされている特定のタイプのＤＲＡＭに制限されていた。より高速であれより低速であれ異なるタイプのＤＲＡＭデバイスが、システムにおいて使用されるならば、ＱｏＳロジックソリューションは、さらなる帯域幅変動を受け、ソフトウェアアプリケーションは、正しく動作しないであろう。通常は長い製品ライフサイクルを有するゲームコンソールの例においては、この問題は、以前に開発されたゲームが、アップデートされたハードウェア上で正しく動作しないようになることをおそれて、コンソールメーカーが、ゲームコンソールのライフサイクルの後期の間に、より高速でより低価格のタイプのＤＲＡＭに切り替えることを妨げさせてしまう。
【発明の概要】
【０００５】
細粒度（fine-grained）ＱｏＳロジックを適用するためのシステム及び方法が提供される。本システムは、メモリコントローラを含み得る。メモリコントローラは、複数のマスタからバスファブリックを介してメモリアクセス要求を受信するよう構成されている。メモリコントローラは、複数のマスタの各マスタの優先順位クラスを決定し、さらに、データバス上で各マスタにより消費されるデータバス帯域幅の量を決定する。複数のマスタの各マスタに割り当てられた各マスタに割り当てられた優先順位クラスと、各マスタにより消費されるデータバス帯域幅の量と、に基づいて、メモリコントローラは、細粒度ＱｏＳロジックを適用して、メモリアクセス要求のスケジュールを算出する。このスケジュールに基づいて、メモリコントローラは、メモリアクセス要求をメモリアクセスコマンドに変換し、メモリコマンドバスを介してメモリアクセスコマンドをメモリデバイスに送信し、メモリデバイスからメモリデータバスを介して応答を受信する。
【０００６】
この発明の概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのうち選択されたコンセプトを簡略化された形で紹介するために提供されている。この発明の概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。さらに、特許請求される主題は、本開示のいずれかの部分に記載されているいずれかの問題又は全ての問題を解決する実施形態に限定されるものではない。
【図面の簡単な説明】
【０００７】
【図１】一実施形態に従った、細粒度ＱｏＳロジックを実行して、ＤＲＡＭデータバスの帯域幅をプロビジョニングするよう構成されているシステムの概略図。
【図２】ＤＲＡＭデータバス上でＤＲＡＭ要求により消費される帯域幅の量を算出するよう構成され得る、図１のシステムの細粒度ＱｏＳロジックの概略図。
【図３】マスタ、バスファブリック、及びＤＲＡＭメモリコントローラが、システムオンチップとして形成されている、細粒度ＱｏＳロジックを実行して、ＤＲＡＭデータバスの帯域幅をプロビジョニングするよう構成されている第２の実施形態のシステムの概略図。
【図４】一実施形態に従った、ＤＲＡＭメモリコントローラにおいて細粒度帯域幅プロビジョニングを実行するための方法のフローチャート。
【図５】図４の方法のステップを達成することができるサブステップを例示するフローチャート。
【図６】図４の方法のステップを達成することができるサブステップを例示するフローチャート。
【図７】システムのさらなるコンポーネントを示す概略図。
【発明を実施するための形態】
【０００８】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のメモリへのアクセスを制御するためのシステム及び方法が、上述した問題に対処するために、本明細書で開示される。
【０００９】
現代の電子システムにおいては、しばしばマスタデバイスと呼ばれるＣＰＵ及び他のハードウェアデバイスが、メモリコントローラ及び様々なバスを介して、システムのＤＲＡＭに要求を発行することが一般的である。メモリコントローラは、様々なキューとマルチプレクサとを使用して、マスタデバイスから発行された要求をスケジューリングすることができ、要求を実行する最も効率的な方法を決定するために、品質サービス（ＱｏＳ）ロジックを適用することができる。
【００１０】
図１は、メモリコントローラ１２を含む一実施形態のシステム１０を示している。メモリコントローラ１２は、複数のマスタ１６からバスファブリック１８を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）要求１４を受信し、複数のマスタ１６の各マスタに割り当てられる優先順位レベルを決定し、ＤＲＡＭデータバス３０上で各マスタにより消費されるＤＲＡＭデータバス帯域幅４８の量を決定し、各マスタ１６に割り当てられた優先順位レベルと、各マスタ１６により消費される帯域幅４８の量と、に基づいて、細粒度ＱｏＳロジック２６を適用して、ＤＲＡＭ要求１４のスケジュールを算出し、このスケジュールに基づいて、ＤＲＡＭ要求１４をＤＲＡＭコマンド４２に変換し、ＤＲＡＭコマンドバス３４を介してＤＲＡＭコマンド４２を少なくとも１つのＤＲＡＭデバイス３２に送信し、少なくとも１つのＤＲＡＭデバイス３２からＤＲＡＭデータバス３０を介して応答を受信する、よう構成されている。マスタ１６は、例えば、ビデオゲームコンソールのＣＰＵ及びＧＰＵであり得、ビデオゲームコンソールのユーザにより現在プレイされているビデオゲームに関連するデータをＤＲＡＭデバイス３２から読み込むこと又はＤＲＡＭデバイス３２に書き込むことを要求している最中であり得る。
【００１１】
要求１４がマスタ１６により発行されると、システム１０は、バスファブリック１８を介して要求を送信するよう構成されている。バスファブリックが、図１において、マスタ１６とメモリコントローラ１２との間に配置された１つのファブリックとして示されている。しかしながら、バスファブリック１８は、マスタ１６からの全てのトラフィックパターンに対応するのに必要とされる多数のバスセグメントを含み得る。図３は、バスファブリックが、速度リミッタを含むバスセグメント６０及び速度リミッタを含まないバスセグメント６２を含む複数のバスセグメントに分割されている第２の実施形態のシステム１０を示している。図１に戻ると、バスファブリック１８は、ＱｏＳ優先順位割り当てロジック２０を適用して、マスタ１６の各マスタに割り当てられた優先順位レベルに基づいて要求１４の各要求に優先順位レベルを割り当てるよう構成され得る。優先順位レベルは、システム１０上で動作するソフトウェアアプリケーションにより、マスタ１６の各マスタに割り当てられ得る。そのような割り当ては、例えば、システム１０の起動のたびに１回、アプリケーションがシステム１０上で実行されるときのアプリケーション境界上で、又は、システム１０上の仮想環境の各起動時に、生じ得る。マスタ１６は、帯域幅変動に敏感であり得るリアルタイムマスタデバイスであって、帯域幅変動が過度になった場合にユーザ体験の低下を生じさせ得るリアルタイムマスタデバイスを含み得る。そのようなリアルタイムマスタデバイスには、システム１０上で動作するソフトウェアアプリケーションにより、より高い優先順位レベルが割り当てられ得る。
【００１２】
要求１４の各要求に優先順位レベルを割り当てた後、バスファブリック１８は、要求をメモリコントローラ１２に送信するよう構成され得る。メモリコントローラ１２は、さらに、この優先順位レベルに基づいて、複数の優先順位キュー２２のうちの１つの優先順位キューに各ＤＲＡＭ要求１４を割り当て、複数の優先順位キュー２２の各優先順位キュー内のＤＲＡＭ要求１４をスケジューリングするよう構成され得る。
【００１３】
要求１４をスケジューリングするために優先順位キュー２２により使用され得るスケジューリングパラメータを理解するために、ＤＲＡＭデバイス３２の構造及び動作の説明に一時的に移ることが助けになる。ＤＲＡＭデバイス３２は、「ページ」のアレイとして構成され得る。ここで、各ページは、複数のメモリセル（例えば、１ページ当たり８キロビットと１６キロビットとの間）を含む。ページは、行及び列状に配置され、さらに、バンクにグループ化され得る。ここで、各バンクは、数万のページを含む。ＤＲＡＭデバイス３２内のページは、要求１４のうちの１つの要求によりアクセスされたか否かに応じて、オープン状態であるか又はクローズ状態であるかのいずれかであり得る。システム１０は、システム１０が起動されたときにはＤＲＡＭデバイス３２の全てのバンク内の全てのページがクローズ状態であるように、構成され得る。ＤＲＡＭ要求１４のうちＤＲＡＭデバイス３２のバンク内のクローズ状態のページへのアクセスを要求する１つのＤＲＡＭ要求が発行されたとき、このＤＲＡＭ要求１４は、最初に「ページミス（page  miss）」をもたらすことになり、メモリコントローラ１２は、「ページオープン操作」を実行して、ターゲットとされたページをオープンする必要がある。ページオープン操作が生じている間、メモリコントローラ１２は、そのバンク内のいかなる他のページのコンテンツにもアクセスすることができない。なぜならば、メモリコントローラ１２は、通常、どの時点においても各バンク内に１つのオープン状態のページしか許容しないよう構成されているからである。結果として、ページオープン操作中、メモリコントローラ１２は、他のバンク内のページをターゲットとする要求１４を探すよう構成され得る。
【００１４】
ページがオープン状態であるとき、その同じページにアクセスすることを要求する後続の要求１４は、最初にメモリコントローラ１２内の「ページヒット（page  hit）」をもたらすことになり、したがって、ページオープン操作が実行されることなく完了し得る。したがって、メモリコントローラ１２は、「同一ページ収集（same  page  gathering）」を実行するよう構成され得る。「同一ページ収集」において、同じページへのアクセスを要求する要求１４は、ページオープン操作の必要性を低減させるために、一緒にグループ化される。
【００１５】
後続の要求が、最後に発行された要求と同じバンク内の異なるページをターゲットとした（すなわち、最後の要求が、現在の要求の前に完了した）場合、いわゆる「ページ競合」が発生し、メモリコントローラ１２は、要求１４によりターゲットとされたページを、ページオープン操作によってオープンする前に、現在オープン状態のページを、「ページクローズ操作」によってクローズしなければならない。ページオープン操作及びページクローズ操作の両方が、ＤＲＡＭデータバス３０上の帯域幅を消費する。ＤＲＡＭデータバス３０上の帯域幅消費が、所与の要求１４を完了するのに必要とされるバスサイクルの数として測定され得る。バスサイクルの数、したがって、１回の操作当たりのＤＲＡＭデータバス３０上で消費される帯域幅４８の量が、ＤＲＡＭデバイス３２用に使用される特定のタイプのメモリのタイミングパラメータにより決定される。しかしながら、使用されるメモリのタイプにかかわらず、ＤＲＡＭデータバス３０上の帯域幅消費４８は、要求１４がページヒットを有するかページミスを有するか又はページ競合を有するかに応じて変わる。
【００１６】
さらに、ＤＲＡＭ要求１４は、読み取り要求又は書き込み要求のいずれかであり得る。要求１４が読み取り要求である場合、メモリコントローラ１２は、ＤＲＡＭコマンドバス３４上で「読み取りコマンド」を送信して、予め定められた数のクロックサイクルの後にＤＲＡＭデータバス３０上で「読み取りデータ」を受信する「読み取り操作」を実行するよう構成されている。要求１４が書き込み要求である場合、メモリコントローラ１２は、ＤＲＡＭコマンドバス３４上で書き込みコマンドを送信して、予め定められた数のクロックサイクルだけ待機した後にＤＲＡＭデータバス３０上で書き込みデータを送信する書き込み操作を実行するよう構成されている。しかしながら、要求１４が書き込み要求であり、最後に発行された要求が読み取り要求であった場合、メモリコントローラ１２は、データバス３０の使用における競合から生じるデータハザード（すなわち、データの処理を誤るリスク）を回避するために、「読み取りから書き込みへのバスターンアラウンド（リードツーライトバスターンアラウンド：read  to  write  bus  turnaround）」を実行するよう構成されている。例えば、書き込み操作が開始されたときに、読み取りデータがＤＲＡＭデータバス３０上でまだ返ってきている場合、送信する書き込みデータと受信する読み取りデータとの間のバス衝突が発生し得る。書き込み操作中におけるそのような発生を回避するために、書き込み操作を開始する前に、メモリコントローラ１２は、前の読み取りデータがＤＲＡＭデータバス３０上で返されていないことを確認するよう構成され得る。競合が存在するときには、メモリコントローラ１２は、「読み取りから書き込みへのバスターンアラウンド」を実行するよう構成され得る。「読み取りから書き込みへのバスターンアラウンド」において、書き込みデータをＤＲＡＭデバイス３２に送信する前にデータバス３０上で読み取りデータが返されることを可能にするために、書き込みコマンドが遅延される。同様に、要求１４が読み取り要求であり、最後に発行された要求が書き込み要求であった場合、メモリコントローラ１２は、読み取りデータがＤＲＡＭデバイス３２からＤＲＡＭデータバス３０を介してメモリコントローラ１２に返される前に書き込みデータがＤＲＡＭデバイス３２のメモリに書き込まれることを可能にするために、読み取りコマンドを遅延させる「書き込みから読み取りへのバスターンアラウンド（ライトツーリードバスターンアラウンド：write  to  read  bus  turnaround）」を実行するよう構成されている。「読み取りから書き込みへのバスターンアラウンド」操作及び「書き込みから読み取りへのバスターンアラウンド」操作の両方は、複数のバスサイクル、したがって、ＤＲＡＭデータバス３０上の帯域幅量を消費する。したがって、要求１４を完了するのに必要とされるＤＲＡＭデータバス３０上で消費される帯域幅４８の量は、メモリコントローラ１２によりＤＲＡＭデバイス３２に発行されている現在の要求１４の要求タイプ（すなわち、読み取り又は書き込み）と、最後に発行された要求１４の要求タイプと、の両方に依存し得る。この帯域幅消費を最小にするために、メモリコントローラ１２は、「読み取り／書き込みグループ化」を実��するよう構成され得る。「読み取り／書き込みグループ化」において、要求１４は、「読み取りから書き込みへのバスターンアラウンド」操作及び「書き込みから読み取りへのバスターンアラウンド」操作の必要性を低減させるために、要求タイプに基づいてグループ化される。
【００１７】
さらに、要求１４が読み取り要求である場合、この要求１４を発行するマスタ１６は、ＤＲＡＭデバイス３２にまだ書き込まれていないデータを要求している最中であり得る。データが書き込まれる前にこの要求１４を発行するのを回避するために、要求１４のページアドレスが、全ての優先順位キュー２２内の全ての書き込み要求１４のページアドレスと比較されなければならない。このプロセスは、アドレス競合解決（address  conflict  resolution）と呼ばれ、データ整合性を確実にするために使用され得る。合致がある場合、当該の読み取り要求１４は、全ての前の書き込み要求１４が完了するまで待機しなければならない。
【００１８】
以下に示す表１は、要求されたページの位置、要求タイプ、及び、所与の要求１４が生成された時点におけるＤＲＡＭデバイス３２の状態（すなわち、前に完了した要求タイプ）に基づく、所与の要求１４のいくつかの一般的なケースの帯域幅コストの例を示している。
【表１】
0006495327.tif 000002
【００１９】
上記表１において、変数ＢＬは、ＤＲＡＭデバイス３２のバースト長を示す。ＢＬ／２は、ＤＤＲｎ、低電力ＤＤＲｎ（ＬＰＤＤＲｎ）、又はグラフィックスＤＤＲｎ（ＧＤＤＲｎ）等の任意のダブルデータレートメモリデバイスについてＤＲＡＭデバイス３２から読み取られるデータ又はＤＲＡＭデバイス３２に書き込まれるデータを搬送するＤＲＡＭデータバス３０がビジーとなる継続時間である。変数ｔＡＣＴは、ページをオープンする帯域幅コストであり、上述したようにページをアクティブ化するのに要する時間である。ｔＰＲＥは、ページをクローズする帯域幅コストであり、上述したようにオープン状態のページをクローズするのに要する時間である。ｔＷ２Ｒは、上述したように書き込みから読み取りへのバスターンアラウンド操作を実行することにより、書き込み操作に続く読み取り操作のためにＤＲＡＭデータバス３０を遷移させるのに必要とされる、ＤＲＡＭデータバス３０のサイクルの数として表されるコストである。ｔＲ２Ｗは、上述したように読み取りから書き込みへのバスターンアラウンド操作を実行することにより、読み取り操作に続く書き込み操作のためにＤＲＡＭデータバス３０を遷移させるのに必要とされる、ＤＲＡＭデータバス３０のサイクルの数として表されるコストである。重要なことは、異なるＤＲＡＭメモリデバイス（例えば、ＤＤＲ３、ＬＰＤＤＲ３、又はＧＤＤＲ３）は、これらのパラメータについて異なる名前を使用することがあるが、本開示で説明するコンセプトは、上記ＤＲＡＭデバイスのいずれにも適用されることに留意することである。以下の段落において詳細に説明するリフレッシュ操作は、表１には含まれていないことに留意されたい。なぜならば、リフレッシュ操作は、マスタ１６のオーバーヘッドコストではなく、ＤＲＡＭデバイス３２のオーバーヘッドコストと考えられるからである。
【００２０】
表１は、システム１０の１つの可能な実施形態を表している。システム１０は、表１に列挙されるパラメータに限定されるものではなく、ＱｏＳスキームの最終目的に応じて、他の表が、所望の結果を達成するために本明細書で説明する原理に従って構成され得る。
【００２１】
メモリコントローラ１２は、ＤＲＡＭデータバス３０上の帯域幅消費を最小にするために、上記方法に従って、優先順位キュー２２内のＤＲＡＭ要求１４をスケジューリングするよう構成され得る。各優先順位キュー２２は、複数のキュー４６を含み得る。各優先順位レベルについての優先順位キュー２２の数及びサイズ、並びに、優先順位キュー２２の各優先順位キュー内のキュー４６の数は、実装に応じて変わり得る。図１においては、Ｎ個のマスタデバイス１６及びＭ個の優先順位キュー２２が示されている。所与の優先順位レベルについての優先順位キュー２２の各優先順位キュー内のキュー４６は、少なくとも１つの読み取りキューと１つの書き込みキューとを含み得る。メモリコントローラ１２は、複数の優先順位キュー２２の各優先順位キュー内の要求１４をスケジューリングするよう構成され得る。スケジュールは、マスタ依存であり、アドレス競合解決、同一ページ収集、読み取り／書き込みグループ化、及び、要求１４の各要求に割り当てられた優先順位レベル等のパラメータに基づき得る。
【００２２】
メモリコントローラ１２は、さらに、ＤＲＡＭ要求１４をマスタスケジューリングマルチプレクサ２４に送信し、各マスタ１６に割り当てられた帯域幅の未使用部分を定期的にモニタリングし、帯域幅の未使用部分が予め定められたレベル以下に低下した場合にメモリコントローラ１２におけるＤＲＡＭ要求１４を調整する（throttle）よう構成され得る。メモリコントローラ１２は、上述したスケジューリングパラメータに基づいて、優先順位キュー２２から最良の要求１４の候補を選択した後、ＤＲＡＭ要求１４をマスタスケジューリングマルチプレクサ２４に送信するよう構成され得る。
【００２３】
マスタスケジューリングマルチプレクサ２４は、ＤＲＡＭデータバス３０における予め定められた量の帯域幅を、複数のマスタ１６の各マスタに割り当てるよう構成されている細粒度ＱｏＳ帯域幅プロビジョニングロジック２８を含む細粒度ＱｏＳロジック２６を適用するよう構成され得る。細粒度ＱｏＳロジック２６は、ＤＲＡＭデバイス３２の帯域幅を、有効（useful）ＱｏＳ帯域幅及びオーバーヘッド帯域幅という２つのカテゴリに分割するよう構成され得る。オーバーヘッド帯域幅は、ＤＲＡＭデバイス３２の適切な動作を確実にするためにメモリコントローラ１２により消費される帯域幅であり得、リフレッシュ操作について消費される帯域幅を含み得る。リフレッシュ操作中、メモリコントローラ１２は、ＤＲＡＭデバイス３２の全てのバンクへの全ての読み取り操作及び書き込み操作を中断し、全てのオープン状態のページをクローズし、ＤＲＡＭデバイス３２内の全てのページのコンテンツをリフレッシュするためにリフレッシュコマンドを発行するよう構成されている。リフレッシュ操作が完了した後、メモリコントローラ１２は、読み取り操作及び書き込み操作を再開するよう構成されている。有効ＱｏＳ帯域幅は、ＤＲＡＭデバイス３２に対して読み取り操作及び書き込み操作等の操作を実行するためにマスタ１６により消費される帯域幅４８を含み得る。メモリコントローラ１２は、細粒度ＱｏＳ帯域幅プロビジョニングロジック２８により、予め定められた量の有効ＱｏＳ帯域幅をマスタ１６に割り当てるよう構成され得る。マスタ１６の各マスタに割り当てられる帯域幅の量は、システム１０上で動作するソフトウェアアプリケーションにより決定され得る。そのような割り当ては、例えば、システム１０の起動のたびに１回、アプリケーションがシステム１０上で実行されるときのアプリケーション境界上で、又は、システム１０上の仮想環境の各起動時に、生じ得る。
【００２４】
メモリコントローラ１２は、各要求１４についてＤＲＡＭデータバス３０上で各マスタ１６により消費される帯域幅４８を算出し、細粒度ＱｏＳ帯域幅プロビジョニングロジック２８により各マスタ１６に割り当てられた有効ＱｏＳ帯域幅の量から、算出された帯域幅４８を減算することにより、各マスタ１６についての帯域幅の未使用部分を決定するよう構成され得る。メモリコントローラ１２は、要求１４を完了するのに必要とされる、ＤＲＡＭデータバス３０のバスサイクルの数の観点で、要求１４により消費される帯域幅４８を測定するよう構成され得る。要求１４を完了するのに必要とされるバスサイクルの数は、要求タイプ（すなわち、読み取り又は書き込み）、ＤＲＡＭデバイス３２内の、要求１４によりターゲットとされたページが、現在オープン状態であるか又はクローズ状態であるか、及び、要求１４によりターゲットとされたページが、最後に発行された要求によりターゲットとされたページと同じバンク内に位置するか否か等の、要求１４の様々な特性に応じて変わり得る。
【００２５】
メモリコントローラ１２の細粒度ＱｏＳロジック２６は、さらに、ＱｏＳクレジットアキュムレータ（QoS  credit  accumulator）３６を含むよう構成され得る。ＱｏＳクレジットアキュムレータ３６は、複数のマスタ１６の各マスタについてのクレジットをインクリメンタルに累積するよう構成され得る。累積のレートは、細粒度ＱｏＳ帯域幅プロビジョニングロジック２８により各マスタに割り当てられた帯域幅に対応し得、各マスタ１６についての総クレジットは、予め定められた最大ＱｏＳクレジット値を超えることができない。例えば、ＤＲＡＭデータバス３０における毎秒１ギガビットの帯域幅が、所与のマスタ１６に割り当てられ、ＤＲＡＭデータバス３０が、２００ＭＨｚ（毎秒２００００００００サイクル）のクロック周波数で動作している場合、ＱｏＳクレジットアキュムレータ３６は、当該のマスタ１６について指定される、１サイクル当たり５バイトに値するクレジットを累積する。マスタ１６が、要求１４を発行する場合、要求１４により消費される帯域幅４８は、ＱｏＳクレジットアキュムレータ３６における、このマスタ１６に対応するクレジットから減算される。マスタ１６が、要求１４を発行しない場合、ＱｏＳクレジットアキュムレータ３６は、このマスタ１６についての総クレジットが最大ＱｏＳクレジット値に達するまで、１サイクル当たり５バイトのレートでクレジットを累積し続ける。システム１０は、システム１０上で動作するソフトウェアアプリケーションが最大ＱｏＳクレジット値を決定することを可能にするよう構成され得る。
【００２６】
細粒度ＱｏＳロジック２６は、ＤＲＡＭデータバス上で各ＤＲＡＭメモリ要求により消費される帯域幅４８を算出し、ＱｏＳクレジットアキュムレータにおける、各マスタに対応するクレジットから、算出された帯域幅を減算することにより、各マスタについてのクレジット残余（credit  balance）を算出するよう構成され得る細粒度ＱｏＳチャージ勘定ロジック（fine-grained  QoS  charge  accounting  logic）３８をさらに含むよう構成され得る。図２は、細粒度ＱｏＳチャージ勘定ロジック３８の動作に含まれ得るプロセスの概略図を示している。図示されるように、細粒度ＱｏＳチャージ勘定ロジック３８は、優先順位キュー２２から、現在キューされている要求に関する、現在の要求の情報５０を受信するよう構成され得る。現在の要求の情報５０は、優先順位キュー２２からマスタスケジューリングマルチプレクサ２４に現在送信されている要求１４によりターゲットとされたページのページアドレス及びバンク、並びに要求１４の要求タイプ（すなわち、読み取り又は書き込み）を含み得る。加えて、細粒度ＱｏＳチャージ勘定ロジック３８は、さらに、ＤＲＡＭプロトコルエンジン４４から、最後に発行された要求の情報５２を受信するよう構成され得る。最後に発行された要求の情報５２は、ＤＲＡＭデバイス３２に最後に送信された要求１４によりターゲットとされたページのページアドレス及びバンク、並びに要求１４の要求タイプ（すなわち、読み取り又は書き込み）を含み得る。最後に発行された要求の情報５２は、ＤＲＡＭデバイス３２に最後に発行された要求１４が、ページヒットを有していたかページミスを有していたか又はページ競合を有していたかをさらに含み得る。細粒度ＱｏＳチャージ勘定ロジック３８は、さらに、現在の要求の情報５０及び最後に発行された要求の情報５２の一方又は両方を使用して、要求１４によりＤＲＡＭデータバス３０上で消費される帯域幅４８を算出し、ＱｏＳクレジットアキュムレータ３６における、この要求１４を発行したマスタに対応するクレジットから、算出された帯域幅の量を減算するよう構成され得る。細粒度ＱｏＳチャージ勘定ロジック３８はまた、ＤＲＡＭプロトコルエンジン４４から受信されたグローバルページステータス情報５８を使用するよう構成され得る。グローバルページステータス情報５８は、ＤＲＡＭデバイス３２内の全てのページの現在のステータスを含み得る。細粒度ＱｏＳチャージ勘定ロジック３８は、グローバルページステータス情報５８を使用して、ＤＲＡＭデバイス３２に発行されるならば、どの要求１４が、ページヒット、ページミス、又はページ競合を有することになるかを判定することができる。細粒度ＱｏＳチャージ勘定ロジック３８は、さらに、ＱｏＳクレジットアキュムレータ３６における総クレジットから、要求１４により消費される帯域幅４８を減算する前に、リフレッシュにより消費されるグローバルなオーバーヘッド帯域幅５６と、リフレッシュについての１クロックサイクル当たりのクレジットゲイン（credit  gain）５４と、を考慮に入れるよう構成され得る。システム１０は、有効ＱｏＳ帯域幅のみをマスタ１６に割り当てるよう構成され得るので、細粒度ＱｏＳチャージ勘定ロジック３８は、リフレッシュ���作により消費される帯域幅又は他の形態のオーバーヘッド帯域幅消費を補償するために、１クロックサイクル当たりのクレジットゲインを提供するよう構成され得る。ＱｏＳチャージ勘定ロジック３８が、最後に発行された要求１４により消費された帯域幅４８を減算した後、細粒度ＱｏＳクレジットアキュムレータ３６は、さらに、マスタ１６の各マスタについての、ＱｏＳクレジットアキュムレータ３６における現在の残余を、以下で説明するＱｏＳスケジューリングロジック４０に送信するよう構成され得る。
【００２７】
図１に戻ると、細粒度ＱｏＳロジック２６は、さらに、各ＤＲＡＭ要求の優先順位クラスに基づいてＤＲＡＭ要求１４をスケジューリングし、ＤＲＡＭ要求１４を発行したマスタ１６についての、ＱｏＳクレジットアキュムレータ３６におけるクレジット残余が、予め定められた最小ＱｏＳクレジット値未満である場合に、ＤＲＡＭ要求１４を調整するよう構成されている細粒度ＱｏＳスケジューリングロジック４０を含むよう構成され得る。細粒度ＱｏＳスケジューリングロジック４０は、細粒度ＱｏＳチャージ勘定ロジック３８から、キューされている要求１４の各要求に対応する、マスタ１６の各マスタについての現在のクレジット残余を受信するよう構成され得る。細粒度ＱｏＳスケジューリングロジック４０は、さらに、最高優先順位レベルと、予め定められた最小ＱｏＳクレジット値以上のクレジット残余と、を有する要求１４を選択するよう構成され得る。要求１４が、最小ＱｏＳクレジット値未満のクレジット残余を有する場合、細粒度ＱｏＳスケジューリングロジック４０は、その要求１４の優先順位レベルにかかわらず、その要求１４を調整するよう構成され得る。複数の要求１４が、同じ優先順位レベルと、最小ＱｏＳクレジット値以上のクレジット残余と、を有する場合、スケジューリングは、ラウンドロビン方式で、又は、別の適切なデフォルトスケジューリングアルゴリズムに従って、実行され得る。全ての利用可能な要求１４が、最小ＱｏＳクレジット値未満のクレジット残余を有する場合、最高優先順位レベルを有する要求１４が選択され得る。システム１０は、システム１０上で動作するソフトウェアアプリケーションが最小ＱｏＳクレジット値を決定することを可能にするよう構成され得る。
【００２８】
メモリコントローラ１２は、さらに、マスタスケジューリングマルチプレクサ２４からＤＲＡＭ要求１４を受信し、ＤＲＡＭコマンドバス３４を介してＤＲＡＭ要求１４をＤＲＡＭデバイス３２に送信するよう構成されているＤＲＡＭプロトコルエンジン４４を含むよう構成され得る。ＤＲＡＭプロトコルエンジン４４は、細粒度ＱｏＳロジック２６により作成されたスケジュールに基づいて、マスタスケジューリングマルチプレクサ２４により選択されたＤＲＡＭ要求１４を受信するよう構成され得る。メモリコントローラ１２は、さらに、ＤＲＡＭ要求１４をＤＲＡＭプロトコルエンジン４４に送信する前に、ＤＲＡＭ要求１４をＤＲＡＭコマンド４２に変換するよう構成され得る。ＤＲＡＭプロトコルエンジン４４は、さらに、ＤＲＡＭデバイス３２から応答を受信し、最後に発行された要求１４に関する情報を細粒度ＱｏＳチャージ勘定ロジック３８に送信するよう構成され得る。任意的に、ＤＲＡＭプロトコルエンジン４４は、ＤＲＡＭ要求１４が成功裡に完了したことをメモリコントローラ１２に通知するための割り込みの形態であり得る応答を、ＤＲＡＭデバイス３２から受信するよう構成されてもよい。ＤＲＡＭプロトコルエンジン４４は、さらに、図２に示され説明した最後に発行された要求の情報５２を細粒度ＱｏＳチャージ勘定ロジック３８に送信するよう構成され得る。この情報は、要求１４の要求タイプ（すなわち、読み取り又は書き込み）、要求１４によりターゲットとされたページのページアドレス及びバンク、並びに、要求１４がページヒットを有していたかページミスを有していたか又はページ競合を有していたかを含み得る。
【００２９】
図３は、細粒度ＱｏＳロジックを実行して、ＤＲＡＭデータバスの帯域幅をプロビジョニングするよう構成されている第２の実施形態のシステム１００を示している。システム１００は、システムオンチップ（ＳｏＣ）１０１を含み、マスタ１６、バスファブリック１８、及びＤＲＡＭメモリコントローラ１２が、ＳｏＣ１０１上に形成されており、ＤＲＡＭメモリコントローラ１２が、ＤＲＡＭデバイス３２と通信する。ＤＲＡＭデバイス３２は、ＳｏＣ１０１上に形成されることもあるし、独立したデバイスとして形成されることもある。システムオンチップ上に形成されている様々なコンポーネントは、上述したものと同様に機能し、簡潔さのために再度説明しない。上述したように、この実施形態においては、バスファブリックは、速度リミッタを含むバスセグメント６０及び速度リミッタを含まないバスセグメント６２を含む複数のバスセグメントに分割されている。システムオンチップ１０１は、バスファブリック上の最少固定量の帯域幅が各マスタのために予約されることを確実にしつつ、各マスタにより消費される最大帯域幅を制限することにより、各マスタがこの固定量を超えないことを確実にするために、速度リミッタを利用することが理解されよう。これは、スケジューリング競合を回避させ、速度制限されたマスタからＤＲＡＭデバイスへの効率的なアクセスを促進させる。バスファブリックのうち速度制限されていないバスセグメント（例えば、バスセグメントＭ）のみを経由する新たなマスタが、このようなシステムに追加される場合、このマスタは、バスファブリック上の過度の帯域幅を消費し得る、且つ／又は、固定量の予約された帯域幅を有するという予測の下で設計された他のマスタの性能を劣化させ得る。したがって、速度リミッタは、何らかのスケジューリング制御を実施するが、バスセグメントＭ上には速度リミッタが構成されないので、特に速度制限されていないバスセグメントＭを通過するＤＲＡＭ要求は、スケジューリングマルチプレクサ２４により適用される細粒度ＱｏＳスケジューリング及び優先順位レベルから恩恵を受けることができ、これは、バスセグメントＭを介して接続されるマスタによる予約された帯域幅の想定外の消費を防止する。これは、全てのマスタの性能を向上させることができる。
【００３０】
次に図４に移ると、メモリコントローラにおいて細粒度帯域幅プロビジョニングを実行するための方法４００のフローチャートが示されている。以下に記載の方法は、図１及び図２を参照して上述したシステム１０のハードウェア上で実行されてもよいし、他の適切なハードウェア上で実行されてもよい。本明細書に記載の方法が実行され得る適切なハードウェアは、ラップトップパーソナルコンピュータ、デスクトップパーソナルコンピュータ、スマートフォン、ビデオゲームコンソール、タブレットコンピューティングデバイス、スマートテレビジョン等を含むことが理解されよう。本方法のいくつかの実装においては、図４における破線内のステップは省かれてもよいが、他の実装においては、破線内のステップが含まれる。
【００３１】
方法４００は、４０２において、複数のマスタからバスファブリックを介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）要求を受信することを含み得る。４０４において、方法４００は、ＤＲＡＭ要求の各ＤＲＡＭ要求に割り当てられる優先順位レベルを決定することを含み得る。
【００３２】
５０２において、方法４００は、この優先順位レベルに基づいて、複数の優先順位キューのうちの１つの優先順位キューに各ＤＲＡＭ要求を割り当てることを含み得る。
【００３３】
５０６において、方法４００は、ＤＲＡＭ要求をマスタスケジューリングマルチプレクサに送信することを含み得る。
【００３４】
４０６において、方法４００は、ＤＲＡＭデータバス上で各マスタにより消費されるＤＲＡＭデータバス帯域幅の量を決定することを含み得る。５０８において、これは、各マスタに割り当てられた帯域幅の未使用部分を定期的にモニタリングすることにより少なくとも部分的に達成され得ることが示されている。
【００３５】
４０８において、方法４００は、各マスタに割り当てられた優先順位クラスと、各マスタにより消費されるＤＲＡＭデータバス帯域幅の量と、に基づいて、細粒度サービス品質（ＱｏＳ）ロジックを適用して、ＤＲＡＭ要求のスケジュールを算出することを含み得る。５１０において、このスケジュールは、帯域幅の未使用部分が予め定められたレベル以下に低下した場合にメモリコントローラにおけるＤＲＡＭ要求を調整するように算出され得ることが示されている。
【００３６】
４１０において、方法４００は、ステップ４０８において作成されたスケジュールに基づいて、ＤＲＡＭ要求をＤＲＡＭコマンドに変換することを含み得る。４１２において、方法４００は、ＤＲＡＭコマンドバスを介してＤＲＡＭコマンドを少なくとも１つのＤＲＡＭデバイスに送信することを含み得る。４１４において、方法４００は、少なくとも１つのＤＲＡＭデバイスからＤＲＡＭデータバスを介して応答を受信することを含み得る。
【００３７】
図５は、図４の方法４００のステップ５０８、ステップ５１０、及びステップ４１２を達成することができる例示的なサブステップを例示しているフローチャートを示している。方法４００のステップ５０８は、サブステップ６０２〜６０８を実行することにより達成され得る。６０２において、方法は、細粒度ＱｏＳ帯域幅プロビジョニングロジックを適用して、複数のマスタの各マスタに、ＤＲＡＭデータバスにおける予め定められた量の帯域幅を割り当てることを含み得る。６０４において、方法は、ＱｏＳクレジットアキュムレータを適用して、複数のマスタの各マスタについてのクレジットをインクリメンタルに累積することを含み得る。ここで、累積のレートは、細粒度ＱｏＳ帯域幅プロビジョニングロジックにより各マスタに割り当てられた帯域幅に対応し、各マスタについての総クレジットは、予め定められた最大ＱｏＳクレジット値を超えない。６０６において、方法は、細粒度ＱｏＳチャージ勘定ロジックを適用して、各ＤＲＡＭメモリ要求により消費されるＤＲＡＭデータバス上の帯域幅を算出することを含み得る。６０８において、方法は、ＱｏＳクレジットアキュムレータにおける、各マスタに対応するクレジットから、算出された帯域幅４８を減算することにより、各マスタについてのクレジット残余を算出することを含み得る。
【００３８】
方法４００のステップ５１０は、サブステップ６１０により達成され得る。サブステップ６１０に示されるように、細粒度スケジューリングロジックを適用すること、及び、帯域幅の未使用部分が予め定められたレベル以下に低下した場合にメモリコントローラにおけるＤＲＡＭ要求を調整することは、細粒度ＱｏＳスケジューリングロジックを適用して、各要求の優先順位クラスに基づいてＤＲＡＭ要求をスケジューリングし、ＤＲＡＭ要求を発行したマスタについての、ＱｏＳクレジットアキュムレータにおけるクレジット残余が、予め定められた最小ＱｏＳクレジット値未満である場合にＤＲＡＭ要求を調整するようにスケジュールを算出することにより、達成される。
【００３９】
方法４００のステップ４１２は、サブステップ６１２〜６１４により達成され得る。６１２において、方法は、マスタスケジューリングマルチプレクサからＤＲＡＭプロトコルエンジンにＤＲＡＭ要求を送信することを含み得る。６１４において、方法は、ＤＲＡＭプロトコルエンジンから複数のＤＲＡＭデバイスのうちの少なくとも１つのＤＲＡＭデバイスにＤＲＡＭ要求を送信することを含み得る。
【００４０】
図６は、図４の方法４００のステップ４０６を達成することができる例示的なサブステップ６５０、６５２を例示しているフローチャートを示している。６５０において、方法は、ＤＲＡＭプロトコルエンジンから、最後に発行された要求に関する情報を受信することを含み得る。６５２において、方法は、最後に発行された要求に関する情報に基づいて、各ＤＲＡＭメモリ要求により消費されるＤＲＡＭデータバス上の帯域幅を算出することを含み得る。
【００４１】
一時的に図１に戻ると、システム１０は、システム１０よりも少ない総メモリ帯域幅を有する異なるシステム上で動作するよう元々設計された１以上のソフトウェアプログラムの性能をモデル化するためにも使用され得る。そうするために、マスタ１６からの要求１４の一部が、こうしたソフトウェアプログラムの実行から生じたものとしてタグ付けされ得る。メモリコントローラ１２は、こうしたソフトウェアプログラムが、元々設計された対象のシステム上で動作しているならばマスタ１６が受けたであろう帯域幅及びＱｏＳを算出することができる。次いで、メモリコントローラ１２は、この算出を用いて、帯域幅及びＱｏＳを、システム１０上の要求１４に割り当てることができる。したがって、コンピューティングデバイスは、さらに、複数のマスタからのメモリ要求の一部を、このコンピューティングデバイスよりも少ない総メモリ帯域幅を有するシステム上で動作するよう元々設計された１以上のソフトウェアプログラムの実行から生じたものとしてタグ付けし、１以上のソフトウェアプログラムが、より少ない総メモリ帯域幅を有する上記システム上で動作しているならば複数のマスタが受けたであろう帯域幅及びＱｏＳを算出するよう構成され得る。さらに、コンピューティングデバイスは、これら帯域幅及びＱｏＳを、複数のマスタからのメモリ要求に割り当て、結果として、より少ない総メモリ帯域幅を有する上記システム上での１以上のソフトウェアプログラムの性能をモデル化するよう構成され得る。
【００４２】
上述したシステム及び方法は、種々の有用な産業上の用途を有する。例えば、第１の用途は、より高速なメモリタイプが、より低速なメモリタイプと同じ帯域幅変動をもたらすことを可能にすることである。例えば、システムは、例えば、２１３３Ｍｂｐｓのクロック周波数で動作するダブルデータレート３（ＤＤＲ３）メモリを使用するよう設計されたビデオゲームコンソールであり得る。ビデオゲームコンソールのライフサイクル中に、このメモリを、例えば、２４００Ｍｂｐｓのクロック周波数で動作するダブルデータレート４（ＤＤＲ４）メモリに変更することが、（例えば、性能又はコスト上の理由で）有利なことがある。ビデオゲームコンソールのライフサイクル中にそのような変更がなされると、ＤＤＲ３とともに使用されるよう設計されたソフトウェアが、ＤＤＲ４とともには適切に動作しないリスクが存在するようになる。しかしながら、上述した細粒度ＱｏＳロジックは、ＤＤＲ４に対するプロビジョニングが、ＤＤＲ３に対するプロビジョニングと同じであるように、ＤＲＡＭデータバス上の帯域幅の量が各マスタデバイスにプロビジョニングされることを可能にし得る。したがって、細粒度ＱｏＳロジックは、ＤＤＲ４等の新たな世代のメモリデバイスの帯域幅変動が、ＤＤＲ３等の前の世代のメモリデバイスと実質的に同様であるように、新たな世代のメモリデバイスを制限し、そうする際、さらなる帯域幅変動を受けることなく、前の世代のメモリデバイス用に設計されたソフトウェアが、後の世代のメモリデバイスを使用するシステム上で機能することを可能にし得る。
【００４３】
上述したシステム及び方法の別の例示的なユースケースシナリオは、さらなるマスタデバイスがシステムに追加されたときにマスタデバイスが受ける帯域幅変動の量を低減させることである。システムが、例えば、ビデオゲームコンソールである場合、ビデオゲームコンソールが発売され、ソフトウェアがそのビデオゲームコンソール用に設計された後であっても、さらなるマスタが追加されることがある。さらなるマスタデバイスは、さらなる帯域幅変動を望ましくない形でシステムにもたらすことがある。しかしながら、細粒度ＱｏＳロジックを使用して、マスタデバイスを分離させて、上述した細粒度ＱｏＳパラメータ及び優先順位クラスに基づいて、論理的な方法で、マスタデバイスから生成された要求をスケジューリングすることができ、それにより、そうでなければ新たなマスタデバイスを追加することにより生じたであろうさらなる帯域幅変動からシステムを保護することができる。これを達成するために、マスタデバイスに、ＤＲＡＭデータバス上の固定量の帯域幅を割り当てることができ、全てのマスタデバイスをサポートするのに十分な帯域幅がある限り、各マスタに割り当てられた帯域幅は、新たなマスタが追加されたときにも、変更されないままである。これは、さらなるマスタが追加される前と同じようにマスタデバイスが挙動することを確実にするために必要とされるテストの量の著しい低減をもたらす。そのような用途において、細粒度ＱｏＳロジックを使用して、システム内のマスタデバイスの各マスタデバイスについて固定量の帯域幅を予約し、優先順位クラス及び細粒度ＱｏＳ技術を使用して、既存のマスタの固定量の予約された帯域幅と干渉することから、新たなマスタにより消費される帯域幅を制限する。
【００４４】
第３の例は、上述したシステム及び方法を使用して、物理ＤＲＡＭデバイスを、多くの論理的に独立したＤＲＡＭデバイスにパーティショニングすることである。マスタデバイスを、これらの論理的に独立したＤＲＡＭデバイスに割り当てることができ、それにより、他のパーティションに割り当てられた他のマスタデバイスにより引き起こされる帯域幅変動から、マスタデバイスを保護することができる。そのようなパーティションが作成されると、他のパーティション上のマスタデバイスを妨げることなく、マスタデバイスを追加及び除去することができる。
【００４５】
ＤＲＡＭメモリデバイスのコンテキストにおいて上述したシステム及び方法は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、フラッシュメモリ、磁気ディスクメモリ、テープメモリ、並びに、他の種類の揮発性メモリデバイス及び不揮発性メモリデバイスを含む他のタイプのメモリデバイスに適用されてもよいことが理解されよう。したがって、上述したＤＲＡＭデータバスは、メモリデータバスとすることができ、上述したＤＲＡＭメモリ要求は、メモリ要求とすることができ、上述したＤＲＡＭコマンドは、メモリコマンドとすることができ、上述したＤＲＡＭコマンドバスは、メモリコマンドバスとすることができる。これらの様々なメモリコンポーネントは、この段落において上記で列挙されたメモリデバイス等の特定のタイプのメモリデバイスとともに動作するよう構成される。
【００４６】
図７は、上述したシステム及び方法を実装することができるコンピューティング環境を示している。図７に示されるように、コンピューティングシステム７００は、プロセッサ７２０と不揮発性メモリ７２２と揮発性メモリ７２４とを有するホストシステム７１８を含み得るだけでなく、表示サブシステム７０６、通信サブシステム７０８、及び入力サブシステム７１０を含み得、これらは全て、通信バスサブシステム７０２を介してリンクされる。
【００４７】
システム１０は、１以上のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、ホームエンターテイメントコンピュータ（ケーブルセットトップボックス、デジタルビデオレコーダ、ビデオサーバ等）、ネットワークコンピューティングデバイス、ゲームデバイス（ゲームコンソール等）、モバイルコンピューティングデバイス、モバイル通信デバイス（例えば、スマートフォン）、及び／又は他のコンピューティングデバイスの形態をとることができる。
【００４８】
ホストシステム７１８のプロセッサ７２０は、不揮発性メモリ７２２及び揮発性メモリ７２４の諸部分を使用して命令を実行するよう構成される物理デバイスである。例えば、プロセッサは、１以上のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、又は他の論理的構造体の一部である命令を実行するよう構成され得る。そのような命令は、タスクを実行するために、データ型を実装するために、１以上のコンポーネントの状態を変換するために、技術的効果を達成するために、又は所望の結果に達するために、実装され得る。
【００４９】
不揮発性メモリ７２２は、プロセッサ７２０により実行可能な命令を保持するよう構成される１以上の物理デバイスを含む。不揮発性メモリ７２２は、フラッシュ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等といった不揮発性メモリを含み得、処理中に有限の期間の間命令を保持し、コンピューティングシステムに電力が供給されていないときでも、命令を保持し続ける。揮発性メモリ７２４は、上述したＤＲＡＭデバイス３２等のＤＲＡＭや、処理中に有限の期間の間命令を保持するが、通常は、コンピューティングシステムに電力が供給されなくなった後には命令を記憶し続けることはないＲＡＭを含み得る。
【００５０】
プロセッサ７２０、永続的メモリ７２２、及び揮発性メモリ７２４の態様は、１以上のハードウェアロジックコンポーネントに一緒に統合されてもよい。そのようなハードウェアロジックコンポーネントは、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途プログラム向け集積回路／特定用途向け集積回路（ＰＡＳＩＣ／ＡＳＩＣ）、特定プログラム向け標準品／特定用途向け標準品（ＰＳＳＰ／ＡＳＳＰ）、システムオンチップ（ＳｏＣ）、及びコンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）を含み得る。
【００５１】
表示サブシステム７０６は、永続的メモリ７２２又は揮発性メモリ７２４により保持されているデータの視覚的表現を提示するために使用され得る。この視覚的表現は、グラフィカルユーザインタフェース（ＧＵＩ）の形態をとることができる。本明細書に記載の方法及びプロセスは、不揮発性メモリ７２２又は揮発性メモリ７２４により保持されているデータを変化させ、したがって、不揮発性メモリ７２２又は揮発性メモリ７２４の状態を変換させるので、表示サブシステム７０６の状態も同様に、元となるデータの変化を視覚的に表現するように変換され得る。表示サブシステム７０６は、実質的に任意のタイプの技術を利用する１以上の表示デバイスを含み得る。そのような表示デバイスは、共有筐体において、プロセッサ７２０及び／又は不揮発性メモリ７２２若しくは揮発性メモリ７２４と結合されてよいし、そのような表示デバイスは、周辺表示デバイスであってもよい。
【００５２】
入力サブシステム７１０は、キーボード、マウス、タッチスクリーン、又はゲームコントローラ等の１以上のユーザ入力デバイスを含んでもよいし、このような１以上のユーザ入力デバイスとインタフェースをとってもよい。いくつかの実施形態において、入力サブシステムは、選択されたナチュラルユーザ入力（ＮＵＩ）コンポーネントを含んでもよいし、選択されたＮＵＩコンポーネントとインタフェースをとってもよい。そのようなコンポーネントは、統合されることもあるしペリフェラルであることもあり、入力アクションの変換及び／又は処理は、オンボード又はオフボードで扱われ得る。例示的なＮＵＩコンポーネントは、音声認識及び／又は発話認識のためのマイクロフォン；マシンビジョン及び／又はジェスチャ認識のための赤外線カメラ、カラーカメラ、立体視カメラ、及び／又はデプスカメラ；動き検出及び／又は意図認識のためのヘッドトラッカ、アイトラッカ、加速度計、及び／又はジャイロスコープ；及び、脳活動を評価するための電場検知コンポーネントを含み得る。
【００５３】
通信サブシステム７０８は、システム１０を１以上の他のコンピューティングデバイスに通信可能に接続するよう構成され得る。通信サブシステム７０８は、１以上の異なる通信プロトコルに適合する有線通信デバイス及び／又は無線通信デバイスを含み得る。非限定的な例として、通信サブシステム７０８は、無線電話網、又は、有線ローカルエリアネットワーク、有線ワイドエリアネットワーク、無線ローカルエリアネットワーク、若しくは無線ワイドエリアネットワークを介する通信用に構成され得る。いくつかの実施形態において、通信サブシステムは、コンピューティングシステム７００が、インターネット等のネットワークを介して他のデバイスとの間でメッセージを送信及び／又は受信することを可能にし得る。
【００５４】
多数の変形が可能であるので、本明細書に記載の構成及び／又はアプローチは、本質的に例示であり、そのような特定の実施形態又は例は、限定とみなされるべきではないことが理解されよう。本明細書に記載の特定のルーチン又は方法は、任意の数の処理方策のうちの１以上を表し得る。したがって、図示及び／又は説明した様々な動作は、図示及び／又は説明した順番で実行されることもあるし、他の順番で実行されることもあるし、並列に実行されることもあるし、省かれることもある。同様に、上述したプロセスの順番も、変更されることがある。
【００５５】
本開示の主題は、様々なプロセス、システム、及び構成、並びに、本明細書で開示した他の特徴、機能、動作、及び／又は特性の全ての新規で非自明なコンビネーション及びサブコンビネーションに加えて、それらのありとあらゆる均等なものを含む。
【図１】
0006495327.tif 000003
【図２】
0006495327.tif 000004
【図３】
0006495327.tif 000005
【図４】
0006495327.tif 000006
【図５】
0006495327.tif 000007
【図６】
0006495327.tif 000008
【図７】
0006495327.tif 000009