TWI556104B - 用以執行無原子元資料之電力故障安全快取的技術 - Google Patents
用以執行無原子元資料之電力故障安全快取的技術 Download PDFInfo
- Publication number
- TWI556104B TWI556104B TW103132963A TW103132963A TWI556104B TW I556104 B TWI556104 B TW I556104B TW 103132963 A TW103132963 A TW 103132963A TW 103132963 A TW103132963 A TW 103132963A TW I556104 B TWI556104 B TW I556104B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- data
- flash memory
- controller
- disk drive
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000003860 storage Methods 0.000 claims description 87
- 238000004891 communication Methods 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 239000000463 material Substances 0.000 claims description 3
- 238000011084 recovery Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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
-
- 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
- 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
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明有關於快取,且詳言之但非專有地,關於非揮發性媒體中之電力故障安全寫回或寫通式快取。
儲存子系統為電腦系統之最慢的子系統之一,尤其當儲存子系統利用如硬碟機(HDD)之儲存媒體時。HDD需要相對長存取時間,因讀取/寫入頭需機械式移動至HDD之磁帶上的特定位置以讀取/寫入資料。
欲改善HDD的性能,非揮發性快取記憶體可用來保存來自HDD的最近讀取及至HDD之寫入的結果。藉由快取HDD之資料,可增加電腦系統之性能,且HDD可維持較長時間的減速(spin down)以減少電腦系統之耗電量。
然而,若至電腦系統之電力無預警地關閉,非揮發性快取記憶體中之資料可與HDD返回關聯以防止資料訛誤。可利用以快取資料寫入支援原子元資料寫入的專用快取硬體來確保能正確進行此恢復,但其增加電腦系統之成
本。
100‧‧‧系統
110‧‧‧處理器
120‧‧‧記憶體/圖形控制器
130‧‧‧顯示裝置
140‧‧‧主記憶體
142‧‧‧揮發性記憶體
144‧‧‧非揮發性記憶體
150‧‧‧I/O控制器
160‧‧‧儲存裝置
170‧‧‧快取裝置
180‧‧‧網路介面
190‧‧‧鍵盤/滑鼠
200‧‧‧區塊圖
212‧‧‧恢復控制器
214‧‧‧運作時間控制器
300‧‧‧區塊圖
310‧‧‧應用層
320‧‧‧檔案系統
330‧‧‧儲存驅動器堆疊
340‧‧‧區塊驅動器
344‧‧‧運作時間/恢復控制器
400‧‧‧組態
401‧‧‧元資料
402‧‧‧快取線
405‧‧‧區塊寬度
410‧‧‧元資料0
411‧‧‧元資料1
412‧‧‧元資料2
413‧‧‧元資料3
414‧‧‧元資料4
415‧‧‧元資料5
416‧‧‧元資料6
417‧‧‧元資料7
430‧‧‧完整性簽章1
440‧‧‧完整性簽章2
450‧‧‧快取線0
451‧‧‧快取線1
452‧‧‧快取線2
453‧‧‧快取線3
454‧‧‧快取線4
455‧‧‧快取線5
456‧‧‧快取線6
457‧‧‧快取線7
800、850‧‧‧虛擬碼
本發明之實施例的特徵及優點從標的之上述詳細說明更為明白清楚,其中:第1圖描繪根據本發明之一實施例實施在此所揭露的方法之系統;第2圖描繪根據本發明之一實施例的I/O控制器之區塊圖;第3圖描繪根據本發明之一實施例的操作系統中之模組的區塊圖;第4圖描繪根據本發明之一實施例的快取裝置之組態;第5圖描繪根據本發明之一實施例的寫通快取方案之流程圖;第6A圖描繪根據本發明之一實施例的寫回快取方案之流程圖;第6B圖描繪根據本發明之一實施例的寫回快取方案之流程圖;第6C圖描繪根據本發明之一實施例的寫回快取方案之流程圖;第7圖描繪根據本發明之一實施例的將資料***快取線中之方法的流程圖;及第8A及8B圖描繪根據本發明之一實施例的實施寫
回快取方案的虛擬碼。
在此說明的本發明之實施例僅為例示性且非局限於附圖。為了闡述之簡單及清楚,圖中之元件非按照比例繪製。例如,為了清楚某些元件的尺寸相對於其他元件會放大。此外,當適當時,於圖中重複參考符號以指明對應或類同元件。說明書中對於本發明之「一實施例」或「實施例」之參照意指連同該實施例所述之特定特徵、結構、或特性係包括在本發明之至少一實施例中。因此,在說明書各處中「在一實施例中」一詞的出現非絕對皆參照相同實施例。
本發明之實施例提供一種允許將持續性儲存裝置中之資料電力故障安全寫回或寫通式地快取至無需原子元資料的快取裝置之一或更多快取線之方法及系統。當快取該儲存裝置的資料時無與任何快取線關聯之元資料被原子式地寫入該快取裝置中。因此,無需允許在資料快取期間原子式寫入元資料的專門快取硬體。
在本發明之一實施例中,與快取線關聯之元資料包括但不限於如資料的邏輯區塊位址(LBA)之資料在被快取之儲存裝置上的位置、序列號碼、如資料為乾淨或骯髒的快取線之狀態、儲存裝置之被快取的LBA之接腳(pinning)資訊等等。儲存裝置包括但不限於固態驅動器(SSD)、HDD、獨立磁碟冗餘陣列(RAID)部、磁帶驅
動器、光碟(CD)、軟碟、通用序列匯流排(USB)快閃記憶體驅動器、或任何其他形式之非揮發性或持續性電腦資料儲存媒體。快取裝置包括但不限於非揮發性媒體、SSD、NAND快閃記憶體、相變記憶體或其他任何形式的非揮發性或持續性電腦資料儲存媒體。
第1圖描繪根據本發明之一實施例實施在此所揭露的方法之系統100。系統100包括但不限於桌上型電腦、膝上型電腦、筆記型電腦、網本型(netbook)電腦、個人數位助理(PDA)、伺服器、工作站、手機、行動運算裝置、網際網路用具或任何其他類型的運算裝置。在另一實施例中,用來實施在此所揭露的方法之系統100可為晶片系統(SOC)系統。
系統100包括記憶體/圖形控制器120及I/O控制器150。記憶體/圖形控制器120典型提供記憶體及I/O管理功能,還有可由處理器110存取或使用之複數一般目的及/或特別目的暫存器、計時器等等。可用一或更多處理器來實施或可用多核心處理器來實施處理器110。I/O控制器150允許根據本發明之一實施例將儲存裝置160中之資料電力故障安全寫回或寫通式地快取至快取裝置170或非揮發性記憶體144之一或更多快取線。
記憶體/圖形控制器120執行能讓處理器110存取主記憶體140並與其通訊之功能,主記憶體140包括揮發性記憶體142及/或非揮發性記憶體144。在本發明之另一實施例中,另一揮發性記憶體142(未顯示在第1圖中)係
嵌入儲存裝置160中以快取儲存裝置160之資料。記憶體/圖形控制器120可,代替I/O控制器150,允許根據本發明之另一實施例將儲存裝置160中之資料電力故障安全寫回或寫通式地快取至快取裝置170之一或更多快取線。
揮發性記憶體142包括但不限於同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS DRAM(RDRAM)、及/或任何其他類型的隨機存取記憶體裝置。非揮發性記憶體144包括但不限於NAND快閃記憶體、唯讀記憶體(ROM)、電性可抹除可編程ROM(EEPROM)、及/或任何其他希望類型的記憶體裝置。主記憶體140儲存將由處理器110執行的資訊及指令。主記憶體140亦可儲存當處理器110在執行指令時之暫時變數或其他中間資訊。在本發明之另一實施例中,記憶體/圖形控制器120為處理器110的一部份。
記憶體/圖形控制器120連接至顯示裝置130,其包括但不限於液晶顯示器(LCD)、陰極射線管(CRT)顯示器、或任何其他形式的視覺顯示裝置。I/O控制器150耦合至但不限於儲存裝置160、快取裝置170、網路介面180、及鍵盤/滑鼠190。尤其,I/O控制器150執行讓處理器110與儲存裝置160、快取裝置170、網路介面180、及鍵盤/滑鼠190通訊的功能。在一實施例中,快取裝置170可為儲存裝置160的一部分。
可使用任何類型的已知網路介面標準來實施網路介面180,這些網路標準包括但不限於乙太網路介面、USB介
面、周邊構件互連(PCI)快速介面、無線介面及/或任何其他適合類型的介面。根據但不限於電機電子工程師學會(IEEE)無線標準系列802.11、家用插座AV(Home Plug AV;HPAV)、超寬頻帶(UWB)、藍芽、WiMax、或任何其他形式的無線通訊協定來操作無線介面。
在本發明之一實施例中,第1圖中所示之匯流排為連接至其之所有構件共享的通訊鏈結。在本發明之另一實施例中,第1圖中所示之匯流排為互相連接之一對構件間之點對點通訊鏈結。雖第1圖中所示之構件描繪成系統100內之分別的區塊,由這些區塊之一些所執行的功能可整合在單一半導體電路內或可用兩或更多分別的積體電路加以實施。例如,雖記憶體/圖形控制器120及I/O控制器150描繪成分別的區塊,相關技藝中具通常知識者可輕易理解到記憶體/圖形控制器120及I/O控制器150可整合在單一半導體電路內。
第2圖描繪根據本發明之一實施例的I/O控制器150之區塊圖200。I/O控制器150具有恢復控制器212及運作時間控制器214。在本發明之一實施例中,運作時間控制器214具有基於試探法之快取策略以判斷是否快取或從快取裝置170驅逐(evict)儲存裝置160之資料。試探法包括但不限於最新存取的LBA、LBA的接腳資訊等等。運作時間控制器214在本發明之一實施例中亦執行快取機制,如快取命中或快取未命中的偵測及快取或驅逐命令之
佇列。
在本發明之一實施例中,運作時間控制器214利用快取裝置170之完整資料容量來快取儲存裝置160的資料。在本發明之另一實施例中,運作時間控制器214利用快取裝置170之完整資料容量的一部分來快取儲存裝置160的資料。例如,在本發明之一實施例中,運作時間控制器214利用快取裝置170之完整資料容量的一半來快取儲存裝置160的資料,並利用快取裝置170之完整資料容量的另一半作為儲存媒體。
在本發明之一實施例中,恢復控制器212及運作時間控制器214允許將儲存裝置160中之資料電力故障安全寫回或寫通式地快取至快取裝置170。相關技藝中具通常知識者將可輕易理解到亦可在不影響本發明之作用下使用其他快取方案。在系統100的故障事件中,在本發明之一實施例中,恢復控制器212及運作時間控制器214保留儲存裝置160中之資料以及快取裝置170中之快取資料的完整性或一致性。系統100的故障事件包括但不限於電力喪失故障、操作系統(OS)當機故障、系統100之不恰當關閉及不在系統100之正常操作環境內的其他事件。
恢復控制器212在本發明之一實施例中於故障事件發生後恢復快取裝置170中之快取線的快取狀態。在本發明之其他實施例中,恢復控制器212處置其他事件,包括但不限於分離偵測及處置、運作時間控制器214之初始化前所有I/O資料的處置等等。雖在第2圖中恢復控制器212
及運作時間控制器214繪製成I/O控制器150的部分,但不限於此。可在相同硬體或軟體模組中實施或在不同硬體或軟體模組中分別實施恢復控制器212及運作時間控制器214。
在本發明之一實施例中,恢復控制器212及運作時間控制器214為記憶體/圖形控制器120的部份。在本發明之另一實施例中,恢復控制器212及運作時間控制器214亦可合併為單一控制器。相關技藝中具通常知識者將輕易理解到可在不影響本發明之作用下實施恢復控制器212及運作時間控制器214的不同組態。例如,在本發明之一實施例中,可將恢復控制器212實施成儲存在系統100的非必要ROM中的韌體且運作時間控制器214實施成在系統100上執行之OS的區塊儲存驅動器。
第3圖描繪根據本發明之一實施例的OS中之模組的區塊圖300。OS具有應用層310及檔案系統320。應用層310能夠存取由檔案系統320所組織的檔案。OS亦具有儲存驅動器堆疊330及區塊驅動器340。根據本發明之一實施例,區塊驅動器340具有運作時間/恢復控制器344。區塊驅動器340可包括運作時間控制器、恢復控制器、或運作時間及恢復控制器兩者。
運作時間/恢復控制器344與儲存裝置160及快取裝置170耦合並且其將儲存裝置160中之資料快取至快取裝置170中。於儲存裝置160中之資料快取期間無與快取裝置170之任何快取線關聯之狀態資訊或元資料被原子式儲
存於快取裝置170中。在本發明之一實施例中,OS利用寫回快取方案,其中將寫至儲存裝置160的任何資料會先寫至快取裝置170。OS在寫至快取裝置170後不會立刻將資料寫至儲存裝置160,而是等待一段適當時間再將資料寫至儲存裝置。因此,最小化儲存裝置160的資料存取且OS不需在執行其他指令前等待將被寫至儲存裝置160的資料。寫回快取方案有助於加速系統100之儲存子系統,因快取裝置170之資料存取速度快過儲存裝置160之資料存取速度。
當利用寫回快取方案時,儲存裝置160中之資料可能不與快取裝置170中之快取資料同步。在本發明之一實施例中,當系統100之處理器110、儲存裝置160、或快取裝置170之利用率不足時,運作時間/恢復控制器344將快取裝置170中之快取資料與儲存裝置160中之資料同步。例如,在本發明之一實施例中,運作時間/恢復控制器344判斷系統100中之處理器110的利用率低於臨限值並將尚未同步化之快取裝置170中之快取資料與儲存裝置160中之資料同步。相關技藝中具通常知識者可輕易理解到可利用其他方案或策略來執行快取裝置170中之資料的背景同步化而不影響本發明之作用。
OS可發出週期性清空命令至I/O控制器150以確保所有先前寫入的資料為非揮發性。在本發明之一實施例中,I/O控制器150在完成清空命令時保證儲存裝置160及快取裝置170中之資料更新及元資料更新兩者皆為非揮
發性,且即使發生如系統100的電力故障之不恰當關閉,仍可恢復所有先前寫入的資料。
在本發明之另一實施例中,OS利用寫通快取方案,其中儲存裝置160中之資料及快取裝置170中之快取資料總是同步。當OS執行寫入操作時,以相同資料寫入快取裝置170及儲存裝置160。
本發明之實施例允許減少系統100之開發成本,因無需專門快取硬體來致能電力故障安全寫通及寫回式快取。例如,在本發明之一實施例中,使用相對小尺寸的SSD來快取一或更多大尺寸的硬碟機而無需專門的快取硬體。
第4圖描繪根據本發明之一實施例的快取裝置170之組態400。快取裝置170之組態400顯示緊密元資料401之邏輯區段及快取線402之另一邏輯區段。快取裝置170的區塊寬度405顯示快取裝置170之資料位元寬度。在本發明之另一實施例中,快取裝置170的組態400亦可包括用於其他用途(如資料儲存或資料索引)之其他邏輯區段(未顯示在第4圖中)。
舉例而言,快取線402的邏輯區段繪製成八條快取線(快取線0至7),用來快取儲存裝置160之資料。快取線402的邏輯區段不含有與任何快取線402關聯的任何元資料。相關技藝中具通常知識者可輕易理解到快取裝置170可有超過八條的快取線來快取儲存裝置160之資料。在本發明之一實施例中,快取裝置170之每一快取線儲存儲存裝置160之連續資料。在本發明之另一實施例中,快
取裝置170之每一快取線不儲存儲存裝置160之連續資料。區塊寬度405不限於特定位元寬度。在本發明之一實施例中,區塊寬度405為快取裝置與運作時間/恢復控制器344之間的通訊鏈結之匯流排寬度。例如,在本發明之一實施例中,若快取裝置與運作時間/恢復控制器344之間的通訊鏈結之匯流排寬度為64位元,則區塊寬度405可設定在為64位元之倍數的位元寬度。在本發明之另一實施例中,區塊寬度405設定為儲存儲存裝置160之LBA的倍數。例如,快取裝置之每一快取線設定成可儲存儲存裝置160之四個LBA的區塊寬度405。
在本發明之一實施例中,緊密元資料401之邏輯區段具有儲存在緊密格式中之元資料0至7,使得多個元資料,各與不同快取線關聯,互相相鄰地儲存。例如,元資料0 410與快取線0 450關聯、元資料1 411與快取線1 451關聯,依此類推。在本發明之一實施例中,緊密元資料401針對每一區塊的元資料具有完整性簽章。元資料0至3 410、411、412、及413具有完整性簽章1 430且元資料4至7 414、415、416、及417具有完整性簽章2 440。完整性簽章430及440防範因系統100之無預警關閉或因故障事件造成的訛誤資料結構。在本發明之一實施例中,緊密元資料401之邏輯區段連續地位在快取裝置170中以允許緊密元資料401之快速存取。在本發明之另一實施例中,緊密元資料401之邏輯區段不是連續地位在快取裝置170中。在本發明之又一實施例中,完整性簽章
430及440並不儲存在緊密元資料401之邏輯區段中。
欲促進快取裝置170中之寫回或寫通式快取,在本發明之一實施例中,OS將快取線之資訊保持在揮發性記憶體142中。快取線之資訊包括但不限於未使用或未保存儲存裝置160的任何資料之快取線的列單、具有儲存裝置160中之資料或LBA與儲存該資料或LBA的快取裝置170中之快取線之間的鏈結資訊之快取表、可以緊密格式或不同格式儲存之快取裝置170中所有快取線的元資料、其在揮發性記憶體142中之個別的元資料尚未寫至快取裝置170中之元資料的快取線列單等等。在本發明之一實施例中,OS在揮發性記憶體142中保持快取裝置170之緊密元資料401的邏輯區段之副本以促進快取裝置170中之寫回或寫通式快取。在本發明之一實施例中,快取表可實施成散列表、樹狀或任何其他搜尋資料結構。
第5圖描繪根據本發明之一實施例的寫通快取方案之流程圖500。在步驟510中,運作時間控制器檢查是否已發生故障事件。在本發明之一實施例中,運作時間控制器檢查指明是否已發生故障事件的暫存器或旗標。在本發明之一實施例中,步驟510檢查系統100是否被不恰當地切斷電源。在本發明之另一實施例中,步驟510檢查OS是否當機或失靈。若有故障事件,則運作時間控制器在步驟512中重設快取裝置170。
在步驟512中重設快取裝置170之後流程返回至步驟510。在本發明之一實施例中,運作時間控制器藉由將快
取裝置170之所有快取線添加至備用或未使用的快取線列單來重設快取裝置170。備用快取線之列單向運作時間控制器指明列單中之快取線可供快取儲存裝置160之資料。在本發明之另一實施例中,運作時間控制器藉由把快取裝置170之所有快取線標記或標示成未使用來重設快取裝置170。
若無故障事件,在步驟520中運作時間控制器檢查是否有恰當地切斷系統100之電源的請求。系統100之恰當電源切斷或關閉意指其中OS發出命令給系統100之事件,此命令包括但不限於重新開機命令、關閉命令、休眠命令、待命命令、或切斷系統100之電源的任何命令。若有恰當地切斷系統100之電源的請求,運作時間控制器在步驟522中將與快取裝置170之所有快取線關聯的緊密元資料從揮發性記憶體142複製到快取裝置170。在本發明之一實施例中,運作時間控制器將與快取裝置170之所有快取線關聯的緊密元資料從揮發性記憶體142複製到緊密元資料401之邏輯區段。在非必要步驟524中,運作時間控制器從揮發性記憶體142複製快取表至快取裝置170且流程500返回到步驟510。
若沒有恰當地切斷系統100之電源的請求,在步驟530中運作時間控制器檢查是否有更新或***資料到快取裝置170之快取線中的請求。例如,在本發明之一實施例中,當OS欲寫入資料至儲存裝置160中之特定位址位置時,運作時間控制器檢查快取表看看在儲存裝置160中之
該特定位址位置的資料是否快取於快取裝置170中。若有快取命中,亦即在該特定位址位置的資料快取於快取裝置170中,運作時間控制器接收更新儲存該特定位址位置之資料的匹配快取線的請求。若有快取未命中,亦即在該特定位址位置的資料並非快取於快取裝置170中,運作時間控制器接收將該特定位址位置的資料***快取裝置170之快取線中的請求。
若有更新或***資料到快取裝置170之快取線中的請求,則在步驟532中運作時間控制器基於將寫入之新資料更新在揮發性記憶體142中與快取線關聯之緊密元資料或狀態資訊。在步驟534中,運作時間控制器以新資料更新快取線及儲存裝置160。當完成步驟534時,快取裝置170及儲存裝置160中之資料為同步化。
若沒有更新或***資料到快取裝置170之快取線中的請求,則在步驟540中恢復控制器檢查是否有系統100之任何供電通知。若是,在步驟542中恢復控制器回復或複製快取裝置170中之緊密元資料至揮發性記憶體142中。在非必要步驟544中,若在先前系統100之關閉中已經儲存快取表,則恢復控制器回復或複製快取裝置170中之快取表至揮發性記憶體142並且流程500返回至步驟510。
若否,在步驟550中運作時間控制器檢查是否有從快取裝置170讀取資料之請求。例如,在本發明之一實施例中,當OS欲從儲存裝置160之特定位址位置讀取資料時,運作時間控制器接收從快取裝置170讀取資料之請
求。若有從快取裝置170讀取資料之請求,在步驟552中運作時間控制器檢查快取表看看在儲存裝置160之特定位址位置的資料是否快取在快取裝置170中。若沒有從快取裝置170讀取資料之請求,流程返回至步驟510。
在步驟554中,運作時間控制器檢查是否有快取命中,亦即在儲存裝置160之特定位址位置的資料快取於快取裝置170中。若是,在步驟556中運作時間控制器從快取裝置170讀取資料並將資料返還至OS且流程500返回至步驟510。若否,在步驟558中運作時間控制器發送快取未命中至OS。在本發明之一實施例中,當有快取未命中時,在步驟558中運作時間控制器存取在儲存裝置160之特定位址位置的資料並返還該資料至OS且流程500返回至步驟510。
在本發明之一實施例中,當利用寫通快取方案時,於運作時間運作時間控制器不會寫入或更新快取裝置170中之緊密元資料。由於儲存裝置160及快取裝置170中的資料總是同步,當如電力喪失事件之故障事件發生時可重設快取裝置170。系統100為電力故障安全,因為即使在電力喪失事件中仍可保持儲存裝置160中的資料完整性。
第6A圖描繪根據本發明之一實施例的寫回快取方案之流程圖600。在步驟610中,運作時間控制器檢查是否有更新快取裝置170之快取線的請求。若有更新快取線之請求,在步驟612中運作時間控制器以新資料更新相關快取線。在步驟614中,運作時間控制器基於將寫入之新資
料更新揮發性記憶體142中與快取線關聯之緊密元資料或狀態資訊。在步驟616中,運作時間控制器基於將寫入之新資料更新快取裝置170中與快取線關聯之緊密元資料或狀態資訊。在本發明之另一實施例中,在步驟616中運作時間控制器將揮發性記憶體142中與快取線關聯之緊密元資料或狀態資訊複製到快取裝置170之緊密元資料401的邏輯區段中與快取線關聯之相關緊密元資料中。在完成步驟616後流程600返回至步驟610。
若沒有更新快取線之請求,在步驟620中運作時間控制器檢查是否有恰當切斷系統100電源之請求。若有恰當切斷系統100電源之請求,則在非必要步驟624中運作時間控制器從揮發性記憶體142複製快取表至快取裝置170中,且流程600返回至步驟610。若沒有恰當切斷系統100電源之請求,在步驟630中運作時間控制器檢查OS是否已發出清空命令。若OS已發出清空命令,在步驟632中運作時間控制器清空儲存裝置160及快取裝置170兩者中之任何揮發性資料。
若OS尚未發出清空命令,在步驟640中恢復控制器檢查是否有系統100的任何供電通知。若是,在步驟642中恢復控制器回復或複製快取裝置170中之緊密元資料至揮發性記憶體142中。在非必要步驟644中,若在先前系統100之關閉中已經儲存快取表,則恢復控制器回復或複製快取裝置170中之快取表至揮發性記憶體142並且流程600返回至步驟610。
若否,在步驟650中運作時間控制器檢查是否有從快取裝置170讀取資料之請求。若有從快取裝置170讀取資料之請求,在步驟652中運作時間控制器檢查快取表看看在儲存裝置160之特定位址位置的資料是否快取在快取裝置170中。若沒有從快取裝置170讀取資料之請求,流程返回至步驟610。
在步驟654中,運作時間控制器檢查是否有快取命中,亦即在儲存裝置160之特定位址位置的資料快取於快取裝置170中。若是,在步驟656中運作時間控制器從快取裝置170讀取資料並將資料返還至OS且流程600返回至步驟610。若否,在步驟658中運作時間控制器發送快取未命中至OS。在本發明之一實施例中,當有快取未命中時,在步驟658中運作時間控制器存取在儲存裝置160之特定位址位置的資料並返還該資料至OS且流程600返回至步驟610。第6A圖之寫回快取方案需要至快取裝置170之額外寫入以針對新資料的每一快取線寫入而更新與快取線關聯之緊密元資料。
第6B圖描繪根據本發明之一實施例的寫回快取方案之流程圖660。在步驟610中,運作時間控制器檢查是否有更新快取裝置170之快取線的請求。若有更新快取線之請求,在步驟612中運作時間控制器以新資料更新相關快取線。在步驟614中,運作時間控制器基於將寫入之新資料更新揮發性記憶體142中與快取線關聯之緊密元資料或狀態資訊。在步驟615中,運作時間控制器基於新資料將
快取裝置170中之快取線標記為等待與快取線關聯之緊密元資料的更新。在本發明之一實施例中,運作時間控制器藉由將快取線添加至揮發性記憶體142中之等待元資料寫入列單來標記快取線。等待元資料寫入列單包括具有在揮發性記憶體142及快取裝置170之間不同步之關聯緊密元資料的快取線。
若沒有更新快取線之請求,在步驟620中運作時間控制器檢查是否有恰當切斷系統100電源之請求。若有恰當切斷系統100電源之請求,則運作時間控制器將揮發性記憶體142中所有等待之緊密元資料寫入快取裝置170中之緊密元資料中。在本發明之一實施例中,運作時間控制器從等待元資料寫入列單判斷該更新或寫入哪些元資料。在非必要步驟624中,運作時間控制器從揮發性記憶體142複製快取表至快取裝置170中,且流程660返回至步驟610。
若沒有恰當切斷系統100電源之請求,在步驟630中運作時間控制器檢查OS是否已發出清空命令。若OS有發出清空命令,在步驟631中運作時間控制器將揮發性記憶體142中所有等待的緊密元資料更新到快取裝置170中之緊密元資料中。在本發明之另一實施例中,在步驟631中運作時間控制器在單一依序寫入操作中從揮發性記憶體142更新或複製所有的緊密元資料至快取裝置170。在步驟632中,運作時間控制器清空儲存裝置160及快取裝置170兩者中的任何揮發性資料。
若沒有發出清空命令,在步驟640中恢復控制器檢查是否有系統100的任何供電通知。若是,在步驟642中恢復控制器回復或複製快取裝置170中之緊密元資料至揮發性記憶體142中。在非必要步驟644中,若在先前系統100之關閉中已經儲存快取表,則恢復控制器回復或複製快取裝置170中之快取表至揮發性記憶體142並且流程660返回至步驟610。
若否,在步驟650中運作時間控制器檢查是否有從快取裝置170讀取資料之請求。若有從快取裝置170讀取資料之請求,在步驟652中運作時間控制器檢查快取表看看在儲存裝置160之特定位址位置的資料是否快取在快取裝置170中。若沒有從快取裝置170讀取資料之請求,流程660返回至步驟610。
在步驟654中,運作時間控制器檢查是否有快取命中,亦即在儲存裝置160之特定位址位置的資料快取於快取裝置170中。若是,在步驟656中運作時間控制器從快取裝置170讀取資料並將資料返還至OS且流程660返回至步驟610。若否,在步驟658中運作時間控制器發送快取未命中至OS。在本發明之一實施例中,當有快取未命中時,在步驟658中運作時間控制器存取在儲存裝置160之特定位址位置的資料並返還該資料至OS且流程660返回至步驟610。第6B圖之寫回快取方案需要至快取裝置170之非必要的額外寫入以針對每一次清空或電源切斷事件而更新與快取線關聯之緊密元資料。
第6C圖描繪根據本發明之一實施例的寫回快取方案之流程圖680。參照第6B圖說明第6C圖,因流程680為流程660的變異。流程660中的所有步驟,除了步驟631,應用至流程680且這些步驟將不在此重複。在流程680中,在步驟630從OS接收清空命令後,在步驟662中運作時間控制器檢查在等待元資料寫入列單中是否有連續的等待寫入。為了說明,假設等待元資料寫入列單有七條快取線(快取線5、6、7、9、12、13、及45)之等待元資料寫入。
在假設之情況中,流程680進至步驟664,因快取線5、6及7為連續的且快取線12及13亦為連續的。在步驟664中,運作時間控制器將快取線5、6及7之元資料寫入結合成單一元資料寫入。其亦將快取線12及13之元資料寫入結合成另一個單一元資料寫入。因此,運作時間控制器有四個元資料寫入(5、6及7之結合寫入、9、12及13之結合寫入、及45)而非原始七個元資料寫入。在步驟670中,運作時間控制器執行步驟664之四個元資料寫入。
在另一例示範例中,假設等待元資料寫入列單有五條快取線(快取線3、9、11、14、及45)之等待元資料寫入。在假設之情況中,流程680進至步驟666以檢查是否有將寫入之等待快取線之位址位置中小間隔。在本發明之一實施例中,若將快取線一起寫入所花費的時間短過分別寫入快取線所花費的時間,則稱快取線間之間隔為小。例
如,若更新與快取線9、10、及11關聯之元資料所需的時間短過分別更新與快取線9及11關聯之元資料的時間,則視快取線9及11之間的間隔為小。即使不需更新與快取線10關聯之元資料,在本發明之一實施例中,結合快取線之元資料更新減少更新快取線所需的時間。
在假設之情況中,快取線9及11之間以及快取線11及14之間的間隔假設為小且流程進至步驟668。在步驟668中,運作時間控制器將其之間具有小間隔的快取線結合成一大元資料快取寫入。例如,在假設之情況中,運作時間控制器將快取線9、11、及14之元資料更新結合成快取線9至14的單一元資料更新,即使不需變更快取線10、12、及13。在步驟670中,運作時間控制器執行步驟664之結合的元資料寫入並且流程進至流程660中之步驟634。步驟664及668最佳化更新快取裝置170中之等待的緊密元資料的操作。在流程680中,在本發明之另一實施例中,僅執行步驟662及664之一及步驟666及668之一。相關技藝中具通常知識者可輕易理解到可執行其他最佳化來減少更新快取裝置170中之等待的緊密元資料的時間而不影響本發明之作用。
第6A、6B、及6C圖中所示之寫回快取方案並非意圖為限制性。相關技藝中具通常知識者可輕易理解到可執行步驟的各種結合或變更而不影響本發明之作用。系統100的使用者可決定利用第6A、6B、及6C圖的三種寫回快取方案之一並可使用第6A、6B、及6C圖的三種寫回快取方
案之任何結合。
第7圖描繪根據本發明之一實施例的將資料***快取裝置170之快取線中之方法的流程圖700。在步驟710中,運作時間控制器檢查是否有將資料***快取裝置170之快取線中之請求。例如,在本發明之一實施例中,當OS欲寫入資料至儲存裝置160之特定位址位置時,運作時間控制器檢查快取表看看在儲存裝置160之特定位址位置的資料是否快取在快取裝置170中。若沒有快取命中時,亦即,在特定位址位置的資料並未快取在快取裝置170中,運作時間控制器可接收將資料***快取裝置170之快取線中之請求。
若沒有將資料***快取線中之請求,則流程結束。若有將資料***快取線中之請求,在步驟720中運作時間控制器檢查快取裝置170中是否有任何備用快取線。在本發明之一實施例中,快取裝置170中之所有未使用的快取線係標記或標示成備用快取線。在本發明之另一實施例中,快取裝置170中之未使用的快取線之一固定部分係標記或標示成備用快取線。例如,在本發明之一實施例中,運作時間控制器可標記快取裝置170中之五條快取線為備用快取線。若無備用快取線,在步驟722中運作時間控制器基於驅逐策略選擇將被驅逐的快取裝置170之一或更多快取線。驅逐策略包括但不限於驅逐最久以前使用的快取線、驅逐快取裝置170之第一條快取線、或類似者。
在步驟724中,由運作時間控制器驅逐選定的快取
線。在本發明之一實施例中,若非已被同步,運作時間控制器藉由將選定快取線中之快取資料寫至儲存裝置160來驅逐選定的快取線。在步驟726中,運作時間控制器標示或標記被驅逐的快取線為備用快取線且流程進至步驟730。若有備用快取線,在步驟730中運作時間控制器選擇快取裝置170之一或更多備用快取線以快取將寫入之資料。備用快取線之選擇策略包括但不限於第一可用的備用快取線、最久以前使用的備用快取線等等。在步驟740中,運作時間控制器將資料寫至選定的備用快取線。
在步驟750中,運作時間控制器基於新資料更新揮發性記憶體142中與選定快取線關聯之緊密元資料或狀態資訊。在步驟750之後,流程700可執行非必要的步驟760,其中若利用流程660或680之寫回快取方案,則運作時間控制器標記快取線為使基於新資料更新快取裝置170中與快取線關聯之緊密元資料等待,或執行非必要的步驟770,其中若利用流程600之寫回快取方案,則運作時間控制器基於新資料更新快取裝置170中與選定的快取線關聯之緊密元資料或狀態資訊。流程在完成非必要步驟760或770之後結束。
快取線之驅逐需要與快取裝置170中之快取線關聯之緊密元資料的立刻更新,因為如系統100之電力故障的故障事件可能導致儲存裝置160及快取裝置170中之資料完整性問題。因此,在每一次驅逐後快取線之驅逐需要與快取裝置170中之快取線關聯之元資料寫入。然而,在每一
次快取線驅逐後執行額外的元資料寫入會產生管理負擔(overheads)。欲避免管理負擔,第7圖中所述之將資料***快取裝置170之快取線中的方法包括將新資料***備用快取線中而非具有快取資料的快取線中。
例如,為了說明,假設運作時間控制器接收***儲存裝置160之LBA 1的資料之請求。假設快取線4儲存來自儲存裝置160之LBA 5的資料。若在以儲存裝置160之LBA 1的資料寫入快取線4之後但在更新與快取線4關聯的元資料之前發生故障事件,系統100在重新開機或重新啟動事件後會基於與快取線4關聯之元資料看到快取線4具有來自LBA 5的資料。然而,這是錯誤的,因已用儲存裝置160之LBA 1的資料更新快取線4。
藉由如第7圖之流程700中所述般***新資料至備用快取線中,發生的故障事件不影響儲存裝置160及快取裝置170之資料完整性。例如,為了說明,當運作時間控制器接收將來自儲存裝置160之LBA 1的資料***快取裝置170中的請求時,運作時間控制器選擇備用快取線來快取來自儲存裝置160之LBA 1的資料。若在以來自儲存裝置160之LBA 1的資料更新備用快取線之後但在更新與備用快取線關聯的元資料之前發生故障事件,此故障事件不影響儲存裝置160及快取裝置170之資料完整性。因為此為故障事件且未發生清空事件,可拋棄新資料而不影響系統100。
寫通快取方案不限於第5圖中所示之演算法。在本發
明之另一實施例中,寫通快取方案可利用第6A、6B、及6C圖中所示之寫回快取演算法之一。寫回快取方案可利用第6A、6B、及6C圖中所示之寫回快取演算法之一及第7圖中所示的演算法。若寫通快取方案利用第6A、6B、及6C圖中所示之寫回快取演算法之一及第7圖中所示的演算法,則寫通快取亦可在不恰當關閉時保持正確。
第8A及8B圖描繪根據本發明之一實施例的實施寫回快取方案的虛擬碼800及850。為了說明,使用HDD來例示儲存裝置160且使用SSD來例示快取裝置170。相關技藝中具通常知識者可輕易理解虛擬碼800及850之作用且不詳述虛擬碼800及850之作用。
雖說明了揭露之標的之實施例的範例,相關技藝中具通常知識者可輕易理解到可替代地使用實施揭露之標的之許多其他方法。在前述說明中,已說明揭露之標的之各種態樣。為了闡明,提出特定數字、系統、及組態以提供標的之詳盡了解。然而,對獲得此揭露之優點熟悉的相關技藝人士而言,在無這些特定細節下實行標的為顯而易見者。在其他例子中,省略、簡化、結合、***皆知的特徵、構件、或模組,以不混淆揭露之標的。
在此所用之「可操作」一詞意指裝置、系統、協定等等在裝置或系統無電狀態時能夠操作或調適以操作其希望的功能。可在硬體、韌體、軟體、或上述之結合中實施揭露之標的的各種實施例,且可參考或連同程式碼加以描述,如指令、函數、程序、資料結構、邏輯、應用程式、
模擬、仿真、及設計的製造之設計表示或格式,其當被機器存取時導致機器執行任務、界定抽象資料類型或低階硬體上下文、或產生結果。
可用儲存在一或更多運算裝置(如一般目的電腦或運算裝置)上或在其上執行的碼或資料來實施圖中所示之技術。此種運算裝置使用機器可讀取媒體來儲存並傳達(內部地且透過網路與其他運算裝置)碼及資料,機器可讀取媒體可例如為機器可讀取儲存媒體(如磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相變記憶體)及機器可讀取通訊媒體(如電性、光學、音學或其他形式的傳播信號-如載波、紅外線信號、數位信號等等)。
雖已參照例示性的實施例說明揭露之標的,不應以限制概念解釋本說明。對熟悉此揭露的標的相關之技藝的人士而言為顯而易見之例示性實施例之各種修改還有標的之其他實施例應落在揭露之標的之範疇內。
110‧‧‧處理器
120‧‧‧記憶體/圖形控制器
130‧‧‧顯示裝置
140‧‧‧主記憶體
142‧‧‧揮發性記憶體
144‧‧‧非揮發性記憶體
150‧‧‧I/O控制器
160‧‧‧儲存裝置
170‧‧‧快取裝置
180‧‧‧網路介面
190‧‧‧鍵盤/滑鼠
Claims (15)
- 一種用以執行無原子元資料之電力故障安全快取的設備,包含:多核心處理器電腦,其包含硬碟機及快閃記憶體;該快閃記憶體係儲存與該硬碟機不同步的資料;及該電腦係執行操作系統,該操作系統根據接腳(pinning)資訊及最近存取的位址以管理從該快閃記憶體至該硬碟機之資料驅逐及從該硬碟機至該快閃記憶體之資料提升。
- 如申請專利範圍第1項所述之設備,其中該電腦包含快取,該快取包含該快閃記憶體。
- 如申請專利範圍第1項所述之設備,其中該資料驅逐及資料提升係根據最近資料使用。
- 如申請專利範圍第1項所述之設備,其中該電腦包含多核心處理器、控制器、及無線介面;及該控制器係允許該處理器與該無線介面、該硬碟機、及該快閃記憶體通訊。
- 如申請專利範圍第4項所述之設備,其中該無線介面係依據藍芽無線通訊協定而操作。
- 一種用以執行無原子元資料之電力故障安全快取的方法,包含:將資料儲存於快閃記憶體中,該資料與硬碟機不同步,該快閃記憶體及該硬碟機被包含於多核心處理器電腦中;及 由該電腦係執行操作系統,該操作系統根據接腳資訊及最近存取的位址以管理從該快閃記憶體至該硬碟機之資料驅逐及從該硬碟機至該快閃記憶體之資料提升。
- 如申請專利範圍第6項所述之方法,其中該電腦包含快取,該快取包含該快閃記憶體。
- 如申請專利範圍第6項所述之方法,其中該資料驅逐及資料提升係根據最近資料使用。
- 如申請專利範圍第6項所述之方法,其中該電腦包含多核心處理器、控制器、及無線介面;及該控制器係允許該處理器與該無線介面、該硬碟機、及該快閃記憶體通訊。
- 如申請專利範圍第9項所述之方法,其中該無線介面係依據藍芽無線通訊協定而操作。
- 一種儲存指令之電腦可讀取儲存媒體,當由機器執行時該些指令導致包含以下之操作的履行:將資料儲存於快閃記憶體中,該資料與硬碟機不同步,該快閃記憶體及該硬碟機被包含於多核心處理器電腦中;及由該電腦係執行操作系統,該操作系統根據接腳資訊及最近存取的位址以管理從該快閃記憶體至該硬碟機之資料驅逐及從該硬碟機至該快閃記憶體之資料提升。
- 如申請專利範圍第11項所述之媒體,其中該電腦包含快取,該快取包含該快閃記憶體。
- 如申請專利範圍第11項所述之媒體,其中該資 料驅逐及資料提升係根據最近資料使用。
- 如申請專利範圍第11項所述之媒體,其中該電腦包含多核心處理器、控制器、及無線介面;及該控制器係允許該處理器與該無線介面、該硬碟機、及該快閃記憶體通訊。
- 如申請專利範圍第14項所述之媒體,其中該無線介面係依據藍芽無線通訊協定而操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/414,385 US8195891B2 (en) | 2009-03-30 | 2009-03-30 | Techniques to perform power fail-safe caching without atomic metadata |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201502783A TW201502783A (zh) | 2015-01-16 |
TWI556104B true TWI556104B (zh) | 2016-11-01 |
Family
ID=42228567
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103132963A TWI556104B (zh) | 2009-03-30 | 2010-03-29 | 用以執行無原子元資料之電力故障安全快取的技術 |
TW099109305A TWI465906B (zh) | 2009-03-30 | 2010-03-29 | 用以執行無原子元資料之電力故障安全快取的技術 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099109305A TWI465906B (zh) | 2009-03-30 | 2010-03-29 | 用以執行無原子元資料之電力故障安全快取的技術 |
Country Status (5)
Country | Link |
---|---|
US (5) | US8195891B2 (zh) |
CN (1) | CN101923499B (zh) |
DE (1) | DE102010013263B4 (zh) |
GB (1) | GB2469193B (zh) |
TW (2) | TWI556104B (zh) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8082384B2 (en) | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8751760B2 (en) * | 2009-10-01 | 2014-06-10 | Dell Products L.P. | Systems and methods for power state transitioning in an information handling system |
JP4966418B1 (ja) * | 2011-01-26 | 2012-07-04 | 株式会社東芝 | 情報処理装置及び書き込み制御方法 |
US9183128B2 (en) | 2011-02-23 | 2015-11-10 | St-Ericsson Sa | Device controller for a memory device |
US8370578B2 (en) * | 2011-03-03 | 2013-02-05 | Hitachi, Ltd. | Storage controller and method of controlling storage controller |
KR20120112965A (ko) * | 2011-04-04 | 2012-10-12 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 |
CN102184145B (zh) | 2011-05-13 | 2013-04-17 | 杭州华三通信技术有限公司 | 重启数据不丢失方法及装置 |
US8631190B2 (en) * | 2011-07-22 | 2014-01-14 | International Business Machines Corporation | Prefetching data tracks and parity data to use for destaging updated tracks |
GB2510760B (en) * | 2011-12-20 | 2020-05-20 | Intel Corp | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
US9448922B2 (en) * | 2011-12-21 | 2016-09-20 | Intel Corporation | High-performance storage structures and systems featuring multiple non-volatile memories |
KR101692417B1 (ko) * | 2011-12-29 | 2017-01-05 | 인텔 코포레이션 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
US8930947B1 (en) | 2011-12-30 | 2015-01-06 | Emc Corporation | System and method for live migration of a virtual machine with dedicated cache |
US9158578B1 (en) | 2011-12-30 | 2015-10-13 | Emc Corporation | System and method for migrating virtual machines |
US9235524B1 (en) * | 2011-12-30 | 2016-01-12 | Emc Corporation | System and method for improving cache performance |
US9104529B1 (en) * | 2011-12-30 | 2015-08-11 | Emc Corporation | System and method for copying a cache system |
US8627012B1 (en) | 2011-12-30 | 2014-01-07 | Emc Corporation | System and method for improving cache performance |
US9009416B1 (en) | 2011-12-30 | 2015-04-14 | Emc Corporation | System and method for managing cache system content directories |
US9053033B1 (en) | 2011-12-30 | 2015-06-09 | Emc Corporation | System and method for cache content sharing |
US9779027B2 (en) * | 2012-10-18 | 2017-10-03 | Oracle International Corporation | Apparatus, system and method for managing a level-two cache of a storage appliance |
US9772949B2 (en) * | 2012-10-18 | 2017-09-26 | Oracle International Corporation | Apparatus, system and method for providing a persistent level-two cache |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9268652B1 (en) | 2012-10-31 | 2016-02-23 | Amazon Technologies, Inc. | Cached volumes at storage gateways |
US9274956B1 (en) * | 2012-10-31 | 2016-03-01 | Amazon Technologies, Inc. | Intelligent cache eviction at storage gateways |
US9535836B2 (en) | 2013-03-13 | 2017-01-03 | Hewlett Packard Enterprise Development Lp | Non-volatile memory update tracking |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
US9734097B2 (en) | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
US20150019822A1 (en) * | 2013-07-11 | 2015-01-15 | Lsi Corporation | System for Maintaining Dirty Cache Coherency Across Reboot of a Node |
US9563565B2 (en) | 2013-08-14 | 2017-02-07 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
US9727493B2 (en) | 2013-08-14 | 2017-08-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
US9317421B2 (en) * | 2013-09-27 | 2016-04-19 | Intel Corporation | Memory management |
US9589606B2 (en) * | 2014-01-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Handling maximum activation count limit and target row refresh in DDR4 SDRAM |
US9898414B2 (en) * | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
US10101917B1 (en) * | 2014-09-25 | 2018-10-16 | EMC IP Holding Company LLC | Evaluating and selecting data caching techniques |
US9430396B2 (en) | 2014-12-22 | 2016-08-30 | Intel Corporation | Updating persistent data in persistent memory-based storage |
US9690716B2 (en) * | 2015-02-13 | 2017-06-27 | Intel Corporation | High performance persistent memory for region-centric consistent and atomic updates |
US20160283385A1 (en) * | 2015-03-27 | 2016-09-29 | James A. Boyd | Fail-safe write back caching mode device driver for non volatile storage device |
US10120818B2 (en) | 2015-10-01 | 2018-11-06 | International Business Machines Corporation | Synchronous input/output command |
US9715352B2 (en) | 2015-10-01 | 2017-07-25 | International Business Machines Corporation | Synchronous input/output using a low latency storage controller connection |
US10063376B2 (en) | 2015-10-01 | 2018-08-28 | International Business Machines Corporation | Access control and security for synchronous input/output links |
US10068000B2 (en) | 2015-10-01 | 2018-09-04 | International Business Machines Corporation | Synchronous input/output replication of data in a persistent storage control unit |
US10175903B2 (en) | 2016-03-31 | 2019-01-08 | Intel Corporation | N plane to 2N plane interface in a solid state drive (SSD) architecture |
US10289549B1 (en) * | 2016-06-28 | 2019-05-14 | EMC IP Holding Company LLC | Checkpointing cache status information |
US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10452539B2 (en) * | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10552341B2 (en) | 2017-02-17 | 2020-02-04 | International Business Machines Corporation | Zone storage—quickly returning to a state of consistency following an unexpected event |
US10482010B2 (en) * | 2017-06-29 | 2019-11-19 | Intel Corporation | Persistent host memory buffer |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
CN109426623A (zh) * | 2017-08-29 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种读取数据的方法及装置 |
US10430305B2 (en) * | 2017-09-01 | 2019-10-01 | International Business Machine Corporation | Determine whether to rebuild track metadata to determine whether a track format table has a track format code for the track format metadata |
CN107797769A (zh) * | 2017-11-06 | 2018-03-13 | 长沙曙通信息科技有限公司 | 一种存储虚拟化***缓存管理策略实现方法 |
TWI649652B (zh) * | 2017-12-29 | 2019-02-01 | 國科美國研究實驗室 | Fast and safe data storage device and method |
JP2019185350A (ja) | 2018-04-09 | 2019-10-24 | 東芝メモリ株式会社 | メモリシステム及びメモリシステムの制御方法 |
CN109558274B (zh) * | 2018-10-24 | 2023-08-15 | 大唐微电子技术有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
US10866890B2 (en) * | 2018-11-07 | 2020-12-15 | Arm Limited | Method and apparatus for implementing lock-free data structures |
US11416148B2 (en) | 2020-01-10 | 2022-08-16 | Samsung Electronics Co., Ltd. | System and method of providing atomicity to large writes to persistent memory |
US11573937B2 (en) | 2020-10-09 | 2023-02-07 | Bank Of America Corporation | System and method for automatically resolving metadata structure discrepancies |
US11494125B2 (en) | 2020-12-17 | 2022-11-08 | Western Digital Technologies, Inc. | Storage system and method for dual fast release and slow release responses |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW446953B (en) * | 1998-10-13 | 2001-07-21 | Advantest Corp | Method and structure for testing embedded memories |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US20080244164A1 (en) * | 2007-04-02 | 2008-10-02 | Yao-Xun Chang | Storage device equipped with nand flash memory and method for storing information thereof |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12009A (en) * | 1854-11-28 | Planing-machine | ||
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
US5269019A (en) * | 1991-04-08 | 1993-12-07 | Storage Technology Corporation | Non-volatile memory storage and bilevel index structure for fast retrieval of modified records of a disk track |
US6021408A (en) * | 1996-09-12 | 2000-02-01 | Veritas Software Corp. | Methods for operating a log device |
US5895488A (en) * | 1997-02-24 | 1999-04-20 | Eccs, Inc. | Cache flushing methods and apparatus |
US6219693B1 (en) * | 1997-11-04 | 2001-04-17 | Adaptec, Inc. | File array storage architecture having file system distributed across a data processing platform |
US7953931B2 (en) * | 1999-08-04 | 2011-05-31 | Super Talent Electronics, Inc. | High endurance non-volatile memory devices |
US8078794B2 (en) * | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
US7730213B2 (en) * | 2000-12-18 | 2010-06-01 | Oracle America, Inc. | Object-based storage device with improved reliability and fast crash recovery |
US6839812B2 (en) * | 2001-12-21 | 2005-01-04 | Intel Corporation | Method and system to cache metadata |
US20030212865A1 (en) * | 2002-05-08 | 2003-11-13 | Hicken Michael S. | Method and apparatus for flushing write cache data |
KR100484147B1 (ko) * | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | 플래시 메모리 관리 방법 |
US7130962B2 (en) * | 2003-12-18 | 2006-10-31 | Intel Corporation | Writing cache lines on a disk drive |
US20050144379A1 (en) * | 2003-12-31 | 2005-06-30 | Eschmann Michael K. | Ordering disk cache requests |
US7130956B2 (en) * | 2004-02-10 | 2006-10-31 | Sun Microsystems, Inc. | Storage system including hierarchical cache metadata |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
JP2005301419A (ja) * | 2004-04-07 | 2005-10-27 | Hitachi Ltd | ディスクアレイ装置およびそのデータ処理方法 |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7580986B2 (en) * | 2004-05-17 | 2009-08-25 | Pixar | Dependency graph-based aggregate asset status reporting methods and apparatus |
US20060136765A1 (en) * | 2004-12-03 | 2006-06-22 | Poisner David L | Prevention of data loss due to power failure |
US8745326B2 (en) * | 2005-06-02 | 2014-06-03 | Seagate Technology Llc | Request priority seek manager |
US20060294300A1 (en) * | 2005-06-22 | 2006-12-28 | Seagate Technology Llc | Atomic cache transactions in a distributed storage system |
US7797479B2 (en) | 2005-06-30 | 2010-09-14 | Intel Corporation | Technique to write to a non-volatile memory |
US7533215B2 (en) | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US7506112B2 (en) * | 2006-07-14 | 2009-03-17 | Sun Microsystems, Inc. | Reducing bitmap management overhead |
US7627714B2 (en) * | 2006-08-22 | 2009-12-01 | International Business Machines Corporation | Apparatus, system, and method for preventing write starvation in a partitioned cache of a storage controller |
KR100801015B1 (ko) * | 2006-08-30 | 2008-02-04 | 삼성전자주식회사 | 하이브리드 하드 디스크 드라이브와 데이터 저장 방법 |
US7752474B2 (en) * | 2006-09-22 | 2010-07-06 | Apple Inc. | L1 cache flush when processor is entering low power mode |
US20080082752A1 (en) * | 2006-09-29 | 2008-04-03 | Ram Chary | Method and apparatus for saving power for a computing system by providing instant-on resuming from a hibernation state |
US8880775B2 (en) * | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US20100088459A1 (en) * | 2008-10-06 | 2010-04-08 | Siamak Arya | Improved Hybrid Drive |
US8195878B2 (en) * | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
TWI405209B (zh) * | 2009-04-01 | 2013-08-11 | Phison Electronics Corp | 資料管理方法及使用此方法的快閃儲存系統與控制器 |
US20120317337A1 (en) * | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Managing data placement on flash-based storage by use |
-
2009
- 2009-03-30 US US12/414,385 patent/US8195891B2/en active Active
-
2010
- 2010-03-29 TW TW103132963A patent/TWI556104B/zh active
- 2010-03-29 CN CN2010101580398A patent/CN101923499B/zh active Active
- 2010-03-29 TW TW099109305A patent/TWI465906B/zh active
- 2010-03-29 DE DE102010013263.2A patent/DE102010013263B4/de active Active
- 2010-03-29 GB GB1005303.1A patent/GB2469193B/en active Active
-
2012
- 2012-05-16 US US13/473,419 patent/US8700858B2/en active Active
-
2014
- 2014-02-19 US US14/184,256 patent/US9501402B2/en active Active
-
2016
- 2016-10-28 US US15/338,199 patent/US10289556B2/en active Active
-
2019
- 2019-05-07 US US16/405,918 patent/US20200034304A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW446953B (en) * | 1998-10-13 | 2001-07-21 | Advantest Corp | Method and structure for testing embedded memories |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US20080244164A1 (en) * | 2007-04-02 | 2008-10-02 | Yao-Xun Chang | Storage device equipped with nand flash memory and method for storing information thereof |
Also Published As
Publication number | Publication date |
---|---|
DE102010013263A1 (de) | 2011-01-13 |
US10289556B2 (en) | 2019-05-14 |
TW201502783A (zh) | 2015-01-16 |
US20120290774A1 (en) | 2012-11-15 |
US20140173190A1 (en) | 2014-06-19 |
TWI465906B (zh) | 2014-12-21 |
DE102010013263B4 (de) | 2024-06-27 |
CN101923499B (zh) | 2013-11-06 |
US20170161198A1 (en) | 2017-06-08 |
GB201005303D0 (en) | 2010-05-12 |
US9501402B2 (en) | 2016-11-22 |
TW201104425A (en) | 2011-02-01 |
GB2469193A (en) | 2010-10-06 |
US8700858B2 (en) | 2014-04-15 |
US20200034304A1 (en) | 2020-01-30 |
US8195891B2 (en) | 2012-06-05 |
CN101923499A (zh) | 2010-12-22 |
GB2469193B (en) | 2012-11-07 |
US20100250833A1 (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI556104B (zh) | 用以執行無原子元資料之電力故障安全快取的技術 | |
US10394710B2 (en) | Storage class memory (SCM) memory mode cache system | |
US8285955B2 (en) | Method and apparatus for automatic solid state drive performance recovery | |
US9218278B2 (en) | Auto-commit memory | |
JP5376983B2 (ja) | メモリシステム | |
JP6026538B2 (ja) | 検証されたデータセットの不揮発性媒体ジャーナリング | |
US20180024919A1 (en) | Mapping tables for storage devices | |
US20150089287A1 (en) | Event-triggered storage of data to non-volatile memory | |
TW201324154A (zh) | 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法 | |
JP2001166993A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US9292204B2 (en) | System and method of rebuilding READ cache for a rebooted node of a multiple-node storage cluster | |
US20100205391A1 (en) | Memory system and managing method therefor | |
US9921913B2 (en) | Flushing host cache data before rebuilding degraded redundant virtual disk | |
CN105786721A (zh) | 一种内存地址映射管理方法及处理器 | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US9058274B2 (en) | System and method of selective READ cache retention for a rebooted node of a multiple-node storage cluster | |
US9323671B1 (en) | Managing enhanced write caching | |
US10331385B2 (en) | Cooperative write-back cache flushing for storage devices | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
US20140059293A1 (en) | Method for protecting a gpt cached disks data integrity in an external operating system environment | |
JP2013174976A (ja) | メモリシステムおよび制御プログラムの更新方法 | |
CN115840661A (zh) | 从hmb丢失恢复的无dram ssd |