亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

可配置的邏輯裝置的進(jìn)化編程的制作方法

文檔序號(hào):6354753閱讀:168來(lái)源:國(guó)知局
專利名稱:可配置的邏輯裝置的進(jìn)化編程的制作方法
技術(shù)領(lǐng)域
遺傳程序設(shè)計(jì)(GP)系統(tǒng)一般以在通用計(jì)算機(jī)上運(yùn)行的程序?qū)崿F(xiàn)。觀察表明,隨著問(wèn)題變得更加棘手,傳統(tǒng)計(jì)算機(jī)的性能得到了極大地增強(qiáng),從而進(jìn)一步刺激了這項(xiàng)工作的發(fā)展。盡管人們一直不斷地提高現(xiàn)代的CPU的性能,但是仍然使用多個(gè)處理器以利用GP可以并行化的事實(shí)。通過(guò)在硬件中直接實(shí)施GP系統(tǒng),目的是足夠大地提高性能因素以使它能夠處理更加棘手的問(wèn)題。
本發(fā)明說(shuō)明了如何使用硬件編譯技術(shù)在硬件中實(shí)施GP系統(tǒng)。首先描述了硬件和硬件編譯語(yǔ)言。接著一般性地描述了GP系統(tǒng)并討論了為成功地將GP裝配到場(chǎng)可編程的門陣列(FPGA)中必須進(jìn)行的設(shè)計(jì)決策。這之后選擇某些實(shí)例性問(wèn)題以練習(xí)實(shí)施。接著給出運(yùn)行該系統(tǒng)的結(jié)果和與常規(guī)的實(shí)施方式的比較。
下面簡(jiǎn)要一般性地概述FPGA。這之后描述硬件編譯系統(tǒng)的高級(jí)語(yǔ)言。在此并不準(zhǔn)備全面地描述該工具,而是僅描述最重要的特征,特別是哪些影響后面的設(shè)計(jì)決策的特征。
這些介紹希望使哪些很少或沒(méi)有FPGA實(shí)踐經(jīng)驗(yàn)的人更容易地理解后面的某些討論。更全面的數(shù)據(jù)文件可能位于各個(gè)制造商的站點(diǎn)上。
FPGA是一類可編程的硬件裝置,包括可配置的邏輯塊(CLB)的陣列和可配置的互連。FPGA的一般模型在附

