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

CXL (Compute Express Link) その9 - Flit・Flex Bus

Posted at

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

#1. Control Flit

前回の"CXLその8"で触れたのですが、CXLには、メモリ空間のデータの読み書きのコマンドとレスポンスで使用されるProtocl Flitの他に、Control Flitがあります。
Control Flitは、ホストCPUとCXLデバイスにおける、CXL.cache/CXL.memのLink Layer間で発生するコマンド・レスポンスで使用されます。

Control Flitには以下の種類があります。

Type Name 概要
Retry 受信したFlitでCRCエラー検出時など、Flitの再送要求時に使用される。
LLCRD Flitを正常に受信できていること通知する。
IDE CXLのセキュリティ機能の制御に使用される。
INIT リンク層の初期化に使用される。

LLCRDの用途は、例えばホストCPUが短時間で多数のデータ書き込みコマンドを送り、CXLデバイス側がレスポンスを返すまでに時間が掛かってしまう場合等で使用されます。
前回の"CXLその8"で触れましたが、この場合、ホストCPUはAckが返ってくるまで、CXLデバイスからのRetry要求に備えて、コマンドとデータをバッファに保持しておく必要があります。、CXLデバイス側がレスポンスを返すまでに時間が掛かってしまう場合、ホストCPU側のバッファが溢れることを防ぐため、LLCRDでAckを通知します。

Control Flitでは、Slot0のみが使用され、Slot1からSlot3はReservedの扱いとなっています。

#2. Flex Bus Physical Layer

前回の"CXLその8"と今回でCXL.cache/CXL.memで扱われるFlitについて触れましたが、下図に示す通り物理層に当たるFlex Bus Physical Layerでは、PCIe/CXL.io経由で来るパケット(TLP/DLP)と、CXL.cache/CXL.mem経由で来るFlitが扱われます。
TLP/DLPについては、PCIeの仕様に従いますので、この記事では詳細には触れません。
FlexBusLayers.png

Flex Busで流れるデータのレイアウトの例を下図に示します。
図の例は、ホストCPUとCXLデバイスを16 Laneで接続し、TLP/DLPとFlitが混在している状態のレイアウトの例です。
flexbus_example.png

Flex Busでは、CXL.io/PCIe経由で来るTLP/DLPは、64B単位で分割され、先頭にProtocol ID(2B)とReserved(2B)が付加されます。CXL.cache/CXL.mem経由で来るFlit(64B+CRC2B)には、先頭にProtocol ID(2B)が付加されます。
CXL.io/PCIeとCXL.cache/CXL.memとの区別はProtocol IDで行われます。

図中の緑色箇所はTLP/DLPを示し、桃色箇所はFlitを示しています。


次回は、CXL.ioでやり取りされるコマンドについて書こうと思っています。

1
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
1
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?