| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【PCIe 6.0】缘起缘灭缘终尽,花开花落花归尘——缅怀被PCIe 6.0拿掉的LN(Lightweight Notification)协议 -> 正文阅读 |
|
[系统运维]【PCIe 6.0】缘起缘灭缘终尽,花开花落花归尘——缅怀被PCIe 6.0拿掉的LN(Lightweight Notification)协议 |
? 1. 初识LN??Lightweight Notification(LN),顾名思义,轻量级通知。PCIe 4.0时正式引入,并在PCIe 6.0中被移除。LN协议允许EP登记主存中的Cacheline,利用EP端的Cache来降低系统带宽需求并降低时延。所谓登记Cacheline是指 ① EP把主存指定位置的Cacheline的内容copy一份放到EP本地,② 主机记录其主存某Cacheline被某EP关注了。若主机或其他设备更新了主存中被登记的Cacheline,硬件会通知该EP其关注的这条Cacheline已被更新,EP请停止使用你本地的Cacheline备份,再用的话麻烦再次申请登记。
? 2. 当初为啥要加入LN???LN是一种能够满足几类关键应用模型的简单协议,其复杂度最小,成本最低。LN有其优点,所以PCI-SIG才考虑把LN写入到PCIe规范中。 ??PCIe系统中采用LN协议有以下潜在优点:
? 3. LN协议深度剖析3.1 支持LN协议的PCIe系统结构??LN协议中有两个较为关键的组件:LN Requester (LNR) 及 LN Completer (LNC)。LNR是EP中发送LN读写请求及接收LN Message的客户子系统,LNC是主机端接收LN读写请求及发送LN Message的服务子系统。 ??典型的支持LN协议的系统包括以下几部分:主处理器、主存、主机Fabric、RP、Switch及EP。下图是一个LN系统示意图(图1),其中EP X、EP Z及RCIEP 0各有一个LNR,RC为LNC。 3.2 LN协议基本操作??LN协议包括两种基本操作:LN Read 和 LN Write。LN Read和LN Write可以理解为EP读写主存,同时把主存该Cacheline对应的数据在EP端留个备份。LN Read是一种存储器读请求,LN Write是一种存储器写请求,LN Completion是一种Completion消息,跟其常规TLP的唯一不同是其TLP头标中的LN位为1。 ??LN协议允许多个LNR同时登记同一条Cacheline,单个LNR的LN协议操作示意图如下图所示(图2),左侧为LN Read,右侧为LN Write。 3.2.1 LN Read??LN Read基本操作步骤如下: ??1?? LNR发送LN Read给LNC,请求登记一条主存Cacheline。 3.2.2 LN Write??LN Write基本操作步骤如下: ??1?? LNR发送LN Write给LNC,请求写主存的Cacheline。 ????注意:带有LNR的EP任何时候都可以发生LN Write,而不用关心其他LNR有没有登记该Cacheline。 3.3 LN协议规则3.3.1 LN基本规则??LN协议遵循以下规则:
3.3.2 LN登记管理??鉴于LNC可以规定其登记Cacheline的最大数目,每个LNR的LNR能力结构内都应提供一种机制来约束该LNR最大登记Cacheline数目,以供软件取用。如有必要,该字段应该是软件可配置的。 ??LNC登记资源上限可以是高度可定制化的,比如根据集合相关性、最大集合数目、主存资源的不同集合等因素来设定。 ??LNC可以通过LN Message来告知LNR其关注的Cacheline已被注销,LNR同样可以告知LNC注销其Cacheline登记。为了管理LNR Outstanding登记的数量,LNR可以通过发送length为0的LN Write来注销LNC中相关Cacheline登记。 ??LNC接收到LNR的Cachelind登记请求后,可以对请求不予响应。但一旦响应,就必须确保登记的Cacheline地址是4KB对齐的,且登记的Cacheline粒度不能小于4KB。LNR在发送主存某区域的Cacheline登记请求前是不知道这段地址是否支持Cache登记的,为获取该信息,LNR可以发送LN Read请求到该区域内的任意Cacheline,看是否会收到LN Comletion,如果正确收到了LN Completion,表示可登记。若LNR仅仅是想确认这块区域是否可登记,而非真正登记,那么LNR可以发送长度为0的LN Read。 3.3.3 LN 事务排序??LN事务排序遵循以下规则:
3.4 LN协议总结??LN协议总结如下:
? 4. LN Message4.1 什么时候发送LN Message???LNC在以下两种情况时必须发送LN Message给LNR:
4.2 LN Message格式??LN协议采用PCI-SIG定义的VDM(Vender-Defined-Mechanism)机制,LN Message是一种带有2DW数据载荷的Type 1类型的VDM消息,其帧格式如图3所示。 ??LN Message的数据载荷为64bit的Cacheline地址,该地址为已更新或注销的Cacheline地址,该64bit地址适用于32bit地址及64bit地址。 ??LN Message的TLP Type为MsgD,Fmt为011b,Type为10***b(010->Directed,011->Broadcast),TC[2:0]为000b,Length为2,Attr[2:0]为**0b,LN为0(是0,只有LN Read、LN Write及LN Completion的LN才为1,LN Message中该字段不用特别标记,LNR照单收下并更新本地Cache就是了),Message Code为01111111b,Vender ID为0001h,Subtype字段为00h。NR字段用以指示发出该通知消息的原因,NR字段描述如表1所示。地址位[5:0]忽略,若CLS为128B,地址的第6bit应置零,LNR收到LN Message后也应忽略该位。 ??LN Message的Destination ID由方式决定,LN Message可以采用特定的ID进行基于ID的定向路由,也可以针对某一RP下的设备进行广播。
????注意:LN Message 的接收者可有选择性地对消息各字段有效性进行检查确认,若检查不通过则当作畸形包处理。 4.3 正确使用Broadcast LN Message??每一次Broadcast LN Message都会消耗链路带宽,且部分EP处理广播LN Message的速率很低。鉴于以上情况,为避免影响系统性能,LNC在广播LN Message的时候应该把要广播的Hierarchy Domain数目精确到最小,并把广播频率控制在允许的范围之内。 ??对于不支持LNR能力的EP而言,其收到LN Message后会将其视为异常情况并采用性能比较低的机制来处理。比如,利用设备Firmware来处理该Message,而非采用硬件处理,每次都要消耗ms级的处理时间。可想而知,若过度使用广播LN Message,势必会使成该Fabric上的转发请求形成反压,从而影响系统性能。 ??对于不支持LNR能力的EP,如果采用Directed LN Message,该Message之后被送到某个指定EP,虽然该EP也会消耗数ms来处理该异常情况,但并不会对系统整体性能由特别大的影响。当然,LNC理应只把Directed LN Message发送支持LN协议的EP,发送频率也应维持在合理的范围内,以避免影响性能。
? 5. LN配置5.1 LNR扩展能力结构??具备LN能力的LNR需实现LNR扩展能力结构(图4),该能力结构只能在EP中实现。LNR能力结构如图所示,主要包括LNR扩展能力头标、LNR控制寄存器及LNR能力寄存器3部分。 ??LN Requester Extended Capability(图5),LNR扩展能力头标,用以指示当前EP具备LNR能力、LNR能力版本,并指向下一扩展能力的偏移。 ??LNR Capability Register(图6),LNR能力寄存器。 ??LNR Control Register(图7),LNR控制寄存器。LNR enable字段用开启或关闭该EP的LNR能力; 5.2 LN软件配置??LN协议支持两种CLS:64B和128B,这两种CLS对RC和EP都是可选的。系统CLS由主机LN系统RP和RCRB的CLS字段决定。所有支持LNC的RP和RCRB中CLS字段值必须相同,否则大家各执一词,软件听谁的?系统允许过程中软件不能更改CLS的值,否则结果难以预计。 ??支持LN协议的EP必须支持一种或两种CLS,并通过LNR-64 Supported及LNR-128 Supported字段来指示其支持的CLS。LN系统中所有LNR被启用之后,软件必须确保相关LNR的CLS控制位跟系统CLS相匹配,否则结果难料。如果LNR只支持一种CLS,其CLS控制位可以硬链接,当值被软件篡改。 ??LNR使能期间软件不能改变LNR CLS控制位即LNR登记上限的值,否则结果难料。若LNR未使能,LNR的CLS控制位及LNR登记上限可以跟LNR使能位同时进行配置,即通过一次配置写完成。 ??软件可以随时关闭LNR,关闭LNR之后应及时清除其内部相关Cache状态。
? 6. PCIe 6.0后时代下的LN6.1 为何又要移除LN???至于为何要删除LN,咱不知道官方理由是啥。作为事后诸葛亮的我,个人感觉LN存在的意义不大,主要有以下几点原因:
6.2 移除之后,还兼容既有的支持LN的设备吗???PCIe 4.0和PCIe 5.0软硬件系统是支持LN的,但PCIe 6.0把LN协议移除了。至于PCIe 6.0的系统是否兼容老旧的支持LN的软硬件,现在还不敢说,毕竟PCIe 6.0正式版还没出来。不过从PCIe 6.0的0.9版本看,已经把LN相关内容全删掉了,相关控制位也reserved了。看样子是不支持了哦。上文也提到了,LN想要用起来用得好,也是比较难。 ??据我了解啊,市面上真正把LN用起来的,少之又少。如果这LN协议没有想象中的好,那么让其消失在PCIe历史发展的滚滚长河中又何妨?
📚 参考
?? 返回顶部 ?? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 20:55:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |