TWI707233B - 快閃記憶體控制器及方法 - Google Patents
快閃記憶體控制器及方法 Download PDFInfo
- Publication number
- TWI707233B TWI707233B TW108107602A TW108107602A TWI707233B TW I707233 B TWI707233 B TW I707233B TW 108107602 A TW108107602 A TW 108107602A TW 108107602 A TW108107602 A TW 108107602A TW I707233 B TWI707233 B TW I707233B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- storage page
- data unit
- buffer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
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)
- Read Only Memory (AREA)
Abstract
一種連接至一快閃記憶體之一快閃記憶體控制器的方法,包括:通過一主機之一匯流排來接收從該主機來之一資料單元;控制該快閃記憶體以從該快閃記憶體載入一完整的儲存頁資料至該快閃記憶體之一緩衝器;以及寫入該資料單元至該緩衝器以更新或取代儲存於該緩衝器中之該完整的儲存頁資料之一部分資料,以控制該快閃記憶體從該緩衝器寫入被該資料單元所更新後之該完整的儲存頁資料至該快閃記憶體。
Description
本發明係關於一種快閃記憶體的資料程式化/寫入機制,特別有關於一快閃記憶體控制器以及相對應的方法。
一般而言,傳統的快閃記憶體控制器在每一次發出一程式化/寫入命令至一快閃記憶體時,傳統的快閃記憶體控制器會程式化或寫入一個完整的儲存頁資料的資料量至該快閃記憶體,如果從一主機裝置所傳送來的資料量小於一個完整的儲存頁資料之資料量,則傳統的快閃記憶體控制器會於該筆資料量後填充虛擬資料以形成一個完整的儲存頁資料,通常來說,所填充的該虛擬資料之資料量會更大於該主機裝置所傳送來之資料量的大小,如此一來,傳統快閃記憶體的寫入效能無疑地會被所填充的該虛擬資料之傳輸時間所限制。
因此,本發明之目的之一在於提供一種快閃記憶體控制器及相對應的方法,以解決上述所提到的問題。
根據本發明的實施例,係揭露了一種快閃記憶體控制器,快閃記憶體控制器包含一第一輸入/出介面、一第二輸入/出介面以及一處理電路,第一輸入/出介面用來連接於一主機之一匯流排以接收來自於該主機之一資料單元,第二輸入/出介面用來連接於一快閃記憶體,處理電路耦接於該第一輸入/
出介面與該第二輸入/出介面之間,並用來控制該快閃記憶體以從該快閃記憶體載入一完整的儲存頁資料至該快閃記憶體之一緩衝器,以及用來通過該第二輸入/出介面以寫入該資料單元至該緩衝器以更新或取代儲存於該緩衝器中之該完整的儲存頁資料之一部分資料,其中被該資料單元所更新後之該完整的儲存頁資料接著被寫入至該快閃記憶體。
根據本發明的實施例,另揭露了一種連接至一快閃記憶體之一快閃記憶體控制器的方法,該方法包括:通過一主機之一匯流排來接收從該主機來之一資料單元;控制該快閃記憶體以從該快閃記憶體載入一完整的儲存頁資料至該快閃記憶體之一緩衝器;以及寫入該資料單元至該緩衝器以更新或取代儲存於該緩衝器中之該完整的儲存頁資料之一部分資料,以控制該快閃記憶體從該緩衝器寫入被該資料單元所更新後之該完整的儲存頁資料至該快閃記憶體。
100:快閃記憶體控制器
101:主機裝置
102:快閃記憶體
102A:儲存單元陣列
102B:緩衝器
105、110:輸入/出介面
115:處理電路
第1圖是本發明實施例之一快閃記憶體控制器的方塊示意圖。
第2圖是第1圖之實施例之快閃記憶體控制器的操作流程示意圖。
第3圖是第1圖之實施例之快閃記憶體控制器依序地接收多個資料單元及發出多個不同命令以寫入該些資料單元至快閃記憶體以對多個不同資料單元進行資料寫入之範例時序示意圖。
為了符合快閃記憶體的規範,傳統快閃記憶體控制器會於每一次發出一程式化/寫入命令至一快閃記憶體時程式化或寫入一個完整的儲存頁資料之資料量至該快閃記憶體,如果從一主機裝置所傳送來之一資料量小於一個完整的儲存頁資料之資料量,則傳統快閃記憶體控制器會於該筆資料量後填充一
連串的虛擬資料以形成一個完整的儲存頁資料。通常來說,所填充的該虛擬資料之資料量會更大於該主機裝置所傳送之該筆資料量的大小,如此,傳統快閃記憶體機制的寫入效能無疑地會被所填充的該筆虛擬資料之傳輸時間所限制。
本發明旨在於提供一種能夠對於不實現命令佇列(command queue)功能之快閃記憶體控制器增進其每秒輸入/出操作(Input/Output Operations per Second,IOPS)效能之技術解決方案,本發明的技術方案是通過減少將要被傳送之虛擬資料(dummy data)之資料量大小(亦即等效上減少虛擬資料的傳輸時間)來增進IOPS效能。
一個主機裝置例如是可攜式電子裝置會依序地發送或輸出一連串具有較小資料大小(data size)的多個資料單元至一快閃記憶體控制器,而不會直接輸出一個完整的儲存頁資料至該快閃記憶體控制器,例如,如果一個完整的儲存頁資料具有16KB(亦即16個千位元組(kilobyte))的資料,則該主機裝置可能會依序傳送四個資料單元至該快閃記憶體控制器,而其中每一個資料單元具有4KB的資料量。另外,該主機裝置也可以傳送兩個資料單元至該快閃記憶體控制器,其中每一個資料單元具有8KB的資料量,或是該主機裝置也可傳送八個資料單元至該快閃記憶體控制器,其中每一個資料單元具有2KB的資料量。每一次從該主機裝置所傳送的資料量大小並非是本案的限制。簡言之,該主機裝置係被安排依序發送具有小於一個完整的儲存頁資料的資料量之複數個資料單元。
在本發明的實施例,所提供的不實現命令佇列功能之快閃記憶體控制器係被安排將從一主機裝置來的一或多個資料單元(或是一個多個部分資料)盡快地寫入或程式化至一快閃記憶體,以避免資料丟失。例如,輸入的一或多個資料單元會以先進先出(first-in-first-out(FIFO))的順序被不實現命令佇列功能之該快閃記憶體控制器所處理;然而,此並非是本發明的限制。
輸入的一或多個資料單元(或是一個多個部分資料)也可以通過其他處理順序而被該快閃記憶體控制器所處理。
第1圖是本發明實施例之快閃記憶體控制器100的方塊示意圖。快閃記憶體控制器100被設置用來連接於主機裝置101與快閃記憶體102之間,快閃記憶體102例如是NAND型快閃記憶體(但不限定)。快閃記憶體控制器100以及快閃記憶體102可被包括於一可攜式電子裝置中,例如是大姆哥隨身碟(thumb drive)、隨身筆碟(pen drive)、記憶卡(stick)或行動硬碟(disk)。
快閃記憶體控制器100包含第一輸入/出介面105、第二輸入/出介面110以及處理電路115。快閃記憶體102包含至少一個儲存單元陣列(cell array)102A以及至少一個相對應的緩衝器102B。例如,如果快閃記憶體102是雙面式(two-plane type)的快閃記憶體,則快閃記憶體102包含有兩個儲存單元陣列102A以及兩個緩衝器102B。
第一輸入/出介面105被設置用來通過匯流排(例如USB匯流排;但不限定)而連接於主機裝置101的訊號埠以接收從主機裝置101來的多個資料單元。第二輸入/出介面110被設置用來通過一內部匯流排而連接至快閃記憶體102。處理電路115耦接於第一輸入/出介面105與第二輸入/出介面110之間,並被設置用來程式化或寫入從主機裝置101來的一或多個資料單元至快閃記憶體102。處理電路115可具有一錯誤更正碼的編碼/解碼電路、一微控制器、一或多個緩衝器、一或多個快取、一或多個暫存器、一加密/解碼引擎及/或一控制有限狀態機(finite stage machine)。上述所提到的電路的功能及操作均不另詳述以節省說明書的篇幅。
在本發明實施例,為了避免整體系統/驅動/應用設計過於複雜,對於快閃記憶體資料的程式化或寫入,快閃記憶體控制器100被設置不支援命令佇列的功能,以節省成本。由於沒有實現命令佇列的功能而造成無法保證對於所
有資料均成功完成資料程式化/寫入(某些資料單元可能因為主機裝置101與快閃記憶體控制器100之間的通訊斷連而丟失),所以快閃記憶體控制器100被安排於每次當通過輸入/出介面105接收到來自於主機裝置101的一資料單元時立即通過輸入/出介面110寫入一資料單元至快閃記憶體102,以避免資料丟失。此外,當從主機裝置101接收到一個或每一個資料單元以及相對應的邏輯位址時,處理電路115會被安排將該相對應的邏輯位址映射為快閃記憶體102之一實體位址,亦即邏輯至實體層映射。
從主機裝置101所傳送並輸出至快閃記憶體控制器100之一個資料單元的資料大小可以不同於快閃記憶體102中所定義規範的一個儲存頁資料的資料大小。在本發明實施例,從主機裝置101所傳送並輸出之一個資料單元可以被視為一個管理資料單元,而該資料單元的資料大小可以不同並可取決於不同的應用而有所不同,例如主機裝置101的視訊、音訊或其他應用。在一實施例,管理資料單元的資料大小可以設計為4KB(但不限定)。再者,一個儲存頁資料指的是對於快閃記憶體102進行資料程式化/寫入的一個資料單位。例如,一個儲存頁資料在單面式(one-plane type)的快閃記憶體可以是16KB的資料量,而在雙面式的快閃記憶體可以是32KB的資料量。也就是說,在本發明實施例,主機裝置101會通過USB匯流排依序地發送或傳輸一連串具有4KB資料大小的多個資料單元至快閃記憶體控制器100。例如,主機裝置101可以是能夠獲取高品質影像/視訊的一可攜式裝置,並依序地傳輸及寫入所獲取的資料至快閃記憶體以避免資料突發(data burst)的可能丟失之錯誤。應注意,這並非是本發明的限制。主機裝置101在其他實施例可被用於不同的裝置或不同的用途。應注意的是,一個管理資料單元的資料大小並不限定於4KB資料量,在其他實施例,該資料大小也可以被設計為1KB、2KB或取決於系統設計而定。再者,例如,如果一個管理資料單元的資料大小是4KB,而一個儲存頁資料的資料大小有16KB,
則四個管理資料單元會形成一個儲存頁資料。也就是說,從主機裝置101所傳送並輸出之一個管理資料單元可被視為是儲存於快閃記憶體102之一個儲存頁資料單元之該儲存頁資料的一部分資料。
為了解決傳統機制的問題,在本發明實施例,快閃記憶體控制器100被安排判斷從主機裝置101所接收到之一資料單元是否是用來形成快閃記憶體102中所定義之一個儲存頁資料之一第一部分資料,其中一個儲存頁資料之一第一部分資料所指的是在該儲存頁資料之一起始邏輯位置的一起始的部分資料。如果該資料單元是用來形成該第一部分資料,則快閃記憶體控制器100之處理電路115會被安排發出一程式化/寫入命令80h以程式化或寫入一個儲存頁資料的資料量至快閃記憶體102,例如具有16KB或32KB的資料量,亦即該筆資料單元再加上其他的虛擬資料。
如果該筆資料單元不是用來形成第一部分資料,則處理電路115會被安排發出一回搬讀取命令(copy back read command)至快閃記憶體102,以從儲存單元陣列102A讀取一個儲存頁資料的資料量至緩衝器102B,其中所被讀取的儲存頁資料可以是先前儲存於儲存單元陣列102A之一個儲存頁的儲存頁資料。例如,該筆資料單元係被用來形成該儲存頁資料的一第二部分資料,其中該第二部分資料之一邏輯位置係緊隨著該第一部分資料之邏輯位置之後。在這個情況中,快閃記憶體控制器100所發出之該回搬讀取命令係用來從儲存單元陣列102A讀取用來形成該第一部分資料的資料單元以及其他的虛擬資料至緩衝器102B。處理電路115接著被安排發出一程式化/寫入命令80h以寫入用來形成該第二部分資料之該資料單元至快閃記憶體102以更新一個儲存頁資料之資料量的一相對應的位置,其中該儲存頁資料係指已經從儲存單元陣列102A中被讀取出並被緩衝於緩衝器102B中的儲存頁資料。在這個情況中,例如,用來形成該第二部分資料之該筆資料單元係被安排更新該儲存頁資料之第二部分資料之位
置的資料,該儲存頁資料係已經從儲存單元陣列102A所讀出。緩衝器102B中所緩衝之更新後的儲存頁資料的資料量係接著被寫入至儲存單元陣列102A的一個儲存頁。應注意的是,單一個資料單元(例如一個4KB的資料)的傳輸係緊隨著該程式化/寫入命令80h之後,而並非是一整個儲存頁資料的資料量緊隨著該程式化/寫入命令80h之後。
相似地,如果判斷出該資料單元係用來形成該儲存頁資料的一第三部分資料,則處理電路115也會被安排發出回搬讀取命令至快閃記憶體102,以從儲存單元陣列102A讀出一個儲存頁資料的資料量至緩衝器102B。在這個情況中,從儲存單元陣列102A所讀出之一個儲存頁資料的資料量依序包含有該第一部分資料、該第二部分資料以及其他接著的虛擬資料。接著,處理電路115也會被安排發出程式化/寫入命令80h以寫入用來形成該儲存頁資料之該第三部分資料的該資料單元,以更新一個儲存頁資料之資料量的一個相對應位置的資料,該儲存頁資料係指已經從儲存單元陣列102A所讀回並緩衝於緩衝器102B中的儲存頁資料。例如,用來形成該儲存頁資料之該第三部分資料的該資料單元係被安排更新已經從儲存單元陣列102A所讀回之該儲存頁資料之該第三部分資料的位置的資料,並且緩衝於緩衝器102B中之更新後之儲存頁資料的資料會接著被寫入至儲存單元陣列102A的一個儲存頁。單一個資料單元(例如4KB)的傳輸係隨著程式化/寫入命令80h之後,而並非是一個儲存頁資料的資量傳輸隨著程式化/寫入命令80h之後。
對於每一個來形成一個儲存頁資料之其他部分資料(非第一部分資料)的資料單元,依序地執行上述發出回搬讀取命令以及接著進行程式化/寫入命令的流程,以寫入該資料單元至快閃記憶體102。此外,應注意的是,上述儲存頁指的是一邏輯儲存頁,而並非是一實體儲存頁,而在一個儲存頁中的多個資料單元的安排或位置指的是邏輯上的儲存安排/位置,並非是實體的儲存位
置。此外,快閃記憶體控制器100能夠支援一隨機寫入功能,以隨機地程式化/寫入在多個不同實體儲存頁中的多個連續的資料單元,或是隨機地程式化/寫入在同一個邏輯儲存頁的多個不同實體位置的多個連續的資料單元。
第2圖是第1圖之實施例之快閃記憶體控制器100的操作流程示意圖。倘若可達到相同的結果,並不需要一定照第2圖所示之流程中的步驟順序來進行,且第2圖所示之步驟不一定要連續進行,亦即其他步驟亦可插入其中;本發明的方法的流程步驟詳述如下:步驟205:開始;步驟210:從主機裝置101接收一資料單元;步驟215:判斷所接收之資料單元是否是用來作為一個儲存頁資料的一第一部分資料;如果所接收之該資料單元係作為該第一部分資料,則流程進行步驟220A,反之,流程進行步驟220B;步驟220A:處理電路115發出該寫入/程式化命令80h至快閃記憶體102,以寫入一個完整的儲存頁資料(包括該資料單元以及其他接著的虛擬資料);步驟220B:處理電路115發出該回搬讀取命令至快閃記憶體102;步驟225A:快閃記憶體102接收並緩衝該完整的儲存頁資料於緩衝器102B以及接著寫入該完整的儲存頁資料至儲存單元陣列102A的一個儲存頁;步驟225B:當從控制器100接收到該回搬讀取命令時,快閃記憶體102載入前一個邏輯儲存頁之完整的儲存頁資料至緩衝器102B;步驟230B:處理電路115發出寫入/程式化命令80h至快閃記憶體102,以寫入一資料單元以更新儲存在緩衝器102B中之完整的儲存頁資料的一特定的部分資料;步驟235B:當接收到寫入/程式化命令80h時,快閃記憶體102被安
排通過使用跟隨在寫入/程式化命令80h之後的該資料單元,來更新或取代儲存在緩衝器102B中之完整的儲存頁資料之該特定的部分資料,以進行資料更新;步驟240B:快閃記憶體102被安排寫入或程式化已經被更新後之該完整的儲存頁資料至儲存單元陣列102A之一相對應的儲存頁;以及步驟245:結束。
第3圖是第1圖之實施例之快閃記憶體控制器100依序地接收多個資料單元及發出多個不同命令以寫入該些資料單元至快閃記憶體102以對多個不同資料單元進行資料寫入之範例時序示意圖。例如,快閃記憶體102是雙面式的快閃記憶體。一個儲存頁資料具有32KB的資料量,由八個資料單元所形成,其中每個資料單元具有4KB的資料量。主機裝置101被安排每次寫入/傳輸4KB的資料至快閃記憶體控制器100。另外,在其他實施例,主機裝置101也可以被安排每次寫入/傳輸小於4KB資料之不同的資料量至快閃記憶體控制器100,而快閃記憶體控制器100被安排每次當集滿4KB資料時啟動以下的運作。
對於第一次資料程式化/寫入,當快閃記憶體控制器100從主機裝置101接收到第一資料單元(亦即第一個4KB資料)以及一特定的邏輯位址時,處理電路115被安排將該特定的邏輯位址映射為一特定實體位址,並發出/發送帶有該特定實體位址之程式化/寫入命令80h至快閃記憶體102以寫入32KB大小的一個儲存頁資料至快閃記憶體102,該儲存頁資料由該第一個4KB資料以及接著的28KB的虛擬資料所形成。32KB資料的傳輸時間係跟隨在該程式化/寫入命令80h的傳輸時間之後,而儲存頁寫入時間TPROG則跟隨在32KB資料的傳輸時間。快閃記憶體102被安排將該32KB資料緩衝於緩衝器102B中並接著於儲存頁寫入時間TPROG時寫入該32KB資料至儲存單元陣列102A的一個儲存頁。該32KB資料的傳輸時間較長於儲存頁寫入時間TPROG。在本實施例,處理電路115
會被安排基於第N次接收到特定邏輯位址來判斷一相對應的資料單元為一個儲存頁資料的第N個資料部分。例如,當偵測到一第一資料單元對應於該特定的邏輯位址並且該特定的邏輯位址是第一次被控制器100所接收時,該第一資料單元會被處理電路115判斷為一個儲存頁資料的第一個資料部分。
對於第二次資料程式化/寫入,當快閃記憶體控制器100從主機裝置101接收到第二資料單元(亦即第二個4KB資料)與該特定的邏輯位址時,處理電路115可以得知或偵測出是第二次接收到該特定的邏輯位址,而第二資料單元應被視為是一個儲存頁資料的第二個資料部分。處理電路115被安排發出或發送該回搬讀取命令至快閃記憶體102以讀取或載入該儲存頁資料至緩衝器102B,其中所讀取之該儲存頁資料係先前被程式化/被寫入至儲存單元陣列102A之一儲存頁的資料,以及接著發出/發送該程式化/寫入命令80h(帶有特定實體位址)至快閃記憶體102以寫入該第二個4KB資料以更新或取代緩衝於緩衝器102B中之該儲存頁資料之一第二部分資料,其中被緩衝之該儲存頁資料之該第一部分資料所指的是第一個4KB資料。也就是說,在這個情況中,第二個4KB資料被用來取代該第二部分資料(亦即虛擬資料),而緩衝於緩衝器102B中之被更新後的該儲存頁資料係具有第一個4KB資料、第二個4KB資料以及接著的24KB的虛擬資料。從儲存單元陣列102A至緩衝器102B之讀取轉移時間TR係跟隨在該回搬讀取命令的傳輸時間READ之後,而程式化/寫入命令80h的傳輸時間係跟隨於讀取轉移時間TR之後,第二個4KB資料的傳輸時間係跟隨於程式化/寫入命令80h的傳輸時間之後,而儲存頁寫入時間TPROG則跟隨於第二個4KB資料的傳輸時間之後。快閃記憶體102被安排於儲存頁寫入時間TPROG時程式化或寫入更新後之該儲存頁資料至儲存單元陣列102A之一儲存頁。
同樣地,對於第三次資料寫入,當快閃記憶體控制器100從主機裝置101接收到第三資料單元(亦即第三個4KB資料)與該特定的邏輯位址時,處
理電路115可以得知或偵測出是第三次接收到該特定的邏輯位址,而第三資料單元應被視為是一個儲存頁資料的第三個資料部分。處理電路115被安排發出或發送該回搬讀取命令至快閃記憶體102以讀取或載入該儲存頁資料至緩衝器102B,其中所讀取之該儲存頁資料係先前被程式化/被寫入至儲存單元陣列102A之一儲存頁的資料,以及接著發出/發送該程式化/寫入命令80h(帶有特定實體位址)至快閃記憶體102以寫入該第三個4KB資料以更新或取代緩衝於緩衝器102B中之該儲存頁資料之一第三部分資料,其中被緩衝之該儲存頁資料之該第一、第二部分資料所指的是第一個4KB資料與第二個4KB資料。也就是說,在這個情況中,第三個4KB資料被用來取代該第三部分資料(亦即4KB虛擬資料),而緩衝於緩衝器102B中之被更新後的該儲存頁資料係具有第一個4KB資料、第二個4KB資料、第三個4KB資料以及接著的20KB的虛擬資料。同樣地,從儲存單元陣列102A至緩衝器102B之讀取轉移時間TR係跟隨在該回搬讀取命令的傳輸時間READ之後,而程式化/寫入命令80h的傳輸時間係跟隨於讀取轉移時間TR之後,第三個4KB資料的傳輸時間係跟隨於程式化/寫入命令80h的傳輸時間之後,而儲存頁寫入時間TPROG則跟隨於第三個4KB資料的傳輸時間之後。快閃記憶體102被安排於儲存頁寫入時間TPROG時程式化或寫入更新後之該儲存頁資料至儲存單元陣列102A之一儲存頁。
同樣地,對於第三次資料寫入,當快閃記憶體控制器100從主機裝置101接收到第三資料單元(亦即第三個4KB資料)與該特定的邏輯位址時,處理電路115可以得知或偵測出是第三次接收到該特定的邏輯位址,而第三資料單元應被視為是一個儲存頁資料的第三個資料部分。處理電路115被安排發出或發送該回搬讀取命令至快閃記憶體102以讀取或載入該儲存頁資料至緩衝器102B,其中所讀取之該儲存頁資料係先前被程式化/被寫入至儲存單元陣列102A之一儲存頁的資料,以及接著發出/發送該程式化/寫入命令80h(帶有特
定實體位址)至快閃記憶體102以寫入該第三個4KB資料以更新或取代緩衝於緩衝器102B中之該儲存頁資料之一第三部分資料,其中被緩衝之該儲存頁資料之該第一、第二部分資料所指的是第一個4KB資料與第二個4KB資料。也就是說,在這個情況中,第三個4KB資料被用來取代該第三部分資料(亦即4KB虛擬資料),而緩衝於緩衝器102B中之被更新後的該儲存頁資料係具有第一個4KB資料、第二個4KB資料、第三個4KB資料以及接著的20KB的虛擬資料。同樣地,從儲存單元陣列102A至緩衝器102B之讀取轉移時間TR係跟隨在該回搬讀取命令的傳輸時間READ之後,而程式化/寫入命令80h的傳輸時間係跟隨於讀取轉移時間TR之後,第三個4KB資料的傳輸時間係跟隨於程式化/寫入命令80h的傳輸時間之後,而儲存頁寫入時間TPROG則跟隨於第三個4KB資料的傳輸時間之後。快閃記憶體102被安排於儲存頁寫入時間TPROG時程式化或寫入更新後之該儲存頁資料至儲存單元陣列102A之一儲存頁。
同樣地,對於第四個4KB資料、第五個4KB資料、第六個4KB資料、第七個4KB資料以及第八個4KB資料的資料程式化/寫入的流程均類似於上述第二個4KB資料或第三個4KB資料的資料程式化/寫入的流程。從儲存單元陣列102A至緩衝器102B之讀取轉移時間TR係跟隨於該回搬讀取命令的傳輸時間READ之後,而程式化/寫入命令80h的傳輸時間係跟隨於讀取轉移時間TR之後,一個4KB資料的傳輸時間係跟隨於程式化/寫入命令80h的傳輸時間之後,而儲存頁寫入時間TPROG則跟隨於該4KB資料的傳輸時間之後。快閃記憶體102被安排於儲存頁寫入時間TPROG時程式化或寫入更新後之該儲存頁資料至儲存單元陣列102A之一儲存頁。詳細過程可見於第3圖。
如上所述,一個傳統的快閃記憶體控制器即使從一主機裝置所接收到的資料量大小並沒有超過一個儲存頁資料大小的資料量,其仍然需要傳送並程式化/寫入一個儲存頁資料大小的資料量(例如32KB)至一快閃記憶體。傳
統機制的效能因此受限。相較於傳統的機制,本發明實施例之回搬讀取命令的傳輸時間READ、讀取轉移時間TR以及一個4KB資料的傳輸時間之總共花費的時間係較小於一個儲存頁資料例如32KB資料的傳輸時間。如此,快閃記憶體控制器100能夠減少資料程式化/寫入的總等候時間,大幅提升IOPS效能。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:快閃記憶體控制器
101:主機裝置
102:快閃記憶體
102A:儲存單元陣列
102B:緩衝器
105、110:輸入/出介面
115:處理電路
Claims (12)
- 一種快閃記憶體控制器,包含:一第一輸入/出介面,用來連接於一主機之一匯流排以接收來自於該主機之一資料單元,該主機係外部耦接於該快閃記憶體控制器;一第二輸入/出介面,用來連接於一快閃記憶體,該快閃記憶體係外部耦接於該快閃記憶體控制器;以及一處理電路,耦接於該第一輸入/出介面與該第二輸入/出介面之間,用來控制該快閃記憶體以從該快閃記憶體載入一完整的儲存頁資料至該快閃記憶體之一緩衝器,以及用來發出一寫入命令以通過該第二輸入/出介面以寫入該資料單元至該快閃記憶體之該緩衝器以更新或取代儲存於該快閃記憶體之該緩衝器中之該完整的儲存頁資料之一部分資料,其中被該資料單元所更新後之該完整的儲存頁資料接著從該快閃記憶體之該緩衝器而被寫入至該快閃記憶體之一儲存頁;從該快閃記憶體控制器所傳送並寫入至該快閃記憶體的該資料單元之資料量係小於該完整的儲存頁資料之資料量。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該處理電路係用來發出一回搬讀取命令(copy back read command)至該快閃記憶體,以控制該快閃記憶體從該快閃記憶體中載入並未被更新之該完整的儲存頁資料至該緩衝器,以及用來接著發出該寫入命令以寫入該資料單元來取代/更新該完整的儲存頁資料之該部分資料以及寫入已經被更新後之該完整的儲存頁資料至該快閃記憶體。
- 如申請專利範圍第2項所述之快閃記憶體控制器,其中該處理電路在 發出該回搬讀取命令至該快閃記憶體之前,係用來判斷該資料單元是否是用來形成該完整的儲存頁資料之一第一部分資料。
- 如申請專利範圍第3項所述之快閃記憶體控制器,其中該處理電路當判斷出該資料單元不是用來形成該完整的儲存頁資料之該第一部分資料,係用來發出該回搬讀取命令至該快閃記憶體。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該資料單元係用來形成該完整的儲存頁資料之一特定的部分資料。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該資料單元之一大小係小於該完整的儲存頁資料之一大小。
- 一種外部連接至一快閃記憶體之一快閃記憶體控制器的方法,包含:通過一主機之一匯流排來接收從該主機來之一資料單元,該主機係外部耦接於該快閃記憶體控制器;控制該快閃記憶體以從該快閃記憶體載入一完整的儲存頁資料至該快閃記憶體之一緩衝器;以及發出一寫入命令以寫入該資料單元至該快閃記憶體之該緩衝器以更新或取代儲存於該快閃記憶體之該緩衝器中之該完整的儲存頁資料之一部分資料,以控制該快閃記憶體從該快閃記憶體之該緩衝器寫入被該資料單元所更新後之該完整的儲存頁資料至該快閃記憶體之一儲存頁;其中從該快閃記憶體控制器所傳送並寫入至該快閃記憶體的該資料單元之資料量係小於該完整的儲存頁資料之資料量。
- 如申請專利範圍第7項所述之方法,其中該控制步驟包含:發出一回搬讀取命令至該快閃記憶體,以控制該快閃記憶體從該快閃記憶體中載入並未被更新之該完整的儲存頁資料至該緩衝器;以及該寫入步驟包含:發出該寫入命令至該快閃記憶體,以寫入該資料單元來取代/更新該完整的儲存頁資料之該部分資料以及寫入已經被更新後之該完整的儲存頁資料至該快閃記憶體。
- 如申請專利範圍第8項所述之方法,另包含:在發出該回搬讀取命令至該快閃記憶體之前,判斷該資料單元是否是用來形成該完整的儲存頁資料之一第一部分資料。
- 如申請專利範圍第9項所述之方法,其中當判斷出該資料單元不是用來形成該完整的儲存頁資料之該第一部分資料時,該回搬讀取命令被發出至該快閃記憶體。
- 如申請專利範圍第7項所述之方法,其中該資料單元係用來形成該完整的儲存頁資料之一特定的部分資料。
- 如申請專利範圍第7項所述之方法,其中該資料單元之一大小係小於該完整的儲存頁資料之一大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/120,285 | 2018-09-02 | ||
US16/120,285 US20200073595A1 (en) | 2018-09-02 | 2018-09-02 | Flash memory controller capable of improving IOPS performance and corresponding method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202011204A TW202011204A (zh) | 2020-03-16 |
TWI707233B true TWI707233B (zh) | 2020-10-11 |
Family
ID=69641106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108107602A TWI707233B (zh) | 2018-09-02 | 2019-03-07 | 快閃記憶體控制器及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200073595A1 (zh) |
CN (1) | CN110874190A (zh) |
TW (1) | TWI707233B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220021796A (ko) * | 2020-08-14 | 2022-02-22 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
CN112965670B (zh) * | 2021-04-22 | 2023-08-01 | 群联电子股份有限公司 | 主机存储器缓冲区管理方法、存储装置与控制电路单元 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009086365A1 (en) * | 2007-12-27 | 2009-07-09 | Pliant Technology, Inc. | Multiprocessor storage controller |
TW201227295A (en) * | 2010-12-28 | 2012-07-01 | Silicon Motion Inc | Flash memory device and data writing method thereof |
TW201411624A (zh) * | 2012-09-03 | 2014-03-16 | Silicon Motion Inc | 快閃記憶體控制器和快閃記憶體控制方法 |
TW201710898A (zh) * | 2015-09-11 | 2017-03-16 | 慧榮科技股份有限公司 | 內部資料搬移方法以及使用該方法的裝置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100349141C (zh) * | 2003-06-17 | 2007-11-14 | 创惟科技股份有限公司 | 动态调整非挥发性存储器的冗余区的方法及其相关装置 |
CN102023811B (zh) * | 2009-09-10 | 2012-11-28 | 群联电子股份有限公司 | 对闪存下达程序化指令的方法和系统 |
JP2013061799A (ja) * | 2011-09-13 | 2013-04-04 | Toshiba Corp | 記憶装置、記憶装置の制御方法およびコントローラ |
US20130103889A1 (en) * | 2011-10-25 | 2013-04-25 | Ocz Technology Group Inc. | Page-buffer management of non-volatile memory-based mass storage devices |
JP6018531B2 (ja) * | 2013-03-29 | 2016-11-02 | 東芝プラットフォームソリューション株式会社 | 半導体メモリ装置 |
-
2018
- 2018-09-02 US US16/120,285 patent/US20200073595A1/en not_active Abandoned
-
2019
- 2019-03-07 TW TW108107602A patent/TWI707233B/zh active
- 2019-03-19 CN CN201910206865.6A patent/CN110874190A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009086365A1 (en) * | 2007-12-27 | 2009-07-09 | Pliant Technology, Inc. | Multiprocessor storage controller |
TW201227295A (en) * | 2010-12-28 | 2012-07-01 | Silicon Motion Inc | Flash memory device and data writing method thereof |
TW201411624A (zh) * | 2012-09-03 | 2014-03-16 | Silicon Motion Inc | 快閃記憶體控制器和快閃記憶體控制方法 |
TW201710898A (zh) * | 2015-09-11 | 2017-03-16 | 慧榮科技股份有限公司 | 內部資料搬移方法以及使用該方法的裝置 |
Also Published As
Publication number | Publication date |
---|---|
CN110874190A (zh) | 2020-03-10 |
TW202011204A (zh) | 2020-03-16 |
US20200073595A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI428917B (zh) | 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法 | |
US8341311B1 (en) | System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface | |
CN109947362B (zh) | 管理闪存存储器读取操作 | |
TWI616884B (zh) | 自記憶體讀取資料同時將寫入資料傳送至該記憶體之系統及方法 | |
US7877566B2 (en) | Simultaneous pipelined read with multiple level cache for improved system performance using flash technology | |
US20090172264A1 (en) | System and method of integrating data accessing commands | |
US10733122B2 (en) | System and method for direct memory access in a flash storage | |
JP5922740B2 (ja) | メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
KR102238650B1 (ko) | 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법 | |
WO2018063617A1 (en) | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache | |
TWI707233B (zh) | 快閃記憶體控制器及方法 | |
JP2011018222A (ja) | インタリーブ制御装置、インタリーブ制御方法及びメモリシステム | |
US20180165032A1 (en) | Read write performance for nand flash for archival application | |
US11307798B2 (en) | Storage device and method for performing macro command | |
CN107797756B (zh) | 固态硬盘系统的优先写入方法以及使用该方法的装置 | |
US11500581B2 (en) | Efficient TLP fragmentations in extended LBA environment | |
CN112256203B (zh) | Flash存储器的写入方法、装置、设备、介质及系统 | |
KR101332774B1 (ko) | 비휘발성 메모리 시스템 및 이의 데이터 전송 제어 방법 | |
CN109935252B (zh) | 存储器装置及其操作方法 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
TWI740092B (zh) | 儲存裝置及巨集指令的執行方法 | |
US12067288B2 (en) | Storage devices including a controller for handling command sequences and methods of operating the same | |
US20240143228A1 (en) | Fast execution of barrier command | |
US10628322B2 (en) | Memory system and operating method thereof |