TWI419169B - 用於快閃記憶體的資料存取方法及其儲存系統與控制器 - Google Patents
用於快閃記憶體的資料存取方法及其儲存系統與控制器 Download PDFInfo
- Publication number
- TWI419169B TWI419169B TW098112018A TW98112018A TWI419169B TW I419169 B TWI419169 B TW I419169B TW 098112018 A TW098112018 A TW 098112018A TW 98112018 A TW98112018 A TW 98112018A TW I419169 B TWI419169 B TW I419169B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- sub
- bit check
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明是有關於一種用於快閃記憶體的資料存取方法及使用此方法的快閃記憶體儲存系統與快閃記憶體控制器。
數位相機、手機與MP3在這幾年來的成長十分迅速,使得消費者對數位內容的儲存需求也急速增加。由於快閃記憶體(Flash Memory)具有資料非揮發性、省電、體積小與無機械結構等的特性,適合使用者隨身攜帶作為數位檔案傳遞與交換的儲存媒體。固態硬碟(Solid State Drive,SSD)就是以快閃記憶體作為儲存媒體的一個例子,並且已廣泛使用於電腦主機系統中作為主硬碟。
在使用快閃記憶體作為儲存媒體的快閃記憶體儲存系統中進行資料存取時,快閃記憶體儲存系統會藉由一錯誤校正電路來執行一錯誤校正程序來驗證所存取的資料是否正確。具體來說,當使用者欲寫入資料至快閃記憶體儲存系統時,系統會為此資料產生一錯誤校正碼並且將欲寫入的資料與所產生的錯誤校正碼寫入至快閃記憶體中。之後,當使用者欲讀取此資料時,系統會從快閃記憶體中讀取此資料及其錯誤校正碼並且依據所讀取的錯誤校正碼檢查與校正所讀取的資料,由此確保所讀取之資料的正確性。特別是,錯誤校正電路與錯誤校正碼會依據不同的校正能力而有所不同。也就是說,較低階的錯誤校正電路與錯誤校正碼僅能檢查與校正較少的錯誤位元,而較高階的錯誤校正電路與錯誤校正碼可檢查與校正較多的錯誤位元,其中儲存較高階的錯誤校正碼所需的儲存空間會大於儲存較低階的錯誤校正碼所需的儲存空間。
在快閃記憶體儲存系統的設計上,一般來說,快閃記憶體儲存系統的快閃記憶體包括多個實體區塊(physical block),並且每一實體區塊具有多個頁面(page),而資料是以頁面為單位寫入至快閃記憶體中。每一頁面是由資料位元區與冗餘位元區所組成,資料位元區用以儲存欲寫入的資料,而冗餘位元區用以儲存此頁面相關的控制資訊與錯誤校正碼(Error Correction Code,ECC)。例如,當頁面是以1個扇區(即,512位元組)來配置時,此頁面的資料位元區會以512個位元組來配置且冗餘位元區會以16個位元組來配置,其中在冗餘位元區中的6個位元組是用以儲存此頁面的控制資訊而10個位元組是用以儲存用於此頁面的錯誤校正碼,也就是說10個位元組即足夠儲存對應512個位元組之資料的錯誤校正碼。
隨著快閃記憶體技術的發展,每一頁面的容量不斷的增加。例如,目前已發展出1個頁面具有4個扇區(即,2048位元組)的快閃記憶體。隨著1個頁面中可儲存之位元組的數目增加,因此用於此頁面之錯誤校正碼的校正能力亦需提升,方能有效的確保頁面中之資料的正確性。因此,在以2048位元組來配置資料位元區的頁面中,冗餘位元區會以61位元組來配置,其中8位元組用以儲存控制資訊而53位元組用以儲存對應2048位元組之資料的錯誤校正碼。
一般來說,電腦系統是以扇區為單元來存取資料,因此在快閃記憶體的頁面是由4個扇區所組成的快閃記憶體儲存系統的例子中,由於頁面中的錯誤校正碼是依據4個扇區的資料來產生,所以既使電腦系統僅讀取此頁面中的1個扇區的資料時,快閃記憶體儲存系統仍須讀取此頁面中完整的資料(即,4個扇區內的資料)並且以其對應的錯誤校正碼來執行錯誤校正程序。基此,在電腦系統讀取少量資料的例子中,此種存取方式將會嚴重影響快閃記憶體儲存系統的存取速度。
本發明提供一種資料存取方法,其能夠有效地提升在快閃記憶體中讀取資料的速度。
本發明提供一種快閃記憶體控制器,其能夠有效地提升在快閃記憶體中讀取資料的速度。
本發明提供一種快閃記憶體儲存系統,其能夠有效地提升在快閃記憶體中讀取資料的速度。
本發明提出一種資料存取方法,用於在一快閃記憶體中存取一資料。此資料存取方法包括從一主機系統中接收資料,其中所接收的資料包括多個子資料。此資料存取方法也包括為所接收的資料產生一錯誤校正碼(Error Correction Code,ECC),並且將所接收的資料和所產生的錯誤校正碼寫入至快閃記憶體中。並且,此資料存取方法亦包括為每一子資料產生對應的一位元檢查碼,以及將所產生的位元檢查碼寫入至快閃記憶體中。
在本發明之一實施例中,上述之資料存取方法更包括建立一位元檢查碼表並且在此位元檢查碼表中記錄所產生的位元檢查碼,其中將所產生的位元檢查碼寫入快閃記憶體中的步驟包括將此位元檢查碼表寫入至快閃記憶體中。
在本發明之一實施例中,上述之資料存取方法更包括建立一位元檢查碼對映表以記錄位元檢查碼表中位元檢查碼和子資料之間的對映關係。
在本發明之一實施例中,上述之資料存取方法更包括從快閃記憶體中載入上述之位元檢查碼表至一緩衝記憶體中,並且從此緩衝記憶體中讀取對應子資料的位元檢查碼。
在本發明之一實施例中,上述之資料存取方法更包括從快閃記憶體中讀取子資料並且從快閃記憶體中讀取對應所讀取之子資料的位元檢查碼。此資料存取方法亦包括依據所讀取的子資料的位元檢查碼判斷所讀取的子資料是否存有錯誤,其中當所讀取的子資料無存有錯誤時將所讀取的子資料傳送給主機系統。
在本發明之一實施例中,當所讀取的子資料存有錯誤時,則此資料存取方法更包括:從快閃記憶體中讀取完整資料及其對應的錯誤校正碼,依據所讀取的錯誤校正碼來校正所讀取的資料,從所校正的資料之中擷取已校正的子資料以及將已校正的子資料傳送給主機系統。
在本發明之一實施例中,上述之每一位元檢查碼為一錯誤偵測碼(Error Detection Code,EDC)或一循環冗餘檢查碼(Cyclic Redundancy Check,CRC)。
在本發明之一實施例中,上述之每一子資料的大小為上述主機系統的一最小存取單位。
本發明提出一種快閃記憶體控制器,用以在一快閃記憶體中存取一資料,此快閃記憶體控制器包括微處理器單元以及耦接至此微處理器單元的主機介面單元、快閃記憶體介面單元、記憶體操作單元、錯誤校正單元與位元檢查單元。主機介面單元用以連接一主機系統並從主機系統中接收資料,其中所接收的資料包括多個子資料。快閃記憶體介面單元並且用以連接快閃記憶體。錯誤校正單元用以為所接收的資料產生一錯誤校正碼,其中記憶體操作單元會將所接收的資料和所產生的錯誤校正碼寫入至快閃記憶體中。位元檢查單元用以為每一子資料產生一位元檢查碼,其中記憶體操作單元會將所產生的位元檢查碼寫入至快閃記憶體中。
在本發明之一實施例中,上述之記憶體操作單元更用以建立一位元檢查碼表,其中上述位元檢查碼是記錄在此位元檢查碼表中。
在本發明之一實施例中,上述之記憶體操作單元更用以建立一位元檢查碼對映表以記錄位元檢查碼表中位元檢查碼和子資料之間的對映關係。
在本發明之一實施例中,上述之記憶體操作單元更用以從快閃記憶體中載入位元檢查碼表至一緩衝記憶體中,並且從此緩衝記憶體中讀取對應子資料的位元檢查碼。
在本發明之一實施例中,上述之記憶體操作單元更用以從快閃記憶體中讀取上述子資料,並且從快閃記憶體中讀取對應所讀取之子資料的位元檢查碼,其中位元檢查單元會依據所讀取的子資料的位元檢查碼判斷所讀取的子資料是否存有錯誤,並且當所讀取的子資料無存有錯誤時,記憶體操作單元會將所讀取的子資料傳送給該主機系統。
在本發明之一實施例中,當所讀取的子資料存有錯誤時,則記憶體操作單元會從快閃記憶體中讀取完整資料與其對應的錯誤校正碼,並且錯誤校正單元會依據所讀取的錯誤校正碼來校正所讀取的完整資料,其中記憶體操作單元會從所校正的資料之中擷取已校正的子資料,並且將已校正的子資料傳送給主機系統。
在本發明之一實施例中,上述之位元檢查單元為一錯誤偵測電路並且每一位元檢查碼為一錯誤偵測碼。
在本發明之一實施例中,上述之位元檢查單元為一循環冗餘檢查電路並且每一位元檢查碼為一循環冗餘檢查碼。
本發明提出一種快閃記憶體儲存系統,其包括快閃記憶體與耦接至此快閃記憶體的快閃記憶體控制器。快閃記憶體控制器用以從一主機系統中接收具有多個子資料的一資料,快閃記憶體控制器會為所接收的資料產生一錯誤校正碼,並且將所接收的資料和所產生的錯誤校正碼寫入至快閃記憶體中。此外,快閃記憶體控制器會為每一子資料產生一位元檢查碼,並且將所產生的位元檢查碼寫入至快閃記憶體中。
在本發明之一實施例中,上述之快閃記憶體更包括一位元檢查碼表,其中所產生的位元檢查碼是記錄在此位元檢查碼表中。
在本發明之一實施例中,上述之快閃記憶體更包括一位元檢查碼對映表以記錄位元檢查碼表中位元檢查碼和子資料之間的對映關係。
在本發明之一實施例中,上述之快閃記憶體儲存系統,更包括一緩衝記憶體,其中快閃記憶體控制器更用以從快閃記憶體中載入上述之位元檢查碼表至此緩衝記憶體中,並且從此緩衝記憶體中讀取對應子資料的位元檢查碼。
在本發明之一實施例中,上述之快閃記憶體控制器更用以從快閃記憶體中讀取上述子資料,並且從快閃記憶體中讀取對應所讀取之子資料的位元檢查碼,其中快閃記憶體控制器會依據所讀取的子資料的位元檢查碼判斷所讀取的子資料是否存有錯誤,並且當所讀取的子資料無存有錯誤時,則快閃記憶體控制器會將所讀取的子資料傳送給主機系統。
在本發明之一實施例中,當所讀取的子資料存有錯誤時,則快閃記憶體控制器會從快閃記憶體中讀取完整資料與其對應的錯誤校正碼,並且依據所讀取的錯誤校正碼來校正所讀取的資料,其中快閃記憶體控制器會從所校正的資料之中擷取已校正的子資料,並且將已校正的子資料傳送給主機系統。
在本發明之一實施例中,上述之每一位元檢查碼為一錯誤偵測碼或一循環冗餘檢查碼。
基於上述,本發明能夠在主機系統所欲讀取少於一個頁面的小資料時,僅需針對欲讀取的小資料檢查是否存取錯誤位元而不需讀取整個頁面中的資料及其錯誤校正碼,由此提升資料存取的速度。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1是根據本發明一範例實施例所繪示的快閃記憶體儲存系統的概要方塊圖。
請參照圖1,通常快閃記憶體儲存系統100是與主機系統200一起使用,以使主機系統200可將資料寫入至快閃記憶體儲存系統100或從快閃記憶體儲存系統100中讀取資料。在本範例實施例中,快閃記憶體儲存系統100為固態硬碟(Solid State Drive,SSD)。但必須瞭解的是,在本發明另一實施例中快閃記憶體儲存系統100亦可以是記憶卡或隨身碟。
快閃記憶體儲存系統100包括快閃記憶體控制器110與快閃記憶體晶片120。
快閃記憶體控制器110會執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統200的指令在快閃記憶體晶片120中進行資料的寫入、讀取與抹除等運作。快閃記憶體控制器110包括微處理器單元110a、記憶體操作單元110b、快閃記憶體介面單元110c、主機介面單元110d、錯誤校正單元110e與位元檢查單元110f。
微處理器單元110a用以控制快閃記憶體控制器110的整體運作。具體來說,微處理器單元110a是與記憶體操作單元110b、快閃記憶體介面單元110c、主機介面單元110d、錯誤校正單元110e與位元檢查單元110f等一起運作以進行快閃記憶體儲存系統100的寫入、讀取、抹除等運作。
記憶體操作單元110b是耦接至微處理器單元110a,並且用以執行區塊管理機制。特別是,記憶體操作單元110b是用以執行根據本範例實施例的資料存取機制。
在本實施例中,記憶體操作單元110b是以一韌體型式實作在控制器110中。例如,將包括多個控制指令燒錄至一程式記憶體(例如,唯讀記憶體(Read Only Memory,ROM))中並且將此程式記憶體嵌入在快閃記憶體控制器110中以實作出記憶體操作單元110b,其中當快閃記憶體儲存系統100啟動時,記憶體操作單元110b的多個機器指令會由微處理器單元110a來執行以完成根據本發明實施例的區塊管理機制與資料寫入機制。
在本發明另一實施例中,記憶體操作單元110b的控制指令亦可以軟體型式儲存於快閃記憶體晶片120的特定區域中。同樣的,當快閃記憶體儲存系統100啟動時,記憶體操作單元110b的控制指令會由微處理器單元110a來執行。此外,在本發明另一實施例中,記憶體操作單元110b亦可以一硬體型式實作在快閃記憶體控制器110中。
快閃記憶體介面單元110c是耦接至微處理器單元110a並且用以存取快閃記憶體晶片120。也就是說,欲寫入至快閃記憶體晶片120的資料會經由快閃記憶體介面單元110c轉換為快閃記憶體晶片120所能接受的格式。
主機介面單元110d是耦接至微處理器單元110a並且用以接收與識別主機系統200所傳送的指令。也就是說,主機系統200所傳送的指令與資料會透過主機介面單元110d來傳送至微處理器單元110a。在本範例實施例中,主機介面單元110d為SATA介面。然而,必須瞭解的是本發明不限於此,主機介面單元110d亦可以是USB介面、IEEE 1394介面、PCI Express介面、MS介面、MMC介面、SD介面、CF介面、IDE介面或其他適合的資料傳輸介面。
錯誤校正單元110e是耦接至微處理器單元110a並且用以執行一錯誤校正程序。具體來說,當在錯誤校正單元110e中輸入一資料時,錯誤校正單元110e會依據此資料產生一錯誤校正碼,並且當在錯誤校正單元110e輸入一資料與一錯誤校正碼時,錯誤校正單元110e會依據所接收的錯誤校正碼來為所接收的資料進行錯誤檢查與校正。錯誤校正程序為資料儲存媒體中常見的技術,在此不詳細描述。值得一提的是,錯誤校正單元110e的錯誤校正能力必須能夠支援快閃記憶體晶片120的規格。在本範例實施例中,錯誤校正單元110e具有檢查與校正48個錯誤位元的能力。然而,必須瞭解的是,本發明不限於此,只要能夠支援快閃記憶體晶片120之規格的錯誤校正單元皆可應用於本發明。
位元檢查單元110f是耦接至微處理器單元110a並且用以執行一錯誤偵測程序。具體來說,當在位元檢查單元110f中輸入一資料時,位元檢查單元110f會依據此資料產生一位元檢查碼,並且當在位元檢查單元110f輸入一資料與一位元檢查碼時,位元檢查單元110f會依據所接收的位元檢查碼來為所接收的資料進行錯誤檢查。例如,在本範例實施例中,位元檢查單元110f是以錯誤偵測電路(error detecting circuit)來實作,並且位元檢查單元110f會產生錯誤偵測碼(error detection code)作為位元檢查碼。然而,在本發明另一實施例中,位元檢查單元110f亦可以循環冗餘檢查電路(cyclic redundancy check circuit)來實作,並且位元檢查單元110f會產生循環冗餘檢查(cyclic redundancy check)碼作為位元檢查碼。或者,在本發明另一實施例中,位元檢查單元110f亦可以低階錯誤校正電路(erfor correcting circuit)來實作,並且位元檢查單元110f會產生低階錯誤校正碼作為位元檢查碼,在此低階錯誤校正電路與低階錯誤校正碼是指相對於錯誤校正單元110e與其錯誤校正碼而言具較低錯誤校正能力的錯誤校正電路與錯誤校正碼。
此外,雖未繪示於本範例實施例,但快閃記憶體控制器110亦更包括緩衝記憶體、電源管理單元等用於控制快閃記憶體的一般功能模組。
快閃記憶體晶片120是耦接至快閃記憶體控制器110並且具有多個實體區塊120-0~120-N以儲存資料。在本範例實施例中,快閃記憶體晶片120為多層記憶胞(Multi Level Cell,MLC)NAND快閃記憶體。然而,必須瞭解的是,本發明不限於此。在本發明另一實施例中,單層記憶胞(Single Level Cell,SLC)NAND快閃記憶體亦可應用於本發明。
圖2是根據本發明範例實施例所繪示實體區塊的概要方塊圖。在本範例實施例中每一實體區塊120-1~120-N的結構是相同的,圖2的概要方塊圖適用於每一實體區塊120-0~120-N。
請參照圖2,實體區塊包括128個頁面,並且每一頁面可儲存4個扇區的資料。具體來說,每一頁面的資料位元區D為2048位元組,且每一頁面的冗餘位元區R為61位元組,其中冗餘位元區R中8個位元組用於儲存與頁面相關的控制資訊並且53個位元組用於儲存用於頁面的錯誤校正碼。
圖3是根據本範例實施例所繪示的資料寫入步驟的流程圖。
請參照圖3,當主機系統200欲寫入資料至快閃記憶體儲存系統100時,在步驟S301中,快閃記憶體控制器110會從主機系統200接收欲寫入的資料。在本範例實施例中,所接收的資料具有至少一子資料,並且此些子資料的大小為主機系統200的最小存取單位(即,扇區)。例如,主機系統200的存取單位為512位元組時,子資料的大小亦為512位元組。具體來說,快閃記憶體控制器110會透過主機介面單元110d從主機系統200接收到寫入指令與對應此寫入指令的子資料。
接著,在步驟S303中,快閃記憶體控制器110會為所接收的資料產生對應的錯誤校正碼。具體來說,主機介面單元110d所接收到的資料會傳送至錯誤校正單元110e,並且由錯誤校正單元110e產生對應的錯誤校正碼。
之後,在步驟S305中,快閃記憶體控制器110的記憶體操作單元110b會將欲寫入的資料及其對應錯誤校正碼透過快閃記憶體介面單元110c寫入至快閃記憶體晶片120的實體區塊120-0~120-N中。
然後,在步驟S307中,快閃記憶體控制器110會為每一子資料產生對應的位元檢查碼。具體來說,每一子資料會被傳送至位元檢查單元110f,並且位元檢查單元110f會為每一子資料產生對應的位元檢查碼。
最後,在步驟S309中,記憶體操作單元110b會將所產生的位元檢查碼透過快閃記憶體介面單元110c寫入至快閃記憶體晶片120的實體區塊120-0~120N中。值得一提的是,由於在頁面中寫入資料時冗餘位元區僅足夠儲存對應此資料的錯誤校正碼,因此在本範例實施例會中所產生對應子資料的位元檢查碼是儲存在另一實體區塊的資料位元區中。也就是說,記憶體操作單元110b是將這些位元檢查碼視為一般資料寫入至快閃記憶體晶片120中。值得一提的是,在本發明範例實施例中,記憶體操作單元110b會建立一位元檢查碼表400來記錄所產生的位元檢查碼。
圖4是根據本發明範例實施例所繪示的一寫入範例的資料流示意圖。
請參照圖4,倘若快閃記憶體控制器110從主機系統200接收到資料量為2048位元組的資料DATA,快閃記憶體控制器110會為資料DATA產生錯誤校正碼ECC。此外,快閃記憶體控制器110會將資料DATA分割為子資料DATA1、子資料DATA2、子資料DATA3與子資料DATA4並且依序產生對應的位元檢查碼BCC1、位元檢查碼BCC2、位元檢查碼BCC3與位元檢查碼BCC4。之後,由子資料DATA1、子資料DATA2、子資料DATA3與子資料DATA4所組成的資料DATA會與錯誤校正碼ECC寫入至實體區塊120-0的頁面0中。同時,快閃記憶體控制器110會將記錄位元檢查碼BCC1、位元檢查碼BCC2、位元檢查碼BCC3與位元檢查碼BCC4的位元檢查碼表400會被寫入至實體區塊120-N的頁面0中
圖5是根據本發明一範例實施例所繪示在實體區塊中儲存位元檢查碼表的範例。
請參照圖5,例如,記錄實體區塊120-0~120-127之位元檢查碼的位元檢查碼表400是儲存在實體區塊120-N中。在本範例實施例中,由於子資料為512位元組且每一子資料的位元檢查碼所需的儲存空間為4位元組,因此1個實體區塊可儲存對應128個實體區塊的位元檢查碼。特別是,由於記憶體操作單元110b是以儲存一般資料的方式來儲存位元檢查碼表400,因此實體區塊的冗餘位元區中會存有對應位元檢查碼的錯誤校正碼。此外,在本發明另一範例實施例中,記憶體操作單元110b會建立一位元檢查碼對映表以記錄位元檢查碼表中位元檢查碼與子資料之間的對應關係,由此以利於從位元檢查碼表中讀取對應子資料的位元檢查碼。
值得一提的是,由於為快閃記憶體晶片120中所有實體區塊建立位元檢查碼表400會需要較大的儲存空間,因此在本發明另一範例實施例中,記憶體操作單元110b僅會針對經常以讀取小資料(即,小於一個頁面的資料量)方式進行存取的實體區塊建立位元檢查碼表400。例如,主機系統200會經常在儲存檔案配置表(File Allocation Table,FAT)的實體區塊中讀取小資料,由此可減少儲存位元檢查碼表400所需的記憶體空間。
此外,由於在存取過程中位元檢查碼表400會不斷的被更新,因此在快閃記憶體儲存系統100的運作期間,位元檢查碼表400會從快閃記憶體晶片120中載入至緩衝記憶體(未繪示)中以利更新,並且當快閃記憶體儲存系統100關機時,位元檢查碼表400會被回寫至快閃記憶體晶片120。
圖6是根據本範例實施例所繪示的資料讀取步驟的流程圖。
請參照圖6,當主機系統200欲從快閃記憶體儲存系統100中讀取資料時,在步驟S601中,快閃記憶體控制器110會判斷主機系統200欲讀取的資料量是否小於1個頁面。具體來說,快閃記憶體控制器110會透過主機介面單元110d從主機系統200中接收到讀取指令,並且記憶體操作單元110b會依據讀取指令中欲讀取的位址來判斷主機系統200欲讀取的資料量是否小於1個頁面。
例如,在所述實體區塊120-0的頁面0儲存有以子資料DATA1、子資料DATA2、子資料DATA3與子資料DATA4所組成之資料DATA的例子中,倘若主機系統200僅欲讀取子資料DATA1、子資料DATA2、子資料DATA3與子資料DATA4的一部份而非整個資料DATA時,則表示主機系統200欲讀取的資料量是小於1個頁面。
倘若在步驟S601中判斷主機系統200欲讀取的資料量非小於1個頁面時,則在步驟S603中記憶體操作單元110b會透過快閃記憶體介面單元110c從快閃記憶體晶片120中讀取資料及其對應的錯誤校正碼,並且在步驟S605中錯誤校正單元110e會根據所讀取的資料與錯誤校正碼進行錯誤校正程序。之後,在步驟S607中,記憶體操作單元110b會透過主機介面單元110d將已執行錯誤校正程序的資料傳送給主機系統200。例如,若主機系統200欲讀取實體區塊120-0的頁面0的資料DATA時,快閃記憶體控制器110會讀取資料DATA及其錯誤校正碼ECC,並且執行錯誤校正程序,然後再將已執行錯誤校正程序的資料DATA傳送至主機系統200。
倘若在步驟S601中判斷主機系統200欲讀取的資料量小於1個頁面時,則在步驟S609中記憶體操作單元110b會透過快閃記憶體介面單元110c從快閃記憶體晶片120中讀取所欲讀取的子資料,並且在步驟S611中記憶體操作單元110b會從位元檢查碼表400中獲取對應的位元檢查碼,其中倘若位元檢查碼表400未載入至緩衝記憶體(未繪示)時,記憶體操作單元110b會從快閃記憶體晶片120中讀取位元檢查碼表400。
之後,在步驟S613中位元檢查單元110f會依據所讀取的子資料及對應的位元檢查碼來判斷所讀取的子資料中是否存有錯誤位元。倘若所讀取的子資料無存有錯誤位元時,則在步驟S615中記憶體操作單元110b會將所讀取的子資料傳送至主機系統200。
倘若所讀取的子資料存有錯誤位元時,則在步驟S617中會透過快閃記憶體介面單元110c從快閃記憶體晶片120中讀取完整的資料及其對應的錯誤校正碼,並且在步驟S619中錯誤校正單元110e會根據所讀取的資料與錯誤校正碼進行錯誤校正程序。最後,在步驟S621中記憶體操作單元110b會從已校正的資料中擷取主機系統200欲讀取的子資料並將所擷取的子資料傳送給主機系統200。
例如,若主機系統200欲讀取實體區塊120-0的頁面0的子資料DATA1時,快閃記憶體控制器110會讀取子資料DATA1與位元檢查碼BCC1,並且依據位元檢查碼BCC1判斷所讀取的子資料DATA1中是否存有錯誤位元。若所讀取的子資料DATA1中無存有錯誤位元時,則快閃記憶體控制器110會直接將所讀取的子資料DATA1傳送給主機系統200。反之,若所讀取的子資料DATA1中存有錯誤位元時,則快閃記憶體控制器110會從快閃記憶體晶片120中重新讀取資料DATA及其錯誤校正碼ECC,並且執行錯誤校正程序,然後再從已執行錯誤校正程序的資料DATA擷取子資料DATA1並且將所擷取的子資料DATA1傳送至主機系統200。
必須瞭解的是,圖3與圖6所述的執行順序並非限制本發明,此領域技術人員可依據本發明的精神下以不同於圖3與圖6所述的順序執行上述步驟。
綜上所述,本發明是在對快閃記憶體的頁面中寫入資料時將資料對應主機系統的存取單位分割為數個子資料,並且為每一資料產生一位元檢查碼,由此當主機系統從快閃記憶體的頁面中讀取子資料時,可透過對應的位元檢查碼執行位元檢查,並且僅在發生位元錯誤時才從快閃記憶體中讀取整個頁面的資料進行錯誤校正,由此可提升快閃記憶體的讀取速度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...快閃記憶體儲存系統
110...快閃記憶體控制器
110a...微處理器單元
110b...記憶體操作單元
110c...快閃記憶體介面單元
110d...主機介面單元
110e...錯誤校正單元
110f...位元檢查單元
120...快閃記憶體晶片
120-0~120-N...實體區塊
D...資料位元區
R...冗餘位元區
400...位元檢查碼表
S301、S303、S305、S307、S309...資料寫入步驟
S601、S603、S605、S607、S609、S611、S613、S615、S617、S619、S621...資料讀取步驟
圖1是根據本發明一範例實施例所繪示的快閃記憶體儲存系統的概要方塊圖。
圖2是根據本發明範例實施例所繪示實體區塊的概要方塊圖。
圖3是根據本範例實施例所繪示的資料寫入步驟的流程圖。
圖4是根據本發明範例實施例所繪示的寫入範例的資料流示意圖。
圖5是根據本發明一範例實施例所繪示在實體區塊中儲存位元檢查碼表的範例。
圖6是根據本範例實施例所繪示的資料讀取步驟的流程圖。
S301、S303、S305、S307、S309...資料寫入步驟
Claims (25)
- 一種資料存取方法,用於在一快閃記憶體中存取一資料,該資料存取方法包括:從一主機系統接收該資料,其中該資料包括多個子資料;為該資料產生一錯誤校正碼(Error Correction Code,ECC);將該資料和該錯誤校正碼寫入至該快閃記憶體中;由一位元檢查單元為每一該些子資料產生對應的一位元檢查碼;以及由一記憶體操作單元將該些位元檢查碼寫入至該快閃記憶體中。
- 如申請專利範圍第1項所述之資料存取方法,更包括建立一位元檢查碼表並且在該位元檢查碼表中記錄該些位元檢查碼,其中將該些位元檢查碼寫入該快閃記憶體中的步驟包括將該位元檢查碼表寫入至該快閃記憶體中。
- 如申請專利範圍第2項所述之資料存取方法,更包括建立一位元檢查碼對映表以記錄該位元檢查碼表中該些位元檢查碼和該些子資料之間的一對映關係。
- 如申請專利範圍第2項所述之資料存取方法,更包括從該快閃記憶體中載入該位元檢查碼表至一緩衝記憶體中,並且從該緩衝記憶體中讀取對應該些子資料的該些位元檢查碼。
- 如申請專利範圍第1項所述之資料存取方法,更包 括:從該快閃記憶體中讀取該些子資料;從該快閃記憶體中讀取對應所讀取之該些子資料的位元檢查碼;依據所讀取的該些子資料的位元檢查碼判斷所讀取的該些子資料是否存有錯誤,其中當所讀取的該些子資料無存有錯誤時將所讀取的該些子資料傳送給該主機系統。
- 如申請專利範圍第5項所述之資料存取方法,其中當所讀取的該些子資料存有錯誤時,則該資料存取方法更包括:從該快閃記憶體中讀取該資料與該錯誤校正碼;依據所讀取的該錯誤校正碼來校正所讀取的該資料;從所校正的該資料之中擷取已校正的該些子資料;以及將已校正的該些子資料傳送給該主機系統。
- 如申請專利範圍第1項所述之資料存取方法,其中每一該些位元檢查碼為一錯誤偵測碼(Error Detection Code,EDC)或一循環冗餘檢查碼(Cyclic Redundancy Check,CRC)。
- 如申請專利範圍第1項所述之資料存取方法,其中每一該些子資料的大小為該主機系統的一最小存取單位。
- 一種快閃記憶體控制器,用以在一快閃記憶體中存取一資料,該快閃記憶體控制器包括: 一微處理器單元;一主機介面單元,耦接至該微處理器單元,該主機介面單元用以連接一主機系統並從該主機系統中接收該資料,其中該資料包括多個子資料;一快閃記憶體介面單元,耦接至該微處理器單元並且用以連接該快閃記憶體;一記憶體操作單元,耦接至該微處理器單元;一錯誤校正單元,耦接至該微處理器單元並且用以為該資料產生一錯誤校正碼,其中該記憶體操作單元會將該資料和該錯誤校正碼寫入至該快閃記憶體中;以及一位元檢查單元,耦接至該微處理器單元並且用以為每一該些子資料產生一位元檢查碼,其中該記憶體操作單元會將該些位元檢查碼寫入至該快閃記憶體中。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該記憶體操作單元更用以建立一位元檢查碼表,其中該些位元檢查碼是記錄在該位元檢查碼表中。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該記憶體操作單元更用以建立一位元檢查碼對映表以記錄該位元檢查碼表中該些位元檢查碼和該些子資料之間的一對映關係。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該記憶體操作單元更用以從該快閃記憶體中載入該位元檢查碼表至一緩衝記憶體中,並且從該緩衝記憶體中讀取對應該些子資料的該些位元檢查碼。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該記憶體操作單元更用以從該快閃記憶體中讀取該些子資料,並且從該快閃記憶體中讀取對應所讀取之該些子資料的位元檢查碼,其中該位元檢查單元會依據所讀取的該些子資料的位元檢查碼判斷所讀取的該些子資料是否存有錯誤,其中當所讀取的該些子資料無存有錯誤時,該記憶體操作單元將所讀取的該些子資料傳送給該主機系統。
- 如申請專利範圍第13項所述之快閃記憶體控制器,其中當所讀取的該些子資料存有錯誤時,則該記憶體操作單元會從該快閃記憶體中讀取該資料與該錯誤校正碼,並且該錯誤校正單元會依據所讀取的該錯誤校正碼來校正所讀取的該資料,其中該記憶體操作單元會從所校正的該資料之中擷取已校正的該些子資料,並且將已校正的該些子資料傳送給該主機系統。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該位元檢查單元為一錯誤偵測電路並且每一該些位元檢查碼為一錯誤偵測碼。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該位元檢查單元為一循環冗餘檢查電路並且每一該些位元檢查碼為一循環冗餘檢查碼。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中每一該些子資料的大小為該主機系統的一最小存 取單位。
- 一種快閃記憶體儲存系統,包括:一快閃記憶體;一快閃記憶體控制器,耦接至該快閃記憶體,用以從一主機系統中接收一資料,其中該資料具有多個子資料,其中該快閃記憶體控制器會為該資料產生一錯誤校正碼,並且將該資料和該錯誤校正碼寫入至該快閃記憶體中,其中該快閃記憶體控制器包括一位元檢查單元與一記憶體操作單元,其中該位元檢查單元會為每一該些子資料產生一位元檢查碼,並且該記憶體操作單元將該些位元檢查碼寫入至該快閃記憶體中。
- 如申請專利範圍第18項所述之快閃記憶體儲存系統,該快閃記憶體更包括一位元檢查碼表,其中該些位元檢查碼是記錄在該位元檢查碼表中。
- 如申請專利範圍第19項所述之快閃記憶體儲存系統,其中該快閃記憶體控制器更用以建立一位元檢查碼對映表以記錄該位元檢查碼表中該些位元檢查碼和該些子資料之間的一對映關係。
- 如申請專利範圍第20項所述之快閃記憶體儲存系統,更包括一緩衝記憶體,其中該快閃記憶體控制器更用以從該快閃記憶體中載入該位元檢查碼表至該緩衝記憶體中,並且從該緩衝記憶體中讀取對應該些子資料的該些位元檢查碼。
- 如申請專利範圍第18項所述之快閃記憶體儲存系統,其中該快閃記憶體控制器更用以從該快閃記憶體中讀取該些子資料,並且從該快閃記憶體中讀取對應所讀取之該些子資料的位元檢查碼,其中該快閃記憶體控制器會依據所讀取的該些子資料的位元檢查碼判斷所讀取的該些子資料是否存有錯誤,其中當所讀取的該些子資料無存有錯誤時,該快閃記憶體控制器會將所讀取的該些子資料傳送給該主機系統。
- 如申請專利範圍第22項所述之快閃記憶體儲存系統,其中當所讀取的該些子資料存有錯誤時,則該快閃記憶體控制器會從該快閃記憶體中讀取該資料與該錯誤校正碼,並且依據所讀取的該錯誤校正碼來校正所讀取的該資料,其中該快閃記憶體控制器會從所校正的該資料之中擷取已校正的該些子資料,並且將已校正的該些子資料傳送給該主機系統。
- 如申請專利範圍第18項所述之快閃記憶體儲存系統,其中每一該些位元檢查碼為一錯誤偵測碼或一循環冗餘檢查碼。
- 如申請專利範圍第18項所述之快閃記憶體儲存系統,其中每一該些子資料的大小為該主機系統的一最小存取單位。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098112018A TWI419169B (zh) | 2009-04-10 | 2009-04-10 | 用於快閃記憶體的資料存取方法及其儲存系統與控制器 |
US12/486,523 US8301981B2 (en) | 2009-04-10 | 2009-06-17 | Data access method for flash memory and storage system and controller thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098112018A TWI419169B (zh) | 2009-04-10 | 2009-04-10 | 用於快閃記憶體的資料存取方法及其儲存系統與控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201037716A TW201037716A (en) | 2010-10-16 |
TWI419169B true TWI419169B (zh) | 2013-12-11 |
Family
ID=42935313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098112018A TWI419169B (zh) | 2009-04-10 | 2009-04-10 | 用於快閃記憶體的資料存取方法及其儲存系統與控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8301981B2 (zh) |
TW (1) | TWI419169B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI602185B (zh) * | 2015-03-04 | 2017-10-11 | 旺宏電子股份有限公司 | 記憶體裝置及其操作方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
US20130117632A1 (en) * | 2011-11-08 | 2013-05-09 | Sony Corporation | Storage control apparatus |
DE102012102856A1 (de) * | 2012-04-02 | 2013-10-02 | Minebea Co., Ltd. | Vorrichtung und Verfahren zum Lesen und Speichern von Daten |
TWI594126B (zh) * | 2016-07-05 | 2017-08-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
TWI742509B (zh) * | 2020-01-09 | 2021-10-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 |
US11190217B2 (en) | 2018-08-23 | 2021-11-30 | Phison Electronics Corp. | Data writing method, memory controlling circuit unit and memory storage device |
CN113138947B (zh) * | 2020-01-17 | 2023-06-13 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754567A (en) * | 1996-10-15 | 1998-05-19 | Micron Quantum Devices, Inc. | Write reduction in flash memory systems through ECC usage |
US6725321B1 (en) * | 1999-02-17 | 2004-04-20 | Lexar Media, Inc. | Memory system |
TWI248617B (en) * | 2004-08-13 | 2006-02-01 | Prolific Technology Inc | Data storage device |
US20090083476A1 (en) * | 2007-09-21 | 2009-03-26 | Phison Electronics Corp. | Solid state disk storage system with parallel accesssing architecture and solid state disck controller |
-
2009
- 2009-04-10 TW TW098112018A patent/TWI419169B/zh active
- 2009-06-17 US US12/486,523 patent/US8301981B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754567A (en) * | 1996-10-15 | 1998-05-19 | Micron Quantum Devices, Inc. | Write reduction in flash memory systems through ECC usage |
US6601211B1 (en) * | 1996-10-15 | 2003-07-29 | Micron Technology, Inc. | Write reduction in flash memory systems through ECC usage |
US6725321B1 (en) * | 1999-02-17 | 2004-04-20 | Lexar Media, Inc. | Memory system |
TWI248617B (en) * | 2004-08-13 | 2006-02-01 | Prolific Technology Inc | Data storage device |
US20060036897A1 (en) * | 2004-08-13 | 2006-02-16 | Chanson Lin | Data storage device |
US20090083476A1 (en) * | 2007-09-21 | 2009-03-26 | Phison Electronics Corp. | Solid state disk storage system with parallel accesssing architecture and solid state disck controller |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI602185B (zh) * | 2015-03-04 | 2017-10-11 | 旺宏電子股份有限公司 | 記憶體裝置及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100262892A1 (en) | 2010-10-14 |
TW201037716A (en) | 2010-10-16 |
US8301981B2 (en) | 2012-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI516927B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US8560926B2 (en) | Data writing method, memory controller and memory storage apparatus | |
TWI419169B (zh) | 用於快閃記憶體的資料存取方法及其儲存系統與控制器 | |
TWI557561B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8589619B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
CN111880749B (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
TWI486766B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
US8812772B2 (en) | Data merging method for non-volatile memory and controller and storage apparatus using the same | |
US9063888B2 (en) | Program code loading and accessing method, memory controller, and memory storage apparatus | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI611410B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI802324B (zh) | 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW202040370A (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US8943289B2 (en) | Data moving method for flash memory module, and memory controller and memory storage apparatus using the same | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
TWI797464B (zh) | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20170115925A1 (en) | Valid data merging method, memory controller and memory storage apparatus | |
TWI436209B (zh) | 記憶體管理表處理方法、記憶體控制器與記憶體儲存裝置 | |
CN101872318A (zh) | 用于快闪记忆体的资料存取方法及其储存***与控制器 | |
CN113504880A (zh) | 存储器缓冲区管理方法、存储器控制电路单元与存储装置 | |
CN113138720A (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 | |
CN111858389B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
TWI814501B (zh) | 映射表重建方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN113724773B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN117289873A (zh) | 装置控制方法、存储器存储装置及存储器控制电路单元 |