TWI641953B - 寫入命令過濾技術 - Google Patents
寫入命令過濾技術 Download PDFInfo
- Publication number
- TWI641953B TWI641953B TW105133856A TW105133856A TWI641953B TW I641953 B TWI641953 B TW I641953B TW 105133856 A TW105133856 A TW 105133856A TW 105133856 A TW105133856 A TW 105133856A TW I641953 B TWI641953 B TW I641953B
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- cache
- commands
- data
- write command
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
於一範例方法中,用於具有儲存區域之一固態儲存媒體的寫入命令被接收。所選擇之寫入命令依據準則被過濾出。該等選擇寫入命令被快取。根據該等選擇寫入命令之寫入被聚集於該儲存媒體的該等儲存區域之一者的邊界之內。
Description
發明領域 本揭示係有關於寫入命令過濾技術。
發明背景 固態儲存裝置,例如,NAND-型式快閃記憶體裝置,具有預定儲存區域。在各個寫入週期的期間,一空的消除儲存區域被寫入。當資料將被寫入至一第一儲存區域中之一先前所儲存的檔案時,該第一儲存區域被消除並且先前被記錄之檔案,以及藉由該寫入操作所一起添加之附加資料,被寫入至一第二未寫入或先前被消除的儲存區域。此等固態儲存裝置具有一限定數目的寫入操作或週期之一預期有效期。
發明概要 依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:接收供用於具有儲存區域之一固態儲存媒體的一寫入命令集合;依據準則過濾出該寫入命令集合之一子集合;快取該寫入命令子集合;以及聚集根據該寫入命令子集合之寫入於該固態儲存媒體的該等儲存區域之一者的邊界之內。
較佳實施例之詳細說明 圖1分解地例示管理一固態儲存媒體之使用的一固態儲存系統20之範例。固態儲存媒體包括具有預定大小之複數個個別的儲存區域。在一個別的寫入週期之期間,資料被寫入至一空的或先前消除的儲存區域。當新的資料將被附加至先前寫入之資料時,該先前寫入之資料和一新的資料兩者皆被寫入至一新的儲存區域,因而含有該先前寫入資料之舊的儲存區域被消除。每次當資料被添加至先前寫入資料檔案中時,這週期被重複。固態儲存媒體具有關於在其無法可靠地保持電荷經一主要的時間持續之前,一儲存區域可以被消除多少次的實際限制。
系統20藉由減少寫入週期之總數目,其是隨著時間對於藉由該固態儲存媒體所儲存之一給予數量的資料被實行,而減輕或減少固態儲存媒體之耗損。使用預定準則,系統20過濾出供用於依序的聚集寫入被接收之寫入命令的總數目之一子集合。在該聚集寫入的期間,資料根據命令之整個子集合而被寫入一單一儲存區域中。並非各個儲存區域可能容納正好是來自一單一寫入命令之資料,一些儲存區域可能容納來自複數個寫入命令之資料。藉由利用各個儲存區域之一較大部份,系統20減少對於一所給予的資料數量之消除和寫入週期之總數目以及延長固態儲存媒體之使用期。
在一實行例中,系統20在最適合於即時寫入至一儲存區域的寫入命令以及供用於一依序的聚集寫入至一個別的儲存區域而與其他寫入命令一起儲存或快取之良好候選者的寫入命令之間辨別。在一實行例中,系統20根據該等寫入命令而將被寫入之資料大小而選擇用以快取之寫入命令。根據正確命令將被寫入之資料的大小包括新的資料,其中該新資料是將被附加至一先前所使用之儲存區域中的一檔案之情況中,以及檔案中之現有的資料,其中該現有的資料被複製並且與該新資料一起重新寫進入一未使用的或被消除的儲存區域。在另一實行例中,系統20依據該等寫入命令是否關聯於已經存在該快取中之寫入命令而選擇用於快取之寫入命令。在一實行例中,系統20依據用於根據寫入命令之將被寫入之資料大小以及特定的正確命令是如何相關聯於已經存在該快取中的其他寫入命令兩者之加權組合的一組合而選擇寫入命令。在另外的其他實行例中,其他準則可以被採用。
如藉由圖1分解地展示,系統20包含固態儲存媒體24和過濾驅動器28。固態儲存媒體24包含一固態儲存媒體,即資料電子式地而不是磁式地被儲存之一媒體。固態儲存媒體24包含複數個預定儲存區域30(R1
-Rn
)。各個別的預定儲存區域30包含最小的單元或當在一單一寫入週期之期間時該儲存媒體之區域可以個別地被作用。例如,在一些實行例中,記憶體藉由記憶胞被界定,該等記憶胞被群集成為被群集成為區塊的分頁,其中讀取和寫入操作是以分頁導向,但是其中消除操作施加於整個區塊。在此一實行例中,可以在一單一寫入週期中作用的記憶體之最小單元是一分頁。於此一實行例中,系統20管理資料之寫入,以便藉由根據複數個寫入命令而寫入之資料以於各分頁中充填各分頁之一較大的百分比。於其他實行例中,固態儲存媒體24可以具有其他大小的儲存區域30。在一實行例中,固態儲存媒體24包含一非依電性固態儲存媒體,例如,NAND快閃記憶體。
過濾驅動器28包含一處理器,以及管理所接收之寫入命令如何相對於固態儲存媒體24被執行之相關聯的處理器指令。在例示之範例中,過濾驅動器28實行圖2之範例方法100。如藉由圖2之方塊104所表明地,過濾驅動器28接收寫入資料至具有儲存區域30之固態儲存媒體24的寫入命令35。在一實行例中,過濾驅動器28自一操作系統之一檔案系統驅動器而接收此等寫入命令35。在一實行例中,此等寫入命令在藉由過濾驅動器28接收之前被列隊等候。
如藉由方塊106所表明地,過濾驅動器28依據預定準則過濾出所接收寫入命令之子集合。藉由過濾驅動器28所使用以過濾出寫入命令之子集合之準則是確認那些特定的寫入命令,其是用以在執行時一起被聚集或被合併的良好候選者之準則,以至於在一單一寫入週期的期間,根據此等所聚集之寫入命令40而寫入的資料是寫入至一單一儲存區域30的邊界之內的一單一儲存區域。在一實行例中,該等準則被選擇以便區分(A)個別地要求將更充分地採用一單一儲存區域之大量資料的寫入之寫入命令相對於個別地要求其個別地採用單一儲存區域的一較小部份,但是當在一單一寫入週期之期間與其他寫入命令的資料被聚集時,則更充分地佔用或採用該單一儲存區域之較小量資料的寫入之寫入命令,及/或(B)彼此無關且不太可能是相同檔案或相關檔案之部份的寫入命令相對於彼此相關以至於被要求將藉由寫入命令被寫入的資料是更有可能是相同檔案或相關檔案之部份的寫入命令。
在一實行例中,系統20採用其他的準則以供選擇對於至一單一儲存區域的依序聚集寫入將被快取的那些寫入命令。例如,於其他實行例中,系統20可以依據寫入命令的其他特性或包含讀取和寫入命令兩者之其他待決或歷史I/O命令(其趨向於表明相關聯的資料之大小、相關聯的資料先前已可能是如何與快取中之資料或與用以快取此等寫入命令之適當者相關)而決定寫入命令之選擇。例如,系統20可以採用此等資訊,例如形成寫入要求之申請的身份、在其中形成該寫入要求之申請已被運行的期間之時間、對於該寫入要求之資料的檔案或目標目的地、最近的過去時間中之其他寫入命令或讀取命令的特性、目前於命令佇列及/或時間樣型中之寫入命令或讀取命令的特性。相對於待決的讀取和寫入命令(輸入/輸出命令),系統20可以依據寫入命令的頻率或寫入和讀取命令二者目前被形成的頻率,如藉由在命令佇列中之命令所表明者,而選擇目前所接收的寫入命令。例如,在一非常短的時間週期之期間,具有一高頻率,所接收的寫入命令,是更有可能指示或要求較小量之資料的寫入並且因此是用於聚集寫入執行之較佳的候選者。在一短的時間週期之期間,具有一高頻率,與讀取命令一起被接收之寫入命令,可以表明該等寫入命令是來自一單一申請並且可能是彼此相關,因此是用以快取以及依序聚集寫入之強的候選者。
如藉由方塊108所表明地,過濾驅動器28快取或儲存寫入命令之快取子集合。不被快取的那些寫入命令被執行作為至固態儲存媒體24的個別寫入37。個別寫入37之各者在一專用寫入週期之期間,將資料寫入至一個別的儲存區域30。
如藉由方塊110所表明地,過濾驅動器28將快取寫入命令39之執行聚集至一單一寫入週期以將供用於快取寫入命令的所有資料寫入至一單一儲存區域30。根據在方塊106中所過濾出以及在方塊108中所快取的寫入命令子集合之聚集寫入發生在該等儲存區域30之一單一者的邊界之內。在一實行例中,該快取和該聚集寫入執行之“清空”依據利用一預定百分比之個別儲存區域的寫入命令之過濾子集合之聚集資料而自動地被觸發。例如,當根據該寫入命令之子集合而將被寫入之資料總數量是較大於或等於一儲存區域30之大小的一預定百分比時,該聚集寫入可以被觸發。
在另一實行例中,快取和聚集寫入執行之“清空”是依據一快取延遲時間(一個別的寫入命令或寫入命令之子集合已存在於該快取中的期間之時間數量)而自動地被觸發。例如,該聚集寫入可以依據最久的寫入命令(具有最長快取時間之寫入命令)已存在該快取中之期間的總時間超出一預定時間臨界值而被觸發。藉由另一範例,聚集寫入可以依據寫入命令的目前所有子集合之快取駐留時間、目前快取中之一中間寫入命令的一快取駐留時間或自該快取中之個別寫入命令的快取駐留時間所導出之一些其他統計數值的一平均值而被觸發。於其他實行例中,聚集寫入之觸發可以是依據於快取駐留時間資料大小之一組合或可以是依據於其他觸發參數。
圖3和圖4例示系統20如何更有效地採用各個寫入週期以減少儲存一給予的資料數量之寫入週期數目並且因而減輕固態儲存媒體24之耗損。在圖3和圖4中所展示之範例中,以及整個的這揭示,根據一個別的寫入命令被寫入之資料意味著新資料是將被寫入至一空檔案之新的資料並且意味著將藉由個別的正確命令被添加之新資料將被附加至一檔案中之現存的資料之新資料加上現存資料。圖3分解地例示一固態儲存媒體24之範例,其中寫入至固態儲存媒體24是不根據方法100被管理,但是其中各個寫入操作是與專用於一寫入操作之整個儲存區域30相關聯。如藉由圖3所展示地,根據一第一寫入命令而寫入之資料D1佔用儲存區域30A,根據一第二寫入命令而寫入之資料D2佔用儲存區域30B,根據一第三寫入命令而寫入之資料D3佔用儲存區域30C以及等等。因而,所例示之14個寫入命令採用14個儲存區域30。
此外,在一寫入命令被添加資料至一現存的檔案之情況中,含有現存的檔案之儲存區域同時也是無效的並且當新資料被寫入至正確命令且現存檔案中之舊資料被寫入至一新的儲存區域時則置於一旁待依序的消除。例如,一儲存區域可以具有大小為0之一檔案abc.log,其中100個位元組被提交並且被儲存。如果一正確命令要求多於100個位元組被儲存至該檔案時,則原始的100個位元組被複製並且被添加至新的100個位元組,或200個位元組被儲存進入一新的區域。含有原始的100個位元組之舊區域是無效的而置於佇列以待消除。每次當資料被添加或被附加至一檔案時,這處理程序被重複。因為14個寫入命令採用14個不同的儲存區域,關於圖3上述之範例也可以依據附加資料至一現存的儲存區域中之一現存的資料之寫入命令數目,而被列隊於高至14個儲存區域以待消除。因為“使用的”區域成為無效並且是置於一旁以待消除以及依序的再使用,一情況可能發生,其中由於一些在其他方面可用,但是目前無效的儲存區域正等待消除,所有可用的儲存區域是“被使用”。因而,由於固態儲存裝置無法跟上工作量,阻礙和耗損率可能被加劇。
藉由比較,圖4分解地例示相同固態儲存媒體24之範例,其中資料根據上述關於圖3之相同的14個寫入命令被寫入至相同固態儲存媒體24。對照於如圖3展示至固態儲存媒體24之資料寫入,圖4中至固態儲存媒體24之資料寫入依據方法100藉由系統20被管理。寫入命令子集合依據準則藉由過濾驅動器28被過濾,一起被快取和被合併以供聚集寫入至單一儲存區域的邊界之內。在例示之範例中,儲存區域30A和30D各含有對應至一單一寫入命令之資料。資料D1和D7分別地根據第一寫入命令和第七寫入命令被寫入,並且藉由過濾驅動器28被辨識作為其是有足夠的大小(新資料和新資料被附加之檔案中之任何現存資料(如果有的話)之數量充填一儲存區域之一預定臨界值百分比及/或滿足一預定最小的大小臨界值),以至於第一寫入命令和第七寫入命令不對於快取被過濾,而是在個別的專用寫入週期之期間直接地被寫入至固態儲存媒體24。
儲存區域30B、30C、30E及30G各含有來自被過濾、快取一聚集地寫入至個別的儲存區域之命令子集合之資料。分別地根據第二、第三及第四寫入命令被寫入之資料D2、D3及D4,是足夠小並且是相關的,以至於在依序地清空快取至相同儲存區域30B之前,過濾驅動器28過濾出且快取第二、第三及第四寫入命令之各者。當收到對應至資料D5之寫入命令時,由於資料D5之大小是充分地大,系統20清空目前快取,其導致資料D2、D3及D4之寫入,因此資料D2、D3及D4的可能聚集將超出儲存區域30B之大小。但是,在例示之範例中,對應至資料D5的第五寫入命令藉由對應至資料D6的第六寫入命令被快取,其中資料D5和D6被寫入至相同儲存區域30C。
在例示之範例中,儲存區域30F含有來自一單一寫入命令之資料,而不論佔據儲存區域30F之一非常小的百分比之資料大小。雖然資料D11之大小可能已經是充分地小,以至於其可能已藉由被寫入至儲存區域30E之第八、第九及第10個寫入命令被快取,資料D11不藉由系統20被辨識是充分地與資料D8、D9或D10相關,以至於系統20不藉由第八、第九及第10個寫入命令而快取第11個寫入命令。同樣地,第12個寫入命令、第13個寫入命令及第14個寫入命令,引導資料D12、D13及D14之寫入,不藉由系統20以第11個寫入命令被快取。在一個情節中,系統20可以辨識第11個寫入命令以及其相關的資料D11為不是充分地與資料D12、D13或D14相關。在另一情節中,第11個寫入命令可能已被快取並且可能已存在該快取中一充分的時間量,因而該快取在第12個寫入命令接受之前自動地被清空至儲存區域30F。同時於另一情節中,第11個寫入命令及其之相關的資料D11可能已是藉由使用者或依據原定設定所預選擇而作為不是適用於快取的一型式,以至於第11個寫入命令即時地且直接地自動被寫入至固態儲存媒體24。
如藉由圖3和圖4之比較的展示,當14個寫入命令之寫入不是根據方法100藉由一些26被管理時,範例之14個寫入命令採用14個儲存區域且消耗14個寫入週期。相同的14個寫入命令,當根據方法100藉由過濾驅動器28被過濾且被管理時,則採用7個儲存區域且消耗7個寫入週期。因而,系統20和方法100之使用減少固態儲存媒體24之耗損並且延長固態儲存媒體24之有效的使用期。
圖5分解地例示固態儲存系統220,其是固態儲存系統20之另一實行範例。固態儲存系統220包含操作系統221、命令佇列223、固態儲存媒體24(如上所述)、輸入/輸出(I/O)資料庫25、寫入命令快取226A、226B、226C(其整體地被稱為快取226)以及過濾驅動器228。操作系統221管理電腦硬體和軟體資源。在例示之範例中,操作系統221包含一檔案系統驅動器232。檔案系統驅動器232解釋檔案系統之結構並且提供一邏輯階層式視圖至發送I/O命令之應用。當所接收之I/O命令等待藉由過濾驅動器228來處理時,命令佇列223暫時地儲存所接收之I/O命令。
I/O資料庫25包含一非暫態電腦可讀取媒體或永久儲存裝置,其儲存藉由過濾驅動器228所接收的I/O命令之特性或參數。當依據某些準則過濾出寫入命令子集合時,過濾驅動器228存取關於先前所接收之包含在資料庫25中的I/O命令之資訊。寫入快取226包含複數個非暫態電腦可讀取媒體或記憶體,其暫時地儲存藉由過濾驅動器228被過濾出的寫入命令之快取子集合以供用於依序的聚集寫入。
過濾驅動器228是相似於如上所述之過濾驅動器28。過濾驅動器228包含處理器(P)236以及指令(I)238。處理器236包含根據該等指令238而操作之一處理單元。為了這申請案之目的,字詞“處理單元”將是指一目前開發或未來開發的處理單元,其執行包含於一記憶體中之指令序列。指令序列之執行導致處理單元進行步驟,例如,產生控制信號。該等指令可以被裝載於一隨機存取記憶體(RAM)中,以供藉由處理單元自一唯讀記憶體(ROM)、一大容量之儲存裝置、或一些其他的永久儲存器之執行。在其他實施例中,硬接線電路可以代替或與軟體指令組合地被使用以實行上述之功能。例如,過濾驅動器228可以作為一個或多個特定應用積體電路(ASIC)之部件地被實施。除非明確地被提到,否則過濾驅動器是不受限定於硬體電路和軟體之任何特定組合,也不受限定於藉由處理單元被執行之指令的任何特定來源。
指令238以程式碼形式、積體電路或其類似者被提供作為一非暫態電腦可讀取媒體的部件。指令238指示處理器236實行圖6中所展示之方法300。當操作時,檔案系統驅動器232發送I/O命令,讀取和寫入命令兩者,至固態儲存媒體24。此等命令在被接收之前於命令佇列223中列隊等候並且藉由過濾驅動器228被分析。
如藉由方塊304所表明地,過濾驅動器228自命令佇列223接收I/O命令。如藉由方塊306所表明地,對於所接收之各接收的I/O命令,過濾驅動器228分析且儲存該I/O命令之特性或參數於I/O資料庫25中。當根據某些準則而選擇用以過濾和快取之寫入命令時,此等特性或參數則為過濾驅動器228所採用。
如藉由判定方塊308所表明地,過濾驅動器228判定所接收的I/O命令是否為一寫入命令。如果該I/O命令不是一寫入命令,但卻是一讀取命令時,過濾驅動器228在方塊310中,在根據方塊304而接收下一個I/O命令之前,引發讀取命令之執行。
如藉由判定方塊312所表明地,如果I/O命令是一寫入命令,過濾驅動器228判定特定的寫入命令是否適合作為用以快取和聚集寫入之一候選者。在一實行例中,驅動器228參考儲存預先被建立作為不是適合於快取之預定I/O命令的一記憶體或資料庫。例如,某些命令可以藉由一使用者被辨識作為將即時地寫入至一儲存區域而無用以快取之可能性。如藉由方塊314所表明地,不是快取候選者的那些命令是即時地被寫入至儲存區域R。如藉由方塊316所表明地,所有的其他寫入快取命令被分析,其中準則被供應以判定特定的寫入命令是否將被快取以供用於聚集寫入。
在例示之範例中,過濾驅動器228應用複數個不同的準則至一接收的寫入命令,各準則被加權以判定總計分,其比較於一快取臨界值以判定一個別的寫入命令是否應該被快取以供用於聚集寫入。在例示之範例中,過濾驅動器228應用7個不同的準則:應用有效期320、應用身份322、目標目的地324、歷史I/O 326、待決I/O 328、資料大小330以及時間樣型332。於其他實行例中,當判定一寫入命令是否應該與其他的寫入命令一起被快取以供用於聚集寫入時,過濾驅動器228可以應用較少於所提到的準則之各者或可以應用附加的或替代的準則。
應用有效期準則320係關於供應寫入命令之應用已被執行的時間長度。在一實行例中,過濾驅動器28與操作系統221通訊以判定要求寫入命令之應用已被執行之時間總長度。例如,藉由已被執行一相對短時間的一應用被發出之寫入命令,在一些情況中,其很可能在長度上是較短的及/或很有可能是相關於最近藉由過濾驅動器228所接收的其他寫入命令,其使得該寫入命令成為快取之一良好的候選者。在此情況中,過濾驅動器228採用應用之所判定的執行時間,該時間是在寫入命令被接收作為判定該寫入命令是否應該被快取之一因數。
如藉由判定方塊340所表明地,在一實行例中,過濾驅動器228比較所接收的應用執行時間至一預定臨界值,應用總時間ATT。如藉由方塊341所表明地,在其中應用執行時間超出預定臨界值之情況中,用於寫入命令之總計分TS被增量一加權快取計分CS。於其他實行例中,過濾驅動器228可以參考具有與用以形成寫入命令要求之應用的執行之不同時間或時間範圍相關聯的不同準則計分之一查詢表LT或其他記憶體。在一些實行例中,應用之身份也可以因數化於所加權的快取計分或所應用之應用總時間臨界值。
應用身份322係關於形成寫入命令之應用的實際身份。在一實行例中,過濾驅動器228與操作系統221通訊以知曉形成寫入命令之應用的身份或自寫入命令它本身之部份而確認該應用之身份。在一實行例中,該應用身份可以自一應用特徵被判定。該應用身份可以表明不僅僅是程式它本身,也可表明形成寫入命令要求之應用或程式的版本。一些應用或一應用的一些版本很有可能發出寫入命令以供寫入較小的資料量或以供寫入彼此相關之複數個資料片段並且因此是用以供聚集寫入之快取的良好候選者。另一方面,其他的應用很有可能發出寫入命令以供寫入較大的資料量或寫入無關之資料片段,其可能不是用以供聚集寫入之快取的良好候選者。
如藉由判定方塊342所表明地,在一實行例中,過濾驅動器228參考將不同的應用或應用版本與具有不同的應用身份快取計分CS相關聯之一查詢表LT或其他記憶體。如藉由方塊343所表明地,如果發出寫入命令之應用的身份被辨識作為是與一特定應用身份快取計分相關聯,則過濾驅動器228藉由與應用身份相關聯的快取計分而增量用於寫入命令之總計分。
目標目的地324係關於檔案型式或所打開的檔案名稱或根據發出的寫入命令之檔案存取型式。例如,要求資料返回至一特定的檔案型式或一特定的檔案名稱之一寫入命令可能是先前地被判定作為是很有可能是較小的大小或可能是相關於其他相似之較小的資料寫入,以至於寫入命令是用以快取和聚集寫入之一較佳的候選者。依據資料將被寫入之檔案型式或資料將被寫入之檔案名稱,過濾驅動器28可以指派一較大的或較小的目標目的地準則計分。
如藉由方塊344所表明地,在一實行例中,過濾驅動器228參考將不同的檔案型式及/或不同的檔案名稱與不同的快取計分CS相關聯之一查詢表或其他的記憶體。如藉由方塊345所表明地,如果被寫入之檔案的身份被辨識作為是與一特定快取計分相關聯的,則過濾驅動器228藉由與檔案身份或檔案型式相關的加權的目標目的地快取計分而增量用於寫入命令之總計分。
歷史I/O 326係關於藉由過濾驅動器228所接收的I/O命令之歷史資料或特性,其包括先前已被執行的那些I/O命令,其中此等命令已被快取且被執行如一聚集寫入之部份或是否此等命令已即時地被執行。此等歷史I/O命令可以包括所接收之讀取和寫入命令兩者的特性。先前在自接受目前寫入命令起之一預定時間範圍之內,被接收且被執行的某些讀取命令及/或某些寫入命令,可以被預定或歷史性地被辨識作為表明被分析之目前寫入命令的特性。例如,先前所接收且被執行的某些讀取命令及/或某些寫入命令可以表明目前寫入命令是很有可能是長度較短的,或相關於也可能先前已經被快取之其他寫入命令並且因此是用於快取以及依序的聚集寫入之良好的候選者。相對地,先前在自接受目前寫入命令的一預定時間範圍之內所接收且被執行之其他讀取命令或其他寫入命令,可以替代地表明被分析之目前或當前的寫入命令是具有較大的大小或可能是無關於目前快取之其他命令,以至於目前寫入命令不是用於快取以及依序的聚集寫入之一良好的候選者。在一實行例中,那些被分析之歷史I/O命令通常落在以秒及分級數之一時框的期間被分析的當前I/O命令的接受之一時間範圍內。
如藉由方塊346所表明地,在一實行例中,過濾驅動器228參考將不同的歷史I/O命令及/或不同樣型的歷史I/O命令與不同的快取計分CS之相關聯之一查詢表或其他記憶體。如藉由方塊347所表明地,如果歷史I/O命令之身份或歷史I/O命令之樣型被辨識是與某一快取計分相關聯,則過濾驅動器228藉由與歷史I/O命令或歷史I/O命令樣型相關聯的加權快取計分而增量用於寫入命令之總計分。
待決I/O 328係關於藉由過濾驅動器228所接收之待決的I/O命令之資料或特性。在一實行例中,在命令佇列223中之該等I/O命令的特性被分析。例如,過濾驅動器228可以判定在命令佇列223中的該等I/O命令之特性,包括讀取和寫入命令兩者。在另一實行例中,最近已被快取且是目前存在快取226之一者中的寫入命令之特性被分析。當目前寫入命令正被分析時,命令佇列中的某些讀取命令及/或某些寫入命令可以被預定或歷史地被辨識,如表明被分析之目前寫入命令的特性。例如,目前命令佇列中之某些讀取命令及/或某些寫入命令可以表明目前寫入命令是很有可能是具有較短長度或相關於也可能先前已被快取之其他寫入命令並且因此是用於快取及依序的聚集寫入之良好的候選者。相對地,目前命令佇列中之其他的讀取命令或其他的寫入命令可以替代地表明目前或當前被分析之寫入命令是較大之大小或很可能是無關於目前快取之其他命令,以至於該目前寫入命令不是用於快取以及依序的聚集寫入之一良好的候選者。當目前寫入命令是被分析時,對於目前是存在一快取中的那些寫入命令可以是同樣地。
如藉由方塊348所表明地,在一實行例中,過濾驅動器228參考將不同的待決I/O命令PC及/或不同的待決I/O命令樣型與不同的快取計分CS相關聯之一查詢表或其他記憶體。如藉由方塊349所表明地,挼果待決I/O命令或待決I/O命令樣型之身份被辨識為是與某一快取計分相關聯,則過濾驅動器228藉由與待決I/O命令或待決I/O命令樣型相關聯的加權待決I/O快取計分而增量用於寫入命令之總計分。
於其他實行例中,存在命令佇列中的讀取和寫入兩者之I/O命令的實際總數目、在命令佇列223之內的特定讀取命令數目、在命令佇列223之內的特定寫入命令數目及/或在一個或多個寫入命令快取226中之寫入命令數目被分析以判定目前被分析之寫入命令是否為用以快取以及依序的聚集寫入之一良好的候選者。例如,命令佇列223中之大量的I/O命令可以表明該等I/O命令是正以高頻率或速率被接收並且因此可以是具有較小的大小以及可以是彼此相關的,以至於該目前寫入命令也是很有可能是具有較小的大小或是相關而將是用以快取以及聚集寫入之一良好的候選者。在一實行例中,被分析的那些待決I/O命令通常落在當以微秒為級數之一時框的期間被分析的目前I/O命令被接受之一時間範圍之內。
如藉由方塊348所表明地,在一實行例中,過濾驅動器228部份地依據對於任何快取之寫入命令數目的命令佇列中之待決I/O命令數目,而比較待決I/O命令已被接收的頻率F與一預定頻率臨界值FT。如藉由方塊349所表明地,如果頻率臨界值被滿足,則過濾驅動器228藉由與被滿足之臨界值相關聯的快取計分而增量總計分。在一實行例中,過濾驅動器228可以比較I/O頻率與複數個不同的臨界值,其中各不同的臨界值具有一相關聯的不同準則計分。於另一其他實行例中,替代於比較該頻率與該頻率臨界值,過濾驅動器28可以替代地比較目前於命令佇列中之I/O命令總數目及/或目前於任何快取226中之寫入命令總數目與一計算臨界值或複數個不同的計算臨界值以判定哪個加權快取計分將被添加至用於被分析之寫入命令的總計分。
資料大小330係關於根據被分析之寫入命令而將被寫入的資料之大小或數量。在此一實行例中,過濾驅動器228與操作系統221通訊或另外判定與被分析之寫入命令相關聯的資料之大小或數量。如上所述地,用以快取和依序的聚集寫入之良好候選者的寫入命令或供用於較小量資料之寫入命令,由於它們是很有可能充填於一個別儲存區域的邊界之內並且如果獨自地寫入一儲存區域中,將導致一儲存區域空間之最低效益的使用。當與其他快取的寫入命令之資料組合時,具有較小量之相關聯的資料之寫入命令也是不太可能延伸超過或超出一儲存區域之邊界。
如藉由方塊350所表明地,在一實行例中,過濾驅動器228將被分析之寫入命令相關聯的資料之大小或數量與一預定大小臨界值ST相比較。如藉由方塊351所表明地,響應於超出大小臨界值ST的寫入命令DS之大小,過濾驅動器228依據資料大小準則330而藉由一加權的資料大小快取計分CS以增量總計分。而在另一個實行例中,過濾驅動器228將寫入命令相關聯的資料之大小或數量與複數個不同的臨界值相比較,各不同臨界值具有一對應之不同資料大小準則計分CS。於再另一實行例中,過濾驅動器228將被分析之寫入命令相關聯的資料之大小或數量與將不同資料大小與不同資料大小快取計分相關聯的一記憶體列表相比較,以判定總計分應該被實行之資料大小快取計分。
時間樣型332係關於與被分析之寫入命令相關聯的時序特性。例如,當應用時間樣型準則332時,過濾驅動器228考慮在寫入命令被接收的一日中時間,在寫入命令被接收之一週中之星期幾及/或與該寫入命令相關聯的其他時序特性。依據歷史或經驗資料,寫入命令可以依據它們的時序特性而可以或多或少可能地是供用於快取和聚集寫入之良好的候選者(較小的大小及相關於其他快取檔案)。
如藉由方塊352所表明地,在一實行例中,過濾驅動器228參考一查詢表LT,其將具有不同時間樣型快取計分相關聯於不同時間特性。例如,如果與目前被分析之寫入命令相關聯的一時間樣型TP匹配於查詢表中之時序數值TV,則過濾驅動器228藉由加權時間樣型快取計分CS而增量用於寫入命令之總快取計分或總計分TS,如藉由方塊353所表明地。
如藉由判定方塊360所表明地,一旦準則之各者已被應用至寫入命令,則過濾驅動器228比較所產生的總計分TS與一預定快取臨界值CT以判定關於該寫入命令是否應該被快取。如藉由方塊362所表明地,響應於該總計分並不滿足該預定快取臨界值,則過濾驅動器228即時地寫入該寫入命令至該儲存區域R。如藉由方塊364所表明地,如果用於該寫入命令之總計分超出判定方塊360之快取臨界值,則過濾驅動器228快取該寫入命令WC至該寫入命令快取以供用於依序的聚集寫入。
在例示之範例中,系統220包含複數個不同的寫入命令快取226。在此一實行例中,過濾驅動器228可以依據準則320、322、324、326、328、330、332之一者或多者而選擇性地指派該寫入命令至該等寫入命令快取226之一者。例如,依據所應用之準則,過濾驅動器228可以判定被分析之一特別的寫入命令是很有可能是相關於或相關聯於目前於快取226B中被快取之寫入命令,如同比較至其他寫入命令快取226A和226C中之寫入命令。換言之,當此等命令被快取時,過濾驅動器228依據應用於方塊316中之準則而選擇性地群聚或相關聯具有相似特性或很有可能是彼此相關的那些寫入命令。因而,被快取且被寫入至一個別的儲存區域之寫入命令可以是更密切地彼此相關。
在一實行例中,過濾驅動器228另外地追蹤與快取226之各者中的寫入命令相關聯之資料總數量。在此一實行例中,對於被分析之各個寫入命令,依據將根據各個寫入命令快取之寫入命令被寫入的目前資料總數量,過濾驅動器228選擇最適合於接收該寫入命令之個別的寫入命令快取路徑。例如,當比較至目前可能具有較大資料總數量之其他的寫入命令快取時,具有一較小總資料數量之寫入命令快取可以被判定將是用於一寫入命令之一較佳的快取目的地。
又在另一個實行例中,過濾驅動器228可以另外地考慮與被分析之寫入命令相關聯的資料之大小。過濾驅動器228可以考慮被分析之寫入命令的資料之大小以及在該等寫入命令快取的各者內之可用的空間數量,以便判定該寫入命令是否將適合在任何寫入命令快取之內,及/或判定哪個寫入命令快取應該接收該寫入命令以最有效地充填一寫入命令快取或一儲存區域之可用的空間。例如,一特別的寫入命令具有一相關聯的資料大小,其將導致一特別的寫入命令快取以及更完全地被充填的儲存區域上依序地被寫入,以至於過濾驅動器228將指派該特別的寫入命令至該特別的寫入命令快取。
圖7是一範例方法400之流程圖,該方法400可以藉由過濾驅動器228被實行以判定一寫入命令應該被指派至快取226之何者。於其他實行例中,其他準則或方法可以替代地被使用以判定一寫入命令是將被指派至哪一快取。如藉由方塊404和406所表明地,過濾驅動器228接收寫入命令且判定與該寫入命令相關聯的資料之大小DS。
如藉由方塊408所表明地,過濾驅動器228追蹤寫入命令快取226(C1
-Cn
)之各者的總共之目前大小TCS。如藉由方塊410所表明地,對於各快取226,如果在方塊404中所接收的寫入命令被添加至個別的快取時,過濾驅動器228判定假設之新總資料大小TDS。如藉由方塊412所表明地,過濾驅動器228接著依據它們的假設之新總資料大小TDS,自最大到最小而排序該等快取。
如藉由方塊414和判定區塊416所表明地,自具有該最大假設之總資料大小的快取開始,過濾驅動器228比較該快取之總資料大小TDS與區域大小RS以確定快取中之資料數量將不會超出供用於聚集寫入將發生的區域之大小。過濾驅動器228進一步地比較該快取之總資料大小與一預定充填百分比臨界值%T。在一實行例中,該充填百分比臨界值%T包含一儲存區域的總大小之一預定百分比。於其他實行例中,一資料大小臨界值可以取代該充填百分比臨界值而替代地被使用。在一些實行例中,該臨界值可以替換地基於一快取大小之一百分比充填率,它本身是成比例於儲存區域之大小。如藉由方塊416所表明地,如果對於特別的快取x之總資料大小TDS滿足兩個臨界值,則過濾驅動器428快取目前寫入命令至該特別的快取x。如藉由方塊420所表明地,如果對於該特別的快取x之總資料大小TDS無法滿足兩個臨界值,(其對於區域大小是太大,或無法滿意地充填一儲存區域之空間),則過濾驅動器228繼續關於具有下一個最大的假設之新總資料大小TDS之快取進行相同的分析。
如藉由圖6所展示地,方法300進一步地包含藉由執行目前於快取中之寫入命令而寫入資料至一單一儲存區域中而判定何時進行一聚集寫入,何時將“清空”一快取。在例示之範例中,過濾驅動器228應用二個準則以供判定何時清空一快取。如藉由判定方塊370所表明地,在一實行例中,過濾驅動器228對照一快取時間臨界值CTT而評估一寫入命令時間。在一實行例中,該寫入命令時間可以包含對於快取中的各個寫入命令之個別的駐留時間,其中如果一寫入命令具有超出該快取時間臨界值CTT之一快取駐留時間時,則判定方塊370被滿足。在另一實行例中,該寫入命令時間,其對照於快取時間臨界值被比較,依據對於該快取中之一寫入命令子集合的快取駐留時間或依據在該快取之內的所有該等寫入命令之一聚集而可以包含依據一統計的一數值。例如,該寫入命令時間,其對照於快取時間臨界值被比較,可以包含快取中之寫入命令的駐留時間之一中數或平均。又在另一個實行例中,該寫入命令時間包含自藉由該快取之一先前之個別的寫入命令之接受時候起的一經過時間。
如藉由判定方塊372所表明地,如果判定方塊370被滿足,如於寫入命令不超出快取時間臨界值之情
況中,則過濾驅動器228藉由評估快取之大小而繼續進行。在例示之範例中,過濾驅動器228比較快取之大小與一預定快取大小臨界值CST。例如,在某一點,一快取可以充分地被充填,以至於其可以被判定為備妥“清空”以供一聚集寫入操作。在一實行例中,響應於完全充填或等於資料儲存容量或儲存區域之大小的該快取之大小,“清空”該快取至一聚集寫入操作被觸發。於其他實行例中,響應於該快取之大小是儲存區域之資料儲存容量的一特定百分比,“清空”該快取至一聚集寫入操作被觸發。例如,在一實行例中,響應於該快取之大小為儲存區域之資料儲存容量的至少60%、且標稱上是80%,此“清空”被觸發。
如果在判定區塊370、372中無任何一準則被滿足,則過濾驅動器228自命令佇列223繼續進行至下一個I/O命令。如果判定區塊370或372的任一準則被滿足,則過濾驅動器228藉由進行一聚集寫入操作至一儲存區域R而清空該快取,如藉由方塊376所表明地。當比較至準則判定方塊372時,雖然判定方塊370之準則被例示如具有一較大之優先序,但於其他實行例中,此等判定區塊之順序可以被倒反。在其他實行例中,其他準則可以被應用於判定何時清空寫入至一儲存區域之一快取形式聚集。
雖然本揭示已參考實行範例被說明,熟習本技術之工作人員應明白,本揭示之形式和細節可以改變而不脫離申請專利範圍主題標的之精神和範疇。例如,雖然不同的實行範例可能已被說明如包括提供一個或多個利益之一個或多個特點,其是預期所說明之特點可以在上述之實行範例或其他替代的實行例中彼此互換或替代地彼此組合。因為本揭示之技術是相對地複雜,並不是技術中的所有改變是可預見的。參考實行範例被說明並且在隨後的申請專利範圍中被提出之本揭示是明顯地有意儘可能地廣泛。例如,除非明確地被提及,否則列舉一單一特別的元件之申請專利範圍也包括複數個此等特別元件。在申請專利範圍中之字詞“第一”、“第二”、“第三”以及等等,僅區分不同的元件,並且,除非另有說明,否則將不是特定地與本揭示中之元件的一特別順序或特別計數相關聯。
20‧‧‧固態儲存系統
24‧‧‧固態儲存媒體
25‧‧‧輸入/輸出(I/O)資料庫
28‧‧‧過濾驅動器
30A-F‧‧‧儲存區域
30(R1 -Rn )‧‧‧預定儲存區域
35‧‧‧寫入命令
37‧‧‧個別的寫入
39‧‧‧快取寫入命令
40‧‧‧寫入命令
D1-D14‧‧‧資料
100‧‧‧方法
104-110‧‧‧方法步驟
220‧‧‧固態儲存系統
221‧‧‧操作系統
223‧‧‧命令佇列
226‧‧‧寫入命令快取
226A、226B、226C‧‧‧寫入命令快取
228‧‧‧過濾驅動器
232‧‧‧檔案系統驅動器
236‧‧‧處理器(P)
238‧‧‧指令(I)
300‧‧‧方法
304-316‧‧‧步驟方塊
320‧‧‧應用有效期
322‧‧‧應用身份
324‧‧‧目標目的地
326‧‧‧歷史I/O
328‧‧‧待決I/O
330‧‧‧資料大小
332‧‧‧時間樣型
340-374‧‧‧步驟方塊
400‧‧‧方法
404-420‧‧‧步驟方塊
24‧‧‧固態儲存媒體
25‧‧‧輸入/輸出(I/O)資料庫
28‧‧‧過濾驅動器
30A-F‧‧‧儲存區域
30(R1 -Rn )‧‧‧預定儲存區域
35‧‧‧寫入命令
37‧‧‧個別的寫入
39‧‧‧快取寫入命令
40‧‧‧寫入命令
D1-D14‧‧‧資料
100‧‧‧方法
104-110‧‧‧方法步驟
220‧‧‧固態儲存系統
221‧‧‧操作系統
223‧‧‧命令佇列
226‧‧‧寫入命令快取
226A、226B、226C‧‧‧寫入命令快取
228‧‧‧過濾驅動器
232‧‧‧檔案系統驅動器
236‧‧‧處理器(P)
238‧‧‧指令(I)
300‧‧‧方法
304-316‧‧‧步驟方塊
320‧‧‧應用有效期
322‧‧‧應用身份
324‧‧‧目標目的地
326‧‧‧歷史I/O
328‧‧‧待決I/O
330‧‧‧資料大小
332‧‧‧時間樣型
340-374‧‧‧步驟方塊
400‧‧‧方法
404-420‧‧‧步驟方塊
圖1是用於寫入命令過濾之一固態儲存系統範例的分解圖。
圖2是用以過濾寫入命令之一固態儲存方法範例的流程圖。
圖3是分解地例示不具有圖2之方法的寫入命令過濾技術之一固態資料儲存範例的圖形。
圖4是一分解地例示具有圖2之方法的寫入命令過濾之一固態儲存範例的圖形。
圖5是用於寫入命令過濾之另一固態儲存系統範例的分解圖。
圖6是用以過濾寫入命令之另一固態儲存方法範例的流程圖。
圖7是用以排定寫入命令至不同快取的一方法範例之流程圖。
Claims (15)
- 一種方法,其包含下列步驟:接收供用於具有儲存區域之一固態儲存媒體的一寫入命令集合;依據準則過濾出該寫入命令集合之一子集合;快取該寫入命令子集合;以及根據該寫入命令子集合聚集寫入於該固態儲存媒體的該等儲存區域之一者的邊界之內。
- 如請求項1之方法,其進一步地包含發送快取選擇寫入命令至該固態儲存媒體以供用於該聚集寫入。
- 如請求項2之方法,其中該等快取選擇寫入命令是在依據該等寫入命令之至少一者的一快取延遲之時間被發送至該固態儲存媒體以供用於該聚集寫入。
- 如請求項3之方法,其中該等快取選擇寫入命令是在依據任何個別的快取寫入命令之一最長快取延遲之時間被發送至該固態儲存媒體以供用於該聚集寫入。
- 如請求項2之方法,其進一步地包含根據目前快取之選擇寫入命令而監測將被寫入之一資料總數量,其中該等快取選擇寫入命令是在依據該資料總數量之時間被發送至該固態儲存媒體以供用於該聚集寫入。
- 如請求項2之方法,其中該等儲存區域之該者具有一資料儲存容量且其中該等快取選擇寫入命令響應於該等快取選擇寫入命令之一資料總數量為該資料儲存容量之至少60%被發送至該固態儲存媒體以供用於該聚集寫入。
- 如請求項1之方法,其中該等接收之寫入命令依序地並且如它們所接收之順序而一個接一個地被過濾。
- 如請求項1之方法,其中該等準則包含選自一準則族群之至少一準則,該準則族群是由下列者所構成:應用有效期、應用版本、應用特徵、待決輸入/輸出(I/O)要求、I/O操作中之時間樣型以及所存取之檔案型式。
- 如請求項1之方法,其中該等準則是被施加至該等接收的寫入命令之各個別的寫入命令且其中該等準則包含將根據各個別的寫入命令而被寫入之一資料數量。
- 如請求項1之方法,其中該等準則是被施加至該等接收的寫入命令之各個別的寫入命令,且其中被施加至各個別的寫入命令之該等準則係包含自接收一先前之個別的寫入命令起算的一經過時間。
- 一種固態儲存系統,其包含:一具有儲存區域之固態儲存媒體;以及一過濾驅動器,其用以:接收用以寫入至該固態儲存媒體之寫入命令;依據準則而過濾出所選擇之寫入命令;快取該等選擇之寫入命令;及根據該等選擇之寫入命令的一聚集,促使資料聚集寫入於該固態儲存媒體的該等儲存區域之一者的邊界之內。
- 如請求項11之系統,其中該等準則包含選自一準則族群之至少一準則,該準則族群是由下列者所構成:應用有效期、應用版本、應用特徵、待決輸入/輸出(I/O)要求、I/O操作中之時間樣型、所存取之檔案型式、以及所進行之一檔案存取型式。
- 一種非暫態電腦可讀取媒體,其包含用以指示一處理器以進行下列事項之指令:接收用以寫入至具有儲存區域之一固態儲存媒體的寫入命令;依據準則而過濾出所選擇之寫入命令;快取該等選擇之寫入命令;以及根據該等選擇之寫入命令的一聚集,促使資料聚集寫入於該固態儲存媒體的該等儲存區域之一者的邊界之內。
- 如請求項13之非暫態電腦可讀取媒體,其進一步地包含用以指示該處理器以發送該等快取選擇寫入命令至該固態儲存媒體而用於該聚集寫入之指令。
- 如請求項13之非暫態電腦可讀取媒體,其中該等準則包含選自一預定準則族群之至少一準則,該預定準則族群是由下列者所構成:應用有效期、應用版本、應用特徵、待決輸入/輸出(I/O)要求、I/O操作中之時間樣型、所存取之檔案型式、以及所進行之一檔案存取型式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??PCT/US15/57116 | 2015-10-23 | ||
PCT/US2015/057116 WO2017069773A1 (en) | 2015-10-23 | 2015-10-23 | Write commands filtering |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201719431A TW201719431A (zh) | 2017-06-01 |
TWI641953B true TWI641953B (zh) | 2018-11-21 |
Family
ID=58557784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105133856A TWI641953B (zh) | 2015-10-23 | 2016-10-20 | 寫入命令過濾技術 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10712971B2 (zh) |
EP (1) | EP3332319B1 (zh) |
CN (1) | CN108139904B (zh) |
TW (1) | TWI641953B (zh) |
WO (1) | WO2017069773A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10013734B1 (en) | 2017-04-01 | 2018-07-03 | Intel Corporation | Programmable controller and command cache for graphics processors |
US10824598B2 (en) | 2018-08-07 | 2020-11-03 | Dell Products L.P. | Handling file commit and commit-delete operations in an overlay optimizer |
US10846241B2 (en) * | 2018-08-29 | 2020-11-24 | Vmware, Inc. | Score-based cache admission and eviction |
US10969973B2 (en) * | 2018-09-20 | 2021-04-06 | Microsoft Technology Licensing, Llc | Software filtered memory devices in computing systems |
CN114281723A (zh) * | 2020-09-28 | 2022-04-05 | 马来西亚瑞天芯私人有限公司 | 一种存储设备的内存控制器系统和内存调度方法 |
US11789657B2 (en) * | 2020-10-23 | 2023-10-17 | Cirrus Data Solutions Inc. | Devices, systems, and methods for transparently intercepting data stored on a storage device and providing services related to the data |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100199033A1 (en) * | 2009-02-02 | 2010-08-05 | Lau Nguyen | Solid-state drive command grouping |
US20120311263A1 (en) * | 2011-06-04 | 2012-12-06 | Microsoft Corporation | Sector-based write filtering with selective file and registry exclusions |
CN103150136A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于ssd的大容量缓存中的lru策略实现方法 |
CN103703450A (zh) * | 2011-07-20 | 2014-04-02 | 华为技术有限公司 | Ssd存储访问的方法和装置 |
CN103793181A (zh) * | 2012-11-05 | 2014-05-14 | 腾讯科技(深圳)有限公司 | 一种多层关联存储架构的数据同步方法及数据同步系统 |
TW201435729A (zh) * | 2012-11-20 | 2014-09-16 | Charles I Peddle | 固態硬碟機架構 |
TW201520793A (zh) * | 2013-10-10 | 2015-06-01 | Apple Inc | 具有共享檔案系統之記憶體系統 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640404B2 (en) | 2005-10-31 | 2009-12-29 | Microsoft Corporation | File system write filtering for selectively permitting or preventing data from being written to write-protected storage |
US20070180186A1 (en) | 2006-01-27 | 2007-08-02 | Cornwell Michael J | Non-volatile memory management |
JP4437489B2 (ja) * | 2006-10-25 | 2010-03-24 | 株式会社日立製作所 | 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム |
JP4234753B2 (ja) * | 2006-12-15 | 2009-03-04 | 株式会社東芝 | ハードディスクドライブおよびコマンド実行方法 |
US20090043831A1 (en) | 2007-08-11 | 2009-02-12 | Mcm Portfolio Llc | Smart Solid State Drive And Method For Handling Critical Files |
KR20090034629A (ko) | 2007-10-04 | 2009-04-08 | 삼성전자주식회사 | 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법 |
US8612668B2 (en) * | 2008-11-24 | 2013-12-17 | Juniper Networks, Inc. | Storage optimization system based on object size |
JP5399094B2 (ja) * | 2009-02-25 | 2014-01-29 | 株式会社日立情報通信エンジニアリング | 補助記憶装置用フィルタドライバ手段を備えた電子計算機、補助記憶装置用フィルタドライバプログラム、及び、補助記憶装置用フィルタドライバプログラムの記録媒体 |
US8560770B2 (en) | 2009-11-13 | 2013-10-15 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US20120011314A1 (en) * | 2010-07-01 | 2012-01-12 | Infinidat Ltd. | Storage system with reduced energy consumption and method of operating thereof |
US8655847B2 (en) * | 2010-08-16 | 2014-02-18 | Microsoft Corporation | Mirroring data changes in a database system |
US20120221767A1 (en) * | 2011-02-28 | 2012-08-30 | Apple Inc. | Efficient buffering for a system having non-volatile memory |
US20140181368A1 (en) * | 2012-12-26 | 2014-06-26 | Unisys Corporation | Equalizing wear on storage devices with write counters |
GB2501791B (en) * | 2013-01-24 | 2014-06-11 | Imagination Tech Ltd | Register file having a plurality of sub-register files |
US8775687B1 (en) * | 2013-04-15 | 2014-07-08 | Lsi Corporation | Method to ensure data coherency in a scalable aggregate neighbor-device interface |
US9646705B2 (en) * | 2013-06-12 | 2017-05-09 | Samsung Electronics Co., Ltd. | Memory systems including nonvolatile memory devices and dynamic access methods thereof |
CN104426945B (zh) * | 2013-08-27 | 2019-08-13 | 腾讯科技(深圳)有限公司 | 一种获取应用性能数据的方法、设备和系统 |
US20150113204A1 (en) | 2013-10-17 | 2015-04-23 | National Chiao Tung University | Data storage device and computing system with the same |
US9921750B2 (en) * | 2014-11-20 | 2018-03-20 | Samsung Electronics Co., Ltd. | Solid state drive (SSD) memory cache occupancy prediction |
US9529718B2 (en) * | 2014-12-12 | 2016-12-27 | Advanced Micro Devices, Inc. | Batching modified blocks to the same dram page |
-
2015
- 2015-10-23 US US15/757,383 patent/US10712971B2/en active Active
- 2015-10-23 WO PCT/US2015/057116 patent/WO2017069773A1/en active Application Filing
- 2015-10-23 EP EP15906851.9A patent/EP3332319B1/en active Active
- 2015-10-23 CN CN201580083371.3A patent/CN108139904B/zh active Active
-
2016
- 2016-10-20 TW TW105133856A patent/TWI641953B/zh not_active IP Right Cessation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100199033A1 (en) * | 2009-02-02 | 2010-08-05 | Lau Nguyen | Solid-state drive command grouping |
US20120311263A1 (en) * | 2011-06-04 | 2012-12-06 | Microsoft Corporation | Sector-based write filtering with selective file and registry exclusions |
CN103703450A (zh) * | 2011-07-20 | 2014-04-02 | 华为技术有限公司 | Ssd存储访问的方法和装置 |
CN103793181A (zh) * | 2012-11-05 | 2014-05-14 | 腾讯科技(深圳)有限公司 | 一种多层关联存储架构的数据同步方法及数据同步系统 |
TW201435729A (zh) * | 2012-11-20 | 2014-09-16 | Charles I Peddle | 固態硬碟機架構 |
CN103150136A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于ssd的大容量缓存中的lru策略实现方法 |
TW201520793A (zh) * | 2013-10-10 | 2015-06-01 | Apple Inc | 具有共享檔案系統之記憶體系統 |
Also Published As
Publication number | Publication date |
---|---|
EP3332319B1 (en) | 2023-09-06 |
US20180246672A1 (en) | 2018-08-30 |
EP3332319A4 (en) | 2019-03-27 |
EP3332319A1 (en) | 2018-06-13 |
US10712971B2 (en) | 2020-07-14 |
CN108139904B (zh) | 2022-07-05 |
CN108139904A (zh) | 2018-06-08 |
WO2017069773A1 (en) | 2017-04-27 |
TW201719431A (zh) | 2017-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI641953B (zh) | 寫入命令過濾技術 | |
US9665495B2 (en) | Methods and systems for throttling writes to a caching device in response to read misses | |
Rho et al. | {FStream}: Managing flash streams in the file system | |
US20120072683A1 (en) | Managing Write Operations in a Computerized Memory | |
US10409526B2 (en) | Adaptive garbage collection | |
US10552317B2 (en) | Cache allocation in a computerized system | |
US8417878B2 (en) | Selection of units for garbage collection in flash memory | |
US10802718B2 (en) | Method and device for determination of garbage collector thread number and activity management in log-structured file systems | |
DE102008057219B4 (de) | Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem | |
US20160162187A1 (en) | Storage System And Method For Processing Writing Data Of Storage System | |
JP2014522537A (ja) | 使用によるフラッシュ・ベースの記憶装置へのデータ配置の管理 | |
US20120297123A1 (en) | Wear leveling | |
DE102012103869A1 (de) | Optimierter Flash-basierender Cache-Speicher | |
CN107844432B (zh) | 一种固态硬盘动态垃圾回收的方法及固态硬盘 | |
US9262339B2 (en) | Managing write operations in a computerized memory | |
US20150212744A1 (en) | Method and system of eviction stage population of a flash memory cache of a multilayer cache system | |
CN105653466B (zh) | 数据储存装置以及快闪存储器控制方法 | |
US20150212949A1 (en) | Storage control device and storage control method | |
CN113961517A (zh) | 文件系统管理方法、电子设备及存储介质 | |
US10503651B2 (en) | Media cache band cleaning | |
TW201616362A (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
JP6429197B2 (ja) | 論理物理アドレス変換テーブルの制御方法及びメモリ装置 | |
KR101631409B1 (ko) | 드라이브 컨트롤러를 포함하는 저장 장치, 상기 드라이브 컨트롤러가 수행하는 가비지 컬렉션 수행 방법 | |
KR20210036120A (ko) | 플래시 메모리를 위한 시간 기반의 캐시 교체 방법 및 이를 지원하는 장치 | |
CN117806986A (zh) | 应用数据的多流管理方法及闪存设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |