設(shè)計(jì)大吞吐量、實(shí)時(shí)SoC系統(tǒng)的最佳實(shí)踐
現(xiàn)代SoC軟件通常包括多種應(yīng)用,從汽車(chē)發(fā)動(dòng)機(jī)控制等硬件實(shí)時(shí)應(yīng)用,到HD視頻流等大吞吐量應(yīng)用。隨著現(xiàn)代SoC向大吞吐量系統(tǒng)的快速發(fā)展,處理器內(nèi)核數(shù)量不斷增加,寬帶互聯(lián)也越來(lái)越多,導(dǎo)致混合系統(tǒng)設(shè)計(jì)成為挑戰(zhàn)。在這類系統(tǒng)中實(shí)現(xiàn)硬件實(shí)時(shí)—μs量級(jí)響應(yīng),抖動(dòng)不到1μs,需要仔細(xì)的綜合考慮分析和系統(tǒng)劃分。隨著SoC的復(fù)雜度越來(lái)越高,將來(lái)的驗(yàn)證策略也必須納入考慮范圍。
本文引用地址:http://2s4d.com/article/201610/308406.htm這類系統(tǒng)設(shè)計(jì)主要有三種方法—非對(duì)稱多處理(AMP)、管理程序,以及支持內(nèi)核隔離的對(duì)稱多處理(SMP)(主要的對(duì)比見(jiàn)表1),系統(tǒng)設(shè)計(jì)人員可以從中選擇一種方法來(lái)優(yōu)化混合SoC系統(tǒng)。
非對(duì)稱多處理
AMP實(shí)際是基于物理上不同的處理器內(nèi)核的多操作系統(tǒng)(OS)端口。一個(gè)例子是,在第一個(gè)內(nèi)核上運(yùn)行專門(mén)用于處理實(shí)時(shí)任務(wù)的裸金屬OS,在其他內(nèi)核上運(yùn)行嵌入式Linux等完整的OS。很多時(shí)候,最初將OS導(dǎo)入到內(nèi)核中非常簡(jiǎn)單,但是,在啟動(dòng)代碼和資源管理上很容易出錯(cuò),例如,存儲(chǔ)器、高速緩存和外設(shè)等。當(dāng)多個(gè)OS訪問(wèn)相同的外設(shè)時(shí),行為會(huì)是不確定的,調(diào)試起來(lái)可能非常耗時(shí)。通常要求仔細(xì)的保護(hù)ARM TrustZone等體系結(jié)構(gòu)不受影響。
更復(fù)雜的是,在OS之間傳遞消息要求存儲(chǔ)器共享,一起采用其他保護(hù)手段進(jìn)行管理。不同的OS之間通常不會(huì)共享高速緩存。要通過(guò)非高速緩存區(qū)來(lái)傳遞消息,對(duì)于總體性能而言,增加了延時(shí)和抖動(dòng)。從可擴(kuò)展角度看,隨著內(nèi)核數(shù)量的增加,需要進(jìn)行多次重新導(dǎo)入,使軟件體系結(jié)構(gòu)較差。
監(jiān)控程序
管理程序是直接在硬件上運(yùn)行的底層軟件,在其上可管理多個(gè)獨(dú)立的OS。最初的導(dǎo)入與AMP相似,而其優(yōu)勢(shì)在于管理程序隱藏了資源管理和消息傳遞中不重要的細(xì)節(jié)。缺點(diǎn)是由于吞吐量和實(shí)時(shí)性能要求,增加了額外的軟件層,導(dǎo)致出現(xiàn)性能開(kāi)銷。
對(duì)稱多處理
支持內(nèi)核隔離的SMP在多個(gè)內(nèi)核上運(yùn)行一個(gè)OS,支持在內(nèi)部劃分內(nèi)核。一個(gè)例子是讓SMP OS在第一個(gè)內(nèi)核上分配實(shí)時(shí)應(yīng)用程序,在其他的內(nèi)核上運(yùn)行非實(shí)時(shí)應(yīng)用程序。隨著內(nèi)核數(shù)量的增加,SMP OS可以設(shè)計(jì)無(wú)縫導(dǎo)入,因此,這一方法的可擴(kuò)展性比較好。所有內(nèi)核都是由一個(gè)OS管理的,因此,內(nèi)核之間可以在L1數(shù)據(jù)高速緩存級(jí)上傳遞消息,通信速度更快,抖動(dòng) 更低。
通過(guò)內(nèi)核隔離,可以保留一個(gè)內(nèi)核用于硬件實(shí)時(shí)應(yīng)用,以屏蔽其他大吞吐量?jī)?nèi)核的影響,保持了低抖動(dòng)和實(shí)時(shí)數(shù)據(jù)響應(yīng)。這樣,設(shè)計(jì)人員可以考慮使用哪一個(gè)OS,而不用重新設(shè)計(jì)容易出錯(cuò)的底層軟件來(lái)管理多個(gè)OS。因此,這一般是很好的軟件體系結(jié)構(gòu)決定。如果從多個(gè)OS開(kāi)始,最初的導(dǎo)入會(huì)需要一些付出。但是,從一個(gè)SMP體系結(jié)構(gòu)開(kāi)始會(huì)省很多事。
通過(guò)SMP優(yōu)化大吞吐量、實(shí)時(shí)SoC
基于對(duì)各種方法的分析,支持內(nèi)核隔離的SMP是最好的體系結(jié)構(gòu),優(yōu)化了大吞吐量、實(shí)時(shí)SoC系統(tǒng)。我們考慮的體系結(jié)構(gòu)與圖3的系統(tǒng)相似,其中,I/O數(shù)據(jù)輸入到SoC中,處理器對(duì)其進(jìn)行計(jì)算,送回至I/O,滿足低抖動(dòng)和低延時(shí)實(shí)時(shí)響應(yīng)要求。此外,SoC包括了多個(gè)內(nèi)核,可同時(shí)運(yùn)行其他吞吐量較大的應(yīng)用程序。
首先,需要理解一個(gè)實(shí)時(shí)響應(yīng)(循環(huán)時(shí)間)由哪些組成:
1.從一個(gè)I/O,將新數(shù)據(jù)傳送至系統(tǒng)存儲(chǔ)器(DMA)。
2.處理器探測(cè)系統(tǒng)存儲(chǔ)器中的新數(shù)據(jù) (內(nèi)核隔離)。
3.將數(shù)據(jù)復(fù)制到私有存儲(chǔ)器(memcpy)。
4.對(duì)數(shù)據(jù)進(jìn)行計(jì)算。
5.將結(jié)果復(fù)制回系統(tǒng)存儲(chǔ)器(memcpy)。
6.將結(jié)果傳送回I/O(DMA)。
抖動(dòng)和延時(shí)是6個(gè)步驟的累積,因此,需要優(yōu)化每一個(gè)步驟。采用支持內(nèi)核隔離的VxWorks等RTOS,可以在納秒范圍內(nèi)完成輪詢/中斷響應(yīng)(步驟2)。數(shù)據(jù)計(jì)算也是專用的,具有很好的可預(yù)測(cè)性(步驟4)。因此,我們的重點(diǎn)是綜合考慮直接存儲(chǔ)器訪問(wèn)(DMA)和memcpy(步驟1/3/5/6)。主要有兩種方法來(lái)傳送數(shù)據(jù):高速緩存連續(xù)傳送,以及不支持高速緩沖連續(xù)的傳送。這兩種方法在DMA和memcpy上的響應(yīng)有很大的不同。如圖1所示,雖然高速緩存連續(xù)傳送(使用ARM高速緩存連續(xù)端口(ACP))導(dǎo)致DMA需要較長(zhǎng)的通路,但處理器只需要訪問(wèn)L1高速緩存就可以獲得所傳送的數(shù)據(jù)。因此,使用高速緩存連續(xù)傳送的memcpy時(shí)間要少很多,但是DMA性能會(huì)有些劣化。對(duì)于設(shè)計(jì)人員而言,由于是直接高速緩存訪問(wèn),因此,高速緩存連續(xù)傳送的延時(shí)更短,抖動(dòng) 更小。
案例研究:SoC設(shè)計(jì)最佳實(shí)踐
可以使用Cyclone V SoC FPGA開(kāi)發(fā)套件,通過(guò)參考設(shè)計(jì)來(lái)演示一個(gè)完整的系統(tǒng)。器件在一個(gè)芯片中包括了一個(gè)雙核32ARM Cortex-A9內(nèi)核子系統(tǒng)(HPS)和一個(gè)28nm FPGA。下面總結(jié)了硬件和軟件體系結(jié)構(gòu),如圖2所示。
硬件體系結(jié)構(gòu)
·兩個(gè)DMA,將數(shù)據(jù)從FPGA I/O傳送至ARM處理器,反之亦然。
·兩個(gè)DMA都連接至ACP,實(shí)現(xiàn)數(shù)據(jù)在ARM處理器高速緩存的直接傳送。
·實(shí)時(shí)控制單元IP,以盡可能快的方式啟動(dòng)ARM處理器和DMA引擎之間的消息傳遞。
·抖動(dòng)監(jiān)視器直接探測(cè)DMA信號(hào),采集實(shí)時(shí)性能和抖動(dòng),精度在±6.7ns以內(nèi)。
軟件體系結(jié)構(gòu)
·在雙核ARM處理器上的VxWorks實(shí)時(shí)OS運(yùn)行在SMP模式下。
·內(nèi)核隔離,用于在第一個(gè)內(nèi)核上分配實(shí)時(shí)應(yīng)用程序,在第二個(gè)內(nèi)核上分配其他的非 實(shí)時(shí)應(yīng)用程序。
·實(shí)時(shí)應(yīng)用程序連續(xù)從I/O讀取數(shù)據(jù),計(jì)算,然后將結(jié)果發(fā)送回I/O。
·當(dāng)連續(xù)運(yùn)行FTP傳輸并對(duì)數(shù)據(jù)加密時(shí),非實(shí)時(shí)應(yīng)用程序加重了對(duì)ARM內(nèi)核和其它 I/O性能的要求。
結(jié)果
在長(zhǎng)度不同的數(shù)據(jù)上運(yùn)行實(shí)驗(yàn),長(zhǎng)度從32 字節(jié)直至2,048字節(jié)。為了采集循環(huán)時(shí)間的直方圖,來(lái)分析抖動(dòng)(最大和最小循環(huán)時(shí)間之間的不同),每一長(zhǎng)度都要運(yùn)行數(shù)百萬(wàn)次。如圖3所示,即使是在第二個(gè)內(nèi)核上運(yùn)行數(shù)據(jù)流負(fù)載很大的FTP,經(jīng)過(guò)數(shù)百萬(wàn)次的測(cè)試,延時(shí)也在微秒級(jí),而抖動(dòng)不到300ps。長(zhǎng)度不同,會(huì)有些抖動(dòng)擺動(dòng),但是可控制在200ps內(nèi),并不明顯。
相同的FTP應(yīng)用程序也運(yùn)行在VxWorks SMP上,使用了兩個(gè)內(nèi)核,速度提高了近2倍。因此,這一方法并沒(méi)有劣化吞吐量,是吞吐量和硬件實(shí)時(shí)應(yīng)用程序的折中選擇。但是,由于對(duì)內(nèi)核進(jìn)行了硬件劃分,不能夠靈活的增加內(nèi)核數(shù),因此,AMP解決方案也同樣有一些劣化。
結(jié)論
設(shè)計(jì)一個(gè)支持大吞吐量和實(shí)時(shí)應(yīng)用程序的均衡SoC系統(tǒng)需要進(jìn)行很多綜合考慮,例如:
·DMA數(shù)據(jù)傳送。
·連續(xù)高速緩存。
·處理器內(nèi)核與DMA之間的消息傳遞。
·OS劃分。
·軟件能夠隨著處理器內(nèi)核數(shù)量的增加而進(jìn)行擴(kuò)展。
在此次實(shí)驗(yàn)中,我們展示了一個(gè)“最佳實(shí)踐”系統(tǒng)設(shè)計(jì),它使用了支持內(nèi)核隔離和高速緩存連續(xù)傳送的SMP,實(shí)現(xiàn)了低延時(shí)、低抖動(dòng)實(shí)時(shí)性能,同時(shí)軟件能夠擴(kuò)展應(yīng)用到未來(lái)幾代的SoC產(chǎn)品中。
評(píng)論