可重構(gòu)計(jì)算:高效靈活的計(jì)算技術(shù)
第二種情況是利用有限的資源處理大規(guī)模應(yīng)用。如果某個(gè)規(guī)模較大的應(yīng)用在實(shí)現(xiàn)時(shí)所需的可重構(gòu)邏輯資源超過了可重構(gòu)邏輯器件可以供給的最大資源量,這時(shí)可重構(gòu)計(jì)算系統(tǒng)會(huì)將大的應(yīng)用劃分為多個(gè)在執(zhí)行時(shí)具有先后次序的子部分。在應(yīng)用執(zhí)行過程中,某個(gè)先執(zhí)行的子部分完成工作后,可以在其占據(jù)的器件資源上按次序配置后續(xù)的應(yīng)用子部分,以此來保證應(yīng)用的正確實(shí)現(xiàn),如圖4所示。
本文引用地址:http://www.ex-cimer.com/article/191609.htm
運(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)鍵問題亟待解決:
可重構(gòu)邏輯器件的支持。可重構(gòu)計(jì)算技術(shù)的發(fā)展對(duì)可重構(gòu)邏輯器件有著很強(qiáng)的依賴性。當(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)在存在的最大問題在于器件配置過程耗費(fèi)的時(shí)間比較長(zhǎng)。隨著芯片上的可重構(gòu)邏輯資源數(shù)量越來越多,相應(yīng)的配置文件規(guī)模也越來越大,配置過程需要毫秒量級(jí)的時(shí)間,但是可重構(gòu)邏輯器件上的應(yīng)用是以微/納秒量級(jí)的時(shí)間在執(zhí)行,因此配置過程成為了整個(gè)系統(tǒng)的瓶頸。經(jīng)常會(huì)發(fā)生應(yīng)用執(zhí)行到一半,但后續(xù)功能還沒有配置好的情況。這時(shí)候應(yīng)用的執(zhí)行可能會(huì)使用到錯(cuò)誤的配置,因此它必須等待,這極大地降低了系統(tǒng)性能。還有一種可重構(gòu)邏輯器件能夠?yàn)檫\(yùn)行時(shí)可重構(gòu)技術(shù)提供支持,它被稱做多上下文(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)思考的問題。當(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í)行。這無疑降低了系統(tǒng)的性能。更先進(jìn)的做法是軟件任務(wù)可以和硬件任務(wù)并行執(zhí)行,兩者間以中斷或者其他方式互相通告狀態(tài)和傳遞數(shù)據(jù)。但是這么做會(huì)引入數(shù)據(jù)一致性、任務(wù)間同步等問題,加大了系統(tǒng)管理的難度。軟/硬件任務(wù)的劃分一直以來都是在嵌入式系統(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)化,能夠減少配置過程帶來的時(shí)間開銷,減輕配置時(shí)間太長(zhǎng)給系統(tǒng)帶來的瓶頸影響。器件上的資源是非常寶貴的,在任務(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í)行過程又需要該功能時(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)度器提出了更高的要求。
未來方向
上述是當(dāng)前的運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)研究中需要解決的幾個(gè)關(guā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ì)碰到一些問題。首先還是器件問題。相對(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)還存在著很多問題。最后是應(yīng)用領(lǐng)域的獨(dú)特需求。目前在很多可重構(gòu)計(jì)算系統(tǒng)適用的應(yīng)用領(lǐng)域中,如穿戴計(jì)算、汽車電子等,系統(tǒng)分布化已經(jīng)成為了趨勢(shì),可重構(gòu)計(jì)算系統(tǒng)務(wù)必要能夠滿足應(yīng)用需求?;谝陨蠋c(diǎn),開發(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)用帶來了很多新的難題。
統(tǒng)一的應(yīng)用開發(fā)模型。當(dāng)前可重構(gòu)計(jì)算系統(tǒng)沒有被廣泛應(yīng)用,還有一個(gè)很重要的因素就是現(xiàn)在的可重構(gòu)計(jì)算系統(tǒng)并沒有提供給應(yīng)用開發(fā)者統(tǒng)一的應(yīng)用開發(fā)模型。因?yàn)榭芍貥?gòu)計(jì)算系統(tǒng)中有軟件任務(wù)和硬件任務(wù)的區(qū)分,而在應(yīng)用開發(fā)者中占絕大多數(shù)的軟件程序員們?nèi)狈?duì)硬件平臺(tái)的理解和編寫硬件任務(wù)的能力。同時(shí),軟件程序員和硬件設(shè)計(jì)者之間的溝通又往往不夠充分。這些都導(dǎo)致了應(yīng)用開發(fā)者利用可重構(gòu)計(jì)算技術(shù)時(shí)的困難重重。又因?yàn)槟壳翱梢詷?gòu)成可重構(gòu)計(jì)算系統(tǒng)的硬件資源門類繁多,在一個(gè)系統(tǒng)上開發(fā)的應(yīng)用缺乏良好的移植性,所以沒有一個(gè)很好的方法能夠幫助開發(fā)者們快速高效地開發(fā)應(yīng)用?;谝陨蟽牲c(diǎn),現(xiàn)在需要做的是將可重構(gòu)計(jì)算系統(tǒng)的底層實(shí)現(xiàn)對(duì)應(yīng)用開發(fā)者透明化,通過提供給應(yīng)用開發(fā)者們統(tǒng)一的應(yīng)用開發(fā)模型,使他們能夠按照慣常的開發(fā)流程進(jìn)行可重構(gòu)計(jì)算系統(tǒng)上的應(yīng)用開發(fā)。他們編寫的代碼具有一定的可移植性,經(jīng)過可重構(gòu)系統(tǒng)集成開發(fā)環(huán)境處理后,可以直接在相應(yīng)的可重構(gòu)計(jì)算系統(tǒng)上運(yùn)行。這個(gè)“統(tǒng)一化”的過程是復(fù)雜和困難的,但是如果希望可重構(gòu)計(jì)算技術(shù)能夠深入人心,讓廣大應(yīng)用開發(fā)者認(rèn)可并使用可重構(gòu)計(jì)算技術(shù),那么這個(gè)過程就是必需的。
可重構(gòu)計(jì)算技術(shù)是一項(xiàng)新興的能夠有效提高系統(tǒng)計(jì)算能力的技術(shù)。它的誕生是為了滿足人們對(duì)計(jì)算性能永無窮盡的需求,在很多領(lǐng)域都有著廣闊的應(yīng)用前景。目前,可重構(gòu)計(jì)算技術(shù)的研究尚處于初級(jí)階段,還有很多技術(shù)難題沒有得到圓滿解決。但是在可以預(yù)見的將來,伴隨著可重構(gòu)邏輯器件技術(shù)的不斷進(jìn)步,可重構(gòu)計(jì)算技術(shù)一定能夠在更多的場(chǎng)合被應(yīng)用,發(fā)揮出更多的效用。
評(píng)論