具有可分配i/o域和相干域的外围i/o设备

文档序号:1866273 发布日期:2021-11-19 浏览:14次 >En<

阅读说明:本技术 具有可分配i/o域和相干域的外围i/o设备 (Peripheral I/O device with assignable I/O domains and coherent domain ) 是由 J·达斯蒂达 S·艾哈迈德 I·A·斯沃布里克 于 2020-04-08 设计创作,主要内容包括:此处的示例描述了具有混合网关(140)的外围I/O设备(135),混合网关允许设备具有I/O域(145)和相干域(160)。也就是说,I/O设备(135)可以从传统的I/O模型中受益,其中I/O设备驱动程序(125)管理I/O设备(135)中的一些计算资源(150A、150B),并且将I/O设备(135)中其他计算资源(150C、150D)添加到由主机(150)计算系统中的硬件使用的相同相干域(160)的好处。因此,外围I/O设备(135)的相干域(160)中的计算资源(150C、150D)可以与主机通信,例如,主机(105)中CPU到CPU通信的方式。同时,I/O域(145)中的计算资源(150A、150B)可以获益于传统I/O设备模型的优势,该模型在主机(105)和所述I/O设备(135)(例如,DMA)之间进行大内存传输时提供效率。(Examples herein describe a peripheral I/O device (135) having a hybrid gateway (140) that allows the device to have an I/O domain (145) and a coherent domain (160). That is, the I/O device (135) may benefit from a traditional I/O model in which the I/O device driver (125) manages some of the computing resources (150A, 150B) in the I/O device (135) and adds other computing resources (150C, 150D) in the I/O device (135) to the benefit of the same coherence domain (160) used by hardware in the host (150) computing system. Thus, the computing resources (150C, 150D) in the coherent domain (160) of the peripheral I/O device (135) may communicate with the host, e.g., the manner of CPU-to-CPU communication in the host (105). At the same time, the computing resources (150A, 150B) in the I/O domain (145) may benefit from the advantages of a traditional I/O device model that provides efficiency in large memory transfers between the host (105) and the I/O device (135) (e.g., DMA).)

具有可分配I/O域和相干域的外围I/O设备

技术领域

本文公开的示例一般涉及具有混合网关以支持I/O域和相干域的外围设备。

背景技术

在传统的I/O模型中,主机计算系统在使用外围I/O设备独有的定制I/O设备驱动程序执行加速器任务或功能时与其外围I/O设备进行接口。拥有多个I/O设备或甚至同一I/O设备的多个实例意味着主机与多个I/O设备驱动程序或同一I/O设备驱动程序的多个运行副本进行接口。这会导致安全性和可靠性问题,因为I/O设备驱动程序通常由提供外围I/O设备的供应商开发,但它们必须与主机计算系统中的所有软件和硬件相集成。

同时,硬件缓存相干的、共享存储器的、多处理器范例在多处理器CPU上的执行任务或功能中利用了通用的、独立于指令集架构(ISA)的接口模型。通用的、独立于ISA的(例如,C-代码)接口模型随着处理单元的数量和这些处理单元可用的共享内存量而缩放大小。传统上,外围I/O设备无法从在主机计算系统上执行的CPU所使用的相干范例中受益。

发明内容

描述了用于在外围设备中建立I/O和相干域的技术。一个示例是外围I/O设备,其包括多个计算资源和被配置为将外围I/O设备通信地耦接到主机的混合网关。网关包括被配置为允许主机与分配给I/O域的多个计算资源的第一子集通信的I/O硬件和配置为允许主机与分配给相干域的多个计算资源的第二子集通信的相干硬件,其中第二子集与主机中的计算资源共享相干域。

在一些实施例中,多个计算资源包括可编程逻辑(PL)阵列,其中可编程逻辑阵列中的第一多个可编程逻辑块被分配给I/O域,并且可编程逻辑阵列中的第二多个可编程逻辑块被分配给相干域。

在一些实施例中,多个计算资源包括多个存储块,其中多个存储块的第一子集被分配给I/O域并且多个存储块的第二子集被分配给相干域,并且其中多个存储块的第一子集可以与第一多个可编程逻辑块通信但不能与第二多个可编程逻辑块通信,并且多个存储块的第二子集可以与第二多个可编程逻辑块通信但不能与第一多个可编程逻辑块通信。

在一些实施例中,I/O硬件包括被配置为识别从主机接收的数据中的I/O数据流量的I/O互连层。此外,相干硬件包括被配置为识别从主机接收的数据中的相干数据流量并将相干数据流量从PCI协议转换为相干互连协议的相干互连层,以及被耦接到相干互连层,并且被配置为将相干数据流量从相干互连协议转换为指令集架构(ISA)特定互连协议的相干处理引擎。

在一些实施例中,相干处理引擎包括被耦接到多个相干互连层的多个桥接器,其中多个桥接器将相干数据流量从相干互连协议转换为ISA特定互连协议;以及被耦接到多个桥接器和多个计算资源的第二子集的网格。

在一些实施例中,I/O硬件包括被耦接到I/O互连层的直接存储器访问(DMA)引擎。

在一些实施例中,混合网关包括可通信地耦接到I/O硬件和相干硬件的网关片上网络(NoC)。

在一些实施例中,外围I/O设备包括被耦接到多个计算资源的第一和第二子集的NoC,其中NoC是可配置的,使得流经NoC的I/O数据流量与流过NoC的相干数据流量的处理方式不同。

在一些实施例中,NoC可配置成为与所述相干数据流量相关的所述I/O数据流量提供(i)不同的服务质量(QoS)、(ii)延迟和(iii)带宽中的至少一个。

这里描述的一个示例是一种方法,该方法包括接收所述外围I/O设备中分配给I/O域第一数量的计算资源的指示;接收所述外围I/O设备中分配给相干域第二数量的计算资源的指示;将所述外围I/O设备配置成包括所述I/O域和所述相干域;和通过并行地使用所述I/O域和所述相干域来操作所述外围I/O设备。所述外围I/O设备包括混合网关,所述混合网关允许主机与在所述I/O域和所述相干域中的所述计算资源通信,并且其中所述第二数量的计算资源与所述主机中的计算资源共享所述相干域。

在一些实施例中,所述外围I/O设备包括可编程逻辑阵列和多个存储块,其中配置所述外围I/O设备包括将可编程逻辑阵列中的第一多个可编程逻辑块分配给I/O域,以及将可编程逻辑阵列中的第二多个可编程逻辑块分配给相干域;并且将多个存储块的第一子集分配给I/O域,以及将多个存储块的第二子集分配给相干域,其中多个存储块的第一子集能够与第一多个可编程逻辑块通信而不与第二多个可编程逻辑块通信,以及多个存储块的第二子集能够与第二多个可编程逻辑块通信而不与第一多个可编程逻辑块通信。

在一些实施例中,操作外围I/O设备包括从主机接收数据,其中数据包括I/O数据流量和相干数据流量;使用混合网关识别从主机接收的数据中的相干数据流量;将相干数据流量从PCI协议转换为相干互连协议;将相干数据流量从相干互连协议转换为ISA特定互连协议;将相干数据流量转发到第二数量的计算资源;使用混合网关识别从主机接收的数据中的I/O数据流量;并将I/O数据流量转发到DMA引擎。

在一些实施例中,配置外围I/O设备包括设置与所述片上网络相对应的参数,导致所述I/O数据流量在穿过所述片上网络时被以与相干数据流量不同的方式进行处理。

在一些实施例中,所述方法还包括,在并行使用所述I/O域和所述相干域进行操作所述外围I/O设备之后,接收将所述外围I/O设备中分配给所述I/O域的与所述第一数量不同的第三数量的计算资源的指示;接收将所述外围I/O设备中分配给所述相干域的与所述第二数量不同的第四数量的计算资源的指示;和重新配置所述外围I/O设备,使得所述I/O域具有所述第三数量,并且所述相干域具有第四数量。

在此描述的一个示例是一种片上系统(SoC),所述片上系统包括多个可编程逻辑块的可编程逻辑阵列,和被配置为将所述片上系统通信耦接到所述主机的混合网关。所述混合网关包括I/O硬件,所述I/O硬件被配置为允许所述主机将I/O数据流量传输到被分配给I/O域的所述多个可编程逻辑块的第一子集,以及相干硬件,所述相干硬件被配置为允许所述主机将相干数据流量传输到被分配给相干域的所述多个可编程逻辑块的第二子集,其中所述第一子集和所述第二子集是互斥的。

附图说明

为了能够详细理解上述特征的方式,可以通过参考示例实现方案来进行更具体的描述,其中一些在附图中示出。然而,应当指出,附图仅图示了典型的示例实施方式并且因此不应被认为是对其范围的限制。

图1是根据示例的主机的框图,主机被耦接到具有I/O域和相干域的外围I/O设备;

图2是根据示例的外围I/O设备的框图,其中可编程逻辑、存储器和片上网络被逻辑地划分为I/O域和相干域的;

图3是根据示例的将外围设备中的计算资源逻辑地划分为I/O域和相干域的流程图;

图4是根据示例的在外围设备中使用混合网关处理I/O和相干数据流量的流程图;

图5是根据示例的外围设备中的混合网关的框图;

