Type 1 (CXL.io) CXL device
This protocol is used for device initialization, link-up, enumeration and device discovery. It is used for devices like FPGAs and IPUs that support CXL.io. Type 1 devices implement a fully coherent cache but no host-managed device memory.
Type 2 (CXL.cache) CXL device
This protocol implements an optional coherent cache and host-managed device memory. Typical applications are devices that have high-bandwidth memory attached.
Type 3 (CXL.mem) CXL device
This protocol is used only for host-managed device memory. Typical applications are as memory expanders for the host.