TWI740187B - 存取方法 - Google Patents

存取方法 Download PDF

Info

Publication number
TWI740187B
TWI740187B TW108128204A TW108128204A TWI740187B TW I740187 B TWI740187 B TW I740187B TW 108128204 A TW108128204 A TW 108128204A TW 108128204 A TW108128204 A TW 108128204A TW I740187 B TWI740187 B TW I740187B
Authority
TW
Taiwan
Prior art keywords
data
ssd controller
cyclic redundancy
redundancy check
check code
Prior art date
Application number
TW108128204A
Other languages
English (en)
Other versions
TW202032560A (zh
Inventor
張益壽
Original Assignee
慧榮科技股份有限公司
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
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW202032560A publication Critical patent/TW202032560A/zh
Application granted granted Critical
Publication of TWI740187B publication Critical patent/TWI740187B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本發明實施例提供一種存取方法,適用於記憶裝置,記憶裝置耦接於主機裝置,主機裝置用以提供資料,記憶裝置包括SSD控制器及揮發性記憶體,揮發性記憶體耦接於SSD控制器,且揮發性記憶體包括資料儲存區,存取方法包括:SSD控制器接收資料,接著SSD控制器根據資料,以產生對應的循環冗餘檢查碼,然後SSD控制器將資料與循環冗餘檢查碼依序儲存至資料儲存區。

Description

存取方法
本發明是有關於一種存取方法,且特別是一種對揮發性記憶體進行有效率的存取,以達到降低指令數量的存取方法。
一般而言,揮發性記憶體例如動態隨機存取記憶體(DRAM)提供主機裝置在將資料寫入至快閃記憶體之前作為暫存資料的記憶體暫存空間。然而,為了保證資料的正確性,需要在原來資料的基礎上額外增加循環冗餘檢查碼來檢查資料的正確性,或者額外增加錯誤更正碼來更正資料的錯誤。這些都大幅度地增加額外的資料量與存取揮發性記憶體的指令,導致DRAM的吞吐量大幅度地降低,而造成整體系統的效能下降。因此,如何提供一種在使用同樣數量的循環冗餘檢查碼與錯誤更正碼保護資料時,如何通過減少存取指令的數量而達到提昇DRAM的吞吐量,將是本案所要著重的問題與解決的重點。
有鑑於此,本發明實施例提供一種適用於記憶裝置的存取方法,記憶裝置耦接於主機裝置,主機裝置用以提供資料,記憶裝置包括SSD控制器 及揮發性記憶體,揮發性記憶體耦接於SSD控制器,且揮發性記憶體包括資料儲存區與檢查碼儲存區,存取方法包括:SSD控制器接收資料,接著SSD控制器根據資料,以產生對應的循環冗餘檢查碼,緊接著SSD控制器將資料儲存至資料儲存區,然後SSD控制器將循環冗餘檢查碼儲存至檢查碼儲存區。
在本發明的一實施例中,其中記憶裝置更包括循環冗餘檢查碼產生器,循環冗餘檢查碼產生器耦接於SSD控制器,在SSD控制器根據資料,以產生對應的循環冗餘檢查碼的步驟中,更包括:SSD控制器將資料,傳送至循環冗餘檢查碼產生器,以產生對應資料的循環冗餘檢查碼。
本發明實施例另提供一種適用於記憶裝置的存取方法,記憶裝置耦接於主機裝置,主機裝置用以提供資料,記憶裝置包括SSD控制器及揮發性記憶體,揮發性記憶體耦接於SSD控制器,且揮發性記憶體包括資料儲存區,存取方法包括:SSD控制器接收資料,接著SSD控制器根據資料,以產生對應的循環冗餘檢查碼,然後SSD控制器將資料與循環冗餘檢查碼依序儲存至資料儲存區。
在本發明的一實施例中,其中記憶裝置更包括循環冗餘檢查碼產生器,循環冗餘檢查碼產生器耦接於SSD控制器,在SSD控制器根據資料,以產生對應的循環冗餘檢查碼的步驟中,更包括:SSD控制器將資料,傳送至循環冗餘檢查碼產生器,以產生對應資料的循環冗餘檢查碼。
本發明實施例另提供一種適用於記憶裝置的存取方法,記憶裝置耦接於主機裝置,主機裝置用以提供資料,記憶裝置包括SSD控制器及揮發性記憶體,揮發性記憶體耦接於SSD控制器,且揮發性記憶體包括資料儲存區,存取方法包括:SSD控制器接收資料,且依預設大小將資料分割為多個 子資料;SSD控制器根根據資料,以產生對應的循環冗餘檢查碼,接著SSD控制器根據每一個子資料,以產生對應的子錯誤更正碼,緊接著SSD控制器輪流將每一個子資料及其對應的子錯誤更正碼儲存至資料儲存區,然後SSD控制器將資料所對應的循環冗餘檢查碼儲存至資料儲存區。
在本發明的一實施例中,其中記憶裝置更包括錯誤更正碼產生器,錯誤更正碼產生器耦接於SSD控制器,在SSD控制器根據每一個子資料,以產生對應的子錯誤更正碼的步驟中,更包括:SSD控制器將每一個子資料,傳送至錯誤更正碼產生器,以產生對應每一個子資料的子錯誤更正碼。
在本發明的一實施例中,其中記憶裝置更包括循環冗餘檢查碼產生器,循環冗餘檢查碼產生器耦接於SSD控制器,在SSD控制器根據資料,以產生對應的循環冗餘檢查碼的步驟中,更包括:SSD控制器將資料,傳送至循環冗餘檢查碼產生器,以產生對應資料的循環冗餘檢查碼。
本發明實施例另提供一種適用於記憶裝置的存取方法,記憶裝置耦接於主機裝置,主機裝置用以提供多筆資料,記憶裝置包括SSD控制器及揮發性記憶體,揮發性記憶體耦接於SSD控制器,且揮發性記憶體包括資料儲存區,存取方法包括:SSD控制器接收所述多筆資料,接著SSD控制器根據每一筆資料,以產生對應的循環冗餘檢查碼,緊接著SSD控制器根據所述多筆資料及其對應的多個循環冗餘檢查碼,以產生錯誤更正碼,接著SSD控制器將所述多筆資料及其對應的些循環冗餘檢查碼,交錯地儲存至資料儲存區,然後SSD控制器將錯誤更正碼儲存至資料儲存區。
在本發明的一實施例中,其中記憶裝置更包括循環冗餘檢查碼產生器,循環冗餘檢查碼產生器耦接於SSD控制器,在SSD控制器根據每一筆資料,以產生對應的循環冗餘檢查碼的步驟中,更包括:SSD控制器將每一筆 資料,傳送至循環冗餘檢查碼產生器,以產生對應每一筆資料的循環冗餘檢查碼。
在本發明的一實施例中,其中記憶裝置更包括錯誤更正碼產生器,錯誤更正碼產生器耦接於SSD控制器,在SSD控制器根據所述多筆資料及其對應的些循環冗餘檢查碼,以產生錯誤更正碼的步驟中,更包括:SSD控制器將每一筆資料及其對應的每一個循環冗餘檢查碼,傳送至錯誤更正碼產生器,以產生對應每一筆資料及其對應的每一個循環冗餘檢查碼的錯誤更正碼。
本發明實施例所提供的存取方法,在存取揮發性記憶體時,藉由SSD控制器將接收的資料及對應的循環冗餘檢查碼/錯誤更正碼依序地或交錯地儲存至資料儲存區,以避免頻繁地更換存取的列位址,而達到減少換列存取時所使用的指令,從而提昇揮發性記憶體的吞吐量與資料存取的效率,並提昇總系統吞吐量的效能。
為讓本發明之上述和其他目的、特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式,作詳細說明如下。
1:存取方法的系統架構
10:主機裝置
20:記憶裝置
210:SSD控制器
220:揮發性記憶體
221:資料儲存區
222:檢查碼儲存區
30:非揮發性記憶體
S110~S450:流程步驟
圖1是依照本發明實施例所繪示之存取方法的系統架構的示意圖。
圖2是依照本發明實施例所繪示之基於兩個起始位址進行存取的流程示意圖。
圖3是本發明實施例存取方法的示意圖。
圖4是依照本發明存取方法的第一種實作方式的實施例的流程圖。
圖5是本發明存取方法的第一種實作方式的實施例的示意圖。
圖6是依照本發明存取方法的第二種實作方式的實施例的流程圖。
圖7是依照本發明存取方法的第二種實作方式的實施例的示意圖。
圖8是依照本發明存取方法的第三種實作方式的實施例的流程圖。
圖9是依照本發明存取方法的第三種實作方式的實施例的示意圖。
本發明實施例所提供之存取方法,其可應用於諸如桌上型電腦、筆記型電腦、工業電腦或其他內部使用到揮發性記憶體的電子產品。揮發性記憶體例如可以是動態隨機存取記憶體(DRAM)或同步動態隨機存取記憶體(SDRAM)。本發明實施例能夠將揮發性記憶體作為主機裝置在將資料寫入快閃記憶體(FLASH)之前的暫存空間。
請參閱圖1,圖1是依照本發明實施例所繪示之存取方法的系統架構1的示意圖,系統架構1包括主機裝置10、記憶裝置20與非揮發性記憶體30。記憶裝置20耦接於主機裝置10,且記憶裝置20包括SSD(Solid State Drive)控制器210及揮發性記憶體220,而揮發性記憶體220包括資料儲存區221與檢查碼儲存區222。另外,系統架構1更包括檢查碼產生器(未繪示),其耦接於SSD控制器210。更進一步地說,SSD控制器210可將資料,傳送至檢查碼產生器,以產生對應資料的檢查碼。此外,系統架構1還可包括更正碼產生器(未繪示),其耦接於SSD控制器210。更進一步地說,SSD控制器210可將每一個資料,傳送至更正碼產生器,以產生對應每一個資料的更正碼;SSD控制器210可將每一筆資料及其對應的每一個檢查碼,傳送至更正碼產生器,以產生對應每一筆資料及其對應的每一個檢查碼的更正碼。此外,主機裝置10 用以提供多筆資料封包給揮發性記憶體220,作為主機裝置10將資料封包寫入至非揮發性記憶體30之前的暫存空間。主機裝置10可以是電腦中的中央處理器(CPU),記憶裝置20可以是電腦中的儲存裝置,SSD控制器210可以是儲存裝置中的微處理器或特殊應用積體電路,揮發性記憶體220可以是DRAM,而非揮發性記憶體30可以是快閃記憶體。一般而言,揮發性記憶體220是由MxN個記憶體單元組成的陣列,而每一個記憶體單元儲存至少一個位元的資訊。舉例來說,揮發性記憶體220的資料儲存區221具有M個列與N個行,且揮發性記憶體220的檢查碼儲存區222具有S個列與N個行,其中M、S與N皆為大於等於2的正整數。更進一步地說,資料儲存區221儲存空間的範圍為第1列至第M列,而檢查碼儲存區222儲存空間的範圍為第M+1列至第M+S列。
本發明實施例可以根據不同的需求而有不同的存取方法,初步可以分為兩類,第一類的存取方法是基於兩個起始位址分別對資料與循環冗餘檢查碼(CRC)/錯誤更正碼(ECC)進行存取。更進一步地說,在寫入資料至DRAM時,同時寫入CRC,之後可利用CRC來檢查資料的正確性。資料與CRC可以是分別存放在DRAM內不同的儲存空間(亦即根據不同的起訖位址所劃分的儲存空間),使這些資料與CRC是分開且交替地存放在DRAM的兩個預定的儲存空間。
圖2是依照本發明實施例所繪示之基於兩個起始位址進行存取的流程示意圖。本發明實施例的存取方法包括:在步驟S110中,SSD控制器210接收主機裝置10所提供的資料(例如D1)。接著,在步驟S120中,SSD控制器210產生接收的資料所對應的CRC。SSD控制器210將接收的資料傳送至 內建的CRC產生器(未繪示)以產生對應的CRC(例如CRC1)。然後,在步驟S130中,SSD控制器210將接收的資料儲存至資料儲存區221。在步驟S140中,SSD控制器210將CRC儲存至檢查碼儲存區222,其中資料儲存區221與檢查碼儲存區222位於DRAM的不同列位址(Row address)中。
圖3是本發明實施例存取方法的示意圖。本發明實施例存取方法執行4次後,SSD控制器210分別接收4筆資料,標號為D1~D4,並且將D1~D4依序儲存至資料儲存區221。另外,內建的CRC產生器根據4筆資料分別產生了4個CRC,標號為CRC1~CRC4,並且SSD控制器210將CRC1~CRC4依序儲存至檢查碼儲存區222。
然而,本發明實施例存取方法隱含一個缺點,即資料存取的效率低落。當SSD控制器210存取相同記憶體區塊(Bank)中不同列位址(Row address)的資料時,SSD控制器210需先執行PRECHARGE指令(以下簡稱PREA指令),然後才能執行ACTIVE指令(以下簡稱ACT指令),接著才能執行WRITE指令(以下簡稱WR指令)或READ指令(以下簡稱RD指令),以對Bank的某一列與某一行進行存取,如此才能滿足DRAM的操作規範。以上所提到的PREA指令至少攜帶著Bank的位址參數,ACT指令至少攜帶著Bank的位址參數與列位址參數,而WR指令或者RD指令則至少是攜帶著行位址參數。
假設資料儲存區221的資料儲存量為64KB(Kilobyte),每一個列的資料長度為1024B(Byte),一筆資料的大小為512B,則資料儲存區221可儲存128筆資料。檢查碼儲存區222的資料儲存量為4KB,一個CRC的大小為32B,則檢查碼儲存區222可儲存128個CRC。由於一個列位址的資料儲存量為1KB, 當寫入的資料量超過1KB時,就需要執行PREA指令以進行列位址的更換。由於資料與CRC為交錯地儲存至資料儲存區221以及檢查碼儲存區222,也就是接收的資料儲存至資料儲存區221之後,SSD控制器210通常得執行PREA指令,才能將CRC儲存至檢查碼儲存區222,且在CRC儲存至檢查碼儲存區222之後,SSD控制器210通常得執行PREA指令,才能將下一筆接收的資料儲存至資料儲存區221,以此類推,這將造成DRAM資料存取的效率低落。
總而言之,雖然將資料封包與檢查碼封包分開儲存可以很輕易的歸類,也可以很輕易的計算出存取的位址,但每次要換列時就需要使用PREA指令與ACT指令進行存取,結果增加額外的指令數量,使得揮發性記憶體220的吞吐量大幅度地降低以及資料存取的效率低落。
為了避免第一類的存取方法的缺點,本發明更揭露第二類的存取方法,在第二類的存取方法中是SSD控制器210基於相同起始位址對資料與CRC/ECC進行存取。更進一步地說,第二類存取方法又可以細分為三種實作方式。第一種實作方式是資料以及CRC相鄰地儲存至DRAM。第二種實作方式是N筆資料以及N個ECC相鄰地儲存至DRAM,N例如是8,再儲存一筆對應至此N筆資料以及N個ECC的CRC。第三種實作方式是N筆資料以及N個CRC相鄰地儲存至DRAM,N例如是8,再儲存一筆ECC來保護此N筆資料以及N個CRC。
圖4是依照本發明存取方法的第一種實作方式的實施例的流程圖。在步驟中S210,SSD控制器210接收主機裝置10所提供的資料(例如D1)。接著,在步驟中S220,SSD控制器210產生接收的資料所對應的CRC。SSD控制器210將接收的資料傳送至內建的CRC產生器以產生對應的CRC(例如 資料D1所對應的CRC1)。然後,在步驟中S230,SSD控制器210將接收的資料以及對應的CRC依序儲存至資料儲存區221,更進一步來說,SSD控制器210將CRC1接續於資料D1後儲存至資料儲存區221。接著,SSD控制器210將CRC2接續於資料D2後儲存至資料儲存區221,其餘依此類推。其中,資料以及對應的CRC相鄰地儲存於資料儲存區221,其中,先後二筆資料,例如資料D1與D2的儲存最多僅會執行一次PREA指令;先後二筆CRC,例如CRC1與CRC2的儲存最多僅會執行一次PREA指令。
圖5是本發明存取方法的第一種實作方式的實施例的示意圖。本發明存取方法的第一種實作方式的實施例共計執行4次,SSD控制器210分別接收4筆資料,標號為D1~D4,並通過內建的CRC產生器根據4筆資料分別產生了4個CRC,標號為CRC1~CRC4,SSD控制器210將資料D1與CRC1先儲存至資料儲存區221,接著,將資料D2與CRC2再儲存至資料儲存區221,以此類推,直到將資料D3及CRC3與資料D4及CRC4儲存至資料儲存區221為止。
假設資料儲存區221的資料儲存量為17KB,每一個列的資料長度為1KB,一筆資料的大小為512B,一個CRC的大小為32B,因此,資料儲存區221可儲存32筆資料以及32個CRC。由於一個列位址的資料儲存量為1KB,資料D1與CRC1的大小僅為544B,因此,SSD控制器210將資料D1與CRC1儲存至資料儲存區221並不需要執行PREA指令以進行列位址的更換,當SSD控制器210將資料D2儲存至資料儲存區221時才需執行一次PREA指令,另外,SSD控制器210將CRC2、資料D3以及CRC3儲存至資料儲存區221並不需要執行PREA指令。由上述中可知,在資料以及對應的CRC儲存至資料儲存 區221的過程中,PREA指令的執行次數可有效地降低,因此,DRAM資料存取的效率則可以提升。
圖6是依照本發明存取方法的第二種實作方式的實施例的流程圖。在步驟S310中,SSD控制器210接收主機裝置10所提供的資料(例如D1),且依預設大小將資料分割為多個子資料。假設資料D1的大小為512B,預設大小為32B,則資料D1可分割成16個子資料,標號為SD1~SD16。
在步驟S320,SSD控制器210對資料產生對應的CRC,例如,SSD控制器210產生對應資料D1的CRC1。
在步驟S330,SSD控制器210對每一子資料產生對應的子ECC。SSD控制器210通過內建的錯誤更正碼產生器產生對應至子資料SD1~SD16的子錯誤更正碼(子ECC),標號為SECC1~SECC16,每一子ECC的大小例如為2B,子ECC可用以更正子資料SD的錯誤位元,子ECC的錯誤位元更正能力例如是1 bit,這表示子ECC1可用以修正子資料SD1中的1個錯誤位元。
在步驟S340,SSD控制器210輪流將子資料SD以及對應的子ECC儲存至資料儲存區221。例如:SSD控制器210先將子資料SD1以及對應的SECC1儲存至資料儲存區221,之後,將子資料SD2以及對應的SECC2儲存至資料儲存區221,之後,將子資料SD3以及對應的SECC3儲存至資料儲存區221,以此類推,直到將子資料SD16以及對應的SECC16儲存至資料儲存區221為止。
在步驟S350,SSD控制器210將資料所對應的CRC儲存至資料儲存區221。SSD控制器210將資料D1所對應的CRC1儲存至資料儲存區221,CRC1乃儲存至SECC16的後方。另外,為了確保CRC1的正確性,SSD控制器210 可以再產生對應CRC1的ECC1。另外,先後二筆資料,例如資料D1與D2的儲存最多僅會執行一次PREA指令;先後二筆CRC,例如CRC1與CRC2的儲存最多僅會執行一次PREA指令。
假設每一個列的資料長度為1KB,子資料SD的大小為32B,子SECC的大小為2B,CRC的大小為32B,ECC的大小為2B,因此,資料D1大小雖然只有512B,SSD控制器210儲存總共578B(=34*16+32+2)的資料量至資料儲存區221。當SSD控制器210將資料D1儲存至資料儲存區221之後,SSD控制器210可將資料D2儲存至資料儲存區221,或者是將子資料SD17~SD32、SECC17~SECC32、CRC2以及ECC2儲存至資料儲存區221,如圖7所示,圖7是依照本發明存取方法的第二種實作方式的實施例的示意圖。由於儲存的資料量為578B,因此,SSD控制器210將資料D1(包含SECC、CRC1以及ECC1)儲存至資料儲存區221並不需要執行PREA,當SSD控制器210將資料D2儲存至資料儲存區221時才需執行一次PREA指令。另外,SSD控制器210將CRC2、ECC2、資料D3(未繪示)、CRC3(未繪示)以及ECC3(未繪示)儲存至資料儲存區221並不需要執行PREA指令。由上述中可知,在子資料SD、子SECC、CRC以及ECC儲存至資料儲存區221的過程中,PREA指令的執行次數可有效地降低,因此,DRAM資料存取的效率則可以提升。
圖8是依照本發明存取方法的第三種實作方式的實施例的流程圖。在步驟S410中,SSD控制器210接收主機裝置10所提供的多筆資料,例如資料D1~D16)。在步驟S420中,SSD控制器210對每一接收的資料產生對應的CRC,例如:CRC1~CRC16。在步驟S430中,SSD控制器210依據接收的多筆資料以及對應的多個CRC產生ECC,例如:ECC1。在步驟S440中,SSD 控制器210將接收的多筆資料以及對應的多個CRC交錯地儲存至資料儲存區221。在步驟S450中,SSD控制器210將ECC儲存至資料儲存區221,如圖9所示,圖9是依照本發明存取方法的第三種實作方式的實施例的示意圖。其中,先後二筆資料,例如資料D1與D2,的儲存最多僅會執行一次PREA指令;先後二筆CRC,例如CRC1與CRC2,的儲存最多僅會執行一次PREA指令。
假設資料儲存區221的資料儲存量為18KB,每一個列的資料長度為1KB,一筆資料的大小為512B,一個CRC的大小為32B。由於一個列位址的資料儲存量為1KB,資料D1加上CRC1的大小僅為544B,因此,SSD控制器210將資料D1與CRC1儲存至資料儲存區221並不需要執行PREA指令以進行列位址的更換,當SSD控制器210將資料D2儲存至資料儲存區221時才需執行一次PREA指令,另外,SSD控制器210將CRC2、資料D3以及CRC3儲存至資料儲存區221並不需要執行PREA指令。由上述中可知,在資料以及對應的CRC儲存至資料儲存區221的過程中,PREA指令的執行次數可有效地降低,因此,DRAM資料存取的效率則可以提升。
綜上所述,本發明實施例所提供的存取方法,在存取揮發性記憶體的期間,藉由SSD控制器將接收的資料及對應的循環冗餘檢查碼/錯誤更正碼依序地或交錯地儲存至資料儲存區,以避免大量且頻繁地更換存取的列位址,而達到大幅度地減少換列存取時所使用的指令數量,從而大幅度地提昇揮發性記憶體的吞吐量與資料存取的效率,並提昇總系統吞吐量的效能。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界 定者為準。
S210~S230:流程步驟

Claims (8)

  1. 一種存取方法,適用於一記憶裝置,該記憶裝置耦接於一主機裝置,該主機裝置用以提供一資料,該記憶裝置包括一SSD控制器及一揮發性記憶體,該揮發性記憶體耦接於該SSD控制器,且該揮發性記憶體包括一資料儲存區,該存取方法包括:該SSD控制器接收該資料;該SSD控制器根據該資料,以產生對應的一循環冗餘檢查碼;以及該SSD控制器將該循環冗餘檢查碼接續於該資料後儲存至該資料儲存區。
  2. 如申請專利範圍第1項所述之存取方法,其中該記憶裝置更包括一循環冗餘檢查碼產生器,該循環冗餘檢查碼產生器耦接於該SSD控制器,在該SSD控制器根據該資料,以產生對應的該循環冗餘檢查碼的步驟中,更包括:該SSD控制器將該資料,傳送至該循環冗餘檢查碼產生器,以產生對應該資料的該循環冗餘檢查碼。
  3. 一種存取方法,適用於一記憶裝置,該記憶裝置耦接於一主機裝置,該主機裝置用以提供一資料,該記憶裝置包括一SSD控制器及一揮發性記憶體,該揮發性記憶體耦接於該SSD控制器,且該揮發性記憶體包括一資料儲存區,該存取方法包括:該SSD控制器接收該資料,且依預設大小將該資料分割為多個子資料;該SSD控制器根據該資料,以產生對應的一循環冗餘檢查碼;該SSD控制器根據每一該些子資料,以產生對應的一子錯誤更正碼; 該SSD控制器輪流將每一該些子資料及其對應的該子錯誤更正碼儲存至該資料儲存區;以及該SSD控制器將該資料所對應的該循環冗餘檢查碼儲存至該資料儲存區。
  4. 如申請專利範圍第3項所述之存取方法,其中該記憶裝置更包括一錯誤更正碼產生器,該錯誤更正碼產生器耦接於該SSD控制器,在該SSD控制器根據每一該些子資料,以產生對應的該子錯誤更正碼的步驟中,更包括:該SSD控制器將每一該些子資料,傳送至該錯誤更正碼產生器,以產生對應每一該些子資料的該子錯誤更正碼。
  5. 如申請專利範圍第3項所述之存取方法,其中該記憶裝置更包括一循環冗餘檢查碼產生器,該循環冗餘檢查碼產生器耦接於該SSD控制器,在該SSD控制器根據該資料,以產生對應的該循環冗餘檢查碼的步驟中,更包括:該SSD控制器將該資料,傳送至該循環冗餘檢查碼產生器,以產生對應該資料的該循環冗餘檢查碼。
  6. 一種存取方法,適用於一記憶裝置,該記憶裝置耦接於一主機裝置,該主機裝置用以提供多筆資料,該記憶裝置包括一SSD控制器及一揮發性記憶體,該揮發性記憶體耦接於該SSD控制器,且該揮發性記憶體包括一資料儲存區,該存取方法包括:該SSD控制器接收該些筆資料;該SSD控制器根據每一該些筆資料,以產生對應的一循環冗餘檢查碼; 該SSD控制器根據該些筆資料及其對應的多個循環冗餘檢查碼,以產生一錯誤更正碼;該SSD控制器將該些筆資料及其對應的該些循環冗餘檢查碼,交錯地儲存至該資料儲存區;以及該SSD控制器將該錯誤更正碼儲存至該資料儲存區。
  7. 如申請專利範圍第6項所述之存取方法,其中該記憶裝置更包括一循環冗餘檢查碼產生器,該循環冗餘檢查碼產生器耦接於該SSD控制器,在該SSD控制器根據每一該些筆資料,以產生對應的該循環冗餘檢查碼的步驟中,更包括:該SSD控制器將每一該些筆資料,傳送至該循環冗餘檢查碼產生器,以產生對應每一該些筆資料的該循環冗餘檢查碼。
  8. 如申請專利範圍第6項所述之存取方法,其中該記憶裝置更包括一錯誤更正碼產生器,該錯誤更正碼產生器耦接於該SSD控制器,在該SSD控制器根據該些筆資料及其對應的該些循環冗餘檢查碼,以產生該錯誤更正碼的步驟中,更包括:該SSD控制器將每一該些筆資料及其對應的每一該些循環冗餘檢查碼,傳送至該錯誤更正碼產生器,以產生對應每一該些筆資料及其對應的每一該些循環冗餘檢查碼的該錯誤更正碼。
TW108128204A 2019-02-20 2019-08-08 存取方法 TWI740187B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962808273P 2019-02-20 2019-02-20
US62/808,273 2019-02-20

Publications (2)

Publication Number Publication Date
TW202032560A TW202032560A (zh) 2020-09-01
TWI740187B true TWI740187B (zh) 2021-09-21

Family

ID=72042216

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108128204A TWI740187B (zh) 2019-02-20 2019-08-08 存取方法

Country Status (3)

Country Link
US (1) US11360853B2 (zh)
CN (1) CN111597126B (zh)
TW (1) TWI740187B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180039425A1 (en) * 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
JP2009087485A (ja) 2007-10-01 2009-04-23 Elpida Memory Inc 半導体装置
KR100857252B1 (ko) * 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
CN101908376B (zh) * 2009-06-04 2014-05-21 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
US9069687B2 (en) * 2010-01-29 2015-06-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory read-channel with selective transmission of error correction data
US20120185749A1 (en) * 2011-01-14 2012-07-19 Hitachi, Ltd. Storage apparatus and response time control method
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US20130343131A1 (en) * 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
KR101990972B1 (ko) * 2012-10-04 2019-06-19 삼성전자 주식회사 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
KR102146037B1 (ko) * 2013-11-14 2020-08-19 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102108386B1 (ko) * 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US20150349805A1 (en) * 2014-05-28 2015-12-03 Skymedi Corporation Method of Handling Error Correcting Code in Non-volatile Memory and Non-volatile Storage Device Using the Same
KR102473209B1 (ko) * 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10372534B2 (en) * 2016-09-20 2019-08-06 Samsung Electronics Co., Ltd. Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device
KR20190004094A (ko) * 2017-07-03 2019-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180039425A1 (en) * 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness

Also Published As

Publication number Publication date
TW202032560A (zh) 2020-09-01
CN111597126B (zh) 2023-09-12
US20200264949A1 (en) 2020-08-20
CN111597126A (zh) 2020-08-28
US11360853B2 (en) 2022-06-14

Similar Documents

Publication Publication Date Title
KR101684045B1 (ko) 로컬 에러 검출 및 글로벌 에러 정정
JP5540969B2 (ja) 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
US8185800B2 (en) System for error control coding for memories of different types and associated methods
JP5132687B2 (ja) メモリにおけるキャッシュを利用した誤り検出及び訂正方法及び装置
US8869007B2 (en) Three dimensional (3D) memory device sparing
US20140089561A1 (en) Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
CN103137215B (zh) 向存储器提供低延时错误纠正码能力
US20120079346A1 (en) Simulated error causing apparatus
US11928025B2 (en) Memory device protection
US11726665B1 (en) Memory extension with error correction
US20130212449A1 (en) Self-repairing memory
Kwon et al. Understanding ddr4 in pursuit of in-dram ecc
US10756764B2 (en) Memory system and control method
US11030040B2 (en) Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system
WO2015016877A1 (en) Memory unit
TWI740187B (zh) 存取方法
JP7157516B2 (ja) 階層デコーダを使用したエラー訂正
US11928027B1 (en) System and method for error checking and correction with metadata storage in a memory controller
CN114333968A (zh) 存储器的控制方法、存储器控制器及电子装置
Alam et al. COMET: On-die and In-controller Collaborative Memory ECC Technique for Safer and Stronger Correction of DRAM Errors
US9160371B2 (en) Memory controller, storage device and memory control method
WO2023202592A1 (zh) 数据写入方法以及处理系统
TWI707354B (zh) 錯誤更正碼記憶體裝置和碼字存取方法
US20240126441A1 (en) Controller architecture for reliability, availability, serviceability access
WO2023003902A2 (en) Method and apparatus for on-die and in-controller collaborative memory error correction