當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]在SoC設(shè)計(jì)中用SystemC虛擬平臺(tái)預(yù)覽USB的性能

現(xiàn)在的程序員和系統(tǒng)架構(gòu)師有比以往更多的軟件可用于SoC(單片系統(tǒng))設(shè)計(jì),但也面臨著一個(gè)日益困擾他們的問(wèn)題:如何在設(shè)計(jì)前期,在硅片拿到手以前評(píng)估和優(yōu)化軟件的性能。為解決這個(gè)問(wèn)題,程序員們轉(zhuǎn)向虛擬平臺(tái),這種平臺(tái)采用軟件來(lái)對(duì)目標(biāo)硬件的架構(gòu)和功能建模。

當(dāng)設(shè)計(jì)師們小心地在其它軟件工具幫助下完成這個(gè)任務(wù)時(shí),這些平臺(tái)被證明是有效的方法,可以對(duì)很多重要性能的度量做出早期評(píng)估,如有關(guān)嵌入軟件功能好壞及其與現(xiàn)有硬件的互相影響。虛擬平臺(tái)可以預(yù)測(cè)CPU效率、數(shù)據(jù)傳輸率以及緩存失中率、中斷等待時(shí)間、功能性熱點(diǎn),以及其它性能的度量。

為了便于理解和體會(huì)虛擬平臺(tái)的性質(zhì)與價(jià)值,考慮這樣一個(gè)例子:評(píng)估一個(gè)USB系統(tǒng)軟件棧的性能。開(kāi)發(fā)者的選擇是有相當(dāng)?shù)睦碛?,因?yàn)閁SB2.0有480Mbps的傳輸速率,是承載實(shí)時(shí)音、視頻數(shù)據(jù)的常見(jiàn)選擇。因此,USB在多媒體產(chǎn)品中得到日益廣泛的應(yīng)用,如機(jī)頂盒和手機(jī)。

由于USB的互動(dòng)中包含有復(fù)雜的協(xié)議和軟、硬件之間大量的相互依賴(lài),因此特別需要這種平臺(tái)的幫助。這種情況下,不僅要求軟件架構(gòu)盡早確認(rèn)USB系統(tǒng)軟件,而且要估算出軟件在CPU上的負(fù)載,

此外還有中斷等待時(shí)間的影響,從而保證USB確實(shí)是一個(gè)可行的選擇。

這種性能預(yù)估要求虛擬平臺(tái)能夠?qū)?shí)際硬件功能,包括處理器、緩存和系統(tǒng)內(nèi)存、USB外設(shè)、USBEHCI(擴(kuò)展型主控制器接口),以及USB設(shè)備等,建立非常接近的模型。此外,還需要一個(gè)剖析工具來(lái)尋找軟件棧中的功能熱點(diǎn),精確地預(yù)測(cè)出完成功能所需時(shí)間。開(kāi)發(fā)人員用平臺(tái)得到的結(jié)果,與理論預(yù)測(cè)值做對(duì)照調(diào)整,而平臺(tái)也可以檢驗(yàn)USB棧在實(shí)際硬件上實(shí)現(xiàn)性能的穩(wěn)定性。另外,當(dāng)開(kāi)發(fā)人員修改軟件棧時(shí),平臺(tái)還可以精確地反映出性能的變化。

在本例中,設(shè)計(jì)師想出一種評(píng)估USB系統(tǒng)軟件棧性能的方法,該軟件棧運(yùn)行在嵌入機(jī)頂盒芯片中的DVR(數(shù)字視頻錄像機(jī))子系統(tǒng)中。DVR含有一個(gè)錄/放音、視頻數(shù)據(jù)流的USB硬盤(pán)驅(qū)動(dòng)器。USB軟件棧包括一個(gè)單線程DVR應(yīng)用實(shí)例,它用驅(qū)動(dòng)器完成一系列讀、寫(xiě)操作。

