通过PCIe的一致性存储器设备的制作方法

文档序号:17319765发布日期:2019-04-05 21:28阅读:276来源:国知局
通过PCIe的一致性存储器设备的制作方法

本公开一般涉及互连设备领域,并且更具体地但非排他地,涉及用于通过外围组件互连快速(pcie)的一致性存储器设备的系统和方法。



背景技术:

计算系统包括用于管理对处理器资源的需求的各种组件。例如,开发器可以包括可操作地耦合到中央处理单元(cpu)的硬件加速器(或“加速器”)。通常,加速器是被配置为执行由cpu委托给它的功能的自主元件。加速器可以被配置用于特定功能和/或可以是可编程的。例如,加速器可以被配置为执行特定计算、图形功能和/或其他。当加速器执行指定的功能时,cpu可以自由地将资源用于其他需求。在常规系统中,操作系统(os)可以管理计算系统内可用的物理存储器(例如,“系统存储器”);但是,os不管理或分配加速器本地的存储器。结果,诸如高速缓存一致性的存储器保护机制将低效率引入基于加速器的配置中。例如,常规的高速缓存一致性机制限制了加速器以非常高的带宽访问其附接的本地存储器的能力和/或限制了针对加速器的部署选项。

附图说明

当结合附图阅读时,从以下详细描述中可以最好地理解本公开。需要强调的是,根据工业中的标准实践,各种特征不一定按比例绘制,并且仅用于说明目的。在明确地或隐含地示出比例的情况下,它仅提供一个说明性示例。在其他实施例中,为了讨论的清楚起见,可以任意增加或减少各种特征的尺寸。

图1示出了根据本说明书的一个或多个示例的可以代表各种实施例的示例操作环境。

图2a示出了根据本说明书的一个或多个示例的完全一致性操作环境的示例。

图2b示出了根据本说明书的一个或多个示例的非一致性操作环境的示例。

图2c示出了根据本说明书的一个或多个示例的没有偏置操作环境的一致性引擎的示例。

图3示出了根据本说明书的一个或多个示例的可以代表各种实施例的操作环境的示例。

图4示出了根据本说明书的一个或多个示例的可以代表各种实施例的另一示例操作环境。

图5a和5b示出了根据本说明书的一个或多个示例的可以代表各种实施例的其他示例操作环境。

图6示出了根据本说明书的一个或多个示例的逻辑流程的实施例。

图7是示出根据本说明书的一个或多个示例的结构的框图。

图8是示出根据本说明书的一个或多个示例的方法的流程图。

图9是根据本说明书的一个或多个示例的通过pcie操作的加速器链路存储器(ial.mem)读取的框图。

图10是根据本说明书的一个或多个示例的通过pcie操作的ial.mem写入的框图。

图11是根据本说明书的一个或多个示例的通过pcie操作的ial.mem数据完成的框图。

图12示出了根据本说明书的一个或多个示例的由互连一组部件的点对点链路组成的结构的实施例。

图13示出了根据本说明书的一个或多个实施例的分层协议栈的实施例。

图14示出了根据本说明书的一个或多个示例的pcie事务描述符的实施例。

图15示出了根据本说明书的一个或多个示例的pcie串行点对点结构的实施例。

具体实施方式

本说明书的加速器链路(ial)是rosetta链路(r-link)多芯片封装(mcp)互连链路的扩展。ial扩展了r-link协议,使其能够支持基线r-link或外围组件互连快速(pcie)协议可能无法充分支持的加速器和输入/输出(io)设备。

以下公开内容提供了用于实现本公开的不同特征的许多不同实施例或示例。以下描述组件和布置的具体示例以简化本公开。当然,这些仅仅是示例,而不是想要限制。此外,本公开可以在各种示例中重复参考数字和/或字母。该重复是为了简单和清楚的目的,并且其本身并不表示所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优点,并且特定的优点对于任何实施例都不是必须的。

在以下描述中,阐述了许多具体细节,例如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、具体的测量/高度、特定的处理器管线阶段和操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,不需要采用这些具体细节来实施本发明。

在其他情况下,没有详细描述众所周知的组件或方法,诸如特定和替代处理器体系结构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、代码中的算法的具体表达、特定的断电和门控技术/逻辑以及计算机系统的其他特定操作细节,以避免不必要地模糊本发明。

尽管可以参考特定集成电路中的节能和能量效率来描述以下实施例,例如在计算平台或微处理器中,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体器件,其也可以受益于更好的能量效率和节能。例如,所公开的实施例不限于台式计算机系统或ultrabookstm,并且还可以用于其他设备,例如手持设备、平板电脑、其他薄笔记本、片上系统(soc)设备和嵌入式应用。

手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(pda)和手持个人计算机(pc)。嵌入式应用通常包括微控制器、数字信号处理器(dsp)、片上系统(soc)、网络个人计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机或任何其他可以执行下面教导的功能和操作的系统。此外,这里描述的装置、方法和系统不限于物理计算设备,还可以涉及用于节能和效率的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件或其组合)对于与性能考虑平衡的“绿色技术”未来是至关重要的。

各种实施例通常可以涉及用于在处理系统内的多个组件之间提供高速缓存一致性的技术。在一些实施例中,多个组件可以包括处理器,例如中央处理单元(cpu),以及通信地耦合到处理器的逻辑设备。在各种实施例中,逻辑设备可以包括本地附接存储器。在一些实施例中,多个组件可包括通信地耦合到具有本地附接存储器(例如,逻辑设备存储器)的加速器的处理器。

在一些实施例中,处理系统可以操作一致性偏置过程,该一致性偏置过程被配置为提供多个高速缓存一致性过程。在一些实施例中,多个高速缓存一致性过程可以包括设备偏置过程和主机偏置过程(统称为“偏置协议流”)。在一些实施例中,主机偏置过程可以通过处理器的一致性组件将请求路由到逻辑设备的本地附接存储器,包括来自逻辑设备的请求。在一些实施例中,设备偏置过程可以将逻辑设备存储器的逻辑设备请求直接路由到逻辑设备存储器,例如,无需咨询处理器的一致性组件。在各种实施例中,高速缓存一致性过程可基于使用应用软件、硬件提示、其组合和/或其他确定的偏置指示符在设备偏置过程和主机偏置过程之间切换。实施例不限于此上下文。

本说明书中描述的ial使用优化的加速器协议(oap),其是r-linkmcp互连协议的进一步扩展。在一个示例中可以使用ial来向加速器设备提供互连结构(在一些示例中,加速器设备可以是执行例如图形处理、密集计算、smartnic服务或类似处理的重型加速器。加速器可以具有其自己的附接的加速器存储器,并且诸如ial的互连结构或者在一些实施例中基于pcie的结构可以用于将处理器附接到加速器。互连结构可以是一致性加速器结构,在这种情况下,加速器存储器可以映射到主机设备的存储器地址空间。一致性加速器结构可以在加速器内以及加速器和主机设备之间保持一致性。这可用于为这些类型的加速器实现最先进水平的存储器和一致性支持。

有利地,根据本说明书的一致性加速器结构可以提供提高效率和产量的优化。例如,加速器可以具有一定数量的n存储体,其中相应的n个最后一级高速缓存(llc)中的每个由llc控制器控制。该结构可以提供不同种类的互连以将加速器及其高速缓存连接到存储器,并将结构连接到主机设备。

作为说明,在整个本说明书中,连接具有相同性质的设备的总线或互连被称为“水平”互连,而连接上游和下游的不同设备的互连或总线可被称为“垂直”互连。这里使用的术语“水平”和“垂直”仅仅是为了方便,并不想要暗示互连或总线的任何必要的物理布置,或者要求它们必须在管芯上彼此物理上正交。

例如,加速器可以包括8个存储体,具有相应的8个llc,其可以是3级(l3)高速缓存,每个都由llc控制器控制。一致性加速器结构可以被划分为多个独立的“片”。每个片服务于存储体及其对应的llc,并且基本上独立于其他片操作。在示例中,每个片可以利用ial提供的偏置操作,并提供到存储体的并行路径。涉及主机设备的存储器操作可以通过结构一致性引擎(fce)来路由,该结构一致性引擎提供与主机设备的一致性。然而,任何单独的片的llc也可以具有直接向存储器写入的并行旁路路径,其将llc直接连接到存储体,旁路fce。例如,这可以通过在llc控制器本身中提供偏置逻辑(例如,主机偏置或加速器偏置)来实现。llc控制器可以在物理上与fce分离,并且在垂直取向上可以在fce的上游,从而使加速器偏置存储器操作能够旁路fce并直接向存储体写入。

本说明书的实施例还可以通过提供功率管理器来实现显著的功率节省,所述功率管理器在一致性结构的部分不使用时选择性地关闭它们。例如,加速器可以是非常大带宽的加速器,其可以每秒执行许多操作。当加速器正在执行其加速功能时,它正在大量使用结构并且需要极高的带宽,以便计算出的值一旦它们被计算则可以及时被冲洗到存储器。但是,一旦计算完成,主机设备可能还没有准备好消耗数据。在这种情况下,互连的部分,例如从fce到llc控制器的垂直总线,以及llc控制器和llc本身之间的水平总线可以断电。这些可以保持断电,直到加速器接收要操作的新数据。

下表说明了几类加速器。请注意,基线r-link可以仅支持前两类加速器,而ial可以支持所有五类加速器。

注意,除了生产者-消费者之外,这些加速器的实施例可能需要某种程度的高速缓存一致性来支持使用模型。因此,ial是一致性加速器链路。

ial使用动态复用到公共链路上的三种协议的组合来实现上面公开的加速器模型。这些协议包括:

片上系统结构(iosf)-重新格式化的基于pcie的互连,提供非一致性有序语义协议。iosf可以包括pcie标准的全部或部分的片上实现。iosf将pcie业务打包,以便将其发送到配套芯片,例如片上系统(soc)或多芯片模块(mcm)。iosf支持设备发现,设备配置,错误报告,中断,直接存储器访问(dma)式的数据传输,以及作为pcie标准的一部分提供的各种服务。

●管芯内互连(idi)-使设备能够向处理器发出一致性读取和写入请求。

●可扩展存储器互连(smi)-使处理器能够访问附接到加速器的存储器。

这三种协议可以以不同的组合使用(例如,仅iosf、iosf加idi、iosf加idi加smi、iosf加smi)以支持上表中描述的各种模型。

作为基线,ial提供单个链路或总线定义,其可以通过前述协议的组合覆盖所有五个加速器模型。请注意,生产者-消费者(producer-consumer)加速器本质上是pcie加速器。它们只需要iosf协议,该协议已经是pcie的重新格式化版本。iosf支持一些加速器接口体系结构(aia)操作,例如支持入队(enq)指令,行业标准pcie设备可能不支持这些。因此,iosf为这类加速器提供了pcie上的附加值。生产者-消费者加(producer-consumerplus)加速器是可以仅使用ial的idi层和iosf层的加速器。

在一些实施例中,软件辅助设备存储器和自主设备存储器可以在ial上需要smi协议,包括在smi上包括特殊操作代码(操作码)以及对与处理器中的那些操作码相关联的流的特殊控制器支持。这些添加支持ial的一致性偏置模型。用法可以使用所有的iosf、idi和smi。

巨型高速缓存用法也使用iosf、idi和smi,但是也可以向专门设计用于巨型高速缓存加速器(即,未在以上所讨论的设备存储器模型中使用)的idi和smi协议添加新的限定符。巨型高速缓存可以在处理器中添加新的特殊控制器支持,这是任何其他用法都不需要的。

ial将这三个协议称为ial.io、ial.cache和ial.mem。这三种协议的组合为五种加速器模型提供了所需的性能益处。

为了实现这些益处,ial可以使用r-link(用于mcp)或flexbus(用于分立)物理层来允许io、高速缓存和mem协议的动态多路复用。

然而,一些形状因子本身不支持r-link或flexbus物理层。特别是,3级和4级设备存储器加速器可能不支持r-link或flexbus。这些的现有示例可以使用标准pcie,其将设备限制为专用存储器模型,而不是提供可以映射到主机设备的回写存储器地址空间的一致性存储器。此模型受到限制,因为附接到设备的存储器因此无法通过软件直接寻址。这可能导致在带宽受限的pcie链路上主机和设备存储器之间的数据编组不理想。

因此,本说明书的实施例提供了遵循由ial定义的相同的基于偏置模型的定义的一致性语义,其保留了一致性的益处而不蒙受传统的开销。所有这些都可以通过现有的pcie物理链路提供。

因此,ial的一些优点可以在物理层上实现,物理层不提供由r-link和flexbus提供的io、高速缓存和mem协议之间的动态多路复用。有利地,对于某些类别的设备启用在pcie上的ial协议降低了使用物理pcie链路的设备的生态系统的进入负担。它可以利用现有的pcie基础设施,包括使用现成的组件,如交换机、根端口和端点。这还允许使用常规的专用存储器模型或适合于安装设施的一致性系统可寻址存储器模型,更容易地跨平台使用具有附接存储器的设备。

为了支持如上所述的3类和4类设备(软件辅助存储器和自主设备存储器),ial的组件可以如下映射:

iosf或ial.io可以使用标准pcie。这可用于设备发现、枚举、配置、错误报告、中断和dma式数据传输。

smi或ial.mem可以在pcie上使用smi隧道。下面描述在pcie上的smi隧道的细节,包括下面的图9、10和11中描述的隧道。

在本说明书的某些实施例中不支持idi或ial.cache。idi使设备能够向主机存储器发出一致性读取或写入请求。尽管可能不支持ial.cache,但是这里公开的方法可以用于实现设备附接存储器的基于偏置的一致性。

为了实现该结果,加速器设备可以将其标准pcie存储器基地址寄存器(bar)区域之一用于其附接存储器的大小。为此,设备可以实现指定的供应商特定的扩展能力(dvsec),类似于标准ial,以指向应该映射到一致性地址空间的bar区域。此外,dvsec可以声明诸如存储器类型、等待时间和其他属性的附加信息,这些信息有助于基本输入/输出系统(bios)将该存储器映射到一致性区域中的系统地址解码器。然后,bios可以对存储器基进行编程并限制设备中的主机物理地址。

这允许主机使用标准pcie存储器读(mrd)操作码来读取设备附接存储器。

然而,对于写入,可能需要非发布语义,因为在完成时可能需要对元数据的访问。要在pcie上获得npmwr,可以使用以下保留编码:

●fmt[2:0]-011b

●type[4:0]-11011b

在pcie上使用新颖的非发布存储器写入(npmwr)具有使aiaenq指令能够高效地向设备提交工作的额外益处。

为了实现最佳服务质量,本说明书的实施例可以实现三个不同的虚拟通道(vc0、vc1和vc2)以分离不同的业务类型,如下:

●vc0→所有存储器映射输入/输出(mmio)和配置(cfg)业务,既有上游也有下游

●vc1→ial.mem写入(从主机到设备)

●vc2→ial.mem读取(从主机到设备)

注意,因为不支持ial.cache或idi,所以本说明书的实施例可能不允许加速器设备向主机存储器发出一致性读取或写入。

本说明书的实施例还可以具有从主机冲洗高速缓存行的能力(主机到设备偏置翻转所需)。这可以使用pcie上的来自设备的非分配零长度写入以高速缓存行粒度来完成。使用事务层分组(tlp)上的事务和处理提示来描述非分配语义。

●th=1,ph=01

这允许主机使给定行无效。设备可以在页面偏置翻转之后发出读取以确保所有行被冲洗。设备还可以实现内容寻址存储器(cam)以确保在翻转正在进行时,不从主机接收对该行的任何新请求。

现在将更具体地参考所附的附图来描述通过pcie的一致性存储器设备的系统和方法。应当注意,在整个附图中,可以重复某些附图标记以指示特定设备或块在整个附图中完全或基本一致。然而,这并不旨在暗示所公开的各种实施例之间的任何特定关系。在某些示例中,一类元素可以通过特定的附图标记(“小部件10”)来指代,而该类的个体种类或示例可以通过带连字符的数字(“第一特定小部件10-1”和“第二特定小部件10-2”)来指代。

图1示出了根据本说明书的一个或多个示例的可以代表各种实施例的示例操作环境100。图1中描绘的操作环境100可以包括具有处理器110(例如中央处理单元(cpu))的装置105。处理器110可以包括任何类型的计算元件,例如但不限于微处理器、微控制器、复杂指令集计算(cisc)微处理器、精简指令集(risc)微处理器、超长指令字(vliw)微处理器、虚拟处理器,例如虚拟中央处理单元(vcpu),或任何其他类型的处理器或处理电路。在一些实施例中,处理器110可以是可从加利福尼亚州圣克拉拉市的公司获得的处理器家族中的一个或多个处理器。尽管在图1中仅描绘了一个处理器110,但是装置可以包括多个处理器110。处理器110可以包括处理元件112,例如处理核。在一些实施例中,处理器110可以包括具有多个处理核的多核处理器。在各种实施例中,处理器110可以包括处理器存储器114,其可以包括例如处理器高速缓存或本地高速缓冲存储器,以便于高效地访问由处理器110处理的数据。在一些实施例中,处理器存储器114可以包括随机访问存储器(ram);然而,处理器存储器114可以使用其他存储器类型来实现,例如动态ram(dram)、同步dram(sdram)、它们的组合和/或类似物。

如图1所示,处理器110可以经由链路115通信地耦合到逻辑设备120。在各种实施例中,逻辑设备120可以包括硬件设备。在各种实施例中,逻辑设备120可包括加速器。在一些实施例中,逻辑设备120可以包括硬件加速器。在各种实施例中,逻辑设备120可以包括以硬件、软件或其任何组合实现的加速器。

尽管在该具体实施方式中可以使用加速器作为示例逻辑设备120,但是实施例不限于此,因为逻辑设备120可以包括任何类型的设备、处理器(例如,图形处理单元(gpu))、逻辑单元、电路、集成电路、专用集成电路(asic)、现场可编程门阵列(fpga)、存储器单元、计算单元和/或能够根据一些实施例进行操作的类似物。在逻辑设备120包括加速器的实施例中,逻辑设备120可以被配置为执行处理器110的一个或多个功能。例如,逻辑设备120可以包括可操作以执行图形功能(例如,gpu或图形加速器)、浮点运算、快速傅里叶变换(fft)运算和/或类似物的加速器。在一些实施例中,逻辑设备120可以包括加速器,该加速器被配置为使用各种硬件组件、标准、协议和/或类似物来操作。能够由逻辑设备使用的加速器和/或加速器技术的类型的非限制性示例可以包括opencapitm,ccix,genz,nvlinktm,加速器接口体系结构(aia),高速缓存一致性代理(cca),全局映射和一致性设备存储器(gcm),图形媒体加速器(gma),用于定向输入/输出(io)的虚拟化技术(例如,vt-d、vt-x和/或类似物)、共享虚拟存储器(svm)和/或类似物。实施例不限于此上下文。

逻辑设备120可以包括处理元件122,例如处理核。在一些实施例中,逻辑设备120可以包括多个处理元件122。逻辑设备120可以包括逻辑设备存储器124,例如,被配置为用于逻辑设备120的本地附接存储器。在一些实施例中,逻辑设备存储器124可以包括本地存储器、高速缓冲存储器和/或类似物。在各种实施例中,逻辑设备存储器124可以包括随机访问存储器(ram);然而,逻辑设备存储器124可以使用其他存储器类型来实现,例如动态ram(dram)、同步dram(sdram)、它们的组合和/或类似物。在一些实施例中,逻辑设备存储器124的至少一部分可以是处理器110可见的或可访问的。在一些实施例中,逻辑设备存储器124的至少一部分可以作为系统存储器(例如,作为系统存储器130的可访问部分)是处理器110可见的或可由处理器110访问。

在各种实施例中,处理器110可以执行驱动器118。在一些实施例中,驱动器118可用于控制逻辑设备120的各种功能方面和/或管理与使用逻辑设备120的一个或多个应用程序的通信和/或逻辑设备120生成的计算结果。在各种实施例中,逻辑设备120可以包括和/或可以访问偏置信息126。在一些实施例中,偏置信息126可以包括与一致性偏置过程相关联的信息。例如,偏置信息126可以包括指示哪个高速缓存一致性过程可以对于逻辑设备120和/或特定过程、应用、线程、存储器操作和/或类似物是活动的信息。在一些实施例中,偏置信息126可以由驱动器118读取、写入或以其他方式管理。

在一些实施例中,链路115可以包括总线组件,例如系统总线。在各种实施例中,链路115可以包括可操作以支持多种通信协议的通信链路(例如,多协议链路)。支持的通信协议可以包括用于组件通信的标准加载/存储io协议,包括串行链路协议、设备高速缓存协议、存储器协议、存储器语义协议、目录位支持协议、联网协议、一致性协议、加速器协议、数据存储协议、点到点协议、基于结构的协议、封装上(或片上)协议、基于结构的封装上协议和/或类似协议。支持的通信协议的非限制性示例可以包括外围组件互连(pci)协议、外围组件互连快速(pcie或pci-e)协议、通用串行总线(usb)协议、串行外围接口(spi)协议、串行at附件(sata)协议、quickpath互连(qpi)协议、ultrapath互连(upi)协议、优化加速器协议(oap)、加速器链路(ial)、设备内互连(idi)协议(或ial.cache)、片上可扩展结构(iosf)协议(或ial.io)、可扩展存储器互连(smi)协议(或ial.mem)、smi第三代(smi3)和/或类似协议。在一些实施例中,链路115可以支持设备内协议(例如,idi)和存储器互连协议(例如,smi3)。在各种实施例中,链路115可以支持设备内协议(例如,idi)、存储器互连协议(例如,smi3)和基于结构的协议(例如,iosf)。

在一些实施例中,装置105可以包括系统存储器130。在各种实施例中,系统存储器130可以包括用于装置105的主系统存储器。系统存储器130可以存储由处理器110或装置105的任何其他设备或组件执行的数据和指令序列。在一些实施例中,系统存储器130可以是ram;然而,系统存储器130可以使用其他存储器类型来实现,例如动态dram、sdram、它们的组合和/或类似物。在各种实施例中,系统存储器130可以存储能由处理器110执行的软件应用程序140(例如,“主机软件”)。在一些实施例中,软件应用程序140可以使用或以其他方式与逻辑设备120相关联。例如,软件应用程序140可以被配置为使用由逻辑设备120生成的计算结果。

装置可以包括一致性逻辑150以提供高速缓存一致性过程。在各种实施例中,一致性逻辑150可以用硬件、软件或其组合来实现。在一些实施例中,一致性逻辑150的至少一部分可以布置在处理器110中,部分地布置在处理器110中或以其他方式与处理器110相关联。例如,在一些实施例中,用于高速缓存一致性元件或过程152的一致性逻辑150可以布置在处理器110内。在一些实施例中,处理器110可以包括一致性控制器116以执行各种高速缓存一致性过程,例如高速缓存一致性过程152。在一些实施例中,高速缓存一致性过程152可以包括由处理器110执行的一个或多个标准高速缓存一致性技术、功能、方法、过程、元件(包括硬件或软件元件)、协议和/或类似物。通常,高速缓存一致性过程152可以包括用于管理系统的高速缓存以便没有数据丢失或者在将数据从高速缓存传输到目标存储器之前没有数据被覆盖的标准协议。由高速缓存一致性过程152执行或支持的标准协议的非限制性示例可以包括基于窥探的(或窥探)协议、写入无效协议、写入更新协议、基于目录的协议、基于硬件的协议(例如,修改的独占共享无效(mesi)协议)、基于私有存储器的协议和/或类似协议。在一些实施例中,高速缓存一致性过程152可以包括一个或多个标准高速缓存一致性协议,用于维持具有附接逻辑设备存储器124的逻辑设备120的高速缓存一致性。在一些实施例中,高速缓存一致性过程150可以用硬件、软件或其组合来实现。

在一些实施方案中,一致性逻辑150可以包括一致性偏置过程,诸如主机偏置过程或元件154和设备偏置过程或元件156。通常,一致性偏置过程可以运行,以维持与请求、数据流和/或与逻辑设备存储器122有关的其它存储器操作有关的高速缓存一致性。在一些实施例中,一致性逻辑的至少一部分,例如主机偏置过程154、设备偏置过程156和/或偏置选择组件158可以布置在处理器110外部,例如在一个或多个单独的一致性逻辑150单元中。在一些实施例中,主机偏置过程154、设备偏置过程156和/或偏置选择组件158可以用硬件、软件或其组合来实现。

在一些实施例中,主机偏置过程154可以包括通过处理器110的高速缓存一致性过程152处理对逻辑设备存储器124的请求的技术、过程、数据流、数据、算法等,包括来自逻辑设备120的请求。在各种实施例中,设备偏置过程156可以包括允许逻辑设备120直接访问逻辑设备存储器124的技术、过程、数据流、数据、算法等,例如,不使用高速缓存一致性过程152。在一些实施例中,偏置选择过程158可以包括用于激活主机偏置过程154或设备偏置过程156的技术、过程、数据流、数据、算法等,作为与逻辑设备存储器相关联的请求的活动偏置过程。在各种实施例中,活动偏置过程可以基于偏置信息126,偏置信息126可以包括由偏置选择过程使用以确定活动偏置过程和/或设置活动偏置过程的数据、数据结构和/或过程。

图2a示出了完全一致性操作环境200a的示例。图2a中描绘的操作环境200a可以包括具有cpu210的装置202,cpu210包括多个处理核212a-n。如图2a所示,cpu可以包括各种协议代理,例如高速缓存代理214、归属代理216、存储器代理218和/或类似代理。通常,高速缓存代理214可以操作以将事务启动到一致性存储器中并将副本保留在其自己的高速缓存结构中。高速缓存代理214可以由它可以根据与cpu相关联的高速缓存一致性协议中定义的行为槽收(sink)和源送(source)的消息来定义。高速缓存代理214还可以将一致性存储器内容的副本提供给其他高速缓存代理(例如,加速器高速缓存代理224)。归属代理216可以负责cpu210的存储器交互的协议侧,包括一致性和非一致性归属代理协议。例如,归属代理216可以命令存储器读取/写入。归属代理216可以被配置为服务一致性事务,包括必要时与高速缓存代理握手。归属代理216可以操作以监督cpu210的一致性存储器的一部分,例如,维持给定地址空间的一致性。归属代理216可以负责管理不同高速缓存代理之间可能出现的冲突。例如,归属代理216可以根据给定事务的流程的需要提供适当的数据和所有权响应。存储器代理218可以操作以管理对存储器的访问。例如,存储器代理218可以促进cpu210的存储器操作(例如,加载/存储操作)和功能(例如,交换和/或类似功能)。

如图2a中所示,装置202可包括可操作地耦合到cpu210的加速器220。加速器220可包括加速器引擎222,其可操作以执行由cpu210卸载的功能(例如,计算和/或类似功能)。加速器220可以包括加速器高速缓存代理224和存储器代理228。

可以根据各种常规硬件和/或存储器访问技术来配置加速器220和cpu210,和/或加速器220和cpu210可以包括各种常规硬件和/或存储器访问技术。例如,如图2a所示,所有存储器访问,包括由加速器220启动的访问,必须通过路径230。路径230可以包括非一致性链路,例如pcie链路。在装置202的配置中,加速器引擎222可能能够直接访问加速器高速缓存代理224和存储器代理228,但不能访问高速缓存代理214、归属代理216或存储器代理218。类似地,核212a-n将不能直接访问存储器代理228。因此,存储器代理228后面的存储器将不是核212a-n所见的系统地址映射的一部分。因为核212a-n不能访问公共存储器代理,所以只能通过副本交换数据。在某些实现方式中,可以使用驱动器来促进在存储器代理218和228之间来回复制数据。例如,驱动器可以包括创建共享存储器抽象的运行时元素,该共享存储器抽象针对程序员隐藏所有副本。相反,并且在下面详细描述,一些实施例可以提供这样的配置,其中当加速器引擎想要例如经由加速器代理228访问加速器存储器时,可以迫使来自加速器引擎的请求穿过加速器和cpu之间的链路。

图2b示出了非一致性操作环境200b的示例。图2b中描绘的操作环境200b可以包括具有加速器归属代理226的加速器220。cpu210和加速器220可以经由非一致性路径232(例如upi路径或ccix路径)可操作地耦合。

对于装置204的操作,加速器引擎222和核212a-n可以访问存储器代理228和218。核212a-n可以在不穿过链路232的情况下访问存储器218,并且加速器代理222可以在不穿过链路232的情况下访问存储器228。那些从222到228的本地访问的成本是需要构建归属代理226,使得它可以跟踪从核212a-n到存储器228的所有访问的一致性。装置204包括多个都通过链路232的其他实例连接的cpu210设备时,这种要求导致复杂性和高资源使用。归属代理226需要能够跟踪cpu210的所有实例上的所有核212a-n的一致性。这在性能、面积和功率方面可能变得相当昂贵,特别是对于大型配置。具体地,为了从cpu210访问,它不利地影响加速器222和存储器228之间的访问的性能效率,即使预期来自cpu210的访问相对较少。

图2c示出了没有偏置操作环境200c的一致性引擎的示例。如图2所示,装置206可以包括通过一致性链路236和238可操作地耦合到cpu210的加速器220。加速器220可以包括加速器引擎222,其可操作以执行cpu210卸载的功能(例如,计算和/或类似功能)。加速器220可以包括加速器高速缓存代理224、加速器归属代理226和存储器代理228。

在装置206的配置中,加速器220和cpu210可以根据各种常规硬件和/或存储器访问技术来配置和/或包括各种常规硬件和/或存储器访问技术,例如ccix、gcm,标准一致性协议(例如,对称一致性协议)和/或类似协议。例如,如图2所示,所有存储器访问,包括由加速器220启动的访问,必须通过路径230。以这种方式,为了访问加速器存储器(例如,通过存储器代理228)加速器220必须通过cpu220(并且因此,与cpu相关联的一致性协议)。因此,装置可能无法提供访问某些存储器的能力,例如与加速器220相关联的加速器附接存储器,作为系统存储器的一部分(例如,作为系统地址映射的一部分),这可允许主机软件设置操作数并且访问加速器220的计算结果而没有例如io直接存储器访问(dma)数据副本的开销。与存储器访问相比,这样的数据副本可能需要驱动器调用、中断和mmio访问,这些驱动器调用、中断和mmio访问都是低效且复杂的。如图2c所示,无法在没有高速缓存一致性开销的情况下访问加速器附接的存储器可能对卸载到加速器220的计算的执行时间有害。例如,在涉及大量流写入存储器业务的过程中,高速缓存一致性开销可能将加速器220所见的有效写入带宽减半。

操作数设置、结果访问和加速器计算的效率在确定将cpu210工作卸载到加速器220的有效性和益处中起作用。如果卸载工作的成本太高,则卸载可能不是有益的或可能仅限于非常大的任务。因此,各种开发器已经创建了加速器,加速器试图提高使用与根据一些实施例配置的技术相比有效性有限的加速器(例如加速器220)的效率。例如,某些常规gpu可以在不将加速器附接存储器映射为系统地址的一部分的情况下操作,可以或者可以不使用某些虚拟存储器配置(例如,svm)来访问加速器附接的存储器。因此,在这样的系统中,加速器附接的存储器对于主机系统软件是不可见的。相反,仅通过gpu设备驱动器提供的运行时软件层访问加速器附接的存储器。数据副本和页表操纵系统用于创建启用虚拟存储器(例如,svm)的系统的外观。这种系统效率低,特别是与一些实施例相比,因为系统需要存储器复制,存储器固定(memorypinning),存储器复本和复杂软件等。这些要求导致在根据一些实施例配置的系统中不需要的存储器页面转换点处的大量开销。在某些其他系统中,常规的硬件一致性机制被用于与加速器附接的存储器相关联的存储器操作,这限制了加速器以高带宽访问加速器附接的存储器的能力和/或限制给定加速器的部署选项(例如,在没有大量带宽损失的情况下,无法支持通过封装上或封装外链路附接的加速器)。

通常,常规系统可以使用两种方法之一来访问加速器附接存储器:完全一致性(或完全硬件一致性)方法或私有存储器模型或方法。完全一致性方法要求所有存储器访问,包括加速器附接存储器的加速器请求的访问,必须通过相应cpu的一致性协议。以这种方式,加速器必须采用迂回路线来访问加速器附接存储器,因为请求必须至少传输到相应的cpu,通过cpu一致性协议,然后传输到加速器附接的存储器。因此,当加速器访问其自己的存储器时完全一致性方法携带一致性开销,可能显著损害加速器可从其自己的附接存储器提取的日期带宽。私有存储器模型需要大量的资源和时间成本,例如存储器复制、页面固定(pagepinning)要求、页面复本数据带宽成本和/或页面转换成本(例如,转换后备缓冲区(tlb)击败,页表操作,和/或类似的)。因此,一些实施例可以提供一致性偏置过程,其被配置为提供多个高速缓存一致性过程,该高速缓存一致性过程与常规系统相比,除了其它之外,为包括加速器附接存储器的系统提供更好的存储器利用率和改进的性能。

图3示出了可以代表各种实施例的操作环境300的示例。图3中描绘的操作环境300可以包括可操作以根据一些实施例提供一致性偏置过程的装置305。在一些实施例中,装置305可以包括cpu310,其具有多个处理核312a-n和各种协议代理,诸如高速缓存代理314、归属代理316、存储器代理318和/或类似物。cpu310可以使用各种链路335、340通信地耦合到加速器320。加速器320可以包括加速器引擎312和存储器代理318,并且可以包括或访问偏置信息338。

如图3所示,加速器引擎322可以经由偏置的一致性旁路330直接通信地耦合到存储器代理328。在各种实施例中,加速器320可以被配置为在设备偏置过程中进行操作,其中偏置的一致性旁路330可以允许加速器引擎322的存储器请求直接访问经由存储器代理328促进的加速器的加速器附接存储器(未示出)。在各种实施例中,加速器320可以被配置为在主机偏置过程中操作,其中与加速器附接存储器相关联的存储器操作可以使用cpu的高速缓存一致性协议经由链路335、340处理,例如,经由高速缓存代理314和归属代理316。因此,装置305的加速器320可以在适当时利用cpu310的一致性协议(例如当非加速器实体请求加速器附接存储器时),同时允许加速器320经由偏置的一致性旁路330直接访问加速器附接的存储器。

在一些实施例中,一致性偏置(例如,无论是设备偏置还是主机偏置活动)可以存储在偏置信息338中。在各种实施例中,偏置信息338可以包括和/或可以存储在各种数据结构中,例如数据表(例如,“偏置表”)。在一些实施例中,偏置信息338可以包括偏置指示符,其具有指示活动偏置的值(例如,0=主机偏置,1=设备偏置)。在一些实施例中,偏置信息338和/或偏置指示符可以处于各种粒度级别,诸如存储器区域、页表、地址范围等。例如,偏置信息338可以指定某些存储器页面被设置用于设备偏置,而其他存储器页面被设置用于主机偏置。在一些实施例中,偏置信息338可以包括偏置表,该偏置表被配置为作为低成本的、可伸缩的窥探过滤器进行操作。

图4示出了可以代表各种实施例的示例操作环境400。根据一些实施例,图4中描绘的操作环境400可以包括可操作以提供一致性偏置过程的装置405。装置405可以包括通过链路(或多协议链路)489通信地耦合到主机处理器445的加速器410。加速器410和主机处理器445可以分别使用互连结构415和450通过链路进行通信,这允许数据和消息在它们之间传递。在一些实施例中,链路489可以包括可操作用于支持多种协议的多协议链路。例如,链路489和互连结构415和450可以支持各种通信协议,包括但不限于串行链路协议、设备高速缓存协议、存储器协议、存储器语义协议、目录位支持协议、联网协议、一致性协议、加速器协议、数据存储协议、点对点协议、基于结构的协议、封装上(或片上)协议、基于结构的封装上协议和/或类似协议。支持的通信协议的非限制性示例可以包括pci、pcie、usb、spi、sata、qpi、upi、oap、ial、idi、iosf、smi、smi3和/或类似物。在一些实施例中,链路489和互连结构415和450可以支持设备内协议(例如,idi)和存储器互连协议(例如,smi3)。在各种实施例中,链路489和互连结构415和450可以支持设备内协议(例如,idi)、存储器互连协议(例如,smi3)和基于结构的协议(例如,iosf)。

在一些实施例中,加速器410可以包括具有设备tlb437的总线逻辑435。在一些实施例中,总线逻辑435可以是或可以包括pcie逻辑。在各种实施例中,总线逻辑435可以使用基于结构的协议(例如,iosf)和/或外围组件互连快速(pcie或pci-e)协议通过互连480进行通信。在各种实施例中,通过互连480的通信可用于各种功能,包括但不限于发现、寄存器访问(例如,加速器410的寄存器(未示出))、配置、初始化、中断、直接存储器访问和/或地址翻译服务(ats)。

加速器410可以包括具有主机存储器高速缓存422和加速器存储器高速缓存424的核420。核420可以使用例如用于诸如一致性请求和存储器流等各种功能的设备内协议(例如,idi)使用互连481进行通信。在各种实施例中,加速器410可以包括一致性逻辑425,其包括或访问偏置模式信息427。一致性逻辑425可以使用例如存储器互连协议(例如,smi3)使用互连482进行通信。在一些实施例中,通过互连482的通信可以用于存储器流。加速器410可以可操作地耦合到可以存储偏置信息432的加速器存储器430(例如,作为加速器附接的存储器)。

在各种实施例中,主机处理器445可以可操作地耦合到主机存储器440,并且可以包括具有最后一级高速缓存(llc)457的一致性逻辑(或一致性和高速缓存逻辑)455。一致性逻辑455可以使用各种互连进行通信,例如,互连484和485。在一些实施例中,互连484和485可以包括存储器互连协议(例如,smi3)和/或设备内协议(例如,idi)。在一些实施例中,llc457可以包括主机存储器440和加速器存储器430的至少一部分的组合。

主机处理器445可以包括具有输入输出存储器管理单元(iommu)462的总线逻辑460。在一些实施例中,总线逻辑460可以是或可以包括pcie逻辑。在各种实施例中,总线逻辑460可以使用基于结构的协议(例如,iosf)和/或外围组件互连快速(pcie或pci-e)协议通过互连486和488进行通信。在各种实施例中,主机处理器445可以包括多个核465a-n,每个核具有高速缓存467a-n。在一些实施例中,核465a-n可以包括体系结构(ia)核。核465a-n中的每一个可以经由互连487a-n与一致性逻辑455进行通信。在一些实施例中,互连487a-n可以支持设备内协议(例如,idi)。在各种实施例中,主机处理器可以包括可操作以通过互连488与总线逻辑460进行通信的设备470。在一些实施例中,设备470可以包括io设备,例如pcieio设备。

在一些实施例中,装置405可操作以执行适用于各种配置的一致性偏置过程,例如具有加速器410和主机处理器445的系统(例如,包括一个或多个计算机处理器芯片的计算机处理复合体),其中加速器410通过多协议链路489通信地耦合到主机处理器445,并且其中存储器直接附接到加速器410和主机处理器445(例如,分别是加速器存储器430和主机存储器440)。由装置405提供的一致性偏置过程可以提供优于常规系统的多个技术优点,例如提供在处理核465a-n上运行的加速器410和“主机”软件以访问加速器存储器430。由装置提供的一致性偏置过程可以包括主机偏置过程和设备偏置过程(统称为,偏置协议流)和用于调制和/或选择用于特定存储器访问的偏置协议流的多个选项。

在一些实施例中,可以至少部分地使用多协议链路489上的协议层(例如,“偏置协议层”)来实现偏置协议流。在一些实施例中,偏置协议层可以包括:设备内协议(例如,idi)和/或存储器互连协议(例如,smi3)。在一些实施例中,可以通过使用偏置协议层的各种信息,将新信息添加到偏置协议层中和/或添加对协议的支持来使能偏置协议流。例如,可以使用用于设备内协议(例如,idi)的现有操作码,将操作码添加到存储器互连协议(例如,smi3)标准和/或添加对多协议链路489上的存储器互连协议(例如,smi3)的支持来实现偏置协议流(例如,常规的多协议链路可以仅包括设备内协议(例如,idi)和基于结构的协议(用于例如,iosf))。

在一些实施例中,装置405可以与至少一个操作系统(os)相关联。os可以被配置为不使用加速器存储器430或不使用加速器存储器430的某些部分。这样的os可以包括对“仅存储器numa模块”(例如,没有cpu)的支持。装置405可以执行驱动器(例如,包括驱动器118)以执行各种加速器存储器服务。在驱动器中实现的说明性和非限制性加速器存储器服务可以包括驱动器发现和/或获取/分配加速器存储器430,通过os页面映射服务提供分配api和映射页面,提供管理多进程存储器超额订阅和工作调度的过程,提供api以允许软件应用程序设置和改变加速器存储器430的存储器区域的偏置模式,和/或将页面返回到驱动器的空闲页面列表和/或将页面返回到默认偏置模式的解除分配api。

图5a示出了可以代表各种实施例的操作环境500的示例。根据一些实施例,图5a中描绘的操作环境500可以提供主机偏置过程流程。如图5a所示,装置505可以包括经由链路540通信地耦合到加速器520的cpu510。在一些实施例中,链路540可以包括多协议链路。cpu510可以包括一致性控制器530,并且可以通信地耦合到主机存储器512。在各种实施例中,一致性控制器530可以操作用于提供一个或多个标准高速缓存一致性协议。在一些实施例中,一致性控制器530可以包括各种代理和/或与各种代理相关联,例如归属代理。在一些实施例中,cpu510可以包括和/或可以通信地耦合到一个或多个io设备。加速器520可以通信地耦合到加速器存储器522。

主机偏置过程流程550和560可以包括一组数据流,其通过cpu510中的一致性控制器530将所有请求汇集到加速器存储器522,包括来自加速器520的请求。以这种方式,加速器520采用迂回路线来访问加速器存储器522,但是允许来自加速器520和cpu510的访问(包括经由cpu510来自io设备的请求)使用一致性控制器530的标准高速缓存一致性协议保持为一致的。在一些实施例中,主机偏置过程流程550和560可以使用设备内协议(例如,idi)。在一些实施例中,主机偏置过程流程550和560可以使用设备内协议(例如,idi)的标准操作码,例如,通过多协议链路540向一致性控制器530发出请求。在各种实施例中,一致性控制器530可以代表加速器520向所有对等处理器芯片和内部处理器代理发出由来自加速器520的请求产生的各种一致性消息(例如,窥探)。在一些实施例中,各种一致性消息可以包括点对点协议(例如,upi)一致性消息和/或设备内协议(例如,idi)消息。

在一些实施例中,一致性控制器530可以通过多协议链路540有条件地向加速器520的加速器存储器控制器(未示出)发出存储器访问消息。这样的存储器访问消息可以与一致性控制器530可以发送到cpu存储器控制器(未示出)的存储器访问消息相同或基本相似,并且可以包括允许数据直接返回到加速器520内部的代理的新操作码,而不是强制数据被返回到一致性控制器并且然后再次通过多协议链路540作为设备内协议(例如,idi)响应返回到加速器520。

主机偏置过程流程550可以包括由源自加速器的加速器存储器522的请求或存储器操作产生的流程。主机偏置过程路径560可以包括由源自cpu510(或io设备或与cpu510相关联的软件应用程序)的加速器存储器522的请求或存储器操作产生的流。当装置505在主机偏置模式下活动时,主机偏置过程流程550和560可用于访问加速器存储器522,如图5a所示。在各种实施例中,在主机偏置模式中,来自cpu510的以加速器存储器522为目标的所有请求可以直接发送到一致性控制器530。一致性控制器530可以应用标准高速缓存一致性协议并发送标准高速缓存一致性消息。在一些实施例中,一致性控制器530可以通过多协议链路540针对这样的请求发送存储器互连协议(例如,smi3)命令,其中存储器互连协议(例如,smi3)流跨过多协议链路540返回数据。

图5b示出了可以代表各种实施例的操作环境500的另一示例。根据一些实施例,图5a中描绘的操作环境500可以提供设备偏置过程流程。如图5所示,当装置505在设备偏置模式下活动时,设备偏置路径570可用于访问加速器存储器522。例如,设备偏置流或路径570可允许加速器520在没有咨询一致性控制器530的情况下直接访问加速器存储器522。更具体地,设备偏置路径570可以允许加速器520直接访问加速器存储器522,而不必通过多协议链路540发送请求。

在设备偏置模式中,根据一些实施例,cpu510对加速器存储器的请求可以与针对主机偏置模式所描述的相同或基本相似地发出,但是在路径580的存储器互连协议(例如,smi3)部分中是不同的。在一些实施例中,在设备偏置模式中,可以完成cpu510对附接存储器的请求,就像它们被发布为“未缓存”请求一样。通常,在设备偏置模式期间未缓存的请求的数据不缓存在cpu高速缓存层次结构中。以这种方式,允许加速器520在设备偏置模式期间访问加速器存储器522中的数据,而无需咨询cpu510的一致性控制器530。在一些实施例中,未缓存的请求可以在cpu510的设备内协议(例如,idi)总线上实现。在各种实施例中,可以使用cpu510设备内协议(例如,idi)总线上的全局观察的、一次使用(go-uo)协议来实现未缓存的请求。例如,对未缓存的请求的响应可以将一条数据返回到cpu510并指示cpu510仅使用该条数据一次,例如,以防止缓存该条数据并支持使用未缓存的数据流。

在一些实施例中,装置505和/或cpu510可能不支持go-uo。在这样的实施例中,可以使用多协议链路540和cpu510设备内协议(例如,idi)总线的存储器互连协议(例如,smi3)上的多消息响应序列来实现未缓存的流(例如,路径580)。例如,当cpu510瞄准加速器520的“设备偏置”页面时,加速器520可以设置一个或多个状态以阻止来自加速器520的对目标存储器区域(例如,高速缓存行)的未来请求并在多协议链路540的存储器互连协议(例如,smi3)行发送“设备偏置命中”响应。响应于“设备偏置命中”消息,一致性控制器530(或其代理)可以将数据返回到请求处理器核,紧接着是窥探无效消息。当相应的处理器核确认窥探无效完成时,一致性控制器530(或其代理)可以在多协议链路540的存储器互连协议(例如,smi3)线上向加速器520发送“设备偏置块完成”消息。响应于接收到“设备偏置块完成”消息,加速器可以清除相应的阻塞状态。

参考图4,偏置模式信息427可以包括偏置指示符,其被配置为指示活动偏置模式(例如,设备偏置模式或主机偏置模式)。可以通过偏置信息432来确定活动偏置模式的选择。在一些实施例中,偏置信息432可以包括偏置表。在各种实施例中,偏置表可以包括用于加速器存储器的某些区域的偏置信息432,诸如页面、线和/或类似物。在一些实施例中,偏置表可以包括每个加速器存储器430存储器页面的位(例如,1或3位)。在一些实施例中,偏置表可以使用ram来实现,诸如加速器410处的sram和/或加速器存储器430的被盗范围,在加速器410内部具有或不具有高速缓存。

在一些实施例中,偏置信息432可以包括偏置表中的偏置表条目。在各种实施例中,可以在加速器存储器430的实际访问之前访问与对加速器存储器430的每次访问相关联的偏置表条目。在一些实施例中,来自加速器410的本地请求,发现其页面在设备偏置中,可以被直接转发到加速器存储器430。在各种实施例中,来自加速器410的本地请求,发现其页面在主机偏置中,可以被转发到主机处理器445,例如,作为多协议链路489上的设备内协议(例如,idi)请求。在一些实施例中,主机处理器445请求例如使用存储器互连协议(例如,smi3),发现其页面在设备偏置中,可以使用未缓存的流(例如,图5b的路径580)来完成请求。在一些实施例中,主机处理器445请求例如使用存储器互连协议(例如,smi3),发现其页面在主机偏置中,可以将请求完成为加速器存储器的标准存储器读取(例如,经由图5a的路径560)。

可以通过基于软件的系统、硬件辅助系统、基于硬件的系统或其组合来改变加速器存储器430的区域(例如,存储器页面)的偏置模式信息427的偏置指示符的偏置模式。在一些实施例中,可以经由应用程序编程接口(api)调用(例如,opencl)来改变偏置指示符,其进而可以调用加速器410设备驱动器(例如,驱动器118)。加速器410设备驱动器可以向加速器410发送消息(或者将命令描述符入队),指示加速器410改变偏置指示符。在一些实施例中,偏置指示符的改变可伴随主机处理器445中的高速缓存冲洗操作。在各种实施例中,从主机偏置模式到设备偏置模式的转换可能需要高速缓存冲洗操作,但是对于从设备偏置模式到主机偏置模式的转换可能不需要高速缓存冲洗操作。在各种实施例中,软件可以经由发送到加速器430的工作请求来改变加速器存储器430的一个或多个存储器区域的偏置模式。

在某些情况下,软件可能无法或不能轻易确定何时进行偏置转换api调用以及识别需要偏置转换的存储区域。在这种情况下,加速器410可以提供偏置转换提示过程,其中加速器410确定对偏置转换的需要并且向加速器驱动器(例如,驱动器118)发送指示需要偏置转换的消息。在各种实施例中,可以响应于偏置表查找来激活偏置转换提示过程,该偏置表查找触发加速器410访问主机偏置模式存储器区域或主机处理器445访问设备偏置模式存储器区域。在一些实施例中,偏置转换提示过程可以通过中断将需要偏置转换发信号到加速器驱动器。在各种实施例中,偏置表可以包括用于使能偏置转换状态值的偏置状态位。偏置状态位可以用于允许在偏置改变的过程期间访问存储器区域(例如,当部分冲洗高速缓存并且必须抑制由于后续请求导致的增量高速缓存污染时)。

这里包括表示用于执行所公开的体系结构的新颖方面的示例性方法的一个或多个逻辑流程。虽然为了简化说明的目的,本文所示的一种或多种方法被示出并描述为一系列动作,但是本领域技术人员将理解并意识到,这些方法不受动作顺序的限制。根据此,一些动作可以以不同的顺序发生和/或与本文所示和所述的其他动作同时发生。例如,本领域技术人员将理解并意识到,方法可替代地表示为一系列相互关联的状态或事件,例如在状态图中。此外,并非方法中所示的所有动作都是新颖实现方式所必需的。

逻辑流程可以用软件、固件、硬件或其任何组合来实现。在软件和固件实施例中,逻辑流程可以由存储在非暂时性计算机可读介质或机器可读介质(例如光学、磁性或半导体存储装置)上的计算机可执行指令来实现。实施例不限于此上下文。

图6示出了逻辑流程600的实施例。逻辑流程600可以代表由本文描述的一个或多个实施例执行的一些或全部操作,例如装置105、305、405和505。在一些实施例中,逻辑流程600可以表示根据一些实施例的用于一致性偏置过程的一些或全部操作。

如图6中所示,逻辑流程600可以在框602处将加速器存储器页面的偏置模式设置为主机偏置模式。例如,主机软件应用程序(例如,软件应用程序140)可以通过驱动器和/或api调用将加速器设备存储器430的偏置模式设置成主机偏置模式。主机软件应用程序可以使用api调用(例如,openclapi)来将存储操作数的加速器存储器430的分配的(或目标)页面转换为主机偏置。由于分配的页面正在从设备偏置模式转换到主机偏置模式,因此不会启动高速缓存冲洗。可以在偏置信息432的偏置表中指定设备偏置模式。

在框604,逻辑流程600可以将操作数和/或数据推送到加速器存储器页面。例如,加速器420可以执行用于需要某些操作数的cpu的功能。主机软件应用程序可以将操作数从对等cpu核(例如,核465a)推送到加速器存储器430的分配页面。主机处理器445可以在加速器存储器430中的分配页面中(以及在主机存储器440中的任意位置)生成操作数数据。

在框606,逻辑流程600可以将加速器存储器页面转换到设备偏置模式。例如,主机软件应用程序可以使用api调用来将加速器存储器430的操作数存储器页面转换为设备偏置模式。当设备偏置转换完成时,主机软件应用程序可以将工作提交给加速器430。加速器430可以执行与提交的工作相关联的功能而没有与主机相关的一致性开销。

在框608,逻辑流程600可以通过加速器使用操作数生成结果,并且将结果存储在加速器存储器页面中。例如,加速器420可以使用操作数来执行功能(例如,浮点运算、图形计算、fft运算和/或类似功能)来生成结果。结果可以存储在加速器存储器430中。此外,软件应用程序可以使用api调用来使工作描述符提交从主机高速缓存中冲洗操作数页面。在一些实施例中,可以使用设备内协议(例如,idi)协议上的高速缓存(或高速缓存行)冲洗例程(诸如clflush)来执行高速缓存冲洗。由该功能生成的结果可以存储在分配的加速器存储器430页面中。

在框610,逻辑流程可以将存储有结果的加速器存储器页面的偏置模式设置为主机偏置模式。例如,主机软件应用程序可以使用api调用来将加速器存储器430的操作数存储器页面转换为主机偏置模式,不会导致一致性过程和/或高速缓存冲洗动作。主机cpu445可以访问、高速缓存和共享结果。在框612,逻辑流程600可以从加速器存储器页面向主机软件提供结果。例如,主机软件应用程序可以直接从加速器存储器页面430访问结果。在一些实施例中,可以通过逻辑流程释放所分配的加速器存储器页面。例如,主机软件应用程序可以使用驱动器和/或api调用来释放加速器存储器430的分配的存储器页面。

图7是示出根据本说明书的一个或多个示例的结构的框图。在这种情况下,提供了一致性加速器结构700。一致性加速器结构700与ial端点728互连,ial端点728将一致性加速器结构700通信地耦合到主机设备,例如前述附图中公开的主机设备。

提供一致性加速器结构700以将加速器740及其附接的存储器722通信地耦合到主机设备。存储器722包括多个存储器控制器720-1到720-n。在一个示例中,8个存储器控制器720可以服务8个单独的存储体。

结构控制器736包括一组控制器和互连以提供一致性存储器结构700。在该示例中,结构控制器736被分成n个单独的片以服务存储器722的n个存储体。每个片可以基本上独立于每个其他片。如上所述,结构控制器736包括“垂直”互连706和“水平”互连708二者。垂直互连通常可理解为将上游或下游设备彼此连接。例如,最后一级高速缓存(llc)734垂直连接到llc控制器738,与结构连接,连接到将结构控制器736通信地耦合到加速器740的管芯内互连(f2idi)块。f2idi730提供到结构停止712的下游链路,并且还可以提供旁路互连715。旁路互连715将llc控制器738直接连接到结构到存储器互连716,其中信号被多路复用外出到存储器控制器720。在非旁路路线中,来自f2idi730的请求沿着水平互连行进到主机,并且然后返回到结构停止712,然后到结构一致性引擎704,并向下到f2mem716。

水平总线包括将结构停止712彼此互连并将llc控制器彼此连接的总线。

在一个示例中,ial端点728可以从主机设备接收包括执行加速功能的指令的分组,以及包括用于加速器操作的窥探的有效载荷。ial端点728将这些传递给l2fab718,l2fab718充当结构控制器736的主机设备互连。l2fab718可以充当结构的链路控制器,包括提供ial接口控制器(尽管在一些实施例中,也可以提供附加的ial控制元件,并且通常,提供ial接口控制的元件的任何组合可以被称为“ial接口控制器”)。l2fab718控制从加速器到主机的请求,反之亦然。l2fab718也可以成为idi代理,并且可能需要在来自加速器的idi请求和来自主机的窥探之间充当排序代理。

然后,l2fab718可以操作结构停止712-0以将值填充到存储器722中。结构停止l2fab718可以应用负载平衡算法,诸如例如,基于简单地址的散列,来标记特定目的地存储体的有效载荷数据。一旦存储器722中的存储体填充有适当的数据,加速器740就操作结构控制器736以经由llc控制器738从存储器获取值到llc734。加速器740执行其加速计算,然后将输出写入llc734,其中它们是然后向下游传递并写出到存储器722。

在一些示例中,结构停止712、f2mem控制器716、多路复用器710和f2idi730可以全部是根据公知原理提供互连的标准总线和互连。前述互连可以提供虚拟和物理通道、互连、总线、交换元件和流控制机制。它们还可以提供与加速器或设备代理发出的请求与主机发出的请求之间的交互相关的冲突解决机制。该结构可以包括水平方向上的物理总线,当总线穿过各个片时,服务器环状交换。该结构还可以包括llc控制器738之间的特殊优化的水平互连739。

来自f2idi730的请求可以传递通过硬件以在水平结构互连和llc控制器738与存储器722之间的每片的优化路径之间分割和多路复用到主机的业务。这包括多路复用业务并将其引导到idi块,其中业务通过结构停止712和fce704遍历常规路线,或者使用idi精华(idiprime)将业务引导到旁路互连715。f2idi730-1还可以包括管理进出水平结构互连的入口和出口的硬件,例如通过向结构停止712提供适当的信令。

ial接口控制器718可以是适当的pcie控制器。ial接口控制器提供分组化ial总线和结构互连之间的接口。它负责排队并为ial消息提供流控制,并将ial消息引导到适当的结构物理和虚拟通道。l2fab718还可以在多类ial消息之间提供仲裁。它可以进一步强制执行ial排序规则。

在结构控制器736内的至少三个控制结构提供本说明书的结构控制器736的新颖且有利的特征。这些包括llc控制器738、fce704和电源管理模块750。

有利地,llc控制器738还可以根据ial偏置协议提供偏置控制功能。因此,llc控制器738可以包括用于执行高速缓存查找的硬件,用于检查ial基础以用于高速缓存未命中请求的硬件,用于将请求引导到适当的互连路径上的硬件,以及用于响应由主机处理器或由fce704发出的窥探的逻辑。

当通过l2fab718从结构停止712引导请求到主机时,llc控制器738确定应该通过结构停止712将业务引导到哪里,通过旁路互连715直接到f2mem716,或者通过水平总线739到另一个存储器控制器。

注意,在一些实施例中,llc控制器738是与fce704物理上分离的设备或块。可能的是提供提供llc控制器738和fce704的功能的单个块。然而,通过分离两个块并提供llc控制器738中的ial偏置逻辑,可能的是提供旁路互连715,从而加速某些存储器操作。有利地,在一些实施例中,分离llc控制器738和fce704还可以辅助结构的部分中的选择性功率门控,以更高效地使用资源。

fce704可以包括用于排队、处理(例如,向llc发出窥探)以及跟踪来自主机的smi请求的硬件。这提供了与主机设备的一致性。fce704还可以包括用于对到存储器722内的存储体的每片优化路径上的请求进行排队的硬件。fce的实施例还可以包括用于将上述两个请求类仲裁和多路复用到cmi存储器子系统接口上的硬件,以及可以包括用于解决上述两个请求类之间的冲突的硬件或逻辑。fce的其他实施例可以提供对来自直接垂直互连的请求和来自fce704的请求的排序的支持。

功率管理模块(pmm)750还为本说明书的实施例提供了优点。例如,考虑结构控制器736中的每个独立片垂直支持每秒1gb带宽的情况。仅作为说明性示例提供每秒1gb,并且结构控制器736的真实示例可以比每秒1gb快得多或慢得多。

llc734可以具有更高的带宽,例如,结构控制器736的片的垂直带宽的带宽的10倍。因此,llc734可以具有每秒10gb的带宽,其可以是双向的,使得通过llc734的总带宽是每秒20gb。因此,利用结构控制器736的8个片,每片支持双向每秒20gb,加速器740可以通过水平总线739看到每秒160gb的总带宽。因此,全速运行llc控制器738和水平总线739消耗大量的功率。

然而,如上所述,垂直带宽可以是每片1gb,并且总ial带宽可以是大约每秒10gb。因此,水平总线739提供的带宽比整个结构控制器736的带宽高大约一个数量级。例如,水平总线739可以包括数千条物理线,而垂直互连可以包括数百条物理线。水平结构708可以支持ial的全带宽,即每个方向每秒10gb,每秒总共20gb。

加速器740可以以比主机设备能够消耗数据高得多的速度执行计算并在llc734上操作。因此,数据可以突发进入加速器740,然后可以根据需要由主机处理器消耗。一旦加速器740完成其计算并在llc734中填充适当的值,则在llc控制器738之间保持全带宽消耗大量功率,这基本上被浪费,因为llc控制器738在加速器740空闲时不再需要彼此通信。因此,当加速器740空闲时,llc控制器738可以断电,从而关闭水平总线739,同时使得适当的垂直总线活跃,例如从结构停止712到fce704到f2mem716到存储器控制器720,并且还保持水平总线708。因为水平总线739以比结构700的其余部分高大约一个数量级或更高的数量级操作,所以这可以在加速器740空闲时节省大约一个数量级的功率。

注意,一致性加速器结构700的一些实施例还可以提供等时控制器,其可以用于向延迟或时间敏感的元件提供等时业务。例如,如果加速器740是显示加速器,则可以向显示生成器(dg)提供等时显示路径,使得连接的显示器接收等时数据。

一致性加速器结构700中的代理和互连的整体组合以高性能、无死锁和无饥饿的方式实现ial功能。它这样做在节省能量的同时通过旁路互连715提供增加的效率。

图8是根据本说明书的一个或多个示例的方法800的流程图。方法800示出了功率节省的方法,例如可以由图7的pmm750提供。

来自主机设备804的输入可以到达一致性加速器结构,包括执行计算的指令和用于计算的有效载荷。在框808中,如果llc控制器之间的水平互连断电,则pmm将互连供电升到其全带宽。

在框812中,加速器根据其普通功能计算结果。在计算这些结果时,它可以在其全可用带宽下操作一致性加速器结构,包括llc控制器之间的水平互连的全带宽。

当结果完成时,在框816中,加速器结构可以将结果冲洗到本地存储器820。

在判定框824中,pmm确定是否存在来自主机可用的能够操作的新数据。如果有任何新数据可用,则控制返回到框812,并且加速器继续执行其加速功能。同时,主机设备可以直接从本地存储器820消耗数据,本地存储器820可以以一致性方式映射到主机存储器地址空间。

返回到框824,如果没有来自主机的新数据可用,则在框828中,pmm降低功率,例如关闭llc控制器,从而禁用llc控制器之间的高带宽水平互连。如上所述,因为本地存储器820被映射到主机地址存储器空间,所以主机可以在全ial带宽下继续消耗来自本地存储器820的数据,在一些实施例中,该全ial带宽远低于llc控制器之间的全带宽。

在框832中,控制器等待来自主机设备的新输入,并且当接收到新数据时,则可以对互连供电以备用。

图9-11示出了通过pcie的ial.mem隧道的示例。所描述的分组格式包括标准pcie分组字段,以灰色突出显示的字段除外。灰色字段是提供新隧道字段的那些字段。

图9是根据本说明书的一个或多个示例的通过pcie操作的ial.mem读取的框图。新字段包括:

●memopcode(4位)-存储器操作码。包含有关需要处理的存储器事务的信息。例如读、写、无操作等。

●metafield和metavalue(2位)-元数据字段和元数据值。它们一起指定需要修改存储器中的哪个元数据字段以及修改成什么值。存储器中的元数据字段通常包含与实际数据相关联的信息。例如,qpi将目录状态存储在元数据中。

●tc(2位)-业务类。用于区分属于不同服务质量类别的业务。

●snp类型(3位)-窥探类型。用于保持主机的高速缓存和设备的高速缓存之间的一致性。

●r(5位)-保留

图10是根据本说明书的一个或多个示例的通过pcie操作的ial.mem写入的框图。新字段包括:

●memopcode(4位)-存储器操作码。包含有关需要处理的存储器事务的信息。例如,读、写、无操作等。

●metafield和metavalue(2位)-元数据字段和元数据值。它们一起指定需要修改存储器中的哪个元数据字段以及修改成什么值。存储器中的元数据字段通常包含与实际数据相关联的信息。例如,qpi将目录状态存储在元数据中。

●tc(2位)-业务类。用于区分属于不同服务质量类别的业务。

●snp类型(3位)-窥探类型。用于保持主机的高速缓存和设备的高速缓存之间的一致性。

●r(5位)-保留

图11是根据本说明书的一个或多个示例的通过pcie操作的ial.mem数据完成的框图。新字段包括:

●r(1位)-保留

●opcode(3位)-ial.io操作码

●metafield和metavalue(2位)-元数据字段和元数据值。它们一起指定需要修改存储器中的哪个元数据字段以及修改成什么值。存储器中的元数据字段通常包含与实际数据相关联的信息。例如,qpi将目录状态存储在元数据中。

●pcls(4位)-先前高速缓存行状态。用于辨别一致性转换。

●pre(7位)-性能编码。由主机中的性能监视计数器使用。

图12示出了根据本说明书的一个或多个示例的由互连一组部件的点对点链路组成的结构的实施例。系统1200包括耦合到控制器集线器1215的处理器1205和系统存储器1210。处理器1205包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器1205通过前端总线(fsb)1206耦合到控制器集线器1215。在一个实施例中,fsb1206是如下所述的串行点对点互连。在另一实施例中,链路1206包括符合差分互连标准的串行差分互连体系结构。

系统存储器1210包括任何存储器设备,诸如随机访问存储器(ram)、非易失性(nv)存储器或系统1200中的设备可访问的其他存储器。系统存储器1210通过存储器接口1216耦合到控制器集线器1215。存储器接口的示例包括双倍数据速率(ddr)存储器接口、双通道ddr存储器接口和动态ram(dram)存储器接口。

在一个实施例中,控制器集线器1215是外围组件互连快速(pcie)互连层次结构中的根集线器、根复合体或根控制器。控制器集线器1215的示例包括芯片组、存储器控制器集线器(mch)、北桥、互连控制器集线器(ich)、南桥和根控制器/集线器。通常,术语芯片组指的是两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ich)的存储器控制器集线器(mch)。

注意,当前系统通常包括与处理器1205集成的mch,而控制器1215以与下面描述的类似方式与i/o设备进行通信。在一些实施例中,可选地通过根复合体1215支持对等路由。

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

交换机/网桥1220将来自设备1225的分组/消息向上游(即,朝向根复合体顺着层次结构向上)路由到控制器集线器1215并且向下游(即,远离根控制器顺着层次结构向下)从处理器1205或系统存储器1210路由到设备1225。在一个实施例中,交换机1220被称为多个虚拟pci到pci桥设备的逻辑组装件。

设备1225包括要耦合到电子系统的任何内部或外部设备或组件,例如i/o设备、网络接口控制器(nic)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、cd/dvdrom、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、firewire设备、通用串行总线(usb)设备、扫描仪和其他输入/输出设备。通常在pcie本地语言中,例如设备被称为端点。尽管没有具体示出,但是设备1225可以包括pcie到pci/pci-x桥,支持传统或其他版本的pci设备。pcie中的端点设备通常被分类为传统、pcie或根复合体集成端点。

加速器1230还通过串行链路1232耦合到控制器集线器1215。在一个实施例中,图形加速器1230耦合到mch,mch耦合到ich。然后,交换机1220以及因此i/o设备1225耦合到ich。i/o模块1231和1218还用于实现分层协议栈以在图形加速器1230和控制器集线器1215之间进行通信。类似于上面的mch讨论,图形控制器或图形加速器1230本身可以集成在处理器1205中。

在一些实施例中,加速器1230可以是加速器,例如图7的加速器740,其为处理器1205提供一致性存储器。

为了支持通过pcie的ial,控制器集线器1215(或另一个pcie控制器)可以包括对pcie协议的扩展,包括作为非限制性示例的映射引擎1240、隧道引擎1242、主机偏置到设备偏置翻转引擎1244和qos引擎1246。

映射引擎1240可以被配置为在pcie指令和ial.io(iosf)操作码之间提供操作码映射。iosf提供非一致性有序语义协议,并且可以通过非限制性示例提供诸如设备发现、设备配置、错误报告、中断提供、中断处理和dma式数据传输之类的服务。本地pcie可以提供相应的指令,因此在某些情况下,映射可以是一对一映射。

隧道引擎1242通过pcie提供ial.mem(smi)隧道。该隧道使主机(例如,处理器)能够将加速器存储器映射到主机存储器地址空间,并以一致性方式从加速器存储器读取和写入。smi是一种事务存储器接口,可由主机上的一致性引擎使用,以一致性方式通过pcie隧道传输ial事务。用于这种隧道的经修改的分组结构的示例在图9-11中示出。在一些情况下,可以在pcie分组的一个或多个dvsec字段内分配用于该隧道的特殊字段。

主机偏置到设备偏置翻转引擎1244为加速器设备提供冲洗主机高速缓存行的能力(主机到设备偏置翻转所需)。这可以使用pcie上的来自加速器设备的高速缓存行粒度的非分配零长度写入(即,没有字节使能置位的写入)来完成。可以使用事务层分组(tlp)上的事务和处理提示来描述非分配语义。例如:

●th=1,ph=01

这使得设备能够使给定的高速缓存行无效,从而使其能够访问其自己的存储器空间而不会失去一致性。设备可以在页面偏置翻转之后发出读取以确保冲洗所有行。设备还可以实现cam以确保在翻转正在进行时,不从主机接收对该行的新请求。

qos引擎1246可以将ial业务划分为两个或更多个虚拟通道以优化互连。例如,这些可以包括用于mmio和配置操作的第一虚拟通道(vc0)、用于主机到设备写入的第二虚拟通道(vc1),以及用于主机从设备读取的第三虚拟通道(vc2)。

图13示出了根据本说明书的一个或多个实施例的分层协议栈的实施例。分层协议栈1300包括任何形式的分层通信栈,例如快速路径互连(qpi)栈、pcie栈、下一代高性能计算互连栈或其他分层栈。尽管下面紧接着参考图12-15的讨论是关于pcie堆栈给出的,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈1300是pcie协议栈,包括事务层1305、链路层1310和物理层1320。

诸如图12中的接口1217、1218、1221、1222、1226和1231的接口可以表示为通信协议栈1300。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

pcie使用分组在组件之间传送信息。在事务层1305和数据链路层1310中形成分组以将信息从发送组件传送到接收组件。

因为所传输的分组流过其他层,所以它们利用处理那些层处的分组所必需的附加信息被扩展。在接收侧,发生反向过程,并且分组从其物理层1320表示变换到数据链路层1310表示,并且最后(对于事务层分组)变换为可以由接收设备的事务层1305处理的形式。

