TW201619971A - 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法 - Google Patents

耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法 Download PDF

Info

Publication number
TW201619971A
TW201619971A TW104130505A TW104130505A TW201619971A TW 201619971 A TW201619971 A TW 201619971A TW 104130505 A TW104130505 A TW 104130505A TW 104130505 A TW104130505 A TW 104130505A TW 201619971 A TW201619971 A TW 201619971A
Authority
TW
Taiwan
Prior art keywords
data
dram
gnsd
coupled
host
Prior art date
Application number
TW104130505A
Other languages
English (en)
Inventor
yi-kang Yu
Chih-Kang Abraham Ma
Xi-Meng Chen
Yao-Ze Zhang
Yan Zhou
Original Assignee
Infomicro Electronics Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/141,879 external-priority patent/US20080320209A1/en
Priority claimed from US13/540,569 external-priority patent/US8959280B2/en
Priority claimed from US13/730,797 external-priority patent/US8954654B2/en
Priority claimed from US13/788,989 external-priority patent/US9123422B2/en
Application filed by Infomicro Electronics Shenzhen Co Ltd filed Critical Infomicro Electronics Shenzhen Co Ltd
Publication of TW201619971A publication Critical patent/TW201619971A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0018Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明係揭露一種耦合至主機DRAM的GNSD,並具有儲存管理器、資料分組引擎、取消資料分組引擎、電源管理器、以及刷新/恢復管理器。GNSD驅動器耦合至GNSD應用程式,以及主機DRAM耦合至非揮發儲存器。GNSD驅動器更包括壓縮/解壓縮引擎、去重引擎、加密/解密引擎、或高級誤差錯誤更正碼引擎。加密/解密引擎根據DES或AES進行加密。一種操作耦合至主機DRAM之GNSD驅動器和GNSD應用程式之方法,其步驟包含:向主機和GNSD應用程式耦合配置和登記設置;向主機DRAM和向上部過濾器和下部過濾器耦合GNSD驅動器資料分組引擎和取消資料分組引擎;向主機耦合電源管理器和儲存器管理;向DRAM耦合刷新/恢復管理器;以及向SEED SSD耦合DRAM。

Description

