CN113168388A - 总线上的存储器请求链接 - Google Patents
总线上的存储器请求链接 Download PDFInfo
- Publication number
- CN113168388A CN113168388A CN201980081628.XA CN201980081628A CN113168388A CN 113168388 A CN113168388 A CN 113168388A CN 201980081628 A CN201980081628 A CN 201980081628A CN 113168388 A CN113168388 A CN 113168388A
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- request message
- request
- subsequent
- 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
- 238000000034 method Methods 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 12
- 230000001427 coherent effect Effects 0.000 claims description 5
- 230000011664 signaling Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 16
- 230000032258 transport Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4045—Coupling between buses using bus bridges where the bus bridge performs an extender function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
Abstract
总线协议特性被提供用于在高速互连总线上链接存储器访问请求,从而允许减小信令开销。在总线上接收多个存储器请求消息。第一消息具有源标识符、目标标识符、第一地址和第一有效载荷数据。所述第一有效载荷数据存储在存储器中由所述第一地址指示的位置。在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符。所述第二请求消息不包括地址。基于所述链接指示符,基于所述第一地址来计算请求进行存储器访问的第二地址。所述第二有效载荷数据存储在所述存储器中由所述第二地址指示的位置。
Description
背景技术
系统互连总线标准提供电路板、多芯片模块、服务器节点,或者在一些情况下整个服务器机架或联网系统上不同元件之间的通信。例如,流行的外围部件互连高速(PCIe或PCI Express)计算机扩展总线是提供主板上元件之间的互连以及与扩展卡的连接的高速串行扩展总线。对于多处理器系统,尤其是其中不同芯片上的多个处理器互连并且共享存储器的系统,需要改善的系统互连标准。
许多系统互连总线上使用的串行通信通道不像专用存储器总线那样为地址信息提供单独的路径。因此,为了在此类总线上发送存储器访问请求,需要以串行格式发送与请求相关联的地址和数据两者。以这种方式传输地址信息会给串行通信链路增加大量开销。
附图说明
图1以框图形式示出了连接在用于CCIX应用的示例性拓扑中的数据处理平台。
图2以框图形式示出了连接在另一个用于CCIX应用的示例性拓扑中的数据处理平台。
图3以框图形式示出了以更复杂的示例性拓扑连接的用于CCIX应用的数据处理平台。
图4以框图形式示出了根据用于CCIX应用的另一个示例性拓扑的数据处理平台。
图5以框图形式示出了根据一些实施方案的根据图2的拓扑配置的示例性数据处理平台的设计。
图6以框图形式示出了根据一些实施方案的用于链接的存储器请求消息的分组结构。
图7以流程图形式示出了根据一些实施方案的用于实现链接的存储器写入请求的过程。
图8以流程图形式示出了根据一些实施方案的用于实现链接的存储器读取请求的过程。
在下面的描述中,在不同附图中使用相同的附图标记指示类似或相同的项。除非另有说明,否则词语“耦接”及其相关联的动词形式包括通过本领域已知的方式的直接耦接和间接电耦接两者,并且除非另有说明,否则对直接耦接的任何描述都暗示也使用适当形式的间接电耦接的替代实施方案。
具体实施方式
一种设备,其包括:存储器,其具有至少一个存储器芯片;存储器控制器,其连接到存储器;以及总线接口电路,其连接到存储器控制器,所述总线接口电路在数据总线上发送和接收数据。存储器控制器和总线接口电路一起起作用以执行包括在数据总线上接收多个请求消息的过程。在所述请求消息中的选定的第一请求消息内,接收源标识符、目标标识符、请求进行存储器访问的第一地址、和第一有效载荷数据。所述过程包括将第一有效载荷数据存储在存储器中由第一地址指示的位置。在所述请求消息中的选定的第二请求消息内,所述过程接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址。基于链接指示符,所述过程基于第一地址来计算请求进行存储器访问的第二地址。然后,所述过程将第二有效载荷数据存储在存储器中由第二地址指示的位置。
一种方法包括在数据总线上接收多个请求消息。在总线接口电路的控制下,所述方法包括接收源标识符、目标标识符、请求进行存储器访问的第一地址以及请求消息中的选定的第一请求消息内的第一有效载荷数据。第一有效载荷数据存储在存储器中由第一地址指示的位置。在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址。基于链接指示符,基于第一地址来计算请求进行存储器访问的第二地址。所述方法将第二有效载荷数据存储在存储器中由第二地址指示的位置。
一种方法包括在总线接口电路的控制下,在请求消息中的选定的第一请求消息内,在数据总线上接收多个请求消息,接收源标识符、目标标识符和请求进行存储器访问的第一地址。在总线接口电路的控制下,从由第一地址指示的存储器中的位置传输包含第一有效载荷数据的应答消息。在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址。基于链接指示符,基于第一地址来计算请求进行存储器访问的第二地址。所述方法从由第二地址指示的存储器中的位置传输包含第二有效载荷数据的第二应答消息。
一种系统,其包括存储器模块,所述存储器模块具有:存储器,其具有至少一个存储器芯片;存储器控制器,其连接到所述存储器;以及总线接口电路,其连接到存储器控制器并且适于在总线上发送和接收数据。存储器控制器和总线接口电路一起起作用以执行包括在数据总线上接收多个请求消息的过程。在所述请求消息中的选定的第一请求消息内,所述过程接收源标识符、目标标识符、请求进行存储器访问的第一地址和第一有效载荷数据。、所述过程包括将第一有效载荷数据存储在存储器中由第一地址指示的位置。在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址。基于链接指示符,基于第一地址来计算请求进行存储器访问的第二地址。然后,所述过程将第二有效载荷数据存储在存储器中由第二地址指示的位置。所述系统还包括处理器,所述处理器具有第二总线接口电路,所述第二总线接口电路连接到总线,所述第二总线接口电路在数据总线上发送请求消息和接收响应。
图1以框图形式示出了数据处理平台100,所述数据处理平台100以示例性拓扑连接用于加速器的高速缓存一致性互连(CCIX)应用。主机处理器110(“主机处理器”、“主机”)使用CCIX协议附接到加速器模块120,所述加速器模块120包括CCIX加速器和同一装置上的附接的存储器。可在CCIX联盟(CCIX Consortium,Inc.)发布的CCIX基本规范1.0中以及所述标准的后面版本中找到CCIX协议。所述标准提供CCIX链路,所述CCIX链路支持基于硬件的高速缓存一致性,所述基于硬件的高速缓存一致性扩展到加速器和存储装置适配器。除了高速缓存存储器,CCIX还支持扩展系统存储器,以包括CCIX装置扩展的存储器。CCIX架构允许多个处理器作为单个池访问系统存储器。随着处理能力的增加,此类池可能会变得相当大,需要存储器池来保存应用数据,以便在许多互连的处理器上处理线程。出于相同的原因,存储存储器也可能变大。
数据处理平台100包括主机随机存取存储器(RAM)105,所述主机随机存取存储器(RAM)105通常通过集成存储器控制器连接到主机处理器110。除了随机存取存储器(RAM)105之外,加速器模块120的存储器可以作为系统存储器的一部分被主机映射,或者作为单独的共享存储器池而存在。除了CCIX的加速和高速缓存一致性能力之外,数据处理平台100采用CCIX协议来提供扩展的存储器能力,包括本文提供的功能。
图2以框图形式示出了具有用于CCIX应用的另一个简单拓扑的数据处理平台200。数据处理平台200包括主机处理器210,所述主机处理器210连接到主机RAM105。主机处理器210通过CCIX接口在总线上与包括存储器的启用CCIX的扩展模块230通信。类似于图1的实施方案,扩展模块230的存储器可以作为系统存储器的一部分被主机映射。就存储器技术和存储器大小两者而言,扩展的存储器能力可以提供扩展的存储器容量,或者允许集成超出主机处理器210能够直接访问的新的存储器技术。
图3以框图形式示出了具有用于CCIX应用的交换拓扑的数据处理平台300。主机处理器310连接到启用CCIX的交换机350,所述交换机350还连接到加速器模块320和启用CCIX的存储器扩展模块330。通过由交换机350连接扩展的存储器,在数据处理平台300中提供先前直接连接的拓扑的扩展的存储器能力和容量。
图4以框图形式示出了根据用于CCIX应用的另一个示例性拓扑的数据处理平台400。主机处理器410连结到一组CCIX加速器420,所述一组CCIX加速器420是CCIX网状拓扑中的节点,如由相邻节点对420之间的CCIX链路所描绘的。所述拓扑允许跨多个加速器420和处理器共享计算数据。另外,平台400可以扩展到包括加速器附接的存储器,从而允许共享数据可以驻留在主机RAM 105或加速器附接的存储器中。
尽管示出了用于数据处理平台的若干示例性拓扑,但是本文的技术可以与包括网状拓扑在内的其他合适的拓扑一起采用。
图5以框图形式示出了根据图2的拓扑配置的示例性数据处理平台500的设计。通常,主机处理器510在CCIX接口上连接到扩展模块530。尽管在所述示例中示出了直接的点对点连接,但是所述示例不是限制性的,并且本文的技术可以用于采用CCIX数据处理平台的其他拓扑,诸如交换连接,以及具有基于分组的通信链路的其他数据处理协议。主机处理器510包括由片上互连网络504连接的四个处理器内核502。片上互连将每个处理器连结到I/O端口509,在所述实施方案中,所述I/O端口509是被增强为包括CCIX事务层510和PCIE事务层512的PCIe端口。I/O端口509向扩展模块530提供CCIX协议互连,所述扩展模块530覆盖在PCIe总线520上的PCIe传输(PCIe transport)上。PCIe总线520可以包括多个通道,诸如一个、四个、八个或十六个通道,每个通道具有两个单向串行链路,一个链路专用于发送,并且一个链路用于接收。替代地,可以通过PCIe以外的传输携载类似的总线流量。
在PCIe传输上使用CCIX的所述示例中,PCIe端口得到了增强,以携载基于分组的CCIX串行一致性流量,同时减小了由PCIe事务层引入的延迟。为了给CCIX通信提供此类较低的延迟,CCIX提供轻量级事务层510,所述轻量级事务层510独立地连结到标准PCIe事务层512旁边的PCIe数据链路层514。另外,CCIX链路层508覆盖在类似PCIe的物理传输上,以提供CCIX协议消息的无死锁通信所需的足够的虚拟事务信道。CCIX协议层控制器506将链路层508连接到片上互连,并且管理两个方向上的流量。CCIX协议层控制器506由在主机处理器510上运行的多个限定的CCIX代理505中的任一个来操作。发送或接收CCIX请求的任何CCIX协议部件都被称为CCIX代理。代理可以是请求代理、归属代理或从属代理。请求代理是CCIX代理,其是读取和写入事务的源。归属代理是CCIX代理,它为给定的地址范围管理一致性和对存储器的访问。如CCIX协议中所限定的,当高速缓存行需要改变高速缓存状态时,归属代理通过向所需的请求代理发送监听事务来管理一致性。每个CCIX归属代理充当给定地址范围的一致性点(PoC)和串行化点(PoS)。CCIX支持扩展系统存储器,以包括附接到外部CCIX装置的存储器。当相关联的归属代理驻留在一个芯片上并且与归属代理相关联的一些或全部物理存储器驻留在单独的芯片上时,通常是某种类型的扩展的存储器模块,扩展的存储器的控制器被称为从属代理。CCIX协议还限定错误代理,所述错误代理通常在具有另一个代理的处理器上运行来处理错误。
扩展模块530通常包括存储器532、存储器控制器534和总线接口电路536,所述总线接口电路536包括连接到PCIe总线520的类似于主机处理器510的I/O端口509。依据所需的带宽,可在连接中使用沿着每个方向的多个信道或单个信道。具有CCIX链路层的CCIX端口508从I/O端口509的CCIX事务层接收CCIX消息。CCIX从属代理507包括CCIX协议层506,并且履行来自CCIX代理505的存储器请求。存储器控制器534连接到存储器532,以在从属代理507的控制下管理读取和写入。存储器控制器534可以与I/O端口509的端口电路中的一些或全部或者与其相关联的CCIX协议逻辑层控制器506或CCIX链路层508集成在芯片上,或者可在单独的芯片中。扩展模块530包括存储器532,所述存储器532包括至少一个存储器芯片。在所述示例中,存储器是存储类存储器(SCM)或非易失性存储器(NVM)。然而,这些替代方案不是限制性的,并且许多类型的存储器扩展模块可以采用本文所描述的技术。例如,可以使用具有混合NVM和RAM的存储器,诸如具有RAM缓冲器的高容量快闪存储装置或3D交叉点存储器。
图6以框图形式示出了根据一些实施方案的用于链接的存储器请求消息的分组结构。根据本文的示例性实施方案,所描绘的格式用于与存储器扩展模块130、230、330、430和530通信。分组600包括有效载荷608和在互连链路协议(诸如CCIX/PCIe)的若干协议层处提供的控制信息。物理层向每个分组添加包括开始和结束定界符的成帧信息602。数据链路层用序列号604将分组按顺序排列。事务层添加分组报头606,所述分组报头606包括标识分组类型、请求者、地址、大小和特定于事务层协议的其他信息的各种报头信息。有效载荷608包括由CCIX协议层格式化的多个消息610、612。消息610、612由CCIX协议层在目的装置处的目标接收方CCIX代理处提取和处理。
消息610是具有全尺寸消息报头的CCIX协议消息。消息612是具有比消息610更少的消息字段的链接的消息。链接的消息允许为请求消息612发送优化的消息,从而指示它被指向先前请求消息610的后续地址。消息610包括消息有效载荷数据、地址和若干消息字段,在包括源ID、目标ID、消息类型、服务质量(QoS)优先级、请求属性(Req Attr)、请求操作码(ReqOp)、非安全区域(NonSec)位和地址(Addr)的CCIX标准版本1.0中进一步阐述。在消息610和612的CCIX消息报头中可以包括若干其他字段,但是所述若干其他字段与消息链接功能无关,并且没有示出。
用于指示“请求链接(ReqChain)”的请求类型的请求操作码的指定值用于指示链接的请求612。链接的请求612不包括请求属性、地址、非安全区域或服务质量优先级字段,并且包含这些字段的4B对准字节不存在于链接的请求消息中。除了地址,这些字段都暗示与原始请求610相同。链接的请求的目标ID和源ID字段与原始请求相同。传输ID(TxnID)字段(称为标签),从而为特定链接的请求612提供相对于其他链接的请求612的编号顺序。由于请求操作码值指示链接的请求612,因此接收代理将链接的请求612的实际请求操作码解译为与原始请求610相同。用于每个链接的消息612的地址值是通过将64B高速缓存行的64或128B高速缓存行的128加到链接中先前请求的地址而获得的。替代地,链接的消息612可以替代地包括如由图中虚线框所描绘的偏移字段。存储在偏移字段中的偏移可以提供与默认高速缓存行大小提供的64B或128B不同的偏移值,从而允许在链接的请求中改变数据结构的特定部分。偏移值也可以是负的。
准许在链接的请求之间交错诸如监听或响应消息的非请求消息。任何请求的地址字段都可能是可能链接到早前请求的后面的请求所需的。在一些实施方案中,请求链接仅支持用于所有高速缓存行大小的访问,并且具有与高速缓存行大小对准的访问。在一些实施方案中,链接的请求只能出现在同一分组内。在其他实施方案中,从而允许链接的请求跨越多个分组,其中通过传输ID字段完成排序。
图7以流程图形式示出了根据一些实施方案的用于实现链接的存储器写入请求的过程700。链接的存储器写入过程700在框701处由包括诸如图5的代理507的CCIX从属代理的存储器扩展模块开始。尽管在所述示例中,存储器扩展模块执行链接的存储器写入,但是诸如上述示例中的主机处理器或加速器模块也可以履行写入和读取链接的存储器请求。链接的请求通常由CCIX主代理或归属代理准备和传输,所述链接的请求可在主机处理器或加速器处理器上的固件中执行。
过程700通常由在总线接口电路536上与存储器控制器534协作执行的CCIX协议层(诸如CCIX协议层506(图5))来执行。尽管示出了特定的顺序,但是所述顺序不是限制性的,并且对于许多链接的消息,许多步骤可以并行执行。在框702处,过程700接收具有多个请求消息的分组608(图6)。在框704处,开始处理具有用于从属代理507的目标ID的消息。第一消息是类似于请求610的全存储器写入请求,并且首先在框706处被处理,从而提供消息字段数据和地址信息,从而为解译后面的链接的消息612提供基础。通过提取和解译消息字段来处理第一写入消息。在框708处,响应于第一消息,有效载荷数据被写入存储器(诸如存储器532)中由消息中指定的地址所指示的位置处。
在框710处处理第一链接的请求消息612。链接指示符由CCIX协议层识别,所述CCIX协议层通过提供链接的请求(请求属性、非安全区域、地址和服务质量优先级字段)中不存在的那些消息字段的值进行响应。这些值(地址值除外)是从在框706处处理的第一消息610提供的。在框712处,对于链接的消息612中的每个,通过将偏移值应用于来自第一消息610的地址,或者如由传输ID字段提供的消息顺序指示的来自前一链接的消息的地址,来提供地址值。然后,过程700在框714处将当前消息的有效载荷数据存储在存储器中由所计算的地址指示的位置。
如框716所指示的,只要接收到的分组中存在链接的消息,过程700就继续处理链接的消息。如果不再存在链接的消息,则用于链接存储器写入的过程在框718处结束。对于其中链接的消息可以跨越多个分组的实施方案,可以采用标志或诸如传输ID字段的特定值的其他指示符来标识链接中的最终消息。可以响应于每个履行的消息来发送肯定的确认消息。由于消息处理是流水线式的,因此可以不必按照链接的请求的顺序来提供确认。
图8以流程图形式示出了根据一些实施方案的用于实现链接的存储器读取请求的过程800。链接的存储器读取过程800开始于框801,并且可由存储器扩展模块、主机处理器或加速器模块执行,如上面关于写入过程所讨论的。链接的读取请求通常由CCIX主代理或归属代理准备和传输,所述CCIX主代理或归属代理可在主机处理器或加速器处理器上执行。
类似于过程700,过程800通常由CCIX协议层与存储器控制器协作来执行。在框802处,过程800接收具有多个请求消息的分组608(图6)。在框804处,开始处理具有用于从属代理507的目标ID的消息。在框806处,通过提取和解译消息字段和地址来处理第一读取请求消息,从而为解译后面的链接的消息612提供基础。响应于第一消息被解译为对指定地址的读取请求,在框808处,读取由所述地址指示的存储器中的位置,并且用读取的数据准备响应消息。应注意,尽管以特定顺序描绘了处理步骤,但是实际的读取请求可以全部被流水线化,而不依赖于返回响应,使得存储器控制器可以无序地完成任何特定的处理框。因此,响应可以不必按请求顺序返回。
然后,从框810处开始,处理并且实现链接到第一消息的后续链接的消息。对于后续链接的消息中的每个,在框812处,通过将偏移值应用于来自第一消息的地址,或者如由传输ID字段提供的消息顺序指示的来自前一链接的消息的地址,来提供地址值。然后,过程800在框814处在由计算出的地址指示的位置处读取存储器532,并且准备对包含作为有效载荷数据的读取数据的读取请求消息的响应消息。如框816所指示的,只要接收到的分组中存在链接的消息,过程800就继续处理链接的消息。如果不再存在链接的消息,则用于链接存储器读取的过程在框818处结束,并且传输响应消息。响应消息也可以以相同的方式被链接,以在两个方向上提供更高效的通信开销。
增强型PCIe端口609、CCIX代理505、507和总线接口电路536或其任何部分可由计算机可访问的数据结构来描述或表示,所述计算机可访问的数据结构呈可由程序读取并且直接地或间接地用于制造集成电路的数据库或其他数据结构的形式。例如,所述数据结构可以是诸如Verilog或VHDL的高级设计语言(HDL)中的硬件功能的行为级描述或寄存器传送级(RTL)描述。所述描述可由合成工具读取,所述合成工具可以合成所述描述以产生包括来自合成库的门的列表的网表。网表包括一组门,所述一组门也表示包括集成电路在内的硬件的功能。然后,所述网表可以被放置并且路由以产生描述将被应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用掩模来生产集成电路。替代地,根据需要,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集,或者是图形数据系统(GDS)II数据。
在各种实施方案中,本文的技术可以与(例如)需要处理器在分组通信链路上而不是典型的RAM存储器接口上来访问存储器的任何合适的产品一起使用。此外,所述技术可广泛应用于使用以GPU和CPU架构或ASIC架构以及可编程逻辑架构实现的数据处理平台。
尽管已经描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员来说将是显而易见的。例如,前端控制器和存储器信道控制器可以以各种形式的多芯片模块或竖直配置的半导体电路与存储器堆栈集成在一起。可以采用不同类型的错误检测和错误校正编码。
因此,所附权利要求意图涵盖落入所公开的实施方案的范围内的所公开的实施方案的所有修改。
Claims (36)
1.一种设备,其包括:
具有至少一个存储器芯片的存储器;
存储器控制器,其耦接到所述存储器;以及
总线接口电路,其耦接到所述存储器控制器,并且适于在数据总线上发送和接收数据;
所述存储器控制器和总线接口电路一起适于:
在所述数据总线上接收多个请求消息;
在所述请求消息中的选定的第一请求消息内,接收源标识符、目标标识符、请求进行存储器访问的第一地址、和第一有效载荷数据;
将所述第一有效载荷数据存储在存储器中由所述第一地址指示的位置处;
在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址;
基于所述链接指示符,基于所述第一地址来计算请求进行存储器访问的第二地址;以及
将所述第二有效载荷数据存储在所述存储器中由所述第二地址指示的位置。
2.如权利要求1所述的设备,其中所述总线接口电路适于接收在所述数据总线上接收到的分组内的所述多个请求消息。
3.如权利要求2所述的设备,其中所述存储器控制器和总线接口电路一起适于接收在所述第二请求消息之后的多个请求消息,并且对于所述后续消息中的相应的后续消息,标识相应的链接指示符,并且基于所述第一地址来计算请求进行存储器访问的相应的后续地址。
4.如权利要求3所述的设备,其中所述第二请求消息和后续请求消息包括事务标识符,所述事务标识符指示将要计算所述第二地址和后续地址的顺序。
5.如权利要求2所述的设备,其中:
所述存储器控制器适于选择性地处理所述第一请求消息和第二请求消息;并且
所述第一请求消息和第二请求消息在所述分组内不相邻。
6.如权利要求2所述的设备,其中所述数据总线符合用于加速器的高速缓存一致性互连(CCIX)规范。
7.如权利要求1所述的设备,其中所述存储器控制器适于选择性地处理链接到所述第一请求消息和第二请求消息的后续请求消息,所述后续请求消息在与所述第一请求消息和第二请求消息分开的分组中接收。
8.如权利要求1所述的设备,其中基于高速缓存行大小的预定偏移大小来计算所述第二地址。
9.如权利要求1所述的设备,其中基于包含在所述第二请求消息中的偏移大小来计算所述第二地址。
10.一种方法,其包括:
在数据总线上接收多个请求消息;
在总线接口电路的控制下,在所述请求消息中的选定的第一请求消息内,接收源标识符、目标标识符、请求进行存储器访问的第一地址、和第一有效载荷数据;
在存储器控制器的控制下,将所述第一有效载荷数据存储在存储器中由所述第一地址指示的位置处;
在所述总线接口电路的控制下,在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址;
基于所述链接指示符,基于所述第一地址来计算请求进行存储器访问的第二地址;以及
在所述总线接口电路的控制下,将所述第二有效载荷数据存储在所述存储器中由所述第二地址指示的位置。
11.如权利要求10所述的方法,其中所述多个请求消息被包括在在所述数据总线上接收到的分组中。
12.如权利要求11所述的方法,其还包括接收在所述第二请求消息之后的多个请求消息,并且对于所述后续消息中的相应的后续消息,标识相应的链接指示符,并且基于所述第一地址来计算请求进行存储器访问的相应的后续地址。
13.如权利要求12所述的方法,其中所述第二请求消息和后续请求消息包括事务标识符,所述事务标识符指示将要计算所述第二请求消息和后续请求消息地址的顺序。
14.如权利要求11所述的方法,其还包括选择性地处理所述第一请求消息和第二请求消息,其中所述第一请求消息和第二请求消息在所述分组内不相邻。
15.如权利要求11所述的方法,其中所述数据总线符合用于加速器的高速缓存一致性互连(CCIX)规范。
16.如权利要求10所述的方法,其还包括选择性地处理链接到所述第一请求消息和第二请求消息的后续请求消息,所述后续请求消息在与所述第一请求消息和第二请求消息分开的分组中接收。
17.如权利要求10所述的方法,其中基于高速缓存行大小的预定偏移大小来计算所述第二地址。
18.如权利要求10所述的方法,其中基于包含在所述第二请求消息中的偏移大小来计算所述第二地址。
19.一种方法,其包括:
在数据总线上接收多个请求消息;
在总线接口电路的控制下,在所述请求消息中的选定的第一请求消息内,接收源标识符、目标标识符和请求进行存储器访问的第一地址;
在所述总线接口电路的控制下,从由所述第一地址指示的存储器中的位置传输包含第一有效载荷数据的应答消息;
在所述总线接口电路的控制下,在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址;
基于所述链接指示符,基于所述第一地址来计算请求进行存储器访问的第二地址;以及
在所述总线接口电路的控制下,从由所述第二地址指示的存储器中的位置传输包含第二有效载荷数据的第二应答消息。
20.如权利要求19所述的方法,其中所述多个请求消息被包括在在所述数据总线上接收到的分组中。
21.如权利要求20所述的方法,其还包括接收在所述第二请求消息之后的多个请求消息,并且对于所述后续消息中的相应的后续消息,标识相应的链接指示符,并且基于所述第一地址来计算请求进行存储器访问的相应的后续地址。
22.如权利要求21所述的方法,其中所述第二请求消息和后续请求消息包括事务标识符,所述事务标识符指示将要计算所述第二请求消息和后续请求消息地址的顺序。
23.如权利要求21所述的方法,其还包括选择性地处理所述第一请求消息和第二请求消息,其中所述第一请求消息和第二请求消息在所述分组内不相邻。
24.如权利要求20所述的方法,其中所述数据总线符合用于加速器的高速缓存一致性互连(CCIX)规范。
25.如权利要求19所述的方法,其还包括选择性地处理链接到所述第一请求消息和第二请求消息的后续请求消息,所述后续请求消息在与所述第一请求消息和第二请求消息分开的分组中接收。
26.如权利要求19所述的方法,其中基于高速缓存行大小的预定偏移大小来计算所述第二地址。
27.如权利要求19所述的方法,其中基于包含在所述第二请求消息中的偏移大小来计算所述第二地址。
28.一种系统,其包括:
存储器模块,其包括:存储器,其具有至少一个存储器芯片;存储器控制器,其耦接到所述存储器;以及第一总线接口电路,其耦接到所述存储器控制器并且适于在总线上发送和接收数据,所述存储器控制器和所述第一总线接口电路一起适于:
在所述数据总线上接收多个请求消息;
在所述请求消息中的选定的第一请求消息内,接收源标识符、目标标识符、请求进行存储器访问的第一地址、和第一有效载荷数据;
将所述第一有效载荷数据存储在存储器中由所述第一地址指示的位置处;
在所述请求消息中的选定的第二请求消息内,接收与所述第一请求消息和第二有效载荷数据相关联的链接指示符,所述第二请求消息不包括请求进行存储器访问的地址;
基于所述链接指示符,基于所述第一地址来计算请求进行存储器访问的第二地址;以及
将所述第二有效载荷数据存储在所述存储器中由所述第二地址指示的位置处;以及
处理器,其包括第二总线接口电路,所述第二总线接口电路耦接到所述总线并且被配置为在所述数据总线上发送所述请求消息并接收响应。
29.如权利要求28所述的系统,其中所述第一总线接口电路适于接收在所述数据总线上接收到的分组内的所述多个请求消息。
30.如权利要求29所述的系统,其中所述存储器控制器和第一总线接口电路一起适于接收在所述第二请求消息之后的多个请求消息,并且对于所述后续消息中的相应的后续消息,标识相应的链接指示符,并且基于所述第一地址来计算请求进行存储器访问的相应的后续地址。
31.如权利要求30所述的系统,其中所述第二请求消息和后续请求消息包括事务标识符,所述事务标识符指示将要计算所述第二地址和后续地址的顺序。
32.如权利要求31所述的系统,其中所述存储器控制器适于选择性地处理所述第一请求消息和第二请求消息,其中所述第一请求消息和第二请求消息在所述分组内不相邻。
33.如权利要求28所述的系统,其中所述数据总线符合用于加速器的高速缓存一致性互连(CCIX)规范。
34.如权利要求28所述的系统,其中所述存储器控制器适于选择性地处理链接到所述第一请求消息和所述第二请求消息的后续请求消息,所述后续请求消息在与所述第一请求消息和第二请求消息分开的分组中接收。
35.如权利要求28所述的系统,其中基于高速缓存行大小的预定偏移大小来计算所述第二地址。
36.如权利要求28所述的系统,其中基于包含在所述第二请求消息中的偏移大小来计算所述第二地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/221,163 | 2018-12-14 | ||
US16/221,163 US20200192842A1 (en) | 2018-12-14 | 2018-12-14 | Memory request chaining on bus |
PCT/US2019/039433 WO2020122988A1 (en) | 2018-12-14 | 2019-06-27 | Memory request chaining on bus |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113168388A true CN113168388A (zh) | 2021-07-23 |
Family
ID=71072144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980081628.XA Pending CN113168388A (zh) | 2018-12-14 | 2019-06-27 | 总线上的存储器请求链接 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20200192842A1 (zh) |
EP (1) | EP3895027A4 (zh) |
JP (1) | JP2022510803A (zh) |
KR (1) | KR20210092222A (zh) |
CN (1) | CN113168388A (zh) |
WO (1) | WO2020122988A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12014052B2 (en) | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
WO2023173276A1 (en) * | 2022-03-15 | 2023-09-21 | Intel Corporation | Universal core to accelerator communication architecture |
WO2023225792A1 (en) * | 2022-05-23 | 2023-11-30 | Intel Corporation | Techniques to multiply memory access bandwidth using a plurality of links |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030056037A1 (en) * | 2001-09-20 | 2003-03-20 | Lsi Logic Corporation | Hardware chain pull |
US6779145B1 (en) * | 1999-10-01 | 2004-08-17 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US20060161709A1 (en) * | 2005-01-20 | 2006-07-20 | Dot Hill Systems Corporation | Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory |
CN1904868A (zh) * | 2005-07-11 | 2007-01-31 | 商辉达股份有限公司 | 用于包化总线的组合包 |
US20080028158A1 (en) * | 2006-07-26 | 2008-01-31 | Gerald Keith Bartley | Memory Controller For Daisy Chained Memory Chips |
US20080062927A1 (en) * | 2002-10-08 | 2008-03-13 | Raza Microelectronics, Inc. | Delegating Network Processor Operations to Star Topology Serial Bus Interfaces |
US8099766B1 (en) * | 2007-03-26 | 2012-01-17 | Netapp, Inc. | Credential caching for clustered storage systems |
US20130073815A1 (en) * | 2011-09-19 | 2013-03-21 | Ronald R. Shea | Flexible command packet-header for fragmenting data storage across multiple memory devices and locations |
WO2018107331A1 (zh) * | 2016-12-12 | 2018-06-21 | 华为技术有限公司 | 计算机系统及内存访问技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461527B2 (en) * | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
US10409743B1 (en) * | 2018-06-29 | 2019-09-10 | Xilinx, Inc. | Transparent port aggregation in multi-chip transport protocols |
-
2018
- 2018-12-14 US US16/221,163 patent/US20200192842A1/en not_active Abandoned
-
2019
- 2019-06-27 EP EP19895385.3A patent/EP3895027A4/en not_active Withdrawn
- 2019-06-27 JP JP2021527087A patent/JP2022510803A/ja active Pending
- 2019-06-27 CN CN201980081628.XA patent/CN113168388A/zh active Pending
- 2019-06-27 WO PCT/US2019/039433 patent/WO2020122988A1/en unknown
- 2019-06-27 KR KR1020217016250A patent/KR20210092222A/ko unknown
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6779145B1 (en) * | 1999-10-01 | 2004-08-17 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US20030056037A1 (en) * | 2001-09-20 | 2003-03-20 | Lsi Logic Corporation | Hardware chain pull |
US20080062927A1 (en) * | 2002-10-08 | 2008-03-13 | Raza Microelectronics, Inc. | Delegating Network Processor Operations to Star Topology Serial Bus Interfaces |
US20060161709A1 (en) * | 2005-01-20 | 2006-07-20 | Dot Hill Systems Corporation | Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory |
CN1904868A (zh) * | 2005-07-11 | 2007-01-31 | 商辉达股份有限公司 | 用于包化总线的组合包 |
US20080028158A1 (en) * | 2006-07-26 | 2008-01-31 | Gerald Keith Bartley | Memory Controller For Daisy Chained Memory Chips |
US8099766B1 (en) * | 2007-03-26 | 2012-01-17 | Netapp, Inc. | Credential caching for clustered storage systems |
US20130073815A1 (en) * | 2011-09-19 | 2013-03-21 | Ronald R. Shea | Flexible command packet-header for fragmenting data storage across multiple memory devices and locations |
WO2018107331A1 (zh) * | 2016-12-12 | 2018-06-21 | 华为技术有限公司 | 计算机系统及内存访问技术 |
Also Published As
Publication number | Publication date |
---|---|
WO2020122988A1 (en) | 2020-06-18 |
EP3895027A4 (en) | 2022-09-07 |
EP3895027A1 (en) | 2021-10-20 |
US20200192842A1 (en) | 2020-06-18 |
JP2022510803A (ja) | 2022-01-28 |
KR20210092222A (ko) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9025495B1 (en) | Flexible routing engine for a PCI express switch and method of use | |
KR101642086B1 (ko) | 고성능 인터커넥트 링크 계층 | |
TWI473012B (zh) | 具分散內嵌式交換之多處理運算技術 | |
EP3140748B1 (en) | Interconnect systems and methods using hybrid memory cube links | |
US9146890B1 (en) | Method and apparatus for mapped I/O routing in an interconnect switch | |
US7155554B2 (en) | Methods and apparatuses for generating a single request for block transactions over a communication fabric | |
US10802995B2 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
CN1608255B (zh) | 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型 | |
CN108400880B (zh) | 片上网络、数据传输方法和第一交换节点 | |
US20130051391A1 (en) | Use of common data format to facilitate link width conversion in a router with flexible link widths | |
TWI482454B (zh) | 記憶體網路方法、裝置及系統 | |
CN102984123A (zh) | 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型 | |
US20130252543A1 (en) | Low-latency interface-based networking | |
US7277975B2 (en) | Methods and apparatuses for decoupling a request from one or more solicited responses | |
CN113168388A (zh) | 总线上的存储器请求链接 | |
US11036658B2 (en) | Light-weight memory expansion in a coherent memory system | |
KR20190134481A (ko) | 집적회로용 상호연결 네트워크 | |
CN114647602B (zh) | 一种跨芯片访问控制的方法、装置、设备及介质 | |
US11301410B1 (en) | Tags for request packets on a network communication link | |
US11874783B2 (en) | Coherent block read fulfillment | |
JP4774099B2 (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 |