CN107346231A - 基于封装内查找表的可编程处理器 - Google Patents
基于封装内查找表的可编程处理器 Download PDFInfo
- Publication number
- CN107346231A CN107346231A CN201710314728.5A CN201710314728A CN107346231A CN 107346231 A CN107346231 A CN 107346231A CN 201710314728 A CN201710314728 A CN 201710314728A CN 107346231 A CN107346231 A CN 107346231A
- Authority
- CN
- China
- Prior art keywords
- programmable
- lut
- chip
- logic
- function
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
- G06F7/4988—Multiplying; Dividing by table look-up
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L25/00—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
- H01L25/03—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes
- H01L25/04—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers
- H01L25/065—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers the devices being of a type provided for in group H01L27/00
- H01L25/0657—Stacked arrangements of devices
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L25/00—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
- H01L25/18—Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof the devices being of types provided for in two or more different subgroups of the same main group of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N
-
- 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/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- 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/1776—Structural details of configuration resources for memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4804—Associative memory or processor
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2225/00—Details relating to assemblies covered by the group H01L25/00 but not provided for in its subgroups
- H01L2225/03—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00
- H01L2225/04—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers
- H01L2225/065—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers the devices being of a type provided for in group H01L27/00
- H01L2225/06503—Stacked arrangements of devices
- H01L2225/06513—Bump or bump-like direct electrical connections between devices, e.g. flip-chip connection, solder bumps
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2225/00—Details relating to assemblies covered by the group H01L25/00 but not provided for in its subgroups
- H01L2225/03—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00
- H01L2225/04—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers
- H01L2225/065—All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers the devices being of a type provided for in group H01L27/00
- H01L2225/06503—Stacked arrangements of devices
- H01L2225/06541—Conductive via connections through the device, e.g. vertical interconnects, through silicon via [TSV]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Software Systems (AREA)
- Logic Circuits (AREA)
Abstract
为实现计算的编程,本发明提出一种基于封装内查找表的可编程处理器。它含有一逻辑芯片和一可编程存储芯片,它们位于同一封装中。可编程存储芯片含有一查找表电路(LUT),逻辑芯片含有一算术逻辑电路(ALC)。根据用户需求,LUT存储所需函数的相关数据。ALC对该函数相关数据进行算术运算。
Description
技术领域
本发明涉及集成电路领域,更确切地说,涉及处理器。
背景技术
传统处理器采用基于逻辑的计算(logic-based computation,简称为LBC),它主要通过逻辑电路(如与非门等)来计算。逻辑电路适合实现算术运算(如加法、减法和乘法),但对于非算术函数(如初等函数、特殊函数等)无能为力。非算术函数的高速高效实现面临巨大的挑战。
在传统处理器中,仅少量基本非算术函数(如基本代数函数、基本超越函数)能通过硬件直接实现,这些函数被称为内置函数(built-in functions)。内置函数一般通过算术运算和查找表的组合来实现。实现内置函数的例子很多,例如:美国专利US 5,954,787(发明人:Eun;授权日:1999年9月21日)披露了一种利用查找表实现正弦/余弦(sine/cosine)函数的方法;美国专利US 9,207,910(发明人:Azadet;授权日:2015年12月8日)披露了一种利用查找表实现幂函数的方法。
图1A具体描述了内置函数的一种实现方法。传统处理器00X通常含有逻辑电路100X和存储电路200X。逻辑电路100X含有算术逻辑单元(ALU),它用于实现算术运算。存储电路200X含有查找表电路(LUT)。为了达到足够的计算精度,需将代表内置函数的多项式展开到足够高的阶数。这时,LUT 200X存储多项式系数,ALU 100X计算相应的多项式。由于ALU100X和LUT 200X并肩排列在同一平面上(均形成在衬底00S中),这种集成是一种二维集成。
二维集成对处理器的制造工艺要求较高。存储电路200X由存储晶体管构成,逻辑电路100X由逻辑晶体管构成。熟悉本专业的人士都知道,存储晶体管和逻辑晶体管的性能指标有很大不同。比如说,存储晶体管更注重降低漏电流,而逻辑晶体管更注重增加导通电流。在同一衬底上00S的同一表面上同时形成高性能的存储晶体管和逻辑晶体管对于制造工艺来说是一种挑战。
二维集成还会限制计算密度和计算复杂度的进一步发展。计算正向更高的计算密度和更大的计算复杂度发展。计算密度是指单位芯片面积的计算能力(如每秒的浮点数运算次数),它是平行计算的一个重要指标。计算复杂度是指内置函数的种类和数量,它是科学计算的一个重要指标。由于采用二维集成,LUT 200X的存在将增加传统处理器00X的芯片面积,降低其计算密度,这对平行计算不利。同时,在传统处理器00X的设计过程中,由于ALU100X是传统处理器00X的核心部件并占用了大部分芯片面积,故LUT 200X能利用的芯片面积有限。因此,传统处理器00X仅支持少量内置函数。图1B列出英特尔公司的Itanium处理器(IA-64)能实现的所有内置超越函数(参考Harrison等所著《The Computation ofTranscendental Functions on the IA-64 Architecture》, Intel Technical Journal,Q4, 1999年)。IA-64处理器共支持7种超越函数,每种超越函数使用了相对较小的查找表(从0到24kb),并需要进行相对较多的泰勒级数(5阶到22阶)计算。
基于LBC的处理器00X有一个缺陷。由于实现不同内置函数使用的逻辑电路完全不同,处理器00X是完全定制的,不能通用。换句话说,一旦处理器00X的设计完成,它只能实现一套预先定义的内置函数。很明显,用户希望用同一硬件实现不同计算,即实现计算的编程。这可以从现场可编程门阵列(FPGA)中得到启发。FPGA能实现逻辑的编程。美国专利4,870,302(发明人:Freeman;授权日:1989年9月26日)披露了一种FPGA。它含有多个可编程逻辑单元(configurable logic element)和可编程连接(configurable interconnect)。目前,FPGA只能实现逻辑的编程,即同一硬件在设置信号控制下选择性地实现不同的逻辑。遗憾的是,FPGA尚无法实现计算的编程,即同一硬件在设置信号控制下选择性地实现不同的计算(即实现不同的函数)。
发明内容
本发明的主要目的是实现计算的编程。
本发明的另一目的是实现计算的现场编程。
本发明的另一目的是实现可重构计算。
本发明的主要目的是实现多变量函数的编程。
本发明的另一目的是提供一种能实现更高计算复杂度的可编程处理器。
本发明的另一目的是提供一种能实现更高计算密度的可编程处理器。
本发明的另一目的是提供一种计算能力更灵活、更强大的现场可编程门阵列。
为了实现这些以及别的目的,本发明提出一种基于封装内查找表(in-packageLUT,简称为IP-LUT)的可编程处理器(IP-LUT可编程处理器)。IP-LUT可编程处理器含有至少一逻辑芯片和一可编程存储芯片。其中,逻辑芯片含有至少一算术逻辑电路(arithmeticlogic circuit,简称为ALC),故逻辑芯片又被称为ALC芯片;可编程存储芯片含有至少一查找表电路( look-up table circuit,简称为LUT),故存储芯片又被称为LUT芯片。LUT存储一函数的相关数据(如该函数的一查找表),ALC对该函数相关数据进行算术运算。ALC芯片和LUT芯片位于同一封装中,它们之间通过芯片间连接进行电耦合。由于与ALC位于同一封装中,LUT又被称为封装内查找表电路(IP-LUT)。此外,由于IP-LUT是可编程的,因此可根据用户需求在IP-LUT中写入所需函数的相关数据,以实现计算的编程。
IP-LUT可编程处理器采用“基于存储的计算”(memory-based computation,简称为MBC),它主要通过查表来实现计算。IP-LUT可编程处理器中IP-LUT的存储容量远高于传统处理器的LUT。虽然大多数MBC仍需要进行算术运算,通过使用较大的IP-LUT作为计算的出发点,MBC仅需使用较少的多项式展开(如泰勒级数展开)。在MBC中,大部分计算通过IP-LUT完成,少部分计算通过ALC实现。
IP-LUT可编程处理器的使用分两个阶段:设置阶段和计算阶段。在设置阶段,在IP-LUT中写入所需函数的相关数据;在计算阶段,通过在IP-LUT中查找函数相关数据来实现计算。IP-LUT可编程处理器能实现现场编程和可重构计算。对于现场编程,可在使用现场将所需函数的相关数据写入IP-LUT,则IP-LUT可编程处理器可在使用现场实现所需的函数。对于可重构计算,不同时段在IP-LUT中写入不同函数的不同相关数据(如不同函数的查找表),则IP-LUT可编程处理器可实现不同函数。例如,在第一时段,IP-LUT存储第一函数的相关数据;在第二时段,IP-LUT存储第二函数的相关数据。
这种将ALC芯片和LUT芯片相互堆叠在同一封装的集成方式被称为2.5维集成。2.5维集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00X的面积是ALU100X和LUT 200X之和。采用2.5维集成后,LUT从边上移到顶上,IP-LUT可编程处理器变小,计算密度加强。此外,传统处理器00X中LUT 200X的总容量小于100kb,而IP-LUT可编程处理器中IP-LUT的总容量可达到100Gb;单个IP-LUT可编程处理器就可支持上万个内置函数(包括多种复杂函数),远多于传统处理器00X。此外,由于ALC芯片和LUT芯片为不同芯片,构成ALC的逻辑晶体管和构成LUT的存储晶体管分别在不同半导体衬底上形成,它们的制造工艺可分别优化。
为了进一步提高可编程度,本发明还提出一种基于IP-LUT的可编程门阵列(IP-LUT可编程门阵列)。它含有多个可编程计算单元、多个可编程逻辑单元和多个可编程连接。可编程计算单元含有一IP-LUT,该IP-LUT含有至少一可编程存储阵列,它存储一函数的相关数据。由于IP-LUT是可编程的,因此可以根据用户需求,在IP-LUT中写入所需函数的相关数据,以实现计算的编程。IP-LUT可编程门阵列中的可编程逻辑单元和可编程连接与传统FPGA中的可编程逻辑单元和可编程连接类似。在计算过程中,非算术函数首先被分解为基本非算术函数的组合。然后针对每个基本非算术函数设置相应的可编程计算单元,使其实现相应的基本非算术函数。最后,设置可编程逻辑单元和可编程连接,以实现所需的非算术函数。
相应地,本发明提出一种可编程处理器(300),其特征在于含有:一可编程存储芯片(200),该可编程存储芯片(200)含有至少一查找表电路(170),可根据用户需求在该查找表电路(170)中写入一函数的相关数据;一逻辑芯片(100),该逻辑芯片(100)含有至少一算术逻辑电路(180),该算术逻辑电路(180)对该查找表电路(170)中读出的数据进行算术运算;多个将该可编程存储芯片(200)和该逻辑芯片(100)耦合的芯片间连接(160);该可编程存储芯片(200)和该逻辑芯片(100)位于同一封装(130)内。
附图说明
图1A是一传统处理器的透视图(现有技术);图1B列出英特尔Itanium(IA-64)处理器支持的所有超越函数(现有技术)。
图2A是一种典型IP-LUT可编程处理器的简要电路框图;图2B是该IP-LUT可编程处理器的透视图。
图3A-图3C是三种IP-LUT可编程处理器的截面图。
图4A是一种典型可编程计算单元之简要电路框图;图4B是一种实现一单精度函数的可编程计算单元之电路框图;图4C列出实现各种精度函数所需的查找表容量和泰勒级数展开项。
图5是一种IP-LUT可编程门阵列的布局图。
图6是图5中IP-LUT可编程门阵列实现一多变量函数e=a.sin(b)+c.cos(d)的设置。
注意到,这些附图仅是概要图,它们不按比例绘图。为了显眼和方便起见,图中的部分尺寸和结构可能做了放大或缩小。在不同实施例中,数字后面的字母后缀表示同一类结构的不同实例;相同的数字前缀表示相同或类似的结构。“/”表示“和” 或“或”的关系。在本发明中,“查找表”和“查找表电路”均被缩写为LUT。根据上下文,LUT代表查找表或查找表电路。
具体实施方式
图2A是一种典型的、基于封装内查找表(in-package LUT,简称为IP-LUT)的可编程处理器(IP-LUT可编程处理器)300的简要电路框图;图2B是该IP-LUT可编程处理器300的透视图。IP-LUT可编程处理器300有一个或多个输入150、以及一个或多个输出190。IP-LUT可编程处理器300含有一逻辑芯片100和一可编程存储芯片200。逻辑芯片100形成在第一衬底100S上,它含有至少一算术逻辑电路(ALC)180,故逻辑芯片100又被称为ALC芯片。可编程存储芯片200形成在第二衬底200S上,它含有至少一查找表电路(LUT)170,故存储芯片200又被称为LUT芯片。LUT 170存储一函数的相关数据(如该函数的一查找表),ALC 180对该函数相关数据进行算术运算。ALC芯片100和LUT芯片200位于同一封装中,它们之间通过芯片间连接160电耦合。由于与ALC 180位于同一封装中,LUT 170又被称为封装内查找表电路(IP-LUT)。此外,由于IP-LUT 170是可编程的,因此可根据用户需求在IP-LUT 170中写入所需函数的相关数据,以实现计算的编程。在本实施例中,LUT芯片200堆叠在ALC芯片 100上方;IP-LUT 170与ALC 180至少部分重叠。在说明书附图中,由于它们处于不同芯片中, IP-LUT 170用虚线表示,ALC 180用实线表示。
IP-LUT可编程处理器300采用“基于存储的计算”(MBC),它主要通过查表来实现计算。IP-LUT可编程处理器300中IP-LUT 170的存储容量远高于传统处理器00的LUT 200X。虽然大多数MBC仍需要进行算术运算,通过使用较大的IP-LUT 170作为计算的出发点,MBC仅需使用较少的多项式展开(如泰勒级数展开)。在MBC中,大部分计算通过IP-LUT 170完成,少部分计算通过ALC 180实现。
IP-LUT可编程处理器300的使用分两个阶段:设置阶段和计算阶段。在设置阶段,在IP-LUT 170中写入所需函数的相关数据;在计算阶段,通过在IP-LUT 170中查找函数相关数据来实现计算。IP-LUT可编程处理器300能实现现场编程和可重构计算。对于现场编程,可在使用现场将所需函数的相关数据写入IP-LUT 170,则IP-LUT可编程处理器300可在使用现场实现所需的函数。对于可重构计算,不同时段在IP-LUT 170中写入不同函数的不同相关数据(如不同函数的查找表),则IP-LUT可编程处理器300可实现不同函数。例如,在第一时段,IP-LUT 170存储第一函数的相关数据;在第二时段,IP-LUT 170存储第二函数的相关数据。
IP-LUT 170可用RAM和/或ROM。RAM包括SRAM和DRAM等。ROM包括OTP、EPROM、EEPROM和闪存等。闪存可以分为NOR或NAND,还可以分为横向闪存和纵向闪存(vertical NAND)。对于可重构计算,IP-LUT 170采用可重复编程存储器。对于现场编程,除了可重复编程存储器以外,IP-LUT 170还可以采用OTP。另一方面,ALC 180可以含有加法器、乘法器、和/或乘加器,它可以用于实现整数运算、定点数运算、或浮点数运算。
图3A-图3C是三种IP-LUT可编程处理器300的截面图。它们均为一种多芯片封装(multi-chip package,简称为MCP)。其中,图3A中的IP-LUT可编程处理器300含有两个分离芯片:ALC芯片100和LUT芯片200。芯片100、200堆叠在封装衬底110上并位于同一封装130中。微焊点(micro-bump)116为芯片100、200提供电耦合,它起芯片间连接160的作用。在本实施例中,LUT芯片200堆叠在ALC芯片100上;同时,LUT芯片200被翻转,它与ALC芯片100面对面地堆叠在一起。在其它实施例中,ALC芯片100也可堆叠在LUT芯片200上,同时也可不被翻转。
图3B中的IP-LUT可编程处理器300含有ALC芯片100、LUT芯片200和硅插板(interposer)120。硅插板120含有多个穿透硅片通道(TSV)118,它使ALC芯片100和LUT芯片200之间的电耦合更为容易,设计时有更多自由度,同时散热更为良好。此实施例还含有多个微焊点116,它与TSV 118构成芯片间连接160。
图3C中的IP-LUT可编程处理器300含有一ALC芯片100和至少两个LUT芯片200A、200B。这些芯片100、200A和200B是分离的,并位于同一封装130中。其中,LUT芯片200B堆叠在LUT芯片200A之上,LUT芯片200A又堆叠在ALC芯片100之上。芯片100、200A、200B之间通过TSV 118和微焊点116耦合。很明显,图3C比图3A具有更大的IP-LUT 170。类似地,在此实施例中,TSV 118和微焊点116构成芯片间连接160。
这种将LUT芯片200和ALC芯片100相互堆叠在同一封装的集成方式被称为2.5维集成。2.5维集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00的面积是LUT 200X和ALU 100X之和。采用2.5维集成后,LUT从边上移到顶上,IP-LUT可编程处理器300的面积变小,计算密度加强。此外,传统处理器00中LUT的总容量小于100kb,而IP-LUT可编程处理器300中LUT的总容量可达到100Gb;单个IP-LUT可编程处理器300就可支持上万个内置函数(包括多种复杂函数),远多于传统处理器。此外,2.5维集成还能提高LUT 170和ALC 180之间的数据传输带宽。由于LUT 170和ALC 180距离较近且芯片间连接160数量较多,它们之间的数据传输带宽远高于传统处理器00中LUT 200X和ALU 100X之间的带宽。最后,2.5维集成对制造工艺角度也有益处。由于ALC芯片100和LUT芯片200为不同芯片,构成ALC芯片100的逻辑晶体管和构成LUT芯片200的存储晶体管分别形成在不同衬底(100S、200S)上,它们的制造工艺可分别优化。
为了进一步提高可编程度,本发明还提出一种基于IP-LUT的可编程门阵列(IP-LUT可编程门阵列)700(图4A-图6),它含有多个可编程计算单元400AA…、多个可编程逻辑单元500AA…和多个可编程连接610-650…。图4A表示一种典型的可编程计算单元400,它含有一预处理电路180R、一后处理电路180T和至少一IP-LUT 170。IP-LUT 170含有至少一可编程存储阵列,它存储一函数的相关数据(如该函数的查找表)。由于IP-LUT 170是可编程的,因此可根据用户需求在IP-LUT 170中写入所需函数的相关数据,以实现计算的编程。预处理电路180R将函数的自变量X 150转换为IP-LUT 170的地址A 160A;后处理器180T将从IP-LUT 170中读出的数据D 160D转换为函数值Y的输出 190。在该实施例中,预处理电路180R和后处理电路180T形成在逻辑芯片100中。在其他实施例中,至少一部分预处理电路180R和/或后处理电路180T也可以形成在存储芯片200中。自变量X的一部分R可以在被预处理电路180R处理之前送至后处理电路180T作为后端处理的一个输入,也可以在被预处理电路180R处理之后(即地址A的一部分)送至后处理器180T。
图4B表示一种实现一单精度函数Y=f(X)的可编程计算单元400。IP-LUT 170含有两个LUT 170Q、170R,其容量均为2Mb(16位输入、32位输出),并分别存储函数值D1=f(A)和函数的一阶导数值D2=f’(A)。ALC 180含有预处理电路180R(主要含有一地址缓冲区)和后处理电路180T(含有一加法器180A和一乘法器180M)。芯片间连接160在IP-LUT 170和ALC180之间传输数据。在计算函数时,该IP-LUT可编程处理器300的输入为32位自变量X 150(x31… x0);预处理电路180R将其前16位(x31… x16)提取出来作为LUT 170Q、170R的16位地址输入A,再将其后16位(x15… x0)提取出来作为16位地址余量R送到后处理电路180T;后处理电路180T通过多项式插值计算32位输出值Y 190。在本实施例中,多项式插值是一阶泰勒级数:Y(X)=D1+D2*R=f(A)+f’(A)*R。很明显,采用更高阶的多项式插值(如更高阶的泰勒级数)能进一步提高计算精度。
在实现内置函数时,将LUT和多项式插值结合起来可以用较小的LUT实现较高的计算精度。假如仅用LUT(无多项式插值)来实现上述的单精度函数(32位输入、32位输出),LUT的容量需要达到232*32=128Gb。用这么大的LUT来实现一个函数是不现实的。通过多项式插值,LUT的容量可极大地降低。在上述实施例中,在采用一阶泰勒级数后,LUT只需4Mb(函数值LUT需要2Mb、一阶导数值LUT需要2Mb)。这比仅用LUT的方式(128Gb)少很多。
图4C列出实现各种精度函数所需的查找表容量和泰勒级数展开项。该实施例采用定义域缩小法并将查找表的容量限制在Mb级(参考Harrison等所著《The Computation ofTranscendental Functions on the IA-64 Architecture》, Intel Technical Journal,Q4, 1999年)。半精度(16位)计算使用的IP-LUT 170容量为216×16=1Mb,这时不需要计算任何泰勒级数;单精度(32位)计算使用的IP-LUT 170容量为216×32×2=4Mb,这时需要计算1阶泰勒级数;双精度(64位)计算使用的IP-LUT 170容量为216×64×3=12Mb,这时需要计算2阶泰勒级数;扩展双精度(80位)计算使用的IP-LUT 170的容量为216×80×4=20Mb,这时需要计算3阶泰勒级数。作为一个比较,为实现同样的双精度(64位)计算,英特尔的Itanium处理器需要计算多达22阶泰勒级数。
除了初等函数以外,图4A-图4B中的实施例还能实现各种高等函数,如特殊函数等。特殊函数在数学分析、泛函分析、物理研究、工程应用中有着举足轻重的地位。许多特殊函数是微分方程的解或基本函数的积分。特殊函数的例子包括伽玛函数、贝塔函数、贝塞尔函数、勒让德函数、椭圆函数、Lame函数、Mathieu函数、黎曼泽塔函数、菲涅耳积分等。可编程计算单元400的出现将简化特殊函数的计算,助推其在科学计算中的应用。
图5表示一种IP-LUT可编程门阵列700。它含有规则排列的可编程模块700A和可编程模块700B等。每个可编程模块(如700A)含有多个可编程计算单元(如400AA-400AD)和可编程逻辑单元(如500AA-500AD)。在可编程计算单元(如400AA-400AD)和可编程逻辑单元(如500AA-500AD)之间含有可编程信道620、640;在可编程模块700A和可编程模块700B之间,也含有可编程信道610、630、650。可编程信道610-650含有多个可编程连接。对于熟悉本领域的专业人士来说,除了可编程信道以外,还可以采用门海(sea-of-gates)等设计。可编程逻辑单元和可编程连接类似传统FPGA中的可编程逻辑单元和可编程连接(参见美国专利4,870,302)。比如说,可编程逻辑单元可以选择性地实现移位、逻辑非、AND(逻辑与)、OR(逻辑和)、NOR(和非)、NAND(与非)、XOR(异或)、+(加法)、-(减法)等逻辑操作;可编程连接可以选择性地实现互连线的连接、断开等功能。在一些实施例中,部分可编程逻辑单元甚至可以实现×(乘法)。
图6表示该IP-LUT可编程门阵列700的一种具体实现,它用于实现一多变量非算术函数:e=a.sin(b)+c.cos(d)。在可编程信道610-650中可编程连接采用与美国专利4,870,302一致的表达方式:交叉点有圆点的可编程连接表示交叉线相连,交叉点无圆点的可编程连接表示交叉线不相连,断开的可编程连接表示断开的互连线被分为两个互不相连的互连线段。在该实施例中,可编程计算单元400AA被设置为log(),其计算结果log(a)被送到可编程逻辑单元500AA的第一输入。可编程计算单元400AB被设置为log[sin()],其计算结果log[sin(b)]被送到可编程逻辑单元500AA的第二输入。可编程逻辑单元500AA被设置为“加法”,其计算结果log(a)+log[sin(b)]被送到可编程计算单元400BA。可编程计算单元400BA被设置为exp(),其计算结果exp{log(a)+log[sin(b)]}=a.sin(b)被送到可编程逻辑单元500BA的第一输入。类似地,通过适当的设置,可编程计算单元400AC、400AD,可编程逻辑单元500AC,可编程计算单元400BC的结果c.cos(d)被送到可编程逻辑单元500BA的第二输入。可编程逻辑单元500BA被设置为“加法”,a.sin(b)和c.cos(d)在此相加,最终结果送到输出e。很明显,通过改变设置,IP-LUT可编程门阵列700还可以实现其它非算术函数。
IP-LUT可编程门阵列700尤其适合实现对多变量函数的编程。如果仅采用LUT,则上述4变量函数e=a.sin(b)+c.cos(d)需要的极大LUT:即使仅采用半精度,就需要216×216×216×216×16=256Eb的LUT。很明显,用这么多LUT来实现一4变量函数是不现实的。采用IP-LUT可编程门阵列700后,仅需要8Mb的LUT(8个可编程计算单元,每个计算单元含1Mb的LUT)就可实现该4变量函数。对于熟悉本专业的人士来说,IP-LUT可编程门阵列700可以推广到其它多变量函数中。
应该了解,在不远离本发明的精神和范围的前提下,可以对本发明的形式和细节进行改动,这并不妨碍它们应用本发明的精神。例如说,处理器可以是中央处理器(CPU)、数字信号处理器(DSP)、图像处理器(GPU)、网络安全处理器、加密/解密处理器、编码/解码处理器、神经网络处理器、人工智能(AI)处理器等。因此,除了根据附加的权利要求书的精神,本发明不应受到任何限制。
Claims (10)
1.一种可编程处理器(300),其特征在于含有:
一可编程存储芯片(200),该可编程存储芯片(200)含有至少一查找表电路(170),可根据用户需求在该查找表电路(170)中写入一函数的相关数据;
一逻辑芯片(100),该逻辑芯片(100)含有至少一算术逻辑电路(180),该算术逻辑电路(180)对该查找表电路(170)中读出的数据进行算术运算;
多个将该可编程存储芯片(200)和该逻辑芯片(100)耦合的芯片间连接(160);
该可编程存储芯片(200)和该逻辑芯片(100)位于同一封装(130)内。
2.根据权利要求1所述的可编程处理器(300),其特征在于:该可编程存储芯片(200)为一可重复编程存储器。
3.根据权利要求2所述的可编程处理器(300),其特征在于:在不同时段,该查找表电路(170)存储不同函数的不同相关数据。
4.根据权利要求1所述的可编程处理器(300),其特征还在于:所述可编程处理器(300)是一可编程门阵列(700)。
5.根据权利要求4所述的可编程处理器(300),其特征还在于:所述可编程门阵列(700)含有多个可编程计算单元(400AA…)、多个可编程逻辑单元(500AA…)、和/或多个可编程连接。
6.根据权利要求5所述的可编程处理器(300),其特征还在于:所述可编程计算单元(400AA…)含有至少一可编程存储阵列、一预处理电路(180R)、和/或一后处理电路(180T)。
7.根据权利要求5所述的可编程处理器(300),其特征还在于:所述可编程逻辑单元(500AA…) 可实现下述逻辑操作中的至少一种,包括移位、逻辑非、AND(逻辑与)、OR(逻辑和)、NOR(和非)、NAND(与非)、XOR(异或)、+(加法)、-(减法)、以及×(乘法)。
8.根据权利要求5所述的可编程处理器(300),其特征还在于:所述可编程连接可实现互连线的连接或断开。
9.根据权利要求1所述的可编程处理器(300),其特征在于:该存储芯片(200)和该逻辑芯片(100)垂直堆叠。
10.根据权利要求1所述的可编程处理器 (300),其特征还在于:所述芯片间连接(160)含有微焊点(micro-bump)(116)、和/或穿透硅片通道(TSV)(118)。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2016103016458 | 2016-05-06 | ||
CN201610301645 | 2016-05-06 | ||
CN2017103108651 | 2017-05-05 | ||
CN201710310865 | 2017-05-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107346231A true CN107346231A (zh) | 2017-11-14 |
Family
ID=60243433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710314728.5A Pending CN107346231A (zh) | 2016-05-06 | 2017-05-06 | 基于封装内查找表的可编程处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170322771A1 (zh) |
CN (1) | CN107346231A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109494218A (zh) * | 2018-09-30 | 2019-03-19 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 双面超导量子芯片 |
CN110247653A (zh) * | 2018-03-07 | 2019-09-17 | 杭州海存信息技术有限公司 | 基于印录存储阵列的可编程计算阵列封装 |
CN111290994A (zh) * | 2018-12-10 | 2020-06-16 | 杭州海存信息技术有限公司 | 分离的三维处理器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10445067B2 (en) * | 2016-05-06 | 2019-10-15 | HangZhou HaiCun Information Technology Co., Ltd. | Configurable processor with in-package look-up table |
US10372609B2 (en) * | 2017-09-14 | 2019-08-06 | Intel Corporation | Fast cache warm-up |
US10628295B2 (en) * | 2017-12-26 | 2020-04-21 | Samsung Electronics Co., Ltd. | Computing mechanisms using lookup tables stored on memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761991A (zh) * | 2013-12-30 | 2014-04-30 | 深圳市国微电子有限公司 | 一种用于可编程芯片的查找表及查找表电路 |
CN105610503A (zh) * | 2016-03-21 | 2016-05-25 | 文成县刀锋科技有限公司 | 一种基于光伏技术lifi通信的地下室家用装置 |
CN107346230A (zh) * | 2016-05-04 | 2017-11-14 | 杭州海存信息技术有限公司 | 基于封装内查找表的处理器 |
CN107346232A (zh) * | 2016-05-07 | 2017-11-14 | 成都海存艾匹科技有限公司 | 基于背面查找表的可编程处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558812B1 (en) * | 2003-11-26 | 2009-07-07 | Altera Corporation | Structures for LUT-based arithmetic in PLDs |
US8273610B2 (en) * | 2010-11-18 | 2012-09-25 | Monolithic 3D Inc. | Method of constructing a semiconductor device and structure |
-
2017
- 2017-05-06 US US15/588,642 patent/US20170322771A1/en not_active Abandoned
- 2017-05-06 CN CN201710314728.5A patent/CN107346231A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761991A (zh) * | 2013-12-30 | 2014-04-30 | 深圳市国微电子有限公司 | 一种用于可编程芯片的查找表及查找表电路 |
CN105610503A (zh) * | 2016-03-21 | 2016-05-25 | 文成县刀锋科技有限公司 | 一种基于光伏技术lifi通信的地下室家用装置 |
CN107346230A (zh) * | 2016-05-04 | 2017-11-14 | 杭州海存信息技术有限公司 | 基于封装内查找表的处理器 |
CN107346232A (zh) * | 2016-05-07 | 2017-11-14 | 成都海存艾匹科技有限公司 | 基于背面查找表的可编程处理器 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247653A (zh) * | 2018-03-07 | 2019-09-17 | 杭州海存信息技术有限公司 | 基于印录存储阵列的可编程计算阵列封装 |
CN109494218A (zh) * | 2018-09-30 | 2019-03-19 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 双面超导量子芯片 |
CN109494218B (zh) * | 2018-09-30 | 2021-07-30 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 双面超导量子芯片 |
CN111290994A (zh) * | 2018-12-10 | 2020-06-16 | 杭州海存信息技术有限公司 | 分离的三维处理器 |
CN112597098A (zh) * | 2018-12-10 | 2021-04-02 | 杭州海存信息技术有限公司 | 分离的三维处理器 |
CN113918506A (zh) * | 2018-12-10 | 2022-01-11 | 杭州海存信息技术有限公司 | 分离的三维处理器 |
CN111290994B (zh) * | 2018-12-10 | 2023-01-10 | 杭州海存信息技术有限公司 | 分离的三维处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20170322771A1 (en) | 2017-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107346231A (zh) | 基于封装内查找表的可编程处理器 | |
CN107346232A (zh) | 基于背面查找表的可编程处理器 | |
Wang et al. | 14.2 A compute SRAM with bit-serial integer/floating-point operations for programmable in-memory vector acceleration | |
Zhu et al. | Accelerating sparse matrix-matrix multiplication with 3D-stacked logic-in-memory hardware | |
Cho et al. | McDRAM v2: In-dynamic random access memory systolic array accelerator to address the large model problem in deep neural networks on the edge | |
CN107346149A (zh) | 基于背面查找表的处理器 | |
CN107346230A (zh) | 基于封装内查找表的处理器 | |
CN107346352A (zh) | 基于封装内查找表的仿真处理器 | |
US11776944B2 (en) | Discrete three-dimensional processor | |
Scott et al. | Architectures for exponentiation in GF (2/sup m/) | |
Sim et al. | Nid: processing binary convolutional neural network in commodity dram | |
US11527523B2 (en) | Discrete three-dimensional processor | |
Wang et al. | TAICHI: A tiled architecture for in-memory computing and heterogeneous integration | |
US20230411374A1 (en) | Discrete Three-Dimensional Processor | |
Singh et al. | Cidan-xe: Computing in dram with artificial neurons | |
Akin et al. | FFTs with near-optimal memory access through block data layouts: Algorithm, architecture and design automation | |
Li et al. | Toward energy-efficient sparse matrix-vector multiplication with near STT-MRAM computing architecture | |
Zokaee et al. | Sky-sorter: A processing-in-memory architecture for large-scale sorting | |
Angizi et al. | Deep neural network acceleration in non-volatile memory: A digital approach | |
Kuzmin et al. | Associative processors: application, operation, implementation problems | |
US20230385624A1 (en) | Computing in memory with artificial neurons | |
Schmit et al. | Multi-input Serial Adders for FPGA-like Computational Fabric | |
Ghasemizadeh et al. | A 1.6 GHz 16× 16-bit low-latency pipelined booth multiplier | |
CN111290994B (zh) | 分离的三维处理器 | |
Taka et al. | Efficient Approaches for GEMM Acceleration on Leading AI-Optimized FPGAs |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171114 |