CXL 协议(1.1版本)学习笔记(三)
3.2 CXL.cache
通道总览
CXL.cache有两个方向,分别是H2D(host to device) 和 D2H(device to host),每个方向包含3各通道,分别是请求通道(Request)、响应通道(Response)和数据通道(Data)。如下图图1。
D2H 请求通道:方向是从device到host的,请求的目标是存储。对应每个请求,device会收到0个、1个或2个响应和至少一个64字节的cacheline数据。通道可以被反压(一种用于控制流量的方式)。
D2H响应通道:方向是从device到host的,回复的是H2D通道的请求,响应主要包含的是device内cacheline的状态,也会用来指示数据是否正在返回到host的数据缓冲器中。必须要保证响应一直在进行,否则可能会出现堵塞。偶尔出现的堵塞可能是由于链路层的信用问题导致的。
D2H数据通道:方向是从device到host的,回复的是H2D通道的请求,用来传送从device到host的数据和字节使能信号。一般数据就是一整个的cacheline,64字节。同响应通道类似,也可能会出现由于链路层信用导致的堵塞现象。
H2D请求通道:方向是从host到device的,主要针对的是cache的一致性监听。发起请求之后可能会有数据返回来,请求中带有数据存放的位置。H2D请求可能会由于device资源的限制,导致被反压。
H2D响应通道:方向是从host到device的,主要回复的是D2H的请求,通道里主要是有顺序的消息,并且用于拉取写的数据,但是数据是不走这个通道的,应该是发起拉取回数据的消息,消息里面还包括取回数据存放的位置。每一个响应都有一个ID,它是与D2H的请求相对应的ID。该通道可能由于链路层的信用被偶尔堵塞。
H2D数据通道:方向是从host到device的,主要回复的是D2H的读请求,般数据就是一整个的cacheline,64字节。同响应通道类似,也可能会出现由于链路层信用导致的堵塞现象。
通道消息顺序
一般认为通道之间是相互独立的,但是实际上,各个通道之间的消息,是具有一定的先后顺序的。举例说明,host必须保持等待,直到device在H2D响应通道上观测到host发出的响应消息(Global Ordering,简写为GO),才能继续发出后面对同一地址的访问。为了限制device中buffer需要追踪的GO消息数量,host假定在给定周期内通过 CXL.cache 发送的 GO 消息不能被稍后周期发送的监听所传递。
对于在同一个通道内同时有多个消息的事务(像FastGO或ExtCmp类型的),device或host假定他们之间的顺序是任意的。对于在同一通道中不同时产生的消息(如WritePull和Wrlnv),host或device必须保证他们顺序的通过cxl.cache通道。
通道信用
难以评估通道发送消息的能力,因为有时候链路层的信用不够会导致通道堵塞。发送方有了信用才能发送消息,信用来自于接收方的授权。只要接收方能够授权出信用,就尽量授权,没有要求信用都回到哪一边。下表描述了哪些通道必须排空才能保持前进,哪些可以无限期地阻塞。
从表中可以看出,D2H请求可以被无限期的阻塞,其他通道都可以有反压操作。
来源:https://zhuanlan.zhihu.com/p/411686499
相关阅读:
CXL 协议(1.1版本)学习笔记(一)
本文内容仅代表作者观点,不代表平台观点。
如有任何异议,欢迎联系我们。
2021年的第一场雪!英特尔2020年Q4财报解读
科普:数字IC设计中的ECO是什么?
博文速递:Physical Design Inputs
GPU基本处理流程