CN109997117B - 用于将门铃合并在请求消息中的技术 - Google Patents

用于将门铃合并在请求消息中的技术 Download PDF

Info

Publication number
CN109997117B
CN109997117B CN201780073461.3A CN201780073461A CN109997117B CN 109997117 B CN109997117 B CN 109997117B CN 201780073461 A CN201780073461 A CN 201780073461A CN 109997117 B CN109997117 B CN 109997117B
Authority
CN
China
Prior art keywords
doorbell
memory
write
line structure
cache line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780073461.3A
Other languages
English (en)
Other versions
CN109997117A (zh
Inventor
T.肯特基
B-Z.弗里曼
N.D.麦克唐奈
B.理查森
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109997117A publication Critical patent/CN109997117A/zh
Application granted granted Critical
Publication of CN109997117B publication Critical patent/CN109997117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

示例包括用于将门铃合并在请求消息中的技术。示例技术包括收集门铃以访问设备。所收集的被组合在高速缓存行结构中,并且所述高速缓存行结构在单个写操作中被写入到用于中央处理单元的高速缓存或缓冲器。

Description

用于将门铃合并在请求消息中的技术
优先权要求
本申请在35 U.S.C.§365(c)下对2016年12月28日提交的、题为“TECHNIQUES FORCOALESCING DOORBELLS IN A REQUEST MESSAGE”的申请号为15/392,181的美国申请要求优先权,所述申请据此通过引用以其全部被并入。
技术领域
本文中所述的示例一般涉及用于具有存储器环或队列的设备的门铃。
背景技术
被包括在计算平台上或与计算平台耦合的硬件设备可以利用通信协议和接口、诸如但不限于快速外围组件互连(PCI)基础规范、修订版 3.1a,其在2015年12月被公布(“快速PCI规范”或“PCIe规范”)。利用根据PCIe规范的通信协议和接口的示例硬件设备可以被称为PCIe设备。PCIe设备可以具有基于门铃的主机接口。基于门铃的主机接口可以包括主机(例如软件设备驱动器),所述主机将描述符置于存储器环上以用于给定PCIe设备,并且向PCIe设备发布指针更新写入。指针更新写入通常被称为“门铃(doorbell)”。
附图说明
图1图示了示例系统。
图2图示了示例格式。
图3图示了示例结构。
图4图示了示例第一代码。
图5图示了示例第二代码。
图6图示了针对装置的示例框图。
图7图示了逻辑流的示例。
图8图示了存储介质的示例。
图9图示了示例计算平台。
具体实施方式
与主机计算设备处的设备驱动器通信的现代PCIe设备、诸如但不限于具有交换能力或分组调度器、密码/压缩加速器(其例如根据Intel®快速辅助技术(QAT)而被操作)、或非易失性存储器控制器、诸如根据快速非易失性存储器(NVMe)规范、诸如NVMe规范、修订版1.2a(其公布于2015年10月)而被操作的那些的网络接口卡(NIC)可以各自支持大量存储器环/门铃组合。对于这些大量存储器环/门铃组合,设备驱动器可以写入到用于这些类型的PCIe设备的众多存储器环或队列。在一些示例中,当确定是要以低频率还是高频率来发布门铃的时候,可能需要在复杂性/等待时间成本相对于数据带宽成本之间做出选择。
根据一些示例,以高频率来发布门铃可以包括在分离的请求消息中向用于PCIe设备的被定为目标的存储器环或队列发布分离的门铃。以相对低频率来发布门铃可以包括向用于PCIe设备的被定为目标的存储器环或队列发布被包括在单个请求消息中的批量或合并的门铃中的多个门铃。例如,具有用于相应传送队列的多个传送(Tx)描述符环的NICPCIe设备可以接收具有经合并的门铃的请求,所述门铃分离地将用于NIC PCIe设备的单独Tx描述符环定为目标。与在单个请求消息中以低频率发布经合并的门铃相比,在分离的请求消息中以高频率向NIC PCIe设备发布分离的门铃可具有较小的复杂性和等待时间。然而,与经合并的门铃相比,针对分离请求消息的请求消息开销可消耗更多数据带宽。正是关于平衡复杂性/等待时间与所消耗的数据带宽的这些挑战,需要本文中所述的示例。
图1图示了示例系统100。在一些示例中,如图1中所示,系统100包括计算平台101。对于这些示例,计算平台101可以包括一个或多个PCIe设备110、电路120、存储器130、一个或多个设备驱动器140、操作系统150或者一个或多个应用160。在一些示例中,如图1中所示,电路120可以经由链路115而通信地耦合到(多个)PCIe设备,并且还可以经由链路135而与存储器130通信地耦合。在一些示例中,操作系统150、(多个)设备驱动器140或(多个)应用160可以至少部分地经由在被包括在存储器130中的一个或多个存储器设备(例如易失性存储器设备)与电路120的元件、诸如处理核122-1到122-m之间的协作来被实现,其中“m”是比2大的任何正整数。
根据一些示例,包括但不限于用于输入/输出存储器管理单元(IOMMU)和/或PCIe根联合体(二者都没有被示出)的技术在内的技术可以由计算平台101的硬件元件(例如电路120)用于支持在一个或多个主机设备驱动器、诸如(多个)设备驱动器140与一个或多个PCIe设备、诸如(多个)PCIe设备110之间的通信。如以下更多描述的,通信可以包括使用以具有多个经合并的门铃的写PCIe事务层分组(TLP)的格式的请求消息,由此,来自(多个)设备驱动器140之中的设备驱动器可以包括逻辑和/或特征来使得经由单个写操作来向大小可以被定成与给定高速缓存行结构(例如64字节)匹配的结构布告用于多个存储器环或设备队列的描述符和数据指针。用于所述多个存储器环或设备队列的描述符和数据指针例如可以被包括在存储器130的所分配的一部分中,诸如图1中所示的存储器环描述符132。
在一些示例中,经由链路115从(多个)PCIe设备110之中被发送到PCIe设备的单个写PCIe TLP请求消息可以使用根据PCIe规范的通信协议。所述单个写PCIe TLP请求消息可以向PCIe设备指示在何处已经将经合并的门铃布告给存储器130。还如以下更多描述的,高速缓存行结构(例如中央处理单元(CPU)高速缓存行结构)可以被利用来促进经由单个写操作向相应的存储器环或设备队列布告或存储经合并的门铃。
在一些示例中,计算平台101可以包括但不限于服务器、服务器阵列或服务器农场、web(网络)服务器、网络服务器、因特网服务器、工作站、迷你计算机、大型计算机、超级计算机、网络器具、web(网络)器具、分布式计算系统、多处理器系统、基于处理器的系统、或其组合。而且,具有处理核122-1到122-m的电路120可以包括各种商业上可得到的处理器,无限制地包括AMD® Athlon®、Duron®和Opteron® 处理器;ARM® 应用处理器嵌入式和安全处理器;IBM®和Motorola® DragonBall®和PowerPC®处理器;IBM和Sony® 单元处理器;Qualcomm® Snapdragon® 处理器;Intel® Atom®、Celeron®、核(2) Duo®、 核i3、核i5、核i7、Itanium®、Pentium®、Xeon®或Xeon Phi®处理器;以及类似的处理器。
根据一些示例,存储器130可以由可包括各种类型的易失性和/或非易失性存储器的一个或多个存储器设备或管芯组成。所述一个或多个存储器设备或管芯可以包括各种类型的易失性和/或非易失性存储器。易失性存储器可以包括但不限于随机存取存储器(RAM)、动态RAM(D-RAM)、双数据速率同步动态RAM(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管RAM(T-RAM)或零电容器RAM(Z-RAM)。非易失性存储器可以包括但不限于非易失性类型的存储器、诸如3-D交叉点存储器,其可以是字节或块可寻址的。这些字节或块可寻址的非易失性类型的存储器可以包括但不限于使用硫族化物相变材料(例如硫族化物玻璃)的存储器、多阈值水平NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻性存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、并入了忆阻器技术的磁阻式随机存取存储器(MRAM)、自旋转移矩MRAM(STT-MRAM)、或以上中任何的组合、或其它非易失性存储器类型。
图2图示了示例格式210和220。在一些示例中,如图2中所示的格式210可以表示被发送到PCIe设备的、包括单个门铃的写PCIe TLP请求消息的至少一些字段,并且格式220可以表示被发送到PCIe的、包括多个经合并的门铃的写PCIe TLP请求消息的至少一些字段。对于这些示例,格式210和格式220二者包括在双字(DW)0到3中的相同字段。例如,请求器标识符(ID)213和地址214。格式210和格式220中的这些相同字段可以表示用于写PCIe TLP请求消息的事务层开销。请求器ID 213可以指示已经发出了与门铃相关联(例如针对格式210)或针对多个门铃(例如格式220)的写请求的请求器。地址214可以指示存储器(例如存储器130)中的64位(64b)地址,其中一个或多个门铃已经被布告到存储器。
根据一些示例,当单个门铃通过使用格式210被发送到PCIe设备的时候,地址字段214可以是针对PCIe设备的存储器环的环地址寄存器。而且,门铃数据215可以标识用于PCIe设备的环结构上的可用作业描述符的数目(例如被维护在存储器130中),其可以包括经由存储器环被提交到PCIe设备的一系列一个或多个有效请求。例如,如果PCIe设备是NVMe控制器,则门铃数据可以包括尾/头指针,其针对将被置于用于NVMe控制器的提交队列中的一个或多个写请求的地址范围。如果PCIe设备是NIC,则门铃数据可以包括尾/指针,其针对给被定为目标的Tx描述符环的一系列一个或多个分组传送请求。因而,当使用示例格式210的时候,用于单个门铃的PCIe特定的开销可以利用5个DW或20字节(B)的数据带宽来用于写PCIe TLP,加上附加的8B用于PCIe链路层开销(未被示出),有每门铃总共28B。
在一些示例中,当批处理或合并多达8个门铃以通过使用格式220来被发送到PCIe设备的时候,地址字段214可以包括在主机计算平台的存储器中的64b地址,其中针对8个门铃的门铃信息已经通过用请求器ID 213所标识的请求器(例如设备驱动器)被布告。在一些示例中,在请求器ID 213中所标识的请求器(例如设备驱动器)可利用一种结构(在以下更多被描述)来将8个门铃布告到存储器。包括门铃225-1到225-8的DW 4到DW 19可以包括针对PCIe设备的信息来标识与每个门铃相关联的相应存储器环或队列,以及还有相应的尾/头指针,其用于标识被提交到这些存储器环或队列的有效请求的相应范围。
根据一些示例,当使用示例格式220的时候,用于8个门铃的PCIe特定的开销可以利用20个DW或80B的数据带宽来用于写PCIe TLP,加上附加的8B用于PCIe链路层开销(未被示出),有总共88B。在比较中,如果8个门铃通过使用示例格式210在8个分离的写PCIe TLP请求消息中被分离地发送到PCIe设备,则将会需要总共8 x 28B或224B的数据带宽。作为用示例格式220的格式在单个写PCIe TLP中批量处理或合并8个门铃的结果,用于将这些门铃提供到PCIe设备的数据带宽与通过使用示例格式210来发送8个分离的门铃相比少224B–88B = 136B。那相当于在与PCIe设备耦合的通信链路之上的数据带宽中近似60%的减少。
示例不限于包括8个经合并的门铃的写PCIe TLP请求消息。在写PCIe TLP请求消息中可以包括多于或少于8个门铃。
图3图示了示例结构300。在一些示例中,结构300可以表示由设备驱动器用于使得门铃225-1到225-8被布告或写入到PCIe设备的高速缓存行结构的示例。对于这些示例,被包括在结构300中的每个门铃可以持有8个字节的门铃信息。例如,门铃225-1在图3中被示出为具有队列ID 310-1字段和门铃数据320-1字段。这些字段中的每一个可以包括4字节的字段。尽管示例不限于针对每个门铃的4字节字段或2字段。
根据一些示例,针对门铃225-1到225-8的队列ID 310字段可以标识用于给PCIe设备的请求的存储器环。对于这些示例,设备驱动器和PCIe设备二者需要理解或知道队列ID是什么。例如,如果PCIe设备是NVMe控制器,那么用于NVMe控制器的设备驱动器可能需要一种方法来标识给定门铃可相关联于的每个提交队列。标识可以被包括于在NVMe控制器的启动或发起的时候被提供到设备驱动器的能力寄存器信息中。
在一些示例中,针对门铃225-1到225-8的门铃数据320字段可以包括尾/头指针,所述尾/头指针标识被提交给PCIe设备的存储器环的、针对PCIe设备的有效请求的相应地址范围。
根据一些示例,设备驱动器可能没有使全部8个门铃准备好用于提交。对于这些示例,可以为队列ID 310和门铃数据320设置预定义的值,以用于任何不完备、空的或无效的门铃。例如,值0xffffffff可以指示不完备、空的或无效的门铃。
示例不限于64B高速缓存行结构。设想可以合并多于或少于8个门铃的高速缓存行结构。
图4图示了示例代码400。在一些示例中,代码400可以表示针对设备驱动器的伪代码,用于写入到可以是以示例结构300的格式的高速缓存行结构。对于这些示例,实现代码400的设备驱动器可以使用写回(WB)存储器来用于创建关于设备环结构和写组合(WC)存储器(例如WC缓冲器或高速缓存)的描述符,用于使得在单个PCIe TLP写操作中将多个门铃布告到PCIe设备。
根据一些示例,“#Queues”可以指示用于设备驱动器将为其布告门铃的PCIe设备的多个存储器环或请求队列。“#QueuesDescriptors”可以是针对将16B的描述符信息添加到CPU高速缓存或存储器缓冲器的写组合操作“4 x WB_MOVL”的作业描述。“Store_Fence”可确保在WB门铃被发送到PCIe设备之前,所创建的描述符变得对于PCIe设备和CPU核可见。
在一些示例中,基于一旦对于8个门铃达到64B则写组合存储器将自逐出,在代码400结束时,可不需要“Store_Fence”指令。然而,如果从该类型的自逐出产生不可接受地高的等待时间,则可能需要第二“Store_Fence”。而且,由于每个门铃在大小上是8B,所以MOVDIRI指令(未被示出)可以用于第8和最后的门铃以强制即时逐出。否则,使用写组合存储器的一些CPU高速缓存行架构不可确保在第8门铃之后的即时逐出。
根据一些示例,设备驱动器可能需要将门铃寄存器范围映射为WC。而且,在至少一些CPU架构的情况下,当引发全部64B的写操作的时候,可发生通过使用WC存储器而从CPU高速缓存的自动逐出。而且,WC存储器类型可能需要在主机计算平台的硬件侧上的特殊寄存器布局来允许推测性的读取。而且,用于接收所布告的门铃的计算平台存储器可能需要能够接受n*8B的写入(其中“n”是任意正,正整数),因为WC存储器可在任何时候转储清除(flush)。
图5图示了示例代码500。在一些示例中,代码500可以表示针对设备驱动器的伪代码,用于写入到可以是以示例结构300的格式的高速缓存行结构。对于这些示例,实现代码500的设备驱动器可以使用写回(WB)存储器(例如写回缓冲器或高速缓存)。
根据一些示例,“#Queues”可以指示用于设备驱动器将为其布告门铃的PCIe设备的多个存储器环或请求队列。“#QueueDescriptors”可以是针对将16B的描述符信息添加到CPU高速缓存或存储器缓冲器的写回操作“4 x WB_MOVL”的作业描述。
在一些示例中,与代码400形成对照,对于代码500而言不需要指令“Store_Fence”,这是由于使用了“MOVDIR64B”指令。而且,WB存储器可以用于存储经合并的门铃结构,并且“MOVDIR64B”指令可以用于以CPU循环高效的方式(例如弱排序)将门铃布告或拷贝到PCIe设备的存储器环或队列。而且,在主机计算平台的硬件侧上可不需要任何特殊的寄存器布局以避免推测性的读取。而且,当设备驱动器使用或实现代码500的时候,用于接收所布告的门铃的计算平台存储器可仅仅需要接受64B的写入。
图6图示了针对装置600的示例框图。尽管图6中所示的装置600具有以某种拓扑的有限数目的元件,但是可以领会的是,装置600可以包括以可替换的拓扑的更多或更少的元件,如对于给定实现方式所期望的那样。
根据一些示例,装置600可以受电路620支持。对于这些示例,电路620可以是用于计算系统的处理器或电路,例如,如图1中所示的电路120。在一些示例中,电路620可以包括CPU高速缓存、寄存器或缓冲器。电路620可以被布置成执行一个或多个软件或固件实现的模块、组件或逻辑622-a(模块、组件或逻辑在本上下文中可以可互换地被使用)。值得注意的是,如在本文中所使用的“a”和“b”和“c”和类似的标志符意图是表示任何正整数的变量。因而,例如,如果实现方式设置值a =4,于是用于模块、组件或逻辑622-a的软件或固件的完整集合可以包括逻辑622-1、622-2、622-3或622-4。所呈现的示例不限于该上下文,并且贯穿全文所使用的不同变量可以表示相同或不同的整数值。而且,“逻辑”、“模块”或“组件”还可以包括被存储在计算机可读介质中的软件/固件,并且尽管多类型的逻辑在图6中被示出为分立的框,但是这不把这些类型的逻辑限制于在不同的计算机可读介质组件(例如分离的存储器等等)中存储。
根据一些示例,电路620可以包括电路、处理器、处理器电路或处理器电路。电路620一般可以被布置成执行一个或多个软件组件622-a。电路620可以是任何的各种商业上可得到的处理器,无限制地包括AMD® Athlon®、Duron®和Opteron® 处理器;ARM® 应用、嵌入式和安全处理器;IBM®和Motorola® DragonBall®和PowerPC®处理器;IBM和Sony® 单元处理器;Intel® Atom®、Celeron®、核(2) Duo®、 核i3、核i5、核i7、Itanium®、Pentium®、Xeon®、Xeon Phi®和XScale®处理器;以及类似的处理器。根据一些示例,电路620还可以包括专用集成电路(ASIC),并且至少一些逻辑622-a可以被实现为ASIC的硬件元件。根据一些示例,电路620还可以包括现场可编程门阵列(FPGA),并且至少一些逻辑622-a可以被实现为FPGA的硬件元件。
根据一些示例,装置600可以包括门铃逻辑622-1。门铃逻辑622-1可以由电路620执行以生成多个门铃,其目标定为用于具有装置600的计算平台上的设备的相应多个存储器环或队列。设备可以经由链路而与电路620通信地耦合,所述链路被布置成根据PCIe规范(例如PCIe基础规范、修订版3.1a)而运作。对于这些示例,门铃624-a可以至少暂时性地包括所述多个门铃。门铃624-a可以由门铃逻辑622-1用数据结构(例如查找表)来维护。可以响应于请求605而生成门铃。请求605可以包括用于访问或使用设备的请求(其例如由包括装置600的计算平台所托管的应用来发出)。
在一些示例中,装置600可以包括组合逻辑622-2。组合逻辑622-2可以由电路620执行以将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息。对于这些示例,高速缓存行结构可以是以图3中所示的结构300的示例格式,并且可以被维护在高速缓存行结构624-b中。
根据一些示例,装置600还可以包括写逻辑622-3。写逻辑622-3可以由电路620执行以将高速缓存行结构写入到CPU高速缓存。CPU高速缓存可以被包括在电路620中,并且可以在单个写操作中写入高速缓存行结构,以使得所述多个门铃被布告到相应多个存储器环或队列。对于这些示例,写操作610可以包括用于将高速缓存行结构写入到CPU高速缓存的操作。
在一些示例中,装置600还可以包括通知逻辑622-4。通知逻辑622-4可以由电路620执行以使得“写PCIe TLP请求消息”被生成并且被发送到所述设备,所述“写PCIe TLP请求消息”将包括针对每个门铃的分离的信息。对于这些示例,通知615可以包括如下通知:所述通知使得电路620的元件(例如PCIe根联合体)生成“写PCIe TLP请求消息”并且将它发送到所述设备。
装置600的各种组件以及实现装置600的设备或节点可以通过各种类型的通信介质被通信地耦合到彼此,用于协调操作。所述协调可以涉及信息的单向或双向交换。例如,组件可以用通过通信介质被传送的信号的形式来传送信息。信息可以被实现为被分配到各种信号线的信号。在这样的分配中,每个消息都是信号。然而,另外的实施例可以可替换地采用数据消息。这样的数据消息可以跨各种连接来被发送。示例连接包括并行接口、串行接口和总线接口。
本文中所包括的是一组逻辑流,其表示用于执行所公开的架构的新颖方面的示例方法。虽然为了解释简单的目的,本文中所示的一个或多个方法被示出和描述为一系列动作,但是本领域技术人员将理解并且领会到方法不受动作的次序所限制。一些动作可以根据此而以与本文中所示和所描述的不同的次序发生和/或与其它动作同时发生。例如,本领域技术人员将理解和领会到,方法可以可替换地被表示为一系列相互关联的状态或事件,诸如状态图中那样。此外,对于新颖的实现方式,可以不需要方法中图示的所有动作。
逻辑流可以用软件、固件和/或硬件来实现。在软件和固件实施例中,逻辑流可以由被存储在至少一个非暂时性计算机可读介质或机器可读介质、诸如光学、磁性或半导体存储装置上的计算机可执行指令来实现。实施例不限于该上下文中。
图7图示了示例逻辑流700。逻辑流700可以表示由本文中所述的一个或多个逻辑、特征或设备、诸如装置600所执行的操作中的一些或全部。更具体地,逻辑流700可以至少由门铃逻辑622-1、组合逻辑622-2、写逻辑622-3或通知逻辑622-4来实现。
根据一些示例,框702处的逻辑流700可以生成多个门铃,其目标定为用于根据PCIe规范运作的计算平台上的设备的相应多个存储器环或队列。对于这些示例,门铃逻辑622-1可以生成所述多个门铃。
在一些示例中,框704处的逻辑流700可以将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息。对于这些示例,组合逻辑622-2可以将所述多个门铃组合在高速缓存结构中。
根据一些示例,框706处的逻辑流700可以在单个写操作中将高速缓存行结构写入到用于计算平台的CPU的高速缓存或缓冲器,以使得所述多个门铃被布告到相应多个存储器环或队列。对于这些示例,写逻辑622-3可以将高速缓存行结构写入到用于CPU的高速缓存或缓冲器。
图8图示了示例存储介质800。如图8中所示,第一存储介质包括存储介质800。存储介质800可以包括一种制品。在一些示例中,存储介质800可以包括任何非暂时性计算机可读介质或机器可读介质,诸如光学、磁性或半导体存储装置。存储介质800可以存储各种类型的计算机可执行指令,诸如用于实现逻辑流700的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除或不可移除的存储器、可擦除或不可擦除的存储器、可写或可重写的存储器等等。计算机可执行指令的示例可以包括任何合适类型的代码,诸如源代码、经编译的代码、经解译的代码、可执行的代码、静态代码、动态代码、面向对象的代码、可视代码等等。示例不限于该上下文中。
图9图示了示例计算平台900。在一些示例中,如图9中所示,计算平台900可以包括处理组件940、其它平台组件950或通信接口960。
根据一些示例,处理组件940可以执行针对装置600和/或存储介质800的处理操作或逻辑。处理组件940可以包括各种硬件元件、软件元件、或二者的组合。硬件元件的示例可以包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、可编程逻辑器件(PLD)、数字信号处理器(DSP)、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动器、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任何组合。确定示例是否通过使用硬件元件和/或软件元件来被实现可以根据任何数目的因素而变化,所述因素诸如所期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如针对给定示例所期望的那样。
在一些示例中,其它平台组件950可以包括常见的计算元件、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件(例如数字显示器)、功率供给等等。存储器单元或存储器设备的示例可以无限制地包括以一个或多个较高速存储器单元的形式的各种类型的计算机可读和机器可读存储介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器、诸如铁电聚合物存储器、奥氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁性或光学卡、诸如独立盘冗余阵列(RAID)驱动器之类的设备阵列、固态存储器设备(例如USB存储器)、固态驱动器(SSD)以及适合用于存储信息的任何其它类型的存储介质。
在一些示例中,通信接口960可以包括用于支持通信接口的逻辑和/或特征。对于这些示例,通信接口960可以包括一个或多个通信接口,其根据各种通信协议或标准而运作以通过直接或网络通信链路而通信。直接通信可以经由使用在一个或多个工业标准(包括后代和变体)、诸如与PCIe规范相关联的那些中所描述的通信协议或标准而发生。网络通信可以经由使用通信协议或标准、诸如在电气与电子工程师协会(IEEE)所发布的一个或多个以太网标准中所描述的那些而发生。例如,IEEE所发布的一个这样的以太网标准可以包括但不限于IEEE 802.3-2012、具有冲突检测的载波感测多重访问(CSMA/CD)访问方法和物理层规范,其在2012年12月被发布(在下文中是“IEEE 802.3规范”)。网络通信还可以根据一个或多个OpenFlow规范、诸如OpenFlow硬件抽象API规范而发生。网络通信还可以根据无限带宽架构规范而发生。
计算平台900可以被实现在服务器或客户端计算设备中。因此,在计算平台900的各种实施例中,可以包括或省略本文中所述的计算平台900的功能和/或特定配置,如对于服务器或客户端计算设备合适地所期望的那样。
计算平台900的组件和特征可以通过使用分立电路、专用集成电路(ASIC)、逻辑门和/或单芯片架构来被实现。此外,在其中适宜地恰当的情况中,计算平台900的特征可以通过使用微控制器、可编程逻辑阵列和/或微处理器、或者前述内容的任何组合来被实现。注意到,硬件、固件和/或软件元件可以在本文中共同地或单独地被称为“逻辑”或“电路”。
应当领会到,在图9的框图中所示的示例性计算平台900可以表示许多潜在实现方式的一个功能性描述示例。因此,在附图中所描绘的框功能的划分、省略或包括不推断出用于实现这些功能的硬件组件、电路、软件和/或元件在实施例中将必定被划分、省略或包括。
至少一个示例的一个或多个方面可以由被存储在至少一个机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当被机器、计算设备或系统读取的时候使得所述机器、计算设备或系统制成逻辑来执行本文中所述的技术。这样的表示、已知为“IP核”可以被存储在有形的机器可读介质上,并且被供应到各种消费者或制造设施以加载到制造机器中,所述制造机器实际构成逻辑或处理器。
各种示例可以通过使用硬件元件、软件元件、或二者的组合来被实现。在一些示例中,硬件元件可以包括器件、组件、处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任何组合。确定示例是否通过使用硬件元件和/或软件元件来被实现可以根据任何数目的因素而变化,所述因素诸如所期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如针对给定实现方式所期望的那样。
一些示例可以包括一种制品或至少一个计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除的存储器、可擦除或不可擦除的存储器、可写或可重写的存储器等等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任何组合。
根据一些示例,计算机可读介质可以包括用于存储或维护指令的非暂时性存储介质,所述指令当由机器、计算设备或系统执行的时候使得所述机器、计算设备或系统执行根据所述示例的方法和/或操作。指令可以包括任何合适类型的代码,诸如源代码、经编译的代码、经解译的代码、可执行的代码、静态代码、动态代码等等。指令可以根据预定义的计算机语言、方式或语法来被实现,用于指示机器、计算设备或系统执行某个功能。指令可以通过使用任何合适的高级、低级、面向对象的、可视的、经编译和/或解译的编程语言来被实现。
一些示例可以通过使用表述“在一个示例中”或“示例”连同其派生词来被描述。这些术语意味着:结合示例所描述的特定特征、结构或特性被包括在至少一个示例中。短语“在一个示例中”在说明书中各处的出现不一定全指代同一示例。
一些示例可以通过使用表述“被耦合的”和“被连接的”连同其派生词来被描述。这些术语不一定意图作为针对彼此的同义词。例如,使用术语“被连接的”和/或“被耦合的”描述可以指示两个或更多元件与彼此直接物理或电气接触。然而,术语“被耦合的”或“与……耦合”还可意指两个或多个元件不与彼此直接接触,但是还仍与彼此协作或交互。
随后的示例关于本文中所公开的技术的附加示例。
示例1.一种示例装置可以包括用于计算平台的电路,所述电路用于包括CPU高速缓存。所述装置还可以包括门铃逻辑,所述门铃逻辑用于由所述电路执行以生成多个门铃,所述门铃目标定为用于经由被布置成根据PCIe规范来运作的链路而与所述电路通信地耦合的计算平台上的设备的相应多个存储器环或队列。所述装置还可以包括组合逻辑,所述组合逻辑用于由所述电路执行以将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息。所述装置还可以包括写逻辑,所述写逻辑用于由所述电路执行以在单个写操作中将高速缓存行结构写入到CPU高速缓存,用于使得所述多个门铃被布告到相应多个存储器环或队列。
示例2.示例1的装置还可以包括通知逻辑,所述通知逻辑用于由所述电路执行以使得“写PCIe TLP请求消息”被生成并且被发送到所述设备。所述“写PCIe TLP请求消息”可以包括针对每个门铃的分离的信息。
示例3.示例1的装置,所述针对每个门铃的分离的信息可以包括针对每个相应的存储器环或队列的相应的标识符信息,用于唯一地标识每个相应的存储器环,并且包括尾指针,用以指示针对具有针对所述设备的有效请求的每个相应的存储器环或队列的相应地址范围。
示例4.示例1的装置还可以包括:所述单个写操作包括写逻辑,用于经由使用写组合存储器来将所述高速缓存行结构写入到CPU高速缓存。
示例5.示例1的装置,所述单个写操作可以包括写逻辑,用于经由使用写回存储器来将所述高速缓存行结构写入到CPU高速缓存。
示例6.示例1的装置,所述高速缓存行结构可以具有64字节的大小,并且针对每个门铃的分离的信息具有8字节的大小。
示例7.示例1的装置,所述设备可以是NIC,其具有交换能力、密码加速器或非易失性存储器控制器。
示例8.示例1的装置还可以包括数字显示器,所述数字显示器被耦合到所述电路以呈现用户接口视图。
示例9.一种示例方法可以包括生成多个门铃,所述门铃目标定为用于根据PCIe规范运作的计算平台上的设备的相应多个存储器环或队列。所述方法还可以包括将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息。所述方法还可以包括在单个写操作中将高速缓存行结构写入到用于计算平台的CPU的高速缓存或缓冲器,以使得所述多个门铃被布告到相应多个存储器环或队列。
示例10.示例9的方法还可以包括使得“写PCIe TLP请求消息”被生成并且被发送到所述设备,所述“写PCIe TLP请求消息”包括针对每个门铃的分离的信息。
示例11.示例9的方法,所述针对每个门铃的分离的信息可以包括针对每个相应的存储器环或队列的相应的标识符信息,用于唯一地标识每个相应的存储器环,并且还可以包括尾指针,用以指示针对具有针对所述设备的有效请求的每个相应的存储器环或队列的相应地址范围。
示例12.示例9的方法,所述单个写操作可以包括通过使用写组合存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
示例13.示例9的方法,所述单个写操作可以包括通过使用写回存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
示例14.示例9的方法,所述高速缓存行结构可以具有64字节的大小,并且针对每个门铃的分离的信息可以具有8字节的大小。
示例15.示例9的方法,所述设备可以是NIC,其具有交换能力、密码加速器或非易失性存储器控制器。
示例16.一种示例性的至少一个机器可读介质可以包括多个指令,所述指令响应于被系统执行可以使得所述系统实施根据示例9到15中任一个的方法。
示例17.一种示例装置可以包括用于执行示例9到15中任一个的方法的构件。
示例18.一种示例性的至少一个机器可读介质可以包括多个指令,所述指令响应于由计算平台处的系统执行可以使得所述系统生成多个门铃,所述门铃目标定为用于计算平台上的设备的相应多个存储器环或队列,所述设备将根据PCIe规范而运作。所述指令还可以使得所述系统将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息。所述指令还可以使得所述系统在单个写操作中将高速缓存行结构写入到用于计算平台的CPU的高速缓存或缓冲器,以使得所述多个门铃被布告到相应多个存储器环或队列。
示例19.示例18的所述至少一个机器可读介质,所述指令可以此外使得所述系统使得“写PCIe TLP请求消息”被生成并且被发送到所述设备。对于这些示例,所述“写PCIeTLP请求消息”可以包括针对每个门铃的分离的信息。
示例20.示例18的所述至少一个机器可读介质,所述针对每个门铃的分离的信息可以包括针对每个相应的存储器环或队列的相应的标识符信息,用于唯一地标识每个相应的存储器环,并且还可以包括尾指针,用以指示针对具有针对所述设备的有效请求的每个相应的存储器环或队列的相应地址范围。
示例21.示例18的所述至少一个机器可读介质,所述单个写操作可以包括所述系统经由使用写组合存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
示例22.示例18的所述至少一个机器可读介质,所述单个写操作可以包括所述系统经由使用写回存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
示例23.示例18的所述至少一个机器可读介质,所述高速缓存行结构可以具有64字节的大小,并且针对每个门铃的分离的信息可以具有8字节的大小。
示例24.示例18的所述至少一个机器可读介质,所述设备可以是NIC,其具有交换能力、密码加速器或非易失性存储器控制器。
强调的是,公开的摘要被提供以遵从37 C.F.R.章节1.72(b),其要求摘要,所述摘要将允许读者快速地弄清技术公开内容的性质。主张的是有如下理解:它将不被用于解释或限制权利要求的范围或含义。另外,在前述具体实施方式中,可以看到,为了合理组织公开内容的目的,在单个示例中将各种特征群组在一起。公开的此方法不要被解释为反映如下意图:即所要求保护的示例需要比每个权利要求中明确记载的更多的特征。相反,如以下权利要求所反映的,发明主题在于少于单个所公开示例的全部特征。因而,以下权利要求由此被并入到具体实施方式中,其中每个权利要求独立作为分离的示例。在所附权利要求中,术语“包括”和“其中”相应地被用作相应术语“包括有”和“其中有”的简明英语等同物。此外,术语“第一”、“第二”、“第三”等等仅仅被用作标签,并且不意图强加关于它们的对象的数字要求。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但要理解,在所附权利要求中所限定的主题不一定受限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的示例形式被公开的。

Claims (17)

1.一种将门铃合并在请求消息中的装置,包括:
用于计算平台的电路,所述电路包括中央处理单元CPU高速缓存;
门铃逻辑,所述门铃逻辑用于由所述电路执行以生成多个门铃,所述门铃目标定为用于经由被布置成根据快速外围组件互连PCIe规范来运作的链路而与所述电路通信地耦合的计算平台上的设备的相应多个存储器环或队列;
组合逻辑,所述组合逻辑用于由所述电路执行以将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息;以及
写逻辑,所述写逻辑用于由所述电路执行以在单个写操作中将高速缓存行结构写入到CPU高速缓存,用于使得所述多个门铃被布告到相应多个存储器环或队列。
2.根据权利要求1所述的装置,包括:
通知逻辑,其用于由所述电路执行以使得“写PCIe事务层分组TLP请求消息”被生成并且被发送到所述设备,所述“写PCIe TLP请求消息”包括针对每个门铃的分离的信息。
3.根据权利要求1所述的装置,包括所述针对每个门铃的分离的信息将包括针对每个相应的存储器环或队列的相应的标识符信息,用于唯一地标识每个相应的存储器环,并且包括尾指针,用以指示针对具有针对所述设备的有效请求的每个相应的存储器环或队列的相应地址范围。
4.根据权利要求1所述的装置,所述单个写操作包括写逻辑,用于经由使用写组合存储器来将所述高速缓存行结构写入到CPU高速缓存。
5.根据权利要求1所述的装置,所述单个写操作包括写逻辑,用于经由使用写回存储器来将所述高速缓存行结构写入到CPU高速缓存。
6.根据权利要求1所述的装置,包括所述高速缓存行结构将具有64字节的大小,并且针对每个门铃的分离的信息具有8字节的大小。
7.根据权利要求1所述的装置,所述设备包括网络接口卡NIC,其具有交换能力、密码加速器或非易失性存储器控制器。
8.根据权利要求1所述的装置,其包括数字显示器,所述数字显示器被耦合到所述电路以呈现用户接口视图。
9.一种将门铃合并在请求消息中的方法,包括:
生成多个门铃,所述门铃目标定为用于根据快速外围组件互连PCIe规范运作的计算平台上的设备的相应多个存储器环或队列;
将所述多个门铃组合在高速缓存行结构中,所述高速缓存行结构包括针对每个门铃的分离的信息;以及
在单个写操作中将高速缓存行结构写入到用于计算平台的中央处理单元CPU的高速缓存或缓冲器,以使得所述多个门铃被布告到相应多个存储器环或队列。
10.根据权利要求9所述的方法,包括:
使得“写PCIe事务层分组TLP请求消息”被生成并且被发送到所述设备,所述“写PCIeTLP请求消息”包括针对每个门铃的分离的信息。
11.根据权利要求9所述的方法,包括:所述针对每个门铃的分离的信息包括针对每个相应的存储器环或队列的相应的标识符信息,用于唯一地标识每个相应的存储器环,并且包括尾指针,用以指示针对具有针对所述设备的有效请求的每个相应的存储器环或队列的相应地址范围。
12.根据权利要求9所述的方法,所述单个写操作包括通过使用写组合存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
13.根据权利要求9所述的方法,所述单个写操作包括通过使用写回存储器来将所述高速缓存行结构写入到所述高速缓存或缓冲器。
14.根据权利要求9所述的方法,包括所述高速缓存行结构具有64字节的大小,并且针对每个门铃的分离的信息具有8字节的大小。
15.根据权利要求9所述的方法,所述设备包括网络接口卡(NIC),其具有交换能力、密码加速器或非易失性存储器控制器。
16.至少一个包括多个指令的机器可读介质,所述指令响应于被系统执行使得所述系统实施根据权利要求9到15中任一个的方法。
17.一种将门铃合并在请求消息中的装置,其包括用于执行根据权利要求9到15中任一个所述的方法的构件。
CN201780073461.3A 2016-12-28 2017-11-07 用于将门铃合并在请求消息中的技术 Active CN109997117B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/392,181 US10884970B2 (en) 2016-12-28 2016-12-28 Techniques for coalescing doorbells in a request message
US15/392181 2016-12-28
PCT/US2017/060432 WO2018125384A1 (en) 2016-12-28 2017-11-07 Techniques for coalescing doorbells in a request message

Publications (2)

Publication Number Publication Date
CN109997117A CN109997117A (zh) 2019-07-09
CN109997117B true CN109997117B (zh) 2023-09-05

Family

ID=62629744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780073461.3A Active CN109997117B (zh) 2016-12-28 2017-11-07 用于将门铃合并在请求消息中的技术

Country Status (3)

Country Link
US (1) US10884970B2 (zh)
CN (1) CN109997117B (zh)
WO (1) WO2018125384A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180088978A1 (en) * 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
US10664420B2 (en) * 2018-04-19 2020-05-26 Avago Technologies International Sales Pte. Limited System and method for port-to-port communications using direct memory access
US10853255B2 (en) * 2019-01-25 2020-12-01 Dell Products, L.P. Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US11311800B2 (en) * 2019-08-09 2022-04-26 Sony Interactive Entertainment LLC Systems implementing high-speed data communication fabric for cloud gaming data storage and retrieval
US11656994B2 (en) * 2021-05-03 2023-05-23 Western Digital Technologies, Inc. Non-volatile memory with optimized read

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101165666A (zh) * 2006-10-17 2008-04-23 国际商业机器公司 在数据处理系统中建立地址转换的方法和装置
JP2008102929A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でネットワーク入出力(i/o)アダプタと通信するためにネットワーク・デバイス・ドライバによって使用されるバッファ・データ構造にアクセスするためのアドレス変換を管理するための方法、コンピュータ・プログラム、および装置(キュー・データ構造およびキャッシュされたアドレス変換を使用してネットワーク・アダプタと通信するための装置および方法)
CN102103552A (zh) * 2009-12-22 2011-06-22 Nxp股份有限公司 安全高速缓存存储器架构
CN102549555A (zh) * 2009-10-07 2012-07-04 惠普发展公司,有限责任合伙企业 主机存储器的基于通知协议的端点高速缓存
CN103038758A (zh) * 2010-06-02 2013-04-10 英特尔公司 改善集成非透明桥设备的操作的方法和系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543290B2 (en) 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US7617346B2 (en) 2007-02-27 2009-11-10 Integrated Device Technology, Inc. Rapid input/output doorbell coalescing to minimize CPU utilization and reduce system interrupt latency
US9069485B2 (en) 2012-12-20 2015-06-30 Oracle International Corporation Doorbell backpressure avoidance mechanism on a host channel adapter
US10452570B1 (en) * 2014-08-27 2019-10-22 Amazon Technologies, Inc. Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US20160275026A1 (en) 2015-03-20 2016-09-22 Intel Corporation Weakly ordered doorbell
US9747122B2 (en) 2015-04-16 2017-08-29 Google Inc. Virtual machine systems
EP4089531B1 (en) * 2016-12-31 2024-06-26 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101165666A (zh) * 2006-10-17 2008-04-23 国际商业机器公司 在数据处理系统中建立地址转换的方法和装置
JP2008102929A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でネットワーク入出力(i/o)アダプタと通信するためにネットワーク・デバイス・ドライバによって使用されるバッファ・データ構造にアクセスするためのアドレス変換を管理するための方法、コンピュータ・プログラム、および装置(キュー・データ構造およびキャッシュされたアドレス変換を使用してネットワーク・アダプタと通信するための装置および方法)
CN102549555A (zh) * 2009-10-07 2012-07-04 惠普发展公司,有限责任合伙企业 主机存储器的基于通知协议的端点高速缓存
CN102103552A (zh) * 2009-12-22 2011-06-22 Nxp股份有限公司 安全高速缓存存储器架构
CN103038758A (zh) * 2010-06-02 2013-04-10 英特尔公司 改善集成非透明桥设备的操作的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种面向写穿透Cache的写合并设计及验证;梅魁志等;《西安交通大学学报》;20100410(第04期);全文 *

Also Published As

Publication number Publication date
CN109997117A (zh) 2019-07-09
WO2018125384A1 (en) 2018-07-05
US10884970B2 (en) 2021-01-05
US20180181530A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
CN109997117B (zh) 用于将门铃合并在请求消息中的技术
US11755527B2 (en) Techniques for command validation for access to a storage device by a remote client
US10282132B2 (en) Methods and systems for processing PRP/SGL entries
JP5646750B2 (ja) 周辺機器のページフォルト(pagefault)を処理する機構
CN107111451B (zh) 用于管理多个顺序写入流的设备和方法
US9280290B2 (en) Method for steering DMA write requests to cache memory
US20200371914A1 (en) Data consistency and durability over distributed persistent memory systems
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US20130173837A1 (en) Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
US10152275B1 (en) Reverse order submission for pointer rings
TW201721356A (zh) 針對關於記憶體裝置進入低功率態的技術
US20220100425A1 (en) Storage device, operating method of storage device, and operating method of computing device including storage device
US10754802B2 (en) Dynamically remapping in-process data transfers
US20180004649A1 (en) Techniques to Format a Persistent Memory File
EP4235441A1 (en) System, method and apparatus for peer-to-peer communication
US20190227729A1 (en) Two Stage Command Buffers To Overlap Iommu Map And Second Tier Memory Reads
CN114493978A (zh) 加速器控制器中心
EP3798828A2 (en) Techniques for decoupled access-execute near-memory processing
US11861219B2 (en) Buffer to reduce write amplification of misaligned write operations
WO2020252763A1 (en) Adaptive pipeline selection for accelerating memory copy operations
US9535850B1 (en) System and method for efficient DMA transfers
WO2022170452A1 (zh) 一种访问远端资源的系统及方法
US9608842B2 (en) Providing, at least in part, at least one indication that at least one portion of data is available for processing
CN113688404A (zh) 从主机到介质的远端存储器数据传递的端到端数据保护
US12111779B2 (en) Node identification allocation in a multi-tile system with multiple derivatives

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