TWI515565B - 直接記憶體存取的方法及其固態磁碟機、電腦程式產品 - Google Patents

直接記憶體存取的方法及其固態磁碟機、電腦程式產品 Download PDF

Info

Publication number
TWI515565B
TWI515565B TW101132033A TW101132033A TWI515565B TW I515565 B TWI515565 B TW I515565B TW 101132033 A TW101132033 A TW 101132033A TW 101132033 A TW101132033 A TW 101132033A TW I515565 B TWI515565 B TW I515565B
Authority
TW
Taiwan
Prior art keywords
memory
temporary storage
storage area
address
controller
Prior art date
Application number
TW101132033A
Other languages
English (en)
Other versions
TW201333699A (zh
Inventor
葛利夫李D
華爾斯安德魯D
Original Assignee
萬國商業機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 萬國商業機器公司 filed Critical 萬國商業機器公司
Publication of TW201333699A publication Critical patent/TW201333699A/zh
Application granted granted Critical
Publication of TWI515565B publication Critical patent/TWI515565B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

直接記憶體存取的方法及其固態磁碟機、電腦程式產品
本發明係概略關於一種經改良之資料處理設備及方法,且更特定言之係關於用於記憶體定址之固態儲存裝置的機制。
固態磁碟機(SSD)是一種資料儲存裝置,該儲存裝置使用固態記憶體以儲存持久性資料,意圖提供與傳統塊輸入輸出(block I/O)硬碟機相同方式之存取。SSD不同於傳統硬碟機(HDD),後者係包含旋轉碟及可移動讀寫頭的機電裝置。相反地,SSD使用微晶片,該等微晶片保留資料在非揮發性記憶體晶片中而不具有移動部件。相較於機電式HDD,SSD一般而言較不易受物理震擊影響、較安靜,且具較低之存取時間及等待時間。然而,許多SSD與硬碟機使用相同介面,像是序列附接SCSI(serial attached SCSI,SAS)、序列先進技術附接(SATA)、及光纖通道(Fibre Channel),因此允許HDD及SSD兩者被使用於相同外殼中,且允許應用 程式完美地利用任一者。使用經設計用於HDD的介面,導致來自數個起源的增加等待時間。首先,如果SSD遠在儲存區域網路(SAN)中,就有SAN組構延遲(fabric delay),以及由用於目錄搜尋之外部儲存控制器及類似物所造成之延遲。對於出現在快速週邊組件互連(PCI Express)連結上之SSD,最顯著的等待時間形式其實是透過軟體驅動程式,然後等待DMA完成並處理該完成狀態的軟體等待時間。
有些SSD可經附接至快速週邊組件互連(PCIe)介面。這是減少等待時間的一個有效方式。由於在SSD中所使用之非揮發性記憶體(也就是快閃記憶體)為區塊導向,且在寫入前需要清除該等非揮發性記憶體,軟體驅動程式就以HDD存取方法寫入及讀取資料。此牽涉建立一分散/收集(scatter/gather)清單,及傳送控制區塊至PCIe卡以告訴SSD去擷取資料的所在,接著操作結束之完成狀態必須被傳送至驅動程式。此種介面方法導致建立分散收集清單、傳送命令至儲存裝置、等待DMA完成以及最後結束狀態的顯著增加的等待時間。
在一示意性實施例中,提供一種方法以用於在一儲存裝置中之直接記憶體存取。該方法包含執行一記憶體位址視窗至該儲存裝置之一邏輯區塊定址(LBA)範圍的一對映,及回應於自一主機接收一寫入請求,該寫入請求指定在該記憶體位址視窗中的一寫入位址,初始化在該儲存裝置中之一第一記憶體暫存區。該方法進一步包含將該第一記憶體暫存 區與在該記憶體位址視窗內之一第一位址範圍相關聯,使得該請求之該寫入位址係在該第一位址範圍內。該方法進一步包含根據該寫入位址,寫入至該第一記憶體暫存區,及回應於該暫存區已滿,根據該對映使用邏輯區塊定址保存該第一記憶體暫存區之內容至該儲存裝置。
在其他示意性實施例中,提供一種電腦程式產品,該電腦程式產品包含一電腦可使用或可讀取儲存媒體,該電腦可讀取儲存媒體具有一電腦可讀取程式。該電腦可讀取程式當在一計算裝置上執行時,致使該計算裝置執行以上針對方法示意性實施例所概述之各種操作及該等操作之組合。
在又一示意性實施例中,提供一種固態磁碟機。該固態磁碟機包含複數個記憶體暫存區、一固態記憶體,及一控制器。該控制器經配置以回應於自一軟體應用程式接收於該固態磁碟機中一記憶體位址處存取資料的請求,轉換該記憶體位址至一邏輯區塊定址(LBA)位址,並執行一存取操作以利用該LBA位址存取在該固態磁碟機中的一固態記憶體。
該固態磁碟機可包含一或更多個控制器及一記憶體,該記憶體耦合至該等一或更多個處理器。該記憶體可包含指令,該等指令當由該等一或更多處理器執行時,致使該等一或更多處理器執行以上針對方法示意性實施例所概述之各種操作及該等操作之組合。
本發明之以上特徵及優點,以及其他特徵及優點,將在以下本發明之範例實施例的詳細描述中說明,對於在該 領域具通常知識者將更顯而易見。
100‧‧‧資料處理系統
102‧‧‧NB/MCH
104‧‧‧SB/ICH
106‧‧‧處理單元
108‧‧‧主記憶體
110‧‧‧圖形處理器
112‧‧‧網路配接器
116‧‧‧聲頻配接器
120‧‧‧鍵盤及滑鼠配接器
122‧‧‧數據機
124‧‧‧ROM
126‧‧‧HDD
130‧‧‧光碟機
132‧‧‧USB及其他埠
134‧‧‧PCI/PCIe裝置
136‧‧‧SIO
138、140‧‧‧匯流排
210‧‧‧應用程式
220‧‧‧固態磁碟機 (SSD)
222‧‧‧DRAM暫存區
224‧‧‧控制器
226‧‧‧快閃記憶體
232‧‧‧自由表
234‧‧‧定時器
300-315‧‧‧方塊
400-406‧‧‧方塊
500-505‧‧‧方塊
600-605‧‧‧方塊
700-707‧‧‧方塊
800-806‧‧‧方塊
900-903‧‧‧方塊
本發明以及其最佳使用模式及其進一步目的及優勢,藉由參考以下之示意性實施例之詳細說明,並連同隨附之圖式一併閱讀,將最能得到理解,其中:第1圖係範例資料處理系統的方塊圖,在該資料處理系統中可實施示意性實施例的態樣;第2圖係一方塊圖,說明按照一示意性實施例,用於固態磁碟機的直接記憶體定址;第3圖係一流程圖,說明按照一示意性實施例,用於固態磁碟機中之直接記憶體定址的固態磁碟機控制器的操作;第4圖係一流程圖,說明按照一示意性實施例,用於初始化暫存區之固態磁碟機控制器的操作;第5圖係一流程圖,說明按照一示意性實施例,用於回收暫存區之控制器的操作;第6圖係一流程圖,說明按照一示意性實施例,用於自暫存區保存資料至固態磁碟機記憶體之固態控制器的操作;第7圖係一流程圖,說明按照一示意性實施例,用於轉換資料成為邏輯區塊定址,以及將區塊寫入至固態磁碟機之控制器的操作,該固態磁碟機經配置以用於分帶;第8圖係一流程圖,說明按照一示意性實施例,用於儲存在一伴隨卡暫存區之控制器的運作;及 第9圖係一流程圖,說明按照一示意性實施例,用於處理一電力事件之控制器的運作。
示意性實施例提供用於固態磁碟機之直接記憶體定址的機制。該機制提供在一固態磁碟機內自記憶體定址至磁區定址的轉換。該機制以一位址視窗初始化該固態磁碟機,該等位址由一主機可存取。該主機直接將資料區塊寫入至該記憶體存取視窗,因此直接寫入至該固態磁碟機而非呼叫驅動程式。該固態磁碟機包括複數個記憶體暫存區。該機制將該主機寫入的資料寫入至該等記憶體暫存區,對映該記憶體位址範圍至該固態磁碟機中的磁區,並利用邏輯區塊定址(LBA)寫入該資料至該固態磁碟機。該主機能在同一時間具有多個執行緒啟用。這表示該主機能寫入至位於X的一位址,後來寫入至位址Y,然後回來寫入至X之後下一個連續位址。儘管暫存區的數目與本發明沒有關係,但現今之具邏輯分區之對稱性多處理器系統(Symmetrical Multi Processor Systems with Logical Partitions)經常具有許多執行緒啟用,而本發明之一示意性實施例可具有32或甚至64個暫存區,各自由該主機起始於不同位址。此種固態磁碟機可具數種形狀因子,包括硬碟機形狀因子、快速PCI卡或任意數目之具有快速PCI、光纖通道、SAS、SATA、DDR3或任意數目之協定的自訂形狀因子。
該等示意性實施例可經運用於許多不同類型之資料處理環境中,包括分散式資料處理環境、單一資料處理裝置、 儲存系統、嵌入式電腦系統或上述之類似物。為了提供一個情境以用於說明該等示意性實施例的特定元件及功能性,隨後將提供第1圖作為一範例環境,該等示意性實施例之態樣可在該範例環境中實現。應理解第1圖僅為一範例,並未意圖針對於本發明之態樣可經實現之所在環境樹立或暗示任何限制。可對所描繪之環境做許多修改,而無悖離本發明之精神及範疇。
第1圖係一範例資料處理系統的方塊圖,在該資料處理系統中可實施示意性實施例的態樣。在所描繪之範例中,資料處理系統100採用一種集線器架構,該架構包括北橋及記憶體控制器集線器(NB/MCH)102,以及南橋及輸入/輸出(I/O)控制器集線器(SB/ICH)104。處理單元106、主記憶體108及圖形處理器110經連接至NB/MCH 102。圖形處理器110可透過一加速圖形埠(AGP)而經連接至NB/MCH 102。
在所描繪之範例中,區域網路(LAN)配接器112連接至SB/ICH 104。聲頻配接器116、鍵盤及滑鼠配接器120、數據機122、唯讀記憶體(ROM)124、硬碟機(HDD)126、光碟機130、通用序列匯流排(USB)埠及其他通訊埠132以及PCI/PCIe裝置134透過匯流排138及匯流排140連接至SB/ICH 104。PCI/PCIe裝置可包括(例如)乙太網路配接器、增益卡(add-in card)及用於筆記型電腦之PC卡。PCI使用卡片匯流排控制器,而PCIe並不如此。ROM 124可為(例如)快閃基本輸入/輸出系統(BIOS)。
HDD 126及光碟機130透過匯流排140連接至SB/ICH 104。HDD 126及光碟機130可使用(例如)整合驅動電子(integrated drive electronics,IDE)或序列先進技術附接(serial advanced technology attachment,SATA)介面。超級I/O(SIO)裝置136可經連接至SB/ICH 104。
一作業系統在處理單元106上執行。該作業系統協調並提供第1圖中資料處理系統100內各種組件之控制。作為用戶端,該作業系統可為一市面可購得之作業系統,例如Microsoft Windows 7(Microsoft及Windows為位於美國、其他國家或兩者之微軟公司(Microsoft Corporation)的商標)。例如Java程式系統之物件導向程式系統,可與作業系統一併執行,並自Java程式或資料處理系統100上所執行之應用程式提供對作業系統的呼叫(Java係為Oracle及/或子公司之商標)。
作為伺服器,資料處理系統100可為(例如)IBM® eServerTM System p®電腦系統,該電腦系統執行Advanced Interactive Executive(AIX®)作業系統或LINUX作業系統(IBM、Server、System p及AIX係位於美國、其他國家或兩者之萬國商業機器公司(IBM Corporation)之商標,而LINUX係Linus Torvalds於美國、其他國家或兩者的註冊商標)。資料處理系統100可為對稱式多處理器(SMP)系統,該系統在處理單元106中包括複數個處理器。另一作法,可採用一單一處理器系統。
用於作業系統、物件導向程式系統,及應用程式或 程式的指令,係位在如HDD 126之儲存裝置上,且可被載入至主記憶體108,以供處理單元106執行。
例如在第1圖中所示之匯流排138或匯流排140,匯流排系統可含有一或更多個匯流排。當然,該匯流排系統可利用任何類型之通訊組構或架構來實現,該等通訊組構或架構提供其上所附接之各種組件或裝置之間的資料轉移。例如在第1圖中之數據機122或網路配接器112之通訊單元,可包括一或更多個裝置用來傳送及接收資料。記憶體可為(例如)主記憶體108、ROM 124或在第1圖中NB/MCH 102中可發現之快取記憶體。
本領域中具有通常知識者將可理解,第1圖中之硬體可因實現方式而異。其他內建硬體或週邊裝置,例如快閃記憶體、等效之非揮發性記憶體,或光碟機及上述之類似物,可用來加上第1圖中所描繪之硬體或取代之。資料處理系統100可採用數種不同資料處理系統的形式,包括客戶端計算裝置、伺服器計算裝置、平板電腦、膝上型電腦、電話或其他通訊裝置、個人數位助理(PDA),或以上之類似物。在某些示意性範例中,資料處理系統100可為一可攜式計算裝置,該可攜式計算裝置經配置有快閃記憶體以提供(例如)用於儲存作業系統檔案及/或使用者產生之資料的非揮發性記憶體。基本上,資料處理系統100可為不具架構限制之任意已知或近期開發之資料處理系統。如下針對於示意性實施例所說明之固態磁碟機(SSD)可為(例如)磁碟126、可連接至PCI/PCIe裝置134,或可直接連接至匯流排138。
第2圖係一方塊圖,說明按照一示意性實施例,用於固態磁碟機的直接記憶體定址。固態磁碟機(SSD)220可為在第1圖中之PCI/PCIe裝置134內的PCIe裝置,而應用程式210可(例如)在第1圖中之處理單元106上執行。能夠經由PCIe把資料寫入至SSD 220,允許更簡單的介面並減少等待時間。更特定言之,應用程式210可經由直接記憶體定址寫入至SSD 220,無需使用裝置驅動程式。相反的,應用程式210直接寫入至SSD 220上之一記憶體位址視窗並自該記憶體位址視窗讀取。在一範例實施例中,該記憶體位址視窗包含32GB的記憶體空間。SSD 220初始化一起始LBA位址,控制器224對映該位址視窗至該起始LBA位址。在一範例實施例中,控制器224對映一32GB之視窗至一邏輯單元號碼(LUN),該邏輯單元號碼具有一LBA範圍從0到32GB/512-1,或64MB-1。
SSD 220具有複數個隨機存取記憶體(RAM)暫存區222。這些暫存區可為DRAM或SRAM。它們可為一積體電路(ASIC)的一部分,或是ASIC或FPGA的外部記憶體。這些暫存區222允許寫入動作以RAM速度發生,之後應用程式210即完成。DRAM暫存區222在一範例實施例中可為4K分頁記憶體暫存區。其他實施例可實現512位元組之磁區暫存區。控制器224在自由表232中記錄可用之暫存區。每次控制器224初始化欲使用之暫存區,控制器224就自自由表232移除該暫存區,對映該暫存區至SSD 220之記憶體位址空間內的一位址範圍,並設定用於該暫存區的時間234。在一範 例實施例中,該等暫存區可為動態隨機存取記憶體(DRAM);然而,若該等暫存區為SRAM、新式相變(Phase Change)記憶體、磁性隨機存取記憶體(MRAM),或其他可購得之新技術,該示意性實施例之該等態樣同樣運作良好。
為了最佳之操作,SSD 220期望應用程式210寫入整數個512位元組磁區。由於快取列(cache line)小於512位元組,預期一次寫入動作將分解成為數個快取列寫入動作。SSD 220繼續接受寫入動作,直到暫存區已滿或某種程式規劃之時間用盡。這些寫入動作能交插由該應用程式所寫入之其他位址,而因此多個暫存區能同時被填滿。一旦一暫存區寫滿,該暫存區被寫入至該非揮發性媒體且即刻被釋放以接受不同位址。在SSD 220中之控制器224初始化關聯於各暫存區之定時器234的情況也是如此。一旦定時器234逾時或暫存區已滿,控制器224轉換暫存區222中的資料成為一組邏輯區塊位址(LBA)區塊。控制器224轉換欲寫入的位址成為快閃記憶體226之範圍中的LBA。例如,控制器224將轉換視窗中的位址512M成為LBA 1M。當記憶體暫存區222已滿或至少一預定百分比已滿時,控制器224可回收暫存區。控制器224傳回經回收之暫存區至自由表232。
一旦安排了該LBA區塊,控制器224處理該等磁區的方式正如使用正常硬碟機(HDD)之存取方法。例如,如果該LUN係針對集束磁碟(just a bunch of disks,JBOD)而設定,則該控制器將僅寫入該資料至快閃記憶體226中之該經指定LBA。
如果該LUN係針對獨立磁碟冗餘陣列(RAID)5或6而設定,該獨立磁碟冗餘陣列使用區塊階層之分帶,而同位數資料經分佈在所有成員磁碟中,且該所寫入資料少於一分帶,則控制器224自快閃記憶體226讀取該舊資料及舊同位數,合併該新資料與該舊資料,並在該所產生分帶上執行一XOR操作以決定一新同位數。控制器224接著寫入該新分帶與該新同位數至快閃記憶體226。
應用程式210若寫入到磁區(512位元組)邊界上,較佳於效能。如果該位址不開始於一磁區邊界上或該資料不結束於一磁區邊界上,則控制器224自快閃記憶體226讀取該舊磁區,合併該新資料與該舊資料,並寫入該所產生磁區資料至快閃記憶體226。
SSD 220能夠處理多重執行緒及寫入至不同位址。對於一讀取動作,控制器224只要轉換該位址成為LBA,接著按照正常HDD存取方法來存取快閃記憶體226。此與寫入動作以一類似方式使用該等暫存區。該主機處理器或許在像是一快取列之一相對小的快取粒度(cache granularity)上進行讀取動作。因為讀取非揮發性媒體具有長的等待時間,控制器224讀取整個分頁(例如,4KB)並儲存該分頁在一暫存區中。如果該應用程式請求讀取該分頁,則該第一讀取動作可需相對長的等待時間以填補該暫存區,但後續讀取動作可不需暫存區就得以完成。一旦該應用程式讀取該整個分頁,該暫存區之該部分經釋放以允許另一寫入動作或讀取動作。對於寫入動作可類似地使用一定時器,這樣如果經特定時間 量沒有存取,將導致該資料無效且該暫存區經釋放以用於其他用途。
在停電的情況中,依照用來施用該等暫存區的技術而異,經寫入至該暫存區的資料可能遺失。例如,如果該等暫存區為DRAM或eDRAM或SRAM,則一旦電力被移除資料就遺失。因此,在停電發生後,該電源供應器產生一電力提早關閉警告(EPOW)。該控制器可具備一替代能量來源,像是電池或電容器組,該替代能量來源能維持送至該控制器的電力以足夠長的時間,來使用一或更多種產業中可用之方法以挽救在停電時之重要資料。該些方法可包括當藉由替代能量來源來維持給該控制器的電力時,傾印該資料至該SSD上的一電池支持之寫入快取,或寫入該資料至該持久性媒體。
熟習本領域之人士也將注意到,如果卡故障或有軟體問題,儲存在暫存區中的寫入資料可能遺失。因此,可加入藉由SSD傳送資料至一伴隨卡(companion card)暫存區的機制。當資料被寫入持久性媒體時,在伴隨卡中的資料被無效。更簡單地,可開發一種協定,直到該寫入動作完全處理(也就是整個磁區或分頁)之前該主機不被給予成功結束狀態。該主機可在故障發生之時,以類似於如果SSD無法使用分散收集方法回應一驅動程式時該主機會重新嘗試的方式,負責重新嘗試操作。
如熟習此領域之人士所能理解,本發明能以系統、方法或電腦程式產品來實施。據此,本發明之態樣可採用完全硬體實施例、完全軟體實施例(包括韌體、常駐軟體、微 程式碼等等)或合併軟體及硬體態樣之實施例的形式,該等態樣在此全部可概略稱為「電路」、「模組」或「系統」。此外,本發明之態樣可採用電腦程式產品之形式,該電腦程式產品經實施在任一或更多個電腦可讀取媒體上,該一或更多個電腦可讀取媒體上實施有電腦可用程式碼。
可運用一或更多個電腦可讀取媒體之任意組合。該電腦可讀取媒體可為一電腦可讀取訊號媒體或一電腦可讀取儲存媒體。一電腦可讀取儲存媒體可為(例如)電子、磁性、光學、電磁、紅外線或半導體之系統、設備、裝置或以上之任何合適組合,但不限於此。電腦可讀取儲存媒體之更多特定範例(但非詳盡清單)包括以下:具有一或更多固線的電氣連接、可攜式電腦碟片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式唯讀記憶體(EPROM或快閃記憶體)、光纖、可攜式光碟唯讀記憶體(CDROM)、光學儲存裝置、磁儲存裝置,或以上之任何合適組合。在本文件的情境中,電腦可讀取儲存媒體可為任何有形媒體,該等有形媒體能包含或儲存程式,該程式係藉由指令執行系統、設備或裝置使用或連同指令執行系統、設備或裝置一起使用。
電腦可讀取訊號媒體可包括經傳播的資料訊號,該資料訊號具有電腦可讀取程式碼實施於其中,例如在基頻中或作為載波的一部分。此經傳播之訊號可具各種形式之任一種,包括電磁、光學,或任何適當的組合,但不限於此。電腦可讀取訊號媒體可為任何非為電腦可讀取儲存媒體,且能 通訊、傳播或運輸一程式的電腦可讀取媒體,該程式用於由指令執行系統、設備或裝置所使用或是與該等系統、設備或裝置相連。
實施在一電腦可讀取媒體上的計算機程式碼可使用任何合適之媒體來傳輸,該等媒體包括無線、固線、光纖纜線、射頻(RF)等等,或以上之任何合適組合,但不限於此。
用於實現本發明態樣之操作的電腦程式碼可以一或更多種程式語言的任意組合來寫成,包括例如JavaTM、SmalltalkTM、C++或該等之類似語言的物件導向程式語言,以及例如「C」程式語言及類似語言之習用程序式程式語言。程式碼可完全在使用者之電腦上執行、以一獨立套裝軟體方式而部分地在使用者之電腦上執行、部分地在使用者之電腦上而部分在遠端電腦上執行,或是完全在遠端電腦或伺服器上執行。在最後一種情況下,該遠端電腦可透過任何類型之網路連接至使用者之電腦,包括區域網路(LAN)或廣域網路(WAN),或者可連接至一外部電腦(例如,利用網際網路服務提供者而透過網際網路)。
本發明之態樣,將在以下參看按照本發明之示意性實施例的方法、設備(系統)及電腦程式產品之流程示意圖及/或方塊圖來說明。應理解該等流程示意圖及/或方塊圖的各方塊,以及該等流程示意圖及/或方塊圖中之方塊的組合,能藉由電腦程式指令來實施。該等電腦程式指令可經提供至通用電腦、特殊用途電腦、或其他可程式資料處理設備的處理器,以產生一機器,使得該等指令當經由電腦或其他可程式 資料處理設備的處理器執行時,產生用於實施在流程圖及/或方塊圖之方塊中所指定之該等功能/動作的構件。
該等電腦程式指令也可經儲存在一電腦可讀取媒體中,該電腦可讀取媒體能指引電腦、其他可程式資料處理設備、或其他裝置以特定方式運作,使得儲存在該電腦可讀取媒體中的該等指令產生一製品,該製品包括指令,該等指令實施在流程圖及/或方塊圖之方塊中所指定之該等功能/動作。
該等電腦程式指令也可被載入到電腦上、其他可程式資料處理設備上,或其他裝置上,以致使一系列操作步驟在電腦上、其他可程式資料處理設備上,或其他裝置上執行,以產生一電腦實施程序,使得在該電腦或其他可程式設備上執行的該等指令提供用於實施在流程圖及/或方塊圖之方塊中所指定之該等功能/動作的程序。
第3圖係一流程圖,說明按照一示意性實施例,用於固態磁碟機中之直接記憶體定址的固態磁碟機控制器的操作。操作開始於方塊300,而該控制器初始化暫存區並對映一記憶體位址視窗至區塊的一邏輯區塊定址(LBA)範圍(方塊301)。該主機存取該記憶體位址視窗如同該主機係在讀取及寫入至記憶體。該控制器接著轉換該記憶體位址成為LBA區塊,並於背景中、即該主機無所知之下保存在該等暫存區中的該資料至該固態磁碟機(SSD)記憶體。該控制器在一自由表中列出所有可用的暫存區。
該控制器決定是否該控制器自該主機接收一寫入請求以存取在該記憶體位址視窗內之一記憶體位址(方塊 302)。如果該控制器接收一寫入請求,該控制器決定是否該寫入請求存取與一暫存區中之一位址相接的記憶體位址(方塊303)。如果該寫入請求並不存取與一暫存區中之一位址相接的記憶體位址,則該控制器初始化一暫存區(方塊400)。以下將參看第4圖以進一步詳細說明初始化一暫存區的操作。
之後,或是如果在方塊303該寫入請求確實存取與一暫存區中之一位址相接的記憶體位址,該控制器根據該寫入請求的該記憶體位址寫入資料至該暫存區(方塊304)。以下將進一步詳細說明,當初始化一暫存區時,該控制器將該暫存區與一記憶體位址範圍及一定時器相關聯。該控制器藉由根據該記憶體位址範圍以將該寫入資料寫入至該暫存區來服務該寫入請求。
該控制器接著決定是否該寫入動作已完成(方塊305)。如果該寫入動作未完成,該控制器決定是否該暫存區已滿或至少一預先決定之百分比已滿(方塊306)。如果該暫存區未滿,操作回到方塊304以繼續寫入至該暫存區。如果在方塊306該暫存區已滿,該控制器回收該目前暫存區(方塊500),而操作回到方塊400以初始化一新暫存區。以下將參看第5圖以進一步詳細說明回收一暫存區的操作。如果在方塊305該寫入已完成,該控制器起始相關聯於該暫存區的該定時器(方塊307)。在此範例中,該定時器紀錄距離最近一次存取該暫存區的時間量。之後,操作進行至方塊315以決定是否關聯於暫存區的一定時器逾時。
如果該控制器在方塊302未接收到一寫入請求,該 控制器決定是否接收到一讀取請求以存取在該記憶體位址視窗內之一記憶體位址(方塊308)。如果該控制器接收到一讀取請求,該控制器決定是否該記憶體位址在相關聯於一暫存區的一位址範圍內(方塊309)。如果該記憶體位址不關聯於一暫存區,該控制器初始化一暫存區(方塊400)。該控制器接著按照該對映使用邏輯區塊定址自該SSD記憶體讀取一分頁(方塊310)並在該暫存區中儲存該分頁(方塊311)。
之後,或如果該記憶體位址係在相關聯於一暫存區之位址範圍中,該控制器自該暫存區傳回資料(方塊312)並起始相關聯於該暫存區之該定時器(方塊313)。該控制器接著決定是否該讀取存取完成自該暫存區讀取該完整分頁(方塊314)。如果該讀取存取完成讀取該分頁,該控制器回收該暫存區(方塊500)。之後,或如果在方塊314該讀取存取完成自該暫存區讀取該完整分頁,操作進行至方塊315以決定是否相關聯於一暫存區的一定時器逾時。
回應於在方塊308該控制器未接收到一讀取請求,該控制器在方塊315決定是否相關聯於一暫存區的一定時器逾時。如果相關聯於一暫存區的一定時器逾時,該控制器回收該暫存區(方塊500)。之後,或如果在方塊315該控制器決定沒有相關聯於一暫存區的定時器逾時,操作回到方塊302以決定是否該控制器接收到一讀取請求。
第4圖係一流程圖,說明按照一示意性實施例,用於初始化暫存區之固態磁碟機控制器的操作。操作開始於方塊400,而該控制器決定是否有一暫存區可用(方塊401)。 該控制器藉由檢查一自由表決定是否有一暫存區可用。如果該自由表非空白,則有一暫存區可用,而該控制器自該自由表移除一暫存區(方塊402)。該控制器接著將該暫存區與一記憶體位址範圍相關聯(方塊403)及設定與該暫存區相關聯的一定時器(方塊404)。在使須執行讀取-修改-寫入動作或多重讀取動作以服務一主機請求的次數最小化,相對於在釋放暫存區之同時主機停止操作之間,定時器數值可經初始化以取得理想值。之後,操作結束於方塊405。
如果該控制器在方塊401決定沒有暫存區可用,也就是該自由表為空白,則該控制器識別一最近最少使用(LRU)暫存區(方塊406)並回收該暫存區(方塊500)。在該所描繪範例中,該LRU暫存區係具有最接近逾時之定時器的暫存區。接著,該控制器自該自由表移除一暫存區(方塊402),將該暫存區與一記憶體位址範圍相關聯(方塊403),及設定與該暫存區相關聯的一定時器(方塊404)。之後,操作結束於方塊405。
第5圖係一流程圖,說明按照一示意性實施例,用於回收暫存區之控制器的操作。操作開始於方塊500,而該控制器按照該對映將在暫存區中的資料保存至該固態磁碟機記憶體中的一邏輯區塊定址(LBA)範圍(方塊501)。該控制器接著使該暫存區中的該資料無效(方塊502),傳回該暫存區至該自由表(方塊503),及重設用於該暫存區之該定時器(方塊504)。之後,操作結束於方塊505。
第6圖係一流程圖,說明按照一示意性實施例,用 於自暫存區保存資料至固態磁碟機記憶體之固態控制器的操作。操作開始於當該控制器在方塊600接收到一寫入動作,該控制器根據該對映決定該寫入動作是否開始於一磁區邊界上(方塊601)。如果該控制器根據該對映決定該寫入動作不開始於一磁區或分頁邊界上,該控制器自該持久性媒體讀取該磁區或分頁(方塊602)並合併該資料至該暫存區(方塊603)。該控制器接著繼續寫入至該暫存區(方塊604)。操作結束於方塊605,而如以上參看第3圖所說明,回應於該暫存區已滿或關聯於該暫存區之該定時器逾時,則該控制器回收該暫存區。
如果該寫入動作開始於一磁區邊界上,該控制器將資料寫入至一暫存區(方塊605)。其後,操作結束於方塊605,而如以上參看第3圖所說明,回應於該暫存區已滿或關聯於該暫存區之該定時器逾時,則該控制器回收該暫存區。
第7圖係一流程圖,說明按照一示意性實施例,用於轉換資料成為邏輯區塊定址,以及將區塊寫入至固態磁碟機之控制器的操作,該固態磁碟機經配置以用於分帶。該等暫存區已經可以藉由定時器逾時及讀取-修改-寫入動作被寫入,或是完全寫滿後被傳遞至某種寫入快取記憶體或合併記憶體(coalescing memory),或該控制器能直接使用該等暫存區。對於一既定寫入至經配置用於RAID 5之LUN的操作,開始於方塊700,而該控制器轉換該寫入位址成為一LBA位址(方塊701)。該控制器決定是否該資料少於一分帶(方塊702)。如果在方塊702該資料少於一分帶,該控制器自該SSD 記憶體讀取舊資料及舊同位數(方塊703)。該控制器合併該資料與該舊分帶(方塊704)。接著,該控制器決定用於該分帶的一新同位數(方塊705)及將該新資料及新同位數寫入至SSD記憶體中的LBA區塊(方塊706),而操作結束於方塊707。如果在方塊702該資料不少於一分帶,該控制器決定用於該資料的一同位數(方塊705)及將該資料及同位數寫入至SSD記憶體中的LBA區塊(方塊706),而操作結束於方塊707。
能看出本發明能延伸至其他類型之RAID,例如具備Reed Solomon碼的RAID 6或RAID 10或任何RAID碼。事實上,一旦暫存區已滿,接著該資料被傳送至一寫入快取記憶體或其他分級區(staging area),並以類似經由正常分散收集(scatter gather)存取方法所存取之資料而經處理。
第8圖係一流程圖,說明按照一示意性實施例,用於儲存在一伴隨卡暫存區之控制器的運作。操作開始於方塊800,接著該控制器決定是否自一軟體應用程式接收到寫入請求(方塊801)。如果該控制器接收到寫入請求,該控制器儲存該寫入資料在一或更多記憶體暫存區中(方塊802)。如上所述,由於該控制器儲存寫入資料在揮發性記憶體暫存區中,如果該控制器因電力故障或軟體問題而故障,該資料有遺失的風險。因此,該控制器將該資料的一複本儲存在一伴隨卡或控制器的暫存區中(方塊803)。
此後,或回應於決定在方塊801中該控制器未接收到寫入請求,該控制器決定是否保存該寫入資料至非揮發性 儲存器(方塊804)。如果該控制器決定該寫入資料未經保存,則操作回到方塊801以決定該控制器是否接收到另一寫入請求。如果該控制器在方塊804決定該寫入資料已經保存,該控制器使在伴隨卡中的複本無效(方塊805),而操作結束於方塊806。
第9圖係一流程圖,說明按照一示意性實施例,用於處理一電力事件之控制器的運作。操作開始於方塊900,接著該控制器決定是否接收到一提早電力關閉警告(EPOW)(方塊901)。提早電力關閉警告可由電源供應器發出以回應於(例如)偵測到可能之電力故障。如果該控制器未接收到EPOW,操作回到方塊901直到接收到EPOW。如果在方塊901中該控制器接收到EPOW,該控制器自該暫存區記憶體傾印寫入資料至電池支持之寫入快取或持久性儲存(方塊902)。之後,操作結束於方塊903。
圖式中之流程圖及方塊圖說明依照本發明之不同實施例的系統、方法及電腦程式產品的可能實例的架構、功能性及操作。在此方面,在流程圖或方塊圖中的各方塊可代表一個模組、區段或部分程式碼,該等程式碼包含用於實現該指定邏輯功能的一或更多可執行指令。亦應留意,在某些替代性實例中,方塊中所註明之功能可不以圖式中之順序發生。例如,連續出現之兩方塊,事實上可大致同步地執行,或是依所牽涉之功能性而定,該兩方塊有時可以相反順序執行。亦應留意方塊圖及/或流程圖之各方塊,以及方塊圖及/或流程示意圖之方塊的組合,能藉由執行指定之功能或動作 的特殊用途硬體式系統、或是特殊用途之硬體及電腦指令的組合來實現。
因此,該等示意性實施例提供一種用於固態磁碟機之直接記憶體定址的機制。該機制提供在固態磁碟機內自記憶體定址至磁區定址的轉換。該機制初始化該固態磁碟機使具有一位址視窗,該位址視窗可由軟體存取。該軟體直接將資料區塊寫入至該記憶體存取視窗,因此在未使用裝置驅動程式下直接寫入至該固態磁碟機。該固態磁碟機包括複數個記憶體暫存區。該機制將由軟體寫入之區塊寫入至該等記憶體暫存區,轉換該等區塊成為該固態磁碟機中的磁區,並寫入該等磁區至該固態磁碟機。
如上所述,應理解該等示意性實施例可採取全硬體實施例、全軟體實施例或同時含有硬體及軟體元件之實施例的形式。在一範例實施例中,該等示意性實施例之機制經實現於軟體或程式碼中,該等軟體或程式碼包括韌體、常駐軟體、微程式碼等等,但不限於此。
適合用於儲存及/或執行程式碼的資料處理系統將包括至少一個處理器,該處理器透過系統匯流排直接地或間接地耦合至記憶體元件。該等記憶體元件能包括在該程式碼實際執行期間所採用之區域記憶體、大量儲存器,及快取記憶體,該快取記憶體提供至少某些程式碼的暫時儲存器,以減少在執行期間程式碼必須自大量儲存器擷取出來的次數。
輸入/輸出或I/O裝置(包括鍵盤、顯示器、指向裝置等等,但不限於此)能直接或透過居間之I/O控制器而經耦 合至該系統。網路配接器也可經耦合至該系統,以致使該資料處理系統透過居間之私人或公共網路,成為耦合至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網路卡只是現今可用之網路配接器類型的其中數種。
在此提出之本發明的說明目的在於示意及解釋,並未意圖詳盡或限制本發明於所揭露之形式。對於熟習本領域之技術的人士,許多修改及變化顯而易見。該等實施例之選擇及敘述,係為最佳地解釋本發明之原則、實際之應用、以及致使本領域具通常知識者了解本發明在不同修改之下用於不同實施例所適於之特定示範用途。
210‧‧‧應用程式
222‧‧‧DRAM暫存區
220‧‧‧固態磁碟機(SSD)
226‧‧‧快閃記憶體
224‧‧‧控制器
234‧‧‧定時器
232‧‧‧自由表

Claims (15)

  1. 一種用於在一儲存裝置中之直接記憶體存取的方法,該方法包含以下步驟:執行一記憶體位址視窗至該儲存裝置之一邏輯區塊定址(LBA)範圍的一對映;回應於自一主機接收一寫入請求,該寫入請求指定在該記憶體位址視窗中的一寫入位址,初始化在該儲存裝置中之一第一記憶體暫存區;將該第一記憶體暫存區與在該記憶體位址視窗內之一第一位址範圍相關聯,使得該寫入請求之該寫入位址係在該第一位址範圍內;根據該寫入位址,寫入至該第一記憶體暫存區;及回應於該第一記憶體暫存區已滿,根據該對映使用邏輯區塊定址保存該第一記憶體暫存區之內容至該儲存裝置。
  2. 如請求項1所述之方法,進一步包含以下步驟:將該第一記憶體暫存區與一第一定時器相關聯;回應於寫入至該第一記憶體暫存區,重新開始該第一定時器;及回應於偵測到該第一定時器逾時,保存該第一記憶體暫存區之內容至該儲存裝置。
  3. 如請求項1所述之方法,進一步包含以下步驟:回應於自該主機接收一讀取請求,該讀取請求指定在該 記憶體位址視窗中的一讀取位址,決定是否該讀取位址在該儲存裝置中之一既定記憶體暫存區的一位址範圍內;及回應於決定該讀取位址係在一既定記憶體暫存區的一位址範圍內,自該既定記憶體暫存區讀取。
  4. 如請求項3所述之方法,進一步包含以下步驟:回應於決定該讀取位址不在一既定記憶體暫存區的一位址範圍內,初始化在該儲存裝置中之一第二記憶體暫存區;將該第二記憶體暫存區與在該記憶體位址視窗內之一第二位址範圍相關聯,使得該讀取請求之該讀取位址係在該第二位址範圍內;使用邏輯區塊定址自該儲存裝置讀取一部分資料至該第二記憶體暫存區;及根據該讀取位址自該第二記憶體暫存區執行一讀取操作。
  5. 如請求項3所述之方法,進一步包含以下步驟:保持在該儲存裝置中之可用記憶體暫存區的一自由表;將該第二記憶體暫存區與一第二定時器相關聯;回應於讀取自該第二記憶體暫存區,重新開始該第二定時器;及回應於偵測到該第二定時器逾時,傳回該第二記憶體暫存區至該自由表。
  6. 如請求項1所述之方法,進一步包含以下步驟:保持在該儲存裝置中之可用記憶體暫存區的一自由表;回應於保存該第一記憶體暫存區之內容的該步驟,使該第一記憶體暫存區之內容無效;傳回該第一記憶體暫存區至該自由表;及重設該第一定時器。
  7. 如請求項1所述之方法,其中保存該第一記憶體暫存區之內容的該步驟包含根據該對映使用邏輯區塊定址執行一讀取-修改-寫入操作。
  8. 如請求項1所述之方法,其中保存該第一記憶體暫存區之內容之該步驟包含:回應於決定該第一位址範圍所對映至之一邏輯區塊位址不開始於一磁區邊界上或用於該寫入之資料不結束於一磁區或分頁邊界上,自該儲存裝置讀取位於該第一位址範圍所對映至之該邏輯區塊位址之一磁區或分頁,合併來自該第一記憶體暫存區之資料與該磁區或分頁以形成一新磁區或分頁,及將該新磁區或分頁寫入至該儲存裝置;或回應於決定該第一位址範圍所對映至之一邏輯區塊位址係經配置以分帶(striping)且用於該寫入請求之資料少於一分帶,自該儲存裝置讀取位於該第一位址範圍所對映至之該邏輯區塊位址之一分帶,合併來自該第一記憶體暫存區之資料與該分帶以形成一新分帶,決定用於該新分帶之 一新同位數(parity),及將該新分帶連同該新同位數寫入至該儲存裝置。
  9. 如請求項1所述之方法,其中寫入至該第一記憶體暫存區之該步驟包含:將該寫入請求之資料的一複本寫入至在一伴隨儲存裝置中之一記憶體暫存區。
  10. 如請求項1所述之方法,進一步包含以下步驟:回應於接收一提早電力關閉警告,傾印該第一記憶體暫存區之內容至一電池支持(battery backed)快取。
  11. 一種電腦程式產品,該電腦程式產品包含一電腦可讀取儲存媒體,該電腦可讀取儲存媒體具有一電腦可讀取程式儲存其中,其中該電腦可讀取程式當在一儲存裝置中之一控制器上執行時,致使該控制器執行如請求項1至10之任一者所述之方法。
  12. 如請求項11所述之電腦程式產品,其中該儲存裝置包含一固態磁碟機。
  13. 如請求項11所述之電腦程式產品,其中該儲存裝置包含一快速週邊組件互連(PCI)卡,該快速PCI卡包含一快閃記憶體控制器,或 其中該儲存裝置包含一獨立磁碟冗餘陣列(RAID)控制器,該RAID控制器具有複數個固態磁碟機或複數個快速PCI卡,該等複數個固態磁碟機或該等複數個快速PCI卡連接至該RAID控制器。
  14. 如請求項11所述之電腦程式產品,其中該電腦可讀取程式係經儲存在一資料處理系統中之一電腦可讀取儲存媒體中,且其中該電腦可讀取程式係自一遠端資料處理系統經由一網路所下載,或其中該電腦可讀取程式係經儲存在一伺服器資料處理系統中之一電腦可讀取儲存媒體中,且其中該電腦可讀取程式係經由一網路下載至一遠端資料處理系統中以用於該遠端資料處理系統之一電腦可讀取儲存媒體。
  15. 一種固態磁碟機,包含:複數個記憶體暫存區;一固態記憶體;及一控制器,其中該控制器經配置以執行如請求項1至10之任一者所述之方法。
TW101132033A 2011-09-30 2012-09-03 直接記憶體存取的方法及其固態磁碟機、電腦程式產品 TWI515565B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/250,343 US8635407B2 (en) 2011-09-30 2011-09-30 Direct memory address for solid-state drives

Publications (2)

Publication Number Publication Date
TW201333699A TW201333699A (zh) 2013-08-16
TWI515565B true TWI515565B (zh) 2016-01-01

Family

ID=47137384

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101132033A TWI515565B (zh) 2011-09-30 2012-09-03 直接記憶體存取的方法及其固態磁碟機、電腦程式產品

Country Status (5)

Country Link
US (2) US8635407B2 (zh)
CN (1) CN103034590B (zh)
DE (1) DE102012216034B4 (zh)
GB (1) GB2495188B (zh)
TW (1) TWI515565B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425438B (zh) * 2013-07-15 2016-08-10 记忆科技(深圳)有限公司 优化固态硬盘写请求的方法及其固态硬盘
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
WO2015116173A2 (en) 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Unifying memory controller
KR102214511B1 (ko) 2014-02-17 2021-02-09 삼성전자 주식회사 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법
JP6142860B2 (ja) * 2014-11-05 2017-06-07 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
US9921750B2 (en) * 2014-11-20 2018-03-20 Samsung Electronics Co., Ltd. Solid state drive (SSD) memory cache occupancy prediction
US10359941B1 (en) * 2014-12-22 2019-07-23 Emc Corporation Multi-tier data storage using burst buffer appliance for workload transformation based on performance characteristics of at least one tier
CA2938242C (en) 2015-12-03 2017-10-31 Huawei Technologies Co., Ltd. Array controller, solid state disk, and method for controlling solid state disk to write data
US9965419B1 (en) * 2016-02-04 2018-05-08 Ampere Computing Llc Multiple-queue integer coalescing mapping algorithm with shared based time
US10255213B1 (en) * 2016-03-28 2019-04-09 Amazon Technologies, Inc. Adapter device for large address spaces
EP3920018B1 (en) * 2016-10-04 2024-04-10 Pure Storage, Inc. Optimizing data storage using non-volatile random access memory of a storage system
KR20180041037A (ko) * 2016-10-13 2018-04-23 삼성전자주식회사 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
US20180210846A1 (en) * 2017-01-25 2018-07-26 Hewlett Packard Enterprise Development Lp Files access from a nvm to external devices through an external ram
TWI645286B (zh) * 2017-08-31 2018-12-21 慧榮科技股份有限公司 記憶體控制裝置和方法
US11137919B2 (en) * 2017-10-30 2021-10-05 Arm Ltd. Initialisation of a storage device
US10884662B2 (en) * 2018-08-06 2021-01-05 Silicon Motion, Inc. Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server
US10838661B1 (en) 2019-04-29 2020-11-17 Western Digital Technologies, Inc. Fast storage class memory using write once memory coding
CN113326212B (zh) * 2020-02-28 2023-11-03 加特兰微电子科技(上海)有限公司 数据处理方法、装置及相关设备
CN111625188B (zh) * 2020-05-19 2023-08-08 合肥康芯威存储技术有限公司 一种存储器及其数据写入方法与存储系统
CN112083881B (zh) * 2020-08-24 2022-10-18 云南财经大学 一种基于持久化内存的一体化天文数据采集与存储系统
CN112540732B (zh) * 2020-12-23 2022-11-11 展讯半导体(成都)有限公司 数据处理方法及相关产品
CN116745744A (zh) * 2021-04-30 2023-09-12 华为技术有限公司 应用于固态硬盘的存储方法及存储控制器
US12032483B2 (en) 2022-04-11 2024-07-09 Samsung Electronics Co., Ltd. Systems and methods for pre-populating address translation cache

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173385B1 (en) 1993-11-19 2001-01-09 Disk Emulation Systems, Inc. Address generator for solid state disk drive
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
TW504694B (en) 2000-01-12 2002-10-01 Hitachi Ltd Non-volatile semiconductor memory device and semiconductor disk device
US7200696B2 (en) 2001-04-06 2007-04-03 International Business Machines Corporation System method structure in network processor that indicates last data buffer of frame packet by last flag bit that is either in first or second position
TW556077B (en) 2001-06-05 2003-10-01 Via Tech Inc Controller for improving buffer management efficiency and the buffer management method
US6892267B2 (en) 2002-04-15 2005-05-10 Relax Technology, Inc. Method for message transmission exploiting unused device addresses
ATE438915T1 (de) 2004-01-19 2009-08-15 Trek 2000 Int Ltd Tragbare datenspeichereinrichtung mit einer speicheradressen-abbildungstabelle
US8060670B2 (en) 2004-03-17 2011-11-15 Super Talent Electronics, Inc. Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device
US7447831B2 (en) 2006-05-18 2008-11-04 International Business Machines Corporation Memory systems for automated computing machinery
US8489817B2 (en) * 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
KR100794312B1 (ko) 2006-12-27 2008-01-11 삼성전자주식회사 명령어 자동 처리 유니트를 포함한 메모리 컨트롤러 및그를 포함한 메모리 시스템
US7564722B2 (en) 2007-01-22 2009-07-21 Micron Technology, Inc. Memory system and method having volatile and non-volatile memory devices at same hierarchical level
TW200841355A (en) 2007-04-03 2008-10-16 Apacer Technology Inc Two-dimensional writing data method for flash memory and the corresponding storage device
JP2009003569A (ja) 2007-06-19 2009-01-08 Toshiba Corp 半導体記憶装置
CN100511122C (zh) 2007-10-19 2009-07-08 华为技术有限公司 固态硬盘控制器电路及固态硬盘
US7978516B2 (en) 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8068365B2 (en) 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
US20090222613A1 (en) 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100057976A1 (en) 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
JP2012511789A (ja) 2008-12-09 2012-05-24 ラムバス・インコーポレーテッド 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス
KR101581679B1 (ko) 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법

Also Published As

Publication number Publication date
GB2495188A (en) 2013-04-03
GB2495188B (en) 2013-08-14
DE102012216034B4 (de) 2021-11-25
US8683131B2 (en) 2014-03-25
GB201216336D0 (en) 2012-10-24
TW201333699A (zh) 2013-08-16
CN103034590A (zh) 2013-04-10
US8635407B2 (en) 2014-01-21
US20130086301A1 (en) 2013-04-04
DE102012216034A1 (de) 2013-04-04
DE102012216034A8 (de) 2013-06-06
US20130191594A1 (en) 2013-07-25
CN103034590B (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
TWI515565B (zh) 直接記憶體存取的方法及其固態磁碟機、電腦程式產品
US10360156B2 (en) Data storage device using host memory and method of operating same
CN107632939B (zh) 用于存储装置的映射表
US10013307B1 (en) Systems and methods for data storage devices to use external resources
KR101480659B1 (ko) 2-레벨 시스템 메인 메모리
US20170206172A1 (en) Tehcniques with os- and application- transparent memory compression
KR100881187B1 (ko) 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
US20170206033A1 (en) Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
US9558108B2 (en) Half block management for flash storage devices
US9798673B2 (en) Paging enablement of storage translation metadata
US9372741B2 (en) Data storage device and operating method thereof
Song et al. Efficient memory-mapped I/O on fast storage device
US20220229722A1 (en) Method and apparatus to improve performance of a redundant array of independent disks that includes zoned namespaces drives
US20150134886A1 (en) Data storage device
TW202101227A (zh) 閃存實體資源集合管理裝置及方法以及電腦程式產品
US9921913B2 (en) Flushing host cache data before rebuilding degraded redundant virtual disk
JP2021533467A (ja) 論理対物理テーブルフラグメント
TW202318205A (zh) 記憶體系統及資料輸入輸出系統
JP2021149374A (ja) データ処理装置
US20190205052A1 (en) Efficient metadata storage for a non-volatile storage device
US11144380B2 (en) Memory controller and storage device including the same
US20220318091A1 (en) Storage system and operating method thereof
US20220382478A1 (en) Systems, methods, and apparatus for page migration in memory systems

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees