專利名稱:帶有耐用轉(zhuǎn)換層及臨時文件轉(zhuǎn)移功能從而實現(xiàn)閃速存儲器磨損降低的超耐用固態(tài)驅(qū)動器的制作方法
技術(shù)領(lǐng)域:
[第6段]本發(fā)明與閃速存儲器驅(qū)動器有關(guān),尤其與閃速存儲器驅(qū)動器的持久性增加和壽命延長有關(guān)。
背景技術(shù):
[第7段]閃速存儲器廣泛用于計算機系統(tǒng)中的外圍存儲,甚至用于便攜式設(shè)備的主存儲。1987年,東芝公司的Fujio Masuoka博士發(fā)明了 NAND閃速存儲器。閃速存儲器采用將電荷存儲在浮置柵極上的電可擦可編程只讀存儲器(EEPROM)單元。存儲器單元通常由雪崩電流編程,然后利用量子力學中的穿隧(穿過薄薄的氧化層)效應而被擦除。不幸的是,在編程或擦除的過程中,一些電子可能被困在薄薄的氧化層中。在隨后的編程周期中,這些被困的電子將減少單元中存儲的電荷,假設(shè)一個恒定的編程電壓。通常情況下,升高編程電壓以補償受困電子。[第8段]由于閃速存儲器的密度和尺寸的增加,存儲單元的大小收縮。包括穿隧氧化層在內(nèi)的氧化物的厚度也有所降低。氧化物越薄,電荷越容易被俘獲,有時也越容易出現(xiàn)故障。NAND閃速存儲器的浮置柵極用來俘獲電子。浮置柵極中的電子的數(shù)量,可能會影響輸出的電壓電平。通過控制寫入過程中受困于耗盡層的電子的數(shù)目可以得到不同的電壓電平。更小的浮置柵極區(qū)域往往限制可被捕獲的電子(現(xiàn)在只有幾百個電子)的最大數(shù)量。由于編程/讀取干擾,電子可能泄漏到浮置柵極或被浮置柵極捕獲。電子數(shù)的變化會影響到電壓輸出電平的變化,進而改變讀取結(jié)果。[第9段]閃速存儲器能夠承受的編程-擦除周期的數(shù)量約為10萬次,這使得正常讀寫條件下的較長使用壽命成為可能。然而,令人苦惱的是,較小的閃速存儲器單元已經(jīng)經(jīng)歷更嚴重的磨損,對于兩層單元,較新的閃速存儲器可以承受少于I萬次編程-擦除周期,而對于三層單元(TLC)而言,較新的閃速存儲器可以承受大約600次編程-擦除周期。如果目前的趨勢繼續(xù)下去,未來的閃速存儲器可能只允許300次編程-擦除周期。如此低的持久性可能會嚴重限制閃速存儲器的應用,并對固態(tài)磁盤的應用產(chǎn)生嚴重影響。[第10段]增加閃速存儲器的密度的方法之一就是將使每個存儲單元存儲一個以上的位。存儲單元的不同電壓電平被分配給不同的多位值,如給一個二位的單元分配四個電壓范圍。然而,雖然多層單元(MLC)和三層單元(TLC)閃速存儲器技術(shù)的噪聲容限降低了,但持久性的問題卻加劇。[第11段]預計未來,底層閃速存儲器技術(shù)的持久性將越來越低。通過各種技術(shù),閃速存儲器驅(qū)動器可以補償?shù)讓娱W速存儲器較低的耐磨損性。例如,閃速存儲器驅(qū)動器上用于數(shù)據(jù)存儲的動態(tài)隨機存儲(DRAM)緩沖區(qū)可以充當回寫高速緩存,在主機對相同的數(shù)據(jù)位置執(zhí)行寫入操作時,減少寫入底層閃速存儲器的次數(shù)。[第12段]我們期望的閃速存儲器驅(qū)動器能夠克服底層閃速存儲器裝置較低的磨損持久性這個問題。我們希望的超級持久性閃速存儲器驅(qū)動器采用一系列先進的管理技術(shù),這些管理技術(shù)使得到達閃速存儲器的寫入數(shù)量減少,從而減少底層閃速存儲器上編程-擦除周期的數(shù)量。我們期望從低持久性閃速存儲器構(gòu)造出一個超耐用的閃速存儲器驅(qū)動器。
[第13段]圖1是使用低持久性閃速存儲器的超耐用閃速存儲器驅(qū)動器的方框圖。[第14段]圖2A-C強調(diào)臨時文件的單獨管理,以避免將臨時文件寫入閃速存儲器。[第15段]圖3為內(nèi)存印象圖,展現(xiàn)了將各種類型的數(shù)據(jù)存儲在智能存儲交換機(SSS) DRAM緩沖器中的耐用轉(zhuǎn)換層(ETL)。[第16段]圖4A-B為使用持久性備用與交換塊塊的過度寫入的部分塊。[第17段]圖5是塊映射、頁面映射和扇區(qū)映射。[第18段]圖6顯示了超耐用閃速存儲器驅(qū)動器中對不同的數(shù)據(jù)類型的映射條目。[第19段]圖7顯示了使用統(tǒng)一映射表和子扇區(qū)映射表的分頁文件的完整頁映射和部分頁映射。[第20段]圖8顯不了統(tǒng)一映射表中的文件分配表(FAT)映射。[第21段]圖9A顯示了壓縮頁面的映射。[第22段]圖9B強調(diào)DRAM緩沖器中用戶數(shù)據(jù)的數(shù)據(jù)流。[第23段]圖9C強調(diào)DRAM緩沖器中頁面文件和臨時文件的數(shù)據(jù)流。[第24段]圖10是一個根據(jù)主機請求對數(shù)據(jù)類型進行分類,以及對用戶數(shù)據(jù)過程的頁面文件、臨時文件、FAT、文件描述塊(FDB )等文件進行調(diào)度的流程圖。[第25段]圖11示顯示了一個讀取頁面文件、臨時文件或FDB文件的過程。[第26段]圖12A-C顯示一個用來寫入頁面文件、臨時文件或FDB文件的過程。[第27段]圖13A-B顯示了通往超耐用閃速存儲器驅(qū)動器的一個FAT通路。
[第28段]圖14顯示了超耐用閃速存儲器驅(qū)動器如何處理主機讀取的用戶數(shù)據(jù)文件。[第29段]圖15A-1顯示了超耐用閃速存儲器驅(qū)動器如何處理主機在頻繁訪問區(qū)和非頻繁訪問區(qū)寫入的用戶數(shù)據(jù)文件。[第30段]圖16是一個顯示舊扇區(qū)清理過程的流程圖。[第31段]圖17A-E是使用完整頁和部分頁的頻繁訪問(FA)高速緩存和非頻繁訪問(NFA)高速緩存進行用戶數(shù)據(jù)處理的流程圖。[第32段]圖18A-B顯示了加密頁面和壓縮頁面的處理。[第33段]圖19A-D顯示了不良頁面和壞塊的檢測和處理過程。[第34段]圖20A-C顯示了對映射表和其他DRAM區(qū)域進行初始化的上電過程。[第35段]圖21為斷電過程的流程圖。[第36段]圖22A-B顯示了多級錯誤糾正碼(ECC)讀取程序。[第37段]圖23A-B顯示了簡化的多級ECC讀取程序。[第38段]圖24A-B顯不了參考電壓偏移程序。[第39段]圖25顯示了數(shù)據(jù)如何寫入到保護條件提高的閃速存儲器中。 發(fā)明內(nèi)容詳細說明[第40段]本發(fā)明與閃速存儲器驅(qū)動器的持久性改進有關(guān)。通過給出下文的描述,旨在使本領(lǐng)域中的普通技術(shù)人員在特定應用及其要求下能夠制造和使用本發(fā)明。對優(yōu)選實施例的各種修改對于那些本領(lǐng)域技術(shù)人員將是顯而易見的,并且本文所定義的一般原則可以應用到其他實施例中。因此,本發(fā)明不限于展示的和描述的特定實施例,而是應被賦予與本文公開的原理和新穎性特征相一致的最寬范圍。[第41段]通過阻止不必要的閃速存儲器寫入可減少底層閃速存儲器設(shè)備的磨損。閃速存儲器驅(qū)動器中的DRAM緩沖器可以存儲那些并不需要永久存儲而因此并不需要被寫入到閃速存儲器的數(shù)據(jù)。DRAM不僅更快,還可以多寫超過一百萬次。1966年,DRAM由IBM的羅伯特 登納德發(fā)明。在用戶上網(wǎng)瀏覽或運行某些冗長的應用程序的時候,典型的主機會創(chuàng)建很多不重要的臨時文件。發(fā)明人意識到,這些文件不需要被寫入閃速存儲器,以減少閃速存儲器的磨損度。[第42段]一個典型的系統(tǒng)也會頻繁覆蓋某些類型的數(shù)據(jù)。這些被頻繁覆蓋的數(shù)據(jù)最好存儲在閃速存儲器驅(qū)動器的DRAM的緩沖器中,并根據(jù)一項規(guī)則(如基于流逝的時間,分配的容量等)或者根據(jù)斷電或電源故障復制到閃速存儲器。在掉電的時候,將這些被頻繁覆蓋的數(shù)據(jù)存儲到閃速存儲器也可以顯著減少閃速存儲器設(shè)備的磨損。[第43段]這些被頻繁覆蓋的數(shù)據(jù)可能包括隨著新事件的出現(xiàn)而頻繁更新的日志文件。通常,在系統(tǒng)崩潰后,最新的副本得到檢查。文件分配表(FAT)是另一個被頻繁覆蓋的位置,因為這個位置會隨著文件創(chuàng)建或擴展而得到更新。FAT是一個相對較小的內(nèi)存部分,但是如果FAT的每一個更新都被復制到閃速存儲器,其頻繁的訪問可以顯著增加閃速存儲器的磨損。文件描述塊(FDB)是一個被頻繁覆蓋的類似結(jié)構(gòu)。FDB/FAT保留來自主機的文件系統(tǒng)的元數(shù)據(jù)。將各種表格和DRAM緩沖器一起使用,創(chuàng)建元數(shù)據(jù),將“文件系統(tǒng)”存儲到DRAM和閃速存儲器。如果某個邏輯地址(LBA)出現(xiàn)地址未對齊的情況,在旨在提高寫入效率從而方便未來訪問而向FAT區(qū)域中的FAT/子映射表或FDB區(qū)域中的FDB/子映射表中寫入之前,邏輯塊地址被添加到一個偏移量,使邏輯塊地址與閃速存儲器中的頁地址邊界對齊。[第44段]需要根據(jù)規(guī)則(如基于流逝的時間,分配的容量等)或在斷電狀態(tài)/電能損耗的時候,將壞塊表、擦除計數(shù)器、垃圾收集、映射表和閃速存儲器驅(qū)動器產(chǎn)生的其他文件存儲到閃速存儲器。也可以根據(jù)規(guī)則(如基于流逝的時間,分配的容量等)或在斷電狀態(tài)/電能損耗的時候,將閃速存儲器系統(tǒng)元文件存儲進DRAM緩沖器并復制到閃速存儲器,以減少閃速存儲器磨損。上面提到的表格和元文件是在通電的條件下被存儲進閃速存儲器的。設(shè)備初始化的時候,它們被加載到DRAM的緩沖器。隨后,主機數(shù)據(jù)的讀/寫改變了這些數(shù)據(jù)的內(nèi)容。當出現(xiàn)斷電/電能損耗的情況時,那些無效的表格和元文件需要被寫入或備份到條帶單元里的閃速存儲器中。在電源故障的時候,寫入緩存、FIFO緩沖器、數(shù)據(jù)輸入緩沖區(qū)(DIB)、持久性備用/交換塊(SPARE/SWAP塊)以及其他閃速存儲器驅(qū)動器緩沖器的主機數(shù)據(jù)也可以復制到閃速存儲器,以便于系統(tǒng)恢復,如果某個特定應用需要一個確切的系統(tǒng)恢復點的話。[第45段]另一種方法是確保DRAM的ETL中的有關(guān)數(shù)據(jù)被復制到MLC。在關(guān)閉電源的情況下,ETL中的有效數(shù)據(jù)副本可以保存在MLC里。在通上電時,ETL中的數(shù)據(jù)可以從MLC重新加載到DRAM。通過記錄差異,可以修改拷貝的方法,從而減少復制的數(shù)據(jù)的數(shù)量,減少向MLC寫入數(shù)據(jù)。[第46段]DRAM緩沖器的ETL里的部分映射表只有I組映射表的條目(共有N組映射表)。其他的N-1組映射表則存儲在閃速存儲器,在部分映射表發(fā)生遺漏的時候,它們才會被送至DRAM緩沖器。[第47段]當主機的主要DRAM內(nèi)存的圖像通常習慣上被移到硬盤或閃速存儲器驅(qū)動器上的時候,系統(tǒng)為了內(nèi)存管理要使用頁面文件。如果因為電源故障而導致頁面交換文件丟失,也沒有太大關(guān)系,因為反正需要重新啟動系統(tǒng),重新初始化內(nèi)存管理和分頁系統(tǒng),刪除任何存儲的頁面文件。在電源關(guān)閉/電能損耗的時候,為了減少閃速存儲器磨損,這些頁面文件也可以存儲在DRAM緩沖器中,而并不一定要復制到閃速存儲器中。[第48段]主機向閃速存儲器驅(qū)動器發(fā)出請求時,往往遵循數(shù)據(jù)類型的規(guī)則序列。例如,主機可以首先訪問FAT,然后訪問FDB,接著讀取或?qū)懭肽硞€數(shù)據(jù)文件。這種循環(huán)序列可以幫助一個超持久性的閃速存儲器驅(qū)動器對數(shù)據(jù)類型進行分類。FAT總是在一個預先確定的依賴于OS的類型(Windows、Linux、蘋果0S、Android設(shè)備等)的存儲位置。因此,對此范圍內(nèi)的地址的訪問屬于FAT類型的訪問。FAT訪問后是FDB訪問。接下來訪問的是用戶數(shù)據(jù)。因此,用戶數(shù)據(jù)可以被標識為緊隨FAT和FDB訪問之后。超耐用的閃速存儲器驅(qū)動器對FDB進行檢查,找到文件擴展名,因此可以以不同于用戶數(shù)據(jù)文件的方式來檢測和處理臨時文件。[第49段]每種類型的文件都可以造成閃速存儲器驅(qū)動器的閃速存儲器磨損。無論什么系統(tǒng)都會平等對待所有的數(shù)據(jù)。所有東西都被寫入閃速存儲器,至少在其進入DRAM緩沖器的時候,被另一段來自主機的、具有相同緩存索引的數(shù)據(jù)逐出DRAM緩沖器時是如此的。通過識別數(shù)據(jù)類型及其對主機的意圖,然后只把正常操作期間的實際的用戶數(shù)據(jù)寫入到閃速存儲器,只將關(guān)鍵數(shù)據(jù)寫入閃速存儲器,然后按照電源故障的規(guī)則操作,這樣可以顯著降低閃速存儲器的寫入。
[第50段]通過壓縮數(shù)據(jù)可以進一步減少閃速存儲器磨損。例如,閃速存儲器中不到一整頁的數(shù)據(jù)(部分頁數(shù)據(jù))可以和其他部分頁數(shù)據(jù)一起存放在閃速存儲器中的單個頁面中,而不是將部分頁數(shù)據(jù)分別存在許多單獨的頁面中。還有一些數(shù)據(jù)文件非常小,只有一個扇區(qū)或小于一個扇區(qū)。這些局部扇區(qū)文件,也可以放在一起。如果閃速存儲器容量和密度增加,頁面的大小也會增加。例如,一個閃速存儲器頁面可能是16個扇區(qū),每扇區(qū)512字節(jié),也可能是8KB。但是因為許多主機文件都非常小,小的數(shù)據(jù)文件(如只有1KB)存儲在單獨的閃速存儲器頁面中,將浪費大量的空間。將這些部分頁面文件放在一起,可以提高效率,并最終降低閃速存儲器的磨損。即使是一個大的文件,該文件的最后一頁可能會和小文件一樣小,從而浪費了大量的空間。[第51段]和閃速存儲器頁面對齊相比,由于在不同時間在同一閃速存儲器頁面上的兩種不同寫入,來自主機的群集不對齊會造成不必要的寫入放大。此外,一次寫入就占用一個閃速存儲器頁面,這可能會導致兩頁閃速存儲器被寫入。通過檢查FATl表的起始地址,可以解決這一點。如果出現(xiàn)閃速存儲器頁界不對齊,向FATl起始地址之后的所有的LBA地址加入一個偏移量以降低寫入放大的影響,就可以實現(xiàn)對齊調(diào)整。[第52段]在一個不利的環(huán)境中,DRAM緩沖器中可能存在軟件錯誤??梢允褂靡粋€額外的超容量對DRAM進行ECC奇偶校驗,以增加可靠性。[第53段]雖然使用單一的技術(shù)來減少閃速存儲器的磨損,可能帶來各種改進,但如果同時使用這些技術(shù),閃速存儲器的持久性就可能大大增加。使用這些技術(shù),超耐用閃速存儲器驅(qū)動器這個目標可能得以實現(xiàn)。[第54段]圖1是使用低持久性閃速存儲器的超耐用閃速存儲器驅(qū)動器的方框圖。主機100有一個執(zhí)行程序指令和操作系統(tǒng)(OS)(如Windows、Linux、蘋果OS、或Android等)指令的處理器。處理器的主存儲器位于主機DRAMlO中,主機DRAMlO還存儲用于文件系統(tǒng)控制的數(shù)據(jù)和用于頁面交換的頁面文件,它們是內(nèi)存管理的一部分。當主電源發(fā)生故障時,備用電源41為主機100提供電源,使在出現(xiàn)電源故障的時候,主機100能夠?qū)碜灾鳈CDRAMlO的關(guān)鍵數(shù)據(jù)發(fā)送至固態(tài)驅(qū)動器(SSD) 102或硬盤。備用電源41能夠使用電池或不間斷電源(UPS)等。這讓主機的CPU有時間關(guān)閉應用程序,關(guān)閉連接的設(shè)備。SSD102有自己的備用電源42,在主電源出現(xiàn)故障時,讓SSD102將關(guān)鍵數(shù)據(jù)寫入閃速存儲器30。備用電源42可以利用電容器、超級電容器或電池。[第55段]增強型超級持久性設(shè)備(SEED)11是主機DRAMlO中的一個應用和存儲。SEEDll可用來緩解SSD102的負擔。首先,SEEDll可以分離和/或存儲那些并不需要永久存儲在SSD102的數(shù)據(jù),如臨時文件,頁面文件等。如果SSD102的SSS DRAM緩沖器20足夠大,它的一部分可以被分割為一個可以由SEEDll直接訪問的驅(qū)動器。第二,SEEDll可以使用主機的CPU來執(zhí)行任務,例如壓縮/解壓縮,加密/解密。第三,SEEDll可以支持數(shù)據(jù)寫入高速緩存,管理寫入到SSD102的頁面數(shù)據(jù)。SEEDll可以生成軟件ECC或低密度奇偶校驗碼(LDPC),便于將頁數(shù)據(jù)寫入SSD102。第四,SEEDll可支持在主機100的電源打開/關(guān)閉時,自動載入/復制條帶單元中的SEEDll的圖像。[第56段]SSD102有主機I/F16接口,該接口使用總線,如PCIe、SATA、或通用串行總線(USB)、Thunderbolt、eMMC、ISSD等與主機100相連。來自主機I/F16接口的主機數(shù)據(jù)被發(fā)送到智能存儲交換機(SSS)控制器40。SSS控制器40執(zhí)行各種功能,以減少閃速存儲器30的磨損,例如,把來自主機100的臨時文件存儲在SSS DRAM緩沖器20中,而不是存儲在閃速存儲器30中。其它類型的數(shù)據(jù),如來自主機100的頁面文件會被緩存在SSSDRAM緩沖器20中,但如果SSS DRAM緩沖器20沒有額外的空間,基于服務器系統(tǒng)的申請,舊的頁面文件會被擲入閃速存儲器30。同樣,SSD102的閃速存儲器文件系統(tǒng)緩存在SSSDRAM緩沖器20中,但卻保存在閃速存儲器30中。各種表格和緩沖器存儲在SSS DRAM緩沖器20中,備用交換管理表或文件也是如此。SSS DRAM緩沖器20中的這些表格可能是保存在閃速存儲器30中的較大的表格的高速緩存,例如系統(tǒng)和壞塊表,邏輯地址-物理地址的映射表,或其他種映射或系統(tǒng)表。由于閃速存儲器30的各部分將隨著時間的推移而逐漸磨損,因而閃速存儲器30要有超容量。SSS DRAM緩沖器20中的備用與交換塊區(qū)域為閃速存儲器30提供超容量。[第57段]DRAMI/F12接口將數(shù)據(jù)讀取和寫入SSS DRAM緩沖器20,多通道閃速存儲器I/F14接口被組織成若干個通道,對數(shù)據(jù)頁進行編程并擦除閃速存儲器30中的塊。本機命令隊列(NCQ)管理器34可對來自主機100的主機命令重新排序,并管理通過主機I/F16接口接收的主機命令隊列。NCQ管理器34將主機命令輸入命令隊列,在命令隊列中寫入得到重新排序和組合,減少了閃速存儲器30的寫入。[第58段]臨時文件管理器44識別來自主機100的臨時文件,如通過讀取FDB中的寫入的主機數(shù)據(jù)的文件擴展名。臨時數(shù)據(jù)(具有tmp、temp等文件擴展名)被存儲在SSSDRAM緩沖器20,被禁止存入閃速存儲器30中??梢愿鶕?jù)相關(guān)規(guī)則,如基于消逝的時間、分配給臨時數(shù)據(jù)的容量等、或電源關(guān)閉/電能損耗,將臨時數(shù)據(jù)丟棄。[第59段]獨立磁盤冗余陣列(RAID)控制器36將新數(shù)據(jù)寫入閃速存儲器30的多個通道,還可以通過復制數(shù)據(jù)來提供冗余備份和數(shù)據(jù)恢復。ECC管理器28用于產(chǎn)生錯誤糾正碼,將其加入寫入數(shù)據(jù)中,并通過將存儲的ECC與重新生成的ECC相比較,來檢測和糾正讀取方面的錯誤。它還負責管理需要額外ECC保護的閃速存儲器頁面。它為這些頁面生成ECC,然后在需要時,管理ECC數(shù)據(jù)的存儲和檢索。壞塊管理器38跟蹤壞塊在閃速存儲器30中的位置,并且可以進一步識別寫入局部壞塊的不良頁面。這樣能夠延長單個塊的壽命,因為塊中可能僅有一個頁面中是壞的,而其他的頁面可繼續(xù)使用。更復雜的壞塊管理可能會降低閃速存儲器驅(qū)動器的整體磨損。[第60段]磨損測量器24提供了兩種類型的損耗均衡法。一種是從可用的空塊中動態(tài)地選擇最低平均擦寫次數(shù)塊寫入數(shù)據(jù);另一種方法則基于平均擦寫次數(shù)臨界值標準,一旦達到這個臨界值,閃速存儲器數(shù)據(jù)塊從一個物理塊(具有低平均擦寫次數(shù))被移動到閃速存儲器30中的另一個物理塊(具有高平均擦寫次數(shù))。對表格管理器32所管理的映射表中的邏輯地址-物理地址的映射進行更新。表格管理器32還跟蹤存儲在每個邏輯塊中的數(shù)據(jù)的類型,這樣臨時文件、頁面文件、FAT、FDB和用戶數(shù)據(jù)文件一旦得到識別和分類也就得到了表格管理器32的跟蹤。[第61段]部分頁的數(shù)據(jù)通過頁面組合管理器22組合在一起裝入閃速存儲器頁面。扇區(qū)組合管理器18將部分扇區(qū)數(shù)據(jù)集合在一起。將部分頁和部分扇區(qū)集合起來能夠提高工作效率,減少磨損。在被復制到閃速存儲器30之前,部分頁和部分扇區(qū)數(shù)據(jù)可裝在一起并在SSS DRAM緩沖器20中緩沖一段時間。把部分數(shù)據(jù)集合為整頁數(shù)據(jù),可以減少寫入閃速存儲器的次數(shù)。
[第62段]可以對數(shù)據(jù)進行壓縮和/或加密。壓縮映射管理器26映射壓縮數(shù)據(jù)塊的位置,對數(shù)據(jù)進行壓縮或?qū)懭?、對讀出的數(shù)據(jù)進行解壓。加密引擎46對寫入的數(shù)據(jù)進行加密,對讀出的數(shù)據(jù)進行解密。[第63段]TRM管理器23處理主機100上的文件系統(tǒng)或操作系統(tǒng)的TRM命令。TRIM命令表示主機不再需要某個扇區(qū),可以將其清除或擦除。修整后的頁面在“頁面狀態(tài)表”被記錄為“已刪除”;后臺垃圾回收時,如果該塊被確定為擦除候選對象,這個頁便不會被復制到新塊上,這時才真正執(zhí)行了 TRM命令。TRM管理器23執(zhí)行內(nèi)部整理自檢,如跟蹤塊中哪些扇區(qū)和頁面不再需要。垃圾收集器也可用于跟蹤那些即將被擦除的塊。一旦不再需要某個完整的塊,TRIM管理器23啟動垃圾收集器或其他擦除機制擦除該塊上的數(shù)據(jù),使該塊可以被重新使用。[第64段]S.M.A.R.T.功能39處理來自主機100的S.M.A.R.T.命令或供應商命令,如監(jiān)視和控制數(shù)據(jù)糾正、磨損、壞塊和其他閃速存儲器管理。S.M.A.R.T.是指自我監(jiān)控、分析和報告技術(shù)。主機可以使用S.M.A.R.T.命令的設(shè)置對來自SSD設(shè)備的一些重要數(shù)據(jù)如開機時間、平均擦寫次數(shù)等進行監(jiān)控。主機可以使用這些數(shù)據(jù)來診斷和確定SSD的壽命。在SSD驅(qū)動器報廢之前,主機可以將其更換。在RAID中,主機可以使用S.M.A.R.T.命令來回避更昂貴的RAID5配置。功能管理器48可以包含很多主機可以打開或關(guān)閉的功能,如壓縮、加密和組合等。功能管理器48負責與主機100通信,管理SSS DRAM緩沖器20的使用,執(zhí)行其它功能,如在電源發(fā)生故障時,從SSS DRAM緩沖器20中優(yōu)先選擇哪些數(shù)據(jù)將其寫入到閃速存儲器30,在電源失效時將這些數(shù)據(jù)復制到閃速存儲器30。功能管理器48檢查文件系統(tǒng)的格式,以確定通電時群集的大小和FATl的起始地址。它會檢查使用的閃速存儲器30的頁面大小。如若出現(xiàn)與閃速存儲器頁的大小不對齊的情況,一個偏移量就會被添加進去,使主機群集與閃速存儲器頁邊界對齊。[第65段]圖2A-C強調(diào)了要分開管理臨時文件,以避免將臨時文件寫入閃速存儲器。在圖2A中,主機數(shù)據(jù)被分割成不用備份到閃速存儲器的臨時文件112。主機數(shù)據(jù)和命令被寫入到DRAM中的數(shù)據(jù)輸入緩沖器108。數(shù)據(jù)劃分管理器109查閱每條主機請求的LBA,并確定哪些主機請求是發(fā)給臨時文件目錄中的數(shù)據(jù)。臨時文件112還可能包含主機向內(nèi)存頁面區(qū)域的數(shù)據(jù)發(fā)出的請求。發(fā)送給非臨時目錄的其他主機請求被劃分為非臨時文件110。非臨時文件110由頁面組合管理器22處理,頁面組合管理器22將來自不同主機請求的頁面組合成閃速存儲器塊。此非臨時文件110的數(shù)據(jù)被存儲在數(shù)據(jù)寫入高速緩存111,高速緩存111位于DRAM的一個非臨時文件區(qū)。當數(shù)據(jù)寫入高速緩存111就要滿的時候,數(shù)據(jù)塊被拋棄,然后寫入閃速存儲器30。[第66段]來自不同主機請求的臨時文件112被扇區(qū)組合管理器18合并到頁面里。數(shù)據(jù)塊可能是一個頁面、一個扇區(qū)或部分扇區(qū),或各種組合。這種較小的粒度對于臨時文件特別有用,因為它允許更高的包裝效率,尤其是當較小的文件數(shù)量眾多時。這些臨時文件存儲在DRAM中的臨時文件區(qū)113,而沒有備份到閃速存儲器30。當DRAM中的臨時文件區(qū)113快滿的時候,該區(qū)要么被擴大,要么將較舊的臨時文件刪除或覆蓋。因此避免了將臨時文件寫入閃速存儲器30。這樣可以減少閃速存儲器的磨損。[第67段]圖2B顯示了數(shù)據(jù)分割。數(shù)據(jù)輸入緩沖器108中的數(shù)據(jù)接收主機數(shù)據(jù)。主機數(shù)據(jù)的LBA將會與用于臨時文件存儲的LBA范圍進行比較,如預留給臨時文件子目錄,或有tmp或其他一些已知的臨時文件擴展名的文件的LBA范圍。當數(shù)據(jù)被識別為臨時文件,即步驟732,數(shù)據(jù)就會被移動到DRAM中的臨時文件區(qū),即步驟734。非臨時數(shù)據(jù)被移動到DRAM中的數(shù)據(jù)寫入緩存中,即步驟736。這是DRAM中一個被備份到閃速存儲器的非臨時文件區(qū)。[第68段]圖2C顯示了臨時文件的數(shù)據(jù)分類。文件系統(tǒng)分析過程740被執(zhí)行。這個過程識別了存儲臨時文件的目錄,步驟742。文件系統(tǒng)為識別提供幫助。例如,可以通過使用FDB連同F(xiàn)AT來識別.temp或tmp的文件擴展名。[第69段]過程740可以在后臺運行,即步驟744,或當系統(tǒng)處于空閑狀態(tài)時運行。在空閑期間,可以搜索FDB,獲取每個臨時目錄的LBA范圍,即步驟746。可以為每個臨時目錄的范圍創(chuàng)建查找表,即步驟748。這個臨時目錄中的臨時文件的LBA范圍,可以填充查找表的條目。[第70段]圖3是耐用轉(zhuǎn)換層(ETL)的內(nèi)存印象圖,顯示了存儲在SSSDRAM緩沖器20中的各種類型的數(shù)據(jù)。SSS控制器40的固件使用ETL來管理通電時、正常運行和電源關(guān)閉時DRAM和閃速存儲器之間的互動。SSS DRAM緩沖器20的臨時文件區(qū)140存儲著SSS控制器40通過讀取存儲在FAT/子映射表158區(qū)和FDB/子映射表160區(qū)的FDB/FAT文件擴展名而識別的臨時文件。臨時文件是指擴展名為.tmp、.temp、, tmt、.tof、.trs、.tst等的文件。系統(tǒng)相關(guān)的臨時文件的擴展名可能包括.mp、.log、.gid、.chk、.0ld、或.bak。AutoCAD相關(guān)的臨時文件的文件擴展名可能包含.SV$、.DWL、.AC$。Word相關(guān)的臨時文件的擴展名可能包括.asdo Excel相關(guān)的臨時文件可能包括以.xar為擴展名的文件。其他應用程序可能會用自己獨特的臨時文件擴展名?;ヂ?lián)網(wǎng)臨時文件區(qū)142存儲著文件擴展名為.gif>.jpg、.js、.htm、.png、.css、.php、.tmp、.mp3、.swf>.1co、.txt、.axd、.jsp、和.aspx的文件。140區(qū)和142區(qū)都有一個查找各臨時文件的表。此表可以通過主機的邏輯地址來索引。[第71段]數(shù)據(jù)提取區(qū)144存儲著提取數(shù)據(jù)和條目表。每次打開計算機,Windows操作系統(tǒng)就對計算機啟動的方式和哪些程序一般處于開放狀態(tài)進行跟蹤。Windows把這些信息以若干小文件的形式保存到預提取文件夾。下一次開啟電腦時,Windows引用這些文件來提高啟動過程的速度。[第72段]預提取文件夾是Windows系統(tǒng)文件夾中的一個子文件夾。預提取文件夾有自我維護的功能,沒有必要刪除或清空其內(nèi)容。[第73段]擴展名為.log或.evt的日志文件存儲在日志文件區(qū)146中,該區(qū)也可能有與存儲在該區(qū)的日志文件相關(guān)的映射表,日志文件也有可能被認為是一種臨時文件。[第74段]用來在主機上的主存儲器和外圍存儲設(shè)備(如硬盤或SSD102)之間交換數(shù)據(jù)的頁面文件被存儲和映射在頁面文件和映射表區(qū)148。從閃速存儲器30讀出并存儲在SSS DRAM緩沖器20的讀出數(shù)據(jù)高速緩存被放置在讀取緩存區(qū)151。讀取緩存條目的映射表可被使用,該映射表包括標簽、有效位和指向閃速存儲器30中數(shù)據(jù)的指針。系統(tǒng)區(qū)150存儲著SSS控制器40的操作系統(tǒng)使用的閃速存儲器系統(tǒng)數(shù)據(jù)。緩沖區(qū)152中的數(shù)據(jù)儲存著正被寫入到SSD102的原始主機數(shù)據(jù)(包括LBA)。真正的主機數(shù)據(jù)后來被轉(zhuǎn)移到數(shù)據(jù)寫入高速緩存154,然后再被寫入到閃速存儲器30中。為了減少閃速存儲器寫入/擦除的數(shù)量,與數(shù)據(jù)寫入高速緩存154相關(guān)的超級寫入緩存技術(shù)被用來將寫入數(shù)據(jù)緩存到閃速存儲器,用持久性備用與交換塊156進一步減少閃速存儲器內(nèi)寫入/擦除的次數(shù)。[第75段]來自主機100的數(shù)據(jù)寫入將首先把數(shù)據(jù)寫入緩沖區(qū)152中,經(jīng)過控制器的處理(如壓縮),再寫入數(shù)據(jù)寫入高速緩存154,然后再寫入閃速存儲器30。如果出現(xiàn)來自主機100的大量的數(shù)據(jù)不斷地寫入這一情況,將無法繼續(xù)向閃速存儲器30寫入數(shù)據(jù)。這些數(shù)據(jù)將被連續(xù)寫入到數(shù)據(jù)寫入高速緩存154,直到寫滿為止,然后從緩沖區(qū)152到數(shù)據(jù)寫入高速緩存154的數(shù)據(jù)流將停止。如果緩沖區(qū)152的數(shù)據(jù)也滿了,那么主機就會接到停止流量的通知。[第76段]數(shù)據(jù)寫入高速緩存154使用一種持久性寫入緩存算法,將寫入數(shù)據(jù)存儲到SSS DRAM緩沖器20中,并且在被拋擲前不會被寫入到閃速存儲器30中。因此,有相同LBA的多次寫入將覆蓋數(shù)據(jù)寫入高速緩存154中的數(shù)據(jù),并且根據(jù)規(guī)則(如基于流逝的時間,分配的容量等)或者基于電源關(guān)閉或電源故障的異常情況將數(shù)據(jù)寫入條帶單元中的閃速存儲器30。數(shù)據(jù)寫入高速緩存154也保存部分頁寫入數(shù)據(jù),直到多個部分頁組合為整頁。因此,根據(jù)規(guī)則(如基于流逝的時間,分配的容量等)或電源關(guān)閉或電源故障等突發(fā)事故,多個部分頁可以被寫入閃速存儲器30中。[第77段]在一個多通道控制器結(jié)構(gòu)中,設(shè)備控制器可以將布置為多個頁面(多個頁面的數(shù)量可以與多通道的數(shù)量相同)的數(shù)據(jù)從高速緩存154寫入到條帶單元里的閃速存儲器中,以方便擲出存儲塊,最好地利用閃速存儲器接口帶寬。每個設(shè)備控制器包括C條通道,每條通道連接著F個閃速存儲器芯片,每個芯片的堆疊結(jié)構(gòu)中有D個內(nèi)核,并且每個內(nèi)核有P個平面。條帶大小設(shè)置為F*D*P頁。條帶深度設(shè)置為C*F*D*P頁。設(shè)備控制器從數(shù)據(jù)寫入高速緩存154中選擇數(shù)據(jù),把數(shù)據(jù)寫入所選的閃速存儲器30的條帶中,然后根據(jù)相應的物理地址(PBA)更新相關(guān)的映射表條目。每個通道都只有一個總線,所以只有一個內(nèi)核可被訪問。F*D內(nèi)核相互交錯,共用一條總線,實現(xiàn)總線的最大利用。條帶單元的大小,可以是C頁或多至C*F*D*P頁。[第78段]耐用轉(zhuǎn)換層(ETL)方法提高了低指定擦除循環(huán)壽命的閃速存儲器的持久性。閃速存儲器接口具有多個通道總線,每個通道有多個閃速存儲器芯片;每個芯片有多個內(nèi)核,每個內(nèi)核有多個平面??梢酝瑫r訪問所有通道。[第79段]不能在同一時間同時訪問同一通道中的所有的內(nèi)核;一次只能訪問同一通道中的一個內(nèi)核。只有在其他的內(nèi)核被寫入或讀取的時候才可以訪問一個通道中的另一個內(nèi)核。交錯寫入或讀取可以提高閃速存儲器訪問的性能。數(shù)據(jù)寫入高速緩存存儲在DRAM緩沖器中,由控制器根據(jù)規(guī)則加以管理。當數(shù)據(jù)寫入高速緩存中的無效數(shù)據(jù)大于條帶單元時,設(shè)備控制器會對無效數(shù)據(jù)進行管理,并通過閃速存儲器接口寫入閃速存儲器。設(shè)備控制器管理數(shù)據(jù)在閃速存儲器的每個通道上的分布。設(shè)備控制器對數(shù)據(jù)與每個通道中的某個芯片的某個內(nèi)核的交織進行管理,并管理映射表條目以跟蹤LBA至PBA的映射。[第80段]在其它的替代設(shè)計中,在多通道控制器結(jié)構(gòu)中,每個通道可以有它自己的數(shù)據(jù)寫入高速緩存154。將條帶單元同時寫入每個閃速存儲器通道,可以實現(xiàn)閃速存儲器接口速度最大化。[第81段]用戶文件數(shù)據(jù)可以根據(jù)>=n(如2)的命中率被認定為頻繁訪問數(shù)據(jù)和〈η的命中率被認定為非頻繁訪問數(shù)據(jù)。他們可能會被分別寫入到兩個數(shù)據(jù)寫入高速緩存154。進入頻繁訪問區(qū)的LBA地址相同的多寫入數(shù)據(jù)將覆蓋DRAM中那些沒有放入閃速存儲器的舊內(nèi)容,這樣可以減少寫入閃速存儲器30的次數(shù)。根據(jù)規(guī)則,如流逝的時間(如I小時),分配的容量等,或電源關(guān)閉或電源故障等突發(fā)情況,數(shù)據(jù)寫入高速緩存中頻繁訪問區(qū)的緩存數(shù)據(jù)將被存儲在條帶單元中的閃速存儲器30中。根據(jù)另一項規(guī)則,如基于流逝的時間(如15分鐘)或分配的容量等或電源關(guān)閉或電源故障等突發(fā)情況,數(shù)據(jù)寫入高速緩存中非頻繁訪問區(qū)的緩存數(shù)據(jù)將被存儲到條帶單元中的閃速存儲器30中。[第82段]如果出現(xiàn)LBA地址不對齊的情況,LBA地址將被添加一個偏移量,使LBA地址與閃速存儲器30的頁地址對齊,然后再向?qū)懭敫咚倬彺?54寫入數(shù)據(jù),這樣做可以提聞后來的閃速存儲器與入的效率。[第83段]持久性備用與交換塊156用于垃圾收集功能,在將數(shù)據(jù)寫入到閃速存儲器之前,該功能對有效數(shù)據(jù)和逐出寫入高速緩存的數(shù)據(jù)進行合并。頁面狀態(tài)表162包含一個有著頁狀態(tài)條目的表,比如空白頁、使用過的頁、垃圾頁(TRMed)、壞頁、需要額外ECC保護的頁。壓縮LBA表161存儲壓縮用戶數(shù)據(jù)的映射條目。塊/擦除計數(shù)表164跟蹤閃速存儲器30中的每個物理塊的擦除計數(shù)器和塊狀態(tài)。[第84段]部分頁映射表166存儲部分頁的映射信息。DRAM可能沒有足夠的空間來放置整個映射表,因此,映射表只有一部分被加載到DRAM。當LBA表條目不在DRAM中,然后DRAM將逐出部分映射表的部分內(nèi)容,把相關(guān)的LBA表加載到DRAM上。部分子扇區(qū)組合映射表168為小于一個頁面的數(shù)據(jù)文件,用于儲存子扇區(qū)映射信息。部分子扇區(qū)組合映射表168的部分映射表只有I組映射表的條目(共有N組映射表)。其他的N-1組映射表則存儲在閃速存儲器中,當部分映射表發(fā)生遺漏的時候,它們被送至SSS DRAM緩沖器。[第85段]S.M.A.R.T.數(shù)據(jù)收集器170有數(shù)據(jù)表以及S.M.A.R.T.功能39(圖1)所使用的其他信息。主機可以通過S.M.A.R.T.命令或供應商命令向S.M.A.R.T.數(shù)據(jù)收集器170提出請求。[第86段]SSSDRAM緩沖器20中各區(qū)域的大小可以根據(jù)SSS DRAM緩沖器20的整體大小、閃速存儲器30的頁大小、塊大小和扇區(qū)大小來確定,以及根據(jù)是否使用頁映射或塊映射,或者根據(jù)估計該區(qū)域百分之多少的條目為頁映射而不是塊映射來確定。例如,SSS DRAM緩沖器20可能為512MB DRAM,其中240MB分配給臨時文件區(qū)140、160MB分配給互聯(lián)網(wǎng)臨時文件區(qū)142、12MB分配給數(shù)據(jù)提取區(qū)144、6MB分配給日志文件區(qū)146等。[第87段]在多通道控制器結(jié)構(gòu)中,設(shè)備控制器可以從閃速存儲器30讀取數(shù)據(jù),并通過多通道結(jié)構(gòu)直至各種ETL表(FAT/子映射表158、FDB/子映射表160、頁面狀態(tài)表162、壓縮LBA表161、塊/擦除計數(shù)表164、部分頁映射表166和部分子扇區(qū)組合映射表168)。[第88段]根據(jù)一項規(guī)則(如基于流逝的時間或分配的容量等)或電源關(guān)閉或電源故障,在一個多通道控制器的結(jié)構(gòu)中,設(shè)備控制器可以將各種被布置為多頁面(多頁面的數(shù)量等于多通道的數(shù)量)的ETL表(FAT/子映射表158、FDB/子映射表160、頁面狀態(tài)表162、壓縮LBA表161、塊/擦除計數(shù)表164、部分頁映射表166和部分子扇區(qū)組合映射表168)寫入條帶單元的閃速存儲器中,以實現(xiàn)閃速存儲器接口帶寬的最好利用。[第89段]與如圖3所示的在內(nèi)存的每個區(qū)域里使用一個個單獨映射表的情況不同,可以使用一個或多個統(tǒng)一的映射表??梢允褂煤竺鎴D6所示的代碼對每個條目中文件的類型作出規(guī)定。
[第90段]圖4A-B是一個被過度寫入的部分塊。在圖4A中,主機先前已將0-127的所有頁寫入一個塊中。最初,128頁全部存儲在SSS DRAM緩沖器20中,后來被復制到閃速存儲器30中物理塊BLK2上。后來,主機覆蓋了 10-99頁,但沒有將0-9頁和100-127頁寫入。10-99頁的新的主機數(shù)據(jù)覆蓋SSS DRAM緩沖器20中的舊頁數(shù)據(jù)。因為閃速存儲器中10-99頁為過時的數(shù)據(jù),這些頁被標志為無效頁。[第91段]當SSSDRAM緩沖器20中的無效數(shù)據(jù)要被復制到閃速存儲器30時,來自物理塊BLK2的0-9頁被復制到物理塊BLK550-9頁上。同樣,有著新主機數(shù)據(jù)的無效頁10-99被從SSS DRAM緩沖器20復制到閃速存儲器30的物理塊BLK55中的10-99頁上。來自物理塊BLK2的100-127頁被復制到物理塊BLK55的100-127頁。這個邏輯塊在SSSDRAM緩沖器20的存儲空間現(xiàn)在可以用來存儲不同的邏輯塊,因為舊的塊數(shù)據(jù)的0-127頁現(xiàn)在全部存儲在所在物理塊BLK55中。該邏輯塊的映射表條目作了修改,指向物理塊BLK55而不是指向BLK2??梢詫⑴f物理塊BLK2全部內(nèi)容當作垃圾收集,將其排列好準備接受擦除、壞塊檢測和重新使用這幾步操作。[第92段]圖4B是持久性備用與交換塊156操作的一個例子。SSSDRAM緩沖器20目前沒有任何空間可以分配給主機的邏輯塊。SSS DRAM緩沖器20需要遵守“有寫入有分配”的規(guī)則。當主機寫入部分塊數(shù)據(jù),SSS DRAM緩沖器20就分配出一個新的塊條目,可能來自SSS DRAM緩沖器20中的空塊條目,或來自SSS DRAM緩沖器20將舊數(shù)據(jù)拋至閃速存儲器30而騰出的空間。來自主機的10-99頁被存儲到SSS DRAM緩沖器20中這個新分配的塊中的10-99頁。0-9頁從閃速存儲器30中的物理塊BLK2中讀出,100-127頁也是如此。整個塊(0-127頁)然后可以從SSS DRAM緩沖器20復制到閃速存儲器30中的新的物理塊BLK55。該邏輯塊的映射表條目被改為指向物理塊BLK55,而不是指向BLK2。然后可以將舊物理塊BLK2全部內(nèi)容當作垃圾收集,將其排列好準備接受擦除、壞塊檢測和重新使用。頁狀態(tài)表將顯示閃速存儲器中每個單獨頁面的狀態(tài)。由垃圾收集器擦除的目標塊將接受檢查,通過頁狀態(tài)表了解它在塊中的頁面狀態(tài)。只用壞頁和空頁以外的用過的頁面以及剪裁的頁面會被復制到交換區(qū)域。[第93段]在一個舊文件算法中,閃速存儲器中有與部分覆蓋有關(guān)的備用與交換塊。例如,數(shù)據(jù)被寫入到閃速存儲器中的一個塊中,然后原始數(shù)據(jù)的一部分內(nèi)容發(fā)生改變。控制器首先將新的更新內(nèi)容寫入閃速存儲器中的備用塊。然后舊數(shù)據(jù)和新數(shù)據(jù)將被合并到交換塊。在那之后,原始塊和備用塊將被擦除。一次部分覆蓋會導致兩個塊被刪除。在一些文件算法中,需要將數(shù)據(jù)寫回原來的塊中。在這種情況下,將被刪除的有三個塊。[第94段]在一個多通道控制器結(jié)構(gòu)中,設(shè)備控制器可以從閃速存儲器30的一個特定通道將數(shù)據(jù)讀取到持久性備用與交換塊156。在備用和交換塊操作后,有效的數(shù)據(jù)會被寫入閃速存儲器30的同一個通道。[第95段]圖5是塊映射、頁面映射和扇區(qū)映射。為了實現(xiàn)最大的靈活性、效率和耐磨損性,根據(jù)用戶數(shù)據(jù)的大小,三種類型的映射都要使用。[第96段]在塊映射中,來自主機的一整個邏輯塊被映射到閃速存儲器30中的一整個物理塊上。主機地址180是指512個字節(jié)的用戶數(shù)據(jù)。扇區(qū)K是一個用來識別某個頁面中某個扇區(qū)的扇區(qū)號,例如在一個有著16個扇區(qū)的頁面中的一個512字節(jié)的扇區(qū)。通道Jl標識閃速存儲器30中的一個條帶,如在8個通道中8個條帶(與RAIDO的結(jié)構(gòu)相似)(一個條帶的大小至少為一個頁面)。頁面L是用來標識邏輯塊中一個頁面的頁號,如在一個128頁的塊中的某一頁。LBA-B是識別邏輯塊M的塊地址。邏輯塊映射表由LBA-B來索引,并且將邏輯塊M映射到通往閃速存儲器的物理地址182中的物理塊N(物理塊地址PBA-B)??梢詫㈤W速存儲器通道J2從物理塊號中刪除。如果是閃速存儲器的兩個平面,LSB通道Jl將作為LSB被添加到頁面L。如果使用一個與RAIDl結(jié)構(gòu)類似的結(jié)構(gòu),一個通道會被用作其余通道的對等物,且不會在圖中顯示。[第97段]在頁面映射中,映射表由LBA-P從邏輯地址184索引出,LBA-P是包括邏輯塊編號M和邏輯頁面編號L的邏輯頁號。映射表中的頁面條目產(chǎn)生一個物理頁編號Y,物理頁編號Y是物理地址186中的物理塊地址、頁面和PBA-P (Y的大小和M、L 一樣,但是值不同)。由于頁數(shù)比塊數(shù)多得多,頁面映射的映射條目的數(shù)量也就比塊映射的映射條目的數(shù)量大得多。通道Jl識別閃速存儲器30中的一個條帶,如8個通道中8個條帶(與RAIDO的結(jié)構(gòu)相似)。通道Jl可以映射到映射表,因此設(shè)備控制器可以將頁數(shù)據(jù)移到任何通道中,而不僅限于特定通道?;蛘?,如果Jl始終等于J2,閃速存儲器的J2通道可以從物理塊號中刪除。如果是閃速存儲器的兩個平面,LSB通道Jl被作為LSB添加到頁面L。如果使用一個與RAIDl結(jié)構(gòu)相似的結(jié)構(gòu),一個通道會被用作其余通道的等價物,且不會在圖中顯示。[第98段]在扇區(qū)映射中,映射表由塊、頁、扇區(qū)地址LBA-S從邏輯地址188中索引出。這是包括邏輯塊號M、邏輯頁號L和扇區(qū)號K的邏輯頁編號。一個扇區(qū)的子映射表和頁映射表一起使用,這樣LBA-P和扇區(qū)K被映射到物理地址190中的一個物理扇區(qū)地址:PBA-S, (Z的大小和M、L、K相同,但是值不同)。由于扇區(qū)數(shù)量比頁的數(shù)量和塊的數(shù)量多得多,扇區(qū)映射的映射條目的數(shù)量也就比塊映射的映射條目的數(shù)量大得多。通道Jl標識閃速存儲器30中的一個條帶,如8個通道中8個條帶(與RAIDO的結(jié)構(gòu)相似)。通道Jl可以映射到映射表,因此設(shè)備控制器可以將頁數(shù)據(jù)移到任何通道中,而不僅限于某個特定通道。或者,如果Jl始終等于J2,閃速存儲器的J2通道可以從物理塊號中刪除。如果是閃速存儲器的兩個平面,LSB通道Jl被作為LSB添加到頁面L。如果使用一個與RAIDl結(jié)構(gòu)相似的結(jié)構(gòu),一個通道會被用作其余通道的等價物,且不會在圖中顯示。[第99段]大多兀塊屬于塊映射,只有少部分的塊屬于頁映射。當一個頁映射的塊內(nèi)有相對較少的頁面屬于扇映射,SSS DRAM緩沖器20中全部映射表區(qū)域的大小要保持在合理的范圍內(nèi)。當SSS DRAM緩沖器20中映射表區(qū)域空間不夠用時,映射表可以保存在閃速存儲器30中,這些映射條目的緩存被存儲在SSSDRAM緩沖器20中。[第100段]圖6顯示了超耐用閃速存儲器驅(qū)動器中對不同的數(shù)據(jù)類型進行定義的映射條目。除了為每種類型的數(shù)據(jù)提供單獨的映射表,例如圖3所示,也可以使用一個統(tǒng)一的映射表將來自主機的邏輯地址映射到SSS DRAM緩沖器20或閃速存儲器30中的物理地址。[第101段]在這個統(tǒng)一的映射表中每個映射條目的前幾位是一個用來對該條目所映射的主機數(shù)據(jù)進行標識的代碼。本碼位還表明被映射的數(shù)據(jù)的大小,是完整頁(FP),還是部分頁(PP)。[第102段]在通電時,SSS控制器40載入以前存儲的、且對已知的數(shù)據(jù)類型進行分配的映射表。格式化之后,只有FAT/FDB條目和表存在。在那之后才能創(chuàng)建新文件和新的子目錄。因為在讀取之前必須先寫入數(shù)據(jù),所以所有從主機讀取的數(shù)據(jù)應該來自某個已知的數(shù)據(jù)類型。對于寫入操作,只有新的文件數(shù)據(jù)才需要確定數(shù)據(jù)類型。來自主機的所有的寫入會訪問FDB/FAT。[第103段]SSS控制器40檢查FDB/FAT的新條目,以確定LBA的數(shù)據(jù)類型。FDB中的文件描述包括文件名和文件擴展名、起始群集的位置、文件大小和創(chuàng)建日期。SSS控制器40利用此信息來確定數(shù)據(jù),將數(shù)據(jù)歸到幾個數(shù)據(jù)類型中某一類型下:[第104段]PF:內(nèi)存管理為將文件從主內(nèi)存交換到硬盤而創(chuàng)建的頁面文件。通過頁面文件使用的邏輯地址,可以找到這些頁面文件。主機為所需的虛擬內(nèi)存分配一個可用的LBA范圍。SSS控制器40檢查FDB,以確定頁面文件的LBA范圍。[第105段]TMP:來自主機的臨時文件。SSS控制器40讀取FDB條目中的文件擴展名,可以找到臨時文件。FDB條目是在臨時文件被主機寫入前寫入的。一般,主機首先寫入FAT、然后FDB,然后是臨時文件,所以FDB中.tmp的文件擴展名將文件標識為臨時文件。FDB有起始群集的位置、大小(使用的群集的數(shù)量),而FAT有下一個群集位置的信息(如果該文件大于一個群集)或文件結(jié)尾(文件的最后一個群集)。[第106段]FAT:來自主機的FAT條目。主機寫入FAT的兩個副本,將FATl寫入第一個預定義的地址范圍內(nèi),將FAT2寫入下一個地址范圍內(nèi)。例如,將FATl寫入邏輯地址0-8KB,而將FAT2寫入邏輯地址8-16KB。實際的地址范圍取決于SSD的容量(例如:16GB)、群集的大小(例如:8KB)。實際的地址范圍決定所需的總FAT表條目,如16MB/8KB=2M。對于FAT32,每個條目都需要32位,所以地址范圍為2MX 4=8MB。如果每個LBA是512B,那么它的 LBA 范圍(8M/512=16K)為 “FAT_beg” 到 “FAT_beg+16K”。[第107段]FDB:來自主機的FDB條目。SSS控制器40將文件描述塊條目確定為緊跟FAT通路之后的一個通路。在格式化后,通過FDB可以知道根目錄。每個文件和子目錄的寫入操作會更新FDB。因為已經(jīng)為FDB標記了 LBA范圍,所以SSS固件知道寫入FDB的數(shù)據(jù)。固件進一步檢查寫入到新的子目錄中的數(shù)據(jù)。為了確定新的FDB數(shù)據(jù)類型,新的子目錄提供起始集群和大小信息。FDB條目可能有一個預先定義的地址范圍,這個預先定義的地址范圍可能促進或加快FDB檢測。[第108段]DT:用戶數(shù)據(jù)或應用程序數(shù)據(jù)的數(shù)據(jù)文件。這些都是存儲在閃速存儲器中的正常數(shù)據(jù)文件。這些數(shù)據(jù)文件可能直接存儲在閃速存儲器中,也可能是先被緩存在SSS DRAM緩沖器20中一段時間,然后被擲出緩沖器進入閃速存儲器或在電源被切斷時復制到閃速存儲器中。[第109段]來自主機100的命令提供了四種不同的參數(shù):起始LBA地址、扇區(qū)計數(shù)(SC)、命令(讀取/寫入)和數(shù)據(jù)(讀取的時候沒有)。要確定每個不同類型的數(shù)據(jù),SSS40的固件需要管理文件系統(tǒng),如FAT32。從LBAO開始,它會驗證文件系統(tǒng)是否是FAT32,然后它會從寫入SSD的文件系統(tǒng)中找到FAT、FDB、臨時文件等的LBA。為了確定新使用的LBA的數(shù)據(jù)類型,它還依靠SSS40的FDB去積極地查看FDB為更新文件/子目錄中信息所做的改變。例如,如果一個新的臨時文件的名字被寫入到FDB,這些信息將包括臨時文件的起始群集的LBA。SSS40然后確定作為臨時數(shù)據(jù)類型的群集相關(guān)的LBA。在一個候補設(shè)計中,來自主機100的命令被SEEDll修改,修改后將數(shù)據(jù)類型的第五個參數(shù)包括在內(nèi),以提高閃速存儲器裝置的持久性和性能。數(shù)據(jù)類型可以是臨時文件、頁面文件、FAT、FDB、FA數(shù)據(jù)和NFA數(shù)據(jù)(每個數(shù)據(jù)類型可以有多種變化形式:正常、壓縮、加密、壓縮+加密等)。例如,“頁面”(正常)的數(shù)據(jù)類型為0x00,而“NFA數(shù)據(jù)”(壓縮+加密)的數(shù)據(jù)類型為0x13。則第五個參數(shù)可以釋放上述特殊的SSS40的固件。例如,臨時文件將數(shù)據(jù)類型“temp”作為主機寫入命令數(shù)據(jù)的第五個參數(shù)。此外,SEEDll可通過支持主機100的設(shè)置來提高閃速存儲器裝置的持久性。系統(tǒng)設(shè)置,如重定向頁面文件、Windows臨時文件、專用程序臨時目錄、事件日志、索引、系統(tǒng)還原等,可以復制到主機DRAMlO上。其他設(shè)置的更改,例如碎片整理禁用、減少回收站大小、剪裁啟用、S.M.A.R.T.啟用等,也可以提高閃速存儲器裝置的持久性。另外,SEEDll向閃速存儲器裝置102發(fā)送專用命令。這些專用命令帶有頁號、頁數(shù)、頁面命令和頁面數(shù)據(jù)等參數(shù)而不是LBA號、扇區(qū)計數(shù)、扇區(qū)指令和扇區(qū)數(shù)據(jù)。命令可能包括數(shù)據(jù)類型的臨時文件、頁面文件、FAT、FDB、FA數(shù)據(jù)和NFA數(shù)據(jù)(每個數(shù)據(jù)類型可以有多種變化形式:正常、壓縮、加密,壓縮+加密等等)的讀取/寫入信息。[第110段]為了減少閃速存儲器30的磨損并增加其持久性,通常僅允許將數(shù)據(jù)文件(DT)寫入到閃速存儲器中。頁面文件(PF)、臨時文件(TMP)、FAT和FDB的條目不寫入閃速存儲器中,而是存儲在SSS DRAM緩沖器20中。當發(fā)生斷電/電能損耗或當SSS DRAM緩沖器20沒有足夠的空間來緩存該類型的所有數(shù)據(jù),這些類型的數(shù)據(jù)才可能被寫入閃速存儲器。[第111段]數(shù)據(jù)類型的前三位識別如下數(shù)據(jù)類型:[第112 段]001 -頁面文件(PF)[第113 段]OlX-臨時文件(TMP)[第114 段]100-FAT 條目[第115 段]101-FDB 條目[第116段]IlX-數(shù)據(jù)文件(DT用戶數(shù)據(jù))[第117段]最后的類型位(第三位或第四位)把條目標識為完整頁(FP)的條目或一個部分頁(PP)的條目。完整頁的條目包含一個指向數(shù)據(jù)在DRAM中位置(在SSS DRAM緩沖器20中)的指針(PTR),而部分頁的條目包含一個指向子扇區(qū)映射表的指針(SCTR)。如果最后一個類型位是0,那么該頁為整頁數(shù)據(jù),就沒有必要使用扇區(qū)映射。[第118段]如果最后的類型位是1,該頁面被部分映射。統(tǒng)一的映射表中的條目是一個指向該特定頁面的子扇區(qū)映射表的指針(SCTR)。那個子扇區(qū)映射表可能有多個條目。每個條目與一個或多個完整的扇區(qū),和/或某個部分扇區(qū)對應。如果第一子扇區(qū)的位是0,那么該子扇區(qū)的條目與主機數(shù)據(jù)的一個完整的扇區(qū)對應。分扇區(qū)的條目包含一個指向SSS DRAM緩沖器20中的數(shù)據(jù)頁面的指針,還包含完整扇區(qū)的扇區(qū)計數(shù)SC#,扇區(qū)計數(shù)SC#是來自被指向的那個頁面開始部分的偏移量。[第119段]當?shù)谝蛔由葏^(qū)的位為1,子扇區(qū)的條目與某個部分扇區(qū)對應。該子扇區(qū)的條目包含一個指向SSS DRAM緩沖器20中數(shù)據(jù)頁面開始部分的指針和該頁面內(nèi)第一個字節(jié)的偏移量A (N)。該偏移量是部分數(shù)據(jù)扇區(qū)的開始,是部分數(shù)據(jù)扇區(qū)的長度LEN (N)。[第120段]圖7顯示了使用統(tǒng)一映射表和子扇區(qū)映射表的頁面文件的完整頁映射和部分頁映射。前三個類型位001用來識別頁面文件(PF)的條目。為了減少閃速存儲器的磨損,頁面文件被存儲在SSS DRAM緩沖器20中,而不是閃速存儲器30中。這些條目用來映射SSS DRAM緩沖器20中的頁面區(qū)148 (圖3)。這些條目是統(tǒng)一映射表192的一部分。
[第121段]顯示的第一個條目的最后一個類型位為0,表示該條目是一個完整頁(FP)0第一個條目包含一個指向SSS DRAM緩沖器20某個位置的指針(PTR)。該頁面文件的滿頁數(shù)據(jù)就存儲在SSS DRAM緩沖器20的頁面數(shù)據(jù)區(qū)196。主機的數(shù)據(jù)可以讀到或?qū)懭氲絊SS DRAM緩沖器20的這個位置,以完成主機請求。[第122段]顯示的第二個條目的最后類型位為I,表示這個條目與部分頁(PP)對應。SSS控制器40檢查傳入的頁面數(shù)據(jù),以確定數(shù)據(jù)屬于完整頁面數(shù)據(jù)還是部分頁面數(shù)據(jù)。對于部分數(shù)據(jù)頁面,SSS控制器也決定每個扇區(qū)(O 15)是完整扇區(qū)數(shù)據(jù)還是部分扇區(qū)數(shù)據(jù),還是沒有數(shù)據(jù)。第二個條目包含一個指向SSSDRAM緩沖器20中某個位置的指針(PTR),該條目的子扇區(qū)映射表就在SSSDRAM緩沖器中的統(tǒng)一映射表192處。從主機地址中提取的邏輯扇區(qū)用于在子扇區(qū)映射表194中選擇一個當前條目。[第123段]子扇區(qū)映射表194的前兩個條目與完整扇區(qū)對應,因為它們的第一子扇區(qū)位為O。這些條目包含一個指向SSS DRAM緩沖器20中某個頁面位置(PF-DRAM-PP)的指針(SPTR)。扇區(qū)數(shù)據(jù)就存儲在SSS DRAM緩沖器20中。按順序存儲扇區(qū)數(shù)據(jù),從扇區(qū)O (SC)開始一直到最后扇區(qū)SC15。子扇區(qū)映射表194中的每個完整扇區(qū)的條目也包含扇區(qū)計數(shù)SC #,它指向指針PF-DRAM-PP所指向的頁面里的扇區(qū),這些是滿扇區(qū)數(shù)據(jù)。[第124段]子扇區(qū)映射表194中的最后條目與部分扇區(qū)對應,因為它的第一子扇區(qū)位為I。每個部分頁條目和每個子扇區(qū)映射表194最多有一個部分扇區(qū)。此條目包含一個指向SSS DRAM緩沖器20中一個不同頁面位置(PF-DRAM-PP2)的指針。部分扇區(qū)數(shù)據(jù)組合、存儲在SSS DRAM緩沖器20中的一個頁面里。[第125段]條目還包含起始字節(jié)偏移量A(N),該偏移量指向位置確定的某個頁內(nèi)的部分扇區(qū)數(shù)據(jù)的起始字節(jié)和長度LEN (N)0部分扇區(qū)條目包含LBA (塊+頁面+扇區(qū)),緊隨LBA的是真正的部分扇區(qū)數(shù)據(jù),由于本實例中LBA和LEN (N)的內(nèi)部自檢,扇區(qū)數(shù)據(jù)小于480字節(jié)。480字節(jié)到512字節(jié)的部分扇區(qū)使用一個全扇區(qū)。此方案也適用于臨時文件等以及FDB。完整頁數(shù)據(jù)和部分頁的組合數(shù)據(jù)的單位大小是頁。條帶單元可以包括完整頁數(shù)據(jù)和組合起來的部分頁數(shù)據(jù)。當數(shù)據(jù)寫入緩存中的無效數(shù)據(jù)大于條帶單元,設(shè)備控制器對無效數(shù)據(jù)進行管理,并通過閃速存儲器接口將其寫入閃速存儲器。[第126 段]FAT 和 FDB[第127段]FAT是文件分配表。主機可以把群集作為每個表條目的基本大小來使用。當群集的大小是4KB,F(xiàn)AT的容量是4096KB,就需要1024個FAT表條目。對于FAT32,一個0000,0000的條目表示該條目沒有被使用,一個FFFF,F(xiàn)FOF的條目表示一個文件的末尾,一個有效的數(shù)字(例如,介于I 1023之間)表示下一個群集是該文件的位置。主機使用FDB找到文件的起始位置,使用FAT跟蹤下一個群集以及接下來的群集(適用于較大的文件)的位置,直到“FFFF,F(xiàn)F0F”條目指示已到達該文件的末尾為止。[第128段]FDB是文件描述塊。FDB存儲文件名和子目錄名。在一個典型的FAT文件系統(tǒng)中,F(xiàn)DB開始于FAT2表之后。FDB的起點是根目錄。格式化之后,F(xiàn)DB只占用FAT2表之后的第一個群集。對應的“FFFF,F(xiàn)F0F”FAT條目是文件的末尾。在寫入一個文件的時候,文件數(shù)據(jù)被寫入到該群集中,當該群集被寫滿時,就會有一個新的群集來存放該文件的數(shù)據(jù)。FAT1/2的位置(條目)被從FFFF,F(xiàn)F0F (文件末尾)更改到新的群集的位置。如果創(chuàng)建了一個新的子目錄,該子目錄就會獲得一個新的群集位置。FAT表的大小是固定的,F(xiàn)AT表被固定連續(xù)的位置上。一旦創(chuàng)建,F(xiàn)DB的位置就固定了,但新創(chuàng)建/擴展的群集則散在任何未使用的位置上。[第129段]FDB保存諸如文件名和擴展名、第一群集的位置、創(chuàng)建或修改日期或時間、大小等文件信息。FDB經(jīng)常變更。只有在創(chuàng)建文件和子目錄的時候,和由于文件被放大或添加到目錄所以需要新群集的時候,F(xiàn)AT才發(fā)生改變。[第130段]圖8顯示了統(tǒng)一映射表中的FAT映射。FAT條目被存儲在一個通常是由操作系統(tǒng)定義的預先確定的地址范圍內(nèi)。當SSS控制器40檢測到該范圍內(nèi)存在著向某個邏輯地址寫入數(shù)據(jù)的操作,數(shù)據(jù)被當作FAT條目204寫到SSS DRAM緩沖器20中的FAT158區(qū)。一個指針,DRAM-FAT-BEG,指向FAT條目204的開始部分,而從來自主機的邏輯地址中得到FAT條目204內(nèi)的頁面偏移量。[第131段]OS(操作系統(tǒng))維護FAT條目的兩個副本,即FATl和FAT2。OS首先將條目寫入FATl,然后把相同的條目寫入FAT2。寫入FAT2的條目被寫入到一個邏輯位置,該邏輯位置是首先寫入到FATl的那個條目的頁偏移量和FATl表大小的總和。[第132段]沒有將兩個條目表(一個FATl條目表,另一個為FAT2條目表)保持在SSS DRAM緩沖器20中,而只有單一的FAT表被保持在DRAM。只存儲了 FATl條目。假定FAT2條目與早于它的FATl條目相匹配,而SSS控制器40可以驗證FAT2與FATl是否匹配,在二者不匹配時SSS控制器40會發(fā)出錯誤信號。或者可以簡單地假設(shè)操作系統(tǒng)從未寫入與FATl不匹配的FAT2。因此,來自主機的FATl與FAT2讀取和寫入映射到SSS DRAM緩沖器20中FAT條目204中相同的FAT條目。[第133段]為了方便FATl和FAT2訪問,F(xiàn)AT子映射表202中保存著一個單一的子映射條目。該條目的頁偏移量是對FATl的FAT表開始部分的頁偏移量,或者FAT2減去FATl表的大小剩下部分的頁偏移量。[第134段]FAT子映射表202中的每個子映射條目有一個指向閃速存儲器30中的FATl條目的指針:F-PBA1-P,和一個指向閃速存儲器30中的FAT2條目的第二個指針:F-PBA2-P。為了減少閃速存儲器的磨損,F(xiàn)AT條目可能只會保存在SSS DRAM緩沖器20中,然后在電源關(guān)閉/停電的時候復制到閃速存儲器30中?;蛘?,所有修改的FAT條目可以定期復制到閃速存儲器(如每天一次),或如果認為增加閃速存儲器磨損可以接受,可將它們立刻復制到閃速存儲器。[第135段]雖然對于FATl和與之相同的FAT2,只將一個條目保存在DRAM中,但閃速存儲器30中保存了兩個單獨的副本。[第136段]FAT子映射表202中的每個子映射條目的前兩位為FAT閃速存儲器狀態(tài)位。FAT閃速存儲器狀態(tài)位表示FATl或FAT2是否已被復制到閃速存儲器,或只在SSSDRAM緩沖器20中有效。當FAT的閃速存儲器位是00,DRAM中的FAT條目204已被復制到閃速存儲器中的FATl表和FAT2表,而所有這三個位置都是有效的。當FAT閃速存儲器位為10,F(xiàn)AT1已被主機寫入DRAM,但主機尚未寫入相同的條目FAT2,新的FATl尚未復制到閃速存儲器。當FAT的閃速存儲器位是11,F(xiàn)AT1和FAT2都已經(jīng)被主機寫入DRAMjS FATl和FAT2都沒有被主機復制到閃速存儲器。閃速存儲器中寫入的FAT條目可能會減少,但閃速存儲器的持久性提高了。[第137段]在一個多通道控制器結(jié)構(gòu)中,設(shè)備控制器從閃速存儲器30中讀取FAT表的數(shù)據(jù),并經(jīng)過多通道結(jié)構(gòu)到達ETL FAT表。[第138段]根據(jù)規(guī)則(如基于流逝的時間和分配的容量等),或根據(jù)電源關(guān)閉或電源故障等特殊情況,在一個多通道控制器結(jié)構(gòu)中,設(shè)備控制器從ETL FAT表向條帶單元中的閃速存儲器中寫入FAT表數(shù)據(jù),以最好地利用閃速存儲器接口帶寬。這些數(shù)據(jù)被配置為多個頁面,(頁面的數(shù)量和多通道的數(shù)量相當)。[第139段]圖9A顯示的是壓縮頁面的映射。通過將壓縮的數(shù)據(jù)而非常規(guī)的數(shù)據(jù)存儲在閃速存儲器頁面,也可以提高閃速存儲器的持久性,因為壓縮減少了數(shù)據(jù)的大小,降低了在閃速存儲器中的存儲空間要求。壓縮的數(shù)據(jù)可被緩存在SSSDRAM緩沖器20中,并在緩存滿了的時候備份到閃速存儲器30中。[第140段]在將其存儲在SSSDRAM緩沖器20或閃速存儲器30前,SSS控制器40可以壓縮一些數(shù)據(jù)。主機以正常的方式寫入幾頁數(shù)據(jù),來表示邏輯地址(LBA)、頁號和指示總數(shù)據(jù)長度的扇區(qū)數(shù)。例如,主機可能會將數(shù)據(jù)I寫入LBA2048,SC=128,這是共8頁,每頁16個扇區(qū)的數(shù)據(jù)。SSS控制器40中的壓縮引擎將128個扇區(qū)的數(shù)據(jù)壓縮成48個扇區(qū)的壓縮數(shù)據(jù)。這些48個扇區(qū)的壓縮的數(shù)據(jù)包括數(shù)據(jù)頭和存儲在第一壓縮頁的一些壓縮數(shù)據(jù),以及另外兩頁壓縮數(shù)據(jù),共3頁壓縮數(shù)據(jù)。與未壓縮前的8頁相比,頁數(shù)顯著減少。[第141段]SSS控制器40將這3頁壓縮數(shù)據(jù)存儲在SSSDRAM緩沖器20或閃速存儲器30中的一個頁面上(存儲為壓縮數(shù)據(jù)214)。存儲在壓縮LBA表212中的指針MAP_PAGE_PTR指向這個頁面。[第142段]SSS控制器40還在DRAM/PBA表的LBA表210中創(chuàng)建了條目,DRAM/PBA表的LBA表210可能是統(tǒng)一映射表(如統(tǒng)一映射表192)的一部分。然而,DRAM/PBA表的LBA表210中的條目是專門為映射到壓縮數(shù)據(jù)而編碼的。[第143段]DRAM/PBA表的LBA表210中的每一個映射項都包括被稱為“壓縮狀態(tài)位”的前兩位。如果第一個壓縮狀態(tài)位為1,表示壓縮訪問;如果第一個壓縮狀態(tài)位為0,則表示主機對未壓縮數(shù)據(jù)的常規(guī)訪問。例如,第127頁使用PTRl映射到未壓縮的數(shù)據(jù)。[第144段]當在第一個壓縮狀態(tài)位是1,而第二個壓縮狀態(tài)位為0,DRAM/PBA表的LBA表210中的條目中包含未壓縮數(shù)據(jù)段的總大小(頁數(shù))。如果第一個壓縮狀態(tài)位是I,而第二個壓縮狀態(tài)位為1,那么DRAM/PBA表的LBA表210中的條目中包含一個偏移量。偏移量是對壓縮數(shù)據(jù)段第一個條目的偏移,這個條目包含壓縮數(shù)據(jù)段的大小。[第145段]在主機將數(shù)據(jù)I寫入LBA2048,SC=128(共8頁)的這個例子中,數(shù)據(jù)I在DRAM/PBA表的LBA表210頁中有8頁條目。LBA2048選擇DRAM/PBA表的LBA表210中的第128頁。DRAM/PBA表的LBA表210中共有8頁條目被使用。第一個條目包含總數(shù)據(jù)大小,而接下來的7個條目則包含指回第一個條目的偏移量。[第146段]當主機讀取第133頁(LBA=2128,SC=16)時,第133頁在DRAM/PBA表的LBA表210中的條目被讀取。存儲在第133頁的條目中的偏移量是5,它指回第128頁的的條目,其中包含3頁的總壓縮數(shù)據(jù)的大小。從壓縮LBA表212讀出第128頁的條目,讀出的還包括壓縮LBA表212的接下來的兩個條目,共3頁條目(壓縮的數(shù)據(jù)的大小)。每個條目指向SSS DRAM緩沖器20或閃速存儲器30中的壓縮數(shù)據(jù)頁面。對所有這三個壓縮頁面進行讀出和解壓縮操作,以恢復未壓縮前的8頁數(shù)據(jù)塊。然后從未壓縮數(shù)據(jù)中提取出主機正在讀取的數(shù)據(jù)。壓縮可以與硬件電路或固件的控制算法保持一致。
[第147段]圖9B強調(diào)SSSDRAM緩沖器20中用戶數(shù)據(jù)的數(shù)據(jù)流。主機寫入數(shù)據(jù)被寫入到數(shù)據(jù)輸入緩沖器,后者對數(shù)據(jù)類型(如頁面文件、臨時文件、用戶數(shù)據(jù)、FDB或FAT數(shù)據(jù)類型)進行識別。如果數(shù)據(jù)要壓縮或加密,執(zhí)行壓縮和/或加密操作。[第148段]根據(jù)訪問頻率,用戶數(shù)據(jù)被歸類為頻繁訪問(FA)或非頻繁訪問(NFA)0頻繁訪問(FA)數(shù)據(jù)被存儲在DRAM緩沖器中的單獨緩存中。將FA和NFA放在不同的緩存中,可以提高閃速存儲器持久性。[第149段]然后將被隔離的FA數(shù)據(jù)歸類為完整頁數(shù)據(jù)或部分頁的數(shù)據(jù)。一些部分頁面數(shù)據(jù)和其他部分頁數(shù)據(jù)組合在一起成為完整扇區(qū)數(shù)據(jù)。為了區(qū)分不同的主機訪問和LBA,部分扇區(qū)數(shù)據(jù)也組合在一起。NFA數(shù)據(jù)也歸類為完整頁數(shù)據(jù)和部分頁數(shù)據(jù),其中部分頁數(shù)據(jù)與其他完整扇區(qū)和部分扇區(qū)組合在一起。[第150段]圖9C是DRAM緩沖器中的頁面文件和臨時文件的數(shù)據(jù)流。主機寫入數(shù)據(jù)被寫入到數(shù)據(jù)輸入緩沖器,后者對數(shù)據(jù)類型(如頁面文件、臨時文件、用戶數(shù)據(jù)、FDB或FAT數(shù)據(jù)類型)進行識別。如果數(shù)據(jù)要壓縮或加密,執(zhí)行壓縮和/或加密操作。[第151段]頁面數(shù)據(jù)和臨時文件存儲在DRAM的緩沖器中不同的地方。分配專用的頁面文件緩沖區(qū)和臨時文件緩沖區(qū)可以提高閃速存儲器的持久性。[第152段]在壓縮和/或加密后,隔離的頁面數(shù)據(jù)被歸類為完整頁數(shù)據(jù)或部分頁數(shù)據(jù)。一些部分頁面數(shù)據(jù)和其他部分頁數(shù)據(jù)組合在一起成為完整扇區(qū)數(shù)據(jù)。部分扇區(qū)數(shù)據(jù)也可組合在一起成為不同的頁面文件。[第153段]臨時文件在壓縮和/或加密之后也歸類為完整頁臨時數(shù)據(jù)和部分頁臨時數(shù)據(jù),部分頁數(shù)據(jù)與臨時文件的其他完整扇區(qū)和部分扇區(qū)組合在一起。[第154段]圖10是一個根據(jù)主機請求對數(shù)據(jù)類型進行分類,以及對用戶數(shù)據(jù)過程的頁面文件、臨時文件、FAT、FDB進行調(diào)度的流程圖。主機的請求中包含一個邏輯地址,例如作為統(tǒng)一映射表192的一個索引的LBA,步驟304。來自統(tǒng)一映射表192的一個匹配條目被讀取。所述匹配條目的前幾位是數(shù)據(jù)類型位,用來表示什么樣的數(shù)據(jù)被存儲在該邏輯地址。取決于數(shù)據(jù)類型位,對不同的過程進行調(diào)度。[第155段]如果所述匹配條目的數(shù)據(jù)類型位為001,即步驟306,該數(shù)據(jù)用于從主存儲器到外圍存儲設(shè)備的交換的頁面字段,交換由主機上的內(nèi)存管理器執(zhí)行。這些文件不需要被存儲在閃速存儲器中,因而可以減少閃速存儲器的磨損。調(diào)用頁面文件流程308,詳見圖11-12。[第156段]如果所述匹配條目的數(shù)據(jù)類型位是01,即步驟310;該數(shù)據(jù)用于不需要被存儲在閃速存儲器的臨時文件,調(diào)用臨時文件流程312,詳見圖11-12。[第157段]當所述匹配條目的數(shù)據(jù)類型位100,即步驟314;該數(shù)據(jù)用于FAT條目。調(diào)用FAT流程316,詳見圖13。[第158段]步驟315中,當所述匹配條目的數(shù)據(jù)類型位為101,該數(shù)據(jù)用于FDB條目,調(diào)用FDB流程318,詳見圖11-12。[第159段]當數(shù)據(jù)類型位不屬于上述任何類型,即調(diào)用數(shù)據(jù)文件流程320。數(shù)據(jù)文件流程320詳見圖14-15。數(shù)據(jù)文件是用戶數(shù)據(jù)和應用程序數(shù)據(jù),這些數(shù)據(jù)應該先存儲在數(shù)據(jù)寫入高速緩存154,然后在被趕出數(shù)據(jù)寫入高速緩存154的情況下被復制到閃速存儲器。
[第160段]如果數(shù)據(jù)類型位是000,那么所述匹配條目尚未分配。這是到該邏輯地址的第一個主機寫入。圖10所示的數(shù)據(jù)文件流程320確定主機在顯示什么類型的數(shù)據(jù),并執(zhí)行合理的流程。[第161段]圖11顯示了一個用來讀取頁面文件、臨時文件或FDB文件的過程。每個數(shù)據(jù)類型可能有單獨的子程序,或者因為讀取過程類似,可以使用組合流程。[第162段]因為在讀取數(shù)據(jù)前,主機總是將數(shù)據(jù)寫入到閃速存儲器驅(qū)動器,而主機寫入過程中條目必定已經(jīng)被加載到統(tǒng)一映射表192中,因此,應在統(tǒng)一映射表192中找到一個匹配的條目,以服務于所有的主機讀取。[第163段]步驟402中,如果所述匹配項的數(shù)據(jù)類型位是XXlO或010,那么匹配的條目用于完整頁數(shù)據(jù)(FP,參照圖6)。從統(tǒng)一映射表192中該匹配條目讀取的指針PTR用來找到數(shù)據(jù),將數(shù)據(jù)讀到主機上,即步驟404。[第164段]步驟402中,如果所述匹配項的數(shù)據(jù)類型位既不是XXlO也不是010,那么匹配條目用于部分頁數(shù)據(jù)(PP,參考圖6)。從統(tǒng)一映射表192中該匹配條目讀取的指針PTR用來找到子扇區(qū)映射表,即執(zhí)行步驟406。初始扇區(qū)計數(shù)被設(shè)置為0,即執(zhí)行步驟410,以便讀取子扇區(qū)映射表中的第一個扇區(qū)條目。如果當前扇區(qū)的子扇區(qū)條目的第一位是0,即執(zhí)行步驟412,那么一個完整的扇區(qū)將被從SSS DRAM緩沖器20中指針SCTR所指向的位置讀出,即執(zhí)行步驟414。指針SCTR是從子扇區(qū)映射表194中當前扇區(qū)條目讀取的。當前扇區(qū)遞增到指向下一個扇區(qū)。如果當前扇區(qū)不是最后一個扇區(qū),即執(zhí)行步驟408,則系統(tǒng)檢查當前扇區(qū)的子扇區(qū)條目的第一個位,即執(zhí)行步驟412,并重復扇區(qū)處理。[第165段]如果當前扇區(qū)的子扇區(qū)條目的第一位是1,即執(zhí)行步驟412,那么部分扇區(qū)被從SSS DRAM緩沖器20中讀出。部分扇區(qū)位于一個從子扇區(qū)映射表194中當前扇區(qū)條目讀出的SCTR指針所指向的頁面上,即執(zhí)行步驟416。在該頁面中部分扇區(qū)的開始部分的字節(jié)偏移量為A (N),而部分扇區(qū)的長度為LEN (N),從子扇區(qū)映射表194中當前扇區(qū)條目讀取所有數(shù)據(jù)。每頁中只能有一個部分扇區(qū),所以該過程結(jié)束。[第166段]圖12A-C顯示一個用來寫入頁面文件、臨時文件或FDB文件的過程。每個數(shù)據(jù)類型可能有單獨的子程序,或者因為寫入過程類似,可以使用組合流程。[第167段]在圖12A中,如果主機提供了一份新的完整頁數(shù)據(jù),步驟420,但統(tǒng)一映射表192中的匹配條目的數(shù)據(jù)類型位不是XXlO或010,步驟424,舊的數(shù)據(jù)用于部分頁(PP)。通過將所有的I’s寫到所有16個條目,步驟426,子扇區(qū)映射表194中條目中指針SPTR指向的位置被釋放出來,以供將來使用。因為新的數(shù)據(jù)與完整的頁面對應,而不再需要子扇區(qū)映射表194,所以指針PTR指向的舊子扇區(qū)映射表194也被釋放。一個新的指針PTR被寫入到統(tǒng)一映射表192中的匹配條目上,而數(shù)據(jù)類型位被改變?yōu)閄XlO或010以表示完整頁(FP),步驟428。完整頁的主機數(shù)據(jù)然后將被寫入到SSS DRAM緩沖器20中那個統(tǒng)一映射表192中匹配條目的指針PTR所指向的位置,即執(zhí)行步驟422。[第168段]步驟424中,當統(tǒng)一映射表192中的匹配條目中的數(shù)據(jù)類型位為XXlO或010,舊數(shù)據(jù)與完整頁對應,這個過程就可以直接跳到步驟422,完整頁數(shù)據(jù)覆蓋掉SSSDRAM緩沖器20中的舊數(shù)據(jù)。[第169段]步驟420中,當主機提供了部分頁的新數(shù)據(jù),圖12B上的該過程繼續(xù)進行。如果統(tǒng)一映射表192中的匹配項的數(shù)據(jù)類型位不是XXlO也不是010,即執(zhí)行步驟430,舊數(shù)據(jù)用于部分頁(PP)。子扇區(qū)映射表194中條目中的指針SPTR指向的位置被釋放,以備將來使用,步驟432,指針PTR指向的舊的子扇區(qū)映射表也被釋放。[第170段]舊的部分扇區(qū)數(shù)據(jù)需要被刪除。SSS控制器40檢查當前項旁邊的組合數(shù)據(jù)。如果不存在組合數(shù)據(jù),SSS控制器40就會放上結(jié)束指針的標識,使該頁面可以用于未來的部分數(shù)據(jù)組合。如果這樣的組合不止一個,通過填充舊的部分數(shù)據(jù)的間隙,使所有其他組合向上移動,并改變其相應的子映射表的A (N)0[第171段]空子扇區(qū)映射表194位于SSSDRAM緩沖器20中,即執(zhí)行步驟436,創(chuàng)建PTR指針,這個指針指向該可用表。這個新的指針PTR被寫入到統(tǒng)一映射表192中的匹配條目中,為了指示部分頁(PP),數(shù)據(jù)類型位被改為XXll或011,即執(zhí)行步驟438。[第172段]步驟430中,如果統(tǒng)一映射表192中的匹配條目的數(shù)據(jù)類型位為XXlO或010,即舊的數(shù)據(jù)用于完整頁(FP),則執(zhí)行步驟434,基于另一個請求,SSS DRAM緩沖器20中的完整的數(shù)據(jù)頁被釋放,以備將來使用??兆由葏^(qū)映射表194位于SSS DRAM緩沖器20中,即執(zhí)行步驟436,創(chuàng)建PTR指針,這個指針指向該可用表。這個新的指針PTR被寫入到統(tǒng)一映射表192中的匹配條目中,為了指示局部頁(PP),數(shù)據(jù)類型位被改為XXll或011,即執(zhí)行步驟438。[第173段]在圖12C中,新的部分頁面數(shù)據(jù)被一個扇區(qū)一個扇區(qū)地寫入SSSDRAM緩沖器20中,扇區(qū)條目被加載到子扇區(qū)映射表194中。[第174段]如果來自主機的當前扇區(qū)是一個完整扇區(qū),即執(zhí)行步驟324,第I位是O、有指針SPTR和扇區(qū)計數(shù)SC的新條目被寫入到子扇區(qū)映射表194中,步驟326。完整的主機數(shù)據(jù)扇區(qū)被寫入到SSS DRAM緩沖器20中SPTR和SC標識的位置,步驟390。如果有另一個主機數(shù)據(jù)扇區(qū),步驟392,當前扇區(qū)就會遞增,步驟314,然后重復步驟324以及后面的過程。否則,過程結(jié)束。[第175段]如果來自主機的當前扇區(qū)是一個部分扇區(qū),步驟324,一個數(shù)據(jù)頭就會產(chǎn)生并且會和來自主機的部分扇區(qū)數(shù)據(jù)組合在一起形成一個組合頁。該組合頁將部分扇區(qū)收集起來,即執(zhí)行步驟302。指向該組合頁的指針SPTR、該組合頁內(nèi)的起始字節(jié)偏移量A(N)以及部分扇區(qū)數(shù)據(jù)和數(shù)據(jù)頭的長度LEN (N)被寫入到子扇區(qū)映射表194中一個新的子扇區(qū)條目中,步驟328。該過程結(jié)束,因為對于每條主機請求,僅可以從主機接收一個部分扇區(qū)。數(shù)據(jù)頭包含主機LBA (塊+頁面+扇區(qū))的信息。數(shù)據(jù)后面添加的尾端指針對頁面的可用性進行指示。[第176段]圖13A-B顯示了通往超耐用閃速存儲器驅(qū)動器的一個FAT通路。在圖13中,主機向由SSD原始格式?jīng)Q定的FAT的邏輯地址范圍讀取或?qū)懭霐?shù)據(jù)。當主機寫入數(shù)據(jù)的時候,即執(zhí)行步驟440,要遵守圖13B ;對于主機讀取數(shù)據(jù),圖13A繼續(xù)步驟442,在這里,邏輯地址被拿來與FATl和FAT2的地址空間的地址范圍進行比較。如果邏輯地址在FATl空間范圍內(nèi)(FAT區(qū)域的上半部分),那么頁偏移量被計算為來自主機的LBA減去FATl區(qū)域的起始地址剩下的部分,即執(zhí)行步驟444。在步驟446中,F(xiàn)AT條目被從SSS DRAM緩沖器20中的一個地址讀出。這個地址等于SSS DRAM緩沖器20中的FAT的起始地址(可能與邏輯地址空間中的FAT地址不同)加上步驟444計算的頁偏移量所得的值。此FAT數(shù)據(jù)被返回給主機以完成讀取。[第177段]如果邏輯地址在FAT2空間范圍內(nèi)(FAT區(qū)域的第二部分),那么頁偏移量被計算為來自主機的LBA減去FAT2區(qū)域的起始地址剩下的部分,步驟448。在步驟446中,F(xiàn)AT條目被從SSS DRAM緩沖器20中的一個地址讀出。這個地址等于SSS DRAM緩沖器20中的FAT的起始地址(可能與邏輯地址空間中的FAT地址不同)加上步驟448計算的頁偏移量所得的值。此FAT數(shù)據(jù)被返回給主機以完成讀取。請注意,單個FAT條目被存儲在SSS DRAM緩沖器20中,用于從主機訪問FATl和FAT2。[第178段]在圖13B中,主機向FAT寫入數(shù)據(jù)。當邏輯地址在FATl空間范圍內(nèi)(FAT區(qū)域的上半部分),步驟450,那么頁偏移量被計算為來自主機的LBA減去FATl區(qū)域的起始地址剩下的部分,即執(zhí)行步驟452。在步驟454中,來自主機的FAT條目被寫入SSSDRAM緩沖器20中的一個地址。這個地址等于SSSDRAM緩沖器20中的FAT的起始地址加上步驟452計算的頁偏移量后所得的值。FAT子映射表202中的FAT的閃速存儲器狀態(tài)位被更新為10,表示FATl已被被主機更新,但FAT2尚未更新,閃速存儲器30中的FATl數(shù)據(jù)是舊的,即執(zhí)行步驟456。使用步驟452算出的頁偏移量,F(xiàn)AT子映射表202中的子映射條目被訪問。[第179段]步驟450中,當邏輯地址在FAT2空間范圍內(nèi)(FAT區(qū)域的下半部分),與FAT2對應的主機數(shù)據(jù)被忽略,即執(zhí)行步驟453。存儲在SSS DRAM緩沖器20中的單個FAT條目已經(jīng)在前一次主機訪問的時候被寫入。FAT子映射表202中的FAT的閃速存儲器狀態(tài)位被更新為11,表示FATl和FAT2都已被主機更新,閃速存儲器30中的FATl數(shù)據(jù)和FAT2都是舊的,即執(zhí)行步驟458。使用步驟453算出的頁偏移量,F(xiàn)AT子映射表202中的子映射條目被訪問。[第180段]狀態(tài)位可以用來定期或在電源關(guān)閉/停電的時候,將來自SSSDRAM緩沖器20的無效的FAT內(nèi)容備份到閃速存儲器30中??赡苄枰獧z查FAT子映射表202的兩個狀態(tài)位。[第181段]圖14顯示了超耐用閃速存儲器驅(qū)動器如何處理主機讀取的用戶數(shù)據(jù)文件。用戶數(shù)據(jù)可能包括主機存儲的用戶數(shù)據(jù),或用戶在主機上執(zhí)行的應用程序所存儲的數(shù)據(jù),但不包括臨時文件、頁面文件、FAT和FDB條目等,因為這些數(shù)據(jù)在調(diào)用數(shù)據(jù)文件過程320前就已經(jīng)被圖10所述步驟篩選出來。在數(shù)據(jù)文件過程320被調(diào)用且主機請求讀取操作時,圖14的過程被調(diào)用。在數(shù)據(jù)文件過程320被調(diào)用且主機請求寫入操作,圖15的過程被調(diào)用。[第182段]使用主機請求的邏輯地址在統(tǒng)一映射表192中找到匹配的條目。讀取所述匹配項的前幾位獲得數(shù)據(jù)類型位。如果數(shù)據(jù)類型位是11X1,那么所述匹配項的舊數(shù)據(jù)被存儲在閃速存儲器30中,就要從閃速存儲器30讀出數(shù)據(jù)。當數(shù)據(jù)類型位為11X0,所述匹配項就指SSS DRAM緩沖器20中存儲的數(shù)據(jù),所以就要訪問DRAM以獲得主機讀取的數(shù)據(jù),步驟462。[第183段]如果數(shù)據(jù)類型位是110,步驟460,數(shù)據(jù)被作為完整的頁面存儲,從SSS DRAM緩沖器20中讀取完整的頁面,步驟476,期間要使用所述匹配項的指針PTR來找到讀出數(shù)據(jù)的位置。如果主機只對本頁面上的幾個扇區(qū)提出請求,從整頁中提取這些扇區(qū)并將它們發(fā)送給主機。如果已確定步驟462中數(shù)據(jù)被存儲在閃速存儲器30中,那么使用指針PTR讀取閃速存儲器30而非SSS DRAM緩沖器20。[第184段]如果數(shù)據(jù)類型位不是110,步驟460,數(shù)據(jù)被存儲在部分頁(PP)中。使用統(tǒng)一映射表192中匹配條目中讀取的指針PTR來找到子扇區(qū)映射表194,對其執(zhí)行讀取操作,步驟466。當前扇區(qū)被初始化到零,步驟464,或初始化到一些主機請求的其他值。子扇區(qū)映射表194中的與當前扇區(qū)對應的條目被讀出。如果該條目的第一位為O,步驟468,那么條目指向完整扇區(qū)。從子扇區(qū)映射表194中的當前條目讀取指針SCTR用來找到讀取數(shù)據(jù)的位置,取決于前面的462步驟的結(jié)果,可能在SSS DRAM緩沖器20或閃速存儲器30中。當前扇區(qū)是遞增的,步驟472。如果當前扇區(qū)不是最后一個扇區(qū),該過程循環(huán)回步驟468,步驟474。該過程結(jié)束于最后一個扇區(qū)。[第185段]如果與當前扇區(qū)條目對應的子扇區(qū)映射表194中的條目的第一位是1,步驟468,那么條目指向部分扇區(qū)。使用從子扇區(qū)映射表194中的當前條目讀出的指針SPTR、組合頁中的起始字節(jié)偏移量A (N)、部分扇區(qū)數(shù)據(jù)和數(shù)據(jù)頭的長度LEN (N),從DRAM或閃速存儲器(取決于前面的步驟462的結(jié)果)中的組合頁面讀取部分扇區(qū)數(shù)據(jù)。該部分扇區(qū)數(shù)據(jù)與較早的步驟472獲得的完整扇區(qū)數(shù)據(jù)一起被發(fā)送給主機。因為每個主機請求只允許一個部分扇區(qū),所以讀取過程結(jié)束。[第186段]圖15A-1顯示了超耐用閃速存儲器驅(qū)動器如何處理主機在頻繁訪問區(qū)和非頻繁訪問區(qū)寫入的用戶數(shù)據(jù)文件。用戶數(shù)據(jù)可能包括主機存儲的用戶數(shù)據(jù),或用戶在主機上執(zhí)行的應用程序所存儲的數(shù)據(jù),但不包括臨時文件、頁面文件、FAT和FDB條目等,因為這些數(shù)據(jù)在數(shù)據(jù)文件過程320前就已經(jīng)被圖10所述步驟篩選出來。在數(shù)據(jù)文件過程320被調(diào)用且主機請求讀取操作時,圖14的過程被調(diào)用。在數(shù)據(jù)文件過程320被調(diào)用且主機請求寫入操作時,圖15的過程被調(diào)用。[第187段]在圖15A中,現(xiàn)有邏輯塊地址的訪問計數(shù)器增加,步驟810。該訪問計數(shù)器用于區(qū)分頻繁訪問(FA)區(qū)和非頻繁訪問(NFA)區(qū)。這兩個區(qū)域分別存儲在DRAM緩沖器20中FA高速緩存區(qū)和NFA高速緩存區(qū)。[第188段]啟用壓縮后,步驟812,主機數(shù)據(jù)被傳送給壓縮引擎,步驟814。帶有新數(shù)據(jù)頭的壓縮數(shù)據(jù)通常更小,并有一個計算得出的新的、更小的扇區(qū)計數(shù)(SC)。如果壓縮未導致數(shù)據(jù)大小改變,比如因為壓縮數(shù)據(jù)頭的增加,控制器可選擇不進行壓縮。壓縮條目和映射表,比如圖9A中的LBA表210和壓縮LBA表212,充滿了條目。壓縮數(shù)據(jù)和新的SC則代替了原先的主機數(shù)據(jù)和SC,步驟816。[第189段]啟用加密時,步驟818,主機數(shù)據(jù)或壓縮數(shù)據(jù)傳送至加密引擎,步驟820。加密數(shù)據(jù)代替了原先的數(shù)據(jù),但數(shù)據(jù)大小保持不變,步驟822。[第190段]當訪問計數(shù)器的計數(shù)大于閾值N時,步驟824,訪問的目的地為頻繁訪問(FA)LBA,圖15B所示流程繼續(xù)。當訪問計數(shù)器的計數(shù)小于閾值N時,步驟824,訪問的目的地就是非頻繁訪問(NFA) LBA,圖15C所示流程繼續(xù)。[第191段]在圖表15B中,當主機寫入一整頁新的FA數(shù)據(jù),步驟480,執(zhí)行圖15B, D所示流程。來自主機的邏輯地址用來在統(tǒng)一映射表192中尋找匹配的條目。當匹配條目的數(shù)據(jù)類型位為000時,步驟482,該地址上沒有主機之前寫入的數(shù)據(jù)。流程跳至圖15D。[第192段]當匹配條目中的數(shù)據(jù)類型位為111時,步驟484(早期測試排除了其他可能的數(shù)據(jù)類型位組合),舊頁面為部分頁(PP)。執(zhí)行舊扇區(qū)清理過程490 (圖16),釋放舊的部分頁面數(shù)據(jù)和舊的子扇區(qū)映射表194.然后圖1 所示流程繼續(xù)。
[第193段]當匹配條目的數(shù)據(jù)類型位為110時,即執(zhí)行步驟484,舊頁面為完整頁(FP)。當數(shù)據(jù)類型位為1101時,即執(zhí)行步驟486,舊數(shù)據(jù)存儲在閃速存儲器30中。從統(tǒng)一映射表192中匹配條目讀取的指針PTR所指向的數(shù)據(jù)被放入垃圾收集器以便以后進行清理和重新使用,步驟461。然后圖MD所示流程繼續(xù)。[第194段]當數(shù)據(jù)類型位為1100時,即執(zhí)行步驟486,舊數(shù)據(jù)存儲在SSSDRAM緩沖器20中。跳至圖15D,即執(zhí)行步驟492,新的主機數(shù)據(jù)被寫入SSS DRAM緩沖器20中,統(tǒng)一映射表192中匹配條目讀取的指針PTR所指向的位置。匹配條目不需變動。[第195段]對于所有其它進入圖1 的流量,使用數(shù)據(jù)類型位1100和指針PTR將統(tǒng)一映射表192中的匹配條目寫入SSS DRAM緩沖器20中一個專門接收主機寫入數(shù)據(jù)的位置,即執(zhí)行步驟488。數(shù)據(jù)類型位1100表示存儲在DRAM中的完整數(shù)據(jù)頁的用戶文件。然后主機數(shù)據(jù)被寫入DRAM中的那個位置,即執(zhí)行步驟492。當SSS DRAM緩沖器20中數(shù)據(jù)寫入FA高速緩存已滿或?qū)⒁獫M,步驟650,然后部分數(shù)據(jù)被拋出緩存以騰出額外的空間。拋出緩存的完整的FA高速緩存頁或完整的FA高速緩存塊都能被識別,步驟652,比如通過搜索剛使用過的(LRU)頁。還會找到閃速存儲器中的空白頁。剛使用過的FA高速緩存頁面被復制到閃速存儲器中的空白頁面,以“擲出” FA完整頁,即執(zhí)行步驟654?!皵S出”的頁面的指針指向閃速存儲器中的新位置,而不是DRAM中的舊位置。寫入流程結(jié)束。[第196段]當主機寫入新的部分數(shù)據(jù)頁,即執(zhí)行步驟480(圖15B),圖15F所示流程繼續(xù)。[第197段]在圖15F中,當匹配條目的數(shù)據(jù)類型位為000時,即執(zhí)行步驟502,該地址沒有主機之前寫入的數(shù)據(jù)。無匹配條目,或匹配條目未分配給該數(shù)據(jù)類型。不需要清理舊的匹配條目,因此流程跳入步驟514。否則,流程繼續(xù)步驟504。[第198段]當匹配條目的數(shù)據(jù)類型位為111時,步驟504(早期測試排除了其他可能的數(shù)據(jù)類型位組合),舊的頁面為部分頁(PP)。舊的部分頁扇區(qū)數(shù)據(jù)被發(fā)送給垃圾收集器,步驟512。垃圾收集器用來存放閃速存儲器30中存儲的、被新的主機數(shù)據(jù)覆蓋的扇區(qū)。然后圖15H所示流程繼續(xù)。[第199段]當匹配條目中的數(shù)據(jù)類型位為110時,步驟504,舊的頁面為完整頁(FP)0當數(shù)據(jù)類型位為1101時,步驟506,舊的數(shù)據(jù)存儲在閃速存儲器30中。從統(tǒng)一映射表192中匹配條目讀取的指針PTR所指向的舊閃速存儲器數(shù)據(jù)被放入垃圾收集器,稍后進行清理和重新使用,步驟510。[第200段]當數(shù)據(jù)類型位為1100時,步驟506,舊的數(shù)據(jù)存儲在SSSDRAM緩沖器20中。存儲在SSSDRAM緩沖器20中的,從統(tǒng)一映射表192中匹配條目讀取的指針PTR所指向的舊的整頁數(shù)據(jù)被釋放,用作其他用途,步驟508。[第201段]使用數(shù)據(jù)類型位1110和指針PTR將統(tǒng)一映射表192中的匹配條目寫ASSS DRAM緩沖器20中一個專門接收主機寫入數(shù)據(jù)的位置,步驟514。數(shù)據(jù)類型位1110表示存儲在DRAM中的部分數(shù)據(jù)頁的用戶文件。[第202段]當前的扇區(qū)計數(shù)初始化為扇區(qū)0,步驟516,在SSSDRAM緩沖器20中寫進匹配條目的新指針PTR所指向的位置創(chuàng)建一個新的子扇區(qū)映射表194,步驟518。[第203段]在圖15H中,當主機為當前扇區(qū)計數(shù)發(fā)送完整扇區(qū)時,步驟324,使用
00、SPTR、SC,寫入由當前扇區(qū)計數(shù)選擇的子扇區(qū)映射表194中的條目,步驟326。類型數(shù)位OO指存儲在DRAM的FA高速緩存中的完整扇區(qū),而SPTR是一個指向SSS DRAM緩存20中FA數(shù)據(jù)的指針,而SC是當前扇區(qū)計數(shù)。來自主機的完整扇區(qū)被寫入SSSDRAM緩存20中FA高速緩存中指針SPTR指向的頁面、SC指向的扇區(qū),步驟330。[第204段]如果當前扇區(qū)計數(shù)不是頁面上的最后一個扇區(qū),步驟332,那么當前扇區(qū)計數(shù)就增加,步驟334,流程回至步驟324,處理來自主機的下一個扇區(qū)。[第205段]當主機為當前扇區(qū)計數(shù)發(fā)送部分扇區(qū)的時候,步驟324,一個數(shù)據(jù)頭便產(chǎn)生,然后與來自主機的部分扇區(qū)數(shù)據(jù)組合在一起形成組合頁。該組合頁將部分扇區(qū)收集起來,方便FA用戶數(shù)據(jù)的訪問,步驟322。類型位為10,指向該組合頁的指針SPTR、該組合頁內(nèi)的起始字節(jié)偏移量A (N)以及部分扇區(qū)數(shù)據(jù)和數(shù)據(jù)頭的長度LEN (N)被寫入到子扇區(qū)映射表194中新的子扇區(qū)條目中,步驟329。類型位10表示存儲在DRAM的FA緩存區(qū)中的部分扇區(qū)。該過程結(jié)束,因為對于每條主機請求,僅可以從主機接收一個部分扇區(qū)。[第206段]當寫入SSSDRAM緩沖器20的FA高速緩存內(nèi)的數(shù)據(jù)寫滿或接近寫滿時,步驟656,然后部分數(shù)據(jù)被拋出緩存以騰出額外的空間。拋出緩存的扇區(qū)數(shù)據(jù)頁能被識另IJ,比如通過搜索剛使用過的(LRU)頁。還會找到閃速存儲器中的空白頁。剛使用過的高速緩存頁面被復制到閃速存儲器中的空白頁面,以“擲出”部分頁?!皵S出”的頁面的指針指向閃速存儲器中的新位置,而不是DRAM中的舊位置。寫入流程結(jié)束。在數(shù)據(jù)“拋出”發(fā)生前,為了減少了閃速存儲器寫入和磨損,有著相同LBA的多個寫入數(shù)據(jù)沒有被寫入到閃速存儲器20中。[第207段]圖15B、D、F和H中顯示了FA訪問的流量,而圖15C、E、G和I顯示了NFA訪問的流量。在圖15E中,步驟651檢查了 NFA緩存而不是圖1 中FA緩存,步驟650,在NFA緩存上而NFA緩存上執(zhí)行操作。同樣,在圖151中,部分扇區(qū)使用步驟323的NFA緩存進行壓縮,而完整扇區(qū)則使用步驟331的NFA進行壓縮。其余的FA流量和NFA流量非常相似。[第208段]圖16的流程圖顯示了舊扇區(qū)的清理過程。舊扇區(qū)清理過程490用于清理子扇區(qū)映射表194中舊條目。使用讀取自統(tǒng)一映射表192中匹配條目的指針PTR來查找子扇區(qū)映射表194。當前扇區(qū)計數(shù)初始化成0,步驟520。[第209段]如果子扇區(qū)映射表194中當前扇區(qū)計數(shù)指向的當前條目的第一位是O時,步驟522,該條目與完整扇區(qū)對應。從當前條目讀取的指針SPTR指向的舊數(shù)據(jù)被放入垃圾收集器進行擦除和重新使用(如果在閃速存儲器中)(當前條目中第二位是1),或釋放出來供另一流程使用(如果在SSS DRAM緩存20中)(當前條目中第二位是0),步驟524。[第210段]子扇區(qū)映射表194中的當前條目被所有的I’s覆蓋,表明該條目無效,步驟526。如果當前扇區(qū)計數(shù)不是頁面中的最后一個扇區(qū),步驟528,當前扇區(qū)計數(shù)就會增加,步驟530,從步驟522開始重復流程。[第211段]如果子扇區(qū)映射表194中當前扇區(qū)計數(shù)指向的當前條目的第一位是I時,步驟522,該條目與部分扇區(qū)對應。從當前條目讀取的指針SPTR指向的舊數(shù)據(jù)被放入垃圾收集器進行擦除和重新使用(如果在閃速存儲器中)(當前條目中第二位是1),或釋放出來供另一流程使用(如果在SSS DRAM緩存20中)(當前條目中第二位是0),步驟532因為部分扇區(qū)在組合頁面上,組合頁上只有一部分被釋放,從長度LEN(N)的字節(jié)A(N)開始被從當前扇區(qū)條目中讀取。
[第212段]子扇區(qū)映射表194中的當前條目被所有的I’s覆蓋,表明該條目無效,步驟526。當?shù)竭_最后一個扇區(qū)時,步驟528,扇區(qū)清理流程490結(jié)束,控制返回調(diào)用過程。[第213段]圖17A-E是使用完整頁和部分頁的FA高速緩存和NFA高速緩存進行用戶數(shù)據(jù)處理的流程圖。在圖17A中,主機數(shù)據(jù)被識別為用戶數(shù)據(jù)。來自主機的寫入數(shù)據(jù)移至數(shù)據(jù)輸入緩沖區(qū)(DIB),步驟830。當數(shù)據(jù)輸入緩沖區(qū)寫滿時,步驟832,控制器向主機發(fā)回請求,要求主機停止發(fā)送新寫入的數(shù)據(jù),步驟834。然后新寫入的數(shù)據(jù)被從DIB讀取,并壓縮和/或加密(如可能),步驟836。用戶數(shù)據(jù)分為完整頁或部分頁數(shù)據(jù),步驟838,以及FA或NFA數(shù)據(jù),步驟840和步驟842。[第214段]在圖17B中部分頁FA用戶數(shù)據(jù)得到處理。該數(shù)據(jù)存儲在DRAM的FA部分頁(FA-PP)緩存中,步驟844。當FA-PP緩存已滿,步驟846,要求主機停止發(fā)送更多元據(jù),步驟848。部分頁數(shù)據(jù)和其他主機寫入的部分頁數(shù)據(jù)組合在一起,步驟850。該組合操作可能要求數(shù)個周期。組合操作完成時,步驟852,圖17E所示流程繼續(xù)。組合操作未完成時,步驟852,就會收到來自主機的新寫入數(shù)據(jù),步驟854,該新數(shù)據(jù)移至數(shù)據(jù)輸入緩沖區(qū),步驟858。如果數(shù)據(jù)輸入緩沖區(qū)已滿,步驟852,控制器向主機發(fā)回請求,要求主機停止發(fā)送新的寫入數(shù)據(jù),步驟860。流程繼續(xù)直至組合完成,步驟852。[第215段]在圖17C中部分頁NFA用戶數(shù)據(jù)得到處理。NFA數(shù)據(jù)存儲在DRAM的NFA部分頁(NFA-PP)緩存中,步驟864中。當NFA-PP緩存已滿,步驟866,要求主機停止發(fā)送更多元據(jù),步驟868。部分頁數(shù)據(jù)和其他主機寫入的部分頁數(shù)據(jù)組合在一起,步驟870。該組合操作可能要求數(shù)個周期。組合操作完成時,步驟872,圖17E所示流程繼續(xù)。組合操作未完成時,步驟872,就會收到來自主機的新寫入數(shù)據(jù),步驟874,該新數(shù)據(jù)移至數(shù)據(jù)輸入緩沖區(qū),步驟876。如果數(shù)據(jù)輸入緩沖區(qū)已滿,步驟878控制器將向主機發(fā)回請求,要求主機停止發(fā)送新的寫入數(shù)據(jù),步驟880。流程繼續(xù)直至組合完成,步驟872。[第216段]在圖17D中,完整頁FA用戶數(shù)據(jù)存儲在DRAM的FA完整頁(FA-FP)緩存中,步驟882。當FA-FP緩存已滿,步驟886,那么FA-FP緩存中的LRU頁面就會被“拋A^FA-FP緩存中,步驟888。這可能會造成NFA-FP緩存被存滿,因此,需要檢查NFA-FP有無被存滿,步驟890。[第217段]完整頁NFA使用數(shù)據(jù)存儲在DRAM的NFA完整頁(NFA-FP)高速緩存中,步驟884。當NFA完整頁緩存存滿時,步驟890,那么NFA-FP中的LRU頁面被“拋入”閃速存儲器中,步驟892。[第218段]在圖17E中,當數(shù)據(jù)輸入緩沖區(qū)(DIB)存滿時,步驟894,如果新寫入數(shù)據(jù)被從數(shù)據(jù)輸入緩沖區(qū)中讀取,并被壓縮/或加密(如可能),流程跳回至圖17A,步驟836。如果數(shù)據(jù)輸入緩沖區(qū)未存滿,步驟894,允許主機發(fā)送新寫入數(shù)據(jù),步驟896。當收到來自主機的新寫入數(shù)據(jù),且這些數(shù)據(jù)被加載到數(shù)據(jù)輸入緩存區(qū)時,步驟898,如果新寫入數(shù)據(jù)被從數(shù)據(jù)輸入緩沖區(qū)中讀取,并被壓縮/或加密(如可能),流程跳回至圖17A,步驟836。[第219段]當FA-PP緩存有新數(shù)據(jù)時,步驟902,如果新寫入數(shù)據(jù)與其他部分頁FA數(shù)據(jù)組合在一起,流程跳回圖17B,步驟850。當NFA-PP緩存有新數(shù)據(jù)時,步驟904,如果新寫入數(shù)據(jù)與其他部 分頁NFA數(shù)據(jù)組合一起進行,流程跳回圖17C,步驟870。[第220段]圖18A-B顯示了加密頁面和壓縮頁面的處理。在圖18A中,當主機向閃速存儲器驅(qū)動器寫入數(shù)據(jù),步驟336,當壓縮啟用時,步驟338,主機數(shù)據(jù)被發(fā)送至壓縮引擎,步驟340。啟用壓縮后,步驟812(見圖15A),主機數(shù)據(jù)被傳送給壓縮引擎,步驟814。帶有新數(shù)據(jù)頭的壓縮數(shù)據(jù)通常更小,并有步驟342計算得出的新的、更小的扇區(qū)計數(shù)(SC)。壓縮條目和映射表,比如圖9A中的LBA表210和壓縮LBA表212,充滿了條目。壓縮數(shù)據(jù)代替了原先的主機數(shù)據(jù)。[第221段]加密時,步驟344,主機數(shù)據(jù)或壓縮數(shù)據(jù)被發(fā)送至加密引擎,步驟346。加密數(shù)據(jù)取代了舊數(shù)據(jù),但大小不變,步驟348。然后可繼續(xù)高級流程。[第222段]圖18B顯示的是主機讀取。該數(shù)據(jù)位置啟用加密后,步驟360,從閃速存儲器30或SSSDRAM緩沖器20讀取的數(shù)據(jù)被發(fā)送至解密引擎,步驟350。解密數(shù)據(jù)取代了加密數(shù)據(jù),步驟352。該數(shù)據(jù)位置啟用壓縮后,步驟354,讀取的數(shù)據(jù)或解密的數(shù)據(jù)被發(fā)送至解壓縮引擎,步驟356。查閱壓縮條目和映射表,比如圖9A中的LBA表210和壓縮LBA表212,以便確定壓縮數(shù)據(jù)段的起點以及整體大小。從壓縮數(shù)據(jù)段提取主機要求的實際扇區(qū),步驟358,這些數(shù)據(jù)然后就回到了主機。[第223段]數(shù)據(jù)壓縮可以減小數(shù)據(jù)大小。對于不同類型的數(shù)據(jù),比如視頻、音頻等,可使用許多不同的壓縮技術(shù)。每種不同類型的數(shù)據(jù)需要特定的數(shù)據(jù)壓縮算法來實現(xiàn)最大的大小縮減量。適用的壓縮算法將選擇可獲得最佳結(jié)果的算法。加到壓縮數(shù)據(jù)上的數(shù)據(jù)頭包括壓縮引擎所用的算法。[第224段]另一種壓縮技術(shù)減少了寫入閃速存儲器的數(shù)量。閃速存儲器控制器尋求數(shù)據(jù)集的內(nèi)容。如果有類似的,控制器不會將全部內(nèi)容寫入閃速存儲器,而是將指針指向的現(xiàn)有壓縮數(shù)據(jù)集以及當前數(shù)據(jù)集和現(xiàn)有數(shù)據(jù)集的差額(如果兩者之間有變量增量)。如果發(fā)生重復,那么閃速存儲器寫入量可減少更多。[第225段]可以包括一個從閃速存儲器中追蹤塊讀取錯誤的流程。這個流程對于收集S.M.A.R.T.自我監(jiān)測、分析和報告技術(shù)可能有用。S.M.A.R.T.是一個標準集,可通過收集SSD的其他重要數(shù)據(jù),然后使用供應商命令分析數(shù)據(jù)進行調(diào)試、統(tǒng)計等。[第226段]可收集數(shù)據(jù)可能包括:動力循環(huán)計數(shù)、異常動力循環(huán)計數(shù)、通電時壞塊計數(shù)、壞塊累積計數(shù)、通電時含壞頁計數(shù)的塊、含壞頁計數(shù)的累積塊、通電時含壞頁計數(shù)的塊、累積錯誤頁面計數(shù)、通電時需要額外ECC保護的頁面計數(shù)、累積的額外ECC保護的頁面計數(shù)、通電時ECC讀取錯誤計數(shù)、累積的ECC重要錯誤計數(shù)、通電時主機LBA讀取計數(shù)、累積的主機LBA寫入計數(shù)、通電時閃速存儲器頁讀取計數(shù)、累積頁面讀取計數(shù)、通電時閃速存儲器頁寫入計數(shù)、累積閃速存儲器頁寫入計數(shù)、通電時最小塊擦除計數(shù)、通電時最大塊擦除計數(shù)、通電時總開機時間、累積開機時間。[第227段]有用的SSD健康信息可從可收集信息中導出。比如,比較主機LBA寫入計數(shù)和閃速存儲器頁寫入計數(shù),可給出寫入放大指示。閃速存儲器頁寫入計數(shù)、總開機時間、動力循環(huán)計數(shù)和異常動力循環(huán)計數(shù)可給出SSD102的壽命狀態(tài)。供應商可根據(jù)客戶購買年數(shù)(比如3年)或閃速存儲器驅(qū)動器的總主機寫入數(shù)量提供實際保修。附加提供的信息可用于更好的保修政策,而非僅針對數(shù)年的購買使用。保修以閃速存儲器驅(qū)動器的總主機寫入數(shù)量為基礎(chǔ)。用于遞增閃速存儲器裝置容量的閃速存儲器芯片的額定寫入/擦除持續(xù)的次數(shù)定義為閃速存儲器驅(qū)動器的總主機寫入數(shù)量??筛鶕?jù)所用的閃速存儲器芯片的額定寫入/擦除持續(xù)的次數(shù)以及計算每個獨立塊的實際擦除計數(shù)來推導固態(tài)驅(qū)動器(SSD)的剩余壽命。[第228段]SSD的已用/剩余壽命由下列因素決定:1、平均寫入/擦除計數(shù)高于額定塊寫入/擦除計數(shù);2、主機總數(shù)據(jù)寫入計數(shù)高于閃速存儲器裝置的總數(shù)據(jù)寫入;3、寫入放大(WA);4、備用塊達最大容量比。為獲得所有必要信息,閃速存儲器裝置控制器需要管理一些S.M.A.R.T.功能。[第229段]對于第一個因素,塊/擦除計數(shù)表164維護了寫入/擦除計數(shù)器和每個塊的狀態(tài)。把所有非壞塊相加,然后除以非壞塊的數(shù)量,就可以得到平均計數(shù)。還需要關(guān)于閃速存儲器類型的額定寫入/擦除數(shù)量。比如,當平均寫入擦除計數(shù)為1000,MLC的額定寫入/擦除計數(shù)為5000時,那么SSD的已用壽命為20%,剩余壽命為80%。[第230段]對于第二個因素,閃速存儲器裝置控制器需管理來自主機的總數(shù)據(jù)寫入計數(shù)累積壽命和寫入閃速存儲器裝置的總數(shù)據(jù)(兩者均在扇區(qū)單元中)。比如,當累積得總數(shù)據(jù)寫入計數(shù)為100,000,閃速存儲器裝置的總數(shù)據(jù)寫入為500,000時,那么SSD的已用壽命為20%,剩余壽命為80%。[第231段]對于第三個因素,寫入放大(WA)可通過來自主機的總數(shù)據(jù)寫入的累積壽命(數(shù)據(jù)在扇區(qū)單元內(nèi))、閃速存儲器型相關(guān)的每個頁面的一些扇區(qū)和累積閃速存儲器頁面寫入計數(shù)(數(shù)據(jù)在頁面單元內(nèi))推導。和第二個因素相結(jié)合,可以獲得閃速存儲器裝置更準確的壽命狀態(tài)。比如,當累積總數(shù)據(jù)寫入計數(shù)為100,000 (扇區(qū)),16扇區(qū)/頁,而累積閃速存儲器頁面寫入計數(shù)為3,000 (頁),那么寫入放大可計算為3000*16/100,000=0.48。寫入放大小于I意味著整體閃速存儲器裝置算法提高了寫入效率和SSD閃速存儲器裝置的使用壽命??梢员磉_為累積總數(shù)據(jù)寫入計數(shù)乘以寫入放大,或者閃速存儲器裝置的總數(shù)據(jù)寫入除以寫入放大。如果寫入放大與第二個因素中的例子相結(jié)合,SSD的已用壽命那么為
9.6%,剩余壽命為90.4%。[第232段]對于第四個因素,閃速存儲器裝置需追蹤日益遞增的壞塊數(shù)量。在剛制造出來的時候,閃速存儲器裝置可能有執(zhí)行90%閃速存儲器的容量。閃速存儲器裝置系統(tǒng)將為運行代碼安排出固定的部分。某個固定部分用于元數(shù)據(jù)表S.M.A.R.T.功能數(shù)據(jù)收集。某個固定部分用于已經(jīng)存在的制造性壞塊。剩余塊作為備用塊。將用于融合閃速存儲器中有效數(shù)據(jù)和新數(shù)據(jù)的持久性備用與交換塊區(qū)被寫回閃速存儲器中,以便使用較少的備用塊。遞增了超過規(guī)定的大小。壞塊隨著時間的推移而遞增。有用的備用塊數(shù)量減少。當備用塊數(shù)量為O時,會因?qū)懭胄聰?shù)據(jù)的空白塊不夠和更頻繁的垃圾收集活動而影響性能。如果備用塊的數(shù)量減至零,理論上來說,可用空間比所聲稱的容量要小,閃速存儲器裝置即可宣告無用。如果閃速存儲器裝置并未完全使用,閃速存儲器裝置控制器可通過降低在主開機記錄(MBR)的16字節(jié)分割記錄中一個分區(qū)的扇區(qū)總數(shù)量來減小容量,而不是宣告閃速存儲器裝置無用。如果有超過新縮減容量的LBA存在,閃速存儲器裝置控制器將檢查FAT和FDB,然后修改新容量限制范圍內(nèi)新LBA地址的所有相關(guān)FAT、FDB和LBA數(shù)據(jù)。[第233段]如果SSD已用壽命/剩余壽命更為復雜,可將上述所有四個因素相結(jié)
八
口 ο[第234段]閃速存儲器裝置的總數(shù)據(jù)寫入取決于裝置容量(P,比如執(zhí)行總內(nèi)存的90%)和閃速存儲器類型。總內(nèi)存以所用芯片的數(shù)量(N)和芯片大小(閃速存儲器內(nèi)的塊的數(shù)量(J)和每個塊內(nèi)兆字節(jié)的大小(K))為基礎(chǔ)。閃速存儲器類型決定了每個閃速存儲器塊可支持的編程/擦除周期(H,MLC為5000)的數(shù)量。閃速存儲器裝置的總數(shù)據(jù)寫入可表達為N*J*K*H*P。比如,裝置有4個MLC芯片,每個芯片有8,192個塊,每個塊有2兆字節(jié),那么裝置的容量大小為90%內(nèi)存。閃速存儲器裝置的總數(shù)據(jù)寫入為4*8,192*2M*5, 000*90%=294, 912,000 兆字節(jié)(或 576,000 扇區(qū)寫入)。[第235段]來自閃速存儲器裝置的預期總寫入取決于裝置的容量(所用的閃速存儲器芯片數(shù)量(N),閃速存儲器中塊數(shù)量(J)和一個塊中兆字節(jié)數(shù)量(K)),和閃速存儲器類型(比如5000次的編程/擦除周期(H)的MLC)。閃速存儲器按小時計算的總壽命預計取決于用戶使用量,比如每天寫入閃速存儲器的兆字節(jié)數(shù)量(G,公式包含的寫入放大)。因此工作時數(shù)預計為N*J*K*H*24/G。比如,含多層單元(MLC) (H=5, 000)的64GB閃速存儲器裝置(N=4,J=8, 192,K=2)在工作環(huán)境中每天寫入8,000兆字節(jié)(G=8, 000),結(jié)果得到I, 069,400小時(44,558天或122年)的預期壽命。事實上,已所用的SSD壽命的百分比可通過壞塊數(shù)量與總塊數(shù)量的比例、平均塊寫入/擦除計數(shù)與規(guī)定的閃速存儲器寫入/擦除計數(shù)的比例等計算出來。該類信息提醒用戶采取必要措施避免故障時間。[第236段]執(zhí)行的數(shù)據(jù)收集的功能可幫助用戶和固件工程師評估超耐久性SSD的固件運行良好程度。通過比較裝置的寫入數(shù)量和閃速存儲器的寫入數(shù)量,可實現(xiàn)真正的寫入放大。通過比較每個塊寫入/擦除計數(shù),最小/最大/平均計數(shù)可顯示耗損平衡算法的良好程度(動態(tài)耗損平衡和靜態(tài)耗損平衡)。[第237段]平均故障間隔(MTBF)值預測是產(chǎn)品開發(fā)的重要元素。運行期總和除以檢測到故障的數(shù)量即可獲得平均故障間隔。每個運行期由(計劃外)停機時間減去(維修后)工作時間獲得。本應用規(guī)定的可延長運行周期的所有工作,比如壓縮、數(shù)據(jù)寫入緩存、ECC、壞頁管理、耐力備用/交換、各種表格等,可導致MTBF值增加。[第238段]一些塊在使用第一級ECC時可能已經(jīng)存在讀取錯誤。使用更多ECC位的更強大的ECC可用于這些塊。[第239段]當使用更強大的二級ECC無法糾正產(chǎn)生的讀取錯誤時,就會遞增一個重大讀取錯誤計數(shù)器。這些ECC錯誤計數(shù)器可被塊管理程序使用,決定何時把塊中每頁所用ECC位的數(shù)量增加到二級ECC,或何時將塊標記為壞塊并移走物理塊留待后用。[第240段]S.M.A.R.T.數(shù)據(jù)收集器170可能需要一或兩頁的內(nèi)存空間??刂破魇褂贸鲋鳈CLBA范圍的LBA頁面地址來映射頁面用途。[第241段]圖19A-D演示了檢測和處理壞頁面和壞塊的流程。在圖19A中,一旦閃速存儲器30中的某個塊被擦除,該物理塊的擦除計數(shù)器被遞增,塊的狀態(tài)被改為空塊
(000)或有壞頁的空塊(100),取決于之前塊的狀態(tài)和當前頁面的狀態(tài),步驟554。塊/擦除計數(shù)表164 (圖3)存儲在SSS DRAM緩沖器20中,如果DRAM的空間不足,就會被備份到閃速存儲器30中。塊/擦除計數(shù)表164包括每個物理塊的擦除計數(shù)器和該塊的狀態(tài)。塊狀態(tài)可以是一個三位值,000表示空白的好塊,011和111表示壞塊,100表示既包含壞頁也包含好頁的部分壞塊。[第242段]塊/擦除計數(shù)表164也可包含在某個塊中發(fā)現(xiàn)壞頁的頁面狀態(tài)表。頁面狀態(tài)的000值表示好頁,001表示使用100位二級ECC而不是25位一級ECC的受保護頁面,010表示已用頁面,110表示頁面含有垃圾/修剪數(shù)據(jù),IlX表示壞頁。[第243段]擦除塊后,檢查該塊中每個頁面的狀態(tài)。讀取該物理塊的頁面狀態(tài)表,步驟556,當前頁初始化為頁面O。如果當前頁狀態(tài)為IlX時,步驟562,那么當前頁已經(jīng)標記為壞頁。本頁不需要進一步的處理。如果當前頁不超過塊中最后一個頁面時,步驟560,當前頁增至塊中的下一頁,步驟558,并且下一個當前頁重復該流程,步驟562。[第244段]在圖19B中,物理塊中所有頁面均經(jīng)過處理。塊中所有壞頁面的數(shù)量已確定,步驟564。當塊中壞頁面的計數(shù)超過限量T3時,步驟566,宣布該塊為壞塊。該物理塊在塊/擦除計數(shù)表164中的狀態(tài)變?yōu)?11,步驟568。不再使用該物理塊。減少部分壞塊計數(shù)器(BAD_BP_CNT)并遞增壞塊計數(shù)器,步驟570。[第245段]在圖19C中,當前頁并未事先標記為壞頁面,步驟562(圖19A)。擦出操作將頁面中所有位擦除至擦除值,比如1、讀取當前頁的位,看看是否已經(jīng)擦除所有位。獲得未擦除狀態(tài)頁面中的位的數(shù)量計數(shù),比如O位,步驟574。這些是錯誤位。但是,ECC可以糾正這些錯誤,如果位錯誤的數(shù)量很小,那么該頁面仍然可以使用。[第246段]當未擦除的位計數(shù)少于第一閾值Tl(表示太多錯誤位,即使使用額外軟件ECC保護,仍然增加了適用該頁的風險),步驟572,并且當前頁的狀態(tài)為頁面需要保護(XXl)時,步驟576,那么該頁已經(jīng)使用二級ECC標記為需要保護。頁面狀態(tài)變成需保護的空白頁面(001),步驟582?;氐綀D19A處理下一個當前頁。[第247段]當未擦除的位計數(shù)少于第一閾值Tl,步驟572,而且當前頁的狀態(tài)不是需要保護(XXl)的頁面時,步驟576,那么頁面未經(jīng)二級ECC保護。當未擦除位計數(shù)大于第二閾值T2 (表示可能導致以后出現(xiàn)重大錯誤并需要額外軟件ECC幫助來糾正錯誤的錯誤位水平)時,步驟578,二級ECC頁面計數(shù)器遞增,步驟584,頁面狀態(tài)變成001,步驟582,并且如果主機數(shù)據(jù)存儲在該物理頁時,二級ECC將在以后使用?;氐綀D19A處理下一個當前頁。[第248段]當頁面未經(jīng)二級ECC保護,步驟576,且未擦除位計數(shù)不大于第二閾值T2時,步驟578,那么頁面狀態(tài)為良好。一級ECC足以糾正該當前頁中的預期錯誤。如果未標記為良好頁面,頁面狀態(tài)就變?yōu)?00,步驟580。回到圖19A處理下一個當前頁。[第249段]在圖19D中,當前頁的未擦除位多于第一閾值Tl,步驟572(圖19C)。超過閾值Tl表示頁面的未擦除位比二級ECC可以糾正的位要多;頁面為壞頁,無法安全使用。[第250段]當物理塊狀態(tài)為塊中壞頁(Ixx)時,步驟586,該塊在塊/擦除計數(shù)表164中已被標記為壞頁面塊。該塊中有其他壞頁面,不需要改變塊的狀態(tài)。但是,通過將頁面在頁面狀態(tài)表中的狀態(tài)改為110,可將當前頁標記為壞頁,步驟592。遞增壞頁面計數(shù)器,步驟594步,然后返回圖19A處理下一個當前頁面。[第251段]當物理塊狀態(tài)不是Ixx時,步驟586步,塊在塊/擦除計數(shù)表164中未標記為部分壞塊。該塊中無其他壞頁面。塊在塊/擦除計數(shù)表164中的狀態(tài)被改為含壞頁面的空白塊(100),步驟588。遞增部分壞塊計數(shù)器(BAD_BP_CNT),步驟590。而且,將頁面狀態(tài)表中的頁面狀態(tài)改成110,就將當前頁標記為壞頁面,步驟592。壞頁計數(shù)器遞增,步驟594,然后返回圖19A處理下一個當前頁。[第252段]SSD可包含許多閃速存儲器芯片(比如16個閃速存儲器芯片)。可能會遇到一些特殊情況,比如當閃速存儲器芯片的一面或整個芯片不良。如果容量超量,SSD的閃速存儲器容量可吸收一面或整個閃速存儲器芯片的容量損失??梢允褂醚b置控制器的特殊算法避免損失,比如恢復數(shù)據(jù)、調(diào)整閃速存儲器裝置的條帶單元大小,以免有瑕疵面或芯片??梢允褂每臻e芯片更換有故障的芯片,實現(xiàn)超容量。[第253段]圖20A-C顯示映射表和其他DRAM區(qū)域接通電源時的初始化流程。在圖20A中,在SSD上連接電源時,從閃速存儲器讀取電源關(guān)閉指針,步驟660。該電源關(guān)閉指針設(shè)置于最后一次電源斷開期間。當電源關(guān)閉指針正常時,步驟662,電力循環(huán)計數(shù)(PCC)遞增,步驟664。否則,異常電力循環(huán)計數(shù)(AB_PCC)遞增,步驟668。[第254段]此處涉及兩種可能的方案。方案A更新電源斷開時的閃速存儲器,而方案B在電源斷開時將DRAM的影像復制至閃速存儲器。當使用方案A,步驟670,檢測到異常斷電時,將各種表格,比如頁面狀態(tài)表、壓縮LBA表、塊/擦除計數(shù)表、頁面映射和子扇區(qū)映射表以及分類表,從DRAM緩沖器20中復制至閃速存儲器30中,步驟676。將存儲在閃速存儲器中的FAT2表復制至DRAM緩沖器20的FAT區(qū)內(nèi),步驟678,并且在DRAM中創(chuàng)建FAT子扇區(qū)映射表。[第255段]當檢測到正常斷電時,步驟662,將不同表格,比如頁面狀態(tài)表、壓縮LAB表、塊/擦除計數(shù)表、頁面映射和子扇區(qū)映射表以及分類表,從DRAM緩沖器20中復制至閃速存儲器30中,步驟672。但是,存儲的FATl表從閃速存儲器復制至DRAM緩沖器20的FAT區(qū)內(nèi),步驟674,而且在DRAM中創(chuàng)建FAT子扇區(qū)映射表。因此,當正常斷電選擇了 FATI,異常斷電就要選擇FAT2,因為主機在寫入FAT2之前先寫入FAT1,而且主機在異常斷電期時可能沒有時間寫入FAT2。[第256段]在圖20B中,F(xiàn)DB條目從閃速存儲器中復制至DRAM,而且FDB子扇區(qū)映射表在DRAM中創(chuàng)建起來,步驟680。使用供應商命令從主機中獲得頁面文件的LBA范圍,步驟682。DRAM緩沖器20的頁面文件區(qū)創(chuàng)建,步驟684,頁面文件的映射表和子映射表也創(chuàng)建。[第257段]在DRAM緩沖器內(nèi)創(chuàng)建臨時文件區(qū),步驟686,并創(chuàng)建臨時文件的映射和子映射表。因為電源關(guān)閉時臨時文件被擦除而非復制至閃速存儲器,所以通電時并不將臨時文件從閃速存儲器復制至DRAM。[第258段]DRAM讀取緩存和DRAM寫入緩存在DRAM緩沖器20中設(shè)置,步驟688,也可在相關(guān)映射表中進行設(shè)置。當用戶或固件將方案變成A或B,方案指針位也改變,步驟689。[第259段]與閃速存儲器相比,DRAM緩沖器中的讀取緩存和寫入緩存比較小。有很多方法管理讀取緩存的使用。一種用法取決于操作階段,比如接通電源初始化,從閃速存儲器中預載(由用戶固定)一部分代碼,以便加速初始化并在之后擦除。另一種用法取決于用戶應用并且會強制分配一部分讀取緩沖區(qū)供該應用使用,并且會在退出應用后擦除。該申請與時間有關(guān),比如午夜備份并在早晨登陸工作。一種算法可用于執(zhí)行對特殊申請的讀取緩沖器流量的監(jiān)督;這可以排除大型應用或文件非必要占有讀取緩存大片區(qū)域的問題;只有其中一小部分可以留在讀取緩沖器區(qū)。這可引導更加有效地使用讀取緩存。而另一個用法是使用算法監(jiān)督并分析最近或更經(jīng)常使用的、留在讀取緩存中的讀取數(shù)據(jù)。如果讀取緩存的空間不足,那些不是最近使用或不太經(jīng)常使用的將會被覆蓋。[第260段]在多通道控制器結(jié)構(gòu)中,如果當前訪問區(qū)不在緩存區(qū),裝置控制器會從閃速存儲器30讀取數(shù)據(jù)并通過多通道結(jié)構(gòu)到達讀取緩存和映射表151。數(shù)據(jù)可以是原始的、壓縮的、加密的、分類的或上述類型的綜合體。控制器根據(jù)各映射表中記錄的讀數(shù)從讀取緩存中取回原始數(shù)據(jù),然后將數(shù)據(jù)送回主機100。[第261段]在圖20C中,對于使用方案B的異常斷電,將在斷電之前保存的DRAM映像從閃速存儲器復制至DRAM緩沖器20中,步驟690步。DRAM映像包括動態(tài)隨機動態(tài)存儲器緩沖器20中的很多表格和緩沖器。處理保留在數(shù)據(jù)輸入緩沖器中待定的主機命令,步驟692。將DRAM中數(shù)據(jù)寫入緩沖器或持久性備用與交換塊的無效線更新寫入閃速存儲器中,步驟694。DRAM映像中FAT或FDB的任何更新均復制至閃速存儲器的FATl、FAT2或FDB區(qū)內(nèi),步驟696。也將頁面狀態(tài)表、壓縮LBA表、塊/擦除計數(shù)表、頁面映射表或子扇區(qū)或分類表的更新寫入閃速存儲器,步驟698。擦除閃速存儲器中舊的DRAM映像,在旁邊為下一個DRAM映像在閃速存儲器中創(chuàng)建一個新的區(qū)域,以防異常斷電,步驟699。[第262段]圖21是斷電流程的作業(yè)圖。當電源正常關(guān)閉時,步驟702,那么電源關(guān)閉指針設(shè)成正常,步驟710。使用電池或其他備份電源,處理數(shù)據(jù)輸入緩沖器中待定的所有主機命令,步驟712。[第263段]正常關(guān)閉電源是從主機收到的命令。電壓顯示器或比測器可檢測到電壓突然下降并觸發(fā)SSD控制器斷開。斷開程序那么可以設(shè)置斷電流程。當電源異常斷開時,步驟702,電源關(guān)閉指針設(shè)為異常,步驟704。當使用方案B時,步驟706,那么將DRAM緩沖器20的內(nèi)容復制至閃速存儲器的空白區(qū)內(nèi),步驟708。DRAM緩沖器20的所有內(nèi)容或僅限所選區(qū)域的內(nèi)容可以復制。DRAM區(qū)域可以按優(yōu)先順序或連續(xù)復制。[第264段]不同于正常斷電,方案A將放棄緩沖器152中的數(shù)據(jù)。當使用方案A時,或者正常斷電已經(jīng)完成主機命令的處理時,DRAM的數(shù)據(jù)寫入緩沖器或持久性備用與交換塊的無效線更新寫入閃速存儲器中,步驟714。將DRAM映像中的FAT或FDB的任何更新復制至閃速存儲器的FAT1、FAT2或FDB區(qū)中,步驟716。也將頁面狀態(tài)表、壓縮LAB表、塊/擦除計數(shù)表、頁面映射表或子扇區(qū)或分類表的更新寫入閃速存儲器,步驟718。[第265段]多層斷電保護防護可以確保數(shù)據(jù)受到保護。主機的備用電源41在主電源發(fā)生故障時為整個系統(tǒng)提供電源。這給了 SSD裝置102充足的時間將DRAM緩沖器20內(nèi)的數(shù)據(jù)備份至閃速存儲器30中。如果SSD102與主機電源斷開,備用電源42具有電容或超級電容的附加容量以確保即使其中一些無法供電,仍然有充足的電量將DRAM緩沖器20內(nèi)的數(shù)據(jù)備份至閃速存儲器30中。[第266段]為防止系統(tǒng)重啟,裝置完成相同的順序直至斷電,然后接通電源。退出計算機,用戶賬戶關(guān)閉,但計算機仍保存便捷通道,以便用戶下次登錄。退出時,將無效數(shù)據(jù)和元信息表更新至閃速存儲器30內(nèi),跟關(guān)閉電源時相同。[第267段]對于帶電池的便攜裝置,比如智能手機、平板電腦、筆記本等,裝置將檢測到電池電量降低,并關(guān)閉裝置。在關(guān)閉前,裝置控制器將關(guān)閉器外圍裝置,比如SSD102。在該情況下,電源來自便攜裝置的電池。[第268段]另一個確保DRAMETL有關(guān)數(shù)據(jù)的方法是將其復制至多層單元。電源關(guān)閉時,ETL數(shù)據(jù)的有效復制可保留在多層單元。接通電源時,ETL的數(shù)據(jù)可從多層單元加載回DRAM中??捎涗浬倭坎町?,修改復制方法。該差異將減少復制數(shù)據(jù)的數(shù)量,因此減少多層單元的寫入。[第269段]對于高級ECC保護系統(tǒng),討論下列算法。第一層保護是使用每頁的多余字節(jié)來存儲生成的保護數(shù)據(jù)的內(nèi)置ECC保護電路(比如24位ECC)。如果第一層保護故障位達到預定水平(比如12位),可使用第二層軟件ECC生成器,生成軟件ECC (比如50位),進一步加強保護。如果第一層ECC未能糾正數(shù)據(jù),那么使用第二層軟件ECC存儲正確數(shù)據(jù)。第二層軟件ECC生成的保護數(shù)據(jù)和檢測表將根據(jù)一項規(guī)則(比如按照消耗的時間、分配的容量等)或當電源關(guān)閉或電源故障的情況存儲在DRAM緩沖器20內(nèi),并復制至閃速存儲器30中。[第270段]另一種方法是使用低密度奇偶校驗碼(LDPC),該校驗碼為一種線性的錯誤糾正碼。不同于第一層ECC保護,該方法可增加額外糾錯能力。[第271段]可以通過對所有條帶數(shù)據(jù)進行RAID5之類的奇偶校驗或?qū)νㄟ^為需要特殊保護的一條塊生成奇偶數(shù)據(jù)來執(zhí)行第三層ECC。第三層條帶奇偶ECC生成的保護數(shù)據(jù)和檢測表將根據(jù)一項規(guī)則(比如按照消耗的時間、分配的容量等)或當電源關(guān)閉或電源故障時存儲在DRAM緩沖器20內(nèi),并復制至閃速存儲器30中。[第272段]如果第二層軟件ECC未能保護數(shù)據(jù),第三層條帶奇偶ECC將用于第二層軟件ECC只有一組條帶數(shù)據(jù)出故障的情況。[第273段]如果第二或第三層ECC無法存儲不良數(shù)據(jù),如果閃速存儲器可以接受特殊命令,將基準電壓調(diào)高或調(diào)低,可使用第四層基準電壓調(diào)節(jié)器。如果閃速存儲器單元被寫入,那么對相鄰單元的寫入或讀取將造成對被寫入單元的干擾。該干擾可增加該單元浮置柵極的電子或從中移走電子。一旦電子的數(shù)量導致輸出電壓越過基礎(chǔ)電壓的邊界,那么讀取不正確。按照閃速存儲器設(shè)計,基準電壓調(diào)節(jié)可能有一定數(shù)量的調(diào)節(jié)器(比如較高層3個,較低層3個)。通過由所用的閃速存儲器芯片和知道的讀取錯誤累積決定的一個特殊層來開始每個流程的試用。如果數(shù)據(jù)無法存儲,那么試用下一個基準電壓水平,直至所有可能的層均經(jīng)過試驗。如果數(shù)據(jù)成功存儲,可使用基準電壓水平開始下一個基準電壓調(diào)節(jié)試驗。如果所有基準電壓水平均無法存儲數(shù)據(jù),那么使用第五層。[第274段]每一個基準電壓水平可能均帶有計數(shù)器。當數(shù)據(jù)成功存儲時,相應的計數(shù)器就會遞增。這些計數(shù)器有助于找出哪一層最適于解決問題。[第275段]通過收集各基準電壓的所有讀取結(jié)果來提供ECC保護的第五層。局部響應最大擬然(PRML)之類的算法可用于分析數(shù)據(jù)并存儲原始數(shù)據(jù)。[第276段]作為一種選擇,可通過主機100提供更高級的ECC保護。主機生成更高級ECC保護數(shù)據(jù)和連接信息。然后使用供應商命令存儲ECC數(shù)據(jù)及其與DRAM緩沖器20的連接,最后移至閃速存儲器30的備用塊區(qū)。[第277段]圖22A-B顯示了多層ECC的讀取程序。在圖22A中,閃速存儲器30中物理塊的每次讀取,該塊的每個讀取計數(shù)器(LBA_RD_CNT)通過扇區(qū)計數(shù)(SC)遞增,步驟540。當ECC在讀取中產(chǎn)生錯誤時,步驟720,那么執(zhí)行ECC檢查722。當ECC錯誤高于第一閾值Tl,步驟724,并高于第二閾值T2時,步驟726,并且仍然可以糾正時,步驟728,那么糾正并提供該數(shù)據(jù),步驟732,并且遞增ECC讀取計數(shù)器ECC_RD_CNT。當錯誤高于Tl但低于T2時,如果第三層ECC或軟件ECC還未存在,那么此時第三層ECC或軟件ECC就會生成,步驟730。生成的軟件ECC存儲在DRAM緩沖器20中,并由SSS40管理。按照規(guī)則,該信息將存儲進閃速存儲器30中。[第278段]在圖22B中,對于無法糾正的錯誤,當軟件ECC已經(jīng)存在時,步驟734,那么將其用于糾正錯誤,步驟736。遞增ECC2讀取計數(shù)器(ECC2_RD_CNT)。當錯誤已經(jīng)糾正時,步驟738,那么可獲得數(shù)據(jù),步驟732。[第279段]當ECC出現(xiàn)故障,但存在條帶奇偶校驗,步驟742,且不超過一組條帶數(shù)據(jù)出現(xiàn)故障時,步驟744,那么可以使用其他組條帶和奇偶校驗重組數(shù)據(jù),步驟746。條帶讀取計數(shù)器(STRP_RD_CNT)就遞增。否則,調(diào)用基準電壓轉(zhuǎn)換程序740。[第280段]在圖23A-B中顯示了簡化的多層ECC讀取程序。在圖23A中,閃速存儲器30中物理塊的每次讀取,該塊的每個讀取計數(shù)器(LBA_RD_CNT)通過扇區(qū)計數(shù)(SC)遞增,步驟541。在讀取中產(chǎn)生ECC錯誤時,步驟750,那么執(zhí)行ECC檢查752。當ECC錯誤高于第一閾值Tl,步驟754,但仍然可以糾正時,步驟758,那么數(shù)據(jù)移至閃速存儲器中的不同位置,步驟760,并且可以獲得該數(shù)據(jù),步驟762,并且ECC讀取計數(shù)器ECC_RD_CNT遞增。[第281段]在圖23B中,當存在條帶奇偶校對,步驟756,且不超過一組出現(xiàn)故障,步驟764,那么可使用其他組條帶和奇偶校驗重組數(shù)據(jù),步驟766。遞增條帶讀取計數(shù)器(STRP_RD_CNT)。否則,調(diào)用多層基準電壓轉(zhuǎn)換程序740。[第282段]圖24A-B顯示了多層基準電壓轉(zhuǎn)換程序。當調(diào)用了基準電壓轉(zhuǎn)換程序740時,迭代參數(shù)N設(shè)成零,步驟770,并將基準電壓記錄器的當前狀態(tài)(RVSTATE)復制至當前基準電壓記錄器的設(shè)置(RV_REG)中,步驟772。使用這些基準電壓設(shè)置將命令寫入閃速存儲器中,步驟774,并進行ECC檢查,步驟776。當錯誤無法糾正,步驟778,并且迭代參數(shù)N達到最大值2M時,步驟780,那么遞增重大計數(shù),步驟786。基準電壓轉(zhuǎn)換程序740出現(xiàn)故障。與額定基準電壓相比,基準電壓調(diào)整較高或較低。每個較高或較低調(diào)整有M層,最大值為2M。[第283段]另外,迭代參數(shù)N遞增,步驟782步,使用為試驗基準電壓而做的下批設(shè)定,步驟784步,并且程序執(zhí)行下輪迭代。[第284段]當錯誤可糾正時,在圖24B中,復制當前迭代基準電壓設(shè)定(RV_REG)并遞增參考計數(shù)器,步驟788。數(shù)據(jù)移至閃速存儲器中的不同位置,步驟790,并且可以使用,步驟792。當數(shù)據(jù)按照預定水平數(shù)顯示錯誤時,數(shù)據(jù)移至新位置,更新數(shù)據(jù),持續(xù)至下一輪讀取/寫入干擾時間結(jié)束。XXXX_RC_CNT是閃速存儲器每層的基準電壓回復計數(shù)器,比如RVH1_RC_CNT, RVLm_RC_CNT 等。[第285段]圖25顯示了帶有增強保護、寫入閃速存儲器的數(shù)據(jù)。找到新寫入的數(shù)據(jù)的物理塊地址,比如使用查找表,步驟794。當需要額外保護,步驟796,條帶單元得到確認,步驟798,從條帶數(shù)據(jù)中生成奇偶性,步驟802。保存奇偶性并將其與數(shù)據(jù)連接,步驟804。然后將條帶數(shù)據(jù)寫入物理塊地址,步驟806。
具體實施方式
及替換實施方案[第286段]發(fā)明人計劃了幾種其他實施方案。比如,數(shù)據(jù)類型位的許多編碼、其他狀態(tài)字段、指針等是有可能的。數(shù)據(jù)類型狀態(tài)位不一定是條目中的前幾位。條目可以與其他表格中的條目相聯(lián)系,比如用于標記或有效位的單獨表格。臨時文件可有各種擴展,新擴展可以增至搜索目錄中。由眾所周知的程序,比如文字處理軟件和網(wǎng)絡(luò)瀏覽器,生成的臨時文件具有眾所周知的文件擴展,但可以隨時添加額外擴展。這些額外文件擴展可通過固件更新增加至SSS控制器40的控制軟件中。[第287段]ETL每個部分所用的DRAM緩沖器的大小可由SSD控制器的固件確定。從動力學方面來講,ETL每個部分可以由控制器固件按照用戶的使用或優(yōu)先權(quán)自動或手動調(diào)節(jié)。由于DRAM緩沖器20的大小受限,并非所有ETL的功能可以同時使用。ETL的各個功能均可適用于實際工作環(huán)境。控制器可以調(diào)整每個ETL所占用的大小,以便使DRAM緩沖器得到最大優(yōu)化??梢愿鶕?jù)裝置的使用模式定期調(diào)進行適應性調(diào)整。[第288段]對于TLC閃速存儲器裝置,DRAM緩沖器可用非易失隨機存儲器(NVRAM),比如相變存儲器(PCM)、鐵電隨機存儲器(FRAM)、磁阻隨機存儲器(MRAM)、電解存儲器、相變隨機存儲器(PRAM)、電阻隨機存儲器(RRAM)、賽道存儲器和納米隨機存儲器(NRAM)等,進行替換。相變存儲器的優(yōu)勢是:ETL支持的所有表格等可以在其中保存(不需放入閃速存儲器),并且閃速存儲器指定數(shù)據(jù)(比如數(shù)據(jù)寫入緩存等)即使在電源關(guān)閉時也可以保存,因此,即使在電源突然切斷時也不再需要備用電源電路。臨時文件和映射表140、讀取緩存和映射表151可以在電源關(guān)閉時或下一輪電源啟動初始化時隨意拋棄。不同于MLC,非易失隨機存儲器的缺點是成本。對于MLC,缺點是速度慢和寫入/擦除次數(shù)的限制。通過分配只含有經(jīng)過編程的強大頁面的TLC的一部分,可從TLC中得到MLC。ETL的一些功能可在智能存儲交換控制器40中的靜態(tài)隨機存儲器(SRAM)中執(zhí)行。[第289段]在ETL閃速存儲器裝置中,DRAM緩沖器也可用組合,比如DRAM+SRAM(靜態(tài)隨機存儲器)、DRAM++MLC (多層單元)、DRAM+PCRAM (相變隨機存儲器)、DRAM+MRAM (磁阻隨機存儲器)等,進行替代。當使用動態(tài)隨機存儲緩沖組合,比如DRAM+多層單元時,ETL支持的功能在DRAM中進行管理,而其中一些存儲在多層單元中。DRAM緩沖器中的一些數(shù)據(jù)最后可以丟棄,比如電源關(guān)閉時不會移至多層單元的臨時文件等、映射表140、讀取緩存和映射表151。需要在電源關(guān)閉時保存的表格和數(shù)據(jù),比如塊擦除技術(shù)表164、頁面狀態(tài)表162、S.M.A.R.T.數(shù)據(jù)收集器170等,將使用備用電源在電源意外關(guān)閉時存儲至多層單元。另外一種保存DRAMETL中有關(guān)數(shù)據(jù)的方法是將其復制至多層單元。如果斷電,ETL數(shù)據(jù)的有效復制可保存在多層單元中。啟動電源時,ETL的那些數(shù)據(jù)可從多層單元傳輸回DRAM??梢杂涗浛蓽p少復制數(shù)據(jù)的數(shù)量,從而減少多層單元寫入的少量差異,來修改復制方法。[第290段]DRAM+多層單元或DRAM+單層單元(SLC)并非必須使用單層單元/多層單元/三層單元的不同類型。相反,通過分配只含有經(jīng)過編程的強大頁面的三層單元的一部分,可從三層單元中得到多層單元。通過分配只含有經(jīng)過編程的強大頁面的多層單元或三層單元一部分,可從多層單元或三層單元中得到單層單元。[第291段]本文所述持久計數(shù)試圖解決非易失閃速存儲器的持久性問題。有集中非易失性存儲器,比如可使用有競爭力的計數(shù)替換非易失閃速存儲器的磁阻隨機存儲器、相變存儲器、電阻隨機存儲器、電解存儲器、納米隨機存儲器等。[第292段]超耐用閃速存儲器驅(qū)動器可以和硬盤驅(qū)動器(HDD)聯(lián)合,超耐用閃速存儲器驅(qū)動器作為緩存,硬盤驅(qū)動器作為存儲器。超耐用閃速存儲器驅(qū)動器具有超長持久力,更適合用作緩存。該混合器件可以提高整體性能。另一種保存DRAMETL中有關(guān)數(shù)據(jù)的辦法是將其復制至硬盤驅(qū)動器。在斷電時,ETL數(shù)據(jù)的有效復制可保存在硬盤驅(qū)動器中。接通電源時,ETL中的那些數(shù)據(jù)可從硬盤驅(qū)動器中傳輸回DRAM??梢杂涗浛蓽p少復制數(shù)據(jù)的數(shù)量,從而減少硬盤驅(qū)動器寫入的少量差異,來修改復制方法。[第293段]操作系統(tǒng)的啟動映像可預載至DRAM緩沖器,以便加快主機啟動。一旦啟動程序結(jié)束,釋放DRAM緩沖器留待后續(xù)正常操作。[第294段]主機進入休眠或待機模式時,無效DRAM緩沖器必須寫入閃速存儲器。主機用戶退出時,無效DRAM緩沖器可以寫入閃速存儲器。[第295段]寫入數(shù)據(jù)的組合不限于一頁一單元。組合數(shù)據(jù)可歸入較大的單元,t匕如,多頁和整個塊等。[第296段]當主機存取數(shù)據(jù)類型的分類被描述為:將來自主機的邏輯地址和一個以上的地址范圍進行比較,該比較可能只將邏輯地址的一部分和表示地址范圍的范圍進行了比較。也可以通過分解特定格式的主機寫入數(shù)據(jù)確定數(shù)據(jù)類型,比如FAT格式或FDB格式。也可以檢查早期按照順序的主機寫入的數(shù)據(jù)格式。將FAT文件系統(tǒng)作為例子。FDB/FAT是FAT文件系統(tǒng)的元數(shù)據(jù)。其他文件系統(tǒng),比如LINUX、Apple OS和Android等,各自擁有自己具有不同名稱的元數(shù)據(jù),但性質(zhì)相當。[第297段]每個塊均可以分成多頁區(qū)域。比如,一個塊可有16個頁面,4個區(qū),每個區(qū)有4頁。在該可替換實施方案中,一些映射用于區(qū),而非單獨的頁或塊。此外,在特殊情況下,每個區(qū)可以有一頁。盡管每個區(qū)具有多個頁面,區(qū)模式而非頁面模式需要更少的映射條目。[第298段]主機的邏輯扇區(qū)地址(LSA)較高的位可以選擇群集或區(qū)。一個映射表中的所有條目可用于同一區(qū)。當邏輯扇區(qū)地址的區(qū)號與映射表中所有條目的區(qū)號相對應時,邏輯扇區(qū)地址中的LBA選擇映射表中的一個條目。也可以使用混合或多層映射表。既然已知FAT1/2的LBA范圍,可以省略掉內(nèi)容數(shù)據(jù)類型位“ 100”。映射表上可能有塊粒度或頁面粒度。[第299段]塊的復制遷移并不如頁面映射頻繁,因為在頁面模式中違反非單層單元存儲的順序?qū)懭胍?guī)則的情況并不如在塊模式中頻繁。這增加了閃速存儲器系統(tǒng)的持久性,也提升了性能。[第300段]映射表可在擴展地址空間內(nèi)設(shè)置,也可使用大于用于地址空間里最大地址的實際地址或非法地址??砂粗鳈C頁面順序保留地址,或可以重新規(guī)劃地址位置。另外的實施方案,比如用于數(shù)據(jù)中心應用,頁面或臨時文件可作為正常用于數(shù)據(jù)處理,簡化控制器操作,但消耗閃速存儲器持久性。持久持久性備用與交換塊區(qū)可使用DRAM緩沖器20作為持久備件/交換緩沖器代替閃速存儲器30,來提供擴展的超容量。在主機提供壓縮功能的情況下可隨意關(guān)閉壓縮功能。在其他實施方案中,控制器可將用戶數(shù)據(jù)文件作為頁面文件處理,以簡化控制器功能。[第301段]塊圖中可以存在很多變量。只讀存儲器(R0M),比如電可擦除可編程只讀存儲器(EEPROM)可以與控制器或其部分相連接,并可用于為虛位存儲處理器存儲固件。該固件也可存儲在主要閃速存儲器模塊中。主機接口總線可以是串行高級技術(shù)附件(SATA)總線、外圍組建互連(PCIe )總線、標準閃速存儲器(CF)總線或通用串行總線(USB )、固件1394總線、光纖通道(FC)總線、Thunderbolt等。內(nèi)部總線可使用諸如串行高級技術(shù)附件(SATA)總線、集成電路設(shè)備(IDE)總線、外圍組建互連(PCIe)總線、標準閃速存儲器(CF)總線、通用串行總線(USB)、安全數(shù)字(SD)總線、多媒體卡(MMC)總線、固件1394總線、光纖通道(FC)總線、各種以太網(wǎng)總線等。SCFD可以包括只包含單層單元或多層單元閃速存儲器,或是兩者的結(jié)合體。[第302段]閃速存儲器可以嵌在母板或SSD板上或在單獨模塊上??梢栽黾与娙萜?、緩沖器、電阻器和其他部分。智能存儲交換控制器可與母板結(jié)合成一個整體,或安裝在單獨板或模塊上。閃速存儲器可與智能存儲交換控制器相結(jié)合,或作為單片裝置或插件模塊或板與未加工的非易失閃速存儲器芯片相結(jié)合。[第303段]使用多層控制器,比如在控制器的總調(diào)節(jié)器安排中,只能存儲交換中的控制器可以比耗損均衡、壞塊管理、再映射、緩存、電源管理等單層控制所需要的要簡單些??稍谥荒艽鎯刂破髦惺褂幂^便宜的硬件,比如使用控制器8051處理器,虛位存儲處理器、智能存儲事務管理器,而不是更強大的處理器核心,比如高級精簡命令機器ARM-9中央處理器內(nèi)核。對于特定應用,考慮更強大的處理器。[第304段]不同數(shù)量和分布的閃速存儲器塊可連接到智能存儲交換器上。而非使用LBA存儲總線接口或通用串行包總線,其他串行總線,比如同步雙數(shù)據(jù)速率(DDR)、開放式NAND閃速存儲器接口、Toggle NAND、差分串行包數(shù)據(jù)總線、遺產(chǎn)閃速存儲器接口等。[第305段]模式邏輯只可以在電源接通時檢測到引線狀態(tài),而不是檢測到專用引線的狀態(tài)。引線狀態(tài)的特定組合或順序可用于啟動模式變更。多總線協(xié)議芯片可以配有附加的串行總線接口使用的個性引線,或可配有設(shè)置在集線器或交換器模式的可編程寄存器。[第306段]事務管理器、控制器、過程、功能可用多種方式執(zhí)行。功能和過程可進行編程,由中央處理器或其他處理器執(zhí)行,或可在專用硬件、固件或組合中執(zhí)行。功能的許多劃分可以替換。智能存儲交換控制器可以是硬件,或可以包含固件、軟件或兩者的組合。[第307段]通過使用帶有多閃速存儲器通道的奇偶性/ECC并將條帶數(shù)據(jù)段存入多元非易失塊中,整個系統(tǒng)的可靠性大大提高。比如,第九個閃速存儲器芯片可與閃速存儲器接口一起使用。如果八個閃速存儲器芯片之一遇到嚴重讀取錯誤,將其他八個閃速存儲器芯片的奇偶性寫入第九個閃速存儲器芯片,提供額外數(shù)據(jù)保護。但是,可能要使用帶有DDR/SDRAM緩存的中央處理器引擎,以便滿足復雜ECC/奇偶性計算和生成的計算能力要求。另一個好處是,即使一個閃速存儲器塊或閃速存儲器模塊受損,數(shù)據(jù)可以恢復,或智能存儲交換器可以啟動“故障修復”或“自動重建”程序,插入一個新的閃速存儲器模塊,并恢復或重建“丟失”或“受損”的數(shù)據(jù)。整個系統(tǒng)的故障容錯性大大提高。[第308段]閃速存儲器單元的浮置柵極通過加入電子進行編程。閃速存儲器控制頁面寫入所插入的電子,以便保持在兩個基準電壓水平之間。NAND閃速存儲器結(jié)構(gòu)的位線連接至一串32個單元,每個單元又連接至32個不同字線。單元寫入數(shù)據(jù)后,對相鄰單元的寫入和讀取會對該單元造成干擾。該干擾將添加電子至該單元的浮置柵極,或從中移除電子。周期較長也會影響該單元浮置柵極的電子數(shù)量。由于浮置柵極中電子數(shù)量的變化,輸出電壓水平在讀取時也相應改變。如果輸出電壓水平的變化超出基準電壓的界限,那么讀取結(jié)果是錯誤的。[第309段]可以更換較寬或較窄的數(shù)據(jù)總線和閃速存儲器芯片,比如用16或32位數(shù)據(jù)通道。帶有嵌套或分段總線的可替換總線結(jié)構(gòu)可用于智能存儲交換器的內(nèi)外部??稍谥悄艽鎯粨Q器中使用兩個以上內(nèi)部總線,以增加輸送量??捎酶鼜碗s的交換光纖替換內(nèi)外總線。[第310段]可用多種方式完成數(shù)據(jù)條帶,比如奇偶校驗和ECC??砂凑沼脕矸胖弥丿B存儲區(qū)重新排序的數(shù)據(jù)排列對信息包重新排序。智能交換器可以與其他組件相結(jié)合,也可作為單機芯片。
[第311段]可以增加額外管道或臨時緩沖器和FIFO。比如,智能存儲交換控制器40中的主機FIFO可以是控制器40的部分,也可存儲在緩沖器RAM中。每個通道中均可提供獨立頁面緩沖器??稍黾訒r鐘源。[第312段]單獨封裝、單片或多片封裝可以包含一個以上閃速存儲器和/或智能存儲交換器多元通道。發(fā)明不限于SCFD的使用。SCFD可以用任意一種帶有非易失閃速存儲器和控制器的非易失裝置來替換。[第313段]多層單元式閃速存儲器裝置可帶有四個含兩個平行數(shù)據(jù)通道的多層單元閃速存儲器芯片,但可使用不同的排列形成其他閃速存儲器模塊,比如,四、八個或更多元據(jù)通道,或八、十六個或更多多層單元片。閃速存儲器裝置和通道可以排成鏈狀、支狀或陣列狀。比如,一支4個閃速存儲器裝置可以作為一鏈連接至智能存儲交換器。其他大小的集合或分區(qū)方案可用于存儲器的不同存取。[第314段]主機可以是PC母板或其他PC平臺、移動通訊裝置、個人數(shù)字助理(PDA)、數(shù)碼相機、生產(chǎn)工具或測試器、組合裝置或其他裝置。主機主線或主機裝置接口可以是SATA、PCIE、Thunderbolt、SD、USB、eMMC、iSSD或其他主機總線,而閃速存儲器模塊的內(nèi)部主線可以是PATA、多通道SSD、多功能SD/MMC、標準閃速存儲器(CF )、USB或其他平行的接口。閃速存儲器模塊可以是標準的PCB,或者是TSOP、BGA、LGA、COB、PIP、SIP、CSP, POP或其他多片封裝(MCP)內(nèi)密封的多片模塊,也可以包含未加工的NAND閃速存儲器芯片,或者未加工的NAND閃速存儲器芯片可以是分離的閃速存儲器芯片或其他種類的非易失性閃速存儲器。內(nèi)部總線可以完全或部分共享,也可以是分離的總線。SSD系統(tǒng)可將電路板和其他組件,比如LED指針、電容、電阻等一起使用??梢栽谝粋€以上的層添加電源管理。[第315段]方向詞語,如高、低、上、下、頂部、底部等是相對的,可以隨著系統(tǒng)或數(shù)據(jù)的旋轉(zhuǎn)、突然翻轉(zhuǎn)等變化。這些詞語用于描述裝置,但并非是絕對的。[第316段]非易失性閃速存儲器可以在可能含有封裝的控制器的閃速存儲器模塊上,也可能在單片封裝內(nèi)的閃速存儲器模上。單片封裝可以集成到PCBA,或直接集成在主板上以便進一步簡化安裝、降低生產(chǎn)成本并減少整體厚度。閃速存儲器芯片也可與其他實施措施一起使用,包括開放框架卡。[第317段]并非僅將智能存儲交換控制器40用于閃速存儲器存儲,還可以增加額外功能。比如,音樂播放器可包含存儲在閃速存儲器中MP3數(shù)據(jù)的音樂播放控制器??稍谘b置上添加耳機插座,使用戶插入耳機聽音樂。無線話筒(比如藍牙話筒)可以添加到裝置上連接無線耳機,而非使用耳機插座。也可添加紅外線話筒,比如IrDA。也可以為無線鼠標、PDA、鍵盤、打印機、數(shù)碼相機、MP3播放器或其他無線裝置添加藍牙收發(fā)器。藍牙收發(fā)器可以代替連接器作為初始連接器。藍牙適配器裝置可以配有連接器、無線電頻率(RF)收發(fā)器、基帶控制器、天線、閃速存儲器(EEPR0M)、穩(wěn)壓器、晶體、發(fā)光二級管(LED)、電阻、電容和感應器。這些組件可以在包入塑料或金屬外殼之前安裝在PCB上。[第318段]數(shù)據(jù)大小,比如扇區(qū)、頁面塊等可能不同。一個扇區(qū)有512個字節(jié),一個頁面可有16個扇區(qū)以及一個塊可有128個頁面可作為例證。[第319段]作為一種選擇,ETL的寫入數(shù)據(jù)可以由閃速存儲器控制器逐個壓縮并作為一個頁面單元載入數(shù)據(jù)寫入緩存中。主機的壓縮數(shù)據(jù)可以是大尺寸,比如大于條帶單元,也可以是小尺寸,比如小于一個扇區(qū)。添加數(shù)據(jù)頭,顯示數(shù)據(jù)域主機LBA的關(guān)系。單獨包裝表標出了從主機到數(shù)據(jù)寫入緩存條帶單元中的數(shù)據(jù)和數(shù)據(jù)頭偏移位置的LBA。數(shù)據(jù)寫入緩存可以具有超過兩個條帶單元的容量。當數(shù)據(jù)寫入緩存寫滿或達到時間限制,選擇的條帶單元將從數(shù)據(jù)寫入緩存移至閃速存儲器。包裝表標出了從主機到閃速存儲器條帶單元中的數(shù)據(jù)和數(shù)據(jù)頭偏移位置的LBA。為覆蓋主機的舊數(shù)據(jù),如果壓縮數(shù)據(jù)仍保存在數(shù)據(jù)寫入緩存中,可將壓縮數(shù)據(jù)上移,將更新數(shù)據(jù)添加入數(shù)據(jù)寫入緩存,更新壓縮表,拋棄舊數(shù)據(jù)。另夕卜,如果壓縮數(shù)據(jù)保存在閃速存儲器中,比對新舊數(shù)據(jù),并生成增量數(shù)據(jù)顯示其差異。添加增量數(shù)據(jù)及其數(shù)據(jù)頭進入數(shù)據(jù)寫入緩存。新數(shù)據(jù)頭也包含之前舊數(shù)據(jù)位置。壓縮表標出了增量數(shù)據(jù)位置的LBA。[第320段]發(fā)明部分的背景可包含發(fā)明問題或環(huán)境的背景信息,而非通過其他方式描述已有技術(shù)。因此背景部分所含材料并不表示申請人承認以前的技術(shù)。[第321段]本文所述任何方法或程序均由機器或電腦執(zhí)行,設(shè)計由機器、電腦或其他裝置執(zhí)行,并非只由人在無機器輔助的條件下獨立執(zhí)行。產(chǎn)生的實際結(jié)果可包含報告,或者由電腦顯示器、投影裝置、音頻生成裝置和相關(guān)媒體裝置等顯示裝置的其他顯示內(nèi)容,也可包含機器生成的硬拷貝打印資料。電腦對其他機器的控制是另一個實際結(jié)果。[第322段]上述優(yōu)勢和益處不適用于發(fā)明的所有實施方案。當詞語“指”在聲明部分出現(xiàn)時,申請人擬將聲明部分歸入35USC第112章第6段。通常詞語“指”之前有一個以上詞語的標記。詞語“指”之前的詞語是想要減少聲明部分引用的標記,而非想表達結(jié)構(gòu)限制。該種指+功能聲明擬涵蓋本文所述執(zhí)行功能及其結(jié)構(gòu)等效物的結(jié)構(gòu),以及等效結(jié)構(gòu)。比如,盡管釘子和螺絲結(jié)構(gòu)不同,但它們都履行緊固功能,因此具有等效結(jié)構(gòu)。未用詞語“指”的聲明將不會歸入35USC第112章第6段。信號是典型的電子信號,但可以是視覺信號,比如可用光纖線傳輸。[第323段]上述對發(fā)明裝置的描述已經(jīng)表達了例證和說明的目的。并非想要詳盡,或?qū)l(fā)明限制在公布的精確形式中。按照上述講授,可能有許多修改和變化。本文意圖是發(fā)明范圍而并不受該詳細說明的限制,而受所附聲明的限制。
權(quán)利要求
1.一種超耐用閃速存儲器驅(qū)動器,包含: 一個從主機接收主機讀寫的主機接口; 一個用于數(shù)據(jù)存儲的動態(tài)隨機存儲(DRAM)緩沖器; 一個用于在斷電時存儲保存數(shù)據(jù)的閃速存儲器,該閃速存儲器的塊可擦除且頁面可寫A ; 一個根據(jù)主機接口接收的主機讀取和寫入做出反應,從而對閃速存儲器訪問和DRAM緩沖器訪問進行控制的控制器,該控制器將主機數(shù)據(jù)寫入DRAM緩沖器; 一個在DRAM緩沖器內(nèi)執(zhí)行的耐用轉(zhuǎn)換層(ETL),該轉(zhuǎn)換層由提供臨時存儲并減少閃速存儲器耗損的控制器進行控制; 一個保存在DRAM緩沖器內(nèi)且由控制器管理的數(shù)據(jù)寫入緩存; 一個在DRAM中用于數(shù)據(jù)分布的獨立磁盤冗余陣列(RAID),該結(jié)構(gòu)通過幾個閃速存儲器通道寫入新數(shù)據(jù);該結(jié)構(gòu)由控制器進行管理;和在斷電時為DRAM緩存器、閃速存儲器和控制器提供電力的備份電源;該備份電源有足夠的容量,可令控制器根據(jù)備份規(guī)則的要求將耐用轉(zhuǎn)換層的數(shù)據(jù)復制到閃速存儲器中。
2.根據(jù)權(quán)利要求1所述的超耐用閃速存儲器驅(qū)動器,其中耐用轉(zhuǎn)換層(ETL)在 DRAM緩沖器中執(zhí)行,其包含: 一份存儲在DRAM緩 沖器中并由控制器存取的頁面映射表,該頁面映射表有主機邏輯地址所選的條目; 一份存儲在DRAM緩沖器中、由控制器存取的多元子扇區(qū)映射表,每份子扇區(qū)映射表由一個頁面中扇區(qū)數(shù)選擇的多元扇區(qū)條目組成; 該表中的扇區(qū)條目由下列部分組成: “部分-扇區(qū)位”是指條目是主機完整數(shù)據(jù)的扇區(qū)條目,以及條目是主機部分數(shù)據(jù)的部分扇區(qū)條目; “頁面指針”用于指定存儲完整扇區(qū)數(shù)據(jù)或部分扇區(qū)數(shù)據(jù)的DRAM緩沖器中的頁面位置; “扇區(qū)識別符”,當條目是完整扇區(qū)條目時,用于識別頁面位置內(nèi)的扇區(qū); 當條目是部分扇區(qū)條目時,用于識別頁面位置內(nèi)起始字節(jié)位置的“字節(jié)偏移”,以及指明部分扇區(qū)數(shù)據(jù)長度的“長度”; 其中完整磁區(qū)條目和部分磁區(qū)條目存儲在多元子扇區(qū)映射表中; 存儲在DRAM緩沖器中并由控制器存取的數(shù)據(jù);其中條帶單元的每頁均包括完整頁數(shù)據(jù)或分組的部分頁數(shù)據(jù); 其中控制器允許主機將要存儲的數(shù)據(jù)寫入數(shù)據(jù)緩存中,然后根據(jù)一項規(guī)則將條帶單元寫入閃速存儲器中。
3.根據(jù)權(quán)利要求2所述的超耐用閃速存儲器驅(qū)動器,其中映射表中有條目,其包含: “數(shù)據(jù)類型位”指為條目選擇的邏輯地址而存儲的數(shù)據(jù)類型; 當全頁主機數(shù)據(jù)存儲在DRAM中,或當全頁主機數(shù)據(jù)存儲在閃速存儲器中時,在其中用于指定位置的“指針”,其中當主機數(shù)據(jù)為部分頁數(shù)據(jù)時,指針指定在多元子扇區(qū)映射表中用于存儲子扇區(qū)的映射表位置; 其中數(shù)據(jù)類型位指從包含下列內(nèi)容的組中選出的數(shù)據(jù)類型:一個文件分配表(FAT)條目; 一個文件描述塊(FDB)條目; 一個由主機存儲管理器創(chuàng)建、將數(shù)據(jù)從主機主存儲器交換至超耐用閃速存儲器驅(qū)動器的頁面文件; 一個在FAT條目(指示由主機執(zhí)行程序創(chuàng)建的臨時文件)中由文件擴展標識的臨時文件,該臨時文件在電源關(guān)閉/停電時可以擦除;和一個用戶文件,用于為主機用戶存儲用戶數(shù)據(jù)或申請數(shù)據(jù); 其中控制器允許將用戶文件復制到閃速存儲器,但不允許將臨時文件寫入閃速存儲器,這樣,通過阻止將臨時文件寫入閃速存儲器,可以減少閃速存儲器耗損。
4.根據(jù)權(quán)利要求1所述的超耐用閃速存儲器驅(qū)動器,其中耐用轉(zhuǎn)換層(ETL)在DRAM緩沖器中執(zhí)行,其進一步包含: 一個壞塊管理器:當擦除閃速存儲器中的塊,以生成一個擦除塊時,該管理器啟動: “計數(shù)”指對該擦除塊中一個頁面內(nèi)未擦除位的數(shù)量進行統(tǒng)計; 當未擦除位的數(shù)量超過較低閾值,但不超過較高閾值時,將該頁標記為保護頁面,并增加為該保護頁面存儲的錯誤糾正碼(ECC)位的數(shù)量; “頁面標記”指當未擦除位的數(shù)量超過較高閾值時啟動的、將頁面標記為壞頁面,并且不在其中存儲主機數(shù)據(jù)的活動; “重復”指重復擦除塊中所有頁面的計數(shù)方式和頁面標記方式; “壞頁面計數(shù)”用于計算擦除塊中壞頁面數(shù)量; “塊標記”指當擦除塊有許多超過塊閾值的壞頁面時,所啟動的將擦除塊標記為壞塊,并且在壞塊任何頁面中均不存儲主機數(shù)據(jù)的活動。
5.根據(jù)權(quán)利要求1所述的超耐用閃速存儲器驅(qū)動器,其中耐用轉(zhuǎn)換層(ETL)在DRAM緩沖器中執(zhí)行,其進一步包含: 一個存儲在DRAM緩沖器中、由控制器存取的數(shù)據(jù)輸入緩沖器; 一條包含壓縮主機寫入方式、壓縮數(shù)據(jù)添加數(shù)據(jù)頭方式、更新壓縮映射表方式的串聯(lián)壓縮電路; 其中控制器還包含一個適配壓縮算法(選擇適當算法并根據(jù)設(shè)置的數(shù)據(jù)類型壓縮寫入數(shù)據(jù)); 這樣,通過減小寫入數(shù)據(jù)的大小,使閃速存儲器的寫入量更少,以便延長閃速存儲器的持久性。
6.根據(jù)權(quán)利要求1所述的超耐用閃速存儲器驅(qū)動器,其中耐用轉(zhuǎn)換層(ETL)在DRAM緩沖器中執(zhí)行,其進一步包含: 收集閃速存儲器裝置健康信息的S.M.A.R.T.功能,其中閃速存儲器裝置的質(zhì)保是根據(jù)客戶購買年限或閃速存儲器驅(qū)動器的總主機寫入數(shù)量而確定的。
7.一種耐用轉(zhuǎn)換層(ETL)方法,能夠增加具有較短擦除周期壽命的閃速存儲器的持久性,該方法包含: 對主機接收的讀取或?qū)懭胱龀龇磻獣r,控制對閃速存儲器和動態(tài)隨機存儲(DRAM)緩沖器的訪問,并通過控制器向DRAM緩沖器寫入主機數(shù)據(jù); 在控制器控制的DRAM緩沖器內(nèi)創(chuàng)建ETL,并使用該ETL提供臨時存儲,以減少閃速存儲器損耗; 在DRAM緩沖器內(nèi)分布數(shù)據(jù),在其中形成數(shù)據(jù)分布的獨立磁盤冗余陣列(RAID)結(jié)構(gòu),并通過閃速存儲器的幾個通道寫入新數(shù)據(jù),RAID結(jié)構(gòu)由控制器管理; 使用數(shù)據(jù)劃分管理器確認數(shù)據(jù)類型為非臨時數(shù)據(jù)類型或者為臨時數(shù)據(jù)類型;并且在斷電時使用備份電源為DRAM緩沖器和閃速存儲器以及控制器供電,備份電源有足夠的容量,使得控制器可以根據(jù)一項規(guī)則將耐久轉(zhuǎn)換層中的非臨時數(shù)據(jù)復制到閃速存儲器中。
8.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存儲在DRAM緩沖器中的數(shù)據(jù)寫入緩存; 寫入由匹配條目中指針指定的DRAM緩沖器的ETL存儲的整頁數(shù)據(jù); 當主機數(shù)據(jù)用于閃速存儲器中的部分頁時: 創(chuàng)建或定位由映射表匹配條目指針指定的子扇區(qū)映射表; 對于主機的每個全扇區(qū)數(shù)據(jù),更新子扇區(qū)映射表的條目,指示存儲在DRAM緩沖器中的全扇區(qū)類型和全扇區(qū)指針; 對于主機的部分扇區(qū)數(shù)據(jù),更新子扇區(qū)映射表中的條目,指示存儲部分扇區(qū)、其長度和起始字節(jié)位移; 子扇區(qū)映射表具有全扇區(qū)和部分扇區(qū)的條目; 其中每頁條帶單元包括整頁數(shù)據(jù)或分組的部分頁數(shù)據(jù); 其中控制器允許將主機寫入數(shù)據(jù)存儲在數(shù)據(jù)寫入緩存中,然后根據(jù)一項規(guī)則將條帶單元寫入閃速存儲器中。
9.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法,其中ETL在DRAM緩沖器中執(zhí)行,該方法進一步包含: 使用壓縮管理器控制各種功能; 管理DRAM緩沖器中存儲的數(shù)據(jù)寫入高速緩存; 寫入來自主機的第一個數(shù)據(jù),以及寫入數(shù)據(jù)寫緩存開頭的數(shù)據(jù)頭; 寫入來自主機的一個新數(shù)據(jù),以及數(shù)據(jù)寫緩存中前一個數(shù)據(jù)旁邊的數(shù)據(jù)頭; 其中,當接受來自主機的已更新寫數(shù)據(jù),且舊數(shù)據(jù)處于數(shù)據(jù)寫緩存區(qū)時,控制器將擦除舊數(shù)據(jù)及其數(shù)據(jù)頭,并將無效數(shù)據(jù)移至舊數(shù)據(jù)之后,然后附加已更新數(shù)據(jù)及其數(shù)據(jù)頭;其中,當無效數(shù)據(jù)大小超過條帶單元大小,且數(shù)據(jù)寫緩存已滿時,控制器會將條帶單元大小寫入閃速存儲器。
10.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法,其中ETL在DRAM緩沖器中執(zhí)行,該方法進一步包含: 使用控制器管理存入DRAM緩沖器的數(shù)據(jù)寫緩存; 接受來自主機的初始主機寫入值; 主機邏輯地址在文件分配表(FAT)地址范圍內(nèi)時,對指示FAT類型的數(shù)據(jù)類型位數(shù)進行分配,文件分配表(FAT)地址范圍由存儲FAT條目的格式化操作指定;主機邏輯地址在文件描述塊(FDB)地址范圍內(nèi)時,對指示FDB類型的數(shù)據(jù)類型位數(shù)進行分配,文件描述塊(FDB)地址范圍由存儲FDB條目的操作系統(tǒng)指定; 如果數(shù)據(jù)類型位數(shù)未作另行分配,那么對指示用戶文件類型的數(shù)據(jù)類型位數(shù)進行分 配;將被分配給初始主機寫入的數(shù)據(jù)類型位數(shù)寫入新條目中,新條目位于帶有指針的映射表中; 將接收自初始化主機的初始主機數(shù)據(jù)寫入指針指向的DRAM緩沖器的ETL某一位置;將DRAM緩沖器中的存儲數(shù)據(jù)移至閃速存儲器中,以便存儲數(shù)據(jù)具備指示用戶文件類型的數(shù)據(jù)類型位數(shù); 電源關(guān)閉/停電時,將DRAM緩沖器ETL中的存儲數(shù)據(jù)移至閃速存儲器中,以便數(shù)據(jù)具備指示文件分配表或文件數(shù)據(jù)緩沖區(qū)類型的數(shù)據(jù)類型位數(shù),這樣可降低閃速存儲器的磨損。
11.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 在DRAM緩沖器內(nèi)創(chuàng)建數(shù)據(jù)寫緩存區(qū); 記錄每一邏輯區(qū)塊地址的訪問頻率; 其中,訪問頻率大于預定義值時,邏輯區(qū)塊地址將被分類為“頻繁訪問”,反之,那么為“非頻繁訪問”; 被訪問的邏輯區(qū)塊地址為頻繁訪問時,將數(shù)據(jù)存至頻繁訪問緩沖區(qū); 被訪問的邏輯區(qū)塊地址為非頻繁訪問時,將數(shù)據(jù)存至非頻繁訪問緩沖區(qū); 其中,非頻繁訪問緩沖區(qū)會被優(yōu)先寫入閃速存儲器,以及優(yōu)先被其它頻繁或非頻繁訪問邏輯區(qū)塊地址訪問覆蓋。
12.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存入DRAM緩沖器的數(shù)據(jù)寫緩存; 使用控制器管理來自主機的傳入邏輯區(qū)塊地址; 在電源接通狀態(tài)下檢查文件系統(tǒng)地址與閃速存儲器頁面之間的不對齊問題,確定所需對齊偏移量; 向傳入邏輯區(qū)塊地址中添加偏移量,將傳入邏輯區(qū)塊地址對齊到閃速存儲器頁面。
13.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存入DRAM緩沖器的數(shù)據(jù)寫緩存; 操作串聯(lián)壓縮電路,壓縮主機寫入,將數(shù)據(jù)頭添加至壓縮數(shù)據(jù),并更新已壓縮映射表; 其中,控制器進一步包含各種壓縮算法; 選擇適當算法,根據(jù)數(shù)據(jù)集類型壓縮寫入數(shù)據(jù); 當數(shù)據(jù)集具有恒等數(shù)據(jù)集時,使用已壓縮映射表,指向相同的壓縮數(shù)據(jù)集; 當數(shù)據(jù)集具有相似數(shù)據(jù)集時,使用已壓縮映射表,指向相同的壓縮數(shù)據(jù)集,并使用指針指向增量數(shù)據(jù); 數(shù)據(jù)集沒有相似數(shù)據(jù)集時,將已壓縮映射表移至DRAM緩沖器,并更改已壓縮映射表中的指針; 數(shù)據(jù)大小在壓縮后未減小時,保留原始數(shù)據(jù); 這樣,寫入數(shù)據(jù)的大小的減小,導致寫入閃速存儲器的數(shù)據(jù)變少,從而提高閃速存儲器耐用性。
14.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存入DRAM緩沖器的數(shù)據(jù)讀取緩存; 從主機接收讀取請求,獲取邏輯區(qū)塊地址;從閃速存儲器中讀取數(shù)據(jù),未檢查到讀取錯誤后,發(fā)送數(shù)據(jù)至主機; 檢查到讀取錯誤時,方法一激活,執(zhí)行錯誤糾正碼(ECC)檢查,生成一系列誤碼; 誤碼數(shù)少于第一個閾值時,方法二激活,應用第一級錯誤糾正法糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機; 誤碼數(shù)多于第一個閾值且少于第二個閾值時,方法三激活,應用第一級錯誤糾正法糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機,若先前沒有生成的話,則生成軟件錯誤糾正碼;誤碼數(shù)多于第二個閾值且還可應用ECC進行糾正時,方法四激活,應用第一級錯誤糾正法糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機,若先前沒有生成的話,則生成軟件錯誤糾正碼; 誤碼數(shù)高于第一級錯誤糾正的糾正限度時,方法五激活,應用之前生成的軟件錯誤糾正碼糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機; 誤碼數(shù)高于第一級錯誤糾正的糾正限度,且應用軟件錯誤糾正碼無法進行糾正時,方法六激活,放棄一項分段數(shù)據(jù),應用分段數(shù)據(jù)組中的奇偶校驗分段數(shù)據(jù)及其它分段數(shù)據(jù)重建該分段數(shù)據(jù),然后將已修正數(shù)據(jù)發(fā)送至主機; 誤碼數(shù)高于第一級錯誤糾正 的糾正限度,應用軟件錯誤糾正碼無法進行糾正時,且分段奇偶校驗數(shù)據(jù)無法使用時,方法七激活,執(zhí)行參考電壓切換例程,然后發(fā)送已修正數(shù)據(jù)至主機。
15.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存入DRAM緩沖區(qū)的數(shù)據(jù)讀取緩存; 從主機接收讀取請求,獲取邏輯區(qū)塊地址; 從閃速存儲器中讀取數(shù)據(jù),未檢查到讀取錯誤后,發(fā)送數(shù)據(jù)至主機; 檢查到讀取錯誤時,方法一激活,執(zhí)行錯誤糾正碼(ECC)檢查,生成誤碼; 誤碼數(shù)少于一個閾值時,方法二激活,應用第一級錯誤糾正法糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機; 誤碼數(shù)多于閾值且還可應用ECC進行糾正時,方法三激活,應用第一級錯誤糾正法糾正誤碼,然后將已修正數(shù)據(jù)發(fā)送至主機,重新定位閃速存儲器數(shù)據(jù)的舊物理塊至新物理塊位置,標記該舊物理塊為“已放棄”; 誤碼數(shù)高于第一級錯誤糾正的第一糾正限度時,方法四激活,放棄一項分段數(shù)據(jù),應用分段數(shù)據(jù)組中的奇偶校驗分段數(shù)據(jù)及其它分段數(shù)據(jù)重建該分段數(shù)據(jù),然后將已修正數(shù)據(jù)發(fā)送至主機,重新定位閃速存儲器數(shù)據(jù)的舊物理塊至新物理塊位置,標記該舊物理塊為“已放棄”; 誤碼數(shù)高于第一級錯誤糾正的第一糾正限度,且分段奇偶校驗數(shù)據(jù)無法使用時,方法五激活時,執(zhí)行參考電壓切換例程,然后將已修正數(shù)據(jù)發(fā)送至主機。
16.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 使用控制器管理存入DRAM緩沖區(qū)的數(shù)據(jù)讀取緩存; 誤碼數(shù)高于第一級錯誤糾正的第一糾正限度時,切換方法激活,通過以下方式調(diào)整參考電壓等級: 將不同寄存器值寫入閃速存儲器芯片寄存器中,以讀取閃速存儲器芯片內(nèi)的數(shù)據(jù); 其中,參考電壓等級或高于或低于默認參考電壓等級;使用已調(diào)整過的參考電壓讀取閃速存儲器芯片內(nèi)的數(shù)據(jù); 使用已調(diào)整過的參考電壓等級與第一級錯誤糾正成功讀取閃速存儲器芯片內(nèi)的數(shù)據(jù)后,將已修正數(shù)據(jù)發(fā)送至主機,存儲已調(diào)整參考電壓等級供以后使用; 使用已調(diào)整過的參考電壓等級與第一級錯誤糾正未成功讀取閃速存儲器芯片內(nèi)的數(shù)據(jù)后,使用先前生成的軟件錯誤糾正碼,將已修正數(shù)據(jù)發(fā)送至主機,存儲已調(diào)整參考電壓等級供以后使用; 使用已調(diào)整過的參考電壓等級、第一級錯誤糾正以及先前生成的軟件錯誤糾正碼讀取數(shù)據(jù)失敗時,在新的迭代中計算新的調(diào)整參考電壓并應用該參考電壓等級; 以及所有預定義參考電壓等級都失敗后,報告嚴重錯誤,不發(fā)送已修正數(shù)據(jù);這樣,當誤碼數(shù)高于第一級錯誤糾正的第一糾正限度時,調(diào)整參考電壓等級,從而提高閃速存儲器耐用性。
17.根據(jù)權(quán)利要求7所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 當閃速存儲器中的一個區(qū)塊已被擦除時,增加已擦除區(qū)塊抹寫次數(shù)表中的區(qū)塊抹寫次數(shù); 讀取已擦除區(qū)塊頁面狀態(tài)表,頁面狀態(tài)表中有多元頁面條目,每一個頁面條目都存儲了已擦除區(qū)塊中的頁面的狀態(tài),狀態(tài)包括壞頁或好頁指示; 針對已擦除區(qū)塊中的每一個頁面,從頁面狀態(tài)表中讀取頁面上的頁面條目; 頁面狀態(tài)表中的頁面狀態(tài)顯示為“壞”時,處理下一頁; 頁面狀態(tài)表中的頁面狀態(tài) 顯示為“好”時,計算該頁面上的未擦除位元數(shù); 未擦除位元數(shù)超過第一閾值時,更改頁面狀態(tài),在頁面條目中顯示壞頁,增加壞頁數(shù);未擦除位元數(shù)處于第一閾值與第二閾值之間,且頁面狀態(tài)表中的頁面狀態(tài)顯示需要錯誤糾正碼(ECC)保護時,處理下一頁; 未擦除位元數(shù)處于第一閾值與第二閾值之間,且頁面狀態(tài)表中的頁面狀態(tài)顯示不需要ECC保護時,更改頁面狀態(tài)表中的頁面狀態(tài),顯示需要ECC保護,增加ECC保護頁面數(shù);已擦除區(qū)塊壞頁數(shù)超過第三閾值時,顯示已擦除區(qū)塊不是壞塊,不向已擦除區(qū)塊寫入新數(shù)據(jù),這樣,可通過計算已擦除區(qū)塊壞頁數(shù)識別已擦除壞區(qū)塊,并允許壞頁存在于好塊中,從而提高閃速存儲器耐用性。
18.一種耐用轉(zhuǎn)換層(ETL)方法,能夠增加具有較短擦除周期壽命的閃速存儲器的持久性,該方法包含: 在由控制器管理的動態(tài)隨機存儲(DRAM)緩沖器中創(chuàng)建耐用轉(zhuǎn)換層(ETL),應用該轉(zhuǎn)換層提供臨時存儲,以此降低閃速存儲器耗損度; 在DRAM緩沖器中創(chuàng)建備用區(qū)/交換區(qū); 操作控制器應用DRAM緩沖器中的備用區(qū)/交換區(qū),合并閃速存儲器中的有效數(shù)據(jù)和新數(shù)據(jù),并生成合并數(shù)據(jù); 以及將合并數(shù)據(jù)寫入閃速存儲器內(nèi); 這樣,控制器將應用動態(tài)隨機存儲緩沖區(qū)內(nèi)的備用/交換功能,而非閃速存儲器內(nèi)的功能。
19.根據(jù)權(quán)利要求18所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 為閃速存儲器內(nèi)的區(qū)塊提供損耗均衡控制;當控制器需要閃速存儲器區(qū)塊通過DRAM緩沖區(qū)中的備用區(qū)/交換區(qū)寫數(shù)據(jù)時,檢查區(qū)塊狀態(tài)/抹寫次數(shù)表,從處于空塊狀態(tài)的區(qū)塊列表中選擇抹寫次數(shù)最低的區(qū)塊; 不能選擇抹寫次數(shù)最高的區(qū)塊。
20.根據(jù)權(quán)利要求18所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 為閃速存儲器內(nèi)的區(qū)塊提供損耗均衡控制; 設(shè)備空閑且最高抹寫次數(shù)達到預定閾值時,利用區(qū)塊狀態(tài)/抹寫次數(shù)表,有針對性地選擇一組具有最低抹寫次數(shù)的已用區(qū)塊以及同樣數(shù)量的具有最高抹寫次數(shù)的空塊,通過DRAM緩沖區(qū)中的備用區(qū)/交換區(qū),從最低抹寫次數(shù)區(qū)塊中將數(shù)據(jù)復制到最高抹寫次數(shù)區(qū)塊,然后擦除最低抹寫次數(shù)區(qū)塊; 再利用最低抹寫次數(shù)區(qū)塊; 將每一區(qū)塊抹寫次數(shù)的增量最小化。
21.根據(jù)權(quán)利要求18所述的耐用轉(zhuǎn)換層(ETL)方法進一步包含: 在DRAM緩沖區(qū)中創(chuàng)建頁面狀態(tài)表; 操作控制器,使用DRAM緩沖器中的頁面狀態(tài)表記錄每一個閃速存儲器頁面的狀態(tài); 擦除一個區(qū)塊后,將該區(qū)塊中的每一個頁面的狀態(tài)設(shè)置為“空頁”; 寫入一個頁面后,更改所用頁面的狀態(tài); 主機數(shù)據(jù)寫入同一個邏輯頁面 地址時,將數(shù)據(jù)寫入新閃速存儲器頁面,將舊頁面的 狀態(tài)設(shè)置為“已擦除/已剪裁 頁面”; 從主機接收到剪裁命令時,將相應頁面狀態(tài)設(shè)置為“已擦除/已剪裁頁面”; 頁面識別為壞頁時,設(shè)置頁面狀態(tài)為“壞頁”; 清理回收站過程中,不要將顯示為“已擦除/已剪裁頁面”的頁面移入新的區(qū)塊中; 在DRAM緩沖器中創(chuàng)建備用區(qū)/交換區(qū); 操作控制器,使用DRAM緩沖器中的備用區(qū)/交換區(qū)合并閃速存儲器中的有效數(shù)據(jù)和新數(shù)據(jù),并生成合并數(shù)據(jù); 其中,從頁面狀態(tài)表中可檢查到目標區(qū)塊中的每一個頁面的狀態(tài); 其中,有效數(shù)據(jù)頁的頁面狀態(tài)顯示為“已用頁面”;頁面狀態(tài)不顯示為“壞頁”、“空頁”或“已剪裁頁面”; 將合并數(shù)據(jù)寫入閃速存儲器; 這樣,控制器將使用DRAM緩沖器內(nèi)的備用/交換功能,而非閃速存儲器內(nèi)的功能。
全文摘要
本發(fā)明提供的這一閃速存儲器驅(qū)動器可通過減少閃速存儲器寫入來增加其耐用性及使用壽命。在DRAM緩沖區(qū)內(nèi)創(chuàng)建的耐用轉(zhuǎn)換層可用以提供臨時存儲功能,進而降低閃速存儲器耗損度。當將主機訪問類型分為由內(nèi)存管理、臨時文件、文件分配表和文件數(shù)據(jù)緩沖區(qū)條目以及用戶數(shù)據(jù)文件使用的分頁文件時,智能存儲交換機(SSS)控制器將應用文件分配表中的地址范圍與文件擴展,并開始分配數(shù)據(jù)類型位元。這樣,分頁文件和臨時文件就不會被寫入閃速存儲器中。壓縮部分頁面數(shù)據(jù),并壓縮由統(tǒng)一映射表(存儲著數(shù)據(jù)類型位元和DRAM中的指向數(shù)據(jù)或表格的指針)指向的子扇區(qū)映射表的映射扇區(qū)。壓縮部分扇區(qū),以減少DRAM使用率及閃速存儲器耗損度。DRAM中的備用區(qū)/交換區(qū)同樣也可降低閃速存儲器耗損度。錯誤糾正失敗后將調(diào)整參考電壓。
文檔編號G06F3/06GK103176752SQ20131006907
公開日2013年6月26日 申請日期2013年3月5日 優(yōu)先權(quán)日2012年7月2日
發(fā)明者俞一康, 馬治剛, 陳希孟 申請人:晶天電子(深圳)有限公司