TWI584120B - 用於動態調適快取的方法及系統 - Google Patents

用於動態調適快取的方法及系統 Download PDF

Info

Publication number
TWI584120B
TWI584120B TW102105705A TW102105705A TWI584120B TW I584120 B TWI584120 B TW I584120B TW 102105705 A TW102105705 A TW 102105705A TW 102105705 A TW102105705 A TW 102105705A TW I584120 B TWI584120 B TW I584120B
Authority
TW
Taiwan
Prior art keywords
data
space
storage device
host
amount
Prior art date
Application number
TW102105705A
Other languages
English (en)
Other versions
TW201342063A (zh
Inventor
荷莉雅 席米歐尼斯庫
馬克 艾許
路卡 伯特
羅伯特 昆恩
厄爾T 寇翰
提摩希 卡尼帕
Original Assignee
Lsi公司
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
Priority claimed from US13/566,204 external-priority patent/US9158695B2/en
Application filed by Lsi公司 filed Critical Lsi公司
Publication of TW201342063A publication Critical patent/TW201342063A/zh
Application granted granted Critical
Publication of TWI584120B publication Critical patent/TWI584120B/zh

Links

Classifications

    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

用於動態調適快取的方法及系統
本揭露內容大致係有關於快取的領域,並且更特別是有關用於動態調適快取之系統以及用於管理一動態調適快取之方法。
快取是已知用來藉由透通地(transparently)儲存資料以使得對於該資料之未來的請求可以較快地服務到,以幫助提高儲存系統的效能。可用的快取大小越大,則快取可以提供給整體系統的效能越佳。一儲存系統快取係包括兩個部分:一儲存藉由例如是伺服器的主機加以讀取或寫入的資料之資料部分、以及一被用來識別及/或找出被儲存在該快取中而可被該主機存取的一較大量的資料的一子集合之標籤部分。一般而言,該資料部分越大,則主機的存取在該快取中“命中”的分率越高,並且該儲存系統的效能越高。
資料壓縮可被利用以便於降低一給定的資料大小所需的總儲存空間或是傳送時間。然而,資料的可壓縮性是可變的,並且是依據資料熵(entropy)的位準而定。此種在資料的可壓縮性上的可變性係產生對於具有變化的大小的資料儲存空間之需求。
在儲存系統的快取中,提供一固定且穩定的快取大小給該系統的上層經常是必要的。因此,由於該資料的可壓縮性的可變的本質以及 其對應的大小,藉由壓縮在一儲存裝置上的資料所能獲得的空間可能無法被該快取所利用。
因此,當資料會由於該資料的壓縮而可能在大小上變化時,對於儲存系統的快取之改良的方法及系統係存在著需求。
一種用於管理一動態調適快取之方法係被提出。該方法係包含從一主機接收資料並且壓縮該接收到的資料成為一壓縮的資料大小的步驟。該壓縮的資料係接著被儲存,並且剩餘的可利用的空間量係被判斷出。該方法的另一步驟係牽涉到當該可利用的空間量大於一配置的臨界值時,將提供給該主機的邏輯容量增加一個根據在該接收到的資料的大小以及該壓縮的資料的大小之間的一差值的至少一部分而定的量。
本揭露內容亦針對於一種用於動態調適快取之系統。該系統係包含一具有一實體容量的儲存裝置,以用於儲存從一主機接收到的資料。該系統亦可包含一通訊地耦接至該儲存裝置並且被配置以用於從該主機接收資料的控制模組。該控制模組係被配置以用於壓縮從該主機接收到的該資料成為一壓縮的資料大小。在一替代實施例中,該資料可在該儲存裝置上加以壓縮。該控制模組亦可被配置以用於判斷在該儲存裝置上之一可利用的空間量。該控制模組亦可被配置以用於判斷一回收(reclaimed)的空間,該回收的空間是根據在從該主機接收到的該資料的大小以及該壓縮的資料的大小之間的一差值而定。該系統亦可包含一被配置以用於提供一邏輯容量給該主機的介面模組。該邏輯容量係具有一可變的大小,並且選配地及/或選擇性地包含該回收的空間的至少一部分。
本揭露內容亦針對於一種用於管理一快取之方法。該方法係包含從一主機接收資料並且壓縮該資料成為一壓縮的資料大小的步驟。該壓縮的資料係接著被儲存,並且一可利用的空間量係被判斷出。接著,例如當該可利用的空間量大於一配置的臨界值時,在該接收到的資料的大小以及該壓縮的資料的大小之間的一差值的至少一部分係選配地及/或選擇性地被提供給該主機。
本揭露內容亦針對於一種包含藉由一儲存裝置透過一儲存介面來接收複數個資料部分的步驟之方法。該方法的下一個步驟係需要縮小該些資料部分的每一個以形成個別的縮小後的資料部分,該些資料部分的至少某些個係具有一比該些個別的縮小後的資料部分大的大小。該方法亦包含在該儲存裝置的一資料記憶體中將該些資料部分儲存為該些縮小後的資料部分的步驟。該資料記憶體可以是非揮發性資料記憶體。該方法的最後一個步驟是根據該資料記憶體的一利用率來判斷該資料記憶體的一邏輯容量。在此方法中,該資料記憶體的該邏輯容量係根據該些資料部分的縮小而改變。
將瞭解到的是,前述的一般說明以及以下的詳細說明僅為範例及解釋的,因而不一定是限制本揭露內容的。被納入在說明書中且構成說明書的一部分之所附的圖式係描繪該揭露內容之標的。該說明及圖式係一起作用以解說該揭露內容的原理。
100‧‧‧方法
102、104、106、108、110‧‧‧步驟
114‧‧‧方法
116、118、120、122、124‧‧‧步驟
200‧‧‧動態調適快取
202‧‧‧邏輯空間
204‧‧‧實體儲存空間
206‧‧‧未壓縮的資料空間
208‧‧‧壓縮的資料空間
210‧‧‧回收的空間
212‧‧‧第二未壓縮的資料空間
214‧‧‧第二壓縮的資料空間
216‧‧‧第二回收的空間
220‧‧‧第三未壓縮的資料空間
222‧‧‧第三壓縮的空間
224‧‧‧被釋放的空間
300‧‧‧系統
302‧‧‧儲存裝置
304‧‧‧控制模組
306‧‧‧介面模組
308‧‧‧主機
402‧‧‧快取標籤
406‧‧‧處理器
410‧‧‧介面
412‧‧‧記憶體
414‧‧‧快取資料
500‧‧‧方法
502、504、506、508‧‧‧步驟
該揭露內容的許多優點可藉由參考至所附的圖式而由熟習此項技術者來更佳地理解,其中: 圖1A是根據本揭露內容的一種用於管理一動態調適快取之方法的流程圖;圖1B是根據本揭露內容的一種用於管理一快取之方法的流程圖;圖2A至2F係展示根據本揭露內容,在數個不同的時間間隔的動態調適快取;圖3係展示根據本揭露內容的一種動態調適快取;圖4A及4B分別展示根據本揭露內容的一個別的用於提供動態調適快取之系統;以及圖5是根據本揭露內容的另一種方法的流程圖。
現在將會詳細參考至所揭露之標的,該標的係被描繪在所附的圖式中。
在某些實施例中,一動態調適儲存系統的快取的一資料部分係被儲存在一例如是圖3中的儲存裝置302之儲存裝置中。該儲存裝置係將一具有一界定的最大邏輯容量之邏輯位址空間對映到具有一界定的實際大小之例如是NAND快閃晶片的實體儲存裝置。該最大邏輯容量的一部分係被提供及/或做成可供較高層利用的,例如是管理該儲存系統的快取之較高層,而該部分是至少部分根據該實體儲存裝置的利用率(utilization)而改變的。該實體儲存裝置的利用率於是至少部分是根據例如經由儲存在該實體儲存裝置中的資料壓縮的可縮小性而改變的。被致能以儲存在該動態調適儲存系統的快取中的資料量於是至少部分根據被提供及/或做成可供管理該儲存系統的快取的較高層利用的最大邏輯容量的部分而改變。因此,當儲 存更多可縮小的(例如,更多可壓縮的)資料時,該動態調適儲存系統的快取係有利地被致能以提供及/或使得該最大邏輯容量之一較大的部分可供利用,並且因此能夠儲存更多資料且產生較高的效能。根據各種的實施例,該些較高層係包括以下的一或多個:該儲存裝置;一例如是圖3的控制模組304之控制模組;以及一例如是圖3的主機308之主機。例如,在某些實施例中,該控制模組係管理該動態調適儲存系統的快取之標籤(並且因此管理該資料內容),而在其它實施例中,該主機係管理該動態調適儲存系統的快取之標籤。
大致參考到圖1A,一種用於管理一動態調適快取之方法100係被展示。該動態調適快取係提供一可變的快取大小至一主機,並且選配地及/或選擇性地被致能以提供一較內含在該動態調適快取中的儲存裝置之實際大小大的邏輯大小給該主機。該方法100係包含從一主機接收資料到該動態調適快取的步驟102以及壓縮(或者是在大小上的縮小)從該主機接收到的該資料成為一壓縮的資料的步驟104。該壓縮的資料係被儲存在該儲存裝置上(106)。接著,該方法100係牽涉到判斷在該儲存裝置上之一可利用的空間量的步驟108。該方法100的另一步驟110係需要在該儲存裝置上的可利用的空間量大於一配置的臨界值時,根據在從該主機接收到的該資料的大小以及在壓縮後的資料的大小之間的一差值的至少一部分,將提供給該主機的動態調適快取的邏輯容量增加一個量。根據各種的實施例,提供給該主機的邏輯容量是以下的一或多個:增加一個等於該差值的一部分的量;增加一個成比例於該差值的一部分的量;增加一個該差值的至少一部分的量;經由該差值及其它因素的一函數計算出的;以及經由可利用的空 間量、實際大小及其它因素的一函數計算出的。該方法100可以是每次從該主機接收到資料時及/或週期性地加以執行,此係產生一根據該資料的可壓縮性來改變大小的動態調適快取。例如,該方法100可以在一規則的間隔、每隔一或多個主機命令、每隔一或多個具有一指定類型的主機命令(例如寫入命令)、及/或當可利用的空間量改變一指定的量時來加以執行。
壓縮從該主機接收到的該資料成為一壓縮的資料的步驟104可以利用一用於執行該壓縮之適當的模組或硬體(或是其它用於縮小大小的技術)而在該儲存裝置上產生。在將該壓縮的資料儲存到該儲存裝置上之前,在該控制模組上完成壓縮從該主機接收到的該資料成為一壓縮的資料的步驟104亦將會是可行的。
在圖1A中所示的方法100之判斷在該儲存裝置上的可利用的空間量的步驟108可以用各種方式來加以執行。在其中壓縮該資料的步驟104是在該控制模組上執行的實例中,判斷在該儲存裝置上的可利用的空間量的步驟108可被簡化,因為該控制模組可自動地判斷接收到的資料的大小以及在壓縮後的資料的大小,並且輕易地根據此資訊來判斷在該儲存裝置上剩餘的可利用的空間量。
若壓縮從該主機接收到的該資料成為一壓縮的資料的步驟104是發生在該儲存裝置上,則判斷在該儲存裝置上的可利用的空間量的步驟108可利用一同步的模型來加以執行。在該同步的模型下,當在該儲存裝置上的可利用的空間量超出該配置的臨界值時,該儲存裝置係傳送一例如是中斷的信號至該動態調適快取的控制模組。該控制模組接著將會透過一定義的命令(例如,一讀取緩衝器或是其它命令)來詢問該儲存裝置以讀取 可利用的空間量。在一替代實施例中,該可利用的空間係利用一非同步的模型而被判斷出。在該非同步的模型下,該控制模組將會動態地詢問該儲存裝置以判斷在一給定的時間點之可利用的空間,並且繼續週期性地詢問該儲存裝置以判斷該可利用的空間是否超出該配置的臨界值。
該方法100亦可包含當可利用的空間量小於一保留量時釋放在該儲存裝置上的空間的步驟。此可藉由除役該快取的某些項目(例如清除項目)、發出一TRIM請求至該儲存裝置、使該快取的一標籤記憶體的一或多個項目無效、以及其它的手段中的一或多個來加以達成。此步驟之目的是確保該動態調適快取能夠藉由在該儲存裝置上保留一空間量來保證給該主機一指定的最小固定大小。由於資料的可壓縮性可能是可變的,一保留的空間量係被維持在該儲存裝置上,因而當該動態調適快取接近最大的容量時,該動態調適快取仍然可以儲存資料且/或仍然可以提供一指定的效能位準。由於保證該指明的最小固定大小給該主機的要求以及資料壓縮之可變的本質,保守地設定該保留量可能是所期望的,以便於避免填滿該儲存裝置及/或降低效能到該指明的位準之下的風險。保守地設定該保留量也是重要的,因為該動態調適快取可能會由於系統限制(例如,因為一TRIM命令無法藉由該儲存裝置來同時和一讀取/寫入命令加以執行、或是根據該儲存裝置是否使用原生命令佇列(native command queuing)而定)而無法總是能夠立即實施釋放在該儲存裝置上的空間的步驟。
該用於管理一動態調適快取之方法100的另一步驟可包含在該儲存裝置上的可利用的空間量接近且/或小於該保留量時,從該儲存裝置傳送一信號至該控制模組。此步驟之目的係確保當該儲存裝置正用光可 利用的空間時,該控制模組可以及時地回應(例如,藉由釋放在該儲存裝置上的空間)。
大致參考到圖1B,一種用於管理一動態調適快取之方法114係被展示。該方法114係包含從一主機接收資料的步驟116以及壓縮(或者是在大小上的縮小)該接收到的資料成為一壓縮的資料的步驟118。該方法的下一個步驟120是儲存該壓縮的資料。該方法的另一步驟122是判斷一可利用的空間量。該方法接著包含提供在該接收到的資料的大小以及該壓縮的資料的大小之間的一差值的至少一部分給該主機的步驟。根據各種的實施例,該提供給該主機的操作是在下列的一或多個的情形下被執行:當可利用的空間量大於一配置的臨界值時(124);在時間上週期性地;在從該主機接收到的一個命令數量上週期性地;以及依照來自該主機的請求。
圖1B中所示的方法亦可包含在可利用的空間量小於一保留量時,釋放在該儲存裝置上的空間的步驟。該方法亦可包含在可利用的空間量接近且/或小於一保留量時,傳送一信號的步驟,並且可能傳送一詢問以判斷可利用的空間量。該方法114可以在每次從該主機接收到資料時加以執行。
大致參考到圖2A至2F,一動態調適快取200的一個例子係被展示。圖2A係展示在一最初的時間間隔t0的一包含一邏輯空間202以及一實體儲存空間204的動態調適快取200。該邏輯空間202是被提供給該主機的儲存空間,並且該邏輯空間202的大小是隨著時間而改變。如同圖2A中所示,在最初的時間間隔(t0),尚未從該主機接收到資料,並且該動態調適快取200的邏輯空間202以及實體儲存空間204都是空的。儘管邏輯空間 202在圖2A至2F中被描繪成相鄰實體儲存空間204,但沒有暗示邏輯空間202以及實體儲存空間204之相對的大小是相關的。根據各種的實施例,邏輯空間202是下列的一或多個:能夠儲存較實體儲存空間204少的資料;能夠儲存和實體儲存空間204相同的不可壓縮的資料量;若資料是不可壓縮的,則能夠儲存較實體儲存空間204所能儲存多的資料;總是小於一指定的最大大小;以及總是大於一指定的最小大小。
圖2B係展示在資料已經從該主機接收到該動態調適快取200之後,在一第一時間間隔t1的動態調適快取200。該資料是未壓縮的,並且需要一在該邏輯空間202上之未壓縮的資料空間206。該資料係被壓縮到一壓縮的資料空間208並且儲存到該實體儲存空間204上。該資料在壓縮後的大小(該壓縮的資料空間208)一般是小於該資料在壓縮前的大小(該未壓縮的資料空間206),儘管此係依據該資料的可壓縮性而定。
圖2C係展示在時間t2的動態調適快取200。在該時間t2,被提供給該主機的動態調適快取的邏輯空間202將會增加一個根據由於在該時間t1的資料壓縮所回收的(reclaimed)空間的至少一部分而定的量。透過該壓縮所獲得的空間是回收的空間210,並且是等於在該未壓縮的資料空間206的大小以及該壓縮的資料空間208的大小之間的一差值。圖2C係展示加到該邏輯空間202之回收的空間210。該回收的空間210係被加到提供給該主機的邏輯空間202,因此使得該動態調適快取200能夠提供一較大的邏輯空間202給該主機。在一實施例中,該回收的空間210的整個大小都被提供給該主機,然而,僅提供該回收的空間210的一部分給該主機並且在該實體儲存空間204上保留該回收的空間210的一部分也是可行的。
圖2D係展示在額外的資料係從該主機接收到該邏輯空間202之後,在時間t3的動態調適快取200。該資料是未壓縮的,並且在該邏輯空間202上佔用一第二未壓縮的資料空間212。該資料係被壓縮,並且以一第二壓縮的資料空間214來儲存到該實體儲存空間204上。當該資料是至少部分可壓縮的,則該第二壓縮的資料空間214的大小是小於該第二未壓縮的資料空間212的大小。透過該壓縮獲得的空間係被稱為一第二回收的空間216,並且是等於在該第二未壓縮的資料空間212以及該第二壓縮的資料空間214之間的一差值。如同圖2D中所示,該邏輯空間202的有效大小係增加一個根據該第二回收的空間216的大小而定的量。該第二回收的空間216係被加到該邏輯空間202,藉此使得提供一較大的動態調適快取200給該主機變為容易的。
圖2E係展示在時間t4的動態調適快取200。在該時間t4,額外的資料係被接收到該動態調適快取200。該資料是未壓縮的,並且佔用在該邏輯空間202上之一第三未壓縮的資料空間220,並且被壓縮且儲存到該實體儲存空間204上之一第三壓縮的空間222。在此時,該實體儲存空間204幾乎是滿的,並且幾乎已經到達其最大的容量。一空間量係隨時在該實體儲存空間204上被保留,以便於避免該實體儲存空間204變成滿的。若該實體儲存空間204開始變成滿到使得該保留空間的臨界值被達到時,則該動態調適快取200必須釋放空間。
圖2F係展示在時間t5的動態調適快取200。在該時間t5,空間已經被釋放至該實體儲存空間204,因而該實體儲存空間204已不再有完全滿的危險。一被釋放的空間224已經回到該實體儲存空間204,因而不再 接近其最大的容量。該被釋放的空間224可以已經釋放資料,例如是藉由從壓縮的資料空間208、第二壓縮的資料空間214以及第三被壓縮空間222中的一或多個的削減。該資料亦可以已經進行進一步的壓縮,此係產生例如是一較小的第三壓縮的空間222。
圖2F亦展示在提供給該主機的邏輯空間202中的增加的集成(aggregate),其係反映出該動態調適快取200是能夠提供一個能夠改變的邏輯空間202,並且該邏輯空間202在某些實施例中是大於該實體儲存空間204。在圖2A至2F中所示的過程可以在每次從該主機接收到資料時加以執行,此係產生一在大小上動態地改變之動態調適快取。
提供給該主機的邏輯空間的大小係根據從該主機接收到的資料的可縮小性(例如,可壓縮性)以及可利用的空間量而變動。該資料可藉由一種無損失的壓縮演算法或是其它適合用於該動態調適快取的資料縮減方法來加以縮減。當資料熵是100%時,該資料不是可壓縮的(或者是不可縮小的),因而該動態調適快取無法回收任何空間而且藉由增加該邏輯空間的大小來將其提供給該主機。當資料熵小於100%時,該資料是可壓縮的,因而該動態調適快取可回收藉由壓縮所節省的空間以及將該邏輯空間放大此量的至少一部分。由於從該主機接收到的資料的可壓縮性可能變化,其範圍從不可壓縮的資料到高度可壓縮的資料,因此該動態調適快取的大小係根據所接收的資料而動態地改變。
大致參考到圖3,根據本揭露內容的一種範例的用於動態調適快取之系統300係被展示。該系統300可以是一計算系統或裝置。該系統300係包含一儲存裝置302、一控制模組304,以及一介面模組306。該系統 300係被使用於和一主機308傳送及接收資料。該控制模組304係被配置以從該主機308接收資料,並且其可被用來壓縮該資料。或者是,該資料壓縮可發生在該儲存裝置302上。在任一種情形中,該壓縮的資料係被儲存到該儲存裝置302。根據各種的實施例,儲存裝置302係包括一儲存記憶體以儲存該接收到的資料,該儲存記憶體是下列的一或多個:一靜態隨機存取記憶體、一動態隨機存取記憶體、一內嵌記憶體、一例如NAND快閃記憶體的非揮發性記憶體、一半導體記憶體、以及任何其它類型的記憶體元件。
該控制模組304亦可被用來判斷已經藉由該壓縮而獲得的空間量,其可被稱為回收的空間。該回收的空間係等於在從該主機308接收到的資料在壓縮前的大小以及該壓縮的資料的大小之間的一差值,該壓縮的資料的大小則是計算從該主機接收到且目前藉由該儲存裝置所儲存的資料而得的。該回收的空間的至少一部分可利用該介面模組306而被提供且/或做成可供該主機308利用的。在某些實施例中,該介面模組306係被配置以用於提供一邏輯容量給該主機308。提供給該主機的邏輯容量的大小將會變化,但是可包含該回收的空間的至少一部分以及該儲存裝置302在一給定的時間點之可利用的邏輯容量。
在圖3中所示的系統300的控制模組304亦可被配置以判斷在該儲存裝置302上之可利用的邏輯空間。該控制模組304係和該儲存裝置302通訊地耦接,並且能夠從該儲存裝置302接收信號。該控制模組304亦被配置以在從該儲存裝置收到一信號之後、或是以一給定的時間間隔、或是以一個數目的傳送到該儲存裝置的命令及/或從該儲存裝置接收到的響應 週期性地詢問該儲存裝置302。
在圖3中所示的系統300的儲存裝置302可以是一具有非揮發性半導體記憶體之固態硬碟,例如是以NAND快閃為主的儲存。該儲存裝置302可被配置以在該儲存裝置302上的可利用的空間量接近及/或已經到達一配置的臨界值時,傳送一信號至該控制模組304。該儲存裝置302亦被配置以維持一保留的空間量,以確保該儲存裝置302隨時能夠儲存來自該主機308的資料且/或能夠提供一指定的最小的效能位準。例如,在某些實施例中,該保留的空間量係被維持以確保寫入放大(amplification)是小於一指定的位準。
根據各種的實施例,在圖3中所示的系統300的控制模組304是下列的一或多個:一I/O控制器;一磁碟陣列控制晶片(Raid-On-Chip,ROC)控制器;一主機匯流排轉接器;任何用於介接一儲存裝置至一主機的晶片;以及納入快取管理及/或快取控制的前述的任一個。
參照本揭露內容的圖4A,一種用於動態調適快取之系統300係被提供。該系統300係包含一介面模組306、控制模組304、以及儲存裝置302。該控制模組304係管理該快取,並且快取標籤402係位在該控制模組304中。該系統300的儲存裝置302亦包含快取資料414。該系統300係經由一介面410以通訊地耦接至一主機308。該主機308係包含一處理器406以及一記憶體412。
在本揭露內容的圖4B中,一種用於動態調適快取之系統300係被提供,其係展示當該主機308正在管理該快取的配置。在圖4B中,該系統300係包含在系統300的儲存裝置302中之快取資料414。該主機308 係包含在主機308的記憶體412中之快取標籤402。
該主機308的記憶體412可以是任何能夠儲存資料的系統及/或裝置。在一實施例中,記憶體412係儲存計算機碼,當藉由處理器406執行計算機碼時,其係使得處理器406執行一種用於管理一動態調適快取之方法。
在圖4A及4B中所示的系統300係選配地及/或選擇性地被組態設定(例如,其係採用特定應用的電路等等來執行儲存在記憶體412中及/或在儲存裝置302中及/或在其它未被描繪的記憶體中的軟體及/或韌體),以提供該主機308所傳送及接收的資料的動態調適快取。該系統300可以提供一超出該實體快取大小之邏輯或有效的快取大小給該主機308。
本揭露內容亦針對於一種如同在圖5中所示的方法500。該方法500係包含藉由一儲存裝置透過一儲存介面來接收複數個資料部分的步驟502。該儲存介面可包含一SATA介面、一SAS介面、一PCIe介面、或是其它適當的儲存介面。該方法的下一個步驟504係需要縮小該些資料部分的每一個以形成個別的縮小後的資料部分,該些資料部分的至少某些個係具有一比該些個別的縮小後的資料部分大的大小。根據各種的實施例,一或多種例如是刪除重複及壓縮之資料縮減的技術係被使用。該方法亦包含在該儲存裝置的一資料記憶體中將該些資料部分儲存為縮小後的資料部分的步驟506。該資料記憶體可以是非揮發性資料記憶體。該方法之最後的步驟508是根據該資料記憶體的一利用率來判斷該資料記憶體的一邏輯容量。
在該方法500中,該資料記憶體的該邏輯容量是根據該資料 記憶體的一利用率而改變,例如成比例於該利用率來改變、或例如是以該利用率的一函數來改變。於是,該資料記憶體的利用率是根據有多少資料部分被儲存在該資料記憶體中、以及根據所儲存的資料部分的縮小而改變。在一第一例子中,該資料記憶體的利用率係隨著更多的資料部分被儲存到該資料記憶體之先前未使用的邏輯區塊而增加。在一第二例子中,該資料記憶體的利用率係隨著先前儲存的資料部分被較大程度地縮小的資料部分所覆寫而減小。在一第三例子中,該資料記憶體的利用率係隨著儲存的資料部分例如藉由是削減資料部分來加以移除而減小。
在該方法500的某些實施例中,該邏輯容量係具有一已決定的最大值,例如是一配置的邏輯容量。根據各種的實施例,假設資料部分是不可縮小的,則該配置的邏輯容量係能夠儲存小於、等於或是大於該資料記憶體的實際大小之一個數量的資料部分。在另一實施例中,假設資料部分是不可縮小的,則該配置的邏輯容量係能夠儲存小於該資料記憶體的實際大小之一個數量的資料部分,以提供該實際大小一超量配置的量。超量配置例如是藉由縮小寫入放大來改善某些儲存裝置的效能。
一小於或等於該配置的邏輯容量之可用的邏輯容量係至少部分根據該資料記憶體的利用率而被判斷出。根據各種的實施例,該可用的邏輯容量是下列的一或多個:隨著該利用率減小而增加;隨著該利用率增加而減小;該利用率的一線性函數;該利用率的一非線性函數;在時間上週期性地改變;在藉由該儲存裝置接收到的一個命令數量上週期性地改變;以及當該利用率是改變超過一已決定的量時來加以改變。改變該可用的邏輯容量係使得一種在該儲存裝置中儲存資料的動態調適快取能夠有利 地根據該可用的邏輯容量來儲存一資料量,並且因此根據儲存在其中的資料的可縮小性而增加效能。
在圖5中所示的方法500亦可包含響應於該利用率超過一指定的臨界值以從該資料記憶體移除該些縮小後的資料部分中的一或多個之步驟。在此步驟中,該指明的臨界值可以將該儲存裝置的寫入放大維持低於一指定的值。在一實施例中,從該資料記憶體移除該些縮小後的資料部分中的一或多個的步驟至少部分可藉由使該儲存裝置的一標籤記憶體的一或多個項目無效來加以達成。
在圖5中所示的方法500亦可包含一額外的步驟。若該儲存裝置請求該些資料部分中之一特定的資料部分,則該方法可包含從該資料記憶體讀取該個別的縮小後的資料部分,逆轉該個別的縮小後的資料部分的縮小以回復該特定的資料部分,以及響應於該請求來傳回該特定的資料部分至該主機的步驟。
在本揭露內容中,該些所揭露的方法可實施為可藉由一裝置讀取的指令或軟體組。再者,所了解的是在該些所揭露的方法中的步驟之特定的順序或階層是範例的方法的例子。根據設計偏好,所了解的是在該方法中的步驟之特定的順序或階層可以重新配置,而仍然在所揭露的標的內。所附的方法請求項係以一樣本的順序來呈現各種步驟的元件,並且不一定意味要受限於該呈現的特定順序或階層。
據信本揭露內容以及其許多伴隨的優點將會藉由該先前的說明而被理解,並且將會明顯的是各種的改變都可以在不脫離所揭露的標的、或是在不犧牲其所有的材料優點下,在該些構件的形式、結構及配置 上做成。所敘述的形式只是解釋的,並且以下的申請專利範圍的意圖是涵蓋且包含此種改變。
先前的詳細說明可包含透過使用方塊圖、流程圖及/或例子所闡述的裝置及/或方法的各種實施例。至於此種方塊圖、流程圖及/或例子係包含一或多個功能及/或操作,將會被此技藝領域內之人士理解的是在此種方塊圖、流程圖或例子內的每個功能及/或操作都可以藉由廣範圍的硬體、軟體、韌體、或是實際上該等的任意組合,來個別地及/或全體地加以實施。在一實施例中,在此敘述的標的之數個部分可以透過特殊應用積體電路(ASIC)、現場可程式化的閘陣列(FPGA)、數位信號處理器(DSP)、或是其它整合的形式來加以實施。然而,熟習此項技術者將會體認到在此揭露的實施例的某些特點可以整體或部分地用積體電路來等效地加以實施為在一或多個電腦上執行的一或多個電腦程式(例如,實施為在一或多個電腦系統上執行的一或多個程式)、實施為在一或多個處理器上執行的一或多個程式(例如,實施為在一或多個微處理器上執行的一或多個程式)、實施為韌體、或是實施為實際上該等的任意組合,並且根據此揭露內容設計該電路及/或撰寫用於該軟體及/或韌體的碼將會是充分在具有此項技術的技能者之技能內。
此外,熟習此項技術者將會體認到在此敘述的標的之機制可以是能夠被散佈為一具有各種形式的程式產品,並且在此敘述的標的之一說明的實施例都可適用,而不論被用來實際實行該散佈的載有信號之媒體的特定類型為何。一種載有信號之媒體的例子係包含(但可不限於)以下:一種可記錄的類型之媒體,例如一軟碟片、一硬碟機、一固態硬碟、一光碟 (CD)、一數位視訊碟片(DVD)、一數位磁帶、一電腦記憶體、等等;以及一種傳送類型的媒體,例如一數位及/或類比通訊媒體(例如,一光纖纜線、一波導、一有線的通訊鏈路、一無線的通訊鏈路(例如,發送器、接收器、發送邏輯、接收邏輯等)、等等)。
具有此項技術的技能者將會體認到現有技術可包含進步到其中在系統特點的硬體、軟體及/或韌體的實施方式之間可能只剩很小的區別的點;硬體、軟體及/或韌體的使用一般可能是(但並非總是,因為在某些環境中,在硬體及軟體之間的選擇可能變成是重要的)一項代表成本相對效率的取捨之設計選擇。具有此項技術的技能者將會體認到可能有各種的載體(vehicle)以供在此敘述的方法及/或系統及/或其它技術可藉此來加以達成(例如,硬體、軟體及/或韌體),並且較佳的載體將會隨著其中該方法及/或系統及/或其它技術可加以採用的環境而變化。例如,若實施者判斷速度及正確性可能是最重要的,則該實施者可選擇一種主要是硬體及/或韌體的載體;或者是,若彈性可能是最重要的,則該實施者可選擇一主要是軟體的實施方式;或再者是,該實施者可選擇硬體、軟體及/或韌體的某種組合。因此,可能有數種可行的載體以供在此敘述的方法及/或裝置及/或其它技術可藉此來加以達成,沒有一種載體可以是固有地較另一種載體優異,因為任何將被利用的載體可能是一種依據該載體將會被採用於其中的環境以及實施者的特定考量(例如,速度、彈性或是可預測性)而定的選擇,而任何一項的考量都可能變化。熟習此項技術者將會體認到實施方式的光學特點通常將會利用以光學為導向的硬體、軟體及/或韌體。
100‧‧‧方法
102、104、106、108、110‧‧‧步驟

Claims (20)

  1. 一種用於管理包含一儲存裝置之一動態調適快取(adaptive cache)之方法,其係包括以下步驟:從一主機接收資料;壓縮該接收到的資料成為一壓縮的資料;儲存該壓縮的資料;判斷在該儲存裝置上之一可利用的空間量(amount of available space);當該儲存裝置上之該可利用的空間量大於一配置的臨界值時,根據在該接收到的資料的一大小(size)以及該壓縮的資料的一大小之間的一差值的至少一部分,以使得被提供給該主機的一邏輯容量增加一個量。
  2. 如申請專利範圍第1項之方法,其進一步包括以下的步驟:當該可利用的空間量小於一保留量時釋放空間。
  3. 如申請專利範圍第2項之方法,其進一步包括以下的步驟:當該可利用的空間量小於該保留量時發出信號。
  4. 如申請專利範圍第1項之方法,其中該判斷一可利用的空間量係包含:當該可利用的空間量大於該配置的臨界值時發出信號;傳送一詢問以判斷該可利用的空間量。
  5. 如申請專利範圍第1項之方法,其中該方法的每個步驟係在每次從該主機接收到資料時加以執行。
  6. 如申請專利範圍第1項之方法,其中壓縮該接收到的資料成為一壓縮的資料的步驟係包含利用無損失的演算法來壓縮該資料。
  7. 一種用於動態調適快取之系統,其係包括:一儲存裝置,該儲存裝置係具有一用於儲存從一主機接收到的資料的實體容量;一壓縮模組,該壓縮模組係用於壓縮從該主機接收到的該資料成為一壓縮的資料大小;一控制模組,該控制模組係被配置以用於從該主機接收資料,該控制模組進一步被配置以用於判斷在該儲存裝置上之一可利用的空間量,該控制模組進一步被配置以用於判斷一回收的空間(reclaimed space),該回收的空間是根據在從該主機接收到的該資料的大小以及該壓縮的資料的大小之間的一差值而定;一介面模組,該介面模組係被配置以用於提供一邏輯容量給該主機,該邏輯容量係具有一可變的大小;該邏輯容量係包含該回收的空間的至少一部分。
  8. 如申請專利範圍第7項之系統,其中,該控制模組係進一步被配置以用於在該儲存裝置上的該可利用的空間量小於一保留量時,釋放在該儲存裝置上的空間。
  9. 如申請專利範圍第7項之系統,其中該儲存裝置是一固態硬碟。
  10. 如申請專利範圍第7項之系統,其中一固定的最小邏輯容量係被提供給該主機。
  11. 一種用於動態調適快取之方法,其係包括:藉由一儲存裝置透過一儲存介面來接收複數個資料部分;縮小該複數個資料部分的每一個以形成個別的縮小後的資料部分,該 複數個資料部分的至少某些個係具有一比該複數個個別的縮小後的資料部分大的大小;在該儲存裝置的一資料記憶體中將該複數個資料部分儲存為該些縮小後的資料部分;以及根據該資料記憶體的一利用率來判斷該資料記憶體的一邏輯容量,其中該資料記憶體的該邏輯容量係根據該縮小而改變;其中該邏輯容量係隨著在該複數個資料部分的一總大小以及該複數個縮小後的資料部分的一總大小之間的一差值的增加而增加。
  12. 如申請專利範圍第11項之方法,其中該邏輯容量係對應於該資料記憶體能夠儲存的該複數個資料部分的數量。
  13. 如申請專利範圍第11項之方法,其進一步包括:響應於該利用率超過一指定的臨界值,從該資料記憶體移除該複數個縮小後的資料部分中的一或多個。
  14. 如申請專利範圍第13項之方法,其中該移除係包括使該儲存裝置的一標籤記憶體的一或多個項目無效。
  15. 如申請專利範圍第13項之方法,其中該指明的臨界值係將該儲存裝置的一寫入放大維持低於一指定的值。
  16. 如申請專利範圍第11項之方法,其中該邏輯容量係隨著在該複數個資料部分的一總大小以及該複數個縮小後的資料部分的一總大小之間的一差值的減小而減小。
  17. 如申請專利範圍第11項之方法,其中該儲存介面是一SATA介面、一SAS介面以及一PCIe介面中之一。
  18. 如申請專利範圍第11項之方法,其中該資料記憶體是非揮發性的。
  19. 如申請專利範圍第11項之方法,其中該縮小係包括壓縮。
  20. 如申請專利範圍第11項之方法,其進一步包括:響應於一項傳送至該儲存裝置的針對於該複數個資料部分中之一特定的資料部分的請求,從該資料記憶體讀取該個別的縮小後的資料部分,逆轉該個別的縮小後的資料部分的縮小以回復該特定的資料部分,以及傳回該特定的資料部分至該主機。
TW102105705A 2012-03-23 2013-02-19 用於動態調適快取的方法及系統 TWI584120B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261614548P 2012-03-23 2012-03-23
US201261614545P 2012-03-23 2012-03-23
US13/566,204 US9158695B2 (en) 2011-08-09 2012-08-03 System for dynamically adaptive caching

Publications (2)

Publication Number Publication Date
TW201342063A TW201342063A (zh) 2013-10-16
TWI584120B true TWI584120B (zh) 2017-05-21

Family

ID=47845763

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102105705A TWI584120B (zh) 2012-03-23 2013-02-19 用於動態調適快取的方法及系統

Country Status (5)

Country Link
EP (1) EP2642397A1 (zh)
JP (1) JP6228374B2 (zh)
KR (1) KR102022721B1 (zh)
CN (1) CN103324586B (zh)
TW (1) TWI584120B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699219B (zh) * 2013-12-10 2020-06-23 联想(北京)有限公司 一种电子设备及信息处理方法
CN104852812B (zh) * 2015-04-03 2018-08-07 上海航天电子通讯设备研究所 1553b总线远置单元自适应收发数据方法
CN106484310B (zh) * 2015-08-31 2020-01-10 华为数字技术(成都)有限公司 一种存储阵列操作方法和装置
CN106484331B (zh) 2015-09-29 2019-04-12 华为技术有限公司 一种数据处理方法、装置及闪存设备
CN112004462A (zh) * 2018-02-21 2020-11-27 帕驰德公司 用于受试者监测的系统和方法
US10963332B2 (en) 2018-12-17 2021-03-30 Western Digital Technologies, Inc. Data storage systems and methods for autonomously adapting data storage system performance, capacity and/or operational requirements
CN113722241A (zh) * 2021-08-30 2021-11-30 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、可读存储介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200608198A (en) * 2004-05-03 2006-03-01 Microsoft Corp Non-volatile memory cache performance improvement
US20080189485A1 (en) * 2007-02-01 2008-08-07 Samsung Electronics Co., Ltd. Cooperative memory management
US7779056B2 (en) * 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
US20120072641A1 (en) * 2010-09-21 2012-03-22 Hitachi, Ltd. Semiconductor storage device and data control method thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942552A (en) * 1986-11-20 1990-07-17 Allen-Bradley Company, Inc. Method and apparatus for saving and performing industrial control commands
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
DE60222782D1 (de) * 2001-08-24 2007-11-15 Intel Corp Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zur unterstützung von bestehenden unterbrechungen
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US20050132161A1 (en) * 2003-12-15 2005-06-16 Nokia Corporation Creation of virtual memory space in a memory
US7243191B2 (en) * 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory
WO2007135602A1 (en) * 2006-05-24 2007-11-29 Koninklijke Philips Electronics N.V. Electronic device and method for storing and retrieving data
JP2009026296A (ja) * 2007-06-21 2009-02-05 Toshiba Corp 電子デバイス、メモリデバイス、ホスト装置
US8078787B2 (en) * 2007-06-22 2011-12-13 Apple Inc. Communication between a host device and an accessory via an intermediate device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200608198A (en) * 2004-05-03 2006-03-01 Microsoft Corp Non-volatile memory cache performance improvement
US7779056B2 (en) * 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
US20080189485A1 (en) * 2007-02-01 2008-08-07 Samsung Electronics Co., Ltd. Cooperative memory management
US20120072641A1 (en) * 2010-09-21 2012-03-22 Hitachi, Ltd. Semiconductor storage device and data control method thereof

Also Published As

Publication number Publication date
TW201342063A (zh) 2013-10-16
JP2013200868A (ja) 2013-10-03
KR102022721B1 (ko) 2019-09-18
KR20130108117A (ko) 2013-10-02
CN103324586A (zh) 2013-09-25
JP6228374B2 (ja) 2017-11-08
EP2642397A1 (en) 2013-09-25
CN103324586B (zh) 2018-01-12

Similar Documents

Publication Publication Date Title
TWI584120B (zh) 用於動態調適快取的方法及系統
US10318175B2 (en) SSD with heterogeneous NVM types
US9158695B2 (en) System for dynamically adaptive caching
EP2802991B1 (en) Systems and methods for managing cache admission
US10102117B2 (en) Systems and methods for cache and storage device coordination
US10019352B2 (en) Systems and methods for adaptive reserve storage
US9251052B2 (en) Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10521131B2 (en) Storage apparatus and storage control apparatus
US8782344B2 (en) Systems and methods for managing cache admission
US9285998B2 (en) Tiered caching and migration in differing granularities
KR101717081B1 (ko) 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
EP2778889B1 (en) Dynamic storage device provisioning
JP6208156B2 (ja) ハイブリッドストレージ集合体の複製
US9430404B2 (en) Thinly provisioned flash cache with shared storage pool
US9619180B2 (en) System method for I/O acceleration in hybrid storage wherein copies of data segments are deleted if identified segments does not meet quality level threshold
CN111007991B (zh) 基于nvdimm分离读写请求的方法及其计算机
US9858197B2 (en) Cache management apparatus of hybrid cache-based memory system and the hybrid cache-based memory system
US20150278274A1 (en) Retrieving data in a storage system using thin provisioning
US20150199269A1 (en) Enhanced ssd caching
US20160350003A1 (en) Memory system
US20230081829A1 (en) Apparatus and method for improving read performance in a system
US10031689B2 (en) Stream management for storage devices
US11907541B2 (en) Adaptive read prefetch to reduce host latency and increase bandwidth for sequential read streams
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法

Legal Events

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