可重構(gòu)計(jì)算:高效靈活的計(jì)算技術(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在大眾已經(jīng)習(xí)慣的計(jì)算模式中,處理器和專(zhuān)用集成電路(ASIC)一直是兩大主流。伴隨著應(yīng)用領(lǐng)域特別是嵌入式環(huán)境對(duì)系統(tǒng)的性能、能耗、上市時(shí)間等指標(biāo)需求的不斷提高,傳統(tǒng)的計(jì)算模式暴露出了種種弊端??芍貥?gòu)計(jì)算技術(shù)集中了處理器和專(zhuān)用集成電路的優(yōu)勢(shì),能夠提供高效靈活的計(jì)算能力,自上世紀(jì)九十年代以來(lái)越來(lái)越受到業(yè)界的重視。不過(guò),目前對(duì)可重構(gòu)計(jì)算技術(shù)的研究仍舊處于初期階段,還有很多難題等待解決。
可重構(gòu)沖擊傳統(tǒng)計(jì)算模式
面臨一個(gè)應(yīng)用,如何去實(shí)現(xiàn)它?軟件設(shè)計(jì)者會(huì)使用編程語(yǔ)言編寫(xiě)一段代碼,將其編譯后在處理器上執(zhí)行;硬件設(shè)計(jì)者則會(huì)利用原理圖或者硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),然后以專(zhuān)用集成電路的方式實(shí)現(xiàn)。處理器和專(zhuān)用集成電路已經(jīng)成為了傳統(tǒng)計(jì)算模式的兩大主流,我們也已經(jīng)習(xí)慣了這兩種計(jì)算模式。但在和這兩位“老朋友”打交道的時(shí)候,仍舊會(huì)時(shí)不時(shí)感覺(jué)到有很多不盡如人意的地方。
處理器(包括通用處理器和各種專(zhuān)用的嵌入式處理器)計(jì)算模式的特點(diǎn)在于它們都具有各自的指令集,通過(guò)執(zhí)行指令集中的相關(guān)指令來(lái)完成計(jì)算,改寫(xiě)軟件指令就能改變系統(tǒng)實(shí)現(xiàn)的功能,而不用去改動(dòng)底層的硬件環(huán)境。但處理器的運(yùn)算速度要比ASIC慢很多,這主要是因?yàn)樘幚砥鞅仨殢拇鎯?chǔ)器中讀取每條指令,將其譯碼后再執(zhí)行,因而每個(gè)獨(dú)立的操作具有更高的執(zhí)行開(kāi)銷(xiāo)。另外,處理器的指令集是由處理器自身體系結(jié)構(gòu)決定的,沒(méi)有用專(zhuān)門(mén)指令實(shí)現(xiàn)的操作只能使用已有的指令組合來(lái)處理,這也增加了執(zhí)行的開(kāi)銷(xiāo)。
專(zhuān)用集成電路是針對(duì)某一特定應(yīng)用專(zhuān)門(mén)設(shè)計(jì)的硬件電路。專(zhuān)用集成電路計(jì)算模式的特點(diǎn)在于用硬件來(lái)實(shí)現(xiàn)應(yīng)用的操作。因?yàn)獒槍?duì)特定應(yīng)用設(shè)計(jì),所以在執(zhí)行相應(yīng)應(yīng)用時(shí)具有很高的速度、效率和精度。但其缺陷在于開(kāi)發(fā)周期太長(zhǎng),代價(jià)太高。而且硬件電路一旦制作好以后是不能夠被隨意改動(dòng)的。這就意味著如果功能的需求發(fā)生了變化,就需要重新設(shè)計(jì)和重新加工新的專(zhuān)用集成電路芯片。哪怕只是芯片上的很小一部分線路需要修改,也要重新制作整個(gè)芯片。如果針對(duì)各種不同的應(yīng)用都專(zhuān)門(mén)設(shè)計(jì)專(zhuān)用的電路芯片,就會(huì)帶來(lái)高昂的成本。
由此可見(jiàn),現(xiàn)有的主流計(jì)算模式中存在的主要問(wèn)題是:處理器方式能夠靈活地實(shí)現(xiàn)各種應(yīng)用,但卻在性能上有缺陷;而硬件邏輯實(shí)現(xiàn)性能雖然高,但靈活性卻很差。為了在計(jì)算性能和實(shí)現(xiàn)靈活性上做一個(gè)很好的權(quán)衡,可重構(gòu)計(jì)算(Reconfigurable Computing)技術(shù)浮出了水面。
技術(shù)發(fā)展現(xiàn)狀
可重構(gòu)計(jì)算的概念早在上個(gè)世紀(jì)六七十年代就有學(xué)者以不同的表述方式提出過(guò)。由于技術(shù)條件的限制,直到九十年代中期才逐漸興起。目前比較權(quán)威的定義是“設(shè)立物理控制點(diǎn)定制硬件該如何工作,通過(guò)改動(dòng)這些控制點(diǎn)使用戶能夠使用相同的硬件執(zhí)行不同的應(yīng)用”。當(dāng)前已經(jīng)有多個(gè)基于可重構(gòu)計(jì)算技術(shù)的原型系統(tǒng)被開(kāi)發(fā)出來(lái),運(yùn)用在自動(dòng)目標(biāo)識(shí)別、串匹配、數(shù)據(jù)壓縮等應(yīng)用領(lǐng)域,取得了非常好的效果。最近幾年,可重構(gòu)計(jì)算技術(shù)已經(jīng)邁過(guò)了探索階段,研究者們開(kāi)始更深入地對(duì)可重構(gòu)計(jì)算通用模型進(jìn)行研究,為后續(xù)的可重構(gòu)計(jì)算系統(tǒng)的廣泛應(yīng)用打好基礎(chǔ)。
當(dāng)前在研的可重構(gòu)計(jì)算系統(tǒng)往往由一個(gè)或多個(gè)可重構(gòu)邏輯器件以協(xié)處理器的方式和一個(gè)通用處理器耦合而成,如圖2所示。這里的可重構(gòu)邏輯器件可以是系統(tǒng)定制的,也可以是商業(yè)化的部件(如FPGA芯片)。對(duì)可重構(gòu)邏輯器件進(jìn)行的配置可以使它實(shí)現(xiàn)相應(yīng)的功能,能夠以準(zhǔn)ASIC的計(jì)算速度對(duì)應(yīng)用中的計(jì)算密集部分給予加速執(zhí)行以提高整個(gè)應(yīng)用的執(zhí)行性能。系統(tǒng)中的通用處理器主要負(fù)責(zé)對(duì)可重構(gòu)邏輯器件進(jìn)行資源管理和任務(wù)調(diào)度。另外,應(yīng)用中存在的那些不能夠采用硬件邏輯實(shí)現(xiàn)或者采用硬件實(shí)現(xiàn)也不會(huì)帶來(lái)很大性能收益的部分也需要在通用處理器上編程實(shí)現(xiàn),例如遞歸操作。因?yàn)槊恳粚舆f歸都需要使用相同的資源,而遞歸的層數(shù)又往往不能預(yù)先知道,硬件無(wú)法預(yù)留夠充足的資源,所以此類(lèi)操作適合在通用處理器上實(shí)現(xiàn)。
可重構(gòu)計(jì)算技術(shù)的研究對(duì)可重構(gòu)邏輯器件的開(kāi)發(fā)有著極強(qiáng)的依賴(lài)性。正是由于可重構(gòu)計(jì)算系統(tǒng)中使用了可編程邏輯器件,才使得它能夠高效靈活地實(shí)現(xiàn)多種應(yīng)用。在研究的早期,研究者們受到可重構(gòu)邏輯器件的限制,并不能開(kāi)展很多卓有成效的工作。因?yàn)槿狈y(tǒng)一的可重構(gòu)硬件平臺(tái),一些研究機(jī)構(gòu)針對(duì)某些特定應(yīng)用開(kāi)發(fā)了自己相應(yīng)的可重構(gòu)邏輯器件。這些器件缺乏一致的模型,彼此間不兼容,不具有普適性。而專(zhuān)門(mén)的可重構(gòu)邏輯器件開(kāi)發(fā)帶來(lái)的高昂代價(jià)也給可重構(gòu)計(jì)算技術(shù)的普及設(shè)置了巨大的障礙。伴隨著超大規(guī)模集成電路技術(shù)的不斷進(jìn)步,集成在芯片上的門(mén)電路數(shù)目可以做到“數(shù)以百萬(wàn)計(jì)”,這使得業(yè)界能夠設(shè)計(jì)出功能強(qiáng)大結(jié)構(gòu)復(fù)雜的可重構(gòu)邏輯器件,也昭示著可重構(gòu)計(jì)算技術(shù)迎來(lái)了發(fā)展的大好時(shí)機(jī)。當(dāng)前的很多商業(yè)化可重構(gòu)邏輯器件具備有充足的可編程邏輯資源,有的芯片上還集成了乘法器、RAM等結(jié)構(gòu),在最近的高端產(chǎn)品上更是集成了處理器核來(lái)增強(qiáng)系統(tǒng)的功能和性能。
當(dāng)前,可重構(gòu)計(jì)算技術(shù)的研究焦點(diǎn)在于動(dòng)態(tài)可重構(gòu)技術(shù)特別是運(yùn)行時(shí)(run-time)可重構(gòu)技術(shù)。所謂動(dòng)態(tài)可重構(gòu)技術(shù),是相對(duì)于靜態(tài)可重構(gòu)技術(shù)而言的。靜態(tài)可重構(gòu)技術(shù)是指在可重構(gòu)計(jì)算系統(tǒng)開(kāi)始執(zhí)行任務(wù)時(shí),一次性將可重構(gòu)邏輯器件配置為系統(tǒng)所需的某個(gè)或幾個(gè)功能。這些配置好的功能在整個(gè)任務(wù)執(zhí)行期間不會(huì)被改變。直到系統(tǒng)完成該任務(wù)后,可重構(gòu)邏輯器件才可以被配置為其他的功能去完成別的任務(wù)。動(dòng)態(tài)可重構(gòu)技術(shù)與此相反,在任務(wù)執(zhí)行過(guò)程中可重構(gòu)邏輯器件的功能可以被隨時(shí)改變。
運(yùn)行時(shí)可重構(gòu)技術(shù)建立在動(dòng)態(tài)可重構(gòu)技術(shù)的基礎(chǔ)之上,它能夠在器件上已有任務(wù)正常執(zhí)行的同時(shí)對(duì)器件的空閑資源進(jìn)行新的配置。運(yùn)行時(shí)可重構(gòu)技術(shù)可以根據(jù)應(yīng)用實(shí)現(xiàn)中的實(shí)際需求,對(duì)可重構(gòu)邏輯器件上的資源做相應(yīng)的調(diào)配。它能夠更充分地利用可重構(gòu)邏輯器件上的資源,并且使硬件去“適應(yīng)”應(yīng)用的需求做調(diào)整成為可能。運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)的研究還存在很多技術(shù)難點(diǎn),有的已經(jīng)造成了當(dāng)前可重構(gòu)計(jì)算技術(shù)發(fā)展的瓶頸。
技術(shù)優(yōu)勢(shì)和應(yīng)用前景
可重構(gòu)計(jì)算技術(shù)除了具有較高的性能和較大的靈活性以外,還具有很多其他優(yōu)勢(shì),例如系統(tǒng)能耗低、可靠性高等等。這些優(yōu)勢(shì)使得可重構(gòu)計(jì)算技術(shù)在各個(gè)應(yīng)用領(lǐng)域特別是嵌入式應(yīng)用領(lǐng)域有著廣闊的應(yīng)用前景。
在過(guò)去的研究中已經(jīng)發(fā)現(xiàn),很多嵌入式應(yīng)用,例如多媒體應(yīng)用、加/解密應(yīng)用以及通信應(yīng)用等都具有它們固有的執(zhí)行特征。
多媒體應(yīng)用具有較多的整數(shù)算術(shù)指令,這主要是因?yàn)榇蠖鄶?shù)多媒體應(yīng)用中執(zhí)行的都是定點(diǎn)數(shù)據(jù)上的算術(shù)密集型信號(hào)處理操作。
加/解密應(yīng)用中主要是位運(yùn)算操作,而且在執(zhí)行過(guò)程中極少出現(xiàn)分支指令,位運(yùn)算操作可以通過(guò)移位操作和邏輯運(yùn)算來(lái)實(shí)現(xiàn)。
通信應(yīng)用的特征是使用大量的分支指令,這主要是由通信應(yīng)用中復(fù)雜的控制流導(dǎo)致的,但其中較少使用到算術(shù)和移位等操作。
可以看到,這幾類(lèi)應(yīng)用都是屬于計(jì)算密集型應(yīng)用,可以利用硬件加速計(jì)算核心的執(zhí)行來(lái)提高整個(gè)應(yīng)用的性能。應(yīng)用中較少使用到浮點(diǎn)算術(shù)操作,這一點(diǎn)也正好適合利用硬件實(shí)現(xiàn)。在多媒體和通信應(yīng)用中,大量的操作都是針對(duì)寬度為一個(gè)或多個(gè)字節(jié)的數(shù)據(jù)進(jìn)行的,而在加/解密應(yīng)用中主要處理的是寬度為1的位數(shù)據(jù)。針對(duì)應(yīng)用中的這些差異,當(dāng)前的商業(yè)化可重構(gòu)邏輯器件中提供了大量的不同粒度的資源來(lái)支持不同數(shù)據(jù)寬度的計(jì)算。因此,上述在嵌入式領(lǐng)域中的主流應(yīng)用都非常適合利用可重構(gòu)計(jì)算技術(shù)實(shí)現(xiàn)。
可重構(gòu)計(jì)算技術(shù)具有很好的低能耗特征。在傳統(tǒng)的處理器計(jì)算模式中,大量的能耗耗費(fèi)在指令的取指、譯碼過(guò)程中;IC模式則因?yàn)樵谟布娐返脑O(shè)計(jì)過(guò)程中針對(duì)特定應(yīng)用進(jìn)行充分優(yōu)化,具有較低的能耗損失。在可重構(gòu)計(jì)算系統(tǒng)中,能耗最高的計(jì)算核心部分轉(zhuǎn)移到了可重構(gòu)邏輯器件上執(zhí)行,減輕了通用處理器的負(fù)擔(dān),減少了相關(guān)的能耗。當(dāng)應(yīng)用在可重構(gòu)邏輯器件上執(zhí)行時(shí),可重構(gòu)邏輯器件還可以利用自己的器件特性做調(diào)整來(lái)達(dá)到減少系統(tǒng)能耗的目的。例如,在現(xiàn)有的商業(yè)化可重構(gòu)邏輯器件中,芯片上同時(shí)存在著多個(gè)時(shí)鐘域,不同的時(shí)鐘域可以具有各自的時(shí)鐘頻率??芍貥?gòu)邏輯器件能夠?yàn)樾酒嫌糜趫?zhí)行應(yīng)用的那部分資源提供高的時(shí)鐘頻率以提高性能,同時(shí)可以將其他閑置部分的時(shí)鐘頻率降低以降低能耗,甚至有的器件可以利用門(mén)控時(shí)鐘對(duì)芯片上沒(méi)有在執(zhí)行計(jì)算任務(wù)的部分給予斷電處理,進(jìn)一步降低整個(gè)系統(tǒng)的能耗損失。
可重構(gòu)計(jì)算技術(shù)還具有天生的容錯(cuò)(fault-tolerant)特性。因?yàn)榭芍貥?gòu)邏輯器件的可重構(gòu)特性為錯(cuò)誤的檢測(cè)、診斷提供了方便。同時(shí),可重構(gòu)邏輯器件擁有大量的可重構(gòu)邏輯資源,又為錯(cuò)誤的掩蓋、修復(fù)提供了基礎(chǔ)。當(dāng)可重構(gòu)邏輯器件上出現(xiàn)錯(cuò)誤,導(dǎo)致系統(tǒng)故障的時(shí)候,可以將可重構(gòu)邏輯器件上的一部分配置為測(cè)試模式發(fā)生器,對(duì)器件上的某些區(qū)域做測(cè)試,同時(shí)還可以利用器件上的其他資源對(duì)測(cè)試結(jié)果進(jìn)行分析,以得到具體的錯(cuò)誤信息。一旦將錯(cuò)誤定位后,可以采用對(duì)可重構(gòu)邏輯器件重新配置的方法,避開(kāi)產(chǎn)生錯(cuò)誤的芯片區(qū)域,利用其周邊的其他可重構(gòu)邏輯資源組合替代原本在出錯(cuò)區(qū)域上實(shí)現(xiàn)的功能。可重構(gòu)計(jì)算系統(tǒng)的高容錯(cuò)性和極強(qiáng)的可靠性滿足了惡劣的工作環(huán)境對(duì)計(jì)算系統(tǒng)的苛刻要求,因此當(dāng)前在航空航天軍事等領(lǐng)域?qū)芍貥?gòu)計(jì)算系統(tǒng)的需求逐漸增大,例如NASA就已經(jīng)將運(yùn)行時(shí)可重構(gòu)計(jì)算系統(tǒng)的研發(fā)和應(yīng)用列入了2005年的火星探測(cè)計(jì)劃當(dāng)中。
可重構(gòu)計(jì)算技術(shù)大大縮短了產(chǎn)品上市時(shí)間??芍貥?gòu)邏輯器件在很長(zhǎng)一段時(shí)間里主要用于進(jìn)行硬件系統(tǒng)的原型設(shè)計(jì)。這一點(diǎn)在當(dāng)前新的應(yīng)用需求下有了進(jìn)一步發(fā)展。利用可重構(gòu)計(jì)算技術(shù)的原型系統(tǒng)在經(jīng)過(guò)針對(duì)不同應(yīng)用的不同配置后就成為了相應(yīng)的產(chǎn)品可以直接投放市場(chǎng),這消除了需要針對(duì)各個(gè)應(yīng)用進(jìn)行單獨(dú)設(shè)計(jì)帶來(lái)的時(shí)間開(kāi)銷(xiāo),同時(shí)減少了設(shè)計(jì)中出現(xiàn)錯(cuò)誤的概率,系統(tǒng)的可靠性也得到了提高。另外,當(dāng)前的很多應(yīng)用領(lǐng)域瞬息萬(wàn)變,各種新標(biāo)準(zhǔn)新應(yīng)用層出不窮。在這種情況下,可重構(gòu)計(jì)算系統(tǒng)能夠“以不變應(yīng)萬(wàn)變”,仍舊利用現(xiàn)有資源,根據(jù)實(shí)際情況及時(shí)調(diào)整系統(tǒng)功能以滿足市場(chǎng)需求。
在一些關(guān)鍵任務(wù)執(zhí)行中,很多任務(wù)要到開(kāi)始前一刻才能最終確定,可重構(gòu)計(jì)算系統(tǒng)的存在無(wú)疑為這類(lèi)應(yīng)用也提供了有力的支持。仍舊以NASA為例,他們?cè)诤教祜w機(jī)發(fā)射前的幾個(gè)小時(shí)內(nèi),才會(huì)把當(dāng)前的一些重要信息配置到機(jī)上的可重構(gòu)邏輯器件中。在火星車(chē)的設(shè)計(jì)中,也在大量關(guān)鍵部件上使用了可重構(gòu)邏輯器件,以滿足系統(tǒng)可能的變動(dòng)要求。
可重構(gòu)計(jì)算技術(shù)還有很多優(yōu)勢(shì)。例如,相對(duì)于傳統(tǒng)的一個(gè)平臺(tái)支持一個(gè)應(yīng)用的做法,可重構(gòu)計(jì)算系統(tǒng)中的同一套硬件設(shè)備可以支持多個(gè)應(yīng)用,大大減輕了系統(tǒng)重量,這對(duì)于那些對(duì)重量有著嚴(yán)格要求的應(yīng)用領(lǐng)域非常有利。比如,嵌入式領(lǐng)域的“穿戴計(jì)算”,還有航天領(lǐng)域里的衛(wèi)星系統(tǒng)等等。
當(dāng)前的可重構(gòu)計(jì)算技術(shù)主要還是用于尖端技術(shù)領(lǐng)域中的計(jì)算平臺(tái),但隨著可重構(gòu)邏輯器件成本逐漸降低,運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)不斷完善,我們有理由相信可重構(gòu)計(jì)算技術(shù)具備的種種優(yōu)勢(shì)會(huì)使其在更多的領(lǐng)域里大有作為。
面臨的關(guān)鍵難題
前文已經(jīng)提到,可重構(gòu)計(jì)算技術(shù)的研究焦點(diǎn)是運(yùn)行時(shí)可重構(gòu)技術(shù)。對(duì)運(yùn)行時(shí)可重構(gòu)技術(shù)的研究和應(yīng)用主要是為了解決在下述兩種情況下可重構(gòu)計(jì)算系統(tǒng)中存在的問(wèn)題。
第一種情況是為了減少應(yīng)用執(zhí)行的啟動(dòng)時(shí)間??芍貥?gòu)計(jì)算系統(tǒng)可以先在器件上配置好應(yīng)用執(zhí)行的啟動(dòng)所必需的功能,讓?xiě)?yīng)用運(yùn)行起來(lái)。在應(yīng)用開(kāi)始執(zhí)行的同時(shí)再在器件的其他部分上配置出后續(xù)執(zhí)行所需要的功能,而不必等待整個(gè)應(yīng)用都配置完成后才開(kāi)始運(yùn)行,如圖3所示。
第二種情況是利用有限的資源處理大規(guī)模應(yīng)用。如果某個(gè)規(guī)模較大的應(yīng)用在實(shí)現(xiàn)時(shí)所需的可重構(gòu)邏輯資源超過(guò)了可重構(gòu)邏輯器件可以供給的最大資源量,這時(shí)可重構(gòu)計(jì)算系統(tǒng)會(huì)將大的應(yīng)用劃分為多個(gè)在執(zhí)行時(shí)具有先后次序的子部分。在應(yīng)用執(zhí)行過(guò)程中,某個(gè)先執(zhí)行的子部分完成工作后,可以在其占據(jù)的器件資源上按次序配置后續(xù)的應(yīng)用子部分,以此來(lái)保證應(yīng)用的正確實(shí)現(xiàn),如圖4所示。
運(yùn)行時(shí)可重構(gòu)技術(shù)研究的深入和成熟還能夠促進(jìn)其他相關(guān)領(lǐng)域的計(jì)算技術(shù)得到長(zhǎng)足進(jìn)展,例如進(jìn)化硬件和系統(tǒng)容錯(cuò)技術(shù)等。但在當(dāng)前,運(yùn)行時(shí)可重構(gòu)技術(shù)還面臨著一些關(guān)鍵問(wèn)題亟待解決:
可重構(gòu)邏輯器件的支持??芍貥?gòu)計(jì)算技術(shù)的發(fā)展對(duì)可重構(gòu)邏輯器件有著很強(qiáng)的依賴(lài)性。當(dāng)前的器件功能和性能都有了很大提升,已經(jīng)能夠?qū)\(yùn)行時(shí)可重構(gòu)技術(shù)提供相關(guān)支持。例如,運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)需要能夠在不影響任務(wù)正常執(zhí)行的情況下,對(duì)器件的空閑資源進(jìn)行配置。相應(yīng)的,當(dāng)前的商業(yè)可重構(gòu)邏輯器件能夠提供部分重構(gòu)(partial-reconfiguration)的能力。但是現(xiàn)在存在的最大問(wèn)題在于器件配置過(guò)程耗費(fèi)的時(shí)間比較長(zhǎng)。隨著芯片上的可重構(gòu)邏輯資源數(shù)量越來(lái)越多,相應(yīng)的配置文件規(guī)模也越來(lái)越大,配置過(guò)程需要毫秒量級(jí)的時(shí)間,但是可重構(gòu)邏輯器件上的應(yīng)用是以微/納秒量級(jí)的時(shí)間在執(zhí)行,因此配置過(guò)程成為了整個(gè)系統(tǒng)的瓶頸。經(jīng)常會(huì)發(fā)生應(yīng)用執(zhí)行到一半,但后續(xù)功能還沒(méi)有配置好的情況。這時(shí)候應(yīng)用的執(zhí)行可能會(huì)使用到錯(cuò)誤的配置,因此它必須等待,這極大地降低了系統(tǒng)性能。還有一種可重構(gòu)邏輯器件能夠?yàn)檫\(yùn)行時(shí)可重構(gòu)技術(shù)提供支持,它被稱(chēng)做多上下文(multi-context)器件。這種器件的特點(diǎn)在于,它將器件的多個(gè)配置文件存儲(chǔ)在芯片上,當(dāng)需要發(fā)生功能切換時(shí),能夠在單周期內(nèi)完成器件的配置。但是這種器件技術(shù)目前尚未成熟。
軟/硬件任務(wù)的劃分。在可重構(gòu)計(jì)算系統(tǒng)中,存在著可重構(gòu)邏輯器件和通用處理器兩大部分。如何使一個(gè)應(yīng)用高效運(yùn)行在可重構(gòu)計(jì)算系統(tǒng)上,首先就需要對(duì)應(yīng)用進(jìn)行任務(wù)劃分,將軟/硬件任務(wù)分別映射到通用處理器和可重構(gòu)邏輯器件上執(zhí)行。在任務(wù)的劃分中,要充分考慮到任務(wù)執(zhí)行的特征,把那些負(fù)擔(dān)繁重并且性能要求高的計(jì)算任務(wù)劃分為硬件任務(wù),同時(shí)把那些不適合用硬件加速執(zhí)行的任務(wù)和對(duì)硬件資源進(jìn)行管理的任務(wù)劃分為軟件任務(wù)。軟/硬件任務(wù)間的通信是一個(gè)需要重點(diǎn)思考的問(wèn)題。當(dāng)前的很多可重構(gòu)計(jì)算系統(tǒng)采用的都是軟/硬件任務(wù)非并行執(zhí)行的方式。當(dāng)軟件任務(wù)執(zhí)行到某個(gè)點(diǎn)的時(shí)候,會(huì)將應(yīng)用執(zhí)行的控制權(quán)交給可重構(gòu)邏輯器件,然后軟件任務(wù)會(huì)一直等待可重構(gòu)邏輯器件將計(jì)算結(jié)果和控制權(quán)返回給通用處理器再繼續(xù)執(zhí)行。這無(wú)疑降低了系統(tǒng)的性能。更先進(jìn)的做法是軟件任務(wù)可以和硬件任務(wù)并行執(zhí)行,兩者間以中斷或者其他方式互相通告狀態(tài)和傳遞數(shù)據(jù)。但是這么做會(huì)引入數(shù)據(jù)一致性、任務(wù)間同步等問(wèn)題,加大了系統(tǒng)管理的難度。軟/硬件任務(wù)的劃分一直以來(lái)都是在嵌入式系統(tǒng)研究中的難點(diǎn),它的好壞直接影響到了應(yīng)用的執(zhí)行性能,但至今還是缺乏成熟的算法支持。
任務(wù)調(diào)度的支持。任務(wù)調(diào)度是傳統(tǒng)操作系統(tǒng)中的關(guān)鍵技術(shù)。在運(yùn)行時(shí)可重構(gòu)計(jì)算系統(tǒng)中,調(diào)度算法的好壞也直接影響到系統(tǒng)性能的高低。特別是針對(duì)大規(guī)模應(yīng)用中的硬件任務(wù)不能夠一次性地配置到器件上的情況,任務(wù)調(diào)度顯得尤其重要。任務(wù)調(diào)度主要有兩個(gè)目的:一個(gè)是優(yōu)化器件的配置序列,另一個(gè)是充分利用器件上的資源。任務(wù)調(diào)度器應(yīng)該盡可能地將要同時(shí)執(zhí)行或者先后執(zhí)行次序比較緊密的任務(wù)一次性地調(diào)度到器件上,同時(shí)在將任務(wù)調(diào)出器件的時(shí)候也要考慮到任務(wù)是否會(huì)在后續(xù)執(zhí)行中又被使用到。調(diào)度器對(duì)配置序列進(jìn)行優(yōu)化,能夠減少配置過(guò)程帶來(lái)的時(shí)間開(kāi)銷(xiāo),減輕配置時(shí)間太長(zhǎng)給系統(tǒng)帶來(lái)的瓶頸影響。器件上的資源是非常寶貴的,在任務(wù)繁重的時(shí)候應(yīng)該保證有盡可能多的資源加入到計(jì)算當(dāng)中。而且在對(duì)器件進(jìn)行部分配置的時(shí)候,也要重點(diǎn)考慮將那些當(dāng)前空閑的資源配置為新的功能,以減少后面可能會(huì)導(dǎo)致的“抖動(dòng)”(器件上的現(xiàn)有功能被新的配置覆蓋后,應(yīng)用執(zhí)行過(guò)程又需要該功能時(shí)只能再次將該功能重新配置到器件上)。另外,如果應(yīng)用對(duì)于能耗要求較高,任務(wù)調(diào)度還需要注意到器件上各個(gè)時(shí)鐘域里的資源利用情況,可以將功能集中實(shí)現(xiàn)在某一區(qū)域以達(dá)到降低能耗的目的。在后續(xù)的運(yùn)行時(shí)可重構(gòu)技術(shù)的研究探索中,還有可能涉及到軟/硬件任務(wù)遷移(migration)的情況,這就對(duì)調(diào)度器提出了更高的要求。
未來(lái)方向
上述是當(dāng)前的運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)研究中需要解決的幾個(gè)關(guān)鍵問(wèn)題,國(guó)內(nèi)外已經(jīng)有很多的機(jī)構(gòu)都在潛心研究,希望能有所突破。雖然目前可重構(gòu)計(jì)算技術(shù)已經(jīng)有了很大的發(fā)展,但是為了能夠?qū)⑺鼞?yīng)用到更廣闊的空間,還需要做更多的工作。
并行的可重構(gòu)計(jì)算系統(tǒng)架構(gòu)。雖然可重構(gòu)計(jì)算系統(tǒng)有著較高性能和極強(qiáng)的靈活性,但在很多應(yīng)用場(chǎng)合中,還是會(huì)碰到一些問(wèn)題。首先還是器件問(wèn)題。相對(duì)于通用處理器,當(dāng)前的主流可重構(gòu)邏輯器件的頻率仍舊較低,這就對(duì)進(jìn)一步加快應(yīng)用執(zhí)行性能產(chǎn)生了阻礙。其次,可重構(gòu)計(jì)算系統(tǒng)不能很好地處理大型應(yīng)用。因?yàn)橄到y(tǒng)處理能力和資源數(shù)量的約束,可重構(gòu)計(jì)算系統(tǒng)對(duì)于大型應(yīng)用的實(shí)現(xiàn)還存在著很多問(wèn)題。最后是應(yīng)用領(lǐng)域的獨(dú)特需求。目前在很多可重構(gòu)計(jì)算系統(tǒng)適用的應(yīng)用領(lǐng)域中,如穿戴計(jì)算、汽車(chē)電子等,系統(tǒng)分布化已經(jīng)成為了趨勢(shì),可重構(gòu)計(jì)算系統(tǒng)務(wù)必要能夠滿足應(yīng)用需求?;谝陨蠋c(diǎn),開(kāi)發(fā)并行的可重構(gòu)計(jì)算系統(tǒng)架構(gòu)已經(jīng)成為今后必然的趨勢(shì)。并行的可重構(gòu)計(jì)算系統(tǒng)中包含有多個(gè)可重構(gòu)計(jì)算系統(tǒng),它們彼此間以可重構(gòu)的網(wǎng)絡(luò)相連接。并行可重構(gòu)計(jì)算系統(tǒng)中存在著三個(gè)層次上的并行:第一是單個(gè)系統(tǒng)中可重構(gòu)邏輯器件上的多個(gè)硬件任務(wù)間的并行;第二是單個(gè)系統(tǒng)中通用處理器上的軟件任務(wù)和可重構(gòu)邏輯器件上的硬件任務(wù)間的并行;第三是各個(gè)系統(tǒng)間軟/硬件任務(wù)的并行。并行可重構(gòu)計(jì)算系統(tǒng)中還存在著兩個(gè)層次上的重構(gòu):一個(gè)是單個(gè)系統(tǒng)內(nèi)部的器件重構(gòu),另一個(gè)是各個(gè)系統(tǒng)間的互連重構(gòu)。并行可重構(gòu)計(jì)算系統(tǒng)的結(jié)構(gòu)要比傳統(tǒng)的分布式并行系統(tǒng)復(fù)雜很多,給系統(tǒng)管理和應(yīng)用帶來(lái)了很多新的難題。
統(tǒng)一的應(yīng)用開(kāi)發(fā)模型。當(dāng)前可重構(gòu)計(jì)算系統(tǒng)沒(méi)有被廣泛應(yīng)用,還有一個(gè)很重要的因素就是現(xiàn)在的可重構(gòu)計(jì)算系統(tǒng)并沒(méi)有提供給應(yīng)用開(kāi)發(fā)者統(tǒng)一的應(yīng)用開(kāi)發(fā)模型。因?yàn)榭芍貥?gòu)計(jì)算系統(tǒng)中有軟件任務(wù)和硬件任務(wù)的區(qū)分,而在應(yīng)用開(kāi)發(fā)者中占絕大多數(shù)的軟件程序員們?nèi)狈?duì)硬件平臺(tái)的理解和編寫(xiě)硬件任務(wù)的能力。同時(shí),軟件程序員和硬件設(shè)計(jì)者之間的溝通又往往不夠充分。這些都導(dǎo)致了應(yīng)用開(kāi)發(fā)者利用可重構(gòu)計(jì)算技術(shù)時(shí)的困難重重。又因?yàn)槟壳翱梢詷?gòu)成可重構(gòu)計(jì)算系統(tǒng)的硬件資源門(mén)類(lèi)繁多,在一個(gè)系統(tǒng)上開(kāi)發(fā)的應(yīng)用缺乏良好的移植性,所以沒(méi)有一個(gè)很好的方法能夠幫助開(kāi)發(fā)者們快速高效地開(kāi)發(fā)應(yīng)用?;谝陨蟽牲c(diǎn),現(xiàn)在需要做的是將可重構(gòu)計(jì)算系統(tǒng)的底層實(shí)現(xiàn)對(duì)應(yīng)用開(kāi)發(fā)者透明化,通過(guò)提供給應(yīng)用開(kāi)發(fā)者們統(tǒng)一的應(yīng)用開(kāi)發(fā)模型,使他們能夠按照慣常的開(kāi)發(fā)流程進(jìn)行可重構(gòu)計(jì)算系統(tǒng)上的應(yīng)用開(kāi)發(fā)。他們編寫(xiě)的代碼具有一定的可移植性,經(jīng)過(guò)可重構(gòu)系統(tǒng)集成開(kāi)發(fā)環(huán)境處理后,可以直接在相應(yīng)的可重構(gòu)計(jì)算系統(tǒng)上運(yùn)行。這個(gè)“統(tǒng)一化”的過(guò)程是復(fù)雜和困難的,但是如果希望可重構(gòu)計(jì)算技術(shù)能夠深入人心,讓廣大應(yīng)用開(kāi)發(fā)者認(rèn)可并使用可重構(gòu)計(jì)算技術(shù),那么這個(gè)過(guò)程就是必需的。
可重構(gòu)計(jì)算技術(shù)是一項(xiàng)新興的能夠有效提高系統(tǒng)計(jì)算能力的技術(shù)。它的誕生是為了滿足人們對(duì)計(jì)算性能永無(wú)窮盡的需求,在很多領(lǐng)域都有著廣闊的應(yīng)用前景。目前,可重構(gòu)計(jì)算技術(shù)的研究尚處于初級(jí)階段,還有很多技術(shù)難題沒(méi)有得到圓滿解決。但是在可以預(yù)見(jiàn)的將來(lái),伴隨著可重構(gòu)邏輯器件技術(shù)的不斷進(jìn)步,可重構(gòu)計(jì)算技術(shù)一定能夠在更多的場(chǎng)合被應(yīng)用,發(fā)揮出更多的效用。