TWI420307B - 固態儲存裝置之最佳化配置策略 - Google Patents
固態儲存裝置之最佳化配置策略 Download PDFInfo
- Publication number
- TWI420307B TWI420307B TW096119243A TW96119243A TWI420307B TW I420307 B TWI420307 B TW I420307B TW 096119243 A TW096119243 A TW 096119243A TW 96119243 A TW96119243 A TW 96119243A TW I420307 B TWI420307 B TW I420307B
- Authority
- TW
- Taiwan
- Prior art keywords
- flash
- data
- bus
- idle
- devices
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明係關於電腦資料儲存系統。具體而言,本發明係關於一種將來自主機系統(host system)之所有邏輯位址映射(mapping)至資料儲存裝置之實體位址的系統及方法,用以改善主電腦資料存取效能(host computer data access performance)。
隨著快閃(flash)裝置日漸便宜,以固態為基礎的硬碟(hard drive)則日漸普遍以作為傳統機械式硬碟(mechanical hard drive)的代替品。由於有許多的可動部件(moving part)(電動馬達、橫軸(spindle shaft)、讀取/寫入頭、以及磁性轉盤),機械式硬碟在以快閃記憶體為基礎的磁碟機中之看不見的區域裡會有問題。尤其是當遭受到振動和衝撞時,這會導致可靠性的問題。不僅如此,當從機械式磁碟機的不同區域提取(fetching)資料時,也會導致緩慢的存取時間。
因為以快閃記憶體為基礎的磁碟機通常並不具有可動部件,故其能容易地抵擋會在正常的機械式磁碟機中導致錯誤之惡劣的環境條件及實體的處理錯誤。並且,對快閃裝置的存取不會遭受到和轉盤磁碟機(rotating drive)一樣的問題,其中該轉盤磁碟機若存取彼此實際上相隔遙遠的資料,則增加了存取時間(因為需要讀取頭的移動)。
然而,亦有數個與在轉盤磁碟機上使用以快閃為基礎
的磁碟機相關聯的問題。當快閃裝置不在抹除狀態時,快閃裝置不能被寫入。在快閃裝置被寫入後,將該快閃裝置帶回至其抹除狀態的唯一方法是將被稱為抹除區塊(或僅稱為快閃區塊)之快閃的較大區塊予以抹除,其中該抹除區塊或快閃區塊係能被抹除的最小資料量。典型的快閃技術(尤其是NAND快閃)不允許個別的位元組從程式化狀態對換(toggling)回其抹除狀態。那意味著當主機透過邏輯區塊位址(logical block address)或LBA請求改變現存之扇區(sector)時,包含此資料之快閃實體區塊位置(flash physical block position)(透過實體區塊位址或PBA而定址)必須在欲寫入新資料之前先被抹除。考慮到抹除操作通常要比寫入或讀取操作花更久的時間,這會大大地影響該系統的效能。為避免此種效能下降,應用程式(application)通常不會把新資料放在舊的實體位置,而是找新的實體位置(已經被抹除的)並再定位(relocate)該邏輯扇區至新的實體位置而因此跳過抹除操作。然後會在暗中抹除舊的區塊。由於主機係以典型的轉盤磁碟機來設計,故主機會知道扇區是“在適當的地方寫入”而不會再定位到不同的位置,所以不同的層需要去掌控發生在以快閃為基礎之磁碟機內所發生的動態改變。某些實作會在檔案系統上這麼作,其中稱為“快閃轉譯層(flash translation layer)”的新層係操縱映射的層,而其他實作會在實際的快閃控制器本身這麼作,使得主機將絕不會察覺到差異。
快閃記憶體裝置之另一獨特特性係其在經過一定量的
抹除週期(典型為100,000個週期)時會傾向於磨損。此種磨損會導致不良區塊(bad block)並因此需要某種不良區塊管理來處理此情形。為避免某記憶體區塊之退化情形遠快於其他區塊,需要均衡磨損機制(wear-leveling mechanism)來確保各區塊是均等地磨損。
目前的以快閃為基礎之系統已滿足了在檔案系統等級(level)或是內嵌於實際的快閃控制器中的這些問題,然而,它們大部分係針對單一快閃裝置或僅是小型陣列之快閃裝置。為使以快閃為基礎的磁碟機取代轉盤磁碟機的市場佔有率,應該要能匹配這些磁碟機的容量。為達此目的,有必要在板中產生具有數個快閃陣列的系統並將這些板堆疊以獲得高容量之固態硬碟。為增加效能,系統能允許並列存取這些快閃陣列並亦能得利於新的快閃裝置特徵,例如,多庫(multi-bank)(有時稱為多平面(multi-plane))及拷貝回存(copy-back)。針對新實體位置選擇快閃區塊、不良區塊之替代(replacement)、或均衡磨損之現有方法並不太注意哪裡取得此等區塊,而僅以循環(round robin)方式來分配存取。有了以快閃為基礎的系統藉由正確地選擇目標區塊而容許明顯的效能增加,具有良好的映射方案(mapping scheme)來利用這些特徵是重要的。
在本發明之一個實施例中,重映射表(remap table),有時稱為LBA-PBA映射表,係用以從主機系統將所有邏輯位址映射到儲存有資料的實際實體位址。這些實體位置
之分配係以系統之負載為平均地分配給其可用資源的方式來完成。這會確保儲存系統將適當地利用其資源而以其最高效率運行。為達此目的,系統會確認資料之實體位置係根據該系統之目前負載而平均地分配。
第1圖係根據本發明之實施例顯示容納極大數目之快閃陣列以實現大容量的例示架構。該系統包括一些快閃DMA(或直接記憶體存取(Direct Memory Access))引擎(FDE)101。快閃DMA引擎(FDE)基本上係促進高速資料傳輸至/自一群快閃記憶體裝置的智慧型DMA控制器。該系統亦含有一組快閃匯流排102,快閃匯流排102係由該FDE所使用之用以連接至該等快閃記憶體裝置之匯流排介面。為增加容量,可增加一些擴充板(expansion board),在此也稱為快閃陣列板,103。擴充板主要係記憶板,該記憶板由用於額外儲存之一大片(a pool of)的快閃記憶體裝置和用於與該快閃DMA引擎溝通的快閃緩衝控制器104所構成。該快閃緩衝控制器係驅動該快閃匯流排並將來自該等FDE的命令信號轉譯為能被該目標快閃晶片(target flash chip)了解之本機快閃命令(native flash command)的控制器。根據系統所需的效能、成本和儲存容量,可以增加/減少匯流排/引擎的數目。
快閃陣列組織包括在一組快閃匯流排上控制多個快閃裝置的一組快閃DMA引擎。指派給特定快閃匯流排的該組快閃裝置係稱為“快閃陣列庫(flash array bank)”。各庫
均可被分成任何數目個具有共享快閃匯流排之快閃DMA引擎的快閃陣列庫。例如在第1圖中,係顯示有一群n個快閃DMA引擎(例如群105)共享單一快閃匯流排0 106。
各快閃DMA引擎係被指派以控制一組快閃裝置。此組快閃裝置係屬於快閃陣列庫交錯(interleave)。此外,在此交錯內的各快閃裝置係屬於不同的快閃群。從第1圖中,在快閃陣列庫交錯107內標示為“A0”的所有快閃晶片均由快閃DMA引擎A0所控制,而在此交錯內之各快閃裝置均屬於不同的群。例如,該第一快閃裝置A0 108屬於群0,第二快閃裝置A0 109屬於群1、等等。
為最佳化對此極大陣列的快閃裝置的存取,一些操作係以並列方式完成。在此系統中,有三(3)種交錯的方法可輕易地被支援,該三種交錯的方法分別為匯流排交錯、快閃陣列庫交錯、和群交錯。匯流排交錯係利用不同的快閃匯流排傳輸資料至/自快閃裝置。另一方面,快閃陣列庫交錯方法係傳輸資料至/自屬於相同匯流排但在不同快閃DMA引擎內的快閃裝置。最後,群交錯係由特定快閃DMA引擎傳輸資料至/自該快閃DMA引擎所控制之不同的快閃裝置。
實作匯流排交錯方法之主要優點係利用不同的匯流排(亦即,快閃匯流排0、快閃匯流排1、快閃匯流排2、等等)而並列完成快閃存取。各快閃DMA引擎均使用不同的快閃匯流排以達成並列操作。快閃陣列庫交錯藉由利用活動中之快閃匯流排的忙碌信號狀態而在快閃存取期間內具
有並列操作。舉例來說,一個引擎(FDE A0(其中FDE代表快閃DMA引擎),術語FDE和DMA引擎在此文件中係交互地使用)正將資料寫入至快閃裝置(快閃裝置A0),同時FDE A0正等待命令完成,不同的庫交錯的其他FDE(例如FDE A1)可存取快閃匯流排0並發送命令給不同的目標快閃裝置(例如快閃裝置A1)。因此,群交錯藉由令特定FDE發送多個命令給該FDE所控制的不同的快閃裝置而執行並列操作。舉例來說,一個引擎(FDE A0)將命令發送給群0之快閃裝置A0。當FDE A0正在等待命令被完成且快閃匯流排係暫時閒置(idle)時,FDE A0可發送另一命令給在另一群中之快閃裝置(例如,群1中之快閃裝置A0),以達成資料傳輸的最佳化。
由此,能看出若快閃裝置之存取係先利用不同的快閃匯流排(匯流排交錯)、然後利用不同的快閃DMA引擎(快閃陣列庫交錯)、而最後才利用不同的群(群交錯),則資料傳輸係最有效率的。新快閃裝置的另一特徵係其多庫容量。單一快閃裝置係次分(sub-divided)成四(4)個並列操作可發生於其中之庫。在多庫操作中,FDE可在目標快閃裝置中挑出多達四(4)個不同的區塊,而且多達四(4)個區塊可利用單一請求而被抹除及/或程式化。
為利用此並列操作之優點,必須產生考慮到所有這些能力的映射方案。為減小LBA-PBA映射表之大小,係將區段(section)大小定義為最小可再定位(relocatable)之區域。假設LBA大小為512個位元組且區段大小為4KB,則
每八(8)個LBA僅需要一個登錄(entry)。區段大小主要係由快閃裝置之本機頁(native page)的大小所限制。頁係小於用於抹除快閃區塊中資料之最小抹除尺寸。在所示的範例中,使用的最小抹除尺寸係等同於快閃區塊尺寸。快閃區塊係由多個頁所構成。因為NAND快閃係通常以每個頁為基礎來進行程式化,所以總是為多個此頁的大小。由於區段大小為最小可再定位區,當僅有五(5)個LBA更新時,其他三(3)個LBA必須連同新資料一起被再定位。較小的區段會因此導致更有彈性但卻導致更大的負擔(overhead),以維持LBA-PBA映射。雖然大區段可能會因為需要再定位未修改之資料而遭遇問題,但典型的OS(或作業系統)通常以較大的區塊(例如4KB)來存取媒體。區段大小的選擇大多端看主機如何存取媒體來決定。主機存取得越大,則越可接受使用大的區段大小來最小化LBA-PBA映射,進而免除遭受到需要再定位未修改之資料的問題。有了用於轉盤磁碟機之應用程式傾向於最佳化後續之存取的概念,如第1圖所示之此系統應借利於此並最佳化後續的存取。因此,例示的理想佈局係顯示於第2圖中。
第2圖係根據本發明之實施例之資料區段的實體佈局的樣本。為了說明的目的,如第2圖所示之系統具有十六(16)個DMA引擎,其中兩(2)個引擎共享匯流排。各引擎亦控制兩(2)個快閃裝置,總共有三十二(32)個快閃裝置。在此範例中,區段係由八(8)個LBA所構成。如第2圖中所看到的,連續的區段係分配在利用匯流排交錯、然後引
擎交錯、然後群交錯的整個快閃陣列中。以此方法,當主機請求LBA 0-23時,等同於區段0至2(顯示為元件201),該等請求會利用匯流排0,1,2(顯示為元件203)來通過FDE 0,2,4(顯示為元件202)。二十四(24)個LBA等同於三(3)個區段。此種佈局對後續存取而言是理想的。此種佈局之所以理想是因為映射能夠得利於系統所提供的匯流排交錯(然後庫交錯以及群交錯)。所以每當主機連續地存取資料時,該映射確保系統將以最有效率或並列的方式(利用匯流排交錯、然後庫交錯、以及然後群交錯)來提取資料。但如前所述,由於快閃裝置在寫入新資料前需要抹除週期的本身特性,寫入操作將使得資料被再定位至先前已抹除過的新位置(用以節省抹除週期)。
第3圖係根據本發明之實施例用於第2圖所示之佈局的LBA-PBA映射表。第3圖顯示LBA-PBA映射表基於第2圖之佈局會看起來是如何。區段係由一群LBA所構成。在此範例中,區段(對應於該表中之列)係由八(8)個LBA所構成。在此所儲存之PBA含有快閃裝置之位置和快閃裝置內之位址兩者的資訊,其中快閃裝置之位置係獨特地利用其引擎號碼(增加匯流排號碼係用以說明匯流排交錯,但各引擎係與僅僅一個匯流排相關聯)和群號碼來識別。從第2圖中,Dev0之第一實體區段係標示為區段0、Dev1之第一實體區段係標示為區段8…、Dev0之第二實體區段係標示為區段32、等等。對應地,在第3圖中,區段0 301係位在Dev 0處,該區段0 301具有唯一的匯流排0、引擎0、
群0並且是在該快閃裝置內的位址0。區段1 302係位在Dev 2處,該區段1 302具有唯一的匯流排1、引擎2、群0並且是在該快閃裝置內的位址0。區段61 303係位在Dev 27處,該區段61 303具有唯一的匯流排5、引擎11、群1並且是在該快閃裝置內的位址0x08。假設該快閃是每512個位元組為可定址的且區段大小為4KB,則位址0x08代表快閃裝置內的第二實體區段(或第二4KB單元)、位址0x10代表第三實體區段(或第三4KB單元)、等等。512位元組可定址單元意指每個快閃位址代表512個位元組,所以位址0x00是第一512位元組、位址0x01是第二512位元組、以此類推。由此造成位址0x00至0x07代表快閃裝置的第一4KB,而位址0x08至0x0F為下一個4KB。512位元組可定址單元僅為系統的任意值,它可以是導致位址0x0000至0x0FFF代表第一4KB及位址0x1000至0x1FFF代表下一個4KB的可定址位元組。
針對不良區塊管理、均衡磨損、及最重要的寫入操作而尋找目標實體位置,映射亦扮演了重要的角色。在寫入操作中,係獲得抹除實體位置並將邏輯區塊重映射至該處以節省抹除週期,而不是將新資料寫在其舊的實體位置。決定新的實體位置係視系統之目前載入而定。如前所述,當所示之儲存系統借利於並列操作時,其係以最佳方式運行並能在給定時間執行最有利的匯流排交錯(然後引擎交錯,然後群交錯)。這意味著每當系統需要決定新的實體位置時,系統必須將這點列入考慮。當系統目前利用匯流排
0來使用FDE 0及利用匯流排1來使用FDE 2時,系統會優先尋找位在快閃裝置(具有匯流排號碼不是0或1的位址)內之實體位置以利用匯流排交錯。另一方面,若系統已利用匯流排0至7,則系統會檢查哪個特定引擎沒有被使用來利用引擎交錯(亦即,若引擎0,1,2,3,4,6,8,10,12,14在使用中,則尋找定址在引擎5,7,9,11,13,15中任一者之位置,因為那是可利用引擎交錯的位置)。
第4圖係根據本發明之實施例之具有抹除區段的實體佈局。第4圖顯示系統之分配抹除區段。當寫入請求需要新位置時,這些抹除區段將會是那些新位置。總儲存中只有少量需要被保留,此區域可結合不良區塊替代(bad block replacement)來使用。保留量視磁碟機之容量及其所遭遇之寫入請求的頻率而定。就60GB的磁碟機而言,2至3%的區域或是約1至2GB便足以有效提供如暗中抹除之舊的區塊所需求的抹除區段。閒置區段之位置僅需要被分配在系統中之所有的快閃陣列並能以任何方式分配在快閃裝置內,因為快閃內之存取時間不受其位置所影響。然而,對於提供多庫支援之快閃裝置而言,快閃裝置係被分成具有同步操作能力的不同庫。就此情形而言,所保留之預先抹除區段係被分配於快閃晶片之不同庫以利用該同步操作特徵。
為避免由於需要對每個寫入請求將資料再定位至不同的實體位置而對儲存系統無效率的存取,配置策略確保了資源被適當地利用。第5圖係根據本發明之實施例顯示當
針對資料區段發出寫入請求時,該等區段係如何被置放至其新位置的方塊圖。由於LBA 0至23的寫入請求,區段0至2(保有此資料)係從其先前位置501再定位至先前抹除的區段502。這意味著當主機讀取此資料時,其仍如之前係以並列方式提取。故,此方法不僅在寫入操作期間將增加效率,其亦能為此資料未來的讀取操作提供有效的存取。就以快閃為基礎之系統而言,最重要的事是將資料散佈到不同的快閃晶片以利用並列存取(parallel access)。起初,是針對後續存取(如第2圖所示)將磁碟機本身最佳化,但當主機發出寫入請求時,以快閃為基礎之系統便很快地採納目前的負載。配置策略會強迫所有的寫入請求平均地散佈到整個系統。散佈該等位置後,所有的連續請求會自然地傳到不同的快閃晶片。在相關的請求係一起完成的典型狀況中,因為相關的區塊可能會被散佈出去,所以亦會最佳化未來對此資料的讀取。後續佈局之最佳化情形大部分視主機如何發送其寫入請求而定。在單一過程中,由於請求係僅由一個來源所產生,故此會是最佳化的情形。在多使用者/過程的環境中,請求係來自不同來源且主機典型地對此交錯。但即使如此,雖然因為其不能與其他請求交錯而比較沒效率,配置策略仍然能夠散佈相關的區塊。
第6圖顯示當對快閃裝置進行寫入時的典型過程。基本上,每當系統需要將資料寫入至快閃陣列601時,系統首先會決定FDE之目前負載以決定FDE具有最小的寫入請求602,以考慮新資料可置放於何處。若沒有閒置區段
可利用,系統可迫使無效區塊的抹除604並決定下一個目標FDE605。若有閒置區段可利用603,系統可為該FDE取得閒置區段606。系統可更新LBA-PBA映射表以反映新位置607並排隊寫入請求608。除了決定FDE外,系統也能決定由該FDE所控制之哪個快閃裝置是最佳的。例如,若系統將請求置放於FDE 8並察覺到有對群0的請求,系統則將優先進行對群1的配置以利用多群操作。為利用新快閃裝置的多庫支援,目標區段亦能考慮到此。例如,若有針對快閃裝置4挑出庫0的請求,則能優先處理針對該快閃裝置之庫1的請求。這當然是在匯流排、引擎、群的優先順序之後。
第7圖顯示列出所有可用抹除區段的簡單方式,其中該等可用抹除區段能被引擎所利用來容易提取新位置。該方式保有實體位置701,實體位置701含有所有所需之資訊,例如FDE號碼、群位置、和在晶片內之區塊位址。此外,該方式含有區段索引702,區段索引702係在快閃區塊內之下一個閒置區段。為求簡單以及因為某些快閃晶片限制而僅能後續地程式化快閃區塊內之頁,此索引將僅從零(0)(整個快閃區塊被抹除)增量到最大索引(若區塊中有四(4)個區段者為三(3)。例如,16KB個區塊中有4KB個區段)。所以若僅需要一個區段,將僅增量索引,但若需要整個區塊,則只有具有區段0之閒置登錄能被利用。
第8圖顯示等待各快閃DMA引擎之佇列(queue)操作的樣本快照(snapshot)。當需要新的寫入請求時,配置策略
將決定優先處理什麼實體位置。最容易的方式是只要去執行循環方案(round-robin scheme),其中優先順序係以固定方式(針對群0之快閃裝置的FDE 0,2,4,...14,1,3...15,然後再針對群1的,等等)循環。這確保了所有的寫入操作已平均地分配。其缺點係在於其沒考慮到該等引擎目前正在運作的其他操作,並且可能導致某些不想要的延遲。這能藉由利用某些閾值(threshold)來解決,在該等閾值中若某引擎相對於其他引擎具有太多工作量(workload),該引擎在循環中就會被跳過。例如,若特定引擎具有比所有引擎之最小值還多五(5)個登錄,則該引擎會在循環中被跳過且下一個引擎將會被給予工作量。
第9圖顯示如何將頭兩(2)個寫入操作增加至快閃DMA引擎操作之佇列。其顯示了從各自的引擎的提取閒置區段並利用該區段用於新的寫入請求。假設沒有已完成的請求,在佇列了二十(20)個平均地分配在所有的DMA引擎之寫入請求後,該佇列可以是如同第10圖。
第11圖顯示如何管理不良區塊的流程圖。當系統偵測到不良區塊(區塊係缺陷1100)時,系統需要將其重映射至良好區塊中。為保留於首先寫入該資料時所產生之分配,目標區塊將藉由在相同快閃裝置、然後在由相同引擎所控制之不同快閃裝置、在不同引擎但相同匯流排上之快閃裝置等等查看閒置區塊(從區段=0之抹除列表)之方式而優先處理1110。系統可決定是否有閒置區段可利用1120。如果沒有閒置區段可利用,則系統可迫使無效區塊的抹除
1130並決定下一個目標位置1140。如果有閒置區段可利用,流程圖可取得閒置區塊以取代不良區塊1150並將實現更新LBA-PBA映射表以更新新位置1160。並且,若有任何資料被復原,將實現寫入新區塊1170。
為進一步散佈使用者資料而不會增加LBA-PBA映射表之大小,可利用條狀切割(striping)特徵。與區段大小所能提供者相比,條狀切割迫使在較低等級的並列存取。條狀切割有可程式化參數,一個為條(stripe)大小,而另一個為晶片交錯的數目。條大小意指在進行到下一個晶片之前,晶片中連續的LBA的數目。晶片交錯之數目意指將被分配之條的晶片數目。
第12圖顯示具有條狀切割支援的第2圖的佈局。將區段1201的大小保持在4KB,條1202大小為1KB且晶片交錯之數目1203為四(4)。這意味著三十二(32)個LBA將以兩(2)個LBA包括一條的方式被分配到四(4)個晶片(每區段八(8)個)。第13圖顯示映射表看起來會是如何。針對一組三十二(32)個LBA或四(4)個區段會有四(4)個相關的登錄。映射表的大小會仍然相同,但LBA將被條狀切割成在各組中不同的晶片。LBA 0,1會在Dev 0、LBA 2,3會在Dev2、LBA 4,5會在Dev4、LBA 6,7會在Dev6、LBA 8,9回到Dev 0,以此類推。結果,當主機請求讀取LBA 0至7時,引擎0,2,4和6會啟動以得到八(8)個LBA,而非在沒有條狀切割時僅引擎0才會啟動的情形。
這對在那時僅存取磁碟機一個請求的主機而言是最有
利的,而且那些請求是小量的資料(亦即,僅請求4KB並且每次等待回應)。沒有條狀切割,主機僅能利用少數的可用資源。一旦主機能夠佇列多個請求或請求大量的資料,此優點便會減小。這是因為在此情況中,主機請求已迫使不同的快閃DMA引擎並列運作,並因此有效地利用系統。
在本發明之一個實施例中,用於資料儲存之設備包括:複數個快閃匯流排;耦接至該複數個快閃匯流排之至少其中兩(2)個之複數個DMA引擎;以及耦接至該複數個DMA引擎之至少其中兩(2)個之複數個快閃晶片;其中資料存取效能係藉由匯流排交錯而改善,其中,藉由使用至少兩(2)個快閃匯流排使一個或多個資料傳輸至或自該複數個快閃晶片;其中資料存取效能係藉由快閃陣列庫交錯而改善,其中,藉由使用至少兩(2)個DMA引擎使一個或多個資料傳輸至或自該複數個快閃晶片;以及其中資料存取效能係藉由群交錯而改善,其中,藉由使用至少兩(2)個快閃晶片使一個或多個資料傳輸至或自該複數個快閃晶片。視需要地,各該複數個快閃晶片進一步包括複數個區段;在該設備中之各區段係可操作以藉由利用實體區塊位址而被存取,該實體區塊位址包括最小有效部分(least significant portion)、第二最小有效部分、第三最小有效部分、及第四最小有效部分;其中該最小有效部分包括根據該複數個快閃匯流排的級(order),該第二最小有效部分包括根據各耦接至相同快閃匯流排之複數個DMA引擎的級,該第三最小有效部分包括根據各耦接至相同DMA引
擎之複數個快閃晶片的級,而該第四最小有效部分包括根據在相同快閃晶片中之複數個區段的級;以及其中用於主機資料存取的邏輯區塊位址係根據系統而映射至實體區塊位址,藉此而改善主機資料存取效能。視需要地,在該複數個快閃晶片之至少其中一者中的至少一個區段係指定為閒置區段;至少一個閒置區段係預先抹除作為用於至少一個資料再定位的目標,藉此根據該系統而改善快閃寫入效能和不良區塊替代效能。視需要地,該系統在該至少一個資料再定位之前,將各邏輯區塊位址以線性映射(linear mapping)的方式映射至實體區塊位址;以及該系統將複數個閒置區段平均地指派至各複數個快閃晶片。視需要地,該系統基於一種優先處理順序(priority)根據在系統佇列中所表示之目前負載將針對用於寫入操作之各該至少一個資料再定位之目標定位,該優先處理順序包括:首先定位對應於不同之快閃匯流排的閒置區段、然後定位對應於耦接至相同快閃匯流排之不同的DMA引擎的閒置區段、以及之後定位對應於耦接至相同DMA引擎之不同的快閃晶片的閒置區段;以及,該系統基於一種優先處理順序將針對用於不良區塊管理之各該至少一個資料再定位之目標定位,該優先處理順序包括:首先定位對應於該相同快閃晶片的閒置區段、然後定位對應於耦接至相同DMA引擎之不同快閃晶片的閒置區段、以及之後定位對應於耦接至相同快閃匯流排之不同DMA引擎的閒置區段。視需要地,各區段進一步包括複數個條(stripe);以及該線性映射進一
步包括一個或多個晶片交錯。
本發明之前述實施例係提供作為例示及敘述,並非意欲限制本發明至所述之特定形式。尤其,考慮到在此所述之本發明的功能性實作可等效地實作於硬體、軟體、韌體、及/或其他可用之功能性組件及組構區塊(building block),而且該等網路可以是有線的、無線的、或有線及無線之組合。鑒於上述教示,可能有其他變化及實施例,並因此希望本發明之範疇不被此述之實施方式所限制,而是由下列所附之申請專利範圍所限制。
101‧‧‧快閃DMA引擎
102‧‧‧快閃匯流排
103‧‧‧擴充板
104‧‧‧快閃緩衝控制器
105‧‧‧一群n個快閃DMA引擎
106‧‧‧快閃匯流排0
107‧‧‧快閃陣列庫交錯
108‧‧‧第一快閃裝置A0
109‧‧‧第二快閃裝置A0
201‧‧‧區段0至2
202‧‧‧FDE 0,2,4
203‧‧‧匯流排0,1,2
301‧‧‧區段0
302‧‧‧區段1
303‧‧‧區段61
501‧‧‧先前位置
502‧‧‧先前抹除的區段
701‧‧‧實體位置
702‧‧‧區段索引
所以,可藉由參照隨附圖式及其實施例而獲得本發明之更具體的敘述(以上已簡略概要者),達到並能詳細明白本發明之上述特徵、優點及目的。
然而,應注意的是所附圖式僅描繪本發明之典型實施例,而因此不被認為是其範疇的限制,因為本發明可容許其他等效的實施例。
第1圖係根據本發明之實施例之具有由多個快閃DMA引擎所存取之多個快閃晶片(在此也稱為快閃裝置)之以快閃為基礎之磁碟機架構的樣本;第2圖係根據本發明之實施例之資料區段的實體佈局的樣本;第3圖係根據本發明之實施例之用於第2圖所示之佈局的LBA-PBA映射表;第4圖係根據本發明之實施例之具有抹除區段的實體
佈局;第5圖係根據本發明之實施例顯示該等區段係如何於針對資料區段發出寫入請求時被置放至其新位置的方塊圖;第6圖係根據本發明之實施例顯示將資料寫入至快閃陣列之過程的流程圖;第7圖係根據本發明之實施例顯示預先抹除區段之列表的方塊圖;第8圖係根據本發明之實施例顯示用於快閃DMA引擎之待决操作的佇列的方塊圖;第9圖係根據本發明之實施例顯示新的寫入操作係如何增加至快閃DMA引擎之佇列的方塊圖;第10圖係根據本發明之實施例顯示待决操作之佇列的更新快照的方塊圖;第11圖係根據本發明之實施例顯示不良區塊管理之過程的流程圖;第12圖係根據本發明之實施例之具有快閃裝置等級條狀切割(striping)之實體佈局的樣本;以及第13圖係根據本發明之實施例之具有用於第12圖所示之佈局的條狀切割的LBA-PBA映射表。
101‧‧‧快閃DMA引擎
102‧‧‧快閃匯流排
103‧‧‧擴充板
104‧‧‧快閃緩衝控制器
105‧‧‧一群n個快閃DMA引擎
106‧‧‧快閃匯流排0
107‧‧‧快閃陣列庫交錯
108‧‧‧第一快閃裝置A0
109‧‧‧第二快閃裝置A0
Claims (8)
- 一種用於資料儲存之設備,包括:複數個快閃匯流排;複數個快閃DMA引擎,耦接至該複數個快閃匯流排之至少其中二個;以及複數個快閃裝置,耦接至該複數個快閃DMA引擎之至少其中二個;其中,該複數個快閃DMA引擎的至少其中一個經配置以藉由匯流排交錯而改善資料存取效能,其中,藉由利用至少二個快閃匯流排使一個或多個資料傳輸至或自該複數個快閃裝置;其中,該複數個快閃DMA引擎經配置以藉由快閃陣列庫交錯而改善資料存取效能,其中,藉由利用該複數個快閃DMA引擎的至少二個使一個或多個資料傳輸至或自該複數個快閃裝置;以及其中,該複數個快閃DMA引擎的至少其中一個經配置以藉由群交錯而改善資料存取效能,其中,藉由利用至少二個快閃裝置使一個或多個資料傳輸至或自該複數個快閃裝置。
- 如申請專利範圍第1項之設備:其中,該複數個快閃裝置之各者進一步包括複數個區段;其中,在該設備中之各區段係可操作以藉由利用實體區塊位址而被存取,該實體區塊位址包括最小有效部 分、第二最小有效部分、第三最小有效部分、以及第四最小有效部分;其中,該最小有效部分包括根據該複數個快閃匯流排的級,該第二最小有效部分包括根據各耦接至相同快閃匯流排之複數個快閃DMA引擎的級,該第三最小有效部分包括根據各耦接至相同快閃DMA引擎之複數個快閃裝置的級,以及該第四最小有效部分包括根據在相同快閃裝置中之該複數個區段的級;以及其中,用於主機資料存取的邏輯區塊位址係根據配置演算法而映射至實體區塊位址,藉此改善主機資料存取效能。
- 如申請專利範圍第2項之設備:其中,在該複數個快閃裝置之至少其中一者中的至少一個區段係指定為閒置區段;其中,至少一個閒置區段係預先抹除作為用於至少一個資料再定位的目標,藉此根據該配置演算法而改善寫入效能和不良區塊替代效能。
- 如申請專利範圍第3項之設備:其中,該配置演算法在該至少一個資料再定位之前,將各邏輯區塊位址以線性映射的方式映射至實體區塊位址;以及其中,該配置演算法將複數個閒置區段平均地指派至該複數個快閃裝置之各者。
- 如申請專利範圍第4項之設備,其中,該配置演算法基 於一種優先處理順序根據在系統佇列中所表示之目前負載將針對用於寫入操作之該至少一個資料再定位之各者之目標定位,該優先處理順序包括首先定位對應於不同之快閃匯流排的閒置區段、其次定位對應於耦接至相同快閃匯流排之不同的快閃DMA引擎的閒置區段、以及之後定位對應於耦接至相同快閃DMA引擎之不同的快閃裝置的閒置區段。
- 如申請專利範圍第4項之設備,其中,該配置演算法基於一種優先處理順序將針對用於不良區塊管理之該至少一個資料再定位之各者之目標定位,該優先處理順序包括首先定位對應於相同快閃裝置的閒置區段、其次定位對應於耦接至相同快閃DMA引擎之不同快閃裝置的閒置區段、以及之後定位對應於耦接至相同快閃匯流排之不同快閃DMA引擎的閒置區段。
- 如申請專利範圍第4項之設備:其中,各區段進一步包括複數個條;以及其中,該線性映射進一步包括一個或多個快閃裝置交錯。
- 如申請專利範圍第7項之設備,其中,該複數個快閃DMA引擎的至少其中一個經配置以條狀切割跨越超過一個快閃裝置的資料。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/450,005 US7506098B2 (en) | 2006-06-08 | 2006-06-08 | Optimized placement policy for solid state storage devices |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200807241A TW200807241A (en) | 2008-02-01 |
TWI420307B true TWI420307B (zh) | 2013-12-21 |
Family
ID=38823270
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096119243A TWI420307B (zh) | 2006-06-08 | 2007-05-30 | 固態儲存裝置之最佳化配置策略 |
TW102144165A TWI540430B (zh) | 2006-06-08 | 2007-05-30 | 用於資料儲存之方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102144165A TWI540430B (zh) | 2006-06-08 | 2007-05-30 | 用於資料儲存之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7506098B2 (zh) |
TW (2) | TWI420307B (zh) |
WO (1) | WO2007146756A2 (zh) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050022798A (ko) * | 2003-08-30 | 2005-03-08 | 주식회사 이즈텍 | 유전자 어휘 분류체계를 이용하여 바이오 칩을 분석하기위한 시스템 및 그 방법 |
US9542352B2 (en) | 2006-02-09 | 2017-01-10 | Google Inc. | System and method for reducing command scheduling constraints of memory circuits |
US8130560B1 (en) | 2006-11-13 | 2012-03-06 | Google Inc. | Multi-rank partial width memory modules |
US20080082763A1 (en) | 2006-10-02 | 2008-04-03 | Metaram, Inc. | Apparatus and method for power management of memory circuits by a system or component thereof |
US10013371B2 (en) | 2005-06-24 | 2018-07-03 | Google Llc | Configurable memory circuit system and method |
US8081474B1 (en) | 2007-12-18 | 2011-12-20 | Google Inc. | Embossed heat spreader |
US9507739B2 (en) | 2005-06-24 | 2016-11-29 | Google Inc. | Configurable memory circuit system and method |
US8090897B2 (en) | 2006-07-31 | 2012-01-03 | Google Inc. | System and method for simulating an aspect of a memory circuit |
US8244971B2 (en) | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US8327104B2 (en) | 2006-07-31 | 2012-12-04 | Google Inc. | Adjusting the timing of signals associated with a memory system |
US8386722B1 (en) | 2008-06-23 | 2013-02-26 | Google Inc. | Stacked DIMM memory interface |
US8438328B2 (en) | 2008-02-21 | 2013-05-07 | Google Inc. | Emulation of abstracted DIMMs using abstracted DRAMs |
US8796830B1 (en) | 2006-09-01 | 2014-08-05 | Google Inc. | Stackable low-profile lead frame package |
US8077535B2 (en) | 2006-07-31 | 2011-12-13 | Google Inc. | Memory refresh apparatus and method |
US20080028136A1 (en) | 2006-07-31 | 2008-01-31 | Schakel Keith R | Method and apparatus for refresh management of memory modules |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US8111566B1 (en) | 2007-11-16 | 2012-02-07 | Google, Inc. | Optimal channel design for memory devices for providing a high-speed memory interface |
US7392338B2 (en) | 2006-07-31 | 2008-06-24 | Metaram, Inc. | Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits |
US8359187B2 (en) | 2005-06-24 | 2013-01-22 | Google Inc. | Simulating a different number of memory circuit devices |
US8055833B2 (en) * | 2006-10-05 | 2011-11-08 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8041881B2 (en) | 2006-07-31 | 2011-10-18 | Google Inc. | Memory device with emulated characteristics |
US7386656B2 (en) | 2006-07-31 | 2008-06-10 | Metaram, Inc. | Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit |
US8335894B1 (en) | 2008-07-25 | 2012-12-18 | Google Inc. | Configurable memory system with interface circuit |
US9171585B2 (en) | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US8089795B2 (en) | 2006-02-09 | 2012-01-03 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
US8060774B2 (en) | 2005-06-24 | 2011-11-15 | Google Inc. | Memory systems and memory modules |
US8619452B2 (en) | 2005-09-02 | 2013-12-31 | Google Inc. | Methods and apparatus of stacking DRAMs |
US9632929B2 (en) | 2006-02-09 | 2017-04-25 | Google Inc. | Translating an address associated with a command communicated between a system and memory circuits |
US7724589B2 (en) | 2006-07-31 | 2010-05-25 | Google Inc. | System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits |
US7904639B2 (en) * | 2006-08-22 | 2011-03-08 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
US8046527B2 (en) | 2007-02-22 | 2011-10-25 | Mosaid Technologies Incorporated | Apparatus and method for using a page buffer of a memory device as a temporary cache |
US8086785B2 (en) | 2007-02-22 | 2011-12-27 | Mosaid Technologies Incorporated | System and method of page buffer operation for memory devices |
US8209479B2 (en) | 2007-07-18 | 2012-06-26 | Google Inc. | Memory circuit system and method |
KR101413736B1 (ko) * | 2007-09-13 | 2014-07-02 | 삼성전자주식회사 | 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법 |
US8080874B1 (en) | 2007-09-14 | 2011-12-20 | Google Inc. | Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
KR101083673B1 (ko) * | 2008-10-01 | 2011-11-16 | 주식회사 하이닉스반도체 | 반도체 스토리지 시스템 및 그 제어 방법 |
US8275929B2 (en) * | 2008-10-29 | 2012-09-25 | Macronix International Co., Ltd. | Memory and operating method thereof |
EP2396729B1 (en) * | 2009-02-12 | 2019-05-22 | Toshiba Memory Corporation | Memory system and method of controlling memory system |
US8566507B2 (en) * | 2009-04-08 | 2013-10-22 | Google Inc. | Data storage device capable of recognizing and controlling multiple types of memory chips |
US20100262979A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US8447918B2 (en) * | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
TWI408689B (zh) * | 2009-04-14 | 2013-09-11 | Jmicron Technology Corp | 存取儲存裝置的方法及相關控制電路 |
JP5532671B2 (ja) * | 2009-05-08 | 2014-06-25 | ソニー株式会社 | データ記憶システムおよびデータ記憶方法、実行装置および制御方法、並びに制御装置および制御方法 |
WO2010144624A1 (en) | 2009-06-09 | 2010-12-16 | Google Inc. | Programming of dimm termination resistance values |
US20100318719A1 (en) * | 2009-06-12 | 2010-12-16 | Micron Technology, Inc. | Methods, memory controllers and devices for wear leveling a memory |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) * | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
JP5984118B2 (ja) * | 2009-12-04 | 2016-09-06 | マーベル ワールド トレード リミテッド | 格納デバイスの仮想化 |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8194340B1 (en) | 2010-03-18 | 2012-06-05 | Western Digital Technologies, Inc. | Disk drive framing write data with in-line mapping data during write operations |
US9330715B1 (en) | 2010-03-22 | 2016-05-03 | Western Digital Technologies, Inc. | Mapping of shingled magnetic recording media |
US8687306B1 (en) | 2010-03-22 | 2014-04-01 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones |
US8856438B1 (en) | 2011-12-09 | 2014-10-07 | Western Digital Technologies, Inc. | Disk drive with reduced-size translation table |
US8699185B1 (en) | 2012-12-10 | 2014-04-15 | Western Digital Technologies, Inc. | Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks |
US8693133B1 (en) | 2010-03-22 | 2014-04-08 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8615640B2 (en) | 2011-03-17 | 2013-12-24 | Lsi Corporation | System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US8593866B2 (en) * | 2011-11-11 | 2013-11-26 | Sandisk Technologies Inc. | Systems and methods for operating multi-bank nonvolatile memory |
US9213493B1 (en) | 2011-12-16 | 2015-12-15 | Western Digital Technologies, Inc. | Sorted serpentine mapping for storage drives |
US8819367B1 (en) | 2011-12-19 | 2014-08-26 | Western Digital Technologies, Inc. | Accelerated translation power recovery |
US8924636B2 (en) * | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9003068B2 (en) | 2012-07-12 | 2015-04-07 | International Business Machines Corporation | Service channel for connecting a host computer to peripheral devices |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US8953269B1 (en) | 2014-07-18 | 2015-02-10 | Western Digital Technologies, Inc. | Management of data objects in a data object zone |
US9875055B1 (en) | 2014-08-04 | 2018-01-23 | Western Digital Technologies, Inc. | Check-pointing of metadata |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
CN108932106B (zh) * | 2017-05-26 | 2021-07-02 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
US10635331B2 (en) * | 2017-07-05 | 2020-04-28 | Western Digital Technologies, Inc. | Distribution of logical-to-physical address entries across bank groups |
CN111176564B (zh) | 2019-12-25 | 2024-02-27 | 三星(中国)半导体有限公司 | 确定ssd内数据摆放策略的方法及装置 |
JP2022147448A (ja) * | 2021-03-23 | 2022-10-06 | キオクシア株式会社 | メモリシステム及びデータ管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822251A (en) * | 1997-08-25 | 1998-10-13 | Bit Microsystems, Inc. | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers |
US5995379A (en) * | 1997-10-30 | 1999-11-30 | Nec Corporation | Stacked module and substrate therefore |
TW402710B (en) * | 1996-04-26 | 2000-08-21 | Texas Instruments Inc | Method and system for packet control list format for controlling a DMA machine in a packetized data communications system |
TW200617684A (en) * | 2004-06-30 | 2006-06-01 | Intel Corp | An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114587A1 (en) * | 2003-11-22 | 2005-05-26 | Super Talent Electronics Inc. | ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines |
US6529416B2 (en) * | 2000-11-30 | 2003-03-04 | Bitmicro Networks, Inc. | Parallel erase operations in memory systems |
US6721820B2 (en) * | 2002-05-15 | 2004-04-13 | M-Systems Flash Disk Pioneers Ltd. | Method for improving performance of a flash-based storage system using specialized flash controllers |
US20040073721A1 (en) * | 2002-10-10 | 2004-04-15 | Koninklijke Philips Electronics N.V. | DMA Controller for USB and like applications |
-
2006
- 2006-06-08 US US11/450,005 patent/US7506098B2/en not_active Expired - Fee Related
-
2007
- 2007-05-30 TW TW096119243A patent/TWI420307B/zh not_active IP Right Cessation
- 2007-05-30 TW TW102144165A patent/TWI540430B/zh not_active IP Right Cessation
- 2007-06-08 WO PCT/US2007/070660 patent/WO2007146756A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW402710B (en) * | 1996-04-26 | 2000-08-21 | Texas Instruments Inc | Method and system for packet control list format for controlling a DMA machine in a packetized data communications system |
US5822251A (en) * | 1997-08-25 | 1998-10-13 | Bit Microsystems, Inc. | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers |
US5995379A (en) * | 1997-10-30 | 1999-11-30 | Nec Corporation | Stacked module and substrate therefore |
TW200617684A (en) * | 2004-06-30 | 2006-06-01 | Intel Corp | An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine |
Also Published As
Publication number | Publication date |
---|---|
US20070288686A1 (en) | 2007-12-13 |
TW200807241A (en) | 2008-02-01 |
WO2007146756A2 (en) | 2007-12-21 |
TW201415223A (zh) | 2014-04-16 |
TWI540430B (zh) | 2016-07-01 |
US7506098B2 (en) | 2009-03-17 |
WO2007146756A3 (en) | 2009-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI420307B (zh) | 固態儲存裝置之最佳化配置策略 | |
KR101516580B1 (ko) | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 | |
JP4777263B2 (ja) | マスストレージアクセラレータ | |
KR101083673B1 (ko) | 반도체 스토리지 시스템 및 그 제어 방법 | |
US8452911B2 (en) | Synchronized maintenance operations in a multi-bank storage system | |
CN108121503B (zh) | 一种NandFlash地址映射及块管理方法 | |
US8473669B2 (en) | Method and system for concurrent background and foreground operations in a non-volatile memory array | |
US8341338B2 (en) | Data storage device and related method of operation | |
EP2291746B1 (en) | Hybrid memory management | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US8560759B1 (en) | Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency | |
US8010740B2 (en) | Optimizing memory operations in an electronic storage device | |
KR101086857B1 (ko) | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 | |
US8429352B2 (en) | Method and system for memory block flushing | |
TWI432965B (zh) | 具有複數個結構之記憶體系統及其操作方法 | |
JP2012501027A (ja) | 多性能モードメモリシステム | |
US20140317341A1 (en) | System and apparatus for flash memory data management | |
JP2009503731A (ja) | 大容量データ記憶システム | |
JP2012514809A (ja) | コマンドの変更 | |
US9959052B1 (en) | Media based cache for data storage device | |
KR101117390B1 (ko) | 비휘발성 메모리 장치의 데이터 접근 방법 및 이를 수행하는 프로그램을 기록한 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |