CN110968543A - 存储器中计算系统和方法 - Google Patents

存储器中计算系统和方法 Download PDF

Info

Publication number
CN110968543A
CN110968543A CN201910802306.1A CN201910802306A CN110968543A CN 110968543 A CN110968543 A CN 110968543A CN 201910802306 A CN201910802306 A CN 201910802306A CN 110968543 A CN110968543 A CN 110968543A
Authority
CN
China
Prior art keywords
memory
circuitry
data
die
integrated circuit
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
Application number
CN201910802306.1A
Other languages
English (en)
Inventor
E.努尔维塔地
S.J.韦伯
R.P.古塔拉
A.R.达苏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN110968543A publication Critical patent/CN110968543A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/21Pc I-O input output
    • G05B2219/21109Field programmable gate array, fpga as I-O module

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Neurology (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本公开的发明名称是“存储器中计算系统和方法”。一种集成电路装置可包含第一集成电路管芯上的可编程逻辑电路系统和第二管芯上包含存储器中计算电路系统的存储器。可编程逻辑电路系统可通过对数据的第一集合进行操作的电路设计而被编程。存储器的存储器中计算电路系统可使用来自可编程逻辑电路系统的数据的第一集合和存储在存储器中的数据的第二集合来执行算术运算。

Description

存储器中计算系统和方法
技术领域
本公开涉及用于在由单独集成电路管芯可访问的第一集成电路管芯的存储器中执行算术计算的电路系统(circuitry)。
背景技术
该部分旨在向读者介绍可与下面描述的和/或要求权利的本公开的各个方面有关的技术(art)的各个方面。相信该讨论有助于向读者提供背景信息以促进更好地理解本公开的各个方面。因此,可理解,这些陈述要以这种观点(in this light)被解读,而不是作为现有技术的承认。
诸如计算机、便携式装置、网络路由器、数据中心、因特网连接的器具(appliance)以及更多装置的现代电子器件倾向于包含至少一个集成电路装置。集成电路装置采用多种形式,包含处理器、存储器装置和可编程装置(仅举出少许示例)。现场可编程门阵列(FPGA)是利用集成电路的一种类型的可编程装置。可编程装置可包含在制造之后可被编程(例如,被配置)的逻辑,以基于可编程装置内可能的各种设计来提供各种各样的功能性。因此,可编程装置含有可编程逻辑(例如,逻辑块),所述可编程逻辑可被配置和重新配置成根据配置的设计在装置上执行各种功能。
可编程逻辑装置的高度灵活性使它们非常适合于加速许多计算任务。因此,可编程逻辑装置正越来越多地用作用于机器学习、视频处理、语音识别、图像识别和许多其它高度专业化任务(特别是在处理器上运行的软件中将太慢或效率太低的那些任务)的加速器。例如,可编程逻辑装置可被编程为用于人工智能(AI)技术的加速器,所述人工智能(AI)技术可涉及机器学习或相关的高强度计算。加速器可使用可编程逻辑装置上的计算单元来执行演算(calculation)。同时,计算中使用的某些数据(诸如用于神经网络节点的权重矩阵)可被存储在芯片外的存储器中。为了使用加速器执行演算,存储在存储器中的数据首先可从存储器被传输到加速器。因此,随着片外存储的数据的量增大,带宽和延迟(latency)约束可能越来越多地影响加速器的操作。
附图说明
在阅读以下详细描述时并且在参考附图时,可更好地理解本公开的各个方面,在附图中:
图1是根据一实施例的通过电路设计来编程的可编程逻辑装置的块图;
图2是根据一实施例的包含可编程逻辑装置的封装的块图,在所述可编程逻辑装置中组构管芯(fabric die)与基管芯(base die)垂直堆叠;
图3是根据一实施例的可编程逻辑装置的示例逻辑布置的块图;
图4是根据一实施例的图示可编程逻辑装置的含有可编程逻辑组构的组构管芯和可编程逻辑装置的主要含有非组构电路系统的基管芯的块图,所述非组构电路系统操作可编程逻辑组构并且可用于执行存储器中计算(compute-in-memory)操作;
图5是根据一实施例的具有扇区对齐(sector-aligned)存储器的基管芯的示例拓扑的块图,该扇区对齐存储器可被用于执行存储器中计算操作;
图6是根据一实施例的基管芯的扇区对齐存储器的示意性块图,所述基管芯可被并行堆叠到可编程逻辑装置的组构管芯,以支持对于组构管芯的对应扇区的快速配置、缓存和/或计算;
图7是根据一实施例的与基管芯上的存储器通信以在基管芯上执行存储器中计算算术计算的组构管芯的块图;
图8是根据一实施例的图示使用与基管芯上的存储器扇区集成的计算单元所执行的存储器中计算算术计算的块图;
图9A是根据一实施例的用于将来自组构管芯的输入传递到基管芯的计算单元的分散(scatter)操作的块图;
图9B是根据一实施例的用于将来自组构管芯的多个输入传递到基管芯的计算单元的多个分散操作的块图;
图9C是根据一实施例的用于将在基管芯的计算单元上执行的存储器中计算的计算的结果传递到组构管芯的收集(gather)操作的块图;
图9D是根据一实施例的用于将在基管芯的计算单元上执行的存储器中计算的计算的结果传递到组构管芯的多个收集操作的块图;
图9E是根据一实施例的使用基管芯的计算单元所执行的顺序的存储器中计算操作的块图;
图10是根据一实施例的可用于张量计算的基管芯的存储器中计算电路系统的块图;
图11A是根据一实施例的可用于人工智能(AI)矩阵乘法运算(matrix multiplicationoperation)的基管芯上的存储器中计算电路系统的配置的块图;
图11B是根据一实施例的可用于人工智能(AI)卷积运算(convolutional operation)的基管芯上的存储器中计算电路系统的配置的块图;
图12是根据一实施例的用于使用用于算术计算的存储器中计算电路系统来执行算术运算(arithmetic operation)的过程流程图;以及
图13是根据一实施例的可使用可编程逻辑装置和存储器中计算电路系统来快速执行加速器任务的数据处理系统的块图。
具体实施方式
以下将描述一个或多个具体实施例。为了(in an effort to)提供这些实施例的简明描述,并未在说明书中描述实际实现(implementation)的所有特征。可领会,在任何此类实际实现的开发中,如在任何工程或设计项目中,必须做出大量实现特定的决策以达到开发人员的具体目标,诸如对于系统相关的和业务相关的约束的遵守,这可能从一个实现到另一个实现而改变。此外,可领会,此类开发工作可能是复杂且耗时的,但是对于受益于本公开的那些普通技术人员来说仍然是设计、制作和制造的常规任务。
当介绍本公开的各种实施例的元素时,冠词“一(a)”,“一(an)”和“该(the)”旨在表示存在元素的一个或多个。术语“包括”、“包含”和“具有”旨在是包含性的,并且意味着可能存在除所列元素之外的附加元素。另外,应理解,对本公开的“一个实施例”或“一实施例”的引用并非旨在被解释为排除也结合了所记载特征的附加实施例的存在。另外,短语A“基于”B旨在意味着A至少部分地基于B。此外,除非另有明确说明,否则术语“或”旨在是包含性的(例如,逻辑OR)而不是排他性的(例如,逻辑XOR)。换句话说,短语A“或”B旨在意味着A、B或A和B两者。
可编程逻辑装置(例如,FPGA)的高度灵活性使它们非常适合于加速许多计算任务。可涉及可编程逻辑装置的一个加速器功能是人工智能(AI)。实际上,AI算法在不断变化并且可编程逻辑装置可很容易地通过不同的电路设计被重新配置以支持新的AI算法。AI算法可执行诸如矩阵乘法、卷积运算以及诸如此类的算术计算。虽然本公开将描述与人工智能(AI)或机器学习(ML)相关的加速器功能,但是应理解,可使用任何其它合适形式的加速。
由于用来加速某些任务(例如,实行AI算法)的算术计算可使用大量的数据,因此所述数据可能被存储在片外存储器装置上。然而,可能存在将数据传输到片外存储器装置和从片外存储器装置传输数据的带宽和/或延迟约束。这些约束可使用位于片外存储器中的存储器中计算电路系统被减轻。实际上,可在其它情况下(otherwise)在可编程逻辑装置的可编程逻辑组构(例如,诸如FPGA电路系统的可编程逻辑电路系统)中发生的许多算术计算可替代地发生在片外存储器中的存储器中计算电路系统中。
虑及上述内容(with the foregoing in mind),图1图示了系统10的块图,该系统10可在可与单独的基管芯进行通信以执行存储器中计算算术计算的管芯上采用可编程逻辑装置12。使用系统10,设计者可在诸如可重新配置的可编程逻辑装置12(诸如现场可编程门阵列(FPGA))的集成电路上实现电路设计功能性。设计者可使用诸如由加利福尼亚州圣克拉拉的英特尔公司所作的Intel® Quartus®(Intel® Quartus® by IntelCorporation of Santa Clara, California)的版本的设计软件14来实现要被编程到可编程逻辑装置12上的电路设计。设计软件14可使用编译器16来生成由比特流18定义的低级别(low-level)电路设计,比特流18有时被称为程序对象文件和/或配置程序,所述程序对象文件和/或配置程序对可编程逻辑装置12进行编程。因此,编译器16可向可编程逻辑装置12提供代表电路设计的机器可读指令。例如,可编程逻辑装置12可接收描述应被存储在可编程逻辑装置12中的硬件实现的一个或多个配置程序(比特流)18。配置程序(例如,比特流)18可作为配置程序20被编程到可编程逻辑装置12中。在一些情况中,配置程序20可表示用来执行机器学习、视频处理、语音识别、图像识别、或其它高度专业化任务的加速器功能。
为了实行本公开的系统和方法,可编程逻辑装置12可包含与基管芯24通信的组构管芯22。基管芯24可执行基管芯24的存储器中的存储器中计算算术计算,而组构管芯22可被用于一般目的。例如,可通过与基管芯24中的存储器中计算电路系统协调的加速器功能拓扑(accelerator function topology)来配置组构管芯22。这样,以及在一个实施例中,可编程逻辑装置12可以是堆叠在基管芯24上的组构管芯22,创建3D堆叠以执行存储器中计算算术计算。然而,在其它示例中,基管芯24和组构管芯22可并排(side-by-side)并且经由以2.5D形式的内插器或桥(例如,嵌入式多管芯互连桥(EMIB))连接到彼此。考虑到(allowfor)高效和快速的数据密集的计算,存储器中计算架构可允许计算单元和用于计算的数据被存储在相同的位置中(在基管芯24存储器中)。
图2中示出了可编程逻辑装置12的一个示例,但是可使用任何合适的可编程逻辑装置。在图2的示例中,可编程逻辑装置12包含经由微凸块(microbump)26连接到彼此的组构管芯22和基管芯24。尽管组构管芯22和基管芯24在图2中以一对一的关系出现,但是其它关系可被使用。例如,单个基管芯24可附连到若干组构管芯22,或者若干基管芯24可附连到单个组构管芯22,或者若干基管芯24可附连到若干组构管芯22(例如,以沿着x-方向和/或y-方向交错的型式(pattern))。外围电路系统28可被附连到基管芯24、嵌入在基管芯24内、和/或部署在基管芯24的顶部上,并且散热器30可被用来减少可编程逻辑装置12上热量的累加。散热器30可如图所示出现在封装的上面、和/或出现在封装的下面(例如,作为双面的散热片(heat sink))。基管芯24可经由C4凸块34附连到封装衬底32。在图2的示例中,两对组构管芯22和基管芯24被示出为经由硅桥36(例如,嵌入式多管芯互连桥(EMIB))和硅桥接口39处的微凸块38通信地连接到彼此。
尽管微凸块26和微凸块38被描述为在组构管芯22和基管芯24之间或在边缘装置(诸如硅桥36和硅桥接口39)之间被采用,但是应注意,微凸块可在可编程逻辑装置12的组件之间的任何合适位置被采用。例如,微凸块可被结合在组构管芯22和基管芯24之间的任何合适位置(例如,中间、边缘、对角线)中。以相同的方式,微凸块可按任何合适的型式或无定形形状被结合以促进本文中所描述的各种组件之间的互连性。
组合起来,组构管芯22和基管芯24可作为诸如现场可编程门阵列(FPGA)的可编程逻辑装置进行操作。例如,组构管芯22和基管芯24可作为图3中所示的FPGA 40组合地进行操作。应理解,图3中所示的FPGA 40意图表示当组构管芯22和基管芯24两者组合地进行操作时可编程逻辑装置的逻辑布置和/或电路系统类型。换句话说,图3中所示的FPGA 40的电路系统中的一些可在组构管芯22中被找到以及图3中所示的FPGA 40的电路系统中的一些可在基管芯24中被找到。另外,为了该示例的目的,FPGA 40被称为FPGA,但是应理解,该装置可以是任何合适类型的可编程逻辑装置(例如,专用集成电路和/或专用标准产品)。
在图3的示例中,FPGA 40可包含用于驱动信号离开(off of)FPGA 40并且用于从其它装置接收信号的收发器电路系统(高速串行接口(HSSI))44。收发器电路系统(HSSI)44可以是组构管芯22、基管芯24或完全单独管芯的部分。互连资源46可用于将诸如时钟或数据信号的信号路由通过FPGA 40。图3的FPGA 40被示出成被扇区化,意味着可编程逻辑资源可通过多个离散可编程逻辑扇区48(例如,区域、部分)被分布。每个可编程逻辑扇区48可包含多个可编程逻辑元件50(本文中也称为FPGA组构50),所述可编程逻辑元件50具有由配置存储器52(例如,配置随机存取存储器(CRAM))定义的操作。可编程逻辑元件50可包含组合的或时序的逻辑电路系统。例如,可编程逻辑元件50可包含查找表、寄存器、复用器、路由导线(routing wire)等等。设计者可对可编程逻辑元件50进行编程以执行各种期望的功能。电源54可向配电网络(PDN)56提供电流和电压的源,所述配电网络(PDN)56将电功率分配给FPGA 40的各个组件。操作FPGA 40的电路系统使得功率从配电网络56中被提取。
在FPGA 40上可存在任何合适数量的可编程逻辑扇区48。实际上,虽然这里示出了29个可编程逻辑扇区48,但是应领会,更多或更少的可编程逻辑扇区48可出现在实际实现中(例如,在某些情况中,可存在仅一个扇区,而在其它情况中,可存在大约50、100或1000个扇区或更多扇区)。每个可编程逻辑扇区48可包含控制可编程逻辑扇区48的操作的扇区控制器(SC)58。每个扇区控制器58可与装置控制器(DC)60通信。每个扇区控制器58可接受来自装置控制器60的数据和命令并且可基于来自装置控制器60的控制信号从其配置存储器52中读取数据并将数据写入到其配置存储器52中。除了这些操作之外,还可用许多附加能力来增强(augment)扇区控制器58和/或装置控制器60。此类能力可包含协调本地组构中存储器(例如,用于数据存储的CRAM或本地组构存储器)之间的存储器事务、与那个特定可编程逻辑扇区48相关联的扇区对齐存储器之间的事务、解密配置数据(比特流)18、以及对读取和写入进行本地排序以实现配置存储器52上的错误检测和校正、以及对测试控制信号进行排序以实现各种测试模式(mode)。
扇区控制器58和装置控制器60可被实现为状态机(state machine)和/或处理器。例如,扇区控制器58或装置控制器60的每个操作可被实现为含有控制程序的存储器中的单独例程。该控制程序存储器可被固定在只读存储器(ROM)中或存储在诸如随机存取存储器(RAM)的可写存储器中。ROM可具有比将用来存储每个例程的仅一个副本的大小(size)更大的大小。这可允许每个例程具有多个变体,所述多个变体取决于本地控制器可被放入的“模式”。当控制程序存储器被实现为随机存取存储器(RAM)时,RAM可通过新例程被写入以实现到可编程逻辑扇区48中的新操作和功能性。这可按高效且容易理解的方式提供可用的可扩展性。这可以是有用的,因为新命令能以装置控制器60和扇区控制器58之间仅少量的通信为代价而在扇区内引起大量本地活动。
因此,每个扇区控制器58可与装置控制器60通信,装置控制器60可协调扇区控制器58的操作并输送从FPGA装置40外部发起的命令。为了支持该通信,互连资源46可充当装置控制器60和每个扇区控制器58之间的网络。互连资源可支持装置控制器60和每个扇区控制器58之间的各种各样的信号。在一个示例中,这些信号可作为通信分组被传送。
可对FPGA 40进行电子编程。通过电子编程布置,可编程元件50可包含一个或多个逻辑元件(导线、门、寄存器等)。例如,在编程期间,使用引脚(pin)和输入/输出电路系统将配置数据加载到配置存储器52中。在一个示例中,配置存储器52可作为配置随机存取存储器(CRAM)单元被实现。本文中描述的基于RAM技术的配置存储器52的使用旨在仅作为一个示例。此外,配置存储器52可被分布(例如,作为RAM单元)遍布于FPGA 40的各个可编程逻辑扇区48。配置存储器52可提供控制互连资源46的可编程组件或相关联可编程逻辑元件50的状态的对应静态控制输出信号。配置存储器52的输出信号可配置、可被应用于控制互连资源46的可编程组件或可编程逻辑元件50的状态的金属氧化物半导体(MOS)晶体管的栅极。
如上文所述,图3中所示的FPGA 40的逻辑布置可由组构管芯22和基管芯24组合来产生。组构管芯22和基管芯24的电路系统可按任何合适的方式被划分。在图4中以块图形式所示的一个示例中,组构管芯22主要含有可编程逻辑组构资源,诸如可编程逻辑元件50和配置存储器52。在某些情况中,这也可能需要某个组构控制电路系统,诸如扇区控制器(SC)58或装置控制器(DC)60。基管芯24可包含用来操作可编程逻辑元件50和配置存储器52的支持电路系统。此处示出,基管芯24包含用来支持组构管芯22的配置存储器52和可编程逻辑元件50的两个对应扇区的扇区1支持电路系统70A和扇区2支持电路系统70B。基管芯24还可包含用于组构管芯22的其它扇区的支持电路系统。
因此,虽然组构管芯22可主要包含诸如可编程逻辑元件50和配置存储器52的可编程逻辑组构资源,基管芯24除其它东西外还可包含装置控制器(DC)60、扇区控制器(SC)58、片上网络(NOC)、片上配置网络(CNOC)、数据路由电路系统、用来存储和/或缓存配置程序(比特流)或数据的扇区对齐存储器、用来对可编程逻辑组构进行编程的存储器控制器、用于可编程逻辑组构的输入/输出(I/O)接口或模块、外部存储器接口(例如,用于高带宽存储器(HBM)装置)、嵌入式处理器(例如,由加利福尼亚州圣克拉拉的英特尔公司所作的嵌入式Intel® Xeon®处理器)或用来连接到处理器的接口(例如,到由加利福尼亚州圣克拉拉的英特尔公司所作的Intel® Xeon®处理器的接口)、电压控制电路系统、热监测电路系统、去耦电容器、功率钳(power clamp)和/或静电放电(ESD)电路系统(仅举出可在基管芯24上存在的少许元件)。如所示出的,以及在一些实施例中,基管芯24还可包含扇区内的存储器中计算电路系统71(例如,计算电路系统单元),所述存储器中计算电路系统71可使用存储在扇区对齐存储器中的数据来执行用于加速器的算术计算,诸如用于可在AI技术中使用的机器学习的计算。为了考虑到存储器中计算的计算,基管芯24可包含存储器(例如,扇区对齐存储器),并且存储器中计算电路系统71可在存储器中被集成。应理解,可以是基管芯24的组构支持电路系统的部分的这些元件中的一些可附加地或备选地是组构管芯22的一部分。例如,装置控制器(DC)60和/或扇区控制器(SC)58可以是组构管芯22的部分。
虽然图4表示其中组构管芯22主要含有可编程逻辑组构、而大多数其它组件位于基管芯24中的示例,但是组构管芯22可含有所述其它组件中的一些组件以支持可编程逻辑组构。因此,在一些实施例中,组构管芯22或基管芯24可包含以下元件中的一个或多个:装置控制器(DC)60、扇区控制器(SC)58、片上网络(NOC)、数据路由电路系统、用来存储和/或缓存配置程序(比特流)或数据的扇区对齐存储器、用来对可编程逻辑组构进行编程的存储器控制器、用于可编程逻辑组构的输入/输出(I/O)接口或模块、外部存储器接口(例如,用于高带宽存储器(HBM)装置)、嵌入式处理器(例如,由加利福尼亚州圣克拉拉的英特尔公司所作的嵌入式Intel® Xeon®处理器)或用来连接到处理器的接口(例如,到由加利福尼亚州圣克拉拉的英特尔公司所作的Intel® Xeon®处理器的接口)、电压控制电路系统、热监测电路系统、去耦电容器、功率钳和/或静电放电(ESD)电路系统、以及其它元件。
在图5中示出了组构管芯22和基管芯24的一个示例物理布置。如图示的,组构管芯22被示出含有组构扇区80的阵列,所述组构扇区80包含组构资源82(例如,由CRAM编程的可编程元件和/或某个组构控制电路系统,诸如扇区控制器(SC)58或装置控制器(DC)60)和接口电路系统84。接口电路系统84可包含数据路由和/或计时(clocking)资源,或者可包含到基管芯24上的数据路由和/或计时资源的接口。因此,接口电路系统84可连接于图2的微凸块(ubump)接口以连接到基管芯24。
如图6中所示,组构管芯22和基管芯24可垂直对齐或堆叠。通过以基管芯24中结合的NOC 100来垂直对齐组构管芯22和基管芯24,位于基管芯24中的存储器可对于组构管芯22的组构扇区80是并行可访问的。图6示出了其中扇区对齐存储器92与存储器中计算电路系统71集成的示例。如下面将讨论的,存储器中计算电路系统71可表示用来执行存储器中计算操作的电路系统。扇区对齐存储器92可对于组构管芯22的相应组构扇区80是直接可访问的,并且可含有用户数据(由编程到基管芯24的可编程逻辑组构中的电路设计生成或由该电路设计可访问)或配置数据。
在本公开中,“直接可访问的”是指与特定组构扇区80相关联的扇区对齐存储器92的区域与该特定组构扇区80之间的连接。在一些实施例中,与特定组构扇区80相关联的扇区对齐存储器92的每个相应区域可对于该特定组构扇区80是直接可访问的,从而为每个组构扇区80提供对扇区对齐存储器92的该区域的直接访问。例如,可存在扇区对齐存储器92的N个区域,所述N个区域能够是由N个对应的组构扇区80同时(例如,并行)可访问的。在一些情况中,扇区对齐存储器92可对于多于一个组构扇区80是可访问的,或者扇区对齐存储器92的多个扇区可对于单个组构扇区80是可访问的。因此,在某些情况中,扇区对齐存储器92的相同区域可对于多个组构扇区80是直接可访问的,而在其它情况中,扇区对齐存储器92的区域可仅对于单个组构扇区80是直接可访问的。在图6的示例中,组构扇区80可访问扇区对齐存储器92的具体区域。扇区对齐存储器92在图6中被示出为垂直堆叠的存储器。这可允许大量存储器位于基管芯24内。然而,在一些实施例中,扇区对齐存储器92可占据基管芯24的单个平面。如上面提及的,为了促进扇区对齐存储器92的使用,嵌入式NOC 100或另一互连可能够实现基管芯24的扇区对齐存储器92的存储器组件与组构管芯22的扇区48或其它组件(例如,CRAM)之间的通信。
如上面提及的,可编程逻辑装置12可包含由组构管芯22中的配置存储器52控制的可编程逻辑元件50。通过对配置存储器52进行编程(在称为“配置”的过程中),可将不同的电路设计编程到可编程逻辑装置12中。电路设计定义如在图7中所示的示例中的可涉及大量的数据的应用122(例如,诸如人工智能(AI)功能的加速器功能)。在这种情况中,许多数据可驻留在基管芯24(其可被理解为从组构管芯22来看是片外的)中的片上存储器126(例如,其可表示扇区对齐存储器92的存储器)中和/或位于其它地方的片外存储器127中。在图7的示例中,片上存储器126存储计算数据131,所述计算数据131可由存储器中计算电路系统71用在计算中以实行应用122的请求。应用122可经由互连132与片上存储器126通信,所述互连132可表示图2的硅桥36、微凸块、3D链接(link)或诸如此类。
计算数据131可表示由应用122使用的任何合适的数据。例如,当应用122表示诸如人工神经网络的人工智能(AI)功能时,计算数据131除了其它值之外还可表示人工智能(AI)预测因子(predictor)、权重、或预测(forecast)。通常,人工神经网络是直接在生物神经网络上建模的统计模型。它们能够并行地对输入和输出之间的非线性关系进行建模和处理。相关的神经网络算法是更广的机器学习领域的部分并且可在许多AI应用中被使用。神经网络可被示为可按层组织的神经元的网络。预测因子(或输入,“I”)形成神经元的底层以及预测(或输出,“O”)形成神经元的顶层。人工神经网络可含有沿着神经元之间的路径的自适应权重“W”,所述自适应权重“W”能够由从观察的数据“学习”的学习算法来调整,其中可改变自适应权重“W”以改善模型。通过输入的线性组合来获得输出。还可存在含有隐藏神经元的中间层。最简单的神经网络可不含有隐藏层并且相当于线性回归。输入I、输出O和权重W可表示可存储在片上存储器126中的计算数据131中的一些。在一个示例中,权重W可被存储为片上存储器126上的计算数据131,以及输入I可经由互连132从应用122被传送。存储器中计算电路系统71可从先前存储的权重W和新接收的输入I来计算输出O,并且输出O可经由互连132被传送回到应用122。
由于存储器中计算电路系统71和片上存储器126两者都在相同管芯上,因此对于要执行的算术计算,计算数据131不必在管芯之间移动。相反地,存储器中计算电路系统71使用存储在相同管芯上的计算数据131来执行计算,并且然后使用互连132将结果传递到组构管芯22。
图8图示了一示例,其中基管芯24具有按扇区布置的并且与用来执行存储器中计算算术计算的存储器中计算电路系统71集成的存储器。如所描绘的,片上存储器126可包含划分成多个存储器扇区136的存储体(memory bank),所述存储器扇区136可包含诸如扇区对齐存储器92的随机存取存储器(RAM)的专用块。扇区对齐存储器92中的一些可与存储器中计算电路系统71集成。与扇区对齐存储器92相关联的存储器中计算电路系统71可具有对应的控制器138(例如,状态机、基于指令集架构(ISA)的处理器、精简指令集计算机(RISC)处理器、或诸如此类)。控制器138可用来在扇区136和管芯22、24之间移动计算数据131。数据可被控制并且可跨各种多个存储器扇区被移动(使用互连(未示出))。数据的移动可基于例如专用演算(诸如,AI特定的算术运算)而发生。例如,控制器138可使用多个集成的扇区对齐存储器92单元和存储器中计算电路系统71来控制存储器中计算操作的序列。以这种方式,组构管芯22可将专用命令卸载到基管芯24中的存储器中计算电路系统71。
为了图示可使用集成的扇区对齐存储器92和存储器中计算电路系统71架构来执行的一些不同专用存储器中计算演算,图9A、9B、9C、9D和9E描绘了可支持计算的各种操作(诸如收集和分散操作)序列。简而言之,收集和分散操作是两个数据传输操作,通过从给定位置读取(收集)或写入(分散)到给定位置来传输多个数据项。
如图9A和图9B中所示,应用122(例如,可编程逻辑资源)可并发地(concurrently)将数据写入(分散)到多个存储器中计算电路系统71。分散型式可用来支持用于将专用算术计算卸载到基管芯24的数据通信(例如,命令)。在图9A中,应用122可与基管芯24进行接口,以将特定数据广播(broadcast)到基管芯24上的存储器中计算电路系统71的所有或一些数量的不同实例。这可被称为分散所有(scatter-all)操作。
类似地,应用122可与基管芯24通信,以经由多个接口将特定的不同数据分散到存储器中计算电路系统71的多个实例,从而执行并行分散操作,如图9B中所示。以这种方式,存储器中计算电路系统71可并行地接收多个不同的数据。因此,扇区对齐存储器92、多个扇区136和管芯22、24之间的互连路径可允许存储器中计算电路系统71高效地从应用122接收分散的数据以执行扇区对齐存储器92中的演算。
如图9C和图9D中所描绘的,存储器中计算电路系统71的多个实例可收集(和/或简化(reduce))它们的计算的数据,并且然后将数据读取到应用122。收集型式还可被用来支持用于将专用算术计算卸载到基管芯24的数据通信。在图9C中,存储器中计算电路系统71的实例的所有或一些子集可同时或顺序地将计算的数据收集(和/或简化)到应用122。这可被称为收集所有(gather-all)操作。
类似地,存储器中计算电路系统71可收集计算的数据以经由多个接口将其传递到应用122,从而执行并行收集操作,如图9D中所示。多个接口可包含多个扇区136到应用122之间的互连路径。以这种方式,应用122可并行地(例如,至少部分同时地)从扇区136收集多组计算的数据,从而执行并行收集操作。
如图9E中所示,操作的序列可用来支持专用存储器中计算的计算。可指示控制器138使用存储器中计算电路系统71执行操作的序列。具体地,对于一些AI应用,并且如图7中所讨论的,存储器中计算的计算可包含确定矩阵和向量的乘积。因此,对于每个存储器中计算电路系统71的控制器138可用来设置要计算的操作的序列,并使用存储器中计算电路系统71和扇区136之间的互连路径来确定乘积。例如,控制器138可设置由存储器中计算电路系统71执行的计算的序列以将由应用122发送的输入向量与存储在与存储器中计算电路系统71的不同实例相关联的存储器的不同区域中的矩阵行的集合相乘,以便确定向量和矩阵的乘积。取决于用于应用的算术计算,扇区对齐存储器92可附加地或备选地存储过滤器(filter)或过滤器系数以执行可在计算中使用的过滤。
为了进一步图示可用于专用计算的各种顺序的操作,图10描绘了使用存储器中计算电路系统71来执行可用于张量运算(tensor operation)的存储器中计算操作。张量是可用来演算算术运算的数据结构(诸如矩阵和向量)。特别地,向量和矩阵的点积(矩阵乘法)可用于深度学习或训练算法。因此,依赖于张量运算的应用(诸如训练算法(例如,机器学习)的AI应用)可受益于所描绘的存储器中计算架构。
在图10中,基管芯24可含有至少一个存储体139(存储体0)且至多N个(例如,多于一个,N存储体145(存储体N))存储体。存储体139……145可被进一步划分成存储器的扇区。每个存储体139……145或存储器的细分(例如,扇区对齐存储器92)可具有对应的控制器138。如所描绘的,扇区对齐存储器92可包含计算数据131,所述计算数据131可包含用来计算向量和矩阵的点积的数据。例如,向量可由组构管芯22上的应用122来提供,而矩阵可被存储在扇区对齐存储器92中并因此由扇区对齐存储器92来提供。在其它实现中,向量可由来自不同的存储体或扇区的不同扇区对齐存储器92来提供。
如先前所讨论的,控制器138可控制存储器中计算电路系统71以执行算术计算。在该示例中,存储器中计算电路系统71被操作作为点积引擎(dot product engine)(DPE)142。点积引擎142可计算存储在扇区对齐存储器91中和/或由其它存储体/扇区或应用122接收的向量和矩阵的点积。如所示出的,点积引擎142还可将来自应用122的输入数据146(Din)接收到输入写入器143。输入写入器143可在广播或并行的架构中将数据分散或写入到点积引擎142,如参考图11A和11B所描述的。
在数据由点积引擎142接收和/或点积已经被计算之后,点积引擎142可将计算的数据发送到扇区对齐存储器92以存储数据用于未来的使用或附加的计算。附加地或备选地,点积引擎142可将计算的数据发送到累加器148。累加器148可将来自点积引擎142的计算的数据进行累加并将数据发送到输出读取器141。输出读取器141可使用简化器(reducer)149在简化或并行的架构中将数据收集或读取到应用122,如图11A和11B中所描述的。简化器149可将来自点积引擎142的累加的部分计算的数据组合成最终数据输出147(Dout)。累加器148还可将累加的计算的数据发送到输入写入器143,所述输入写入器143然后可基于用来演算张量计算的操作的序列将累加的计算的数据写入到存储体N 145、扇区对齐存储器92、和/或点积引擎142。
为了图示可使用上面描述的存储器中计算架构所执行的点积操作的类型,图11A示出了用来执行矩阵运算(matrix operation)的计算的序列以及图11B示出了用来执行卷积运算的计算的序列。在图11A中,可同时将多个向量从应用122发送到基管芯24。如所示出的,基管芯24存储器可被分组为诸如第一扇区150(扇区0)和第二扇区152(扇区1)的多个扇区136。应用122可将第一向量输入154(Vi0)发送到第一扇区0对齐存储器158和第二扇区0对齐存储器159。应用还可将第二向量输入(Vi1)发送到第一扇区1对齐存储器160和第二扇区1对齐存储器161。扇区0对齐存储器158、159和扇区1对齐存储器160、161可已经存储诸如第一矩阵162(M0)和第二矩阵164(M1)的矩阵数据。
因此,对应于扇区0对齐存储器158、159的点积引擎142可计算第一向量输入154和第一矩阵162的乘积以及第一向量输入154和第二矩阵164的乘积以确定M0,0和M0,1。这些部分计算可被累加器144收集或累加,以及使用上面描述的技术被简化,并且被读取到应用122以便被存储为部分和:第一向量输出166 Vo0。类似地,对应于扇区1对齐存储器160、161的点积引擎142可计算第二向量输入156和第一矩阵162的乘积以及第二向量输入156和第二矩阵164的乘积以确定M1,0和M1,1。由点积引擎142执行的这些部分计算可被累加器144收集或累加,并且然后被简化到最终值(例如,部分向量输入或输出),并且被读取到应用122以便被存储为部分和:第二向量输出168 Vo1。可将第一和第二向量输出Vo0和Vo1相加以确定向量输出Vo。
如图11B中所示,图11A的相同存储器中计算架构还可用来执行诸如卷积运算的其它张量运算。可用与图11A中描述的顺序过程类似的方式来执行卷积运算(例如,对应于扇区对齐存储器的点积引擎142,所述点积引擎142可用来确定部分张量积)。如所示出的,输入特征图(input feature map)(IFM)170可将输入从应用122发送到点积引擎142。扇区对齐存储器172、174、176、178可存储可由点积引擎142用于卷积计算的函数f1和f2。计算可使用上面描述的技术被累加器144收集和简化,并且被读取到应用122以便被存储为部分特征图,诸如第一输出特征图180(OFM1)和第二输出特征图182(OFM2。应用122可使用部分特征图180、182来确定对于卷积运算的整体输出特征图。
可由用户或应用122指示控制器138来执行跨存储器扇区的不同部分操作,诸如用于图11A的矩阵/向量计算或图11B的卷积计算的操作。因此,存储器中计算架构可用来执行各种复杂的数学运算(mathematical operation),诸如用于AI应用的那些数学运算。计算的数据可被发送到应用122,应用122然后可执行特定的处理操作(例如,AI操作),诸如激活函数(activation function)、数学变换、数据格式转换、预处理、后处理、输入、和/或输出网络、或诸如此类。
虑及前述内容并且为了促进说明,图12中的过程流程图200图示了存储器中计算电路系统71执行存储器中计算算术计算。可通过电路设计来配置(块202)组构管芯22。例如,可用定义加速器功能(例如,人工神经网络)的应用来配置组构管芯22。另外,可初始化(块204)基管芯24上的存储器中计算电路系统71,所述初始化可包含将与加速器功能相关联的计算数据(例如,权重、矩阵、或诸如此类)存储在基管芯24上的存储器中。存储器中计算电路系统71可对来自组构管芯22上的电路设计的数据进行操作(块206),所述操作可包含执行可用来确定总和或乘积的部分和或乘积。例如,不同存储器扇区中的存储器中计算电路系统71的多个实例可为矩阵和向量运算(vector operation)提供部分和,如图11A中所描述的。附加地或备选地,存储器中计算电路系统71可取决于算术计算的类型在特定型式(例如,收集或分散)中操作和输送数据,如图11A-11B中所描述的。结果可被发送以用于存储到扇区对齐存储器92和/或可被发送到组构管芯22。
可编程逻辑装置12可以是数据处理系统,或者可以是数据处理系统的组件。例如,图13中示出,可编程逻辑装置12可以是数据处理系统220的组件。数据处理系统220包含主机处理器222、存储器和/或存储电路系统224、以及网络接口226。数据处理系统220可包含更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(ASIC))。主机处理器222可包含任何合适的处理器,诸如可管理对于数据处理系统220的数据处理请求(例如,以便执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排序、生物信息学、网络安全型式标识、空间导航、或诸如此类)的Intel® Xeon®处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器)。存储器和/或存储电路系统224可包含随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪速存储器、或诸如此类。存储器和/或存储电路系统224可被认为是对于可编程逻辑装置12的外部存储器并且可保存要由数据处理系统220处理的数据。在一些情况中,存储器和/或存储电路系统224还可存储用于对可编程逻辑装置12进行编程的配置程序(比特流)。网络接口226可允许数据处理系统220与其它电子装置进行通信。数据处理系统220可包含若干不同的封装或者可被包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统220可以是处理各种不同请求的数据中心的部分。例如,数据处理系统220可经由网络接口226接收数据处理请求以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排序、生物信息学、网络安全型式标识、空间导航、或某个其它专业化的任务。主机处理器222可使得可编程逻辑装置12的可编程逻辑组构通过与所请求任务相关的特定加速器而被编程。例如,主机处理器222可指示存储在存储器/存储装置224上的或缓存在可编程逻辑装置12的扇区对齐存储器中的配置数据(比特流)要被编程到可编程逻辑装置12的可编程逻辑组构中。配置数据(比特流)可表示用于与所请求的任务相关的特定加速器功能的电路设计。由于可编程逻辑组构的高密度、大量的扇区对齐存储器与可编程逻辑组构的接近性、或者本文中描述的可编程逻辑装置12的其它特征,可编程逻辑装置12可快速地协助数据处理系统220执行所请求的任务。实际上,在一个示例中,加速器可通过使用扇区对齐存储器在加速器中快速访问和处理大量的数据来协助小于几毫秒(例如,大约几微秒)的语音识别任务。
本公开提供了以下技术方案:
技术方案1.一种集成电路装置,包括:
部署在第一集成电路管芯上的可编程逻辑电路系统,其中所述可编程逻辑电路系统包括可编程逻辑电路系统的第一区域,其中可编程逻辑电路系统的所述第一区域被配置成通过对数据的第一集合进行操作的电路设计而被编程;以及
部署在第二集成电路管芯上的存储器电路系统,其中所述存储器电路系统包括存储器的第一区域和第一存储器中计算电路系统,其中所述第一存储器中计算电路系统被配置成使用来自所述可编程逻辑电路系统的数据的所述第一集合和存储在存储器的所述第一区域中的数据的第二集合来执行算术运算。
技术方案2.如技术方案1所述的集成电路装置,其中可编程逻辑电路系统的所述第一区域与存储器的所述第一区域对齐。
技术方案3.如技术方案1所述的集成电路装置,其中所述第一集成电路管芯和所述第二集成电路管芯是3D堆叠的并且通过互连而被通信地耦合。
技术方案4.如技术方案1所述的集成电路装置,其中存储器的所述第一区域包括与所述第一存储器中计算电路系统相关联的第一子区域和与第二存储器中计算电路系统相关联的第二子区域。
技术方案5.如技术方案1所述的集成电路装置,其中存储器的所述第一区域包括多个子区域和多个对应的存储器中计算电路系统单元。
技术方案6.如技术方案5所述的集成电路装置,其中数据的所述第一集合被广播到所述多个存储器中计算电路系统单元。
技术方案7.如技术方案5所述的集成电路装置,其中数据的所述第二集合从所述多个存储器中计算电路系统单元被收集。
技术方案8.如技术方案7所述的集成电路装置,其中当使用所述多个存储器中计算电路系统单元来计算张量运算时,数据的所述第二集合被简化以形成部分和。
技术方案9.如技术方案8所述的集成电路装置,其中所述部分和在矩阵和向量运算中被使用。
技术方案10.如技术方案5所述的集成电路装置,其中数据的所述第二集合被并行地从所述多个存储器中计算电路系统单元同时收集。
技术方案11.如技术方案5所述的集成电路装置,其中所述存储器中计算电路系统单元包括点积引擎和累加电路系统。
技术方案12.如技术方案4所述的集成电路装置,其中所述第一子区域包括控制所述第一存储器中计算电路系统的第一控制器以及所述第二子区域包括控制所述第二存储器中计算电路系统的第二控制器。
技术方案13.一种或多种有形的非暂态机器可读介质,所述机器可读介质包括由一个或多个处理器可执行的机器可读指令,其中所述指令包括用于执行以下操作的指令:
通过第一电路设计来配置第一管芯的可编程逻辑电路系统;以及
初始化与所述第一管芯通信的第二管芯的存储器电路系统,其中所述第二管芯的所述存储器电路系统包括存储器中计算电路系统,其中初始化所述存储器电路系统包括将与所述第一电路设计相关联的计算数据加载到所述第二管芯的所述存储器电路系统中。
技术方案14.如技术方案13所述的机器可读介质,包括用于在所述可编程逻辑电路系统上运行所述第一电路设计的指令,其中运行所述第一电路设计包括:
将输入数据从所述第一管芯传送到所述第二管芯;
使得算术运算使用所述输入数据和所述计算数据在所述第二管芯的所述存储器电路系统的所述存储器中计算电路系统上被执行以生成输出数据;以及
将所述输出数据从所述第二管芯传送到所述第一管芯。
技术方案15.如技术方案13所述的机器可读介质,其中所述算术运算包括点积运算、累加运算、矩阵运算、向量运算、卷积运算、或其组合。
技术方案16.如技术方案13所述的机器可读介质,其中:
所述第一电路设计包括过滤功能;以及
与所述第一电路设计相关联的所述计算数据包括一个或多个过滤器系数。
技术方案17.如技术方案13所述的机器可读介质,其中:
所述第一电路设计包括人工神经网络功能;以及
与所述第一电路设计相关联的所述计算数据包括一个或多个神经网络权重。
技术方案18.一种数据中心系统,包括:
集成电路,所述集成电路包括:
第一区域,所述第一区域包括能通过对数据的第一集合进行操作的电路设计被配置的可编程逻辑电路系统;以及
第二区域,所述第二区域包括存储器电路系统,其中所述存储器电路系统包括配置成使用数据的所述第一集合和存储在所述存储器电路系统中的数据的第二集合来执行算术运算的集成的存储器中计算电路系统;以及
处理器,所述处理器配置成使得所述集成电路的所述第一区域通过所述电路设计而被配置。
技术方案19.如技术方案18所述的数据中心系统,其中所述处理器被配置成通过使得数据的所述第二集合被加载到所述存储器电路系统中来初始化所述存储器电路系统。
技术方案20.如技术方案18所述的数据中心系统,其中所述第一电路设计包括人工智能(AI)应用,其中所述存储器中计算电路系统的所述算术运算的结果被配置成被发送到所述第一区域,以及其中所述第一区域上的所述第一电路设计的所述人工智能应用被配置成执行包括激活函数、变换、数据格式转换、预处理、后处理或其组合的专用过程。
本公开的方法和装置可被结合到任何合适的电路中。例如,所述方法和装置可被结合到诸如微处理器或其它集成电路的许多类型的装置中。示例性集成电路包含可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑装置(EPLD)、电可擦除可编程逻辑装置(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)和微处理器(仅举出少许示例)。
此外,尽管已经以特定顺序描述了方法操作,但是应理解,可在描述的操作之间执行其它操作,可调整描述的操作使得它们在稍微不同的时间发生,或者描述的操作可被分布在允许处理操作发生在与处理相关联的各种间隔(只要上层(overlying)操作的处理按照期望的被执行)的系统中。
本公开中阐述的实施例可容易经受各种修改和备选形式,具体实施例已经通过附图中的示例被示出并且已经在本文中被详细描述。然而,可理解的是,本公开并非旨在被限于所公开的特定形式。本公开要覆盖落入如以下所附权利要求所限定的本公开的精神和范围内的所有修改、等同(equivalent)和替代(alternative)。此外,本文中提出和要求权利的技术被引用并应用于实际性质的材料对象和具体示例,其显然改进了本技术领域,并且因此不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求含有被指定为“用于[执行][功能]……的部件”或“用于[执行][功能]……的步骤”的一个或多个元素,则旨在要根据35 U.S.C. 112(f)来解释此类元素。然而,对于含有以任何其它方式指定的元素的任何权利要求,旨在不要根据35 U.S.C. 112(f)来解释此类元素。

Claims (20)

1.一种集成电路装置,用于在所述集成电路装置的片上存储器电路系统中执行算术计算,所述集成电路装置包括:
部署在第一集成电路管芯上的可编程逻辑电路系统,其中所述可编程逻辑电路系统包括可编程逻辑电路系统的第一区域,其中可编程逻辑电路系统的所述第一区域被配置成通过对数据的第一集合进行操作的电路设计而被编程;以及
部署在第二集成电路管芯上的存储器电路系统,其中所述存储器电路系统包括存储器的第一区域和第一存储器中计算电路系统,其中所述第一存储器中计算电路系统被配置成使用来自所述可编程逻辑电路系统的数据的所述第一集合和存储在存储器的所述第一区域中的数据的第二集合来执行算术运算。
2.如权利要求1所述的集成电路装置,其中可编程逻辑电路系统的所述第一区域与存储器的所述第一区域对齐。
3.如权利要求1所述的集成电路装置,其中所述第一集成电路管芯和所述第二集成电路管芯是3D堆叠的并且通过互连而被通信地耦合。
4.如权利要求1所述的集成电路装置,其中存储器的所述第一区域包括与所述第一存储器中计算电路系统相关联的第一子区域和与第二存储器中计算电路系统相关联的第二子区域。
5.如权利要求1所述的集成电路装置,其中存储器的所述第一区域包括多个子区域和多个对应的存储器中计算电路系统单元。
6.如权利要求5所述的集成电路装置,其中数据的所述第一集合被广播到所述多个存储器中计算电路系统单元。
7.如权利要求5所述的集成电路装置,其中数据的所述第二集合从所述多个存储器中计算电路系统单元被收集。
8.如权利要求7所述的集成电路装置,其中当使用所述多个存储器中计算电路系统单元来计算张量运算时,数据的所述第二集合被简化以形成部分和。
9.如权利要求8所述的集成电路装置,其中所述部分和在矩阵和向量运算中被使用。
10.如权利要求5所述的集成电路装置,其中数据的所述第二集合被并行地从所述多个存储器中计算电路系统单元同时收集。
11.如权利要求5所述的集成电路装置,其中所述存储器中计算电路系统单元包括点积引擎和累加电路系统。
12.如权利要求1-3所述的集成电路装置,其中所述第一子区域包括控制所述第一存储器中计算电路系统的第一控制器以及所述第二子区域包括控制所述第二存储器中计算电路系统的第二控制器。
13.一种或多种有形的非暂态机器可读介质,所述机器可读介质包括由一个或多个处理器可执行以在集成电路装置的存储器电路系统中执行算术计算的机器可读指令,其中所述指令包括用于执行以下操作的指令:
通过第一电路设计来配置第一管芯的可编程逻辑电路系统;以及
初始化与所述第一管芯通信的第二管芯的存储器电路系统,其中所述第二管芯的所述存储器电路系统包括存储器中计算电路系统,其中初始化所述存储器电路系统包括将与所述第一电路设计相关联的计算数据加载到所述第二管芯的所述存储器电路系统中。
14.如权利要求13所述的机器可读介质,包括用于在所述可编程逻辑电路系统上运行所述第一电路设计的指令,其中运行所述第一电路设计包括:
将输入数据从所述第一管芯传送到所述第二管芯;
使得算术运算使用所述输入数据和所述计算数据在所述第二管芯的所述存储器电路系统的所述存储器中计算电路系统上被执行以生成输出数据;以及
将所述输出数据从所述第二管芯传送到所述第一管芯。
15.如权利要求13所述的机器可读介质,其中所述算术运算包括点积运算、累加运算、矩阵运算、向量运算、卷积运算、或其组合。
16.如权利要求13所述的机器可读介质,其中:
所述第一电路设计包括过滤功能;以及
与所述第一电路设计相关联的所述计算数据包括一个或多个过滤器系数。
17.如权利要求13-16所述的机器可读介质,其中:
所述第一电路设计包括人工神经网络功能;以及
与所述第一电路设计相关联的所述计算数据包括一个或多个神经网络权重。
18.一种数据中心系统,用于在集成电路装置的片上存储器电路系统中执行算术计算,所述数据中心系统包括:
集成电路,所述集成电路包括:
第一区域,所述第一区域包括能通过对数据的第一集合进行操作的电路设计被配置的可编程逻辑电路系统;以及
第二区域,所述第二区域包括存储器电路系统,其中所述存储器电路系统包括配置成使用数据的所述第一集合和存储在所述存储器电路系统中的数据的第二集合来执行算术运算的集成的存储器中计算电路系统;以及
处理器,所述处理器配置成使得所述集成电路的所述第一区域通过所述电路设计而被配置。
19.如权利要求18所述的数据中心系统,其中所述处理器被配置成通过使得数据的所述第二集合被加载到所述存储器电路系统中来初始化所述存储器电路系统。
20.如权利要求18所述的数据中心系统,其中所述第一电路设计包括人工智能(AI)应用,其中所述存储器中计算电路系统的所述算术运算的结果被配置成被发送到所述第一区域,以及其中所述第一区域上的所述第一电路设计的所述人工智能应用被配置成执行包括激活函数、变换、数据格式转换、预处理、后处理或其组合的专用过程。
CN201910802306.1A 2018-09-28 2019-08-28 存储器中计算系统和方法 Pending CN110968543A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/146586 2018-09-28
US16/146,586 US11625245B2 (en) 2018-09-28 2018-09-28 Compute-in-memory systems and methods

Publications (1)

Publication Number Publication Date
CN110968543A true CN110968543A (zh) 2020-04-07

Family

ID=65229559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910802306.1A Pending CN110968543A (zh) 2018-09-28 2019-08-28 存储器中计算系统和方法

Country Status (2)

Country Link
US (2) US11625245B2 (zh)
CN (1) CN110968543A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113540033A (zh) * 2020-04-13 2021-10-22 阿里巴巴集团控股有限公司 制品、集成电路及其制造方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157213B2 (en) * 2018-10-12 2021-10-26 Micron Technology, Inc. Parallel memory access and computation in memory devices
US20200117449A1 (en) * 2018-10-12 2020-04-16 Micron Technology, Inc. Accelerated Access to Computations Results Generated from Data Stored in Memory Devices
US10461076B1 (en) 2018-10-24 2019-10-29 Micron Technology, Inc. 3D stacked integrated circuits having functional blocks configured to accelerate artificial neural network (ANN) computation
US11816563B2 (en) 2019-01-17 2023-11-14 Samsung Electronics Co., Ltd. Method of enabling sparse neural networks on memresistive accelerators
US10803548B2 (en) * 2019-03-15 2020-10-13 Intel Corporation Disaggregation of SOC architecture
US11139270B2 (en) 2019-03-18 2021-10-05 Kepler Computing Inc. Artificial intelligence processor with three-dimensional stacked memory
US11836102B1 (en) 2019-03-20 2023-12-05 Kepler Computing Inc. Low latency and high bandwidth artificial intelligence processor
US11531869B1 (en) * 2019-03-28 2022-12-20 Xilinx, Inc. Neural-network pooling
US11844223B1 (en) 2019-05-31 2023-12-12 Kepler Computing Inc. Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging
US11152343B1 (en) 2019-05-31 2021-10-19 Kepler Computing, Inc. 3D integrated ultra high-bandwidth multi-stacked memory
US11562205B2 (en) * 2019-09-19 2023-01-24 Qualcomm Incorporated Parallel processing of a convolutional layer of a neural network with compute-in-memory array
KR20220157377A (ko) * 2020-02-05 2022-11-29 더 트러스티즈 오브 프린스턴 유니버시티 인메모리 컴퓨팅을 위한 확장 가능한 어레이 아키텍처
US11960438B2 (en) * 2020-09-08 2024-04-16 Rambus Inc. Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture
US11947928B2 (en) 2020-09-10 2024-04-02 Hewlett Packard Enterprise Development Lp Multi-die dot-product engine to provision large scale machine learning inference applications
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法
US11757469B2 (en) * 2021-04-01 2023-09-12 Qualcomm Incorporated Compression technique for deep neural network weights
CN115469800A (zh) * 2021-06-10 2022-12-13 三星电子株式会社 数据处理系统以及用于访问异构存储器系统的方法
US11791233B1 (en) 2021-08-06 2023-10-17 Kepler Computing Inc. Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6802026B1 (en) * 2001-05-15 2004-10-05 Xilinx, Inc. Parameterizable and reconfigurable debugger core generators
US8686475B2 (en) * 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7068072B2 (en) * 2003-06-30 2006-06-27 Xilinx, Inc. Integrated circuit with interface tile for coupling to a stacked-die second integrated circuit
US6912164B1 (en) * 2003-08-22 2005-06-28 Altera Corporation Techniques for preloading data into memory on programmable circuits
US7342310B2 (en) * 2004-05-07 2008-03-11 Avago Technologies General Ip Pte Ltd Multi-chip package with high-speed serial communications between semiconductor die
US20070112901A1 (en) * 2005-11-15 2007-05-17 Afshin Niktash Configurable digital filter
US20090063821A1 (en) * 2007-08-28 2009-03-05 Renesas Technology Corp. Processor apparatus including operation controller provided between decode stage and execute stage
US8330489B2 (en) * 2009-04-28 2012-12-11 International Business Machines Corporation Universal inter-layer interconnect for multi-layer semiconductor stacks
US9091727B1 (en) * 2012-10-16 2015-07-28 Xilinx, Inc. Configuration and testing of multiple-die integrated circuits
BR112016016808B1 (pt) * 2014-01-22 2021-02-23 Siemens Aktiengesellschaft entrada de medição digital, dispositivo de automação elétrica, e, método para processamento de valores de medição de entrada digital
KR20160041535A (ko) * 2014-10-08 2016-04-18 에스케이하이닉스 주식회사 신호를 전송하는데 있어 피크 전류를 감소시키는 반도체 장치 및 시스템
US10528613B2 (en) * 2015-11-23 2020-01-07 Advanced Micro Devices, Inc. Method and apparatus for performing a parallel search operation
KR102548591B1 (ko) * 2016-05-30 2023-06-29 삼성전자주식회사 반도체 메모리 장치 및 그것의 동작 방법
US11501131B2 (en) * 2016-09-09 2022-11-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
US10042762B2 (en) * 2016-09-14 2018-08-07 Advanced Micro Devices, Inc. Light-weight cache coherence for data processors with limited data sharing
US10198349B2 (en) * 2016-09-19 2019-02-05 Advanced Micro Devices, Inc. Programming in-memory accelerators to improve the efficiency of datacenter operations
US10374608B1 (en) * 2016-11-17 2019-08-06 X Development Llc Bridged integrated circuits
US9761300B1 (en) * 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10073733B1 (en) * 2017-09-01 2018-09-11 Purdue Research Foundation System and method for in-memory computing
US10872290B2 (en) * 2017-09-21 2020-12-22 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits
US10803379B2 (en) * 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
KR20200025200A (ko) * 2018-08-29 2020-03-10 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113540033A (zh) * 2020-04-13 2021-10-22 阿里巴巴集团控股有限公司 制品、集成电路及其制造方法

