<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 在SoC設計中用SystemC虛擬平臺預覽USB的性能

在SoC設計中用SystemC虛擬平臺預覽USB的性能

——
作者:Kshitiz Jain,Rohit Jindal,Bhuvan Middha 時(shí)間:2007-02-26 來(lái)源: 收藏
現在的程序員和系統架構師有比以往更多的軟件可用于 (單片系統)設計,但也面臨著(zhù)一個(gè)日益困擾他們的問(wèn)題:如何在設計前期,在硅片拿到手以前評估和優(yōu)化軟件的性能。為解決這個(gè)問(wèn)題,程序員們轉向虛擬平臺,這種平臺采用軟件來(lái)對目標硬件的架構和功能建模。

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

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

由于 USB 的互動(dòng)中包含有復雜的協(xié)議和軟、硬件之間大量的相互依賴(lài),因此特別需要這種平臺的幫助。這種情況下,不僅要求軟件架構盡早確認 USB 系統軟件,而且要估算出軟件在 CPU 上的負載,
此外還有中斷等待時(shí)間的影響,從而保證 USB 確實(shí)是一個(gè)可行的選擇。

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

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

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

平臺設置

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

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

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

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

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

調用該平臺對軟件性能參數的評估是一個(gè)分兩步走的過(guò)程


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

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

性能參數

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

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

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

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

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

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

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

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

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

增加塊大小可以降低CPU占用率


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

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

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

不同緩存大小的結果


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

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

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

虛擬平臺得到與直覺(jué)相反的結果


但是,修改堆的大小時(shí)結果保持不變。(堆是一個(gè)內存區,應用軟件可以作直

接分配和解除分配。與之相比,棧的管理是通過(guò)編譯器,而不是應用程序。)這些結果令人驚訝,因為棧是受到編譯器控制,它的大小應該沒(méi)有關(guān)系,而在其他情況下,表現為216MHz處理器時(shí)鐘速率和10MB/s數據速率。

雖然虛擬平臺得到了有希望的結果,但它仍與硬件的工作有不一致的地方。例如,ST20 處理器流量發(fā)生器的模型過(guò)于簡(jiǎn)單。它假定每條指令的執行階段都是一個(gè)恒定的平均時(shí)間,但事實(shí)并不總是這樣。此外,流量發(fā)生器建模時(shí)既無(wú)處理器流水線(xiàn)停頓也無(wú)任何流水線(xiàn)停頓的情況。不過(guò),這些因素之間有些相互抵消,得到的結果還算準確。
 
現在的工作重點(diǎn)集中在建立更復雜平臺和開(kāi)發(fā)無(wú)縫的方法上,用于評估任何軟件棧的性能。例如,正在進(jìn)行的是虛擬平臺與Flexperf這種剖析工具相結合,使軟件編程人員和系統架構師有一個(gè)統一的方法,能夠評估并增強嵌入式代碼的性能。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>