本發(fā)明涉及集成電路存儲器設(shè)計,尤其是指一種基于stt-mram的nandflash控制器架構(gòu)、緩存方法和介質(zhì)。
背景技術(shù):
1、nand?flash存儲器具有容量較大,改寫速度快、數(shù)據(jù)存儲能力可靠等優(yōu)點,因而被廣泛應(yīng)用。nlc(非晶硅技術(shù))和3d結(jié)構(gòu)技術(shù)的發(fā)展極大地降低了nand?flash的單位存儲成本,然而隨著成本優(yōu)勢而來的是p/e周期(即編程/擦除周期存在限制)縮短的問題,對nandflash的可靠性產(chǎn)生了極大的影響,特別是nand?flash的寫前擦除特性,會導(dǎo)致nand?flash的使用壽命減少,同時影響斷電情況下的數(shù)據(jù)恢復(fù)能力。但是,現(xiàn)有技術(shù)中對這些問題并沒有有效的解決方案。
技術(shù)實現(xiàn)思路
1、為此,本發(fā)明所要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)中的不足,提供一種基于stt-mram的nand?flash控制器架構(gòu)、緩存方法和介質(zhì),可以延長nand?flash的使用壽命,提高意外斷電情況下的數(shù)據(jù)恢復(fù)能力。
2、為解決上述技術(shù)問題,本發(fā)明提供了一種基于stt-mram的nand?flash控制器架構(gòu),包括:
3、包括nand?flash控制器、主機接口、nand?flash接口,所述nand?flash控制器分別與所述主機接口、nand?flash接口連接;
4、所述nand?flash控制器包括雙口stt-mram緩存模塊,所述雙口stt-mram緩存模塊用于實現(xiàn)數(shù)據(jù)內(nèi)部緩沖和緩沖流程,在主機向nand?flash寫入數(shù)據(jù)和從nand?flash讀取數(shù)據(jù)時用作數(shù)據(jù)緩沖區(qū)、并存儲映射表和元數(shù)據(jù)日志。
5、進一步地,所述nand?flash控制器還包括命令解析模塊、時序控制模塊,所述命令解析模塊和時序控制模塊分別包含一個狀態(tài)機;所述命令解析模塊中的狀態(tài)機解釋來自主機的命令,并將控制信號傳遞給所述時序控制模塊;所述時序控制模塊中的狀態(tài)機根據(jù)接收到的所述控制信號生成所有必要的控制信號,以便nand?flash執(zhí)行具有嚴格時序要求的重復(fù)任務(wù)。
6、進一步地,所述nand?flash控制器還包括地址計數(shù)模塊,所述地址計數(shù)模塊根據(jù)所述命令解析模塊中的狀態(tài)機生成數(shù)據(jù)緩沖所需的地址控制信號,判斷數(shù)據(jù)的操作完成情況。
7、進一步地,所述nand?flash控制器還包括ecc校驗碼生成模塊、ecc校驗碼檢測模塊,所述ecc校驗碼生成模塊在頁編程操作期間生成ecc校驗碼并將ecc校驗碼存儲在nandflash的oob區(qū)域中,所述ecc校驗碼檢測模塊在主機進行讀取操作期間利用nand?flash中的ecc校驗碼檢測數(shù)據(jù)中的錯誤。
8、進一步地,所述雙口stt-mram緩存模塊為雙端口ram。
9、進一步地,所述主機接口的引腳設(shè)置包括:
10、clk引腳,為輸入,有效狀態(tài)為n/a,表示時鐘信號;
11、res引腳,為輸入,有效狀態(tài)為高,表示復(fù)位信號;
12、bf_sel引腳,為輸入高,有效狀態(tài)為高,表示雙口stt-mram使能信號;
13、bf_ad[10:0]引腳,為輸入,有效狀態(tài)為n/a,表示雙口stt-mram地址信號;
14、bf_din[7:0]引腳,為輸入,有效狀態(tài)為n/a,表示雙口stt-mram數(shù)據(jù)信號;
15、bf_we引腳,為輸入,有效狀態(tài)為高,表示雙口stt-mram寫入信號;
16、rwa[15:0]引腳,為輸入,有效狀態(tài)為n/a,表示nand?flash寫入物理地址信號;
17、bf_dou[7:0]引腳,為輸出,有效狀態(tài)為n/a,表示雙口stt-mram傳輸數(shù)據(jù)至主機;
18、perr引腳,為輸出,有效狀態(tài)為高,表示頁編程操作錯誤信號;
19、eerr引腳,為輸出,有效狀態(tài)為高,表示塊擦除操作錯誤信號;
20、rerr引腳,為輸出,有效狀態(tài)為高,表示頁讀取操作錯誤信號;
21、nfc_cmd[2:0]引腳,為輸入,有效狀態(tài)為n/a,表示命令代碼信號;
22、nfc_strt引腳,為輸入,有效狀態(tài)為高,當置位時表示主機啟動一個操作;
23、nfc_done引腳,為輸出,有效狀態(tài)為高,當置位時表示一個操作完成。
24、進一步地,所述nand?flash接口的引腳設(shè)置包括:
25、i/o[7:0]引腳,為輸入/輸出,有效狀態(tài)為n/a,用于向nand?flash發(fā)送命令、地址和數(shù)據(jù),并在讀取操作期間接收數(shù)據(jù)的i/o引腳;
26、cle引腳,為輸出,有效狀態(tài)為高,表示命令鎖存使能;
27、ale引腳,為輸出,有效狀態(tài)為高,表示地址鎖存使能;
28、we_n引腳,為輸出,有效狀態(tài)為低,表示寫使能;
29、re_n引腳,為輸出,有效狀態(tài)為低,表示讀使能;
30、ce_n引腳,為輸出,有效狀態(tài)為低,表示芯片使能;
31、r_nb引腳,為輸入,有效狀態(tài)為n/a,當此信號為高時nand?flash準備進行下一次操作,當此信號為低時內(nèi)部操作正在進行中。
32、本發(fā)明還提供了一種基于stt-mram的nand?flash緩存方法,在所述的基于stt-mram的nand?flash控制器架構(gòu)下,將stt-mram緩存按存儲器地址分出ftl映射表存儲區(qū)、日志區(qū)、數(shù)據(jù)緩存區(qū);
33、所述ftl映射表存儲區(qū)用于存儲及更新ftl映射表,將ftl映射表頁的更新就地寫入,更改跟蹤ftl映射表頁位置的映射目錄;
34、所述日志區(qū)用于記錄元數(shù)據(jù)日志,通過wal技術(shù)預(yù)先更新日志;
35、所述數(shù)據(jù)緩存區(qū)與nand?flash存儲以相同大小的頁粒度劃分,在將整個頁的數(shù)據(jù)移動到nand?flash時使用頁對齊。
36、進一步地,還包括元數(shù)據(jù)日志操作流程,所述元數(shù)據(jù)日志操作流程包括:
37、所述nand?flash控制器從主機接收寫入指令,分配數(shù)據(jù)緩存區(qū)頁并將數(shù)據(jù)寫入,完成后向主機確認已接收數(shù)據(jù);
38、通過ftl層分配對應(yīng)的nand?flash物理地址,開始產(chǎn)生元數(shù)據(jù)日志,此時寫入nandflash中的判斷標志位設(shè)置為0;將元數(shù)據(jù)日志寫入日志區(qū),并向所述nand?flash控制器確認已完成元數(shù)據(jù)日志寫入;
39、所述nand?flash控制器確認元數(shù)據(jù)日志生成后,開始按照分配的物理地址寫入nand?flash中,完成后更新ftl映射表,并將日志區(qū)的寫入日志標記位更新為1;
40、所述nand?flash控制器啟動檢查點操作,確認日志區(qū)是否有足夠空間,若日志區(qū)即將寫滿,則回收日志區(qū)并標記已完成的日志條目空間。
41、本發(fā)明還提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)所述的基于stt-mram的nand?flash緩存方法。
42、本發(fā)明的上述技術(shù)方案相比現(xiàn)有技術(shù)具有以下有益效果:
43、本發(fā)明中的緩存寫入策略在利用stt-mram緩存數(shù)據(jù)的持久性的基礎(chǔ)上結(jié)合日志預(yù)寫和元數(shù)據(jù)技術(shù),有效解決了映射表更新和日志文件系統(tǒng)頻繁寫操作導(dǎo)致的存儲損耗問題、延長了nand?flash的使用壽命,同時確保了緩存數(shù)據(jù)的原子性、提高了意外斷電情況下的數(shù)據(jù)恢復(fù)能力。