私はメモリデバイスの不揮発性メモリ制御やホスト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で定義されているコマンドセット全てを挙げています。次回以降、今回挙げたコマンドセットからピックアップして詳細について書こうと思っています。