TW201812563A - 固態硬碟系統的原子寫入方法以及使用該方法的裝置 - Google Patents
固態硬碟系統的原子寫入方法以及使用該方法的裝置 Download PDFInfo
- Publication number
- TW201812563A TW201812563A TW105134399A TW105134399A TW201812563A TW 201812563 A TW201812563 A TW 201812563A TW 105134399 A TW105134399 A TW 105134399A TW 105134399 A TW105134399 A TW 105134399A TW 201812563 A TW201812563 A TW 201812563A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- area
- buffer
- hard disk
- atomic
- Prior art date
Links
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
-
- 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
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明的實施例提出一種固態硬碟系統的原子寫入方法,由處理單元執行,包含以下步驟。接收原子寫入命令,指示寫入少於一個頁面長度的資料至儲存單元。判斷上述資料將觸發緩存器中之跨頁面儲存時,填充虛擬資料至緩存器中之第一區域的所有可用子區域,以及儲存上述資料至緩存器中之第二區域。成功儲存上述資料至緩存器中之第二區域後,更新安全指標用以指向上述資料所儲存的第二區域的最後一個子區域的結束位址。
Description
本發明關連於一種快閃記憶體裝置,特別是一種固態硬碟系統的原子寫入方法以及使用該方法的裝置。
快閃記憶體裝置通常分為NOR快閃裝置與NAND快閃裝置。NOR快閃裝置為隨機存取裝置,而可於位址腳位上提供任何的位址,用以存取NOR快閃裝置的主裝置(host),並及時地由NOR快閃裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃裝置並非隨機存取,而是序列存取。NAND快閃裝置無法像NOR快閃裝置一樣,可以存取任何隨機位址,主裝置反而需要寫入序列的位元組(bytes)的值到NAND快閃裝置中,用以定義請求命令(command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(在快閃記憶體中的一個寫入作業的最小資料塊)或一個區塊(在快閃記憶體中的一個抹除作業的最小資料塊)。實際上,NAND快閃裝置通常從記憶體單元(memory cells)上讀取或寫入完整的數頁資料。當一整頁的資料從陣列讀取到裝置中的緩存器(buffer)後,藉由使用提取訊號(strobe signal)順序地敲出(clock out)內容,讓主單元可逐位元組或字元組(words)存取資 料。
原子寫入是應用在儲存系統的重要規格,例如,資料庫系統。資料庫系統在資料完整(data integrity)上需要滿足原子性(atomicity)、一致性(consistency)、隔離性(isolation)及持續性(durability)的要求,簡稱為ACID。即使是遭遇到掉電(power loss)的非預期事件,資料庫的原子性都要確保每次更新是全部成功或者全部失敗。為滿足資料庫系統,固態硬碟系統的資料寫入也需要符合原子性的要求。因此,本發明提出一種固態硬碟系統的原子寫入方法以及使用該方法的裝置,用以滿足資料庫的原子性。
本發明的實施例提出一種固態硬碟系統的原子寫入方法,由處理單元執行,包含以下步驟。接收原子寫入命令,指示寫入少於一個頁面長度的資料至儲存單元。判斷上述資料將觸發緩存器中之跨頁面儲存時,填充虛擬資料至緩存器中之第一區域的所有可用子區域,以及儲存上述資料至緩存器中之第二區域。成功儲存上述資料至緩存器中之第二區域後,更新安全指標用以指向上述資料所儲存的第二區域的最後一個子區域的結束位址。
本發明的實施例提出一種固態硬碟系統的原子寫入裝置,包含緩存控制器及處理單元。緩存控制器透過存取介面耦接至儲存單元。處理單元從主裝置接收原子寫入命令,指示寫入少於一個頁面長度的資料至儲存單元。處理單元判斷上述資料將觸發緩存器中之跨頁面儲存時,驅動緩存控制器填充 虛擬資料至緩存器中之第一區域的所有可用子區域,驅動緩存控制器儲存上述資料至緩存器中之第二區域。成功儲存上述資料至緩存器中之第二區域後,緩存控制器更新安全指標,用以指向上述資料所儲存的第二區域的最後一個子區域的結束位址。
10‧‧‧系統
110‧‧‧處理單元
120‧‧‧資料分配器
130‧‧‧緩存控制器
140‧‧‧掉電處理電路
150‧‧‧存取介面
160‧‧‧主裝置
170‧‧‧存取介面
CTRL‧‧‧控制訊號
CMD1、...、CMD5‧‧‧命令
DAT1、DAT2‧‧‧資料
170_0~170_j‧‧‧存取子介面
180‧‧‧儲存單元
180_0_0、...、180_j_i‧‧‧儲存子單元
320_0_0、...、320_0_i‧‧‧晶片致能控制訊號
400‧‧‧緩存器
400_0_0、...、400_0_i‧‧‧緩存器中的區域
S510~S589‧‧‧方法步驟
610、640、660‧‧‧原子寫入的資料
620、650a、650b‧‧‧非原子寫入的資料
630‧‧‧虛擬資料
Ps‧‧‧安全指標
第1圖係依據本發明實施例之快閃記憶體的系統架構示意圖。
第2圖係依據本發明實施例之存取介面與儲存單元的方塊圖。
第3圖係依據本發明實施例之一個存取子介面與多個儲存子單元的連接示意圖。
第4圖係依據本發明實施例的緩存器示意圖。
第5圖係依據本發明實施例的固態硬碟系統的原子寫入方法流程圖。
第6圖係依據本發明實施例的緩存器中的暫存資料示意圖。
第7A至7D圖係依據本發明實施例的掉電處理示意圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包 括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係依據本發明實施例之快閃記憶體的系統架構示意圖。快閃記憶體的系統架構10中包含處理單元110,用以寫入資料到儲存單元180中的指定位址,以及從儲存單元180中的指定位址讀取資料。詳細來說,處理單元110透過存取介面170寫入資料到儲存單元180中的指定位址,以及從儲存單元180中的指定位址讀取資料。處理單元110可使用多種方式實施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器或其他具運算能力的處理器),並且於載入及執行特定指令或軟體時實施如下所述的功能。處理單元110可包含運算邏輯單元(ALU,Arithmetic and Logic Unit)以及位移器(bit shifter)。運算邏輯單元負責執行布林運算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等),而位移器負責位移運算及位元旋轉。系統架構10使用數個電子訊號來協調處理單元110與儲存單元180間的資料與命令傳遞,包含資料線(data line)、時脈訊號(clock signal)與控制訊號(control signal)。資料線可用以傳遞命令、位址、讀出及寫入的資料;控制訊號線可用以傳遞晶片致能(chip enable,CE)、位址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、寫入致能(write enable,WE)等控制訊號。存取介面170可採用雙倍資料率(double data rate,DDR)通訊協定與儲存單元180溝通,例如,開放NAND快閃(open NAND flash interface,ONFI)、雙倍資料率開關(DDR toggle)或其他介面。處理單元110另可使用存取介面150透過指定通訊協定與主裝置160進行溝通,例如,通用序列匯流排(universal serial bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)或其他介面。
儲存單元180可包含多個儲存子單元,每一個儲存子單元實施於一個晶粒(die)上,各自使用關聯的存取子介面與處理單元110進行溝通。第2圖係依據本發明實施例之存取介面與儲存單元的方塊圖。快閃記憶體10可包含j+1個存取子介面170_0至170_j,存取子介面又可稱為通道(channel),每一個存取子介面連接i+1個儲存子單元。換句話說,i+1個儲存子單元共享一個存取子介面。例如,當快閃記憶體10包含4個通道(j=3)且每一個通道連接4個儲存單元(i=3)時,快閃記憶體10一共擁有16個儲存單元180_0_0至180_j_i。處理單元110可驅動存取子介面170_0至170_j中之一者,寫入資料至指定的儲存子單元。每個儲存子單元擁有獨立的晶片致能(CE,Chip Enable)控制訊 號。換句話說,當欲對指定的儲存子單元進行資料寫入時,需要驅動關聯的存取子介面致能此儲存子單元的晶片致能控制訊號。第3圖係依據本發明實施例之一個存取子介面與多個儲存子單元的連接示意圖。處理單元110可透過存取子介面170_0使用獨立的晶片致能控制訊號320_0_0至320_0_i來從連接的儲存子單元180_0_0至180_0_i中選擇出其中一者,接著,透過共享的資料線310_0寫入資料至選擇出的儲存子單元的指定位置。
處理單元110可使用二個模式中之一者驅動存取介面170寫入資料,一為直接寫入(direct write),另一為緩存寫入(buffered write)。當主裝置160發出的寫入命令(write command,CMD1)指示寫入超過一個頁面長度的資料時,處理單元110進入直接寫入模式。假設一個頁面的長度為16K位元組(bytes):當處理單元110判斷主裝置160發出的寫入命令CMD1指示寫入超過16K位元組的資料時,使用直接寫入模式來寫入資料。於此須注意的是,如果寫入資料的長度不為頁面長度的倍數時(例如nxp的資料,其中n代表頁面數量,p代表一個頁面的資料長度),不足的部分以虛擬資料(dummy data)填充。詳細來說,於直接寫入模式中,處理單元110發出控制訊號CTRL指示資料分配器(data dispatcher)120將資料DAT1直接傳送至存取介面170,並且發出命令CMD3驅動存取介面170把資料DAT1寫入至儲存單元180中的指定位址。當主裝置160發出的寫入命令CMD1指示寫入的資料長度少於一個頁面時,處理單元110進入緩存寫入模式。詳細來說,於緩存寫入模式中,處理單元 110發出控制訊號CTRL指示資料分配器120將資料DAT1傳送至緩存控制器130並且發出命令CMD2驅動緩存控制器130儲存資料DAT1至緩存器的指定區域。接著,當緩存器中的資料蒐集到一個頁面的長度後,處理單元110發出命令CMD2驅動緩存控制器130輸出緩存器中指定區域的資料DAT2至存取介面170,接著發出命令CMD3驅動存取介面170把資料DAT2寫入至儲存單元180中的指定位址。資料分配器120可以解多工器(de-multiplexer)實施,用以將存取介面150的資料線依據控制訊號CTRL耦接至緩存控制器130及存取介面170中之一者。第4圖係依據本發明實施例的緩存器示意圖。緩存器的區域配置相符於儲存單元180的設置。例如,緩存器包含多個區域400_0_0至400_0_i,每一個區域關連於第3圖所示的儲存子單元180_0_0至180_0_i。詳細來說,區域400_0_0暫存即將寫入至儲存子單元180_0_0中一個頁面的資料,區域400_0_1暫存即將寫入至儲存子單元180_0_1中一個頁面的資料,依此類推。每個區域可包含四個子區域,用以分別儲存四個單元(units)的資料,每個單元為固定長度,例如4K位元組。於此須注意的是,每個區域包含的子區域數目可依據儲存子單元的設計而調整,本發明並不因此受限。
第5圖係依據本發明實施例的固態硬碟系統的原子寫入方法流程圖。於緩存寫入模式中,處理單元110載入並執行特定軟體程序(software routine)時實施此方法,用以將不足一個頁面的資料搬遷至緩存器400中的特定區域。首先,處理單元110透過存取介面150從主裝置160取得寫入命令 CMD1,包含是否為原子寫入(atomic write)的資訊(步驟S510)。當處理單元110判斷寫入命令CMD1為原子寫入時(步驟S520中”是”的路徑),執行原子寫入程序(步驟S530至S570),否則(步驟S520中”否”的路徑),執行非原子寫入程序(步驟S581至S589)。
非原子寫入程序反覆執行一個迴圈,用以逐區塊寫入緩存器400中的可用空間。於每一回合中,處理單元110指示資料分配器120將資料DAT1傳送至緩存控制器130,以及驅動緩存控制器130從緩存器中的下一個可用子區域儲存一個區塊的資料DAT1(步驟S581),以及,於成功儲存資料後,緩存控制器130更新安全指標用以指向此子區域的結束位址(步驟S583)。於此須注意的是,安全指標可儲存於緩存控制器130中的一個寄存器(register)。安全指標的作用將於後續段落描述。接著,判斷是否蒐集完一個頁面的資料(步驟S585)。於步驟S585,處理單元110可判斷此子區域是否為一個區域的最後一個子區域,如果是,則代表蒐集完一個頁面的資料。當蒐集完一個頁面的資料(步驟S585中”是”的路徑),處理單元110驅動緩存控制器130輸出此頁面的資料DAT2至存取介面170以及驅動存取介面170將此頁面的資料DAT2寫入儲存單元180中的指定位址,例如指定儲存子單元的指定區塊(步驟S587),接著,判斷是否儲存完寫入命令CMD1指示的所有資料(步驟S589)。當尚未蒐集完一個頁面的資料(步驟S585中”否”的路徑),處理單元110判斷是否儲存完寫入命令CMD1指示的所有資料(步驟S589)。當尚未儲存完寫入命令CMD1指示的所有資料時(步驟 S589中”否”的路徑),繼續從緩存器中的下一個可用子區域儲存一個區塊的資料(步驟S581);否則,結束整個處理。
原子寫入程序首先判斷寫入命令CMD1是否觸發跨頁面儲存(步驟S530)。於步驟S530,處理單元可判斷緩存器中目前區域中的可用子區域數目是否小於寫入命令CMD1指示的資料單元數目。若是,則代表若不做任何處理,寫入命令CMD1將使資料拆開儲存至緩存器中的二個區域。
當判斷將觸發跨頁面儲存時(步驟S530中”是”的路徑),處理單元110驅動緩存控制器130填充虛擬資料(dummy data)至目前區域的所有可用子區域(步驟S541),驅動緩存控制器130輸出此頁面的資料DAT2至存取介面170以及驅動存取介面170將此頁面的資料DAT2寫入儲存單元180中的指定位址,例如指定儲存子單元的指定區塊(步驟S543),以及指示資料分配器120將資料DAT1傳送至緩存控制器130,以及驅動緩存控制器130從緩存器中的下一個區域的第一個子區域開始儲存資料DAT1(步驟S545),以及,於成功儲存資料後,緩存控制器130更新安全指標用以指向資料DAT1所儲存的最後一個子區域的結束位址(步驟S570)。
當判斷不觸發跨頁面儲存時(步驟S530中”否”的路徑),指示資料分配器120將資料DAT1傳送至緩存控制器130,以及驅動緩存控制器130從緩存器中的目前區域的下一個可用子區域開始儲存資料DAT1(步驟S550),以及,判斷是否蒐集完一個頁面的資料(步驟S561)。步驟S561的技術內容可參考步驟S585的說明,為求說明書簡潔,不再贅述。當蒐集完一個頁面 的資料(步驟S561中”是”的路徑),處理單元110驅動緩存控制器130輸出此頁面的資料DAT2至存取介面170以及驅動存取介面170將此頁面的資料DAT2寫入儲存單元180中的指定位址(步驟S563)。當尚未蒐集完一個頁面的資料時(步驟S561中”否”的路徑),緩存控制器130於成功儲存資料後更新安全指標用以指向資料DAT1所儲存的最後一個子區域的結束位址(步驟S570)。
於步驟S543、S563及S587中更包含當此頁面的資料DAT2寫入儲存單元180中的指定位址後,清除安全指標。
以下舉出實例來說明如上所述的方法。假設主裝置160發出多個命令CMD1給處理單元110,希望依序原子寫入2個單元的資料、非原子寫入1個單元的資料、原子寫入2個單元的資料、非原子寫入3個單元的資料以及原子寫入2個單元的資料:第6圖係依據本發明實施例的緩存器中的暫存資料示意圖。為處理第一個命令,處理單元110執行步驟S550及S570,用以將2個單元的資料610寫入緩存器中第一個區域中的前二個子區域,並且將安全指標更新為指向第一個區域中的第二個子區域的結束位址。為處理第二個命令,處理單元110執行步驟S581及S583,用以將1個單元的資料620寫入緩存器中第一個區域中的第三個子區域,並且將安全指標更新為指向第一個區域中的第三個子區域的結束位址。為處理第三個命令,處理單元110執行步驟S530時發現此命令將觸發跨頁面儲存,接著,執行步驟S541及S543進行虛擬資料630的填充以及驅動緩存控制器130及存取介面170,用以將第一個區域中的資料610至630寫入儲存子單元180_0_0中的可用區塊,接著,執行步驟S545 及S570用以將2個單元的資料640寫入緩存器中第二個區域中的前二個子區域,並且將安全指標更新為指向第一個區域中的第二個子區域的結束位址。為處理第四個命令,處理單元110先執行步驟S581至S589的迴圈二次,用以將前2個單元的資料650a寫入緩存器中第二個區域中的後二個子區域,以及驅動緩存控制器130及存取介面170,用以將第二個區域中的資料640至640a寫入儲存子單元180_0_1中的可用區塊。之後,處理單元110先執行步驟S581至S589的迴圈一次,用以將餘下1個單元的資料650b寫入緩存器中第三個區域中的第一個子區域,並且將安全指標更新為指向第三個區域中的第一個子區域的結束位址。為處理第五個命令,處理單元110執行步驟S581及S583,用以將2個單元的資料660寫入緩存器中第三個區域中的第二至三個子區域,並且將安全指標更新為指向第三個區域中的第三個子區域的結束位址。
然而,快閃記憶體於運作時可能發生意外掉電,系統架構10中另包含掉電處理電路(power-loss handling circuit)140,用以持續偵測是否發生掉電的情況。一旦偵測到掉電,掉電處理電路140使用剩餘電量來發出命令CMD4驅動緩存控制器130,用以將儲存於目前區域中的開始位址至安全指標指向的位址間的資料輸出至存取介面170,並且,發出命令CMD5驅動存取介面170,用以寫入目前區域中的資料至相應儲存子單元中的可用區塊。
以下舉出數個情境來說明如上所述的掉電處理。搭配參考第6圖所示的命令處理說明。第7A圖係依據本發明實 施例的掉電處理示意圖。於第一個情境中,於處理第二個命令期間,掉電處理電路140偵測到發生掉電的情況,發出命令CMD4驅動緩存控制器130,用以將第一個區域中的開始位址至安全指標Ps指向的位址間的資料610輸出至存取介面170,並且,發出命令CMD5驅動存取介面170,用以寫入資料610至儲存子單元180_0_0中的可用區塊,使得第一個命令指示的原子寫入可成功地執行。第7B圖係依據本發明實施例的掉電處理示意圖。於第二個情境中,於處理第三個命令指示的第二個單元的資料的原子寫入期間,掉電處理電路140偵測到發生掉電的情況,發出命令CMD4驅動緩存控制器130,但由於安全指標Ps還沒有被更新,因此第二個區域中的所有資料都不會輸出至存取介面170,使得第三個命令指示的原子寫入全部失敗。第7C圖係依據本發明實施例的掉電處理示意圖。於第三個情境中,於處理第四個命令指示的第二個單元的資料的非原子寫入期間,掉電處理電路140偵測到發生掉電的情況,發出命令CMD4驅動緩存控制器130,用以將第二個區域中的開始位址至安全指標Ps指向的位址間的資料640及650a_1輸出至存取介面170,並且,發出命令CMD5驅動存取介面170,用以寫入資料640及650a_1至儲存子單元180_0_1中的可用區塊,使得第三個命令指示的原子寫入可成功地執行。第7D圖係依據本發明實施例的掉電處理示意圖。於第四個情境中,於處理第五個命令期間,掉電處理電路140偵測到發生掉電的情況,發出命令CMD4驅動緩存控制器130,用以將第三個區域中的開始位址至安全指標Ps指向的位址間的資料650b輸出至存取介面170,並且, 發出命令CMD5驅動存取介面170,用以寫入資料650b至儲存子單元180_0_2中的可用區塊,使得第五個命令指示的原子寫入完全失敗。
雖然第1至3圖中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然第5圖的處理步驟採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
Claims (16)
- 一種固態硬碟系統的原子寫入方法,由一處理單元執行,包含:接收一原子寫入命令,指示寫入少於一頁面長度的一第一資料至一儲存單元;判斷上述資料將觸發一緩存器中之跨頁面儲存時,填充一虛擬資料至上述緩存器中之一第一區域的所有可用子區域;判斷上述資料將觸發一緩存器中之跨頁面儲存時,儲存上述第一資料至上述緩存器中之一第二區域;以及成功儲存上述第一資料至上述緩存器中之上述第二區域後,更新一安全指標用以指向上述第一資料所儲存的上述第二區域的最後一個子區域的結束位址。
- 如申請專利範圍第1項所述的固態硬碟系統的原子寫入方法,其中,上述第一區域的長度組態為上述頁面長度,以及上述第二區域的長度組態為上述頁面長度。
- 如申請專利範圍第1項所述的固態硬碟系統的原子寫入方法,其中,上述緩存器中之跨頁面儲存係指若不做任何處理,上述第一資料將拆開儲存至上述第一區域及上述第二區域。
- 如申請專利範圍第1項所述的固態硬碟系統的原子寫入方法,更包含: 於填充上述虛擬資料至上述緩存器中之上述第一區域的所有可用子區域後,寫入上述第一區域的資料至上述儲存單元。
- 如申請專利範圍第1項所述的固態硬碟系統的原子寫入方法,更包含:於成功儲存上述資料至上述緩存器中之上述第二區域前發生掉電,不寫入上述第一資料至上述儲存單元。
- 如申請專利範圍第1項所述的固態硬碟系統的原子寫入方法,更包含:於成功儲存上述第一資料至上述緩存器中之上述第二區域後,接收一非原子寫入命令,指示寫入少於上述頁面長度的一第二資料至上述儲存單元;儲存上述第二資料至上述第二區域中接續於上述第一資料之後的一子區域。
- 如申請專利範圍第6項所述的固態硬碟系統的原子寫入方法,更包含:於成功儲存上述第二資料至上述第二區域前發生掉電,將上述第二區域中的開始位址至上述安全指標指向的位址間的資料寫入上述儲存單元。
- 如申請專利範圍第7項所述的固態硬碟系統的原子寫入方法,其中,上述第二區域中的開始位址至上述安全指標指向的位址間的資料包含上述第一資料。
- 一種固態硬碟系統的原子寫入裝置,包含:一緩存控制器,透過一存取介面耦接至一儲存單元;以及 一處理單元,從一主裝置接收一原子寫入命令,指示寫入少於一頁面長度的一第一資料至上述儲存單元;判斷上述資料將觸發上述緩存器中之跨頁面儲存時,驅動上述緩存控制器填充一虛擬資料至上述緩存器中之一第一區域的所有可用子區域;判斷上述資料將觸發一緩存器中之跨頁面儲存時,驅動上述緩存控制器儲存上述第一資料至上述緩存器中之一第二區域;其中,成功儲存上述第一資料至上述緩存器中之上述第二區域後,上述緩存控制器更新一安全指標用以指向上述第一資料所儲存的上述第二區域的最後一個子區域的結束位址。
- 如申請專利範圍第9項所述的固態硬碟系統的原子寫入裝置,其中,上述緩存控制器包含上述緩存器,上述第一區域的長度組態為上述頁面長度,以及上述第二區域的長度組態為上述頁面長度。
- 如申請專利範圍第9項所述的固態硬碟系統的原子寫入裝置,其中,上述緩存器中之跨頁面儲存係指若不做任何處理,上述第一資料將拆開儲存至上述第一區域及上述第二區域。
- 如申請專利範圍第9項所述的固態硬碟系統的原子寫入裝置,其中,於填充上述虛擬資料至上述緩存器中之上述第一區域的所有可用子區域後,上述處理單元驅動上述緩存控制器輸出上述第一區域的資料至上述存取介面,以及驅動上述存取介面寫入上述第一區域的資料至上述儲存單 元。
- 如申請專利範圍第9項所述的固態硬碟系統的原子寫入裝置,其中,於成功儲存上述資料至上述緩存器中之上述第二區域前發生掉電,不寫入上述第一資料至上述儲存單元。
- 如申請專利範圍第9項所述的固態硬碟系統的原子寫入裝置,其中,於成功儲存上述第一資料至上述緩存器中之上述第二區域後,上述處理單元從上述主裝置接收一非原子寫入命令,指示寫入少於上述頁面長度的一第二資料至上述儲存單元;驅動上述緩存控制器儲存上述第二資料至上述第二區域中接續於上述第一資料之後的一子區域。
- 如申請專利範圍第14項所述的固態硬碟系統的原子寫入裝置,更包含:一掉電處理電路,耦接於上述緩存控制器及上述存取介面,於成功儲存上述第二資料至上述第二區域前偵測到發生掉電,驅動上述緩存控制器,用以輸出上述第二區域中的開始位址至上述安全指標指向的位址間的資料至上述存取介面;以及驅動上述存取介面,用以寫入上述第二區域中的開始位址至上述安全指標指向的位址間的資料至上述儲存單元。
- 如申請專利範圍第15項所述的固態硬碟系統的原子寫入裝置,其中,上述第二區域中的開始位址至上述安全指標指向的位址間的資料包含上述第一資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610801521.6A CN107797755B (zh) | 2016-09-05 | 2016-09-05 | 固态硬盘系统的原子写入方法以及使用该方法的装置 |
??201610801521.6 | 2016-09-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI592866B TWI592866B (zh) | 2017-07-21 |
TW201812563A true TW201812563A (zh) | 2018-04-01 |
Family
ID=60048671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105134399A TWI592866B (zh) | 2016-09-05 | 2016-10-25 | 固態硬碟系統的原子寫入方法以及使用該方法的裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10402118B2 (zh) |
CN (1) | CN107797755B (zh) |
TW (1) | TWI592866B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI616807B (zh) * | 2016-11-17 | 2018-03-01 | 英屬維京群島商大心電子(英屬維京群島)股份有限公司 | 資料寫入方法以及儲存控制器 |
KR20220020143A (ko) * | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법 |
KR20220021796A (ko) * | 2020-08-14 | 2022-02-22 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
CN113609150B (zh) * | 2021-10-08 | 2022-03-08 | 阿里云计算有限公司 | 基于硬件的原子写方法、设备及系统 |
US12067240B2 (en) * | 2022-09-30 | 2024-08-20 | Silicon Motion, Inc. | Flash memory scheme capable of automatically generating or removing dummy data portion of full page data by using flash memory device |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US7599261B2 (en) | 2006-01-18 | 2009-10-06 | International Business Machines Corporation | Removable storage media with improved data integrity |
US7716192B2 (en) | 2007-05-08 | 2010-05-11 | Microsoft Corporation | Concurrent, lock-free object copying |
US8751860B2 (en) | 2009-06-03 | 2014-06-10 | Micron Technology, Inc. | Object oriented memory in solid state devices |
JP2010287744A (ja) | 2009-06-11 | 2010-12-24 | Elpida Memory Inc | 固体メモリ、データ処理システム及びデータ処理装置 |
US9098462B1 (en) * | 2010-09-14 | 2015-08-04 | The Boeing Company | Communications via shared memory |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
CN102136005B (zh) * | 2011-03-29 | 2013-07-17 | 北京航空航天大学 | 数据查询方法和装置 |
US8938563B2 (en) * | 2011-12-27 | 2015-01-20 | Kaminario Technologies Ltd. | Modified I/Os among storage system layers |
CN102867046B (zh) * | 2012-09-06 | 2016-08-03 | 记忆科技(深圳)有限公司 | 基于固态硬盘的数据库优化方法及系统 |
US9218279B2 (en) * | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
CN105511802B (zh) * | 2015-11-24 | 2018-06-05 | 北京达沃时代科技股份有限公司 | 写缓存的方法和装置以及磁盘缓存区的同步方法和装置 |
-
2016
- 2016-09-05 CN CN201610801521.6A patent/CN107797755B/zh active Active
- 2016-10-25 TW TW105134399A patent/TWI592866B/zh active
- 2016-11-17 US US15/354,082 patent/US10402118B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10402118B2 (en) | 2019-09-03 |
CN107797755B (zh) | 2021-01-08 |
CN107797755A (zh) | 2018-03-13 |
US20180067691A1 (en) | 2018-03-08 |
TWI592866B (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954370B2 (en) | Command queuing | |
US11151027B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
TWI592866B (zh) | 固態硬碟系統的原子寫入方法以及使用該方法的裝置 | |
US10108372B2 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
EP2973572B1 (en) | System and method of reading data from memory concurrently with sending write data to the memory | |
US9052835B1 (en) | Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted | |
TWI473099B (zh) | 記憶體儲存裝置、記憶體控制器與控制方法 | |
TWI648742B (zh) | 重試讀取方法以及使用該方法的裝置 | |
KR102392844B1 (ko) | 메모리 컨트롤러 및 그것을 포함하는 저장 장치 | |
TWI693518B (zh) | 資料儲存裝置及避免韌體失效之方法 | |
KR20140035772A (ko) | 임베디드 멀티미디어 카드, 상기 임베디드 멀티미디어 카드를 포함하는 임베디드 멀티미디어 카드 시스템 및 상기 임베디드 멀티미디어 카드의 동작 방법 | |
KR102595233B1 (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
US20220100425A1 (en) | Storage device, operating method of storage device, and operating method of computing device including storage device | |
TWI613656B (zh) | 固態硬碟系統的優先寫入方法以及使用該方法的裝置 | |
TW201913395A (zh) | 用以優化資料儲存裝置之資料儲存方法及其資料儲存裝置 | |
US11550740B2 (en) | Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method | |
US20240012564A1 (en) | Memory controller and storage device including the same | |
EP3974954A1 (en) | Storage device, operating method of storage device, and operating method of computing device including storage device | |
US20140259183A1 (en) | Portable storage device and data security-control method thereof |