(57)【特許請求の範囲】
【請求項１】
半導体デバイスの複数の知的財産（IP）ブロックとメモリ・コントローラとの間に結合された、前記複数のIPブロックからメモリ要求を受け取るファブリック手段を有する装置であって、前記メモリ要求の少なくともいくつかは、そのメモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、少なくとも部分的には前記少なくともいくつかのメモリ要求の締め切り値に基づいて前記複数のメモリ要求の間で調停をするものであり、
前記ファブリック手段が：
前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器手段に提供するために選択する受容調停器手段と；
複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器手段に結合されている前記メモリ・スケジューラ調停器手段とを有し、
前記受容調停器手段は、前記複数のIPブロックのうちの第一の部分集合からの前記メモリ要求および前記複数のIPブロックのうちの第二の部分集合からの前記メモリ要求の第一の部分を受け取る第一の調停器と、前記複数のIPブロックのうちの前記第二の部分集合からの前記メモリ要求の第二の部分を受け取る第二の調停器とを含み、
前記複数のIPブロックの前記第二の部分集合は、レイテンシーに敏感なデバイスを含む、
装置。
【請求項２】
前記第二の調停器はさらに、前記複数のIPブロックのうちの前記第二の部分集合から受け取られる前記メモリ要求の前記第二の部分の各メモリ要求とともに締め切り値を受け取る、請求項１記載の装置。
【請求項３】
半導体デバイスの複数の知的財産（IP）ブロックとメモリ・コントローラとの間に結合された、前記複数のIPブロックからメモリ要求を受け取るファブリック手段を有する装置であって、前記メモリ要求の少なくともいくつかは、そのメモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、少なくとも部分的には前記少なくともいくつかのメモリ要求の締め切り値に基づいて前記複数のメモリ要求の間で調停をするものであり、
前記ファブリック手段が：
前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器手段に提供するために選択する受容調停器手段と；
複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器手段に結合されている前記メモリ・スケジューラ調停器手段とを有し、
前記受容調停器手段は、前記複数のIPブロックのうちの第一の部分集合からの前記メモリ要求および前記複数のIPブロックのうちの第二の部分集合からの前記メモリ要求の第一の部分を受け取る第一の調停器と、前記複数のIPブロックのうちの前記第二の部分集合からの前記メモリ要求の第二の部分を受け取る第二の調停器とを含み、
前記受容調停器手段は、前記第二の調停器からのメモリ要求が、前記第一の調停器からのメモリ要求より優先して選択される第一のモードと、前記第二の調停器からのN個のメモリ要求が選択されたあと前記第一の調停器からのM個のメモリ要求が選択され、MおよびNは構成設定レジスタから得られる、第二のモードとで動作するよう制御可能である、
装置。
【請求項４】
前記受容調停器手段はさらに、前記第一の調停器および前記第二の調停器の出力に結合され、前記第一および第二の調停器の出力の間で調停をする第三の調停器を含む、請求項１ないし３のうちいずれか一項記載の装置。
【請求項５】
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記メモリ要求のアドレス情報に基づいて、前記メモリ要求を順序外に並べ替える、請求項１ないし４のうちいずれか一項記載の装置。
【請求項６】
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記ファブリック手段のスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求を順序外に並べ替える、請求項５記載の装置。
【請求項７】
半導体デバイスの複数の知的財産（IP）ブロックとメモリ・コントローラとの間に結合された、前記複数のIPブロックからメモリ要求を受け取るファブリック手段を有する装置であって、前記メモリ要求の少なくともいくつかは、そのメモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、少なくとも部分的には前記少なくともいくつかのメモリ要求の締め切り値に基づいて前記複数のメモリ要求の間で調停をするものであり、
当該装置は、第一のIPブロックに結合されたインターフェース手段をさらに有しており、前記インターフェース手段は、前記第一のIPブロックの第一のメモリ要求についてのレイテンシー要求および前記ファブリック手段から前記第一のIPブロックに提供されるグローバル・タイマー値に基づいて前記締め切り値を生成する締め切り論理を含む、
装置。
【請求項８】
前記締め切り値を前記第一のIPブロックから受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、第一の調停器または第二の調停器に経路制御する締め切り検査器をさらに有する、
請求項７記載の装置。
【請求項９】
前記複数のIPブロックのそれぞれについて前記ファブリック手段の複数の共有資源において仮想エントリーを予約する資源割り当て手段をさらに有する、請求項１記載の装置。
【請求項１０】
前記資源割り当て論理がさらに、前記複数のIPブロックのそれぞれを前記複数の共有資源の所定数に制限する、請求項９記載の装置。
【請求項１１】
前記複数の共有資源は、それぞれ書き込み要求を記憶する複数のエントリーをもつフラッシュ・プールを含み、前記資源割り当て手段は前記複数のエントリーをフラッシュ限界に制限し、前記受容調停器手段は、前記フラッシュ・プールのサイズが前記フラッシュ限界に等しいときには、はいってくる書き込み要求をブロックする、請求項９記載の装置。
【請求項１２】
システム・オン・チップ（SoC）の共有されるメモリ・ファブリックを有する装置であって、前記共有されるメモリ・ファブリックは第一の調停器および最終調停器を有しており、
前記共有されるメモリ・ファブリックに結合された複数のデバイスのうちのあるデバイスから、締め切り値に関連付けられているメモリ要求を受領する手段と；
前記メモリ要求を、前記締め切り値がレイテンシー閾値より小さいことに応答して前記第一の調停器に転送する手段とを有しており、
前記第一の調停器は、少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第一の複数のメモリ要求の間で調停を実行して、前記第一の複数のメモリ要求のうちの勝者メモリ要求を前記最終調停器に転送するよう構成されており、
前記最終調停器は、前記共有されるメモリ・ファブリックのスコアボード中に記憶するための最終メモリ要求を選択する最終調停を実行するよう構成されている、
装置。
【請求項１３】
システム・オン・チップ（SoC）の共有されるメモリ・ファブリックに結合された複数のデバイスのうちのあるデバイスからメモリ要求を受領する段階であって、前記メモリ要求は締め切り値に関連付けられている、段階と；
前記メモリ要求を、前記締め切り値がレイテンシー閾値より小さいことに応答して前記共有されるメモリ・ファブリックの第一の調停器に転送する段階と；
少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第一の複数のメモリ要求の間で前記第一の調停器内で調停を実行して、前記第一の複数のメモリ要求のうちの勝者メモリ要求を前記共有されるメモリ・ファブリックの最終調停器に転送する段階と；
前記最終調停器において、前記共有されるメモリ・ファブリックのスコアボード中に記憶するための最終メモリ要求を選択する最終調停を実行する段階とを含む、
方法。
【請求項１４】
前記締め切り値が前記レイテンシー閾値より大きいことに応答して前記メモリ要求を第二の調停器に転送する段階と；少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第二の複数のメモリ要求の間で前記第二の調停器内で調停を実行して前記第二の複数のメモリ要求のうちの勝者メモリ要求を前記最終調停器に転送する段階とを含む、請求項１３記載の方法。
【請求項１５】
前記最終メモリ要求に関連付けられたデバイスの重み値が所定の値に等しいかどうかを判定し、もしそうであれば、前記重み値を構成設定された値に更新し、前記複数のデバイスのうちの他のデバイスについての経時値を更新することをさらに含む、請求項１３記載の方法。
【請求項１６】
前記最終メモリ要求に関連付けられたデバイスの重み値が前記所定の値に等しくないときは、前記最終メモリ要求に関連付けられたデバイスの重み値をデクリメントすることをさらに含む、請求項１５記載の方法。
【請求項１７】
前記共有されるメモリ・ファブリックのメモリ・スケジューラを介して、前記スコアボードからメモリ要求を、メモリ・コントローラへの送達のために選択する段階と；
選択されたメモリ要求に関連付けられたデバイスの重み値が所定の値に等しい場合、そのデバイスを前記メモリ・スケジューラ内でのさらなる調停からマスクする段階とをさらに含む、
請求項１３記載の方法。
【請求項１８】
前記複数のデバイスの各デバイスの重み値が前記所定の値に等しいかどうかを判定する段階と、もし等しければ、前記複数のデバイスの各デバイスについて前記重み値を構成設定された値に更新する段階とをさらに含む、請求項１７記載の方法。
【請求項１９】
システム・オン・チップであって：
それぞれ独立に命令を実行する複数のコアと；
それぞれ独立にグラフィック演算を実行する複数のグラフィック・エンジンと；
第一のレイテンシー敏感デバイスに対応する第一のコンテンツ・レンダリング装置と；
第二のレイテンシー敏感デバイスに対応する第二のコンテンツ・レンダリング装置と；
前記複数のコア、前記複数のグラフィック・エンジン、前記第一および第二のコンテンツ・レンダリング装置およびメモリ・コントローラ手段に結合されたファブリック手段とを有しており、
前記ファブリック手段は前記複数のコア、前記複数のグラフィック・エンジンおよび前記第一および第二のコンテンツ・レンダリング装置からメモリ要求を受領し、前記第一および第二のコンテンツ・レンダリング装置からのメモリ要求は、前記メモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求の締め切り値に少なくとも部分的に基づいて前記メモリ要求の間で調停を行なう、
システム。
【請求項２０】
前記ファブリック手段はさらに：
前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器手段に提供するために選択する受容調停器手段と；
複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器手段に結合されている前記メモリ・スケジューラ調停器手段とを有する、
請求項１９記載のシステム。
【請求項２１】
前記受容調停器手段は、前記複数のコアおよび前記複数のグラフィック・エンジンからの前記メモリ要求を受け取り、前記第一および第二のコンテンツ・レンダリング装置からの少なくともいくつかのメモリ要求を条件付きで受け取る第一の調停器と、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求を受け取る第二の調停器とを含んでいる、請求項２０記載のシステム。
【請求項２２】
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記メモリ要求のアドレス情報および前記ファブリック手段のスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求の少なくともいくつかを順序外に並べ替える、請求項２０記載のシステム。
【請求項２３】
第一のメモリ要求に関連付けられた締め切り値を前記第一のコンテンツ・レンダリング装置から受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、前記第一の調停器または前記第二の調停器に経路制御する締め切り検査器をさらに有する、請求項２１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、共有されるメモリ・ファブリックを介したメモリ・アクセスの調停に関する。
【背景技術】
【０００２】
複数の装置をもつ多くのコンピュータ・システムにおいて、共有メモリのような共有資源へのアクセスを提供するために調停が実行される。種々のエージェントまたは要求者の間の調停を可能にするために種々の型の調停機構が設けられる。いくつかのシステムは、種々のエージェントが特定の優先度を割り当てられる固定優先度調停システムを使う。しかしながら、これは共有資源へのアクセスを得る一つまたは複数のエージェントの能力の使用における不公平および飢餓につながることがある。他の調停システムは、共有資源へのアクセスの割り当てにラウンドロビン式のアプローチを提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
いずれにせよ、実行される調停は、電力状態のような共有資源に関する要因を考慮に入れない。よって、要求が共有資源へのアクセスを認められると、その資源が低電力状態を脱することになる。装置が共有資源へのそのような即時のアクセスを必要としていなかったとしてもである。よって、現在の調停システムにはさまざまな欠点がある。
【課題を解決するための手段】
【０００４】
本願発明は従来技術の欠点を軽減または解消する。
【図面の簡単な説明】
【０００５】
【図１】本発明のある実施形態に基づく、共有メモリ・ファブリックの一部のブロック図である。
【図２】本発明のある実施形態に基づく、受容調停器のさらなる詳細のブロック図である。
【図３】本発明のある実施形態に基づく、調停の決定に際してエージェントのための経時値を更新する方法の流れ図である。
【図４】本発明のある実施形態に基づく、受容調停器状態機械のブロック図である。
【図５】本発明のある実施形態に基づく、受容調停器における第一レベルの調停を実行する方法の流れ図である。
【図６】本発明のある実施形態に基づく、資源割り当て論理の一部のブロック図である。
【図７】本発明のある実施形態に基づく、スコアボード・インデックス生成論理のブロック図である。
【図８】本発明のある実施形態に基づく、スケジューラ調停器のための状態機械のブロック図である。
【図９】本発明のある実施形態に基づく、メモリ・スケジューリングを実行する方法の流れ図である。
【図１０】本発明のある実施形態に基づく、SoCのブロック図である。
【図１１】本発明のある実施形態に基づく、コンピュータ・システムに存在するコンポーネントのブロック図である。
【発明を実施するための形態】
【０００６】
さまざまな実施形態において、共有メモリ・ファブリックは、本稿でエージェントとも称される複数の独立な装置を共有メモリに（たとえば介在するメモリ・コントローラを介して）結合する。多くの実施形態において、共有メモリ・ファブリックは、種々の型の知的財産（IP:  intellectual  property）論理ブロックを含む単一ダイ半導体デバイスの相互接続構造である。共有メモリ・ファブリックは、時間が決定的に重要なアイソクロナス装置のためのサービス品質（QoS:  quality  of  service）要求を満たすことを可能にし、その一方で、本稿でベストエフォート装置とも称される非アイソクロナス装置のためにはメモリ帯域幅配分（proportioning）をも提供するよう構成される。
【０００７】
このようにして、共有メモリ・ファブリックに接続された複数の装置および装置型をサポートするために、メモリ帯域幅の信頼できかつ予測可能な割り当ておよびスケジューリングが行なわれる。（メモリ・コントローラや他の非ファブリック回路ではなく）共通の共有メモリ・ファブリックにQoS機能を含めることによって、設計がメモリ技術から独立になるので、システム・オン・チップ（SoC:  system  on  chip）のような複数の半導体デバイスを横断して設計がより簡単に再利用されうる。
【０００８】
このように、諸実施形態は、共有メモリ・ファブリックに接続された装置の要求を満たすよう予測可能かつ信頼できるメモリ帯域幅およびレイテンシーを提供するために、共有メモリ・ファブリックにおいて資源割り当て、帯域幅分配（apportioning）および時間を意識する（time-aware）QoS属性を実行する。
【０００９】
共有メモリ・ファブリックに結合された各装置にサービス・クラスのカテゴリーが割り当てられる。ある実施形態では、この割り当ては、ファブリックの構成設定レジスタを使って同定されることができる。サービスの複数のクラスがファブリックによってサポートされうる。本発明の範囲はこの点で限定されるものではないが、ある実施形態では、レイテンシーに敏感な装置のために使われるアイソクロナス・サービス・クラス・カテゴリーおよびメモリへの要求にサービスするのにより長いレイテンシーを許容できる装置のために使われるベストエフォート・サービス・クラス・カテゴリーの二つのサービス・カテゴリーの装置が存在していてもよい。本発明の範囲はこの点で限定されるものではないが、いくつかの実施形態では、レイテンシーに敏感な装置は、オーディオまたはビデオ・プレーヤーのようなコンテンツ・レンダリング装置、カメラ装置などを含む。一方、より低い優先度の装置は、プロセッサ・コア、グラフィック処理ユニットなどを含む。
【００１０】
要求締め切りの形の時間が、アイソクロナス装置からファブリックに通信されて、メモリに対する要求を完遂するための要求されるレイテンシーをファブリックに対して示す。同期を可能にするために、ファブリックは、すべてのアイソクロナス要求エージェントに対してグローバル・タイマーをブロードキャストする。このグローバル・タイマーは、アイソクロナス装置によるサンプリングのために利用可能であるよう、ファブリックからの出力上で連続的に駆動される。この時間値に応答して、エージェントは、要求の完遂のためのレイテンシー要求を決定し、このレイテンシー値をグローバル・タイマー値に加えて当該要求についての締め切りを形成する。一例として、読み出しのためのレイテンシーは、エージェントのデータ・バッファ内のデータの量と、エージェントによるバッファの排出レートとによって決定される。エージェントが250ナノ秒（ns）毎に１キャッシュラインのデータを消費し、バッファ中に８キャッシュラインのデータをもつとすると、バッファが空になる前の新しい要求のための必要とされる締め切りは8×250nsすなわち2マイクロ秒（μs）となる。この通信されたレイテンシーまたは締め切り値に基づいて、ファブリックは、メモリの現在の電力状態およびファブリック中でペンディングになっている他のスケジューリングされていないメモリ要求のための要求されるレイテンシーの知識に基づいて、よりよいスケジューリング決定をしうる。この締め切り通信は、メモリ帯域幅を改善し、またシステム電力を節約しうる。
【００１１】
要求締め切りの使用はファブリックに、アイソクロナス装置からの各要求についてのレイテンシー情報を与える。ファブリック内のプログラムされた構成設定レジスタは、ファブリックに、メモリが低電力状態、例えば自己リフレッシュ（self-refresh）状態を脱するために必要とされるレイテンシーなどのメモリ構成についての情報を与える。ファブリックはまた、たとえばステータス・チャネルの形でメモリ・コントローラに指示を送ることによって、メモリ・コントローラが取り付けられたメモリに自己リフレッシュ状態に出入りさせる時をも制御する。ファブリックは、すべてのペンディングのメモリ要求についてのレイテンシー要求を評価することによって、メモリが自己リフレッシュに出入りすべき時を決定する。ファブリックはすべてのペンディングのメモリ要求についての必要とされるレイテンシーおよび自己リフレッシュを脱するための必要とされるレイテンシーの知識をもつので、メモリの電力状態遷移のより大きな管理の結果として従来技術に比してさらなる電力節約につながりうる。
【００１２】
諸実施形態は、メモリ要求が順序外でスケジューリングされることを許容することによって、メモリ帯域幅における効率性をも提供しうる。ただし、これはいくつかの要求について長いスケジューリング・レイテンシーにつながることがある。そのような懸念を解決するために、ファブリックは、各アイソクロナス・メモリ要求に対して優先度レベルを割り当てる。たとえば高いまたは低い優先度である。高優先度のアイソクロナス要求をスケジューリングするときは、許容される順序外スケジューリングの量は、ベストエフォートまたは低優先度のアイソクロナス要求をスケジューリングするときに受け容れ可能なよりも少なくなる。高優先度の要求について順序外スケジューリングの量を制限することは、要求レイテンシー要件が満たされることを保証するためになされる。要求優先度は要求の締め切りから決定されるので、ファブリックは、要求がスケジュールされた直後に、アイソクロナス装置について、他のペンディングの要求の優先度レベルが何であるかを判別できる。上記締め切り方法を使って、すべてのペンディングの要求の優先度レベルは、グローバル・タイマーがインクリメントされるときに変わるのみである。
【００１３】
諸実施形態は、知的なメモリ・スケジューリング論理がファブリックに組み込まれ、一方、技術固有のメモリ・コントローラ論理がメモリ・コントローラ内に実装されうるという点で、複数のSoC実装を横断して洗練されたQoSメモリ・スケジューリング・アルゴリズムの移植性および再利用を改善もしうる。
【００１４】
諸実施形態はまた、飢餓対策アルゴリズムをファブリックの複数の調停点に組み込んでもよい。ある実施形態では、これらの飢餓防止アルゴリズムは、受容調停器によって使用される重み付けされた経時ベースの調停方法と、メモリ・スケジューラおよび要求追跡器において使用される利用可能最古型スケジューリング待ち行列とを含む。さらに、要求重みは、高優先度のアイソクロナス装置からの要求が常に勝つ固定優先度の調停とは対照的に、ファブリック内の諸調停点における種々の優先度レベルの間で切り換えるためおよび読み出し要求のスケジューリングから書き込み要求に切り換えるために、使われてもよい。
【００１５】
ある実施形態では、共有メモリ・ファブリックは、メモリ・コントローラに送られる要求をスケジューリングするために使われる二つの調停点を含む。第一の調停点は、諸装置からの要求を共有メモリ・ファブリック中に受け容れる（admit）ために使われ、受容調停器（admit  arbiter）と称される。第二の調停点は、共有メモリ・ファブリックからメモリ・コントローラに送られる要求をスケジューリングするために使われ、スケジューラ調停器と称される。
【００１６】
共有メモリ・ファブリックに接続された各装置は、該装置とファブリックとの間に接続される要求インターフェースをもつ。要求インターフェースは、QoSメモリ・スケジューリングのために使用できる要求についての情報を供給する。ある実施形態では、この情報は、メモリ・アドレス、順序IDフィールドおよびオペコード・フィールドを含む。アイソクロナス装置については、要求を完遂するために必要とされる要求されるレイテンシーを示すために、要求締め切りフィールドと呼ばれる追加的なフィールドが与えられる。SoCのいくつかの実装では、メモリ・ファブリック・インターフェースは他のファブリックまたはスイッチに接続されてもよいことを注意しておく。このことは、複数の装置が共通の要求インターフェースを共有することを許容する。
【００１７】
ここで図１を参照するに、本発明のある実施形態に基づく共有メモリ・ファブリックの一部のブロック図が示されている。図１に示されるように、共有メモリ・ファブリック１００は複数のエージェント１１５0〜１１５3（概括的にエージェント１１５）とメモリ・コントローラ１７０の間に結合される。いくつかの実施形態では、二つ以上のメモリ・コントローラが存在することを注意しておく。むろん、図解の簡単のため図示していないが、メモリ・コントローラは動的ランダム・アクセス・メモリ（DRAM）または他のシステム・メモリのようなシステム・メモリに結合されていることは理解されたい。
【００１８】
図１に示した実施形態では、種々の型のエージェントが共有メモリ・ファブリック１００に結合される。具体的には、種々のエージェントは、第一のサービス・クラス（COS:  class  of  service）のエージェント型、つまりいわゆるアイソクロナス・エージェントと、第二のサービス・クラスのエージェント型、つまりいわゆるベストエフォートCOSエージェントとを含む。見て取れるように、各エージェント１１５は要求情報を受容調停器１２０に通信してもよい。受容調停器１２０のほうは、対応する制御型情報をエージェントに通信し返すことができる。さらに、アイソクロナス・エージェント（つまり、図１の実施形態ではエージェント１１５1および１１５3）はさらに、要求締め切り情報を受容調停器１２０に通信する追加的なリンクを含む。この目的に向け、これらのエージェントはさらに、やはり受容調停器１２０およびスケジューラ調停器１３０の両方に結合されているグローバル・タイマー１５０からグローバル・タイミング情報を受領するよう構成されている。
【００１９】
図１の実施形態では、受容調停器１２０は、エージェント１１５からの到来要求（およびアイソクロナス・エージェントからの要求締め切り情報）を受領し、スケジューラ調停器１３０に受け容れるための適切な要求を選択するよう構成されていてもよい。その調停プロセスにおいて支援するために、受容調停器１２０は、スケジューラ調停器１３０にも結合された、一組の構成設定レジスタ１６０から構成設定情報を受領する。さらに、要求およびコヒーレンシー追跡器１４０が調停器１２０および１３０に結合されていてもよい。一般に、追跡器１４０は、複数のスコアボード１４２、データ・バッファ１４４および対応するアドレス・タグ記憶１４５、制御待ち行列１４６およびさまざまなバッファのような他の資源、資源割り当て論理１４８のような論理、などを含んでいてもよい。いくつかの実装では、タグ・アレイおよびデータ・バッファは追跡器以外のどこか他のところに位置していてもよい。図１の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００２０】
共有メモリ・ファブリックは、要求エージェントからの要求が受容調停器によって承認されることができる前に最初に割り当てられるある有限個の資源を含んでいてもよい。これらの資源は、内部データ・バッファおよびアドレス・タグ記憶における利用可能なエントリーを含む。他の有限の資源は、メモリ・スケジューラおよび要求追跡器スコアボードにおける利用可能なエントリーを含む。ファブリックの内部データ・バッファ、タグ・アレイおよびメモリ・スケジューラ・スコアボードについての資源には一対一の対応がある。ある実施形態では、これらの資源はメモリの所定の領域（たとえば、64バイトなどのキャッシュライン幅）に割り当てられる。各アクティブな要求は、要求およびコヒーレンシー追跡器においても自分自身のエントリーを割り当てられるが、メモリ内の同じ領域への要求はデータ・バッファ、タグ・アレイおよびメモリ・スケジューラ・スコアボードにおいて同じエントリーを共有する。二つ以上の要求が同じデータ・バッファ、タグ・アレイおよびスケジューラ・スコアボード・エントリーに割り当てられることが可能であるが、要求およびコヒーレンシー追跡器内のすべての未決の（outstanding）読み出し要求について、一つの読み出し要求のみがメモリ・コントローラにスケジューリングされる。
【００２１】
すべての装置についての要求インターフェースはファブリックの受容調停器に接続する。アイソクロナス装置は、ファブリックに対して要求を完遂するための必要とされるレイテンシーを示すために要求バスの締め切りフィールドを使う。ファブリックは、該ファブリックに取り付けられているすべてのアイソクロナス装置にグローバル・タイマー値を送る。ファブリックに送られる各要求について、アイソクロナス装置は、たとえば締め切り論理において、要求が完了するために必要とされる必要レイテンシーを決定し、要求締め切りを生成するためにその値をグローバル・タイマーの現在の値に加える。要求の必要レイテンシーを判別するために種々のアイソクロナス装置によって種々の方法が使用されうるが、すべてのアイソクロナス装置は、ファブリックに対して、要求インターフェースの締め切りフィールドを使って必要レイテンシーを示す。
【００２２】
ある実施形態では、受容調停器は二つのレベルの優先度をもつ。緊急のアイソクロナス要求のために使われる、調停器における高優先度経路がある。要求が緊急と考えられるのは、要求するエージェントがアイソクロナス・エージェントとして構成されており、かつ要求の締め切りフィールドが緊急性閾値と称される閾値を指定する構成設定レジスタに記憶されている値未満である場合である。受容調停器は、ベストエフォート要求のためおよび緊急とは考えられないアイソクロナス要求のために使われる低優先度経路をももつ。調停の最終的なレベルは、高優先度調停の勝者と低優先度調停の勝者との間で選択を行なう優先度選択器を使って行なわれる。
【００２３】
ある実施形態では、受容調停器最終選択器は、構成設定レジスタを使って選択できる二つのモードをもつ。第一のモードは、少なくとも一つの高優先度要求が受容調停器の入力において存在しているとして、選択器が、低優先度調停経路の勝者を選ぶ前に高優先度調停経路の勝者を選ぶ固定優先度モードである。最終選択器の第二のモードは、最終選択器がN個の高優先度要求が承認されたあとで高優先度経路の承認から低優先度経路の承認に切り換える、重み付けされたラウンド・ロビン・モードである。選択器はその後、低優先度経路の勝者からのM個の低優先度要求を承認し、そのあとで高優先度経路からの要求の承認に戻る切り換えがされる。ある実施形態では、NおよびMについての値は、構成設定レジスタを使って指定される。
【００２４】
ここで図２を参照するに、本発明のある実施形態に基づいて受容調停器のさらなる詳細のブロック図が示されている。図２に示されるように、調停器１２０は、要求エージェントからの到来要求を受領する。この図解では、要求エージェント１１５0および１１５1は非アイソクロナスまたはベストエフォート・エージェントであり、一方、要求エージェント１１５2および１１５3はアイソクロナス・エージェントである。アイソクロナス・エージェントは、要求についての必要レイテンシーを計算するために使われる締め切り決定論理１１８を含むまたはそれに結合されていてもよいことを注意しておく。エージェントの少なくともいくつかがサードパーティーIPブロックである実施形態では、この論理は、エージェントを共有メモリ・ファブリックに結合するラッパーまたはインターフェース論理において実装されることができる。
【００２５】
図示した実施形態では、受容調停器１２０は、第一の経時ベースの調停器１２２および第二の経時ベースの調停器１２４を含む。これらはそれぞれ、低優先度および高優先度の経時ベースの調停器に対応する。よって、見て取れるように、エージェント１１５のすべてからの要求は第一の調停器１２２に与えられ、一方、第二の調停器１２４には、アイソクロナス・エージェント１１５2および１１５3からの要求のみが与えられる。アイソクロナス・エージェントの一つからの特定の要求が緊急ステータスであるかどうかを判定するために、一対の締め切りチェッカー論理１２１0および１２１nがそれぞれ、これらのアイソクロナス・エージェントのうち対応するものからの要求およびグローバル・タイマー１５０からのグローバル・タイミング情報を受領するよう結合されている。エージェントによって与えられる締め切り情報とグローバル・タイミング情報との比較に基づいて、対応する要求についての緊急ステータスの指示が第二の調停器１２４に与えられることができる。
【００２６】
動作では、調停器１２２および１２４は、一組の到来要求から調停勝者を選択するよう動作する。図示した実施形態では、この決定は、部分的には、各エージェントについての経時値を記憶する経時記憶１２６からの情報に基づく。各調停器からの対応する勝者は優先度調停器選択器１２５に結合されていてもよく、該選択器１２５は動作モードに基づいて、スケジューラ調停器１３０（図２の図解の簡単のため示さず）に与える対応する要求を選択する。この目的に向け、選択器１２５は、少なくとも部分的には優先度記憶１２９内の情報に基づいてスケジューラ調停器への受け容れのための要求を選択してもよい。図２の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００２７】
〈重み付けされた経時ベースの調停の詳細〉
受容調停器によって実装される経時ベース（age-based）のアルゴリズムは、調停器によって最後に承認されてから最も長く待っている要求エージェントが最も高い優先度レベルを与えられるというものである。ひとたびエージェントが最も高い優先度レベルを受けたら、そのエージェントについての優先度レベルは、そのエージェントが調停器によって承認されるのでない限り、変化しない。このようにして、ラウンドロビン調停を使って普通に見出される飢餓（starvation）問題は、要求エージェントについての優先度レベルが、その要求エージェントが調停器によって承認されない限り、優先度レベルにおいて増すのみであることができることを保証することによって、回避されうる。
【００２８】
受容調停器はまた、エージェント重みがすべての要求エージェントに割り当てられることも許容する。重みは、各要求エージェントについて要求帯域幅のある割合を割り当てるために使われる。ある実施形態では、重み値は、各エージェントについて、エージェント重み構成設定レジスタに記憶される値を介して指定される。エージェントに割り当てられる要求帯域幅の割合は、ある実施形態では、エージェント重み値を、すべてのエージェントについての重みの和で割ったものに等しい。
【００２９】
〈重み付けされた経時ベースのアルゴリズム〉
受容調停器の重み付けされた経時ベースのアルゴリズムは、要求エージェントが調停器によって最後に承認された時の相対的な経時に基づく。受容調停器に接続する各要求元エージェントについて、一つの経時カウンタがインスタンス化され、一つの重みカウンタがインスタンス化される。受容調停器における高優先度および低優先度の調停経路は、該受容調停器に接続されたエージェントについて、共通の経時および重みカウンタを共有する。要求エージェントの経時および重みレジスタの更新は、最終選択器（つまり優先度調停器選択器１２５）によって、最終的な調停勝者を選んだあとに、決定される。
【００３０】
すべての要求元エージェントについての（たとえば経時記憶１２６の）経時レジスタは、最初に、受容調停器へのリセット入力を受領するのに応答して初期化される。リセットがアサートされるとき、諸経時レジスタは、0から始まりN−1の値で終わる範囲内の一意的な諸値に初期化される。ここで、Nの値は受容調停器に接続されている要求インターフェースの数に等しい。
【００３１】
要求元エージェントによって何らかの要求がアサートされるのに先立ち、（たとえば重み記憶１２８の）エージェント重みカウンタは、ファブリックのエージェント重み構成設定レジスタ内のプログラムされた値から初期化される。ひとたび重みカウンタが初期化されたら、エージェントについてのカウンタは、そのエージェントについて要求が承認されるごとに１だけデクリメントされる。ひとたびエージェントの重みカウンタが0に近づいたら、そしてエージェントが受容調停器によって再び承認されたら、カウンタは再び、そのエージェントの重みについての構成設定レジスタ内でプログラムされている値を再ロードされる。
【００３２】
ある実施形態では、第一および第二の調停器１２２および１２４において実行される経時ベースの調停方法は、調停の勝者を決定するために要求ビット・ベクトルを使う（各調停器が自分自身のベクトルをもつ）。あるエージェントについて要求がアサートされるとき、調停器は要求元エージェントについての経時値を要求の優先度レベルとして使う。調停器についての優先度レベル、よってビット・ベクトル幅の範囲は0からN−1である。経時ベースのアルゴリズムは、すべての要求元エージェントについての諸経時値が常に一意的であり、よって調停毎に常に唯一の勝者があることを保証する。
【００３３】
調停器は、要求調停の勝者についての重みカウンタが0に達したときにすべてのエージェントについての経時レジスタを更新する。ある実施形態では、すべてのエージェントについての経時レジスタは、エージェントについての経時値が常に一意的な値であることを保証する以下の規則に従って更新される。
規則１：エージェントの経時が調停の勝者の経時に等しいとき、そのエージェントについての経時レジスタは、最も若い要求経時または最低の優先度を示すために、0に設定される。
規則２：エージェントの経時が調停の勝者より小さいとき、そのエージェントの経時レジスタは１インクリメントされる。
規則３：エージェントの経時が調停の勝者より大きいとき、そのエージェントの経時レジスタは変わらない。
【００３４】
ここで図３を参照するに、調停勝者の決定に際してエージェントについての経時値を更新する方法の流れ図が示されている。この方法は、勝者の重み値が0に等しいときに経時値を更新するために実行されてもよい。見て取れるように、優先度調停器選択器によって実行されうる方法２００は、エージェントの経時値が勝者の値に等しいかどうかを判定することによって始まる（菱形２１０）。もしそうであれば、制御はブロック２１５に移り、この勝者のエージェントについての経時値が最低優先度レベルに更新されることができる。最低優先度レベルはある実施形態では0に等しくてもよい。ブロック２１５および菱形２１０の両方から、制御は菱形２２０に移り、経時値が勝者の値（つまり、前記エージェントの経時に対応する）より小さいかどうかが判定できる。もしそうであれば、制御はブロック２２５に移り、エージェントの経時値は更新される、たとえばインクリメントされることができる。これらの条件のいずれも生起しなければ、エージェントの経時は調停の勝者より大きいことになり、よってこの特定のエージェントについての経時値は変化しない。方法２００は、各調停ラウンドの完結に際して、勝者が選択されるときに各エージェントについて実行できることを注意しておく。図３の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００３５】
ここで図４を参照するに、本発明のある実施形態に基づく受容調停器状態機械のブロック図が示されている。図４に示されるように、図１の受容調停器１２０内に存在しうる状態機械２５０はまず、リセット・アサートから初期化（INIT）状態２５５にはいる。この状態から、制御はアクティブ状態２６０に移る。要求が受領されない限りこの状態に留まる。要求が受領され、承認されたエージェントが0の重みをもつとき、制御は経時更新状態２７０に移り、経時記憶が更新され、調停勝者についての重みカウンタが、たとえば構成設定レジスタから得られる、所定の値に再ロードされる。次いで、制御は、さらなる要求が存在するかどうかおよび承認されたエージェントの重みの値に依存して、アクティブ状態２６０、エージェント重みデクリメント状態２８０に移るまたは経時更新状態２７０に留まる。同様に、エージェント重みデクリメント状態２８０では、勝者調停重みカウンタがデクリメントされる。だが、ここでは、重みカウンタ再ロードは実行されない。図４の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００３６】
表１は、本発明のある実施形態に基づく受容アーキテクチャの各状態の記述を与えている。
【００３７】
【表１】
0005886470.tif 000002
【００３８】
ここで図５を参照するに、本発明のある実施形態に基づく、受容調停器において第一レベルの調停を実行するための方法の流れ図が示されている。図５に示されるように、方法３００は、到来メモリ要求の間で調停を実行することおよび調停に基づいてさまざまな経時および重み値を更新することの両方の目的のために受容調停器内で実行されうる。図５に見られるように、方法３００は、ファブリックに結合された装置からメモリ要求を受領することによって開始されうる（ブロック３１０）。レイテンシーに敏感な装置からの締め切りベースの要求に関する動作をより具体的に例解するため、このメモリ要求が締め切り値を含むか締め切り値に関連付けられており、よってアイソクロナス装置またはレイテンシーに敏感な装置から提供されているとする。そのような一つの例として、このレイテンシーに敏感な装置はメディア・プレーヤーである。見て取れるように、制御は菱形３１５に移り、締め切り値がレイテンシー閾値より大きいかどうかが判定できる。ある実施形態では、このレイテンシー閾値は、要求が受領された時点から（たとえば要求元装置に要求されたデータを提供し返すこと、書き込み要求については書き込み完了の提供によって）要求が完遂されるまでの最小レイテンシーである。締め切り値はある実施形態では、要求元装置がメモリ要求を扱うために許容できる最大レイテンシーであることを注意しておく。
【００３９】
引き続き図５を参照するに、締め切り値がレイテンシー閾値より大きいと判定される場合、制御はブロック３２０ｂに移り、メモリ要求が低優先度の調停器に転送される。そうでない場合には、制御はブロック３２０ａにわたり、メモリ要求は高優先度の調停器に転送される。
【００４０】
引き続き図５を参照するに、並列な経路の存在に注意されたい。これにより、ブロック３２５（ブロック３２５ａおよび３２５ｂ）では、対応する調停器において調停が実行される。該対応する調停器は、該対応する調停器に要求を提供する装置についての経時値に関連付けられたビット・ベクトルに基づく。次に、ブロック３３０（ブロック３３０ａおよび３３０ｂ）において、勝つメモリ要求が最終的な調停器に転送される。次いで、ブロック３３５において、最終的な調停が実行されて、勝者のメモリ要求が選択される。この最終的な調停器についての構成設定のモードに依存して、勝者の要求は高優先度の調停器からのみ選択できるか、あるいは高優先度と低優先度の経路の間の重み付けが行なわれてもよい。このように、この時点において、勝つメモリ要求がメモリ・スケジューラ・スコアボードに転送され、そこでエントリー内に記憶されることができ、それによりメモリ・スケジューラ調停器における調停がこのメモリ要求を考慮できるようにする。
【００４１】
引き続き図５を参照するに、最終的な調停器による勝者の選択に応答して、さまざまな更新動作がさらに実行されてもよい。具体的には、菱形３４０において、勝者のエージェントの重み値が0に等しいかどうかが判定されることができる。もしそうであれば、制御はブロック３４５に移り、この重み値がその構成設定された値に更新される、たとえば共有メモリ・ファブリックの構成設定レジスタに記憶されることができる。次に制御はブロック３５０に移り、すべてのエージェントについての経時値が更新されることができる（ブロック３５０）。この目的に向け、すべての勝者でないエージェントは経時値をインクリメントされてもよく、一方、勝者のエージェントはその経時値を最低の優先度値、たとえば0に設定されてもよい。その代わりに菱形３４０において勝者のエージェントの重み値が0でないと判定される場合、制御はブロック３５５に移り、勝者のエージェントの重み値がデクリメントされる。図５の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００４２】
〈共有メモリ・ファブリック共有資源割り当て〉
メモリ・ファブリックは、ファブリック内の共有される資源の公平な割り当てを許容するための論理、たとえば図１の資源割り当て論理１４８を含む。ある実施形態では、これらの共有資源はファブリックの内部データ・バッファ、アドレス・タグ記憶および要求追跡器スコアボードである。要求元エージェントのいずれについても専用の資源はないので、各エージェントについて当該ファブリックにおいてペンディングしている未決の要求の数を諸機構が制限してもよい。その一方、たとえばこれらの共有される資源において仮想エントリーを予約することによって、あるエージェントについてエントリーが予約されることを許容する。本ファブリックは、エージェント限界の指定により、いずれか一つの要求元エージェントがファブリックの利用可能な共有資源全部を使ってしまうことを防止できるようにする。
【００４３】
メモリ・スケジューリング・アルゴリズムの一部が、メモリ技術について読み出しから書き込みへの転換時間のパフォーマンスへの影響を最小にすることを扱う。メモリ・スケジューラが読み出し要求のスケジューリングから書き込み要求のスケジューリングに切り替わる回数を最小にするために、書き込み要求を行列待ちさせるためのフラッシュ・プール（flush  pool）が使われる。フラッシュ・プールは、ファブリックのメモリ・スケジューラが書き込み要求をメモリ・コントローラに相続く要求のバーストとして送ることを許容するのに十分な書き込み要求が受領されるまで、メモリをターゲットとする書き込み要求がメモリ・ファブリック内に蓄積されることを許容する。ファブリック内のすべての利用可能な資源がフラッシュ・プールによって使い尽くされるのを防止するために、フラッシュ限界が指定されることができる。指定されるとき、フラッシュ限界は、フラッシュ・プール内のエントリー数がフラッシュ・プールについてプログラムされた値より少なくなるまで、ファブリックに、すべてのエージェントからの新たな書き込み要求を受容調停器においてブロックさせる。
【００４４】
〈書き込み要求のためのメモリ・ファブリック・フラッシュ・プール〉
要求元エージェントから書き込み要求が受領されるとき、ファブリックは書き込みデータを要求元エージェントから内部データ・バッファに転送する。ひとたび新たなデータがファブリックの内部データ・バッファに書き込まれ、要求がエージェントの観点からはリタイアしたら、バッファ・エントリーは「フラッシュ・プール」にあると考えられる。コヒーレントなメモリ・トラフィックについては、ファブリックは要求元エージェントからスヌープされた要求を受領してもよい。スヌープされた要求は、メモリに対する読み出しまたは書き込み要求のいずれかであることができる。ファブリックが要求元エージェントからスヌープされた読み出しまたは書き込み要求を受領するとき、ファブリックはスヌープ要求を、該ファブリックに結合されているすべてのキャッシング・エージェントに送る。キャッシング・エージェントは、自分のキャッシュにおいてヒットするスヌープされた要求に応答し、当該キャッシング・エージェントによって修正されたキャッシュラインについて書き戻し（WB:  write  back）データを返す。WBデータは次いでファブリックの内部データ・バッファに書き込まれ、すると、メモリをターゲットとする書き込み要求のフラッシュ・プール内に含まれていると考えられる。フラッシュ・プール内のエントリー数がフラッシュ限界についてプログラムされている値に達すると、たとえば要求オペコード・フィールドのデコードによって判別される、新たな書き込み要求は、受容調停器においてブロックされる。
【００４５】
〈メモリ・ファブリック予約および限界〉
メモリ・ファブリックは、エージェント予約構成設定レジスタを使って、任意のエージェントについて予約が指定されることを許容する。これらの構成設定レジスタを使って、ユーザーは、各エージェントについて予約すべきメモリ・ファブリック中のエントリーの数を指定できる。あるエージェントについて予約されるエントリーは、そのエージェントに割り当てられる最初の諸エントリーであり、そのエージェントについてリタイアさせられる最後の諸エントリーである。あるエージェントの予約されたエントリーが割り当てられるのかリタイアされるのかを判定するために、各エージェントは要求カウンタを有しており、それが構成設定レジスタにおいて指定された値と比較される。要求カウンタ内の値が構成設定レジスタ内の値以下であれば、エージェントの予約されたエントリーは使用されている。
【００４６】
エージェントに予約されたエントリーを提供するために使われる機構は、予約されたエントリーが要求元エージェントについて割り当てられるまたは開放される際に、フル閾値限界を変える。最初は、すべてのエージェントについてのフル閾値は、（たとえば構成設定レジスタによって指定される）すべてのエージェントについての予約されているエントリーの総数をスコアボード中のエントリーの総数から減算することによって計算される。予約されたエントリーがエージェントに割り当てられる際、使用された予約されたエントリーの総数に基づいてフル閾値を調整するために蓄積器〔アキュムレータ〕が使われる。自分の予約されたエントリーを使ってしまった、または指定された予約されたエントリーをもたないエージェントは、メモリ・ファブリック内のペンディングの要求の総数がこの調整されたフル閾値に達するときは、ブロックされる。予約されたエントリーを使い果たしていないエージェントは、自分の予約されたエントリーをすべて使ってしまい、ペンディングの要求の総数が調整されたフル閾値限界に達するまでは、受容調停器によってブロックされない。
【００４７】
エージェント限界が、メモリ・ファブリックの構成設定レジスタにおいて指定されていてもよい。これらのエージェント限界は、ある実施形態では、あるエージェントについての要求限界を0に設定することによって無効にされうる。エージェント限界が無効にされるとき、任意のエージェントは要求追跡器のすべての存在するエントリーを割り当てられてもよい。単一のエージェントがすべての要求追跡器エントリーを使うことを防ぐため、エージェントについて要求限界が指定されることができる。エージェントの要求カウンタがそのエージェントについて指定された要求限界に達したら、そのエージェントについての受容調停器への要求入力は無効にされる。要求追跡器がエージェントについての要求をリタイアさせ、エージェントの要求カウンタがエージェントの要求限界未満になるとき、そのエージェントについての受容調停器への要求入力が有効にされる。
【００４８】
ここで図６を参照するに、本発明のある実施形態に基づく資源割り当て論理の一部のブロック図が示されている。図６に示されるように、論理３６０は、エージェントのすべての間で共有されるさまざまな資源の割り当てを制御するために使われてもよい。見て取れるように、加算器３６８が、構成設定記憶３６５から受領されるエージェント予約値に基づいて予約されたエントリーの総数を決定する。この総予約エントリー値から、タグ・エントリーの数が減算器３７０において減算される。結果としてられる値はフロップ３７２を通じて加算器３７５に与えられ、加算器３７５が、後述するインクリメントおよびデクリメント予約カウント値に基づいてインクリメントまたはデクリメントされる。
【００４９】
よって、加算器３７５によって生成される和は、比較器３７２の一つの入力に与えられる調整されたフル閾値に対応する。比較器３８２はさらに、フロップ３７６から割り当てられたタグ・エントリーの数を受領する。調整されたフル閾値が割り当てられたタグ・エントリーのこの数以下であると判定される場合には、フル・フラグが生成され、予約エントリーをもたないまたは自分の予約エントリーを使ってしまったエージェントの要求をマスクするために使われる。
【００５０】
さらに見て取れるように、もう一つの比較器３８０が、所与の要求者の予約構成設定値および（フロップ３７８からの）その要求者についての要求カウンタ値を受領するよう構成されている。該比較器はこのように、その要求者が空いている予約されたエントリーをもつかどうかについての指示を生成し、該指示は一対のANDゲート３８４および３８５に入力として与えられる。これらのANDゲートはさらに、チャネル承認およびそのチャネルについてのエントリーのリタイアの指示を受領する。よって、これらのANDゲートはこのように、対応する要求者についてのそれぞれインクリメント値およびデクリメント値を生成する。同様の論理および処理は、他の要求者について実行され、すべてのインクリメントおよびデクリメント予約値は対応するORゲート３８６および３８７に与えられる。これらのORゲートはそれぞれインクリメント予約カウント値およびデクリメント予約カウント値を生成する。
【００５１】
最後に、要求者についての要求カウンタ値は、その要求者についての構成設定された限界値とともに別の比較器３９０に与えられ、こうしてこの要求者がその限界に達したかどうかが判定される。もし達していれば、この限界の指示が、このエージェントからの要求をさらなる調停についてはマスク・オフするために使われる。図６の実施形態ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【００５２】
〈共有メモリ・ファブリック・スケジューラ調停の詳細〉
実施形態は、種々のメモリ技術をサポートする複数のSoCを横断した再利用を向上させるために複数のスケジューリング・アルゴリズムを組み込んでもよい。ファブリックのメモリ・スケジューラ論理は、高度なQoSスケジューリング・アルゴリズムを含み、たいていのメモリ技術に普通に見出されるパフォーマンス上のボトルネックを最小化するよう最適化もされる。たとえばDRAMのメモリを使う際に見られる典型的なパフォーマンス上のボトルネックは、低電力メモリ状態への出入り、読み出しから書き込みへの転換時間、同じDRAMバンクへの、ただし異なるメモリの行（row）への連続するメモリ・アクセスおよび異なるDRAMメモリ・ランク（rank）への連続するメモリ・アクセスを含む。共有メモリ・ファブリックのスケジューリング論理に複雑な順序外スケジューリング・アルゴリズムを含めることによって、ファブリックは、単純化された技術固有の制約条件ソルバーをファブリックに取り付けてメモリ技術または構成のための独特の要件をサポートすることによって、多くの異なるSoCに適応されることができる。
【００５３】
メモリ・スケジューリング論理の移植性を改善することに加えて、実施形態は、高度な順序外スケジューリング・アルゴリズムのQoSスケジューリング論理との組み合わせが最大の要求レイテンシーの予測可能性の改善につながるという点、メモリ・コントローラがメモリ要求を並べ替える柔軟性がずっと低下するという点において、メモリ要求レイテンシーの予測可能性をも提供する。
【００５４】
ひとたび要求が受容調停器によって承認されると、該要求はスケジューラ・スコアボードで待ち行列に入れられる。スケジューラ・スコアボードは、メモリへの読み出しまたは書き込みを実行するために該要求をメモリ・コントローラに転送するために使う該要求についての情報を記憶する。ある実施形態では、該情報は、要求アドレス、要求長さ、コマンド型（読み出しまたは書き込み）、サービス・クラスのカテゴリー、メモリ・チャネル、メモリ・バンク、メモリ・ランクおよびページ・ヒット／ミス状態を含む。
【００５５】
〈メモリ・スケジューラの利用可能最古型待ち行列〉
実施形態は、メモリ・コントローラに送られた要求の履歴に基づく、順序外の、ページを意識する（page  aware）スケジューリングを提供する。ただし、ファブリックはメモリ・バンクの真の状態の直接的な知識をもたない。より具体的には、ファブリックのメモリ・スケジューラはスケジューラ・スコアボードを、メモリに送られた要求の履歴バッファとして使う。スケジューラ・スコアボードは要求の履歴を反映するために使われるので、要求についての状態情報をできるだけ長くスコアボード中に保持しようとする。メモリ・スケジューラは利用可能最古型待ち行列（oldest  of  available  queue）と呼ばれる構造を使って、利用可能な最も古いスコアボード・エントリーを再割り当てされるべく決定する。
【００５６】
利用可能最古型待ち行列は、メモリへの要求の順序外スケジューリングのために生じることがある飢餓問題を回避するためにも、メモリ・スケジューラによって使われる。ファブリックのメモリ・スケジューラは、利用可能最古型待ち行列を使って、サービス・クラス・カテゴリー、型、読み出しまたは書き込みが同じいくつの要求がメモリへの最古のペンディング要求をバイパスしたかを決定する。ひとたび最古の要求をバイパスした要求の数がプログラムされた限界（たとえばソフトウェアによって設定される）に達したら、ファブリックのメモリ・スケジューラは、要求の順序外スケジューリングを無効にし、最古のペンディング要求を承認する。
【００５７】
上述したように、スケジューラは、利用可能最古型待ち行列を使ってそのスコアボード中ですべての要求の相対的な経時を追跡する。新たなメモリ・アドレスをターゲットとする要求が受容調停器によって承認されるとき、スケジューラ・スコアボードへのインデックス・ポインタが、利用可能最古型待ち行列の末尾のエントリーに入れられ、それが最新の要求と考えられる。すべてのペンディング要求が要求元エージェントへの／からのおよびメモリ・ントローラへの／からの転送を完了したら、スコアボード・エントリーが再割り当てされるべく利用可能になり、受容調停器によって承認される新たな要求のために再割り当てされることができる。順序外スケジューリングのため、利用可能最古型待ち行列中の最も古いエントリーは、常に再割り当てのために利用可能ではないこともある。
【００５８】
新たな要求に再割り当てされるべきスコアボード・エントリーを選択するために、スケジューラは、スコアボード・エントリーへのすべての未決の要求が完了したかどうかを検出する。ある実施形態では、スケジューラは、どのエントリーが再割り当てのために利用可能であるかを示すために、スコアボード・エントリーの数に等しい長さをもつ要求ビット・ベクトルを使う。要求ビット・ベクトルにおいて1にセットされたビットはそのビット位置に対応するエントリーが再割り当てのために利用可能であることを示す。すると、要求ビット・ベクトルは利用可能最古型待ち行列に送られる。利用可能最古型待ち行列は、該待ち行列に格納されているインデックスを使って、該待ち行列のそのエントリーについて、該要求に対応する要求ベクトル中のビットを選択する。該待ち行列の各エントリーは、要求ベクトルにおける一意的なビットに関連付けられており、待ち行列中の最古のエントリーから始まって、再割り当てされるべき最古の利用可能な要求を決定するために「find  first」〔最初のものを探す〕関数が実行される。再割り当てされるべき最古の利用可能なエントリーを決定したのち、そのエントリーについてのスコアボード・インデックスが利用可能最古型待ち行列から出力される。
【００５９】
ここで図７を参照するに、本発明のある実施形態に基づくスコアボード・インデックス生成論理のブロック図が示されている。図７に示されるように、論理４００は、対応するスコアボード・インデックスを記憶するために直列配位で結合された複数のフリップフロップ４１０0〜４１０nを含んでいる。見て取れるように、フリップフロップ４１０は、スケジューラのスコアボードへのインデックス・ポインタに対応するスコアボード・インデックスを受領するよう構成される。該スコアボード・インデックスは、タグ・アレイおよびデータ・バッファへのインデックスでもある。フリップフロップ４１０は、最も新しいもの（つまりフリップフロップ４１０0）から最も古いもの（つまりフリップフロップ４１０n）の順に構成されてもよい。ある実施形態では、各フリップフロップはD型フリップフロップであってもよいが、本発明の範囲はこの点に関して限定されるものではない。他の記憶要素が使われてもよいことも理解されたい。
【００６０】
見て取れるように、各フリップフロップ４１０の出力は、対応する複数のマルチプレクサ４２０0〜４２０nの一つに結合され、各マルチプレクサはさらにスコアボード要求ベクトルのあるビットを受け取るよう構成される。よって、このビット・ベクトルは、対応するスコアボード・エントリーが再割り当てのために利用可能であることを示すために、たとえばセットされたビットを介して、指示を提供する。マルチプレクサ４２０0〜４２０nからの出力を使って、（比較器４２０nからのような）比較器出力から直接、あるいは論理ゲート４３０0〜４３０nの対応するものを介して承認信号が生成されることができる。（論理ゲートは、図示した実施形態では、対応するマルチプレクサ４２０から受領される第一の入力および対応するORゲート４２５0〜４２５n-2の反転出力に対応する第二の入力をもつANDゲートとして構成されている。）このようにして、一時には承認信号のうち単一のもののみがアクティブになりうる。
【００６１】
図７においてさらに見て取れるように、承認出力信号は、やはりはいってくるインデックス信号を受領するよう構成された複数のANDゲート４３５0〜４３５nの対応するものに結合されていてもよい。次いで、ANDゲート４３５nからの出力はORゲート４４０に結合されていてもよく、それにより最古の利用可能なエントリーに対応するスコアボード・インデックスが出力され、それにより１ホットの（1-hot）マルチプレクサ機能が実行され、それにより承認される要求のスコアボード・インデックスの１ホットの多重化が提供される。
【００６２】
〈共有メモリ・ファブリックのメモリ・スケジューリングの詳細〉
ファブリック・メモリ・スケジューラは、メモリ・コントローラに送られる要求をスケジューリングするよう協働する三つの状態機械を含む。
【００６３】
ここで図８を参照するに、本発明のある実施形態に基づくスケジューラ調停器のための状態機械のブロック図が示されている。図８に示されるように、図１のスケジューラ調停器１３０のようなハードウェア、ソフトウェアおよび／またはファームウェアにおいて実行されうる状態機械５００は、システムのリセットに際して、初期化状態INITにはいることによって開始されうる。次に制御は自己リフレッシュ状態機械５１０に移る。自己リフレッシュ状態機械５１０は、自己リフレッシュ入場状態５１２、自己リフレッシュ要求状態５１３および自己リフレッシュ退場状態５１６を含む。
【００６４】
図８で見て取れるように、自己リフレッシュ退場状態５１６から、制御は読み出し／書き込み承認状態機械５２０に移る。読み出し／書き込み承認状態機械５２０は読み出し要求承認状態５２２および書き込み要求承認状態５２４を含む。これらの状態から、制御は今度は読み出し状態機械５３０に移る。読み出し状態機械５３０は、複数の状態、すなわち、バイパス承認状態５３２、高優先度読み出し要求承認状態５３４、ベストエフォート読み出し要求承認状態５３６および低優先度アイソクロナス読み出し要求承認状態５３８を含む。さまざまな状態の退場および入場を引き起こす具体的な条件（表２および表４においてさらに後述）をもつこの高いレベルで示されているが、本発明の範囲がこの点で限定されず、さまざまな修正および代替が可能であることは理解されたい。
【００６５】
〈自己リフレッシュ状態機械〉
実施形態は、メモリがいつ、自己リフレッシュ状態とも称される低電力メモリ状態にはいったり出たりすることを許容されるかを制御しうる。自己リフレッシュ状態機械は、自己リフレッシュに入場するまたは退場するようメモリ・コントローラに指示をいつ送るかを制御することを受け持つ。ベストエフォート読み出し要求については、自己リフレッシュ状態機械は、すぐに自己リフレッシュ退場状態に遷移する。アイソクロナス読み出し要求については、メモリ・スケジューラは要求の締め切りをチェックして、その要求についての必要とされる読み出しレイテンシーを満たすために自己リフレッシュを退場するべきかどうかを決定する。アイソクロナス読み出し要求を満たすために自己リフレッシュを出ることが必要とされるかどうかを判定するために、メモリ・スケジューラは要求の締め切りをグローバル・タイマーの現在値から減算する。減算の結果がファブリック中の構成設定レジスタと突き合わせてチェックされる。該構成設定レジスタは、メモリ・コントローラが自己リフレッシュを抜け出てファブリックが要求エージェントにデータを返すために必要とされる最悪ケースのレイテンシーを反映するようプログラムされている、
書き込み要求については、ファブリックはフラッシュ・プール中のダーティーなエントリーの数を数え、その結果を、フラッシュ最高水準跡（high  water  mark）と称されるプログラム可能な閾値と突き合わせてチェックする。ダーティーなエントリーの数がフラッシュ最高水準跡の値を超える場合には、自己リフレッシュ状態機械は制御を、自己リフレッシュ退場状態に渡す。さらに、ファブリックは、要求が受容調停器によってブロックされる同じタグ・アドレスへの読み出し／書き込みの衝突があるかどうかをチェックする。ファブリックが、要求がアドレス衝突、エージェント限界によってブロックされていると判定するとき、あるいは要求追跡器またはメモリ・スケジューラ・スコアボードがいっぱいである場合、制御は自己リフレッシュ状態機械から自己リフレッシュ退場状態に移る。ある実施形態では、ファブリックはまた、自己リフレッシュへの入場を無効にするようプログラムされることのできる構成設定レジスタをも含んでいてもよい。
【００６６】
メモリ・スケジューラがメモリ・コントローラに自己リフレッシュを退場する指示を送るとき、要求はメモリ・コントローラに送られはじめてもよい。メモリ・スケジューラは、一方ではメモリ・コントローラにメモリ要求をアクティブに送りつつ、自己リフレッシュの外に留まるようメモリ・コントローラに指示を送ることを続ける。メモリ・スケジューラがすべての読み出し要求をメモリ・コントローラに送ることを完了し、フラッシュ・プール内の書き込み要求の数がカジュアル最高水準跡限界より下であるとき、メモリ・スケジューラは自己リフレッシュ要求状態に遷移する。
【００６７】
自己リフレッシュ要求状態では、受容調停器によって新たな要求が承認されない場合、状態機械は、自己リフレッシュ入場遅延と呼ばれるプログラム可能な遅延値が満たされたのち、自己リフレッシュ状態にはいるよう遷移する。ある実施形態では、この遅延は、ファブリック中の構成設定レジスタにプログラムされる。新たな要求が受容調停器によって承認される場合、自己リフレッシュ状態機械は、ある種の条件の下で、自己リフレッシュ状態を出るよう遷移する。新たなベストエフォート読み出し要求が受領される場合またはフラッシュ・プール内のエントリーの数がフラッシュ最高水準跡構成設定レジスタにプログラムされている数を超えることにつながる書き込み要求が受領される場合、自己リフレッシュ状態機械は、自己リフレッシュ要求状態からもとの自己リフレッシュ退場状態に遷移する。状態機械が自己リフレッシュ要求状態にあるときにアイソクロナス読み出し要求が受領される場合、要求の締め切り値が、自己リフレッシュ入場閾値と呼ばれるプログラムされた値と突き合わせてチェックされる。締め切りレイテンシーが自己リフレッシュ入場閾値より大きい場合には、状態機械は自己リフレッシュ要求状態に居続ける。要求についての締め切りレイテンシーが自己リフレッシュ入場閾値より低い場合には、状態機械は自己リフレッシュ退場状態に遷移する。
【００６８】
自己リフレッシュ状態機械は、状態機械が自己リフレッシュ入場状態に遷移するまで、自己リフレッシュの外に留まるようメモリ・コントローラに状態を駆動する。ひとたび自己リフレッシュ入場状態になると、状態機械はメモリ・コントローラに、自己リフレッシュにはいるよう指示を送る。
【００６９】
下記の表２は、本発明のある実施形態に基づく自己リフレッシュ状態機械の記述である。
【００７０】
【表２−１】
0005886470.tif 000003
【００７１】
【表２−２】
0005886470.tif 000004
【００７２】
〈読み出し／書き込み承認状態機械〉
ある実施形態では、メモリ・スケジューラは構成設定可能な閾値を使って、書き込み要求のバーストをメモリ・コントローラに転送するのをいつ開始し、停止するかを指定する。メモリ・スケジューラは、メモリへの異なる型の書き込みデータ転送、たとえば本稿で書き込み要求の高優先度フラッシュおよびメモリへの書き込み要求のカジュアル・フラッシュともそれぞれ称される高優先度転送および低優先度転送を実行しうる。フラッシュ・プール内のエントリーの数が閾値（フラッシュ最高水準跡）に達するまたは閾値を超えるとき、メモリ・スケジューラは、メモリへの高優先度書き込みフラッシュをスケジューリングすることを開始し、メモリ・コントローラに書き込み要求を送ることを開始する。メモリ・スケジューラは、フラッシュ・プール内のエントリーの数が閾値（フラッシュ最低水準跡（low  water  mark））に達するまたは閾値未満になるまで、高優先度フラッシュ機構を使って書き込み要求をスケジューリングすることを続ける。
【００７３】
カジュアル・フラッシュ（casual  flush）がファブリック・メモリ・スケジューラによって実行されてもよい。カジュアル・フラッシュは、メモリ・スケジューラがすべての読み出し要求をメモリ・コントローラに送ることを完了し、フラッシュ・プール内のエントリーの数が閾値（カジュアル・フラッシュ限界）を超えるときにトリガーされる。ある実施形態では、カジュアル・フラッシュ限界は、典型的には、パフォーマンス上の理由のため、最低水準跡以上かつ最高水準跡未満に設定されることができる。場合によっては、このカジュアル・フラッシュ限界は、すべての書き込みデータをメモリにフラッシュするよう、0に設定されることができる。ひとたび最後の読み出し要求がメモリ・コントローラに送られたら、フラッシュ・プール内のエントリーの数がカジュアル・フラッシュ限界より多ければ、カジュアル・フラッシュ・タイマーと呼ばれるカウンタがクロック・サイクル毎にインクリメントすることを開始する。メモリへの新たな読み出し要求がファブリックによって受領されず、カジュアル・フラッシュ・タイマーが、構成設定レジスタ内に記憶されている閾値であるカジュアル・フラッシュ遅延によって指定される値に達する場合、メモリ・スケジューラは、メモリ・コントローラに書き込み要求を送ることを開始する。このカジュアル・フラッシュは、フラッシュ・プール内のエントリーの数がカジュアル・フラッシュ限界未満になるまで、または新たな読み出し要求がファブリックによって受領されるまで続く。
【００７４】
読み出し／書き込み承認状態機械は、読み出し要求の承認から書き込み要求の承認に切り換えることを受け持つ。ある実施形態では、メモリ・スケジューラは、書き込み要求が読み出し要求に対して優先度をもつことを許容するよう、あるいは読み出し要求と書き込み要求の間で切り換えるときに重みを使うよう（システムが書き込み要求によって飽和するときに読み出しの飢餓を防ぐため）構成設定可能である。重みが有効にされる場合、メモリ・ファブリックは、読み出しおよび書き込みの重みを独立に指定するために構成設定レジスタを使う。
【００７５】
下記の表３は、本発明のある実施形態に基づく読み出し／書き込み承認状態機械の記述である。
【００７６】
【表３−１】
0005886470.tif 000005
【００７７】
【表３−２】
0005886470.tif 000006
【００７８】
〈読み出し状態機械〉
読み出し状態機械は、高優先度アイソクロナス読み出し要求、ベストエフォート読み出し要求および低優先度アイソクロナス読み出し要求の間で切り換えることを受け持つ。読み出し状態機械は、複数のモードの一つで動作するよう構成できる。ある実施形態では、二つのそのようなモードが提供される。第一のモードは、読み出し状態機械が高優先度アイソクロナス読み出しに最高の優先度を与え、ベストエフォート読み出し要求に中程度の優先度を与え、低優先度アイソクロナス読み出し要求に最低の優先度を与える固定優先度モードである。第二のモードは、高優先度アイソクロナス読み出しとベストエフォート読み出し要求との間の切り換えのために重みを使うことを可能にするものである。このモードでは、低優先度アイソクロナス要求は、もはや高優先度アイソクロナス読み出し要求やベストエフォート読み出し要求がないときにのみ承認される。
【００７９】
表４は、本発明のある実施形態に基づく読み出し状態機械の記述である。
【００８０】
【表４−１】
0005886470.tif 000007
【００８１】
【表４−２】
0005886470.tif 000008
【００８２】
【表４−３】
0005886470.tif 000009
【００８３】
〈スケジューラ・エージェント重み〉
メモリ・スケジューラは、同じサービス・クラス・カテゴリー内のエージェントの間でメモリ帯域幅を配分するためのエージェント重みを使う。ある実施形態では、構成設定レジスタが、各要求元エージェントについて重み値を指定し、各エージェントについて重みカウンタが設けられる。エージェント重み構成設定レジスタは、受容調停器とメモリ・スケジューラとの間で共通である。
【００８４】
ファブリックに接続されたエージェントのいずれについてもメモリ・スケジューラにおいてペンディング中の要求がないとき、エージェント重みカウンタは、エージェント重み構成設定レジスタにおいて指定されている値をロードされる。要求が受容調停器によって承認され、メモリ・スケジューラ・スコアボードの待ち行列に入れられるとき、要求情報とともにエージェントIDフィールドがメモリ・スケジューラ・スコアボードに記憶される。メモリ・スケジューラがそのスコアボード中の要求を承認するとき、エージェントIDフィールドは、要求の源を判別するために使用され、そのエージェントについての重みカウンタは1だけデクリメントされる。ひとたびエージェント重みカウンタが0に達したら、そのエージェントについての残りの要求はマスクされ、もはやスケジューラ調停に参加しない。エージェントがそのカウンタ重みが0に達したために調停からマスクされるとき、メモリ・スケジューラは残りのエージェントからの要求をスケジューリングすることを続ける。ひとたびすべてのエージェントについての重みカウンタが0に達した場合、あるいはあるエージェントの重みカウンタが0ではないがそのエージェントについて残っている要求はない場合、すべてのエージェント重みカウンタは、エージェント重み構成設定レジスタからの値を改めてロードされる。
【００８５】
ここで図９を参照するに、本発明のある実施形態に基づく、メモリ・スケジューリングを実行する方法の流れ図が示されている。図９に示されているように、方法６００は、共有メモリ・ファブリックのスケジューラ調停器によって実行されてもよい。見て取れるように、方法６００は、メモリ・スケジューラ・スコアボードからのメモリ要求を、メモリ・コントローラへの送達のために選択することによって始まってもよい（ブロック６１０）。メモリの状態、さまざまな要求の状態、ペンディング中の要求のアドレス位置の間の関係などを含めさまざまな事情が、適切なエントリーを決定する際に考慮に入れられてもよい。次に、ブロック６２０において、選択されたエージェントについての重み値が更新される。ある実施形態では、重み値のデクリメントが実行される。諸エージェントについての重み値の初期値は受容調停器によっても使われる構成設定レジスタから得られるのと同じであるものの、これらの重み値の独立した制御を可能にするために各調停器について異なる重みカウンタが設けられることを注意しておく。
【００８６】
引き続き図９を参照するに、次に、菱形６３０において、選択されたエージェントの重み値が0であるかどうかが判定されることができる。この判定は、0が最低優先度の値である実施形態におけるものでありうることを注意しておく。むろん、本発明の範囲はこの点で限定されるものではなく、この判定は他の実施形態では、別の所定の値との比較に基づいていてもよい。重み値が0であることが判定されたら、制御はブロック６４０に移り、この選択されたエージェントがメモリ・スケジューラ内のさらなる調停からマスクされる。
【００８７】
菱形６３０およびブロック６４０の両方から、制御は菱形６５０に移り、ここで、すべてのエージェントの重み値が0に等しいかどうかが判定されることができる。もしそうであれば、制御はブロック６６０に移り、すべてのエージェントについての重み値は、たとえばファブリックの構成設定レジスタから得られる、それらの構成設定された値に更新される。もしそうでなければ、制御は菱形６５０から菱形６７０に移り、0でない重み値をもつエージェントについてメモリ・スケジューラ内に残っている要求があるかどうかを判定する。もしあれば、それらの要求を、たとえば方法６００の別の逐次反復を通じて処理することができる。そうではなく、もしさらなる要求が残っていなければ、制御はブロック６６０に移り、重み値は上記のように更新されることができる。図９の実施形態におけるこの特定の実装をもって示したが、本発明の範囲がこの点で限定されるものではないことは理解されたい。
【００８８】
下記の表５は、
エージェント０  重み＝４
エージェント１  重み＝２
エージェント２  重み＝１
という三つのエージェントについての初期重み値に基づくメモリ・スケジューリングの複数のクロック・サイクルにわたる例示的な動作を与えている。
【００８９】
【表５】
0005886470.tif 000010
【００９０】
〈順序外の、ページを意識する（page  aware）スケジューリング〉
メモリ・スケジューラは、メモリ・コントローラに送られる要求を並べ替え、可能な最大メモリ帯域幅のために要求のストリームを最適化しようとする。メモリ・スケジューラは、該スケジューラに、該スケジューラが取り付けられているメモリ・コントローラについての情報を与えるようプログラムされた構成設定レジスタを含む。ある実施形態では、これらの構成設定レジスタは、どのアドレス・ビットがメモリ・チャネル、バンク、ランクおよび行アドレスのために使用されるかについての情報を含む。構成設定レジスタにプログラムされたメモリ構成情報を使って、メモリ・スケジューラは、スケジューラ・スコアボード内の各要求のバンク、ランク、行およびチャネルを決定する。メモリ・スケジューラ・スコアボードはまた、各要求についてページ・ヒット状態ビットをも含む。これは、メモリにおける同じページへの諸要求が、異なるページへの要求を送る前にメモリ・コントローラに送られるよう、メモリ・コントローラに送られる要求を最適化するために使われる。
【００９１】
初期化後、メモリ・コントローラに何らかの要求が送られる前に、メモリ・スケジューラはそのスコアボード中のすべてのページ・ヒット状態ビットをクリアする。諸要求がメモリ・コントローラに送られるにつれて、メモリ・スケジューラはスコアボード中のページ・ヒット状態ビットを更新して、他の要求が同じページへのものかメモリ中の異なるページへのものかを示す。スケジューラは、所与のメモリ・バンクにおけるページの実際の状態は知らないが、これらのページ・ヒット状態ビットは、どの要求が最適なメモリ帯域幅のためにメモリ・コントローラに送るための最良の候補であるかについてのヒントとして使用されうる。
【００９２】
要求がメモリ・コントローラに送られるとき、メモリ・スケジューラはスコアボードにおいてペンディング中の他のすべての要求についてチャネル、ランクおよびバンク情報を比較する。あるスコアボード・エントリーのチャネル、ランクおよびバンク情報がメモリ・コントローラに送られる要求にマッチすれば、そのエントリーの行アドレスがメモリ・コントローラに送られる要求の行アドレスと突き合わせて比較される。スコアボード・エントリーの行アドレスがその要求についてマッチすれば、ページ・ヒット状態ビットが1に設定される；行アドレスがその要求にマッチしなければ、ページ・ヒット状態ビットは、ページ・ミスを示す0に設定される。チャネル、ランクまたはバンクがメモリ・コントローラに送られる要求とは異なるスコアボード・エントリーについては、ページ・ヒット状態の更新は行なわれない。
【００９３】
受容調停器によって新たな要求が承認され、スケジューラ・スコアボードで行列待ちさせられるにつれて、行アドレス情報は、現在スコアボード中にあるすべてのエントリーと突き合わせて比較される。新たな要求の行アドレスがスケジューラ・スコアボード中の一つまたは複数のエントリーにマッチすれば、マッチするエントリーのページ・ヒット状態ビットがセットされ、新たな要求についてのページ・ヒット状態もセットされる。行アドレスがスコアボード中のどのエントリーにもマッチしないまたはマッチするすべてのエントリーのページ・ヒット状態が0に設定されている場合には、新たな要求についてのページ・ヒット状態も0に設定される。
【００９４】
スケジューラ・スコアボード中に記憶されているページ・ヒットおよびランク状態情報を使って、メモリ・スケジューラは、たいていのDRAMベースのメモリ技術について最適な帯域幅を与えることが判別されている優先度エンコードされたスケジューリング方式に基づいて、メモリ・コントローラに送られる要求を並べ替える。メモリ・スケジューラは、より低優先度レベルの要求を承認する前に、より高優先度の要求を承認する。
【００９５】
下記の表６は、本発明のある実施形態に基づく、メモリ・スケジューラによって使用される種々の優先度レベルを示している。
【００９６】
【表６】
0005886470.tif 000011
【００９７】
〈経時ベースのメモリ・スケジューリングおよび飢餓予防〉
順序外の、ページを意識するスケジューリング・アルゴリズムに起因しての、要求の飢餓を防止するために、経時〔エイジ〕（age）の概念が、少なくとも部分的に要求をスケジューリングするために使われる。各サービス・クラス（COS:  class  of  service）カテゴリーについて、メモリ・スケジューラは、順序外（OOO:  our-of-order）スケジューリング限界を指定する構成設定レジスタを含んでいる。アイソクロナスCOSカテゴリーについてより短い最大読み出しレイテンシーを与えるために、OOOスケジューリング限界は典型的には、ベストエフォートCOSカテゴリーのOOOスケジューリング限界よりも小さな値に設定される。メモリ・スケジューラは、ベストエフォートおよびアイソクロナスCOSカテゴリーについてそのスコアボード内のすべてのペンディングの要求について要求ビット・ベクトルを生成する。これらの要求ビット・ベクトルは、いまだペンディング中である最も古い要求を判別する利用可能最古型待ち行列に送られる。利用可能最古型待ち行列は、最も古い要求を示すようビットが1に設定される、１ホットでエンコードされたビット・ベクトルを出力する。メモリ・スケジューラがそのページを意識するスケジューリング・アルゴリズムに基づいて諸要求をOOOで承認する際、メモリ・スケジューラは、各COSカテゴリーについて最も古いペンディングの要求でなかった要求がいくつ承認されたかを計数する。ひとたびカウンタが、あるCOSカテゴリーについて最悪ケースの受け容れ可能なレイテンシーについてなされるパフォーマンス解析によって決定されてもよいCOSカテゴリーについてのOOOスケジューリング限界に達したら、ページを意識するスケジューリング論理は、無効にされ、そのCOSカテゴリーについての最も古い要求がメモリ・スケジューラによって承認される。あるCOSカテゴリーについて最も古い要求が承認されるときは常に、そのCOSカテゴリーについてのカウンタは0にリセットされる。あるCOSカテゴリーについて、可能な最短のレイテンシーを与えるためには、OOOスケジューリング限界を0にプログラムすることができる。これは本質的には、そのCOSカテゴリーについてはページを意識するスケジューリング論理を無効にする。OOOスケジューリング限界があるCOSカテゴリーについて0に設定されるときは、メモリへの諸要求は、利用可能最古型待ち行列によって決定される、要求経時を使ってスケジューリングされてもよい。
【００９８】
〈ベストエフォート最大レイテンシー飢餓予防〉
ベストエフォート読み出し要求については、ファブリックは、スケジューラ・スコアボード中の締め切り記憶情報を利用して、ベストエフォート要求をスケジューリングするための最大レイテンシー値を指定するために使われる値を記憶する。スコアボード（scoreboard）は、エントリーのプールであり、スコアボード中に記憶された要求は、各要求についてやはりスコアボード中に記憶されている当該要求のサービス・クラス・カテゴリーによって決定される、ベストエフォートまたはアイソクロナス要求のいずれかでありうる。スコアボード中の要求がベストエフォート読み出し要求である場合は、最大許容可能レイテンシー、たとえば構成設定レジスタに記憶されている事前にプログラムされた値が、その要求をスケジューリングするために使われる。その要求がスコアボード中で行列待ちしており、ベストエフォート読み出し要求であるときは、最大レイテンシー値はグローバル・タイマーの現在の値に加えられる。ひとたびグローバル・タイマーがベストエフォート要求の最大レイテンシーについて記憶されている値に達したら、ページを意識するスケジューリングはその要求については無視され、その結果、その要求は、それが、たとえば利用可能最古型待ち行列により決定されるところによりペンディング中の最も古い要求となるときにスケジューリングされる。
【００９９】
〈要求追跡器書き込み優先度および重み〉
要求追跡器は、要求元エージェントからファブリックの内部メモリ・バッファへのデータの転送を受け持つ。共有メモリ・ファブリックによって使用される書き込みプロトコルは、すべての書き込みデータを、要求順に、要求元エージェントからファブリック中の内部メモリ・バッファに転送させる。ある実施形態では、要求追跡器は、書き込み要求の順序付けを保存するために、エージェント毎に別個の連結リスト（linked  list）を使う。要求追跡器は、要求元エージェントから内部データ・バッファにデータを転送するのに先立って、書き込み要求についてコヒーレンシー・チェックを実行してもよい。
【０１００】
書き込み要求について、要求追跡器は、一つまたは複数の優先度レベルをサポートするよう構成されていてもよい。受容調停器によってある要求が承認されるとき、その要求についての締め切り情報が、要求追跡器中のエントリーの数に対応する長さをもつアレイに記憶される。ファブリックは、ある要求締め切り値がいつ高優先度であると考えられるかを指定するために、たとえば構成設定レジスタに記憶される閾値を使う。要求についての各締め切り値は、構成設定レジスタにプログラムされている閾値と突き合わせて比較される。締め切りレイテンシーが構成設定レジスタ中の値より小さい場合には、その要求について、追跡器のスコアボード・エントリーにおいてビットがセットされ、その要求が高優先度要求であることを示す。
【０１０１】
二優先度レベル動作が有効にされるとき、あるエージェントについての書き込み要求が連結リストの先頭に達し、高優先度ビットがその要求についてセットされている場合、その書き込み要求は高優先度であると考えられる。エージェントの連結リストのいずれかの先頭にあるいずれかの書き込み要求がその書き込み要求が高優先度要求であることを示す場合には、他のエージェントについての他の連結リストの先頭にあるすべての低優先度の書き込み要求は、書き込み要求調停器に入力される前にマスクされる。同じ優先度レベルの複数の要求がエージェント連結リストの先頭に存在する場合、書き込みデータを転送するようどのエージェントを選ぶかを選択するために調停が実行される。
【０１０２】
〈要求追跡器の書き込み要求調停器〉
書き込み要求調停器は、どのエージェントが書き込みデータを転送するかを選択するために、重み付けされた優先度に基づく公平な調停器を使う。書き込み要求調停器についての重みは、要求ついて機器中の構成設定レジスタにプログラムされる。書き込み調停器は、リセット時に、各エージェントに一意的な優先度を割り当てる。各サイクルで、調停器は、転送準備のできているデータをもつ要求候補のみを考慮し、最高の優先度もつ要求者に承認を与える。承認されたら、要求候補の重みが1だけデクリメントされる。承認された候補がすでに0の重みを有していた場合には、調停器は要求候補の優先度を次のように更新する。承認された候補の優先度は最低優先度（たとえば0）に設定される。承認された候補より低い優先度をもつすべての候補はその優先度をインクリメントし、承認された候補より高い優先度をもつすべての候補はその優先度を不変のままとする。
【０１０３】
〈要求追跡器の読み出しデータ返し〉
要求元エージェントは、順序通りの（in  order）データ返しまたは順序外のデータ返しのいずれもサポートする。順序外データ返しをサポートするためには、順序IDフィールドが使用される。順序IDは、各要求と一緒にエージェントから送られ、要求追跡器スコアボードに記憶される。同じエージェントからの同じ順序IDをもつ複数の要求は要求順に返される。異なる順序IDをもつ同じエージェントからの要求についてのデータは、要求順に返される必要はない。ある実施形態では、要求追跡器は、読み出しデータが、要求元エージェントに返されるときに適正に順序付けられることを保証するために、連結リストを使う。
【０１０４】
要求が受容調停器によって承認される前に、データが書き込まれるべき内部データ・バッファのエントリーが選ばれる。要求が受容調停器によって承認されるとき、内部データ・バッファへのインデックスを含む要求情報が要求追跡器に転送される。メモリ・コントローラからデータが返される際、メモリ・スケジューラは読み出し完了指標を要求追跡器に転送する。読み出し完了指標は、データが書き込まれている内部データ・バッファへのインデックス・フィールドと、メモリ・アドレスのどのチャンクがメモリの読み出しを完了したかの指示を含む。要求追跡器が読み出し完了を受け取るとき、要求追跡器はそのインデックス・フィールドを要求追跡器スコアボードに記憶されているすべての要求についてのインデックス・フィールドと比較する。あるスコアボード・エントリーのインデックス・フィールドがある要求についての読み出し完了にマッチし、その要求についてのすべてのチャンク・ビットが読み出し完了にセットされている場合、要求追跡器スコアボードにおいて、読み出し要求が完了したことを示すビットがセットされる。
【０１０５】
読み出し要求が連結リストの先頭に達し、要求追跡器における読み出し完了状態ビットがセットされ、その要求についてのすべてのコヒーレンシー・チェックが完了したら、その要求は、エージェントに読み出しデータを返すために利用可能である。書き込み要求と同様に、要求追跡器は、要求優先度を示すためにスコアボード・エントリーについての要求締め切り情報を使う。ある実施形態では、要求追跡器は、要求元エージェントに返す用意のできたデータをもつスコアボード・エントリーについて、二つの要求ビット・ベクトルを生成する。一方のビット・ベクトルは、低優先度読み出し要求用であり、他方のビット・ベクトルは高優先度読み出し要求用である。これらの要求ビット・ベクトルは、要求追跡器の利用可能最古型待ち行列に入力される。利用可能最古型待ち行列は、両方の要求ビット・ベクトルについて、どの要求が最も古いかを決定する。要求追跡器は、構成設定モード（configuration  mode）をもつ。このモードは、有効にされると、何らかの低優先度要求についてのデータを返す前に、利用可能最古型待ち行列によって選択される最も古い高優先度要求からのデータの返しを引き起こす。高優先度データ返しのサポートが有効にされていないときは、要求追跡器は読み出しデータを返す用意のできているすべてのスコアボード・エントリーを同じ優先度レベルをもつものとして扱う。このモードでは、低優先度ビット・ベクトルのみが利用可能最古型待ち行列への入力として使われ、利用可能最古型待ち行列がスコアボード中の最も古い読み出し要求を決定する。次いで、最も古いと判定されたスコアボード・エントリーについての読み出しデータが要求元エージェントに返される。
【０１０６】
実施形態は、多くの異なるSoCまたはさまざまなIPを単一のダイ上に統合してそれらのIPをメモリ・ファブリック（memory  fabric）を介してメモリに接続する他の半導体デバイスにおいて使用されうる。さらにまた、本発明のある実施形態に基づくメモリ・ファブリックは、これらのIPの少なくともいくつかのアイソクロナス要求を満たすためにQoSレベルを提供するために使用されてもよい。
【０１０７】
ここで図１０を参照するに、本発明のある実施形態に基づく本発明のある実施形態に基づくSoCのブロック図が示されている。図１０に示されているように、SoC  ７００は、上記のような共有メモリ調停器とともに複数のIPブロックを含む単一ダイ半導体デバイスである。図１０の実施形態では、それぞれ独立して命令を実行できる複数のコア７１０0〜７１０nが設けられている。ある実施形態では、これらのコアのすべては、たとえばアトム（商標）ベースのコアのようなインテル・アーキテクチャ（商標）の順序内（in-order）コア設計のような単一の設計である。他の実施形態では、それらのコアは、インテル・コア（商標）ベースの設計のようなインテル・アーキテクチャ（商標）（IA）３２のコアのような順序外プロセッサであってもよい。他の実施形態では、不均一なコアの混合が設けられてもよい。さらに、複数のグラフィック・エンジン、すなわち独立なグラフィック・ユニット７２０0〜７２０nがそれぞれ独立してグラフィック動作を実行するよう設けられていてもよい。見て取れるように、複数のコアは、レベル２（L2）キャッシュのような共有キャッシュ・メモリ７１５に結合されており、同様に、グラフィック・エンジンは別の共有キャッシュ・メモリ７２５に結合されている。
【０１０８】
システム・エージェント７３０がこれらのコアおよびグラフィック・エンジンに、対応するダイ内相互接続７２８および７２９を介して結合されている。見て取れるように、システム・エージェント７３０は、本稿に記載されるように構成されていてもよい共有メモリ・ファブリック７３５を含む。むろん、さまざまな他の論理、コントローラおよび電源管理ユニットのような他のユニットがシステム・エージェント７３０内に存在していてもよい。見て取れるように、共有メモリ・ファブリック７３５はメモリ・コントローラ７４０と通信し、該メモリ・コントローラ、DRAMとして構成されたシステム・メモリのようなオフチップ・メモリに結合される。さらに、システム・エージェント７３０は一組の相互接続７４４を介して、さまざまな周辺装置のような一つまたは複数の内部エージェント７５０に結合される。ある実施形態では、相互接続７４４は、優先度チャネル相互接続、サイドバンド・チャネル相互接続およびメモリ・チャネル相互接続を含んでいてもよい。同様に構成された相互接続７４６は、システム・エージェント７３０と一つまたは複数のオフチップ・エージェント（図１０の実施形態では図解の簡単のため示していない）との間の通信を提供する。図１０ではこの高いレベルで示されているが、本発明の範囲がこの点で限定されないことは理解されたい。
【０１０９】
ここで図１１を参照するに、本発明のある実施形態に基づくコンピュータ・システムに存在するコンポーネントのブロック図が示されている。図１１に示されるように、システム８００は、多くの異なるコンポーネントを含むことができる。これらのコンポーネントは、IC、その一部、離散的電子デバイスまたはコンピュータ・システムのマザーボードもしくはアドイン・カードのような回路基板に適応された他のモジュールとして、あるいはコンピュータ・システムの筐体内に他の仕方で組み込まれたコンポーネントとして、実装されることができる。図１１のブロック図はコンピュータ・システムの多くのコンポーネントの高レベルのビューを示すことが意図されていることも注意しておく。しかしながら、ある種の実装では追加的なコンポーネントが存在していてもよく、さらに、他の実装では、図示したコンポーネントの異なる配列が使われてもよいことは理解しておくべきである。
【０１１０】
図１１に見られるように、超低電圧プロセッサのような低電力マルチコア・プロセッサであってもよいプロセッサ８１０が主処理ユニットおよびシステムのさまざまなコンポーネントとの通信のための中央ハブとして作用してもよい。そのようなプロセッサは本稿に記載されるようなSoCとして実装できる。ある実施形態では、プロセッサ８１０は、i3、i5、i7のようなインテル（登録商標）・アーキテクチャ・コア（商標）ベースのプロセッサまたは米国カリフォルニア州サンタクララのインテル・コーポレイションから入手可能な別のそのようなプロセッサ、たとえば一つまたは複数のコア（商標）ベースのコアおよび一つまたは複数のインテル（登録商標）・アトム（商標）ベースのコアを組み合わせてそれにより単一SoCにおいて高電力および低電力コアを実現するプロセッサであってもよい。しかしながら、米国カリフォルニア州サニーヴェールのアドバンストマクロデバイセズ社（AMD）から入手可能なような他の低電力プロセッサ、ARMホールディングズ社からのARMベースの設計または米国カリフォルニア州サニーヴェールのMIPSテクノロジーズ社もしくはそのライセンシーまたは採用者からのMIPSベースの設計がその代わりにアップルA5またはA6プロセッサのような他の実施形態において存在していてもよいことは理解されたい。
【０１１１】
プロセッサ８１０は、システム・メモリ８１５と通信してもよい。システム・メモリ８１５はある実施形態では、所与の量のシステム・メモリを提供するために複数のメモリ・デバイスを介して実装されることができる。データ、アプリケーション、一つまたは複数のオペレーティング・システムなどといった情報の持続的な記憶を提供するために、大容量記憶８２０もプロセッサ８１０に結合していてもよい。やはり図１１に示されるように、フラッシュ・デバイス８２２がたとえばシリアル周辺インターフェース（SPI:  serial  peripheral  interface）を介してプロセッサ８１０に結合されていてもよい。このフラッシュ・デバイスは、基本入出力ソフトウェア（BIOS）およびシステムの他のファームウェアを含む、システム・ソフトウェアの不揮発性記憶を提供してもよい。
【０１１２】
さまざまな入出力（IO）装置がシステム８００内に存在していてもよい。具体的には、図１１の実施形態では、筐体のふた部分の中に構成された高精細度LCDまたはLEDパネルであってもよいディスプレイ８２４が示されている。このディスプレイ・パネルは、たとえばディスプレイ・パネルの上に外部から適応されるタッチスクリーン８２５をも提供してもよく、それによりこのタッチスクリーンによるユーザーの対話を介して、たとえば情報の表示、情報へのアクセスなどに関して、所望される動作を可能にするよう、ユーザー入力をシステムに与えることができる。ある実施形態では、ディスプレイ８２４は、高性能グラフィック相互接続として実装できるディスプレイ相互接続を介してプロセッサ８１０に結合されてもよい。タッチスクリーン８２５は、ある実施形態ではI2C相互接続であることができる別の相互接続を介してプロセッサ８１０に結合されてもよい。図１１にさらに示されるように、タッチスクリーン８２５に加えて、タッチによるユーザー入力はタッチパッド８３０を介して行なわれることができる。タッチパッド８３０は、筐体内に構成されてもよく、またタッチスクリーン８２５と同じI2C相互接続に結合されてもよい。
【０１１３】
知覚的コンピューティングおよび他の目的のために、さまざまなセンサーがシステム内に存在していてもよく、プロセッサ８１０に種々の仕方で結合されることができる。ある種の慣性および環境センサーがプロセッサ８１０にセンサー・ハブ８４０を通じて、たとえばI2C相互接続を介して結合してもよい。図１１に示した実施形態では、これらのセンサーは加速度計８４１、環境光センサー（ALS:  ambient  light  sensor）８４２、コンパス８４３およびジャイロスコープ８４４を含んでいてもよい。他の環境センサーは、ある実施形態ではシステム管理バス（SMBus:  system  management  bus）バスを介してプロセッサ８１０に結合してもよい一つまたは複数の熱センサー８４６を含んでいてもよい。
【０１１４】
図１１で見て取れるように、さまざまな周辺装置がプロセッサ８１０に低ピンカウント（LPC:  low  pin  count）相互接続を介して結合していてもよい。図示した実施形態では、さまざまなコンポーネントが組み込みコントローラ８３５を通じて結合されることができる。そのようなコンポーネントは、キーボード８３６（たとえば、PS2インターフェースを介して結合される）、ファン８３７および熱センサー８３９を含むことができる。いくつかの実施形態では、タッチパッド８３０もEC  ８３５にPS2インターフェースを介して結合してもよい。さらに、2003年10月2日付の信頼コンピューティング・グループ（TCG:  Trusted  Computing  Group）TPM仕様バージョン1.2に基づく信頼プラットフォーム・モジュール（TPM:  trusted  platform  module）８３８のようなセキュリティ・プロセッサもこのLPC相互接続を介してプロセッサ８１０に接続してもよい。
【０１１５】
システム８００は、無線も含め、多様な仕方で外部装置と通信できる。図１１に示した実施形態では、それぞれ特定の無線通信プロトコルのために構成されたラジオに対応することができるさまざまな無線モジュールが存在している。近距離場のような短いレンジでの無線通信のための一つの仕方は、ある実施形態ではSMBusを介してプロセッサ８１０と通信しうる近距離場通信（NFC:  near  field  communication）ユニット８４５を介していてもよい。このNFCユニット８４５を介しては、互いに近接している装置が通信できることを注意しておく。たとえば、ユーザーは、二つの装置を近接関係に適応し、識別情報支払い情報のような情報、画像データのようなデータなどの転送を可能にすることを通じて、システム８００が、該ユーザーのスマートフォンのような別の（例）ポータブル装置と通信できるようにすることができる。無線電力転送もNFCシステムを使って実行されてもよい。
【０１１６】
図１１においてさらに見て取れるように、追加的な無線ユニットは、WLANユニット８５０およびブルートゥース・ユニット８５２を含む他の短距離無線エンジンを含むことができる。WLANユニット８５０を使って、所与の米国電気電子技術者協会（IEEE）802.11規格に基づくWi-Fi（商標）通信が実現でき、一方、ブルートゥース・ユニット８５２を介して、ブルートゥース・プロトコルによる短距離通信が実行できる。これらのユニットはプロセッサ８１０とたとえばUSBリンクまたはユニバーサル非同期受信器送信器（UART）リンクを介して通信してもよい。あるいは、これらのユニットは、PCIエクスプレス（商標）仕様  基本仕様  バージョン3.0（2007年1月17日公表）に基づく周辺コンポーネント相互接続エクスプレス（商標）（PCIe（商標））プロトコルまたはシリアル・データ入出力（SDIO）規格のような別のそのようなプロトコルを介した相互接続を介してプロセッサ８１０に結合してもよい。むろん、一つまたは複数のアドイン・カード上に構成されてもよいこれらの周辺装置の間の実際の物理的な接続は、マザーボードに適応される次世代形状因子（NGFF）コネクタによることができる。
【０１１７】
さらに、たとえばセルラーまたは他の無線広域プロトコルに基づく無線広域通信がWWANユニット８５６を介して行なわれることができる。WWANユニット８５６は加入者識別モジュール（SIM）８５７に結合してもよい。さらに、位置情報の受信および使用を可能にするために、GPSモジュール８５５も存在していてもよい。図１１に示した実施形態では、WWANユニット８５６およびカメラ・モジュール８５４のような統合された捕捉装置は、USB2.0または3.0リンクのような所与のUSBプロトコルまたはUARTもしくはI2Cプロトコルを介して通信しうる。ここでもまた、これらのユニットの実際の物理的な接続は、NGFFアドイン・カードの、マザーボード上に構成されたNGFFコネクタへの適応を介してであることができる。
【０１１８】
オーディオ入力および出力に備えるため、デジタル信号プロセッサ（DSP）８６０を介してオーディオ・プロセッサが実装されることができる。DSP  ８６０はハイデフィニション・オーディオ（HDA）リンクを介してプロセッサ８１０に結合してもよい。同様に、DSP  ８６０は、統合された符号化器／復号器（コーデック）および増幅器８６２と通信してもよく、これは今度は筐体内に実装されてもよい出力スピーカー８６３に結合してもよい。同様に、増幅器およびコーデック８６２は、マイクロホン８６５からオーディオ入力を受領するよう結合されることができる。マイクロホン８６５はある実施形態では、システム内のさまざまな動作の音声作動の制御を可能にするよう高品質のオーディオ入力を提供するため、デュアル・アレイ・マイクロホンを介して実装されることができる。また、オーディオ出力が増幅器／コーデック８６２からヘッドホン・ジャック８６４に与えられることができることも注意しておく。図１１の実施形態ではこうした個別的なコンポーネントとともに示しているが、本発明の範囲がこの点で限定されるものではないことを理解されたい。
【０１１９】
以下の例はさらなる実施形態に関する。ある実施形態では、装置が半導体デバイスのIPブロックとメモリ・コントローラとの間に結合されるファブリックを含み、該ファブリックは前記IPブロックからメモリ要求を受け取り、前記メモリ要求の少なくともいくつかは、そのメモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもつ。ファブリックは、少なくとも部分的には前記少なくともいくつかのメモリ要求の締め切り値に基づいて前記メモリ要求の間で調停をする。
【０１２０】
ファブリックは、前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器に提供するために選択する受容調停器を含んでいてもよい。前記メモリ・スケジューラ調停器は、複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器に結合されていてもよい。
【０１２１】
前記受容調停器は、前記複数のIPブロックのうちの第一の部分集合からの前記メモリ要求および前記複数のIPブロックのうちの第二の部分集合からの前記メモリ要求の第一の部分を受け取る第一の調停器と、前記複数のIPブロックのうちの前記第二の部分集合からの前記メモリ要求の第二の部分を受け取る第二の調停器とを含む。前記複数のIPブロックの前記第二の部分集合は、レイテンシーに敏感なデバイスを含む。前記第二の調停器はさらに、前記複数のIPブロックのうちの前記第二の部分集合から受け取られる前記メモリ要求の前記第二の部分の各メモリ要求とともに締め切り値を受け取る。
【０１２２】
ある実施形態では、前記受容調停器は、前記第二の調停器からのメモリ要求が、前記第一の調停器からのメモリ要求より優先して選択される第一のモードと、前記第二の調停器からのN個のメモリ要求が選択されたあとに、前記第一の調停器からのM個のメモリ要求が選択され、MおよびNは構成設定レジスタから得られる、第二のモードとで動作するよう制御可能である。
【０１２３】
ある実施形態では、前記受容調停器はさらに、前記第一の調停器および前記第二の調停器の出力に結合され、前記第一および第二の調停器の出力の間で調停をする第三の調停器を含む。
【０１２４】
前記メモリ・スケジューラ調停器は、少なくとも部分的に前記メモリ要求のアドレス情報に基づいておよび少なくとも部分的に前記ファブリックのスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求を順序外に並べ替えてもよい。
【０１２５】
ある実施形態では、インターフェース論理が第一のIPブロックに結合される。前記インターフェース論理は、前記第一のIPブロックの第一のメモリ要求についてのレイテンシー要求およびファブリックから前記第一のIPブロックに提供されるグローバル・タイマー値に基づいて前記締め切り値を生成する締め切り論理を含む。締め切り検査器が、前記締め切り値を前記第一のIPブロックから受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、第一の調停器または第二の調停器に経路制御するよう結合されていてもよい。
【０１２６】
ある実施形態では、資源割り当て論理が、前記複数のIPブロックのそれぞれについて前記ファブリックの複数の共有資源において仮想エントリーを予約する。この資源割り当て論理はさらに、前記複数のIPブロックのそれぞれを前記複数の共有資源のうちの所定数に制限する。前記複数の共有資源は、それぞれ書き込み要求を記憶する複数のエントリーをもつフラッシュ・プールを含み、前記資源割り当て論理は前記複数のエントリーをフラッシュ限界に制限する。前記受容調停器は、前記フラッシュ・プールのサイズが前記フラッシュ限界に等しいときには、はいってくる書き込み要求をブロックする。
【０１２７】
ある実施形態では、方法が、SoCの共有されるメモリ・ファブリックに結合された複数のデバイスのうちのあるデバイスからメモリ要求を受領する段階であって、前記メモリ要求は締め切り値に関連付けられている、段階と；前記メモリ要求を、前記締め切り値がレイテンシー閾値より小さいことに応答して前記共有されるメモリ・ファブリックの第一の調停器に転送する段階と；少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第一の複数のメモリ要求の間で前記第一の調停器内で調停を実行して前記第一の複数のメモリ要求のうちの勝者メモリ要求を前記共有されるメモリ・ファブリックの最終調停器に転送する段階と；前記最終調停器において、前記共有されるメモリ・ファブリックのスコアボード中に記憶するための最終メモリ要求を選択する最終調停を実行する段階とを含む。
【０１２８】
ある実施形態では、本方法はさらに、前記締め切り値が前記レイテンシー閾値より大きいことに応答して前記メモリ要求を第二の調停器に転送する段階と；少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第二の複数のメモリ要求の間で前記第二の調停器内で調停を実行して前記第二の複数のメモリ要求のうちの勝者メモリ要求を前記最終調停器に転送する段階とを含む。
【０１２９】
ある実施形態では、本方法はさらに、前記最終メモリ要求に関連付けられたデバイスの重み値が所定の値に等しいかどうかを判定し、もしそうであれば、前記重み値を構成設定された値に更新し、前記複数のデバイスのうちの他のデバイスについての経時値を更新することを含む。前記最終メモリ要求に関連付けられたデバイスの重み値が前記所定の値に等しくないときは、前記最終メモリ要求に関連付けられたデバイスの重み値がデクリメントされる。
【０１３０】
ある実施形態では、本方法はさらに：前記共有されるメモリ・ファブリックのメモリ・スケジューラを介して、前記スコアボードからメモリ要求を、メモリ・コントローラへの送達のために選択する段階と；選択されたメモリ要求に関連付けられたデバイスの重み値が所定の値に等しい場合、そのデバイスを前記メモリ・スケジューラ内でのさらなる調停からマスクする段階とを含む。
【０１３１】
ある実施形態では、本方法はさらに、前記複数のデバイスの各デバイスの重み値が前記所定の値に等しいかどうかを判定する段階と、もし等しければ、前記複数のデバイスの各デバイスについて前記重み値を構成設定された値に更新する段階とを含む。
【０１３２】
ある実施形態では、システム・オン・チップが、それぞれ独立に命令を実行する複数のコアと、それぞれ独立にグラフィック演算を実行する複数のグラフィック・エンジンと、第一のレイテンシー敏感デバイスに対応する第一のコンテンツ・レンダリング装置と、第二のレイテンシー敏感デバイスに対応する第二のコンテンツ・レンダリング装置と、前記複数のコア、前記複数のグラフィック・エンジン、前記第一および第二のコンテンツ・レンダリング装置およびメモリ・コントローラに結合されたファブリックとを含み、前記ファブリックは前記複数のコア、前記複数のグラフィック・エンジンおよび前記第一および第二のコンテンツ・レンダリング装置からメモリ要求を受領する。前記第一および第二のコンテンツ・レンダリング装置からのメモリ要求は、前記メモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリックは、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求の締め切り値に少なくとも部分的に基づいて前記メモリ要求の間で調停を行なう。
【０１３３】
ある実施形態では、前記ファブリックはさらに、前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器に提供するために選択する受容調停器を含み、前記メモリ・スケジューラ調停器は、複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器に結合されている。前記受容調停器は、前記複数のコアおよび前記複数のグラフィック・エンジンからの前記メモリ要求を受け取り、前記第一および第二のコンテンツ・レンダリング装置からの少なくともいくつかのメモリ要求を条件付きで受け取る第一の調停器と、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求を受け取る第二の調停器とを含んでいてもよい。前記メモリ・スケジューラ調停器は、少なくとも部分的に前記メモリ要求のアドレス情報および前記ファブリックのスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求の少なくともいくつかを順序外に並べ替えてもよい。
【０１３４】
締め切り検査器が、第一のメモリ要求に関連付けられた締め切り値を前記第一のコンテンツ・レンダリング装置から受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、前記第一の調停器または前記第二の調停器に経路制御してもよい。
【０１３５】
諸実施形態は、コードで実装されてもよく、命令を記憶している非一時的記憶媒体に記憶されてもよい。前記命令は、該命令を実行するようシステムをプログラムするために使うことができるものである。前記記憶媒体は、フロッピー（登録商標）ディスク、光ディスクを含む任意の型のディスク、半導体ドライブ（SSD）、コンパクトディスク読み出し専用メモリ（CD-ROM）、書き換え可能型コンパクトディスク（CD-RW）および光磁気ディスク、読み出し専用メモリ（ROM）、動的ランダム・アクセス・メモリ（DRAM）、静的ランダム・アクセス・メモリ（SRAM）のようなランダム・アクセス・メモリ（RAM）、消去可能なプログラム可能型読み出し専用メモリ（EPROM）、フラッシュ・メモリ、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）のような半導体デバイス、磁気もしくは光学式カードまたは電子的な命令を記憶するのに好適な他の任意の型の媒体を含みうるが、これに限られない。
【０１３６】
本発明について、限られた数の実施形態に関して記述してきたが、当業者はそれから数多くの修正および変形を理解するであろう。付属の請求項は、本発明の真の精神および範囲内にはいるようなそのようなすべての修正および変形をカバーすることが意図されている。
いくつかの態様を記載しておく。
〔態様１〕
半導体デバイスの複数の知的財産（IP）ブロックとメモリ・コントローラとの間に結合された、前記複数のIPブロックからメモリ要求を受け取るファブリック手段を有する装置であって、前記メモリ要求の少なくともいくつかは、そのメモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、少なくとも部分的には前記少なくともいくつかのメモリ要求の締め切り値に基づいて前記複数のメモリ要求の間で調停をする、
装置。
〔態様２〕
前記ファブリック手段が：
前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器手段に提供するために選択する受容調停器手段と；
複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器手段に結合されている前記メモリ・スケジューラ調停器手段とを有する、
態様１記載の装置。
〔態様３〕
前記受容調停器手段は、前記複数のIPブロックのうちの第一の部分集合からの前記メモリ要求および前記複数のIPブロックのうちの第二の部分集合からの前記メモリ要求の第一の部分を受け取る第一の調停器と、前記複数のIPブロックのうちの前記第二の部分集合からの前記メモリ要求の第二の部分を受け取る第二の調停器とを含む、態様２記載の装置。
〔態様４〕
前記複数のIPブロックの前記第二の部分集合は、レイテンシーに敏感なデバイスを含む、態様３記載の装置。
〔態様５〕
前記第二の調停器はさらに、前記複数のIPブロックのうちの前記第二の部分集合から受け取られる前記メモリ要求の前記第二の部分の各メモリ要求とともに締め切り値を受け取る、態様４記載の装置。
〔態様６〕
前記受容調停器手段は、前記第二の調停器からのメモリ要求が、前記第一の調停器からのメモリ要求より優先して選択される第一のモードと、前記第二の調停器からのN個のメモリ要求が選択されたあと前記第一の調停器からのM個のメモリ要求が選択され、MおよびNは構成設定レジスタから得られる、第二のモードとで動作するよう制御可能である、態様２記載の装置。
〔態様７〕
前記受容調停器手段はさらに、前記第一の調停器および前記第二の調停器の出力に結合され、前記第一および第二の調停器の出力の間で調停をする第三の調停器を含む、態様３記載の装置。
〔態様８〕
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記メモリ要求のアドレス情報に基づいて、前記メモリ要求を順序外に並べ替える、態様２記載の装置。
〔態様９〕
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記ファブリックのスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求を順序外に並べ替える、態様８記載の装置。
〔態様１０〕
第一のIPブロックに結合されたインターフェース手段をさらに有しており、前記インターフェース手段は、前記第一のIPブロックの第一のメモリ要求についてのレイテンシー要求および前記ファブリックから前記第一のIPブロックに提供されるグローバル・タイマー値に基づいて前記締め切り値を生成する締め切り論理を含む、態様１記載の装置。
〔態様１１〕
前記締め切り値を前記第一のIPブロックから受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、第一の調停器または第二の調停器に経路制御する締め切り検査器をさらに有する、態様８記載の装置。
〔態様１２〕
前記複数のIPブロックのそれぞれについて前記ファブリック手段の複数の共有資源において仮想エントリーを予約する資源割り当て手段をさらに有する、態様１記載の装置。
〔態様１３〕
前記資源割り当て論理がさらに、前記複数のIPブロックのそれぞれを前記複数の共有資源の所定数に制限する、態様１２記載の装置。
〔態様１４〕
前記複数の共有資源は、それぞれ書き込み要求を記憶する複数のエントリーをもつフラッシュ・プールを含み、前記資源割り当て手段は前記複数のエントリーをフラッシュ限界に制限し、前記受容調停器手段は、前記フラッシュ・プールのサイズが前記フラッシュ限界に等しいときには、はいってくる書き込み要求をブロックする、態様１２記載の装置。
〔態様１５〕
システム・オン・チップ（SoC）の共有されるメモリ・ファブリックに結合された複数のデバイスのうちのあるデバイスからメモリ要求を受領する段階であって、前記メモリ要求は締め切り値に関連付けられている、段階と；
前記メモリ要求を、前記締め切り値がレイテンシー閾値より小さいことに応答して前記共有されるメモリ・ファブリックの第一の調停器に転送する段階と；
少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第一の複数のメモリ要求の間で前記第一の調停器内で調停を実行して、前記第一の複数のメモリ要求のうちの勝者メモリ要求を前記共有されるメモリ・ファブリックの最終調停器に転送する段階と；
前記最終調停器において、前記共有されるメモリ・ファブリックのスコアボード中に記憶するための最終メモリ要求を選択する最終調停を実行する段階とを含む、
方法。
〔態様１６〕
前記締め切り値が前記レイテンシー閾値より大きいことに応答して前記メモリ要求を第二の調停器に転送する段階と；少なくとも部分的に前記複数のデバイスの経時値に基づいて前記メモリ要求を含む第二の複数のメモリ要求の間で前記第二の調停器内で調停を実行して前記第二の複数のメモリ要求のうちの勝者メモリ要求を前記最終調停器に転送する段階とを含む、態様１５記載の方法。
〔態様１７〕
前記最終メモリ要求に関連付けられたデバイスの重み値が所定の値に等しいかどうかを判定し、もしそうであれば、前記重み値を構成設定された値に更新し、前記複数のデバイスのうちの他のデバイスについての経時値を更新することをさらに含む、態様１５記載の方法。
〔態様１８〕
前記最終メモリ要求に関連付けられたデバイスの重み値が前記所定の値に等しくないときは、前記最終メモリ要求に関連付けられたデバイスの重み値をデクリメントすることをさらに含む、態様１７記載の方法。
〔態様１９〕
前記共有されるメモリ・ファブリックのメモリ・スケジューラを介して、前記スコアボードからメモリ要求を、メモリ・コントローラへの送達のために選択する段階と；
選択されたメモリ要求に関連付けられたデバイスの重み値が所定の値に等しい場合、そのデバイスを前記メモリ・スケジューラ内でのさらなる調停からマスクする段階とをさらに含む、
態様１５記載の方法。
〔態様２０〕
前記複数のデバイスの各デバイスの重み値が前記所定の値に等しいかどうかを判定する段階と、もし等しければ、前記複数のデバイスの各デバイスについて前記重み値を構成設定された値に更新する段階とをさらに含む、態様１９記載の方法。
〔態様２１〕
システム・オン・チップであって：
それぞれ独立に命令を実行する複数のコアと；
それぞれ独立にグラフィック演算を実行する複数のグラフィック・エンジンと；
第一のレイテンシー敏感デバイスに対応する第一のコンテンツ・レンダリング装置と；
第二のレイテンシー敏感デバイスに対応する第二のコンテンツ・レンダリング装置と；
前記複数のコア、前記複数のグラフィック・エンジン、前記第一および第二のコンテンツ・レンダリング装置およびメモリ・コントローラ手段に結合されたファブリック手段とを有しており、
前記ファブリック手段は前記複数のコア、前記複数のグラフィック・エンジンおよび前記第一および第二のコンテンツ・レンダリング装置からメモリ要求を受領し、前記第一および第二のコンテンツ・レンダリング装置からのメモリ要求は、前記メモリ要求の完了前の最大レイテンシーを示す関連付けられた締め切り値をもち、前記ファブリック手段は、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求の締め切り値に少なくとも部分的に基づいて前記メモリ要求の間で調停を行なう、
システム。
〔態様２２〕
前記ファブリック手段はさらに：
前記メモリ要求を受け取り、前記メモリ要求のうちの一つをメモリ・スケジューラ調停器手段に提供するために選択する受容調停器手段と；
複数のメモリ要求のうちから最初のメモリ要求を前記メモリ・コントローラに提供するために選択するよう前記受容調停器手段に結合されている前記メモリ・スケジューラ調停器手段とを有する、
態様２１記載のシステム。
〔態様２３〕
前記受容調停器手段は、前記複数のコアおよび前記複数のグラフィック・エンジンからの前記メモリ要求を受け取り、前記第一および第二のコンテンツ・レンダリング装置からの少なくともいくつかのメモリ要求を条件付きで受け取る第一の調停器と、前記第一および第二のコンテンツ・レンダリング装置からの前記メモリ要求を受け取る第二の調停器とを含んでいる、態様２２記載のシステム。
〔態様２４〕
前記メモリ・スケジューラ調停器手段は、少なくとも部分的に前記メモリ要求のアドレス情報および前記ファブリックのスコアボードのエントリー中に記憶されているメモリ要求に関連付けられたページ・ヒット状態情報に基づいて、前記メモリ要求の少なくともいくつかを順序外に並べ替える、態様２２記載のシステム。
〔態様２５〕
第一のメモリ要求に関連付けられた締め切り値を前記第一のコンテンツ・レンダリング装置から受け取り、前記第一のメモリ要求を、前記締め切り値およびグローバル・タイマーの値に基づいて、前記第一の調停器または前記第二の調停器に経路制御する締め切り検査器をさらに有する、態様２３記載のシステム。
〔態様２６〕
態様１５ないし２０のうちいずれか一項記載の方法を実行するよう構成された通信装置。
〔態様２７〕
複数の命令を含む少なくとも一つのコンピュータ可読媒体であって、前記命令は、コンピューティング装置上で実行されるのに応答して、前記コンピューティング装置に、態様１５ないし２０のうちいずれか一項記載の方法を実行させるものである、コンピュータ可読媒体。
〔態様２８〕
態様１５ないし２０のうちいずれか一項記載の方法を実行するよう構成された、命令を処理する装置。
〔態様２９〕
態様１５ないし２０のうちいずれか一項記載の方法を実行する手段を有する装置。
【図１】
0005886470.tif 000012
【図２】
0005886470.tif 000013
【図３】
0005886470.tif 000014
【図４】
0005886470.tif 000015
【図５】
0005886470.tif 000016
【図６】
0005886470.tif 000017
【図７】
0005886470.tif 000018
【図８】
0005886470.tif 000019
【図９】
0005886470.tif 000020
【図１０】
0005886470.tif 000021
【図１１】
0005886470.tif 000022