图6示出了根据示例的计算系统,其中计算资源被逻辑地划分为I/O域和相干域;

图7图示了根据示例的可编程IC的现场可编程门阵列实施方式。

具体实施方式

下文将参考附图描述各种特征。应当指出,这些图可以按比例绘制也可以不按比例绘制,并且在整个图中,类似结构或功能的元件由相同的附图标记表示。应当指出,这些图只是为了便于对特征的描述。它们并不旨在作为说明书的详尽描述或作为对权利要求范围的限制。此外,所示示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例并且可以在任何其他示例中实践,即使没有如此说明,或者如果没有如此明确描述。

此处的示例描述了具有混合网关的外围I/O设备,该混合网关允许该设备具有I/O域和相干域。也就是说,I/O设备可以享受传统I/O模型的好处,其中I/O设备驱动程序管理I/O设备中的一些计算资源,以及将I/O设备中的其他计算资源添加到主机计算系统中的处理器(例如,中央处理单元(CPU))使用的相同相干域的好处。因此,外围I/O设备的相干域中的计算资源可以以类似于主机中CPU到CPU通信的方式与主机进行通信。这意味着计算资源可以利用相干类型的功能,例如直接通信(无需地址转换)、更高效的存储器使用、非统一存储器访问(NUMA)感知等。同时,I/O域中的计算资源可以受益于传统I/O设备模型的优势,这种模型在主机和I/O设备之间进行大内存传输(例如,直接存储器访问(DMA))时提供效率。

为了在同一个外围I/O设备中同时支持I/O域和相干域,该设备包括一个混合网关,其作为主机和I/O设备之间的中介。在一个实施例中,混合网关从主机接收数据流量(例如,PCIe数据流量),然后将其分成I/O数据流量和相干数据流量。I/O数据流量转发到I/O域中的计算资源,而相干数据流量转发到相干域中的计算资源。例如,外围I/O设备可以包括可编程逻辑(PL)阵列,其中阵列中的一些PL块被分配给I/O域,而剩余的PL块被分配给相干域。

此外,将计算资源分配到I/O域和相干域可以是动态的。例如,系统管理员可以确定在I/O域中没有足够的资源并重新配置外围I/O设备,使得以前分配给相干域的计算资源现在分配给I/O域。I/O设备可以用新分配方案被重新配置,并且混合网关可以同时支持I/O域和相干域的操作。

图1是根据示例的主机105的框图,其耦接到具有I/O域和相干域的外围I/O设备135。图1中的计算系统100包括主机105,其使用PCIe连接130通信耦接到外围I/O设备135。主机105可以代表单个计算机(例如,服务器)或相互关联的多个物理计算系统。在任何情况下,主机105包括操作系统110、多个CPU 115、和存储器120。OS 110可以是能够执行这里描述的功能的任何OS。在一个实施例中,OS 110(或管理程序或内核)为CPU 115和存储器120建立缓存相干的、共享存储器的多处理器范例。在一个实施例中,CPU 115和存储器120是OS管理的(或内核/管理程序管理)以形成遵循缓存相干的、共享存储器的多处理器范例的相干域。然而,如上所述,传统的I/O模型意味着外围I/O设备135(及其所有计算资源150)被排除在主机105中建立的相干域之外。相反,主机105依赖于被存储在其存储器120中的I/O设备驱动程序125、其管理I/O设备135中的计算资源150。也就是说,外围I/O设备135由I/O设备驱动程序125控制,并可通过I/O设备驱动程序125访问。

在本文的实施例中,共享存储器的多处理器范例,连同该范例的所有性能优势、软件灵活性和减少的开销,可用于外围I/O设备135。此外,将I/O设备135中的计算资源添加到与CPU 115和存储器120相同的相干域允许通用的、独立于ISA的开发环境。如图1所示,外围I/O设备135中的一些计算资源150被分配给相干域160,该相干域160是与主机105中的计算资源(例如,CPU 115和存储器120)使用的相同的相干域160。

虽然计算资源150C和150D被逻辑地分配给相干域160,但计算资源150A和150B被分配给I/O域145。因此,I/O设备135受益于将计算资源150分配给两种域145、160。虽然I/O域145在主机105和I/O设备135之间进行大存储器传输时提供了效率,但相干域160提供了上述的性能优势、软件灵活性和减少的开销。通过将硬件计算资源150(例如,可编程逻辑、片上网络(NoC)、数据处理引擎和/或存储器)逻辑划分为I/O域145和相干域160,I/O设备135可以从这两种范例中受益。

为了使主机105能够发送和接收I/O数据流量和相干数据流量,外围I/O设备135包括混合网关140,其将在PCIe连接130上接收的数据分成I/O数据流量和相干数据流量.I/O数据流量被转发到I/O域145中的计算资源150A和150B,而相干数据流量被转发到相干域160中的计算资源150C和150D。在一个实施例中,混合网关140可以并行处理I/O数据流量和相干数据流量,使得I/O域145中的计算资源150可以与相干域160中的计算资源150并行执行。也就是说,主机105可以将任务分配给I/O域145和相干域160中的计算资源150,这可以并行执行那些任务。

外围I/O设备135可以是许多不同类型的I/O设备,例如可插拔卡(插入主机105的扩展槽)、片上系统(SoC)、图形处理单元(GPU)、现场可编程门阵列(FPGA)等。因此,虽然其余实施例讨论了包括可编程逻辑(例如,可编程逻辑阵列)的I/O设备135,但这些实施例可以应用于不具有可编程逻辑但仅包含硬化电路(这可以是软件可编程的)。此外,虽然这里的实施例讨论将计算资源150划分为两个域,但在其他实施例中,混合网关140可以被修改以支持I/O域145和相干域160内的附加域或多个子域。

图2是根据示例的外围I/O设备135的框图,其中可编程逻辑(PL)阵列205、存储块220、和NoC 230被逻辑地划分为I/O域145和相干域160。在该示例中,PL阵列205由多个PL块210形成。这些块可以被单独分配给I/O域145或相干域160。即,PL块210A和210B被分配给I/O域145,而PL块210C和210D被分配给相干域160。在一个实施例中,分配给I/O域的一组PL块210与分配给相干域的一组PL块210是互斥的,使得块之间没有重叠(例如,没有PL块210被同时分配给I/O域和相干域)。

在一个实施例中,将硬件资源分配给I/O域145或相干域160不影响(或不指示)I/O设备135中硬件资源的物理位置。例如,PL块210A和210C可以分配给不同的域,即使这些块在PL阵列205中彼此相邻。因此,虽然硬件资源在I/O设备135中的物理位置在逻辑上分配给I/O域145和相干域160时可以被考虑,但这不是必须的。

I/O设备135还包括分配给I/O域145和相干域160的存储器控制器215。在一个实施例中,由于存储器控制器215和相应的存储块220之间的物理互连,将其中一个存储器控制器215分配到I/O域145或相干域160意味着连接到存储器控制器215的所有存储块220也被分配给相同的域。例如,存储器控制器215可以耦接到一组固定的存储块220(其不耦接到任何其他存储器控制器215)。因此,存储块220可以被分配到与它们耦接到的存储器控制器215相同的域。然而,在其他实施例中,可以将耦接到相同存储器控制器215的存储块220分配给不同的域。

在一个实施例中,NoC包括允许I/O设备135中的硬件元件(例如,可配置数据处理引擎、存储块220、PL块210等)通过使用NoC 230发送和接收数据的接口元件。在一个实施例中,不是使用可编程逻辑来形成NoC 230,而是硬化形成NoC的部分或全部组件。在任何情况下,NoC 230都可以在I/O域145和相干域160之间进行逻辑划分。在一个实施例中,不是将NoC 230的不同部分分配给这两个域,而是将NoC的参数配置成为对应于I/O域145和相干域160的数据流量提供不同的服务级别。也就是说,在NoC 230中流动的两个域的数据流量可以使用相同的硬件元件(例如,交换机和通信链路),但硬件元件可能会有不同的处理方式。例如,NoC 230可以为两个不同的域提供不同的服务质量(QoS)、延迟、带宽。此外,出于安全原因,NoC 230还可以将I/O域145的流量与相干域160的流量隔离。

在另一实施例中,NoC 230可以防止I/O域145中的计算资源与相干域160中的计算资源进行通信。然而,在一个实施例中,可能是有利的是,允许分配给I/O域145的计算资源同分配给相干域160的计算资源进行通信。以前,这种通信将发生在I/O设备驱动程序125和主机105中的OS之间。相反,域间通信可以通过使用NoC 230(如果计算资源在设备135中相距很远)或PL阵列205中的结构到结构连接(如果分配给两个不同域的两个PL块210靠近在一起并且需要通信)而在I/O设备135内发生。

图3是根据示例的用于将外围设备中的计算资源逻辑地划分为I/O域和相干域的方法300的流程图。方法300开始于块305,其中主机接收用于I/O域的外围设备中的计算资源量的指示。在一个实施例中,主机可以为用户提供图形用户界面(GUI),该用户选择要分配给I/O域的外围设备中的计算资源量。例如,GUI可以包括文本框,用户可以输入PL块或存储器控制器/块的百分比以分配给I/O域。在另一个实施例中,GUI允许用户列出应该分配给I/O域的特定资源(例如,256kB的存储器)。

