CN112106032B - I/o主设备和cpu之间优化数据共享的有序写存储的高性能流 - Google Patents

I/o主设备和cpu之间优化数据共享的有序写存储的高性能流 Download PDF

Info

Publication number
CN112106032B
CN112106032B CN201980029769.7A CN201980029769A CN112106032B CN 112106032 B CN112106032 B CN 112106032B CN 201980029769 A CN201980029769 A CN 201980029769A CN 112106032 B CN112106032 B CN 112106032B
Authority
CN
China
Prior art keywords
data
message
node
master node
written
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.)
Active
Application number
CN201980029769.7A
Other languages
English (en)
Other versions
CN112106032A (zh
Inventor
詹姆师德·加拉
图沙尔·P·兰格
阿肖克·库马尔·图姆马拉
古鲁纳赫·拉马吉里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN112106032A publication Critical patent/CN112106032A/zh
Application granted granted Critical
Publication of CN112106032B publication Critical patent/CN112106032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

提供了一种数据处理网络及其操作方法,用于将有序数据从请求节点有效地传输到目标节点。请求节点将写入请求发送到主节点,并且当资源已经被分配给主节点时,该主节点响应第一写入请求。然后,请求节点发送待写入的数据。当在主节点处执行了相干动作时,主节点还使用完成消息进行响应。请求节点使用完成确认消息来确认接收到完成消息,直到已经接收到比有序数据的第一写入请求更旧的所有写入请求的完成消息才发送该完成确认消息,从而保持数据顺序。在接收到第一写入请求的完成确认之后,主节点将待写入的数据发送到目标节点。

Description

I/O主设备和CPU之间优化数据共享的有序写存储的高性能流
背景技术
在数据处理***中,可以经由输入/输出(I/O)接口来接收或发送数据。这可以是到片外数据资源的I/O控制器接口或者到本地或远程网络的资源的网络接口控制器(NIC)。
当从I/O接口接收到数据时,将其定向到数据处理***的存储资源,例如存储器或缓存。缓存存储是一种在数据处理***中的特定缓存中安装数据的机制。缓存存储确保数据位于其使用点附近,从而提高***性能。
I/O接口的示例是标准的***组件互连快速(PCIe)串行总线接口。基于PCIe的***利用事务层分组(TLP)处理提示(TPH)来在PCI写入消息上添加引导标签(steeringtag),这些引导标记可以用于标识写数据的存储目标。这种机制引入了需要由***互连处理的强有序的写入存储(write stashes)(PCIe标准的发布写入排序规则所要求的)。然而,诸如相干网格网络(coherent mesh network)之类的互连通常是无序的,因为数据可以采用通过互连的多种不同的路由中的任何一种。此外,当前的数据处理互连要么无法将强有序的写入数据存储到CPU,要么无法以足够高的性能进行存储(例如,第4代PCIe标准支持高达32GBps的写入带宽)。此外,当前***无法在没有诸如死锁(deadlock)之类的问题的情况下,以高性能存储来自独立PCIe主设备的强有序的写入数据。
附图说明
附图提供了将被用于更充分地描述各种代表性实施例的视觉表示,并且本领域技术人员可以使用这些视觉表示来更好地理解所公开的代表性实施例及其固有优点。在这些附图中,相同的附图标记标识相应的元件。
图1是根据各种代表性实施例的数据处理***的框图;
图2是根据各种代表性实施例的处理集群的框图;
图3是常规数据存储的事务流程图;以及
图4-图7是根据各种代表性实施例的数据存储的事务流程图。
具体实施方式
本文描述的各种装置和设备提供了用于在数据处理***中自动路由和分配输入数据的机制。
尽管本公开易于以许多不同的形式实施,但是在附图中示出并且将在本文中详细描述特定实施例,但是应当理解,本公开将被视为本公开的原理的示例,并且不旨在将本公开限于所示出和描述的特定实施例。在下面的描述中,相同的附图标记用于描述附图的若干视图中的相同、相似或相应的部分。
在本文中,诸如第一和第二、顶部和底部等之类的关系术语可以仅用于将一个实体或动作与另一实体或动作区分开,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或次序。术语“包括”、“包含”或其任何其他变型旨在覆盖非排他性包含,使得包括一系列元素的过程、方法、物品或装置不仅包括那些元素,还可以包括未明确列出或这种过程、方法、物品或装置所固有的其他元素。在没有更多限制的情况下,以“包括…”开头的元素并不排除在包括该元素的过程、方法、物品或装置中存在其他相同的元素。
在整个文档中,对“一个实施例”、“某些实施例”、“实施例”或类似术语的引用意味着结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书在各种位置中的这样的短语的出现不一定都指的是相同的实施例。此外,在一个或多个实施例中可以以任何适当的方式来组合特定特征、结构或特性,而没有限制。
本文所使用的术语“或”将被解释为包括或表示任何一个或任何组合。因此,“A、B或C”表示“以下各项中的任何一项:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元素、功能、步骤或动作的组合以某种方式固有地相互排斥时,才会出现该定义的例外情况。
为了图示的简洁和清楚,附图标记可以在附图之间重复以指示相应或相似的元件。阐述了许多细节以提供对本文描述的实施例的理解。可以在没有这些细节的情况下实践实施例。在其他情况下,没有详细描述公知的方法、过程和组件,以避免使所描述的实施例模糊。该描述不应被视为限于本文描述的实施例的范围。
本公开涉及一种数据处理***中的机制,该机制使得能够在无序互连中实现有序写入存储的高性能流传输。该机制使得能够在在多个I/O设备和处理设备之间实现优化的数据共享,同时提供高带宽。
将参考具有缓存相干互连(CCI)(例如,相干网格网络(CMN))的多核心架构来描述本公开,其连接一组处理核心集群、一组主节点(Home Node,HN)(包括在所有核心之间共享的***级缓存(SLC))、一组存储器控制器和I/O设备接口。
图1是根据各种代表性实施例的数据处理***100的框图。多个处理核心集群102(称为请求节点)经由相干互连104耦合到数据资源。经由输入/输出(I/O)请求节点(RN-I)来接收数据。在所示的示例中,RN-I106a包括从网络108接收数据的网络接口控制器(NCI),并且RN-I 106b从I/O设备112接收数据。例如,I/O设备112可以经由***组件互连快速(PCIe)总线进行耦合。数据可以存储在经由存储器控制器116耦合到互连104的一个或多个存储器或存储设备114中。主节点(HN)118包括***级缓存。每个主节点(HN)都用作存储在给定***地址集处的数据的相干点。从I/O请求节点106a和106b接收的数据可以被路由到主节点。然后,主节点将数据存储在HN的***级缓存中,或将其发送到存储器控制器116,以存储在存储器114中。可选地,使用被称为“缓存存储”的过程,在I/O请求节点106a和106b处接收到的数据可以被路由到目标设备(例如,处理集群102)的缓存。缓存存储是一种机制,I/O接口可以通过该机制将数据写入到核心的专用缓存(L1、L2)或处理集群102的集群缓存(L3)。本公开涉及用于将有序数据从I/O设备112传输到目标设备(例如,处理集群102)的缓存的缓存存储机制。
图2是根据本公开的实施例的数据处理***200的框图。在该示例中,I/O设备是分别经由PCIe根联合体204、I/O请求节点(RN-I)206和互连208耦合到处理集群(请求节点)212a和212b的缓存210a和210b的PCIe端点202。在操作中,PCIe根联合体(root complex)204在接口214(例如,Arm Limited的高级可扩展接口(AXI))上将有序的写入存储注入到互连208中。可以使用诸如流标识符之类的标识符来标记有序的写入,以指示它们属于公共组,并且应该在同一信道(channel)上进行路由。
在当前的数据处理***中,属于同一组的写入被I/O请求节点206串行化并一次一个地分配给互连。这导致有序写入的性能不佳。
PCIe根联合体204可以实现包括事务层216、数据链路层218和物理层220的分层协议。物理层220可以提供用于与PCIe端点连接的16个通道222。在所示示例中,通道222a耦合到端点202。
请求节点212a和212b可以经由接口224耦合到互连208,该接口224可以是例如ArmLimited的相干集线器接口(CHI)。
主节点226a和226b为组***地址提供相干点。
根据本公开的某些方面,提供了一种数据处理网络及其操作方法,用于将有序数据从请求节点(RN-I)有效地传输到目标节点。RN-I将写入请求发送到主节点(HN),并且当HN分配了资源时,HN响应第一写入请求。然后,RN-I发送待写入的数据。当在HN处执行了相干动作时,HN还使用完成(COMP)消息进行响应。RN-I使用COMP_ACK消息来确认接收到COMP消息。直到针对比有序数据的第一写入请求更旧的所有写入请求都已接收到COMP消息,才发送该消息,从而保持数据顺序。在接收到第一写入请求的COMP_ACK之后,HN将待写入的数据发送到目标节点。
图3-图7示出了与本公开的实施例一致的用于各种事务的事务流程图。参考具有PCIe主设备的(高级可扩展接口)来描述以下实施例。然而,在不脱离本公开的情况下,可以使用其他接口。在图中,使用以下消息符号。
用于与I/O主设备的通信:
·AW:AXI上的写入地址/控制信道
·W:AXI上的写入数据信道
·BRESP:AXI上的写入完成
以及用于节点之间的通信:
·WR_UNIQ_STASH(WUS):写入唯一存储请求
·RD_NO_SNP:读取,无监听(snoop)请求
·WR_NO_SNP:写入,无监听请求
·WriteUniqPtl:写入唯一部分请求
·DBID_RSP:写入数据缓冲器信用消息
·COMP:完成消息
·COMP_DBID_RSP:组合的数据缓冲器信用和完成消息
·WR_DATA:写入数据消息
·SnpUniqStash:监听唯一存储消息
·SNP_RSP:监听响应
·COMP_ACK:完成确认
·Retry_Ack:重试确认响应
·CRD_GNT:信用授予消息
图3是当前数据处理***的事务流程图。在图3中,竖线是时间线,其中时间向下流动,并且箭头表示设备之间的消息/数据传输。示出了以下时间线:302用于源设备(在所示示例中为PCIe主设备),304用于I/O请求节点(RN-I),306用于第一主节点(HNF0),308用于第二主节点(HNF1)以及310用于存储目标或目标设备。从PCIe主设备向I/O请求节点(RN-I)发送诸如AW0/W0(ID0,WUS)之类的存储请求。RN-I使用***地址映射来确定哪个主节点(在该示例中为HNF0或HNF1)应当处理数据并将其传递到存储目标。在当前***中,有序的写入存储消息(例如,WR_UNIQ_STASH消息WUS0和WUS1)在RN-I处被串行化,从而导致用于写入的低带宽。这种低带宽行为对于某些应用可能是不可接受的,并且可能不足以符合诸如第4代PCIe之类的标准。例如,参考图3,在I/O请求节点(RN-I)处接收到从PCIe主设备发送的两个写入请求AW0/W0和AW1/W1,但是RN-I对第二写入请求的处理(当将WUS1发送到HNF1时开始)等待,直到在消息WR_DATA0中第一数据已经发送到HNF0之后。因此,当前***(即,当前互连)不以足够高的性能水平将强有序的写入(例如,来自PCIe主设备)存储到CPU中。
本文公开的机制使得一组I/O主设备(例如,PCIe根联合体)能够以高带宽将强有序的写入数据存储到CPU缓存中。这些机制提供对***的互连(例如,其可以是相干网格网络)、传输协议、I/O请求节点(RN-I)和主节点(HN)的增强。
在一个实施例中,针对WR_UNIQ_STASH请求增强了用于将节点与互连进行接口的协议(例如,相干集线器接口(CHI)协议),以添加可选的COMP_ACK分组响应并添加WR_DATA_CANCEL数据操作。在此,WR_UNIQ_STASH是将数据存储到CPU的缓存(存储目标)并将数据标记为具有相干状态UNIQUE的请求。
针对WR_UNIQ_STASH请求增强了I/O请求节点(RN-I),以添加具有RequestOrder和ExpCompAck消息或属性的流传输流,并添加WR_DATA_CANCEL消息,以在RN-I检测到由于互连中的资源冲突而导致的死锁时使用,这种冲突由于流传输流而产生。
主节点(HN-F)被增强以添加双COMP_ACK流,并且进一步被增强以延迟将存储数据发送到存储目标,使得存储数据依赖于接收COMP_ACK。这确保了在观察到所有先前有序的写入之前,不会观察到CPU中的存储数据。
图4是根据本公开的实施例的数据处理***的事务流程图。图4示出了用于RN-I的时间线402,用于HN(HNF0)的时间线404以及用于目标节点(例如,CPU)的时间线406。数据可以从RN-I传输到目标节点的缓存,而不是传输到共享存储器。该过程被称为“存储”,并且目标节点也被称为存储目标。
图4示出了用于在数据处理网络中经由RN-I和HN将数据从源设备(例如,PCIe主设备、加速单元或图形处理单元)传输到目标设备的方法的实施例。源设备耦合到RN-I,并且将有序数据发送到RN-I。有序数据与标识特定数据流的流标识符相关联。RN-I向HN发送写入请求(WR_UNIQ_STASH),其中该写入请求包括目标设备的指示符、请求命令(RO)消息和预期完成确认(ExpCompAck或ECA)消息,该RO消息向HN指示RN-I将发送没有任何相关性的多个写入请求,该ExpCompAck或ECA消息向HN指示观察顺序将由来自RN-I的完成确认(COMP_ACK)消息的释放来控制。
HN分配资源(例如,用于写入事务的数据缓冲器),并且向RN-I发送数据缓冲器标识符(DBID_RSP)消息和完成(COMP)消息,该DBID_RSP消息标识用于接收待写入的数据的数据缓冲器,该COMP消息指示HN的完成。响应于DBID-RSP消息,RN-I将待写入的数据作为WR_DATA消息发送。响应于COMP消息,RN-I将第一完成确认(COMP_ACK)消息发送到HN。然后,RN-I的事务完成。响应于第一COMP_ACK消息,HN在COMP_DATA(UD)消息中发送要写入到目标设备的数据。“UD”标识指示数据的相干状态是唯一且脏(dirty)的,这意味着只有一个节点具有数据的副本,并且该数据与共享存储器中存储的针对该地址的数据不匹配。作为响应,目标设备将第二COMP_ACK消息发送到HN。
该方法的重要特征是直到RN-I已经针对比第一写入请求更旧的并且具有与第一写入请求相同的流标识符的所有写入请求都已接收到COMP消息,RN-I才发送第一COMP_ACK消息。这确保了数据的正确排序。
作为数据相干协议的部分,HN将监听消息(SNP_UNIQ_STASH)发送到目标设备。目标设备使用SNP_RSP(DATAPULL=1)消息进行响应。
参考图4,要注意的是,RN-I生成RequestOrder=1(RO=1)和ExpCompAck=1(ECA=1)的WR_UNIQ_STASH请求。请求命令(RO)消息向主节点指示RN-I将发送没有任何相关性的多个WR_UNIQ_STASH请求。ExpCompAck(ECA)消息指示观察顺序将由来自RN-I的COMP_ACK消息的释放来控制。还要注意的是,主节点HN-F创建了新颖的双COMP_ACK流,其中来自RN-I的WR_UNIQ_STASH事务与到CPU缓存目标的SNP_UNIQ_STASH事务互锁,因此需要在同一事务中管理两个COMP_ACK—一个来自RN-I,而另一个来自存储目标(CPU)。相反,针对每个写入,图3中的事务使用单个COMP_ACK。更进一步,要注意的是,直到从RN-I接收到相应COMP_ACK消息,HN-F才将存储数据暴露给目标节点(CPU)(经由消息COMP_DATA(UD))。这确保了以正确的顺序观察存储数据。
图5是根据本公开的实施例的数据处理***的另一事务流程图。图5示出了用于RN-I的时间线502,用于HN(HNF0)的时间线504以及用于目标节点(例如,CPU)的时间线506。图5示出了如何通过在主节点HN-F处将DBID_RSP和COMP一起组合在单个消息中来优化流,而请求节点RN-I可以将WR_DATA与COMP_ACK进行组合在单个消息中。当在监听过滤器查找期间确定没有CPU具有数据的旧副本时,主节点HN-F使用组合流。类似地,当请求节点RN-I在发送WR_DATA的同时确定所有更旧的写入已经接收到COMP时,请求节点RN-I使用组合流,因为它可以使用WR_DATA_ACK操作码,该操作码将WR_DATA与COMP_ACK组合。
图6是根据本公开的实施例的数据处理***的另一事务流程图。图6示出了用于RN-I的时间线602,用于HN(HNF0)的时间线604,用于目标节点(例如,CPU)的时间线606以及用于存储器控制器(DMC)的时间线608。图6示出了WR_DATA_CANCEL消息的使用。在多个主设备向***发出强有序的写入的情况下,由于***中引入的循环相关性,写入可能会发生死锁。为了缓解死锁,将WR_DATA_CANCEL流与WR_UNIQ_STASH请求结合使用,如图所示。在取消的存储事务的情况下,主节点HN-F将当前数据值存储在***缓存中。请求节点RN-I稍后可以重放实际的存储事务,然后将其存储到指定的CPU缓存中。因此,RN-I检测到由于互连中的资源冲突而导致的死锁,并向HN发送消息以取消第一写入请求。作为响应,HN向存储器控制器发送监听请求(RD_NO_SNP)以检索与待写入的数据的地址相关联的数据的最新副本。存储器控制器发回与待写入到消息COMP_DATA中的数据的地址相关联的数据的最新副本。然后,在消息COMP_DATA(UC)中将该数据而不是待写入的数据发送到目标设备。目标设备处的数据的相干状态是唯一干净的(UC),因为该数据与存储在由存储器控制器访问的存储器中的数据相匹配。如前所述,目标设备通过COMP_ACK消息来确认接收到的数据。一旦接收到该第二OCMP_ACK消息(第一OCMP_ACK消息来自RN-I),则该事务在HN处完成,并且所分配的资源(例如,数据缓冲器)可以被释放。
图7是根据本公开的实施例的数据处理***的另一事务流程图。示出了以下时间线:702用于源设备(在所示示例中为PCIe主设备),704用于I/O请求节点(RN-I),706用于第一主节点(HNF0),708用于第二主节点(HNF1)以及710用于存储目标或目标设备。图7示出了用于在AXI/CHI架构中实现的从PCIe主设备到存储目标的多个有序的存储事务的事务流。来自PCIe主设备的两个WR_UNIQ_STASH(WUS)事务在AXI信道上使用相同的写入地址组标识符(AWID)来表示强有序的要求。要注意的是,这两个写入跨***中的多个HN-F被条带化。此外,请求节点(RN-I)使用流式有序流来对跨HN-F的事务进行排序,并且主节点(HN-F)仅在COMP_ACK(WR_DATA_ACK)到达之后才将数据存储到CPU缓存中。因此,可以为写入存储保持有序的写入观察属性。如图7所示,来自RN-I的写入存储可以在***中完全流水线化,从而实现非常高性能水平的写入。
在图7所示的实施例中,源设备是PCIe主设备,但是有序数据可以从其他设备(例如,图形处理器、串行端口、加速器等)接收。在所示的示例中,源设备在消息AW0/W0(ID0,WUS)和AW1/W1(ID0,WUS)中发送两个写入请求。这些请求具有相同的流标识符(ID0),指示应当保持顺序。该请求还包括指示符WUS(写入唯一存储),其指示数据将被存储在目标节点而不是发送到存储器。在接收到请求时,RN-I将两个写入请求(WUS0和WUS1)发送到数据处理网络的主节点(HN)。在所示的示例中,这些请求被发送到不同的HN,但是在其他情况下,这些请求可以被发送到同一节点。如上所述,每个请求包括目标设备的指示符、请求命令(RO)消息和预期完成确认(ExpCompAck)消息,该RO消息向HN指示RN-I将发送没有任何相关性的多个写入请求,该ExpCompAck消息向HN指示观察顺序将由来自RN-I的完成确认(COMP_ACK)消息的释放来控制。对于每个第一写入请求,接收HN发送数据缓冲器标识符(DBID_RSP)消息和完成(COMP)消息,该DBID_RSP消息标识用于接收与第一写入请求相关联的数据的数据缓冲器,该COMP消息指示HN的完成。在所示示例中,这些消息被组合为分别从主节点HNF0和HNF1发送的DBID_COMP0和DBID_COMP1。
RN-I响应于DBID-RSP消息而将待写入的数据发送到HN,并且响应于COMP消息而发送第一完成确认(COMP_ACK)消息。这些响应被组合为WR_DATA_ACK0和WR_DATA_ACK1。根据本公开的一个方面,直到RN-I已经针对数据流的所有更旧的写入请求都已接收到COMP消息,RN-I才发送第一COMP_ACK消息。
响应于每个第一COMP_ACK消息,HN将待写入的数据发送到目标设备。具体地,在从RN-I接收到WR_DATA_ACK0之后,HNF0在消息COMP_DATA0(UD)中将数据发送到目标设备,并且在从RN-I接收到WR_DATA_ACK1之后,HNF1在消息COMP_DATA1(UD)中将数据发送到目标设备。响应于接收到数据,目标设备将第二COMP_ACK消息发送到相应HN(COMP_ACK0至HNF0和COMP_ACK1至HNF1)。
当RN-I从HN接收到COMP_DBID消息时,其将确认消息BRESP0或BRESP1发送回源设备(在所示示例中为PCIe主设备)。
每个HN响应于接收到的每个写入请求,根据相干协议而将监听消息(snpUniqStash0或snpUniqStash1)发送到目标设备,并从目标设备接收监听响应(SNP_RSP0或SNP_RSP1)。直到HN接收到对监听消息的响应,才将待写入的数据从HN发送到目标设备。如前所述,RN-I可以检测到互连中的死锁,并发送WR_CANCEL消息以结束死锁。
下表1示出了上述机制的测试结果。在测试中,在一个请求节点(RN-I)或多个(三个)请求节点处注入了针对相同写入地址组(例如,相同AWID)的写入存储。写入跨多个(四个)主节点被条带化(stripped),并且存储目标分布在三个CPU、单个CPU或没有分布在CPU上。针对以2GHz运行的32B RN-I数据接口执行了测量。该表示出了当前流机制与所公开的流机制的带宽比较。
表1.带宽比较
本领域技术人员将认识到,已经根据示例性实施例描述了本公开。可以使用等同于所描述和要求保护的实施例的硬件组件等同物(例如,专用硬件和/或专用处理器)来实现本公开。类似地,通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器和/或专用硬连线逻辑可以用于构造本公开的替代等效实施例。
使用专用硬件、可配置硬件或执行以流程图形式广泛描述的编程指令的编程处理器来实现本文所描述的各种实施例,这些编程指令可以被存储在任何合适的电子存储介质上或在任何合适的电子通信介质上传输。可以使用这些元素的组合。本领域技术人员将理解,在不脱离本公开的情况下,可以以任何数量的变型来实现上述过程和机制。例如,在不脱离本公开的情况下,通常可以改变执行的某些操作的顺序,可以添加附加操作或可以删除操作。这样的变化被考虑并且被认为是等同的。
本公开的实施例实现了一种用于在数据处理网络中将有序数据从源设备传输到目标设备的方法,其中,源设备耦合到数据处理网络的请求节点。该方法包括:由请求节点接收来自源设备的第一写入请求,其中,第一写入请求以目标设备为目标并且与流标识符相关联;由请求节点向数据处理网络的主节点发送第二写入请求;响应于第二写入请求,由主节点向请求节点发送写入数据缓冲器信用消息和完成消息,该写入数据缓冲器信用消息标识用于接收待写入的数据的数据缓冲器,该完成消息指示主节点的完成;响应于写入数据缓冲器信用消息,由请求节点向主节点发送待写入的数据;响应于完成消息,由请求节点向主节点发送第一完成确认消息;响应于第一完成确认消息,由主节点向目标设备发送待写入的数据;以及响应于接收到待写入的数据,由目标设备向主节点发送第二完成确认消息,其中,直到请求节点针对比第一写入请求更旧并且具有与第一写入请求相同的流标识符的所有写入请求都已接收到完成消息,请求节点才发送第一完成确认消息。
第二写入请求可以向主节点指示请求节点发送待写入的数据作为有序数据集的一部分,并且观察顺序将由来自请求节点的完成确认消息的释放来控制。
当主节点确定没有目标节点具有待写入的数据的旧副本时,可以将从主节点发送到请求节点的写入数据缓冲器信用消息和完成消息组合为一个消息。
在一个实施例中,当请求节点确定所有更旧的写入已经接收到来自主节点的完成消息时,将从请求节点发送到主节点的完成确认消息和待写入的数据组合为一个消息。
该方法可以包括:由主节点根据相干协议向目标设备发送监听消息;以及由目标设备向主节点发送针对监听消息的响应;其中,直到主节点接收到针对监听消息的响应,才将待写入的数据从主节点发送到目标设备。
第一写入请求可以包括存储请求,并且待写入的数据可以以唯一脏(unique-dirty)相干状态被存储在目标设备处。
在一个实施例中,该方法还包括:由请求节点检测由于数据处理网络的互连中的资源冲突而导致的死锁;由请求节点向主节点发送用于取消第一写入请求的消息;响应于用于取消第一写入请求的消息,由主节点向存储器控制器发送监听请求,以检索与待写入的数据的地址相关联的数据的最新副本;以及由主节点从存储器控制器接收与待写入的数据的地址相关联的数据的最新副本;其中,将与待写入的数据的地址相关联的数据的最新副本而不是待写入的数据发送到目标设备。
源设备可以包括输入/输出设备、加速器设备或图形处理单元。
该方法还可以包括:主节点响应于第二完成确认消息而释放数据缓冲器。
另一实施例实现了一种用于在数据处理网络中将数据流的有序数据从请求节点传输到目标节点的方法。该方法包括:由请求节点向数据处理网络的一个或多个主节点发送多个第一写入请求;针对多个写入请求中的每个第一写入请求:由向其发送第一写入请求的一个或多个主节点中的主节点发送写入数据缓冲器信用消息和完成消息,该写入数据缓冲器信用消息标识用于接收与第一写入请求相关联的数据的数据缓冲器,该完成消息指示主节点的完成;响应于写入数据缓冲器信用消息,由请求节点向主节点发送待写入的数据;响应于完成消息,由请求节点向主节点发送第一完成确认消息;响应于第一完成确认消息,由主节点向目标设备发送待写入的数据;以及响应于接收到待写入的数据,由目标设备向主节点发送第二完成确认消息,其中,直到请求节点针对数据流的所有更旧的写入请求都已接收到完成消息,请求节点才发送第一完成确认消息。
针对每个第一写入请求,可以将从主节点发送到请求节点的写入数据缓冲器信用消息和完成消息组合为一个消息。
针对每个第一写入请求,可以将从请求节点发送到主节点的完成确认消息和待写入的数据组合为一个消息。
该方法还可以包括:由第一写入请求被发送到的一个或多个主节点中的主节点根据相干协议向目标设备发送监听消息;以及由目标设备向主节点发送针对监听消息的响应;其中,直到主节点接收到针对监听消息的响应,才将与第一写入请求相关联的数据从主节点发送到目标设备。
多个第一写入请求可以包括存储请求并且与第一请求相关联的数据可以以唯一脏(UD)相干状态被存储在目标设备处。
该方法还可以包括:由请求节点检测由于数据处理网络的互连中的资源冲突而导致的死锁;由请求节点向一个或多个主节点中的主节点发送用于取消多个写入请求中的第一写入请求的消息;响应于用于取消第一写入请求的消息,由主节点向存储器控制器发送监听请求,以检索与待写入的数据的地址相关联的数据的最新副本;以及由主节点从存储器控制器接收与所取消的第一写入请求的数据的地址相关联的数据的最新副本;其中,将所取消的第一写入请求的数据的最新副本而不是与第一写入请求相关联的数据发送到目标设备。
数据流的有序数据可以是在请求节点处从输入/输出设备、加速器设备或图形处理单元接收的。
再一实施例提供了一种数据处理网络,包括:目标设备;请求节点,被配置为从源设备接收针对待写入到目标设备的数据的第一写入请求,该数据与有序数据流相关联;主节点,为数据处理网络提供相干点,其中,主节点经由互连耦合到目标设备和请求节点;其中,请求节点被配置为:响应于来自源设备的第一写入请求而向主节点发送第二写入请求;响应于第二写入请求而从主节点接收写入数据缓冲器信用消息和完成消息,该写入数据缓冲器信用消息标识用于接收待写入的数据的数据缓冲器,该完成消息指示主节点的完成;响应于写入数据缓冲器信用消息而向主节点发送待写入的数据;以及响应于完成消息而向主节点发送第一完成确认消息,其中,直到请求节点已经接收到比第一写入请求更旧并且与和第一写入请求相同的数据流标识符相关联的所有写入请求的完成消息,才发送第一完成确认消息;其中,主节点被配置为响应于第一完成确认消息而向目标设备发送待写入的数据;并且其中,目标设备被配置为响应于接收到待写入的数据而向主节点发送第二完成确认消息。
从主节点发送到请求节点的写入数据缓冲器信用消息和完成消息可以被组合为一个消息。
从请求节点发送到主节点的完成确认消息和待写入的数据可以被组合为一个消息。
在一个实施例中,主节点被配置为根据相干协议而向目标设备发送监听消息;目标设备被配置为将针对监听消息的响应发送回主节点;以及直到主节点接收到针对监听消息的响应,才将待写入的数据从主节点发送到目标设备。
在一个实施例中,第二写入请求是存储请求,并且待写入的数据以唯一脏相干状态被存储在目标设备的缓存中。
在一个实施例中,请求节点还被配置为检测由于数据处理网络的互连中的资源冲突而导致的死锁,并且向主节点发送用于取消第一写入请求的消息;以及主节点还被配置为响应于用于取消第一写入请求的消息:向数据处理网络的存储器控制器发送监听请求,以检索与待写入的数据的地址相关联的数据的最新副本;从存储器控制器接收与待写入的数据的地址相关联的数据的最新副本;以及将与待写入的数据的地址相关联的数据的最新副本而不是待写入的数据发送到目标设备。
源设备可以是输入/输出设备、加速器设备或图形处理单元。
该数据处理网络可以被形成在单个芯片上。
又一实施例提供了一种非暂态计算机可读介质,存储描述数据处理网络的硬件描述语言的指令。
又一实施例提供了一种非暂态计算机可读介质,存储数据处理网络的组件和连通性的网表。
已经通过示例而非限制的方式呈现了本文已经详细描述的各种代表性实施例。本领域技术人员将理解的是,可以对所描述的实施例的形式和细节进行各种改变,从而导致等同实施例保持在所公开的本公开的范围内。

Claims (25)

1.一种用于在数据处理网络中将有序数据从源设备传输到目标设备的方法,其中,所述源设备耦合到所述数据处理网络的请求节点,所述方法包括:
由所述请求节点接收来自所述源设备的第一写入请求,其中,所述第一写入请求以所述目标设备为目标并且与流标识符相关联;
由所述请求节点向所述数据处理网络的主节点发送第二写入请求;
响应于所述第二写入请求,由所述主节点向所述请求节点发送写入数据缓冲器信用消息和完成消息,所述写入数据缓冲器信用消息标识用于接收待写入的数据的数据缓冲器,所述完成消息指示所述主节点的完成;
响应于所述写入数据缓冲器信用消息,由所述请求节点向所述主节点发送所述待写入的数据;
响应于所述完成消息,由所述请求节点向所述主节点发送第一完成确认消息;
响应于所述第一完成确认消息,由所述主节点向所述目标设备发送所述待写入的数据;以及
响应于接收到所述待写入的数据,由所述目标设备向所述主节点发送第二完成确认消息,
其中,直到所述请求节点针对比所述第一写入请求更旧并且具有与所述第一写入请求相同的流标识符的所有写入请求都已接收到完成消息,所述请求节点才发送所述第一完成确认消息。
2.根据权利要求1所述的方法,其中,所述第二写入请求向所述主节点指示所述请求节点发送所述待写入的数据作为有序数据集的一部分,并且观察顺序将由来自所述请求节点的完成确认消息的释放来控制。
3.根据权利要求1所述的方法,其中,当所述主节点确定没有目标设备具有所述待写入的数据的旧副本时,将从所述主节点向所述请求节点发送的所述写入数据缓冲器信用消息和所述完成消息组合为一个消息。
4.根据权利要求1所述的方法,其中,当所述请求节点确定所有更旧的写入已经接收到来自所述主节点的完成消息时,将从所述请求节点向所述主节点发送的所述第一完成确认消息和所述待写入的数据组合为一个消息。
5.根据权利要求1所述的方法,还包括:
由所述主节点根据相干协议向所述目标设备发送监听消息;以及
由所述目标设备向所述主节点发送针对所述监听消息的响应;
其中,直到所述主节点接收到所述针对所述监听消息的响应,才将所述待写入的数据从所述主节点发送到所述目标设备。
6.根据权利要求1所述的方法,其中,所述第一写入请求包括存储请求,并且其中,所述待写入的数据以唯一脏相干状态被存储在所述目标设备处。
7.根据权利要求1所述的方法,还包括:
由所述请求节点检测由于所述数据处理网络的互连中的资源冲突而导致的死锁;
由所述请求节点向所述主节点发送用于取消所述第一写入请求的消息;
响应于所述用于取消所述第一写入请求的消息,由所述主节点向存储器控制器发送监听请求,以检索与所述待写入的数据的地址相关联的数据的最新副本;以及
由所述主节点从所述存储器控制器接收与所述待写入的数据的地址相关联的数据的最新副本;
其中,将与所述待写入的数据的地址相关联的数据的最新副本而不是所述待写入的数据发送到所述目标设备。
8.根据权利要求1所述的方法,其中,所述源设备包括输入/输出设备、加速器设备或图形处理单元。
9.根据权利要求1所述的方法,还包括:所述主节点响应于所述第二完成确认消息而释放所述数据缓冲器。
10.一种用于在数据处理网络中将数据流的有序数据从请求节点传输到目标设备的方法,所述方法包括:
由所述请求节点向所述数据处理网络的一个或多个主节点发送多个第一写入请求;
针对所述多个第一写入请求中的每个第一写入请求:
由所述第一写入请求被发送到的所述一个或多个主节点中的主节点发送写入数据缓冲器信用消息和完成消息,所述写入数据缓冲器信用消息标识用于接收与所述第一写入请求相关联的数据的数据缓冲器,所述完成消息指示所述主节点的完成;
响应于所述写入数据缓冲器信用消息,由所述请求节点向所述主节点发送待写入的数据;
响应于所述完成消息,由所述请求节点向所述主节点发送第一完成确认消息;
响应于所述第一完成确认消息,由所述主节点向所述目标设备发送所述待写入的数据;以及
响应于接收到所述待写入的数据,由所述目标设备向所述主节点发送第二完成确认消息,
其中,直到所述请求节点针对所述数据流的所有更旧的写入请求都已接收到完成消息,所述请求节点才发送所述第一完成确认消息。
11.根据权利要求10所述的方法,其中,针对每个第一写入请求,将从所述主节点向所述请求节点发送的所述写入数据缓冲器信用消息和所述完成消息组合为一个消息。
12.根据权利要求10所述的方法,其中,针对每个第一写入请求,将从所述请求节点向所述主节点发送的所述第一完成确认消息和所述待写入的数据组合为一个消息。
13.根据权利要求10所述的方法,还包括:
由所述第一写入请求被发送到的所述一个或多个主节点中的主节点根据相干协议向所述目标设备发送监听消息;以及
由所述目标设备向所述主节点发送针对所述监听消息的响应;
其中,直到所述主节点接收到所述针对所述监听消息的响应,才将与所述第一写入请求相关联的数据从所述主节点发送到所述目标设备。
14.根据权利要求10所述的方法,其中,所述多个第一写入请求包括存储请求,并且其中,与所述第一写入请求相关联的数据以唯一脏相干状态被存储在所述目标设备处。
15.根据权利要求10所述的方法,还包括:
由所述请求节点检测由于所述数据处理网络的互连中的资源冲突而导致的死锁;
由所述请求节点向所述一个或多个主节点中的主节点发送用于取消所述多个第一写入请求中的第一写入请求的消息;
响应于用于取消所述第一写入请求的消息,由所述主节点向存储器控制器发送监听请求,以检索与所述待写入的数据的地址相关联的数据的最新副本;以及
由所述主节点从所述存储器控制器接收与所取消的第一写入请求的数据的地址相关联的数据的最新副本;
其中,将所取消的第一写入请求的数据的最新副本而不是与所述第一写入请求相关联的数据发送到所述目标设备。
16.根据权利要求10所述的方法,其中,所述数据流的有序数据是在所述请求节点处从输入/输出设备、加速器设备或图形处理单元接收的。
17.一种数据处理网络,包括:
目标节点;
请求节点,其被配置为从源设备接收针对待写入到所述目标节点的数据的第一写入请求,该数据与有序数据流相关联;
主节点,其为所述数据处理网络提供相干点,其中,所述主节点经由互连耦合到所述目标节点和所述请求节点;
其中,所述请求节点被配置为:
响应于来自所述源设备的所述第一写入请求而向所述主节点发送第二写入请求;
响应于所述第二写入请求而从所述主节点接收写入数据缓冲器信用消息和完成消息,所述写入数据缓冲器信用消息标识用于接收所述待写入的数据的数据缓冲器;
响应于所述写入数据缓冲器信用消息而向所述主节点发送所述待写入的数据;以及
响应于所述完成消息而向所述主节点发送第一完成确认消息,其中,直到所述请求节点针对比所述第一写入请求更旧并且与和所述第一写入请求相同的数据流标识符相关联的所有写入请求都已接收到完成消息,才发送所述第一完成确认消息;
其中,所述主节点被配置为响应于所述第一完成确认消息而向所述目标节点发送所述待写入的数据;并且
其中,所述目标节点被配置为响应于接收到所述待写入的数据而向所述主节点发送第二完成确认消息。
18.根据权利要求17所述的数据处理网络,其中,从所述主节点向所述请求节点发送的所述写入数据缓冲器信用消息和所述完成消息被组合为一个消息。
19.根据权利要求17所述的数据处理网络,其中,从所述请求节点向所述主节点发送的所述第一完成确认消息和所述待写入的数据被组合为一个消息。
20.根据权利要求17所述的数据处理网络,其中:
所述主节点被配置为根据相干协议而向所述目标节点发送监听消息;
所述目标节点被配置为将针对所述监听消息的响应发送回所述主节点;以及
直到所述主节点接收到所述针对所述监听消息的响应,才将所述待写入的数据从所述主节点发送到所述目标节点。
21.根据权利要求17所述的数据处理网络,其中,所述第二写入请求包括存储请求,并且其中,所述待写入的数据以唯一脏相干状态被存储在所述目标节点的缓存中。
22.根据权利要求17所述的数据处理网络,其中:
所述请求节点还被配置为检测由于所述数据处理网络的互连中的资源冲突而导致的死锁,并且向所述主节点发送用于取消所述第一写入请求的消息;以及
所述主节点还被配置为响应于所述用于取消所述第一写入请求的消息而执行以下操作:
向所述数据处理网络的存储器控制器发送监听请求,以检索与所述待写入的数据的地址相关联的数据的最新副本;
从所述存储器控制器接收与所述待写入的数据的地址相关联的数据的最新副本;以及
将与所述待写入的数据的地址相关联的数据的最新副本而不是所述待写入的数据发送到所述目标节点。
23.根据权利要求17所述的数据处理网络,其中,所述源设备包括输入/输出设备、加速器设备或图形处理单元。
24.一种非暂态计算机可读介质,包括描述根据权利要求17所述的数据处理网络的硬件描述语言的指令。
25.一种非暂态计算机可读介质,存储根据权利要求17所述的数据处理网络的组件和连通性的网表。
CN201980029769.7A 2018-05-03 2019-05-02 I/o主设备和cpu之间优化数据共享的有序写存储的高性能流 Active CN112106032B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862666246P 2018-05-03 2018-05-03
US62/666,246 2018-05-03
US16/027,490 2018-07-05
US16/027,490 US10452593B1 (en) 2018-05-03 2018-07-05 High-performance streaming of ordered write stashes to enable optimized data sharing between I/O masters and CPUs
PCT/GB2019/051216 WO2019211610A1 (en) 2018-05-03 2019-05-02 HIGH-PERFORMANCE STREAMING OF ORDERED WRITE STASHES TO ENABLE OPTIMIZED DATA SHARING BETWEEN I/O MASTERS AND CPUs

Publications (2)

Publication Number Publication Date
CN112106032A CN112106032A (zh) 2020-12-18
CN112106032B true CN112106032B (zh) 2024-06-11

Family

ID=68241794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980029769.7A Active CN112106032B (zh) 2018-05-03 2019-05-02 I/o主设备和cpu之间优化数据共享的有序写存储的高性能流

Country Status (6)

Country Link
US (1) US10452593B1 (zh)
EP (2) EP4261695A3 (zh)
JP (1) JP7378428B2 (zh)
KR (1) KR20210005193A (zh)
CN (1) CN112106032B (zh)
WO (1) WO2019211610A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11113194B2 (en) * 2019-09-04 2021-09-07 Xilinx, Inc. Producer-to-consumer active direct cache transfers
US11256646B2 (en) 2019-11-15 2022-02-22 Arm Limited Apparatus and method for handling ordered transactions
US20210240655A1 (en) * 2020-11-16 2021-08-05 Intel Corporation Source ordering in device interconnects
US11314645B1 (en) * 2020-12-16 2022-04-26 Arm Limited Cache stash relay
US12001722B2 (en) * 2022-08-18 2024-06-04 Arm Limited Technique for controlling stashing of data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007001257A1 (en) * 2005-06-15 2007-01-04 Freescale Semiconductor, Inc. Cache with flexible configuration, data processing system using same, and method therefor
JP2013037681A (ja) * 2011-08-08 2013-02-21 Arm Ltd 異なる複数の優先度レベルのトランザクション要求をサポートする集積回路内における処理リソース割振り
JP2013077287A (ja) * 2011-08-08 2013-04-25 Arm Ltd 発信元デバイスから受信デバイスに対して発行されるトランザクション要求のための動的リソース割り当て
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2345596C (en) * 2001-04-27 2007-12-04 Icron Systems Inc. Method and apparatus for extending the range of the universal serial bus protocol
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US7471675B2 (en) * 2002-07-12 2008-12-30 Intel Corporation Arrangements facilitating ordered transactions
EP1754160B1 (en) * 2004-05-28 2010-05-05 Nxp B.V. Bus connection device
US8949547B2 (en) 2011-08-08 2015-02-03 Arm Limited Coherency controller and method for data hazard handling for copending data access requests
US9047418B2 (en) * 2011-11-22 2015-06-02 Icron Technologies Corporation Methods and devices for extending USB 3.0-compliant communication
US9304924B2 (en) * 2012-08-17 2016-04-05 Futurewei Technologies, Inc. Cache coherent handshake protocol for in-order and out-of-order networks
US9195626B2 (en) * 2013-01-29 2015-11-24 Emulex Corporation Reducing write I/O latency using asynchronous Fibre Channel exchange
GR1008894B (el) * 2015-12-15 2016-11-14 Arm Limited Βελτιστοποιημενη συνεχης ροη σε μια μη διατεταγμενη διασυνδεση
US20180095906A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Hardware-based shared data coherency

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007001257A1 (en) * 2005-06-15 2007-01-04 Freescale Semiconductor, Inc. Cache with flexible configuration, data processing system using same, and method therefor
JP2013037681A (ja) * 2011-08-08 2013-02-21 Arm Ltd 異なる複数の優先度レベルのトランザクション要求をサポートする集積回路内における処理リソース割振り
JP2013077287A (ja) * 2011-08-08 2013-04-25 Arm Ltd 発信元デバイスから受信デバイスに対して発行されるトランザクション要求のための動的リソース割り当て
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器

Also Published As

Publication number Publication date
JP7378428B2 (ja) 2023-11-13
US10452593B1 (en) 2019-10-22
EP4261695A2 (en) 2023-10-18
JP2021522611A (ja) 2021-08-30
EP3788495A1 (en) 2021-03-10
KR20210005193A (ko) 2021-01-13
CN112106032A (zh) 2020-12-18
EP4261695A3 (en) 2023-11-29
EP3788495B1 (en) 2023-09-06
US20190340147A1 (en) 2019-11-07
WO2019211610A1 (en) 2019-11-07

Similar Documents

Publication Publication Date Title
CN112106032B (zh) I/o主设备和cpu之间优化数据共享的有序写存储的高性能流
US10248610B2 (en) Enforcing transaction order in peer-to-peer interactions
CN101097545B (zh) 独占所有权探听过滤器
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
KR20190096801A (ko) SSD 스토리지의 NVMe 명령간 연관을 위한 시스템 및 방법
CN108205510B (zh) 数据处理
US8904045B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US9304922B2 (en) Inter-queue anti-starvation mechanism with dynamic deadlock avoidance in a retry based pipeline
TWI662416B (zh) 系統晶片(SoC)結構中有效率的點對點通訊支援
TWI502346B (zh) 根據窺探回應資訊之目錄快取分配技術
US7519780B2 (en) System and method for reducing store latency in symmetrical multiprocessor systems
US10592465B2 (en) Node controller direct socket group memory access
US7996614B2 (en) Cache intervention on a separate data bus when on-chip bus has separate read and write data busses
CN114356839B (zh) 处理写操作的方法、设备、处理器及设备可读存储介质
US10067889B2 (en) Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system
EP4124963A1 (en) System, apparatus and methods for handling consistent memory transactions according to a cxl protocol
KR20210005194A (ko) 데이터 처리 네트워크에서의 전송 프로토콜
US20090006712A1 (en) Data ordering in a multi-node system
US8938588B2 (en) Ensuring forward progress of token-required cache operations in a shared cache
US10372638B2 (en) Interconnect agent
CN110268390B (zh) 相干互连***中的读取交易***生命期
US8099558B2 (en) Fairness mechanism for starvation prevention in directory-based cache coherence protocols

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
GR01 Patent grant
GR01 Patent grant