CN115858439A - 三维堆叠式可编程逻辑架构和处理器设计体系结构 - Google Patents
三维堆叠式可编程逻辑架构和处理器设计体系结构 Download PDFInfo
- Publication number
- CN115858439A CN115858439A CN202211015744.1A CN202211015744A CN115858439A CN 115858439 A CN115858439 A CN 115858439A CN 202211015744 A CN202211015744 A CN 202211015744A CN 115858439 A CN115858439 A CN 115858439A
- Authority
- CN
- China
- Prior art keywords
- processor
- architecture
- programmable
- programmable architecture
- data
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/1778—Structural details for adapting physical parameters
- H03K19/17796—Structural details for adapting physical parameters for physical disposition of blocks
-
- 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
-
- 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
- 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/7892—Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17758—Structural details of configuration resources for speeding up configuration or reconfiguration
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/08—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Advance Control (AREA)
Abstract
本公开提供了三维堆叠式可编程逻辑架构和处理器设计体系结构。本公开针对的是用于可编程架构和中央处理单元(CPU)的3D堆叠式体系结构。3D堆叠式取向实现了架构的可重配置性,并且允许了架构使用粗粒度和细粒度加速来工作以将CPU处理负载转移。此外,可编程架构可能够用于与处于3D堆叠式取向的多个其他计算小芯片组件对接。这使得多个计算组件能够通信,而不需要在计算小芯片之间负载转移数据通信。
Description
技术领域
本公开涉及3D堆叠式可编程逻辑架构(fabric)和处理器设计体系结构(architecture)。具体而言,将计算元素的3D堆叠式附接包含到可编程逻辑架构,以实现多用途功能。
背景技术
本节旨在向读者介绍可能与本技术的各种方面有关的技术的各种方面,这些方面将在下文中描述和/或要求保护。相信这种论述有助于向读者提供背景信息,以促进更好地理解本公开的各种方面。因此,应当注意,这些陈述应从这个角度来理解,而不是被解读为是任何种类的承认。
集成电路存在于众多的电子设备中,例如手持设备、计算机、游戏系统、机器人设备、汽车,等等。一些集成电路,例如中央处理单元(central processing unit,CPU)/微处理器(microprocessor,μP),可以利用负载转移(offload)计算和/或加速来利用其他设备(例如,可编程逻辑器件)来协助CPU/μP执行某些操作。然而,由于用于经由可编程逻辑器件提供加速的实现方式中的延时、存储器一致性或灵活性问题,某些计算模型可能受到限制。例如,可以利用FPGA来将CPU计算和/或加速负载转移。可以实现FPGA作为传统接口上的粗粒度负载转移引擎来加速各种工作负载,但数据传送的固定成本可能限制这些用途的潜力。FPGA也可以用于执行细粒度加速,但是这可能要求重大的体系结构变化,由于传统的二维FPGA设计体系结构,这将限制FPGA的可重配置性。在FPGA体系结构的二维构造中,实现细粒度或粗粒度加速的能力是在FPGA和CPU体系结构定义时做出的,并且可重配置性一般是无法实现的。
发明内容
本公开的一方面提供了一种用于执行细粒度加速操作和粗粒度加速操作的系统。该系统包括:处理器,具有一个或多个核心;以及可编程架构器件,其中处理器在可编程架构器件上方按三维取向堆叠,并且其中可编程架构器件包括:可编程架构,包括多个分区,这多个分区被配置为执行细粒度加速操作;以及一个或多个接口,被配置为在可编程架构和处理器之间提供连接,其中可编程架构器件能操作来:经由一个或多个接口从处理器管线接收一组或多组数据;将可编程架构的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,多个分区耦合到处理器的一个或多个核心的一个或多个执行单元,其中细粒度加速操作包括扩展处理器的指令集体系结构以启动定制操作码空间来与可编程架构对接;从处理器管线接收额外的一组或多组数据;并且将可编程架构的第二部分配置为与处理器对接以执行粗粒度加速操作,该第二部分包括为可编程架构预留的一个或多个系统存储器部分。
本公开的另一方面提供了一种在可编程架构器件上方以三维取向堆叠的处理器之间的数据传送的方法。该方法包括:经由处理器经由一个或多个接口从处理器管线接收一组或多组数据;经由处理器将可编程架构器件的可编程架构的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,多个分区耦合到处理器的一个或多个核心的一个或多个执行单元,其中细粒度加速操作包括扩展处理器的指令集体系结构以启动定制操作码空间来与可编程架构对接;经由处理器从处理器管线接收额外的一组或多组数据;并且经由处理器将可编程架构的第二部分配置为与处理器对接以对额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为可编程架构预留的一个或多个系统存储器部分。
本公开的又一方面提供了一种系统。该系统包括:一个或多个计算小芯片;可编程架构基础管芯,其中一个或多个计算小芯片在可编程架构基础管芯上方按三维取向堆叠,并且其中可编程架构基础管芯包括一个或多个接口,一个或多个接口被配置为在可编程架构基础管芯的可编程架构和一个或多个计算小芯片之间提供连接,其中可编程架构基础管芯能操作来:允许在可编程架构基础管芯上方三维堆叠的一个或多个计算小芯片之间的数据传送;并且经由一个或多个计算小芯片经由一个或多个接口接收一组或多组数据;经由一个或多个计算小芯片将可编程架构基础管芯的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,多个分区耦合到一个或多个计算小芯片的一个或多个部分,其中细粒度加速操作包括扩展一个或多个计算小芯片的指令集体系结构以启动定制操作码空间来与可编程架构基础管芯对接;经由一个或多个计算小芯片经由一个或多个接口接收额外的一组或多组数据;并且经由一个或多个计算小芯片将可编程架构的第二部分配置为与一个或多个计算小芯片对接以对额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为可编程架构基础管芯预留的一个或多个系统存储器部分。
附图说明
在阅读下面的详细描述并且参考附图后,可以更好地理解本公开的各种方面,在附图中:
图1是根据一实施例的寄存器体系结构的框图;
图2A是图示了根据一实施例的有序管线和寄存器重命名、乱序发出/执行管线的框图;
图2B是图示了根据一实施例的要被包括在处理器中的有序体系结构核心和寄存器重命名、乱序发出/执行体系结构核心的框图;
图3A和3B图示了根据一实施例的更具体的示例有序核心体系结构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一;
图4是根据一实施例的可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形的处理器的框图;
图5示出了根据一实施例的系统的框图;
图6是根据一实施例的第一更具体示例系统的框图;
图7是根据一实施例的片上系统(SoC)的框图;
图8是根据一实施例的对包括可编程架构的集成电路进行编程的过程的框图;
图9是根据一实施例的图8的可编程架构的示图;
图10是根据一实施例的处理器体系结构的示图,其包括按单片布置的图9的可编程架构;
图11是根据一实施例的包括图9的可编程架构的处理器体系结构的示图,其中处理器和可编程架构位于单独的硅衬底上;
图12是根据一实施例的用于执行细粒度加速的3D堆叠式布置的处理器和可编程架构的示图;
图13是根据一实施例的处理器体系结构的流程图,其包括几个逻辑块,这些逻辑块与可编程架构相结合来在图12的3D堆叠式布置中实现细粒度加速;
图14是根据一实施例的用于处理器和可编程架构的3D堆叠式混合体系结构的示图,实现了粗粒度和细粒度加速;
图15是根据本公开的实施例的3D堆叠式异构计算小芯片和可编程架构基础管芯的示图;
图16是根据一实施例的数据处理系统的框图,其包括具有集成可编程架构单元的处理器。
具体实施方式
下面将描述一个或多个具体实施例。为了提供对这些实施例的简明描述,本说明书中没有描述实际实现方式的所有特征。应当明白,在任何这样的实际实现方式的开发中,如同在任何工程或设计项目中那样,必须做出许多依实现方式而定的决定,以实现开发者的特定目标,例如遵守系统相关和业务相关的约束,这些约束可能在各个实现方式间有所不同。此外,应当明白,这样的开发工作可能是复杂且耗时的,但对于受益于本公开的本领域普通技术人员而言,这不过是常规的设计、制作和制造工作。
在介绍本公开的各种实施例的要素时,冠词“一”、“一个”和“该”意指有一个或多个该要素。术语“包括”和“具有”意图是包含性的,并且意味着除了列出的元素以外,可能还有其他元素。此外,应当理解,提及本公开的“一些实施例”、“实施例”、“一个实施例”或者“一实施例”并不意图被解读为排除也包含所记载的特征的额外实施例的存在。此外,短语A“基于”B意指A至少部分基于B。此外,术语“或”意图是包含性的(例如,逻辑或),而不是排他性的(例如,逻辑异或)。换句话说,短语A“或”B意指A、B,或者A和B两者。此外,本公开描述了各种数据结构,例如指令集体系结构的指令。这些被描述为具有某些域(例如,字段)和相应的比特数目。然而,应当理解,这些域和比特大小是作为示例,而并不意图是排他性的。事实上,本公开的数据结构(例如,指令)可以采取任何适当的形式。
如前所述,由于二维构造中的可编程架构的放置,用于负载转移计算的各种实现方式可能具有限制。例如,可以利用可编程架构作为传统接口(例如,PCIe)上的粗粒度负载转移引擎来加速各种工作负载。然而,由于接口的高延时和低带宽性质,只有包含大量计算的工作负载才能从粗粒度加速中受益。在CPU中添加和利用细粒度加速可以起到实现处理中的更低延时的作用,但可能涉及到设计更新的硬件体系结构来实现细粒度的可编程架构加速,这可能涉及新的算法和可编程架构的体系结构重设计。因此,可编程架构可能具有粗粒度加速或细粒度加速的功能,这取决于可编程架构(例如,现场可编程门阵列(field-programmable gate array,FPGA))相对于CPU的核心的位置和大小。这个决定是在FPGA的体系结构设计时作出的。例如,多个更小的FPGA可以放在核心的中心附近,并且增大FPGA的大小可能会影响核心设计。此外,将FPGA放在核心的边界可能会限制接口选项,并且对核心片上系统(System on a Chip,SoC)/片上网络(Network on a Chip,NOC)设计产生负面影响。
为了缓解上述2D可编程架构体系结构的问题,可以实现可编程架构(例如,现场可编程门阵列(FPGA)和处理器的三维堆叠式体系结构,以实现负载转移计算的可重配置性。可编程架构可以很好地适合于各种计算类型,比在处理器中执行的效率更高。可以根据期望的性能要求对可编程架构进行分割。例如,可编程架构的一部分可被配置为执行粗粒度加速,而可编程架构的多个较小部分可被配置为执行类似细粒度的加速。此外,可以执行包括很大一部分的调配和组合逻辑的计算,例如随机数生成、消息摘要算法,等等。具有非传统和/或任意精度算术(例如,伽罗瓦/蒙哥马利(Galois/Montgomery)算术)的计算是使用可编程架构进行计算的良好候选。许多其他计算类型也可能是使用可编程架构进行计算的良好候选。例如,多项式/模算术、近似/概率计算、模幂运算、流图遍历、视频编解码器中的运动估计、压缩/解压缩、快速傅里叶变换和/或其他计算可能是使用可编程架构进行计算的良好候选。
如上所述,3D堆叠式可编程逻辑架构(例如,FPGA)和中央处理单元(CPU)可以是可重编程的,以执行多种负载转移处理操作,包括细粒度加速和粗粒度加速。例如,3D堆叠式可编程逻辑架构和CPU,在细粒度加速配置中,可以使得FPGA的算术逻辑单元(arithmeticlogic unit,ALU)可用于执行协助处理器的计算。3D堆叠式混合FPGA和CPU体系结构使得能够为用户加速特定的工作负载实现定制指令。使用嵌入式可编程架构实现的定制指令提供了灵活性,同时为潜在的未来工作负载添加了工作负载加速(例如,运行8X的SHA-512)。3D堆叠式FPGA和CPU可以实现多用途FPGA体系结构,并且减轻了在制造时为特定用途指定FPGA硬件的需要。3D堆叠式FPGA和CPU可以实现FPGA的多用途功能,这是通过使得FPGA能够根据不同的负载转移处理方法被划分成可重配置的部分来实现的。
这些特征可用于任何适当的集成电路器件中,包括微处理器、专用集成电路(application-specific integrated circuit,ASIC),或者现场可编程门阵列(FPGA)。下面针对图1-图9论述的体系结构旨在代表可以使用的一个示例。
寄存器体系结构
图1是根据一实施例的寄存器体系结构10的框图。在图示的实施例中,有若干个(例如,32个)向量寄存器12,其宽度可以是若干个(例如,512个)比特。在寄存器体系结构10中,这些寄存器被称为zmm0至zmmi。低n(例如,16)zmm寄存器的低阶(例如,256)比特被覆盖在相应的寄存器ymm上。低n zmm寄存器的低阶(例如,128)比特(这也是ymm寄存器的低阶n比特)被覆盖在相应的寄存器xmm上。
写入掩码寄存器14可包括m个(例如,8个)写入掩码寄存器(k0至km),每个具有若干个(例如,64个)比特。额外地或者替代地,至少一些写入掩码寄存器14可具有不同的大小(例如,16比特)。至少一些向量掩码寄存器12(例如,k0)被禁止用作写入掩码。当这样的向量掩码寄存器被指示时,硬连线的写入掩码(例如,0xFFFF)被选择,并且,实际上为该指令禁用写入掩蔽。
通用寄存器16可包括若干个(例如,16个)具有相应比特大小(例如,64)的寄存器,这些寄存器与x86寻址模式一起用来寻址存储器操作对象。这些寄存器可以用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来引用。这些寄存器中的至少一些的一部分(例如,寄存器的32比特)可用于比寄存器的完整长度更短的模式(例如,32比特模式)。
标量浮点堆栈寄存器堆(x87堆栈)18具有别名化的MMX紧缩整数平坦寄存器堆20。x87堆栈18是八元素(或者其他元素数目)的堆栈,用于使用x87指令集扩展对浮点数据执行标量浮点操作。浮点数据可具有各种水平的精度(例如,16、32、64、80或者更多比特)。MMX紧缩整数平坦寄存器堆20被用于对64比特紧缩整数数据执行操作,以及针对在MMX紧缩整数平坦寄存器堆20和XMM寄存器之间执行的一些操作保持操作对象。
替代性实施例可以使用更宽或更窄的寄存器。此外,替代性实施例可以使用更多、更少或不同的寄存器堆和寄存器。例如,处理器使用的一些扩展可具有其他关联的寄存器。例如,高级矩阵扩展(Advanced Matrix Extension,AMX)可以利用64比特编程范式,该范式利用代表来自更大的二维存储器映像24的子阵列的二维寄存器/瓦片22。二维存储器映像24的访问方式可以与其他寄存器的访问方式类似。额外地或者替代地,二维存储器映像24可以与用于存储其他寄存器的存储器分开,改为可以经由数据缓存单元来访问。AMX也可以利用在瓦片22上操作的加速器。例如,加速器可包括瓦片矩阵乘法单元(tile matrixmultiply unit,TMUL),该单元能操作来在瓦片22上执行乘法和加法。在一些实施例中,瓦片22可以被分配到几个调色板中的一个。例如,初始化调色板可以代表初始化状态,而划分的调色板可以将二维存储器映像24划分成若干个(例如,8个)瓦片。在一些实施例中,相对于二维存储器映像24的总体大小(例如,8或16kB),瓦片的每个分配可具有最大大小(例如,1或2kB)。额外地或者替代地,瓦片的大小可以是可编程的,由用户/程序员来设置。此外,调色板也可以是用新的调色板条目可配置的,这些新的调色板条目能够根据需要分配二维存储器映像24的资源。
核心体系结构、处理器和计算机体系结构。
处理器核心可以按不同的方式、为了不同的目的、在不同的处理器中实现。例如,这些核心的实现方式可以包括:1)适合于通用计算的通用有序核心;2)适合于通用计算的高性能通用乱序核心;3)主要适合于图形、二维矩阵乘法/加法和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)CPU,包括适合于通用计算的一个或多个通用有序核心和/或适合于通用计算的一个或多个通用乱序核心;以及2)协处理器,包括主要用于矩阵算术、图形和/或科学(吞吐量)的一个或多个专用核心。这些不同处理器导致不同的计算机系统体系结构,这些体系结构可以包括:1)协处理器与CPU在分开的芯片上;2)协处理器与CPU在同一封装中分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如矩阵算术、集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器、以及额外的功能。接下来描述示例核心体系结构,然后是对示例处理器和计算机体系结构的描述。
有序和乱序核心体系结构
图2A是图示了根据本公开的实施例的有序管线和寄存器重命名、乱序发出/执行管线的框图。图2B是图示了根据实施例要被包括在处理器中的有序体系结构核心的实施例和示例寄存器重命名、乱序发出/执行体系结构核心两者的框图。图2A和2B中的实线框图示了有序管线和有序核心,而添加的虚线框图示了寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图2A中,处理器中的管线30包括取得级32、长度解码级34、解码级36、分配级38、重命名级40、调度(也称为调遣或发出)级42、寄存器读取/存储器读取级44、执行级46、写回/存储器写入级48、异常处置级50、以及提交级52。
图2B示出了处理器核心54包括与执行引擎单元58耦合的前端单元56,并且两者都耦合到存储器单元60。处理器核心54可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或可替代核心类型。作为另外一个选项,处理器核心54可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processingunit,GPGPU)核心、图形核心,等等。
前端单元56包括与指令缓存单元64耦合的分支预测单元62,该指令缓存单元与指令转译后备缓冲器(translation lookaside buffer,TLB)66耦合。TLB 66与指令取得单元68耦合。指令取得单元68与解码电路70耦合。解码电路70(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可以利用各种不同的机制来实现解码电路70。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。处理器核心54可包括微代码ROM或其他介质,其为宏指令存储微代码(例如,在解码电路70中或者以其他方式在前端单元56内)。解码电路70耦合到执行引擎单元58中的重命名/分配器单元72。
执行引擎单元58包括重命名/分配器单元72,其耦合到引退单元74和一组一个或多个调度器单元76。(一个或多个)调度器单元76表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元76耦合到(一个或多个)物理寄存器堆单元78。(一个或多个)物理寄存器堆单元78的每一者表示一个或多个物理寄存器堆,这些物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一个指令的地址的指令指针),等等。在一个实施例中,(一个或多个)物理寄存器堆单元78包括向量寄存器12、写入掩码寄存器14、和/或x87堆栈18。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器堆单元78与引退单元74重叠以说明可用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;利用(一个或多个)未来堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;利用寄存器图谱和寄存器的池;等等)。
引退单元74和(一个或多个)物理寄存器堆单元78耦合到(一个或多个)执行集群80。(一个或多个)执行集群80包括一组一个或多个执行单元82和一组一个或多个存储器访问电路84。执行单元82可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全部执行多个不同功能的多个执行单元。(一个或多个)调度器单元76、(一个或多个)物理寄存器堆单元78和(一个或多个)执行集群80被示为单数的或者复数的,因为一些处理器核心54为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线、和/或存储器访问管线,它们各自具有其自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群。在单独的存储器访问管线的情况下,单独的存储器访问管线的处理器核心54是唯一具有存储器访问电路84的执行集群80)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,而其余的则进行有序执行。
该组存储器访问电路84耦合到存储器单元60。存储器单元60包括数据TLB单元86,该数据TLB单元耦合到数据缓存单元88,该数据缓存单元耦合到第2级(L2)缓存单元90。存储器访问电路84可包括加载单元、存储地址单元和存储数据单元,其中每一者耦合到存储器单元60中的数据TLB单元86。指令缓存单元64进一步耦合到存储器单元60中的第2级(L2)缓存单元90。L2缓存单元90耦合到一个或多个其他级别的缓存、加速器和/或主存储器。
作为示例,寄存器重命名、乱序发出/执行核心体系结构可实现管线30如下:1)指令取得单元68执行管线30的取得和长度解码级32和34;2)解码电路70执行管线30的解码级36;3)重命名/分配器单元72执行管线30的分配级38和重命名级40;4)(一个或多个)调度器单元76执行管线30的调度级42;5)(一个或多个)物理寄存器堆单元78和存储器单元60执行管线30的寄存器读取/存储器读取级44;执行集群80执行管线30的执行级46;6)存储器单元60和(一个或多个)物理寄存器堆单元78执行管线30的写回/存储器写入级48;7)在管线的异常处置级50中可涉及各种单元;和/或8)引退单元74和(一个或多个)物理寄存器堆单元78执行管线30的提交级52。
处理器核心54可以支持一个或多个指令集,例如x86指令集(带有或不带有较新版本的附加扩展);加州森尼维尔市的MIPS技术公司(MIPS Technologies of Sunnyvale,CA)的MIPS指令集;加州森尼维尔市的ARM控股公司(ARM Holdings of Sunnyvale,CA)的ARM指令集(带有可选的额外扩展,例如NEON)。额外地或者替代地,处理器核心54包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被多媒体应用使用的操作被利用紧缩数据来执行。此外,如前所述,处理器核心54可包括逻辑和/或电路,以支持加州圣克拉拉的英特尔公司(Intel Corporation of Santa Clara,CA)的AMX指令集。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如, Hyperthreading技术中的时间切片式取得和解码以及同时多线程处理)。
虽然是在乱序执行的上下文中描述寄存器重命名的,但寄存器重命名可被用在有序体系结构中。虽然处理器的图示实施例还包括单独的指令缓存单元64、单独的数据缓存单元88和共享的L2缓存单元90,但一些实施例可针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓存,或者多级内部缓存。在一些实施例中,处理器可包括内部缓存与在处理器核心54和/或处理器外部的外部缓存的组合。可替代地,一些处理器可以使用处理器核心54和/或处理器外部的缓存。
图3A和3B图示了有序核心体系结构的更详细框图。处理器核心54在一个芯片中包括一个或多个逻辑块(包括相同类型和/或不同类型的其他核心)。取决于应用,逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他I/O逻辑进行通信。
图3A是根据本公开的实施例的单个处理器核心54及其与片上互连网络100以及与其第2级(L2)缓存的本地子集104的连接的框图。在一个实施例中,指令解码器102支持具有紧缩数据指令集扩展的x86指令集。L1缓存106允许低延时访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元108和向量单元110使用分开的寄存器集合(分别是标量寄存器112(例如,x87堆栈18)和向量寄存器114(例如,向量寄存器12))并且在它们之间传送的数据被写入到存储器,然后被从第1级(L1)缓存106读回,但本公开的替代性实施例可使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器堆之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集104是全局L2缓存单元90的一部分,该全局L2缓存单元被划分成单独的本地子集,每处理器核心有一个。每个处理器核心54具有到其自己的L2缓存的本地子集104的直接访问路径。处理器核心54所读取的数据被存储在其L2缓存104子集中并且可被迅速访问,所述访问与其他处理器核心54访问其自己的本地L2缓存子集并行进行。处理器核心54所写入的数据被存储在其自己的L2缓存104子集中并且在必要时被从其他子集冲刷出。互连网络100确保核心和/或加速器之间的共享数据的一致性。互连网络100是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个数据路径在每个方向上可具有某个数目(例如,1012)的比特宽度。
图3B是根据本公开的实施例的图3A中的处理器核心的一部分的扩展视图。图3B包括L1缓存106的L1数据缓存106A部分,以及关于向量单元110和向量寄存器114的更多细节。具体而言,向量单元110可以是向量处理单元(vector processing unit,VPU)(例如,向量算术逻辑单元(ALU)118),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元120调配寄存器输入,利用数值转换单元122A和122B进行的数值转换,以及利用复制单元124对存储器输入进行的复制。写入掩码寄存器14允许断言所生成的向量写入。
图4是根据本公开的实施例的处理器130的框图,该处理器可具有多于一个处理器核心54,可具有(一个或多个)集成存储器控制器单元132,并且可具有集成的图形。图4中的实线框图示了具有单个核心54A、系统代理单元134和一组一个或多个总线控制器单元138的处理器130,而可选地添加的虚线框图示了具有多个核心54A-N、系统代理单元134中的一组一个或多个集成存储器控制单元132以及专用逻辑136的处理器130。
从而,处理器130的不同实现方式可以包括:1)CPU,其中专用逻辑136是矩阵算术、集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心),并且核心54A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、或者这些的组合);2)协处理器,其中核心54A-N是相对大量的主要针对矩阵算术、图形和/或科学(吞吐量)目的的专用核心;以及3)协处理器,其中核心54A-N是相对大量的通用有序核心。从而,处理器130可以是通用处理器、协处理器或者专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器130可被实现在一个或多个芯片上。处理器130可以是一个或多个衬底的一部分和/或可利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括核心内的一级或多级缓存、一组或一个或多个共享缓存单元140、以及与该组(一个或多个)集成存储器控制器单元132相耦合的外部存储器(未示出)。该组共享缓存单元140可包括一个或多个中间级别缓存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存),最后一级缓存(last level cache,LLC),和/或它们的组合。虽然基于环的互连网络100可以互连专用逻辑136(集成图形逻辑是专用逻辑136的示例)、该组共享缓存单元140和系统代理单元134/(一个或多个)集成存储器控制器单元132,但可以使用任何数目的已知技术来互连这种单元。例如,在一个或多个缓存单元142A-N和核心54A-N之间可以维持一致性。
在一些实施例中,核心54A-N中的一个或多个具有多线程能力。系统代理单元134包括协调和操作核心54A-N的那些组件。系统代理单元134可包括例如功率控制单元(powercontrol unit,PCU)和显示单元。PCU可以是或者可以包括用于调节核心54A-N和专用逻辑136的功率状态的逻辑和组件。显示单元用于驱动一个或多个在外部连接的显示器。
核心54A-N就体系结构指令集而言可以是同构的或者异构的。也就是说,核心54A-N中的两个或更多个可能够执行同一指令集,而其他的核心可能够只执行单个指令集的子集或者不同的指令集。
计算机体系结构
图5-图7是计算机体系结构的实施例的框图。这些体系结构可适合于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备。总之,能够包含处理器130和/或其他执行逻辑的各种系统或电子设备。
现在参考图5,示出了根据一实施例的系统150的框图。系统150可包括一个或多个处理器130A、130B,它们耦合到控制器中枢152。控制器中枢152可包括图形存储器控制器中枢(graphics memory controller hub,GMCH)154和输入/输出中枢(Input/Output Hub,IOH)156(它们可以在分开的芯片上);GMCH 154包括与存储器158和协处理器160耦合的存储器和图形控制器;IOH 156将输入/输出(I/O)设备164耦合到GMCH154。可替代地,存储器和图形控制器中的一者或两者被集成在处理器130内(如本文所述),存储器158和协处理器160耦合到(例如,直接耦合到)处理器130A,并且控制器中枢152与IOH 156在单个芯片中。
额外的处理器130B的可选性在图5中用虚线表示。每个处理器130A、130B可包括本文描述的处理器核心54中的一个或多个,并且可以是处理器130的某个版本。
存储器158可例如是动态随机访问存储器(dynamic random-access memory,DRAM)、相变存储器(phase change memory,PCM),或者它们的组合。对于至少一个实施例,控制器中枢152经由多点分支总线(例如前端总线(frontside bus,FSB))、点到点接口(例如QuickPath Interconnect(QPI))或者类似的连接162与(一个或多个)处理器130A、130B进行通信。
在一个实施例中,协处理器160是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一实施例中,控制器中枢152可包括集成图形加速器和/或AMX加速器(例如,TMUL)。
在处理器130A、130B的物理资源之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。
在一些实施例中,处理器130A执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器130A将这些协处理器指令识别为应当由附接的协处理器160执行的类型。因此,处理器130A在协处理器总线或其他互连上向协处理器160发出这些协处理器指令(或者表示协处理器指令的控制信号)。协处理器160接受并且执行接收到的协处理器指令。额外地或者替代地,处理器130A可以识别用于可编程架构的协处理器指令,并且可以将这些可编程架构指令发出给TMUL,TMUL进而将可编程架构指令引导到可编程架构。
现在参考图6,示出了根据一实施例的多处理器系统170的更详细框图。如图6所示,多处理器系统170是点到点互连系统,并且包括经由点到点接口190耦合的处理器172和处理器174。处理器172和174中的每一者可以是处理器130的某个版本。在本公开的一个实施例中,处理器172和174分别是处理器130A和130B,而协处理器176是协处理器160。在另一实施例中,处理器172和174分别是处理器130A和协处理器160。
处理器172和174被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元178和180。处理器172还包括点到点(P-P)接口182和184作为其总线控制器单元的一部分。类似地,处理器174包括P-P接口186和188。处理器172、174可利用P-P接口184、188经由点到点接口190来交换信息。如图6所示,IMC 178和180将处理器耦合到相应的存储器,即存储器192和存储器193,这些存储器可以是在本地附接到相应的处理器172、174的主存储器的不同部分。
处理器172、174可各自利用点到点接口182、200、186、202经由个体P-P接口196、198来与芯片组194交换信息。芯片组194可以可选地经由高性能接口204与协处理器176交换信息。在一实施例中,协处理器176是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器172或174中,或者在两个处理器172或174之外,经由各个P-P互连与处理器172、174连接,从而使得任一个或两个处理器的本地缓存信息在各个处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片组194可经由接口208耦合到第一总线206。在一实施例中,第一总线206可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如PCI快速总线或另一种第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图6所示,各种I/O设备210可耦合到第一总线206,以及将第一总线206耦合到第二总线214的总线桥212。在一实施例中,一个或多个额外的处理器216,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器,耦合到第一总线206。在一实施例中,第二总线214可以是低引脚数(low pin count,LPC)总线。各种设备可耦合到第二总线214,包括例如键盘/鼠标218、通信设备220和存储单元222,例如盘驱动器或者其他大容量存储设备,其在一实施例中可包括指令/代码和数据224。另外,音频I/O 226可耦合到第二总线214。注意,可以为多处理器系统170部署其他体系结构。例如,取代图6的点到点体系结构,多处理器系统170可实现多点分支总线或者其他这种体系结构。
现在参考图7,示出了根据一实施例的SoC 250的框图。图4中的相似元素具有相似的标号。另外,虚线框是一些SoC 250中包括的可选特征。在图7中,(一个或多个)互连单元252耦合到:应用处理器254,其包括一组一个或多个核心54A-N和(一个或多个)共享缓存单元140,其中核心54A-N包括缓存单元142A-N;系统代理单元134;(一个或多个)总线控制器单元138;(一个或多个)集成存储器控制器单元132;一组或一个或多个协处理器256,其可包括集成图形逻辑、图像处理器、音频处理器、和/或视频处理器;静态随机访问存储器(static random-access memory,SRAM)单元258;直接存储器访问(direct memoryaccess,DMA)单元260;以及显示单元262,以耦合到一个或多个外部显示器。在一实施例中,(一个或多个)协处理器256包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现途径的组合来实现本文公开的机制的实施例。本公开的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序和/或程序代码。
程序代码,例如图6中所示的数据224,可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可被应用到一个或多个输出设备。就本申请的目的而言,处理系统包括任何具有处理器的系统,例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或者微处理器。
可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。也可以用汇编语言或者用机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是编译语言或者解释语言。
至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令当被机器读取时,使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到制作该逻辑或处理器的制作机器中。
这些机器可读存储介质可包括——但不限于——由机器或设备制造或形成的物品的非暂态有形布置形式,包括存储介质,例如,硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compactdisk rewritable,CD-RW)、以及磁光盘),半导体器件(例如,只读存储器(read-onlymemory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡,光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,实施例包括非暂态有形机器可读介质,其包含指令或者包含可定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如用硬件描述语言(HardwareDescription Language,HDL)的设计。这种实施例也可被称为程序产品。
可编程逻辑器件
如前所述,处理器130可以利用一个或多个可编程架构(例如,FPGA),用于经由AMX(和/或其他)扩展进行加速。考虑到上述情况,图8图示了用于配置可编程器件的系统310的框图。设计者可以在集成电路上实现功能,例如包括一些可重配置电路(例如FPGA)的集成电路312。设计者可以使用设计软件314,例如AlteraTM的Quartus的一个版本,来实现要被编程到IC 312上的电路设计。设计软件314可以使用编译器316来生成低级别电路设计,该电路设计可以作为内核程序提供,有时被称为程序对象文件或比特流,其对集成电路312进行编程。也就是说,编译器316可以向IC 312提供代表电路设计的机器可读指令。如下所述,这些机器可读指令在得到验证时,可以使用针对处理器130的微代码更新被传输到FPGA。
IC 312可包括任何可编程逻辑器件,例如现场可编程门阵列(FPGA)340,如图9所示。就本示例的目的而言,FPGA 340被称为FPGA,但应当理解,该器件可以是任何适当类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。在一个示例中,FPGA 340是美国专利公布第2016/0049941号“Programmable Circuit Having Multiple Sectors(具有多个扇区的可编程电路)”中描述的类型的扇区化FPGA,该文献被通过引用完全并入,用于所有目的。FPGA 340可以形成在单个平面上。额外地或者替代地,FPGA 340可以是美国专利第10,833,679号“Multi-purpose Interface for Configuration Data and UserFabric Data(用于配置数据和用户架构数据的多用途接口)”中描述的类型的具有基础管芯和架构管芯的三维FPGA,该文献被通过引用完全并入,用于所有目的。
在图9的示例中,FPGA 340可包括收发器电路344,用于从FPGA340驱动信号以及用于接收来自其他器件的信号。互连资源346可用于通过FPGA 340路由信号,例如时钟或数据信号。图9的FPGA 340是扇区化的,这意味着可以通过若干个离散的可编程逻辑扇区348来分发可编程逻辑资源。每个可编程逻辑扇区348可包括若干个可编程逻辑元件350,这些元件具有由配置存储器352(例如,配置随机访问存储器(configuration random accessmemory,CRAM))定义的操作。可编程逻辑元件350可包括组合逻辑或顺序逻辑电路。例如,可编程逻辑元件350可包括查找表、寄存器、复用器、路由线,等等。设计者可以对可编程逻辑元件50进行编程,以执行各种期望的功能。电力供应源354可以向配电网络(powerdistribution network,PDN)356提供电压和电流源,该配电网络将电力配送给FPGA 340的各种组件。操作FPGA 40的电路会导致从配电网络356汲取电力。
在FPGA 340上可以有任何适当数目的可编程逻辑扇区348。事实上,虽然这里示出了29个可编程逻辑扇区348,但应当明白,在实际实现方式中可能会出现更多或更少的扇区(例如,在一些情况下,大约50至100个扇区或更多)。每个可编程逻辑扇区348可包括控制可编程逻辑扇区348的操作的扇区控制器(sector controller,SC)358。每个扇区控制器358可与器件控制器(device controller,DC)360进行通信。每个扇区控制器358可接受来自器件控制器360的命令和数据,并且可基于来自器件控制器360的控制信号从其配置存储器352中读取数据和将数据写入到其配置存储器352中。除了这些操作以外,还可以用许多额外的能力来增强扇区控制器358。例如,这种能力可包括对读取和写入进行本地定序,以实现配置存储器352上的差错检测和纠正,以及对测试控制信号进行定序以实现各种测试模式。
扇区控制器358和器件控制器360可以被实现为状态机和/或处理器。例如,扇区控制器358或器件控制器360的每个操作可以作为包含控制程序的存储器中的单独的例程来实现。这个控制程序存储器可以固定在只读存储器(ROM)中,或者存储在可写存储器中,例如随机访问存储器(RAM)。ROM的大小可以大于仅用于存储每个例程的一个拷贝的大小。取决于本地控制器可能被置于的“模式”,这可允许每个例程具有多个变体。当控制程序存储器被实现为随机访问存储器(RAM)时,RAM可被写入新的例程,以将新的操作和功能实现到可编程逻辑扇区348中。这可以以一种高效和容易理解的方式提供可使用的可扩展性。这可能是有用的,因为新的命令可以在扇区内带来大量的本地活动,而代价只是在器件控制器360和扇区控制器358之间的少量通信。
每个扇区控制器358从而可以与器件控制器360通信,器件控制器360可以协调扇区控制器58的操作并且传达从FPGA器件340外部发起的命令。为了支持这种通信,互连资源46可以充当器件控制器360和每个扇区控制器358之间的网络。互连资源可以支持器件控制器360和每个扇区控制器358之间的各种信号。在一个示例中,这些信号可以作为通信封包被发送。
FPGA 340可以是电编程的。在电编程布置下,可编程元件350可包括一个或多个逻辑元件(导线、门、寄存器,等等)。例如,在编程期间,使用引脚和输入/输出电路将配置数据加载到配置存储器352中。在一个示例中,配置存储器352可被实现为配置随机访问存储器(CRAM)单元。本文描述的基于RAM技术的配置存储器352的使用只是打算作为一个示例。此外,配置存储器352可以分布在FPGA 340的各种可编程逻辑扇区348中(例如,作为RAM单元)。配置存储器352可以提供相应的静态控制输出信号,该信号控制关联的可编程逻辑元件350或者互连资源346的可编程组件的状态。配置存储器352的输出信号可被应用于控制可编程逻辑元件350或者互连资源346的可编程元件的状态的金属氧化物半导体(metal-oxide-semiconductor,MOS)晶体管的栅极。
扇区控制器358和/或器件控制器360可确定每个扇区控制器358何时对其可编程逻辑扇区348的配置存储器352执行CRAM读取操作。每次扇区控制器358执行配置存储器352的CRAM读取操作时,都会从配电网络356汲取电力。如果在任何时候从配电网络356汲取太多的电力,则由配电网络356提供的电压可能下降到不可接受的低水平,或者在配电网络356上可能出现太多的噪声。为避免这种情况,器件控制器360和/或扇区控制器358可以构造可编程逻辑扇区348的CRAM读取,以通过在时间和/或空间上将CRAM读取分布到不同的可编程逻辑扇区348来避免过多的瞬时功率消耗。
可编程逻辑扇区348的扇区控制器58被示为通过向地址寄存器370提供地址(ADDRESS)信号和向数据寄存器372提供存储器写入信号(WRITE)、存储器读取信号(RDDATA)和/或要写入的数据(WR DATA)来对CRAM存储器352进行读取和写入。这些信号可用于使得数据寄存器372向配置存储器352的某条线写入数据或者从其读取数据,配置存储器352已沿地址线374被激活,如应用于地址寄存器370的ADDRESS信号所规定的。存储器读取/写入电路376可用于在数据寄存器372写入数据时将数据写入到已激活的配置存储器352单元中,并且可用于在数据寄存器372读取数据时从已激活的配置存储器352单元感测和读取数据。
基于FPGA的微体系结构集成
如前所述,处理器130的灵活指令集体系结构可用于在处理器130中集成嵌入式FPGA。该集成使得FPGA的算术逻辑单元(ALU)可用于执行协助处理器130的计算。灵活指令集体系结构可以使用x86存储器一致性模型,并且使用软件生态系统来提供处理器130中的指令的灵活使用。图10是包括高级矩阵扩展(AMX)的指令集体系结构的体系结构400的框图,该指令集体系结构可用于将FPGA集成到处理器130中。虽然图示的实施例与AMX有关,但一些实施例可以利用其他扩展,这些扩展具有适当的缓冲器大小(例如,>4kB)和传送/转译机制(例如,经由数据缓存单元88)。
如图所示,体系结构400包括乱序(out-of-order,OOO)核心402。OOO核心402可包括用于执行OOO操作的管线30的一个或多个执行集群80。OOO核心402还包括一个或多个预留站404,这些预留站允许处理器130在数据值被计算时取得并且再使用这些数据值。预留站404可被包括在图2B的执行引擎58的(一个或多个)调度器单元76中。OOO核心402还包括存储器指令单元406(例如,存储器单元60的一部分),其可用于与存储器(例如,L2缓存90)对接。
经由预留站404和/或存储器接口单元404,指令可被传输到用于对瓦片22执行计算的瓦片矩阵乘法单元(tile matrix multiply unit,TMU)407。例如,矩阵乘法命令408可用于使得TMU 407使用两个或更多个瓦片22执行各个乘法和/或累加操作。加载/存储瓦片命令410可用于将瓦片数据加载/存储到存储器映像24中的瓦片22中。数据可以经由数据缓存单元(data cache unit,DCU)412被从TMU 407加载或存储。例如,DCU 412可包括/被包括在图2B的数据缓存单元88和/或(一个或多个)物理寄存器堆78中。经由DCU 412,处理器130可用于将瓦片数据414加载到寄存器堆(TMB)416中和/或从寄存器堆(TMB)416存储瓦片数据415。TMB 416可包括图1的存储器映像24和/或图2B的(一个或多个)物理寄存器堆78。TMB416可能相对较大(例如,16kB),并且可以通过传入的矩阵乘法命令408以编程方式定义其用途、分配和位置。
传入的矩阵乘法命令408可以由TMUL控制电路417解释,该电路对传入的指令解码,这些指令指示出要在TMU 407中操作的一个或多个瓦片22的操作和/或大小/位置。TMU407对矩阵乘法命令408解码,并且在该命令与在TMUL FMA计算网格420中可执行的操作有关时,将解码后的指令418发送到TMUL融合-乘法-加法(fused-multiply-add,FMA)计算网格420。TMUL FMA计算网格420是能够从瓦片22读取和向瓦片22写入的融合乘法加法单元的网格。TMUL FMA计算网格420的尺寸可以被设置为瓦片22的最大大小,有或者没有一些额外的缓冲空间。TMUL FMA计算网格420执行计算422。具体而言,TMUL FMA计算网格420可以对B矩阵424进行操作,该B矩阵被存储在TMB 416中的瓦片426中。如图所示,瓦片426中的数据可以被加载到本地瓦片428中。矩阵A和C的读取操作430可用于从TMB 416中的各个瓦片432和434中将矩阵A和C读取到TMUL FMA计算网格420。TMUL FMA计算网格420执行计算422。例如,TMUL FMA计算网格420可以将A和B矩阵相乘,并且将它们加到矩阵C以更新矩阵C中的值。对矩阵C的更新436被存储回到TMB 416中的瓦片432。然后,结果(例如,矩阵C 436)经由DCU412被加载回到OOO核心402。
TMUL FMA计算网格420可被调谐到某些数据类型(例如,INT 8),并且可能无法高效地利用其他数据类型(例如,FP16)。然而,FPGA单元440可被包括在TMU 407中以添加灵活性。FPGA单元440可用于通过使用FPGA单元440来执行比TMUL FMA计算网格420中可用的更灵活的动作来扩展灵活性。例如,FPGA单元440可用于将其他数据类型转换为TMUL FMA计算网格420所调谐到的数据类型,从而使得TMU 407能够高效地利用TMUL FMA计算网格420所调谐到的数据类型以外的数据类型。为实现这种灵活性,矩阵乘法命令408可以被扩展为包括操作码中的一个或多个比特,以将指令作为解码的命令442引导到FPGA单元440。额外地或者替代地,矩阵乘法命令408的至少一些解码可以在FPGA单元408中执行。额外地或者替代地,FPGA单元440可以利用一个或多个存储器控制器和时钟同步电路444,以促进数据从TMUL控制电路417和/或TMB 416传送到FPGA单元440的FPGA计算网格446。例如,TMUL控制电路417和/或TMB 416之间的传送可以是异步的,并且利用握手来处置指令的灵活执行中的延迟。
FPGA计算网格446可包括FPGA单元440的可编程架构,其可被配置为使用经由作为用户逻辑创建并且加载到FPGA单元440中的编译设计而存储在FPGA单元440中的配置来执行灵活的功能。在一些实施例中,FPGA计算网格446的配置可以在处理器启动时被从FPGA单元440的配置RAM(CRAM)加载。额外地或者替代地,FPGA计算网格446的配置可以在处理器指定的任何时间被加载。
FPGA单元440可以基于解码的命令442来加载要被作用的数据并且将被作用的数据存储在TMB 416中。换句话说,经由连接448从TMB416提取数据,并且经由连接450将数据写回到TMB 416。
FPGA单元440可以支持多个指令。这些各种指令为处理器/AMX添加了灵活性。这些灵活的指令可以由客户/用户在现场进行编程。每个指令可以在一个或多个存储器控制器和时钟同步电路444中拥有其自己的锁相环(phase-locked loop,PLL)。额外地或者替代地,至少两个不同的指令可以共享PLL。这些指令可以在启动时(或者由处理器指定的另一个时间)被加载,并且被反射回到操作系统。如下所述,在加载指令之前,可以检查指令以进行指令的认证/验证。
如图所示,FPGA单元440可以与TMU 407单片地位于同一硅片上,FPGA单元440物理上位于TMU 407内。然而,在一些实施例中,FPGA单元440可以被放置在不同的硅片上。例如,如图11所示,FPGA单元440可以位于与TMU 407的其余部分分开的管芯上(例如,在三维配置中)。这种将FPGA单元440与TMU 407的其余部分分开到单独的管芯上,可以使得处理器能够被实现为多进程技术。作为MCP的实现方式可以降低将FPGA单元440集成到处理器中的成本。额外地或者替代地,作为MCP的实现方式可以减少处理器的部署和/或处理器的更新的上市时间。
如前所述,基于FPGA的指令集体系结构的部署可以通过在处理器启动时作为冷复位或热复位流程的一部分加载存储的FPGA配置来实现。启动时的加载可用于克服将编程比特流加载到FPGA单元440中的延迟。因此,在比特流的加载发生在复位期间的实施例中,经由FPGA单元440的配置的单个ISA表现可以在启动周期期间存在,直到处理器被复位为止。
由于加载外部配置比特流可能包含安全性和/或完整性风险,所以在加载之前可以向配置比特流应用某种水平的认证/验证。例如,为了将配置加载到FPGA单元440中,可以使用作为经认证的微代码补丁的一部分分发的配置比特流中传送的数据来存储配置。
应当理解,虽然上文论述的FPGA单元440被图示为使得处理器130能够经由灵活的ISA负载转移模型中的AMX(和/或其他)扩展来利用一个或多个可编程架构(例如,FPGA)进行加速,但一个或多个FPGA可以被利用在额外的负载转移模型和配置中。例如,现场可编程逻辑(例如,FPGA)体系结构可以通过除了灵活ISA模型以外还利用一个或多个计算负载转移模型(例如,PCIE、灵活ISA),而作为细粒度加速器和/或粗粒度加速器被利用。FPGA也可以通过利用FPGA单元440和CPU的多个2D和3D体系结构配置,与CPU的一个或多个核心54连接。
三维堆叠式可编程架构和处理器可重配置体系结构
如上所述,可编程架构(例如,FGPA单元440)在二维配置中实现细粒度加速和/或粗粒度加速的能力是基于FPGA单元440相对于CPU的一个或多个核心54的位置和大小来定义的。粗粒度加速可以由单个大的FPGA块来实现。对于更细粒度的加速,FPGA单元440可以被划分为多个较小的FPGA单元440,它们与各个部分(例如,处理器的核心)更紧密地联系在一起。FPGA单元440和/或核心54的各种配置可以将加速的颗粒度限制为粗粒度加速或者细粒度加速。
考虑到上述情况,图12是根据一实施例的用于执行细粒度加速的3D堆叠式布置500中的处理器504(例如,CPU)和可编程架构(例如,FPGA单元440)的示图。FPGA单元440可以与多核心中央处理单元(CPU)504进行3D堆叠,以实现粗粒度和细粒度的加速功能。图12的配置是堆叠有多核心CPU 504和FPGA单元440的3D配置中的细粒度加速的一种可能实现方式的实施例。
FPGA单元440或者其他现场可编程阵列与CPU 504的一个或多个核心54的3D附接可以使用任何适当的封装来执行。例如,可以利用基于三维集成电路面对面管芯堆叠封装的接口(例如,Intel利的Foveros基)将FPGA单元440与CPU 504的一个或多个核心54联接起来。这使得FPGA单元440作为执行单元和/或加速器的3D附接能够得以扩展,而不影响CPUNoC(片上网络)性能。由于FPGA的FPGA功率密度相对于多核心CPU 504的功率密度,FPGA单元440可以被放置在3D堆叠式构造中的底部管芯上。FPGA单元440可以根据期望的加速方法(例如,细粒度加速、粗粒度加速)被划分为一个或多个部分502。
在一些实施例中,FPGA可以在3D堆叠式布置中执行细粒度加速。如上所述,FPGA单元440可以被划分为多个部分502,用于细粒度加速。在细粒度配置中,部分502的数目可以对应于多核心CPU 504中存在的部分(例如,核心)的数目,并且/或者可以是比多核心CPU504中存在的部分更多的部分。FGPA单元440可能够经由一个或多个接口访问一个或多个核心54中的数据,这些接口使得多核心CPU 504和FPGA单元440之间能够进行通信。FPGA单元440可以与多核心CPU 504处的一个或多个接口相对接,这使得FPGA单元440能够访问寄存器堆、L1缓存106、L2缓存90或者任何其他每核心缓存或寄存器。
将FPGA单元440划分为多个部分502的能力可以使得FGPA单元440能够让各部分被配置为多个小型定制功能单元,以实现细粒度加速。这使得FPGA单元440能够从寄存器堆20(例如,对于与1-10个时钟周期对应的小功能)或者L2缓存90(例如,对于与10-100个时钟周期对应的较大功能)读取和向其写入。该接口可包括用于寄存器堆20、L2缓存90、L1缓存120等等的部分的一个或多个端口。应当理解,多核心CPU504和FPGA单元440之间的接口可以根据期望的通信速度、用户配置的选项等等来进行配置。
与多核心CPU 504相对应的指令集体系结构(ISA)可以被扩展,以打开定制操作码空间,该定制操作码空间带有选项以支持上文论述的细粒度加速配置。操作码空间可以被工作负载体系结构利用来定义定制指令。可以通过利用内在的编译器功能和/或手动优化的库来利用定制指令,如上文在灵活ISA实施例中所论述的。
考虑到上述情况,图13是根据一实施例的处理器体系结构的流程图,其包括几个逻辑块,与FPGA单元440相结合,在图12的3D堆叠式布置中实现细粒度加速。FPGA单元440的可重配置可编程架构可以连接到多核心CPU 504的执行单元,以执行各种进程。
如上所述,CPU管线30可以通过执行CPU管线30的指令取得级32和指令解码级36来发起处理。解码电路70(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,以其他方式反映原始指令,或者是从原始指令得出的。可以利用各种不同的机制来实现解码电路70。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。处理器核心54可包括微代码ROM或其他介质,其存储用于宏指令(例如,在解码单元70中或者以其他方式在前端单元56内)的微代码。解码电路70可以执行管线30的解码级36,而分配器单元72执行管线的分配级38。
分配级38可包括将数据调遣到核心54和/或FPGA单元440中的执行单元。核心54中的执行单元可包括算术逻辑单元(ALU)118、加载和存储单元(Load and Store,LD/ST)和/或分支510以及其他执行单元。接口可包括如上所述的额外端口,例如可以将数据路由到多核心CPU 504的执行单元的ALU 118的端口0,可以将数据路由到LD/ST 508的端口1,以及可以添加任何其他适当数目的端口来将数据路由到核心中存在的任何其他分支510(例如,执行单元)。可编程架构本身可用于实现一个或多个定制功能单元,这些定制功能单元通过指令集体系结构(ISA)中的定制操作码被暴露出来。
此外,分配级72可包括通过利用Intel利的Foveros链路将数据调遣到FPGA单元440,该Foveros链路在FPGA单元440和多核心CPU 504之间实现了低延时高带宽接口。通过FPGA端口路由到FPGA单元440的数据可以被路由到FPGA单元440内的多个可编程执行单元(programmable execution unit,PEU)512,以经由FPGA单元440实现细粒度的加速。在一些实施例中,到FPGA单元440的执行单元512(例如,可编程架构中的编程逻辑)的调遣可以经由扩展体系结构或者任何前述机制来执行。
考虑到上述情况,图14是根据一实施例的用于处理器和可编程架构的3D堆叠式混合体系结构的示图,实现了粗粒度和细粒度加速。可编程架构可以被划分成多个部分,这些部分使得FPGA单元440的粗粒度加速配置和细粒度加速配置的混合体系结构都能实现。在一些实施例中,可以在FPGA单元440中部署单个粗粒度部分,而没有任何细粒度部分。
可重配置架构可以通过将FPGA单元440配置为用于执行更大的负载转移计算的一个或多个基于外围组件互连快速(peripheral component interconnect express,PCIe)的大型传统加速器器件来实现粗粒度加速。粗粒度接口可包括系统存储器接口,该系统存储器接口使得系统存储器的一部分能够被预留给FPGA单元440,以使得能够执行与传统FPGA PCIe卡上的直接附接双数据速率(double data rate,DDR)相类似的负载转移计算。FPGA 514的粗粒度部分还可包括到多核心CPU 504的输入输出I/O接口。(I/O)接口的使用使得粗粒度的FPGA部分514能够作为PCIe器件发挥作用,并且可不包括PCIe物理层。粗粒度FPGA部分514还可包括外部通用输入和输出(general purpose input and output,GPIO)接口。这种配置使得已经被重构造的传统工作负载能够被附接到FPGA的外部PCIe处理,从而被3D FPGA单元440所利用。除了上述接口以外,应当理解,可以实现任何适当的接口以支持粗粒度加速。
粗粒度配置还可包括一个或多个大型计算快速链路(Compute Express Link,CXL)器件,这些器件可以利用与CPU 504共享的存储器和/或缓存组件发挥作用。这可以使得FPGA单元440能够减少数据处理的延时并且简化编程指令。这种配置还可以实现统一的存储器访问点,并且使得共享指针能够在核心和加速器之间发挥作用。多核心CPU 504也可以利用算法来根据需要将数据移得更靠近核心和/或加速器,以使得能够实现跨器件可访问性。
如前所述,可重配置架构可用于实现细粒度的加速器部分502,如上文在图12中详述的。3D堆叠式FPGA单元440和多核心CPU 504的混合配置使得两种配置都能够运作,其中可重配置架构的一部分用于以紧密耦合的方式与多核心CPU 504通信(例如,专门用于一个核心),并且使得剩余部分能够被用于更粗粒度的加速器。
此外,也可以对除了上述CPU 504以外的多个处理单元实现体系结构组件的3D堆叠式取向。处理器体系结构的3D堆叠式取向可以使得多个计算硬件元件之间的互连性和功能能够增大。例如,专用部分502可以与它与之紧密耦合的CPU 504的一部分(例如,核心54)对齐。
除了前述的3D布置以外,或者替代前述的3D布置,CPU小芯片和其他小芯片可以被耦合在可编程架构基础管芯之上。图15是根据本公开的实施例的各种异构计算小芯片和可编程架构基础管芯518的示图。各种小芯片可包括CPU小芯片516、双加速(dualacceleration,DL)小芯片520、图形处理单元(Graphics Processing Unit,GPU)小芯片522、FPGA架构小芯片524、和/或其他小芯片类型。各种小芯片可以被堆叠在可编程架构基础管芯518之上,以能够根据相应的小芯片对可编程架构基础管芯518进行重配置来实现多用途功能。
各种小芯片在可编程架构基础管芯518上进行3D堆叠的能力使得每个小芯片能够将数据流到下一个小芯片,而无需昂贵的片外数据移动加速器和/或向每个小芯片的所有互连提供高带宽互连。可编程架构基础管芯518可以是类似于FPGA的架构,与标准FPGA单元中包括的相比,它包括更多的路由器资源组件和更少的可编程逻辑组件和密集的计算引擎。换句话说,与其他比可编程架构基础管芯518更适合更多计算的FPGA单元相比,可编程架构基础管芯518更适合高速数据传输。
用于顶部小芯片和可编程架构基础管芯518之间的数据传送的物理协议可以在制造时被标准化,并且可包括各种链路层协议,这些协议可以利用到可编程架构基础管芯518的路由资源和物理链路,以低延时和高带宽来进行隧传。可编程架构基础管芯518中的可编程逻辑组件可被用来对组装在可编程架构基础管芯518上的计算芯片所特有的更高级别的协议引擎进行编码。通过这种3D堆叠式体系结构,可以基于工作负载规格(例如,存储器、存储、计算能力,等等)来动态地配设系统资源(例如,存储器、I/O,等等)。
考虑到上述情况,多核心CPU 504和FPGA单元440可以被集成到数据处理系统中,或者可以是数据处理系统中包括的组件。例如,处理器可以是数据处理系统550的组件,如图16所示。数据处理系统550可包括主机处理器552(例如,处理器130)、存储器和/或存储电路554,以及网络接口556。数据处理系统550可包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(application specific integrated circuit,ASIC))。主机处理器552可包括任何前述处理器,这些处理器可以管理对数据处理系统550的数据处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、加密货币操作,等等)。存储器和/或存储电路554可包括随机访问存储器(random access memory,RAM)、只读存储器(read-onlymemory,ROM)、一个或多个硬盘、闪存,等等。存储器和/或存储电路554可以保存要由数据处理系统550处理的数据。在一些情况下,存储器和/或存储电路554还可以存储用于对FPGA单元440编程的配置程序(比特流)。网络接口556可以允许数据处理系统550与其他电子设备通信。数据处理系统550可包括几个不同的封装,或者可以被包含在单个封装基板上的单个封装内。例如,数据处理系统550的组件可以位于一个位置(例如,数据中心)或者多个位置处几个不同封装上。例如,数据处理系统550的组件可以位于不同的地理位置或者区域中,例如城市、州或者国家。
在一个示例中,数据处理系统550可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统550可以经由网络接口556接收数据处理请求,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、数字信号处理、或者一些其他专门任务。
虽然本公开中记载的实施例可容许各种修改和替代形式,但具体实施例已在附图中被以示例方式示出并且已在本文中被详细描述。然而,应当理解,本公开并不打算限于所公开的特定形式。本公开要覆盖落在如以下所附权利要求限定的本公开的精神和范围内的所有修改、等同和替代。
本文提出和要求保护的技术被引用并且应用于实物和具有实用性的具体示例,这些实物和示例明确地改善了当前的技术领域,因此不是抽象的、无形的或者纯粹的理论。另外,如果附在本说明书末尾的任何权利要求包含一个或多个被指定为“用于[执行][某项功能]的装置……”或者“用于[执行][某项功能]的步骤……”的要素,则希望根据35U.S.C.112(f)来解释这样的要素。然而,对于包含以任何其他方式指定的要素的任何权利要求,希望不根据35U.S.C.112(f)来解释这样的要素。
本公开的示例实施例
以下编号的条款定义了本公开的某些示例实施例。
条款1
一种系统,包括:
处理器,具有一个或多个核心;以及
可编程架构器件,其中所述处理器在所述可编程架构器件上方按三维取向堆叠,并且其中所述可编程架构器件包括:
可编程架构,包括多个分区,这多个分区被配置为执行细粒度加速操作;以及
一个或多个接口,被配置为在所述可编程架构和所述处理器之间的连接,其中所述可编程架构器件能操作来:
经由所述一个或多个接口从处理器管线接收一组或多组数据;
将所述可编程架构的第一部分配置为执行所述细粒度加速操作,该第一部分包括所述多个分区,所述多个分区耦合到所述处理器的所述一个或多个核心的一个或多个执行单元,其中所述细粒度加速操作包括扩展所述处理器的指令集体系结构以启动定制操作码空间来与所述可编程架构对接;
从所述处理器管线接收额外的一组或多组数据;并且
将所述可编程架构的第二部分配置为与所述处理器对接以执行粗粒度加速操作,该第二部分包括为所述可编程架构预留的一个或多个系统存储器部分。
条款2
如条款1所述的系统,其中,所述细粒度加速操作包括执行从所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存读取数据和向所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存写入数据的操作。
条款3
如条款2所述的系统,其中,所述一个或多个接口包括一个或多个端口,所述一个或多个端口用于所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存的部分。
条款4
如条款1所述的系统,其中,所述一个或多个接口包括基于三维集成电路面对面管芯堆叠封装的接口。
条款5
如条款1所述的系统,其中,所述多个分区的数目至少与所述处理器的一个或多个核心的数目对应。
条款6
如条款1所述的系统,其中,所述细粒度加速操作和所述粗粒度加速操作是通过将所述可编程架构的第一部分配置用于所述细粒度加速操作并且将所述可编程架构的第二部分配置用于所述粗粒度加速操作来同时执行的。
条款7
如条款1所述的系统,其中,所述粗粒度加速操作包括使用一个或多个计算快速链路(CXL)器件来执行操作,所述一个或多个计算快速链路器件利用与所述处理器共享的存储器组件。
条款8
如条款1所述的系统,其中,所述一个或多个接口包括所述可编程架构的一个或多个输入/输出(I/O),一个或多个外部通用输入/输出(GPIO),或者这两者。
条款9
如条款1所述的系统,其中,所述处理器的工作负载体系结构利用所述定制操作码空间来定义一组定制指令以执行所述细粒度加速操作。
条款10
如条款9所述的系统,其中,所述一组定制指令被编译器、策划库或者这两者利用。
条款11
如条款1所述的系统,其中,所述可编程架构器件包括现场可编程门阵列(FPGA)。
条款12
一种在可编程架构器件上方以三维取向堆叠的处理器之间的数据传送的方法,包括:
经由所述处理器经由一个或多个接口从处理器管线接收一组或多组数据;经由所述处理器将所述可编程架构器件的可编程架构的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,所述多个分区耦合到所述处理器的一个或多个核心的一个或多个执行单元,其中所述细粒度加速操作包括扩展所述处理器的指令集体系结构以启动定制操作码空间来与所述可编程架构对接;
经由所述处理器从所述处理器管线接收额外的一组或多组数据;并且
经由所述处理器将所述可编程架构的第二部分配置为与所述处理器对接以对所述额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为所述可编程架构预留的一个或多个系统存储器部分。
条款13
如条款12所述的方法,包括:经由所述处理器通过将所述可编程架构的第一部分配置用于所述细粒度加速操作并且将所述可编程架构的第二部分配置用于所述粗粒度加速操作来同时执行所述细粒度加速操作和所述粗粒度加速操作。
条款14
如条款12所述的方法,包括:经由所述处理器利用一个或多个外部通用输入/输出(GPIO)执行所述粗粒度加速,所述一个或多个外部通用输入/输出(GPIO)能操作来为所述可编程架构提供与所述处理器的接口以执行所述粗粒度加速操作。
条款15
如条款12所述的方法,其中,所述粗粒度加速操作包括使用一个或多个计算快速链路(CXL)器件来执行操作,所述一个或多个计算快速链路器件利用与所述处理器共享的存储器组件。
条款16
如条款12所述的方法,其中,执行所述细粒度加速操作包括执行从所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存读取数据和向所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存写入数据的操作。
条款17
一种系统,包括:
一个或多个计算小芯片;
可编程架构基础管芯,其中所述一个或多个计算小芯片在所述可编程架构基础管芯上方按三维取向堆叠,并且其中所述可编程架构基础管芯包括一个或多个接口,所述一个或多个接口被配置为在所述可编程架构基础管芯的可编程架构和所述一个或多个计算小芯片之间提供连接,其中所述可编程架构基础管芯能操作来:
允许在所述可编程架构基础管芯上方三维堆叠的所述一个或多个计算小芯片之间的数据传送;并且
经由所述一个或多个计算小芯片经由所述一个或多个接口接收一组或多组数据;
经由所述一个或多个计算小芯片将所述可编程架构的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,所述多个分区耦合到所述一个或多个计算小芯片的一个或多个部分,其中所述细粒度加速操作包括扩展所述一个或多个计算小芯片的指令集体系结构以启动定制操作码空间来与所述可编程架构基础管芯对接;
经由所述一个或多个计算小芯片经由所述一个或多个接口接收额外的一组或多组数据;并且
经由所述一个或多个计算小芯片将所述可编程架构基础管芯的第二部分配置为与所述一个或多个计算小芯片对接以对所述额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为所述可编程架构基础管芯预留的一个或多个系统存储器部分。
条款18
如条款17所述的系统,其中,所述一个或多个计算小芯片包括一个或多个中央处理单元(CPU)小芯片、一个或多个图形处理单元(GPU)小芯片、一个或多个双加速器(DL)小芯片、或者这些的任意组合。
条款19
如条款17所述的系统,其中,所述一个或多个计算小芯片基于所述一个或多个计算小芯片的预期工作负载来动态地配设存储器、一个或多个输入/输出(I/O)资源、或者这两者。
条款20
如条款17所述的系统,其中,所述可编程架构基础管芯包括现场可编程门阵列(FPGA)。
Claims (20)
1.一种用于执行细粒度加速操作和粗粒度加速操作的系统,该系统包括:
处理器,具有一个或多个核心;以及
可编程架构器件,其中所述处理器在所述可编程架构器件上方按三维取向堆叠,并且其中所述可编程架构器件包括:
可编程架构,包括多个分区,这多个分区被配置为执行细粒度加速操作;以及
一个或多个接口,被配置为在所述可编程架构和所述处理器之间提供连接,其中所述可编程架构器件能操作来:
经由所述一个或多个接口从处理器管线接收一组或多组数据;
将所述可编程架构的第一部分配置为执行所述细粒度加速操作,该第一部分包括所述多个分区,所述多个分区耦合到所述处理器的所述一个或多个核心的一个或多个执行单元,其中所述细粒度加速操作包括扩展所述处理器的指令集体系结构以启动定制操作码空间来与所述可编程架构对接;
从所述处理器管线接收额外的一组或多组数据;并且
将所述可编程架构的第二部分配置为与所述处理器对接以执行粗粒度加速操作,该第二部分包括为所述可编程架构预留的一个或多个系统存储器部分。
2.如权利要求1所述的系统,其中,所述细粒度加速操作包括执行从所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存读取数据和向所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存写入数据的操作。
3.如权利要求2所述的系统,其中,所述一个或多个接口包括一个或多个端口,所述一个或多个端口用于所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存的部分。
4.如权利要求1所述的系统,其中,所述一个或多个接口包括基于三维集成电路面对面管芯堆叠封装的接口。
5.如权利要求1所述的系统,其中,所述多个分区的数目至少与所述处理器的一个或多个核心的数目对应。
6.如权利要求1所述的系统,其中,所述细粒度加速操作和所述粗粒度加速操作是通过将所述可编程架构的第一部分配置用于所述细粒度加速操作并且将所述可编程架构的第二部分配置用于所述粗粒度加速操作来同时执行的。
7.如权利要求1所述的系统,其中,所述粗粒度加速操作包括使用一个或多个计算快速链路(CXL)器件来执行操作,所述一个或多个计算快速链路器件利用与所述处理器共享的存储器组件。
8.如权利要求1所述的系统,其中,所述一个或多个接口包括所述可编程架构的一个或多个输入/输出(I/O)、一个或多个外部通用输入/输出(GPIO)、或者这两者。
9.如权利要求1所述的系统,其中,所述处理器的工作负载体系结构利用所述定制操作码空间来定义一组定制指令以执行所述细粒度加速操作。
10.如权利要求9所述的系统,其中,所述一组定制指令被编译器、策划库或者这两者利用。
11.如权利要求1所述的系统,其中,所述可编程架构器件包括现场可编程门阵列(FPGA)。
12.一种在可编程架构器件上方以三维取向堆叠的处理器之间的数据传送的方法,包括:
经由所述处理器经由一个或多个接口从处理器管线接收一组或多组数据;经由所述处理器将所述可编程架构器件的可编程架构的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,所述多个分区耦合到所述处理器的一个或多个核心的一个或多个执行单元,其中所述细粒度加速操作包括扩展所述处理器的指令集体系结构以启动定制操作码空间来与所述可编程架构对接;
经由所述处理器从所述处理器管线接收额外的一组或多组数据;并且
经由所述处理器将所述可编程架构的第二部分配置为与所述处理器对接以对所述额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为所述可编程架构预留的一个或多个系统存储器部分。
13.如权利要求12所述的方法,包括:经由所述处理器通过同时将所述可编程架构的第一部分配置用于所述细粒度加速操作并且将所述可编程架构的第二部分配置用于所述粗粒度加速操作来同时执行所述细粒度加速操作和所述粗粒度加速操作。
14.如权利要求12所述的方法,包括:经由所述处理器利用一个或多个外部通用输入/输出(GPIO)执行所述粗粒度加速操作,所述一个或多个外部通用输入/输出(GPIO)能操作来为所述可编程架构提供与所述处理器的接口以执行所述粗粒度加速操作。
15.如权利要求12所述的方法,其中,所述粗粒度加速操作包括使用一个或多个计算快速链路(CXL)器件来执行操作,所述一个或多个计算快速链路(CXL)器件利用与所述处理器共享的存储器组件。
16.如权利要求12所述的方法,其中,执行所述细粒度加速操作包括执行从所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存读取数据和向所述处理器的寄存器堆、L1缓存、L2缓存或者任何其他每核心缓存写入数据的操作。
17.一种系统,包括:
一个或多个计算小芯片;
可编程架构基础管芯,其中所述一个或多个计算小芯片在所述可编程架构基础管芯上方按三维取向堆叠,并且其中所述可编程架构基础管芯包括一个或多个接口,所述一个或多个接口被配置为在所述可编程架构基础管芯的可编程架构和所述一个或多个计算小芯片之间提供连接,其中所述可编程架构基础管芯能操作来:
允许在所述可编程架构基础管芯上方三维堆叠的所述一个或多个计算小芯片之间的数据传送;并且
经由所述一个或多个计算小芯片经由所述一个或多个接口接收一组或多组数据;
经由所述一个或多个计算小芯片将所述可编程架构基础管芯的第一部分配置为执行细粒度加速操作,该第一部分包括多个分区,所述多个分区耦合到所述一个或多个计算小芯片的一个或多个部分,其中所述细粒度加速操作包括扩展所述一个或多个计算小芯片的指令集体系结构以启动定制操作码空间来与所述可编程架构基础管芯对接;
经由所述一个或多个计算小芯片经由所述一个或多个接口接收额外的一组或多组数据;并且
经由所述一个或多个计算小芯片将所述可编程架构的第二部分配置为与所述一个或多个计算小芯片对接以对所述额外的一组或多组数据执行粗粒度加速操作,该第二部分包括为所述可编程架构基础管芯预留的一个或多个系统存储器部分。
18.如权利要求17所述的系统,其中,所述一个或多个计算小芯片包括一个或多个中央处理单元(CPU)小芯片、一个或多个图形处理单元(GPU)小芯片、一个或多个双加速器(DL)小芯片、或者这些的任意组合。
19.如权利要求17所述的系统,其中,所述一个或多个计算小芯片基于所述一个或多个计算小芯片的预期工作负载来动态地配设存储器、一个或多个输入/输出(I/O)资源、或者这两者。
20.如权利要求17所述的系统,其中,所述可编程架构基础管芯包括现场可编程门阵列(FPGA)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/485,119 | 2021-09-24 | ||
US17/485,119 US20220014202A1 (en) | 2021-09-24 | 2021-09-24 | Three-Dimensional Stacked Programmable Logic Fabric and Processor Design Architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858439A true CN115858439A (zh) | 2023-03-28 |
Family
ID=79173187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211015744.1A Pending CN115858439A (zh) | 2021-09-24 | 2022-08-24 | 三维堆叠式可编程逻辑架构和处理器设计体系结构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220014202A1 (zh) |
EP (1) | EP4155960A1 (zh) |
CN (1) | CN115858439A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220337251A1 (en) * | 2022-07-01 | 2022-10-20 | Ankireddy Nalamalpu | Systems and methods for modular disaggregated integrated circuit systems |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523207B2 (en) | 2014-08-15 | 2019-12-31 | Altera Corporation | Programmable circuit having multiple sectors |
US10833679B2 (en) | 2018-12-28 | 2020-11-10 | Intel Corporation | Multi-purpose interface for configuration data and user fabric data |
US11101804B2 (en) * | 2019-01-22 | 2021-08-24 | Intel Corporation | Fast memory for programmable devices |
-
2021
- 2021-09-24 US US17/485,119 patent/US20220014202A1/en active Pending
-
2022
- 2022-08-08 EP EP22189242.5A patent/EP4155960A1/en active Pending
- 2022-08-24 CN CN202211015744.1A patent/CN115858439A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220014202A1 (en) | 2022-01-13 |
EP4155960A1 (en) | 2023-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
JP7416393B2 (ja) | テンソル並べ替えエンジンのための装置および方法 | |
CN108351830B (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN107408036B (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
US20190004878A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features | |
CN106708753B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
CN107003921B (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
US10923463B2 (en) | Method and machine-readable medium for configuring processors with base dies having landing slots | |
JP7419629B2 (ja) | データ表現間の一貫性のある変換を加速するプロセッサ、方法、プログラム、コンピュータ可読記憶媒体、および装置 | |
JP2017107587A (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
CN111752606A (zh) | 用于对多个数据元素值执行约简操作的方法和装置 | |
US20170177361A1 (en) | Apparatus and method for accelerating graph analytics | |
EP3716047A1 (en) | Apparatus and method for controlling complex multiply-accumulate circuitry | |
EP3709159A1 (en) | Processing vectorized guest physical address translation instructions | |
US11941409B2 (en) | Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process | |
CN110909882A (zh) | 用于执行水平铺块操作的系统和方法 | |
CN112948285A (zh) | 灵活高速缓存分配技术的基于优先级的高速缓存行驱逐算法 | |
CN107924442B (zh) | 用于轻量级虚拟化上下文的方法和设备 | |
CN112148634A (zh) | 异步高速缓存转储清除引擎 | |
EP4155960A1 (en) | Three-dimensional stacked programmable logic fabric and processor design architecture | |
ES2971474T3 (es) | Método y aparato de aproximación utilizando polinomios | |
US20210326135A1 (en) | Programmable Fabric-Based Instruction Set Architecture for a Processor | |
US20230113953A1 (en) | Dynamic voltage and frequency scaling for discrete graphics systems | |
CN109416635B (zh) | 针对使用多个架构寄存器的指令的架构寄存器替换 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |