本發(fā)明涉及計(jì)算機(jī)與電路設(shè)計(jì)領(lǐng)域,尤其涉及一種高層次綜合工具中的多操作數(shù)加法優(yōu)化方法及系統(tǒng)。
背景技術(shù):
在數(shù)字電路設(shè)計(jì)中,多操作數(shù)加法在數(shù)字信號(hào)處理、圖片視頻處理、高性能計(jì)算等多個(gè)方面具有廣泛應(yīng)用,其運(yùn)算速度與資源開(kāi)銷往往會(huì)對(duì)電路設(shè)計(jì)質(zhì)量產(chǎn)生重要影響。
高層次綜合技術(shù)通過(guò)編譯、調(diào)度、資源分配等過(guò)程,將高級(jí)語(yǔ)言直接轉(zhuǎn)換為硬件描述語(yǔ)言,能夠有效提高設(shè)計(jì)效率節(jié)省設(shè)計(jì)時(shí)間。高效的算法和硬件電路設(shè)計(jì)方法均有利于提升高層次綜合工具的性能。對(duì)于多操作數(shù)加法,其硬件電路實(shí)現(xiàn)可以具有多種結(jié)構(gòu)。然而在常規(guī)高層次綜合系統(tǒng)中,通常采用全加器、半加器、或傳統(tǒng)的加法器樹來(lái)實(shí)現(xiàn)多操作數(shù)加法,而并未深入考慮多操作加法的設(shè)計(jì)空間探索和相關(guān)優(yōu)化。這樣一方面會(huì)造成較大的進(jìn)位傳播時(shí)延;另一方面往往不能很好地適應(yīng)目標(biāo)平臺(tái)的邏輯結(jié)構(gòu),特別是對(duì)于目標(biāo)平臺(tái)為現(xiàn)場(chǎng)可編程門陣列(FPGA)的情況。因此,通過(guò)常規(guī)高層次綜合系統(tǒng),自動(dòng)生成的硬件電路設(shè)計(jì)中,若具有較大規(guī)模的多操作數(shù)加法操作,則這部分設(shè)計(jì)往往會(huì)具有較大的時(shí)延并占用較多的硬件資源,從而影響硬件設(shè)計(jì)的整體質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問(wèn)題,本發(fā)明的目的是:提供一種高層次綜合工具中基于廣義并行計(jì)數(shù)器實(shí)現(xiàn)的高性能多操作數(shù)加法優(yōu)化方法。
為了解決上述技術(shù)問(wèn)題,本發(fā)明的另一目的是:提供一種高層次綜合工具中基于廣義并行計(jì)數(shù)器實(shí)現(xiàn)的高性能多操作數(shù)加法優(yōu)化系統(tǒng)。
本發(fā)明所采用的技術(shù)方案是:一種高層次綜合工具中的多操作數(shù)加法優(yōu)化方法,包括有以下步驟:
A、獲取電路設(shè)計(jì)的高層次功能描述,進(jìn)而得到該電路設(shè)計(jì)所包含的運(yùn)算操作以及操作數(shù);
B、判斷步驟A中得到的運(yùn)算操作是否出現(xiàn)3個(gè)或3個(gè)以上的操作數(shù)連續(xù)相加,若是,則載入加法優(yōu)化處理單元,并進(jìn)入步驟C執(zhí)行此處理單元,反之則結(jié)束;
C、讀取用戶配置文件中的優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)建立壓縮樹,并保存壓縮樹信息;
D、根據(jù)步驟C中保存的壓縮樹信息生成可綜合壓縮樹HDL代碼。
進(jìn)一步,所述步驟C具體包括:
C1、讀取用戶配置文件并得到優(yōu)化目標(biāo)數(shù)據(jù),并根據(jù)優(yōu)化目標(biāo)對(duì)廣義并行計(jì)數(shù)器進(jìn)行優(yōu)先級(jí)排序;
C2、使用經(jīng)過(guò)優(yōu)先級(jí)排序的廣義并行計(jì)數(shù)器對(duì)多個(gè)操作數(shù)進(jìn)行處理,生成壓縮樹并保存壓縮樹信息。
進(jìn)一步,所述步驟B中,將操作數(shù)用二維點(diǎn)陣圖表示。
進(jìn)一步,所述步驟C2中,所述壓縮樹用于將多個(gè)數(shù)進(jìn)行求和并以其和作為輸出,保存的壓縮樹信息包括壓縮樹的級(jí)數(shù)、每一級(jí)使用的廣義并行計(jì)數(shù)器類型和使用數(shù)目、以及最后加法器的輸入輸出信息。
進(jìn)一步,所述步驟C中,所述壓縮樹的輸入為多操作數(shù)加法的操作數(shù),所述壓縮樹的輸出為多操作數(shù)加法的操作數(shù)的和,所述壓縮樹的功能與多操作數(shù)加法的加法功能相同。
本發(fā)明所采用的另一技術(shù)方案是:一種高層次綜合工具中的多操作數(shù)加法優(yōu)化系統(tǒng),該系統(tǒng)包括:
獲取單元,用于獲取電路設(shè)計(jì)的高層次功能描述,進(jìn)而得到該電路設(shè)計(jì)所包含的運(yùn)算操作以及操作數(shù);
判斷單元,用于判斷獲取單元中得到的運(yùn)算操作是否出現(xiàn)3個(gè)或3個(gè)以上的操作數(shù)連續(xù)相加,若是,則載入加法優(yōu)化處理單元,并進(jìn)入執(zhí)行此處理單元,反之則結(jié)束;
加法優(yōu)化處理單元,用于讀取用戶配置文件中的優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)建立壓縮樹,并保存壓縮樹信息;
代碼生成單元,用于根據(jù)加法優(yōu)化處理單元保存的壓縮樹信息生成可綜合的壓縮樹HDL代碼。
進(jìn)一步,所述加法優(yōu)化處理單元包括:
排序模塊,用于讀取用戶配置文件并得到設(shè)計(jì)優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)對(duì)廣義并行計(jì)數(shù)器進(jìn)行優(yōu)先級(jí)排序;
生成模塊,用于使用排序模塊中進(jìn)行過(guò)優(yōu)先級(jí)排序的廣義并行計(jì)數(shù)器對(duì)多個(gè)操作數(shù)進(jìn)行處理,生成壓縮樹并保存壓縮樹信息。
進(jìn)一步,所述判斷單元中,將操作數(shù)用二維點(diǎn)陣圖表示。
進(jìn)一步,所述生成模塊中,所述壓縮樹用于將多個(gè)數(shù)進(jìn)行求和并以其和作為輸出,保存的壓縮樹信息包括壓縮樹的級(jí)數(shù)、每一級(jí)使用的廣義并行計(jì)數(shù)器類型和使用數(shù)目、以及最后加法器的輸入輸出信息。
進(jìn)一步,所述加法優(yōu)化處理單元中,所述壓縮樹的輸入為多操作數(shù)加法的操作數(shù),所述壓縮樹的輸出為多操作數(shù)加法的操作數(shù)的和,所述壓縮樹的功能與多操作數(shù)加法的加法功能相同。
本發(fā)明的有益效果是:通過(guò)使用本發(fā)明方法,可以在高層次綜合階段,根據(jù)用戶配置文件中的優(yōu)化目標(biāo)進(jìn)行多操數(shù)加法的設(shè)計(jì)空間優(yōu)化,有助于生成性能更優(yōu)的多操作數(shù)加法電路,同時(shí)有利于提升高層次綜合工具的性能。
本發(fā)明另一有益效果是:通過(guò)使用本發(fā)明系統(tǒng),可以在高層次綜合中,根據(jù)用戶配置文件中的優(yōu)化目標(biāo)進(jìn)行多操數(shù)加法的設(shè)計(jì)空間優(yōu)化,有助于生成性能更優(yōu)的多操作數(shù)加法電路,同時(shí)有利于提升高層次綜合工具的性能。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步說(shuō)明:
圖1是本發(fā)明方法的步驟流程圖;
圖2是本發(fā)明方法具體實(shí)施例的步驟流程圖;
圖3是本發(fā)明方法具體實(shí)施例中的加法示意圖;
圖4是本發(fā)明方法具體實(shí)施例中的二維點(diǎn)陣圖;
圖5是本發(fā)明方法的部分GPC點(diǎn)陣圖示意圖;
圖6是本發(fā)明方法具體實(shí)施例中壓縮樹生成流程圖;
圖7是本發(fā)明系統(tǒng)的結(jié)構(gòu)框圖;
圖8是本發(fā)明系統(tǒng)具體實(shí)施例中的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步說(shuō)明:
參照?qǐng)D1,一種高層次綜合工具中的多操作數(shù)加法優(yōu)化方法,包括有以下步驟:
A、獲取電路設(shè)計(jì)的高層次功能描述,進(jìn)而得到該電路設(shè)計(jì)所包含的運(yùn)算操作以及操作數(shù);
本實(shí)施例為5個(gè)4比特的無(wú)符號(hào)數(shù)加法,獲取結(jié)果為4個(gè)加法及5個(gè)操作數(shù)。
B、判斷步驟A中得到的運(yùn)算操作是否出現(xiàn)3個(gè)或3個(gè)以上的操作數(shù)連續(xù)相加,若是,則載入加法優(yōu)化處理單元,并進(jìn)入步驟C執(zhí)行此處理單元,反之則結(jié)束;
本實(shí)施例將檢測(cè)到5個(gè)操作數(shù)連續(xù)相加,判斷結(jié)果為是,執(zhí)行步驟C。本實(shí)施例中5個(gè)4比特?zé)o符號(hào)數(shù)相加過(guò)程如圖3所示,其中aij表示第i個(gè)操作數(shù)的第j位,sk表示加法結(jié)果的第k位。
C、讀取用戶配置文件中的優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)建立壓縮樹,并保存壓縮樹信息;
D、根據(jù)步驟C中保存的壓縮樹信息生成可綜合壓縮樹HDL代碼。
參照?qǐng)D2,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟C具體包括:
C1、讀取用戶配置文件并得到優(yōu)化目標(biāo)數(shù)據(jù),并根據(jù)優(yōu)化目標(biāo)對(duì)廣義并行計(jì)數(shù)器(Generalized Parallel Counter,簡(jiǎn)稱GPC)進(jìn)行優(yōu)先級(jí)排序;
其中一個(gè)具體的GPC輸入輸出關(guān)系用GPC(1,4,1,5;5)舉例,此GPC具有5個(gè)權(quán)重為0的輸入,1個(gè)權(quán)重為1的輸入,4個(gè)權(quán)重為2的輸入,1個(gè)權(quán)重為3的輸入,它的輸出為5比特的無(wú)符號(hào)數(shù)R,當(dāng)所有輸入都為1時(shí):
R=5×20+1×21+4×22+1×23=(11111)2=(31)10
C2、使用經(jīng)過(guò)優(yōu)先級(jí)排序的廣義并行計(jì)數(shù)器對(duì)多個(gè)操作數(shù)進(jìn)行處理,生成壓縮樹并保存壓縮樹信息。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)計(jì)優(yōu)化目標(biāo)包括面積優(yōu)化、時(shí)序優(yōu)化或時(shí)序面積積優(yōu)化。
FPGA中不同GPC占用的硬件資源以及其輸入到輸出的時(shí)延是不同的,根據(jù)優(yōu)化目標(biāo)的不同使用不同的比較準(zhǔn)則對(duì)其進(jìn)行優(yōu)先級(jí)排序。
例如在Xilinx的FPGA中,GPC(2,6;4)使用了3個(gè)LUT,其輸入到輸出的最大延時(shí)為0.316ns,輸入與輸出的個(gè)數(shù)差為2+6-4=4。而GPC(6;3)使用了2個(gè)LUT,其輸入到輸出的最大延時(shí)為0.293ns,輸入與輸出個(gè)數(shù)的差值為6-3=3。
若優(yōu)化目標(biāo)為時(shí)序優(yōu)化,那么以GPC輸入與輸出的差和GPC輸入到輸出的最大延時(shí)的比值(記為PD)為排序基準(zhǔn)。GPC(6;3)其PD值為3/0.293=10.239,GPC(2,6;4)其PD值為4/0.316=12.658,由于12.658>10.239,因此GPC(2,6;4)的優(yōu)先級(jí)比GPC(6;3)高。
若優(yōu)化目標(biāo)為面積優(yōu)化,那么以GPC輸入與輸出的差和GPC使用資源(通常為L(zhǎng)UT)的比值(記為AD)為排序基準(zhǔn)。GPC(6;3)其AD值為3/2=1.5,GPC(2,6;4)其AD值為4/3=1.333,由于1.5>1.333,因此GPC(6;3)優(yōu)先級(jí)比GPC(2,6;4)高。
若優(yōu)化目標(biāo)為時(shí)序面積積優(yōu)化,PD與AD的乘積(記為APD)為排序基準(zhǔn)。如GPC(6;3)的APD為10.239*1.5=15.3585,GPC(2,6;4)的APD值為12.658*1.333=16.8731,由于18.8731>15.3585,因此GPC(2,6;4)的優(yōu)先級(jí)比GPC(6;3)高。
在本發(fā)明具體實(shí)施例中設(shè)計(jì)優(yōu)化目標(biāo)為面積優(yōu)化,在進(jìn)行排序時(shí)使用GPC輸入輸出個(gè)數(shù)的差與使用資源的比值E作為排序標(biāo)準(zhǔn),此比值越大表明對(duì)應(yīng)GPC越能使用較少的資源壓縮較多的輸入。本實(shí)施例中使用的GPC為GPC(1,4,1,5;5)、GPC(4;3)和GPC(3;2),它們占用的硬件資源分別為4個(gè)2個(gè)和1個(gè)LUT,而它們輸入與輸出的差值分別為6、1和1,三個(gè)GPC對(duì)應(yīng)的E值分別為6/4=1.5,1/2=0.5,1/1=1,而1.5>1>0.5,因此這三個(gè)GPC按照優(yōu)先級(jí)從高到低排序依次為GPC(1,4,1,5;5)、GPC(3;2)和GPC(4;3)。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中,將操作數(shù)用二維點(diǎn)陣圖表示,如圖4所示。
圖4是圖3對(duì)應(yīng)的二維點(diǎn)陣圖,二維點(diǎn)陣圖將參與運(yùn)算的操作數(shù)抽象為一個(gè)二維點(diǎn)陣,其中每一行代表一個(gè)操作數(shù),每一個(gè)點(diǎn)代表操作數(shù)的某一位(取值為0或1),最左側(cè)的點(diǎn)為所在行操作數(shù)的最高位,最右側(cè)的點(diǎn)為所在行操作數(shù)的最低位,任意一列上的所有點(diǎn)所代表的權(quán)重相同。
圖5列出了幾種不同GPC的點(diǎn)陣圖表示方法。在本實(shí)施例中,GPC網(wǎng)絡(luò)的輸出點(diǎn)陣圖每列最多有2個(gè)點(diǎn),即GPC網(wǎng)絡(luò)的輸出可組成兩個(gè)新的操作數(shù)輸入到后續(xù)的加法器中。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟C1中,GPC是一種具有M比特輸入n比特輸出的電路結(jié)構(gòu),其功能是計(jì)算所有輸入所代表的1的個(gè)數(shù)的總和,并表示為n比特的無(wú)符號(hào)數(shù)作為輸出結(jié)果。其中每一個(gè)輸入都具有一定的權(quán)重,此權(quán)重表示對(duì)應(yīng)輸入實(shí)際代表的1的個(gè)數(shù),若某一個(gè)輸入端的實(shí)際輸入為A(只能為0或1),其權(quán)重為W,則此輸入實(shí)際代表的1的個(gè)數(shù)為A*2W。GPC用符號(hào)可記為:(mk-1,mk-2,…,m1,m0;n),其中mk-1>0,mi中i代表輸入的權(quán)重,mi代表權(quán)重為i的輸入的個(gè)數(shù),k代表輸入位數(shù),n代表輸出位數(shù),并且有:
GPC可將由多個(gè)操作數(shù)抽象成的二維點(diǎn)陣圖不斷壓縮,最終得到所需個(gè)數(shù)的操作數(shù)。由于不同種GPC所能減少的輸入個(gè)數(shù)、使用的硬件資源、輸入到輸出的延時(shí)都各不相同,因此可根據(jù)不同設(shè)計(jì)優(yōu)化目標(biāo)對(duì)GPC進(jìn)行優(yōu)先級(jí)排序,并盡量使用最高優(yōu)先級(jí)GPC進(jìn)行壓縮。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟C2中,所述壓縮樹用于將多個(gè)數(shù)進(jìn)行求和并以其和作為輸出,保存的壓縮樹信息包括壓縮樹的級(jí)數(shù)、每一級(jí)使用的廣義并行計(jì)數(shù)器類型和使用數(shù)目、以及最后加法器的輸入輸出信息。
所述步驟C2中所述壓縮樹是一種可將多個(gè)數(shù)進(jìn)行求和并以其和作為輸出的結(jié)構(gòu),包括GPC網(wǎng)絡(luò)和加法器兩部分。GPC網(wǎng)絡(luò)分為多個(gè)級(jí)(假設(shè)為N級(jí)),每一級(jí)可依據(jù)算法策略挑選不同的GPC對(duì)本級(jí)的輸入進(jìn)行壓縮。第1級(jí)的輸入是由多個(gè)操作數(shù)組成的原始輸入;對(duì)其它級(jí)來(lái)說(shuō),由當(dāng)前級(jí)之前所有級(jí)的剩余輸出和原始輸入的剩余輸入組成了當(dāng)前級(jí)的輸入。最終,N級(jí)GPC網(wǎng)絡(luò)將最初的點(diǎn)陣圖壓縮為每列最多不超過(guò)所需個(gè)數(shù)點(diǎn)的點(diǎn)陣圖。最后將GPC網(wǎng)絡(luò)的輸出點(diǎn)陣圖作為加法器的輸入進(jìn)行求和,并最終得到多個(gè)操作數(shù)的和。
參照?qǐng)D6,以本實(shí)施例生成的GPC網(wǎng)絡(luò)為例:圖中邊框?yàn)閷?shí)線的矩形代表GPC(1,4,1,5;5),實(shí)線連接線兩端的點(diǎn)代表GPC(1,4,1,5;5)的輸出;邊框?yàn)樘摼€的矩形代表GPC(4;3),虛線連接線兩段的點(diǎn)代表GPC(4;3)的輸出;邊框?yàn)橛兄行狞c(diǎn)虛線的矩形代表GPC(3;2),有中心點(diǎn)虛線的連接線兩段的點(diǎn)代表GPC(3;2)的輸出。本實(shí)施例中GPC網(wǎng)絡(luò)共有3級(jí),第一級(jí)使用了1個(gè)GPC(1,4,1,5;5)和2個(gè)GPC(4;3),第二級(jí)使用了2個(gè)GPC(3;2),第三級(jí)使用了1個(gè)GPC(3;2),如圖6所示。第三級(jí)的輸出作為之后加法器的輸入,經(jīng)運(yùn)算后得到多操作數(shù)加法的結(jié)果。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟C中,所述壓縮樹的輸入為多操作數(shù)加法的操作數(shù),所述壓縮樹的輸出為多操作數(shù)加法的操作數(shù)的和,所述壓縮樹的功能與多操作數(shù)加法的加法功能相同。
參照?qǐng)D7,一種高層次綜合工具中的多操作數(shù)加法優(yōu)化系統(tǒng),該系統(tǒng)包括:
獲取單元,用于獲取電路設(shè)計(jì)的高層次功能描述,進(jìn)而得到該電路設(shè)計(jì)所包含的運(yùn)算操作以及操作數(shù);
判斷單元,用于判斷獲取單元中得到的運(yùn)算操作是否出現(xiàn)3個(gè)或3個(gè)以上的操作數(shù)連續(xù)相加,若是,則載入加法優(yōu)化處理單元,并進(jìn)入執(zhí)行此處理單元,反之則結(jié)束;
加法優(yōu)化處理單元,用于讀取用戶配置文件中的優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)建立壓縮樹,并保存壓縮樹信息;
代碼生成單元,用于根據(jù)加法優(yōu)化處理單元保存的壓縮樹信息生成可綜合的壓縮樹HDL代碼。
參照?qǐng)D8,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述加法優(yōu)化處理單元包括:
排序模塊,用于讀取用戶配置文件并得到設(shè)計(jì)優(yōu)化目標(biāo)數(shù)據(jù),根據(jù)優(yōu)化目標(biāo)數(shù)據(jù)對(duì)廣義并行計(jì)數(shù)器進(jìn)行優(yōu)先級(jí)排序;
生成模塊,用于使用排序模塊中進(jìn)行過(guò)優(yōu)先級(jí)排序的廣義并行計(jì)數(shù)器對(duì)多個(gè)操作數(shù)進(jìn)行處理,生成壓縮樹并保存壓縮樹信息。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述判斷單元中,將操作數(shù)用二維點(diǎn)陣圖表示。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述生成模塊中,所述壓縮樹用于將多個(gè)數(shù)進(jìn)行求和并以其和作為輸出,保存的壓縮樹信息包括壓縮樹的級(jí)數(shù)、每一級(jí)使用的廣義并行計(jì)數(shù)器類型和使用數(shù)目、以及最后加法器的輸入輸出信息。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述加法優(yōu)化處理單元中,所述壓縮樹的輸入為多操作數(shù)加法的操作數(shù),所述壓縮樹的輸出為多操作數(shù)加法的操作數(shù)的和,所述壓縮樹的功能與多操作數(shù)加法的加法功能相同。
以上對(duì)本發(fā)明的較佳實(shí)施進(jìn)行了具體說(shuō)明,但本發(fā)明創(chuàng)造并不限于所述實(shí)施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請(qǐng)權(quán)利要求所限定的范圍內(nèi)。