在块310,主机接收外围设备中用于相干域的计算资源量的指示。如上所述,主机可以显示单独的GUI,其使得用户能够选择分配给相干域的计算资源的百分比或量。在另一个实施例中,主机可以包括显示单个GUI的向导工具,该GUI使得用户能够在I/O域和相干域之间划分计算资源。例如,GUI可以包括允许用户在两个域之间划分诸如PL块、存储器控制器和存储块之类的计算资源的滑动条。该向导可以包括允许用户选择用于NoC的参数的另一个GUI(例如,将其带宽分配给两个域、建立QoS、建立安全/隔离,等等)。

在块315,主机确定I/O设备是否有足够的资源来满足在块305和块310发出的请求。例如,用户可能请求将500MB的内存分配给I/O域和将600MB内存分配到相干域,但I/O设备可能只有1GB的内存。或者,用户可以已请求为I/O域和相干域分配PL阵列中50%以上的PL块。在那些情况下,方法300进行到块320,其中主机向用户输出错误。方法300可以重复块305和310,因此用户可以选择满足I/O设备中硬件约束的计算资源。方法300还可以进一步细分在块305和块310中的每一个分配的资源。例如,在块305将可PL块210A和210B分配给I/O域145,而在块310将PL块210C和210D分配给相干域160。

然而,如果由用户提供的分配满足I/O设备的硬件约束,则方法300进行到块325,其中主机将外围设备配置为具有I/O域和相干域。在一个实施例中,相干域是在主机中具有计算资源的共享域。例如,在块310选择的计算资源形成相干域,相干域遵循具有CPU、存储器和主机中的其他硬件元素的缓存相干的、共享存储器的多处理器范例。同时,块305指示的计算资源形成I/O域。在一个实施例中,与相干域中的计算资源不同,主机中的计算资源位于与I/O域不同的域中。因此,主机可能仍然依赖已安装的设备驱动程序与I/O域中的计算资源进行通信(尽管通过使用如上文所述的NoC或PL阵列中的结构促进在相干域和I/O域之间的通信)。

在一个实施例中,主机通过使用位流和/或二进制代码配置外围设备。位流和二进制代码配置外围设备中的计算资源,因此这些资源可以在两个不同的域中运行。例如,为相干域选择的PL块可以使用PL阵列中的结构相互互连,同时与分配给I/O域的PL块隔离。此外,存储器控制器可能仅执行从同一域中的其他硬件元件接收的读取和写入请求。此外,NoC可以使用数据隔离技术来确保I/O数据流量与相干数据流量分开管理。也就是说,NoC可以识别两个域的数据流量之间的差异。因此,NoC可以为数据流量提供不同的带宽和QoS级别。

在块330,外围设备并行使用I/O域和相干域进行操作。外围设备可以使用I/O域和相干域中的计算资源并行执行任务(可能已由主机分配)。换句话说,外围设备可以支持并行运行的两个不同域。因此,主机可以将不同的任务分配给利用它们各自的配置的域。例如,需要大量数据传输的任务可以分配给I/O域中的计算资源,而受益于与主机中计算资源的紧密集成或通信的任务可以分配给外围设备的相干域中的计算资源。

在块335,主机确定它是否接收到重新配置这些域的请求。在这个示例中,外围设备中的域是可重新配置的,以便最初分配给I/O域的计算资源可以重新分配给相干域,反之亦然。例如,在操作外围设备后,用户(或主机上的监控软件)可以确定一个域中的计算资源比另一域中的计算资源空闲得多。例如,主机可以向一个域比另一个域更频繁地分配任务。作为响应,用户或监控软件可以通过重复方法300来请求将未充分利用的域中的一些计算资源重新分配给过度使用的域。这可以提高外围设备执行由主机分配的任务的整体能力。

图4是根据示例的用于在外围设备中使用混合网关来处理I/O数据流量和相干数据流量的方法400的流程图。在一个实施例中,方法400描述了用于操作混合网关以支持已使用例如图3中的方法300建立的外围设备中的多个域的技术。为了清楚起见,方法400的块结合图5并行地讨论,其中图5是根据示例的外围设备中的混合网关的框图。

在块405,混合网关140接收来自主机105的数据流量,其包含I/O数据流量和相干数据流量。也就是说,混合网关140可以使用相同的连接来接收以I/O域和相干域为目的地的数据流量。例如,主机105可以通过使用一个或多个PCIe连接130而被耦接到外围I/O设备135。

在块410,混合网关140分离I/O数据流量和相干数据流量。例如,相干数据流量可以具有向混合网关140指示相应数据是相干域的一部分的特殊报头或报头值,而没有这些报头或报头值的流量被识别为I/O数据流量。在该示例中,I/O数据流量和相干数据流量可以使用相同的协议(例如,PCIe)发送,但随后被混合网关140彼此分开。

