2
2

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 1 year has passed since last update.

CXL (Compute Express Link) その10 - CXL.ioコマンド

Last updated at Posted at 2022-01-21

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

1. CXL.ioコマンド

CXLの仕様では、CXLメモリデバイスとそのメモリ空間の設定を行うためのコマンドが、CXL.ioを通して実行するコマンドとして定義されています。これらコマンドは、基本的に、ホストシステムがデバイスに対して発行します。
ホストシステムがコマンドを発行する際には、CXLの仕様書で定義されるMailboxレジスタが使用されます。

CXL.memの経路でCXLメモリデバイスのメモリ空間のデータへの読み書きを行い、CXL.ioの経路でCXLメモリデバイスおよびメモリ空間の設定を行う役割分担になっています。
ホストシステムがコマンドを発行する際には、CXLの仕様書で定義されるMailboxレジスタが使用されます。

PCIeの仕様でもMailboxレジスタが定義されていますが、CXLで定義されるMailboxレジスタとは別です。CXLメモリデバイスは、PCIeで定義されるMailboxレジスタと、CXLで定義されるMailboxレジスタの両者に対応する場合、それぞれのMailboxレジスタを持つ必要があります。

恐らくは、一般的なCXLメモリデバイスは、PCIeで定義されるMailboxレジスタとCXLで定義されるMailboxレジスタの両レジスタに対応することが必要になると思われます。
PCIeで定義されるMailboxレジスタは、ホストシステムのSWが、CXLメモリデバイスの性能情報であるCDATを読み出すために使用されます。ホストシステムのSWは、CDATの情報を使用してSRAT/HMATを生成することができます。
ホストシステムのSWは、基本的なCXLメモリデバイスの情報は、性能情報を含めてPCIeで定める仕様の範囲内で取得し、システムのメモリマップを構成し、構成した後、CXLメモリデバイスの持つメモリ空間の制御と読み書きをする際にはCXLで定める仕様に従うアクセスを行うことになると考えています。

CXL.ioを通して実行されるコマンドとして、以下に示す1.1から1.3に示す3つのカテゴリで、それぞれにコマンドセットが定義されています。
CXL.memの経路のコマンドでCXLメモリデバイスのメモリ空間のデータへの読み書きを行い、CXL.ioの経路のコマンドでCXLメモリデバイスおよびメモリ空間の設定を行う役割分担になっています。

1.1 CXL Device Command

CXLメモリデバイスの(直接メモリに関わらない)デバイスの制御に使用されるコマンド。

コマンドセット 概要
Events CXLメモリデバイスで発生したエラー情報等の取得に関係するコマンドセット。
Firmware Update CXLメモリデバイスのFWのアップデートに関係するコマンドセット。
Timestamp CXLデバイスの時間設定に関係するコマンドセット。
Logs CXLデバイス固有のログの取得に関係するコマンドセット。

1.2 Memory Device Commands

CXLメモリデバイスのメモリ空間の制御に使用されるコマンド。

コマンドセット 概要
Identify CXLメモリデバイスの情報(FWリビジョン、メモリ容量等)の取得に使用されるコマンドセット。
Capacity Config and Label Storage CXLメモリデバイスのメモリ空間のパーティションに関する情報の設定と取得に使用されるコマンドセット。
Health Info and Alerts CXLメモリデバイスの寿命情報等の取得に関係するコマンドセット。
Media and Poison Management CXLメモリデバイスで発生した訂正不可エラーに関するの情報の取得に使用されるコマンドセット。
Sanitize CXLメモリデバイスのメモリに書き込まれたデータの消去に使用されるコマンドセット。
Persistent Memory Data-at-rest Security CXLメモリデバイスのアクセスコントロールに使用されるコマンドセット。
SLD QoS Telemetry SLD対応のCXLメモリデバイスのQoSの情報を取得するために使用されるコマンドセット。

1.3 FM API Command

SwitchとMLD対応のCXLデバイスの制御に使用されるコマンド。
FMは、Fabric Managerの略で、ホストシステムにおいてCXLメモリデバイスのメモリ領域管理等の役目を持つものを指しています。

コマンドセット 概要
Switch Event Notifications CXLメモリデバイスが、FMに対するイベントの通知に使用されるコマンドセット。
Physical Switch Switchの情報や状態を取得するために使用されるコマンドセット。
Vitrual Switch 2つ以上のVCS(Virtual CXL Switch)の機能をサポートするSwitchに使用される。VCSの情報の取得、およびVCSの設定に使用されるコマンドセット。
MLD Port MLD対応のCXLメモリデバイスをサポートするためにSwitchで使用される。
MLD Components MLD対応のCXLメモリデバイスを制御するために使用されるコマンドセット。

Physical Switch、Vitrual Switch、MLD Portは、いずれもSwitchでサポートするコマンドセットです。MLD Componentsは、MLD対応のCXLメモリデバイスでサポートするコマンドセットです。


以上、コマンドセットはCXL2.0で定義されているコマンドセット全てを挙げています。次回以降、今回挙げたコマンドセットからピックアップして詳細について書こうと思っています。

2
2
1

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?