前面小編對純軟件性能分析的理論與實踐的分享,希望給大家找到了豪華待遇的感覺。當(dāng)然了,自己當(dāng)土豪爽一下也就過去了,但是性能的問題還擺在那里等待解決,接下來怎么辦呢?
改善性能可以改進(jìn)代碼的寫法或算法,這就要結(jié)合實際問題,各顯神通了。但畢竟大牛人是來仰望的,咱們還需要更加立竿見影的招數(shù),那就是給CPU占用最大的一些函數(shù)提供VIP的待遇,把它們放在VIP區(qū)中——執(zhí)行性能更高的存儲器。
以前介紹性能分析時曾提到,VIP區(qū)其實也是分等級的。不同的單片機,在存儲器的設(shè)計,總線連接方式,訪問控制策略都各有特色,對性能的影響也不一而足。嵌入式和IoT的開發(fā),處處彰顯出碎片化和粉末化的特色,這可讓人怎么整?
幸好,即使世界這么紛紛擾擾,還是有大類可循的。小編也試著結(jié)合NXP的LPC54000系列和i.MX RT1050系列,給各類VIP區(qū)分了5類VIP特權(quán)等級。
VIP:C級(小V)
這主要是針對外置QSPI Flash的升級。
對于LPC540xx和LPC18x0/43x0系列,它們沒有內(nèi)置Flash。如果跑不動了,可以考慮升級到其對應(yīng)的有內(nèi)置Flash的pin2pin型號,比如LPC546xx,LPC18xx/43xx(尾號非0)。內(nèi)置Flash跑血常規(guī)(CoreMark)的性能一般在外置QSPI的1.5倍以上,對于查表較多的程序甚至在數(shù)倍以上。內(nèi)部Flash的帶寬往往在128位甚至256位,還帶有專用于加速循環(huán)結(jié)構(gòu)的特制小cache,執(zhí)行程序的性能還是很棒的。
為了呈現(xiàn)更高的性價比,i.MX RT系列全部沒有內(nèi)置Flash。不過,i.MX RT的FlexSPI支持高性能的DDR模式、雙Flash交火、以及8線Flash模式。就拿EVK上的hyper flash為例,可高達(dá)332MB/s,而一般的QSPI Flash通常不過60MB/s。此外,i.MX RT的SEMC對于從SDRAM執(zhí)行代碼的性能也比較給力,如果系統(tǒng)中存在SDRAM,也可以使一些數(shù)據(jù)表和代碼放在SDRAM中。
VIP:B級(中V)
各型Flash和SDRAM對于小循環(huán)體的性能盡管還可以,但是當(dāng)程序跳轉(zhuǎn)不規(guī)則,或者順序結(jié)構(gòu)較長時,以及數(shù)據(jù)訪問隨機性強時,性能的表現(xiàn)就變得很不均勻,讓人有“雖然我表達(dá)不了太多的愛,唯有好多眼淚流出來”的感覺。
這個時候,可以使用單片機片上的系統(tǒng)RAM。對于LPC54系列的Cortex-M4/M0+單片機,可以放在內(nèi)存地址為0x2000-0000開頭的RAM中,對于i.MX RT系列則是地址為0x2020-0000的OCRAM中。這些RAM的工作頻率和隨機訪問性能比Flash好得很多。但是因為在這個地址范圍使用的AHB (LPC)或AXI (i.MX RT)系統(tǒng)總線的啟動時序開銷大,總線往往又比較忙,還要和諸多帶DMA的總線主機搶帶寬,性能加速可能得不到保證,因此充其量也就算是中V級吧。
VIP:A級(大V)
和中V級相比,大V的待遇就更好了,有了專屬的緊密耦合RAM區(qū)。
以LPC5411x為例,它有32KB的”SRAMX”,這塊SRAMX和192KB的全部容量相比只占1/6,但絕對配得上大V的待遇。它直接連接到Cortex-M4的I-Code和D-Code總線上。這兩條總線也是“特供”于快速代碼執(zhí)行的綠色通道,其它總線主設(shè)備是沒資格用的。
再看i.MX RT,它的Cortex-M7內(nèi)核更是有過之而無不及,把I-Code和D-Code升級到64位的ITCM(指令緊密耦合存儲器)和DTCM(數(shù)據(jù)緊密耦合存儲器),并且片上的512KB內(nèi)存可以自由分割,全部配置成ITCM和DTCM也可以。那沒有了其它RAM,外設(shè)要訪問怎么辦呢?Cortex-M7留了個小后門——AHB-Slave給其它DMA主機訪問TCM,當(dāng)然是看M7臉色行事。
總之,大V待遇對于大多數(shù)程序代碼已經(jīng)相當(dāng)有面兒了,性能提升也是杠杠的!
VIP:S級(超V)
啥,還有超V級?難道還有比TCM更快的,莫非小編你瘋到想把R0-R14也給賣了?
倒也不是,超V級其實可以看作是上述VIP的組合,給最關(guān)鍵的模塊提供服務(wù),占用多塊RAM。比如一個壓縮jpeg的模塊,它既有代碼又有只讀數(shù)據(jù)。如果把代碼與只讀數(shù)據(jù)全放在一塊RAM,就不能發(fā)揮M4/M7雙總線的優(yōu)勢,比如沒法取指令的同時訪問數(shù)據(jù)。小編于是把代碼放ITCM,只讀數(shù)據(jù)放DTCM,相當(dāng)于它自己左手一個右手一個擁抱了整個芯片中性能最強的兩塊RAM,讓600MHz的M7火力全開,跑到QVGA分辨率下60幀每秒以上的圖片壓縮性能。
VIP:PS級(公共超V)
(僅適用于Cortex-M7)
在Cortex-M7內(nèi)核的i.MX RT系列中,支持指令高速緩存(I-Cache)和數(shù)據(jù)高速緩存(D-Cache),各有32KB。這兩個Cache的性能完全是TCM級別的。這是一項超V級水準(zhǔn)的平民福利,獻(xiàn)給全部沒有享受到大V和超V待遇的代碼和數(shù)據(jù),就稱作公共超V級吧。
有趣的是,它是全自動的——不管是什么代碼和數(shù)據(jù),上鏡率越高,就越有機會多享受超V級待遇。但若是如果什么時候起受冷落了,就最終會被掃出門。
打個不嚴(yán)謹(jǐn)?shù)谋确?,這就好比假設(shè)高鐵中以商務(wù)座的標(biāo)準(zhǔn)建餐車,即使沒買一等座和商務(wù)座,只要搶到了餐車座席吃飯,吃飯期間也享受商務(wù)座待遇。只不過,若是吃完飯想再歇會,又沒空位子了,那就祈禱別人不要來吃飯吧,否則就會被趕走。
因此,這項復(fù)用型超V待遇是按需分配的。值得注意的是,在替換cache內(nèi)容時會花時間,既對確定性產(chǎn)生影響,也降低平均性能。所以雖然比超V級弱一點,但它把福利普照給公眾,這是前面任何VIP特權(quán)也提供不了的。
審核編輯:劉清
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19142瀏覽量
306035 -
FlaSh
+關(guān)注
關(guān)注
10文章
1638瀏覽量
148174 -
存儲器
+關(guān)注
關(guān)注
38文章
7509瀏覽量
163975 -
QSPI
+關(guān)注
關(guān)注
0文章
41瀏覽量
12219
原文標(biāo)題:VIP也分高低——存儲器對執(zhí)行性能的影響
文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論