CN106575206A - 计算机系统中的存储器写入管理 - Google Patents
计算机系统中的存储器写入管理 Download PDFInfo
- Publication number
- CN106575206A CN106575206A CN201580045771.5A CN201580045771A CN106575206A CN 106575206 A CN106575206 A CN 106575206A CN 201580045771 A CN201580045771 A CN 201580045771A CN 106575206 A CN106575206 A CN 106575206A
- Authority
- CN
- China
- Prior art keywords
- write
- target
- source
- write operation
- mark
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/28—Using a specific disk cache architecture
- G06F2212/285—Redundant cache memory
- G06F2212/286—Mirrored cache memory
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
根据本描述,公开一种用于与向目标发出写入操作的源一起使用的设备,其中装置包括:I/O端口;以及目标的逻辑,配置成检测与第一多个写入操作的发出关联的由源发出的标志。响应于检测到标志,目标的逻辑确保在完成第二多个写入操作中的任何写入操作之前在存储器中完成第一多个写入操作。还描述了源的设备,它包括:I/O端口;以及源的逻辑,配置成发出第一多个写入操作并与第一多个写入操作的发出相关联而发出写入栅栏标志。本文中还描述了其它方面。
Description
技术领域
本发明的某些实施例一般涉及计算机系统中的存储器写入管理。
背景技术
诸如单处理器计算机系统的计算机系统通常具有中央处理单元和系统存储器。多处理器计算机系统通常具有多个节点,其中系统的每个节点具有它自己的系统存储器和中央处理单元。中央处理单元包括一个或多个处理核,并且还可包括通常称为根复合体的输入/输出(I/O)复合体,它可与单个集成电路装置中的处理核集成,或者可驻留在独立的集成电路装置中。I/O复合体包括桥接器(例如,非透明桥接器(NTB))和I/O端口(通常称为根端口(RP)),它们将节点连接到例如通常包括一个或多个交换机的诸如PCI Express(PCIe)结构的I/O结构。计算机系统的节点或其它部分可通过I/O结构彼此通信,以便经由I/O复合体传送和接收包括数据读取和数据写入消息的消息。
例如,芯片上系统(SOC)(例如,服务器SOC)通常集成在单个衬底上,该单个衬底不仅包括处理核,而且还包括各种专用硬件和固件加速器,例如存储器控制器和I/O复合体,I/O复合体不仅可包括根端口(RP)或非透明桥接器(NTB),而且还可包括直接存储器访问(DMA)控制器、英特尔快速辅助技术(Intel Quick Assist Technology)(QAT)加速器、内容过程管理(CPM)加速器等。与处理核集成的这些专用加速器可处理特定任务,相较于通过一个或多个编程的处理核执行这些任务的实现,专用硬件或固件可为这些特定任务提显著的功率改善或性能提高(或两者)。例如,集成式DMA控制器可加速系统存储器与PCIe根端口(RP)或非透明桥接器(NTB)之间的数据移动。集成式DMA控制器还可加速数据完整性字段(DIF)保护信息生成、循环冗余校验(CRC)生成和其它存储或联网特征。QAT或CPM加速器可加速数据压缩、加密等。
为了促进写入数据的快速传输,I/O复合体和互连I/O结构通常不确保以与源发出写入数据的次序相同的次序写入由诸如本地节点的源写入到诸如远程节点的目标的系统存储器中的写入数据。因而,目标的I/O复合体可向它的系统存储器发出多个写入,而无需等待之前的写入操作完成。因此,便于实现适合诸如存储应用的许多应用的带宽。为了确保在成功写入特定写入数据集合之后再将另外的数据写入到目标存储器,源通常生成读取目标存储器的读取操作以便验证特定写入数据集合的成功写入。
附图说明
附图的各图中举例而非限制性地示出本公开的实施例,图中类似参考数字指类似元素。
图1描绘根据本公开的一个实施例示出采用写入栅栏(fence)标志逻辑的系统的选择的方面的高级框图。
图2描绘根据本公开的一个实施例采用写入栅栏标志逻辑的多处理器存储控制器的基本体系结构。
图3描绘根据本公开的一个实施例图2的多处理器存储控制器的节点的更详细体系结构。
图4A-4C是描绘由本地节点发出并由远程节点处理的写入操作的现有技术示例的示意图。
图5是描绘经过远程节点的I/O网格的各种路径的各种写入操作的数据的现有技术示例的示意图。
图6是描绘写入操作与用于验证目的的读取操作的序列的现有技术示例的示意图。
图7是描绘根据本公开的一个实施例从采用写入栅栏标志逻辑的多处理器存储控制器的本地节点的存储器空间到远程节点的存储器空间的地址转换的示意图。
图8A-8D是描绘根据本公开的一个实施例由本地节点发出并由采用写入栅栏标志逻辑的远程节点处理的写入操作的示例的示意图。
图9A和9B是描绘远程节点结合图8A-8D的写入操作采用的远程操作日志的示例的示意图。
图10A-10D是描绘根据本公开的一个实施例由本地节点发出并由采用写入栅栏标志逻辑的远程节点处理的写入操作的另一个示例的示意图。
图11是描绘根据本描述的一个实施例具有指示写入栅栏标志的报头的写入描述符的示例的示意图。
图12A和12B是描绘远程节点结合图10A-10D的写入操作采用的远程操作日志的示例的示意图。
图13A是描绘根据本公开的一个实施例采用写入栅栏标志逻辑的远程节点的操作的一个示例的示意图。
图13B是描绘根据本公开的一个实施例采用写入栅栏标志逻辑的远程节点的操作的另一个示例的示意图。
图14描绘根据本公开的一个实施例图2的多处理器存储控制器的节点的更详细体系结构的另一个示例。
图15A是描绘根据本公开的一个实施例采用写入栅栏标志逻辑的源节点的操作的一个示例的示意图。
图15B是描绘根据本公开的一个实施例采用写入栅栏标志逻辑的源节点的操作的另一个示例的示意图。
图16A是描绘根据本公开的一个实施例由采用写入栅栏标志逻辑的源或本地节点发出以便通过目标或远程节点处理的写入操作的一个示例的示意图。
图16B是描绘根据本公开的另一个实施例由采用写入栅栏标志逻辑的源或本地节点发出以便通过目标或远程节点处理的写入操作的另一个示例的示意图。
图17是描绘具有包括指示I/O提交标志的控制位的报头的写入描述符的示例的示意图。
具体实施方式
在以下描述中,赋予类似组成相同的参考数字,而不管是否在不同实施例中示出它们。为了以清楚简洁的方式说明本公开的实施例,附图不一定按比例绘制,并且以略微示意的形式示出某些特征。关于一个实施例描述和/或图示的特征可在一个或多个其它实施例中和/或结合或取代其它实施例的特征以相同方式或类似方式使用。
本描述的各方面涉及计算机组件和计算机系统中的存储器写入管理,其中源向具有存储器的目标发出写入操作。计算机系统可以是单处理器或多处理器系统,它们可具有单个地址空间或链接在一起的多个地址空间。
例如,在单处理器或多处理器计算机系统中,描述了这样的存储器写入管理,其中在一个实施例中,可通过用于向位于相同系统或不同系统中的目标发出存储器写入操作的逻辑(例如,写入栅栏源逻辑)传送诸如写入栅栏标志的标志。目标的I/O复合体的逻辑(例如,写入栅栏目标逻辑)识别写入栅栏标志,它采取合适措施以便确保在完成写入栅栏标志之后的存储器写入或其它存储器操作之前,完成与写入栅栏标志相关联的存储器写入操作。如下文将更详细地解释,在一些实施例中,这种安排减少或消除了出于写入隔开(fencing)或其它验证目的的读取操作。
在诸如具有多个节点并且每个节点的地址空间链接到其它节点的地址空间的多处理器计算机系统的另一个示例中,描述了这样的存储器写入管理,其中在一个实施例中,可通过向诸如远程节点的目标发出存储器写入操作的本地节点的I/O复合体的逻辑(例如,写入栅栏源逻辑)传送诸如写入栅栏标志的标志。远程节点的I/O复合体的逻辑(例如,写入栅栏目标逻辑)识别写入栅栏标志,它采取合适措施以便确保在完成写入栅栏标志之后的存储器写入或其它存储器操作之前,完成与写入栅栏标志相关联的存储器写入操作。如下文将更详细地解释,在一些实施例中,这种安排减少或消除了出于写入隔开或其它验证目的的读取操作。尽管结合写入栅栏标志描述某些实施例,但是将明白,取决于特定应用,也可使用其它类型的标志。
转到附图,图1是示出根据本公开的一个实施例实现的组件或系统的选择的方面的高级框图。系统10可代表包括根据本描述的写入栅栏标志逻辑的多种电子和/或计算装置中的任何装置。这些电子和/或计算装置可包括:计算装置,例如多处理器系统、大型机、服务器、个人计算机、工作站、电话装置、网络器械、虚拟化装置、存储控制器、便携式或移动装置(例如,膝上型计算机、上网本、平板计算机、个人数字助理(PDA)、便携式媒体播放器、便携式游戏装置、数码相机、移动电话、智能电话、特色电话等)的一个或多个节点;或组件(例如,芯片上系统、处理器、桥接器、存储器控制器、存储器等)。在备选实施例中,系统10可包括更多元件、更少元件和/或不同元件。此外,尽管可将系统10描绘为包括独立元件,但是将明白,可将一个或多个这样的元件集成到诸如芯片上系统(SoC)的一个平台上。在该说明性示例中,系统10包括微处理器20、存储器控制器30、存储器40和外围组件50,外围组件50可包括例如I/O复合体、视频控制器、输入装置、输出装置、存储设备、网络适配器等。微处理器20包括高速缓存25,它可以是用于存储指令和数据的存储器层级的一部分,并且系统存储器40也可以是存储器层级的一部分。微处理器20与存储器40之间的通信可通过存储器控制器(或芯片组)30来促进,存储器控制器(或芯片组)30还可促进与外围组件50的通信。
外围组件50的I/O复合体可实现各种数据传输协议和体系结构,例如外围组件互连Express(PCIe)体系结构。将明白,取决于特定应用,可使用其它数据传输协议和体系结构。
外围组件50的存储设备可以是例如非易失性存储设备,如磁盘驱动器、光盘驱动器、磁带驱动器、闪速存储器等。存储设备可包括内部存储装置、或附连的或可网络访问的存储设备。存储设备中的程序加载到存储器中并由处理器执行。网络控制器或适配器使得能够与诸如以太网、光纤通道仲裁环网等的网络通信。此外,在某些实施例中,该体系结构可包括用于在显示器监视器上呈现信息的视频控制器,其中视频控制器可在视频卡上实施或集成在贴装于母板或其它衬底上的集成电路组件上。输入装置用于向处理器提用户输入,它可包括键盘、鼠标、手写笔、麦克风、触敏显示屏、输入引脚、插口、或在本领域中已知的任何其它激活或输入机制。输出装置能够呈现从处理器或诸如显示器监视器、打印机、存储设备、输出引脚、插口等的其它组件传送的信息。I/O复合体和网络适配器中的一个或多个可在诸如外围组件互连(PCI)卡、PCI-expres或某个其它I/O卡的网络卡上或在贴装于母板或其它衬底上的集成电路组件上实施,或者可与微处理器20集成。
取决于特定应用,装置10的一个或多个组件可省略。例如,网络路由器可缺少例如视频控制器。尽管本文中结合外围组件50的I/O复合体进行描述,但是将明白,本文中描述的写入栅栏标志逻辑可并入在系统10的其它组件中。根据本描述的一个组件的写入栅栏源逻辑可通过总线、结构、网络、互联网或任何其它合适的通信路径向位于相同系统内或不同系统内的组件的写入栅栏目标逻辑发出写入操作和写入栅栏标志。
例如,在诸如具有多个节点的计算机系统的许多计算机系统中,每个节点的I/O复合体和互连I/O结构允许一个节点(可称为本地或源节点)将数据直接写入到另一个节点(可称为远程或目标节点)的系统存储器中,其中通常很少涉及或不涉及远程节点的CPU的处理核。为了指示完成到远程系统存储器的写入操作,本地节点通常在远程系统存储器中通常称为写入日志的数据结构中写入一个条目,在本地节点随后发生故障的情况下,远程节点的CPU可利用该数据结构。
例如,存储控制器通常是具有多个节点的多处理器计算机系统。图2示出根据本描述的一个实施例具有由节点A、B表示的多个节点的多处理器存储控制器100的示例,节点A、B分别包括写入栅栏源逻辑110a和写入栅栏目标逻辑110b。尽管为了简单起见将多处理器存储控制器100描绘为具有两个节点,即源节点A和目标节点B,但是将明白,取决于特定应用,根据本描述的计算机组件或计算机系统可具有更大或更少数量的源、目标或节点。尽管结合写入栅栏逻辑描述某些实施例,但是将明白,取决于特定应用,也可利用其它类型的逻辑。
存储控制器100通常控制从存储设备114(例如,磁盘驱动器的阵列)读取数据以及将数据写入到存储设备114的I/O操作。通常通过将I/O请求引导到诸如控制器100的存储控制器的主机计算机120a、120b…120n经由总线、网络、链路或其它通信路径118请求I/O操作。一旦从主机接收写入请求,存储控制器100的一个节点(在图3中可称为本地或源节点)通常将写入请求的写入数据写入到它自己的本地系统存储器300a中,并将写入数据镜像到存储控制器的另一个节点(在图3中可称为远程或目标节点)的系统存储器300b。一旦在本地和远程节点A、B的系统存储器300a、300b中安全地写入写入数据,本地节点A便可向请求主机120a、120b…120n报告写入请求已完成,尽管写入数据到存储设备114的实际写入可能并没有完成。这种安排可增加整体效率,因为到存储设备114的写入可能比到系统存储器300a、300b的写入更缓慢地完成。在阻止写入数据到存储设备114的实际写入完成的故障(例如,本地节点A的故障)的情况下,存储控制器100的远程节点B可访问它的系统存储器300b,并完成到存储设备114的写入操作。
图3是示出具有根据本描述的写入栅栏标志逻辑的多处理器计算机系统(例如,存储控制器100)的本地节点A和远程节点B的一个示例的示意图。在该示例中,节点A称为本地或源节点,因为节点A向称为远程或目标节点的节点B发起写入操作。对于由节点B(在该后一示例中为本地或源节点)向节点A(在该后一示例中为远程或目标节点)发起的写入操作,节点A和B的作用可颠倒。
在图3的示例中,为简单起见,将节点A、B表示为是彼此的镜像。将明白,在其它实施例中,取决于特定应用,多处理器系统的节点可彼此不同。这里,节点A、B均包括分别具有CPU或处理核314a、314b的CPU 310a、310b。每个节点A、B的处理核314a、314b的数量可随特定应用而改变。
该示例的每个节点A、B的CPU 310a、310b还包括存储器控制器320a、320b,它控制包括对相应节点A、B的存储器300a、300b的存储器读取和存储器写入的存储器操作。每个CPU 310a、310b的I/O复合体324a、324b具有诸如根端口的I/O端口330a、330b、直接存储器访问(DMA)控制器334a、334b和桥接器340a、340b(可以是例如非透明桥接器(NTB))。在所示实施例中,每个I/O复合体324a、324b的桥接器340a、340b具有根据本描述的写入栅栏标志逻辑。因此,在图3中,将非透明桥接器340a、340b表示为“写入栅栏桥接器”340a、340b。每个节点A、B的处理核314a、314b、存储器控制器320a、320b和I/O复合体324a、324b通常通过便于在每个节点A、B的核314a、314b、存储器控制器320a、320b、I/O端口330a、330b 、DMA控制器334a、334b和桥接器340a、340b中通信的通信路径和写入缓冲器的I/O网格互连。
当节点A从主机计算机120a、120b…120n(图2)接收写入请求时,作为本地节点操作的节点A在它的本地系统存储器300a的本地数据缓冲器350a中写入写入请求的写入数据。一旦完成该数据写入操作,便将指示数据写入完成的条目输入到它的本地系统存储器300a的数据结构(在本文中称为本地写入日志354a)中。另外,为了冗余度起见,节点A还启动写入操作以使得将来自主机计算机120a、120b…120n(图2)的写入请求的写入数据写入到远程节点B的系统存储器300b的远程数据缓冲器360b中。一旦完成该数据写入操作,便将指示数据写入完成的条目输入到远程数据结构,即,远程系统存储器300b的远程写入日志364b。
类似地,当节点B从主机计算机120a、120b…120n(图2)接收写入请求时,作为本地节点操作的节点B在它的系统存储器300b的本地数据缓冲器350b中写入写入请求的写入数据。一旦完成该数据写入操作,便将指示数据写入完成的条目输入到数据结构,即它的本地系统存储器300b的本地写入日志354b。另外,为了冗余度起见,节点B还启动写入操作以使得将来自主机计算机120a、120b…120n(图2)的写入请求的写入数据写入到节点A的系统存储器300a的远程数据缓冲器360a中。一旦完成该数据写入操作,便将指示数据写入完成的条目输入到数据结构,即系统存储器300a的远程写入日志364a。
图4A-4C描绘用于将数据从本地节点写入到远程节点的现有技术多处理器计算机系统的节点的示例,这些节点没有根据本描述的写入栅栏标志逻辑。在该示例中,本地节点利用称为“描述符”的数据结构来通信即将通过远程节点执行的操作。例如,“写入描述符”标识即将作为写入操作执行的操作,提待写入的写入数据,并标识即将写入写入数据的这个或这些目标地址。写入描述符还可提在本文中称为“标签ID”的唯一标识号来标识写入操作。
本地节点可以为写入操作的序列汇集写入描述符的序列。将写入描述符的序列打包成寻址到远程节点的端点目的地(例如,远程节点的非透明桥接器(NTB))的分组的序列中的有效负载,并通过用于互连这些节点的I/O结构将分组传送到远程节点。
远程节点的非透明桥接器汇集从本地节点接收的分组,并从接收的分组拆解每个写入描述符。然后,远程节点启动由拆解的写入描述符标识的写入操作。可通过远程节点的I/O复合体的组件中的一个或多个组件(例如,非透明桥接器、I/O端口和DMA控制器)以及通过CPU核与存储器控制器中的一个或多个来执行写入操作。例如,远程节点的非透明桥接器通常将即将通过写入操作写入写入数据的这个或这些目标地址从本地节点的存储器空间转换到远程节点的存储器空间。
在图4A的示例中,通过例如写入栅栏源逻辑进行控制的本地节点的组件(例如,DMA控制器)以由分组携带的五个写入描述符的形式向远程节点的远程桥接器400发出五个写入操作的序列write0、write1、write2、write3和journalwrite3。跟在写入操作write3后面的写入操作journalwrite3将通过到写入完成数据结构(即,远程节点的远程写入日志)的写入来指示写入操作write0-write3的完成。
如图4A所示,远程节点的非透明桥接器400可按照由本地节点发出的原始顺序次序接收五个写入描述符的五个写入操作write0-write3和journalwrite3。类似地,如图4B所示,可通过由例如写入栅栏源逻辑进行控制的远程节点的组件(例如,DMA控制器)按照原始顺序次序启动五个写入描述符的五个写入操作。一旦启动这些写入操作,包括这些写入操作的写入数据的数据通常先经过I/O网格410,然后再写入到远程节点的存储器414。如前所述,节点的处理核、存储器控制器和I/O复合体通常通过便于在节点的核、存储器控制器、I/O端口、DMA控制器和桥接器中通信的通信路径和写入缓冲器的I/O网格互连。
图5中将I/O网格410示意性地表示为写入缓冲器a1、a2…d4的4×4阵列500,其中通信路径510互连写入缓冲器a1、a2…d4和I/O复合体的组件(例如,桥接器400)以及CPU的其它组件(例如,存储器控制器520)。为了清楚起见,对图5的图进行了简化。将明白,取决于特定应用,写入缓冲器的数量和排列可有所不同。另外,特定通信路径510可以是单向或双向的,并且可允许从一个写入缓冲器到另一个写入缓冲器的通信绕过相邻写入缓冲器。
出于说明的目的,将写入操作write0的数据描绘为先经过写入缓冲器a1、a2、a3、a4、b4、c4、d4,然后再例如通过存储器控制器520将写入数据写入到存储器414(图4A-4C)。但是,将写入操作write1的数据描绘为先经过写入缓冲器a1、a2、b2、b3、c3、c4、d4,然后再例如将它的写入数据写入到存储器414。其它写入操作write2、write3、journalwrite3的数据可类似地采取不同路径。
由于这五个写入操作的每个数据集合可采取不同的路径经过I/O网格410,所以可以按照与由本地节点发出的写入操作的原始顺序次序不同的顺序次序将写入数据写入到存储器414。图4C中将这种顺序次序的改变描绘为写入操作序列write2、write0、write3、journalwrite3、write1。因此,在图4C的示例中,写入操作write1跟在写入操作journalwrite3之后。由于写入日志写入操作journalwrite3指示这五个写入描述符的写入操作的完成,所以写入日志写入操作journalwrite3提早了,因为在图4C的示例中,尚未将写入操作write1的写入数据写入到远程存储器414。如果发生阻止写入操作write1完成的故障,那么写入操作journalwrite3的写入日志条目将错误地指示当时实际上尚未完成的写入操作已完成。
为了避免这类情形,之前的多处理器计算机在将来自主机计算机120a、120b…120n(图2)的写入请求的写入数据写入到远程节点的远程存储器414的写入操作write0-write3的序列之后插入读取操作(例如,读取操作read0(图6))的读取描述符。读取操作read0允许向远程节点发起写入操作的本地节点验证写入操作write0-write3已成功完成。一旦如此验证了那些写入操作的完成,本地节点便发出写入操作journalwrite3的写入描述符,写入操作journalwrite3使得将指示写入操作write0-write3完成的条目输入到远程系统存储器的远程写入日志中。
但是,这里要明白,用于验证之前的写入操作成功完成的读取操作要花费大量时间来完成。因此,系统的性能可能会受到显著的不利影响。
根据本公开的各种实施例,针对计算机系统描述存储器写入管理,其中在一个实施例中,可通过源(例如,向诸如远程节点的目标发出存储器写入操作的本地节点)的写入栅栏标志逻辑(例如,写入栅栏标志逻辑110a(图2))传送写入栅栏标志。如这里所解释,目标(例如,远程节点)的写入栅栏标志逻辑(例如,写入栅栏目标逻辑110b)识别写入栅栏标志,并且写入栅栏目标逻辑采取合适的措施以便确保在完成写入栅栏标志之后的存储器写入操作之前,完成与写入栅栏标志相关联的存储器写入操作。如下文将更详细地解释,在一些实施例中,这种安排减少或消除了出于确认写入操作完成的目的的读取操作。
在一个实施例中,分别在修改成执行根据本描述的写入栅栏标志操作的相应I/O复合体324a、324b(图3)的非透明桥接器340a、340b中实现写入栅栏源逻辑110a和写入栅栏目标逻辑110b。但是,将明白,根据本描述的写入栅栏标志逻辑可在计算机系统的一部分或多处理器计算机的节点的其它组件中实现,例如可在I/O端口330a、330b、DMA控制器334a、334b、CPU核314a、314b与存储器控制器320a、320b(图3)中实现。
在一个实施例中,本地或源节点A可通过到目标的地址空间内的指定地址的特殊写入操作来向远程或目标节点B指示写入栅栏标志。目标的写入栅栏标志桥接器340b的写入栅栏目标逻辑配置成将到指定地址的写入识别为是写入栅栏标志并采取合适措施以确保在完成写入栅栏标志之后的存储器写入操作之前,完成与写入栅栏标志相关联的存储器写入操作。
图7是描绘本地或源节点A和远程或目标节点B的地址空间700a、700b的示意图。如图7中所指示,本地节点A的地址空间700a包括远程节点数据缓冲器地址空间710,它对应于远程节点B的地址空间700b内指派给远程节点B的系统存储器300b的远程数据缓冲器360b(图3)的地址空间。类似地,本地节点A的地址空间700a还包括远程节点写入日志地址空间714,它对应于远程节点B的地址空间700b内指派给远程节点B的系统存储器300b的远程写入日志364b(图3)的地址空间。此外,本地节点A的地址空间700a还包括远程节点标志地址空间720,它对应于远程节点B的地址空间700b内指派给远程节点B的系统存储器300b的远程写入栅栏标志存储器724b(图3)的地址空间。尽管描绘为位于系统存储器300b内,但是将明白,远程写入栅栏标志存储器724b可位于诸如远程节点B的目标的其它组件内,例如位于I/O复合体324b的组件(例如,写入栅栏桥接器340b)的寄存器中。在一些实施例中,远程写入栅栏标志存储器724b的地址可编程以允许用户选择写入栅栏标志地址。
远程节点B的非透明桥接器(例如,桥接器340b)的一个功能是,如图7的转换功能箭头730、734、740所表示,将由本地节点A进行的指向远程节点B的读取和写入操作的目标地址从本地节点A的地址空间700a转换到远程节点B的地址空间700b。图8A示出本地或源节点A向诸如远程节点的目标发出由写入描述符的写入操作表示的写入描述符的序列的示例。更具体来说,图8A描绘由本地节点A发出的四个写入操作,即write0、write1、write2、write3,在此之后是写入栅栏(WF)标志写入操作WFflagwrite3和写入日志写入操作journalwrite3,写入日志写入操作journalwrite3是到远程节点的写入完成数据结构、即远程写入日志的写入操作。远程写入栅栏桥接器340b可按照与本地节点A发出的相同顺序次序接收由写入描述符描述的写入操作。因此,远程写入栅栏桥接器340b可拆解前第五个写入操作write0、write1、write2、write3和WFflagwrite3中的每个写入操作,并且远程节点B可按照由本地节点A发出的相同顺序次序启动这些写入操作,如图8B所示。因此,如桥接器地址转换箭头730(图7)所指示,桥接器340b将前四个写入操作write0、write1、write2、write3的目标地址从发起节点A的远程节点数据缓冲器地址空间710(图7)转换到节点B存储器地址空间700b的远程节点数据缓冲器360b的地址空间。
以类似方式,当拆解并启动写入栅栏(WF)标志写入操作WFflagwrite3时,桥接器340b将写入栅栏(WF)标志写入操作WFflagwrite3的目标地址从发起节点A的远程节点标志地址空间720(图7)转换到节点B存储器地址空间700b的远程节点标志地址空间724b的地址空间,如桥接器地址转换箭头740(图7)所指示。远程写入栅栏桥接器340b的写入栅栏目标逻辑配置成将指向远程节点标志地址空间724b内的地址的写入操作的目标地址识别为是写入栅栏标志以便开始对之前的写入操作(在该示例中是前四个写入操作write0-write3)实施写入栅栏。
因此,一旦如来自另一个节点的指向远程节点标志地址空间724b内的目标地址的写入操作所指示检测到写入栅栏标志,便通过远程写入栅栏桥接器340b缓冲所有随后的写入操作,以便延迟执行这些缓冲的写入操作,直到桥接器340b接收到对远程系统存储器成功完成之前的写入操作的确认为止。
在该示例中,如图8A所示,在远程节点B接收到这四个写入操作write0、write1、write2、write3和写入栅栏(WF)标志写入操作WFflagwrite3之后,远程节点B接收写入日志写入操作journalwrite3。因此,由于检测到写入栅栏(WF)标志写入操作WFflagwrite3的写入栅栏标志,所以如图8B所示,通过写入栅栏桥接器340b缓冲远程节点B在写入栅栏(WF)标志写入操作WFflagwrite之后接收的写入日志写入操作journalwrite3,而不是在接收后就通过远程节点B执行。
通过缓冲写入日志写入操作journalwrite3而不是立即执行写入日志写入操作,可延迟写入日志写入操作,直到由写入栅栏标志隔开的写入操作完成为止。一旦由写入栅栏标志隔开的写入操作write0-write3完成,便允许写入日志写入操作journalwrite3继续进行。因此,确保了由写入日志写入操作journalwrite3写入的写入日志条目的准确性。因此,如有需要,可安全地依靠由指示写入操作write0-write3完成的写入操作journalwrite3写入的写入日志条目。
为了验证诸如写入操作write0-write3的远程操作的完成,在一个实施例中,远程节点B保存在本文中称为远程操作日志的数据结构,例如在图9A中的900处指示的数据结构。将明白,目标可利用各种其它技术来验证在完成与检测到的写入栅栏标志相关联的写入操作之后才允许随后接收的操作继续进行。
日志900可保存在系统存储器300b中,或保存在远程节点B的另一个组件的诸如寄存器(例如,远程写入栅栏桥接器340b中的寄存器)的存储器中。当远程节点B启动每个写入操作时,在日志900的操作标签ID字段中建立记录该操作的标签ID的条目。因此,在通过远程写入栅栏桥接器340b保存日志900的实施例中,可通过例如远程写入栅栏桥接器340b建立到日志900的条目。在图8B的示例中,启动写入操作write0-write3和写入栅栏标志操作WFflagwrite3,同时缓冲写入栅栏写入日志写入操作journalwrite3。因此,远程操作日志900在日志900的操作标签ID字段中对于启动的每个写入操作write0-write3和WFflagwrite3均具有条目。在该实施例中,推迟远程操作日志900中对于缓冲的写入操作journalwrite3的条目,直到启动该写入操作为止。将明白,在其它实施例中,也可将等待写入栅栏完成的缓冲操作输入到远程操作日志中。
如上所述,远程写入栅栏桥接器340b的写入栅栏目标逻辑识别出写入栅栏标志写入操作WFflagwrite3的目标地址指向远程节点标志地址空间724b内的目标地址。因此,远程写入栅栏桥接器340b的写入栅栏目标逻辑将写入栅栏标志写入操作WFflagwrite3识别为是写入栅栏标志,并在远程操作日志900的写入栅栏标志写入操作WFflagwrite3的条目的写入栅栏标志字段中对此作出指示。因此,远程写入栅栏桥接器340b的写入栅栏目标逻辑开始对日志900的之前几个写入操作(在该示例中是前四个写入操作write0-write3)实施写入栅栏。
取决于特定应用,可利用各种技术来确定即将由特定写入栅栏隔开的特定写入操作。例如,可将由写入栅栏标志WFflagwrite3隔开的写入操作标识为是在接收写入栅栏标志WFflagwrite3之前以及在接收写入栅栏标志WFflagwrite3之前的上一个写入栅栏标志之后启动的写入操作。其它技术可包括在伴随写入栅栏标志写入操作WFflagwrite3的写入数据中标识即将隔开的写入操作。将明白,取决于特定应用,可使用其它技术。
如图8C所示,由于各种因素,没有按照与远程节点B启动写入操作的顺序次序相同的顺序次序将写入操作的序列的写入数据写入到远程节点B的系统存储器300b中。一个诸如之前描述的因素是,各种写入操作的数据可采取不同路径经过互连远程节点B的组件的I/O网格。在该示例中,按照变化的顺序次序将启动的写入操作的写入数据写入到远程存储器300b,如图8C中所描绘,首先是写入操作write2的写入数据,然后是写入操作write0、write3、write1、WFflagwrite3的写入数据。将明白,在一些实施例中,识别为是写入栅栏标志的写入操作不会导致写入写入栅栏标志写入操作本身的写入数据。
当对于每个写入操作完成到存储器300b的数据写入时,远程节点B的组件(例如,存储器控制器320b)发出通过标签ID标识完成的写入操作的确认。在该示例中,远程写入栅栏桥接器340b接收写入确认,并在由该标签ID标识的操作的条目的远程操作日志的确认标签ID字段中记录该标签ID。因此,在图8C的示例中,首先完成的隔开写入操作是写入操作write2,然后是写入操作write0。因此,将写入操作write2和write0的标签ID输入到写入操作write2和write0的条目的确认标签ID字段中,如图9A所示。因此,远程节点的写入栅栏目标逻辑可监控远程操作日志900,并确定是否所有隔开的写入操作都已完成。在图9A的示例中,远程操作日志指示隔开的写入操作write2和write0已经完成,而隔开的写入操作write1和write3仍有待完成,如这些写入操作的确认标签ID字段中缺少条目所指示。因此,写入栅栏在此时继续实施。
图9B指示在如每个隔开的写入操作write0-write3的确认标签ID中存在条目所指示所有隔开写入操作均已确认完成之后远程操作日志900的状态。尽管写入操作并非按照它们的原始顺序次序完成,但是所有隔开的写入操作write0-write3都已完成,并且因此写入栅栏操作可终止,直到接收到下一个写入栅栏标志。因此,可接着启动在等待写入栅栏实施终止时由远程写入栅栏桥接器340b缓冲的所有写入操作。因此,允许写入日志写入操作journalwrite3和任何其它缓冲的写入操作(例如,写入操作write6-write9)继续进行,如图8D中所指示。因此,确保了由写入日志写入操作journalwrite3在写入日志364b中建立的条目的准确性。因此,如有需要,可安全地依靠由写入日志写入操作journalwrite3在写入日志364b中建立的指示写入操作write0-write3完成的条目。
在图7和图8A-8D中描绘的实施例中,向远程节点或其它目标发起写入操作的序列的本地节点或其它源可向目标发出写入操作形式的写入栅栏标志,该写入操作写入到特殊地址,以使得目标将到该特殊地址的写入操作识别为是写入栅栏标志。这类实施例可利用写入描述符来作为只在例如目标地址的位置方面本质上不同于其它写入描述符的写入栅栏标志。
将明白,源可利用其它技术来向目标发出写入栅栏标志。例如,图10A-10D涉及这样的实施例,其中诸如本地节点A的源同样发出四个写入操作write0、write1、write2、write3的写入描述符的序列。但是,在该示例中,这四个写入操作write0、write1、write2、write3之后的是写入日志写入操作journalwrite3。省略了之前实施例的写入栅栏(WF)标志写入操作WFflagwrite3。而是,将这四个写入操作write0、write1、write2、write3的最后一个写入操作write3修改成不仅如之前一样指示数据写入操作write3,而且还向目标指示写入栅栏标志。
这里将明白,可利用多种技术来修改写入描述符以便指示它还携带写入栅栏标志。例如,如图11所示,将写入操作write3的描述符1120的报头1110修改成在报头1110的一部分中包含表示写入栅栏标志1124的数据。将明白,其它格式的远程操作描述符或消息可具有其它修改以便向诸如另一个节点的目标指示写入栅栏标志。
在图7和图8A-8D中描绘的实施例中,将非透明桥接器修改成包括根据本描述的写入栅栏目标逻辑。在图10A-10D的实施例中,将I/O端口330b(图3)修改成包括根据本描述的写入栅栏目标逻辑,如图10A-10D的写入栅栏I/O端口330b1所指示。因此,写入栅栏I/O端口330b1配置成识别具有修改成指示根据本描述的写入栅栏标志1124的报头1110的写入描述符1120(图11)。具有修改成指示写入栅栏标志1124的报头1110的写入描述符1120可由诸如例如适当地修改成具有根据本描述的写入栅栏源逻辑的I/O端口300a(图3)的源的组件发出。
因此,一旦如来自另一个节点或来自另一个计算机部分的具有修改成指示写入栅栏标志的报头的写入描述符所指示检测到写入栅栏标志,便通过远程写入栅栏I/O端口330b1缓冲所有随后接收的写入操作,直到I/O端口330b1接收到已经对目标存储器成功完成之前隔开的写入操作的确认。
在该示例中,如图10A所示,在远程节点B接收这四个写入操作write0、write1、write2、write3之后,远程节点B接收写入日志写入操作journalwrite3。因此,由于检测到写入操作write3的写入描述符的写入栅栏标志,所以在远程节点B在写入操作write3的写入描述符之后接收写入日志写入操作journalwrite3之后,如图10B所示,通过写入栅栏I/O端口330b1缓冲写入日志写入操作journalwrite3,而不是一在接收后便通过远程节点B执行。
在该实施例中,当远程写入栅栏I/O端口330b1的写入栅栏目标逻辑将写入操作write3的写入描述符的报头部分1124识别为是写入栅栏标志时,远程写入栅栏I/O端口330b1的写入栅栏目标逻辑在如图12A所指示的远程操作日志1200的写入操作write3的条目的写入栅栏标志字段中对此做出指示。因此,远程写入栅栏I/O端口330b1的写入栅栏目标逻辑开始对承载写入栅栏标志的写入操作write3以及对日志1200的之前几个写入操作(在该示例中是前三个写入操作write0-write2)实施写入栅栏。
这里也一样,取决于特定应用,可利用各种技术来确定即将由特定写入栅栏标志隔开的特定写入操作。例如,可将即将由写入操作write3的写入栅栏标志隔开的写入操作标识为是承载写入栅栏标志报头的写入描述符的写入操作以及在接收写入栅栏标志之前以及在接收在写入操作write3的写入栅栏标志之前的上一个写入栅栏标志之后启动的写入操作。其它技术可包括在写入描述符的写入栅栏标志报头中标识即将隔开的写入操作。将明白,取决于特定应用,可利用其它技术。
图12B指示在如每个隔开的写入操作write0-write3的确认标签ID字段中存在条目所指示所有隔开的写入操作均已确认完成之后远程操作日志1200的状态。尽管写入操作并非按照它们的原始顺序次序完成,但是所有隔开的写入操作write0-write3都已完成,并且因此写入栅栏实施操作可终止,直到接收到下一个写入栅栏标志。因此,可接着启动在等待写入栅栏实施终止时由远程写入栅栏I/O端口330b1缓冲的所有写入操作。因此,如图10D中所指示,允许写入日志写入操作journalwrite3继续进行。因此,确保了由写入日志写入操作journalwrite3在写入日志364b中建立的条目的准确性。因此,如有需要,可安全地依靠由写入日志写入操作journalwrite3在写入日志364b中建立的指示写入操作write0-write3完成的条目。
图13A和13B描绘根据本描述的写入栅栏目标逻辑的操作的实施例的示例。例如,远程节点B的组件(例如,远程写入栅栏桥接器340b或写入栅栏I/O端口330b1)可配置成执行这些操作。将明白,多处理器计算机系统的其它组件也可配置成执行写入栅栏目标逻辑的操作。还将明白,单处理器计算机系统的组件也可配置成执行写入栅栏目标逻辑的操作。
在图13A的示例中,做出关于写入栅栏目标逻辑是否接收到(框1300)由诸如另一个节点或另一个组件的源发出的诸如写入操作描述符的写入操作的判定。一旦接收到(框1300)由源发出的写入操作,做出关于是否存在与接收的写入操作相关联的写入栅栏标志的判定(框1314)。可通过接收的具有指向例如特殊目标地址的目标地址的写入操作来检测该写入栅栏标志。
如果确定(框1314)存在与接收的写入操作相关联的写入栅栏标志,那么启动写入栅栏实施,其中该逻辑等待(框1328)所有之前的写入操作完成。写入栅栏目标逻辑返回等待接收(框1300)另一个写入操作。
反之,如果确定(框1314)不存在与接收的写入操作相关联的写入栅栏标志,那么允许发出(框1330)接收的写入操作,其中将接收的写入操作的写入数据写入到目标的存储器。写入栅栏目标逻辑返回等待接收(1300)另一个写入操作。
在图13A的示例中,如果确定(框1300)接收的操作是读取操作而不是写入操作,那么将读取操作视为是写入栅栏标志。因此,启动写入栅栏实施,其中该逻辑等待(框1340)所有之前的写入操作完成。随后允许发出(框1350)接收的读取操作,并且写入栅栏目标逻辑返回等待接收(1300)另一个写入操作。
图13A的示例涉及一实施例,其中可通过源发出指向指定识别为是写入栅栏标志目标地址的目标地址的写入操作而指示写入栅栏标志。图13B涉及另一个实施例,其中源可以用另一种方式指示写入栅栏标志。
同样地,在图13B的示例中,做出关于写入栅栏目标逻辑是否接收到(框1300)由诸如另一个节点或另一个组件的源发出的诸如写入操作描述符的写入操作的判定。一旦接收到(框1300)由源发出的写入操作,做出关于是否存在与接收的写入操作相关联的写入栅栏标志(框1314)的判定。可通过接收的具有包括例如写入栅栏标志的报头的写入操作来检测该写入栅栏标志。
如果确定(框1314)存在与接收的写入操作相关联的写入栅栏标志,那么启动写入栅栏实施,其中该逻辑等待(框1328)所有之前的写入操作完成。另外,允许发出(1330)接收的写入操作,其中将接收的写入操作的写入数据写入到目标的存储器。反之,如果确定(框1314)不存在与接收的写入操作相关联的写入栅栏标志,那么不启动写入栅栏实施,并且允许发出(1330)接收的写入操作,其中将接收的写入操作的写入数据写入到目标的存储器。写入栅栏目标逻辑返回等待接收(1300)另一个写入操作。
同样地,在图13B的示例中,如果确定(框1300)接收的操作是读取操作而不是写入操作,那么将读取操作视为是写入栅栏标志。因此,启动写入栅栏实施,其中该逻辑等待(框1340)所有之前的写入操作完成。随后允许发出(框1350)接收的读取操作,并且写入栅栏目标逻辑返回等待接收(1300)另一个写入操作。
将明白,远程节点B或其它目标的组件(例如,远程写入栅栏桥接器340b或写入栅栏I/O端口330b1)可配置成具有写入栅栏源逻辑以及写入栅栏目标逻辑,以使得远程节点的组件也可执行写入栅栏源逻辑的操作。反之,将明白,本地节点A或其它源的组件(例如,写入栅栏桥接器340a或写入栅栏I/O端口330a)可配置成具有写入栅栏目标逻辑以及写入栅栏源逻辑,以使得本地节点的组件也可执行写入栅栏目标逻辑的操作。还将明白,单处理器计算机系统的组件(例如,桥接器或I/O端口)可配置成具有写入栅栏源逻辑以及写入栅栏目标逻辑中的一个或两个,以使得单处理器计算机的组件可执行根据本描述的写入栅栏源逻辑和写入栅栏目标逻辑中的一个或两个的操作。
在图3的实施例中,写入栅栏源逻辑110a(图2)和写入栅栏目标逻辑110b的方面可分别在修改成执行根据本描述的写入栅栏标志操作的相应I/O复合体324a、324b的非透明桥接器340a、340b(图3)中实现。如前所述,将明白,根据本描述的写入栅栏标志逻辑可在计算机系统的一部分或多处理器计算机的节点的其它组件中实现,例如在I/O端口330a、330b、DMA控制器334a、334b、CPU核314a、314b与存储器控制器320a、320b(图3)中实现。
图14示出一个示例,其中在与CPU核314a集成在相同衬底上的写入栅栏DMA控制器1434a中实现用于生成根据本描述的写入栅栏标志的写入栅栏源逻辑110a(图2)的至少一部分。尽管结合集成在CPU中的DMA控制器或引擎描述实施例,但是将明白,包括写入栅栏源逻辑110a在内的根据本描述的写入栅栏逻辑可在包括集成在CPU中的这些数据移动加速器、控制器或引擎的其它数据传输或数据移动加速器中实现。在一个实施例中,诸如DMA控制器的数据传输加速器控制着数据经由DMA总线主控器独立于CPU核314a、314b和用于将这些核编程的相关联的软件经过输入/输出路径流到存储器。在一个实施例中,源节点(在该实施例中是本地节点A)的写入栅栏DMA控制器1434a可通过到目标的地址空间内的指定地址的特殊写入操作向远程或目标节点B指示写入栅栏标志。在一个实施例中,指定地址的值可以是可通过例如设置DMA控制器的参数编程的值。在一个实施例中,通过数据传输加速器独立于CPU核314a、314b与用于将这些核编程的相关联的软件生成写入栅栏标志。
例如,可生成与指向指定地址的DMA传输相关联的最终写入操作并将它发到目标或远程节点以便指示写入栅栏标志。因此,可在目标的写入栅栏标志桥接器1440b中实现的写入栅栏目标逻辑110b(图2)配置成将到该指定地址的写入识别为是写入栅栏标志并采取合适措施以便确保在完成写入栅栏标志之后的存储器写入操作之前,完成与写入栅栏标志相关联的之前投递的存储器写入操作。因此,每个写入栅栏标志有效地充当写入提交位或写入提交命令,并允许接收方目标或远程节点确保在对它的系统存储器完成在写入栅栏标志之前接收的所有之前写入之后再发出另一个写入操作。
在一个实施例中,可简单地丢弃以指定地址为目标的写入数据,因为检测到以指定地址为目标的写入操作本身便向目标或远程节点B提了写入栅栏标志。将明白,在其它实施例中,写入数据的值可提供另外的特征,或者可用于指示写入栅栏标志。
在另一个实施例中,源节点的写入栅栏DMA控制器1434a可通过在与I/O请求的最后一个DMA描述符相关联的最终写入操作中设置与最后一个写入操作相关联的属性来向远程或目标节点B指示写入栅栏标志。将明白,诸如写入描述符的写入操作的其它部分可修改成指示写入栅栏标志。这里也一样,在一个实施例中,通过数据传输加速器独立于CPU核314a、314b与用于将这些核编程的相关联软件生成写入栅栏标志属性。
在一个实施例中,可通过相关联的DMA驱动器来设置I/O请求的最后一个描述符中的属性,以便向目标或远程节点发信号通知写入栅栏标志。可采用DMA驱动器来配置和操作写入栅栏DMA控制器1434a。在采用具有指定写入栅栏标志的属性集合的修改后的写入操作的实施例中,目标或远程节点不向它的系统存储器发出最后的修改后的写入操作的写入操作,直到自从上一个写入栅栏标志以来到系统存储器的所有之前写入都完成。在一个实施例中,可在多个衬底上制造图中的本地节点A和远程节点B。
图15A描绘根据本公开的一个实施例采用写入栅栏标志逻辑的源节点(例如,本地节点A(图14))的操作的示例。在该示例中,从主机(例如,图2的主机120a)接收(框1504)写入请求形式的一个或多个I/O请求。一旦从主机接收写入请求,源节点便将每个接收的写入请求的参数存储(框1508,图15A)在它自己的本地系统存储器300a中。写入请求的参数包括请求的写入数据(或可从其获得写入数据的这个或这些地址)和写入数据的目的地,目的地通常是存储设备,例如存储设备114(图2)。图16A示出从主机接收并存储在本地存储器300a中的写入请求的示例,它们由写入请求(或写入请求的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3表示。存储在源节点的本地存储器300a中的写入请求(或写入请求的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3的特定格式可以是与主机和源节点之间的通信路径118(图2)的特定传输协议兼容的格式。
如下文所解释,在该示例中,源节点还将诸如写入数据或写入数据地址的写入请求参数镜像到存储控制器的目标节点(例如,远程节点B(图14))的系统存储器300b。一旦在本地/源节点A和远程/目标节点B两者的系统存储器300a、300b(图2)中安全地写入写入请求参数,本地节点A便可将I/O请求提交给主机,即,向请求主机120a、120b…120n(图2)报告写入请求已完成,尽管到存储设备114的写入数据的实际写入(提交)可能尚未完成。这种安排可增加整体效率,因为到存储设备114的写入可能比到系统存储器300a、300b的写入更慢地完成。在发生阻止到存储设备114的写入数据的实际写入完成的故障(例如,本地节点A的故障)的情况下,存储控制器100的远程节点B可访问它的系统存储器300b并完成到存储设备114的写入操作。
因此,源节点的写入栅栏镜像逻辑1602从本地存储器300a(图16A)读取(框1524,图15A)写入请求(或它们的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3,并且基于从存储器读取的这些写入请求(或它们的参数),源节点的写入栅栏镜像逻辑1602(图16A)生成(框1528,图15A)写入操作,如由写入操作Write0、Write1、Write2、Write3表示的写入操作链所指示。
在该示例中,与源节点(例如,本地节点A)的CPU核314a集成在相同衬底上的I/O复合体1424a(图14)的组件利用“描述符”数据结构来通信即将由远程节点B执行的操作。因此,在该示例中,从存储器读取写入请求操作WriteReq0、WriteReq1、WriteReq2、WriteReq3,并且基于从存储器读取的写入请求,源节点的写入栅栏镜像逻辑1602生成写入描述符形式的对应写入操作,如写入描述符链Write0、Write1、Write2、Write3所表示。每个写入描述符Write0、Write1、Write2、Write3将即将执行的操作标识为是写入操作,提即将写入的写入数据,并标识即将写入写入数据的这个或这些目标地址。写入描述符还可提在本文称为“标签ID”的唯一标识号以便标识写入操作。
I/O复合体1424a(图14)的组件(例如,写入栅栏桥接器1440a)将写入描述符Write0、Write1、Write2、Write3的序列打包成寻址到目标节点的端点目的地(例如,远程节点B的写入栅栏桥接器1440b)的分组的序列内的有效负载。如图16A所示,源节点的写入栅栏桥接器1440a通过互连节点的I/O结构向目标节点发出(框1528,图15A)携带写入描述符Write0、Write1、Write2、Write3的分组。目标节点的写入栅栏桥接器1440b(图14)汇集从源节点接收的分组,并从接收的分组拆解每个写入描述符。然后,通过目标节点启动由拆解的写入描述符标识的写入操作。写入栅栏桥接器1440a、1440b可包括例如非透明桥接器(NTB)逻辑。将明白,取决于特定应用,可利用其它传输格式来监控节点之间的写入操作。
作出关于是否接收到I/O请求的最终写入操作的判定(框1542,图15A)。如果是,那么写入栅栏镜像逻辑1602(图16A)的写入栅栏源逻辑110a生成(框1556,图15A)由图16A中的写入栅栏标志WFFlagWrite3表示的写入栅栏标志。在一个实施例中,响应于接收到I/O请求的最终写入操作的判定,独立于CPU核314a、314b和用于将这些核编程的相关联软件,写入栅栏源逻辑110a自动生成由写入栅栏标志WFFlagWrite3表示的写入栅栏标志。源节点的写入栅栏桥接器1440a以与上文针对写入描述符描述的方式类似的方式通过如图16A所示的互连节点的I/O结构向目标节点发出(框1556,图15A)携带写入栅栏标志WFFlagWrite3的分组。
在一个实施例中,如上所述,源或本地节点A的写入栅栏源逻辑110a可通过到目标的地址空间内的指定地址的特殊写入操作来向目标或远程节点B指示写入栅栏标志。在该示例中,写入栅栏标志是描述以远程节点标志地址空间720(图7)为目标的写入操作的写入描述符WFFlagWrite3的形式,其中通过目标节点将远程节点标志地址空间720转换到目标节点存储器地址空间的远程节点标志地址空间724b。如上所述,目标的写入栅栏标志桥接器1440b的写入栅栏目标逻辑配置成将到该指定地址的写入识别为是写入栅栏标志并采取合适措施,以确保在完成写入栅栏标志之后的存储器写入操作之前,完成与写入栅栏标志相关联的存储器写入操作。
在另一个实施例中,源或本地节点A的写入栅栏镜像逻辑1602(图16A)的写入栅栏源逻辑110a可通过将写入描述符的报头修改成向目标或远程节点B指示写入栅栏标志来生成(框1556,图15A)写入栅栏标志。在该实施例中,独立于CPU核314a、314b和用于将这些核编程的相关联软件生成写入栅栏标志。例如,如图11所示,将写入操作write3的描述符1120的报头1110修改成在报头1110的一部分中包含表示写入栅栏标志1124的属性数据。因此,目标或远程节点的写入栅栏I/O端口可配置成识别具有修改成指示根据本描述的写入栅栏标志1124的报头1110的写入描述符1120(图11)。因此,如上所述,目标或远程节点B的写入栅栏目标逻辑配置成识别具有修改成指示写入栅栏标志1124的报头1110的属性的写入描述符1120(图11)并采取合适措施,以便确保在完成写入栅栏标志之后的存储器写入操作之前,完成与写入栅栏标志相关联的存储器写入操作。将明白,其它格式的远程操作描述符或消息可具有其它修改以便向诸如另一个节点的目标指示写入栅栏标志。
另外,通过源节点生成(框1560,图15A)日志写入,并且如日志写入JournalWrite3所表示,将它存储在如图16A所示的具有标志Flag3的源节点的本地存储器300a(图16A)中。源节点的写入栅栏镜像逻辑1602从本地存储器300a(图16A)读取(框1570,图15A)读取日志写入操作。基于读取日志写入操作,写入栅栏镜像逻辑1602生成(框1574,图15A)由图16A中的日志写入journalwrite3表示的日志写入操作。源节点的写入栅栏桥接器1440a以与上文针对写入描述符和写入栅栏标志描述的方式类似的方式通过如图16A所示的互连节点的I/O结构向目标节点发出(框1574,图15A)携带日志写入journalwrite3的分组。如上所述,写入日志写入操作JournalWrite3是由目标或远程节点B执行的写入操作,它写入到写入完成数据结构,即远程节点的远程写入日志,以便指示由写入栅栏标志隔开的写入操作完成。
写入栅栏镜像逻辑1602可向主机提交(框1576)I/O请求,即,告知主机I/O请求已完成,尽管尚未将它们写入到存储设备。在一个实施例中,写入栅栏镜像逻辑1602可向源或本地节点的CPU核314a(图14)发信号通知该完成。转而,在源或本地节点到存储设备的提交操作失败的情况下,CPU核314a可向请求写入操作的主机指示已经将写入操作提交给(即,成功镜像到)目标或远程节点。因此,在将向主机系统提交写入操作之前,源或本地节点可通过利用本文中描述的写入栅栏标志并通过在将写入请求的写入数据写入到目标或远程节点的系统存储器中之后对写入日志随后进行更新而保证实际上以有序方式将写入数据和写入日志写入到镜像节点的存储器。
取决于特定应用,图15A的操作可由源节点的CPU 310a(图3)、1410(图14)的各种组件来执行,包括:CPU核314a(图3、14);或I/O复合体324a(图3)的组件,例如可在DMA控制器334a或写入栅栏桥接器340a中实现的写入栅栏镜像逻辑1602(图16A)和写入栅栏源逻辑110a;或I/O复合体1424a(图14)的其它组件;或其各种组合。
图15B描绘根据本公开的另一个实施例采用写入栅栏标志逻辑的源节点(例如,本地节点A(图14))的操作的另一个示例。在该示例中,以与上文结合图15A描述的方式类似的方式从主机(例如,图2的主机120a)接收(框1504)写入请求形式的一个或多个I/O请求。因此,一旦从主机接收写入请求,源节点便将每个接收的写入请求的参数存储(框1508,图15B)在它自己的本地系统存储器300a中。写入请求的参数包括请求的写入数据(或可从其获得写入数据的这个或这些地址)和写入数据的目的地,目的地通常是存储设备,例如存储设备114(图2)。图16B示出从主机接收并存储在本地存储器300a中的写入请求的示例,它们由写入请求(或写入请求的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3表示。同样地,存储在源节点的本地存储器300a中的写入请求(或写入请求的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3的特定格式可以是与主机和源节点之间的通信路径118(图2)的特定传输协议兼容的格式。
源节点从本地存储器300a(图16B)读取(框1524,图15B)写入请求(或它们的参数)WriteReq0、WriteReq1、WriteReq2、WriteReq3,并且基于从存储器读取的这些写入请求(或它们的参数),源节点生成(框1528,图15B)写入操作,如由写入操作Write0、Write1、Write2、Write3(图16B)表示的写入操作链所指示。
在该示例中,源节点(例如,本地节点A)的I/O复合体1424a(图14)的组件利用“描述符”数据结构来通信即将通过远程节点B执行的操作。在该示例中,源节点的写入栅栏DMA控制器1434a(图14)的写入栅栏DMA逻辑1604的生成器逻辑1608(图16B)配置成从存储器300a读取写入请求WriteReq0、WriteReq1、WriteReq2、WriteReq3,并且基于从存储器读取的写入请求生成写入描述符形式的写入操作Write0、Write1、Write2、Write3。每个写入描述符Write0、Write1、Write2、Write3将即将执行的操作标识为是写入操作,提即将写入的写入数据,并标识即将写入写入数据的这个或这些目标地址。写入描述符还可提在本文中称为“标签ID”的唯一标识号以便标识写入操作。
I/O复合体1424a(图14)的组件(例如,写入栅栏桥接器1440a)将写入描述符Write0、Write1、Write2、Write3的序列打包成寻址到目标节点的端点目的地(例如,远程节点B的写入栅栏桥接器1440b)的分组的序列内的有效负载。源节点的写入栅栏桥接器1440a通过如图16B所示的互连节点的I/O结构向目标节点发出(框1528,图15B)携带写入描述符Write0、Write1、Write2、Write3的分组。目标节点的写入栅栏桥接器1440b汇集从源节点接收的分组,并从接收的分组拆解每个写入描述符。然后,通过目标节点启动由拆解的写入描述符标识的写入操作。写入栅栏桥接器1440a、1440b可包括例如非透明桥接器(NTB)逻辑。将明白,取决于特定应用,可利用其它格式来在节点之间镜像写入操作。
作出关于是否将接收的写入请求的写入数据提交给存储设备的判定(框1542,图15B)。在该实施例中,源节点的写入栅栏DMA控制器1434a(图14)的写入栅栏DMA逻辑1604(图16B)配置成确定是否要将接收的写入请求的写入数据提交给存储设备。该实施例的写入栅栏DMA逻辑1604(图16B)包括检测器逻辑1612,它配置成从存储器300a检查写入请求WriteReq0、WriteReq1、WriteReq2、WriteReq3,并确定是否在写入请求WriteReq0、WriteReq1、WriteReq2、WriteReq3之一中设置了I/O提交位标志。在该示例中,在写入请求WriteReq3中检测到I/O提交位标志。
例如,如图17所示,诸如写入请求WriteReq3的写入请求1720的报头1710在报头1710的一部分中包括表示I/O提交标志1724的控制位数据。因此,源或本地节点的写入栅栏DMA控制器1434a(图14)的检测器逻辑1612可配置成识别具有修改成指示根据本描述的I/O提交标志1724的报头1710的写入请求1720(图17)。
因此,响应于在写入请求WriteReq3中检测到I/O提交标志1724,DMA生成器逻辑1608(图16B)生成(框1556,图15B)由图16B中的写入栅栏标志WFFlagWrite3表示的写入栅栏标志。在一个实施例中,响应于在写入请求WriteReq3中检测到I/O提交标志1724,写入栅栏源逻辑110a自动生成由写入栅栏标志WFFlagWrite3表示的写入栅栏标志,从而提接收到I/O请求的最终写入操作的判定。在该实施例中,独立于CPU核314a、314b和用于将这些核编程的相关联软件生成写入栅栏标志。源节点的写入栅栏桥接器1440a以与上文针对写入描述符描述的方式类似的方式通过如图16B所示的互连节点的I/O结构向目标节点发出(框1556,图15B)携带写入栅栏标志WFFlagWrite3的分组。
将明白,在该实施例中,写入栅栏DMA逻辑1604(图16B)的检测器逻辑1612配置成检测(框1542,图15B)在诸如WriteReq3的写入请求中设置了I/O提交位标志,并且作为响应,DMA生成器逻辑1608(图16B)自动生成由图16B中的写入栅栏标志WFFlagWrite3表示的写入栅栏标志,从而消除写入栅栏标志生成以及由源或主机的通用处理器核进行的存储器存储和读取操作。以此方式,可增强用于将写入操作镜像到远程节点的镜像操作的效率。
响应于写入栅栏DMA逻辑1604(图16B)的检测器逻辑1612检测到(框1542,图15B)在诸如WriteReq3的写入请求中设置了I/O提交位标志,DMA生成器逻辑1608(图16B)还自动生成由图16B中的日志写入journalwrite3表示的日志写入操作。将明白,在该实施例中,通过由DMA生成器逻辑1608(图16B)响应于写入栅栏DMA逻辑1604(图16B)的检测器逻辑1612进行的I/O提交标志检测自动生成日志写入操作,在图15B的实施例中消除了框1560(图15A)的日志写入操作生成和存储器存储操作以及框1570的日志写入操作存储器读取操作。
源节点的写入栅栏桥接器1440a以与上文针对写入描述符和写入栅栏标志描述的方式类似的方式通过如图16B所示的互连节点的I/O结构向目标节点发出(框1574,图15B)携带日志写入journalwrite3的分组。如上所述,写入日志写入操作JournalWrite3是由目标或远程节点B执行的写入操作,它写入到写入完成数据结构,即远程节点的远程写入日志,以便指示由写入栅栏标志隔开的写入操作完成。
取决于特定应用,图15B的操作可由源节点的CPU 310a(图3)、1410(图14)的各种组件来执行,包括:CPU核314a(图3、14);或I/O复合体324a(图3)的组件,例如DMA控制器334a或写入栅栏桥接器340a;或I/O复合体1424a(图14)的组件,例如写入栅栏DMA控制器1434a(图14)的写入栅栏DMA逻辑1604(图16B);或其各种组合。
示例
以下示例涉及另外的实施例。
示例1是一种用于与源一起使用的目标的设备,源对目标的存储器发出写入操作,该设备包括I/O端口和目标的逻辑,该逻辑配置成:在I/O端口处接收由源发出以便在存储器中写入数据的第一多个写入操作、与第一多个写入操作的发出相关联的由源发出的标志,以及由源发出以便在存储器中写入数据的第二多个写入操作;检测与第一多个写入操作的发出相关联的由源发出的标志;以及响应于检测到该标志,确保在完成第二多个写入操作中的任何写入操作之前,在存储器中完成第一多个写入操作。
在示例2中,示例1-10(本示例除外)的主题可以可选地包括缓冲器,并且其中目标的逻辑进一步配置成在缓冲器中缓冲第二多个写入操作的写入操作,直到在存储器中完成第一多个写入操作为止。
在示例3中,示例1-10(本示例除外)的主题可以可选地包括,其中目标的逻辑配置成接收标志写入操作,该标志写入操作具有目标中的指示该标志写入操作是标志的目标地址,并且其中目标的逻辑配置成通过检测标志写入操作的目标地址指示标志写入操作是标志来检测标志。
在示例4中,示例1-10(本示例除外)的主题可以可选地包括,其中目标的逻辑配置成在I/O端口处接收由源发出的描述第一多个写入操作的写入操作的写入描述符,其中写入描述符包括指示该标志的报头,并且其中目标的逻辑配置成通过检测写入描述符的标志报头来检测该标志。
在示例5中,示例1-10(本示例除外)的主题可以可选地包括,其中I/O装置是非透明桥接器,它具有配置成将由源发出的写入操作的目标地址从源的地址空间转换到目标的地址空间的地址转换逻辑。
在示例6中,示例1-10(本示例除外)的主题可以可选地包括,其中目标包括微处理器,并且非透明桥接器与目标的微处理器集成。
在示例7中,示例1-10(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中第二多个写入操作包括用于指示第一多个写入指令完成的到写入完成数据结构的写入完成数据结构写入操作,并且其中目标的逻辑配置成确保响应于检测到标志,在完成第二多个写入操作中的写入完成数据结构写入操作之前,在存储器中完成第一多个写入操作。
在示例8中,示例1-10(本示例除外)的主题可以可选地包括,其中由源发出的写入操作具有标签标识(ID),其中目标具有远程操作数据结构,并且其中目标的逻辑配置成在远程操作数据结构中记录接收的写入操作的标签ID,并利用远程操作数据结构来标识在完成第二多个写入操作中的任何写入操作之前,在标志之前接收的哪些写入操作将在存储器中完成。
在示例9中,示例1-10(本示例除外)的主题可以可选地包括,其中目标具有发出确认的存储器控制器,确认包括由存储器控制器完成的写入操作的标签ID,并且其中目标的逻辑配置成接收由存储器控制器发出的写入操作确认并在远程操作数据结构中记录每个接收的写入操作确认的标签ID以及相关联的写入操作的标签ID,并且其中目标的逻辑配置成利用远程操作数据结构来标识完成了第一多个写入操作中的哪些写入操作。
在示例10中,示例1-10(本示例除外)的主题可以可选地包括,其中目标是与存储设备和主机一起使用,以便响应于主机的I/O请求而对存储设备执行I/O操作的多处理器存储控制器的远程节点。
示例11是一种用于与显示器一起使用的计算系统,它包括源和目标,源具有配置成发出写入操作和标志的逻辑,目标包括存储器、配置成在存储器中写入数据以及从存储器读取数据的处理器、配置成显示由存储器中的数据表示的信息的视频控制器、I/O端口以及目标的逻辑,目标的逻辑配置成:在I/O端口处接收由源发出以便在存储器中写入数据的第一多个写入操作、与第一多个写入操作的发出关联的由源发出的标志、以及由源发出以便在存储器中写入数据的第二多个写入操作;检测与第一多个写入操作的发出相关联的由源发出的标志;以及响应于检测到该标志,确保在完成第二多个写入操作中的任何写入操作之前,在存储器中完成第一多个写入操作。
在示例12中,示例11-20(本示例除外)的主题可以可选地包括,其中目标还包括缓冲器,并且其中目标的逻辑进一步配置成在缓冲器中缓冲第二多个写入操作的写入操作,直到在存储器中完成第一多个写入操作为止。
在示例13中,示例11-20(本示例除外)的主题可以可选地包括,其中目标的逻辑配置成接收标志写入操作,该标志写入操作具有目标中的指示标志写入操作是标志的目标地址,并且其中目标的逻辑配置成通过检测标志写入操作的目标地址指示标志写入操作是标志来检测该标志。
在示例14中,示例11-20(本示例除外)的主题可以可选地包括,其中目标的逻辑配置成在I/O端口处接收由源发出的描述第一多个写入操作的写入操作的写入描述符,其中写入描述符包括指示该标志的报头,并且其中目标的逻辑配置成通过检测写入描述符的标志报头来检测该标志。
在示例15中,示例11-20(本示例除外)的主题可以可选地包括,其中目标还包括非透明桥接器,该非透明桥接器具有所述I/O端口、目标的所述逻辑、以及配置成将由源发出的写入操作的目标地址从源的地址空间转换到目标的地址空间的地址转换逻辑。
在示例16中,示例11-20(本示例除外)的主题可以可选地包括,其中目标包括具有所述处理器的微处理器,并且非透明桥接器与目标的微处理器集成。
在示例17中,示例11-20(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中第二多个写入操作包括用于指示第一多个写入指令完成的到写入完成数据结构的写入完成数据结构写入操作,并且其中目标的逻辑配置成确保响应于检测到该标志,在完成第二多个写入操作中的写入完成数据结构写入操作之前,在存储器中完成第一多个写入操作。
在示例18中,示例11-20(本示例除外)的主题可以可选地包括,其中由源发出的写入操作具有标签标识(ID),其中目标具有远程操作数据结构,并且其中目标的逻辑配置成在远程操作数据结构中记录接收的写入操作的标签ID,并利用远程操作数据结构来标识在完成第二多个写入操作中的任何写入操作之前,在标志之前接收的哪些写入操作将在存储器中完成。
在示例19中,示例11-20(本示例除外)的主题可以可选地包括,其中目标具有发出确认的存储器控制器,确认包括由存储器控制器完成的写入操作的标签ID,并且其中目标的逻辑配置成接收由存储器控制器发出的写入操作确认,并在远程操作数据结构中记录每个接收的写入操作确认的标签ID以及相关联的写入操作的标签ID,并且其中目标的逻辑配置成利用远程操作数据结构来标识完成了第一多个写入操作中的哪些写入操作。
在示例20中,示例12-20(本示例除外)的主题可以可选地包括多处理器存储控制器,它与存储设备和主机一起使用,以便响应于主机的I/O请求而对存储设备执行I/O操作,其中目标是该多处理器存储控制器的远程节点。
示例21是一种管理数据写入操作的方法,它包括目标的逻辑执行操作,这些操作包括:在目标的I/O端口处接收由源发出以便在目标的存储器中写入数据的第一多个写入操作、与第一多个写入操作的发出相关联的由源发出的标志、以及由源发出以便在存储器中写入数据的第二多个写入操作;检测与第一多个写入操作的发出相关联的由源发出的标志;以及响应于检测到该标志,确保在完成第二多个写入操作中的任何写入操作之前,在存储器中完成第一多个写入操作。
在示例22中,示例21-30(本示例除外)的主题可以可选地包括,其中由目标的逻辑执行的操作还包括在目标的缓冲器中缓冲第二多个写入操作的写入操作,直到在存储器中完成第一多个写入操作为止。
在示例23中,示例21-30(本示例除外)的主题可以可选地包括,其中由目标的逻辑执行的操作还包括在I/O端口处接收标志写入操作,该标志写入操作具有目标中的指示标志写入操作是标志的目标地址,并且其中由目标的逻辑执行的操作还包括通过检测标志写入操作的目标地址指示标志写入操作是标志来检测该标志。
在示例24中,示例21-30(本示例除外)的主题可以可选地包括,其中由目标的逻辑执行的操作还包括在I/O端口处接收由源发出的描述第一多个写入操作的写入操作的写入描述符,其中写入描述符包括指示该标志的报头,并且其中由目标的逻辑执行的操作还包括通过检测写入描述符的标志报头来检测该标志。
在示例25中,示例21-30(本示例除外)的主题可以可选地包括,其中目标还包括具有所述I/O端口、目标的所述逻辑和地址转换逻辑的非透明桥接器,该方法还包括通过地址转换逻辑将由源发出的写入操作的目标地址从源的地址空间转换到目标的地址空间。
在示例26中,示例21-30(本示例除外)的主题可以可选地包括,其中目标包括具有所述处理器的微处理器,并且非透明桥接器与目标的微处理器集成。
在示例27中,示例21-30(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中第二多个写入操作包括用于指示第一多个写入操作完成的到写入完成数据结构的写入完成数据结构写入操作,并且其中由目标的逻辑执行的操作还包括确保响应于检测到该标志,在完成第二多个写入操作中的写入完成数据结构写入操作之前,在存储器中完成第一多个写入操作。
在示例28中,示例21-30(本示例除外)的主题可以可选地包括,其中由源发出的写入操作具有标签标识(ID),其中目标具有远程操作数据结构,并且其中由目标的逻辑执行的操作还包括在远程操作数据结构中记录接收的写入操作的标签ID,并利用远程操作数据结构来标识在完成第二多个写入操作中的任何写入操作之前,在标志之前接收的哪些写入操作将在存储器中完成。
在示例29中,示例21-30(本示例除外)的主题可以可选地包括,其中目标具有发出确认的存储器控制器,确认包括由存储器控制器完成的写入操作的标签ID,并且其中由目标的逻辑执行的操作还包括:接收由存储器控制器发出的写入操作确认,并在远程操作数据结构中记录每个接收的写入操作确认的标签ID以及相关联的写入操作的标签ID,并且利用远程操作数据结构来标识完成了第一多个写入操作中的哪些写入操作。
在示例30中,示例21-30(本示例除外)的主题可以可选地包括用于响应于主机的I/O请求而对存储设备执行I/O操作的多处理器存储控制器,其中目标是多处理器存储控制器的远程节点。
示例31是一种用于与目标一起使用的源的设备,目标接收对目标的存储器的写入操作,该设备包括:
输入/输出(I/O)端口;以及
具有源的源逻辑的数据传输加速器,源的源逻辑配置成:
向I/O端口发出在目标存储器中写入数据的第一多个写入操作、与第一多个写入操作相关联的写入栅栏标志、以及在目标存储器中写入数据的第二多个写入操作;
其中通过源逻辑配置写入栅栏标志以便通过目标进行检测,从而确保在完成第二多个写入操作中的任何写入操作之前,由目标在目标存储器中完成第一多个写入操作。
在示例32中,示例31-40(本示例除外)的主题可以可选地包括,其中通过源逻辑配置写入栅栏标志以便由目标检测为具有目标中的目标地址的栅栏写入操作,该目标地址向目标指示标志写入操作是写入栅栏标志。
在示例33中,示例31-40(本示例除外)的主题可以可选地包括,其中通过源逻辑配置写入栅栏标志以便由目标检测为标志写入描述符,该标志写入描述符包括具有标志写入描述符中的属性的报头,该报头属性向目标指示标志写入描述符是写入栅栏标志。
在示例34中,示例31-40(本示例除外)的主题可以可选地包括,其中源的数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在DMA控制器中实现源逻辑。
在示例35中,示例31-40(本示例除外)的主题可以可选地包括,其中源包括中央处理单元(CPU),并且DMA控制器和I/O端口与源的CPU集成。
在示例36中,示例31-40(本示例除外)的主题可以可选地包括与主机一起使用,其中源逻辑进一步配置成从主机接收写入请求,并响应于所述接收的写入请求生成在目标存储器中写入数据的所述第一多个写入操作。
在示例37中,示例31-40(本示例除外)的主题可以可选地包括,其中接收的写入请求包括I/O提交标志,并且其中源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在DMA控制器内实现的所述源逻辑具有配置成检测接收的写入请求中的I/O提交标志的检测器,以及配置成响应于所述I/O提交标志检测而生成所述写入栅栏标志的生成器。
在示例38中,示例31-40(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中源的源逻辑进一步配置成在写入栅栏标志之后向I/O端口发出到写入完成数据结构的写入完成数据结构写入操作,以便指示第一多个写入指令完成。
在示例39中,示例31-40(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中所述DMA控制器的所述生成器进一步配置成响应于在所述写入栅栏标志生成之后的所述I/O提交标志检测,而生成到写入完成数据结构的写入完成数据结构写入操作,以便指示第一多个写入操作完成。
在示例40中,示例31-40(本示例除外)的主题可以可选地包括,其中源是多处理器存储控制器的本地节点,并且目标是多处理器存储控制器的远程节点,该多处理器存储控制器与存储设备和主机一起使用,以便响应于主机的I/O请求而对存储设备执行I/O操作。
示例41是一种用于与显示器一起使用的计算系统,它包括目标和源,目标具有目标存储器并具有配置成接收写入操作和写入栅栏标志的逻辑,源包括源存储器、配置成显示由源存储器中的数据表示的信息的视频控制器、输入/输出(I/O)端口以及具有源的源逻辑的数据传输加速器,源的源逻辑配置成向I/O端口发出在目标存储器中写入数据的第一多个写入操作、与第一多个写入操作相关联的写入栅栏标志以及在目标存储器中写入数据的第二多个写入操作;其中通过源逻辑配置写入栅栏标志以便通过目标进行检测,从而确保在完成第二多个写入操作中的任何写入操作之前,由目标在目标存储器中完成第一多个写入操作。
在示例42中,示例41-50(本示例除外)的主题可以可选地包括,其中通过源逻辑配置写入栅栏标志以便由目标检测为标志写入操作,该标志写入操作具有目标中的向目标指示标志写入操作是写入栅栏标志的目标地址。
在示例43中,示例41-50(本示例除外)的主题可以可选地包括,其中通过源逻辑配置写入栅栏标志以便由目标检测为标志写入描述符,该标志写入描述符包括具有标志写入描述符中的属性的报头,该报头属性向目标指示标志写入描述符是写入栅栏标志。
在示例44中,示例41-50(本示例除外)的主题可以可选地包括,其中源的数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在DMA控制器中实现源逻辑。
在示例45中,示例41-50(本示例除外)的主题可以可选地包括,其中源包括中央处理单元(CPU),并且DMA控制器和I/O端口与源的CPU集成。
在示例46中,示例41-50(本示例除外)的主题可以可选地包括与主机一起使用,其中源逻辑进一步配置成从主机接收写入请求,并响应于所述接收的写入请求生成在目标存储器中写入数据的所述第一多个写入操作。
在示例47中,示例41-50(本示例除外)的主题可以可选地包括,其中接收的写入请求包括I/O提交标志,并且其中源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在DMA控制器内实现的所述源逻辑具有配置成检测接收的写入请求中的I/O提交标志的检测器,以及配置成响应于所述I/O提交标志检测而生成所述写入栅栏标志的生成器。
在示例48中,示例41-50(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中源的源逻辑进一步配置成在写入栅栏标志之后向I/O端口发出到写入完成数据结构的写入完成数据结构写入操作,以便指示第一多个写入指令完成。
在示例49中,示例41-50(本示例除外)的主题可以可选地包括,其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中所述DMA控制器的所述生成器进一步配置成响应于在所述写入栅栏标志生成之后的所述I/O提交标志检测,而生成到写入完成数据结构的写入完成数据结构写入操作,以便指示第一多个写入操作完成。
在示例50中,示例41-50(本示例除外)的主题可以可选地包括,其中源是多处理器存储控制器的本地节点,并且目标是多处理器存储控制器的远程节点,该多处理器存储控制器与存储设备和主机一起使用,以便响应于主机的I/O请求而对存储设备执行I/O操作。
示例51是一种管理写入操作的方法,它包括数据传输加速器的源逻辑执行操作,这些操作包括向I/O端口发出在目标的目标存储器中写入数据的第一多个写入操作、与第一多个写入操作相关联的写入栅栏标志以及在目标存储器中写入数据的第二多个写入操作;其中通过源逻辑配置写入栅栏标志以便通过目标进行检测,从而确保在完成第二多个写入操作中的任何写入操作之前,通过目标在目标存储器中完成第一多个写入操作。
在示例52中,示例51-55(本示例除外)的主题可以可选地包括,其中通过源逻辑配置写入栅栏标志以便由目标检测为以下之一:具有目标中的目标地址的标志写入操作,该目标地址向目标指示标志写入操作是写入栅栏标志;以及标志写入描述符,该标志写入描述符包括具有标志写入描述符中的属性的报头,该报头属性向目标指示标志写入描述符是写入栅栏标志。
在示例53中,示例51-55(本示例除外)的主题可以可选地包括,其中源的数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在DMA控制器中实现源逻辑,并且其中源包括中央处理单元(CPU),并且DMA控制器和I/O端口与源的CPU集成。
在示例54中,示例51-55(本示例除外)的主题可以可选地包括,其中源是多处理器存储控制器的本地节点,并且目标是多处理器存储控制器的远程节点,该多处理器存储控制器与存储设备和主机一起使用,其中操作还包括:响应于从主机接收的I/O请求而对存储设备执行I/O操作,I/O请求包括从主机接收的写入请求;以及响应于从主机接收的所述写入请求,生成在目标存储器中写入数据的所述第一多个写入操作。
在示例55中,示例51-55(本示例除外)的主题可以可选地包括,其中从主机接收的写入请求包括I/O提交标志,并且其中源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在DMA控制器内实现的所述源逻辑具有检测器和生成器,其中操作还包括通过检测器检测接收的写入请求中的I/O提交标志以及响应于所述I/O提交标志检测通过生成器生成所述写入栅栏标志;
其中目标具有指示到目标的存储器的写入操作完成的写入完成数据结构,并且其中操作还包括:在所述写入栅栏标志生成之后,通过生成器生成到写入完成数据结构的写入完成数据结构写入操作;并在写入栅栏标志之后向I/O端口发出到写入完成数据结构的写入完成数据结构写入操作以便指示第一多个写入指令完成。
示例56涉及一种包括用于执行如任何前述示例中描述的方法的部件的设备。
描述的操作可利用标准编程和/或工程化技术作为方法、设备或计算机程序产品来实现,以便产生软件、固件、硬件或其任何组合。描述的操作可作为保存在“计算机可读存储介质”中的计算机程序代码来实现,其中处理器可从计算机存储可读介质读取和执行代码。计算机可读存储介质包括以下至少其中之一:电子电路、存储物质、无机材料、有机材料、生物材料、套管、外壳、涂层和硬件。计算机可读存储介质可包括但不限于磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储设备(CD-ROM、DVD、光盘等)、易失性和非易失性存储器装置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等)、固态装置(SSD)等。实现描述的操作的代码还可用在硬件装置(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实现的硬件逻辑来实现。此外,实现描述的操作的代码可以用“传输信号”来实现,其中传输信号可通过空间或通过诸如光纤、铜线等的传输介质传播。用于编码代码或逻辑的传输信号还可包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。可将嵌入在计算机可读存储介质上的程序代码作为传输信号从传送站或计算机传送到接收站或计算机。计算机可读存储介质不仅仅由传输信号组成。本领域技术人员将意识到,在不偏离本描述的范围的情况下,可对这种配置做出许多修改,并且制品可包括本领域中已知的合适信息承载介质。当然,本领域技术人员将意识到,在不偏离本描述的范围的情况下,可对这种配置做出许多修改,并且制品可包括本领域中已知的任何有形信息承载介质。
在某些应用中,可在计算机系统中实施根据本描述的装置,该计算机系统包括用于呈现信息以便在耦合到计算机系统的监视器或其它显示器上显示的视频控制器、装置驱动器和网络控制器,例如包括桌面型计算机、工作站、服务器、大型机、膝上型计算机、手持式计算机等的计算机系统。或者,可在不包含例如诸如交换机、路由器等的视频控制器或不包含例如网络控制器的计算装置中实施这些装置实施例。
各图的所示逻辑可显示按特定次序进行特定事件。在备选实施例中,可以按不同的次序执行某些操作,修改或移除某些操作。此外,可在上述逻辑中增加操作,并且这些操作仍符合描述的实施例。另外,本文中描述的操作可按顺序进行,或者某些操作可并行处理。再者,可通过单个处理单元或通过分布式处理单元来执行操作。
出于说明和描述的目的呈现了以上对各种实施例的描述。不意图穷举或限于公开的准确形式。鉴于以上教导,许多修改和改变都是可能的。
Claims (25)
1. 一种用于与目标一起使用的源的设备,所述目标接收对所述目标的存储器的写入操作,所述设备包括:
输入/输出(I/O)端口;以及
具有所述源的源逻辑的数据传输加速器,所述源逻辑配置成:
向所述I/O端口发出在所述目标存储器中写入数据的第一多个写入操作、与所述第一多个写入操作相关联的写入栅栏标志,以及在所述目标存储器中写入数据的第二多个写入操作;
其中通过所述源逻辑配置所述写入栅栏标志以便通过所述目标进行检测,从而确保在完成所述第二多个写入操作的所述写入操作中的任何写入操作之前,通过所述目标在所述目标存储器中完成所述第一多个写入操作。
2.如权利要求1所述的设备,其中通过所述源逻辑配置所述写入栅栏标志以便由所述目标检测为标志写入操作,所述标志写入操作具有所述目标中的目标地址,所述目标地址向所述目标指示所述标志写入操作是写入栅栏标志。
3.如权利要求1所述的设备,其中通过所述源逻辑配置所述写入栅栏标志以便由所述目标检测为标志写入描述符,所述标志写入描述符具有所述标志写入描述符中的属性的报头,所述报头属性向所述目标指示所述标志写入描述符是写入栅栏标志。
4.如权利要求1-3中任一权利要求所述的设备,其中所述源的所述数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在所述DMA控制器中实现所述源逻辑。
5.如权利要求4所述的设备,其中所述源包括中央处理单元(CPU),并且所述DMA控制器和所述I/O端口与所述源的CPU集成。
6.如权利要求1-3中任一权利要求所述的设备,用于与主机一起使用,其中所述源逻辑进一步配置成从主机接收写入请求,并响应于所述接收的写入请求而生成在所述目标存储器中写入数据的所述第一多个写入操作。
7.如权利要求6所述的设备,其中接收的写入请求包括I/O提交标志,并且其中所述源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在所述DMA控制器内实现的所述源逻辑具有配置成检测接收的写入请求中的I/O提交标志的检测器,以及配置成响应于所述I/O提交标志检测而生成所述写入栅栏标志的生成器。
8.如权利要求1-3中任一权利要求所述的设备,其中所述目标具有指示到所述目标的所述存储器的写入操作完成的写入完成数据结构,并且其中所述源的所述源逻辑进一步配置成在所述写入栅栏标志之后向所述I/O端口发出到所述写入完成数据结构的写入完成数据结构写入操作,以便指示所述第一多个写入指令完成。
9.如权利要求7所述的设备,其中所述目标具有指示到所述目标的所述存储器的写入操作完成的写入完成数据结构,并且其中所述DMA控制器的所述生成器进一步配置成响应于在所述写入栅栏标志生成之后的所述I/O提交标志检测,而生成到所述写入完成数据结构的写入完成数据结构写入操作,以便指示所述第一多个写入指令完成。
10.如权利要求1-3中任一权利要求所述的设备,其中所述源是多处理器存储控制器的本地节点,而所述目标是所述多处理器存储控制器的远程节点,所述多处理器存储控制器用于与存储设备和主机一起使用,以便响应于所述主机的I/O请求而对所述存储设备执行I/O操作。
11. 一种用于与显示器一起使用的计算系统,包括:
目标,其具有目标存储器并具有配置成接收写入操作和写入栅栏标志的逻辑;以及
源,包括:
源存储器;
视频控制器,配置成显示由所述源存储器中的数据表示的信息;
输入/输出(I/O)端口;以及
具有所述源的源逻辑的数据传输加速器,所述源逻辑配置成:
向所述I/O端口发出在所述目标存储器中写入数据的第一多个写入操作、与所述第一多个写入操作相关联的写入栅栏标志以及在所述目标存储器中写入数据的第二多个写入操作;
其中通过所述源逻辑配置所述写入栅栏标志以便通过所述目标进行检测,从而确保在完成所述第二多个写入操作的所述写入操作中的任何写入操作之前,通过所述目标在所述目标存储器中完成所述第一多个写入操作。
12.如权利要求11所述的系统,其中通过所述源逻辑配置所述写入栅栏标志以便由所述目标检测为具有所述目标中的目标地址的标志写入操作,所述目标地址向所述目标指示所述标志写入操作是写入栅栏标志。
13.如权利要求11所述的系统,其中通过所述源逻辑配置所述写入栅栏标志以便由所述目标检测为标志写入描述符,所述标志写入描述符包括具有所述标志写入描述符中的属性的报头,所述报头属性向所述目标指示所述标志写入描述符是写入栅栏标志。
14.如权利要求11-13中任一权利要求所述的系统,其中所述源的所述数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在所述DMA控制器中实现所述源逻辑。
15.如权利要求14所述的系统,其中所述源包括中央处理单元(CPU),并且所述DMA控制器和所述I/O端口与所述源的CPU集成。
16.如权利要求11-13中任一权利要求所述的系统,它与主机一起使用,其中所述源逻辑进一步配置成从主机接收写入请求,并响应于所述接收的写入请求生成在所述目标存储器中写入数据的所述第一多个写入操作。
17.如权利要求16所述的系统,其中接收的写入请求包括I/O提交标志,并且其中所述源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在所述DMA控制器内实现的所述源逻辑具有配置成检测接收的写入请求中的I/O提交标志的检测器,以及配置成响应于所述I/O提交标志检测而生成所述写入栅栏标志的生成器。
18.如权利要求11-13中任一权利要求所述的系统,其中所述目标具有指示到所述目标的所述存储器的写入操作完成的写入完成数据结构,并且其中所述源的所述源逻辑进一步配置成在所述写入栅栏标志之后向所述I/O端口发出到所述写入完成数据结构的写入完成数据结构写入操作,以便指示所述第一多个写入指令完成。
19.如权利要求17所述的系统,其中所述目标具有指示到所述目标的所述存储器的写入操作完成的写入完成数据结构,并且其中所述DMA控制器的所述生成器进一步配置成响应于在所述写入栅栏标志生成之后的所述I/O提交标志检测,而生成到所述写入完成数据结构的写入完成数据结构写入操作,以便指示所述第一多个写入操作完成。
20.如权利要求11-13中任一权利要求所述的系统,其中所述源是多处理器存储控制器的本地节点,而所述目标是所述多处理器存储控制器的远程节点,所述多处理器存储控制器与存储设备和主机一起使用,以便响应于所述主机的I/O请求而对所述存储设备执行I/O操作。
21.一种管理写入操作的方法,包括:
数据传输加速器的源逻辑执行操作,所述操作包括:
向I/O端口发出在目标的目标存储器中写入数据的第一多个写入操作、与所述第一多个写入操作相关联的写入栅栏标志以及在所述目标存储器中写入数据的第二多个写入操作;
其中通过所述源逻辑配置所述写入栅栏标志以便通过所述目标进行检测,从而确保在完成所述第二多个写入操作的所述写入操作中的任何写入操作之前,通过所述目标在所述目标存储器中完成所述第一多个写入操作。
22.如权利要求21所述的方法,其中通过所述源逻辑配置所述写入栅栏标志以便由所述目标检测为以下之一:具有所述目标中的目标地址的标志写入操作,所述目标地址向所述目标指示所述标志写入操作是写入栅栏标志;以及标志写入描述符,所述标志写入描述符包括具有所述标志写入描述符中的属性的报头,所述报头属性向所述目标指示所述标志写入描述符是写入栅栏标志。
23.如权利要求21-22中任一权利要求所述的方法,其中所述源的所述数据传输加速器包括直接存储器访问(DMA)控制器,其中至少部分地在所述DMA控制器中实现所述源逻辑,并且其中所述源包括中央处理单元(CPU),所述DMA控制器和所述I/O端口与所述源的CPU集成。
24.如权利要求21-22中任一权利要求所述的方法,其中所述源是多处理器存储控制器的本地节点,而所述目标是所述多处理器存储控制器的远程节点,所述多处理器存储控制器与存储设备和主机一起使用,其中所述操作还包括:响应于从所述主机接收的I/O请求而对所述存储设备执行I/O操作,所述I/O请求包括从所述主机接收的写入请求;以及响应于从所述主机接收的所述写入请求,生成在所述目标存储器中写入数据的所述第一多个写入操作。
25.如权利要求24所述的方法,其中从所述主机接收的写入请求包括I/O提交标志,并且其中所述源包括实现所述源逻辑的至少一部分的直接存储器访问(DMA)控制器,在所述DMA控制器内实现的所述源逻辑具有检测器和生成器,其中所述操作还包括通过所述检测器检测接收的写入请求中的I/O提交标志并响应于所述I/O提交标志检测通过所述生成器生成所述写入栅栏标志;
其中所述目标具有指示到所述目标的所述存储器的写入操作完成的写入完成数据结构,并且其中所述操作还包括:在所述写入栅栏标志生成之后,通过所述生成器生成到所述写入完成数据结构的写入完成数据结构写入操作;并在所述写入栅栏标志之后,向所述I/O端口发出到所述写入完成数据结构的写入完成数据结构写入操作,以便指示所述第一多个写入指令完成。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/499,063 US20160092123A1 (en) | 2014-09-26 | 2014-09-26 | Memory write management in a computer system |
US14/499063 | 2014-09-26 | ||
US14/839,805 US20160092118A1 (en) | 2014-09-26 | 2015-08-28 | Memory write management in a computer system |
US14/839805 | 2015-08-28 | ||
PCT/US2015/050288 WO2016048725A1 (en) | 2014-09-26 | 2015-09-15 | Memory write management in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575206A true CN106575206A (zh) | 2017-04-19 |
CN106575206B CN106575206B (zh) | 2021-01-29 |
Family
ID=55581821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045771.5A Active CN106575206B (zh) | 2014-09-26 | 2015-09-15 | 计算机系统中的存储器写入管理 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160092118A1 (zh) |
EP (1) | EP3198459A4 (zh) |
KR (1) | KR102274960B1 (zh) |
CN (1) | CN106575206B (zh) |
WO (2) | WO2016048725A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108470008A (zh) * | 2018-01-23 | 2018-08-31 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN108897681A (zh) * | 2018-06-25 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种用于存储管理控制系统的qat测试系统及方法 |
WO2020057638A1 (en) * | 2018-09-21 | 2020-03-26 | Suzhou Kuhan Information Technologies Co., Ltd. | Systems, methods and apparatus for storage controller with multi-mode pcie functionality |
CN113609037A (zh) * | 2021-06-30 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于uvm的gpio模块验证的方法、装置、设备及可读介质 |
CN115048023A (zh) * | 2021-03-09 | 2022-09-13 | 广州视源电子科技股份有限公司 | 电子笔记还原方法、装置、介质以及交互平板 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9794366B1 (en) * | 2016-10-19 | 2017-10-17 | Red Hat, Inc. | Persistent-memory management |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US11307854B2 (en) * | 2018-02-07 | 2022-04-19 | Intel Corporation | Memory write log storage processors, methods, systems, and instructions |
KR102262209B1 (ko) * | 2018-02-09 | 2021-06-09 | 한양대학교 산학협력단 | 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치 |
KR102586768B1 (ko) | 2018-03-27 | 2023-10-16 | 에스케이하이닉스 주식회사 | 컴퓨팅 시스템 및 그것의 동작방법 |
EP4024223A1 (en) | 2019-03-15 | 2022-07-06 | Intel Corporation | Systems and methods for cache optimization |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
AU2020241262A1 (en) | 2019-03-15 | 2021-11-04 | Intel Corporation | Sparse optimizations for a matrix accelerator architecture |
US12013808B2 (en) | 2019-03-15 | 2024-06-18 | Intel Corporation | Multi-tile architecture for graphics operations |
US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
US11915044B2 (en) * | 2021-06-09 | 2024-02-27 | Splunk Inc. | Distributed task assignment in a cluster computing system |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671747B1 (en) * | 2000-08-03 | 2003-12-30 | Apple Computer, Inc. | System, apparatus, method, and computer program for execution-order preserving uncached write combine operation |
US20060015652A1 (en) * | 2004-07-15 | 2006-01-19 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
JP2006113841A (ja) * | 2004-10-15 | 2006-04-27 | Hitachi High-Technologies Corp | データ記憶制御装置 |
US20070115292A1 (en) * | 2005-10-26 | 2007-05-24 | Via Technologies, Inc | GPU Internal Wait/Fence Synchronization Method and Apparatus |
CN101127018A (zh) * | 2007-09-29 | 2008-02-20 | 北京时代民芯科技有限公司 | 一种片上dma结构及其实现方法 |
US20080222317A1 (en) * | 2007-03-05 | 2008-09-11 | Dominic Go | Data Flow Control Within and Between DMA Channels |
CN101352012A (zh) * | 2005-10-07 | 2009-01-21 | 安吉尔系统公司 | 使用不同元件对流进行媒体数据处理以及控制方法 |
CN102681952A (zh) * | 2012-05-12 | 2012-09-19 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN102968289A (zh) * | 2011-08-30 | 2013-03-13 | 苹果公司 | 用于外围组件的高优先级命令队列 |
CN103218572A (zh) * | 2012-01-23 | 2013-07-24 | 国际商业机器公司 | 用于在数据处理系统中访问数据的方法和设备 |
CN103942010A (zh) * | 2013-01-22 | 2014-07-23 | Lsi公司 | 用于写入非易失性存储器的管理及区域选择 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047334A (en) * | 1997-06-17 | 2000-04-04 | Intel Corporation | System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence |
US5990913A (en) * | 1997-07-30 | 1999-11-23 | Intel Corporation | Method and apparatus for implementing a flush command for an accelerated graphics port device |
US6356962B1 (en) * | 1998-09-30 | 2002-03-12 | Stmicroelectronics, Inc. | Network device and method of controlling flow of data arranged in frames in a data-based network |
US6202095B1 (en) * | 1998-10-07 | 2001-03-13 | International Business Machines Corporation | Defining characteristics between processing systems |
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US6658520B1 (en) * | 2000-09-26 | 2003-12-02 | Intel Corporation | Method and system for keeping two independent busses coherent following a direct memory access |
US6976115B2 (en) * | 2002-03-28 | 2005-12-13 | Intel Corporation | Peer-to-peer bus segment bridging |
US7529864B2 (en) * | 2004-11-09 | 2009-05-05 | International Business Machines Corporation | Method and system for testing remote I/O functionality |
US7543131B2 (en) * | 2005-08-12 | 2009-06-02 | Advanced Micro Devices, Inc. | Controlling an I/O MMU |
US20070061549A1 (en) * | 2005-09-15 | 2007-03-15 | Kaniyur Narayanan G | Method and an apparatus to track address translation in I/O virtualization |
US20080155571A1 (en) * | 2006-12-21 | 2008-06-26 | Yuval Kenan | Method and System for Host Software Concurrent Processing of a Network Connection Using Multiple Central Processing Units |
KR20110088538A (ko) * | 2008-10-30 | 2011-08-03 | 엘에스아이 코포레이션 | 저장 컨트롤러 데이터 재분배 방법 및 시스템 |
US8489792B2 (en) * | 2010-03-12 | 2013-07-16 | Lsi Corporation | Transaction performance monitoring in a processor bus bridge |
US8250164B2 (en) * | 2010-04-15 | 2012-08-21 | International Business Machines Corporation | Query performance data on parallel computer system having compute nodes |
US8527672B2 (en) * | 2010-11-05 | 2013-09-03 | International Business Machines Corporation | Fencing direct memory access data transfers in a parallel active messaging interface of a parallel computer |
US9405550B2 (en) * | 2011-03-31 | 2016-08-02 | International Business Machines Corporation | Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link |
US20130111103A1 (en) * | 2011-10-28 | 2013-05-02 | International Business Corporation | High-speed synchronous writes to persistent storage |
JP6105307B2 (ja) * | 2013-02-07 | 2017-03-29 | Necプラットフォームズ株式会社 | 命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラム |
-
2015
- 2015-08-28 US US14/839,805 patent/US20160092118A1/en not_active Abandoned
- 2015-09-15 WO PCT/US2015/050288 patent/WO2016048725A1/en active Application Filing
- 2015-09-15 KR KR1020177005005A patent/KR102274960B1/ko active IP Right Grant
- 2015-09-15 WO PCT/US2015/050284 patent/WO2016048724A1/en active Application Filing
- 2015-09-15 CN CN201580045771.5A patent/CN106575206B/zh active Active
- 2015-09-15 EP EP15844803.5A patent/EP3198459A4/en not_active Ceased
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671747B1 (en) * | 2000-08-03 | 2003-12-30 | Apple Computer, Inc. | System, apparatus, method, and computer program for execution-order preserving uncached write combine operation |
US20060015652A1 (en) * | 2004-07-15 | 2006-01-19 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
JP2006113841A (ja) * | 2004-10-15 | 2006-04-27 | Hitachi High-Technologies Corp | データ記憶制御装置 |
CN101352012A (zh) * | 2005-10-07 | 2009-01-21 | 安吉尔系统公司 | 使用不同元件对流进行媒体数据处理以及控制方法 |
US20070115292A1 (en) * | 2005-10-26 | 2007-05-24 | Via Technologies, Inc | GPU Internal Wait/Fence Synchronization Method and Apparatus |
US20080222317A1 (en) * | 2007-03-05 | 2008-09-11 | Dominic Go | Data Flow Control Within and Between DMA Channels |
CN101127018A (zh) * | 2007-09-29 | 2008-02-20 | 北京时代民芯科技有限公司 | 一种片上dma结构及其实现方法 |
CN102968289A (zh) * | 2011-08-30 | 2013-03-13 | 苹果公司 | 用于外围组件的高优先级命令队列 |
CN103218572A (zh) * | 2012-01-23 | 2013-07-24 | 国际商业机器公司 | 用于在数据处理系统中访问数据的方法和设备 |
CN102681952A (zh) * | 2012-05-12 | 2012-09-19 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN103942010A (zh) * | 2013-01-22 | 2014-07-23 | Lsi公司 | 用于写入非易失性存储器的管理及区域选择 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108470008A (zh) * | 2018-01-23 | 2018-08-31 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN108470008B (zh) * | 2018-01-23 | 2020-08-14 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN108897681A (zh) * | 2018-06-25 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种用于存储管理控制系统的qat测试系统及方法 |
WO2020057638A1 (en) * | 2018-09-21 | 2020-03-26 | Suzhou Kuhan Information Technologies Co., Ltd. | Systems, methods and apparatus for storage controller with multi-mode pcie functionality |
US11599482B2 (en) | 2018-09-21 | 2023-03-07 | Suzhou Kuhan Information Technologies Co., Ltd. | Systems, methods and apparatus for a storage controller with multi-mode PCIe functionalities |
CN115048023A (zh) * | 2021-03-09 | 2022-09-13 | 广州视源电子科技股份有限公司 | 电子笔记还原方法、装置、介质以及交互平板 |
CN115048023B (zh) * | 2021-03-09 | 2024-06-04 | 广州视源电子科技股份有限公司 | 电子笔记还原方法、装置、介质以及交互平板 |
CN113609037A (zh) * | 2021-06-30 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于uvm的gpio模块验证的方法、装置、设备及可读介质 |
CN113609037B (zh) * | 2021-06-30 | 2024-04-16 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于uvm的gpio模块验证的方法、装置、设备及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106575206B (zh) | 2021-01-29 |
WO2016048725A1 (en) | 2016-03-31 |
WO2016048724A1 (en) | 2016-03-31 |
WO2016048725A9 (en) | 2016-07-21 |
EP3198459A4 (en) | 2018-06-20 |
EP3198459A1 (en) | 2017-08-02 |
US20160092118A1 (en) | 2016-03-31 |
KR20170034424A (ko) | 2017-03-28 |
KR102274960B1 (ko) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575206A (zh) | 计算机系统中的存储器写入管理 | |
JP7110343B2 (ja) | ブロックチェーンネットワークのトランザクション処理方法、装置、機器及び記憶媒体 | |
CN101273338B (zh) | 用于数据集及数据集“异或”的dma传送的方法、装置及系统 | |
CN102446073B (zh) | 延迟对操作的确认直至操作完成的方法和系统 | |
US7558915B2 (en) | System and method for updating the firmware of a device in a storage network | |
CN1595381B (zh) | 桥控制器、桥和操作该桥的方法 | |
TW201939269A (zh) | 主機系統及其方法和加速模組 | |
CN110147335A (zh) | 用于ssd储存器中nvme命令间关联的系统和方法 | |
TWI444833B (zh) | Sas擴充器之資料預取 | |
KR20200078382A (ko) | 개시자 모드를 갖는 솔리드-스테이트 드라이브 | |
CN104346240B (zh) | 用于在迁移操作期间利用多个存储器池的方法和装置 | |
CN106104500A (zh) | 存储数据的方法和设备 | |
CN107423169A (zh) | 用于测试高速外围设备互连设备的方法和系统 | |
TW201108231A (en) | Method for giving program commands to flash memory chips, and controller and storage system using the same | |
KR102646616B1 (ko) | 판독 명령 실행을 위한 NVMeoF RAID 구현 방법 | |
US8656251B2 (en) | Simultaneous data transfer and error control to reduce latency and improve throughput to a host | |
US20160092123A1 (en) | Memory write management in a computer system | |
TW201145037A (en) | USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch | |
CN106030548A (zh) | 用于可信计算的多节点中枢 | |
US11500971B2 (en) | System for creating music publishing agreements from metadata of a digital audio workstation | |
US11158014B2 (en) | System and methods for tracking authorship attribution and creating music publishing agreements from metadata | |
CN105389120B (zh) | 支持通过活动消息的rma api | |
CN109983443A (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
US10261699B2 (en) | Systems and methods for hardware-based RAID acceleration | |
US10558453B1 (en) | System and method to achieve shared drive firmware version consistency via ESRT update |
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 |