功能平臺(tái)非常詳盡地模仿DVR硬件的運(yùn)作,揭示出重要的時(shí)序參數(shù)。特別是該平臺(tái)建立了一個(gè)USB主控制器、硬盤(pán)驅(qū)動(dòng)器和系統(tǒng)內(nèi)存與緩存的模型。平臺(tái)有一個(gè)新穎的功能,它含有一個(gè)用SystemC寫(xiě)成的事務(wù)級(jí)模型,以此證明該方案能夠用于建立評(píng)估復(fù)雜嵌入軟件的虛擬平臺(tái)。開(kāi)發(fā)人員一般采用RTL(寄存器傳輸級(jí))模型建立系統(tǒng)硬件的模型,與事務(wù)級(jí)模型相比,這種方法的抽象層次較低。

平臺(tái)設(shè)置

虛擬平臺(tái)包括一個(gè)USB2.0EHCI、一個(gè)USB硬盤(pán)驅(qū)動(dòng)器、一個(gè)緩存仿真器、一個(gè)主處理器指令集仿真器,以及系統(tǒng)內(nèi)存。USB2.0EHCI模仿主控制器的功能,提供480Mbps數(shù)據(jù)速率下的精確時(shí)序值,以及基于內(nèi)存模型的內(nèi)存訪問(wèn)時(shí)間,還有EHCI寄存器的讀、寫(xiě)時(shí)間。EHCI亦作為一個(gè)DMA主控,可以不通過(guò)緩存訪問(wèn)系統(tǒng)內(nèi)存。

為了跟蹤所有的指令與數(shù)據(jù)存取,USB軟件棧運(yùn)行在一個(gè)在事務(wù)級(jí)硬件模型上建立的指令集仿真器上。指令與數(shù)據(jù)記錄通過(guò)虛擬平臺(tái),測(cè)量CPU使用率、緩存失中率以及中斷等待時(shí)間等。另外,用一個(gè)高度可配置、可擴(kuò)展和模塊化的剖析工具Flexperf判別功能熱點(diǎn),幫助完成軟件棧的排錯(cuò)。

系統(tǒng)在尋址硬盤(pán)驅(qū)動(dòng)器時(shí)是按照劃分為扇區(qū)的I/O文件,符合海量存儲(chǔ)設(shè)備規(guī)格,包括USB實(shí)施者論壇的“bulk-only”規(guī)格。于是,它可以通過(guò)端點(diǎn)0執(zhí)行所有標(biāo)準(zhǔn)的設(shè)備請(qǐng)求。它還可以執(zhí)行一個(gè)SCSI命令的子集,通過(guò)端點(diǎn)1和2與DVR相關(guān)。

緩存仿真器對(duì)一個(gè)可配置的緩存建模,該仿真器包括一個(gè)環(huán)繞式處理程序Dinero、一個(gè)追蹤驅(qū)動(dòng)的開(kāi)放源緩存仿真器。作為系統(tǒng)處理器,圍繞指令集仿真器的處理程序?yàn)橐粋€(gè)216MHzSTMicroelectronicsC2CPU內(nèi)核建模。仿真器將處理器的內(nèi)存訪問(wèn)轉(zhuǎn)換為事務(wù)級(jí)模型。開(kāi)發(fā)者將系統(tǒng)內(nèi)存建模為一個(gè)RAM陣列,所有模型的連接都通過(guò)一個(gè)大體上基于ARMAHB(先進(jìn)高性能總線)的精確事務(wù)通道和一個(gè)開(kāi)發(fā)者在USB上松散建模的通道。

調(diào)用該平臺(tái)對(duì)軟件性能參數(shù)的評(píng)估是一個(gè)分兩步走的過(guò)程(圖1)。第一步,USB棧運(yùn)行在ST20指令集仿真器上。這個(gè)過(guò)程生成一個(gè)追蹤文件,它記錄了所有的指令內(nèi)存和數(shù)據(jù)內(nèi)存訪問(wèn),以及硬件啟動(dòng)的任何中斷。第二步,有一個(gè)流量發(fā)生器對(duì)追蹤文件進(jìn)行語(yǔ)法分析,并在一個(gè)精確事務(wù)的通道上生成等效的事務(wù)級(jí)操作。

兩步走的評(píng)估過(guò)程體現(xiàn)出芯片設(shè)計(jì)的一般步驟。在第一步中,設(shè)計(jì)師將設(shè)計(jì)分解為獨(dú)立的功能塊,它們并行運(yùn)行實(shí)現(xiàn)所需的應(yīng)用功能。因此,第一個(gè)平臺(tái)只包括功能模型,而沒(méi)有參考時(shí)間。設(shè)計(jì)師用相同的功能塊,可以有不同的實(shí)現(xiàn)方法(主要是時(shí)序和性能模型),這就是第二步完成的任務(wù)。這個(gè)方案可以讓用戶(hù)使用一組相同的基準(zhǔn)功能,嘗試各種微架構(gòu)的實(shí)現(xiàn)。

結(jié)果就是一個(gè)基于SystemC的公共平臺(tái),它沒(méi)有外部依賴(lài)性,SystemC仿真器的時(shí)間作為評(píng)估性能的基準(zhǔn)。同樣,系統(tǒng)將指令與數(shù)據(jù)內(nèi)存抽象成為SystemC事務(wù)級(jí)模型,準(zhǔn)確地仿真訪問(wèn)時(shí)間。這種兩步走方案還簡(jiǎn)化了緩存仿真器與流量發(fā)生器的連接,這是一種在硬件上對(duì)緩存影響建模的方法。

性能參數(shù)

虛擬平臺(tái)生成的性能值是從運(yùn)行應(yīng)用程序的SystemC仿真器上獲得的總時(shí)間,相當(dāng)于在實(shí)際硬件上運(yùn)行的總時(shí)間。應(yīng)用程序的運(yùn)行時(shí)間依次與指令訪問(wèn)時(shí)間以及與EHCI、緩存和其它功能相關(guān)的等待時(shí)間有關(guān)。從這些值中,可以確定重要的性能度量,如CPU占用率、數(shù)據(jù)傳輸率、緩存失中率,以及中斷的次數(shù)。

當(dāng)然,CPU占用率是評(píng)估棧性能的最重要參數(shù),它是CPU在執(zhí)行軟件棧時(shí)所花費(fèi)時(shí)間的百分比。它表示CPU無(wú)法運(yùn)行其它應(yīng)用程序的時(shí)間。但是,要確定CPU占用率,必須首先確定并減掉CPU空閑時(shí)間??臻e時(shí)間是軟件棧在空閑線

程上花費(fèi)的時(shí)間,此時(shí)它等待一個(gè)硬件產(chǎn)生的中斷。這個(gè)空閑時(shí)間發(fā)生在樣例DRV應(yīng)用程序向硬盤(pán)提交一個(gè)數(shù)據(jù)塊或從硬盤(pán)讀出一個(gè)數(shù)據(jù)塊以后,但在開(kāi)始下一個(gè)傳輸?shù)挠布袛喟l(fā)生之前。必須將此時(shí)間從總時(shí)間中減去,因?yàn)閲?yán)格來(lái)說(shuō),在這個(gè)時(shí)間內(nèi),USB軟件棧并不占用CPU。

[!--empirenews.page--]

在這個(gè)點(diǎn)上,可以調(diào)用Flexperf剖析工具來(lái)測(cè)量CPU花費(fèi)在空閑線程上的時(shí)間。將輸入追蹤文件以及一個(gè)映像文件饋送給剖析工具,前者中包含程序計(jì)數(shù)器和相應(yīng)的時(shí)間。映像文件定義了與空閑線程功能有關(guān)的起始和終止地址。從這些輸入內(nèi)容中,剖析工具可以計(jì)算出在空閑線程上花費(fèi)的時(shí)間,接下來(lái)就可以從CPU時(shí)間中減去這些空閑時(shí)間,獲得準(zhǔn)確的CPU占用率數(shù)字。

還可以將通過(guò)USB的總數(shù)據(jù)量(包括控制、批量和協(xié)議信息)除以運(yùn)行應(yīng)用程序的總仿真時(shí)間,計(jì)算出通過(guò)USB的數(shù)據(jù)傳輸率。但是,USB2.0的480Mbps速率只是一個(gè)理論最大值。由于協(xié)議開(kāi)銷(xiāo)問(wèn)題加上從系統(tǒng)內(nèi)存獲取計(jì)劃表和數(shù)據(jù)也要消耗時(shí)間,尤其是當(dāng)EHCI緩存較小時(shí),所以實(shí)際的數(shù)據(jù)速率要低得多。軟件將數(shù)據(jù)提交給硬件的速率亦會(huì)限制數(shù)據(jù)的速率。

當(dāng)你提供有內(nèi)存流量信息的Dinero開(kāi)放源緩存仿真器時(shí),它會(huì)生成有關(guān)指令、數(shù)據(jù)和總失中率的統(tǒng)計(jì)數(shù)字。從這個(gè)數(shù)據(jù)中,可以確定最佳的緩存配置。為了在ST20主處理器追蹤文件中記錄中斷的次數(shù),可以累計(jì)ST20回繞式處理器捕獲的中斷數(shù)。從這些基本性能數(shù)字可以得到一些其它參數(shù),包括指令集仿真器報(bào)告的執(zhí)行指令總數(shù)、CPU的執(zhí)行時(shí)間(總時(shí)間減去空閑時(shí)間)、CPU的總指令執(zhí)行時(shí)間,以及總CPU讀、寫(xiě)時(shí)間。

本例中虛擬平臺(tái)獲得的性能結(jié)果是超出了本文討論范圍的數(shù)學(xué)推導(dǎo)。但是,這些推導(dǎo)的內(nèi)容包含最大SCSI緩沖、讀/寫(xiě)操作時(shí)傳輸?shù)臄?shù)據(jù)量、系統(tǒng)軟件為中斷服務(wù)花費(fèi)的時(shí)間,以及處理與硬盤(pán)驅(qū)動(dòng)器有關(guān)的SCSI命令的時(shí)間等之間的關(guān)系。

使用虛擬平臺(tái),可以得到塊的大小、總數(shù)據(jù)傳輸量、緩存參數(shù)、數(shù)據(jù)傳輸機(jī)制、棧尺寸、CPU占用,以及其它重要的性能數(shù)據(jù)等結(jié)果。通過(guò)虛擬平臺(tái)的預(yù)測(cè)與硬件結(jié)合起來(lái),可以極大地簡(jiǎn)化開(kāi)發(fā)確定過(guò)程。

例如,虛擬平臺(tái)表明增加塊大小(即每次讀、寫(xiě)操作時(shí)傳輸?shù)臄?shù)據(jù)量)可以降低CPU占用率(表1)。但是,塊越大,降低的程度越少。平臺(tái)亦預(yù)測(cè)CPU使用率會(huì)隨數(shù)據(jù)傳輸量的增加而下降。平臺(tái)作這些預(yù)測(cè)的前提是采用216MHz的ST20-C2內(nèi)核,10ns緩存命中等待時(shí)間,160ns的單字內(nèi)存訪問(wèn)時(shí)間,以及可在等待硬件中斷前緩沖最多256kB數(shù)據(jù)。該平臺(tái)亦假定緩存模型含有8kB、雙向、組合式指令與數(shù)據(jù)緩存,每個(gè)有16B的塊。另外,它還假定USB的傳輸速率為80MB/s。

出人意料的是,平臺(tái)指出緩存大小對(duì)USB棧的性能影響不大。一次實(shí)驗(yàn)改變了主要緩存的參數(shù),如大小、組合以及塊大小。雖然不同參數(shù)對(duì)整個(gè)應(yīng)用程序的請(qǐng)求丟失有很大的差異,但對(duì)CPU占用率的影響不明顯。在這個(gè)仿真階段,用初始化的CPU時(shí)間(包括設(shè)備計(jì)數(shù))減去運(yùn)行應(yīng)用程序的總CPU時(shí)間,得到CPU占用率。結(jié)果清楚地顯示,硬盤(pán)的讀、寫(xiě)操作包括對(duì)指令內(nèi)存和數(shù)據(jù)內(nèi)存的正常訪問(wèn),即由于讀、寫(xiě)操作在時(shí)間和空間上的高度本地化,對(duì)硬盤(pán)驅(qū)動(dòng)的丟失的總次數(shù)近似為恒定,而與緩存參數(shù)的變化無(wú)關(guān)。

