專利名稱:多數(shù)據(jù)區(qū)段同時(shí)編程和在其它指定塊中存儲(chǔ)物理塊特征的閃速eeprom系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導(dǎo)體存儲(chǔ)器系統(tǒng),具體地說,涉及非易失性的存儲(chǔ)器系統(tǒng),已經(jīng)應(yīng)用于閃速可電擦除可編程只讀存儲(chǔ)器(EEPROM)。
背景技術(shù):
閃速EEPROM系統(tǒng)正在應(yīng)用于許多方面,尤其是封裝在封閉卡中,該卡能夠可拆卸地連接到一個(gè)主機(jī)系統(tǒng)。當(dāng)前的商業(yè)存儲(chǔ)卡格式包括個(gè)人計(jì)算機(jī)存儲(chǔ)卡國(guó)際協(xié)會(huì)(PCMCIA)、CompactFlash(CF)、多媒體卡(MMC)和Secure Digital(SD)的格式。這些卡的一個(gè)供應(yīng)商是SanDisk公司——本申請(qǐng)的受讓人。其中使用了這種卡的主機(jī)系統(tǒng)包括個(gè)人計(jì)算機(jī)、筆記本計(jì)算機(jī)、手持計(jì)算設(shè)備、照相機(jī)、音頻重現(xiàn)設(shè)備等等。閃速EEPROM系統(tǒng)也用于嵌入主機(jī)系統(tǒng)的大容量存儲(chǔ)器。
這種非易失性的存儲(chǔ)器系統(tǒng)包括浮點(diǎn)門存儲(chǔ)器單元的陣列和系統(tǒng)控制器。該控制器管理與主機(jī)系統(tǒng)的通信和存儲(chǔ)器單元陣列存放和檢索用戶數(shù)據(jù)的操作。存儲(chǔ)器單元組成若干單元塊,一個(gè)單元塊就是可同時(shí)擦除單元的最小的組。在一個(gè)或多個(gè)單元塊寫入數(shù)據(jù)之前,要先擦除這些單元塊。通常用戶數(shù)據(jù)在主機(jī)和存儲(chǔ)器陣列之間是以區(qū)段的形式傳遞。用戶數(shù)據(jù)的一個(gè)區(qū)段可以是便于處理的任何數(shù)量,最好是小于存儲(chǔ)器塊的容量,往往等于標(biāo)準(zhǔn)磁盤驅(qū)動(dòng)器的扇區(qū)大小——512字節(jié)。在一個(gè)商業(yè)體系結(jié)構(gòu)中,存儲(chǔ)器系統(tǒng)塊的大小定為存放一個(gè)區(qū)段的用戶數(shù)據(jù)加日常數(shù)據(jù),日常數(shù)據(jù)的信息包括存放在本塊中用戶數(shù)據(jù)的糾錯(cuò)碼(ECC)、本塊的使用歷史、存儲(chǔ)器單元塊的故障和其它物理信息等等。在以下轉(zhuǎn)讓給SanDisk公司的美國(guó)專利和待批準(zhǔn)的申請(qǐng)中,介紹了這種類型的非易失性存儲(chǔ)器系統(tǒng)的多種實(shí)現(xiàn)方案,其中每一個(gè)都在這里全文引用作為參考5,172,338、5,602,987、5,315,541、5,200,959、5,270,979、5,428,621、5,663,901、5,532,962、5,430,859和5,712,180號(hào)專利,以及1997年8月7日提交的序列號(hào)08/910,947和1999年6月30提交的序列號(hào)09/343,328申請(qǐng)。另一種類型的非易失性存儲(chǔ)器系統(tǒng)使用較大的存儲(chǔ)器單元塊規(guī)模,能夠存放用戶數(shù)據(jù)的多個(gè)區(qū)段。
存儲(chǔ)器單元陣列的一種體系結(jié)構(gòu),由存儲(chǔ)器單元的一排或兩排方便地形成了一塊,這些單元在一個(gè)子陣列或單元的其它單位之內(nèi),共享一個(gè)公共的擦除門。這里全文引用的、SanDisk公司的5,677,872號(hào)和5,712,179號(hào)美國(guó)專利給出了這種體系結(jié)構(gòu)的實(shí)例。雖然當(dāng)前最普通的是在每個(gè)浮點(diǎn)門單元中存放一位數(shù)據(jù),這樣只須規(guī)定兩種設(shè)定的閾值電平,而趨勢(shì)卻是通過建立多于兩種的浮點(diǎn)門晶體管閾值范圍,在每個(gè)單元中存放多于一位數(shù)據(jù)。目前已經(jīng)有了每個(gè)浮點(diǎn)門存放兩位數(shù)據(jù)(四種閾值電平范圍或者說狀態(tài))的存儲(chǔ)器系統(tǒng),可以預(yù)期每個(gè)單元三位(八種閾值電平范圍或者說狀態(tài))和每個(gè)單元四位(十六種閾值電平范圍)會(huì)是未來的系統(tǒng)。當(dāng)然,隨著每個(gè)單元中存放的位數(shù)上升,存放一個(gè)數(shù)據(jù)區(qū)段所需要的存儲(chǔ)器單元數(shù)目下降。這個(gè)趨勢(shì)結(jié)合著由單元結(jié)構(gòu)和一般半導(dǎo)體處理的改善引起的陣列擴(kuò)大,在一排單元的一個(gè)片段中形成一個(gè)存儲(chǔ)器單元塊也是切實(shí)可行的。也可以形成塊結(jié)構(gòu),以便在兩種狀態(tài)(每單元一位數(shù)據(jù))或在某些多種比如四種狀態(tài)(每單元兩位數(shù)據(jù))中,選擇存儲(chǔ)器單元中每一個(gè)的操作,正如SanDisk公司的5,930,167號(hào)美國(guó)專利中介紹的,在這里全文引用它作為參考。
由于把數(shù)據(jù)編入浮點(diǎn)門存儲(chǔ)器單元可能要耗費(fèi)相當(dāng)多的時(shí)間,所以一排中的大量存儲(chǔ)器單元通常同時(shí)編程。但是增大這種并行性導(dǎo)致電源需求增大,以及鄰近單元電荷的潛在干擾和它們之間的相互作用。這里全文引用的SanDisk公司的5,890,192號(hào)美國(guó)專利介紹了一種系統(tǒng),它通過同時(shí)把多個(gè)字節(jié)片的數(shù)據(jù)編進(jìn)位于不同存儲(chǔ)器操作單元單位(子陣列)的不同單元塊中,使這些效應(yīng)達(dá)到最小。
發(fā)明內(nèi)容
本發(fā)明有幾個(gè)不同的方面對(duì)固態(tài)存儲(chǔ)器系統(tǒng)提供了改進(jìn),包括以上介紹的技術(shù)。本發(fā)明這些方面中的每一個(gè)都可以單獨(dú)實(shí)現(xiàn),也能夠以多種組合來實(shí)現(xiàn),其中主要的方面簡(jiǎn)要地歸納在以下段落中。
通過每次交替地使數(shù)據(jù)從多個(gè)區(qū)段中的一個(gè)流入陣列,直到為多個(gè)數(shù)據(jù)區(qū)段中的每一個(gè)累積了大量的數(shù)據(jù),然后這些數(shù)據(jù)同時(shí)分別存入存儲(chǔ)器的不同單位中的對(duì)應(yīng)塊中,這樣就把多個(gè)用戶數(shù)據(jù)區(qū)段編入了類似數(shù)目的存儲(chǔ)器塊中,這些塊位于不同的單位或者說子陣列中。這樣就增加了可能并行編程的存儲(chǔ)器單元的數(shù)目,而沒有不利的效應(yīng)。
在編程和寫入產(chǎn)生用戶數(shù)據(jù)的同一存儲(chǔ)器塊期間,控制器可以從用戶數(shù)據(jù)流產(chǎn)生糾錯(cuò)碼(ECC)或其他類型的冗余碼。然后,從存儲(chǔ)器塊讀出數(shù)據(jù)區(qū)段時(shí),控制器評(píng)價(jià)該冗余碼。通過為同時(shí)編程的用戶數(shù)據(jù)區(qū)段的每一個(gè)分別提供一個(gè)存儲(chǔ)單元,在其中暫時(shí)存放產(chǎn)生的中間結(jié)果,可使用一種單一的冗余碼生成電路,即使當(dāng)數(shù)據(jù)流在多個(gè)區(qū)段的大數(shù)據(jù)塊之間交替時(shí)也不例外。
為了這個(gè)目的,在陣列中提供的其它塊中把各個(gè)塊的條件、特征、狀態(tài)等等日常數(shù)據(jù)存放在一起。每個(gè)日常數(shù)據(jù)記錄可能包括以下情況本塊已經(jīng)進(jìn)行了多少次編程和擦除、本塊編程和/或擦除所用的電壓電平、本塊是否有缺陷等等。一組塊專門用于存放這種記錄。大量的這種記錄存放在這些日常塊的每一個(gè)之中。當(dāng)訪問一個(gè)特定的用戶數(shù)據(jù)塊,以進(jìn)行編程、讀取或擦除中的一項(xiàng)或全部操作時(shí),首先讀出這個(gè)用戶數(shù)據(jù)塊的日常記錄,其信息用于訪問該塊。通過把一塊的日常數(shù)據(jù)存放在該塊之外,每次用戶數(shù)據(jù)重寫入該塊時(shí),避免了日常數(shù)據(jù)的頻繁重寫。當(dāng)訪問該塊以讀寫用戶數(shù)據(jù)時(shí),這樣也減少了訪問和讀取塊日常數(shù)據(jù)所需的時(shí)間。除此以外,以這種方式存放的大量日常記錄只需要一個(gè)ECC或其它的冗余碼。
來自許多日常塊的記錄,可以由控制器讀入其隨機(jī)訪問存儲(chǔ)器的可用部分以便于使用,使其記錄在一段時(shí)間內(nèi)沒有被訪問的日常塊被更活躍的日常塊所取代,如類似于緩存的方式。當(dāng)存儲(chǔ)器的控制器從主機(jī)系統(tǒng)收到要傳遞的一個(gè)起始地址和數(shù)據(jù)區(qū)段的數(shù)目時(shí),為了訪問該塊的日常記錄,計(jì)算要訪問的第一個(gè)存儲(chǔ)器塊的邏輯地址,但是隨后就按順序訪問其它日常記錄而不必再計(jì)算它們每一個(gè)的地址。這樣就加快了訪問多個(gè)塊的速度。存儲(chǔ)器中缺陷的信息,比如在制造過程期間發(fā)現(xiàn)的缺陷,可能也被存放在專門為這個(gè)目的而單獨(dú)分配的塊中并被控制器使用,從而在存儲(chǔ)器系統(tǒng)中可以包括不完美的存儲(chǔ)器電路芯片,而不是拋棄它們。當(dāng)單一的缺陷記錄會(huì)影響許多塊時(shí),這尤其是一種優(yōu)點(diǎn)。一種這樣的缺陷是一個(gè)壞列,它影響眾多的塊。許多壞列指針(BCP)可以存放在一起,作為一個(gè)表,放在部分或完全為這種日常數(shù)據(jù)分配的一個(gè)或多個(gè)區(qū)段中。這一步完成之后,當(dāng)在一個(gè)區(qū)段之內(nèi)各個(gè)數(shù)據(jù)字節(jié)的相對(duì)物理位置與BCP表的對(duì)比表明,該數(shù)據(jù)字節(jié)正指向沿著壞列的至少一個(gè)存儲(chǔ)器單元時(shí),就移動(dòng)用戶數(shù)據(jù)流寫到存儲(chǔ)器的物理位置。在讀取時(shí)執(zhí)行相反的操作,由于壞列而在寫入時(shí)跳過的存儲(chǔ)器單元,從其中讀出的數(shù)據(jù)位被忽略。
按照它們能夠擦除和再次編程的次數(shù),由于閃速EEPROM單元具有其本質(zhì)決定的有限壽命,通常謹(jǐn)慎的做法是包括一種或多種特性,均衡多個(gè)存儲(chǔ)器塊由于多次重寫同樣的塊造成的損耗。一種這樣的技術(shù)是時(shí)常變更數(shù)字?jǐn)?shù)據(jù)與指定來表示該數(shù)字?jǐn)?shù)據(jù)的存儲(chǔ)器狀態(tài)之間的對(duì)應(yīng)關(guān)系。在目前的存儲(chǔ)器系統(tǒng)中要做到這一點(diǎn),各個(gè)數(shù)據(jù)區(qū)段起始字節(jié)的第一位或前幾位——在此定為術(shù)語旗標(biāo)字節(jié)——用于指定這種對(duì)應(yīng)關(guān)系。這些位在寫用戶數(shù)據(jù)時(shí)指定,在數(shù)據(jù)流傳遞到存儲(chǔ)器陣列的同時(shí),起始幾位之后的所有數(shù)據(jù)都按照其數(shù)值進(jìn)行轉(zhuǎn)換。在讀出一個(gè)數(shù)據(jù)區(qū)段時(shí),這些起始位被讀出,并且在數(shù)據(jù)以流的形式從存儲(chǔ)器中讀出時(shí),用于把存放在該區(qū)段所有隨后的數(shù)據(jù)轉(zhuǎn)換回其原始數(shù)值。
當(dāng)存儲(chǔ)器系統(tǒng)是由存儲(chǔ)器單元的多個(gè)陣列形成時(shí),比如使用兩個(gè)或更多集成電路芯片,每個(gè)都包括這樣一個(gè)陣列,把該系統(tǒng)中每個(gè)存儲(chǔ)器陣列的有關(guān)信息累積起來,然后把該信息在一個(gè)方便的位置——比如一個(gè)陣列的一塊中——存為單一的記錄,可簡(jiǎn)化該系統(tǒng)的制造和使用。這樣做使不同規(guī)模和/或操作特征的存儲(chǔ)器陣列組合成單一的系統(tǒng)容易多了。一個(gè)這種記錄合并了在每個(gè)存儲(chǔ)器芯片中可用的用戶數(shù)據(jù)塊的數(shù)目,這種方式能夠建立系統(tǒng)中所有陣列塊的連續(xù)邏輯塊地址。在存儲(chǔ)器的一個(gè)位置為進(jìn)行讀寫操作而訪問時(shí),那么在把邏輯塊地址轉(zhuǎn)換為一個(gè)存儲(chǔ)器陣列的物理塊地址的過程中,存儲(chǔ)器控制器要訪問合并記錄。
由控制器從一個(gè)存儲(chǔ)器陣列讀取信息,將該信息合并到單一的記錄,然后把該記錄寫入一個(gè)存儲(chǔ)器陣列的指定塊中,就能夠在制造時(shí)自動(dòng)產(chǎn)生和存放這樣一個(gè)合并記錄。當(dāng)前,存儲(chǔ)器控制器通常配備在另一個(gè)單獨(dú)的集成電路芯片上,有一個(gè)或多個(gè)存儲(chǔ)器單元陣列芯片連接到該控制器。根據(jù)技術(shù)進(jìn)步的持續(xù)發(fā)展可以預(yù)期,存儲(chǔ)器陣列也可以包括在控制器芯片上。當(dāng)存儲(chǔ)器的容量不滿足一個(gè)系統(tǒng)的需要時(shí),那么就使用一個(gè)或多個(gè)包含更多存儲(chǔ)器陣列的附加電路芯片。當(dāng)一個(gè)系統(tǒng)中包括兩個(gè)或更多物理上分開的陣列時(shí),那么產(chǎn)生合并記錄會(huì)簡(jiǎn)化控制器對(duì)跨多個(gè)陣列的塊地址的操作。
用于形成一個(gè)系統(tǒng)的多種存儲(chǔ)器陣列電路芯片的其它特征,比如最優(yōu)電壓范圍、計(jì)時(shí)、所用脈沖的數(shù)目、電壓泵源的特征、日常塊的位置等等,可以變化而不產(chǎn)生不利的效應(yīng)。這些操作特征也可以在單一的系統(tǒng)文件中列成表格,以便微控制器訪問,或者更方便的是,可以操作微控制器從各個(gè)存儲(chǔ)器芯片首先訪問必需的這類特征,然后再訪問該芯片以讀寫數(shù)據(jù)。無論在哪種情況下,這種方式都允許具有不同特征的存儲(chǔ)器芯片形成存儲(chǔ)器系統(tǒng),其性能沒有任何降低。由于一個(gè)系統(tǒng)中的所有的存儲(chǔ)器陣列芯片不必選定為相同的,就簡(jiǎn)化了非易失性存儲(chǔ)器系統(tǒng)的制造。
本發(fā)明另外的方面、特性和優(yōu)點(diǎn)包括在以下介紹的特定實(shí)施例中,這些介紹應(yīng)當(dāng)與附圖相結(jié)合。
附圖簡(jiǎn)要說明
圖1是一個(gè)非易失性存儲(chǔ)器系統(tǒng)實(shí)例的示意性框圖,其中可以實(shí)現(xiàn)本發(fā)明的多個(gè)方面;圖2是圖1中系統(tǒng)的一個(gè)存儲(chǔ)器單元陣列單位更詳細(xì)的示意圖,帶有相關(guān)聯(lián)的邏輯電路和緩沖區(qū);圖3A和圖3B分別展示了圖1中系統(tǒng)的各個(gè)存儲(chǔ)器單元的四狀態(tài)和二狀態(tài)操作;圖4是圖1中系統(tǒng)的一個(gè)存儲(chǔ)器塊中存放的數(shù)據(jù)內(nèi)容和結(jié)構(gòu)的實(shí)例;圖5展示了圖1中存儲(chǔ)器系統(tǒng)之內(nèi)一次編程期間的多個(gè)數(shù)據(jù)區(qū)段的數(shù)據(jù)流傳遞;圖6A是圖1中系統(tǒng)的電路的示意性框圖,它使用了壞列指針(BCP)并產(chǎn)生一個(gè)糾錯(cuò)碼(ECC)或者其它數(shù)據(jù)冗余碼,使多區(qū)段數(shù)據(jù)流傳遞到存儲(chǔ)器單元陣列;圖6B是圖6A的ECC生成塊的示意圖;圖6C是圖6A的BCP處理塊的示意圖;圖7展示了從多個(gè)區(qū)段向存儲(chǔ)器單元陣列傳遞數(shù)據(jù)的方式;圖8展示了塊日常數(shù)據(jù)記錄的一個(gè)數(shù)據(jù)結(jié)構(gòu)實(shí)例;圖9顯示了圖8中日常數(shù)據(jù)記錄對(duì)于良好的存儲(chǔ)器單元塊的一個(gè)實(shí)例;圖10顯示了圖8中日常數(shù)據(jù)記錄對(duì)于有缺陷的存儲(chǔ)器單元塊的一個(gè)實(shí)例;圖11展示了保存圖1的系統(tǒng)中存儲(chǔ)器單元陣列的缺陷記錄的保留塊的數(shù)據(jù)結(jié)構(gòu)實(shí)例,也就是壞列的位置;圖12顯示了圖1的存儲(chǔ)器陣列物理劃分成存儲(chǔ)器單元的單位和塊,以及指定要存放在其中的數(shù)據(jù)的實(shí)例;圖13示意性地展示了一種方法,形成圖1的系統(tǒng)中多個(gè)存儲(chǔ)器集成電路芯片特征的合并記錄;圖14顯示了一個(gè)實(shí)例,以圖13中展示的方式形成的合并記錄;圖15展示了圖4中數(shù)據(jù)區(qū)段的旗標(biāo)字節(jié)的位域?qū)嵗?
圖16示意性地顯示了在數(shù)據(jù)寫入存儲(chǔ)器時(shí),圖15中旗標(biāo)字節(jié)位域的生成和使用;以及圖17示意性地顯示了從存儲(chǔ)器讀出數(shù)據(jù)時(shí),圖15中旗標(biāo)字節(jié)位域的使用。
具體實(shí)施例方式
圖1提供了與本發(fā)明有關(guān)的非易失性存儲(chǔ)器系統(tǒng)的主要部件的示意圖??刂破?1通過連線13與主機(jī)系統(tǒng)進(jìn)行通信。展示為占據(jù)著一個(gè)集成電路芯片的控制器11,通過連線15與一個(gè)或多個(gè)非易失性存儲(chǔ)器單元陣列通信,圖中展示了17、19和21三個(gè)陣列,每一個(gè)陣列通常是在一個(gè)或多個(gè)分開的集成電路上形成的。展示的控制器通常包含在單一的集成電路芯片上,無論是沒有閃速EEPROM陣列(顯示的實(shí)例)還是帶有存儲(chǔ)器單元陣列。即使一個(gè)存儲(chǔ)器單元陣列包括在控制器電路芯片上,系統(tǒng)中往往還要包括另外的一個(gè)或多個(gè)芯片,其中每一個(gè)只包含一個(gè)存儲(chǔ)器陣列和相關(guān)聯(lián)的電路。
在這個(gè)實(shí)例中,用戶數(shù)據(jù)通過連線15在控制器11和多個(gè)存儲(chǔ)器陣列17、19和21之間傳遞。存儲(chǔ)器陣列由控制器分別尋址。具體地說,連線15之內(nèi)的數(shù)據(jù)總線可以為一個(gè)字節(jié)寬。圖1中所示的存儲(chǔ)器系統(tǒng)可以作為一部分嵌入一個(gè)主機(jī)系統(tǒng)或者封裝在一片卡中,比如服從上述卡標(biāo)準(zhǔn)之一的某種卡。在某種卡的情況下,連線13終止于外部接線端,與主機(jī)系統(tǒng)中的一個(gè)擴(kuò)展槽匹配。盡管使用一個(gè)控制器芯片和多個(gè)存儲(chǔ)器芯片是典型情況,趨勢(shì)當(dāng)然是通過合并其電路在這種系統(tǒng)中使用更少的分離芯片。展示的存儲(chǔ)器芯片之一的實(shí)例容量是256兆位,因此只需要兩個(gè)這種存儲(chǔ)器芯片,加上控制器芯片,以形成一個(gè)具有64兆字節(jié)數(shù)據(jù)容量的非易失性存儲(chǔ)器系統(tǒng)。使用單個(gè)更小容量的存儲(chǔ)器芯片會(huì)使存儲(chǔ)器系統(tǒng)的容量更小,8兆字節(jié)的系統(tǒng)是市場(chǎng)歡迎的實(shí)例。相反,在一個(gè)系統(tǒng)中使用更高的位存儲(chǔ)密度和/或使用更多的存儲(chǔ)器陣列芯片會(huì)使存儲(chǔ)器的容量更大。這種存儲(chǔ)器系統(tǒng)高至1.3吉字節(jié),而且更大的也是可能的。
控制器11包括一個(gè)微處理器或者說微控制器23,通過控制器接口邏輯電路25連接到帶有外部組件的內(nèi)部存儲(chǔ)器和接口。程序存儲(chǔ)器27存放著由微控制器23訪問的固件和軟件,用于控制存儲(chǔ)器系統(tǒng)的操作,從連接的存儲(chǔ)器陣列讀出數(shù)據(jù)并把該數(shù)據(jù)發(fā)送到主機(jī),從主機(jī)向存儲(chǔ)器芯片寫入數(shù)據(jù),以及執(zhí)行為數(shù)眾多的其它監(jiān)視和控制功能。存儲(chǔ)器27可以是一種易失的可重編程的隨機(jī)訪問存儲(chǔ)器(RAM)、一種不可重編程的非易失性存儲(chǔ)器(ROM)、一種可編程一次的存儲(chǔ)器(OTP)或者一種可重編程的閃速EEPROM系統(tǒng)。如果存儲(chǔ)器27是可重編程的,該控制器就能夠配置為允許主機(jī)系統(tǒng)對(duì)它編程。隨機(jī)訪問存儲(chǔ)器(RAM)29用于存放在讀寫操作期間訪問非易失性存儲(chǔ)器時(shí)讀取的數(shù)據(jù)和其它數(shù)據(jù)。
邏輯電路31為主機(jī)通信連線13提供接口,而另一個(gè)邏輯電路33通過連線15為存儲(chǔ)器陣列提供接口。另一個(gè)存儲(chǔ)器35用作緩沖區(qū),暫時(shí)存放主機(jī)系統(tǒng)和非易失性存儲(chǔ)器之間傳遞的用戶數(shù)據(jù)??刂破髦械倪@些存儲(chǔ)器通常是易失性的,由于帶有高效控制器訪問所需的快速訪問和其他特征的存儲(chǔ)器具有這種特征,并且可以物理地合并到單一的存儲(chǔ)器中。一個(gè)專用的電路36訪問正在傳遞的用戶數(shù)據(jù)流并把虛字節(jié)插入數(shù)據(jù)流中,以避免把有效的用戶數(shù)據(jù)寫入存儲(chǔ)器單元的壞列中。一個(gè)專用的處理電路37也訪問正在控制器接口25和閃存接口33之間傳遞的用戶數(shù)據(jù)流,以便根據(jù)該用戶數(shù)據(jù)產(chǎn)生一個(gè)ECC,或者其它類型的冗余碼。當(dāng)用戶數(shù)據(jù)正在傳遞到非易失性存儲(chǔ)器中時(shí),產(chǎn)生的ECC附加在用戶數(shù)據(jù)上并同時(shí)寫入非易失性存儲(chǔ)器的相同物理塊,作為該用戶數(shù)據(jù)同一區(qū)段的一部分。下面將針對(duì)圖6A至圖6C進(jìn)一步介紹電路36和37。
非易失性存儲(chǔ)器芯片17包括一個(gè)邏輯電路39,用于通過連線15為控制器提供接口。為了簡(jiǎn)化解釋沒有顯示存儲(chǔ)器芯片另外的部件。邏輯電路39的目的是在分離的總線和控制連線中產(chǎn)生信號(hào)。在連線41中提供多種控制信號(hào),而且通過接口39也控制著存儲(chǔ)器陣列電路的電源供應(yīng)43。數(shù)據(jù)總線45載有正在編入非易失性存儲(chǔ)器或者正在從非易失性存儲(chǔ)器讀出的用戶數(shù)據(jù),地址總線47載有正在訪問的存儲(chǔ)器部位的地址,以便讀取用戶數(shù)據(jù)、寫入用戶數(shù)據(jù)或者擦除存儲(chǔ)器單元塊。
單個(gè)非易失性存儲(chǔ)器芯片的浮點(diǎn)門存儲(chǔ)器單元陣列本身劃分為許多單位,每一個(gè)單位都有各自的支持電路組,用于尋址、解碼、讀取等等。在這個(gè)實(shí)例中,展示了八個(gè)這種陣列單位0-7,記為參考號(hào)51-58。作為一個(gè)實(shí)例,單個(gè)芯片上的存儲(chǔ)器陣列物理上劃分為象限,每個(gè)象限包括兩個(gè)單位,它們部分地連接在一起,共享一個(gè)公共的字線解碼電路(Y解碼),比如存儲(chǔ)器單元單位4(55)和單位5(56)之間的Y解碼器61。這種存儲(chǔ)器體系結(jié)構(gòu)類似于上述的5,890,192號(hào)美國(guó)專利中的介紹,只不過有八個(gè)單位,而不是該專利中展示的四個(gè)單位(象限)。
每個(gè)陣列單位有一個(gè)位線解碼器(X解碼),比如連接到陣列單位5(56)的X解碼器63,通過它讀取用戶數(shù)據(jù)。圖2是一張擴(kuò)展圖,展示了陣列單位5及其對(duì)應(yīng)于地址總線47上地址的解碼器61和63。連接到解碼器63的是電路65,它包含著用于讀出數(shù)據(jù)的讀出放大器、用于存放正在編程數(shù)據(jù)的寄存器、在編程期間用于確定單位5中被尋址的單元是否已經(jīng)被編程為所需狀態(tài)和在讀取期間用于確定正在讀取單元的狀態(tài)的比較器以及執(zhí)行這些功能的控制邏輯電路。連接了兩個(gè)寄存器67和69,以便在讀取(從67到69)和編程(從69到67)期間在它們之間并行地傳遞用戶數(shù)據(jù)。在寫入期間,用戶數(shù)據(jù)從數(shù)據(jù)總線45和寄存器69傳遞,每次一個(gè)字節(jié),而在讀取期間是從另一個(gè)方向傳遞。其它七個(gè)陣列單位中的每一個(gè)都類似地連接。
具體參考圖2,對(duì)于陣列單位5,一般地介紹了一個(gè)實(shí)例存儲(chǔ)器單元陣列的一部分。單元的每一行具有其各自的傳導(dǎo)字線(WL),通過解碼器61連接到相鄰陣列單位4的對(duì)應(yīng)字線。例如,由浮點(diǎn)門存儲(chǔ)器單元71-75和77-81組成的兩個(gè)局部行70和76中的每一個(gè),都有其各自對(duì)應(yīng)的字線83和85。字線連接到單一行中每一個(gè)單元的門上,連接著的門為存儲(chǔ)器單元中的選擇門,該單元具有分裂通道類型的結(jié)構(gòu)。可以使用其它存儲(chǔ)器單元結(jié)構(gòu)來代替,每一種結(jié)構(gòu)都具有至少一個(gè)浮點(diǎn)電子門,門上存放電荷的電平是該單元狀態(tài)的某種度量。在每?jī)尚写鎯?chǔ)器單元之間配備了一條傳導(dǎo)擦除線,線87連接著行70和行76中每一行的每一個(gè)存儲(chǔ)器單元中的擦除門。另外的結(jié)構(gòu)對(duì)分離的擦除門不擦除浮點(diǎn)門,而是擦除到基底的一個(gè)區(qū)域,比如單元源擴(kuò)散。位線(BL)在與字線正交的方向延伸,陣列單元的每一列之間有一條位線,并且連接到解碼器63。每一條位線都連接到該位線兩側(cè)各列每一個(gè)單元的源和漏擴(kuò)散。上面背景技術(shù)一節(jié)列出的美國(guó)專利中介紹了適當(dāng)?shù)拇鎯?chǔ)器陣列的詳細(xì)實(shí)例,不過在本發(fā)明的實(shí)施中同樣可以采用其它現(xiàn)有的和提議的結(jié)構(gòu)。
在正在介紹的陣列實(shí)例中,當(dāng)按照四個(gè)規(guī)定的閾值電壓狀態(tài)操作每個(gè)浮點(diǎn)門,以使每個(gè)浮點(diǎn)門存放兩位數(shù)據(jù)時(shí),由圍繞一個(gè)擦除門的每?jī)尚行纬梢粋€(gè)單元塊,比如(圖2中)擦除門87兩側(cè)陣列單位5的行70和行76。在圖3A中對(duì)這一點(diǎn)進(jìn)行了更一般的展示,其中行70和行76形成的塊包含了來自主機(jī)的一個(gè)區(qū)段的數(shù)據(jù),加上該數(shù)據(jù)有關(guān)的某些日常信息。在一個(gè)非常具體的實(shí)例中,各個(gè)塊的規(guī)模具有528字節(jié)的容量,以便存放一個(gè)512字節(jié)的數(shù)據(jù)區(qū)段、該數(shù)據(jù)有關(guān)的某些日常信息并提供某些備用的字節(jié),如圖4所示。如果每個(gè)浮點(diǎn)門能夠存放兩位數(shù)據(jù),如圖3A中所示的情況,每塊就包含264個(gè)浮點(diǎn)門,或者說在該塊的兩行的每一行中是132個(gè)。如果存儲(chǔ)器單元的結(jié)構(gòu)在源和漏擴(kuò)散之間形成的每個(gè)單元具有一個(gè)浮點(diǎn)門,那么每個(gè)單位的每一行中就包括132個(gè)單元。但是如果這些單元每個(gè)具有兩個(gè)浮點(diǎn)門,那么每一行中只需要66個(gè)單元。
如果不是每個(gè)浮點(diǎn)門存放兩位數(shù)據(jù),而是每個(gè)浮點(diǎn)門只存放一位數(shù)據(jù),每個(gè)可操作的塊就需要兩倍數(shù)目的單元。實(shí)際上,可以通過圖3B中所示的方式使每行的長(zhǎng)度加倍來實(shí)現(xiàn)這一點(diǎn)。使行70和76延伸以包括與單位5配對(duì)的、相鄰的單位4的對(duì)應(yīng)行70’和76’。單位4的行70’的字線通過解碼器61連接到單位5的行70的字線,行76’的字線連接到單位5的行76。當(dāng)對(duì)一個(gè)給定行的字線尋址時(shí),該字線在相鄰的單位4和單位5中的兩個(gè)部件都在一起尋址。用于行70和76的公共擦除門也通過解碼器61連接到用于行70’和76’的公共擦除門,以便使行70、70’、76和76’中單元的擴(kuò)大塊形成的所有單元一起擦除。所以,當(dāng)僅僅以兩個(gè)閾值狀態(tài)操作存儲(chǔ)器陣列浮點(diǎn)門時(shí),正在介紹的、該陣列的八個(gè)單位就減少到四個(gè)操作象限,每一個(gè)都是由相鄰的單位對(duì)(0-1、2-3、4-5和6-7)所形成。如果為了在每個(gè)單位的電路65中進(jìn)行程序驗(yàn)證和讀取,也設(shè)定了一個(gè)恰當(dāng)?shù)膮⒖奸撝惦娖浇M,這樣就允許圖1中的存儲(chǔ)器陣列既能以二狀態(tài)操作,又能以四狀態(tài)操作,按照制造時(shí)設(shè)定的一個(gè)命令而定。
作為圖3B中所示二狀態(tài)配置的替代方案,在單個(gè)單位之內(nèi)的所有行可以形成單一的塊,比如相互連續(xù)的四行。
在控制器緩沖區(qū)存儲(chǔ)器35(圖1)和尋址的陣列存儲(chǔ)器單元塊之間的數(shù)據(jù)傳遞最好以字節(jié)片方式進(jìn)行。在一個(gè)具體的實(shí)例中,每個(gè)字節(jié)片包含66字節(jié)的數(shù)據(jù)。一個(gè)字節(jié)片的數(shù)據(jù)并行地一次編程到尋址塊中的單元。當(dāng)以四狀態(tài)操作時(shí),數(shù)據(jù)91-94的字節(jié)片存放在典型塊的一行中(圖3A),數(shù)據(jù)97-100的字節(jié)片存放該塊單元的第二行中。當(dāng)存儲(chǔ)器以四狀態(tài)操作時(shí),數(shù)據(jù)91’-94’的各個(gè)字節(jié)片存放在單元的延伸行之一中(圖3B),字節(jié)片97’-100’存放在延伸跨越兩個(gè)相鄰單位的單元擴(kuò)展塊的另一行中。
不是在緩沖區(qū)存儲(chǔ)器35和存儲(chǔ)器陣列之一之間并行地傳遞字節(jié)片的用戶數(shù)據(jù),在連線15之內(nèi)設(shè)計(jì)了一條數(shù)據(jù)總線,只并行地載有幾位數(shù)據(jù),在一個(gè)具體的實(shí)例中是一位。這樣就在該系統(tǒng)中減少了連線15需要的數(shù)目,更重要的是,減少了需要在每個(gè)存儲(chǔ)器陣列芯片上包括的用戶數(shù)據(jù)焊點(diǎn)的數(shù)目。一次傳遞一個(gè)字節(jié),因此每個(gè)字節(jié)片需要66次這樣的傳遞。如果對(duì)陣列單位5之內(nèi)的一個(gè)塊進(jìn)行尋址,通過接口電路33和39,這些字節(jié)寬的用戶數(shù)據(jù)傳遞延伸到緩沖區(qū)存儲(chǔ)器35和存儲(chǔ)器單元陣列的主寄存器69之間,如果對(duì)其它單位之內(nèi)的一個(gè)塊進(jìn)行尋址,則傳遞到與另一個(gè)單位相關(guān)聯(lián)的另一個(gè)陣列主寄存器。
在編程期間從主機(jī)系統(tǒng)收到的用戶數(shù)據(jù)區(qū)段的字節(jié)依次傳遞到存儲(chǔ)器陣列的主寄存器中,一次一個(gè)字節(jié),直到累積了一個(gè)字節(jié)片的數(shù)據(jù),然后這一個(gè)字節(jié)片并行地傳遞到從寄存器(比如陣列單位5的寄存器67)。當(dāng)這一個(gè)字節(jié)片傳遞出主寄存器,進(jìn)入從寄存器之后,區(qū)段中下一個(gè)字節(jié)片的字節(jié)就傳遞進(jìn)主寄存器。字節(jié)片是并行地傳遞,每次一塊,由從寄存器到編程和驗(yàn)證電路(陣列單位5的電路65),使相關(guān)聯(lián)陣列單位被尋址塊的許多存儲(chǔ)器單元編程到其對(duì)應(yīng)的目標(biāo)閾值電平。把一個(gè)字節(jié)片加載進(jìn)主寄存器的操作最好與編程和驗(yàn)證電路由從寄存器對(duì)前一個(gè)字節(jié)片數(shù)據(jù)的編程相重疊。
在讀取期間,該過程是相反的,代表字節(jié)片數(shù)據(jù)的存儲(chǔ)器單元閾值從陣列單位之一每次一個(gè)地讀入其讀取電路(陣列單位5的電路65),存放的數(shù)值在其中轉(zhuǎn)換為數(shù)據(jù)位。然后,這些連續(xù)的字節(jié)片數(shù)據(jù)每次一個(gè)字節(jié)片地傳遞到該陣列單位的從寄存器中,再并行地傳遞到主寄存器中,接著通過連線15每次一個(gè)字節(jié)地傳遞到控制器的數(shù)據(jù)緩沖區(qū)35,以便傳遞到主機(jī)系統(tǒng)。當(dāng)一個(gè)字節(jié)片被傳遞出主寄存器到達(dá)控制器時(shí),一個(gè)新的數(shù)據(jù)字節(jié)片就被從讀取電路傳遞進(jìn)從寄存器。
不是完成一個(gè)區(qū)段的數(shù)據(jù)字節(jié)片傳遞后再連接另一個(gè),最好是在緩沖區(qū)存儲(chǔ)器35和不同的陣列單位0-7之間交替地傳遞多個(gè)區(qū)段的字節(jié)片。這種情況展示在圖5中,其中來自四個(gè)區(qū)段的數(shù)據(jù)傳遞到一個(gè)公共的數(shù)據(jù)流101。存儲(chǔ)器陣列單位A、B、C和D可能是圖1中系統(tǒng)的陣列單位0-7中的任何四個(gè)。數(shù)據(jù)字節(jié)片A0+、B0+、C0+和D0+顯示為在數(shù)據(jù)流101中,從緩沖區(qū)存儲(chǔ)器35中的四個(gè)對(duì)應(yīng)的數(shù)據(jù)區(qū)段103、105、107和109傳遞到四個(gè)不同的存儲(chǔ)器單位A-D。存儲(chǔ)器系統(tǒng)當(dāng)然能夠另外設(shè)計(jì)為一起傳遞更少或者更多的數(shù)據(jù)區(qū)段到相同數(shù)目的存儲(chǔ)器單元單位。為了展示簡(jiǎn)便起見,圖5中所示的每個(gè)區(qū)段只包含四個(gè)字節(jié)片(例如,區(qū)段103是字節(jié)片A0、A1、A2和A3),以上已經(jīng)介紹了圖1中的系統(tǒng)對(duì)每個(gè)區(qū)段傳遞八個(gè)字節(jié)片。操作的原理是相同的。
如圖5所示,在連線15的數(shù)據(jù)總線中傳遞的數(shù)據(jù)流101,是由以下的連續(xù)字節(jié)形成的緩沖區(qū)中數(shù)據(jù)區(qū)段103的第一個(gè)字節(jié)片A0,接著是區(qū)段105的第一個(gè)字節(jié)片B0,然后是區(qū)段107的第一個(gè)字節(jié)片C0,然后是區(qū)段109的第一個(gè)字節(jié)片D0。這些字節(jié)片最初存放在要向其中寫入數(shù)據(jù)的相應(yīng)單位的主寄存器中,再并行地傳遞到從寄存器,然后并行地寫入四個(gè)存儲(chǔ)器單元單位A-D的對(duì)應(yīng)塊111、113、115和117。所有的字節(jié)片A0、B0、C0和D0都在同時(shí)編入相應(yīng)的存儲(chǔ)器單位A-D,接著是字節(jié)片A1、B1、C1和D1,依此類推。寫入數(shù)據(jù)字節(jié)片的塊或者共享公共的字線119,或者在被尋址塊的字線上施加著相同的電壓。初始的數(shù)據(jù)字節(jié)片通過寄存器傳遞并編入單位后,隨后四個(gè)數(shù)據(jù)區(qū)段的字節(jié)片A1、B1、C1和D1被傳遞到這些單位的寄存器。在數(shù)據(jù)流101中,接著是來自數(shù)據(jù)區(qū)段103、105、107和109中每一個(gè)的另一個(gè)字節(jié)片,依此類推,直到緩沖區(qū)中的四個(gè)數(shù)據(jù)區(qū)段的所有字節(jié)片都編入存儲(chǔ)器單位A-D。
這種編程技術(shù)具有的一個(gè)優(yōu)點(diǎn)是,用戶數(shù)據(jù)的多個(gè)字節(jié)片可以同時(shí)編入單一芯片上存儲(chǔ)器的不同單位中,或者也可以是編入分布在兩個(gè)或更多存儲(chǔ)器芯片的不同單位中。這種技術(shù)特別適用于同時(shí)把多個(gè)數(shù)據(jù)區(qū)段編入一個(gè)單位的一個(gè)公共塊,因?yàn)楸粓D5中技術(shù)編程的單元相互之間在物理上和電學(xué)上分離得更遠(yuǎn)。在不要改變的浮點(diǎn)門上,這種分離減少了電荷干擾的意外。它也展開了芯片上的電源供應(yīng)需求。圖5中的技術(shù)對(duì)位置連續(xù)的存儲(chǔ)器單元形成的存儲(chǔ)器塊進(jìn)行操作,也特別適用于在跨越多個(gè)存儲(chǔ)器單位的片段中規(guī)定存儲(chǔ)器塊,以便同時(shí)對(duì)該塊的多個(gè)片段進(jìn)行編程,而不造成干擾和電源需求增加。
介紹圖5的技術(shù)時(shí)假設(shè),多個(gè)數(shù)據(jù)區(qū)段的全部——在這個(gè)實(shí)例中是四個(gè)——都完全寫入控制器緩沖區(qū)35,再開始把它們的數(shù)據(jù)以字節(jié)片的形式傳遞到閃存。但是如果所有四個(gè)數(shù)據(jù)區(qū)段同時(shí)寫入緩沖區(qū)存儲(chǔ)器35,這種傳遞就可以更早地開始,如同控制器11和主機(jī)系統(tǒng)之間進(jìn)行的更高的數(shù)據(jù)傳遞速率一樣。另外,以時(shí)移方式把四個(gè)數(shù)據(jù)區(qū)段103、105、107和109加載進(jìn)緩沖區(qū)存儲(chǔ)器35,比如在數(shù)據(jù)字節(jié)片A0已經(jīng)寫入之后正在讀入數(shù)據(jù)流101時(shí),從區(qū)段105加載字節(jié)片B0,并且以此對(duì)待數(shù)據(jù)區(qū)段107和109,還可以包括某些附加的并行化。然后,這些數(shù)據(jù)區(qū)段以加載這種數(shù)據(jù)一個(gè)字節(jié)片所需的時(shí)移,加載進(jìn)緩沖區(qū)35。那么,在流101之內(nèi)產(chǎn)生數(shù)據(jù)字節(jié)片只需要等待每個(gè)數(shù)據(jù)區(qū)段的第一個(gè)字節(jié)片加載進(jìn)緩沖區(qū)35。
圖6A是一個(gè)電路示意性框圖,該電路可以作為一部分而包括在圖1中存儲(chǔ)器系統(tǒng)的控制器11中,放在編程和讀取時(shí)接口25和33之間的用戶數(shù)據(jù)傳遞流的路徑上。這些電路參與執(zhí)行圖5中介紹的方法,也從被編程的數(shù)據(jù)產(chǎn)生ECC并把它插入數(shù)據(jù)流(ECC生成37)以及利用BCP來避免用戶數(shù)據(jù)寫入存儲(chǔ)器單元的壞列中(BCP處理36)。微控制器23以預(yù)定的順序,每次一個(gè)字節(jié)地對(duì)緩沖區(qū)存儲(chǔ)器109尋址。這個(gè)順序由電路104和106改變,以響應(yīng)連線108中的信號(hào),它表示閃存之內(nèi)包括壞列的一個(gè)字節(jié)地址。多路轉(zhuǎn)接器121用于每次提供來自區(qū)段A、B、C或D之一的數(shù)據(jù)字節(jié),以響應(yīng)連線123中的控制信號(hào),它作為另一個(gè)多路轉(zhuǎn)接器125的一個(gè)輸入。存放在緩沖區(qū)35中數(shù)據(jù)區(qū)段的數(shù)據(jù)字節(jié)片,最好以上面圖5中介紹的方式讀出。控制信號(hào)123使多路轉(zhuǎn)接器121按順序從一個(gè)數(shù)據(jù)區(qū)段轉(zhuǎn)向下一個(gè),每次從緩沖區(qū)35讀出一個(gè)字節(jié)片規(guī)模的若干數(shù)據(jù)字節(jié)。
多路轉(zhuǎn)接器121輸出端的用戶數(shù)據(jù)流作為一個(gè)輸入供應(yīng)給多路轉(zhuǎn)接器125。多路轉(zhuǎn)接器125一般讓來自連線114的數(shù)據(jù)流通過其輸出端,到達(dá)另一個(gè)多路轉(zhuǎn)接器112的輸入端。一個(gè)例外是當(dāng)一個(gè)區(qū)段的所有用戶數(shù)據(jù)字節(jié)都已經(jīng)流出緩沖區(qū)35時(shí),這時(shí)包含著用戶數(shù)據(jù)區(qū)段ECC碼的最終字節(jié)序列,通過連線116加在用戶數(shù)據(jù)的尾部。多路轉(zhuǎn)接器125的輸出提供了字節(jié)寬的用戶數(shù)據(jù)流和數(shù)據(jù)的日常信息,以便寫入非易失性存儲(chǔ)器的物理塊中。
用戶數(shù)據(jù)流一般每次一個(gè)字節(jié)地通過多路轉(zhuǎn)接器112到達(dá)閃存。這一點(diǎn)的一個(gè)例外是當(dāng)連線108中的BCP發(fā)現(xiàn)信號(hào)活化時(shí),它表示用戶數(shù)據(jù)的這個(gè)字節(jié)正在指向閃存中包括壞列的位置。在這種情況下,應(yīng)用于緩沖區(qū)35的地址不是按照微控制器23增加,而是把寄存器110中包含的填充字節(jié)插入數(shù)據(jù)流中,取代用戶數(shù)據(jù)的通常字節(jié)。來自緩沖區(qū)35的、用戶數(shù)據(jù)的下一個(gè)字節(jié)被延遲,直到BCP發(fā)現(xiàn)信號(hào)非活化的下一個(gè)傳遞周期。寄存器110之內(nèi)填充字節(jié)的各位可以由微控制器23寫入。多路轉(zhuǎn)接器112的輸出提供了字節(jié)寬的用戶數(shù)據(jù)流和數(shù)據(jù)的日常信息,以便寫入非易失性存儲(chǔ)器的物理塊中,以及為了避免壞列效應(yīng)的填充字節(jié)。沒有圖6A中的電路,或者只有BCP處理36或ECC生成37之一而非兩者都有,也能夠運(yùn)行正在介紹的存儲(chǔ)器系統(tǒng),但是展示的兩種功能最好都包括。
參考圖6B,其中給出了圖6A中ECC生成器37的附加細(xì)節(jié)。即使四個(gè)數(shù)據(jù)區(qū)段在一個(gè)字節(jié)寬的數(shù)據(jù)流中從多路轉(zhuǎn)接器112的輸出交替?zhèn)鬟f到單一ECC生成電路127,ECC生成器37能夠分別為每個(gè)數(shù)據(jù)區(qū)段產(chǎn)生一個(gè)ECC,把產(chǎn)生的代碼附加在每個(gè)數(shù)據(jù)區(qū)段的尾部最后一個(gè)字節(jié)片中,并發(fā)送到非易失性存儲(chǔ)器陣列進(jìn)行存儲(chǔ)。做到這一點(diǎn),是對(duì)每次發(fā)送到存儲(chǔ)器陣列的、四個(gè)數(shù)據(jù)區(qū)段中的每一個(gè),使用分離的寄存器133、134、135和136。由信號(hào)分離器131或某種其它的有效開關(guān)邏輯電路,在這些寄存器之一中存放生成的結(jié)果。同樣,這些寄存器中適當(dāng)?shù)囊粋€(gè),其內(nèi)容通過多路轉(zhuǎn)接器139連接到ECC生成電路127作為一個(gè)輸入。在數(shù)據(jù)的每個(gè)字節(jié)從緩沖區(qū)35輸入到ECC生成電路127之后,該電路對(duì)存放在寄存器133-136中對(duì)應(yīng)的一個(gè)內(nèi)的、相同的對(duì)應(yīng)數(shù)據(jù)區(qū)段A、B、C或D,使用ECC生成的一個(gè)中間結(jié)果,以及數(shù)據(jù)的新字節(jié),產(chǎn)生新的中間結(jié)果,送回同一個(gè)寄存器存放。寄存器的這種使用受到其輸入信號(hào)分離器131和輸出多路轉(zhuǎn)接器139的控制,它們又是由連線123中的控制信號(hào)導(dǎo)致的,在寄存器之間按順序步進(jìn),與數(shù)據(jù)選擇多路轉(zhuǎn)接器121同步。生成電路127執(zhí)行某種標(biāo)準(zhǔn)的ECC算法,比如里德-索羅門編碼。
當(dāng)BCP處理把填充字節(jié)插入數(shù)據(jù)流中時(shí),為了使ECC生成器127暫停,連線108中的BCP發(fā)現(xiàn)信號(hào)活化,并且連線116中的一個(gè)信號(hào)表明多路轉(zhuǎn)接器121輸出的數(shù)據(jù)有效,二者的結(jié)合使生成器127禁用。邏輯電路138結(jié)合信號(hào)108和116,以便為ECC生成器127產(chǎn)生一個(gè)禁用信號(hào)。
ECC生成器已經(jīng)收到存放的數(shù)據(jù)區(qū)段的最后一個(gè)字節(jié)之后,多路轉(zhuǎn)接器125響應(yīng)連線129中的控制信號(hào),從接收多路轉(zhuǎn)接器121的輸入轉(zhuǎn)向接收ECC生成電路127的結(jié)果,把最后的結(jié)果插入數(shù)據(jù)流的最后一個(gè)字節(jié)片。然后ECC就與產(chǎn)生它的用戶數(shù)據(jù)區(qū)段存放在存儲(chǔ)器陣列的同一塊中。對(duì)一組四個(gè)區(qū)段中的每一個(gè),都產(chǎn)生ECC并插入數(shù)據(jù)流之后,連線141中的一個(gè)信號(hào)使寄存器133-136復(fù)位。
參考圖6C,其中給出了BCP處理36的附加細(xì)節(jié)。對(duì)于一個(gè)具體時(shí)間正在編程的每個(gè)存儲(chǔ)器區(qū)段的許多壞列指針(BCP),由微控制器23從閃存的一個(gè)保留塊加載到寄存器118(后面對(duì)于圖11還要介紹)。為(圖5中)數(shù)據(jù)流101指向的存儲(chǔ)器單位中的每一個(gè),存放了四個(gè)BCP0-3。也就是,為這四個(gè)單位中每一個(gè)的所有四個(gè)BCP0-3,都是由微控制器23從保留塊寫入寄存器118的四個(gè)面(組),每個(gè)組具有四個(gè)寄存器。圖6C中所示的寄存器118的每一個(gè)面包含一個(gè)不同單位的BCP0-3。連線123中的控制信號(hào)在這些寄存器面之間切換,以指定當(dāng)前在通過多路轉(zhuǎn)接器121來自緩沖區(qū)35的數(shù)據(jù)流中的數(shù)據(jù)字節(jié)片所在單位的BCP。多路轉(zhuǎn)接器120把寄存器數(shù)值中的一個(gè)輸出到比較器132的一個(gè)輸入端,其輸出是包含著BCP發(fā)現(xiàn)信號(hào)的連線108。當(dāng)前數(shù)據(jù)流要寫入的單位中的每一個(gè),也包括四個(gè)寄存器122之一。四個(gè)寄存器122中的每一個(gè),開始時(shí)的計(jì)數(shù)是使多路轉(zhuǎn)接器120選擇其單位的BCP0。每次連線108中的BCP發(fā)現(xiàn)信號(hào)發(fā)生時(shí),電路124和126使適當(dāng)?shù)募拇嫫?22的BCP計(jì)數(shù)增加1。
比較器132的第二輸入是由寄存器128和130的內(nèi)容形成的。這些寄存器包含著存儲(chǔ)字節(jié)片和字節(jié)的當(dāng)前物理存儲(chǔ)器位置,多路轉(zhuǎn)接器121輸出的數(shù)據(jù)字節(jié)指定在閃存之內(nèi)要存放在該處。這些寄存器由微控制器23加載。然后,比較器132把它們結(jié)合的物理存儲(chǔ)器字節(jié)地址與該數(shù)據(jù)字節(jié)指定的存儲(chǔ)器單位的寄存器118中BCP之一的地址進(jìn)行比較。當(dāng)給定單位用戶數(shù)據(jù)的第一個(gè)字節(jié)出現(xiàn)在多路轉(zhuǎn)接器121的輸出端時(shí),其來自寄存器128和130的物理存儲(chǔ)器地址與該單位的寄存器118之一中的BCP0進(jìn)行比較。如果比較結(jié)果是肯定的,那么連線108中的BCP發(fā)現(xiàn)信號(hào)就變?yōu)榛罨?。這就導(dǎo)致ECC用戶數(shù)據(jù)的當(dāng)前字節(jié)被阻止,由從寄存器110插入的填充字節(jié)取代。然后該填充字節(jié)取代當(dāng)前數(shù)據(jù)字節(jié)將被寫入包括壞列的存儲(chǔ)器單元。
BCP發(fā)現(xiàn)信號(hào)也造成該單位寄存器122之一中的計(jì)數(shù)切換多路轉(zhuǎn)接器120以選擇該存儲(chǔ)器單位的下一個(gè)BCP1。然后BCP處理器為這個(gè)過程再次發(fā)生做好準(zhǔn)備,即物理存儲(chǔ)器字節(jié)位置符合該單位BCP順序中的下一個(gè)。在下一個(gè)循環(huán)中寫入受阻的數(shù)據(jù)字節(jié),假設(shè)這次下一個(gè)物理地址比較不會(huì)導(dǎo)致另一個(gè)BCP發(fā)現(xiàn),如果還是這種情況該數(shù)據(jù)字節(jié)還要再受阻一個(gè)循環(huán)。這個(gè)過程持續(xù)下去,直到當(dāng)前四個(gè)數(shù)據(jù)區(qū)段形成的數(shù)據(jù)流已經(jīng)傳遞到閃存,隨后對(duì)存放在寄存器128和130中的、不同的存儲(chǔ)器位置重復(fù)該過程,寫入新的數(shù)據(jù)區(qū)段,并且如果新數(shù)據(jù)是寫入不同于以前的一個(gè)或多個(gè)存儲(chǔ)器單位,還可能改變存放在寄存器118的一個(gè)或多個(gè)面上的BCP。
再次參考圖4,其中給出了存儲(chǔ)器陣列塊的說明,塊中存放著一個(gè)數(shù)據(jù)區(qū)段和ECC。作為附加的日常信息,第一字節(jié)145提供了如何寫入其余數(shù)據(jù)的基本信息。這可能包括,例如,一位或兩位用于指定相對(duì)數(shù)值或極性,在讀出存放的數(shù)據(jù)時(shí)要考慮這些因素。為了均衡對(duì)某塊的單元編程時(shí),從擦除狀態(tài)(它也可能是編程狀態(tài)之一)到編程狀態(tài)之一造成的損耗,這種信息往往隨塊和時(shí)間而變化。在下面針對(duì)圖15至圖17還要進(jìn)一步介紹這一點(diǎn)。下一個(gè)成分是數(shù)據(jù)147,從目前已經(jīng)介紹的內(nèi)容,它是主機(jī)系統(tǒng)供應(yīng)的用戶數(shù)據(jù)的一個(gè)區(qū)段,要存儲(chǔ)在非易失性存儲(chǔ)器系統(tǒng)中。成分149是在編程期間以上面介紹的方式從用戶數(shù)據(jù)147產(chǎn)生的。在各個(gè)塊中的單元數(shù)目選定為留有一個(gè)單元組151作為備用,在這個(gè)實(shí)例中是能夠存放8個(gè)字節(jié)。這些備用字節(jié)在圖4中顯示為讀寫時(shí)位于塊的尾部,如果在塊的其它部分沒有需要使用某些或所有這些備用字節(jié)的缺陷,就是這種情況。為了避開壞列而由BCP處理36把填充字節(jié)插入用戶數(shù)據(jù)147時(shí),備用字節(jié)151的數(shù)目將是圖4中顯示的數(shù)目減去填充字節(jié)的數(shù)目。把一個(gè)填充字節(jié)插入用戶數(shù)據(jù)147導(dǎo)致隨后的字節(jié)都延遲一個(gè)字節(jié),或者說在圖4的數(shù)據(jù)區(qū)段示意圖中右移,因此使數(shù)據(jù)流尾部的備用字節(jié)151的數(shù)目縮小了1。
當(dāng)數(shù)據(jù)區(qū)段從閃存讀出時(shí),圖6A至圖6C中的BCP處理和ECC生成電路以相反的方式運(yùn)行,只不過一個(gè)完整的數(shù)據(jù)區(qū)段讀出之后才讀取另一個(gè)區(qū)段的數(shù)據(jù)。當(dāng)數(shù)據(jù)每次一個(gè)字節(jié)地通過圖6A中的電路從閃存到達(dá)數(shù)據(jù)緩沖區(qū)35時(shí),ECC生成電路37由區(qū)段中的用戶數(shù)據(jù)計(jì)算ECC,其方式與上面介紹的寫入數(shù)據(jù)時(shí)相同。然后,計(jì)算出的ECC與作為區(qū)段一部分存放的ECC字節(jié)進(jìn)行比較,以便確定該區(qū)段的用戶數(shù)據(jù)是否有效。通過比較讀出每個(gè)字節(jié)的物理存儲(chǔ)器位置和該數(shù)據(jù)區(qū)段存放的存儲(chǔ)器單位的BCP,BCP處理在讀出的數(shù)據(jù)流中識(shí)別填充字節(jié)。然后,從讀出的數(shù)據(jù)流中清除這些字節(jié),再把該數(shù)據(jù)區(qū)段寫入緩沖區(qū)存儲(chǔ)器35。
參考圖7,其中總結(jié)了圖4至圖6中介紹的數(shù)據(jù)編程。在圖1至圖3中的系統(tǒng)為四個(gè)數(shù)據(jù)區(qū)段A-D產(chǎn)生的數(shù)據(jù)流101中,虛線表示字節(jié)片出現(xiàn)的順序,其中每個(gè)區(qū)段是以8個(gè)字節(jié)片傳遞。如圖所示,區(qū)段A、B、C和D的第一個(gè)字節(jié)片以這個(gè)順序出現(xiàn),接著是區(qū)段A、B、C和D的第二個(gè)字節(jié)片,依此類推,直到包括區(qū)段A、B、C和D的第八個(gè)最后的字節(jié)片。此后,很可能對(duì)四個(gè)不同的數(shù)據(jù)區(qū)段重復(fù)該過程。
應(yīng)當(dāng)注意,與數(shù)據(jù)區(qū)段一起存放在一塊中的日常信息,僅限于有關(guān)該數(shù)據(jù)本身的信息,并不包括有關(guān)塊或其操作的物理日常信息?,F(xiàn)有的存儲(chǔ)器系統(tǒng),尤其是通過存放用戶數(shù)據(jù)的512字節(jié)區(qū)段來仿真磁盤驅(qū)動(dòng)器的系統(tǒng),除了從塊內(nèi)存放的數(shù)據(jù)產(chǎn)生的ECC之外,也已經(jīng)在各個(gè)用戶數(shù)據(jù)塊中存放了以下的塊特征的有關(guān)信息經(jīng)歷循環(huán)、對(duì)單元塊編程或擦除所需的脈沖數(shù)目或電壓、塊內(nèi)的缺陷等存儲(chǔ)介質(zhì)有關(guān)的信息。不過,作為本發(fā)明的一部分,這種類型的有關(guān)物理塊的信息存放在另一塊中。作為一個(gè)特定的實(shí)例,包含著眾多塊的這種信息的各個(gè)塊日常記錄,存放在專為這種日常信息而不包含用戶數(shù)據(jù)的其它存儲(chǔ)器塊中。影響許多塊的、存儲(chǔ)器陣列的某種信息,比如壞列的標(biāo)識(shí),又存放在其它存儲(chǔ)器塊中,以使這種信息需要的存儲(chǔ)器空間最小。無論哪種情況,一個(gè)給定塊的日常信息都是從這些其它塊中讀出,作為訪問給定塊過程的一部分,不論是從它讀出數(shù)據(jù)還是把數(shù)據(jù)編進(jìn)去。通常在訪問該塊讀寫用戶數(shù)據(jù)之前,由控制器讀出塊日常信息。
圖8展示了幾個(gè)這種塊日常數(shù)據(jù)記錄151-157,它們一起以圖4中的格式存放在單一的存儲(chǔ)器陣列塊中。也就是,其它塊的多個(gè)日常記錄形成一個(gè)日常數(shù)據(jù)區(qū)段的數(shù)據(jù)147,該區(qū)段包括從日常數(shù)據(jù)147產(chǎn)生的旗標(biāo)字節(jié)145和ECC字節(jié)149。存放日常數(shù)據(jù)區(qū)段的塊也包括單元的備用字節(jié)151,用于取代有缺陷列之內(nèi)的任何單元。這種日常數(shù)據(jù)的區(qū)段和存放它的塊具有相同的特征,并且讀寫方式相同,正如以上對(duì)用戶數(shù)據(jù)區(qū)段的介紹。主要的差異在于數(shù)據(jù)147的性質(zhì)。在一個(gè)特定的實(shí)例中,每個(gè)這種日常記錄包含四個(gè)字節(jié)的數(shù)據(jù),結(jié)果128個(gè)這種記錄結(jié)合在一起,成為日常數(shù)據(jù)的一個(gè)規(guī)定區(qū)段。
圖9展示了一個(gè)良好的用戶數(shù)據(jù)塊的塊日常記錄的實(shí)例內(nèi)容。字節(jié)0包含旗標(biāo),它包括一個(gè)標(biāo)志,表明該用戶數(shù)據(jù)塊是良好的。字節(jié)1指明擦除用戶數(shù)據(jù)塊所用的電壓,字節(jié)2為編程電壓。在存儲(chǔ)器系統(tǒng)的壽命中,這兩種電壓由控制器更新,以響應(yīng)從屬用戶數(shù)據(jù)塊需要增長(zhǎng)數(shù)目的擦除或編程脈沖來達(dá)到所需的相應(yīng)擦除和編程狀態(tài)。當(dāng)分別擦除或編程記錄151包含日常數(shù)據(jù)的從屬用戶數(shù)據(jù)塊時(shí),控制器就使用這種信息。日常數(shù)據(jù)記錄的字節(jié)3表示從屬用戶數(shù)據(jù)塊的延伸使用,無論是作為經(jīng)歷計(jì)數(shù),它在從屬用戶數(shù)據(jù)塊每次擦除和再次編程時(shí)更新,還是作為一個(gè)或多個(gè)追蹤單元的特征,這些單元作為其相應(yīng)的用戶數(shù)據(jù)塊,經(jīng)過了相同次數(shù)的擦除和再次編程循環(huán)。這種追蹤單元的使用,最好是至少與分配來存放用戶數(shù)據(jù)的存儲(chǔ)器陣列塊中的每一個(gè)相關(guān)聯(lián),在上述的美國(guó)專利申請(qǐng)序列號(hào)08/910,947中介紹過。當(dāng)使用循環(huán)的次數(shù)增加或者當(dāng)追蹤單元的特征顯著改變時(shí),周期性地重寫字節(jié)3中的數(shù)據(jù)。字節(jié)3的數(shù)值用于確定相關(guān)聯(lián)的用戶數(shù)據(jù)塊何時(shí)需要退出服務(wù)。使用追蹤單元,而不是經(jīng)歷計(jì)數(shù),有一個(gè)顯著的優(yōu)點(diǎn),日常區(qū)段數(shù)據(jù)需要重寫的次數(shù)少得多,少到在存儲(chǔ)器陣列的壽命中只有幾次,而不是在每次擦除/編程循環(huán)之后。
圖10展示了一個(gè)用戶數(shù)據(jù)塊的日常記錄,該塊已經(jīng)超過了其有效的壽命,否則就是已經(jīng)被控制器確定為一個(gè)有缺陷的塊。旗標(biāo)字節(jié)表明,該塊是有缺陷的,并且分配了一個(gè)備用塊來取代它。(不要與(圖4中的)旗標(biāo)字節(jié)145相混淆,后者是在各個(gè)數(shù)據(jù)區(qū)段的起點(diǎn)。)該記錄的其它三個(gè)字節(jié)指明了備用塊的地址,作為當(dāng)前用戶數(shù)據(jù)塊日常數(shù)據(jù)的一部分。因此,對(duì)于好的塊用于指明其操作參數(shù)(見圖9)的三個(gè)字節(jié),對(duì)于有缺陷的塊高效地用于這種其它的目的。這樣做使日常數(shù)據(jù)需要的字節(jié)數(shù)目最少。當(dāng)控制器讀取這個(gè)記錄作為訪問其用戶數(shù)據(jù)塊過程的一部分時(shí),它很快地確定,被尋址的塊是有缺陷的,然后控制器使用圖10的記錄中提供的備用塊地址來尋址并訪問備用的用戶數(shù)據(jù)塊。
因此,除了填充存儲(chǔ)器陣列指定的地址空間必需數(shù)目的用戶數(shù)據(jù)塊之外,這種塊管理還需要提供許多備用塊。這些塊的日常記錄在旗標(biāo)字節(jié)中指定其狀態(tài)為備用的,以及它們是良好的還是有缺陷的備用塊。如果是良好的備用塊,該記錄包含的字節(jié)1-3與圖9中的記錄相同。如果是有缺陷的備用塊,字節(jié)1-3不需要包含該塊的任何日常信息,因?yàn)樗^不會(huì)被使用。
存儲(chǔ)器單元陣列中影響許多單元塊的任何缺陷,比如一條位線與一個(gè)其它的單元短路時(shí)可能發(fā)生的有缺陷的列,存放在其它的塊中,以便精簡(jiǎn)塊日常記錄。圖11中所示的一個(gè)實(shí)例是壞列指針(BCP)表,以圖4中數(shù)據(jù)格式的塊中數(shù)據(jù)的形式存放。在存儲(chǔ)器系統(tǒng)制造過程的測(cè)試階段,要產(chǎn)生這樣一個(gè)表。在這個(gè)實(shí)例中,每個(gè)BCP有兩個(gè)字節(jié),對(duì)存儲(chǔ)器單元單位0-7中的每一個(gè),最多可以存放四個(gè)BCP。由于在典型的用戶數(shù)據(jù)塊中包括單元的八個(gè)備用字節(jié)作為備用字節(jié)151(圖4),在單一的塊中可以跳過單元的兩個(gè)字節(jié),以響應(yīng)控制器從圖11的表中讀取一個(gè)BCP。如果在一個(gè)單位中有超過四個(gè)壞列,該單位就被識(shí)別為有缺陷的,棄置不用。只要至少還有一個(gè)單位還可用,存儲(chǔ)器系統(tǒng)就可以運(yùn)行。另外,由于每個(gè)單位的列線可能是分段的,可能要為每段,或者段的各個(gè)組存放某些數(shù)目的BCP,比如兩個(gè)。當(dāng)然,它要消耗更多的存儲(chǔ)器來存放擴(kuò)展的BCP表。
在存儲(chǔ)器的運(yùn)行期間,圖11的BCP表和數(shù)目為空間允許的、圖8至圖10的日常數(shù)據(jù)塊,由控制器從存儲(chǔ)器塊讀入其RAM 29(見圖1)中,而不從非易失性存儲(chǔ)器中刪除該日常數(shù)據(jù)。這是在存儲(chǔ)器系統(tǒng)的初始化時(shí)完成的,如果RAM 29中沒有足夠的空間存放所有的塊日常區(qū)段數(shù)據(jù),控制器不太經(jīng)常訪問的數(shù)據(jù)會(huì)從RAM 29刪除,以利于要訪問的數(shù)據(jù)。由于控制器從其自己的RAM 29讀出這種數(shù)據(jù)比從非易失性存儲(chǔ)器塊中讀出要快得多,在控制器的存儲(chǔ)器中這種數(shù)據(jù)的“高速緩存”加速了訪問包含著用戶數(shù)據(jù)的非易失性存儲(chǔ)器塊的過程,因?yàn)槿粘?shù)據(jù)也必須訪問。
控制器11可以訪問許多用戶數(shù)據(jù)區(qū)段,以響應(yīng)來自主機(jī)系統(tǒng)的命令,命令中包含著一個(gè)地址,比如在磁盤驅(qū)動(dòng)器中以柱面/磁頭/扇區(qū)格式,或者是以邏輯塊的形式。然后控制器計(jì)算對(duì)應(yīng)于主機(jī)提供的起始區(qū)段地址的起始?jí)K邏輯地址。給定陣列芯片的存儲(chǔ)器系統(tǒng)地址空間可能表示為連續(xù)的邏輯塊地址(LBA),它以存放用戶數(shù)據(jù)的良好存儲(chǔ)器單位表示芯片上所有可用的塊。以相同的順序邏輯地安排塊日常記錄。然后控制器首先把對(duì)應(yīng)于主機(jī)指定的第一數(shù)據(jù)區(qū)段的塊日常記錄讀入其RAM 29,同時(shí)由用戶數(shù)據(jù)塊的LBA計(jì)算出在它存儲(chǔ)器陣列之內(nèi)的物理地址。訪問了第一個(gè)用戶數(shù)據(jù)塊及其日常信息之后,對(duì)地址為該具體文件中數(shù)據(jù)的每一個(gè)后續(xù)的塊,不需要再次計(jì)算邏輯塊地址。一個(gè)簡(jiǎn)單的計(jì)數(shù)器將在日常記錄中步進(jìn),這些記錄已經(jīng)以其對(duì)應(yīng)的用戶數(shù)據(jù)塊的順序安排好了。如果在這次訪問時(shí),控制器的RAM29中沒有所需的所有日常記錄,最好是首先把需要的日常數(shù)據(jù)區(qū)段從非易失性存儲(chǔ)器讀入RAM 29,包括替換塊的記錄,其地址包含在初始日常記錄中。
采用與塊分離的記錄來存放塊日常數(shù)據(jù)的一個(gè)優(yōu)點(diǎn),是減少了這種記錄必須重寫的次數(shù)。在本實(shí)施例中,數(shù)據(jù)的日常塊不需要經(jīng)常重寫,在存儲(chǔ)器系統(tǒng)的壽命期間可能只有兩三次,有時(shí)根本不必重寫。對(duì)于一個(gè)塊,日常信息記錄的任何改變,在重寫到保存該記錄的日常數(shù)據(jù)區(qū)段之前,都盡可能長(zhǎng)地保持在控制器的存儲(chǔ)器中,然后就可以在后臺(tái)完成,不必成為擦除或編程循環(huán)的一部分。但是,當(dāng)某塊的日常數(shù)據(jù)存放在該塊中時(shí),該塊每次擦除后日常數(shù)據(jù)都必須再次編程。在此處介紹的實(shí)例中,某塊中只存放了用戶數(shù)據(jù)的一個(gè)區(qū)段,用戶數(shù)據(jù)的一個(gè)區(qū)段每次寫入該存儲(chǔ)器塊時(shí),日常數(shù)據(jù)都不得不重寫入一塊中。這也可能需要日常信息兩次寫入同一塊,一次在寫用戶數(shù)據(jù)之前,一次在寫入之后,以便補(bǔ)償對(duì)相鄰單元編程的效應(yīng),尤其是當(dāng)多狀態(tài)編程時(shí),對(duì)這種效應(yīng)的容忍度較小。
盡管文中介紹的存儲(chǔ)器系統(tǒng)實(shí)例在每個(gè)個(gè)別的塊中只存放用戶數(shù)據(jù)的一個(gè)區(qū)段,本發(fā)明的許多方面同樣可以應(yīng)用于在存儲(chǔ)器單元陣列的各個(gè)塊中存放兩個(gè)或更多數(shù)據(jù)區(qū)段,每個(gè)都帶有其旗標(biāo)和ECC字節(jié)。
圖12提供的使用實(shí)例中,存儲(chǔ)器陣列芯片的各個(gè)塊具有八個(gè)塊單位。在每個(gè)單位的一個(gè)特定塊中,通常是第一塊,存放著同樣的啟動(dòng)信息。系統(tǒng)初始化時(shí),控制器的固件使單位0的第一塊讀出,但是如果該塊不可讀或者其存放的數(shù)據(jù)已被破壞,則訪問單位1的第一塊進(jìn)行讀取,依此類推,直到控制器讀出了有效的存儲(chǔ)器系統(tǒng)啟動(dòng)信息。然后它被存放在控制器的RAM 29中。也有許多保留塊,比如圖12中所示的保留塊0-7,其中存放著存儲(chǔ)器陣列芯片操作所需的數(shù)據(jù)。在不同于主拷貝的一個(gè)存儲(chǔ)器單位中,提供了每個(gè)保留塊中數(shù)據(jù)的一份拷貝,作為應(yīng)付有缺陷單位的保險(xiǎn)。每個(gè)保留塊的數(shù)據(jù)格式見圖4中的說明。
啟動(dòng)信息的一部分是保留塊0及其拷貝的物理地址,在一個(gè)特定的實(shí)例中,它包含著圖11中的壞列指針、任何不可用單位的標(biāo)識(shí)和物理映射特征,包括良好單位的哪些塊被保留、為用戶數(shù)據(jù)分配的塊、按照?qǐng)D8至圖10為日常數(shù)據(jù)(“O.H.數(shù)據(jù)”)分配的塊和為備用塊分配的塊。保留塊0也包含其存儲(chǔ)器陣列芯片具體的讀寫控制參數(shù)。
其它的保留區(qū)段包含的信息,對(duì)控制器操作這些區(qū)段所在的存儲(chǔ)器陣列芯片有用,或者對(duì)整個(gè)存儲(chǔ)器系統(tǒng)有用。例如,保留塊1可能包含只出現(xiàn)在系統(tǒng)的第一個(gè)邏輯存儲(chǔ)器陣列芯片上的系統(tǒng)參數(shù)的數(shù)據(jù),包括控制器與主機(jī)系統(tǒng)的數(shù)據(jù)接口13的指標(biāo)。另一個(gè)保留塊可能包含例如制造信息。制造過程的一部分,就是寫入在啟動(dòng)信息和保留塊中存放的數(shù)據(jù)。在制造后,這種數(shù)據(jù)可以變成可修改的,或者是一部分,或者是全部。
圖13展示了制造時(shí)配置過程中必需的一步??刂破?1從每個(gè)芯片的保留區(qū)段0讀出每個(gè)存儲(chǔ)器陣列芯片有關(guān)的數(shù)據(jù),并裝入圖14所示的一個(gè)公共文件,然后它又寫回存儲(chǔ)器系統(tǒng)第一個(gè)邏輯芯片17的保留區(qū)段2中。控制器的程序存儲(chǔ)器27(見圖1)中包括的固件可以提供這個(gè)過程。在系統(tǒng)配置期間調(diào)用這個(gè)固件例程后,從每個(gè)系統(tǒng)存儲(chǔ)器芯片讀出良好用戶數(shù)據(jù)塊數(shù)目的數(shù)據(jù)。然后該信息變成圖14中系統(tǒng)記錄的一部分。邏輯塊地址(LBA)的范圍也加入該記錄中,第一個(gè)邏輯存儲(chǔ)器芯片17的第一個(gè)用戶塊的地址分配為0000。作為記錄的一部分,也記錄了結(jié)尾的LBA,是起始LBA--0--加上第一個(gè)芯片上用戶數(shù)據(jù)塊的數(shù)目。下一個(gè)存儲(chǔ)器芯片19的邏輯存儲(chǔ)器空間要記住其良好用戶數(shù)據(jù)塊的數(shù)目和結(jié)尾的LBA,它比第一個(gè)存儲(chǔ)器芯片的結(jié)尾LBA加上第二個(gè)芯片上良好用戶數(shù)據(jù)塊的數(shù)目多1。這個(gè)過程繼續(xù)下去,直到對(duì)于所有存儲(chǔ)器陣列芯片完成圖14中的表。
在一個(gè)特定的實(shí)例中,對(duì)于系統(tǒng)中每個(gè)存儲(chǔ)器芯片,圖14的表中的入口包括一個(gè)字節(jié)的物理芯片號(hào)和三個(gè)字節(jié)用于LBA。這使得合并系統(tǒng)LBA表非常簡(jiǎn)短,訪問快捷。為響應(yīng)來自主機(jī)系統(tǒng)的一個(gè)地址,在訪問系統(tǒng)中一個(gè)具體的用戶數(shù)據(jù)塊時(shí),作為一個(gè)具體的實(shí)例,控制器11首先計(jì)算一個(gè)相應(yīng)的邏輯塊地址。然后,該LBA與第一個(gè)邏輯存儲(chǔ)器芯片17的保留塊2中的表(見圖14)進(jìn)行比較,以確定被尋址的塊在哪個(gè)芯片上。然后,從計(jì)算出的LBA減去前面剛剛過去的邏輯芯片的LBA。由控制器讀出指定芯片的保留區(qū)段1信息,把這個(gè)差異LBA移進(jìn)已經(jīng)指定用來存儲(chǔ)用戶數(shù)據(jù)的指定芯片一個(gè)相應(yīng)的塊,然后就計(jì)算出了該芯片上的物理塊地址。
除了存放良好單位數(shù)目的記錄和形成圖14中合并表的區(qū)段之外,每個(gè)存儲(chǔ)器陣列芯片還包括與其對(duì)應(yīng)的陣列有關(guān)的其它信息,控制器使用這些信息來操作它。這種其它信息也可以存放在每個(gè)芯片陣列的保留區(qū)段0中。本發(fā)明的另一個(gè)特性是,在一個(gè)系統(tǒng)中與一個(gè)公共控制器一起使用的多個(gè)陣列芯片,不需要每個(gè)都具有這些相同的特征??刂破?1最好把存放在各個(gè)芯片保留區(qū)段0中的這些特征讀入其RAM 29,再訪問該芯片。只要控制器的RAM 29足夠大,這項(xiàng)工作可以在存儲(chǔ)器系統(tǒng)初始化時(shí)進(jìn)行一次,然后在存儲(chǔ)器的操作期間從RAM訪問。另外,這種信息也可以恰好在每次訪問它之前從一個(gè)具體的芯片中讀出,然后只是在這次訪問期間才存放在RAM 29中。能夠利用具有不同操作特征的兩種或更多種芯片形成一個(gè)存儲(chǔ)器系統(tǒng),是一個(gè)顯著的優(yōu)點(diǎn)。因?yàn)椴煌幚砼?、不同車間、不同制造商的存儲(chǔ)器芯片能夠結(jié)合在一起運(yùn)行良好,這就極大地簡(jiǎn)化了制造過程。為了收集具有相同特征值的芯片而進(jìn)行的測(cè)試就不再必要了。
在存儲(chǔ)器芯片之間可能不同的這些特征,包括對(duì)芯片進(jìn)行編程、讀取、擦除、擦洗和刷新時(shí)所用的多種最優(yōu)電壓和計(jì)時(shí),以及容許的最大、最小值。編程脈沖的最優(yōu)數(shù)目、它們的延續(xù)時(shí)間、頻率和幅度,以及芯片上電壓泵源的操作特征,包括最大和最小值的范圍也可以包括在內(nèi)。每個(gè)單位的區(qū)段數(shù)目和控制器把邏輯塊地址轉(zhuǎn)換為具體芯片之內(nèi)物理地址所需的其它信息也可以存放。備用的單位和單位內(nèi)塊的指針也可以包括在內(nèi)。其它信息包括保留區(qū)段物理位置的指針,所以在系統(tǒng)的每個(gè)存儲(chǔ)器芯片中,它們不必全都存放在相同的塊中。每個(gè)日常塊(見圖8)中包括數(shù)據(jù)的用戶數(shù)據(jù)塊的數(shù)目也可以存放。在保留區(qū)段0中包括壞列指針(BCP)已經(jīng)介紹過了。對(duì)于不同的芯片電壓供應(yīng),比如3伏和5伏,某些特定的操作參數(shù)的復(fù)制集也可以包括在內(nèi)。然后,控制器能夠調(diào)整其訪問,以便與系統(tǒng)中每個(gè)芯片的特征相匹配。結(jié)果,就不必使這些特征相同。
對(duì)于圖15介紹了數(shù)據(jù)區(qū)段的旗標(biāo)字節(jié)145(見圖4)。在一個(gè)特定的實(shí)例中,該字節(jié)最重要的第0位和第1位給出了一個(gè)因子,該區(qū)段中隨后的所有位都用它進(jìn)行變換。在寫入過程期間,在區(qū)段的用戶數(shù)據(jù)讀入數(shù)據(jù)流101(見圖5)之前,這兩位最好是由微控制器23或固定的邏輯電路比如一個(gè)狀態(tài)機(jī)為每個(gè)數(shù)據(jù)區(qū)段隨機(jī)選擇的。另外,變換位也可以通過所有可能的組合按順序分配。這些變換位處于其余旗標(biāo)位的起點(diǎn),后者又插入數(shù)據(jù)流中,在用戶數(shù)據(jù)和ECC字節(jié)之前,這些數(shù)據(jù)和字節(jié)形成要存放的區(qū)段。對(duì)存放在閃存中的數(shù)據(jù)進(jìn)行這樣的變換,其目的在于使存儲(chǔ)器單元為相同的數(shù)據(jù)編程到不同的狀態(tài)。這就防止了在存儲(chǔ)器的壽命中可能發(fā)生的、存儲(chǔ)器各塊的不均衡損耗,比如當(dāng)基本相同的文件反復(fù)寫入相同組的塊時(shí)。當(dāng)讀取數(shù)據(jù)區(qū)段時(shí),首先讀出這些變換位,然后用于把從存儲(chǔ)器讀出的原始數(shù)據(jù)變換回存儲(chǔ)器為了存儲(chǔ)而最初收到的數(shù)據(jù)。兩個(gè)變換位用于四狀態(tài)存儲(chǔ)器操作,當(dāng)各個(gè)存儲(chǔ)器單元的存儲(chǔ)狀態(tài)數(shù)目變得更大時(shí),要用更多的位。不過,如果存儲(chǔ)器運(yùn)行在二狀態(tài)模式,就只用一個(gè)變換位。
圖16展示了在存入閃存之前,收到的數(shù)據(jù)變換過程的實(shí)例。這個(gè)過程可以主要由微控制器23在其固件的控制下執(zhí)行,或者可以使用加法器電路和相關(guān)的數(shù)字單元來執(zhí)行。來自緩沖區(qū)35的數(shù)據(jù)中的每個(gè)字節(jié),把它的位元分成四對(duì),每一對(duì)位元在相應(yīng)的加法器175-178中與保存在181的兩位變換因子(用于四狀態(tài)閃存)結(jié)合。然后,變換后的位元對(duì)再次結(jié)合成單一的字節(jié),用于多路轉(zhuǎn)接器183的一個(gè)輸入。這些變換位也用于在加法器185-187中對(duì)189表示的六個(gè)填充位進(jìn)行變換。變換位本身與變換后的填充位元對(duì)結(jié)合,形成一個(gè)數(shù)據(jù)區(qū)段的第一個(gè)字節(jié)145(見圖4),用于多路轉(zhuǎn)接器183的第二個(gè)輸入。然后,連線191中的控制信號(hào)使多路轉(zhuǎn)接器183切換到把數(shù)據(jù)字節(jié)連續(xù)地輸出到電路193,其中區(qū)段的第一個(gè)字節(jié)為圖15的形式,通過多路轉(zhuǎn)接器的1輸入收到,后續(xù)字節(jié)為變換后的數(shù)據(jù),通過0輸入收到,直到整個(gè)數(shù)據(jù)區(qū)段完成變換并送到閃存。進(jìn)行圖6中BCP處理和ECC生成的,正是這種變換后的數(shù)據(jù),而不是從主機(jī)收到原始數(shù)據(jù)。
當(dāng)數(shù)據(jù)區(qū)段從閃存讀出時(shí),進(jìn)行逆變換,如圖17所示。四個(gè)減法單元195-198接收數(shù)據(jù)字節(jié)的對(duì)應(yīng)位元對(duì),該字節(jié)是來自閃存,在路徑194中收到。用于這個(gè)具體的數(shù)據(jù)區(qū)段的兩個(gè)變換位存放在199處,它可能是一個(gè)寄存器。響應(yīng)連續(xù)191中接收第一個(gè)字節(jié)的控制信號(hào),把變換位——區(qū)段中收到的第一個(gè)字節(jié)的最初兩位——存放在199處。在減法單元195-198中,這兩位與收到的位元對(duì)中的每一個(gè)相結(jié)合,其方式為把它們變換回原來收到的數(shù)據(jù)。在最初兩位之后,區(qū)段數(shù)據(jù)的逆變換在這些變換位讀出后立即開始。在分別的操作中讀出變換位肯定沒有必要。第一個(gè)字節(jié)的其余6位由其三個(gè)位元對(duì)通過減法單元195-198中的三個(gè)立即變換,然后存放在201處,以響應(yīng)連線191中的控制信號(hào)。隨著每次一個(gè)地收到數(shù)據(jù)區(qū)段的后續(xù)字節(jié),數(shù)據(jù)字節(jié)進(jìn)行逆變換以及結(jié)果通過電路203輸出到緩沖區(qū)存儲(chǔ)器35時(shí),199和201處的內(nèi)容保持不變。然后,這種輸出數(shù)據(jù)就與存儲(chǔ)器系統(tǒng)最初收到并以變換后的形式存放的數(shù)據(jù)相同。
控制器使用圖15中展示的旗標(biāo)字節(jié)145的最低位4-7來確定某塊是否擦除。在存儲(chǔ)器系統(tǒng)的一個(gè)實(shí)例中,擦除后的狀態(tài)也是編程狀態(tài)之一,所以需要注意區(qū)別它們。在這種類型的系統(tǒng)中,如果需要確定某塊中的數(shù)據(jù)是否已擦除,那么,以數(shù)據(jù)的一位為樣本,舉例來說,本身不能提供答案。所以,在一個(gè)實(shí)例中,寫入數(shù)據(jù)區(qū)段第一個(gè)字節(jié)的填充位189(見圖16),或者是一個(gè)已知的固定模式,或者是使之成為確保這些位不完全等于已擦除狀態(tài)的數(shù)值的某種模式??刂破髯x出塊中的任何數(shù)據(jù)區(qū)段,并期望在該塊的相應(yīng)單元中存放的預(yù)擦除位173是否或者是填充位189固定數(shù)值,或者是至少它們中的一個(gè)(最好是更多)是某種不是已擦除狀態(tài)的編程狀態(tài),如果沒有已知模式的話。作為進(jìn)一步的檢驗(yàn),可以確定在數(shù)據(jù)區(qū)段中是否有ECC碼。如果確定了這些條件中的任何一個(gè)或二者都存在,結(jié)論就是該塊沒有擦除。但是,如果從旗標(biāo)字節(jié)的位元位置4-7讀出的數(shù)據(jù)位數(shù)值和/或ECC全都具有與已擦除狀態(tài)相等的數(shù)值,這就表明,該塊處于其已擦除狀態(tài)。
盡管已經(jīng)介紹了本發(fā)明多個(gè)方面的特定實(shí)例,應(yīng)當(dāng)理解,授權(quán)本發(fā)明受到附帶的權(quán)利要求書范圍之內(nèi)的保護(hù)。
權(quán)利要求
1.一種操作可重編程的非易失性存儲(chǔ)器系統(tǒng)的方法,該系統(tǒng)使其存儲(chǔ)器單元組織成可同時(shí)擦除單元的獨(dú)立塊,該方法包括識(shí)別所述塊的第一組和所述塊的第二組,第一組中的塊用于存放用戶數(shù)據(jù),第二組中的塊用于存放所述第一組塊的特征信息,在第一組所述塊的各塊中存放用戶數(shù)據(jù),不包括所述第一組塊的特征數(shù)據(jù),以及在第二組所述塊的各塊中存放第一組塊各塊的多個(gè)特征記錄,但是第二組的塊中不存放用戶數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的方法,其特征在于,在第二組所述塊的各塊中存放多個(gè)記錄,包括存放從寫入其中的記錄產(chǎn)生的冗余碼。
3.根據(jù)權(quán)利要求1的方法,其特征在于,在第二組的塊中分別存放第一組塊的多個(gè)特征記錄,包括存放第一組中對(duì)應(yīng)塊的編程和讀取特征。
4.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括從所述第二組的多個(gè)塊讀取記錄并把讀出的記錄存放在控制器的存儲(chǔ)器中,以及當(dāng)訪問一個(gè)或多個(gè)第一組的塊以編入用戶數(shù)據(jù)或者讀出用戶數(shù)據(jù)時(shí),從控制器的存儲(chǔ)器讀出其中存放的某些記錄,這些記錄包含著正在訪問的所述一個(gè)或多個(gè)第一組的塊的特征。
5.根據(jù)權(quán)利要求4的方法,其特征在于,在訪問第一組中一個(gè)或多個(gè)塊時(shí),要存放從所述第二組中相應(yīng)的塊中讀出的記錄,當(dāng)控制器存儲(chǔ)器的有限容量需要為此提供空間時(shí),從控制器存儲(chǔ)器中清除多個(gè)第二組塊的至少一塊的記錄,所述記錄從讀出算起已經(jīng)歷了最長(zhǎng)的時(shí)間。
6.根據(jù)權(quán)利要求4的方法,其特征在于,在訪問第一組中具有連續(xù)地址的多個(gè)塊時(shí),計(jì)算存放在控制器存儲(chǔ)器中、對(duì)應(yīng)于第一組塊之內(nèi)的第一個(gè)已編址塊的記錄的地址,在控制器存儲(chǔ)器中,對(duì)應(yīng)于第一組塊的多個(gè)其它被訪問塊的其余記錄的地址,則是從一個(gè)記錄的地址增加而獲得另一個(gè)。
7.根據(jù)權(quán)利要求1的方法,其特征在于,在第二組的塊中分別存放第一組塊的多個(gè)特征記錄,包括存放一個(gè)標(biāo)記,指明所述第一組內(nèi)一個(gè)對(duì)應(yīng)塊是否有缺陷,如果有,在第二組的塊中存放替換塊的地址,如果沒有,在第二組的塊中存放所述第一組內(nèi)對(duì)應(yīng)塊的操作特征。
8.根據(jù)權(quán)利要求7的方法,其特征在于,存放操作特征包括存放第一組中對(duì)應(yīng)塊的任何編程、讀取、擦除或損耗特征。
9.根據(jù)權(quán)利要求1的方法,其特征在于,在第二組的塊中分別存放第一組塊的多個(gè)特征記錄,包括存放標(biāo)記,指明延伸到所述第一組內(nèi)的對(duì)應(yīng)塊的任何壞列的位置。
10.根據(jù)權(quán)利要求9的方法,其特征在于,把用戶數(shù)據(jù)存入第一組塊的各塊和把塊特征記錄存入第二組的各塊,包括在對(duì)應(yīng)的塊中跳過任何壞列位置。
11.根據(jù)權(quán)利要求1、3或7中任何一個(gè)的方法,其特征在于,存入在第一組所述塊中各塊內(nèi)的用戶數(shù)據(jù)的特征,與這些特征相關(guān)的用戶數(shù)據(jù)一起附帶存放。
12.根據(jù)權(quán)利要求1、3或7中任何一個(gè)的方法,其特征在于,在能夠可拆卸地連接到主機(jī)系統(tǒng)的卡中封裝著存儲(chǔ)器系統(tǒng)時(shí),實(shí)行本方法。
13.根據(jù)權(quán)利要求1、3或7中任何一個(gè)的方法,其特征在于,至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以超過兩種存儲(chǔ)狀態(tài)運(yùn)行,以便每個(gè)存儲(chǔ)器單元存放超過一位的數(shù)據(jù)。
14.根據(jù)權(quán)利要求1、3或7中任何一個(gè)的方法,其特征在于,至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)運(yùn)行,以便每個(gè)存儲(chǔ)器單元存放恰好一位的數(shù)據(jù)。
15.一種操作可重編程的非易失性存儲(chǔ)器系統(tǒng)的方法,該系統(tǒng)使其存儲(chǔ)器單元組織成可同時(shí)擦除單元的獨(dú)立塊,該方法包括指定所述塊的第一組和所述塊的第二組,第一組中的塊用于存放用戶數(shù)據(jù),第二組中的塊用于存放所述第一組塊的特征信息,在第一組所述塊的各塊中存放用戶數(shù)據(jù)加寫入該處用戶數(shù)據(jù)的特征,但是不包括所述第一組塊的特征,以及在第二組所述塊的各塊中存放第一組塊各塊的多個(gè)特征記錄,但是第二組的塊中既不存放用戶數(shù)據(jù),也不存放用戶數(shù)據(jù)的特征。
16.根據(jù)權(quán)利要求15的方法,其特征在于,在第一組塊的各塊中存放用戶數(shù)據(jù)特征,包括存放從寫入其中的用戶數(shù)據(jù)產(chǎn)生的冗余碼。
17.根據(jù)權(quán)利要求15的方法,其特征在于,在第二組所述塊的各塊中存放多個(gè)記錄,包括存放從寫入其中的記錄產(chǎn)生的冗余碼。
18.根據(jù)權(quán)利要求15的方法,其特征在于,把用戶數(shù)據(jù)存入第一組所述塊的各塊中,包括同時(shí)把用戶數(shù)據(jù)寫入第一組塊的多個(gè)塊,直到第一組中多個(gè)塊的每一個(gè)都寫入了至少一個(gè)用戶數(shù)據(jù)區(qū)段,各個(gè)數(shù)據(jù)區(qū)段包括其用戶數(shù)據(jù)的至少一種特征。
19.根據(jù)權(quán)利要求18的方法,其特征在于,作為數(shù)據(jù)區(qū)段的一部分被包括的用戶數(shù)據(jù)的至少一個(gè)特征,包括用戶數(shù)據(jù)在數(shù)據(jù)流中傳遞到所述第一組之內(nèi)的所述各個(gè)塊時(shí)從用戶數(shù)據(jù)產(chǎn)生出的冗余碼,各個(gè)冗余碼附加在它們從中產(chǎn)生的用戶數(shù)據(jù)的尾部,以形成數(shù)據(jù)區(qū)段。
20.根據(jù)權(quán)利要求19的方法,其特征在于,在單一的電路中產(chǎn)生冗余碼,該電路用于第一組的所有多個(gè)塊,同時(shí)向它傳遞用戶數(shù)據(jù)。
21.根據(jù)權(quán)利要求18的方法,其特征在于,所述至少一種特征包括一位或多位,數(shù)據(jù)區(qū)段之內(nèi)的用戶數(shù)據(jù)由它來變換后再存放。
22.根據(jù)權(quán)利要求18的方法,其特征在于,所述至少一種特征包括變值的多位,它與用戶數(shù)據(jù)無關(guān),用于確定包括所述多位的數(shù)據(jù)區(qū)段是否存放在所述第一組之內(nèi)對(duì)應(yīng)的塊中。
23.根據(jù)權(quán)利要求15或18中任何一個(gè)的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放多于一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以多于兩種存儲(chǔ)狀態(tài)操作。
24.根據(jù)權(quán)利要求15或18中任何一個(gè)的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作。
25.一種管理非易失性閃存系統(tǒng)的方法,該系統(tǒng)使其存儲(chǔ)器單元組織成可同時(shí)擦除單元的獨(dú)立塊,該方法包括在所述塊的各塊中存放至少一個(gè)數(shù)據(jù)區(qū)段,包括用戶數(shù)據(jù)、從用戶數(shù)據(jù)產(chǎn)生的一個(gè)冗余碼和在區(qū)段起點(diǎn)的多個(gè)位元,它定義一個(gè)函數(shù),用戶數(shù)據(jù)和冗余碼由該函數(shù)變換后再存放,以及把所述塊中所述各塊的至少一種特征存放在至少一塊中,它不同于所述塊中所述各塊,所述至少一個(gè)其它塊存放多個(gè)存放著用戶數(shù)據(jù)的所述塊的所述至少一種特征。
26.根據(jù)權(quán)利要求25的方法,其特征在于,所述至少一種特征包括存放一個(gè)標(biāo)記,指明所述塊的所述各塊中對(duì)應(yīng)的一塊是否有缺陷,如果有,指明替換塊的地址,如果沒有,指明對(duì)應(yīng)塊的編程特征。
27.一種非易失性存儲(chǔ)器系統(tǒng),包括一個(gè)浮點(diǎn)門存儲(chǔ)器單元陣列,由能夠一起同時(shí)擦除的單元塊形成;第一組被指定來存放用戶數(shù)據(jù)的多個(gè)塊以及第二組被指定來分別存放第一組多個(gè)塊的特征記錄的多個(gè)塊,一個(gè)控制器存儲(chǔ)器,與浮點(diǎn)門存儲(chǔ)器單元的陣列相分離,其中暫時(shí)存放著來自塊的第二部分的至少某些記錄,所述控制器存儲(chǔ)器的特征在于其訪問時(shí)間比浮點(diǎn)門存儲(chǔ)器單元陣列快,以及一個(gè)控制器,適用于在主機(jī)和第一組的多個(gè)存儲(chǔ)器單元塊之間傳遞用戶數(shù)據(jù)區(qū)段,同時(shí)使用控制器存儲(chǔ)器中的記錄,這些記錄來自第二組的多個(gè)塊,對(duì)應(yīng)于用戶數(shù)據(jù)傳遞到的第一組的多個(gè)塊。
28.根據(jù)權(quán)利要求27的存儲(chǔ)器系統(tǒng),其特征在于,浮點(diǎn)門存儲(chǔ)器單元陣列和控制器封裝在一張卡中,該卡上具有的導(dǎo)電觸點(diǎn)與主機(jī)系統(tǒng)插槽上的導(dǎo)電觸點(diǎn)相匹配,從而能夠可拆卸地連接到主機(jī)。
29.根據(jù)權(quán)利要求27的存儲(chǔ)器系統(tǒng),其特征在于,浮點(diǎn)門存儲(chǔ)器單元陣列和控制器嵌入在一個(gè)包含主機(jī)系統(tǒng)的封裝中。
30.一種非易失性存儲(chǔ)器系統(tǒng),包括在至少兩個(gè)對(duì)應(yīng)的集成電路芯片上形成的至少兩個(gè)浮點(diǎn)門存儲(chǔ)器單元陣列,其特征在于,每個(gè)存儲(chǔ)器單元陣列的存儲(chǔ)器單元組合成許多塊,指定來分別存放給定量的用戶數(shù)據(jù),其特征還在于,在所述至少兩個(gè)存儲(chǔ)器單元陣列的各個(gè)陣列中,這種可用塊的數(shù)目不同,一個(gè)存儲(chǔ)器控制器,以及存放在存儲(chǔ)器系統(tǒng)中的記錄,它包含著每個(gè)存儲(chǔ)器單元陣列中各塊的非重疊邏輯地址分配,從而允許控制器由邏輯塊地址確定一個(gè)相應(yīng)的物理塊位于哪個(gè)存儲(chǔ)器陣列中。
31.根據(jù)權(quán)利要求30的存儲(chǔ)器系統(tǒng),其特征在于,邏輯地址分配記錄存放在所述至少兩個(gè)存儲(chǔ)器芯片的一個(gè)之內(nèi)。
32.根據(jù)權(quán)利要求30的存儲(chǔ)器系統(tǒng),其特征在于,所述至少兩個(gè)集成電路芯片和控制器位于一張封裝的存儲(chǔ)器卡之內(nèi),該卡上具有的導(dǎo)電觸點(diǎn)與主機(jī)系統(tǒng)插槽上的導(dǎo)電觸點(diǎn)相匹配,從而能夠可拆卸地連接到主機(jī)。
33.根據(jù)權(quán)利要求30的存儲(chǔ)器系統(tǒng),其特征在于,所述至少兩個(gè)集成電路芯片和控制器嵌入在一個(gè)主機(jī)系統(tǒng)之內(nèi)。
34.根據(jù)權(quán)利要求30的存儲(chǔ)器系統(tǒng),其特征在于,在所述至少兩個(gè)集成電路芯片的一個(gè)上形成控制器。
35.根據(jù)權(quán)利要求30的存儲(chǔ)器系統(tǒng),其特征在于,在沒有浮點(diǎn)門存儲(chǔ)器單元陣列并且是所述至少兩個(gè)集成電路芯片之外的一個(gè)集成電路芯片上形成控制器。
36.一種制造非易失性存儲(chǔ)器系統(tǒng)的方法,包括安裝并相互連接至少第一和第二集成電路芯片,它們分別包括一個(gè)非易失性浮點(diǎn)門存儲(chǔ)器單元的陣列,其中,所述至少第一和第二電路芯片分別包含至少許多塊的一個(gè)記錄存放其中,該記錄涉及其存儲(chǔ)器單元陣列用于存放用戶數(shù)據(jù)的容量,以及合并所述至少第一和第二電路芯片中每一個(gè)的存儲(chǔ)器陣列容量記錄,在所述第一電路芯片上形成一個(gè)合并記錄,對(duì)于至少第一和第二存儲(chǔ)器陣列芯片的每一個(gè),該記錄表示分配到存儲(chǔ)器單元陣列的邏輯塊地址的連續(xù)范圍。
37.根據(jù)權(quán)利要求36的方法,其特征在于,在所述至少第一和第二電路芯片之中,用于存放用戶數(shù)據(jù)的存儲(chǔ)器容量的塊數(shù)目不同。
38.根據(jù)權(quán)利要求36的方法,其特征在于,在所述至少第一和第二電路芯片之中,用于存放用戶數(shù)據(jù)的存儲(chǔ)器容量的塊數(shù)目相同。
39.根據(jù)權(quán)利要求36的方法,進(jìn)一步包括在一個(gè)封裝的存儲(chǔ)器卡之內(nèi),安裝所述至少第一和第二電路芯片,該卡上具有導(dǎo)電觸點(diǎn),用于與主機(jī)的插槽連接。
40.根據(jù)權(quán)利要求36的方法,進(jìn)一步包括在包含著主機(jī)系統(tǒng)的一個(gè)封裝之內(nèi),嵌入所述至少第一和第二電路芯片。
41.一種操作閃速EEPROM系統(tǒng)的方法,該系統(tǒng)使其存儲(chǔ)器單元組織成能夠存放給定容量數(shù)據(jù)的許多可同時(shí)擦除單元的獨(dú)立塊,該方法包括提供存儲(chǔ)器系統(tǒng),帶有一個(gè)控制器和多個(gè)所述存儲(chǔ)器單元的物理上獨(dú)立的陣列,分別組織成所述存儲(chǔ)器塊,在存儲(chǔ)器塊之一中存放一個(gè)記錄,該記錄包含著用于存放用戶數(shù)據(jù)的所述多個(gè)存儲(chǔ)器單元陣列的每一個(gè)中,可用塊的數(shù)目和分配到各個(gè)存儲(chǔ)器單元陣列的用戶數(shù)據(jù)塊所述數(shù)目的連續(xù)邏輯地址的非重疊范圍,以及至少部分地通過訪問帶有存儲(chǔ)器帶有邏輯塊地址的記錄,確定被尋址的存儲(chǔ)器單元塊在多個(gè)存儲(chǔ)器單元陣列的哪一個(gè)中,以定位一個(gè)存儲(chǔ)器單元塊的物理地址。
42.根據(jù)權(quán)利要求41的方法,其特征在于,在多個(gè)存儲(chǔ)器單元陣列的至少兩個(gè)之中,用于存放用戶數(shù)據(jù)的存儲(chǔ)器容量的塊數(shù)目不同。
43.根據(jù)權(quán)利要求41的方法,其特征在于,在多個(gè)存儲(chǔ)器單元陣列的每一個(gè)中,用于存放用戶數(shù)據(jù)的存儲(chǔ)器容量的塊數(shù)目相同。
44.根據(jù)權(quán)利要求41的方法,其特征在于,多個(gè)存儲(chǔ)器陣列封裝在一個(gè)存儲(chǔ)器卡內(nèi),該卡上具有導(dǎo)電觸點(diǎn),用于與主機(jī)的插槽連接。
45.根據(jù)權(quán)利要求41的方法,其特征在于,多個(gè)存儲(chǔ)器陣列嵌入在包含著主機(jī)系統(tǒng)的封裝之內(nèi)。
46.根據(jù)權(quán)利要求41的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放多于一位數(shù)據(jù),至少某些所述存儲(chǔ)器單元塊之內(nèi)的若干存儲(chǔ)器單元分別以多于兩種存儲(chǔ)狀態(tài)操作。
47.根據(jù)權(quán)利要求41的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),至少某些所述存儲(chǔ)器單元塊之內(nèi)的若干存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作。
48.一種操作可重編程的非易失性存儲(chǔ)器系統(tǒng)的方法,該系統(tǒng)使其浮點(diǎn)門存儲(chǔ)器單元組織成許多可同時(shí)擦除單元的獨(dú)立塊,能夠存放給定量的數(shù)據(jù),單元塊進(jìn)一步組織成多個(gè)單位,該方法包括接收和暫時(shí)存放要編入存儲(chǔ)器系統(tǒng)的、至少給定數(shù)目的用戶數(shù)據(jù)區(qū)段,把來自給定數(shù)目的暫時(shí)存放的用戶數(shù)據(jù)區(qū)段中每一區(qū)段的一個(gè)字節(jié)片的用戶數(shù)據(jù),同時(shí)編入與所述給定數(shù)目同樣多的不同存儲(chǔ)器單元單位的不同的存儲(chǔ)器單元塊中,每個(gè)字節(jié)片是一個(gè)用戶數(shù)據(jù)區(qū)段中等于或少于一半的一個(gè)片段,以及重復(fù)用戶數(shù)據(jù)字節(jié)片的同時(shí)編程,直到給定數(shù)目的暫時(shí)存放區(qū)段中每一個(gè)的所有數(shù)據(jù)都已經(jīng)編入給定數(shù)目的存儲(chǔ)器單元單位之內(nèi)的不同塊中。
49.根據(jù)權(quán)利要求48的方法,在數(shù)據(jù)字節(jié)片編入存儲(chǔ)器單元塊之前,進(jìn)一步包括從暫時(shí)存放的用戶數(shù)據(jù)的區(qū)段,按順序交替地每次傳遞一個(gè)字節(jié)片到與所述給定數(shù)目同樣多的多個(gè)存儲(chǔ)寄存器中,然后編程就包括并行地把存儲(chǔ)寄存器中存放的數(shù)據(jù)字節(jié)片傳遞到給定數(shù)目的單位之內(nèi)的存儲(chǔ)器單元塊中。
50.根據(jù)權(quán)利要求49的方法,其特征在于,接收和暫時(shí)存放給定數(shù)目的用戶數(shù)據(jù)區(qū)段中的每一區(qū)段之后,再開始向存儲(chǔ)寄存器傳遞其字節(jié)片。
51.根據(jù)權(quán)利要求49的方法,其特征在于,接收和暫時(shí)存放給定數(shù)目的用戶數(shù)據(jù)區(qū)段中每一區(qū)段的僅僅一部分之后,再開始向存儲(chǔ)寄存器傳遞其字節(jié)片。
52.根據(jù)權(quán)利要求49的方法,進(jìn)一步包括,在數(shù)據(jù)的各個(gè)字節(jié)片從暫時(shí)存儲(chǔ)傳遞到存儲(chǔ)寄存器時(shí),為給定數(shù)目的數(shù)據(jù)區(qū)段的每一區(qū)段產(chǎn)生一個(gè)冗余碼,包括對(duì)給定數(shù)目的用戶數(shù)據(jù)區(qū)段的每一區(qū)段使用一個(gè)公共生成電路,為給定數(shù)目的數(shù)據(jù)區(qū)段的每一區(qū)段在一個(gè)分離的碼寄存器中分開存放冗余碼生成的中間結(jié)果,以及把存放的、一個(gè)數(shù)據(jù)區(qū)段的中間結(jié)果與同一區(qū)段的一個(gè)新數(shù)據(jù)量相結(jié)合。
53.根據(jù)權(quán)利要求52的方法,進(jìn)一步包括,在傳遞到存儲(chǔ)寄存器的最后一個(gè)用戶數(shù)據(jù)字節(jié)片中包括為每個(gè)數(shù)據(jù)區(qū)段產(chǎn)生的冗余碼。
54.根據(jù)權(quán)利要求49的方法,進(jìn)一步包括,為多個(gè)存儲(chǔ)器單位中的每一個(gè)維持有缺陷列地址的一個(gè)表,把數(shù)據(jù)字節(jié)片的目的地地址與所述表中的列地址重復(fù)地進(jìn)行比較,并在字節(jié)片編入存儲(chǔ)器塊之前,把位元插入字節(jié)片,方式為插入的位元編入有缺陷列的存儲(chǔ)器單元中,以響應(yīng)肯定的比較結(jié)果。
55.根據(jù)權(quán)利要求49的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放多于一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以多于兩種存儲(chǔ)狀態(tài)操作。
56.根據(jù)權(quán)利要求49的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作。
57.一種操作可重編程的非易失性存儲(chǔ)器系統(tǒng)的方法,該系統(tǒng)使其浮點(diǎn)門存儲(chǔ)器單元組織成許多可同時(shí)擦除單元的獨(dú)立塊,能夠存放給定量的數(shù)據(jù),單元塊進(jìn)一步組織成多個(gè)單位,該方法包括接收和在一個(gè)緩沖區(qū)存儲(chǔ)器中暫時(shí)存放要編入存儲(chǔ)器系統(tǒng)的、至少給定數(shù)目的用戶數(shù)據(jù)區(qū)段,在一個(gè)流中,每次把數(shù)據(jù)從緩沖區(qū)中給定數(shù)目的用戶數(shù)據(jù)區(qū)段的一個(gè)移動(dòng)到給定數(shù)目的存儲(chǔ)寄存器的一個(gè),以及然后把用戶數(shù)據(jù)從給定數(shù)目的存儲(chǔ)寄存器并行地移動(dòng)到給定數(shù)目的存儲(chǔ)器單元塊的相應(yīng)塊中,這些單元塊位于給定數(shù)目的所述單位的不同單位之內(nèi)。
58.根據(jù)權(quán)利要求57的方法,其特征在于,把數(shù)據(jù)從存儲(chǔ)寄存器移動(dòng)到存儲(chǔ)器單元塊,包括移動(dòng)來自給定數(shù)目的寄存器中每一個(gè)的用戶數(shù)據(jù)區(qū)段的一個(gè)字節(jié)片,其中字節(jié)片中的數(shù)據(jù)量等于或少于區(qū)段中數(shù)據(jù)量的一半。
59.根據(jù)權(quán)利要求58的方法,其特征在于,把數(shù)據(jù)從緩沖區(qū)存儲(chǔ)器移動(dòng)到存儲(chǔ)寄存器,包括交替地每次移動(dòng)一個(gè)字節(jié)片,它來自緩沖區(qū)存儲(chǔ)器中存放的給定數(shù)目的用戶數(shù)據(jù)區(qū)段。
60.根據(jù)權(quán)利要求57的方法,其特征在于,把數(shù)據(jù)從存儲(chǔ)寄存器移動(dòng)到存儲(chǔ)器單元塊,包括移動(dòng)來自給定數(shù)目的寄存器中每一個(gè)的完整用戶數(shù)據(jù)區(qū)段。
61.根據(jù)權(quán)利要求60的方法,其特征在于,把數(shù)據(jù)從緩沖區(qū)存儲(chǔ)器移動(dòng)到存儲(chǔ)寄存器,包括按順序每次移動(dòng)來自一個(gè)區(qū)段的數(shù)據(jù),它來自緩沖區(qū)存儲(chǔ)器中存放的給定數(shù)目的用戶數(shù)據(jù)區(qū)段。
62.根據(jù)權(quán)利要求57的方法,進(jìn)一步包括,在開始移動(dòng)數(shù)據(jù)流之前,為每個(gè)用戶數(shù)據(jù)區(qū)段產(chǎn)生一個(gè)數(shù)據(jù)變換位域,并使用該位域來變換在流中移動(dòng)的用戶數(shù)據(jù),以及進(jìn)一步包括把產(chǎn)生的變換位域在起點(diǎn)處插入給定數(shù)目的用戶數(shù)據(jù)區(qū)段的每一個(gè)。
63.根據(jù)權(quán)利要求57的方法,其特征在于,在流中移動(dòng)數(shù)據(jù)包括從各個(gè)區(qū)段的用戶數(shù)據(jù)流產(chǎn)生一個(gè)冗余碼,并把產(chǎn)生的碼附加在產(chǎn)生冗余碼的用戶數(shù)據(jù)的尾部。
64.根據(jù)權(quán)利要求59的方法,其特征在于,在流中移動(dòng)數(shù)據(jù)包括從各個(gè)區(qū)段的用戶數(shù)據(jù)流產(chǎn)生一個(gè)冗余碼,并把產(chǎn)生的碼附加在產(chǎn)生冗余碼的用戶數(shù)據(jù)的尾部,冗余碼生成包括為給定數(shù)目的數(shù)據(jù)區(qū)段的每一區(qū)段在一個(gè)分離的碼寄存器中分開存放冗余碼生成的中間結(jié)果,以及把存放的、一個(gè)數(shù)據(jù)區(qū)段的中間結(jié)果與同一區(qū)段的一個(gè)新數(shù)據(jù)量相結(jié)合。
65.根據(jù)權(quán)利要求57的方法,其特征在于,在流中移動(dòng)數(shù)據(jù)包括把位元插入數(shù)據(jù)流中,該數(shù)據(jù)流要存儲(chǔ)在存儲(chǔ)器塊的任何有缺陷列的單元之內(nèi),插入的位元使用戶數(shù)據(jù)向后移動(dòng)。
66.根據(jù)權(quán)利要求59的方法,其特征在于,在流中移動(dòng)數(shù)據(jù)包括把位元插入數(shù)據(jù)流中,該數(shù)據(jù)流要存儲(chǔ)在存儲(chǔ)器塊的任何有缺陷列的單元之內(nèi),插入的位元使用戶數(shù)據(jù)向后移動(dòng),位元插入包括引用任何有缺陷列的地址,這些地址在來自存儲(chǔ)寄存器的數(shù)據(jù)要移入的給定數(shù)目的存儲(chǔ)器單元塊的每一塊之內(nèi)。
67.根據(jù)權(quán)利要求57-62中任何一個(gè)的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放多于一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以多于兩種存儲(chǔ)狀態(tài)操作。
68.根據(jù)權(quán)利要求57-62中任何一個(gè)的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),至少多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作。
69.根據(jù)權(quán)利要求57-62中任何一個(gè)的方法,其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),第一組多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作,并且其特征在于,為了在每個(gè)存儲(chǔ)器單元中存放恰好一位數(shù)據(jù),不同于所述第一組的第二組多個(gè)所述塊之內(nèi)的存儲(chǔ)器單元分別以恰好兩種存儲(chǔ)狀態(tài)操作。
70.根據(jù)權(quán)利要求57-62中任何一個(gè)的方法,其特征在于,在存儲(chǔ)器單元塊中存放的用戶數(shù)據(jù)區(qū)段不包括存放這些區(qū)段的存儲(chǔ)器單元塊的特征。
71.一種非易失性存儲(chǔ)器系統(tǒng),包括一個(gè)浮點(diǎn)門存儲(chǔ)器單元的陣列,由能夠一起同時(shí)擦除的單元塊形成,多個(gè)數(shù)據(jù)寄存器,第一數(shù)據(jù)傳遞電路,它在多個(gè)數(shù)據(jù)寄存器和存儲(chǔ)器單元陣列相應(yīng)的獨(dú)立塊之間并行地移動(dòng)數(shù)據(jù),一個(gè)緩沖區(qū)存儲(chǔ)器,能夠同時(shí)存放多個(gè)用戶數(shù)據(jù)區(qū)段,第二數(shù)據(jù)傳遞電路,它每次在緩沖區(qū)存儲(chǔ)器和一個(gè)數(shù)據(jù)寄存器之間的流中移動(dòng)用戶數(shù)據(jù),位于數(shù)據(jù)流路徑上的冗余碼電路,從數(shù)據(jù)流實(shí)時(shí)地產(chǎn)生冗余碼,以及位于數(shù)據(jù)流路徑上的缺陷列電路,調(diào)整流的長(zhǎng)度以避免存儲(chǔ)器單元陣列之內(nèi)的有缺陷列。
全文摘要
一種非易失性的存儲(chǔ)器系統(tǒng),由浮點(diǎn)門存儲(chǔ)器單元形成,這些單元安排在塊中,塊是可以一起擦除的最小的存儲(chǔ)器單元單位。該系統(tǒng)包括許多特性,它們可以各自實(shí)現(xiàn),也能夠以多種合作的組合來實(shí)現(xiàn)。一種特性是在分離的塊中存儲(chǔ)眾多單元塊的特征,用戶數(shù)據(jù)就是存放在這些單元中。按照另一種特性,用戶數(shù)據(jù)的多個(gè)區(qū)段由交替流動(dòng)的數(shù)據(jù)字節(jié)片從區(qū)段一次存到多個(gè)存儲(chǔ)器塊。流中的數(shù)據(jù)字節(jié)可以移動(dòng),以避免存儲(chǔ)器中有缺陷的位置,比如壞列。對(duì)于具有多個(gè)存儲(chǔ)器集成電路芯片的存儲(chǔ)器系統(tǒng),再另一種特性提供了單一的系統(tǒng)記錄,它包括每一個(gè)芯片的容量和在芯片之內(nèi)為用戶數(shù)據(jù)塊分配的連續(xù)邏輯地址范圍,當(dāng)尋址到某塊時(shí),存儲(chǔ)器控制器要訪問這些芯片,在存儲(chǔ)器芯片具有不同的容量時(shí),這就使制造存儲(chǔ)器系統(tǒng)更加容易。
文檔編號(hào)G06F12/00GK1437721SQ01806804
公開日2003年8月20日 申請(qǐng)日期2001年2月13日 優(yōu)先權(quán)日2000年2月17日
發(fā)明者凱文·M·康利, 約翰·S·曼根, 杰弗里·G·克雷格 申請(qǐng)人:三因迪斯克公司