查看原文
其他

CXL 协议(1.1版本)学习笔记(三)

进步进步在进步 IP与SoC设计 2022-04-30

03CXL 事务层


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版本)学习笔记(一)

CXL 协议(1.1版本)学习笔记(一)



本文内容仅代表作者观点,不代表平台观点。

如有任何异议,欢迎联系我们。


往期精彩回顾




2021年的第一场雪!英特尔2020年Q4财报解读



科普:数字IC设计中的ECO是什么?


博文速递:Physical Design Inputs


GPU基本处理流程


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存