表2總結(jié)了不同緩存大小的結(jié)果。在所有情況下(組合為2,塊尺寸為16kB),指令緩存和數(shù)據(jù)緩存都是一樣的。表3顯示同為16kB、8kB緩存不同組合值的結(jié)果。表4則是組合為2,塊大小為8kB緩存的結(jié)果。

這些結(jié)果均假定有一個(gè)5ns的緩存命中等待時(shí)間,四個(gè)字訪問(wèn),每個(gè)字花費(fèi)時(shí)間為160ns。

緩存大小對(duì)CPU效率的影響很小,與此相反,EHCI將數(shù)據(jù)移入、移出內(nèi)存的方式之間則有很大不同??截愓Z(yǔ)義學(xué)(copy-semantics)方法將數(shù)據(jù)從緩存區(qū)移到一個(gè)EHCI可訪問(wèn)的非緩存區(qū)。非拷貝語(yǔ)義學(xué)(Noncopysemantics)則假設(shè)EHCI可以訪問(wèn)包含所需數(shù)據(jù)的內(nèi)存區(qū)。在這種方法中,內(nèi)存區(qū)是未經(jīng)緩存的,傳給EHCI的是一個(gè)指向內(nèi)存位置的直接指針。

這兩種機(jī)制的性能數(shù)字有著很大的差異,因?yàn)樵诜强截愓Z(yǔ)義學(xué)情況下,不用將數(shù)據(jù)從一個(gè)內(nèi)存區(qū)拷貝到另一個(gè)內(nèi)存區(qū),這就省去了所有的移動(dòng)指令,當(dāng)移動(dòng)大量數(shù)據(jù)時(shí)極大地減輕了工作量。例如,當(dāng)重復(fù)64次以256kB傳送32MB數(shù)據(jù)時(shí),虛擬平臺(tái)顯示的數(shù)據(jù)速率和CPU占用率,拷貝語(yǔ)義學(xué)方式分別為5051kB/s和6%,而非拷貝語(yǔ)義學(xué)方式分別為7700kB/s和40%。

在評(píng)估棧大小的效果時(shí),一般預(yù)測(cè)認(rèn)為較小的棧會(huì)減少CPU占用,而虛擬平臺(tái)得到與直覺(jué)相反的結(jié)果(表5)。除CPU占用以外,表中顯示較大的棧還會(huì)增加一個(gè)應(yīng)用程序執(zhí)行的指令數(shù)。

但是,修改堆的大小時(shí)結(jié)果保持不變。(堆是一個(gè)內(nèi)存區(qū),應(yīng)用軟件可以作直接分配和解除分配。與之相比,棧的管理是通過(guò)編譯器,而不是應(yīng)用程序。)這些結(jié)果令人驚訝,因?yàn)闂J鞘艿骄幾g器控制,它的大小應(yīng)該沒(méi)有關(guān)系,而在其他情況下,表現(xiàn)為216MHz處理器時(shí)鐘速率和10MB/s數(shù)據(jù)速率。

雖然虛擬平臺(tái)得到了有希望的結(jié)果,但它仍與硬件的工作有不一致的地方。例如,ST20處理器流量發(fā)生器的模型過(guò)于簡(jiǎn)單。它假定每條指令的執(zhí)行階段都是一個(gè)恒定的平均時(shí)間,但事實(shí)并不總是這樣。此外,流量發(fā)生器建模時(shí)既無(wú)處理器流水線停頓也無(wú)任何流水線停頓的情況。不過(guò),這些因素之間有些相互抵消,得到的結(jié)果還算準(zhǔn)確。

現(xiàn)在的工作重點(diǎn)集中在建立更復(fù)雜平臺(tái)和開(kāi)發(fā)無(wú)縫的方法上,用于評(píng)估任何軟件棧的性能。例如,正在進(jìn)行的是虛擬平臺(tái)與Flexperf這種剖析工具相結(jié)合,使軟件編程人員和系統(tǒng)架構(gòu)師有一個(gè)統(tǒng)一的方法,能夠評(píng)估并增強(qiáng)嵌入式代碼的性能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