TW202311968A - 儲存器裝置、操作儲存器裝置的方法以及操作主機裝置的方法 - Google Patents
儲存器裝置、操作儲存器裝置的方法以及操作主機裝置的方法 Download PDFInfo
- Publication number
- TW202311968A TW202311968A TW111126577A TW111126577A TW202311968A TW 202311968 A TW202311968 A TW 202311968A TW 111126577 A TW111126577 A TW 111126577A TW 111126577 A TW111126577 A TW 111126577A TW 202311968 A TW202311968 A TW 202311968A
- Authority
- TW
- Taiwan
- Prior art keywords
- file
- block address
- controller
- data
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
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)
Abstract
提供方法及裝置,在所述方法及裝置中,儲存器裝置的控制器自主機裝置處的應用接收包括檔案的至少檔案指針的讀取命令。控制器使用檔案指針自控制器維護的表擷取與檔案資料相關聯的實體區塊位址(PBA)列表。控制器使用PBA列表自記憶體讀取資料,且將檔案資料提供至主機裝置處的應用。
Description
本揭露一般是有關於對檔案資料進行儲存的儲存器裝置,且更具體而言,是有關於以減少的等待時間來讀取所儲存資料的方法及裝置。
[優先權]
本申請案是基於在2021年7月16日提出申請的序列號為63/222,694的美國臨時專利申請案且主張優先於所述美國臨時專利申請案,所述美國臨時專利申請案的全部內容併入本案供參考。
檔案是由應用用來管理使用者資料的一種類型的資料結構。因此,資料的高效處理、儲存、保全及一般管理對於資訊技術(information technology,IT)系統而言至關重要。應用使用並依賴於檔案系統、作業系統(operating system,OS)以及用於檔案管理及存取相關操作的其他此類系統軟體。
固體狀態驅動機(solid state drive,SSD)是用於現代IT基礎設施的持久資料儲存的組件,此乃因,例如(舉例而言)物聯網(Internet of things,IOT)、社交網路、自主載具等各種應用正在產生大量資料。基於反及快閃媒體的SSD儲存器裝置亦是IT基礎設施的組件。
當應用需要資料時,自SSD儲存器裝置提取所儲存檔案的期望的資料部分。由於SSD提供高效能的持久儲存,因此一些系統效能瓶頸已朝向系統軟體層偏移。此類操作的檔案讀取等待時間是應用(例如,遊戲應用及在線購物應用)的效能及最終使用者體驗的重要因素。
根據實施例,提供一種操作儲存器裝置的方法。儲存器裝置的控制器自主機裝置處的應用接收包括檔案的至少檔案指針的讀取命令。控制器使用檔案指針自控制器處維護的表擷取與檔案資料相關聯的實體區塊位址(PBA)列表。控制器使用PBA列表自記憶體讀取資料,且將檔案資料提供至主機裝置處的應用。
根據實施例,提供一種包括控制器及儲存器媒體的儲存器裝置。控制器被配置成自主機裝置處的應用接收包括檔案的至少檔案指針的讀取命令。控制器亦被配置成使用檔案指針自控制器處維護的表擷取與檔案資料相關聯的PBA列表。控制器更被配置成使用PBA列表自儲存器媒體讀取資料且將檔案資料提供至主機裝置處的應用。
根據實施例,提供一種操作主機裝置的方法。主機裝置處的應用向儲存器裝置的控制器發送包括檔案的至少檔案指針的讀取命令,檔案包括應用的檔案資料。應用自控制器接收由控制器使用在控制器處維護的表擷取的檔案資料,表將檔案指針與檔案的PBA列表相關聯。
在下文中,參照附圖來詳細闡述本揭露的實施例。應注意,儘管示出於不同圖式中,然而相同的元件將由相同的參考編號標示。在以下說明中,提供例如詳細配置及組件等具體細節僅是為了幫助全面理解本揭露的實施例。因此,對於熟習此項技術者而言應顯而易見的是,可在不背離本揭露的範圍的條件下對本文中所述實施例作出各種改變及潤飾。另外,為清晰及簡潔起見,不再對眾所習知的功能及構造予以贅述。以下所述用語是慮及本揭露中的功能而定義的用語,且可根據使用者、使用者的意圖、或習慣而有所不同。因此,應基於本說明書通篇的內容來確定用語的定義。
本揭露可具有各種潤飾及各種實施例,以下參照附圖來詳細闡述所述實施例之中的一些實施例。然而應理解,本揭露並非僅限於所述實施例,而是包括處於本揭露的範圍內的所有潤飾、等效形式及替代形式。
儘管可使用包括例如「第一」、「第二」等序數的用語來闡述各種元件,然而結構性元件不受所述用語限制。所述用語僅用於將一個元件與另一元件區分開。舉例而言,在不背離本揭露的範圍的條件下,可將第一結構性元件稱作第二結構性元件。相似地,亦可將第二結構性元件稱作第一結構性元件。本文中所使用的用語「及/或」包括一或多個相關聯項的任意及全部組合。
本文中所使用的用語僅用於闡述本揭露的各種實施例,而非旨在限制本揭露。除非上下文另外清楚地指示,否則單數形式旨在亦包括複數形式。在本揭露中,應理解,用語「包括」或「具有」指示特徵、數目、步驟、操作、結構性元件、部件或其組合的存在,且不排除一或多個其他特徵、數目、步驟、操作、結構性元件、部件或其組合的存在或添加的可能性。
除非不同地進行定義,否則本文中所使用的所有用語具有與由熟習本揭露所屬技術者所理解的含義相同的含義。例如在常用字典中定義的用語等用語應被解釋為具有與在相關技術領域中的上下文含義相同的含義,且除非在本揭露中進行清楚定義,否則不應將其解釋為具有理想或過於正式的含義。
根據一個實施例的電子裝置可為利用儲存器裝置及/或快速非揮發性記憶體(non-volatile memory express,NVMe)的各種類型的電子裝置中的一者。電子裝置可包括例如可攜式通訊裝置(例如,智慧型電話)、電腦、可攜式多媒體裝置、可攜式醫療裝置、照相機、可穿戴裝置或家用電器。根據本揭露的一個實施例,電子裝置並非僅限於上述電子裝置。
在本揭露中使用的用語並非旨在限制本揭露,而是旨在包括對應實施例的各種改變、等效形式或替換形式。關於附圖的說明,可使用相似的參考編號來指代相似或相關的元件。除非相關上下文另外清楚地指示,否則與一個項對應的名詞的單數形式可包括一或多個事物。本文中所使用的例如「A或B」、「A及B中的至少一者」、「A或B中的至少一者」、「A、B或C」、「A、B及C中的至少一者」以及「A、B或C中的至少一者」等片語中的每一者可包括在所述片語中對應的一者中一同枚舉的項的所有可能的組合。本文中所使用的例如「第一(1
st)」、「第二(2nd)」、「第一(first)」及「第二(second)」等用語可用於將對應的組件與另一組件區分開,但並非旨在在其他態樣(例如,重要性或次序)限制所述組件。本揭露的目的是,若在存在或不存在用語「以操作方式」或「以通訊方式」的情況下將一元件(例如,第一元件)稱為「與」另一元件(例如,第二元件)「耦合」、「耦合至」所述另一元件、「與」所述另一元件「連接」或「連接至」所述另一元件,則其指示所述元件可直接地(例如,有線地)、無線地或經由第三元件與所述另一元件耦合。
本文中所使用的用語「模組」可包括在硬體、軟體、韌體或其組合中實施的單元,且可與其他用語(例如「邏輯」、「邏輯區塊」、「部件」及「電路系統」)互換地使用。模組可為適於執行一或多種功能的單一整體組件或其最小單元或部件。舉例而言,根據一個實施例,可以特殊應用積體電路(application-specific integrated circuit,ASIC)的形式實施模組。
由應用使用檔案資料結構來組織及管理使用者資料。應用在其執行中會處理大量不同的使用者資料。應用可產生新資料及/或存取由其他應用產生的資料。應用常常處理資料且對資料進行轉變以產生新的資料項。應用的最終使用者體驗常常依賴於高效的資料處理及共享。
在基本層面上,檔案名可表示唯一使用者資料的區塊。使用者資料可具有唯一且不同的格式、組織、佈局及含義。對資料進行處理的應用可理解此資料的語義。然而,除了語義之外,此資料必須持久地保存於儲存器媒體中。另外,此種資料可被保護免受各種實體劣化影響,可在需要時對應用可用,可為了保全及隱私而被保護,且有時可與其他資料處理過程共享。資料管理的該些態樣可能與資料的語義無關。
檔案是用於對使用者資料的該些資料語義不可知態樣進行管理的資料結構,且使用者應用依賴於例如檔案系統等其他系統軟體層來管理該些態樣。檔案系統本身使用服務以及許多其他軟體及硬體組件的幫助來達成期望的資料管理功能。此種軟體組件的一些實例是作業系統(operating system,OS)、應用程式設計介面(application programming interface,API)庫及各種驅動器。硬體組件的一些實例是儲存器裝置、獨立磁碟冗餘陣列(redundant array of independent disk,RAID)控制器、網路介面卡等。
應用可使用檔案系統API來創建檔案,將資料儲存至該些檔案中,且自該些檔案讀取資料以進行處理。檔案系統實施可由應用用來實行上述功能的API。為此目的而實施的檔案系統以及軟體及硬體組件極其複雜。
舉例而言,可使用相對複雜的演算法來達成期望的資料管理功能。此種複雜性可能導致應用的資料讀取及寫人操作的執行時間更長。資料讀取操作等待時間可能是應用的相關因素。較長的資料讀取時間可能表現為緩慢的使用者體驗或使用者界面凍結或感覺掛起。因此,可能可期望將資料讀取等待時間減少及最佳化。
舉例而言,對遊戲場景進行更新的較長等待時間會使遊戲玩家的遊戲體驗不太愉快,且遊戲玩家可能會對遊戲系統失去興趣。類似地,緩慢的網上購物系統可能會導致寶貴的潛在客戶的流失。
根據本揭露的態樣,提供一種系統及方法,所述系統及方法藉由避免遍歷系統軟體層中的一些系統軟體層且預先實行查找功能中的一些查找功能來改善檔案讀取等待時間。即,應用可直接向儲存器裝置發送檔案讀取請求,而非經歷檔案系統。藉由將檔案讀取請求直接發送至儲存器裝置,繞過了系統軟體堆疊中的一些開銷(overhead)。具體而言,指向邏輯區塊位址(logical block address,LBA)的檔案指針查找步驟在系統軟體中被繞過且在附接的儲存器裝置中被高效地實行。
為了達成此種高效的檔案讀取操作,可修改一些檔案系統功能,以監視指向LBA映射表的檔案指針且將所述檔案指針鏡像至SSD控制器。可對SSD控制器架構進行最佳化以維護及使用OFT來保持檔案指針、LBA及PBA映射。SSD控制器接受直接檔案讀取請求,且然後自OFT獲得PBA。可使用例如NVMe或類似協定等儲存協定將由應用發出的檔案讀取調用直接發送至SSD控制器。在辨識出期望的PBA之後,SSD控制器會將使用者資料直接存放至應用緩衝區中,藉此顯著改善檔案資料讀取等待時間。
OFT可包括檔案指針行、LBA列表行、PBA列表行及檔案讀取偏置行中的至少一者。檔案資料可使用檔案讀取偏置行而被提供至應用。檔案讀取調用可包括欲自記憶體讀取的資料的量及檔案讀取偏置,且檔案讀取偏置列可使用檔案讀取調用的檔案讀取偏置來更新。可自主機裝置接收用於OFT的表項的經更新檔案指針-LBA列表映射,且可使用基於映射擷取的PBA列表資訊來對OFT的表項進行更新。
儘管本文中闡述了基於LBA的系統架構,但實施例不限於此,且同樣適用於基於鍵/值或其他對象的儲存器系統架構。
根據實施例,提供一種系統及方法,在所述系統及方法中,檔案讀取操作被攔截並直接發送至SSD控制器,而非經過檔案系統,以改善等待時間。以下表1中示出應用的檔案讀取操作的實例。
表 1 #include <stdio.h> int main () { file *fp1; // file pointer char * data_buffer; // buffer to store the data read from the SSD int data_size; // size of the data structure or record int num_data; // number of records to fetch from SSD file_handle = fopen (file_name.txt, “r”); // open a file to read the data for processing data_size = 64; num_data = 1000; data_buffer = malloc (data_size * num_data); // allocate host memory buffer to store the data fread (file_handle, data_buffer, data_size, num_data); // file read request to File System process_data (data_buffer); // data processing fclose (file_handle); // close the file }
圖1是示出檔案讀取操作的流程圖。當執行fread()函數調用102時,在106處,檔案系統層104使用檔案指針(檔案句柄或檔案描述符)來查找與檔案相關聯的檔案系統區塊。在110處,在儲存器區塊層108處,將檔案系統區塊轉換成對應的儲存器區塊或區段(被稱為LBA)。在114處,儲存器區塊層108及儲存器裝置驅動器層112向SSD發送儲存器輸入/輸出(input/output,I/O)讀取命令。在118處,在SSD控制器(快閃轉譯層(flash translation layer,FTL)116)中,將LBA轉換成反及快閃媒體PBA。自反及快閃媒體120讀取使用者資料且將使用者資料返回至應用。
如圖1中所示,檔案讀取操作遍歷多個系統軟體層以提取使用者資料。經過系統軟體層的該些轉譯及遍歷會增加等待時間。
根據實施例,可預先實行上述轉譯步驟中的一些轉譯步驟,以避免等待時間。
SSD控制器在SSD裝置中維護表2。檔案指針及LBA列表行由以下詳細闡述的新的檔案系統函數調用來更新。PBA列表行由SSD控制器初始化及維護。檔案讀取偏置行可由主機及SSD控制器進行更新。
表 2
主機初始化的 | SSD控制器更新的 | ||
檔案指針 | LBA列表 | PBA列表(通道/晶粒/平面/區塊/頁面/偏置) | 檔案讀取偏置(位元組) |
1234 | 100, 101, 102 | 4/2/1/23/37/128 | 0 |
AB7689 | 73 | 3/1/1/93/293/4096 | 128 |
9CD84 | 835, 567 | 3/2/3/1 | 56 |
根據實施例,一組新的檔案操作函數調用包括:
●fopen_OFT()
●fread_OFT()
●fwrite_OFT(), fsync_OFT(), fflush_OFT()
●fclose_OFT()
●fseek_OFT()
亦可以類似的方式對其他檔案系統API進行修改,以幫助所提出的機制。對SSD控制器架構進行最佳化,進而快速地創建、更新、維護及使用OFT來返回使用者資料。
使用新的檔案操作函數調用在以下表3中示出表1的應用代碼實例。
表 3 #include <stdio.h> int main () { file *fp; // file pointer char * data_buffer; // buffer to store the data read from the SSD int data_size; // size of the data structure or record int num_data; // number of records to fetch from SSD file_handle = fopen_OFT (file_name.txt, “r”); // program file pointer and associated LBAs in the device data_size = 64; num_data = 1000; data_buffer = malloc (data_size * num_data); // allocate host memory buffer to store the data fread_OFT (file_handle, data_buffer, data_size, num_data); // file read request to SSD Controller process_data (data_buffer); // data processing fclose_OFT ( file_handle ); // close the file, reset the file offset if necessary }
圖2是示出根據實施例的主機裝置處的fopen_OFT()調用的流程圖。圖6及圖7中闡述的任何組件或組件的任何組合可用於實行流程圖中的操作中的一或多個操作。所述操作是示例性的且可能是有關於未明確闡述的各種附加步驟。操作的時間順序可發生變化。
由應用使用表3所示fopen_OFT()函數調用202來代替表1所示fopen()函數調用。在204處,此函數調用使用檔案系統在內部打開指定檔案以獲得檔案指針。在206處,函數調用使用檔案系統軟體利用檔案指針來查找檔案系統,且在208處獲得相關聯的檔案系統區塊。在210處,函數調用然後使用儲存器區塊層系統軟體利用檔案系統區塊來查找儲存器區塊層,且在212處獲得檔案系統區塊的相關聯的LBA映射。一旦獲得檔案的LBA映射,在214處,fopen_OFT()函數調用將檔案指針與LBA映射程式化於相關聯的SSD控制器中。此種程式化可藉由SSD驅動器軟體(例如(舉例而言)NVMe裝置驅動器)來達成,且可使用供應商定義的NVMe命令。在映射被提供至SSD控制器之後,函數調用返回。
亦可能可使用fopen_OFT()來將偏置行值初始化為零(或另一值)。
如上所述,fopen_OFT()函數調用將檔案指針與LBA映射傳遞至SSD控制器。SSD控制器可以供應商定義的NVMe命令的形式接收此資訊。SSD控制器在OFT中分派自由表項且對檔案指針、LBA映射進行記錄。SSD控制器亦對OFT中的相關聯的LBA、PBA映射進行更新。PBA位址可包括快閃通道辨識符、反及晶粒索引、平面、區塊ID、頁碼等。PBA位址用於自快閃媒體讀取使用者資料且將所讀取的使用者資料發送回主機裝置。
SSD控制器亦可在垃圾收集(garbage collection,GC)過程中對OFT的PBA行進行更新。有時,出於例如保留、壞區塊管理、回收等原因而將儲存於反及快閃媒體中的使用者資料移動至不同的實體位置。因此,若且當此種事件發生時,SSD控制器應對LBA、PBA映射進行更新。
圖3是示出根據實施例的用於在SSD控制器處對OFT的PBA行進行更新的方法的流程圖。圖6及圖7中闡述的任何組件或組件的任何組合可用於實行流程圖中的操作中的一或多個操作。所述操作是示例性的且可能是有關於未明確闡述的各種附加步驟。操作的時間順序可發生變化。
在304處,基於update_PBA_OFT()函數調用302,SSD控制器對由於GC引起的PBA-LBA映射的改變進行偵測。在306處,SSD控制器自OFT擷取LBA,且在308處,基於LBA-PBA快閃轉譯層(FTL)表來對OFT表項中的PBA資訊進行更新,之後函數調用返回。作為另外一種選擇,在310處,因應於update_PBA_OFT()函數調用302,SSD控制器自主機裝置接收檔案指針、LBA元組。在312處,SSD控制器判斷是否所有接收到的表項均被更新。在未對所有接收的表項進行更新的情形中,在314處,SSD控制器查找LBA-PBA快閃轉譯層(FTL)表,且在316處,SSD控制器對OFT表項中的PBA資訊進行更新。當所有接收到的表項均被更新時,函數調用返回。
因此,主機軟體及SSD控制器FTL韌體使OFT保持最新,以便應用可在資料讀取期間使用OFT。應用使用新的、最佳化的檔案讀取函數調用,如表3中所示。
圖4是示出根據實施例的主機裝置處的fread_OFT()函數調用的流程圖。圖6及圖7中闡述的任何組件或組件的任何組合可用於實行流程圖中的操作中的一或多個操作。所述操作是示例性的且可能是有關於未明確闡述的各種附加步驟。操作的時間順序可發生變化。
在406處,主機裝置402的fread_OFT()函數調用404直接與SSD控制器進行通訊且發送檔案指針、欲讀取的資料的量以及可選的欲讀取的偏置。fread_OFT()函數調用可使用供應商定義的NVMe命令將此資訊發送至SSD控制器。在408處,此函數調用然後等待SSD控制器經由直接記憶體存取(direct memory access,DMA)提供資料。在410處,所述函數返回。
圖5是示出根據實施例的SSD控制器處的fread_OFT()函數調用的流程圖。圖6及圖7中闡述的任何組件或組件的任何組合可用於實行流程圖中的操作中的一或多個操作。所述操作是示例性的且可能是有關於未明確闡述的各種附加步驟。操作的時間順序可發生變化。
在506處,SSD控制器502接收供應商定義的NVMe命令,供應商定義的NVMe命令具有由fread_OFT()函數調用504提供的資訊。在接收到命令之後,在508處,SSD控制器502在OFT中查找檔案指針表項,且獲得與此檔案相關聯的PBA的列表。在510處,SSD控制器502然後使用PBA自反及快閃媒體讀取適當的使用者資料。在512處,SSD控制器502經由DMA將所讀取的使用者資料發送回使用者應用(例如,主機記憶體緩衝器),且在514處完成NVMe命令。
若命令指示任何特定的偏置讀取位址,則SSD控制器在返回資料的同時使用所述偏置讀取位址。若命令未指定任何讀取偏置,則SSD控制器可使用來自OFT的偏置來返回資料。在返回資料之後,在516處,SSD控制器可針對檔案指針表項來對OFT中的新檔案偏置值進行更新。預設情況下,當創建表項時,偏置的OFT表項為零。
根據實施例,當資料被寫入檔案時,可使用fwrite_OFT()函數調用來對OFT中的檔案指針及相關聯的LBA進行更新。儘管檔案寫入操作可能不處於讀取等待時間關鍵路徑中,但一些用例及應用可能會受益於在資料寫入之後對OFT進行更新。作為另外一種選擇,可使用類似的系統及方法來支援其他資料寫入相關檔案系統調用,例如fflush()及fsync()。
主機軟體可能使用另一函數調用(例如fseek_OFT())來對OFT中的讀取偏置值進行重設或更改。當SSD控制器自主機裝置接收到給定檔案指針的新偏置值時,SSD控制器可對對應的OFT表項進行更新。一旦OFT表項被更新,便可將新的偏置值用於此檔案的後續使用者資料讀取操作。
當檔案被關閉時,fclose_OFT()函數調用可對偏置表項進行重設。fclose_OFT()函數調用亦可指示(或請求)SSD控制器自OFT移除檔案指針表項。自主機軟體接收請求的SSD控制器可根據請求來對OFT進行更新。
圖6示出根據實施例的網路環境600中的電子裝置601的方塊圖。參照圖6,網路環境600中的電子裝置601可經由第一網路698(例如,短程無線通訊網路)與電子裝置602進行通訊,或經由第二網路699(例如,遠程無線通訊網路)與電子裝置604或伺服器608進行通訊。電子裝置601可經由伺服器608與電子裝置604進行通訊。電子裝置601可包括處理器620、記憶體630、輸入裝置650、聲音輸出裝置655、顯示裝置660、音訊模組670、感測器模組676、介面677、觸覺模組679、照相機模組680、電源管理模組688、電池689、通訊模組690、用戶辨識模組(subscriber identification module,SIM)696或天線模組697。在一個實施例中,可自電子裝置601省略所述組件中的至少一者(例如,顯示裝置660或照相機模組680),或者可將一或多個其他組件添加至電子裝置601。在一個實施例中,所述組件中的一些組件可被實施為單一積體電路(integrated circuit,IC)。舉例而言,感測器模組676(例如,指紋感測器、虹膜感測器或照度感測器)可被嵌入於顯示裝置660(例如,顯示器)中。
處理器620可執行例如軟體(例如,程式640)以對與處理器620耦合的電子裝置601的至少一個其他組件(例如,硬體組件或軟體組件)進行控制,且可實行各種資料處理或計算。作為資料處理或計算的至少一部分,處理器620可將自另一組件(例如,感測器模組676或通訊模組690)接收的命令或資料載入於揮發性記憶體632中,對儲存於揮發性記憶體632中的命令或資料進行處理,並將所得的資料儲存於非揮發性記憶體634中。處理器620可包括主處理器621(例如,中央處理單元(central processing unit,CPU)或應用處理器(application processor,AP))以及能夠獨立於主處理器621進行操作或與主處理器621相結合地進行操作的輔助處理器623(例如,圖形處理單元(graphics processing unit,GPU)、影像訊號處理器(ISP)、感測器集線器處理器(sensor hub processor)或通訊處理器(communication processor,CP))。另外地或作為另外一種選擇,輔助處理器623可適於消耗較主處理器621少的電力,或執行特定功能。輔助處理器623可被實施為與主處理器621分離或被實施為主處理器621的一部分。
當主處理器621處於非現用(例如,睡眠)狀態時,輔助處理器623可代替主處理器621來對與電子裝置601的組件之中的至少一個組件(例如,顯示裝置660、感測器模組676或通訊模組690)相關的功能或狀態中的至少一些功能或狀態進行控制,或者當主處理器621處於現用狀態(例如,執行應用)時與主處理器621一同進行上述控制。根據一個實施例,輔助處理器623(例如,影像訊號處理器或通訊處理器)可被實施為在功能上與輔助處理器623相關的另一組件(例如,照相機模組680或通訊模組690)的一部分。
記憶體630可儲存電子裝置601的至少一個組件(例如,處理器620或感測器模組676)所使用的各種資料。所述各種資料可包括例如軟體(例如,程式640)以及用於與其相關的命令的輸入資料或輸出資料。記憶體630可包括揮發性記憶體632或非揮發性記憶體634。
程式640可作為軟體被儲存於記憶體630中,且可包括例如作業系統(OS)642、中間軟體644或應用646。
輸入裝置650可自電子裝置601的外部(例如,使用者)接收電子裝置601的另一組件(例如,處理器620)欲使用的命令或資料。輸入裝置650可包括例如麥克風、滑鼠或鍵盤。
聲音輸出裝置655可向電子裝置601的外部輸出聲音訊號。聲音輸出裝置655可包括例如揚聲器或接收器。揚聲器可用於一般性目的,例如播放多媒體或進行錄製,且接收器可用於接收來電。根據一個實施例,接收器可被實施為與揚聲器分離或被實施為揚聲器的一部分。
顯示裝置660可在視覺上向電子裝置601的外部(例如,使用者)提供資訊。顯示裝置660可包括例如顯示器、全像裝置(hologram device)或投影儀以及用於對顯示器、全像裝置及投影儀中的對應一者進行控制的控制電路系統。根據一個實施例,顯示裝置660可包括適於對觸控進行偵測的觸控電路系統或適於對由觸控所產生的力的強度進行量測的感測器電路系統(例如,壓力感測器)。
音訊模組670可將聲音轉換成電性訊號,且反之亦然。根據一個實施例,音訊模組670可經由輸入裝置650獲得聲音,或經由聲音輸出裝置655或與電子裝置601直接地(例如,有線地)或無線地耦合的外部電子裝置602的耳機而輸出聲音。
感測器模組676可對電子裝置601的操作狀態(例如,功率或溫度)或電子裝置601外部的環境狀態(例如,使用者的狀態)進行偵測,且然後產生與所偵測狀態對應的電性訊號或資料值。感測器模組676可包括例如手勢感測器、陀螺儀感測器、大氣壓力感測器、磁性感測器、加速度感測器、抓握感測器、接近感測器、色彩感測器、紅外線(infrared,IR)感測器、生物辨識感測器(biometric sensor)、溫度感測器、濕度感測器或照度感測器。
介面677可支援欲用於電子裝置601的一或多個規定協定,以直接地(例如,有線地)或無線地與外部電子裝置602耦合。根據一個實施例,介面677可包括例如高解析度多媒體介面(high-definition multimedia interface,HDMI)、通用串列匯流排(universal serial bus,USB)介面、保全數位(secure digital,SD)卡介面或音訊介面。
連接端子678可包括連接器,電子裝置601可經由所述連接器與外部電子裝置602在實體上連接。根據一個實施例,連接端子678可包括例如HDMI連接器、USB連接器、SD卡連接器或音訊連接器(例如,耳機連接器)。
觸覺模組679可將電性訊號轉換成機械刺激(例如,振動或運動)或電性刺激,所述機械刺激或電性刺激可由使用者藉由觸覺或動覺來識別。根據一個實施例,觸覺模組679可包括例如馬達、壓電元件或電性刺激器。
照相機模組680可捕獲靜止影像或移動影像。根據一個實施例,照相機模組680可包括一或多個透鏡、影像感測器、影像訊號處理器或閃光燈。
電源管理模組688可對被供應至電子裝置601的電源進行管理。電源管理模組688可被實施為例如電源管理積體電路(power management integrated circuit,PMIC)的至少一部分。
電池689可向電子裝置601的至少一個組件供電。根據一個實施例,電池689可包括例如不可再充電的一次電池、可再充電的二次電池或者燃料電池。
通訊模組690可支援在電子裝置601與外部電子裝置(例如,電子裝置602、電子裝置604或伺服器608)之間建立直接(例如,有線)通訊通道或無線通訊通道,並經由所建立的通訊通道實行通訊。通訊模組690可包括一或多個能夠獨立於處理器620(例如,AP)進行操作的通訊處理器且支援直接(例如,有線)通訊或無線通訊。根據一個實施例,通訊模組690可包括無線通訊模組692(例如,蜂巢式通訊模組、短程無線通訊模組或全球導航衛星系統(GNSS)通訊模組)或有線通訊模組694(例如,區域網路(local area network,LAN)通訊模組或電源線通訊(power line communication,PLC)模組)。該些通訊模組中的對應一者可經由第一網路698(例如短程通訊網路,例如藍芽
TM、無線保真(wireless-fidelity,Wi-Fi)直連或紅外線資料協會(Infrared Data Association,IrDA)的標準)或第二網路699(例如遠程通訊網路,例如蜂巢式網路、網際網路或電腦網路(例如,LAN或廣域網路(wide area network,WAN)))與外部電子裝置進行通訊。該些各種類型的通訊模組可被實施為單一組件(例如,單一IC),或者可被實施為彼此分離的多個組件(例如,多個IC)。無線通訊模組692可使用儲存於用戶辨識模組696中的用戶資訊(例如,國際行動用戶辨識(international mobile subscriber identity,IMSI))來在通訊網路(例如,第一網路698或第二網路699)中辨識及認證電子裝置601。
天線模組697可向電子裝置601的外部(例如,外部電子裝置)傳輸訊號或電力,或自電子裝置601的外部(例如,外部電子裝置)接收訊號或電力。根據一個實施例,天線模組697可包括一或多個天線,且可例如由通訊模組690(例如,無線通訊模組692)自所述一或多個天線選擇適宜於在通訊網路(例如第一網路698或第二網路699)中使用的通訊方案的至少一個天線。然後,可經由所選擇的所述至少一個天線在通訊模組690與外部電子裝置之間傳輸或接收訊號或電力。
上述組件中的至少一些組件可相互耦合,並且經由與周邊設備之間的通訊方案(inter-peripheral communication scheme)(例如匯流排、通用輸入及輸出(general-purpose input and output,GPIO)、串列周邊介面(serial peripheral interface,SPI)或行動產業處理器介面(mobile industry processor interface,MIPI))在其之間傳送訊號(例如,命令或資料)。
根據一個實施例,命令或資料可經由與第二網路699耦合的伺服器608在電子裝置601與外部電子裝置604之間傳輸或接收。電子裝置602及604中的每一者可為與電子裝置601相同類型或不同類型的裝置。欲在電子裝置601處執行的全部或一些操作可在外部電子裝置602、604或608中的一或多者處執行。舉例而言,若電子裝置601應自動、或因應於來自使用者或另一裝置的請求而實行功能或服務,則電子裝置601可請求所述一或多個外部電子裝置來實行所述功能或服務的至少一部分而非自身執行所述功能或服務,或除自身執行所述功能或服務以外亦請求所述一或多個外部電子裝置來實行所述功能或服務的至少一部分。接收請求的所述一或多個外部電子裝置可實行所請求的功能或服務的所述至少一部分、或與所述請求相關的附加功能或附加服務,並將實行的結果傳送至電子裝置601。電子裝置601可提供所述結果(在將所述結果進行進一步的處理或不作進一步處理的情況下)作為對所述請求的答覆的至少一部分。為此,例如,可使用雲端計算、分佈式計算或客戶端-伺服器計算技術。
一個實施例可被實施為包括一或多個指令的軟體(例如,程式640),所述一或多個指令儲存於可由機器(例如,電子裝置601)讀取的儲存器媒體(例如,內部記憶體636或外部記憶體638)中。舉例而言,電子裝置601的處理器可調用儲存於儲存器媒體中的所述一或多個指令中的至少一者,並在使用或不使用在所述處理器的控制下的一或多個其他組件的情況下來執行所述一或多個指令中的所述至少一者。因此,可操作機器以根據調用的所述至少一個指令實行至少一種功能。所述一或多個指令可包括由編譯器產生的碼或可由解譯器執行的碼。可以非暫時性儲存器媒體的形式提供機器可讀取儲存器媒體。用語「非暫時性」指示儲存器媒體是有形的裝置,並且不包括訊號(例如,電磁波),但此用語不區分資料半永久儲存於儲存器媒體中的情形與資料臨時儲存於儲存器媒體中的情形。
根據一個實施例,本揭露的方法可包括並設置於電腦程式產品中。電腦程式產品可作為產品在賣方與買方之間進行交易。電腦程式產品可以機器可讀取儲存器媒體(例如,光碟唯讀記憶體(compact disc read only memory,CD-ROM))的形式分發,或者藉由應用商店(例如,電子市場(Play Store)
TM)在線上分發(例如,下載或上傳),或直接在兩個使用者裝置(例如,智慧型電話)之間分發。若在線上分發,則電腦程式產品的至少一部分可被臨時產生或至少臨時儲存於機器可讀取儲存器媒體(例如,製造商的伺服器的記憶體、應用商店的伺服器或者中繼伺服器)中。
根據一個實施例,上述組件中的每一組件(例如,模組或程式)可包括單一實體或多個實體。可省略上述組件中的一或多者,或者可添加一或多個其他組件。作為另外一種選擇或另外地,多個組件(例如,模組或程式)可整合至單一組件中。在此種情形中,整合的組件仍可以與整合前由所述多個組件中的對應一者實行所述多個組件中的每一者的一或多種功能的方式相同或相似的方式實行所述一或多種功能。由所述模組、程式或另一組件實行的操作可依序地、並行地、重複地或探試性地進行,或者可以不同的次序執行或省略所述操作中的一或多者,或者可添加一或多個其他操作。
圖7示出根據實施例的儲存器系統700的圖。儲存器系統700包括主機702及儲存器裝置704。儘管繪示出一個主機及一個儲存器裝置,但儲存器系統700可包括多個主機及/或多個儲存器裝置。儲存器裝置704可為固體狀態裝置(solid state device,SSD)、通用快閃儲存器(universal flash storage,UFS)等。儲存器裝置704包括控制器706及連接至控制器706的儲存器媒體708。控制器706可為SSD控制器、UFS控制器等。儲存器媒體708可包括揮發性記憶體、非揮發性記憶體或兩者,且可包括一或多個快閃記憶體晶片(或其他儲存器媒體)。控制器706可包括一或多個處理器、一或多個糾錯電路、一或多個現場可程式化閘陣列(field programmable gate array,FPGA)、一或多個主機介面、一或多個快閃匯流排介面等、或者其組合。控制器706可被配置成有利於主機702與儲存器媒體708之間的資料/命令的傳送。主機702向儲存器裝置704發送將由控制器706接收並結合儲存器媒體708進行處理的資料/命令。如本文中所述,方法、過程及演算法可在儲存器裝置控制器(例如控制器706)上實施。仲裁器、命令提取器及命令處理器可在儲存器裝置704的控制器706中實施,且處理器及緩衝器可在主機702中實施。
儘管已在本揭露的詳細說明中闡述了本揭露的某些實施例,然而可在不背離本揭露的範圍的條件下以各種形式對本揭露進行修改。因此,本揭露的範圍不應僅基於所述實施例來確定,而是更確切而言應基於隨附申請專利範圍及其等效內容來確定。
102:fread()函數調用
104:檔案系統層
106、110、114、118、204、206、208、210、212、214、304、306、308、310、312、314、316、406、408、410、506、508、510、512、514、516:操作
108:儲存器區塊層
112:儲存器裝置驅動器層
116:快閃轉譯層
120:反及快閃媒體
202:fopen_OFT()函數調用
302:update_PBA_OFT()函數調用
402:主機裝置
404、504:fread_OFT()函數調用
502:SSD控制器
600:網路環境
601:電子裝置
602、604:電子裝置/外部電子裝置
608:伺服器/外部電子裝置
620:處理器
621:主處理器
623:輔助處理器
630:記憶體
632:揮發性記憶體
634:非揮發性記憶體
636:內部記憶體
638:外部記憶體
640:程式
642:作業系統(OS)
644:中間軟體
646:應用
650:輸入裝置
655:聲音輸出裝置
660:顯示裝置
670:音訊模組
676:感測器模組
677:介面
678:連接端子
679:觸覺模組
680:照相機模組
688:電源管理模組
689:電池
690:通訊模組
692:無線通訊模組
694:有線通訊模組
696:用戶辨識模組
697:天線模組
698:第一網路
699:第二網路
700:儲存器系統
702:主機
704:儲存器裝置
706:控制器
708:儲存器媒體
根據以下結合附圖的詳細說明,本揭露的某些實施例的上述及其他態樣、特徵及優點將變得更加顯而易見,在附圖中:
圖1是示出根據實施例的檔案讀取操作的流程圖。
圖2是示出根據實施例的主機裝置處的fopen_OFT()調用的流程圖。
圖3是示出根據實施例的用於在SSD控制器處對卸載檔案表(offloaded file table,OFT)的PBA行進行更新的方法的流程圖。
圖4是示出根據實施例的主機裝置處的fread_OFT()函數調用的流程圖。
圖5是示出根據實施例的SSD控制器處的fread_OFT()函數調用的流程圖。
圖6是示出根據實施例的網路環境中的電子裝置的方塊圖。
圖7是示出根據實施例的儲存器系統的圖。
102:fread()函數調用
104:檔案系統層
106、110、114、118:操作
108:儲存器區塊層
112:儲存器裝置驅動器層
116:快閃轉譯層
120:反及快閃媒體
Claims (20)
- 一種操作儲存器裝置的方法,包括: 在所述儲存器裝置的控制器處自主機裝置處的應用接收包括檔案的至少檔案指針的讀取命令; 在所述控制器處使用所述檔案指針自所述控制器處維護的表擷取與檔案資料相關聯的實體區塊位址(PBA)列表;以及 由所述控制器使用所述實體區塊位址列表自記憶體讀取所述檔案資料,且自所述控制器將所述檔案資料提供至所述主機裝置處的所述應用。
- 如請求項1所述的方法,其中所述讀取命令包括快速非揮發性記憶體(NVMe)命令。
- 如請求項1所述的方法,其中所述表包括卸載檔案表(OFT),所述卸載檔案表包括檔案指針行、邏輯區塊位址(LBA)列表行、實體區塊位址列表行及檔案讀取偏置行中的至少一者。
- 如請求項3所述的方法,其中所述檔案資料是使用所述檔案讀取偏置行而被提供至所述應用。
- 如請求項3所述的方法,其中所述讀取命令更包括欲自所述記憶體讀取的所述檔案資料的量及檔案讀取偏置。
- 如請求項5所述的方法,其中所述檔案資料是使用所述讀取命令的所述檔案讀取偏置而被提供至所述應用,且所述檔案讀取偏置行是使用所述讀取命令的所述檔案讀取偏置來更新。
- 如請求項3所述的方法,更包括: 在所述控制器處自所述主機裝置接收用於所述卸載檔案表的表項的經更新檔案指針-邏輯區塊位址列表映射; 由所述控制器基於所述經更新檔案指針-邏輯區塊位址列表映射自快閃轉譯層(FTL)表擷取實體區塊位址列表資訊;以及 由所述控制器使用所擷取的所述實體區塊位址列表資訊來對所述卸載檔案表的所述表項進行更新。
- 如請求項3所述的方法,更包括: 由所述控制器對由於垃圾收集過程引起的所述卸載檔案表的表項中的實體區塊位址-邏輯區塊位址映射的改變進行偵測; 自所述卸載檔案表的所述表項擷取邏輯區塊位址列表資訊; 由所述控制器基於所擷取的所述邏輯區塊位址列表資訊自快閃轉譯層表擷取實體區塊位址列表資訊;以及 由所述控制器使用所擷取的所述實體區塊位址列表資訊來對所述卸載檔案表的所述表項進行更新。
- 一種儲存器裝置,包括: 控制器;以及 儲存器媒體, 其中所述控制器被配置成: 自主機裝置處的應用接收包括檔案的至少檔案指針的讀取命令; 使用所述檔案指針自所述控制器處維護的表擷取與檔案資料相關聯的實體區塊位址(PBA)列表;以及 使用所述實體區塊位址列表自所述儲存器媒體讀取所述檔案資料且將所述檔案資料提供至所述主機裝置處的所述應用。
- 如請求項9所述的儲存器裝置,其中所述讀取命令是快速非揮發性記憶體(NVMe)命令。
- 如請求項9所述的儲存器裝置,其中所述表是卸載檔案表(OFT),所述卸載檔案表包括檔案指針行、邏輯區塊位址(LBA)列表行、實體區塊位址列表行及檔案讀取偏置行中的至少一者。
- 如請求項11所述的儲存器裝置,其中所述檔案資料是使用所述檔案讀取偏置行而被提供至所述應用。
- 如請求項11所述的儲存器裝置,其中所述讀取命令更包括欲自所述儲存器媒體讀取的所述檔案資料的量及檔案讀取偏置。
- 如請求項13所述的儲存器裝置,其中所述檔案資料是使用所述讀取命令的所述檔案讀取偏置而被提供至所述應用,且所述檔案讀取偏置行是使用所述讀取命令的所述檔案讀取偏置來更新。
- 如請求項11所述的儲存器裝置,其中所述控制器更被配置成: 自所述主機裝置接收用於所述卸載檔案表的表項的經更新檔案指針-邏輯區塊位址列表映射; 基於所述經更新檔案指針-邏輯區塊位址列表映射自快閃轉譯層(FTL)表擷取實體區塊位址列表資訊;以及 使用所擷取的所述實體區塊位址列表資訊來對所述卸載檔案表的所述表項進行更新。
- 如請求項11所述的儲存器裝置,更包括: 對由於垃圾收集過程引起的所述卸載檔案表的表項中的實體區塊位址-邏輯區塊位址映射的改變進行偵測; 自所述卸載檔案表的所述表項擷取邏輯區塊位址列表資訊; 基於所擷取的所述邏輯區塊位址列表資訊自快閃轉譯層表擷取實體區塊位址列表資訊;以及 使用所擷取的所述實體區塊位址列表資訊來對所述卸載檔案表的所述表項進行更新。
- 一種操作主機裝置的方法,包括: 自所述主機裝置處的應用向儲存器裝置的控制器發送包括檔案的至少檔案指針的讀取命令,所述檔案包括所述應用的檔案資料;以及 在所述應用處自所述控制器接收由所述控制器使用在所述控制器處維護的表擷取的檔案資料,所述表將檔案指針與檔案資料的實體區塊位址(PBA)列表相關聯。
- 如請求項17所述的方法,其中所述讀取命令是快速非揮發性記憶體(NVMe)命令,所述快速非揮發性記憶體命令更包括欲自記憶體讀取的檔案資料的量及檔案讀取偏置。
- 如請求項17所述的方法,其中所述表是卸載檔案表(OFT),所述卸載檔案表包括檔案指針行、邏輯區塊位址(LBA)列表行、實體區塊位址列表行及檔案讀取偏置行。
- 如請求項19所述的方法,更包括: 獲得給定檔案的給定檔案指針; 使用檔案系統及儲存器區塊層獲得與所述給定檔案指針對應的邏輯區塊位址列表;以及 將所述給定檔案指針與所述邏輯區塊位址列表的映射發送至所述控制器,以對所述控制器處的所述卸載檔案表的表項進行更新。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163222694P | 2021-07-16 | 2021-07-16 | |
US63/222,694 | 2021-07-16 | ||
US17/504,006 US20230024420A1 (en) | 2021-07-16 | 2021-10-18 | Methods and devices for file read latency reduction |
US17/504,006 | 2021-10-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202311968A true TW202311968A (zh) | 2023-03-16 |
Family
ID=82608717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111126577A TW202311968A (zh) | 2021-07-16 | 2022-07-15 | 儲存器裝置、操作儲存器裝置的方法以及操作主機裝置的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230024420A1 (zh) |
EP (1) | EP4120059A1 (zh) |
KR (1) | KR20230012992A (zh) |
CN (1) | CN115617262A (zh) |
TW (1) | TW202311968A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953919B2 (en) * | 2007-12-21 | 2011-05-31 | Spansion Llc | Physical block addressing of electronic memory devices |
US8452930B2 (en) * | 2009-03-27 | 2013-05-28 | Hitachi, Ltd. | Methods and apparatus for backup and restore of thin provisioning volume |
US9678966B2 (en) * | 2013-11-08 | 2017-06-13 | Samsung Electronics Co., Ltd. | Swat command and API for atomic swap and trim of LBAs |
US9720596B1 (en) * | 2014-12-19 | 2017-08-01 | EMC IP Holding Company LLC | Coalescing writes for improved storage utilization |
JP5976980B1 (ja) * | 2015-08-25 | 2016-08-24 | 株式会社東芝 | 階層化ストレージシステム、階層化ストレージ装置を利用するコンピュータ、及びファイルへのアクセスのカウントを補正する方法 |
US10402112B1 (en) * | 2018-02-14 | 2019-09-03 | Alibaba Group Holding Limited | Method and system for chunk-wide data organization and placement with real-time calculation |
US11175850B2 (en) * | 2019-01-03 | 2021-11-16 | Toshiba Memory Corporation | Selective erasure of data in a SSD |
KR20210068699A (ko) * | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
-
2021
- 2021-10-18 US US17/504,006 patent/US20230024420A1/en active Pending
-
2022
- 2022-07-13 KR KR1020220086562A patent/KR20230012992A/ko unknown
- 2022-07-15 TW TW111126577A patent/TW202311968A/zh unknown
- 2022-07-15 CN CN202210836000.XA patent/CN115617262A/zh active Pending
- 2022-07-15 EP EP22185183.5A patent/EP4120059A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4120059A1 (en) | 2023-01-18 |
KR20230012992A (ko) | 2023-01-26 |
CN115617262A (zh) | 2023-01-17 |
US20230024420A1 (en) | 2023-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3699759B1 (en) | Electronic device and method for managing database | |
US11656999B2 (en) | Electronic device and method for determining and managing a partial region of mapping information in volatile memory | |
EP4296841A1 (en) | Method and system for solid state drive (ssd)-based redundant array of independent disks (raid) | |
TW202344977A (zh) | 記憶體裝置及其方法 | |
US11379458B2 (en) | Electronic device and data management method thereof | |
EP4383059A1 (en) | Data storage method and device for data storage | |
CN111666224B (zh) | 电子装置和用于利用电子装置的存储器空间的方法 | |
EP4325363A1 (en) | Device for managing cache corruption, and operation method thereof | |
TW202311968A (zh) | 儲存器裝置、操作儲存器裝置的方法以及操作主機裝置的方法 | |
US11341095B2 (en) | Electronic device for searching for file information stored in external device and operation method thereof | |
KR20210101693A (ko) | 스토리지를 포함하는 전자 장치 및 이를 이용한 스토리지로 파일 시스템의 디스카드 커맨드 전달 방법 | |
CN110442569B (zh) | 在键值固态设备中进行数据分析的装置和方法 | |
US20240160429A1 (en) | Firmware upgrade method of network storage and network storage | |
CN117271396A (zh) | 用于基于固态驱动器的独立磁盘冗余阵列的方法和系统 | |
US20240134801A1 (en) | Methods and system for efficient access to solid state drive | |
US11892951B2 (en) | Key packing for flash key value store operations | |
US20230141936A1 (en) | Secure processor, operating method thereof, and storage device including same | |
US11868401B2 (en) | Electronic device and method for acquiring size of file or directory stored in file system | |
US20230084539A1 (en) | Computational storage device and storage system including the computational storage device | |
US20230333858A1 (en) | Methods and apparatus to boot from block devices | |
EP4290380A1 (en) | Method and system for accelerating application performance in solid state drive | |
CN117909966A (zh) | 计算存储装置以及在计算存储装置中检测攻击者的方法 | |
CN117194004A (zh) | 存储器装置及其操作方法 | |
CN117908766A (zh) | 用于高效访问固态驱动器的方法和系统 | |
KR20240074597A (ko) | 전자 장치 및 전자 장치의 파일 시스템 운영 방법 |