主机管理的相干设备存储器

文档序号:1598841 发布日期:2020-01-07 浏览:8次 >En<

阅读说明:本技术 主机管理的相干设备存储器 (Host managed coherent device memory ) 是由 M·S·那图 V·桑吉潘 于 2019-05-28 设计创作,主要内容包括:系统或设备可以包括:处理器核心,该处理器核心包括一个或多个硬件处理器;用于缓存数据的处理器存储器;用于将处理器核心与一个或多个附接的存储器单元耦合的存储器链路接口;以及平台固件,其用于:确定设备跨存储器链路接口被连接到处理器核心;确定该设备包括附接的存储器;确定可用于处理器核心的附接的存储器的至少一部分的范围;将附接的存储器的该部分的范围映射到处理器存储器;并且其中,处理器核心用于使用附接的存储器的该部分的范围和处理器存储器来缓存数据。(The system or apparatus may include: a processor core including one or more hardware processors; a processor memory for caching data; a memory link interface for coupling a processor core with one or more attached memory units; and platform firmware to: determining that a device is connected to a processor core across a memory link interface; determining that the device includes attached memory; determining a range of at least a portion of memory available for attachment by a processor core; mapping a range of the portion of the attached memory to a processor memory; and wherein the processor core is to cache the data using the processor memory and a range of the portion of the attached memory.)

主机管理的相干设备存储器

背景技术

在计算中,高速缓存是存储数据使得可以更快地提供针对该数据的未来请求的组件。例如,存储在高速缓存中的数据可能是较早计算的结果,或者是存储在别处的数据的副本。通常,当在高速缓存中找到所请求的数据时,可以发生高速缓存命中,而当在高速缓存中未找到所请求的数据时,可以发生高速缓存未命中。通过从高速缓存读取数据来提供高速缓存命中,这典型地比重新计算结果或从较慢的数据存储区进行读取更快。因此,经常可以通过从高速缓存提供更多请求来实现效率的提高。

具体实施方式

在以下说明书中阐述了许多具体细节,例如,特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定处理器管线阶段、特定互连层、特定分组/事务配置、特定事务名称、特定协议交换、特定链路宽度、特定实现方式和操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域技术人员可以显而易见的是,不一定需要采用这些具体细节来实践本公开的主题。在其他实例中,避免对以下已知的组件或方法进行详细描述以免不必要地模糊本公开:例如,特定和替代的处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、低级别互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、代码形式的特定算法表达、特定掉电和门控技术/逻辑以及计算机系统的其他特定操作细节。

虽然可以参考特定集成电路中的能量节约、能量效率、处理效率等来描述以下实施例(例如,在计算平台或微处理器中),但是其他实施例也适用于其他类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可以适用于可以同样受益于这些特征的其他类型的电路或半导体器件。例如,所公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机或UltrabooksTM,而且还可以用于其他设备,例如,手持设备、智能电话、平板计算机、其他薄型笔记本计算机、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码照相机、个人数字助理(PDA)和手持PC。这里,用于高性能互连的类似技术可以适用于在低功耗互连中增强性能(或甚至节能)。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以执行下面教导的功能和操作的任何其他系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而且还可以涉及用于能量节约和效率的软件优化。如可以在下面的说明书中变得显而易见的,可以认为本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于与性能考虑均衡的“绿色技术”未来是至关重要的。

随着计算系统的发展,其中的组件变得更加复杂。用于在组件之间进行耦合和通信的互连架构的复杂性也已经增加,以确保满足最佳组件操作的带宽需求。此外,不同的细分市场需要互连架构的不同方面来满足相应市场。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能以用于节能。然而,大部分结构的单一目的是提供最高可能性能和最大节能。此外,各种不同互连可以潜在地受益于本文描述的主题。

***组件互连(PCI)快速(PCIe)互连结构架构和快速路径互连(QPI)结构架构以及其他示例可以潜在地根据本文描述的一个或多个原理以及其他示例来改进。例如,PCIe的主要目标是使得来自不同供应商的组件和设备能够在开放式架构中互操作,跨越多个细分市场;客户端(台式和移动)、服务器(标准和企业)以及嵌入式设备和通信设备。PCI快速是高性能通用I/O互连,其定义用于各种未来计算和通信平台。一些PCI属性(例如,其使用模型,加载-存储架构和软件接口)已经通过其修订进行维护,而先前的并行总线实现方式已经由高度可扩展的完全串行接口取代。最近期的PCI快速版本利用点对点互连、基于交换机的技术和分组化的协议中的改进,实现新水平的性能和特征。PCI快速支持的高级特征中的一些是功率管理、服务质量(QoS)、热插拔/热调换支持、数据完整性以及错误处理。虽然本文的主要讨论内容参考新的高性能互连(HPI)架构,但是本文描述的发明的方面可以适用于其他互连架构,例如,符合PCIe的架构、符合QPI的架构、符合MIPI的架构、高性能架构或其他已知的互连架构。

参考图1,示出了由互连一组组件的点对点链路组成的结构的实施例。系统100包括耦合到控制器中心115的处理器105和系统存储器110。处理器105可以包括任何处理元件,例如,微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前侧总线(FSB)106耦合到控制器中心115。在一个实施例中,FSB 106是如下面描述的串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。

系统存储器110包括任何存储器设备,例如,随机存取存储器(RAM)、非易失性(NV)存储器或系统100中的设备可访问的其他存储器。系统存储器110通过存储器接口116耦合到控制器中心115。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口以及动态RAM(DRAM)存储器接口。

在一个实施例中,控制器中心115可以包括例如PCIe互连层级中的根中心、根复合体或根控制器。控制器中心115的示例包括芯片组、存储器控制器中心(MCH)、北桥、互连控制器中心(ICH)、南桥和根控制器/中心。经常,术语芯片组指代两个物理上分离的控制器中心,例如,耦合到互连控制器中心(ICH)的存储器控制器中心(MCH)。注意,当前系统经常包括与处理器105集成的MCH,而控制器115以与下面描述的类似的方式与I/O设备通信。在一些实施例中,可选地通过根复合体115支持对等路由。

这里,控制器中心115通过串行链路119耦合到交换机/桥接器120。输入/输出模块117和121(也可以称为接口/端口117和121)可以包括/实现分层协议栈,以提供控制器中心115与交换机120之间的通信。在一个实施例中,多个设备能够耦合到交换机120。