为此,混合网关140包括一个或多个混合PCI控制器505,其可以从主机105接收数据并向主机105发送数据。每个混合PCI控制器505包括物理层510、链路层515、I/O互连层520和相干互连层525。在一个实施例中,PCI数据(无论它是否包含I/O数据流量或相干数据流量)由物理层510和链路层515处理。然而,混合PCI控制器505然后分离数据,使得I/O数据流量由I/O互连层520处理并且相干数据流量由相干互连层525处理。以这种方式,混合PCI控制器505具有I/O硬件组件和相干硬件组件,I/O硬件组件使控制器505与I/O域兼容,相干硬件组件使控制器505与相干域兼容。

在块415,混合网关140使用相干处理引擎540处理相干数据。如图5所示,相干互连层525连接到相干处理引擎540,相干处理引擎540用作混合PCI控制器505和分配给相干域的外围I/O设备135中的计算资源之间的中介。相干处理引擎540可以使用多种不同协议中的任一种来实现,这些协议允许将外围I/O设备上的计算资源添加到包括主机上的计算资源的相干域。例如,相干处理引擎540可以使用用于加速器的高速缓存相干互连(CCIX)来形成相干域。CCIX是一种高性能的芯片到芯片互连架构,可为异构系统架构提供缓存相干框架。CCIX为外围设备带来了内核管理的语义。高速缓存相干性可以随时自动地保持在主机105的CPU和系统中各种其他的加速器之间,这些加速器可以在任何数量的外围I/O设备中设置。

然而,除了CCIX之外,还可以使用其他相干互连协议,例如快速路径互连(QPI)或Omni-Path,以扩展主机105中的相干域以包括外围I/O设备135中的计算资源。即,相干处理引擎540可以被定制以支持任何类型的相干互连协议,这有助于形成包括I/O设备135中的计算资源的相干域。

在一个实施例中,相干处理引擎540中的组件被硬化(例如,不是通过使用可编程逻辑而形成),这可以提高其性能,因为引擎540的任务不仅可以为其域执行相干操作,而且还可以执行服务请求以确保在多处理器系统中保持相干性。在图5所示的实施例中,相干处理引擎540包括分别耦接到混合PCI控制器505、网格550和缓存器555之一的桥接器545。桥接器可以转换从相干互连协议(例如,CCIX、QPI、Omni-Path等)到ISA特定的互连协议(例如,x86、ARM、)的数据。换言之,桥接器545管理接口上的协议语义并管理与相干动作相关的存储器动作。

网格550是多处理器互连,其将数据路由到适当的缓存器555(或当从I/O设备135中的计算资源向主机105传输相干数据时的桥接器545)。

在块420,相干处理引擎540通过使用ISA特定互连协议将相干数据流量传输到I/O设备中在相干域中的计算资源。如上所述,桥接器545将相干数据流量从相干互连协议转换为ISA特定互连协议,然后从相干处理引擎540转发到图5中的PL阵列205。也就是说,缓存器555被耦接到PL阵列205中的本地缓存器560,本地缓存器560又耦接到地址转换缓存器(ATC)565,用于将存储器地址转换为本地存储器地址。相干数据流量然后可以由分配给相干域的阵列205中的PL块进行处理。

在块425,混合网关140通过使用非相干互连协议(例如,高级可扩展接口(AXI)协议)传输I/O数据流量。为此,网关140中的混合PCI控制器505使用I/O互连层520将接收到的I/O数据流量从PCI协议转换为非相干互连协议。然后可以将该数据转发到DMA引擎530以供分配给I/O域的Pl块进行处理。如果数据被转发到DMA引擎530,则引擎530可以使用网关NoC535(其在混合网关140中并且可以与NoC 230分开)来将数据传输到存储器控制器215中的一个。即,网关NoC 535通信地耦接到NoC 230,从而可以使用存储器控制器215和相应的存储块(图5中未示出)来执行DMA读取和写入请求。

因此,通过使用方法400,混合网关140可以从主机105接收I/O数据流量和相干数据流量,使用不同的硬件组件分离和处理数据流量,并将数据转发到适当的计算元件进行处理。此外,该过程也可反向工作,其中由PL、存储器等中的计算资源处理的数据被传输到混合网关140,然后使用PCIe连接130传输到主机105。

在一个实施例中,数据从主机105流向混合网关140,到互连层(I/O互连层520和相干互连层525),到PL阵列205(分配给I/O域的PL块和分配给相干域的PL块),然后到存储块(分配给I/O域的存储块和分配给相干域的存储块)。然而,在另一个实施例中,数据从主机105流向混合网关140,到互连层(I/O和相干),到存储块(I/O和相干存储块),然后到PL阵列205(I/O和相干PL块)。在一个实施例中,数据从PL阵列205到存储块,或从存储块到PL阵列205的传输,是通过在存储控制器215、NoC 230和PL阵列205之间的连接进行的。

图6图示了根据示例的具有逻辑地划分为I/O域和相干域的计算资源的计算系统600。系统600包括在协议、发现和配置方面作为外围设备参与的SoC 620。同时,作为相干域670一部分的硬件元件在主机135中由OS/内核(未示出)管理,作为主机135处理器-存储器复合体的处理器-存储器对等体。SoC 620中的可编程逻辑和NoC在通过使用I/O PL640、相干PL 645、逻辑655、和加速器逻辑650执行异构加速功能时提供设备上通信、流量流、和在I/O域675和相干域670之间的接口。

此外,系统600提供在I/O域675或相干域670中定位计算数据集、计算结果或在控制处理器和异构设备之间的任何通信握手(门铃、I/O中断、DMA描述符、信号量等)的灵活性。

系统组件,例如CPU、I/O设备、加速器、PL元件和存储器,可以通过使用这里描述的实施例在任一域中执行功能。同样在系统600内,诸如PL元件、NoC配置和带宽、以及片上存储器(例如,I/O管理的存储器660和相干存储器665)和主机连接存储器605之类的组件可以在I/O域675和相干域670之间逻辑地区分,以适应混合网关140用作为到两个域的服务器/主机的公共网关的特定系统和/或应用要求。

混合网关140中的硬件资源可分为I/O硬件630(例如图5中的I/O互连层520和DMA引擎530)和相干硬件635(例如相干互连层525和相干处理引擎540)。此外,I/O管理的存储器660和I/O设备驱动程序管理存储器610被分配给I/O域675,而SoC 620中的相干存储器615和主机连接存储器605和相干存储器665被分配给相干域670。

这里的实施例的一个优点是外围I/O设备可以由PL(而不是在主机CPU-内存复合体上运行的I/O设备驱动程序)控制和通信,PL被定制为执行控制和通信外围设备并卸载在主机CPU-内存复合体上运行的I/O设备驱动程序。PL反过来通过相干域与主机CPU-内存复合体作为对等体进行通信/协作。

这里的实施例的另一个优点是协处理器/加速器模型以及该模型提供的所有软件和性能效率可以被利用,而不需要异构设备包含CPU-内存复合体的相同ISA、相同存储器对等体。取而代之的是,具有外围连接的相干加速和通信允许相同处理器到处理器共享-存储器模型,使用与多处理器系统相同的处理器到处理器的、共享存储器模型,该模型也用于CPU到设备-加速器的通信。

这里的实施例的另一个优点是它们提供了一种集成解决方案,其具有共享NoC,该NoC具有QoS属性、QOS控制的共享资源/缓冲区以及可以根据用户需求划分到I/O外围设备功能和相干存储器加速器/记忆功能的每个部分。

图7图示了I/O外围设备135的FPGA 700实现方案,并且更具体地具有图2中的PL阵列205,其包括大量不同的可编程块,包括收发器37、CLB 33、BRAM 34、输入/输出块(“IOB”)36、配置和时钟逻辑(“CONFIG/CLOCKS”)42、DSP块35、专用输入/输出块(“IO”)41(例如,配置端口和时钟端口)和其他可编程逻辑39,例如数字时钟管理器、模数转换器、系统监控逻辑等。FPGA还可以包括PCIe接口40、模数转换器(ADC)38等。

在一些FPGA中,每个可编程块可以包括至少一个可编程互连元件(“INT”)43,其具有到同一块内可编程逻辑元件的输入和输出端48的连接,如图7顶部包含的示例所示。每个可编程互连元件43还可以包括到相同块或其他块中的相邻可编程互连元件的互连段49的连接。每个可编程互连元件43还可以包括到逻辑块(未示出)之间的通用路由资源的互连段50的连接。通用布线资源可以包括逻辑块(未示出)之间的布线通道,逻辑块(未示出)包括互连段(例如,互连段50)的轨道和用于连接互连段的交换机块(未示出)。通用路由资源的互连段(例如互连段50)可以跨越一个或多个逻辑块。可编程互连元件43连同通用路由资源一起为所示出的FPGA实现可编程互连结构(“可编程互连”)。

