CN107153624A - 经由计算机总线对持久性存储器的控制 - Google Patents

经由计算机总线对持久性存储器的控制 Download PDF

Info

Publication number
CN107153624A
CN107153624A CN201710095102.XA CN201710095102A CN107153624A CN 107153624 A CN107153624 A CN 107153624A CN 201710095102 A CN201710095102 A CN 201710095102A CN 107153624 A CN107153624 A CN 107153624A
Authority
CN
China
Prior art keywords
memory
data
nic
refresh
bus
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.)
Granted
Application number
CN201710095102.XA
Other languages
English (en)
Other versions
CN107153624B (zh
Inventor
艾丹·伯斯坦
迭戈·克鲁普尼科夫
什洛莫·赖金
M·卡根
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies 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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of CN107153624A publication Critical patent/CN107153624A/zh
Application granted granted Critical
Publication of CN107153624B publication Critical patent/CN107153624B/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • 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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请公开了一种经由计算机总线对持久性存储器的控制。存储器设备包括具有存储器地址空间的目标存储器以及易失性缓冲存储器,该易失性缓冲存储器被耦合以接收通过总线写入到存储器设备以用于在存储器地址空间中的指定地址中存储的数据。存储器控制器被配置为经由总线接收刷新指令并响应于该刷新指令以将在存储器地址空间内具有指定地址的在缓冲存储器中保存的数据立即刷新到目标存储器。

Description

经由计算机总线对持久性存储器的控制
发明领域
本发明大体上涉及计算机***和用于计算机***的操作的方法,并且更具体地涉及计算机***中的持久性存储器设备的使用。
背景
术语“持久性存储器”用于本说明书的上下文和权利要求中以表示支持数据到存储器的随机存取写入和从存储器的随机存取读取以及在电源关闭时保留数据的任何种类的半导体存储器。当前使用的持久性存储器的示例包括各种类型的非易失性随机存取存储器(NVRAM)(包括闪速存储器)以及电池支持的RAM设备。新型的持久性存储器在研发中,诸如最近由Intel和Micron Technology公布的“3D Xpoint”存储器。
概述
在下文描述的本发明的实施方式提供用于经由计算机总线与持久性存储器设备交互的改进技术。
因此,根据本发明的实施方式提供了存储器设备,其包括具有存储器地址空间的目标存储器以及易失性缓冲存储器,该易失性缓冲存储器被耦合以接收通过总线写入到存储器设备以用于在存储器地址空间中的指定地址中存储的数据。存储器控制器被配置为经由总线接收刷新(flush)指令并响应于该刷新指令以将在存储器地址空间内具有指定地址的在缓冲存储器中保存的数据立即刷新到目标存储器。
在公开的实施方式中,目标存储器包括持久性存储器。
在一个实施方式中,刷新指令使存储器控制器将在刷新指令先前投递(posted)的写入命令中通过总线传送到目标存储器的所有数据刷新到目标存储器。可选地,刷新指令识别在存储器地址空间内将被刷新的范围,并使存储器控制器将保存在被识别的范围内的具有指定地址的在缓冲存储器中的数据立即刷新到目标存储器。通常,存储器控制器被配置为响应于刷新指令来刷新仅在被识别的范围内的数据,同时将在被识别范围之外的具有指定地址的其它数据留在缓冲存储器中,而不立即刷新到目标存储器。
在所公开的实施方式中,存储器控制器被配置为在将数据刷新到目标存储器后通过总线将完成消息发送到刷新指令的发送者。
在一个实施方式中,数据和刷新指令通过其写入的总线是计算机的***组件总线,该总线具有总线地址空间,其中,将被刷新的范围根据存储器页面被识别,并且存储器控制器被配置为将存储器页面的被识别的范围从总线地址空间转换成存储器块,以用于在存储器地址空间中刷新。
在一些实施方式中,存储器控制器被配置为识别在存储器地址空间内的多个区并被配置为将各自的刷新属性与这些区相关联,其中,刷新指令使存储器控制器根据各自的刷新属性刷新在任何给定区内的具有指定地址的在缓冲存储器中保存的数据。在一个实施方式中,各自的刷新属性指示给定区是否对应于目标存储器中包括持久性存储器的范围。
根据本发明的实施方式还提供计算装置,其包括上面所描述的存储器设备和网络接口控制器(NIC),该网络接口控制器被耦合以经由网络从对等节点接收远程直接存储器存取(RDMA)写入包,该写入包包含将被写入到存储器设备的数据并指定数据将被写入的地址,以及该网络接口控制器被耦合以接收RDMA刷新包,并且该网络接口控制器被配置为响应于RDMA写入包和RDMA刷新包来通过总线将数据和刷新指令传送到存储器设备。
通常,数据和刷新指令从NIC被传送到存储器设备,并且数据由存储器控制器从缓冲存储器刷新到目标存储器,而不生成对耦合到装置中的总线的中央处理单元(CPU)的中断。
在一些实施方式中,NIC被配置为通过在NIC和对等节点之间建立的传输服务实例来从对等节点接收RDMA写入包和RDMA刷新包,其中,存储器设备中的存储器区与传输服务实例相关联,其中,写入包使NIC将数据写入到相关联的存储器区,并且其中,刷新包使NIC发布与相关联的存储器区有关的刷新指令。在公开的实施方式中,NIC被配置为将各自的刷新属性与存储器区相关联,并且刷新指令使存储器控制器根据相关联的刷新属性刷新由NIC写入到存储器区内的指定地址的数据。
在公开的实施方式中,装置包括部署在对等节点处的对等NIC,其中,对等NIC被配置为响应于由运行在对等节点上的进程提交到对等NIC的RDMA写入和刷新工作请求,通过网络传输RDMA写入包和RDMA刷新包。
根据本发明的实施方式,另外提供存储器设备,其包括具有存储器地址空间的目标存储器以及易失性缓冲存储器,该易失性缓冲存储器被耦合以接收通过总线在事务包中写入到存储器设备的数据以用于在存储器地址空间内的指定地址中存储,每个事务包包括事务描述符,其包括刷新标志。存储器控制器被配置为经由总线接收刷新指令并响应于该刷新指令以立即将缓冲存储器中保存的、对于其的刷新标志在将其传送到存储器设备的事务包中被设置的数据刷新到目标存储器。
在公开的实施方式中,存储器控制器被配置为响应于刷新指令来仅刷新对于其刷新标志被设置的数据,同时将在其中刷新标志未被设置的事务包中到达的其它数据留在缓冲存储器中,而不立即刷新到目标存储器。
在一个实施方式中,事务描述符包括“No Snoop”属性字段,其包括刷新标志。
根据本发明的实施方式还提供计算装置,其包括上面所描述的存储器设备和网络接口控制器(NIC),该网络接口控制器被耦合以经由网络接收远程直接存储器存取(RDMA)写入包,该写入包包含将被写入到存储器设备的数据、指定数据将被写入的地址,并指示数据将被刷新到目标存储器,并且该网络接口控制器被耦合以在接收RDMA写入包后接收RDMA刷新包,并且该网络接口控制器被配置为响应于RDMA写入包来通过总线将数据在其中刷新标志被设置的事务包中传送到存储器设备,并响应于RDMA刷新包将刷新指令传送到存储器设备。
根据本发明的实施方式另外提供用于在存储器设备中的数据存储的方法,该存储器设备包括目标存储器和易失性缓冲存储器。方法包括在易失性缓冲存储器中接收通过总线写入到存储器设备的数据,以用于在存储器设备的存储器地址空间内的指定地址中存储。刷新指令经由总线被接收。响应于刷新指令,在存储器地址空间内具有指定地址的在缓冲存储器中保存的数据被立即刷新到目标存储器。
根据本发明的实施方式还另外提供用于在存储器设备中的数据存储的方法,该存储器设备包括目标存储器和易失性缓冲存储器。方法包括在易失性缓冲存储器中接收通过总线在事务包中被写入到存储器设备的数据,以用于在存储器设备的存储器地址空间内的指定地址中存储,每个事务包包括事务描述符,其包括刷新标志。刷新指令经由总线被接收。响应于刷新指令,在将数据传送到存储器设备的事务包中设置刷新标志的、在缓冲存储器中保存的数据被立即刷新到目标存储器。
从结合附图进行的本发明的实施方式的以下详细描述中,本发明将得到更完全地理解,其中:
附图简述
图1是根据本发明的实施方式示意地示出计算机***的方框图;
图2是根据本发明的实施方式示意性示出用于控制持久性存储器设备的方法的流程图;
图3是根据本发明的实施方式示意性示出用于被写入到存储器设备的数据的远程刷新的方法的梯形图。
实施方式的详细描述
使用持久性存储器的软件应用一般依赖于以下假设:一旦数据已经被写入到持久性存储器设备,该数据将实际上保存。换句话说,该应用假设写操作已经被提交到持久性存储器并且将保持不受任何随后的断电或其他***故障的影响。
然而,实际上,这种假设不总是正确的,特别是当持久性存储器设备由投递式(posted)写入操作经由诸如PCI或计算机中的其它***组件总线的总线访问时。持久性存储器设备常常包括易失性随机存取存储器(RAM),其作为缓冲器用于接收通过总线写入到存储器设备的数据。设备中的存储器控制器决定何时将数据刷新到持久性存储器,并可能并不立即这样做。因此,在通过PCIe总线将数据写入到持久性存储器设备后,投递写入操作的实体一般不确保数据实际上已经从缓冲器被提交到持久性存储器中。
作为另一个示例,当诸如网络接口控制器(NIC)的***设备通过总线将数据写入到持久性***存储器时,数据沿着诸如在属于总线的根复合体的缓存中的易失性存储器中的路径被缓存。总线将立即向投递写入操作的设备返回确认,并且设备通常不接收数据实际上已经从缓存被刷新到持久性存储器的任何确认。
本文描述的本发明的实施方式通过提供设备架构和技术来解决这些困难,该设备架构和技术使得实体能够通过总线将数据写入到持久性存储器设备以确保数据实际上已经被刷新到持久性存储器。这些技术可通过诸如应用程序的软件实体和诸如NIC的硬件实体来应用,该软件实体和硬件实体将数据写入到这样的持久性存储器设备并从这样的持久性存储器设备读取数据。
当由NIC应用时,所公开的技术可用于实现由跨网络的对等节点发起的远程直接存储器存取(RDMA)操作,同时最小化或完全消除对中断与这些操作有关的中央处理单元(CPU)的需要。在对等节点处部署的对等NIC可被配置为响应于由运行在对等节点上的应用程序提交到对等NIC的RDMA写入和刷新工作请求而通过网络传输RDMA写入和刷新包。在接收侧的NIC然后在向对等NIC发信号通知已经完成操作之前验证数据已经被写入并实际上刷新到持久性存储器。
所公开的实施方式在通过诸如PCIe总线的***组件总线存取和控制持久性存储器设备中是特别有用的,并且因此实现在标准计算机***中的持久性存储器的更通用、规模扩大的用途。此外,这些实施方式的原理可通过其它种类的总线加以必要的变更来被应用,其它种类的总线诸如双列直插式存储器模块(DIMM),其通常用于中央处理器(CPU)和***存储器之间的通信。
另外,尽管所公开的实施方式主要涉及数据到持久性存储器的刷新,但是本文描述的刷新技术和语义可类似地用于确保数据仅仅被刷新成一致的,即,从诸如缓存的任何中间缓冲器刷新到诸如主机***存储器的目标存储器,其中,确保数据对于在计算机上运行的其它应用和设备是可见的。主机计算机上的任何给定的存储器区的刷新性质(例如,刷新操作是否使数据被刷新到持久性存储器或仅仅被刷新成一致的)可在主机计算机上被本地设置,这取决于应用和***需求。在这个模型中,当对等NIC通过网络将RDMA刷新操作引导到主机计算机上的特定存储器区时,NIC操作的语义对区的实际刷新性质是不可知的。
因此,在随后的描述中的“持久性存储器”的引用应作为刷新到无论是否是持久性的目标存储器的更一般的示例被理解。出于同样的原因,术语“缓冲器”应被理解为不仅是指与给定存储器设备中的目标存储器特定相关联的RAM缓冲器,而且还指任何种类的缓存或其中可在刷新到目标存储器之前暂时保存数据的其它存储器。下文描述的一些实施方式利用“持久性标志”,但是该术语也应当被理解为“刷新标志”的一个示例,其用于标记在给定事务中的数据以用于立即刷新,如下文所述。
在所公开的实施方式中,持久性存储器设备包括易失性缓冲存储器,其接收由储存发起者通过总线写入的数据,以用于在持久性存储器的存储器地址空间内的指定地址中储存。在将数据写入到总线后,发起者将刷新指令发送到持久性存储器设备。这个刷新指令可应用到在该刷新指令之前投递的写入命令中通过总线传送到存储器设备的所有数据,或者其可指示应被刷新到持久性存储器的、缓冲存储器中的特定数据(但是可能不是所有数据)。响应于这个刷新指令,持久性存储器设备中的存储器控制器立即实施所请求的刷新操作。如果刷新指令应用到存储器地址空间中的指定范围,则在该范围之外的数据可留在缓冲存储器中(至少暂时地)而不立即刷新到持久性存储器。在将数据刷新到持久性存储器后,存储器控制器通过总线将完成消息发送到发起者。
当刷新指令识别在存储器地址空间内的特定范围,其使存储器控制器将在被识别的范围内的具有指定地址的在缓冲存储器中保存的数据刷新到持久性存储器。通常,其中范围将被刷新的总线地址空间根据存储页面被识别,并且存储器控制器将用于刷新的存储页面的被识别的范围从总线地址空间转换成存储器地址空间中的存储器块。在这些实施方式中的存储器控制器包括在硬件逻辑和/或软件中实现的逻辑组件,其在本文中被称作“持久性代理”,其负责与数据到持久性存储器的刷新相关的管理、地址转换和消息传递。
在其它实施方式中,储存发起者通过总线在事务包中将数据写入到持久性存储器设备,该事务包包括包含持久性标志的事务描述符,即,描述符中可由发起者设置以标记用于从缓冲器到持久性存储器的立即刷新的数据的一个或多个位。发起者然后通过总线发送刷新指令,这使存储器控制器将保存在缓冲存储器中的数据立即刷新到持久性存储器,其持久性标志在将数据传送到存储器设备的事务包中被设置。
图1是根据本发明的实施方式示意地示出计算机***20的方框图。***20包括计算机22和24,其作为网络26的节点被连接。为了简单起见,仅两台计算机22和24在图1中被示出,并且仅计算机22的组件被详细示出。实际上,***20通常包括大量的计算机,每个可以以类似于计算机22的方式来构建和操作。网络26是分组数据网络,诸如适当的InfiniBand或以太网,其能够进行RDMA传输。
计算机22包括CPU 28和***存储器30。根复合体32用作存储器30的存储器控制器并且还将CPU 28和存储器30耦合到***组件总线34,诸如PCIe总线。存储器30通常包括在DIMM封装中的一个或多个集成电路芯片,包括持久性存储器(PMEM)37。CPU 28和根复合体32包括各自的存储器缓存35和36,存储器缓存35和36用作将被储存在存储器30的地址空间内的指定地址中的数据的缓冲器。
计算机22通过NIC 38被连接到网络26,NIC 38与对等节点的NIC通信,其包括计算机24的NIC 39。NIC 38和NIC 39通过在NIC之间建立的传输服务实例交换RDMA请求和响应。在InfiniBand和一些其它RDMA协议的背景下,传输服务实例采取队列对(QP)的形式,这使运行在计算机22上的软件进程与计算机24上的进程能够交换数据和指令。
计算机22还包括被连接到总线34的持久性存储器设备40。设备40包括一个或多个存储器芯片,一个或多个存储器芯片包括持久性存储器42和通常包括RAM的易失性缓冲存储器(VMEM)44。存储器控制器46通过总线34接收和发送数据和指令并控制持久性存储器42和缓冲存储器44的操作,包括数据从缓冲存储器到持久性存储器的指定刷新。在其中总线34被配置为PCIe总线的图示实施方式中,这些数据和指令以事务级包(TLP)的形式通过总线34被传送。这种包也被简称为事务包。
设备40将存储器地址空间暴露在总线34上,使得包括软件进程和诸如NIC 38的硬件部件的其他实体能够经由总线从地址空间中的指定地址读取或写入到地址空间中的指定地址。在一些实施方式中,设备40使用内部地址来在持久性存储器42中存储和接收数据,该内部地址与在这些读取和写入操作中使用的总线地址空间中的地址不同。在一些这样的情况下,控制器46维护用于在总线地址空间和内部地址空间之间转换的地址转换表和地址转换逻辑。用于使用和维护这样的表的方案例如在2015年11月30日提交的美国专利申请14/953,462中被描述,其被转让给本专利申请的受让人并且其公开内容通过引用被并入本文。通常,控制器46的功能包括总线34上的数据事务的粒度和持久性存储器42中存储的可能更大或更小的数据块的粒度之间的转换,数据事务的粒度通常以页来表达(例如,如在PCIe标准中使用的4KB的单位)。
在一些实施方式中,如下文进一步描述的,控制器46包括持久性代理(PA)48,其处理与从缓冲存储器44到持久性存储器42的数据的刷新有关的命令的消息传递和执行。PA48可作为控制器46的逻辑和处理组件的一部分在合适的嵌入式处理器上以软件或固件或以硬件逻辑来实现。用作***存储器30的控制器的根复合体32通常包括类似的PA 48,如可能是NIC 38和总线34上的其它组件。
PA 48提供消息传递接口,其使得总线34上诸如NIC 38的实体能够将刷新指令传递到持久性存储器设备40。这些指令可以涉及到在总线34上的所有先前投递的写入,或者它们可以识别设备40的存储器地址空间内的将被刷新到持久性存储器42的范围。如前所述,将被刷新的范围通常根据总线34的总线地址空间中的页来指定,并且PA 48将该范围转换为用于在设备40的存储器地址空间内刷新的存储器块。为了有效和可靠的消息流控制,PA 48可以向NIC 38和其它总线实体发布持久性信用,其在刷新指令被提交时被消耗。在将指定范围内的数据刷新到持久性存储器42之后,PA 48通过总线34向刷新指令的发送者发送完成消息,并发布附加信用以供后续使用。
作为由PA 48提供的持久性消息传递接口的替代或除其之外,在总线34上传送的TLP的报头内的一个或多个位(例如报头的事务描述符字段中的一个或多个位)可以被定义为持久性标志。在PCI Express基本规范(版本3.0,2010年11月10日由PCI-SIG出版)中,事务描述符在2.2.6节中被定义为TLP报头的一部分,其用于运载在总线上的请求者和完成者之间的事务信息。事务描述符的“属性”字段包括四个位,其中之一可以被设置为将给定TLP中的数据标记为需要持久性存储。例如,只要总线34上的实体被编程为将它如此识别,则在2.2.6.5节中定义的“No Snoop”属性字段可以被用于这个目的。该方法的优点在于,其利用现有的总线协议特征,而不需要定义新的消息传递接口。
因此,当NIC 38(或总线34上的另一实体)在寻址到存储器设备40的写入TLP中通过总线34传送数据时,NIC可在TLP描述符中设置持久性标志以标记持久性地数据。存储器设备40中的控制器46跟踪其中保存这种标记数据的缓冲器44中的地址范围。在投递写入操作之后,NIC 38通过总线34向设备40发送刷新指令,例如,具有设置了相同持久性标志的零长度读取。控制器46识别这个刷新指令,并将在缓冲存储器44中保存的所有标记的数据立即刷新到持久性存储器42。在将标记数据刷新到持久性存储器42之后,控制器46通过总线34发送寻址到刷新指令的发起者的完成消息,诸如对零长度读取的响应。
图2是根据本发明的实施方式示意性示出用于控制持久性存储器设备40的方法的流程图。为了完整性,该方法结合了上述两种持久性控制协议的特征:持久性代理48和用于持久性的事务包的标记之间的消息传递接口。可选地,这些协议中的任一个可独立于其它协议而单独在计算机22中使用。此外,虽然为了清楚和方便起见具体参***40描述了该方法,但是,它可以可选地应用于将持久性数据写入***存储器30以及其它总线连接的持久性存储器组件。
当设备40通过总线34接收TLP时,图2的方法在TLP接收步骤50处启动。在解析步骤52处,控制器46读取TLP报头以便确定所请求的操作的类型。当TLP是写入包时,在持久性检查步骤54处,控制器46检查事务描述符以确定持久性标志是否被设置。如果没有被设置,则在投递式写入步骤56处,存储器设备40将TLP处理为包含在TLP有效载荷中的数据的普通的投递式写入。在这种情况下,数据可被写入缓冲存储器44,并且然后根据由控制器46设置的优先级被刷新到持久性存储器42,而没有立即刷新或在故障情况下的持久性的任何保证。如果持久性标志被设置,并且数据被写入缓冲存储器44,则控制器46在持久性写入步骤58处标记用于刷新的数据。
另一方面,当在步骤52处发现在步骤50处接收的TLP不是写入包时,在刷新检查步骤60处,控制器46检查TLP以确定其是否包含刷新指令。如果不包含,则控制器46在非刷新操作步骤62处继续由TLP指示的适当操作,例如数据读取操作。否则,控制器将根据刷新指令继续将数据从缓冲存储器44刷新到持久性存储器42。
如前所述,本发明的实施方式提供两种互补类型的刷新操作:到PA 48的刷新消息,其指定将被刷新到持久性存储器42的存储器范围;以及刷新TLP,诸如零长度读取,其指示先前标记用于持久性的所有数据应该被刷新到持久性存储器。控制器46在刷新类型检查步骤64处检查这两种类型的操作中的哪一种被调用。如果在步骤50处接收的TLP是具有设置了持久性标志的刷新TLP,则控制器46识别当前保存在缓冲存储器44中的所有标记的数据,即,在具有设置了持久性标志的写入TLP中到达的数据,并且在标记的刷新步骤66处将这些数据刷新到持久性存储器42。控制器46然后用指示已标记的数据已被刷新并且现在被存储在持久性存储器42中的TLP来响应NIC 38。
可选地,如果在步骤50处接收到的TLP包含指定要刷新的存储器范围的消息,则PA48在范围刷新步骤68处将指定范围中的所有数据刷新到持久性存储器42(无论数据是否被标记)。PA 48然后向NIC 38发送完成消息,报告指定范围中的数据现在存储在持久性存储器42中。
上述技术可以用于实现RDMA持久性写入语义。这样的语义允许网络26上的对等节点中的NIC(诸如计算机24的NIC 39)将数据写入计算机22上的存储器(诸如设备40或***存储器30),并接收指示数据实际上已被刷新到持久性存储器42或37的完成报告。为了使计算机22上的实体能够调用这些类型的操作,新的RDMA动词可被定义为:RDMA刷新,以及可能的RDMA持久性写入。这些动词由在计算机22上运行的软件进程在向NIC 39提交工作请求时使用,这使NIC 39通过网络26将对应的RDMA写入包和RDMA刷新包传输到NIC 38。(后一种包类型在这里被称为“RDMA刷新”,因为其与RDMA写入操作的关联性,但是它实际上可以作为具有在有效载荷中的刷新控制描述的SEND包来传输)。
例如,NIC 39可以通过网络26传输包含将被写入存储器设备40的数据并指定数据将被写入的地址的一个或多个RDMA写入包。NIC 39然后传输指示所有先前投递的写入将被刷新到持久性存储器42或识别存储器设备40中将被刷新到持久性存储器42的地址范围的RDMA刷新包。在接收到RDMA写入包时,NIC 38通过总线34将一个或多个对应的写入TLP发送到设备40,设备40可以将数据临时放置在缓冲存储器44中。然后,响应于RDMA刷新包,NIC38通过总线34向PA 48发送刷新消息,该PA 48将适当的数据从缓冲存储器44刷新到持久性存储器42。通常,数据和刷新指令从NIC 38传送到存储器设备40,并且数据被存储器控制器46从缓冲存储器44刷新到持久性存储器42,而不生成对CPU 28的中断。
存在RDMA刷新包可识别将被刷新的地址范围的各种方式。例如,计算机24上的刷新工作请求可以包括将被刷新为持久性的地址条目的列表,然后该列表被包括(在任何所需的地址转换之后)在由NIC 39传输的对应RDMA刷新包中以及由NIC 38发送到存储器设备40的刷新消息中。另外或可选地,待刷新的地址的范围可以根据NIC 39和NIC 38在发送和接收所讨论的RDMA包中使用的QP来识别。例如,在给定QP上接收的RDMA刷新包可以使NIC38指示PA 48刷新在该QP上接收到的所有数据,或者刷新在与QP相关联的特定存储器区中的、在给定QP上接收的所有数据。
在这点上,存储器控制器46通常识别设备40的存储器地址空间内的多个区。每个这样的区可以与给定的QP相关联,并且具有由对应的存储器密钥(MKEY)指示的属性,其由包括NIC 38的计算机22的元件在访问存储器区时使用。根复合体32在其作为***存储器30的存储器控制器的角色时,可以识别***存储器中的类似种类的区和属性。在一些实施方式中,每个存储器区的属性包括刷新属性,其向适当的存储器控制器指示如何处理关于该区的刷新命令。例如,刷新属性可以指示给定区是否对应于包括持久性存储器的范围,使得对应的数据被刷新成持久性,或者该区是否仅针对一致性而不是持久性被刷新。对于每个存储器区的刷新属性可以由在CPU 28上运行的软件设置,并且因此确定存储器控制器在接收到刷新命令时如何处理每个这样的区中的数据。
可选地,NIC 39可以传输包含将被写入存储器设备40的数据的一个或多个RDMA写入包,其中这些包指定在设备40中数据将被写入的地址,并指示数据将被刷新到持久性存储器。在接收到这些RDMA写入包时,NIC 38通过总线34向设备40发送具有在TLP描述符中设置的持久性标志的一个或多个对应的TLP。NIC 39然后发送RDMA刷新包,这使得NIC38向存储器设备40发送刷新TLP,例如具有设置了持久性标志的零长度读取TLP。响应于这些TLP,控制器46将接收数据并将数据刷新到持久性存储器42,如上所述。在这种情况下,同样,数据和刷新指令从NIC 38传送到存储器设备40,并且数据被控制器46从缓冲存储器44刷新到持久性存储器42,而不生成对CPU 28的中断。
在任何情况下(无论所有数据还是指定范围或所有标记的数据都要被刷新),一旦所有所需的数据已被成功地刷新到持久性存储器42,控制器46将通过总线34向NIC 38报告刷新操作已完成。响应于该报告,NIC 38将通过网络26将确认包发送回NIC 39,然后NIC 39将投递完成报告(通常以完成队列元素[CQE]的形式)。一旦启动数据传输的计算机24上的进程接收到完成报告,它就可以认为数据已经以完全可信度被存储在持久性存储器中。
图3是根据本发明的实施方式示意性示出用于被写入到存储器设备的数据的远程刷新的以上技术的示例实现的梯形图。为了具体性和清楚起见,图3中的操作中涉及的组件被认为是图1所示的那些,如上文所述。然而,可选地,图3中所示的通信和操作的流程可以在本领域中已知的其它类型的***架构中实现。
作为预备步骤,主机计算机22的CPU 28通过向NIC 38发送注册指令70来将一个或多个存储器区注册在目标存储器中。注册指令包括刷新属性,指示刷新指令在每个存储器区中如何被处理。
主机计算机24的CPU提交RDMA写入工作请求72,这使得NIC 39通过网络26向NIC38传输一个或多个RDMA写入包74,其包含在工作请求72中指示的数据。当在给定QP上接收到包74时,NIC 38使用对应的存储器区的存储器密钥(如由注册指令70所指示的),在一个或多个总线事务76上通过总线34将数据写入***存储器30或设备40中的指定地址。NIC 38向NIC 39返回一个或多个RDMA写入确认78。在接收到所有RDMA写入包74的确认后,NIC 39向主机计算机24的CPU发布写入完成报告80(诸如CQE)。
在RDMA写入工作请求72后,主机计算机24的CPU向NIC 39提交RDMA刷新工作请求82,使得NIC 39向NIC 38传输RDMA刷新包84。因为将在计算机22中的每个存储器区上执行的刷新操作的性质由注册指令70所指示的相应的刷新属性来确定,所以工作请求82和包84的语义对于将被执行的特定类型的刷新是不可知的(例如,如上所解释的,数据是被刷新成持久性还是一致性)。在接收到RDMA刷新包84时,NIC 38通过总线34启动定向到所讨论的存储器区的刷新事务86。
响应于刷新事务86,存储器控制器(诸如控制器46或根复合体32)执行适当的刷新操作,例如,将缓冲的数据刷新到持久性存储器42或37。在完成刷新时,存储器控制器通过总线34向NIC 38返回刷新通知88,指示数据已经根据需要被刷新。NIC 38然后向NIC 39返回刷新确认90,然后NIC 39向主机计算机24的CPU发布刷新完成报告92。在这个时刻,启动图3所示的交换的主机进程被确保所讨论的数据已经根据需要全部成功地写入且刷新。
将认识到,以上描述的实施方式是通过示例的方式引用的,并且本发明不限于上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改。

Claims (48)

1.一种存储器设备,包括:
目标存储器,所述目标存储器具有存储器地址空间;
易失性缓冲存储器,所述易失性缓冲存储器被耦合以接收通过总线写入到所述存储器设备以用于在所述存储器地址空间中的指定地址中存储的数据;
存储器控制器,所述存储器控制器被配置为经由所述总线接收刷新指令,并响应于所述刷新指令而立即将在所述存储器地址空间内具有指定地址的在所述缓冲存储器中保存的数据刷新到所述目标存储器。
2.如权利要求1所述的设备,其中,所述目标存储器包括持久性存储器。
3.如权利要求1所述的设备,其中,所述刷新指令使所述存储器控制器将在该刷新指令之前投递的写入命令中通过所述总线传送到所述目标存储器的所有数据刷新到所述目标存储器。
4.如权利要求1所述的设备,其中,所述刷新指令识别在所述存储器地址空间内将被刷新的范围,并使所述存储器控制器将保存在被识别的范围内的具有指定地址的在所述缓冲存储器中的数据立即刷新到所述目标存储器。
5.如权利要求4所述的设备,其中,所述存储器控制器被配置为响应于所述刷新指令来刷新仅在所述被识别的范围内的数据,同时将在所述被识别的范围之外具有指定地址的其它数据留在所述缓冲存储器中,而不立即刷新到所述目标存储器。
6.如权利要求1所述的设备,其中,所述存储器控制器被配置为在将所述数据刷新到所述目标存储器后,通过所述总线将完成消息发送到所述刷新指令的发送者。
7.如权利要求1所述的设备,其中,所述数据和所述刷新指令通过其被写入的所述总线是计算机的***组件总线,具有总线地址空间,其中,将被刷新的范围根据存储器页面被识别,并且其中所述存储器控制器被配置为将存储器页面的被识别的范围从所述总线地址空间转换成存储器块,以用于在所述存储器地址空间内刷新。
8.如权利要求1所述的设备,其中,所述存储器控制器被配置为识别在所述存储器地址空间内的多个区并将各自的刷新属性与所述区相关联,其中,所述刷新指令使所述存储器控制器根据所述各自的刷新属性刷新在任何给定区内的具有指定地址的在所述缓冲存储器中保存的数据。
9.如权利要求8所述的设备,其中,所述各自的刷新属性指示所述给定区是否对应于所述目标存储器中包括持久性存储器的范围。
10.一种计算装置,包括:
根据权利要求1所述的存储器设备;以及
网络接口控制器(NIC),所述网络接口控制器(NIC)被耦合以经由网络从对等节点接收远程直接存储器存取(RDMA)写入包,所述远程直接存储器存取(RDMA)写入包包含将被写入到所述存储器设备的数据并指定所述数据将被写入的地址,以及所述网络接口控制器(NIC)被耦合以接收RDMA刷新包,并且所述网络接口控制器(NIC)被配置为响应于所述RDMA写入包和所述RDMA刷新包来通过所述总线将所述数据和所述刷新指令传送到所述存储器设备。
11.如权利要求10所述的装置,其中,所述数据和所述刷新指令从所述NIC被传送到所述存储器设备,并且所述数据由所述存储器控制器从所述缓冲存储器刷新到所述目标存储器,而不生成对耦合到所述装置中的所述总线的中央处理单元(CPU)的中断。
12.如权利要求10所述的装置,其中,所述NIC被配置为通过在所述NIC和所述对等节点之间建立的传输服务实例来从所述对等节点接收所述RDMA写入包和所述RDMA刷新包,其中,所述存储器设备中的存储器区与所述传输服务实例相关联,其中,所述写入包使所述NIC将所述数据写入到相关联的存储器区,并且其中,所述刷新包使所述NIC发布与所述相关联的存储器区有关的刷新指令。
13.如权利要求12所述的装置,其中,所述NIC被配置为将各自的刷新属性与所述存储器区相关联,并且所述刷新指令使所述存储器控制器根据所述相关联的刷新属性来刷新由所述NIC写入到所述存储器区内的指定地址的数据。
14.如权利要求10所述的装置,还包括部署在所述对等节点处的对等NIC,其中,所述对等NIC被配置为响应于由运行在所述对等节点上的进程提交到所述对等NIC的RDMA写入和刷新工作请求,通过所述网络发送所述RDMA写入包和所述RDMA刷新包。
15.一种存储器设备,包括:
目标存储器,所述目标存储器具有存储器地址空间;
易失性缓冲存储器,所述易失性缓冲存储器被耦合以接收通过总线在事务包中被写入到所述存储器设备以用于在所述存储器地址空间中的指定地址中存储的数据,每个事务包包括事务描述符,所述事务描述符包括刷新标志;以及
存储器控制器,所述存储器控制器被配置为经由所述总线接收刷新指令,并响应于所述刷新指令而立即将所述缓冲存储器中保存的、对于其的所述刷新标志在所述事务包中被设置了的数据刷新到所述目标存储器,所述事务包将所述数据传送到所述存储器设备。
16.如权利要求15所述的设备,其中,所述目标存储器包括持久性存储器。
17.如权利要求15所述的设备,其中,所述存储器控制器被配置为响应于所述刷新指令仅刷新对于其所述刷新标志被设置的数据,同时将在其中所述刷新标志未被设置的事务包中到达的其它数据留在所述缓冲存储器中,而不立即刷新到所述目标存储器。
18.如权利要求15所述的设备,其中,所述存储器控制器被配置为在将所述数据刷新到所述目标存储器后通过所述总线将完成消息发送到所述刷新指令的发送者。
19.如权利要求15所述的设备,其中,所述事务描述符包括“No Snoop”属性字段,所述“No Snoop”属性字段包括所述刷新标志。
20.一种计算装置,包括:
根据权利要求15所述的存储器设备;以及
网络接口控制器(NIC),所述网络接口控制器(NIC)被耦合以经由网络接收远程直接存储器存取(RDMA)写入包,所述远程直接存储器存取(RDMA)写入包包含将被写入到所述存储器设备的数据、指定所述数据将被写入的地址,并指示所述数据将被刷新到所述目标存储器,以及所述网络接口控制器(NIC)被耦合以在所述RDMA写入包后接收RDMA刷新包,并且所述网络接口控制器(NIC)被配置为响应于所述RDMA写入包来通过所述总线将所述数据在其中刷新标志被设置的事务包中传送到所述存储器设备,并响应于所述RDMA刷新包将所述刷新指令传送到所述存储器设备。
21.如权利要求20所述的装置,其中,所述数据和所述刷新指令从所述NIC被传送到所述存储器设备,并且所述数据由所述存储器控制器从所述缓冲存储器刷新到所述持久性存储器,而不生成对耦合到所述装置中的所述总线的中央处理单元(CPU)的中断。
22.如权利要求20所述的装置,其中,所述NIC被配置为通过在所述NIC和所述对等节点之间建立的传输服务实例来从所述对等节点接收所述RDMA写入包和所述RDMA刷新包,其中,所述存储器设备中的存储器区与所述传输服务实例相关联,其中,所述写入包使所述NIC将所述数据写入到相关联的存储器区,并且其中,所述刷新包使所述NIC发布与所述相关联的存储器区有关的刷新指令。
23.如权利要求22所述的装置,其中,所述NIC被配置为将各自的刷新属性与所述存储器区相关联,并且所述刷新指令使所述存储器控制器根据所述相关联的刷新属性来刷新由所述NIC写入到所述存储器区内的指定地址的数据。
24.如权利要求20所述的装置,还包括部署在所述对等节点处的对等NIC,其中,所述对等NIC被配置为响应于由运行在所述对等节点上的进程提交到所述对等NIC的RDMA写入和刷新工作请求,通过所述网络传输所述RDMA写入包和所述RDMA刷新包。
25.一种用于在存储器设备中的数据存储的方法,所述存储器设备包括目标存储器和易失性缓冲存储器,所述方法包括:
在所述易失性缓冲存储器中接收通过总线写入到所述存储器设备的数据,以用于在所述存储器设备的存储器地址空间内的指定地址中存储;
经由所述总线接收刷新指令;以及
响应于所述刷新指令,将在所述存储器地址空间内具有指定地址的在所述缓冲存储器中保存的所述数据立即刷新到所述目标存储器。
26.如权利要求25所述的方法,其中,所述目标存储器包括持久性存储器。
27.如权利要求25所述的方法,其中,刷新所述数据包括将在所述刷新指令之前投递的写入命令中通过所述总线传送到所述目标存储器的所有数据立即刷新到所述目标存储器。
28.如权利要求25所述的方法,其中,所述刷新指令识别在所述存储器地址空间内将被刷新的范围,并且其中,刷新所述数据包括将保存在所述被识别的范围内的具有指定地址的在所述缓冲存储器中的所述数据立即刷新到所述目标存储器。
29.如权利要求28所述的方法,其中,刷新所述数据包括响应于所述刷新指令来刷新仅在所述被识别的范围内的数据,同时将在所述被识别的范围之外具有指定地址的其它数据留在所述缓冲存储器中,而不立即刷新到所述目标存储器。
30.如权利要求25所述的方法,还包括在将所述数据刷新到所述目标存储器后,通过所述总线将完成消息发送到所述刷新指令的发送者。
31.如权利要求25所述的方法,其中,所述数据和所述刷新指令通过其写入的所述总线是计算机的***组件总线,具有总线地址空间,其中,将被刷新的范围根据存储器页面被识别,并且其中刷新所述数据包括将存储器页面的被识别的范围从所述总线地址空间转换成存储器块,以用于在所述存储器地址空间中刷新。
32.如权利要求25所述的方法,还包括将各自的刷新属性与所述存储器地址空间内的多个区相关联,其中,刷新所述数据包括根据所述各自的刷新属性将所述刷新指令应用到在任何给定区内的具有指定地址的在所述缓冲存储器中保存的数据。
33.如权利要求32所述的方法,其中,所述各自的刷新属性指示所述给定区是否对应于所述目标存储器中包括持久性存储器的范围。
34.如权利要求25所述的方法,其中,接收所述数据包括:在耦合到所述总线的网络接口控制器(NIC)中经由网络接收来自对等节点的远程直接存储器存取(RDMA)写入包,所述远程直接存储器存取(RDMA)写入包包含将被写入到所述存储器设备的数据并指定所述数据将被写入的地址,以及通过所述总线将所述数据从所述NIC传送到所述存储器设备,以及
其中,接收所述刷新指令包括通过所述网络在所述NIC中接收RDMA刷新包,并响应于所述RDMA刷新包而通过所述总线将所述刷新指令从所述NIC传送到所述存储器设备。
35.如权利要求34所述的方法,其中,所述数据和所述刷新指令从所述NIC被传送到所述存储器设备,并且所述数据从所述缓冲存储器被刷新到所述目标存储器,而不生成对耦合到所述总线的中央处理单元(CPU)的中断。
36.如权利要求34所述的方法,其中,所述RDMA写入包和所述RDMA刷新包通过在所述NIC和所述对等节点之间建立的传输服务实例接收自所述对等节点,其中,所述存储器设备中的存储器区与所述传输服务实例相关联,其中,所述写入包使所述NIC将所述数据写入到相关联的存储器区,并且其中,所述刷新包使所述NIC发布与所述相关联的存储器区有关的刷新指令。
37.如权利要求36所述的方法,还包括将各自的刷新属性与所述存储器区相关联,并且刷新所述数据包括根据所述相关联的刷新属性立即刷新由所述NIC写入到所述存储器区内的指定地址的数据。
38.如权利要求34所述的方法,还包括响应于由运行在所述对等节点上的进程提交到所述对等节点处的对等NIC的RDMA写入和刷新工作请求,通过所述网络传输所述RDMA写入包和所述RDMA刷新包。
39.一种用于在存储器设备中的数据存储的方法,所述存储器设备包括目标存储器和易失性缓冲存储器,所述方法包括:
在所述易失性缓冲存储器中接收通过总线在事务包中被写入到所述存储器设备的数据,以用于在所述存储器设备的存储器地址空间内的指定地址中存储,每个事务包包括事务描述符,所述事务描述符包括刷新标志;以及
经由所述总线接收刷新指令;以及
响应于所述刷新指令,立即将所述缓冲存储器中保存的、对于其的所述刷新标志在所述事务包中被设置了的数据刷新到所述目标存储器,所述事务包将所述数据传送到所述存储器设备。
40.如权利要求39所述的方法,其中,所述目标存储器包括持久性存储器。
41.如权利要求39所述的方法,其中,刷新所述数据包括响应于所述刷新指令仅刷新对于其所述刷新标志被设置的数据,同时将在其中所述刷新标志未被设置的事务包中到达的其它数据留在所述缓冲存储器中,而不立即刷新到所述目标存储器。
42.如权利要求39所述的方法,还包括在将所述数据刷新到所述目标存储器后,通过所述总线将完成消息发送到所述刷新指令的发送者。
43.如权利要求39所述的方法,其中,所述事务描述符包括“No Snoop”属性字段,所述“No Snoop”属性字段包括所述刷新标志。
44.如权利要求39所述的方法,其中,接收所述数据包括:在耦合到所述总线的网络接口控制器(NIC)中经由网络接收来自对等节点的远程直接存储器存取(RDMA)写入包,所述远程直接存储器存取(RDMA)写入包包含将被写入到所述存储器设备的数据并指定所述数据将被写入的地址以及指示所述数据将被刷新到所述目标存储器;以及通过所述总线在所述刷新标志在其中被设置的事务包中将所述数据从所述NIC传送到所述存储器设备,以及
其中,接收所述刷新指令包括通过所述网络在所述NIC中在所述RDMA写入包后接收RDMA刷新包,并响应于所述RDMA刷新包,通过所述总线将所述刷新指令从所述NIC传送到所述存储器设备。
45.如权利要求44所述的方法,其中,所述数据和所述刷新指令从所述NIC被传送到所述存储器设备,并且所述数据从所述缓冲存储器刷新到所述持久性存储器,而不生成对耦合到所述总线的中央处理单元(CPU)的中断。
46.如权利要求44所述的方法,其中,所述RDMA写入包和所述RDMA刷新包通过在所述NIC和所述对等节点之间建立的传输服务实例接收自所述对等节点,其中,所述存储器设备中的存储器区与所述传输服务实例相关联,其中,所述写入包使所述NIC将所述数据写入到相关联的存储器区,并且其中,所述刷新包使所述NIC发布与所述相关联的存储器区有关的刷新指令。
47.如权利要求46所述的方法,还包括将各自的刷新属性与所述存储器区相关联,并且刷新所述数据包括根据相关联的刷新属性立即刷新由所述NIC写入到所述存储器区内的指定地址的数据。
48.如权利要求44所述的方法,还包括响应于由运行在所述对等节点上的进程提交到所述对等节点处的对等NIC的RDMA写入和刷新工作请求,通过所述网络发送所述RDMA写入包和所述RDMA刷新包。
CN201710095102.XA 2016-03-02 2017-02-22 经由计算机总线对持久性存储器的控制 Active CN107153624B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/058,262 US10776272B2 (en) 2016-03-02 2016-03-02 Control of persistent memory via a computer bus
US15/058,262 2016-03-02

Publications (2)

Publication Number Publication Date
CN107153624A true CN107153624A (zh) 2017-09-12
CN107153624B CN107153624B (zh) 2020-07-28

Family

ID=58098465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710095102.XA Active CN107153624B (zh) 2016-03-02 2017-02-22 经由计算机总线对持久性存储器的控制

Country Status (3)

Country Link
US (1) US10776272B2 (zh)
EP (1) EP3214550B1 (zh)
CN (1) CN107153624B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111261209A (zh) * 2018-12-03 2020-06-09 美光科技公司 通过刷新预测的经提高刷新传输效率
US11929934B2 (en) 2022-04-27 2024-03-12 Mellanox Technologies, Ltd. Reliable credit-based communication over long-haul links

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180239725A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Persistent Remote Direct Memory Access
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
US10958527B2 (en) * 2019-06-12 2021-03-23 International Business Machines Corporation Transaction fencing in a multi-domain network
US10972768B2 (en) 2019-06-27 2021-04-06 Intel Corporation Dynamic rebalancing of edge resources for multi-camera video streaming
US11153231B2 (en) * 2019-07-19 2021-10-19 Arm Limited Apparatus and method for processing flush requests within a packet network
US11709774B2 (en) * 2019-08-07 2023-07-25 Intel Corporation Data consistency and durability over distributed persistent memory systems
US11656967B2 (en) 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
KR102470888B1 (ko) * 2020-02-13 2022-11-25 주식회사 멤레이 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치
US11327909B1 (en) 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
CN114520711B (zh) * 2020-11-19 2024-05-03 迈络思科技有限公司 数据包的选择性重传
US11972142B2 (en) * 2020-12-29 2024-04-30 Arm Limited Data processing circuitry and apparatus for packet-based data communications
US11609700B2 (en) 2021-08-11 2023-03-21 Mellanox Technologies, Ltd. Pacing in a storage sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060256784A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for transferring a packet stream to RDMA
US20100205367A1 (en) * 2009-02-09 2010-08-12 Ehrlich Richard M Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands
US20140258637A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Flushing entries in a non-coherent cache
US20150067091A1 (en) * 2011-11-03 2015-03-05 Netapp, Inc. Interconnect delivery process
CN104937564A (zh) * 2013-03-28 2015-09-23 惠普发展公司,有限责任合伙企业 组表格的数据冲洗
CN105103144A (zh) * 2013-03-15 2015-11-25 美光科技公司 用于存储器的自适应控制的设备及方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680703A (en) * 1984-06-25 1987-07-14 International Business Machines Corp. Data processing system with reorganization of disk storage for improved paging
JPH09223118A (ja) * 1996-02-14 1997-08-26 Oki Electric Ind Co Ltd スヌープキャッシュメモリ制御システム
US6490647B1 (en) * 2000-04-04 2002-12-03 International Business Machines Corporation Flushing stale data from a PCI bus system read prefetch buffer
US7886086B2 (en) 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US7761619B2 (en) 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US7721049B2 (en) * 2006-03-27 2010-05-18 Kabuhsiki Kaisha Toshiba Disk drive write method
KR101532951B1 (ko) 2006-12-06 2015-07-09 론지튜드 엔터프라이즈 플래시 에스.에이.알.엘. 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법
US7886182B1 (en) 2007-04-19 2011-02-08 Network Appliances, Inc. Enhanced coordinated cluster recovery
US8332849B2 (en) 2008-05-30 2012-12-11 Lsi Corporation Paravirtualization acceleration through single root I/O virtualization
US8214598B2 (en) 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9104582B1 (en) * 2011-12-29 2015-08-11 Juniper Networks, Inc. Optimized data storage
US9467511B2 (en) 2012-01-17 2016-10-11 Intel Corporation Techniques for use of vendor defined messages to execute a command to access a storage device
US9323675B2 (en) * 2013-02-20 2016-04-26 International Business Machines Corporation Filtering snoop traffic in a multiprocessor computing system
US9141493B2 (en) 2013-07-12 2015-09-22 International Business Machines Corporation Isolating a PCI host bridge in response to an error event
US9525734B2 (en) 2013-10-30 2016-12-20 Annapurna Labs Ltd. Hybrid remote direct memory access
US10120832B2 (en) 2014-05-27 2018-11-06 Mellanox Technologies, Ltd. Direct access to local memory in a PCI-E device
US10055371B2 (en) * 2014-11-03 2018-08-21 Intel Corporation Apparatus and method for RDMA with commit ACKs
US9645932B1 (en) * 2014-12-19 2017-05-09 EMC IP Holding Company LLC Persistent metadata cache
US10248610B2 (en) 2015-06-23 2019-04-02 Mellanox Technologies, Ltd. Enforcing transaction order in peer-to-peer interactions
US10303647B2 (en) 2015-07-15 2019-05-28 Mellanox Technologies, Ltd. Access control in peer-to-peer transactions over a peripheral component bus
US10257273B2 (en) * 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060256784A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for transferring a packet stream to RDMA
US20100205367A1 (en) * 2009-02-09 2010-08-12 Ehrlich Richard M Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands
US20150067091A1 (en) * 2011-11-03 2015-03-05 Netapp, Inc. Interconnect delivery process
US20140258637A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Flushing entries in a non-coherent cache
CN105103144A (zh) * 2013-03-15 2015-11-25 美光科技公司 用于存储器的自适应控制的设备及方法
CN104937564A (zh) * 2013-03-28 2015-09-23 惠普发展公司,有限责任合伙企业 组表格的数据冲洗

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111261209A (zh) * 2018-12-03 2020-06-09 美光科技公司 通过刷新预测的经提高刷新传输效率
US11929934B2 (en) 2022-04-27 2024-03-12 Mellanox Technologies, Ltd. Reliable credit-based communication over long-haul links

Also Published As

Publication number Publication date
EP3214550B1 (en) 2019-07-17
US20170255559A1 (en) 2017-09-07
EP3214550A1 (en) 2017-09-06
CN107153624B (zh) 2020-07-28
US10776272B2 (en) 2020-09-15

Similar Documents

Publication Publication Date Title
CN107153624A (zh) 经由计算机总线对持久性存储器的控制
US20190188164A1 (en) A method and device for improved advanced microcontroller bus architecture (amba) and advanced extensible interface (axi) operations
US6804673B2 (en) Access assurance for remote memory access over network
CN100592273C (zh) 执行dma数据传输的设备和方法
CN104123262B (zh) 在PCIExpress上启用基于ID的流的方法和装置
KR101069931B1 (ko) 캐쉬를 구비한 데이터 프로세싱 시스템에서 오버헤드를감소시키기 위한 방법 및 장치
US9996498B2 (en) Network memory
US9311244B2 (en) Enforcing ordering of snoop transactions in an interconnect for an integrated circuit
CN110365604A (zh) 储存设备及其队列管理方法
TW200421089A (en) Method and apparatus for injecting write data into a cache
US20220004321A1 (en) Effective transaction table with page bitmap
US6842828B2 (en) Methods and arrangements to enhance an upbound path
US7469312B2 (en) Computer system bus bridge
US11258887B2 (en) Payload cache
US6529999B1 (en) Computer system implementing system and method for ordering write operations and maintaining memory coherency
US20230161675A1 (en) Redundant communications for multi-chip systems
KR20150129808A (ko) 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치
CN105260332A (zh) 一种对cpld数据包进行有序存储的方法及***
US20090006712A1 (en) Data ordering in a multi-node system
TW384445B (en) Method for bursting processor data to or from an I/O device
DE102022119909A1 (de) Reduzierte netzwerkbelastung mit kombiniertem put oder get und vom empfänger verwaltetem offset
CN106325377B (zh) 外部设备扩展卡及输入输出外部设备的数据处理方法
US11275589B2 (en) Method for managing the supply of information, such as instructions, to a microprocessor, and a corresponding system
US11868282B1 (en) Network device using cache techniques to process control signals
US11249918B2 (en) Mapping entry invalidation

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