交换机/桥接器120将分组/消息从设备125向上游(即,朝向根复合体向上的层级)路由到控制器中心115,以及从处理器105或系统存储器110向下游(即,远离根控制器向下的层级)路由到设备125。在一个实施例中,交换机120被称为多个虚拟PCI到PCI桥接器设备的逻辑组件。设备125包括要耦合到电子系统的任何内部或外部的设备或组件,例如,I/O设备、网络接口控制器(NIC)、***卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪以及其他输入/输出设备。经常,在PCIe中,诸如设备之类的术语被称为端点。虽然没有具体示出,但是设备125可以包括桥接器(例如,PCIe到PCI/PCI-X桥接器),以支持传统设备或其他版本的设备,或者这些设备支持的互连结构。

图形加速器130也可以通过串行链路132耦合到控制器中心115。在一个实施例中,图形加速器130耦合到MCH,该MCH耦合到ICH。然后将交换机120以及因此I/O设备125耦合到ICH。I/O模块131和118还用于实现分层协议栈,以在图形加速器130与控制器中心115之间进行通信。类似于上面讨论的MCH,图形控制器或图形加速器130本身可以集成在处理器105中。

转到图2,示出了分层协议栈的实施例。分层协议栈200可以包括任何形式的分层通信栈,例如,QPI栈、PCIe栈、下一代高性能计算互连(HPI)栈或其他分层栈。在一个实施例中,协议栈200可以包括事务层205、链路层210和物理层220。接口(例如,图1中的接口117、118、121、122、126和131)可以表示为通信协议栈200。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

分组可以用于在组件之间传达信息。可以在事务层205和数据链路层210中形成分组,以将信息从发送组件携带到接收组件。当被发送的分组流过其他层时,这些分组利用用于在这些层处处理分组的附加信息进行扩展。在接收侧,发生反向过程,并且分组从其物理层220表示变换为数据链路层210表示,并且最后(对于事务层分组)变换为可以由接收设备的事务层205处理的形式。

在一个实施例中,事务层205可以提供设备的处理核心与互连架构(例如,数据链路层210和物理层220)之间的接口。在这方面,事务层205的主要职责可以包括分组(即,事务层分组或TLP)的组包和拆包。事务层205还可以管理针对TLP的基于信用的流控制。在一些实现方式中,可以利用分离事务,即,请求和响应按时间分开的事务,允许链路在目标设备收集用于响应的数据时携带其他业务,以及其他示例。

基于信用的流控制可以用于利用互连结构来实现虚拟信道和网络。在一个示例中,设备可以在事务层205中通告接收缓冲器中的每个接收缓冲器的初始信用量。在链路的相对端处的外部设备(例如,图1中的控制器中心115)可以对由每个TLP消耗的信用的数量进行计数。如果事务未超过信用限制,则可以发送事务。在接收到响应时,恢复一定量的信用。这样的信用方案的优点的一个示例在于,只要没有遇到信用限制,则信用返回的延迟不会影响性能,以及其他潜在优点。

在一个实施例中,四个事务地址空间可以包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于将数据传送到存储器映射的位置或从存储器映射的位置传送数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如,32位地址)或长地址格式(例如,64位地址)。配置空间事务可以用于访问连接到互连的各种设备的配置空间。针对配置空间的事务可以包括读取请求和写入请求。消息空间事务(或简称为消息)还可以被定义为支持互连代理之间的带内通信。因此,在一个示例实施例中,事务层205可以对分组报头/有效载荷206进行组包。

快速参考图3,示出了事务层分组描述符的示例实施例。在一个实施例中,事务描述符300可以是用于携带事务信息的机制。在这方面,事务描述符300支持对系统中的事务的识别。其他潜在用途包括跟踪对默认事务排序的修改以及事务与信道的关联。例如,事务描述符300可以包括全局标识符字段302、属性字段304和信道标识符字段306。在所示示例中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未完成的请求是唯一的。

根据一种实现方式,本地事务标识符字段308是由请求代理生成的字段,并且其对于对该请求代理而言要求完成的所有未完成的请求可以是唯一的。此外,在该示例中,源标识符310唯一地标识互连层级内的请求者代理。因此,与源ID 310一起,本地事务标识符字段308提供层级域内的事务的全局标识。

属性字段304指定事务的特性和关系。在这方面,属性字段304潜在地用于提供允许修改对事务的默认处理的附加信息。在一个实施例中,属性字段304包括优先级字段312、预留字段314、排序字段316和非监听字段318。这里,优先级子字段312可以由发起者修改以向事务指派优先级。预留属性字段314被预留以供将来使用或供应商定义的使用。可以使用预留属性字段来实现使用优先级或安全性属性的可能使用模型。

在该示例中,排序属性字段316用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示不严格的排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。监听属性字段318用于确定事务是否被监听。如所示出的,信道ID字段306标识事务与其相关联的信道。

返回至图2的讨论,链路层210(也称为数据链路层210)可以用作事务层205与物理层220之间的中间阶段。在一个实施例中,数据链路层210的职责是提供用于在链路上的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组包的TLP,应用分组序列标识符211(即,标识号或分组号),计算并应用错误检测码(即,CRC212),并且将修改后的TLP提交给物理层220以用于跨物理到外部设备的传输。

在一个示例中,物理层220包括逻辑子块221和电子块222,以物理地将分组发送到外部设备。这里,逻辑子块221负责物理层220的“数字”功能。在这方面,逻辑子块可以包括用于准备传出信息以供由物理子块222进行发送的发送部分,以及用于在将接收到的信息传递到链路层210之前识别并准备接收到的信息的接收器部分。

物理块222包括发送器和接收器。发送器由逻辑子块221提供符号,发送器将符号串行化并发送到外部设备上。向接收器提供来自外部设备的串行化符号,并且接收器将接收到的信号变换为比特流。比特流被解串行化并提供给逻辑子块221。在一个示例实施例中,采用8b/10b传输码,其中发送/接收十位符号。这里,特殊符号用于利用帧223将分组组成帧。另外,在一个示例中,接收器还提供从传入的串行流中恢复的符号时钟。

如上面陈述的,虽然参考协议栈的特定实施例(例如,PCIe协议栈)讨论了事务层205、链路层210和物理层220,但是分层协议栈不限于此。实际上,任何分层协议可以被包括/实现,并且适用本文讨论的特征。作为示例,表示为分层协议的端口/接口可以包括:(1)用于对分组进行组包的第一层,即,事务层;用于对分组进行排序的第二层,即,链路层;以及用于传输分组的第三层,即,物理层。作为具体示例,使用如本文描述的高性能互连分层协议。

接下来参考图4,示出了串行点对点结构的示例实施例。串行点对点链路可以包括用于传输串行数据的任何传输路径。在所示的实施例中,链路可以包括两个低电压差分驱动信号对:发送对406/411和接收对412/407。因此,设备405包括用于将数据发送到设备410的发送逻辑406以及用于从设备410接收数据的接收逻辑407。换言之,在链路的一些实现方式中,包括两个发送路径(即,路径416和417)以及两个接收路径(即,路径418和419)。

传输路径指代用于传输数据的任何路径,例如,传输线路、铜线路、光线路、无线通信信道、红外通信链路或其他通信路径。两个设备(例如,设备405和设备410)之间的连接被称为链路,例如,链路415。链路可以支持一个通道——每个通道表示一组差分信号对(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如,1、2、4、8、12、16、32、64或更宽。

差分对可以指代两个传输路径,例如,线路416和417,用于发送差分信号。作为示例,当线路416从低电压电平切换到高电压电平(即,上升沿)时,线路417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地表现出更好的电特性,例如,更好的信号完整性,即,交叉耦合、电压过冲/下冲、振铃以及其他示例优点。这允许更好的定时窗口,其实现更快的传输频率。

Figure BDA0002075165620000081

加速器链路(IAL)或其他技术(例如,GenZ、CAPI)定义了通用存储器接口,其允许与诸如加速器之类的分立设备相关联的存储器用作相干存储器。在许多情况下,分立设备和相关联的存储器可以是连接的卡,或者在与(多个)核心处理器分开的机箱中。引入与设备相关联的相干存储器的结果是设备存储器不会与CPU或平台紧密耦合。不能预期平台特定的固件知晓设备细节。出于模块化和互操作性的原因,存储器初始化职责必须在平台特定的固件和设备特定的固件/软件之间公平划分。

本公开定义了存储器初始化流程和架构接口,其允许设备特定的固件/软件从平台固件抽象化设备特定的初始化步骤。这为设备供应商提供了关于哪个设备特定的实体执行存储器初始化的显著灵活性。初始化可以由设备上的专用微控制器、设备预引导统一可扩展固件接口(UEFI)固件或后操作系统(OS)设备驱动程序来执行。

本公开使用IAL附接的存储器(IAL.mem协议)作为示例实现方式,但是也可以扩展到其他技术,例如,由GenZ联盟或者CAPI或OpenCAPI规范发布的那些技术。IAL建立在PCIe之上,并且加入了对相干存储器附接的支持。然而,一般而言,本文描述的系统、设备和程序可以使用促进相干存储器的附接的其他类型的输入/输出总线。

图5是根据本公开的实施例的包括连接的加速器的处理系统500的示意图。处理系统500可以包括主机处理器501和连接的设备530。连接的设备530可以是跨基于IAL的互连来连接或通过另一类似互连来连接的分立设备。连接的设备530可以与主机处理器501集成在同一机箱内,或者可以容纳在单独的机箱中。

主机处理器501可以包括处理器核心502(标记为CPU 502)。处理器核心502可以包括一个或多个硬件处理器。处理器核心502可以耦合到存储器模块505。存储器模块505可以包括双倍数据速率(DDR)交织存储器,例如,双列直插式存储器模块DIMM1 506和DIMM2508,但是也可以包括更多存储器和/或其他存储器类型。主机处理器501可以包括以硬件、软件或固件中的一个或组合实现的存储器控制器504。存储器控制器504可以包括逻辑电路,用于管理去往以及来自主机处理器501和存储器模块505的数据流。

连接的设备530可以跨互连耦合到主机处理器501。作为示例,连接的设备530可以包括加速器ACC1 532和ACC2 542。ACC1 532可以包括能够控制相干存储器ACC1_MEM 536的存储器控制器MC1 534。ACC2 542可以包括能够控制相干存储器ACC2_MEM 546的存储器控制器MC2 544。连接的设备530可以包括另外的加速器、存储器等。ACC1_MEM 536和ACC2_MEM546可以是主机处理器使用的相干存储器;同样,存储器模块505也可以是相干存储器。ACC1_MEM 536和ACC2_MEM 546可以是或包括主机管理的设备存储器(HDM)。

主机处理器501可以包括用于执行一个或多个存储器初始化过程的软件模块520。软件模块520可以包括操作系统(OS)522、平台固件(FW)524、一个或多个OS驱动程序526以及一个或多个EFI驱动程序528。软件模块520可以包括在体现在非暂时性机器可读介质上的逻辑,并且可以包括当被执行时使一个或多个软件模块对相干存储器ACC1_MEM 536和ACC2_MEM 546进行初始化的指令。

例如,平台固件524可以通过标准硬件寄存器或使用指定供应商特定扩展能力寄存器(DVSEC)在启动期间提前确定相干存储器ACC1_MEM 536和ACC2_MEM 546的大小以及存储器的总特性。平台固件524将设备存储器ACC1_MEM 536和ACC2_MEM 546映射到相干地址空间。设备固件或软件550执行设备存储器初始化并发信号通知平台固件524和/或系统软件520(例如,OS 522)。然后,设备固件550经由软件协议将详细的存储器特性传达到平台固件524和/或系统软件520(例如,OS 522)。

图6是根据本公开的实施例的用于发现附接的相干存储器的过程流程图600。以下过程可以在启动计算系统时由平台固件或其他软件模块执行。在启动时,平台FW可以将与主机处理器核心(CPU)相关联的存储器初始化(602)。

然后,平台固件将发现附接的设备和与附接的设备相关联的存储器(这里称为附接的存储器)的存储器能力(604)。例如,对于支持IAL.mem的附接的设备,连接的设备可以实现主机管理的设备存储器(HDM)。HDM存储器与主机系统相干。平台固件可以确定设备实现了多少主机管理的设备存储器(HDM)范围,并且确定HDM范围中的每个HDM范围的大小。

平台固件可以使用设备提供的信息来确定设备的存储器能力。例如,基于IAL协议的链路可以暴露连接的PCIe设备或功能。PCIe设备/功能携带指定供应商特定扩展能力(DVSEC)寄存器块。表1中提供了DVSEC寄存器块的示例。

表1.DVSEC寄存器块

Figure BDA0002075165620000111

下面描述各种HDM相关的寄存器字段。

Flex能力:报告设备能力

Flex总线锁

Figure BDA0002075165620000113

Flex控制

Figure BDA0002075165620000114

灵活总线范围大小高(1-2副本)

Figure BDA0002075165620000115

灵活总线范围大小低(1-2副本)

Figure BDA0002075165620000121

灵活总线范围基数高(1-2副本)

Figure BDA0002075165620000122

灵活总线范围基数低(1-2副本)

Figure BDA0002075165620000123

如果满足以下两个等式,则具有IAL.mem能力的设备将主机访问指向其本地HDM存储器的地址A:

Memory_Base[63:20]<=(A<<20)<Memory_Base[63:20]+Memory_Size[63:20]

Memory_Active AND Mem_Enable=1

一旦确定了HDM范围和存储器大小,平台固件就可以将HDM范围与CPU附接的存储器一起映射到系统存储器空间(606)。平台固件经由高级配置和电源接口(ACPI)静态资源关系表(SRAT)和异构存储器属性表(HMAT)条目向OS描述设备存储器大小和局部性信息。平台固件将设备EFI驱动程序产生的HMAT片段表与平台信息组合在一起,并且构建ACPIHMAT表以供OS消耗。再次参考图5,图5示出了两个加速器,即ACC1 532和ACC2 542,它们分别经由加速器链路510和512附接到CPU 502。加速器链路510和512可以是IAL、GenZ、CAPI或基于其他协议的链路。CPU 502还具有本地存储器控制器504,并且DIMM1 506和DIMM2 508跨两个通道连接到CPU 502。

为了构造ACPI HMAT,平台固件524将其具有的关于CPU 502和各种CPU链路的信息与其从加速器EFI驱动程序528关于加速器存储器536和546学习到的信息组合。下面提供了示例:

平台固件已知的信息:

DIMM1 506、DIMM2 508大小=128GB;

DDR读取/写入延迟=50ns;

DDR读取/写入带宽=20GB/s/CH;

英特尔AL 510、512延迟=40ns;

英特尔AL 510、512带宽=30GB/s;

英特尔AL 510、512拓扑。

ACC1 532EFI驱动程序经由HMAT片段暴露的信息:

ACC1.MEM 536大小=16GB;

ACC1.MEM 536读取/写入延迟=60ns;

ACC1.MEM 536读取/写入带宽=80GB/s。

ACC2 542EFI驱动程序经由HMAT片段暴露的信息:

ACC2.MEM 546大小=8GB;

ACC2.MEM 546读取/写入延迟=60ns;

ACC2.MEM 546读取/写入带宽=80GB/s。

平台固件524将这些数据组合在一起以构造各种ACPI表。ACPI表的示例在下面示出。HMAT表由系统局部性延迟和带宽信息结构以及存储器子系统地址范围结构组成。

表2.示例SRAT

Figure BDA0002075165620000141

范围 (_PXM)
_SB.PCI.ACC1 1
_SB.PCI.ACC2 2

表3.示例存储器子系统地址范围结构

Figure BDA0002075165620000142

PD=接近度域;PPD=处理器PD;MPD=存储器PD。

表4.系统局部性延迟和带宽信息结构

Figure BDA0002075165620000143

处理器和本地存储器是相同的非均匀存储器访问(NUMA)节点(在ACPI规范中称为“接近度域”)的一部分。每个加速器与单独的仅存储器NUMA节点相关联。这些内容在ACPISRAT表中列出。如果在OS切换时存储器未初始化,则将大小字段设置为0并且将NUMA节点标记为禁用。在这种情况下,OS驱动程序负责初始化设备存储器并通知OS。

与其他PCIe设备类似,_PXM方法可以用于识别加速器PCIe功能与加速器NUMA节点之间的接近度。

系统BIOS通过将英特尔AL延迟和本地存储器访问延迟相加来计算CPU到加速器存储器延迟。链路延迟对于系统BIOS是已知的,并且加速器EFI驱动程序经由HMAT片段报告加速器侧延迟。延迟表中的第0行和第2列示出了样本计算。

CPU到加速器存储器带宽等于英特尔AL带宽或本地存储器带宽,以较低者为准。英特尔AL带宽对于系统BIOS是已知的,并且加速器EFI驱动程序经由HMAT片段报告加速器侧带宽。

平台固件可以指示设备存储器可由处理器缓存(608)。平台固件可以确定附接的存储器是否被初始化(610)。DVSEC寄存器块可以包括指示存储器初始化模式的字段Mem_HwInit_Mode:如果Mem_HwInit_Mode=1,则设备存储器已经被初始化并且可以被使用。如果Mem_HwInit_Mode=0,则执行设备存储器初始化(614)。如果MEM_Active=0,则附接的存储器可以由主机处理器502作为相干存储器进行访问,即使它不能用于存储代码/数据。

图7是根据本公开的实施例的用于对附接的相干存储器进行初始化的过程流程图700。初始化过程可以由设备EFI驱动程序或OS驱动程序执行。直到发生附接的存储器初始化之前,UEFI固件将存储器范围作为“固件预留存储器”进行跟踪。该设备负责在读取时返回全1并且丢弃到HDM范围的写入。

首先,平台固件确定附接的存储器未初始化(例如,通过从DVSEC字段读取Mem_HwInit_Mode=0)(702)。设备驱动程序可以使用用于设备驱动程序固有的初始化过程的或者从设备或系统字段读取的设备特定的信息对附接的存储器进行初始化(704)。驱动程序可以间接地使得Mem_Active字段被置位(706)。驱动程序通过将一个或多个其他字段置位间接地使得Mem_Active字段被置位,这些其他字段提示设备硬件将Mem_Active字段置位。

然后,驱动程序可以使用软件调用向平台固件通知附接的存储器可用于缓存(708)。例如,EFI驱动程序可以调用在UEFI平台初始化规范中定义的SetMemorySpaceAttributes()函数或等效函数。作为另一示例,OS驱动程序可以调用ACPI_DSM(设备特定的方法)。ACPI_DSM过程可以经由诸如针对OS驱动程序的动态硬件分区协议之类的机制和流程关于附加可用存储器通知OS存储器管理器。

在实施例的某些实现方式中,EFI驱动程序可以执行附接的存储器初始化。EFI驱动程序可以向平台固件提供允许平台固件构造存储器映射的信息。

图8示出了根据某些实施例的现场可编程门阵列(FGPA)800。在特定实施例中,压缩引擎108可以由FPGA 800实现(例如,压缩引擎108的功能可以由操作逻辑804的电路实现)。FPGA可以是包括可配置逻辑的半导体器件。可以经由具有任何合适格式的数据结构(例如,比特流)来编程FPGA,该格式定义了如何配置FPGA的逻辑。在FPGA被制造之后,FPGA可能被重新编程任意次数。

在所描绘的实施例中,FPGA 800包括可配置逻辑802、操作逻辑804、通信控制器806和存储器控制器810。可配置逻辑802可以被编程为实现一个或多个内核。内核可以包括FPGA的配置的逻辑,其可以接收一组一个或多个输入,使用配置的逻辑处理该组输入,并且提供一组一个或多个输出。内核可以执行任何合适类型的处理。在各种实施例中,内核可以包括前缀解码器引擎。一些FPGA 800可以限于一次执行单个内核,而其他FPGA能够同时执行多个内核。可配置逻辑802可以包括任何合适的逻辑,例如,任何合适类型的逻辑门(例如,AND门、XOR门)或逻辑门的组合(例如,触发器、查找表、加法器、乘法器、复用器、解复用器)。在一些实施例中,逻辑(至少部分地)通过FPGA的逻辑组件之间的可编程互连来配置。

操作逻辑804可以访问定义内核的数据结构,并且基于数据结构来配置可配置逻辑802,并且执行FPGA的其他操作。在一些实施例中,操作逻辑804可以基于数据结构将控制位写入FPGA800的存储器(例如,非易失性闪速存储器或基于SRAM的存储器),其中控制位操作用于配置逻辑(例如,通过激活或去激活可配置逻辑的部分之间的特定互连)。操作逻辑804可以包括任何合适的逻辑(其可以以可配置逻辑或固定逻辑实现),例如,包括任何合适类型的存储器(例如,随机存取存储器(RAM))的一个或多个存储器设备、一个或多个收发器、时钟电路、位于FPGA上的一个或多个处理器、一个或多个控制器或其他合适的逻辑。

通信控制器806可以使得FPGA 800能够与计算机系统的其他组件(例如,压缩引擎)通信(例如,以接收压缩数据集的命令)。存储器控制器810可以使得FPGA能够从计算机系统的存储器读取数据(例如,操作数或结果)或将该数据写入计算机系统的存储器。在各种实施例中,存储器控制器810可以包括直接存储器访问(DMA)控制器。

处理器核心可以以不同方式实现,用于不同目的,并且可以在不同处理器中实现。例如,这种核心的实现可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用无序核心;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核心。这种不同的处理器导致不同的计算机系统架构,其可以包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中的分开的管芯上;3)协处理器在与CPU相同管芯片上(在这种情况下,这种协处理器有时被称为专用逻辑,例如,集成图形和/或科学(吞吐量)逻辑,或称为专用核心);以及4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为(多个)应用核心或(多个)应用处理器)、上面描述的协处理器和附加功能。接下来描述示例性核心架构,随后描述示例性处理器和计算机架构。

