TW201807580A - 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 - Google Patents
資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 Download PDFInfo
- Publication number
- TW201807580A TW201807580A TW105126508A TW105126508A TW201807580A TW 201807580 A TW201807580 A TW 201807580A TW 105126508 A TW105126508 A TW 105126508A TW 105126508 A TW105126508 A TW 105126508A TW 201807580 A TW201807580 A TW 201807580A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- list
- entries
- buffer
- physical area
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
-
- 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
- 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/0683—Plurality of storage devices
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種資料傳輸方法。所述方法包括從所述主機系統接收傳輸指令,其中所述傳輸指令包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,其中所述傳輸指令用以指示於可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與主機記憶體的至少一目標記憶體頁面之間傳輸目標資料;若所述第二記憶體頁面位址為對應所述傳輸指令的第一實體區域頁面指標清單的第一清單起始位址,緩存對應所述傳輸指令的至少一實體區域頁面指標清單的多個條目;以及根據所緩存的所述條目傳輸對應的資料。
Description
本發明是有關於一種資料傳輸方法,且特別是有關於一種資料傳輸方法及使用所述方法的儲存控制器與清單管理電路。
數位相機、手機與MP3在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體(rewritable non-volatile memory)具有資料非揮發性、省電、體積小、無機械結構、讀寫速度快等特性,最適於此些電子產品。因此,近年快閃記憶體產業成為電子產業中相當熱門的一環。例如,廣泛用於行動電子裝置上的嵌入式多媒體卡(embeded Multi Media Card, eMMC)就是一種以快閃記憶體作為儲存媒體的儲存裝置。
為了配合可複寫式非揮發性記憶體的儲存裝置(如,固態硬碟)的較高的寫入/讀取速度,許多資料傳輸介面(例如,快捷外設互聯標準介面,PCIe介面)也開始支援更高階的資料傳輸協定,例如,快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe),以發揮高速的可複寫式非揮發性記憶體儲存裝置的工作效率。
快速非揮發性記憶體介面標準定義了用於使用者資料傳輸的多個存取指令。此些存取指令具有許多指令參數。一般來說,當前的可複寫式非揮發性記憶體儲存裝置的儲存控制器會根據所接收存取指令的所述指令參數來循序地在主機系統的主機記憶體與可複寫式非揮發性記憶體之間存取資料。在存取資料時,會從主機記憶體讀取對應存取指令的清單,以獲得主機記憶體中對應被存取的資料的記憶體位址。然而,從主機記憶體所儲存的對應存取指令的清單中找尋對應的記憶體位址會導致系統延遲的發生,進而降低存取資料的效率。
因此,要如何減少上述的系統延遲的發生,進而增進存取資料的效率,是此領域技術人員所致力的目標。
本發明提供一種資料傳輸方法,以及使用此方法的儲存控制器與清單管理電路,可減少讀取清單所導致的系統延遲,以增進資料傳輸的效率。
本發明的一實施例提供適用於可複寫式非揮發性記憶體模組與主機系統的主機記憶體之間的資料傳輸操作的一種資料傳輸方法,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且所述主機記憶體具有多個記憶體頁面。所述方法包括從所述主機系統接收傳輸指令,其中所述傳輸指令包括起始邏輯區塊位址(SLBA)、邏輯區塊數目(NLB)、第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中所述傳輸指令用以指示於所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與所述主機記憶體的至少一目標記憶體頁面之間傳輸目標資料,其中所述起始邏輯區塊位址用以指示所述至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中用以儲存所述目標資料的邏輯區塊的數目,所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址;若所述第二記憶體頁面位址為對應所述傳輸指令的至少一實體區域頁面指標清單(PRP List)中的第一實體區域頁面指標清單的第一清單起始位址,根據所述傳輸指令從所述主機記憶體中讀取所述至少一實體區域頁面指標清單的部分,並且緩存所讀取的所述至少一實體區域頁面指標清單的所述部分;以及根據所緩存的所述實體區域頁面指標清單的所述部分傳輸對應的資料,其中所傳輸的所述資料為所述目標資料的一部分。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括連接介面電路、記憶體介面控制電路、處理器、資料傳輸管理電路與清單管理電路。所述連接介面電路用以耦接至主機系統,其中所述主機系統配置有主機記憶體,其中所述主機記憶體具有多個記憶體頁面。所述記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊。所述處理器耦接至所述連接介面電路單元及所述記憶體介面控制電路。所述資料傳輸管理電路耦接至所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述清單管理電路耦接至所述資料傳輸管理電路、所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述處理器用以從所述主機系統接收傳輸指令,其中所述傳輸指令包括一起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,其中所述傳輸指令用以指示於所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與所述主機記憶體的至少一目標記憶體頁面之間傳輸目標資料,其中所述起始邏輯區塊位址用以指示所述至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中用以儲存所述目標資料的邏輯區塊的數目,所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址,其中若所述第二記憶體頁面位址為對應所述傳輸指令的至少一實體區域頁面指標清單中的第一實體區域頁面指標清單的第一清單起始位址。所述清單管理電路用以根據所述傳輸指令從所述主機記憶體中讀取所述至少一實體區域頁面指標清單的一部分,並且緩存所讀取的所述至少一實體區域頁面指標清單的所述部分。所述資料傳輸管理電路用以根據所緩存的所述實體區域頁面指標清單的所述部分傳輸對應的資料,其中所傳輸的所述資料為所述目標資料的一部分。
本發明的一實施例提供被配置於儲存裝置的儲存控制器中的一種清單管理電路,其中所述儲存控制器還包括連接介面電路、記憶體介面控制電路與處理器。其中所述連接介面電路用以耦接至主機系統,其中所述主機系統配置有主機記憶體,其中所述主機記憶體具有多個記憶體頁面。所述記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組被配置多個邏輯區塊。所述處理器耦接至所述連接介面電路單元及所述記憶體介面控制電路。所述資料傳輸管理電路,耦接至所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述清單管理電路耦接至所述資料傳輸管理電路、所述處理器、所述連接介面電路單元及所述記憶體介面控制電路。所述清單管理電路包括清單控制器、清單緩衝記憶體與清單獲取電路。清單緩衝記憶體耦接至所述清單控制器。清單獲取電路耦接至所述清單控制器與所述清單緩衝記憶體。所述處理器用以從所述主機系統接收傳輸指令,其中所述傳輸指令包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標,其中所述傳輸指令用以指示於所述可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與所述主機記憶體的至少一目標記憶體頁面之間傳輸目標資料,其中所述起始邏輯區塊位址用以指示所述至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,所述邏輯區塊數目用以指示所述至少一目標邏輯區塊中用以儲存所述目標資料的邏輯區塊的數目,所述第一實體區域頁面指標用以指示所述主機記憶體的第一記憶體頁面位址,並且所述第二實體區域頁面指標用以指示所述主機記憶體的第二記憶體頁面位址。若所述第二記憶體頁面位址為對應所述傳輸指令的至少一實體區域頁面指標清單中的第一實體區域頁面指標清單的第一清單起始位址,所述清單控制器用以根據所述傳輸指令指示所述清單獲取電路從所述主機記憶體中讀取所述至少一實體區域頁面指標清單的一部分,並且所述清單控制器更用以緩存所讀取的所述至少一實體區域頁面指標清單的所述部分至所述清單緩衝記憶體。所述資料傳輸管理電路用以根據所緩存的所述實體區域頁面指標清單的所述部分傳輸對應的資料,其中所傳輸的所述資料為所述目標資料的一部分。
基於上述,本發明的實施例所提供的資料傳輸方法以及使用此方法的儲存控制器與清單管理電路,可利用硬體來緩存對應傳輸指令的實體區域頁面指標清單,以讓資料傳操操作可藉由所緩存的實體區域頁面指標清單來進行,進而減少了儲存裝置與主機系統之間的延遲,增加了資料傳輸的速度,並且增進了儲存裝置與其所進行的資料傳輸操作的工作效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,儲存裝置包括可複寫式非揮發性記憶體模組(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與清單管理電路214。
其中,資料傳輸管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料傳輸管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220讀取資料,並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中。
記憶體介面控制電路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)。
在本實施例中,清單管理電路214用以管理對應傳輸指令的清單。藉由所述清單的資訊來定址傳輸指令所指示欲傳輸的資料在主機記憶體中的位址。
圖2是根據本發明一實施例所繪示的清單管理電路的方塊示意圖。請參照圖2,在本實施例中,清單管理電路214包括清單控制器2141、清單緩衝記憶體2142與清單獲取電路2143。清單緩衝記憶體耦接至清單控制器2141。清單獲取電路2143耦接至清單控制器2141。
清單控制器2141為具備運算能力的硬體,其用以控制清單管理電路214的整體運作。在本實施例中,清單控制器2141例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
清單緩衝記憶體2142用以暫存來自主機記憶體120或清單控制器2141的資料與指令。清單緩衝記憶體2142例如是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)或靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,清單緩衝記憶體2142也可以是其他適合的記憶體。
清單獲取電路2143用以從主機記憶體120讀取(亦稱,獲取,Fetch)清單。清單控制器2141會將清單獲取電路2143所讀取(獲取)的清單儲存(亦稱,緩存,Buffer)至清單緩衝記憶體2142中。以下會再配合多個圖式與實施例來詳細說明本發明中清單管理電路214的各元件的詳細功能與操作。
可複寫式非揮發性記憶體模組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與後續的圖式來詳細說明本發明實施例所提供的對應快速非揮發性記憶體介面標準的資料傳輸指令的資料傳輸方法。
圖3是根據本發明一實施例所繪示的資料傳輸方法的流程圖。在本實施例中,請同時參見圖1與圖3,在步驟S310中,處理器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)或是獲取(Fetch)在主機記憶體120的暫存資料區中的對應所述傳輸指令的資料/資訊。例如,儲存控制器210的清單管理電路214可獲取對應所述傳輸指令並且儲存在主機記憶體120的清單(例如,實體區域頁面指標清單,Physical Region Page pointer List,PRPL),並且將之儲存在清單管理電路214中。
如上所述,所述傳輸指令例如是快速非揮發性記憶體輸入輸出讀取指令,其包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標。其中,經由起始邏輯區塊位址與邏輯區塊數目可獲得在可複寫式非揮發性記憶體模組220中欲讀取的(至少一個)邏輯區塊(亦稱,目標邏輯區塊)位址的範圍;以及經由第一實體區域頁面指標與第二實體區域頁面指標,可獲得至少一記憶體頁面位址(如,第一實體區域頁面指標所指示的第一記憶體頁面位址與第二實體區域頁面指標所指示的第二記憶體頁面位址)。此外,儲存控制器210可經由第一記憶體頁面位址與第二記憶體頁面位址來儲存從所述目標邏輯區塊中讀取的資料(亦稱,目標資料)。
又例如,所述傳輸指令例如是快速非揮發性記憶體輸入輸出寫入指令,其包括起始邏輯區塊位址、邏輯區塊數目、第一實體區域頁面指標與第二實體區域頁面指標。其中,經由起始邏輯區塊位址與邏輯區塊數目可獲得在可複寫式非揮發性記憶體模組220中欲寫入的(至少一個)邏輯區塊(亦稱,目標邏輯區塊)位址的範圍;以及經由第一實體區域頁面指標與第二實體區域頁面指標,可獲得至少一記憶體頁面位址(如,第一實體區域頁面指標所指示的第一記憶體頁面位址與第二實體區域頁面指標所指示的第二記憶體頁面位址)。此外,儲存控制器210可經由第一記憶體頁面位址與第二記憶體頁面位址來讀取對應寫入指令的(欲被寫入至目標邏輯區塊的)資料(亦稱,目標資料),並且寫入至對應的目標邏輯區塊中。換句話說,儲存控制器210可根據所述寫入指令的指示,從主機記憶體120的至少一目標記憶體頁面讀取目標資料且將所讀取的所述目標資料寫入至可複寫式非揮發性記憶體模組220的至少一目標邏輯區塊。
在一實施例中,資料傳輸管理電路212會根據所述起始邏輯區塊位址、所述邏輯區塊數目、所述第一實體區域頁面指標與所述第二實體區域頁面指標來計算用以傳輸資料的資訊,並且根據所計算出的資訊來辨識出所述目標邏輯區塊(範圍)中的每一個目標邏輯區塊所對應的主機記憶體中的記憶體頁面(亦稱,目標記憶體頁面)的位址,以在後續步驟中,讀取目標邏輯區塊所儲存的目標資料,且將目標資料寫入至對應的目標記憶體頁面位址。
此外,在步驟S320中,資料傳輸管理電路212會判斷第二實體區域頁面指標的第二記憶體頁面位址是否為對應所述傳輸指令的至少一實體區域頁面指標清單中的第一實體區域頁面指標清單的第一清單起始位址。以下會藉由圖4與圖5來說明相關的細節。
圖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)”、所述邏輯區塊數目(NLB)的值為“2”、第一實體區域頁面指標(PRP1)的值為“0000”以及第二實體區域頁面指標(PRP2)的值為“1000”。為了簡便說明,以下將傳輸指令視為讀取指令來說明。
在本實施例中,資料傳輸管理電路212會根據邏輯區塊500(0)~500(M)的每一個邏輯區塊的大小(Logical Block Size,LBS)、記憶體頁面400(0)~400(N)的每一個記憶體頁面的大小(Memory Page Size,MPS)、起始邏輯區塊位址、邏輯區塊數目與第一實體區域頁面指標(PRP1)判斷是否需使用第二實體區域頁面指標(PRP2)。
舉例來說,根據上述圖5的傳輸指令(讀取指令),可知道目標邏輯區塊(的範圍)為邏輯區塊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)的清單起始位址,而為一記憶體頁面的起始位址。
更詳細來說,資料傳輸管理電路212會計算目標資料的大小減去初始記憶體頁面空間的大小的差值,並且判斷此差值是否大於一個記憶體頁面的大小。所述差值亦可表示目標資料在寫滿初始記憶體空間後所剩餘的(還未被儲存至主機記憶體的)目標資料。若所述差值大於一個記憶體頁面的大小,資料傳輸管理電路212會辨識第二實體區域頁面指標的第二記憶體頁面位址為實體區域頁面指標清單(PRP List)的清單起始位址(因為,需要實體區域頁面指標清單來記錄用以儲存剩餘的目標資料的兩個以上的記憶體頁面的起始位址)。應注意的是,所述清單起始位址是表示所述實體區域頁面指標清單的第一個條目(如,條目501(0))的起始位址,並且所述清單起始位址可不為記憶體頁面的起始位址。
在本實施例中,資料傳輸管理電路212會將所述差值除以每個記憶體頁面的大小(Memory Page Size,MPS)的商,再對之無條件進位所獲得的值作為實體區域頁面指標清單所記錄的條目的數目。也就是說,資料傳輸管理電路212會判斷(除了初始記憶體頁面空間外)還需要多少記憶體頁面來儲存目標資料,並且對應地順序記錄(除了初始記憶體頁面空間外)所述要儲存目標資料的所述記憶體頁面的起始位址至實體區域頁面指標清單的條目中。每個條目的大小為適合的可記錄位址資訊的空間,本發明不限於此。
應注意的是,每個實體區域頁面指標清單的最大容量為一個記憶體頁面的大小。也就是說,實體區域頁面指標清單最多可記錄的條目數量最大為一個記憶體頁面的大小除以每個條目的大小所獲得的商。每個實體區域頁面指標清單的大小為對應的清單起始位址至實體區域頁面指標清單所屬的記憶體頁面的結束位址之間的空間的大小。例如,實體區域頁面指標清單501可具有條目501(0)~501(P),其中P為正整數。
在一實施例中,若(除了初始記憶體頁面空間外)所述要儲存目標資料的所述記憶體頁面的數目超過了一個實體區域頁面指標清單最多可記錄的條目數量,則資料傳輸管理電路212會辨識到所述實體區域頁面指標清單的最後一個條目會用來記錄(接續的)另一個實體區域頁面指標清單的起始位址。藉此,資料傳輸管理電路212可藉由讀取所述另一個實體區域頁面指標清單,以繼續獲得其他的記憶體頁面的起始位址。
在此例子中,讀取指令指示要讀取的目標邏輯區塊為邏輯區塊500(0)~500(2)。並且,根據第一實體區域頁面指標所指示的第一記憶體頁面位址(如,“0000”),可得知邏輯區塊500(0)所儲存的目標資料將會從主機記憶體120的記憶體頁面400(0)中的為“0000”的記憶體頁面位址開始寫入。此外,除了欲寫入至初始記憶體頁面空間的目標資料,對於其他部份的目標資料,可根據第二實體區域頁面指標所指示的第二記憶體頁面位址(如,“1000”),開始從為“1000”的所述第二記憶體頁面位址(如圖5所示的起始位址SA400(1))來讀取實體區域頁面指標清單501中的條目,以獲得其他部份的目標資料所欲儲存的記憶體頁面的位址。
在本實施例中,目標資料的大小為3個邏輯區塊的大小(NLB為“2”),即12288位元組。除了寫入至初始記憶體頁面的部份目標資料(大小為4096位元組,儲存於邏輯區塊500(0))之外,其他的目標資料(大小為8192位元組,儲存於邏輯區塊500(1)、500(2))會需要兩個記憶體頁面來儲存。基此,實體區域頁面指標清單501的條目501(0)、501(1)中所記錄的位址,是對應邏輯區塊500(1)、500(2)的2個記憶體頁面的起始位址(如圖5所示,條目501(0)、501(1)分別記錄起始位址SA400(2)“2000”、起始位址SA400(3)“3000”)。
值得一提的是,再回到圖3,在本實施例中,若在步驟S320中,資料傳輸管理電路212判定所述第二記憶體頁面位址為對應所述傳輸指令的至少一實體區域頁面指標清單中的第一實體區域頁面指標清單的第一清單起始位址,在步驟S330中,清單管理電路214會根據所述傳輸指令從所述主機記憶體中讀取所述至少一實體區域頁面指標清單的一部分,並且緩存所讀取的所述部分。以下會配合圖6來說明步驟S330的細節。
圖6是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的流程圖。請參照圖6,步驟S330包括步驟S610、S620、S630、S640。在步驟S610中,清單控制器2141會根據傳輸指令來計算至少一實體區域頁面指標清單的多個條目的數目。以下會配合圖7來說明關於計算至少一實體區域頁面指標清單的多個條目的數目的細節。
圖7是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。請參照圖7,為了簡化說明,假設每個記憶體頁面可儲存4個條目(如,每個條目的大小為記憶體頁面的四分之一)。假設從主機系統10所接收的傳輸指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“4”、第一實體區域頁面指標(PRP1)的值為“0000”以及第二實體區域頁面指標(PRP2)的值為“1000”。可知道,目標邏輯區塊(的範圍)為邏輯區塊500(0)~500(4),目標資料的大小為12288位元組(如,4096(Bytes)*5=20480(Bytes)),初始記憶體頁面空間的大小為4096位元組。如上所述,會判定需使用第二實體區域頁面指標,並且第二實體區域頁面指標是表示實體區域頁面指標清單701的記憶體頁面起始位址SA400(1)。
清單控制器2141會將所述目標資料大小減去初始記憶體空間的差值除以每個記憶體頁面的大小(Memory Page Size,MPS)以獲得的一個商值,再對此商值無條件進位所獲得的值做為其他用以傳輸目標資料的目標記憶體頁面的數目。此數目即是實體區域頁面指標清單中的多個條目的數目。此數目不會記入用來指向至其他實體區域頁面指標清單的起始位址的條目的數目。也就是說,清單控制器2141會判斷(除了初始記憶體頁面空間外)還需要多少記憶體頁面來儲存目標資料,並且計算(除了初始記憶體頁面空間外)所述用來記錄要傳輸目標資料的所述目標記憶體頁面的條目的數目。
例如,在圖7中的例子,實體區域頁面指標清單701會具有4個記錄目標記憶體頁面的位址的條目701(0)~701(3)。換句話說,清單控制器2141會計算出實體區域頁面指標清單701的條目的數目為“4”個。
接著,在步驟S620中,清單控制器2141會判斷所述條目的所述數目是否大於最大條目數目。具體來說,廠商會設定一個預設的最大條目數目,其用以限制清單緩衝記憶體2142中對應一個傳輸指令的緩衝區的大小,其中所述緩衝區被規劃來儲存實體區域頁面指標清單的條目。在一實施例中,清單控制器2141會也可根據不同的條件動態地決定最大條目數目的數值。在圖7的例子中,最大條目數目被設定為“4”。換句話說,對應圖7的傳輸指令,清單緩衝記憶體2142會被規劃一個緩衝區,其最大可儲存的條目的數目為“4”個。
若在步驟S620中,清單控制器2141判定所述條目的所述數目不大於最大條目數目,接續至步驟S630,清單控制器2141會規劃第一緩衝區,指示清單獲取電路2143根據所述傳輸指令從主機記憶體120中讀取所述至少一實體區域頁面指標清單的全部條目,並且清單控制器2141緩存所讀取的所述全部條目至所述第一緩衝區。
舉例來說,在圖7的例子中,實體區域頁面指標清單701的條目的數目(如,“4”)不大於最大條目數目(如,“4”)。清單控制器2141會在清單緩衝記憶體中規劃一個緩衝區710(亦稱,第一緩衝區)來儲存所有的實體區域頁面指標清單701的條目701(0)~701(3)。清單控制器2141會指示第一緩衝區710的緩衝區起始位址SA_710以規劃第一緩衝區710的起始位置,並且指示第一緩衝區710的緩衝區條目數目PLE#_710,以規劃第一緩衝區710的大小。在圖7的例子中,緩衝區條目數目PLE#_710的值為“4”,其表示第一緩衝區710被規劃儲存4個條目。
此外,清單控制器2141會指示清單獲取電路2143根據所述傳輸指令從主機記憶體120中讀取實體區域頁面指標清單701的全部條目701(0)~701(3)。接著,清單控制器2141會緩存(儲存)所讀取的全部條目701(0)~701(3)至第一緩衝區710中。
若在步驟S620中,清單控制器2141判定所述條目的所述數目大於最大條目數目,接續至步驟S640。清單控制器2141規劃第二緩衝區與第三緩衝區,清單控制器2141指示清單獲取電路2143根據所述傳輸指令從主機記憶體120中讀取所述至少一實體區域頁面指標清單的第一部分與第二部分,清單控制器2141緩存所讀取的所述第一部份至所述第二緩衝區,並且緩存所讀取的所述第二部份至所述第三緩衝區。以下會配合圖8、圖9來做說明。
圖8是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。請參照圖8,為了簡化說明,假設每個記憶體頁面可儲存4個條目(如,每個條目的大小為記憶體頁面的四分之一)。假設從主機系統10所接收的傳輸指令中的起始邏輯區塊位址(SLBA)的值為“500(0)”、所述邏輯區塊數目(NLB)的值為“7”、第一實體區域頁面指標(PRP1)的值為“0000”以及第二實體區域頁面指標(PRP2)的值為“1000”。可知道,目標邏輯區塊(的範圍)為邏輯區塊500(0)~500(7),目標資料的大小為12288位元組(如,4096(Bytes)*8=32768(Bytes)),初始記憶體頁面空間的大小為4096位元組。如上所述,會判定需使用第二實體區域頁面指標,並且第二實體區域頁面指標是表示實體區域頁面指標清單702的記憶體頁面起始位址SA400(1)。應注意的是,本發明並不限於每個條目的大小。
清單控制器2141會判定 (除了初始記憶體頁面空間外)還需要7個記憶體頁面來儲存目標資料,並且計算(除了初始記憶體頁面空間外)所述用來記錄要傳輸目標資料的所述目標記憶體頁面的起始位址的條目為7個。
例如,在圖7中的例子,實體區域頁面指標清單702會具有3個記錄目標記憶體頁面的位址的條目702(0)~702(2),並且具有1個記錄實體區域頁面指標清單703的起始位址的條目702(3)。實體區域頁面指標清單703會具有4個記錄目標記憶體頁面的位址的條目703(0)~703(3)。
簡單來說,清單控制器2141會計算實體區域頁面指標清單702、703中所儲存的條目的數目(亦稱,第一數目),再計算實體區域頁面指標清單的數目(亦稱,第二數目)。根據實體區域頁面指標清單的數目,清單控制器2141會辨識出用來記錄實體區域頁面指標清單的起始位址的條目的數目(亦稱,第三數目)。在此例子中,清單控制器2141會將第一數目減去第三數目來計算出實體區域頁面指標清單702、703的條目的數目為“7”個(如,第一數目-(第二數目-1)=第一數目-第三數目= 8-1 =7)。
接著,清單控制器2141會在清單緩衝記憶體中規劃兩個緩衝區,分別為第二緩衝區711與第三緩衝區712來儲存條目。例如,清單控制器2141會指示第二緩衝區711的緩衝區起始位址SA_711以規劃第二緩衝區711的起始位置,並且指示第二緩衝區711的緩衝區條目數目PLE#_711,以規劃第二緩衝區711的大小。相似地,清單控制器2141會指示第三緩衝區712的緩衝區起始位址SA_712以規劃第三緩衝區712的起始位置,並且指示第三緩衝區712的緩衝區條目數目PLE#_712,以規劃第三緩衝區712的大小。
值得一提的是,在本實施例中,第二緩衝區711的緩衝區條目數目PLE#_711與第三緩衝區712的緩衝區條目數目PLE#_712的總和等於最大條目數目(如,“4”)。此外,第二緩衝區711的緩衝區條目數目PLE#_711(如,“2”)等於第三緩衝區712的緩衝區條目數目PLE#_712(如,“2”)。應注意的是,在其他實施例中,清單控制器2141也可對應一個傳輸指令在清單緩衝記憶體2142中規劃多於2個的多個緩衝區。
此外,清單控制器2141會指示清單獲取電路2143根據所述傳輸指令從主機記憶體120中讀取實體區域頁面指標清單702、703的第一部分與第二部分。具體來說,請參照圖10右方的表格,清單控制器2141會將實體區域頁面指標清單702、703中用來記錄目標記憶體頁面的條目702(2)~702(2)與條目703(0)~703(3) 依序劃分為多個部分。在本實施例中,每一個部分的條目的總數目會對應第二緩衝區或第三緩衝區的緩衝區條目數目。舉例來說,第二緩衝區711與第三緩衝區712的緩衝區條目數目為“2”。基此,實體區域頁面指標清單702、703的每個部分的條目的數量不會超過2個。在此例子中,清單控制器2141會將實體區域頁面指標清單702、703中用來記錄目標記憶體頁面的條目702(2)~702(2)與條目703(0)~703(3)劃分為第一~第四部分。其中,第一部分為條目702(0)、702(1);第二部分為條目702(2)、703(0);第三部分為條目703(1)、703(2);第四部分為條目703(3)。
接著,清單控制器2141會指示清單獲取電路2143根據所述傳輸指令從主機記憶體120中讀取實體區域頁面指標清單702、703的第一部分(如,條目702(0)、702(1))與第二部分(如,條目702(2)、703(0))。具體來說,清單獲取電路2143會根據所述傳輸指令定位到第一部分(如,條目702(0)、702(1))與第二部分(如,條目702(2)、703(0))的記憶體頁面位址,以讀取第一部分與第二部分中所記錄的內容(如,對應的記憶體頁面的起始位址)。
在完成讀取第一部分與第二部分之後,清單控制器2141會將所讀取的所述第一部份儲存(緩存,Buffer)至清單緩衝記憶體2142的所述第二緩衝區,並且將所讀取的所述第二部份(緩存,Buffer)至清單緩衝記憶體2142的所述第三緩衝區。
再回到圖3,完成緩存實體區域頁面指標清單的步驟(S330)後,接續至步驟S340,資料傳輸管理電路212會根據所緩存的所述部分傳輸對應的資料,其中所傳輸的所述資料為所述目標資料的一部分。具體來說,資料傳輸管理電路212會根據儲存在清單緩衝記憶體2142中的條目來判斷對應的目標邏輯區塊,以進行所述條目所對應的目標記憶體頁面與目標邏輯區塊之間的目標資料的傳輸操作(如,寫入/讀取操作)。應注意的是,若對應一傳輸指令的實體區域頁面指標清單的全部條目被一起緩存至清單緩衝記憶體中(如圖7的例子),資料傳輸管理電路212會根據已緩存至清單緩衝記憶體2142的所述全部條目來進行對應的資料傳輸操作。
在本實施例中,清單控制器2141可以在清單緩衝記憶體2142中規劃給不同的傳輸指令的緩衝區。清單控制器2141可藉由最大條目數目來設定每個緩衝區的大小。每個緩衝區的大小以及其對應的最大條目數目可相同或是不同。最大條目數目為正整數。最大條目數目較佳為偶數。
圖9是根據本發明的另一實施例所繪示的緩存實體區域頁面指標清單的示意圖。圖9的硬體元件相同於圖8,不贅述於此。以下僅說明圖9與圖8的不同之處。請參照圖9,假設在圖9的例子中,儲存控制器210又從主機系統10接收了另一個傳輸指令,並且此另一傳輸指令的第二實體區域頁面指標數值為“3000”,其指示了另個實體區域頁面指標清單704的起始位址。實體區域頁面指標清單704具有3個條目704(0)~704(2)。由於實體區域頁面指標清單704的3個條目704(0)~704(2)的數目(如,3)小於最大條目數目,清單管理電路214會將條目704(0)~704(2)緩存至第四緩衝區,其中第四緩衝區的緩衝區條目數目對應地被規劃為“3”。詳細的緩存實體區域頁面指標清單的條目的操作相似於上述實施例,不贅述於此。
請再回到圖3,在本實施例中,若在步驟S320中,資料傳輸管理電路212判定所述第二記憶體頁面位址不為對應所述傳輸指令的至少一實體區域頁面指標清單中的第一實體區域頁面指標清單的第一清單起始位址,在步驟S350中,資料傳輸管理電路212會直接根據所述傳輸指令傳輸目標資料。具體來說,如上所述,資料傳輸管理電路212會直接根據所述傳輸指令辨識目標記憶體頁面的位址與對應的邏輯區塊,藉此傳輸目標資料。
在本實施例中,當資料傳輸管理電路212根據緩衝區的條目完成了對應的資料傳輸操作後,會清空緩衝區,以使緩衝區可以儲存實體區域指標清單的其他條目。以下會配合圖10~圖13來說明相關的細節。
圖10是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。圖11是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。圖12是根據本發明的一實施例所繪示的對應讀取指令的清單獲取操作與資料傳輸操作的示意圖。
請同時參考圖10與圖12,假設傳輸指令為讀取指令。對應所述讀取指令的實體區域頁面指標清單具有8個條目702(0)~702(3)、703(0)~703(3),其中實體區域頁面指標清單702的條目702(3)用以指示另個實體區域頁面指標清單703的起始位址。實體區域頁面指標清單702、703中用來記錄目標記憶體頁面的條目702(2)~702(2)與條目703(0)~703(3)被劃分為第一~第四部分。其中,第一部分為條目702(0)、702(1);第二部分為條目702(2)、703(0);第三部分為條目703(1)、703(2);第四部分為條目703(3)。條目702(2)~702(2)與條目703(0)~703(3)所對應的記憶體頁面位址與目標記憶體頁面如圖10右方表格所示。
請參照圖12,清單獲取操作用以表示如同圖3的步驟S330的整體操作。即,根據所述傳輸指令從所述主機記憶體中讀取所述至少一實體區域頁面指標清單的一部分(或全部),並且緩存所讀取的所述部分(或全部)。清單獲取操作與資料傳輸操作的時間先後順序如圖12所繪示,其時間先後由左至右排列(如下方的時間座標軸所示)。
一開始,在清單獲取操作PLF_711_1中,清單控制器2141會規劃第二緩衝區711,指示清單獲取電路2143從主機記憶體120中讀取第一部分的條目702(0)、702(1),並且緩存所讀取的條目702(0)、702(1)至清單緩衝記憶體2142中的第二緩衝區711(如,圖10的箭頭PLF_711_1所示);在清單獲取操作PLF_712_2中,清單控制器2141會規劃第三緩衝區712,指示清單獲取電路2143從主機記憶體120中讀取第二部分的條目702(2)、703(0),並且緩存所讀取的條目702(2)、703(0)至清單緩衝記憶體2142中的第三緩衝區712(如,圖10的箭頭PLF_712_2所示)。
由於NVMe協定可以進行全雙工的雙向傳輸模式,即,可以同時進行資料讀取操作與資料寫入操作。在執行清單獲取操作PLF_712_2的同時,資料傳輸管理電路212可以執行第一資料傳輸(讀取)操作DT_711_1。更詳細來說,在傳輸指令是讀取指令的情況下,由於清單獲取操作PLF_712_2是從主機記憶體120讀取資料,並且第一資料傳輸(讀取)操作DT_711_1是寫入資料至主機記憶體120。因此,兩個操作可以同時進行。其中,第一資料傳輸操作DT_711_1是資料傳輸管理電路212根據第二緩衝區中的條目702(0)、702(1)來執行在條目702(0)、702(1)所記錄的目標記憶體頁面與對應條目702(0)、702(1)的目標邏輯區塊之間的資料傳輸操作。即,在傳輸指令是讀取指令的情況下,資料傳輸管理電路212根據第二緩衝區中的條目702(0)、702(1)來執行將對應條目702(0)、702(1)的目標邏輯區塊中的資料讀取至條目702(0)、702(1)所記錄的目標記憶體頁面。
請參照圖11、圖12,在完成第一資料傳輸(讀取)操作DT_711_1後,清單管理電路214會執行清單獲取操作PLF_711_3。
詳細來說,清單控制器2141會清空清單緩衝記憶體2142中的第二緩衝區711。接著,清單控制器2141會從實體區域頁面指標清單702中選擇未被緩存的一部份做為第三部分(如,圖10所示的第三部分的條目703(1)、703(2)),並且指示清單獲取電路2143從主機記憶體120中讀取第三部分。清單控制器2141會緩存所讀取的第三部份至第二緩衝區711(如,圖11的箭頭PLF_711_3所示)。爾後,資料傳輸管理電路212會根據第二緩衝區711中所緩存的第三部份的條目703(1)、703(2)來進行第三資料傳輸操作DT_711_3。
此外,在完成第一資料傳輸(讀取)操作DT_711_1後,資料傳輸管理電路212會根據第三緩衝區中的條目702(2)、703(0)來執行第二資料傳輸(讀取)操作DT_712_2。細節相似於上述的第一資料傳輸操作的說明,不再贅述於此。應注意的是,如上所述,在傳輸指令是讀取指令的情況下,清單獲取操作PLF_711_3與第二資料傳輸操作DT_712_2可以同時進行。
接著,請參照圖11、圖12,在第二資料傳輸操作DT_712_2完成後,相似地,清單管理電路214會執行清單獲取操作PLF_712_4。
詳細來說,清單控制器2141會清空清單緩衝記憶體2142中的第三緩衝區712。接著,清單控制器2141會從實體區域頁面指標清單702中選擇第四部分(如,圖10所示的第四部分的條目703(3)),並且指示清單獲取電路2143從主機記憶體120中讀取第四部分。清單控制器2141會緩存所讀取的第四部份至第三緩衝區712(如,圖11的箭頭PLF_712_4所示)。爾後,資料傳輸管理電路212會根據第三緩衝區712中所緩存的第四部份的條目703(3)來進行第四資料傳輸操作DT_712_4。
此外,相似地,在完成第二資料傳輸(讀取)操作DT_712_2後,資料傳輸管理電路212會根據第二緩衝區中的條目703(1)、703(2)來執行第三資料傳輸(讀取)操作DT_711_3。細節相似於上述的第一資料傳輸操作的說明,不再贅述於此。應注意的是,如上所述,在傳輸指令是讀取指令的情況下,清單獲取操作PLF_712_4與第三資料傳輸操作DT_711_3可以同時進行。
在第三資料傳輸操作DT_711_3完成後,清單管理電路214會判斷對應傳輸指令的實體區域頁面指標清單的多個部分是否都已被緩存。若還有沒有被緩存的部分,清單管理電路214會選擇一個還沒有被緩存的部分來進行緩存操作。在圖10與圖12的例子中,清單控制器2141會判定實體區域頁面指標清單的所有部分都已被緩存過,清單控制器2141會清空第二緩衝區711。
相似地,在第四資料傳輸操作DT_712_4完成後,清單控制器2141會判定實體區域頁面指標清單的所有部分都已被緩存過,清單控制器2141會清空第三緩衝區712。
從圖12的例子中,本實施例所提供的資料傳輸方法,可利用NVMe的全雙工特性來緩存實體區域頁面指標清單,以讓資料傳輸管理電路212可以不需要從主機記憶體120中讀取實體區域頁面指標清單。如此一來,資料傳輸管理電路212可直接從清單緩衝記憶體2142中讀取實體區域頁面指標清單,進而減少了資料傳輸介面電路130與連接介面電路230之間的延遲。
圖13是根據本發明的一實施例所繪示的對應寫入指令的清單獲取操作與資料傳輸操作的示意圖。
請參照圖13,在圖13中,清單獲取操作與資料傳輸操作的細節相似於圖12。然而,圖13與圖12不同之處在於,圖13的傳輸指令是寫入指令。基此,清單獲取操作與資料傳輸操作不可以同時進行。不同的清單獲取操作與資料傳輸操作都必須等待前一個操作。
請參照圖13,舉例來說,清單管理電路214執行完清單獲取指令PLF_711_1、PLF_712_2以緩存第一、第二部分的條目至第二、第三緩衝區後,資料傳輸管理電路212會根據所緩存的條目來執行第一資料傳輸操作DT_711_1。完成第一資料傳輸(寫入)操作DT_711_1後,清單管理電路214才可執行清單獲取操作PLF_711_3以緩衝第三部分的條目至第二緩衝區。接著,清單管理電路214執行完清單獲取指令PLF_711_3後,資料傳輸管理電路212才可根據所緩存的第二部分的條目來執行第二資料傳輸(寫入)操作DT_712_2。以此類推,直到所有部分的條目都緩存完畢並且對應的資料也傳輸(寫入)完畢,最後清除第二緩衝區711與第三緩衝區712。
雖然在圖13的例子中,對應寫入指令的清單獲取操作與資料傳輸操作並不能如同圖12般利用NVMe的全雙工特性,進而達到大幅減少資料傳輸介面電路130與連接介面電路230之間的延遲的效果。但是,從清單緩衝記憶體2142讀取實體區域頁面指標清單的條目依然可以改善資料傳輸介面電路130與連接介面電路230之間的延遲。
綜上所述,本發明的實施例所提供的資料傳輸方法以及使用此方法的儲存控制器與清單管理電路,可利用硬體來緩存對應傳輸指令的實體區域頁面指標清單,以讓資料傳操操作可藉由所緩存的實體區域頁面指標清單來進行,進而減少了儲存裝置與主機系統之間的延遲,增加了資料傳輸的速度,並且增進了儲存裝置與其所進行的資料傳輸操作的工作效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
214‧‧‧清單管理電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
2141‧‧‧清單控制器
2142‧‧‧清單緩衝記憶體
2143‧‧‧清單獲取電路
S310、S320、S330、S340、S350‧‧‧資料傳輸方法的流程步驟
S610、S620、S630、S640‧‧‧緩存實體區域頁面指標清單的流程步驟
400(0)、400(1)、400(2)、400(3)、400(5)、400(6)、400(7)、400(8)、400(9)、400(N)‧‧‧記憶體頁面
SA400(0)、SA400(1)、SA400(2)、SA400(3)、SA400(N)‧‧‧起始位址
EA400(0)、EA400(1)、EA400(N)‧‧‧結束位址
500(0)、500(1)、500(2)‧‧‧邏輯區塊
5001、701、702、703、704‧‧‧實體區域頁面指標清單
501(0)、501(1)、501(P)、701(0)、701(1)、701(2)、701(3)、703(0)、703(1)、703(2)、703(3)、704(0)、704(1)、704(2)‧‧‧條目
SLBA‧‧‧起始邏輯區塊位址
NLB‧‧‧邏輯區塊數目
PRP1‧‧‧第一實體區域頁面指標
PRP2‧‧‧第二實體區域頁面指標
710、711、712、713‧‧‧緩衝區
SA_710、SA_711、SA_712‧‧‧緩衝區起始位址
PLE#_710、PLE#_711、PLE#_712‧‧‧緩衝區條目數目
PLF_711_1、PLF_712_2、PLF_711_3、PLF_712_4‧‧‧清單獲取操作
DT_711_1、DT_712_2、DT_711_3、DT_712_4‧‧‧資料傳輸操作
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖 圖2是根據本發明一實施例所繪示的清單管理電路的方塊示意圖。 圖3是根據本發明一實施例所繪示的資料傳輸方法的流程圖。 圖4是根據本發明的一實施例所繪示的記憶體頁面的示意圖。 圖5是根據本發明一實施例所繪示的資料傳輸的示意圖。 圖6是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的流程圖。 圖7是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。 圖8是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。 圖9是根據本發明的另一實施例所繪示的緩存實體區域頁面指標清單的示意圖。 圖10是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。 圖11是根據本發明的一實施例所繪示的緩存實體區域頁面指標清單的示意圖。 圖12是根據本發明的一實施例所繪示的對應讀取指令的清單獲取操作與資料傳輸操作的示意圖。 圖13是根據本發明的一實施例所繪示的對應寫入指令的清單獲取操作與資料傳輸操作的示意圖。
Claims (21)
- 一種資料傳輸方法,適用於可複寫式非揮發性記憶體模組與一主機系統的一主機記憶體之間的一資料傳輸操作,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊,並且該主機記憶體具有多個記憶體頁面,所述方法包括 從該主機系統接收一傳輸指令,其中該傳輸指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該傳輸指令用以指示於該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與該主機記憶體的至少一目標記憶體頁面之間傳輸一目標資料,其中該起始邏輯區塊位址用以指示該至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中用以儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址; 若該第二記憶體頁面位址為對應該傳輸指令的至少一實體區域頁面指標清單(PRP List)中的一第一實體區域頁面指標清單的一第一清單起始位址,根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的一部分,並且緩存所讀取的該至少一實體區域頁面指標清單的該部分;以及 根據所緩存的該實體區域頁面指標清單的該部分傳輸對應的資料,其中所傳輸的該資料為該目標資料的一部分。
- 如申請專利範圍第1項所述的資料傳輸方法,更包括: 根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小; 根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間; 計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值; 若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,判定該第二實體區域頁面指標的該第二記憶體頁面位址為該第一實體區域頁面指標清單的該第一清單起始位址。
- 如申請專利範圍第1項所述的資料傳輸方法,其中對應該傳輸指令的該至少一實體區域頁面指標清單的每一個實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目分別記錄不同的記憶體頁面位址,其中該些條目依序被劃分為多個部分,其中上述根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的該部分,並且緩存所讀取的該至少一實體區域頁面指標清單的該部分的步驟包括: 根據該傳輸指令來計算該至少一實體區域頁面指標清單的該些條目的數目; 判斷該些條目的該數目是否大於一最大條目數目; 若該些條目的該數目不大於該最大條目數目,規劃一第一緩衝區,根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的全部條目,並且緩存所讀取的該全部條目至該第一緩衝區;以及 若該些條目的該數目大於該最大條目數目,規劃一第二緩衝區與一第三緩衝區,根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的一第一部分與一第二部分,緩存所讀取的該第一部份至該第二緩衝區,並且緩存所讀取的該第二部份至該第三緩衝區。
- 如申請專利範圍第3項所述的資料傳輸方法, 其中上述若該些條目的該數目不大於該最大條目數目,規劃該第一緩衝區的步驟包括:在一清單緩衝記憶體中規劃一個記憶體空間作為對應該傳輸指令的該第一緩衝區,其中該第一緩衝區的大小等於該至少一實體區域頁面指標清單的該全部條目的大小, 其中上述若該些條目的該數目大於該最大條目數目,規劃該第二緩衝區與該第三緩衝區的步驟包括:在該清單緩衝記憶體中規劃兩個記憶體空間分別作為對應該傳輸指令的該第二緩衝區與該第三緩衝區,其中該第二緩衝區或該第三緩衝區的大小皆小於或等於一預定大小。
- 如申請專利範圍第4項所述的資料傳輸方法,其中該預定大小是數目為一半的該最大條目數目的多個條目的總大小,其中該第一部份中或該第二部分中的多個條目的數目小於或等於該最大條目數目的一半。
- 如申請專利範圍第3項所述的資料傳輸方法,其中上述根據所緩存的該實體區域頁面指標清單的該部分進行該資料傳輸操作的步驟包括: 若該些條目的該數目不大於該最大條目數目,根據該第一緩衝區中所緩存的該全部條目來進行該資料傳輸操作;以及 若該些條目的該數目大於該最大條目數目,根據該第二緩衝區中所緩存的該第一部份的多個條目來進行一第一資料傳輸操作,並且根據該第三緩衝區中所緩存的該第二部份的多個條目來進行一第二資料傳輸操作,其中該第一部份的該些條目中的每一個條目分別記錄不同的一第一記憶體頁面位址,並且該第二部份的該些條目中的每一個條目分別記錄不同的一第二記憶體頁面位址, 其中該第一資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第一記憶體頁面位址與該至少一目標邏輯區塊中對應該些第一記憶體頁面位址的多個第一目標邏輯區塊之間傳輸對應的資料,並且該第二資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第二記憶體頁面位址與該至少一目標邏輯區塊中對應該些第二記憶體頁面位址的多個第二目標邏輯區塊之間傳輸對應的資料。
- 如申請專利範圍第6項所述的資料傳輸方法,更包括: 在完成該第一資料傳輸操作後,清空該第二緩衝區,從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第三部分,並且從該主機記憶體中讀取該第三部分,緩存所讀取的該第三部份至該第二緩衝區,並且根據該第二緩衝區中所緩存的該第三部份的多個條目來進行一第三資料傳輸操作;以及 在完成該第二資料傳輸操作後,清空該第三緩衝區,從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第四部分,並且從該主機記憶體中讀取該第四部分,緩存所讀取的該第四部份至該第三緩衝區,並且根據該第三緩衝區中所緩存的該第四部份的多個條目來進行一第四資料傳輸操作。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統,其中該主機系統配置有一主機記憶體,其中該主機記憶體具有多個記憶體頁面; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊; 一處理器,耦接至該連接介面電路單元及該記憶體介面控制電路; 一資料傳輸管理電路,耦接至該處理器、該連接介面電路單元及該記憶體介面控制電路; 一清單管理電路,耦接至該資料傳輸管理電路、該處理器、該連接介面電路單元及該記憶體介面控制電路, 其中該處理器用以從該主機系統接收一傳輸指令,其中該傳輸指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該傳輸指令用以指示於該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與該主機記憶體的至少一目標記憶體頁面之間傳輸一目標資料,其中該起始邏輯區塊位址用以指示該至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中用以儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址, 其中若該第二記憶體頁面位址為對應該傳輸指令的至少一實體區域頁面指標清單(PRP List)中的一第一實體區域頁面指標清單的一第一清單起始位址,該清單管理電路用以根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的一部分,並且緩存所讀取的該至少一實體區域頁面指標清單的該部分, 其中該資料傳輸管理電路用以根據所緩存的該實體區域頁面指標清單的該部分傳輸對應的資料,其中所傳輸的該資料為該目標資料的一部分。
- 如申請專利範圍第8項所述的儲存控制器, 其中該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小, 其中該資料傳輸管理電路根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間, 其中該資料傳輸管理電路計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值, 其中若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路判定該第二實體區域頁面指標的該第二記憶體頁面位址為該第一實體區域頁面指標清單的該第一清單起始位址。
- 如申請專利範圍第8項所述的儲存控制器,其中對應該傳輸指令的該至少一實體區域頁面指標清單的每一個實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目分別記錄不同的記憶體頁面位址,其中該些條目依序被劃分為多個部分,其中在上述該清單管理電路用以根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的該部分,並且緩存所讀取的該至少一實體區域頁面指標清單的該部分的運作中, 該清單管理電路根據該傳輸指令來計算該至少一實體區域頁面指標清單的該些條目的數目, 其中該清單管理電路判斷該些條目的該數目是否大於一最大條目數目, 其中若該些條目的該數目不大於該最大條目數目,該清單管理電路規劃一第一緩衝區,並且根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的全部條目,其中該清單管理電路緩存所讀取的該全部條目至該第一緩衝區, 其中若該些條目的該數目大於該最大條目數目,該清單管理電路規劃一第二緩衝區與一第三緩衝區,並且根據該傳輸指令從該主機記憶體中讀取該至少一實體區域頁面指標清單的一第一部分與一第二部分,其中該清單管理電路緩存所讀取的該第一部份至該第二緩衝區,並且緩存所讀取的該第二部份至該第三緩衝區。
- 如申請專利範圍第10項所述的儲存控制器,其中在上述若該些條目的該數目不大於該最大條目數目,該清單管理電路規劃該第一緩衝區的運作中,該清單管理電路在一清單緩衝記憶體中規劃一個記憶體空間作為對應該傳輸指令的該第一緩衝區,其中該第一緩衝區的大小等於該至少一實體區域頁面指標清單的該全部條目的大小, 其中在上述若該些條目的該數目大於該最大條目數目,該清單管理電路規劃該第二緩衝區與該第三緩衝區的運作中,該清單管理電路在該清單緩衝記憶體中規劃兩個記憶體空間分別作為對應該傳輸指令的該第二緩衝區與該第三緩衝區,其中該第二緩衝區或該第三緩衝區的大小皆小於或等於一預定大小。
- 如申請專利範圍第11項所述的儲存控制器,其中該預定大小是數目為一半的該最大條目數目的多個條目的總大小,其中該第一部份中或該第二部分中的多個條目的數目小於或等於該最大條目數目的一半。
- 如申請專利範圍第10項所述的儲存控制器,其中在上述該資料傳輸管理電路用以根據所緩存的該實體區域頁面指標清單的該部分進行該資料傳輸操作的運作中, 若該些條目的該數目不大於該最大條目數目,該資料傳輸管理電路根據該第一緩衝區中所緩存的該全部條目來進行該資料傳輸操作, 其中若該些條目的該數目大於該最大條目數目,該資料傳輸管理電路根據該第二緩衝區中所緩存的該第一部份的多個條目來進行一第一資料傳輸操作,並且根據該第三緩衝區中所緩存的該第二部份的多個條目來進行一第二資料傳輸操作,其中該第一部份的該些條目中的每一個條目分別記錄不同的一第一記憶體頁面位址,並且該第二部份的該些條目中的每一個條目分別記錄不同的一第二記憶體頁面位址, 其中該第一資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第一記憶體頁面位址與該至少一目標邏輯區塊中對應該些第一記憶體頁面位址的多個第一目標邏輯區塊之間傳輸對應的資料,並且該第二資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第二記憶體頁面位址與該至少一目標邏輯區塊中對應該些第二記憶體頁面位址的多個第二目標邏輯區塊之間傳輸對應的資料。
- 如申請專利範圍第13項所述的儲存控制器, 其中在完成該第一資料傳輸操作後,該清單管理電路清空該第二緩衝區,從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第三部分,並且從該主機記憶體中讀取該第三部分,其中該清單管理電路緩存所讀取的該第三部份至該第二緩衝區,並且該資料傳輸管理電路根據該第二緩衝區中所緩存的該第三部份的多個條目來進行一第三資料傳輸操作, 其中在完成該第二資料傳輸操作後,該清單管理電路清空該第三緩衝區,從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第四部分,並且從該主機記憶體中讀取該第四部分,其中該清單管理電路緩存所讀取的該第四部份至該第三緩衝區,並且該資料傳輸管理電路根據該第三緩衝區中所緩存的該第四部份的多個條目來進行一第四資料傳輸操作。
- 一種清單管理電路,被配置於一儲存裝置的一儲存控制器中,其中該儲存控制器還包括:一連接介面電路、一記憶體介面控制電路與一處理器, 其中該連接介面電路用以耦接至一主機系統,其中該主機系統配置有一主機記憶體,其中該主機記憶體具有多個記憶體頁面,其中該記憶體介面控制電路用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組被配置多個邏輯區塊,其中該處理器耦接至該連接介面電路單元及該記憶體介面控制電路,其中該資料傳輸管理電路,耦接至該處理器、該連接介面電路單元及該記憶體介面控制電路, 其中該清單管理電路耦接至該資料傳輸管理電路、該處理器、該連接介面電路單元及該記憶體介面控制電路,該清單管理電路包括: 一清單控制器; 一清單緩衝記憶體,耦接至該清單控制器;以及 一清單獲取電路,耦接至該清單控制器與該清單緩衝記憶體, 其中該處理器用以從該主機系統接收一傳輸指令,其中該傳輸指令包括一起始邏輯區塊位址(SLBA)、一邏輯區塊數目(NLB)、一第一實體區域頁面指標(PRP1)與一第二實體區域頁面指標(PRP2),其中該傳輸指令用以指示於該可複寫式非揮發性記憶體模組的至少一目標邏輯區塊與該主機記憶體的至少一目標記憶體頁面之間傳輸一目標資料,其中該起始邏輯區塊位址用以指示該至少一目標邏輯區塊中排序第一個的目標邏輯區塊的位址,該邏輯區塊數目用以指示該至少一目標邏輯區塊中用以儲存該目標資料的邏輯區塊的數目,該第一實體區域頁面指標用以指示該主機記憶體的一第一記憶體頁面位址,並且該第二實體區域頁面指標用以指示該主機記憶體的一第二記憶體頁面位址, 其中若該第二記憶體頁面位址為對應該傳輸指令的至少一實體區域頁面指標清單(PRP List)中的一第一實體區域頁面指標清單的一第一清單起始位址,該清單控制器用以根據該傳輸指令指示該清單獲取電路從該主機記憶體中讀取該至少一實體區域頁面指標清單的一部分,並且該清單控制器更用以緩存所讀取的該至少一實體區域頁面指標清單的該部分至該清單緩衝記憶體, 其中該資料傳輸管理電路用以根據所緩存的該實體區域頁面指標清單的該部分傳輸對應的資料,其中所傳輸的該資料為該目標資料的一部分。
- 如申請專利範圍第15項所述的清單管理電路, 其中該資料傳輸管理電路根據該些邏輯區塊的每一個邏輯區塊的該大小與該邏輯區塊數目計算該目標資料的大小, 其中該資料傳輸管理電路根據該些記憶體頁面的每一個記憶體頁面的該大小與該第一實體區域頁面指標判斷該第一記憶體頁面位址所屬的記憶體頁面的一結束位址,並且將經由該結束位址與該第一記憶體頁面位址之間的空間作為一初始記憶體頁面空間, 其中該資料傳輸管理電路計算該目標資料的該大小減去該初始記憶體頁面空間的該大小的一差值, 其中若該差值大於該些記憶體頁面的每一個記憶體頁面的該大小,該資料傳輸管理電路判定該第二實體區域頁面指標的該第二記憶體頁面位址為該第一實體區域頁面指標清單的該第一清單起始位址。
- 如申請專利範圍第15項所述的清單管理電路,其中對應該傳輸指令的該至少一實體區域頁面指標清單的每一個實體區域頁面指標清單儲存多個條目(entry),其中該些條目中的每一個條目分別記錄不同的記憶體頁面位址,其中該些條目依序被劃分為多個部分,其中在上述該清單控制器用以根據該傳輸指令指示該清單獲取電路從該主機記憶體中讀取該至少一實體區域頁面指標清單的一部分,並且該清單控制器更用以緩存所讀取的該至少一實體區域頁面指標清單的該部分至該清單緩衝記憶體的運作中, 該清單控制器根據該傳輸指令來計算該至少一實體區域頁面指標清單的該些條目的數目, 其中該清單控制器判斷該些條目的該數目是否大於一最大條目數目, 其中若該些條目的該數目不大於該最大條目數目,該清單控制器在該清單緩衝記憶體中規劃一第一緩衝區,並且指示該清單獲取電路從該主機記憶體中讀取該至少一實體區域頁面指標清單的全部條目,其中該清單控制器緩存所讀取的該至少一實體區域頁面指標清單的該全部條目至該第一緩衝區, 其中若該些條目的該數目大於該最大條目數目,該清單管理電路在該清單緩衝記憶體中規劃一第二緩衝區與一第三緩衝區,並且指示該清單獲取電路從該主機記憶體中讀取該至少一實體區域頁面指標清單的一第一部份與一第二部分,其中該清單控制器緩存所讀取的該第一部份至該第二緩衝區,並且緩存所讀取的該第二部份至該第三緩衝區。
- 如申請專利範圍第17項所述的清單管理電路, 其中在上述若該些條目的該數目不大於該最大條目數目,該清單控制器在該清單緩衝記憶體中規劃該第一緩衝區的運作中,該清單管理電路在該清單緩衝記憶體中規劃一個記憶體空間作為對應該傳輸指令的該第一緩衝區,其中該第一緩衝區的大小等於該至少一實體區域頁面指標清單的該全部條目的大小, 其中在上述若該些條目的該數目大於該最大條目數目,該清單控制器在該清單緩衝記憶體中規劃該第二緩衝區與該第三緩衝區的運作中,該清單控制器在該清單緩衝記憶體中規劃兩個記憶體空間分別作為對應該傳輸指令的該第二緩衝區與該第三緩衝區,其中該第二緩衝區或該第三緩衝區的大小皆小於或等於一預定大小。
- 如申請專利範圍第18項所述的清單管理電路,其中該預定大小是數目為一半的該最大條目數目的多個條目的總大小,其中該第一部份中或該第二部分中的多個條目的數目小於或等於該最大條目數目的一半。
- 如申請專利範圍第17項所述的清單管理電路,其中在上述該資料傳輸管理電路用以根據所緩存的該實體區域頁面指標清單的該部分進行該資料傳輸操作的運作中, 若該些條目的該數目不大於該最大條目數目,該資料傳輸管理電路根據該第一緩衝區中所緩存的該全部條目來進行該資料傳輸操作, 其中若該些條目的該數目大於該最大條目數目,該資料傳輸管理電路根據該第二緩衝區中所緩存的該第一部份的多個條目來進行一第一資料傳輸操作,並且根據該第三緩衝區中所緩存的該第二部份的多個條目來進行一第二資料傳輸操作,其中該第一部份的該些條目中的每一個條目分別記錄不同的一第一記憶體頁面位址,並且該第二部份的該些條目中的每一個條目分別記錄不同的一第二記憶體頁面位址, 其中該第一資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第一記憶體頁面位址與該至少一目標邏輯區塊中對應該些第一記憶體頁面位址的多個第一目標邏輯區塊之間傳輸對應的資料,並且該第二資料傳輸操作是根據該傳輸指令在該主機記憶體的該些第二記憶體頁面位址與該至少一目標邏輯區塊中對應該些第二記憶體頁面位址的多個第二目標邏輯區塊之間傳輸對應的資料。
- 如申請專利範圍第20項所述的清單管理電路, 其中在完成該第一資料傳輸操作後,該清單控制器清空該清單緩衝記憶體中的該第二緩衝區,該清單控制器從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第三部分,並且指示該清單獲取電路從該主機記憶體中讀取該第三部分,其中該清單控制器緩存所讀取的該第三部份至該第二緩衝區,並且該資料傳輸管理電路根據該第二緩衝區中所緩存的該第三部份的多個條目來進行一第三資料傳輸操作, 其中在完成該第二資料傳輸操作後,該清單控制器清空該清單緩衝記憶體中的該第三緩衝區,該清單控制器從該至少一實體區域頁面指標清單的該些部分中選擇未被緩存的一部份做為一第四部分,並且指示該清單獲取電路從該主機記憶體中讀取該第四部分,其中該清單控制器緩存所讀取的該第四部份至該第三緩衝區,並且該資料傳輸管理電路根據該第三緩衝區中所緩存的該第四部份的多個條目來進行一第四資料傳輸操作。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW105126508A TWI595356B (zh) | 2016-08-19 | 2016-08-19 | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 |
| US15/293,285 US10324651B2 (en) | 2016-08-19 | 2016-10-14 | Data transmission method, and storage controller and list management circuit using the same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW105126508A TWI595356B (zh) | 2016-08-19 | 2016-08-19 | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI595356B TWI595356B (zh) | 2017-08-11 |
| TW201807580A true TW201807580A (zh) | 2018-03-01 |
Family
ID=60189323
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105126508A TWI595356B (zh) | 2016-08-19 | 2016-08-19 | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10324651B2 (zh) |
| TW (1) | TWI595356B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115221078A (zh) * | 2021-04-14 | 2022-10-21 | 瑞昱半导体股份有限公司 | 数据传输方法与数据处理电路 |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102667430B1 (ko) * | 2016-08-04 | 2024-05-23 | 삼성전자주식회사 | 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법 |
| TWI662409B (zh) * | 2018-01-23 | 2019-06-11 | 祥碩科技股份有限公司 | 實體區域頁面位址轉換器與實體區域頁面清單存取方法 |
| CN110879794B (zh) * | 2018-09-05 | 2023-01-17 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
| TWI688859B (zh) * | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
| US11132292B2 (en) | 2019-12-10 | 2021-09-28 | Micron Technology, Inc. | Active input/output expander of a memory sub-system |
| CN113885779B (zh) * | 2020-07-02 | 2024-03-12 | 慧荣科技股份有限公司 | 数据处理方法及对应的数据储存装置 |
| US11853236B2 (en) * | 2020-11-05 | 2023-12-26 | Synopsys, Inc. | Enriched auto command feature for I3C host controller |
| US11768606B2 (en) * | 2021-12-27 | 2023-09-26 | Western Digital Technologies, Inc. | Maximizing performance through traffic balancing |
| US20240320088A1 (en) * | 2022-07-27 | 2024-09-26 | SK Hynix Inc. | Data coding device, memory controller, and storage device |
| CN115981566B (zh) * | 2022-12-30 | 2025-06-06 | 浙江地芯引力科技有限公司 | 存储器的数据修改方法、装置、设备及存储介质 |
| CN119396330B (zh) * | 2024-08-29 | 2025-11-18 | 山东云海国创云计算装备产业创新中心有限公司 | 基于控制页链表模板的控制页链表构建方法、装置和设备 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130086311A1 (en) * | 2007-12-10 | 2013-04-04 | Ming Huang | METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS |
| US8732431B2 (en) * | 2011-03-06 | 2014-05-20 | Micron Technology, Inc. | Logical address translation |
| US20140229659A1 (en) * | 2011-12-30 | 2014-08-14 | Marc T. Jones | Thin translation for system access of non volatile semicondcutor storage as random access memory |
| US9430412B2 (en) * | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
| US9294567B2 (en) * | 2014-05-02 | 2016-03-22 | Cavium, Inc. | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller |
| KR102564165B1 (ko) * | 2016-04-25 | 2023-08-04 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
-
2016
- 2016-08-19 TW TW105126508A patent/TWI595356B/zh active
- 2016-10-14 US US15/293,285 patent/US10324651B2/en active Active
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115221078A (zh) * | 2021-04-14 | 2022-10-21 | 瑞昱半导体股份有限公司 | 数据传输方法与数据处理电路 |
| TWI783465B (zh) * | 2021-04-14 | 2022-11-11 | 瑞昱半導體股份有限公司 | 資料傳輸方法與資料處理電路 |
| US11972141B2 (en) | 2021-04-14 | 2024-04-30 | Realtek Semiconductor Corp. | Method for data transmission and data-processing circuit |
Also Published As
| Publication number | Publication date |
|---|---|
| TWI595356B (zh) | 2017-08-11 |
| US10324651B2 (en) | 2019-06-18 |
| US20180052634A1 (en) | 2018-02-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI595356B (zh) | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 | |
| TWI592865B (zh) | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 | |
| TWI592800B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
| TWI679537B (zh) | 資料移動方法及儲存控制器 | |
| TWI595412B (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
| US9021218B2 (en) | Data writing method for writing updated data into rewritable non-volatile memory module, and memory controller, and memory storage apparatus using the same | |
| CN107665091B (zh) | 数据读取方法、数据写入方法及其存储控制器 | |
| US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
| TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
| CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
| TW201732597A (zh) | 資料儲存裝置和其操作方法 | |
| TWI650639B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
| CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
| TWI602061B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元 | |
| CN107783916B (zh) | 数据传输方法、存储控制器与清单管理电路 | |
| CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
| CN107943710B (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
| TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
| TWI760697B (zh) | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TWI813498B (zh) | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 | |
| CN107817943B (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
| CN112540932B (zh) | 存储控制器以及写入辅助方法 | |
| CN107103930B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| US20120166740A1 (en) | Data writing method, memory controller, and memory storage apparatus | |
| TWI603335B (zh) | 映射表載入方法、記憶體控制電路單元與記憶體儲存裝置 |