TWI454912B - 資料處理方法、記憶體控制器與記憶體儲存裝置 - Google Patents
資料處理方法、記憶體控制器與記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI454912B TWI454912B TW101100646A TW101100646A TWI454912B TW I454912 B TWI454912 B TW I454912B TW 101100646 A TW101100646 A TW 101100646A TW 101100646 A TW101100646 A TW 101100646A TW I454912 B TWI454912 B TW I454912B
- Authority
- TW
- Taiwan
- Prior art keywords
- area
- file
- cluster
- memory
- directory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/177—Smart card
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明是有關於一種記憶體儲存裝置的資料處理方法,且特別是有關於一種在記憶體儲存裝置被格式化後防止預存之檔案被覆寫的資料處理方法及使此方法的記憶體控制器與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
特別是,隨著使用者逐漸接受使用電子錢包及預付儲值,使得智慧卡的使用日益普及。智慧卡(Smart Card)是具有例如微處理器、卡操作系統、安全模組及記憶體之組件的積體電路晶片(IC晶片),以允許持有者執行預定操作。智慧卡提供計算、加密、雙向通信及安全功能,使得這張卡片除了儲存資料的功能外還能達到對其所儲存的資料加以保護的功能。使用全球行動通信系統(GSM)機制之蜂巢式電話中所使用的用戶識別模組(Subscriber Identification Module,SIM)卡為智慧卡的其中一個應用範例。然而,智慧卡本身受限於儲存容量,因此近年來開始將智慧卡與有大儲存容量的記憶體儲存裝置作結合,以擴增智慧卡的儲存容量。
在配置有智慧卡晶片的記憶體存裝置中,為了使智慧卡晶片與一主機系統能夠互相傳輸指令與資料,目前之技術是由記憶體儲存裝置的記憶體控制器預先在與智慧卡結合的記憶體儲存裝置的可複寫式非揮發性記憶體中儲存一通訊檔案,並且使用此通訊檔案作為智慧卡與主機系統之間的溝通介面。具體來說,每當記憶體儲存裝置被格式化產生一分割區時,記憶體儲存裝置的記憶體控制器會在此分割區中儲存一個通訊檔案並且在此檔案系統之資訊中記錄此通訊檔案的資訊。之後,當主機系統的應用程式要傳送指令給記憶體儲存裝置之智慧卡晶片時,此應用程式會將指示寫入資料至用以儲存此通訊檔案之邏輯位址的寫入指令傳送給記憶體儲存裝置。特別是,記憶體控制器會根據此寫入指令中的邏輯位址識別此寫入指令中的資料串為屬於智慧卡晶片並將資料串傳遞給智慧卡晶片。
然而,倘若此記憶體儲存裝置被格式化後主機系統在未重新讀取此記憶體儲存裝置的檔案系統之資訊之前執行寫入運作時,由於暫存在主機系統之緩衝記憶體中的檔案系統資訊未包含上述通訊檔案之資訊,因此,主機系統可能會將資料寫入至用以儲存上述通訊檔案的位址,而造成通訊檔案被覆寫。因此,如何避免在格式化記憶體儲存裝置以後且在主機系統未重新讀取此記憶體儲存裝置的檔案系統之資訊前,避免上述通訊檔案被覆寫,為此領域之技術人員所致力欲解決的課題。
本發明提供了一種記憶體儲存裝置,記憶體控制器與資料處理方法,其能夠在記憶體儲存裝置被格式化後,避免預存之檔案被覆寫。
本發明一範例實施例提出一種資料處理方法,用於具有可複寫式非揮發性記憶體模組與智慧卡晶片的記憶體儲存裝置,其中非揮發性記憶體模組具有多個實體區塊。此資料處理方法包括:將實體區塊至少分組為資料區、閒置區與系統區;配置多個邏輯位址並且將邏輯位址映射至資料區的實體區塊,其中邏輯位址會被格式化成檔案配置表區、根目錄區與檔案區,並且檔案配置表區具有多個叢集項(cluster entry)欄位,根目錄區具有多個目錄項(directory entry)欄位,而檔案區具有多個叢集。上述資料處理方法還包括:在檔案區的叢集之中的至少一叢集中儲存通訊檔案,且此至少一叢集的起始叢集是第K個叢集,其中K為正整數並且大於1且小於檔案區的叢集的數目;在根目錄區的目錄項欄位之中的第M個目錄項欄位中記錄對應通訊檔案的檔案描述區塊(file description block,FDB),其中M為正整數並且大於1且小於目錄項欄位的數目;以及在檔案配置表區的叢集項欄位之中對應上述至少一叢集中最後一個叢集的叢集項欄位儲存檔案結束符號。
在本發明的一範例實施例中,上述在檔案區的叢集之中的至少一叢集中儲存通訊檔案的步驟包括:在所述檔案區的叢集之中的最後一個叢集中儲存上述的通訊檔案。
在本發明的一範例實施例中,上述的M等於2。
在本發明的一範例實施例中,上述的M等於K。
在本發明的一範例實施例中,上述在根目錄區的目錄項欄位之中的第M個目錄項欄位中記錄對應通訊檔案的檔案描述區塊的步驟包括:接收來自主機系統的讀取指令;判斷讀取指令所指示的讀取位址是否為邏輯位址之中對應根目錄區的邏輯位址;若讀取位址為邏輯位址之中對應根目錄區的邏輯位址時,則選擇目錄項欄位之中的一閒置目錄項欄位,此閒置目錄項欄位並未被使用;在閒置目錄項欄位中記錄對應通訊檔案的檔案描述區塊;以及,傳送根目錄的目錄項欄位中的資料給主機系統,以回應此讀取指令。
在本發明的一範例實施例中,上述資料處理方法更包括:接收來自主機系統的寫入指令與對應寫入指令的資料串;判斷寫入指令所指示的寫入位址是否為邏輯位址之中對應上述至少一叢集的邏輯位址;以及若寫入指令所指示的寫入位址為邏輯位址之中對應上述至少一叢集的邏輯位址時,則將資料串傳送至智慧卡晶片。
以另外一個角度來說,本發明一範例實施例提出一種記憶體控制器,用於具有可複寫式非揮發性記憶體模組與智慧卡晶片的記憶體儲存裝置中。此記憶體控制器包括主機介面、記憶體介面與記憶體管理電路。其中主機介面是用以耦接至主機系統。記憶體介面是用以耦接至可複寫式非揮發性記憶體模組,而可複寫式非揮發性記憶體模組具有多個實體區塊。並且記憶體管理電路是耦接主機介面與記憶體介面,並且用以將實體區塊至少分組為資料區、閒置區與系統區。記憶體管理電路繪配置多個邏輯位址並且將這些邏輯位址映射至資料區的實體區塊,這些邏輯位址會被主機系統格式化成檔案配置表區、根目錄區與檔案區。其中檔案配置表區具有多個叢集項(cluster entry)欄位,根目錄區具有多個目錄項(directory entry)欄位,並且檔案區具有多個叢集。記憶體管理電路也用以在檔案區的叢集之中的至少一叢集中儲存通訊檔案,且此至少一叢集的起始叢集是第K個叢集,其中K為正整數並且大於1且小於檔案區的叢集的數目。記憶體管理電路還用以在根目錄區的目錄登錄欄位之中的第M個目錄項欄位中記錄對應通訊檔案的檔案描述區塊(file description block,FDB),其中M為正整數並且大於1且小於目錄項欄位的數目。記憶體管理電路更用以在檔案配置表區的叢集項欄位之中對應上述至少一叢集中的最後一個叢集的叢集項欄位儲存上述的檔案結束符號。
在本發明的一範例實施例中,上述記憶體管理電路更用以在檔案區的叢集之中的最後一個叢集中儲存通訊檔案。
在本發明的一範例實施例中,上述記憶體管理電路更用以接收來自主機系統的一讀取指令,並且判斷此讀取指令所指示的讀取位址是否為邏輯位址之中對應根目錄區的邏輯位址。若讀取位址為邏輯位址之中對應根目錄區的邏輯位址時,則記憶體管理電路選擇目錄項欄位之中未被使用的閒置目錄項欄位,並且在閒置目錄項欄位中記錄對應通訊檔案的檔案描述區塊。其中記憶體管理電路更用以傳送根目錄的目錄項欄位中的資料給主機系統,以回應讀取指令。
在本發明的一範例實施例中,上述記憶體管理電路更用以接收來自主機系統的寫入指令與對應寫入指令的資料串,並且判斷寫入指令所指示的寫入位址是否為邏輯位址之中對應上述至少一叢集的邏輯位址。若寫入指令所指示的寫入位址為邏輯位址之中對應上述至少一叢集的邏輯位址時,則記憶體管理電路會將資料串傳送至智慧卡晶片。
以另外一個角度來說,本發明一範例實施例提出一種記憶體儲存裝置,包括連接器、可複寫式非揮發性記憶體模組、智慧卡晶片與記憶體控制器。其中,連接器是用以耦接至主機系統。記憶體控制器是耦接至連接器、可複寫式非揮發性記憶體模組與智慧卡晶片,並且用以將實體區塊至少分組為資料區、閒置區與系統區。記憶體控制器也用以配置多個邏輯位址並且將邏輯位址映射至資料區的實體區塊。其中邏輯位址會被主機系統格式化成檔案配置表區、根目錄區與檔案區,並且檔案配置表區具有多個叢集項(cluster entry)欄位,根目錄區具有多個目錄項(directory entry)欄位,而檔案區具有多個叢集。記憶體控制器更用以在檔案區的叢集之中的至少一叢集中儲存通訊檔案,且此至少一叢集的起始叢集是第K個叢集,其中K為正整數並且大於1且小於檔案區的叢集的數目。記憶體控制器也用以在根目錄區的目錄登錄欄位之中的第M個目錄項欄位中記錄對應通訊檔案的檔案描述區塊(file description block,FDB),其中M為正整數並且大於1且小於目錄項欄位的數目。記憶體控制器也用以在檔案配置表區的叢集項欄位之中對應上述至少一叢集中的最後一個叢集的叢集項欄位儲存檔案結束符號。
在本發明的一範例實施例中,上述記憶體控制器是在檔案區的叢集之中的最後一個叢集中儲存通訊檔案。
在本發明的一範例實施例中,上述記憶體控制器更用以接收來自主機系統的一讀取指令,並且判斷此讀取指令所指示的讀取位址是否為邏輯位址之中對應根目錄區的邏輯位址。若讀取位址為邏輯位址之中對應根目錄區的邏輯位址時,則記憶體控制器會選擇目錄項欄位之中未被使用的閒置目錄項欄位,並且在閒置目錄項欄位中記錄對應通訊檔案的檔案描述區塊。記憶體控制器還用以傳送根目錄的目錄項欄位中的資料給主機系統,以回應讀取指令。
在本發明的一範例實施例中,上述記憶體控制器更用以接收來自主機系統的寫入指令與對應此寫入指令的資料串,並且判斷寫入指令所指示的寫入位址是否為邏輯位址之中對應上述至少一叢集的邏輯位址。若寫入指令所指示的寫入位址為邏輯位址之中對應上述至少一叢集的邏輯位址時,則記憶體控制器會將資料串傳送至智慧卡晶片。
基於上述,本發明範例實施例的資料處理方法,記憶體控制器與記憶體儲存裝置,會在記憶體儲存裝置被格式化以後,從檔案區的第K個叢集開始儲存通訊檔案,並將對應此通訊檔案的檔案描述區塊儲存在根目錄區的第M個目錄項欄位,並且K與M大於1。如此一來,當主機系統分別從第一個叢集與第一個目錄項欄位開始寫入資料時,便不會造成通訊檔案與對應此通訊檔案的檔案描述區塊被覆寫。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據第一範例實施例所繪示的主機系統與記憶體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1103。微處理器1102會執行安裝於隨機存取記憶體1104中的作業系統1110與應用程式1120,以使主機系統1000根據使用者之操作而提供對應的功能。輸入/輸出裝置1106包括如圖1B的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1103與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖1D是根據一範例實施例繪示的記憶體儲存裝置的概要方塊圖。
請參考圖1D,記憶體儲存裝置100包括連接器102、記憶體控制器104、可複寫式非揮發性記憶體模組106與智慧卡晶片108。
在本範例實施例中,連接器102是相容於安全數位(Secure Digital,SD)介面標準。然而,必須瞭解的是,本發明不限於此,連接器102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE) 1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制器104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106具有實體區塊304(0)~304(R)。例如,實體區塊304(0)~304(R)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體區塊分別具有複數個實體頁面,並且每一實體頁面具有至少一實體扇區,其中屬於同一個實體區塊之實體頁面可被獨立地寫入且被同時地抹除。例如,每一實體區塊是由128個實體頁面所組成,並且每一實體頁面具有8個實體扇區(sector)。也就是說,在每一實體扇區為512位元組(byte)的例子中,每一實體頁面的容量為4千位元組(Kilobyte,K)。然而,必須瞭解的是,本發明不限於此,每一實體區塊是可由64個實體頁面、256個實體頁面或其他任意個實體頁面所組成。
更詳細來說,實體區塊為抹除之最小單位。亦即,每一實體區塊含有最小數目之一併被抹除之記憶胞。實體頁面為程式化的最小單元。即,實體頁面為寫入資料的最小單元。然而,必須瞭解的是,在本發明另一範例實施例中,寫入資料的最小單位亦可以是實體扇區或其他大小。每一實體頁面通常包括資料位元區與冗餘位元區。資料位元區用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤檢查與校正碼)。
在本範例實施例中,可複寫式非揮發性記憶體模組106為多階記憶胞(Multi Level Cell,MLC)NAND快閃記憶體模組。然而,本發明不限於此,可複寫式非揮發性記憶體模組106亦可是單階記憶胞(Single Level Cell,SLC)NAND快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖1E是根據一範例實施例所繪示的記憶體控制器的概要方塊圖。
請參照圖1E,記憶體控制器104包括記憶體管理電路202、主機介面204、記憶體介面206、緩衝記憶體208、電源管理電路210與錯誤檢查與校正電路212。
記憶體管理電路202用以控制記憶體控制器104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100被電源開機(power on)時,此些控制指令會被執行以控制記憶體控制器104的整體運作。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有驅動碼段,並且當記憶體控制器104被致能時,微處理器單元會先執行此驅動碼段來將儲存於可複寫式非揮發性記憶體模組106中之控制指令載入至記憶體管理電路202的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元。記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元是耦接至微控制器。其中,記憶體管理單元用以管理可複寫式非揮發性記憶體模組106的實體區塊;記憶體寫入單元用以對可複寫式非揮發性記憶體模組106下達寫入指令以將資料寫入至可複寫式非揮發性記憶體模組106中;記憶體讀取單元用以對可複寫式非揮發性記憶體模組106下達讀取指令以從可複寫式非揮發性記憶體模組106中讀取資料;記憶體抹除單元用以對可複寫式非揮發性記憶體模組106下達抹除指令以將資料從可複寫式非揮發性記憶體模組106中抹除;而資料處理單元用以處理欲寫入至可複寫式非揮發性記憶體模組106的資料以及從可複寫式非揮發性記憶體模組106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204為符合SD標準的介面。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是符合MS標準、MMC標準、CF標準、PATA標準、IEEE 1394標準、PCI Express標準、SATA標準、USB標準、IDE標準或其他標準的介面。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體模組106。也就是說,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
緩衝記憶體208是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組106的資料。
電源管理電路210是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路212是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路212會為對應此寫入指令的資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code),並且記憶體管理電路202會將對應此寫入指令的資料與對應的錯誤檢查與校正碼寫入至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤檢查與校正碼,並且錯誤檢查與校正電路212會依據此錯誤檢查與校正碼對所讀取的資料執行錯誤檢查與校正程序。
圖2與圖3是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
必須瞭解的是,在此描述可複寫式非揮發性記憶體模組106之實體區塊的運作時,以“提取”、“交換”、“分組”、“輪替”等詞來操作實體區塊是邏輯上的概念。也就是說,可複寫式非揮發性記憶體模組之實體區塊的實際位置並未更動,而是邏輯上對可複寫式非揮發性記憶體模組的實體區塊進行操作。
請參照圖2,記憶體控制器104會將可複寫式非揮發性記憶體模組的實體區塊304(0)~304(R)邏輯地分組為資料區402、閒置區404、系統區406與取代區408。
資料區402與閒置區404的實體區塊是用以儲存來自於主機系統1000的資料。具體來說,資料區402是已儲存資料的實體區塊,而閒置區404的實體區塊是用以替換資料區402的實體區塊。因此,閒置區404的實體區塊為空或可使用的實體區塊,即無記錄資料或標記為已沒用的無效資料。也就是說,在閒置區404中的實體區塊已被執行抹除運作,或者當閒置區404中的實體區塊被提取用於儲存資料之前所提取之實體區塊會被執行抹除運作。因此,閒置區404的實體區塊為可被使用的實體區塊。
邏輯上屬於系統區406的實體區塊是用以記錄系統資料,其中此系統資料包括關於記憶體晶片的製造商與型號、記憶體晶片的實體區塊數、每一實體區塊的實體頁面數等。
邏輯上屬於取代區408中的實體區塊是替代實體區塊。例如,可複寫式非揮發性記憶體模組於出廠時會預留4%的實體區塊作為更換使用。也就是說,當資料區402、閒置區404與系統區406中的實體區塊損毀時,預留於取代區408中的實體區塊是用以取代損壞的實體區塊(即,壞實體區塊(bad block))。因此,倘若取代區408中仍存有正常之實體區塊且發生實體區塊損毀時,記憶體控制器104會從取代區408中提取正常的實體區塊來更換損毀的實體區塊。倘若取代區408中無正常之實體區塊且發生實體區塊損毀時,則記憶體控制器104會將整個記憶體儲存裝置100宣告為寫入保護(write protect)狀態,而無法再寫入資料。
特別是,資料區402、閒置區404、系統區406與取代區408之實體區塊的數量會依據不同的記憶體規格而有所不同。此外,必須瞭解的是,在記憶體儲存裝置100的運作中,實體區塊關聯至資料區402、閒置區404、系統區406與取代區408的分組關係會動態地變動。例如,當閒置區中的實體區塊損壞而被取代區的實體區塊取代時,則原本取代區的實體區塊會被關聯至閒置區。
請參照圖3,如上所述,資料區402與閒置區404的實體區塊是以輪替方式來儲存主機系統1000所寫入之資料。在本範例實施例中,記憶體控制器104會配置邏輯位址LBA(0)~LBA(N)給主機系統1000以利於在以上述輪替方式來儲存資料之實體區塊中進行資料存取。具體來說,當記憶體儲存裝置100被作業系統1110以檔案系統(例如,FAT 32)格式化時,邏輯位址LBA(0)~LBA(N)分別地映射至資料區402的實體區塊304(0)~304(D)。也就是說,一個邏輯位址會映射資料區402中的一個實體區塊。在此,記憶體管理電路202會建立邏輯區塊-實體區塊映射表(logical block-physical block mapping table),以記錄邏輯區塊與實體區塊之間的映射關係。
在本範例實施例中,主機系統1000的作業系統1110使用檔案系統將邏輯位址LBA(0)~LBA(N)格式化成一個分割區(partition)900(如圖4所示),其中分割區900包括主引導磁區902、檔案配置表區904、根目錄區906與檔案區908。
屬於主引導磁區902的邏輯位址是用以儲存記憶體儲存裝置100的可儲存空間的系統資訊。
屬於檔案配置表區904的邏輯位址是用以儲存檔案配置表。檔案配置表是用以記錄儲存檔案之邏輯位址所對應的叢集。例如,檔案配置表區中會儲存兩個檔案配置表,其中一個檔案配置表為正常存取所使用,而另一個檔案配置表為備份檔案配置表。
屬於根目錄區906的邏輯位址是用以儲存檔案描述區塊(File Description Block,FDB),其用以記錄目前儲存於記憶體儲存裝置100中之檔案與目錄的屬性資訊。特別是,檔案描述區塊會記錄用以儲存此些檔案的起始儲存位址(即,起始叢集)。
屬於檔案區908的邏輯位址是用以實際地儲存檔案的內容。
具體來說,磁碟儲存最小單位為扇區,每一個扇區包含了512位元組(byte)的資訊內容。然而,使用扇區當單位來儲存時,主機系統1000的效率會很差。一般來說,主機系統1000的作業系統1110不會以一個扇區當作存取檔案的單位,而是以叢集為一基本檔案單位。每一個叢集是架構在扇區的2次方倍數上。假定連續的8個扇區構成一個叢集,則此叢集的大小就為4096位元組。基此,在作業系統1110在存取資料時會以8個扇區連續讀取而提升了相對效率。但,叢集並非越大越好。因為當叢集越大時相對的可能會浪費許多儲存空間。例如,在一個叢集為4千位元組(kilobyte,KB)的情況下,當主機系統1000所儲存的檔案內容只有1KB時,此檔案還是佔用掉一個叢集的空間,剩餘之3KB的儲存空間就浪費掉了。特別是,叢集的總數目會受限於可複寫式非揮發性記憶體模組的容量與檔案配置表型態而有所不同。以FAT16來說,根據定義其本身最大的叢集數目必須介於4048個~65526個之間,所以當格式化一張128MB的記憶卡,其每一個叢集至少必須要包含4個扇區,不然會超出65526個叢集(cluster)的限制(127,901,696/512/4=62,452clusters)。所以每一叢集的大小為2KB。類似地,在FAT32中,最大的叢集數目必須介於65526個~4177918個之間。值得一提的是,在FAT16中,根目錄區906的大小是固定的。而在FAT32中,根目錄區906會被放在檔案區908來一起管理。
例如,在本範例實施例中,分割區(partition)900是符合FAT32規範的分割區。因此,屬於根目錄區906與檔案區908的扇區會被分組為叢集(cluster)600(1)~600(W)。在此假設叢集600(1)是被配置為根目錄區906的起始叢集。
圖5與圖6為根據本發明範例實施例所繪示的檔案配置表與檔案描述區塊的示意圖。
請參照圖5,檔案配置表區904至少包括了檔案配置表820,並且檔案配置表820具有叢集項欄位802(1)~802(J)。在此,叢集項欄位802(1)與叢集項欄位802(2)會被保留並填入預設值。此外,從叢集項欄位802(3)開始的每一個叢集項欄位都會對應至上述叢集的其中之一。例如,叢集項欄位802(3)是對應至叢集600(1),叢集項欄位802(4)是對應至叢集600(2),以此類推。對應叢集之叢集項欄位分別地會被填入一個登錄值,以表示叢集的鏈結關係。
在此,叢集項欄位的登錄值是以特殊字元來表示所對應之叢集的狀態。例如,在FAT32中,當叢集項欄位被填入“0000000h”時,則表示此叢集為閒置叢集(即,未儲存資料)。例如,對應至叢集項欄位802(8)的叢集600(6)為閒置叢集。此外,當叢集項欄位被填入“FFFFFF8h”-“FFFFFFFh”時,則表示此叢集為所儲存檔案的最後一個叢集。在此,“FFFFFF8h”-“FFFFFFFh”亦稱為檔案結束標記(End Of Clusterchain Mark,EOC Mark),例如,叢集項欄位802(3)、802(6)與802(7)所記錄的都是檔案結束標記。再者,當叢集項欄位被填入一個叢集的邏輯位址時,則表示此叢集是接續此叢集項欄位所對應之叢集來儲存資料。例如,叢集項欄位802(4)中記錄的值為叢集600(3),表示叢集600(3)是接續在叢集600(2)之後繼續來儲存所對應之檔案的內容。並且,叢集項欄位802(5)是對應至叢集600(3)且所記錄的登錄值為叢集600(4),則表示叢集600(4)接續在叢集600(3)之後繼續來儲存所對應之檔案的內容。因此,根據叢集項欄位802(4)與802(5)中的資訊,作業系統1110便能得知某一檔案是依序地被儲存在叢集600(2)、600(3)與叢集600(4)之中。
請參照圖6,根目錄區906包括目錄項欄位804(1)~804(G),並且每一個目錄項欄位包括了閒置欄位806、檔案名稱與副檔名欄位808與起始叢集欄位810。
閒置欄位806所記錄的值是用來表示此目錄項欄位是否被使用。例如,當閒置欄位806所記錄的值為”0”時,表示此目錄項欄位未被使用,在此稱未被使用的目錄項欄位為閒置目錄項欄位。當閒置欄位806所記錄的值為”1”,表示此目錄項欄位已被使用。
檔案名稱與副檔名欄位808所記錄的值是用來表示目錄項欄位所對應的檔案名稱與副檔名。例如,目錄項欄位804(1)中的檔案名稱與副檔名欄位記錄著”f1.exe”,表示目錄項欄位804(1)是對應至檔案”f1.exe”。
起始叢集欄位810所記錄的值是用來表示儲存目錄項欄位所對應之檔案(或子目錄)的第一個叢集。也就是說,目錄項欄位所對應的檔案可能是依序地儲存於多個叢集中,其中起始叢集欄位810是記錄這些叢集當中的第一個。例如,目錄項欄位804(1)中的起始叢集欄位所記錄的值為600(2),表示檔案”f1.exe”所儲存的起始位置是叢集600(2)。以此類推,目錄項欄位804(2)是對應至檔案名稱與副檔名為”f2.dll”的檔案,並且”f2.dll”所儲存的起始位置是叢集600(5)。然而,值得注意的是,目錄項欄位還可包括其他欄位,用以代表一檔案的其他資訊,例如檔案大小、檔案最後被修改的時間或是唯讀狀態,本發明並不限制目錄項欄位所包括的欄位個數與種類。另一方面,這些用以描述檔案資訊的欄位亦稱為檔案描述區塊(file description block,FDB)。換句話說,每個目錄項欄位若是被使用,便會對應至一個檔案或一個子目錄,而一個被使用的目錄項欄位會包括多個描述此檔案或子目錄的欄位,其中目錄項欄位則稱為對應此檔案或子目錄的檔案描述區塊。
請同時參照圖5與圖6,根據對檔案配置表區904與根目錄區906中的資訊,作業系統1110可獲知,在記憶體儲存裝置100中儲存有“f1.exe”與“f2.dll”兩個檔案,其中儲存“f1.exe”的起始邏輯位址為叢集600(2),而儲存“f2.dll”的起始邏輯位址為叢集600(5)。此外,根據檔案配置表區904中的叢集項欄位,作業系統1110可獲知“f1.exe”的內容是依序地被儲存在叢集600(2)、叢集600(3)與叢集600(4)中,並且“f2.dll”的內容僅被儲存在叢集600(5)中。
此外,值得一提的是,在FAT 32中,由於根目錄區906是與檔案區908一起管理。因此,屬於根目錄區906的叢集是可被動態地擴充以記錄更多檔案描述區塊,而使得記憶體儲存裝置100可儲存之檔案數量不受限制。具體來說,在檔案配置表904中會記錄根目錄區906的起始叢集對應的下一個叢集項欄位。
請參照回圖1D,在本範例實施例中,記憶體儲存裝置100還包括智慧卡晶片108。智慧卡晶片108是透過介面108a耦接至記憶體控制器104,其中介面108a是專門用以與智慧卡晶片108進行通訊的介面。
智慧卡晶片108具有微處理器、安全模組、唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、電子抹除式可編程唯讀記憶體(Electrically Erasable Programmable Read-Only Memory,EEPROM)、震盪器等元件。微處理器用以控制智慧卡晶片108的整體運作。安全模組用以對儲存至智慧卡晶片108中的資料進行加解密。震盪器用以產生智慧卡晶片108運作時所需之時脈訊號。隨機存取記憶體用以暫存運算的資料或韌體程式。電子抹除式可編程唯讀記憶體用以儲存使用者資料。唯讀記憶體用以儲存智慧卡晶片108的韌體程式。具體來說,當智慧卡晶片108運作時,智慧卡晶片108的微處理器會執行唯讀記憶體中的韌體程式來執行相關運作。
特別是,智慧卡晶片108的安全模組會執行一安全機制以防止欲竊取儲存於智慧卡晶片108中所儲存之資料的攻擊。例如,此攻擊包括時間攻擊(timing attack)、單一電力分析攻擊(single-power-analysis attack)或差異電力分析攻擊(differential-power-analysis)。此外,智慧卡晶片108所執行的安全機制是符合聯邦資訊處理標準(Federal Information Processing Standards,FIPS)140-2的第三等級或更高等級或者符合EMV EL的第三等級或更高等級。也就是說,智慧卡晶片108是通過FIPS 140-2之第四級以上的認證或者通過EMV EL之第四級以上的認證。在此,FIPS是美國聯邦政府制定給所有軍事機構除外的政府機構及政府的承包商所使用的公開標準,其中FIPS 140-2制定了關於資料安全的等級。此外,EMV是國際金融業界對於智慧卡與可使用晶片卡的銷售點(point-of-sale,POS)終端機,以及銀行機構所廣泛設置的自動櫃員機等所制定的專業交易與認證的標準規範。此規範是針對晶片***與現金卡的支付款系統(Payment System)的相關軟硬體所設置的標準。在本範例實施例中,藉由智慧卡晶片108的運作,記憶體儲存裝置100可提供具有身份認證的服務,例如,小額付款服務、票證服務等。
值得一提的是,智慧卡晶片108是透過記憶體儲存裝置100的連接器102接收來自於主機系統1000的指令與資料,或者傳送資料至主機系統1000,而非直接透過智慧卡介面(即,介面108a)與主機系統1000通訊。基此,在本範例實施例中,應用程式1120會被安裝在主機系統1000中,並且使用特定之通訊檔案來傳送指令資料單元(例如,指令-應用程式協定資料單元(Command-Application Protocol Data Unit,C-APDU))給智慧卡晶片108以及接收智慧卡晶片108的回應資料單元(例如,回應-應用程式協定資料單元(Response-Application Protocol Data Unit,R-APDU))。
具體來說,在本範例實施例中,記憶體控制器104會在記憶體儲存裝置100產生一個或多個通訊檔案,並且將用以儲存此一個或多個通訊檔案的邏輯位址的資訊傳送給應用程式1120。例如,當應用程式1120下達在記憶體儲存裝置100中儲存一個通訊檔案(例如,檔名為RESP.BIN的檔案)的指令時,作業系統1110會根據記憶體儲存裝置100的檔案系統(未繪示)使用部分的邏輯位址(例如,邏輯位址LBA(P)~LBA(X))來寫入此通訊檔案。在此,用以儲存此通訊檔案的邏輯位址的被稱為特定邏輯位址(如圖7的斜線所示)。之後,任何針對智慧卡晶片108的操作都是藉由應用程式1120對通訊檔案進行存取來完成。例如,應用程式1120會透過對通訊檔案的寫入指令將C-APDU傳送至記憶體儲存裝置100並且透過對通訊檔案的讀取指令從記憶體儲存裝置100中讀取R-APDU。值得一提的是,在其他作業系統中,應用程式1120亦可直接對用以儲存通訊檔案的特定邏輯位址進行存取,來執行對智慧卡晶片108的操作。
在本範例實施例中,當記憶體儲存裝置100被格式化以後,記憶體控制器104會將檔案配置表區904與根目錄區906初始化。
圖8是根據一範例實施例所繪示記憶體儲存裝置被格式化後的示意圖。
請參考圖8,在檔案配置表區904被初始化以後,叢集項欄位802(1)與802(2)記錄的是檔案系統的預設值,例如,”FFFFFFFh”。而叢集項欄位802(3)是對應至叢集600(1),用以作為根目錄區906。並且,叢集項欄位802(3)中記錄的是”FFFFFFFh”,其表示根目錄區906只佔用了一個叢集(即,叢集600(1))。在其他實施例中,根目錄區906也可以佔用兩個叢集以上,本發明並不在此限。而叢集項欄位802(4)~802(J)是分別對應至檔案區908中的叢集600(2)至600(W),其中記錄的是”0000000h”,表示叢集600(2)~600(W)為閒置的叢集,並沒有儲存任何檔案。另一方面,在根目錄區906被初始化以後,目錄項欄位804(1)~804(G)都未被使用,也就表示目前記憶體儲存裝置100中並沒有儲存任何檔案。
在檔案配置表區904與根目錄區906被初始化以後,通訊檔案可被配置在檔案區908中的叢集600(2)~600(W)的其中一個。值得注意的是,由於記錄通訊檔案之資訊是在記憶體儲存裝置100被格式化後由記憶體控制器104的記憶體管理電路202填入至檔案配置表區904與根目錄區906,因此,在主機系統1000未重新讀取檔案配置表區904與根目錄區906的資訊之前,主機系統1000無法獲知通訊檔案是被儲存那個叢集。也就是說,主機系統1000會識別記憶體儲存裝置100在被格式化以後未儲存任何檔案。
在記憶體儲存裝置100在被格式化之後通訊檔案是被配置在檔案區中的第一個叢集(即,叢集600(2)),並且將此通訊檔案的檔案描述區塊記錄在第一個目錄項(即,目錄項804(1))的例子中,倘若主機系統1000在未重新讀取檔案配置表區904與根目錄區906的資訊之前判定叢集600(2)是閒置叢集而使用第一個叢集600(2)來儲存資料時,儲存在叢集600(2)的通訊檔案以及記錄在目錄項804(1)中對應通訊檔案的檔案描述區塊可能會被覆寫並且造成智慧卡晶片108無法正常運作。
為了克服上述問題,在本範例實施例中,記憶體控制器104會從檔案區908的叢集之中的第K個叢集中開始儲存通訊檔案,其中K為正整數並且大於1且小於檔案區908的叢集的數目。也就是說,通訊檔案是儲存在檔案區908中的至少一個叢集,而此至少一叢集的一起始叢集是第K個叢集。例如,在本範例實施例中,檔案區908包括W-1個叢集並且K是介於2至W-1之間的正整數。換句話說,當通訊檔案的大小只需要用一個叢集來儲存時,通訊檔案會被儲存在叢集600(3)至叢集600(W)之間的其中一個。另一方面,記憶體控制器104還會將對應至此通訊檔案的檔案描述區塊記錄在根目錄區906的目錄項欄位之中的第M個目錄項欄位中,其中M為正整數並且大於1且小於這些目錄項欄位的數目。例如,在本範例實施例中,根目錄區906包括G個目錄項欄位並且M是介於2與G之間的正整數。此外,記憶體控制器104還會在檔案配置表區904的叢集項欄位之中對應檔案區908第K個叢集的叢集項欄位記錄檔案結束符號。
圖9A是根據一範例實施例說明將通訊檔案配置於檔案區之第二個叢集的範例示意圖。
請參照圖9A,在此範例中,記憶體控制器104的記憶體管理電路202是將通訊檔案940儲存在叢集600(3)中,其中叢集600(3)是檔案區908的第二個叢集,即,K=2。此外,記憶體管理電路202是將通訊檔案所對應的檔案描述區塊920記錄在根目錄區906中的目錄項欄位804(2),即,M=2。再者,記憶體管理電路202將對應至叢集600(3)的叢集項802(5)儲存檔案結束符號(即,”FFFFFFFh”)。
圖9B是根據一範例實施例說明通訊檔案儲存在多個叢集的範例示意圖。
請參照圖9B,在此範例中,通訊檔案940是被儲存在兩個叢集當中,且這兩個叢集中的一起始叢集是第K個叢集。也就是說,記憶體控制器104的記憶體管理電路202是將通訊檔案從第K個叢集開始儲存。具體來說,記憶體管理電路202是將通訊檔案940儲存在叢集600(3)與叢集600(4)中,其中叢集600(3)是檔案區908的第二個叢集,即,K=2。此外,記憶體管理電路202是將通訊檔案所對應的檔案描述區塊920記錄在根目錄區906中的目錄項欄位804(2),即,M=2。再者,記憶體管理電路202將對應通訊檔案940所儲存在的叢集中的最後一個叢集的叢集項欄位中儲存檔案結束符號。具體來說,由於通訊檔案是儲存在叢集600(3)與叢集600(4)中,因此叢集600(4)便是通訊檔案的最後一個叢集。記憶體管理電路202會在對應此最後一個叢集(即,叢集600(4))的叢集項欄位802(6)儲存檔案結束符號(即,”FFFFFFFh”)。除此之外,記憶體管理電路202也會在對應叢集600(3)的叢集項欄位802(5)中記錄”600(4)”,表示通訊檔案940是連續的被儲存在叢集600(3)與叢集600(4)中。然而,值得注意的是,通訊檔案940也可以被儲存在三個或三個以上的叢集當中,本發明並不限制通訊檔案940所佔用的叢集個數。
圖10是根據另一範例實施例說明將通訊檔案配置於檔案區之最後一個叢集的範例示意圖。
請參照圖10,在此範例中,記憶體控制器104是將通訊檔案940儲存在檔案區908的最後一個叢集600(W)中。並且,記憶體控制器104是將通訊檔案所對應的檔案描述區塊記錄920記錄在根目錄區906中的最後一個目錄項欄位804(G)中。再者,記憶體控制器104會在對應叢集600(W)的叢集項802(J)中記錄檔案結束符號(即,”FFFFFFFh”)。
值得一提的是,除上述於檔案系統之固定位址中記錄對應通訊檔案之資訊之外,在另一範例實施例中,記憶體控制器104亦可根據主機系統1000欲寫入記憶體儲存裝置100的檔案大小與檔案數目來決定K與M的數值。舉例來說,記憶體控制器104可以根據主機系統1000過去的寫入記錄,判斷主機系統1000欲寫入的檔案皆小於一個叢集大小,且數目都為1。如此一來,記憶體控制器104便會將K與M設為2。倘若,記憶體控制器104判斷主機系統1000欲寫入的檔案會大於一個叢集,或者是檔案個數會大於1,則可以設定K與M為大於2的數值。此外,記憶體控制器104也可以設定K與M相同,使得通訊檔案與所對應的檔案描述區塊會分別從叢集600(2)與目錄項欄位804(1)開始有相同的位移量(即,位移量分別為K與M,且K與M相同)。如此,倘若主機系統1000在格式化記憶體儲存裝置100之後且未重新讀取根目錄區906之前,將資料寫入至記憶體儲存裝置100時,便不會覆寫通訊檔案與對應此通訊檔案的檔案描述區塊。
此外,在另一範例實施例中,記憶體控制器104亦可在記憶體儲存裝置100被格式化之後,暫時不要建立通訊檔案與記錄對應此通訊檔案的檔案描述區塊。之後,當主機系統1000要讀取根目錄區906時,記憶體控制器104才建立通訊檔案並將通訊檔案的檔案描述區塊記錄在根目錄區906中的一個閒置目錄項欄位。具體來說,在記憶體儲存裝置100被格式化之後,當記憶體儲存裝置100接收到來自主機系統1000的讀取指令時,記憶體控制器104的記憶體管理電路202會判斷此讀取指令所指示的讀取位址是否為屬於根目錄區906的邏輯位址。若此讀取位址是對應根目錄區906的邏輯位址時,記憶體管理電路202會選擇目錄項欄位之中的一個閒置目錄項欄位,並在閒置目錄項欄位中記錄對應通訊檔案的檔案描述區塊。例如,記憶體管理電路202會逐一檢查目錄項欄位中的閒置欄位806,並且當找尋到一個目錄項欄位的閒置欄位中的值為”0”時,記憶體管理電路202會將通訊檔案所對應的檔案描述區塊記錄在此閒置目錄欄位中。最後,記憶體管理電路202會傳送根目錄區906的目錄項欄位中的資料給主機系統1000,以回應上述的讀取指令。如此,主機系統1000在讀取根目錄區906的目錄項欄位中的資訊後,便可以獲知通訊檔案的儲存位置與關於通訊檔案的其他資訊(如檔案名稱、副檔名與檔案大小等)。
在本範例實施例中,記憶體管理電路202會將儲存通訊檔案的邏輯位址傳送給應用程式1120。之後,應用程式1120會使用此邏輯位址來對智慧卡晶片108下達指令。具體來說,應用程式1120會根據要下達的指令來產生資料串,並將指示將此資料串寫入之用以儲存通訊檔案之邏輯位址(即,對應第K個叢集的邏輯位址)的寫入指令傳送至記憶體儲存裝置100。當記憶體儲存裝置100接收到此寫入指令與所對應的資料串時,記憶體控制器104的記憶體管理電路202會判斷此寫入指令所指示的寫入位址是否為邏輯位址之中對應第K個叢集的邏輯位址。若寫入位址是對應第K個叢集的邏輯位址時,則記憶體控制器104會識別所接收的資料串為智慧卡晶片108的指令資料單元並且將所接收的資料串傳送至智慧卡晶片108。
圖11是根據一範例實施例所繪示的資料處理方法的流程圖。
請參考圖11。在步驟S1102中,記憶體控制器104會將實體區塊至少分組為資料區、閒置區與系統區。在步驟S1104中,記憶體控制器104會配置多個邏輯位址並且將這些邏輯位址映射至資料區的實體區塊,其中邏輯位址會被格式化成檔案配置表區、根目錄區與檔案區。
之後,在步驟S1106中,記憶體控制器104會在檔案區的叢集之中以第K個叢集為起始叢集來儲存通訊檔案,其中K為正整數並且大於1且小於檔案區的叢集的數目。
然後,在步驟S1108中,記憶體控制器104會在根目錄區的目錄項欄位之中的第M個目錄項欄位中記錄對應通訊檔案的檔案描述區塊,其中M為正整數並且大於1且小於目錄項欄位的數目。
最後,在步驟S1110中,記憶體控制器104會在檔案配置表區的叢集項欄位之中對應儲存通訊檔案的最後一個叢集的叢集項欄位儲存檔案結束符號。圖11中的各步驟的運作方式已詳細說明如上,在此便不再贅述。(圖示文字請一併修改)
綜上所述,本發明範例實施例所提出的記憶體儲存裝置,記憶體控制器與資料處理方法,是在記憶體儲存裝置被格式化以後,從檔案區的第K個叢集開始配置通訊檔案,並將此通訊檔案的檔案描述區塊記錄於根目錄區中的第M個目錄項欄位,其中K與M大於1。藉此,在主機系統格式化記憶體儲存裝置後未重新讀取檔案系統之資訊之前,通訊檔案與對應此通訊檔案的檔案描述區塊可有效地避免被覆寫。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
1000...主機系統
1100...電腦
1110...作業系統
1120...應用程式
1102...微處理器
1104...隨機存取記憶體
1106...輸入/輸出裝置
1108...系統匯流排
1103...資料傳輸介面
1202...滑鼠
1204...鍵盤
1206...顯示器
1208...印表機
1212...隨身碟
1214...記憶卡
1216...固態硬碟
1310...數位相機
1312...SD卡
1314...MMC卡
1316...記憶棒
1318...CF卡
1320...嵌入式儲存裝置
100...記憶體儲存裝置
102...連接器
104...記憶體控制器
106...可複寫式非揮發性記憶體模組
108...智慧卡晶片
108a...介面
304(0)~304(R)...實體區塊
202...記憶體管理電路
204...主機介面
206‧‧‧記憶體介面
208‧‧‧緩衝記憶體
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
402‧‧‧資料區
404‧‧‧閒置區
406‧‧‧系統區
408‧‧‧取代區
LBA(0)~LBA(N)‧‧‧邏輯位址
900‧‧‧分割區
902‧‧‧主引導磁區
904‧‧‧檔案配置表區
906‧‧‧根目錄區
908‧‧‧檔案區
600(1)~600(W)‧‧‧叢集
820‧‧‧檔案配置表
802(1)~802(J)‧‧‧叢集項欄位
804(1)~804(G)‧‧‧目錄項欄位
806‧‧‧閒置欄位
808‧‧‧檔案名稱與副檔名欄位
810‧‧‧叢集起始叢集欄位
920‧‧‧檔案描述區塊
940‧‧‧通訊檔案
S1102、S1104、S1106、S1108、S1110‧‧‧資料處理方法的步驟
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖1D是根據一範例實施例繪示的記憶體儲存裝置的概要方塊圖。
圖1E是根據一範例實施例所繪示的記憶體控制器的概要方塊圖。
圖2與圖3是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
圖4是根據一範例實施例所繪示的檔案系統的範例示意圖。
圖5是根據一範例實施例所繪示的檔案配置表區的範例示意圖。
圖6是根據一範例實施例所繪示的根目錄區的範例示意圖。
圖7是根據一範例實施例所繪式的應用程式存取通訊檔案的範例示意圖。
圖8是根據一範例實施例所繪示記憶體儲存裝置被格式化後的示意圖。
圖9A是根據一範例實施例說明配置通訊檔案於檔案區第二個叢集的範例示意圖。
圖9B是根據一範例實施例說明通訊檔案儲存在多個叢集的範例示意圖。
圖10是根據另一範例實施例說明配置通訊檔案於檔案區最後一個叢集的範例示意圖。
圖11是根據一範例實施例所繪示的資料處理方法的流程圖。
S1102、S1104、S1106、S1108、S1110...資料處理方法的步驟
Claims (15)
- 一種資料處理方法,用於具有一可複寫式非揮發性記憶體模組與一智慧卡晶片的一記憶體儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體區塊,該資料處理方法包括:將該些實體區塊至少分組為一資料區、一閒置區與一系統區;配置多個邏輯位址並且將該些邏輯位址映射該資料區的實體區塊,其中該些邏輯位址會被至少格式化成一檔案配置表區、一根目錄區與一檔案區,該檔案配置表區具有多個叢集項(cluster entry)欄位,該根目錄區具有多個目錄項(directory entry)欄位,並且該檔案區具有多個叢集;在該檔案區的該些叢集之中的至少一叢集中儲存一通訊檔案,其中該至少一叢集之中的起始叢集為第K個叢集,K為正整數並且小於該檔案區的該些叢集的數目;在該根目錄區的該些目錄項欄位之中的第M個目錄項欄位中記錄對應該通訊檔案的一檔案描述區塊(file description block,FDB),其中M為正整數並且小於該些目錄項欄位的數目;以及在該檔案配置表區的該些叢集項欄位之中對應該至少一叢集中的最後一個叢集的叢集項欄位儲存一檔案結束符號,其中在該根目錄區的該些目錄項欄位之中的第M個目錄項欄位中記錄對應該通訊檔案的該檔案描述區塊的步 驟包括:接收來自一主機系統的一讀取指令;判斷該讀取指令所指示的一讀取位址是否為該些邏輯位址之中對應該根目錄區的邏輯位址;若該讀取位址為該些邏輯位址之中對應該根目錄區的邏輯位址時,則選擇該些目錄項欄位之中的一閒置目錄項欄位,其中該閒置目錄項欄位未被使用;在該閒置目錄項欄位中記錄對應該通訊檔案的該檔案描述區塊;以及傳送該根目錄的該些目錄項欄位中的資料給該主機系統,以回應該讀取指令。
- 如申請專利範圍第1項所述之資料處理方法,其中在該檔案區的該些叢集之中的該至少一叢集中儲存該通訊檔案的步驟包括:在該檔案區的該些叢集之中的最後一個叢集中儲存該通訊檔案。
- 如申請專利範圍第1項所述之資料處理方法,其中M等於2。
- 如申請專利範圍第1項所述之資料處理方法,其中M等於K。
- 如申請專利範圍第1項所述之資料處理方法,更包括:接收來自該主機系統的一寫入指令與對應該寫入指令的一資料串; 判斷該寫入指令所指示的一寫入位址是否為該些邏輯位址之中對應該至少一叢集的邏輯位址;以及若該寫入指令所指示的該寫入位址為該些邏輯位址之中對應該至少一叢集的邏輯位址時,則將該資料串傳送至該智慧卡晶片。
- 一種記憶體控制器,用於具有一可複寫式非揮發性記憶體模組與一智慧卡晶片的一記憶體儲存裝置中,該記憶體控制器包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體區塊;以及一記憶體管理電路,耦接該主機介面與該記憶體介面,並且用以將該些實體區塊至少分組為一資料區、一閒置區與一系統區,其中該記憶體管理電路配置多個邏輯位址並且將該些邏輯位址映射該資料區的實體區塊,其中該些邏輯位址會被該主機系統至少格式化成一檔案配置表區、一根目錄區與一檔案區,該檔案配置表區具有多個叢集項(cluster entry)欄位,該根目錄區具有多個目錄項(directory entry)欄位,並且該檔案區具有多個叢集,其中該記憶體管理電路在該檔案區的該些叢集之中的至少一叢集中儲存一通訊檔案,其中該至少一叢集之中的起始叢集為第K個叢集,K為正整數並且小於該檔案區 的該些叢集的數目,其中該記憶體管理電路在該根目錄區的該些目錄登錄欄位之中的第M個目錄項欄位中記錄對應該通訊檔案的一檔案描述區塊(file description block,FDB),其中M為正整數並且小於該些目錄項欄位的數目,其中該記憶體管理電路在該檔案配置表區的該些叢集項欄位之中對應該至少一叢集中的最後一個叢集的叢集項欄位儲存一檔案結束符號,其中該記憶體管理電路接收來自該主機系統的一讀取指令,並且判斷該讀取指令所指示的一讀取位址是否為該些邏輯位址之中對應該根目錄區的邏輯位址,若該讀取位址為該些邏輯位址之中對應該根目錄區的邏輯位址時,則該記憶體管理電路選擇該些目錄項欄位之中未被使用的一閒置目錄項欄位,並且在該閒置目錄項欄位中記錄對應該通訊檔案的該檔案描述區塊,其中該記憶體管理電路傳送該根目錄的該些目錄項欄位中的資料給該主機系統,以回應該讀取指令。
- 如申請專利範圍第6所述之記憶體控制器,其中該記憶體管理電路在該檔案區的該些叢集之中的最後一個叢集中儲存該通訊檔案。
- 如申請專利範圍第6項所述之記憶體控制器,其中M等於2。
- 如申請專利範圍第6項所述之記憶體控制器,其中M等於K。
- 如申請專利範圍第6項所述之記憶體控制器,其中該記憶體管理電路接收來自該主機系統的一寫入指令與對應該寫入指令的一資料串,並且判斷該寫入指令所指示的一寫入位址是否為該些邏輯位址之中對應該至少一叢集的邏輯位址,若該寫入指令所指示的該寫入位址為該些邏輯位址之中對應該至少一叢集的邏輯位址時,則該記憶體管理電路將該資料串傳送至該智慧卡晶片。
- 一種記憶體儲存裝置,包括:一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組;一智慧卡晶片;以及一記憶體控制器,耦接至該連接器、該可複寫式非揮發性記憶體模組與該智慧卡晶片,並且用以將該些實體區塊至少分組為一資料區、一閒置區與一系統區,其中該記憶體控制器配置多個邏輯位址並且將該些邏輯位址映射該資料區的實體區塊,其中該些邏輯位址會被該主機系統至少格式化成一檔案配置表區、一根目錄區與一檔案區,該檔案配置表區具有多個叢集項(cluster entry)欄位,該根目錄區具有多個目錄項(directory entry)欄位,並且該檔案區具有多個叢集,其中該記憶體控制器在該檔案區的該些叢集之中的至少一叢集中儲存一通訊檔案,其中該至少一叢集之中的起始叢集為第K個叢集,K為正整數並且小於該檔案區的 該些叢集的數目,其中該記憶體控制器在該根目錄區的該些目錄登錄欄位之中的第M個目錄項欄位中記錄對應該通訊檔案的一檔案描述區塊(file description block,FDB),其中M為正整數並且小於該些目錄項欄位的數目,其中該記憶體控制器在該檔案配置表區的該些叢集項欄位之中對應該至少一叢集中的最後一個叢集的叢集項欄位儲存一檔案結束符號,其中該記憶體控制器接收來自該主機系統的一讀取指令,並且判斷該讀取指令所指示的一讀取位址是否為該些邏輯位址之中對應該根目錄區的邏輯位址,若該讀取位址為該些邏輯位址之中對應該根目錄區的邏輯位址時,則該記憶體控制器選擇該些目錄項欄位之中未被使用的一閒置目錄項欄位,並且在該閒置目錄項欄位中記錄對應該通訊檔案的該檔案描述區塊,其中該記憶體控制器傳送該根目錄的該些目錄項欄位中的資料給該主機系統,以回應該讀取指令。
- 如申請專利範圍第11項所述之記憶體儲存裝置,其中該記憶體控制器在該檔案區的該些叢集之中的最後一個叢集中儲存該通訊檔案。
- 如申請專利範圍第11項所述之記憶體儲存裝置,其中M等於2。
- 如申請專利範圍第11項所述之記憶體儲存裝置,其中M等於K。
- 如申請專利範圍第11項所述之記憶體儲存裝置,其中該記憶體控制器接收來自該主機系統的一寫入指令與對應該寫入指令的一資料串,並且判斷該寫入指令所指示的一寫入位址是否為該些邏輯位址之中對應該至少一叢集的邏輯位址,若該寫入指令所指示的該寫入位址為該些邏輯位址之中對應該至少一叢集的邏輯位址時,則該記憶體控制器將該資料串傳送至該智慧卡晶片。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101100646A TWI454912B (zh) | 2012-01-06 | 2012-01-06 | 資料處理方法、記憶體控制器與記憶體儲存裝置 |
US13/426,620 US8769243B2 (en) | 2012-01-06 | 2012-03-22 | Apparatus with smart card chip for storing communication file in non-volatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101100646A TWI454912B (zh) | 2012-01-06 | 2012-01-06 | 資料處理方法、記憶體控制器與記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201329712A TW201329712A (zh) | 2013-07-16 |
TWI454912B true TWI454912B (zh) | 2014-10-01 |
Family
ID=48744762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101100646A TWI454912B (zh) | 2012-01-06 | 2012-01-06 | 資料處理方法、記憶體控制器與記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8769243B2 (zh) |
TW (1) | TWI454912B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI451248B (zh) * | 2012-01-13 | 2014-09-01 | Phison Electronics Corp | 資料保護方法、記憶體控制器與記憶體儲存裝置 |
US9569447B2 (en) * | 2013-11-08 | 2017-02-14 | Texas Instruments Incorporated | File access method and system thereof |
CN105095011B (zh) * | 2014-05-23 | 2019-03-19 | 群联电子股份有限公司 | 数据处理方法、存储器控制电路单元以及存储器存储装置 |
CN105337944B (zh) * | 2014-08-12 | 2020-02-21 | 格马尔托股份有限公司 | 管理安全元件中的若干简档的方法 |
TWI546667B (zh) * | 2015-01-28 | 2016-08-21 | 群聯電子股份有限公司 | 智慧卡管理方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI566182B (zh) * | 2015-03-24 | 2017-01-11 | 群聯電子股份有限公司 | 儲存裝置管理方法與系統及其記憶體儲存裝置 |
US10102138B2 (en) * | 2015-10-22 | 2018-10-16 | Western Digital Technologies, Inc. | Division of data storage in single-storage device architecture |
KR101891755B1 (ko) * | 2017-02-01 | 2018-08-27 | (주)피타소프트 | 데이터 레코딩 장치에서의 적응형 데이터 레코딩 방법 |
US11314428B1 (en) * | 2020-10-09 | 2022-04-26 | Western Digital Technologies, Inc. | Storage system and method for detecting and utilizing wasted space using a file system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080985A1 (en) * | 2002-04-15 | 2005-04-14 | Junko Sasaki | Data storage device |
US20060129749A1 (en) * | 2004-04-20 | 2006-06-15 | Masahiro Nakanishi | Nonvolatile memory system, nonvolatile memory device, memory controller, access device, and method for controlling nonvolatile memory device |
TW200739342A (en) * | 2005-08-03 | 2007-10-16 | Sandisk Corp | Nonvolatile memory with block management |
US20090187709A1 (en) * | 2008-01-23 | 2009-07-23 | Phison Electronics Corp. | Method, system and controller for transmitting and dispatching data stream |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044330A1 (en) * | 2003-07-28 | 2005-02-24 | Gidon Elazar | System, apparatus and method for controlling a storage device |
JP4667014B2 (ja) * | 2004-11-18 | 2011-04-06 | キヤノン株式会社 | 記憶管理装置及びその制御方法 |
US7509474B2 (en) * | 2005-06-08 | 2009-03-24 | Micron Technology, Inc. | Robust index storage for non-volatile memory |
US7752412B2 (en) * | 2006-09-29 | 2010-07-06 | Sandisk Corporation | Methods of managing file allocation table information |
US7917479B2 (en) * | 2007-03-20 | 2011-03-29 | Micron Technology, Inc. | Non-volatile memory devices, systems including same and associated methods |
US7917697B2 (en) * | 2007-06-27 | 2011-03-29 | Sandisk Corporation | Auto start configuration with portable mass storage device |
CN101383017B (zh) * | 2007-09-06 | 2012-07-04 | ***股份有限公司 | 一种智能sd卡及访问智能sd卡的方法 |
US8812756B2 (en) * | 2008-06-13 | 2014-08-19 | Phison Electronics Corp. | Method of dispatching and transmitting data streams, memory controller and storage apparatus |
JP2010026933A (ja) * | 2008-07-23 | 2010-02-04 | Toshiba Corp | メモリシステム、ホスト装置 |
TWI385518B (zh) * | 2009-03-20 | 2013-02-11 | Phison Electronics Corp | 用於快閃記憶體的資料儲存方法及儲存系統 |
JP5481493B2 (ja) * | 2009-11-11 | 2014-04-23 | パナソニック株式会社 | アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム |
-
2012
- 2012-01-06 TW TW101100646A patent/TWI454912B/zh active
- 2012-03-22 US US13/426,620 patent/US8769243B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080985A1 (en) * | 2002-04-15 | 2005-04-14 | Junko Sasaki | Data storage device |
US20060129749A1 (en) * | 2004-04-20 | 2006-06-15 | Masahiro Nakanishi | Nonvolatile memory system, nonvolatile memory device, memory controller, access device, and method for controlling nonvolatile memory device |
TW200739342A (en) * | 2005-08-03 | 2007-10-16 | Sandisk Corp | Nonvolatile memory with block management |
US20090187709A1 (en) * | 2008-01-23 | 2009-07-23 | Phison Electronics Corp. | Method, system and controller for transmitting and dispatching data stream |
Also Published As
Publication number | Publication date |
---|---|
US20130179626A1 (en) | 2013-07-11 |
TW201329712A (zh) | 2013-07-16 |
US8769243B2 (en) | 2014-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI454912B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
US10564859B2 (en) | Composite solid state drive identification and optimization technologies | |
TWI451248B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
US9043549B2 (en) | Memory storage apparatus, memory controller, and method for transmitting and identifying data stream | |
US8954705B2 (en) | Memory space management method and memory controller and memory storage device and memory storage using the same | |
US9772937B2 (en) | Data processing method, memory controller and memory storage apparatus | |
US8296466B2 (en) | System, controller, and method thereof for transmitting data stream | |
TWI472927B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
US8812756B2 (en) | Method of dispatching and transmitting data streams, memory controller and storage apparatus | |
CN103218300B (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US8595420B2 (en) | Method for dispatching and transmitting data streams between host system and memory storage apparatus having non-volatile memory and smart card chip, memory controller, and memory storage apparatus | |
CN103218319B (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
US9483195B2 (en) | Response reading method and data transmission system | |
TW201214111A (en) | Data writing method, memory controller and memory storage apparatus | |
US9817573B2 (en) | Smart card management method, memory storage device and memory control circuit unit | |
CN111208932A (zh) | 映射表更新方法、存储器控制电路单元与存储器存储装置 | |
US8544424B2 (en) | System, controller and method thereof for transmitting and distributing data stream | |
CN103870408A (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
CN109460372B (zh) | 数据存储方法、存储器控制电路单元及存储器存储装置 | |
US10324894B2 (en) | Storage device management method and system, and memory storage device thereof | |
CN102880423B (zh) | 数据串分派与传送方法、存储器控制器与存储器储存装置 |