TWI529730B - 資料儲存裝置與快閃記憶體控制方法 - Google Patents

資料儲存裝置與快閃記憶體控制方法 Download PDF

Info

Publication number
TWI529730B
TWI529730B TW102107205A TW102107205A TWI529730B TW I529730 B TWI529730 B TW I529730B TW 102107205 A TW102107205 A TW 102107205A TW 102107205 A TW102107205 A TW 102107205A TW I529730 B TWI529730 B TW I529730B
Authority
TW
Taiwan
Prior art keywords
data
cache
flash memory
logical address
space
Prior art date
Application number
TW102107205A
Other languages
English (en)
Other versions
TW201435888A (zh
Inventor
柯冠宇
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 慧榮科技股份有限公司
Priority to TW102107205A priority Critical patent/TWI529730B/zh
Priority to CN201310131475.XA priority patent/CN104020959A/zh
Priority to US14/100,627 priority patent/US8984171B2/en
Publication of TW201435888A publication Critical patent/TW201435888A/zh
Application granted granted Critical
Publication of TWI529730B publication Critical patent/TWI529730B/zh

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

資料儲存裝置與快閃記憶體控制方法
本發明係有關於以快閃記憶體實現的一種資料儲存裝置、以及快閃記憶體之控制方法。
現今資料儲存裝置常以快閃記憶體(FLASH memory)為儲存媒體。以非及閘型的快閃記憶體(即NAND FLASH)為例,常用作記憶卡(memory card)、通用序列匯流排閃存裝置(USB flash device)、固態硬碟(SSD)...等產品。另外有一種應用是採多晶片封裝、將NAND FLASH晶片與控制晶片包成一顆晶片-稱為嵌入式快閃記憶體模組(eMMC)。
快閃記憶體不只應用廣泛,其容量更隨著製程技術發展顯著提升。然而,愈來愈龐大的記憶體容量使得快閃記憶體之控制方式更加顯著影響快閃記憶體的運作效能。
本發明揭露一種以快閃記憶體實現的資料儲存裝置,並且揭露一快閃記憶體的控制方法。
根據一種實施方式所實現的一資料儲存裝置包括:一快閃記憶體以及耦接該快閃記憶體的一控制器。該快閃記憶體具有複數個區塊,且各區塊具有複數頁。該等區塊係劃分由複數個存取通道作存取。該控制器包括一運算單元、一唯 讀記憶體、以及一隨機存取記憶體。該唯讀記憶體所載程式係由該運算單元執行,作為該資料儲存裝置之韌體。該隨機存取記憶體係在執行該韌體的該運算單元規劃下供應一套快取空間。該套快取空間針對上述複數個存取通道各自提供寫入資料的暫存空間。此外,該運算單元更令一主機下達的寫入資料分散對應上述複數個存取通道。當該寫入資料對映的邏輯位址與該套快取空間中最新的暫存資料對映的邏輯位址相同時,該運算單元於該套快取空間中,以該寫入資料更新該最新的暫存資料。
根據本發明另一種實施方式,快閃記憶體的控制方法包括:將一快閃記憶體的複數個區塊劃分由複數個存取通道作存取,各區塊具有複數頁;於一隨機存取記憶體中規劃至少一套快取空間,該套快取空間係針對上述複數個存取通道各自提供寫入資料的暫存空間;令一主機下達的寫入資料分散對應上述複數個存取通道;以及,當該寫入資料對映的邏輯位址與該套快取空間中最新的暫存資料對映的邏輯位址相同時,於該套快取空間中,以該寫入資料更新該最新的暫存資料。
為使本發明之上述目的、特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖示,詳細說明如下。
102‧‧‧資料儲存裝置
104‧‧‧主機
106‧‧‧快閃記憶體
108‧‧‧控制器
110‧‧‧運算單元
112‧‧‧唯讀記憶體
114‧‧‧隨機存取記憶體
Cache_CE1、Cache_CE2...Cache_CEi、Cache_CEi+1、Cache_CEi+2、Caceh_CEN‧‧‧一套快取空間
CE1、CE2...CEN‧‧‧晶片/存取通道
HPage1、HPage2...HPageN‧‧‧邏輯位址
HPage1_Old、HPageN_Old‧‧‧邏輯位址HPage1與HPageN中不需更新的資料
HPageA、HPageB、HPageC、HPageF、HPageG‧‧‧邏輯位址
PAGE11...PAGE1K、PAGE21...PAGE2K、PAGEN1...PAGENK‧‧‧頁
S502...S510、S602...S612‧‧‧步驟
T1、T2、T3、T4、T5‧‧‧時序
第1圖圖解根據本發明一種實施方式所實現的一資料儲存裝置102,其與一主機104溝通;第2圖圖解本發明一種實施方式,其中,主機104下達的寫 入操作涉及多個邏輯位址HPage1、HPage2...HPageN(不限定為連續邏輯位址),且邏輯位址HPage1、HPage2...HPageN不重複;第3圖圖解本發明另外一種實施方式,其中,主機104下達的寫入操作依序涉及邏輯位址HPageF、HPageG以及HPageF,邏輯位址HPageF非連續地重複出現;第4圖圖解本發明另外一種實施方式,其中,主機104下達的寫入操作依序涉及邏輯位址HPageA、HPageB以及連續重複出現的邏輯位址HPageC;第5圖以流程圖描述實施「邏輯位址檢查」的資料整理操作;以及第6圖以流程圖描述「邏輯位址檢查」之資料整理操作的另外一種實施方式。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
第1圖圖解根據本發明一種實施方式所實現的一資料儲存裝置102,其與一主機104溝通。資料儲存裝置102包括:一快閃記憶體(FLASH memory)106以及一控制器108。
此段落討論快閃記憶體106的設計。為了同時處理一個以上的操作指令,快閃記憶體106係採用多存取通道技術,其中,快閃記憶體106的複數個區塊(blocks)係劃分由複數個存取通道作存取。如圖中所示實施方式,快閃記憶體106是 以多個晶片CE1、CE2...CEN(涉及chip enabled技術)實現多存取通道。單一晶片對應單一存取通道,以下將該些存取通道相應該些晶片CE1、CE2...CEN作同樣標號。各晶片提供有複數個區塊(blocks)。各區塊具有複數頁(pages,標號PAGE11~PAGENK所示即「頁」)。儘管單一晶片同時段僅允許單一存取操作,但多晶片所形成的多存取通道設計使得快閃記憶體106同時可應付多個存取操作。
以下接著討論控制器108之設計。
控制器108耦接該快閃記憶體106,且包括:一運算單元110、一唯讀記憶體112以及一隨機存取記憶體114。唯讀記憶體112所載程式係由該運算單元110執行,作為該資料儲存裝置102之韌體(firmware)。隨機存取記憶體114在執行該韌體的該運算單元110規劃下供應一套快取空間(Cache Space),包括空間Cache_CE1、Cache_CE2...Cache_CEN,分別對應上述複數個存取通道CE1、CE2...CEN作資料整理使用。執行所述韌體的運算單元110係令主機104下達的寫入資料分散對應上述複數個存取通道CE1、CE2...CEN,以對應暫存至該套快取空間Cache_CE1、Cache_CE2...Cache_CEN與讀自該快閃記憶體106的資料作整併。整併完成的資料將根據其空間所對應的存取通道寫入該快閃記憶體106。在一種實施方式中,空間Cache_CE1、Cache_CE2...Cache_CEN各自佔據一「寫入頁(super page)」的大小,尺寸為K個「頁(page)」,K為一數量值。空間Cache_CE1的內容可經存取通道CE1寫入分散於K區塊上的頁PAGE11...頁PAGE1K,空間Cache_CE2的內容可經存取通 道CE2寫入分散於K區塊上的頁PAGE21...頁PAGE2K,以此類推,空間Cache_CEN的內容可經存取通道CEN寫入分散於K區塊上的頁PAGEN1...頁PAGENK。「寫入頁(super page)」設計使得K頁之寫入得以由單一寫入指令實現,有效減少指令數量。
本發明包括在快取空間Cache_CE1、Cache_CE2...Cache_CEN的利用上更考慮主機104所下達的邏輯位址。圖中實施方式是在韌體中設計一邏輯位址檢查機制。第2圖、第3圖以及第4圖則圖解不同邏輯位址所對應的快取空間使用方式。
參考第2圖,其中,主機104下達的寫入操作涉及多個邏輯位址HPage1、HPage2...HPageN(不限定為連續邏輯位址),且邏輯位址HPage1、HPage2...HPageN不重複。運算單元110係令該些邏輯位址HPage1、HPage2...HPageN分散對應不同的存取通道CE1、CE2...CEN,並據以將主機104所下達、關於該些邏輯位址HPage1、HPage2...HPageN的寫入資料對應暫存至所述該套快取空間Cache_CE1、Cache_CE2...Cache_CEN。如圖所示,邏輯位址HPage1之寫入資料由空間Cache_CE1暫存,邏輯位址HPage2之寫入資料由空間Cache_CE2暫存...邏輯位址HPageN之寫入資料由空間Cache_CEN暫存。至於僅需要局部寫入的邏輯位址-例如,一寫入操作之起始邏輯位址HPage1與終止邏輯位址HPageN-其無須更新之資料HPage1_Old、HPageN_Old係由快閃記憶體106複製至隨機存取記憶體114上對應的空間Cache_CE1、Cache_CEN與主機104下達之寫入資料作整併。如此一來,邏輯位址HPage1、HPage2...HPageN各自 完整的資料整理於所揭露之該套快取空間Cache_CE1、Cache_CE2...Cache_CEN,得以於該套快取空間Cache_CE1、Cache_CE2...Cache_CEN寫滿後依照所屬之存取通道CE1、CE2...CEN寫入該快閃記憶體106。
參考第3圖,其中,主機104下達的寫入操作依序涉及邏輯位址HPageF、HPageG以及HPageF,邏輯位址HPageF非連續地重複出現。以下依照時間順序討論運算單元110之動作。時序T1,邏輯位址HPageF的資料係整理於空間Cache_CEi。時序T2,邏輯位址HPageG的資料係整理於空間Cache_CEi+1。時序T3,主機104再次下達邏輯位址HPageF之寫入指令,執行該韌體的運算單元110將檢查到邏輯位址HPageF已在該套快取空間之非最新使用處(最新使用處為Cache_CEi+1,非最新使用處包括Cache_CE1...Cache_CEi)有對應配置的資料整理空間Caceh_CEi,於是,時序T4下,該套快取空間已暫存有的內容(即空間Cache_CE1...Cache_CEi+1的內容)係依照所屬之存取通道CE1...CEi+1寫入該快閃記憶體106。至於主機104於時序T3所下達的邏輯位址HPageF寫入操作則是於時序T5以該套快閃空間內一接續空間Cache_CEi+2作資料整理。關於非預期的斷電事件,如此設計可確保快閃記憶體106的內容是遵循主機104下達之寫入操作之時序作更新,各邏輯位址的更新時序正確。至於Cache_CEi+2以及其後之空間(至...Cache_CEN),可在該套快取空間最尾端空間(即Cache_CEN)填滿後依照所屬之存取通道CEi+2...CEN寫入該快閃記憶體106。
參考第4圖,其中,主機104下達的寫入操作依序涉及邏輯位址HPageA、HPageB、以及重複兩次的HPageC。邏輯位址HPageC連續地重複出現。以下依照時間順序討論運算單元110之動作。時序T1,邏輯位址HPageA的資料係整理於空間Cache_CEi。時序T2,邏輯位址HPageB的資料係整理於空間Cache_CEi+1。時序T3,邏輯位址HPageC的資料係整理於空間Cache_CEi+2。時序T4,主機104再次下達邏輯位址HPageC之寫入指令,執行該韌體的運算單元110將檢查到邏輯位址HPageC已在該套快取空間之最新使用處Cache_CEi+2對應配置,於是,時序T5下,執行該韌體的該運算單元110重複利用該最新使用處Cache_CEi+2為該邏輯位址HPageC作資料整理。如此設計可有效提升該套快取空間Cache_CE1、Cache_CE2...Cache_CEN之使用效能。
第5圖以流程圖描述實施「邏輯位址檢查」的資料整理操作。關於主機104所下達的寫入操作,其中待整理的一邏輯位址為HPagej。步驟S502係比對邏輯位址HPagej是否與該套快取空間中最新使用處(Cache_CEj-1)所配置對應的邏輯位址HPagej-1相同。若邏輯位址HPagej同邏輯位址HPagej-1,則進行步驟S504,重複利用空間Cache_CEj-1作邏輯位址HPagej之資料整理。若邏輯位址HPagej不同於邏輯位址HPagej-1,則進行步驟S506,更將待整理之邏輯位址HPagej與該套快取空間中非最新使用處(Cache_CE1...Cache_CEj-2)所配置對應的邏輯位址HPage1...HPagej-2作比對。若邏輯位址HPagej與邏輯位址HPage1...HPagej-2無任何重複,則進行步驟S508,以該套快取 空間中的接續空間Cache_CEj作邏輯位址HPagej之資料整理。若邏輯位址HPagej與邏輯位址HPage1...HPagej-2任一重複,則進行步驟S510,將該套快取空間已暫存有內容的部分Cache_CE1...Cache_CEj-1依照所屬之存取通道CE1...CEj-1寫入該快閃記憶體106,並於之後進行步驟S508,以該套快取空間中的接續空間Cache_CEj作邏輯位址HPagej之資料整理。
第6圖以流程圖描述「邏輯位址檢查」之資料整理操作的另外一種實施方式。步驟S602用於判斷該寫入資料對映的邏輯位址與該套快取空間中最新的暫存資料對映的邏輯位址是否相同;若相同,流程進入步驟S604,於該套快取空間中,以該寫入資料更新該最新的暫存資料。若步驟S602判斷結果為不相同,則流程進入步驟S606,判斷該寫入資料對映的邏輯位址與該套快取空間中非最新的暫存資料對映的邏輯位址是否相同。若步驟S606判斷結果為不相同,流程進入步驟S608,於該套快取空間中儲存該寫入資料,反之,則進行步驟S610,將該套快取空間中與該寫入資料對映相同邏輯位址的該非最新之暫存資料寫入該快閃記憶體。隨後,流程進入步驟S612,於該套快取空間中儲存該寫入資料。
以上實施例所揭露之資料儲存裝置可實現為記憶卡(memory card)、通用序列匯流排閃存裝置(USB flash device)、固態硬碟(SSD)...等產品。另外有一種實施方式是採多晶片封裝、將NAND FLASH晶片與控制晶片包成一顆晶片-稱為嵌入式快閃記憶體模組(eMMC)。
以上所揭露之內容可以程式化方式呈韌體實現。 相關程式碼可載於唯讀記憶體112中,由運算單元110執行之。此外,除了以上所揭露之控制器108結構,其他採用同樣概念控制快閃記憶體的技術都屬於本案所欲保護的範圍。本案更涉及快閃記憶體的控制方法,不限定以第1圖所示之控制器108結構實現。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
102‧‧‧資料儲存裝置
104‧‧‧主機
106‧‧‧快閃記憶體
108‧‧‧控制器
110‧‧‧運算單元
112‧‧‧唯讀記憶體
114‧‧‧隨機存取記憶體
Cache_CE1、Cache_CE2...Caceh_CEN‧‧‧一套快取空間
CE1、CE2…CEN‧‧‧晶片/存取通道
PAGE11...PAGE1K、PAGE21...PAGE2K、 PAGEN1...PAGENK‧‧‧頁

Claims (12)

  1. 一種資料儲存裝置,包括:一快閃記憶體,具有複數個區塊、且各區塊具有複數頁,該等區塊係劃分由複數個存取通道作存取;以及耦接該快閃記憶體的一控制器,包括:一運算單元;一唯讀記憶體,所載程式由該運算單元執行,作為該資料儲存裝置之韌體;以及一隨機存取記憶體,在執行該韌體的該運算單元規劃下供應一套快取空間,該套快取空間針對上述複數個存取通道各自提供寫入資料的暫存空間;其中:執行該韌體的該運算單元係令一主機下達的寫入資料分散對應上述複數個存取通道;並且當該寫入資料對映的邏輯位址與該套快取空間中最新的暫存資料對映的邏輯位址相同時,該運算單元於該套快取空間中,以該寫入資料更新該最新的暫存資料。
  2. 如申請專利範圍第1項所述之資料儲存裝置,其中,當該寫入資料對映的邏輯位址與該套快取空間中非最新的暫存資料對映的邏輯位址相同時,該運算單元將該套快取空間中與該寫入資料對映相同邏輯位址的暫存資料寫入該快閃記憶體。
  3. 如申請專利範圍第2項所述之資料儲存裝置,其中,該運算單元將該套快取空間中與該寫入資料對映相同邏輯位 址的暫存資料寫入該快閃記憶體後,將該寫入資料存於該套快取空間。
  4. 如申請專利範圍第1項所述之資料儲存裝置,其中:執行該韌體的該運算單元更於該套快取空間最尾端空間填滿後將該套快取空間已暫存有的內容依照所屬之存取通道寫入該快閃記憶體。
  5. 如申請專利範圍第1項所述之資料儲存裝置,其中:當該邏輯位址已在該套快取空間最新使用處有對應配置的資料整理空間時,執行該韌體的該運算單元重複利用該最新使用處為該邏輯位址作資料整理。
  6. 如申請專利範圍第1項所述之資料儲存裝置,其中,該運算單元係令該寫入資料分散對應上述複數個存取通道,並對應一套暫存於上述快取空間的資料作整併。
  7. 一種快閃記憶體控制方法,包括:將一快閃記憶體的複數個區塊劃分由複數個存取通道作存取,各區塊具有複數頁;於一隨機存取記憶體中規劃至少一套快取空間,該套快取空間係針對上述複數個存取通道各自提供寫入資料的暫存空間;令一主機下達的寫入資料分散對應上述複數個存取通道;且當該寫入資料對映的邏輯位址與該套快取空間中最新的暫存資料對映的邏輯位址相同時,於該套快取空間中,以該寫入資料更新該最新的暫存資料。
  8. 如申請專利範圍第7項所述之快閃記憶體控制方法,更包括:當該寫入資料對映的邏輯位址與該套快取空間中非最新的暫存資料對映的邏輯位址相同時,將該套快取空間中與該寫入資料對映相同邏輯位址的暫存資料寫入該快閃記憶體。
  9. 如申請專利範圍第8項所述之快閃記憶體控制方法,更包括:該套快取空間中與該寫入資料對映相同邏輯位址的暫存資料寫入該快閃記憶體後,將該寫入資料存於該套快取空間。
  10. 如申請專利範圍第7項所述之快閃記憶體控制方法,更包括:於該套快取空間最尾端空間填滿後將該套快取空間已暫存有的內容依照所屬之存取通道寫入該快閃記憶體。
  11. 如申請專利範圍第7項所述之快閃記憶體控制方法,更包括:於該邏輯位址已在該套快取空間最新使用處有對應配置的資料整理空間時,重複利用該最新使用處為該邏輯位址作資料整理。
  12. 如申請專利範圍第7項所述之快閃記憶體控制方法,其中該寫入資料分散對應上述複數個存取通道,並對應一套暫存於上述快取空間的資料作整併。
TW102107205A 2013-03-01 2013-03-01 資料儲存裝置與快閃記憶體控制方法 TWI529730B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW102107205A TWI529730B (zh) 2013-03-01 2013-03-01 資料儲存裝置與快閃記憶體控制方法
CN201310131475.XA CN104020959A (zh) 2013-03-01 2013-04-16 数据储存装置与快闪存储器控制方法
US14/100,627 US8984171B2 (en) 2013-03-01 2013-12-09 Data storage device and flash memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW102107205A TWI529730B (zh) 2013-03-01 2013-03-01 資料儲存裝置與快閃記憶體控制方法

Publications (2)

Publication Number Publication Date
TW201435888A TW201435888A (zh) 2014-09-16
TWI529730B true TWI529730B (zh) 2016-04-11

Family

ID=51437742

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102107205A TWI529730B (zh) 2013-03-01 2013-03-01 資料儲存裝置與快閃記憶體控制方法

Country Status (2)

Country Link
CN (1) CN104020959A (zh)
TW (1) TWI529730B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI520152B (zh) * 2013-03-01 2016-02-01 慧榮科技股份有限公司 資料儲存裝置與快閃記憶體控制方法
TWI544487B (zh) * 2015-01-22 2016-08-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
TWI650643B (zh) * 2018-01-25 2019-02-11 瑞昱半導體股份有限公司 資料儲存晶片及資料存取方法
CN110647288A (zh) * 2018-06-26 2020-01-03 上海宝存信息科技有限公司 数据储存装置及其快取分流方法
CN109710189A (zh) * 2018-12-26 2019-05-03 杭州华澜微电子股份有限公司 一种数据存储管理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386768B2 (en) * 2003-06-05 2008-06-10 Intel Corporation Memory channel with bit lane fail-over
CN102004696A (zh) * 2009-08-28 2011-04-06 先进国际有限公司 微控制器使用的存储器存取方法
TWI506422B (zh) * 2009-09-23 2015-11-01 Silicon Motion Inc 用來管理具有多通道、多途徑的記憶裝置之方法以及相關之記憶裝置及其控制器
TWI434175B (zh) * 2010-09-27 2014-04-11 Silicon Motion Inc 用來進行區塊管理之方法以及記憶裝置及控制器

Also Published As

Publication number Publication date
CN104020959A (zh) 2014-09-03
TW201435888A (zh) 2014-09-16

Similar Documents

Publication Publication Date Title
US10817415B2 (en) Data storage device and method including device or controller-based space allocation and host-based mapping table searching
US8595414B2 (en) Selectively combining commands for a system having non-volatile memory
TWI770218B (zh) 記憶體系統及其操作方法
US11126602B2 (en) Key-value storage device and operating method thereof
US8055859B2 (en) Apparatus and method for providing atomicity with respect to request of write operation for successive sector
TWI529730B (zh) 資料儲存裝置與快閃記憶體控制方法
US9025375B2 (en) Memory disturb reduction for nonvolatile memory
US20210064291A1 (en) Memory system and method of controlling nonvolatile memory
US11543986B2 (en) Electronic system including host, memory controller and memory device and method of operating the same
KR20170012935A (ko) 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
CN102279712A (zh) 一种适用于互联网存储系统的存储控制方法、系统和装置
CN112201292A (zh) 控制器及其操作方法
TWI520152B (zh) 資料儲存裝置與快閃記憶體控制方法
JP2015026379A (ja) 磁気ランダムアクセスメモリ(mram)を使用する記憶デバイスのメモリアレイのコントローラ管理
US8185687B2 (en) Semiconductor storage device and method of controlling semiconductor storage device
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US11675543B2 (en) Apparatus and method for processing data in memory system
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US7278001B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
US11960756B2 (en) Management of storage space in solid state drives to support proof of space activities
US10528285B2 (en) Data storage device and method for operating non-volatile memory
WO2017000821A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
US11726669B2 (en) Coherency locking schemes
US20180089082A1 (en) Cooperative write-back cache flushing for storage devices