CN110659245A - 具有可编程多上下文加速器电路的系统 - Google Patents
具有可编程多上下文加速器电路的系统 Download PDFInfo
- Publication number
- CN110659245A CN110659245A CN201910457411.6A CN201910457411A CN110659245A CN 110659245 A CN110659245 A CN 110659245A CN 201910457411 A CN201910457411 A CN 201910457411A CN 110659245 A CN110659245 A CN 110659245A
- Authority
- CN
- China
- Prior art keywords
- interface
- host
- afc
- afcs
- afu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/763—ASIC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
本发明涉及具有可编程多上下文加速器电路的系统。提供了一种系统,其包括耦合到可编程加速协处理器的主处理器。协处理器可以包括用于实现物理功能和多个相关联的虚拟功能的逻辑。协处理器可以包括被配置成执行管理功能的静态可编程资源接口电路(PIC)和一个或多个部分重配置区域,其每个可以加载有加速器功能单元(AFU)。AFU还可以被划分为AFU上下文(AFC),其每个可以被映射到虚拟功能之一。PIC使得能够实现硬件发现/枚举和设备驱动器的加载,使得维持安全隔离和接口性能。
Description
技术领域
本发明涉及集成电路,并且更具体地涉及硬件加速平台中的可编程集成电路。
背景技术
可编程集成电路是一种类型的集成电路,其可以由用户编程以实现期望的定制逻辑功能。在典型场景中,逻辑设计者使用计算机辅助设计工具来设计定制逻辑电路。当设计过程完成时,计算机辅助设计工具生成配置数据。配置数据被加载到可编程集成电路上的存储器元件中,以将设备配置成执行定制逻辑电路的功能。
可编程设备可以用于大数据或快速数据应用中的协处理。例如,可编程设备可以用在数据中心中的应用加速任务中,并且可以在数据中心操作期间重新编程以执行不同的任务。通过将计算上密集型任务从主处理器卸载到可编程设备上的高度并行加速资源(有时称为协处理器或加速处理器),主处理器被释放以执行其他关键处理任务。因此,使用可编程设备作为硬件加速器可以帮助交付用于端到端云计算、联网、存储、人工智能、自动驾驶、虚拟现实、增强现实、游戏和其他数据中心应用的改进的速度、延时、功率效率和灵活性。
随着近年来云数据中心中的单个服务器的计算能力的显著增加,某些工作负载可能显著地未充分利用服务器的可用的处理能力。可用处理能力的这种未充分利用造成了服务器虚拟化的采用。服务器虚拟化允许多个虚拟机(VM)和容器作为独立的虚拟服务器运行在单个主处理器/服务器上。在硬件加速平台中,可编程集成电路(诸如连接到主处理器的现场可编程门阵列(FPGA)设备)被物理地划分为独立的区域,其每个被分配给虚拟机或容器中的对应一个或服务于虚拟机或容器中的对应一个。以这种方式物理地划分可编程资源或物理划分资源的时间复用使得能够通过有限数量的虚拟机同时使用FPGA设备。
在该上下文中,出现了本文描述的实施例。
附图说明
图1是根据实施例的可编程集成电路的图。
图2是根据实施例的采用硬件加速资源的说明性服务器的图。
图3A是示出根据实施例的用于上游存储器请求的说明性映射方案的图。
图3B是示出根据实施例的用于下游存储器请求的说明性映射方案的图。
图4是根据实施例的用于执行针对特定加速器功能单元上下文(AFC)的上下文级重置的说明性步骤的流程图。
图5是根据实施例的从物理功能的角度的说明性设备特征列表(DFL)的图。
图6是根据实施例的从虚拟功能的角度的说明性设备特征列表(DFL)的图。
图7是根据实施例的从物理功能的角度的虚拟化设备特征列表(DFL)的图。
图8是根据实施例的从虚拟功能的角度的虚拟化设备特征列表(DFL)的图。
图9是根据实施例的用于重配置加速器功能单元(AFU)的说明性步骤的流程图。
图10A是根据实施例的用于将虚拟功能分配给AFC的说明性步骤的流程图。
图10B是根据实施例的用于从AFC移除虚拟功能的说明性步骤的流程图。
具体实施方式
本实施例涉及用于将静态设备虚拟化技术(诸如,单根输入/输出虚拟化(SR-IOV)或可扩展输入/输出虚拟化(可扩展IOV))桥接到动态可重配置的可编程集成电路的方法和装置。服务器可以包括使用诸如可编程逻辑设备(PLD)或现场可编程门阵列(FPGA)设备之类的可编程设备来加速的主处理器。
可编程设备可以包括负责可编程资源管理功能的可编程资源接口电路(PIC),并且还可以包括一个或多个加速器功能单元(AFU),其可以被动态地重新编程以执行从主处理器卸载的一个或多个任务。每个AFU可以进一步在逻辑上划分为虚拟化AFU上下文(AFC)。PIC可以是用于经由虚拟化通信接口将特定PCIe(外围组件互连高速)功能(诸如物理功能或虚拟功能)映射到可编程设备中的一个或多个AFC的静态区域。主处理器(例如,主机驱动器)处理硬件发现/枚举和设备驱动器的加载,使得维持安全隔离和接口性能。
例如,PIC可以包括使得主处理器能够执行具有访问隔离的动态请求/响应路由(route)(例如,用于处理从AFC到主处理器的上游存储器请求、从主处理器到AFC的下游存储器请求、AFC中断、用于AFC的功能级重置等)并执行AFC发现和标识(例如,使用具有可编程或虚拟化设备特征头的设备特征列表、使用接收到的AFU元数据文件更新AFU/AFC标识符等)的机制。以这种方式配置,单个可编程设备上的虚拟化AFC可以高效地扩展以支持和对接主处理器/服务上运行的多于四个虚拟机(VM)、多于10个VM、多于20个VM、多于30个VM、10-100个VM、多于100个VM、或数百/数千个VM、过程容器、或主机服务器上运行的主机过程。通过使用PIC来经由可用平台能力在主机/客户OS和AFC之间创建动态关联,可以从AFU开发者抽象出特定的平台虚拟化能力(例如,SR-IOV或可扩展IOV),使得AFU开发者跨平台看到一致接口。
本领域技术人员将认识到,可以在没有这些具体细节中的一些或所有的情况下实践本示例性实施例。在其他情况下,没有详细描述公知的操作,以免不必要地模糊本实施例。
图1中示出了诸如可编程逻辑设备(PLD)100的可编程集成电路的说明性实施例,其可以被配置成实现电路设计。如图1所示,设备100(例如,现场可编程门阵列集成电路管芯(die))可以包括功能块的二维阵列,例如包括逻辑阵列块(LAB)110和其他功能块,诸如随机存取存储器(RAM)块130和数字信号处理(DSP)块120。诸如LAB 110的功能块可以包括较小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号并对输入信号执行定制功能以产生输出信号。LAB 110还可以被分组为有时称为逻辑扇区的更大的可编程区域,其由对应的逻辑扇区管理器单独管理和配置。将设备100上的可编程逻辑资源分组为逻辑扇区、逻辑阵列块、逻辑元件或自适应逻辑模块仅仅是说明性的。通常,设备100可以包括任何合适大小和类型的功能逻辑块,其可以根据任何合适的逻辑资源层次结构来组织。
可编程逻辑设备100可以包含可编程存储器元件。存储器元件可以使用输入-输出元件(IOE)102来加载配置数据(也称为编程数据或配置位流)。一旦加载,存储器元件每个都提供对应的静态控制信号,其控制相关联的功能块(例如,LAB 110、DSP 120、RAM 130、或输入-输出元件102)的操作。
在典型的场景中,加载的存储器元件的输出被施加到功能块中的金属氧化物半导体晶体管的栅极以打开或关闭某些晶体管,从而配置包括路由路径的功能块中的逻辑。可以以这种方式控制的可编程逻辑电路元件包括复用器的部分(例如,被用于在互连电路中形成路由路径的复用器)、查找表、逻辑阵列、AND、OR、NAND和NOR逻辑门、通过门(passgate)等。
存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,诸如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程和激光编程结构、这些结构的组合等。由于存储器元件在编程期间加载有配置数据,所以存储器元件有时被称为配置存储器、配置随机存取存储器(CRAM)、或可编程存储器元件。可编程逻辑设备(PLD)100可以被配置成实现定制电路设计。例如,配置RAM可以被编程为使得LAB 110、DSP120和RAM 130、可编程互连电路(即,垂直通道140和水平通道150)以及输入-输出元件102形成电路设计实现。
另外,可编程逻辑设备可以具有输入-输出元件(IOE)102,其用于驱动信号离开设备100并且用于从其他设备接收信号。输入-输出元件102可以包括并行输入-输出电路、串行数据收发器电路、差分接收器和发送器电路、或被用于将一个集成电路连接到另一集成电路的其他电路。
设备100还可以包括以垂直路由通道140(即,沿PLD 100的垂直轴形成的互连)和水平路由通道150(即,沿PLD 100的水平轴形成的互连)的形式的可编程互连电路,每个路由通道包括路由至少一个电线的至少一个迹线。如果期望,则互连电路可以包括管线(pipeline)元件,并且可以在操作期间访问存储在这些管线元件中的内容。例如,编程电路可以提供对管线元件的读和写访问。
注意,除了图1中描绘的互连电路的拓扑之外,其他路由拓扑旨在被包括在本发明的范围内。例如,路由拓扑可以包括在对角线上行进的或者沿它们的范围的不同部分水平和垂直地行进的电线以及在三维集成电路的情况下垂直于设备平面的电线,并且电线的驱动器可以位于与电线的一端不同的点处。路由拓扑可以包括跨越基本上所有PLD 100的全局电线、诸如跨越PLD 100的部分的电线的部分全局电线、特定长度的交错电线、更小的局部电线、或任何其他合适的互连资源布置。
图2是根据实施例的采用硬件加速资源的诸如服务器200的说明性系统的图。如图2所示,服务器200可以包括主处理器,诸如耦合到可编程设备100的中央处理单元(CPU)202。可编程设备100可以被配置成为主CPU 202提供加速硬件资源,并且有时被称为协处理器或可重配置加速设备。主处理器202还可以经由路径201耦合到CPU存储器203。
主机操作系统(主机OS)204被加载在主CPU 202上。主机操作系统204可以实现管理程序216,其促进在主处理器202上使用一个或多个虚拟机(VM)210-1。虚拟机是自包含的虚拟化分区,其模拟独立的硬件计算资源。管理程序216可以是在主处理器202上运行的软件或固件的部分,并且可以用作管理系统的硬件资源的虚拟机监视器(有时也称为虚拟机管理器或VMM),因此它们在服务器200上的虚拟机(VM)之间高效地分布。
每个虚拟机可以被称为运行其自己的客户操作系统(OS)的客户机。在某些虚拟化架构中,诸如VM0(托管主机OS 204的VM)的给定虚拟机可以用作父分区、控制域(“域0”)或根分区,其管理机器级功能,诸如设备驱动器、功率管理、以及VM的添加/移除(例如,VM0具有用于管理虚拟机创建、销毁和配置的控制堆栈)。控制域VM0具有包括直接访问硬件的能力的特殊特权,处理对系统输入-输出功能的所有访问,以及与任何剩下的VM(例如,VM1、VM2等)交互。每个虚拟机210-1可以用于运行一个或多个用户应用。管理程序216向VM的客户OS呈现虚拟操作平台,并在共享虚拟化硬件资源的同时管理客户操作系统的执行。管理程序216可以直接在主机的硬件上运行(作为类型1裸机管理程序),或者可以在现有的主机操作系统之上运行(作为类型2托管管理程序)。如果期望,则可以使用附加的虚拟化驱动器和工具(未示出)来帮助每个客户虚拟机更高效地与主CPU 202的底层物理硬件或由可编程设备100提供的硬件加速资源通信。通常,处理器202可以被配置成托管至少两个VM、两到十个VM、多于10个VM、10-100个VM、多于100个VM、或任何合适数量的虚拟机。
除了托管虚拟机210-1之外,CPU 202还可以托管一个或多个容器210-2(有时称为过程容器)。与有具有其自己的存储器管理、设备驱动器和守护进程的完整客户OS的虚拟机210-1相反,容器210-2共享主机OS 204并且比VM相对重量更轻且更便携。容器210-2是“操作系统虚拟化”的产物,并且允许在同一主机内核上运行多个隔离的用户空间实例(即,主机内核在每个运行其自己的工作负载的不同容器之间共享)。该隔离保证特定容器内的任何过程不能看到该容器外的任何过程或资源。
类似于管理程序216为VM 210-1提供的内容,用户空间中的容器管理器/引擎211可以用于在服务器200上运行一个或多个容器210-2。容器管理器211利用虚拟操作平台呈现隔离的容器应用,并且在共享虚拟化硬件资源的同时管理隔离的容器应用的执行。通常,处理器202可以被配置成托管共享相同主机OS内核的至少两个容器、两个到十个容器、多于10个容器、10-100个容器、100-1000个容器、数千个容器、或任何合适数量的容器。作为示例,主CPU 202可以被配置成托管过程容器,诸如Docker、Linux容器、Windows Server容器和/或其他类型的过程容器。在其他合适的实施例中,主CPU 202可以被配置成托管机器容器,诸如由Microsoft Corporation开发的Hyper-V容器、由OpenStack Foundation管理的Kata容器、和/或其他类型的轻量虚拟机。
此外,CPU 202可以托管一个或多个过程210-3(有时称为主机或应用过程),其在过程210-3具有其自己的地址空间、程序、CPU状态和过程表条目的意义上类似于容器210-2。与在其文件系统环境中封装一个隔离程序与其所有依赖性的容器210-2相反,过程210-3不在文件系统环境中封装任何依赖共享库。过程210-3可以在OS之上运行。通常,处理器202可以被配置成托管内核上的至少两个过程210-3、两到十个过程、多于10个过程、10-100个过程、100-1000个过程、数千个过程、或任何合适数量的过程。
通常,可以使用存储在非暂时性计算机可读存储介质(例如,有形计算机可读存储介质)上的软件代码来实现在主CPU 202上运行的软件。软件代码有时可以称为软件、数据、程序指令、指令、脚本或代码。非暂时性计算机可读存储介质可以包括诸如非易失性随机存取存储器(NVRAM)的非易失性存储器、一个或多个硬盘驱动器(例如,磁驱动器或固态驱动器)、一个或多个可移动闪存驱动器或其他可移动介质等。存储在非暂时性计算机可读存储介质上的软件可以在主处理器202的处理电路上执行。
主处理器202可以经由诸如主机接口230的主机接口与可编程设备100通信。主机接口230可以是计算机总线接口,诸如由PCI特别兴趣小组或PCI-SIG开发的PCIe(外围组件互连高速)接口、用于加速器的高速缓存相干互连(CCIX)、Gen-Z、开放式相干加速器处理器接口(OpenCAPI)、英特尔加速器链路(IAL)、Nvidia的NVLink、或其他计算机总线接口。通常,主机接口230可以使用其他多个数据通道(例如,至少2个通道、至少4个通道、至少8个通道、至少16个通道、至少32个通道、至少64个通道等)、单个数据通道、并行数据总线、串行数据总线、或可以支持至少250 MBps(兆字节/秒)、500 MBps、1 GBps(千兆字节每秒)、5GBps、10 GBps、16 GBps、32 GBps、64 GBps或更高的数据传输速率的其他计算机总线标准来实现。
运行虚拟机210-1、容器210-2、主机过程210-3和其他软件级实体(有时统称为“任务卸载模块”,其将任务卸载到可编程加速器设备100)的单个主处理器202将需要在各种类型的任务卸载模块之间共享主机接口230。为了支持这一点,PCI-SIG发布了对PCIe规范的扩展,称为单根输入/输出虚拟化(SR-IOV),其允许虚拟环境中的不同虚拟机、容器和软件过程共享单个PCIe硬件接口。SR-IOV规范使得单根功能(例如,以太网端口)能够表现为多个单独的物理设备,每个具有其自己的PCIe配置空间。具有SR-IOV能力的物理设备可以配置成在PCI配置空间中表现为虚拟总线上的多个功能。如果期望,则本文描述的技术也可以应用于由英特尔公司开发的可扩展IOV(SIOV)或其他设备虚拟化标准。
英特尔可扩展IOV是基于PCIe的虚拟化技术,其使得能够实现跨隔离域的I/O设备的高度可扩展和高性能共享,同时包含用于端点设备硬件的成本和复杂性以支持这种可扩展共享。取决于使用模型,隔离域可以是虚拟机、过程容器、机器容器或应用过程。与在PF上创建多个VF的SR-IOV的粗粒度设备划分方法不同,可扩展IOV使得软件能够利用硬件辅助灵活地组成虚拟设备,以用于以更精细粒度的设备共享。组成的虚拟设备上的性能关键操作直接映射到底层设备硬件,而非关键操作通过主机中的设备特定组成软件来模拟。
SR-IOV定义了跨越跨可编程设备100和主机OS 204的硬件/软件接口的两种类型的主机可分配接口或PCI功能:(1)物理功能和(2)虚拟功能。物理功能(PF)(诸如PF 232)是全特征PCIe功能,其可以像典型的PCI设备一样被发现、管理和配置,并具有其自己的独立的基地址寄存器(BAR)组。物理功能232可以由物理功能驱动器206管理,其可以是主机OS204的内核空间的部分。物理功能232通过分配相关联的虚拟功能(VF)234来配置和管理SR-IOV功能。物理功能232因此有时被称为“特权”主机可分配接口。单个物理功能232可以具有多于10个、多于100个、多达256个、多于1000个、多于60000个、多于100000个、或至少一百万个相关联的虚拟功能234。如果期望,则每个主机也可以具有多于一个相关联的物理功能232。
与物理功能232相反,虚拟功能234是轻量PCIe功能(即,与PF相比,较不复杂),其仅可以控制其自己的行为。每个虚拟功能从相关联的物理功能导出并共享相关联的物理功能的资源。每个虚拟功能234还可以具有其自己的独立的基地址寄存器(BAR)组,并且可以由虚拟功能驱动器214(其是在虚拟机210-1之一上运行的客户OS的内核空间的部分)、用户模式驱动器(其是在容器之一上运行的程序的用户空间的部分)、或用户模式驱动器(其是作为应用过程210-3之一的部分而运行的程序的用户空间的部分)来管理。换句话说,也可以将虚拟功能分配给容器210-2以使得能够实现硬件卸载。在其他场景中,虚拟功能BAR被映射到过程210-3的地址空间以允许硬件提交。与被认为是特权主机可分配接口的物理功能相反,虚拟功能234因此有时被称为“非特权”主机可分配接口。通常,每个虚拟机210-1、容器210-2或过程210-3可以映射到一个或多个虚拟功能。以这种方式配置,虚拟功能具有接近本机的性能,并且提供比半虚拟化驱动器和模拟访问更好的性能,并且还增加了数据中心内的主机服务器上的虚拟化客户密度。
可编程设备100可以包括用于实现物理功能232和虚拟功能234的逻辑。仍然参考图2,可编程设备100可以包括经由虚拟化通信接口254耦合到一个或多个加速器功能单元(AFU)的可编程资源接口电路(PIC)250。接口电路250(有时称为FPGA接口单元或FIU)被配置为静态逻辑部分,其提供基本基础设施功能,诸如存储器访问隔离、设备管理和主机/存储器对接。
可编程设备100还可以包括一个或多个用户可编程区域,其可以基于用户请求或工作负载需要而动态地和部分地重配置。其中加载设备100上的可编程逻辑的仅某一子集的过程有时被称为“部分重配置”。这些部分重配置(PR)区域中的每个可以用作“插槽(slot)”或容器,其中可以加载加速器功能单元(AFU)252。加速器功能单元252被用于从主CPU 202卸载用于应用的计算操作以改进性能。如上所述,物理功能232主要负责管理功能。因此,AFU 252的动态编程可以由物理功能驱动器监督。其中可编程设备100加载有两个AFU252的图2的示例仅仅是说明性的。通常,设备100可以设有仅一个AFU、多于两个AFU、2-10个AFU、多于10个AFU、10-100个AFU、或任何合适数量的加速器功能单元。设备100上的每个AFU252可以设有相同或不同数量的AFC 252。
根据实施例,AFU区域252可以进一步在逻辑上被细分为不同的AFU上下文(AFC)256,其每个用作加速的单独单元,其可以独立地分配给对应的不同软件卸载实体,诸如VM210-1、容器210-2或主机过程210-3。通常,每个任务卸载实体可以映射到一个或多个虚拟功能。
每个AFC 256可以是相同加速器的片段(例如,作为相同AFU的部分)、完全不同的加速器(例如,作为不同AFU的部分)、用于使得能够实现到共享加速器资源的工作提交的一组门户寄存器、或其他逻辑分割。例如,具有八个引擎的压缩AFU可以将AFC暴露为空间共享(即,将8个压缩引擎中的每个暴露为不同的AFC)、或者时间共享(即,暴露允许到实际引擎的描述符提交的一组门户/门铃寄存器,其在不同AFC之间时间共享或时间复用)。
通常,AFU 252内的所有AFC 256被重配置在一起并经由单个通信接口254连接到PIC 250。主机中的PF驱动器枚举可编程设备100并管理PIC 250。主机驱动器共同标识不同的AFC并在与每个AFC相关联的硬件与对应的用户应用软件/驱动器之间创建关联。作为示例,一个AFC 256可以被映射到一个虚拟功能234或物理功能232。这仅仅是说明性的。作为另一示例,可以将多个AFC 256(其可以是相同AFU或不同AFU的部分)映射到一个VF 234。如果期望,则也可以将一个AFC 256映射到两个或更多个虚拟功能。
其中AFC被映射到PCIe物理功能或PCIe SR-IOV虚拟功能的上述示例仅仅是说明性的。通常,AFC可以被映射到任何主机可分配接口,诸如可扩展IOV可分配设备接口(ADI)或与非PCIe主机接口相关联的其他主机可分配接口。
为了支持AFU 252逻辑细分为多个AFC 256,可以虚拟化通信接口254以支持AFU共享。特别地,横跨接口254的所有事务可以用上下文标识符(ID)标记来标记。该上下文ID标记被用于确保在主机和AFC上的软件应用之间的请求和响应的正确路由以及提供安全隔离。
在一个合适的布置中,上下文ID标记可以用于提供不同AFC存储器请求之间的地址隔离。来自AFC 256的所有“上游”请求(例如,从AFC到主CPU的存储器请求)利用上下文_id标记,其将每个存储器请求的命名空间扩展为<上下文_id,地址>,其中地址(地址)可能表示物理地址或虚拟地址。PIC 250可以使用上下文映射表260来将特定上下文_id映射到平台特定标识符。在物理功能中启用SR-IOV之后,可以通过该虚拟功能的总线、设备和功能号(有时统称为“BDF号”)访问每个虚拟功能的PCI配置空间。
图3A示出了上下文映射表260-1,其中上游存储器请求的上下文_id可以用作查找对应的PCIe{总线,设备,功能}号的索引。每个AFC具有唯一上下文_id,其根据分配的BDF号映射到对应的PCIe功能。如上所述,可以将多个AFC映射到一个虚拟功能。表260-1中的对应BDF号可以添附到PCIe传输层分组,并发送到主处理器以用于进一步处理。如果服务器200实现可扩展IOV(SIOV)支持或共享虚拟存储器(SVM)支持,则上游存储器请求中的上下文_id可以被映射到对应的PCIe{总线,设备,功能,PASID}号,其中PASID是过程地址空间ID。
在任何情况下,PIC 250向每个AFU 252提供抽象的级别,并且负责转换存储器请求命名空间。以这种方式操作虚拟化加速平台提供了将AFU的通信语义与底层平台语义(例如,与PCIe特定语义)解耦的技术优势。通常,上下文_id应足够宽以仅覆盖支持的AFC的数量,其可能比平台命名空间标识符宽度小得多。减小或最小化上下文_id的大小或位宽可以节省设备100上的宝贵的电线空间。
从主CPU对来自AFC的上游请求的响应或由主机发起的MMIO事务需要被路由回到该AFC。该路由机制可以取决于AFC如何连接到PCIe物理和虚拟功能。在第一模式中,至少一些或可能所有的AFC与物理功能相关联并通过物理功能访问。因此,第一模式有时被称为“PF模式”。在第二模式中,每个AFC与单个虚拟功能相关联,并且用于AFC的所有主机通信通过相关联的虚拟功能发生。因此,第二模式有时被称为“VF模式”。系统还可以以第三(混合)模式操作,其中一些AFC被映射到物理功能,而其他AFC被映射到对应的虚拟功能。
在PF模式中,物理功能的BDF号被用于多个AFC,因此BDF号本身不能确定上下文_id。为了在PF模式中解决此问题,PCIe具有一种机制,凭此,请求可以与标记相关联,并且保证响应返回相同的标记。例如,请求的上下文_id可以保存在当发送上游请求时通过PCIe标记来索引的内部表中(参见例如图2中的表262)。在处理响应时,返回的PCIe标记可以用于查找内部表262以检索正确的上下文_id。该内部表不需要暴露给主机软件,并且可以由PIC250更新和读取。
在VF模式中,给定虚拟功能的PCIe BDF号,PIC 250可以唯一地确定AFC的上下文_id。对于“下游”请求(例如,从主CPU回到AFC的存储器请求或由主CPU发起的MMIO事务),可以使用诸如图3B的反向上下文映射表260-2的反向上下文映射表来将平台特定标识符(例如,具有或不具有PASID的BDF号)映射到对应的上下文_id。当整个设备100被静默(quiesce)时,反向上下文映射表260-2可以由主机PCIe驱动器(例如,PF驱动器206)编程。替代地,当对应的(一个或多个)AFC被静默时,可以实现表260-2中的各个AFC条目的更细粒度的编程。
一些实施例可以将AFC命名空间映射到用于主机访问的物理功能。在PF模式中(即,当所有AFC被映射到物理功能时),诸如存储器映射输入/输出(MMIO)请求的所有请求将使用相同的平台特定标识符。在这种情况下,物理功能的MMIO地址范围将必须足够大,以映射跨所有AFC的总MMIO空间。然后,可以使用作为PIC 250的部分提供的诸如地址解码器264的附加地址解码器来解码来自与物理功能BAR相关联的给定MMIO地址的上下文_id。如果期望,则地址解码器264也可以被形成为用于解码AFU地址的AFU的部分和/或用于解码AFC地址的AFC的部分。在其中一些AFC被映射到物理功能并且其他AFC被映射到虚拟功能的混合模式中,将标记存储在内部表262中,使用反向映射表来标识平台特定标识符,使用地址解码器264来解码MMIO地址,和/或可以同时使用这些技术的某种组合。
类似于发出上游存储器请求,AFC可以可选地发出中断。来自AFC的中断请求也利用上下文_id来标记,其以与结合图3A所示和描述的上游请求流程类似的方式处理。换句话说,中断请求可以具有上下文_id,其用于根据上下文映射表260-1查找对应的平台特定标识符。
诸如SR-IOV的某些规范要求设备支持每个虚拟功能的功能级重置(FLR)。在诸如在PF模式或混合模式期间的一些场景中,可能存在设备管理寄存器,其被用于触发用于一个或多个AFC的上下文级重置(CLR)。上下文级重置也可以经由功能级重置发起。此外,对上下文映射表260的更新还要求使对应的受影响的AFC静默的方式。图4是用于执行用于特定AFC的上下文级重置的说明性步骤的流程图。
在步骤400处,虚拟功能可以发起特定AFC上的上下文级重置(CLR)。在步骤402处,PIC 250中的前端模块可以用于过滤以特定AFC为目标的事务。例如,可以指示PIC 250逐渐地丢弃、排出、冲洗或以其他方式处理来自指定AFC的所有上游请求和/或逐渐地丢弃/排出/冲洗或以其他方式处理以特定AFC为目标的所有下游请求。
在步骤404处,可以通过使用PIC 250将CLR消息发送到特定AFC来开始AFC重置。响应于接收到CLR消息,特定AFC预期成在X个周期内(例如,在1-2个时钟周期、1-5个时钟周期、1-10个时钟周期、10-100个时钟周期等内)停止发出用特定上下文_id标记的请求。在步骤406处,AFC可以可选地将CLR确认返回到PIC 250。
在步骤408处,PIC 250可以等待直到来自特定AFC的所有未完成事务被清除(flush out)(例如,直到所有未决的上游请求已经从主CPU接收到响应并且直到所有未决的下游请求已经从AFC接收到响应或已经超时)。在步骤410处,可以移除或暂停结合步骤402描述的PIC 250的前端事务过滤。
在步骤412处,可以通过允许特定AFC恢复向主CPU发送请求和从主CPU接收请求来终止CLR操作。为了结束特定CLR,PIC 250可以向重置下的特定AFC发送CLR结束消息,重置下的特定AFC可以向PIC 250发送CLR结束消息,或者PIC 250可以向不同的AFC发送新的CLR请求(假设PIC 250在任何给定时间点处只能处理一个AFC重置)。
图4的步骤仅是说明性的,并不旨在限制本实施例的范围。如果期望,可以修改或省略现有步骤中的至少一些;可以并行执行一些步骤;可以添加或插入附加步骤;并且某些步骤的次序可以反向或更改。如果期望,可以使用实现用于多上下文AFU的CLR的其他方式。
根据另一实施例,可编程设备100可以被配置成维持设备特征列表(DFL),其允许主CPU 202或在主CPU 202上运行的软件发现、枚举和标识在可编程加速器设备100上存在哪些AFC 256。特别地,主处理器上的物理功能可以管理、重新编程或更新设备特征列表。设备特征列表将对特定AFC的访问映射到在主CPU上运行的适当用户应用(例如,以允许由多个用户应用共享单个AFU内的不同AFC)。DFL是包括设备特征头(DFH)的链接列表的数据结构。每个DFH描述设备100的特定子特征。例如,每个DFH提供标识信息,使得可以由主机软件发现对应的特征,以及从而描述与该特征相关的相关资源和属性。如下面将结合图5-8所述,单个AFU可以具有一个或多个相关联的DFH。
图5是PF模式中、VF模式中或混合模式中的从物理功能的角度的说明性设备特征列表500的图。在一种合适的布置中,主CPU 202可以使用存储器映射的I/O(MMIO)方案与可编程设备100对接。通常,设备特征列表在设备100的可编程逻辑中实现,并且经由基地址寄存器(BAR)暴露给主机。如图5所示,与物理功能相关联的MMIO基地址寄存器(BAR)映射到所有DFH节点,并具有加速器系统的完整视图。PF驱动器可以遍历设备特征列表以枚举所有端口和AFC DFH。具体地,PF MMIO BAR指向PIC DFH,其暴露管理寄存器510。例如,寄存器510可以包括用于遥测的寄存器(例如,用于向主机暴露错误和事件以用于监视和管理目的的寄存器)、用于重新编程特定AFU插槽的寄存器、包含可重置性能计数器和度量的寄存器、以及用于一般PIC管理的其他寄存器。
PIC DFH可以指向端口-0 DFH,其暴露端口控制寄存器512。寄存器512是端口级寄存器,其用于控制PIC与对应的PR区域/插槽之间的接口。寄存器512可以例如包括用于编程端口-0的寄存器、用于通过端口-0控制入口和出口数据分组的类型的寄存器、用于信令错误的寄存器、被用于调试或故障排除目的的寄存器、或打算用于特定于端口-0的管理功能的其他寄存器。如果期望,PIC DFH还可以指向与其他端口相关联的DFH(例如,端口-1 DFH、端口-2 DFH、端口-3 DFH等)。端口-0 DFH还可以用于读取用户分区中的对应AFU寄存器的AFU标识符(ID)和位置(例如,根据MMIO偏移量和MMIO长度)。AFU ID可以帮助标识每个AFU中加载的内容。
端口-0 DFH可以指向一系列AFC DFH(例如,指向第一AFC-0 DFH,其指向第二AFC-1 DFH,……,其指向最后的AFC-M DFH)。这些AFC DFH中的每个可以用于读取用户分区中的对应AFC寄存器516(也参见图2中的寄存器516)的AFC ID和位置(例如,使用MMIO偏移量和长度信息)。例如,与AFC-0 DFH相关联的MMIO偏移量可以用作指向PF MMIO BAR中的AFC的MMIO区域的开始的指针(pointer),如虚线路径520所示。作为另一示例,与AFC-1 DFH相关联的MMIO偏移量用作指向PF MMIO BAR中的该AFC的MMIO区域的开始的指针,如虚线路径522所示。作为又一示例,与AFC-M DFH相关联的MMIO偏移量可以用作指向PF MMIO BAR中的该AFC的MMIO区域的开始的指针,如虚线路径524所示。
AFC ID可以帮助标识由每个AFC提供的功能。例如,AFC ID可以帮助标识特定AFC是否实现安全功能(例如,加密/解密引擎)、存储功能(例如,压缩/解压缩引擎)、机器学习功能(例如,卷积神经网络引擎或深度神经网络引擎)、联网功能(例如,网络功能虚拟化引擎)等。
AFU/AFC ID、MMIO偏移量、MMIO长度以及与每个DFH相关联的其他控制/状态信息可以被存储在可编程寄存器514中。寄存器514和516可以具有来自物理功能的读/写访问(例如,AFU/AFC标识符和位置信息可以在部分重配置操作期间或在VF分配/移除过程期间由物理功能更新)。可编程寄存器514可以形成为PIC 250的部分(也参见图2中的寄存器514)。以这种方式使用PF驱动器配置设备特征列表500允许整个系统在AFU的硬件和软件用户应用之间创建链接并且在AFC的硬件和软件AFC应用(例如,虚拟功能驱动器和用户模式驱动器)之间创建链接。
物理功能在主机物理地址(HPA)空间中操作。相反,可以分配给VM或容器的虚拟功能在客户物理地址(GPA)空间中操作。因此,从PF的角度的MMIO偏移量可能与从VF的角度的MMIO偏移量不同,以避免例如GPA中的间隙。例如,考虑其中每个AFC值一个4K页面的场景,因此用于AFC-0的MMIO偏移量可能是0x0000,而用于AFC-1的MMIO偏移量是0x1000。然而,如果AFC-1被分配给虚拟功能,则其可能被分派给MMIO偏移量0x0000,以避免从VF的角度开设GPA空间中的孔。虽然寄存器514从物理功能的角度(即,从PF的视图)具有读/写访问,但寄存器514从虚拟功能的角度(即,从VF的视图)具有只读访问。
图6示出了设备特征列表600在VF模式下或在混合模式下针对虚拟功能如何表现。如图6所示,虚拟功能仅具有以指向对应AFC DFH的虚拟PIC形式的PIC的有限视图。在图6的示例中,虚拟功能使用其MMIO BAR来标识虚拟PIC(vPIC)DFH,其指向AFC-0 DFH。与该特定VF相关联的主机驱动器可以进入AFC-0 DFH以得到用户分区中的寄存器516'的位置和AFCID,如路径650所示。从VF的角度,与AFC-0 DFH相关联的用于存储AFC ID、MMIO偏移量和MMIO长度的寄存器514'是只读寄存器。其中VF MMIO BAR映射到AFC-0 DFH的图6的示例仅仅是说明性的。通常,每个不同虚拟功能的BAR可以被映射到图5中所示的完整设备特征列表500中的AFC DFH中的不同相应一个(例如,第二虚拟功能可以被映射到AFC-1 DFH,第三虚拟功能可以被映射到AFC-M DFH等)。
在图6的示例中,虚拟功能看到仅一个对应AFC。如果期望,可以将多个AFC暴露给相同的虚拟功能。为实现此,PF驱动器还可以虚拟化DFH结构。例如,当VMM未将VF MMIO页面中的一个或多个映射到二级(扩展)页面表时,拦截对这些页面的任何客户读/写并将控制转移到主机OS中的软件组件(例如,PF驱动器或虚拟设备组成模块)以模拟它需要的任何DFL/DFH视图。在又一示例中,PF驱动器可以分派系统存储器,基于所需的DFL/DFH视图填充系统存储器,并且在VMM的帮助下将系统存储器暴露为VF MMIO(例如,通过二级/扩展页面表)。
图7是PF模式中、VF模式中或混合模式中的从物理功能的角度的虚拟化设备特征列表(DFL)的图。如图7所示,PF MMIO BAR仍然可以指向PIC DFH,其指向端口-0 DFH。然而,可以使用虚拟化PIC(vPIC)DFH来引用各种AFC DFH。在图7的示例中,第一vPIC DFH 702-1可以链接到AFC-0 DFH和AFC-X DFH,而第二vPIC DFH 702-2可以链接到AFC-1 DFH、AFC -2DFH和AFC-M DFH。特别地,与给定vPIC相关联的AFC DFH可以映射到AFU中的非顺序可编程寄存器516,如路径750所示。该技术使得能够以任何期望的方式重新布置AFC块,而不必进行硬件改变,因为AFC ID、偏移量和长度信息通过系统软件可编程和虚拟化。与第一虚拟化PIC设备702-1相关联的寄存器514-1和与第二虚拟化PIC设备702-2相关联的寄存器514-2也可以在系统存储器中实现(参见例如图2中的CPU存储器203)。使用系统存储器来创建DFL/DFH布局可以帮助减少设备100上的区域消耗。如果期望,DFL/DFH布局也可以在私有设备存储器、被盗存储器、或其他类型的外部存储器中实现。如果期望,AFU DFH仍然可以实现为PIC 250中的可编程寄存器。
图8示出了图7的虚拟化DFH结构在VF模式中或在混合模式中针对虚拟功能如何表现。如图7所示,虚拟功能仅具有以指向一个或多个对应AFC DFH的虚拟PIC形式的PIC的有限视图。在图8的示例中,虚拟功能使用其MMIO BAR来标识虚拟PIC(vPIC)DFH 702-1,其链接到AFC-0 DFH和AFC-X DFH。与该特定VF相关联的主机驱动器可以进入AFC-0 DFH以获得用户分区中的寄存器516-1的位置和AFC ID(如路径750-1所示)并进入AFC-X DFH以检索用户分区中的寄存器516-2的位置和AFC ID,如路径750-2所示。从VF的角度,用于存储AFCID、MMIO偏移量和MMIO长度信息的与AFC-0和AFC-X DFH相关联的寄存器514-1是只读寄存器。可以为vPIC 702-2提供类似的有限视图,其映射到AFC-1、AFC-Y和AFC-M非顺序DFH。还可以包括用于映射到AFC的其他子集的其他虚拟功能(和BAR)。
上述各种设备特征头(DFH)通常使用设备100上的可编程DFH寄存器来实现。在向事务遍历通信接口254添加上下文_id标记的情况下,DFH寄存器将必须考虑这些标记。在一种合适的布置中,PIC DFH和可选地是端口-0 DFH(统称为“AFU DFH”)可以实现为PIC 250中的可编程寄存器(参见例如图2中的DFH寄存器290),而AFC DFH被实现为DFH寄存器,其可经由在用其对应的上下文_id而标记的接口254之上发送的请求来访问(参见例如图2中的DFH寄存器292)。
在另一合适的布置中,AFU DFH包含在AFU内(参见例如图2中的AFU DFH寄存器294)并且可通过特殊接口访问。该特殊接口可以是独立接口、特殊事务、或映射到特殊上下文_id标记,诸如0或-1。AFC DFH可以再次实现为每个AFC内的寄存器292,并且可经由通过用其对应的上下文_id标记而标记的接口254发送的请求来访问。
在又一合适的布置中,AFU DFH和AFC DFH可以全部实现为PIC 250中的可编程寄存器。在该配置中,DFH寄存器可以与每个AFU的部分重配置一起并行更新。图9是用于重配置AFU的说明性步骤的流程图。在步骤900处,可编程设备100可以接收AFU部分重配置位流和相关联的AFU元数据。在步骤902处,设备100可以发起AFU部分重配置功能,以将新接收的AFU位流加载到对应的PR插槽中。
在步骤904处,使用AFU位流来重配置至少一个AFU。在更新AFU时,可以使用所接收的AFU元数据来更新PIC 250中的对应DFH寄存器(例如,以用新AFU和AFC ID、用新AFU功率预算、或用其他控制设置来更新DFH寄存器)。在步骤908处,PIC 250可以设定上下文映射表以包括新AFU/AFC设置(例如,以可选地更新上下文_id,如果期望的话)。在更新上下文映射表之后,可以完成AFU重新编程(在步骤910处)。
通常,AFU/AFC标识符和位置信息、上下文映射表、以及其他相关联的上下文级参数可以在部分重配置操作期间或在VF分配/移除过程期间由物理功能更新。图10A是用于将虚拟功能分配给特定AFC的说明性步骤的流程图。在步骤1000处,可以将诸如VFx的虚拟功能标识为当前可用于新分配的虚拟功能。
在步骤1002处,可以标识需要分配给虚拟功能的AFC。在步骤1004处,可以静默所标识的AFC。在步骤1006处,可以向所标识的AFC发出上下文级重置(参见图4)。
在步骤1008处,可以更新上下文映射表260-1(图3A)、反向上下文映射表260-2(图3B)和可选地更新MMIO解码器264(图2),以利用VFx的BDF号而不是PF的BDF号。在可扩展IOV的情况下,BDF号可以保持相同,而仅更新PASID。
在步骤1010处,从PF的角度的AFC的位置可以存储在驱动器结构中(即,在软件中),并且可以更新实际DFH以反映VF的视图。在步骤1012处,然后可以将VFx分配给虚拟机或容器。通常,可以使用PIC 250或系统内的一些其他控制单元来执行图10A的步骤。
图10B是用于从AFC移除虚拟功能的说明性步骤的流程图。在步骤1050处,可以将诸如VFy的虚拟功能标识为需要从AFC移除或解除分配的虚拟功能。
在步骤1052处,可以标识与VFy相关联的对应AFC。在步骤1054处,可以静默所标识的AFC。在步骤1056处,可以从其当前所驻留的虚拟机或容器中移除VFy。
在步骤1058处,可以向所标识的AFC发出上下文级重置(参见图4)。在步骤1060处,可以更新上下文映射表260-1(图3A)、反向上下文映射表260-2(图3B)和可选地更新MMIO解码器264(图2),以利用PF的BDF号而不是VFy的BDF号。在可扩展IOV的情况下,BDF号可以保持相同,而仅更新PASID。
在步骤1062处,然后可以从PF的角度还原AFC的位置。通常,可以使用PIC 250或系统内的一些其他控制单元来执行图10A的步骤。
到目前为止已经关于集成电路描述了实施例。本文描述的方法和装置可以并入到任何合适的电路中。例如,它们可以并入到许多类型的设备中,诸如可编程逻辑设备、专用标准产品(ASSP)、以及专用集成电路(ASIC)、微控制器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)等。可编程逻辑设备的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑设备(EPLD)、电可擦除可编程逻辑设备(EEPLD)、逻辑单元阵列(LCA)、复杂可编程逻辑设备(CPLD)和现场可编程门阵列(FPGA),仅举几例。
本文的一个或多个实施例中描述的可编程逻辑设备可以是数据处理系统的部分,其包括以下组件中的一个或多个:处理器;存储器;IO电路;和外围设备。数据处理可以用在各种各样的应用中,诸如计算机联网、数据联网、仪器、视频处理、数字信号处理、或其中期望使用可编程或可重新编程逻辑的优点的任何合适的其他应用。可编程逻辑设备可以用于执行各种不同的逻辑功能。例如,可编程逻辑设备可以配置为与系统处理器协作的处理器或控制器。可编程逻辑设备还可以用作仲裁器,其用于仲裁对数据处理系统中的共享资源的访问。在又一示例中,可编程逻辑设备可以被配置为处理器与系统中的其他组件之一之间的接口。
前述内容仅仅是对本发明的原理的说明,并且本领域技术人员可以进行各种修改。前述实施例可以单独地或以任何组合实现。
示例1. 一种系统,包括:
主处理器,可操作以卸载任务;以及
协处理器,经由主机接口耦合到主处理器,其中协处理器可操作以接收卸载的任务并为主处理器提供硬件加速,并且其中协处理器包括:
部分重配置区域,加载有加速器功能单元(AFU),其中AFU被细分为多个加速器功能单元上下文(AFC);以及
接口电路,可操作以将多个AFC中的至少一个映射到至少部分地跨越主处理器和协处理器之间的主机接口的对应的主机可分配接口。
示例2. 根据示例1所述的系统,其中主机接口是外围组件互连高速(PCIe)接口、用于加速器的高速缓存相干互连(CCIX)接口、Gen-Z接口、开放式相干加速器处理器接口(OpenCAPI)接口、英特尔加速器链路(IAL)接口和NVLink接口中的所选一个。
示例3. 根据示例1所述的系统,其中主机接口是外围组件互连高速(PCIe)接口,其支持单根输入/输出虚拟化(SR-IOV)或可扩展输入/输出虚拟化(可扩展IOV)。
示例4. 根据示例3所述的系统,其中主机可分配接口是PCIe物理功能、PCIe SR-IOV虚拟功能和PCIe可扩展IOV可分配设备接口中的所选一个。
示例5. 根据示例1所述的系统,其中主机可分配接口与从包括以下各项的组中选择的任务卸载模块相关联:主处理器上的虚拟机、主处理器上的容器、以及主处理器上的过程。
示例6. 根据示例1所述的系统,其中为多个AFC提供唯一上下文标识符,并且其中接口电路和AFU之间的事务用唯一上下文标识符标记以提供地址空间隔离。
示例7. 根据示例6所述的系统,其中接口电路使用上下文映射表将唯一上下文标识符映射到平台特定标识符,其用于主处理器与多个AFC之间的上游和下游存储器请求以及用于由主处理器向多个AFC发起的请求。
示例8. 根据示例7所述的系统,其中平台特定标识符包括外围组件互连高速(PCIe)总线、设备和功能号以及可选地包括过程地址空间标识符(PASID)。
示例9. 根据示例8所述的系统,其中:
主机可分配接口包括PCIe物理功能,并且AFU中的所有AFC在物理功能(PF)模式期间与PCIe物理功能相关联并且通过PCIe物理功能访问;
主机可分配接口包括PCIe虚拟功能,并且AFU中的所有AFC在虚拟功能(VF)模式期间与PCIe虚拟功能相关联并且通过PCIe虚拟功能访问;或者
在混合模式期间,AFU中的至少第一部分AFC与PCIe物理功能相关联并且通过PCIe物理功能访问,并且AFU中的至少第二部分AFC与PCIe虚拟功能相关联并且通过PCIe虚拟功能访问。
示例10. 根据示例9所述的系统,其中接口电路还包括用于保存唯一上下文标识符的内部表,并且其中内部表通过自动与上游存储器请求相关联并与下游存储器请求一起返回的PCIe标记来索引。
示例11. 根据示例9所述的系统,其中协处理器还包括:地址解码器,其被配置成基于与主机可分配接口相关联的存储器映射输入-输出(MMIO)地址来解码唯一上下文标识符。
示例12. 根据示例1所述的系统,其中多个AFC中的给定AFC可操作以向主处理器发出中断,并且其中中断利用仅与给定AFC相关联的唯一上下文标识符来标记。
示例13. 根据示例1所述的系统,其中协处理器维持允许主处理器枚举多个AFC的设备特征列表。
示例14. 根据示例13所述的系统,其中接口电路由主机可分配接口管理,并且其中主机可分配接口具有指向设备特征列表的基地址寄存器。
示例15. 根据示例14所述的系统,其中设备特征列表包括设备特征头的链接列表,其中设备特征头中的第一个暴露与AFU相关联的标识符和位置信息,并且其中一系列设备特征头暴露与多个AFC相关联的标识符和位置信息。
示例16. 根据示例15所述的系统,其中与AFU和多个AFC相关联的标识符和位置信息存储在接口电路内的可编程寄存器中。
示例17. 根据示例15所述的系统,还包括耦合到主处理器的外部存储器,其中与AFU和多个AFC相关联的标识符和位置信息存储在外部存储器中。
示例18. 根据示例15所述的系统,还包括耦合到主处理器的存储器,其中与AFU相关联的标识符和位置信息存储在接口电路内的可编程寄存器中,并且其中与多个AFC相关联的标识符和位置信息存储在存储器中。
示例19. 根据示例15所述的系统,其中设备特征头被实现为接口电路内的可编程寄存器,其中主机可分配接口包括特权主机可分配接口,并且其中可编程寄存器使用特权主机可分配接口来编程。
示例20. 根据示例15所述的系统,其中设备特征头中的至少一些被实现为AFU的部分重配置区域内的可编程寄存器。
示例21. 根据示例15所述的系统,其中主机可分配接口包括特权主机可分配接口,并且其中可使用特权主机可分配接口的基地址寄存器来访问一系列设备特征头中的每个设备特征头。
示例22. 根据示例15所述的系统,其中主机可分配接口包括非特权主机可分配接口,并且其中可使用与非特权主机可分配接口相关联的基地址寄存器来访问一系列设备特征头中的仅某一子集的设备特征头。
示例23. 根据示例15所述的系统,其中主机可分配接口包括特权主机可分配接口,其可操作以重新编程设备特征列表或设备特征列表中的设备特征头中的至少一些。
示例24. 一种用于操作包括主处理器和可编程加速器设备的系统的方法,该方法包括:
将任务从主处理器卸载到可编程加速器设备;
配置可编程加速器设备上的插槽以实现加速器功能单元(AFU),其中AFU被细分为多个加速器功能单元上下文(AFC);以及
使用可编程加速器设备中的接口电路将多个AFC映射到对应的主机可分配接口,并对多个AFC中的所选AFC执行上下文级重置操作。
示例25. 根据示例24所述的方法,其中经由针对AFU的功能级重置或经由与接口电路相关联的管理寄存器来发起上下文级重置操作。
示例26. 根据示例24所述的方法,还包括:
使用接口电路来过滤以所选AFC为目标的事务。
示例27. 根据示例24所述的方法,还包括:
使用接口电路向所选AFC发送上下文级重置(CLR)消息,以指示AFU停止发出与所选AFC相关联的请求。
示例28. 根据示例27所述的方法,还包括:
响应于从接口电路接收到CLR消息,使用所选AFC将上下文级重置(CLR)确认返回到接口电路。
示例29. 根据示例27所述的方法,还包括:
在将CLR消息发送到所选AFC之后,在终止用于所选AFC的功能级重置操作之前,等待与所选AFC相关联的所有未完成的上游和下游请求被清除。
示例30. 根据示例29所述的方法,还包括:
使用所选AFC将新的上下文级重置(CLR)消息发送到多个AFC中的另一AFC。
示例31. 一种用于操作包括主中央处理单元(CPU)和相关联的加速设备的系统的方法,该方法包括:
将任务从主CPU卸载到加速设备;以及
部分地重配置加速设备上的插槽以实现加速器功能单元(AFU),其中AFU被细分为映射到对应的主机可分配接口的多个加速器功能单元上下文(AFC)。
示例32. 根据示例31所述的方法,还包括:
利用与AFU和AFC相关联的新的标识符信息来更新加速设备上的设备特征头寄存器。
示例33. 根据示例32所述的方法,还包括:
设定上下文映射表以包括新的标识符信息,其中上下文映射表将与多个AFC相关联的唯一上下文标识符映射到平台特定标识符。
Claims (25)
1.一种系统,包括:
主处理器,可操作以卸载任务;以及
协处理器,经由主机接口耦合到主处理器,其中协处理器可操作以接收卸载的任务并为主处理器提供硬件加速,并且其中协处理器包括:
部分重配置区域,加载有加速器功能单元(AFU),其中AFU被细分为多个加速器功能单元上下文(AFC);以及
接口电路,可操作以将多个AFC中的至少一个映射到至少部分地跨越主处理器和协处理器之间的主机接口的对应的主机可分配接口。
2.根据权利要求1所述的系统,其中主机接口是外围组件互连高速(PCIe)接口、用于加速器的高速缓存相干互连(CCIX)接口、Gen-Z接口、开放式相干加速器处理器接口(OpenCAPI)接口、英特尔加速器链路(IAL)接口和NVLink接口中的所选一个。
3.根据权利要求1所述的系统,其中主机接口是外围组件互连高速(PCIe)接口,其支持单根输入/输出虚拟化(SR-IOV)或可扩展输入/输出虚拟化(可扩展IOV)。
4.根据权利要求3所述的系统,其中主机可分配接口是PCIe物理功能、PCIe SR-IOV虚拟功能和PCIe可扩展IOV可分配设备接口中的所选一个。
5.根据权利要求1所述的系统,其中主机可分配接口与从包括以下各项的组中选择的任务卸载模块相关联:主处理器上的虚拟机、主处理器上的容器、以及主处理器上的过程。
6.根据权利要求1-5中任一项所述的系统,其中为多个AFC提供唯一上下文标识符,并且其中接口电路和AFU之间的事务用唯一上下文标识符标记以提供地址空间隔离。
7.根据权利要求6所述的系统,其中接口电路使用上下文映射表将唯一上下文标识符映射到平台特定标识符,其用于主处理器与多个AFC之间的上游和下游存储器请求以及用于由主处理器向多个AFC发起的请求。
8.根据权利要求7所述的系统,其中平台特定标识符包括外围组件互连高速(PCIe)总线、设备和功能号以及可选地包括过程地址空间标识符(PASID)。
9.根据权利要求8所述的系统,其中:
主机可分配接口包括PCIe物理功能,并且AFU中的所有AFC在物理功能(PF)模式期间与PCIe物理功能相关联并且通过PCIe物理功能访问;
主机可分配接口包括PCIe虚拟功能,并且AFU中的所有AFC在虚拟功能(VF)模式期间与PCIe虚拟功能相关联并且通过PCIe虚拟功能访问;或者
在混合模式期间,AFU中的至少第一部分AFC与PCIe物理功能相关联并且通过PCIe物理功能访问,并且AFU中的至少第二部分AFC与PCIe虚拟功能相关联并且通过PCIe虚拟功能访问。
10.根据权利要求9所述的系统,其中接口电路还包括用于保存唯一上下文标识符的内部表,并且其中内部表通过自动与上游存储器请求相关联并与下游存储器请求一起返回的PCIe标记来索引。
11.根据权利要求9所述的系统,其中协处理器还包括:地址解码器,其被配置成基于与主机可分配接口相关联的存储器映射输入-输出(MMIO)地址来解码唯一上下文标识符。
12.根据权利要求1所述的系统,其中多个AFC中的给定AFC可操作以向主处理器发出中断,并且其中中断利用仅与给定AFC相关联的唯一上下文标识符来标记。
13.根据权利要求1-5中任一项所述的系统,其中协处理器维持允许主处理器枚举多个AFC的设备特征列表,其中接口电路由主机可分配接口管理,并且其中主机可分配接口具有指向设备特征列表的基地址寄存器,其中设备特征列表包括设备特征头的链接列表,其中设备特征头中的第一个暴露与AFU相关联的标识符和位置信息,并且其中一系列设备特征头暴露与多个AFC相关联的标识符和位置信息。
14.根据权利要求13所述的系统,其中与AFU和多个AFC相关联的标识符和位置信息存储在接口电路内的可编程寄存器中。
15.根据权利要求13所述的系统,还包括耦合到主处理器的外部存储器,其中与AFU和多个AFC相关联的标识符和位置信息存储在外部存储器中。
16.根据权利要求13所述的系统,还包括耦合到主处理器的存储器,其中与AFU相关联的标识符和位置信息存储在接口电路内的可编程寄存器中,并且其中与多个AFC相关联的标识符和位置信息存储在存储器中。
17.根据权利要求13所述的系统,其中设备特征头被实现为接口电路内的可编程寄存器,其中主机可分配接口包括特权主机可分配接口,并且其中可编程寄存器使用特权主机可分配接口来编程。
18.根据权利要求13所述的系统,其中设备特征头中的至少一些被实现为AFU的部分重配置区域内的可编程寄存器。
19.根据权利要求13所述的系统,其中主机可分配接口包括特权主机可分配接口,并且其中可使用特权主机可分配接口的基地址寄存器来访问一系列设备特征头中的每个设备特征头。
20.根据权利要求13所述的系统,其中主机可分配接口包括非特权主机可分配接口,并且其中可使用与非特权主机可分配接口相关联的基地址寄存器来访问一系列设备特征头中的仅某一子集的设备特征头。
21.根据权利要求13所述的系统,其中主机可分配接口包括特权主机可分配接口,其可操作以重新编程设备特征列表或设备特征列表中的设备特征头中的至少一些。
22.一种用于操作包括主处理器和可编程加速器设备的系统的方法,该方法包括:
将任务从主处理器卸载到可编程加速器设备;
配置可编程加速器设备上的插槽以实现加速器功能单元(AFU),其中AFU被细分为多个加速器功能单元上下文(AFC);以及
使用可编程加速器设备中的接口电路将多个AFC映射到对应的主机可分配接口,并对多个AFC中的所选AFC执行上下文级重置操作。
23.根据权利要求22所述的方法,其中经由针对AFU的功能级重置或经由与接口电路相关联的管理寄存器来发起上下文级重置操作,所述方法还包括:
使用接口电路来过滤以所选AFC为目标的事务;
使用接口电路向所选AFC发送上下文级重置(CLR)消息,以指示AFU停止发出与所选AFC相关联的请求;
响应于从接口电路接收到CLR消息,使用所选AFC将上下文级重置(CLR)确认返回到接口电路;
在将CLR消息发送到所选AFC之后,在终止用于所选AFC的功能级重置操作之前,等待与所选AFC相关联的所有未完成的上游和下游请求被清除;以及
使用所选AFC将新的上下文级重置(CLR)消息发送到多个AFC中的另一AFC。
24.一种用于操作包括主中央处理单元(CPU)和相关联的加速设备的系统的方法,该方法包括:
将任务从主CPU卸载到加速设备;以及
部分地重配置加速设备上的插槽以实现加速器功能单元(AFU),其中AFU被细分为映射到对应的主机可分配接口的多个加速器功能单元上下文(AFC)。
25.根据权利要求24所述的方法,还包括:
利用与AFU和AFC相关联的新的标识符信息来更新加速设备上的设备特征头寄存器;以及
设定上下文映射表以包括新的标识符信息,其中上下文映射表将与多个AFC相关联的唯一上下文标识符映射到平台特定标识符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/024563 | 2018-06-29 | ||
US16/024,563 US20190042329A1 (en) | 2018-06-29 | 2018-06-29 | System with programmable multi-context accelerator circuitry |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110659245A true CN110659245A (zh) | 2020-01-07 |
Family
ID=65229509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910457411.6A Pending CN110659245A (zh) | 2018-06-29 | 2019-05-29 | 具有可编程多上下文加速器电路的系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190042329A1 (zh) |
CN (1) | CN110659245A (zh) |
DE (1) | DE102019110023A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113904938A (zh) * | 2021-09-28 | 2022-01-07 | 北京大禹智芯科技有限公司 | 一种动态配置PCIe终端设备的系统和方法 |
TWI796015B (zh) * | 2021-11-11 | 2023-03-11 | 新加坡商鴻運科股份有限公司 | 自動識別伺服器PCIe配置之方法及伺服器 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11416300B2 (en) * | 2017-06-29 | 2022-08-16 | Intel Corporaton | Modular accelerator function unit (AFU) design, discovery, and reuse |
CN110162378B (zh) * | 2018-02-13 | 2023-12-29 | 华为技术有限公司 | 一种资源调度的方法、装置、设备及系统 |
US11556436B2 (en) * | 2018-08-22 | 2023-01-17 | Intel Corporation | Memory enclaves using process address space identifiers in a scalable input/output (I/O) virtualization (S-IOV) architecture |
US11194750B2 (en) * | 2018-12-12 | 2021-12-07 | Micron Technology, Inc. | Memory sub-system with multiple ports having single root virtualization |
US20200201758A1 (en) * | 2018-12-19 | 2020-06-25 | Ati Technologies Ulc | Virtualized input/output device local memory management |
US11360925B2 (en) * | 2018-12-25 | 2022-06-14 | Intel Corporation | Method and apparatus for host adaptation to a change of persona of a configurable integrated circuit die |
US11294992B2 (en) * | 2019-03-12 | 2022-04-05 | Xilinx, Inc. | Locking execution of cores to licensed programmable devices in a data center |
US11443018B2 (en) * | 2019-03-12 | 2022-09-13 | Xilinx, Inc. | Locking execution of cores to licensed programmable devices in a data center |
US10866278B2 (en) * | 2019-03-28 | 2020-12-15 | Intel Corporation | Methods and apparatus for performing design for debug via protocol interface |
LU101360B1 (en) * | 2019-08-26 | 2021-03-11 | Microsoft Technology Licensing Llc | Pinned physical memory supporting direct memory access for virtual memory backed containers |
US11474871B1 (en) * | 2019-09-25 | 2022-10-18 | Xilinx, Inc. | Cache coherent acceleration function virtualization |
US11941458B2 (en) | 2020-03-10 | 2024-03-26 | Sk Hynix Nand Product Solutions Corp. | Maintaining storage namespace identifiers for live virtualized execution environment migration |
US11416399B2 (en) * | 2020-06-25 | 2022-08-16 | Nokia Solutions And Networks Oy | Dedicated memory buffers for supporting deterministic inter-FPGA communication |
US11775452B2 (en) * | 2020-07-23 | 2023-10-03 | MemRay Corporation | Non-volatile memory controller device and non-volatile memory device |
US11853199B2 (en) * | 2021-01-21 | 2023-12-26 | Texas Instruments Incorporated | Multi-peripheral and/or multi-function export |
CN114564429A (zh) * | 2022-02-11 | 2022-05-31 | 北京智芯微电子科技有限公司 | 轻量级智能计算紧耦合结构及其数据处理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850411B2 (en) * | 2006-06-21 | 2014-09-30 | Element Cxi, Llc | Compiler system, method and software for a resilient integrated circuit architecture |
US8250578B2 (en) * | 2008-02-22 | 2012-08-21 | International Business Machines Corporation | Pipelining hardware accelerators to computer systems |
US9183174B2 (en) * | 2013-03-15 | 2015-11-10 | Qualcomm Incorporated | Use case based reconfiguration of co-processor cores for general purpose processors |
US10069681B2 (en) * | 2015-12-31 | 2018-09-04 | Amazon Technologies, Inc. | FPGA-enabled compute instances |
CN114218133A (zh) * | 2016-06-15 | 2022-03-22 | 华为技术有限公司 | 一种数据传输方法及装置 |
US11301415B2 (en) * | 2018-01-04 | 2022-04-12 | Intel Corporation | Interface discovery between partitions of a programmable logic device |
-
2018
- 2018-06-29 US US16/024,563 patent/US20190042329A1/en active Pending
-
2019
- 2019-04-16 DE DE102019110023.2A patent/DE102019110023A1/de active Pending
- 2019-05-29 CN CN201910457411.6A patent/CN110659245A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113904938A (zh) * | 2021-09-28 | 2022-01-07 | 北京大禹智芯科技有限公司 | 一种动态配置PCIe终端设备的系统和方法 |
CN113904938B (zh) * | 2021-09-28 | 2022-04-29 | 北京大禹智芯科技有限公司 | 一种动态配置PCIe终端设备的系统和方法 |
TWI796015B (zh) * | 2021-11-11 | 2023-03-11 | 新加坡商鴻運科股份有限公司 | 自動識別伺服器PCIe配置之方法及伺服器 |
Also Published As
Publication number | Publication date |
---|---|
DE102019110023A1 (de) | 2020-01-02 |
US20190042329A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659245A (zh) | 具有可编程多上下文加速器电路的系统 | |
US20220350714A1 (en) | Virtual device composition in a scalable input/output (i/o) virtualization (s-iov) architecture | |
CN110063051B (zh) | 用于重新配置服务器的系统和方法以及服务器 | |
US20210232528A1 (en) | Configurable device interface | |
CN107015845B (zh) | Gpu虚拟化 | |
GB2565770B (en) | Data processing systems | |
KR102610567B1 (ko) | 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리 | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US8103810B2 (en) | Native and non-native I/O virtualization in a single adapter | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
US8918568B2 (en) | PCI express SR-IOV/MR-IOV virtual function clusters | |
US8856781B2 (en) | Method and apparatus for supporting assignment of devices of virtual machines | |
JP2019530941A (ja) | マルチテナント環境のfpgaからのデバック情報の抽出 | |
US10289785B1 (en) | Platform architecture creation for a system-on-chip | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
CN101777005B (zh) | 重定向物理设备控制器的中断而提供多个虚拟设备控制器的装置和方法 | |
US10649915B1 (en) | Disaggregated computing architecture using device pass-through wherein independent physical address spaces between systems nodes are implemented in a single execution environment | |
Bucknall et al. | Build automation and runtime abstraction for partial reconfiguration on Xilinx Zynq Ultrascale+ | |
CN117480498A (zh) | 在运行时间为裸金属服务器动态提供PCIe器件 | |
Zaki | An embedded multi-core platform for mixed-criticality systems: Study and analysis of virtualization techniques | |
US11138072B2 (en) | Protected runtime mode | |
Sukhwani et al. | Extensible on-chip peripherals |
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 |