Also Published As

Publication number Publication date
US20230244485A1 (en) 2023-08-03
US11625245B2 (en) 2023-04-11
US20190042251A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
CN110968543A (zh) 存储器中计算系统和方法
US11386644B2 (en) Image preprocessing for generalized image processing
Ma et al. An automatic RTL compiler for high-throughput FPGA implementation of diverse deep convolutional neural networks
Kim et al. Neurocube: A programmable digital neuromorphic architecture with high-density 3D memory
US7772880B2 (en) Reprogrammable three dimensional intelligent system on a chip
Chen et al. Dadiannao: A machine-learning supercomputer
EP3654247A1 (en) Convolution engine for neural networks
Azizimazreah et al. Shortcut mining: Exploiting cross-layer shortcut reuse in DCNN accelerators
WO2019156746A1 (en) Systolic neural network engine capable of backpropagation
US10984500B1 (en) Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit
Tan et al. Nn-baton: Dnn workload orchestration and chiplet granularity exploration for multichip accelerators
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
JP2018116469A (ja) 演算システムおよびニューラルネットワークの演算方法
US11232360B1 (en) Lossless tiling in convolution networks—weight gradient calculation
Porrmann et al. A massively parallel architecture for self-organizing feature maps
Petrica et al. Memory-efficient dataflow inference for deep cnns on fpga
US11195080B1 (en) Lossless tiling in convolution networks—tiling configuration
US11567778B2 (en) Neural network operation reordering for parallel execution
CN104731562B (zh) 在simd处理单元中的任务执行
CN108804973A (zh) 基于深度学习的目标检测算法的硬件架构及其执行方法
Kim et al. Automated optimization for memory‐efficient high‐performance deep neural network accelerators
He et al. Physical synthesis for advanced neural network processors
US20230237014A1 (en) 3D Convolutional Neural Network (CNN) Implementation on Systolic Array-Based FPGA Overlay CNN Accelerator
CN111886605B (zh) 针对多个输入数据集的处理
US20230195836A1 (en) One-dimensional computational unit for an integrated circuit

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