TW201804311A - 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 - Google Patents
資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 Download PDFInfo
- Publication number
- TW201804311A TW201804311A TW105123217A TW105123217A TW201804311A TW 201804311 A TW201804311 A TW 201804311A TW 105123217 A TW105123217 A TW 105123217A TW 105123217 A TW105123217 A TW 105123217A TW 201804311 A TW201804311 A TW 201804311A
- Authority
- TW
- Taiwan
- Prior art keywords
- logical block
- target
- memory
- page
- address
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Memory System (AREA)
Abstract
一種資料讀取方法,其包括從主機系統接收讀取指令,其中所述讀取指令包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,並且所述讀取指令用以指示從可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取目標資料且將所讀取的目標資料寫入至主機記憶體的至少一目標記憶體頁面;根據所述讀取指令來獲得每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址;以及從至少一目標邏輯區塊中選擇第一目標邏輯區塊,並且根據所獲得的第一目標記憶體頁面的位址將所讀取的第一目標資料寫入至第一目標記憶體頁面中。
Description
本發明是有關於一種資料傳輸方法,且特別是有關於一種資料讀取方法、資料寫入方法及使用所述方法的儲存控制器。
數位相機、手機與MP3在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體(rewritable non-volatile memory)具有資料非揮發性、省電、體積小、無機械結構、讀寫速度快等特性,最適於此些電子產品。因此,近年快閃記憶體產業成為電子產業中相當熱門的一環。例如,廣泛用於行動電子裝置上的嵌入式多媒體卡(embeded Multi Media Card, eMMC)就是一種以快閃記憶體作為儲存媒體的儲存裝置。
為了配合可複寫式非揮發性記憶體的儲存裝置(如,固態硬碟)的較高的寫入/讀取速度,許多資料傳輸介面(例如,快捷外設互聯標準介面,PCIe介面)也開始支援更高階的資料傳輸協定,例如,快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe),以發揮高速的可複寫式非揮發性記憶體儲存裝置的工作效率。
快速非揮發性記憶體介面標準定義了用於使用者資料傳輸的多個存取指令。此些存取指令具有許多指令參數。一般來說,當前的可複寫式非揮發性記憶體儲存裝置的儲存控制器會根據所接收存取指令的所述指令參數來循序地存取資料。
由於在可複寫式非揮發性記憶體儲存裝置中的每筆資料所對應的儲存單元並不是隨時準備被存取。因此,為了根據存取指令循序地存取對應存取指令的資料,儲存控制器會等待對應所述資料的所有的儲存單元都準備好進行存取,再根據存取指令的指示來循序地對所有資料進行存取操作。如此一來,儲存控制器會浪費時間在等待的過程。另一方面,為了加快處理速度,儲存控制器也可能需要先暫存預先存取對應已準備好的儲存單元的資料。如此一來,還會耗費資源於暫存資料上,造成成本的提高。
因此,要如何善用對應快速非揮發性記憶體介面標準的存取指令所具有的指令參數,以減少上述的儲存控制器的等待的過程且減少對於暫存欲存取的資料的需求,進而增進資料存取的效率且降低資源的耗費,是此領域技術人員所致力的目標。
本發明提供一種資料讀取方法與資料寫入方法,以及使用此些方法的儲存控制器,可減少上述的儲存控制器的等待的過程且減少對於暫存欲讀取/寫入的資料的需求。
本發明的一實施例提供一種資料讀取方法,其適用於從可複寫式非揮發性記憶體模組中讀取資料至主機系統的主機記憶體中,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且所述主機記憶體具有多個記憶體頁面。所述方法包括:從所述主機系統接收讀取指令,其中所述讀取指令包括起始邏輯區塊位址(SLBA)、邏輯區塊數目(NLB)、第一實體區域頁面指標(PRP1)與第二實體區域頁面指標(PRP2)。所述讀取指令用以指示從所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取目標資料且將所讀取的所述目標資料寫入至所述主機記憶體的至少一目標記憶體頁面,其中所述目標資料是從所述至少一目標邏輯區塊中的起始邏輯區塊開始被儲存。所述起始邏輯區塊位址用以指示所述起始邏輯區塊的位址。所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中儲存所述目標資料的邏輯區塊的數目。所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址。根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址;以及從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,讀取所述第一目標邏輯區塊所儲存的第一目標資料,並且根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址將所讀取的所述第一目標資料寫入至所述第一目標記憶體頁面中。
本發明的另一實施例提供一種資料寫入方法,其適用於從主機系統的主機記憶體將資料寫入至可複寫式非揮發性記憶體模組中,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且所述主機記憶體具有多個記憶體頁面。所述方法包括:從所述主機系統接收寫入指令,其中所述寫入指令包括起始邏輯區塊位址(SLBA)、邏輯區塊數目(NLB)、第一實體區域頁面指標(PRP1)與第二實體區域頁面指標(PRP2),其中所述寫入指令用以指示將目標資料寫入至所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊中,其中所述至少一目標邏輯區塊中排序在最前面的邏輯區塊為起始邏輯區塊。所述起始邏輯區塊位址用以指示所述起始邏輯區塊的位址。所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中儲存所述目標資料的邏輯區塊的數目。所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址,其中對應所述寫入指令的所述目標資料被儲存於所述主機記憶體的所述記憶體頁面中的至少一目標記憶體頁面中。根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址,其中每一個目標邏輯區塊所分別對應的目標記憶體頁面為所述至少一目標記憶體頁面的其中之一;以及從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址來讀取第一目標資料,並且將所讀取的所述第一目標資料寫入至所述第一目標邏輯區塊中。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括連接介面電路、記憶體介面控制電路、處理器與資料傳輸管理電路。連接介面電路用以耦接至主機系統,其中所述主機系統配置有主機記憶體,其中所述主機記憶體具有多個記憶體頁面。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊。處理器耦接至所述連接介面電路單元及所述記憶體介面控制電路。資料傳輸管理電路耦接至所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述處理器用以從所述主機系統接收讀取指令,其中所述讀取指令包括起始邏輯區塊位址(SLBA)、邏輯區塊數目(NLB)、第一實體區域頁面指標(PRP1)與第二實體區域頁面指標(PRP2),其中所述讀取指令用以指示從所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取目標資料且將所讀取的所述目標資料寫入至所述主機記憶體的至少一目標記憶體頁面,其中所述目標資料是從所述至少一目標邏輯區塊中的一起始邏輯區塊開始被儲存。所述起始邏輯區塊位址用以指示所述起始邏輯區塊的位址。所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中儲存所述目標資料的邏輯區塊的數目。所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址。所述處理器用以指示所述資料傳輸管理電路根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址,其中所述記憶體介面控制電路用以從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,並且讀取所述第一目標邏輯區塊所儲存的第一目標資料。資料傳輸管理電路用以根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址將所讀取的所述第一目標資料寫入至所述第一目標記憶體頁面中。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括連接介面電路、記憶體介面控制電路、處理器與資料傳輸管理電路。連接介面電路用以耦接至主機系統,其中所述主機系統配置有主機記憶體,其中所述主機記憶體具有多個記憶體頁面。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊。處理器耦接至所述連接介面電路單元及所述記憶體介面控制電路。資料傳輸管理電路耦接至所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述處理器用以從所述主機系統接收寫入指令,其中所述寫入指令包括起始邏輯區塊位址(SLBA)、邏輯區塊數目(NLB)、第一實體區域頁面指標(PRP1)與第二實體區域頁面指標(PRP2)。所述寫入指令用以指示將目標資料寫入至所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊中,其中所述至少一目標邏輯區塊中排序在最前面的邏輯區塊為起始邏輯區塊。所述起始邏輯區塊位址用以指示所述起始邏輯區塊的位址。所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中儲存所述目標資料的邏輯區塊的數目。所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址。對應所述寫入指令的所述目標資料被儲存於所述主機記憶體的所述記憶體頁面中的至少一目標記憶體頁面中。所述處理器用以指示所述資料傳輸管理電路根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址,其中每一個目標邏輯區塊所分別對應的目標記憶體頁面為所述至少一目標記憶體頁面的其中之一。所述記憶體介面控制電路用以從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,其中資料傳輸管理電路用以根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址來讀取第一目標資料,並且所述記憶體介面控制電路更用以將所讀取的所述第一目標資料寫入至所述第一目標邏輯區塊中。
基於上述,本發明的多個實施例所提供的資料傳輸(讀取/寫入)方法,可使儲存控制器不需等待所有儲存單元都準備好被存取,並且可不循序地直接存取已經準備好被存取的部分儲存單元,進而避免儲存控制器花費過多的時間於等待上並且減少為了循序存取而耗費的暫存空間與資源。同時,可利用硬體來快速地進行對於目標邏輯區塊所對應的目標記憶體頁面的位址的計算,增加了處理資料傳輸的速度,也減少了儲存控制器的處理器的負擔,進而增進了儲存裝置與其所進行的資料傳輸操作的工作效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。通常儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211、資料傳輸管理電路(Data Transfer Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive, SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板20也可以透過系統匯流排耦接至全球定位系統(Global Positioning System, GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment, PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment, SATA)標準、通用序列匯流排(Universal Serial Bus, USB)標準、SD介面標準、超高速一代(Ultra High Speed-I, UHS-I)介面標準、超高速二代(Ultra High Speed-II, UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體1202可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。更詳細來說,在本實施例中,主機記憶體120被劃分為多個記憶體頁面(Memory Page),以供指令與資料的儲存管理。每個記憶體頁面具有起始位址(Starting Address of Memory Page,SAMP)與結束位址(Ending Address of Memory Page,EAMP)。在本實施例中,每個記憶體頁面是利用16位元大小的位址來進行定位,例如,排序為第一個的記憶體頁面的起始位址(SAMP)可設定為 “0000”,並且結束位址(EAMP)可設定為 “0FFF”。 每個記憶體頁面的大小為4096位元組(Bytes)(即,4KB)。主機記憶體用來進行資料傳輸的記憶體頁面的總空間為64KB,即,共16個記憶體頁面。然而,本發明並不限於主機記憶體的位址定位方式。例如,在另一實施例中,主機記憶體可具有更多或是更少的空間,並且可對應地使用適合的定位方式來進行位址定位。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體儲存單元中。
在本實施例中,如上所述,儲存控制器210還包括資料傳輸管理電路212與記憶體介面控制電路213。
其中,資料傳輸管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料傳輸管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220讀取資料,並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中。以下會再配合多個圖式與實施例來詳細說明本發明中資料傳輸管理電路212的功能。
記憶體介面控制電路213用以接受處理器211的指示,配合資料傳輸管理電路212來進行對於可複寫式非揮發性記憶體模組220的資料的寫入(亦稱,程式化,Programming)、讀取操作。記憶體介面控制電路213亦可對可複寫式非揮發性記憶體模組220進行抹除操作。
舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
在本實施例中,記憶體介面控制電路213還會辨識配置給可複寫式非揮發性記憶體模組220的邏輯區塊的狀態。記憶體介面控制電路213亦可辨識可複寫式非揮發性記憶體模組220的實體區塊的狀態。更詳細來說,當記憶體介面控制電路213根據讀取/寫入指令發出讀取/寫入請求給可複寫式非揮發性記憶體模組220後,記憶體介面控制電路213會辨識對應的可複寫式非揮發性記憶體模組220的儲存單元(如,實體區塊、實體頁面,或是對應的邏輯區塊、邏輯頁面)的狀態是否為就緒狀態(readiness)。舉例來說,當記憶體介面控制電路213辨識到對應讀取/寫入指令的實體區塊以準備好進行資料傳輸時,記憶體介面控制電路213會回報映射至所述實體區塊的邏輯區塊為就緒狀態。換句話說,記憶體介面控制電路213會根據判斷邏輯區塊所映射的實體區塊是否準備好進行資料傳輸來判斷所述邏輯區塊的狀態是否為就緒狀態。記憶體介面控制電路213可主動判斷對應的實體區塊的狀態是否準備好進行資料傳輸,也可被動地接收來自可複寫式非揮發性記憶體模組220的對應的實體區塊的狀態回報,本發明不限於記憶體介面控制電路213如何辨識欲進行資料存取的實體區塊/邏輯區塊是否為就緒狀態的方法。
可複寫式非揮發性記憶體模組220是耦接至記憶體控制電路單元404並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體區塊(亦稱,實體抹除單元)。具體來說,同一條字元線(或同一個字元線層)上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞被用以儲存2個以上的位元,則同一條字元線(或同一個字元線層)上的實體程式化單元至少可被分類為一個下(lower)實體程式化單元與一個上(upper)實體程式化單元。
在一實施例中,若每一個記憶胞被用以儲存2個位元,則同一條字元線(或同一個字元線層)上的實體程式化單元可被分類為一個下實體程式化單元與一個上實體程式化單元。例如,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於下實體程式化單元,並且一記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於上實體程式化單元。一般來說,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,及/或下實體程式化單元的可靠度會高於上實體程式化單元的可靠度。在另一實施例中,若每一個記憶胞被用以儲存3個位元,則同一條字元線(或同一個字元線層)上的實體程式化單元可被分類為一個下實體程式化單元、一個上實體程式化單元及一個額外(extra)實體程式化單元。例如,一記憶胞的最低有效位元是屬於下實體程式化單元,一記憶胞的中間有效位元(Central Significant Bit,CSB)是屬於上實體程式化單元,並且一記憶胞的的最高有效位元是屬於額外實體程式化單元。
在本實施例中,資料是以實體區塊為單位作為寫入資料(程式化)的儲存單元。實體區塊亦可稱為實體抹除單元或實體單元。實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。每一實體區塊會具有多個實體程式化單元。實體程式化單元為實體頁面(page)或是實體扇(sector)。若實體程式化單元為實體頁面,則此些實體程式化單元通常包括資料位元區與冗餘(redundancy)位元區。資料位元區包含多個實體扇,用以儲存使用者資料,而冗餘位元區用以儲存系統資料(例如,錯誤更正碼)。
然而,本發明不限於此。例如,在另一實施例中,亦可變化本實施例所述的資料傳輸方法,應用至以實體程式化單元為單位作為寫入資料的儲存單元的可複寫式非揮發性記憶體模組220。
在一實施例中,儲存控制器210是基於實體單元來管理可複寫式非揮發性記憶體模組220中的記憶胞。例如,在以下實施例中,是以一個實體區塊作為一個實體單元的範例。然而,在另一實施例中,一個實體單元亦可以是指任意數目的記憶胞組成,視實務上的需求而定。此外,必須瞭解的是,當儲存控制器211對可複寫式非揮發性記憶體模組220中的記憶胞(或實體單元)進行分組以執行對應的管理操作時,此些記憶胞(或實體單元)是被邏輯地分組,而其實際位置並未更動。
儲存控制器210會配置多個邏輯單元來映射可複寫式非揮發性記憶體模組220的用以儲存使用者資料的多個實體單元,並且主機系統10是透過邏輯單元來存取用以儲存使用者資料的多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。例如,邏輯單元可以是邏輯區塊(logical block)、邏輯頁面(logical page)或是邏輯扇區(logical sector)。一個邏輯單元可以是映射至一或多個實體單元,其中實體單元可以是一或多個實體位址、一或多個實體扇、一或多個實體程式化單元或者一或多個實體抹除單元。在本實施例中,邏輯單元為邏輯區塊。
此外,儲存控制器210會建立邏輯轉實體位址映射表(logical to physical address mapping table)與實體轉邏輯位址映射表(physical to logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯單元(如,邏輯區塊、邏輯頁面或邏輯扇區)與實體單元(如,實體抹除單元、實體程式化單元、實體扇區)之間的映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體單元,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。
在一實施例中,儲存控制器210還包括緩衝記憶體與電源管理電路。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料。電源管理電路是耦接至處理器211並且用以控制儲存裝置20的電源。
在本實施例中,對應快速非揮發性記憶體介面標準的資料傳輸指令亦稱為快速非揮發性記憶體輸入輸出指令(NVMe I/O Command)。其中,快速非揮發性記憶體輸入輸出指令又可分為快速非揮發性記憶體輸入輸出讀取指令(NVMe I/O Read Command)與快速非揮發性記憶體輸入輸出寫入指令(NVMe I/O Write Command)。快速非揮發性記憶體輸入輸出指令的指令敘述的主要欄位(field)為起始邏輯區塊位址(Starting Logical Block Address,SLBA)、邏輯區塊數目(Number of Logical Blocks)、第一實體區域頁面指標(Physical Region Page Pointer 1,PRP1)與第二實體區域頁面指標(Physical Region Page Pointer 2,PRP2)。
起始邏輯區塊位址用以指示位址(最大為64位元),此位址為所欲進行資料傳輸的多個邏輯區塊位址範圍中的排序最前面(第一個)的邏輯區塊的位址。邏輯區塊數目用以指示所欲進行資料傳輸的多個邏輯區塊位址範圍中邏輯區塊的總數量。
應注意的是,在本實施例中,當邏輯區塊數目的數值為 “0”時,其表示邏輯區塊數目為“1”個。換句話說,欲進行資料傳輸的多個邏輯區塊位址範圍中邏輯區塊的總數量會為邏輯區塊數目的數值加1。
配合起始邏輯區塊位址及邏輯區塊數目便可得知欲進行資料存取的邏輯區塊(位址)的範圍。舉例來說,假設目前可複寫式非揮發性記憶體模組220配置有6個邏輯區塊LBA(0)~LBA(5)。當接受到快速非揮發性記憶體輸入輸出指令(如,其指令敘述為,SLBA= “LBA(0)”,NLB= “2”),則可知道起始邏輯區塊位址對應邏輯區塊LBA(0)且邏輯區塊LBA(0)為所欲存取的邏輯區塊中排序最前面的邏輯區塊,並且邏輯區塊數目指示目前要存取的邏輯區塊的總數量為3個。換句話說,在此例子中的快速非揮發性記憶體輸入輸出指令可表示為以邏輯區塊LBA(0)~LBA(2)為目標來進行資料的存取(傳輸)。
第一實體區域頁面指標與第二實體區域頁面指標用以指示主機記憶體中的記憶體頁面位址,所述記憶體頁面位址會被用來指示資料存取的來源(對應寫入指令)/目的地(對應讀取指令)。由於對應快速非揮發性記憶體(NVMe)介面標準的指令敘述的每一個欄位的詳細規範為習知技術,在此不再贅述。
以下開始會配合圖1與後續的圖式來詳細說明本發明實施例所提供的對應快速非揮發性記憶體介面標準的資料傳輸指令的資料傳輸方法。
圖2是根據本發明一實施例所繪示的資料讀取方法的流程圖。在本實施例中,請同時參見圖1與圖2,在步驟S210中,處理器211從主機系統10接收讀取指令,其中所述讀取指令包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,其中所述讀取指令用以指示從可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取目標資料且將所讀取的所述目標資料寫入至主機記憶體的至少一目標記憶體頁面。
具體來說,主機系統10會對儲存裝置20的儲存控制器210下達多個讀取指令或寫入指令,以存取儲存裝置20中的資料。儲存控制器210在接收(或讀取)到主機系統10所下達的讀取/寫入指令後,會對儲存裝置20中的可複寫式非揮發性記憶體模組220進行資料的讀取/寫入操作。
舉例來說,在一實施例中,假設主機系統10的處理器110會在主機記憶體120中劃分暫存資料區及指令佇列區(Command Queue Area),並且儲存控制器210還包括指令管理單元(Command management unit)。指令管理單元例如是具有指令緩衝器(Command Buffer)、指令狀態登錄器(Command Status Register)與指令獲取電路(Command Fetching Circuit)的電路元件。主機系統10會將所述讀取指令或寫入指令儲存至主機記憶體120中的命令佇列區,指令獲取電路會從命令佇列區讀取多個讀取/寫入指令,將所讀取的指令儲存至指令緩衝器。處理器211可根據韌體或是軟體的預定規則來選擇要處理的指令。接著,處理器211會執行被選擇的指令,並且根據所選擇的指令(如,快速非揮發性記憶體輸入輸出指令)指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220來進行對應的資料傳輸操作。然而,本發明並不限於上述儲存控制器211從主機系統10接收讀取/寫入指令的方式。
應注意的是,在一實施例中,儲存控制器210也可預先讀取(Prefetch)在主機記憶體120的暫存資料區中的對應所述讀取/寫入指令的資料/資訊。
如上所述,所述讀取指令例如是快速非揮發性記憶體輸入輸出讀取指令,其包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標。其中,經由起始邏輯區塊位址與邏輯區塊數目可獲得在可複寫式非揮發性記憶體模組220中欲讀取的(至少一個)邏輯區塊(亦稱,目標邏輯區塊)位址的範圍;以及經由第一實體區域頁面指標與第二實體區域頁面指標,可獲得至少一記憶體頁面位址(如,第一實體區域頁面指標所指示的第一記憶體頁面位址與第二實體區域頁面指標所指示的第二記憶體頁面位址)。此外,儲存控制器210可經由第一記憶體頁面位址與第二記憶體頁面位址來儲存從所述目標邏輯區塊中讀取的資料(亦稱,目標資料)。換句話說,儲存控制器210可根據所述讀取指令的指示,從可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取目標資料且將所讀取的所述目標資料寫入至主機記憶體的至少一目標記憶體頁面。
在步驟S220中,處理器211會指示資料傳輸管理電路212根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址。
具體來說,資料傳輸管理電路212會根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來計算用以傳輸資料的資訊,並且根據所計算出的資訊來辨識出所述目標邏輯區塊(範圍)中的每一個目標邏輯區塊所對應的主機記憶體中的記憶體頁面(亦稱,目標記憶體頁面)的位址,以在後續步驟中,讀取目標邏輯區塊所儲存的目標資料,且將目標資料寫入至對應的目標記憶體頁面位址。在下方的實施例中,會再詳述計算的方式。
在步驟S230中,記憶體介面控制電路213會從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,讀取所述第一目標邏輯區塊所儲存的第一目標資料,並且資料傳輸管理電路212會根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址將所讀取的所述第一目標資料寫入至所述第一目標記憶體頁面中。
具體來說,記憶體介面控制電路213會判斷所述目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為就緒狀態(readiness),從所述目標邏輯區塊中選擇處於就緒狀態的目標邏輯區塊做為第一目標邏輯區塊。其中,如上所述,所述就緒狀態用來表示處於所述就緒狀態的邏輯區塊已準備傳輸(is ready to be transferred)。舉例來說,在一實施例中,每一個邏輯區塊會具有一個標記(Mark or Flag),其用來表示所屬的邏輯區塊目前是否處於忙碌(Busy)狀態。例如,當一邏輯區塊所對應的實體區塊正在被程式化、被讀取、被抹除或是被進行其他管理操作時,所述邏輯區塊的標記會被記錄為“第一狀態”(如,位元值為 “1”),以表示目前邏輯區塊是忙碌的,不能進行其他操作。接著,若記憶體介面控制電路213辨識到一邏輯區塊的標記被記錄為“第二狀態”(如,位元值為 “0”)時,記憶體介面控制電路213會判定所述邏輯區塊目前不是忙碌狀態,即,記憶體介面控制電路213會判定所述邏輯區塊目前是就緒狀態。
在本實施例中,被選擇的第一目標邏輯區塊可以不按照目標邏輯區塊中全部邏輯區塊的先後順序來被選擇。記憶體介面控制電路213會直接根據邏輯區塊是否為就緒狀態來選擇作為第一目標邏輯區塊的目標邏輯區塊。藉此,可即時地對於已準備好進行資料傳輸的邏輯區塊進行資料的讀取。
舉例來說,第一目標邏輯區塊已經被選擇(決定)後,記憶體介面控制電路213會回報所述第一目標邏輯區塊給資料傳輸管理電路212。同時,記憶體介面控制電路213會讀取在第一目標邏輯區塊所儲存的資料(如,記憶體介面控制電路213會到第一目標邏輯區塊所映射的實體區塊中讀取資料)。從第一目標邏輯區塊讀取的資料亦稱第一目標資料。應注意的是,每次回報的第一目標邏輯區塊數量為1個。
對於每個所回報的第一目標邏輯區塊,資料傳輸管理電路212可辨識出對應第一目標邏輯區塊的目標記憶體頁面(亦稱,第一目標記憶體頁面)的位址。資料傳輸管理電路212會根據第一目標記憶體頁面的位址,將經由記憶體介面控制電路213所讀取的第一目標資料寫入至第一目標記憶體頁面中。
以下會再配合第一~第三實施例來詳細說明圖2的流程步驟。
[第一實施例]
圖4是根據本發明的第一實施例所繪示的記憶體頁面的示意圖。請參照圖4,假設主機記憶體120劃分多個記憶體頁面400(0)~400(N)。“N”例如是15的正整數。其中,如圖所示,記憶體頁面400(0)、400(1)、…、400(N)分別具有起始位址SA400(0)、SA400(1)、…、SA400(N)以及結束位址EA400(0)、EA400(1)、…、EA400(N)。假設所述記憶體頁面是由16進位來進行定址,則起始位址SA400(0)為“0000”;起始位址SA400(1)為“1000”;以及起始位址SA400(N)為“F000”。結束位址EA400(0)為“0FFF”;結束位址EA400(1)為“1FFF”;以及結束位址SA400(N)為“FFFF”。在此例子中,記憶體頁面400(0)~400(N)的大小為4096位元組(Bytes)。
圖5是根據本發明的第一實施例所繪示的資料傳輸的示意圖。請參照圖5,記憶體頁面400(0)~400(N)如上方所述,不再贅述於此。此外,可複寫式非揮發性記憶體模組220被配置有邏輯區塊500(0)~500(M),其中“M”為正整數,其大小是根據廠商自身的需求而設定。為了方便說明,在本實施例中,邏輯區塊的大小為4096位元組。
如圖5左方表格所示,假設從主機系統10所接收的讀取指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目的值為“0”、第一實體區域頁面指標的值為“0000”。
在本實施例中,資料傳輸管理電路212會根據邏輯區塊500(0)~500(M)的每一個邏輯區塊的大小(Logical Block Size,LBS)、記憶體頁面400(0)~400(N)的每一個記憶體頁面的大小(Memory Page Size,MPS)、起始邏輯區塊位址、邏輯區塊數目與第一實體區域頁面指標(PRP1)判斷是否需使用第二實體區域頁面指標(PRP2)。
具體來說,資料傳輸管理電路212會根據邏輯區塊的每一個邏輯區塊的大小與邏輯區塊數目計算目標資料的大小。例如,在此例子中,每一個邏輯區塊的大小為4096位元組,並且邏輯區塊數目為1個(NLB=“0”)。基此,目標資料的大小為4096位元組(如,4096(Bytes)*1=4096(Bytes))。
接著,資料傳輸管理電路212會根據每一個記憶體頁面的大小與第一實體區域頁面指標判斷第一記憶體頁面位址(如,“0000”)所屬的記憶體頁面(如,記憶體頁面400(0))的結束位址(如,“0FFF”),並且將經由結束位址與第一記憶體頁面位址之間的空間作為初始記憶體頁面空間(以灰階表示)。資料傳輸管理電路212會辨識初始記憶體頁面空間的大小(如, “0FFF”-“0000”+1= “1000” (16進位)= 4096 (10進位))。
在本實施例中,資料傳輸管理電路212會判斷目標資料的大小是否大於所述初始記憶體頁面空間的大小。若目標資料的大小不大於初始記憶體頁面空間的大小,資料傳輸管理電路212會判定不需要使用第二實體區域頁面指標(PRP2)。在此例子中,由於目標資料與初始記憶體頁面空間的大小相等(皆為4096位元組)。因此,對應第一實體區域頁面指標(PRP1)所指示的第一記憶體頁面位址的初始記憶體頁面空間有足夠的空間來儲存目標資料。如此一來,便不需要利用第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊來判斷其他可用來儲存目標資料的記憶體頁面。
相對地,若目標資料的大小大於初始記憶體頁面空間的大小,資料傳輸管理電路212會判定需要使用第二實體區域頁面指標。也就是說,若需使用第二實體區域頁面指標,資料傳輸管理電路212會根據每一個邏輯區塊的大小、每一個記憶體頁面的大小、起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標來獲得至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址。以下會利用第二、第三實施例來說明上述操作的細節。
再回到圖5,若不需使用第二實體區域頁面指標,資料傳輸管理電路212會根據每一個邏輯區塊的大小、每一個記憶體頁面的大小、起始邏輯區塊位址、邏輯區塊數目與第一實體區域頁面指標來獲得至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址。在此例子中,讀取指令指示要讀取的目標邏輯區塊為邏輯區塊500(0)。並且根據第一實體區域頁面指標所指示的第一記憶體頁面位址,可得知邏輯區塊500(0)所儲存的目標資料將會從主機記憶體120的記憶體頁面400(0)中的為“0000”的起始位址SAMP400(0)開始寫入。換句話說,在此例子中,資料傳輸管理電路212所獲得邏輯區塊500(0)所對應的目標記憶體頁面的位址為“0000”(如,步驟S220)。
接著(如步驟S230),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)為就緒狀態,記憶體介面控制電路213會選擇邏輯區塊500(0)作為第一目標邏輯區塊,讀取邏輯區塊500(0)所儲存的目標資料(即,第一目標資料),並且資料傳輸管理電路212會將所讀取的目標資料從記憶體頁面位址“0000”(即,第一目標記憶體頁面的位址)開始寫入至主機記憶體120的記憶體頁面400(0)(即,第一目標記憶體頁面)。
[第二實施例]
第二實施例所使用的硬體元件與第一實施例的相同,第二實施例中所配置至可複寫式非揮發性記憶體模組220的邏輯區塊500(0)~500(M)的設定,以及記憶體頁面400(0)~400(N)的設定也相同於第一實施例(如,LBS與MPS的數值),不再贅述於此。第二實施例與第一實施例的不同之處在於第一實體區域頁面指標(PRP1)的數值。此外,在第二實施例中,資料傳輸管理電路212會判定需要使用第二實體區域頁面指標(PRP2)。
圖6是根據本發明的第二、第五實施例所繪示的資料傳輸的示意圖。
請參照圖6,如圖6左方表格所示,假設從主機系統10所接收的讀取指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“0”、第一實體區域頁面指標(PRP1)的值為“0500”以及第二實體區域頁面指標(PRP2)的值為“1000”。
在本實施例中,根據上述的讀取指令,可知道目標邏輯區塊為邏輯區塊500(0),並且目標資料的大小為4096位元組(如,4096(Bytes)*1=4096(Bytes))。資料傳輸管理電路212會判定第一記憶體頁面位址(如,“0500”)所屬的記憶體頁面(如,記憶體頁面400(0))的結束位址(如,“0FFF”),並且將經由結束位址與第一記憶體頁面位址之間的空間作為初始記憶體頁面空間(以灰階表示)。資料傳輸管理電路212會辨識初始記憶體頁面空間的大小為2816位元組(如,“0FFF”-“0500”+1= “B00” (16進位)= 2816 (10進位))。
接著,資料傳輸管理電路212會判斷目標資料的大小是否大於所述初始記憶體頁面空間的大小。在此例子中,由於目標資料的大小大於初始記憶體頁面空間的大小(4096 > 2816)。因此,資料傳輸管理電路212會判定需使用第二實體區域頁面指標(PRP2)。換句話說,由於當前的初始記憶體頁面空間不足以儲存所有的目標資料。資料傳輸管理電路212需要利用第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊來判斷其他可用來儲存(剩餘的)目標資料的記憶體頁面。
在此例子中,讀取指令指示要讀取的目標邏輯區塊為邏輯區塊500(0)。並且根據第一實體區域頁面指標所指示的第一記憶體頁面位址(如,“0500”),可得知邏輯區塊500(0)所儲存的目標資料將會從主機記憶體120的記憶體頁面400(0)中的為“0500”的記憶體頁面位址開始寫入。此外,在寫滿初始記憶體頁面空間後,剩餘的目標資料會根據第二實體區域頁面指標所指示的第二記憶體頁面位址(如,“1000”),開始從為“1000”的所述第二記憶體頁面位址(如圖6所示的起始位址SA400(1))來繼續寫入至主機記憶體120的記憶體頁面400(1)。換句話說,在此例子中,資料傳輸管理電路212所獲得邏輯區塊500(0)所對應的目標記憶體頁面的位址依序為“0500”與“1000”(如,步驟S220)。
接著(如步驟S230),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)為就緒狀態,記憶體介面控制電路213會選擇邏輯區塊500(0)作為第一目標邏輯區塊,讀取邏輯區塊500(0)所儲存的目標資料(即,第一目標資料),並且資料傳輸管理電路212會將所讀取的目標資料從記憶體頁面位址“0500”(即,第一目標記憶體頁面的位址)開始寫入至主機記憶體120的記憶體頁面400(0)(即,第一目標記憶體頁面),並且在將目標資料寫入至記憶體頁面400(0)後,將剩餘的未被寫入至主機記憶體120的目標資料(其大小為4096-2816=1280位元組)從記憶體頁面400(1)的起始位址SA400(1)開始寫入。應注意的是,在圖6中的記憶體頁面的灰階區域即為目標資料的儲存區域,其中所述目標資料的儲存區域(目的地)的起始記憶體頁面位址為“0500”,並且所述目標資料的儲存區域的結束記憶體頁面位址為“14FF”。所述目標資料的儲存區域的所述結束記憶體頁面位址可根據剩餘的目標資料的大小以及第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址來獲得。例如,剩餘的目標資料大小為1280位元組,其中,1280換算成16進位會成為 “500”。接著,使用16進位,將第二記憶體頁面位址(如“1000”)加上剩餘的目標資料大小(如,“500”)再減去1所獲得的值即為所述結束記憶體頁面位址(如,“14FF”)。
[第三實施例]
第三實施例所使用的硬體元件與第一實施例的相同,第三實施例中所配置至可複寫式非揮發性記憶體模組220的邏輯區塊500(0)~500(M)的設定,以及記憶體頁面400(0)~400(N)的設定也相同於第一實施例(如,LBS與MPS的數值),不再贅述於此。第三實施例和第一、第二實施例不同之處在於,在第三實施例中,資料傳輸管理電路212會判定需要使用第二實體區域頁面指標(PRP2),其中第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊是表示實體區域頁面指標清單(PRP List)的清單起始位址。
圖7是根據本發明的第三、第六實施例所繪示的資料傳輸的示意圖。
請參照圖7,如圖7左方表格所示,假設從主機系統10所接收的讀取指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“2”、第一實體區域頁面指標(PRP1)的值為“0000”以及第二實體區域頁面指標(PRP2)的值為“1000”。
在本實施例中,根據上述的讀取指令,可知道目標邏輯區塊(的範圍)為邏輯區塊500(0)~500(2),並且目標資料的大小為12288位元組(如,4096(Bytes)*3=12288(Bytes))。資料傳輸管理電路212會判定第一記憶體頁面位址(如,“0000”)所屬的記憶體頁面(如,記憶體頁面400(0))的結束位址(如,“0FFF”),並且將經由結束位址與第一記憶體頁面位址之間的空間作為初始記憶體頁面空間。資料傳輸管理電路212會辨識初始記憶體頁面空間的大小為4096位元組(如, “0FFF”-“0000”+1= “1000” (16進位)= 4096 (10進位))。
接著,資料傳輸管理電路212會判斷目標資料的大小是否大於所述初始記憶體頁面空間的大小。在此例子中,由於目標資料的大小大於初始記憶體頁面空間的大小(12288> 4096)。因此,資料傳輸管理電路212會判定需使用第二實體區域頁面指標(PRP2)。
接著,在判定需使用第二實體區域頁面指標(PRP2)後,資料傳輸管理電路212會判斷第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊是否表示實體區域頁面指標清單(PRP List)的清單起始位址。具體來說,若目標資料在寫入初始記憶體頁面空間後的剩餘的目標資料的大小大於一個記憶體頁面的大小,則需要使用多個記憶體頁面來儲存剩餘的目標資料。此時,第二實體區域頁面指標(PRP2)的第二記憶體頁面位址會用來表示一個實體區域頁面指標清單(PRP List)的清單起始位址。所述實體區域頁面指標清單會具有許多條目。其中,所述條目中的每一個條目記錄記憶體頁面的起始位址。應注意的是,若所述差值不大於一個記憶體頁面的大小,資料傳輸管理電路212會辨識第二實體區域頁面指標的第二記憶體頁面位址不為實體區域頁面指標清單(PRP List)的清單起始位址,而為一記憶體頁面的起始位址。例如,在上述的第二實施例,其他不是儲存至初始記憶體頁面空間的目標資料,其僅需要一個記憶體頁面來儲存。因此,第二實施例的第二實體區域頁面指標的第二記憶體頁面位址不是實體區域頁面指標清單(PRP List)的清單起始位址,而是一記憶體頁面的起始位址。
更詳細來說,資料傳輸管理電路212會計算目標資料的大小減去初始記憶體頁面空間的大小的差值,並且判斷此差值是否大於一個記憶體頁面的大小。所述差值亦可表示目標資料在寫滿初始記憶體空間後所剩餘的(還未被儲存至主機記憶體的)目標資料。若所述差值大於一個記憶體頁面的大小,資料傳輸管理電路212會辨識第二實體區域頁面指標的第二記憶體頁面位址為實體區域頁面指標清單(PRP List)的清單起始位址(因為,需要實體區域頁面指標清單來記錄用以儲存剩餘的目標資料的兩個以上的記憶體頁面的起始位址)。應注意的是,所述清單起始位址是表示所述實體區域頁面指標清單的第一個條目(如,條目701(0))的起始位址,並且所述清單起始位址可不為記憶體頁面的起始位址。
在本實施例中,資料傳輸管理電路212會將所述差值除以每個記憶體頁面的大小(MPS)的商,再對之無條件進位所獲得的值作為實體區域頁面指標清單所記錄的條目的數目。也就是說,資料傳輸管理電路212會判斷(除了初始記憶體頁面空間外)還需要多少記憶體頁面來儲存目標資料,並且對應地順序記錄(除了初始記憶體頁面空間外)所述要儲存目標資料的所述記憶體頁面的起始位址至實體區域頁面指標清單的條目中。每個條目的大小為適合的可記錄位址資訊的空間,本發明不限於此。
應注意的是,每個實體區域頁面指標清單的最大容量為一個記憶體頁面的大小。也就是說,實體區域頁面指標清單最多可記錄的條目數量最大為一個記憶體頁面的大小除以每個條目的大小所獲得的商。每個實體區域頁面指標清單的大小為對應的清單起始位址至實體區域頁面指標清單所屬的記憶體頁面的結束位址之間的空間的大小。例如,實體區域頁面指標清單701可具有條目701(0)~701(P),其中P為正整數。
在一實施例中,若(除了初始記憶體頁面空間外)所述要儲存目標資料的所述記憶體頁面的數目超過了一個實體區域頁面指標清單最多可記錄的條目數量,則資料傳輸管理電路212會辨識到所述實體區域頁面指標清單的最後一個條目會用來記錄(接續的)另一個實體區域頁面指標清單的起始位址。藉此,資料傳輸管理電路212可藉由讀取所述另一個實體區域頁面指標清單,以繼續獲得其他的記憶體頁面的起始位址。
在此例子中,讀取指令指示要讀取的目標邏輯區塊為邏輯區塊500(0)~500(2)。並且,根據第一實體區域頁面指標所指示的第一記憶體頁面位址(如,“0000”),可得知邏輯區塊500(0)所儲存的目標資料將會從主機記憶體120的記憶體頁面400(0)中的為“0000”的記憶體頁面位址開始寫入。此外,除了欲寫入至初始記憶體頁面空間的目標資料,對於其他部份的目標資料,資料傳輸管理電路212會根據第二實體區域頁面指標所指示的第二記憶體頁面位址(如,“1000”),開始從為“1000”的所述第二記憶體頁面位址(如圖7所示的起始位址SA400(1))來讀取實體區域頁面指標清單701中的條目,以獲得其他部份的目標資料所欲儲存的記憶體頁面的位址。
在本實施例中,目標資料的大小為3個邏輯區塊的大小,即12288位元組。除了寫入至初始記憶體頁面的部份目標資料(大小為4096位元組,儲存於邏輯區塊500(0))之外,其他的目標資料(大小為8192位元組,儲存於邏輯區塊500(1)、500(2))會需要兩個記憶體頁面來儲存。基此,資料傳輸管理電路212會讀取實體區域頁面指標清單701的條目701(0)、701(1)中所記錄的位址,以獲得欲對應邏輯區塊500(1)、500(2)的記憶體頁面的起始位址(如圖7所示,條目701(0)、701(1)分別記錄起始位址SA400(2)“2000”、起始位址SA400(3)“3000”),進而將儲存於邏輯區塊500(1)、500(2)的目標資料寫入至主機記憶體120的記憶體頁面400(2)、400(3)。值得一提的是,在本實施例中,資料傳輸管理電路212會讀取儲存在主機記憶體120中的實體區域頁面指標清單701來獲得每個條目所記錄的位址。應注意的是,在此例子中,實體區域頁面指標清單701會具有條目701(0)與條目701(1),即,“P”的數值為1。
根據上述的說明,在本實施例中,資料傳輸管理電路212所獲得邏輯區塊500(0)~500(2)所分別對應的目標記憶體頁面的位址依序為“0000”、“2000”與“3000”(如,步驟S220)。此外,本發明所提供的資料傳輸(讀取/寫入)方法,可以單獨且分別辨識儲存目標資料的邏輯區塊以及其所對應的記憶體頁面,進而可不需要依序按照對應資料讀取/寫入指令的目標邏輯區塊的排列順序來進行目標資料的存取。以下會藉由第四、第五、第六實施例來敘述本發明所提供的資料寫入方法。
接著(如步驟S230),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)~500(2)中的其中一個邏輯區塊為就緒狀態,記憶體介面控制電路213會選擇為就緒狀態的邏輯區塊作為第一目標邏輯區塊,以開始進行讀取目標資料的操作。應注意的是,先回報為就緒狀態的邏輯區塊,會先進行資料傳輸的操作。
舉例來說,如圖7所示,邏輯區塊500(0)對應記憶體頁面400(0);邏輯區塊500(1)對應記憶體頁面400(2);邏輯區塊500(0)對應記憶體頁面400(3)。假設記憶體介面控制電路213先回報邏輯區塊500(1)為就緒狀態(即,邏輯區塊500(1)為第一目標邏輯區塊)。接著,記憶體介面控制電路213會讀取儲存在邏輯區塊500(1)中的目標資料(即,第一目標資料),並且資料傳輸管理電路212會將所讀取的目標資料從記憶體頁面400(2)(即,第一目標記憶體頁面)的位址“2000”(即,第一目標記憶體頁面的位址)開始寫入至主機記憶體120。在寫入邏輯區塊500(1)的目標資料至記憶體頁面400(2)後,資料傳輸管理電路212會再辨識後續為就緒狀態的邏輯區塊500(0)或邏輯區塊500(2),並且進行相似於上述說明的相應的資料傳輸操作,不再贅述於此。
圖3是根據本發明一實施例所繪示的資料寫入方法的流程圖。
在本實施例中,請同時參見圖1與圖3,在步驟S310中,處理器211從主機系統10接收寫入指令,其中所述寫入指令包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,其中所述寫入指令用以指示將目標資料寫入至可複寫式非揮發性記憶體模組的至少一目標邏輯區塊中,其中對應所述寫入指令的所述目標資料被儲存於主機記憶體的多個記憶體頁面中的至少一目標記憶體頁面中。
如上所述,所述寫入指令例如是快速非揮發性記憶體輸入輸出寫入指令,其包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標。其中,經由起始邏輯區塊位址與邏輯區塊數目可獲得在可複寫式非揮發性記憶體模組220中欲寫入的(至少一個)邏輯區塊(亦稱,目標邏輯區塊)位址的範圍;以及經由第一實體區域頁面指標與第二實體區域頁面指標,可獲得至少一記憶體頁面位址(如,第一實體區域頁面指標所指示的第一記憶體頁面位址與第二實體區域頁面指標所指示的第二記憶體頁面位址)。此外,儲存控制器210可經由第一記憶體頁面位址與第二記憶體頁面位址來讀取對應寫入指令的(欲被寫入至目標邏輯區塊的)資料(亦稱,目標資料),並且寫入至對應的目標邏輯區塊中。換句話說,儲存控制器210可根據所述寫入指令的指示,從主機記憶體120的至少一目標記憶體頁面讀取目標資料且將所讀取的所述目標資料寫入至可複寫式非揮發性記憶體模組220的至少一目標邏輯區塊。
在步驟S320中,處理器211會指示資料傳輸管理電路212根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來獲得所述至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址。此步驟相似於步驟S220,不再贅述於此。
在步驟S330中,記憶體介面控制電路213會從所述至少一目標邏輯區塊中選擇第一目標邏輯區塊,資料傳輸管理電路212會根據所獲得的對應所述第一目標邏輯區塊的第一目標記憶體頁面的位址來讀取第一目標資料,並且將所讀取的所述第一目標資料寫入至所述第一目標邏輯區塊中。
具體來說,如上所述,記憶體介面控制電路213會判斷所述目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為就緒狀態(readiness),從所述目標邏輯區塊中選擇處於就緒狀態的目標邏輯區塊做為第一目標邏輯區塊。有關就緒狀態的說明已詳述於上,不再贅述於此。在本實施例中,被選擇的第一目標邏輯區塊可以不按照目標邏輯區塊中全部邏輯區塊的先後順序來被選擇。記憶體介面控制電路213會直接根據邏輯區塊是否為就緒狀態來選擇作為第一目標邏輯區塊的目標邏輯區塊。藉此,可即時地對於已準備好進行資料傳輸的邏輯區塊進行資料的寫入。
舉例來說,第一目標邏輯區塊已經被選擇(決定)後,記憶體介面控制電路213會回報所述第一目標邏輯區塊給資料傳輸管理電路212所述第一目標邏輯區塊已準備好進行傳輸。對於每個所回報的第一目標邏輯區塊,資料傳輸管理電路212可辨識出對應第一目標邏輯區塊的目標記憶體頁面(亦稱,第一目標記憶體頁面)的位址,並且據此從第一目標記憶體頁面中讀取第一目標資料。接著,資料傳輸管理電路212會經由記憶體介面控制電路213將所讀取的第一目標資料寫入至第一目標邏輯區塊中(如,記憶體介面控制電路213會寫入第一目標資料至第一目標邏輯區塊所映射的實體區塊中)。應注意的是,每次回報的第一目標邏輯區塊數量為1個。
以下會再配合第四、第五與第六實施例來詳細說明圖3的流程步驟。第四、第五與第六實施例分別相似於第一、第二與第三實施例,並且會相同地分別藉由圖5、圖6與圖7來做說明。有關相同於第一、第二與第三實施例的硬體與圖式元件的說明,不再贅述於此。以下的實施例僅說明本發明所提供的資料傳輸方法,其處理寫入指令(如,第四、第五與第六實施例)與讀取指令(如,第一、第二與第三實施例)的不同之處。
[第四實施例]
第四實施例所使用的硬體元件與第一實施例的相同,第四實施例中所配置至可複寫式非揮發性記憶體模組220的邏輯區塊500(0)~500(M)的設定,以及記憶體頁面400(0)~400(N)的設定也相同於第一實施例(如,LBS與MPS的數值),不再贅述於此。第四實施例與第一實施例的不同之處在於,第四實施例主要說明關於寫入指令的資料傳輸方法(如,對應圖3),但第一實施例主要說明關於讀取指令的資料傳輸方法(如,對應圖2)。
請參照圖5,如圖5左方表格所示,假設從主機系統10所接收的寫入指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目的值為“0”、第一實體區域頁面指標的值為“0000”。
在本實施例中,資料傳輸管理電路212會根據邏輯區塊500(0)~500(M)的每一個邏輯區塊的大小(Logical Block Size,LBS)、記憶體頁面400(0)~400(N)的每一個記憶體頁面的大小(Memory Page Size,MPS)、起始邏輯區塊位址、邏輯區塊數目與第一實體區域頁面指標(PRP1)判斷是否需使用第二實體區域頁面指標(PRP2)。
具體來說,在本實施例中,資料傳輸管理電路212會判斷目標資料的大小是否大於所述初始記憶體頁面空間的大小。若目標資料的大小不大於初始記憶體頁面空間的大小,資料傳輸管理電路212會判定不需要使用第二實體區域頁面指標(PRP2)。詳細的計算方式與方法已說明於上,不再贅述於此。在此例子中,由於目標資料與初始記憶體頁面空間的大小相等(皆為4096位元組)。因此,對應第一實體區域頁面指標(PRP1)所指示的第一記憶體頁面位址的初始記憶體頁面空間已儲存全部的目標資料。如此一來,資料傳輸管理電路212會判定不需要利用第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊來判斷(辨識)其他用來儲存目標資料的記憶體頁面。
再回到圖5,若不需使用第二實體區域頁面指標,資料傳輸管理電路212會根據每一個邏輯區塊的大小、每一個記憶體頁面的大小、起始邏輯區塊位址、邏輯區塊數目與第一實體區域頁面指標來獲得至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址。在此例子中,寫入指令指示要寫入的目標邏輯區塊為邏輯區塊500(0)。並且根據第一實體區域頁面指標所指示的第一記憶體頁面位址,可得知欲儲存於邏輯區塊500(0)的目標資料已經從主機記憶體120的記憶體頁面400(0)中的為“0000”的起始位址SAMP400(0)被儲存。換句話說,在此例子中,資料傳輸管理電路212所獲得邏輯區塊500(0)所對應的目標記憶體頁面的位址為“0000”(如,步驟S320)。
接著(如,步驟S330),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)為就緒狀態,記憶體介面控制電路213會選擇邏輯區塊500(0)作為第一目標邏輯區塊,並且回報給資料傳輸電路212。接著,資料傳輸電路212辨識對應邏輯區塊500(0)的記憶體頁面(即,第一目標記憶體頁面)的位址,並且從記憶體頁面位址“0000”(即,第一目標記憶體頁面的位址)開始讀取目標資料(即,第一目標資料)。接著,資料傳輸電路212將所讀取的第一目標資料寫入至邏輯區塊500(0)。
[第五實施例]
第五實施例所使用的硬體元件與第四實施例的相同,第五實施例中所配置至可複寫式非揮發性記憶體模組220的邏輯區塊500(0)~500(M)的設定,以及記憶體頁面400(0)~400(N)的設定也相同於第四實施例(如,LBS與MPS的數值),不再贅述於此。第五實施例與第四實施例的不同之處在於第一實體區域頁面指標(PRP1)的數值。此外,在第五實施例中,資料傳輸管理電路212會判定需要使用第二實體區域頁面指標(PRP2)。
請參照圖6,如圖6左方表格所示,假設從主機系統10所接收的寫入指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“0”、第一實體區域頁面指標(PRP1)的值為“0500”以及第二實體區域頁面指標(PRP2)的值為“1000”。
在此例子中,由於目標資料的大小大於初始記憶體頁面空間的大小(4096 > 2816)。因此,資料傳輸管理電路212會判定需使用第二實體區域頁面指標(PRP2)。換句話說,由於當前的初始記憶體頁面空間不足以儲存所有的目標資料。資料傳輸管理電路212需要利用第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊來判斷其他被用來儲存目標資料的記憶體頁面。
在此例子中,寫入指令指示要讀取的目標邏輯區塊為邏輯區塊500(0)。並且根據第一實體區域頁面指標所指示的第一記憶體頁面位址(如,“0500”),可得知邏輯區塊500(0)所欲儲存的目標資料已從主機記憶體120的記憶體頁面400(0)中的為“0500”的記憶體頁面位址被儲存。此外,除了儲存在初始記憶體頁面空間的目標資料,其他部份的目標資料是從第二實體區域頁面指標所指示的第二記憶體頁面位址(如,“1000”)被儲存。換句話說,在此例子中,資料傳輸管理電路212所獲得邏輯區塊500(0)所對應的目標記憶體頁面的位址依序為“0500”與“1000”(如,步驟S320)。
接著(如步驟S330),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)為就緒狀態,記憶體介面控制電路213會選擇邏輯區塊500(0)作為第一目標邏輯區塊,並且回報給資料傳輸電路212。接著,資料傳輸電路212辨識對應邏輯區塊500(0)的記憶體頁面(即,第一目標記憶體頁面)的位址,並且依序從記憶體頁面位址“0500”與“0000”讀取目標資料(即,第一目標資料)。接著,資料傳輸電路212將所讀取的第一目標資料寫入至邏輯區塊500(0)。
應注意的是,在圖6中的記憶體頁面的灰階區域即為目標資料的讀取區域,其中所述目標資料的讀取區域(來源地)的起始記憶體頁面位址為“0500”,並且所述目標資料的讀取區域的結束記憶體頁面位址為“14FF”。所述目標資料的讀取區域的所述結束記憶體頁面位址可根據所述其他部份的目標資料的大小以及第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址來獲得。
[第六實施例]
第六實施例所使用的硬體元件與第四實施例的相同,第六實施例中所配置至可複寫式非揮發性記憶體模組220的邏輯區塊500(0)~500(M)的設定,以及記憶體頁面400(0)~400(N)的設定也相同於第四實施例(如,LBS與MPS的數值),不再贅述於此。第六實施例和第四、第五實施例不同之處在於,在第六實施例中,資料傳輸管理電路212會判定需要使用第二實體區域頁面指標(PRP2),其中第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊是表示實體區域頁面指標清單(PRP List)的清單起始位址。
請參照圖7,如圖7左方表格所示,假設從主機系統10所接收的寫入指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“2”、第一實體區域頁面指標(PRP1)的值為“0000”以及第二實體區域頁面指標(PRP2)的值為“1000”。
在本實施例中,根據上述的寫入指令,可知道目標邏輯區塊(的範圍)為邏輯區塊500(0)~500(2),並且目標資料的大小為12288位元組(如,4096(Bytes)*3=12288(Bytes))。資料傳輸管理電路212會辨識初始記憶體頁面空間的大小為4096位元組(如, “0FFF”-“0000”+1= “1000” (16進位)= 4096 (10進位))。
接著,資料傳輸管理電路212會判斷目標資料的大小是否大於所述初始記憶體頁面空間的大小。在此例子中,由於目標資料的大小大於初始記憶體頁面空間的大小(12288> 4096)。因此,資料傳輸管理電路212會判定需使用第二實體區域頁面指標(PRP2)。
接著,在判定需使用第二實體區域頁面指標(PRP2)後,資料傳輸管理電路212會判斷第二實體區域頁面指標(PRP2)所指示的第二記憶體頁面位址的資訊是否表示實體區域頁面指標清單(PRP List)的清單起始位址。具體來說,若初始記憶體頁面空間不足以儲存所有的目標資料,並且其他部份的目標資料(非儲存在初始記憶體空間的目標資料)的大小大於一個記憶體頁面的大小,則會判定需要使用多個記憶體頁面來儲存剩餘的目標資料。此時,第二實體區域頁面指標(PRP2)的第二記憶體頁面位址會用來表示一個實體區域頁面指標清單(PRP List)的清單起始位址。所述實體區域頁面指標清單會具有許多條目。其中,所述條目中的每一個條目記錄記憶體頁面的起始位址。應注意的是,若所述差值不大於一個記憶體頁面的大小,資料傳輸管理電路212會辨識第二實體區域頁面指標的第二記憶體頁面位址不為實體區域頁面指標清單(PRP List)的清單起始位址,而為一記憶體頁面的起始位址。
更詳細來說,資料傳輸管理電路212會計算目標資料的大小減去初始記憶體頁面空間的大小的差值,並且判斷此差值是否大於一個記憶體頁面的大小。所述差值亦表示不是被儲存在初始記憶體的其他部份的目標資料的大小。若所述差值大於一個記憶體頁面的大小,資料傳輸管理電路212會辨識第二實體區域頁面指標的第二記憶體頁面位址為實體區域頁面指標清單(PRP List)的清單起始位址(因為,需要實體區域頁面指標清單來記錄用以儲存其他部份的目標資料的兩個以上的記憶體頁面的起始位址)。有關實體區域頁面指標清單的架構已說明於上,不再贅述於此。
值得一提的是,主機系統10在發出寫入指令時,會先將對應寫入指令的所有目標資料,對應目標資料的實體區域頁面指標清單寫入至主機記憶體120。
在此例子中,寫入指令指示要寫入的目標邏輯區塊為邏輯區塊500(0)~500(2)。並且,根據第一實體區域頁面指標所指示的第一記憶體頁面位址(如,“0000”),可得知欲儲存至邏輯區塊500(0)的目標資料是從主機記憶體120的記憶體頁面400(0)中的為“0000”的記憶體頁面位址被儲存。此外,除了儲存在初始記憶體頁面空間(即,整個記憶體頁面400(0))的目標資料,其他部份的目標資料的位置可根據讀取實體區域頁面指標清單701中的條目來獲得。
在本實施例中,目標資料的大小為3個邏輯區塊的大小,即12288位元組。除了已儲存至初始記憶體頁面的部份目標資料(大小為4096位元組,已儲存於記憶體頁面400(0))之外,其他部份的目標資料(大小為8192位元組,欲儲存於2個邏輯區塊500(1)、500(2))會需要2個記憶體頁面來儲存。基此,資料傳輸管理電路212會讀取實體區域頁面指標清單701的(2個)條目701(0)、701(1)中所記錄的位址,以獲得對應邏輯區塊500(1)、500(2)的記憶體頁面的起始位址(如圖7所示,條目701(0)、701(1)分別記錄起始位址SA400(2)“2000”、起始位址SA400(3)“3000”),進而將儲存於主機記憶體120的記憶體頁面400(2)、400(3)的目標資料寫入至邏輯區塊500(1)、500(2)。值得一提的是,在本實施例中,資料傳輸管理電路212會讀取儲存在主機記憶體120中的實體區域頁面指標清單701來獲得每個條目所記錄的位址。
根據上述的說明,在本實施例中,資料傳輸管理電路212所獲得邏輯區塊500(0)~500(2)所分別對應的目標記憶體頁面的位址依序為“0000”、“2000”與“3000”(如,步驟S320)。
接著(如步驟S330),反應於記憶體介面控制電路213辨識到邏輯區塊500(0)~500(2)中的其中一個邏輯區塊為就緒狀態,記憶體介面控制電路213會選擇為就緒狀態的邏輯區塊作為第一目標邏輯區塊,以開始進行寫入對應第一目標資料邏輯區塊的目標資料(其讀取自對應第一目標邏輯區塊的第一目標記憶體頁面)至第一目標邏輯區塊的操作。應注意的是,對於先回報為就緒狀態的邏輯區塊,會先對其進行資料傳輸的操作。
舉例來說,如圖7所示,邏輯區塊500(0)對應記憶體頁面400(0);邏輯區塊500(1)對應記憶體頁面400(2);邏輯區塊500(0)對應記憶體頁面400(3)。假設記憶體介面控制電路213先回報邏輯區塊500(1)為就緒狀態(即,邏輯區塊500(1)為第一目標邏輯區塊)。接著,資料傳輸管理電路212會辨識邏輯區塊500(1)所對應的記憶體頁面400(2),並且從記憶體頁面400(2) (即,第一目標記憶體頁面)的位址“2000”(即,第一目標記憶體頁面的位址)讀取第一目標資料。
接著,記憶傳輸管理電路212會將所讀取的目第一標資料寫入至邏輯區塊500(1)。在寫入對應邏輯區塊500(1)的目標資料後,資料傳輸管理電路212會再辨識後續為就緒狀態的邏輯區塊500(0)或邏輯區塊500(2),並且進行相似於上述說明的相應的資料傳輸操作,不再贅述於此。
上述實施例所提供的資料寫入方法,可以單獨且分別辨識儲存目標資料的邏輯區塊以及其所對應的記憶體頁面,進而可不需要依序按照對應資料寫入指令的目標邏輯區塊的排列順序來進行目標資料的寫入。
應注意的是,上述的實施例中所描述的邏輯區塊亦可在不脫離本發明的精神下,根據廠商需求修改為其他形式的儲存單位(如,邏輯頁面或邏輯單元)。目標資料可儲存在一個或多個邏輯區塊中。儲存在多個邏輯區塊的目標資料可依據所儲存的邏輯區塊而單獨地與主機記憶體的對應的記憶體頁面進行資料傳輸。
值得一提的是,上述的實施例中,邏輯區塊的大小與記憶鐵頁面相等。然而,在其他實施例中,邏輯區塊的大小可以小於或是大於記憶體頁面。但,都可以參照上方實施例的方式,根據讀取/寫入指令來找出用來儲存一筆目標資料的多個邏輯區塊中的每一個邏輯區塊所對應的記憶體頁面的位址。
綜上所述,本發明的多個實施例所提供的資料傳輸(讀取/寫入)方法,可使儲存控制器不需等待所有儲存單元都準備好被存取,並且可不循序地直接存取已經準備好被存取的部分儲存單元(如,直接存取為就緒狀態的邏輯區塊所儲存的資料,以獨立地存取該筆目標資料的部分目標資料,而不需要從用以儲存該筆目標資料的第一個邏輯區塊開始進行存取),進而避免儲存控制器花費過多的時間於等待上並且減少為了循序存取而耗費的暫存空間與資源。同時,可利用硬體來快速地進行對於目標邏輯區塊所對應的目標記憶體頁面的位址的計算,增加了處理資料傳輸的速度,也減少了儲存控制器的處理器的負擔,進而增進了儲存裝置與其所進行的資料傳輸操作的工作效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
S210、S220、S230‧‧‧資料讀取方法的流程步驟
S310、S320、S330‧‧‧資料寫入方法的流程步驟
400(0)、400(1)、400(N)‧‧‧記憶體頁面
SA400(0)、SA400(1)、SA400(2)、SA400(3)、SA400(N)‧‧‧起始位址
EA400(0)、EA400(1)、EA400(N)‧‧‧結束位址
500(0)、500(1)、500(2)、500(M)‧‧‧邏輯區塊
701‧‧‧實體區域頁面指標清單
701(0)、701(1)、701(P)‧‧‧條目
SLBA‧‧‧起始邏輯區塊位址
NLB‧‧‧邏輯區塊數目
PRP1‧‧‧第一實體區域頁面指標
PRP2‧‧‧第二實體區域頁面指標
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
S210、S220、S230‧‧‧資料讀取方法的流程步驟
S310、S320、S330‧‧‧資料寫入方法的流程步驟
400(0)、400(1)、400(N)‧‧‧記憶體頁面
SA400(0)、SA400(1)、SA400(2)、SA400(3)、SA400(N)‧‧‧起始位址
EA400(0)、EA400(1)、EA400(N)‧‧‧結束位址
500(0)、500(1)、500(2)、500(M)‧‧‧邏輯區塊
701‧‧‧實體區域頁面指標清單
701(0)、701(1)、701(P)‧‧‧條目
SLBA‧‧‧起始邏輯區塊位址
NLB‧‧‧邏輯區塊數目
PRP1‧‧‧第一實體區域頁面指標
PRP2‧‧‧第二實體區域頁面指標
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。 圖2是根據本發明一實施例所繪示的資料讀取方法的流程圖。 圖3是根據本發明一實施例所繪示的資料寫入方法的流程圖。 圖4是根據本發明的第一實施例所繪示的記憶體頁面的示意圖。 圖5是根據本發明的第一、第四實施例所繪示的資料傳輸的示意圖。 圖6是根據本發明的第二、第五實施例所繪示的資料傳輸的示意圖。 圖7是根據本發明的第三、第六實施例所繪示的資料傳輸的示意圖。
S210、S220、S230‧‧‧資料讀取方法的流程步驟
Claims (24)
- 一種資料讀取方法,適用於從一可複寫式非揮發性記憶體模組中讀取一資料至一主機系統的一主機記憶體中,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且該主機記憶體具有多個記憶體頁面,所述方法包括: 從該主機系統接收一讀取指令,其中該讀取指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該讀取指令用以指示從該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取一目標資料且將所讀取的該目標資料寫入至該主機記憶體的至少一目標記憶體頁面,其中該目標資料是從該至少一目標邏輯區塊中的一起始邏輯區塊開始被儲存,其中該起始邏輯區塊位址用以指示該起始邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址; 根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址;以及 從該至少一目標邏輯區塊中選擇一第一目標邏輯區塊,讀取該第一目標邏輯區塊所儲存的一第一目標資料,並且根據所獲得的對應該第一目標邏輯區塊的一第一目標記憶體頁面的位址將所讀取的該第一目標資料寫入至該第一目標記憶體頁面中。
- 如申請專利範圍第1項所述的資料讀取方法,其中上述從該至少一目標邏輯區塊中選擇該第一目標邏輯區塊的步驟包括: 判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為一就緒狀態(readiness),從該至少一目標邏輯區塊中選擇處於該就緒狀態的一目標邏輯區塊做為一第一目標邏輯區塊,其中該就緒狀態用以表示處於該就緒狀態的邏輯區塊已準備傳輸。
- 如申請專利範圍第1項所述的資料讀取方法,其中上述根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟包括: 根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標; 若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址;以及 若不需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標來獲得該目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第3項所述的資料讀取方法,其中上述根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標的步驟包括: 根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小; 根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間;以及 若該目標資料的該大小大於該初始記憶體頁面空間的大小,判定需使用該第二實體區域頁面指標。
- 如申請專利範圍第4項所述的資料讀取方法,其中上述若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟包括: 計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值; 若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該第二實體區域頁面指標的該第二記憶體頁面位址為一實體區域頁面指標清單(PRP List)的一清單起始位址,其中該實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目記錄一記憶體頁面位址;以及 根據該初始記憶體頁面空間與該實體區域頁面指標清單來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第5項所述的資料讀取方法,其中上述若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟更包括: 若該差值不大於該些記憶體頁面的每一個記憶體頁面的該大小,該第二實體區域頁面指標的該第二記憶體頁面位址為一剩餘記憶體頁面的一起始位址;以及 根據該初始記憶體頁面空間與該剩餘記憶體頁面的該起始位址來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 一種資料寫入方法,適用於從一主機系統的一主機記憶體將一資料寫入至一可複寫式非揮發性記憶體模組中,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且該主機記憶體具有多個記憶體頁面,所述方法包括: 從該主機系統接收一寫入指令,其中該寫入指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該寫入指令用以指示將一目標資料寫入至該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊中,其中該至少一目標邏輯區塊中排序在最前面的邏輯區塊為一起始邏輯區塊,其中該起始邏輯區塊位址用以指示該起始邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址,其中對應該寫入指令的該目標資料被儲存於該主機記憶體的該些記憶體頁面中的至少一目標記憶體頁面中; 根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址,其中每一個目標邏輯區塊所分別對應的目標記憶體頁面為該至少一目標記憶體頁面的其中之一;以及 從該至少一目標邏輯區塊中選擇一第一目標邏輯區塊,根據所獲得的對應該第一目標邏輯區塊的一第一目標記憶體頁面的位址來讀取一第一目標資料,並且將所讀取的該第一目標資料寫入至該第一目標邏輯區塊中。
- 如申請專利範圍第7項所述的資料寫入方法,其中上述從該至少一目標邏輯區塊中選擇該第一目標邏輯區塊的步驟包括: 判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為一就緒狀態(readiness),從該至少一目標邏輯區塊中選擇處於該就緒狀態的一目標邏輯區塊做為一第一目標邏輯區塊,其中該就緒狀態用以表示處於該就緒狀態的邏輯區塊已準備傳輸。
- 如申請專利範圍第7項所述的資料寫入方法,其中上述根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟包括: 根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標; 若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址;以及 若不需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標來獲得該目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第9項所述的資料寫入方法,其中上述根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標的步驟包括: 根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小; 根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間;以及 若該目標資料的該大小大於該初始記憶體頁面空間的大小,判定需使用該第二實體區域頁面指標。
- 如申請專利範圍第10項所述的資料寫入方法,其中上述若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟包括: 計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值; 若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該第二實體區域頁面指標的該第二記憶體頁面位址為一實體區域頁面指標清單(PRP List)的一清單起始位址,其中該實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目記錄一記憶體頁面位址;以及 根據該初始記憶體頁面空間與該實體區域頁面指標清單來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第11項所述的資料寫入方法,其中上述若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的步驟更包括: 若該差值不大於該些記憶體頁面的每一個記憶體頁面的該大小,該第二實體區域頁面指標的該第二記憶體頁面位址為一剩餘記憶體頁面的一起始位址;以及 根據該初始記憶體頁面空間與該剩餘記憶體頁面的該起始位址來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統,其中該主機系統配置有一主機記憶體,其中該主機記憶體具有多個記憶體頁面; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊; 一處理器,耦接至該連接介面電路單元及該記憶體介面控制電路;以及 一資料傳輸管理電路,耦接至該處理器、該連接介面電路單元及該記憶體介面控制電路, 其中該處理器用以從該主機系統接收一讀取指令,其中該讀取指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該讀取指令用以指示從該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊讀取一目標資料且將所讀取的該目標資料寫入至該主機記憶體的至少一目標記憶體頁面,其中該目標資料是從該至少一目標邏輯區塊中的一起始邏輯區塊開始被儲存,其中該起始邏輯區塊位址用以指示該起始邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址, 其中該處理器用以指示該資料傳輸管理電路根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址, 其中該記憶體介面控制電路用以從該至少一目標邏輯區塊中選擇一第一目標邏輯區塊,並且讀取該第一目標邏輯區塊所儲存的一第一目標資料, 其中資料傳輸管理電路用以根據所獲得的對應該第一目標邏輯區塊的一第一目標記憶體頁面的位址將所讀取的該第一目標資料寫入至該第一目標記憶體頁面中。
- 如申請專利範圍第13項所述的儲存控制器,其中在上述該記憶體介面控制電路用以從該至少一目標邏輯區塊中選擇該第一目標邏輯區塊的運作中, 該記憶體介面控制電路判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為一就緒狀態(readiness),從該至少一目標邏輯區塊中選擇處於該就緒狀態的一目標邏輯區塊做為一第一目標邏輯區塊,其中該就緒狀態用以表示處於該就緒狀態的邏輯區塊已準備傳輸。
- 如申請專利範圍第13項所述的儲存控制器,其中在上述該資料傳輸管理電路根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標, 其中若需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址, 其中若不需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標來獲得該目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第15項所述的儲存控制器,其中在上述該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標的運作中, 該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小, 其中該資料傳輸管理電路根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間, 其中若該目標資料的該大小大於該初始記憶體頁面空間的大小,該資料傳輸管理電路判定需使用該第二實體區域頁面指標。
- 如申請專利範圍第16項所述的儲存控制器,其中在上述若需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 該資料傳輸管理電路計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值, 其中若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路辨識該第二實體區域頁面指標的該第二記憶體頁面位址為一實體區域頁面指標清單(PRP List)的一清單起始位址,其中該實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目記錄一記憶體頁面位址, 其中該資料傳輸管理電路根據該初始記憶體頁面空間與該實體區域頁面指標清單來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第17項所述的儲存控制器,其中在上述若需使用該第二實體區域頁面指標,根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 若該差值不大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路辨識該第二實體區域頁面指標的該第二記憶體頁面位址為一剩餘記憶體頁面的一起始位址, 其中該資料傳輸管理電路根據該初始記憶體頁面空間與該剩餘記憶體頁面的該起始位址來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統,其中該主機系統配置有一主機記憶體,其中該主機記憶體具有多個記憶體頁面; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊; 一處理器,耦接至該連接介面電路單元及該記憶體介面控制電路;以及 一資料傳輸管理電路,耦接至該處理器、該連接介面電路單元及該記憶體介面控制電路, 其中該處理器用以從該主機系統接收一寫入指令,其中該寫入指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該寫入指令用以指示將一目標資料寫入至該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊中,其中該至少一目標邏輯區塊中排序在最前面的邏輯區塊為一起始邏輯區塊,其中該起始邏輯區塊位址用以指示該起始邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址,其中對應該寫入指令的該目標資料被儲存於該主機記憶體的該些記憶體頁面中的至少一目標記憶體頁面中, 其中該處理器用以指示該資料傳輸管理電路根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的目標記憶體頁面的位址,其中每一個目標邏輯區塊所分別對應的目標記憶體頁面為該至少一目標記憶體頁面的其中之一, 其中該記憶體介面控制電路用以從該至少一目標邏輯區塊中選擇一第一目標邏輯區塊, 其中資料傳輸管理電路用以根據所獲得的對應該第一目標邏輯區塊的一第一目標記憶體頁面的位址來讀取一第一目標資料,並且該記憶體介面控制電路更用以將所讀取的該第一目標資料寫入至該第一目標邏輯區塊中。
- 如申請專利範圍第19項所述的儲存控制器,其中在上述該記憶體介面控制電路用以從該至少一目標邏輯區塊中選擇該第一目標邏輯區塊的運作中, 該記憶體介面控制電路判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊的狀態是否為一就緒狀態(readiness),從該至少一目標邏輯區塊中選擇處於該就緒狀態的一目標邏輯區塊做為一第一目標邏輯區塊,其中該就緒狀態用以表示處於該就緒狀態的邏輯區塊已準備傳輸。
- 如申請專利範圍第19項所述的儲存控制器,其中在上述該資料傳輸管理電路根據該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標, 其中若需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址, 其中若不需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的大小、該些記憶體頁面的每一個記憶體頁面的大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標來獲得該目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第21項所述的儲存控制器,其中在上述該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目與該第一實體區域頁面指標判斷是否需使用該第二實體區域頁面指標的運作中, 該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小, 其中該資料傳輸管理電路根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間, 其中若該目標資料的該大小大於該初始記憶體頁面空間的大小,該資料傳輸管理電路判定需使用該第二實體區域頁面指標。
- 如申請專利範圍第22項所述的儲存控制器,其中在上述若需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 該資料傳輸管理電路計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值, 其中若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路辨識該第二實體區域頁面指標的該第二記憶體頁面位址為一實體區域頁面指標清單(PRP List)的一清單起始位址,其中該實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目記錄一記憶體頁面位址, 其中該資料傳輸管理電路根據該初始記憶體頁面空間與該實體區域頁面指標清單來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
- 如申請專利範圍第23項所述的儲存控制器,其中在上述若需使用該第二實體區域頁面指標,該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小、該些記憶體頁面的每一個記憶體頁面的該大小、該起始邏輯區塊位址、該邏輯區塊數目、該第一實體區域頁面指標與該第二實體區域頁面指標來獲得該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址的運作中, 若該差值不大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路辨識該第二實體區域頁面指標的該第二記憶體頁面位址為一剩餘記憶體頁面的一起始位址, 其中該資料傳輸管理電路根據該初始記憶體頁面空間與該剩餘記憶體頁面的該起始位址來判斷該至少一目標邏輯區塊中的每一個目標邏輯區塊所分別對應的該目標記憶體頁面的該位址。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW105123217A TWI592865B (zh) | 2016-07-22 | 2016-07-22 | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 |
| US15/264,603 US20180024738A1 (en) | 2016-07-22 | 2016-09-14 | Data reading method, data writing method and storage controller using the same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW105123217A TWI592865B (zh) | 2016-07-22 | 2016-07-22 | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI592865B TWI592865B (zh) | 2017-07-21 |
| TW201804311A true TW201804311A (zh) | 2018-02-01 |
Family
ID=60048669
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105123217A TWI592865B (zh) | 2016-07-22 | 2016-07-22 | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20180024738A1 (zh) |
| TW (1) | TWI592865B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11249676B2 (en) | 2020-07-02 | 2022-02-15 | Silicon Motion, Inc. | Electronic device, flash memory controller and associated control method |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102469958B1 (ko) * | 2017-10-27 | 2022-11-25 | 삼성전자주식회사 | 블록 주소 없이 액세스되는 불휘발성 메모리 장치 및 그 동작 방법 |
| TWI662409B (zh) * | 2018-01-23 | 2019-06-11 | 祥碩科技股份有限公司 | 實體區域頁面位址轉換器與實體區域頁面清單存取方法 |
| TWI702499B (zh) * | 2018-08-20 | 2020-08-21 | 慧榮科技股份有限公司 | 儲存裝置及快取區定址方法 |
| CN110851372B (zh) | 2018-08-20 | 2023-10-31 | 慧荣科技股份有限公司 | 储存装置及快取区定址方法 |
| CN110851073B (zh) | 2018-08-20 | 2023-06-02 | 慧荣科技股份有限公司 | 储存装置及巨集指令的执行方法 |
| JP2021047948A (ja) * | 2019-09-19 | 2021-03-25 | キオクシア株式会社 | 記憶装置およびメモリコントローラ |
| CN110675800A (zh) * | 2019-11-07 | 2020-01-10 | 广东乐心医疗电子股份有限公司 | 显示屏驱动方法和装置 |
| US11132292B2 (en) * | 2019-12-10 | 2021-09-28 | Micron Technology, Inc. | Active input/output expander of a memory sub-system |
| US11537320B2 (en) | 2020-02-03 | 2022-12-27 | Western Digital Technologies, Inc. | Storage system and method for host memory access |
| CN111880749B (zh) * | 2020-08-04 | 2023-06-13 | 群联电子股份有限公司 | 数据读取方法、存储器存储装置及存储器控制电路单元 |
| US12124619B2 (en) * | 2020-12-23 | 2024-10-22 | Intel Corporation | VM encryption of block storage with end-to-end data integrity protection in a SmartNIC |
| CN114048149B (zh) * | 2021-10-30 | 2025-03-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种控制页链表的构建的方法、系统、存储介质及设备 |
| US20240320088A1 (en) * | 2022-07-27 | 2024-09-26 | SK Hynix Inc. | Data coding device, memory controller, and storage device |
| CN115543219B (zh) * | 2022-11-29 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 一种对主机io处理的优化方法、装置、设备及介质 |
| US12189956B2 (en) | 2022-12-30 | 2025-01-07 | SanDisk Technologies, Inc. | Optimized SSD for game loading and rendering |
-
2016
- 2016-07-22 TW TW105123217A patent/TWI592865B/zh active
- 2016-09-14 US US15/264,603 patent/US20180024738A1/en not_active Abandoned
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11249676B2 (en) | 2020-07-02 | 2022-02-15 | Silicon Motion, Inc. | Electronic device, flash memory controller and associated control method |
| TWI787627B (zh) * | 2020-07-02 | 2022-12-21 | 慧榮科技股份有限公司 | 電子裝置、快閃記憶體控制器及其存取方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20180024738A1 (en) | 2018-01-25 |
| TWI592865B (zh) | 2017-07-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI592865B (zh) | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 | |
| TWI595356B (zh) | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 | |
| CN107665091B (zh) | 数据读取方法、数据写入方法及其存储控制器 | |
| TWI592800B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
| TWI679537B (zh) | 資料移動方法及儲存控制器 | |
| TWI595412B (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
| US9582416B2 (en) | Data erasing method, memory control circuit unit and memory storage apparatus | |
| US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
| US8667234B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
| TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
| CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
| TWI602061B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元 | |
| US9389998B2 (en) | Memory formatting method, memory controller, and memory storage apparatus | |
| CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
| CN107783916B (zh) | 数据传输方法、存储控制器与清单管理电路 | |
| CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
| CN107346211B (zh) | 映射表加载方法、存储器控制电路单元与存储器储存装置 | |
| TWI648634B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
| CN107943710B (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
| TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
| CN107817943B (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
| CN106959818A (zh) | 数据写入方法、内存控制电路单元与内存储存装置 | |
| US8589620B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
| CN107102951B (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 | |
| CN112540932B (zh) | 存储控制器以及写入辅助方法 |