耦合至主機DRAM之綠能與非固態硬碟(NAND SSD)驅動器、GNSD應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法
相關申請的交叉引用
本案申請關於2013年3月7日提交的申請號No.13/788,989的美國專利申請「帶有可編輯程式二進制水準每單元(Binary-Levels-Per-Cell)位識別頁或塊作爲具有三級、多級或單級快閃記憶單元的耐久性和保持力快閃記憶控制器」(Endurance and Retention Flash Controller with Programmable Binary-Levels-Per-Cell Bits Identifying Pages or Blocks as having Triple, Multi,or Single-Level Flash-Memory Cells);2012年12月28日提交的申請號No.13/730,797的美國專利申請「帶有資料類型拆分、元頁分組和臨時檔案向RAM碟轉向用的二級攔截以提高快閃記憶耐久性的虛擬儲存元件(VMD)應用/驅動器」(Virtual Memory Device (VMD) Application/ Driver with Dual-Level Interception for Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files to Ramdisks for Enhanced Flash Endurance);2012年7月2日提交的申請號No.13/540,569的美國專利申請「帶有耐用轉換層(ETL)和臨時檔案轉換以減少快閃記憶損耗的超級耐久固態驅動器(Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear)」;2008年6月18日提交的申請號No.12/141,879的美國專利申請「基於高性能和耐久性非揮發儲存器的儲存系統(High Performance and Endurance Non-volatile Memory Based Storage Systems)」;以及2013年6月26日提交的申請號No. 13/927,435的美國專利申請「用以增强快閃記憶耐久性和性能的具有DRAM資料持續性的綠能與非元件驅動器」 (Green NAND Device (GND) Driver With DRAM Data Persistence For Enhanced FLASH Endurance And Performance),其中它們每一個已經公開的內容在此整體並併入參考,並且它們都屬於同一專利權人。
本發明一般關於快閃記憶儲存器,更具體地說,是關於提高快閃記憶儲存器耐久性之方法和裝置。
帶有旋轉磁碟的硬碟正在日益被利用半導體快閃記憶儲存器的更可靠的固態驅動器(solid state disk, SSD)代替。反及(NAND)快閃記憶儲存器採用在浮栅上儲存電荷的電子可擦除可編輯程式唯讀儲存器(electrically erasable programmable read only memory, EEPROM)單元。單元一般用雪崩電流編輯程式,然後利用穿過氧化物薄層的量子力學隧道擦除。可惜的是,在編輯程式或擦除過程中某些電子可能在氧化物薄層中被捕捉。假定編輯程式電壓恒定,這些被捕捉的電子在隨後的編輯程式周期中減少了該單元中貯存的電荷。往往要提高編輯程式電壓來補償被捕捉的電子。
隨著快閃記憶儲存器的密度和尺寸的增大,該單元的尺寸及其可靠性和壽命已經全都降低。快閃記憶儲存器保證能夠承受的編輯程式-擦除周期數約爲100,000周期,在正常的讀寫條件下這被認爲是一個很長的壽命了。但較小的快閃記憶單元已經經歷高得令人不安的損耗。較新式的二級單元快閃記憶儲存器具有小於10,000編輯程式-擦除(P/E)周期的耐久性,而對於三級單元(TLC)在約500到約1500 P/E周期的耐久性。若當前的趨勢繼續,則未來的快閃記憶儲存器可能只允許300編輯程式-擦除周期。這樣低的耐久性可能嚴重地限制快閃記憶儲存器可能的用途,以及用於固態硬碟(SSD)的應用。需要高耐久性的SSD驅動器和耐久性的增强方法。
本發明實施例提供一種元件和方法。該元件包括耦合至主機DRAM的綠能與非固態驅動(GNSD)驅動器,該元件有儲存管理器的GNSD驅動器耦合至上部過濾器;耦合至該主機DRAM之資料分組引擎;耦合至該主機DRAM之取消資料分組引擎;以及耦合至該儲存管理器之電源管理器;以及耦合至該儲存管理器之刷新/恢復管理器。GNSD驅動器耦合至GNSD應用,以及主機DRAM耦合至非揮發儲存器。在實施例中,GNSD驅動器更包括壓縮/解壓縮引擎,耦合至檔案系統過濾器;加密/解密引擎,耦合至檔案系統過濾器;或高級誤差錯誤更正碼引擎,耦合至檔案系統過濾器。在採用加密/解壓縮引擎的實施例中,加密/解密引擎配置爲根據資料加密標準或先進加密標準其中之一進行加密。
本發明實施例更包括耦合至主機DRAM的GNSD驅動器,其包括資料分組器;DRAM資料寫暫存,耦合至資料分組器;取消資料分組器;以及DRAM資料讀暫存,耦合至取消資料分組器。資料分組器和取消資料分組器耦合至上部過濾器和下部過濾器。GNSD驅動器耦合至GNSD應用程式。DRAM耦合至非揮發儲存器。在實施例中,GNSD驅動器更包括壓縮/解壓縮引擎,耦合至下部過濾器;去重引擎,耦合至下部過濾器;加密/解密引擎,耦合至下部過濾器;或高級誤差錯誤更正碼引擎,耦合至下部過濾器。GNSD驅動器更可包括智慧資料監控器,耦合至超級增强耐力設備SSD;以及安全引擎,耦合至主機。高級誤差錯誤更正碼引擎採用基於圖形編碼或代數編碼之一。在一實施例中,高級誤差錯誤更正碼引擎採用基於圖形編碼的低密度奇偶校驗碼。資料分組器和取消資料分組器每個都耦合至用於用戶資料的元頁分組器;用於FDB的元頁分組器;以及用於頁檔案頁的元頁分組器。
實施例更提供耦合至主機DRAM的GNSD應用程式,其中包括耦合至GNSD驅動器的SSD內部清除模組;耦合至GNSD驅動器的DRAM分配模組;耦合至GNSD驅動器的驅動器安裝模組;或耦合至GNSD驅動器的暫存模式開啓/關閉開關。
實施例提供了一種具有GNSD驅動器之電腦系統主機,該GNSD驅動器耦合至資料分組和取消資料分組在電腦系統主機中;和一種耦合至GNSD驅動器和電腦系統主機之GNSD應用程式。在本實施例中,GNSD驅動器的資料分組和取消資料分組耦合至電腦系統主機之上部過濾器和下部過濾器,以及耦合至非揮發儲存器元件之電腦主機。實施例更包括耦合至電腦主機的操作系統的配置和登記設置。
本發明的實施例包括一種操作耦合至主機DRAM的GNSD驅動器和GNSD應用程式之方法,其包括向主機和GNSD應用程式耦合配置和登記設置;向主機DRAM耦合GNSD驅動器資料分組引擎;向主機DRAM耦合GNSD驅動器取消資料分組引擎;向主機耦合GNSD驅動器之電源管理器;向主機耦合GNSD驅動器之儲存器管理;向DRAM耦合GNSD驅動器的刷新/恢復管理器;向上部過濾器和下部過濾器耦合GNSD驅動器資料分組引擎和取消資料分組引擎;以及向超級增强耐久設備(SEED)SSD耦合DRAM。該方法更包括禁止驅動索引、禁止驅動搜索索引、減少頁面檔案的大小、禁用系統恢復、禁用休眠、禁用預取、減小回收站大小、禁用磁碟碎片整理程式、減少記錄;以及禁用性能監視器、禁用寫暫存、或禁用寫暫存緩衝器刷新。該SEED SSD的耐久性增加至超過規定值並且寫放大被減少至小於規定值。
在實施例中,該方法更包括同步弱表至SEED SSD塊的弱表;在弱表中産生頁資料的高級錯誤更正碼(Error correcting code, ECC)資料、提供産生的高級ECC資料;儲存該産生的高級ECC資料於主機DRAM中的一個暫存區域,或SEED SSD的剩餘區域;以及寫入由弱表指示的頁。該方法可藉由ECC引擎讀取頁中的資料而繼續以及,如果SEED SSD本地ECC引擎確定頁中資料是錯誤的,則ECC引擎讀取生成的弱表高級ECC屬於錯誤的頁資料;以及用由ECC引擎生成的高級ECC來糾正該錯誤的頁資料。
在實施例中,該方法更包括分組用戶資料爲第一元頁;分組系統FDB爲第二元頁;分組頁檔案頁爲第三元頁;以及儲存該第一元頁、第二元頁和第三元頁至SEED SSD的儲存卷。在一個實施例中,該方法包括提供耐久轉換層(Endurance Translation Layer, ETL)以控制對SEED SSD中的快閃記憶儲存器的訪問以及對DRAM緩衝器的訪問;藉由ETL檢查快閃記憶儲存器塊和藉由ETL識別若所有錯誤位超過預選高水準門檻值則該塊爲壞塊,或者藉由ETL若所有錯誤位超過預選低水準門檻值使該塊進入弱表;以及同步耦合至DRAM的GNSD驅動器的弱表。
本發明之實施例更包括一種增加非揮發快閃記憶儲存器耐久性之方法,包括耦合具有ECC引擎的GNSD驅動器至主機DRAM;耦合SEED SSD至主機DRAM;使用主機DRAM爲SEED SSD中的所選資料生成高級ECC;和用該高級ECC糾正SEED SSD之錯誤資料。實施例之方法更包括同步SEED SSD塊弱表的弱表;在弱表中産生頁資料的高級錯誤更正碼(ECC)資料、提供産生的高級ECC資料;儲存該産生的高級ECC資料於DRAM中的一個暫存區域或SEED SSD的剩餘區域;以及寫入由弱表指示的頁資料。申請專利範圍第18項所述之增加耐久性之方法的實施例,包括讀取頁中資料;如果SEED SSD本地ECC引擎確定頁中資料是錯誤的,則讀取屬於頁的弱表中産生的高級ECC資料,並用在頁中産生的高級ECC資料來糾正該錯誤的資料。
在阻止、結合或暫存至DRAM的主機上執行的綠能與非固態硬碟驅動器(GNSD)應用程式和GNSD驅動器,在它們寫到快閃記憶之前,因此降低了向快閃記憶的寫頻率。綠能或低能快閃記憶元件採用低耐久性NAND快閃記憶儲存器。在主機上的GNSD應用程式和GNSD驅動器産生並管理主機和SSD上的複數個暫存,其可具有低耐久性快閃記憶儲存器。低耐久性快閃記憶儲存器包括,三級單元(TLC)NAND快閃記憶儲存器,但不限於此。GNSD應用程式和GNSD驅動器與SSD和主體運行,以將SSD轉換爲超級增强耐久快閃記憶驅動,或超級增强耐久元件(SEED)SSD。本文中的實施例可應用至微軟、雷蒙德,WA USA的Windows操作系統,但是類似作了適當的修正的示例可應用至其他操作系統。
請參閱圖1和圖2,電腦系統5包括主機300和SEED SSD 200。主機300包括刷新管理器313、硬碟分類驅動器174、電源/CPU監控器248、以及模式249,主機300還包括GNSD驅動器100,其可耦合至GNSD應用程式180。GNSD驅動器100具有儲存器管理器106,和刷新/恢復管理器107。此外,GNSD驅動器100可包括加密/解密引擎240,高級錯誤更正碼(ECC)引擎241,壓縮/解壓縮引擎242,去重引擎243,和安全引擎244。
「儲存器管理器」106可提供多種功能,諸如「DRAM清除」,其重置由GNSD驅動器控制的DRAM暫存區域。向SEED SSD 200的OS命令「Trim命令」以實際上從快閃記憶去除資料。對於GNSD驅動器,如果資料暫存在DRAM 333上,可使用命令從DRAM 333上去除資料。「格式竊取程式」可使格式命令穿過至SEED SSD 200而不受任何干擾。「智慧刷新」可刷新從DRAM 333到SEED SSD 200的資料,依賴於用戶「永遠」(例如,不使用自動刷新)、30秒、1分鐘、或5分鐘等的選擇。預設是不使用自動刷新以最大化DRAM 333的效率。此外,當DRAM暫存使用到達預定級別時,可刷新被選擇的DRAM暫存資料(例如冷資料)至SSD 200。當選擇自動刷新時,預定水標可設置爲用於已刷新的DRAM暫存資料和仍然保留在DRAM中的資料。該DRAM暫存只在DRAM暫存區域滿時被重寫。
「刷新/恢復管理器」107提供一種在關機或掉電時快速刷新DRAM資料至SEED SSD 200以及電源再來時重新將被刷新的資料從SEED SSD 200存入DRAM。其更可在當DRAM暫存到達預定水準標記時刷新DRAM 333至SEED SSD 200。如果主機對SEED SSD 200沒啟動,GNSD驅動器100可基於用戶的選擇將DRAM暫存資料寫入SEED SSD 200。當電源關機或掉電時,DRAM暫存中的脏資料50(該寫入但未寫入SSD的資料),例如在SSD DRAM緩衝器194中的資料會以一個映像file的形式存入SEED SSD中。這個做法會比其他所有的標準操作法快些。在電源回復時,這個映像能被讀出和還原到跟先前一樣。
資料將作爲一個影像檔案而保存至SEED SSD。這種方式和所有標準操作相比都將更快。在電源恢復時,該影像可被讀出並按照上次重新裝載。
提供GNSD驅動器100的功能288結合配置和操作系統的設置以改善耐久性和SEED SSD的性能。下面詳細描述結合配置和操作系統的設置以改善耐久性和SEED SSD性能的GNSD驅動器100的功能288:
禁止驅動索引:SEED SSD 200功能求快,約0.1毫秒,這樣的索引是不需要的。
禁止驅動搜索索引:禁止搜索索引有助於增加SSD的性能和壽命。禁止此選項可以防止Windows操作系統試圖追踪每一個檔案搜索。缺點是,SSD的搜索可能變慢。
減少頁面檔案的大小:將頁面檔案留在SSD上但將它設置爲一個固定的「合理」尺寸。操作系統(OS)會分配一個頁面檔案是大小與安裝的DRAM 333相同的大小。對於大型DRAM機器,操作系統會快速消耗SSD空間。操作系統的頁面檔案在SSD上的功能表現,取决於系統中的DRAM內存量。它可以被設置爲例如1或2 GB的大小。當設置頁面檔案的值時,其參數可設置爲相同、固定、最小和最大值,其反映了SSD 200上的可用空間之間的平衡以及可獲得多少以及有多少經常使用的DRAM 333。
禁用系統恢復:系統恢復功能允許安裝軟體、驅動程式和其他可被重新運行的刷新。禁用此功能可以釋放介於幾百兆字節和幾十億字節之間儲存。可使用的系統還原的磁碟空間容量被減少,或甚至完全關閉時會面臨不能自動從因系統變化引起的問題中恢復的風險。然而,如果禁用此功能,用戶可以使用備份的其他形式,如創建磁碟影像備份。
禁用休眠:藉由禁用Windows操作系統的休眠功能,可將SEED SSD 200的空間釋放至DRAM 333的數量。預設情况下,休眠檔案的大小(Hiberfil.sys)與在電腦上安裝的DRAM 333的量相同。當然,禁用休眠功能會阻止用戶使用該省電模式,以及妨礙獲得快速導入和關機的優點。可是,休眠模式沒有給SEED SSD 200提供真正好處,由於其快速的10-20秒的SSD加載時間,其中,在某些情况下,等效於休眠。儘管如此,用戶可以藉由從關機選單中選擇它來選擇使用休眠功能。
禁用寫暫存:藉由禁用寫暫存和使用GNSD驅動器100暫存,當有備用電源時GSND驅動器100可完全使用其暫存。
關閉寫暫存緩衝器的刷新:關閉寫暫存緩衝器的刷新可增加SSD的性能。
禁用預取:固態硬碟具有極低的尋道時間且沒有旋轉延遲,所以訪問時間不依賴於特定的段的位置。預取因此失去其主要目的。此外,減少寫入SEED SSD 200是優化其性能的一部分,因此預取應禁用。
設置只向暫存啓動超級預取:使用超級預取的改進方法是只設置暫存啓動檔案。超級預取確實是有目的的,並只是把它完全關閉會只獲得一些磁碟空間,特別是如果僅僅是暫存檔案被删除後禁用。禁用超級預取會引起機器繁忙以減緩它從磁碟到RAM的交換應用程式。只是因爲使用了SSD,並不意味著交換不會發生或不值得注意。
減少回收站大小:設置回收站到一個固定且小的尺寸。Windows操作系統使用SSD的尺寸大小的約10%來進行尺寸設置。可設置其他大小尺寸的回收站。如使用300 MB的一個較小的尺寸可以騰出空間並減少向SSD的寫入。
減少記錄:操作系統(OS)寫了很多的事件日誌。除了一些必要的(日誌應用,安全,系統,安全要點),可安全地停止那些周期性地寫在驅動中的日誌。
禁用Windows可靠性監視器:這種性能的監控器可提供長期的硬件和軟體問題概述。其將事件寫入驅動,並且每小時地。如果操作系統是在SSD上,監控活動可以減緩穩定系統。
如果「智慧監控器」246監測到從主機到SSD 200沒有活動,將會刷新用戶選擇的DRAM資料暫存量至SSD 200,如果「自動刷新」可以的話。可以根據寫入量向DRAM資料暫存製作標記,然後基於寫入量安排刷新順序的優先級。安全244實現在允許訪問SEED SSD 200之前或由GSND驅動器100暫存的資料之前的密碼驗證處理。智慧監控器246從SEED SSD 200向GNSD應用程式180發送智慧監測訊息。
GSND應用程式可具有多種功能,它們中的四個可包括,但不限於:
GNSD應用程式180中的SSD內部清理應用181執行各種高級功能,如垃圾收集,和删除舊的或無用的檔案。SSD內部清理應用181可定期進行,如每天或每周,但不限於此。
GNSD應用程式180中的「DRAM分配」183,其從操作系統分配並初始化DRAM容量,爲了在GNSD驅動器存在或當暫存模式被關閉時使用GNSD驅動器100和返回DRAM至操作系統。
「暫存模式開/關」185:隨著GNSD應用程式180中暫存模式的關閉,GNSD驅動器100可刷新所有DRAM暫存資料至SSD 200並保持其活動。隨著暫存模式的開啓,GNSD驅動器100可設置成DRAM暫存環境。在「跟隨主機對元件的訪問(讀/寫)」中:IRP可直接傳遞至下一個驅動器。隨著暫存模式的開啓,GNSD驅動器可以從「寄存表」讀取參數並設置成DRAM暫存環境。「跟隨主機對元件的訪問(讀/寫)」,IRP可直接傳遞至GNSD驅動器。需要注意,當接到「全部刷新」命令時,GNSD驅動器會首先將暫存模式切換爲關閉,完成刷新後,其可將暫存模式切換爲開啓。隨著暫存模式的關閉,「跟隨主機對元件的訪問(讀/寫)」,IRP訪問將被GNSD驅動器忽略並直接傳遞至下一個驅動器。隨著暫存模式的開啓,「跟隨主機對元件的訪問(讀/寫)」,將被傳遞至GNSD驅動器和DRAM暫存。
「暫存模式開啓」:如果暫存模式狀態關閉,從註冊登記編輯器中讀取參數並從操作系統執行儲存器需求和分配。
「暫存模式關閉」:如果暫存模式狀態開啓,基於用戶指令刷新DRAM中暫存或清除DRAM,然後將釋放分配的儲存返回操作系統。
GNSD應用程式180中的「驅動器安裝」187,當GNSD驅動器啓動時,安裝用戶選擇的SEED SSD 200驅動器。SEED SSD 200驅動器可以是,但不限於,USB SSD、SATA SSD、PCI SSD、或M.2 SSD。也可以使用其他SEED SSD 200。
超級增强耐力設備(SEED)SSD 200可包括,但不限於,NAND快閃記憶儲存器196和SEED控制器192;SEED 200也包括SSD DRAM緩衝器194和備用電源195。SEED SSD 200中的SEED控制器192可在SSD DRAM緩衝器194中儲存資料並隨後存至NAND快閃記憶儲存器196,例如,在掉電或當SSD DRAM緩衝器194被存滿時。
主機300具有主機處理器325,其用於爲程式例如用戶應用182,和爲操作系統(OS)核心178,例如Windows、Linux、蘋果OS、安卓、或其他操作系統核心執行指令。主機300更包括斷電輔助處理器350,其用作輔助或備用處理器。斷電輔助處理器350也是多核系統的一部分。GNSD應用程式180可是一個執行應用程式,例如,在主機300上。GNSD應用程式180和GNSD驅動器100可用於擦除超級增强耐力設備(SEED)SSD 200的負載。GNSD應用程式180和GNSD驅動器100可一起工作以分離資料例如臨時檔案,分頁檔案頁等,其不意味著被永久儲存在快閃記憶上。GNSD驅動器100可管理暫存以儲存這些臨時(Temp)資料。暫存是主機DRAM 333的一部分。
GNSD驅動器100將寫操作從主機300轉至主機DRAM 333中或SSD DRAM緩衝器194中的暫存,特別是當提供充足備用電源的情况。來自用戶應用182的被操作系統核心178所寫的資料被上級檔案過濾驅動器190中斷並傳至GNSD驅動器100以分別壓縮或藉由壓縮/解壓縮引擎242或去重引擎243去重,在被送至檔案系統驅動器266之前。加密/解密引擎240例如可使用AES和DEA加密技術(參閱圖5)之一。那麽低階檔案過濾驅動器268再次中斷資料以被GNSD驅動器100進行更多的處理,例如以儲存在暫存301中。
檔案優先排序264基於低階檔案過濾驅動268指定的資料類型,或由邏輯塊地址指示的資料類型,如位元資料(FAT/FDB)、臨時檔案、頁面檔案、或用戶資料,來分類資料。FAT指檔案分配表,以及FDB是檔案描述塊。臨時檔案包括Windows操作系統臨時檔案、瀏覽器的臨時檔案等。可替換地,這個功能可以選擇禁用某些應用如伺服器。由優先任務轉讓器260給出操作的優先級以致更高優先級的任務可以在低優先級的任務之前執行。性能調節器256可以周期性地調整這些優先級以提高性能。目標受讓器254然後將資料發送到磁資料寫入DRAM 20。
最終準備寫入SEED SSD 200的資料可被從GNSD驅動器100發送至卷管理器270,例如其管理儲存卷,如SEED SSD 200。SEED SSD 200中的SEED控制器192將資料儲存在SSD DRAM緩衝器194中並然後至NAND快閃記憶儲存器196中,例如,當電源關機或當SSD DRAM緩衝器194存滿時。
交易系統262確保資料可被完全寫入SEED SSD 200。恢復管理器216確定那個寫資料交易沒有完成,例如,由於非正常掉電,以及有助於應用程式完成必要的重複或撤銷操作以使資料持久。因此,恢復管理器216旨在確保在刷新資料期間不發生錯誤,特別是在刷新資料期間面臨的電源干擾。調度程式218管理交易系統262以管理和記錄寫入SSD交易,如啓動、終止及承諾。
在系統導入處理期間初始化檔案系統;特別是I/O系統初始化。檔案系統過濾驅動器179爲可選的驅動器,其增加或修改檔案系統的行爲。檔案系統過濾驅動器179可作爲Windows操作系統執行的一部分運行的核心模式部件。檔案系統過濾驅動器179能過濾用於一個或複數個檔案系統或檔案系統卷的I/O操作。根據驅動器的性質,過濾可以是記錄、觀察、修改、選擇、甚或阻止。典型的用於檔案系統過濾驅動器179的應用程式包括壓縮程式、掃毒應用、加密程式、和分級儲存管理系統。
檔案系統過濾驅動器179也可與一個或複數個檔案系統一起工作以管理檔案輸入/輸出操作。這些操作包括創建、打開、關閉、和枚舉檔案和目錄;獲取和設置檔案、目錄和卷訊息;以及讀取和寫人檔案資料。此外,檔案系統過濾驅動器266、上級檔案過濾驅動器190、低階檔案過濾驅動器268可支持檔案系統特定特徵,例如暫存、鎖定、稀疏檔案、硬碟配額、壓縮、安全、恢復、重新分析點、和卷量點。配置設置186、以及登記和操作系統設置184可由操作系統核心178或GSND應用程式180來設置以定義暫存或其他系統變量的大小,以及管理GSND應用程式180和GNSD驅動器100的首選功能。
安全引擎244可在允許訪問SEED SSD 200之前執行密碼驗證過程或由GNSD驅動器100暫存的資料。GNSD驅動器100採用主機處理器325來執行諸如壓縮/解壓縮、去重、和加密/解密的功能。智慧監控器246可將智慧監控訊息從SEED SSD 200至GNSD應用程式180。智慧監控器246代表自監控、分析和報告技術。
智慧驅動器39與智慧監控器246一起工作,以處理智慧命令,或供應商命令、來自主機300,諸如監控器和控制誤差校正、損耗、壞塊和其它快閃記憶儲存器管理。主機300採用智慧命令自智慧驅動器39向監控器設置一些來自SSD驅動200的重要資料,例如,但不限於,電源開啓時間、損耗水準量等。主機300採用這個資料來判斷和識別SEED SSD 200的期望壽命。更可採用該訊息來决定基於使用的保修範圍。採用智慧驅動器39,主機300可使得SEED SSD200在經歷失效之前被取代,以改善電腦系統5的整體正常運行時間。在RAID裝配中,主機可以使用智慧命令例如來避免更昂貴的RAID2、5或6配置。
在圖1的智慧監控器246中,當1)由AP激勵而自動刷新時;或2)在Windows操作系統(或在其他操作系統中的類似功能)中,驅動器啓動和不能從註冊登記表編輯器讀出參數時,「開始定時器」啟動定時器,然後設置定時器按照規則的間隔從註冊登記表編輯器中讀取參數直到連續,然後配置儲存器。
此外在智慧監控器246中,當1)由AP通知而停止自動刷新時;或2)驅動器已經從註冊登記表編輯器讀出參數並配置儲存器之後,調用「停止定時器」以停止計時器。
去重引擎243發現並檢測資料檔案的重複拷貝以減少寫負擔。GNSD驅動器100中的引擎,例如壓縮/解壓縮引擎242,例如可將128資料部分壓縮爲壓縮的48資料部分。這些壓縮的48資料部分包括標題和一些儲存在第一壓縮頁裏的壓縮資料,和兩頁以上的壓縮資料,總共3壓縮頁。這可將未壓縮時的8頁有效的減少。選擇配置設置186和註冊登記和操作系統設置184的設置以提高快閃記憶儲存器的耐久性和性能。例如,操作系統設置184、配置設置186可允許或禁止寫暫存、驅動索引、搜索索引、磁碟碎片整理、主機休眠、預取、超級預取、和Windows操作系統寫暫存緩衝器刷新。預取、索引、休眠、和磁碟碎片整理可引起快閃記憶儲存的額外寫入並降低耐久性。因此,快閃記憶耐久性可藉由禁用這些特性來提高。此外,由於GNSD驅動器100具有其自己的寫暫存和刷新功能,因此可禁用寫暫存和寫暫存緩衝器刷新。
當主電源發生故障時,備用電源176爲主機300提供電源,使主機300從暫存發送關鍵資料至SEED SSD 200以在停電時將其儲存在NAND快閃記憶儲存器196中。備用電源176可使用的電源例如是,但不限於,電池、超級電容器、不間斷電源(UPS)或其他備用電源。備用電源176的容量尺寸製作爲給主機處理器300足夠的時間來關閉應用程式和適當地關閉附接的設備。SEED SSD 200可具有其獨立的備用電源195,在主電源斷電時允許SEED SSD 200向NAND快閃記憶儲存器196寫入關鍵資料。備用電源195可使用,但不限於,電容器、超級電容器或電池。可替換地,如果主機備用電源176具有足夠的電力來從容地關閉系統,SEED SSD 200中的SSD備用電源195就不需要了,例如當主機300爲筆記型電腦或智慧手機。
磁碟微型端口驅動138管理附加的SSD的廠商特定功能。取消分組136取消從SEED SSD 200恢復的群組資料在被轉移至資料讀暫存132之前。由於GNSD驅動具有其獨立的寫暫存和刷新功能,可以禁用寫暫存和寫暫存緩衝器刷新。因此可藉由禁用這些特性來提高快閃記憶耐久性。在被發送至卷管理器270和、進一步,至SEED SSD 200之前,用分組引擎134將可被寫入SEED SSD 200的資料分組爲元頁。藉由儲存元頁,可減少寫入SEED SSD 200的總量。
CPU的寄存器和暫存控制器301向主機寫入CPU寄存器和暫存器且然後向SEED SSD 200,例如,當停電時。當預設時,開關311隔離主機上不必要的部件以致它們不接收備用電源,因此延長備用電源用於關鍵部件上的時間。儲存控制器309可用於異常斷電和電源恢復時在主機DRAM 333和SEED SSD 200之間傳輸資料。
SEED SSD 200 具有主機界面355,其藉由諸如PCIe、SATA、USB、NVMe、雷電、eMMC、iSSD等總綫與主機300互動。來自主機界面355的主機資料可被發送至SEED控制器192。SEED控制器192執行各種功能以減少NAND快閃記憶儲存器196的損耗,例如藉由儲存來自SSD DRAM緩衝器194中的主機300中且不在NAND快閃記憶儲存器196中的GNSD驅動器100的刷新檔案。
SSD DRAM緩衝器194儲存主機暫存和其他來自GNSD驅動器100的刷新資料或表的備份。它更可以儲存包括元資料、備用和交換塊、用於壞頁管理的表、和其他緩衝器和表。NAND快閃記憶儲存器196爲SSD儲存除了用戶資料和刷新暫存之外,尚有安全訊息、表、檔案系統和各種其他表和緩衝器。NAND快閃記憶儲存器196的一些區域爲壞塊或過預備保留。如果出現,主機備份電源176對系統關閉電源並只向SEED SSD 200提供電源。在使用電源管理器305的情况下,可向DRAM 333、SEED 303、開關311和儲存控制器309繼續提供電源。刷新/恢復管理126周期地刷新資料寫DRAM 20的內容至SEED SSD 200,例如在掉電之前。
去重引擎243發現並删除資料檔案的副本,以減少寫負載。然後低階檔案過濾驅動器268再截取更多經GNSD驅動100處理的資料。可替換地,主機300將資料類型訊息從供應商命令轉換至SEED SSD 200以使SEED SSD 200的資料分離管理不會重複已由GNSD驅動100的資料分離管理器108做過的工作。可替換的,在某些情况下這個功能可被選擇地禁止。
電腦系統5中存在的模式示例包括,但不限於,掉電模式、節電模式和持續模式。在掉電模式,電腦系統5按順序地關閉過程,向SEED SSD 200刷新暫存。在節電模式,有時指「睡眠模式」,電腦系統5斷掉被選元件的電源,但是其他剩餘元件繼續運行,可能運行在減少電能之下。選擇的暫存被寫入SEED SSD驅動200以保持被選擇的資料。在持續模式,資料就像電腦系統5處於節電模式一樣被保存,但是電腦系統5是掉電的。儘管存在,典型的休眠模式不被使用或禁止使用,由於所有DRAM暫存都需要被存入SEED SSD 200,可能引起不必要的寫操作。
如圖3A、3B和3C所示,於掉電模式和持續模式,資料分類和取消分組經由GNSD驅動100讀取時,主機300發送讀命令至資料分離管理器108,其也在去重引擎243、壓縮/解壓縮引擎242或加密/解密引擎240進行去重、解壓或解密之後傳遞主機讀資料。GNSD驅動100內的資料分離管理器108藉由資料類型將主機讀資料進行分類以及基於資料類型選擇該資料。
用戶資料最近可能已經被寫入並且仍可從資料寫DRAM 20中獲取。資料可以儲存在SEED SSD 200的SSD驅動卷201中,並且用戶資料先通用戶資料元頁取消過程來取消分組並裝入資料讀DRAM 20。儲存在SEED SSD 200驅動卷中的FAT/FDB資料在其被放入元資料暫存120中之前先藉由FAT/FDB元頁分組處理116取消分組。供應商命令發送至SEED SSD 200可用於禁止某些重複功能,例如由GNSD驅動100執行的去重、壓縮、加密、或資料分離。
許多資料類型位和其他狀態集合、指針等的編碼是可能的。資料類型狀態位不必是入口的第一位。入口應該連接至其他表中的入口,例如具有用於標簽或有效位的獨立表。臨時檔案應該具有擴展變量以及新擴展應該被加入到列表中以便於搜索。藉由已知程式産生臨時檔案,例如字處理器和網際網路瀏覽器是已知的檔案擴展,但是在任何時候都可以加入額外的擴展。藉由刷新固件至SEED SSD 200的控制軟體來加入這些額外的檔案擴展,或者藉由軟體刷新至GNSD應用程式180和GNSD驅動100。SEED SSD 200中的SEED控制器192將資料儲存在SSD DRAM緩衝器194中以及隨後在掉電或當SSD DRAM緩衝器194存滿時存至NAND快閃記憶儲存器196。
爲了在持續模式期間的額外的寫入,或在掉電模式期間,例如當電源關閉或加載失敗時,緩衝可被複製至持續模式DRAM映象203而典型的不是SSD驅動卷201。如圖3B所示,處理器間(IP)訊息可被儲存在IP隨機存取儲存器213(IPDRAM)上,而不是SSD驅動卷201。處理器間儲存器(IP隨機存取儲存器213)可用於當只有被選擇的DRAM內容被儲存在持續模式下的DRAM映象203的情况。第一字節可是符號例如0x55AA。每個記錄有一個歸檔爲DEF的定義,即0x00表示指向的資料當電源故障時記錄不需要備份;0x01表示需要備份的指向資料,或0xFF代表IPDRAM中最後一個有效記錄。進一步的細節可以使用其餘的數字實現,0x02到0XFE,識別不同資料類型,例如0x02是處理器範圍207、0x03是資料寫DRAM 20等。每個記錄更包含一個指針指示在主機DRAM儲存器中的起始地址和長度字段,以指示相關的資料的總長度。每個記錄將總共有10個字節。對於一個512字節的扇區,它可以容納51條記錄。0xFF記錄是不必要的其位於最後一條記錄。
當電源故障時,NVM CTRL 109或由主機處理器325執行的電源故障程式會讀取IPDRAM(在DRAM部分儲存的情况下)的每一個記錄並决定當DEF域不是0x00或0xFF時是否從DRAM複製資料至SSD。IPDRAM將被設置在DRAM的固定已知地址所以主機處理器325或斷電輔助處理器350,其可以是內部的或外部的,並且NVM CTRL 109訪問相同的位置而不會混淆。
當電源關閉或故障以及持續模式開啓時,GNSD驅動100刷新並準備訊息例如處理器範圍207和CPU暫存209和IP隨機存取儲存器213至主機DRAM 333並在將DRAM升級儲存至持續模式DRAM映象203之前升級IP隨機存取儲存器213。電池或其它備用電源即可完成向持續模式DRAM映象的203資料寫入以保持一段時間。然後,當主電源恢復時,該資料可以從持久模式DRAM映象203中恢復。注意,由儲存在SEED SSD 200的SSD驅動卷201中的GNSD分頁檔案處理的寫資料典型的首先被分頁元頁取消分組程式取消分組,並裝入暫存205的分頁區38。臨時檔案不儲存在快閃記憶並由資料分離管理器108將其從暫存的臨時檔案區124中讀取。在電源啓動期間使用持久模式,那些儲存在持久模式DRAM映象203中的暫存205和元頁分組處理113、114、FAT/FDB元頁分組處理116,當電源關閉或故障時,可被裝載回它們在DRAM 333中的相同位置。從持久模式DRAM映象203複製暫存205。可從持久模式DRAM映象203中複製諸如處理器範圍、CPU暫存、和恢復範圍的刷新訊息。
如圖3C所示的掉電模式,SSD驅動卷201提供用戶或由元頁用戶檔案分組處理分組的元頁中非臨時檔案資料類型。SSD驅動卷201更提供了分頁檔案的資料類型,其分爲經分頁檔案的元頁分組處理116的元頁,和檔案描述符塊(FDB)資料分成經FDB元頁分組處理114的元頁。臨時檔案儲存在暫存中的臨時檔案區124並且一旦暫存電源耗盡其將會丟失。FDB資料可包括目錄、子目錄、FAT1、FAT2等。
典型的GND驅動100將不使用DRAM高速暫存以避免關鍵資料在電源故障時的損失。如圖4所示,在掉電期間的主機寫期間,GND驅動100中的資料分離管理器108按資料類型分類主機寫資料,例如藉由檢查檔案擴展或藉由分析FAT和FDB。臨時檔案儲存在具有表入口的暫存的臨時檔案區124,其在元資料暫存120中被修改。當關機或電源故障時,臨時檔案區124儲存在SEED SSD 200的SSD DRAM緩衝器194中的持久模式DRAM映象中。可替換地,根據用戶的選擇可以不將臨時檔案儲存在持久模式DRAM映象中。
當資料拆分和分組經由GNSD驅動100寫入時,主機300發送寫命令至資料分離管理器108,如果被允許的狀況其也可以在藉由去重引擎或壓縮/加密引擎去重、壓縮或加密之後接收主機寫資料。去重或壓縮檔案的去重/壓縮表入口或元頁分組表可在DRAM 333的元頁資料暫存中修改。
更是如圖4所示,SSD驅動卷201接收由元頁用戶檔案分組處理分組的元頁分組處理113中的用戶或非臨時檔案資料類型。SSD驅動卷201更接收分頁檔案的資料類型,其分爲經分頁檔案的元頁分組處理116的元頁,和分成經FDB元頁分組處理114的元頁的FDB。在正常運行時一旦相應的元頁滿了,所有這些三元頁分組處理113、114、116將從主機300發送到SSD驅動卷201。停電時,未完成的元頁分組處理113、114、116可能丟失。可替換地,如果SEED SSD具有這些三元頁面分組鏡像DRAM區域202,那麽停電時可將資料損失最小化。當關機或電源故障時儲存在暫存的臨時檔案區124的臨時檔案會損失掉。
圖5表示了加密。資料加密標準是習知的加密電子資料的主要對稱密鑰算法。其受學術界現代密碼術進步的高度影響。早在1970s IBM的發展以及基於Horst Feistel的早期設計,受代理人保護敏感、未分類電子政府資料的邀請將該算法提交至國家標準侷(NBS)。
先進加密標準(AES)是對電子資料加密的規範,由美國國家標準技術研究所(NIST)建立於2001年。對於AES,NIST選擇了Rijndael密碼家族的三個成員,每個都具有128位元大小,但有三個不同的密鑰長度:128、192和256位元。
AES已經被美國政府所採納並且現在被世界廣泛使用。其取代了1977年出版的資料加密標準(DES)。AES所描述的算法是對稱密鑰算法,意思就是對加密和解密都使用相同的密鑰。
如果用戶選擇開啓加密,當資料刷新/寫入快閃記憶儲存器元件時執行加密,例如藉由加密/解密引擎240。用戶可選擇加密爲AES或DES加密。在圖5中,全部資料加密500可藉由刷新刷新510資料來執行,例如從暫存,至加密引擎520。在一個示例中,AES加密引擎520可在資料存入SEED SSD驅動530之前在其上執行。而且,全部資料加密550可包括資料向加密/解密引擎240的刷新刷新560以在被存入SEED SSD驅動580之前執行DES加密570。解密可是加密的反轉過程。例如,如果從快閃記憶儲存器元件讀資料,加密/解密引擎240可解密之前加密的資料。加密引擎520和570可具有類似於加密/解密引擎240的功能。
圖6示出了GNSD驅動器100所採用的壓縮/解壓縮過程。如果根據用戶的選擇開啓,當用戶應用程式寫資料時執行。GNSD驅動器在傳送資料至「檔案系統驅動器」之前壓縮資料。(然後至DRAM暫存,然後至快閃記憶儲存器)。當用戶應用程式讀資料時,GNSD驅動器解壓縮資料。可採用與資料壓縮相同的方式執行去重。
資料壓縮是一項比原始資料表示採用更少位的資料編碼技術。壓縮具有減少向SEED SSD驅動中寫資料的儲存,因此增加了耐久性。在一個向SEED SSD驅動的寫資料壓縮示例中,操作系統600可寫帶SEED SSD驅動635預期目標的檔案605。SEED SSD驅動635具有類似於SEED SSD 200的功能。寫檔案605可藉由檔案系統過濾610截取、處理並發送至壓縮引擎615以進行壓縮。壓縮的資料所後被傳送至過濾系統驅動器620以及,反過來,至過濾驅動器625並至總綫驅動630,以儲存在SEED SSD驅動635上。讀時的解壓縮可是壓縮功能的逆過程,其中從SEED SSD驅動635讀取壓縮資料可傳輸該壓縮資料至檔案系統驅動660,藉由總綫驅動640和過濾驅動650。檔案系統驅動660提供具有壓縮資料的解壓縮引擎665,其將壓縮資料轉換爲解壓縮資料。該解壓縮資料隨後被檔案系統過濾670截取,産生一讀檔案操作675,由此該操作系統600讀取未壓縮的資料。LZ法是本發明所屬領域中的通常技術並且是壓縮/解壓縮引擎使用的壓縮/解壓縮技術。也可以採用其他習知的方法。
圖7表示了高級錯誤更正碼(ECC)。爲了增加SEED SSD驅動750的耐久性,GNSD驅動775與SEED SSD驅動750一起工作以産生高級ECC保護碼以幫助較弱頁面擴展它們的使用壽命。SEED SSD驅動750决定並管理退化頁的位置,包括那些不再被SEED控制器192産生的指定ECC級別保護的頁。GNSD驅動775可使用「讀弱表命令」745來同步該「弱表」720與快閃記憶700的弱表710。DRAM轉換層(DTL)715可是SEED SSD驅動750中的DRAM,其中由GNSD驅動775執行操作爲了減少快閃記憶700的不必要的寫。無論何時GNSD驅動775識別將被寫入弱表720中的頁的資料,這可爲這個頁735産生更高級別ECC資料並儲存該産生的ECC資料730於DRAM暫存區域或SEED SSD驅動750的備用部分。當資料被讀回時,如果SEED ECC讀取無錯誤的話,則不需要做額外的工作。如果SEED ECC錯誤705,其將錯誤的資料發送回GNSD驅動775並且GNSD驅動775能從DRAM暫存或SEED SSD驅動750重新找回該産生的ECC資料740。該産生的ECC資料可與錯誤資料一起使用來重新獲得正確的資料725。
圖7中,「高級ECC」可使用LDPC(低密度奇偶校驗碼)以藉由設計LDPC碼而産生額外ECC保護位來提供資料更高級別的保護並將其儲存在SEED SSD的備份區域。當被保護的資料讀取發生錯誤時,例如,資料無法由SSD元件控制器恢復,讀取該儲存的對應ECC/LDPC碼並使用該碼來做出糾正。因此,使用有效的類似LDPC的ECC可提高耐久性。注意,除了類似LDPC的基於圖形的碼,諸如基於代數的碼,不限於BCH、漢明(hamming)碼、和里德所羅門(Reed-Solomon)碼。儘管LDPC碼相對於其他碼而言在保護相同大小資料時傾向於能更快地産生並使用更少的位。
圖8表示了GNSD驅動100的方塊圖,其中:
「增加元件」800:GNSD驅動器爲對應的物理元件目標物産生並初始化一個新的過濾器元件目標物。
IRP指I/O請求包,如習知技術的通常理解,例如,與微軟基於Windows的系統聯繫但是也可以與其它操作系統環境一起使用。IRP的示例包括:
「IRP_MN_啓動_元件」805:啓動程式以爲GNSD驅動器準備SEED SSD 200。
「分配儲存器初始化儲存器」810:從操作系統控制下的主機主儲存器中請求取得一部份的儲存器然後將其初始化以便與GNSD驅動器的後續使用。
「IRP_MN_去除_元件」815:啓動程式以從GNSD驅動器去除SEED SSD 200。
「儲存器解脫」820:從主機主存取得的被請求和被分配的儲存器更給操作系統。
「IRP調度」825:識別IRP是哪種類型。讀、寫或元件控制。「IRP調度」包括「IRP_MJ_元件_控制」、「IRP_MJ_讀」和「IRP_MJ_寫」。
「IRP_MJ_讀」826:I/O管理器或檔案系統驅動器的讀請求。
「邏輯到DRAM單元」830:1.)檢查該「邏輯到DTL」表以便看出與該單元相關的任何DRAM暫存單元存在否;2.)如果是,檢查該「邏輯到DTL」表、「DTL_Unit_SEC_CNT」表和「DTL_位圖」表832。
「讀取DRAM」834:如果相關「邏輯到DTL」,以及其他三個表表明資料是有效的並且所有資料都是在DRAM中的話。
「讀取元件」836:如果沒有相關「邏輯到DTL」,或其他三個表表明資料是無效的或資料部分在DRAM中和部分在SEED SSD 200中。
「IRP_MJ_寫」827:I/O管理器或檔案系統驅動器的寫請求。
「邏輯到DRAM單元」838:1.)檢查該「邏輯到DTL」表以便看出與該單元相關的任何DRAM暫存單元存在否;2.)如果是,檢查該「邏輯到DTL」表、「DTL_單元_狀態」表和「DTL_位圖」表840。
「向新DRAM寫」842:如果「邏輯到DTL」不相關。將資料寫入DRAM未使用的暫存單元。刷新所有四個表。
「向舊DRAM寫」844:如果「邏輯到DTL」相關。將資料重寫入指向的DRAM暫存單元。刷新其他三個表。
「檢查刷新需求?」846:檢查是否被使用但沒有發送至SEED的DRAM暫存區域超過了預定的門檻值水準。如果沒超過,什麽都不做。如果超過了,刷新選擇的DRAM暫存單元並刷新其他三個表。
「IRP_MJ_元件_控制」828:用戶應用程式和GNSD驅動器的元件控制操作。
「固定格式」848:如果是「格式」命令,需要刷新至SEED元件。寫操作:可將資料寫如DRAM和所有刷新的四個表,然後發送至元件;讀操作:從元件讀取資料。
「讀表」850:發送最大_DRAM_單元、DRAM_使用、AP的四個表資料。
「刷新」852:「DRAM全部刷新」、「IDLE刷新」(如:Idle>30秒、每5秒刷新15項)、和「安全擦除」(點擊GNSD AP的「安全擦除」按鈕或關閉電腦電源、或點擊任務欄的元件安全擦除)。全對此有相關。 【00100】 「讀寫計數器」854:來自用戶應用程式的讀/寫計數和向SEED的真實讀寫計數。 【00101】 圖8表示了IRP讀流量900,其也在圖9中表示出,其中: 【00102】 「邏輯到DRAM單元」905爲從用戶應用程式讀取資料。「檢查資料是否全在DRAM?」910决定讀資料是否位於DRAM暫存的。 【00103】 如果全部資料位於DRAM暫存,進入「While循環的扇區計數」915程式。如果沒有完成對扇區資料的讀取,「複製儲存器」920將從相應的DRAM暫存單元的扇區讀出資料。之後,返回至「While循環的扇區計數」915。 【00104】 如果用戶應用程式已經按請求讀出全部扇區資料,則響應「IRP完成」940至用戶應用程式 【00105】 如果資料不是全部位於DRAM暫存的,「發送IRP至下一個」925,將設置「GNSD讀完成」程式,下一個可能是硬碟驅動或硬碟上部過濾器。在這一點上「檢查DRAM資料」930驗證DRAM中有效資料。如果這樣,執行「複製儲存器」935並它可響應「IRP完成」940至請求者用戶應用程式。如果不是,它可響應「IRP完成」940至用戶應用程式。 【00106】 IRP寫流程1000表示在圖8中且也表示在圖10中,其中: 【00107】 「邏輯到DRAM單元」1010爲從用戶應用程式寫資料。「While循環扇區sector計數」1020决定所有的寫資料都被寫入DRAM暫存單元。 【00108】 如果都被寫入(「檢查需要刷新」1070),其可檢查是否正在被使用的DRAM暫存而更未發送至SEED的區域是否超出預定門檻值水準。如果沒超過,什麽都不做。如果超過了,刷新選擇的DRAM暫存單元並刷新其他三個表。做完之後,它可響應「IRP完成」1080至用戶應用程式。 【00109】 如果仍然有資料未被寫入DRAM暫存,其可是「檢查DRAM資料?」1030(决定是否是資料單元的初始寫入)。如果該邏輯地址資料單元沒有相關聯的DRAM暫存單元,可爲給該邏輯地址映象一個新的DRAM暫存單元(刷新「邏輯到DTL」和「DTL到邏輯」表)。然後進入「修改位圖」1040。 【00110】 如果它有相關聯的DRAM暫存單元1060,可進入「修改位圖」1040。 【00111】 「修改位圖」1040:其刷新「DTL_位圖」和「DTL_單元_狀况」表。然後「複製儲存器」1050(將扇區資料從邏輯地址拷貝至對應的DRAM暫存單元的扇區)。爲了未完成的扇區資料進入「While循環扇區計數」。 【00112】 圖11表示了刷新方塊圖1100,其中: 【00113】 「Flush PTR = Next Null PTR」1105:讓該刷新指針 指向下一個空的DRAM單元。 【00114】 「Check Unit_status = DTL_Host_Data」 1110决定DRAM暫存單元的資料狀態。如果不是主機資料?,進入「Flush PTR++」130刷新指針使其加1。 【00115】 如果是主機資料?,「Check Unit_Status = DTL_Data_Full」1115。如果資料不滿,「Check Unit_Status = DTL_Overwrite2」1140,如果是overwrite2狀態,「Move to new unit」1145移動資料至新單元,進入「FLUSH PTR++」1130刷新指針使其加1。 【00116】 如果不是overwrite2狀態,「修改映象表」1150(邏輯到DTL、DTL到邏輯、DTL_Unit_status、DTL_位圖),然後「刷新」1155資料至SEED元件。 【00117】 如果資料是滿的,「檢查資料序列」1120,如果爲「否」則「刷新」1135資料至SEED元件。 【00118】 如果是「是」,「修改映象表」1125(邏輯到DTL、DTL到邏輯、DTL_Unit_status、DTL_位圖?),然後進入「刷新 Flush PTR++」1130刷新指針使其增加1。 【00119】 圖12表示了元件輸入輸出控制1200,其中: 【00120】 「固定格式」1205:如果接收的IRP爲,例如,0x002d0c14 1207然後0x0070000 1209 或0x002d0c14然後0x0070000然後0x002d1400,或 x002d0c14然後0x0070000然後0x002d1400然後0x002d1080,其表明「格式化開啓」1211。當然,此處表示出十六進制碼只是示例的目的,也可以使用其他碼。 【00121】 如果接收的IRP是0x002d5190 1213或0x0066001B 1215,其表示「格式化關閉」1217。 【00122】 「讀表」1219發送max_dram_unit、Dram_Using、四個表的資料至AP。 【00123】 「最大DRAM單元」1221:分配到的DRAM單元計數器。 【00124】 「DRAM使用」1223:當前使用的DRAM單元計數器。「返回DRAM使用」1239。 【00125】 「邏輯到DTL」表1227:入口計數值爲最大DRAM單元,表示每個邏輯單元對應的DRAM單元地址、「DTL」表示DRAM轉換層,其是DRAM的一部分,用於減少不必要的寫刷新,如同文中其他地方所描述的,例如圖19。 【00126】 「DTL到邏輯」表1229:入口計數值爲最大DRAM單元,表示每個DRAM單元對應的邏輯單元地址。 【00127】 「DTL_位圖」表1231:入口計數值爲最大DRAM單元,每個入口表示一個DRAM單元,且該項的每1位表示一個LBA(邏輯框地址),1代表LBA的資料在DRAM中,0代表不在DRAM中。 【00128】 「DTL_狀態」表1233:入口計數值爲最大DRAM單元,每個入口表示每個DRAM單元的狀態。 【00129】 「刷新」1235:從DRAM 333寫資料至物理元件。 【00130】 「刷新一個」1237做15次連續刷新(刷新大小依賴於計算且不是固定的)。 【00131】 「刷新全部」1241關閉暫存模式然後刷新DRAM中的所有資料。 【00132】 「讀計數器」1243:驅動器進入IRP_MJ_READ的次數。 【00133】 「寫計數器」1245:驅動器進入IRP_MJ_WRITE的次數。「讀寫計數器」1225。 【00134】 「讀參數」1247將全部檔案系統寫計數器、全部元件寫計數器、最大_dram_單元、DRAM_使用、重寫計數器、讀計數器、寫計數器發送至AP。 【00135】 圖13至圖14示出I/O請求包(IRPs)是能用於Windows驅動器模型和WindowsNT元件驅動器的核心模式結構,以在彼此之間以及與操作系統通訊。不是Windows操作系統的操作系統可以使用類似的包。圖13爲元件類型值列表,按字母順序列出,可用於系統I/O管理器。其中,1300表示 元件輸入輸出控制;1305表示相關格式;1310表示發送訊息;1315表示獲得訊息;1320表示0x002d0c14-格式注意;1325表示0x0070000-格式模式啟動;1330表示0x002d5190/0x006600113-格式模式開閉;1335表示IOCTL硬碟重寫計數器;1340表示IOCTL硬碟清除DRAM;1345表示IOCTL硬碟刷新一個;1350表示IOCTL硬碟刷新全部;1355表示IOCTL  硬碟寫計數器;1360表示IOCTL硬碟讀表;1365表示IOCTL硬碟讀參數。 【00136】 圖14爲可用於系統I/O控制的SSD控制碼表,表示了根據本發明教示的表示SSD I/O控制編碼的示意圖1400。IRP爲描述輸入輸出請求的資料結構,且被認爲能很好地等價於「輸入輸出請求描述符」或類似的。不是將大量的小變量(例如緩衝器地址、緩衝器大小、輸入輸出功能類型等)傳送至驅動器,而是將全部這些參數藉由指向該持久資料結構的單一指針傳送。如果I/O請求不能立即執行,那麽將這些具有全部參數的IRP進行排隊。藉由傳送地址至用於該目的的程式,輸入輸出完成請求,來將I/O完成報告回I/O管理器。如果請求將I/O完成報告至該請求綫程,IRP可用於特定核心APC目標的目的。典型的藉由響應於用戶模式的輸入輸出請求的輸入輸出管理器來産生IRP。可是,有時藉由即插即用管理器、電源管理器305和其它系統部件來産生IRP,並也可藉由驅動器來産生並且然後傳送至其它驅動器。 【00137】 讀調度1500表示於圖15,其中: 【00138】 用戶模式下「用戶應用程式初始化讀請求」1505中,檔案記錄訊息將藉由操作系統被從子目錄中讀出,其將該訊息傳送至核心模式的「檔案系統驅動器」1510。隨著GNSD驅動器的執行,該「硬碟上部過濾器」1520從「檔案系統驅動器」(1.)1517截取IRP發送至「硬碟驅動器」1525。該「硬碟上部過濾器」1520可檢查「邏輯到DTL」表,如果資料已經在DRAM暫存(2.)1545中,則可從DRAM暫存(A.3)1540讀取資料並將「輸入輸出完成請求」(A.4)1542與資料一起發送至「卷」,然後至「檔案系統驅動器」(A.5)1544,然後至用戶_模式(A.6)1546。如果資料不在DRAM暫存(2.)1545中,其可向「硬碟驅動器」1525發送請求並設置輸入輸出完成程式(B.3)1550。可從快閃記憶儲存器元件讀取資料並發送至GNSD讀完成(B.4)1555。如果部分資料已經儲存在DRAM暫存中,可刷新DRAM暫存(B.5)1560中的讀資料,硬碟驅動器1525可發送IRP至下部驅動器1530及總線驅動器1535直到最後返回至用戶模式並完成讀調度程式。 【00139】 寫調度1600表示於圖16,其中: 【00140】 用戶模式下「用戶應用程式初始化寫請求」1605中,藉由操作系統將檔案記錄訊息寫入當前子目錄,例如,並將該訊息傳送至核心模式的「檔案系統驅動器」1610。隨著GNSD驅動器100的執行,該「硬碟上部過濾器」1615從「檔案系統驅動器」(1.)1612截取IRP發送至「硬碟驅動器」1620。該「硬碟上部過濾器」可將資料寫入DRAM暫存並刷新「邏輯到DTL」表(2.)1645。然後檢查DRAM暫存使用(3.)1650,如果使用沒有超過預定門檻值(最大_dram_單元-1024),可將「輸入輸出完成請求」(4.B)1640返至「檔案系統驅動器」1610,並完成寫調度程式。如果使用超過了預定門檻值(最大_dram_單元-1024),可執行預定義「資料_刷新」(4.)1655並藉由「硬碟驅動器」1620將已刷新資料發送至快閃記憶儲存器元件,該硬碟驅動器可將IRP發送至下部驅動器A 1625以及下部驅動器B 1630直到端點1635,返回至用戶模式並完成寫調度程式。 【00141】 圖17表示出了寫調度元表1700。可是四個元表,例如,用於供給DRAM暫存。第一個表是「邏輯到DTL」表1710。DTL表示「DRAM轉換層」。每個表入口距離「檔案系統驅動」的偏移可是邏輯地址,例如,在128K字節單元中,並且它的內容可是分配資料的DRAM暫存的偏移起始地址,例如,在128K字節單元中。需要的全部入口代表快閃記憶儲存器元件的容量。剩餘的三個表全都具有它們的各自偏移作爲DRAM暫存單元的起始地址,例如,在128K字節單元中。需要的全部入口是DRAM暫存的全部可獲得單元。第二個表是「DTL到邏輯」表1720。它的內容是邏輯單元地址,其是來自「檔案系統驅動器」的邏輯地址的起始地址,例如,在128K字節單元中。第三個表是「DTL_單元_狀態」表1730。它的內容是對應DRAM暫存單元的狀態。一位用於資料有效性;一位用於它的刷新狀態;一位用於主機資料;一位用於隊列中的寫;一位用於一次重寫;一位用於兩次重寫;一位用於DRAM暫存單元的完整的資料使用。第四個表是「DTL_位圖」表1740。它的內容是應DRAM暫存單元的256扇區的位圖。每位代表DRAM暫存單元中它對應的扇區的使用。在DRAM暫存單元中,邏輯「0」代表空或無效資料以及邏輯「1」代表有效資料,例如256位。 【00142】 在圖18中,表示了GNSD驅動器的修整功能(TRIM)1800。TRIM 1800包括作業系統1805、寫檔案1810、寫FDB 1815、寫FAT1 1820、寫FAT2 1825、寫數據1830、寫FDB 1845、寫FAT1 1850、寫FAT2 1855。TRIM 1800允許操作系統通知固態驅動器(SSD),其中不再考慮使用資料塊並且可被在內部擦除。SSD通常不知道哪個扇區/頁是真正在使用的以及哪個可被考慮爲自由空間。在硬碟驅動器中,删除操作電性地限制爲標記資料塊。儘管只是採用重寫,硬碟驅動器就可以擦除舊資料,但是TRIM使得該SSD知道已經被删除的資料。如果沒有TRIM 1800,該SSD將把資料移動至塊中的一個新頁、浪費時間、並引起向SSD的不必要的寫入。使用GNSD驅動器100,該TRIM命令可通知GNSD驅動器100不要刷新被删除的資料到SSD,去除不必要的寫。這降低了相關寫擴大,增加了SSD的耐久性。TRIM管理器處理來自主機300上的檔案系統或操作系統的TRIM命令1835。該TRIM命令1835表示不再被主機需要的扇區並將其擦去或去除。被修整的頁作爲被删除而記錄在「頁狀態表」中。當進行背景垃圾收集時,如果塊被識別爲擦除候選,則不複製該頁至新塊。在那時完成TRIM命令1835。TRIM管理器執行內務操作例如保持追蹤塊中的扇區和頁不再被需要。回收站也可用於追蹤準備擦除的塊。一旦不再需要整個塊,TRIM管理器將啟動回收站或其它擦除機制來擦除該塊以致該塊可再利用。 【00143】 圖19中,並且也參考圖1,在SSD DRAM 194的DRAM緩衝器中産生耐久轉換層(ETL)並提供臨時儲存以降低快閃記憶損耗。該ETL由與SSD DRAM 194一起工作的SEED控制器192提供以減少對NAND快閃記憶儲存器196不必要的寫操作。DRAM 20可表示發現在SSD DRAM緩衝器194中的DRAM緩衝器。該ETL用於管理SSD DRAM緩衝器194和NAND快閃記憶儲存器196的互動,在上電時、正常工作期間、以及掉電時。DRAM 20的臨時區域儲存著臨時檔案,其由FDB/FAT中的SEED控制器192讀檔案擴展識別,該讀檔案擴展是儲存在FAT區域或FDB區域中的檔案擴展。臨時檔案是那些習知的擴展,例如操作系統、文字處理器、網際網路瀏覽器、CAD系統或電子資料表系統。其它應用程式可使用它們自己獨有的臨時檔案的檔案擴展。兩個區域具有用於分配每個臨時檔案的表。藉由主機邏輯地址可索引到該表。可在DRAM緩衝器中産生受控制器控制的ETL。該ETL可用於提供臨時儲存以減少快閃記憶損耗。在DRAM緩衝器中分配資料以形成DRAM緩衝器中的資料結構分佈,爲了跨越複數個快閃記憶儲存器訊息通道寫入新資料,其中可由控制器管理該結構。藉由搜尋映象表,用來自標準主機寫操作的邏輯地址找出匹配的入口,來自匹配入口讀出資料類型位和指針,並識別資料類型爲非臨時資料類型,該控制器管理非臨時資料。用DRAM與SEED SSD配對,包括使用耐久轉換層(ETL)來控制對快閃記憶儲存器的訪問以及對動態隨機存取儲存器(DRAM)暫存的訪問。ETL檢查快閃記憶儲存器的塊,以及若所有錯誤位超過預選高水準門檻值則識別該塊爲壞塊,或者若所有錯誤位超過預選低水準門檻值則登記該塊入弱表。典型的,該弱表是與GNSD驅動器100同步的,其可耦合至主機DRAM 333。 【00144】 圖19表示了儲存器映象,其是表示儲存在ETL DRAM 20中的各種資料類型的耐久轉換層(ETL),其也可是如圖1所示的SSD DRAM緩衝器194。ETL DRAM 20代表SSD DRAM緩衝器194的一部分。SEED控制器192的固件使用ETL來管理SSD DRAM緩衝器194的ETL DRAM 20與NAND快閃記憶儲存器196的互動,在上電時、正常工作期間、以及掉電時。DRAM 20中的臨時區域1940儲存著臨時檔案,其由FDB/FAT中的讀檔案擴展識別,該讀檔案擴展是儲存在FAT/映象表1958或FBD/映象表1960中的檔案擴展。臨時檔案是那些以.tmp、.temp、.tmt、.tof、.trs、.tst等爲擴展名的。系統相關的臨時檔案包括._mp、.log、.gid、.chk、.old、.bak。AotoCAD相關的臨時檔案包括.SV$、.DWL、.AC$。Word相關的臨時檔案包括.asd檔案。Excel相關的臨時檔案包括.xar檔案。其它應用程式可使用它們獨有的臨時檔案的檔案擴展名。網際網路臨時檔案區域1942儲存具有.gif、.jpg、.js、.htm、.png、.css、.php、.tmp、.mp3、.swf、.ico、.txt、.axd、.jsp、和.aspx擴展名的檔案。臨時區域1940和檔案區域1942都有用於分配每個臨時檔案的表。可藉由來自主機300的邏輯地址來索引該表。 【00145】 取資料區域1944儲存著取資料和在取資料區域1944中的入口表。電腦每次啓動時,Windows操作系統保持追蹤電腦啓動方式和那些程式通常被打開的。Windows操作系統保存該訊息爲預取檔案夾中的複數個小檔案。下次電腦啓動時,Windows操作系統指向這些檔案以助於快速啓動處理。 【00146】 預取檔案夾是Windows操作系統中的系統檔案夾的子檔案夾。預取檔案夾是自保持的,且不需要删除或清空其內容。具有擴展名.log或.evt的登記檔案儲存在登陸檔案區域1946中,其也可具有映象表用於儲存在該區域的登陸檔案,或是被看作臨時檔案類型。 【00147】 在外圍儲存設備例如硬碟或SEED SSD驅動器200和主機主儲存器之間交換資料的分頁檔案,被儲存並映象於分頁區域1948。從NAND快閃記憶儲存器196讀取並儲存在ETL DRAM 20中的資料讀暫存132位於讀暫存區域1951。可使用讀暫存入口的映象表,並包括NAND快閃記憶儲存器196中的標簽、有效位和指向資料的指針。系統區域1950儲存快閃記憶系統資料用於SEED SSD控制器192的操作系統。緩衝器1952中的資料儲存著未加工已被寫入SEED SSD驅動器200的主機資料(包括LBA)。該實際主機資料隨後在被寫入NAND快閃記憶儲存器196之前被移動至資料寫暫存1954。與資料寫暫存1954相關的超級寫暫存技術用於暫存資料至NAND快閃記憶儲存器196,爲了減少對NAND快閃記憶儲存器196寫/擦次數和備份/交換塊1956進一步減少NAND快閃記憶儲存器196中的寫/擦。 【00148】 從主機300的資料寫操作首先向緩衝器1952中寫入資料,然後經GNSD驅動器100諸如壓縮的處理之後,它將被寫入資料寫暫存1954,然後寫入NAND快閃記憶儲存器196。在從主機300連續寫大量資料的情况下,寫入NAND快閃記憶儲存器196可能是一個瓶頸。可連續將資料寫入資料寫暫存1954直到寫滿,然後從緩衝器1952中的資料向資料寫暫存1954的流動將停止。如果緩衝器1952中的資料也滿了,然後將提醒主機300停止阻塞。 【00149】 資料寫暫存1954採用耐久性寫暫存算法,其儲存寫資料至 ETL DRAM 20而不是NAND快閃記憶儲存器196直到被逐出。因此具有相同LBA的多次寫入可以重疊寫入到資料寫暫存1954中以及根據規則(例如基於消逝的時間、分配的容量等)或關機或電源故障時,用條準備單元寫入資料到快閃記憶儲存器196。資料寫暫存1954更支持部分頁寫資料直至全部頁被分組成複數個部分頁。因此,複數個部分頁寫可以根據規則(例如基於消逝的時間、分配的容量等)或關機或電源故障而寫入NAND快閃記憶儲存器196。 【00150】 多信道控制器結構中,元件SEED控制器192將排列成若干頁(若干的數量等於複數個訊號通道數)的資料從資料寫暫存1954寫入資料條準備單元中的快閃記憶至最好使用快閃記憶界面帶寬。對於每個SEED控制器192,其包括訊號通道C的數量,每個訊號通道附屬F個快閃記憶芯片,每個芯片堆疊D個晶片,以及每個晶片具有面P。信道條的大小可設置爲F*D*P頁。該條的深度可設置爲C*F*D*P頁。SEED控制器192從資料寫暫存1954選擇資料並將資料寫入NAND快閃記憶儲存器196的被選條,然後對應PBA地址刷新相關映象表入口。每個訊號通道只有一條總綫,因此只可以訪問一個晶片。將交叉存取F*D個晶片以共享總綫來最大化總綫使用。條準備單元的大小可是C或上至C*F*D*P頁。 【00151】 一種增加快閃記憶儲存器耐久性的耐久轉換層(ETL)方法具有低的指定擦除周期壽命。快閃記憶儲存器界面具有複數個用於訊號通道的總綫;每個訊號通道具有複數個快閃記憶芯片;每個芯片具有複數個晶片,以及每個晶片具有複數個面。可同時訪問所有訊號通道。不能同時訪問同一訊號通道中的所有晶片;在同一訊號通道中一次只能訪問一個晶片。當寫或讀其它晶片時,可訪問訊號通道中的其它晶片。交叉存取的寫或讀可增加快閃記憶訪問的性能。資料寫暫存儲存在DRAM緩衝器中並有控制器根據規則來管理。當資料寫暫存中的錯資料大於條準備單元時,元件控制器管理該錯資料並藉由快閃記憶儲存器界面將其寫入快閃記憶儲存器。元件控制器管理快閃記憶儲存器的每個訊號通道的資料分布。元件控制器管理每個訊號通道中一個芯片的一個晶片的資料交叉存取,以及管理映象表入口以追踪LBA至PBA映象。 【00152】 在其它可替換的設計中,在多訊號通道控制器結構中,每個訊號通道具有其自己的資料寫暫存1954。寫條準備單元與每個快閃記憶儲存器信道同時最大化快閃記憶儲存器界面速度。用戶檔案資料可被識別爲基於擊中率>=n(例如2)的頻繁訪問資料和擊中率<n的不頻繁訪問資料。將它們分別寫入兩個資料寫暫存1954。頻繁訪問區的具有相同LBA地址的多寫資料將重寫DRAM中的舊內容即不刷新以致減少向NAND快閃記憶儲存器196的寫次數。資料寫暫存的頻繁訪問區的緩衝資料將被儲存在條準備單元的NAND快閃記憶儲存器196中,依據諸如基於消逝的時間、分配的容量等規則,或關機或電源故障。資料寫暫存的非頻繁訪問區的緩衝資料將被儲存在條準備單元的NAND快閃記憶儲存器196中,依據諸如基於消逝的時間(例如15分)、分配的容量等其它規則,或依據關機或電源故障。 【00153】 當LBA地址與主機地址有偏差時,對LBA地址增加補償以使在寫入資料寫暫存1954之前將LBA地址與NAND快閃記憶儲存器196的頁地址對準以使得後續寫入快閃記憶儲存器更有效率。 【00154】 耐久備用和交換塊1956用於垃圾收集功能以鞏固有效資料並在被寫入快閃記憶之前從寫暫存去除資料。頁狀態表1962包含具有頁狀態入口的表,例如空頁、使用過的頁、垃圾頁(TRIMed)、壞頁、和需要額外ECC保護的頁。壓縮LBA表1961爲壓縮的用戶資料儲存映象入口。塊擦除計數表1964爲NAND快閃記憶儲存器196中的每個物理塊保持擦除計數器的軌迹以及塊狀態。 【00155】 部分頁映象表1966儲存部分頁映象訊息。DRAM 20不具備足夠的全部映象表的空間,因此只有部分被加載至DRAM。當LBA表入口不在DRAM中時 ,則將去除部分映象表中的一些部分並加載相關LBA表至DRAM。部分子扇區分組映象表1968儲存資料檔案的子扇區映象訊息,其大小小於一頁。部分子扇區分組映象表1968的部分映象表具有可設置爲N的映象表僅爲1的入口。其它N-1的設置被儲存在快閃記憶儲存器中並在部分映象表發生未擊中時取入DRAM緩衝器。 【00156】 智慧資料收集器1970具有資料表和其它訊息供智慧監控器246的SMART功能39(如圖1所式)使用並可被主機藉由SMART命令或供應商命令請求。 【00157】 在ETL DRAM 20中的區域大小可由所有ETL DRAM 20的大小、頁大小、塊大小、和快閃記憶儲存器的扇區大小來决定,並且使用頁映象或塊,或估計入口比例其中範圍是使用頁映象的而不是塊映象的。例如,ETL DRAM 20可是512兆字節DRAM,給臨時區域1940分配240兆字節,給網際網路臨時區域1942分配160兆字節,給取資料分配12兆字節,給登陸檔案分配6兆字節等。 【00158】 在多信道控制器結構中,SEED控制器192從NAND快閃記憶儲存器196讀資料並經過多信道結構到達各種ETL表(FAT/映象表1958、FBD/映象表1960、頁狀態表1962、壓縮LBA表1961、塊擦除計數表1964、部分頁映象表1966和部分子扇區分組映象表1968)。 【00159】 在多信道控制器結構中,SEED控制器192可寫各種ETL表(FAT/映象表1958、FBD/映象表1960、頁狀態表1962、壓縮LBA表1961、塊擦除計數表1964、部分頁映象表1966和部分子扇區分組映象表1968),其排列爲若干頁(若干的數量等於複數個信道數)以刷新條準備單元,根據規則(例如基於消逝的時間、分配的容量等)或依賴於關機或電源故障,以達成最好使用快閃記憶界面帶寬。 【00160】 本文所描述的綠能與非固態驅動器應用程式180和GNSD驅動器100的實施例對SSD元件的耐久性具有令人深刻的效果。事實上,GNSD驅動器100可提供多於10倍的SSD寫放大的提高。例如,標準TLC SSD具有標準的500-1500編輯程式/擦除(P/E)周期的耐久性,而本文發明的實施例對TLC SSD可增强至5000-15000(P/E)周期的耐久性。此外,多層單元(MLC)SSD和單層單元(SLC)SSD的耐久性經歷了超過當前MLC和SLC SSD標準耐久性10倍的提高。而且,寫放大相對於SSD的標準值減小了。 【00161】 GNSD驅動器不限於對SSD的耐久性/性能的提高。其更可用於提高其它非揮發儲存元件,例如,但不限於安全數字儲存卡(SD)、多媒體儲存卡(MMC)、內嵌多媒體儲存卡(eMMC)、M.2、硬碟驅動器(HDD)以及混合SSD/HDD。 【00162】 儘管已經藉由參照電路圖的示例方式說明了本發明,但是本文中應該注意,對本發明所屬領域中具有通常知識者來說,可以出現各種變化和修改。因此,除非這種變化和修改偏離本發明的精神,否則它們都應該包括在本發明的構造及申請專利範圍之內。
【00163】
100‧‧‧GNSD驅動器
106‧‧‧儲存器管理器
107‧‧‧刷新/恢復管理器
108‧‧‧資料分離管理器
109‧‧‧NVM CTRL
113、114、116‧‧‧元頁分組處理
120‧‧‧元資料暫存
124‧‧‧臨時檔案區
126‧‧‧刷新/恢復管理
132‧‧‧資料讀暫存
134‧‧‧用分組引擎
136‧‧‧取消分組
138‧‧‧磁碟微型端口驅動
174‧‧‧硬碟分類驅動器
176‧‧‧備用電源
178‧‧‧操作系統核心
179‧‧‧檔案系統過濾驅動器
180‧‧‧GNSD應用程式
181‧‧‧SSD內部清理應用
182‧‧‧用戶應用
183‧‧‧DRAM分配
184‧‧‧操作系統設置
185‧‧‧暫存模式開/關
186‧‧‧配置設置
187‧‧‧驅動器安裝
190‧‧‧上級檔案過濾驅動器
192‧‧‧SEED控制器
194‧‧‧SSD DRAM緩衝器
195‧‧‧備用電源
196‧‧‧NAND快閃記憶儲存器
192‧‧‧SEED控制器
20‧‧‧DRAM
200‧‧‧SEED SSD驅動器
201‧‧‧SSD驅動卷
202‧‧‧DRAM區域
203‧‧‧DRAM映象
205‧‧‧暫存
207‧‧‧處理器範圍
209‧‧‧CPU暫存
213‧‧‧IP隨機存取儲存器
216‧‧‧恢復管理器
218‧‧‧調度程式
240‧‧‧加密/解密引擎
241‧‧‧高級錯誤更正碼引擎
242‧‧‧壓縮/解壓縮引擎
243‧‧‧去重引擎
244‧‧‧安全引擎
246‧‧‧智慧監控器
248‧‧‧電源/CPU監控器
249‧‧‧模式
254‧‧‧目標受讓器
256‧‧‧性能調節器
260‧‧‧優先任務轉讓器
262‧‧‧交易系統
264‧‧‧檔案優先排序
266‧‧‧檔案系統驅動器
268‧‧‧低階檔案過濾驅動器
270‧‧‧卷管理器
288‧‧‧功能
300‧‧‧主機
301‧‧‧暫存
303‧‧‧SEED
305‧‧‧電源管理器
309‧‧‧儲存控制器
311‧‧‧開關
313‧‧‧刷新管理器
325‧‧‧主機處理器
333‧‧‧DRAM
350‧‧‧斷電輔助處理器
355‧‧‧主機界面
38‧‧‧分頁區
39‧‧‧智慧驅動器
5‧‧‧電腦系統
500‧‧‧全部資料加密
510‧‧‧刷新
520‧‧‧加密引擎
530‧‧‧SEED SSD驅動
550‧‧‧全部資料加密
560‧‧‧刷新
570‧‧‧DES加密
580‧‧‧SEED SSD驅動
600‧‧‧操作系統
605‧‧‧檔案
610‧‧‧檔案系統過濾
615‧‧‧壓縮引擎
620‧‧‧過濾系統驅動器
625‧‧‧過濾驅動器
630‧‧‧總綫驅動
635‧‧‧SEED SSD驅動
640‧‧‧總綫驅動
650‧‧‧過濾驅動
660‧‧‧檔案系統驅動
665‧‧‧解壓縮引擎
670‧‧‧檔案系統過濾
675‧‧‧檔案操作
700‧‧‧快閃記憶
705‧‧‧SEED ECC錯誤
710‧‧‧弱表
715‧‧‧DRAM轉換層
720‧‧‧弱表
725‧‧‧資料
730‧‧‧ECC資料
735‧‧‧頁
740‧‧‧ECC資料
745‧‧‧讀弱表命令
750‧‧‧SEED SSD驅動
775‧‧‧GNSD驅動
800‧‧‧增加元件
805‧‧‧IRP_MN_啓動_元件
810‧‧‧分配儲存器初始化儲存器
815‧‧‧IRP_MN_去除_元件
820‧‧‧儲存器解脫
825‧‧‧IRP調度
826‧‧‧IRP_MJ_讀
827‧‧‧IRP_MJ_寫
828‧‧‧IRP_MJ_元件_控制
830‧‧‧邏輯到DRAM單元
832‧‧‧DTL_位圖表
834‧‧‧讀取DRAM
836‧‧‧讀取元件
838‧‧‧邏輯到DRAM單元
840‧‧‧DTL_位圖表
842‧‧‧向新DRAM寫
844‧‧‧向舊DRAM寫
846‧‧‧檢查刷新需求
848‧‧‧固定格式
850‧‧‧讀表
852‧‧‧刷新
854‧‧‧讀寫計數器
900‧‧‧IRP讀流量
905‧‧‧邏輯到DRAM單元
910‧‧‧檢查資料是否全在DRAM
915‧‧‧While循環的扇區計數
920‧‧‧複製儲存器
925‧‧‧發送IRP至下一個
930‧‧‧檢查DRAM資料
935‧‧‧複製儲存器
940‧‧‧IRP完成
1000‧‧‧IRP寫流程
1010‧‧‧邏輯到DRAM單元
1020‧‧‧While循環扇區sector計數
1030‧‧‧檢查DRAM資料
1040‧‧‧修改位圖
1050‧‧‧複製儲存器
1060‧‧‧DRAM暫存單元
1070‧‧‧檢查需要刷新
1080‧‧‧IRP完成
1100‧‧‧刷新方塊圖
1105‧‧‧Flush PTR=Next Null PTR
1110‧‧‧Check Unit_status=DTL_Host_Data
1115‧‧‧Check Unit_Status=DTL_Data_Full
1120‧‧‧檢查資料序列
1125‧‧‧修改映象表
1130‧‧‧Flush PTR++
1135‧‧‧刷新
1140‧‧‧Check Unit_Status=DTL_Overwrite2
1145‧‧‧Move to new unit
1150‧‧‧修改映象表
1155‧‧‧刷新
1200‧‧‧元件輸入輸出控制
1205‧‧‧固定格式
1207‧‧‧0x002d0c14
1209‧‧‧0x0070000
1211‧‧‧格式化開啓
1213‧‧‧0x002d5190
1215‧‧‧0x0066001B
1217‧‧‧格式化關閉
1219‧‧‧讀表
1221‧‧‧最大DRAM單元
1223‧‧‧DRAM使用
1225‧‧‧讀寫計數器
1227‧‧‧邏輯到DTL表
1229‧‧‧DTL到邏輯表
1231‧‧‧DTL_位圖表
1233‧‧‧DTL_狀態表
1235‧‧‧刷新
1237‧‧‧刷新一個
1239‧‧‧返回DRAM使用
1241‧‧‧刷新全部
1243‧‧‧讀計數器
1245‧‧‧寫計數器
1247‧‧‧讀參數
1300‧‧‧元件輸入輸出控制
1305‧‧‧相關格式
1310‧‧‧發送訊息
1315‧‧‧獲得訊息
1320‧‧‧0x002d0c14-格式注意
1325‧‧‧0x0070000-格式模式啟動
1330‧‧‧0x002d5190/0x006600113-格式模式開閉
1335‧‧‧IOCTL硬碟重寫計數器
1340‧‧‧IOCTL硬碟清除DRAM
1345‧‧‧IOCTL硬碟刷新一個
1350‧‧‧IOCTL硬碟刷新全部
1355‧‧‧IOCTL硬碟寫計數器
1360‧‧‧IOCTL硬碟讀表
1365‧‧‧IOCTL硬碟讀參數
1400‧‧‧本發明所示的表示SSD I/O控制編碼的示意圖
1500‧‧‧讀調度
1505‧‧‧用戶應用程式初始化讀請求
1510‧‧‧檔案系統驅動器
1517‧‧‧檔案系統驅動器(1.)
1520‧‧‧卷下部過濾器篩檢程式/硬碟上部過濾器
1525‧‧‧硬碟驅動器
1530‧‧‧下部驅動器
1535‧‧‧繞線驅動器
1545‧‧‧DRAM暫存(2.)
1540‧‧‧DRAM暫存(A.3)
1542‧‧‧輸入輸出完成請求(A.4)
1544‧‧‧檔案系統驅動器(A.5)
1546‧‧‧用戶_模式(A.6)
1550‧‧‧輸出完成程式(B.3)
1555‧‧‧GNSD讀完成(B.4)
1560‧‧‧DRAM暫存(B.5)
1600‧‧‧寫調度
1605‧‧‧用戶應用程式初始化寫請求
1610‧‧‧檔案系統驅動器
1615‧‧‧硬碟上部過濾器
1612‧‧‧檔案系統驅動器(1.)
1620‧‧‧硬碟驅動器
1625‧‧‧下部驅動器A
1630‧‧‧下部驅動器B
1635‧‧‧端點
1640‧‧‧輸入輸出完成請求(4.B)
1645‧‧‧邏輯到DTL表(2.)
1650‧‧‧DRAM暫存使用(3.)
1655‧‧‧資料_刷新(4.)
1700‧‧‧寫調度元表
1710‧‧‧邏輯到DTL表
1720‧‧‧DTL到邏輯表
1730‧‧‧DTL_單元_狀態表
1740‧‧‧DTL_位圖表
1800‧‧‧修整功能
1805‧‧‧操作系統
1810‧‧‧寫檔案
1815‧‧‧寫FDB
1820‧‧‧寫FAT1
1825‧‧‧寫FAT2
1830‧‧‧寫數據
1845‧‧‧寫FDB
1850‧‧‧寫FAT1
1855‧‧‧寫FAT2
1835‧‧‧TRIM命令
1940‧‧‧臨時區域
1942‧‧‧檔案區域
1944‧‧‧取資料區域
1946‧‧‧登陸檔案區域
1948‧‧‧分頁區域
1950‧‧‧系統區域
1951‧‧‧讀暫存區域
1952‧‧‧緩衝器
1954‧‧‧資料寫暫存
1956‧‧‧備份/交換塊
1958‧‧‧FAT/映象表
1960‧‧‧FBD/映象表
1961‧‧‧壓縮LBA表
1962‧‧‧頁狀態表
1964‧‧‧塊擦除計數表
1966‧‧‧部分頁映象表
1968‧‧‧部分子扇區分組映象表
1970‧‧‧智慧資料收集器
一般藉由參照圖式表示出本發明,其中: 圖1爲根據本發明教示的電腦系統之方塊圖; 圖2爲根據本發明教示的具有綠能與非固態硬碟驅動器(GNSD)的主機之方塊圖; 圖3A爲根據本發明教示的具有實現主機讀功能的GNSD的電腦系統的功能方塊圖; 圖3B爲根據本發明教示的從超級增强耐力設備(SEED)固態硬碟實現讀操作的GNSD的功能方塊圖; 圖3C爲根據本發明教示的具有在掉電模式中實現主機讀功能的GNSD的電腦系統的功能方塊圖; 圖4爲根據本發明教示的具有在掉電模式中實現主機寫功能的GNSD的電腦系統的功能方塊圖; 圖5爲根據本發明教示的表示資料加密標準(DES)/先進加密標準(AES)加密過程的高級方塊圖; 圖6爲根據本發明教示的表示資料壓縮/解壓縮過程的高級方塊圖; 圖7爲根據本發明教示的在高級誤差錯誤更正碼工作期間GNSD驅動器與SEED相互作用的方塊圖; 圖8爲根據本發明教示的表示實現用於輸入/輸出(I/O)請求包(IRP)的操作的GNSD的方塊圖; 圖9爲根據本發明教示的表示GNSD IRP讀流程的流程圖; 圖10爲根據本發明教示的表示GNSD IRP寫流程的流程圖; 圖11爲根據本發明教示的表示GNSD刷新塊操作的流程圖; 圖12爲根據本發明教示的表示SSD I/O控制功能的方塊圖; 圖13爲根據本發明教示的表示相對於GNSD驅動器和GNSD應用程式的SSD I/O控制功能的方塊圖; 圖14爲根據本發明教示的表示SSD I/O控制編碼的示意圖; 圖15爲根據本發明教示的表示用戶發起的讀請求(「讀發送」)的方塊流程圖; 圖16爲根據本發明教示的表示用戶發起的寫請求(「寫發送」)的方塊流程圖; 圖17爲根據本發明教示的表示寫發送元表的示例性列表的示意圖; 圖18爲根據本發明教示的表示TRIM功能性命令的方框流程圖; 圖19爲根據本發明教示的耐用轉換層的表示地圖的示意圖; 參照相關圖式對一些實施例進行了詳細的描述。另外的實施例,特徵或優點將出現在隨後的描述中或可能藉由實踐本發明獲得學習。在圖式中,其不是按比例縮小的,在全文描述中相同的圖式元件符號指代表相同的特徵。下面的描述沒有侷限的意義,而僅僅是以爲了描述本發明一般原則的目的給出。
100‧‧‧GNSD驅動器
106‧‧‧儲存器管理器
107‧‧‧刷新/恢復管理器
109‧‧‧NVM CTRL
176‧‧‧備用電源
178‧‧‧操作系統核心
179‧‧‧檔案系統過濾驅動器
180‧‧‧GNSD應用程式
181‧‧‧SSD內部清理應用
182‧‧‧用戶應用
183‧‧‧DRAM分配
184‧‧‧操作系統設置
185‧‧‧暫存模式開/關
186‧‧‧配置設置
187‧‧‧驅動器安裝
190‧‧‧上級檔案過濾驅動器
192‧‧‧SEED控制器
194‧‧‧SSD DRAM緩衝器
195‧‧‧備用電源
196‧‧‧NAND快閃記憶儲存器
200‧‧‧SEED SSD驅動器
240‧‧‧加密/解密引擎
241‧‧‧高級錯誤更正碼引擎
242‧‧‧壓縮/解壓縮引擎
243‧‧‧去重引擎
244‧‧‧安全引擎
246‧‧‧智慧監控器
266‧‧‧檔案系統驅動器
268‧‧‧低階檔案過濾驅動器
270‧‧‧卷管理器
288‧‧‧功能
300‧‧‧主機
301‧‧‧暫存
303‧‧‧SEED
305‧‧‧電源管理器
309‧‧‧儲存控制器
311‧‧‧開關
313‧‧‧刷新管理器
325‧‧‧主機處理器
333‧‧‧DRAM
350‧‧‧斷電輔助處理器
355‧‧‧主機界面
39‧‧‧智慧驅動器
5‧‧‧電腦系統

