正如這篇連載文章的上篇(見本刊2005年第2期 )所描述的,把定制硬件作為加速軟件性能的指令或協(xié)處理器)來創(chuàng)造的各種可選方案正在演進(jìn)之中。不過,上篇描述的過程假設(shè):硬件工程師以人工方法把軟件轉(zhuǎn)換成硬件。雖然各種新型工具能使這一過程自動(dòng)化,但大多數(shù)根據(jù)軟件描述生成RTL(寄存器傳輸語言)的工具都要求設(shè)計(jì)師至少了解一些要考慮的硬件因素(見附文《把軟件移植到硬件》)。
根據(jù)某一算法規(guī)范或軟件規(guī)范創(chuàng)建硬件并非沒有挑戰(zhàn)。設(shè)計(jì)師把某種算法作為軟件來探索和實(shí)現(xiàn)所需要的技能,不同于用 FPGA 或 ASIC 來實(shí)現(xiàn)該算法所需的技能。軟件設(shè)計(jì)師很少需要考慮系統(tǒng)時(shí)鐘的偏斜、總線的容量和加載、模擬信號(hào)的處理和特性、溫度、功耗以及電磁干擾,而所有這些都會(huì)影響硬件設(shè)計(jì)師優(yōu)化設(shè)計(jì)的方法。軟件采用一種順序計(jì)算模型,而硬件一般處理設(shè)計(jì)師以很高的并行度來實(shí)現(xiàn)的狀態(tài)機(jī)和組合邏輯。
傳統(tǒng)的 EDA 工具處理的是如何在更高的程度上對(duì)硬件進(jìn)行抽象,以提高設(shè)計(jì)師的工作效率。根據(jù)軟件代碼自動(dòng)生成 RTL 的各種工具都有一個(gè)不同的重點(diǎn)。據(jù) CriticalBlue 公司首席執(zhí)行官 David Stewart 說:“挑戰(zhàn)在于如何抽象各種軟件概念,以便工具能把它們作為硬件來實(shí)現(xiàn)。”這些工具是供沒有硬件背景的設(shè)計(jì)師而不是供精通 Verilog 或 VHDL 的硬件設(shè)計(jì)師使用的。這些工具允許在整個(gè)設(shè)計(jì)過程中堅(jiān)持使用軟件開發(fā)方法。它們使算法模型或軟件代碼在整個(gè)項(xiàng)目期間仍然是一個(gè)絕佳的資源,所以,對(duì)它所做的種種修改就能迅速、可靠、自動(dòng)地傳遞到下游的動(dòng)作中。
設(shè)計(jì)師在算法級(jí)要比在硬件級(jí)更容易了解總體情況。與 RTL 級(jí)仿真器相比,算法仿真器和軟件仿真器能在寬得多的時(shí)間段內(nèi)描述相關(guān)系統(tǒng)行為的特性,因此設(shè)計(jì)師就能探索并勾勒出更多的使用環(huán)境。鑒別高級(jí)別行為優(yōu)化所帶來的總系統(tǒng)性能提高要比鑒別低級(jí)別硬件優(yōu)化大得多。軟件轉(zhuǎn)換成硬件這一過程實(shí)現(xiàn)自動(dòng)化,也使設(shè)計(jì)師能探索更多其它的芯片實(shí)現(xiàn)方法,這是因?yàn)檫@些工具可簡(jiǎn)化這種轉(zhuǎn)換工作,并可減少對(duì)設(shè)計(jì)修改所造成影響進(jìn)行評(píng)估的時(shí)間。
這些工具通常通過對(duì)資源的報(bào)告、調(diào)度和顯式映射,支持對(duì)處理速度和面積之間的折衷方案的分析和執(zhí)行。除了生成RTL代碼以外,這些工具還能在驗(yàn)證過程期間節(jié)省設(shè)計(jì)師的時(shí)間,這是因?yàn)樗鼈兡茏詣?dòng)生成的測(cè)試臺(tái)可利用來自各種算法探索工具的促進(jìn)因素。這些工具幾乎都不是獨(dú)立的;當(dāng)它們針對(duì)特定的FPGA器件或工藝技術(shù)時(shí),便可與芯片制造商的工具接口,或直接集成到這些工具中。
正是因?yàn)橐恍┕ぞ吣芨鶕?jù)軟件自動(dòng)生成 RTL 代碼并不意味著把它們用于所有代碼是合理的。一般來說,與軟件相比,硬件實(shí)現(xiàn)方法并不能以更好的成本和性能指標(biāo)來執(zhí)行復(fù)雜的順序操作。適合轉(zhuǎn)換成硬件的候選算法或功能有:能執(zhí)行并行操作,并能受益于運(yùn)行多個(gè)實(shí)例的算法或功能;能利用非標(biāo)準(zhǔn)的數(shù)據(jù)位寬度的算法或功能;能流水線操作的算法或功能;能完成那些執(zhí)行時(shí)間比數(shù)據(jù)傳輸時(shí)間