32 位 MCU 性能差異
微控制器(MCU)領(lǐng)域如今仍由 8 位和 16 位器件控制,但隨著更高性能的 32 位處理器開始在 MCU 市場(chǎng)創(chuàng)造巨大收益,在系統(tǒng)設(shè)計(jì)方面,芯片架構(gòu)師面臨著 PC 設(shè)計(jì)人員早在十年前便遇到的挑戰(zhàn)。盡管新內(nèi)核在速度和性能方面都在不斷提高,一些關(guān)鍵支持技術(shù)卻沒有跟上發(fā)展的步伐,從而導(dǎo)致了嚴(yán)重的性能瓶頸。
很多 MCU 完全依賴于兩種類型的內(nèi)部存儲(chǔ)器件。適量的 SRAM 可提供數(shù)據(jù)存儲(chǔ)所需的空間,而 NOR 閃存可提供指令及固定數(shù)據(jù)的空間。
在新 32 位內(nèi)核的尺寸和運(yùn)行速度方面,嵌入式 SRAM 技術(shù)正在保持同步。成熟的 SRAM 技術(shù)在 100MHz 的運(yùn)行范圍更易于實(shí)現(xiàn)。對(duì) MCU 所需的典型 RAM 容量來(lái)說(shuō),這個(gè)速度級(jí)別也更具成本效益。
但是標(biāo)準(zhǔn)的 NOR 閃存卻落在了基本 32 位內(nèi)核時(shí)鐘速度之后,幾乎相差一個(gè)數(shù)量級(jí)。當(dāng)前的嵌入式 NOR 閃存技術(shù)的存取時(shí)間基本為 50ns (20 MHz)。這在閃存器件和內(nèi)核間轉(zhuǎn)移數(shù)據(jù)的能力方面造成了真正的瓶頸,因?yàn)楹芏鄷r(shí)鐘周期可能浪費(fèi)在等待閃存找回特定指令上。
標(biāo)準(zhǔn)MCU 執(zhí)行模型——XIP (eXecute In Place)更加劇了處理器內(nèi)核速度和閃存存取時(shí)間之間的性能差距。
大容量存儲(chǔ)中的應(yīng)用容錯(cuò)及 SRAM較高的成本是選擇直接從閃存執(zhí)行的兩個(gè)主要原因。存儲(chǔ)在閃存內(nèi)的程序基本不會(huì)被系統(tǒng)內(nèi)的隨機(jī)錯(cuò)誤破壞,如電源軌故障。利用閃存直接執(zhí)行還無(wú)需為MCU器件提供足夠的 SRAM,來(lái)將應(yīng)用從一個(gè) ROM 或閃存器件復(fù)制至目標(biāo) RAM 執(zhí)行空間。
消除差距
理想的情況是,改進(jìn)閃存技術(shù),以匹配32位內(nèi)核的性能。雖然當(dāng)前的技術(shù)有一定的局限,仍有一些有效的方法,可幫助架構(gòu)師解決性能瓶頸問(wèn)題。
簡(jiǎn)單的指令預(yù)取緩沖器和指令高速緩存系統(tǒng)在32位MCU設(shè)計(jì)中的采用,將大大提高M(jìn)CU的性能。下面將介紹系統(tǒng)架構(gòu)師如何利用這些技術(shù)將16位的MCU架構(gòu)升級(jí)至32位內(nèi)核CPU。
在 MCU 設(shè)計(jì)中引入 32位內(nèi)核
圖 1 介紹了將現(xiàn)有16位設(shè)計(jì)升級(jí)至基本32位內(nèi)核的情況,顯示了新32 位內(nèi)核及其基本外設(shè)集合之間的基本聯(lián)系。由于我們?cè)谟懻搶⑿碌?2位處理器內(nèi)核集成至新的 MCU 設(shè)計(jì),我們假設(shè)可采用新32位內(nèi)核采用以下規(guī)范。
32 位內(nèi)核——改良的哈佛架構(gòu)
與很多 MCU 一樣,新的 32位 內(nèi)核也采用改良的哈佛架構(gòu)。因此,程序存儲(chǔ)和數(shù)據(jù)存儲(chǔ)空間是在兩個(gè)獨(dú)立的總線構(gòu)架上執(zhí)行。一個(gè)純哈佛設(shè)計(jì)可防止數(shù)據(jù)在程序存儲(chǔ)空間被讀取,該內(nèi)核改良的哈佛架構(gòu)設(shè)計(jì)仍可實(shí)現(xiàn)這樣的操作,同時(shí),該32位內(nèi)核設(shè)計(jì)還可實(shí)現(xiàn)程序指令在數(shù)據(jù)存儲(chǔ)空間的執(zhí)行。
在標(biāo)準(zhǔn)總線周期內(nèi),程序和數(shù)據(jù)存儲(chǔ)器接口允許插入等待狀態(tài),有助于響應(yīng)速度緩慢的存儲(chǔ)或存儲(chǔ)映射器件。
32位內(nèi)核——工作頻率
新內(nèi)核的最高工作時(shí)鐘頻率為120MHz,是被替代的16位內(nèi)核速度的六倍。
32位內(nèi)核——指令存儲(chǔ)器接口
指令存儲(chǔ)系統(tǒng)接口有一個(gè)32位寬的數(shù)據(jù)總線,以及一個(gè)總共地址空間為1MB的20位寬的地址總線。盡管 32位內(nèi)核具備更大的地址空間,而這足夠滿足這個(gè)MCU的目標(biāo)應(yīng)用空間。標(biāo)準(zhǔn)的控制信號(hào)同樣具備為緩慢的存儲(chǔ)器件插入等待狀態(tài)的能力。
該設(shè)計(jì)的閃存器件與16位設(shè)計(jì)采用的技術(shù)一樣,最高運(yùn)行速度達(dá)20 MHz。
32 位內(nèi)核——數(shù)據(jù)存儲(chǔ)器接口
系統(tǒng) SRAM 和存儲(chǔ)器映射外設(shè)都通過(guò)系統(tǒng)控制器與處理器數(shù)據(jù)總線相連。系統(tǒng)控制器可提供額外的地址解碼及其他控制功能,幫助處理器內(nèi)核正確訪問(wèn)數(shù)據(jù)存儲(chǔ)器或存儲(chǔ)器映射外設(shè),而無(wú)需處理特定的等待狀態(tài)、不同的數(shù)據(jù)寬度或每個(gè)映射到數(shù)據(jù)存儲(chǔ)空間的器件的其他特殊需求。
系統(tǒng)控制器和處理器內(nèi)核之間的數(shù)據(jù)總線為 32 位寬,與系統(tǒng)控制器和SRAM 間的數(shù)據(jù)總線寬度相同。系統(tǒng)控制器和外設(shè)以及 GPIO 端口間的數(shù)據(jù)總線寬度可為 8 位、16 位或 32 位,視需求而定。
目標(biāo)設(shè)計(jì)采用的 SRAM 與 16 位設(shè)計(jì)采用的類型相同,在 120 MHz時(shí)可實(shí)現(xiàn) 0 等待狀態(tài)操作。
初步分析
目前系統(tǒng)的性能由幾個(gè)因素控制。處理器內(nèi)核與閃存器件速度的差異可極大地影響性能,因?yàn)橹辽儆形鍌€(gè)等待狀態(tài)必須添加到每個(gè)指令提取中。根據(jù)粗粒經(jīng)驗(yàn)法則,至少每十個(gè)指令有一個(gè)讀取或存儲(chǔ)。每條指令加權(quán)平均周期(CPI)的典型順序?yàn)椋?/P>
CPI = (9 inst * 6 閃存周期 + 1 inst *1 SRAM周期) / 10 指令
CPI = 5.5
內(nèi)核的吞吐量由閃存接口的速度決定,因此以前所有的32位內(nèi)核都是數(shù)據(jù)通道寬度的兩倍。
在這種情況下,SRAM接口無(wú)關(guān)緊要。雖然某些問(wèn)題很有可能源于存儲(chǔ)接口方面,如中斷延遲和原子位處理,SRAM存儲(chǔ)器的零等待狀態(tài)操作可以忽略。關(guān)注的重點(diǎn)是通過(guò)采用目前可用的、具有成本效益的技術(shù),來(lái)提高指令存儲(chǔ)接口的性能。
提高CPU內(nèi)核性能——閃存接口
來(lái)自高性能計(jì)算環(huán)境的一個(gè)通用概念是高速緩存,在主要存儲(chǔ)器件和處理器內(nèi)核之間采用更小及更快的內(nèi)存存儲(chǔ),可以實(shí)現(xiàn)突發(fā)數(shù)據(jù)或程序指令的更快訪問(wèn)。
設(shè)計(jì)和實(shí)現(xiàn)高速緩存可能非常復(fù)雜——需要考慮高速緩存標(biāo)記、N-Way級(jí)聯(lián)和普通高速緩存控制等問(wèn)題——僅關(guān)注程序指令存儲(chǔ)器可讓這項(xiàng)工作變得非常簡(jiǎn)單。這是因?yàn)閷?duì)此特定的 32 位內(nèi)核來(lái)說(shuō),對(duì)程序存儲(chǔ)器的訪問(wèn)是一個(gè)嚴(yán)格的只讀操作。在這種情況下,我們只需考慮一個(gè)方向的數(shù)據(jù)流可以減少緩沖器和高速緩存系統(tǒng)的復(fù)雜性。
預(yù)取緩沖器
增加閃存接口總體帶寬的一個(gè)簡(jiǎn)單方法是擴(kuò)展處理器和閃存器件間的通道寬度。假定閃存的速度一定,增加帶寬的另外一個(gè)方法是擴(kuò)展接口寬度,以實(shí)現(xiàn)一次提取更多指令,創(chuàng)造一個(gè)更為快速的閃存接口外觀。
這是預(yù)取緩沖器的一個(gè)基本前提。它利用了連接閃存的更寬接口的優(yōu)勢(shì),可在同樣的時(shí)鐘周期數(shù)內(nèi)讀取更大的數(shù)據(jù)量,這通常只要花閃存讀一個(gè)字的時(shí)間。
因此,預(yù)取緩沖器還定義了新數(shù)據(jù)通道的最小尺寸,原因顯而易見。
圖2.1顯示了我們的120 MHz內(nèi)核連接到20 MHz閃存陣列的情況。采用兩個(gè)系統(tǒng)間的速度比作為起始值,我們可以確定預(yù)取緩沖器、閃存接口讀取的寬度,假設(shè)我們需要在無(wú)需等待狀態(tài)的情況下讀取指令。
在這種情況下,預(yù)取/閃存數(shù)據(jù)通道將是:
(120/20)X32位=192位寬
預(yù)取緩沖器控制邏輯不斷對(duì)存取緩沖器的讀取數(shù)進(jìn)行標(biāo)記。最后一次存取后,它將使下一個(gè)周期從閃存重新加載整個(gè)緩沖器。
預(yù)取緩沖器控制邏輯還可識(shí)別緩沖器每次進(jìn)入的有效地址。它還將提供適當(dāng)?shù)慕獯a,根據(jù)正確的順序指令顯示處理器數(shù)據(jù)總線,當(dāng)一個(gè)執(zhí)行分支需要完整的新的順序指令時(shí),將重新加載緩沖器。
當(dāng)然,在提取新的指令時(shí),分支將造成一些額外的延遲。但是由于相比處理器內(nèi)核,預(yù)取緩沖器實(shí)現(xiàn)六合一方法在數(shù)據(jù)通道寬度方面具有絕對(duì)的優(yōu)勢(shì),為該分支問(wèn)題的最終平衡的結(jié)果付出的代價(jià)是值得的。
更多經(jīng)驗(yàn)法則分析都顯示,一個(gè)典型的嵌入式應(yīng)用有20%發(fā)生分支的機(jī)會(huì),每五個(gè)周期相當(dāng)于一個(gè)分支。采用之前的方法,CPI值現(xiàn)在為:
CPI = (4指令*1周期+1指令*6周期)/5指令
CPI = 2.0
我們已經(jīng)看到利用基本實(shí)現(xiàn)方法,整個(gè)系統(tǒng)周期效率有了大幅提高。
圖2.1還顯示了一個(gè)更為現(xiàn)實(shí)解決方案方法,即將六個(gè)獨(dú)立的閃存系統(tǒng)的32位總線加在一起,而不是重新設(shè)計(jì)一個(gè)新的、極寬的數(shù)據(jù)總線閃存系統(tǒng)。預(yù)取緩沖器控制邏輯將自動(dòng)創(chuàng)建六個(gè)連續(xù)的程序地址,然后允許一個(gè)正常的讀取周期同時(shí)訪問(wèn)所有六個(gè)組。在讀取周期的末尾,預(yù)取緩沖器現(xiàn)在可保持六個(gè)新的指令,而非一個(gè),模擬的零等待狀態(tài)系統(tǒng)。
指令高速緩存
形式指令高速緩存賦予預(yù)取緩沖器更高水平的復(fù)雜性,因?yàn)楦咚倬彺娌恍枰麄€(gè)高速緩存陣列的特定線性地址。形式高速緩存的尺寸也比簡(jiǎn)單預(yù)取緩沖器大,它可能在高速緩存內(nèi)存儲(chǔ)整個(gè)循環(huán)序列。
圖 2.2 顯示了一個(gè)簡(jiǎn)單的有 8 塊、單路的高速緩存設(shè)計(jì),1 塊有 16 個(gè)字節(jié)。雖然這么小的高速緩存很難實(shí)現(xiàn),但它對(duì)指令執(zhí)行很有用。在這種情況下,地址標(biāo)記將是整個(gè)地址的高 12 位,而索引將是尋址高速緩存塊內(nèi)的特定條目的余下的兩位。
與指令預(yù)取緩沖器相比,指令高速緩存系統(tǒng)具有更復(fù)雜的地址比較系統(tǒng),因?yàn)樵摳咚倬彺骊嚵胁粌H包括每個(gè)高速緩存塊的連續(xù)尋址指令,而且可以將指令地址空間的任何區(qū)域包含在高速緩存塊內(nèi)。
為了讓高速緩存更有效地工作,在閃存器件和指令高速緩存之間應(yīng)當(dāng)實(shí)現(xiàn)盡量寬的數(shù)據(jù)通道,保證內(nèi)核能夠以最快的速度執(zhí)行程序指令。指令高速緩存在與閃存器件的接口上實(shí)現(xiàn)了一個(gè)指令預(yù)取機(jī)制來(lái)解決這個(gè)問(wèn)題。否則,閃存存取時(shí)間的問(wèn)題就會(huì)影響內(nèi)核執(zhí)行速度。
在正常執(zhí)行過(guò)程中,所需的指令地址高位和高速緩存陣列的指令標(biāo)記間開始一連串的比較。如果找到匹配的地址,高速緩存命中即被寄存,指令地址的低位將被用于高速緩存塊內(nèi)的索引,以找回所需的指令。如果沒有發(fā)現(xiàn)匹配的地址,就是我們所說(shuō)的高速緩存不命中。高速緩存不命中將導(dǎo)致高速緩存控制器從存儲(chǔ)區(qū)的特定區(qū)域讀入包含所需指令的緩存塊。被替代的高速緩存塊通常是陣列中最舊的高速緩存塊。
當(dāng)使用高速緩存時(shí),基本性能分析變得更加復(fù)雜,因?yàn)檫@時(shí)高速緩存不命中數(shù)在方程里引入了一個(gè)新的變量。分析典型應(yīng)用代碼可幫助芯片設(shè)計(jì)人員確定高速緩存大小和實(shí)際性能增益的最佳平衡。
對(duì)于我們的設(shè)計(jì),假定 CPI 將在以下范圍內(nèi)是比較合理的:
<= CPI (cache) <= 2.0
在高速緩存大得足夠存儲(chǔ)大多數(shù)應(yīng)用主程序的情況下,性能增益可能非常顯著,因?yàn)橄到y(tǒng)正在接近 0 等待狀態(tài)執(zhí)行環(huán)境。
采用改良的哈佛架構(gòu)(Modified Harvard Architecture)設(shè)計(jì)的指令高速緩存的一個(gè)重要優(yōu)勢(shì)是高速緩存無(wú)需執(zhí)行回寫操作。與數(shù)據(jù)高速緩存相比,這種實(shí)現(xiàn)要簡(jiǎn)單的多,數(shù)據(jù)緩存還要保證改動(dòng)過(guò)的高速緩存數(shù)據(jù)正確地存儲(chǔ)進(jìn)主數(shù)據(jù)存儲(chǔ)器。
改進(jìn)的設(shè)計(jì)
我們現(xiàn)在可以把學(xué)到的知識(shí)應(yīng)用于我們系統(tǒng)的第一個(gè)框圖,并從預(yù)取/指令高速緩存緩沖器系統(tǒng)提供的增益中獲益。詳見以下的圖 3。
與之前的16位設(shè)計(jì)相比,新設(shè)計(jì)能夠以三倍的速度(120 MHz / 2.0 CPI(預(yù)取)/ 20 MHz(16 位時(shí)鐘)執(zhí)行指令,通過(guò)適當(dāng)選擇最終指令高速緩存的大小,很容易就能實(shí)現(xiàn)非常接近單等待狀態(tài)閃存系統(tǒng)運(yùn)行的性能。
雖然指令預(yù)取緩沖器是一種簡(jiǎn)單的實(shí)現(xiàn),但它通過(guò)屏蔽閃存和 32 位內(nèi)核執(zhí)行速度之間的存取時(shí)間差異,顯著地改善了系統(tǒng)吞吐量。預(yù)取緩沖器是一個(gè)非常簡(jiǎn)單的設(shè)計(jì),只需要很少的額外邏輯。大部分額外邏輯與擴(kuò)展閃存系統(tǒng)和預(yù)取緩沖存儲(chǔ)器之間的通道有關(guān)。設(shè)計(jì)的簡(jiǎn)單有利于它完全透明地展示給軟件程序員,他們只需允許或禁用該功能就可以了。
形式指令高速緩存是一種更復(fù)雜的解決方案,需要至少與預(yù)取緩沖器相同數(shù)量的額外邏輯電路,以及管理指令高速緩存正常運(yùn)行的額外邏輯電路。設(shè)計(jì)人員需要分析 MCU 運(yùn)行的典型應(yīng)用,以確定能夠最好地平衡性能和成本的高速緩存大小。當(dāng)然,指令高速緩存部署更為昂貴,但是在許多情況下,系統(tǒng)實(shí)現(xiàn)的性能可達(dá)到 0 等待狀態(tài)系統(tǒng),對(duì)性能產(chǎn)生顯著的積極作用。軟件程序員還必須了解與指令高速緩存有關(guān)的一些基本控制和維護(hù)問(wèn)題,但是在大多數(shù)情況下,它們可以一勞永逸地運(yùn)行,只是在系統(tǒng)初始化時(shí)才需要執(zhí)行。
只用新的 32 位器件直接替代現(xiàn)有的 8 位或 16 位內(nèi)核是不夠的。芯片設(shè)計(jì)人員還必須調(diào)整和改進(jìn)整個(gè) MCU 設(shè)計(jì),以適應(yīng)高性能、高速度 32 位內(nèi)核的新要求。我們需要這樣的調(diào)整來(lái)確保新的 32 位內(nèi)核能夠釋放最高性能。采用預(yù)取緩沖器和指令高速緩存是改進(jìn)微控制器設(shè)計(jì)的兩個(gè)直接途徑,微控制器與 32 位內(nèi)核和現(xiàn)有存儲(chǔ)器技術(shù)直接相關(guān)。
上一篇:多線程技術(shù)在數(shù)據(jù)實(shí)時(shí)采集分析中的應(yīng)用
下一篇:基于單片機(jī)的室內(nèi)甲醛測(cè)試系統(tǒng)
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- TSA7887DB,基于 TSA7887 微功耗、2 通道、125 ksps、串行輸出 12 位 SAR ADC 的演示板
- LTC3630AHMSE 4V 至 63V 輸入至 -12V 輸出、正負(fù)轉(zhuǎn)換器的典型應(yīng)用電路
- JIS-BIG 鍵盤 熱插拔
- STEVAL-CBP006V1,用于機(jī)頂盒、電視機(jī)和其他消費(fèi)設(shè)備的 Uni-Power 前面板和待機(jī)電源管理控制器的評(píng)估板
- DC2291A,基于具有數(shù)字電源系統(tǒng)管理功能的 LTC3882EUJ 高效降壓型 DC/DC 轉(zhuǎn)換器的演示板
- [長(zhǎng)沙理工大學(xué)]AD9958
- LR8N3-G 高輸入電壓、3 端子線性穩(wěn)壓器的典型應(yīng)用
- 使用 Analog Devices 的 LT1182CS 的參考設(shè)計(jì)
- LT3844 的典型應(yīng)用 - 具有可編程工作頻率的高電壓、電流模式開關(guān)穩(wěn)壓控制器
- OP295GSZ 單電源儀表放大器的典型應(yīng)用
- 基于51單片機(jī)DHT11的加濕器proteus仿真程序設(shè)計(jì)
- 任天堂Switch改進(jìn)版底座新專利曝光 線纜接口可旋轉(zhuǎn)
- 什么是位式控制?
- 機(jī)器人氣保焊工藝參數(shù)是什么?具體參數(shù)有哪些?
- 移植RT2870無(wú)線網(wǎng)卡驅(qū)動(dòng)到s3c2416
- 東芝推出有助于降低設(shè)備待機(jī)功耗的高電壓、低電流消耗LDO穩(wěn)壓器
- 如何開發(fā)與位置無(wú)關(guān)的 STM32 完整工程
- WT588E08-8S語(yǔ)音ic內(nèi)存共享功能實(shí)現(xiàn)原理解析
- 如何輕松幾步實(shí)現(xiàn)在STM32上運(yùn)行FreeRTOS任務(wù)
- 研華新品搭載最新 AMD Ryzen 嵌入式 8000 系列處理器,驅(qū)動(dòng)AI 智能新篇章
- 美國(guó)EDA恢復(fù)供應(yīng)?
- 從追趕到超越:的盧深視的“AI +三維機(jī)器視覺“破局之戰(zhàn)
- 常用的音頻處理器有哪些應(yīng)用場(chǎng)景
- 研究顯示2035年全球酒店服務(wù)機(jī)器人市場(chǎng)規(guī)模有望達(dá)125億美元
- i9-14900HX對(duì)比一款換湯不換藥的馬甲老U R9-8945HX
- 納祥科技2W 24位數(shù)字功放NX4920,可用于AI語(yǔ)音播報(bào)、WIFI播放器
- 常用解調(diào)器的定義和工作原理
- 從性能與網(wǎng)絡(luò)傳輸出發(fā),講講鐵威馬MAX系列為什么一騎絕塵
- 惠普選中Hailo下一代人工智能加速器,革新零售業(yè)與酒店業(yè)運(yùn)營(yíng)模式
- MIUI 10開發(fā)版第二批機(jī)型下月推送升級(jí)
- Google Pixel 3渲染圖曝光 劉海全面屏
- 接連投出奧比中光、優(yōu)必選 松禾馮華要做打通產(chǎn)業(yè)鏈的獨(dú)角獸捕手
- 微軟在做雙屏Surface 模樣讓人想起中興手機(jī)
- vivo NEX推送新版本防攝像頭偷拍 防止偷拍發(fā)生
- 三款新手機(jī)再加兩款耳機(jī),蘋果今年將“帶飛”哪些供應(yīng)商?
- 傳美國(guó)政府評(píng)估博通收購(gòu)高通:有可能阻止交易
- 驍龍芯片Win10 PC將支持移動(dòng)/電信4G:聯(lián)通無(wú)緣
- Qualcomm推出全新驍龍700系列移動(dòng)平臺(tái)
- Qualcomm發(fā)布驍龍5G模組解決方案