图9是根据各种实施例的可以具有多于一个核心、可以具有集成存储器控制器并且可以具有集成图形的处理器900的框图。图9中的实线框示出了具有单个核心902A、系统代理910和一组一个或多个总线控制器单元916的处理器900;而虚线框的可选添加示出了具有多个核心902A-N、系统代理单元910中的一组一个或多个集成存储器控制器单元914以及专用逻辑908的替代处理器900。

因此,处理器900的不同实现方式可以包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),并且核心902A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心或两者的组合);2)协处理器,其中核心902A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核心;3)协处理器,其中核心902A-N是大量通用有序核心。因此,处理器900可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核心(MIC)协处理器(例如,包括30个或更多个核心)、嵌入式处理器或执行逻辑操作的其他固定逻辑或可配置逻辑。处理器可以在一个或多个芯片上实现。处理器900可以是使用多种工艺技术(例如,BiCMOS、CMOS或NMOS)中的任何工艺技术的一个或多个衬底的一部分,和/或可以在使用多种工艺技术中的任何工艺技术的一个或多个衬底上实现。

在各种实施例中,处理器可以包括任何数量的处理元件,这些处理元件可以是对称或不对称的。在一个实施例中,处理元件指代支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保持处理器的状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作系统、应用或其他代码)相关联的任何硬件。物理处理器(或处理器插座)典型地指代集成电路,其潜在地包括任何数量的其他处理元件,例如,核心或硬件线程。

