CN115643173A - 用于提高链路效率的技术 - Google Patents
用于提高链路效率的技术 Download PDFInfo
- Publication number
- CN115643173A CN115643173A CN202210687611.2A CN202210687611A CN115643173A CN 115643173 A CN115643173 A CN 115643173A CN 202210687611 A CN202210687611 A CN 202210687611A CN 115643173 A CN115643173 A CN 115643173A
- Authority
- CN
- China
- Prior art keywords
- message
- device handle
- identifier
- domain
- controller hub
- 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/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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
Abstract
公开了用于提高链路效率的技术。在一个实施例中,在链路的每一端创建设备句柄表格。设备句柄分配消息被用于将特定设备句柄与特定域标识符关联起来,例如总线/设备/功能(BDF)标识符或者处理器地址空间标识符(PASID)。一旦分配了设备句柄,就可以在链路的两端发送包括该设备句柄的消息。设备句柄可被用于确定与消息相关联的域标识符。由于设备句柄的比特可少于域标识符,所以链路效率可得到提高。
Description
技术领域
本公开涉及用于提高链路效率的技术。
背景技术
在计算设备的组件之间发送的消息可包括指示出与该消息相关联的域的域标识符。例如,通过诸如PCIe之类的链路连接的CPU和负载转移设备或加速器之间的消息可能包括总线/设备/功能(bus/device/function,BDF)标识符和/或处理器地址空间标识符(processor address space identifier,PASID),以识别与消息相关联的域。域可以与各种实体相关联,例如,BDF和PASID的组合可以与虚拟环境中的虚拟机或者非虚拟环境中的每个进程相关联。对于相对较长的消息,相对较长的域标识符不会显著影响链路的效率。然而,对于相对较短的消息,每个消息的头部中包括的相对较长的域标识符可影响链路的整体效率。
发明内容
根据本公开的实施例,提供了一种控制器中枢,包括:主机消息处理器电路,用于:从通过链路连接到所述控制器中枢的设备接收消息,其中,所述消息包括设备句柄标识符;基于所述消息的设备句柄标识符来访问设备句柄表格中的条目,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且基于与所述消息的设备句柄标识符相对应的所述域标识符来处理所述消息。
根据本公开的实施例,提供了一种设备,包括:设备消息处理器电路,用于:确定要被发送到控制器中枢的消息,所述控制器中枢通过链路连接到所述设备;确定在设备句柄表格中是否存在与所述消息的域相关联的条目;并且响应于确定在所述设备句柄表格中存在所述条目,访问所述条目,其中,所述条目包括与所述消息的域相对应的设备句柄标识符;并且将所述消息带着与所述消息的域相对应的设备句柄标识符发送到所述控制器中枢。
根据本公开的实施例,提供了一种系统,包括:控制器中枢;以及通过链路连接到所述控制器中枢的设备,所述设备包括设备消息处理器电路,用于向所述控制器中枢发送消息,其中,所述消息包括与所述消息的域相关联的设备句柄标识符,所述控制器中枢包括主机消息处理器电路,用于:从所述设备接收所述消息;基于所述消息的设备句柄标识符来访问所述控制器中枢的设备句柄表格中的条目,其中,所述控制器中枢的设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
根据本公开的实施例,提供了一种控制器中枢,包括:用于由控制器中枢从通过链路连接到所述控制器中枢的设备接收消息的装置,其中,所述消息包括设备句柄标识符;用于基于所述消息的设备句柄标识符来访问设备句柄表格中的条目的装置,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且用于基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息的装置。
附图说明
在附图中以示例方式而非限制方式图示了本文描述的构思。为了图示的简单和清晰,附图中图示的元素不一定是按比例绘制的。在认为适当时,附图标记在附图之间被重复以指示出对应的或相似的元素。
图1图示了包括互连体系结构的计算系统的实施例。
图2图示了包括分层堆栈的互连体系结构的实施例。
图3图示了互连体系结构的发送器和接收器对的实施例。
图4图示了可由图1的计算系统建立的环境的简化框图。
图5图示了可由图1的计算系统的输入/输出设备建立的环境的简化框图。
图6图示了可由图1的计算系统实现的表格。
图7-图9图示了可由图1的计算系统执行的用于利用设备句柄标识符来传送数据的方法的至少一个实施例的简化流程图。
图10图示了可由图1的计算系统执行的用于利用设备句柄标识符来传送数据的方法的至少一个实施例的简化流程图。
图11图示了可由图1的计算系统执行的用于利用设备句柄标识符来传送数据的方法的至少一个实施例的简化流程图。
图12图示了可由图1的计算系统执行的用于利用设备句柄标识符来传送数据的方法的至少一个实施例的简化流程图。
图13图示了包括多核心处理器的计算系统的框图的实施例。
图14图示了包括多个处理器的计算系统的块的实施例。
具体实施方式
在接下来的描述中,阐述了许多具体细节,例如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线阶段和操作等等的示例,以便提供对本公开的透彻理解。然而,本领域技术人员将会清楚,实现本公开的实施例并不需要采用这些具体细节。在其他情况中,没有详细描述公知的组件或方法,例如特定的和替换的处理器体系结构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表述、特定断电和门控技术/逻辑、以及计算机系统的其他特定操作细节,以避免不必要地模糊本公开的实施例。
尽管可参考特定集成电路中(例如计算平台或微处理器中)的能量节约和能量效率来描述以下实施例,但其他实施例适用于其他类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可被应用到也可受益于更好的能量效率和能量节约的其他类型的电路或半导体器件。例如,所公开的实施例不限于桌面计算机系统或UltrabooksTM,而是也可被用于其他设备中,例如手持设备、平板设备、其他薄型笔记本、片上系统(systems ona chip,SOC)设备、以及嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(personal digital assistant,PDA)、以及手持PC。嵌入式应用通常包括微控制器、数字信号处理器(digital signal processor,DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(wide area network,WAN)交换机、或者能够执行下面教导的功能和操作的任何其他系统。另外,本文描述的装置、方法和系统不限于物理计算设备,而是也可涉及针对能量节约和效率的软件优化。正如在以下描述中将变得显而易见的,本文描述的方法、装置和系统的实施例(无论是就硬件、固件、软件或者其组合而言)对于与性能考虑平衡的“绿色技术”未来是至关重要的。
随着计算系统的发展,其中的组件正变得更加复杂。因此,在组件之间耦合和通信的互连体系结构也越来越复杂,以确保满足带宽要求,从而实现最优的组件操作。此外,不同的细分市场对互连体系结构的不同方面有要求,以适应市场的需求。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能来节省电力。然而,提供尽可能最高的性能和最大限度的电力节省,是大多数架构的一个单一目的。下面,将论述若干个互连,这些互连有可能从本公开的各方面受益。
参考图1,图示了由点到点链路组成的架构的实施例,这些链路将一组组件互连。系统100包括处理器105、控制器中枢115、以及耦合到控制器中枢115的系统存储器110。处理器105包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器、或者其他处理器。处理器105分别通过前端总线(front-side bus,FSB)106耦合到控制器中枢115。应当明白,在一些实施例中,计算系统100可包括更多或更少的处理器。在具有更多处理器的计算系统100中,每一对处理器可以由链路109连接。在一个实施例中,FSB 106是如下所述的串行点到点互连。在另一个实施例中,链路106包括符合不同互连标准的串行、差动互连体系结构,所述标准例如是快速路径互连(Quick Path Interconnect,QPI)或者超路径互连(Ultra Path Interconnect,UPI)。在一些实施例中,系统可包括实现多个协议堆栈的逻辑和协商在共同的物理层之上运行替换协议的进一步逻辑,以及其他示例功能。
系统存储器110包括任何存储器设备,例如随机访问存储器(random accessmemory,RAM)、非易失性(non-volatile,NV)存储器、或者可被系统100中的设备访问的其他存储器。在说明性实施例中,系统存储器110耦合到控制器中枢115。额外地或者替换地,在一些实施例中,系统存储器110通过存储器接口与处理器105耦合。存储器接口的示例包括双数据速率(double-data rate,DDR)存储器接口、双通道DDR存储器接口、以及动态RAM(dynamic RAM,DRAM)存储器接口。
在一个实施例中,控制器中枢115是外围组件互连快速(Peripheral ComponentInterconnect Express,PCIe或者PCIE)互连层次体系中的根集线器、根复合体或者根控制器。控制器中枢115的示例包括芯片组、存储器控制器中枢(memory controller hub,MCH)、北桥、互连控制器中枢(interconnect controller hub,ICH)、南桥、以及根控制器/集线器。术语“芯片组”通常指的是两个物理上分离的控制器中枢,即,耦合到互连控制器中枢(ICH)的存储器控制器中枢(MCH)。注意,当前系统通常包括与处理器105集成的MCH,而控制器115将与I/O设备通信,其方式与如下所述的类似。在一些实施例中,通过根复合体115可选地支持对等路由。
控制器中枢115还包括输入/输出存储器管理单元(input/output memorymanagement unit,IOMMU)116。在一些实施例中,IOMMU 116可以被称为转化代理。在说明性实施例中,IOMMU 116形成控制器中枢115的一部分。额外地或者替换地,在一些实施例中,IOMMU 116的部分或全部可以是与控制器中枢115分开的组件。IOMMU 116可包括硬件电路、软件、或者硬件和软件的组合。IOMMU 116可用于为存储器110中的地址空间提供地址转化服务(address translation service,ATS),以允许一个或多个负载转移设备125执行存储器事务以满足主机系统发出的作业请求。
这里,控制器中枢115通过串行链路119耦合到交换机/桥接器120。也可被称为接口/端口117和121的输入/输出模块117和121包括/实现分层协议堆栈来提供控制器中枢115和交换机120之间的通信。在一个实施例中,多个设备能够耦合到交换机120。在一些实施例中,端口117可被称为根端口117。
交换机/桥接器120从负载转移设备125向上游路由封包/消息,即,在层次体系中向上朝着根复合体,路由到控制器中枢115,以及向下游路由,即,在层次体系中向下远离根控制器,从处理器105或系统存储器110到负载转移设备125。交换机120在一个实施例中被称为多个虚拟PCI到PCI桥接设备的逻辑组装件。负载转移设备125包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(Network InterfaceController,NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(UniversalSerial Bus,USB)设备、扫描仪、加速器设备、现场可编程门阵列(field programmablegate array,FPGA)、专用集成电路、以及其他输入/输出设备。通常在PCIe术语中,这样的设备被称为端点。虽然没有具体示出,但负载转移设备125可包括PCIe到PCI/PCI-X桥接器以支持遗留的或者其他版本的PCI设备。PCIe中的端点设备通常被分类为遗留、PCIe或者根复合体集成端点。
图形加速器130也通过串行链路132耦合到控制器中枢115。在一个实施例中,图形加速器130耦合到MCH,MCH耦合到ICH。交换机120以及相应地负载转移设备125于是耦合到ICH。I/O模块131和118也将实现分层协议堆栈来在图形加速器130和控制器中枢115之间通信。与上文论述的MCH类似,图形控制器或图形加速器130本身可被集成在处理器105中。另外,系统的一个或多个链路(例如,123)可包括一个或多个扩展设备(例如,150),例如重定时器、中继器,等等。
在使用中,在一些实施例中,负载转移设备125(或者任何其他连接到处理器105的设备,例如图形加速器130)可以支持不同的域。例如,负载转移设备125可以支持多个虚拟化功能,每个功能对应于不同的域。在一个示例中,负载转移设备125可以支持单根I/O虚拟化(single root I/Ovirtualization,SR-IOV)负载转移设备的不同租户。不同的域可以共享物理存储器(例如,在负载转移设备125上或者在系统存储器110上)。负载转移设备125可以通过链路123以及在经过交换机120之后通过链路119发送和接收各种消息,例如存储器事务、缓存一致性消息,等等。为了施行租户之间的隔离,诸如存储器请求之类的消息可包括识别例如与该消息相关联的特定虚拟功能的域标识符。
链路123上的消息可包括未转化的地址,例如访客虚拟地址(guest virtualaddress,GVA)、访客物理地址(guest physical address,GPA)或者IO虚拟地址(IOvirtual address,IOVA),或者可包括转化后的地址,例如主机物理地址(host physicaladdress,HPA)。对于未转化的地址,IOMMU 116执行从GPA、GPA或者IOVA到HPA的地址转化,以允许负载转移设备访问系统存储器110。
例如,在一个实施例中,IOMMU 116上的地址转化服务(ATS)可以允许负载转移设备125在设备转化后备缓冲器中缓存转化后的地址(即,HPA)以改善性能,例如通过避免或者减少使用IOMMU转化能力的内联使用。ATS允许了设备支持共享虚拟存储器,并且支持协议,例如在物理地址域中操作的一致缓存(例如,计算快速链路(Compute Express Link,CXL)缓存,或者CXL.cache)。IOMMU 116上的安全ATS服务可以利用包含每个页面的权限的物理索引表来施行设备能够访问的物理地址的隔离。该表格可以是按域设置的(例如,为虚拟环境中的每个虚拟机或者为非虚拟环境中的每个进程设置)。诸如安全ATS这样的服务可以受益于对于每个正被处理的消息能够访问域标识符。例如,试图访问消息中包括的物理存储器地址的消息可以基于与该消息和物理存储器地址相关联的域被许可或不许可。
因此,域的指示符可被包括在链路119上发送的消息中。一种方法是在链路协议的每个消息的头部中包括识别域所需要的所有数据。然而,如果消息大小较小,那么用域标识符增大头部大小将显著降低链路119的效率。链路效率被定义为消息中的发送的数据的大小与整个消息的大小之间的比率。例如,如果域标识符信息是例如36比特,而先前使用的消息的大小是512比特,那么头部中额外的36比特将使整个消息的大小增大到548比特,导致链路效率降低7%,这还不包括头部中的其他控制字段例如物理地址的影响。如果能够减小头部中的域标识符的大小,可以将链路的效率提高达7个百分点。一般而言,有效载荷可以是任何适当的长度,例如25至216比特。域标识符信息可以是任何适当的长度,例如12-64比特。
当要传输的额外头部比特被映射到数量相对较少的域,例如不是所有可能的组合都可能出现在链路119上时,提高链路效率可以是将使用中的域到更少数目的头部比特的映射存储在链路两端的表格(例如,设备句柄表格600)中。除了(或者代替)存储域的映射以外,其他头部比特(例如设备或域能力)的映射可以被映射到更少数目的头部比特。
为了提高链路119的效率,在说明性实施例中,可以定义设备句柄表格600(见图6),该表格包括不同设备句柄标识符(device handle identifier,DHI)的若干条目。设备句柄表格600中的每个条目包括DHI和域标识符的一个或多个元素,例如总线/设备/功能(BDF)标识符(或者源标识符)和/或处理器地址空间标识符(PASID)。在说明性实施例中,BDF标识符是16比特,并且PASID是20比特,得到的域标识符是16-36比特。更一般而言,域标识符是识别虚拟功能、虚拟机、进程和/或任何其他适当的域的任何标识符。在一些实施例中,域标识符可以是识别不同存储器域的任何标识符,并且域标识符可以被IOMMU 116、存储器110、控制器中枢115等等用来施行不同存储器域之间的边界。域标识符可以是任何适当数目的比特,例如8-64比特。设备句柄表格600可包括可以与域唯一关联的附加字段。例如,在一些实施例中,设备句柄表格600可以为每个DHI包括受信任比特,以识别DHI是否是有关于受信任域的。
不是在消息头部中包括BDF标识符和/或PASID(这将是每条消息16-36比特),跨越链路119的消息可在消息头部中包括对设备句柄表格中的条目的引用,这可以使用更少数目的比特来索引。例如,设备句柄表格可以用例如2-12比特来索引,这将对应于设备句柄表格中的4-4096个条目。由于存在的域可能多于设备句柄表格600中可用的条目,所以设备句柄表格600中的条目可以根据需要被分配和解除分配。在说明性实施例中,由于用于识别域的比特数目更少而提高的链路119的效率,弥补了填充和维护设备句柄表格600所必需的任何资源。
本文描述的方法允许了链路(例如PCIe或CXL链路)更高效地支持需要用稀疏的头部字段集合来标记事务的任何用法。在一个实施例中,它允许由软件(例如,由虚拟机管理器(virtual machine manager,VMM)、管理程序或者操作系统)定义的细粒度存储器隔离(例如每个虚拟机或者每个进程)。通过将域的标记分割成单独的设备标识符分配消息,常规消息可以使用较小的标签来识别相关域。此外,本文公开的技术可被用于扩展与设备句柄标识符(DHI)相关联的设备上下文信息。例如,设备上下文信息可包括受信任比特,该比特可用于例如输入/输出受信任域扩展(trusted domain extensions for input/output,TDX.IO)。
转到图2,图示了分层协议堆栈的实施例。分层协议堆栈200包括任何形式的分层通信堆栈,例如快速路径互连(QPI)堆栈、超路径互连(UPI)堆栈、PCIe堆栈、计算快速链路(CXL)、下一代高性能计算互连堆栈、或者其他分层堆栈。虽然下面紧接着参考图1-图3的论述是与UPI堆栈有关的,但同样的概念可被应用到其他互连堆栈。在一个实施例中,协议堆栈200是UPI协议堆栈,包括协议层202、路由层205、链路层210和物理层220。接口或者链路,例如图1中的链路109,可被表示为通信协议堆栈200。作为通信协议堆栈的表示也可以被称为实现/包括协议堆栈的模块或接口。
UPI使用封包来在组件之间传达信息。封包是在协议层202中形成的,以将信息从发送组件运送到接收组件。当发送的封包流经其他层时,它们被用在这些层处理封包所必需的附加信息来扩展。在接收端,发生相反的过程,并且封包从其物理层220表示被变换为数据链路层210表示,并且最后变换为可由接收设备的协议层202处理的形式。
协议层
在一个实施例中,协议层202在设备的处理核心和互连体系结构(例如数据链路层210和物理层220)之间提供接口。在这方面,协议层202的主要责任是封包的组装和拆卸。封包可被分类为不同的类别,例如本机、窥探、数据响应、非数据响应、非一致标准以及非一致旁路。
路由层
路由层205可用于确定封包在可用系统互连中将会穿越的路线。路由表可以由固件定义,并且描述封包可以遵循的可能路径。在诸如双插座平台之类的小型配置中,路由选项是有限的,并且路由表相当简单。对于更大的系统,路由表选项可能更复杂,这给出了路由和重路由流量的灵活性。
链路层
链路层210(也被称为数据链路层210)充当协议层202和物理层220之间的中间阶段。在一个实施例中,数据链路层210的责任是为在两个组件之间交换封包提供可靠的机制。数据链路层210的一侧接受由协议层202组装的封包,应用差错检测代码,即,CRC,并且将修改后的封包提交给物理层220,以便通过物理传输到外部设备。在接收封包时,数据链路层210检查CRC,并且如果检测到差错,则指示发送设备重发送。在说明性实施例中,CRC是在流控制单元(flow control unit,flit)级别而不是在封包级别执行的。在说明性实施例中,每个flit是80比特。在其他实施例中,每个flit可以是任何适当的长度,例如16、20、32、40、64、80或者128比特。
物理层
在一个实施例中,物理层220包括逻辑子块221和电气子块222,以物理地将封包发送到外部设备。这里,逻辑子块221负责物理层220的“数字”功能。在这方面,逻辑子块包括:发送部分,用于为物理子块222的发送准备外发信息;以及接收部分,用于在将信息传递到链路层210之前识别和准备接收到的信息。
物理块222包括发送器和接收器。发送器被逻辑子块221提供以符号,发送器将这些符号串行化并且发送到外部设备上。接收器被从外部设备提供以串行化的符号,并且将接收到的信号变换为比特流。该比特流被反串行化并且提供给逻辑子块221。在说明性实施例中,物理层220按20个比特的群组(称为物理单元或phit)发送和接收比特。在一些实施例中,采用了线路编码,例如8b/10b传输代码或者64b/66b传输代码。在一些实施例中,使用了特殊的符号来用帧223框定封包。此外,在一个示例中,接收器还提供从传入的串行流中恢复的符号时钟。
如上所述,虽然协议层202、路由层205、链路层210和物理层220是参考QPI协议堆栈的具体实施例来论述的,但分层协议堆栈不限于此。事实上,可以包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)第一层,用于组装封包,即协议层;第二层,用于对封包进行定序,即链路层;以及第三层,用于传输封包,即物理层。作为具体示例,利用了共同标准接口(common standard interface,CSI)分层协议。
接下来参考图3,图示了UPI串行点到点链路的实施例。虽然图示了UPI串行点到点链路的实施例,但串行点到点链路并不限于此,因为它包括用于传输串行数据的任何传输路径。在所示出的实施例中,基本的UPI串行点到点链路包括两个低电压的差动驱动的信号对:发送对306/312和接收对311/307。因此,设备305包括:发送逻辑306,用于将数据发送到设备310;以及接收逻辑307,用于从设备310接收数据。换句话说,UPI链路中包括:两条发送路径,即路径316和317;以及两条接收路径,即路径318和319。
传输路径是指用于传输数据的任何路径,例如传输线、铜线、光学线路、无线通信信道、红外通信链路或者其他通信路径。两个设备(例如设备305和设备310)之间的连接被称为链路,例如链路315。链路可以支持一个通道,每个通道表示一组差动信号对(一对用于发送,一对用于接收)。为了缩放带宽,链路可以聚集多个通道,用xN表示,其中N是任何支持的链路宽度,例如1、2、4、5、8、10、12、16、20、32、64或者更宽。在一些实现方式中,每个对称通道包含一个发送差动对和一个接收差动对。非对称通道可以包含不等比率的发送和接收对。一些技术可以利用对称通道(例如,UPI),而其他技术(例如,Displayport)可能不利用,甚至可能只包括发送或者只包括接收对,以及其他示例。链路可以指单向链路(例如由发送逻辑306和接收逻辑311建立的链路)或者可以指双向链路(例如由发送逻辑306和312以及接收逻辑307和311建立的链路)。
差动对是指用于传输差动信号的两条传输路径,例如线路316和317。作为示例,当线路316从低电压水平切换到高电压水平,即上升沿时,线路317从高逻辑水平驱动到低逻辑水平,即下降沿。差动信号有可能表现出更好的电气特性,例如更好的信号完好性,即交叉耦合、电压过冲/欠冲、振铃,等等。这允许了更好的定时窗口,从而实现更快的传输频率。
现在参考图4,在说明性实施例中,计算系统100在操作期间建立环境400。说明性环境400包括主机设备句柄表格管理器402和主机消息处理器404。环境400的各种模块可以体现为硬件、软件、固件或者其组合。例如,环境400的各种模块、逻辑和其他组件可以形成控制器中枢115(其可以是根复合体)、端口117(其可以是根端口)或者计算系统100的其他硬件组件的一部分,或者以其他方式由其建立。因此,在一些实施例中,环境400的一个或多个模块可以体现为电路或者电气设备的集合(例如,主机设备句柄表格管理器电路402、主机消息处理器电路404,等等)。应当明白,在这样的实施例中,一个或多个电路(例如,主机设备句柄表格管理器电路402、主机消息处理器电路404,等等)可以形成控制器中枢115、端口117和/或计算系统100的其他组件中的一个或多个的一部分。此外,在一些实施例中,一个或多个说明性模块可以形成另一模块的一部分,和/或一个或多个说明性模块可以彼此独立。另外,在一些实施例中,环境400的一个或多个模块可以体现为虚拟化硬件组件或者仿真的体系结构。应当明白,环境400的一个或多个模块的一些功能可要求硬件实现,在此情况下,实现这种功能的模块的实施例可至少部分体现为硬件。
可以实现为硬件、固件、软件和/或其任何适当组合的主机设备句柄表格管理器402,被配置为管理主机设备句柄表格,例如图6中所示的表格600。主机设备表格管理器402可以对表格600中的条目进行添加、移除、无效,等等。在说明性实施例中,表格600中的每个条目具有设备句柄标识符(DHI)、一个或多个域标识符(例如PASID或者BDF标识符),以及在一些实施例中,具有附加的上下文信息,例如受信任比特或者特定特征或特征集合是否被特定设备125或设备上下文所支持。例如,在一些实施例中,设备125可能不支持PASID。在这样的实施例中,表格600中的PASID可以是零,或者主机设备句柄表格条目中的单独比特可以指示出PASID不被支持。在说明性实施例中,DHI是N比特数字,例如2-12比特数字,并且DHI可以是从0到2N-1的任何值。表格中的每个条目可具有任何适当数目的比特。例如,在说明性实施例中,每个PASID是20比特,每个BDF标识符是16比特,并且受信任比特是单个比特。更一般而言,表格中的每个条目的每一列可具有任何适当数目的比特,例如1-128比特。
在一些实施例中,主机设备表格管理器402可以将表格600的部分或全部存储在SRAM上,或者可以将表格600的部分或全部存储在私有DRAM中,并且使用缓存来保持其最近使用的条目。在说明性实施例中,主机设备句柄表格管理器402为每个连接的设备125管理单独的表格600。在一些实施例中,主机设备句柄表格管理器402可以为多于一个或所有的连接设备125管理单个表格600。在这样的实施例中,表格600可以被分区,并且每个分区被指派给唯一的连接设备。
在一些实施例中,主机设备句柄表格管理器402可以接收清除或重置表格的指令。例如,在一些实施例中,在设备125的热交换或热插拔时,与设备125相关联的表格600可以被重置或者被完全解除分配。
可以实现为硬件、固件、软件和/或其任何适当组合的主机消息处理器404,被配置为管理主机设备句柄表格,被配置为管理发送到控制器中枢115和从控制器中枢115发送的消息。主机消息处理器404包括分配管理器406、解除分配管理器408和事务管理器410。
分配管理器406被配置为处理特殊用途的设备句柄标识符(DHI)分配消息。设备分配消息可以指示出,例如,要分配的DHI(例如,n比特数字),总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),以及受信任比特值。在接收到设备分配消息后,分配管理器406通过添加或编辑设备句柄标识符表格600中的条目来分配设备句柄标识符。分配管理器406存储消息中包括的上下文信息(例如BDF标识符、PASID、受信任比特,等等)。应当明白,除了本文描述的具体上下文以外,还可以提供额外的上下文,例如与本文没有明确提到的协议相关联的上下文。在一些实施例中,分配管理器406可以验证BDF在控制器中枢115的次级和从属总线编号内。如果主机设备句柄表格600已在连接的设备之间被分区,则分配管理器406也可以验证DHI在与BDF相关联的DHI范围内。
解除分配管理器408被配置为处理特殊用途的DHI解除分配消息。解除分配消息指示出应当被解除分配的DHI。在接收到解除分配消息后,解除分配管理器408对DHI解除分配消息中包括的DHI进行解除分配。解除分配管理器408可以例如从设备句柄表格600中删除条目或者将与DHI相关联的条目标记为无效。在一些实施例中,设备解除分配消息可以指示出所有的设备句柄都应当被解除分配。这样的消息可以例如在热插拔事件之后由软件发起。响应于这样的消息,解除分配管理器408可以解除分配与一个或多个设备125相关联的所有设备句柄。在说明性实施例中,当设备负责自主管理指派给它的DHI时,分配和解除分配消息在诸如PCIe或CXL之类的链路119上从设备125被发送。在一些实施例中,软件可以使用MMIO寄存器写入来使用解除分配和/或分配消息以管理设备句柄表格。用于发起这些消息的接口可能是依实现方式而定的。在一个实现方式中,控制器中枢115可以使用定向I/O虚拟化技术(VT-d)体系结构,以使用类似的或者用于发送设备转化后备缓冲器(device translation lookaside buffer,DevTLB)地址转化无效消息的机制,来向设备125发送这些解除分配请求。
事务管理器410被配置为处理连接设备125和控制器中枢115的链路119上的普通事务消息。在说明性实施例中,从设备125接收到的事务消息包括DHI,并且要发送到设备125的消息包括DHI。在接收到消息后,事务管理器410访问设备句柄表格中与消息中的DHI或域标识符相对应的条目。如果该条目无效或者不在表格中,则消息的处理被中止,并且可返回差错。
对于从设备125接收的消息,事务管理器410利用从与消息中的DHI相对应的主机设备句柄表格的有效条目取回的域标识符字段来处理事务消息。在一个实施例中,事务管理器410可以将事务消息发送到目的地,例如IOMMU 116、存储器110、处理器105,等等。额外地或者替换地,事务管理器410可以使用域标识符来确定如何处理消息。例如,在一个实施例中,使用安全ATS的访问的安全性验证将使用这个BDF标识符和PASID来确定访问是否被许可。对于要发送到设备125的消息,事务管理器410可以利用来自设备句柄表格的DHI来将消息发送到设备125。然后,设备125可以使用DHI来识别域并且相应地处理消息。在一些实施例中,设备句柄表格600中的条目可以指示出是否支持特定的功能或特征。例如,对于安全ATS,如果PASID字段无效,则事务管理器410可以使用可由 VT-d定义的请求者IDPASID(RID_PASID)来代替PASID,以执行安全ATS检查。作为另一个示例,受信任字段可被用于将消息视为由 VT-d定义的受信任事务,并且如果受信任字段对某个域无效,则与该域相关联的所有请求将被视为不受信任。
现在参考图5,在说明性实施例中,负载转移设备125在操作期间建立环境500。说明性环境500包括设备句柄表格管理器502和设备消息处理器504。环境500的各种模块可以体现为硬件、软件、固件或者其组合。例如,环境500的各种模块、逻辑和其他组件可形成设备125或者计算系统100的其他硬件组件的一部分或者以其他方式由其建立。因此,在一些实施例中,环境500的一个或多个模块可以体现为电路或者电气设备的集合(例如,设备句柄表格管理器电路502、设备消息处理器电路504,等等)。应当明白,在这样的实施例中,一个或多个电路(例如,设备句柄表格管理器电路502、设备消息处理器电路504,等等)可以形成设备125和/或计算系统100的其他组件的一部分。此外,在一些实施例中,一个或多个说明性模块可以形成另一模块的一部分,和/或一个或多个说明性模块可以彼此独立。另外,在一些实施例中,环境500的一个或多个模块可以体现为虚拟化硬件组件或者仿真的体系结构。应当明白,环境500的一个或多个模块的一些功能可要求硬件实现,在此情况下,实现这种功能的模块的实施例可至少部分体现为硬件。
可以实现为硬件、固件、软件和/或其任何适当组合的设备句柄表格管理器502,被配置为管理设备125上的设备句柄表格600,例如图6中所示的表格600。设备表格管理器502可以对表格600中的条目进行添加、移除、无效,等等。在一些实施例中,设备表格管理器502可以将表格600的部分或全部存储在SRAM上,或者可以将表格600的部分或全部存储在私有DRAM中,并且使用缓存来保持其最近使用的条目。在一些实施例中,设备句柄表格管理器502可以接收清除或重置表格的指令。例如,在一些实施例中,在设备125的热交换或热插拔时,与设备125相关联的表格600可以被重置或者被完全解除分配。
可以实现为硬件、固件、软件和/或其任何适当组合的设备消息处理器504,被配置为控制设备125上的设备句柄表格分配和解除分配,并且当在链路119上发送普通事务时使用设备句柄表格信息。设备消息处理器504包括分配管理器506、解除分配管理器508和事务管理器510。
分配管理器506管理设备125上的设备句柄分配。当需要分配DHI时,分配管理器与设备句柄管理器502进行通信以分配设备句柄表格600中的条目。在一个实施例中,DHI的分配可以由软件通过写入到设备上的MMIO寄存器来执行。在这种情况下,软件也将负责向主机分配管理器406发送DHI分配消息。在另一个实施例中,设备125在指派给设备的那些DHI中自主选择要分配的DHI,其中使用了设备特定的选择方法,使用任何适当的算法来选择DHI,例如先入先出算法、最近最少使用算法、最不经常使用算法,等等。在这种情况下,只有在对本地设备句柄表格600的更新完成之后,分配管理器506才负责向链路119上的计算系统100发送DHI分配消息。如果没有空闲的DHI,则预期软件或设备将首先使用解除分配管理器508来解除分配现有的DHI。在一个实施例中,DHI分配发生在软件创建新的设备上下文时。当软件创建设备上下文时,它需要提供必要的信息来使用设备特定的机制识别设备上下文域,例如BDF和/或PASID信息。
解除分配管理器508管理设备125上的设备句柄解除分配。当DHI需要被解除分配时,解除分配管理器与设备句柄管理器502进行通信以解除分配设备句柄表格600中的条目。在一个实施例中,DHI的解除分配可以由软件通过写入到设备上的MMIO寄存器来执行。在这种情况下,软件也将负责向主机解除分配管理器408发送DHI解除分配消息。在另一个实施例中,设备125使用设备特定的选择方法来自主地选择要解除分配的DHI。在这种情况下,只有在对本地设备句柄表格600的更新完成之后,解除分配管理器508才负责向链路119上的计算系统100发送DHI解除分配消息。在一个实施例中,DHI解除分配发生在设备上下文被软件终止时。
在说明性实施例中,解除分配管理器508必须确保在解除分配DHI之前,所有使用特定DHI的先前请求都已完成。如果有必要,解除分配管理器508可以等待,直到与DHI相关联的所有先前请求都已完成为止,然后才解除分配DHI。在一些实施例中,解除分配管理器508可以基于DHI没有任何未完成的请求来选择要解除分配的DHI。
在一些实施例中,设备句柄分配消息自动地从先前的域中解除分配DHI,并且将其重新分配到设备125和/或控制器中枢115上的新域。在这样的实施例中,可能不需要明确的设备句柄解除分配消息。在一些实施例中,解除分配管理器508可以接收用于解除分配一个或多个或者所有设备句柄的消息,例如来自在计算系统100的另一个组件上操作的软件。在这种情况下,解除分配管理器508可以相应地更新设备句柄表格。
事务管理器510被配置为处理设备125上的普通事务。对于从设备125发送的消息,事务管理器510可以访问设备句柄表格以识别与消息相关联的域的设备句柄标识符(DHI)。然后,事务管理器510发送带有DHI的消息。应当明白,事务管理器510不需要包括域的标识符,它将比DHI更长(即,更多比特)。
对于在设备125处从控制器中枢115接收到的带有DHI的消息,事务管理器510基于DHI访问设备句柄表格中的条目。在说明性实施例中,事务管理器510在设备句柄表格中搜索与DHI相匹配的条目。事务管理器510访问对应于DHI的域标识符。然后,事务管理器510基于域标识符来处理消息。例如,事务管理器510可以将消息发送到特定的虚拟功能、队列对、专用工作队列、共享工作队列、工作命令,等等。在说明性实施例中,域标识符可以是BDF标识符和/或PASID。在一些实施例中,如果事务管理器510没有基于DHI在设备句柄表格中找到条目,则事务管理器510可以发送差错消息。
现在参考图6,在一个实施例中,设备句柄表格600包括关于不同设备句柄标识符(DHI)的若干条目。每个说明性条目包括DHI、PASID、BDF标识符和受信任比特。每个条目上的有效比特指示出在该条目中是否分配了有效的DHI。额外地或者替换地,表格600中的列可以指示出是否支持特定的特征。
应当明白,设备句柄表格600在控制器中枢115上的组织方式可能与设备125不同。例如,控制器中枢115上的表格600的索引方式可能与设备125不同。在另一个示例中,设备125可包括与DHI相关联的队列对、专用工作队列、共享工作队列、工作命令等等的指示。设备句柄表格600在控制器中枢115和设备125上可能具有不同的大小。例如,如果控制器中枢115上的设备句柄表格600在连接的设备之间被分区,则每个连接的设备125只需要存储指派给它的DHI的子集。在一个实施例中,软件通过将DHI的连续范围指派给每个设备125来对DHI进行分区。
现在参考图7,在使用中,计算系统100可以执行用于使用设备句柄标识符(DHI)来传送数据的方法700,该方法可以由硬件、软件、固件或者其任何组合来执行。在说明性实施例中,方法700的部分或全部可由控制器中枢115执行。在一些实施例中,控制器中枢115可以是根复合体,并且方法700的部分或全部可以由根端口117执行。方法700在块702中开始,在该块中控制器中枢115与一个或多个连接的设备125协商链路能力。在说明性实施例中,控制器中枢115在首次建立链路时协商链路能力。例如,控制器中枢115可以发送和/或接收在特定位置具有使能比特的消息,该使能比特指示出控制器中枢115和/或连接的设备125支持使用DHI。在说明性实施例中,控制器中枢115在块704中通知设备125允许的DHI值范围。例如,如果DHI被以N比特的形式存储在控制器中枢中,那么DHI值可以从0到2N-1。如果设备句柄表格600在多个设备之间被分区,则控制器中枢通过提供从0到2N-1的范围中的下限和上限值来通知设备115指派给它的DHI的范围。
在块706中,控制器中枢115从设备125接收消息。该消息可以是诸如CXL.cache之类的一致协议或者诸如CXL输入/输出(CXL.io)之类的非一致协议的一部分。在一些实施例中,该消息可被称为flit。控制器中枢115可以在块708中接收设备句柄分配(DHI_ALLOC)消息。控制器中枢115可以在块710中接收设备句柄解除分配(DHI_DEALLOC)消息。在块712中,控制器中枢115可以接收带有DHI的事务消息(例如,存储器读取或写入、缓存一致性消息,等等)。该消息可以是例如与队列对、专用工作队列、共享工作队列、工作命令等等相关联的消息。在说明性实施例中,可以从设备125接收块706中的部分或全部消息。应当明白,在一些实施例中,设备125不执行DHI的分配和解除分配,而是控制器中枢115从软件接收设备句柄分配和设备句柄解除分配消息,例如,通过写入到存储器映射I/O(memory mapped I/O,MMIO)寄存器。在这种情况下,控制器中枢115以就如同它们来自设备一样的方式处理这些消息。
在块714中,如果该消息是设备分配消息,则方法700跳转到图8中的块716。在块716中,控制器中枢115基于设备分配消息将DHI分配给设备125。设备分配消息可以指示出,例如,要分配的DHI(例如,n比特数字),总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),以及受信任比特值。在一些实施例中,控制器中枢115可以验证BDF在控制器中枢115的次级和从属编号内。控制器中枢115还可以验证DHI在与BDF相关联的DHI范围内。控制器中枢115在块718中更新设备句柄表格(例如,设备句柄表格600)以添加条目(或者将DHI的条目标记为有效)。控制器中枢115在块720中存储由设备125提供的上下文信息(例如,BDF标识符、PASID、受信任比特,等等)。应当明白,除了本文描述的具体上下文以外,还可以提供额外的上下文,例如与本文没有明确提到的协议相关联的上下文。在控制器中枢115存储上下文信息之后,方法700循环回到图7中的块706,以等待另一消息。
返回参考块714,如果接收到的消息不是设备句柄分配消息,则方法700前进到块722。在块722中,如果该消息是设备解除分配消息,则方法700跳转到图8中的块724。在块724中,控制器中枢115解除分配设备解除分配消息中的DHI。控制器中枢115可以例如从设备句柄表格600中删除条目或者将与DHI相关联的条目标记为无效。在一些实施例中,设备解除分配消息可以指示出所有的设备句柄都应当被解除分配。这样的消息可以例如在热插拔事件之后由软件发起。响应于这样的消息,控制器中枢115可以在块726中解除分配所有的设备句柄。更一般而言,软件可以发送消息以解除分配一个、一些或者所有设备句柄。然后,方法700循环回到图7中的块706,以等待另一个消息。
返回参考块722,如果接收到的消息不是设备句柄解除分配消息,则方法700前进到块728。在块728中,控制器中枢115访问设备125的设备句柄表格中的对应于消息中的DHI的条目。作为访问该条目的一部分,控制器中枢115在块730中访问对应于DHI的一个或多个域标识符。该域标识符可以识别虚拟功能、虚拟机、进程,等等。在说明性实施例中,域标识符体现为BDF标识符和/或PASID。
在块732中,如果DHI的条目无效或者不在表格中,则方法700前进到块734,在该块中,对消息的处理被中止,并且差错可被返回到设备125。如果DHI的条目是有效的,则方法700前进到块736,在该块中,控制器中枢115利用域标识符来处理事务消息。在一个实施例中,控制器中枢115可以在块738中将事务消息发送到目的地,例如IOMMU 116、存储器110、处理器105,等等。额外地或者替换地,控制器中枢115可以使用域标识符来确定如何处理消息。例如,在一个实施例中,使用安全ATS的访问的安全性验证将使用这个BDF标识符和PASID来确定访问是否被许可。
现在参考图10,在使用中,计算系统100可以执行用于使用设备句柄标识符(DHI)来传送数据的方法1000,该方法可以由硬件、软件、固件或者其任何组合来执行。在说明性实施例中,方法1000的部分或全部可由控制器中枢115执行。在一些实施例中,控制器中枢115可以是根复合体,并且方法1000的部分或全部可以由根端口117执行。方法1000在块1002中开始,在该块中控制器中枢115接收带有域标识符的设备125的消息。在说明性实施例中,该域标识符是BDF标识符和/或PASID。额外地或者替换地,在一些实施例中,域标识符可以是识别虚拟功能、虚拟机、进程等等的任何标识符。该消息可以是诸如CXL.cache之类的一致协议或者诸如CXL输入/输出(CXL.io)之类的非一致协议的一部分。在一些实施例中,该消息可被称为flit。该消息可以是例如存储器读取或写入、缓存一致性消息,等等。在一些实施例中,控制器中枢115可以创建要被发送到设备125的消息,并且识别与该消息相关联的域标识符。
在块1004中,控制器中枢115基于域标识符来访问设备句柄表格中的条目。在说明性实施例中,控制器中枢115在设备句柄表格中搜索与域标识符相匹配的条目,例如与BDF和/或PASID相匹配的条目。在块1006中,控制器中枢115访问与该域相对应的DHI。在一些实施例中,如果控制器中枢115基于域标识符没有在设备句柄表格中找到条目,则控制器中枢115可以发送差错消息和/或使用域标识符直接向设备125发送消息。
在块1008中,控制器中枢115利用来自设备句柄表格的DHI向设备125发送消息。然后,设备125可以使用DHI来识别域并且相应地处理消息。
现在参考图11,在使用中,计算系统100可以执行用于使用DHI来传送数据的方法1100,该方法可以由硬件、软件、固件或者其任何组合来执行。在说明性实施例中,方法1100的部分或全部可由设备125执行。方法1100在块1102中开始,在该块中设备125与控制器中枢115协商链路能力。在说明性实施例中,设备125在首次建立链路时协商链路能力。例如,设备115可以发送和/或接收在特定位置具有使能比特的消息,该使能比特指示出控制器中枢115和/或连接的设备125支持使用DHI。在说明性实施例中,控制器中枢115通知设备125允许的DHI值范围。例如,如果DHI被以N比特的形式存储在控制器中枢中,那么指派给设备125的DHI范围可以从0到2N-1。在一些实施例中,设备125实现了一种新的能力,以支持使用例如指定厂商特定扩展能力(Designated Vendor-Specific Extended Capability,DVSEC)来使用DHI。
在块1104中,设备125确定要发送的消息。在一个实施例中,设备125上的虚拟功能或者其他功能创建要发送的消息,并且将其发送给监督者。作为确定要发送的消息的一部分,设备125确定与该消息相关联的域。例如,设备125可以基于发源了该消息的设备上下文来确定域标识符,例如与该消息相关联的BDF标识符(或者源ID)和/或PASID。在一些实施例中,设备125可以确定设备上下文作为域标识符的一部分,例如队列对、专用工作队列、共享工作队列、工作命令,等等。该消息可以是诸如CXL.cache之类的一致协议或者诸如CXL输入/输出(CXL.io)之类的非一致协议的一部分。在一些实施例中,该消息可被称为flit。该消息可以是例如存储器读取或写入、缓存一致性消息,等等。
在块1106中,设备125确定是否为与该消息相关联的域分配了DHI。设备125可以访问设备句柄表格(例如通过搜索设备句柄表格中的域标识符),并且如果有与该域相关联的条目,则访问DHI。
在块1108中,如果为域分配了DHI,则方法1100跳转到块1118,在该块中设备125发送在消息的头部中带有DHI的消息。设备125可以将该消息发送到控制器中枢115,可能通过一个或多个交换机120。
在块1108中,如果没有为域分配DHI,则方法1100前进到块1110,在该块中设备125确定在域句柄表格中是否有未分配的条目。如果有,则方法1100跳转到块1120以发送DHI分配消息。如果没有,则方法1100前进到块1114以确定要解除分配的DHI。
在块1114中,设备125确定要解除分配的DHI。设备125可以使用任何适当的方法来确定要解除分配的DHI。在一些实施例中,与DHI相关联的设备上下文已被终止,但关联的DHI尚未被解除分配,因为设备125可以懒惰地解除分配DHI,因为直到DHI被重新分配为止,不会有带有该DHI的新请求。在这样的实施例中,设备125可以解除分配这样的DHI:对于该DHI,关联的设备上下文已被终止。更一般而言,设备125可以使用任何适当的算法来选择DHI,例如先入先出算法、最近最少使用算法、最不经常使用算法,等等。
在说明性实施例中,设备125必须确保在解除分配DHI之前,所有使用该特定DHI的先前请求都已完成。如果有必要,设备125可以等待,直到与DHI相关联的所有先前请求都已完成为止,然后才解除分配DHI。在一些实施例中,设备125可以基于DHI没有任何未完成的请求来选择要解除分配的DHI。
在块1116中,设备125向控制器中枢115发送DHI解除分配消息,识别出要被解除分配的DHI。设备125还将用指出DHI已被解除分配的指示来更新本地设备句柄表格。在一些实施例中,设备句柄分配消息自动地从先前的域中解除分配DHI,并且将其重新分配到设备125和/或控制器中枢115上的新域。在这样的实施例中,可能不需要明确的设备句柄解除分配消息。
在块1118中,设备125向控制器中枢115发送设备句柄分配消息。该设备句柄分配消息可包括域标识符和要分配的DHI。消息中的域标识符包括上下文信息(例如,BDF标识符、PASID、受信任比特,等等)。设备125还在发送DHI分配消息时更新本地设备句柄分配表格。
在块1120中,设备125发送带有DHI的消息。应当明白,设备125不需要包括域的标识符,它将比DHI更长(即,更多比特)。
现在参考图12,在使用中,计算系统100可以执行用于使用DHI来传送数据的方法1000,该方法可以由硬件、软件、固件或者其任何组合来执行。在说明性实施例中,方法1200的部分或全部可由设备125执行。方法1200在块1202中开始,在该块中设备125从主机控制器中枢115接收带有DHI的消息。该消息可以是诸如CXL.cache之类的一致协议或者诸如CXL输入/输出(CXL.io)之类的非一致协议的一部分。在一些实施例中,该消息可被称为flit。该消息可以是例如存储器读取或写入、缓存一致性消息,等等。
在块1204中,设备125基于DHI来访问设备句柄表格中的条目。在说明性实施例中,设备125在设备句柄表格中搜索与DHI相匹配的条目。在块1206中,设备125访问对应于DHI的域标识符。在说明性实施例中,该域标识符可以是BDF标识符和/或PASID。在一些实施例中,如果设备125基于域标识符没有在设备句柄表格中找到条目,则设备125可以发送差错消息。
在块1208中,设备125基于域标识符处理该消息。例如,设备125可以将该消息发送到特定的虚拟函数、队列对、专用工作队列、共享工作队列、工作命令,等等。
参考图13,描绘了包括多核心处理器的计算系统的框图的实施例。处理器1300包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或者用于执行代码的其他设备。处理器1300在一个实施例中包括至少两个核心:核心1301和1302,它们可包括非对称核心或者对称核心(图示的实施例)。然而,处理器1300可包括任何数目的可以是对称或非对称的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够为处理器保持状态(例如执行状态或体系结构状态)的任何其他元件。换言之,处理元件在一个实施例中指的是能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。物理处理器(或者处理器插座)通常指的是可能包括任何数目的其他处理元件(例如核心或硬件线程)的集成电路。
核心经常指能够维持独立体系结构状态的、位于集成电路上的逻辑,其中每个被独立维持的体系结构状态与至少一些专用执行资源相关联。与核心形成对比,硬件线程通常指能够维持独立体系结构状态的、位于集成电路上的任何逻辑,其中被独立维持的体系结构状态共享对执行资源的访问。可以看出,当某些资源被共享并且其他资源被专用于体系结构状态时,硬件线程和核心的命名法之间的界线会重叠。然而经常,核心和硬件线程被操作系统看作个体逻辑处理器,其中操作系统能够单独调度每个逻辑处理器上的操作。
如图13所示,物理处理器1300包括两个核心——核心1301和1302。这里,核心1301和1302被认为是对称核心,即,具有相同的配置、功能单元和/或逻辑的核心。在另一实施例中,核心1301包括无序处理器核心,而核心1302包括有序处理器核心。然而,核心1301和1302可以是单独从任何类型的核心中选择的,例如,原生核心、受软件管理的核心、被适配为执行原生指令集体系结构(Instruction Set Architecture,ISA)的核心、被适配为执行经转化的指令集体系结构(ISA)的核心、共同设计的核心、或者其他已知的核心。在异质核心环境中(即,非对称核心),可以利用某种形式的转化,例如二进制转化,来在一个或两个核心上调度或执行代码。再进一步讨论,下文更详细描述在核心1301中图示的功能单元,因为核心1302中的单元在描绘的实施例中以类似的方式进行操作。
如图所示,核心1301包括两个硬件线程1301a和1301b,它们也可被称为硬件线程槽1301a和1301b。因此,软件实体(例如操作系统)在一个实施例中可能将处理器1300视为四个分开的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上文提到的,第一线程与体系结构状态寄存器1301a相关联,第二线程与体系结构状态寄存器1301b相关联,第三线程可以与体系结构状态寄存器1302a相关联,并且第四线程可以与体系结构状态寄存器1302b相关联。这里,体系结构状态寄存器(1301a、1301b、1302a和1302b)的每一者可被称为处理元件、线程槽或者线程单元,如上所述。如图所示,体系结构状态寄存器1301a被复制在体系结构状态寄存器1301b中,因此能够为逻辑处理器1301a和逻辑处理器1301b存储个体的体系结构状态/上下文。在核心1301中,也可针对线程1301a和1301b复制其他更小的资源,例如分配器和重命名器块1330中的指令指针和重命名逻辑。通过分区可共享一些资源,例如重排序/引退单元1335中的重排序缓冲器、ILTB 1320、加载/存储缓冲器、以及队列。其他资源,例如通用内部寄存器、(一个或多个)页表基址寄存器、低级别数据缓存和数据TLB 1315、(一个或多个)执行单元1340、以及无序单元1335的一些部分,可能被完全共享。
处理器1300经常包括其他资源,这些资源可被完全共享、通过分区被共享、或者被处理元件专用或者专用于处理元件。在图13中,图示了具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意,处理器可包括或者省略这些功能单元中的任何一者,以及包括没有描绘的任何其他已知的功能单元、逻辑或者固件。如图所示,核心1301包括简化的、代表性无序(out-of-order,OOO)处理器核心。但在不同的实施例中可利用有序处理器。OOO核心包括分支目标缓冲器1320来预测要执行/采取的分支,以及指令转化缓冲器(instruction-translation buffer,I-TLB)1320来为指令存储地址转化条目。
核心1301还包括与取得单元1320耦合的解码模块1325以对取得的元素进行解码。取得逻辑在一个实施例中包括分别与线程槽1301a、1301b相关联的个体定序器。通常核心1301与第一ISA相关联,该第一ISA定义/指定在处理器1300上可执行的指令。经常,作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),该部分引用/指定要执行的指令或者操作。解码逻辑1325包括电路,该电路从其操作码识别这些指令并且在管线中传递解码的指令来按第一ISA定义的那样处理。例如,如下文更详细论述的,解码器1325在一个实施例中包括被设计或适配为识别诸如事务性指令之类的特定指令的逻辑。作为解码器1325进行的识别的结果,体系结构或核心1301采取特定的预定动作来执行与适当指令相关联的任务。注意以下这点是重要的:本文描述的任何任务、块、操作和方法可响应于单个或多个指令而被执行;这些指令中的一些可以是新的或者旧的指令。注意,解码器1326在一个实施例中识别相同的ISA(或者其子集)。或者,在异质核心环境中,解码器1326识别第二ISA(要么是第一ISA的子集,要么是不同的ISA)。
在一个示例中,分配器和重命名器块1330包括分配器来预留资源,例如预留寄存器文件来存储指令处理结果。然而,线程1301a和1301b可能能够进行无序执行,其中分配器和重命名器块1330也预留其他资源,例如预留重排序缓冲器来跟踪指令结果。单元1330还可包括寄存器重命名器来将程序/指令参考寄存器重命名到处理器1300内部的其他寄存器。重排序/引退单元1335包括组件(例如,上文提及的重排序缓冲器、加载缓冲器和存储缓冲器),来支持对被无序执行的指令进行的无序执行和之后的有序引退。
调度器和(一个或多个)执行单元块1340在一个实施例中包括调度器单元来调度执行单元上的指令/操作。例如,在执行单元的端口上调度浮点指令,其中该执行单元具有可用的浮点执行单元。还包括与执行单元相关联的寄存器文件来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元、和其他已知的执行单元。
更低级别数据缓存和数据转化缓冲器(data translation buffer,D-TLB)1350耦合到(一个或多个)执行单元1340。数据缓存还用于存储最近使用/操作的元素(例如数据操作对象),这些元素可能被保持在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转化。作为一个具体示例,处理器可包括页表结构来将物理存储器分解成多个虚拟页。
这里,核心1301和1302共享对更高级别或者更远的缓存的访问,例如与片上接口1310相关联的第二级缓存。注意,更高级别或者更远指的是缓存级别增大或者变得更远离(一个或多个)执行单元。在一个实施例中,更高级别缓存是最后一级数据缓存——处理器1300上的存储器层次体系中的最后缓存——例如第二级或第三级数据缓存。然而,更高级别缓存不限于此,因为其可以与指令缓存相关联或者包括指令缓存。取而代之,踪迹缓存——一类指令缓存——可被耦合在解码器1325之后,来存储最近解码的踪迹。这里,指令可能是指宏指令(即,解码器识别的一般指令),它可以解码成若干个微指令(微操作)。
在所描绘的配置中,处理器1300还包括片上接口模块1310。从历史上看,下文更详细描述的存储器控制器被包括在处理器1300外部的计算系统中。在这种场景中,片上接口1310将与处理器1300外部的设备通信,例如系统存储器1375、芯片组(通常包括连接到存储器1375的存储器控制器中枢和连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥、或者其他集成电路。并且在这种场景中,总线1305可包括任何已知的互连,例如多点分支总线、点到点互连、串行互连、并行总线、一致(例如,缓存一致)总线、分层协议体系结构、差动总线、以及GTL总线。
存储器1375可专用于处理器1300或者是与系统中的其他设备共享的。存储器1375的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)、以及其他已知的存储设备。注意,设备1380可包括图形加速器、与存储器控制器中枢耦合的处理器或卡、与I/O控制器中枢耦合的数据存储装置、无线收发器、闪存设备、音频控制器、网络控制器、或者其他已知设备。
然而,最近,随着更多的逻辑和器件被集成在单个管芯上,例如SOC,这些器件中的每一个都可被包含在处理器1300上。例如,在一个实施例中,存储器控制器中枢与处理器1300在同一封装和/或管芯上。这里,核心的一部分(核心上部分)1310包括一个或多个控制器,用于与其他设备例如存储器1375或图形设备1380对接。包括互连和用于与这种设备对接的控制器的配置通常被称为核心上(或者非核心配置)。作为示例,片上接口1310包括用于片上通信的环形互连和用于片外通信的高速串行点到点链路1305。然而,在SOC环境中,甚至更多的设备,例如网络接口、协处理器、存储器1375、图形处理器1380以及任何其他已知的计算机设备/接口,可被集成在单个管芯或集成电路上,以提供具有高功能和低功率消耗的小外形参数。
在一个实施例中,处理器1300能够执行编译器、优化和/或转化器代码1377,以编译、转化和/或优化应用代码1376,以支持本文描述的装置和方法或者与之对接。编译器通常包括将源文本/代码转化成目标文本/代码的程序或者程序集。通常,用编译器对程序/应用代码的编译是在多个阶段和道次中进行的,以将高级别编程语言代码变换为低级别机器或汇编语言代码。然而,单道次编译器仍可被用于简单的编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码变换、以及代码优化。
较大的编译器通常包括多个阶段,但大多数情况下,这些阶段被包括在两个一般阶段内:(1)前端,即,一般在这里可能发生句法处理、语义处理和一些变换/优化,以及(2)后端,即,一般在这里发生分析、变换、优化和代码生成。一些编译器指的是中间部分,这说明了编译器的前端和后端之间的分界线的模糊。因此,对编译器的插入、关联、生成或其他操作的引用可以发生在上述任何一个阶段或道次,以及编译器的任何其他已知阶段或道次中。作为说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数,等等,例如在编译的前端阶段中插入调用/操作,然后在变换阶段期间将调用/操作的变换为较低级别代码。注意,在动态编译期间,编译器代码或者动态优化代码可以插入这种操作/调用,以及优化代码以便在运行时期间执行。作为具体的说明性示例,二进制代码(已经编译的代码)可以在运行时期间被动态优化。这里,程序代码可包括动态优化代码、二进制代码、或者其组合。
与编译器类似,转化器,例如二进制转化器,静态或动态地转化代码,以优化和/或转化代码。因此,提到执行代码、应用代码、程序代码或者其他软件环境可以指:(1)动态或静态地执行(一个或多个)编译器程序、优化代码优化器或者转化器,以编译程序代码、维护软件结构、执行其他操作、优化代码、或者转化代码;(2)执行包括操作/调用的主程序代码,例如已被优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码,例如库,以维护软件结构、执行其他软件相关操作、或者优化代码;或者(4)这些的组合。
现在参考图14,其中示出了根据本公开的实施例的另一系统1400的框图。如图14所示,多处理器系统1400是点到点互连系统,并且包括经由点到点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一者可以是处理器的某个版本。在一个实施例中,1452和1454是串行的点到点一致互连架构的一部分,例如高性能体系结构。因此,本公开的各方面可被实现在QPI体系结构内。
虽然示为只具有两个处理器1470、1480,但要理解,本公开的范围不限于此。在其他实施例中,一个或多个额外的处理器可存在于给定的处理器中。
处理器1470和1480被示为分别包括集成存储器控制器单元1472和1482。处理器1470还包括点到点(P-P)接口1476和1478作为其总线控制器单元的一部分;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可利用P-P接口电路1478、1488经由点到点(P-P)接口1450来交换信息。如图14中所示,IMC 1472和1482将处理器耦合到各自的存储器,即存储器1432和存储器1434,这些存储器可以是在本地附接到各自处理器的主存储器的一部分。
处理器1470、1480各自利用点到点接口电路1476、1494、1486、1498经由个体P-P接口1452、1454与芯片组1490交换信息。芯片组1490也沿着高性能图形互连1439经由接口电路1492与高性能图形电路1438交换信息。
共享缓存(未示出)可被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片组1490可经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如PCI快速总线或另一种第三代I/O互连总线之类的总线,虽然本公开的范围不限于此。
如图14中所示,各种I/O设备1414耦合到第一总线1416,以及将第一总线1416耦合到第二总线1420的总线桥1418。在一个实施例中,第二总线1420包括低引脚数(low pincount,LPC)总线。各种设备耦合到第二总线1420,包括例如键盘/鼠标1422、通信设备1427和存储单元1428,例如盘驱动器或者其他大容量存储设备,其中该存储单元1428在一个实施例中通常包括指令/代码和数据1430。另外,音频I/O 1424被示为耦合到第二总线1420。注意,其他体系结构是可能的,其中,所包括的组件和互连体系结构有所变化。例如,取代图14的点到点体系结构,系统可实现多点分支总线或者其他这种体系结构。
虽然已针对有限数目的实施例描述了本公开的各方面,但本领域技术人员将会明白从这些实施例的许多修改和变化。希望所附权利要求覆盖落在本公开的真实精神和范围内的所有这种修改和变化。
设计可经过各种阶段,从创建到仿真再到制造。表示设计的数据可通过若干种方式来表示该设计。首先,正如在仿真中有用的,可利用硬件描述语言或者另外的功能性描述语言来表示硬件。此外,在设计过程的一些阶段可产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示各种设备在硬件模型中的物理放置的数据的级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是为用于生产集成电路的掩模指定各种特征在不同掩模层上的存在与否的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者诸如盘之类的磁存储装置或光存储装置可以是机器可读介质,用来存储经由光波或电波传输的信息,该光波或电波被调制或以其他方式生成来传输这种信息。当传输指示或携带代码或设计的电载波时,就执行电信号的拷贝、缓冲或重传而言,做出新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时地存储物品,例如被编码到载波中的信息,其体现本公开的实施例的技术。
本文使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与非暂态介质相关联来存储适合于被微控制器执行的代码。因此,在一个实施例中,提及模块指的是硬件,其被特别配置为识别和/或执行要被保存在非暂态介质上的代码。此外,在另一实施例中,对模块的使用指的是包括代码的非暂态介质,该代码特别适合于被微控制器执行来执行预定的操作。正如可以推断出的,在另外一个实施例中,术语模块(在此示例中)可以指微控制器和非暂态介质的组合。经常,被图示为分开的模块边界通常是变化的并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或者其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,对术语逻辑的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑器件。
在一个实施例中对短语“被配置为”的使用指的是安排、装配、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元件来执行指定或确定的任务。在此示例中,未在操作的装置或其元件仍“被配置为”执行指定的任务,如果它被设计、耦合和/或互连来执行所述指定任务的话。作为纯说明性示例,逻辑门在操作期间可以提供0或1。但“被配置为”向时钟提供使能信号的逻辑门并不包括可提供1或0的每一个可能的逻辑门。反而,逻辑门是以在操作期间1或0输出会使能时钟的某种方式耦合的那种。再次注意,对术语“被配置为”的使用并不要求操作,而是聚焦于装置、硬件和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计为当该装置、硬件和/或元件在操作时,执行特定的任务。
此外,在一个实施例中对短语“用来”、“能够”和/或“可操作来”的使用指的是以使能以指定的方式使用装置、逻辑、硬件和/或元件的方式设计的某种装置、逻辑、硬件和/或元件。注意,与上文一样,在一个实施例中对“用来”、“能够”或者“可操作来”的使用指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件未在操作,但被以使得能够以指定方式使用装置的方式来设计。
本文使用的值包括数字、状态、逻辑状态或者二元逻辑状态的任何已知表示。经常,对逻辑电平、逻辑值或论理值的使用也被称为1和0,这简单地就是表示二元逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,存储单元,例如晶体管或闪存单元,可能够保存单个逻辑值或多个逻辑值。然而,使用了计算机系统中的值的其他表示。例如,十进制数字十也可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
此外,状态可由值或值的部分来表示。作为示例,第一值,例如逻辑一,可表示默认或初始状态,而第二值,例如逻辑零,可表示非默认状态。此外,术语重置和设置在一个实施例中分别指的是默认的和更新后的值或状态。例如,默认值可能包括高逻辑值,即重置,而更新后的值可能包括低逻辑值,即设置。注意,值的任何组合可被利用来表示任何数目的状态。
上文记载的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问或者计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括以机器(例如计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂态机器可访问介质包括随机访问存储器(random-access memory,RAM),例如静态RAM(static RAM,SRAM)或动态RAM(dynamic RAM,DRAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,它们要与可从其接收信息的非暂态介质相区分。
用于将逻辑编程为执行本公开的实施例的指令可被存储在系统中的存储器内,例如DRAM、缓存、闪存或者其他存储装置。此外,可经由网络或借由其他计算机可读介质来分发指令。从而,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于是软盘,光盘,致密盘只读存储器(Compact Disc,Read-OnlyMemory,CD-ROM),以及磁光盘,只读存储器(Read-Only Memory,ROM),随机访问存储器(Random Access Memory,RAM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),磁卡或光卡,闪存,或者在经由电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号,等等)通过互联网传输信息时使用的有形机器可读存储装置。因此,计算机可读介质包括适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有型机器可读介质。
示例
下面提供本文公开的技术的说明性示例。这些技术的实施例可包括下面描述的示例中的任何一个或多个,以及其任何组合。
示例1包括一种控制器中枢,其包括主机消息处理器电路,用于从通过链路连接到所述控制器中枢的设备接收消息,其中,所述消息包括设备句柄标识符;基于所述消息的设备句柄标识符来访问设备句柄表格中的条目,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
示例2包括如示例1所述的主题,并且其中,所述域标识符包括:总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例3包括如示例1和2中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例4包括如示例1-3中的任一者所述的主题,并且其中,所述主机消息处理器电路还用于从连接到所述控制器中枢的设备接收设备句柄分配消息,其中,所述设备句柄分配消息包括设备句柄标识符和域标识符;并且响应于所述设备句柄分配消息,将所述设备句柄标识符和所述域标识符存储在所述设备句柄表格中。
示例5包括如示例1-4中的任一者所述的主题,并且其中,所述主机消息处理器电路还用于从连接到所述控制器中枢的设备接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息包括设备句柄标识符;并且响应于所述设备句柄解除分配消息,在所述设备句柄表格中解除分配所述设备句柄解除分配消息的设备句柄标识符。
示例6包括如示例1-5中的任一者所述的主题,并且其中,所述主机消息处理器电路还用于从包括所述控制器中枢的计算系统的软件接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且响应于所述设备句柄解除分配消息,解除分配所述设备句柄表格中的所有设备句柄标识符。
示例7包括如示例1-6中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,处理所述消息包括基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可。
示例8包括如示例1-7中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,处理所述消息包括基于所述受信任比特来处理所述消息。
示例9包括如示例1-8中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,处理所述消息包括基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息。
示例10包括如示例1-9中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体。
示例11包括如示例1-10中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的根复合体。
示例12包括一种处理器,其包括如权利要求1所述的控制器中枢。
示例13包括一种方法,包括由控制器中枢从通过链路连接到所述控制器中枢的设备接收消息,其中,所述消息包括设备句柄标识符;由所述控制器中枢基于所述消息的设备句柄标识符来访问设备句柄表格中的条目,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且由所述控制器中枢基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
示例14包括如示例13所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例15包括如示例13和14中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例16包括如示例13-15中的任一者所述的主题,并且还包括由所述控制器中枢从连接到所述控制器中枢的设备接收设备句柄分配消息,其中,所述设备句柄分配消息包括设备句柄标识符和域标识符;并且由所述控制器中枢响应于所述设备句柄分配消息,将所述设备句柄标识符和所述域标识符存储在所述设备句柄表格中。
示例17包括如示例13-16中的任一者所述的主题,并且还包括由所述控制器中枢从连接到所述控制器中枢的设备接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息包括设备句柄标识符;并且由所述控制器中枢响应于所述设备句柄解除分配消息,在所述设备句柄表格中解除分配所述设备句柄解除分配消息的设备句柄标识符。
示例18包括如示例13-17中的任一者所述的主题,并且还包括由所述控制器中枢从包括所述控制器中枢的计算系统的软件接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且由所述控制器中枢响应于所述设备句柄解除分配消息,解除分配所述设备句柄表格中的所有设备句柄标识符。
示例19包括如示例13-18中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,处理所述消息包括基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可。
示例20包括如示例13-19中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,处理所述消息包括基于所述受信任比特来处理所述消息。
示例21包括如示例13-20中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,处理所述消息包括基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息。
示例22包括如示例13-21中的任一者所述的主题,并且其中,所述处理器包括所述控制器中枢。
示例23包括如示例13-22中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体。
示例24包括如示例13-23中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的根复合体。
示例25包括一种控制器中枢,其包括用于由控制器中枢从通过链路连接到所述控制器中枢的设备接收消息的装置,其中,所述消息包括设备句柄标识符;用于基于所述消息的设备句柄标识符来访问设备句柄表格中的条目的装置,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;以及用于基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息的装置。
示例26包括如示例25所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例27包括如示例25和26中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例28包括如示例25-27中的任一者所述的主题,并且还包括用于从连接到所述控制器中枢的设备接收设备句柄分配消息的装置,其中,所述设备句柄分配消息包括设备句柄标识符和域标识符;以及用于响应于所述设备句柄分配消息而将所述设备句柄标识符和所述域标识符存储在所述设备句柄表格中的装置。
示例29包括如示例25-28中的任一者所述的主题,并且还包括用于从连接到所述控制器中枢的设备接收设备句柄解除分配消息的装置,其中,所述设备句柄解除分配消息包括设备句柄标识符;以及用于响应于所述设备句柄解除分配消息而在所述设备句柄表格中解除分配所述设备句柄解除分配消息的设备句柄标识符的装置。
示例30包括如示例25-29中的任一者所述的主题,并且还包括用于从包括所述控制器中枢的计算系统的软件接收设备句柄解除分配消息的装置,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;以及用于响应于所述设备句柄解除分配消息而解除分配所述设备句柄表格中的所有设备句柄标识符的装置。
示例31包括如示例25-30中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,所述用于处理所述消息的装置包括用于基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可的装置。
示例32包括如示例25-31中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,所述用于处理所述消息的装置包括用于基于所述受信任比特来处理所述消息的装置。
示例33包括如示例25-32中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,所述用于处理所述消息的装置包括用于基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息的装置。
示例34包括如示例25-33中的任一者所述的主题,并且其中,所述处理器包括所述控制器中枢。
示例35包括如示例25-34中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体。
示例36包括如示例25-35中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的根复合体。
示例37包括一种处理器,其包括如权利要求24所述的控制器中枢。
示例38包括一种设备,其包括设备消息处理器电路,来确定要被发送到控制器中枢的消息;确定在设备句柄表格中是否存在与所述消息的域相关联的条目;并且响应于确定在所述设备句柄表格中存在所述条目,访问所述条目,其中,所述条目包括与所述消息的域相对应的设备句柄标识符;并且将所述消息带着与所述消息的域相对应的设备句柄标识符发送到所述控制器中枢。
示例39包括如示例38所述的主题,并且其中,确定在所述设备句柄表格中是否存在与所述消息的域相关联的条目包括确定在所述设备句柄表格中是否存在包括识别所述条目的域的设备上下文信息的条目,其中,所述设备上下文信息包括所述域的队列对、专用工作队列、共享工作队列、或者工作命令。
示例40包括如示例38和39中的任一者所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例41包括如示例38-40中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例42包括如示例38-41中的任一者所述的主题,并且其中,所述设备消息处理器电路还确定要被发送到所述控制器中枢的第二消息;确定在所述设备句柄表格中是否存在与所述第二消息的域相关联的条目;响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目,向所述控制器中枢发送设备句柄分配消息,所述设备句柄分配消息包括与所述第二消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符;并且将所述第二消息带着与所述第二消息的域相关联的设备句柄标识符发送到所述控制器中枢。
示例43包括如示例38-42中的任一者所述的主题,并且其中,所述设备消息处理器电路还响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目,确定在所述设备句柄表格中是否存在未分配的条目;并且响应于确定在所述设备句柄表格中不存在未分配的条目,在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息。
示例44包括如示例38-43中的任一者所述的主题,并且其中,所述设备消息处理器电路还从包括所述设备的计算系统的软件接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且响应于所述设备句柄解除分配消息,解除分配所述设备句柄表格中的所有设备句柄标识符。
示例45包括如示例38-44中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特。
示例46包括如示例38-45中的任一者所述的主题,并且其中,所述设备包括加速器设备。
示例47包括如示例38-46中的任一者所述的主题,并且其中,所述设备是外围组件互连快速(PCIe)互连的端点设备。
示例48包括如示例38-47中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的端点设备。
示例49包括一种方法,包括由设备确定要被发送到控制器中枢的消息;由所述设备确定在设备句柄表格中是否存在与所述消息的域相关联的条目;并且由所述设备响应于确定在所述设备句柄表格中存在所述条目,访问所述条目,其中,所述条目包括与所述消息的域相对应的设备句柄标识符;并且由所述设备将所述消息带着与所述消息的域相对应的设备句柄标识符发送到所述控制器中枢。
示例50包括如示例49所述的主题,并且其中,确定在所述设备句柄表格中是否存在与所述消息的域相关联的条目包括确定在所述设备句柄表格中是否存在包括识别所述条目的域的设备上下文信息的条目,其中,所述设备上下文信息包括所述域的队列对、专用工作队列、共享工作队列、或者工作命令。
示例51包括如示例49和50中的任一者所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例52包括如示例49-51中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例53包括如示例49-52中的任一者所述的主题,并且还包括由所述设备确定要被发送到所述控制器中枢的第二消息;由所述设备确定在所述设备句柄表格中是否存在与所述第二消息的域相关联的条目;由所述设备响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目,向所述控制器中枢发送设备句柄分配消息,所述设备句柄分配消息包括与所述第二消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符;并且由所述设备将所述第二消息带着与所述第二消息的域相关联的设备句柄标识符发送到所述控制器中枢。
示例54包括如示例49-53中的任一者所述的主题,并且还包括由所述设备响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目,确定在所述设备句柄表格中是否存在未分配的条目;并且由所述设备响应于确定在所述设备句柄表格中不存在未分配的条目,在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息。
示例55包括如示例49-54中的任一者所述的主题,并且还包括由所述设备从包括所述设备的计算系统的软件接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且由所述设备响应于所述设备句柄解除分配消息,解除分配所述设备句柄表格中的所有设备句柄标识符。
示例56包括如示例49-55中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特。
示例57包括如示例49-56中的任一者所述的主题,并且其中,所述设备包括加速器设备。
示例58包括如示例49-57中的任一者所述的主题,并且其中,所述设备是外围组件互连快速(PCIe)互连的端点设备。
示例59包括如示例49-58中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的端点设备。
示例60包括一种设备,其包括用于确定要被发送到控制器中枢的消息的装置;用于确定在设备句柄表格中是否存在与所述消息的域相关联的条目的装置;以及用于响应于确定在所述设备句柄表格中存在所述条目而访问所述条目的装置,其中,所述条目包括与所述消息的域相对应的设备句柄标识符;以及用于将所述消息带着与所述消息的域相对应的设备句柄标识符发送到所述控制器中枢的装置。
示例61包括如示例60所述的主题,并且其中,所述用于确定在所述设备句柄表格中是否存在与所述消息的域相关联的条目的装置包括用于确定在所述设备句柄表格中是否存在包括识别所述条目的域的设备上下文信息的条目的装置,其中,所述设备上下文信息包括所述域的队列对、专用工作队列、共享工作队列、或者工作命令。
示例62包括如示例60和61中的任一者所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例63包括如示例60-62中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例64包括如示例60-63中的任一者所述的主题,并且还包括用于确定要被发送到所述控制器中枢的第二消息的装置;用于确定在所述设备句柄表格中是否存在与所述第二消息的域相关联的条目的装置;用于响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目而向所述控制器中枢发送设备句柄分配消息的装置,所述设备句柄分配消息包括与所述第二消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符;以及用于将所述第二消息带着与所述第二消息的域相关联的设备句柄标识符发送到所述控制器中枢的装置。
示例65包括如示例60-64中的任一者所述的主题,并且还包括用于响应于确定在所述设备句柄表格中不存在与所述第二消息的域相关联的条目而确定在所述设备句柄表格中是否存在未分配的条目的装置;并且用于响应于确定在所述设备句柄表格中不存在未分配的条目而在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息的装置。
示例66包括如示例60-65中的任一者所述的主题,并且还包括用于从包括所述设备的计算系统的软件接收设备句柄解除分配消息的装置,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;以及用于响应于所述设备句柄解除分配消息而解除分配所述设备句柄表格中的所有设备句柄标识符的装置。
示例67包括如示例60-66中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特。
示例68包括如示例60-67中的任一者所述的主题,并且其中,所述设备包括加速器设备。
示例69包括如示例60-68中的任一者所述的主题,并且其中,所述设备是外围组件互连快速(PCIe)互连的端点设备。
示例70包括如示例60-69中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(CXL)互连的端点设备。
示例71包括一种系统,其包括控制器中枢;以及通过链路连接到所述控制器中枢的设备,所述设备包括设备消息处理器电路,来向所述控制器中枢发送消息,其中,所述消息包括与所述消息的域相关联的设备句柄标识符,所述控制器中枢包括主机消息处理器电路,来从所述设备接收所述消息;基于所述消息的设备句柄标识符来访问所述控制器中枢的设备句柄表格中的条目,其中,所述控制器中枢的设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
示例72包括如示例71所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例73包括如示例71和72中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例74包括如示例71-73中的任一者所述的主题,并且其中,所述设备消息处理器电路还确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目;并且响应于确定在所述设备的设备句柄表格中存在与所述消息的域相关联的条目,而在发送所述消息之前访问所述设备句柄表格中的与所述消息的域相关联的条目,其中,所述设备的设备句柄表格中的与所述消息的域相关联的条目包括与所述消息的域相对应的设备句柄标识符。
示例75包括如示例71-74中的任一者所述的主题,并且其中,所述设备消息处理器电路还确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目;并且响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目,在发送所述消息之前向所述控制器中枢发送设备句柄分配消息,所述设备句柄分配消息包括与所述消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符,其中,所述主机消息处理器电路还接收所述设备句柄分配消息;并且分配所述设备句柄标识符。
示例76包括如示例71-75中的任一者所述的主题,并且其中,所述设备消息处理器电路还响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目,确定在所述设备的设备句柄表格中是否存在未分配的条目;并且响应于确定在所述设备的设备句柄表格中不存在未分配的条目,在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息,其中,所述主机消息处理器电路还接收所述设备句柄解除分配消息;并且解除分配所述设备句柄标识符。
示例77包括如示例71-76中的任一者所述的主题,并且其中,所述主机消息处理器电路还从所述系统的软件接收设备句柄解除分配消息,其中,由所述控制器中枢接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且响应于由所述控制器中枢接收到的设备句柄解除分配消息,解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符,其中,所述设备消息处理器电路还由所述设备从所述软件接收设备句柄解除分配消息,其中,由所述设备接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且由所述设备响应于由所述设备接收到的设备句柄解除分配消息,解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符。
示例78包括如示例71-77中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,处理所述消息包括基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可。
示例79包括如示例71-78中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,处理所述消息包括基于所述受信任比特来处理所述消息。
示例80包括如示例71-79中的任一者所述的主题,并且其中,所述控制器中枢的设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,处理所述消息包括基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息。
示例81包括如示例71-80中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体,并且所述设备是所述PCIe互连的端点。
示例82包括如示例71-81中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(PCIe)互连的根复合体,并且所述设备是所述CXL互连的端点。
示例83包括如示例71-82中的任一者所述的主题,并且其中,所述主机消息处理器电路还向所述设备发送第二消息,其中,所述第二消息包括与所述第二消息的域相关联的设备句柄标识符,其中,所述设备消息处理器电路还从所述控制器中枢接收所述第二消息;基于所述第二消息的设备句柄标识符来访问所述设备的设备句柄表格中的条目,其中,所述设备的设备句柄表格中的条目包括与所述第二消息的域相对应的域标识符;并且基于与所述第二消息的设备句柄标识符相对应的域标识符来处理所述第二消息。
示例84包括如示例71-83中的任一者所述的主题,并且其中,所述设备的设备句柄表格中的条目包括设备上下文信息,所述设备上下文信息指示出所述域的队列对、专用工作队列、共享工作队列、或者工作命令,其中,处理所述消息包括基于所述设备上下文信息来处理所述消息。
示例85包括一种方法,包括由计算系统的设备向通过链路连接到所述设备的所述计算系统的控制器中枢发送消息,其中,所述消息包括与所述消息的域相关联的设备句柄标识符;由所述控制器中枢从所述设备接收所述消息;由所述控制器中枢基于所述消息的设备句柄标识符来访问所述控制器中枢的设备句柄表格中的条目,其中,所述控制器中枢的设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且由所述控制器中枢基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
示例86包括如示例85所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例87包括如示例85和86中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例88包括如示例85-87中的任一者所述的主题,并且还包括由所述设备确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目;并且由所述设备响应于确定在所述设备的设备句柄表格中存在与所述消息的域相关联的条目,而在发送所述消息之前访问所述设备句柄表格中的与所述消息的域相关联的条目,其中,所述设备的设备句柄表格中的与所述消息的域相关联的条目包括与所述消息的域相对应的设备句柄标识符。
示例89包括如示例85-88中的任一者所述的主题,并且还包括由所述设备确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目;由所述设备响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目,在发送所述消息之前向所述控制器中枢发送设备句柄分配消息,所述设备句柄分配消息包括与所述消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符;由所述控制器中枢接收所述设备句柄分配消息;并且由所述控制器中枢分配所述设备句柄标识符。
示例90包括如示例85-89中的任一者所述的主题,并且还包括由所述设备响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目,确定在所述设备的设备句柄表格中是否存在未分配的条目;并且由所述设备响应于确定在所述设备的设备句柄表格中不存在未分配的条目,在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息;由所述控制器中枢接收所述设备句柄解除分配消息;并且由所述控制器中枢解除分配所述设备句柄标识符。
示例91包括如示例85-90中的任一者所述的主题,并且还包括由所述控制器中枢从所述计算系统的软件接收设备句柄解除分配消息,其中,由所述控制器中枢接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;由所述控制器中枢响应于由所述控制器中枢接收到的设备句柄解除分配消息,解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符;由所述设备从所述软件接收设备句柄解除分配消息,其中,由所述设备接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且由所述设备响应于由所述设备接收到的设备句柄解除分配消息,解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符。
示例92包括如示例85-91中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,处理所述消息包括基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可。
示例93包括如示例85-92中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,处理所述消息包括基于所述受信任比特来处理所述消息。
示例94包括如示例85-93中的任一者所述的主题,并且其中,所述控制器中枢的设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,处理所述消息包括基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息。
示例95包括如示例85-94中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体,并且所述设备是所述PCIe互连的端点。
示例96包括如示例85-95中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(PCIe)互连的根复合体,并且所述设备是所述CXL互连的端点。
示例97包括如示例85-96中的任一者所述的主题,并且还包括由所述控制器中枢向所述设备发送第二消息,其中,所述第二消息包括与所述第二消息的域相关联的设备句柄标识符;由所述设备从所述控制器中枢接收所述第二消息;由所述设备基于所述第二消息的设备句柄标识符来访问所述设备的设备句柄表格中的条目,其中,所述设备的设备句柄表格中的条目包括与所述第二消息的域相对应的域标识符;并且由所述设备基于与所述第二消息的设备句柄标识符相对应的域标识符来处理所述第二消息。
示例98包括如示例85-97中的任一者所述的主题,并且其中,所述设备的设备句柄表格中的条目包括设备上下文信息,所述设备上下文信息指示出所述域的队列对、专用工作队列、共享工作队列、或者工作命令,其中,处理所述消息包括基于所述设备上下文信息来处理所述消息。
示例99包括一种系统,包括由设备向通过链路连接到所述设备的所述系统的控制器中枢发送消息的装置,其中,所述消息包括与所述消息的域相关联的设备句柄标识符;用于由所述控制器中枢从所述设备接收所述消息的装置;用于由所述控制器中枢基于所述消息的设备句柄标识符来访问所述控制器中枢的设备句柄表格中的条目的装置,其中,所述控制器中枢的设备句柄表格中的条目包括与所述消息的域相对应的域标识符;以及用于由所述控制器中枢基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息的装置。
示例100包括如示例99所述的主题,并且其中,所述域标识符包括总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
示例101包括如示例99和100中的任一者所述的主题,并且其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
示例102包括如示例99-101中的任一者所述的主题,并且还包括用于由所述设备确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目的装置;以及用于由所述设备响应于确定在所述设备的设备句柄表格中存在与所述消息的域相关联的条目而在发送所述消息之前访问所述设备句柄表格中的与所述消息的域相关联的条目的装置,其中,所述设备的设备句柄表格中的与所述消息的域相关联的条目包括与所述消息的域相对应的设备句柄标识符。
示例103包括如示例99-102中的任一者所述的主题,并且还包括用于由所述设备确定在所述设备的设备句柄表格中是否存在与所述消息的域相关联的条目的装置;用于由所述设备响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目而在发送所述消息之前向所述控制器中枢发送设备句柄分配消息的装置,所述设备句柄分配消息包括与所述消息的域相关联的域标识符和与所述域标识符相关联的设备句柄标识符;用于由所述控制器中枢接收所述设备句柄分配消息的装置;以及用于由所述控制器中枢分配所述设备句柄标识符的装置。
示例104包括如示例99-103中的任一者所述的主题,并且还包括用于由所述设备响应于确定在所述设备的设备句柄表格中不存在与所述消息的域相关联的条目而确定在所述设备的设备句柄表格中是否存在未分配的条目的装置;用于由所述设备响应于确定在所述设备的设备句柄表格中不存在未分配的条目而在发送所述设备句柄分配消息之前向所述控制器中枢发送设备句柄解除分配消息的装置;用于由所述控制器中枢接收所述设备句柄解除分配消息的装置;以及用于由所述控制器中枢解除分配所述设备句柄标识符的装置。
示例105包括如示例99-104中的任一者所述的主题,并且还包括用于由所述控制器中枢从所述系统的软件接收设备句柄解除分配消息的装置,其中,由所述控制器中枢接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;用于由所述控制器中枢响应于由所述控制器中枢接收到的设备句柄解除分配消息而解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符的装置;用于由所述设备从所述软件接收设备句柄解除分配消息的装置,其中,由所述设备接收到的设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;以及用于由所述设备响应于由所述设备接收到的设备句柄解除分配消息而解除分配所述控制器中枢的设备句柄表格中的所有设备句柄标识符的装置。
示例106包括如示例99-105中的任一者所述的主题,并且其中,所述消息包括要被访问的物理存储器地址,其中,所述用于处理所述消息的装置包括用于基于与所述消息的设备句柄标识符相对应的域标识符来确定对所述物理存储器地址的访问是否被许可的装置。
示例107包括如示例99-106中的任一者所述的主题,并且其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,其中,所述用于处理所述消息的装置包括用于基于所述受信任比特来处理所述消息的装置。
示例108包括如示例99-107中的任一者所述的主题,并且其中,所述控制器中枢的设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,其中,所述用于处理所述消息的装置包括用于基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息的装置。
示例109包括如示例99-108中的任一者所述的主题,并且其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体,并且所述设备是所述PCIe互连的端点。
示例110包括如示例99-109中的任一者所述的主题,并且其中,所述控制器中枢是计算快速链路(PCIe)互连的根复合体,并且所述设备是所述CXL互连的端点。
示例111包括如示例99-110中的任一者所述的主题,并且还包括用于由所述控制器中枢向所述设备发送第二消息的装置,其中,所述第二消息包括与所述第二消息的域相关联的设备句柄标识符;用于由所述设备从所述控制器中枢接收所述第二消息的装置;用于由所述设备基于所述第二消息的设备句柄标识符来访问所述设备的设备句柄表格中的条目的装置,其中,所述设备的设备句柄表格中的条目包括与所述第二消息的域相对应的域标识符;以及用于由所述设备基于与所述第二消息的设备句柄标识符相对应的域标识符来处理所述第二消息的装置。
示例112包括如示例99-111中的任一者所述的主题,并且其中,所述设备的设备句柄表格中的条目包括设备上下文信息,所述设备上下文信息指示出所述域的队列对、专用工作队列、共享工作队列、或者工作命令,其中,所述用于处理所述消息的装置包括用于基于所述设备上下文信息来处理所述消息的装置。
Claims (25)
1.一种控制器中枢,包括:
主机消息处理器电路,用于:
从通过链路连接到所述控制器中枢的设备接收消息,其中,所述消息包括设备句柄标识符;
基于所述消息的设备句柄标识符来访问设备句柄表格中的条目,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且
基于与所述消息的设备句柄标识符相对应的所述域标识符来处理所述消息。
2.如权利要求1所述的控制器中枢,其中,所述域标识符包括:总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
3.如权利要求1所述的控制器中枢,其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
4.如权利要求1所述的控制器中枢,其中,所述主机消息处理器电路还用于:
从连接到所述控制器中枢的设备接收设备句柄分配消息,其中,所述设备句柄分配消息包括设备句柄标识符和域标识符;并且
响应于所述设备句柄分配消息,将所述设备句柄标识符和所述域标识符存储在所述设备句柄表格中。
5.如权利要求1所述的控制器中枢,其中,所述主机消息处理器电路还用于:
从连接到所述控制器中枢的设备接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息包括设备句柄标识符;并且
响应于所述设备句柄解除分配消息,在所述设备句柄表格中解除分配所述设备句柄解除分配消息的设备句柄标识符。
6.如权利要求1-5中任一项所述的控制器中枢,其中,所述主机消息处理器电路还用于:
从包括所述控制器中枢的计算系统的软件接收设备句柄解除分配消息,其中,所述设备句柄解除分配消息指示出所有的设备句柄都应当被解除分配;并且
响应于所述设备句柄解除分配消息,解除分配所述设备句柄表格中的所有设备句柄标识符。
7.如权利要求1-5中任一项所述的控制器中枢,其中,所述消息包括要被访问的物理存储器地址,
其中,处理所述消息包括基于与所述消息的设备句柄标识符相对应的所述域标识符来确定对所述物理存储器地址的访问是否被许可。
8.如权利要求1-5中任一项所述的控制器中枢,其中,所述设备句柄表格中的条目包括指示出所述消息的域是否受信任的受信任比特,
其中,处理所述消息包括基于所述受信任比特来处理所述消息。
9.如权利要求1-5中任一项所述的控制器中枢,其中,所述设备句柄表格中的条目包括指示出与所述消息的域相关联的能力的一个或多个比特,
其中,处理所述消息包括基于指示出与所述消息的域相关联的能力的所述一个或多个比特来处理所述消息。
10.如权利要求1-5中任一项所述的控制器中枢,其中,所述控制器中枢是外围组件互连快速(PCIe)互连的根复合体。
11.如权利要求1-5中任一项所述的控制器中枢,其中,所述控制器中枢是计算快速链路(CXL)互连的根复合体。
12.一种处理器,包括如权利要求1-5中任一项所述的控制器中枢。
13.一种设备,包括:
设备消息处理器电路,用于:
确定要被发送到控制器中枢的消息,所述控制器中枢通过链路连接到所述设备;
确定在设备句柄表格中是否存在与所述消息的域相关联的条目;并且
响应于确定在所述设备句柄表格中存在所述条目,访问所述条目,其中,所述条目包括与所述消息的域相对应的设备句柄标识符;并且
将所述消息带着与所述消息的域相对应的设备句柄标识符发送到所述控制器中枢。
14.如权利要求13所述的设备,其中,确定在所述设备句柄表格中是否存在与所述消息的域相关联的条目包括:确定在所述设备句柄表格中是否存在包括识别所述条目的域的设备上下文信息的条目,其中,所述设备上下文信息包括所述域的队列对、专用工作队列、共享工作队列、或者工作命令。
15.如权利要求13所述的设备,其中,所述设备消息处理器电路还用于:
确定所述设备句柄标识符是否要被解除分配;
响应于确定所述设备句柄标识符要被解除分配,向所述控制器中枢发送解除分配消息,其中,所述解除分配消息包括所述设备句柄标识符;并且
响应于确定所述设备句柄标识符要被解除分配,在所述设备句柄表格中解除分配所述设备句柄标识符。
16.如权利要求13-15中任一项所述的设备,其中,所述设备包括加速器设备。
17.一种系统,包括:
控制器中枢;以及
通过链路连接到所述控制器中枢的设备,
所述设备包括设备消息处理器电路,用于向所述控制器中枢发送消息,其中,所述消息包括与所述消息的域相关联的设备句柄标识符,
所述控制器中枢包括主机消息处理器电路,用于:
从所述设备接收所述消息;
基于所述消息的设备句柄标识符来访问所述控制器中枢的设备句柄表格中的条目,其中,所述控制器中枢的设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且
基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息。
18.如权利要求17所述的系统,其中,所述域标识符包括:总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
19.如权利要求17或18所述的系统,
其中,所述主机消息处理器电路还用于:
向所述设备发送第二消息,其中,所述第二消息包括与所述第二消息的域相关联的设备句柄标识符,
其中,所述设备消息处理器电路还用于:
从所述控制器中枢接收所述第二消息;
基于所述第二消息的设备句柄标识符来访问所述设备的设备句柄表格中的条目,其中,所述设备的设备句柄表格中的条目包括与所述第二消息的域相对应的域标识符;并且
基于与所述第二消息的设备句柄标识符相对应的域标识符来处理所述第二消息。
20.如权利要求19所述的系统,其中,所述设备的设备句柄表格中的条目包括识别所述条目的域的设备上下文信息,其中,所述设备上下文信息包括所述域的队列对、专用工作队列、共享工作队列、或者工作命令,
其中,处理所述消息包括基于所述设备上下文信息来处理所述消息。
21.一种控制器中枢,包括:
用于由控制器中枢从通过链路连接到所述控制器中枢的设备接收消息的装置,其中,所述消息包括设备句柄标识符;
用于基于所述消息的设备句柄标识符来访问设备句柄表格中的条目的装置,其中,所述设备句柄表格中的条目包括与所述消息的域相对应的域标识符;并且
用于基于与所述消息的设备句柄标识符相对应的域标识符来处理所述消息的装置。
22.如权利要求21所述的控制器中枢,其中,所述域标识符包括:总线/设备/功能(BDF)标识符,处理器地址空间标识符(PASID),或者这两者。
23.如权利要求21所述的控制器中枢,其中,所述设备句柄标识符小于或等于12比特,并且所述域标识符大于或等于16比特。
24.如权利要求21-23中任一项所述的控制器中枢,还包括:
用于从连接到所述控制器中枢的所述设备接收设备句柄分配消息的装置,其中,所述设备句柄分配消息包括设备句柄标识符和域标识符;以及
用于响应于所述设备句柄分配消息,将所述设备句柄标识符和所述域标识符存储在所述设备句柄表格中的装置。
25.如权利要求21-23中任一项所述的控制器中枢,还包括:
用于从连接到所述控制器中枢的设备接收设备句柄解除分配消息的装置,其中,所述设备句柄解除分配消息包括设备句柄标识符;并且
用于响应于所述设备句柄解除分配消息,在所述设备句柄表格中解除分配所述设备句柄解除分配消息的设备句柄标识符的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/380,712 | 2021-07-20 | ||
US17/380,712 US20210374087A1 (en) | 2021-07-20 | 2021-07-20 | Technologies for increasing link efficiency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115643173A true CN115643173A (zh) | 2023-01-24 |
Family
ID=78706360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210687611.2A Pending CN115643173A (zh) | 2021-07-20 | 2022-06-17 | 用于提高链路效率的技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210374087A1 (zh) |
CN (1) | CN115643173A (zh) |
-
2021
- 2021-07-20 US US17/380,712 patent/US20210374087A1/en active Pending
-
2022
- 2022-06-17 CN CN202210687611.2A patent/CN115643173A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210374087A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657015B2 (en) | Multiple uplink port devices | |
US11513979B2 (en) | Non-posted write transactions for a computer bus | |
TWI570565B (zh) | 池式記憶體位址轉譯之技術 | |
CN110036380B (zh) | 用于高速互连中低延迟的双模phy | |
CN106815151B (zh) | 高性能互连相干协议 | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
JP6225154B2 (ja) | 共有メモリリンクの低電力エントリ | |
CN107430567B (zh) | 共享缓冲存储器路由 | |
CN105793830B (zh) | 一种在节点之间共享存储器和i/o服务的装置、方法、系统 | |
CN108604209B (zh) | 扁平化端口桥 | |
CN108292267B (zh) | 用于配置装置的方法、系统和设备 | |
KR101830685B1 (ko) | 온칩 메시 상호접속부 | |
EP4123466A1 (en) | Technologies for increasing link efficiency | |
US20210374087A1 (en) | Technologies for increasing link efficiency | |
EP4155995A1 (en) | Technologies for expanded trusted domains | |
CN118051460A (zh) | 用于高速互连中低延迟的双模phy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |