用于实现至少两类函数的处理器的制作方法

文档序号:12946581阅读:116来源:国知局
本发明涉及集成电路领域,更确切地说,涉及处理器。
背景技术
::传统处理器采用基于逻辑的计算(logic-basedcomputation,简称为lbc),它主要通过逻辑电路(如与非门等)来实现数学函数。纯逻辑电路适合实现算术运算(如加法、减法和乘法),但不适合非算术函数(如初等函数、特殊函数等)的实现。传统处理器支持数量有限的基本非算术函数(如基本代数函数、基本超越函数)。这些函数通过算术运算和查找表(look-uptable,简称为lut)的组合来实现,它们被称为内置函数。例如:美国专利us5,954,787(发明人:eun;授权日:1999年9月21日)披露了一种利用lut实现正弦/余弦(sine/cosine)函数的方法;美国专利us9,207,910(发明人:azadet;授权日:2015年12月8日)披露了一种利用lut实现幂函数的方法。图1列出英特尔公司的itanium处理器(ia-64)能实现的所有内置函数(参考harrison等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。ia-64处理器共支持7种内置函数,每种内置函数均使用相对较小的lut(从0到24kb),并需要进行相对较多的泰勒级数(5阶到22阶)计算。传统处理器有一个问题:它们均使用同一类存储器(如mask-rom)来存储不同函数的lut。在一些应用中,部分函数属于常用函数,另一部分函数属于非常用函数,用mask-rom来存储非常用函数的lut过于浪费。在另一些应用中,部分函数需要高速实现,另一部分函数不需要高速实现,采用高速存储器来存储非高速函数的lut也过于浪费。技术实现要素:本发明的主要目的是提出一种根据复用度、成本和速度要求优化数学函数的实现。本发明的另一目的是在一处理器中同时实现常用函数和非常用函数。本发明的另一目的是在一处理器中同时实现高速函数和非高速函数。为了实现这些以及别的目的,本发明提出一种能实现至少两类函数的处理器,它采用“基于存储的计算”(memory-basedcomputation,简称为mbc)。mbc主要通过查表来实现计算。虽然大多数mbc仍需要进行算术运算,由于mbc使用的查找表(lut)比lbc更大,mbc仅需使用较少的多项式展开(如泰勒级数)。在mbc中,大部分计算通过查表完成,少部分计算通过算术运算实现。为了增加复用度、降低成本和提高性能,数学函数可以进一步细分,每种细分法对应于一种处理器。这些处理器用不同种类的存储器来存储与不同种类函数相关的lut。在第一种细分法中,数学函数被分为常用函数和非常用函数。其中,常用函数经常使用,如基本代数函数和/或基本超越函数等;非常用函数指使用频繁度低于常用函数的函数,如特殊函数等。与第一种细分法对应的第一种处理器含有一固定ltc和一可写ltc:与常用函数存储相关的lut存储在固定ltc中,固定ltc含有至少一印录存储阵列,印录存储阵列存储的lut是在处理器生产过程中写入的;与非常用函数相关的lut存储在可写ltc中,可写ltc含有至少一可写存储阵列,可写存储阵列存储的lut是在处理器出厂后写入的。由于可写存储阵列中的lut可以在使用现场写入、甚至可以被擦除后重新写入,处理器在出厂后也可以根据用户需求实现所需函数,故具有较大适用范围。相应地,本发明提出一用于实现至少常用函数和非常用函数的第一种处理器(300),其特征在于包括:一固定查找表电路(ltc)(170a),该固定ltc(170a)含有至少一印录存储阵列并存储与一第一函数相关的第一查找表(lut),该第一lut是在该处理器(300)生产过程中写入的;一可写ltc(170b),该可写ltc(170b)含有至少一可写存储阵列并存储与一第二函数相关的第二lut,该第二lut是在该处理器(300)出厂后写入的。在第二种细分法中,函数被分为高速函数和非高速函数。其中,高速函数要求以较高速度实现,而非高速函数不要求以较高速度实现。与第二种细分法对应的第二种处理器含有一二维ltc和一三维ltc:与高速函数相关的ltc存储在二维ltc中,二维ltc含有至少一二维存储阵列,二维存储阵列中的存储元位于半导体衬底表面,它们分布在一个二维平面上;与非高速函数相关的ltc存储在三维ltc中,三维ltc含有至少一三维存储阵列,三维存储阵列中的存储元相互堆叠,它们分布在一个三维空间中。由于二维存储阵列基于单晶半导体材料,其读延迟较低,它适合实现高速函数。另一方面,由于三维存储阵列不占衬底、其单位存储容量的成本低于二维存储阵列,故用三维存储阵列实现非高速函数成本较低。将与函数相关的lut分别存储在二维存储阵列和三维存储阵列中可以在保证性能的前提下降低成本。相应地,本发明还提出一用于实现至少高速函数和非高速函数的第二种处理器,其特征在于包括:一半导体衬底(0);一二维ltc(170c),该二维ltc(170c)含有一二维存储阵列并存储一与第一函数相关的第一查找表(lut),该二维存储阵列位于该衬底(0)中;一三维ltc(170c),该三维ltc(170c)含有一三维存储阵列并存储一与第二函数相关的第二lut,该三维存储阵列堆叠于该衬底(0)上方。附图说明图1列出英特尔itanium(ia-64)处理器支持的所有超越函数(现有技术)。图2比较各种存储器的特性。图3a是一种典型的、基于mbc的处理器之简要电路框图;图3b是一种实现一单精度函数、基于mbc的处理器之电路框图;图3c列出实现各种精度函数所需的查找表容量和泰勒级数展开项。图4是一实现至少一常用函数和一非常用函数的第一种处理器之电路框图。图5是一实现至少一高速函数和一非高速函数的第二种处理器之电路框图。图6a-图6d是第二种处理器的四个例子之电路框图。图7a-图7b是第二种处理器的两个例子之顶视图;图7c是其截面图。注意到,这些附图仅是概要图,它们不按比例绘图。为了显眼和方便起见,图中的部分尺寸和结构可能做了放大或缩小。在不同实施例中,相同的符号一般表示对应或类似的结构。符号“/”表示“和/或”的关系。具体实施方式本发明提出一种能实现至少两类函数的处理器,它采用“基于存储的计算”(memory-basedcomputation,简称为mbc)。mbc主要通过查表来实现计算。虽然大多数mbc仍需要进行算术运算,由于mbc使用的查找表(lut)比lbc更大,mbc仅需使用较少的多项式展开(如泰勒级数)。在mbc中,大部分计算通过查表完成,少部分计算通过算术运算实现。查找表电路(ltc)可以含有各种存储阵列。基于其存储元的编程机制,存储阵列可以分为印录存储阵列和可写存储阵列。印录存储阵列存储的信息是在工厂生产过程中采用印刷的方式录入的。这些信息是永久固定的,出厂后不能改变。其数据录入机制可以是掩膜编程(以形成mask-rom)、纳米压印法(nano-imprint)、电子束扫描曝光(e-beamlithography)、duv扫描曝光、激光扫描曝光(laserprogramming)等。可写存储阵列存储的信息采用电方式编程录入,它包括otp、sram、dram、eprrom、eeprom和闪存等。其中,otp为一次编程,sram、dram、eprom、eeprom和闪存为多次编程。基于其存储元的分布方式,存储阵列可以分为二维存储阵列(又称为平面存储阵列)和三维存储阵列。二维存储阵列的存储元位于半导体衬底表面,它们分布在一个二维平面上,即存储元的晶体管和/或二极管都形成在同一衬底中。三维存储阵列的存储元相互堆叠,它们分布在一个三维空间中,即存储元的晶体管和/或二极管都形成在衬底上方,不占用衬底面积。二维存储阵列含有二维印录存储阵列和二维可写存储阵列;三维存储阵列含有三维印录存储阵列(3-dprintedmemory,简称为3d-p)(参见中国专利201280042212.5)和三维可写存储阵列(3-dwritablememory,简称为3d-w)(又称为三维电编程只读存储器3d-eprom,参见中国专利98119572.5)。三维可写存储阵列的例子包括3d-otp、3d-xpoint和3d-nand等。图2比较各种存储器的速度和存储元面积等特性。sram为一种二维可写存储器,其读延迟~1ns,存其储元占有~120f2的面积。mask-rom为一种印录存储器,其读延迟~2ns,存其储元占有~30f2的面积。edram(嵌入式dram)为一种可写存储器,其读延迟~6ns,存其储元占有~60f2的面积。nor闪存为一种可写存储器,其读延迟~30ns,存其储元占有~10f2的面积。nand闪存是一种可写存储器,其读延迟~1us,其存储元占有~5f2的面积。上述五种存储器(sram、mask-rom、dram、nor和nand)为二维存储器。3d-p为印录存储器,其读延迟~10ns,其存储元占有~4f2的面积;3d-w为可写存储器,其读延迟~50ns,其存储元占有~4f2的面积。这两种存储器(3d-p和3d-w)为三维存储器。图3a表示一种典型的、基于mbc的处理器300,它含有一逻辑电路100和一存储电路200。逻辑电路100包括一预处理电路180r和一后处理电路180t,存储电路200包括至少一ltc170。ltc170含有至少一存储阵列,它存储与至少部分该函数相关的lut。预处理电路180r将函数的自变量x150转换为ltc170的地址a160a;后处理器180t将从ltc170中的读出数据d160d转换为函数值y的输出190。自变量x的一部分r可以在被预处理电路180r处理之前送至后处理电路180t作为后端处理的一个输入,也可以在被预处理电路180r处理之后(即地址a的一部分)送至后处理器180t。图3b表示一种实现一单精度函数y=f(x)的、基于mbc的处理器300。ltc170含有两个ltc170q、170r,其容量均为2mb(16位输入、32位输出),并分别存储函数值d1=f(a)和函数的一阶导数值d2=f’(a)。算术逻辑电路(alc)180含有预处理电路180r(主要含有一地址缓冲区)和后处理电路180t(含有一加法器180a和一乘法器180m)。在计算时,该处理器300的输入为32位自变量x150(x31…x0);预处理电路180r将其前16位(x31…x16)提取出来作为ltc170q、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)少很多。图3c列出实现各种精度函数所需的lut容量和泰勒级数。该实施例采用定义域缩小法并将lut容量限制在mb级(参考harrison等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。半精度(16位)计算使用的lut容量为216×16=1mb,这时不需要计算任何泰勒级数;单精度(32位)计算使用的lut容量为216×32×2=4mb,这时需要计算1阶泰勒级数;双精度(64位)计算使用的lut容量为216×64×3=12mb,这时需要计算2阶泰勒级数;扩展双精度(80位)计算使用的lut的容量为216×80×4=20mb,这时需要计算3阶泰勒级数。很明显,为了降低lut容量,还可以采用其它lut和泰勒级数的组合。除了初等函数以外,图3a-图3b中的实施例还能实现各种高等函数,如特殊函数等。特殊函数在数学分析、泛函分析、物理研究、工程应用中有着举足轻重的地位。许多特殊函数是微分方程的解或基本函数的积分。特殊函数的例子包括伽玛函数、贝塔函数、贝塞尔函数、勒让德函数、椭圆函数、lame函数、mathieu函数、黎曼泽塔函数、菲涅耳积分等。计算单元300的出现将简化特殊函数的计算,助推其在科学计算中的应用。为了增加复用度、降低成本和提高性能,数学函数可以进一步细分,每种细分法对应于一种处理器。这些处理器用不同种类的存储器来存储与不同种类函数相关的lut。在第一种细分法中,数学函数被分为常用函数和非常用函数。其中,常用函数经常使用,如基本代数函数和/或基本超越函数等;非常用函数指使用频繁度低于常用函数的函数,如特殊函数等。图4表示一与第一种细分法对应的、实现至少一常用函数和一非常用函数的第一种处理器300。它包括一存储电路200和一逻辑电路100。存储电路200含有一固定ltc170a(含输入150a和输出160a)和一可写ltc170b(含输入150b和输出160b);逻辑电路100包括一alc180。固定ltc170a用于实现一常用函数,它存储与该常见函数相关的lut,并含有一印录存储阵列,印录存储阵列存储的lut是在处理器300生产过程中写入的。可写ltc170b实现一非常用函数,它存储与该非常见函数相关的lut,并含有一可写存储阵列,可写存储阵列存储的lut是在处理器300出厂后写入的。由于可写存储阵列中的lut可以在使用现场写入、甚至可以擦除后重新写入,处理器300在出厂后可以根据用户需求实现所需函数,故具有较大适用范围。alc180与ltc170a、170b耦合,并对其结果160a、160b做算术运算(如进行多项式插值),再将结果送到输出190。第一处理器300的一个例子含有一二维固定ltc和一二维可写ltc,其存储元均位于半导体衬底表面。其中,二维固定ltc存储与常用函数相关的lut,二维可写ltc存储与非常用函数相关的lut。第一处理器300的另一个例子含有一三维固定ltc和一三维可写ltc,其存储元均相互堆叠。其中,三维固定ltc存储与常用函数相关的lut,三维可写ltc存储与非常用函数相关的lut。在第二种细分法中,函数被分为高速函数和非高速函数。其中,高速函数要求以较高速度实现,而非高速函数不要求以较高速度实现。图5表示一种与第二种细分法对应的、实现至少一高速函数和一非高速函数的第二种处理器300。它包括一存储电路200和一逻辑电路100。存储电路200含有一二维ltc170c(含输入150c和输出160c)和一三维ltc170d(含输入150d和输出160d);逻辑电路100包括一alc180。二维ltc170c用于实现一高速函数,它含有一二维存储阵列(基于单晶材料),该二维ltc170c存储与该高速函数相关的lut。三维ltc170c实现一非高速函数,它含有一三维存储阵列(基于非单晶材料),该三维ltc170c存储与该非高速函数相关的lut。由于二维存储阵列基于单晶半导体材料,其读延迟较低,它适合实现高速函数。另一方面,由于三维存储阵列的存储元不占衬底面积,它适合与alc180等实现三维集成,从而降低处理器300的整体成本。alc180与ltc170c、170d耦合,它对其结果160c、160d做算术运算(如进行多项式插值),并将结果送到输出190。图6a-图6d披露了第二处理器300的四个例子。在图6a中,二维ltc170c为一二维固定ltc170aa,它用于实现高速、常用函数;三维ltc170d为一三维印录ltc170ab,它用于实现非高速、常用函数。在图6b中,二维ltc170c为一二维固定ltc170ba,它用于实现高速、常用函数;三维ltc170d为一三维可写ltc170bb,它用于实现非高速、非常用函数。在图6c中,二维ltc170c为一二维可写ltc170ca,它用于实现高速、非常用函数;三维ltc170d为一三维固定ltc170cb,它用于实现非高速、常用函数。在图6d中,二维ltc170c为一二维可写ltc170da,它用于实现高速、非常用函数;三维ltc170d为一三维可写ltc170db,它用于实现非高速、非常用函数。很明显,处理器300可以含有更多ltc,以实现各种函数的组合。相对于二维存储阵列,三维存储阵列具有一显著优势:由于其存储元不占衬底面积,三维存储阵列可以集成在逻辑电路或二维存储阵列上,形成三维集成。图7a-图7b表示三维集成的两个实施例。在图7a的实施例中,三维存储阵列170d堆叠在alc180之上。在图7b的实施例中,三维存储阵列170d堆叠在二维存储阵列170c之上。在图7a-图7b中,由于三维存储阵列170d堆叠在衬底上,它不是衬底的一部分,在此仅用虚线表示其边界。图7c的截面图进一步揭示的三维存储阵列170d与衬底0的关系。二维存储阵列170c和/或alc180是衬底电路0k的一部分,三维存储阵列170d是第一存储层16a的一部分,第一存储160a堆叠在衬底电路0k上方。三维集成能减少芯片面积,并增加处理器300能实现的函数数目。处理器300具有极强的科学计算能力,它可以应用到各种处理器中,包括:中央处理器(cpu)、现场编程门阵列(fpga)、数码信号处理器(dsp)、图像处理器(gpu)、视频处理器(videoprocessor)、加密/解密处理器、虚拟现实(vr)处理器、增强现实(ar)处理器、混合现实(mr)处理器、和/或人工智能(ai)处理器等。应该了解,在不远离本发明的精神和范围的前提下,可以对本发明的形式和细节进行改动,这并不妨碍它们应用本发明的精神。因此,除了根据附加的权利要求书的精神,本发明不应受到任何限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1