CN117222992A - 用于旁路存储器读取请求检测的系统和方法 - Google Patents
用于旁路存储器读取请求检测的系统和方法 Download PDFInfo
- Publication number
- CN117222992A CN117222992A CN202280028429.4A CN202280028429A CN117222992A CN 117222992 A CN117222992 A CN 117222992A CN 202280028429 A CN202280028429 A CN 202280028429A CN 117222992 A CN117222992 A CN 117222992A
- Authority
- CN
- China
- Prior art keywords
- cxl
- memory
- bypass
- read request
- memory controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 462
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000001514 detection method Methods 0.000 title claims abstract description 46
- 230000004044 response Effects 0.000 claims description 31
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
一种系统和方法,该系统和方法用于:在读取旁路检测逻辑(115)处分析CXL微片以识别旁路存储器读取请求(108),并且通过读取请求旁路路径(120)将所识别的旁路存储器读取请求(108)直接发射到CXL存储器控制器(100)的事务/应用层(135),其中读取请求旁路路径(120)不包括CXL存储器控制器(100)的仲裁/多路复用层(125)和链路层(130),从而减少CXL存储器控制器(100)中固有的延迟。
Description
相关申请的交叉引用
本申请要求于2021年6月1日提交的美国临时专利申请序列63/195,455号以及于2022年5月10日提交的美国非临时专利申请序列17/741,282号的优先权,这些专利申请中的每个专利申请的内容全文以引用方式并入本文。
背景技术
计算快速链路(CXL)是基于周边部件互连快速(PCIe)第5代链路基础架构,以提供用于实现主机(诸如CPU)与设备(诸如硬件加速器或处理密集工作负荷的存储器扩展设备)之间的高效连贯存储器存取的开放式互连标准。
CXL的主要益处之一是允许各种CPU使用相同方法访问各种类型的存储器,从而允许各种CPU利用设备的相同存储器池。与存储器存取相关联的读取延迟对于主机CPU性能至关重要,并且因此,减少与附接有CXL的设备(诸如双倍数据速率(DDR)存储器控制器)相关联的读取延迟是高度有利的。
因此,本领域所需要的是一种改进附接有CXL的存储器控制器的读取延迟的系统和方法。
发明内容
在各种示例中,本发明提供一种改进附接有CXL的存储器控制器的读取延迟的系统和方法。
在一个示例中,提供了一种用于旁路存储器读取请求检测的方法,该方法包括:在CXL存储器控制器的物理层处接收多个数据包;从在CXL存储器控制器的物理层处接收到的多个数据包中导出多个计算快速链路(CXL)流控制单元(微片);将所接收的多个CXL微片中的每个CXL微片发射到CXL存储器控制器的读取旁路检测逻辑;以及在读取旁路检测逻辑处分析多个CXL微片中的每个CXL微片以识别来自多个CXL微片的旁路存储器读取请求。在特定示例中,在CXL存储器的读取旁路检测逻辑处分析多个CXL微片中的每个CXL微片包括:检测在该CXL微片中具有存储器读取操作码的主从(M2S)请求以识别旁路存储器读取请求。该方法还包括通过读取请求旁路路径将旁路存储器读取请求直接发射到CXL存储器控制器的事务/应用层,其中该读取请求旁路路径不包括CXL存储器控制器的仲裁/多路复用层和链路层。当CXL存储器控制器的读取请求队列为空时,该方法通过以下操作而继续:响应于在CXL存储器控制器的事务/应用层处接收到的旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令;响应于该存储器读取命令而在事务/应用层处接收来自存储器设备的读取数据,并且当在事务/应用层处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,该方法通过将在事务/应用层处接收到的读取数据转发到CXL存储器控制器的链路层而结束。
在附加示例中,当在事务/应用层处不存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,该方法通过丢弃在事务/应用层处接收到的读取数据而继续。另外,当CXL存储器控制器的读取请求队列不为空时,该方法通过不在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令并且丢弃旁路存储器读取请求而继续。如果旁路存储器读取请求的地址空间无效,则也将不在存储器设备接口上生成存储器读取命令,并且将丢弃旁路存储器读取请求。
在特定示例中,附接到CXL存储器控制器的存储器设备是双倍数据速率(DDR)存储器设备。
在附加示例中,提供了一种计算快速链路(CXL)存储器控制器,该CXL存储器控制器包括读取旁路检测逻辑,该读取旁路检测逻辑用于从CXL存储器控制器的CXL物理层接收多个CXL微片并且分析所接收的多个CXL微片中的每个CXL微片以识别来自多个CXL微片的旁路存储器读取请求。在特定示例中,CXL存储器控制器通过检测在CXL微片中具有存储器读取操作码的主从(M2S)请求以识别旁路存储器读取请求来分析多个CXL微片中的每个CXL微片。CXL存储器控制器还包括读取请求旁路路径,该读取请求旁路路径包括读取旁路检测逻辑并且将CXL物理层连接到CXL存储器控制器的事务/应用层,读取请求旁路路径绕过CXL存储器控制器的仲裁/多路复用层和CXL存储器控制器的链路层。当读取请求队列为空时,事务/应用层响应于在事务/应用层处接收到的旁路存储器读取请求而在与CXL存储器控制器相关联的存储器设备的接口上生成存储器读取命令,响应于该存储器读取命令而接收来自存储器设备的读取数据,并且当在事务/应用层处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,将在事务/应用层处接收到的读取数据转发到链路层。
在附加示例中,当在事务/应用层处不存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,CXL存储器控制器丢弃在事务/应用层处接收到的读取数据。另外,当读取请求队列不为空时,CXL存储器控制器不在存储器设备的接口上生成存储器读命令,并且丢弃旁路存储器读取请求。当旁路存储器读取请求的地址空间无效时,CXL存储器控制器也丢弃旁路存储器读取请求,并且不在存储器设备接口上生成存储器读取命令。
因此,这些各种示例提供了用于减少附接有CXL的存储器控制器的读取延迟的改进的系统和方法。
附图说明
并入本说明书中并形成本说明书的一部分的附图示出了各种示例,并且与本发明的具体实施方式一起用于解释下面讨论的原理。除非特别指明,否则在该简要描述中提及的附图不应被理解为按比例绘制。
图1是示出了包括读取旁路检测逻辑的示例性CXL存储器控制器的框图。
图2是示出了根据CXL 2.0规范的CXL.cache/CXL.mem微片报头定义的表格。
图3是示出了根据CXL 2.0规范的时隙格式字段编码的表格。
图4是示出了根据CXL 2.0规范的H2D/M2S时隙格式的表格。
图5A是示出了用于减少CXL存储器控制器中的读取延迟的示例性方法的流程图。
图5B是图5A的流程图的继续,示出了用于减少CXL存储器控制器中的读取延迟的示例性方法。
图6A是示出了用于减少CXL存储器控制器中的读取延迟并且用于选择性地丢弃旁路存储器读取请求的示例性方法的流程图。
图6B是图6A的流程图的继续,示出了用于减少CXL存储器控制器中的读取延迟并且用于选择性地丢弃旁路存储器读取请求的示例性方法。
图7是示出了用于减少CXL存储器控制器中的读取延迟并且用于选择性地丢弃链路层存储器读取请求的示例性方法的流程图。
图8A是示出了用于减少CXL存储器控制器中的读取延迟并且用于将链路层存储器读取请求匹配到旁路存储器读取请求的示例性方法的流程图。
图8B是图8A的流程图的继续,示出了用于减少CXL存储器控制器中的读取延迟并且用于将链路层存储器读取请求匹配到旁路存储器读取请求的示例性方法。
具体实施方式
现在将详细参考各种示例,这些示例在附图中示出。虽然本文讨论了各种示例,但应当理解,这些示例不旨在是限制性的。相反,所提出的示例旨在涵盖可包括在由所附权利要求限定的各种示例的精神和范围内的替代形式、修改形式和等同物。此外,在该具体实施方式中,阐述了许多具体细节以便提供透彻的理解。然而,示例可在没有这些具体细节中的一个或多个具体细节的情况下进行实践。在其他情况下,并未详细描述熟知的方法、程序、部件和电路以免不必要地模糊所述示例的各方面。
应当理解,尽管术语第一、第二、第三(不限于此)可在本文中用于描述各种元件、部件、区域、层和/或部分,但是这些元件、部件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元件、部件、区域、层或部分与另一个区域、层或部分区分开。因此,下面讨论的第一元件、部件、区域、层或部分可被称为第二元件、部件、区域、层或部分。
除非另外定义,否则本文使用的所有术语(包括技术术语和科学术语)具有与本领域的普通技术人员通常理解的含义相同的含义。还应当理解,术语(诸如在常用字典中定义的术语)应当被解释为具有与其在相关领域的上下文中的含义一致的含义,并且将不以理想化或过于正式的意义来解释,除非本文明确地如此定义。
CXL已经被开发作为提供改进的高速CPU到设备和CPU到存储器互连的标准,其将加速下一代数据中心性能和新兴的计算应用,诸如人工智能、机器学习和其他应用。CXL维持CPU存储器空间与附接设备的存储器空间之间的存储器一致性,这提供了资源共享,从而实现高性能、降低的复杂性和较低的总系统成本。
CXL支持一组协议,该组协议包括输入/输出(I/O)语义(CXL.io),这些I/O语义类似于PCIe I/O语义、缓存协议语义(CXL.cache)和存储器存取语义(CXL.mem)。CXL.io协议等同于通过CXL协议的PCIe传输,并且CXL.mem是存储器存取协议,其支持附接有设备的存储器以提供CPU与存储器设备之间的事务接口。在一些应用中,CXL协议可建立在完善且广泛采用的PCIe基础架构(例如,PCIe 5.0)上,从而利用PCIe物理接口并且增强与CXL的协议以提供CPU存储器与加速器设备存储器之间的存储器一致性。
参考图1,计算快速链路(CXL)存储器控制器100包括读取旁路检测逻辑115,该读取旁路检测逻辑用于从CXL存储器控制器100的CXL物理层110接收多个CXL微片108。CXL微片108可从通过PCIe/CXL串行器/解串器(SerDes)接口105从CPU或其他主机设备接收到的数据包导出。
CXL微片(流控制单元)是经格式化以供在互连链路(诸如,基于PCIe或基于CXL的链路)上使用的链路层数据包。在特定示例中,已知CXL微片由528个位组成,其包括64个字节的数据,其后跟随2个字节的循环冗余校验(CRC)以检查数据字节的完整性。根据CXL协议,CXL微片在协议标识(ProtID)字段之后开始。ProtID字段由CXL.mem仲裁/多路复用层125用来将CXL微片引导到CXL.mem链路层130。
参考图2,CXL.cache/CXL.mem微片包括携带类型位200和时隙n信息的报头,该信息用于确定微片是否是协议微片以及其是否可包括M2S Req(主从请求)。参考图3和图4,如果时隙0具有字段值3'b101 300,则其指示微片是H5格式400并且正携带CXL.mem Req.。
M2S Req本身仅为87位。添加4个字节的报头字节加上2个字节的协议ID意味着必须收集总共135位(48位+87位)才能够检测CXL微片中的存储器读取请求。
在CXL控制器(其不实现本示例的读取旁路路径120但具有在CXL存储器控制器100中发现的其他元件)的标准操作中,在CXL存储器控制器110的物理层处接收的正携载存储器读取请求(CXL.mem Req.)的CXL微片被发射到CXL.mem仲裁/多路复用层125,并且CXL.mem仲裁/多路复用层125接着将CXL微片发射到CXL.mem链路层130。CXL.mem链路层130检查每个CXL微片以验证它们不是全数据微片(即,不包含报头)并且用于CXL微片的CRC是正确的。如果CXL微片通过这些验证,则CXL.mem链路层130接着将读取请求发射到CXL.mem事务/应用层135。CXL.mem事务/应用层135接着生成读取命令并且将该读取命令转发到存储器控制器和物理层140。存储器控制器和物理层140接着在存储器接口设备147上生成存储器读取命令。如果存储器设备145页面尚未打开,则存储器控制器和物理层140还在存储器接口147上生成激活命令,这允许CPU主机在CXL存储器控制器100的控制下通过存储器接口147访问存储器设备145。在该标准实现中,在CXL物理层110与CXL.mem事务/应用层135之间的读取数据路径中存在不期望的延迟。
如图1所示,在CXL存储器控制器110中实现了将CXL物理层110连接到事务/应用层135的包括读取旁路检测逻辑115的读取请求旁路路径120。如图所示,读取请求旁路路径绕过CXL存储器控制器100的CXL.mem仲裁/多路复用层125和CXL存储器控制器100的链路层130。读取旁路检测逻辑115从CXL物理层110接收多个CXL微片108,并且分析所接收的多个CXL微片108中的每个CXL微片以识别来自多个CXL微片108的旁路存储器读取请求。检测在CXL微片108中具有存储器读取操作码的主从(M2S)请求识别CXL微片108的旁路存储器读取请求。读取旁路检测逻辑115在检测到来自多个CXL微片108的旁路存储器读取请求后,通过读取请求旁路路径120将旁路存储器读取请求直接转发到CXL.mem事务/应用层135。
CXL存储器控制器100的物理层110从PCIe/CXL SerDes接口105接收多个数据包102,导出多个CXL微片108,并且将多个CXL微片108发射到读取旁路检测逻辑115以及CXL存储器控制器100的CXL.mem仲裁/多路复用层125两者。如上所述,CXL.mem仲裁/多路复用层125识别来自多个CXL微片的一个或多个链路层存储器读取请求,并且将该一个或多个链路层存储器读取请求发射到CXL.mem链路层130。CXL.mem链路层130对一个或多个链路层存储器读取请求中的每个链路层存储器读取请求执行循环冗余校验(CRC),将通过CRC的链路层存储器读取请求发射到CXL存储器控制器100的CXL.mem事务/应用层135,并且丢弃未通过CRC的链路层存储器读取请求。
在从读取旁路检测逻辑115接收到旁路存储器读取请求后,CXL存储器控制器100的CXL.mem事务/应用层135将读取命令转发到存储器控制器和物理层140。当读取请求队列137为空时,存储器控制器和物理层140接着响应于在事务/应用层135处通过读取请求旁路路径135接收到的旁路存储器读取请求而在与CXL存储器控制器100相关联的存储器设备145的存储器接口147上生成存储器读取命令和存储器激活命令。CXL.mem事务/应用层135接着响应于存储器读取命令而在存储器控制器和物理层140的控制下通过存储器接口147接收来自存储器设备145的读取数据。当在CXL.mem事务/应用层135处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,CXL.mem事务/应用层135将在CXL.mem事务/应用层135处接收到的读取数据转发到CXL.mem链路层130。在特定示例中,存储器控制器和物理层140可以是DDR存储器控制器和物理层,存储器接口147可以是DDR接口,并且存储器设备145可以是DDR设备。
当读取请求队列137不为空时,CXL.mem事务/应用层135不响应于旁路存储器读取请求而生成存储器读取命令,并且丢弃旁路存储器读取请求。CXL规范定义了M2S Req/MemSpecReq请求,该请求可用于向存储器设备发出推测性读取。存储器推测性读取可被发出以便在CXL存储器控制器100已解决存储器设备145中的任何一致性问题之前发起存储器存取,以便减少延迟。然而,只有在CXL存储器控制器100的CXL.mem事务/存储器层135处已接收到相匹配的MemRd请求,才能响应于推测性读取而从存储器设备45返回读取数据。在操作中,在CXL.mem事务/应用层135处接收到旁路存储器读取请求后,CXL.mem事务/应用层135不消耗请求缓冲器条目。请求缓冲器条目是链路层流控制所需要的,并且预计会被即将到来的链路层M2S请求(即,从CXL.mem链路层130接收到的相匹配的MemRd请求)消耗。如果读取请求队列137不为空,则如上所述,事务/应用层135丢弃旁路存储器读取请求。如果读取请求队列137为空,则旁路存储器读取命令被直接转发到存储器控制器和物理层140。
另外,当在CXL.mem事务/应用层135处不存在与旁路存储器读取请求相匹配的链路层存储器读取请求时,CXL.mem事务/应用层135响应于旁路存储器读取请求而丢弃在CXL.mem事务/应用层处接收到的读取数据。在CXL.mem事务/应用层135处接收到的所有旁路存储器读取请求预计不久之后将是来自链路层130的相同存储器读取请求。如果CXL.mem事务/应用层135从链路层130接收存储器读取请求并且其匹配CXL.mem事务/应用层135处的待决旁路存储器读取请求,则CXL.mem事务/应用层135丢弃来自链路层130的存储器读取请求并且再循环链路层信用。因此,只有在CXL.mem事务/应用层135处已接收到来自链路层130的相匹配的存储器读取请求,CXL.mem事务/应用层135才会将读取数据从存储器设备145转发到链路层130。如果在CXL.mem事务/应用层135处尚未接收到来自链路层130的相匹配的存储器读取请求,则读取旁路检测逻辑115错误地检测到来自全数据微片的旁路存储器读取请求,或者CXL.mem链路层130检测到CRC错误或在CXL.mem链路层130中发生的另一无法校正的错误。在这些情况下,CXL.mem事务/应用层135丢弃与旁路存储器读取请求相关联的读取数据。这种情况被认为是非致命状况,并且作为响应,CXL.mem事务/应用层135生成调试事件。
ProtID之后的字节可能不包含具有报头时隙的.mem微片,并且该微片将被认为是全数据微片。在全数据微片中,数据可被混叠,使得读取旁路检测逻辑115检测到不存在的旁路存储器读取请求。在这种情况下,当旁路存储器读取请求被转发到CXL.mem事务/应用层135时,CXL.mem事务/应用层135可处理旁路存储器读取请求并且向存储器接口147发出读取命令。响应于错误检测而接收的读取数据随后将被CXL.mem事务/应用层135丢弃。然而,这种类型的错误检测的概率非常小,并且因此由于错误检测而对存储器设备145的带宽的影响可忽略不计。
CXL.mem事务/应用层135还丢弃未落在存储器设备145的有效地址空间内的旁路存储器读取请求,并且当旁路存储器读取请求的地址空间无效时不在存储器设备接口147上生成存储器读取命令。
图5A和图5B示出了用于减少CXL存储器控制器(诸如,图1的CXL存储器控制器100)中的读取延迟的方法的流程图500。
在操作502处,该方法开始于在CXL存储器控制器的物理层处接收多个数据包。参考图1,CXL存储器控制器100的物理层110可从PCIe/CXL SerDes接口105接收多个数据包102。
在操作505处,该方法通过从在CXL存储器控制器的物理层处接收到的多个数据包中导出多个计算快速链路(CXL)流控制单元(微片)而继续。参考图1,CXL存储器控制器100的物理层110可从多个接收到的数据包102中导出多个微片108。
在操作510处,该方法通过将所接收的多个CXL微片中的每个CXL微片发射到CXL存储器控制器的读取旁路检测逻辑而继续,并且在操作515处通过在读取旁路检测逻辑处分析多个CXL微片中的每个CXL微片以识别来自多个CXL微片的旁路存储器读取请求而继续。参考图1,可在CXL存储器控制器100的读取旁路检测逻辑115处接收多个CXL微片108,并且读取旁路检测逻辑115可在读取旁路检测逻辑115处分析多个CXL微片108中的每个CXL微片以识别来自多个CXL微片108的旁路存储器读取请求。
该方法在操作520处通过以下操作而继续:通过读取请求旁路路径将旁路存储器读取请求直接发射到CXL存储器控制器的事务/应用层,其中该读取请求旁路路径不包括CXL存储器控制器的仲裁/多路复用层和链路层。参考图1,旁路存储器读取请求可通过读取请求旁路路径120被直接发射到CXL存储器控制器100的CXL.mem事务/应用层135,从而绕过CXL.mem仲裁/多路复用层125和CXL.mem链路层130。
在操作525处,该方法继续,当CXL存储器控制器的读取请求队列为空时,响应于在CXL存储器控制器的事务/应用层处接收到的旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令。参考图1,当CXL存储器控制器100的读取请求队列137为空时,响应于旁路存储器读取请求,可由CXL.mem事务/应用层135生成读取命令,并且将该读取命令转发到存储器控制器和物理层140。存储器控制器和物理层140可接着响应于在CXL存储器控制器100的CXL.mem事务/应用层135处接收到的旁路存储器读取请求而在存储器设备145的存储器接口147上生成存储器读取命令。如果存储器设备页面尚未打开,则存储器控制器和物理层140还可在存储器接口上生成存储器读取命令之前在存储器接口147上生成激活命令。
在操作530处,该方法通过响应于存储器读取命令而在事务/应用层处接收来自存储器设备的读取数据而继续,并且该方法在操作535处结束,当在事务/应用层处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,将在事务/应用层处接收到的读取数据转发到CXL存储器控制器的链路层。任选地,如果在事务/应用层处不存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求,则丢弃在事务/应用层处接收到的读取数据。参考图1,当在CXL.mem事务/应用层135处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,响应于存储器读取命令而在CXL.mem事务/应用层135处从存储器设备145接收到的读取数据被转发到CXL存储器控制器100的CXL.mem链路层130。
图6A和图6B是示出了用于减少CXL存储器控制器中的读取延迟并且用于选择性地丢弃旁路存储器读取请求的示例性方法的一组流程图600。
在操作605处,该方法开始于在CXL存储器控制器的物理层处接收多个计算快速链路(CXL)流控制单元(微片)。参考图1,CXL存储器控制器100的CXL物理层110可接收多个微片。
在操作610处,该方法通过将所接收的多个CXL微片中的每个CXL微片发射到CXL存储器控制器的读取旁路检测逻辑而继续,并且在操作615处通过在读取旁路检测逻辑处分析多个CXL微片中的每个CXL微片以识别来自多个CXL微片的旁路存储器读取请求而继续。参考图1,可在CXL存储器控制器100的读取旁路检测逻辑115处接收多个CXL微片108,并且读取旁路检测逻辑115可在读取旁路检测逻辑处分析多个CXL微片108中的每个CXL微片以识别来自多个CXL微片108的旁路存储器读取请求。
该方法在操作620处通过以下操作而继续:通过读取请求旁路路径将旁路存储器读取请求直接发射到CXL存储器控制器的事务/应用层,其中该读取请求旁路路径不包括CXL存储器控制器的仲裁/多路复用层和链路层。参考图1,旁路存储器读取请求可通过读取请求旁路路径120被直接发射到CXL存储器控制器100的CXL.mem事务/应用层135,从而绕过CXL.mem仲裁/多路复用层125和CXL.mem链路层130。
在操作625处,该方法通过确定CXL存储器控制器的读取请求队列是否为空而继续。如果在操作625处确定CXL存储器控制器的读取请求队列为空,则该方法在操作630处继续。如果确定CXL存储器控制器的读取请求队列不为空,则该方法在操作635处通过不响应于旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令并且丢弃旁路存储器读取请求而结束。参考图1,读取请求队列137可由CXL.mem事务/应用层135确定为空或不为空。
在操作630处,该方法通过确定旁路存储器读取请求的地址空间是否有效而继续。如果该地址空间被确定为有效,则该方法在图6B的操作645处继续。如果确定旁路存储器读取请求的地址空间无效,则该方法在操作640处通过丢弃旁路存储器读取请求而结束。参考图1,事务/应用层135可确定旁路存储器读取请求的地址空间是否有效,并且如果无效,则丢弃旁路存储器读取请求。
该方法在操作645处通过响应于在CXL存储器控制器的事务/应用层处接收到的旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令而继续,并且在操作650处通过响应于存储器读取命令而在事务层处接收来自存储器设备的读取数据而继续。参考图1,可响应于接收到旁路存储器读取请求而由CXL存储器控制器100的CXL.mem事务/应用层135生成读取命令。接着可将该读取命令转发到存储器控制器和物理层140。存储器控制器和物理层140可接着在存储器设备145的接口147上生成存储器读取命令。因此,响应于在CXL存储器控制器100的事务/应用层135处接收到的旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令,并且可接收来自存储器设备145的读取数据。
在操作655处,确定在事务/应用层处是否存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求。如果存在相匹配的链路层存储器读取请求,则该方法在操作660处通过将在事务/应用层处接收到的读取数据转发到CXL存储器控制器360的链路层而结束。如果不存在相匹配的链路层存储器读取请求,则该方法在操作665处通过丢弃在事务/应用层处接收到的读取数据而结束。参考图1,如果存在来自CXL.mem链路层130的与CXL.mem事务/应用层135处的旁路存储器读取请求相匹配的存储器读取请求,则CXL.mem事务/应用层135将读取数据转发到CXL.mem链路层130。另选地,如果在CXL.mem事务/应用层135处不存在相匹配的链路层存储器读取请求,则CXL.mem事务/应用层135丢弃来自存储器设备的读取数据。
图7是示出了用于减少CXL存储器控制器中的读取延迟并且用于选择性地丢弃链路层存储器读取请求的示例性方法700的流程图。
在操作705处,该方法开始于将在CXL存储器控制器的物理层处接收到的多个CXL微片发射到CXL存储器控制器的仲裁/多路复用层。参考图1,在CXL物理层110处接收到的CXL微片108被发射到CXL.mem仲裁/多路复用层125。
该方法在操作710处通过在CXL存储器控制器的仲裁/多路复用层处识别来自多个CXL微片的一个或多个链路层存储器读取请求而继续;在操作715处通过将所识别的一个或多个链路层存储器读取请求发射到CXL存储器控制器的链路层而继续;在操作720处通过对所识别且所发射的一个或多个链路层存储器读取请求中的每个链路层存储器读取请求执行循环冗余校验(CRC)而继续;并且在操作725处通过将通过CRC的链路层存储器读取请求发射到CXL存储器控制器的事务/应用层而继续。该方法在操作730处通过丢弃未通过CRC的链路层存储器读取请求而结束。参考图1,CXL.mem仲裁/多路复用层135可识别来自CXL微片108的一个或多个链路层存储器读取请求,并且将所识别的一个或多个链路层存储器读取请求发射到CXL.mem链路层130。可对所识别的一个或多个链路层存储器读取请求执行CRC校验,并且可丢弃未通过CRC的链路层存储器读取请求。
图8A和图8B是示出了根据本发明的示例的用于减少CXL存储器控制器中的读取延迟并且用于将链路层存储器读取请求匹配到旁路存储器读取请求的方法的一组流程图800。
在操作805处,该方法开始于在CXL存储器控制器的物理层处接收多个计算快速链路(CXL)流控制单元(微片)。参考图1,CXL存储器控制器100的CXL物理层110可接收多个微片108。
在操作810处,该方法通过将所接收的多个CXL微片中的每个CXL微片发射到CXL存储器控制器的读取旁路检测逻辑而继续,并且在操作815处通过在读取旁路检测逻辑处分析多个CXL微片中的每个CXL微片以识别来自多个CXL微片的旁路存储器读取请求而继续。参考图1,可在CXL存储器控制器100的读取旁路检测逻辑115处接收多个CXL微片108,并且读取旁路检测逻辑115可在读取旁路检测逻辑115处分析多个CXL微片108中的每个CXL微片以识别来自多个CXL微片108的旁路存储器读取请求。
该方法在操作820处通过以下操作而继续:通过读取请求旁路路径将旁路存储器读取请求直接发射到CXL存储器控制器的事务/应用层,其中该读取请求旁路路径不包括CXL存储器控制器的仲裁/多路复用层和链路层。参考图1,旁路存储器读取请求可通过读取请求旁路路径120被直接发射到CXL存储器控制器100的CXL.mem事务/应用层135,从而绕过CXL.mem仲裁/多路复用层125和CXL.mem链路层130。
在操作825处,该方法继续,当CXL存储器控制器的读取请求队列为空时,响应于在CXL存储器控制器的事务/应用层处接收到的旁路存储器读取请求而在附接到CXL存储器控制器的存储器设备的接口上生成存储器读取命令,并且当CXL存储器控制器的读取请求队列不为空时,丢弃旁路存储器读取请求。参考图1,当CXL存储器控制器100的读取请求队列137为空时,可响应于在CXL存储器控制器100的事务/应用层135处接收到的旁路存储器读取请求而在存储器设备145的接口147上生成存储器读取命令。另选地,当读取请求队列137不为空时,事务/应用层135可在存储器设备145的接口147上生成存储器读取命令之前丢弃旁路存储器读取请求。
在操作830处,该方法通过响应于存储器读取命令而在事务/应用层处接收来自存储器设备的读取数据而继续,并且该方法在操作835处结束,当在事务/应用层处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,将在事务/应用层处接收到的读取数据转发到CXL存储器控制器的链路层。另外,如果在事务/应用层处不存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求,则丢弃在事务/应用层处接收到的读取数据。参考图1,当在CXL.mem事务/应用层135处存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,响应于存储器读取命令而在CXL.mem事务/应用层135处从存储器设备145接收到的读取数据被转发到CXL存储器控制器100的CXL.mem链路层130。另选地,当在事务/应用层135处不存在与生成存储器读取命令的旁路存储器读取请求相匹配的链路层存储器读取请求时,CXL.mem事务/应用层135丢弃读取数据。
在各种示例中,本发明示例的系统的部分可在现场可编程门阵列(FPGA)或专用集成电路(ASIC)中实现。本领域技术人员应当理解,电路元件的各种功能也可被实现为软件程序中的处理步骤。此类软件可用于例如数字信号处理器、网络处理器、微控制器或通用计算机中。
除非如从讨论中显而易见的另有特别说明,否则应当理解,在整个本说明书中,利用诸如“接收”、“确定”、“生成”、“限制”、“发送”、“计数”、“分类”等的术语的讨论可以指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转化成类似地表示为计算机系统存储器或寄存器或者其他此类信息存储、传输或显示设备内的物理量的其他数据。
本发明示例可体现在响应于基于软件的指令而执行动作的各种计算平台上。下文提供了可用于实现本发明示例的信息技术的前置基础。
本发明示例的方法可被存储在计算机可读介质上,该计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述各项的任何合适的组合。计算机可读存储介质的更具体示例(非穷尽列表)将包括以下各项:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、磁存储设备,或前述各项的任何合适的组合。在本文件的上下文中,计算机可读存储介质可以是可包含或存储供指令执行系统、装置或设备使用或与它们结合在一起使用的程序的任何非暂态有形介质。
计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的数据信号,其中体现了计算机可读程序代码。这种传播的信号可以采用多种形式中的任何一种形式,包括但不限于电磁信号、光信号或它们的任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质的任何计算机可读介质,该计算机可读介质可传送、传播或传输供指令执行系统、装置或设备使用或与它们结合在一起使用的程序。然而,如上所指示,由于电路法定主题限制,作为软件产品的权利要求是体现在诸如计算机硬盘驱动器、闪存-RAM、光盘等的非暂态软件介质中的那些。
计算机可读介质上体现的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线线路、光纤电缆、射频等,或者前述各项的任何合适的组合。用于执行本发明示例的各方面的操作的计算机程序代码可以使用一种或多种编程语言的任何组合来编写,该编程语言包括诸如Java、C#、C++、Visual Basic等面向对象的编程语言以及诸如“C”编程语言或类似编程语言的常规过程编程语言。
下文参考方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本发明示例的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由该计算机或其他可编程数据处理装置的处理器执行的该指令产生用于实现在一个或多个流程图和/或框图框中指定的功能/动作的装置。
还可将这些计算机程序指令存储在计算机可读介质中,该计算机可读介质可引导计算机、处理器或其他可编程数据处理装置或其他设备以特定方式发挥功能,使得存储在计算机可读介质中的该指令产生包括实现在一个或多个流程图和/或框图框中指定的功能/动作的指令的制品。
还可以将计算机程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在该计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或框图框中指定的功能/动作的过程。
此外,出于讨论和理解示例的目的,应当理解,本领域技术人员使用各种术语来描述技术和方法。此外,在本说明书中,出于解释的目的,阐述了许多具体细节以便提供透彻理解。然而,对于本领域普通技术人员显而易见的是,可在没有这些具体细节的情况下实践本发明示例。在一些情况下,熟知的结构和设备是以框图形式示出,而不是详细示出。这些示例被充分详细地描述以使得本领域普通技术人员能够实践示例,并且应当理解,在不脱离范围的情况下,可利用其他示例,并且可作出逻辑、机械、电气和其他改变。
Claims (20)
1.一种用于旁路存储器读取请求检测的方法,所述方法包括:
在CXL存储器控制器的物理层处接收多个数据包;从在CXL存储器控制器的所述物理层处接收到的所述多个数据包中导出多个计算快速链路(CXL)流控制单元(微片);将所接收的多个CXL微片中的每个CXL微片发射到所述CXL存储器控制器的读取旁路检测逻辑;
在所述读取旁路检测逻辑处分析所述多个CXL微片中的每个CXL微片以识别来自所述多个CXL微片的旁路存储器读取请求;
通过读取请求旁路路径将所述旁路存储器读取请求直接发射到所述CXL存储器控制器的事务/应用层,其中所述读取请求旁路路径不包括所述CXL存储器控制器的仲裁/多路复用层和链路层;
当所述CXL存储器控制器的读取请求队列为空时,响应于在所述CXL存储器控制器的所述事务/应用层处接收到的所述旁路存储器读取请求而在附接到所述CXL存储器控制器的存储器设备的接口上生成存储器读取命令;
响应于所述存储器读取命令而在所述事务/应用层处接收来自所述存储器设备的读取数据;以及
当在所述事务/应用层处存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时,将在所述事务/应用层处接收到的所述读取数据转发到所述CXL存储器控制器的所述链路层。
2.根据权利要求1所述的方法,所述方法包括:当在所述事务/应用层处不存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时,丢弃在所述事务/应用层处接收到的所述读取数据。
3.根据权利要求1所述的方法,其中在所述CXL存储器的所述读取旁路检测逻辑处分析所述多个CXL微片中的每个CXL微片包括:检测在所述CXL微片中具有存储器读取操作码的主从(M2S)请求以识别所述旁路存储器读取请求。
4.根据权利要求1所述的方法,所述方法包括:当所述CXL存储器控制器的所述读取请求队列不为空时,不在附接到所述CXL存储器控制器的所述存储器设备的所述接口上生成所述存储器读取命令并且丢弃所述旁路存储器读取请求。
5.根据权利要求1所述的方法,所述方法包括丢弃与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的所述链路层存储器读取请求。
6.根据权利要求1所述的方法,所述方法包括:当所述旁路存储器读取请求的地址空间无效时,丢弃所述事务/应用层处的所述旁路存储器读取请求,并且不在所述存储器设备接口上生成所述存储器读取命令。
7.根据权利要求1所述的方法,所述方法包括:在所述存储器设备接口上生成所述存储器读取命令之前,在所述存储器设备接口上发射激活命令。
8.根据权利要求1所述的方法,所述方法包括:
将在所述CXL存储器控制器的所述物理层处接收到的所述多个CXL微片发射到所述CXL存储器控制器的所述仲裁/多路复用层;
在所述CXL存储器控制器的所述仲裁/多路复用层处识别来自所述多个CXL微片的一个或多个链路层存储器读取请求;
将所识别的一个或多个链路层存储器读取请求发射到所述CXL存储器控制器的所述链路层;
对所识别且所发射的一个或多个链路层存储器读取请求中的每个链路层存储器读取请求执行循环冗余校验(CRC);
将通过所述CRC的所述链路层存储器读取请求发射到所述CXL存储器控制器的所述事务/应用层;以及
丢弃未通过所述CRC的所述链路层存储器读取请求。
9.根据权利要求1所述的方法,其中附接到所述CXL存储器控制器的所述存储器设备是双倍数据速率(DDR)存储器设备。
10.一种用于读取存储器设备的方法,所述方法包括:
在CXL存储器控制器的物理层处接收多个计算快速链路(CXL)流控制单元(微片);
将所接收的多个CXL微片中的每个CXL微片发射到所述CXL存储器控制器的读取旁路检测逻辑;
在所述读取旁路检测逻辑处分析所接收且所发射的多个CXL微片中的每个CXL微片以识别来自所述多个CXL微片的旁路存储器读取请求,其中所述旁路存储器读取请求包括地址空间;
通过读取请求旁路路径将所述旁路存储器读取请求直接发射到所述CXL存储器控制器的事务/应用层,其中所述读取请求旁路路径不包括所述CXL存储器控制器的仲裁/多路复用层和链路层;
当所述旁路存储器读取请求的所述地址空间无效时,丢弃所述事务/应用层处的所述旁路存储器读取请求;
当所述CXL存储器控制器的读取请求队列为空时,响应于在所述CXL存储器控制器的所述事务/应用层处接收到的所述旁路存储器读取请求而在附接到所述CXL存储器控制器的存储器设备的接口上生成存储器读取命令,并且当所述CXL存储器控制器的所述读取请求队列不为空时,丢弃所述旁路存储器读取请求;
响应于所述存储器读取命令而在所述事务/应用层处接收来自所述存储器设备的读取数据;以及
当在所述事务/应用层处存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时,将在所述事务/应用层处接收到的所述读取数据转发到所述CXL存储器控制器的所述链路层,并且当在所述事务/应用层处不存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时,丢弃在所述事务/应用层处接收到的所述读取数据。
11.根据权利要求10所述的方法,所述方法包括:
将在所述CXL存储器控制器的所述物理层处接收到的所述多个CXL微片发射到所述CXL存储器控制器的所述仲裁/多路复用层;
在所述CXL存储器控制器的所述仲裁/多路复用层处识别来自所述多个CXL微片的一个或多个链路层存储器读取请求;
将所识别的一个或多个链路层存储器读取请求发射到所述CXL存储器控制器的所述链路层;以及
对所述一个或多个链路层存储器读取请求中的每个链路层存储器读取请求执行循环冗余校验(CRC);
将通过所述CRC的所述链路层存储器读取请求发射到所述CXL存储器控制器的所述事务/应用层;以及
丢弃未通过所述CRC的所述链路层存储器读取请求。
12.一种计算快速链路(CXL)存储器控制器,所述CXL存储器控制器包括:
读取旁路检测逻辑,所述读取旁路检测逻辑用于从CXL存储器控制器的CXL物理层接收多个CXL微片并且分析所接收的多个CXL微片中的每个CXL微片以识别来自所述多个CXL微片的旁路存储器读取请求;
读取请求旁路路径,所述读取请求旁路路径包括所述读取旁路检测逻辑,所述读取请求旁路路径将所述CXL物理层连接到所述CXL存储器控制器的事务/应用层,所述读取请求旁路路径绕过所述CXL存储器控制器的仲裁/多路复用层和所述CXL存储器控制器的链路层;
所述事务/应用层用于:
当读取请求队列为空时,响应于在所述事务/应用层处接收到的所述旁路存储器读取请求而在与所述CXL存储器控制器相关联的存储器设备的接口上生成存储器读取命令;
响应于所述存储器读取命令而接收来自所述存储器设备的读取数据;以及
当在所述事务/应用层处存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时,将在所述事务/应用层处接收到的所述读取数据转发到所述链路层。
13.根据权利要求12所述的CXL存储器控制器,其中所述读取旁路检测逻辑用于通过检测在所述CXL微片中具有存储器读取操作码的主从(M2S)请求以识别所述旁路存储器读取请求来分析所述多个CXL微片中的每个CXL微片。
14.根据权利要求12所述的CXL存储器控制器,其中所述事务/应用层用于当在所述事务/应用层处不存在与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的链路层存储器读取请求时丢弃在所述事务/应用层处接收到的所述读取数据。
15.根据权利要求12所述的CXL存储器控制器,其中所述事务/应用层用于当所述读取请求队列不为空时不在所述存储器设备的所述接口上生成所述存储器读命令并且丢弃所述旁路存储器读取请求。
16.根据权利要求12所述的CXL存储器控制器,其中所述事务/应用层用于丢弃与生成所述存储器读取命令的所述旁路存储器读取请求相匹配的所述链路层存储器读取请求。
17.根据权利要求12所述的CXL存储器控制器,其中所述事务/应用层用于当所述旁路存储器读取请求的地址空间无效时丢弃所述旁路存储器读取请求并且不在所述存储器设备接口上生成所述存储器读取命令。
18.根据权利要求12所述的CXL存储器控制器,其中所述事务/应用层用于在所述存储器设备接口上生成所述存储器读取命令之前,在所述存储器设备接口上发射激活命令。
19.根据权利要求12所述的CXL存储器控制器,所述CXL存储器控制器包括:
所述CXL存储器控制器的所述物理层,所述物理层用于接收所述多个CXL微片,将所述多个CXL微片发射到所述读取旁路检测逻辑,并且将所述多个CXL微片发射到所述CXL存储器控制器的所述仲裁/多路复用层;
所述仲裁/多路复用层,所述仲裁/多路复用层用于识别来自所述多个CXL微片的一个或多个链路层存储器读取请求并且将所述一个或多个链路层存储器读取请求发射到所述链路层;和
所述链路层,所述链路层用于对所述一个或多个链路层存储器读取请求中的每个链路层存储器读取请求执行循环冗余校验(CRC),将通过所述CRC的所述链路层存储器读取请求发射到所述CXL存储器控制器的所述事务/应用层,并且丢弃未通过所述CRC的所述链路层存储器读取请求。
20.根据权利要求12所述的CXL存储器控制器,其中所述存储器设备是双倍数据速率(DDR)存储器设备。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/195,455 | 2021-06-01 | ||
US17/741,282 | 2022-05-10 | ||
US17/741,282 US11892955B2 (en) | 2021-06-01 | 2022-05-10 | System and method for bypass memory read request detection |
PCT/US2022/028767 WO2022256153A1 (en) | 2021-06-01 | 2022-05-11 | System and method for bypass memory read request detection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117222992A true CN117222992A (zh) | 2023-12-12 |
Family
ID=89037552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280028429.4A Pending CN117222992A (zh) | 2021-06-01 | 2022-05-11 | 用于旁路存储器读取请求检测的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117222992A (zh) |
-
2022
- 2022-05-11 CN CN202280028429.4A patent/CN117222992A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6225154B2 (ja) | 共有メモリリンクの低電力エントリ | |
EP3649556B1 (en) | Techniques to support mulitple interconnect protocols for an interconnect | |
US9749448B2 (en) | Header parity error handling | |
EP2386093B1 (en) | Buses for pattern-recognition processors | |
US11892955B2 (en) | System and method for bypass memory read request detection | |
US20220035766A1 (en) | Hybrid remote direct memory access | |
CN111930664A (zh) | 用于高速互连的有序集 | |
KR102274960B1 (ko) | 컴퓨터 시스템에서의 메모리 쓰기 관리 | |
CN112699068A (zh) | 共享缓冲存储器路由 | |
CN113900852A (zh) | 表征和裕度化用于互连的多电压信号编码 | |
US10216656B2 (en) | Cut-through buffer with variable frequencies | |
US7770095B2 (en) | Request processing between failure windows | |
US10223310B2 (en) | Multi-source flow management using elastic FIFO structures | |
KR101844812B1 (ko) | 고속 레인에서 가기능정지를 이용한 emi 완화 | |
US8671230B2 (en) | Data transfer device and data transfer method | |
US10958595B2 (en) | Cut-through bridge error isolation | |
US8943255B2 (en) | Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices | |
CN117222992A (zh) | 用于旁路存储器读取请求检测的系统和方法 | |
WO2022256153A1 (en) | System and method for bypass memory read request detection | |
US20170269858A1 (en) | METHOD AND SYSTEM FOR DATA PROTECTION IN NVMe INTERFACE | |
CN114443516A (zh) | 接口电路、包括接口电路的处理器以及处理包的方法 | |
JP2004318717A (ja) | ディスクアレイ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |