TWI607306B - 用於非揮發性儲存裝置的再編址記憶體 - Google Patents

用於非揮發性儲存裝置的再編址記憶體 Download PDF

Info

Publication number
TWI607306B
TWI607306B TW103101837A TW103101837A TWI607306B TW I607306 B TWI607306 B TW I607306B TW 103101837 A TW103101837 A TW 103101837A TW 103101837 A TW103101837 A TW 103101837A TW I607306 B TWI607306 B TW I607306B
Authority
TW
Taiwan
Prior art keywords
file
memory
storage device
volatile storage
address
Prior art date
Application number
TW103101837A
Other languages
English (en)
Other versions
TW201432447A (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 微軟技術授權有限責任公司
Publication of TW201432447A publication Critical patent/TW201432447A/zh
Application granted granted Critical
Publication of TWI607306B publication Critical patent/TWI607306B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

用於非揮發性儲存裝置的再編址記憶體
本發明係與用於非揮發性儲存裝置的再編址記憶體相關。
因重複地寫入檔案至儲存裝置上及重複地於儲存裝置上抹除檔案,故該等檔案隨著時間推移可成為碎裂的,降低儲存裝置效能。為幫助緩和此效能問題,可於儲存裝置上執行磁碟重組。磁碟重組所談論的是,藉由將儲存裝置上的檔案碎裂移動至連續位置以減少儲存裝置上的檔案碎裂之操作,因而減少在儲存設備及中央處理單元(CPU)記憶體間之輸入/輸出(I/O)交易之數量,該中央處理單元記憶體係經請求以將全部的檔案碎裂讀入或將全部的檔案碎裂寫出。
已越來越多地使用非揮發性儲存裝置(如固態驅動器(SSD))作為代替傳統硬碟驅動器(如旋轉的磁碟驅動器或光學驅動器)之儲存裝置,或作為除了該等傳統硬碟驅動器外之儲存裝置。雖然重組可有效地使用於傳統硬碟驅動器中,但使用重組於非揮發性儲存裝置中可為有問題的,如這些非揮 發性儲存裝置可因對裝置的重複抹除操作而遭受耗損。因非揮發性儲存裝置具有在該等非揮發性儲存裝置之可靠度被妥協前可被抹除及寫入之有限次數,故非揮發性儲存裝置的磁碟重組遭受磁碟效能相對於儲存裝置壽命之權衡。
提供本發明內容以在簡單形式中,介紹精選概念,該等精選概念會於以下實施方式中進一步地描述。本發明內容並不意欲識別所主張之申請標的之主要特徵或必要特徵,亦不意欲用來限制所主張之申請標的之範圍。
描述用來再排列非揮發性儲存裝置中之記憶體位址之技術及工具。舉例而言,在沒有自儲存裝置上之記憶體位址之實體位置移動資料的情況下,可再編址該等記憶體位址。儲存裝置可以對於作業系統透明的方式,再編址記憶體位址。作為替代的,作業系統可發出命令至儲存裝置以執行最佳化及修改;例如,用於最佳化儲存裝置之映射表。
舉例而言,可提供用於執行用於在非揮發性儲存裝置上之碎裂檔案之記憶體之再編址之方法。方法包含發送命令至非揮發性儲存裝置以再編址碎裂檔案的記憶體,其中碎裂檔案的檔案碎裂遍佈複數個非連續實體位址,及自非揮發性儲存裝置接收回應,該回應係指已再編址用於碎裂檔案的記憶體至連續的實體位址。檔案碎裂的實體位址在記憶體已經受再編址後保持相同。
如另一個範例,配置非揮發性儲存裝置以執行本文所描述之操作。舉例而言,非揮發性儲存裝置可接收命令以 再編址碎裂檔案的記憶體,及對於碎裂檔案的每一個檔案碎裂,分配連續的實體記憶體位址至檔案碎裂。檔案碎裂的實體位址在記憶體已經受再編址後保持相同。
如另一個範例,可提供儲存電腦可執行指令之電腦可讀取儲存媒體以使系統執行本文所描述之操作。舉例而言,電腦可讀取儲存媒體可自非揮發性儲存裝置接收回應,該回應係指已再編址用於碎裂檔案的記憶體至連續的實體位址;及可基於再編址的連續實體位置更新虛擬映射表。檔案碎裂的實體位置在記憶體已經受再編址後保持相同。基於再編址之實體位置,不更新用於作業系統的邏輯區塊位址(LBA)映射表;及LBA映射表與虛擬映射表進行通訊。
如本文所描述的,可合併多種其他特徵及優勢至所欲之技術。
100‧‧‧作業環境
110‧‧‧計算裝置
120‧‧‧重組應用程式
130‧‧‧作業系統
140‧‧‧檔案系統
150‧‧‧裝置驅動
160‧‧‧非揮發性儲存裝置
200‧‧‧方法
210‧‧‧步驟
220‧‧‧步驟
230‧‧‧步驟
300‧‧‧方法
310‧‧‧步驟
320‧‧‧步驟
325‧‧‧步驟
330‧‧‧步驟
340‧‧‧步驟
510‧‧‧實體位置
520‧‧‧實體位置
700‧‧‧計算環境
710‧‧‧中央處理單元
715‧‧‧圖形處理單元或協同處理單元
720‧‧‧記憶體
725‧‧‧記憶體
730‧‧‧基本配置
740‧‧‧儲存器
750‧‧‧輸入裝置
760‧‧‧輸出裝置
770‧‧‧通訊連接
780‧‧‧軟體
800‧‧‧行動裝置
804‧‧‧行動通訊網路
810‧‧‧處理器
812‧‧‧作業系統
813‧‧‧應用程式儲存功能
814‧‧‧應用程式
822‧‧‧不可移除的記憶體
824‧‧‧可移除的記憶體
830‧‧‧輸入裝置
832‧‧‧觸控螢幕
834‧‧‧麥克風
836‧‧‧相機
838‧‧‧實體鍵盤
840‧‧‧軌跡球
850‧‧‧輸出裝置
852‧‧‧揚聲器
854‧‧‧顯示器
860‧‧‧無線數據機
862‧‧‧Wi-Fi
864‧‧‧藍牙
880‧‧‧輸入/輸出埠
882‧‧‧電源供應器
884‧‧‧GPS接收機
886‧‧‧加速度計
890‧‧‧實體連接器
第1圖係示例性作業環境之方塊圖。
第2圖係用於執行記憶體之再編址之示例性方法之流程圖。
第3圖係用於執行記憶體之再編址之示例性方法之流程圖。
第4a圖、第4b圖及第4c圖係展示再編址實體記憶體之範例之圖。
第5a圖及第5b圖係展示在沒有移動記憶體之實體位置的同時再編址實體記憶體之範例之圖。
第6a圖及第6b圖係展示LBA映射表及實體位址之 映射之範例之表格。
第7圖係示例性計算系統之圖,其中可實施一些已描述之實施例。
第8圖係示例性之行動裝置,該示例性之行動裝置可與本文所描述之技術結合使用。
範例1-示例性概觀
下列敘述係針對用於再編址在非揮發性儲存裝置上之實體記憶體位址之技術及解決方案。舉例而言,可在沒有自儲存裝置上之實體記憶體位置移動記憶體的情況下,再編址碎裂檔案的記憶體之實體位址。
藉由再編址記憶體位址,碎裂檔案的檔案碎裂可再編址為連續的記憶體位址,允許更有效的檔案操作(例如,檔案的檢索)。舉例而言,若檔案的檔案碎裂位於連續的記憶體位址,則作業系統可能夠提出單一請求或封裝複數個請求至非揮發性儲存裝置,以檢索檔案。在另一方面,若檔案位於非連續的記憶體位址,則作業系統可需要提出複數個請求至儲存裝置以檢索檔案。
非揮發性的儲存裝置之磁碟重組將可潛在地達成相同的功效。藉由重組儲存裝置,將可在儲存裝置上之實際實體的記憶體位置間移動檔案碎裂,使得重組後檔案碎裂可位於連續的實體記憶體位置。然而,因每一個重組操作將請求複數個抹除及寫入操作以移動位於儲存裝置中四處的檔案碎裂,此原因加速儲存裝置上的耗損,故重組可縮短如SSD之 非揮發性儲存裝置的使用壽命。相較僅因業內被稱為寫入放大(write amplification)的現象而抹除及寫入資料,額外耗損的問題比較大。寫入放大描述記憶體需在記憶體自身被再寫入前被抹除之情況。典型地寫入資料於(舉例而言)4千位元組至8千位元組大小之頁面尺寸中,而被抹除的區塊(抹除區塊)之大小典型地較大(舉例而言,在一些高密度儲存裝置上之128千位元組或甚至數個百萬位元組)。因此,當寫入或移動資料時,舉例而言,即使是要寫入512位元組之資料,此寫入可導致必須移動及抹除資料之更大的區塊。應了解的是,當沒注意到潛在含義時,重組這些驅動器可縮短儲存裝置之可以可靠操作之時間;本文所描述之實施例可在週期地再移動碎裂的同時,延長儲存裝置之可以可靠操作之時間。
旋轉的磁碟驅動器或光學驅動器之重組請求將檔案碎裂實體移動至驅動器上之新鄰近位置,以完成I/O管線的最佳化;該I/O管線的最佳化係發生於當讀寫頭在其他檔案碎裂的實體鄰近處。本文所描述的實施例將展示作業系統如何可利用非揮發性儲存裝置,以在沒有實際複製內容至新實體鄰近位置的狀況下,藉由修改儲存內容之可編址位置最佳化I/O模式。非揮發性儲存裝置在可編址位置儲存內容,該可編址位置可藉由修改不同位置的查找位址(其中相關內容經儲存為邏輯鄰近)最佳化。本文描述之實施例在沒有招致儲存裝置上過早耗損的有害影響的情況下,對於重組更提供相同的I/O效能優勢、避免花費電力及避免再排列與大量儲存系統內容相關之終端使用者影響(而不是終端使用者任務,如儲存照片 或播放電影)。
範例2-示例性的非揮發性儲存裝置
如本文所使用的,非揮發性儲存裝置係指在不需通電的情況下仍可保留儲存裝置自身資訊之任何基於半導體的儲存裝置。舉例而言,非揮發性儲存裝置可為固態驅動器、USB快閃驅動器、單晶片嵌入式記憶體、相變記憶體裝置或任何其他類型之非揮發性之基於半導體的儲存器。亦可使用本文描述的實施例於因碎裂故有序資訊散佈之任何情況中;如使用本文描述機制的隨機存取記憶體(RAM),該隨機存取記憶體在不需實際複製資料至不同的儲存分頁的情況下,經由區塊再編址或分頁再編址以將區塊再排序成順序的布局。
如本文所使用的,非揮發性記憶體係指基於半導體的儲存器,因而不包含磁性儲存裝置(例如,硬碟驅動器)或光學儲存裝置(例如,CD或DVD媒體)。
範例3-再編址的實體記憶體
相對於磁性儲存裝置或光學儲存裝置來說,非揮發性儲存裝置非線性地讀取資料。舉例而言,在磁性儲存裝置中,讀寫頭移動至磁碟盤上的位置,及當該磁碟盤旋轉時,該讀寫頭自該磁碟盤讀取資訊。若磁性儲存裝置意欲讀取在磁碟盤上的另一個位置的資料,則該讀寫頭必須移動至新位置。基於一或更多個磁碟盤的位置排列磁性儲存裝置的實體位址。
在另一方面,非揮發性儲存裝置不使用讀寫頭,作為替代的,該非揮發性儲存裝置係藉由判定個別電晶體的狀 態而可讀取資訊。當透過電晶體流入電壓時,偵測電流以作為二進制資料。可在眾多不同電晶體處並行地執行此操作。雖然這些裝置不遭受與將實體讀寫頭移動至特定位置相關之延遲,但相較於作業系統及應用程式使用多個較小交易之情況,該等裝置可展現效能優勢於作業系統及應用程式做出較少但較大的存取以檢索或儲存資料時。舉例而言,自效能及電力消耗的觀點來看,相較於執行512位元組之2000次存取、每一次存取皆檢索相同的檔案負載之情況,讀取映射至一個連續順序檔案讀取請求之1百萬位元組之塊(chunk)比較好。利用本文描述實施例之系統可藉由傾印資料至個別區塊組(而不是釋放連續區塊)以實現高寫入速度;因資料若資料自身已實際定位於實體鄰近的可編址區塊中時,則該資料會結束資料自身之被編址。
然而,使用非揮發性儲存裝置的計算裝置及儲存裝置自身,通常以與磁性儲存裝置相同之方式對待非揮發性儲存裝置,即,彷彿必須以線性方式讀取。快閃記憶體轉換層(FTL)允許資料出現於特定的實體位置,及FTL保持追蹤在非揮發性儲存裝置上之實體記憶體位址至實體位置之映射。因此,非揮發性儲存裝置分配實體位址至電晶體位置,使得他們似乎可被線性地讀取。
然而,沒有用於儲存裝置中的特定電晶體之實體位址及實體位置之一般映射架構;即,實體位址可映射至儲存裝置上的任何位置,及鄰近實體位址不需映射至鄰近的實體位置,而是每個半導體儲存裝置製造商可想出每個半導體儲 存裝置製造商自身之架構以分配實體記憶體位址至儲存裝置。舉例而言,一些製造商可於儲存裝置中寫死(hard-code)實體記憶體位址,然而其他製造商可動態地分配記憶體位址,如耗損平均。
範例4-示例性的作業環境
在本文的任何範例中,可提供作業環境100以用於再編址記憶體位址。第1圖係描繪示例性作業環境100之圖。示例性作業環境100包含計算裝置110,該計算裝置110包含重組應用程式120及作業系統130。舉例而言,計算裝置100可為行動計算裝置,如行動電話或平板電腦。
作業系統130與非揮發性儲存裝置160進行通訊。作業系統130包含檔案系統140及裝置驅動150。檔案系統140維持非揮發性儲存裝置160上的檔案位置及管理至非揮發儲存裝置160之存取。舉例而言,檔案系統140可為NTFS(新技術檔案系統),該NTFS係藉由微軟公司所開發之用於微軟公司之自身視窗作業系統之檔案系統。裝置驅動150控制非揮發儲存裝置及處理作業系統130及非揮發性儲存裝置160間之通訊。
在第1圖中,為圖示之目的,計算裝置110及非揮發性儲存裝置160展示為分開的元件。然而,需了解的是,計算裝置110及非揮發性儲存裝置160可為相同裝置。
在第1圖中,作業系統130包含檔案系統140及裝置驅動150,以與非揮發性儲存裝置160進行通訊。然而,作業系統130可包含其他與非揮發性儲存裝置160進行通訊的 元件。在一個實施例中,對於再編址記憶體的命令可來自於這些其他作業系統元件中的一個。
在範例中,計算裝置110可包含重組應用程式120。雖然重組應用程式120在第1圖中展示為在作業系統130之外,但應了解的是,重組應用程式120可經修改使得重組應用程式自身被整合至檔案系統140中,或被包含於裝置驅動150中。進一步地,在一些實施例中,可整合重組至非揮發性儲存裝置160自身中。
當重組應用程式120執行於計算裝置110上時,此可命令非揮發性儲存裝置160以再編址記憶體位址,以完成儲存裝置之再編址。重組應用程式120可檢驗儲存於檔案系統140中之每個檔案如何經由裝置驅動150映射至非揮發性儲存裝置160中之儲存位址。當重組應用程式120判定檔案橫跨超過配置或預先定義的碎裂數目(1、2、20等)經儲存時,可調用再編址方法。在其他實施例中,重組應用程式120可使用標準,該標準如頻繁存取檔案或任何數量的其他經驗法則,如檔案大小、系統檔案、使用者檔案等。重組應用程式120可經由帶有碎裂的檔案位址位置之檔案系統140及裝置驅動150,發出命令至儲存裝置160,及接收回來帶有一或更多個新的、非碎裂的(或較少碎裂的)位址位置之回應。舉例而言,若發現檔案分布橫跨15個非連續儲存位址,則檔案系統於再編址後將檔案視為15個連續儲存位址位置。檔案系統140之後可執行順序存取以讀取或寫入檔案,此相較於15個分離交易以檢索及組合每個碎裂來得快。本文描述之實施例 描述在沒有複製檔案碎裂至可用的儲存器的情況下,儲存裝置160如何完成再編址;及作為替代的,簡單地再編址儲存區塊為連續可編址範圍,使得裝置驅動150及檔案系統140以更有效的傳輸模式操作。在其他實施例中,重組應用程式120可經由檔案系統140及驅動程式150,使用檔案儲存位址之供應列表簡單地命令儲存裝置160檔案應為連續的。若命令接收成功回應,則檔案系統得知檔案系統應使用一或更多個新位址位置;反之若命令接收到錯誤回應,則檔案系統可於稍後再嘗試再編址。
或者,重組應用程式120可存在於非揮發性儲存裝置160中,及作業系統130可命令非揮發性儲存裝置160以周期性地執行重組應用程式120,及非揮發性儲存裝置160可作為替代的執行儲存裝置160自身上之記憶體的再編址。在此範例中,藉由檔案系統140提供儲存裝置160資訊,如檔案列表及檔案被儲存之碎裂位置。在非揮發性儲存裝置160完成再編址後,此可以描述檔案內容的新位置之資訊以回應及上傳變化至裝置驅動150及檔案系統140。之後當檔案系統140讀取及寫入檔案區塊時,檔案系統140將在再編址位置處使用用於檔案碎裂的新位址。
在範例中,裝置驅動150可包含重組應用程式120,或在裝置驅動外之重組應用程式120可呼叫常式以重組或再編址非揮發性儲存裝置160。或者,裝置驅動150可具有裝置驅動自身之重組應用程式120,以開始再編址操作及透過溝通地耦合儲存裝置160至計算裝置110之匯流排與用於再編址 儲存位置之特殊協定命令進行溝通。
範例5-用於執行再編址的方法
第2圖係範例方法200的流程圖,該方法係用於執行用於非揮發儲存裝置160上之碎裂檔案之記憶體的再編址。
在210處,發送命令至非揮發性儲存裝置160以再編址用於碎裂檔案的記憶體。
再編址命令210之目標係轉換遍佈多個非連續已編址儲存區塊之檔案為較少的(例如,一個)順序存取;對非揮發性儲存裝置160來說,該多個非連續已編址儲存區塊基本地顯示為隨機的I/O存取模式。本文描述之實施例在沒有實際複製資料至新的儲存位置的情況下(相較於再編址,此實際複製資料至新的儲存位置的情況導致使用更多電力、負面影響儲存器壽命及引入顯著較長之複製儲存內容至作業系統並返回至懷有檔案重組目標之儲存器部分之I/O週期;該懷有檔案重組目標之儲存器部分可以與終端使用者意欲執行的應用程式或正常的作業系統行為相關之任務之方式獲得),完成再編址儲存位置。
在220處,自非揮發性儲存裝置160接收用於碎裂檔案的記憶體已被再編址之回應。
在230處,檔案系統140將更新檔案系統自身內部記錄,該內部記錄保有在哪裡編址檔案碎裂。在一些實施例中,當於210處發送命令時及若檔案系統140未於220處接收成功回應則回撤再編址交易時,檔案系統140可更新檔案系統自身記錄。在其他實施例中,直到檔案系統140基於回 應220中回傳的新位址區塊接收回應、以承諾或作出對應的再編址改變之前,檔案系統140可等待。舉例而言,回應220可包含用於命令210中請求再編址之區塊之新映射,及最後當檔案系統140於230處更新時同意用於區塊之編址被完成。
在範例中,在檔案系統140更新之後,計算裝置110可執行反映目前再編址記憶體之操作。
在範例中,計算裝置可發送更進一步的命令至使用目前再編址記憶體之非揮發性儲存裝置160,該目前再編址記憶體係包含連續的實體位址。舉例而言,計算裝置可發送單一請求或一包複數個請求以於連續實體位址處檢索檔案。因檔案位於連續的實體位址,故減少用於計算裝置之操作數量。因再編址後儲存請求可經實施為用於資料之連續順序請求,故可更有效利用由非揮發性儲存裝置160使用之內部快取機制。藉由如SD卡、eMMC裝置、MMC及SSD驅動器之現代儲存裝置的效能基準測試,固有的於較小的隨機讀取及寫入上之較大的順序讀取及寫入之效能優勢係有據可查的。
第3圖係用於執行記憶體再編址之示例性方法300之流程圖,該記憶體係用於非揮發性儲存裝置160上之碎裂檔案。第3圖所展示之步驟對應於第2圖所展示之步驟。在310處,接收再編址碎裂檔案之記憶體之命令。
在320處,分配連續實體記憶體位址至碎裂檔案的記憶體。即,再編址每個先前位於複數個非連續實體記憶體位址之檔案碎裂為連續實體記憶體位址。
在325處,非揮發性儲存裝置160可回傳處理再編 址改變之錯誤,且系統將流向沒有再編址改變且捨棄再編址之340處。若再編址係成功的,則系統將流向330處。若非揮發性儲存裝置160無法完成命令,則如340處所示,作為未再編址的檔案系統140的一部分,作業系統130將接收錯誤。
在330處,非揮發性儲存裝置160可以用於檔案碎裂的新位址位置,回應作業系統130(該作業系統130包含裝置驅動150及檔案系統140)。在一些實施例中,因非揮發性儲存裝置160只需完成命令,計算裝置110可不需要執行步驟330以回應作業系統130。在其他實施例中,回應可僅需為已再編址區塊之成功回應。
在一些實施例中,可包含再編址邏輯以作為作業系統130的一部分,該作業系統130保持對於所有區塊及可經修改以做再編址重組之可用區塊的追蹤。在其他實施例中,作業系統可請求非揮發性儲存裝置160管理區塊,且僅請求檔案知道檔案為再編址之非常碎裂及期望包含新區塊映射之回應。
最後在一些實施例中,再編址將保持用於檔案之最初的開始區塊位址,及再編址將使所有後續的儲存區塊連續編址於開始位址之後,所以他們看起來像是順序存取;然而,相較於可被計算為屬於其他檔案之位址,後續的儲存區塊可不實際具有唯一位址。此之後將於第4c圖中被更詳細地描述為再編址解決方案,該再編址解決方案在由兩個檔案包含之區塊對於外部觀察者來說看起來像是重疊區塊時,整合稀疏 位址。
在與第1圖有關之範例實施中,非揮發性儲存裝置160可發送碎裂檔案之記憶體已被再編址之回應330,但回送回應並不是必要的。舉例而言,非揮發性儲存裝置160可僅接收命令以再編址碎裂檔案,及作業系統130、檔案系統140及裝置驅動150或重組應用程式120將假定若非揮發性儲存裝置160正常運作,則再編址碎裂檔案已成功完成。
舉例而言,參考第1圖,對於再編址記憶體之命令可來自於檔案系統140、裝置驅動150或非揮發性儲存裝置160。在實施例中,計算裝置110中可有另一個提供命令至非揮發性儲存裝置160之作業系統元件。在另一個實施例中,分隔的元件可存在於作業系統130及非揮發性記憶體之間,該非揮發性記憶體提供命令至非揮發性儲存裝置160。可呈現重組應用程式120於計算裝置110、作業系統130、檔案系統140及裝置驅動150中的一或更多個。於哪裡開始重組之選擇留給系統設計者,該系統設計者可基於不同供應商如何實施再編址之解決方案的品質及成本,選擇哪一個應用程式模組以部署。
在與第1圖有關之範例實施中,藉由非揮發性儲存裝置160接收對於再編址記憶體之命令。然而,命令可不具體指定哪一個碎裂檔案需被再編址。舉例而言,命令可為對非揮發性儲存裝置160之重組請求的一部分。在這種情況下,非揮發性儲存裝置160可基於檔案的碎裂程度判定最可能的要再被編址之候選檔案,及選擇該檔案以再編址。然而,要 被再編址的碎裂檔案不需為最碎裂的檔案。舉例而言,非揮發性儲存裝置160可基於由檔案之作業系統存取的頻率、檔案的實體記憶體位址的位置或任何其他標準,判定最可能的候選檔案。可藉由檔案系統140提供非揮發性儲存裝置160所有帶有碎裂之檔案之列表,或可藉由裝置驅動150、作業系統130、甚至重組應用程式120追蹤非揮發性儲存裝置160。
非揮發性儲存裝置160可執行使用任何本文揭示之方法(但不限於這些方法)之再編址。可執行任何再編址在非揮發性儲存裝置上的碎裂檔案的記憶體之方法。
範例6-示例性的虛擬映射
第4a圖及第4b圖係展示再編址實體記憶體位址之範例之圖。在範例中,碎裂檔案的檔案碎裂遍佈複數個非連續實體位址。舉例而言,假定碎裂檔案位於記憶體位址1、3、4及7。一旦儲存裝置接收命令以再編址碎裂檔案為連續的實體記憶體位址,儲存裝置就判定將在哪一個實體記憶體位址再編址檔案。在此範例中,從記憶體位址1開始再編址檔案,但可做為替代的,可從任何實體記憶體位址開始再編址檔案。
在此範例中,再編址舊記憶體位址3為新記憶體位址2。然而,舊記憶體位址2可包含其他資料。因此,記憶體位址被置換;即,再編址舊記憶體位址3至新記憶體位址2,及再編址舊記憶體位址2至新記憶體位址3。對於所有碎裂檔案的剩餘記憶體位址重複此動作。最終結果係再編址舊記憶體位址3、4及7至新記憶體位址2、3及4,此允許於連續的實體記憶體位址處當下編址碎裂檔案的記憶體;及再編址舊 記憶體位址2至新記憶體位址7。在由檔案系統140管理的叢集大小或磁區大小相對於儲存裝置160的區塊大小為接近1:1關係的情況下,此實施與由第4a圖所展示的實施非常相像。應了解的是,在沒有確實複製資料以用較少的(與已經實踐之重組解決方案相較)資料複製及寫入執行重組的情況下,由檔案系統140管理的磁區大小及叢集大小並不需要為用於再編址儲存位置之基本原則的1:1關係。
然而,並不必須地需要置換實體記憶體位址,及作為替代的,可再編址該等實體記憶體位址為未使用的記憶體位址。舉例而言,第4b圖中,可再編址舊記憶體位址2為可用的記憶體位址100(例如,可用的記憶體位址係空的)。其他碎裂檔案的記憶體位址之後可經再編址至連續的實體位址。
第4c圖描述再編址機制的替代實施例,該再編址機制的替代實施例保持用於檔案之最初的唯一開始區塊位址。在此實施例中,再編址將使所有後續的儲存區塊連續編址於開始位址之後,故對於檔案系統140或作業系統130來說,他們看起來像是順序存取;然而,相較於可被計算為屬於其他檔案之位址(例如,第二及後續的區塊可擁有共用的實體記憶體位址),第二及後續的儲存區塊可不實際具有唯一位址。因使用唯一的開始位址及區塊的特定長度檢索檔案,及因此總是為順序存取,故可非模糊編址跟隨最初的唯一區塊位址之內容流。舉例而言,在第4c圖中,區塊的上部集合展示再編址前之狀態;及展示全部長度為3個區塊(如碎裂a.txt1、a.txt2及a.txt3所個別展示)之檔案「a.txt」,該檔案「a.txt」於區塊1 處開始及於區塊3及5處包含額外碎裂。系統亦可包含檔案「b.txt」,該檔案「b.txt」於區塊2處開始及具有已於區塊4及6處儲存為碎裂之內容(如b.txt1、b.txt2及b.txt3所個別展示)。可藉由檔案系統140發送用於檔案「a.txt」之再編址命令,及於區塊1、3及5處命令用於檔案的再編址以成為順序的;即,開始於用於3個區塊長度之區塊1處。此再編址將於未變化的區塊1處留下內容,但之後再編址區塊3為區塊2(僅當此跟隨區塊1讀取時)及僅當此跟隨區塊1及區塊2之讀取時再編址區塊5為區塊3。因此,當從外部來源依序存取時(如第4c圖之下半部所展示),檔案「a.txt」於再編址後儲存於區塊1、2及3處。因非揮發性儲存裝置160知道系統必須僅藉由讀取區塊1及可選擇的、自區塊1之後的檔案2及3檢索檔案以作為單一順序存取的部分,故若檔案系統140嘗試讀取用於單一長度區塊的區塊2或3,則非揮發性儲存裝置160將報告錯誤。內容係唯一提供給檔案系統140及裝置驅動150,該檔案系統140及裝置驅動150係經規定內容使用開始於帶有長度3之區塊1之命令以經依序編址。檔案系統140亦命令開始於區塊2且包含區塊4及6之檔案「b.txt」再編址,以使此呈現為使用第4c圖中所示之相同機制之區塊2、3及4。如檔案系統140之外部觀察者可計算開始位址、「a.txt」及「b.txt」兩者在區塊2及3處共用內容之長度;因此,內容佔據於相同的儲存區塊中。然而,因非揮發性儲存裝置160了解因「a.txt」及「b.txt」之存取總是為開始於唯一位址之順序存取,故當儲存部分接收開始於區塊1之3個區塊長之存 取時,儲存部分將傳送僅映射至檔案「a.txt」之唯一內容,且儲存部分接收開始於區塊2之3個區塊長之請求時,儲存部分將僅檢索用於檔案「b.txt」之內容;故此可非為事實。非揮發性儲存裝置160將不提供區塊位址1或2至任何其他檔案,及在一些實施例中,檔案系統140知道僅存取使用開始位址之檔案,而非尋求重疊之檔案及存取區塊。又,在一些實施例中,因檔案「a.txt」及「b.txt」確切地使用區塊3、4、5或6,故檔案系統140將不接收具有區塊3、4、5或6之開始位址之開始儲存區塊。替代實施例可提供區塊3、4、5或6之開始位址;然而,提供至檔案系統140之全部的位址區塊將不會超過非揮發性儲存裝置160之儲存容量。進一步的,第4c圖展示再編址自由區塊7以提供3的可用的開始區塊位址。假定檔案系統140儲存新檔案「c.txt」作為寫入至位址3之1區塊,則當檔案系統140讀取開始於位址2之3個區塊存取時,檔案系統140將期望接收檔案「b.txt」之內容;及當檔案系統發布開始於位址3之單一區塊讀取時,檔案系統140期望得到「c.txt」之內容。在一些實施例中,將僅執行此類型之再編址於以順序方式讀取之檔案上。在一些實施例中,檔案系統140可設定屬性以不尋求這些以此方式再編址之類型的檔案。
應了解的是,第4a圖至第4c圖的範例全部展示1:1之映射,該映射係在由檔案系統140追蹤之用於檔案碎裂之儲存器之分離單元(即,叢集)及儲存區塊(由非揮發性儲存裝置160提供之儲存器之分離單元;即,區塊或磁區)之間;然 而,本文描述之實施例可簡單展示檔案碎裂佔據儲存區塊的子部分及儲存於每一個群集中之檔案碎裂映射橫越多個可編址的儲存區塊。也就是說,檔案碎裂(叢集)及儲存區塊(磁區)比例可為1:1、2:1、1:2、1:16及16:1等。簡單延伸再編址原則以確保:當需移動部分分頁時,用在再編址處理期間中之帶有資料的最小副本提供唯一編址以用於儲存。又,於再編址前及於再編址後之由檔案「a.txt」及「b.txt」消耗的儲存空間將保持不變及消耗非揮發性儲存裝置160之6個區塊。
在沒有移動非揮發性儲存裝置160中的記憶體的實體位址的情況下,執行實體記憶體位址之再編址(例如,如上所述的參考第4a圖及第4b圖)。第5a圖及第5b圖展示在沒有移動記憶體之實體位置的情況下,如何執行第4a圖及第4b圖中所描述之再編址操作之圖。取先前的例子,再編址舊記憶體位址1、3、4及7為新記憶體位址1、2、3及4。然而,不移動在記憶體裝置上之碎裂檔案的檔案碎裂的確切實體位置。參考範例,第5a圖描繪在再編址前之記憶體位址1、3、4及7。如第5a圖所描繪的,非揮發性儲存裝置160於在非揮發性儲存裝置160中之特定實體位置處儲存對應記憶體位址1、3、4及7之檔案碎裂,在510處以簡化形式描繪該非揮發性儲存裝置160中之特定實體位置為「LOC1」至「LOC4」。如第5b圖描繪的,已執行再編址使得記憶體位址目前為連續的(位址1、2、3及4)。又,如第5b圖描繪的,即使已執行再編址,但非揮發性儲存裝置160之記憶體的實體位址並沒有改變。因此,舉例而言,雖然再編址舊記憶體 位址3為新記憶體位址2,記憶體的實體位址並未改變。
在一些實施例中,可儲存執行此位址轉換及支援再映射之軟體及/或硬體於非揮發性儲存裝置160中之內部。在其他實施例中,再映射可為橫跨檔案系統140、儲存驅動150及非揮發性儲存裝置160之分佈解決方案。舉例而言,檔案系統140可保持邏輯至實體區塊之映射之追蹤,及遞交再映射解決方案至應用此變化之非揮發性儲存裝置160處。在其他實施例中,儲存驅動可執行位址間之轉換;儲存驅動知道檔案系統140已映射至儲存裝置160中之儲存區塊中,及因而在沒有意識到再映射之檔案系統140之情況下,提供儲存裝置再映射。
範例7-示例性的映射表
第6a圖及第6b圖係表,該等表展示LBA映射表之映射及第4a圖及第4b圖中之碎裂檔案之實體位址之範例。舉例而言,藉由作業系統130可使用LBA映射表,以分配邏輯位址至非揮發性儲存裝置160上的實體位址。在先前範例中,因已再編址實體位址,故基於再編址記憶體更新LBA映射表。因此,舉例而言,在第6a圖中,LBA 0000指向實體位址1、LBA 0001指向實體位址3、LBA 0002指向實體位址4及LBA 0003指向實體位址7。於再編址後,如第6b圖所示的,LBA 0000指向實體位址1、LBA 0001指向實體位址2、LBA 0002指向實體位址3及LBA 0003指向實體位址4。
如第6a圖及第6b圖所示的,可更新LBA映射表以反映記憶體的再編址。然而,不一定需要更新LBA映射表。 舉例而言,虛擬映射表可存在於LBA映射表及儲存裝置之間。可用記憶體之再編址之新資訊,更新虛擬映射表。當LBA映射表尋找位址時,在沒有意識到此再編址已發生之LBA映射表之情況下,更新之虛擬映射表可指向再編址之實體位址。在這種情況下,LBA映射表與虛擬映射表進行通訊,該虛擬映射表包含用於再編址之實體記憶體位址之資訊。
範例8-示例性的計算環境
第7圖描繪合適的計算環境700之一般化的範例,其中可實施描述之發明。因可實施發明於多種通用計算環境或特殊目的之計算環境中,故計算環境700並不意欲建議任何關於使用或功能範疇之限制。舉例而言,計算環境700可為多種計算裝置中(例如,桌上型電腦、膝上型電腦、伺服器電腦、平板電腦、媒體播放器、遊戲系統、行動裝置等)之任何。
參考第7圖,計算環境700包含一或更多個處理單元710、715及記憶體720、725。在第7圖中,此基本配置730包含於虛線之中。處理單元710、715執行電腦可執行指令。處理單元可為通用之中央處理單元(CPU)、特定應用積體電路(ASIC)中之處理器或任何其他類型的處理器。在多處理系統中,複數個處理單元執行電腦可執行指令以增進處理能力。舉例而言,第7圖展示中央處理單元710,及圖形處理單元或協同處理單元715。有形的記憶體720、725可為由一或更多個處理單元可存取之揮發性記憶體(例如,暫存器、快取及RAM)、非揮發性記憶體(例如,ROM、EEPROM及快閃記 憶體等),或揮發性記憶體及非揮發性記憶體兩者之一些組合。記憶體720、725以適合由一或更多個處理單元執行之電腦可執行指令之形式儲存軟體780,該軟體780係實施一或更多個本文所描述之發明。
計算系統可具有額外特徵。舉例而言,計算環境700包含儲存器740、一或更多個輸入裝置750、一或更多個輸出裝置760及一或更多個通訊連接770。如匯流排、控制器或網路之互連機制(未圖示)互相連接計算環境700之元件。典型地,作業系統軟體(未圖示)提供用於執行在計算環境700上之其他軟體之作業環境,及協調計算環境700之元件的活動。
有形的儲存器740可為可移除的或不可移除的,及有形的儲存器740可包含磁碟、磁帶或卡帶(cassettes)、CD-ROM、DVD或可以非暫態方式儲存資訊且在計算環境700中存取之任何其他媒體。儲存器740儲存用於軟體780之指令,該軟體780係實施一或更多個本文所描述之發明。
一或更多個輸入裝置750可為觸控輸入裝置,如鍵盤、滑鼠、觸控筆或軌跡球、聲音輸入裝置、掃描裝置或提供輸入至計算環境700之其他裝置。為視訊編碼之目的,一或更多個輸入裝置750可為相機、視訊卡、硬體解壓縮電視卡(TV tuner card)或接收以類比或數位為形式的視訊信號之相似裝置或讀取視訊樣本進入至計算環境700之CD-ROM、或CD-RW。一或更多個輸出裝置760可為顯示器、印表機、揚聲器、燒錄機或另一個提供來自計算環境700之輸出之裝置。
一或更多個通訊連接770使在通訊媒體上與另一個計算實體進行通訊為可能的。通訊媒體傳送資訊,該資訊如電腦可執行指令、聲音輸入或輸出或視訊輸入或輸出或在調變資料信號中之其他資料。調變資料信號係具有一或更多個自身特徵集或以關於編碼於信號中之此方式改變之信號。舉例而言,但非限制的,通訊媒體可使用電、光學、射頻或其他載體。
可在電腦可執行指令之一般情況下(如執行包含於程式模組之電腦可執行指令於目標真實或虛擬處理器上之計算系統上),描述本發明。一般來說,程式模組包含執行特定工作或實施特定抽象資料類別之常式、程式、函式庫、物件、類、元件、資料結構等。在不同實施例中,可如意欲地合併程式模組之功能或可劃分程式模組之功能。可在本地或分佈之計算系統內執行用於程式模組之電腦可執行指令。
本文中可交換使用術語「系統」及術語「裝置」。除非上下文清楚地指示,否則術語不暗示任何在計算系統或計算裝置類型上之限制。大體來說,計算系統或計算裝置可為本地端或為分佈的,及該計算系統或該計算裝置可包含任何特殊目的硬體及/或帶有實施本文描述之功能之軟體之通用硬體之結合。
範例9-示例性的行動裝置
第8圖係系統圖,該系統圖描繪包含大體上於802處所示的各種可選的硬體及軟體元件之示例性行動裝置800。為易於圖示之目的,雖然並非所有元件皆被展示,但行 動裝置中之任何元件802可與任何其他元件進行通訊。行動裝置可為多種計算裝置中(例如,手機、智慧型手機、手持電腦、個人數位助理(PDA)等)之任何,及該行動裝置可允許與一或更多個行動通訊網路804(如蜂巢網路、衛星網路或其他網路)進行無線雙向通訊。
圖示的行動裝置800可包含用於執行如信號編碼、資料處理、輸入/輸出處理、電力控制及/或其他功能之此類工作之控制器或處理器810(例如,信號處理器、微處理器、ASIC或其他控制及處理邏輯電路)。作業系統812可控制元件802之分配及使用,及支持一或更多個應用程式814。應用程式814可包含一般行動計算應用程式(例如,電子郵件應用程式、行事曆、通訊錄管理、網頁瀏覽器、訊息應用程式)或其他計算應用程式。為獲得及更新應用程式814,亦可使用用於存取應用程式儲存之功能813。
圖示的行動裝置800可包含記憶體820。記憶體820可包含不可移除的記憶體822及/或可移除的記憶體824。不可移除的記憶體822可包含RAM、ROM、快閃記憶體、硬碟或其他眾所周知的記憶體儲存技術。可移除的記憶體824可包含在GSM通訊系統中眾所周知的快閃記憶體或用戶辨識模組(SIM)卡,或該可移除的記憶體824可包含其他眾所周知的記憶體儲存技術,如「智慧卡(smart card)」。可使用記憶體820以儲存用於執行作業系統812及應用程式814之資料及/或程式碼。範例資料可包含經由一或更多個有線或無線網路發送至一或更多個網路伺服器或其他裝置的及/或自一或更多 的網路伺服器或其他裝置接收的網頁、文字、影像、聲音檔案、視訊資料或其他資料集。可使用記憶體820以儲存如國際行動用戶辨識碼(IMSI)之用戶辨識,及如國際行動設備辨識碼(IMEI)之設備辨識。可傳輸此辨識碼至網路伺服器以識別用戶及設備。
行動裝置800可支援一或更多個輸入裝置830,如觸控螢幕832、麥克風834、相機836、實體鍵盤838及/或軌跡球840,及該行動裝置800可支援一或更多個輸出裝置850,如揚聲器852及顯示器854。其他可能的輸出裝置(未圖示)可包含壓電式或其他觸覺輸出裝置。一些裝置可提供超過一種的輸入/輸出功能。舉例而言,可在單一輸入/輸出裝置中合併觸控螢幕832及顯示器854。
輸入裝置830可包含自然使用者介面(NUI)。NUI為任何讓使用者能以「自然」方式與裝置互動之介面技術,該「自然」方式不受由輸入裝置(如滑鼠、鍵盤、遠端控制及諸如此類)強加的人為限制。NUI方法的範例包含依賴語音識別、觸控及觸控筆識別、在螢幕上及鄰近螢幕兩者之手勢識別、懸浮手勢(air gesture)、頭部及眼球追蹤、聲音及語音、視覺、觸控、手勢及機器智慧之方法。NUI的其他範例包含使用加速度計/陀螺儀、臉部識別、3D顯示器、頭部、眼部、視線追蹤及沉浸式的擴增實境及虛擬實境系統之動作手勢偵測,以上所有提供更自然的介面及用於感測使用電場感測電極(EEG及相關方法)之大腦活動之技術。因此,在一個特定實例中,作業系統812或應用程式814可包含語音識別軟體作 為聲音使用者介面的部分,該聲音使用者介面允許使用者經由聲音命令操作裝置800。進一步的,裝置800可包含允許經由使用者之空間手勢之使用者互動之輸入裝置及軟體,該使用者之空間手勢如偵測及解釋手勢以提供輸入至遊戲應用程式。
如本領域所公知的,無線數據機860可耦合至天線(未圖示)及可支援處理器810及外部設備之雙向通訊。數據機860被一般地展示,及該數據機860可包含用於與行動通訊網路804進行通訊之蜂巢式數據機及/或其他基於無線電之數據機(例如,藍牙864或Wi-Fi 862)。為與一或更多個蜂巢網路(如用於在單一蜂巢網路中之資料及聲音通訊之GSM網路,該GSM網路係在蜂巢網路之間或在行動裝置與公用交換電話網路(PSTN)之間)進行通訊之目的,典型地配置無線數據機860。
行動裝置可更包含至少一個輸入/輸出埠880、電源供應器882、如全球訂位系統(GPS)接收機之衛星導航系統接收機884、加速度計886及/或實體連接器890,該實體連接器890可為USB埠、IEEE 1394(火線)埠及/或RS-232埠。因可刪除任何元件及可添加其他元件,故圖示元件802不被要求包含全部。
範例10-示例性的實施
雖然以用於方便呈現的特定的、依序的順序描述一些揭示方法的操作,但應了解的是除非藉由於下闡述之特定語言要求特定順序,否則此描述方式包含再排列。舉例而言,可在一些情況中再排列或同時執行依序描述之操作。此外, 為簡潔起見,附加圖式可不顯示揭示方法可與其他方式結合使用之不同方法。
可實施任何揭示方法為電腦可執行指令,該電腦可執行指令係儲存於一或更多個電腦可讀取儲存媒體及執行於計算裝置上(例如,任何可用的計算裝置,該任何可用的計算裝置包含智慧型手機或包含計算硬體之其他行動裝置)。電腦可讀取儲存媒體為可在計算環境中存取之任何可用之有形媒體(例如,如一或更多個光學媒體碟之非暫態電腦可讀取媒體、揮發性記憶體元件(如DRAM或SRAM)、或非揮發性記憶體裝置(如快閃記憶體或硬碟))。舉例而言及參考第7圖,電腦可讀取儲存媒體包含記憶體720及記憶體725,及儲存器740。舉例而言及參考第8圖,電腦可讀取媒體包含記憶體820、822及824。術語「電腦可讀取儲存媒體」不包含如信號及載波之通訊連接(例如,770、860、862及864)。
可在一或更多個電腦可讀取儲存媒體上,儲存用於實施揭示技術之任何電腦可執行指令,及在揭示實施例實施期間之任何新增及使用之資料。舉例而言,電腦可執行指令可為專用軟體應用程式,或經由網頁瀏覽器存取或下載之軟體應用程式,或其他軟體應用程式(如遠端計算應用程式)。舉例而言,可於單一本地端電腦上(例如,任何的合適市售電腦)、或於使用一或更多個網路電腦之網路環境中(例如,經由網際網路、廣域網路、區域網路、主從式網路(如雲端計算網路)或其他此類網路)執行此類軟體。
為簡潔起見,僅描述基於軟體之實施之特定選擇態 樣。省略本領域中眾所周知的其他細節。舉例而言,應了解的是,揭示之技術不限於任何特定電腦語言或程式。舉例而言,藉由以C++、Java、Perl、JavaScript、Adobe Flash或任何其他適合之程式語言撰寫之軟體,可實施揭示之技術。同樣地,揭示之技術不限於任何特定電腦或硬體類型。適合之電腦及硬體之特定細節係眾所周知的,不需於本發明內闡述細節。
亦應很好地了解,可至少部分地藉由一或更多個硬體邏輯元件(而不是軟體),執行本文描述的任何功能。舉例而言,但非限制的,可被使用之硬體邏輯元件之圖示類型包含:現場可程式化閘陣列(FPGA)、特定程式積體電路(ASIC)、特定程式標準產品(ASSP)、系統單晶片系統(SOC)及複雜可程式邏輯裝置(CPLD)等。
此外,可經由合適的通訊方法上傳、下載或遠端存取任何基於軟體之實施例(舉例而言,該任何基於軟體之實施例包含用於使電腦執行任何揭示方法之電腦可執行指令)。舉例而言,此合適的通訊方法包含網際網路、全球資訊網、內部網路、軟體應用程式、纜線(包含光纖纜線)、磁通訊、電磁通訊(包含RF、微波及紅外線通訊)、電子通訊或其他此類通訊方法。
不應以任何方式將揭示之方法、裝置及系統解釋為限制。作為代替的是,本發明係針對各式揭示之實施例(單獨的實施例、實施例之彼此之各式組合及子組合)之所有新穎及非顯而易見的特徵及態樣。揭示之方法、裝置及系統不被限 於任何特定態樣或特徵或上述之組合,亦不使揭示之實施例需要任何一或更多個特定優勢被呈現或問題被解決。
替代
來自任何範例之技術可與描述於任何一或更多個其他範例中之技術結合。鑑於揭示技術之原則可施加於許多可能的實施例之事實,應了解的是,圖示之實施例為揭示技術範例且不應作為揭示技術範圍之限制。更確切地說,揭示技術之範圍包含藉由下述申請專利範圍涵蓋之範圍。因此,申請人主張所有來自於這些申請專利範圍之範疇內之發明作為申請人的發明。
100‧‧‧作業環境
110‧‧‧計算裝置
120‧‧‧重組應用程式
130‧‧‧作業系統
140‧‧‧檔案系統
150‧‧‧裝置驅動
160‧‧‧非揮發性儲存裝置

Claims (14)

  1. 一種方法,該方法至少部分地藉由一計算裝置執行,以執行用於在一非揮發性儲存裝置上之一碎裂檔案之記憶體之再編址,該方法包含以下步驟:藉由該計算裝置發送一命令至該非揮發性儲存裝置,以再編址該碎裂檔案之該記憶體,其中該非揮發性儲存裝置為一固態驅動器,其中該碎裂檔案之檔案碎裂遍佈複數個非連續實體位址處,及該碎裂檔案之檔案碎裂儲存於該非揮發性儲存裝置內之複數個實體位置處;及藉由該計算裝置自該非揮發性儲存裝置接收已再編址該碎裂檔案之該記憶體之一回應,其中該記憶體已再編址至連續實體位址,其中該再編址步驟包括:對於該碎裂檔案之一開始區塊,分配一唯一開始實體記憶體位址,其中該唯一開始實體記憶體位址僅被分配至該碎裂檔案;及對於該碎裂檔案之所有後續區塊,分配對於該碎裂檔案不是唯一之共用的實體記憶體位址,其中該共用的實體記憶體位址可由儲存在該非揮發性儲存裝置上的其他檔案共用,使得一相同給定的共用的實體記憶體位址可被分配至多個檔案;其中僅使用用於該開始區塊之該唯一開始實體記憶體位址及該碎裂檔案的一長度來將該碎裂檔案作為一順序存取來檢索,其中該碎裂檔案的所有的該等後續區塊被連續編址在該開始區塊之該唯一開始實體記憶體位址之後; 其中在已再編址該碎裂檔案之該記憶體之後,該等檔案碎裂之該複數個實體位置保持相同。
  2. 如請求項1所述之方法,進一步包括以下步驟:基於該再編址記憶體,更新一邏輯區塊位址(LBA)映射表。
  3. 如請求項1所述之方法,進一步包括以下步驟:藉由該計算裝置發送一最佳化命令以讀取使用該連續實體位址之該碎裂檔案。
  4. 如請求項3所述之方法,其中該最佳化命令係一單一請求。
  5. 如請求項3所述之方法,其中該最佳化命令係一封裝請求。
  6. 如請求項1所述之方法,其中對於再編址該碎裂檔案之該記憶體之該命令係該非揮發性儲存裝置之一自動維護排程之部分。
  7. 如請求項1所述之方法,其中對於再編址該碎裂檔案之該記憶體之該命令係自該計算裝置之一作業系統元件處被發送。
  8. 一種非揮發性儲存裝置,該非揮發性儲存裝置包含:一處理單元;及非揮發性記憶體;配置該非揮發性儲存裝置以執行用於再編址一碎裂檔案之記憶體之操作,該等操作包含以下操作:接收一命令以再編址該碎裂檔案之該記憶體,其中該碎裂檔案之檔案碎裂遍佈複數個非連續實體位址處,及該碎裂檔案之檔案碎裂儲存於該非揮發性儲存裝置中之複數個實體位置處;及對於該等檔案碎裂中的每一個,分配一連續實體位址給該等檔案碎裂,包括以下步驟:對於該碎裂檔案之一開始區塊,分配一唯一開始實體記憶體位址,其中該唯一開始實體記憶體位址僅被分配至該碎裂檔案;及對於該碎裂檔案之所有後續區塊,分配對於該碎裂檔案不是唯一之共用的實體記憶體位址,其中該共用的實體記憶體位址可由儲存在該非揮發性儲存裝置上的其他檔案共用,使得一相同給定的共用的實體記憶體位址可被分配至多個檔案;其中僅使用用於該開始區塊之該唯一開始實體記憶體位址及該碎裂檔案的一長度來將該碎裂檔案作為一順序存取來檢索,其中該碎裂檔案的所有的該等後續區塊被連續編址在該開始區塊之該唯一開始實體記憶體位址之後; 其中在已再編址該碎裂檔案之該記憶體之後,該等檔案碎裂之該複數個實體位置保持相同。
  9. 如請求項8所述之非揮發性儲存裝置,其中該非揮發性儲存裝置係一固態驅動器。
  10. 如請求項8所述之非揮發性儲存裝置,其中該非揮發性儲存裝置係一相變記憶體裝置。
  11. 如請求項8所述之非揮發性儲存裝置,其中接收對於再編址該碎裂檔案之該記憶體之該命令以做為該非揮發性儲存裝置之一自動維護排程之部分。
  12. 如請求項8所述之非揮發性儲存裝置,其中對於再編址該碎裂檔案之該記憶體之該命令係自一作業系統元件處被接收。
  13. 如請求項8所述之非揮發性儲存裝置,其中該接收一命令以再編址該碎裂檔案之該記憶體之操作包含以下操作:基於碎裂程度,判定一最可能的候選檔案以再編址;及選擇該最可能的候選檔案作為該碎裂檔案。
  14. 一種電腦可讀取記憶體或儲存媒體,該電腦可讀取記憶體或儲存媒體儲存電腦可執行指令,該等電腦可執行指令用 於使一計算裝置執行用於再編址一非揮發性儲存裝置上之一碎裂檔案之記憶體之操作,該等操作包括:向該非揮發性儲存裝置發送一命令,以再編址該碎裂檔案之該記憶體,其中該碎裂檔案的檔案碎裂遍佈在複數個非連續實體位址處且被儲存在該非揮發性儲存裝置內的複數個實體位置處;及從該非揮發性儲存裝置接收已再編址該碎裂檔案之該記憶體之一回應,其中該記憶體已再編址至連續實體位址,其中該再編址操作包括:對於該碎裂檔案之一開始區塊,分配一唯一開始實體記憶體位址,其中該唯一開始實體記憶體位址僅被分配至該碎裂檔案;及對於該碎裂檔案之所有後續區塊,分配對於該碎裂檔案不是唯一之共用的實體記憶體位址,其中該共用的實體記憶體位址可由儲存在該非揮發性儲存裝置上的其他檔案共用,使得一相同給定的共用的實體記憶體位址可被分配至多個檔案;其中僅使用用於該開始區塊之該唯一開始實體記憶體位址及該碎裂檔案的一長度來將該碎裂檔案作為一順序存取來檢索,其中該碎裂檔案的所有的該等後續區塊被連續編址在該開始區塊之該唯一開始實體記憶體位址之後;其中在已再編址該碎裂檔案之該記憶體之後,該等檔案碎裂之該複數個實體位置保持相同。
TW103101837A 2013-02-08 2014-01-17 用於非揮發性儲存裝置的再編址記憶體 TWI607306B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/763,491 US20140229657A1 (en) 2013-02-08 2013-02-08 Readdressing memory for non-volatile storage devices

Publications (2)

Publication Number Publication Date
TW201432447A TW201432447A (zh) 2014-08-16
TWI607306B true TWI607306B (zh) 2017-12-01

Family

ID=50231513

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103101837A TWI607306B (zh) 2013-02-08 2014-01-17 用於非揮發性儲存裝置的再編址記憶體

Country Status (7)

Country Link
US (1) US20140229657A1 (zh)
EP (1) EP2954400A1 (zh)
JP (1) JP6355650B2 (zh)
KR (1) KR20150115924A (zh)
CN (1) CN105190526B (zh)
TW (1) TWI607306B (zh)
WO (1) WO2014124064A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977799B2 (en) * 2011-09-26 2015-03-10 Lsi Corporation Storage caching/tiering acceleration through staggered asymmetric caching
KR20140099737A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
EP3163882B1 (en) * 2014-06-30 2019-08-07 Sony Corporation Information processing device and method
DE102014224278A1 (de) * 2014-11-27 2016-06-02 Bundesdruckerei Gmbh Verfahren zum Nachladen von Software auf eine Chipkarte durch einen Nachladeautomaten
WO2016112957A1 (en) * 2015-01-13 2016-07-21 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US9760147B2 (en) 2016-01-22 2017-09-12 Microsoft Technology Licensing, Llc Power control for use of volatile memory as non-volatile memory
US9746895B2 (en) * 2016-01-22 2017-08-29 Microsoft Technology Licensing, Llc Use of volatile memory as non-volatile memory
US10235079B2 (en) 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
CN105892938A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 一种磁盘缓存系统的优化方法及系统
US10185657B2 (en) * 2016-04-13 2019-01-22 Nanjing University Method and system for optimizing deterministic garbage collection in NAND flash storage systems
US20180074970A1 (en) * 2016-09-09 2018-03-15 Sap Se Cache-Efficient Fragmentation of Data Structures
US10579516B2 (en) 2017-03-13 2020-03-03 Qualcomm Incorporated Systems and methods for providing power-efficient file system operation to a non-volatile block memory
US10324628B2 (en) * 2017-04-19 2019-06-18 Veritas Technologies Llc Systems and methods for reducing data fragmentation
KR20200022118A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20200022179A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10922022B2 (en) * 2019-03-13 2021-02-16 Samsung Electronics Co., Ltd. Method and system for managing LBA overlap checking in NVMe based SSDs
KR20210023203A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20210129370A (ko) * 2020-04-20 2021-10-28 삼성전자주식회사 메모리 모듈 및 적층형 메모리 장치
CN114356224B (zh) * 2021-12-15 2024-04-19 广州致存科技有限责任公司 文件地址优化方法、终端、服务器及计算机可读存储介质
US11809736B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for quantifying storage fragmentation and predicting performance drop
US11809747B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for optimizing write-amplification factor, endurance, and latency during a defragmentation operation
US11847343B2 (en) 2021-12-22 2023-12-19 Western Digital Technologies, Inc. Storage system and method for non-blocking coherent re-writes
US11954348B2 (en) * 2022-04-08 2024-04-09 Netapp, Inc. Combining data block I/O and checksum block I/O into a single I/O operation during processing by a storage stack

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201022937A (en) * 2008-12-08 2010-06-16 Apacer Technology Inc Memory booster method for storage device
US20100312983A1 (en) * 2009-06-09 2010-12-09 Seagate Technology Llc Defragmentation of solid state memory
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US20110238946A1 (en) * 2010-03-24 2011-09-29 International Business Machines Corporation Data Reorganization through Hardware-Supported Intermediate Addresses

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873124A (en) * 1997-02-06 1999-02-16 Microsoft Corporation Virtual memory scratch pages
EP1145126B1 (en) * 1999-10-21 2005-02-02 Matsushita Electric Industrial Co., Ltd. A semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card
JP2005267240A (ja) * 2004-03-18 2005-09-29 Hitachi Global Storage Technologies Netherlands Bv デフラグメントを行う方法及び記憶装置
WO2006027771A2 (en) * 2004-09-08 2006-03-16 Koby Biller Measuring fragmentation on direct access storage devices and defragmentation thereof
US7774514B2 (en) * 2005-05-16 2010-08-10 Infortrend Technology, Inc. Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
US20120079229A1 (en) * 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US8943296B2 (en) * 2011-04-28 2015-01-27 Vmware, Inc. Virtual address mapping using rule based aliasing to achieve fine grained page translation
US8612719B2 (en) * 2011-07-21 2013-12-17 Stec, Inc. Methods for optimizing data movement in solid state devices
US9229948B2 (en) * 2012-11-30 2016-01-05 Oracle International Corporation Self-governed contention-aware approach to scheduling file defragmentation
US20140189211A1 (en) * 2012-12-31 2014-07-03 Sandisk Enterprise Ip Llc Remapping Blocks in a Storage Device
US9021187B2 (en) * 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
US8966207B1 (en) * 2014-08-15 2015-02-24 Storagecraft Technology Corporation Virtual defragmentation of a storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201022937A (en) * 2008-12-08 2010-06-16 Apacer Technology Inc Memory booster method for storage device
US20100312983A1 (en) * 2009-06-09 2010-12-09 Seagate Technology Llc Defragmentation of solid state memory
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US20110238946A1 (en) * 2010-03-24 2011-09-29 International Business Machines Corporation Data Reorganization through Hardware-Supported Intermediate Addresses

Also Published As

Publication number Publication date
JP6355650B2 (ja) 2018-07-11
EP2954400A1 (en) 2015-12-16
JP2016515231A (ja) 2016-05-26
WO2014124064A1 (en) 2014-08-14
CN105190526A (zh) 2015-12-23
KR20150115924A (ko) 2015-10-14
CN105190526B (zh) 2018-03-30
TW201432447A (zh) 2014-08-16
US20140229657A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
TWI607306B (zh) 用於非揮發性儲存裝置的再編址記憶體
US9183136B2 (en) Storage control apparatus and storage control method
KR20200064499A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US10545876B2 (en) Control unit for data storage system and method for updating logical-to-physical mapping table
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US11675709B2 (en) Reading sequential data from memory using a pivot table
US20210216446A1 (en) Controller and method for selecting victim block for wear leveling operation
WO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
KR20200018999A (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200116704A (ko) 메모리 시스템 및 그것의 동작방법
KR20200033625A (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US11526296B2 (en) Controller providing host with map information of physical address for memory region, and operation method thereof
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
KR20200087487A (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
KR20200016076A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11768628B2 (en) Information processing apparatus
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
US11657000B2 (en) Controller and memory system including the same
US9025380B1 (en) Management of data storage in a non-volatile memory system
KR20220072357A (ko) 컨트롤러, 및 이를 포함하는 메모리 시스템 및 데이터 처리 시스템

Legal Events

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