欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于固態(tài)驅動裝置(ssd)的優(yōu)化的上下文移除的制作方法

文檔序號:6534079閱讀:201來源:國知局
用于固態(tài)驅動裝置(ssd)的優(yōu)化的上下文移除的制作方法
【專利摘要】大容量存儲系統(tǒng)采用用于存儲器頁重定向的分頁表并且維護分頁表以用于功率丟失恢復(PLR),功率丟失恢復使用要被寫到非易失性存儲器的分頁表(L2P)區(qū)段的FIFO隊列。FIFO隊列與受影響區(qū)段的序列號和標記數(shù)據(jù)相結合地標識L2P區(qū)段的序列以用于重新創(chuàng)建分頁表。在功率故障時,功率丟失恢復(PLR)機制基于FIFO隊列針對所寫的最后的區(qū)段進行掃描。PLR過程通過以序列號所限定的次序來重放對應的改變從而恢復未寫的分頁表條目。恢復過程針對當前上下文中的每個序列號繼續(xù),直到分頁表中的L2P信息被重新創(chuàng)建到恰好在功率丟失前的點為止。
【專利說明】用于固態(tài)驅動裝置(SSD)的優(yōu)化的上下文移除

【背景技術】
[0001]固態(tài)驅動裝置(SSD)由于若干原因較之傳統(tǒng)的硬盤驅動裝置(HDD)在流行度上日益增加。與硬驅動裝置相比,SSD提供高達66%的更快的響應性,從而允許更快的引導、應用起動和重新加載。SSD為了更高的可靠性和更長的壽命期限而不具有移動部分。SSD被充分地強固而足以在沒有由于(在讀/寫頭和常規(guī)旋轉媒介表面之間的接近的物理容許量的情況下常見的)“磁頭劃碰”的原因所致的數(shù)據(jù)丟失的情況下承受沖擊和震動,并且SSD具有延長電池壽命的更低的功率消耗。在采用大容量存儲設備的主機計算設備(諸如膝上型、平板式、和其它移動和臺式設備)中,SSD作為HDD的合適替代以作為主要的大容量存儲設備而因此變得流行。此外,SSD的優(yōu)點不僅限于客戶端計算設備(諸如便攜式/個人電子設備),而且由于其較之旋轉媒介表面(諸如在常規(guī)HDD中的那些)的更好的性能和可靠性,還在針對更苛求的應用的企業(yè)分部中非常流行。
[0002]盡管SSD采用諸如NAND閃速存儲器的非易失性存儲器,但是某些功能可以被預留用于板載易失性存儲器,諸如動態(tài)隨機存取存儲器(DRAM)。在操作中,在“清理”(即,預期的或用戶發(fā)起的)關停期間,大多數(shù)主機系統(tǒng)對SSD發(fā)起關?;蚩臻e命令以給予SSD足夠的時間來為關停做準備。這允許SSD把當前在易失性存儲器的臨時緩沖器中的數(shù)據(jù)或內部狀態(tài)保存到非易失性媒介。然而,在非預期的或突然的功率關停期間,SSD在主機系統(tǒng)能夠發(fā)起適當命令之前驟然丟失功率。這可能阻止將易失性存儲器中的臨時緩沖器中的數(shù)據(jù)保存在非易失性存儲器中。

【專利附圖】

【附圖說明】
[0003]根據(jù)本文公開的如隨附附圖中所圖解的特定實施例的以下描述,前述和其它特征將是顯而易見的,在附圖中,貫穿不同的視圖,同樣的參考標號指代相同部分。附圖未必是按比例的,代替地重點被放在圖解本發(fā)明的原理上。
[0004]圖1是適合用于與本文的配置一起使用的計算環(huán)境的上下文示圖;
圖2是如圖1中的分頁表存儲的框圖;
圖3是圖1的環(huán)境中的分頁表(L2P)存儲和恢復的流程圖;
圖4示出圖3的方法的時序圖;
圖5示出在圖4的存儲器組件中使用的系統(tǒng)和用戶帶;以及圖6-9是如本文所限定的功率丟失和恢復機制的流程圖。