核心可以指代位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看出的,当共享某些资源而其他资源专用于架构状态时,硬件线程与核心的命名之间的界限重叠。但是经常地,操作系统将核心和硬件线程视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。

存储器层级包括核心内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元906以及耦合到该组集成存储器控制器单元914的外部存储器(未示出)。该组共享高速缓存单元906可以包括一个或多个中间级别高速缓存,例如,级别2(L2)、级别3(L3)、级别4(L4)或其他级别的高速缓存、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连单元912互连专用逻辑(例如,集成图形逻辑)908、该组共享高速缓存单元906以及系统代理单元910/(多个)集成存储器控制器单元914,但是替代实施例可以使用任何数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元906与核心902A-N之间维持相干性。

在一些实施例中,核心902A-N中的一个或多个核心能够是多线程的。系统代理910包括协调和操作核心902A-N的那些组件。系统代理单元910可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心902A-N和专用逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

就架构指令集而言,核心902A-N可以是同构的或异构的;即,核心902A-N中的两个或更多个核心能够执行相同的指令集,而其他核心仅能够执行该指令集的子集或不同的指令集。

图10-14是示例性计算机架构的框图。用于膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的本领域已知的其他系统设计和配置也适用于执行本公开中描述的方法。通常,能够包含如本文公开的处理器和/或其他执行逻辑的各种系统或电子设备通常是合适的。

图10描绘了根据本公开的一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,其耦合到控制器中心1020。在一个实施例中,控制器中心1020包括图形存储器控制器中心(GMCH)1090和输入/输出中心(IOH)1050(其可以在分开的芯片上或在同一芯片上);GMCH 1090包括耦合到存储器1040和协处理器1045的存储器控制器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH 1090。可替代地,存储器控制器和图形控制器中的一者或两者集成在处理器内(如本文描述的),存储器1040和协处理器1045直接耦合到处理器1010,并且控制器中心1020是包括IOH 1050的单个芯片。

附加处理器1015的可选性质在图10中用短划线表示。每个处理器1010、1015可以包括本文描述的处理核心中的一个或多个处理核心,并且可以是处理器900的某个版本。

存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、其他合适的存储器或其任何组合。存储器1040可以存储任何合适的数据,例如,由处理器1010、1015用来提供计算机系统1000的功能的数据。例如,与执行的程序相关联的数据或者由处理器1010、1015访问的文件可以存储在存储器1040中。在各种实施例中,存储器1040可以存储由处理器1010、1015使用或执行的数据和/或指令序列。

在至少一个实施例中,控制器中心1020经由诸如前端总线(FSB)之类的多点总线、诸如快速路径互连(QPI)之类的点对点接口或类似的连接1095与(多个)处理器1010、1015通信。

在一个实施例中,协处理器1045是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心1020可以包括集成图形加速器。

就包括架构特性、微架构特性、热特性、功耗特性等在内的优点的度量范围而言,物理资源1010、1015之间可能存在各种差异。

在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为属于应由附接的协处理器1045执行的类型。因此,处理器1010在协处理器总线或其他互连上向协处理器1045发布这些协处理器指令(或表示协处理器指令的控制信号)。(多个)协处理器1045接受并执行接收到的协处理器指令。

图11描绘了根据本公开的实施例的更具体的第一示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是处理器的某个版本。在公开内容的一个实施例中,处理器1170和1180分别是处理器1110和1115,而协处理器1138是协处理器1145。在另一实施例中,处理器1170和1180分别是处理器1110和协处理器1145。

示出处理器1170和1180分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括点对点(P-P)接口1176和1178,作为其总线控制器单元的一部分;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以使用P-P接口电路1178、1188经由点对点(P-P)接口1150交换信息。如图11所示,IMC 1172和1182将处理器耦合到相应的存储器,即,存储器1132和存储器1134,它们可以是本地附接到相应的处理器的主存储器的部分。

处理器1170、1180可以各自使用点对点接口电路1176、1194、1186、1198经由各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器等。

共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外但是经由P-P互连与处理器连接,使得如果任一个处理器或两个处理器被置于低功率模式,则处理器的本地高速缓存信息可以存储在共享高速缓存中。

芯片组1190可以经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是***组件互连(PCI)总线,或者诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。

如图11所示,各种I/O设备1114可以连同总线桥1118一起耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1120,这些设备包括例如键盘和/或鼠标1122、通信设备1127和可以包括指令/代码和数据1130的诸如磁盘驱动器或其他大容量存储设备之类的存储单元1128。此外,音频I/O1124可以耦合到第二总线1120。注意,本公开设想到其他架构。例如,代替图11的点对点架构,系统可以实现多点总线或其他这样的架构。

图12描绘了根据本公开的实施例的更具体的第二示例性系统1200的框图。图11和图12中的相似元件具有相似的附图标记,并且图12中省略了图11的某些方面,以避免模糊图12的其他方面。

图12示出了处理器1270、1280可以分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元并且包括I/O控制逻辑。图12示出了不仅存储器1232、1234耦合到CL 1272、1282,而且I/O设备1214也耦合到控制逻辑1272、1282。传统I/O设备1215耦合到芯片组1290。

图13描绘了根据本公开的实施例的SoC 1300的框图。此外,虚线框是更高级的SoC上的可选特征。在图13中,(多个)互连单元1302耦合到:应用处理器1310,其包括一组一个或多个核心1002A-N和(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组或一个或多个协处理器1320,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器访问(DMA)单元1332;以及显示单元1340,其用于耦合到一个或多个外部显示器。在一个实施例中,(多个)协处理器1320包括专用处理器,例如,网络或通信处理器、压缩和/或解压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。

在一些情况下,指令变换器可以用于将指令从源指令集变换为目标指令集。例如,指令变换器可以将指令转换(例如,使用静态二进制转换,包括动态编译的动态二进制转换)、变形、模拟或以其他方式变换为要由核心处理的一个或多个其他指令。指令变换器可以以软件、硬件、固件或其组合来实现。指令变换器可以在处理器上,在处理器外,或者部分在处理器上而部分在处理器外。

图14是根据公开内容的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换为目标指令集中的二进制指令的框图。在所示实施例中,指令变换器是软件指令变换器,但是可替代地,指令变换器可以以软件、固件、硬件或其各种组合来实现。图14示出了可以使用x86编译器1404来编译高级语言1402形式的程序,以生成可以由具有至少一个x86指令集核心的处理器1416在本地执行的x86二进制代码1406。具有至少一个x86指令集核心的处理器1416表示任何这样的处理器:能够通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的大部分或(2)以在具有至少一个x86指令集核心的英特尔处理器上运行为目标的应用或其他软件的目标代码版本,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能。x86编译器1404表示可操作以用于生成x86二进制代码1406(例如,目标代码)的编译器,该x86二进制代码1406可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核心的处理器1416上执行。类似地,图14示出了可以使用替代指令集编译器1408来编译高级语言1402形式的程序,以生成可以由不具有至少一个x86指令集核心的处理器1414(例如,具有执行MFS Technologies(Sunnyvale,CA)的MIPS指令集和/或执行ARM Holdings(Sunnyvale,CA)的ARM指令集的核心的处理器)在本地执行的替代指令集二进制代码1410。指令变换器1412用于将x86二进制代码1406变换为可以由不具有x86指令集核心的处理器1414在本地执行的代码。该变换后的代码不太可能与替代指令集二进制代码1410相同,因为能够做到这一点的指令变换器很难实现;然而,变换后的代码将完成一般操作,并且由来自替代指令集的指令组成。因此,指令变换器1412表示通过模拟、仿真或任何其他过程来允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1406的软件、固件、硬件或其组合。

设计可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以以多种方式来表示设计。首先,如在仿真中有用的,可以使用硬件描述语言(HDL)或另一种功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中各种设备的物理放置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定用于产生集成电路的掩模在不同掩模层上存在或不存在各种特征的数据。在一些实现方式中,这样的数据可以以诸如图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)之类的数据库文件格式或类似格式来存储。

在一些实现方式中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括寄存器传输语言(RTL)文件以及其他示例。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),针对所描述的硬件的属性解析HDL对象,以及根据对象来确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以根据HDL对象来确定各种硬件和/或固件元件的配置,例如,总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及被实现以便实现在HDL对象中建模的系统的其他属性。设计工具可以包括用于确定片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些实例中,HDL对象可以用作开发可以由制造设备用于制造所描述的硬件的模型和设计文件的基础。实际上,HDL对象本身可以作为输入提供给制造系统软件,以使得制造所描述的硬件。

在设计的任何表示中,表示设计的数据可以存储在任何形式的机器可读介质中。诸如盘之类的存储器或者磁性或光学存储装置可以是这样的机器可读介质:用于存储经由光波或电波传输的信息,该光波或电波被调制或以其他方式生成以传输这样的信息。当传输指示或携带代码或设计的电载波时,就执行对电信号的复制、缓冲或重传而言,做出新的副本。因此,通信提供商或网络提供商可以至少临时地在有形的机器可读介质上存储物品(例如,编码成载波、体现本公开的实施例的技术的信息)。

在各种实施例中,可以将存储设计的表示的介质提供给制造系统(例如,能够制造集成电路和/或相关组件的半导体制造系统)。设计表示可以指示系统制造能够执行上面描述的功能的任何组合的设备。例如,设计表示可以关于要制造哪些组件、组件应该如何耦合在一起、组件应该放置在设备上的位置和/或关于与要制造的设备有关的其他合适的规范来指示系统。

因此,至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,其在由机器读取时使得机器制造用于执行本文描述的技术的逻辑。经常称为“IP核心”的这种表示可以存储在非暂时性有形机器可读介质上,并且提供给各种客户或制造设施,以加载到制造逻辑或处理器的制造机器中。

本文公开的机制的实施例可以以硬件、软件、固件或这些实现方法的组合来实现。公开内容的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

诸如图11中所示的代码1130之类的程序代码可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。

程序代码可以以高级过程编程语言或面向对象的编程语言实现,以与处理系统通信。如果需要,程序代码还可以以汇编语言或机器语言实现。实际上,本文描述的机制的范围不限于任何特定编程语言。在各种实施例中,语言可以是编译语言或解释语言。

上面阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在能够由处理元件执行(或能够以其他方式访问)的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。机器可访问/可读介质包括以机器(例如,计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,机器可访问介质包括随机存取存储器(RAM),例如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电存储设备;光学存储设备;声学存储设备;用于保持从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备等,这些介质与可以从其接收信息的非暂时性介质区分开。

用于将逻辑编程为执行公开内容的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其他存储装置)内。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器,或者用于经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。

逻辑可以用于实现各种组件的功能中的任何功能。“逻辑”可以指代硬件、固件、软件和/或其中每个的组合,以用于执行一个或多个功能。作为示例,逻辑可以包括诸如微控制器或处理器之类的与非暂时性介质相关联的硬件,该非暂时性介质用于存储适于由微控制器或处理器执行的代码。因此,在一个实施例中,对逻辑的引用指代特别地配置为识别和/或执行要保留在非暂时性介质上的代码的硬件。此外,在另一实施例中,逻辑的使用指代包括代码的非暂时性介质,该代码特别适于由微控制器执行以执行预定的操作。并且如可以推断的,在又一实施例中,术语逻辑(在该示例中)可以指代硬件和非暂时性介质的组合。在各种实施例中,逻辑可以包括可操作以用于执行软件指令的微处理器或其他处理元件、诸如专用集成电路(ASIC)之类的分立逻辑、诸如现场可编程门阵列(FPGA)之类的编程逻辑器件、包含指令的存储器设备、逻辑器件的组合(例如,如可以在印刷电路板上找到的)或其他合适的硬件和/或软件。逻辑可以包括一个或多个门或其他电路组件,其可以由例如晶体管实现。在一些实施例中,逻辑还可以完全体现为软件。软件可以体现为记录在非暂时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以体现为在存储器设备中被硬编码(例如,非易失性)的代码、指令或指令集和/或数据。经常,被示为分离的逻辑边界通常变化并且潜在地重叠。例如,第一逻辑和第二逻辑可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。

在一个实施例中,短语“用于”或“被配置为”的使用指代对装置、硬件、逻辑或元件进行布置、放置在一起、制造、提供销售、导入和/或设计,以执行指定的任务或确定的任务。在该示例中,如果装置或其元件被设计、耦合和/或互连以执行指定的任务,则未***作的装置或其元件仍“被配置为”执行所述指定的任务。作为纯粹说明性示例,逻辑门可以在操作期间提供0或1。但是逻辑门“被配置为”向时钟提供使能信号不包括每个潜在逻辑门可以提供1或0。相反,逻辑门是以某种方式耦合的,在操作期间1或0输出用于使能时钟。再次注意,术语“被配置为”的使用不要求操作,而是关注于装置、硬件和/或元件的隐藏状态,其中在隐藏状态下,装置、硬件和/或元件被设计用于在装置、硬件和/或元件操作时执行特定任务。

此外,在一个实施例中,短语“能够/能够用于”和/或“可操作用于”的使用指代一些装置、逻辑、硬件和/或元件以这样的方式设计:使得能够以指定的方式使用装置、逻辑、硬件和/或元件。注意,如上面在一个实施例中对用于、能够用于或可操作用于的使用指代装置、逻辑、硬件和/或元件的隐藏状态,其中装置、逻辑、硬件和/或元件不操作但以这种方式设计为使得能够以指定方式使用装置。

如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为1和0的使用,其仅表示二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。然而,已经在计算机系统中使用值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括在计算机系统中能够保存的信息的任何表示。

此外,状态可以由值或值的部分表示。作为示例,第一值(例如,逻辑一)可以表示默认或初始状态,而第二值(例如,逻辑零)可以表示非默认状态。另外,在一个实施例中,术语复位和置位分别指默认值或状态和更新的值或状态。例如,默认值潜在地包括高逻辑值(即,复位)而更新的值潜在地包括低逻辑值(即,置位)。注意,可以使用值的任何组合来表示任何数量的状态。

系统、方法、计算机程序产品和装置可以包括以下示例中的一个或组合:

