本申請涉及微控制器,尤其涉及一種閃存控制器、微控制器。
背景技術:
1、在現(xiàn)有技術中,微控制器(microcontroller?unit,mcu)的程序可以存放在嵌入式閃存(embedded?flash)中,mcu的處理器可以從閃存中讀取數(shù)據(jù),然后對數(shù)據(jù)進行譯碼后執(zhí)行。處理器每次從閃存中讀取數(shù)據(jù)都需要一段等待的時間,尤其是mcu的系統(tǒng)時鐘頻率較高的情況下,數(shù)據(jù)的讀取無法在單個周期內完成,這會導致處理器的流水線停頓,從而使得處理器的流水線效率較低。
技術實現(xiàn)思路
1、本申請實施例的技術目的之一在于,提供一種閃存控制器,能夠以較低的硬件開銷來提高mcu中處理器的流水線效率。
2、第一方面,本申請實施例提供一種閃存控制器,包括:總線接口,至少用于從總線獲取數(shù)據(jù)讀取請求,所述數(shù)據(jù)讀取請求用于請求閃存中目標地址中的數(shù)據(jù),其中,所述總線的數(shù)據(jù)位寬為n個字節(jié),所述閃存的數(shù)據(jù)位寬至少為2n個字節(jié),n為大于1的正整數(shù);第一寄存器,用于緩存第一預取數(shù)據(jù),所述第一預取數(shù)據(jù)在所述閃存中的地址位于所述目標地址之后,且所述第一預取數(shù)據(jù)在所述閃存中的地址與所述目標地址之間的間隔為n個字節(jié)。
3、可選的,還包括:第二寄存器,用于緩存第二預取數(shù)據(jù);其中,所述第二預取數(shù)據(jù)在所述閃存中的地址位于所述目標地址之后,且所述第二預取數(shù)據(jù)在所述閃存中的地址與所述目標地址之間的間隔為2n個字節(jié)。
4、可選的,所述閃存控制器還包括:狀態(tài)機和控制模塊;所述控制模塊用于根據(jù)所述狀態(tài)機的狀態(tài)生成控制信號,所述控制信號用于控制所述閃存控制器從所述閃存讀取數(shù)據(jù)和/或向所述總線輸出數(shù)據(jù)。
5、可選的,所述狀態(tài)機的狀態(tài)包括:空閑態(tài)、第一狀態(tài)、第二狀態(tài)、第三狀態(tài)和第四狀態(tài);。
6、可選的,若所述狀態(tài)機的現(xiàn)態(tài)為所述空閑態(tài),且低位讀取條件滿足,則所述狀態(tài)機的次態(tài)為所述第一狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第一狀態(tài),且所述第一條件滿足,則所述狀態(tài)機的次態(tài)為所述第二狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第二狀態(tài),且所述第一條件滿足,則所述狀態(tài)機的次態(tài)為所述第三狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第三狀態(tài),且所述第一條件滿足,則所述狀態(tài)機的次態(tài)為所述第四狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第四狀態(tài),且所述第一條件滿足,則所述狀態(tài)機的次態(tài)為所述第三狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第一狀態(tài)或所述第二狀態(tài)或所述第三狀態(tài)或所述第四狀態(tài),且第二條件滿足,則所述狀態(tài)機的次態(tài)為所述第一狀態(tài);若所述狀態(tài)機的現(xiàn)態(tài)為所述第一狀態(tài)或所述第二狀態(tài)或所述第三狀態(tài)或所述第四狀態(tài),且第三條件滿足,則所述狀態(tài)機的次態(tài)為所述空閑態(tài);其中,所述第一條件是指當前目標地址位于上一個目標地址之后,且所述當前目標地址和所述上一個目標地址之間的間隔為n個字節(jié),所述低位讀取條件是指當前數(shù)據(jù)讀取請求所請求的是所述閃存中地址為所述當前目標地址的2n個字節(jié)的數(shù)據(jù)中低地址的n個字節(jié)的數(shù)據(jù);其中,所述第二條件是指所述第一條件不滿足,且所述低位讀取條件滿足;其中,所述第三條件是指所述第一條件不滿足,且所述低位讀取條件不滿足;其中,在所述第一狀態(tài)下,所述閃存控制器從所述閃存中讀取所述當前目標地址中的數(shù)據(jù),將讀取到的數(shù)據(jù)中高地址的n位數(shù)據(jù)寫入所述第一寄存器,以及將讀取到的數(shù)據(jù)中低地址的n位數(shù)據(jù)輸出至總線;在所述第二狀態(tài)下,將所述第一寄存器中的數(shù)據(jù)輸出至總線,以及從所述閃存中讀取所述當前目標地址的下一個地址中的數(shù)據(jù),并將讀取到的數(shù)據(jù)中低地址的n個字節(jié)的數(shù)據(jù)寫入所述第一寄存器,以及將高地址的n個字節(jié)的數(shù)據(jù)寫入所述第二寄存器;在所述第三狀態(tài)下,將所述第一寄存器中的數(shù)據(jù)輸出至總線;在所述第四狀態(tài)下,將所述第二寄存器中的數(shù)據(jù)輸出至總線,以及從所述閃存中讀取所述當前目標地址的下一個地址中的數(shù)據(jù),并將讀取到的數(shù)據(jù)中低地址的n個字節(jié)的數(shù)據(jù)寫入所述第一寄存器,以及將高地址的n個字節(jié)的數(shù)據(jù)寫入所述第二寄存器。
7、可選的,n為4的整數(shù)倍。
8、可選的,還包括:糾錯碼解碼器,用于對從所述閃存讀取的數(shù)據(jù)進行校驗。
9、第二方面,本申請實施例提供一種微控制器,包括:第一方面提供的閃存控制器。
10、可選的,還包括:主設備,用于通過所述總線向所述閃存控制器發(fā)送所述數(shù)據(jù)讀取請求,以及通過所述總線獲取所述目標數(shù)據(jù)。
11、可選的,所述總線為ahb總線。
12、可選的,所述主設備是內核為cortex-m3或cortex-m0或cortex-m4的處理器。
13、與現(xiàn)有技術相比,本發(fā)明實施例的技術方案具有以下有益效果:
14、本申請實施例的方案中,閃存控制器包括:總線接口和第一寄存器,總線接口至少用于從總線獲取數(shù)據(jù)讀取請求,數(shù)據(jù)讀取請求用于請求閃存中目標地址中的數(shù)據(jù),第一寄存器用于緩存第一預取數(shù)據(jù)。其中,總線的數(shù)據(jù)位寬為n個字節(jié),閃存的數(shù)據(jù)位寬至少為2n個字節(jié),第一預取數(shù)據(jù)在閃存中的地址位于目標地址之后,且第一預取數(shù)據(jù)在閃存中的地址與目標地址之間的間隔為n個字節(jié),n為大于1的正整數(shù)。
15、上述方案中,閃存的數(shù)據(jù)位寬大于或等于總線的數(shù)據(jù)位寬的兩倍,閃存控制器對閃存的單次讀取操作能夠取出地址相鄰的多個位寬為總線數(shù)據(jù)位寬的數(shù)據(jù)。也即,閃存控制器對閃存的單次讀取操作能夠獲取處理器多次請求的數(shù)據(jù)。在處理器運行某些地址連續(xù)遞增、跳轉極少的程序的情況下,閃存控制器對閃存的單次讀取除了能夠獲取處理器本次請求的數(shù)據(jù),還能夠獲取處理器下一次需要的數(shù)據(jù)。為此,本申請的方案中,將閃存中本次請求的數(shù)據(jù)所在地址之后的n個字節(jié)的數(shù)據(jù)作為第一預取數(shù)據(jù)緩存在第一寄存器中,若下一次請求的是該地址的數(shù)據(jù),則閃存控制器可以直接將第一寄存器中的數(shù)據(jù)輸出,無需再從閃存中讀取,減少了從閃存讀取數(shù)據(jù)所需的等待時間。
16、也就是說,上述方案中,將處理器后續(xù)可能需要的數(shù)據(jù)存儲在閃存控制器的寄存器中,若處理器下一次請求的數(shù)據(jù)正好已經(jīng)在閃存控制器的寄存器中,則可以提前返還數(shù)據(jù)。因此,本申請實施例的方案以較低的硬件開銷實現(xiàn)了減少訪問閃存的次數(shù),避免流水線停頓。尤其是在處理器運行某些地址遞增、跳轉較少的程序時,本申請實施例提供的方案能夠提高處理器的工作效率。
1.一種閃存控制器,其特征在于,包括:
2.根據(jù)權利要求1所述的閃存控制器,其特征在于,還包括:
3.根據(jù)權利要求2所述的閃存控制器,其特征在于,所述閃存控制器還包括:狀態(tài)機和控制模塊;
4.根據(jù)權利要求3所述的閃存控制器,其特征在于,所述狀態(tài)機的狀態(tài)包括:空閑態(tài)、第一狀態(tài)、第二狀態(tài)、第三狀態(tài)和第四狀態(tài);
5.根據(jù)權利要求1所述的閃存控制器,其特征在于,n為4的整數(shù)倍。
6.根據(jù)權利要求1所述的閃存控制器,其特征在于,還包括:
7.一種微控制器,其特征在于,包括權利要求1至6任一項所述的閃存控制器。
8.根據(jù)權利要求7所述的微控制器,其特征在于,還包括:
9.根據(jù)權利要求8所述的微控制器,其特征在于,所述總線為ahb總線。
10.根據(jù)權利要求8所述的微控制器,其特征在于,所述主設備是內核為cortex-m3或cortex-m0或cortex-m4的處理器。