【具體實施方式】
[0005]較之常規(guī)的機械HDD,SSD享有若干優(yōu)點。SDD不具有移動部分、更快并且與它們的高速旋轉相對物相比具有更低的功率消耗。在SSD中,經(jīng)常采用邏輯至物理(L2P)表(分頁表)以將邏輯地址轉譯為SSD上的物理位置。計算系統(tǒng)典型地采用各種類型的虛擬和/或動態(tài)尋址以避免把軟件綁定至物理大容量存儲位置。L2P表經(jīng)由L2P把來自主機計算機系統(tǒng)的I/O請求映射到物理地址位置。L2P提供存儲器的區(qū)段或頁的重定向以優(yōu)化大容量存儲設備(SSD)上的存儲器使用。
[0006]在特定的布置(諸如本文公開的那些)中,SSD采用更快的易失性存儲器(諸如DRAM)用于L2P表,以用于促進來自主機設備的存儲器存取??梢允褂萌魏芜m合的易失性存儲器,例如同步動態(tài)隨機存取存儲器、動態(tài)隨機存取存儲器、RAMBUS DRAM和雙數(shù)據(jù)速率三SDRAM。然而,諸如功率丟失的事件可能損害L2P,有可能造成L2P表的數(shù)據(jù)丟失。L2P表可以被分頁從而避免整個L2P表的完整易失性存儲器表示。在這種方法中,在功率故障的情況下,功率故障恢復管理器確保經(jīng)由功率故障恢復管理器(其在功率故障或崩潰事件之后恢復與非易失性存儲器關聯(lián)的L2P地址映射表)來維護與非易失性存儲器關聯(lián)的L2P地址映射表的數(shù)據(jù)完整性。
[0007]在所提出的方法中,基于非易失性閃速存儲器的SSD和緩存提供優(yōu)于傳統(tǒng)的硬盤驅動裝置的性能和功率益處。已經(jīng)在更早時發(fā)現(xiàn)用以轉譯邏輯至物理地址的平滑間接(flat indirect1n)系統(tǒng)(L2P表)在提供一致的、可靠的以及可預測的性能上是有用的。L2P被保持在易失性存儲器中,并且周期性地(包括在關停時間時)在非易失性存儲器上被保存為“上下文”的部分或者穩(wěn)定的系統(tǒng)變量集合。在功率故障的情況下,在最后的上下文保存之后的對L2P的改變丟失,并且必須在隨后的引導期間被重建。取決于配置,例如,可以采用任何適合的非易失性存儲器,包括但不限于NAND閃速存儲器、相變存儲器(PCM)、電可擦除可編程只讀存儲器(EEPROM)或者任何其它類型的非易失性存儲器設備,諸如PCMS、基于納米線和FeTRAM的實現(xiàn)。
[0008]本文的配置部分地基于如下觀測:用于重構L2P的功率故障恢復可能牽涉遍歷之前寫至盤的大量的分頁改變。在SSD中,L2P可以采取需要用于存儲器的每一頁的條目的分頁表的形式。盡管實際的分頁表大小取決于頁大小,但是典型的因數(shù)是所表示的存儲器區(qū)域的大約1/1000 (l/1000th)。因此,ITB驅動裝置只需要IGB的易失性存儲器用于維護分頁表。不幸的是,常規(guī)的方法遭受如下缺點:除了由于易失性存儲器的原因所致的增加SSD的成本以外,在功率丟失的情況下更大的大小可能需要相當大的恢復時間以重新創(chuàng)建分頁表。
[0009]在性能至關重要的應用中,由于分頁開銷的原因,總的功率故障恢復時間可能容易地超過引導時間的要求。取決于驅動裝置容量、易失性存儲器大小和工作負荷特性,可能花費30+秒來引導驅動裝置,這傾向于打擊消費者預期和產(chǎn)品實用性。
[0010]在一些配置中,對L2P表進行分頁稍微減輕恢復時間,然而,在用于重新創(chuàng)建L2P表的重放(replay)過程中,仍然需要遍歷被頁出(page-out)的區(qū)段中的多數(shù)。因此,本文的配置通過限定分頁表區(qū)段的FIFO (First-1n, First-Out,先進先出)隊列(對照于常規(guī)LRU,或者至少最近使用的隊列)并且僅重放恰在功率故障前未被刷新(寫到存儲存儲器)的區(qū)段,來在重放過程期間減少分頁引用(paging reference)(所謂的“頁出(page-out)”),從而基本上克服延長的功率丟失恢復時間的缺點。在進一步的細節(jié)中,示例布置采用重放用于未被刷新的區(qū)段(但是在功率丟失前在易失性存儲器中)、以及還有自從最后刷新的區(qū)段在運行時期間被放入FIFO隊列中起所刷新的區(qū)段?;诒慌抨牭膮^(qū)段的數(shù)量,方法可以潛在地刷新(B-1)個區(qū)段并且因而還重放它們,其中B是能夠被存儲在易失性存儲器中的區(qū)段的最大數(shù)目。例如,如果區(qū)段100是在功率丟失之前最后刷新的區(qū)段,則所公開的方法將不僅從該區(qū)段被刷新的點起而且還從該區(qū)段在運行時被放入FIFO隊列的點起進行重放,并且在該重放期間可以容易地具有其中在區(qū)段100前(就是說1-99)的FIFO中的所有區(qū)段被重放的場景。換言之,重放操作遍歷改變以回到FIFO隊列中最后的條目以重新創(chuàng)建L2P 表。
[0011]用于SSD的成功的功率丟失恢復(PLR)重建L2P表,并且這需要運行時(run-time)和恢復時(recovery-time)組件。在運行時期間,將上下文連同指針一起周期性地保存到非易失性存儲器寫流(write stream)中。在PLR必要的情況下,把運行時期間的與與允許有序重放的序列號相關聯(lián)。在加電時,把最后保存的上下文載入到存儲器中。PLR算法然后開始從所保存的寫流指針向前重放,從而更新L2P表,直到在功率故障前所完成的對非易失性存儲器的最后的寫為止。在上面引用的共同未決專利申請中討論了用以使用具有減少的存儲器的平滑間接以用于成本減少的方法。
[0012]以下描繪的方法因此限定要被寫到非易失性存儲器的分頁表(L2P)區(qū)段的FIFO隊列。分頁表中的每個區(qū)段對應于其上存儲了分頁表本身的存儲器頁,并且包含多個條目,每個條目經(jīng)由分頁(L2P)表而映射存儲器引用的另一頁。區(qū)段被寫在稱為帶的集合中,在以下被更詳細地討論。重放的上界因此由支持分頁表的易失性存儲器的大小所限定;其余部分仍然保持頁出?;贔IFO隊列連同受影響區(qū)段的標記數(shù)據(jù)和序列號一起,板載固件對區(qū)段進行寫以用于從重放過程重新創(chuàng)建分頁表映射信息。
[0013]在功率故障或其它損害時,功率丟失恢復(PLR)機制基于FIFO隊列定序(如由序列號所確定的)針對所寫的最后區(qū)段而進行掃描。PLR過程通過以序列號所限定的次序重放對應的改變來恢復未寫的分頁表條目。重放采用重放過程或序列以重新創(chuàng)建L2P表,并且由PLR使用以調解在實際寫到非易失性存儲器的頁(區(qū)段)與仍在易失性存儲器中被存儲在分頁表中的對那些非易失性頁的對應引用之間的差異。最近所寫的但尚未反映在分頁表(L2P)中的頁具有對所改變的頁進行標識的標記、以及標識被寫次序(與來自FIFO隊列的相同的定序)的序列號。以下進一步討論的系統(tǒng)帶指明對非易失性存儲裝置的分頁表寫入。重放過程通過針對標記進行掃描來標識所改變的頁,并且從序列號標識定序。因此,重放操作遍歷改變以回到FIFO隊列中最后的條目以重新創(chuàng)建L2P表。通過在促成分頁表改變的先前所寫的區(qū)段中的標記信息來標識對應的改變?;謴瓦^程針對當前上下文中的每個序列號繼續(xù),直到分頁表中的L2P信息被重新創(chuàng)建到恰在功率丟失前的點為止。
[0014]在實現(xiàn)中,本文提出的方法添加FIFO隊列以保持對其中區(qū)段變臟(第一接觸)的次序的追蹤。臟區(qū)段在隊列的尾部處進入并且從隊列的頭部逐出。通過使用FIFO策略(而不是現(xiàn)有方法中的LRU策略)來逐出臟區(qū)段。由在重放期間最小化分頁的需要來促發(fā)逐出的定序。此外,當區(qū)段最初變臟時,記錄寫流位置并且在稍后當區(qū)段被頁出時將其保存為區(qū)段元數(shù)據(jù),以便協(xié)助PLR算法。
[0015]PLR算法被修改以首先針對最后頁出的區(qū)段(通過其序列號而被標識)進行掃描。該區(qū)段指定當區(qū)段最初變臟時寫流指針的位置。在所公開的方法中,從該位置而不是從最后的上下文保存的位置開始重放,以便進一步減少PLR時間。上下文指明系統(tǒng)變量的集合,包括分頁表中的L2P信息,表示穩(wěn)定、一致的狀態(tài)。所公開的PLR因此最小化并約束在功率故障恢復期間所需的區(qū)段頁入和頁出的數(shù)目,因而減少PLR時間以滿足目標要求并且使L2P分頁實用。
[0016]在其它配置中,通過重放區(qū)段分頁活動的系統(tǒng)帶(以下進一步討論的)來執(zhí)行重放。同樣,在具有較小易失性存儲器容量的主機設備中,替換的布置消除重放期間的頁出。在運行時期間,每個頁出伴隨有把臟(被修改的)區(qū)段的列表存儲到上下文帶中。上下文帶表示一起刷新(寫到非易失性存儲器)的所修改區(qū)段的集合,而不是為每個區(qū)段執(zhí)行分離的刷新(寫)。在重放期間,僅允許對應于來自該列表的區(qū)段的L2P更新,還在以下進一步討論。
[0017]圖1是適合用于與本文的配置一起使用的計算環(huán)境的上下文示圖。參照圖1,在計算環(huán)境100中,主機設備110對用戶112進行響應。主機設備112發(fā)出輸入/輸出(I/O)請求114以讀取114-1數(shù)據(jù)以及把數(shù)據(jù)寫114-2至所示配置中的大容量存儲設備或SSD 120。在典型的配置中,SSD替代主機的常規(guī)機械(旋轉)盤驅動裝置,這通過使用諸如SATA (串行高級技術附件)的存儲總線接口,然而,可以是任何適合的總線/架構布置,諸如迷你SATA、SAS (串行附接SCSI)、FC (倒裝芯片)、基于PCI (外圍組件互連)的布置或者其它。作為響應,存儲存儲器返回所取出的頁115-1或證實所寫的頁115-2,這典型地響應于用戶應用或SSD固件140以用于執(zhí)行本文的操作。
[0018]在典型的配置中,SSD 120實際地占據(jù)主機設備110中的裝備隔室(bay),并且以分解的方式示出以用于說明性的目的。在SSD 120中,存儲存儲器122包括非易失性閃速存儲器,盡管可以采用任何適合的非易失性存儲器,舉幾個例子來說,諸如相變存儲器(PCM)、電可擦除可編程只讀存儲器(EEPR0M)。分頁表124被存儲在易失性存儲器中,易失性存儲器可以包括DRAM (動態(tài)隨機存取存儲器)或其它高速易失性存儲器,諸如同步動態(tài)隨機存取存儲器(SDRAM)或RAMBUS動態(tài)隨機存取存儲器(RDRAM)。分頁表124 (L2P表)包括條目126,條目126的每一個將存儲器存取重定向到非易失性存儲器中的頁128。然而,由于分頁表124的大小,分頁表的區(qū)段130本身可以被換出130’到非易失性(存儲)存儲器122。為了強調該區(qū)別,提及分頁表124的操作將被指明為區(qū)段130,區(qū)段130各自包含指向存儲存儲器中的其它頁128的條目126。系統(tǒng)軟件或板載固件140包含用于存儲分頁表區(qū)段130’以及從存儲存儲器檢索分頁表區(qū)段130’、以及用于管理區(qū)段130寫的FIFO排隊的指令,以下在圖2中討論。在主機110管理的SSD中,指令出自主機而不是板載固件140。到存儲存儲器122以及到用于存儲分頁表124的分頁存儲器的接口對軟件/固件140和PLR邏輯141進行響應。
[0019]在SSD 120中,固件140包括用于管理分頁表124的運行時排隊和分頁的邏輯,并且包括用于管理啟動/恢復機制的PLR 141邏輯,以下進一步討論。分頁表124(還被稱為L2P映射信息)經(jīng)受由PLR執(zhí)行的重放過程,其中對先前提交的到存儲存儲器122并被反映在分頁表124中、但尚未寫到存儲存儲器122作為頁130’的寫進行重新創(chuàng)建。以下進一步討論的與頁中的標記以及分頁表區(qū)段130’上的序列號131組合的系統(tǒng)帶被PLR所采用以把分頁表124復原到功率丟失前的狀態(tài),還在以下進一步討論。常規(guī)的方法需要從把分頁表刷新到存儲存儲器122的先前的上下文移除(context drop)起重放所有的系統(tǒng)帶。本文的配置通過采用FIFO隊列來寫分頁表區(qū)段130’以使得重放由功率故障時在隊列142中的頁表區(qū)段144所限制,從而減少重放時間。
[0020]圖2是如圖2中的分頁表存儲的框圖。參照圖1和圖2,SSD維護隊列142以用于存儲要被刷新(寫)到存儲存儲器122的分頁表區(qū)段130。固件140以FIFO次序來寫隊列條目,這允許PLR機制以區(qū)段130被寫的相同次序來檢索區(qū)段130。每個條目144-1…144-4對應于存儲存儲器中被刷新的區(qū)段130’。序列號131伴隨每個被刷新的區(qū)段130’-L...130’ -4,從而促進在加電(PLR)發(fā)起時針對所定序的區(qū)段130進行掃描。先前所寫的頁中的標記129包含用于重新創(chuàng)建分頁表124的信息。在特定配置中,區(qū)段被刷新為系統(tǒng)帶的群組,在以下進一步討論。
[0021]圖3是圖1的環(huán)境中的分頁表(L2P)存儲和恢復的流程圖,并且描繪了執(zhí)行本文公開的操作的示例配置。參照圖1-3,在步驟200處,在具有用于存儲器頁重定向的分頁表124的SSD 120中,維護用于功率丟失恢復(PLR)的分頁表124的方法包括維護用于對寫到存儲存儲器122的分頁表區(qū)段130’進行定序的隊列142。存儲存儲器122存儲來自隊列142的分頁表區(qū)段144與基于分頁表區(qū)段131’的寫次序的對應序列號131,如在步驟201處描繪的那樣。序列號被采用在以被寫的次序來遍歷區(qū)段130’以在功率丟失恢復PLR期間重新創(chuàng)建分頁表124。在分頁表的損害時(諸如在功率故障中),固件140基于序列號131來標識最后存儲的分頁表區(qū)段130’ -1(寫自144-1 ),如在步驟202處示出的那樣,并且基于序列號131來重放分頁表區(qū)段130中的每一個,如在步驟203處描繪的那樣。由于實際的存儲器頁128 (分頁表針對其而提供間接)已經(jīng)被寫到存儲存儲器,因此存儲器頁128中的標記129提供重定向(指針)信息,其基于序列號131而允許重新創(chuàng)建分頁表124。固件140基于與每個分頁表區(qū)段128 —起存儲的標記129把分頁表124重新創(chuàng)建到損害前的狀態(tài),如在步驟204處描繪的那樣。由于分頁表124指明了反映實際改變的數(shù)據(jù)頁128的物理位置的頁映射或索引,因此通過追蹤先前存儲的頁128并且重新應用(重放)對分頁表124的改變來執(zhí)行重新創(chuàng)建。
[0022]出于性能起見,因為下面的觀測,該方法約束在重放期間的頁出。假如考慮在a)最后的分頁表124 (L2P)區(qū)段130’被頁出和b)功率故障之間的運行時期間的寫序列。針對該時段期間的所有寫的分頁表124更新在易失性存儲器中被履行而無需頁出(否則,(a)不為真)。隊列142,并且因此分頁表存儲最大值I B I個區(qū)段144。在重放期間,系統(tǒng)帶(以下討論)被重放以重構分頁表124。每個帶以及帶內的對應區(qū)段具有序列號從而帶被寫的次序是已知的。在最新開放的(系統(tǒng))帶中的最后的寫是被頁出的最后的L2P區(qū)段(將其稱為區(qū)段k,以下在圖4中被引用)。寫流位置選自該區(qū)段并且從這些位置向前實施重放。在運行時期間,在區(qū)段k變臟和區(qū)段k被頁出之間可以存在最大值I B 1-1數(shù)目的頁出。在區(qū)段k被頁出和功率故障之間不存在頁出(這遵從區(qū)段k的定義)。因此,在重放期間,可以存在最大值|B|-1個頁出。
[0023]圖4示出圖3的方法的時序圖。參照圖2-4,圖4示出區(qū)段隊列142寫和刷新的定時。如上面描述的那樣,寫將隊列142中的區(qū)段入隊到易失性存儲器124 ;刷新對非易失性存儲器122執(zhí)行寫。注意L2P區(qū)段144狀態(tài)改變(變臟,被逐出等)可以呈現(xiàn)在寫的時間線400上。在最后的區(qū)段被頁出之后可以是臟的區(qū)段的數(shù)目是I B 1-1,其中I B I是可用的區(qū)段緩沖器130的總數(shù)目。由此得出:在區(qū)段k變臟和區(qū)段k被頁出之間被頁出的區(qū)段的數(shù)目等于或小于I B 1-1。因此,當重放過程重放從區(qū)段k的元數(shù)據(jù)中所存儲的位置開始的寫時,頁出的數(shù)目由I B 1-1約束。
[0024]例如,參照圖1、2和4,在410處,區(qū)段K變臟(B卩,改變被寫入)。在隊列142中區(qū)段K被插入在尾部作為144-4。在412處,固件對區(qū)段K1、K2和K3進行頁出而作為144-1...144-3。取決于隊列142的大小,其它區(qū)段144可以跟隨在后。隨后區(qū)段K被頁出414,并且是在功率故障前被分頁(即,被寫到存儲存儲器作為被存儲/刷新的區(qū)段130’)的最后區(qū)段。最大值B-1次頁出(區(qū)段130被寫到存儲器130’)由分頁表124的大小所限制,分頁表124的大小由板載易失性存儲器所確定,如在416處所示那樣。在區(qū)段130’進行寫418之后,發(fā)生功率故障420。固件140開始重放過程以重放在功率故障424和區(qū)段K變臟410之間發(fā)生的寫422,如在426處所示那樣。
[0025]較之于常規(guī)的實現(xiàn),由所公開的方法提供的特定特征在于該方法在重放過程期間的頁出數(shù)目上呈現(xiàn)上界。這是重要的,因為對非易失性存儲器的寫在時間方面花費很高并且頁出不利地影響未計劃到的功率丟失恢復時間。該方法允許在具有受限易失性存儲器可用性的SSD上從未計劃到的功率丟失的受約束的恢復時間。還應當注意,利用該方法,上下文移除并不必須是單塊的。在上下文移除時,所有臟區(qū)段被刷新到非易失性存儲器。這使得上下文移除更高效并且更簡單。
[0026]圖5示出在圖4的存儲器組件中使用的系統(tǒng)和用戶帶。參照圖4和圖5,在所公開的方法中,到存儲存儲器122的寫流發(fā)生在系統(tǒng)帶150-1和用戶帶150-2中,分別用于系統(tǒng)和用戶寫。系統(tǒng)帶150-1存儲在當前上下文期間寫到存儲存儲器122的改變。在上下文的結束時,帶被更新(刷新)并且新的上下文開始。存在用于用戶數(shù)據(jù)的一組分離的帶150-2。每個帶152包括多個區(qū)段156-1...156-N,對應于分頁表區(qū)段130’或用戶區(qū)段128,如本文公開的那樣。重放過程使用來自系統(tǒng)帶150-1的序列號131以通過標識在被分頁414到存儲存儲器122的最后的區(qū)段和最后的臟區(qū)段410之間發(fā)生的寫流來重新創(chuàng)建分頁表124。系統(tǒng)帶150-1和用戶帶150-2可以寫至存儲存儲器122的相應的系統(tǒng)122-1和用戶122-1區(qū)域,或者可以被混合。
[0027]圖6-9是如本文限定的功率丟失和恢復機制的流程圖。參照圖1-9,在示例布置中,在具有用于存儲器頁重定向(L2P)的分頁表124的大容量存儲系統(tǒng)中,如本文所公開的維護用于功率丟失恢復(PLR)的分頁表的方法包括:在步驟300處,建立用于對被寫到存儲存儲器122的分頁表區(qū)段130進行定序的FIFO隊列。在對分頁表區(qū)段126進行修改時,SSD 120中的固件140將分頁表區(qū)段126標記為臟,意味著已經(jīng)對區(qū)段130進行改變,其典型地起因于由分頁表區(qū)段130所引用的存儲器頁128的重定向指針條目126中的改變,如在步驟301處所描繪的那樣。在步驟302處,執(zhí)行檢查以用于確定隊列142空間是否被限制,其通常來自具有受限制的板載易失性存儲器的SSD。在小的易失性存儲器的情況下,執(zhí)行進一步優(yōu)化以通過為每個所存儲的分頁表區(qū)段130標識在分頁表區(qū)段130中表示的被修改的存儲器區(qū)段128的列表來進一步減少在重放期間的分頁,如在步驟303處公開的那樣。在重放期間采用該列表,在下面進一步討論。
[0028]固件140以被標記的次序對臟區(qū)段144-1...144_4進行入隊,以使得由臟區(qū)段引用的存儲器頁128已經(jīng)在先前被寫到存儲存儲器122,如在步驟304處描繪的那樣。在示例布置中,固件140通過使用區(qū)段的FIFO (先進先出)定序來維護隊列142,以使得區(qū)段144表示來自用于存儲存儲器的邏輯到物理(L2P)映射(在分頁表124中)的頁,其中L2P映射支持來自主機計算設備110的大容量存儲使用,如在步驟305處所示那樣。固件140還存儲來自隊列142的分頁表區(qū)段130’與基于分頁表區(qū)段130的寫次序的對應序列號131,如在步驟306處描繪的那樣。對照于采用LRU排隊方法的常規(guī)L2P排隊/緩存方法,F(xiàn)IFO定序和序列號131允許通過使用區(qū)段130’被寫到存儲存儲器122的次序來執(zhí)行重放。
[0029]在示例配置中,實現(xiàn)包括用戶寫流150-2和系統(tǒng)寫流150-1,其中系統(tǒng)寫流對應于系統(tǒng)發(fā)起的任務,諸如分頁表124管理,其中分頁表區(qū)段130通過使用系統(tǒng)寫流150-1被存儲并且在系統(tǒng)帶中被標識,每個帶表示多個分頁表區(qū)段144’ -L...144’ -N,如在步驟307處公開的那樣。
[0030]在所公開的配置中,維護隊列142還包括在分頁存儲器區(qū)域124 (易失性存儲器)中存儲分頁表區(qū)段130,并且基于隊列142而寫來自分頁存儲器區(qū)域的經(jīng)排隊的分頁表區(qū)段144,存儲存儲器122是持久的非易失性存儲器并且獨立于電源,如在步驟308處所描繪的那樣。隊列142因此提供用于分頁表124的分頁/交換,這提供將至少一部分的分頁表124存儲在易失性存儲器中的分頁存儲器區(qū)域中,如在步驟309處描繪的那樣,并且將至少一部分的分頁表存儲在存儲存儲器122中,如在步驟310處所示那樣。
[0031]在正常操作期間,固件140基于隊列142中的定序來寫分頁表區(qū)段144,以使得功率丟失恢復受限于隊列142中所表示的區(qū)段144的數(shù)目。因此,PLR性能的最壞情況分析可以由易失性存儲器和/或對應隊列142的限制來評估,如在步驟311處描繪的那樣。
[0032]在稍后的某一時間,功率丟失或其它事件引起易失性存儲器的丟失。因此,在分頁表124的損害時,固件140基于序列號131而標識最后存儲的分頁表區(qū)段130’ ,如在步驟312處示出的那樣。檢測損害還可以包括標識功率丟失,以使得功率丟失在重新開始時調用功率丟失恢復(PLR),其中PLR機制標識存儲了對存儲存儲器122的新近改變的系統(tǒng)帶150-1,如在步驟313處公開的那樣?;诠碳?40中的PLR 141指令,PLR基于序列號131重放分頁表區(qū)段中的每一個以重新創(chuàng)建分頁表124,如在步驟314處所描繪的那樣。PLR141重放對所保存的序列號131進行遍歷以標識被寫到存儲存儲器的頁的定序,以使得區(qū)段包含指示改變的標記129,如在步驟315處所公開的那樣。
[0033]PLR 141從損害前所寫的最后的分頁表區(qū)段144開始重放所改變的區(qū)段,如在步驟316處所描繪的那樣,并且基于與每個分頁表區(qū)段一起存儲的標記129來把分頁表重新創(chuàng)建到損害前的狀態(tài),如在步驟317處所描繪的那樣。這包括針對從隊列142寫到存儲存儲器122的最后的分頁表區(qū)段130’進行掃描,如在步驟318處所示那樣,以及基于序列號131來標識相繼的分頁表區(qū)段130,如在步驟319處所描繪的那樣。PLR 141根據(jù)與分頁表區(qū)段一起存儲的標記129來確定在損害中丟失的對分頁表124的改變,如在步驟320處所示那樣。
[0034]除了該方案以外,尤其是針對具有較小易失性存儲器容量的設備,努力消除在重放期間的頁出。在運行時期間,每次頁出伴隨有將臟區(qū)段的列表移除到上下文帶中。在重放期間,只允許與來自該列表的區(qū)段對應的L2P更新。其它更新必須對應于在區(qū)段k變臟和區(qū)段k被頁出之間的時段中被頁出的區(qū)段一這使得這些更新不必要。該方法的不利方面是臟區(qū)段的列表的大小隨著可用區(qū)段的數(shù)目增長并且對于較大的易失性存儲器容量而言開銷可能過大。
[0035]因此,在步驟321處執(zhí)行檢查,補充在步驟302處的檢查。如果遇到小的易失性存儲器實現(xiàn),則PLR 141在重放期間遍歷被修改的存儲器區(qū)段的列表,如在步驟324處描繪的那樣,并且僅使用與修改的存儲器區(qū)段有關的映射信息來重新創(chuàng)建分頁表124,如在步驟325處示出的那樣。
[0036]否則,PLR 141在啟動時僅針對臟區(qū)段144而開始,如在步驟322處所示那樣,并且恢復來自表示先前所寫的分頁表區(qū)段130’的系統(tǒng)帶的標記信息129,如在步驟323處所描繪的那樣。
[0037]本領域技術人員應當容易地領會到:本文限定的程序和方法以很多形式可遞送到計算機處理和渲染設備,包括但不限制于:a)永久地存儲在非可寫存儲媒介(諸如ROM設備)上的信息,b)可變更地存儲在可寫非暫時性存儲媒介(諸如軟盤、磁帶、CD、RAM設備以及其它磁和光學媒介)上的信息,或者c)如在電子網(wǎng)絡(諸如互聯(lián)網(wǎng)或電話調制解調器線路)中那樣通過通信媒介傳送到計算機的信息。操作和方法可以被實現(xiàn)在軟件可執(zhí)行對象中或被實現(xiàn)為被編碼的指令集以供處理器響應于指令來執(zhí)行??商鎿Q地,可以使用硬件組件(諸如專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、狀態(tài)機、控制器或其它硬件組件或設備,或者硬件、軟件和固件組件的組合)來整體或部分地體現(xiàn)本文公開的操作和方法。
[0038]盡管已經(jīng)參照其實施例特定地示出并描述了本文限定的系統(tǒng)和方法,但是本領域技術人員將理解,可以在不脫離由所附權利要求涵蓋的本發(fā)明的范圍的情況下在其中作出形式和細節(jié)上的各種改變。
【權利要求】
1.一種用于存儲數(shù)據(jù)的方法,包括: 標識從分頁表寫到非易失性存儲器的分頁表區(qū)段的序列,所述分頁表把虛擬引用轉譯為非易失性存儲器中的物理位置; 為每個分頁表區(qū)段存儲對應于被寫次序的序列號以及對應于區(qū)段中改變的至少一個標記;以及 在檢測到分頁表的至少一部分的損害時,通過從所存儲的標記重放改變并且重新生成被損害的分頁表區(qū)段來重新創(chuàng)建對應于所標識的序列的分頁表區(qū)段。
2.根據(jù)權利要求1所述的方法,還包括:把所標識的序列維護在使用區(qū)段的FIFO(先進先出)定序的隊列中,所述區(qū)段表示來自用于非易失性存儲器的邏輯到物理(L2P)映射的頁,L2P映射支持來自主機計算設備的大容量存儲使用。
3.根據(jù)權利要求2所述的方法,其中重新創(chuàng)建還包括: 針對從隊列寫到非易失性存儲器的最后的分頁表區(qū)段進行掃描; 基于序列號來標識相繼的分頁表區(qū)段;以及 從與分頁表區(qū)段一起存儲的標記來確定在損害中丟失的對分頁表的改變。
4.根據(jù)權利要求2所述的方法,其中重放對所保存的序列號進行遍歷以標識被寫到非易失性存儲器的頁的定序,所述區(qū)段包含指示改變的標記,以及 從損害前所寫的最后的分頁表區(qū)段開始重放所改變的區(qū)段。
5.至少一個計算機可讀介質,具有編碼于其上的指令以用于執(zhí)行存儲邏輯到物理(L2P)映射表的方法,所述指令當在主機計算設備上被執(zhí)行時,使計算設備執(zhí)行包括如下的方法: 維護用于對被寫到非易失性存儲器的分頁表的區(qū)段進行定序的隊列,所述分頁表用于預計到功率丟失恢復(PLR)的存儲器頁重定向; 存儲來自隊列的分頁表區(qū)段與基于分頁表區(qū)段的寫次序的對應序列號; 在分頁表的損害時,基于序列號來標識最后存儲的分頁表區(qū)段; 基于序列號來重放分頁表區(qū)段中的每一個;以及 基于與每個分頁表區(qū)段一起存儲的標記來把分頁表重新創(chuàng)建到損害前的狀態(tài)。
6.根據(jù)權利要求5所述的方法,還包括:把所標識的序列維護在使用區(qū)段的FIFO(先進先出)定序的隊列中,所述區(qū)段表示來自用于非易失性存儲器的邏輯到物理(L2P)映射的頁,L2P映射支持來自主機計算設備的大容量存儲使用。
7.根據(jù)權利要求5所述的方法,其中重新創(chuàng)建還包括: 針對寫到非易失性存儲器的最后的分頁表區(qū)段進行掃描; 基于序列號來標識相繼的分頁表區(qū)段;以及 從與分頁表區(qū)段一起存儲的標記來確定在損害中丟失的對分頁表的改變。
8.根據(jù)權利要求7所述的方法,其中重放對所保存的序列號進行遍歷以標識被寫到非易失性存儲器的頁的定序,所述區(qū)段包含指示改變的標記,以及 從損害前所寫的最后的分頁表區(qū)段開始重放所改變的區(qū)段。
9.根據(jù)權利要求5所述的方法,其中檢測損害還包括標識功率丟失,所述功率丟失在重新開始時調用功率丟失恢復(PLR),所述PLR標識存儲了對非易失性存儲器的新近改變的系統(tǒng)帶。
10.根據(jù)權利要求5所述的方法,還包括對用戶寫流和系統(tǒng)寫流進行寫,所述系統(tǒng)寫流對應于系統(tǒng)發(fā)起的任務,分頁表區(qū)段通過使用系統(tǒng)寫流被存儲并且在系統(tǒng)帶中被標識,每個帶表示多個分頁表區(qū)段。
11.根據(jù)權利要求2所述的方法,其中維護隊列還包括: 把分頁表區(qū)段存儲在分頁存儲器區(qū)域中,并且基于隊列而寫來自分頁存儲器區(qū)域的分頁表區(qū)段,非易失性存儲器是持久的并且獨立于電源。
12.根據(jù)權利要求11所述的方法,其中維護隊列還包括: 把至少一部分的分頁表存儲在分頁存儲器區(qū)域中; 把至少一部分的分頁表存儲在非易失性存儲器中;以及 基于隊列中的定序來寫分頁表區(qū)段,功率丟失恢復受限于隊列中區(qū)段的數(shù)目。
13.根據(jù)權利要求5所述的方法,其中維護隊列還包括: 在對分頁表區(qū)段進行修改時將分頁表區(qū)段標記為臟; 以被標記的次序來對臟區(qū)段進行入隊,以使得由臟區(qū)段所引用的存儲器頁已經(jīng)在先前被寫到非易失性存儲器; 在啟動時僅針對臟區(qū)段開始PLR ;以及 恢復來自表示先前所寫的分頁表區(qū)段的系統(tǒng)帶的標記信息。
14.根據(jù)權利要求5所述的方法,還包括減少重放期間的分頁,還包括: 為每個所存儲的分頁表區(qū)段標識在分頁表區(qū)段中所表示的被修改的存儲器區(qū)段的列表; 在重放期間遍歷被修改的存儲器區(qū)段的列表;以及 僅使用與被修改的存儲器區(qū)段有關的映射信息來重新創(chuàng)建分頁表。
15.一種用于存儲數(shù)據(jù)的計算裝置,包括: 分頁存儲器,用以存儲用于預計到功率丟失恢復(PLR)的存儲器頁重定向的分頁表; 隊列,用于對被寫到非易失性存儲器的分頁表的區(qū)段進行定序; 存儲邏輯,用以存儲來自隊列的分頁表區(qū)段與基于分頁表區(qū)段的寫次序的對應序列號; 功率丟失恢復邏輯,用以在分頁表的損害時基于序列號來標識最后存儲的分頁表區(qū)段; 到非易失性存儲器的接口,用以基于序列號來重放分頁表區(qū)段中的每一個;以及到分頁存儲器的接口,用以基于與每個分頁表區(qū)段一起存儲的標記而把分頁表重新創(chuàng)建到損害前的狀態(tài)。
16.根據(jù)權利要求15所述的計算裝置,還包括使用區(qū)段的FIFO(先進先出)定序的隊列,所述隊列維護所標識的序列,所述區(qū)段表示來自用于非易失性存儲器的邏輯到物理(L2P)映射的頁,L2P映射支持來自主機計算設備的大容量存儲使用。
17.根據(jù)權利要求16所述的計算裝置,還包括用戶寫流和系統(tǒng)寫流,所述系統(tǒng)寫流對應于系統(tǒng)發(fā)起的任務,分頁表區(qū)段通過使用系統(tǒng)寫流而被存儲并且在系統(tǒng)帶中被標識,每個帶表示多個分頁表區(qū)段。
18.根據(jù)權利要求16所述的計算裝置,其中所述存儲邏輯用以通過把分頁表區(qū)段存儲在分頁存儲器區(qū)域中,并且基于隊列而寫來自分頁存儲器區(qū)域的分頁表區(qū)段而維護隊列,非易失性存儲器是持久的并且獨立于電源。
19.根據(jù)權利要求18所述的計算裝置,其中所述存儲邏輯還被配置為: 把至少一部分的分頁表存儲在分頁存儲器區(qū)域中; 把至少一部分的分頁表存儲在非易失性存儲器中;以及 基于隊列中的定序來寫分頁表區(qū)段,所述功率丟失恢復受限于隊列中區(qū)段的數(shù)目。
20.根據(jù)權利要求15所述的計算裝置,其中分頁表區(qū)段還包括標記,所述PLR邏輯用以遍歷所保存的序列號以標識被寫到非易失性存儲器的頁的定序,所述區(qū)段包含指示改變的標記,所述PLR邏輯用以從損害前所寫的最后的分頁表區(qū)段開始重放所改變的區(qū)段。
【文檔編號】G06F12/00GK104350477SQ201380027956
【公開日】2015年2月11日 申請日期:2013年6月26日 優(yōu)先權日:2012年6月29日
【發(fā)明者】P.拉特恩, S.納亞克, S.N.特里卡 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
滨州市| 舞阳县| 策勒县| 舟山市| 河津市| 定结县| 马龙县| 漳州市| 营山县| 沁源县| 迁安市| 健康| 新建县| 巴东县| 福清市| 永春县| 沁水县| 华宁县| 叙永县| 灵山县| 介休市| 泰兴市| 江都市| 柳州市| 印江| 宁化县| 榆树市| 郎溪县| 白城市| 金平| 新平| 玛沁县| 德令哈市| 富顺县| 凤凰县| 大足县| 龙游县| 巴南区| 丰镇市| 马鞍山市| 锦州市|