本發(fā)明涉及集成電路領(lǐng)域,更確切地說,涉及處理器。
背景技術(shù):
::傳統(tǒng)處理器采用基于邏輯的計(jì)算(logic-basedcomputation,簡(jiǎn)稱為lbc),它主要通過邏輯電路(如與非門等)來計(jì)算。邏輯電路適合實(shí)現(xiàn)算術(shù)運(yùn)算(如加法、減法和乘法),但對(duì)于非算術(shù)函數(shù)(如初等函數(shù)、特殊函數(shù)等)無能為力。非算術(shù)函數(shù)的高速高效實(shí)現(xiàn)面臨巨大的挑戰(zhàn)。在傳統(tǒng)處理器中,僅少量基本非算術(shù)函數(shù)(如基本代數(shù)函數(shù)、基本超越函數(shù))能通過硬件直接實(shí)現(xiàn),這些函數(shù)被稱為內(nèi)置函數(shù)(built-infunctions)。內(nèi)置函數(shù)一般通過算術(shù)運(yùn)算和查找表的組合來實(shí)現(xiàn)。實(shí)現(xiàn)內(nèi)置函數(shù)的例子很多,例如:美國(guó)專利us5,954,787(發(fā)明人:eun;授權(quán)日:1999年9月21日)披露了一種利用查找表實(shí)現(xiàn)正弦/余弦(sine/cosine)函數(shù)的方法;美國(guó)專利us9,207,910(發(fā)明人:azadet;授權(quán)日:2015年12月8日)披露了一種利用查找表實(shí)現(xiàn)冪函數(shù)的方法。圖1a具體描述了內(nèi)置函數(shù)的一種實(shí)現(xiàn)方法。傳統(tǒng)處理器00x通常含有邏輯電路100x和存儲(chǔ)電路200x。邏輯電路100x含有算術(shù)邏輯單元(alu),它用于實(shí)現(xiàn)算術(shù)運(yùn)算。存儲(chǔ)電路200x含有查找表電路(lut)。為了達(dá)到足夠的計(jì)算精度,需將代表內(nèi)置函數(shù)的多項(xiàng)式展開到足夠高的階數(shù)。這時(shí),lut200x存儲(chǔ)多項(xiàng)式系數(shù),alu100x計(jì)算相應(yīng)的多項(xiàng)式。由于alu100x和lut200x并肩排列在同一平面上(均形成在襯底00s中),這種集成是一種二維集成。二維集成對(duì)處理器的制造工藝要求較高。存儲(chǔ)電路200x由存儲(chǔ)晶體管構(gòu)成,邏輯電路100x由邏輯晶體管構(gòu)成。熟悉本專業(yè)的人士都知道,存儲(chǔ)晶體管和邏輯晶體管的性能指標(biāo)有很大不同。比如說,存儲(chǔ)晶體管更注重降低漏電流,而邏輯晶體管更注重增加導(dǎo)通電流。在同一襯底上00s的同一表面上同時(shí)形成高性能的存儲(chǔ)晶體管和邏輯晶體管對(duì)于制造工藝來說是一種挑戰(zhàn)。二維集成還會(huì)限制計(jì)算密度和計(jì)算復(fù)雜度的進(jìn)一步發(fā)展。計(jì)算正向更高的計(jì)算密度和更大的計(jì)算復(fù)雜度發(fā)展。計(jì)算密度是指單位芯片面積的計(jì)算能力(如每秒的浮點(diǎn)數(shù)運(yùn)算次數(shù)),它是平行計(jì)算的一個(gè)重要指標(biāo)。計(jì)算復(fù)雜度是指內(nèi)置函數(shù)的種類和數(shù)量,它是科學(xué)計(jì)算的一個(gè)重要指標(biāo)。由于采用二維集成,lut200x的存在將增加傳統(tǒng)處理器00x的芯片面積,降低其計(jì)算密度,這對(duì)平行計(jì)算不利。同時(shí),在傳統(tǒng)處理器00x的設(shè)計(jì)過程中,由于alu100x是傳統(tǒng)處理器00x的核心部件并占用了大部分芯片面積,故lut200x能利用的芯片面積有限。因此,傳統(tǒng)處理器00x僅支持少量?jī)?nèi)置函數(shù)。圖1b列出英特爾公司的itanium處理器(ia-64)能實(shí)現(xiàn)的所有內(nèi)置超越函數(shù)(參考harrison等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。ia-64處理器共支持7種超越函數(shù),每種超越函數(shù)使用了相對(duì)較小的查找表(從0到24kb),并需要進(jìn)行相對(duì)較多的泰勒級(jí)數(shù)(5階到22階)計(jì)算?;趌bc的處理器00x有一個(gè)缺陷。由于實(shí)現(xiàn)不同內(nèi)置函數(shù)使用的邏輯電路完全不同,處理器00x是完全定制的,不能通用。換句話說,一旦處理器00x的設(shè)計(jì)完成,它只能實(shí)現(xiàn)一套預(yù)先定義的內(nèi)置函數(shù)。很明顯,用戶希望用同一硬件實(shí)現(xiàn)不同計(jì)算,即實(shí)現(xiàn)計(jì)算的編程。這可以從現(xiàn)場(chǎng)可編程門陣列(fpga)中得到啟發(fā)。fpga能實(shí)現(xiàn)邏輯的編程。美國(guó)專利4,870,302(發(fā)明人:freeman;授權(quán)日:1989年9月26日)披露了一種fpga。它含有多個(gè)可編程邏輯單元(configurablelogicelement)和可編程連接(configurableinterconnect)。目前,fpga只能實(shí)現(xiàn)邏輯的編程,即同一硬件在設(shè)置信號(hào)控制下選擇性地實(shí)現(xiàn)不同的邏輯。遺憾的是,fpga尚無法實(shí)現(xiàn)計(jì)算的編程,即同一硬件在設(shè)置信號(hào)控制下選擇性地實(shí)現(xiàn)不同的計(jì)算(即實(shí)現(xiàn)不同的函數(shù))。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的主要目的是實(shí)現(xiàn)計(jì)算的編程。本發(fā)明的另一目的是實(shí)現(xiàn)計(jì)算的現(xiàn)場(chǎng)編程。本發(fā)明的另一目的是實(shí)現(xiàn)可重構(gòu)計(jì)算。本發(fā)明的主要目的是實(shí)現(xiàn)多變量函數(shù)的編程。本發(fā)明的另一目的是提供一種能實(shí)現(xiàn)更高計(jì)算復(fù)雜度的可編程處理器。本發(fā)明的另一目的是提供一種能實(shí)現(xiàn)更高計(jì)算密度的可編程處理器。本發(fā)明的另一目的是提供一種計(jì)算能力更靈活、更強(qiáng)大的現(xiàn)場(chǎng)可編程門陣列。為了實(shí)現(xiàn)這些以及別的目的,本發(fā)明提出一種基于封裝內(nèi)查找表(in-packagelut,簡(jiǎn)稱為ip-lut)的可編程處理器(ip-lut可編程處理器)。ip-lut可編程處理器含有至少一邏輯芯片和一可編程存儲(chǔ)芯片。其中,邏輯芯片含有至少一算術(shù)邏輯電路(arithmeticlogiccircuit,簡(jiǎn)稱為alc),故邏輯芯片又被稱為alc芯片;可編程存儲(chǔ)芯片含有至少一查找表電路(look-uptablecircuit,簡(jiǎn)稱為lut),故存儲(chǔ)芯片又被稱為lut芯片。lut存儲(chǔ)一函數(shù)的相關(guān)數(shù)據(jù)(如該函數(shù)的一查找表),alc對(duì)該函數(shù)相關(guān)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算。alc芯片和lut芯片位于同一封裝中,它們之間通過芯片間連接進(jìn)行電耦合。由于與alc位于同一封裝中,lut又被稱為封裝內(nèi)查找表電路(ip-lut)。此外,由于ip-lut是可編程的,因此可根據(jù)用戶需求在ip-lut中寫入所需函數(shù)的相關(guān)數(shù)據(jù),以實(shí)現(xiàn)計(jì)算的編程。ip-lut可編程處理器采用“基于存儲(chǔ)的計(jì)算”(memory-basedcomputation,簡(jiǎn)稱為mbc),它主要通過查表來實(shí)現(xiàn)計(jì)算。ip-lut可編程處理器中ip-lut的存儲(chǔ)容量遠(yuǎn)高于傳統(tǒng)處理器的lut。雖然大多數(shù)mbc仍需要進(jìn)行算術(shù)運(yùn)算,通過使用較大的ip-lut作為計(jì)算的出發(fā)點(diǎn),mbc僅需使用較少的多項(xiàng)式展開(如泰勒級(jí)數(shù)展開)。在mbc中,大部分計(jì)算通過ip-lut完成,少部分計(jì)算通過alc實(shí)現(xiàn)。ip-lut可編程處理器的使用分兩個(gè)階段:設(shè)置階段和計(jì)算階段。在設(shè)置階段,在ip-lut中寫入所需函數(shù)的相關(guān)數(shù)據(jù);在計(jì)算階段,通過在ip-lut中查找函數(shù)相關(guān)數(shù)據(jù)來實(shí)現(xiàn)計(jì)算。ip-lut可編程處理器能實(shí)現(xiàn)現(xiàn)場(chǎng)編程和可重構(gòu)計(jì)算。對(duì)于現(xiàn)場(chǎng)編程,可在使用現(xiàn)場(chǎng)將所需函數(shù)的相關(guān)數(shù)據(jù)寫入ip-lut,則ip-lut可編程處理器可在使用現(xiàn)場(chǎng)實(shí)現(xiàn)所需的函數(shù)。對(duì)于可重構(gòu)計(jì)算,不同時(shí)段在ip-lut中寫入不同函數(shù)的不同相關(guān)數(shù)據(jù)(如不同函數(shù)的查找表),則ip-lut可編程處理器可實(shí)現(xiàn)不同函數(shù)。例如,在第一時(shí)段,ip-lut存儲(chǔ)第一函數(shù)的相關(guān)數(shù)據(jù);在第二時(shí)段,ip-lut存儲(chǔ)第二函數(shù)的相關(guān)數(shù)據(jù)。這種將alc芯片和lut芯片相互堆疊在同一封裝的集成方式被稱為2.5維集成。2.5維集成能提高計(jì)算密度和計(jì)算復(fù)雜度。采用傳統(tǒng)的二維集成,傳統(tǒng)處理器00x的面積是alu100x和lut200x之和。采用2.5維集成后,lut從邊上移到頂上,ip-lut可編程處理器變小,計(jì)算密度加強(qiáng)。此外,傳統(tǒng)處理器00x中l(wèi)ut200x的總?cè)萘啃∮?00kb,而ip-lut可編程處理器中ip-lut的總?cè)萘靠蛇_(dá)到100gb;單個(gè)ip-lut可編程處理器就可支持上萬個(gè)內(nèi)置函數(shù)(包括多種復(fù)雜函數(shù)),遠(yuǎn)多于傳統(tǒng)處理器00x。此外,由于alc芯片和lut芯片為不同芯片,構(gòu)成alc的邏輯晶體管和構(gòu)成lut的存儲(chǔ)晶體管分別在不同半導(dǎo)體襯底上形成,它們的制造工藝可分別優(yōu)化。為了進(jìn)一步提高可編程度,本發(fā)明還提出一種基于ip-lut的可編程門陣列(ip-lut可編程門陣列)。它含有多個(gè)可編程計(jì)算單元、多個(gè)可編程邏輯單元和多個(gè)可編程連接??删幊逃?jì)算單元含有一ip-lut,該ip-lut含有至少一可編程存儲(chǔ)陣列,它存儲(chǔ)一函數(shù)的相關(guān)數(shù)據(jù)。由于ip-lut是可編程的,因此可以根據(jù)用戶需求,在ip-lut中寫入所需函數(shù)的相關(guān)數(shù)據(jù),以實(shí)現(xiàn)計(jì)算的編程。ip-lut可編程門陣列中的可編程邏輯單元和可編程連接與傳統(tǒng)fpga中的可編程邏輯單元和可編程連接類似。在計(jì)算過程中,非算術(shù)函數(shù)首先被分解為基本非算術(shù)函數(shù)的組合。然后針對(duì)每個(gè)基本非算術(shù)函數(shù)設(shè)置相應(yīng)的可編程計(jì)算單元,使其實(shí)現(xiàn)相應(yīng)的基本非算術(shù)函數(shù)。最后,設(shè)置可編程邏輯單元和可編程連接,以實(shí)現(xiàn)所需的非算術(shù)函數(shù)。相應(yīng)地,本發(fā)明提出一種可編程處理器(300),其特征在于含有:一可編程存儲(chǔ)芯片(200),該可編程存儲(chǔ)芯片(200)含有至少一查找表電路(170),可根據(jù)用戶需求在該查找表電路(170)中寫入一函數(shù)的相關(guān)數(shù)據(jù);一邏輯芯片(100),該邏輯芯片(100)含有至少一算術(shù)邏輯電路(180),該算術(shù)邏輯電路(180)對(duì)該查找表電路(170)中讀出的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算;多個(gè)將該可編程存儲(chǔ)芯片(200)和該邏輯芯片(100)耦合的芯片間連接(160);該可編程存儲(chǔ)芯片(200)和該邏輯芯片(100)位于同一封裝(130)內(nèi)。附圖說明圖1a是一傳統(tǒng)處理器的透視圖(現(xiàn)有技術(shù));圖1b列出英特爾itanium(ia-64)處理器支持的所有超越函數(shù)(現(xiàn)有技術(shù))。圖2a是一種典型ip-lut可編程處理器的簡(jiǎn)要電路框圖;圖2b是該ip-lut可編程處理器的透視圖。圖3a-圖3c是三種ip-lut可編程處理器的截面圖。圖4a是一種典型可編程計(jì)算單元之簡(jiǎn)要電路框圖;圖4b是一種實(shí)現(xiàn)一單精度函數(shù)的可編程計(jì)算單元之電路框圖;圖4c列出實(shí)現(xiàn)各種精度函數(shù)所需的查找表容量和泰勒級(jí)數(shù)展開項(xiàng)。圖5是一種ip-lut可編程門陣列的布局圖。圖6是圖5中ip-lut可編程門陣列實(shí)現(xiàn)一多變量函數(shù)e=a.sin(b)+c.cos(d)的設(shè)置。注意到,這些附圖僅是概要圖,它們不按比例繪圖。為了顯眼和方便起見,圖中的部分尺寸和結(jié)構(gòu)可能做了放大或縮小。在不同實(shí)施例中,數(shù)字后面的字母后綴表示同一類結(jié)構(gòu)的不同實(shí)例;相同的數(shù)字前綴表示相同或類似的結(jié)構(gòu)?!?”表示“和”或“或”的關(guān)系。在本發(fā)明中,“查找表”和“查找表電路”均被縮寫為lut。根據(jù)上下文,lut代表查找表或查找表電路。具體實(shí)施方式圖2a是一種典型的、基于封裝內(nèi)查找表(in-packagelut,簡(jiǎn)稱為ip-lut)的可編程處理器(ip-lut可編程處理器)300的簡(jiǎn)要電路框圖;圖2b是該ip-lut可編程處理器300的透視圖。ip-lut可編程處理器300有一個(gè)或多個(gè)輸入150、以及一個(gè)或多個(gè)輸出190。ip-lut可編程處理器300含有一邏輯芯片100和一可編程存儲(chǔ)芯片200。邏輯芯片100形成在第一襯底100s上,它含有至少一算術(shù)邏輯電路(alc)180,故邏輯芯片100又被稱為alc芯片??删幊檀鎯?chǔ)芯片200形成在第二襯底200s上,它含有至少一查找表電路(lut)170,故存儲(chǔ)芯片200又被稱為lut芯片。lut170存儲(chǔ)一函數(shù)的相關(guān)數(shù)據(jù)(如該函數(shù)的一查找表),alc180對(duì)該函數(shù)相關(guān)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算。alc芯片100和lut芯片200位于同一封裝中,它們之間通過芯片間連接160電耦合。由于與alc180位于同一封裝中,lut170又被稱為封裝內(nèi)查找表電路(ip-lut)。此外,由于ip-lut170是可編程的,因此可根據(jù)用戶需求在ip-lut170中寫入所需函數(shù)的相關(guān)數(shù)據(jù),以實(shí)現(xiàn)計(jì)算的編程。在本實(shí)施例中,lut芯片200堆疊在alc芯片100上方;ip-lut170與alc180至少部分重疊。在說明書附圖中,由于它們處于不同芯片中,ip-lut170用虛線表示,alc180用實(shí)線表示。ip-lut可編程處理器300采用“基于存儲(chǔ)的計(jì)算”(mbc),它主要通過查表來實(shí)現(xiàn)計(jì)算。ip-lut可編程處理器300中ip-lut170的存儲(chǔ)容量遠(yuǎn)高于傳統(tǒng)處理器00的lut200x。雖然大多數(shù)mbc仍需要進(jìn)行算術(shù)運(yùn)算,通過使用較大的ip-lut170作為計(jì)算的出發(fā)點(diǎn),mbc僅需使用較少的多項(xiàng)式展開(如泰勒級(jí)數(shù)展開)。在mbc中,大部分計(jì)算通過ip-lut170完成,少部分計(jì)算通過alc180實(shí)現(xiàn)。ip-lut可編程處理器300的使用分兩個(gè)階段:設(shè)置階段和計(jì)算階段。在設(shè)置階段,在ip-lut170中寫入所需函數(shù)的相關(guān)數(shù)據(jù);在計(jì)算階段,通過在ip-lut170中查找函數(shù)相關(guān)數(shù)據(jù)來實(shí)現(xiàn)計(jì)算。ip-lut可編程處理器300能實(shí)現(xiàn)現(xiàn)場(chǎng)編程和可重構(gòu)計(jì)算。對(duì)于現(xiàn)場(chǎng)編程,可在使用現(xiàn)場(chǎng)將所需函數(shù)的相關(guān)數(shù)據(jù)寫入ip-lut170,則ip-lut可編程處理器300可在使用現(xiàn)場(chǎng)實(shí)現(xiàn)所需的函數(shù)。對(duì)于可重構(gòu)計(jì)算,不同時(shí)段在ip-lut170中寫入不同函數(shù)的不同相關(guān)數(shù)據(jù)(如不同函數(shù)的查找表),則ip-lut可編程處理器300可實(shí)現(xiàn)不同函數(shù)。例如,在第一時(shí)段,ip-lut170存儲(chǔ)第一函數(shù)的相關(guān)數(shù)據(jù);在第二時(shí)段,ip-lut170存儲(chǔ)第二函數(shù)的相關(guān)數(shù)據(jù)。ip-lut170可用ram和/或rom。ram包括sram和dram等。rom包括otp、eprom、eeprom和閃存等。閃存可以分為nor或nand,還可以分為橫向閃存和縱向閃存(verticalnand)。對(duì)于可重構(gòu)計(jì)算,ip-lut170采用可重復(fù)編程存儲(chǔ)器。對(duì)于現(xiàn)場(chǎng)編程,除了可重復(fù)編程存儲(chǔ)器以外,ip-lut170還可以采用otp。另一方面,alc180可以含有加法器、乘法器、和/或乘加器,它可以用于實(shí)現(xiàn)整數(shù)運(yùn)算、定點(diǎn)數(shù)運(yùn)算、或浮點(diǎn)數(shù)運(yùn)算。圖3a-圖3c是三種ip-lut可編程處理器300的截面圖。它們均為一種多芯片封裝(multi-chippackage,簡(jiǎn)稱為mcp)。其中,圖3a中的ip-lut可編程處理器300含有兩個(gè)分離芯片:alc芯片100和lut芯片200。芯片100、200堆疊在封裝襯底110上并位于同一封裝130中。微焊點(diǎn)(micro-bump)116為芯片100、200提供電耦合,它起芯片間連接160的作用。在本實(shí)施例中,lut芯片200堆疊在alc芯片100上;同時(shí),lut芯片200被翻轉(zhuǎn),它與alc芯片100面對(duì)面地堆疊在一起。在其它實(shí)施例中,alc芯片100也可堆疊在lut芯片200上,同時(shí)也可不被翻轉(zhuǎn)。圖3b中的ip-lut可編程處理器300含有alc芯片100、lut芯片200和硅插板(interposer)120。硅插板120含有多個(gè)穿透硅片通道(tsv)118,它使alc芯片100和lut芯片200之間的電耦合更為容易,設(shè)計(jì)時(shí)有更多自由度,同時(shí)散熱更為良好。此實(shí)施例還含有多個(gè)微焊點(diǎn)116,它與tsv118構(gòu)成芯片間連接160。圖3c中的ip-lut可編程處理器300含有一alc芯片100和至少兩個(gè)lut芯片200a、200b。這些芯片100、200a和200b是分離的,并位于同一封裝130中。其中,lut芯片200b堆疊在lut芯片200a之上,lut芯片200a又堆疊在alc芯片100之上。芯片100、200a、200b之間通過tsv118和微焊點(diǎn)116耦合。很明顯,圖3c比圖3a具有更大的ip-lut170。類似地,在此實(shí)施例中,tsv118和微焊點(diǎn)116構(gòu)成芯片間連接160。這種將lut芯片200和alc芯片100相互堆疊在同一封裝的集成方式被稱為2.5維集成。2.5維集成能提高計(jì)算密度和計(jì)算復(fù)雜度。采用傳統(tǒng)的二維集成,傳統(tǒng)處理器00的面積是lut200x和alu100x之和。采用2.5維集成后,lut從邊上移到頂上,ip-lut可編程處理器300的面積變小,計(jì)算密度加強(qiáng)。此外,傳統(tǒng)處理器00中l(wèi)ut的總?cè)萘啃∮?00kb,而ip-lut可編程處理器300中l(wèi)ut的總?cè)萘靠蛇_(dá)到100gb;單個(gè)ip-lut可編程處理器300就可支持上萬個(gè)內(nèi)置函數(shù)(包括多種復(fù)雜函數(shù)),遠(yuǎn)多于傳統(tǒng)處理器。此外,2.5維集成還能提高lut170和alc180之間的數(shù)據(jù)傳輸帶寬。由于lut170和alc180距離較近且芯片間連接160數(shù)量較多,它們之間的數(shù)據(jù)傳輸帶寬遠(yuǎn)高于傳統(tǒng)處理器00中l(wèi)ut200x和alu100x之間的帶寬。最后,2.5維集成對(duì)制造工藝角度也有益處。由于alc芯片100和lut芯片200為不同芯片,構(gòu)成alc芯片100的邏輯晶體管和構(gòu)成lut芯片200的存儲(chǔ)晶體管分別形成在不同襯底(100s、200s)上,它們的制造工藝可分別優(yōu)化。為了進(jìn)一步提高可編程度,本發(fā)明還提出一種基于ip-lut的可編程門陣列(ip-lut可編程門陣列)700(圖4a-圖6),它含有多個(gè)可編程計(jì)算單元400aa…、多個(gè)可編程邏輯單元500aa…和多個(gè)可編程連接610-650…。圖4a表示一種典型的可編程計(jì)算單元400,它含有一預(yù)處理電路180r、一后處理電路180t和至少一ip-lut170。ip-lut170含有至少一可編程存儲(chǔ)陣列,它存儲(chǔ)一函數(shù)的相關(guān)數(shù)據(jù)(如該函數(shù)的查找表)。由于ip-lut170是可編程的,因此可根據(jù)用戶需求在ip-lut170中寫入所需函數(shù)的相關(guān)數(shù)據(jù),以實(shí)現(xiàn)計(jì)算的編程。預(yù)處理電路180r將函數(shù)的自變量x150轉(zhuǎn)換為ip-lut170的地址a160a;后處理器180t將從ip-lut170中讀出的數(shù)據(jù)d160d轉(zhuǎn)換為函數(shù)值y的輸出190。在該實(shí)施例中,預(yù)處理電路180r和后處理電路180t形成在邏輯芯片100中。在其他實(shí)施例中,至少一部分預(yù)處理電路180r和/或后處理電路180t也可以形成在存儲(chǔ)芯片200中。自變量x的一部分r可以在被預(yù)處理電路180r處理之前送至后處理電路180t作為后端處理的一個(gè)輸入,也可以在被預(yù)處理電路180r處理之后(即地址a的一部分)送至后處理器180t。圖4b表示一種實(shí)現(xiàn)一單精度函數(shù)y=f(x)的可編程計(jì)算單元400。ip-lut170含有兩個(gè)lut170q、170r,其容量均為2mb(16位輸入、32位輸出),并分別存儲(chǔ)函數(shù)值d1=f(a)和函數(shù)的一階導(dǎo)數(shù)值d2=f’(a)。alc180含有預(yù)處理電路180r(主要含有一地址緩沖區(qū))和后處理電路180t(含有一加法器180a和一乘法器180m)。芯片間連接160在ip-lut170和alc180之間傳輸數(shù)據(jù)。在計(jì)算函數(shù)時(shí),該ip-lut可編程處理器300的輸入為32位自變量x150(x31…x0);預(yù)處理電路180r將其前16位(x31…x16)提取出來作為lut170q、170r的16位地址輸入a,再將其后16位(x15…x0)提取出來作為16位地址余量r送到后處理電路180t;后處理電路180t通過多項(xiàng)式插值計(jì)算32位輸出值y190。在本實(shí)施例中,多項(xiàng)式插值是一階泰勒級(jí)數(shù):y(x)=d1+d2*r=f(a)+f’(a)*r。很明顯,采用更高階的多項(xiàng)式插值(如更高階的泰勒級(jí)數(shù))能進(jìn)一步提高計(jì)算精度。在實(shí)現(xiàn)內(nèi)置函數(shù)時(shí),將lut和多項(xiàng)式插值結(jié)合起來可以用較小的lut實(shí)現(xiàn)較高的計(jì)算精度。假如僅用lut(無多項(xiàng)式插值)來實(shí)現(xiàn)上述的單精度函數(shù)(32位輸入、32位輸出),lut的容量需要達(dá)到232*32=128gb。用這么大的lut來實(shí)現(xiàn)一個(gè)函數(shù)是不現(xiàn)實(shí)的。通過多項(xiàng)式插值,lut的容量可極大地降低。在上述實(shí)施例中,在采用一階泰勒級(jí)數(shù)后,lut只需4mb(函數(shù)值lut需要2mb、一階導(dǎo)數(shù)值lut需要2mb)。這比僅用lut的方式(128gb)少很多。圖4c列出實(shí)現(xiàn)各種精度函數(shù)所需的查找表容量和泰勒級(jí)數(shù)展開項(xiàng)。該實(shí)施例采用定義域縮小法并將查找表的容量限制在mb級(jí)(參考harrison等所著《thecomputationoftranscendentalfunctionsontheia-64architecture》,inteltechnicaljournal,q4,1999年)。半精度(16位)計(jì)算使用的ip-lut170容量為216×16=1mb,這時(shí)不需要計(jì)算任何泰勒級(jí)數(shù);單精度(32位)計(jì)算使用的ip-lut170容量為216×32×2=4mb,這時(shí)需要計(jì)算1階泰勒級(jí)數(shù);雙精度(64位)計(jì)算使用的ip-lut170容量為216×64×3=12mb,這時(shí)需要計(jì)算2階泰勒級(jí)數(shù);擴(kuò)展雙精度(80位)計(jì)算使用的ip-lut170的容量為216×80×4=20mb,這時(shí)需要計(jì)算3階泰勒級(jí)數(shù)。作為一個(gè)比較,為實(shí)現(xiàn)同樣的雙精度(64位)計(jì)算,英特爾的itanium處理器需要計(jì)算多達(dá)22階泰勒級(jí)數(shù)。除了初等函數(shù)以外,圖4a-圖4b中的實(shí)施例還能實(shí)現(xiàn)各種高等函數(shù),如特殊函數(shù)等。特殊函數(shù)在數(shù)學(xué)分析、泛函分析、物理研究、工程應(yīng)用中有著舉足輕重的地位。許多特殊函數(shù)是微分方程的解或基本函數(shù)的積分。特殊函數(shù)的例子包括伽瑪函數(shù)、貝塔函數(shù)、貝塞爾函數(shù)、勒讓德函數(shù)、橢圓函數(shù)、lame函數(shù)、mathieu函數(shù)、黎曼澤塔函數(shù)、菲涅耳積分等。可編程計(jì)算單元400的出現(xiàn)將簡(jiǎn)化特殊函數(shù)的計(jì)算,助推其在科學(xué)計(jì)算中的應(yīng)用。圖5表示一種ip-lut可編程門陣列700。它含有規(guī)則排列的可編程模塊700a和可編程模塊700b等。每個(gè)可編程模塊(如700a)含有多個(gè)可編程計(jì)算單元(如400aa-400ad)和可編程邏輯單元(如500aa-500ad)。在可編程計(jì)算單元(如400aa-400ad)和可編程邏輯單元(如500aa-500ad)之間含有可編程信道620、640;在可編程模塊700a和可編程模塊700b之間,也含有可編程信道610、630、650。可編程信道610-650含有多個(gè)可編程連接。對(duì)于熟悉本領(lǐng)域的專業(yè)人士來說,除了可編程信道以外,還可以采用門海(sea-of-gates)等設(shè)計(jì)??删幊踢壿媶卧涂删幊踢B接類似傳統(tǒng)fpga中的可編程邏輯單元和可編程連接(參見美國(guó)專利4,870,302)。比如說,可編程邏輯單元可以選擇性地實(shí)現(xiàn)移位、邏輯非、and(邏輯與)、or(邏輯和)、nor(和非)、nand(與非)、xor(異或)、+(加法)、-(減法)等邏輯操作;可編程連接可以選擇性地實(shí)現(xiàn)互連線的連接、斷開等功能。在一些實(shí)施例中,部分可編程邏輯單元甚至可以實(shí)現(xiàn)×(乘法)。圖6表示該ip-lut可編程門陣列700的一種具體實(shí)現(xiàn),它用于實(shí)現(xiàn)一多變量非算術(shù)函數(shù):e=a.sin(b)+c.cos(d)。在可編程信道610-650中可編程連接采用與美國(guó)專利4,870,302一致的表達(dá)方式:交叉點(diǎn)有圓點(diǎn)的可編程連接表示交叉線相連,交叉點(diǎn)無圓點(diǎn)的可編程連接表示交叉線不相連,斷開的可編程連接表示斷開的互連線被分為兩個(gè)互不相連的互連線段。在該實(shí)施例中,可編程計(jì)算單元400aa被設(shè)置為log(),其計(jì)算結(jié)果log(a)被送到可編程邏輯單元500aa的第一輸入。可編程計(jì)算單元400ab被設(shè)置為log[sin()],其計(jì)算結(jié)果log[sin(b)]被送到可編程邏輯單元500aa的第二輸入。可編程邏輯單元500aa被設(shè)置為“加法”,其計(jì)算結(jié)果log(a)+log[sin(b)]被送到可編程計(jì)算單元400ba??删幊逃?jì)算單元400ba被設(shè)置為exp(),其計(jì)算結(jié)果exp{log(a)+log[sin(b)]}=a.sin(b)被送到可編程邏輯單元500ba的第一輸入。類似地,通過適當(dāng)?shù)脑O(shè)置,可編程計(jì)算單元400ac、400ad,可編程邏輯單元500ac,可編程計(jì)算單元400bc的結(jié)果c.cos(d)被送到可編程邏輯單元500ba的第二輸入??删幊踢壿媶卧?00ba被設(shè)置為“加法”,a.sin(b)和c.cos(d)在此相加,最終結(jié)果送到輸出e。很明顯,通過改變?cè)O(shè)置,ip-lut可編程門陣列700還可以實(shí)現(xiàn)其它非算術(shù)函數(shù)。ip-lut可編程門陣列700尤其適合實(shí)現(xiàn)對(duì)多變量函數(shù)的編程。如果僅采用lut,則上述4變量函數(shù)e=a.sin(b)+c.cos(d)需要的極大lut:即使僅采用半精度,就需要216×216×216×216×16=256eb的lut。很明顯,用這么多l(xiāng)ut來實(shí)現(xiàn)一4變量函數(shù)是不現(xiàn)實(shí)的。采用ip-lut可編程門陣列700后,僅需要8mb的lut(8個(gè)可編程計(jì)算單元,每個(gè)計(jì)算單元含1mb的lut)就可實(shí)現(xiàn)該4變量函數(shù)。對(duì)于熟悉本專業(yè)的人士來說,ip-lut可編程門陣列700可以推廣到其它多變量函數(shù)中。應(yīng)該了解,在不遠(yuǎn)離本發(fā)明的精神和范圍的前提下,可以對(duì)本發(fā)明的形式和細(xì)節(jié)進(jìn)行改動(dòng),這并不妨礙它們應(yīng)用本發(fā)明的精神。例如說,處理器可以是中央處理器(cpu)、數(shù)字信號(hào)處理器(dsp)、圖像處理器(gpu)、網(wǎng)絡(luò)安全處理器、加密/解密處理器、編碼/解碼處理器、神經(jīng)網(wǎng)絡(luò)處理器、人工智能(ai)處理器等。因此,除了根據(jù)附加的權(quán)利要求書的精神,本發(fā)明不應(yīng)受到任何限制。當(dāng)前第1頁12當(dāng)前第1頁12