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