CN113849427A - 用于处理器中的细粒度地址空间选择的系统、装置和方法 - Google Patents
用于处理器中的细粒度地址空间选择的系统、装置和方法 Download PDFInfo
- Publication number
- CN113849427A CN113849427A CN202011548090.XA CN202011548090A CN113849427A CN 113849427 A CN113849427 A CN 113849427A CN 202011548090 A CN202011548090 A CN 202011548090A CN 113849427 A CN113849427 A CN 113849427A
- Authority
- CN
- China
- Prior art keywords
- pasid
- processor
- command data
- instruction
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000004044 response Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000015654 memory Effects 0.000 claims description 71
- 238000013519 translation Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 31
- 238000007667 floating Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on 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/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
- 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/30098—Register arrangements
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了用于处理器中的细粒度地址空间选择的系统、装置和方法。在一个实施例中,处理器包括:第一配置寄存器,该第一配置寄存器用于存储指向进程地址空间标识符(PASID)表的指针;以及执行电路,该执行电路耦合至第一配置寄存器。响应于第一指令,执行电路用于:从第一指令的源操作数中标识的第一位置获得命令数据,从命令数据获得PASID表句柄,使用来自第一配置寄存器的指针并使用PASID表句柄来访问PASID表的第一条目以获得PASID值,将PASID值插入到命令数据中,以及将命令数据发送至耦合至处理器的设备。描述并要求保护其他实施例。
Description
技术领域
实施例涉及指令在处理器中的执行。
背景技术
在计算系统中,系统软件为每个进程分配唯一的进程地址空间标识符(PASID)以允许准备好的标识。尽管这在访问一个地址空间时可能良好工作,但在给定的进程或其他实体寻求对与不同的PASID相关联的不同地址空间的访问时,可能效率低下。之所以如此是由于某些上下文切换会发生,并且许可被检查。使用PASID的一条此类指令是允许软件向入列寄存器写入命令的入列命令指令,入列寄存器是使用存储器映射的I/O(MMIO)访问的特殊设备寄存器。对此种指令的执行可能经受上述考虑因素。
附图说明
图1是根据实施例的进程与多个地址空间的交互的框图。
图2是根据实施例的系统的框图。
图3A是根据实施例的处理器的部分的框图。
图3B是根据另一实施例的处理器的部分的框图。
图3C是根据实施例的型号专属寄存器的框图。
图3D是根据另一实施例的型号专属寄存器的框图。
图4是根据一个实施例的方法的流程图。
图5是根据另一实施例的方法的流程图。
图6是根据又一实施例的方法的流程图。
图7A和图7B图示出更具体的示例性有序核架构的框图。
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图。
图9是根据本发明的实施例的第一更具体的示例性系统的框图。
图10是根据本发明的实施例的SoC的框图。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各实施例中,基于处理器的系统可使得多个非特权软件客户端能够向耦合至系统的一个或多个处理器的设备中的共享工作队列发布工作请求。此类请求可经由公共或共享硬件接口向一个或多个设备发布。作为示例,软件客户端可包括可共享同一硬件接口的驱动器、应用、容器、或虚拟机(VM)。在该模型中,使用进程地址空间标识符(PASID)来标识与给定工作请求相关联的地址空间。为了启用直接的环3(ring-3)提交,系统软件可为每个进程分配唯一的PASID,该唯一的PASID可被存储在配置寄存器(诸如,给定的型号专属寄存器(MSR),例如PASID MSR)中。
此种编程使得给定的软件客户端能够发布请求,这些请求包括可包括入列命令指令的工作请求,本文中描述了入列命令指令的细节,入列命令指令用于向设备内的目的地位置写入命令数据。为了使得软件客户端能够访问与不同的PASID相关联的多个地址空间中的共享虚拟存储器,实施例提供处理器内部硬件结构、指令集架构中的用户级指令、以及用于使得能够更高效地发布工作请求的技术,包括对如本文中所描述的特定设备寄存器的寄存器写入。
当客户端正在与多个无SVM能力的设备交互时,该客户端针对每个设备使用不同的PASID,从而表示与该设备相关联的输入/输出(I/O)虚拟地址空间。此外,如果应用正在与有SVM能力的设备和无SVM能力的设备的混合交互,则使用不同的PASID相对于进程地址空间来标识I/O地址空间。实施例启用此类使用。另外,对于其中不存在SVM的情形(例如,网络接口控制器(NIC)、非易失性存储器快速(NVMe)等等)、或者其中云服务提供商不启用SVM的情形,实施例使得能够通过非特权客户端使用子进程地址空间来使用本文中所描述的入列命令指令。
现在参考图1,示出的是根据实施例的进程与多个地址空间的交互的框图。如图1中所示,在计算系统100内,进程110在执行中。在本文中的实施例中,假定进程110是非特权客户端软件(诸如,应用、驱动器、VM等等)。如所图示,进程110自身包括多个线程,即第一线程1121和第二线程1122。进程110使用PASID X来与NIC 120交互,并且使用PASID Y来与 快速辅助技术(QuickAssist技术,QAT)设备130进行交互。并且如进一步所图示,进程110(及其所包括的线程112)还寻求利用PASID Z来访问具有SVM能力的数据流送加速器(DSA)设备140。
凭借本文中所描述的实施例,利用不同地址空间的PASID信息,可使用基于入列命令的指令和硬件结构来启用对多个地址空间的高效访问。如果线程1121正在接收来自NIC120的分组并使用DSA设备140复制该分组,则在不利用实施例的情况下,将发生PASID从X到Z的MSR切换。由于PASID MSR仅受操作系统(OS)控制/管理,因此此类操作变得困难。
相反,凭借实施例,可在不切换PASID MSR中所存储的PASID的情况下发生利用不同的PASID对不同地址空间的就绪访问。为此,可使用PASID句柄来解决这些限制并启用上文所述的用例。
实施例可进一步用于软件分区操作(例如,无服务器网络装配、轻量型虚拟化),其中进程可具有多个地址空间(并且潜在地针对每个分区具有不同的页表),该多个地址空间映射不同的存储器集合/存储器量。实施例可提供附加级别的间接性(例如,线程-ASID、PASID句柄、IO-ASID)来标识子进程地址空间。
现在参考图2,所示出的是根据实施例的系统的框图。如图2中所示,系统200可以是任何类型的计算系统,范围从小型便携式设备到基于客户端的系统或基于服务器的系统。在所示的高层级中,芯片上系统(SoC)210或其他此类处理器耦合至系统存储器260和I/O设备250。尽管出于易于讨论的目的仅示出这些很少的组件,但应理解,给定的计算系统可包括多得多的组件。进一步地,尽管示出了单个I/O设备250,但应理解,在实施例中可存储在耦合至SoC 210的多个I/O设备。另外,许多系统(尤其是基于服务器的系统)可包括多个SoC和系统存储器。
首先参考SoC 210,示出了多个核2150–215n。在不同的实施例中,核215可以是同构核、或例如在功耗、指令集能力等等方面具有不同的能力的异构核。在图2中所示出的高层级中,每个核215可包括至少一个执行电路216,该执行电路216可接收并执行指令。另外,每个核215可包括多个MSR 218。在本文中的实施例中,可被实现为配置寄存器的一个或多个MSR可被配置成用于存储PASID信息,以供在本文中所描述的指令集架构中的特定指令的执行中使用。
为了使得请求能够从I/O设备250传递至存储器控制器245,可提供I/O存储器管理单元(IOMMU)220。在本文中的实施例中,IOMMU 220可被配置成用于使用例如虚拟地址的DMA重映射结构将传入的虚拟地址转换为对应的物理地址。
在图2的实施例中,将SoC 210示出为包括针对虚拟化的支持。具体而言,SoC 210可在虚拟机监视器(VMM)240或其他虚拟化编排层(诸如,管理程序)等等的控制之下被虚拟化。如所知,VMM 240可实例化一个或多个虚拟环境。在图2中示出的实施例中,VMM 240可实例化多个虚拟环境或宾客机2300–230n。每个虚拟化环境230可被实现为虚拟机,该虚拟机包括可在其上执行一个或多个应用234的宾客机OS 232。另外,可提供宾客机驱动器236。
在本文中的实施例中,虚拟化环境230可发布请求,这些请求包括对一个或多个地址空间的I/O写入请求。利用本文中的实施例,可与这些I/O写入请求结合使用PASID信息,以使得第一地址空间的(例如,来自给定的应用234的)请求可向另一地址空间写入信息。并且利用多个此类写入请求,该第一地址空间可发布对多个地址空间的写入请求。
为了启用与系统存储器260交互,提供了存储器控制器245。在图2中示出的高层级视图中,示出了本文中有关的系统存储器的各种组件。如所见,系统存储器260可包括多个地址空间262。每个地址空间262可与给定的进程或子进程(诸如,线程、I/O设备等等)相关联。如本文中将描述,为了使得与一个地址空间相关联的请求能够访问另一地址空间,可使用PASID表264中的信息。更进一步地,为了提供例如虚拟地址、物理地址、宾客机虚拟地址与主机物理地址之间的地址转换,还可存在一个或多个PASID转换结构265以及一个或多个DMA重映射结构266。另外,每个虚拟化环境230可与也存在于系统存储器260中的对应的虚拟机控制结构(VMCS)268相关联。
仍参考图2,I/O设备250包括前端电路252,该前端电路252被配置成用于接收来自SoC 210的传入的请求。此类请求可包括例如被实现为本文中所描述的入列命令指令的写入请求。响应于此类请求,前端电路252可访问多个入列寄存器255中的一个。根据写入请求,所接收的命令数据可根据入列命令指令的目的地操作数被写入到多个入列寄存器255中的给定的一个入列寄存器。进而,这些请求可被发送至I/O设备250内的多个功能引擎2540-n中的一个功能引擎以供执行。应理解,虽然在图2的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
在实施例中,可提供多种风格的用户级ENQCMD(入列命令)指令,以允许非特权软件向位于耦合至处理器的设备中的入列寄存器写入命令,这些设备诸如外围组件互连快速(PCIe)设备、单根I/O虚拟化(SR-IOV)设备、或可扩展I/O虚拟化设备。可使用存储器映射的I/O(MMIO)来访问这些入列设备寄存器。ENQCMD指令开始于从其源存储器操作数读取64字节的命令数据。指令随后将那64个字节格式化为具有与表1一致的格式的命令数据。
现在参考表1,所示出的是根据实施例的入列寄存器中所存储的信息的示例布置。如表1中所示,入列寄存器可以是512位的,并且可包括命令字段、特权字段、保留字段、以及PASID字段,以存储表1中所示的信息。
表1
如表1中所示,所存储的信息包括:
命令[19:0]为PASID。
命令[30:20]为零。
命令[31]为0(指示用户)。
命令[511:32]是从存储器读取获得的命令数据。
为了更高效地启用对多个地址空间的访问,实施例提供附加的硬件结构和指令。为此,在一个实施例中,给定的MSR可存储PASID表的地址。在一个实施例中,该地址是物理地址,并且在其他实施例中,该地址是虚拟地址。由该MSR引用的此种PASID表存储与不同的句柄相关联的PASID值。进而,可响应于入列命令指令而从命令数据获得句柄。
一般而言,响应于给定的入列命令指令(例如,ENQCMDX r32/64,m512或ENQCMDr32/64,m512),可进行下列操作:
从源存储器操作数读取64字节的命令数据
从命令数据提取PASID_TABLE_HANDLE(PASID_表_句柄)(PTH),
从PASIDX MSR获取PASID表地址,
使用从命令数据提取的PTH来对PASID表进行索引,并获取PASID值,以及
将该所获取的PASID值填充在命令数据(命令[19:0])中。
在某些情形中,错误可源自此类指令的执行。例如,当MSR中的“V”(有效)位为0x0或者基于PTH而选择的PASID表条目中的“V”(有效)位为0x0时,指令可返回一般保护异常。在其中MSR中所存储的地址是虚拟地址的实施例中,可能存在与不存在于物理的第一存储器中的PASID表或指向该PASID表的页表相关联的附加错误状况,从而导致#PF(页错误)异常。
在一些实施例中,由MSR参考分层结构(例如,指向PASID表的PASID目录),并且利用对PTH的使用来对此种多级结构进行索引/查找,以获取PASID信息。并且在一些实施例中,应注意,当在虚拟化环境中运行时,在将命令数据发送至目的地之前,可例如使用PASID转换结构将PASID值从宾客机PASID值转换/变换为主机PASID值。
现在参考图3A,所示出的是根据实施例的处理器的部分的框图。如图3A中所示,处理器300可包括用于启用对ISA中的第一用户级指令的执行以执行入列寄存器写入的各种硬件结构。如图3A中所图示,处理器300包括第一MSR 310,在本文中被称为PASIDX MSR。如所示,第一MSR 310包括多个字段,该多个字段各自用于存储各种信息。如所示,PASID表指针可被存储在PASID表指针字段314中,并且有效指示符可被存储在有效字段318中。如进一步所示,第一MSR 310还可包括保留字段312、316。
如上文所讨论,PASID表指针字段314中所存储的PASID表指针可用于标识例如PASID表320的系统存储器中的地址。注意,在各实施例中,可将PASID表的至少部分存储在处理器内,例如,存储在高速缓存存储器中。PASID表指针可指向PASID表320的基址。如所图示,PASID表320可包括多个条目322,该多个条目322中的每个条目用于存储各种信息。在所示出的实施例中,每个条目322包括用于存储有效指示符的有效字段324、以及用于存储PASID值的PASID字段326。如进一步所示出,每个条目322还可包括保留字段325。
为了对PASID表320进行索引,可使用PASID表句柄来标识给定的条目。由此,如在图3A中所图示,命令数据330(例如,获得自由第一用户级指令的源操作数标识的系统存储器位置)可将此种PASID表句柄包括在PASID表句柄字段338中。如进一步所图示,命令数据330还可包括存储在命令字段332中的设备特定的命令信息、存储在特权字段334中的特权指示符、以及保留字段336。
由此,在图3A中所示出的实施例中,响应于该第一用户级指令,可从第一MSR 310获得PASID表指针以访问PASID表320,并且进而可经由使用在命令数据330内所接收的PASID表句柄进行的索引来访问给定的条目。当然,其他实现方式是可能的。
例如,在另一实施例中,可使用ISA中的第二用户级指令来访问PASID表。在该实施例中,常规地被配置成用于存储PASID值的PASID MSR可被重新用于存储PASID表指针。现在参考图3B,所示出的是根据另一实施例的处理器的部分的框图。如图3B中所示,处理器300’可与图3A的处理器300类似地配置,处理器300’包括PASID表320,包括用于启用对ISA中的第一用户级指令的执行以执行入列寄存器写入的各种硬件结构。如图3B中所图示,处理器300’包括第二MSR 340,即PASID MSR。如所示,PASID MSR 340包括多个字段,该多个字段各自用于存储各种信息。如所示,PASID表指针可被存储在PASID表指针字段344中,并且有效指示符可被存储在有效字段348中。如进一步所示,PASID MSR 340还可包括保留字段342、346。另外,PASID MSR 340包括用于存储多地址(MA)空间指示符的多地址空间字段341。MA空间指示符可由OS基于地址空间选择针对进程是否被允许来配置。当MA位为0x0(如在PASID MSR 340’中)时,MSR遵循具有保留字段342、346、有效字段348、以及PASID字段349的传统布局/格式。当MA位为0x0时,应用不被允许在命令数据PTH字段中指定PTH(即,其必须为0x0)。为此,在当MA位为0x0时,在提供非零的PTH值时,错误状况可导致指令返回#GP异常。当MA位为0x1时,PASID MSR 340具有如图3B中所示的布局,并且允许基于在命令数据中提供的PTH从PASID表选择PASID。
在又一实施例中,代替于从PASID表获得PASID信息,可直接从MSR获得PASID值。为此,另一用户级指令可使得执行电路从多个PASID MSR中的一个PASID MSR获得PASID值。现在参考图3C,所示出的是根据实施例的多个PASID MSR的框图。如图3C中所示,可提供多个PASID MSR 340”。可选择MSR 340”中给定的一个MSR 340”,以从有效字段315获得有效指示符,并使用PASID表句柄从PASID字段319获得对应的PASID值。
MSR 340”中的每一个被提供以存储与不同的句柄相关联的PASID值,并且对应的MSR被查找以确定与PTH相关联的PASID值。例如,对于PTH值n,第n个MSR被访问以确定要填充在命令存储数据中的PASID值。当PTH值出界(即,MSR不与所提供的PTH值相关联)时,指令可返回#GP异常。
在又一实施例中,另一MSR可存储线程ID。此种MSR可被称作PASID TID MSR。在提交ENQCMD之后,线程ID从该MSR被拾取,并被用作句柄(PTH)来对PASID表进行索引。在又一实施例中,从该MSR拾取的线程ID与命令数据的原始PTH字段串接,以创建最终句柄(最终PTH)来对PASID表进行索引。以此种方式,同一进程的不同线程可以使用不同的地址空间。现在参考图3D,所示出的是PASID线程标识符MSR 350的框图。如图3D中所示,线程标识符MSR 350包括多个字段,包括有效字段352、保留字段354、以及线程标识符字段356。应理解,尽管图3A-图3D示出了用于在对各种入列命令指令的执行中使用的特定硬件结构,但在此类指令执行中可涉及多得多的硬件组件。
现在参考图4,所示出的是根据一个实施例的方法的流程图。如图4中所示,方法400是用于执行第一入列命令指令的方法。在由指令取出电路进行的取出以及在指令解码电路中进行的解码之后,可由处理器的执行电路执行方法400。由此,方法400可由硬件电路系统、固件、微代码、其组合等等执行。如所图示,方法400开始于:在执行电路中接收入列命令指令(框410)。假定该入列命令指令为:ENQCMD r32/64,m512或ENQCMDX r32/64,m512。此处,m512用于标识源操作数,并且r32/64标识目的地操作数,该目的地操作数可存在于例如入列寄存器之类的设备中(并且“X”标识对PASIDX MSR的访问)。接下来,响应于该指令,执行电路可读取命令数据,执行电路从由指令的源操作数标识的位置获得该命令数据(框420)。虽然实施例不限于此方面,但在一个示例中,该位置可存在于指令的发布方的地址空间(例如,发布指令的进程的地址空间)中。
仍然参考图4,接下来在框430处,可从命令数据获得PASID表句柄。如上文所讨论,在一个实现方式中,命令数据的最低有效位可包括该PASID表句柄。而且,响应于该第一入列命令指令,可从MSR获得PASID表指针(框440)。在此种实现方式中,该MSR可以是被配置成用于MA操作的PASIDX MSR或PASID MSR。
随后,可在菱形框450处判定该MSR中的有效指示符是否被置位。如果否,则不发生进一步的分析,并且替代地可引发诸如一般保护异常之类的异常(框458)。否则,当判定有效指示符被置位时,接下来在框460处,可使用PASID表指针访问PASID表,PASID表指针可用于标识该表的基址。进而,在框465处,可使用PASID表句柄向PASID表进行索引,以标识可从其获得PASID值的所索引的条目。接下来,在菱形框470处,判定该条目中的有效指示符是否被置位。如果否,则不发生进一步的分析并且引发异常(框458)。
否则,在判定有效指示符被置位的情况下,执行电路可将命令数据格式化为包括该PASID值(框480)。例如,执行电路可将该PASID值插入到命令数据的最低有效位中(由此覆盖PASID表句柄,这是因为不再需要PASID表句柄)。最后,在框490处,将该命令数据可被写入到诸如I/O设备之类的设备中的位置。更具体地,响应于指令,执行电路可使得该命令数据被写入到I/O设备中的、由指令的目的地标识符所标识的特定位置中。在本文中的特定实施例中,该位置可以是设备的给定的入列寄存器。应理解,为了实现此种写入,执行电路可通过处理器层级结构(包括MMU)发送命令数据。应理解,虽然在图4的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图5,所示出的是根据另一实施例的方法的流程图。如在图5中所示,方法500是用于执行访问来自多个MSR中一个MSR的PASID信息的入列命令指令的方法。由此,方法500可由处理器的执行电路、和/或硬件电路系统、固件、微代码、其组合等等执行。如所图示,方法500开始于:在执行电路中接收入列命令指令(框510)。响应于该指令,执行电路可读取命令数据,执行电路从由指令的源操作数标识的位置获得该命令数据(框520)。随后,在框530处,可从命令数据获得PASID表句柄。
仍然参考图5,接下来,可判定多个MSR中的一个MSR是否与所获得的PASID表句柄相关联。如果是,则在560处,可从与PASID表句柄相关联的、该所访问的MSR获得PASID值。注意,在获得该PASID值之前,可首先判定MSR的有效指示符是否被置位。在框570处,执行电路可将命令数据格式化为包括该PASID值。最后,在框580处,可将该命令数据写入到设备中的位置,诸如由指令的目的地操作数标识的给定的入列寄存器。应理解,虽然在图5的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图6,所示出的是根据又一实施例的方法的流程图。如图6中所示,方法600是用于执行使用子进程信息(即,应用的给定线程的线程信息)来访问PASID信息的入列命令执行的方法。由此,方法600可由处理器的执行电路、和/或硬件电路系统、固件、微代码、其组合等等执行。如所图示,方法600开始于:在执行电路中接收入列命令指令(框610)。接下来,响应于该指令,执行电路可读取命令数据,执行电路从由指令的源操作数标识的位置获得该命令数据(框620)。随后,在框630处,可从第一MSR(例如,PASIDX MSR)获得PASID表指针(假定第一MSR的有效指示符被置位)。
仍然参考图6,接下来在框640处,可从另一MSR(例如,线程ID MSR)获得线程标识符(假定该MSR的有效指示符被置位)。在框650处,可使用PASID表指针来访问PASID表,PASID表指针可用于标识该表的基址。进而,在框660处,可使用线程标识符以对PASID表进行索引来标识可从其获得PASID值的所索引的条目。接下来,在菱形框670处,判定该条目中的有效指示符是否被置位。如果否,则不发生进一步的分析并且引发异常(框675)。否则,在框680处,执行电路可将命令数据格式化为包括该PASID值。最后,在框690处,可将该命令数据写入到设备中的位置,诸如由指令的目的地操作数标识的给定的入列寄存器。应理解,虽然在图6的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
如上文所描述,MSR和用于实现基于PASID的请求的其他结构可被集成在处理器或其他SoC内。此类处理器可包括能以不同方式、出于不同的目的、在不同的处理器中实现的处理器核。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
图7A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图7B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图7A-图7B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处置级722和提交级724。注意,如本文中所描述,在给定的实施例中,核可包括多个诸如流水线700之类的处理流水线。
图7B示出处理器核790,该处理器核790包括前端单元730,该前端单元730耦合到执行引擎单元750,并且前端单元730和执行引擎单元750两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核790可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元730包括分支预测单元732,该分支预测单元732耦合到指令高速缓存单元734,该指令高速缓存单元734耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器736耦合到指令取出单元738,该指令取出单元738耦合到解码单元740。解码单元740(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元740中,或以其他方式在前端单元730内)。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元752耦合到引退单元754和一个或多个调度器单元的集合756。(多个)调度器单元756表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元756耦合到(多个)物理寄存器堆单元758。(多个)物理寄存器堆单元758中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元758由引退单元754重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元754和(多个)物理寄存器堆单元758耦合到(多个)执行集群760。(多个)执行集群760包括一个或多个执行单元的集合762以及一个或多个存储器访问单元的集合764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元756、(多个)物理寄存器堆单元758和(多个)执行集群760示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元764的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合764耦合到存储器单元770,该存储器单元770包括数据TLB单元772,该数据TLB单元772耦合到数据高速缓存单元774,该数据高速缓存单元774耦合到第二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线700:1)指令取出738执行取出级702和长度解码级704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)(多个)调度器单元756执行调度级712;5)(多个)物理寄存器堆单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和(多个)物理寄存器堆单元758执行写回/存储器写入级718;7)各单元可牵涉到异常处置级722;以及8)引退单元754和(多个)物理寄存器堆单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核790包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器800的框图。图8中的实线框图示具有单个核802A、系统代理810、一个或多个总线控制器单元的集合816的处理器800,而虚线框的任选增加图示具有多个核802A-N、系统代理单元810中的一个或多个集成存储器控制器单元的集合814以及专用逻辑808的替代处理器800。
因此,处理器800的不同实现可包括:1)CPU,其中专用逻辑808是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核802A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核802A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核802A-N是大量通用有序核。因此,处理器800可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器800可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存单元804A-N、一个或多个共享高速缓存单元的集合806、以及耦合到集成存储器控制器单元的集合814的外部存储器(未示出)。共享高速缓存单元的集合806可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元812将专用逻辑808、共享高速缓存单元的集合806以及系统代理单元810/(多个)集成存储器控制器单元814互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元806与核802A-N之间维持一致性。
系统代理单元810包括协调和操作核802A-N的那些部件。系统代理单元810可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核802A-N以及专用逻辑808的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核802A-N在架构指令集方面可以是同构的或异构的;即,核802A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图9-10是示例性计算机架构的框图。用于膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的本领域中已知的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参见图9,所示出的是根据本发明的实施例的第一更具体的示例性系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理器970和第二处理器980。处理器970和980中的每一个都可以是处理器900的某一版本。
处理器970和980示出为分别包括集成存储器控制器(IMC)单元972和982。处理器970还包括作为其总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理器980包括P-P接口986和988。处理器970、980可以经由使用点对点(P-P)接口电路978、988的P-P接口950来交换信息。如图9中所示,IMC 972和982将处理器耦合到相应的存储器,即存储器932和存储器934,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器970、980可各自经由使用点对点接口电路976、994、986、998的各个P-P接口952、954来与芯片组990交换信息。芯片组990可以任选地经由高性能接口939来与协处理器938交换信息。在一个实施例中,协处理器938是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组990可以经由接口996耦合到第一总线916。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图9中所示,各种I/O设备914可连同总线桥918一起耦合到第一总线916,该总线桥918将第一总线916耦合到第二总线920。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器915耦合到第一总线916。在一个实施例中,第二总线920可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线920,这些设备包括例如键盘和/或鼠标922、通信设备927以及存储单元928,该存储单元928诸如可包括指令/代码和数据930的盘驱动器或者其他大容量存储设备。此外,音频I/O 924可以被耦合到第二总线920。注意,其他架构是可能的。例如,代替图9的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图10,示出的是根据本发明的实施例的SoC 1000的框图。虚线框是更先进的SoC上的任选的特征。在图10中,(多个)互连单元1002被耦合到:应用处理器1010,其包括一个或多个核的集合1002A-N(包括组成高速缓存单元1004A-N)的集合以及(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一个或多个协处理器的集合1020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;以及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,(多个)协处理器1020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图9中图示的代码930)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图11是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出可使用x86编译器1104来编译高级语言1102形式的程序,以生成可由具有至少一个x86指令集核的处理器1116原生执行的x86二进制代码1106。具有至少一个x86指令集核的处理器1116表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1104表示可操作用于生成x86二进制代码1106(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1116上执行。类似地,图11示出可以使用替代的指令集编译器1108来编译高级语言1102形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1114(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1110。指令转换器1112用于将x86二进制代码1106转换成可以由不具有x86指令集核的处理器1114原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1106的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种处理器包括:第一配置寄存器,该第一配置寄存器用于存储指向PASID表的指针;以及执行电路,该执行电路耦合至第一配置寄存器,其中,响应于第一指令,该执行电路用于:从第一指令的源操作数中标识的第一位置获得命令数据,从命令数据获得PASID表句柄,使用来自第一配置寄存器的指针并使用PASID表句柄来访问PASID表的第一条目以获得PASID值,将PASID值插入到命令数据中,以及将命令数据发送至耦合至处理器的设备。
在示例中,执行电路用于:将命令数据发送至第一指令的目的地操作数中标识的设备的寄存器。
在示例中,设备包括具有与PASID值相关联的第一I/O地址空间的I/O设备,并且其中,执行电路用于从具有与第二PASID值相关联的第二地址空间的第一应用接收第一指令。
在示例中,响应于来自第一应用的第二指令,执行电路用于将第二命令数据发送至耦合至处理器的第二设备,该第二设备具有与第三PASID值相关联的第三地址空间。
在示例中,如果第一配置寄存器的有效指示符未被置位,则执行电路用于引发异常并且不访问PASID表。
在示例中,如果PASID表的第一条目的有效指示符未被置位,则执行电路用于引发异常并且不将PASID值插入到命令数据中。
在示例中,第一配置寄存器包括PASID型号专属寄存器,该PASID型号专属寄存器包括用于存储多地址指示符的第一字段,该多地址指示符当被置位时指示PASID型号专属寄存器包括指向PASID表的指针。
在示例中,当多地址空间指示符被重置时,PASID型号专属寄存器用于存储PASID值并且执行电路将不访问PASID表,并且当多地址空间指示符被重置时,命令数据不包括所述PASID表句柄。
在示例中,处理器用于使用PASID转换结构将从PASID表获得的PASID值变换成第二PASID值,并且将具有第二PASID值的命令数据发送至设备。
在示例中,处理器进一步包括多个配置寄存器,该多个配置寄存器中的每个配置寄存器用于存储PASID值,并且执行电路用于使用PASID表句柄来访问多个寄存器中的第一配置寄存器以获得PASID值且不访问PASID表。
在另一示例中,一种方法包括:在处理器的执行电路中接收具有源操作数和目的地操作数的第一指令;从源操作数中标识的第一位置获得命令数据,并且从该命令数据提取PASID表句柄;使用来自第一配置寄存器的指针来访问PASID表;使用PASID表句柄向PASID表的第一条目进行索引,以获得PASID值;以及将PASID值插入到命令数据中,并且将命令数据发送至耦合至处理器的设备。
在示例中,方法进一步包括:响应于第一指令,从第一配置寄存器获得指针,该第一配置寄存器包括PASIDX型号专属寄存器,第一指令包括用户级入列命令X指令。
在示例中,方法进一步包括:响应于第一指令,当PASID型号专属寄存器中所存储的多地址指示符被置位时,从包括PASID信号专属寄存器的第一配置寄存器获得指针,第一指令包括用户级入列命令指令。
在示例中,方法进一步包括:将命令数据发送至目的地操作数中标识的设备的入列寄存器。
在示例中,方法进一步包括:当PASID表的第一条目的有效指示符被重置时,不将PASID值插入到命令数据中并且引发异常。
在示例中,方法进一步包括:将命令数据发送至具有与发布第一指令的代理的地址空间不同的地址空间的设备,而不改变第二配置寄存器中所存储的、与该代理的地址空间相关联的PASID值。
在示例中,方法进一步包括:响应于第一配置寄存器的重置的有效指示符或PASID表的第一条目的重置的有效指示符,引发异常。
在另一示例中,一种计算机可读介质包括指令,该指令用于执行如以上示例中的任一项所述的方法。
在进一步的示例中,计算机可读介质包括数据,该数据用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项的方法。
在更进一步的示例中,设备包括用于执行如以上示例中的任一项所述的方法的装置。
在又一示例中,一种系统包括处理器、设备、和系统存储器。处理器可包括:第一配置寄存器,该第一配置寄存器用于存储指向PASID表的指针;第二配置寄存器,该第二配置寄存器用于存储与应用的线程相关联的线程标识符;以及执行电路,该执行电路耦合至第一配置寄存器和第二配置寄存器,其中,响应于第一指令,执行电路用于:从第一指令的源操作数中标识的第一位置获得命令数据,使用指针和线程标识符来访问PASID表的条目以获得PASID值,将PASID值插入到命令数据中,以及将命令数据发送至设备。
设备可包括前端电路,该前端电路用于接收来自处理器的传入写入请求,该前端电路包括多个寄存器,其中,响应于包括命令数据的第一传入写入请求,前端电路用于将命令数据存储在多个寄存器中的第一寄存器中。
在示例中,执行电路用于:在维持处理器的另一配置寄存器中的第二PASID值的同时,从应用的线程接收第一指令,该应用具有与不同于从PASID表获得的PASID值的第二PASID值相关联的地址空间。
在示例中,系统存储器包括PASID表,并且响应于第一指令,执行电路用于:从命令数据获得PASID表句柄,将线程标识符和PASID表句柄串接为串接值,以及使用该串接值向PASID表中的条目进行索引。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所示用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文中所描述的方法和技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会众多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
Claims (25)
1.一种用于将命令发送至设备的处理器,包括:
第一配置寄存器,用于存储指向进程地址空间标识符PASID表的指针;以及
执行电路,耦合至所述第一配置寄存器,其中,响应于第一指令,所述执行电路用于:从所述第一指令的源操作数中标识的第一位置获得命令数据,从所述命令数据获得PASID表句柄,使用来自所述第一配置寄存器的所述指针并使用所述PASID表句柄来访问所述PASID表的第一条目以获得PASID值,将所述PASID值插入到所述命令数据中,以及将所述命令数据发送至耦合至所述处理器的设备。
2.如权利要求1所述的处理器,其中,所述执行电路用于:将所述命令数据发送至所述第一指令的目的地操作数中标识的所述设备的寄存器。
3.如权利要求1所述的处理器,其中,所述设备包括具有与所述PASID值相关联的第一输入/输出I/O地址空间的I/O设备,并且其中,所述执行电路用于从具有与第二PASID值相关联的第二地址空间的第一应用接收所述第一指令。
4.如权利要求3所述的处理器,其中,响应于来自所述第一应用的第二指令,所述执行电路用于将第二命令数据发送至耦合至所述处理器的第二设备,所述第二设备具有与第三PASID值相关联的第三地址空间。
5.如权利要求1所述的处理器,其中,如果所述第一配置寄存器的有效指示符未被置位,则所述执行电路用于引发异常并且不访问所述PASID表。
6.如权利要求1所述的处理器,其中,如果所述PASID表的所述第一条目的有效指示符未被置位,则所述执行电路用于引发异常并且不将所述PASID值插入到所述命令数据中。
7.如权利要求1所述的处理器,其中,所述第一配置寄存器包括PASID型号专属寄存器,所述PASID型号专属寄存器包括用于存储多地址指示符的第一字段,所述多地址指示符当被置位时指示所述PASID型号专属寄存器包括指向所述PASID表的所述指针。
8.如权利要求7所述的处理器,其中,当所述多地址空间指示符被重置时,所述PASID型号专属寄存器用于存储所述PASID值且所述执行电路将不访问所述PASID表,并且当所述多地址空间指示符被重置时,所述命令数据不包括所述PASID表句柄。
9.如权利要求1所述的处理器,其中,所述处理器用于使用PASID转换结构将从所述PASID表获得的所述PASID值变换成第二PASID值,并且将具有所述第二PASID值的所述命令数据发送至所述设备。
10.如权利要求1所述的处理器,进一步包括多个配置寄存器,所述多个配置寄存器中的每个配置寄存器用于存储PASID值,其中,所述执行电路用于使用所述PASID表句柄来访问多个寄存器中的所述第一配置寄存器以获得所述PASID值且不访问所述PASID表。
11.一种用于将命令数据发送至设备的方法,包括:
在处理器的执行电路中接收具有源操作数和目的地操作数的第一指令;
从所述源操作数中标识的第一位置获得命令数据,并且从所述命令数据提取进程地址空间标识符PASID表句柄;
使用来自第一配置寄存器的指针来访问PASID表;
使用所述PASID表句柄向所述PASID表的第一条目进行索引,以获得PASID值;以及
将所述PASID值插入到所述命令数据中,并且将所述命令数据发送至耦合至所述处理器的设备。
12.如权利要求11所述的方法,其中,所述方法进一步包括:响应于所述第一指令,从所述第一配置寄存器获得所述指针,所述第一配置寄存器包括PASIDX型号专属寄存器,所述第一指令包括用户级入列命令X指令。
13.如权利要求11所述的方法,其中,所述方法进一步包括:响应于所述第一指令,当PASID型号专属寄存器中所存储的多地址指示符被置位时,从包括所述PASID型号专属寄存器的所述第一配置寄存器获得所述指针,所述第一指令包括用户级入列命令指令。
14.如权利要求11所述的方法,其中,所述方法进一步包括:将所述命令数据发送至所述目的地操作数中标识的所述设备的入列寄存器。
15.如权利要求11所述的方法,其中,所述方法进一步包括:当所述PASID表的所述第一条目的有效指示符被重置时,不将所述PASID值插入到所述命令数据中并且引发异常。
16.如权利要求11所述的方法,其中,所述方法进一步包括:将所述命令数据发送至具有与发布所述第一指令的代理的地址空间不同的地址空间的设备,而不改变第二配置寄存器中所存储的、与所述代理的地址空间相关联的PASID值。
17.如权利要求11所述的方法,其中,所述方法进一步包括:响应于所述第一配置寄存器的重置的有效指示符或所述PASID表的所述第一条目的重置的有效指示符,引发异常。
18.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在被执行时用于实现如权利要求11至17中任一项所述的方法。
19.一种用于将命令数据发送至设备的系统,包括:
处理器,所述处理器包括:
第一配置寄存器,所述第一配置寄存器用于存储指向进程地址空间标识符PASID表的指针;
第二配置寄存器,所述第二配置寄存器用于存储与应用的线程相关联的线程标识符;以及
执行电路,所述执行电路耦合至所述第一配置寄存器和所述第二配置寄存器,其中,响应于第一指令,所述执行电路用于:从所述第一指令的源操作数中标识的第一位置获得命令数据,使用所述指针和所述线程标识符来访问所述PASID表的条目以获得PASID值,将所述PASID值插入到所述命令数据中,以及将所述命令数据发送至设备;
耦合至所述处理器的所述设备,其中,所述设备包括:
前端电路,所述前端电路用于接收来自所述处理器的传入写入请求,所述前端电路包括多个寄存器,其中,响应于包括所述命令数据的第一传入写入请求,所述前端电路用于将所述命令数据存储在所述多个寄存器中的第一寄存器中;以及
系统存储器,所述系统存储器耦合至所述处理器。
20.如权利要求19所述的系统,其中,所述执行电路用于:在维持所述处理器的另一配置寄存器中的第二PASID值的同时,从所述应用的所述线程接收所述第一指令,所述应用具有与不同于从所述PASID表获得的所述PASID值的所述第二PASID值相关联的地址空间。
21.如权利要求19所述的系统,其中,所述系统存储器包括所述PASID表,并且响应于所述第一指令,所述执行电路用于:从所述命令数据获得PASID表句柄,将所述线程标识符和所述PASID表句柄串接为串接值,以及使用所述串接值向所述PASID表中的所述条目进行索引。
22.一种用于将命令发送至设备的处理器,包括:
第一配置寄存器装置,用于存储指向进程地址空间标识符PASID表的指针;以及
执行装置,耦合至所述第一配置寄存器装置,其中,响应于第一指令,所述执行装置用于:从所述第一指令的源操作数中标识的第一位置获得命令数据,从所述命令数据获得PASID表句柄,使用来自所述第一配置寄存器的所述指针并使用所述PASID表句柄来访问所述PASID表的第一条目以获得PASID值,将所述PASID值插入到所述命令数据中,以及将所述命令数据发送至耦合至所述处理器的设备。
23.如权利要求22所述的处理器,其中,所述执行装置用于:将所述命令数据发送至所述第一指令的目的地操作数中标识的所述设备的寄存器。
24.如权利要求22所述的处理器,其中,所述设备包括具有与所述PASID值相关联的第一输入/输出I/O地址空间的I/O设备,并且其中,所述执行装置用于从具有与第二PASID值相关联的第二地址空间的第一应用接收所述第一指令。
25.如权利要求24所述的处理器,其中,响应于来自所述第一应用的第二指令,所述执行装置用于将第二命令数据发送至耦合至所述处理器的第二设备,所述第二设备具有与第三PASID值相关联的第三地址空间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/911,441 US11461099B2 (en) | 2020-06-25 | 2020-06-25 | System, apparatus and method for fine-grain address space selection in a processor |
US16/911,441 | 2020-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849427A true CN113849427A (zh) | 2021-12-28 |
Family
ID=78972071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011548090.XA Pending CN113849427A (zh) | 2020-06-25 | 2020-12-24 | 用于处理器中的细粒度地址空间选择的系统、装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (3) | US11461099B2 (zh) |
CN (1) | CN113849427A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437616B2 (en) | 2016-12-31 | 2019-10-08 | Intel Corporation | Method, apparatus, system for optimized work submission to an accelerator work queue |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
WO2018152688A1 (en) * | 2017-02-22 | 2018-08-30 | Intel Corporation | Virtualization of process address space identifiers for scalable virtualization of input/output devices |
US11121940B2 (en) | 2017-03-27 | 2021-09-14 | Intel Corporation | Techniques to meet quality of service requirements for a fabric point to point connection |
WO2018176360A1 (en) | 2017-03-31 | 2018-10-04 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
US10970238B2 (en) | 2019-04-19 | 2021-04-06 | Intel Corporation | Non-posted write transactions for a computer bus |
-
2020
- 2020-06-25 US US16/911,441 patent/US11461099B2/en active Active
- 2020-12-24 CN CN202011548090.XA patent/CN113849427A/zh active Pending
-
2022
- 2022-08-19 US US17/891,180 patent/US20230023329A1/en active Pending
-
2024
- 2024-06-24 US US18/751,604 patent/US20240345841A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240345841A1 (en) | 2024-10-17 |
US20210406022A1 (en) | 2021-12-30 |
US20230023329A1 (en) | 2023-01-26 |
US11461099B2 (en) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10078519B2 (en) | Apparatus and method for accelerating operations in a processor which uses shared virtual memory | |
US9317441B2 (en) | Indexed page address translation to reduce memory footprint in virtualized environments | |
US20240289160A1 (en) | Aperture access processors, methods, systems, and instructions | |
WO2017172354A1 (en) | Hardware apparatuses and methods for memory performance monitoring | |
CN111133425A (zh) | 输入/输出(i/o)存储器管理单元的基于硬件的虚拟化 | |
KR101787851B1 (ko) | 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 | |
US12013790B2 (en) | Unified address translation for virtualization of input/output devices | |
CN113196234A (zh) | 使用硬件分页提示的进程空间标识符虚拟化 | |
EP3709159B1 (en) | Processing vectorized guest physical address translation instructions | |
US10248574B2 (en) | Input/output translation lookaside buffer prefetching | |
EP3073370B1 (en) | Apparatuses and methods to translate a logical thread identification to a physical thread identification | |
EP3716080A1 (en) | System, apparatus and method for application specific address mapping | |
CN117355816A (zh) | 用于设备转译后备缓冲器预转译指令和对输入/输出存储器管理单元协议的扩展的装置、方法和系统 | |
US20230418773A1 (en) | Device, system, and method for inspecting direct memory access requests | |
US20220398017A1 (en) | Independently controlled dma and cpu access to a shared memory region | |
WO2022133841A1 (en) | Apparatus and method for address pre-translation to enhance direct memory access by hardware subsystems | |
US11461099B2 (en) | System, apparatus and method for fine-grain address space selection in a processor | |
US20220414022A1 (en) | Apparatus, system, and method for secure memory access control | |
US20220414029A1 (en) | Device, method, and system to identify a page request to be processed after a reset event | |
US20220334991A1 (en) | Software-driven remapping hardware cache quality-of-service policy based on virtual machine priority | |
CN113849263A (zh) | 用于启用对工作提交的细粒度的服务质量或速率控制的系统、装置和方法 |
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 |