JP2024526014A - アドレス変換タイプパケットの伝送 - Google Patents
アドレス変換タイプパケットの伝送 Download PDFInfo
- Publication number
- JP2024526014A JP2024526014A JP2023570058A JP2023570058A JP2024526014A JP 2024526014 A JP2024526014 A JP 2024526014A JP 2023570058 A JP2023570058 A JP 2023570058A JP 2023570058 A JP2023570058 A JP 2023570058A JP 2024526014 A JP2024526014 A JP 2024526014A
- Authority
- JP
- Japan
- Prior art keywords
- entries
- group
- request
- assigned
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013519 translation Methods 0.000 title claims abstract description 130
- 230000005540 biological transmission Effects 0.000 title description 6
- 230000004044 response Effects 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000014616 translation Effects 0.000 claims description 127
- 230000002093 peripheral effect Effects 0.000 claims description 39
- 239000004744 fabric Substances 0.000 abstract description 42
- 238000004891 communication Methods 0.000 abstract description 31
- 230000015654 memory Effects 0.000 description 82
- 238000012545 processing Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 239000000523 sample Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Abstract
共有リソースをターゲットとする要求及び応答をルーティングするための装置、システム及び方法が開示される。通信ファブリック内のキューは、リクエスタと共有リソースとの間の経路に位置する。いくつかの実施形態では、共有リソースは、エンドポイントに記憶された共有アドレス変換キャッシュである。キューと共有リソースとの間の物理チャネルは、複数の仮想チャネルをサポートする。キューは、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のリクエスタのうち単一のリクエスタからの各アドレス変換要求タイプに対する仮想チャネルを含む。所定のリクエスタに対する少なくとも1つのエントリが割り当て解除される場合に、キューは、空のエントリがキューの唯一の利用可能なエントリである場合でも、割り当てられた仮想チャネルからの要求のみを用いてこのエントリを割り当てる。
【選択図】図4
【選択図】図4
Description
(関連技術の説明)
コンピューティングシステムでは、いくつかのタイプのアプリケーションは、他のアプリケーションよりも並列処理及び共有メモリを利用可能な機能を実行する。このようなアプリケーションの例としては、機械学習アプリケーション、娯楽及びリアルタイムアプリケーション、並びに、いくつかのビジネス、科学、医療及び他のアプリケーションが挙げられる。いくつかのプロセッサアーキテクチャは、2つ以上の処理ユニット(例えば、CPU、GPU、マルチメディアエンジン等)又は処理コアを含むが、場合によっては、メモリに結合された1つ又は2つの追加の処理ユニット又はコアは、所望のレベルの性能を提供するのに十分なレベルの並列性を必ずしも提供しない。
コンピューティングシステムでは、いくつかのタイプのアプリケーションは、他のアプリケーションよりも並列処理及び共有メモリを利用可能な機能を実行する。このようなアプリケーションの例としては、機械学習アプリケーション、娯楽及びリアルタイムアプリケーション、並びに、いくつかのビジネス、科学、医療及び他のアプリケーションが挙げられる。いくつかのプロセッサアーキテクチャは、2つ以上の処理ユニット(例えば、CPU、GPU、マルチメディアエンジン等)又は処理コアを含むが、場合によっては、メモリに結合された1つ又は2つの追加の処理ユニット又はコアは、所望のレベルの性能を提供するのに十分なレベルの並列性を必ずしも提供しない。
読み出し及び書き込みアクセスコマンド並びに対応するデータに加えて、コヒーレンシプローブ、割り込み及び他の通信メッセージも、通信ファブリック(又はファブリック)を介してシステム内で転送される。ファブリック内の相互接続の例は、バスアーキテクチャ、クロスバーベースのアーキテクチャ、ネットワークオンチップ(network-on-chip、NoC)通信サブシステム、ダイ間の通信チャネル、チップを並べてスタックするために使用されるシリコンインターポーザ、プロセッサダイの上に専用ダイを垂直にスタックするために使用されるスルーシリコンビア(through silicon via、TSV)等である。
多くの場合では、ファブリックは複数の物理チャネルを有し、各々が比較的広いパケットをサポートする。単一ファブリック内でデータを転送する間、ファブリックは、比較的多数の物理ワイヤが利用可能であるため、レイテンシを低減する。しかしながら、ファブリックを介して別々のダイを一緒に接続する場合に、及び、別々の処理ノードを一緒に接続する場合に、各々がそれぞれのファブリックを用いて、データが著しく少ない数の物理ワイヤを介して転送され、これは、利用可能な帯域幅を制限する。場合によっては、リンク物理ワイヤは、ダイ上の物理ワイヤデータレートの倍数であるデータレートでデータを転送する。しかしながら、ダイ間及びノード間で通信する場合に、依然として帯域幅が大幅に低減される。
データを転送するための上記の非効率性に加えて、通信ファブリック内の中間キューが満杯になるか、又は、エイジ(age)に基づいて発行のためにエントリに優先順位を付けることが可能である。エントリは、要求又は対応する応答を含むパケットを記憶する。優先度の低いパケットがキューによって発行される間に、優先度の高いパケットが待機する可能性がある。1つ以上のキューが、リクエスタから共有リソースへの第1のパス上で優先度の高い要求を遅延させ、追加的に、1つ以上のキューが、共有リソースからリクエスタへの第2のパス上の要求に対応する優先度の高い応答を遅延させる場合に、性能が低下する。
上記に鑑みて、共有リソースをターゲットとする要求及び応答を効率的にルーティングするための効率的な方法及びシステムが望まれる。
本発明は、様々な修正及び代替形態の余地があるが、具体的な実施形態が例として図面に示されており、本明細書で詳細に説明される。しかしながら、図面及びその詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲に含まれる全ての修正、均等物及び代替物を包含するものであることを理解されたい。
以下の説明では、本発明の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに、本発明が実施され得ることを認識すべきである。いくつかの例では、本発明を不明瞭にすることを避けるために、周知の回路、構造及び技術が詳細に示されていない。更に、説明の簡略性及び明確性のために、図に示される要素は、必ずしも縮尺どおりに描画されていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている。
共有リソースをターゲットとする要求及び応答を効率的にルーティングするための装置、システム及び方法が企図される。様々な実施形態では、コンピューティングシステムは、通信ファブリックを介して複数のリクエスタによってアクセスされる共有リソースを含む。様々な実施形態では、共有リソースは、ページテーブルの仮想アドレスから物理アドレスへの変換の少なくとも一部のコピーである。場合によっては、宛先は、共有ページテーブルを記憶するメモリコントローラである。他の場合では、宛先は、共有ページテーブルの一部分のコピーを記憶するI/O周辺デバイス(又は周辺デバイス)である。通信ファブリック内のキューは、共有ページテーブルへのアクセスを要求するソースと、共有ページテーブルを含む宛先と、の間のパスに位置する。キューは、宛先からのサービスを要求する要求をそのエントリに記憶する。
キューは、キューから宛先にデータを転送する単方向チャネルを含む。転送されたデータは、キューによって発行のために選択された1つ以上の要求を含む。単方向チャネルは「物理チャネル」と呼ばれ、これは、キューと宛先との間の所定数の物理ワイヤを含む。したがって、物理チャネルは、送信機及び受信機回路構成並びに記憶素子等の物理チャネルをサポートするための物理リソースの限界を有する。物理チャネルの数を増加させることによって宛先のアクセスを要求する複数のソースに対するスループットを増加させるのではなく、キューは、既存の物理チャネル上での時分割多重化をサポートする。キューによってサポートされる時分割多重化は、キューと宛先との間に複数の「仮想チャネル」を生成する。したがって、単一物理チャネル上のデータ転送は、物理リソースを増加させることなく、複数の仮想チャネルに対して行われる。場合によっては、仮想チャネルは、特定のソースに割り当てられる。他の場合では、仮想チャネルが特定の要求タイプに割り当てられる。更に他の場合では、仮想チャネルは、特定のソースからの特定の要求タイプに割り当てられる。
ソースと宛先との間のキューの回路構成は、アービトレーションユニット及び制御ユニットを含む。キューの制御ユニットは、複数のソースからの要求を記憶するキューの割り当てられたエントリ及び割り当てられていないエントリを維持する。一実施形態では、制御ユニットは、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。アドレス変換要求の一例は、1つ以上の仮想アドレスから物理アドレスへの変換のコピーを宛先から取り出すことを要求する読み出し要求である。アドレス変換要求の別の例は、宛先に記憶された1つ以上の記憶された仮想アドレスから物理アドレスへの変換を無効にすることを要求する無効化要求である。
アービトレーションユニットは、1つ以上の属性等の選択基準に基づいて、発行するために割り当てられたエントリから1つ以上の要求を選択する。所定の仮想チャネルに対する少なくとも1つ以上の割り当てられたエントリが空である場合に、回路構成は、これらのエントリに、割り当てられていないエントリに記憶された所定の仮想チャネルの要求を割り当てる。しかしながら、制御ユニットが、所定の仮想チャネルに割り当てられた未割り当てのエントリがないと判定した場合、制御ユニットは、割り当てられた1つ以上のエントリを空として維持する。例えば、制御ユニットは、割り当てられた1つ以上のエントリがキューの唯一の利用可能なエントリである場合であっても、割り当てられた1つ以上のエントリを他の仮想チャネルに割り当てない。
図1を参照すると、少なくともアドレス変換要求を記憶するキュー100の一実施形態の一般化したブロック図が示されている。図示した実施形態では、キュー100は、キューエントリ110(又はエントリ110)、アービトレーションユニット130、及び、制御ユニット140を含む。加えて、右下隅には2つのキーが示されている。キーは、ソースに関連付けられたデバイスタイプを説明するマッピング、並びに、ソース及び要求タイプへの仮想チャネルのマッピングを提供する。エントリ110は、1つ以上の宛先に送信される1つ以上のソースからの様々な要求タイプを記憶する。エントリ110は、割り当てられたエントリ112、114、116と、割り当てられていないエントリ(未割り当てのエントリ)118と、の両方を含む。アービトレーションユニット130は、1つ以上の属性等の選択基準に基づいて、宛先に発行するために、割り当てられたエントリ112、114、116から1つ以上の要求を選択する回路構成を含む。1つ以上の発行された要求は、物理チャネル132を介して宛先に送信される。発行された要求のエントリは、仮想チャネルに基づいて割り当てられていないエントリ118に記憶された要求によって後に割り当てられる。制御ユニット140は、エントリ110の割り当てを維持し、割り当てられたエントリ112、114、116及び割り当てられていないエントリ118にいくつのエントリを提供するかを判定する回路構成を含む。
図1の右下隅は、2つのキーを含む。第1のキーは、デバイスタイプへのソースのマッピングを含む。例えば、「Src1」又はソース1は、コンピューティングシステムの第1の中央処理装置(central processing unit、CPU)である。同様に、「Src2」又はソース2は、コンピューティングシステムの第2の中央処理装置(CPU)であり、以下同様である。特定の数のデバイス及びタイプのデバイスが第1のキーに示されているが、他の実施形態では、キュー100を使用するコンピューティングシステムは、別の数及びタイプのデバイスを含む。第2のキーは、ソース及び要求タイプへの仮想チャネル(virtual channel、VC)のマッピングを含む。例えば、「VC1」又は仮想チャネル1は、CPU1及びCPU2であるソース1及び2からのメモリ書き込み要求タイプに割り当てられる。仮想チャネルは、複数のソースからのメモリ書き込み要求及びメモリ読み出し要求に割り当てられるが、単一のチャネルは、単一のソースとアドレス変換要求タイプとの組み合わせに割り当てられることに留意する。したがって、ソースがアドレス変換要求タイプを生成する場合に、何れのソースも仮想チャネルを共有しない。示されるように、各仮想チャネルは、割り当てられたエントリ112、114、116の単一の割り当てられたエントリを有する。他の実施形態では、仮想チャネルは、割り当てられたエントリ112、114、116の1つ以上のエントリを有する。
エントリ110は、様々なランダムアクセスメモリ(random access memory、RAM)、連想メモリ(content addressable memory、CAM)、複数のレジスタ又はフリップフロップ回路等のうち何れかを用いて実装される。いくつかの実施形態では、エントリ110は、同じ宛先をターゲットとする複数のソースからの様々なトランザクションを記憶する。キュー100は、通信ファブリックを介して複数のソースからトランザクションを受信する。通信ファブリックは、ソースと宛先との間の要求、応答、及び、他のタイプのメッセージの転送をサポートする。ソースの例としては、中央処理ユニット(CPU)、オーディオ及びビジュアルデータのうち1つ以上を処理するマルチメディアエンジン、特定用途向け集積回路(application specific integrated circuit、ASIC)、グラフィック処理ユニット(graphics processing unit、GPU)、様々な入力/出力(input/output、I/O)周辺デバイスのうち何れか等である。ソースは、リクエスタ及び「クライアント」とも呼ばれ、宛先によってサービスされる要求及びメッセージを生成することができる。宛先の例としては、メモリコントローラ及びソースが受信した要求によってサービスを実行するように要求される場合のソースの例が挙げられる。宛先は、「エンドポイント」とも呼ばれ、これは、デバイスをターゲットとするクライアントから受信された要求をサービスするデバイスである。
エントリ110に記憶されるトランザクションの例は、メモリ読み出し要求、メモリ書き込み要求、メモリスヌープ(プローブ)要求、トークン又はクレジットメッセージ、及び、アドレス変換要求である。他の実施形態では、要求タイプの他の例も含まれる。アドレス変換要求の一例は、1つ以上の仮想アドレスから物理アドレスへの変換のコピーを宛先から取り出すことを要求する読み出し要求である。アドレス変換要求の別の例は、宛先に記憶された1つ以上の記憶された仮想アドレスから物理アドレスへの変換を無効にすることを要求する無効化要求である。右下隅の2つのキーは、メモリ書き込み要求、メモリ読み出し要求、及び、アドレス変換要求についての情報を提供するが、他の実施形態では、他のタイプの要求が仮想チャネルの割り当てに含まれる。
オペレーティングシステムは、仮想アドレス空間をソフトウェアプロセスに割り当て、アドレス空間は特定のサイズのブロックに分割される。各ブロックは、アドレス空間の「ページ」である。仮想ページは、物理メモリのフレームにマッピングされ、物理アドレスへの仮想アドレスのマッピングは、物理メモリ内の仮想ページの記憶された位置を追跡する。これらのマッピングはページテーブルに記憶され、外部システムメモリはこのページテーブルを記憶する。ページテーブルの少なくとも一部のコピーは、宛先のアドレス変換キャッシュに記憶される。アドレス変換キャッシュは、トランスレーションルックアサイドバッファ(translation look-aside buffer、TLB)と呼ばれることもある。ページテーブルの少なくとも一部のこのコピーを記憶する宛先の例は、システムメモリのためのメモリコントローラ、及び、I/O周辺デバイス(又は周辺デバイス)等のエンドポイントのうち1つ以上を含む。
キュー100は、エントリ110からの発行のために選択された1つ以上の要求を宛先に転送する物理チャネル132を含む。転送されたデータは、キューによって発行のために選択された1つ以上の要求を含む。物理チャネル132は、キュー100と宛先との間の所定数の物理ワイヤを含む。したがって、物理チャネル132は、送信機及び受信機回路構成並びに記憶素子等の物理チャネルをサポートするための物理リソースの限界を有する。スループットを改善するために物理チャネル132の数を増加させるのではなく、制御ユニット140は、既存の物理チャネル132上で時分割多重化をサポートする。制御ユニット140によってサポートされる時分割多重化は、キュー100と宛先との間に複数の「仮想チャネル」を作成する。
場合によっては、制御ユニット140は、仮想チャネルを特定のソースに割り当てる。他の場合では、制御ユニット140は、仮想チャネルを特定の要求タイプに割り当てる。例えば、制御ユニットは、メモリ書き込み要求のために、割り当てられたエントリ112を維持する。追加的に、制御ユニットは、メモリ読み出し要求のために、割り当てられたエントリ114を維持する。更に、制御ユニットは、アドレス変換要求のために、割り当てられたエントリ116を維持する。割り当てられたエントリの3つのセットが示され、それぞれが特定の数のエントリを有するが、割り当てられたエントリの別の数のセットが可能であり、企図される。割り当てられたエントリの各セットが、示された数とは別の数のエントリを有することも可能である。
割り当てられたエントリ116はアドレス変換タイプに割り当てられているが、図示した実施形態では、単一のエントリが特定の仮想チャネルに割り当てられることに留意されたい。ここで、仮想チャネルは、特定のソースからのアドレス変換要求に割り当てられる。一例では、仮想チャネル(VC)8は、ディスプレイエンジンからのアドレス変換要求に割り当てられ、VC9は、第1のタイプの周辺デバイスからのアドレス変換要求に割り当てられ、VC10は、第2のタイプの周辺デバイスからのアドレス変換要求に割り当てられる等である。ここで、仮想チャネル識別子7~10が使用されるが、他の実施形態では、他の識別子が使用される。制御ユニット140は、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。これに対して、VC1は、CPU1及びCPU2等の2つ以上のソースからのメモリ書き込み要求に割り当てられる。
示されるように、エントリ110は、受信した要求に対応する情報を記憶するための複数のフィールド120~128を含む。特定の数及びタイプのフィールドがエントリ110に示されているが、他の実施形態では、別の数のフィールド及び他のタイプのフィールドがエントリ110に記憶される。示されるように、エントリ110は、対応するエントリに要求が割り当てられているかどうかを示す少なくとも1つの有効(valid、V)ビットを記憶するステータスフィールド120等のメタデータを記憶する。フィールド122は、仮想チャネル(VC)識別子(identifier、ID)を記憶する。仮想チャネルIDは、アプリケーションのランタイム中に動的に割り当てられる。割り当て段階中に、個々の仮想チャネルIDが、複数のソースのうち単一のソースからのアドレス変換要求タイプに割り当てられる。フィールド124は、「Src」として示されるソース又はクライアント識別子(identifier、ID)を記憶する。ソースIDは、要求を生成し送信したソースを識別する。
また、エントリ110は、「Arb」によって示されるアービトレーション値を記憶するフィールド126を含む。アービトレーション値は、1つ以上の属性等の選択基準に基づく。これらの属性の例は、要求の受信した優先度レベル、サービス品質(quality-of-service、QoS)パラメータ、ソース識別子(ID)、リアルタイムアプリケーション等のアプリケーションID又はタイプ、仮想チャネルID、帯域幅要件又はレイテンシ耐性要件、エイジの指標等である。いくつかの実施形態では、これらの値は、エントリ110の個々のフィールドに記憶され、アービトレーションユニット130は、これらの値のうち1つ以上を受信し、割り当てられたエントリ112、114、116の中からエントリの最終属性値を判定する。他の実施形態では、制御ユニット140は、これらの値のうち1つ以上を受信し、エントリ110に記憶するための最終属性値を判定する。制御ユニット140は、少なくともエイジに基づいてこれらのアービトレーション値を更新する。
エントリ110のフィールド128は、メモリ書き込み要求、メモリ読み出し要求、アドレス変換要求等の要求タイプを含む。キューエントリ110の他のフィールド(図示せず)に記憶される他のタイプの情報の例は、要求に対応するターゲットアドレス、読み出し又は書き込むデータサイズの指標、対応する要求のエイジの指標、宛先ID、キュー100が対応する要求を受信する前の通信ファブリック内の前のホップのID、ソフトウェアプロセスID、アプリケーションID、リアルタイムデータ又は非リアルタイムデータ等のデータタイプの指標等である。
選択基準から判定された最終値に少なくとも基づいて、アービトレーションユニット130は、物理チャネル132を介して宛先に発行するために、割り当てられたエントリ112、114、116から1つ以上の要求を選択する。いくつかの実施形態では、アービトレーションユニット130が、発行する割り当てられたエントリ112、114、116から2つ以上の要求を発行するように選択する場合に、アービトレーションユニット130は、各アービトレーション段階中に、割り当てられたエントリ116から少なくとも1つの要求を選択する。各アービトレーション段階は、実装に応じて、1つ以上のクロックサイクル又はパイプライン段階であり得る。言い換えれば、アービトレーションユニット130は、キューエントリ110から要求が発行されるごとに、割り当てられたエントリ116から少なくとも1つの要求を選択する。したがって、アービトレーションユニット130は、各アービトレーション段階中に、割り当てられたエントリ116の仮想チャネルのグループから少なくとも1つのアドレス変換要求を発行のために選択するが、選択されたアドレス変換要求は、割り当てられたエントリ112、114内の1つ以上の要求よりも低いアービトレーション値を有する。一例では、アービトレーションユニット130は、各アービトレーション段階中に発行のために2つの要求を選択する。アービトレーションユニット130は、アービトレーション値10及び9を有する仮想チャネル5及び6のエントリ114の2つのメモリ読み出し要求を選択するのではなく、エントリ114のVC5及びアービトレーション値10を有するメモリ読み出し要求と、エントリ116のVC9及びアービトレーション値6を有するアドレス変換要求と、を選択する。このようにして、アービトレーションユニット130は、アドレス変換要求ができるだけ早く宛先に送信されることを保証する。
割り当てられたエントリ116の1つ以上のエントリが空(V=0)であるか、又は、割り当て解除されている場合に、制御ユニット140は、これらのエントリに、割り当てられていないエントリ118に記憶された対応する仮想チャネルからのアドレス変換要求を割り当てる。割り当てられたエントリ112、114のエントリは、エントリに割り当てられたタイプの要求と同様に割り当てられる。しかしながら、制御ユニット140が、対応する仮想チャネルに割り当てられた未割り当て(割り当てられていない)エントリ118がないと判定した場合、制御ユニット140は、割り当てられたエントリ116の1つ以上のエントリを空として維持する。例えば、制御ユニット140は、割り当てられた1つ以上のエントリがエントリ110の唯一の利用可能なエントリである場合であっても、エントリ116の割り当てられた1つ以上のエントリを他の仮想チャネルに割り当てない。例えば、VC=1及びArb=8に対するアドレス変換タイプが割り当てられたエントリ116のエントリが、発行のために選択されたことに起因して割り当て解除され、エントリ118のうち何れのエントリもVC=1に対する要求を有しない場合、VC=1に割り当てられたエントリ116のエントリは、割り当てられていないエントリ118に記憶された要求が、割り当てられたエントリ112、114、116内のエントリを必要としているにもかかわらず、割り当て解除されたままである。別の例は、割り当てられていないエントリ118がVC=7に対する要求を有しない場合に、割り当てられていないエントリ118に記憶された要求が、割り当てられたエントリ112、114、116内のエントリを必要とするにもかかわらず割り当て解除されたままである、エントリ116のVC=7に対するエントリである。
いくつかの実施形態では、制御ユニット140は、仮想チャネルに基づいて、エントリ112、114、116のうち割り当てられたエントリから開始して、受信された要求を順番に連続して割り当てる。このような実施形態では、制御ユニット140は、割り当てられたエントリ112、114、116のうち対応するエントリにおける特定の仮想チャネルに対応する最も古い要求を維持する。特定の仮想チャネルの観点から、キュー100は、先入れ先出し(first-in-first-out、FIFO)データ記憶を提供するように見える。キュー100は、共有アドレス変換キャッシュへのアクセスを要求するソースと、共有アドレス変換キャッシュを含む宛先と、の間のパスに位置することに留意する。いくつかの実施形態では、少なくともキュー100及び宛先は、相互接続通信プロトコルをサポートし、このプロトコルは、アドレス変換要求をルーティングするための仕様を含む。いくつかの実施形態では、サポートされる仕様は、PCIe(Peripheral Component Interconnect Express)相互接続通信プロトコルのATS(Address Translation Services)仕様である。ATS仕様は、エンドポイント上のアドレス変換の遠隔キャッシング(記憶)をサポートする。他の実施形態では、別の仕様及び別の相互接続通信プロトコルがサポートされる。
キュー100と同様の別のキューが、少なくともアドレス変換要求に対応する応答を記憶するために使用されることにも留意する。応答のタイプとしては、アドレス変換読み出し要求がグラントされるかどうかを示す完了確認、無効化要求がグラントされるかどうかを示す確認、及び、要求された仮想アドレスから物理アドレスへの変換の1つ以上のコピー等の応答データを含む。様々な実施形態では、この他のキューは、キュー100と同様に編成され、キューエントリに記憶された応答は、同様に処理される。
図2を参照すると、ファブリックパケット送信機200の一実施形態の一般化したブロック図が示されている。図示した実施形態では、ファブリックパケット送信機200は、各々がそれぞれのタイプのパケットを記憶するためのキュー210、230を含む。いくつかの実施形態では、パケットは、フロー制御ユニット(フリット(flit))である。フリットは、より大きなパケットのサブセットである。フリットは、概して、データ及びより大きなパケットのためのヘッダ及びテール情報等の制御情報を運ぶ。伝送のためのデータが、ネットワーク内でルーティングされるパケットとして説明されるが、他の実施形態では、伝送のためのデータは、ポイントツーポイント相互接続におけるビットストリーム又はバイトストリームである。様々な実施形態では、キュー210、230は、ファブリックリンクを介して送信される制御パケットを記憶する。フリットに対応するより大きなパケット等の対応するデータパケットは、他のキューに記憶される。他の実施形態では、キュー210、230はデータパケットを記憶し、対応する制御パケットは他のキューに記憶される。
ファブリックパケット送信機200が、要求を生成するソースから要求をサービスする宛先へのデータフローに配置される場合に、キュー210、230に記憶される制御パケットタイプの例は、メモリ読み出し要求タイプ、メモリ書き込み要求タイプ、プローブ(スヌープ)メッセージタイプ、トークン又はクレジットタイプ、アドレス変換読み出しアクセスタイプ、及び、アドレス変換無効化タイプである。ファブリックパケット送信機200が、要求をサービスする宛先から、要求がサービスされるのを待機するソースへのデータフローに配置される場合に、キュー210、230に記憶される制御パケットタイプの例は、読み出し応答タイプ、書き込み応答タイプ、プローブ(スヌープ)応答タイプ、アドレス変換読み出しアクセス応答タイプ、及び、アドレス変換無効化応答タイプである。パケットタイプの他の例も、別の実施形態に示される。
いくつかの実施形態では、キュー210は、制御要求タイプである「タイプ1」のパケットを記憶する。キュー230は、一実施形態におけるアドレス変換要求タイプである「タイプN」のパケットを記憶する。他の実施形態では、「タイプ1」及び「タイプN」は、要求タイプではなく、個別の仮想チャネルに対応する。先に説明したように、アドレス変換要求の一例は、1つ以上の仮想アドレスから物理アドレスへの変換のコピーを宛先から取り出すことを要求する読み出し要求である。アドレス変換要求の別の例は、宛先に記憶された1つ以上の記憶された仮想アドレスから物理アドレスへの変換を無効にすることを要求する無効化要求である。キュー210と230との間のキューは、「タイプ2」~「タイプN-1」のパケットを記憶し、これらは、実装に応じて、他の制御応答タイプ又は他の個別の仮想チャネルを含む。したがって、図2には2つのキューしか示されていないが、ファブリックパケット送信機200は、任意の数のキューを含む。キュー210、230が別々のキューとして示されているが、他の実施形態では、キュー210、230のエントリが単一のキュー内に維持される。
キュー210、230は、様々なランダムアクセスメモリ(RAM)、連想メモリ(CAM)、複数のレジスタ又はフリップフロップ回路等のうち何れかを用いて実装される。制御ユニット220は、ファブリックパケット送信機200が新しいパケットを受信した場合に、キュー210の何れのエントリを割り当てるかを判定するために、回路構成等のハードウェアを使用する。また、制御ユニット220は、パケットがキュー210に割り当てられ、キュー210から発行される場合に、パケットのソースに割り当てられたクレジット又はトークンを更新する。例えば、制御ユニット220は、エントリが満杯になる場合、又は、満杯になるエントリの閾値数内にある場合に、キュー210のエントリにおけるデータ衝突を回避するために、新しいパケットを受信する間のクロックサイクル(又はサイクル)の最小数を判定する。制御ユニット240は同様の機能を有するが、キュー230内のデータにアクセスする方式は、キュー230内に記憶されたパケットのタイプに起因して、キュー210内のデータにアクセスする方法とは異なってもよい。
様々な実施形態では、キュー230、制御ユニット240及びキューアービタ242は、(図1の)キュー110、制御ユニット130及びアービトレーションユニット120について先に説明したのと同様の機能を有する。しかしながら、(図1の)キュー110は、アドレス変換タイプに割り当てられた仮想チャネル以外の仮想チャネルの要求を記憶している。ここで、キュー230は、アドレス変換タイプのみに割り当てられた仮想チャネルの要求を記憶する。制御ユニット240は、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。いくつかの実施形態では、ファブリックパケット送信機200は、通信ファブリック内の中間位置で使用されるが、(図1の)キュー100は、宛先の前の最後のキューとして使用される。
キューアービタ222は、ファブリックリンク上で送信するためにキュー210のエントリに記憶されたパケットを選択する回路構成を使用する。いくつかの実施形態では、キューアービタ222は、1つ以上の属性に基づいて、割り当てられたエントリからのパケットの優先度レベルを判定する。先に説明したように、これらの属性は、要求の受信した優先度レベル、サービス品質(QoS)パラメータ、ソース識別子(ID)、リアルタイムアプリケーション等のアプリケーションID又はタイプ、仮想チャネルID、帯域幅要件又はレイテンシ耐性要件、エイジの指標等のうち1つ以上である。ファブリックリンクが利用可能である場合に、1つ以上の候補パケット224がファブリックリンク上で送信される。同様に、キューアービタ242は、ファブリックリンク上で送信するためにキュー230から1つ以上の候補パケット244を選択する。いくつかの実施形態では、キューアービタ222~242は、クロックサイクルごとにキュー210~230から候補パケット224~244を選択する。他の実施形態では、パケットは、以前に選択された候補パケット230~234がリンクパケットに挿入され、ファブリックリンク上で送信された後に選択される。
先に説明したように、キュー230は、(通信ファブリックにおけるデータフローのアップストリーム又はダウンストリームの方向に応じて、)アドレス変換要求に対応するパケットタイプ又はアドレス変換応答に対応するパケットタイプである「タイプN」のパケットを記憶する。例えば、特定のページテーブルにアクセスする許可を有するリクエスタが、TLBミスを生成し、リクエスタは、特定のページテーブルの少なくとも一部のコピーへのアクセスを制御するメモリコントローラ又は他のエンドポイントにアドレス変換要求を送信している。様々な実施形態では、アドレス変換要求は、ページテーブルウォークを開始する。他の実施形態では、アドレス変換要求は、特定のページテーブルからの要求されたアドレス変換のコピーを記憶する特定のTLBにアクセスする。キュー230は、リクエスタからメモリコントローラ又は他のエンドポイントへのパス上の中間キューである。代替的には、メモリコントローラ又は他のエンドポイントは、対応するアドレス変換応答をリクエスタに送信しており、キュー230は、メモリコントローラ又は他のエンドポイントからリクエスタへのパス上の中間キューである。「タイプN」の受信したパケットは、キュー230のエントリ252~266のうち何れかに記憶される。
いくつかの実施形態では、アドレス変換は、共有ページテーブルを記憶するメモリコントローラ又は他のエンドポイント等の共有リソースに記憶される。いくつかの実施形態では、アドレス変換要求は、PCIe(Peripheral Component Interconnect Express)相互接続通信プロトコルのATS(Address Translation Services)仕様に基づく要求である。ATS仕様は、エンドポイント上のアドレス変換の遠隔キャッシング(記憶)をサポートする。キュー230並びに制御ユニット240及びキューアービタ242等のサポート回路構成は、共有ページテーブルにアクセスするリクエスタに対してアドレス変換要求をサービスするレイテンシを短縮する。例えば、制御ユニット240は、割り当てられたエントリ250としてエントリ252~254を維持し、一方、制御ユニット240は、割り当てられていないエントリ(未割り当てのエントリ)260としてエントリ262~266を維持する。様々な実施形態では、特定のページテーブルへのアクセスを有する各リクエスタは、割り当てられたエントリ250内に少なくとも1つの割り当てられたエントリを有する。複数のリクエスタのうち特定のリクエスタからの各アドレス変換要求には、特定の仮想チャネルが割り当てられる。特定の仮想チャネルについて、エントリ250の少なくとも1つの割り当てられたエントリの各々が割り当てられ、受信したパケットが特定のリクエスタに対応する場合に、制御ユニット240は、割り当てられていないエントリ260のうち利用可能なエントリを割り当てのために選択する。
キューアービタ242は、割り当てられたエントリ250に記憶されたパケットから発行する1つ以上のパケットを選択する。一実施形態では、割り当てられたエントリ250のパケットがエイジ閾値を超える場合、キューアービタ242はパケットを選択する。そうでない場合、キューアービタ242は、先に説明したように1つ以上の属性に基づいて、発行するために割り当てられたエントリ250からパケットを選択する。追加的に、キューアービタ242は、最も最近に選択されたアルゴリズム、ラウンドロビンアルゴリズム等に基づいて、割り当てられたエントリ250からパケットを選択することができる。特定のリクエスタに対するエントリ250のうち割り当てられたエントリが空である(割り当て解除されている)場合に、制御ユニット240は、エントリ250のうちこれらのエントリに、特定のリクエスタに対応する割り当てられていないエントリ260からのパケットを割り当てる。したがって、いくつかの実施形態では、制御ユニット240は、割り当てられたエントリ250のうち何れかにおいて、所定の仮想チャネルからの最も古いパケットを維持する。例えば、制御ユニット240は、特定の仮想チャネルからのパケットを順番にサービスする。
しかしながら、制御ユニット240が、特定の仮想チャネルに割り当てられるエントリ260のうち割り当てられていないエントリがないと判定する場合、制御ユニット240は、エントリ250のうち割り当てられた1つ以上のエントリを、特定の仮想チャネルに対して空として維持する。例えば、制御ユニット240は、これらの割り当てられた1つ以上のエントリがキュー230の唯一の利用可能なエントリである場合であっても、エントリ250のこれらの空のエントリに他の仮想チャネルからのパケットを割り当てない。したがって、エントリ250のうち少なくとも1つのエントリは、現在、特定の仮想チャネルがキュー230内に割り当てられたエントリを有していないにもかかわらず、特定の仮想チャネルに対して利用可能なままである。その結果、エントリ252~266のうちに利用可能なエントリがないためにキュー230でブロックされるアドレス変換パケット(要求又は応答)を有する、共有ページテーブルへのアクセスを有する仮想チャネルはない。むしろ、各仮想チャネルは、割り当てられたエントリ250のうち少なくとも1つの利用可能なエントリを有することが保証される。
ここで、図3を参照すると、少なくともアドレス変換要求を転送するコンピューティングシステム300の一実施形態の一般化されたブロック図が示されている。示されるように、コンピューティングシステム300は、メモリコントローラ340、周辺デバイス380及び390、並びに、複数のクライアントの各々の間の通信ファブリック310を含む。メモリコントローラ340は、メモリ350とインターフェースするために使用される。複数のクライアントの例は、中央処理ユニット(CPU)360、グラフィック処理ユニット(GPU)362、ハブ364、並びに、周辺デバイス380及び390である。ハブ364は、マルチメディアエンジン368と通信するために使用される。いくつかの実施形態では、1つ以上のハブが、マルチメディアプレーヤ(すなわち、マルチメディアエンジン368のためのハブ364)、ディスプレイユニット等にインターフェースするために使用される。このような場合では、ハブがコンピューティングシステム300内のクライアントである。いくつかの実施形態では、周辺デバイス380及び390のうち1つ以上がハブを使用する。各ハブは、追加的に、様々な通信プロトコルに従ってデータ転送を処理するための制御回路構成及び記憶素子を含む。5つのクライアント360、362、364、380、390が示されているが、他の実施形態では、コンピューティングシステム300は、ディスプレイユニット、1つ以上の他の入力/出力(I/O)周辺デバイス等のように、任意の数のクライアント及び他のタイプのクライアントを含む。
いくつかの実施形態では、コンピューティングシステム300は、示された構成要素の各々が単一の半導体ダイ上に集積されたシステムオンチップ(system on a chip、SoC)である。他の実施形態では、構成要素は、システムインパッケージ(system-in-package、SiP)又はマルチチップモジュール(multi-chip module、MCM)における個々のダイである。様々な実施形態では、CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390は、スマートフォン、タブレットコンピュータ、ゲームコンソール、スマートウォッチ、デスクトップコンピュータ、バーチャルリアリティヘッドセット等において使用される。CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390は、転送するオンチップネットワークデータを生成することが可能なクライアントの例である。ネットワークデータの例としては、メモリアクセス要求、メモリアクセス応答データ、メモリアクセス確認、プローブ及びプローブ応答、アドレス変換要求、アドレス変換応答、アドレス変換無効化要求、並びに、クライアント間の他のネットワークメッセージが挙げられる。このネットワークデータは、ネットワークパケット(又はパケット)内に配置される。各パケットは、特定のタイプのネットワークデータを含む。例えば、1つのパケットは1つ以上の要求を含み、別のパケットは1つ以上の応答を含む等である。パケットは、少なくともソース、宛先、仮想チャネル、パケットタイプ、応答データのデータサイズ、優先度レベル、メッセージを生成したアプリケーション等を識別するために使用される複数の識別子を含むメタデータを有するヘッダを含む。
パケットを効率的にルーティングするために、様々な実施形態では、通信ファブリック310は、ネットワークスイッチを含むルーティングネットワーク320を使用する。様々な実施形態では、ファブリック310及びルーティングネットワーク320のうち1つ以上は、制御パラメータを記憶するためのステータスレジスタ及び制御レジスタを含む。いくつかの実施形態では、ファブリック310は、通信、データ伝送及び1つ以上のバスを介してパケットをルーティングするためのネットワークプロトコルをサポートするための回路構成等のハードウェアを含む。ファブリック310は、アドレスフォーマット、インターフェース信号、及び、同期/非同期クロックドメイン使用をサポートするための回路構成を含む。いくつかの実施形態では、ファブリック310のネットワークスイッチは、ネットワークオンチップ(NoC)スイッチである。一実施形態では、ルーティングネットワーク320は、ポイントツーポイント(point-to-point、P2P)リングトポロジにおいて複数のネットワークスイッチを使用する。他の実施形態では、ルーティングネットワーク320は、メッシュトポロジ内のプログラマブルルーティングテーブルを有するネットワークスイッチを使用する。更に他の実施形態では、ルーティングネットワーク320は、トポロジの組み合わせでネットワークスイッチを使用する。いくつかの実施形態では、ルーティングネットワーク320は、コンピューティングシステム300内のワイヤの数を低減するために1つ以上のバスを含む。例えば、インターフェース330~332のうち1つ以上は、ルーティングネットワーク320内の単一のバス上で読み出し応答及び書き込み応答を送信する。
CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390の各々は、ソース及び宛先となることができる。ソースは、サービスする宛先に対する要求を生成する。宛先は、要求をサービスし、対応するソースに任意の応答を送信する。先に説明したように、CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390はクライアントと呼ばれるが、これらの構成要素はエンドポイントでもある。先に説明したように、エンドポイントは、デバイスをターゲットとする要求をサービスする宛先として機能するデバイスである。
様々な実施形態では、ファブリック310、ルーティングネットワーク320、インターフェース312、314、316、330、332、334、及び、メモリコントローラ340のうち1つ以上は、ソースと宛先との間で転送されるパケットを記憶するために、キュー370~373等の中間キューを使用する。ルーティングネットワーク320のみがキュー370~373を使用するように示されているが、他の構成要素も同様のキューを含むことが可能であり、企図される。キュー370~373は、複数の機能を実行する制御回路構成及び記憶素子等のハードウェアを伴う付随する制御ユニット(control unit、CU)374~377を有する。これらの機能の例は、キューエントリのアクセス、キューエントリからのパケットの発行、及び、キューエントリ内のパケットの記憶の任意の再順序付けを制御することである。様々な実施形態では、キュー370~373及び付随する制御ユニット374~377は、(図1の)キュー100の機能を提供する。他の実施形態では、キュー370~373及び付随する制御ユニット374~377のうち1つ以上が、(図2の)ファブリックパケット送信機200の機能を提供する。
様々な実施形態では、通信ファブリック310(又はファブリック310)は、CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390の間でパケットを転送する。また、ファブリック310は、メモリ350と、CPU360、GPU362、マルチメディアエンジン366、周辺デバイス380及び390等のクライアント、並びに、他の周辺デバイス(図示せず)と、の間でデータを転送する。様々な実施形態では、インターフェース312~316及び330~334並びにメモリコントローラ340は、機能を提供するアルゴリズムを実装するためのハードウェア回路構成を含む。インターフェース312~316及び332~334は、ルーティングネットワーク320と、CPU360、GPU362、マルチメディアエンジン366、並びに、周辺デバイス380及び390と、の間で、データ、要求及び確認を転送するために使用される。インターフェース312~316及び332~334並びに制御ユニット374~377のうち1つ以上は、パケットを生成し、パケットを復号し、ルーティングネットワーク320との通信をサポートするための回路構成を含む。いくつかの実施形態では、インターフェース312~316及び330~334は、PCIe(Peripheral Component Interconnect Express)相互接続通信プロトコル等の通信プロトコルを使用する。他の実施形態では、別の通信プロトコルが使用される。いくつかの実施形態では、インターフェース312~316及び332~334の各々は、示されるように単一のクライアントと通信する。他の実施形態では、インターフェース312~316及び332~334のうち1つ以上は、複数のクライアントと通信し、クライアントを識別する識別子を使用してクライアントとのデータを追跡する。
メモリ350に対して単一のメモリコントローラ340が示されているが、他の実施形態では、コンピューティングシステム300は、各々が1つ以上のメモリチャネルをサポートする複数のメモリコントローラを含む。メモリコントローラ340は、メモリ350に送信される要求をグループ化し、バーストモードに対するサポートを有するメモリ350のタイミング仕様に基づいて、要求をメモリ350に送信する回路構成を含む。様々な実施形態では、メモリ350~390は、様々なランダムアクセスメモリ(RAM)のうち何れかを含む。いくつかの実施形態では、メモリ350は、データ及び対応するメタデータを同期RAM(synchronous RAM、SRAM)に記憶する。他の実施形態では、メモリ350は、様々なダイナミックRAM(dynamic RAM、DRAM)のうち何れかにデータ及び対応するメタデータを記憶する。例えば、実装に応じて、メモリ350は、従来のDRAM又は互いに積み重ねられた複数の三次元(three-dimensional、3D)メモリダイにデータを記憶する。示されていないが、メモリコントローラ340又は別のメモリコントローラは、メモリ350よりもメモリ階層の低いレベルでデータを記憶するために使用される不揮発性メモリへのアクセスを提供する。不揮発性メモリの例としては、ハードディスクドライブ(hard disk drive、HDD)、ソリッドステートドライブ(solid-state drive、SSD)等である。
アプリケーションを処理する場合に、クライアント360~366及び他の周辺デバイス(図示せず)は、頻繁にアクセスされるデータをキャッシュメモリサブシステムの1つ以上のキャッシュに記憶する。クライアント360~366及び他の周辺デバイスのプロセッサは、線形(又は「仮想」)アドレスを利用して、要求されたデータを識別する。要求されたデータの例は、ユーザデータ、最終結果データ、中間結果データ及び命令である。プロセッサによって実行されるソフトウェアプロセスの各々は、仮想アドレス空間を有する。仮想アドレス空間は、特定のサイズのページに分割される。例えば、4キロバイト(4KB)又は64キロバイト(64KB)のページサイズが可能であるが、他のサイズも企図される。仮想ページは物理メモリのフレームにマッピングされる。仮想アドレスの物理アドレスへのマッピングは、仮想ページがメモリ350内のページテーブル352等の物理メモリ内に記憶される場所を追跡する。単一のページテーブル352が示されているが、他の実施形態では、別の数のページテーブルがメモリ350に記憶される。
メモリ350へのアクセスを低減するために、ページテーブル352の1つ以上のサブセットのコピーを記憶するためにキャッシュが使用される。例えば、メモリコントローラ340は、コピーを記憶するトランスレーションルックアサイドバッファ(translation look-aside buffer、TLB)342を使用する。実行中の1つ以上のアプリケーションに応じて、1つ以上のエンドポイントは、ページテーブル352のサブセットのこれらのコピーにアクセスする許可を有する。示されるように、少なくともハブ364及び周辺デバイス380及び390は、この許可を有し、ページテーブル352のサブセットのコピーをアドレス変換キャッシュ(address translation cache、ATC)366、ATC382及びATC392に記憶する。プロセッサ又は他の回路構成は、所定のメモリアクセス要求の仮想アドレスを用いて、ATC366、ATC382及びATC392のうち対応する何れかにアクセスして、対応するアドレス変換キャッシュが、ターゲットデータを保持するメモリ位置の関連付けられた物理アドレスを記憶しているかどうかを判定する。
仮想から物理へのマッピングが見つからない場合、プロセッサ又は他の回路構成は、アドレス変換要求を生成してアドレス変換のオーナーに送信する。いくつかの例では、メモリコントローラ340がオーナーである。他の例では、周辺デバイス380等の周辺デバイスは、オペレーティングシステム又はアプリケーションによってオーナーとして指定される。例えば、アプリケーションが開始し、後に終了する場合に、オペレーティングシステム及びアプリケーションのうち1つ以上が、仮想チャネル割り当ての動的再設定を実行し、特定のクライアントが特定のページテーブルにアクセスするための許可をセットアップする。周辺デバイス390が、ATC392のアクセス中にミスが発生したと判定した場合、周辺デバイス390は、ATC382にアクセスするために周辺デバイス380に送信するアドレス変換要求を生成する。このアドレス変換アクセス要求及びその対応する応答は、キュー370~373のうち1つ以上を介してパケット内で伝送される。同様に、実行中のアプリケーションが完了し、アドレス変換がもはや必要とされない場合に、周辺デバイス390は、ハブ364及び周辺デバイス390の各々に送信するアドレス変換無効化要求を生成する。このアドレス変換無効化要求及びその対応する応答は、キュー370~373のうち1つ以上を介してパケット内で伝送される。キュー370~373及び付随する制御ユニット374~377の実施形態に基づいて、アドレス変換要求をサービスするレイテンシが短縮される。
以下に説明する方法400及び500は、キューの回路構成に使用される。キューは、共有リソースをターゲットとする要求をそのエントリに記憶する。複数のリクエスタが、共有リソースにアクセスする要求を生成する。いくつかの実施形態では、リクエスタは、コンピューティングシステムのクライアントであり、キューは、リクエスタと共有リソースとの間のパスに位置する。例えば、キューは、コンピューティングシステムの通信ファブリック内に位置する。様々な実施形態では、複数のリクエスタによる共有リソースへのアクセスは、相互接続通信プロトコルの仕様に基づく。いくつかの実施形態では、共有リソースは、メモリコントローラ又は別のエンドポイントのアドレス変換キャッシュに記憶された共有ページテーブルの一部のコピーであり、仕様は、PCIe(Peripheral Component Interconnect Express)相互接続通信プロトコルのATS(Address Translation Services)仕様である。ATS仕様は、エンドポイント上のアドレス変換の遠隔キャッシング(記憶)をサポートする。他の実施形態では、別の通信プロトコルがサポートされる。要求がリクエスタから共有リソースへ横断する場合、要求はキューに記憶される。キューの回路構成は、キューから要求をいつ発行すべきかを判定することに加えて、キューのエントリ内のデータ記憶を制御する。キューの回路構成は、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。先に説明した装置、パケット送信機、キュー及びシステムの何れかを使用して、方法400~500のステップを実施してもよい。これらのステップの更なる説明が以下の説明において提供される。
ここで図4を参照すると、少なくともアドレス変換要求を記憶するキューのエントリを効率的に割り当てるための方法400の一実施形態が示されている。説明のために、この実施形態(並びに図5)におけるステップを順番に示す。しかしながら、他の実施形態では、いくつかのステップは、図示したものとは異なる順序で行われ、いくつかのステップは、同時に実行され、いくつかのステップは、他のステップと組み合わされ、いくつかのステップは、存在しない。
特定のアプリケーションが開始すると、オペレーティングシステム及びアプリケーションのうち1つ以上が、仮想チャネル割り当ての動的再設定を実行し、特定のソースが特定のページテーブルにアクセスする許可をセットアップする。許可を有するソースのうち1つ以上は、周辺デバイス等のエンドポイントである。許可がグラントされたソースは、特定のページテーブル内のアドレス変換のコピーに対するアクセス要求を生成することができる。キューの回路構成は、キューの少なくとも1つのエントリを、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む仮想チャネルのグループの各仮想チャネルに割り当てる(402)。ここで、仮想チャネルは、特定のソースからのアドレス変換要求に割り当てられる。一例では、仮想チャネル(VC)1は、第1のタイプの周辺デバイスからのアドレス変換要求に割り当てられ、VC2は、第2のタイプの周辺デバイスからのアドレス変換要求に割り当てられ、VC3は、メモリコントローラからのアドレス変換要求に割り当てられる等である。ここで、仮想チャネル識別子1~3が使用されるが、他の実施形態では、他の識別子が使用される。したがって、キューの制御回路構成は、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。
回路構成は、エントリが未だ割り当てられていない場合に、バッファの1つ以上の割り当てられていないエントリを、複数のソースのうち何れかに利用可能なものとして維持する(ブロック404)。回路構成は、所定の仮想チャネルからアドレス変換要求を受信する(ブロック406)。アドレス変換要求の一例は、宛先から1つ以上の仮想アドレスから物理アドレスへの変換のコピーを取り出すことを要求する読み出し要求である。アドレス変換要求の別の例は、宛先に記憶された1つ以上の記憶された仮想アドレスから物理アドレスへの変換を無効にすることを要求する無効化要求である。回路構成が、割り当てられたエントリが所定の仮想チャネルに利用可能であると判定した場合(条件ブロック408:「はい」)、回路構成は、キューの利用可能な割り当てられたエントリを選択する(ブロック410)。続いて、回路構成は、選択されたエントリに受信した要求に割り当てる(ブロック414)。キューの制御回路構成は、複数のソースのうち単一のソースからの各アドレス変換要求タイプのための仮想チャネルを含む仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当てたため、割り当てられたエントリは、割り当てられたエントリが既に割り当てられている場合にのみ利用不可能である。キューのアービトレーション回路構成は、キューの割り当てられたエントリを検査する。その結果、共有アドレス変換へのアクセスを有する仮想チャネルは、利用可能な割り当てられたエントリがないことに起因して、アービトレーションからブロックされる要求を有さない。
回路構成が、割り当てられたエントリが所定の仮想チャネルに利用不可能であると判定した場合(条件ブロック408:「いいえ」)、回路構成は、キューの利用可能な割り当てられていないエントリを選択する(ブロック412)。続いて、回路構成は、選択されたエントリに受信した要求を割り当てる(ブロック414)。様々な実施形態では、キューは、割り当てられていないエントリが利用不可能である場合に、他のソース又はキューに指標を送信するため、キューは、利用可能な割り当てられていないエントリを有する。いくつかの実施形態では、キュー並びに他のソース及びキューは、回路構成がいくつの要求を受信することができるか、並びに他のソース及びキューの各々に対するいくつの要求が特定のクロックサイクルにおいて送信されることができるかを示す、いくつかのクレジットを維持する。
ここで図5を参照すると、少なくともアドレス変換要求を記憶するキュー要求のエントリから効率的に発行するための方法500の一実施形態が示されている。キューの回路構成は、アドレス変換キャッシュをターゲットとするリクエスタからの要求を記憶するキューの割り当てられたエントリ及び割り当てられていないエントリを維持する(ブロック502)。回路構成は、キューの割り当てられたエントリを検査する(ブロック504)。回路構成が、割り当てられたエントリがエイジ閾値を超えていないと判定した場合(条件ブロック506:「いいえ」)、回路構成は、発行のために、アービトレーション属性に基づいて割り当てられたエントリを選択する(ブロック510)。これらの属性の例は、要求の受信した優先度レベル、サービス品質(QoS)パラメータ、ソース識別子(ID)、リアルタイムアプリケーション等のアプリケーションID又はタイプ、仮想チャネルID、帯域幅要件又はレイテンシ耐性要件、エイジの指標等である。
様々な実施形態では、キューの制御回路構成は、仮想チャネルのグループの各仮想チャネルに少なくとも1つのエントリを割り当て、グループは、複数のソースのうち単一のソースからの各アドレス変換要求タイプに対する仮想チャネルを含む。いくつかの実施形態では、各アービトレーション段階中に、キューのアービトレーション回路構成がキューの割り当てられたエントリから発行する2つ以上の要求を選択する場合に、アービトレーション回路構成は、仮想チャネルの上記のグループの割り当てられたエントリから少なくとも1つの要求を選択する。アービトレーションは、実装に応じて1つ以上のクロックサイクルを要する。したがって、アービトレーション回路構成は、各アービトレーション段階中に仮想チャネルの上記のグループから少なくとも1つのアドレス変換要求を発行のために選択するが、選択されたアドレス変換要求は、他の仮想チャネルのうち1つ以上の要求よりも低いアービトレーション値を有する。
回路構成が、割り当てられたエントリがエイジ閾値を超えると判定した場合(条件ブロック506:「はい」)、回路構成は、発行のために、エイジ閾値を超える割り当てられたエントリを選択する(ブロック508)。割り当てられたエントリに記憶された2つ以上の要求がエイジ閾値を超えるエイジを有し、アービトレーション回路構成がそれらの全てを発行しない可能性がある場合、回路構成は、先に説明したように属性に基づいて要求のうちの1つ以上を選択する。回路構成は、選択され割り当てられたエントリの要求を発行する(ブロック512)。例えば、回路構成は、選択された要求を、共有アドレス変換キャッシュを含むエンドポイントに発行し、1つ以上の中間キューがエンドポイントに向かうパス上にあってもよい。
回路構成が、発行されたエントリの仮想チャネルに割り当てられた、割り当てられていないエントリがないと判定した場合(条件ブロック514:「いいえ」)、回路構成は、選択され割り当てられたエントリを空として維持する(ブロック516)。例えば、回路構成は、選択され割り当てられたエントリがキューの唯一の利用可能なエントリである場合でも、選択され割り当てられたエントリを他の仮想チャネルに対して割り当てない。回路構成が、発行されたエントリの仮想チャネルに割り当てられた、割り当てられていないエントリがあると判定した場合(条件ブロック514:「はい」)、回路構成は、選択され割り当てられたエントリに、仮想チャネルに対して割り当てられていないエントリからの要求を割り当てる(ブロック518)。続いて、方法500の制御フローはブロック502に戻り、回路構成は、キューの割り当てられたエントリ及び割り当てられていないエントリを維持する。
上述した実施形態のうち1つ以上が、ソフトウェアを含むことに留意されたい。そのような実施形態では、方法及び/又は機構を実施するプログラム命令は、コンピュータ可読媒体に伝達又は記憶される。プログラム命令を記憶するように構成されている多数のタイプの媒体が利用可能であり、ハードディスク、フロッピー(登録商標)ディスク、CD-ROM、DVD、フラッシュメモリ、プログラマブルROM(Programmable ROM、PROM)、ランダムアクセスメモリ(RAM)、及び、様々な他の形態の揮発性又は不揮発性記憶装置が挙げられる。一般的に言えば、コンピュータアクセス可能記憶媒体は、命令及び/又はデータをコンピュータに提供するために、使用中にコンピュータによってアクセス可能な任意の記憶媒体を含む。例えば、コンピュータアクセス可能記憶媒体としては、磁気又は光学媒体(例えば、ディスク(固定又は取り外し可能)、テープ、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、Blu-Ray(登録商標))等の記憶媒体が挙げられる。記憶媒体としては、RAM(例えば、同期ダイナミックRAM(synchronous dynamic RAM、SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)SDRAM、低電力DDR(LPDDR2等)SDRAM、ラムバスDRAM(Rambus DRAM、RDRAM)、スタティックRAM(static RAM、SRAM)等)、ROM、フラッシュメモリ等の揮発性又は不揮発性メモリ媒体、ユニバーサルシリアルバス(Universal Serial Bus、USB)インターフェース等の周辺インターフェースを介してアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)等が更に挙げられる。記憶媒体としては、微小電気機械システム(microelectromechanical system、MEMS)、並びに、ネットワーク及び/又はワイヤレスリンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
追加的に、様々な実施形態では、プログラム命令は、C等の高レベルプログラミング言語、若しくは、Verilog、VHDL等の設計言語(design language、HDL)、又は、GDS IIストリームフォーマット(GDSII)等のデータベースフォーマットでのハードウェア機能の動作レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述を含む。場合によっては、記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成する合成ツールによって読み出される。ネットリストは、システムを含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために、配置及びルーティングされ得る。次に、マスクは、システムに対応する半導体回路又は回路を生成するために、様々な半導体製造ステップで使用され得る。代替的に、コンピュータアクセス可能記憶媒体上の命令は、必要に応じて、ネットリスト(合成ライブラリを有する若しくは有しない)又はデータセットである。追加的に、命令は、Cadence(登録商標)、EVE(登録商標)及びMentor Graphics(登録商標)等のベンダからのハードウェアベースのタイプのエミュレータによるエミュレーションのために利用される。
上記の実施形態は、かなり詳細に説明されているが、上記の開示が十分に理解されると、多数の変形及び修正が当業者には明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
Claims (20)
- 装置であって、
複数のエントリであって、各エントリは、仮想チャネルの第1のグループ及び前記仮想チャネルの第1のグループとは異なる前記仮想チャネルの第2のグループのうち何れかに対応する要求を記憶するように構成されており、前記仮想チャネルの第2のグループの各仮想チャネルは、複数のリクエスタのうち異なるリクエスタからのアドレス変換要求を伝達するために割り当てられている、複数のエントリと、
回路構成と、を備え、
前記回路構成は、
前記複数のエントリのうち所定のエントリを、前記仮想チャネルの第2のグループの各仮想チャネルに割り当てることと、
割り当てられた前記所定のエントリの各々の少なくとも選択基準を利用して、前記複数のエントリから発行する1つ以上の要求を選択することと、
を行うように構成されている、
装置。 - 前記回路構成は、前記複数のエントリから要求が発行される毎に前記割り当てられた所定のエントリから少なくとも1つの要求を選択するように構成されている、
請求項1の装置。 - アドレス変換タイプの要求は、アドレス変換を記憶する共有ページテーブルの少なくとも一部のコピーをターゲットとするアクセス要求である、
請求項1の装置。 - 前記アドレス変換タイプの要求は、アドレス変換を記憶する共有ページテーブルの少なくとも一部のコピーをターゲットとする無効化要求である、
請求項3の装置。 - 前記仮想チャネルの第2のグループの何れかの仮想チャネルが割り当てられたリクエスタは、前記共有ページテーブルにアクセスする許可を有する複数のクライアント及び周辺デバイスのうち何れかである、
請求項3の装置。 - 前記回路構成は、前記アドレス変換のアドレスを含むアドレス空間が再定義されたという判定に少なくとも部分的に基づいて、
前記仮想チャネルの第2のグループを再定義することと、
前記複数のエントリのうち少なくとも1つを、再定義された前記第2のグループの各仮想チャネルに再割り当てすることと、
を行うように構成されている、
請求項3の装置。 - 前記回路構成は、
前記割り当てられた所定のエントリのうち何れかのエントリが割り当て解除されたことと、
前記割り当てられた所定のエントリのうち前記何れかのエントリに割り当てられた前記第2のグループの仮想チャネルの保留中の要求がないことと、
を判定したことに応じて、前記割り当てられた所定のエントリのうち前記何れかのエントリを割り当て解除されたものとして維持するように構成されている、
請求項1の装置。 - 前記回路構成は、
前記アドレス変換タイプとは異なる第1のタイプの第1の要求が前記複数のエントリに割り当てられる準備ができていることを示す割り当て要求を受信することと、
前記第1のタイプの要求に割り当てられた前記複数のエントリの中に、割り当てに利用可能なエントリが存在しないことと、前記複数のエントリの中に、割り当てに利用可能な未割り当てのエントリが存在しないことと、を判定したことに部分的に基づいて、前記第1の要求を割り当てるのを待機することを示す応答を送信することと、
を行うように構成されている、
請求項1の装置。 - 方法であって、
キューの複数のエントリの各エントリに、仮想チャネルの第1のグループ及び前記仮想チャネルの第1のグループとは異なる前記仮想チャネルの第2のグループのうち何れかからの要求を記憶することであって、前記仮想チャネルの第2のグループの各仮想チャネルは、複数のリクエスタのうち異なるリクエスタからのアドレス変換要求を伝達するために割り当てられている、ことと、
前記キューの回路構成が、前記複数のエントリのうち所定のエントリを前記仮想チャネルの第2のグループの各仮想チャネルに割り当てることと、
前記キューの回路構成が、割り当てられた前記所定のエントリの各々の少なくとも選択基準を利用して、前記複数のエントリから発行する1つ以上の要求を選択することと、を含む、
方法。 - 前記複数のエントリから要求が発行される毎に前記割り当てられた所定のエントリから少なくとも1つの要求を選択することを含む、
請求項9の方法。 - アドレス変換タイプの要求は、アドレス変換を記憶する共有ページテーブルの少なくとも一部のコピーをターゲットとするアクセス要求である、
請求項9の方法。 - 前記仮想チャネルの第2のグループの何れかの仮想チャネルが割り当てられたリクエスタは、前記共有ページテーブルにアクセスする許可を有する複数のクライアント及び周辺デバイスのうち何れかである、
請求項11の方法。 - 前記方法は、前記アドレス変換のアドレスを含むアドレス空間が再定義されたという判定に少なくとも部分的に基づいて、
前記仮想チャネルの第2のグループを再定義することと、
前記複数のエントリのうち少なくとも1つを、再定義された前記第2のグループの各仮想チャネルに再割り当てすることと、を含む、
請求項11の方法。 - 前記割り当てられた所定のエントリのうち何れかエントリが割り当て解除されたことと、
前記割り当てられた所定のエントリのうち前記何れかのエントリに割り当てられた前記第2のグループのある仮想チャネルの保留中の要求がないことと、
を判定したことに応じて、前記割り当てられた所定のエントリのうち前記何れかのエントリを割り当て解除されたものとして維持することを含む、
請求項9の方法。 - コンピューティングシステムであって、
要求を生成するように構成された複数のリクエスタと、
第1のキューと、
第1の回路構成と、を備え、
前記第1のキューは、
第1の複数のエントリであって、各エントリは、仮想チャネルの第1のグループ及び前記仮想チャネルの第1のグループとは異なる前記仮想チャネルの第2のグループのうち何れかからの要求を記憶するように構成されており、前記仮想チャネルの第2のグループの各仮想チャネルは、複数のリクエスタのうちの異なるリクエスタからのアドレス変換要求を伝達するために割り当てられている、第1の複数のエントリを含み、
前記第1の回路構成は、
前記複数のエントリのうち所定のエントリを、前記仮想チャネルの第2のグループの各仮想チャネルに割り当てることと、
割り当てられた前記所定のエントリの各々の少なくとも選択基準を利用して、前記複数のエントリから発行する1つ以上の要求を選択することと、
を行うように構成されている、
コンピューティングシステム。 - 前記第1の回路構成は、前記複数のエントリから要求が発行される毎に前記割り当てられた所定のエントリから少なくとも1つの要求を選択するように構成されている、
請求項15のコンピューティングシステム。 - アドレス変換タイプの要求は、アドレス変換を記憶する共有ページテーブルの少なくとも一部のコピーをターゲットとするアクセス要求である、
請求項15のコンピューティングシステム。 - 前記第1の回路構成は、前記アドレス変換のアドレスを含むアドレス空間が再定義されたという判定に少なくとも部分的に基づいて、
前記仮想チャネルの第2のグループを再定義することと、
前記複数のエントリのうち少なくとも1つを、再定義された前記第2のグループの各仮想チャネルに再割り当てすることと、
を行うように構成されている、
請求項17のコンピューティングシステム。 - 前記第1の回路構成は、
前記割り当てられた所定のエントリのうち何れかのエントリが割り当て解除されたことと、
前記割り当てられた所定のエントリのうち前記何れかのエントリに割り当てられた前記第2のグループの仮想チャネルの保留中の要求がないことと、
を判定したことに応じて、前記割り当てられた所定のエントリのうち前記何れかのエントリを割り当て解除されたものとして維持するように構成されている、
請求項15のコンピューティングシステム。 - 前記コンピューティングシステムは、
第2のキューと、
第2の回路構成と、を備え、
前記第2のキューは、
第2の複数のエントリであって、各エントリは、仮想チャネルの第3のグループ及び仮想チャネルの第4のグループのうち何れかへの応答を記憶するように構成されており、前記第4のグループの各仮想チャネルは、複数のリクエスタのうち単一のリクエスタに対するアドレス変換タイプの応答に割り当てられている、第2の複数のエントリを含み、
前記第2の回路構成は、
前記第2の複数のエントリのセットを前記第4のグループの各仮想チャネルに割り当てることと、
各アービトレーション段階において、割り当てられた前記第2の複数のエントリのセットからの選択基準を利用することと、
を行うように構成されている、
請求項15のコンピューティングシステム。
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024526014A true JP2024526014A (ja) | 2024-07-17 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755203B2 (en) | Multicore shared cache operation engine | |
JP7108135B2 (ja) | 並び替えの間のキャッシュ一貫性を維持する方法 | |
US7269709B2 (en) | Memory controller configurable to allow bandwidth/latency tradeoff | |
JP4926963B2 (ja) | 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法 | |
US11994996B2 (en) | Transmission of address translation type packets | |
US10152434B2 (en) | Efficient arbitration for memory accesses | |
US20130054896A1 (en) | System memory controller having a cache | |
JP2023156472A (ja) | 同じチャネルで不均一なレイテンシを有するメモリタイプのための応答のサポート | |
KR20200100151A (ko) | 집단화된 메모리 장치에 대한 메모리 요청 스케줄링 | |
US10684965B2 (en) | Method to reduce write responses to improve bandwidth and efficiency | |
JP2024526014A (ja) | アドレス変換タイプパケットの伝送 | |
JP7161032B2 (ja) | リンク層データパッキング及びパケットフロー制御スキーム | |
US11874783B2 (en) | Coherent block read fulfillment | |
US11960416B2 (en) | Multichannel memory arbitration and interleaving scheme | |
KR20220113515A (ko) | 전력 절감을 위한 클록 인에이블로서의 바이트 인에이블의 용도 변경 |