專利名稱:具有減少的部分填充頁(yè)面的數(shù)量的固態(tài)存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種例如按照目標(biāo)(target)而組織的固態(tài)存儲(chǔ)器,每個(gè)目標(biāo)包含一 個(gè)或多個(gè)邏輯單元(LUN),每個(gè)邏輯單元包含一個(gè)或多個(gè)塊,而每個(gè)塊包含一個(gè)或多個(gè)頁(yè) 面。這種器件例如是根據(jù)開放NAND閃存接口規(guī)范(ONFI)而設(shè)計(jì)的NAND閃存存儲(chǔ)器件。
背景技術(shù):
從美國(guó)專利公開US2008/0183949中已知了這種器件,該美國(guó)專利公開描述了用 于對(duì)閃存存儲(chǔ)器進(jìn)行編程的方法。本領(lǐng)域技術(shù)人員將在該背景下的編程理解為在閃存存儲(chǔ) 器單元中寫入或者存儲(chǔ)比特。通過(guò)一次編程一個(gè)頁(yè)面的數(shù)據(jù)來(lái)對(duì)閃存存儲(chǔ)器上的數(shù)據(jù)進(jìn)行 編程。如果在數(shù)據(jù)流的末尾沒(méi)有提供足夠的數(shù)據(jù)來(lái)編程完整的頁(yè)面,則在數(shù)據(jù)流的末尾所 編程的頁(yè)面僅僅被部分地填充。如果要編程的數(shù)據(jù)流稍后繼續(xù),則在其他被完整地填充的 頁(yè)面之間存在被部分填充的頁(yè)面。這可能被認(rèn)為是不充分的。通過(guò)以下方式來(lái)提供更好的 解決方案再次讀出被部分填充的數(shù)據(jù)頁(yè)面并且利用隨后提供的要寫入的數(shù)據(jù)來(lái)補(bǔ)足數(shù)據(jù) 并且然后將完整的數(shù)據(jù)頁(yè)面編程到閃存存儲(chǔ)器。以額外的讀取和編程周期的代價(jià)來(lái)減少被 部分填充的頁(yè)面。美國(guó)專利公開US2006/0136656描述了作為閃存存儲(chǔ)器的最小可擦除單元的塊。 其進(jìn)一步描述了因?yàn)樽钚】刹脸龁卧皇琼?yè)面而是塊,所以不能夠容易地擦除被部分填充 的頁(yè)面的問(wèn)題。因此,閃存存儲(chǔ)器被不必要地?fù)p耗。當(dāng)在兩個(gè)邏輯單元之間執(zhí)行切換操作時(shí),也出現(xiàn)被部分填充的頁(yè)面的效應(yīng)。當(dāng)執(zhí) 行從第一邏輯單元向第二邏輯單元的切換時(shí),在輸入緩沖器中剩余的數(shù)據(jù)被編程到第一邏 輯單元,并且在此之后進(jìn)行向第二邏輯單元的切換。如果稍后數(shù)據(jù)被編程到第一邏輯單元, 則使用新的頁(yè)面來(lái)編程該數(shù)據(jù),并且因此在邏輯單元中出現(xiàn)被部分使用的頁(yè)面。根據(jù)開放NAND閃存接口規(guī)范(0NFI),通過(guò)向目標(biāo)發(fā)出具有對(duì)應(yīng)的邏輯單元號(hào) (LUN)、塊地址和頁(yè)面地址的編程頁(yè)面命令來(lái)進(jìn)行向NAND閃存器件寫入數(shù)據(jù)。然后,通常是 幾千字節(jié)的完整的存儲(chǔ)器頁(yè)面的數(shù)據(jù)被寫入到所選擇的邏輯單元的頁(yè)面寄存器。當(dāng)完整的 頁(yè)面被寫入頁(yè)面寄存器時(shí),邏輯單元開始將數(shù)據(jù)編程到它的存儲(chǔ)器陣列。在編程期間,邏輯 單元忙,并且在完成了第一頁(yè)面的編程之后,可以將下一頁(yè)面寫入邏輯單元的頁(yè)面寄存器。 在完整的頁(yè)面已經(jīng)被寫入頁(yè)面寄存器并且已經(jīng)開始頁(yè)面編程之后,可以選擇并且使用目標(biāo) 的其他邏輯單元。ONFI規(guī)范還提供了編程不完整(partial)頁(yè)面的可能性,但是這將意味 著額外的編程時(shí)間并且將降低可達(dá)到的帶寬。根據(jù)ONFI規(guī)范定義以下編程指令頁(yè)面編程將數(shù)據(jù)寫入數(shù)據(jù)寄存器并且在完成數(shù)據(jù)階段之后開始編程。頁(yè)面緩存編程將數(shù)據(jù)寫入數(shù)據(jù)寄存器并且在完成數(shù)據(jù)階段之后,將數(shù)據(jù)寄存器 的內(nèi)容復(fù)制到緩存寄存器并且開始編程。頁(yè)面編程交錯(cuò)將數(shù)據(jù)寫入一個(gè)LUN的多個(gè)數(shù)據(jù)寄存器并且當(dāng)填充了最后的數(shù)據(jù) 寄存器時(shí)開始編程。
已知的頁(yè)面編程流程用于將完整的數(shù)據(jù)頁(yè)面寫入到NAND器件的頁(yè)面寄存器并且 開始對(duì)存儲(chǔ)器陣列的編程。每個(gè)過(guò)程導(dǎo)致目標(biāo)狀態(tài)機(jī)和邏輯單元狀態(tài)機(jī)的數(shù)個(gè)狀態(tài)切換。 以下示出依賴于過(guò)程的狀態(tài)機(jī)的狀態(tài)切換
-> L_PP_Ilv_ffait L_PP_Ilv_ffaitL_PP_Ilv_ffait -> L_PP_Addr -> L PP WaitForData-> T_PP_I lvffait 向 NAND 器件寫入 T_PP_IIvWait 命令 80h*- > T_PP_Addrffait向 NAND 器件寫入 T_PP_AddrWait LUN地址,塊地址-> T_PP_Addr 和頁(yè)面地址 -> T_PP_LUN_Execute-> T_PP_LUN_Dataffait 向 NAND 器件寫入 T_PP_LUN_DataWait 完整數(shù)據(jù)頁(yè)面-> T_PP_LUN_DataPass -> T_PP_LUN_Dataffait 向 NAND 器件寫入 T_PP_LUN_DataWait 命令 IOh- > T_PP_Cmd_DataPass - > L_PP_Prog-> T_Idle- > L_PP_Progffait-> L_PP_Sts -> L IdleL_PP_ffaitForData -> L_PP_AcceptData -> L_PP_ffaitForData L PP WaitForData*用于狀態(tài)“T_PP_IlvWait”的編程操作的尋址周期意圖具有與在之前的編程操 作中發(fā)出的塊地址不同的交錯(cuò)塊地址。如果在目標(biāo)的獨(dú)立的LUN中記錄兩個(gè)獨(dú)立源的數(shù)據(jù),則向用于第一獨(dú)立源的第一 LUN首先發(fā)出上述的處理中的一個(gè),并且在完成寫入處理之后,向第二 LUN發(fā)出上述處理中 的一個(gè),以將第二獨(dú)立源的數(shù)據(jù)寫入第二 LUN。當(dāng)應(yīng)該將獨(dú)立并發(fā)流記錄到閃存器件中時(shí),有利的是將不同的流記錄到不同的邏 輯單元中。利用這種常規(guī)的策略,文件管理更容易并且為記錄輸入數(shù)據(jù)流而保證了邏輯單 元的完整的帶寬。如果各流的數(shù)據(jù)以比頁(yè)面尺寸小的尺寸的塊到達(dá),則存在對(duì)在閃存器件 的外部布置的緩存中對(duì)每個(gè)流的數(shù)據(jù)進(jìn)行緩存的需要、以及在用于一個(gè)邏輯單元的完整的 頁(yè)面準(zhǔn)備好被編程時(shí)將該數(shù)據(jù)寫入NAND閃存器件的需要。依賴于流和邏輯單元的量,在存 儲(chǔ)器件的外部需要大量的緩存存儲(chǔ)器,而該器件內(nèi)部的可用的頁(yè)面寄存器保持未使用。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種減少被部分填充的頁(yè)面的問(wèn)題的固態(tài)存儲(chǔ)器以及一種 用于操作固態(tài)存儲(chǔ)器的方法。本發(fā)明的另一目的是提供一種在將多個(gè)輸入數(shù)據(jù)流被編程到 閃存器件的情況下,減少對(duì)于外部緩存存儲(chǔ)器的需求并且利用內(nèi)部頁(yè)面寄存器的固態(tài)存儲(chǔ) 器,、以及一種用于操作固態(tài)存儲(chǔ)器的方法。為了將邏輯單元的頁(yè)面寄存器用作對(duì)于對(duì)應(yīng)的輸入數(shù)據(jù)流的輸入緩沖器,即使其 他邏輯單元上的頁(yè)面可能尚未被完整填充,也必須依賴于當(dāng)前的輸入流的特性來(lái)切換激活 的邏輯單元。ONFI規(guī)范沒(méi)有處理該問(wèn)題并且未提供專用的機(jī)制。根據(jù)本發(fā)明,用于存儲(chǔ)至少一個(gè)輸入數(shù)據(jù)流的固態(tài)存儲(chǔ)器在一個(gè)目標(biāo)內(nèi)具有多個(gè) 邏輯單元。每個(gè)邏輯單元具有用于向存儲(chǔ)器編程數(shù)據(jù)的至少一個(gè)頁(yè)面。固態(tài)存儲(chǔ)器包含通 常被稱為頁(yè)面寄存器的內(nèi)部緩沖存儲(chǔ)器,用于在輸入數(shù)據(jù)被編程到至少一個(gè)頁(yè)面之前,暫 時(shí)存儲(chǔ)輸入數(shù)據(jù)流。此外,當(dāng)執(zhí)行在不同邏輯單元之間的切換操作時(shí),內(nèi)部緩沖存儲(chǔ)器保存還沒(méi)有被編程的數(shù)據(jù)。這具有以下優(yōu)點(diǎn)在從第一邏輯單元切換到第二邏輯單元的情況下, 還不夠完整填充頁(yè)面的剩余數(shù)據(jù)不需要被編程而是被保存在頁(yè)面存儲(chǔ)器中。如果稍后,提 供了用于該邏輯單元的更多的數(shù)據(jù),則該數(shù)據(jù)被添加到剩余數(shù)據(jù)中并且剩余數(shù)據(jù)和新數(shù)據(jù) 一起被編程為完整的頁(yè)面。因?yàn)楸苊饬司幊倘圆煌暾捻?yè)面,所以這增強(qiáng)了編程特定邏輯 單元的整體的比特率。由于編程完整的頁(yè)面和編程不完整頁(yè)面需要幾乎相同的時(shí)間,所以 如果在任何可能的情況下小心地僅僅編程完整的頁(yè)面,則編程特定的數(shù)據(jù)量需要較少的編 程周期。此外,避免了在固態(tài)存儲(chǔ)器件中僅僅被部分填充數(shù)據(jù)的固態(tài)存儲(chǔ)器件中的頁(yè)面的 問(wèn)題。固態(tài)存儲(chǔ)器得到更高效的使用。有利地,將固態(tài)存儲(chǔ)器組織為目標(biāo)組,其中每個(gè)目標(biāo)包含至少一個(gè)邏輯單元。每個(gè) 邏輯單元配備有用于暫時(shí)存儲(chǔ)要被編程到該邏輯單元的輸入數(shù)據(jù)的頁(yè)面寄存器。此外,每 個(gè)邏輯單元包含至少一個(gè)塊。按塊來(lái)擦除存儲(chǔ)器。每個(gè)塊包含至少一個(gè)頁(yè)面。一次編程要 被存儲(chǔ)在一個(gè)頁(yè)面中的數(shù)據(jù)。優(yōu)選地,固態(tài)存儲(chǔ)器的每個(gè)邏輯單元具有用于在數(shù)據(jù)被編程到頁(yè)面之前暫時(shí)存儲(chǔ) 輸入數(shù)據(jù)流的內(nèi)部緩沖器。該內(nèi)部緩沖器的大小至少是一個(gè)頁(yè)面的大小加上在可允許的最 高輸入比特率的情況下在頁(yè)面的編程周期期間所接收的數(shù)據(jù)的大小。由此SizeinternalBuffer ^ SizePage+T!Lmepageprogramcycle5^BitrateInputData這具有以下優(yōu)點(diǎn)在頁(yè)面的編程期間,還可以在內(nèi)部緩沖器中接收用于編程下一 頁(yè)面的數(shù)據(jù)。如果輸入數(shù)據(jù)的比特率足夠高,則例如兩個(gè)頁(yè)面大小的內(nèi)部緩沖器可以在另 一頁(yè)面的編程周期期間接收用于要編程的整個(gè)頁(yè)面的數(shù)據(jù)。由此,減少了整體的等待時(shí)間 并且進(jìn)一步增強(qiáng)了固態(tài)存儲(chǔ)器的比特率。有利地,該存儲(chǔ)器件是依據(jù)開放NAND閃存接口(ONFI)規(guī)范而操作的NAND閃存器 件。ONFI規(guī)范沒(méi)有預(yù)見(jiàn)到用于在執(zhí)行在不同的邏輯單元之間的切換的情況下避免被部分地 編程的頁(yè)面以及用于在不完整頁(yè)面編程的情況下減少編程時(shí)間并由此減少編程比特率的 具體算法。所提出的存儲(chǔ)器件具有以下優(yōu)點(diǎn)其本質(zhì)上是依據(jù)ONFI規(guī)范的并且同時(shí)避免了 不完整頁(yè)面。根據(jù)本發(fā)明的器件僅僅偏離了 ONFI標(biāo)準(zhǔn)的已知的實(shí)施方案。仍然使用ONFI 標(biāo)準(zhǔn)的編程指令。從本領(lǐng)域已知的實(shí)施方案的規(guī)則的偏離與ONFI標(biāo)準(zhǔn)不矛盾。由此,根據(jù) 本發(fā)明的器件仍可以被視為遵守ONFI標(biāo)準(zhǔn)。此外,因?yàn)槊慨?dāng)合適時(shí),就編程完整的頁(yè)面,所 以減少了編程時(shí)間。除此以外,本發(fā)明涉及一種固態(tài)存儲(chǔ)器件,其以面向頁(yè)面的方式操作, 并且可應(yīng)用于例如流傳輸應(yīng)用(特別是并行的若干視頻源的流傳輸),作為捕捉研究環(huán)境 (特別是用于捕捉并行的若干測(cè)量數(shù)據(jù)流或者類似環(huán)境)的測(cè)量數(shù)據(jù)的中央存儲(chǔ)器件。優(yōu)選地,該固態(tài)存儲(chǔ)器是具有一個(gè)或多個(gè)相機(jī)的視頻捕捉相機(jī)系統(tǒng)的一部分。由 相機(jī)發(fā)出的數(shù)據(jù)被提供給固態(tài)存儲(chǔ)器件。有利地,該固態(tài)存儲(chǔ)器在不同邏輯單元中存儲(chǔ)由 不同相機(jī)捕捉的數(shù)據(jù)流。優(yōu)選地,該相機(jī)系統(tǒng)被提供用于3D視頻捕捉。在該情況下,生成 若干視頻流(其中至少一個(gè)具有高的數(shù)據(jù)率)。必須并行地實(shí)時(shí)存儲(chǔ)視頻數(shù)據(jù)流。該固態(tài) 存儲(chǔ)器對(duì)如上所述的相機(jī)系統(tǒng)提供了若干優(yōu)點(diǎn)。在不同的邏輯單元中存儲(chǔ)不同相機(jī)的數(shù)據(jù) 流具有以下優(yōu)點(diǎn)提供了簡(jiǎn)單的文件結(jié)構(gòu)并且依據(jù)層級(jí)存儲(chǔ)器結(jié)構(gòu)來(lái)組織數(shù)據(jù)。由此,特別 是在使用具有多于一個(gè)相機(jī)的相機(jī)系統(tǒng)(如對(duì)于例如3D捕捉所必須的那樣)的情況下,必 須同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)流。另外,由相機(jī)輸出的數(shù)據(jù)流通常具有高的數(shù)據(jù)率。使用高清相機(jī) (HD),一個(gè)相機(jī)的數(shù)據(jù)流例如可高達(dá)2G比特/s。根據(jù)本發(fā)明的固態(tài)存儲(chǔ)裝置特別有利于這樣的系統(tǒng),這是因?yàn)榇鎯?chǔ)器件的輸入數(shù)據(jù)率不通過(guò)寫入和讀取被部分填充的頁(yè)面而被不必 要地減少。因?yàn)樵诰哂卸鄠€(gè)相機(jī)的系統(tǒng)(其中在不同邏輯單元中存儲(chǔ)不同相機(jī)的數(shù)據(jù)流) 中定期進(jìn)行不同邏輯單元之間的切換并且不在一個(gè)周期中被寫入的頁(yè)面或者僅僅被部分 寫入的頁(yè)面的問(wèn)題將頻繁地出現(xiàn),所以在這樣的系統(tǒng)中益處大。除了 3D捕捉之外,電影工 業(yè)還關(guān)注多維捕捉。本發(fā)明還用于實(shí)時(shí)的多維環(huán)境的場(chǎng)景捕捉。優(yōu)選地,實(shí)現(xiàn)了一種用于操作包括至少一個(gè)邏輯單元的固態(tài)存儲(chǔ)器件的方法。每 個(gè)邏輯單元包括至少一個(gè)頁(yè)面并且一次編程一個(gè)頁(yè)面。在根據(jù)本發(fā)明的方法中,至少一個(gè) 輸入數(shù)據(jù)流順序被輸入到固態(tài)存儲(chǔ)器。該數(shù)據(jù)被暫時(shí)地存儲(chǔ)在內(nèi)部緩沖器(頁(yè)面寄存器) 中。內(nèi)部緩沖器例如是如上所述的緩沖器并且被分配給邏輯單元。執(zhí)行檢查內(nèi)部緩沖器是 否包含足夠用于要編程的一個(gè)完整頁(yè)面的數(shù)據(jù)的步驟。如果內(nèi)部緩沖器包含足夠用于要編 程的一個(gè)完整頁(yè)面的數(shù)據(jù),則編程至少一個(gè)完整的頁(yè)面。足夠用于一個(gè)完整頁(yè)面的數(shù)據(jù)可 以僅稍微多于用于一個(gè)完整的頁(yè)面所必需的數(shù)據(jù),但它也可以是足夠填充若干完整的頁(yè)面 的數(shù)據(jù)。如果在不同邏輯單元之間執(zhí)行切換操作,則在內(nèi)部緩沖器中保存當(dāng)前激活的邏輯 單元的內(nèi)部緩沖器的還未被編程的數(shù)據(jù)。然后執(zhí)行邏輯單元之間的切換。這具有以下優(yōu)點(diǎn) 在從第一邏輯單元切換到第二邏輯單元之前,未填充完整的頁(yè)面的剩余數(shù)據(jù)無(wú)需被編程而 是被保存在內(nèi)部緩沖器中,并且在完成切換之后仍然被保存。如果稍后提供了對(duì)于該邏輯 單元的更多的數(shù)據(jù),則該數(shù)據(jù)被添加到剩余數(shù)據(jù)中并且剩余數(shù)據(jù)和新的數(shù)據(jù)一起被編程為 完整的頁(yè)面。這減少了整體的編程時(shí)間,這是因?yàn)椴煌暾?yè)面的編程大約需要與完整頁(yè)面 的編程相同的處理時(shí)間。由此,通過(guò)僅僅編程完整的頁(yè)面,增強(qiáng)了編程帶寬。此外,避免了 在固態(tài)存儲(chǔ)器件中在一個(gè)編程周期期間中僅僅被部分地填充數(shù)據(jù)的頁(yè)面的問(wèn)題。固態(tài)存儲(chǔ) 器得到更高效的使用。有利地,該方法用于在不同邏輯單元中存儲(chǔ)由不同相機(jī)捕捉的輸入數(shù)據(jù)流。在不 同邏輯單元中存儲(chǔ)不同相機(jī)的數(shù)據(jù)流具有以下優(yōu)點(diǎn)提供了簡(jiǎn)單的文件結(jié)構(gòu)并且依據(jù)層級(jí) 存儲(chǔ)器結(jié)構(gòu)來(lái)組織數(shù)據(jù)。由此,特別是在使用具有多于一個(gè)相機(jī)的相機(jī)系統(tǒng)(如對(duì)于例如 3D捕捉所必須的那樣)的情況下,必須同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)流。另外,由相機(jī)輸出的數(shù)據(jù)流通 常具有高的數(shù)據(jù)率。使用高清相機(jī)(HD),一個(gè)相機(jī)的數(shù)據(jù)流例如可高達(dá)2G比特/S。所提 供的固態(tài)存儲(chǔ)裝置特別有利于這樣的系統(tǒng),這是因?yàn)榇鎯?chǔ)器件的輸入數(shù)據(jù)率不通過(guò)寫入和 讀取被部分填充的頁(yè)面而被不必要地減少。因?yàn)樵诰哂卸鄠€(gè)相機(jī)的系統(tǒng)(其中在不同邏輯 單元中存儲(chǔ)不同相機(jī)的數(shù)據(jù)流)中定期進(jìn)行不同邏輯單元之間的切換并且不完整頁(yè)面的 問(wèn)題將頻繁地出現(xiàn),所以在這樣的系統(tǒng)中益處大。除了 3D捕捉之外,電影工業(yè)還關(guān)注多維 捕捉。本發(fā)明還用于多維環(huán)境的場(chǎng)景捕捉。優(yōu)選地,本方法根據(jù)開放NAND閃存接口(ONFI)規(guī)范來(lái)操作。有利地,在數(shù)據(jù)寄存 器中接收到用于一個(gè)邏輯單元的數(shù)據(jù)之后,并且在要執(zhí)行邏輯單元的切換的情況下,使用 頁(yè)面編程交錯(cuò)命令I(lǐng)lh將目標(biāo)設(shè)置為狀態(tài)T_PP_Ilv_Wait。使用該命令,邏輯單元被設(shè)置為 狀態(tài)L_PP_Ilv_Wait。隨后,目標(biāo)保持在狀態(tài)T_PP_Ilv_Wait并且邏輯單元保持在狀態(tài)L_ PP_Ilv_ffait直到LUN的數(shù)據(jù)寄存器被完整的頁(yè)面填充。然后,使用命令I(lǐng)Oh或者1 將這 些數(shù)據(jù)編程到頁(yè)面。在使用命令I(lǐng)Oh或者1 將完整的頁(yè)面編程到邏輯單元之后,將目標(biāo) 設(shè)置為狀態(tài)T_PP_LUN_DataWait并且將邏輯單元設(shè)置為狀態(tài)L_PP_WaitR)rData以防止目 標(biāo)刪除來(lái)自被尋址的邏輯單元的頁(yè)面寄存器的數(shù)據(jù)。
為了更好地理解本發(fā)明,現(xiàn)在將參照附圖在以下的描述中更詳細(xì)地解釋本發(fā)明。 應(yīng)理解本發(fā)明不限于這些示例性的實(shí)施例并且還可以方便地組合和/或修改所指定的特 征而不脫離本發(fā)明的范圍。圖1描繪了固態(tài)存儲(chǔ)器件的層級(jí)結(jié)構(gòu)。圖2描繪了根據(jù)本發(fā)明的操作固態(tài)存儲(chǔ)器件的方法。圖3描繪了根據(jù)本發(fā)明的目標(biāo)的狀態(tài)圖。圖4描繪了根據(jù)本發(fā)明的邏輯單元的狀態(tài)圖。圖5描繪了根據(jù)本發(fā)明的包括一個(gè)目標(biāo)和兩個(gè)邏輯單元的固態(tài)存儲(chǔ)器的狀態(tài)圖。
具體實(shí)施例方式圖1描繪了根據(jù)本發(fā)明的通過(guò)ONFI規(guī)范命令集操作的NAND閃存存儲(chǔ)器的結(jié)構(gòu)。 NAND閃存存儲(chǔ)器被組織為目標(biāo)。目標(biāo)包含一個(gè)或多個(gè)邏輯單元LOGICAL UNIT 0,LOGICAL UNIT 1, . . . , LOGICAL UNIT L,每個(gè)邏輯單元 LOGICAL UNIT 0,LOGICAL UNIT 1,…, LOGICAL UNIT L 包含多個(gè)塊 BLOCK 0,BLOCK 1, . . . BLOCK M,而每個(gè)塊 BLOCK 0,BLOCK 1,. . . BLOCK M 包含多個(gè)頁(yè)面 PAGE 0、PAGE 1,. . .,PAGE N。頁(yè)面 PAGE 0、PAGEl,..., PAGE N典型地是讀取或者寫入單元。這意味著頁(yè)面包含在一個(gè)步驟中可以讀取或者寫入 的數(shù)據(jù)的最小數(shù)量。塊BLOCK 0, BLOCK 1,. . . BLOCKM典型地是擦除單元。這意味著塊包 含在一個(gè)步驟中可以擦除的數(shù)據(jù)的最小數(shù)量。邏輯單元LOGICAL UNIT 0,LOGICAL UNIT 1,...,LOGICAL UNITL是獨(dú)立操作的操作單元。每個(gè)邏輯單元LOGICAL UNIT 0,LOGICAL UNITl, ...,LOGICAL UNIT L包含用于暫時(shí)地存儲(chǔ)要寫入或者要讀取的數(shù)據(jù)的頁(yè)面寄存器 PAGE REGISTER。進(jìn)一步,每個(gè)邏輯單元包含用于操作邏輯單元LOGICAL UNIT 0,LOGICAL UNIT 1,. . . , LOGICAL UNIT L 的控制器單元 CU_LU_0,CU_LU_1,. . .,CU_LU_L。目標(biāo) TARGET 進(jìn)一步包含用于在目標(biāo)級(jí)上控制器件的目標(biāo)控制單元CU_TRG。圖2描繪了根據(jù)本發(fā)明的器件的編程流程。在步驟Si,檢查輸入數(shù)據(jù)是否可用。如果輸入數(shù)據(jù)可用(是),則在步驟S2將頁(yè)面編程命令80h寫入目標(biāo)。在步驟S3, 將LUN地址、塊地址、頁(yè)面地址和列地址寫入NAND閃存目標(biāo)的頁(yè)面寄存器。在步驟S4,將下 一數(shù)據(jù)字寫入NAND閃存目標(biāo)。然后,在步驟S5檢查在閃存目標(biāo)的頁(yè)面寄存器中是否有完 整的頁(yè)面可用。如果有完整的頁(yè)面可用(是),則在步驟S8,使用頁(yè)面編程IOh命令或者頁(yè)面緩存 編程1 命令將數(shù)據(jù)存儲(chǔ)在目標(biāo)的相應(yīng)的頁(yè)面中。在步驟S9,頁(yè)面地址和塊地址遞增。然 后,在步驟S10,將進(jìn)一步的頁(yè)面編程命令80h寫入目標(biāo)。在步驟S11,將LUN地址、塊地址、 頁(yè)面地址和列地址寫入NAND閃存目標(biāo)的頁(yè)面寄存器。如果在步驟S5沒(méi)有完整的頁(yè)面可用(否),則執(zhí)行步驟S6。在步驟Sll之后也執(zhí) 行步驟S6。在步驟S6,檢查是否存在剩余字節(jié)可用。如果存在剩余字節(jié)可用(是),則該方 法前進(jìn)到步驟S4。如果不存在剩余字節(jié)可用(否),則在步驟S7將交錯(cuò)命令I(lǐng)lh寫入NAND 并且該方法前進(jìn)到步驟Si。如果在步驟Sl沒(méi)有輸入數(shù)據(jù)可用(否),則在步驟S12檢查是否到達(dá)記錄的結(jié)尾。如果沒(méi)有到達(dá)記錄的結(jié)尾(否),則該方法進(jìn)一步前進(jìn)到步驟Si。如果到達(dá)記錄的結(jié) 尾(是),則該方法在步驟S13檢查是否在寄存器中留下未完成的頁(yè)面。如果在寄存器中存在未完成的頁(yè)面(是),則在步驟S14將頁(yè)面編程命令80h寫入 NAND目標(biāo)并且在步驟S15將LUN地址、塊地址、頁(yè)面地址和列地址寫入NAND閃存器件。然 后,該方法進(jìn)一步前進(jìn)到步驟S8。如果在步驟S13在寄存器中沒(méi)有留下未完成的頁(yè)面(否),則該方法前進(jìn),在步驟 S16使用頁(yè)面編程IOh命令或者頁(yè)面緩存編程1 命令將數(shù)據(jù)存儲(chǔ)在目標(biāo)的相應(yīng)的頁(yè)面中。 然后,該方法以步驟Sl重新開始。應(yīng)注意,使用頁(yè)面編程命令或者緩存頁(yè)面編程命令在邏輯單元中的頁(yè)面上存儲(chǔ)數(shù) 據(jù)需要兩個(gè)周期。在第一周期中,使用80h命令來(lái)初始化頁(yè)面編程和緩存頁(yè)面編程兩者。在 第二周期中,發(fā)出IOh命令以進(jìn)行頁(yè)面編程,并且發(fā)出1 命令以進(jìn)行緩存頁(yè)面編程。圖3描繪了根據(jù)本發(fā)明的目標(biāo)狀態(tài)圖。單獨(dú)考慮的根據(jù)本發(fā)明的目標(biāo)狀態(tài)圖對(duì) 應(yīng)于根據(jù)ONFI標(biāo)準(zhǔn)的目標(biāo)狀態(tài)圖。初始狀態(tài)是T_Idle。在接收到命令后,目標(biāo)在狀態(tài) T_Cmd_Decode下解碼所接收的命令。如果所解碼的命令是頁(yè)面編程80h命令,則目標(biāo)切 換到狀態(tài)T_PP_ExeCute。然后,目標(biāo)將tLastCmd設(shè)置為80h。如果R/B#被清除為零,則 tbMatUS78hReg被設(shè)置為真。另外,所有的LUN被請(qǐng)求清除它們的頁(yè)面寄存器。然后,在狀 態(tài)T_PP_AddrWait下,目標(biāo)等待尋址周期。在接收到尋址周期后,在狀態(tài)T_PP_Addr下存儲(chǔ) 所接收的尋址周期。如果需要進(jìn)一步的尋址周期,則目標(biāo)切換以接收下 一尋址周期。如果不需要進(jìn)一步的尋址周期,則目標(biāo)切換到狀態(tài)T_PP_LUN_ExeCute。選擇 由所接收的行地址所指示的LUN并且目標(biāo)向該LUN發(fā)出編程。然后,目標(biāo)在狀態(tài)T_PP_LUN_ Dataffait下等待要從主機(jī)接收的數(shù)據(jù)字或者命令周期,并且在狀態(tài)T_PP_LUN_DataPaSS下 將數(shù)據(jù)字傳遞到所選擇的LUN。當(dāng)在T_PP_LUN_DataWait接收到命令,目標(biāo)切換到狀態(tài)T_ PP_Cmd_Pass0然后,該命令被傳遞到相應(yīng)的LUN。如果該命令是Ilh命令,則目標(biāo)切換到狀以等待下一命令被發(fā)出。如果該命令是頁(yè)面編程80h,則根據(jù)上述方法將 下一字節(jié)寫入LUN。另一方面,如果該命令是IOh或者1 命令,則目標(biāo)返回到初始狀態(tài)T_ Idle。
圖4描繪了根據(jù)本發(fā)明的邏輯單元狀態(tài)圖。單獨(dú)考慮的根據(jù)本發(fā)明的邏輯單元狀 態(tài)圖對(duì)應(yīng)于根據(jù)ONFI標(biāo)準(zhǔn)的邏輯單元狀態(tài)圖。初始狀態(tài)是L_Idle。在接收到對(duì)該LUN的 目標(biāo)請(qǐng)求后,LUN切換到狀態(tài)LJdlejargetRequest并且等待由目標(biāo)發(fā)出的命令。如果目 標(biāo)指示編程請(qǐng)求,則LUN切換到L_PP_ExeCute并且然后切換到L_PP_Addr以記錄通過(guò)目標(biāo) 所接收的地址。進(jìn)一步,基于交錯(cuò)地址選擇正確的頁(yè)面寄存器并且根據(jù)所接收的列地址選 擇頁(yè)面寄存器中的列。然后,LUN在狀態(tài)L_PP_WaitForData和L_PP_Ac(^ptData下接收通 過(guò)目標(biāo)傳遞的數(shù)據(jù)。然后,在LUN接收到Ilh命令的情況下,LUN切換到狀態(tài)L_PP_IlvWait, 直到目標(biāo)對(duì)該LUN請(qǐng)求進(jìn)一步的編程命令。在LUN在狀態(tài)L_PP_WaitF0rData下接收到IOh 或者15h命令的情況下,LUN切換到狀態(tài)L_PP_Prog,L_PP_ProgWait和L_PP_Sts并且將相 應(yīng)的數(shù)據(jù)編程到相應(yīng)的頁(yè)面。 為了更詳細(xì)地說(shuō)明本發(fā)明,圖5描繪了根據(jù)本發(fā)明的包括一個(gè)目標(biāo)和兩個(gè)邏輯單 元的固態(tài)存儲(chǔ)器的狀態(tài)圖。由此,示出了目標(biāo)狀態(tài)和對(duì)應(yīng)的邏輯單元LU1、LU2的可允許的 組合。應(yīng)理解,該發(fā)明性方法還可以應(yīng)用于包含多于兩個(gè)邏輯單元的至少一個(gè)目標(biāo)。為了簡(jiǎn)潔的目的,僅僅圖示了以下?tīng)顟B(tài)其中,發(fā)出第一周期的頁(yè)面編程命令或者頁(yè)面緩存編程命 令80h、或者第二周期的頁(yè)面編程命令或者頁(yè)面緩存編程命令10h/15h、或者交錯(cuò)命令llh。 應(yīng)理解,為了從目標(biāo)和相應(yīng)的LUN的第一狀態(tài)切換到第二狀態(tài),還必須執(zhí)行在第一和第二 狀態(tài)之間的根據(jù)圖3和圖4的狀態(tài)切換。如在ONFI規(guī)范中所述地執(zhí)行狀態(tài)切換。在初始狀態(tài)S50中,目標(biāo)處于空閑狀態(tài)乙1(116。LUN也處于空閑狀態(tài)1^_1(116。如 果接收到對(duì)于LUl的第一周期的頁(yè)面編程命令80h,則激活狀態(tài)S51。由此,目標(biāo)切換到T_ PP_LUN_Dataffait并且LUl切換到L_PP_WaitForData。LU2還沒(méi)有改變其狀態(tài)。相應(yīng)地, LUl現(xiàn)在準(zhǔn)備好接收數(shù)據(jù)。在LUl中接收數(shù)據(jù)后,檢查是否發(fā)出第二周期的頁(yè)面編程IOh或 者頁(yè)面緩存編程15h。在該情況下,將數(shù)據(jù)編程到第一邏輯單元LUl的頁(yè)面并且狀態(tài)機(jī)切 換回空閑狀態(tài)S50。如果發(fā)出對(duì)于LUl的交錯(cuò)命令llh,則目標(biāo)切換到T_PP_IlvWait并且 LUl切換到L_PP_IlvWait。LU2停留在L_idle狀態(tài)。這對(duì)應(yīng)于圖5的S52。由此,可以對(duì) 于邏輯單元LUl或者LU2發(fā)出第一周期的進(jìn)一步的頁(yè)面編程命令80h。在對(duì)于LUl發(fā)出頁(yè) 面編程命令80h的情況下,狀態(tài)機(jī)切換回狀態(tài)S51。在對(duì)于LU2發(fā)出頁(yè)面編程命令80h的情 況下,狀態(tài)機(jī)切換到狀態(tài)S53。在向之前的第一邏輯單元發(fā)出交錯(cuò)命令I(lǐng)lh的同時(shí),向第二 邏輯單元發(fā)出第一周期的頁(yè)面編程命令80h形成本方法的發(fā)明性特征的一部分。由此通過(guò) 粗體箭頭來(lái)指示狀態(tài)轉(zhuǎn)換。然后,目標(biāo)在狀態(tài)T_PP_LUN_DataWait下等待來(lái)自主機(jī)的新的 數(shù)據(jù)或者新的命令,LUl在狀態(tài)L_PP_IlvWait下等待,而LU2在狀態(tài)L_PP_WaitForData下 等待接收數(shù)據(jù)。結(jié)果,在LU2切換到其等待數(shù)據(jù)的狀態(tài)之前,LUl不被復(fù)位到空閑狀態(tài)。由 此,當(dāng)根據(jù)發(fā)明性方法從LUl切換到LU2時(shí),不會(huì)丟失來(lái)自LUl的頁(yè)面寄存器中的數(shù)據(jù),這 是發(fā)明性方法的優(yōu)點(diǎn)之一。在向LU2發(fā)出第一周期的命令后,到達(dá)狀態(tài)S53,由此,在狀態(tài)53中,專用于LU2的 第二周期的頁(yè)面編程命令I(lǐng)0h、頁(yè)面緩存編程命令1 或者交錯(cuò)命令I(lǐng)lh是可允許的。發(fā)出 專用于LU2的頁(yè)面編程命令I(lǐng)Oh或者頁(yè)面緩存編程命令1 導(dǎo)致目標(biāo)的T_Idle狀態(tài)和LU2 的L_Idle狀態(tài)。這對(duì)應(yīng)于圖5的情況下的狀態(tài)S54。從狀態(tài)S54,可以對(duì)于LUl或LU2發(fā) 出第一周期的頁(yè)面編程80h或頁(yè)面緩存編程80h命令。在對(duì)LUl發(fā)出80h命令的情況下, 狀態(tài)機(jī)切換到狀態(tài)S51。在對(duì)LU2發(fā)出80h命令的情況下,則狀態(tài)機(jī)切換到狀態(tài)S53。如果在狀態(tài)S53下向LU2發(fā)出交錯(cuò)命令llh,則目標(biāo)切換到T_PP_I IvWait并且LU2 切換到L_PP_IlvWait。當(dāng)LUl停留在L_PP_IlvWait狀態(tài)時(shí),狀態(tài)機(jī)處于狀態(tài)S59并且準(zhǔn)備 接收對(duì)于LUl或者LU2的第一周期的下一請(qǐng)求。在向LUl發(fā)出80h命令的情況下,狀態(tài)機(jī) 切換到狀態(tài)S57以等待對(duì)于LUl的命令。從狀態(tài)S59 (其是在接收到對(duì)于LU2的交錯(cuò)命令 后到達(dá)的)切換到狀態(tài)S57 (其中狀態(tài)機(jī)等待專用于LUl的第二周期的頁(yè)面編程命令10h、 頁(yè)面緩存編程命令1 或者交錯(cuò)命令llh)是本發(fā)明的一部分。如果通過(guò)對(duì)于LU2的交錯(cuò) 命令I(lǐng)lh到達(dá)狀態(tài)S59,則已知的方式將是在狀態(tài)S59中接收對(duì)于LUl的第一周期的頁(yè)面編 程命令80h。如已經(jīng)如上所述的,狀態(tài)機(jī)然后將切換回狀態(tài)S53以等待對(duì)于LU2的命令。如果對(duì)于其他邏輯單元對(duì)應(yīng)地發(fā)出命令,則狀態(tài)S55、S56、S57和S58及其狀態(tài)切 換對(duì)應(yīng)于狀態(tài)S51、S52、S53和SM及其狀態(tài)切換。因此,省略了詳細(xì)的描述。由此,根據(jù)本發(fā)明的編程流程使用交錯(cuò)頁(yè)面編程Ilh使目標(biāo)和LUN分別進(jìn)入到等 待附加數(shù)據(jù)的狀態(tài)T_PP_IlvWait和L_PP_IlvWait。這是根據(jù)圖5的狀態(tài)S52、S56和S59 的情況。根據(jù)本發(fā)明,使得能夠向第一邏輯單元的頁(yè)面寄存器寫入小于一個(gè)頁(yè)面尺寸的小的數(shù)據(jù)塊、切換到另一邏輯單元并且在切換回第一邏輯單元之后繼續(xù)向第一邏輯單元的頁(yè) 面寄存器寫入,并且然后向第一邏輯單元編程完整的頁(yè)面。
[0116向NAND器件寫入T_PP_IlvffaitL_PP_Ilv_ffait[0117命令80h*-> T_PP_Addrffait[0118向NAND器件寫入T_PP_AddrffaitL_PP_Ilv_ffait[0119LUN地址,塊地址-> T_PP_Addr-> L_PP_Addr[0120、頁(yè)面地址和列地址 -> T_PP_LUN_Execute-> L_PP_ffaitForData[0121-> T_PP_LUN_Dataffait[0122向NAND器件寫入T_PP_LUN_DataffaitL_PP_ffaitForData[0123附加數(shù)據(jù)直到-> T_PP_LUN_DataPass-> L_PP_AcceptData[0124已寫入完整頁(yè)面-> T_PP_LUN_Dataffait-> L_PP_ffaitForData[0125向NAND器件寫入T_PP_LUN_DataffaitL_PP_ffaitForData[0126命令I(lǐng)Oh-> T_PP_Cmd_Pass-> L_PP_Prog[0127-> T_Idle-> L_PP_Progffait[0128-> L_PP_Sts[0129-> L_Idle[0130*用于狀態(tài)“T_PP_JlvWait”的頁(yè)面編程操作的尋址周期具有與在之前的頁(yè)面編程操乍中發(fā)出的交錯(cuò)塊地址相同的交錯(cuò)塊地址,但是列地址遞增以將進(jìn)一步的數(shù)據(jù)塊放置在頁(yè)面寄存器中的正確的位置。1權(quán)利要求
1.一種用于存儲(chǔ)至少一個(gè)輸入數(shù)據(jù)流的固態(tài)存儲(chǔ)器,該固態(tài)存儲(chǔ)器具有多個(gè)邏輯單 元(Logical_Unit_0, Logical_Unit_l,…,Logical_Unit_L),每個(gè)邏輯單元(Logical_ Unit_0, Logical_Unit_l, . . . , Logical_Unit_L)^hMM (PageO, Pagel,..., PageN),其特征在于,每個(gè)邏輯單元(Logical_Unit_0, Logical_Unit_l, . · ·,Logical, Unit_L)包含用于在將輸入數(shù)據(jù)編程到至少一個(gè)頁(yè)面G^ageO,I^age 1,... JageN)之前暫時(shí) 地存儲(chǔ)輸入數(shù)據(jù)流的內(nèi)部緩沖存儲(chǔ)器(Page_RegiSter),并且其中在執(zhí)行向不同的邏輯單 元的切換操作時(shí),該內(nèi)部緩沖存儲(chǔ)器(Pag^Register)保存還未被編程的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的固態(tài)存儲(chǔ)器,其特征在于,每個(gè)邏輯單元包含至少一個(gè)作為該存 儲(chǔ)器的最小可擦除單元的塊,并且每個(gè)塊包含至少一個(gè)作為該存儲(chǔ)器的最小可編程單元的 頁(yè)面。
3.根據(jù)權(quán)利要求1或2的固態(tài)存儲(chǔ)器,其特征在于,邏輯單元的內(nèi)部緩沖器中的至少一 個(gè)具有用于存儲(chǔ)整個(gè)頁(yè)面以及在可允許的最高輸入比特率的情況下在頁(yè)面的編程周期期 間接收的數(shù)據(jù)的最小尺寸。
4.根據(jù)權(quán)利要求1至3之一的固態(tài)存儲(chǔ)器,其特征在于,所述存儲(chǔ)器件是根據(jù)開放 NAND閃存接口規(guī)范而操作的NAND閃存器件。
5.一種包含一個(gè)或多個(gè)相機(jī)的相機(jī)系統(tǒng),其特征在于,該相機(jī)系統(tǒng)包含根據(jù)權(quán)利要求 1至4中的任一項(xiàng)的固態(tài)存儲(chǔ)器。
6.根據(jù)權(quán)利要求5的相機(jī)系統(tǒng),其特征在于,該相機(jī)系統(tǒng)包含至少兩個(gè)相機(jī)并且在不 同邏輯單元中存儲(chǔ)由不同相機(jī)捕捉的數(shù)據(jù)流。
7.一種用于將至少一個(gè)數(shù)據(jù)流編程到固態(tài)存儲(chǔ)器的方法,該固態(tài)存儲(chǔ)器包括至少一個(gè) 邏輯單元,每個(gè)邏輯單元包括至少一個(gè)頁(yè)面,一次編程一個(gè)頁(yè)面,其特征在于以下步驟-順序地將至少一個(gè)輸入數(shù)據(jù)流輸入到該固態(tài)存儲(chǔ)器;-在邏輯單元中包含的內(nèi)部緩沖器中存儲(chǔ)與該邏輯單元相關(guān)聯(lián)的數(shù)據(jù);-檢查緩沖器是否包含用于至少一個(gè)要編程的完整頁(yè)面的數(shù)據(jù);-如果檢查步驟是肯定的,則編程至少一個(gè)頁(yè)面;以及-如果在不同邏輯單元之間執(zhí)行切換操作,則在內(nèi)部緩沖存儲(chǔ)器中保存還未被編程的 數(shù)據(jù)。
8.根據(jù)權(quán)利要求7的方法,還包括步驟-在不同邏輯單元中存儲(chǔ)由具有不同相機(jī)的相機(jī)系統(tǒng)捕捉的輸入數(shù)據(jù)流。
9.根據(jù)權(quán)利要求7或8的方法,還包括步驟-在數(shù)據(jù)寄存器中接收到數(shù)據(jù)之后,使用頁(yè)面編程交錯(cuò)命令I(lǐng)lh將目標(biāo)設(shè)置為狀態(tài)τ_ PP_Ilv_ffait并且將邏輯單元設(shè)置為狀態(tài)L_PP_Ilv_Wait ;-將目標(biāo)保持在狀態(tài)T_PP_Ilv_Wait并且將邏輯單元保持在狀態(tài)L_PP_Ilv_Wait直到 LUN的數(shù)據(jù)寄存器被完整的頁(yè)面填充;以及-使用命令I(lǐng)Oh或者1 將這些數(shù)據(jù)編程到頁(yè)面,其中這些狀態(tài)和命令符合ONFI標(biāo)準(zhǔn)。
10.根據(jù)權(quán)利要求7-9中的任一項(xiàng)的方法,還包括步驟-在使用命令I(lǐng)Oh或者1 將完整的頁(yè)面編程到邏輯單元之后,將目標(biāo)設(shè)置為狀態(tài)τ_ PP_LUN_Dataffait并且將邏輯單元設(shè)置為狀態(tài)L_PP_WaitR)rData以防止目標(biāo)刪除來(lái)自被 尋址的邏輯單元的頁(yè)面寄存器的數(shù)據(jù),其中這些狀態(tài)和命令符合ONFI標(biāo)準(zhǔn)。
全文摘要
本發(fā)明涉及一種包括多個(gè)邏輯單元的固態(tài)存儲(chǔ)器。該固態(tài)存儲(chǔ)器包含用于在將輸入數(shù)據(jù)編程到至少一個(gè)頁(yè)面之前暫時(shí)地存儲(chǔ)輸入數(shù)據(jù)流的內(nèi)部緩沖器。如果執(zhí)行從一個(gè)邏輯單元到另一個(gè)邏輯單元的切換,則該內(nèi)部緩沖器保存還未被編程的數(shù)據(jù)。提出了一種操作這樣的器件的方法。
文檔編號(hào)G06F12/10GK102053924SQ20101051175
公開日2011年5月11日 申請(qǐng)日期2010年10月15日 優(yōu)先權(quán)日2009年10月29日
發(fā)明者奧利弗·坎普亨克爾, 托馬斯·布魯恩, 邁克爾·德雷克斯勒 申請(qǐng)人:湯姆森特許公司