示例1是一种装置,包括:处理器核心;用于缓存数据的处理器存储器;以及平台固件,其用于:确定设备跨存储器链路接口被连接到处理器核心;确定该设备包括附接的存储器单元;确定可用于处理器核心的附接的存储器单元的至少一部分的范围;将附接的存储器单元的该部分的范围映射到处理器存储器;并且其中:处理器核心用于使用特定附接的存储器单元的该部分的范围和处理器存储器来缓存数据。

示例2可以包括示例1的主题,还包括用于将处理器核心与附接的存储器单元耦合的存储器链路接口,其中,存储器链路接口包括符合英特尔加速器链路(IAL)协议、基于GenZ的协议或基于CAPI的协议中的一个的链路。

示例3可以包括示例1-2中任一项的主题,平台固件用于从附接的设备接收能力寄存器块,并且其中,平台固件用于根据能力寄存器块来确定附接的存储器的至少一部分的范围。

示例4可以包括示例3的主题,其中,能力寄存器块是指定供应商特定扩展能力(DVSEC)寄存器块。

示例5可以包括示例1-4中任一项的主题,平台固件用于利用从设备接收的信息或从与设备相关联的可扩展固件接口(EFI)驱动程序接收的信息来构造一个或多个高级配置和电源接口(ACPI)表。

示例6可以包括示例5的主题,其中,一个或多个ACPI表包括静态资源关系表(SRAT)或异构存储器属性表(HMAT)中的一个或两个。

示例7可以包括示例6的主题,其中,HMAT表包括系统局部性延迟和带宽信息结构以及存储器子系统地址范围结构。

示例8可以包括示例7的主题,其中,系统局部性延迟和带宽信息结构包括附接的存储器的带宽和延迟信息。

示例9可以包括示例7的主题,其中,存储器子系统地址范围结构包括指示附接的存储器的系统物理地址(SPA)基数和可用于处理器核心的附接的存储器空间的长度的字段。

示例10可以包括示例1-8的主题,平台固件用于确定附接的存储器未被初始化;并且使附接的存储器被初始化。

示例11是至少一种非暂时性机器可访问存储介质,其上存储有指令,该指令当在机器上执行时,使机器进行以下操作:通过与设备相关联的驱动程序确定存在跨链路连接到主机处理器的设备;确定该设备包括相干存储器;向主机处理器提供关于相干存储器的一个或多个属性,以将相干存储器映射到系统存储器;确定相干存储器未被初始化;以及将相干存储器初始化以供主机处理器使用,主机处理器用于使用该设备的相干存储器和系统存储器来存储数据。

示例12可以包括示例11的主题,其中,指令包括与设备相关联的可扩展固件接口(EFI)驱动程序。

示例13可以包括示例12的主题,其中,指令在被执行时使机器向平台固件提供相干存储器的一个或多个带宽或延迟属性,以构造一个或多个高级配置和电源接口(ACPI)表。

示例14可以包括示例13的主题,其中,一个或多个ACPI表包括异构存储器属性表(HMAT)或非易失性双列直插式存储器模块固件接口表(NFIT)中的一个或多个。

示例15可以包括示例11-14中任一项的主题,其中,指令在被执行时使机器使用在基于EFI的初始化协议中定义的软件调用向平台固件通知相干存储器是可用的。

示例16可以包括示例11-15中任一项的主题,其中,指令包括与设备相关联的操作系统驱动程序。

示例17可以包括示例16的主题,其中,指令在被执行时使机器使用根据操作系统驱动程序确定的一个或多个设备特定的方法向平台固件通知相干存储器是可用的。

示例18是一种系统,包括:主机处理器,该主机处理器包括一个或多个硬件处理器核心;用于缓存数据的系统存储器;通过链路连接到主机处理器的设备;与设备相关联的相干存储器;以及平台固件,其用于:在系统启动时发现设备;确定相干存储器的一个或多个属性;以及将相干存储器的至少一部分与系统存储器一起映射到地址空间;并且主机处理器用于使用系统存储器和相干存储器来缓存数据。

示例19可以包括示例18的主题,其中,设备包括至少部分地以硬件实现的加速器电路,该加速器电路用于针对主机处理器提供处理加速。

示例20可以包括示例19的主题,还包括将加速器耦合到主机处理器的加速器链路。

示例21可以包括示例20的主题,其中,加速器链路符合基于英特尔加速器链路(IAL)的协议、基于GenZ的协议或基于CAPI的协议中的一个。

示例22可以包括示例18-21中任一项的主题,其中,相干存储器包括主机管理的设备存储器(HDM)。

示例23可以包括示例18-22中任一项的主题,平台固件用于:从设备接收能力寄存器块,该能力寄存器块指示相干存储器的一个或多个属性;根据能力寄存器块来确定可用于主机处理器的存储器大小和地址范围;以及将可用于主机处理器的存储器大小和地址范围与系统存储器一起映射到地址空间。

示例24可以包括示例23的主题,该平台固件用于:基于在能力寄存器块中接收的属性来构造一个或多个高级配置和电源接口表;以及使用一个或多个ACPI表将存储器大小和地址范围映射到地址空间。

示例25可以包括示例18-24的主题,还包括与设备相关联的设备驱动程序,该设备驱动程序用于:对相干存储器进行初始化;以及向平台固件提供关于相干存储器的一个或多个高级配置和电源接口(ACPI)表数据片段,以促进构造一个或多个ACPI表。

示例26是一种用于配置相干存储器的方法,该方法由主机处理器的平台固件执行,该方法包括:确定设备跨存储器链路接口被连接到主机处理器;确定该设备包括附接的存储器单元;确定可用于主机处理器的附接的存储器单元的至少一部分的范围;将附接的存储器单元的该部分的范围映射到处理器存储器;并且其中,主机处理器使用特定附接的存储器单元的该部分的范围和处理器存储器来缓存数据。

示例27是一种装置,包括:用于确定设备跨存储器链路接口被连接到主机处理器的模块;用于确定该设备包括附接的存储器单元的模块;用于确定可用于主机处理器的附接的存储器单元的至少一部分的范围的模块;用于将附接的存储器单元的该部分的范围映射到处理器存储器的模块;以及用于使主机处理器使用特定附接的存储器单元的该部分的范围和处理器存储器来缓存数据的模块。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于将高速缓存行降级到共享高速缓存的技术

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类