STM32從Flash中運行程序的時(shí)序分析

發(fā)布時(shí)間:2009-11-25 15:42    發(fā)布者:STM32
關(guān)鍵詞: Flash , 程序 , 時(shí)序 , 運行
都知道STM32的CPU時(shí)鐘頻率可以達到72MHz,以后還會(huì )更快,但是由于半導體制造工藝的限制,存放程序的Flash存儲器不可能達到這么高的工作頻率,這樣當CPU直接訪(fǎng)問(wèn)Flash存儲器時(shí)必須插入等待周期以得到正確的結果。

問(wèn)題是在Flash的速度比CPU慢的情況下,是不是可以簡(jiǎn)單地說(shuō)STM32在執行Flash中的程序時(shí)每條指令都需要插入等待周期呢?等待周期的插入對程序的執行到底有多大的影響?請看下面的分析:

首先,STM32的內部Flash是組織成64位寬度,即每次可以讀出64位;在Flash與CPU的取指隊列之間有兩個(gè)緩沖器,用于暫存Flash中取出的指令,見(jiàn)下圖。



其次,STM32的指令有16位的也有32位的,指令是從圖中綠色的緩沖器取出;當綠色緩沖器變空時(shí),黃色緩沖器中的內容會(huì )被復制到綠色緩沖器中;這樣取指與讀取Flash互不干擾。

正因為STM32的指令有不同長(cháng)度,所以程序執行的等待周期與程序的內容有關(guān)。

圖一是假定所有指令都是16位的指令:
1)時(shí)刻t0時(shí)黃色緩沖器和綠色緩沖器都為空,此時(shí)CPU等待3個(gè)周期后,到時(shí)刻t1時(shí)才能讀到指令;
2)時(shí)刻t1時(shí)綠色緩沖器被填滿(mǎn),黃色緩沖器仍為空,Flash控制器繼續讀取后續指令;
3)時(shí)刻t2時(shí)綠色緩沖器還有兩個(gè)字節,黃色緩沖器被填滿(mǎn);此時(shí)因為兩個(gè)緩沖器都有數據,讀取Flash的操作暫停(圖一中的綠色虛線(xiàn)框所示);
4)當黃色緩沖器變空時(shí),綠色緩沖器被復制到黃色緩沖器,同時(shí)恢復讀取Flash的操作;
5)時(shí)刻t3時(shí)緩沖器的狀態(tài)又變?yōu)樯鲜龅?)步的狀態(tài)。

從以上分析可以看出,CPU的指令執行是沒(méi)有等待周期的。但當執行跳轉指令時(shí),Flash緩沖器中的內容作廢,系統回到了上述第1)步的狀態(tài)。

圖二是假定每三條指令中有兩條16位的指令和一條32位的指令。這種情況下,如圖所示,CPU的指令執行也是沒(méi)有等待周期的。

圖三是假定所有指令都是32位的指令,從圖中可看出,CPU每執行兩條指令,要插入一個(gè)等待周期。

上面的分析只是針對每個(gè)CPU周期都有取指操作的情況,而實(shí)際的操作中情況并沒(méi)有這么簡(jiǎn)單,因為Cortex-M3的指令不都是單周期指令。

實(shí)際的程序執行情況是受很多因素影響的,單純靜態(tài)的分析也是不現實(shí)的,因此才會(huì )出現這么多評測的標準和數據。我們應該以平均的性能指標作為參考的依據,而不是簡(jiǎn)單的有沒(méi)有或有多少等待周期作為判斷的依據。

原著(zhù)日期:2008-4-12
本文地址:http://selenalain.com/thread-5751-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页