圖1中示出。
每個(gè)CLB包括兩個(gè)函數(shù)發(fā)生器(F&G)和兩個(gè)觸發(fā)器(FF)。內(nèi)部輸送和控制邏輯(H)連接函數(shù)發(fā)生器和觸發(fā)器。CLB的一般模型在附圖2中示出。
這些裝置的結(jié)構(gòu)通過(guò)裝入配置位模式實(shí)現(xiàn)。在作為在此所使用的實(shí)例性裝置的Xlinx XCV4000 FPGA中,可將位模式編程在芯片上的靜態(tài)RAM中。在每次給芯片重新配置電源時(shí)都必須完成這些。使用對(duì)配置信息進(jìn)行高級(jí)描述的軟件工具產(chǎn)生配置位模式。
Handel-C是一種設(shè)計(jì)成將以類C語(yǔ)言寫(xiě)成的程序編譯為同步硬件的硬件轉(zhuǎn)換系統(tǒng)的高級(jí)語(yǔ)言。Handel-C的輸出是可用于形成FPGA的配置數(shù)據(jù)的文件。Celoxica創(chuàng)作了Handel-C[www.Celoxica.com]。
Handel-C具有類似C的語(yǔ)法。這就使得該工具受到?jīng)]有硬件經(jīng)驗(yàn)的軟件工程師歡迎,因?yàn)樗麄兡軌蚩焖俚貙④浖惴ㄞD(zhuǎn)換為硬件,而不必詳細(xì)學(xué)習(xí)關(guān)于FPGA或VHDL。VHDL是標(biāo)準(zhǔn)硬件設(shè)計(jì)語(yǔ)言。它代表VHSIC硬件設(shè)計(jì)語(yǔ)言。VHSIC本身的意思是非常高速的集成電路(VeryHigh Speed Integrated Circuit)。
使用硬件的一個(gè)優(yōu)點(diǎn)是能夠直接利用并行性。這與在使用時(shí)間分片實(shí)現(xiàn)的單個(gè)的CPU計(jì)算機(jī)上可實(shí)施的仿真的軟件并行性相反。Handel-C具有支持代碼并行性的其它結(jié)構(gòu)。
如下的塊par{a=10;b=20;}會(huì)產(chǎn)生在單個(gè)時(shí)鐘周期中將值10賦值給a和將20賦值給b的硬件。通過(guò)使用功能陣列或者通過(guò)產(chǎn)生直接插入代碼(inline code),可以產(chǎn)生并行執(zhí)行的較大的功能性塊。
使用如下的結(jié)構(gòu)可以復(fù)制該硬件,這種結(jié)構(gòu)會(huì)產(chǎn)生10個(gè)并行賦值操作。
par(i=0;i<10;i++){a[i]=b[i];}為使充分利用該硬件,Handel-C要求程序員說(shuō)明所有的數(shù)據(jù)的寬度例如是5位寬度的帶符號(hào)的整數(shù),因此能夠表示在-15和+15之間的值,int 5 count;Handel-C支持單整數(shù)數(shù)據(jù)類型。
在硬件和外界之間的通信可以使用接口進(jìn)行。這些接口指定為輸入和輸出,并指定從接口中寫(xiě)或讀用一個(gè)時(shí)鐘周期。這種語(yǔ)言允許設(shè)計(jì)者指向特定的硬件,分配輸入和輸出管腳、指定信號(hào)的時(shí)序和一般性地控制低電平硬件接口細(xì)節(jié)。宏可用于幫助指向特定的裝置。
根據(jù)Handel-C文獻(xiàn)資料,關(guān)于語(yǔ)句時(shí)限的簡(jiǎn)單的規(guī)則是“賦值需要1個(gè)時(shí)鐘周期,其余自由”。這意味著使用組合邏輯構(gòu)造表達(dá),并且僅在執(zhí)行賦值時(shí)對(duì)數(shù)據(jù)進(jìn)行計(jì)時(shí)。例如,Handel-C可以產(chǎn)生用于在單個(gè)時(shí)鐘周期中執(zhí)行的如下的語(yǔ)句的硬件。
y=((x*x)+3*x);這個(gè)特征使得容易根據(jù)時(shí)鐘周期預(yù)測(cè)性能。但是,存在的損失是,表達(dá)式越復(fù)雜,要求實(shí)施該不等式的邏輯越深。反過(guò)來(lái),因?yàn)榕c深度邏輯相關(guān)的傳播延遲的緣故,這又限制了該設(shè)計(jì)能夠運(yùn)行的最大時(shí)鐘速率。在實(shí)際中這意味著設(shè)計(jì)者需要相對(duì)時(shí)鐘速率交換時(shí)鐘周期,并且這通常是迭代過(guò)程。
因?yàn)镠andel-C指向硬件,在與常規(guī)的ANSI-C編譯器相比時(shí)存在某些編程限制。在設(shè)計(jì)通過(guò)Handel-C能夠編譯的代碼時(shí)需要考慮這些。這些限制中的某些限制特別影響GP系統(tǒng)的構(gòu)鍵。
首先,沒(méi)有??捎?,因此該語(yǔ)言不能直接支持遞歸函數(shù)。這又意味著主要依賴于遞歸的標(biāo)準(zhǔn)GP不能未經(jīng)修改地實(shí)施。其次,對(duì)在FPGA上使用標(biāo)準(zhǔn)邏輯單元能夠?qū)嵤┑拇鎯?chǔ)器的大小存在限制,因?yàn)橐怨璁a(chǎn)業(yè)(slicon real estate)實(shí)施存儲(chǔ)器比較昂貴。然而,某些FPGA具有Handel-C能夠使用的內(nèi)部RAM。例如,Xlinx Virtex和Spartan系列支持Handel-C允許用戶說(shuō)明為RAM或R0M的內(nèi)部存儲(chǔ)器。例如,如下的定義說(shuō)明128個(gè)單元的RAM塊,每個(gè)單元8個(gè)位的寬,它可作為正常的陣列存取,ram int 8 mem[128];使用RAM或ROM的限制在于除了每個(gè)時(shí)鐘周期一次之外不能存取它,因此限制了存取它的代碼的并行執(zhí)行的潛力。
第三,不允許表達(dá)式具有附帶的作用,因?yàn)檫@會(huì)破壞單周期賦值規(guī)則。因此不允許如下的代碼,a=++b;需要將它重寫(xiě)為b=b+1;a=b;Handel-C支持兩個(gè)目標(biāo)。第一個(gè)目標(biāo)是允許不需要使用任何硬件就可開(kāi)發(fā)和測(cè)試代碼的仿真器目標(biāo)。這由調(diào)試程序和其它的工具支持。第二個(gè)目標(biāo)是輸入到安置和路由工具的網(wǎng)表的合成。網(wǎng)表是門和它們的連接的形式描述。安置和路由是將網(wǎng)表轉(zhuǎn)換為硬件設(shè)計(jì)的過(guò)程。這允許將設(shè)計(jì)轉(zhuǎn)換為特定的芯片的配置數(shù)據(jù)。在附圖3中示出了該過(guò)程的概圖。從該仿真器中中可進(jìn)行循環(huán)計(jì)數(shù)分析,并通過(guò)Handel-C編譯器產(chǎn)生門計(jì)數(shù)估計(jì)。為獲得明確的時(shí)序信息和實(shí)際的硬件用途,需要調(diào)用安置和路由工具。
FPGA已經(jīng)用于實(shí)施GP系統(tǒng)的一部分。在“Register-basedGenetic Programming on FPGA computing platforms”(M I Heywoodand A N Zincir-Heywood;Genetic Programming,Proceedings ofEuro GP 2000 Volume 1802 of LNCS,pages 44-59,Edinburgh 15-16April 2000;Springer-Verlag)中所描述的系統(tǒng)使用更傳統(tǒng)的FPGA工具進(jìn)行仿真。在他的文章中提出使用FPGA僅用于評(píng)估個(gè)體、交互執(zhí)行情況和交叉情況。
Koza等人使用FPGA加快分類網(wǎng)絡(luò)的適應(yīng)性(fitness)的評(píng)估“Evolving sorting networks using genetic programming and therapidly configurable Xillinx 6216 field-programmable gatearray”(John R Koza et al;Proceedings of the 31st AsilomarConference on Signals,System and Computers;IEEE Press,1997)。在這篇文章中僅使用FPGA執(zhí)行適應(yīng)性評(píng)估。通過(guò)主機(jī)形成初始總體(population),然后將個(gè)體下載到FPGA,并指令FPGA評(píng)估個(gè)體的適應(yīng)性。通過(guò)主機(jī)再次執(zhí)行隨后的選擇和繁殖。
下面的段落描述在硬件中實(shí)施GP的一般性設(shè)計(jì)決策。
目的在于實(shí)現(xiàn)以硬件完成GP系統(tǒng)。這是初始對(duì)象總體產(chǎn)生、適應(yīng)性評(píng)估、繁殖和最后結(jié)果的傳送。這與使用采用遺傳程序設(shè)計(jì)的FPGA的所有其它實(shí)例相反。這種高級(jí)目的指導(dǎo)如下的許多設(shè)計(jì)決策。
在使用Handel-C時(shí)缺乏內(nèi)置棧使得應(yīng)用遞歸函數(shù)困難。雖然有從算法中刪除遞歸的十分公知的方法,但是仍然要求某些形式的棧存儲(chǔ)中間結(jié)果。這種標(biāo)準(zhǔn)的樹(shù)形表示的替換方案是線性GP系統(tǒng)。內(nèi)部表示的細(xì)節(jié)取決于字的大小、函數(shù)數(shù)量和所使用的終端的數(shù)量,這些都取決于所處理的問(wèn)題。對(duì)于當(dāng)前的工作,為簡(jiǎn)單起見(jiàn)選擇寄存器狀機(jī)。在表1中給出了指令的一般設(shè)計(jì)。每個(gè)程序是指令與某些控制信息在一起的陣列。為簡(jiǎn)化控制程序,每個(gè)程序都是固定的大小,具有存儲(chǔ)它的最大的有效長(zhǎng)度。在表2中示出了程序的表示。
表1指令的一般設(shè)計(jì)
表2個(gè)體的一般設(shè)計(jì)根據(jù)本發(fā)明,提供一種在硬件中實(shí)施完整的進(jìn)化算法的在配置時(shí)不受約束的可配置的硬件邏輯裝置,配置的硬件邏輯裝置包括(a)具有輸出并設(shè)置成在輸出中產(chǎn)生個(gè)體的初始對(duì)象總體的對(duì)象總體產(chǎn)生裝置;(b)具有輸入和第一和第二輸出的適應(yīng)性評(píng)估裝置,該總體產(chǎn)生裝置的輸出連接到適應(yīng)性評(píng)估裝置的輸入,并且該適應(yīng)性評(píng)估裝置設(shè)置成對(duì)個(gè)體的初始總體實(shí)施適應(yīng)性測(cè)試并在適應(yīng)性評(píng)估裝置的第一輸出中提供適應(yīng)性測(cè)試結(jié)果和相應(yīng)的個(gè)體;(c)選擇器裝置,該選擇器裝置具有輸入和輸出,并被設(shè)置成基于從所述適應(yīng)性評(píng)估裝置的輸出連接到該選擇器裝置的輸入的相應(yīng)的個(gè)體和適應(yīng)性測(cè)試結(jié)果選擇初始總體的一個(gè)或多個(gè)個(gè)體并在選擇器裝置的輸出中提供所選擇的一個(gè)或多個(gè)個(gè)體;(d)繁殖裝置,該繁殖裝置具有連接到選擇器裝置的輸入,并被設(shè)置成從所選擇的一個(gè)或多個(gè)個(gè)體中繁殖個(gè)體的進(jìn)一步總體,以及具有將個(gè)體的進(jìn)一步的總體連接到適應(yīng)性評(píng)估裝置的輸入中的輸出;該適應(yīng)性評(píng)估裝置可以進(jìn)一步設(shè)置成在它的第二輸出從個(gè)體的進(jìn)一步的總體中提供單個(gè)的優(yōu)選的個(gè)體。
進(jìn)一步提供一種在硬件中實(shí)施完整的進(jìn)化算法方法,包括構(gòu)造不受約束的硬件邏輯裝置以便實(shí)施如下的步驟(e)形成個(gè)體的初始總體;(f)評(píng)估個(gè)體的初始總體的適應(yīng)性;(g)從它的初始總體中選擇一個(gè)或多個(gè)個(gè)體;(h)從所選擇的一個(gè)或多個(gè)個(gè)體中繁殖個(gè)體的進(jìn)一步總體;(i)評(píng)估個(gè)體的進(jìn)一步的總體的適應(yīng)性;(j)基于個(gè)體的進(jìn)一步的總體的適應(yīng)性從個(gè)體的進(jìn)一步的總體中選擇一個(gè)優(yōu)選的個(gè)體。
現(xiàn)在通過(guò)舉例參考附圖描述本發(fā)明,在附圖中附圖1所示為FGPA的一般模型;附圖2所示為CLB的一般模型;附圖3所示為將代碼轉(zhuǎn)換為硬件的過(guò)程的概圖;附圖4所示為線性反饋移位寄存器隨機(jī)數(shù)發(fā)生器的附圖;附圖5所示為用于實(shí)施總體的一次適應(yīng)性函數(shù)評(píng)估的周期數(shù);附圖6所示為問(wèn)題的總的周期數(shù);和附圖7所示為隨著并行適應(yīng)性評(píng)估數(shù)量的增加估計(jì)的NAND的門計(jì)數(shù)。
在當(dāng)前的工作和其它的工作之間的關(guān)鍵不同在于它不局限于微處理器設(shè)計(jì)者所看到的實(shí)施的裝配的函數(shù)集。這就是說(shuō)可以將函數(shù)設(shè)計(jì)為比機(jī)器指令更高等級(jí)的抽象。以更高等級(jí)的抽象表示的函數(shù)集的問(wèn)題的實(shí)例是函數(shù)和終端設(shè)定要求執(zhí)行的幾個(gè)步驟。如果使用RISC或CISC結(jié)構(gòu)實(shí)施,則每個(gè)步驟將會(huì)要求執(zhí)行幾個(gè)RISC指令。通過(guò)Handel-C可以有效地且簡(jiǎn)潔地對(duì)這些函數(shù)進(jìn)行編碼。
硬件的一個(gè)關(guān)鍵優(yōu)點(diǎn)在于能夠設(shè)計(jì)真正并行的機(jī)器。為了最充分地利用可用的硅,選擇那些并行需要某些維護(hù)的部件。GP的三個(gè)主要的階段是初始總體形成、所有的個(gè)體的適應(yīng)性評(píng)估和新代的繁殖。由于第一階段僅執(zhí)行一次,為加速這個(gè)階段而消耗了過(guò)量的硅資源,因此幾乎不存在優(yōu)勢(shì)。在處理資源方面適應(yīng)性的評(píng)估通常采用被認(rèn)為是最昂貴的,因此這是形成并行階段的主要候選者。繁殖階段通常認(rèn)為明顯如適應(yīng)性評(píng)估重要,因此在關(guān)鍵部分中僅在形成這種并行性的過(guò)程中存在一定的優(yōu)點(diǎn)。
在這個(gè)工作中使用的設(shè)計(jì)利用可能的所有的簡(jiǎn)單語(yǔ)句的并行執(zhí)行。因?yàn)樵趫?zhí)行兩個(gè)并行賦值的過(guò)程中沒(méi)有損失,因此不管GP的階段如何都完成這些;無(wú)論如何為每次賦值形成硬件。在函數(shù)開(kāi)始時(shí)在對(duì)變量初始化時(shí)這特別有用。
適應(yīng)性評(píng)估階段通過(guò)同時(shí)執(zhí)行大量的評(píng)估來(lái)利用并行能力。如果問(wèn)題具有總共P個(gè)總體大小,則對(duì)大小為S=P/n個(gè)個(gè)體的子總體進(jìn)行并行評(píng)估。為使這盡可能地有效并最大限度地利用硬件,所有的參數(shù)設(shè)置都是2的冪。因此如果P=16和n=4則S=4。通過(guò)使用在Handel-C中直接插入關(guān)鍵詞實(shí)施并行評(píng)估。這就使得按照要求產(chǎn)生多個(gè)硬件拷貝。
在GP中隨機(jī)數(shù)發(fā)生器(RNG)用于主要的步驟中的兩個(gè)步驟。首先,在初始總體形成過(guò)程中,其次,在繁殖階段中。在使用Handel-C時(shí),因?yàn)樗a(chǎn)生的深度邏輯的緣故,使用根據(jù)硅的標(biāo)準(zhǔn)的乘和除指令無(wú)效。因?yàn)檫@個(gè)原因拒絕使用通常所看到的常規(guī)的線性同余發(fā)生器。而是使用線性反饋移位寄存器(LFSR)設(shè)計(jì)。選擇64的字大小,因?yàn)樗梢杂行У貙?shí)施在標(biāo)準(zhǔn)調(diào)制CPU上,因此LFSR可以容易地轉(zhuǎn)向到ANSI-C中。重要的是選擇好的多項(xiàng)式以確保RNG能夠形成2n-1隨機(jī)數(shù)的最大序列,同時(shí)將抽頭數(shù)保持最少以便高效率。對(duì)于64位字,使用多項(xiàng)式x64+x4+x3+x2+x1+x0(附圖4示出了多項(xiàng)式的4項(xiàng);64位字的5項(xiàng);x0總是1,因此忽略它)。在附圖4中示出了LFSR的塊圖。
指定RNG以便在一個(gè)周期中產(chǎn)生隨機(jī)數(shù)。然后從64位寄存器中讀取所要求的位數(shù),在第1位中開(kāi)始給出隨機(jī)數(shù)。例如,如果該系統(tǒng)具有8個(gè)指令,則需要3個(gè)位對(duì)指令進(jìn)行編碼。在初始程序形成過(guò)程中,指令的隨機(jī)選擇使用底部的3個(gè)位。Handel-C允許有效的位操作,選擇3個(gè)位的代碼是unsigned int 3 instruction;instruction=randReg[2:0];這里randReg是移位寄存器變量。
在初始化階段中讀取64位端口完成RNG的播種(seeding)。這允許RNG從外部源中播種,比如日鐘的時(shí)間或其它的噪聲源。它也可以允許預(yù)先設(shè)定RNG為產(chǎn)生特定的結(jié)果的公知的種子。
當(dāng)前實(shí)施的發(fā)生器的局限在于不能允許并行執(zhí)行塊產(chǎn)生隨機(jī)數(shù),因?yàn)檫@違反Handel-C的條件,該條件為單個(gè)的函數(shù)不能從并行塊中調(diào)用。這意味著初始程序程序和繁殖階段不能并行。雖然這不能通過(guò)實(shí)施多個(gè)發(fā)生器克服,但是更重要的是將資源用于適應(yīng)性評(píng)估階段。
為保留存儲(chǔ)器,使用穩(wěn)態(tài)繁殖策略。對(duì)于大小為P的總體,每代隨機(jī)地選擇P個(gè)個(gè)體和施加給該個(gè)體的算符。如果算符是交叉或拷貝,則將它當(dāng)作兩個(gè)已經(jīng)處理的個(gè)體。使用2的競(jìng)賽大小的競(jìng)賽法選擇。更大的競(jìng)賽法選擇對(duì)非常小的總體幾乎沒(méi)有意義。
使用下面的概率選擇算符。變異(mutation)10%,交叉70%,拷貝20%。
變異算符通過(guò)在初始程序形成的過(guò)程中重新使用產(chǎn)生程序節(jié)點(diǎn)的功能工作。實(shí)現(xiàn)這些主要是節(jié)約硬件。結(jié)果在于變異可以改變0、1或更多的指令細(xì)節(jié)。
用于線性程序表示的交叉產(chǎn)生某些問(wèn)題,其中它通常希望避免執(zhí)行更大的塊存儲(chǔ)器移動(dòng)。當(dāng)前的工作維持固定的最大程序大小,拷貝從一個(gè)程序到另一個(gè)程序的程序段。通過(guò)利用硬件的并行特征,執(zhí)行塊存儲(chǔ)器拷貝的影響可以減小到可接受的水平。
通過(guò)利用硬件的并行特征,長(zhǎng)度為1的個(gè)體的拷貝要求1+k個(gè)時(shí)鐘周期,這里k表示建立拷貝的較小的開(kāi)銷。
下面的段落描述了選擇測(cè)試使用Handel-C的GP的實(shí)施和進(jìn)行實(shí)驗(yàn)的環(huán)境的問(wèn)題。
進(jìn)行實(shí)驗(yàn)有四個(gè)目的。
l.確定有限的GP系統(tǒng)是否能夠解決所選擇的問(wèn)題;2.確定使用Handel-C是否能夠?qū)嵤┰撓到y(tǒng)并校驗(yàn)該設(shè)計(jì)是否能夠適合在FPGA上;3.獲得表示在常規(guī)的C實(shí)施和硬件實(shí)施之間的某些性能比較;4.確定該設(shè)計(jì)是否可作為硬件實(shí)現(xiàn)并以硬件實(shí)施該設(shè)計(jì)。
兩個(gè)問(wèn)題說(shuō)明了使用Handel-C在硬件中的GP的一般概念。所選擇的兩個(gè)問(wèn)題是回歸問(wèn)題和布爾邏輯問(wèn)題。所選擇的問(wèn)題是a=a+2b。布爾邏輯問(wèn)題是2位XOR函數(shù)x=ab。
在兩個(gè)問(wèn)題中,對(duì)于100%正確的程序的原始適應(yīng)性設(shè)置為零,因此減小了測(cè)試適應(yīng)性所要求的邏輯量。
在這兩個(gè)問(wèn)題中,如果發(fā)現(xiàn)100%正確的程序或者如果評(píng)估到最大的代數(shù)則結(jié)束運(yùn)行。
為滿足上述的目的使用5個(gè)不同的環(huán)境運(yùn)行該問(wèn)題。第一,作為在Linux下運(yùn)行的標(biāo)準(zhǔn)C應(yīng)用程序。這將證明初始程序操作,并使用標(biāo)準(zhǔn)的GNU工具可調(diào)試該應(yīng)用程序。使用gcc v2.95.2編譯該程序并在運(yùn)行Linux的200MHz AMD K6 PC上執(zhí)行。
第二,使用Handel-C編譯該程序,并對(duì)代碼進(jìn)行優(yōu)化以減小邏輯深度,減小門計(jì)數(shù)并增加并行性。
第三,Handel-C實(shí)施可以使用Handel-C仿真器運(yùn)行。這給出了需要執(zhí)行該程序的時(shí)鐘周期的數(shù)量。
第四,使用交叉編譯器編譯C代碼并在Motorola Power-PC結(jié)構(gòu)的指令仿真器中執(zhí)行。執(zhí)行這個(gè)以獲得用于現(xiàn)代處理器所需的指令計(jì)數(shù)和存儲(chǔ)器周期。選擇PowerPC用于這種工作是基于用于PowerPC的易于購(gòu)買的仿真器。通過(guò)使用gcc2.95.2執(zhí)行Power-PC仿真,該gcc2.95.2使用“eabi”調(diào)用約定構(gòu)造為Power-PC交叉編譯器。優(yōu)選這個(gè)版本的程序以使啟動(dòng)開(kāi)銷最小并且不使用任何I/O。因此,盡可能地接近FPGA程序,允許進(jìn)行有意義的性能比較。仿真器本身是內(nèi)置在GNU調(diào)試器(gdb)中的psim。Psim也能夠作為獨(dú)立的應(yīng)用程序運(yùn)行。
最后,Handel-C的輸出用于產(chǎn)生給出設(shè)計(jì)可實(shí)行的最大時(shí)鐘頻率的安置和路由工具的硬件設(shè)計(jì)和所要求的FPGA資源的指示。
對(duì)于Handel-C仿真和硬件實(shí)施,使用最大程度優(yōu)化的Handel-Cv3.0編譯該代碼。使用在Celoxica RC1000開(kāi)發(fā)板上帶的Xlinx VirtexXCV1000-6芯片的Xlinx Design Mangager 3.1i形成最后的FPGA結(jié)構(gòu)數(shù)據(jù)。
FPGA設(shè)計(jì)將它的輸出寫(xiě)到16位端口作為關(guān)鍵碼序列、數(shù)據(jù)對(duì)。這種數(shù)據(jù)可讀取并存儲(chǔ)到磁盤文件中以用后面的分析。寫(xiě)入反匯編程序以對(duì)輸出數(shù)據(jù)進(jìn)行解碼以便進(jìn)行分析。
在測(cè)量Handel-C仿真和Power-PC仿真的時(shí)鐘計(jì)數(shù)時(shí),修改代碼以運(yùn)行到代的最大數(shù)。它們也可用于相同的隨機(jī)數(shù)種子。完成這些以確保使用相同的條件進(jìn)行比較。
選擇8個(gè)指令以用于回歸問(wèn)題,它要求三個(gè)位。每個(gè)指令指定兩個(gè)寄存器,有四個(gè)寄存器可用,每個(gè)寄存器要求2個(gè)位。因此,每個(gè)指令要求7個(gè)位的存儲(chǔ)器。用于這個(gè)問(wèn)題的指令如下·add(Rn,Rm)將Rm的內(nèi)容加入到Rn的內(nèi)容中并將結(jié)果放回Rn中。
·sub(Rn,Rm)將在Rn中的值減去在Rm中的值并將結(jié)果放回Rn中。
·shl(Rn)左移Rn的內(nèi)容一位,將結(jié)果放在Rn中。
·shr表示以類似的方式移位,但是向右移一位。
·nop是非算符函數(shù)。包括這個(gè)以使指令數(shù)為2的冪次。
·halt使評(píng)估結(jié)束,返回在Rn中的值。
·ldim(Rn,Kn)將常數(shù)Kn替換到Rn中。
·jmpifz(Rn,Rm)測(cè)試在Rn中的值,如果該值為0,則跳到在Rm以程序大小為模的位置。
在下面的情況程序終止1.遇到halt指令;2.執(zhí)行在程序中的最后指令;3.jmpifz指令引起了要形成的循環(huán),并且已經(jīng)執(zhí)行了預(yù)定的循環(huán)數(shù)。
實(shí)施這些指令的機(jī)器能夠每?jī)蓚€(gè)時(shí)鐘周期執(zhí)行一個(gè)指令,包括指令取數(shù)據(jù)、解碼、操作數(shù)地址評(píng)估和操作數(shù)讀/寫(xiě)。為進(jìn)一步加速這個(gè)使得能夠構(gòu)造管道,將周期數(shù)減小到每指令一個(gè)。
每個(gè)個(gè)體有四個(gè)隨機(jī)常數(shù)可用。在個(gè)體的構(gòu)造的過(guò)程中形成這些常數(shù)一次。
在本說(shuō)明書(shū)中的大部分回歸實(shí)例包括乘和除函數(shù)。由于這兩個(gè)函數(shù)使用缺省的Handel-C操作符產(chǎn)生了非常深的邏輯,以單個(gè)位左移和右移操作符替換這個(gè)操作符,產(chǎn)生淺得多由此更快的邏輯,并分別乘以2和除以2。
在附圖3中給出了回歸問(wèn)題的完整的參數(shù)集。在適應(yīng)性評(píng)估之前替換在寄存器R0和R1中的輸入值a和b,如果在結(jié)尾終止該程序則讀在寄存器R0中的值,或者如果通過(guò)Halt指令結(jié)束則讀在寄存器Rn中的值。在程序開(kāi)始時(shí)預(yù)先計(jì)算適應(yīng)性數(shù)據(jù)一次,并可用于所有的適應(yīng)性評(píng)估的拷貝中。
表3回歸問(wèn)題的參數(shù)
XOR函數(shù)使用四個(gè)基本邏輯基元AND、OR、NOR和NAND。這些函數(shù)的每個(gè)函數(shù)使用兩個(gè)寄存器Rn和Rm。結(jié)果放在Rn中。已經(jīng)顯示足夠可以解決布爾XOR問(wèn)題。在已經(jīng)指令了在程序中的最后指令時(shí)終止執(zhí)行。
在適應(yīng)性評(píng)估之前兩個(gè)輸入a和b寫(xiě)到寄存器R0和R1中,在適應(yīng)性評(píng)估之后從寄存器R0中讀結(jié)果x。在表4中給出了全部的參數(shù)集。對(duì)于這個(gè)問(wèn)題僅使用四個(gè)函數(shù),每個(gè)指令要求6個(gè)位。
表4XOR問(wèn)題的參數(shù)
在表5中給出了回歸問(wèn)題的仿真器的結(jié)果。對(duì)于PowerPC該數(shù)字是從指令行直接運(yùn)行psim的輸出中得到的,并且指定-Iswitch獲得cpu周期的總體。循環(huán)隊(duì)列考慮管道延遲并預(yù)測(cè)分支程序的失敗,但它并不能考慮任何存儲(chǔ)器子系統(tǒng)的延遲。
表5運(yùn)行回歸問(wèn)題的結(jié)果
給出了兩種情況下的加速系數(shù),原始周期數(shù)和執(zhí)行該程序?qū)嶋H花費(fèi)的時(shí)間。第一個(gè)是根據(jù)原始時(shí)鐘周期進(jìn)行的比較。盡管它們?cè)谙嗤臅r(shí)鐘頻率下運(yùn)行,但仍然將這作為兩個(gè)實(shí)施方式處理。第二個(gè)是使用PPC的典型的時(shí)鐘速率和最快的頻率進(jìn)行的比較,根據(jù)安置和路由工具的報(bào)告對(duì)FPGA進(jìn)行計(jì)時(shí)。加速系數(shù)Speedupcycles=Cyclesppc/Cyclesfpga和時(shí)間的加速系數(shù)Speeduptime=Speedupcycles*Freqppc/Freqfpga。
在一次運(yùn)行的代16中存在的這個(gè)問(wèn)題的(作了注釋的)實(shí)例程序是shl(r1)//r1=b*2add(r1,r2)//nopadd(r0,r1)//r0=a+(b*2)halt(r0)//返回在r0中的結(jié)果使用與回歸問(wèn)題的相同的環(huán)境執(zhí)行XOR問(wèn)題。在表6中給出了結(jié)果。
表6運(yùn)行XOR問(wèn)題的結(jié)果
在一次運(yùn)行的代86中存在的這個(gè)問(wèn)題的(作了注釋的)實(shí)例程序是or(r3,r1)//r3=bor(r3,r0)//r3=a+bor(r2,r1)//nopnand(r0,r1)//r0=aband(r0,r3)//r0=(a+b)ab通過(guò)用不同的子總體大小實(shí)施XOR問(wèn)題并在Handel-C仿真器中運(yùn)行該問(wèn)題測(cè)量使用并行化的效果。連同每個(gè)個(gè)體的最大4個(gè)節(jié)點(diǎn),選擇總的總體大小為8。選擇這些較小的數(shù)量以允許在合理的時(shí)間量中編譯該程序。子總體的數(shù)目每次都修改,使用值1、2、4和8。對(duì)于執(zhí)行初始總體生成的周期數(shù)、評(píng)估第一代的周期數(shù)和對(duì)第一代執(zhí)行繁殖算符的周期數(shù)采集這些數(shù)據(jù)。在表7以表格的形式示出了這些。
表7對(duì)于GP的不同的階段和不同的子總體大小的循環(huán)計(jì)數(shù)和門估計(jì)。
附圖5所示為通過(guò)不同的子總體大小對(duì)于一次適應(yīng)性評(píng)估對(duì)周期數(shù)的影響。從這個(gè)曲線圖中可以看出隨著并行適應(yīng)性評(píng)估數(shù)量的增加,益處減小。這是由于與設(shè)置適應(yīng)性評(píng)估相關(guān)的開(kāi)銷恒定的緣故。如果總體大小更大則這個(gè)影響不如此明顯。
在附圖6中示出了這個(gè)問(wèn)題的周期的總體。對(duì)于16個(gè)代該程序都運(yùn)行。在此可以看到繁殖階段的影響。從使并行適應(yīng)性評(píng)估的數(shù)量從4繁殖到8所獲得的好處僅是把所要求的周期減小了18%。在執(zhí)行并行評(píng)估時(shí)初始總體的貢獻(xiàn)為總的周期的大約7.5%。
最后,測(cè)量增加對(duì)所要求的硬件資源并行適應(yīng)性評(píng)估的數(shù)量的效果。在附圖7中示出了這個(gè)測(cè)量結(jié)果。它顯示所需的硬件資源的大小線性增加。
在前文中討論的XOR程序也可以使用PPC仿真器運(yùn)行。Handel-C版本使用8的子總體大小。結(jié)果在表8中示出。FPGA的最大頻率為67MHz。
表8完全并行的Handel-C程序和PPC仿真器的比較
在此給出了這兩個(gè)問(wèn)題,雖然在與使用GP已經(jīng)解決的許多問(wèn)題相比比較并不十分重要,但是已經(jīng)證明使用Handel-C的一般概念產(chǎn)生在FPGA上能夠運(yùn)行的GP系統(tǒng)。使用類C語(yǔ)言具有某些有價(jià)值的特性,最重要的是可以開(kāi)發(fā)GP算法并使用常規(guī)的軟件工具進(jìn)行測(cè)試。對(duì)于軟件工程師來(lái)說(shuō)這是非常重要的,因?yàn)椴恍枰ㄓ布O(shè)計(jì)。
上文所示的結(jié)果清楚地顯示使用當(dāng)前的實(shí)施方案,增加并行適應(yīng)性評(píng)估的數(shù)量的好處下降到4之上。這是由于在與適應(yīng)性評(píng)估相比較時(shí)繁殖階段占用周期的主要部分。
關(guān)于GP,對(duì)于XOR問(wèn)題速度增加(Speeduptime)19是對(duì)處理更棘手的GP問(wèn)題的重要貢獻(xiàn)。隨著可使用更快的FPGA,可以更進(jìn)一步利用這個(gè)因素。當(dāng)前的Xilinx正推出它的具有450MHz的最大時(shí)鐘速率的Virtex II系列。
雖然在時(shí)鐘周期方面加速是值得的,但是必須記住這個(gè)工作對(duì)操作標(biāo)量數(shù)據(jù)的實(shí)施的常規(guī)指令有影響。通過(guò)運(yùn)行矢量數(shù)據(jù)例如圖像使用FPGA可以獲得更大的增益。使用數(shù)據(jù)矢量可以調(diào)整函數(shù)集以比在本說(shuō)明書(shū)中描述的問(wèn)題更大程度地利用硬件的并行性。
在考慮以布爾邏輯問(wèn)題表示的問(wèn)題時(shí),已經(jīng)顯示子-機(jī)器-代碼GP的技術(shù)能夠在性能方面改善2個(gè)數(shù)量級(jí)。使用FPGA,可能的字大小僅受可用的CLB的限制,因此使用子-機(jī)器-代碼GP和非常長(zhǎng)的字可獲得更大地增加性能的可能性。
通過(guò)嵌入GP系統(tǒng)和直接控制硬件同時(shí)評(píng)估程序的適應(yīng)性,輸入和輸出可以直接編碼在函數(shù)組中。這個(gè)方面的實(shí)例可以是機(jī)器人控制,機(jī)器人控制使用在FPGA上的某些I/O管腳直接讀傳感器輸入并直接產(chǎn)生給機(jī)器人的控制信號(hào)。由于FPGA不需要許多支持電路,因此控制器可以直接嵌入在最小的機(jī)器人中。
至此所給出的兩個(gè)實(shí)例性問(wèn)題(回歸問(wèn)題和XOR問(wèn)題)代表使用本系統(tǒng)可以解決的小問(wèn)題。為解決更大的問(wèn)題,需要增加一個(gè)或多個(gè)如下的參數(shù)1.在一次運(yùn)行中的代數(shù);2.總體的大?。?.在一個(gè)個(gè)體中的節(jié)點(diǎn)數(shù)。
至此所描述的系統(tǒng)可以適應(yīng)代數(shù)的增加,而不作任何改變,但是增加在總體中的個(gè)體數(shù)和/或個(gè)體的大小,因此需要進(jìn)行某些改變。
在FPGA系統(tǒng)中有三種方式實(shí)現(xiàn)隨機(jī)存取存儲(chǔ)器。首先,通過(guò)使用在每個(gè)CLB中提供的單個(gè)位的存儲(chǔ)元件可以合成存儲(chǔ)器。這就得到了通過(guò)并行硬件可以存取的高速存儲(chǔ)器。其次,某些FPGA具有在芯片上的可用的RAM,它可由Handel-C程序使用。這就得到了高速存儲(chǔ)器,但每個(gè)時(shí)鐘每次僅能夠存取一次,由此在存取在并行機(jī)器中的存儲(chǔ)器時(shí)限制了它的有效性。最后,通過(guò)使用某些可用的輸入/輸出管腳可將在芯片之外的RAM連接到FPGA。這就能夠存潛在的許多G字節(jié)的RAM,但損失了存取速度。
將該系統(tǒng)擴(kuò)展到更大的總體大小和更大的個(gè)體要求將總體劃分為在高速合成存儲(chǔ)器中保存的激活子總體和在較慢的在芯片之上的RAM或在芯片之外的RAM中保存的非激活子總體。個(gè)體在較慢的非激活子總體和較快的激活子總體之間移動(dòng)。通過(guò)設(shè)置與主要的評(píng)估和繁殖階段并行地執(zhí)行的個(gè)體的運(yùn)動(dòng),可以使存取較慢的非激活子總體帶來(lái)的延遲最小。
權(quán)利要求
1.一種在硬件中實(shí)施完整的進(jìn)化算法的在配置時(shí)不受約束的可配置的硬件邏輯裝置,配置的硬件邏輯裝置包括(a)總體產(chǎn)生裝置,具有輸出并設(shè)置成在該輸出中產(chǎn)生個(gè)體的初始總體;(b)適應(yīng)性評(píng)估裝置,具有輸入和第一和第二輸出,該總體產(chǎn)生裝置的輸出連接到適應(yīng)性評(píng)估裝置的輸入,并且該適應(yīng)性評(píng)估裝置設(shè)置成對(duì)個(gè)體的初始總體實(shí)施適應(yīng)性測(cè)試并在適應(yīng)性評(píng)估裝置的第一輸出中提供適應(yīng)性測(cè)試結(jié)果和相應(yīng)的個(gè)體;(c)選擇器裝置,該選擇器裝置具有輸入和輸出,并被設(shè)置成基于從適應(yīng)性評(píng)估裝置的輸出連接到該選擇器裝置的輸入的適應(yīng)性測(cè)試結(jié)果和相應(yīng)的個(gè)體來(lái)選擇初始總體的一個(gè)或多個(gè)個(gè)體,并在選擇器裝置的輸出中提供所選擇的一個(gè)或多個(gè)個(gè)體;(d)繁殖裝置,該繁殖裝置具有連接到選擇器裝置的輸出上的輸入,并被設(shè)置成從所選擇的一個(gè)或多個(gè)個(gè)體中繁殖個(gè)體的進(jìn)一步的總體,且具有將所述多個(gè)個(gè)體進(jìn)一步的總體連接到適應(yīng)性評(píng)估裝置的輸入上的輸出;(e)該適應(yīng)性評(píng)估裝置進(jìn)一步設(shè)置成在它的第二輸出從個(gè)體的進(jìn)一步總體中提供單個(gè)的優(yōu)選的個(gè)體。
2.如權(quán)利要求1所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中進(jìn)化算法是遺傳程序設(shè)計(jì)。
3.如權(quán)利要求1或2所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中不受約束的可配置的硬件邏輯裝置是場(chǎng)可編程的門陣列(FPGA)。
4.如權(quán)利要求1、2或3所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,將其配置成執(zhí)行在多個(gè)并行步驟中所選擇的步驟。
5.如權(quán)利要求1至4中任一權(quán)利要求所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中該配置借助于硬件編譯系統(tǒng)的高級(jí)語(yǔ)言。
6.如權(quán)利要求5所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中硬件編譯系統(tǒng)的高級(jí)語(yǔ)言是Handel-C。
7.如前述任一權(quán)利要求所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中不受約束的可配置的硬件邏輯裝置是可重新配置的。
8.如前述任一權(quán)利要求所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中不受約束的可配置的硬件邏輯裝置包括或具有與其連接的隨機(jī)存取存儲(chǔ)器。
9.如前述任何權(quán)利要求所述的在配置時(shí)不受約束的可配置的硬件邏輯裝置,其中不受約束的可配置的硬件邏輯裝置包括配置為隨機(jī)數(shù)發(fā)生器的部件。
10.如前述任何權(quán)利要求所述的不受約束的可配置的硬件邏輯裝置,在配置時(shí)操作標(biāo)量數(shù)據(jù)。
11.如權(quán)利要求1至9中任一權(quán)利要求所述的不受約束的可配置的硬件邏輯裝置,在配置時(shí)操作矢量數(shù)據(jù)。
12.如權(quán)利要求1至9中任一權(quán)利要求所述的不受約束的可配置的硬件邏輯裝置,在配置時(shí)運(yùn)行子-機(jī)器-代碼。
13.一種在硬件中實(shí)施完整的進(jìn)化算法的方法,包括配置不受約束的硬件邏輯裝置以便實(shí)施如下的步驟(a)創(chuàng)建個(gè)體的初始總體;(b)評(píng)估個(gè)體的初始總體的適應(yīng)性;(c)從它的初始總體中選擇一個(gè)或多個(gè)個(gè)體;(d)從所選擇的一個(gè)或多個(gè)個(gè)體中繁殖個(gè)體的進(jìn)一步的總體;(e)評(píng)估個(gè)體的進(jìn)一步的總體的適應(yīng)性;(f)基于個(gè)體的進(jìn)一步的總體的適應(yīng)性從個(gè)體的進(jìn)一步的總體中選擇一個(gè)優(yōu)選的個(gè)體。
14.如權(quán)利要求14所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中進(jìn)化算法是遺傳程序設(shè)計(jì)。
15.如權(quán)利要求13或14所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中不受約束的可配置的硬件邏輯裝置是場(chǎng)可編程的門陣列(FPGA)。
16.如權(quán)利要求13、14或15所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中在多個(gè)并行步驟中執(zhí)行每個(gè)所選擇的步驟。
17.如權(quán)利要求13、14、15或16所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中該配置借助于硬件編譯系統(tǒng)高級(jí)語(yǔ)言。
18.如權(quán)利要求13至21中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中硬件編譯系統(tǒng)的高級(jí)語(yǔ)言是Handel-C。
19.如權(quán)利要求13至18中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,其中不受約束的可配置的硬件邏輯裝置是可重新配置的。
20.如權(quán)利要求13至19中任一權(quán)利要求所述的在硬件中實(shí)施完整的進(jìn)化算法的方法,包括配置不受約束的可配置的硬件邏輯裝置,其中數(shù)據(jù)存儲(chǔ)在隨機(jī)存取存儲(chǔ)器中。
21.如權(quán)利要求13至21中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,,包括配置隨機(jī)數(shù)發(fā)生器。
22.如權(quán)利要求13至21中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,且操作標(biāo)量數(shù)據(jù)。
23.如權(quán)利要求13至21中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,且操作矢量數(shù)據(jù)。
24.如權(quán)利要求13至21中任一權(quán)利要求所述的包括配置不受約束的可配置的硬件邏輯裝置的在硬件中實(shí)施完整的進(jìn)化算法的方法,且操作子-機(jī)器-代碼。
全文摘要
一種配置成在硬件中實(shí)施完整的進(jìn)化算法的不受約束的可配置的硬件邏輯裝置,該配置的硬件邏輯裝置具有(a)產(chǎn)生個(gè)體的初始總體的總體產(chǎn)生裝置;(b)對(duì)個(gè)體的初始總體實(shí)施適應(yīng)性測(cè)試的適應(yīng)性評(píng)估裝置;(c)基于適應(yīng)性測(cè)試的結(jié)果選擇初始總體的個(gè)體的選擇器裝置;(d)從所選擇的個(gè)體中繁殖個(gè)體進(jìn)一步的總體的繁殖裝置;(f)進(jìn)一步設(shè)置成從個(gè)體的進(jìn)一步總體中提供單個(gè)優(yōu)先選擇的個(gè)體的適應(yīng)性評(píng)估裝置。以及本發(fā)明還提供了實(shí)施上述裝置的方法。
文檔編號(hào)G06N3/12GK1500255SQ02805930
公開(kāi)日2004年5月26日 申請(qǐng)日期2002年2月7日 優(yōu)先權(quán)日2001年3月3日
發(fā)明者P·N·馬丁, P N 馬丁 申請(qǐng)人:馬科尼英國(guó)知識(shí)產(chǎn)權(quán)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1