Claims (20)

  1. 一種耦合至主機DRAM之綠能與非固態驅動(GNSD)驅動器,其包括: 一儲存管理器,耦合至一上部過濾器; 耦合至該主機DRAM之一資料分組引擎; 耦合至該主機DRAM之一取消資料分組引擎; 耦合至該儲存管理器之一電源管理器,以及 耦合至該儲存管理器之一刷新/恢復管理器; 其中,該GNSD驅動器耦合至一GNSD應用程式,以及 其中,該主機DRAM耦合至一非揮發儲存器。
  2. 如申請專利範圍第1項所述之GNSD驅動器,更包括下列其中之一: 一壓縮/解壓縮引擎,耦合至一檔案系統過濾器; 一去重引擎,耦合至該檔案系統過濾器; 一加密/解密引擎,耦合至該檔案系統過濾器;或 一高級誤差錯誤更正碼引擎,耦合至一下部過濾器。
  3. 如申請專利範圍第2項所述之GNSD驅動器,其中該加密/解密引擎配置爲根據資料加密標準或先進加密標準其中之一進行加密。
  4. 一種耦合至主機DRAM之GNSD驅動器,其包括: 一資料分組器; 一DRAM資料寫暫存,耦合至該資料分組器; 一取消資料分組器;以及 一DRAM資料讀暫存,耦合至該取消資料分組器; 其中,該資料分組器和該取消資料分組器耦合至一上部過濾器和一下部過濾器,以及 其中,該GNSD驅動器耦合至一GNSD應用程式,以及 其中,該主機DRAM耦合至一非揮發儲存器。
  5. 如申請專利範圍第4項所述之GNSD驅動器,更包括下列其中之一: 一壓縮/解壓縮引擎,耦合至一檔案系統過濾器; 一去重引擎,耦合至該檔案系統過濾器; 一加密/解密引擎,耦合至該檔案系統過濾器;或 一高級誤差錯誤更正碼引擎,耦合至該下部過濾器。
  6. 如申請專利範圍第4項所述之GNSD驅動器,更包括: 一智慧資料監控器,耦合至一超級增强耐久設備SSD;以及 一安全引擎,耦合至一主機。
  7. 如申請專利範圍第5項所述之GNSD驅動器,其中該高級誤差錯誤更正碼引擎採用基於圖形編碼或代數編碼之一。
  8. 如申請專利範圍第7項所述之GNSD驅動器,其中該高級誤差錯誤更正碼引擎採用基於圖形編碼的低密度奇偶校驗碼。
  9. 如申請專利範圍第4項所述之GNSD驅動器,其中該資料分組器和該取消資料分組器每個都耦合至: 一用於用戶資料之元頁分組器; 一FDB之元頁分組器;以及 一用於頁檔案頁之元頁分組器。
  10. 一種操作耦合至主機之主機DRAM之GNSD驅動器和GNSD應用程式之方法,其包括下列步驟: 向該主機和該GNSD應用程式耦合配置和登記設置; 向該主機DRAM耦合該GNSD驅動器之一資料分組引擎; 向該主機DRAM耦合該GNSD驅動器之一取消資料分組引擎; 向該主機耦合該GNSD驅動器之一儲存器管理; 向該主機DRAM耦合該GNSD驅動器之一刷新/恢復管理器;以及 向一上部過濾器和一下部過濾器耦合該GNSD驅動器之該資料分組引擎和該取消資料分組引擎;以及 向一超級增强耐久設備(SEED)SSD耦合該主機DRAM;以及下列之一: 禁止驅動索引、禁止驅動搜索索引、減少頁面檔案的大小、禁用系統恢復、禁用休眠、禁用預取、減小回收站大小、禁用磁碟碎片整理程式、減少記錄;以及禁用性能監視器、禁用寫暫存、或禁用寫暫存緩衝器刷新; 其中,該SEED SSD的耐久性增加至超過規定值並且寫放大被減少至小於規定值。
  11. 如申請專利範圍第10項所述之方法,更包括下列步驟: 同步弱表至SEED SSD塊之一弱表; 在該弱表中産生頁資料之一高級誤差錯誤更正碼(ECC)資料,提供産生之一高級ECC資料; 儲存産生的該高級ECC資料於該主機DRAM中的一暫存區域,或該SEED SSD的剩餘區域;以及 寫入由該弱表指示的頁資料。
  12. 如申請專利範圍第11項所述之方法,更包括下列步驟: 藉由一ECC引擎讀取頁中的資料; 如果該SEED SSD本地之該ECC引擎確定頁中資料是錯誤的: 則由該ECC引擎讀取頁的生成的弱表高級ECC屬於錯誤的頁資料;以及 用由該ECC引擎生成的高級ECC來糾正該錯誤的頁資料。
  13. 如申請專利範圍第10項所述之方法,更包括下列步驟: 分組用戶資料爲第一元頁; 分組系統FDB爲第二元頁; 分組頁檔案頁爲第三元頁;以及 儲存該第一元頁、第二元頁和第三元頁至該SEED SSD的儲存卷。
  14. 如申請專利範圍第10項所述之方法,更包括下列步驟: 提供耐久轉換層(ETL)以控制對該SEED SSD中的快閃記憶儲存器的訪問以及對DRAM緩衝器的訪問; 藉由ETL檢查快閃記憶儲存器塊,以及 下列其中之一: 藉由ETL識別若所有錯誤位超過預選高水準門檻值則該快閃記憶儲存器塊爲壞塊,或者 藉由ETL若所有錯誤位超過預選低水準門檻值使該快閃記憶儲存器塊進入弱表;以及 同步耦合至主機DRAM的該GNSD驅動器的弱表。
  15. 一種耦合至主機DRAM之GNSD應用程式,其包括: 耦合至一GNSD驅動器之一SSD內部清除模組; 耦合至該GNSD驅動器之一DRAM分配模組; 耦合至該GNSD驅動器之一驅動器安裝模組;或 耦合至該GNSD驅動器之一暫存模式開啓/關閉開關。
  16. 一種電腦系統主機,其包含: 一GNSD驅動器,在該電腦系統主機中耦合至一資料分組器和一取消資料分組器; 一耦合至該GNSD驅動器和該電腦系統主機之GNSD應用程式; 其中,該GNSD驅動器之該資料分組和該取消資料分組耦合至該電腦系統主機之一上部過濾器和一下部過濾器,以及 耦合至一非揮發儲存器元件之該電腦系統主機。
  17. 如申請專利範圍第16項所述之電腦系統主機,其更包括耦合至該電腦系統主機之操作系統的一耦合配置和一登記設置。
  18. 一種增加非揮發快閃記憶儲存器耐久性之方法,其包括下列步驟: 耦合具有一ECC引擎之一GNSD驅動器至一主機DRAM; 耦合一SEED SSD至該主機DRAM; 使用該主機DRAM爲該SEED SSD中的所選資料生成一高級ECC;以及 用該高級ECC糾正該SEED SSD的錯誤資料。
  19. 如申請專利範圍第18項所述之增加非揮發快閃記憶儲存器耐久性之方法,其更包括下列步驟: 同步弱表至SEED SSD塊弱表; 在弱表中産生頁資料的高級錯誤更正碼(ECC)資料,提供産生的高級ECC資料; 儲存該産生的高級ECC資料於該主機DRAM中的一暫存區域或該SEED SSD的剩餘區域;以及 寫入由弱表指示的頁資料。
  20. 如申請專利範圍第18項所述之增加非揮發快閃記憶儲存器耐久性之方法,其更包括下列步驟: 讀取頁中資料; 如果該SEED SSD本地ECC引擎確定頁中資料是錯誤的; 則讀取屬於頁的弱表中産生之該高級ECC資料;以及 在頁中産生之該高級ECC資料來糾正該錯誤資料。
TW104130505A 2008-06-18 2015-09-15 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法 TW201619971A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/141,879 US20080320209A1 (en) 2000-01-06 2008-06-18 High Performance and Endurance Non-volatile Memory Based Storage Systems
US13/540,569 US8959280B2 (en) 2008-06-18 2012-07-02 Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US13/730,797 US8954654B2 (en) 2008-06-18 2012-12-28 Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US13/788,989 US9123422B2 (en) 2012-07-02 2013-03-07 Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US14/543,472 US9389952B2 (en) 2008-06-18 2014-11-17 Green NAND SSD application and driver

Publications (1)

Publication Number Publication Date
TW201619971A true TW201619971A (zh) 2016-06-01

Family

ID=55961776

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104130505A TW201619971A (zh) 2008-06-18 2015-09-15 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法

Country Status (3)

Country Link
US (2) US9389952B2 (zh)
HK (1) HK1220271A1 (zh)
TW (1) TW201619971A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110806839A (zh) * 2018-08-06 2020-02-18 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器
TWI747349B (zh) * 2020-06-30 2021-11-21 大陸商合肥沛睿微電子股份有限公司 儲存裝置之低級格式化方法
CN115878051A (zh) * 2023-03-03 2023-03-31 浪潮电子信息产业股份有限公司 一种数据同步方法、数据同步系统、存储介质和电子设备

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720616B2 (en) * 2008-06-18 2017-08-01 Super Talent Technology, Corp. Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
CN107077874B (zh) 2014-10-31 2020-05-29 惠普发展公司有限责任合伙企业 电力损失保护
US20160259754A1 (en) 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
US9841918B2 (en) * 2015-12-02 2017-12-12 Samsung Electronics Co., Ltd. Flash memory device including deduplication, and related methods
KR20170074264A (ko) * 2015-12-21 2017-06-30 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10379745B2 (en) * 2016-04-22 2019-08-13 Samsung Electronics Co., Ltd. Simultaneous kernel mode and user mode access to a device using the NVMe interface
US10331570B2 (en) * 2016-07-31 2019-06-25 Avago Technologies International Sales Pte. Limited Real time memory address translation device
CN106250786A (zh) * 2016-08-23 2016-12-21 苏州韦科韬信息技术有限公司 一种固态硬盘掉电保护方法及装置
CN108153794B (zh) * 2016-12-02 2022-06-07 阿里巴巴集团控股有限公司 页面缓存数据刷新方法、装置及系统
US9933963B1 (en) 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
US10318202B2 (en) * 2017-03-20 2019-06-11 Via Technologies, Inc. Non-volatile memory apparatus and data deduplication method thereof
US11436087B2 (en) * 2017-05-31 2022-09-06 Everspin Technologies, Inc. Systems and methods for implementing and managing persistent memory
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
TWI657336B (zh) 2017-08-28 2019-04-21 慧榮科技股份有限公司 用以檢測資料儲存裝置之資料儲存方法及其資料儲存裝置
TWI720246B (zh) 2017-08-30 2021-03-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US20190294345A1 (en) * 2018-03-21 2019-09-26 Super Talent Technology Corp. Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
KR20190124015A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 포함하는 메모리 시스템 및 그 동작 방법
CN110647288A (zh) * 2018-06-26 2020-01-03 上海宝存信息科技有限公司 数据储存装置及其快取分流方法
US10901655B2 (en) 2018-09-27 2021-01-26 Western Digital Technologies, Inc. Non-volatile storage system with command response piggybacking
CN109992530A (zh) * 2019-03-01 2019-07-09 晶天电子(深圳)有限公司 一种固态驱动器设备及基于该固态驱动器的数据读写方法
US10976795B2 (en) 2019-04-30 2021-04-13 Seagate Technology Llc Centralized power loss management system for data storage devices
KR20210080967A (ko) * 2019-12-23 2021-07-01 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
JP7419909B2 (ja) * 2020-03-23 2024-01-23 富士フイルムビジネスイノベーション株式会社 画像形成装置およびプログラム
US11500444B2 (en) * 2020-05-08 2022-11-15 Intel Corporation Intelligent prediction of processor idle time apparatus and method
US20210397363A1 (en) * 2020-06-17 2021-12-23 Micron Technology, Inc. Operational monitoring for memory devices
US11449443B2 (en) * 2020-10-16 2022-09-20 Western Digital Technologies, Inc. Identification and classification of write stream priority
CN114626025A (zh) * 2020-12-09 2022-06-14 台达电子工业股份有限公司 于离线环境下使用的软件授权验证方法
WO2022132184A1 (en) * 2020-12-20 2022-06-23 Intel Corporation System, method and apparatus for total storage encryption
JP2022137811A (ja) 2021-03-09 2022-09-22 キオクシア株式会社 情報処理システム、ストレージデバイスおよびホスト

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110806839A (zh) * 2018-08-06 2020-02-18 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器
CN110806839B (zh) * 2018-08-06 2023-06-20 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器
TWI747349B (zh) * 2020-06-30 2021-11-21 大陸商合肥沛睿微電子股份有限公司 儲存裝置之低級格式化方法
CN115878051A (zh) * 2023-03-03 2023-03-31 浪潮电子信息产业股份有限公司 一种数据同步方法、数据同步系统、存储介质和电子设备

Also Published As

Publication number Publication date
US9389952B2 (en) 2016-07-12
US9489258B2 (en) 2016-11-08
US20160139982A1 (en) 2016-05-19
US20160246807A1 (en) 2016-08-25
HK1220271A1 (zh) 2017-04-28

Similar Documents

Publication Publication Date Title
US9489258B2 (en) Green NAND SSD application and driver
US20220139455A1 (en) Solid state drive architectures
US9720616B2 (en) Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
US9841911B2 (en) Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US9547589B2 (en) Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US9767017B2 (en) Memory device with volatile and non-volatile media
US9489297B2 (en) Pregroomer for storage array
US9548108B2 (en) Virtual memory device (VMD) application/driver for enhanced flash endurance
TWI506431B (zh) 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統
US8954654B2 (en) Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US9274942B2 (en) Information processing system and nonvolatile storage unit
US20150331624A1 (en) Host-controlled flash translation layer snapshot
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
JP6094677B2 (ja) 情報処理装置、メモリダンプ方法、およびメモリダンププログラム
WO2012079432A1 (zh) 快照方法和固态硬盘
CN105404468B (zh) 绿能与非固态硬盘应用及其驱动器
US20110264848A1 (en) Data recording device
JP5649709B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム