TWI750116B - 用於邏輯頁面的基元交換與修整(swat)之swat命令及應用程式介面(api) - Google Patents
用於邏輯頁面的基元交換與修整(swat)之swat命令及應用程式介面(api) Download PDFInfo
- Publication number
- TWI750116B TWI750116B TW105114318A TW105114318A TWI750116B TW I750116 B TWI750116 B TW I750116B TW 105114318 A TW105114318 A TW 105114318A TW 105114318 A TW105114318 A TW 105114318A TW I750116 B TWI750116 B TW I750116B
- Authority
- TW
- Taiwan
- Prior art keywords
- lpn
- list
- file
- ppn
- mapping
- Prior art date
Links
Images
Abstract
實例實施例提供由至少一個處理器執行之對一經更新檔案的存取,其中回應於接收到一第一邏輯頁碼(LPN)清單及用於一更新之一第二LPN清單,其中該第一LPN清單映射至一第一實體頁碼(PPN)清單,且該第二LPN清單映射至一第二PPN清單,方法包含:基元式地重新映射該第一LPN清單,以使得該第一LPN清單映射至該第二PPN清單;以及修整該第一LPN清單至該第一PPN清單之一映射。
Description
本申請案為2014年5月20日申請之同在申請中之專利申請案第14/282,358號的部分接續申請案,該專利申請案主張2013年11月8日申請之臨時專利申請案第61/902,092號的權益。本申請案亦主張2015年6月12日申請之臨時專利申請案第62/175,073號的權益。該等申請案兩者皆讓與給本申請案之受讓人,且以引用之方式併入本文中。
本發明係有關於用於邏輯頁面的基元交換與修整(SWAT)之SWAT命令及應用程式介面(API)。
文件管理系統更新資料結構以便追蹤最新版本之文件。在此過程中,一些系統產生另一版本之文件而非覆寫較舊版本,且暫時保留較舊版本之文件。此允許系統當正更新新版本時並行地存取較舊版本之文件以用於讀取。舉例而言,若使用者更新其部落格頁面,則當其正更
新部落格頁面時,其他使用者仍可讀取舊版本之部落格頁面。在某一時刻,系統需要更新系統資訊以存取新文件且替換舊文件。通常,此在系統之資料結構中觸發一系列級聯更新,且需要至儲存器的許多寫入。
因此,將需要提供一種用於在不必對系統之資料結構執行級聯更新的情況下提供對經更新檔案之存取的改良之方法及系統。
實例實施例提供由至少一個處理器執行之對經更新檔案的存取,其中回應於接收到一第一邏輯頁碼(LPN)清單及用於一更新之一第二LPN清單,其中該第一LPN清單映射至一第一實體頁碼(PPN)清單,且該第二LPN清單映射至一第二PPN清單,方法包含:基元式地重新映射該第一LPN清單,以使得該第一LPN清單映射至該第二PPN清單;以及非同步地修整該第一LPN清單至該第一PPN清單的一映射。
根據該等實例實施例之方法及系統,可在不必對系統之資料結構執行級聯更新的情況下,且在無需對儲存器之不必要寫入的情況下更新一檔案。
12:電腦
26:裝置驅動器應用程式介面(API)
14:處理器
16:記憶體
30、206:邏輯頁碼(LPN)
18:高速儲存器
32、208:實體頁碼(PPN)
20:應用程式
34:快閃轉譯層(FTL)
22:作業系統
28、200、400:檔案
24:檔案系統
202、402:舊檔案
204、404:新檔案
412:新檔案實體頁碼(PPN)
300、302、304:區塊
416:「X」
406:舊檔案邏輯頁碼(LPN)
500:正向映射表(FMT)
408:舊檔案實體頁碼(PPN)
502:反向映射表(RMT)
410:新檔案邏輯頁碼(LPN)
自以下結合附圖對實施例之描述,本發明之一般發明概念的此等及/或其他特徵及效用將變得顯而易見且更易於理解,在附圖中:
圖1為說明根據實例實施例之文件管理系統的方塊圖;圖2為更新檔案之習知文件管理系統的圖形說明;圖3為說明根據一個實例實施例之由文件管理系統執行的用於在更新期間提供對檔案之存取的程序之流程圖;且圖4為以圖形方式說明圖3中展示之程序的圖;圖5至圖12為展示正向映射表(FMT)、PPN清單及反向映射表(RMT)之各種狀態的圖。圖13說明用於未用頁面的SWAT命令實例;圖14說明用於不具有映射之基礎LPN的SWAT命令實例;且圖15說明重複SWAT命令之一實例。
現將詳細地參看當前一般發明概念之實施例,該等實施例在附圖中予以說明,其中相同參考數字通篇指代相同元件。下文在參看圖的同時描述實施例以便解釋當前一般發明概念。
參看實施例之以下詳細描述及附圖可更易於理解本發明之優勢及特徵及實現本發明之方法。然而,本發明之一般發明概念可以許多不同形式體現,且不應解釋為限於本文闡述之實施例。實情為,提供此等實施例使得本
發明將為透徹且完整的,且將使一般發明概念之概念充分傳達至熟習此項技術者,且本發明之一般發明概念將僅由所附申請專利範圍定義。在圖中,為了清楚起見而誇大層及區的厚度。
除非本文另外指明或明顯與內容背景相矛盾,否則在描述本發明之內容背景中(尤其在以下申請專利範圍之內容背景中)術語「一」及「該」及類似指示物的使用應理解為涵蓋單數及複數。除非另外說明,否則術語「包含」、「具有」、「包括」及「含有」應理解為開放術語(亦即,意謂「包括(但不限於)」)。
如本文中使用,術語「組件」或「模組」意謂(但不限於)執行某些任務之軟體或硬體組件,諸如場可規劃閘陣列(FPGA)或特殊應用積體電路(ASIC)。組件或模組可有利地經組配以駐留於可定址儲存媒體中,且經組配以執行於一或多個處理器上。因此,組件或模組可包括(藉由實例)組件,諸如軟體組件、物件導向式軟體組件、類別組件及任務組件、程序(process)、功能、屬性、程序(procedure)、次常式、程式碼段、驅動器、韌體、微碼、電路系統、資料、資料庫、資料結構、表、陣列及變數。可將所提供之用於組件及組件或模組的功能性組合至較少組件及組件或模組中,或將其進一步分離至額外組件及組件或模組中。
除非另外定義,否則本文中使用之所有技術以及科學術語具有與本發明所屬之技術的一般技術者共同理解之含義相同的含義。應注意,除非另外指定,否則對本文
中提供之任何及所有實例或實例術語的使用僅意欲較佳地闡明本發明,而非限制本發明之範疇。另外,除非另外定義,否則不可過度解譯常用詞典中定義之所有術語。
圖1為說明根據實例實施例之文件管理系統10的方塊圖。文件管理系統10可包含追蹤且儲存電子文件或檔案的電腦12。在一個實施例中,電腦12可包含桌上型電腦、膝上型電腦、工作站,行動裝置,而在另一實施例中,電腦12可包含經由網路(未展示)與客戶端電腦通訊的伺服器。電腦12可包括典型的電腦組件(包括處理器14、記憶體16)及儲存裝置,諸如高速儲存器18(例如,固態磁碟機(SSD))。
處理器14可包括多個處理器,或具有一或多個核心的單個處理器。處理器14執行來自記憶體16的程式指令。實例類型之軟體可包括應用程式20、作業系統22、檔案系統24及用於高速儲存器18的裝置驅動器應用程式介面(API)26。
如在此項技術中所熟知,應用程式20可表示電腦軟體,電腦軟體當由處理器14執行時使得電腦12執行超出電腦12之執行的任務。實例可包括網路瀏覽器、文書處理程式及資料庫程式。通常,應用程式20產生、修改或更新檔案28。作業系統22為管理且控制電腦12之操作的系統軟體。實例可包括Windows、Mac OSX及Linux。
檔案系統24為控制如何將資訊(諸如檔案28)儲存、擷取及更新於資料儲存裝置(諸如高速儲存器18)上的軟
體。一些應用程式/檔案類型可使用邏輯頁碼用於指定將資料(諸如檔案28中之頁面)儲存於高速儲存器18或其他電腦存儲裝置上的何處。更特定言之,邏輯頁碼為將映射至高速儲存器18上之特定儲存位置的邏輯頁碼(LPN)30分配至檔案28中之頁面的抽象物。
裝置驅動器應用程式介面(API)26允許應用程式20、作業系統22及檔案系統24與高速儲存器18透明地互動。裝置驅動器API 26提供存儲資料及/或自高速儲存器18接收資料的命令。
在一個實施例中,高速儲存器18使用實體頁碼以將位址提供至儲存於高速儲存器18上的頁面。此等類型之位址可稱作可映射至特定儲存位置的實體頁碼(PPN)32。在一個實施例中,高速儲存器18可包含固態磁碟機(SSD)(亦稱為固態磁碟)。SSD為將積體電路配件用作記憶體以持久儲存資料(諸如檔案28)的數據存儲裝置。在一個實施例中,SSD可使用基於NAND之快閃記憶體,或隨機存取記憶體(RAM)。
在實施例中,高速儲存器18可進一步包括快閃轉譯層(FTL)34或當將邏輯扇區介面提供至電腦12時管理高速儲存器18的等效物。因而,FTL 34控制由檔案系統24維護之LPN 30與由高速儲存器18維護之PPN 32之間的映射。在一替代實施例中,可配合除SSD以外的其他類型之存儲裝置使用實例實施例。
圖2為更新檔案之習知文件管理系統的圖形說
明。所示實例假定應用程式維護表示使用者之多頁面部落格的檔案200。只要使用者更新部落格,則應用程式將檔案200讀取至記憶體中,且相應地修改內容。在更新期間,系統產生經修改內容複製至其中的新檔案204。同時,當使用者繼續更新部落格時,其他使用者仍可存取及查看舊檔案200。當使用者結束編輯部落格且提交頁面時,應用程式切換至新檔案204且刪除舊檔案202。
檔案系統為舊檔案202及新檔案204中之頁面維護邏輯頁碼(LPN)206,而儲存系統(實際上儲存檔案處)維護實體頁碼(PPN)208。在此實例中,檔案系統將舊檔案202中之頁面映射至LPN4及LPN5,而儲存裝置將LPN4至LPN5分別映射至PPN0至PPN1。類似地,新檔案204中之頁面映射至LPN24至LPN25,且LPN24至LPN25又分別映射至PPN11至PPN12。
此類習知系統的一個問題為在某一時刻,系統需要更新系統資訊以存取替換舊檔案202的新檔案204。通常,此會在系統之資料結構中觸發一系列級聯更新,且引起至儲存器的許多寫入。
系統資訊可包括每一檔案/文件之元資料。元資料可(例如)包括儲存文件之日期及存儲檔案之使用者的身分標識。元資料通常儲存於資料結構中。此類資料結構之一個實例為B樹,B樹為使資料保持分類且允許搜尋、依序存取、插入及對數時間中之刪除的樹資料結構。LPN 206之清單及/或每一檔案200之元資料可由葉節點維護於B樹
中。每一檔案200通常存在一個分葉。若檔案200之名稱接近B樹之分葉層級而儲存,則可能需要更新一路徑上之自節點直至根節點的所有節點,以反映節點之改變,因此觸發級聯更新及至儲存器之寫入。
舉例而言,只要使用者更新上文描述之部落格,則應用程式亦需要更新含有部落格的檔案資訊,此引起至少一個磁碟寫入。使用者愈多,愈多磁碟寫入發生。
實例實施例係針對一種用於在不必更新系統資料結構的情況下提供對經更新檔案之存取,藉此最小化或消除系統中之級聯更新及過量磁碟寫入的改良之方法及系統。
實例實施例提議新儲存器(例如,SSD)命令及API以處置此問題。亦即,若可在不更新系統資料結構的情況下存取新版本之文件,則可歸因於消除反映最新系統資訊之級聯更新而顯著地避免或減少儲存器寫入。除此簡化實例以外,許多應用程式,諸如B樹、文件登入、影式分頁、雙緩衝器寫入及其他具有實例實施例可應用於的此類特性。
實例實施例提議在本文中稱作SWAT(交換與修整;SWap And Trim)命令的命令及相關聯API。若給定一對邏輯頁碼清單,則SWAT命令基元式地將LPN之映射按次序交換或重新映射至清單中,且接著修整未用LPN。亦引入弱映射概念,弱映射概念允許存取待非同步地修整之頁面的並行程序,直至藉由垃圾資料收集(garbage collection)回
收該等頁面。
圖3為說明根據一個實例實施例之由文件管理系統10執行用於在更新期間提供對檔案之存取的程序之流程圖;且圖4為以圖形方式說明該程序的圖。
參看圖1、圖3及圖4,該程序可回應於接收到包含經修改基礎頁面的更新而開始,以產生目標頁面之經修改內容複製至其中的新檔案,同時維護對舊檔案之存取(區塊300)。
此在圖4中予以說明,其展示回應於正更新之檔案400而臨時維護對檔案(亦即舊檔案)402之舊版本的存取且產生含有經修改目標頁面的新版本之檔案(亦即新檔案)404。可經由應用程式20中之一者或者經由作業系統22更新檔案400。
在SWAT操作之前,檔案系統24使用基礎舊檔案LPN 406清單(例如,LPN4至LPN5)表示舊檔案402之基礎頁面的邏輯儲存位置,而高速儲存器18使用舊檔案PPN 408清單(例如,PPN0至PPN1)表示實體儲存位置。類似地,亦使用新檔案LPN 410之清單(例如,LPN24至LPN25)表示新檔案404之頁面的邏輯儲存位置,而使用新檔案PPN 412之清單(例如,PPN11至PPN12)表示高速儲存器18中之實體儲存位置。
再次參看圖3及圖4,回應於對正提交之新檔案404的更新,基元式地將舊檔案LPN 406之映射自舊檔案PPN 408調換/重新映射至新檔案PPN 412(區塊302)。如圖4
中展示,將舊檔案LPN 406之清單(亦即,LPN4及5)的實體映射重新映射至新檔案404的新檔案PPN 412之清單(亦即,PPN 11及12)更特定言之,一旦發出SWAT命令,則將LPN4映射至PPN11,且將LPN5映射至PPN12。因此,SWAT API消除更新檔案資訊的需要。
此外,非同步地修整舊檔案LPN 406至舊檔案PPN 408的映射,從而釋放舊檔案PPN 408(區塊304)。如圖4中展示,在修整之後釋放舊檔案PPN 408(PPN0及PPN1),如由「X」416展示。
一旦SWAT命令執行,則新檔案404映射至舊檔案之PPN 408(此係因為其不再為實際「新檔案」)。新檔案404變得依電性唯讀,從而允許使用者讀取其新實體頁面(亦即,舊檔案402之實體頁面)的內容,直至藉由垃圾資料收集回收其新實體頁面。此模糊狀態映射稱作弱映射,而LPN與PPN之間的習知映射為強映射。
以下描述及圖說明當SWAT操作應用於SSD時可如何更新映射表。此實例使用兩個映射表:正向映射表(FMT)與反向映射表(RMT)。映射類型表示為S(強)或W(弱)。正向映射表及反向映射表之陣列表示僅係用於說明。基於目標效能、資源可用性等,此等可實施於不同資料結構中,諸如陣列、清單、樹、散列圖等。
SWAT命令以基元方式交換兩個LPN清單在正向映射表(FMT)及反向映射表(RMT)兩者上的映射,從而使目標之映射變得弱(WEAK)。至少當垃圾資料收集進行時移
除弱映射。在下文之圖中說明一實例。
圖5至圖12為展示正向映射表(FMT)、PPN清單及反向映射表(RMT)之各種狀態的圖。如圖5中展示,FMT 500可包括列出LPN之LPN列、列出PPN之PPN列,及映射類型列,映射類型列含有代表相同行之LPN與PPN之間的強(S)或弱(W)映射的值。圖5之實例假定FMT 500含有展示LPN_A與PPN_X具有強映射的條目。實例進一步假定已發出用於LPN_A及LPN_B當SWAT命令,繼之以用於LPN_B及LPN_C的SWAT命令。第一SWAT命令引起對LPN_A至PPN_Y之FMT 500及LPN_B至PPN_X之FMT 500中的正向映射資訊之更新。SWAT命令亦引起PPN_X至LPN_B及至LPN_A之RMT 502中的反向映射資訊之更新。LPN_B與PPN_X之間的所得映射係強的,如由RMT 502中之LPN_B的粗體條目指示,而LPN_A與PPN_X之間的映射係弱的,如由RMT 502中之LPN_A的非粗體條目指示。可即刻或在垃圾資料收集時間移除弱映射。
以下事件中之一者可移除弱映射:1)垃圾資料收集、2)寫入命令、3)修整命令,或4)另一SWAT命令。
至具有弱映射之LPN的寫入可產生至新PPN的強映射,且可移除弱映射。舉例而言,如在圖6中說明,至LPN_A之寫入經由寫入(A)命令分配新PPN_Y,且更新FMT 500中之LPN_A至PPN_Y的正向映射。並行地,更新RMT 502以將LPN_A之弱映射自PPN_X之反向映射清單移除,且將LPN_A之新反向映射添加至PPN_Y之反向映射清單。
至具有至PPN的強映射之LPN的寫入可產生至新PPN的強映射,且可移除至舊PPN的弱映射。舉例而言,如在圖7中說明,至LPN_B之寫入經由寫入(B)命令分配新PPN_Y,且更新FMT 500中之LPN_B至PPN_Y的正向映射。此使得LPN_A之弱映射過時,且可即刻或在垃圾資料收集時間移除此映射。並行地,更新RMT 502以將LPN_B之弱映射自PPN_X之反向映射清單移除,且將LPN_B之新條目添加至PPN_Y之反向映射清單,而亦可即刻或在垃圾資料收集時間將LPN_A之條目自PPN_X清單移除。
對具有弱映射之LPN的修整(TRIM)可即刻移除弱映射。舉例而言,如在圖8中說明,至LPN_A之TRIM經由Trim(A)命令移除LPN_A之至PPN_X的正向映射。並行地,更新RMT 502以自PPN_X之反向映射清單移除LPN_A之條目。
對具有至PPN的強映射之LPN的修整(TRIM)可即刻移除至PPN的所有映射。舉例而言,如在圖9中說明,至LPN_B之TRIM移除LPN_B之正向映射。此使得LPN_A之弱映射過時,且可即刻或在垃圾資料收集時間移除此映射。並行地,更新RMT 502以將LPN_B之條目自PPN_X之反向映射清單移除,且亦可即刻或在垃圾資料收集時間將LPN_A之條目自PPN_X反向映射清單移除。
具有LPN作為基礎LPN的SWAT(其具有至亦具有弱映射的PPN之強映射)可移除至PPN的所有弱映射。舉例而言,如在圖10中說明,具有LPN_B作為基礎及LPN_C
作為目標的SWAT使得LPN_C之至PPN_X的正向映射條目變弱。因為PPN_X僅具有弱映射,所以可因此即刻或在垃圾資料收集時間移除弱映射。並行地,此將LPN_C之條目添加至RMT 502中之PPN_X的反向映射清單。可即刻或在垃圾資料收集時間移除RMT 502中之PPN_X的所有弱映射。
具有LPN作為基礎LPN的SWAT(其具有至亦具有至另一LPN之強映射的PPN之弱映射)可移除至LPN的所有弱映射。因為弱映射並未過時,所以如強映射般處理此弱映射。舉例而言,如在圖11中說明,具有LPN_A作為基礎及LPN_C作為目標的SWAT自FMT 500移除LPN_A之弱映射且產生至PPN_Z之強映射。此使LPN_C至PPN_X之映射變弱,且因此PPN_X具有強映射與弱映射兩者。並行地,更新RMT 502以將LPN_C之弱映射添加至PPN_X之反向映射清單,且將LPN_A之強映射條目添加至PPN_Z之反向映射清單。
具有LPN作為基礎LPN的SWAT(其具有至亦具有至另一LPN之弱映射的PPN之弱映射)可移除至LPN的弱映射。因為弱映射過時,所以如無映射般處理此弱映射。舉例而言,如在圖12中所說明,具有LPN_A作為基礎及LPN_B作為目標的SWAT自FMT 500移除LPN_A之弱映射,且產生自LPN_A至PPN_Z之強映射。此使得LPN_A及LPN_B兩者共用PPN_Z,且因此PPN_Z具有強映射及弱映射兩者。並行地,更新RMT 502以將LPN_A之強映射條目
及LPN_B之弱映射條目添加至PPN_Z之反向映射清單。
若垃圾資料收集或TRIM命令移除弱映射,則LPN變得無效且對邏輯頁面之讀取返回諸如0xFF之預定值。對具有弱映射之邏輯頁面的寫入操作分配新實體頁面且產生強PPN映射。若當前未使用基礎頁面(亦即,不具有任何實體頁面映射),則目標頁面保持其當前映射,但映射變為弱映射。SWAT命令對具有強映射、弱映射或無映射的邏輯頁面起作用。作為基礎的LPN可為三者中之任一者,而作為目標的LPN具有強映射。當基礎LPN具有弱映射時,其視為無映射。實體頁面可最多具有N個弱映射(預設N=1)。下文提供更多細節。
舉例而言,在圖4中SWAT命令基於兩個清單(LPN之基礎清單(例如,LPN4至LPN5)與LPN之目標清單(例如,LPN24至LPN25))而操作,兩個清單中之每一者在此實例中包括兩個頁面。在此實例中,LPN4及LPN5處於基礎清單中,且最初具有分別至PPN0及PPN1的強映射,而LPN24及LPN25處於目標清單中,且最初具有分別至PPN11及PPN12的強映射。執行具有此等兩個清單的SWAT命令在LPN4與PPN11之間產生一強映射,且在LPN5與PPN12之間產生另一強映射;同時在LPN24與PPN0之間產生一弱映射,且在LPN25與PPN1之間產生另一弱映射(由虛線箭頭展示)。
當實體頁面對任何LPN具有任何強映射時,實體頁面適合進行垃圾資料收集。完成SWAT命令操作在目標清
單中產生LPN之弱映射。結果,垃圾資料收集最終回收PPN0及PPN1兩者,從而完全移除弱LPN24及LPN25映射。在垃圾資料收集發生之前,邏輯頁面(例如,LPN24至LPN25)可讀。若寫入邏輯頁面,則移除弱映射且產生至新實體頁面的強映射。映射改變為基元級的。
圖13說明用於未用頁面的SWAT命令實例。在此圖中,LPN4及LPN5(在基礎清單中)為未用(空)邏輯頁面,而LPN24及LPN25(在目標清單中)具有至PPN11及PPN12的強映射。如同上述實例,完成用於此等兩個清單的SWAT命令在LPN4與PPN11之間產生一強映射,且在LPN5與PPN12之間產生另一強映射。儘管LPN24及LPN25歸因於未用LPN4及LPN5而保留其原始映射,但映射強度自「強」改變至「弱」以指示此為SWAT操作結果。
具有LPN作為基礎LPN的SWAT(無映射)可產生LPN之新有效弱映射。舉例而言,如在圖14中說明,具有LPN_A作為基礎及LPN_B作為目標的SWAT在FMT 500中產生LPN_A至PPN_X的新弱映射。此使得LPN_A及LPN_B兩者共用PPN_X,且因此PPN_X具有強映射及弱映射兩者。並行地,更新RMT以將LPN_B之強映射條目及LPN_A之弱映射條目添加至PPN_X之反向映射清單。
當實體頁面不具有強LPN映射時,實體頁面適合進行垃圾資料收集。因此,此類共用實體頁面經受垃圾資料收集,此係因為PPN11及PPN12存在強映射。結果,LPN24及LPN25可用以分別存取PPN11及PPN12,只要以下兩個條
件都不滿足:1)移除強LPN4及LPN5映射,或2)垃圾資料收集已回收頁面。
若垃圾資料收集重新定位共用實體頁面,則強映射及弱映射兩者必須相應地移轉。
圖15說明重複SWAT命令之一實例。若重複SWAT操作如所展示而發生,則實體頁面(例如,PPN11)可具有多個不同之弱LPN映射(例如,LPN4及LPN24)。預設情況下,實體頁面可具有一個強映射(例如,LPN31至PPN11)及一個可選弱映射。但由一個實體頁面可支援之預定參數定義的最大數目為實施相依的。
根據實例實施例,SWAT命令及API相比於現有技術提供若干優勢。交換命令並不需要對OS進行任何修改,且可藉由輕微韌體修改而適用於所有類型之SSD裝置。SWAT命令亦可藉由減小自應用程式之磁碟寫入的數目而顯著地改良SSD裝置之持久性。SWAT命令亦可藉由主動地回收未用空間而改良系統之效能。此外,SWAT命令可(尤其藉由多版本並行控制)提供應用程式之相當大的效能益處。
下文進一步詳細地描述SWAT命令之一些實施例。一旦經由應用程式20提交了檔案,作業系統22或檔案系統24對裝置驅動器API 26進行呼叫。裝置驅動器API 26接著可向高速儲存器18發出SWAT命令。
在一個實施例中,命令可指定一對LPN清單──新檔案LPN 410之目標清單及舊檔案LPN 406之基礎清單。
高速儲存器18中之快閃轉譯層(FTL)34可接收舊檔案LPN 406之清單及新檔案LPN 410之清單,且基元式地按指定次序重新映射LPN清單對中之LPN的映射。如上所述,在一個實施例中SWAT命令係基元的。
SWAT命令可經由供應商特定命令而以任何類型之儲存協定加以實施,諸如SATA、SAS、PCIe、eMMC、UFS及其類似者。參看就特定實施例描述本發明的以下API偽碼將較佳地理解SWAT命令之態樣及實施例。此偽碼並不意欲表示任何特定編碼語言,或甚至不意欲被編譯,而僅以系統之操作的較正式術語進行表達。提供此等係出於清楚之目的,且不應用以限制本發明。本發明及其態樣可應用於多種類型之方法、裝置及本文並未特定揭示之程式碼。
已根據所展示實施例而描述本發明,且可存在對實施例之變化,且任何變化將屬於本發明之精神及範疇內。舉例而言,可使用硬體、軟體、含有程式指令之電腦可讀媒體或其組合來實施實例實施例。根據本發明撰寫之軟體應以諸如記憶體、硬碟或CD/DVD-ROM之電腦可讀媒體的某一形式儲存,且亦應由處理器執行。因此,在不脫離所附申請專利範圍之精神及範疇的情況下,一般熟習此項技術者可作出許多修改。
400:檔案
402:舊檔案
404:新檔案
406:舊檔案邏輯頁碼(LPN)
408:舊檔案實體頁碼(PPN)
410:新檔案邏輯頁碼(LPN)
412:新檔案實體頁碼(PPN)
416:「X」
Claims (14)
- 一種提供對一文件管理系統之一經更新檔案的存取之方法,該文件管理系統包含耦接至一外部處理器之一儲存裝置,其中一檔案轉換層(FTL)映射圖係藉由在由一檔案系統所維護之邏輯頁碼(LPN)與由該儲存裝置所維護之實體頁碼(PPN)之間之一FTL來維護,該方法包含:由該儲存裝置接收來自該處理器之一第一命令,該第一命令響應於一應用程式接收一更新而被傳送,該更新包含一第一檔案之經修改之內容以及一第二檔案之建立,其中該經修改內容被複製到該第二檔案中,而對該第一檔案之存取係被維護的,其中該第一命令之參數包括對應至該第一檔案之一第一LPN清單及對應至該第二檔案之一第二LPN清單,且其中該第一LPN清單被映射至代表在該儲存裝置上之該第一檔案之儲存位置的一第一PPN清單,且該第二LPN清單映射至代表在該儲存裝置上之該第二檔案之儲存位置的一第二PPN清單;基元式地重新映射該第一LPN清單,以使得該第一LPN清單依序地被映射至該第二PPN清單,其中針對該第一LPN清單之每個LPN,於該第一LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射被建立在該FTL映射圖中;非同步地修整該第一LPN清單至該第一PPN清單之 一映射,其中針對該第一LPN清單之每個LPN,於該第一LPN清單之一LPN與該第一PPN清單之一對應PPN之間的一映射在該FTL映射圖中被移除,並且取消該第二LPN清單至該第二PPN清單之映射,其中針對該第二LPN清單之每個LPN,於該第二LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射在該FTL映射圖中被移除。
- 如請求項1之方法,其中該第一命令包含一交換與修整(SWAT)命令,且被發出至一應用程式介面(API)。
- 如請求項2之方法,其中該SWAT命令回應於由一應用程式或一作業系統所進行之一呼叫而自一儲存裝置驅動器API發出至該儲存裝置。
- 如請求項2之方法,其中在該第一LPN清單及該第二LPN清單中的LPN按照由該第一LPN清單及該第二LPN清單所指明的一次序而被基元式地重新映射。
- 如請求項4之方法,其進一步包含提供弱映射,該弱映射允許存取要被非同步地修整之頁面的並行程序,直至該等頁面藉由垃圾資料收集(garbage collection)而被回收為止。
- 如請求項5之方法,其進一步包含藉由垃圾資料收集、一寫入命令或一修整命令來移除該弱映射。
- 一種系統,其中一檔案轉換層(FTL)映射圖係藉由在由一檔案系統所維護之邏輯頁碼(LPN)與由一儲存裝置所維護之實體頁碼(PPN)之間之一FTL來維護,該系統包 含:一電腦,其包含一處理器以及一記憶體;以及在該處理器以及該記憶體外部的該儲存裝置;其中,該儲存裝置係經組配以:從該處理器接收一第一命令,該第一命令響應於一應用程式接收一更新而被傳送,該更新包含一第一檔案之經修改之內容以及一第二檔案之建立,其中該經修改內容被複製到該第二檔案中,而對該第一檔案之存取係被維護的,其中,該第一命令之參數包括對應至該第一檔案的一第一LPN清單,及對應至該第二檔案的一第二LPN清單,其中該第一LPN清單被映射至代表在該儲存裝置上之該第一檔案之儲存位置的一第一PPN清單,且該第二LPN清單被映射至代表在該儲存裝置上之該第二檔案之儲存位置的一第二PPN清單;基元式地重新映射該第一LPN清單,以使得該第一LPN清單被依序地映射至該第二PPN清單,其中針對該第一LPN清單之每個LPN,於該第一LPN清單之一LPN與該第二PPN清單之一對應PPN之間的一映射被建立在該FTL映射圖中;非同步地修整該第一LPN清單至該第一PPN清單之一映射,其中針對該第一LPN清單之每個LPN,在該第一LPN清單之一LPN與該第一PPN清單之一對應的PPN之間的一映射於該FTL映射圖中 被移除;以及取消該第二LPN清單至該第二PPN清單之映射,其中針對該第二LPN清單之每個LPN,在該第二LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射於該FTL映射圖中被移除。
- 如請求項7之系統,其中該第一命令包含一交換與修整(SWAT)命令,且係經由一應用程式介面(API)被發出。
- 如請求項8之系統,其中該等第一及第二LPN清單中的LPN係按照由該第一LPN清單及該第二LPN清單所指明的一次序而基元式地被重新映射。
- 如請求項7之系統,其中該SWAT命令係回應於由一應用程式或一作業系統所進行之一呼叫而自一儲存裝置驅動器API發出至該儲存裝置。
- 如請求項7之系統,其中弱映射被提供,該弱映射允許存取要被非同步地修整之頁面的並行程序,直至該等頁面藉由垃圾資料收集回收為止。
- 如請求項11之方法,其中該弱映射係藉由垃圾資料收集、一寫入命令或一修整命令而被移除。
- 一種可執行的軟體產品,其儲存於一非暫態之電腦可讀媒體上,該電腦可讀媒體含有用於提供對在一文件管理系統中之一經更新的檔案之存取的程式指令,該文件管理系統包含耦接至一外部處理器之一儲存裝置,其中一檔案轉換層(FTL)映射圖係藉由在由一檔案系統所維護之邏輯頁碼(LPN)與由該儲存裝置所維護之實體頁 碼(PPN)之間之一FTL來維護,該程式指令用以:藉由該儲存裝置接收來自該處理器之一第一命令,該第一命令響應於一應用程式接收一更新而被傳送,該更新包含一第一檔案之經修改之內容以及一第二檔案之建立,其中該經修改內容被複製到第二檔案中,而對該第一檔案之存取係被維護的,其中該第一命令之參數包括對應至該第一檔案之一第一LPN清單及對應至該第二檔案之一第二LPN清單,其中該第一LPN清單被映射至代表在該儲存裝置上之該第一檔案之儲存位置的一第一PPN清單,且該第二LPN清單被映射至代表在該儲存裝置上之該第二檔案之儲存位置的一第二PPN清單;基元式地重新映射該第一LPN清單,以使得該第一LPN清單被依序地映射至該第二PPN清單,其中針對該第一LPN清單之每個LPN,於該第一LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射被建立在該FTL映射圖中;非同步地修整該第一LPN清單至該第一PPN清單之一映射,其中針對該第一LPN清單之每個LPN,在該第一LPN清單之一LPN與該第一PPN清單之一對應的PPN之間的一映射於該FTL映射圖中被移除,並且取消該第二LPN清單至該第二PPN清單之映射,其中針對該第二LPN清單之每個LPN,於該第二LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射在該FTL映 射圖中被移除。
- 一種提供由一儲存裝置所執行之對一經更新檔案的存取之方法,該儲存裝置耦接至具有至少一個處理器的一外部電腦,其中一檔案轉換層(FTL)映射圖係藉由在由一檔案系統所維護之邏輯頁碼(LPN)與由該儲存裝置所維護之實體頁碼(PPN)之間之一FTL來維護,其包含:接收來自該處理器之一第一命令,該第一命令響應於一應用程式接收一更新而被傳送,該更新包含一第一檔案之經修改之內容以及一第二檔案之建立,其中該經修改內容被複製到該第二檔案中,而對該第一檔案之存取係被維護的,其中該第一命令之參數包括對應至該第一檔案之一第一LPN清單,及對應至該第二檔案之一第二LPN清單,其中該第一LPN清單映射至代表在該儲存裝置上之該第一檔案之儲存位置的一第一PPN清單,且該第二LPN清單映射至代表在該儲存裝置上之該第二檔案之儲存位置的一第二PPN清單;基元式地重新映射用於該第一檔案的該第一LPN清單,以使得該第一LPN清單被依序地映射至用於該第二檔案的該第二PPN清單,其中針對該第一LPN清單之每個LPN,於該第一LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射被建立在該FTL映射圖中;非同步地修整用於該第一檔案的該第一PPN清單之一映射,其中針對該第一LPN清單之每個LPN,在該 第一LPN清單之一LPN與該第一PPN清單之一對應的PPN之間的一映射於該FTL映射圖中被移除;以及取消該第二LPN清單至該第二PPN清單之映射,其中針對該第二LPN清單之每個LPN,在該第二LPN清單之一LPN與該第二PPN清單之一對應的PPN之間的一映射於該FTL映射圖中被移除。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562175073P | 2015-06-12 | 2015-06-12 | |
US62/175,073 | 2015-06-12 | ||
US14/954,885 | 2015-11-30 | ||
US14/954,885 US9684658B2 (en) | 2013-11-08 | 2015-11-30 | SWAT command and API for atomic swap and trim of logical pages |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201710930A TW201710930A (zh) | 2017-03-16 |
TWI750116B true TWI750116B (zh) | 2021-12-21 |
Family
ID=57735029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105114318A TWI750116B (zh) | 2015-06-12 | 2016-05-09 | 用於邏輯頁面的基元交換與修整(swat)之swat命令及應用程式介面(api) |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP6788386B2 (zh) |
KR (1) | KR102316198B1 (zh) |
TW (1) | TWI750116B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220009523A (ko) | 2020-07-15 | 2022-01-25 | 삼성전자주식회사 | 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법 |
CN113642839B (zh) * | 2021-07-05 | 2023-10-24 | 华录科技文化(大连)有限公司 | 一种基于流程重构的工作流自适应再生资源回收系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090109788A1 (en) * | 2007-10-31 | 2009-04-30 | Samsung Electronics Co., Ltd. | Data management method and mapping table update method in non-volatile memory device |
US20100228799A1 (en) * | 2009-03-05 | 2010-09-09 | Henry Hutton | System for optimizing the transfer of stored content in response to a triggering event |
US20120110249A1 (en) * | 2010-10-29 | 2012-05-03 | Hyojin Jeong | Memory system, data storage device, user device and data management method thereof |
TWI405082B (zh) * | 2009-06-29 | 2013-08-11 | Mediatek Inc | 記憶體系統及其映射方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004280752A (ja) | 2003-03-19 | 2004-10-07 | Sony Corp | データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム |
JP4242245B2 (ja) | 2003-10-06 | 2009-03-25 | 株式会社ワークビット | フラッシュrom制御装置 |
JP5581256B2 (ja) | 2011-03-28 | 2014-08-27 | 株式会社東芝 | メモリシステム、コントローラ、およびメモリシステムの制御方法 |
US8868869B2 (en) | 2011-08-08 | 2014-10-21 | International Business Machines Corporation | Enhanced copy-on-write operation for solid state drives |
US9122581B2 (en) | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | Data versioning in solid state memory |
US9678966B2 (en) | 2013-11-08 | 2017-06-13 | Samsung Electronics Co., Ltd. | Swat command and API for atomic swap and trim of LBAs |
-
2016
- 2016-03-11 KR KR1020160029633A patent/KR102316198B1/ko active IP Right Grant
- 2016-05-09 TW TW105114318A patent/TWI750116B/zh active
- 2016-06-09 JP JP2016114951A patent/JP6788386B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090109788A1 (en) * | 2007-10-31 | 2009-04-30 | Samsung Electronics Co., Ltd. | Data management method and mapping table update method in non-volatile memory device |
US20100228799A1 (en) * | 2009-03-05 | 2010-09-09 | Henry Hutton | System for optimizing the transfer of stored content in response to a triggering event |
CN102341803A (zh) * | 2009-03-05 | 2012-02-01 | 桑迪士克以色列有限公司 | 响应于触发事件而优化所存储内容的传送的系统 |
TWI405082B (zh) * | 2009-06-29 | 2013-08-11 | Mediatek Inc | 記憶體系統及其映射方法 |
US20120110249A1 (en) * | 2010-10-29 | 2012-05-03 | Hyojin Jeong | Memory system, data storage device, user device and data management method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR20160146506A (ko) | 2016-12-21 |
JP2017004524A (ja) | 2017-01-05 |
KR102316198B1 (ko) | 2021-10-25 |
JP6788386B2 (ja) | 2020-11-25 |
TW201710930A (zh) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6629407B2 (ja) | 更新されたファイルにアクセスする方法及びシステム並びにソフトウェア製品 | |
JP7220234B2 (ja) | Lsmデータ構造内の効率的なレコードルックアップのためのキャッシュ | |
US8738850B2 (en) | Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US8250035B1 (en) | Methods and apparatus for creating a branch file in a file system | |
US9501421B1 (en) | Memory sharing and page deduplication using indirect lines | |
US20180321883A1 (en) | Data storage device and method for operating data storage device | |
WO2016127658A1 (zh) | 一种快照处理方法及装置 | |
US9684658B2 (en) | SWAT command and API for atomic swap and trim of logical pages | |
US20200218465A1 (en) | Selective erasure of data in a ssd | |
US20220300456A1 (en) | System and methods for providing fast cacheable access to a key-value device through a filesystem interface | |
KR102262409B1 (ko) | 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 | |
CN107704466B (zh) | 数据储存系统 | |
US8117160B1 (en) | Methods and apparatus for creating point in time copies in a file system using reference counts | |
TWI750116B (zh) | 用於邏輯頁面的基元交換與修整(swat)之swat命令及應用程式介面(api) | |
CN113051241A (zh) | 数据库持久化的方法、装置及设备 | |
US11893273B2 (en) | Crash-safe tiered memory system | |
US9646012B1 (en) | Caching temporary data in solid state storage devices | |
CN116126243A (zh) | 一种存储介质信息消除方法、系统和工具 |