TWI613656B - 固態硬碟系統的優先寫入方法以及使用該方法的裝置 - Google Patents
固態硬碟系統的優先寫入方法以及使用該方法的裝置 Download PDFInfo
- Publication number
- TWI613656B TWI613656B TW105134402A TW105134402A TWI613656B TW I613656 B TWI613656 B TW I613656B TW 105134402 A TW105134402 A TW 105134402A TW 105134402 A TW105134402 A TW 105134402A TW I613656 B TWI613656 B TW I613656B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- page
- cache controller
- buffer
- writing
- Prior art date
Links
Classifications
-
- 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
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; 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/0689—Disk arrays, e.g. RAID, JBOD
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明的實施例提出一種固態硬碟系統的優先寫入方法,由處理單元執行,包含以下步驟。接收優先寫入命令,指示寫入少於一個頁面長度的第一資料至儲存單元。之後,驅動緩存控制器從緩存器中的關連於優先寫入的下一個可用子區域開始向第一方向儲存第一資料。接收非優先寫入命令,指示寫入少於一個頁面長度的第二資料至儲存單元。之後,驅動緩存控制器從緩存器中的關連於非優先寫入的下一個可用子區域開始向第二方向儲存第二資料。
Description
本發明關連於一種快閃記憶體裝置,特別是一種固態硬碟系統的優先寫入方法以及使用該方法的裝置。
快閃記憶體裝置通常分為NOR快閃裝置與NAND快閃裝置。NOR快閃裝置為隨機存取裝置,而可於位址腳位上提供任何的位址,用以存取NOR快閃裝置的主裝置(host),並及時地由NOR快閃裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃裝置並非隨機存取,而是序列存取。NAND快閃裝置無法像NOR快閃裝置一樣,可以存取任何隨機位址,主裝置反而需要寫入序列的位元組(bytes)的值到NAND快閃裝置中,用以定義請求命令(command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(在快閃記憶體中的一個寫入作業的最小資料塊)或一個區塊(在快閃記憶體中的一個抹除作業的最小資料塊)。實際上,NAND快閃裝置通常從記憶體單元(memory cells)上讀取或寫入完整的數頁資料。當一整頁的資料從陣列讀取到裝置中的緩存器(buffer)後,藉由使用提取訊號(strobe signal)順序地敲出(clock out)內容,讓主單元可逐位元組或字元組(words)存取資
料。
優先寫入是應用在儲存系統的重要規格,例如,資料庫系統。儲存系統有時會處於繁重的工作量。為了提升效能,傳統的儲存系統擁有非常深的佇列並且試圖將所有目前請求進行平行處理。提升產出率(throughput)的同時,通常會傷害延遲(latency),也就是說,因為不利的請求排程,一個請求可能卡在佇列很長一段時間。於傳統的資料庫交易,資料異動係為二階段提交(two phase commit):首先,將異動儲存至重作日誌(redo log)並刷新(flush)日誌;接著,在背景執行實際的資料更新。然而,重作日誌的寫入作業可能會阻擋其他的寫入作業,而某些寫入作業的觸發就算比重作日誌的寫入作業更晚,還需要即時完成。因此,本發明提出一種固態硬碟系統的優先寫入方法以及使用該方法的裝置,用以解決如上所述的問題。
本發明的實施例提出一種固態硬碟系統的優先寫入方法,由處理單元執行,包含以下步驟。接收優先寫入命令,指示寫入少於一個頁面長度的第一資料至儲存單元。之後,驅動緩存控制器從緩存器中的關連於優先寫入的下一個可用子區域開始向第一方向儲存第一資料。接收非優先寫入命令,指示寫入少於一個頁面長度的第二資料至儲存單元。之後,驅動緩存控制器從緩存器中的關連於非優先寫入的下一個可用子區域開始向第二方向儲存第二資料。
本發明的實施例提出一種固態硬碟系統的優先寫入裝置,包含緩存控制器及處理單元。處理單元從主裝置接收
優先寫入命令,指示寫入少於一個頁面長度的第一資料至儲存單元。之後,處理單元驅動緩存控制器從緩存器中的關連於優先寫入的下一個可用子區域開始向第一方向儲存第一資料。處理單元從主裝置接收非優先寫入命令,指示寫入少於一個頁面長度的第二資料至儲存單元。之後,處理單元驅動緩存控制器從緩存器中的關連於非優先寫入的下一個可用子區域開始向第二方向儲存第二資料。
10‧‧‧系統
110‧‧‧處理單元
120‧‧‧資料分配器
130‧‧‧緩存控制器
140_1、140_3‧‧‧RAID引擎
150‧‧‧存取介面
160‧‧‧主裝置
170‧‧‧存取介面
CTRL‧‧‧控制訊號
CMD1、CMD2、CMD3‧‧‧命令
DAT1、DAT2、DAT3‧‧‧資料
ECC1、ECC2‧‧‧錯誤檢查修正碼
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~S573‧‧‧方法步驟
S611~S635‧‧‧方法步驟
Head_1、Head_2‧‧‧頭指標
Tail_1、Tail_2‧‧‧尾指標
第1圖係依據本發明實施例之快閃記憶體的系統架構示意圖。
第2圖係依據本發明實施例之存取介面與儲存單元的方塊圖。
第3圖係依據本發明實施例之一個存取子介面與多個儲存子單元的連接示意圖。
第4圖係依據本發明實施例的緩存器示意圖。
第5及6圖係依據本發明實施例的固態硬碟系統的優先寫入方法流程圖。
第7圖係依據本發明實施例的緩存器示意圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包
括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第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或DAT3至存取介面170,接著發出命令CMD3驅動存取介面170把資料DAT2或DAT3寫入至儲存單元180中的指定位址。資料分配器120可以解多工器(de-multiplexer)實施,用以將存取介面150的資料線依據控制訊號CTRL耦接至緩存控制器130及存取介面170中之一者。第4圖係依據本發明實施例的緩存器示意圖。緩存器400包含多個區域400_0_0至400_0_i。每個區域可包含四個子區域,用以分別儲存四個單元(units)的資料,每個單元為固定長度,例如4K位元組。於此須注意的是,每個區域包含的子區域數目可依據儲存子單元及容錯式磁碟陣列(RAID,Redundant Array of Independent Disks)的設計而調整,本發明並不因此受限。
於緩存寫入模式中,寫入命令可為優先寫入(priority write)及非優先寫入(non-priority write)中之一者。非優先寫入命令可包含用以刷新重作日誌至儲存單元180的命令。如果寫入命令CMD1包含優先寫入的資訊,處理單元110可發出控制訊號CTRL指示資料分配器120將資料DAT1從區域400_0_0的第一個子區域向後儲存(可稱為第一方向)。例如,區域400_0_0的第一個子區域、第二個子區域,依此類推。從如果寫入命令CMD1包含非優先寫入的資訊,處理單元110可發出
控制訊號CTRL指示資料分配器120將資料DAT1從區域400_0_i的最後一個子區域向前儲存(可稱為第二方向)。例如,區域400_0_i的最後一個子區域、倒數第二個子區域,依此類推。緩存控制器130中的寄存器儲存二個尾指標(tail pointers):一個尾指標用以指向可儲存優先寫入命令的資料的下一個可用子區域;另一個尾指標用以指向可儲存非優先寫入命令的資料的下一個可用子區域。緩存控制器130可依據尾指標得到此優先寫入命令或非優先寫入命令的下一個可用子區域。於成功儲存資料至緩存器400後,緩存控制器130更新相應的尾指標,用以指向已寫入資料的最後一個單元的下一個的子區域。
RAID引擎140_1及140_3可分別依據資料DAT2及DAT3產生錯誤檢查修正碼(ECC,Error Check and Correction Code)。緩存控制器130中的寄存器另儲存二個頭指標(head pointers):一個頭指標用以指向優先寫入命令的尚未寫入資料的第一個子區域;另一個頭指標用以指向非優先寫入命令的尚未寫入資料的第一個子區域。緩存控制器130周期性地依據寄存器的四個指標以及寫入政策(program policies)決定是否需要將緩存器400中的資料寫入儲存單元180。若是,緩存控制器130則將一個頁面的資料傳送至RAID引擎140_1至140_3中之一者,並且發出命令CMD給存取介面170,用以指示從此RAID引擎接收資料DAT2或DAT3及相應的錯誤檢查修正碼並寫入至儲存單元180中之指定位址。
第5圖係依據本發明實施例的固態硬碟系統的優先寫入方法流程圖。於緩存寫入模式中,處理單元110載入並
執行特定軟體程序(software routine)時實施此方法,用以將不足一個頁面的資料搬遷至緩存器400中的特定區域。首先,處理單元110透過存取介面150從主裝置160取得寫入命令CMD1,包含是否為優先寫入(priority write)的資訊(步驟S510)。當處理單元110判斷寫入命令CMD1為優先寫入時(步驟S530中”是”的路徑),執行優先寫入程序(步驟S551至S553),否則(步驟S530中”否”的路徑),執行非優先寫入程序(步驟S571至S573)。
於優先寫入程序中,處理單元110指示資料分配器120將資料DAT1傳送至緩存控制器130,以及驅動緩存控制器130從緩存器中的關連於優先寫入的下一個可用子區域開始儲存資料DAT1(步驟S551)。接著,緩存控制器130於成功儲存資料DAT1後,更新關連於優先寫入的尾指標用以指向資料DAT1所儲存的最後一個子區域的下一個可用子區域的位址(步驟S553)。於非優先寫入程序中,處理單元110指示資料分配器120將資料DAT1傳送至緩存控制器130,以及驅動緩存控制器130從緩存器中的關連於非優先寫入的下一個可用子區域開始儲存資料DAT1(步驟S571)。接著,緩存控制器130於成功儲存資料DAT1後,更新關連於非優先寫入的尾指標用以指向資料DAT1所儲存的最後一個子區域的下一個可用子區域的位址(步驟S573)。第7圖係依據本發明實施例的緩存器示意圖。假設緩存控制器130寫入二個單元的優先寫入資料及二個單元的非優先寫入資料至緩存器400:緩存控制器130從緩存器400中的區域400_0_0的第一個子區域開始向後儲存二個單元的優先寫入
資料後(步驟S551),更新關連於優先寫入的尾指標Tail_1,用以指向區域400_0_0的第三個子區域(亦即是指向優先寫入資料所儲存的最後一個子區域的下一個可用子區域)(步驟S553)。緩存控制器130從緩存器400中的區域400_0_i的最後一個子區域開始向前儲存二個單元的非優先寫入資料後(步驟S571),更新關連於非優先寫入的尾指標Tail_2,用以指向區域400_0_i的倒數第三個子區域(亦即是指向非優先寫入資料所儲存的最後一個子區域的下一個可用子區域)。
第6圖係依據本發明實施例的固態硬碟系統的優先寫入方法流程圖。緩存控制器130實施此方法,用以週期性將零或多個頁面的資料搬遷至緩存器400中的特定區域。緩存控制器130判斷緩存器400中是否已儲存至少一個頁面的優先寫入資料(步驟S611)。於步驟S611,緩存控制器130可依據關連於優先寫入的頭指標及尾指標判斷緩存器400是否已儲存至少一個頁面的優先寫入資料。如果優先寫入的頭指標及尾指標間的資料單元數目超過一個頁面的資料單元數目,代表緩存器400已儲存至少一個頁面的優先寫入資料。當緩存控制器130判斷緩存器400中已儲存至少一個頁面的優先寫入資料時(步驟S611中”是”的路徑),輸出緩存器400中一或多個完整頁面的優先寫入資料DAT2至RAID引擎140_1以及驅動存取介面170從RAID引擎140_1接收優先寫入資料DAT2及其錯誤檢查修正碼ECC1並寫入至儲存單元180中的指定位址(步驟S613)。存取介面170可包含一個多工器,用以將RAID引擎140_1及140_3中之一者耦接至儲存單元180。緩存控制器130於成功寫入優先寫入
資料DAT2後,更新關連於優先寫入的頭指標用以指向已寫入資料DAT2所儲存的最後一個子區域的下一個子區域(步驟S615),以及判斷緩存器400中是否已儲存至少一個頁面的非優先寫入資料(步驟S631)。當緩存控制器130判斷緩存器400中尚未儲存足夠一個頁面的優先寫入資料時(步驟S611中”否”的路徑),更判斷緩存器400中是否已儲存至少一個頁面的非優先寫入資料(步驟S631)。於步驟S631,緩存控制器130可依據關連於非優先寫入的頭指標及尾指標判斷緩存器400是否已儲存至少一個頁面的非優先寫入資料。如果非優先寫入的頭指標及尾指標間的資料單元數目超過一個頁面的資料單元數目,代表緩存器400已儲存至少一個頁面的非優先寫入資料。當緩存控制器130判斷緩存器400中已儲存至少一個頁面的非優先寫入資料時(步驟S631中”是”的路徑),輸出緩存器400中一或多個完整頁面的非優先寫入資料DAY3至RAID引擎140_3以及驅動存取介面170從RAID引擎140_3接收非優先寫入資料DAT3及其錯誤檢查修正碼ECC2並寫入至儲存單元180中的指定位址(步驟S633)。緩存控制器130於成功寫入非優先寫入資料DAT3後,更新關連於非優先寫入的頭指標用以指向已寫入資料DAT3所儲存的最後一個子區域的下一個子區域(步驟S635),以及結束整個流程。當緩存控制器130判斷緩存器400中尚未儲存足夠一個頁面的非優先寫入資料時(步驟S631中”否”的路徑),結束整個流程。於此須注意的是,由於優先寫入資料的優先權必須高於非優先寫入資料的優先權,所以,步驟S631必須置於步驟S611之後。
雖然第1至3圖中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然第5及6圖的處理步驟採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S510~S573‧‧‧方法步驟
Claims (20)
- 一種固態硬碟系統的優先寫入方法,由一處理單元執行,包含:接收一第一寫入命令,指示寫入少於一頁面長度的一第一資料至一儲存單元,其中上述第一寫入命令為一優先寫入命令;驅動一緩存控制器從一緩存器中的關連於一優先寫入的下一個可用子區域開始向一第一方向儲存上述第一資料;接收一第二寫入命令,指示寫入少於上述頁面長度的一第二資料至上述儲存單元,其中上述第二寫入命令為一非優先寫入命令;以及驅動上述緩存控制器從上述緩存器中的關連於一非優先寫入的下一個可用子區域開始向一第二方向儲存上述第二資料。
- 如申請專利範圍第1項所述的固態硬碟系統的優先寫入方法,其中,上述第一方向相反於上述第二方向。
- 如申請專利範圍第1項所述的固態硬碟系統的優先寫入方法,更包含:儲存上述第一資料至上述緩存器後,更新一第一尾指標用以指向上述第一資料所儲存的最後一個子區域的下一個可用子區域;以及儲存上述第二資料至上述緩存器後,更新一第二尾指標用以指向上述第二資料所儲存的最後一個子區域的下一個可用子區域。
- 如申請專利範圍第1項所述的固態硬碟系統的優先寫入方法,更包含:於驅動上述緩存控制器儲存上述第一資料至上述緩存器之前,指示一資料分配器將一第一存取介面耦接至上述緩存控制器,用以將上述第一資料傳送至上述緩存控制器;以及於驅動上述緩存控制器儲存上述第二資料至上述緩存器之前,指示上述資料分配器將上述第一存取介面耦接至上述緩存控制器,用以將上述第二資料傳送至上述緩存控制器。
- 如申請專利範圍第4項所述的固態硬碟系統的優先寫入方法,其中,上述資料分配器為一解多工器,用以依據一控制訊號將上述第一存取介面耦接至上述緩存控制器以及一第二存取介面中之一者。
- 如申請專利範圍第1項所述的固態硬碟系統的優先寫入方法,其中,上述緩存控制器週期性判斷上述緩存器中是否已儲存至少一頁面的上述第一資料;以及當上述緩存器中已儲存至少一頁面的上述第一資料時,將完整頁面的上述第一資料寫入上述儲存單元。
- 如申請專利範圍第6項所述的固態硬碟系統的優先寫入方法,其中,當上述緩存器中已儲存至少一頁面的上述第一資料時,上述緩存控制器輸出上述完整頁面的上述第一資料至一第一容錯式磁碟陣列引擎;以及驅動一存取介面從上述第一容錯式磁碟陣列引擎接收上述完整頁面的上述第一資料以及一第一錯誤檢查修正碼,以及寫入上述完整頁 面的上述第一資料以及上述第一錯誤檢查修正碼。
- 如申請專利範圍第7項所述的固態硬碟系統的優先寫入方法,其中,上述緩存控制器成功寫入上述完整頁面的上述第一資料以及上述第一錯誤檢查修正碼至上述儲存單元後,更新一第一頭指標用以指向上述已寫入的第一資料所儲存的最後一個子區域的下一個子區域。
- 如申請專利範圍第6項所述的固態硬碟系統的優先寫入方法,其中,上述緩存控制器寫入上述完整頁面的上述第一資料寫入一儲存單元之後,判斷上述緩存器中是否已儲存至少一頁面的上述第二資料;以及當上述緩存器中已儲存至少一頁面的上述第二資料時,將完整頁面的上述第二資料寫入上述儲存單元。
- 如申請專利範圍第9項所述的固態硬碟系統的優先寫入方法,其中,當上述緩存器中已儲存至少一頁面的上述第二資料時,上述緩存控制器輸出上述完整頁面的上述第二資料至一第二容錯式磁碟陣列引擎;以及驅動一存取介面從上述第二容錯式磁碟陣列引擎接收上述完整頁面的上述第二資料以及一第二錯誤檢查修正碼,以及寫入上述完整頁面的上述第二資料以及上述第二錯誤檢查修正碼。
- 一種固態硬碟系統的優先寫入裝置,包含:一緩存控制器;以及一處理單元,耦接至上述緩存控制器,從一主裝置接收一第一寫入命令,指示寫入少於一頁面長度的一第一資料至一儲存單元,其中上述第一寫入命令為一優先寫入命令; 驅動上述緩存控制器從一緩存器中的關連於一優先寫入的下一個可用子區域開始向一第一方向儲存上述第一資料;從上述主裝置接收一第二寫入命令,指示寫入少於上述頁面長度的一第二資料至上述儲存單元,其中上述第二寫入命令為一非優先寫入命令;以及驅動上述緩存控制器從上述緩存器中的關連於一非優先寫入的下一個可用子區域開始向一第二方向儲存上述第二資料。
- 如申請專利範圍第11項所述的固態硬碟系統的優先寫入裝置,其中,上述第一方向相反於上述第二方向。
- 如申請專利範圍第11項所述的固態硬碟系統的優先寫入裝置,其中,儲存上述第一資料至上述緩存器後,上述處理單元更新一第一尾指標用以指向上述第一資料所儲存的最後一個子區域的下一個可用子區域;以及儲存上述第二資料至上述緩存器後,更新一第二尾指標用以指向上述第二資料所儲存的最後一個子區域的下一個可用子區域。
- 如申請專利範圍第11項所述的固態硬碟系統的優先寫入裝置,其中,上述處理單元於驅動上述緩存控制器儲存上述第一資料至上述緩存器之前,指示上述資料分配器將一第一存取介面耦接至上述緩存控制器,用以上述第一資料傳送至上述緩存控制器;以及於驅動上述緩存控制器儲存上述第二資料至上述緩存器之前,指示一資料分配器將上述第一存取介面耦接至上述緩存控制器,用以將上述第二資料傳送至上述緩存控制器。
- 如申請專利範圍第14項所述的固態硬碟系統的優先寫入裝 置,其中,上述資料分配器為一解多工器,用以依據一控制訊號將上述第一存取介面耦接至上述緩存控制器以及一第二存取介面中之一者。
- 如申請專利範圍第11項所述的固態硬碟系統的優先寫入裝置,其中,上述緩存控制器週期性判斷上述緩存器中是否已儲存至少一頁面的上述第一資料;以及當上述緩存器中已儲存至少一頁面的上述第一資料時,將完整頁面的上述第一資料寫入上述儲存單元。
- 如申請專利範圍第16項所述的固態硬碟系統的優先寫入裝置,其中,當上述緩存器中已儲存至少一頁面的上述第一資料時,上述緩存控制器輸出上述完整頁面的上述第一資料至一第一容錯式磁碟陣列引擎;以及驅動一存取介面從上述第一容錯式磁碟陣列引擎接收上述完整頁面的上述第一資料以及一第一錯誤檢查修正碼,以及寫入上述完整頁面的上述第一資料以及上述第一錯誤檢查修正碼。
- 如申請專利範圍第17項所述的固態硬碟系統的優先寫入裝置,其中,上述緩存控制器成功寫入上述完整頁面的上述第一資料以及上述第一錯誤檢查修正碼至上述儲存單元後,更新一第一頭指標用以指向上述已寫入的第一資料所儲存的最後一個子區域的下一個子區域。
- 如申請專利範圍第16項所述的固態硬碟系統的優先寫入裝置,其中,上述緩存控制器寫入上述完整頁面的上述第一資料寫入一儲存單元之後,判斷上述緩存器中是否已儲存至少一頁面的上述第二資料;以及當上述緩存器中已儲存 至少一頁面的上述第二資料時,將完整頁面的上述第二資料寫入上述儲存單元。
- 如申請專利範圍第19項所述的固態硬碟系統的優先寫入裝置,其中,當上述緩存器中已儲存至少一頁面的上述第二資料時,上述緩存控制器輸出上述完整頁面的上述第二資料至一第二容錯式磁碟陣列引擎;以及驅動一存取介面從上述第二容錯式磁碟陣列引擎接收上述完整頁面的上述第二資料以及一第二錯誤檢查修正碼,以及寫入上述完整頁面的上述第二資料以及上述第二錯誤檢查修正碼。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610802224.3A CN107797756B (zh) | 2016-09-05 | 2016-09-05 | 固态硬盘***的优先写入方法以及使用该方法的装置 |
??201610802224.3 | 2016-09-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI613656B true TWI613656B (zh) | 2018-02-01 |
TW201810277A TW201810277A (zh) | 2018-03-16 |
Family
ID=61281678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105134402A TWI613656B (zh) | 2016-09-05 | 2016-10-25 | 固態硬碟系統的優先寫入方法以及使用該方法的裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10338998B2 (zh) |
CN (1) | CN107797756B (zh) |
TW (1) | TWI613656B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11797188B2 (en) * | 2019-12-12 | 2023-10-24 | Sk Hynix Nand Product Solutions Corp. | Solid state drive with multiplexed internal channel access during program data transfers |
CN111966300B (zh) * | 2020-08-24 | 2021-06-25 | 深圳三地一芯电子有限责任公司 | 一种节省主控sram的存储器数据写入方法及装置 |
CN113821175B (zh) * | 2021-09-27 | 2024-07-09 | 山东华芯半导体有限公司 | 基于存储内容优先的ssd指令调度方法及*** |
CN117591036B (zh) * | 2024-01-18 | 2024-03-19 | 四川云海芯科微电子科技有限公司 | 基于固件与芯片微内核的占位数据补齐方法及*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117441A1 (en) * | 2002-12-09 | 2004-06-17 | Infabric Technologies, Inc. | Data-aware data flow manager |
US20100079904A1 (en) * | 2008-09-29 | 2010-04-01 | Fujitsu Limited | Storage control method, storage control unit and storage apparatus |
US20130080687A1 (en) * | 2011-09-23 | 2013-03-28 | Avalanche Technology, Inc. | Solid state disk employing flash and magnetic random access memory (mram) |
US20130318283A1 (en) * | 2012-05-22 | 2013-11-28 | Netapp, Inc. | Specializing i/0 access patterns for flash storage |
WO2015061921A1 (zh) * | 2013-10-29 | 2015-05-07 | 上海宝存信息科技有限公司 | 用于数据存储***的动态缓存方法和*** |
US20150286438A1 (en) * | 2014-04-03 | 2015-10-08 | Lsi Corporation | System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller |
US20150309933A1 (en) * | 2011-01-31 | 2015-10-29 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US20160216887A1 (en) * | 2015-01-23 | 2016-07-28 | Kabushiki Kaisha Toshiba | Memory system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
JP2009032305A (ja) * | 2007-07-24 | 2009-02-12 | Toshiba Corp | 情報記録装置及びその制御方法 |
US8954654B2 (en) * | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
CN102110034A (zh) * | 2009-12-28 | 2011-06-29 | 北京安码科技有限公司 | 一种结合电池和dram的硬盘存储方法及装置 |
US9471240B2 (en) * | 2010-06-24 | 2016-10-18 | International Business Machines Corporation | Performing read and write operations with respect to at least one solid state disk and at least one non-solid state disk |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
CN103425439A (zh) * | 2013-07-16 | 2013-12-04 | 记忆科技(深圳)有限公司 | 固态硬盘读写的方法及其固态硬盘 |
CN108447516B (zh) * | 2013-08-23 | 2020-04-24 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
-
2016
- 2016-09-05 CN CN201610802224.3A patent/CN107797756B/zh active Active
- 2016-10-25 TW TW105134402A patent/TWI613656B/zh active
-
2017
- 2017-06-19 US US15/626,334 patent/US10338998B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117441A1 (en) * | 2002-12-09 | 2004-06-17 | Infabric Technologies, Inc. | Data-aware data flow manager |
US20100079904A1 (en) * | 2008-09-29 | 2010-04-01 | Fujitsu Limited | Storage control method, storage control unit and storage apparatus |
US20150309933A1 (en) * | 2011-01-31 | 2015-10-29 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US20130080687A1 (en) * | 2011-09-23 | 2013-03-28 | Avalanche Technology, Inc. | Solid state disk employing flash and magnetic random access memory (mram) |
US20130318283A1 (en) * | 2012-05-22 | 2013-11-28 | Netapp, Inc. | Specializing i/0 access patterns for flash storage |
WO2015061921A1 (zh) * | 2013-10-29 | 2015-05-07 | 上海宝存信息科技有限公司 | 用于数据存储***的动态缓存方法和*** |
US20150286438A1 (en) * | 2014-04-03 | 2015-10-08 | Lsi Corporation | System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller |
US20160216887A1 (en) * | 2015-01-23 | 2016-07-28 | Kabushiki Kaisha Toshiba | Memory system |
Also Published As
Publication number | Publication date |
---|---|
US10338998B2 (en) | 2019-07-02 |
TW201810277A (zh) | 2018-03-16 |
CN107797756B (zh) | 2021-01-12 |
CN107797756A (zh) | 2018-03-13 |
US20180067797A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10782910B2 (en) | Methods for internal data movements of a flash memory device and apparatuses using the same | |
US9747044B2 (en) | Interleaving read and write requests to reduce latency and maximize throughput in a flash storage device | |
US9304938B2 (en) | Storage device and data transferring method thereof | |
US8949492B2 (en) | Apparatus including buffer allocation management and related methods | |
US9514838B2 (en) | Apparatus including memory system controllers and related methods for memory management using block tables | |
US9076528B2 (en) | Apparatus including memory management control circuitry and related methods for allocation of a write block cluster | |
US9430373B2 (en) | Apparatus including memory channel control circuit and related methods for relaying commands to logical units | |
US8621113B2 (en) | Apparatus including host bus adapter and serial attachment programming compliant device and related methods | |
US20180275921A1 (en) | Storage device | |
US10540096B2 (en) | Method and design for dynamic management of descriptors for SGL operation | |
US10108565B2 (en) | Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements | |
TWI613656B (zh) | 固態硬碟系統的優先寫入方法以及使用該方法的裝置 | |
TWI592866B (zh) | 固態硬碟系統的原子寫入方法以及使用該方法的裝置 | |
US20150081967A1 (en) | Management of storage read requests | |
TWI736957B (zh) | 用於資料傳送的系統及記憶體裝置 | |
US20220100425A1 (en) | Storage device, operating method of storage device, and operating method of computing device including storage device | |
TW202006553A (zh) | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 | |
US20150212759A1 (en) | Storage device with multiple processing units and data processing method | |
US11029878B2 (en) | Information processing system | |
US20200387330A1 (en) | Heterogeneous in-storage computation | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
US20240012564A1 (en) | Memory controller and storage device including the same |