本发明涉及集成电路领域,更确切地说,涉及用于模拟和仿真的处理器。
背景技术:
::传统处理器采用基于逻辑的计算(logic-basedcomputation,简称为lbc),它主要通过逻辑电路(如与非门等)来计算。逻辑电路适合实现算术运算(如加法、减法和乘法),但对于非算术函数(如初等函数、特殊函数等)无能为力。非算术函数的高速高效实现面临巨大的挑战。在传统处理器中,仅少量基本非算术函数(如基本代数函数、基本超越函数)能通过硬件直接实现,这些函数被称为内置函数(built-infunctions)。内置函数一般通过算术运算和查找表(lut)的组合来实现。实现内置函数的例子很多,例如:美国专利us5,954,787(发明人:eun;授权日:1999年9月21日)披露了一种利用lut实现正弦/余弦(sine/cosine)函数的方法;美国专利us9,207,910(发明人:azadet;授权日:2015年12月8日)披露了一种利用lut实现幂函数的方法。图1aa具体描述了内置函数的一种实现方法。传统处理器00x通常含有逻辑电路100x和存储电路200x。逻辑电路100x含有算术逻辑单元(alu),它用于实现算术运算。存储电路200x含有查找表电路(lut)。为了达到足够的计算精度,需将代表内置函数的多项式展开到足够高的阶数。这时,lut200x存储多项式系数,alu100x计算相应的多项式。由于alu100x和lut200x并肩排列在同一平面上(均形成在衬底00s中),这种集成是一种二维集成。二维集成对处理器的制造工艺要求较高。存储电路200x由存储晶体管构成,逻辑电路100x由逻辑晶体管构成。熟悉本专业的人士都知道,存储晶体管和逻辑晶体管的性能指标有很大不同。比如说,存储晶体管更注重降低漏电流,而逻辑晶体管更注重增加导通电流。在同一衬底上00s的同一表面上同时形成高性能的存储晶体管和逻辑晶体管对于制造工艺来说是一种挑战。二维集成还会限制计算密度和计算复杂度的进一步发展。计算正向更高的计算密度和更大的计算复杂度发展。计算密度是指单位芯片面积的计算能力(如每秒的浮点数运算次数),它是平行计算的一个重要指标。计算复杂度是指内置函数的种类和数量,它是科学计算的一个重要指标。由于采用二维集成,lut200x的存在将增加传统处理器00x的芯片面积,降低其计算密度,这对平行计算不利。同时,在传统处理器00x的设计过程中,由于alu100x是传统处理器00x的核心部件并占用了大部分芯片面积,故lut200x能利用的芯片面积有限。因此,传统处理器00x仅支持少量内置函数。图1ab列出英特尔公司的itanium处理器(ia-64)能实现的所有内置超越函数(参考harrison等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。ia-64处理器共支持7种超越函数,每种超越函数使用了相对较小的lut(从0到24kb),并需要进行相对较多的泰勒级数(5阶到22阶)计算。一个处理器支持的所有内置函数组成一内置函数组。对于传统处理器来说,其内置函数组含有~10种内置函数。这个内置函数组(包含~10种内置函数)就是现代科学计算的基础。科学计算需要强大的计算能力来增进人类对自然和社会的认识、或解决工程问题,它在计算数学、计算物理、计算化学、计算生物、工程计算、计算经济、计算金融等计算领域有广泛应用。传统的科学计算框架含三个层次:基础层、函数层和模型层。基础层包含各种硬件能直接实现的内置函数;函数层包含各种硬件不能直接实现的数学函数(如非基本非算术函数);模型层则包括被仿真系统及其子系统的数学模型。在本说明书中,系统或子系统的数学模型是指用数学语言来描述被仿真系统(如放大器)的性能(如放大器的输入-输出特性)或被模拟子系统(如放大器中的晶体管)的性能(如晶体管的输入-输出特性)。数学模型可以是测量数据(包括原始测量数据或平滑后的测量数据等),也可以是从原始测量数据提炼出来的数学表达式。函数层中的数学函数以及模型层中的数学模型均需由软件实现。函数层需要做一次软件分解:数学函数由软件分解成内置函数的组合,再由硬件实现内置函数并进行算术运算。模型层需要做两次软件分解:数学模型首先被分解为数学函数,然后数学函数再被分解成内置函数。很明显,软件实现(如数学函数、数学模型)比硬件实现(如内置函数)慢且低效。而且,软件分解次数越多,延时和能耗将更差(如数学模型由于需要两次软件分解,它比数学函数更为耗时耗能)。数学模型的计算复杂度非常惊人。图1ba-图1bb披露了一个例子。在此,被仿真系统是一放大电路500,它含有两个子系统:一电阻510和一晶体管520(图1ba)。其中,晶体管520的各种数学模型(如mos3、bsim3、bsim4、psp等)均建立于传统处理器支持的内置函数组上,即晶体管模型可表达为各种内置函数的组合。由于内置函数种类有限,即使是计算晶体管520的一个电流点也会产生很大计算量(图1bb)。举例说,bsim4v3.0晶体管模型涉及222次加法、286次乘法、85次除法、16次平方根运算、24次指数运算和19次对数运算。很大计算量使模拟和仿真低速低效。技术实现要素:本发明的主要目的是实现高速高效的仿真和模拟。本发明的另一目的是减少系统仿真所需的时间。本发明的另一目的是减少系统仿真所需的能耗。本发明的另一目的是提供一种能实现更高计算复杂度的处理器。本发明的另一目的是提供一种能实现更高计算密度的处理器。为了实现这些以及别的目的,本发明提出一种基于背面查找表(backsidelut,简称为bs-lut)的处理器(bs-lut处理器)。bs-lut处理器芯片含有一逻辑电路和一存储电路。其中,逻辑电路含有至少一算术逻辑电路(arithmeticlogiccircuit,简称为alc);存储电路含有至少一查找表(look-uptable,简称为lut)。alc和lut分别形成在处理器衬底的正反两面,它们之间通过穿透硅片通道(tsv)进行电耦合。由于位于衬底背面,lut又被称为背面查找表电路(bs-lut)。bs-lut存储与一函数相关的数据,alc对该函数相关数据进行算术运算。bs-lut处理器采用“基于存储的计算”(memory-basedcomputation,简称为mbc),它主要通过查表来实现计算。bs-lut处理器中bs-lut的存储容量远高于传统处理器的lut。虽然大多数mbc仍需要进行算术运算,通过使用较大的bs-lut作为计算的出发点,mbc仅需使用较少的多项式展开(如泰勒级数展开)。在mbc中,大部分计算通过bs-lut完成,少部分计算通过alc实现。这种将alc和lut形成衬底正反两面的集成方式被称为双面集成。双面集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00x的面积是alu100x和lut200x之和。采用双面集成后,lut从边上移到衬底背面,bs-lut处理器变小,计算密度加强。此外,传统处理器00x中lut200x的总容量小于100kb,而bs-lut处理器中bs-lut的总容量可达到100gb;单个bs-lut处理器就可支持上万个内置函数(包括多种复杂数学函数),远多于传统处理器00x。此外,由于构成alc的逻辑晶体管和构成lut的存储晶体管分别形成在衬底的不同表面上,它们的制造工艺可分别优化。内置函数的大量增加将使传统科学计算的框架(包括基础层、函数层和模型层)扁平化。过去仅能在基础层用硬件实现函数;现在,不仅函数层的数学函数能直接被硬件实现,模型层的数学模型也能直接被硬件描述。在函数层,数学函数通过function-by-lut法实现(即对lut存储的函数相关数据进行插值);在模型层,数学模型通过model-by-lut法实现(即对lut存储的模型相关数据进行插值)。数学函数和数学模型的高速高效实现将推动科学计算的变革。为了提高仿真和模拟的速度和效率,本发明提出一种基于bs-lut的仿真处理器(bs-lut仿真处理器),它是一种用于系统仿真的bs-lut处理器。被仿真系统(如放大器500)含有至少一子系统(如晶体管520)。bs-lut仿真处理器含有一逻辑电路和一存储电路。存储电路中的lut存储该子系统(如晶体管520)的数学模型,逻辑电路中的alc对该数学模型进行算术运算。逻辑电路和存储电路位于同一芯片的不同表面上。相应地,本发明提出一种仿真处理器(300),该仿真处理器(300)用于仿真一含有一子系统(520)的系统(500),该仿真处理器(300)的特征在于含有:一半导体衬底(0s),该半导体衬底(0s)含有一正面(0f)和一背面(0b);该衬底背面(0b)含有至少一查找表(170),该查找表(170)存储的数据与该子系统(520)的一数学模型相关;该衬底正面(0f)含有至少一算术逻辑电路(180),该算术逻辑电路(180)对该查找表(170)存储的数据进行算术运算;多个穿透该半导体衬底(0s)、并将该查找表(170)和该算术逻辑电路(180)电耦合的穿透硅片通道(tsv)(160)。附图说明图1aa是一传统处理器的透视图(现有技术);图1ab列出英特尔itanium(ia-64)处理器支持的所有超越函数(现有技术);图1ba是一放大电路的电路图;图1bb列出各种晶体管模型的计算量(现有技术)。图2a是一种典型bs-lut处理器的简要电路框图;图2b是其正面透视图;图2c是其背面透视图。图3a是一种bs-lut处理器的截面图;图3b是其正面电路布局图;图3c是其背面电路布局图。图4a是一种实现一数学函数的bs-lut处理器之简要电路框图;图4b是一种实现一单精度数学函数的bs-lut处理器之电路框图;图4c列出实现各种精度数学函数所需的查找表容量和泰勒级数展开项。图5是一种实现复合函数的bs-lut处理器之电路框图。图6是一种bs-lut仿真处理器的电路框图。注意到,这些附图仅是概要图,它们不按比例绘图。为了显眼和方便起见,图中的部分尺寸和结构可能做了放大或缩小。在不同实施例中,数字后面的字母后缀表示同一类结构的不同实例;相同的数字前缀表示相同或类似的结构。“/”表示“和”或“或”的关系。在本发明中,“查找表”和“查找表电路”均被缩写为lut。根据上下文,lut代表查找表或查找表电路。具体实施方式图2a是一种典型的、基于背面查找表(backsidelut,简称为bs-lut)的处理器(bs-lut处理器)300的简要电路框图;图2b是其正面透视图;图2c是其背面透视图。bs-lut处理器300有一个或多个输入150、以及一个或多个输出190。bs-lut处理器300形成在一半导体衬底0s上,该衬底0s含有正面0f(+z方向)和背面0b(-z方向)。bs-lut处理器芯片300含有一逻辑电路100和一存储电路200。其中,逻辑电路100含有至少一算术逻辑电路(arithmeticlogiccircuit,简称为alc)180,它形成在衬底0s的正面0f;存储电路200含有至少一查找表(look-uptable,简称为lut)170,它形成在衬底0s的背面0b。alc180和lut170通过穿透硅片通道(tsv)160进行电耦合。由于位于衬底背面,lut170又被称为背面查找表电路(bs-lut)。bs-lut170用于存储函数相关数据,alc180对函数相关数据进行算术运算。由于bs-lut170与alc180处于不同表面上,在说明书附图中,bs-lut170用虚线表示,alc180用实线表示。图3a是bs-lut处理器300的截面图;图3b是其正面电路布局图;图3c是其背面电路布局图。bs-lut处理器300含有多个穿透衬底0s的穿透硅片通道(tsv)160a-160f…(图3a)。bs-lut处理器300的正面0f含有alc180,包括alc构件180a-180d…(图3b)。这些alc构件180a-180d分别与tsv160a-160d耦合。bs-lut处理器300的背面0b含有bs-lut170,包括lut阵列170a-170f…(图3c)。在本说明书中,一lut阵列是所有共享了至少一条地址线的存储元之集合(包括其周边电路)。lut阵列170a-170f分别与tsv160a-160d耦合。alc180通过tsv160a-160f从bs-lut170中读取数据,并进行算术运算。bs-lut170可采用ram和/或rom。ram包括sram和dram等。rom包括maskrom、otp、eprom、eeprom和闪存等。闪存可以分为nor或nand,nand还可以分为横向nand和纵向nand(verticalnand)。另一方面,alc180可以含有加法器、乘法器、和/或乘加器,它可以用于实现整数运算、定点数运算、或浮点数运算。bs-lut处理器300采用“基于存储的计算”(mbc),它主要通过查表来实现计算。bs-lut处理器300中bs-lut170的存储容量远高于传统处理器00x的lut200x。虽然大多数mbc仍需要进行算术运算,通过使用较大的bs-lut170作为计算的出发点,mbc仅需使用较少的多项式展开(如泰勒级数展开)。在mbc中,大部分计算通过bs-lut170完成,少部分计算通过alc180实现。这种将alc180和lut170形成衬底0s正反两面的集成方式被称为双面集成。双面集成能提高计算密度和计算复杂度。采用传统的二维集成,传统处理器00x的面积是lut200x和alu100x之和。采用双面集成后,lut从边上移到衬底背面,bs-lut处理器300的面积变小,计算密度加强。此外,传统处理器00x中lut的总容量小于100kb,而bs-lut处理器300中lut的总容量可达到100gb;单个bs-lut处理器300就可支持上万个内置函数(包括多种复杂数学函数),远多于传统处理器00x。此外,双面集成还能提高bs-lut170和alc180之间的数据传输带宽。由于bs-lut170和alc180距离较近且tsv160数量较多,它们之间的数据传输带宽远高于传统处理器00x中lut200x和alu100x之间的带宽。最后,双面集成对制造工艺角度也有益处。由于构成alc180的逻辑晶体管和构成lut170的存储晶体管分别形成在衬底0s的不同表面(0f、0b)上,它们的制造工艺可分别优化。内置函数的大量增加将使传统科学计算的框架(包括基础层、函数层和模型层)扁平化。过去仅能在基础层用硬件实现函数;现在,不仅函数层的数学函数能直接被硬件实现,模型层的数学模型也能直接被硬件描述。在函数层,数学函数通过function-by-lut法实现(即对lut存储的函数相关数据进行插值,图4a-图5);在模型层,数学模型通过model-by-lut法实现(即对lut存储的模型相关数据进行插值,图6)。数学函数和数学模型的高速高效实现将推动科学计算的变革。图4a表示一种实现一数学函数y=f(x)的典型bs-lut处理器300。其逻辑芯片100含有一预处理电路180r和至少一后处理电路180t,其存储芯片200含有至少一bs-lut170,它存储该数学函数的相关数据。预处理电路180r将函数的自变量x150转换为bs-lut170的地址a160a;后处理器180t将从bs-lut170中读出的数据d160d转换为函数值y的输出190。在该实施例中,预处理电路180r和后处理电路180t形成在逻辑芯片100中。在其他实施例中,至少一部分预处理电路180r和/或后处理电路180t也可以形成在存储芯片200中。自变量x的一部分r可以在被预处理电路180r处理之前送至后处理电路180t作为后端处理的一个输入,也可以在被预处理电路180r处理之后(即地址a的一部分)送至后处理器180t。图4b表示一种采用function-by-lut法实现单精度数学函数y=f(x)的bs-lut处理器300。bs-lut170含有两个lut170q、170r,其容量均为2mb(16位输入、32位输出),并分别存储函数值d1=f(a)和函数的一阶导数值d2=f’(a)。alc180含有预处理电路180r(主要含有一地址缓冲区)和后处理电路180t(含有一加法器180a和一乘法器180m)。芯片间连接160在bs-lut170和alc180之间传输数据。在计算函数时,该bs-lut处理器300的输入为32位自变量x150(x31…x0);预处理电路180r将其前16位(x31…x16)提取出来作为lut170q、170r的16位地址输入a,再将其后16位(x15…x0)提取出来作为16位地址余量r送到后处理电路180t;后处理电路180t通过多项式插值计算32位输出值y190。在本实施例中,多项式插值是一阶泰勒级数: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等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。半精度(16位)计算使用的bs-lut170容量为216×16=1mb,这时不需要计算任何泰勒级数;单精度(32位)计算使用的bs-lut170容量为216×32×2=4mb,这时需要计算1阶泰勒级数;双精度(64位)计算使用的bs-lut170容量为216×64×3=12mb,这时需要计算2阶泰勒级数;扩展双精度(80位)计算使用的bs-lut170的容量为216×80×4=20mb,这时需要计算3阶泰勒级数。作为一个比较,为实现同样的双精度(64位)计算,英特尔的itanium处理器需要计算多达22阶泰勒级数。除了初等函数以外,图4a-图4b中的实施例还能实现各种高等函数,如特殊函数等。特殊函数在数学分析、泛函分析、物理研究、工程应用中有着举足轻重的地位。许多特殊函数是微分方程的解或基本函数的积分。特殊函数的例子包括伽玛函数、贝塔函数、贝塞尔函数、勒让德函数、椭圆函数、lame函数、mathieu函数、黎曼泽塔函数、菲涅耳积分等。bs-lut处理器300的出现将简化特殊函数的计算,助推其在科学计算中的应用。图5表示一种采用function-by-lut法实现一复合函数的bs-lut处理器300,它用于实现复合函数y=exp[k*log(x)]=xk。其bs-lut170含有两个lut170s、170t,它们分别存储log()和exp()的函数值。其alc180含有一乘法器180m。其tsv160传输160s和160t等。在运算过程中,输入变量x被用作lut170s的地址150;lut170s的输出log(x)160s在乘法器180m处与幂参数k相乘;乘积160t作为地址送到lut170t中;lut170t的输出190为y=xk。为了提高仿真和模拟的速度和效率,本发明提出一种基于bs-lut的仿真处理器(bs-lut仿真处理器),它是一种用于系统仿真的bs-lut处理器。被仿真系统(如放大器500)含有至少一子系统(如晶体管520)。该仿真处理器含有一逻辑电路和一存储电路。存储电路中的bs-lut存储该子系统(如晶体管520)的一数学模型,逻辑电路中的alc对该数学模型进行算术运算。逻辑电路和存储电路位于同一芯片中。图6表示一种bs-lut仿真处理器300。该bs-lut仿真处理器300用于对放大电路500进行仿真,它采用model-by-lut法。bs-lut170存储与晶体管520的数学模型。alc180含有一加法器180a和一乘法器180m。芯片间连接160传输bs-lut170的输出。在仿真过程中,输入电压vin被用作bs-lut170的地址150;读出数据160为漏电流id;乘法器180m将id与电阻510的负值-r相乘;所得结果(-r*id)在加法器180a处与电源电压vdd相加,得到输出电压值vout190。bs-lut170可以存储多种数学模型。在第一实施例中,数学模型是原始测量数据。一个例子是晶体管520的漏电流-栅源电压(id-vgs)特性曲线。在第二实施例中,数学模型是平滑后的测量数据。原始测量数据可以通过纯数学方法进行平滑(如通过最佳拟合模型),也可以通过物理模型来辅助平滑(如bsim4晶体管模型)。在第三实施例中,数学模型不仅包含晶体管520的测量值,还包括测量值的导数。比如说,数学模型不仅包括晶体管520的电流值(id-vgs),还包括其跨导值(gm-vgs)。与图4c类似,多项式插值(利用测量值的导数)能在合理大小的bs-lut170前提下提高模型精度。仿真处理器采用的model-by-lut法带来很多优势。由于不需两次软件分解(从数学模型到数学函数、从数学函数到内置函数),它能节省大量的计算时间和能耗。model-by-lut法甚至比function-by-lut法需要的查找表还小。由于晶体管模型(如bism4)需要数百个模型参数,如采用function-by-lut法,则晶体管模型的中间函数需要大量的查找表。如果跳过function-by-lut(即跳过晶体管模型及相关的中间函数),则晶体管性能可以用三个测量参数描述(包括栅源电压vgs、漏源电压vds、体源电压vbs)。这只需较小的查找表。应该了解,在不远离本发明的精神和范围的前提下,可以对本发明的形式和细节进行改动,这并不妨碍它们应用本发明的精神。例如说,处理器可以是中央处理器(cpu)、数字信号处理器(dsp)、图像处理器(gpu)、网络安全处理器、加密/解密处理器、编码/解码处理器、神经网络处理器、人工智能(ai)处理器等。这些处理器可以用在消费电子产品(如个人电脑、游戏机、智能手机等)中,也能用在工作站和服务器中。因此,除了根据附加的权利要求书的精神,本发明不应受到任何限制。当前第1页12当前第1页12