專利名稱:一種高效讀取的串行Flash緩沖器控制電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及于一種閃存控制技術(shù),尤其是一種用于高速讀取數(shù)據(jù)或直接運行代碼的串行Flash緩沖器控制電路。
背景技術(shù):
在現(xiàn)有系統(tǒng)設(shè)計中,存儲控制方案是必須考慮的部分。傳統(tǒng)的SRAM技術(shù)訪問速度可以達到非常高的水平,但問題是數(shù)據(jù)沒辦法保存下來,一旦斷電所有數(shù)據(jù)都將丟失。對于一個穩(wěn)定成熟的系統(tǒng)來說,數(shù)據(jù)(代碼)的保存是必須的。解決這個問題的技術(shù)目前基本有兩種,一種是ROM技術(shù),一種是Flash技術(shù)。ROM能很好的保存代碼,而且訪問速率也很高,但存在一個缺點,對于那些只能燒寫一次的ROM,代碼一旦燒寫就不能再修改。另一種是 Flash技術(shù),它很好的解決了在線擦寫的需求,而且并行Flash的訪問速率相當(dāng)快了,但隨著現(xiàn)代芯片工藝尺寸的急速減小,65nm、40nm已經(jīng)變得很常見了,20nm、15nm也開始面市, 而Flash制造工藝卻跟不上芯片小尺寸工藝的需求,導(dǎo)致Flash沒法隨晶片集成在一起。如果采用片外并行Flash,那將導(dǎo)致芯片必須提供大量用于訪問并行Flash的I^ad,對于低功耗小面積的設(shè)計,往往其Pad數(shù)量會超過芯片所有其它Pad之和,這是系統(tǒng)設(shè)計者難以接受的;如果采用片外串行Flash,雖然Pad的數(shù)量可以減下來,但訪問速率遇到了瓶頸,因為一般這種串行接口(經(jīng)常是SPI)受其本身協(xié)議限制和串行的原因,通訊效率非常低,不適合代碼的直接運行。發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能夠在串行Flash上直接運行代碼的高效率的緩存器控制電路,解決傳統(tǒng)串行Flash訪問效率不高,難以直接運行代碼的問題。
本發(fā)明提供一種高效讀取的串行Flash緩沖器控制電路,包括緩沖器模塊,用于 Flash數(shù)據(jù)的預(yù)讀取和緩存,所述控制電路還包括地址命中算法邏輯模塊,用于判斷處理器訪問的數(shù)據(jù)是否存在于緩沖器模塊內(nèi);數(shù)據(jù)有效算法邏輯模塊,用于判斷緩沖器模塊中數(shù)據(jù)是否有效。
更進一步,所述緩沖器控制電路,還有一個用于對串行Flash進行連續(xù)讀操作的訪問控制電路模塊。
更進一步,所述緩沖器模塊中每個字節(jié)單元具有相應(yīng)的數(shù)據(jù)有效標(biāo)志位。
更進一步,所述地址命中算法邏輯模塊包括地址實命中算法和地址虛命中算法。
更進一步,所述數(shù)據(jù)有效算法邏輯模塊用于計算數(shù)據(jù)是否有效,并寫入所述數(shù)據(jù)有效標(biāo)志位。
更進一步,所述串行Flash緩沖器控制電路所在地址被所述處理器設(shè)為Cache工作區(qū)。
更進一步,所述緩沖器模塊從所述串行Flash連續(xù)預(yù)讀取和緩存數(shù)據(jù)后,所述處理器向所述串行Flash緩沖器控制電路發(fā)起讀操作,首先由所述地址命中算法邏輯模塊中所述地址實命中算法判斷所述讀操作需要的數(shù)據(jù)是否實命中,是則直接從所述緩沖器模塊讀取數(shù)據(jù),完成所述讀操作;否則,繼續(xù)由所述地址虛命中算法判斷所述讀操作需要的數(shù)據(jù)是否虛命中,是則等待數(shù)據(jù)有效后即返回,否則由所述緩沖器模塊從所述串行Flash連續(xù)讀取并返回所述處理器,由所述數(shù)據(jù)有效算法邏輯模塊對所述緩沖器模塊中數(shù)據(jù)進行有效性判斷和標(biāo)記。
采用本發(fā)明的技術(shù)方案后,解決傳統(tǒng)串行Flash訪問效率不高,難以直接運行代碼的問題,且節(jié)省了 RAM和Pad額外的開銷,從而降低了芯片設(shè)計成本。
圖1是本發(fā)明實施例的結(jié)構(gòu)示意圖;圖2是本發(fā)明實施例中緩沖器模塊結(jié)構(gòu)示意圖; 圖3是本發(fā)明實施例讀取操作流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1是本發(fā)明實施例的結(jié)構(gòu)示意圖,在本實施中,串行Flash緩沖器控制電路包括,地址命中算法邏輯模塊101,用于判斷處理器訪問的數(shù)據(jù)是否存在于緩沖器模塊內(nèi); 數(shù)據(jù)有效算法邏輯模塊102,用于判斷緩沖器模塊中數(shù)據(jù)是否有效;緩沖器模塊103,用于 Flash數(shù)據(jù)的預(yù)讀取和緩存;緩沖器模塊到串行Flash的訪問控制電路104,用于對串行 Flash進行連續(xù)讀操作。
圖2是本發(fā)明實施例中緩沖器模塊結(jié)構(gòu)示意圖,在本實施中,緩沖器模塊103除存儲數(shù)據(jù)的字節(jié)單元201外,每個字節(jié)單元還配備了一個數(shù)據(jù)有效標(biāo)志位202。目前的系統(tǒng)大部分的地址空間是按字節(jié)來計算的,為了方便起見,這里假設(shè)最小系統(tǒng)中所用的處理器使用了大小為N (2的整數(shù)次冪)字節(jié)一行的Cache,則對應(yīng)的緩沖器模塊大小是N字節(jié),也就最多擁有N個字節(jié)地址。最簡單的情況是,緩沖器模塊103內(nèi)的N個地址都是連續(xù)的,那緩沖器模塊103需要記錄的初始地址就只有一個;而最極端的情況,緩沖器模塊103內(nèi)的N 個地址都是隨機的,這樣就需要記錄N個初始地址。
地址命中算法邏輯模塊包括地址實命中算法和地址虛命中算法兩部分,前者是以緩沖器模塊的N個字節(jié)地址為依據(jù)判斷當(dāng)前總線訪問索取的數(shù)據(jù)是否存在于緩沖器模塊內(nèi)的,后者是以已經(jīng)發(fā)起的串行Flash訪問操作的地址范圍與當(dāng)前總線訪問地址相比較而進行命中判斷。地址實命中算法的具體實現(xiàn)是如果總線所發(fā)地址與其長度所確定的地址范圍(例如按字對齊的總線訪問實際有4個連續(xù)的字節(jié)地址)可以被包括在這N個字節(jié)地址內(nèi),則稱為地址全實命中;如果只有部分被包括,則稱為地址部分實命中;如果全部不被包括,則稱為地址未實命中。虛命中算法是在地址部分實命中和地址未實命中兩種情況下對未實命中現(xiàn)象的補充判斷,如果地址全實命中,則不觸發(fā)虛命中算法,否則啟動虛命中算法。虛命中算法的具體實現(xiàn)是如果當(dāng)前總線訪問地址或一個地址范圍雖然不能被包括在緩沖器模塊內(nèi),但如果可以被全部包括在已經(jīng)發(fā)起的串行Flash讀操作的地址范圍內(nèi),則稱為地址全虛命中;如果部分被包括,則稱為地址部分虛命中;如果全部不被包括,則稱為地址未虛命中。
根據(jù)地址命中算法邏輯模塊給出的判斷結(jié)果,F(xiàn)lash控制器會以相應(yīng)的方式工作。 如果把實命中和虛命中判斷結(jié)果組合起來,當(dāng)前總線訪問地址范圍就可以分成實命中部分、虛命中部分和未命中部分。對于實命中部分,則不需要訪問串行Flash,數(shù)據(jù)從緩沖器模塊中直接獲取,可以達到很快的速度;對于虛命中部分,只需要等待相應(yīng)數(shù)據(jù)有效(數(shù)據(jù)有效算法將在后面詳述)后即可返回;對于未命中部分,數(shù)據(jù)需要從串行Flash中讀取,所花費時間跟SPI讀操作周期數(shù)相關(guān)。如果當(dāng)前總線訪問前有已經(jīng)發(fā)起但未完成的串行Flash 訪問操作,則根據(jù)是否影響當(dāng)前訪問來選擇終止與否。終止該串行Flash訪問操作的充分條件是,虛命中部分訪問已經(jīng)完成且該操作會覆蓋實命中部分緩存區(qū)的數(shù)據(jù)。
由于SPI從串行Flash讀取單個字節(jié)的數(shù)據(jù)需要較多的周期數(shù),因此為了提高訪問效率,應(yīng)當(dāng)盡可能的減少這種只取單個字節(jié)的SPI操作?;谶@種思路,本串行Flash緩沖器控制電路結(jié)合處理器的行緩存工作特性,實現(xiàn)了一個從緩沖器模塊到串行Flash的訪問控制電路,讓每次發(fā)起的對串行Flash的操作轉(zhuǎn)變成某一長度的連續(xù)讀操作,具體長度根據(jù)具體需求和當(dāng)前緩存狀況來定。這樣通過連續(xù)讀操作就提高了 SPI訪問的平均速率, 同時預(yù)取的數(shù)據(jù)緩存在緩沖器模塊內(nèi),可以為下次的總線讀操作提供無需等待即時返回的數(shù)據(jù)。特別的,這種已發(fā)起的連續(xù)預(yù)取操作是可以在數(shù)據(jù)返回階段被終止的,即,如果當(dāng)前的預(yù)取操作的返回數(shù)據(jù)階段還沒有完成時,再次發(fā)生了地址未命中,則當(dāng)前預(yù)取操作將會被立即終止,并發(fā)起訪問新地址的下一輪操作。
由于本串行Flash緩沖器控制電路支持預(yù)取操作,支持未完成終止,而緩沖器模塊容量小且可能有多個緩沖器模塊初始地址,這些都影響著緩沖器模塊的工作效率,為了保證從緩沖器模塊返回的數(shù)據(jù)是有效的并最大化利用緩沖器模塊的緩存功能,設(shè)計了數(shù)據(jù)有效算法邏輯模塊。數(shù)據(jù)有效算法邏輯模塊包括三個方面第一,判斷當(dāng)前數(shù)據(jù)是否準(zhǔn)備好。如果某個緩沖器模塊單元被判斷為地址實命中,則它的數(shù)據(jù)必須是已經(jīng)準(zhǔn)備好的;如果被判斷為虛命中,則總線必須等到它的數(shù)據(jù)準(zhǔn)備好后才能返回,即先要從串行Flash獲得數(shù)據(jù)。
第二,標(biāo)定無效的緩沖器模塊單元。由于未完成終止的發(fā)生,緩沖器模塊初始地址就會增多,一旦達到實現(xiàn)時設(shè)定的最大個數(shù),那下一次未完成終止就會產(chǎn)生無效的緩沖器模塊單元,因為它已經(jīng)不具有能識別的緩沖器模塊地址。無效的緩沖器模塊單元是下一次數(shù)據(jù)緩存的首選區(qū)域。
第三,為當(dāng)前Flash數(shù)據(jù)在緩沖器模塊內(nèi)選擇合適的緩存區(qū)域。由于每一個從串行Flash讀取的數(shù)據(jù)必須要存放在緩沖器模塊內(nèi),而緩沖器模塊的容量是相當(dāng)有限的,這就需要在有限的緩沖器模塊內(nèi)尋找最適合替換的單元。
替換的優(yōu)先方法是首先是尋找無效的緩沖器模塊單元,可以提高緩沖器模塊的利用效率又不會影響其他數(shù)據(jù);其次是尋找初始地址超過Cache容量大小的,如果多個滿足則選最遠的,因為相距太遠最近被訪問的概率較??;再次是尋找初始地址小于當(dāng)前總線訪問地址的,如果多個滿足則選最遠的,因為處理器一般是向前取指令的;最后是尋找最遠的,因為相距較遠最近被訪問的概率較小。在選定了被替換的初始地址后,由于該地址區(qū)域通常存在不止一個地址,因此還要選擇該區(qū)域內(nèi)離初始地址最遠的緩沖單元依次替換。為了標(biāo)定緩沖器模塊中數(shù)據(jù)是否有效,按字節(jié)為單位,給每個字節(jié)的數(shù)據(jù)設(shè)置了一個數(shù)據(jù)有效標(biāo)志位,即N個字節(jié)對應(yīng)N個有效位。通過數(shù)據(jù)有效算法,可以避免重新從Flash讀取已經(jīng)存在于緩沖器模塊內(nèi)的數(shù)據(jù),最大限度保留緩沖器模塊內(nèi)已有的緩沖數(shù)據(jù),從而降低對串行Flash操作的頻繁度,提高緩沖器模塊的利用效率。
圖3是本發(fā)明實施例讀取操作流程圖,在本實施中,總線讀操作開始301,發(fā)起一次針對Flash控制電路的讀操作,F(xiàn)lash控制電路內(nèi)部的地址命中算法邏輯模塊將會對當(dāng)前訪問地址進行地址命中類型判斷302 如果地址命中類型是實命中,則直接從緩沖器模塊獲取數(shù)據(jù)303,總線讀操作結(jié)束309 ;如果地址命中類型是虛命中,則等待從Flash讀取數(shù)據(jù)304,完成總線讀操作310 ;如果地址命中類型是未命中,則對串行Flash發(fā)起SPI讀操作 306,從Flash讀取數(shù)據(jù)304,總線讀操作結(jié)束309。發(fā)起SPI讀操作305后,數(shù)據(jù)有效算法邏輯模塊判斷緩沖器模塊數(shù)據(jù)有效性307,并根據(jù)判斷結(jié)果設(shè)置/清除數(shù)據(jù)有效位308,從而為下一次往緩沖器模塊存入數(shù)據(jù)提供覆蓋位置。另外,從Flash讀取數(shù)據(jù)304得到的數(shù)據(jù)還會存入緩沖器模塊306,數(shù)據(jù)一旦存入緩沖器模塊,會觸發(fā)數(shù)據(jù)有效算法邏輯判斷緩沖器模塊數(shù)據(jù)有效性,并設(shè)置/清除數(shù)據(jù)有效位308。
需要特別說明的是,本圖3讀取操作流程圖僅就單個地址的單次讀取做了說明, 而實際上總線讀取操作301和通過SPI對串行Flash的讀操作305都可以是連續(xù)多次的, 連續(xù)多次的多操作可能會按照本流程圖示意的方式并行疊加發(fā)生。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種高效讀取的串行Flash緩沖器控制電路,包括緩沖器模塊,用于Flash數(shù)據(jù)的預(yù)讀取和緩存,其特征在于,所述控制電路還包括地址命中算法邏輯模塊,用于判斷處理器訪問的數(shù)據(jù)是否存在于緩沖器模塊內(nèi);數(shù)據(jù)有效算法邏輯模塊,用于判斷緩沖器模塊中數(shù)據(jù)是否有效。
2.根據(jù)權(quán)利要求1所述的串行Flash緩沖器控制電路,其特征在于,所述緩沖器控制電路,還有一個用于對串行Flash進行連續(xù)讀操作的訪問控制電路模塊。
3.根據(jù)權(quán)利要求1所述的串行Flash緩沖器控制電路,其特征在于,所述緩沖器模塊中每字節(jié)單元具有相應(yīng)的數(shù)據(jù)有效標(biāo)志位。
4.根據(jù)權(quán)利要求1所述的串行Flash緩沖器控制電路,其特征在于,所述地址命中算法邏輯模塊包括地址實命中算法和地址虛命中算法。
5.根據(jù)權(quán)利要求1和3所述的串行Flash緩沖器控制電路,其特征在于,所述數(shù)據(jù)有效算法邏輯模塊用于計算數(shù)據(jù)是否有效,并寫入所述數(shù)據(jù)有效標(biāo)志位。
6.根據(jù)權(quán)利要求1至5所述的串行Flash緩沖器控制電路,其特征在于,所述串行 Flash緩沖器控制電路所在地址被所述處理器設(shè)為Cache工作區(qū)。
7.根據(jù)權(quán)利要求1至6所述的串行Flash緩沖器控制電路,其特征在于,所述緩沖器模塊從所述串行Flash連續(xù)預(yù)讀取和緩存數(shù)據(jù)后,所述處理器向所述串行Flash緩沖器控制電路發(fā)起讀操作,首先由所述地址命中算法邏輯模塊中所述地址實命中算法判斷所述讀操作需要的數(shù)據(jù)是否實命中,是則直接從所述緩沖器模塊讀取數(shù)據(jù),完成所述讀操作;否則, 繼續(xù)由所述地址虛命中算法判斷所述讀操作需要的數(shù)據(jù)是否虛命中,是則等待數(shù)據(jù)有效后即返回,否則由所述緩沖器模塊從所述串行Flash讀取并返回所述處理器,由所述數(shù)據(jù)有效算法邏輯模塊對所述緩沖器模塊中數(shù)據(jù)進行有效性判斷和標(biāo)記。
全文摘要
一種高效讀取的串行Flash緩沖器控制電路,包括緩沖器模塊,用于Flash數(shù)據(jù)的預(yù)讀取和緩存,所述控制電路還包括地址命中算法邏輯模塊,用于判斷處理器訪問的數(shù)據(jù)是否存在于緩沖器模塊內(nèi);數(shù)據(jù)有效算法邏輯模塊,用于判斷緩沖器模塊中數(shù)據(jù)是否有效。采用本發(fā)明的技術(shù)方案后,解決傳統(tǒng)串行Flash訪問效率不高,難以直接運行代碼的問題,且節(jié)省了RAM和Pad額外的開銷,從而降低了芯片設(shè)計成本。
文檔編號G11C16/08GK102543187SQ201110453419
公開日2012年7月4日 申請日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
發(fā)明者吳加興 申請人:東莞市泰斗微電子科技有限公司