針對(duì)復(fù)雜嵌入式應(yīng)用的創(chuàng)新處理器實(shí)現(xiàn)方法
隨著流媒體、寬帶網(wǎng)絡(luò)以及各種高速接口的廣泛應(yīng)用,消費(fèi)類電子產(chǎn)品開(kāi)始向三重播放(triple play)甚至四重播放(quab play)的領(lǐng)域演進(jìn)。對(duì)嵌入式處理器的要求也變得越來(lái)越高,一方面要處理大量的人機(jī)交互、外設(shè)控制等任務(wù),另一方面還要對(duì)不同接口的聲音、視頻、圖像等數(shù)據(jù)進(jìn)行數(shù)字信號(hào)處理,與此同時(shí),嵌入式系統(tǒng)還要應(yīng)對(duì)功耗更低,體積更小的挑戰(zhàn)。
傳統(tǒng)的應(yīng)對(duì)方法是不斷研發(fā)更寬數(shù)據(jù)流、更快頻率的處理器,數(shù)據(jù)寬已經(jīng)由最初的4位、8位、發(fā)展到現(xiàn)在的16位、32位,頻率也由最初的mhz級(jí)到發(fā)展到現(xiàn)在的ghz級(jí),相應(yīng)的存儲(chǔ)器容量、速度也在不斷增加。但是繼續(xù)沿著高帶寬、高主頻的摩爾定律方向發(fā)展,工藝上的受限已經(jīng)初顯端倪,更加難以應(yīng)對(duì)低功耗、小體積的需求。眾多廠商也意識(shí)到,對(duì)于新的應(yīng)用而言,速度已經(jīng)不再是唯一因素,提升性能才是更好的選擇。同一化多核處理器結(jié)構(gòu)
單芯片的多核解決方案是個(gè)好的嘗試,也是現(xiàn)在的嵌入式應(yīng)用的熱點(diǎn)之一。interllasys公司seaforth系統(tǒng)芯片是從自已的可擴(kuò)展嵌入式陣列scalable embedded array (sea)平臺(tái)發(fā)展而來(lái)的,與將通用處理器和若干dsp核嵌入單芯片的方法不同,該平臺(tái)使用了相同的處理器核,每個(gè)核既具有通用處理器的功能,同時(shí)內(nèi)部集成高速乘法器 ,經(jīng)過(guò)妥善設(shè)計(jì),就可以把復(fù)雜的計(jì)算任務(wù)分配給各個(gè)處理器核共同進(jìn)行。
工作時(shí),可以簡(jiǎn)單地指定各個(gè)處理器核完成需要執(zhí)行的不同任務(wù)。比如,在三重播放應(yīng)用中,可以讓1個(gè)處理器核去管理外接存儲(chǔ)器,讓8個(gè)處理器核負(fù)責(zé)fft變換,完成多媒體算法,再用幾個(gè)處理器核帶動(dòng)應(yīng)用系統(tǒng)中的各種i/o子系統(tǒng)(見(jiàn)圖1)。這樣,每個(gè)處理器都會(huì)專心運(yùn)行自己的任務(wù),避免了執(zhí)行不同任務(wù)時(shí)任務(wù)切換之間的開(kāi)銷,單個(gè)處理器在執(zhí)行流媒體解碼過(guò)程中,也不會(huì)出現(xiàn)由于處理器等待別的外設(shè)而造成的圖像抖動(dòng)不暢等現(xiàn)象,同時(shí),我們可以根據(jù)具體的應(yīng)用選擇具有不同數(shù)量?jī)?nèi)核的處理器,極大地增強(qiáng)了設(shè)計(jì)和選擇的靈活性。目前在這一體系下,已經(jīng)有40核的處理器解決方案。
本地化ram/rom存儲(chǔ)器
和時(shí)鐘發(fā)生器
當(dāng)設(shè)計(jì)中使用了多個(gè)處理器時(shí),存儲(chǔ)器存取的問(wèn)題就出來(lái)了。大多數(shù)多核芯片設(shè)計(jì)把幾個(gè)處理器核和一個(gè)共用存儲(chǔ)器放在一起。這樣做簡(jiǎn)化了設(shè)計(jì),因?yàn)槊恳粋€(gè)核只是處理器本身,問(wèn)題轉(zhuǎn)到多個(gè)處理器核如何共同使用一個(gè)存儲(chǔ)器,以及存儲(chǔ)器存取的仲裁,這是一個(gè)難題。通常用到某種仲裁網(wǎng)絡(luò)或者交叉點(diǎn)切換開(kāi)關(guān),在只有3個(gè)到4個(gè)處理器核時(shí),這個(gè)方法是可行的。但是,在芯片上需要幾十個(gè)處理器核時(shí),共用存儲(chǔ)器的問(wèn)題變得很復(fù)雜,令人望而卻步。此外,由于越來(lái)越多處理器核需要對(duì)存儲(chǔ)器進(jìn)行存取,共用存儲(chǔ)器的效率變得越來(lái)越低,很快就成為致命的瓶頸,把多核結(jié)構(gòu)在處理方面的優(yōu)點(diǎn)都淹沒(méi)了。
seaforth多核處理器使用了本地化存儲(chǔ)器設(shè)計(jì),即為每個(gè)處理器核設(shè)計(jì)了自己的ram/rom存儲(chǔ)器。這有兩個(gè)好處,一方面避免了存儲(chǔ)器仲裁,也不需要交叉切換開(kāi)關(guān);另一方面可以分配給每個(gè)處理器核所需要的存儲(chǔ)容量。分析典型算法的源代碼,需要的存儲(chǔ)器容量有兩種,一種是1000字節(jié)或者少一些,一種是容量很大,幾兆字節(jié),甚至幾百兆字節(jié)。大多數(shù)應(yīng)用屬于前者,后者則在少數(shù)應(yīng)用中需要,實(shí)現(xiàn)上也不切實(shí)際。所以seaforth多核處理器為每一個(gè)處理器核都用小一些的本地存儲(chǔ)器,1000字節(jié)的數(shù)量級(jí),用于存放程序源代碼和數(shù)據(jù),rom中固化每個(gè)處理器核的bios,再用一個(gè)大得多的外接存儲(chǔ)器,作為緩沖存儲(chǔ)器滿足多媒體的需要。
與采用公共外部時(shí)鐘的方式不同,seaforth多核處理器為每個(gè)核內(nèi)建一個(gè)時(shí)鐘——一個(gè)簡(jiǎn)單的環(huán)形振蕩器。它的速度和硅半導(dǎo)體的速度一樣快,只有在該處理器核工作時(shí),它的時(shí)鐘才工作。這種設(shè)計(jì)方式為下面介紹的核間通訊提供了可能,同時(shí),任一時(shí)刻由于只有部分處理器核在工作也大大降低了功耗。seaforth多核處理器有很低的功耗水平,每個(gè)處理器以1ghz的頻率運(yùn)行,而40核的整體功耗為250mw。高效的處理器核間通訊
seaforth多核處理器允許計(jì)算量很大的算法由幾個(gè)核協(xié)作完成,這時(shí),不同核間需要大量的交換數(shù)據(jù),通訊方式的優(yōu)劣影響整個(gè)系統(tǒng)的性能。
完成一項(xiàng)復(fù)雜的任務(wù)時(shí),傳統(tǒng)的做法是由操作系統(tǒng)自行指定參與的核,離的很遠(yuǎn)的核間通訊需要處理器內(nèi)有大量的通訊電路,往往設(shè)計(jì)復(fù)雜,效率偏低。在seaforth多核處理器應(yīng)用中,由工程師自己指定完成特定任務(wù)的處理器核,這需要工程師了解哪些任務(wù)需要交換更多的數(shù)據(jù),然后指定相鄰的核完成這項(xiàng)任務(wù)。對(duì)于要求大量訪問(wèn)核外存儲(chǔ)器的任務(wù),同樣可以指定距離最近的核去完成。
seaforth 多核處理器相鄰的核間通訊通過(guò)共用寄存器傳輸。
通過(guò)共用寄存器這種方式避免了沖突電路和優(yōu)先權(quán)網(wǎng)絡(luò)的問(wèn)題,具體傳輸過(guò)程中,傳統(tǒng)的處理方法需要利用讀取、檢測(cè)、寫(xiě)入等狀態(tài)位信息建立握手協(xié)議,耗費(fèi)的時(shí)間多于實(shí)際傳送數(shù)據(jù)所用的時(shí)間。該處理器由于內(nèi)建一個(gè)電路,可以在一個(gè)指令周期內(nèi)