TWI775456B - 記憶體系統、記憶體裝置以及記憶體系統執行的方法 - Google Patents
記憶體系統、記憶體裝置以及記憶體系統執行的方法 Download PDFInfo
- Publication number
- TWI775456B TWI775456B TW110119308A TW110119308A TWI775456B TW I775456 B TWI775456 B TW I775456B TW 110119308 A TW110119308 A TW 110119308A TW 110119308 A TW110119308 A TW 110119308A TW I775456 B TWI775456 B TW I775456B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- controller
- data
- electrical connection
- ecc circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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 sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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 arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/35—Unequal 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/356—Unequal error protection [UEP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本發明提供包含用於管理記憶體系統中的錯誤校正編碼的電腦可讀媒體的方法、裝置、系統以及設備。在一個態樣中,一種記憶體系統包含:系統控制器,經組態以與主機裝置通信;以及記憶體裝置,耦接至系統控制器。記憶體裝置包含:至少一個記憶體;以及記憶體控制器,耦接至至少一個記憶體。記憶體控制器包含錯誤校正碼電路(Error Correction Code Circuit,ECC電路),錯誤校正碼電路經組態以針對自系統控制器或至少一個記憶體中的至少一者接收到的資料進行錯誤校正編碼。
Description
本發明是有關於一種記憶體系統,且特別是有關於一種記憶體系統中的錯誤校正編碼、記憶體裝置以及記憶體系統執行的方法。
一些記憶體系統包含經由電路板彼此通信的系統控制器及記憶體裝置。在一些情況下,系統控制器針對去往或來自記憶體裝置的資料進行錯誤校正編碼,此引起經由電路板的較大資料傳送。此可能導致高功率消耗及高操作溫度。
本揭露內容描述用於特定而言藉由在記憶體裝置(例如,快閃記憶體裝置)中實施錯誤校正碼電路(error correction code circuit,ECC電路)來管理記憶體系統(例如,固態磁碟機(solid state drive,SSD))中的錯誤校正編碼的系統及技術,從而減少經由電路板的資料傳送且分離記憶體系統中的熱源,此可極大地減少功率消耗且增加熱耗散。
本揭露內容的一個態樣提供一種記憶體系統,包含:系統控制器,經組態以與主機裝置通信;以及記憶體裝置,耦接至所述系統控制器。所述記憶體裝置包含:至少一個記憶體;以及記憶體控制器,耦接至所述至少一個記憶體,所述記憶體控制器包含錯誤校正碼電路(Error Correction Code Circuit,ECC電路),所述錯誤校正碼電路經組態以針對自所述系統控制器或所述至少一個記憶體中的至少一者接收到的資料進行錯誤校正編碼。
在一些實施例中,所述記憶體控制器經由第一類型的電連接耦接至所述系統控制器,所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,且所述第二類型的電連接的阻抗小於所述第一類型的電連接的阻抗。所述第二類型的電連接可具有比所述第一類型的電連接更小的操作功率消耗。
在一些實施例中,所述記憶體系統更包含電連接板。所述系統控制器及所述記憶體裝置可分別配置於所述電連接板上。所述第一類型的電連接可藉由所述電連接板的共享匯流排實施。所述第二類型的電連接可藉由所述記憶體裝置中的內部匯流排實施。
在一些實施例中,所述記憶體系統經組態為固態磁碟機(SSD),且所述系統控制器包含SSD控制器,且所述記憶體裝置包含快閃記憶體。
在一些實施例中,所述系統控制器包含:第一介面,經組態以根據第一介面協定經由第三類型的電連接與所述主機裝置通信,其中所述第二類型的電連接的所述阻抗小於所述第三類型的電連接的阻抗;以及第二介面,經組態以根據第二介面協定經由所述第一類型的電連接與所述記憶體控制器通信。
在一些實施例中,所述第一類型的電連接與所述第三類型的電連接相同。在一些實施例中,所述第一介面協定包含匯流排介面協定,且所述第二介面協定包含快閃介面協定。
在一些實施例中,所述記憶體控制器包含:第三介面,經組態以根據所述第二介面協定經由所述第一類型的電連接與所述系統控制器通信。所述第二介面及所述第三介面可經客製化且不同於所述第一介面。所述系統控制器可包含資料處理器,所述資料處理器經組態以根據所述第二介面協定經由所述第二介面及所述第三介面與所述記憶體控制器通信。所述資料處理器可包含所述第二介面且可形成為所述系統控制器中的個別晶片。所述至少一個記憶體及所述記憶體控制器可形成為封裝於所述記憶體裝置中的個別晶片。
在一些實施例中,所述記憶體控制器經組態以:經由所述第一類型的電連接自所述系統控制器接收所述資料;使用所述ECC電路來編碼所述資料以獲得經編碼資料,所述經編碼資料具有比所述資料更大的大小;以及經由所述第二類型的電連接在所述至少一個記憶體中寫入所述經編碼資料。
在一些實施例中,所述記憶體控制器經組態以:經由所述第二類型的電連接自所述至少一個記憶體讀取所述資料;使用所述ECC電路來解碼所述資料以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小;以及經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
在一些實施例中,所述記憶體控制器經組態以:經由所述第二類型的電連接自所述至少一個記憶體讀取所述資料的軟位元;使用所述ECC電路根據軟決策解碼演算法來解碼所述資料的所述軟位元以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小;以及經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
在一些實施例中,所述記憶體控制器中的所述ECC電路為記憶體側ECC電路。所述系統控制器可包含系統側ECC電路,所述系統側ECC電路具有比所述記憶體控制器中的所述記憶體側ECC電路更強的解碼能力,且所述記憶體側ECC電路可經組態以根據較弱解碼演算法解碼資料,且所述系統控制器中的所述系統側ECC電路經組態以根據較強解碼演算法去解碼資料。
在一些實施例中,所述記憶體控制器中的所述記憶體側ECC電路具有比所述系統控制器中的所述系統側ECC電路更小的面積。
在一些實施例中,所述較弱解碼演算法包含位元轉換(bit-flipping)相關演算法,且所述較強解碼演算法包含最小和相關演算法。
在一些實施例中,所述記憶體控制器經組態以:回應於判定所述記憶體側ECC電路未能根據所述較弱解碼演算法解碼所述資料,將所述資料發送至所述系統控制器。所述系統控制器經組態以:使用所述系統側ECC電路根據所述較強解碼演算法來解碼所述資料;回應於判定所述系統側ECC電路未能根據所述較強解碼演算法解碼所述資料,將自所述至少一個記憶體讀取所述資料的軟位元的請求發送至所述記憶體控制器;以及回應於自所述記憶體控制器接收到所述資料的所述軟位元,使用所述系統側ECC電路根據所述較強解碼演算法來解碼所述資料的所述軟位元以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小。所述記憶體控制器經組態以:在未使用所述記憶體側ECC電路來解碼所述資料的所述軟位元的情況下,將所述資料的所述軟位元發送至所述系統控制器。
在一些實施例中,所述記憶體系統包含多個記憶體裝置,所述多個記憶體裝置包含所述記憶體裝置。所述多個記憶體裝置中的每一者耦接至所述系統控制器且包含:個別記憶體;以及個別記憶體控制器,耦接至所述個別記憶體,所述個別記憶體控制器包含對應ECC電路,所述對應ECC電路經組態以針對自所述個別記憶體或所述系統控制器中的至少一者接收到的對應資料進行對應錯誤校正編碼。
在一些實施例中,所述系統控制器包含多個資料處理器,所述多個資料處理器中的每一者經組態以與所述多個記憶體裝置中的個別記憶體裝置通信。
在一些實施例中,所述多個記憶體裝置中的每一者的所述個別記憶體控制器中的所述對應ECC電路為記憶體側ECC電路,且所述多個資料處理器中的每一者包含系統側ECC電路,所述系統側ECC電路具有比所述記憶體側ECC電路更強的解碼能力。
在一些實施例中,所述記憶體系統更包含記憶體存取控制器,所述記憶體存取控制器經組態以控制所述系統控制器與所述多個記憶體裝置中的至少一者之間的資料傳送。
在一些實施例中,所述記憶體系統更包含第二記憶體裝置,所述第二記憶體裝置耦接至所述系統控制器及所述記憶體裝置兩者。所述第二記憶體裝置可具有比所述記憶體裝置更快的回應速度。
在一些實施例中,所述記憶體裝置包含快閃記憶體,且所述第二記憶體裝置包含動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。
在一些實施例中,所述系統控制器包含內部控制器,所述內部控制器經組態以控制所述系統控制器與所述第二記憶體裝置之間的資料傳送。
在一些實施例中,所述至少一個記憶體包含多個記憶體,所述多個記憶體各自耦接至所述記憶體控制器,且所述ECC電路經組態以針對與所述多個記憶體中的每一者相關聯的對應資料進行錯誤校正編碼。
本揭露內容的另一態樣提供一種記憶體裝置,包含:至少一個記憶體;以及記憶體控制器,耦接至所述至少一個記憶體。所述記憶體控制器包含:記憶體介面,經組態以經由第一類型的電連接與系統控制器通信,其中所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,所述第二類型的電連接具有比所述第一類型的電連接更小的阻抗;以及錯誤校正碼電路(Error Correction Code Circuit,ECC電路),經組態以基於藉由所述系統控制器自主機裝置接收到的讀取命令或寫入命令中的至少一者,針對自所述系統控制器或所述至少一個記憶體中的至少一者接收到的資料進行錯誤校正編碼。
本揭露內容的又一態樣提供一種由記憶體系統進行的方法。所述方法包含:藉由所述記憶體系統的系統控制器自耦接至所述系統控制器的主機裝置接收資料;藉由所述系統控制器經由第一類型的電連接將所述資料發送至所述記憶體系統的記憶體裝置;藉由所述記憶體裝置的記憶體控制器中的錯誤校正碼電路(Error Correction Code Circuit,ECC電路)編碼所述資料以獲得經編碼資料,所述經編碼資料具有比所述資料更大的大小;以及藉由所述記憶體控制器在所述記憶體裝置的至少一個記憶體中寫入所述經編碼資料。所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,所述第二類型的電連接具有比所述第一類型的電連接更小的阻抗。
在一些實施例中,所述方法更包含:藉由所述記憶體控制器經由所述第二類型的電連接自所述至少一個記憶體獲得指定資料;藉由所述記憶體控制器中的所述ECC電路解碼所述指定資料以獲得經解碼指定資料,所述經解碼指定資料具有比所述指定資料更小的大小;以及藉由所述記憶體控制器經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
在一些實施例中,所述方法更包含:藉由所述記憶體控制器經由所述第二類型的電連接自所述至少一個記憶體獲得指定資料;回應於判定所述記憶體控制器中的所述ECC電路未能解碼所述指定資料,藉由所述記憶體控制器經由所述第一類型的電連接將所述指定資料發送至所述系統控制器;以及藉由所述系統控制器中的第二ECC電路解碼所述指定資料,所述第二ECC電路具有比所述ECC電路更強的解碼能力。
在一些實施例中,所述方法更包含:回應於判定所述第二ECC電路未能解碼所述指定資料,藉由所述系統控制器將自所述至少一個記憶體讀取所述指定資料的軟位元的請求發送至所述記憶體控制器;在未使用所述ECC電路來解碼所述指定資料的所述軟位元的情況下,藉由所述記憶體控制器將所述指定資料的所述軟位元發送至所述系統控制器;以及藉由所述系統控制器中的所述第二ECC電路解碼所述指定資料的所述軟位元以獲得經解碼指定資料,所述經解碼指定資料具有比所述指定資料更小的大小。
在一些實施例中,所述方法更包含:藉由所述系統控制器將所述經解碼指定資料發送至所述主機裝置。
上述技術的實施方案包含方法、系統、電腦程式產品以及電腦可讀媒體。在一個實例中,一種方法可由包含系統控制器及至少一個記憶體裝置的記憶體系統進行,且所述方法可包含由記憶體系統進行的上述動作,例如,用於管理記憶體系統中的錯誤校正編碼的動作。在另一實例中,一個此類電腦程式產品合適地體現於非暫時性機器可讀媒體中,所述非暫時性機器可讀媒體儲存可由一或多個處理器執行的指令。指令經組態以使得一或多個處理器進行上述動作。一個此類電腦可讀媒體儲存指令,所述指令在由一或多個處理器執行時經組態以使得一或多個處理器進行上述動作。
本揭露內容的實施方案提供用於管理記憶體系統中的錯誤校正編碼的系統、方法以及技術,此可減少功率消耗且提供更佳熱耗散。舉例而言,藉由將ECC電路整合至記憶體裝置中,可極大地減小經由電連接板的資料傳送量,此可減少記憶體系統的功率消耗。此外,將ECC編碼能力的至少部分自系統控制器移動至記憶體系統中的記憶體裝置可分散(或分離)整個記憶體系統中的熱源(或電源),且增加系統控制器中的熱耗散。
所述技術可針對任何類型的記憶體系統或與一或多個記憶體裝置耦接的控制器實施。舉例而言,所述技術可應用於包含SSD控制器及一或多個快閃記憶體裝置的固態磁碟機(SSD)架構中。所述技術可實施於數位積體電路(integrated circuit,IC)設計及製造中。
所述技術可應用於各種類型的揮發性記憶體裝置或系統或非揮發性記憶體裝置或系統,諸如反及(NAND)快閃記憶體裝置或系統、反或(NOR)快閃記憶體裝置或系統、電阻式隨機存取記憶體(resistive random-access memory,RRAM)裝置或系統、相變隨機存取記憶體(phase-change random-access memory,PCRAM)裝置或系統,等等。所述技術可應用於二維(two-dimensional,2D)記憶體裝置或系統,或三維(three-dimensional,3D)記憶體裝置或系統。所述技術可應用於各種記憶體類型,諸如單等級單元(single-level cell,SLC)裝置或系統、多等級單元(multi-level cell,MLC)裝置,如2等級單元裝置或系統、三等級單元(triple-level cell,TLC)裝置或系統、四等級單元(quad-level cell,QLC)裝置或系統,或五等級單元(penta-level cell,PLC)裝置或系統。另外或替代地,所述技術可應用於各種類型的裝置或系統,諸如安全數位(secure digital,SD)卡、嵌入式多媒體卡(embedded multimedia card,eMMC)、通用快閃儲存器(universal flash storage,UFS)、固態磁碟機(SSD)、嵌入式系統等等。
在隨附圖式及以下描述中闡述一或多個所揭露實施方案的細節。其他特徵、態樣以及優勢將自描述、圖式以及申請專利範圍而變得顯而易見。
圖1示出包含記憶體系統110及主機裝置120的系統100的實例。記憶體系統110包含系統控制器112及至少一個記憶體裝置116。系統控制器112包含處理器113及內部記憶體114。
在一些實施方案中,記憶體系統110為儲存系統。舉例而言,記憶體系統110可為嵌入式多媒體卡(eMMC)、安全數位(SD)卡、固態磁碟機(SSD),或某一其他合適的儲存系統。在一些實施方案中,記憶體系統110為智慧型手錶、數位相機或媒體播放器。在一些實施方案中,記憶體系統110為耦接至主機裝置120的客戶端裝置。舉例而言,記憶體系統110為數位相機或媒體播放器中的SD卡,所述數位相機或媒體播放器為主機裝置120。
系統控制器112為通用微處理器或指定應用微控制器。在一些實施方案中,系統控制器112為用於記憶體系統110的控制器。以下章節基於系統控制器112為記憶體系統控制器的實施方案來描述各種技術。然而,描述於以下章節中的技術亦適用於系統控制器112為不同於記憶體系統控制器的另一類型的控制器的實施方案中。
處理器113經組態以執行指令且處理資料。指令包含分別作為韌體碼及/或其他程式碼儲存於內部記憶體114中的韌體指令及/或其他程式指令。資料包含對應於由處理器執行的韌體及/或其他程式的程式資料,以及其他合適的資料。在一些實施方案中,處理器113為通用微處理器或指定應用微控制器。處理器113亦可稱為中央處理單元(central processing unit,CPU)。
處理器113自內部記憶體114存取指令及資料。在一些實施方案中,內部記憶體114為靜態隨機存取記憶體(Static Random Access Memory,SRAM)或動態隨機存取記憶體(DRAM)。舉例而言,在一些實施方案中,當記憶體系統110為eMMC、SD卡或智慧型手錶時,內部記憶體114為SRAM。在一些實施方案中,當記憶體系統110為數位相機或媒體播放器時,內部記憶體114為DRAM。
在一些實施方案中,內部記憶體114為包含於系統控制器112中的快取記憶體,如圖1中所繪示。內部記憶體114儲存對應於由處理器113執行的指令的指令碼,及/或在運行時間期間由處理器113請求的資料。
系統控制器112將來自記憶體裝置116的指令碼及/或資料傳送至內部記憶體114。在一些實施方案中,記憶體裝置116為經組態以用於長期儲存指令及/或資料的非揮發性記憶體裝置,例如反及快閃記憶體裝置或某一其他合適的非揮發性記憶體裝置。在記憶體裝置116為反及快閃記憶體裝置的實施方案中,記憶體系統110為快閃記憶體裝置,例如快閃記憶卡,且系統控制器112為反及快閃控制器。在一些實施方案中,當記憶體系統110為eMMC或SD卡時,記憶體裝置116為反及快閃。在一些實施方案中,當記憶體系統110為數位相機時,記憶體裝置116為SD卡。在一些實施方案中,當記憶體系統110為媒體播放器時,記憶體裝置116為硬碟。
出於說明的目的,以下圖式及對應描述使用SSD作為實例記憶體系統,例如,圖1的記憶體系統110,使用SSD控制器作為實例系統控制器,例如,圖1的系統控制器112,且使用快閃記憶體裝置作為實例記憶體裝置,例如,圖1的記憶體裝置116。
圖2示出實例記憶體系統,例如,SSD 200。SSD 200可為圖1的記憶體系統110。SSD 200包含系統控制器(例如,SSD控制器210),以及包含DRAM 204及快閃記憶體230a、快閃記憶體230b(總稱為快閃記憶體230或個別地稱為快閃記憶體230)的多個記憶體裝置。DRAM 204具有比快閃記憶體230更快的回應速度,且可經組態以儲存用於SSD控制器210或快閃記憶體230的快取資料。
記憶體裝置204、記憶體裝置230中的每一者可為圖1的記憶體裝置116。記憶體裝置204、記憶體裝置230中的每一者可為晶粒或晶片。記憶體系統200可為形成於電連接板(例如,印刷電路板(printed circuit board,PCB)202)上的多晶片封裝。PCB 202可包含共享匯流排,所述共享匯流排提供SSD控制器210與記憶體裝置204、記憶體裝置230之間的電連接213,使得SSD控制器210可與記憶體裝置204、記憶體裝置230中的每一者通信。
如圖2中所示出,SSD控制器210包含經組態以經由電連接211與主機裝置(例如,圖1的主機裝置120)通信的主機介面212。電連接211亦可由共享匯流排提供。電連接211可與電連接213相同。主機介面212可根據介面協定(例如,諸如反及介面協定的匯流排介面協定)與主機裝置通信。SSD控制器210可經由主機介面212自主機裝置接收讀取命令或寫入命令,以藉此自記憶體裝置204、記憶體裝置230中的至少一者讀取資料或將資料寫入至記憶體裝置204、記憶體裝置230中的至少一者。
在一些實施方案中,如圖2中所示出,SSD控制器210包含處理器214及用於記憶體裝置的多個控制器。處理器214可為圖1的處理器113。每一控制器經組態以用於個別記憶體裝置。記憶體控制器包含DRAM控制器218及快閃控制器220a、快閃控制器220b(總稱為快閃控制器220或個別地稱為快閃控制器220)。DRAM控制器218經組態以與DRAM 204通信且控制SSD控制器210與DRAM 204之間的資料傳送。快閃控制器220經組態以與快閃記憶體230通信且控制SSD控制器210與快閃記憶體230之間的資料傳送。SSD控制器210亦可包含記憶體存取控制器,例如,直接記憶體存取(direct memory access,DMA)控制器216。DMA控制器216經組態以控制SSD控制器210與記憶體裝置204、記憶體裝置230之間的資料傳送。舉例而言,DMA控制器216可根據準則(例如,優先級)來仲裁去往或來自記憶體裝置204、記憶體裝置230的資料傳送。
SSD控制器210包含耦接至SSD控制器210中的組件的內部匯流排,所述組件包含主機介面212、處理器214、DMA控制器216、DRAM控制器218以及快閃控制器220。組件中的每一者可為晶片,且SSD控制器210可為配置於PCB 202上的多晶片封裝。內部匯流排為組件提供電連接215以使得組件可經由電連接215彼此通信。SSD控制器210中的內部匯流排不同於PCB 202上的共享匯流排。SSD控制器210中的電連接215可具有比PCB 202上的電連接211、電連接213更低的阻抗,例如,更低電阻或更低電容或兩者。因此,電連接215引起比電連接211、電連接213更少的操作功率消耗。
在一些實施方案中,如圖2中所示出,每一快閃控制器220a、快閃控制器220b包含ECC電路222a、ECC電路222b(總稱為ECC電路222或個別地稱為ECC電路222)。ECC電路222可包含ECC編碼器及ECC解碼器。ECC電路222可基於ECC方案來實施,所述ECC方案例如里德索羅門(Reed Solomon)碼方案、博斯-喬赫里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)碼方案、低密度同位核對(low-density parity check,LDPC)碼方案、渦輪碼(Turbo Code)方案,或其任何組合。
快閃控制器220可例如經由主機介面212自主機裝置接收待儲存至對應快閃記憶體230的資料。接著,快閃控制器220中的ECC編碼器可經組態以例如藉由使用ECC編碼方案來編碼資料而產生碼字。在一些實例中,快閃控制器220接收K位元資料字,且ECC編碼器可將K位元資料字編碼為N位元碼字,其中N= K+P,且P為用於K位元資料字的方位元的數目。快閃控制器220可接著經由PCB 202上的電連接213將N位元碼字儲存(例如,程式化或寫入)至對應快閃記憶體230中。
快閃控制器220亦可經由PCB 202上的電連接213自對應快閃記憶體230接收經編碼資料(例如,碼字),且快閃控制器220中的ECC解碼器可經組態以解碼經編碼資料以偵測及校正(直至ECC方案的錯誤校正能力)可能存在於資料中的任何位元錯誤。若ECC解碼器無法校正經編碼資料中的位元錯誤的臨限值計數,則其指示解碼經編碼資料的結果未通過ECC解碼測試或ECC解碼器未能解碼經編碼資料。若ECC解碼器可校正經編碼資料中的位元錯誤,則其指示經編碼資料通過ECC測試或ECC解碼器成功地解碼經編碼資料,且經編碼資料經解碼以變為經解碼資料(例如,資料字)。快閃控制器220可接著例如經由主機介面212將經解碼資料發送至主機裝置。在一些實例中,快閃控制器220經由PCB 202上的電連接213自對應快閃記憶體230接收包含用於K位元資料字的P同位位元的N位元碼字。快閃控制器220中的ECC解碼器可解碼N位元碼字以獲得SSD控制器210中的K位元資料字。
在一些實施方案中,若解碼經編碼資料的結果未通過ECC解碼測試,則快閃控制器220可進行軟決策解碼演算法,例如,以藉由自對應快閃記憶體230讀取的軟位元解碼經編碼資料。軟位元的數目(例如,m)判定來自對應快閃記憶體230的讀取操作的數目。舉例而言,對於N位元碼字,自對應快閃記憶體230讀取的位元的總數目可為N*(1+m)個位元。此意謂大量位元是經由PCB 202上的電連接傳送的,此可導致大功率消耗。
在一些實施方案中,SSD控制器210在高頻下以高通量操作,例如用於多通道快閃記憶體存取,此可導致SSD 200的高功率消耗及高操作溫度。
圖3示出可例如藉由將ECC編碼能力自系統控制器移除至記憶體裝置來解決上述高功率消耗及/或高操作溫度的問題的實例記憶體系統,例如,SSD 300。
類似於圖2的SSD 200,SSD 300包含SSD控制器310以及包含DRAM 304(例如,圖2的DRAM 204)及快閃記憶體裝置330a、快閃記憶體裝置330b(總稱為快閃記憶體330或個別地稱為快閃記憶體330)的多個記憶體裝置。SSD 300可為圖1的記憶體系統110,SSD控制器310可為圖1的系統控制器112,且記憶體裝置304、記憶體裝置330可為圖1的記憶體裝置116。
SSD控制器310及記憶體裝置304、記憶體裝置330可配置於電連接板(例如,PCB 302)上。PCB 302可為圖2的PCB 202。PCB 302可包含共享匯流排。SSD控制器310可藉由由PCB 302上的共享匯流排提供的電連接313與記憶體裝置304、記憶體裝置330中的每一者通信。記憶體裝置304、記憶體裝置330亦可經由共享匯流排彼此通信。舉例而言,DRAM 304可經由共享匯流排而不經由SSD控制器310與快閃記憶體330中的至少一者通信。
SSD控制器310經組態以執行指令(例如,韌體指令)且控制SSD 300的總體操作。類似於圖2的SSD控制器210,SSD控制器310可包含主機介面312,例如,圖2的主機介面212,所述主機介面312經組態以經由電連接311(例如,圖2的電連接211)與主機裝置(例如,圖1的主機裝置120)通信。電連接311可與電連接313相同且由PCB 302的共享匯流排提供。主機介面312可根據介面協定(例如,匯流排介面協定或反及介面協定)與主機裝置通信。SSD控制器310可經由主機介面312自主機裝置接收讀取命令或寫入命令,以藉此自記憶體裝置304、記憶體裝置330中的至少一者讀取資料或將資料寫入至記憶體裝置304、記憶體裝置330中的至少一者。
此外,類似於圖2的SSD控制器210,SSD控制器310包含處理器314、DMA控制器316以及DRAM控制器318。處理器314可為圖1的處理器113。DRAM控制器318經組態以與DRAM 304通信且控制SSD控制器310與DRAM 304之間的資料傳送。DRAM控制器318可類似於圖2的DRAM控制器218。DMA控制器316可類似於圖2的DMA控制器216,且可經組態以控制SSD控制器310與記憶體裝置304、記憶體裝置330之間的資料傳送。舉例而言,DMA控制器316可根據準則(例如,優先級)來仲裁去往或來自記憶體裝置304、記憶體裝置330的資料傳送。
SSD控制器310亦可包含耦接至SSD控制器310中的組件的內部匯流排。組件中的每一者可為晶粒或晶片,且SSD控制器310可為配置於PCB 302上的多晶片封裝。內部匯流排為組件提供電連接315,例如,圖2的電連接215,使得組件可經由電連接315彼此通信。SSD控制器310中的內部匯流排不同於PCB 302上的共享匯流排。SSD控制器310中的電連接315可具有比PCB 302上的電連接311、電連接313更低的阻抗,例如,更低電阻或更低電容或兩者。因此,電連接315引起比電連接311、電連接313更少的操作功率消耗。
不同於圖2的SSD 200,SSD 300自SSD控制器310移除ECC電路且在快閃記憶體裝置330中包含ECC電路。如圖3中所示出,每一快閃記憶體裝置330a、快閃記憶體裝置330b包含快閃記憶體332a、快閃記憶體332b(總稱為快閃記憶體332或個別地稱為快閃記憶體332)以及快閃控制器334a、快閃控制器334b(總稱為快閃控制器334或個別地稱為快閃控制器334)。快閃記憶體332可為圖2的快閃記憶體230。
快閃記憶體332及快閃控制器334中的每一者可為晶粒或晶片,且快閃記憶體330b可為配置於PCB 302上的多晶片封裝。快閃記憶體裝置330中的快閃記憶體332及快閃控制器334可經由快閃記憶體裝置330中的電連接333a、電連接333b(總稱為電連接333或個別地稱為電連接333)彼此耦接。電連接333可為金屬線或金屬球。電連接333的阻抗可與SSD控制器310中的電連接315的阻抗相同或小於所述阻抗。快閃記憶體裝置330中的電連接333的阻抗可實質上小於PCB 302上的電連接313的阻抗。電連接333可具有比電連接313實質上更小的面積或大小。因此,經由快閃記憶體裝置330中的電連接333傳送相同量的資料可比經由PCB 302上的電連接313引起更少功率消耗及熱。
每一快閃控制器334a、快閃控制器334b包含客製化介面336a、客製化介面336b(總稱為客製化介面336或個別地稱為客製化介面336)以及ECC電路338a、ECC電路338b(總稱為ECC電路338或個別地稱為ECC電路338)。客製化介面336經組態以使得快閃控制器334或快閃記憶體裝置330能夠與SSD控制器310通信,以及在快閃記憶體裝置330或快閃記憶體332與SSD控制器310之間傳送資料。ECC電路338經組態以計算用於自SSD控制器310或快閃記憶體332中的至少一者接收到的資料的ECC位元。ECC電路338可類似於圖2的ECC電路222。在一些實施方案中,ECC電路338包含ECC編碼器及ECC解碼器。ECC電路338可基於ECC方案來實施,所述ECC方案例如里德索羅門碼方案、博斯-喬赫里-霍昆格姆(BCH)碼方案、低密度同位核對(LDPC)碼方案、渦輪碼方案,或其任何組合。如下文更詳細地論述,ECC解碼器(例如,LDPC解碼器)可例如基於輸入資料對數似然比率(log-likelihood ratio,LLR)可靠度來進行硬決策解碼或軟決策解碼或兩者。
對於每一快閃記憶體裝置330a、快閃記憶體裝置330b,SSD控制器310包含個別快閃資料處理器320a、快閃資料處理器320b(總稱為快閃資料處理器320或個別地稱為快閃資料處理器320)。每一快閃資料處理器320可為封裝於SSD控制器310中的個別晶粒或晶片。快閃資料處理器320不同於圖2的快閃控制器220且未包含ECC電路。快閃資料處理器320經組態以將資料緩衝至對應快閃記憶體裝置330或緩衝來自對應快閃記憶體裝置330的資料,及/或將資料處理至對應快閃記憶體裝置330或處理來自對應快閃記憶體裝置330的資料。舉例而言,快閃資料處理器320可進行一或多個操作,包含資料加密、資料隨機化以及資料加擾。每一快閃資料處理器320可包含客製化介面322a、客製化介面322b(總稱為客製化介面322或個別地稱為客製化介面322)。快閃資料處理器320中的客製化介面322對應於快閃控制器334中的客製化介面336,且經組態以在快閃資料處理器320或SSD控制器310與快閃控制器334或快閃記憶體裝置330之間傳送資料。
SSD控制器310中的客製化介面322及快閃記憶體裝置330中的客製化介面336可根據介面協定彼此通信。介面協定可以任何合適的格式且以任何合適的接腳數目實施。在一些實例中,介面協定可與快閃介面協定(例如,反及快閃介面協定)相同。在一些實例中,介面協定中的接腳數目可小於快閃介面協定的接腳數目。在一些實例中,介面協定可為高速通信協定,例如與串聯器/解串器(Serializer/Deserializer,SerDes)的通信協定。
圖4示出用於圖3的SSD控制器310及快閃記憶體裝置330的客製化介面322、客製化介面336的實例介面協定400。介面協定400可具有接腳中的至少一者,所述接腳包含用於資料輸入/輸出(input/output,I/O)埠的IO接腳、用於資料選通(例如,用於雙倍資料速率(double data rate,DDR)模式)的DQS接腳、用於晶片啟用的CE#接腳、用於位址鎖存啟用的ALE接腳、用於命令鎖存啟用的CLE接腳、用於寫入啟用的WE#接腳、用於讀取啟用的RE#接腳、用於寫保護的WP#接腳以及用於就緒/忙碌狀態的R/B#接腳。客製化介面322、客製化介面336中的每一者可具有經由PCB 302上的電連接313彼此耦接的相同類型的接腳。
返回參考圖3,不同於在SSD控制器210中進行錯誤校正編碼的圖2的SSD 200,SSD 300經組態以在快閃記憶體裝置330中進行ECC錯誤校正編碼(如在圖5及圖6中更詳細示出),此可減小經由PCB 302(例如,經由電連接313)的資料傳送量。
圖5示出由記憶體系統(例如,圖3的SSD 300)進行的過程500的實例。在過程500中,記憶體系統在自系統控制器(例如,圖3的SSD控制器310)接收到資料之後使用記憶體裝置(例如,圖3的快閃記憶體裝置330)的記憶體控制器(例如,圖3的快閃控制器334)中的ECC電路(例如,圖3的ECC電路338)來編碼資料。
在502處,系統控制器獲得K位元資料字。可經由主機介面(例如,圖3的主機介面312)自主機裝置(例如,圖1的主機裝置120)獲得K位元資料字。主機裝置可發送用於將K位元資料字儲存於記憶體裝置中的寫入命令。寫入命令可包含用於儲存K位元資料字的邏輯位址。系統控制器可包含處理器,例如,圖3的處理器314,所述處理器經組態以處理寫入命令以判定用邏輯位址映射的對應實體位址。系統控制器亦可包含資料處理器,例如,圖3的快閃資料處理器320,所述資料處理器經組態以例如藉由進行資料加密、資料隨機化以及資料加擾來緩衝K位元資料字及/或處理K位元資料字。系統控制器可基於與寫入命令相關聯的所判定實體位址將K位元資料字發送至記憶體裝置。
在504處,系統控制器經由第一類型的電連接(例如,圖3的PCB 302上的電連接313)將K位元資料字發送至記憶體裝置中的記憶體控制器。系統控制器及記憶體控制器可根據介面協定(例如,圖4的介面協定400)經由客製化介面(例如,客製化介面322及客製化介面336)通信。
在506處,記憶體控制器中的ECC電路編碼K位元資料字以獲得N位元碼字,其中N= K+P,且P為用於K位元資料字的方位元的數目。
在508處,記憶體控制器經由第二類型的電連接(例如,圖3的快閃記憶體裝置330中的電連接333)將N位元碼字程式化(或寫入)至記憶體裝置中的至少一個記憶體,例如,圖3的快閃記憶體332。第二類型的電連接的阻抗可實質上小於第一類型的電連接的阻抗。因此,在操作中,第二類型的電連接引起比第一類型的電連接實質上更低的功率消耗及/或熱。
在過程500中,ECC編碼是在經由第一類型的電連接的資料傳送之後,其中經由第一類型的電連接僅將K位元資料字自系統控制器傳送至記憶體裝置。相比之下,在圖2的SSD 200中,ECC編碼是在經由第一類型的電連接的資料傳送之前,其中經由第一類型的電連接將N位元碼字自系統控制器傳送至記憶體裝置。舉例而言,若用LDPC編碼方案實施ECC編碼,則碼率K/N可等同於0.9,此意謂可減少經由第一類型的電連接的10%資料傳送。因此,相較於圖2的SSD 200,圖3的SSD 300使得能夠減小經由第一類型的電連接的資料傳送量,藉此減少功率消耗。另外,將ECC電路自系統控制器移動至記憶體裝置可減少記憶體控制器中的電源,此可增加熱耗散且降低操作溫度。
返回參考圖3,ECC電路338中的ECC解碼器可為LDPC解碼器,所述LDPC解碼器經組態以例如基於輸入資料對數似然比率(LLR)可靠度來進行硬決策解碼演算法或軟決策解碼演算法或兩者。例如歸因於讀取干擾或任何其他記憶體可靠度效應,LLR可靠度可與所儲存位元的臨限電壓變化相關聯。
在硬決策解碼演算法中,ECC解碼器經組態以在解碼之前為每一輸入位元指派LLR。LLR的正負號(+或-)由硬位元值(1或0)決定,且LLR的值意謂可靠度等級。舉例而言,如下表1中所繪示,資料位元1針對LLR映射至-7,且資料位元0針對LLR映射至+7。
表1. 硬決策解碼
| 硬位元 | 1 | 0 |
| LLR | -7 | +7 |
在軟決策解碼演算法中,ECC解碼器經組態以在解碼之前為每一資料位元指派一或多個LLR選項,例如,4個LLR選項。藉由更多LLR選項,可改良ECC解碼器的校正能力。
表2. 1 位元軟決策解碼
| 硬位元 | 1 | 1 | 0 | 0 |
| 軟位元 | 1 | 0 | 0 | 1 |
| LLR | -5 | -2 | +2 | +5 |
舉例而言,如表2中所繪示,硬位元對應於4個LLR選項。若硬位元具有值1,則硬位元對應於各自與個別LLR選項-5及-2相關聯的兩個軟位元1及0。若硬位元具有值0,則硬位元對應於各自與個別LLR選項+2及+5相關聯的兩個軟位元0及1。軟位元0意謂較高錯誤率(因此較低可靠度等級,諸如-2或+2),且軟位元1意謂較低錯誤率(因此較高可靠度等級,諸如-5或+5)。因此,為了將碼字中的每一資料位元解碼為1或0,可基於LLR選項的數目(或對應於資料位元的軟位元的數目)例如用一系列依序讀取電壓自記憶體讀取資料位元4次,此可改良ECC解碼器的校正能力。碼字中的每一資料位元具有相同數目個LLR選項或軟位元。
在操作中,快閃控制器334經由快閃記憶體裝置330中的電連接333接收自快閃記憶體332讀取的碼字(例如,經編碼資料)。快閃控制器334的ECC電路338中的ECC解碼器經組態以解碼碼字以偵測及校正(直至ECC方案的錯誤校正能力)可能存在於碼字中的任何位元錯誤。若ECC解碼器無法校正碼字中的位元錯誤的臨限值計數,則其指示解碼碼字的結果未通過ECC解碼測試或ECC解碼器未能解碼碼字。若ECC解碼器可校正碼字中的位元錯誤,則其指示碼字通過ECC解碼測試,且碼字經解碼以變為經解碼資料(例如,資料字)。快閃控制器334可接著經由PCB 302上的電連接313將經解碼資料發送至SSD控制器310。
若碼字未通過ECC解碼測試,則快閃控制器334可進行軟決策解碼演算法,例如以解碼自快閃記憶體332讀取的碼字的軟位元。碼字中的每一資料位元的軟位元的數目(例如,m)判定來自快閃記憶體332的讀取操作的數目。舉例而言,對於N位元碼字,自快閃記憶體332讀取的位元的數目可根據軟決策解碼演算法而為N*m個位元。連同在硬決策解碼演算法中讀取的位元的數目一起,自快閃記憶體332讀取的位元的總數目可為至快閃記憶體裝置330中的快閃控制器334的N*(1+m)個位元。
圖6示出由記憶體系統(例如,圖3的SSD 300)進行的過程600的實例。在過程600中,記憶體系統在將資料發送至系統控制器(例如,圖3的SSD控制器310)之前使用記憶體裝置(例如,圖3的快閃記憶體裝置330)的記憶體控制器(例如,圖3的快閃控制器334)中的ECC電路(例如,圖3的ECC電路338)來解碼資料。ECC電路經組態以根據如上文所描述的硬決策解碼演算法及軟決策解碼演算法進行解碼。
在602處,記憶體控制器針對硬決策解碼演算法及軟決策解碼演算法自記憶體裝置中的至少一個記憶體(例如,圖3的快閃記憶體332)讀取N位元碼字(1+m)次,其中m表示N位元碼字中的每一位元的軟位元或LLR選項的數目。亦即,存在經由記憶體裝置中的內部電連接(例如,圖3的快閃記憶體裝置330中的電連接333)自記憶體傳送至記憶體控制器的總數目N*(1+m)個位元。
在604處,記憶體控制器中的ECC電路解碼N位元碼字以獲得K位元資料字,其中N= K+P,且P為用於K位元資料字的同位位元。
在606處,記憶體控制器經由系統控制器與記憶體裝置之間的外部電連接(例如,圖3的PCB 302上的電連接313)將K位元資料字發送至系統控制器。系統控制器與記憶體裝置之間的外部電連接具有比記憶體裝置中的內部電連接實質上更大的阻抗。
在過程600中,ECC解碼是在經由外部電連接的資料傳送之前,其中經由外部電連接僅將K位元資料字(經解碼資料)自記憶體裝置傳送至系統控制器。相比之下,在圖2的SSD 200中,如上文所論述,ECC解碼是在經由外部電連接的資料傳送之後,其中經由外部電連接將(K+P)(1+m)個位元自記憶體裝置傳送至系統控制器。因此,相較於圖2的SSD 200,圖3的SSD 300使得能夠減小經由外部電連接的資料傳送量,藉此極大地減少記憶體系統或系統控制器的功率消耗。特定而言,對於多通道記憶體存取,系統控制器在高頻下以高通量操作,且相較於SSD 200,SSD 300可極大地減少功率消耗且增加熱耗散。
更高ECC編碼能力可能需要更大ECC電路面積,此可能影響將ECC電路封裝於記憶體裝置中。在一些實施方案中,記憶體系統可在系統控制器與記憶體裝置中的記憶體控制器之間分離ECC編碼能力。以此方式,記憶體裝置中的ECC電路可更小,此可有益於封裝記憶體裝置。舉例而言,系統控制器可具有比記憶體裝置更強的處理功率。系統控制器可包含經組態以用於高錯誤位元計數訊框的較強ECC電路,且記憶體裝置中的記憶體控制器可包含經組態以用於較低錯誤位元計數訊框的較弱ECC電路。
圖7示出包含具有較強ECC電路的系統控制器及具有較弱ECC電路的記憶體裝置的實例記憶體系統700。系統控制器(例如,SSD控制器710)及記憶體裝置(例如,DRAM 704及快閃記憶體裝置730a、快閃記憶體裝置730b)(總稱為快閃記憶體730或個別地稱為快閃記憶體730)。SSD 700可為圖1的記憶體系統110,SSD控制器710可為圖1的系統控制器112,且記憶體裝置704、記憶體裝置730可為圖1的記憶體裝置116。類似於圖3的SSD 300,SSD控制器710以及記憶體裝置704、記憶體裝置730可配置於電連接板(例如,PCB 702)上。PCB 702可為圖3的PCB 302。PCB 702可包含共享匯流排。SSD控制器710可藉由由PCB 702上的共享匯流排提供的電連接713與記憶體裝置704、記憶體裝置730中的每一者通信。
類似於圖3的SSD控制器310,SSD控制器710可包含主機介面712,例如,圖3的主機介面312,所述主機介面712經組態以經由電連接711(例如,圖3的電連接311)與主機裝置(例如,圖1的主機裝置120)通信。電連接711可與電連接713相同且由PCB 702的共享匯流排提供。主機介面712可根據介面協定(例如,諸如反及介面協定的匯流排介面協定)與主機裝置通信。
亦類似於圖3的SSD控制器310,SSD控制器710包含處理器714、DMA控制器716以及DRAM控制器718。處理器714可為圖1的處理器113。DRAM控制器718經組態以與DRAM 704通信且控制SSD控制器710與DRAM 704之間的資料傳送。DRAM控制器718可為圖3的DRAM控制器318。DMA控制器716可經組態以控制SSD控制器710與記憶體裝置704、記憶體裝置730之間的資料傳送。舉例而言,DMA控制器716可根據準則(例如,優先級)來仲裁去往或來自記憶體裝置704、記憶體裝置730的資料傳送。
SSD控制器710亦可包含耦接至SSD控制器710中的組件的內部匯流排。組件中的每一者可為晶片,且SSD控制器710可為配置於PCB 702上的多晶片封裝。內部匯流排為組件提供電連接715,例如,圖3的電連接315,使得組件可經由電連接715彼此通信。SSD控制器710中的內部匯流排不同於PCB 702上的共享匯流排。SSD控制器710中的電連接715可比PCB 702上的電連接711、電連接713具有更低阻抗,例如,更低電阻或更低電容或兩者。因此,電連接715引起比電連接711、電連接713更少的操作功率消耗。
如圖7中所示出,每一快閃記憶體裝置730a、快閃記憶體裝置730b包含快閃記憶體732a、快閃記憶體732b(總稱為快閃記憶體732或個別地稱為快閃記憶體732)、快閃控制器734a以及快閃控制器734b(總稱為快閃控制器734或個別地稱為快閃控制器734)。快閃記憶體732可為圖3的快閃記憶體332或圖2的快閃記憶體230。
快閃記憶體732及快閃控制器734中的每一者可為晶粒或晶片,且快閃記憶體裝置730可為配置於PCB 702上的多晶片封裝。快閃記憶體裝置730中的快閃記憶體732及快閃控制器734可經由快閃記憶體裝置730中的電連接733a、電連接733b(總稱為電連接733或個別地稱為電連接733)彼此耦接。電連接733可為圖3的電連接333。電連接733的阻抗可與SSD控制器710中的電連接715的阻抗相同或小於所述阻抗。快閃記憶體裝置730中的電連接733的阻抗可實質上小於PCB 702上的電連接713的阻抗。因此,經由快閃記憶體裝置730中的電連接733傳送相同量的資料可比經由PCB 702上的電連接713引起更少功率消耗及熱。
不同於圖3的SSD 300,SSD 700在SSD控制器710及快閃記憶體裝置730中的快閃控制器734兩者中包含ECC電路。快閃控制器734可包含用於針對低錯誤位元計數訊框進行硬決策解碼演算法的較弱ECC電路,且SSD控制器710可包含用於針對高錯誤位元計數訊框進行硬決策解碼演算法及/或軟決策解碼演算法的較強ECC電路。
舉例而言,較弱ECC電路可進行較弱解碼演算法,例如,位元轉換相關演算法。較強ECC電路可進行較強解碼演算法,例如,最小和相關演算法。較弱ECC電路可具有比較強ECC電路更小的面積。表3繪示實施最小和相關演算法及位元轉換相關演算法的ECC電路(例如,基於4 KB LDPC的電路)的特性的實例。繪示的是,對於硬決策解碼,位元轉換相關演算法可僅在每4 KB訊框200錯誤位元計數下達成10
-3的訊框錯誤率(Frame error rate, FER),而最小和演算法可在每4 KB訊框240個位元下達成10
-8的FER。此外,最小和演算法可進行1位元軟決策解碼以在每4 KB訊框480個位元下達成10
-8的FER。實施位元轉換相關演算法的ECC電路可具有比實施最小和相關演算法的ECC電路的面積小5倍的面積。
表3 不同演算法下的ECC電路特性
| 4KB LDPC | 最小和相關演算法 | 位元轉換相關演算法 |
| 校正能力 訊框錯誤率(FER)=不可校正訊框/總訊框 | 硬決策解碼: 240個位元@ FER <10 -81位元軟決策解碼:480個位元@ FER <10 -8 | 僅硬決策解碼: 200個位元@ FER <10 -3 |
| 面積 | A | <= A/5 |
如圖7中所示出,每一快閃控制器734a、快閃控制器734b包含客製化介面736a、客製化介面736b(總稱為客製化介面736或個別地稱為客製化介面736)以及較弱ECC電路738a、較弱ECC電路738b(總稱為較弱ECC電路738或個別地稱為較弱ECC電路738)。客製化介面736經組態以使得快閃控制器734或快閃記憶體裝置730能夠與SSD控制器710通信,以及在快閃記憶體裝置730或快閃記憶體732與SSD控制器710之間傳送資料。較弱ECC電路738經組態以計算用於自SSD控制器710或快閃記憶體732中的至少一者接收到的資料的ECC位元。較弱ECC電路738包含ECC編碼器及ECC解碼器。較弱ECC電路338可基於ECC方案來實施,所述ECC方案例如里德索羅門碼方案、博斯-喬赫里-霍昆格姆碼(BCH)方案、低密度同位核對(LDPC)碼方案、渦輪碼方案,或其任何組合。如上文所論述,較弱ECC電路738可進行僅進行硬決策解碼的較弱解碼演算法,例如,位元轉換相關演算法。以此方式,較弱ECC電路738可具有較小面積大小。
類似於圖3的SSD控制器310,對於每一快閃記憶體裝置730a、快閃記憶體裝置730b,SSD控制器710包含個別快閃資料處理器720a、快閃資料處理器720b(總稱為快閃資料處理器720或個別地稱為快閃資料處理器720)。每一快閃資料處理器720可包含客製化介面722a、客製化介面722b(總稱為客製化介面722或個別地稱為客製化介面722)。快閃資料處理器720中的客製化介面722對應於快閃控制器734中的客製化介面736,且經組態以在快閃資料處理器720或SSD控制器710與快閃控制器734或快閃記憶體裝置730之間傳送資料。SSD控制器310中的客製化介面322及快閃記憶體裝置330中的客製化介面336可根據介面協定(例如,圖4的介面協定400)彼此通信。介面協定400可以任何合適的格式且以任何合適的接腳數目實施。在一些實例中,介面協定400可與快閃介面協定(例如,反及快閃介面協定)相同。在一些實例中,介面協定400可具有小於快閃介面協定的接腳數目的接腳數目。在一些實例中,介面協定400可為高速通信協定,例如與串聯器/解串器(SerDes)的通信協定。
不同於圖3的SSD控制器310,SSD控制器710在用於對應快閃記憶體裝置730a、快閃記憶體裝置730b的每一快閃資料處理器720a、快閃資料處理器720b中包含較強ECC電路724a、較強ECC電路724b(總稱為較強ECC電路724或個別地稱為較強ECC電路724)。除將資料緩衝至快閃記憶體裝置730或緩衝來自快閃記憶體裝置730的資料,及/或將資料處理至快閃記憶體裝置730或處理來自快閃記憶體裝置730的資料以外,快閃資料處理器720亦可使用較強ECC電路724來進行錯誤校正編碼。快閃資料處理器720可實施為封裝於SSD控制器710中的晶粒或晶片。
在一些實施方案中,較強ECC電路724包含ECC編碼器及ECC解碼器。在一些實施方案中,較強ECC電路724可僅包含ECC解碼器。較強ECC電路724可基於ECC方案來實施,所述ECC方案例如里德索羅門碼方案、博斯-喬赫里-霍昆格姆(BCH)碼方案、低密度同位核對(LDPC)碼方案、渦輪碼方案,或其任何組合。如上文所論述,較強ECC電路724可進行較強解碼演算法,例如,最小和相關演算法,所述較強解碼演算法可進行硬決策解碼及軟決策解碼兩者。較強ECC電路724可例如基於輸入資料對數似然比率(LLR)可靠度來進行硬決策解碼或軟決策解碼或兩者。
圖8示出用於由圖7的記憶體系統700解碼資料的過程800的實例。過程800例如藉由經由主機介面712自主機裝置接收讀取命令而開始於801處。讀取命令指示自至少一個快閃記憶體732讀取N位元碼字。
在802處,快閃控制器734經由快閃記憶體裝置730中的內部電連接733自快閃記憶體732獲得(例如,讀取)N位元碼字。較弱ECC電路738接著根據較弱解碼演算法解碼N位元碼字,例如,位元轉換相關演算法。
在804處,快閃控制器734判定解碼N位元碼字的結果是通過藉由較弱ECC電路738的ECC測試抑或較弱ECC電路738未能解碼N位元碼字。判定可包含判定N位元碼字中的錯誤位元是否可藉由較弱ECC電路738由N位元碼字中的同位位元校正。
若快閃控制器734判定N位元碼字通過ECC測試且經解碼以獲得K位元資料字,則在806處,快閃控制器經由PCB 702上的外部電連接713將K位元資料字發送至SSD控制器710中的快閃資料處理器720。快閃資料處理器720並不需要使用較強ECC電路724來進行任何解碼,且過程800在步驟807處結束。SSD控制器710可接著回應於讀取命令而經由主機介面712將經解碼K位元資料字發送至主機裝置。
若快閃控制器734判定解碼N位元碼字的結果未通過藉由較弱ECC電路738的ECC測試或較弱ECC電路738未能解碼N位元碼字,則在808處,快閃控制器734經由PCB 702上的外部電連接713將N位元碼字發送至SSD控制器710,例如,快閃資料處理器720。快閃資料處理器720中的較強ECC電路724接著根據較強解碼演算法(例如,最小和相關演算法)解碼N位元碼字。N位元碼字的解碼為硬決策解碼。
在810處,SSD控制器710(例如,快閃資料處理器720)判定解碼N位元碼字的結果是否通過藉由較強ECC電路724的ECC測試或較強ECC電路724是否可解碼N位元碼字。若N位元碼字通過ECC測試且藉由較強ECC電路724解碼以獲得K位元資料字,則過程800在步驟807處結束。SSD控制器710可接著回應於讀取命令而經由主機介面712將經解碼K位元資料字發送至主機裝置。
若N位元碼字未通過ECC測試,則在812處,SSD控制器710例如藉由向快閃控制器734發送請求來告知所述快閃控制器734自快閃記憶體732讀取具有軟位元的N位元碼字。N位元碼字中的每一資料位元的軟位元的數目判定例如藉由對應的一系列依序讀取電壓自快閃記憶體732讀取N位元碼字的次數。
在814處,快閃控制器734經由PCB 702上的電連接713將N位元碼字的軟位元直接發送至SSD控制器710,例如快閃資料處理器720,從而繞過較弱ECC電路738。亦即,較弱ECC電路738並不對N位元碼字的軟位元進行任何解碼。
在816處,快閃資料處理器720中的較強ECC電路722例如根據最小和相關演算法解碼N位元碼字的軟位元以獲得K位元資料字。所述解碼為軟決策解碼。過程800接著在步驟807處結束。SSD控制器710可接著回應於讀取命令而經由主機介面712將經解碼K位元資料字發送至主機裝置。
在一些實施方案中,SSD控制器710經由主機介面712自主機裝置接收寫入命令。寫入命令指示將K位元資料字儲存於快閃記憶體732中。SSD控制器710(例如,快閃資料處理器720)可將K位元資料字直接發送至包含快閃記憶體732的對應快閃記憶體裝置730中的快閃控制器734,從而繞過較強ECC電路724。快閃控制器734可使用較弱ECC電路738來編碼K位元資料字以獲得N位元碼字。快閃控制器734可接著將N位元碼字程式化或寫入於快閃記憶體732中。在一些實施方案中,若較弱ECC電路738並不具有編碼K位元資料字的能力,則SSD控制器710可使用較強ECC電路722來編碼K位元資料字以獲得N位元碼字,且接著將N位元碼字發送至快閃控制器734以用於儲存於快閃記憶體732中。
圖9示出包含系統控制器(例如,SSD控制器910)及記憶體裝置(例如,DRAM 904及快閃記憶體裝置930)的另一實例記憶體系統,例如SSD 900。SSD 900可為圖1的記憶體系統110,SSD控制器910可為圖1的系統控制器112,且記憶體裝置930可為圖1的記憶體裝置116。
除SSD 900為多個快閃記憶體932-1、快閃記憶體932-2、……、快閃記憶體932-n(總稱為快閃記憶體932或個別地稱為快閃記憶體932)提供快閃記憶體裝置930而非為每一快閃記憶體提供具有ECC電路的快閃控制器(例如,如圖3及圖7中所示出)之外,SSD 900類似於圖3的SSD 300或圖7的SSD 700。
快閃記憶體裝置930包含具有經組態以針對快閃記憶體932中的至少一者進行錯誤校正編碼的ECC電路938的快閃控制器934。快閃控制器934亦可包含經組態以與SSD控制器910通信的客製化介面936,例如圖3的客製化介面336或圖7的客製化介面736。快閃控制器934可實施為晶粒或晶片。每一快閃記憶體932可為個別晶粒或晶片。快閃控制器934及快閃記憶體932可封裝於快閃記憶體裝置930中。快閃記憶體裝置930可包含將快閃控制器934耦接至快閃記憶體932中的每一者的內部電連接933,例如圖3的電連接333或圖7的電連接733。
類似於圖3的SSD 300或圖7的SSD 700,SSD控制器910以及記憶體裝置904、記憶體裝置930可配置於電連接板(例如,PCB 902)上。PCB 902可為圖3的PCB 302或圖7的PCB 702。PCB 902可包含共享匯流排。SSD控制器910可藉由由PCB 902上的共享匯流排提供的電連接913與記憶體裝置904、記憶體裝置930中的每一者通信。
類似於圖3的SSD控制器310或圖7的SSD控制器710,SSD控制器910包含主機介面912,例如,圖3的主機介面312或圖7的主機介面712,所述主機介面912經組態以經由電連接911(例如,圖3的電連接311或圖7的電連接711)與主機裝置(例如,圖1的主機裝置120)通信。主機介面912可根據介面協定(例如,諸如反及介面協定的匯流排介面協定)與主機裝置通信。
亦類似於圖3的SSD控制器310或圖7的SSD控制器710,SSD控制器910包含處理器914、DMA控制器916以及DRAM控制器918。處理器914可為圖1的處理器113。DRAM控制器918經組態以與DRAM 904通信且控制SSD控制器910與DRAM 904之間的資料傳送。DRAM控制器918可為圖3的DRAM控制器318或圖7的DRAM控制器718。DMA控制器916可經組態以控制SSD控制器910與記憶體裝置904、記憶體裝置930之間的資料傳送。在一些實施方案中,快閃記憶體裝置930(例如,快閃控制器934)包含可根據準則(例如,優先級)來仲裁去往或來自多個快閃記憶體932的資料傳送的DMA控制器。
SSD控制器910亦可包含耦接至SSD控制器910中的組件的內部匯流排。組件中的每一者可為晶片,且SSD控制器910可為配置於PCB 902上的多晶片封裝。內部匯流排為組件提供電連接915,例如,圖3的電連接315或圖7的電連接715,使得組件可經由電連接915彼此通信。
SSD控制器 910包含用於快閃記憶體裝置930的快閃資料處理器920。在一些實施方案中,快閃資料處理器920可類似於圖3的快閃資料處理器320,且可經組態以將資料緩衝至快閃記憶體裝置930或緩衝來自快閃記憶體裝置930的資料,及/或將資料處理至快閃記憶體裝置930或處理來自快閃記憶體裝置930的資料。快閃資料處理器920可包含對應於快閃控制器934中的客製化介面936的客製化介面922。客製化介面922經組態以在快閃資料處理器920或SSD控制器910與快閃控制器934或快閃記憶體裝置930之間傳送資料。SSD控制器910中的客製化介面922及快閃記憶體裝置930中的客製化介面936可根據介面協定(例如,圖4的介面協定400)彼此通信。介面協定可以任何合適的格式且以任何合適的接腳數目實施。在一些實例中,介面協定可與快閃介面協定(例如,反及快閃介面協定)相同。在一些實例中,介面協定可具有小於快閃介面協定的接腳數目的接腳數目。在一些實例中,介面協定可為高速通信協定,例如與串聯器/解串器(SerDes)的通信協定。
在一些實施方案中,快閃資料處理器920可類似於圖7的快閃資料處理器720。快閃資料處理器920可包含具有比快閃控制器934中的ECC電路938更強的編碼能力的ECC電路。快閃資料處理器920中的ECC電路可類似於圖7的較強ECC電路724。ECC電路938可類似於圖7的ECC電路737。
所揭露及其他實例可實施為一或多個電腦程式產品,例如在電腦可讀媒體上編碼的電腦程式指令的一或多個模組,所述一或多個模組由資料處理設備執行或控制資料處理設備的操作。電腦可讀媒體可為機器可讀儲存裝置、機器可讀儲存基底、記憶體裝置或其中的一或多者的組合。術語「資料處理設備」涵蓋用於處理資料的所有設備、裝置以及機器,包含(作為實例)可程式化處理器、電腦或多個處理器或電腦。除硬體之外,設備亦可包含為所討論的電腦程式創建執行環境的碼,例如構成處理器韌體、協定堆迭、資料庫管理系統、作業系統或其中的一或多者的組合的碼。
系統可涵蓋用於處理資料的所有設備、裝置以及機器,包含(作為實例)可程式化處理器、電腦或多個處理器或電腦。除硬體之外,系統亦可包含為所討論的電腦程式創建執行環境的碼,例如構成處理器韌體、協定堆迭、資料庫管理系統、作業系統或其中的一或多者的組合的碼。
電腦程式(亦稱為程式、軟體、軟體應用程式、指令碼或碼)可以任何形式的程式化語言寫入,包含編譯或解譯語言,且其可以任何形式部署,包含作為獨立程式或作為模組、組件、次常式或適合用於計算環境中的其他單元。電腦程式未必對應於檔案系統中的檔案。可將程式儲存於保存其他程式或資料(例如,儲存於標示語言文件中的一或多個指令碼)的檔案的一部分中、儲存於專用於所討論的程式的單一檔案中,或儲存於多個經協調檔案(例如,儲存一或多個模組、子程式或部分碼的檔案)中。可部署電腦程式以在一個電腦上執行或在定位於一個位點或跨多個位點分佈且由通信網路互連的多個電腦上執行。
本文件中所描述的過程及邏輯流程可由一或多個可程式化處理器進行,所述可程式化處理器執行一或多個電腦程式以進行本文中所描述的功能。過程及邏輯流程亦可由專用邏輯電路系統進行,且設備亦可經實施為專用邏輯電路系統,所述專用邏輯電路系統例如場可程式化閘陣列(field programmable gate array;FPGA)或特殊應用積體電路(application specific integrated circuit;ASIC)。
適合於執行電腦程式的處理器包含(作為實例)通用微處理器及專用微處理器兩者,以及任何種類的數位電腦的任何一或多個處理器。通常,處理器將自唯讀記憶體或隨機存取記憶體或兩者接收指令及資料。電腦的基本元件可包含用於進行指令的處理器及用於儲存指令及資料的一或多個記憶體裝置。通常,電腦亦可包含用於儲存資料的一或多個大容量儲存裝置,例如磁碟、磁光碟或光碟,或以操作方式耦接至所述一或多個大容量儲存裝置以自其接收資料,或將資料傳送至所述一或多個大容量儲存裝置,或二者皆有。然而,電腦無需具有此類裝置。適合於儲存電腦程式指令及資料的電腦可讀媒體可包含所有形式的非揮發性記憶體、媒體以及記憶體裝置,包含(作為實例)半導體記憶體裝置,例如EPROM、EEPROM以及快閃記憶體裝置;磁碟。處理器及記憶體可由專用邏輯電路系統補充或併入於專用邏輯電路系統中。
儘管本文件可描述許多細節,但此等細節不應視為對所主張發明或可主張內容的範圍的限制,而是視為描述特定針對特定實施例的特徵。在單獨實施例的上下文中描述於本文件中的某些特徵亦可在單一實施例中組合地實施。相反,描述於單一實施例的上下文中的各種特徵亦可單獨地或以任何合適的子組合在多個實施例中實施。此外,儘管上文可將特徵描述為以某些組合起作用且甚至最初按此來主張,但來自所主張組合的一或多個特徵在一些情況下可自所述組合刪除,且所主張組合可以是針對子組合或子組合的變化。類似地,儘管在圖式中以特定次序來描繪操作,但不應將此理解為需要以所繪示的特定次序或以依序次序進行此類操作或進行所有所示出操作以達成合乎需要的結果。
僅揭露幾個實例及實施方案。對所描述實例及實施方案以及其他實施方案的變化、修改以及增強可基於所揭露的內容進行。
100:系統
110、700:記憶體系統
112:系統控制器
113、214、314、714、914:處理器
114:內部記憶體
116:記憶體裝置
120:主機裝置
200、300、900:SSD
202、302、702、902:印刷電路板
204、304、704、904:DRAM/記憶體裝置
210、310、710、910:SSD控制器
211、213、215、311、313、315、333、333a、333b、711、713、715、733、733a、733b、911、913、915、933:電連接
212、312、712、912:主機介面
216、316、716、916:直接記憶體存取控制器
218、318、718、918:DRAM控制器
220、220a、220b、334、334a、334b、734、734a、734b、934:快閃控制器
222、222a、222b、338、338a、338b、938:ECC電路
230、230a、230b、330、330a、330b、730、730a、730b、930:快閃記憶體/記憶體裝置
320、320a、320b、720、720a、720b、920:快閃資料處理器
332、332a、332b、732、732a、732b、932、932-1、932-2、932-n:快閃記憶體
322、322a、322b、336、336a、336b、722、722a、722b、736、736a、736b、922、936:客製化介面
400:介面協定
500、600、800:過程
502、504、506、508、602、604、606、801、802、804、806、807、808、810、812、814、816:步驟
738、738a、738b:較弱ECC電路
724、724a、724b:較強ECC電路
圖1示出包含主機裝置及記憶體系統的實例。
圖2示出包含具有ECC電路的系統控制器及不具有ECC電路的記憶體裝置的實例記憶體系統。
圖3示出包含不具有ECC電路系統控制器及具有ECC電路的記憶體裝置的實例記憶體系統。
圖4示出用於圖3的系統控制器及記憶體裝置的客製化介面的實例介面協定。
圖5示出用於在自系統控制器接收到資料之後使用記憶體控制器中的ECC電路來編碼資料的過程的實例。
圖6示出用於在將經解碼資料發送至系統控制器之前使用記憶體控制器中的ECC電路來解碼資料的過程的實例。
圖7示出包含具有較強ECC電路的系統控制器及具有較弱ECC電路的記憶體裝置的實例記憶體系統。
圖8示出用於由圖7的記憶體系統解碼資料的過程的實例。
圖9示出包含系統控制器及具有ECC電路及多個記憶體的記憶體裝置的另一實例記憶體系統。
100:系統
110:記憶體系統
112:系統控制器
113:處理器
114:內部記憶體
116:記憶體裝置
120:主機裝置
Claims (20)
- 一種記憶體系統,包括: 系統控制器,經組態以與主機裝置通信;以及 記憶體裝置,耦接至所述系統控制器,所述記憶體裝置包括: 至少一個記憶體;以及 記憶體控制器,耦接至所述至少一個記憶體,所述記憶體控制器包括錯誤校正碼電路(Error Correction Code Circuit,ECC電路),所述錯誤校正碼電路經組態以針對自所述系統控制器或所述至少一個記憶體中的至少一者接收到的資料進行錯誤校正編碼。
- 如請求項1所述的記憶體系統,其中所述記憶體控制器經由第一類型的電連接耦接至所述系統控制器, 其中所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,且 其中所述第二類型的電連接的阻抗小於所述第一類型的電連接的阻抗。
- 如請求項2所述的記憶體系統,更包括電連接板, 其中所述系統控制器及所述記憶體裝置分別配置於所述電連接板上, 其中所述第一類型的電連接藉由所述電連接板的共享匯流排實施,且 其中所述第二類型的電連接藉由所述記憶體裝置中的內部匯流排實施。
- 如請求項2所述的記憶體系統,其中所述系統控制器包括: 第一介面,經組態以根據第一介面協定經由第三類型的電連接與所述主機裝置通信,其中所述第二類型的電連接的所述阻抗小於所述第三類型的電連接的阻抗;以及 第二介面,經組態以根據第二介面協定經由所述第一類型的電連接與所述記憶體控制器通信。
- 如請求項4所述的記憶體系統,其中所述記憶體控制器包括: 第三介面,經組態以根據所述第二介面協定經由所述第一類型的電連接與所述系統控制器通信。
- 如請求項2所述的記憶體系統,其中所述記憶體控制器經組態以: 經由所述第一類型的電連接自所述系統控制器接收所述資料; 使用所述ECC電路來編碼所述資料以獲得經編碼資料,所述經編碼資料具有比所述資料更大的大小;以及 經由所述第二類型的電連接在所述至少一個記憶體中寫入所述經編碼資料。
- 如請求項2所述的記憶體系統,其中所述記憶體控制器經組態以: 經由所述第二類型的電連接自所述至少一個記憶體讀取所述資料; 使用所述ECC電路來解碼所述資料以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小;以及 經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
- 如請求項2所述的記憶體系統,其中所述記憶體控制器經組態以: 經由所述第二類型的電連接自所述至少一個記憶體讀取所述資料的軟位元; 使用所述ECC電路根據軟決策解碼演算法來解碼所述資料的所述軟位元以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小;以及 經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
- 如請求項1所述的記憶體系統,其中所述記憶體控制器中的所述ECC電路為記憶體側ECC電路, 其中所述系統控制器包括系統側ECC電路,所述系統側ECC電路具有比所述記憶體控制器中的所述記憶體側ECC電路更強的解碼能力,且 其中所述記憶體側ECC電路經組態以根據較弱解碼演算法解碼資料,且所述系統控制器中的所述系統側ECC電路經組態以根據較強解碼演算法去解碼資料。
- 如請求項9所述的記憶體系統,其中: 所述記憶體控制器經組態以: 回應於判定所述記憶體側ECC電路未能根據所述較弱解碼演算法解碼所述資料,將所述資料發送至所述系統控制器,且 所述系統控制器經組態以: 使用所述系統側ECC電路根據所述較強解碼演算法來解碼所述資料; 回應於判定所述系統側ECC電路未能根據所述較強解碼演算法解碼所述資料,將自所述至少一個記憶體讀取所述資料的軟位元的請求發送至所述記憶體控制器;以及 回應於自所述記憶體控制器接收到所述資料的所述軟位元,使用所述系統側ECC電路根據所述較強解碼演算法來解碼所述資料的所述軟位元以獲得經解碼資料,所述經解碼資料具有比所述資料更小的大小,且 所述記憶體控制器經組態以: 在未使用所述記憶體側ECC電路來解碼所述資料的所述軟位元的情況下,將所述資料的所述軟位元發送至所述系統控制器。
- 如請求項1所述的記憶體系統,包括多個記憶體裝置,所述多個記憶體裝置包含所述記憶體裝置, 其中所述多個記憶體裝置中的每一者耦接至所述系統控制器且包括: 個別記憶體;以及 個別記憶體控制器,耦接至所述個別記憶體,所述個別記憶體控制器包括對應ECC電路,所述對應ECC電路經組態以針對自所述個別記憶體或所述系統控制器中的至少一者接收到的對應資料進行對應錯誤校正編碼。
- 如請求項11所述的記憶體系統,其中所述系統控制器包括多個資料處理器,所述多個資料處理器中的每一者經組態以與所述多個記憶體裝置中的個別記憶體裝置通信。
- 如請求項12所述的記憶體系統,其中所述多個記憶體裝置中的每一者的所述個別記憶體控制器中的所述對應ECC電路為記憶體側ECC電路,且 其中所述多個資料處理器中的每一者包括系統側ECC電路,所述系統側ECC電路具有比所述記憶體側ECC電路更強的解碼能力。
- 如請求項1所述的記憶體系統,更包括第二記憶體裝置,所述第二記憶體裝置耦接至所述系統控制器及所述記憶體裝置兩者, 其中所述第二記憶體裝置具有比所述記憶體裝置更快的回應速度。
- 如請求項1所述的記憶體系統,其中所述至少一個記憶體包括多個記憶體,所述多個記憶體各自耦接至所述記憶體控制器,且 其中所述ECC電路經組態以針對與所述多個記憶體中的每一者相關聯的對應資料進行錯誤校正編碼。
- 一種記憶體裝置,包括: 至少一個記憶體;以及 記憶體控制器,耦接至所述至少一個記憶體, 其中所述記憶體控制器包括: 記憶體介面,經組態以經由第一類型的電連接與系統控制器通信,其中所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,所述第二類型的電連接具有比所述第一類型的電連接更小的阻抗;以及 錯誤校正碼電路(Error Correction Code Circuit,ECC電路),經組態以基於藉由所述系統控制器自主機裝置接收到的讀取命令或寫入命令中的至少一者,針對自所述系統控制器或所述至少一個記憶體中的至少一者接收到的資料進行錯誤校正編碼。
- 一種記憶體系統執行的方法,所述方法包括: 藉由所述記憶體系統的系統控制器自耦接至所述系統控制器的主機裝置接收資料; 藉由所述系統控制器經由第一類型的電連接將所述資料發送至所述記憶體系統的記憶體裝置; 藉由所述記憶體裝置的記憶體控制器中的錯誤校正碼電路(Error Correction Code Circuit,ECC電路)編碼所述資料以獲得經編碼資料,所述經編碼資料具有比所述資料更大的大小;以及 藉由所述記憶體控制器在所述記憶體裝置的至少一個記憶體中寫入所述經編碼資料, 其中所述記憶體控制器經由第二類型的電連接耦接至所述至少一個記憶體,所述第二類型的電連接具有比所述第一類型的電連接更小的阻抗。
- 如請求項17所述的由記憶體系統進行的方法,更包括: 藉由所述記憶體控制器經由所述第二類型的電連接自所述至少一個記憶體獲得指定資料; 藉由所述記憶體控制器中的所述ECC電路解碼所述指定資料以獲得經解碼指定資料,所述經解碼指定資料具有比所述指定資料更小的大小;以及 藉由所述記憶體控制器經由所述第一類型的電連接將所述經解碼資料發送至所述系統控制器。
- 如請求項17所述的由記憶體系統進行的方法,更包括: 藉由所述記憶體控制器經由所述第二類型的電連接自所述至少一個記憶體獲得指定資料; 回應於判定所述記憶體控制器中的所述ECC電路未能解碼所述指定資料,藉由所述記憶體控制器經由所述第一類型的電連接將所述指定資料發送至所述系統控制器;以及 藉由所述系統控制器中的第二ECC電路解碼所述指定資料,所述第二ECC電路具有比所述ECC電路更強的解碼能力。
- 如請求項19所述的由記憶體系統進行的方法,更包括: 回應於判定所述第二ECC電路未能解碼所述指定資料,藉由所述系統控制器將自所述至少一個記憶體讀取所述指定資料的軟位元的請求發送至所述記憶體控制器; 在未使用所述ECC電路來解碼所述指定資料的所述軟位元的情況下,藉由所述記憶體控制器將所述指定資料的所述軟位元發送至所述系統控制器;以及 藉由所述系統控制器中的所述第二ECC電路解碼所述指定資料的所述軟位元以獲得經解碼指定資料,所述經解碼指定資料具有比所述指定資料更小的大小。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/223,545 US11556420B2 (en) | 2021-04-06 | 2021-04-06 | Managing error correction coding in memory systems |
| US17/223,545 | 2021-04-06 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI775456B true TWI775456B (zh) | 2022-08-21 |
| TW202240391A TW202240391A (zh) | 2022-10-16 |
Family
ID=83450294
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110119308A TWI775456B (zh) | 2021-04-06 | 2021-05-27 | 記憶體系統、記憶體裝置以及記憶體系統執行的方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US11556420B2 (zh) |
| CN (1) | CN115185737B (zh) |
| TW (1) | TWI775456B (zh) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11361825B2 (en) * | 2019-12-18 | 2022-06-14 | Micron Technology, Inc. | Dynamic program erase targeting with bit error rate |
| CN116110473A (zh) * | 2021-11-10 | 2023-05-12 | 三星电子株式会社 | 存储器装置、存储器系统和操作存储器系统的方法 |
| KR20240002316A (ko) * | 2022-06-29 | 2024-01-05 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 |
| US20250165407A1 (en) * | 2023-11-22 | 2025-05-22 | Macronix International Co., Ltd. | Managing data security in storage devices |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012060857A1 (en) * | 2010-11-02 | 2012-05-10 | Micron Technology, Inc. | Copyback operations |
| TW201303718A (zh) * | 2011-05-31 | 2013-01-16 | Micron Technology Inc | 包含記憶體系統控制器之裝置及相關方法 |
| TW201911317A (zh) * | 2017-08-14 | 2019-03-16 | 日商東芝記憶體股份有限公司 | 半導體記憶裝置 |
| TW201947600A (zh) * | 2018-05-14 | 2019-12-16 | 慧榮科技股份有限公司 | 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統 |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
| WO2008086488A2 (en) * | 2007-01-10 | 2008-07-17 | Mobile Semiconductor Corporation | Adaptive memory system for enhancing the performance of an external computing device |
| US7934052B2 (en) | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
| JP5768100B2 (ja) * | 2013-09-10 | 2015-08-26 | 株式会社東芝 | メモリ装置、サーバ装置、及びメモリ制御方法 |
| US9753649B2 (en) * | 2014-10-27 | 2017-09-05 | Sandisk Technologies Llc | Tracking intermix of writes and un-map commands across power cycles |
| US20170147499A1 (en) * | 2015-11-25 | 2017-05-25 | Sandisk Technologies Llc | Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device |
| KR20170068681A (ko) * | 2015-12-09 | 2017-06-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| US9871518B2 (en) * | 2016-02-02 | 2018-01-16 | Mediatek Inc. | Memory interface circuit capable of controlling driving ability and associated control method |
| JP6992750B2 (ja) * | 2016-06-29 | 2022-01-13 | ソニーグループ株式会社 | メモリコントローラ、メモリシステムおよび情報処理システム |
| US10200059B2 (en) * | 2016-09-22 | 2019-02-05 | Apple Inc. | Digital to analog converter |
| US10146719B2 (en) * | 2017-03-24 | 2018-12-04 | Micron Technology, Inc. | Semiconductor layered device with data bus |
| KR102449346B1 (ko) * | 2017-12-12 | 2022-10-04 | 삼성전자주식회사 | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 |
| US11070234B2 (en) * | 2018-03-16 | 2021-07-20 | SK Hynix Inc. | Memory system with hybrid decoding scheme with information exchange and method of operating such memory system |
| US10747613B2 (en) * | 2018-09-07 | 2020-08-18 | Toshiba Memory Corporation | Pooled frontline ECC decoders in memory systems |
| US11016844B2 (en) * | 2019-03-15 | 2021-05-25 | Toshiba Memory Corporation | Error correction code structure |
| US11537464B2 (en) * | 2019-06-14 | 2022-12-27 | Micron Technology, Inc. | Host-based error correction |
| US11403172B2 (en) * | 2019-08-05 | 2022-08-02 | Cypress Semiconductor Corporation | Methods for error detection and correction and corresponding systems and devices for the same |
| JP7321851B2 (ja) * | 2019-09-09 | 2023-08-07 | キオクシア株式会社 | メモリシステムおよびガベッジコレクション制御方法 |
| KR20210074425A (ko) * | 2019-12-11 | 2021-06-22 | 삼성전자주식회사 | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 |
| US11442631B2 (en) * | 2019-12-26 | 2022-09-13 | Micron Technology, Inc. | Memory operations with consideration for wear leveling |
| US11500782B2 (en) * | 2020-12-18 | 2022-11-15 | Micron Technology, Inc. | Recovery of logical-to-physical table information for a memory device |
| US11481271B2 (en) * | 2021-03-16 | 2022-10-25 | Western Digital Technologies, Inc. | Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support |
-
2021
- 2021-04-06 US US17/223,545 patent/US11556420B2/en active Active
- 2021-05-27 TW TW110119308A patent/TWI775456B/zh active
- 2021-05-31 CN CN202110605883.9A patent/CN115185737B/zh active Active
-
2022
- 2022-09-30 US US17/957,597 patent/US11983124B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012060857A1 (en) * | 2010-11-02 | 2012-05-10 | Micron Technology, Inc. | Copyback operations |
| TW201303718A (zh) * | 2011-05-31 | 2013-01-16 | Micron Technology Inc | 包含記憶體系統控制器之裝置及相關方法 |
| TW201911317A (zh) * | 2017-08-14 | 2019-03-16 | 日商東芝記憶體股份有限公司 | 半導體記憶裝置 |
| TW201947600A (zh) * | 2018-05-14 | 2019-12-16 | 慧榮科技股份有限公司 | 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN115185737A (zh) | 2022-10-14 |
| US11556420B2 (en) | 2023-01-17 |
| TW202240391A (zh) | 2022-10-16 |
| US11983124B2 (en) | 2024-05-14 |
| US20220318090A1 (en) | 2022-10-06 |
| US20230026403A1 (en) | 2023-01-26 |
| CN115185737B (zh) | 2025-11-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI775456B (zh) | 記憶體系統、記憶體裝置以及記憶體系統執行的方法 | |
| US12066889B2 (en) | Storage device using host memory and operating method thereof | |
| US10069597B2 (en) | Aggregated metadata transfer at a data storage device | |
| US10496484B2 (en) | Methods and apparatus for error detection for data storage devices | |
| US10055164B2 (en) | Data storage at an access device | |
| JP6110953B2 (ja) | 階層化反復誤り訂正のための停止基準 | |
| US11182240B2 (en) | Techniques to improve error correction using an XOR rebuild scheme of multiple codewords and prevent miscorrection from read reference voltage shifts | |
| TW201702878A (zh) | 具有不同同位區的記憶體裝置 | |
| US20170288705A1 (en) | Shared memory with enhanced error correction | |
| US10009043B2 (en) | Technologies for providing efficient error correction with half product codes | |
| KR20200110624A (ko) | 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 | |
| US20220229725A1 (en) | Soft error detection and correction for data storage devices | |
| WO2017107107A1 (en) | Techniques to recover data in a network storage system | |
| US10572189B2 (en) | Method and decoder to adjust an error locator polynomial based on an error parity | |
| US11394403B1 (en) | Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices | |
| CN112084052A (zh) | 基于主机的错误校正 | |
| EP4462434A1 (en) | High throughput polar codeword decoding by decoding bch sub-code in polar code structure | |
| US20250150095A1 (en) | Apparatus and method for power reduction in a bit flipping decoder | |
| US10879938B2 (en) | Erasure coding to mitigate media defects for distributed die ECC | |
| US20250284584A1 (en) | User data block error detection and correction | |
| JP7559316B1 (ja) | メモリシステムの誤り訂正管理 | |
| US20250233601A1 (en) | Encoding metadata information in a codeword | |
| US12341530B1 (en) | Check node updates in bit flipping decoders | |
| JP2025186141A (ja) | データストレージシステムのためのエラー訂正の管理 | |
| CN114860623A (zh) | 存储器控制器以及伺服器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| GD4A | Issue of patent certificate for granted invention patent |