3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CXL (Compute Express Link) その5 - CXLとホストCPUとの接続

Posted at

私はメモリデバイスの不揮発性メモリ制御やホストIFなどを扱うソフト屋です。
仕事でCXL(Compute Express Link)まわりの技術に関わっています。
CXL技術に関連するメモ書きを残していこうと思います。
ホストまわりのこと経験・知識共に乏しいので、詳しい親切な方は教えて下さると幸いです。
また、間違い、アドバイス、その他、ご意見やご要望ありましたらお気軽にどうぞ。

1. CXL接続のトポロジー

CXLデバイスとホストCPUとのCXL接続を利用したトポロジーの例を下図に示します。
Topology.png
図中の「CXL1.1」で囲っている箇所はCXL1.1でサポート可能なトポロジー、「CXL2.0」で囲っている箇所はCXL2.0でサポート可能なトポロジーを示しています。
CXL2.0の仕様から、Switchが導入され、Switchを介して、ホストCPUとCXLデバイスの接続は、1対多の接続、多対多の接続がサポートされるようになりました。
ホストCPUとCXLデバイスが直接接続されているケースとSwitchを介して接続されているケース、いずれのケースでも、システムのソフトウェア視点で見ると、CXL Type3 Deviceのメモリ空間は、ホストCPUのNUMA Nodeとは、別のNUMA Nodeのメモリ空間として見えるよう扱われています。

2. CXLのバージョンと接続性

CXLに対応した機器は、ホストCPUとCXLデバイス両者とも下位互換が必須となっています。
CXLでの接続時、Upstream(ホスト側)とDownstream(デバイス側)、それぞれがサポートするバージョンと、接続で使用されるCXLのバージョンの一覧表を以下に示します。

Upstream Component Downstream Component Link Training Result
Host CPU - CXL 2.0 capable Switch - CXL 2.0 capable CXL 2.0 mode
Host CPU - CXL 1.1 capable Switch - CXL 2.0 capable Fail
Host CPU - CXL 2.0 capable Device - CXL 2.0 capable CXL 2.0 mode
Host CPU - CXL 2.0 capable Device - CXL 1.1 capable CXL 1.1 mode
(Hot-addはFail) ​
Host CPU - CXL 1.1 capable Device - CXL 2.0 capable CXL 1.1 mode
(Hot-addはFail)
Host CPU - CXL 1.1 capable Device - CXL 1.1 capable CXL 1.1 mode
(Hot-addはFail)
Switch - CXL 2.0 capable Device - CXL 2.0 capable CXL 2.0 mode
Switch - CXL 2.0 capable Device - CXL 1.1 capable CXL 1.1 mode
(Hot-addはFail)

Hot-Plug (Hot-AddとHot-Remove)のサポートは、CXL2.0以降となっていますので、ホストCPU側がCXL1.1の場合、デバイスがCXL2.0をサポートしていてもHot-Addには対応できません。
また、Switchの登場もCXL2.0以降となっていますので、ホストCPU側がCXL1.1の場合、Switchを接続しても、CXLでの通信はできません。

3. Memory Pooling

CXLでは、Memory Poolingを以下のように定義しています。

メモリリソースを効率的に利用するための、メモリリソースの動的な管理と割り当てを可能にするソフトウェア(OS、Fabric Manager)、ハードウェア(Platforms、Switches、Memory Devices)とプロトコル(CXL)の組み合わせ。

上記の定義に従うと、CXL2.0からMemory Poolingに対応していることになります。
CXLの仕様書では、MLD (Multi Logical Device)に対応し、デバイスのメモリ空間を動的にホストCPUに割り当てることができるType3のデバイスを、Pooled Deviceと呼んでいます。

MLDとSLDの接続例を下図に示します。
MLDSLD.png
MLDはメモリ空間を複数のホストCPUに割り当てることが可能なデバイスで、SLDはメモリ空間を1つのホストCPUにのみ割り当てることが可能なデバイスです。
図中のFabric Managerは、ホストCPUとデバイスとの結び付けを管理するための仕組みです。Fabric Managerは、Host CPUで動作するアプリケーションであっても良いし、BMC (Baseboard Management Controller)で動作するアプリケーションであっても構いません。
Fabric Managerの詳細についてもそのうち書いていこうと思います。


次回以降もCXLの仕様の詳細について書いていきます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?