CN115481071A - 针对计算机总线的非投递式写事务 - Google Patents
针对计算机总线的非投递式写事务 Download PDFInfo
- Publication number
- CN115481071A CN115481071A CN202211327255.XA CN202211327255A CN115481071A CN 115481071 A CN115481071 A CN 115481071A CN 202211327255 A CN202211327255 A CN 202211327255A CN 115481071 A CN115481071 A CN 115481071A
- Authority
- CN
- China
- Prior art keywords
- work
- memory
- request
- queue
- work queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Retry When Errors Occur (AREA)
- Bus Control (AREA)
Abstract
系统和设备可以包括控制器和命令队列,以缓冲进入设备的传入写请求。控制器可以通过链路从客户端将事务层分组(TLP)中非投递式写请求(例如,延迟存储器写(DMWr)请求)接收到命令队列;确定命令队列可以接受DMWr请求;从TLP识别成功完成(SC)消息,该成功完成消息指示DMWr请求被接受到命令队列中;并通过链路将指示DMWr请求已被接受到命令队列中的SC消息发送到客户端。控制器可以接收第二TLP中第二DMWr请求;确定命令队列已满;并响应于命令队列已满而发送要发送到客户端的存储器请求重试状况(MRS)消息。
Description
本申请是2020年3月18日提交的申请号为202010193031.9的专利申请的分案申请。
相关申请的交叉引用
根据35 U.S.C.§119(e),本公开要求于2019年4月19日提交的美国临时专利申请序列号62/836,288的权益,其全部内容通过引用合并于此。
背景技术
中央处理单元(CPU)执行通用计算任务,例如运行应用软件和操作系统。图形处理器、图像处理器、数字信号处理器和固定功能加速器可处理诸如图形和图像处理之类的特殊计算任务。在当今的异构机器中,每种类型的处理器以不同的方式编程。与当今的通用处理器相比,大数据处理时代要求以更低的能耗获得更高的性能。加速器(例如,定制的固定功能单元或定制的可编程单元)正在帮助满足这些需求。
附图说明
图1是示出根据本公开的实施例的包括多核处理器的计算系统的框图的实施例的示意图。
图2是根据本公开的实施例的示例加速器设备的示意图。
图3是示例计算机系统的示意图,该示例计算机系统包括加速器和通过多协议链路耦合到处理器的一个或多个计算机处理器芯片。
图4是根据本公开的实施例的示例工作队列实现的示意图。
图5是示例数据流式传输加速器(DSA)设备的示意图,该示例数据流式传输加速器设备包括接收通过I/O结构接口提交的描述符的多个工作队列。
图6A至图6B是示出根据本公开的实施例的示例共享工作队列实现的示意图。
图7A-图7D是示出根据本公开的实施例的示例延迟存储器写(DMWr)请求和响应消息流的示意图。
图8是根据本公开的实施例的用于执行可缩放工作提交的过程流程图。
图9A是根据本公开的实施例的64位DMWr分组定义的示意图。
图9B是根据本公开的实施例的32位DMWr分组定义的示意图。
图10示出了包括互连架构的计算系统的实施例。
图11示出了包括分层堆栈的互连架构的实施例。
图12示出了在互连架构内要生成或接收的请求或分组的实施例。
图13示出了用于互连架构的发射器和接收机对的实施例。
图14示出了包括处理器的计算系统的框图的另一实施例。
图15示出了包括多个处理器插槽的计算系统的框的实施例。
具体实施方式
在以下描述中,阐述了许多特定细节,例如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、具体的处理器流水线级和操作等,以便提供对本公开的透彻理解。然而,对于本领域的技术人员将显而易见的是,不需要采用这些具体细节来实践本公开。在其他实例中,众所周知的组件或方法,例如特定和替代的处理器架构、所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现,代码中特定算法的表达、特定的掉电和门控技术/逻辑以及计算机系统的其他特定的操作细节为了避免不必要地使本公开不清楚,没有详细描述。
尽管以下实施例可以参考诸如在计算平台或微处理器中的特定集成电路中的能量节省和能量效率来描述,但是其他实施例可应用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以受益于更好的能量效率和能量节省的其他类型的电路或半导体器件。例如,公开的实施例不限于桌面型计算机系统或Ultrabooks TM。并且还可以用在其他设备中,例如手持设备、平板计算机,其他轻薄笔记本计算机、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下面介绍的功能和操作的任何其他系统。此外,本文所述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和效率的软件优化。如在下面的描述中将显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件,固件,软件还是它们的组合)对于平衡性能的“绿色技术”未来至关重要。
随着计算系统的发展,其中的组件变得越来越复杂。结果,用于在组件之间耦合和通信的互连架构的复杂度也在增加,以确保满足带宽要求以实现最佳的组件操作。此外,不同的细分市场需要互连架构的不同方面,以满足市场的需求。例如,服务器需要更高的性能,而移动生态系统有时可以牺牲整体性能来节省功耗。然而,大多数结构的唯一目的是提供最大可能的性能并最大程度地节省功率。以下,讨论了许多互连,其将潜在地受益于本文描述的本公开的方面。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC)或执行代码的其他设备。在一个实施例中,处理器100包括至少两个核-核101和102,其可以包括非对称核或对称核(示出的实施例)。然而,处理器100可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够维持处理器状态(例如,执行状态或架构状态)的任何其他元件。换句话说,在一个实施例中,处理元件是指能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。物理处理器(或处理器插槽)通常是指集成电路,该集成电路可能包括任意数量的其他处理元件,例如核或硬件线程。
核通常是指位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常是指位于集成电路上的、能够维持独立架构状态的任何逻辑,其中,独立维护的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其他资源专用于架构状态时,硬件线程与核的命名法之间的界线重叠。然而,操作系统经常将核和硬件线程视为单独的逻辑处理器,其中操作系统能够单独调度每个逻辑处理器上的操作。
如图1所示,物理处理器100包括两个核,即核101和102。这里,核101和102被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核101包括乱序处理器核,而核102包括有序处理器核。但是,可以从任何类型的核中分别选择核101和102,所述任何类型的核例如本机核、软件管理的核、适合于执行本机指令集架构(ISA)的核,适合于执行转换后的指令集架构(ISA)的核、共同设计的核或其他已知的核。在异构核环境(即,非对称核)中,某种形式的转换(例如二进制转换)可用于在一个或两个核上调度或执行代码。为了进一步讨论,下面进一步详细描述在核101中示出的功能单元,因为核102中的单元在所示实施例中以类似的方式操作。
如图所示,核101包括两个硬件线程101a和101b,它们也可以称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统的软件实体潜在地将处理器100视为四个单独的处理器,即,四个逻辑处理器或能够同时执行四个软件线程的处理元件。如上所述,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,而第四线程可以与架构状态寄存器102b相关联。这里,如上所述,每个架构状态寄存器(101a、101b、102a和102b)可以被称为处理元件、线程槽或线程单元。如图所示,架构状态寄存器101a被复制到架构状态寄存器101b中,因此能够为逻辑处理器101a和逻辑处理器101b存储各个架构状态/上下文。在核101中,还可以为线程101a和101b复制其他较小的资源,例如分配器和重命名器块130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,例如重排序/引退单元135中的重排序缓冲器、ILTB120、加载/存储缓冲器和队列。其他资源(例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140和乱序单元135的某些部分)可能完全共享。
处理器100通常包括其他资源,这些资源可以被完全共享,通过分区共享,或由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,以及包括任何其他未示出的已知功能单元、逻辑或固件。如图所示,核101包括简化的、代表性的乱序(OOO)处理器核。但是在不同的实施例中可以使用有序处理器。OOO核包括:分支目标缓冲器120,用于预测要执行/采用的分支;以及指令转换缓冲器(I-TLB)120,用于存储指令的地址转换条目。
核101还包括耦合到获取单元120以解码获取的元素的解码模块125。在一个实施例中,获取逻辑包括分别与线程槽101a、101b相关联的各个定序器。通常,核101与第一ISA关联,该第一ISA定义/指定可在处理器100上执行的指令。作为第一ISA一部分的机器代码指令通常包括该指令的一部分(称为操作码),该指令引用/指定要执行的指令或操作。解码逻辑125包括电路,该电路从它们的操作码中识别这些指令,并将已解码的指令传递到流水线中,以进行第一ISA定义的处理。例如,如下面在下面更详细讨论的,在一个实施例中,解码器125包括被设计或适于识别诸如事务指令之类的特定指令的逻辑。作为解码器125的识别的结果,架构或核101采取特定的、预定义动作来执行与适当指令相关联的任务。重要的是要注意,这里描述的任何任务、块、操作和方法都可以响应于单个或多个指令来执行;其中一些可能是新指令或旧指令。注意,在一个实施例中,解码器126识别相同的ISA(或其子集)。备选地,在异构核环境中,解码器126识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块130包括分配器,以保留诸如寄存器文件之类的资源以存储指令处理结果。然而,线程101a和101b潜在地能够乱序执行,其中分配器和重命名器块130还保留其他资源,例如重排序缓冲器以跟踪指令结果。单元130还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器100内部的其他寄存器。重排序/引退单元135包括诸如上述重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持乱序执行,然后按顺序引退乱序执行的指令。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器文件,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存将存储最近使用/操作的元素(例如数据操作数),这些元素可能保持在存储器一致性状态中。D-TLB将存储最近的虚拟/线性到物理地址的转换。作为特定示例,处理器可以包括页表结构,以将物理存储器分成多个虚拟页。
这里,核101和102共享对更高级别或进一步高速缓存的访问,例如与片上接口110关联的二级高速缓存。注意,更高级别或进一步指的是增加或降低与执行单元的距离。在一个实施例中,较高级高速缓存是最后级数据高速缓存-处理器100上的存储器层级中的最后级高速缓存-诸如二或三级数据高速缓存。然而,高级高速缓存不受限制,因为它可以与指令高速缓存相关联或包括指令高速缓存。相反,可以在解码器125之后耦合跟踪高速缓存(一种指令高速缓存),以存储最近解码的轨迹。在此,指令潜在地指代宏指令(即,由解码器识别的通用指令),其可以被解码为多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。从历史上看,下面将更详细描述的存储器控制器已被包括在处理器100外部的计算系统中。在此情况下,片上接口11用于与处理器100外部的设备进行通信,所述处理器100外部的设备例如系统存储器175,芯片组(通常包括连接到存储器175的存储器控制器集线器和连接外围设备的I/O控制器集线器)、存储器控制器集线器、北桥或其他集成电路。并且在这种情况下,总线105可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或与系统中的其他设备共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。注意,设备180可以包括耦合到存储器控制器集线器的图形加速器、处理器或卡、耦合到I/O控制器集线器的数据存储、无线收发器、闪存设备、音频控制器、网络控制器或其他已知的设备。
然而,近来,随着更多的逻辑和设备被集成在诸如SOC之类的单个管芯上,这些设备中的每一个都可以被并入处理器100中。例如,在一个实施例中,存储器控制器集线器位于与处理器100同一封装和/或管芯上。这里,核的一部分(核上的部分)110包括一个或多个控制器,用于与其他设备(例如存储器175或图形设备180)接合。该配置包括互连,并且与此类设备接合的控制器通常称为核上(或非核配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。但是,在SOC环境中,甚至更多的设备(例如网络接口、协处理器、存储器175、图形处理器180和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上,以向小规模因子提供高功能以及低功耗。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177,以编译、转换和/或优化应用代码176,以支持本文描述的装置和方法或与其接合。编译器通常包括程序或一组程序,以将源文本/代码转换为目标文本/代码。通常,使用编译器对程序/应用代码进行编译是分多个阶段以及遍进行的,以将高层编程语言代码转换为低级机器或汇编语言代码。但是,单遍编译器仍可用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包含多个阶段,但大多数情况下,这些阶段包含在两个通用阶段中:(1)前端,即通常在其中可以进行句法处理、语义处理以及某些转换/优化的地方,以及(2)后端,即通常进行分析、转换、优化和代码生成。一些编译器引用中间语言,该中间语言说明了编译器的前端和后端之间的轮廓模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以发生在编译器的任何上述阶段或过程以及任何其他已知阶段或过程中。作为说明性示例,编译器可能在一个或多个编译阶段插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,然后在转换阶段期间将调用/操作转换为低级代码。注意,在动态编译期间,编译器代码或动态优化代码可能会插入此类操作/调用,并优化代码以在运行时期间执行。作为特定的说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。在此,程序代码可以包括动态优化代码、二进制代码或其组合。
类似于编译器,诸如二进制转换器的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指:(1)执行编译器程序、优化代码优化器或动态或静态转换器以编译程序代码,维护软件结构,执行其他操作,优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码(例如库),以维护软件结构,执行其他软件相关的操作或优化代码;或(4)其组合。
图2是根据本公开的实施例的示例加速器设备200的示意图。如图2所示,在一个实现中,加速器包括PCI配置寄存器204和MMIO寄存器210,其可以被编程为提供对设备后端资源212的访问。在一个实现中,在PCI配置空间中由一组基地址寄存器(BAR)202指定MMIO寄存器210的基地址。与以前的实现不同,本文描述的数据流式传输加速器(DSA)的一种实现没有实现多个通道或PCI功能,因此设备中每个寄存器只有一个实例。但是,单个平台中可能有多于一个DSA设备。
一个实现可以提供此处未描述的其他性能或调试寄存器。任何此类寄存器都应被视为特定于实现。
PCI配置空间访问按对齐的1字节、2字节或4字节访问执行。针对在PCI配置空间中访问未实现的寄存器和保留位的规则,请参见《快速PCI基本规范》。
对BAR0区域(能力、配置和状态寄存器)的MMIO空间访问是按对齐的1、2、4或8字节访问执行的。8字节访问只能用于8字节寄存器。软件不应读取或写未实现的寄存器。使用ENQCMD、ENQCMDS或MOVDIR64B指令(下面将详细介绍),对BAR 2和BAR 4区域的MMIO空间访问应作为64字节访问执行。应该使用ENQCMD或ENQCMDS来访问配置为共享的工作队列(SWQ),并且必须使用MOVDIR64B访问配置为专用的工作队列(DWQ)。
DSA PCI配置空间的一种实现实现了三个64位BAR202。设备控制寄存器(BAR0)是64位BAR,其中包含设备控制寄存器的物理基址。这些寄存器提供有关设备能力、控制的信息以配置和使能设备、以及设备的状况。BAR0区域的大小取决于中断消息存储208的大小,该大小是32KB加上中断消息存储器条目208的数量乘以16,四舍五入到下一个幂2。例如,如果设备支持1024个中断消息存储条目208,中断消息存储为16KB,并且BAR0的大小为64KB。
BAR2是64位BAR,其中包含特权和非特权门户(portal)的物理基址。每个门户的大小为64字节,并且位于单独的4KB页面上。这允许使用CPU页表将门户独立映射到不同的地址空间。门户用于向设备提交描述符。特权门户由内核模式软件使用,而非特权门户由用户模式软件使用。非特权门户的数量与支持的工作队列的数量相同。特权门户的数量是工作队列(WQ)×(MSI-X-table-size–1)。用于提交描述符的门户的地址允许设备确定将描述符放入哪个WQ,门户是特权的还是非特权的,以及哪个MSI-X表条目可用于完成中断。例如,如果设备支持8个WQ,则给定描述符的WQ为(门户地址>>12)&0x7。如果门户地址>>15为0,则表示该门户不具有特权;否则它具有特权,并且用于完成中断的MSI-X 206表索引是门户地址>>15。位5:0必须为0。位11:6被忽略;因此,页面上任何64字节对齐的地址都可以使用,效果相同。
使用非特权门户的描述符提交要服从WQ的占用阈值,该阈值是使用工作队列配置(WQCFG)寄存器配置的。使用特权门户的描述符提交不受此阈值的限制。向SWQ的描述符提交必须使用ENQCMD或ENQCMDS提交。对SWQ门户的任何其他写操作都将被忽略。向DWQ的描述符提交必须使用64字节的写操作提交。软件使用MOVDIR64B,以确保不中断的64字节写。禁用或专用WQ门户的ENQCMD或ENQCMDS返回重试。对DWQ门户的任何其他写操作都将被忽略。对BAR2地址空间的任何读操作都返回全1。内核模式描述符应使用特权门户提交,以便接收完成中断。如果使用非特权门户提交了内核模式描述符,则无完成中断可以被请求。用户模式描述符可以使用特权或非特权门户提交。
BAR2区域中的门户数量是设备支持的WQ数量乘以MSI-X 206表大小。MSI-X表的大小通常是WQ的数量加1。因此,例如,如果设备支持8个WQ,则BAR2的有用大小将是8×9×4KB=288KB。BAR2的总大小将舍入为2的下一个幂,即512KB。
BAR4是一个64位BAR,其中包含来宾门户的物理基址。每个来宾门户的大小均为64字节,并且位于单独的4KB页面中。这允许使用CPU扩展页表(EPT)将门户独立映射到不同的地址空间。如果GENCAP中的“中断消息存储支持”字段为0,则不会实现此BAR。
来宾内核模式软件可以使用来宾门户向设备提交描述符。来宾门户的数量是中断消息存储中条目的数量乘以支持的WQ数量。用于提交描述符的来宾门户的地址允许设备确定描述符的WQ,并且还可以使用中断消息存储条目来生成描述符完成的完成中断(如果它是内核模式描述符,并且如果在描述符中设置了请求完成中断标志)。例如,如果设备支持8个WQ,则给定描述符的WQ为(来宾门户地址>>12)&0x7,并且用于完成中断的中断表条目索引为来宾门户地址>>15。
在一种实现中,MSI-X是DSA提供的唯一PCIe中断能力,并且DSA不实现传统的PCI中断或MSI。该寄存器结构的详细信息在快速PCI规范中。
在一种实现中,三种快速PCI能力控制地址转换。如表1所示,仅支持针对这些能力的某些值组合。在将通用控制寄存器(GENCTRL)中的使能位设置为1时检查这些值。
表1.支持的能力和相关值的组合。
如果在启用设备时通过软件更改了这些功能中的任何一项,则设备可能会停止运行,并且在软件错误寄存器中报告错误。
在一种实现中,软件配置PASID能力以控制设备是否使用PASID来执行地址转换。如果禁用了PASID,则只能使用物理地址。如果启用了PASID,则可以使用虚拟或物理地址,具体取决于IOMMU配置。如果启用了PASID,则应同时启用地址转换服务(ATS)和页面请求服务(PRS)。
在一种实现中,软件配置ATS能力以控制设备在执行存储器访问之前是否应转换地址。如果在IOMMU 2810中启用了地址转换,则必须在设备中启用ATS,以获得可接受的系统性能。如果IOMMU 2810中未启用地址转换,则必须禁用ATS。如果禁用了ATS,则只能使用物理地址,并且所有存储器访问都使用未转换的访问来执行。如果启用了PASID,则必须启用ATS。
在一种实现中,软件配置PRS能力以控制地址转换失败时设备是否可以请求页面。如果启用了PASID,则必须启用PRS;而如果禁用了PASID,则必须禁用PRS。
一些实现利用虚拟存储器空间,该虚拟存储器空间在一个或多个处理器核、加速器设备和/或其他类型的处理设备(例如,I/O设备)之间无缝共享。特别地,一种实现利用共享虚拟存储器(SVM)架构,其中在内核、加速器设备和/或其他处理设备之间共享相同的虚拟存储器空间。另外,一些实现包括物理系统存储器的异构形式,其使用公共虚拟存储器空间来寻址。物理系统存储器的异构形式可以使用不同的物理接口以用于与DSA架构连接。例如,加速器设备可以直接耦合到诸如高带宽存储器(HBM)的本地加速器存储器,并且每个核可以直接耦合至诸如动态随机存取存储器(DRAM)的主机物理存储器。在此示例中,共享虚拟存储器(SVM)被映射到HBM和DRAM的组合物理存储器,以便加速器、处理器核和/或其他处理设备可以使用一致的一组虚拟存储器地址访问HBM和DRAM。
这些和其他特征加速器将在下面详细描述。通过简要概述,不同的实现可以包括以下基础结构特征中的一个或多个:
共享虚拟存储器(SVM):某些实现支持SVM,SVM允许用户级别的应用使用描述符中的虚拟地址直接向DSA提交命令。DSA可以支持使用包括处理页面错误的输入/输出存储器管理单元(IOMMU)将虚拟地址转换为物理地址。描述符引用的虚拟地址范围可能跨越分布在多种异构存储类型上的多个页面。另外,一种实现还支持使用物理地址,只要数据缓冲区在物理存储器中是连续的即可。
部分描述符完成:借助SVM支持,操作可能在地址转换期间遇到故障。在某些情况下,设备可能会在遇到故障的点处终止相对应描述符的处理,并向软件提供完成记录,其指示部分完成和故障信息,以允许软件采取补救措施并在解决故障后重试操作。
批处理:某些实现支持在“批”中提交描述符。批处理描述符指向一组实际上连续的工作描述符(即包含实际数据操作的描述符)。在处理批处理描述符时,DSA从指定的存储器中取工作描述符并进行处理。
无状态设备:设计一种实现中的描述符,使得处理描述符所需的所有信息都进入描述符有效载荷本身。这允许设备存储很少的客户端特定状态,从而提高了其可缩放性。一个例外是完成中断消息,该完成中断消息在使用时由受信任的软件配置。
高速缓存分配控制:这允许应用指定是写到高速缓存还是绕过高速缓存并直接写到存储器。在一种实现中,完成记录总是写到高速缓存中。
共享工作队列(SWQ)支持:如下所述,某些实现通过使用入队命令(ENQCMD)和入队命令作为主管(ENQCMDS)指令,通过共享工作队列(SWQ)支持可缩放的工作提交。在此实现中,SWQ由多个应用共享。可以从用户(非环0)或主管(环0)特权级别执行ENQCMD。可以从超级用户(0环)特权级别执行ENQCMDS。
专用工作队列(DWQ)支持:在某些实现中,使用MOVDIR64B指令支持通过专用工作队列(DWQ)提交高吞吐量工作。在此实现中,DWQ专用于一个特定的应用。
QoS支持:某些实现允许为每个工作队列指定服务质量(QoS)级别(例如,通过内核驱动器)。然后,它可以将不同的工作队列分配给不同的应用,从而允许来自从具有不同优先级的工作队列中分派的不同应用的工作。可以对工作队列进行编程,以将特定通道用于结构QoS。
偏置高速缓存一致性机制
一种实现提高了具有直接连接的存储器(例如,堆栈式DRAM或HBM)的加速器的性能,并简化了使用具有直接连接的存储器的加速器的应用的应用开发。此实现允许将加速器连接的存储器映射为系统存储器的一部分,并使用共享虚拟存储器(SVM)技术(例如当前IOMMU实现中使用的技术)进行访问,但不会遭受与完整系统高速缓存一致性相关的典型性能缺陷。
能够访问加速器连接的存储器作为系统存储器的一部分,而不会增加繁琐的高速缓存一致性开销的能力为加速器卸载提供了一个有利的操作环境。作为系统地址映射的一部分访问存储器的能力允许主机软件可以设置操作数,并访问计算结果,而无需传统I/ODMA数据副本的开销。此类传统副本涉及相对于简单的存储器访问而言效率低下的驱动器调用、中断和存储器映射的I/O(MMIO)访问。同时,在没有高速缓存一致性开销的情况下访问加速器连接的存储器的能力对于卸载计算的执行时间至关重要。例如,在具有大量流式传输写存储器业务的情况下,高速缓存一致性开销可以将加速器看到的有效写带宽减少一半。操作数设置的效率、结果访问的效率和加速器计算的效率都在确定加速器卸载如何发挥作用方面起作用。如果卸载工作的成本(例如,设置操作数;获取结果)的成本过高,则卸载可能根本没有回报,或者可能会将加速器限制在非常大的工作上。加速器执行计算的效率可以具有相同的效果。
一种实现取决于发起存储器访问的实体(例如,加速器、核等)和被访问的存储器(例如,主机存储器或加速器存储器)应用不同的存储器访问和一致性技术。这些技术通常称为“一致性偏置”机制,该机制为加速器连接的存储器提供了两组高速缓存一致性流,其中一组进行了优化,以实现对其连接存储器的有效加速器访问,而第二组被优化了用于对加速器或者连接存储器的主机访问和对对加速器连接存储器的共享存储器/主机的访问。此外,它包括在这些流之间切换的两种技术,一种是由应用软件驱动,而另一种是由自主硬件提示驱动。在这两组一致性流中,硬件保持完整的高速缓存一致性。
图3是示例计算机系统300的示意图,该示例计算机系统300包括加速器和通过多协议链路耦合到处理器的一个或多个计算机处理器芯片。如图3中大体上所示,一种实现适用于计算机系统,该计算机系统包括加速器302和具有处理器核和I/O电路304的一个或多个计算机处理器芯片,其中加速器302通过多协议链路314耦合到处理器。在一种实现中,多协议链路314是支持多种不同协议的动态多路复用链路,这些协议包括但不限于以上详述的协议。然而,应当注意,本发明的基本原理不限于任何特定的协议集。另外,注意,取决于实现,加速器302和核I/O 304可以集成在相同的半导体芯片或不同的半导体芯片上。
在所说明的实现中,加速器存储器总线316将加速器302耦合到加速器存储器306,且单独的主机存储器总线318将核I/O 304耦合到主机存储器308。如上所述,加速器存储器306可以包括高带宽存储器(HBM)或堆叠的DRAM(在此描述了其一些示例),并且主机存储器308可以包括诸如双倍数据速率同步动态随机存取存储器之类的DRAM(例如,DDR3 SDRAM、DDR4 SDRAM)。然而,本发明的基本原理不限于任何特定类型的存储器或存储器协议。
在一种实现中,加速器302和在处理器芯片304内的处理核上运行的“主机”软件都使用称为“主机偏置”流和“设备偏置”流的两组不同的协议流来访问加速器存储器306。如下所述,一种实现支持多个选项以用于调制和/或选择用于特定存储器访问的协议流。
一致性偏置流程部分地在加速器302和处理器芯片304中的一个之间的多协议链路314上在两个协议层上实现:CAC协议层和MA协议层。在一个实现中,通过以下方式启用一致性偏置流程:(a)以新方式使用CAC协议中的现有操作码,(b)向现有MA标准添加新操作码,以及(c)对MA协议的支持添加到多协议链路302(以前的链路仅包括CAC和PCDI)。注意,多协议链路不仅限于仅支持CAC和MA。在一种实现中,仅需要支持至少那些协议。
如本文中所使用的,“主机偏置”流,如图3所示是一组流,其将所有请求通过加速器302所附接到的处理器芯片304中的标准一致性控制器312集中到加速器存储器306,包括来自加速器本身的请求。这使加速器302采取电路路由以访问其自己的存储器,但是允许使用处理器的标准一致性控制器312将来自加速器302和处理器核I/O 304的访问保持为一致性。在一种实现中,流使用CAC操作码,以与处理器核312向一致性控制器312发出请求的方式相同或相似的方式,通过多协议链路向处理器的一致性控制器312发出请求。例如,处理器芯片的一致性控制器312可以发出UPI和CAC一致性消息(例如,监听),其是代表加速器对所有对等处理器核芯片(例如304)和内部处理器代理的来自加速器302的请求所产生的,就像它们对来自处理器核304的请求一样。以这种方式,在加速器302与处理器核I/O 304访问的数据之间保持了一致性。
在一种实现中,一致性控制器312还通过多协议链路314有条件地向加速器的存储器控制器310发布存储器访问消息。这些消息类似于一致性控制器312发送到存储器控制器的消息,所述存储器控制器在其处理器管芯本地,并且包括新的操作码,这些新的操作码允许将数据直接返回到加速器302内部的代理,而不是强制将数据返回到多协议链路314的处理器一致性控制器312,然后通过多协议链路314作为CAC响应返回到加速器302。
在图3中所示的“主机偏置”模式的一种实现中,来自处理器核304的、针对加速器连接的存储器306的所有请求被直接发送到处理器一致性控制器312,就像它们针对正常主机存储器308一样。一致性控制器312可以应用其标准高速缓存一致性算法并发送其标准高速缓存相关性消息,就像它们对加速器302的访问一样进行访问,以及就像对普通主机存储器308一样进行访问。相关性控制器312也有条件地通过多协议链路314发送针对此类请求的MA命令,尽管在这种情况下,MA流跨多协议链路314返回数据。
图4是根据本公开的实施例的示例工作队列实现400的示意图。在某些实现中,工作队列(WQ)保存软件提交的“描述符”、用于实施服务质量(QoS)和公平性策略的仲裁器、用于处理描述符的处理引擎、地址转换和高速缓存接口以及存储器读取/写接口。描述符定义了要完成的工作范围。如图4所示,在一种实现中,存在两种不同类型的工作队列:专用工作队列402和共享工作队列404。专用工作队列402存储单个应用416的描述符,而共享工作队列404存储多个应用410-414提交的描述符。硬件接口/仲裁器406根据指定的仲裁策略(例如,基于每个应用410-416的处理要求和QoS/公平性策略)将描述符从工作队列402-404调度到加速器处理引擎408。
端点设备上的共享工作队列支持
图4示出了共享工作队列(SWQ)的概念,其允许多个非合作软件代理(应用410-414)利用本文描述的ENQCMD/S指令通过共享工作队列404提交工作。
以下注意事项适用于实现共享工作队列(SWQ)的端点设备。
SWQ及其枚举:设备物理功能(PF)可以支持一个或多个SWQ。通过设备MMIO地址范围内的64字节对齐和大小的寄存器(在此称为SWQ_REG),每个SWQ可以访问进行非投递式写入队。建议设备上的每个此类SWQ_REG都位于唯一的系统页面大小(4KB)区域中。针对设备的设备驱动器负责通过适当的软件接口向软件报告/枚举SWQ功能、支持的SWQ数量以及相对应的SWQ_REG地址。驱动器还可以选择地报告出于软件调整或信息目的而支持的SWQ的深度(尽管对于功能正确性而言并非必需)。对于支持多种物理功能的设备,建议为每个物理功能支持独立的SWQ。
单根I/O虚拟化(SR-IOV)设备上的SWQ支持:支持SR-IOV的设备可以为每个虚拟功能(VF)支持独立的SWQ,这些SWQ通过相应VF基址寄存器(BAR)中的SWQ_REG公开。此设计点允许跨VF的针对工作提交的最大性能隔离,并且可能适用于少量到中等数量的VF。对于支持大量VF的设备(其中每个VF独立的SWQ不可行),单个SWQ可以跨多个VF共享。即使在这种情况下,每个VF在其VF BAR中都有自己的专用SWQ_REG,除非它们由跨共享SWQ的VF的公共SWQ支持。对于此类设备设计,可以由硬件设计静态确定哪些VF共享SWQ,或者可以通过物理功能及其驱动器动态设置/缩减给定VF的SWQ_REG到SWQ实例之间的映射。跨VF共享SWQ的设备设计需要特别注意QoS和防止拒绝服务攻击,如本节稍后所述。当跨VF共享SWQ时,必须在设备设计中注意识别哪个VF收到了SWQ接受的入队请求。从从SWQ分派工作请求时,设备应确保上游请求已用相应VF的请求者ID(总线/设备/功能号)正确标记(除了在入队请求有效负载中传达的PASID之外))。
使非投递式写地址入队:需要支持SWQ的端点设备接受对通过其PF或VF存储器BAR路由的任何地址的非投递式写入队。对于端点设备接收到的非SWQ_REG地址的任何入队非投递式写请求,可能要求设备不要将其视为错误(例如,格式错误的TLP等),而是返回带有重试(MRS)的完成状态的完成。可以这样做以确保非特权(ring-3或ring-0VMX来宾)软件使用ENQCMD/S指令错误地或恶意地将入队存储分配给支持SWQ的设备上的非SWQ_REG地址,不会导致具有特定于平台的错误处理后果的非致命性或致命错误报告。
对SWQ_REG的非入队请求处理:支持SWQ的端点设备可以将非入队请求(正常的存储器写和读取)静默丢弃到SWQ_REG地址,而不将其视为致命错误或非致命错误。对SWQ_REG地址的读取请求可能会返回成功的完成响应(与UR或CA相反),且请求的数据字节的值均为1。端点设备无需进行任何操作即可直接丢弃对SWQ_REG地址的普通存储器(投递式)写请求。可以这样做以确保非特权软件无法生成对SWQ_REG地址的正常读写请求,从而错误或恶意地导致具有特定于平台的错误处理后果的非致命或致命错误报告。
SWQ队列深度和存储:SWQ队列深度和存储是特定于设备实现的。设备设计应确保为SWQ支持足够的队列深度,以实现设备的最大利用率。SWQ的存储可以在设备上实现。SoC上的集成设备可能利用被盗的主存储器(保留给设备使用的非OS可见私有存储器)作为SWQ的溢出缓冲区,从而允许比设备上存储更大的SWQ队列深度。对于此类设计,溢出缓冲区的使用对软件是透明的,设备硬件决定何时溢出(而不是丢弃入队请求并发送重试完成状况),从溢出缓冲区中提取以执行命令,并维护任何命令-特定的订购要求。出于所有目的,此类溢出缓冲区的使用等效于将本地设备连接的DRAM用于SWQ存储的分立设备。在被盗存储器中具有溢出缓冲区的设备设计中,必须格外小心,以确保此类被盗存储器不受对其分配缓冲区的设备进行溢出缓冲区读和写以外的任何访问的保护。
非阻塞SWQ行为:出于性能原因,设备实现应以“成功”或“重试”完成状态对“使非投递式写请求入队”做出快速响应,并且不阻塞要被释放以接受请求的SWQ容量入队列完成。接受或拒绝对SWQ的入队请求的决定可以基于容量、QoS/占用率或任何其他策略。接下来描述一些示例QoS注意事项。
SWQ QoS注意事项:对于以SWQ_REG地址为目标的入队非投递式写,端点设备可以应用准入控制来决定接受对相应SWQ的请求(并发送成功的完成状态)或丢弃请求(并发送重试完成状况)。准入控制可以是特定于设备和使用的,并且可以通过物理功能(PF)驱动器接口将由硬件支持/强制执行的特定策略公开给软件。因为SWQ是与多个生产者客户端共享的资源,所以设备实现必须确保足够的保护,以防止跨生产者的拒绝服务攻击。SWQ的QoS仅指接受工作请求(通过入队请求)到SWQ,并且在处理由不同生产者提交的工作请求时,与设备硬件对QoS如何被应用来共享设备的执行资源所应用的任何QoS正交。下面描述了一些示例方法以用于配置端点设备以强制进行将入队请求接受到SWQ的接纳策略。这些文档仅用于说明目的,确切的实现选择将特定于设备。
这些CPU指令产生原子的非投递式写事务(写事务,针对其将完成响应返回给CPU)。非投递式写事务的地址发送就像到目标设备的任何普通MMIO写一样。非投递式写事务带有以下信息:
a.执行此指令的客户端的地址空间的标识。对于本公开,我们使用“进程地址空间标识符”(PASID)作为客户端地址空间标识符。取决于软件的使用,PASID可以用于任何类型的客户端(进程、容器、VM等)。本发明的其他实现可以使用不同的识别方案。ENQCMD指令使用与当前软件线程关联的PASID(希望使用线程上下文切换器上的XSAVES/XRSTORS指令来保存/恢复OS的某些内容)。ENQCMDS指令允许执行该指令的特权软件将PASID指定为ENQCMDS指令的源操作数的一部分。
b.执行此指令的客户端的特权(管理程序或用户)。ENQCMD的执行始终指示用户许可。ENQCMDS允许执行它的超级用户模式软件指定用户特权(如果它代表某个ring-3客户端执行)或超级用户特权(指示命令来自内核模式客户端)作为ENQCMDS指令的源操作数的一部分。
c.特定于目标设备的命令有效负载。从源操作数中读取命令有效负载,并通过非投递式写有效负载中的指令按原样传送命令有效负载。取决于设备,设备可能以不同的方式使用ENQCMD/S。例如,某些设备可能会将其视为门铃命令,其中有效负载指定了要从中提取的存储器中的实际工作描述符。其他设备可能会使用实际的ENQ命令来携带设备特定的工作描述符,从而避免了从主存储器读取工作描述符的延迟/开销。
设备上的SWQ处理接收到的非投递式写请求,如下所示:
在设备SWQ的入口处,检查SWQ中是否有空间接受请求。如果没有空间,则丢弃请求并返回完成状况中指示“拒绝/重试”的完成。
如果有空间可以接受对SWQ的命令,则基于请求中的属性(例如,将请求路由到的PASID,特权或SWQ_PREG地址)和特定客户端的各种设备特定的QoS设置来执行任何所需的设备特定的准入控制。如果准入控制方法确定该请求不能被SWQ接受,则该请求将被丢弃,并以“拒绝/重试”的完成状况返回完成。
如果以上检查导致非投递式写命令被SWQ接受,则返回完成状态,其完成状况为“成功完成”。入队到SWQ的命令是基于设备内部的特定于设备的调度模式进行处理/调度的。
当命令指定的工作完成时,设备会生成适当的同步或通知事务,以将工作完成通知客户端。这些可以通过存储器写、中断写或其他方法进行。
ENQCMD和ENQCMDS指令将阻塞,直到CPU返回完成响应为止。指令退出之前,指令在EFLAGS.ZF标志中返回状况(成功v/s拒绝/重试)。
软件可以通过SWQ将工作入队,如下所示:
a.将设备的SWQ_PREG映射到客户端的CPU虚拟地址空间(用户或内核虚拟地址,具体取决于客户端是用户模式还是以内核模式运行)。这类似于对设备上的任何MMIO资源进行存储器映射。
b.存储器中的格式描述符
c.使用描述符的存储器虚拟地址作为源,而将SWQ_PREG映射到的虚拟地址作为目标,执行ENQCMD/S。
d.执行条件跳转(JZ)以检查ENQCMD/S指令是否返回成功或重试。如果为重试状况,请从步骤C重试(带有适当的返回
CPU和设备之间的任何代理程序(非核、一致性结构、I/O结构、桥等)都可能丢弃ENQ非投递式写。如果任何代理丢弃了ENQ请求,则该代理必须返回带有重试状况码的完成响应。软件将其视为和对待成就像从设备上的目标SWQ收到的重试响应一样。这是可能的,因为ENQ*请求是自包含的,并且没有与之关联的任何排序约束。系统设计和结构可以利用此属性来处理硬件/结构中的时间拥塞或背压情况。
此属性也可以用于构建优化设计,其中可以将SWQ移近CPU,并使用专用的投递式的/基于信用的方法将接受的命令转发到SWQ到目标设备。这样的方法对于改善ENQ指令的往返延迟可能是有用的,否则,ENQ指令需要将非投递式写请求一直发送到设备上的SWQ并等待完成。
通过使用专用片上存储(SRAM)或使用设备上的扩展存储器(DRAM)甚至平台中的保留/被盗存储器,可以在设备上实现SWQ。在这些情况下,SWQ只是客户端使用非投递式语义提交工作的前端,设备将所有接受的对SWQ的命令写到存储器中的工作队列,从中引擎的各种操作可以像处理基于任何常规的存储器的工作队列一样获取工作。与专用的片上SRAM存储相比,这种以存储器为后端的SWQ实现可以允许更大的SWQ容量。
图5是示例数据流式传输加速器(DSA)设备的示意图,该示例数据流式传输加速器(DSA)设备包括接收通过I/O结构接口提交的描述符的多个工作队列。图5示出了包括多个工作队列510-512的数据流式传输加速器(DSA)设备的一种实现,该工作队列接收通过I/O结构接口504(例如,如上所述的多协议链路314)提交的描述符。DSA使用I/O架构接口504来接收来自客户端的下游工作请求(例如处理器核、对等输入/输出(IO)代理(例如,网络接口控制器(NIC))和/或软件链卸载请求)以及用于上游的读取、写和地址转换操作。图示的实现包括仲裁器514,该仲裁器在工作队列之间进行仲裁并将工作描述符分派到多个引擎518中的一个。可以通过工作队列配置寄存器502配置仲裁器514和工作队列510-512的操作。例如,仲裁器514可以被配置为实现各种QoS和/或公平性策略,用于将描述符从每个工作队列510-512分配到每个引擎518。
在一种实现中,在工作队列510-512中入队的一些描述符是批处理描述符520,其包含/标识一批工作描述符。仲裁器514将批处理描述符转发到批处理单元524,该批处理单元524使用通过转换高速缓存506转换的地址(或处理器上可能的其他地址转换服务)通过从存储器读取描述符阵列526来处理批描述符。一旦识别出物理地址,数据读/写电路508就从存储器中读取该批描述符。
第二仲裁器528在由批处理单元524提供的批工作描述符526与从工作队列510-512中取得到的各个工作描述符522之间进行仲裁,并将该工作描述符输出至工作描述符处理单元530。工作描述符处理单元530具有读取存储器(经由数据R/W单元508)、对数据执行所请求的操作、生成输出数据以及写输出数据(经由数据R/W单元508)、完成记录以及中断消息的阶段。
在一种实现中,工作队列配置允许软件(经由WQ配置寄存器502)将每个WQ配置为使用非投递式ENQCMD/S指令接收描述符的共享工作队列(SWQ)或使用投递式MOVDIR64B指令接收描述符的专用工作队列(DWQ)。如以上关于图4所提到的,DWQ可以处理从单个应用提交的工作描述符和批处理描述符,而SWQ可以在多个应用之间共享。WQ配置寄存器502还允许软件控制哪个WQ 510-512向哪个加速器引擎518馈送以及向每个引擎馈送的WQ 510-512的相对优先级。例如,可以指定优先级的有序集合(例如,高、中、低;1、2、3等),并且与从低优先级工作队列调度相比,通常可以比更高优先级工作队列更早或更频繁地调度描述符。例如,对于两个要标识为高优先级和低优先级的工作队列,对于要分配的每10个描述符,可以从高优先级工作队列分配10个描述符中的8个,而从低优先级工作队列分配10个描述符的中2个。可以使用各种其他技术来实现工作队列510-512之间的不同优先级。
在一种实现中,数据流式传输加速器(DSA)是与快速PCI配置机制兼容的软件,并在其配置映射的寄存器集中实现了PCI报头和扩展空间。可以通过来自根联合体的CFC/CF8或MMCFG对配置寄存器进行编程。所有内部寄存器也可以通过JTAG或SMBus接口访问。
在一种实现中,DSA设备使用存储器映射的寄存器来控制其操作。可通过BAR0、BAR2和BAR4寄存器(如下所述)定义的MMIO区域访问能力、配置和工作提交寄存器(门户)。每个门户可以在单独的4K页面上,以便可以使用处理器页表将它们独立地映射到不同的地址空间(客户端)中。
如上所述,软件通过描述符为DSA指定工作。描述符指定要执行的针对DSA的操作类型、数据和状况缓冲区的地址、立即操作数、完成属性等(描述符格式的其他详细信息和详细信息在下面列出)。完成属性指定将写完成记录的地址,以及生成可选完成中断所需的信息。
在一种实现中,DSA避免在设备上维护客户端特定的状态。处理描述符的所有信息都来自描述符本身。这提高了其在用户模式应用之间以及虚拟化系统中不同虚拟机(或机器容器)之间的共享性。
描述符可以包含操作和相关联的参数(称为工作描述符),也可以包含工作描述符阵列的地址(称为批处理描述符)。软件会在存储器中准备描述符,然后将描述符提交到设备的工作队列(WQ)510-512。取决于WQ的模式和客户端的特权级别,使用MOVDIR64B、ENQCMD或ENQCMDS指令将描述符提交给设备。
每个WQ 510-512都有固定数量的插槽,因此在重负载下可能会变满。在一种实现中,设备提供所需的反馈以帮助软件实施流控制。设备从工作队列510-512分配描述符,并将其提交给引擎以进行进一步处理。当引擎518完成描述符或遇到导致中止的某些故障或错误时,它通过写主机存储器中的完成记录、发出中断或两者来通知主机软件。
在一种实现中,每个工作队列都可以经由多个寄存器访问,每个寄存器都位于设备MMIO空间中单独的4KB页面中。每个WQ的一个工作提交寄存器称为“非特权门户”,并映射到用户空间中,以供用户模式客户端使用。另一个工作提交寄存器称为“特权门户”,并由内核模式驱动器使用。其余为来宾门户,供虚拟机中的内核模式客户端使用。
如上所述,每个工作队列510-512可以被配置为以专用或共享两种模式中的一个运行。DSA暴露了工作队列能力寄存器中的能力位,以指示对专用和共享模式的支持。它还在工作队列配置寄存器502中暴露控制以配置每个WQ以在一种模式下操作。仅在禁用WQ时(即(WQCFG.Enabled=0)),才能更改WQ的模式。WQ能力寄存器和WQ配置寄存器的其他详细信息如下所示。
在一种实现中,在共享模式下,DSA客户端使用ENQCMD或ENQCMDS指令将描述符提交到工作队列。ENQCMD和ENQCMDS使用64字节的非投递式写,并在完成之前等待来自设备的响应。如果工作队列中有空间,则DSA返回“成功”(例如,返回到请求客户端/应用),如果工作队列已满,则DSA返回“重试”。ENQCMD和ENQCMDS指令可能会以零标志(0表示成功,而1表示重试)返回命令提交的状况。使用ENQCMD和ENQCMDS指令,多个客户端可以直接并同时将描述符提交到同一工作队列。由于设备提供了此反馈,因此客户端可以告诉他们的描述符是否被接受。
在共享模式下,DSA可以经由针对内核模式客户端的特权门户保留进行提交的某些SWQ能力。经由非特权门户的工作提交,直到SWQ中的描述符数量达到针对SWQ配置的阈值为止。经由特权门户的工作提交将被接受,直到SWQ满为止。经由来宾门户的工作提交以与非特权门户相同的方式受阈值的限制。
如果ENQCMD或ENQCMDS指令返回“成功”,则说明描述符已被设备接受并入队等待处理。如果指令返回“重试”,则软件可以尝试将描述符重新提交给SWQ,或者如果它是使用非特权门户的用户模式客户端,则它可以请求内核模式驱动器以使用特权门户代表它提交描述符。这有助于避免拒绝服务并提供向前的进度保证。可替代地,如果SWQ已满,则软件可以使用其他方法(例如,使用CPU来执行工作)。
设备使用称为进程地址空间ID(PASID)的20位ID来标识客户端/应用。设备使用PASID来查找设备TLB 1722中的地址,并将地址转换或页面请求发送到IOMMU 1710(例如,通过多协议链路2800)。在共享模式下,要与每个描述符一起使用的PASID包含在描述符的PASID字段中。在一种实现中,ENQCMD将当前线程的PASID从特定寄存器(例如,PASID MSR)复制到描述符中,而ENQCMDS允许管理程序模式软件将PASID复制到描述符中。
尽管专用模式不能由多个客户端/应用共享单个DWQ,但是DSA设备可以被配置为具有多个DWQ,并且每个DWQ可以独立分配给客户端。另外,DWQ可以配置为具有相同或不同的QoS级别,以为不同的客户端/应用提供不同的性能级别。
在一种实现中,数据流式传输加速器(DSA)包含两个或更多个引擎518,其处理提交给工作队列510-512的描述符。DSA架构的一种实现包括4个引擎,编号为0到3。引擎0和1分别能够利用设备的全部带宽(例如,读取速度为30GB/s,写速度为30GB/s)。所有引擎的组合带宽也限制为设备可用的最大带宽。
在一种实现中,软件使用组配置寄存器将WQ 510-512和引擎518配置为组。每个组包含一个或多个WQ和一个或多个引擎。DSA可以使用组中的任何引擎来处理投递到该组中任何WQ的描述符,并且每个WQ和每个引擎只能在一个组中。组的数量可以与引擎的数量相同,因此每个引擎可以在单独的组中,但是如果任何组包含多于一个引擎,则不需要使用所有的组。
尽管DSA架构在配置工作队列、组和引擎方面提供了极大的灵活性,但是可以将硬件进行狭义设计以用于特定配置。可以取决于软件要求,以两种不同方式中的一个配置引擎0和1。一种推荐的配置是将引擎0和1放在同一组中。硬件使用任一引擎来处理来自组中任何工作队列中的描述符。在这种配置中,如果一个引擎由于高延迟存储器地址转换或页面错误而导致停顿,则另一引擎可以继续运行并使整个设备的吞吐量最大化。
图6A-图6B是示出根据本公开的实施例的示例DMWr请求场景的示意图。图6A-图6B是示出根据本公开的实施例的示例DMWr请求场景的示意图。图6A示出了系统600,该系统600分别在每个组606和608中包括两个工作队列610-612和614-616,但是可以有任何数量直到支持的WQ的最大数量。组中的WQ可以是具有不同优先级的共享WQ,也可以是一个共享WQ和其他专用WQ,也可以是具有相同或不同优先级的多个专用WQ。在所示的示例中,组606由引擎0和1 602提供服务,并且组608由引擎2和3 604提供服务。引擎0、1、2和3可以类似于引擎518。
如图6B所示,使用引擎0 622和1 624的另一个系统620将它们分别放置在单独的组630和632中。类似地,组2 634被分配给引擎2 626,而组3被分配给引擎3 628。另外,组0630由两个工作队列638和640组成;组1 632由工作队列642组成;工作队列2 634由工作队列644组成;而组3 636由工作队列646组成。
当软件希望降低对延迟敏感的操作被阻塞在其他操作之后的可能性时,可以选择此配置。在此配置中,软件向与引擎1 626连接的工作队列642提交对延迟敏感的操作,而向与引擎0 622连接的工作队列638-640提交其他操作。
引擎2 626和引擎3 628可以用于例如写到高带宽非易失性存储器(例如相变存储器)。这些引擎的带宽能力可以调整大小以匹配这种类型的存储器的预期写带宽。对于此用法,引擎配置寄存器的位2和3应设置为1,指示应将虚拟通道1(VC1)用于来自这些引擎的业务。
在没有高带宽、非易失性存储器(例如相变存储器)的平台中,或者当不使用DSA设备写到这种类型的存储器时,可能不会使用引擎2和3。但是,只要提交的操作可以承受有限的带宽,软件就可以将它们用作其他低延迟路径。
随着每个描述符到达工作队列的头部,可以由调度器/仲裁器514将其删除,并转发给该组中的引擎中的一个。对于引用存储器中的工作描述符526的批处理描述符520,引擎从存储器中获取工作描述符的阵列(即,使用批处理单元524)。
在一种实现中,对于每个工作描述符522,引擎518预取完成记录地址的转换,并将操作传递给工作描述符处理单元530。工作描述符处理单元530使用设备TLB和IOMMU用于源和目标地址转换、读取源数据、执行指定的操作,然后将目标数据写回到存储器中。操作完成后,如果工作描述符请求,引擎会将完成记录写到预转换的完成地址并生成中断。
在一种实现中,DSA的多个工作队列可用于提供多个级别的服务质量(QoS)。可以在WQ配置寄存器502中指定每个WQ的优先级。WQ的优先级是相对于同一组中的其他WQ的(例如,对于本身在组中的WQ的优先级没有意义)。组中的工作队列可以具有相同或不同的优先级。但是,在同一组中配置具有相同优先级的多个共享WQ毫无意义,因为单个SWQ可以达到相同的目的。调度器/仲裁器514根据它们的优先级将工作描述符从工作队列510-512分配给引擎518。
加速器设备和高性能I/O设备支持直接来自多个客户端的服务请求。在这种情况下,术语“客户端”(在本文中也称为实体)可以包括以下任何一项:
正在向设备提交直接用户模式I/O请求的多个用户模式(环3)应用;
在共享同一设备的多个虚拟机(VM)中运行的多个内核模式(环0)驱动器;
在多个容器中运行的多个软件代理(具有支持容器技术的OS);
以上内容的任意组合(例如,VM内的环3应用,通过在VM中运行而硬化的容器等);
对等I/O代理直接提交工作以实现有效的内联加速(例如,使用加密设备进行加密加速的NIC设备,或使用GPU进行高级传感器处理的触摸控制器或图像处理单元);或者
主机软件跨加速器链路卸载请求,其中加速器设备可以将工作转发到另一个指定的主机软件加速器,以在不通过主机跳动的情况下使工作成链式(例如,压缩加速器首先压缩,然后再将工作链式到批量加密加速器,用于对压缩数据进行加密)。
上面的术语“直接”表示与多个客户端共享设备,而没有中间软件层,在控制和数据路径中,例如在用户应用的情况下与公共内核驱动器共享,或者在VM情况下,在与公共VMM/管理程序层共享)以减少软件开销。
多客户端加速器/高性能设备的示例可以包括可编程GPU、可配置的卸载设备、可重新配置的卸载设备、固定功能的卸载设备、高性能的主机结构控制器设备或高性能的I/O设备。
如上所述,可以通过使用共享工作队列来解决工作提交的可缩放性。本公开描述了基于PCIe规范使用互连协议来应用共享工作队列并实现工作提交可缩放性的机制。
本公开描述了PCIe分组类型,在本文中被称为“延迟存储器写请求”(DMWr)。在实施例中,使用术语“确认的存储器写”(AMWr)请求,并且应当理解,这些概念是相似的。DMWr分组可以包括以下特征和功能:
DMWr分组是非投递式事务,因此通过PCIe流控制以与投递式MWr分组不同的方式处理;
作为非投递式事务,DMWr事务需要将完成发送回发给请求者;以及
与MWr事务(完成者必须接受所有格式正确的请求)不同,DMWr完成者可以出于任何特定于实施的原因而选择接受或拒绝AMWr请求。
图7A至图7D是示出根据本公开的实施例的示例确认存储器写(DMWr)请求和响应消息流的示意图。通常,I/O设备(例如加速器设备)支持用于从其客户端的工作提交的公共命令界面。公共命令界面可以称为共享工作队列(SWQ)。在图7A-图7D中,SWQ被示出为命令队列704。SWQ可以是在加速器设备上实现的命令队列704。命令队列704的深度是特定于实现的,并且可以基于馈送设备以实现其全部吞吐量潜力所需的未完成命令的数量来确定大小。
具有固定长度FIFO命令队列704的加速器702可以直接从多个软件(或硬件)实体(例如,以下示例中的实体A和实体B)接收未协调的命令。每个实体都可以通过向单个固定存储器地址发出AMWr请求来发出命令(例如工作描述符)。注意,每个实体可以将这些命令直接发布给设备,而在发布命令的其他实体之间不需要任何种类的协调机制。
在图7A所示的示例中,加速器命令队列704几乎已满。1)实体A经由DMWr分组向队列704发出命令。2)加速器可以将命令接受到命令队列中。3)加速器702可以响应成功完成(SC)。注意,出于特定于实现的原因(例如,实现类似TCP的流控制机制),这种设备还可以选择在队列完全充满之前拒绝分组。
在图7B中,命令队列704已满。4)实体B在命令队列704已满时向命令队列704发出命令。5)加速器702拒绝请求,以及6)加速器702发送带有请求重试状况的完成(RRS)。7)如果实体B在队列仍被填充的同时试图重新发出命令,则加速器702可以继续在状况字段中发送与RRS相关联的完成。
在图7C中,加速器702完成命令的处理,并且空间在其队列上变得可用。在图7D中,9)实体B(或任何其他实体)向加速器702重新发出命令。10)加速器702现在可以将命令接受到命令队列704中。11)加速器702可以用成功完成(SC)消息来响应。
图8是根据本公开的实施例的用于执行可缩放工作提交的过程流程图800。首先,诸如加速器的I/O设备可以从实体接收命令到其命令队列中(802)。如果命令队列已满(804),则加速器可以将具有请求重试状况的完成(RRS)消息发送到实体(806)。如果命令队列未满(804),则加速器可以向实体发送成功完成(SC)消息(808),并且可以将该命令接受到命令中以进行处理(810)。
延迟存储器写(DMWr):
在一些实施例中,DMWr可以用于通过PCIe发送数据。可延迟存储器写要求完成者向请求者返回确认,并为接收者提供一种推迟接收到的数据的机制。DMWr TLP促进了以前在基于PCIe的设备和链路上不可能(或更难以实现)的用例。DMWr为端点和主机提供了一种机制来选择执行或推迟传入的DMWr请求。端点和主机可以使用此机制来简化流控制和固定长度队列机制的设计。使用DMWr,设备可以具有一个共享的工作队列,并以非阻塞方式接受来自多个非合作软件代理的工作项。可以将DMWr定义为存储器写,请求者在其中尝试写到存储器空间中的给定位置。完成者可以通过分别返回状况为SC或存储器请求重试状况(MRS)的完成来接受或拒绝此写(类似于上述RRS)。
可延迟存储器写(DMWr)是一个可选的非投递式请求,它使可缩放的高性能机制能够实现共享的工作队列和类似功能。使用DMWr,设备可以具有一个共享的工作队列,并以非阻塞方式接受来自多个非合作软件代理的工作项。
以下要求适用于DMWr完成者(完成者可以是完成非投递式写请求事务的任何实体):
支持DMWr请求的完成者将格式正确的DMWr请求作为成功完成(SC)、请求重试状况(MRS)、不受支持的请求(UR)或完成中止(CA)以用于其目标存储器空间中的任何位置。
支持DMWr的完成者将使用其不支持的类型或操作数大小的任何格式正确的DMWr请求作为不支持的请求(UR)处理。目标位置的值必须保持不变。
支持DMWr的完成者可以实现受限的编程模型。基于受限编程模型的优化在PCIe规范中定义的。
如果多功能设备中的任何功能支持DMWr完成器或DMWr路由能力,则该设备中带有存储器空间BAR的所有功能必须解码格式正确的DMWr请求,并将不支持的任何功能作为不支持的请求(UR)进行处理。请注意,在此类设备中,缺少DMWr完成器能力的功能不得将格式正确的DMWr请求作为格式错误的TLP处理。
除非存在更高的优先级错误,否则DMWr感知的完成者必须将中毒DMWr请求作为中毒TLP收到的错误进行处理,并且还必须返回具有不支持请求(UR)的完成状况的完成。目标位置的值必须保持不变。
如果DMWr请求的完成者在访问目标位置时遇到不可校正的错误,则完成者必须将其作为完成者中止(CA)处理。目标位置的后续状态是特定于实现的。
允许完成者根据其编程模型的需要在其目标存储器空间的子集上支持DMWr请求。除非在结构说明中明确说明,否则不需要将快速PCI定义或继承的存储器空间结构(例如MSI-X表结构)支持为DMWr目标。
如果RC具有任何支持DMWr路由能力的根端口,则转发的DMWr请求可到达的RC中的所有RCiEP必须解码格式正确的DMWr请求,并将它们不支持的任何RCiEP处理为不支持的请求(UR)。
以下要求适用于支持DMWr路由的根联合体和交换机:
如果交换机针对其任何端口均支持DMWr路由,则交换机将对所有端口均支持DMWr路由。
对于交换机或RC,当在出口端口中启用DMWr出口阻塞并且DMWr请求目标退出该出口端口时,则出口端口将请求作为DMWr出口阻塞错误处理,并且还必须返回带有完成状况为UR的完成。如果DMWr出口阻塞错误的严重性不是致命的,则将这种情况作为建议非致命错误处理,如PCIe规范中所述,该规范管理发送带有UR/CA状况的完成的完成者。
对于RC,支持DMWr请求的对等路由和根端口之间的完成是可选的,并且取决于实现。如果RC支持两个或多个根端口之间的DMWr路由功能,则RC经由设备能力2寄存器中的DMWr路由支持位指示每个关联的根端口中的能力。
不需要RC支持在具有DMWr路由支持位设置的所有根端口对之间的DMWr路由。软件不应假定在具有DMWr路由支持位设置的所有根端口对之间都支持DMWr路由。
如果RC支持两个或多个根端口之间的DMWr路由能力,则RC指示经由设备能力2寄存器中的DMWr路由支持位的每个关联的根端口中的能力。
通过不支持DMWr的根端口路由的DMWr请求被处理为不支持的请求(UR)。
实施说明:可延迟存储器写的设计注意事项
在一些实施例中,设备和设备驱动器可以使用DMWr来实现控制机制。
作为非投递式请求,DMWr TLP使用完成TLP完成事务。此外,PCIe排序规则规定,非投递式TLP无法通过投递式TLP,从而使投递式事务更可取,以提高性能。因为DMWr TLP无法通过存储器读取请求TLP,并且DMWr TLP可以由完成者推迟,所以设备和设备驱动器制造商在尝试读取也是未完成DMWr事务的目标的存储器位置时要格外小心。
实施说明:确保具有可延迟存储器写的向前进行
当使用DMWr事务创建单个共享工作队列时,必须注意确保没有请求者由于拥塞而无限期地拒绝访问该队列。写到此类队列的软件实体可以选择实施流控制机制,也可以依赖特定的编程模型来确保所有实体都能够向前发展。该编程模型可以包括在队列状态上从功能到软件的反馈机制或指示,或者在具有MRS状况的完成后延迟DMWr请求的计时器。
存储器事务包括以下类型:
读取请求/完成;
写请求;
延迟写请求;以及
AtomicOp请求/完成。
存储器事务使用两种不同的地址格式:
短地址格式:32位地址;以及
长地址格式:64位地址。
某些存储器事务可以选择具有包含进程地址空间ID(PASID)的PASID TLP前缀。
图9A和图9B是AMWr分组的视觉表示。图9A是根据本公开的实施例的64位DMWr(或AMWr)分组定义900的示意图。图9B是根据本公开的实施例的32位DMWr(或AMWr)分组定义920的示意图。
下表2表示支持DMWr的TLP定义。
表2.支持DMWr的TLP定义。
下表3提供了完成状态的定义。
表3.完成状态的定义。
基于地址的路由规则也可以促进DMWr请求。地址路由与存储器和I/O请求一起使用。指定了两种地址格式:用于4DW报头的64位格式和用于3DW报头的32位格式。图9A–图9B分别表示64位和32位格式。
对于存储器读取、存储器写、可延迟存储器写和AtomicOp请求、地址类型(AT)字段被编码为表10-1地址类型(AT)字段编码所示。对于所有其他请求,除非另有明确说明,否则AT字段为保留字段。LN读取和LN写具有特殊要求。
存储器读、存储器写、可延迟存储器写和AtomicOp请求可以使用任何一种格式。
对于4GB以下的地址,请求者必须使用32位格式。如果接收到地址低于4GB的64位格式请求(即地址的高32位全为0),则不指定接收者的行为。
I/O读请求和I/O写请求使用32位格式。
代理对报头中的所有地址位进行解码-不允许使用地址别名。
请求处理规则可以支持DMWr。如果设备支持作为I/O写请求(即非投递式请求)的目标,则应在与投递式请求接受相同的时限内返回每个关联的完成。如果设备支持作为可延迟存储器写请求的目标,则在与“投递式请求”接受相同的时限内返回每个关联的完成。
流控制规则也可以支持DMWr。每个虚拟通道都有独立的流控制。流控制区分三种类型的TLP:
投递式请求(P)-消息和存储器写;
非投递式请求(NP)-所有读取、I/O写、配置写、AtomicOps和可延迟存储器写;以及
完成数(Cpl)-与相对应的NP请求相关联
此外,流控制在三种类型的每一种中区分以下类型的TLP信息:报头(H);以及数据(D)。
因此,由流控制为每个虚拟通道跟踪的信息有六种,如表4的流控制信用类型所示。
表4.流控制信用类型。
TLP消耗流控制信用,如表5TLP流控制信用消耗所示。
表5.TLP流量控制信用消耗。
表6示出了NPD信用类型的最小公告。
表6.最小初始流控制公告。
对于在事务层中检测到的错误和不可校正的内部错误,允许并建议对于单个接收到的TLP报告不超过一个错误,并使用以下优先级(从最高到最低):
无法校正的内部错误
接收器溢出;
格式错误的TLP;
ECRC检查失败;
AtomicOp或DMWr出口被阻塞;
TLP前缀被阻塞;
ACS;
MC封锁的TLP;
不支持的请求(UR)、完成中止(CA)或意外完成;以及
已接收中毒的TLP或中毒的TLP出口被阻塞
表7示出了事务层错误列表。事务层错误列表可由检测代理(例如出口端口)用来在处理DMWr分组时识别错误。
表7.事务层错误列表。
表8提供了到设备能力2寄存器的位映射:
表8.设备能力2寄存器。
表9提供了到设备能力4寄存器的位映射:
表9.设备能力3寄存器。
表10表示对不可校正错误状况寄存器位值的定义。
表10.不可校正的错误状态寄存器。
表11表示不可校正的错误掩码寄存器位值的定义。
表11.不可校正的错误掩码寄存器。
表12表示不可校正的错误严重性寄存器位值的定义。
表12.无法校正的错误严重性寄存器。
在实施例中,AMWr可以用于非投递式写请求,以使工作请求对完成者具有可缩放性。以下特征可以促进基于PCIe的互连上的AMWr消息传递:
事务层分组(TLP)类型“AMWr”的定义(例如,使用值0b11011,该值先前用于已弃用的TCfgWr TLP类型);
CRS完成状况的扩展以适用于其他非配置分组(在本文中称为“请求重试状况(RRS)”;
为PCIe端口添加AMWr路由和出口阻塞支持;
为端点和根联合体添加AMWr请求者和完成者支持;以及
将AMWr出口阻塞报告添加到高级错误报告(AER)。
确认的存储器写(AMWr)是非投递式请求,并且实现针对高性能、低延迟设备(例如加速器)实现共享的工作队列或已确认的门铃写的简单可缩放性。可以向此类设备提交工作的唯一应用客户端的数量通常取决于设备支持的队列和门铃的数量。借助AMWr,加速器类型(和其他I/O)设备可以具有单个共享的工作队列,并以非阻塞方式接受来自多个不协作的软件代理的工作项。设备可以以特定于实现的方式公开这样的共享工作队列。
与其他PCIe事务一样,对根端口之间AMWr请求和完成的对等路由的支持是可选的,并且取决于实现。如果根联合体(RC)支持两个或多个根端口之间的AMWr路由能力,则RC经由设备能力2寄存器中的AMWr路由支持位指示每个关联的根端口中的能力。
如果交换机支持其任何端口的AMWr路由,则可以为所有这些端口支持AMWr路由。
对于交换机或RC,当在出口端口中启用AMWr出口阻塞并且AMWr请求目标从该出口端口发出时,出口端口会将请求作为不支持的请求错误处理,并且还必须返回具有完成状况为UR的完成。
在实施例中,对于交换机或RC,当在出口端口中启用AMWr出口阻塞并且AMWr请求目标从该出口端口出去时,出口端口将请求作为AMWr出口阻塞错误处理,并且返回具有完成状况为UR的完成。如果AMWr出口阻塞错误的严重性不是致命的,则此情况必须作为建议性非致命错误处理。
不需要RC支持在所有具有AMWr路由支持位设置的根端口对之间的AMWr路由。要求在不支持的根端口对之间进行路由的AMWr请求必须作为不支持的请求(UR)处理,并由“发送”端口报告。如果RC支持两个或多个根端口之间的AMWr路由能力,则必须经由设备能力2寄存器中的“AW路由支持”位指示在每个关联的根端口中的能力。软件不得假定所有具有AMWr路由支持位设置的根端口对之间均支持AMWr路由。
需要支持AMWr请求的完成者(例如,完成AMWr请求的实体)将格式正确的AMWr请求作为针对其目标存储器空间中的任何位置的成功完成(SC)、请求重试状况(RRS)、不支持的请求(UR)或完成者中止(CA)处理。以下特征适用于AMWr完成者:
除非存在更高的优先级错误,否则AMWr感知完成者会将中毒或损坏的AMWr请求作为中毒的TLP接收到的错误进行处理,并返回具有不支持的请求(UR)的完成状况的完成。目标位置的值必须保持不变。
如果AMWr请求的完成者遇到访问目标位置或执行确认的写时不可校正的错误,则完成者必须将其作为完成者中止(CA)处理。目标位置的后续状态是特定于实现的。
需要AMWr感知的完成者以其不支持作为不支持的请求(UR)的类型或操作数大小来处理任何格式正确的AMWr请求。
如果多功能设备中的任何功能都支持AMWr完成器或AMWr路由能力,则该设备中带有存储器空间BAR的所有功能都可以解码格式正确的AMWr请求,并将任何支持的功能作为不支持的请求(UR)处理。请注意,在此类设备中,缺少AMWr完成器能力的功能被禁止将格式正确的AMWr请求作为格式不正确的TLP处理。
如果RC具有任何支持AMWr路由能力的根端口,则转发的AMWr请求可到达的RC中的所有RCiEP必须解码格式正确的AMWr请求,并将它们不支持的任何内容作为不支持的请求(UR)进行处理。
对于具有支持的类型和操作数大小的AMWr请求,要求AMWr感知完成者执行该请求,或者将其作为针对其目标存储器空间中的任何位置的完成者中止(CA)进行处理。允许完成者根据其编程模型的需要在其目标存储器空间的子集上支持AMWr请求(请参阅第2.3.1节“请求处理规则”)。除非在结构说明中明确说明,否则不需要将快速PCI定义或继承的存储器空间结构(例如MSI-X表结构)支持为AMWr目标。
实施AMWr完成者支持是可选的。
在一些实施例中,设备和设备驱动器可以使用AMWr来实现控制机制。
作为非投递式请求,AMWr TLP使用完成TLP来完成交易。此外,PCIe排序规则规定,非投递式TLP无法通过投递式TLP,从而使投递式事务更优选于提高性能。
可以至少部分基于以下定义来解释分组定义,这些定义可以表示对PCIe规范的更改:
存储器事务包括以下类型:
读取请求/完成;
写请求;
确认的写请求(在此处添加AMWr分组);
AtomicOp请求/完成;等等
下面的表13是PCIe规范的表2-3的表示。此处,表13包括支持AMWr的TLP定义。
表13.支持AMWr的TLP定义。
下表14提供了完成状态的定义。
表14.完成状况的定义。
可以对PCIe规范进行各种其他改变以促进用于可扩展工作流提交的AMWr消息传递。可以定义以下寄存器和位值以支持AMWr:
在设备控制3寄存器(例如,如PCIe规范中所定义)中,表15可以提供定义或寄存器位。
表15.设备控制3寄存器。
表16表示不可校正的错误状况寄存器位值的定义。
表16.不可校正的错误状况寄存器。
表17表示不可校正的错误掩码寄存器位值的定义。
表17.不可校正的错误掩码寄存器。
表18表示不可校正的错误严重性寄存器位值的定义。
表18.不可校正的错误严重性寄存器。
图10示出了包括互连架构的计算系统的实施例。参照图10,示出了由互连一组组件的点对点链路组成的结构的实施例。系统1000包括处理器1005和耦合到控制器集线器1015的系统存储器1010。处理器1005包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器1005通过前端总线(FSB)1006耦合到控制器集线器1015。在一个实施例中,FSB1006是如下所述的串行点对点互连。在另一个实施例中,链路1006包括符合不同互连标准的串行、差分互连架构。
系统存储器1010包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统1000中的设备可访问的其他存储器。系统存储器1010通过存储器接口1016耦合到控制器集线器1015。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器1015是快速外围组件互连(PCIe或PCIE)互连层次结构中的根集线器、根联合体或根控制器。控制器集线器1015的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。术语芯片组通常是指两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储控制器集线器(MCH)。注意,当前系统通常包括与处理器1005集成的MCH,而控制器1015将以如下所述的类似方式与I/O设备通信。在一些实施例中,可选地通过根联合体1015来支持对等路由。
这里,控制器集线器1015通过串行链路1019耦合到交换机/桥1020。输入/输出模块1017和1021(也可以称为接口/端口1017和1021)包括/实现分层协议栈,以在控制器集线器1015和交换机1020之间提供通信。在一个实施例中,多个设备能够耦合到交换机1020。
交换机/网桥1020将来自设备1025的分组/消息从上游(即,朝着根联合体的层次结构向上)路由到控制器中心1015,而从处理器1005或系统存储器1010向下游(即,远离根控制器的层次结构)路由到设备1025。在一个实施例中,开关1020被称为多个虚拟PCI-PCI桥接设备的逻辑组件。设备1025包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬件驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。在PCIe本地设备(例如设备)中,通常将其称为端点。尽管未具体示出,但是设备1025可以包括PCIe到PCI/PCI-X桥以支持传统的或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根复合集成端点。
图形加速器1030也通过串行链路1032耦合到控制器集线器1015。在一个实施例中,图形加速器1030耦合到MCH,该MCH耦合到ICH。然后将开关1020以及相应的I/O设备1025耦合到ICH。I/O模块1031和1018还用于实现分层协议堆栈,以在图形加速器1030和控制器集线器1015之间进行通信。类似于上面讨论的MCH,图形控制器或图形加速器1030本身可以集成在处理器1005中。
图11示出了包括分层堆叠的互连架构的实施例。转向图11,示出了分层协议栈的实施例。分层协议栈1100包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCie栈、下一代高性能计算互连栈或其他分层栈。尽管下面参考图10至图13的讨论与PCIe堆栈有关,但是相同的概念可以应用于其他互连堆栈。在一个实施例中,协议栈1100是PCIe协议栈,其包括事务层1105、链路层1110和物理层1120。接口,诸如图1中的接口1017、1018、1021、1022、1026和1031可以被表示为通信协议栈1100。被表示为通信协议栈也可以被称为实现/包括协议栈的模块或接口。
快速PCI使用分组在组件之间传递信息。分组形成在事务层1105和数据链路层1110中,以将信息从发送组件携带到接收组件。当发送的分组流经其他层时,它们会以处理这些层的分组所需的附加信息进行扩展。在接收侧,发生相反的过程,并且分组从其物理层1120表示转换为数据链路层1110表示,并且最后(对于事务层分组)转换为可以由接收设备的事务层1105处理的形式。
事务层
在一个实施例中,事务层1105将在设备的处理核与互连架构(例如,数据链路层1110和物理层1120)之间提供接口。就这一点而言,事务层1105的主要职责是分组(即事务层分组或TLP)的组装和拆卸。转换层1105通常管理用于TLP的信用流控制。PCIe实现拆分的事务,即请求和响应按时间分隔的事务,允许链路在目标设备收集针对响应的数据的同时承载其他业务。
另外,PCIe利用基于信用的流控制。在该方案中,设备为事务层1105中的每个接收缓冲器通告初始信用额度。在链路的相对端的外部设备,例如图1中的控制器集线器115,计算每个TLP消耗的信用数。如果事务不超过信用额度,则可以传输事务。收到响应后,将恢复信用额度。信用计划的优点是,只要不遇到信用额度,信用回报的延迟就不会影响性能。
在一个实施例中,四个事务处理地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读取请求和写请求中的一个或多个,以向/从存储器映射的位置传输数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如32位地址)或长地址格式(例如64位地址)。配置空间事务用于访问PCIe设备的配置空间。对配置空间的事务包括读取请求和写请求。消息空间事务(或简称为消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层1105组装分组报头/有效载荷1106。当前分组报头/有效载荷的格式可以在PCIe规范网站上的PCIe规范中找到。
快速参考图12:图12示出了在互连架构内要生成或接收的请求或分组的实施例。示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符1200是用于携带事务信息的机制。在这方面,事务描述符1200支持系统中事务的识别。其他潜在用途包括跟踪默认事务顺序的修改以及事务与通道的关联。
事务描述符1200包括全局标识符字段1202、属性字段1204和通道标识符字段1206。在所示的示例中,描绘了全局标识符字段1202,其包括本地事务标识符字段1208和源标识符字段1210。在一个实施例中,全局事务标识符1202对于所有未完成的请求是唯一的。
根据一种实现,本地事务标识符字段1208是由请求代理生成的字段,并且对于要求该请求代理完成的所有未完成请求来说是唯一的。此外,在该示例中,源标识符1210唯一地标识PCIe层次结构内的请求者代理。因此,本地事务标识符1208字段与源ID 1210一起提供了层次结构域内的事务的全局标识。
属性字段1204指定事务的特征和关系。在这方面,属性字段1204潜在地用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段1204包括优先级字段1212、保留字段1214、排序字段1216和非窥探字段1218。这里,优先级子字段1212可以由发起者修改以向事务分配优先级。保留属性字段1214保留以供将来使用或供应商定义的用法。使用优先级或安全性属性的可能的使用模型可以使用保留的属性字段来实现。
在该示例中,排序属性字段1216用于提供可选信息,该可选信息传达可以修改默认排序规则的排序类型。根据一个示例实现,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示宽松排序,其中写可以沿相同方向传递写,并且读取完成可以以相同的方向传递写。窥探属性字段1218用于确定是否窥探事务。如图所示,频道ID字段1206标识与事务相关联的通道。
链路层
链路层1110,也称为数据链路层1110,充当事务层1105和物理层1120之间的中间阶段。在一个实施例中,数据链路层1110的职责是提供一种交换链路中两个组件之间的事务层分组(TLP)的可靠的机制。数据链路层1110的一侧接受由事务层1105组装的TLP,应用分组序列标识符1111(即标识号或分组号),计算并应用错误检测码(即CRC 1112),并将修改后的TLP提交给物理层1120,用于跨物理设备传输到外部设备。
物理层
在一个实施例中,物理层1120包括逻辑子块1121和电子块1122,以将分组物理地发送到外部设备。在此,逻辑子块1121负责物理层1121的“数字”功能。在这一点上,逻辑子块包括准备用于物理子块1122发送的传出信息的发送部分和在将接收到的信息传递给链路层1110之前,识别和准备接收的信息的接收机部分。
物理块1122包括发射机和接收机。逻辑子块1121向发射机提供符号,发射机将其序列化并发送到外部设备。从外部设备向接收机提供序列化符号,并将接收到的信号转换为位流。位流被反序列化并且被提供给逻辑子块1121。在一个实施例中,采用8b/10b传输码,其中十位符号被发送/接收。此处,特殊符号用于以帧1123构成分组。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。
如上所述,尽管参考PCIe协议栈的特定实施例讨论了事务层1105、链路层1110和物理层1120,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)组装分组的第一层,即事务层;对分组进行排序的第二层,即链路层;以及传输分组的层的第三层,即物理层。作为特定示例,使用了通用标准接口(CSI)分层协议。
图13示出了用于互连架构的发射器和接收器对的实施例。示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不受限于此,因为其包括用于传输串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个、低压、差分驱动信号对:发送对1306/1311和接收对1312/1307。因此,设备1305包括用于将数据发送到设备1310的传输逻辑1306和用于从设备1310接收数据的接收逻辑1307。换句话说,两条发送路径,即路径1316和1317,以及两条接收路径,即路径1318和1319,包含在PCIe链路中。
传输路径是指用于传输数据的任何路径,例如传输线、铜线、光线、无线通信通道、红外通信链路或其他通信路径。两个设备(例如设备1305和设备1310)之间的连接称为链路(例如链路415)。链路可以支持一个通道-每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何受支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对是指两条传输路径,例如线路1316和1317,用于发送差分信号。例如,当线1316从低电压电平切换到高电压电平,即上升沿时,线1317从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等。这允许更好的定时窗口,从而实现更快的传输频率。
图14示出了包括处理器的计算系统的框图的另一实施例。转向图14,示出了由处理器形成的示例性计算机系统的框图,该处理器包括用于执行指令的执行单元,其中,根据本发明的一个实施例,一个或多个互连实现一个或多个特征。系统1400包括根据本公开的组件,例如处理器1402,其采用根据本发明的包括逻辑的执行单元来执行用于过程数据的算法。系统1400代表基于可从加利福尼亚州圣克拉拉的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,示例系统1400执行可从华盛顿州雷德蒙德的微软公司获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX和Linux),嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本发明的替代实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
在该示出的实施例中,处理器1402包括一个或多个执行单元1408,以实现将执行至少一个指令的算法。可以在单处理器台式机或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统1400是“集线器”系统架构的示例。计算机系统1400包括处理器1402以处理数据信号。作为一个说明性示例,处理器1402包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或者例如,任何其他处理器设备,例如数字信号处理器。处理器1402耦合到处理器总线1410,该处理器总线1410在处理器1402与系统1400中的其他组件之间传输数据信号。系统1400的元件(例如,图形加速器1412、存储器控制器集线器1416、存储器1420、I/O控制器集线器1424、无线收发器1426、闪存BIOS 1428、网络控制器1434、音频控制器1436、串行扩展端口1438、I/O控制器1440等)执行本领域的技术人员所熟知的常规功能。
在一个实施例中,处理器1402包括一级(L1)内部高速缓冲存储器1404。取决于架构,处理器1402可以具有单个内部高速缓冲存储器或多级内部高速缓冲存储器。其他实施例包括取决于特定实现和需求的内部和外部高速缓存两者的组合。寄存器文件1406用于将各种类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、存储体寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
执行单元1408,包括执行整数和浮点运算的逻辑,也位于处理器1402中。在一个实施例中,处理器1402包括微码(ucode)ROM,用于存储微码,当执行时,该微码将执行某些宏指令或处理复杂场景的算法。此处,微码可能是可更新的,以处理处理器1402的逻辑错误/修复。对于一个实施例,执行单元1408包括用于处理封装的指令集1409的逻辑。通过将封装的指令集1409包括在通用处理器的指令集中1402,连同与执行指令的相关联的电路,可以使用通用处理器1402中的封装数据来执行许多多媒体应用所使用的操作。因此,通过使用用于对封装的数据执行操作处理器的数据总线的全宽度来加速和更有效地执行许多多媒体应用。这潜在地消除了在处理器的数据总线上传输较小数据单位来执行一个或多个操作(一次一个数据元素)的需要。
执行单元1408的替代实施例也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。系统1400包括存储器1420。存储器1420包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储设备。存储器1420存储将由处理器1402执行的数据信号表示的指令和/或数据。
注意,本发明的任何前述特征或方面可以在图14所示的一个或多个互连上使用。例如,用于耦合处理器1402的内部单元的管芯上互连(ODI)(未示出)实现了上述发明的一个或多个方面。或本发明与如下相关联:处理器总线1410(例如,英特尔快速路径互连(QPI)或其他已知的高性能计算互连)、到存储器1420的高带宽存储器路径1418、到图形加速器1412的点对点链路(例如,快速外围组件互连(PCIe)兼容结构)、控制器集线器互连1422、I/O或用于耦合其他所示组件的其他互连(例如USB、PCI、PCIe)。这样的组件的一些示例包括音频控制器1436、固件集线器(闪存BIOS)1428、无线收发器1426、数据存储1424、包含用户输入和键盘接口1442的传统I/O控制器1410、串行扩展端口1438(例如通用串行总线(USB)和网络控制器1434。数据存储设备1424可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
图15示出了计算系统的框图的另一实施例。接下来转到图15,示出了根据本发明的片上系统(SOC)设计的实施例。作为特定的说明性示例,SOC 1500被包括在用户设备(UE)中。在一个实施例中,UE是指终端用户要用来通信的任何设备,例如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE通常连接到基站或节点,该基站或节点本质上可能对应于GSM网络中的移动站(MS)。
这里,SOC 1500包括2个核-1506和1507。类似于上面的讨论,核1506和1507可以符合指令集架构,例如基于Architecture CoreTM的处理器、Advanced Micro Devices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及其被许可方或采用方。核1506和1507耦合到与总线接口单元1509和L2高速缓存1510相关联的高速缓存控制1508,以与系统1500的其他部分进行通信。互连1510包括片上互连,例如IOSF、AMBA或上面讨论的其他互连,其可能实现所描述的发明的一个或多个方面。
接口1510提供到其他组件的通信通道,例如与SIM卡接口的订户身份模块(SIM)1530、用于保存由内核1506和1507执行以初始化和引导SOC 1500的引导代码的引导rom1535。与外部存储器(例如DRAM 1560)接合的SDRAM控制器1540、与非易失性存储器(例如闪存1565)接合的闪速控制器1545、与外围设备、视频编解码器1520和视频接口1525以显示和接收输入(例如,触摸使能的输入)接合的外围设备控制Q1650(例如串行外围设备接口)、执行图形相关的计算的GPU 1515等。这些接口中的任何一个都可以结合本文所述的本发明的方面。
此外,系统示出了用于通信的外围设备,诸如蓝牙模块1570、3G调制解调器1575、GPS 1585和WiFi1585。如上所述,注意,UE包括用于通信的无线电设备。结果,并不需要全部这些外围通信模块。然而,在UE中,将包括某种形式的用于外部通信的无线电。
尽管已经针对有限数量的实施例描述了本发明,但是本领域技术人员将意识到由此做出的许多修改和变化。意图是,所附权利要求覆盖落入本发明的真实精神和范围内的所有这样的修改和变化。
设计可能会经历从创建到仿真再到制造的各个阶段。表示设计的数据可以多种方式表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到了表示硬件模型中各种设备的物理放置的数据级别。在使用传统的半导体制造技术的情况下,表示硬件模型的数据可以是规定用于制造集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可以以任何形式的机器可读介质存储。存储器或诸如磁盘的磁或光存储器可以是机器可读介质,用于存储经由光波或电波传输的信息,该光波或电波经调制或以其他方式生成以传输此类信息。当发送指示或携带代码或设计的电载波时,只要执行复制、缓冲或重新传输电信号的程度,就可以进行新的复制。因此,通信提供商或网络提供商可以至少暂时地在有形的、机器可读介质上存储体现本发明的实施例的技术的物品,诸如编码为载波的信息。
如本文所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件,例如微控制器,以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是专门配置为识别和/或执行要保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用是指包括代码的非暂时性介质,该代码特别适于由微控制器执行以执行预定操作。并且可以推断,在又一个实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,被示为单独的模块边界通常会发生变化并可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器的硬件,或诸如可编程逻辑器件的其他硬件。
在一个实施例中,短语“至”或“配置为”的使用是指安排、组合、制造、提供销售、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,如果被设计、耦合和/或互连以执行所述指定任务,则仍在未操作的装置或其元件仍被“配置为”执行指定任务。仅作为说明性示例,逻辑门可以在操作期间提供0或1。但是“向时钟提供使能信号的逻辑门配置为”并不包括可能提供1或0的每个潜在逻辑门。相反,该逻辑门以某种方式耦合,即在操作期间1或0输出为启用时钟。再次注意,术语“配置为”的使用不需要操作,而是专注于装置、硬件和/或元素的潜在状态,其中当装置、硬件和/或元件正在运行时,在潜在状态下,装置、硬件和/或元素被设计为执行特定任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作”的使用是指某些装置、逻辑、硬件和/或元件,其被设计为能够使用特定方式的装置、逻辑、硬件和/或元件。如上所述,在一个实施例中,“用于”、“能够”或“可操作”是指装置、逻辑、硬件和/或元件的潜在状态,其中该装置、逻辑、硬件和/或元件为不能运行,而是以允许以指定方式使用装置的方式进行设计。
如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,使用逻辑级别、逻辑值或逻辑的值也称为1和0,它们仅表示二进制逻辑状态。例如,1表示逻辑高电平,而0表示逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保存单个逻辑值或多个逻辑值。但是,已经使用了计算机系统中值的其他表示形式。例如,十进制数字十也可以表示为二进制值1010和十六进制字母A。因此,该值包括能够在计算机系统中保存的信息的任何表示表示。
此外,状态可以由值或值的一部分表示。作为示例,第一值,例如逻辑1,可以表示默认或初始状态,而第二值,例如逻辑0,可以表示非默认状态。另外,在一个实施例中,术语“重置”和“设置”分别是指默认值和更新后的值或状态。例如,默认值可能包括高逻辑值,即重置,而更新值可能包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以通过存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括以诸如计算机或电子系统之类的机器可读的形式提供(即,存储和/或发送)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光学存储设备;声学存储设备;其他形式的存储设备,用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息;等等,这将与可以从中接收信息的非暂时性介质区分开。
用于对逻辑进行编程以执行本发明的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪存或其他存储器。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不仅限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪存或有形的机器可读存储,用于通过电、光、声或传播信号的其他形式(例如,载波、红外信号、数字信号等)通过互联网传输信息。因此,计算机可读介质包括适合于以机器(例如,计算机)可读形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
在整个说明书中,对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。
在前述说明书中,已经参考特定示例性实施例给出了详细描述。然而,将显而易见的是,在不脱离如所附权利要求书中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是说明性的而不是限制性的。此外,实施例和其他示例性语言的前述使用不一定指相同的实施例或相同的示例,而是可以指不同且有区别的实施例以及潜在地相同的实施例。
该系统、方法和装置可以包括以下示例中的一个或组合:
示例1是一种装置,其包括控制器和命令队列,用于将传入的写请求缓冲到该装置中。控制器用于通过链路从客户端将事务层分组(TLP)中非投递式写请求接收到命令队列;确定命令队列可以接受非投递式写请求;生成完成消息,具有完成状况位被设置为成功完成(SC);并通过链路向客户端发送指示非投递式写请求已被接受到命令队列中的完成消息。
示例2可以包括示例1的主题,其中非投递式写请求包括延迟存储器写(DMWr)请求消息。
示例3可以包括示例2-3中任何一个的主题,控制器用于接收第二TLP中的第二非投递式写请求;确定命令队列已满;生成完成消息,具有完成状况位被设置为存储器请求重试状况(MRS);并通过链路向客户端发送指示非投递式写请求已被拒绝到命令队列中的完成消息。
示例4可以包括示例3的主题,该控制器用于接收第三TLP,该第三TLP包括对第二非投递式写请求的重试;确定命令队列可以接受第二非投递式写请求;生成完成消息,具有完成状况位被设置为成功完成(SC);并通过链路向客户端发送指示非投递式写请求已被接受到命令队列中的完成消息。
示例5可以包括示例1-3中任何一个的主题,其中,所述设备包括输入/输出设备,例如加速器。
示例6可以包括示例1-5中任何一个的主题,其中非投递式写请求在事务层分组(TLP)中接收,所述事务层分组包括指示已确认的存储器写请求的类型字段。
示例7可以包括示例6的主题,其中,TLP包括完成字段,该完成字段指示没有用于确认的存储器写完成的数据的完成。
示例8可以包括示例1-7中任何一个的主题,其中,链路基于快速外围组件互连(PCIe)协议。
示例9是一种包括主机设备的系统,该主机设备包括位于主机设备上的端口,该端口用于通过链路将包含非投递式写请求的TLP发送到I/O设备;以及通过链路耦合到端口的输入/输出(I/O)设备。I/O设备可以从链路上接收包括非投递式写请求的TLP,确定命令队列具有可用于接受非投递式写请求的空间,生成完成消息,具有完成状况位被设置为成功的完成(SC)。端口用于通过链路向客户端发送指示非投递式写请求已被接受到命令队列中的完成消息。
示例10可以包括示例9的主题,其中非投递式写请求是第一非投递式写请求。将包括第二非投递式写请求的第二TLP发送到I/O设备。I/O设备用于接收第二非投递式写请求,确定I/O设备处的命令队列已满,并生成完成消息,具有完成状况位被设置为存储器请求重试状况(MRS)以用于由端口通过链路传到客户端,完成消息指示非投递式写请求被拒绝到命令队列中。所述端口用于将指示非投递式写请求的完成消息的消息转发到I/O设备的链路伙伴。
示例11可以包括示例9中的任一个的主题,其中,非投递式写请求是第一非投递式写请求。
示例12可以包括示例11的主题,其中端口是第一端口,主机设备包括第二端口,第二端口包括启用的出口阻塞,第二端口用于从链路伙伴接收第二非投递式写请求;并发送包括不支持的请求状况标识符的状况的完成消息。
示例13可以包括示例11的主题,其中I/O设备用于接收第二非投递式写请求,该第二非投递式写请求包括已损坏的事务层分组;并将包括不受支持的请求状况指示符的完成消息发送到第一端口。
示例14可以包括示例11的主题,其中I/O设备用于接收第二非投递式写请求;确定第二非投递式写请求包括不可校正的错误;并将完整的中止消息发送到端口。
示例15可以包括示例11的主题,其中I/O设备用于接收第二非投递式写请求;确定第二非投递式写请求包括不支持的类型或操作数;并将具有不支持的请求状况指示符的完成消息发送到端口。
示例16可以包括示例9-15中任何一个的主题,其中I/O设备包括加速器设备。
示例17可以包括示例9-16中任何一个的主题,其中非投递式写请求包括延迟存储器写(DMWr)请求。
示例18可以包括示例9-17中的任何一个的主题,其中命令队列包括共享工作队列(SWQ),并且非投递式写请求在I/O设备的SWQ处接收。
示例19可以包括示例9-18中的任何一个的主题,其中,该链路基于快速外围组件互连(PCIe)协议。
示例20是一种计算机实现的方法,包括:在输入/输出(I/O)设备处通过链路从客户端将事务层分组(TLP)中的非投递式写请求接收到命令队列;由I/O设备的控制器确定命令队列可以接受非投递式写请求;生成完成消息,具有完成状况位被设置为成功完成(SC);并通过链路向客户端发送指示非投递式写请求已被接受到命令队列中的完成消息。
示例21可以包括示例20的主题,其中非投递式写请求包括延迟存储器写(DMWr)请求消息。
示例22可以包括示例20-21中的任何一个的主题,并且还可以包括在I/O设备处接收第二TLP中的第二非投递式写请求;由I/O设备的控制器确定命令队列已满;生成完成消息,具有完成状况位被设置为存储器请求重试状况(MRS);并通过链路向客户端发送指示非投递式写请求被拒绝到命令队列中的完成消息。
示例23可以包括示例22的主题,并且还可以包括接收第三TLP,该第三TLP包括第二非投递式写请求的重试;确定命令队列可以接受第二非投递式写请求;生成完成消息,具有完成状况位被设置为SC;并将完成消息发送到链路伙伴。
示例24可以包括示例20-23中任何一个的主题,并且还可以包括接收第二非投递式写请求;确定第二非投递式写请求中包含不可校正的错误;并将完整的中止消息发送到链路伙伴。
示例25可以包括示例20-24中任何一个的主题,并且还可以包括接收第二非投递式写请求;确定非投递式写请求包括不支持的类型或操作数;并将具有不支持的请求状况指示符的完成消息发送到链路伙伴。
示例26是一种设备,该设备包括用于缓冲传入的工作请求的命令队列,以及用于基于命令队列的状况从接收到的事务层分组确定延迟存储器写(DMWr)请求和一个或多个对DMWr的响应消息的单元。
Claims (35)
1.一种设备,包括:
输入/输出(IO)接口,其用于通过链路将所述设备耦合到处理器;
多个处理引擎;
多个工作队列,其用于存储要由所述设备的处理引擎执行的工作的描述符;以及
多个仲裁器,其包括用于将工作队列中的描述符分派到处理引擎的电路装置;以及
配置寄存器,其包括组配置寄存器以存储数据,所述数据控制将所述处理引擎和工作队列映射到组中,每个组包括一个或多个工作队列和用于处理所述组的工作队列中的描述符的一个或多个处理引擎。
2.根据权利要求1所述的设备,其中,每个仲裁器还用于:基于组的第一处理引擎的停顿,将所述组的工作队列的描述符分派到所述组的第二处理引擎。
3.根据权利要求1或2所述的设备,其中,组的第二处理引擎用于:基于所述组的第一处理引擎中的高延时存储器地址转换或页面错误,来继续操作。
4.根据权利要求1-3中任一项所述的设备,其中,所述组配置寄存器还包括业务类别配置寄存器,以指示供所述处理引擎针对存储器访问使用的业务类别。
5.根据权利要求4所述的设备,其中,所述配置寄存器还包括虚拟通道配置寄存器,以将所述业务类别映射到虚拟通道。
6.根据权利要求1-5中任一项所述的设备,还包括工作提交寄存器,描述符通过所述工作提交寄存器被提交到所述设备。
7.根据权利要求6所述的设备,其中,所述工作提交寄存器包括第一寄存器和第二寄存器,所述第一寄存器能够接收描述符直到达到工作队列中的条目的阈值数量,所述第二寄存器能够接收描述符直到所述工作队列已满。
8.根据权利要求7所述的设备,其中,所述阈值数量是基于工作队列配置寄存器的。
9.根据权利要求1-8中任一项所述的设备,其中,所述配置寄存器还包括工作队列配置寄存器,以针对每个工作队列指示所述工作队列是共享工作队列还是专用工作队列。
10.根据权利要求1-9中任一项所述的设备,其中,所述配置寄存器还包括工作队列配置寄存器,以针对每个工作队列指示所述工作队列相对于其他工作队列的优先级,并且所述仲裁器包括用于基于所述工作队列配置寄存器中指示的优先级来分派每个组中的工作队列的描述符的电路装置。
11.根据权利要求10所述的设备,其中,所述仲裁器用于:与所述工作队列配置寄存器中指示的优先级成比例地分派所述工作队列的描述符。
12.根据权利要求1-11中任一项所述的设备,其中,所述配置寄存器还包括工作队列配置寄存器,以针对每个工作队列指示在重试被返回之前能够提交到所述工作队列的条目的阈值数量。
13.根据权利要求1-12中任一项所述的设备,其中,所述IO接口用于通过基于快速外围组件互连(PCIe)的链路将所述设备耦合到处理器,并且所述描述符是在非投递式写事务中通过所述基于PCIe的链路从所述处理器接收的。
14.一种系统,包括:
处理器,其用于执行多个软件客户端;
存储器,其耦合到所述处理器;以及
加速器,其通过链路耦合到所述处理器,所述加速器包括:
多个处理引擎,其用于处理来自所述软件客户端的工作请求;
多个工作队列,其用于存储由所述软件客户端提交的工作请求的描述符;
多个仲裁器,其包括用于将工作队列中的描述符分派到处理引擎的电路装置;以及
配置寄存器,其包括用于将所述处理引擎和工作队列安排到组中的组配置寄存器,每个组包括一个或多个工作队列和用于处理所述组的工作队列中的描述符的一个或多个处理引擎。
15.根据权利要求14所述的系统,其中,所述链路是基于快速外围组件互连(PCIe)的链路,并且所述处理器用于使用非投递式写事务将工作请求提交到所述加速器。
16.根据权利要求15所述的系统,其中,所述处理器用于使用ENQCMD指令或ENQCMDS指令来生成所述非投递式写事务。
17.根据权利要求15所述的系统,其中,所述处理器用于:生成所述非投递式写事务作为可延迟存储器写请求(DMWr)。
18.根据权利要求14-17中任一项所述的系统,其中,所述处理器用于:经由所述配置寄存器配置第一组和第二组,所述第一组包括第一组工作队列和第一组处理引擎,并且所述第二组包括第二组工作队列和第二组处理引擎。
19.根据权利要求14-18中任一项所述的系统,其中,所述加速器还包括工作提交寄存器,描述符通过所述工作提交寄存器被提交。
20.根据权利要求14-19中任一项所述的系统,其中,所述配置寄存器还包括工作队列配置寄存器,以针对每个工作队列指示所述工作队列是共享工作队列还是专用工作队列。
21.根据权利要求14-20中任一项所述的系统,其中,所述配置寄存器还包括工作队列配置寄存器,以针对每个工作队列指示所述工作队列相对于其他工作队列的优先级,并且所述仲裁器包括用于基于所述工作队列配置寄存器中指示的优先级来分派每个组中的工作队列的描述符的电路装置。
22.一种方法,包括:
基于加速器设备的寄存器值,将所述加速器设备的第一组工作队列和所述加速器设备的第一组处理引擎配置到第一组中,并且将所述加速器设备的第二组工作队列和所述加速器设备的第二组处理引擎配置到第二组中;
在所述第一组工作队列处接收要由所述加速器设备的处理引擎执行的工作的描述符;以及
由与所述第一组相关联的所述加速器设备的仲裁器电路装置,将所述第一组工作队列中的描述符分派到所述第一组处理引擎。
23.根据权利要求22所述的方法,其中,所述第一组包括第一处理引擎和第二处理引擎,并且所述方法包括:基于所述第一处理引擎的停顿,将所述第一组工作队列中的描述符分派到所述第二处理引擎。
24.根据权利要求23所述的方法,其中,分派到所述第二处理引擎是基于所述第一处理引擎中的高延时存储器地址转换或页面错误的。
25.根据权利要求22-24中任一项所述的方法,其中,接收所述描述符还包括在所述加速器设备的工作提交寄存器中接收所述描述符。
26.根据权利要求22-25中任一项所述的方法,其中,分派所述第一组工作队列中的描述符是基于在所述加速器设备的工作队列配置寄存器中指示的优先级的。
27.根据权利要求22-26中任一项所述的方法,其中,所述描述符由所述加速器设备经由非投递式写事务接收。
28.根据权利要求22-27中任一项所述的方法,还包括:基于工作队列配置寄存器值,将所述第一组的第一工作队列配置为共享工作队列并且将所述第一组的第二工作队列配置为专用工作队列。
29.根据权利要求22-28中任一项所述的方法,还包括基于工作队列达到描述符的所配置的阈值数量而返回重试。
30.一种装置,包括用于执行如权利要求22至29中任一项所述的方法的单元。
31.一种计算机实现的方法,包括:
在输入/输出(I/O)设备处通过链路从客户端将事务层分组(TLP)中的非投递式写请求接收到所述命令队列;
由所述I/O设备的控制器确定所述命令队列能够接受所述非投递式写请求;
生成完成消息,所述完成消息具有被设置为成功完成(SC)的完成状况位;
其中,所述非投递式写请求包括延迟存储器写(DMWr)请求消息;
其中,所述方法还包括:
在所述I/O设备处,接收第二TLP中的第二非投递式写请求;
由所述I/O设备的控制器确定所述命令队列已满;以及
生成完成消息,所述完成消息具有被设置为存储器请求重试状况(MRS)的完成状况位。
32.根据权利要求31所述的方法,还包括:
接收第三TLP,其包括所述第二非投递式写请求的重试;
确定所述命令队列能够接受所述第二非投递式写请求;
生成具有被设置为SC的完成状况位的完成消息;以及
通过所述链路向所述客户端发送所述完成消息。
33.一种方法,包括:
接收事务层分组(TLP);
所述TLP包括快速外围组件互连(PCIe)类型字段编码,以指示所述TLP包括可延迟存储器写请求(DMWr);
确定所述DMWr请求是否能够完成;以及
如果所述DMWr无法完成,则返回请求重试状况(RRS)完成状态;
其中,确定所述TLP包括DMWr请求包括:读取TLP格式字段编码和TLP类型字段编码,所述格式字段编码包括010或011之一,并且所述类型字段编码包括11011。
34.根据权利要求33所述的方法,其中,所述RRS完成状态包括完成状态字段消息编码010。
35.根据权利要求33所述的方法,还包括:如果所述TLP包括不可校正的错误,则返回完成者中止(CA)完成状态。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962836288P | 2019-04-19 | 2019-04-19 | |
US62/836,288 | 2019-04-19 | ||
US16/566,865 | 2019-09-10 | ||
US16/566,865 US10970238B2 (en) | 2019-04-19 | 2019-09-10 | Non-posted write transactions for a computer bus |
CN202010193031.9A CN111831603A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的未发布写事务 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010193031.9A Division CN111831603A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的未发布写事务 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115481071A true CN115481071A (zh) | 2022-12-16 |
Family
ID=69007585
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010193031.9A Pending CN111831603A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的未发布写事务 |
CN202110189872.7A Pending CN112882963A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的非投递式写事务 |
CN202211327255.XA Pending CN115481071A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的非投递式写事务 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010193031.9A Pending CN111831603A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的未发布写事务 |
CN202110189872.7A Pending CN112882963A (zh) | 2019-04-19 | 2020-03-18 | 针对计算机总线的非投递式写事务 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10970238B2 (zh) |
EP (3) | EP4184336A1 (zh) |
CN (3) | CN111831603A (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099880B2 (en) * | 2017-02-22 | 2021-08-24 | Intel Corporation | Virtualization of process address space identifiers for scalable virtualization of input/output devices |
JP2020042879A (ja) * | 2018-09-12 | 2020-03-19 | キオクシア株式会社 | 磁気記憶装置 |
US20220231962A1 (en) | 2019-05-23 | 2022-07-21 | Hewlett Packard Enterprise Development Lp | System and method for facilitating data request management in a network interface controller (nic) |
KR20210072503A (ko) | 2019-12-09 | 2021-06-17 | 삼성전자주식회사 | 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템 |
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US11188471B2 (en) | 2020-04-03 | 2021-11-30 | Alibaba Group Holding Limited | Cache coherency for host-device systems |
US11461099B2 (en) | 2020-06-25 | 2022-10-04 | Intel Corporation | System, apparatus and method for fine-grain address space selection in a processor |
US11907744B2 (en) | 2020-06-25 | 2024-02-20 | Intel Corporation | System, apparatus and method for enabling fine-grain quality of service or rate control for work submissions |
EP4195060A4 (en) * | 2020-08-28 | 2024-02-21 | Huawei Tech Co Ltd | DATA TRANSMISSION METHOD AND SYSTEM |
US11500668B2 (en) * | 2020-10-15 | 2022-11-15 | Red Hat, Inc. | Page fault support for virtual machine network accelerators |
US11762583B2 (en) * | 2020-10-22 | 2023-09-19 | EMC IP Holding Company, LLC | System and method for selectively throttling commands within a storage system |
JP2022076620A (ja) * | 2020-11-10 | 2022-05-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20210240655A1 (en) * | 2020-11-16 | 2021-08-05 | Intel Corporation | Source ordering in device interconnects |
CN112581585B (zh) * | 2020-12-24 | 2024-02-27 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU命令处理模块的TLM装置及操作方法 |
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US11928070B2 (en) | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
US20220413909A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Techniques to enable quality of service control for an accelerator device |
US20230040226A1 (en) * | 2021-07-27 | 2023-02-09 | Intel Corporation | Method and apparatus for dynamically adjusting pipeline depth to improve execution latency |
US20240054011A1 (en) * | 2022-08-12 | 2024-02-15 | Intel Corporation | Data streaming accelerator |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7184399B2 (en) * | 2001-12-28 | 2007-02-27 | Intel Corporation | Method for handling completion packets with a non-successful completion status |
US7340548B2 (en) * | 2003-12-17 | 2008-03-04 | Microsoft Corporation | On-chip bus |
US7191255B2 (en) * | 2004-10-27 | 2007-03-13 | Intel Corporation | Transaction layer link down handling for PCI express |
WO2008058088A1 (en) * | 2006-11-03 | 2008-05-15 | Bay Microsystems, Inc. | Highly-scalable hardware-based traffic management within a network processor integrated circuit |
GB2472620B (en) * | 2009-08-12 | 2016-05-18 | Cloudtran Inc | Distributed transaction processing |
US8799550B2 (en) * | 2010-07-16 | 2014-08-05 | Advanced Micro Devices, Inc. | System and method for increased efficiency PCI express transaction |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US9448846B2 (en) * | 2011-12-13 | 2016-09-20 | International Business Machines Corporation | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines |
US9348741B1 (en) * | 2011-12-19 | 2016-05-24 | Western Digital Technologies, Inc. | Systems and methods for handling write data access requests in data storage devices |
US9600431B2 (en) | 2012-10-22 | 2017-03-21 | Intel Corporation | High performance interconnect physical layer |
US9749448B2 (en) * | 2014-11-25 | 2017-08-29 | Intel Corporation | Header parity error handling |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US9753876B1 (en) | 2016-09-22 | 2017-09-05 | International Business Machines Corporation | Processing of inbound back-to-back completions in a communication system |
US10437616B2 (en) | 2016-12-31 | 2019-10-08 | Intel Corporation | Method, apparatus, system for optimized work submission to an accelerator work queue |
CN110121698A (zh) | 2016-12-31 | 2019-08-13 | 英特尔公司 | 用于异构计算的系统、方法和装置 |
US10592322B1 (en) * | 2017-06-27 | 2020-03-17 | Amazon Technologies, Inc. | Adaptive timeout mechanism |
US10552367B2 (en) * | 2017-07-26 | 2020-02-04 | Mellanox Technologies, Ltd. | Network data transactions using posted and non-posted operations |
WO2019178264A1 (en) * | 2018-03-14 | 2019-09-19 | Fungible, Inc. | Flexible processing of network packets |
US10636577B2 (en) * | 2018-05-25 | 2020-04-28 | Qualcomm Incorporated | Safe handling of link errors in a peripheral component interconnect express (PCIE) device |
-
2019
- 2019-09-10 US US16/566,865 patent/US10970238B2/en active Active
-
2020
- 2020-02-04 EP EP22202176.8A patent/EP4184336A1/en active Pending
- 2020-02-04 EP EP20155352.6A patent/EP3726392B1/en active Active
- 2020-02-04 EP EP21152875.7A patent/EP3828715B1/en active Active
- 2020-03-18 CN CN202010193031.9A patent/CN111831603A/zh active Pending
- 2020-03-18 CN CN202110189872.7A patent/CN112882963A/zh active Pending
- 2020-03-18 CN CN202211327255.XA patent/CN115481071A/zh active Pending
-
2021
- 2021-02-26 US US17/187,271 patent/US11513979B2/en active Active
-
2022
- 2022-09-28 US US17/955,353 patent/US20230035420A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3726392A1 (en) | 2020-10-21 |
US20230035420A1 (en) | 2023-02-02 |
EP3828715A3 (en) | 2021-07-28 |
EP4184336A1 (en) | 2023-05-24 |
US20200004703A1 (en) | 2020-01-02 |
CN111831603A (zh) | 2020-10-27 |
EP3828715A2 (en) | 2021-06-02 |
CN112882963A (zh) | 2021-06-01 |
US10970238B2 (en) | 2021-04-06 |
EP3726392B1 (en) | 2023-10-11 |
US20210209037A1 (en) | 2021-07-08 |
EP3828715B1 (en) | 2023-04-26 |
US11513979B2 (en) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11513979B2 (en) | Non-posted write transactions for a computer bus | |
US11657015B2 (en) | Multiple uplink port devices | |
US10191877B2 (en) | Architecture for software defined interconnect switch | |
JP6147840B2 (ja) | ルートポート及びRPIE(RootPortIntegratedEndpoint)のレジューム時間を向上させるための方法、装置及びシステム | |
CN108701023B (zh) | 用于带内重定时器寄存器访问的装置和系统 | |
CN107111576B (zh) | 发布的中断架构 | |
US10437616B2 (en) | Method, apparatus, system for optimized work submission to an accelerator work queue | |
US20190005176A1 (en) | Systems and methods for accessing storage-as-memory | |
CN108604209B (zh) | 扁平化端口桥 | |
CN110633241A (zh) | 用于非对称接口的动态高速通道方向切换的系统、方法和装置 | |
US20210374087A1 (en) | Technologies for increasing link efficiency | |
EP4123466A1 (en) | Technologies for increasing link efficiency | |
US20230013023A1 (en) | ARCHITECTURAL INTERFACES FOR GUEST SOFTWARE TO SUBMIT COMMANDS TO AN ADDRESS TRANSLATION CACHE IN XPUs |
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 |