IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特開2022-151572メタデータ要求をスケジューリングするためのシステム、装置、および方法
<>
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図1
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図2
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図3
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図4
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図5
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図6
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図7
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図8
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図9
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図10
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図11
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図12A
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図12B
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図13
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図14
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図15
  • 特開-メタデータ要求をスケジューリングするためのシステム、装置、および方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022151572
(43)【公開日】2022-10-07
(54)【発明の名称】メタデータ要求をスケジューリングするためのシステム、装置、および方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20220929BHJP
   G06F 9/34 20060101ALI20220929BHJP
   G06F 9/50 20060101ALI20220929BHJP
【FI】
G06F9/48 300B
G06F9/34 350A
G06F9/48 300C
G06F9/50 120A
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021212346
(22)【出願日】2021-12-27
(31)【優先権主張番号】17/213,700
(32)【優先日】2021-03-26
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ラミヤ ジャヤラム マスティ
(72)【発明者】
【氏名】トーマス トール
(72)【発明者】
【氏名】エイドリアン シー.モガ
(72)【発明者】
【氏名】ヴィンセント フォン ボカーン
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033AA14
5B033DB00
(57)【要約】      (修正有)
【課題】メタデータ要求をスケジューリングする装置及び方法を提供する。
【解決手段】装置は、メモリ及びスケジューラを含む。スケジューラは、メモリ及びメモリコントローラに結合される。メモリは、複数のメタデータ要求を記憶する。複数のメタデータ要求の各々は、複数のメタデータ優先度レベルのうちの1つと関連付けられる。スケジューラは、メモリコントローラへの複数のメタデータ要求のうちの第1のメタデータ要求の送信を、第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル及びメモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングする。メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる。
【選択図】図4
【特許請求の範囲】
【請求項1】
複数のメタデータ要求を記憶するためのメモリであって、前記複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、メモリと、
前記メモリおよびメモリコントローラに結合されるスケジューラであって、前記スケジューラは、前記メモリコントローラへの前記複数のメタデータ要求の第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベルと、メタデータ要求帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングすることを行い、前記第1の帯域幅部分は前記第1のメタデータ優先度レベルと関連付けられる、スケジューラと
を備える装置。
【請求項2】
前記スケジューラはさらに、
前記メモリコントローラへの送信のために第1のデータトランザクション優先度レベルと関連付けられた第1のデータトランザクションを受信すること、
前記第1のデータトランザクションと関連付けられたメタデータがメタデータキャッシュにおいて利用可能であるかどうかを判断すること、および、
前記判断に基づいて前記第1のデータトランザクション優先度レベルから継承された第1のメタデータ優先度レベルを有するように前記メタデータと関連付けられた前記第1のメタデータ要求を生成すること
を行う、
請求項1に記載の装置。
【請求項3】
前記スケジューラはさらに、
第1のデータトランザクション優先度レベルと関連付けられたデータトランザクション優先度タグを含む第1のデータトランザクションを受信すること、および、
前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のデータトランザクション優先度レベルから継承されることになる、生成すること
を行う、
請求項1に記載の装置。
【請求項4】
前記スケジューラはさらに、
複数のコアのうちの第1のコアから第1のデータトランザクションを受信することであって、前記第1のコアは第1のコア優先度レベルと関連付けられる、受信すること、および、
前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のコア優先度レベルから継承されることになる、生成すること
を行う、
請求項1に記載の装置。
【請求項5】
前記メモリは、複数のメタデータ要求キューであって、前記複数のメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられる、複数のメタデータ要求キューをさらに含み、前記スケジューラはさらに、
前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、
前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、
前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすること
を行う、
請求項1に記載の装置。
【請求項6】
前記スケジューラはさらに、
前記第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別すること、
前記メタデータ要求帯域幅の前記第1の帯域幅部分と関連付けられた帯域幅可用性データを生成すること、および、
前記第1のコアが、前記帯域幅可用性データに基づいて前記装置に送信されたいくつかのデータトランザクションを管理できるように、前記帯域幅可用性データを前記第1のコアに送信すること
を行う、
請求項1に記載の装置。
【請求項7】
前記スケジューラはさらに、
前記第1のメタデータ優先度レベルと関連付けられた前記複数のメタデータ要求のうちのいくつかのメタデータ要求を帯域幅調整閾値と比較すること、および、
前記比較に基づいて前記メタデータ要求帯域幅の前記第1の帯域幅部分を動的に調整すること
を行う、
請求項1に記載の装置。
【請求項8】
前記スケジューラはさらに、
前記第1のメタデータ優先度レベルと関連付けられた前記複数のメタデータ要求のうちのいくつかのメタデータ要求がコアスロットリング閾値を超えるかどうかを判断することであって、前記第1のメタデータ優先度レベルは低優先度レベルである、判断すること、および、
前記第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別し、かつ前記判断に基づいてデータトランザクションスロットリング要求を前記第1のコアに送信すること
を行う、
請求項1に記載の装置。
【請求項9】
前記複数のメタデータ優先度レベルの各々はメタデータ優先度レベル重みと関連付けられ、前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求に前記メタデータ要求帯域幅の前記第1の帯域幅部分を割り当てることを行う、請求項1に記載の装置。
【請求項10】
前記メモリは少なくとも2つのメタデータ要求キューを含み、前記少なくとも2つのメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられ、前記スケジューラはさらに、
前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、
前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、
前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすること
を行う、
請求項1に記載の装置。
【請求項11】
前記スケジューラはさらに、
前記複数のメタデータ要求が前記第1のメタデータ優先度レベルと関連付けられた別のメタデータ要求を含むかどうかを判断すること、および、
前記判断に基づいて前記メタデータ要求帯域幅の前記第1の帯域幅部分の帯域幅を使用して前記メモリコントローラへの前記複数のメタデータ要求の第2のメタデータ要求の送信をスケジューリングすることであって、前記第2のメタデータ要求は前記複数のメタデータ優先度レベルのうちの第2のメタデータ優先度レベルを有する、スケジューリングすること
を行う、
請求項1から10のいずれか一項に記載の装置。
【請求項12】
前記スケジューラはさらに、
前記メモリコントローラへの前記複数のメタデータ要求のうちの第2のメタデータ要求の送信を、前記第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベルと、前記メタデータ要求帯域幅の第2の帯域幅部分とに少なくとも部分的に基づいてスケジューリングすることであって、前記第2の帯域幅部分は前記第2のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられ、前記メタデータ要求帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルが前記第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいて前記メタデータ要求帯域幅の前記第2の帯域幅部分未満である、スケジューリングすること
を行う、
請求項1から11のいずれか一項に記載の装置。
【請求項13】
メモリトラフィックスケジューラにおける複数のデータトランザクションを受信する段階であって、前記複数のデータトランザクションの各々は、トランザクション受信時間およびデータトランザクション優先度レベルと関連付けられる、受信する段階と、
前記メモリトラフィックスケジューラにおいて複数のメタデータ要求を生成する段階であって、前記複数のメタデータ要求の各々は、前記複数のデータトランザクションのうちの1つ、および前記複数のデータトランザクションのうちの前記1つの前記データトランザクション優先度レベルから継承された複数のメタデータ優先度レベルのうちのメタデータ優先度レベルと関連付けられる、生成する段階と、
メモリコントローラへの前記複数のメタデータ要求のうちの第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベルと、メタデータ要求帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングする段階であって、前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルと関連付けられる、スケジューリングする段階とを含む、方法。
【請求項14】
前記メモリコントローラへの第2のデータトランザクションと関連付けられた前記複数のメタデータ要求のうちの第2のメタデータ要求の送信を、前記第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベルと、前記第2のデータトランザクションと関連付けられた第2の時間の受信と、前記第2のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられた前記メタデータ要求帯域幅の第2の帯域幅部分とに少なくとも部分的に基づいてスケジューリングする段階であって、前記メタデータ要求帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルが前記第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいて、前記メタデータ要求帯域幅の前記第2の帯域幅部分未満である、スケジューリングする段階をさらに含む、請求項13に記載の方法。
【請求項15】
前記複数のメタデータ優先度レベルの各々をメタデータ優先度レベル重みと関連付ける段階と、
前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求に前記メタデータ要求帯域幅の前記第1の帯域幅部分を割り当てる段階と
をさらに含む、
請求項13に記載の方法。
【請求項16】
プロセッサに請求項13から15のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項17】
複数のコアと、
メモリコントローラと、
メタデータキャッシュと、
前記複数のコア、前記メモリコントローラ、および前記メタデータキャッシュに結合されるメモリトラフィックスケジューラであって、前記メモリトラフィックスケジューラは、
複数のメタデータ要求を記憶することであって、前記複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、記憶すること、および、
前記メモリコントローラへの前記複数のメタデータ要求のうちの第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベルと、メタデータ要求帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングすることであって、前記第1の帯域幅部分は前記第1のメタデータ優先度レベルと関連付けられる、スケジューリングすることを行うメモリトラフィックスケジューラとを備える、システム。
【請求項18】
前記メモリトラフィックスケジューラはさらに、
複数の読み取りデータトランザクションを記憶することであって、前記複数の読み取りデータトランザクションの各々は複数の読み取りデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、
前記メモリコントローラへの前記複数の読み取りデータトランザクションのうちの第1の読み取りデータトランザクションの送信を、前記第1の読み取りデータトランザクションと関連付けられた第1の読み取りデータトランザクション優先度レベルと、前記メモリコントローラへの読み取りデータトランザクションの送信に割り当てられた読み取りデータトランザクション帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングすることであって、前記読み取りデータトランザクション帯域幅の前記第1の帯域幅部分は前記第1の読み取りデータトランザクション優先度レベルと関連付けられた読み取りデータトランザクションの送信に割り当てられる、スケジューリングすること
を行う、
請求項17に記載のシステム。
【請求項19】
前記メモリトラフィックスケジューラはさらに、
複数の書き込みデータトランザクションを記憶することであって、前記複数の書き込みデータトランザクションの各々は複数の書き込みデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、
前記メモリコントローラへの前記複数の書き込みデータトランザクションのうちの書き込みデータトランザクションの送信を、第1の書き込みデータトランザクションと関連付けられた第1の書き込みデータトランザクション優先度レベルと、前記メモリコントローラへの書き込みデータトランザクションの送信に割り当てられた書き込みデータトランザクション帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングすることであって、前記書き込みデータトランザクション帯域幅の前記第1の帯域幅部分は前記第1の書き込みデータトランザクション優先度レベルと関連付けられた書き込みデータトランザクションの送信に割り当てられる、スケジューリングすること
を行う、
請求項17に記載のシステム。
【請求項20】
前記メモリトラフィックスケジューラは少なくとも2つのメタデータ要求キューを含み、前記少なくとも2つのメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられ、前記メモリトラフィックスケジューラはさらに、
前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、
前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすること
を行う、
請求項17に記載のシステム。
【請求項21】
前記メモリトラフィックスケジューラは、読み取りデータトランザクションキューおよび書き込みデータトランザクションキューを含み、前記メモリトラフィックスケジューラはさらに、
前記メモリコントローラへの前記読み取りデータトランザクションキューからの第1の読み取りデータトランザクションの送信を、前記読み取りデータトランザクションキューにおける前記第1の読み取りデータトランザクションの位置と、読み取りデータトランザクション帯域幅とに少なくとも部分的に基づいてスケジューリングすること、および、
前記メモリコントローラへの前記書き込みデータトランザクションキューからの第1の書き込みデータトランザクションの送信を、前記書き込みデータトランザクションキューにおける前記第1の書き込みデータトランザクションの位置と、書き込みデータトランザクション帯域幅とに少なくとも部分的に基づいてスケジューリングすること
を行う、
請求項20に記載のシステム。
【請求項22】
複数のメタデータ要求を記憶するためのメモリ手段であって、前記複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、メモリ手段と、
前記メモリ手段およびメモリコントローラ手段に結合されるスケジューラ手段であって、前記スケジューラ手段は、前記メモリコントローラ手段への前記複数のメタデータ要求の第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベルと、メタデータ要求帯域幅の第1の帯域幅部分とに少なくとも部分的に基づいてスケジューリングするためのものであり、前記第1の帯域幅部分は前記第1のメタデータ優先度レベルと関連付けられる、スケジューラ手段と
を含む装置。
【請求項23】
前記スケジューラ手段はさらに、
前記メモリコントローラ手段への送信のために第1のデータトランザクション優先度レベルと関連付けられた第1のデータトランザクションを受信すること、
前記第1のデータトランザクションと関連付けられたメタデータがメタデータキャッシュ手段において利用可能であるかどうかを判断すること、および、
前記判断に基づいて前記第1のデータトランザクション優先度レベルから継承された第1のメタデータ優先度レベルを有するように前記メタデータと関連付けられた前記第1のメタデータ要求を生成すること
を行うためのものである、
請求項22に記載の装置。
【請求項24】
前記スケジューラ手段はさらに、
第1のデータトランザクション優先度レベルと関連付けられたデータトランザクション優先度タグを含む第1のデータトランザクションを受信すること、および、
前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のデータトランザクション優先度レベルから継承されることになる、生成すること
を行うためのものである、
請求項22に記載の装置。
【請求項25】
前記スケジューラ手段はさらに、
複数のコアのうちの第1のコアから第1のデータトランザクションを受信することであって、前記第1のコアは第1のコア優先度レベルと関連付けられる、受信すること、および、
前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のコア優先度レベルから継承されることになる、生成すること
を行うためのものである、
請求項22から24のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態はコンピュータシステムにおけるデータ通信に関する。
【背景技術】
【0002】
コンピューティングプラットフォームは通常、複数のスレッドまたはコアを含む。異なるコアによって生成されたデータトランザクションは、しばしば異なる優先度レベルを有する。データトランザクションの例には、読み取りデータトランザクションおよび書き込みデータトランザクションが含まれる。全てのデータトランザクションはメタデータと関連付けられる。メタデータは通常、データトランザクションと関連付けられたユーザコードまたはデータに関する補助および/または二次情報を含む。メタデータの一例には、限定されるものではないが、メモリ安全タグ、アクセス許可、メモリ暗号情報、および完全性情報を含むセキュリティメタデータがある。メタデータはしばしば、メモリコントローラによってホストされるメモリの隔離された部分に記憶される。
【図面の簡単な説明】
【0003】
図1】メモリトラフィックスケジューラを含むシステムの一実施形態のブロック図表示である。
【0004】
図2】メモリトラフィックスケジューラの一実施形態のブロック図表示である。
【0005】
図3】コアからメモリトラフィックスケジューラにデータトランザクションを送信する方法の一実施形態のフローチャート図である。
【0006】
図4】メモリアクセス要求キューにメモリアクセス要求を入れる方法の一実施形態のフローチャート図である。
【0007】
図5】メモリコントローラへのメモリアクセス要求の送信をスケジューリングする方法の一実施形態のフローチャート図である。
【0008】
図6】重み付けメタデータ要求を含むメモリトランザクションスケジュールキューの一実施形態の一例の図である。
【0009】
図7】重み付けメタデータ要求を含むメモリトランザクションスケジュールキューの一実施形態の一例の図である。
【0010】
図8】コアからメモリトラフィックスケジューラへのデータトランザクションの送信を管理する方法の一実施形態のフローチャート図である。
【0011】
図9】高優先度メタデータ要求および低優先度メタデータ要求の送信のためのメタデータ帯域幅の割り当てを動的に調整する方法の一実施形態のフローチャート図である。
【0012】
図10】コアからメモリトラフィックスケジューラへのデータトランザクションの送信を管理する方法の一実施形態のフローチャート図である。
【0013】
図11】メモリコントローラに対するメタデータ要求をスケジューリングする方法の一実施形態のフローチャート図である。
【0014】
図12A】より具体的な例示のインオーダコアアーキテクチャを示すブロック図である。
図12B】より具体的な例示のインオーダコアアーキテクチャを示すブロック図である。
【0015】
図13】本発明の実施形態による、複数のコアを有し得、統合メモリコントローラを有し得、および統合グラフィックを有し得るプロセッサのブロック図である。
【0016】
図14】一実施形態による第1のより具体的で例示的なシステムのブロック図である。
【0017】
図15】一実施形態によるSoCのブロック図である。
【0018】
図16】実施形態による、ソース命令セットにおけるバイナリ命令をターゲット命令セットにおけるバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対照するブロック図である。
【発明を実施するための形態】
【0019】
コンピューティングプラットフォームにおける複数のコアのうちのあるコアが、例えば、読み取りデータトランザクションまたは書き込みデータトランザクションなどのデータトランザクションを生成するとき、データトランザクションはメタデータと関連付けられ得る。メタデータは通常、データトランザクションと関連付けられたユーザコードまたはデータに関する補助および/または二次情報を含む。メタデータは、メモリコントローラによってホストされるメモリに記憶される。
【0020】
コンピューティングプラットフォームは、メモリコントローラと関連付けられ、かつコアによって共有されるメタデータキャッシュを含み得る。メタデータキャッシュは通常、メモリコントローラの近くに位置し、メモリに記憶されたメタデータのサブセットを記憶する。ユーザコードおよび/またはデータへのアクセスがデータトランザクションと関連付けられたメタデータへのアクセスをトリガするとき、メタデータは、メモリからフェッチされ、フェッチされたメタデータはメタデータキャッシュに記憶される。メタデータキャッシュに記憶されたメタデータは、そのメタデータに対する将来の要求についてサービスを提供するのに利用可能である。
【0021】
メモリトラフィックスケジューラは、メモリコントローラに対するメモリアクセス要求のスケジューリングを管理する。メモリコントローラは、メモリアクセス要求に従ってメモリからデータを取得する。メモリアクセス要求は、読み取りデータトランザクション、書き込みデータトランザクション、およびメタデータ要求を含む。
【0022】
異なるデータトランザクションは、異なるデータトランザクション優先度レベルまたはサービス品質(QoS)クラスと関連付けられる。データトランザクションと関連付けられたメタデータは、データトランザクション優先度レベルをメタデータ優先度レベルとして継承する。コアからのデータトランザクションを受信すると、メモリトラフィックスケジューラは、データトランザクションと関連付けられたメタデータがメタデータキャッシュに存在するかどうかを確かめる。メタデータがメタデータキャッシュに存在しない場合、メモリトラフィックスケジューラは、メモリからメタデータを取得するためにメモリコントローラへの送信のためのメタデータ要求を生成する。メモリトラフィックスケジューラは、親データトランザクションと関連付けられたQoSクラスに基づいて、メタデータ要求が高優先度メタデータ要求または低優先度メタデータ要求のうちの一方であるかどうかを判断する。
【0023】
メモリトラフィックスケジューラは、メモリアクセス帯域幅とも称されるメモリ帯域幅をこれらの優先度に基づくメモリトラフィックの異なるクラスの間でパーティショニングすることによって、メモリコントローラへのメモリアクセス要求の送信をスケジューリングする。メモリアクセス帯域幅の第1の部分は読み取りデータトランザクションの送信に割り当てられ、メモリアクセス帯域幅の第2の部分は書き込みデータトランザクションの送信に割り当てられ、メモリアクセス帯域幅の第3部分はメタデータ要求の送信に割り当てられる。メタデータ要求の送信に割り当てられたメモリアクセス帯域幅の部分は、さらに、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅に分割される。高優先度メタデータ帯域幅は高優先度メタデータ要求の送信に割り当てられ、低優先度メタデータ帯域幅は低優先度メタデータ要求の送信に割り当てられる。低優先度メタデータ帯域幅は高優先度メタデータ帯域幅未満である。
【0024】
メモリトラフィックスケジューラは、高優先度メタデータ帯域幅、および高優先度メタデータ要求がメモリトラフィックスケジューラに到達する順序に基づいて高優先度メタデータ要求の送信をスケジューリングし、かつ、低優先度メタデータ帯域幅、および低優先度メタデータ要求がメモリトラフィックスケジューラに到達する順序に基づいて低優先度メタデータ要求の送信をスケジューリングする。
【0025】
図1を参照すると、メモリトラフィックスケジューラ106を含むシステム100の一実施形態のブロック図表示が示されている。システム100は、例えば、サーバコンピュータ、デスクトップコンピュータ、またはラップトップコンピュータの少なくとも一部分であり得る。システム100は、少なくとも1つのコア102、データキャッシュ104、メモリトラフィックスケジューラ106、メタデータキャッシュ108、メモリコントローラ110、およびメモリ112を含む。システム100は、システム100の動作を容易にする追加的な構成要素を含み得る。システム100の1つの構成が示されるが、代替的な実施形態はメモリトラフィックスケジューラ106を含むシステムの代替的構成を含み得る。
【0026】
コア102によって実行され得る他の機能の中で、コア102の各々はデータトランザクションを生成するように構成される。データトランザクションの例には、読み取りデータトランザクションおよび書き込みデータトランザクションが含まれる。一実施形態では、コア102の各々は、データトランザクション優先度タグを含むデータトランザクションを生成するように構成される。データトランザクションと関連付けられたデータトランザクション優先度タグは、そのデータトランザクションのデータトランザクション優先度レベルを定義する。一実施形態では、データトランザクション優先度レベルは、高いデータトランザクション優先度レベルおよび低いデータトランザクション優先度レベルを含む。代替的な実施形態では、データトランザクション優先度レベルは追加のデータトランザクション優先度レベルを含み得る。
【0027】
一実施形態では、コア102の各々は、特定のデータトランザクション優先度レベルを有するデータトランザクションを生成するように構成される。コア102の各々のコア識別子は、特定のデータトランザクション優先度レベルと関連付けられる。一実施形態では、システム100は2つのコア102を含み得、ここで、2つのコア102のうちの第1のものは高いデータトランザクション優先度レベルを有するデータトランザクションを生成するように構成され、2つのコア102のうちの第2のものは低いデータトランザクション優先度レベルを有するデータトランザクションを生成するように構成される。第1のコア102のコア識別子は高いデータトランザクション優先度レベルを有するデータトランザクションと関連付けられ、第2のコア102の第2のコア識別子は低いデータトランザクション優先度レベルを有するデータトランザクションと関連付けられる。2つのコア102および2つのデータトランザクション優先度レベルを含む一実施形態について記載されているが、代替的な実施形態は、2つ以上のコアおよび2つ以上のデータトランザクション優先度レベルを含み得る。
【0028】
1つまたは複数のコア102はデータキャッシュ104に通信可能に結合される。データキャッシュ104はメモリ112に記憶されたデータのサブセットを記憶する。コア102がデータの読み取りデータトランザクションを生成するとき、データはメモリ112からフェッチされる。フェッチされたデータは、データキャッシュ104に記憶され、かつコア102のうちの1つによって生成された将来の読み取りデータトランザクションにおけるデータに対する将来の要求に利用可能である。
【0029】
メモリトラフィックスケジューラ106は1つまたは複数のコア102に通信可能に結合される。一実施形態では、メモリトラフィックスケジューラ106は、1つまたは複数のコア102にデータキャッシュ104を介して通信可能に結合される。メモリトラフィックスケジューラ106は、メモリコントローラ110およびメタデータキャッシュ108に通信可能に結合される。メモリコントローラ110はメモリ112に通信可能に結合される。メモリ112はメモリコントローラ110によってホストされる。
【0030】
一実施形態では、各々の読み取りデータトランザクションはメタデータと関連付けられる。一実施形態では、読み取りデータトランザクションのいくつかはメタデータと関連付けられる。一実施形態では、各々の書き込みデータトランザクションはメタデータと関連付けられる。一実施形態では、書き込みデータトランザクションのいくつかは、メタデータと関連付けられる。一実施形態では、読み取りデータトランザクションおよび書き込みデータトランザクションを含む各々のデータトランザクションは、メタデータと関連付けられる。一実施形態では、データトランザクションのいくつかはメタデータと関連付けられる。メタデータは、データトランザクションと関連付けられたユーザコードまたはデータに関する補助および/または二次情報を含む。メタデータの一例には、限定されるものではないが、メモリ安全タグ、アクセス許可、メモリ暗号情報、および完全性情報を含むセキュリティメタデータがある。一実施形態では、メタデータは、メモリ112の隔離された部分に記憶される。
【0031】
メタデータキャッシュ108は、メモリ112に記憶されたメタデータのサブセットを記憶するように構成される。一実施形態では、メタデータキャッシュ108は、メモリトラフィックスケジューラ106の近くに配置される。一実施形態では、メタデータキャッシュ108はメモリコントローラ110の近くに配置される。メタデータキャッシュ108はコア102によって共有される。ユーザコードおよび/またはデータへのアクセスがデータトランザクションと関連付けられたメタデータへのアクセスをトリガするとき、メモリトラフィックスケジューラ106は、メモリコントローラ112へのメタデータ要求送信をスケジューリングするように構成される。メモリコントローラ110はメモリ112からメタデータをフェッチするように構成される。フェッチされたメタデータは、メタデータキャッシュ108に記憶され、かつそのメタデータに対する将来の要求をサービスするのに利用可能である。
【0032】
メモリトラフィックスケジューラ106は、メモリコントローラ110への送信に対するメモリアクセス要求をスケジューリングするように構成される。メモリアクセス要求は、読み取りデータトランザクション、書き込みデータトランザクション、およびメタデータ要求を含む。メモリトラフィックスケジューラ106は、メモリ要求アクセス帯域幅とも称されるメモリ帯域幅をメモリトラフィックの異なるクラスの間でパーティショニングすることによって、メモリアクセス要求をメモリコントローラ110に送信するように構成される。例えば、メモリ要求アクセス帯域幅は、読み取りデータトランザクション帯域幅、書き込みデータトランザクション帯域幅、およびメタデータ帯域幅を含む。メモリトラフィックスケジューラ106は、読み取りデータトランザクションの送信には読み取りデータトランザクション帯域幅を、書き込みデータトランザクションの送信には書き込みデータトランザクション帯域幅を、メタデータ要求の送信にはメタデータ帯域幅を割り当てるように構成される。一実施形態では、メモリトラフィックスケジューラ106は、書き込みデータトランザクションがメモリトラフィックスケジューラ106で受信された順序で書き込みデータトランザクション帯域幅による書き込みデータトランザクションの送信をスケジューリングするように、かつ、読み取りデータトランザクションがメモリトラフィックスケジューラ106で受信された順序で読み取りデータトランザクション帯域幅による読み取りデータトランザクションの送信をスケジューリングするように構成される。
【0033】
メタデータ帯域幅は、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅を含む。一実施形態では、メタデータ帯域幅は、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅にパーティショニングされる。メモリトラフィックスケジューラ106は、高優先度メタデータ要求の送信には高優先度メタデータ帯域幅を、低優先度メタデータ要求の送信には低優先度メタデータ帯域幅を割り当てるように構成される。低優先度メタデータ帯域幅は通常、高優先度メタデータ帯域幅未満である。一実施形態では、メモリトラフィックスケジューラ106は、高優先度メタデータ帯域幅、および高優先度メタデータ要求がメモリトラフィックスケジューラ106で受信された順序に基づいて高優先度メタデータ要求の送信をスケジューリングするように、かつ、低優先度メタデータ帯域幅、および低優先度メタデータ要求がメモリトラフィックスケジューラ106で受信された順序に基づいて低優先度メタデータ要求の送信をスケジューリングするように構成される。
【0034】
一実施形態では、高優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分、および低優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分は、ユーザによって定義される。一実施形態では、高優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分と、低優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分は、高優先度メタデータ要求であるメタデータ要求の部分、および低優先度メタデータ要求であるメタデータ要求の部分に基づいて動的に調整される。一実施形態では、高優先度メタデータ要求の各々は高優先度サブレベルと関連付けられ得、低優先度メタデータ要求の各々は低優先度サブレベルと関連付けられ得る。高優先度メタデータの高帯域幅は、複数の高優先度サブレベルメタデータ帯域幅にパーティショニングされ得、この場合、高優先度サブレベルメタデータ帯域幅の各々は、同じ関連付けられたメタデータ高優先度サブレベルと関連付けられたメタデータ要求の送信に割り当てられる。同様に、低優先度メタデータの高帯域幅は、複数の低優先度サブレベルメタデータ帯域幅にパーティショニングされ得、この場合、低優先度サブレベルメタデータ帯域幅の各々は、同じ関連付けられたメタデータ低優先度サブレベルと関連付けられたメタデータ要求の送信に割り当てられる。代替的な実施形態では、メタデータ帯域幅は、2つ以上のメタデータ優先度レベル帯域幅を含み得、この場合、メタデータ優先帯域幅の各々は、特定のメタデータ優先度レベルを有するメタデータ要求の送信に割り当てられる。
【0035】
一実施形態では、読み取りデータトランザクション帯域幅は、高優先度読み取りデータトランザクション帯域幅および低優先度読み取りデータトランザクション帯域幅を含む。一実施形態では、読み取りデータトランザクション帯域幅は、高優先度読み取りデータトランザクション帯域幅および低優先度読み取りデータトランザクション帯域幅にパーティショニングされる。メモリトラフィックスケジューラ106は、高優先度読み取りデータトランザクションの送信には高優先度読み取りデータトランザクション帯域幅を、低優先度読み取りデータトランザクションの送信には低優先度読み取りデータトランザクション帯域幅を割り当てるように構成される。低優先度読み取りデータトランザクション帯域幅は通常、高優先度読み取りデータトランザクション帯域幅未満である。一実施形態では、メモリトラフィックスケジューラ106は、高優先度読み取りデータトランザクション帯域幅、および高優先度読み取りデータトランザクションがメモリトラフィックスケジューラ106で受信された順序に基づいて高優先度読み取りデータトランザクションの送信をスケジューリングするように、かつ、低優先度読み取りデータトランザクション帯域幅、および低優先度読み取りデータトランザクションがメモリトラフィックスケジューラ106で受信された順序に基づいて低優先度読み取りデータトランザクションの送信をスケジューリングするように構成される。
【0036】
一実施形態では、高優先度読み取りデータトランザクション帯域幅として指定された読み取りデータトランザクション帯域幅の部分、および、低優先度読み取りデータトランザクション帯域幅として指定された読み取りデータトランザクション帯域幅の部分は、ユーザによって定義される。一実施形態では、高優先度読み取りデータトランザクション帯域幅として指定された読み取りデータトランザクション帯域幅の部分と、低優先度読み取りデータトランザクション帯域幅として指定された読み取りデータトランザクション帯域幅の部分は、高優先度読み取りデータトランザクションである読み取りデータトランザクションの部分、および低優先度読み取りデータトランザクションである読み取りデータトランザクションの部分に基づいて動的に調整される。代替的な実施形態では、読み取りデータトランザクション帯域幅は2つ以上の読み取りデータトランザクション優先度レベル帯域幅を含み得、この場合、読み取りデータトランザクション優先帯域幅の各々は、特定の読み取りデータトランザクション優先度レベルを有する読み取りデータトランザクションの送信に割り当てられる。
【0037】
一実施形態では、書き込みデータトランザクション帯域幅は、高優先度書き込みデータトランザクション帯域幅および低優先度書き込みデータトランザクション帯域幅を含む。一実施形態では、書き込みデータトランザクション帯域幅は、高優先度書き込みデータトランザクション帯域幅および低優先度書き込みデータトランザクション帯域幅にパーティショニングされる。メモリトラフィックスケジューラ106は、高優先度書き込みデータトランザクションの送信には高優先度書き込みデータトランザクション帯域幅を、低優先度書き込みデータトランザクションの送信には低優先度書き込みデータトランザクション帯域幅を割り当てるように構成される。低優先度書き込みデータトランザクション帯域幅は通常、高優先度書き込みデータトランザクション帯域幅未満である。一実施形態では、メモリトラフィックスケジューラ106は、高優先度書き込みデータトランザクション帯域幅、および高優先度書き込みデータトランザクションがメモリトラフィックスケジューラ106で受信された順序に基づいて、高優先度書き込みデータトランザクションの送信をスケジューリングするように、かつ、低優先度書き込みデータトランザクション帯域幅、および低優先度書き込みデータトランザクションがメモリトラフィックスケジューラ106で受信された順序に基づいて低優先度書き込みデータトランザクションの送信をスケジューリングするように構成される。
【0038】
一実施形態では、高優先度書き込みデータトランザクション帯域幅として指定された書き込みデータトランザクション帯域幅の部分、および、低優先度書き込みデータトランザクション帯域幅として指定された書き込みデータトランザクション帯域幅の部分は、ユーザによって定義される。一実施形態では、高優先度書き込みデータトランザクション帯域幅として指定される書き込みデータトランザクション帯域幅の部分と、低優先度書き込みデータトランザクション帯域幅として指定される書き込みデータトランザクション帯域幅の部分は、高優先度書き込みデータトランザクションである書き込みデータトランザクションの部分、および低優先度書き込みデータトランザクションである書き込みデータトランザクションの部分に基づいて動的に調整される。代替的な実施形態では、書き込みデータトランザクション帯域幅は2つ以上の書き込みデータトランザクション優先度レベル帯域幅を含み得、この場合、書き込みデータトランザクション優先帯域幅の各々は、特定の書き込データトランザクション優先度レベルを有する書き込みデータトランザクションの送信に割り当てられる。
【0039】
メモリトラフィックスケジューラ106からメモリ要求を受信すると、メモリコントローラ110は、メモリ112からメモリ要求において要求されたデータを取得する。
【0040】
図2を参照すると、メモリトラフィックスケジューラ106の一実施形態のブロック図表示が示されている。メモリトラフィックスケジューラ106は、スケジューラメモリ202に通信可能に結合されるスケジューラ200を含む。メモリトラフィックスケジューラ106は、メモリトラフィックスケジューラ106の動作を容易にする追加的な構成要素を含み得る。スケジューラ200は、メモリコントローラ110へのメモリアクセス要求の送信をスケジューリングする。メモリアクセス要求は、読み取りデータトランザクション、書き込みデータトランザクション、およびメタデータ要求を含む。一実施形態では、メタデータ要求は、高優先度メタデータ要求および低優先度メタデータ要求を含む。代替的な実施形態では、メタデータ要求は、追加ののメタデータ優先度レベルと関連付けられたメタデータ要求を含み得る。
【0041】
一実施形態では、スケジューラメモリ202は、複数のメモリアクセス要求キューを含む。一実施形態では、スケジューラメモリ202におけるメモリアクセス要求キューは、読み取りデータトランザクションキュー204、書き込みデータトランザクションキュー206、高優先度メタデータ要求キュー208、および低優先度メタデータ要求キュー210を含む。一実施形態では、読み取りデータトランザクションキュー204、書き込みデータトランザクションキュー206、高優先度メタデータ要求キュー208、および低優先度メタデータ要求キュー210は、先入れ先出し方式(FIFO)のキューである。代替的な実施形態では、スケジューラメモリ202は追加のメタデータ要求キューを含み得、このメタデータ要求キューの各々は、追加のメタデータ優先度レベルを有するメタデータ要求と関連付けられる。
【0042】
コア102から読み取りデータトランザクションを受信すると、スケジューラ200は読み取りデータトランザクションを読み取りデータトランザクションキュー204に入れるように構成される。コア102から書き込みデータトランザクションを受信すると、スケジューラ200は書き込みデータトランザクションを書き込みデータトランザクションキュー206に入れるように構成される。受信されたデータトランザクションと関連付けられたメタデータがあり、かつ、このメタデータがメタデータキャッシュ108において利用可能ではないとスケジューラ200が判断した場合、スケジューラ200は、データトランザクションと関連付けられたメタデータが高優先度メタデータであるか、または低優先度メタデータであるかを判断するように構成される。メタデータが高優先度メタデータであると判断すると、スケジューラ200は、高優先度メタデータに対する高優先度メタデータ要求を生成し、かつ高優先度メタデータ要求を高優先度メタデータ要求キュー208に入れるように構成される。メタデータが低優先度メタデータであると判断すると、スケジューラ200は、低優先度メタデータに対する低優先度メタデータ要求を生成し、かつ低優先度メタデータ要求を低優先度メタデータ要求キュー210に入れるように構成される。
【0043】
スケジューラ200は、読み取りデータトランザクション帯域幅、および読み取りデータトランザクションキュー204における読み取りデータトランザクションの位置に基づいて、個々の読み取りデータトランザクションの送信をスケジューリングする。スケジューラ200は、書き込みデータトランザクション帯域幅、および書き込みデータトランザクションキュー206における書き込みデータトランザクションの位置に基づいて、個々の書き込みデータトランザクションの送信をスケジューリングする。スケジューラ200は、高優先度メタデータ帯域幅、および高優先度メタデータ要求キュー208における高優先度メタデータ要求の位置に基づいて、個々の高優先度メタデータ要求の送信をスケジューリングする。スケジューラ200は、低優先度メタデータ帯域幅、および低優先度メタデータ要求キュー210における低優先度メタデータ要求の位置に基づいて、個々の低優先度メタデータ要求の送信をスケジューリングする。低優先度メタデータ帯域幅は通常、高優先度メタデータ帯域幅より低い。
【0044】
一実施形態では、スケジューラ200は、メモリアクセス要求が関連付けられたメモリアクセス要求キューからプルされると該メモリアクセス要求をメモリコントローラ110に送信するように構成される。一実施形態では、スケジューラメモリ202は、メタデータトランザクションスケジュールキュー212を含む。スケジューラ202は、メモリアクセス要求がスケジューリングされると、スケジューリングされたメモリアクセス要求をメタデータトランザクションスケジュールキュー212に入れるように構成される。
【0045】
一実施形態では、スケジューラメモリは、2つ以上の高優先度サブレベルメタデータキューおよび2つ以上の低優先度サブレベルメタデータキューを含み得る。高優先度メタデータ要求の各々は高優先度サブレベルと関連付けられ得、低優先度メタデータ要求の各々は低優先度サブレベルと関連付けられ得る。特定の高優先度サブレベルと関連付けられた高優先度メタデータ要求は、同じ特定の高優先度サブレベルと関連付けられた高優先度サブレベルメタデータキューに入れられる。同様に、特定の低優先度サブレベルと関連付けられた低優先度メタデータ要求は、同じ特定の低優先度サブレベルと関連付けられた低優先度サブレベルメタデータキューに入れられる。
【0046】
一実施形態では、スケジューラメモリは、高優先度読み取りデータトランザクションキューおよび低優先度読み取りデータトランザクションキューを含み得る。コアから読み取りデータトランザクションを受信すると、スケジューラは、読み取りデータトランザクションが高優先度読み取りデータトランザクションであるか、または低優先度読み取りデータトランザクションであるかを判断するように構成される。読み取りデータトランザクションが高優先度読み取りデータトランザクションであると判断すると、スケジューラは、高優先度読み取りデータトランザクションを高優先度読み取りデータトランザクションキューに入れるように構成される。読み取りデータトランザクションが低優先度読み取りデータトランザクションであると判断すると、スケジューラは、低優先度読み取りデータトランザクションを低優先度読み取りデータトランザクションキューに入れるように構成される。
【0047】
一実施形態では、スケジューラメモリは、高優先度書き込みデータトランザクションキューおよび低優先度書き込みデータトランザクションキューを含み得る。コアから書き込みデータトランザクションを受信すると、スケジューラは、書き込みデータトランザクションが高優先度書き込みデータトランザクションであるか、または低優先度書き込みデータトランザクションであるかを判断するように構成される。書き込みデータトランザクションが高優先度書き込みデータトランザクションであると判断すると、スケジューラは、高優先度書き込みデータトランザクションを高優先度書き込みデータトランザクションキューに入れるように構成される。書き込みデータトランザクションが低優先度書き込みデータトランザクションであると判断すると、スケジューラは、低優先度書き込みデータトランザクションを低優先度書き込みデータトランザクションキューに入れるように構成される。
【0048】
図3を参照すると、データトランザクションをコア102からメモリトラフィックスケジューラ106に送信する方法300の一実施形態のフローチャート図が示されている。方法300は、コア102がデータトランザクションを生成するときに実行される。方法300は、システム100の追加的な構成要素と組み合わせてコア102によって実行され得る。方法300は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0049】
302では、コア102はデータトランザクションを生成する。304では、コア102は、データトランザクションと関連付けられたデータがデータキャッシュ104に存在するかどうかを判断する。データトランザクションと関連付けられたデータがデータキャッシュ104に存在するとコア102が判断した場合、306において、コア102はデータキャッシュ104からデータを取得する。データトランザクションと関連付けられたデータがデータキャッシュ104に存在しないとコア102が判断した場合、308において、コア102はデータトランザクションをメモリトラフィックスケジューラ106に送信する。方法300が図3において高水準で示され、かつ方法300における多くの変形およびこの代替が可能であることを理解されたい。
【0050】
図4を参照すると、メモリアクセス要求をメモリアクセス要求キューに入れる方法400の一実施形態のフローチャート図が示されている。メモリトラフィックスケジューラ106がコア102からデータトランザクションを受信するときに方法400が実行される。方法400は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法400は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0051】
402では、メモリトラフィックスケジューラ106はデータトランザクションを受信する。404では、メモリトラフィックスケジューラ106は、データトランザクションが読み取りデータトランザクションであるかどうかを判断する。データトランザクションが読み取りデータトランザクションではないとメモリトラフィックスケジューラ106が判断した場合、406において、メモリトラフィックスケジューラ106は、データトランザクションが書き込みデータトランザクションであると判断し、かつ書き込みデータトランザクションを書き込みデータトランザクションキューに入れる。データトランザクションが読み取りデータトランザクションであるとメモリトラフィックスケジューラ106が判断した場合、408において、メモリトラフィックスケジューラ106は、読み取りデータトランザクションを読み取りデータトランザクションキュー204に入れる。
【0052】
410では、メモリトラフィックスケジューラ106は、データトランザクションと関連付けられたメタデータがメタデータキャッシュ108に存在するかどうかを判断する。一実施形態では、メモリトラフィックスケジューラ106は、データトランザクションと関連付けられたメタデータが、データトランザクションが読み取りデータトランザクションである場合にのみ、メタデータキャッシュ108に存在するかどうかを判断する。一実施形態では、メモリトラフィックスケジューラ106は、データトランザクションと関連付けられたメタデータが、データトランザクションが書き込みデータトランザクションである場合にのみ、メタデータキャッシュ108に存在するかどうかを判断する。一実施形態では、メモリトラフィックスケジューラ106は、データトランザクションと関連付けられたメタデータが、読み取りデータトランザクションおよび書き込みデータトランザクションのメタデータキャッシュ108に存在するかどうかを判断する。
【0053】
データトランザクションと関連付けられたメタデータがメタデータキャッシュ108に存在するとメモリトラフィックスケジューラ106が判断した場合、412において、メモリトラフィックスケジューラ106はメタデータキャッシュ108からメタデータを取得する。データトランザクションと関連付けられたメタデータがメタデータキャッシュ108に存在しないとメモリトラフィックスケジューラ106が判断した場合、414において、メモリトラフィックスケジューラ106はメタデータに対するメタデータ要求を生成する。
【0054】
メモリトラフィックスケジューラ106は、416において、メタデータ要求に対するメタデータ優先度レベルを識別する。一実施形態では、データトランザクションはデータトランザクション優先度タグを含む。データトランザクション優先度タグは、データトランザクションのデータトランザクション優先度レベルを定義する。一実施形態では、データトランザクション優先度レベルは、高いデータトランザクション優先度レベルおよび低いデータトランザクション優先度レベルを含む。代替的な実施形態では、データトランザクション優先度レベルは追加のデータトランザクション優先度レベルを含み得る。メタデータ要求に対するメタデータ優先度レベルは、関連付けられたデータトランザクションのデータトランザクション優先度レベルから継承される。メモリトラフィックスケジューラ106は、416において、データトランザクションと関連付けられたデータトランザクション優先度レベルとして、メタデータ要求に対するメタデータ優先度レベルを識別する。
【0055】
一実施形態では、データトランザクションは、データトランザクションを生成したコア102と関連付けられたコア識別子を含む。各々のコア102は、特定のデータトランザクション優先度レベルを有するデータトランザクションを生成するように構成される。コア102のコア識別子は、特定のデータトランザクション優先度レベルと関連付けられる。一実施形態では、データトランザクション優先度レベルは、高いデータトランザクション優先度レベルおよび低いデータトランザクション優先度レベルを含む。代替的な実施形態では、データトランザクション優先度レベルは追加ののデータトランザクション優先度レベルを含み得る。メタデータ要求に対するメタデータ優先度レベルは、関連付けられたデータトランザクションのデータトランザクション優先度レベルから継承される。メモリトラフィックスケジューラ106は、データトランザクションにおけるコア識別子にに基づいてデータトランザクションに対するデータトランザクション優先度レベルを識別する。メモリトラフィックスケジューラ106は、416において、データトランザクションと関連付けられたデータトランザクション優先度レベルとしてメタデータ要求に対するメタデータ優先度レベルを識別する。
【0056】
418では、メモリトラフィックスケジューラ106は、メタデータ要求に対する識別されたメタデータ優先度レベルと関連付けられたメタデータ要求キューにメタデータ要求を入れる。メモリトラフィックスケジューラ106が高いメタデータ優先度レベルとしてメタデータ要求に対するメタデータ優先度レベルを識別した場合、メタデータ要求は高優先度メタデータ要求であり、メモリトラフィックスケジューラ106は高優先度メタデータ要求を高優先度メタデータ要求キュー208に入れる。メモリトラフィックスケジューラ106が低いメタデータ優先度レベルとしてメタデータ要求に対するメタデータ優先度レベルを識別した場合、メタデータ要求は低優先度メタデータ要求であり、メモリトラフィックスケジューラ106は低優先度メタデータ要求を低優先度メタデータ要求キュー210に入れる。
【0057】
方法400が図4において高水準で示され、かつ方法400における多くの変形およびこの代替が可能であることを理解されたい。
【0058】
図5を参照すると、メモリコントローラ110へのメモリアクセス要求の送信をスケジューリングする方法500の一実施形態のフローチャート図が示されている。方法500は、メモリトラフィックスケジューラ106がメモリコントローラ110へのメモリアクセス要求の送信をスケジューリングするときにメモリトラフィックスケジューラ106によって実行される。メモリアクセス要求は、読み取りデータトランザクション、書き込みデータトランザクション、およびメタデータ要求を含む。方法500は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法500は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0059】
502では、メモリトラフィックスケジューラ106は、書き込みデータトランザクションキュー206からの書き込みデータトランザクションの送信をスケジューリングする。メモリトラフィックスケジューラ106は、メモリアクセス要求帯域幅をパーティショニングすることによって、メモリアクセス要求をメモリコントローラ110に送信するように構成される。メモリアクセス要求帯域幅は、読み取りデータトランザクション帯域幅、書き込みデータトランザクション帯域幅、およびメタデータ帯域幅を含む。メモリトラフィックスケジューラ106は、書き込みデータトランザクション帯域幅を書き込みデータトランザクションの送信に割り当てるように構成される。一実施形態では、書き込みデータトランザクション帯域幅はメモリアクセス要求帯域幅の3分の1である。メモリトラフィックスケジューラ106は、書き込みデータトランザクション帯域幅、および、書き込みデータトランザクションキュー206における書き込みデータトランザクションの位置に基づいて、書き込みデータトランザクションの送信をスケジューリングする。一実施形態では、書き込みデータトランザクションキュー206はFIFOキューである。書き込みデータトランザクションキュー206としてFIFOキューを使用することによって、メモリトラフィックスケジューラ106は、書き込みデータトランザクションがメモリトラフィックスケジューラ106で受信された順序で書き込みデータトランザクションの送信をスケジューリングすることが可能になる。
【0060】
504では、メモリトラフィックスケジューラ106は、読み取りデータトランザクションキュー204からの読み取りデータトランザクションの送信をスケジューリングする。メモリトラフィックスケジューラ106は、読み取りデータトランザクション帯域幅を読み取りデータトランザクションの送信に割り当てるように構成される。一実施形態では、読み取りデータトランザクション帯域幅はメモリアクセス要求帯域幅の3分の1である。メモリトラフィックスケジューラ106は、読み取りデータトランザクション帯域幅、および、読み取りデータトランザクションキュー204における読み取りデータトランザクションの位置に基づいて、読み取りデータトランザクションの送信をスケジューリングする。一実施形態では、読み取りデータトランザクションキュー204はFIFOキューである。読み取りデータトランザクションキュー204としてFIFOキューを使用することによって、メモリトラフィックスケジューラ106は、読み取りデータトランザクションがメモリトラフィックスケジューラ106で受信された順序で読み取りデータトランザクションの送信をスケジューリングすることが可能になる。
【0061】
506では、メモリトラフィックスケジューラ106は、高優先度メタデータ要求キュー208からスケジューリングされた連続番号のメタデータ要求が低優先度メタデータ重みに等しいかどうかを判断する。一実施形態では、低優先度メタデータ要求は低優先度メタデータ重みが割り当てられる。一実施形態では、低優先度メタデータ重みがユーザによって提供される。低優先度メタデータ重みは、メモリトラフィックスケジューラ106が、メモリコントローラ110への低優先度メタデータ要求の送信をスケジューリングする前に、メモリコントローラ110への送信をスケジューリングする連続番号の高優先度メタデータ要求を定義する。
【0062】
高優先度メタデータ要求キュー208からスケジューリングされた連続番号のメタデータ要求が低優先度メタデータ重みに等しくないとメモリトラフィックスケジューラ106が判断した場合、508において、メモリトラフィックスケジューラ106は、高優先度メタデータ要求キュー208からの高優先度メタデータ要求の送信をスケジューリングする。メモリトラフィックスケジューラ106は、メタデータ要求の送信にメタデータ帯域幅を割り当てるように構成される。メタデータ帯域幅は、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅を含む。低優先度メタデータ重みは、高優先度メタデータ帯域幅としてメタデータ帯域幅の部分の割り当てを、および、低優先度メタデータ帯域幅としてメタデータ帯域幅の部分の割り当てを定義する。メモリトラフィックスケジューラ106は、高優先度メタデータ要求の送信に高優先度メタデータ帯域幅を割り当てるように構成される。メモリトラフィックスケジューラ106は、低優先度メタデータ重みによって定義されるような高優先度メタデータ帯域幅、および、高優先度メタデータ要求キュー208における高優先度メタデータ要求の位置に基づいて、高優先度メタデータ要求の送信をスケジューリングする。一実施形態では、高優先度メタデータ要求キュー208はFIFOキューである。高優先度メタデータ要求キュー208としてFIFOキューを使用することによって、メモリトラフィックスケジューラ106は、高優先度メタデータ要求がメモリトラフィックスケジューラ106で生成された順序で高優先度メタデータ要求の送信をスケジューリングすることが可能になる。
【0063】
方法500はさらにまた、メモリトラフィックスケジューラ106が書き込みデータトランザクションキュー206から次の書き込みデータトランザクションの送信をスケジューリングすることにより、ラウンドロビン方式を実施する502に戻る。ラウンドロビン方式は、書き込みデータトランザクション、その後に読み取りデータトランザクション、その後にメタデータ要求を送信するスケジューリングを含む。書き込みデータトランザクション、読み取りデータトランザクション、およびメタデータ要求の送信をスケジューリングする特定の順序が記載されているが、代替的な実施形態では、書き込みデータトランザクション、読み取りデータトランザクション、およびメタデータ要求の送信を異なる順序でスケジューリングし得る。
【0064】
高優先度メタデータ要求キュー208からスケジューリングされた連続番号のメタデータ要求が低優先度メタデータ重みに等しいとメモリトラフィックスケジューラ106が判断した場合、メモリトラフィックスケジューラ106は、低優先度メタデータ要求キュー210からの低優先度メタデータ要求の送信をスケジューリングする。上述されるように、低優先度メタデータ重みは、高優先度メタデータ帯域幅としてのメタデータ帯域幅の部分の割り当て、および、低優先度メタデータ帯域幅としてのメタデータ帯域幅の部分の割り当てを定義する。メモリトラフィックスケジューラ106は、低優先度メタデータ帯域幅を低優先度メタデータ要求の送信に割り当てるように構成される。メモリトラフィックスケジューラ106は、低優先度メタデータ重みによって定義されるような低優先度メタデータ帯域幅、および低優先度メタデータ要求キュー210における低優先度メタデータ要求の位置に基づいて、低優先度メタデータ要求の送信をスケジューリングする。一実施形態では、低優先度メタデータ要求キュー210はFIFOキューである。低優先度メタデータ要求キュー210としてFIFOキューを使用することによって、メモリトラフィックスケジューラ106は、低優先度メタデータ要求がメモリトラフィックスケジューラ106で生成された順序で低優先度メタデータ要求の送信をスケジューリングすることが可能になる。方法500は次いで、メモリトラフィックスケジューラ106が書き込みデータトランザクションキュー206における次の書き込みデータトランザクションの送信をスケジューリングする502に戻る。
【0065】
方法500が図5において高水準で示されており、かつ方法500における多くの変形およびこの代替が可能であることは、理解されたい。
【0066】
図6を参照すると、重み付けメタデータ要求を含むメモリトランザクションスケジュールキュー212の一実施形態の一例600が示されている。メモリトラフィックスケジューラ106は、各々の個々のメモリアクセス要求がスケジューリングされると、スケジューリングされたメモリアクセス要求をメタデータトランザクションスケジュールキュー212に入れるように構成される。メモリアクセス要求は、書き込みデータトランザクションW、読み取りデータトランザクションR、高優先度メタデータ要求MH、および低優先度メタデータ要求MLを含む。各々のサイクル1-18はメモリアクセス要求送信サイクルを表す。メモリアクセス要求帯域幅は3つの等しい帯域幅に分割される。3つの等しい帯域幅は、書き込みデータトランザクション帯域幅、読み取りデータトランザクション帯域幅、およびメタデータ帯域幅である。
【0067】
メモリトラフィックスケジューラ106は、書き込みデータトランザクション帯域幅、および書き込みデータトランザクションキュー206における書き込みデータトランザクションWの位置に基づいて個々の書き込みデータトランザクションWの送信をスケジューリングし、かつ、読み取りデータトランザクション帯域幅、および読み取りデータトランザクションキュー204における読み取りデータトランザクションRの位置に基づいて個々の読み取りデータトランザクションRの送信をスケジューリングする。メモリトラフィックスケジューラ106は、書き込みデータトランザクションW、その後に読み取りデータトランザクションR、その後にメタデータ要求MH/MLをスケジューリングし、かつ、メモリアクセス要求帯域幅の分割、およびラウンドロビン方式に従ってシーケンスを繰り返す。
【0068】
図示される例では、低優先度メタデータ重みは2の値を有する。メタデータ帯域幅は、低優先度メタデータ重みの値に従って、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅に分割される。低優先度メタデータ重みは2の値を有するため、メモリトラフィックスケジューラ106は、メタデータ帯域幅の分割に従って、高優先度メタデータ要求キュー208からの連続した2つの高優先度メタデータ要求MH、その後に低優先度メタデータ要求キュー210からの低優先度メタデータ要求MLをスケジューリングし、かつ、メタデータ要求スケジューリングシーケンスを繰り返す。
【0069】
メモリトラフィックスケジューラ106は、高優先度メタデータ帯域幅、および高優先度メタデータ要求キュー208における高優先度メタデータ要求MHの位置に基づいて個々の高優先度メタデータ要求MHの送信をスケジューリングし、かつ、低優先度メタデータ帯域幅、および低優先度メタデータ要求キュー210における低優先度メタデータ要求MLの位置に基づいて個々の低優先度メタデータ要求MLの送信をスケジューリングする。
【0070】
図7を参照すると、重み付けメタデータ要求を含むメモリトランザクションスケジュールキュー212の一実施形態の一例700が示されている。メモリトラフィックスケジューラ106は、各々の個々のメモリアクセス要求がスケジューリングされると、スケジューリングされたメモリアクセス要求をメタデータトランザクションスケジュールキュー212に入れるように構成される。メモリアクセス要求は、書き込みデータトランザクションW、読み取りデータトランザクションR、高優先度メタデータ要求MH、および低優先度メタデータ要求MLを含む。各々のサイクル1-18はメモリアクセス要求送信サイクルを表す。メモリアクセス要求帯域幅は3つの等しい帯域幅に分割される。3つの等しい帯域幅は、書き込みデータトランザクション帯域幅、読み取りデータトランザクション帯域幅、およびメタデータ帯域幅である。
【0071】
メモリトラフィックスケジューラ106は、書き込みデータトランザクション帯域幅、および書き込みデータトランザクションキュー206における書き込みデータトランザクションの位置に基づいて個々の書き込みデータトランザクションWの送信をスケジューリングし、かつ、読み取りデータトランザクション帯域幅、および読み取りデータトランザクションキュー204における読み取りデータトランザクションRの位置に基づいて個々の読み取りデータトランザクションRの送信をスケジューリングする。メモリトラフィックスケジューラ106は、書き込みデータトランザクションW、その後に読み取りデータトランザクションR、その後にメタデータ要求MH/MLをスケジューリングし、かつメモリアクセス要求帯域幅の分割およびラウンドロビン方式に従ってシーケンスを繰り返す。
【0072】
図示される例では、低優先度メタデータ重みは4の値を有する。メタデータ帯域幅は、低優先度メタデータ重みの値に従って、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅に分割される。低優先度メタデータ重みは4の値を有するため、メモリトラフィックスケジューラ106は、メタデータ帯域幅の分割に従って、高優先度メタデータ要求キュー208からの連続した4つの高優先度メタデータ要求MH、その後に低優先度メタデータ要求キュー210からの低優先度メタデータ要求MLをスケジューリングし、かつメタデータ要求スケジューリングシーケンスを繰り返す。
【0073】
メモリトラフィックスケジューラ106は、高優先度メタデータ帯域幅、および高優先度メタデータ要求キュー208における高優先度メタデータ要求MHの位置に基づいて個々の高優先度メタデータ要求MHの送信をスケジューリングし、かつ、低優先度メタデータ帯域幅、および低優先度メタデータ要求キュー210における低優先度メタデータ要求MLの位置に基づいて個々の低優先度メタデータ要求MLの送信をスケジューリングする。
【0074】
代替的な実施形態では、メタデータ帯域幅はメタデータ要求送信繰り返し周期と関連付けられる。メタデータトラフィックスケジューラ106は、低優先度メタデータ要求の送信にはメタデータ要求送信繰り返し周期の第1の部分を、および高優先度メタデータ要求の送信にはメタデータ要求送信繰り返し周期の第2の部分を割り当てる。一定の間隔での一定の期間の低優先度メタデータ要求キューからのスケジューリング要求は、低優先度ワークロードのスターベーションを防止し得る。
【0075】
図8を参照すると、コア102からメモリトラフィックスケジューラ106へのデータトランザクションの送信を管理する方法800の一実施形態のフローチャート図が示されている。方法800は、クレジットベースフィードバックシステムを使用してコア102からメモリトラフィックスケジューラ106へのデータトランザクションの送信を管理するためにメモリトラフィックスケジューラ106によって実行される。方法800は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法800は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0076】
一実施形態では、複数のコア102のうちの1つは、低優先度メタデータ要求と関連付けられたデータトランザクションを生成することを担う。802では、メモリトラフィックスケジューラ106は、低優先度メタデータ要求データキュー210で利用可能な空間の量を判断する。メモリトラフィックスケジューラ106は、804において、低いメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションを生成することを担う複数のコア102のうちの1つを識別する。メモリトラフィックスケジューラ106は、806において、低優先度メタデータ要求キュー210で利用可能な空間の量と関連付けられたいくつかのクレジットを識別されたコア102に送信する。コア102は、メモリトラフィックスケジューラ106から受信されたクレジットの数を使用して、コア102がメモリトラフィックスケジューラ106に送信することが許可されたデータトランザクションの数を判断する。メモリトラフィックスケジューラ106は、コア102に更新された数のクレジットを周期的に提供するために方法800を周期的に実行する。方法800が図8において高水準で示され、かつ方法800の多くの変形およびこの代替が可能であることは、理解されたい。
【0077】
図9を参照すると、高優先度メタデータ要求の送信および低優先度メタデータ要求の送信に対するメタデータ帯域幅の割り当てを動的に調整する方法900の一実施形態のフローチャート図が示されている。方法900は、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅へのメタデータ帯域幅の分割を動的に調整するためにメモリトラフィックスケジューラ106によって実行される。方法900は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法900は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0078】
902では、メモリトラフィックスケジューラ106は、高優先度メタデータ要求キュー208における高優先度メタデータ要求の数が帯域幅調整閾値を下回っているかどうかを判断する。高優先度メタデータ要求キュー208における高優先度メタデータ要求の数が帯域幅調整閾値を下回るとき、メモリトラフィックスケジューラ106は、メタデータ要求の送信に対してメタデータ帯域幅を効率的に利用できない場合がある。
【0079】
高優先度メタデータ要求キュー208における高優先度メタデータ要求の数が帯域幅調整閾値を下回っているとメモリトラフィックスケジューラ106が判断した場合、メモリトラフィックスケジューラ106は、904において、低優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分を増大させる一方、高優先度メタデータ帯域幅として指定されたメタデータ帯域幅の部分を低減させる。これによって、メモリトラフィックスケジューラ106は、メモリコントローラ110へのメタデータ要求の送信に対してメタデータ帯域幅を効率的に利用することが可能になり得る。
【0080】
高優先度メタデータ要求キュー208における高優先度メタデータ要求の数が帯域幅調整閾値を下回っていないとメモリトラフィックスケジューラ106が判断した場合、メモリトラフィックスケジューラ106は、906において、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅へのメタデータ帯域幅の現在の分割を維持する。メモリトラフィックスケジューラ106は、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅へのメタデータ帯域幅の割り当てを動的に調整するために、方法900を周期的に実行する。方法900が図9において高水準で示され、かつ方法900における多くの変形およびこの代替が可能であることは、理解されたい。
【0081】
図10を参照すると、コア102からメモリトラフィックスケジューラ106へのデータトランザクションの送信を管理する方法1000の一実施形態のフローチャート図が示されている。方法1000は、コア102からメモリトラフィックスケジューラ106へのデータトランザクションの送信を管理するためにメモリトラフィックスケジューラ106によって実行される。方法1000は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法1000は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0082】
一実施形態では、複数のコア102のうちの1つは、低優先度メタデータ要求と関連付けられたデータトランザクションを生成することを担う。1002では、メモリトラフィックスケジューラ106は、メモリトラフィックスケジューラ106において生成された低優先度メタデータ要求の数がコアスロットリング閾値より大きいかどうかを判断する。メモリトラフィックスケジューラ106において生成された低優先度メタデータ要求の数がコアスロットリング閾値より大きいとメモリトラフィックスケジューラ106が判断した場合、メモリトラフィックスケジューラ106は、1004において、低いメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションを生成することを担う複数のコア102のうちの1つを識別する。
【0083】
メモリトラフィックスケジューラ106は、1006において、コアスロットリング要求を識別されたコア102に送信する。コアスロットリング要求を受信すると、コア102は、コア102がメモリトラフィックスケジューラ106に送信するデータトランザクションの数を抑制することにより、メモリトラフィックスケジューラ106において生成された低優先度メタデータ要求の数を減少させる。
【0084】
メモリトラフィックスケジューラ106で生成された低優先度メタデータ要求の数がコアスロットリング閾値より大きくないとメモリトラフィックスケジューラ106が判断した場合、1008では更なる動作は行われない。メモリトラフィックスケジューラ106は周期的に方法1000を実行する。方法1000が図10において高水準で示されており、かつ方法1000の多くの変形およびこの代替が可能であることは、理解されたい。
【0085】
図11を参照すると、メモリコントローラ110に対するメタデータ要求をスケジューリングする方法1100の一実施形態のフローチャート図が示されている。方法1100は、メモリトラフィックスケジューラ106からメモリコントローラ110へのメタデータ要求の送信を管理するためにメモリトラフィックスケジューラ106によって実行される。方法1100は、システム100の追加的な構成要素と組み合わせてメモリトラフィックスケジューラ106によって実行され得る。方法1100は、ハードウェア回路、ファームウェア、ソフトウェア、および/またはこれらの組み合わせによって実行され得る。
【0086】
上述されるように、メタデータ帯域幅は、低優先度メタデータ重みの値に従って、高優先度メタデータ帯域幅および低優先度メタデータ帯域幅に分割される。例えば、低優先度メタデータ重みがXの値を有する場合、メモリトラフィックスケジューラ106は、高優先度メタデータ要求キュー208からの連続したXの高優先度メタデータ要求、その後、低優先度メタデータ要求キュー210からの低優先度メタデータ要求をスケジューリングし、かつメタデータ要求スケジューリングシーケンスを繰り返す。高優先度メタデータ要求キュー208が空である場合、メモリトラフィックスケジューラ106は、連続したXの高優先度メタデータ要求スロットのうちの1つにおける高優先度メタデータ要求をスケジューリングすることができない場合があり、高優先度メタデータ要求スロットは未使用になる。同様に、低優先度メタデータ要求キュー210が空である場合、メモリトラフィックスケジューラ106は、連続したXの高優先度メタデータ要求スロットの後に低優先度メタデータ要求スロットのうちの1つにおける低優先度メタデータ要求をスケジューリングすることができない場合があり、低優先度メタデータ要求スロットは未使用になる。方法1100では、高優先度メタデータキュー208の要求キューが空であるか、または低優先度メタデータキュー210の要求キューが空であるかのいずれかであるとき、空のメタデータ要求スロットを埋めようとする。
【0087】
1102では、メモリトラフィックスケジューラ106は、高優先度メタデータ要求キュー208または低優先度メタデータ要求キュー210のうちの1つが空であるかどうかを判断する。高優先度メタデータ要求キュー208または低優先度メタデータ要求キュー210のうちの1つが空であるとメモリトラフィックスケジューラ106が判断した場合、メモリトラフィックスケジューラ106は、1104において、利用可能なメタデータ要求スロットを使用して、高優先度メタデータ要求キュー208または低優先度メタデータ要求キュー210のうちのもう一方からのメタデータ要求の送信をスケジューリングする。高優先度メタデータ要求キュー208または低優先度メタデータ要求キュー210のうちの1つが空ではないとメモリトラフィックスケジューラ106が判断した場合、1106において、メモリトラフィックスケジューラ106は、低いメタデータ優先度重みに従ってメタデータ要求の送信を維持する。方法1100が図11において高水準で示されており、かつ方法1100の多くの変形およびこの代替が可能であることは、理解されたい。
【0088】
高優先度メタデータ要求の送信に対する高優先度メタデータ帯域幅および低優先度メタデータ要求の送信に対する低優先度メタデータ帯域幅の割り当てに基づいて高優先度メタデータ要求および低優先度メタデータ要求の送信を管理するためのサービス品質(QoS)スキームの実施は、所与のコア/スレッドに対する適切に動作しないワークロードがプラットフォーム上に共在する他のワークロードの性能に悪影響を与えないことを保証し得る。QoSスキームは、メタデータ要求と関連付けられたサービスのクラスに基づいてメタデータルックアップに利用可能なメモリ帯域幅を限定することによって、メタデータキャッシュへの割り当て率を限定することに頼る場合がある。メタデータ要求と関連付けられたQoSは、メタデータ要求と関連付けられたメタデータ優先度レベルに対応する。
【0089】
メタデータキャッシュのQoSを実施するために、システム100は、重み付けメタデータ優先度スケジューリングスキームに基づくメタデータ要求に対応するメモリトラフィックを処理することに頼り得る。メタデータ要求は、これらの親データトランザクションのQoSサービスパラメータを継承し、かつ単なる先入れ先出し方式の代わりにこれらの優先度に基づいてスケジューリングされる。これは、低優先度スレッドがメタデータキャッシュにエントリを割り当てる、すなわち、これを汚染する可能性がある割合を間接的に制御することにより、より高い優先度スレッドの性能の改善に貢献する。
【0090】
メタデータトラフィックスケジューラ106は、親の読み取り/書き込みデータトランザクションのQoSに基づいて別個のメタデータ要求キューを維持する。これによって、高優先度ワークロードからのメタデータ要求が低優先度ワークロードからのメタデータ要求より優先されることが保証され得る。
【0091】
代替的な実施形態では、リーキーバケット実装形態を使用して、トラフィックバーストおよびこれらの優先度を明らかにすることによって、メタデータキュー(またはさらには全てのキュー)の間の利用可能な帯域幅を正確にパーティショニングし得る。別の実施形態において、メモリトラフィックスケジューラ106は、利用可能なメタデータ帯域幅の一定の割合をサービスの各々のクラスに割り当て得る。代替的な実施形態では、メモリトラフィックスケジューラ106はまた、読み取りデータトランザクションおよび書き込みデータトランザクションに対してQoSクラスごとの別個のキューを維持し得る。
【0092】
図12Aは、本発明の実施形態による、例示的なインオーダパイプラインおよび例示的なレジスタリネーミングアウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図12Bは、本発明の実施形態によるプロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態、および例示的なレジスタリネーミングアウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図12Aおよび図12Bにおける実線で囲まれたボックスは、インオーダパイプラインおよびインオーダコアを示し、破線ボックスの任意の追加は、レジスタリネーミングアウトオブオーダ発行/実行パイプラインおよびコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットであると仮定して、アウトオブオーダ態様について説明する。
【0093】
図12Aでは、プロセッサパイプライン1200は、フェッチステージ1202と、長さデコードステージ1204と、デコードステージ1206と、アロケーションステージ1208と、リネーミングステージ1210と、(ディスパッチまたは発行としても既知の)スケジューリングステージ1212と、レジスタ読み取り/メモリ読み取りステージ1214と、実行ステージ1216と、ライトバック/メモリ書き込みステージ1218と、例外処理ステージ1222と、コミットステージ1224とを含む。本明細書で説明されるように、所与の実施形態では、コアがパイプライン1200などの複数の処理パイプラインを含み得ることに留意されたい。
【0094】
図12Bは、実行エンジンユニット1250に結合されるフロントエンドユニット1230を含み、かつ両方がメモリユニット1270に結合されるプロセッサコア1290を示す。コア1290は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、またはハイブリッドのもしくは代替的なコアタイプであり得る。さらに別の選択肢として、コア1290は、例えば、ネットワークもしくは通信コア、圧縮エンジン、コプロセッサコア、または汎用コンピューティンググラフィックス処理装置(GPGPU)コア、またはグラフィックコアなどの特別用途コアであり得る。
【0095】
フロントエンドユニット1230は、命令キャッシュユニット1234に結合される分岐予測ユニット1232を含み、命令キャッシュユニット1234は命令トランスレーションルックアサイドバッファ(TLB)1236に結合され、命令トランスレーションルックアサイドバッファ1236は命令フェッチユニット1238に結合され、命令フェッチユニット1238はデコードユニット1240に結合される。デコードユニット1240(またはデコーダ)は、命令をデコードし、かつ1つまたは複数のマイクロ操作の出力として、マイクロコードエントリーポイント、マイクロ命令、他の命令、または他の制御信号を生成してよく、これらは、オリジナルの命令からデコード、またはそうでなければこれを反映もしくはこれから導出される。デコードユニット1240は、さまざまな異なるメカニズムを使用して実施され得る。適切なメカニズムの例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコード読み出し専用メモリ(ROM)などが含まれるが、これらに限定されるものではない。1つの実施形態において、コア1290は、(例えば、デコードユニット1240における、またはそうでなければフロントエンドユニット1230内の)特定のマクロ命令に対するマイクロコードを記憶するマイクロコードROMまたは他の媒体を含む。デコードユニット1240は、実行エンジンユニット1250におけるリネーミング/アロケータユニット1252に結合される。
【0096】
実行エンジンユニット1250は、リタイアメントユニット1254に結合されるリネーミング/アロケータユニット1252、および1つまたは複数のスケジューラユニット1256のセットを含む。スケジューラユニット1256は、予約ステーション、中央命令ウィンドウなどを含む任意の数の異ななるスケジューラを表す。スケジューラユニット1256は、物理レジスタファイルユニット1258に結合される。物理レジスタファイルユニット1258の各々は1つまたは複数の物理レジスタファイルを表し、これらの異なるものは、スカラ整数、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインタ)などといった、1つまたは複数の異なるデータ型を記憶する。1つの実施形態では、物理レジスタファイルユニット1258は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、およびスカラレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供し得る。物理レジスタファイルユニット1258は、レジスタリネーミングおよびアウトオブオーダ実行が(例えば、リオーダバッファおよびリタイアメントレジスタファイルを使用して、将来のファイル、履歴バッファ、およびリタイアメントレジスタファイルを使用して、レジスタマップおよびレジスタのプールを使用して、など)実施され得るさまざまなやり方を示すようにリタイアメントユニット1254と重なっている。リタイアメントユニット1254および物理レジスタファイルユニット1258は、実行クラスタ1260に結合される。実行クラスタ1260は、1つまたは複数の実行ユニット1262のセット、および1つまたは複数メモリアクセスユニット1264のセットを含む。実行ユニット1262は、さまざまな動作(例えば、シフト、加算、減算、乗算)をさまざまなタイプのデータ(例えば、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して実行し得る。いくつかの実施形態は特定の機能または機能のセット専用のいくつかの実行ユニットを含み得るが、他の実施形態は、1つのみの実行ユニット、または全てが全ての機能を実行する複数の実行ユニットを含み得る。スケジューラユニット1256、物理レジスタファイルユニット1258、および実行クラスタ1260は複数の可能性があるように示されるが、これは、特定の実施形態が、特定のタイプのデータ/動作(例えば、各々が自身のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有し、かつ別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット1264を有する特定の実施形態が実施される、スカラ整数パイプライン、スカラ浮動小数点/パック整数/パック浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/またはメモリアクセスパイプライン)に対して別個のパイプラインを作成するもたらすからである。また、別個のパイプラインが使用される場合、これらのパイプラインの1つまたは複数がアウトオブオーダ発行/実行であり得、残りはインオーダであり得ることは、理解されるべきである。
【0097】
メモリアクセスユニット1264のセットはメモリユニット1270も結合され、このメモリユニット1270は、レベル2(L2)キャッシュユニット1276に結合されるデータキャッシュユニット1274に結合されるデータTLBユニット1272を含む。1つの例示的な実施形態では、メモリアクセスユニット1264は、ロードユニット、ストアアドレスユニット、およびストアデータユニットを含み得、これらの各々は、メモリユニット1270におけるデータTLBユニット1272に結合される。命令キャッシュユニット1234は、メモリユニット1270においてレベル2(L2)キャッシュユニット1276にさらに結合される。L2キャッシュユニット1276は、1つまたは複数他のレベルのキャッシュ、および最終的にはメインメモリに結合される。
【0098】
例として、例示的なレジスタリネーミングアウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン1200を実施し得る:1)命令フェッチ1238はフェッチステージ1202および長さデコードステージ1204を実行し、2)デコードユニット1240はデコードステージ1206を実行し、3)リネーミング/アロケータユニット1252はアロケーションステージ1208およびリネーミングステージ1210を実行し、4)スケジューラユニット1256はスケジューリングステージ1212を実行し、5)物理レジスタファイルユニット1258およびメモリユニット1270はレジスタ読み取り/メモリ読み取りステージ1214を実行し、実行クラスタ1260は実行ステージ1216を実行し、6)メモリユニット1270および物理レジスタファイルユニット1258はライトバック/メモリ書き込みステージ1218実行し、7)さまざまなユニットは例外処理ステージ1222に含まれ得、8)リタイアメントユニット1254および物理レジスタファイルユニット1258はコミットステージ1224を実行する。
【0099】
コア1290は、本明細書に記載される命令を含んで、1つまたは複数の命令セット(例えば、(より新しいバージョンが追加されたいくつかの拡張を有する)x86命令セット、カリフォルニア州サニーベールのMIPS TechnologyのMIPS命令セット、(カリフォルニア州サニーベールのARM HoldingのNEONなどの任意選択の追加拡張を有する)ARM命令セット)をサポートし得る。1つの実施形態において、コア1290は、パックドデータ命令セット拡張(例えば、AVX1、AVX2)をサポートするためのロジックを含むことにより、多くのマルチメディアアプリケーションによって使用される動作をパックされたデータを使用して実行することが可能になる。
【0100】
コアが、動作もしくはスレッドの2つ以上の並列セットを実行する)マルチスレッディングをサポートし得、かつタイムスライスされたマルチスレッディング、(1つの物理コアが、物理コアが同時にマルチスレッディングするスレッドの各々に論理コアを提供する場合の)同時マルチスレッディング、またはこれらの組み合わせ(例えば、Intel(登録商標)のハイパースレッディング技術など、タイムスライスされたフェッチおよびデコードならびにその後の同時マルチスレッディング)を含むさまざまなやり方でこれを行ってよいことは、理解されるべきである。
【0101】
レジスタリネーミングはアウトオブオーダ実行という文脈において説明されるが、レジスタリネーミングがインオーダーアーキテクチャで使用され得ることは理解されるべきである。プロセッサの示された実施形態はまた、別個の命令およびデータキャッシュユニット1234/1274ならびに共有L2キャッシュユニット1276を含むが、代替的な実施形態は、例えば、レベル1(L1)内部キャッシュまたは複数のレベルの内部キャッシュなど、命令およびデータ両方に対する1つの内部キャッシュを有し得る。いくつかの実施形態において、システムは、内部キャッシュ、および、コアおよび/またはプロセッサの外側にある外部キャッシュの組み合わせを含み得る。あるいは、キャッシュの全てはコアおよび/またはプロセッサの外側にあり得る。
【0102】
図13は、本発明の実施形態による、複数のコアを有し得、統合メモリコントローラを有し得、および統合グラフィックを有し得るプロセッサ1300のブロック図である。図13における実線で囲まれたボックスは、単一コア1302A、システムエージェント1310、1つまたは複数のバスコントローラユニット1316のセットを有するプロセッサ1300を示し、任意で追加する破線ボックスは、複数のコア1302A-N、システムエージェントユニット910における1つまたは複数の統合メモリコントローラユニットのセット、および専用ロジック1308を有する代替的なプロセッサ1300を示す。
【0103】
従って、プロセッサ1300の異なる実装形態は、1)(1つまたは複数のコアを含み得る)統合グラフィックおよび/または科学的な(スループット)ロジックである専用ロジック1308を有するCPU、および1つまたは複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、これら2つの組み合わせ)であるコア1302A-Nと、2)主にグラフィックおよび/または科学(スループット)向けの多数の特定用途向けコアであるコア1302A-Nを有するコプロセッサと、3)多数の汎用インオーダコアであるコア1302A-Nを有するコプロセッサとを含み得る。従って、プロセッサ1300は、例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス処理装置)、(30以上のコアを含む)高スループットメニー統合型コア(MIC)コプロセッサ、または埋め込みプロセッサなどといった、汎用プロセッサ、コプロセッサ、または専用プロセッサであり得る。プロセッサは1つまたは複数のチップ上に実装され得る。プロセッサ1300は、1つまたは複数の基板の一部であり得る、および/または、例えば、BiCMOS、CMOS、またはNMOSなどのいくつかののプロセス技術のいずれかを使用して1つまたは複数の基板上に実装され得る。
【0104】
メモリ階層は、コア内の1つまたは複数のレベルのキャッシュユニット1304A-N、1セットのまたは1つもしくは複数の共有キャッシュユニット1306、および統合メモリコントローラユニット1314のセットに結合される(示されない)外部メモリを含む。共有キャッシュユニット1306のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)などの1つもしくは複数のミッドレベルキャッシュ、または他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、および/あるいはこれらの組み合わせを含み得る。1つの実施形態では、リングベースの相互接続ユニット1312は、専用ロジック1308、共有キャッシュユニット1306のセット、およびシステムエージェントユニット1310/統合メモリコントローラユニット1314を相互接続するが、代替的な実施形態では、そのようなユニットを相互接続するための任意の数の周知の技法を使用し得る。1つの実施形態では、コヒーレンシは、1つまたは複数のキャッシュユニット1306とコア1302A-Nとの間で維持される。
【0105】
システムエージェントユニット1310は、コア1302A-Nを連係させかつ動作させるような構成要素を含む。システムエージェントユニット1310は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを含み得る。PCUは、コア1302A-Nおよび専用ロジック1308の電力状態を調節するのに必要なロジックおよび構成要素であり得るまたはこれらを含み得る。ディスプレイユニットは1つまたは複数の外部接続されたディスプレイを駆動するためのものである。
【0106】
コア1302A-Nは、アーキテクチャ命令セットの観点から均質または異種であり得、すなわち、コア1302A-Nの2つ以上は同じ命令セットを実行可能であり得るが、その他は、この命令セットのサブセットのみまたは異なる命令セットを実行することが可能であり得る。
【0107】
図14図15は例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス,ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、およびさまざまな他の電子デバイス用の当技術分野で既知の他のシステム設計および構成も好適である。一般的に、本明細書に開示されるようなプロセッサおよび/または他の実行ロジックを組み込むことが可能な多様なシステムまたは電子デバイスが概ね好適である。
【0108】
ここで図14を参照すると、本発明の一実施形態による第1のより具体的で例示的なシステム1400のブロック図が示されている。図14に示されるように、マルチプロセッサシステム1400は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1450を介して結合される第1のプロセッサ1470および第2のプロセッサ1480を含む。プロセッサ1470および1480の各々は、あるバージョンのプロセッサ1400であり得る。
【0109】
統合メモリコントローラ(IMC)ユニット1472および1482をそれぞれ含むプロセッサ1470および1480が示される。プロセッサ1470はまた、このバスコントローラユニットの一部としてポイントツーポイント(P―P)インタフェース1476および1478を含み、同様に、第2のプロセッサ1480はP‐Pインタフェース1486および1488を含む。プロセッサ1470、1480は、P-Pインタフェース回路1478、1488を使用してポイントツーポイント(P-P)インタフェース1450を介して情報を交換し得る。図14に示されるように、IMC1472および1482は、プロセッサを、それぞれのメモリ、すなわち、それぞれのプロセッサにローカルに取り付けられるメインメモリの部分であり得るメモリ1432およびメモリ1434に結合する。
【0110】
プロセッサ1470、1480はそれぞれ、ポイントツーポイントインタフェース回路1476、1494、1486、1498を使用して個々のP‐Pインタフェース1452、1454を介してチップセット1490と情報を交換し得る。チップセット1490は、任意選択で、高性能インタフェース1439を介してコプロセッサ1438と情報を交換し得る。1つの実施形態では、コプロセッサ1438は、例えば、高スループットMICプロセッサ、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、または埋め込みプロセッサなどの専用プロセッサである。
【0111】
(示されない)共有キャッシュは、P―P相互接続を介してプロセッサと依然接続されている、いずれかのプロセッサにまたは両方のプロセッサの外部に含まれ得ることで、いずれかまたは両方のプロセッサのローカルキャッシュ情報は、プロセッサが低電力モードにされる場合は共有キャッシュに記憶され得る。
【0112】
チップセット1490はインタフェース1496を介して第1のバス1416に結合され得る。1つの実施形態では、第1のバス1416は、周辺構成要素相互接続(PCI)バス,またはPCIエクスプレスバスまたは別の第3世代のI/O相互接続バスなどのバスであり得るが、本発明の範囲はそのように限定されない。
【0113】
図14に示されるように、さまざまなI/Oデバイス1414は、第1のバス1416を第2のバス1420に結合するバスブリッジ1418と共に第1のバス1416に結合され得る。1つの実施形態では、コプロセッサ、高スループットMICプロセッサ、(例えば、グラフィクスアクセラレータまたはデジタル信号処理(DSP)ユニットなどの)GPGPUのアクセラレータ、フィールドプログラマブルゲートアレイ、または任意の他のプロセッサなどの1つまたは複数の追加のプロセッサ1415は、第1のバス1416に結合される。1つの実施形態では、第2のバス1420はローピンカウント(LPC)バスであり得る。1つの実施形態において、例えば、キーボードおよび/またはマウス1422、通信デバイス1427、ならびに、命令/コードおよびデータ1430を含み得るディスクドライブまたは他の大容量ストレージデバイスなどのストレージユニット1428を含むさまざまなデバイスが第2のバス1420に結合され得る。さらに、オーディオI/O1424は第2のバス1420に結合され得る。他のアーキテクチャが可能であることに留意されたい。例えば、図14のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスまたはその他のこのようなアーキテクチャを実装し得る。
【0114】
ここで、図15を参照すると、本発明の一実施形態によるSoC1500のブロック図が示されている。破線ボックスは、より高度なSoCに関する任意選択の特徴である。図15では、相互接続ユニット1502は、(構成キャッシュユニット1504A-Nを含む)1つまたは複数のコア1502A-Nのセットおよび共有キャッシュユニット1506を含むアプリケーションプロセッサ1510、システムエージェントユニット1510、バスコントローラユニット1516、統合メモリコントローラユニット1514、統合グラフィックロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得る1セットのまたは1つもしくは複数のコプロセッサ1520、スタティックランダムアクセスメモリ(SRAM)ユニット1530、ダイレクトメモリアクセス(DMA)ユニット1532、および、1つまたは複数の外部ディスプレイに結合するためのディスプレイユニット1540に結合される。1つの実施形態では、コプロセッサ1520は、例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、または埋め込みプロセッサなどの専用プロセッサを含む。
【0115】
本明細書に開示されるメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはこのような実装アプローチの組み合わせで実装され得る。本発明の実施形態は、少なくとも1つのプロセッサ、(揮発性および不揮発性メモリならびに/または記憶要素を含む)ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むプログラム可能なシステム上で実行するコンピュータプログラムまたはプログラムコードとして実施され得る。
【0116】
図14に示されるコード1430などのプログラムコードは、本明細書に説明される機能を実行しかつ出力情報を生成するために入力指示に適用され得る。出力情報は、既知の方式で1つまたは複数の出力デバイスに適用され得る。この適用の目的で、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【0117】
プログラムコードは、処理システムと通信するために高水準手続き型またはオブジェクト指向プログラミング言語で実装され得る。プログラムコードはまた、必要に応じて、アセンブリ言語または機械語で実装され得る。実際は、本明細書に説明されるメカニズムは、範囲が、いずれの特定のプログラミング言語にも限定されるものではない。いずれの場合でも、言語はコンパイル型言語またはインタープリタ型言語であり得る。
【0118】
少なくとも1つの実施形態の1つまたは複数の態様は、プロセッサ内のさまざまなロジックを表す機械可読媒体上に記憶された代表的な命令によって実施され得、この命令は、機械によって読み取られるとき、機械に、本明細書に説明される技法を実行するためのロジックを作らせる。「IPコア」として既知のそのような表現は、有形の機械可読媒体上に記憶され、かつ、実際にロジックまたはプロセッサを製作する製造機械に読み込まれるようにさまざまな顧客または製造設備に供給され得る。
【0119】
このような機械可読記憶媒体は、限定はされないが、ハードディスク、フロッピディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD-ROM)、書き換え可能コンパクトディスク(CD-RW)、および光磁気ディスクを含む任意の他のタイプのディスク、リードオンリメモリ(ROM)などの半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、相変化メモリ(PCM)、磁気もしくは光カード、または電子的命令を記憶するのに好適な他のタイプの媒体などの記憶媒体を含む、機械またはデバイスによって製造または形成される物品の非一時的な有形構造を含み得る。
【0120】
従って、本発明の実施形態はまた、構造、回路、装置、プロセッサ、および/または本明細書に説明されるシステム機能を定義する、ハードウェア記述言語(HDL)などの、命令を含むまたは設計データを含む非一時的な有形の機械可読媒体を含む。このような実施形態はまた、プログラムプロダクトと称され得る。
【0121】
場合によっては、命令コンバータを使用して、命令を、ソース命令セットからターゲット命令セットに変換し得る。例えば、命令コンバータは、命令を、(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを使用する)翻訳、モーフィング、エミュレート、またはそうでなければ変換を行って、コアによって処理される1つまたは複数の他の命令にし得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせで実装され得る。命令コンバータは、プロセッサにあり、プロセッサから離れ、またはプロセッサ上の一部でありかつプロセッサから離れた一部であり得る。
【0122】
図16は、本発明の実施形態による、ソース命令セットにおけるバイナリ命令をターゲット命令セットにおけるバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対照するブロック図である。示された実施形態では、命令コンバータはソフトウェア命令コンバータであるが、代替的には、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、またはこれらのさまざまな組み合わせで実装され得る。図16は、高水準言語1602におけるプログラムが、少なくとも1つのx86命令セットコア1616でプロセッサによってネイティブに実行され得るx86二進コード1606を生成するためにx86コンパイラ1604を使用してコンパイルされ得ることを示す。少なくとも1つのx86命令セットコア1616を有するプロセッサは、少なくとも1つのx86命令セットコアを有するインテル(登録商標)プロセッサと実質的に同じ結果を実現するために、(1)インテル(登録商標)x86命令セットコアの命令セットの大部分、または(2)少なくとも1つのx86命令セットコアを有するインテル(登録商標)プロセッサ上で動作させることを対象としたオブジェクトコードバージョンのアプリケーションもしくは他のソフトウェアを共存させて実行するまたはそうでなければ処理することによって、少なくとも1つのx86命令セットコアを有するインテル(登録商標)プロセッサと実質的に同じである複数の機能を実行することができる任意のプロセッサを表す。x86コンパイラ1604は、追加のリンケージ処理があってもなくても、少なくとも1つのx186命令セットコア1616を有するプロセッサ上で実行可能であるx86二進コード1606(例えば、オブジェクトコード)を生成するように動作可能であるコンパイラを表す。同様に、図16は、高水準言語1602におけるプログラムが、少なくとも1つのx86命令セットコアがないプロセッサ1614(例えば、カリフォルニア州サニーベールのMIPS TechnologyのMIPS命令セットを実行する、および/またはカリフォルニア州サニーベールのARM HoldingのARM命令セットを実行するコアを有するプロセッサ)によってネイティブに実行され得る代替的な命令セットバイナリコード1610を生成するために代替的な命令セットコンパイラ1608を使用してコンパイルされ得ることを示す。命令コンバータ1612を使用して、x86二進コード1606を、x86命令セットコアのないプロセッサ1614によってネイティブに実行され得るコードに変換する。変換済みコードは、これを行うことが可能である命令コンバータを製作することが困難であるため、代替的な命令セットバイナリコード1610と同じではない可能性があるが、変換済みコードは全般的なオペレーションを達成し、かつ代替的な命令セットから命令を構成することになる。従って、命令コンバータ1612は、エミュレーション、シミュレーション、または任意の他の処理によって、x86命令セットプロセッサまたはコアを有さないプロセッサまたは他の電子デバイスがx86二進コード1606を実行できるようにする、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。
【0123】
以下の実施例は、さらなる実施形態に関する。
【0124】
1つの例では、装置は複数のメタデータ要求を記憶するためのメモリであって、複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、メモリと、メモリおよびメモリコントローラに結合されるスケジューラであって、スケジューラは、メモリコントローラへの複数のメタデータ要求の第1のメタデータ要求の送信を、第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、およびメモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることを行い、メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューラとを含む。
【0125】
一例では、スケジューラは、メモリコントローラへの送信のために第1のデータトランザクション優先度レベルと関連付けられた第1のデータトランザクションを受信すること、第1のデータトランザクションと関連付けられたメタデータがメタデータキャッシュにおいて利用可能であるかどうかを判断すること、および、判断に基づいて第1のデータトランザクション優先度レベルから継承された第1のメタデータ優先度レベルを有するようにメタデータと関連付けられた第1のメタデータ要求を生成することを行う。
【0126】
一例では、スケジューラは、第1のデータトランザクション優先度レベルと関連付けられたデータトランザクション優先度タグを含む第1のデータトランザクションを受信すること、および、第1のデータトランザクションと関連付けられたメタデータに対する第1のメタデータ要求と関連付けるための第1のメタデータ優先度レベルを生成することであって、第1のメタデータ優先度レベルは第1のデータトランザクション優先度レベルから継承されることになる、生成することを行う。
【0127】
一例では、スケジューラは、複数のコアのうちの第1のコアから第1のデータトランザクションを受信することであって、第1のコアは第1のコア優先度レベルと関連付けられる、受信すること、および、第1のデータトランザクションと関連付けられたメタデータに対する第1のメタデータ要求と関連付けるための第1のメタデータ優先度レベルを生成することであって、第1のメタデータ優先度レベルは第1のコア優先度レベルから継承されることになる、生成することを行う。
【0128】
一例では、メモリは、複数のメタデータ要求キューであって、複数のメタデータ要求キューの各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、複数のメタデータ要求キューをさらに含み、スケジューラは、第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求を生成すること、第1のメタデータ要求を第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、第1のメタデータ要求キューにおける第1のメタデータ要求の位置に少なくとも部分的に基づいてメモリコントローラへの第1のメタデータ要求の送信をスケジューリングすることを行う。
【0129】
一例では、スケジューラは、第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別すること、メタデータ帯域幅の第1の帯域幅部分と関連付けられた帯域幅可用性データを生成すること、および、第1のコアが、帯域幅可用性データに基づいて装置に送信されたいくつかのデータトランザクションを管理できるように、帯域幅可用性データを第1のコアに送信すること、を行う。
【0130】
一例では、スケジューラは、第1のメタデータ優先度レベルと関連付けられた複数のメタデータ要求のうちのいくつかのメタデータ要求を帯域幅調整閾値と比較すること、および、比較に基づいてメタデータ帯域幅の第1の帯域幅部分を動的に調整すること、を行う。
【0131】
一例では、スケジューラは、第1のメタデータ優先度レベルと関連付けられた複数のメタデータ要求のうちのいくつかのメタデータ要求がコアスロットリング閾値を超えるかどうかを判断することであって、第1のメタデータ優先度レベルは低優先度レベルである、判断すること、および、判断に基づいて、第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別し、かつデータトランザクションスロットリング要求を第1のコアに送信すること、を行う。
【0132】
一例では、複数のメタデータ優先度レベルの各々はメタデータ優先度レベル重みと関連付けられ、スケジューラは、第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて第1のメタデータ優先度レベルと関連付けられたメタデータ要求にメタデータ帯域幅の第1の帯域幅部分を割り当てることを行う。
【0133】
一例では、メモリは少なくとも2つのメタデータ要求キューを含み、少なくとも2つのメタデータ要求キューの各々は複数のメタデータ優先度レベルのうちの1つと関連付けられ、スケジューラはさらに、第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求を生成すること、第1のメタデータ要求を第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、第1のメタデータ要求キューにおける第1のメタデータ要求の位置に少なくとも部分的に基づいてメモリコントローラへの第1のメタデータ要求の送信をスケジューリングすることを行う。
【0134】
一例では、スケジューラは、複数のメタデータ要求が第1のメタデータ優先度レベルと関連付けられた別のメタデータ要求を含むかどうかを判断すること、および、判断に基づいてメタデータ帯域幅の第1の第1の帯域幅部分の帯域幅を使用してメモリコントローラへの複数のメタデータ要求の第2のメタデータ要求の送信をスケジューリングすることであって、第2のメタデータ要求は複数のメタデータ優先度レベルのうちの第2のメタデータ優先度レベルを有する、スケジューリングすることを行う。
【0135】
一例では、スケジューラは、メモリコントローラへの複数のメタデータ要求のうちの第2のメタデータ要求の送信を、第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベルおよびメタデータ要求帯域幅の第2の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、第2の帯域幅部分は第2メタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられ、メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルが第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいてメタデータ帯域幅の第2の帯域幅部分未満である、スケジューリングすることを行う。
【0136】
1つの例では、機械可読媒体は記憶されている命令を含み、命令は、機械によって実行される場合、機械に、メモリトラフィックスケジューラにおける複数のデータトランザクションを受信することであって、複数のデータトランザクションの各々は、トランザクション受信時間およびデータトランザクション優先度レベルと関連付けられる、受信すること、メモリトラフィックスケジューラにおいて複数のメタデータ要求を生成することであって、複数のメタデータ要求の各々は、複数のデータトランザクションのうちの1つ、および複数のデータトランザクションののうちの1つのデータトランザクション優先度レベルから継承された複数のメタデータ優先度レベルのうちのメタデータ優先度レベルと関連付けられる、生成すること、および、メモリコントローラへの第1のデータトランザクションと関連付けられた複数のメタデータ要求のうちの第1のメタデータ要求の送信を、第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、第1のデータトランザクションと関連付けられた第1の受信時間、およびメモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューリングすることを行わせる。
【0137】
一例では、機械可読媒体は、機械に、メモリコントローラへの第2のデータトランザクションと関連付けられた複数のメタデータ要求のうちの第2のメタデータ要求の送信を、第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベル、第2のデータトランザクションと関連付けられた第2の時間の受信、および第2のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられたメタデータ要求帯域幅と関連付けられたメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第2の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルが第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいて、メタデータ帯域幅の第2の帯域幅部分未満である、スケジューリングすることを行わせる命令を含む。
【0138】
一例では、機械可読媒体は、機械に、複数のメタデータ優先度レベルの各々をメタデータ優先度レベル重みと関連付けること、および、第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて第1のメタデータ優先度レベルと関連付けられたメタデータ要求にメタデータ帯域幅の第1の帯域幅部分を割り当てることを行わせる命令を含む。
【0139】
1つの例では、システムは、複数のコアと、メモリコントローラと、メタデータキャッシュと、複数のコア、メモリコントローラ、およびメタデータキャッシュに結合されるメモリトラフィックスケジューラとを含む。メモリトラフィックスケジューラは複数のメタデータ要求を記憶することであって、複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、記憶すること、および、メモリコントローラへの複数のメタデータ要求のうちの第1のメタデータ要求の送信を、第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、およびメモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、メタデータ帯域幅の第1の帯域幅部分は、第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューリングすることを行う。
【0140】
一例では、メモリトラフィックスケジューラは、複数の読み取りデータトランザクションを記憶することであって、複数の読み取りデータトランザクションの各々は複数の読み取りデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、メモリコントローラへの複数の読み取りデータトランザクションのうちの第1の読み取りデータトランザクションの送信を、第1の読み取りデータトランザクションと関連付けられた第1の読み取りデータトランザクション優先度レベル、およびメモリコントローラへの読み取りデータトランザクションの送信に割り当てられた読み取りデータトランザクション帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、読み取りデータトランザクション帯域幅の第1の帯域幅部分は第1の読み取りデータトランザクション優先度レベルと関連付けられた読み取りデータトランザクションの送信に割り当てられる、スケジューリングすることを行う。
【0141】
一例では、メモリトラフィックスケジューラは、複数の書き込みデータトランザクションを記憶することであって、複数の書き込みデータトランザクションの各々は複数の書き込みデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、メモリコントローラへの複数の書き込みデータトランザクションのうちの書き込みデータトランザクションの送信を、第1の書き込みデータトランザクションと関連付けられた第1の書き込みデータトランザクション優先度レベル、およびメモリコントローラへの書き込みデータトランザクションの送信に割り当てられた書き込みデータトランザクション帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、書き込みデータトランザクション帯域幅の第1の帯域幅部分は第1の書き込みデータトランザクション優先度レベルと関連付けられた書き込みデータトランザクションの送信に割り当てられる、スケジューリングすることを行う。
【0142】
一例では、メモリトラフィックスケジューラは少なくとも2つのメタデータ要求キューを含み、少なくとも2つのメタデータ要求キューの各々は複数のメタデータ優先度レベルのうちの1つと関連付けられ、メモリトラフィックスケジューラは第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求を生成すること、第1のメタデータ要求を第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、第1のメタデータ要求キューにおける第1のメタデータ要求の位置に少なくとも部分的に基づいてメモリコントローラへの第1のメタデータ要求の送信をスケジューリングすることを行う。
【0143】
一例では、メモリトラフィックスケジューラは、読み取りデータトランザクションキューおよび書き込みデータトランザクションキューを含み、メモリトラフィックスケジューラはさらに、メモリコントローラへの読み取りデータトランザクションキューからの第1の読み取りデータトランザクションの送信を、読み取りデータトランザクションキューにおける第1の読み取りデータトランザクションの位置および読み取りデータトランザクション帯域幅に少なくとも部分的に基づいてスケジューリングすること、および、メモリコントローラへの書き込みデータトランザクションキューからの第1の書き込みデータトランザクションの送信を、書き込みデータトランザクションキューにおける第1の書き込みデータトランザクションの位置および書き込みデータトランザクション帯域幅に少なくとも部分的に基づいてスケジューリングすることを行う。
【0144】
用語「回路(circuit)」および「回路(circuitry)」は本明細書では区別なく使用されることに留意されたい。本明細書で使用されるように、これらの用語および用語「ロジック」は、単独でまたは任意の組み合わせで、アナログ回路、デジタル回路、ハードワイヤード回路、プログラマブル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェアロジック回路、状態機械回路、および/または任意の他のタイプの物理ハードウェアコンポーネントを指すように使用される。実施形態は多くの異なるタイプのシステムにおいて使用され得る。例えば、1つの実施形態では、通信デバイスは、本明細書に説明されるさまざまな方法および技法を実行するように配置可能である。当然ながら、本発明の範囲は通信デバイスに限定されるものではなく、代わりに、他の実施形態は、命令を処理するための他のタイプの装置、または、コンピューティングデバイス上で実行されることに応答して、デバイスに、本明細書に説明される方法および技法の1つまたは複数を実行させる命令を含む1つもしくは複数の機械可読媒体を対象とし得る。
【0145】
実施形態はコードで実施され得、かつ、命令が記憶されている非一時的記憶媒体上に記憶され得、非一時的記憶媒体は命令を実行するためのシステムをプログラミングするために使用可能である。実施形態はまた、データで実装され得、かつ少なくとも1つの機械によって使用される場合、少なくとも1つの機械に、1つまたは複数の動作を実行するための少なくとも1つの集積回路を作らせる非一時的記憶媒体上に記憶され得る。加えてさらなる実施形態は、SoCまたは他のプロセッサの製品にするとき、1つまたは複数の動作を実行するようにSoCまたは他のプロセッサを構成する情報を含むコンピュータ可読記憶媒体に実装され得る。記憶媒体は、限定されるものではないが、フロッピディスク、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスクリードオンリメモリ(CD-ROM)、書き換え可能コンパクトディスク(CD-RW)、および光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)などの半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気もしくは光カード、または電子的命令を記憶するのに好適な任意の他のタイプの媒体を含み得る。
【0146】
本発明は限定された数の実施形態に関して説明されているが、当業者はこれらから多くの修正および変形を認識することになるであろう。添付の特許請求の範囲は、本発明の真の趣旨および範囲内にあるそのような変更例および変形を全て包含することが意図される。
[他の考えられる項目]
(項目1)
複数のメタデータ要求を記憶するためのメモリであって、前記複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、メモリと、
前記メモリおよびメモリコントローラに結合されるスケジューラであって、前記スケジューラは、前記メモリコントローラへの前記複数のメタデータ要求の第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、および前記メモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることを行い、前記メタデータ帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューラとを含む、装置。
(項目2)
前記スケジューラはさらに、前記メモリコントローラへの送信のために第1のデータトランザクション優先度レベルと関連付けられた第1のデータトランザクションを受信すること、前記第1のデータトランザクションと関連付けられたメタデータがメタデータキャッシュにおいて利用可能であるかどうかを判断すること、および、前記判断に基づいて前記第1のデータトランザクション優先度レベルから継承された第1のメタデータ優先度レベルを有するように前記メタデータと関連付けられた前記第1のメタデータ要求を生成することを行う、項目1に記載の装置。
(項目3)
前記スケジューラはさらに、第1のデータトランザクション優先度レベルと関連付けられたデータトランザクション優先度タグを含む第1のデータトランザクションを受信すること、および、前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のデータトランザクション優先度レベルから継承されることになる、生成することを行う、項目1に記載の装置。
(項目4)
前記スケジューラはさらに、複数のコアのうちの第1のコアから第1のデータトランザクションを受信することであって、前記第1のコアは第1のコア優先度レベルと関連付けられる、受信すること、および、前記第1のデータトランザクションと関連付けられたメタデータに対する前記第1のメタデータ要求と関連付けるための前記第1のメタデータ優先度レベルを生成することであって、前記第1のメタデータ優先度レベルは前記第1のコア優先度レベルから継承されることになる、生成することを行う、項目1に記載の装置。
(項目5)
前記メモリは、複数のメタデータ要求キューであって、前記複数のメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられる、複数のメタデータ要求キューをさらに含み、前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすることを行う、項目1に記載の装置。
(項目6)
前記スケジューラはさらに、前記第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別すること、前記メタデータ帯域幅の前記第1の帯域幅部分と関連付けられた帯域幅可用性データを生成すること、および、前記第1のコアが、前記帯域幅可用性データに基づいて前記装置に送信されたいくつかのデータトランザクションを管理できるように、前記帯域幅可用性データを前記第1のコアに送信することを行う、項目1に記載の装置。
(項目7)
前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた前記複数のメタデータ要求のうちのいくつかのメタデータ要求を帯域幅調整閾値と比較すること、および、前記比較に基づいて前記メタデータ帯域幅の前記第1の帯域幅部分を動的に調整することを行う、項目1に記載の装置。
(項目8)
前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた前記複数のメタデータ要求のうちのいくつかのメタデータ要求がコアスロットリング閾値を超えるかどうかを判断することであって、前記第1のメタデータ優先度レベルは低優先度レベルである、判断すること、および、前記第1のメタデータ優先度レベルを有するメタデータ要求と関連付けられたデータトランザクションの生成を担う複数のコアのうちの第1のコアを識別し、かつ前記判断に基づいてデータトランザクションスロットリング要求を前記第1のコアに送信することを行う、項目1に記載の装置。
(項目9)
前記複数のメタデータ優先度レベルの各々はメタデータ優先度レベル重みと関連付けられ、前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求に前記メタデータ帯域幅の前記第1の帯域幅部分を割り当てることを行う、項目1に記載の装置。
(項目10)
前記メモリは少なくとも2つのメタデータ要求キューを含み、前記少なくとも2つのメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられ、前記スケジューラはさらに、前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすることを行う、項目1に記載の装置。
(項目11)
前記スケジューラは、前記複数のメタデータ要求が前記第1のメタデータ優先度レベルと関連付けられた別のメタデータ要求を含むかどうかを判断すること、および、前記判断に基づいて前記メタデータ帯域幅の前記第1の帯域幅部分の帯域幅を使用して前記メモリコントローラへの前記複数のメタデータ要求の第2のメタデータ要求の送信をスケジューリングすることであって、前記第2のメタデータ要求は前記複数のメタデータ優先度レベルのうちの第2のメタデータ優先度レベルを有する、スケジューリングすることをさらに行う、項目1に記載の装置。
(項目12)
前記スケジューラはさらに、前記メモリコントローラへの前記複数のメタデータ要求のうちの第2のメタデータ要求の送信を、前記第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベル、および前記メタデータ要求帯域幅の第2の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記第2の帯域幅部分は前記第2メタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられ、前記メタデータ帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルが前記第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいて前記メタデータ帯域幅の前記第2の帯域幅部分未満である、スケジューリングすることを行う、項目1に記載の装置。
(項目13)
記憶されている命令を含み、前記命令は、機械によって実行される場合、前記機械に、
メモリトラフィックスケジューラにおける複数のデータトランザクションを受信することであって、前記複数のデータトランザクションの各々は、トランザクション受信時間およびデータトランザクション優先度レベルと関連付けられる、受信すること、
前記メモリトラフィックスケジューラにおいて複数のメタデータ要求を生成することであって、前記複数のメタデータ要求の各々は、前記複数のデータトランザクションのうちの1つ、および前記複数のデータトランザクションのうちの前記1つの前記データトランザクション優先度レベルから継承された複数のメタデータ優先度レベルのうちのメタデータ優先度レベルと関連付けられる、生成すること、および、
メモリコントローラへの第1のデータトランザクションと関連付けられた前記複数のメタデータ要求のうちの第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、前記第1のデータトランザクションと関連付けられた第1の受信時間、および前記メモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記メタデータ帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューリングすることを行わせる、機械可読媒体。
(項目14)
前記機械に、前記メモリコントローラへの第2のデータトランザクションと関連付けられた前記複数のメタデータ要求のうちの第2のメタデータ要求の送信を、前記第2のメタデータ要求と関連付けられた第2のメタデータ優先度レベル、前記第2のデータトランザクションと関連付けられた第2の時間の受信、および前記第2のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられた前記メタデータ要求帯域幅の第2の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記メタデータ帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルが前記第2のメタデータ優先度レベルより低いことに少なくとも部分的に基づいて前記メタデータ帯域幅の前記第2の帯域幅部分未満である、スケジューリングすることを行わせる命令をさらに含む、項目13に記載の機械可読媒体。
(項目15)
前記機械に、前記複数のメタデータ優先度レベルの各々をメタデータ優先度レベル重みと関連付けること、および、前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ優先度レベル重みに少なくとも部分的に基づいて前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求に前記メタデータ帯域幅の前記第1の帯域幅部分を割り当てることを行わせる命令をさらに含む、項目13に記載の機械可読媒体。
(項目16)
複数のコアと、
メモリコントローラと、
メタデータキャッシュと、
前記複数のコア、前記メモリコントローラ、および前記メタデータキャッシュに結合されるメモリトラフィックスケジューラであって、前記メモリトラフィックスケジューラは、
複数のメタデータ要求を記憶することであって、前記複数のメタデータ要求の各々は複数のメタデータ優先度レベルのうちの1つと関連付けられる、記憶すること、および、
前記メモリコントローラへの前記複数のメタデータ要求のうちの第1のメタデータ要求の送信を、前記第1のメタデータ要求と関連付けられた第1のメタデータ優先度レベル、および前記メモリコントローラへのメタデータ要求の送信に割り当てられたメタデータ要求帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記メタデータ帯域幅の前記第1の帯域幅部分は、前記第1のメタデータ優先度レベルと関連付けられたメタデータ要求の送信に割り当てられる、スケジューリングすることを行うメモリトラフィックスケジューラとを備える、システム。
(項目17)
前記メモリトラフィックスケジューラは、複数の読み取りデータトランザクションを記憶することであって、前記複数の読み取りデータトランザクションの各々は複数の読み取りデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、前記メモリコントローラへの前記複数の読み取りデータトランザクションのうちの第1の読み取りデータトランザクションの送信を、前記第1の読み取りデータトランザクションと関連付けられた第1の読み取りデータトランザクション優先度レベル、および前記メモリコントローラへの読み取りデータトランザクションの送信に割り当てられた読み取りデータトランザクション帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記読み取りデータトランザクション帯域幅の前記第1の帯域幅部分は前記第1の読み取りデータトランザクション優先度レベルと関連付けられた読み取りデータトランザクションの送信に割り当てられる、スケジューリングすることをさらに行う、項目16に記載のシステム。
(項目18)
前記メモリトラフィックスケジューラは、複数の書き込みデータトランザクションを記憶することであって、前記複数の書き込みデータトランザクションの各々は複数の書き込みデータトランザクション優先度レベルのうちの1つと関連付けられる、記憶すること、および、前記メモリコントローラへの前記複数の書き込みデータトランザクションのうちの書き込みデータトランザクションの送信を、第1の書き込みデータトランザクション関連付けられた第1の書き込みデータトランザクション優先度レベル、および前記メモリコントローラへの書き込みデータトランザクションの送信に割り当てられた書き込みデータトランザクション帯域幅の第1の帯域幅部分に少なくとも部分的に基づいてスケジューリングすることであって、前記書き込みデータトランザクション帯域幅の前記第1の帯域幅部分は前記第1の書き込みデータトランザクション優先度レベルと関連付けられた書き込みデータトランザクションの送信に割り当てられる、スケジューリングすることをさらに行う、項目16に記載のシステム。
(項目19)
前記メモリトラフィックスケジューラは少なくとも2つのメタデータ要求キューを含み、前記少なくとも2つのメタデータ要求キューの各々は前記複数のメタデータ優先度レベルのうちの1つと関連付けられ、前記メモリトラフィックスケジューラは、前記第1のメタデータ優先度レベルと関連付けられた前記第1のメタデータ要求を生成すること、前記第1のメタデータ要求を前記第1のメタデータ優先度レベルと関連付けられた第1のメタデータ要求キューに入れること、および、前記第1のメタデータ要求キューにおける前記第1のメタデータ要求の位置に少なくとも部分的に基づいて前記メモリコントローラへの前記第1のメタデータ要求の送信をスケジューリングすることをさらに行う、項目16に記載のシステム。
(項目20)
前記メモリトラフィックスケジューラは、読み取りデータトランザクションキューおよび書き込みデータトランザクションキューを含み、前記メモリトラフィックスケジューラはさらに、前記メモリコントローラへの前記読み取りデータトランザクションキューからの第1の読み取りデータトランザクションの送信を、前記読み取りデータトランザクションキューにおける前記第1の読み取りデータトランザクションの位置および読み取りデータトランザクション帯域幅に少なくとも部分的に基づいてスケジューリングすること、および、前記メモリコントローラへの前記書き込みデータトランザクションキューからの第1の書き込みデータトランザクションの送信を、前記書き込みデータトランザクションキューにおける前記第1の書き込みデータトランザクションの位置および書き込みデータトランザクション帯域幅に少なくとも部分的に基づいてスケジューリングすることをさらに行う、項目19に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12A
図12B
図13
図14
図15
図16
【外国語明細書】