在示例的实现方案中,CLB 33可包括可以被编程以实现用户逻辑的可配置逻辑元件(“CLE”)44加上单个可编程互连元件(“INT”)43。BRAM 34除了包括一个或多个可编程互连元件以外,还可以包括BRAM逻辑元件(“BRL”)45。在一个实施例中,BRAM 34是存储器140的一部分,其可以在如上所述的重新配置期间保留存储的数据。通常块中包含的互连元件的数量取决于块的高度。在图示的示例中,BRAM块具有与五个CLB相同的高度,但也可以使用其他数量(例如,四个)。除了适当数量的可编程互连元件之外,DSP块35还可以包括DSP逻辑元件(“DSPL”)46。除了可编程互连元件43的一个实例之外,IOB 36还可以包括例如输入/输出逻辑元件(“IOL”)47的两个实例。本领域技术人员将清楚,被连接到IO逻辑元件47的实际的IO焊盘通常不限于输入/输出逻辑元件47的区域。

在图示的示例中,靠近管芯中心的水平区域(如图7所示)用于配置、时钟和其他控制逻辑。从该水平区域或列延伸的垂直列51用于跨FPGA的宽度分布时钟和配置信号。

一些利用图7中所示架构的FPGA包括额外的逻辑块,这些逻辑块破坏了构成FPGA大部分的常规柱状结构。额外逻辑块可以是可编程块和/或专用逻辑。

应当指出,图7仅用于说明示例性FPGA架构。例如,一行中逻辑块的数量、行的相对宽度、行的数量和顺序、行中包含的逻辑块类型、逻辑块的相对大小以及被包括在图7顶部的互连/逻辑实现方案纯粹是示例性的。例如,在实际的FPGA中,无论CLB出现在何处,都可以包括多于一个相邻的CLB 102行,以促进用户逻辑的有效实现,但相邻CLB行的数量随FPGA的整体尺寸而变化。

在上文中,参考了本公开中提出的实施例。然而,本公开的范围不限于具体描述的实施例。相反,所描述的特征和元素的任何组合,无论是否与不同的实施例相关,都被打算用来实施和实践预期的实施例。此外,尽管本文公开的实施例可以达到优于其他可能的解决方案或优于现有技术的优点,但是特定的优势是否通过给定的实施例实现并不限制本公开的范围。因此,前述方面、特征、实施例和优点仅是说明性的并且不被视为所附权利要求的要素或限制,除非在权利要求中明确陈述。

本领域技术人员将理解,本文公开的实施例可以体现为系统、方法或计算机程序产品。因此,各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或结合软件和硬件方面的实施例的形式,这些方面在本文中可以统称为“电路”、“模块”或“系统”。此外,各方面可以采用被包含在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有被包含在其上的计算机可读程序代码。

可以利用一种或多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备、或前述的任何适当的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或任何前述的适当组合。在本文的上下文中,计算机可读存储介质是可以包含或存储由指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。

计算机可读信号介质可以包括传播的数据信号,其中包含计算机可读程序代码,例如,在基带中或作为载波的一部分。这种传播的信号可以采用多种形式中的任何一种,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以不是计算机可读存储介质,而是可以通信、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用的任何计算机可读介质。

被包含在计算机可读介质上的程序代码可以使用任何合适的介质进行传输,包括但不限于无线、有线、光纤电缆、RF等,或前述的任何合适的组合。

用于执行本公开的方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合编写,包括面向对象的编程语言,例如Java、Smalltalk、C++等和传统的过程编程语言,例如“C”编程语言或类似的编程语言。程序代码可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。

下面参考根据本公开中呈现的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本公开的方面。应当理解,流程图和/或框图的每个方块,以及流程图和/或框图中的方块的组合,可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以生产机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令,创建用于实现流程图和/或框图方块中指定的功能/动作的方法。

这些计算机程序指令也可以存储在计算机可读介质中,该介质可以指导计算机、其他可编程数据处理设备或其他设备以特定方式运行,从而使被存储在计算机可读介质中的指令生产出制品包括实现流程图和/或框图块中指定的功能/动作的指令。

计算机程序指令也可以加载到计算机、其他可编程数据处理设备或其他设备上,以导致在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图块中指定的功能/动作的过程。

图中的流程图和框图示出了根据本发明的各种示例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每一块可表示模块、分段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实施方案中,方块中标注的功能可以不按照图中标注的顺序发生。例如,根据所涉及的功能,连续示出的两个框图实际上可以基本上并发地执行,或者有时可以以相反的顺序执行这些方块。还将注意到,框图和/或流程图说明的每个框图,以及框图和/或流程图说明中的框图的组合,可以由执行指定功能或动作、或实行专用硬件与计算机指令的组合的基于专用硬件的系统来实现。

虽然上述针对具体示例,但在不脱离其基本范围的情况下可以设计其他和进一步的示例,并且其范围由以下权利要求确定。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:计算存储装置与基于网络化的系统

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!