CN107346232A - 基于背面查找表的可编程处理器 - Google Patents
基于背面查找表的可编程处理器 Download PDFInfo
- Publication number
- CN107346232A CN107346232A CN201710314741.0A CN201710314741A CN107346232A CN 107346232 A CN107346232 A CN 107346232A CN 201710314741 A CN201710314741 A CN 201710314741A CN 107346232 A CN107346232 A CN 107346232A
- Authority
- CN
- China
- Prior art keywords
- lut
- programmable
- programmable processor
- function
- processor
- 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/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/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
- 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
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (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尚无法实现计算的编程,即同一硬件在设置信号控制下选择性地实现不同的计算(即实现不同的函数)。
发明内容
本发明的主要目的是实现计算的编程。
本发明的另一目的是实现计算的现场编程。
本发明的另一目的是实现可重构计算。
本发明的主要目的是实现多变量函数的编程。
本发明的另一目的是提供一种能实现更高计算复杂度的可编程处理器。
本发明的另一目的是提供一种能实现更高计算密度的可编程处理器。
本发明的另一目的是提供一种计算能力更灵活、更强大的现场可编程门阵列。
为了实现这些以及别的目的,本发明提出一种基于背面查找表(backside LUT,简称为BS-LUT)的可编程处理器(BS-LUT可编程处理器)。BS-LUT可编程处理器含有至少一逻辑电路和一可编程存储电路。其中,逻辑电路含有至少一算术逻辑电路(arithmetic logiccircuit,简称为ALC);可编程存储电路含有至少一查找表电路( look-up table circuit,简称为LUT)。LUT存储一函数的相关数据(如该函数的一查找表),ALC对该函数相关数据进行算术运算。ALC和LUT分别形成在处理器衬底的正反两面,它们之间通过穿透硅片通道(TSV)进行电耦合。由于位于衬底背面,LUT又被称为背面查找表电路(BS-LUT)。此外,由于BS-LUT是可编程的,因此可根据用户需求在BS-LUT中写入所需函数的相关数据,以实现计算的编程。
BS-LUT可编程处理器采用“基于存储的计算”(memory-based computation,简称为MBC),它主要通过查表来实现计算。BS-LUT可编程处理器中BS-LUT的存储容量远高于传统处理器的LUT。虽然大多数MBC仍需要进行算术运算,通过使用较大的BS-LUT作为计算的出发点,MBC仅需使用较少的多项式展开(如泰勒级数展开)。在MBC中,大部分计算通过BS-LUT完成,少部分计算通过ALC实现。
BS-LUT可编程处理器的使用分两个阶段:设置阶段和计算阶段。在设置阶段,在BS-LUT中写入所需函数的相关数据;在计算阶段,通过在BS-LUT中查找函数相关数据来实现计算。BS-LUT可编程处理器能实现现场编程和可重构计算。对于现场编程,可在使用现场将所需函数的相关数据写入BS-LUT,则BS-LUT可编程处理器可在使用现场实现所需的函数。对于可重构计算,不同时段在BS-LUT中写入不同函数的不同相关数据(如不同函数的查找表),则BS-LUT可编程处理器可实现不同函数。例如,在第一时段,BS-LUT存储第一函数的相关数据;在第二时段,BS-LUT存储第二函数的相关数据。
这种将ALC和LUT形成衬底正反两面的集成方式被称为双面集成。双面集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00X的面积是ALU 100X和LUT200X之和。采用双面集成后,LUT从边上移到衬底背面,BS-LUT处理器变小,计算密度加强。此外,传统处理器00X中LUT 200X的总容量小于100kb,而BS-LUT处理器中BS-LUT的总容量可达到100Gb;单个BS-LUT处理器就可支持上万个内置函数(包括多种复杂数学函数),远多于传统处理器00X。此外,由于构成ALC的逻辑晶体管和构成LUT的存储晶体管分别形成在衬底的不同表面上,它们的制造工艺可分别优化。
为了进一步提高可编程度,本发明还提出一种基于BS-LUT的可编程门阵列(BS-LUT可编程门阵列)。它含有多个可编程计算单元、多个可编程逻辑单元和多个可编程连接。可编程计算单元含有一BS-LUT,该BS-LUT含有至少一可编程存储阵列,它存储一函数的相关数据。由于BS-LUT是可编程的,因此可以根据用户需求,在BS-LUT中写入所需函数的相关数据,以实现计算的编程。BS-LUT可编程门阵列中的可编程逻辑单元和可编程连接与传统FPGA中的可编程逻辑单元和可编程连接类似。在计算过程中,非算术函数首先被分解为基本非算术函数的组合。然后针对每个基本非算术函数设置相应的可编程计算单元,使其实现相应的基本非算术函数。最后,设置可编程逻辑单元和可编程连接,以实现所需的非算术函数。
相应地,本发明提出一种可编程处理器(300),其特征在于含有:一半导体衬底(0S),该半导体衬底(0S)含有一正面(0F)和一背面(0B);一位于该衬底背面(0B)的查找表电路(170),可根据用户需求在该查找表电路(170)中写入一函数的相关数据;一位于该衬底正面(0F)的算术逻辑电路(180),该算术逻辑电路(180)对该查找表(170)中读出的数据进行算术运算;多个穿透该半导体衬底(0S)、并将该查找表(170)和该算术逻辑电路(180)电耦合的穿透硅片通道(TSV)(160)。
附图说明
图1A是一传统处理器的透视图(现有技术);图1B列出英特尔Itanium(IA-64)处理器支持的所有超越函数(现有技术)。
图2A是一种典型BS-LUT可编程处理器的简要电路框图;图2B是其正面透视图;图2C是其背面透视图。
图3A是一种BS-LUT可编程处理器的截面图;图3B是其正面电路布局图;图3C是其背面电路布局图。
图4A是一种典型可编程计算单元之简要电路框图;图4B是一种实现一单精度函数的可编程计算单元之电路框图;图4C列出实现各种精度函数所需的查找表容量和泰勒级数展开项。
图5是一种BS-LUT可编程门阵列的布局图。
图6是图5中BS-LUT可编程门阵列实现一多变量函数e=a.sin(b)+c.cos(d)的设置。
注意到,这些附图仅是概要图,它们不按比例绘图。为了显眼和方便起见,图中的部分尺寸和结构可能做了放大或缩小。在不同实施例中,数字后面的字母后缀表示同一类结构的不同实例;相同的数字前缀表示相同或类似的结构。“/”表示“和” 或“或”的关系。在本发明中,“查找表”和“查找表电路”均被缩写为LUT。根据上下文,LUT代表查找表或查找表电路。
具体实施方式
图2A是一种典型的、基于背面查找表(backside LUT,简称为BS-LUT)的可编程处理器(BS-LUT可编程处理器)300的简要电路框图;图2B是该BS-LUT可编程处理器300的透视图。BS-LUT可编程处理器300有一个或多个输入150、以及一个或多个输出190。BS-LUT可编程处理器300含有至少一逻辑电路100和一可编程存储电路200。其中,逻辑电路100含有至少一算术逻辑电路(ALC)170;可编程存储电路含有至少一查找表电路(LUT)170。LUT 170存储一函数的相关数据(如该函数的一查找表),ALC 180对该函数相关数据进行算术运算。ALC 180和LUT 170分别形成在处理器衬底0S的正反两面0F、0B,它们之间通过穿透硅片通道(TSV)160进行电耦合。由于位于衬底背面0B,LUT又被称为背面查找表电路(BS-LUT)170。此外,由于BS-LUT 170是可编程的,因此可根据用户需求在BS-LUT 170中写入所需函数的相关数据,以实现计算的编程。在说明书附图中,由于它们处于衬底0S的不同表面0F、0B上,BS-LUT 170用虚线表示,ALC 180用实线表示。
图3A是BS-LUT可编程处理器300的截面图;图3B是其正面电路布局图;图3C是其背面电路布局图。BS-LUT可编程处理器300含有多个穿透衬底0S的TSV 160a-160f…(图3A)。BS-LUT可编程处理器300的正面0F含有ALC 180,包括ALC构件180a-180d…(图3B)。这些ALC构件180a-180d分别与TSV 160a-160d耦合。BS-LUT可编程处理器300的背面0B含有BS-LUT170,包括可编程存储阵列170a-170f…(图3C)。在本说明书中,存储阵列是所有共享了至少一条地址线的存储元之集合(包括其周边电路)。可编程存储阵列170a-170f分别与TSV160a-160d耦合。ALC 180通过TSV 160a-160f从BS-LUT 170中读取数据,并进行算术运算。
BS-LUT可编程处理器300采用“基于存储的计算”(MBC),它主要通过查表来实现计算。BS-LUT可编程处理器300中BS-LUT 170的存储容量远高于传统处理器00的LUT 200X。虽然大多数MBC仍需要进行算术运算,通过使用较大的BS-LUT 170作为计算的出发点,MBC仅需使用较少的多项式展开(如泰勒级数展开)。在MBC中,大部分计算通过BS-LUT 170完成,少部分计算通过ALC 180实现。
BS-LUT可编程处理器300的使用分两个阶段:设置阶段和计算阶段。在设置阶段,在BS-LUT 170中写入所需函数的相关数据;在计算阶段,通过在BS-LUT 170中查找函数相关数据来实现计算。BS-LUT可编程处理器300能实现现场编程和可重构计算。对于现场编程,可在使用现场将所需函数的相关数据写入BS-LUT 170,则BS-LUT可编程处理器300可在使用现场实现所需的函数。对于可重构计算,不同时段在BS-LUT 170中写入不同函数的不同相关数据(如不同函数的查找表),则BS-LUT可编程处理器300可实现不同函数。例如,在第一时段,BS-LUT 170存储第一函数的相关数据;在第二时段,BS-LUT 170存储第二函数的相关数据。
BS-LUT 170可用RAM和/或ROM。RAM包括SRAM和DRAM等。ROM包括OTP、EPROM、EEPROM和闪存等。闪存可以分为NOR或NAND,还可以分为横向闪存和纵向闪存(vertical NAND)。对于可重构计算,BS-LUT 170采用可重复编程存储器。对于现场编程,除了可重复编程存储器以外,BS-LUT 170还可以采用OTP。另一方面,ALC 180可以含有加法器、乘法器、和/或乘加器,它可以用于实现整数运算、定点数运算、或浮点数运算。
这种将ALC 180和LUT 170形成衬底0S正反两面0F、0B的集成方式被称为双面集成。双面集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00X的面积是LUT 200X和ALU 100X之和。采用双面集成后,LUT从边上移到衬底背面0B,BS-LUT处理器300的面积变小,计算密度加强。此外,传统处理器00X中LUT的总容量小于100kb,而BS-LUT处理器300中LUT的总容量可达到100Gb;单个BS-LUT处理器300就可支持上万个内置函数(包括多种复杂数学函数),远多于传统处理器00X。此外,双面集成还能提高BS-LUT 170和ALC 180之间的数据传输带宽。由于BS-LUT 170和ALC 180距离较近且TSV 160数量较多,它们之间的数据传输带宽远高于传统处理器00X中LUT 200X和ALU 100X之间的带宽。最后,双面集成对制造工艺角度也有益处。由于构成ALC 180的逻辑晶体管和构成LUT 170的存储晶体管分别形成在衬底0S的不同表面0F、0B上,它们的制造工艺可分别优化。
为了进一步提高可编程度,本发明还提出一种基于BS-LUT的可编程门阵列(BS-LUT可编程门阵列)700(图4A-图6),它含有多个可编程计算单元400AA…、多个可编程逻辑单元500AA…和多个可编程连接610-650…。图4A表示一种典型的可编程计算单元400,它含有一预处理电路180R、一后处理电路180T和至少一BS-LUT 170。BS-LUT 170含有至少一可编程存储阵列,它存储一函数的相关数据(如该函数的查找表)。由于BS-LUT 170是可编程的,因此可根据用户需求在BS-LUT 170中写入所需函数的相关数据,以实现计算的编程。预处理电路180R将函数的自变量X 150转换为BS-LUT 170的地址A 160A;后处理器180T将从BS-LUT 170中读出的数据D 160D转换为函数值Y的输出 190。在该实施例中,预处理电路180R和后处理电路180T形成在逻辑电路100中。在其他实施例中,至少一部分预处理电路180R和/或后处理电路180T也可以形成在存储电路200中。自变量X的一部分R可以在被预处理电路180R处理之前送至后处理电路180T作为后端处理的一个输入,也可以在被预处理电路180R处理之后(即地址A的一部分)送至后处理器180T。
图4B表示一种实现一单精度函数Y=f(X)的可编程计算单元400。BS-LUT 170含有两个LUT 170Q、170R,其容量均为2Mb(16位输入、32位输出),并分别存储函数值D1=f(A)和函数的一阶导数值D2=f’(A)。ALC 180含有预处理电路180R(主要含有一地址缓冲区)和后处理电路180T(含有一加法器180A和一乘法器180M)。TSV 160在BS-LUT 170和ALC 180之间传输数据。在计算函数时,该BS-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位)计算使用的BS-LUT 170容量为216×16=1Mb,这时不需要计算任何泰勒级数;单精度(32位)计算使用的BS-LUT 170容量为216×32×2=4Mb,这时需要计算1阶泰勒级数;双精度(64位)计算使用的BS-LUT 170容量为216×64×3=12Mb,这时需要计算2阶泰勒级数;扩展双精度(80位)计算使用的BS-LUT 170的容量为216×80×4=20Mb,这时需要计算3阶泰勒级数。作为一个比较,为实现同样的双精度(64位)计算,英特尔的Itanium处理器需要计算多达22阶泰勒级数。
除了初等函数以外,图4A-图4B中的实施例还能实现各种高等函数,如特殊函数等。特殊函数在数学分析、泛函分析、物理研究、工程应用中有着举足轻重的地位。许多特殊函数是微分方程的解或基本函数的积分。特殊函数的例子包括伽玛函数、贝塔函数、贝塞尔函数、勒让德函数、椭圆函数、Lame函数、Mathieu函数、黎曼泽塔函数、菲涅耳积分等。可编程计算单元400的出现将简化特殊函数的计算,助推其在科学计算中的应用。
图5表示一种BS-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表示该BS-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。很明显,通过改变设置,BS-LUT可编程门阵列700还可以实现其它非算术函数。
BS-LUT可编程门阵列700尤其适合实现对多变量函数的编程。如果仅采用LUT,则上述4变量函数e=a.sin(b)+c.cos(d)需要的极大LUT:即使仅采用半精度,就需要216×216×216×216×16=256Eb的LUT。很明显,用这么多LUT来实现一4变量函数是不现实的。采用BS-LUT可编程门阵列700后,仅需要8Mb的LUT(8个可编程计算单元,每个计算单元含1Mb的LUT)就可实现该4变量函数。对于熟悉本专业的人士来说,BS-LUT可编程门阵列700可以推广到其它多变量函数中。
应该了解,在不远离本发明的精神和范围的前提下,可以对本发明的形式和细节进行改动,这并不妨碍它们应用本发明的精神。例如说,处理器可以是中央处理器(CPU)、数字信号处理器(DSP)、图像处理器(GPU)、网络安全处理器、加密/解密处理器、编码/解码处理器、神经网络处理器、人工智能(AI)处理器等。因此,除了根据附加的权利要求书的精神,本发明不应受到任何限制。
Claims (10)
1.一种可编程处理器(300),其特征在于含有:
一半导体衬底(0S),该半导体衬底(0S)含有一正面(0F)和一背面(0B);
一位于该衬底背面(0B)的查找表电路(170),可根据用户需求在该查找表电路(170)中写入一函数的相关数据;
一位于该衬底正面(0F)的算术逻辑电路(180),该算术逻辑电路(180)对该查找表(170)中读出的数据进行算术运算;
多个穿透该半导体衬底(0S)、并将该查找表(170)和该算术逻辑电路(180)电耦合的穿透硅片通道(TSV)(160)。
2.根据权利要求1所述的可编程处理器(300),其特征在于:该查找表电路(170)含有一可重复编程存储器。
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),其特征在于:所述查找表电路(170)为RAM。
10.根据权利要求1所述的可编程处理器 (300),其特征还在于:所述查找表电路(170)为ROM。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610300576 | 2016-05-07 | ||
CN2016103005769 | 2016-05-07 | ||
CN201710311013 | 2017-05-05 | ||
CN2017103110134 | 2017-05-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107346232A true CN107346232A (zh) | 2017-11-14 |
Family
ID=60243510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710314741.0A Pending CN107346232A (zh) | 2016-05-07 | 2017-05-06 | 基于背面查找表的可编程处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170322774A1 (zh) |
CN (1) | CN107346232A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346231A (zh) * | 2016-05-06 | 2017-11-14 | 成都海存艾匹科技有限公司 | 基于封装内查找表的可编程处理器 |
CN109698692A (zh) * | 2017-10-20 | 2019-04-30 | 成都海存艾匹科技有限公司 | 采用双面集成的可编程门阵列 |
Families Citing this family (8)
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 |
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11327717B2 (en) * | 2019-11-19 | 2022-05-10 | SambaNova Systems, Inc. | Look-up table with input offsetting |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071401A1 (en) * | 2001-07-30 | 2005-03-31 | Ati Technologies, Inc. | Method and system for approximating sine and cosine functions |
CN1606238A (zh) * | 2003-09-26 | 2005-04-13 | 株式会社东芝 | 控制电路和可重构逻辑部件 |
US20120068229A1 (en) * | 2009-05-06 | 2012-03-22 | Majid Bemanian | Massively Parallel Interconnect Fabric for Complex Semiconductor Devices |
CN103207849A (zh) * | 2012-01-13 | 2013-07-17 | 阿尔特拉公司 | 用于灵活电子接口的装置和关联方法 |
CN103677736A (zh) * | 2012-09-04 | 2014-03-26 | 亚德诺半导体股份有限公司 | 数字信号处理器的数据路径电路 |
CN103761991A (zh) * | 2013-12-30 | 2014-04-30 | 深圳市国微电子有限公司 | 一种用于可编程芯片的查找表及查找表电路 |
CN104051426A (zh) * | 2013-03-13 | 2014-09-17 | 阿尔特拉公司 | 用于具有改进的互连的电子组件的装置及相关方法 |
US20150341035A1 (en) * | 2013-02-13 | 2015-11-26 | Semiconductor Energy Laboratory Co., Ltd. | Programmable logic device and semiconductor device |
CN107346230A (zh) * | 2016-05-04 | 2017-11-14 | 杭州海存信息技术有限公司 | 基于封装内查找表的处理器 |
-
2017
- 2017-05-06 US US15/588,643 patent/US20170322774A1/en not_active Abandoned
- 2017-05-06 CN CN201710314741.0A patent/CN107346232A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071401A1 (en) * | 2001-07-30 | 2005-03-31 | Ati Technologies, Inc. | Method and system for approximating sine and cosine functions |
CN1606238A (zh) * | 2003-09-26 | 2005-04-13 | 株式会社东芝 | 控制电路和可重构逻辑部件 |
US20120068229A1 (en) * | 2009-05-06 | 2012-03-22 | Majid Bemanian | Massively Parallel Interconnect Fabric for Complex Semiconductor Devices |
CN103207849A (zh) * | 2012-01-13 | 2013-07-17 | 阿尔特拉公司 | 用于灵活电子接口的装置和关联方法 |
CN103677736A (zh) * | 2012-09-04 | 2014-03-26 | 亚德诺半导体股份有限公司 | 数字信号处理器的数据路径电路 |
US20150341035A1 (en) * | 2013-02-13 | 2015-11-26 | Semiconductor Energy Laboratory Co., Ltd. | Programmable logic device and semiconductor device |
CN104051426A (zh) * | 2013-03-13 | 2014-09-17 | 阿尔特拉公司 | 用于具有改进的互连的电子组件的装置及相关方法 |
CN103761991A (zh) * | 2013-12-30 | 2014-04-30 | 深圳市国微电子有限公司 | 一种用于可编程芯片的查找表及查找表电路 |
CN107346230A (zh) * | 2016-05-04 | 2017-11-14 | 杭州海存信息技术有限公司 | 基于封装内查找表的处理器 |
Non-Patent Citations (1)
Title |
---|
DAE HYUN KIM 等: "Design and Analysis of 3D-MAPS(3D Massively Parallel Processor with Stacked Memory)", 《IEEE TRANSACTIONS ON COMPTERS》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346231A (zh) * | 2016-05-06 | 2017-11-14 | 成都海存艾匹科技有限公司 | 基于封装内查找表的可编程处理器 |
CN109698692A (zh) * | 2017-10-20 | 2019-04-30 | 成都海存艾匹科技有限公司 | 采用双面集成的可编程门阵列 |
Also Published As
Publication number | Publication date |
---|---|
US20170322774A1 (en) | 2017-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107346232A (zh) | 基于背面查找表的可编程处理器 | |
Wang et al. | 14.2 A compute SRAM with bit-serial integer/floating-point operations for programmable in-memory vector acceleration | |
CN107346231A (zh) | 基于封装内查找表的可编程处理器 | |
Zhu et al. | Accelerating sparse matrix-matrix multiplication with 3D-stacked logic-in-memory hardware | |
Umesh et al. | A survey of spintronic architectures for processing-in-memory and neural networks | |
Ueyoshi et al. | QUEST: Multi-purpose log-quantized DNN inference engine stacked on 96-MB 3-D SRAM using inductive coupling technology in 40-nm CMOS | |
CN107346148A (zh) | 基于背面查找表的仿真处理器 | |
CN107346149A (zh) | 基于背面查找表的处理器 | |
Leong | Recent trends in FPGA architectures and applications | |
Akyel et al. | DRC 2: Dynamically Reconfigurable Computing Circuit based on memory architecture | |
Sim et al. | Scalable stochastic-computing accelerator for convolutional neural networks | |
CN107346352A (zh) | 基于封装内查找表的仿真处理器 | |
He et al. | Accelerating low bit-width deep convolution neural network in MRAM | |
Sim et al. | Nid: processing binary convolutional neural network in commodity dram | |
Sarma et al. | Quantum gate implementation of a novel reversible half adder and subtractor circuit | |
Lin et al. | SRAM-based NATURE: A dynamically reconfigurable FPGA based on 10T low-power SRAMs | |
Yang et al. | Interleaved logic-in-memory architecture for energy-efficient fine-grained data processing | |
Singh et al. | Cidan-xe: Computing in dram with artificial neurons | |
US11211115B2 (en) | Associativity-agnostic in-cache computing memory architecture optimized for multiplication | |
Li et al. | Toward energy-efficient sparse matrix-vector multiplication with near STT-MRAM computing architecture | |
Burr | Digital neurochip design | |
Angizi et al. | Deep neural network acceleration in non-volatile memory: A digital approach | |
US20230385624A1 (en) | Computing in memory with artificial neurons | |
Andrews | A systolic SBNR adaptive signal processor | |
Santhosh et al. | Energy efficient arithmetic full adders using various technology nodes |
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 |