事务层

在一个实施例中,事务层1305用于提供设备的处理核和互连体系结构之间的接口,例如数据链路层1310和物理层1320。在这方面,事务层1305的主要职责是分组(即事务层分组(tlp))的组装和分解。事务层1305通常管理tlp的基于信用的流控制。pcie实现分离事务,即具有按时间分隔的请求和响应的事务,允许链路在目标设备收集响应的数据时承载其他业务。

此外,pcie利用基于信用的流控制。在该方案中,设备为事务层1305中的每个接收缓冲器通告初始信用量。在链路的相对端的外部设备,例如图1中的控制器中心115,计算由每个tlp消费的信用数量。如果事务未超过信用额度,则可以发送事务。在收到响应时,将恢复一定数量的信用。信用方案的一个优点是,如果没有遇到信用额度,信用返回的延迟不会影响性能。

在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储空间事务包括一个或多个读请求和写请求以将数据传输到存储器映射位置或从存储器映射位置传输数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式,诸如32位地址,或长地址格式,诸如64位地址。配置空间事务用于访问pcie设备的配置空间。到配置空间的事务包括读取请求和写入请求。消息空间事务(或简称消息)被定义为支持pcie代理之间的带内通信。

因此,在一个实施例中,事务层1305组装分组报头/有效载荷1306。当前分组报头/有效载荷的格式可以在pcie规范网站的pcie规范中找到。

图14示出了根据本说明书的一个或多个示例的pcie事务描述符的实施例。在一个实施例中,事务描述符1400是用于携带事务信息的机制。在这方面,事务描述符1400支持系统中的事务的标识。其他潜在用途包括跟踪默认事务排序的修改以及事务与通道的关联。

事务描述符1400包括全局标识符字段1402、属性字段1404和通道标识符字段1406。在所示示例中,全局标识符字段1402被描绘为包括本地事务标识符字段1408和源标识符字段1410。在一个实施例中,全局事务标识符1402对于所有待完成的请求是唯一的。

根据一种实现方式,本地事务标识符字段1408是由请求代理生成的字段,并且对于针对该请求代理需要完成的所有待完成请求它是唯一的。此外,在该示例中,源标识符1410唯一地标识pcie层次结构内的请求者代理。因此,与源id1410一起,本地事务标识符1408字段提供层次结构域内的事务的全局标识。

属性字段1404指定事务的特征和关系。在这方面,属性字段1404可能用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段1404包括优先级字段1412、保留字段1414、排序字段1416和非窥探字段1418。这里,优先级子字段1412可以由发起者修改以向事务分配优先级。保留的属性字段1414保留用于将来的用途或供应商定义的用途。可以使用保留的属性字段来实现使用优先级或安全性属性的可能的用途模型。

在该示例中,排序属性字段1416用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示放松排序,写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段1418用于确定是否窥探事务。如图所示,通道id字段1406标识与事务相关联的通道。

链路层

链路层1310(也称为数据链路层1310)充当事务层1305和物理层1320之间的中间级。在一个实施例中,数据链路层1310的职责是提供用于在两个链接组件之间交换tlp的可靠机制。数据链路层1310的一侧接受由事务层1305组装的tlp,应用分组序列标识符1311,即标识号或分组号,计算并应用错误检测码,即crc1312,并提交修改的tlp给物理层1320用于跨物理层到外部设备的传输。

物理层

在一个实施例中,物理层1320包括逻辑子块1321和电子块1322,以物理地将分组发送到外部设备。这里,逻辑子块1321负责物理层1321的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块1322发送的传出信息的发送部分,以及将所接收的信息传递到链路层1310之前识别和准备所接收的信息的接收部分。

物理块1322包括发送器和接收器。发送器由逻辑子块1321提供符号,发送器将符号串行化并发送到外部设备。接收器被提供来自外部设备的串行化的符号,并将接收的信号转换为比特流。比特流被反串行化并提供给逻辑子块1321。在一个实施例中,采用8b/10b传输码,其中发送/接收10比特符号。这里,特殊符号用于用帧1323对分组进行帧化。此外,在一个示例中,接收器还提供从传入串行流中恢复的符号时钟。

如上所述,尽管参考pcie协议栈的特定实施例讨论了事务层1305、链路层1310和物理层1320,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。例如,表示为分层协议的端口/接口包括:(1)组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及发送分组的第三层,即物理层。作为具体示例,使用公共标准接口(csi)分层协议。

图15示出了根据本说明书的一个或多个示例的pcie串行点对点结构的实施例。尽管示出了pcie串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示的实施例中,基本pcie链路包括两个低压差分驱动信号对:发送对1506/1511和接收对1512/1507。因此,设备1505包括将数据发送到设备1510的发送逻辑1506以及从设备1510接收数据的接收逻辑1507。换句话说,在pcie链路中包含两个发送路径,即路径1516和1517,以及两个接收路径,即路径1518和1519。

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

差分对是指两个传输路径,例如线1516和1517,以发送差分信号。作为示例,当线1516从低电压电平切换到高电压电平,即上升沿时,线1517从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等。这允许更好的定时窗口,这使得更快的传输频率成为可能。

前面概述了本文公开的主题的一个或多个实施例的特征。提供这些实施例是为了使本领域普通技术人员(phosita)能够更好地理解本公开的各个方面。可以参考某些易于理解的术语以及基础技术和/或标准而不进行详细描述。预计phosita将拥有或获得对足以实施本说明书教导的那些技术和标准中的背景知识或信息的访问。

phosita将理解,他们可以容易地使用本公开作为设计或修改其他过程、结构或变型的基础,以达到相同的目的和/或实现本文介绍的实施例的相同优点。phosita还将认识到,这样的等同构造不脱离本公开的精神和范围,并且在不脱离本公开的精神和范围的情况下,他们可以在本文中进行各种改变、替换和变更。

在前面的描述中,一些或所有实施例的某些方面比实施所附权利要求所严格必要的更详细地进行了描述。仅出于非限制性示例的目的提供这些细节,以提供所公开实施例的上下文和图示。不应该理解为这些细节是必需的,并且不应该将权利要求“理解”为限制。该措辞可以提到“一个实施例”或“实施例”。这些措辞和对实施例的任何其他参考应该被广义地理解为指代一个或多个实施例的任何组合。此外,在特定“实施例”中公开的若干特征也可以分布在多个实施例中。例如,如果在“实施例”中公开了特征1和2,则实施例a可以具有特征1但缺少特征2,而实施例b可以具有特征2但缺少特征1。

本说明书可以以框图格式提供说明,其中某些特征在单独的框中公开。这些应该被广泛地理解为公开各种特征如何互操作,但并不意味着暗示这些特征必须必然体现在单独的硬件或软件中。此外,在单个块公开同一块中的多于一个特征的情况下,那些特征不一定必须体现在相同的硬件和/或软件中。例如,计算机“存储器”在某些情况下可以在多级高速缓存或本地存储器、主存储器、电池支持的易失性存储器和各种形式的持久存储器(例如硬盘、存储服务器、光盘、磁带驱动器或类似设备)之间分布或映射。在某些实施例中,可以省略或合并一些组件。在一般意义上,图中描绘的布置在其表示中可以更符合逻辑,而物理体系结构可以包括这些元素的各种排列、组合和/或混合。可以使用无数可能的设计配置来实现本文概述的操作目标。因此,相关联的基础设施具有无数的替代安排、设计选择、设备可能性、硬件配置、软件实现方式和设备选项。

这里可以参考计算机可读介质,该计算机可读介质可以是有形和非暂时性计算机可读介质。如在本说明书和整个权利要求中所使用的,“计算机可读介质”应该被理解为包括相同或不同类型的一个或多个计算机可读介质。作为非限制性示例,计算机可读介质可以包括光学驱动器(例如,cd/dvd/蓝光)、硬盘驱动器、固态驱动器、闪存或其他非易失性介质。计算机可读介质还可以包括这样的介质,诸如只读存储器(rom),被配置为执行期望指令的fpga或asic,用于编程fpga或asic以执行期望指令的存储指令,可以在硬件中集成到其他电路中的知识产权(ip)块,或者在适当的情况下根据特定需求直接编码到例如微处理器、数字信号处理器(dsp)、微控制器的处理器上或任何其他合适的组件、设备、元件或对象中的硬件或微代码中的指令。本文中的非暂时性存储介质明确地旨在包括被配置为提供所公开的操作或使处理器执行所公开的操作的任何非暂时性专用或可编程硬件。

在本说明书和权利要求书中,各种元件可以“通信地”、“电气地”、“机械地”或以其他方式彼此“耦合”。这种耦合可以是直接的点对点耦合,或者可以包括中间设备。例如,两个设备可以经由便于通信的控制器通信地彼此耦合。器件可以经由诸如信号增强器、分压器或缓冲器的中间设备彼此电耦合。机械耦合的装置可以间接地机械耦合。

这里公开的任何“模块”或“引擎”可以指代或包括软件、软件栈、硬件、固件和/或软件的组合、被配置为执行引擎或模块的功能的电路或者如上所述的任何计算机可读介质。在适当的情况下,这些模块或引擎可以在硬件平台上或与硬件平台结合提供,该硬件平台可以包括硬件计算资源,诸如处理器、存储器、存储装置、互连、网络和网络接口、加速器或其他合适的硬件。这样的硬件平台可以作为单个单片设备(例如,以pc形状因子)提供,或者一些或部分功能被分布(例如,高端数据中心中的“复合节点”,其中计算、存储器、存储装置和其他资源可以是动态分配的,并且不需要彼此是本地的)。

这里可以公开流程图、信号流程图或示出以特定顺序执行的操作的其他图示。除非另有明确说明,或者除非在特定上下文中要求,否则该顺序应被理解为仅是非限制性示例。此外,在示出一个操作跟随另一个操作的情况下,也可能发生其他中间操作,这些操作可能是相关的或不相关的。一些操作也可以同时或并行执行。在操作被称为“基于”或“根据”另一项目或操作的情况下,这应该被理解为暗示该操作至少部分地基于或至少部分地根据其他项目或操作来进行。这不应被解释为暗示操作仅基于或排他地基于该项目或操作,或仅根据或排他地根据该项目或操作。

本文公开的任何硬件元件的全部或部分可以容易地在片上系统(soc)中提供,包括中央处理单元(cpu)封装。soc表示将计算机或其他电子系统的组件集成到单个芯片中的集成电路(ic)。因此,例如,可以在soc中全部或部分地提供客户端设备或服务器设备。soc可以包含数字、模拟、混合信号和射频功能,所有这些功能都可以在单个芯片衬底上提供。其他实施例可以包括多芯片模块(mcm),其中多个芯片位于单个电子封装内并且被配置为通过电子封装彼此紧密地相互作用。

在一般意义上,任何适当配置的电路或处理器可以执行与数据相关联的任何类型的指令以实现本文详述的操作。本文公开的任何处理器可以将元素或物品(例如,数据)从一个状态或事物变换为另一个状态或事物。此外,基于特定需求和实现,可以在任何数据库、寄存器、表、高速缓存、队列、控制列表或存储结构中提供被跟踪、发送、接收或存储在处理器中的信息,所有这些都可以是在任何合适的时间范围内引用。本文公开的任何存储器或存储元件应视为适当地包含在广义术语“存储器”和“存储装置”内。

实现本文描述的全部或部分功能的计算机程序逻辑以各种形式体现,包括但不限于源代码形式、计算机可执行形式、机器指令或微代码、可编程硬件和各种中间形式(例如,由汇编程序、编译器、链接程序或定位器生成的形式)。在一个示例中,源代码包括以各种编程语言实现的一系列计算机程序指令,诸如目标代码、汇编语言或诸如opencl、fortran、c、c++、java或html之类的高级语言,用于各种操作系统或操作环境,或者以spice、verilog和vhdl等硬件描述语言来实现。源代码可以定义和使用各种数据结构和通信消息。源代码可以是计算机可执行形式(例如,通过解释器),或者源代码可以被转换(例如,通过翻译器、汇编程序或编译器)成计算机可执行形式,或者转换成中间形式,例如作为字节码。在适当的情况下,任何前述内容可用于构建或描述适当的分立或集成电路,无论是顺序的、组合的、状态机还是其他。

在一个示例实施例中,附图的任何数量的电路可以在相关电子设备的板上实现。该板可以是通用电路板,其可以保持电子设备的内部电子系统的各种组件,并且还提供用于其他外围设备的连接器。基于特定配置需求、处理需求和计算设计,任何合适的处理器和存储器可以适当地耦合到板。注意,利用本文提供的众多示例,可以根据两个、三个、四个或更多个电子组件来描述交互。然而,这仅出于清楚和示例的目的而进行。应当意识到,可以以任何合适的方式合并或重新配置系统。沿着类似的设计替代方案,附图中的任何所示组件、模块和元件可以以各种可能的配置组合,所有这些配置都在本说明书的宽泛范围内。

可以向本领域技术人员确定许多其他改变、替换、变化、改变和修改,并且本公开旨在涵盖落入所附权利要求范围内的所有这样的改变、替换、变化、替代和修改。为了协助美国专利商标局(uspto)以及另外本申请中发布的任何专利的任何读者解释所附权利要求,申请人希望注意到,申请人:(a)不打算任何所附权利要求在其提交日存在时援引35usc的部分112(pre-aia)段6(6)或相同部分(post-aia)的段(f),除非在特定权利要求中特别使用“用于......的单元”或“用于...的步骤”的用语;以及(b)并不意图通过说明书中的任何陈述以任何未在所附权利要求中明确反映的方式限制本公开。

示例实现方式

在一个示例中公开了一种外围组件互连快速(pcie)控制器,用于在加速器存储器和主机存储器地址空间之间提供一致性存储器映射,包括:pcie控制器集线器,包括扩展,用于提供一致性加速器互连(cai)以提供加速器存储器和主机存储器地址空间之间的基于偏置的一致性跟踪;其中,所述扩展包括:映射引擎,用于提供pcie指令与用于cai的片上系统结构(osf)指令之间的操作码映射;以及隧道引擎,经由cai提供主机存储器操作到加速器存储器的可扩展存储器互连(smi)隧道。

进一步公开了一个示例,其中操作码映射是一对一映射。

进一步公开了一个示例,其中cai是加速器链路(ial)兼容的互连。

进一步公开了一个示例,其中osf指令包括用于执行从包括设备发现、设备配置、错误报告、中断提供、中断处理和直接存储器访问(dma)式数据传输的组中选择的操作的指令。

进一步公开了一个示例,还包括主机偏置到设备偏置(hbdb)翻转引擎,以使加速器能够冲洗主机高速缓存行。

进一步公开了一个示例,其中hbdb翻转引擎用于提供包括th=1、ph=01的事务层分组(tlp)提示。

进一步公开了一个示例,还包括qos引擎,其包括多个虚拟通道。

进一步公开了一个示例,其中虚拟通道包括用于存储器映射输入/输出(mmio)和配置业务的vc0,用于主机到加速器写入的vc1,以及用于主机从加速器读取的vc2。

进一步公开了一个示例,其中扩展被配置为提供非发布写入(npwr)操作码。

进一步公开了一个示例,其中npwr操作码包括保留的pcie字段fmt[2:0]=011b和类型[4:0]=1101b。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的读取,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的写入,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的数据读取完成,pcie分组格式包括3比特操作码、2比特元字段、2比特元值、4比特pcls和7比特pre。

进一步公开了包括pcie控制器的互连的示例。

进一步公开了包括互连的系统的示例。

进一步公开了该系统的示例,包括片上系统。

进一步公开了该系统的示例,包括多芯片模块。

进一步公开了该系统的示例,其中加速器是软件辅助设备存储器。

进一步公开了该系统的示例,其中加速器是自主设备存储器。

进一步公开了一个或多个有形的非暂时性计算机可读介质的示例,其上存储有指令以在主机平台上提供外围组件互连快速(pcie)控制器以在加速器存储器和主机存储器地址空间之间提供一致性存储器映射,包括以下指令:提供包括扩展的pcie控制器集线器,以提供一致性加速器互连(cai),以在加速器存储器和主机存储器地址空间之间提供基于偏置的一致性跟踪;其中,所述扩展包括:映射引擎,用于提供pcie指令与用于cai的片上系统结构(osf)指令之间的操作码映射;以及隧道引擎,经由cai提供主机存储器操作到加速器存储器的可扩展存储器互连(smi)隧道。

还公开了一个示例,其中操作码映射是一对一映射。

进一步公开了一个示例,其中cai是加速器链路(ial)兼容的互连。

进一步公开了一个示例,其中osf指令包括用于执行从包括设备发现、设备配置、错误报告、中断提供、中断处理和直接存储器访问(dma)式数据传输的组中选择的操作的指令。

进一步公开了一个示例,其中所述指令还提供主机偏置到设备偏置(hbdb)翻转引擎以使加速器能够冲洗主机高速缓存行。

进一步公开了一个示例,其中hbdb翻转引擎用于提供包括th=1、ph=01的事务层分组(tlp)提示。

进一步公开了一个示例,还包括qos引擎,其包括多个虚拟通道。

进一步公开了一个示例,其中虚拟通道包括用于存储器映射输入/输出(mmio)和配置业务的vc0、用于主机到加速器写入的vc1以及用于主机从加速器读取的vc2。

进一步公开了一个示例,其中扩展被配置为提供非发布写入(npwr)操作码。

进一步公开了一个示例,其中npwr操作码包括保留的pcie字段fmt[2:0]=011b和类型[4:0]=1101b。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的读取,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的写入,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中扩展被配置为提供通过pcie分组格式的数据读取完成,pcie分组格式包括3比特操作码、2比特元字段、2比特元值、4比特pcls和7比特pre。

进一步公开了一种计算机实现的方法的示例,该方法向主机平台提供外围组件互连快速(pcie)控制器,以在加速器存储器和主机存储器地址空间之间提供一致性存储器映射,包括:提供pcie控制器集线器服务;提供pcie控制器集线器的扩展,以提供一致性加速器互连(cai),以在加速器存储器和主机存储器地址空间之间提供基于偏置的一致性跟踪;其中提供扩展包括:提供pcie指令与用于cai的片上系统结构(osf)指令之间的操作码映射;并经由cai提供主机存储器操作到加速器存储器的可扩展存储器互连(smi)隧道。

进一步公开了一个示例,其中操作码映射是一对一映射。

进一步公开了一个示例,其中cai是加速器链路(ial)兼容的互连。

进一步公开了一个示例,其中osf指令包括用于执行从包括设备发现、设备配置、错误报告、中断提供、中断处理和直接存储器访问(dma)式数据传输的组中选择的操作的指令。

进一步公开了一个示例,还包括提供主机偏置到设备偏置(hbdb)翻转服务以使加速器能够冲洗主机高速缓存行。

进一步公开了一个示例,其中提供hbdb翻转服务包括提供包括th=1、ph=01的事务层分组(tlp)提示。

还公开了一个示例,还包括提供qos服务,包括提供多个虚拟通道。

进一步公开了一个示例,其中虚拟通道包括用于存储器映射输入/输出(mmio)和配置业务的vc0、用于主机到加速器写入的vc1以及用于主机从加速器读取的vc2。

进一步公开了一个示例,其中提供扩展包括提供非发布写(npwr)操作码。

进一步公开了一个示例,其中npwr操作码包括保留的pcie字段fmt[2:0]=011b和类型[4:0]=1101b。

进一步公开了一个示例,其中提供扩展包括提供通过pcie分组格式的读取,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中提供扩展包括提供通过pcie分组格式的写入,pcie分组格式包括4比特操作码、2比特元字段、2比特元值、2比特时间码和3比特snp类型。

进一步公开了一个示例,其中提供扩展包括提供通过pcie分组格式的数据读取完成,pcie分组格式包括3比特操作码、2比特元字段、2比特元值、4比特pcls和7比特pre。

进一步公开了一种装置的示例,该装置包括用于执行该方法的单元。

进一步公开了一个示例,其中用于执行该方法的单元包括处理器和存储器。

进一步公开了一个示例,其中存储器包括机器可读指令,所述机器可读指令在被执行时使得装置执行该方法。

还公开了一个示例,其中该装置是计算系统。

进一步公开了包括指令的至少一个计算机可读介质的示例,所述指令在被执行时实现方法或实现如前述示例中描述的装置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1