(57)【要約】  本システムおよび方法は、共有メモリにアクセスするための帯域幅の分散割振りに関する。共有メモリに対するアクセスを制御するメモリコントローラは、複数の要求エージェントから共有メモリにアクセスするための帯域幅に対する要求を受信する。メモリコントローラは、共有メモリにアクセスするための帯域幅の飽和レベルを決定するための飽和モニタを含む。各要求エージェントにおける要求レートガバナは、飽和レベルと、要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、要求エージェントに対するターゲット要求レートを決定し、比例的シェアは要求エージェントのサービス品質(QoS)クラスに基づく。
2019501447.tif 000002
【特許請求の範囲】
【請求項１】
帯域幅の分散割振りの方法であって、
複数の要求エージェントによって、共有メモリにアクセスするための帯域幅を要求するステップと、
前記共有メモリに対するアクセスを制御するためのメモリコントローラ内の前記共有メモリにアクセスするための前記帯域幅の飽和レベルを決定するステップと、
前記飽和レベルと、前記要求エージェントのサービス品質(QoS)クラスに基づいて前記要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するステップと
を含む、方法。
【請求項２】
前記メモリコントローラ内で実装される飽和モニタにおいて前記飽和レベルを決定するステップであって、前記飽和レベルが、前記共有メモリにアクセスするための前記帯域幅の利用不可能性により、前記共有メモリにアクセスすることがスケジュールされていない未解決要求の数のカウントに基づく、ステップを含む、請求項1に記載の方法。
【請求項３】
前記飽和レベルが、不飽和状態、低飽和、中飽和、または高飽和のうちの1つを示す、請求項2に記載の方法。
【請求項４】
前記要求エージェント内で実装される要求レートガバナにおける要求エージェントに対する前記ターゲット要求レートを決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記飽和レベルから決定された方向に基づいて、前記ターゲット要求レートを新しいターゲット要求レートに増加または低減させるステップと、
前記新しいターゲット要求レートに対する上限境界および下限境界を決定するステップと、
少なくとも1つのステップによって前記新しい要求レートを改善するステップであって、前記少なくとも1つのステップが、前記飽和レベルに少なくとも部分的に基づく方向にある、ステップと、
前記飽和レベルがしきい値を超える場合、前記飽和レベルが非過渡的であるという資格を満たすことを確認するとすぐに、前記ターゲット要求レートを初期化するステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
各要求エージェントにおける前記ターゲット要求レートを前記新しいターゲット要求レートに調整するステップ
をさらに含む、請求項5に記載の方法。
【請求項７】
前記飽和レベルが前記新しいターゲット要求レートにおいて非過渡的であるという資格を満たさない場合、前記飽和レベルがしきい値を超えるまで、前記ターゲット要求レートを増加または低減させるステップ
をさらに含む、請求項6に記載の方法。
【請求項８】
前記飽和レベルが前記新しいターゲット要求レートにおいて非過渡的であるという資格を満たす場合、前記ターゲット要求レートを初期化して、同期したロックステップで、各要求エージェントにおける前記新しいターゲットレートになるように前記ターゲット要求レートを調整するステップ
をさらに含む、請求項7に記載の方法。
【請求項９】
各要求エージェントに対する前記比例的帯域幅シェアが、前記要求エージェントに割り当てられた帯域幅シェア重みを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェア重みの和で除算することによって提供される、請求項1に記載の方法。
【請求項１０】
各要求エージェントに対する前記比例的帯域幅シェアが、前記要求エージェントに割り当てられた帯域幅シェアストライドを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェアストライドの和で乗算することによって提供される、請求項1に記載の方法。
【請求項１１】
前記要求エージェントがプライベートキャッシュであり、各プライベートキャッシュが対応する処理ユニットから前記共有メモリにアクセスするための要求を受信する、請求項1に記載の方法。
【請求項１２】
共有キャッシュにおいて、前記プライベートキャッシュからのミスをフィルタリングするステップと、
前記メモリコントローラにおいて、前記共有キャッシュから前記フィルタリングされたミスを受信するステップと、
前記フィルタリングされたミスに基づいて、前記プライベートキャッシュにおいて前記ターゲット要求レートを調整するステップと
をさらに含む、請求項11に記載の方法。
【請求項１３】
前記要求エージェントにおいて前記ターゲット要求レートを実施するために、前記共有メモリにアクセスするための要求エージェントからの要求の発行をスロットリングするステップをさらに含む、請求項1に記載の方法。
【請求項１４】
エポック境界における前記飽和レベルを決定するステップを含む、請求項1に記載の方法。
【請求項１５】
ペーサ内で、前の時間期間において要求エージェントに割り振られた未使用帯域幅を決定し、かつ前記要求エージェントに現在の時間期間の間に前記ターゲット要求レートより高い要求レートを許可するステップであって、前記より高い要求レートが前記未使用帯域幅に基づく、ステップをさらに含む、請求項1に記載の方法。
【請求項１６】
前記前の時間期間および前記現在の時間期間が前記ターゲット要求レートに反比例する、請求項15に記載の方法。
【請求項１７】
共有メモリと、
前記共有メモリに対するアクセスを要求するように構成される複数の要求エージェントと、
前記共有メモリに対するアクセスを制御するように構成されるメモリコントローラであって、前記共有メモリにアクセスするための帯域幅の飽和レベルを決定するように構成される飽和モニタを備える、メモリコントローラと、
前記飽和レベルと、前記要求エージェントのサービス品質(QoS)クラスに基づいて前記要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するように構成される要求レートガバナと
を備える、装置。
【請求項１８】
前記飽和モニタが、前記共有メモリにアクセスするための前記帯域幅の利用不可能性により、前記共有メモリにアクセスすることがスケジュールされていない未解決要求の数のカウントに基づいて、前記飽和レベルを決定するように構成される、請求項17に記載の装置。
【請求項１９】
前記飽和レベルが、不飽和状態、低飽和、中飽和、高飽和のうちの1つを示す、請求項18に記載の装置。
【請求項２０】
各要求エージェントに対する前記比例的帯域幅シェアが、前記要求エージェントに割り当てられた帯域幅シェア重みを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェア重みの和で除算することによって提供される、請求項17に記載の装置。
【請求項２１】
各要求エージェントに対する前記比例的帯域幅シェアが、前記要求エージェントに割り当てられた帯域幅シェアストライドを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェアストライドの和で乗算することによって提供される、請求項17に記載の装置。
【請求項２２】
前記要求エージェントがプライベートキャッシュであり、各プライベートキャッシュが対応する処理ユニットから前記共有メモリにアクセスするための要求を受信するように構成される、請求項17に記載の装置。
【請求項２３】
前記要求レートガバナが、前記対応する要求エージェントにおいて前記ターゲットレートを実施するために、前記対応する要求エージェントから前記共有メモリに対する要求の発行をスロットリングするように構成される、請求項17に記載の装置。
【請求項２４】
前記飽和モニタが、エポック境界における前記飽和レベルを決定するように構成される、請求項17に記載の装置。
【請求項２５】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、定置データユニット、サーバ、およびコンピュータからなるグループから選択されるデバイス内に統合される、請求項17に記載の装置。
【請求項２６】
共有メモリにアクセスするための帯域幅を要求するための手段と、
前記共有メモリにアクセスするための前記帯域幅の飽和レベルを決定するための手段を備える、前記共有メモリに対するアクセスを制御するための手段と、
前記飽和レベルと、前記要求するための手段のサービス品質(QoS)クラスに基づいて前記要求するための手段に割り振られた比例的帯域幅シェアとに基づいて、各要求するための手段におけるターゲット要求レートを決定するための手段と
を備える装置。
【請求項２７】
前記飽和レベルが、前記共有メモリにアクセスするための前記帯域幅の利用不可能性により、前記共有メモリにアクセスすることがスケジュールされていない未解決要求の数のカウントに基づく、請求項26に記載の装置。
【請求項２８】
前記飽和レベルが、不飽和状態、低飽和、中飽和、高飽和のうちの1つを示す、請求項26に記載の装置。
【請求項２９】
プロセッサによって実行されると、帯域幅の分散割振りのための動作を前記プロセッサに実行させるコードを備える非一時的コンピュータ可読記憶媒体であって、
複数の要求エージェントが共有メモリにアクセスするための帯域幅を要求するためのコードと、
前記共有メモリに対するアクセスを制御するためのメモリコントローラにおいて、前記共有メモリにアクセスするための前記帯域幅の飽和レベルを決定するためのコードと、
前記飽和レベルと、前記要求エージェントのサービス品質(QoS)クラスに基づいて前記要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するためのコードと
を備える、非一時的コンピュータ可読記憶媒体。
【請求項３０】
前記対応する要求エージェントから前記共有メモリに対する要求の発行をスロットリングするためのコードをさらに備える、請求項29に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、本出願の譲受人に譲渡され、参照によりその全体が本明細書に明確に組み込まれる、2015年11月23日に出願した"A METHOD TO ENFORCE PROPORTIONAL BANDWIDTH ALLOCATIONS FOR QUALITY OF SERVICE"という名称の米国仮出願第62/258,826号の利益を主張するものである。
【０００２】
開示する態様は、処理システム内のリソース割振りに関する。より詳細には、例示的な態様は、処理システム内の帯域幅割振りの分散管理に関する。
【背景技術】
【０００３】
いくつかの処理システムは、処理要素などの様々なコンシューマ間で共有される、共有メモリなどの共有リソースを含んでよい。技術の進歩により、処理システム内に統合されるコンシューマの数に増加傾向がある。しかしながら、この傾向はまた、共有リソースに対する競合および衝突を増加させる。すべてのコンシューマに対して期待されるサービス品質(QoS)または他の性能基準をやはり保証しながら、たとえば、様々なコンシューマ間で共有メモリのメモリ帯域幅を割り振ることは困難である。
【０００４】
従来の帯域幅割振り機構は、所望のメモリ帯域幅がタイミングクリティカルまたは帯域幅に敏感なアプリケーションに対して利用可能でない状況を回避するために、様々なコンシューマに対して利用可能なメモリ帯域幅の割振りを控える傾向がある。しかしながら、そのような慎重な手法は利用可能な帯域幅の過少利用につながる可能性がある。したがって、当技術分野では、利用可能なメモリ帯域幅の改善された割振りが必要である。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の例示的な態様は、共有メモリにアクセスするための帯域幅の分散割振りのためのシステムおよび方法に関する。共有メモリに対するアクセスを制御するメモリコントローラは、複数の要求エージェントから共有メモリにアクセスするための帯域幅に対する要求を受信する。メモリコントローラは、共有メモリにアクセスするための帯域幅の飽和レベルを決定するための飽和モニタを含む。各要求エージェントにおける要求レートガバナは、飽和レベルと、要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、要求エージェントに対するターゲット要求レートを決定し、比例的シェアは要求エージェントのサービス品質(QoS)クラスに基づく。
【０００６】
たとえば、例示的な態様は、帯域幅の分散割振りの方法であって、複数の要求エージェントが共有メモリにアクセスするための帯域幅を要求するステップと、共有メモリに対するアクセスを制御するためのメモリコントローラ内の共有メモリにアクセスするための帯域幅の飽和レベルを決定するステップと、飽和レベルと、要求エージェントのサービス品質(QoS)クラスに基づいて要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するステップとを含む方法に関する。
【０００７】
別の例示的な態様は、共有メモリと、共有メモリに対するアクセスを要求するように構成される複数の要求エージェントと、共有メモリに対するアクセスを制御するように構成されるメモリコントローラであって、共有メモリにアクセスするための帯域幅の飽和レベルを決定するように構成される飽和モニタを備える、メモリコントローラとを備える装置に関する。本装置はまた、飽和レベルと、要求エージェントのサービス品質(QoS)クラスに基づいて要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するように構成される要求レートガバナを備える。
【０００８】
別の例示的な態様は、共有メモリにアクセスするための帯域幅を要求するための手段と、共有メモリにアクセスするための帯域幅の飽和レベルを決定するための手段を備える、共有メモリに対するアクセスを制御するための手段と、飽和レベルと、要求するための手段のサービス品質(QoS)クラスに基づいて要求するための手段に割り振られた比例的帯域幅シェアとに基づいて、各要求するための手段におけるターゲット要求レートを決定するための手段とを備える装置に関する。
【０００９】
さらに別の例示的な態様は、プロセッサによって実行されると、帯域幅の分散割振りのための動作をプロセッサに実行させるコードを備える、非一時的コンピュータ可読記憶媒体であって、複数の要求エージェントが共有メモリにアクセスするための帯域幅を要求するためのコードと、共有メモリに対するアクセスを制御するためのメモリコントローラにおいて、共有メモリにアクセスするための帯域幅の飽和レベルを決定するためのコードと、飽和レベルと、要求エージェントのサービス品質(QoS)クラスに基づいて要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するためのコードとを備える、非一時的コンピュータ可読記憶媒体に関する。
【００１０】
添付の図面は、本発明の態様についての説明を助けるために提示され、態様の限定ではなく、態様の例示のためのみに提供される。
【図面の簡単な説明】
【００１１】
【図１】本開示の態様による、1つの例示的な比例的帯域幅割振りシステム内の一構成を示す図である。
【図２Ａ】本開示の態様による、比例的帯域幅割振りにおける例示的な複数フェーズのスロットリング実装形態における論理フローを示す図である。
【図２Ｂ】本開示の態様による、比例的帯域幅割振りにおける例示的な複数フェーズのスロットリング実装形態における論理フローを示す図である。
【図２Ｃ】図2Bの初期化フェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図３Ａ】図2Aの急速スロットルフェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図３Ｂ】図2Bの急速スロットルフェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図４Ａ】図3Aの指数関数的低減プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図４Ｂ】図3Bの指数関数的低減プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図５Ａ】図2Aの高速リカバリフェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図５Ｂ】図2Bの高速リカバリフェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図６Ａ】図5Aの反復検索プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図６Ｂ】図5Bの反復検索プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図７Ａ】図2Aのアクティブ増加フェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図７Ｂ】図2Bのアクティブ増加フェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図８Ａ】図7Aのレート増加プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図８Ｂ】図7Bのレート増加プロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図９Ａ】図7Aのレートロールバックプロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図９Ｂ】図7Bのレートロールバックプロセスにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図１０Ａ】図2Aのリセット確認フェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図１０Ｂ】図2Bのリセット確認フェーズブロックにおける例示的な動作に関する疑似コードアルゴリズムを示す図である。
【図１１】本開示の態様による、比例的帯域幅割振りにおける複数フェーズのスロットリングプロセスにおけるイベントのタイミングシミュレーションを示す図である。
【図１２】本開示の態様による、比例的帯域幅割振りシステム内の例示的な要求レートガバナを示す図である。
【図１３】本開示の態様による、1つの例示的な比例的帯域幅割振りシステム内の共有される第2のレベルキャッシュ配置の一構成を示す図である。
【図１４】本開示の態様による、帯域幅割振りの例示的な方法を示す図である。
【図１５】本開示の1つまたは複数の態様が有利に採用される場合がある例示的なワイヤレスデバイスを示す図である。
【発明を実施するための形態】
【００１２】
本発明の態様が、本発明の特定の態様に関する以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替の態様を考案することができる。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は、詳細に説明せず、または省略されることになる。
【００１３】
「例示的」という語は、「例、事例、または例示として機能すること」を意味するために本明細書で使用される。本明細書で「例示的」と記載される任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「本発明の態様」という用語は、本発明のすべての態様が論じる特徴、利点、または動作モードを含むことを必要とするとは限らない。
【００１４】
本明細書で使用する用語は、特定の態様のみについて説明する目的のためのものであり、本発明の態様の限定であることを意図しない。本明細書では、単数形"a"、"an"、および"the"は、文脈が別段明確に示さない限り、複数形も含むものとする。本明細書で使用される場合、「含む/備える(comprises)」、「含む/備える(comprising)」、「含む(includes)」、および/または「含む(including)」という用語は、述べられた機能、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の機能、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在もしくは追加を排除するものではないことをさらに理解されたい。
【００１５】
さらに、多くの態様について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行することができることが認識されよう。加えて、本明細書で説明するこれらのアクションのシーケンスは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させる、対応するコンピュータ命令のセットを記憶した、任意の形態のコンピュータ可読記憶媒体内で完全に具現化されると見なすことができる。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化されてもよく、それらのすべてが、請求する主題の範囲内にあることが企図される。加えて、本明細書で説明する態様の各々について、任意のそのような態様の対応する形態については、たとえば、説明するアクションを実行する「ように構成される論理」として本明細書で説明する場合がある。
【００１６】
本開示の例示的な態様は、共有リソースの2つ以上のコンシューマまたは要求エージェントの間で共有される、共有メモリなど、少なくとも1つの共有リソースを備える処理システムに関する。一例では、要求エージェントは、共有メモリにアクセスすることができるプロセッサ、キャッシュ、または他のエージェントであることが可能である。要求は、共有メモリに対するアクセスを制御するメモリコントローラに転送されてもよい。場合によっては、要求エージェントは、そこから要求が生成されるか、またはメモリコントローラに転送されるソースと呼ばれる場合もある。要求エージェントは、各クラスに関連するサービス品質(QoS)を備えるクラスにグループ化されてもよい。
【００１７】
例示的な態様によれば、各QoSクラスに対する帯域幅はそのQoSクラスに関するQoS基準を少なくとも満たすのに十分であるように、共有メモリに対する帯域幅を総帯域幅の比例的シェア単位で各QoSクラスに割り振られてもよい。"i"インデックスが、要求エージェントが属するQoSクラスを識別するパラメータβiは、QoSクラスに関する「比例的シェア重み」と呼ばれる(言い換えれば、比例的シェア重みは、エージェントが属するクラスのそれぞれのQoSに基づいてエージェントに割り当てられる帯域幅の比例的シェアを示す)。クラスごとの比例的シェア重みβiに対応して、パラメータαiはクラスごとにやはり定義され、"i"によって識別されるQoSクラスに関して、αiは、そのQoSクラスに関する「比例的シェアストライド」と呼ばれる。例示的な態様では、QoSクラスの比例的シェアストライドαiは、QoSクラスの比例的シェア重みβiの逆数である。QoSクラスの比例的シェアストライドαiは、QoSクラスからの要求にサービスする相対コストを表す。
【００１８】
過剰帯域幅が利用可能であるとき、QoSクラスのそれぞれの比例的シェアパラメータαiまたはβiに基づいて、この場合も比例して、1つまたは複数のQoSクラスに過剰帯域幅が割り振られてもよい。比例的帯域幅分散の例示的な態様は、過剰帯域幅の過少利用の問題を回避しながら各クラスに対するQoSを保証するように設計される。
【００１９】
一態様では、飽和モニタは、共有リソースまたは共有メモリに関するメモリコントローラに関連付けられることが可能である。飽和モニタは、飽和の1つまたは複数のレベルを示す飽和信号を出力するように構成されることが可能である。飽和レベルは、所与の時間間隔の間にサービスされるべき未解決の要求の数の指示を提供してもよく、たとえば共有メモリにアクセスするためにメモリコントローラによってスケジュールされるのを待機している着信待ち行列内の要求の数のカウント、帯域幅の欠如によりアクセスが拒否されるかまたは共有リソースにアクセスするためにスケジュールされることを拒絶される要求の数に基づいて、を含む様々な方法で測定されることが可能である。所与の間隔はエポックと呼ばれる場合があり、時間のユニット、たとえば、マイクロ秒、またはクロックサイクルの数で測定されることが可能である。エポックの長さはアプリケーション固有であることが可能である。飽和モニタは、たとえば、不飽和状態を示すための1つまたは複数のレベル、共有リソースの低飽和状態、中飽和状態、または高飽和状態など、1つまたは複数のレベルのうちの1つで飽和信号を出力することができる。
【００２０】
各要求エージェントにおいて、飽和信号に基づいて、エージェントから生成される要求のレートを調整するためにガバナが提供される。ガバナは、エポックごとに、各ガバナが、他の要求エージェントの他のガバナと通信する必要なく、その対応する要求エージェントのターゲット要求レートを再計算するという意味で、エージェントにわたって分散されるガバナアルゴリズムを実装する。例示的な態様では、各ガバナは、他の要求エージェントと通信せずに、エポック境界および飽和信号の知識に基づいて、そのそれぞれの要求エージェントのターゲット要求レートを計算することができる。
【００２１】
次に図1を参照すると、例示的な態様により構成される例示的な処理システム100を示す。処理システム100は、1つまたは複数のプロセッサを有してもよく、そのうちの2つのプロセッサが代表的にプロセッサ102a〜bとして示される。プロセッサ102a〜bは、プライベートキャッシュを含む1つまたは複数のレベルのキャッシュを有してもよく、それぞれのプロセッサ102a〜bに対して、そのうちのプライベートキャッシュ104a〜b(たとえば、レベル1または"L1"キャッシュ)が示される。プライベートキャッシュ104a〜bは共有キャッシュ(図示せず)を含めて他のキャッシュと通信することができるが、示した例では、プライベートキャッシュ104a〜bはメモリコントローラ106と通信するとして示される。メモリコントローラ106はメモリ112に対するアクセスを管理してもよく、メモリ112は共有リソースであってもよい。メモリ112は、当技術分野で知られているようにハードドライブまたはメインメモリであってもよく、オフチップで位置してよい、すなわち、(たとえば、プロセッサ102a〜b、プライベートキャッシュ104a〜b、およびメモリコントローラ106を含めて)図1に示す処理システム100の残りを統合するダイまたはチップとは異なるダイまたはチップ上に統合されてよいが、様々な代替実装形態が可能である。
【００２２】
プロセッサ102a〜bがそれぞれプライベートキャッシュ104a〜bからデータを要求し、それぞれのプライベートキャッシュ104a〜b内にミスが存在するたびに、プライベートキャッシュ104a〜bは、(たとえば、その要求が読取り要求である一例では)要求されたデータがメモリ112からフェッチされるように、それらの要求をメモリコントローラ106に転送することになる。プライベートキャッシュ104a〜bからの要求は、メモリコントローラ106の観点から着信メモリ要求とも呼ばれる。メモリ112の位置はオフチップ実装であってよく、またはオンチップ実装であってすらよく、データの転送のための長いワイヤ/配線を必要とする場合があり、メモリ112に対するインターフェース(たとえば、インターフェース114)は、任意の所与の時点でサービスされることが可能な着信メモリ要求の数を限定する場合がある帯域幅制限を有してもよい。メモリコントローラ106は、それらがサービスされる前に、着信メモリ要求を待ち行列に入れるために待ち行列機構(詳細に図示せず)を実装してもよい。待ち行列機構がいっぱいであるかまたは飽和している場合、下記で説明する1つまたは複数の方法で、一部の着信メモリ要求は拒絶されてもよい。
【００２３】
メモリコントローラ106は飽和モニタ108を含むように示され、飽和モニタ108は飽和レベルを決定するように構成される。飽和レベルは様々な方法で決定することができる。一例では、飽和はプライベートキャッシュ104a〜bからの着信メモリ要求の数のカウントに基づくことができ、着信メモリ要求は、サービスに対して受け入れられないとして拒絶されるかまたは要求ソースに送信し戻される。別の例では、飽和レベルは、メモリ112にアクセスするための帯域幅の利用不可能性により、メモリ112に対するアクセスがスケジュールされない未解決の要求の数のカウントに基づくことができる。たとえば、飽和レベルは、メモリコントローラ106によって維持されるオーバーフロー待ち行列の占有レベル(明示的に図示せず)に基づくことができ、オーバーフロー待ち行列は、(たとえば、拒絶され、要求ソースに送信し戻されるのではなく)メモリ112にアクセスするための帯域幅の利用不可能性により、メモリ112に対するアクセスを直ちにスケジュールすることができない要求を維持することができる。飽和レベルが決定される特定の様式にかかわらず、あらゆるエポックの終点における(たとえば、オーバーフロー待ち行列の拒絶または占有の)カウントを事前指定されたしきい値と比較することができる。カウントがしきい値以上である場合、飽和モニタ108は、飽和を示すための飽和信号(図1で"SAT"として示す)を生成してもよい。カウントがしきい値未満である場合、飽和が存在しないことを示すために、飽和モニタ108はSAT信号をアサート解除するか、または不飽和状態に設定してもよい。いくつかの態様では、たとえば、2ビット飽和信号SAT[1:0](具体的に図示せず)を使用することによって、異なるレベルの飽和、たとえば、低飽和、中飽和、または高飽和を示すように飽和信号が生成されてもよく、適切な飽和値の生成は、異なる飽和レベルを示す2つ以上のしきい値に対するカウントの比較に基づいてもよい。
【００２４】
引き続き図1を参照すると、プライベートキャッシュ104a〜bは、関連する要求レートガバナ110a〜bを含むように示される。要求レートガバナ110a〜bは、中でも、飽和モニタ108によって生成される飽和信号SATに基づいて帯域幅割振りを実施するように構成される。飽和信号SATは、図1で参照番号116によって指定されるバスを介して要求レートガバナ110a〜bに直接提供されるとして示されるが、これは、このための専用バスを暗示しない場合があり、場合によっては、バス116は、プライベートキャッシュ104a〜bとメモリコントローラ106との間の通信のために(たとえば、メモリコントローラ106において着信メモリ要求を受信して、要求されたデータをプライベートキャッシュ104a〜bに供給するために)使用される、参照番号118で指定されるインターフェースに結合されてもよく、またはその一部であってもよいことを理解されよう。要求レートガバナ110a〜bは、それぞれのプライベートキャッシュ104a〜bに関するターゲット要求レートを決定するように構成されることが可能である。ターゲット要求レートは、メモリ要求がプライベートキャッシュ104a〜bによって生成されてもよいレートであってもよく、ターゲット要求レートは、それらの関連するQoSクラスに基づいて(たとえば、対応するプロセッサ102a〜bのQoSクラスに基づいて)プライベートキャッシュ104a〜bに割り当てられた関連する比例的シェアパラメータ(たとえば、特定の実装形態に基づく、比例的シェア重みβiまたは関連する比例的シェアストライド)αiに基づいてもよい。
【００２５】
比例的シェア重みβiの点で、各要求エージェントに対する比例的帯域幅シェアは、要求エージェントに割り当てられた帯域幅シェア重みを複数の要求エージェントの各々に割り当てられた帯域幅シェア重みの和で除算することによって提供される。たとえば、各QoSクラス(または、対応して、それらのそれぞれのQoSクラスに基づくプライベートキャッシュ104a〜bなどに対するそれぞれのQoSクラスに属するエージェント)に対する比例的シェアは、QoSクラスまたは対応するエージェントに対して割り当てられた帯域幅シェア重みをそれぞれの割り当てられた帯域幅シェア重みのすべての和で除算する観点から表現することができ、これは、以下の式(1)に示すように表すことができる。
【数１】
2019501447.tif 000003
ここで分母Σ∀βjは、QoSクラスのすべてに対する帯域幅シェア重みの和を表す。
【００２６】
比例的シェア重みβiの代わりに比例的シェアストライドαiを使用して、式1から比例的シェアの計算を簡素化することができることに留意されたい。αiはβiの逆数であるため、αiは整数として表現することができ、要求にサービスするコストを決定するためにランタイムの間にまたはオンザフライで除算(または、分数による乗算)を回避することができることを意味することを認識することによってこれを理解することができる。したがって、比例的シェアストライドαiの点で、各要求エージェントに対する比例的帯域幅シェアは、要求エージェントに割り当てられた帯域幅シェアストライドを複数の要求エージェントの各々に割り当てられた帯域幅シェアストライドの和で乗算することによって提供される。
【００２７】
それぞれの比例的シェアを計算するために使用される特定の機構にかかわらず、要求レートガバナ110a〜bは、ターゲット要求レートに従って、プライベートキャッシュ104a〜bによってメモリ要求が生成されるレートを調整またはスロットリングするように構成されてもよい。一例では、要求レートガバナ110a〜bは、互いにロックステップ(lockstep)で、複数のフェーズ、たとえば、4つのフェーズを含むプロセスによってターゲット要求レートを調整するように構成されてもよく、ターゲット要求レートはフェーズに基づいて変化してもよい。これらのフェーズ同士の間の移行およびそれぞれのターゲット要求レートに対する対応する調整は、エポック境界などの時間間隔で生じてもよい。ロックステップで実行することは、すべてのプライベートキャッシュ104a〜bに対する要求レートが対応する帯域幅シェアに比例し、効率的なメモリ帯域幅利用をもたらすことができるように、要求レートガバナ110a〜bが急速に平衡状態に達することを可能にすることができる。飽和信号SATおよび要求レートガバナ110a〜bに基づくレート調整の例示的な実装形態では、追加のシンクロナイザは必要とされない。
【００２８】
次に図2A〜図2Bを参照すると、上記で論じた複数のフェーズ同士の間の移行に関するプロセス200および250に関するフローチャートが示される。プロセス200および250は同様であり、図2Aのプロセス200は、比例的シェア重みβiを使用してターゲットレートを(たとえば、要求/サイクル単位で)計算するためのアルゴリズムに関するが、図2Bのプロセス250は、(αiとβiとの間の反比例関係により)比例的シェアストライドαiを使用してターゲットレートの逆数を(整数単位で)計算するためのアルゴリズムを表す。図2Aに示すプロセス200のブロック202〜210を実装するために使用されてもよい例示的なアルゴリズムが下記で図3A〜図10Aに関して示され、説明される。ターゲットレートの逆数は整数単位で表現することができるため、図3B〜図10Bの対応するアルゴリズムは、図2Bに示すプロセス250のブロック252〜260を実装するために使用されてもよい例示的なアルゴリズムを示す。図3B〜図10Bのターゲットレートの逆数の表現で使用される整数単位の使用により、図3B〜図10Bのアルゴリズムの実装形態は図3A〜図10Aのそれらの相対物であるアルゴリズムの実装形態と比較してより単純である場合がある。
【００２９】
図2Aに示すように、プロセス200は、処理システム内の要求レートガバナ110a〜bのすべて、たとえば、図1の要求レートガバナ110a〜bを初期化することによって、ブロック202で開始することができる。ブロック202の初期化は、比例的シェア重みβiの場合、"RateMAX"と呼ばれる(対応して、インデックス"N"は"1"に初期化されてもよい)最大ターゲット要求レート、または、比例的シェアストライドαiの場合、やはり1に初期化されてもよいperiodMINと呼ばれる最小期間のいずれかを生成するようにすべての要求レートガバナ110a〜bを設定するステップを伴うことができる。ストライドに関して、ターゲットは、RateMaxではなく、図2Cに示すようにStrideMinであることを除いて、図2Bのプロセス250の初期化ブロック252は、図2Cに示す初期化状態と同様であってもよい。
【００３０】
図2Aでは、ブロック202における初期化時に、プロセス200は、「急速スロットル(Rapid Throttle)」フェーズと呼ばれる第1のフェーズを含むブロック204に進むことができる。ブロック204で、ガバナ110に関する新しいターゲットレートが設定され、急速スロットルフェーズにおけるターゲットレートに関する上限境界および下限境界も確立される。一例では、要求レートガバナ110a〜bの各々に関するターゲットレートを最大ターゲットレートRateMAXに再設定することができ、次いで飽和モニタ108からの飽和信号SATがメモリコントローラ106内に何の飽和も存在しないことを示すまで、ターゲットレートはいくつかの反復によって低減されてもよい。それぞれの要求レートガバナ110a〜bを備えるプライベートキャッシュ104a〜bの間で帯域幅割振りの比例的シェアを維持するために、ブロック204の急速スロットルフェーズの間、要求レートガバナ110a〜bの各々は、対応する割り当てられたβi値に基づいて、そのそれぞれのターゲットレートをスケーリングすることができ、反復間で指数関数的に低減させるステップサイズでターゲットレートを低減させることができる。たとえば、低減の大きさは、以下の式(2)に従ってもよい。
【数２】
2019501447.tif 000004
(同等に、ストライドに関して、式2は式(2')として表すことができる。
Stride = N*αi    式(2'))
【００３１】
一態様では、要求レートガバナ110a〜bの各々がその新しいターゲットレートを取得する上限境界および下限境界は、ターゲットレートの反復低減における最後の2つのターゲットレートであってもよい。一例として、ブロック204の急速スロットルフェーズの第n番目の反復がメモリコントローラ106を不飽和状態にすると仮定して、前の第(n-1)番目の反復におけるターゲットレートを上限境界として設定することができ、第n番目の反復におけるターゲットレートを下限境界として設定することができる。ブロック204の急速スロットルフェーズにおける例示的な動作が図3A〜図4Aで説明され、ブロック254の相対物である急速スロットルフェーズにおける例示的な動作が図3B〜図4Bで説明される。
【００３２】
ブロック204で上限境界および下限境界が確立されると、プロセス200は、「高速リカバリ(Fast Recovery)」フェーズと呼ばれる第2のフェーズを含むブロック206に進むことができる。高速リカバリフェーズで、要求レートガバナ110a〜bの各々によって生成されたターゲットレートは、たとえば、バイナリサーチプロセスを使用して、上限境界範囲および下限境界範囲に入り、飽和モニタ108からの飽和信号SATが飽和を示さない最高値を有するターゲットレートに急速に改善される。バイナリサーチプロセスは、各反復において、前の反復がメモリコントローラ106の飽和をもたらしたか(または、取り除いたか)どうかに基づいて、ターゲットレートを一方向(たとえば、上または下に)変更させてもよい。この点で、前の反復がメモリコントローラ106の飽和をもたらした場合、下記の式(3)の対が適用されてもよく、前の反復がメモリコントローラ106の不飽和状態をもたらした場合、下記の式(4)が適用されてもよい。
PrevRate = Rate; かつ Rate = Rate - (PrevRate-Rate)    式(3)
Rate = 0.5*(Rate+PrevRate)    式(4)
(同等に、図6Bのアルゴリズム650で示すようなレートの代わりにストライドが使用されるとき、相対物である式(3')および(4')が提供される。)
【００３３】
一態様では、ブロック206の動作はクローズドエンドする(closed ended)ことができ、すなわち、バイナリサーチにおいて特定の数"S"(たとえば、5)の反復が実行された後で要求レートガバナ110a〜bは高速リカバリフェーズを退出することができる。高速リカバリフェーズの206における動作の例は、下記の図5A〜図6Aを参照してより詳細に説明され、図2Bのブロック256における例示的な動作は、相対物である図5B〜図6Bに示される。
【００３４】
図2Aを参照すると、206において高速リカバリ動作が新しいターゲットレートを改善する第S番目の反復を適用するとすぐに、要求レートガバナ110a〜bの各々は、現在のシステム状態に関して、プライベートキャッシュ104a〜b同士の間で(たとえば、図1のインターフェース114およびメモリ112の帯域幅を制御するメモリコントローラ106の)システム帯域幅を適切に分配するターゲットレートを有することになる。しかしながら、システム状態を変更することが可能である。たとえば、他のプロセッサ(図1では可視でない)のプライベートキャッシュなどの追加のエージェントは、メモリコントローラ106を介して共有メモリ112に対するアクセスを競う場合がある。代替としてまたは追加で、プロセッサ102a〜bのうちの1つもしくは両方の、またはそれらのそれぞれのプライベートキャッシュ104a〜bが新しいQoS値を有する新しいQoSクラスに割り当てられてもよい。
【００３５】
したがって、一態様では、206において高速リカバリ動作がガバナ110a〜bに対するターゲットレートを改善するとすぐに、プロセス200は、「アクティブ増加(Active Increase)」フェーズと呼ばれる場合もある第3のフェーズを含むブロック208に進むことができる。アクティブ増加フェーズで、要求レートガバナ110a〜bは、より多くのメモリ帯域幅が利用可能になったかどうかを判定するように探索してもよい。この点で、アクティブ増加フェーズは、飽和モニタ108からの飽和信号SATがメモリコントローラ106の飽和を示すまで繰り返されてもよい、要求レートガバナ110a〜bの各々における、ターゲットレートのステップごとの増加を含むことができる。ステップごとの増加の各反復はステップの大きさを拡大することができる。たとえば、ステップの大きさは、下記で式(5)によって定義されるように、指数関数的に増加されてもよく、NはN=1において開始する反復の数である。
Rate = Rate+(βi*N)    式(5)
(または、同等に、ストライドに関して、式(5')が使用されてもよい:
Stride = Stride-αi*N    式(5'))
【００３６】
アクティブ増加フェーズのブロック208における動作の例は、図7A〜図9Aを参照してさらに詳細に説明される。図2Bで、ブロック258および259は、図2Aのブロック208の相対物として示される。より詳細には、アクティブ増加フェーズは2つのフェーズ、すなわち、線形に増加するブロック258のアクティブ増加フェーズと、指数関数的に増加するブロック259のハイパーアクティブ増加フェーズとに分割される。対応して、図7B〜図9Bは、図2Bのブロック258と259の両方に関してさらなる詳細を提供する。
【００３７】
図2Aを参照すると、場合によっては、要求レートガバナ110a〜bは、ブロック208のアクティブ増加動作が飽和を示す飽和信号SATをもたらす第1のインスタンスに応じて、プロセス200が204で急速スロットル動作に速やかに進むことができるように構成されてもよい。
【００３８】
しかしながら、一態様では、安定性を増加させるために、プロセス200は、まず、ブロック208でアクティブ増加フェーズを退出させた飽和信号SATが、スパイクまたは他の過渡イベントとは対照的に、重大な状態変更に起因した可能性があったことを確認するために「リセット確認(Reset Confirmation)」フェーズと呼ばれる第4のフェーズを含むブロック210に進むことができる。言い方を変えれば、ブロック210のリセット確認フェーズにおける動作は、飽和信号SATが非過渡的であるという資格を提供し、確認された場合、すなわち、ブロック210で飽和信号SATが非過渡的であるという資格が真であると判定された場合、プロセス200は、"yes"経路を追って「リセット」フェーズと呼ばれるブロック212に進み、次いでブロック204の急速スロットルフェーズの動作に戻る。一態様では、ブロック208のアクティブ増加フェーズ動作は、ブロック210のリセット確認フェーズ動作に退出するとき、ターゲットレートを1インクリメント分だけステップダウンさせるように構成することもできる。1つの例示的なステップダウンは、以下の式(6)に従ってもよい。
Rate = PrevRate-βi    式(6)
(同等に、ストライドに関して、式(6')が適用される:
Stride = PrevStride+αi    式(6'))
【００３９】
一態様では、ブロック210におけるリセット確認フェーズの動作がブロック208でアクティブ増加フェーズ動作を退出させた飽和信号SATが、スパイクまたは他の過渡イベントに起因したことを示す場合、プロセス200はブロック208でアクティブ増加動作に戻ってもよい。ブロック260における対応するリセット確認フェーズが、図2Bおよび図10Bに示される。
【００４０】
図3A〜図3Bは、それぞれ、疑似コードアルゴリズム300および350、たとえば、図2Aのブロック204および図2Bのブロック254の急速スロットルフェーズを実装してもよい動作を示す。図4A〜図4Bは、それぞれ、疑似コードアルゴリズム300および350内に含まれる「指数関数的低減」と標示される指数関数的低減手順を実装してもよい疑似コードアルゴリズム400および450を示す。疑似コードアルゴリズム300は、以下で、「急速スロットルフェーズアルゴリズム300」と呼ばれ、疑似コードアルゴリズム400は「指数関数的低減アルゴリズム400」と呼ばれ、下記でより詳細に説明されるが、同様の説明が相対物である疑似コードアルゴリズム350および450に適用可能であることに留意されたい。
【００４１】
図3Aおよび図4Aを参照すると、急速スロットルフェーズアルゴリズム300は図1の飽和モニタ108からのSATに基づく条件付き分岐動作を伴う302において開始することができる。SATが、メモリコントローラ106が飽和していることを示す場合、疑似コードアルゴリズム300は、指数関数的低減アルゴリズム400にジャンプして、ターゲットレートを低減させることができる。図4Aを参照すると、指数関数的低減アルゴリズム400は、402において、PrevRateをRateに設定することができ、次いで404において、式(2)に従ってターゲットレートを低減させて、406に進み、Nを2で乗算し、次いで408に進んで、急速スロットルフェーズアルゴリズム300に戻ることができる。急速スロットルフェーズアルゴリズム300は、上述のループを繰り返して、302における条件付き分岐が、共有メモリコントローラ106がもはや飽和していないことを示すレベルのSATを受信するまで、各反復においてNを2倍にすることができる。急速スロットルフェーズアルゴリズム300は、次いで304に進むことができ、ここで急速スロットルフェーズアルゴリズム300は、Nを0に設定し、次いで306に進み、ここで図2Aのブロック206の高速リカバリフェーズに移行する。
【００４２】
図5A〜図5Bは、疑似コードアルゴリズム500および550、たとえば、図2Aのブロック206および図2Bのブロック256の高速リカバリフェーズを実装してもよい動作をそれぞれ示す。図6A〜図6Bは、疑似コードアルゴリズム500および550内に含まれる"BinarySearchStep"と標示されるバイナリサーチ手順を実装してもよい疑似コードアルゴリズム600および650をそれぞれ示す。疑似コードアルゴリズム500は、以下で、「高速リカバリフェーズアルゴリズム500」と呼ばれ、疑似コードアルゴリズム600は「バイナリサーチステップアルゴリズム600」と呼ばれ、下記でより詳細に説明されるが、同様の説明が相対物の疑似コードアルゴリズム550および650に適用可能であることに留意されたい。
【００４３】
図5Aおよび図6Aを参照すると、高速リカバリフェーズアルゴリズム500内の例示的な動作は、Nを1だけインクリメントさせるバイナリサーチステップアルゴリズム600にジャンプすることによって502において開始することができる。バイナリサーチステップアルゴリズム600から戻るとすぐに、504における動作は、NがSに等しいかどうかをテストすることができ、ここで"S"は、高速リカバリフェーズアルゴリズム500が繰り返すように構成される反復の特定の数である。上記で説明したように、1つの例示的な"S"は5であってよい。バイナリサーチステップアルゴリズム600に関して、例示的な動作は、602における条件付き分岐において開始し、次いでSATがメモリコントローラ106が飽和していることを示すかどうかに応じて604におけるステップダウン動作または606におけるステップアップ動作のいずれかに進むことができる。SATが、メモリコントローラ106が飽和していることを示す場合、バイナリサーチステップアルゴリズム600は、604においてステップダウン動作に進み、式(3)に従ってターゲットレートを低減させることができる。バイナリサーチステップアルゴリズム600は、次いで608に進み、Nを1だけインクリメントし、次いで610に進み、高速リカバリフェーズアルゴリズム500に戻ることができる。
【００４４】
602において、SATが、メモリコントローラ106が飽和していないことを示す場合、バイナリサーチステップアルゴリズム600は、606においてステップアップ動作に進み、式(4)に従ってターゲットレートを増加させることができる。バイナリサーチステップアルゴリズム600は、次いで608に進み、ここでバイナリサーチステップアルゴリズム600は、Nを1だけインクリメントし、次いで610において、高速リカバリフェーズアルゴリズム500に戻ることができる。504において、NがSに達したことを検出するとすぐに、高速リカバリフェーズアルゴリズム500は506に進み、Nを整数1に初期化して、PrevRateをRateの最後の反復値にセットし、次いで図2Aのブロック208のアクティブ増加フェーズにジャンプすることができる。
【００４５】
図7A〜図7Bは、疑似コードアルゴリズム700および750、たとえば、図2Aのブロック208および図2Bのブロック258および259のアクティブ増加フェーズを実装してもよい動作をそれぞれ示す。図8Aは、疑似コードアルゴリズム700内に含まれる"ExponentialIncrease"と標示されるターゲットレート増加手順を実装してもよい疑似コードアルゴリズム800を示す。図8Bは、疑似コードアルゴリズム750内に含まれる線形増加および指数関数的増加に関するターゲットストライド設定手順を実装してもよい疑似コードアルゴリズム850を示す。図9A〜図9Bは、疑似コードアルゴリズム700および750内にやはり含まれる"RateRollBack"と標示されるレートロールバック手順を実装してもよい疑似コードアルゴリズム900および950をそれぞれ示す。疑似コードアルゴリズム700は、以下で、「アクティブ増加フェーズアルゴリズム700」と呼ばれ、疑似コードアルゴリズム800は「指数関数的増加アルゴリズム800」と呼ばれ、疑似コードアルゴリズム900は「レートロールバック手順アルゴリズム900」と呼ばれ、下記でより詳細に説明されるが、同様の説明が相対物の疑似コードアルゴリズム750、850および950に適用可能であることに留意されたい。
【００４６】
図7A、図8A、および図9Aを参照すると、アクティブ増加フェーズアルゴリズム700の例示的な動作は、SATが、メモリコントローラ106が飽和していることを示すとすぐに、図2Aのブロック210のリセット確認フェーズに退出させる、702における条件付き退出分岐において開始することができる。702の第1のインスタンスにおいて、飽和が生じていないと仮定して、アクティブ増加フェーズアルゴリズム700は、702から指数関数的増加アルゴリズム800に進むことができる。
【００４７】
図8Aを参照すると、指数関数的増加アルゴリズム800の動作は、802において、PrevRateをRateに設定し、次いで804において、式(5)に従ってターゲットレートを増加させ、次いで806において、Nの値を2倍にすることができる。指数関数的増加アルゴリズム800は、次いで808において、アクティブ増加フェーズアルゴリズム700内の702に戻ることができる。702から指数関数的増加アルゴリズム800に進み、702に戻るループは、SATが、メモリコントローラ106が飽和していることを示すまで継続することができる。アクティブ増加フェーズアルゴリズム700は、次いで応答して、704に進むことができ、ここでアクティブ増加フェーズアルゴリズム700は、レートロールバック手順アルゴリズム900を使用してターゲットレートを低減させて、図2のブロック210の確認リセットフェーズに進むことができる。図9Aを参照すると、レートロールバック手順アルゴリズム900は、たとえば、式(6)に従ってターゲットレートを低減させることができる。
【００４８】
図10A〜図10Bは、疑似コードアルゴリズム1000および1050、たとえば、図2Aのブロック210および図2Bのブロック260の確認リセットフェーズを実装してもよい動作をそれぞれ示す。疑似コードアルゴリズム1000は、以下で、「確認リセットフェーズアルゴリズム1000」と呼ばれ、以下で詳細に説明されるが、疑似コードアルゴリズム1050は同様であることに留意されたい。図10Aを参照すると、確認リセットフェーズアルゴリズム1000の動作は、1002において開始することができ、ここでNは1にリセットすることができる。図2A、図3A、図4A、および図7Aとともに図10Aを参照すると、整数"1"は、確認リセットフェーズアルゴリズム1000が退出することができる2つのプロセス点のうちのいずれかに入るためのNの適切な開始値であることを理解されよう。
【００４９】
図10Aを参照すると、1002においてNを整数1に設定した後で、確認リセットフェーズアルゴリズム1000は、1004に進み、飽和モニタ108からの飽和信号SATに基づいて、確認リセットフェーズアルゴリズム1000がブロック202で急速スロットルフェーズ(たとえば、図3A、図4Aに従って実装される)に退出するか、またはブロック208のアクティブ増加フェーズ(たとえば、図7A、図8A、および図9Aに従って実装される)に退出するかを決定することができる。より具体的には、1004において、SATが飽和がないことを示す場合、702において、SATが終了させてアクティブ増加フェーズアルゴリズム700から退出させる考えられる原因は、過渡状態であり、図2Aのプロセス200の繰返しを許さないことである場合がある。したがって、確認リセットフェーズアルゴリズム1000は、1006に進み、アクティブ増加フェーズアルゴリズム700に戻ることができる。702において、前にNを整数1にリセットすることは、ターゲットレートを増加させるその開始状態にアクティブ増加フェーズアルゴリズム700を戻すことになることを理解されよう。
【００５０】
図10Aを参照すると、SATが、1004において、メモリコントローラ106の飽和を示す場合、飽和信号SATが702においてアクティブ増加フェーズアルゴリズム700から退出させる考えられる原因は、メモリロード内の実質的な変更、たとえば、別のプライベートキャッシュによるメモリコントローラ106のアクセス、またはQoS値の再割当てである。したがって、確認リセットフェーズアルゴリズム1000は、1008に進むことができ、ここで動作はターゲットレートをRateMAXにリセットし(または、疑似コードアルゴリズム1050の場合、ストライドをStrideMinにリセットし)、次いで指数関数的低減アルゴリズム400に進み、次いで急速スロットルフェーズアルゴリズム300に戻ることができる。
【００５１】
図11は、本開示の態様による、比例的帯域幅割振りにおける複数フェーズのスロットリングプロセスにおけるイベントのタイミングシミュレーションを示す。水平軸はエポック内でデマーキングされた(demarked)時間を表す。垂直軸はターゲットレートを表す。βは、異なる要求レートガバナ110におけるβiを表すことを理解されよう。イベントは図1および図2A〜図2Bを参照して説明される。水平軸すなわち時間軸上で示される飽和信号"SAT"は、飽和を示す、飽和モニタ108からの値SATを表す。エポック境界におけるSATの不存在は、飽和モニタからのSATが飽和を示さないことを表す。
【００５２】
図11を参照すると、エポック境界1102に先立って、すべての要求レートガバナ110のターゲットレートはRateMAX(または、対応して、StrideMin)に設定され、Nは1に初期化される。エポック境界1102において、すべての要求レートガバナ110はブロック202で急速スロットルフェーズに移行する。要求レートガバナ110a〜bがブロック202で急速スロットルフェーズに残る間隔は、1104と標示され、「急速スロットルフェーズ1104」と呼ばれることになる。急速スロットルフェーズ1104にわたる例示的な動作は、図3Aおよび図4Aを参照して説明される。飽和信号SATはエポック境界1102において不存在であるが、図4A、項目406に示すように、("1"に初期化された)Nは、N=2になるように2倍にされる。次のエポック境界(別に標示されていない)においてSAT1106を受信するとすぐに、要求レートガバナ110a〜bは、図4A、疑似コード動作404において示すように、N=2を用いて、それらのそれぞれのターゲットレートを低減させる。したがって、ターゲットレートはRateMAX/2*βに低減される。Nはまた、N=4になるように、再度2倍にされる。SAT1108が次のエポック境界(別に標示されていない)において受信され、応答して、要求レートガバナ110a〜bは、N=4を用いて、式(2)に従って、それらのそれぞれのターゲットレートを低減させる。したがって、ターゲットレートはRateMAX/4*βに低減される。
【００５３】
エポック境界1110において、SATは不存在である。結果は、図3Aの304および306によって示すように、すべての要求レートガバナ110はNを"0"に再初期化し、ブロック204において高速リカバリフェーズ動作に移行することである。要求レートガバナ110が高速リカバリフェーズに残る間隔は、図11上で1112と標示され、「高速リカバリフェーズ1112」と呼ばれることになる。高速リカバリフェーズ1112にわたる例示的な動作は、図5Aおよび図6Aを参照して説明される。SATは高速リカバリフェーズ1112への移行時に不存在であったため、第1の反復は、図6Aの疑似コード動作602および606において示したステップアップによってターゲットレートを増加させることができる。疑似コード動作606は、ターゲットレートをRateMAX/4*βとRateMAX/2*βの間の中間まで増加させる。疑似コード動作608は、Nを"1"にインクリメントさせる。次のエポック境界(別に標示されていない)においてSAT1114を受信するとすぐに、要求レートガバナ110a〜bは、図6A、疑似コード動作604に従って、それらのそれぞれのターゲットレートを低減させる。
【００５４】
図11を参照すると、エポック境界1116において、図5Aの項目504において、反復カウンタは"S"に達すると仮定される。したがって、図5Aの疑似コード動作506において示すように、Nは"1"に再初期化され、PrevRateはRateに等しく設定され、ブロック208において、要求レートガバナ110a〜bはアクティブ増加フェーズ動作に移行する。要求レートガバナ110a〜bがアクティブ増加フェーズ動作にとどまるエポック境界1116に続く間隔は、「アクティブ増加フェーズ1118」と呼ばれる。アクティブ増加フェーズ1118にわたる例示的な動作は、図7A、図8A、および図9Aを参照して説明される。エポック境界1116において、アクティブ増加フェーズ1118内の第1の反復は、図8Aの疑似コード動作804によって、または式(5)によって定義されたように、ターゲットレートを増加させる。エポック境界1120において、第2の反復は、804において、図8Aの疑似コード動作によって再度ターゲットレートを増加させる。エポック境界1122において、第3の反復は、図8Aの疑似コード動作804によって再度ターゲットレートを増加させる。
【００５５】
エポック境界1124において、SATが出現し、応答して、要求レートガバナ110は、図2Aのブロック210のリセット確認動作に移行する。この移行は、図7Aの疑似コード動作704に示すような、ターゲットレートのステップダウンを含むことができる。要求レートガバナ110が、210において、図2Aのリセット確認フェーズ動作にとどまるエポック境界1124に続く間隔は、「リセット確認フェーズ1126」と呼ばれる。エポック境界1128においてSATは不存在であり、これは、リセット確認フェーズ1126に移行させたSATは過渡イベントまたはスパイクイベントであった可能性があることを意味する。したがって、応答して、要求レートガバナ110は、208において図2Aのアクティブ増加動作に再度移行する。
【００５６】
要求レートガバナ110a〜bがブロック208におけるアクティブ増加フェーズ動作に再度とどまるエポック境界1128に続く間隔は、「アクティブ増加フェーズ1130」と呼ばれる。アクティブ増加フェーズ1130にわたる例示的な動作は、この場合も、図7A、図8A、および図9Aを参照して説明される。要求レートガバナ110がアクティブ増加フェーズ1130に移行するとき、アクティブ増加フェーズ1130内の第1の反復は、式(5)によって定義されたように、図8Aの疑似コード動作804によってターゲットレートを増加させる。エポック境界1132において、SATは不存在であるため、第2の反復は、図8Aの疑似コード動作804によって再度ターゲットレートを増加させる。
【００５７】
エポック境界1134において、SATが出現し、応答して、要求レートガバナ110は、図2Aのリセット確認動作210に再度移行する。この移行は、図7Aの疑似コード動作704に示すような、ターゲットレートのステップダウンを含むことができる。要求レートガバナ110a〜bが、ブロック210において、リセット確認フェーズ動作にとどまるエポック境界1134に続く間隔は「リセット確認フェーズ1136」と呼ばれる。エポック境界1138においてSATが受信され、これは、リセット確認フェーズ1136に移行させたSATはシステム状態変更であった可能性があることを意味する。したがって、要求レートガバナ110a〜bは、ブロック202において急速スロットル動作に移行する。
【００５８】
図1を参照すると、要求レートガバナ110a〜bは、プライベートキャッシュ104a〜bによってミス(および、対応して、メモリコントローラ106のアクセス)を適時に拡散させることによってターゲットレートを実施することができる。レートRを達成するために、要求レートガバナ110a〜bは、各々が平均して、W/Rateサイクルごとにミスを発行するように、プライベートキャッシュ104a〜bを制約するように構成されることが可能である。要求レートガバナ110a〜bは、ミスが発行されることを可能にする次のサイクルCnextを追跡するように構成されることが可能である。構成は、現在の時間CnowがCnext未満である場合、プライベートキャッシュ104a〜bがメモリコントローラ106にミスを発行することを妨げることを含むことができる。要求レートガバナ110a〜bは、ミスが発行されると、CnextをCnext+(W/Rate)に更新することができるようにさらに構成されることが可能である。所与のエポック内で、W/Rateは定数であることを理解されよう。したがって、レート実施論理は単一の加算器を使用して実装することができる。
【００５９】
エポック内で、Cnextは厳密に加法的であるため、プライベートキャッシュ102など、制御されるレートキャッシュには、短い非アクティビティ期間にわたって「クレジット」を与えることができることを理解されよう。したがって、プライベートキャッシュ104a〜bが、Cnow>>Cnextになるように非アクティビティ期間を経る場合、そのプライベートキャッシュ104a〜bは、Cnextが追いつく間、何のスロットリングも伴わずに要求のバーストを発行することを可能にされることが可能である。要求レートガバナ110a〜bは、各エポックの終了時に、CnextをCnowに等しく設定することができるように構成されることが可能である。別の実装形態では、要求レートガバナ110a〜bは、各エポック境界の終了時に、N*(Stride、PrevStride内の差異)によってC_Nextの調整を調整し、前のN個(たとえば、16個)の要求が古いストライド/レートではなく新しいストライド/レートで発行されたかのように出現させることが可能であるように構成されることが可能である。これらの特徴は、前のエポックからのいずれの確立されたクレジットも新しいエポック内に流出しないという確実性を提供することができる。
【００６０】
図12は、プライベートキャッシュ104a〜b(この図では、参照ラベル"104"で指定される)の各々およびその対応する要求レートガバナ110a〜b(この図では、参照ラベル"110"で指定される)を形成することができる論理の1つの配置の概略ブロック図1200を示す。上記で説明したように、要求レートガバナ110は、割り当てられた共有パラメータβiを前提として、プライベートキャッシュ104がメモリコントローラ106に対して要求を発行することができるターゲットレートを決定する機能を提供し、そのターゲットレートに従って、プライベートキャッシュ104のスロットリングを提供するように構成されることが可能である。図12を参照すると、要求レートガバナ110を提供する例示的な論理は、フェーズ状態レジスタ1202または均等物と、アルゴリズム論理1204とを含むことができる。一態様では、フェーズ状態レジスタ1202は、図2〜図10を参照して説明した4つのフェーズのうち、要求レートガバナ110の現在のフェーズを示すように構成されることが可能である。フェーズ状態レジスタ1202およびアルゴリズム論理1204は、要求レートガバナ110に割り当てられたQoSおよびβiに基づいて、ターゲットレートを決定する機能を提供するように構成されることが可能である。
【００６１】
いくつかの態様では、ターゲットレートが実施される際にスラックを可能にするためにペーサ1206を提供することができる。スラックは、要求が要求エージェントによって送信されないとき、各要求エージェントまたはクラスがアイドル期間の間にある形態のクレジットを確立することを可能にする。要求エージェントは、後に、たとえば、将来の時間窓の間に、蓄積されたスラックを使用して、依然としてターゲットレートを満たすことになるアクセスのためのトラフィックまたは要求のバーストを生成することができる。このようにして、要求エージェントは、バーストを送出することが可能にされてもよく、これは性能改善をもたらすことができる。ペーサ1206は、ターゲット要求レートに反比例する時間窓または時間期間にわたる帯域幅使用を決定することによってターゲット要求レートを実施してもよい。前の時間期間から使用されていない蓄積された帯域幅を現在の時間期間内に使用して、バーストがターゲット要求レートを超える現在の時間期間内の要求レートをもたらす場合ですら、1つまたは複数の要求のバーストを可能にすることができる。
【００６２】
いくつかの態様では、ペーサ1206は、上記で論じたようなターゲット要求レートに従って、プライベートキャッシュ102のスロットリングを提供するように構成されることが可能である。いくつかの態様では、アルゴリズム論理1204は、飽和モニタ108からSATを受信し、図2〜図10を参照して説明した4つのフェーズプロセスの各々を実行し、ならびに出力としてターゲットレートを生成するように構成されることが可能である。一態様では、アルゴリズム論理1204は、要求レートガバナ110のすべてのフェーズを位置合わせするためにリセット信号を受信するように構成されることが可能である。
【００６３】
図12を参照すると、ペーサ1206は、加算器1208とミスイネーブラ(miss enabler)論理1210とを含むことができる。加算器1208は、アルゴリズム論理1204からターゲットレート(図12で"Rate"と標示される)を受信し、ミスが発行されると、CnextをCnext+(W/Rate)に(または、ストライドに関して、Cnext+Strideに)更新することができるように、加算を実行するように構成されることが可能である。ミスイネーブラ1210は、現在の時間CnowがCnext未満である場合、プライベートキャッシュ104がメモリコントローラ106にミスを発行することを妨げるように構成されることが可能である。
【００６４】
図12の論理は、キャッシュコントローラ1212とキャッシュデータストレージ1214とを含むことができる。キャッシュデータストレージ1214は、キャッシュデータストレージに関する、知られている従来の技法に従うことができ、したがって、さらなる詳細な説明は省略される。キャッシュコントローラ1212は、ペーサ1206によってスロットリングされている以外、キャッシュを制御するための、知られている従来の技法に従うことができ、したがって、さらなる詳細な説明は省略される。
【００６５】
図13は、本開示の態様による1つの例示的な配置における、共有された第2のレベルキャッシュ1302(たとえば、レベル2または"L2"キャッシュ)を含む比例的帯域幅割振りシステム1300の一構成を示す。
【００６６】
図13を参照すると、レート調速構成要素、すなわち、プライベートキャッシュ104a〜bは要求を共有キャッシュ1302に送信する。したがって、一態様では、要求レートガバナ110a〜bによって決定されるターゲットレートがメモリコントローラ106において同じ帯域幅シェアに変換されることを実現する特徴を含めることができる。この態様による特徴は、共有キャッシュ1302内のヒットであることにより、メモリコントローラ106に到達しない、プライベートキャッシュ104a〜bからのアクセスを明らかにするためにターゲットレートを調整することができる。したがって、プライベートキャッシュ104a〜bに対するターゲットレートは、メモリコントローラ106が共有キャッシュ1302からフィルタリングされたミスを受信し、対応して、フィルタリングされたミスに基づいてプライベートキャッシュ104a〜bにおけるターゲットレートが調整されてもよいように、共有キャッシュ1302において、プライベートキャッシュ104からのミスをフィルタリングすることによって取得されてもよい。
【００６７】
たとえば、一態様では、プロセッサ102a〜bによって生成された要求に関する、プライベートキャッシュ104a〜bのミスレートと共有キャッシュ1302のミスレートとの間の比率によってターゲットレートをスケーリングするように構成されるスケーリング特徴が提供されてもよい。この比率は次のように表現することができる。
Mp,iを、第i番目のプライベートキャッシュ104a〜b内の要求のミスレートにする(たとえば、プライベートキャッシュ104aに対してi=1、プライベートキャッシュ104bに対してi=2)。
Ms,jを、共有キャッシュ1302内の第i番目のプロセッサ102a〜bからの要求に関するミスレートにする。要求レートガバナ110a〜bによって実施される最終的なターゲットレートは次のように表現することができる。
【数３】
2019501447.tif 000005
【００６８】
一態様では、レートは、任意に"W"と称することが可能な、固定時間窓にわたって発行される要求の数として表現することができる。一態様では、Wを、メモリコントローラ106の帯域幅が飽和したときのメモリ要求のレイテンシに設定することが可能である。したがって、飽和RateMAXは、プライベートキャッシュ104a〜bから同時に未解決である可能性がある要求の最大数に等しいことが可能である。関連技術で知られているように、数は、ミス状態保持レジスタ(MSHR)(図1では別に可視ではない)の数に等しいことが可能である。
【００６９】
図13を参照すると、式(7)におけるレートベースの計算ではなく、ストライドを使用した代替実装形態では、プライベートキャッシュ104a〜bを去るすべての要求に関して、CnextをCnext=Cnext+Strideに調整することができる。これらの要求が共有キャッシュ1304によってサービスされたとその後決定された場合、Cnext=Cnext+Strideを調整する何らかの関連するペナルティを取り消すことができる。同様に、共有キャッシュ1304からメモリ112への(たとえば、ラインが共有キャッシュ1304内で置換されるときに生じる)いずれかのライトバックの場合、メモリ112からの応答の受信時に、その要求がライトバックを発生させたことが決定されるとき、CnextをCnext=Cnext+Strideとして調整することができる。このようにCnextを調整する影響は、長期間にわたる式(7)のスケーリングと同等であり、共有キャッシュフィルタリングと呼ばれる。さらに、レートではなくストライドを使用することによって、上記で論じたW条件の使用を回避することができる。
【００７０】
したがって、例示的な態様は、本明細書で開示するプロセス、機能、および/またはアルゴリズムを実行するための様々な方法を含むことが了解されよう。たとえば、図14は、帯域幅の分散割振りのための方法1400を示す。
【００７１】
ブロック1402は、複数の要求エージェント(たとえば、プライベートキャッシュ104a〜b)が共有メモリ(たとえば、メモリ112)にアクセスするための帯域幅を要求するステップを含む。
【００７２】
ブロック1404は、(たとえば、共有メモリにアクセスするための帯域幅の利用不可能性により、共有メモリに対するアクセスがスケジュールされていない未解決の要求の数のカウントに基づいて)共有メモリに対するアクセスを制御するためのメモリコントローラ(たとえば、メモリコントローラ106)内の共有メモリにアクセスするための帯域幅の飽和レベル(飽和信号SAT)を決定するステップを含む。
【００７３】
ブロック1406は、飽和レベルと、要求エージェントのサービス品質(QoS)クラスに基づいて要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおける(たとえば、要求レートガバナ110a〜bにおける)ターゲット要求レートを決定するステップを含む。たとえば、飽和レベルは、不飽和状態、低飽和、中飽和、または高飽和のうちの1つを示すことができる。いくつかの態様では、各要求エージェントに対する比例的帯域幅シェアは、要求エージェントに割り当てられた帯域幅シェア重みを複数の要求エージェントの各々に割り当てられた帯域幅シェア重みの和で除算することによって提供され、いくつかの態様では、各要求エージェントに対する比例的帯域幅シェアは、要求エージェントに割り当てられた帯域幅シェアストライドを複数の要求エージェントの各々に割り当てられた帯域幅シェアストライドの和で乗算することによって提供される。さらに、方法400は、要求エージェントにおけるターゲット要求レートを実施するために、共有メモリにアクセスするための要求エージェントからの要求の発行をスロットリングするステップを含むこともでき、飽和レベルは、上記で論じたように、エポック境界において決定されてもよい。
【００７４】
図15は、本開示の1つまたは複数の態様が有利に採用される場合があるコンピューティングデバイス1500を示す。次に図15を参照すると、前に論じたように、コンピューティングデバイス1500は、要求レートガバナ110を備えるプライベートキャッシュ104と飽和モニタ108を備えるメモリコントローラ106とに結合されたプロセッサ102a〜b(この図ではプロセッサ102として示される)などのプロセッサを含む。メモリコントローラ106は、やはり示されるメモリ112に結合されてもよい。
【００７５】
図15はまた、プロセッサ102およびディスプレイ1528に結合されたディスプレイコントローラ1526を示す。図15はまた、プロセッサ102に結合されたコーダ/デコーダ(コーデック)1534(たとえば、オーディオおよび/または音声コーデック)に結合されたスピーカー1536およびマイクロフォン1538を備えるコーデック1534、プロセッサ102およびワイヤレスアンテナ1542に結合されたおよびワイヤレスコントローラ1540など、オプションのいくつかのブロックを破線内に示す。特定の態様では、プロセッサ102、ディスプレイコントローラ1526、メモリ112、および存在する場合、コーデック1534、およびワイヤレスコントローラ1540は、システムインパッケージまたはシステムオンチップデバイス1522内に含まれてもよい。
【００７６】
特定の態様では、入力デバイス1530および電源1544をシステムオンチップデバイス1522に結合することができる。さらに、特定の態様では、図15に示すように、ディスプレイ1528、入力デバイス1530、スピーカー1536、マイクロフォン1538、ワイヤレスアンテナ1542、および電源1544は、システムオンチップデバイス1522の外部に位置する。しかしながら、ディスプレイ1528、入力デバイス1530、スピーカー1536、マイクロフォン1538、ワイヤレスアンテナ1542、および電源1544の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス1522の構成要素に結合されることが可能である。
【００７７】
例示的な態様による、図14に示すような比例的帯域幅割振りはコンピューティングデバイス1500によって実行されてもよいことを理解されよう。図15はコンピューティングデバイスを描いているが、プロセッサ102およびメモリ112は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定位置データユニット、コンピュータ、ラップトップ、タブレット、サーバ、モバイルフォン、または他の類似デバイス内に統合されてもよいことにも留意されたい。
【００７８】
当業者は、情報および信号が、様々な異なる技術および技法のうちのいずれかを使用して表現される場合があることを了解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現される場合がある。
【００７９】
さらに、本明細書で開示した態様に関連して説明した種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装できることは、当業者は理解されよう。ハードウェアとソフトウェアのこの交換可能性を明確に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能が、ハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例と、システム全体に課される設計制約とによって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装形態の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００８０】
本明細書で開示した態様に関して説明した方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて具現化されても、プロセッサによって実行されるソフトウェアモジュールにおいて具現化されても、あるいはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態では、記憶媒体はプロセッサと一体である場合がある。
【００８１】
したがって、本発明の態様は、処理システム内の共有メモリの帯域幅割振りのための方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は例示の例に制限されず、本明細書で説明した機能を実行するための任意の手段は、本発明の態様に含まれる。
【００８２】
上記の開示は本発明の例示的な態様を示すが、添付の特許請求の範囲によって規定されるような、本発明の範囲から逸脱することなく、本明細書において様々な変更および変形を行うことができることに留意されたい。本明細書で説明する本発明の態様による方法クレームの機能、ステップ、および/またはアクションは、任意の特定の順序で実行される必要はない。さらに、本発明の要素は、単数形で記載され、特許請求される場合があるが、単数形への制限が明示的に言及されない限り、複数形が企図される。
【符号の説明】
【００８３】
100  処理システム
102a〜b  プロセッサ
104a〜b  プライベートキャッシュ
106  メモリコントローラ
108  飽和モニタ
110a〜b  要求レートガバナ
112  メモリ
114  インターフェース
116  バス
118  参照番号
200  プロセス
204  急速スロットルフェーズ
206  高速リカバリフェーズ
208  アクティブ増加フェーズ
210  リセット確認フェーズ
250  プロセス
254  急速スロットルフェーズ
258  アクティブ増加フェーズ
259  ハイパーアクティブ増加フェーズ
300  疑似コードアルゴリズム、急速スロットルフェーズアルゴリズム
350  疑似コードアルゴリズム
400  疑似コードアルゴリズム、指数関数的低減アルゴリズム
450  疑似コードアルゴリズム
500  疑似コードアルゴリズム、高速リカバリフェーズアルゴリズム
550  疑似コードアルゴリズム
600  疑似コードアルゴリズム、バイナリサーチステップアルゴリズム
650  疑似コードアルゴリズム
700  疑似コードアルゴリズム、アクティブ増加フェーズアルゴリズム
750  疑似コードアルゴリズム
800  疑似コードアルゴリズム、指数関数的増加アルゴリズム
850  疑似コードアルゴリズム
900  疑似コードアルゴリズム、レートロールバック手順アルゴリズム
950  疑似コードアルゴリズム
1000  疑似コードアルゴリズム、確認リセットフェーズアルゴリズム
1050  疑似コードアルゴリズム
1102  エポック境界
1104  急速スロットルフェーズ
1106  SAT
1108  SAT
1110  エポック境界
1112  高速リカバリフェーズ
1114  SAT
1116  エポック境界
1118  アクティブ増加フェーズ
1120  エポック境界
1122  エポック境界
1124  エポック境界
1126  リセット確認フェーズ
1128  エポック境界
1130  アクティブ増加フェーズ
1132  エポック境界
1134  エポック境界
1136  リセット確認フェーズ
1138  エポック境界
1200  概略ブロック図
1202  フェーズ状態レジスタ
1204  アルゴリズム論理
1206  ペーサ
1208  加算器
1210  ミスイネーブラ論理、ミスイネーブラ
1212  キャッシュコントローラ
1214  キャッシュデータストレージ
1302  共有キャッシュ
1304  共有キャッシュ
1400  方法
1500  コンピューティングデバイス
1522  システムオンチップデバイス
1526  ディスプレイコントローラ
1528  ディスプレイ
1530  入力デバイス
1534  コーダ/デコーダ(コーデック)
1536  スピーカー
1538  マイクロフォン
1540  ワイヤレスコントローラ
1542  ワイヤレスアンテナ
1544  電源
【図１】
2019501447.tif 000006
【図２Ａ】
2019501447.tif 000007
【図２Ｂ】
2019501447.tif 000008
【図２Ｃ】
2019501447.tif 000009
【図３Ａ】
2019501447.tif 000010
【図３Ｂ】
2019501447.tif 000011
【図４Ａ】
2019501447.tif 000012
【図４Ｂ】
2019501447.tif 000013
【図５Ａ】
2019501447.tif 000014
【図５Ｂ】
2019501447.tif 000015
【図６Ａ】
2019501447.tif 000016
【図６Ｂ】
2019501447.tif 000017
【図７Ａ】
2019501447.tif 000018
【図７Ｂ】
2019501447.tif 000019
【図８Ａ】
2019501447.tif 000020
【図８Ｂ】
2019501447.tif 000021
【図９Ａ】
2019501447.tif 000022
【図９Ｂ】
2019501447.tif 000023
【図１０Ａ】
2019501447.tif 000024
【図１０Ｂ】
2019501447.tif 000025
【図１１】
2019501447.tif 000026
【図１２】
2019501447.tif 000027
【図１３】
2019501447.tif 000028
【図１４】
2019501447.tif 000029
【図１５】
2019501447.tif 000030
【手続補正書】
【提出日】平成30年5月24日(2018.5.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
帯域幅の分散割振りの方法であって、
複数の要求エージェントによって、共有メモリにアクセスするための帯域幅を要求するステップと、
前記共有メモリに対するアクセスを制御するためのメモリコントローラ内の前記共有メモリにアクセスするための前記帯域幅の飽和レベルを決定するステップと、
前記飽和レベルと、前記要求エージェントのサービス品質(QoS)クラスに基づいて前記要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するステップと
を含む、方法。
【請求項２】
前記メモリコントローラ内で実装される飽和モニタにおいて前記飽和レベルを決定するステップであって、前記飽和レベルが、前記共有メモリにアクセスするための前記帯域幅の利用不可能性により、前記共有メモリにアクセスすることがスケジュールされていない未解決要求の数のカウントに基づく、ステップを含む、請求項1に記載の方法。
【請求項３】
前記飽和レベルが、不飽和状態、低飽和、中飽和、または高飽和のうちの1つを示す、請求項2に記載の方法。
【請求項４】
要求エージェント内で実装される要求レートガバナにおける前記要求エージェントに対する前記ターゲット要求レートを決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記飽和レベルから決定された方向に基づいて、前記ターゲット要求レートを新しいターゲット要求レートに増加または低減させるステップと、
前記新しいターゲット要求レートに対する上限境界および下限境界を決定するステップと、
少なくとも1つのステップによって前記新しい要求レートを改善するステップであって、前記少なくとも1つのステップが、前記飽和レベルに少なくとも部分的に基づく方向にある、ステップと、
前記飽和レベルがしきい値を超える場合、前記飽和レベルが非過渡的であるという資格を満たすことを確認するとすぐに、前記ターゲット要求レートを初期化するステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
各要求エージェントにおける前記ターゲット要求レートを前記新しいターゲット要求レートに調整するステップと、
前記飽和レベルが前記新しいターゲット要求レートにおいて非過渡的であるという資格を満たさない場合、前記飽和レベルがしきい値を超えるまで、前記ターゲット要求レートを増加または低減させるステップか、または、
前記飽和レベルが前記新しいターゲット要求レートにおいて非過渡的であるという資格を満たす場合、前記ターゲット要求レートを初期化し、かつ同期したロックステップで各要求エージェントにおける前記新しいターゲットレートになるように前記ターゲット要求レートを調整するステップ
を含む、ステップと
をさらに含む、請求項5に記載の方法。
【請求項７】
各要求エージェントに対する前記比例的帯域幅シェアが、
前記要求エージェントに割り当てられた帯域幅シェア重みを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェア重みの和で除算すること、または、
前記要求エージェントに割り当てられた帯域幅シェアストライドを前記複数の要求エージェントの各々に割り当てられた前記帯域幅シェアストライドの和で乗算すること
のうちの1つによって提供される、請求項1に記載の方法。
【請求項８】
前記要求エージェントがプライベートキャッシュであり、各プライベートキャッシュが対応する処理ユニットから前記共有メモリにアクセスするための要求を受信し、前記方法が、
共有キャッシュにおいて、前記プライベートキャッシュからのミスをフィルタリングするステップと、
前記メモリコントローラにおいて、前記共有キャッシュから前記フィルタリングされたミスを受信するステップと、
前記フィルタリングされたミスに基づいて、前記プライベートキャッシュにおいて前記ターゲット要求レートを調整するステップと
をさらに含む、請求項1に記載の方法。
【請求項９】
前記要求エージェントにおいて前記ターゲット要求レートを実施するために、前記共有メモリにアクセスするための要求エージェントからの要求の発行をスロットリングするステップをさらに含む、請求項1に記載の方法。
【請求項１０】
エポック境界における前記飽和レベルを決定するステップを含む、請求項1に記載の方法。
【請求項１１】
ペーサ内で、前の時間期間において要求エージェントに割り振られた未使用帯域幅を決定し、かつ前記要求エージェントに現在の時間期間の間に前記ターゲット要求レートより高い要求レートを許可するステップであって、前記より高い要求レートが前記未使用帯域幅に基づく、ステップをさらに含む、請求項1に記載の方法。
【請求項１２】
前記前の時間期間および前記現在の時間期間が前記ターゲット要求レートに反比例する、請求項11に記載の方法。
【請求項１３】
共有メモリと、
前記共有メモリに対するアクセスを要求するように構成される複数の要求エージェントと、
前記共有メモリに対するアクセスを制御するように構成されるメモリコントローラであって、前記共有メモリにアクセスするための帯域幅の飽和レベルを決定するように構成される飽和モニタを備える、メモリコントローラと、
前記飽和レベルと、前記要求エージェントのサービス品質(QoS)クラスに基づいて前記要求エージェントに割り振られた比例的帯域幅シェアとに基づいて、各要求エージェントにおけるターゲット要求レートを決定するように構成される要求レートガバナと
を備える、装置。
【請求項１４】
請求項1から12のいずれか一項に記載の方法を実行するための手段を備える、装置。
【請求項１５】
プロセッサによって実行されると、請求項1から12のいずれか一項に記載の動作を前記プロセッサに実行させるコードを備える、非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2019501447.tif 000031
2019501447.tif 000032
2019501447.tif 000033