TW202321921A - 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 - Google Patents
更新主機與閃存位址對照表的方法及電腦程式產品及裝置 Download PDFInfo
- Publication number
- TW202321921A TW202321921A TW110143439A TW110143439A TW202321921A TW 202321921 A TW202321921 A TW 202321921A TW 110143439 A TW110143439 A TW 110143439A TW 110143439 A TW110143439 A TW 110143439A TW 202321921 A TW202321921 A TW 202321921A
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- flash memory
- address
- sub
- address comparison
- Prior art date
Links
Images
Landscapes
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
本發明涉及一種更新主機與閃存位址對照表的方法、電腦程式產品和裝置。該方法包含:在隨機存取記憶體中配置空間給第一主機與閃存位址對照子表,以及給用以更新閃存模組中的第二主機與閃存位址對照子表的中間資訊;在執行主機寫入命令以寫入資料到所述閃存模組時或者執行主機丟棄命令以丟棄所述閃存模組中的資料時,更新所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表和所述中間資訊;以及在表格更新程序中,將所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表寫入所述閃存模組中的系統塊,依據所述隨機存取記憶體中暫存的所述中間資訊更新所述第二主機與閃存位址對照子表並且將更新後的第二主機與閃存位址對照子表寫入所述閃存模組中的所述系統塊。
Description
本發明涉及儲存裝置,尤指一種更新主機與閃存位址對照表的方法、產品電腦程式及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
為了提昇閃存模組的資料寫入及讀取效能,閃存控制器會以多個通道並行地執行資料寫入及讀取。為了達成並行處理的目的,一段連續性的資料會分散地儲存到多個通道所連接的閃存單元,並使用主機與閃存位址對照表(Host-to-Flash Address Mapping Table,簡稱H2F表)紀錄使用者資料的邏輯位址(由主機端管理)與實體位址(由閃存控制器管理)間的對應關係。然而,H2F表的更新也影響到整體系統的效能。因此,本發明提出一種更新主機與閃存位址對照表的方法、產品電腦程式及裝置,用於提升系統整體效能。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種更新主機與閃存位址對照表的方法,由處理單元執行,包含:在隨機存取記憶體中配置空間給第一主機與閃存位址對照子表,以及給用以更新閃存模組中的第二主機與閃存位址對照子表的中間資訊;在執行主機寫入命令以寫入資料到所述閃存模組時或者執行主機丟棄命令以丟棄所述閃存模組中的資料時,更新所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表和所述中間資訊;以及在表格更新程序中,將所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表寫入所述閃存模組中的系統塊,依據所述隨機存取記憶體中暫存的所述中間資訊更新所述第二主機與閃存位址對照子表並且將更新後的第二主機與閃存位址對照子表寫入所述閃存模組中的所述系統塊。
本說明書另涉及一種電腦程式產品,包含程式碼。當處理單元執行所述程式碼時,實施如上所述的更新主機與閃存位址對照表的方法。
本說明書更另涉及一種更新主機與閃存位址對照表的裝置,包含:隨機存取記憶體;閃存介面;和處理單元。閃存介面耦接閃存模組,並處理單元耦接隨機存取記憶體和閃存介面。處理單元用於在所述隨機存取記憶體中配置空間給第一主機與閃存位址對照子表,以及給用以更新所述閃存模組中的第二主機與閃存位址對照子表的中間資訊;在執行主機寫入命令以寫入資料到所述閃存模組時或者執行主機丟棄命令以丟棄所述閃存模組中的資料時,更新所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表和所述中間資訊;以及在表格更新程序中,將所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表寫入所述閃存模組中的系統塊,依據所述隨機存取記憶體中暫存的所述中間資訊更新所述第二主機與閃存位址對照子表並且將更新後的第二主機與閃存位址對照子表寫入所述閃存模組中的所述系統塊。
上述實施例的優點之一,通過隨機寫入條件的檢查,可避免因為大量的主機與閃存位址對照子表更新而延遲後續主機讀命令和/或主機寫命令的執行。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
參考圖1。電子裝置10包含主機端(Host Side)110、閃存控制器130及閃存模組150,並且閃存控制器130及閃存模組150可合稱為裝置端(Device Side)。電子裝置10可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品之中。主機端110與閃存控制器130的主機介面(Host Interface)137可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)、通用快閃記憶儲存(Universal Flash Storage,UFS)、嵌入式多媒體卡(Embedded Multi-Media Card,eMMC)等通訊協定彼此溝通。閃存控制器130的閃存介面(Flash Interface)139與閃存模組150可以雙倍資料率(Double Data Rate,DDR)通訊協定彼此溝通,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他通訊協定。閃存控制器130包含處理單元134,可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功能。處理單元134通過主機介面131接收主機命令,例如讀取命令(Read Command)、寫入命令(Write Command)、丟棄命令(Discard Command)、抹除命令(Erase Command)等,排程並執行這些命令。閃存控制器130另包含隨機存取記憶體(Random Access Memory, RAM)136,可實施為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)或上述兩者的結合,用於配置空間作為資料緩衝區,儲存從主機端110讀取並即將寫入閃存模組150的使用者資料(也可稱為主機資料),以及從閃存模組150讀取並即將輸出給主機端110的使用者資料。隨機存取記憶體136另可儲存執行過程中需要的資料,例如,變數、資料表、主機與閃存位址對照表(Host-to-Flash Address Mapping Table,簡稱H2F表)、閃存與主機位址對照表(Flash-to-Host Address Mapping Table,簡稱F2H表)等。閃存介面139包含NAND閃存控制器(NAND Flash Controller,NFC),提供存取閃存模組150時需要的功能,例如命令序列器(Command Sequencer)、低密度奇偶校驗(Low Density Parity Check,LDPC)等。
閃存控制器130中可配置匯流排架構(Bus Architecture)132,用於讓元件之間彼此耦接以傳遞資料、位址、控制訊號等,這些元件包含主機介面131、處理單元134、RAM 136、直接記憶體存取(Direct Memory Access,DMA)控制器138、閃存介面139等。於一些實施例中,主機介面131、處理單元134、RAM 136、DMA控制器138與閃存介面139可通過單一匯流排彼此耦接。於另一些實施例中,閃存控制器130中可配置高速匯流排,用於讓處理單元134、DMA控制器138與RAM 136彼此耦接,並且配置低速匯流排,用於讓處理單元134、DMA控制器138、主機介面131與閃存介面139彼此耦接。DMA控制器138可依據處理單元134的指令,通過匯流排架構132在元件間搬移資料,例如,將主機介面131或閃存介面139中特定資料緩存器(Data Buffer)的資料搬到RAM 136中的特定位址,將RAM 136中特定位址的資料搬到將主機介面131或閃存介面139中的特定資料緩存器等。
匯流排包含並行的物理線,連接閃存控制器130中兩個以上的組件。匯流排是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當處理單元134想要讀取RAM 136的特定位址上的資料時,處理單元134在位址線上傳送此位址給RAM 136。接著,此位址的資料會在資料線上回覆給處理單元134。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。
閃存模組150提供大量的儲存空間,通常是數百個千兆位元組(Gigabytes,GB),甚至是數個兆兆位元組(Terabytes,TB),用於儲存大量的使用者資料,例如高解析度圖片、影片等。閃存模組150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可包含單層式單元(Single Level Cells,SLCs)、多層式單元(Multiple Level Cells,MLCs)三層式單元(Triple Level Cells,TLCs)、四層式單元(Quad-Level Cells,QLCs)或上述的任意組合。處理單元134通過閃存介面139寫入使用者資料到閃存模組150中的指定位址(目的位址),以及從閃存模組150中的指定位址(來源位址)讀取使用者資料。閃存介面139使用數個電子訊號來協調閃存控制器130與閃存模組150間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(Clock Signal)與控制訊號(Control Signal)。資料線可用於傳遞命令、位址、讀出及寫入的資料;控制訊號線可用於傳遞晶片致能(Chip Enable,CE)、位址提取致能(Address Latch Enable,ALE)、命令提取致能(Command Latch Enable,CLE)、寫入致能(Write Enable,WE)等控制訊號。
參考圖2,閃存模組150中的介面151可包含四個輸出入通道(I/O channels,以下簡稱通道)CH#0至CH#3,每一個通道連接四個NAND閃存單元,例如,通道CH#0連接NAND閃存單元153#0、153#4、153#8及153#12。每個NAND閃存單元可封裝為獨立的芯片(die)。閃存介面139可通過介面151發出致能訊號CE#0至CE#3中的一個來致能NAND閃存單元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接著以並行的方式從致能的NAND閃存單元讀取使用者資料,或者寫入使用者資料至致能的NAND閃存單元。
每個NAND閃存單元可包含多個資料平面(Data Planes),每個資料平面可包含多個實體塊(Physical Blocks),並且每個實體塊可包含多個實體頁面(Physical Pages)。參考圖3的實施例,NAND閃存單元153#0包含兩個資料平面310及330。資料平面310包含實體塊310#0至310#m,且資料平面330包含實體塊330#0至330#m。每個實體塊包含n+1個實體頁面。NAND閃存單元、實體塊和實體頁面可分別使用邏輯單元號(Logical Block Number,LUN)、塊編號(Block Number)和頁面編號(Page Number)識別,而以上編號的任意組合可稱為閃存模組150的實體位址。
每個實體塊依其功能可區分為資料塊(Data Block)、當前塊(Current block)或系統塊(System block)。處理單元134可為每個NAND閃存單元中每個平面選擇出一個空的實體塊做為當前塊,用於預備寫入從主機端110接收的使用者資料。為了提昇資料寫入的效率,主機端110提供的使用者資料可並行地寫入多個NAND閃存單元中多個平面的多個當前塊中的特定頁面。處理單元134可在RAM 136中維護每個當前塊的F2H表,包含多筆紀錄,依頁面編號的順序儲存當前塊中每個頁面的使用者資料關聯於哪的邏輯位址的資訊。邏輯位址可使用邏輯區塊位址(Logical Block Address,LBA)、主頁面編號(Host Page Number)或其他方式表示,由主機端110管理。舉例來說,每個邏輯區塊位址關聯於512B大小的使用者資料,而每個主頁面編號關聯於4KB大小的使用者資料。一個當前塊中的所有頁面都儲存滿使用者資料之後,或者一個當前塊中的剩餘頁面都填入虛假值之後,處理單元134可驅動閃存介面139將RAM 136中的相應F2H表寫入當前塊的指定頁面(例如最後一個頁面),或者其他指定實體塊中的空頁面。當相應F2H表已經寫入閃存模組150後,當前塊就改變為資料塊,換句話說,其中儲存的使用者資料不會再改變。接著,處理單元134可選擇出另一個空的實體塊作為新的當前塊。此外,處理單元134可將特定實體塊設置為系統塊,用於儲存管理資訊,例如閃存識別碼(Flash Identifier,ID)、壞塊表(Bad Block Table)、壞行表(Bad Column Table)、H2F表等。F2H表可另稱為實體與邏輯位址對照表(Physical-to-Logical Address Mapping Table,簡稱為P2L表),而H2F表可另稱為邏輯與實體位址對照表(Logical-to-Physical Address Mapping Table,簡稱為L2P表)。
除了將F2H表寫入閃存模組150中的相應實體頁面外,處理單元134還需要依據當前塊的F2H表的內容更新H2F表,用於將來執行主機讀命令時能從H2F表快速查找出關聯於特定邏輯位址的使用者資料實際儲存於哪個實體位址的資訊。H2F表包含多筆紀錄,依邏輯位址的順序儲存每個邏輯位址的使用者資料實際儲存在哪個實體位址的資訊。然而,由於RAM 136無法提供足夠空間儲存整個H2F表以供處理單元134將來於資料讀取操作時快速查找,H2F表可切成多個H2F子表,並儲存於閃存模組150,使得將來於資料讀取操作時只要從閃存模組150讀取相應的H2F子表至RAM 136。參考圖4,整個H2F表可切成H2F子表430#0~430#15。處理單元134更維護高階對照表410,包含多個紀錄,依邏輯位址的順序儲存每段邏輯位址區段關聯的H2F子表的實體位址資訊。例如,第0個至第4095個主頁面的關聯H2F子表430#0儲存於特定LUN的特定實體塊中(字母”Z”可代表LUN和實體塊的編號)的第0個實體頁面,第4096個至第8191個主頁面的關聯H2F子表430#1儲存於特定LUN的特定實體塊中的第1個實體頁面,依此類推。雖然圖4中只包含16個H2F子表,但是所屬技術領域的技術人員可因應閃存模組150的容量,設置更多的H2F子表,本發明並不因此侷限。
每個H2F子表所需的空間可以為4KB、8KB、16KB、32KB等。參考圖5。舉例來說,H2F子表430#0依照邏輯位址的順序儲存相應於每一邏輯位置的實體位置資訊。邏輯位置可以主頁面編號表示,每一個主頁面編號對應到一個固定大小的實體儲存空間,例如4KB。所屬技術領域人員也使用LBA來表示邏輯位置,本發明並不因此侷限。舉例來說,H2F子表430#0依序儲存從H#0至H#4095的實體位址資訊。實體位址資訊530可以四個位元組表示:前二個位元組530-0紀錄實體塊編號(Physical Block Number);後二個位元組530-1紀錄實體頁面編號(Physical Page Number)和實體頁面中的區段編號。舉例來說,相應於主頁面H#2的實體位址資訊530可指向實體塊310#1中的實體頁面510。位元組530-0紀錄實體塊310#1的編號,位元組530-1紀錄實體頁面和其中的區段510的編號。
在執行主機寫入命令來把使用者資料寫入到閃存模組139後,或者執行主機丟棄命令(Host Discard Command)將閃存模組139中儲存的特定邏輯位址的資料捨棄後,相應的H2F子表需要隨之更新以讓之後的資料讀取操作能夠有效率的執行。不同於主機抹除命令的執行,處理單元134在執行主機丟棄命令時不需要將原來儲存特定邏輯位址的資料的記憶單元進行抹除操作。在一些系統架構中, RAM 136可配置足夠的空間來暫存所有的H2F子表。每當處理單元134驅動閃存介面139寫入使用者資料後,或者當閃存模組139中儲存的特定邏輯位址的資料被捨棄後,可更新相應的H2F子表的內容以反映之前的寫入或者捨棄操作。每隔一段時間或者在預設條件滿足時,處理單元134驅動閃存介面139將RAM 136中所有的H2F子表寫入閃存模組150的指定系統塊。然而,在另一些系統架構中, RAM 136無法配置足夠的空間來暫存所有的H2F子表。於是,處理單元134只能在RAM 136中暫存需要空間少很多的F2H表。每當一個當前塊中的所有頁面都儲存滿使用者資料之後,或者一個當前塊中的剩餘頁面都填入虛假值之後,處理單元134才依據當前塊的F2H表的內容更新相應的H2F表。每當預設數量的主機捨棄命令被執行後,處理單元134更新相應的H2F表來反映之前的捨棄操作。由於之前執行過的主機寫入命令和主機捨棄命令可能牽涉到多個H2F子表,詳細來說,處理單元134先搜尋高階對照表410的內容來找出關聯H2F子表的實體位址,並驅動閃存介面139從閃存模組150的這些實體位址讀取關聯H2F子表並儲存於RAM 136。接著,處理單元134依據當前塊的F2H表的內容和之前捨棄的邏輯位址更新RAM 136中H2F子表的關聯紀錄的實體位址資訊,並驅動閃存介面139寫入更新後的H2F子表到閃存模組150的指定系統塊。然而,上述實施方式在主機端110進行隨機寫入(Random Write)時,由於需要更新的H2F子表太多而延遲了後續主機讀命令和/或主機寫命令的執行。更糟的是,後續主機寫命令還可能因為等待H2F子表更新的時間過長而逾時,造成主機端110還需要花費時間和運算資源重新產生並傳送主機寫命令給閃存控制器130。
為了解決如上所述實施方式的問題,本發明提出一種更新主機與閃存位址對照表的方法、電腦程式產品和裝置,在RAM 136中配置空間給數個H2F子表,以及給用以更新閃存模組150中的其他H2F子表的中間資訊。在一些實施例中,系統架構可配置足夠讓RAM 136暫存當前塊的F2H表和一部分的H2F子表的空間。在另一些實施例中,系統架構可配置足夠讓RAM 136暫存丟棄佇列和一部分的H2F子表的空間。在更另一些實施例中,系統架構可配置足夠讓RAM 136暫存當前塊的F2H表、丟棄佇列和一部分的H2F子表的空間。以上所述暫存的H2F子表的數量視RAM 136中配置空間的大小而定。在執行主機寫入命令以寫入資料到閃存模組150時或者執行主機丟棄命令以丟棄閃存模組150中的資料時,更新RAM 136中暫存的H2F子表和中間資訊。在表格更新程序(Table Update Procedure)中,將RAM 136中暫存的H2F子表(可稱為第一H2F子表)寫入閃存模組150中的指定系統塊,依據RAM 136中暫存的中間資訊更新閃存模組150中的H2F子表(可稱為第二H2F子表)並且將更新後的H2F子表寫入閃存模組150中的指定系統塊。
本發明實施例提出一種主機寫入命令的執行方法,由處理單元134載入和執行相關韌體或軟體指令時實施。本方法在每次執行完主機寫入命令後,更新RAM 136中暫存的H2F子表和當前塊的F2H,用於儲存最新的邏輯與實體位址之間的對照資訊以及H2F子表的更新狀態。參考圖6,詳細步驟說明如下:
步驟S610:執行第一個(下一個)主機寫入命令。處理單元134可根據主機寫入命令的參數(包含邏輯位址、長度等)驅動閃存介面139寫入主機端110的使用者資料至閃存模組150中當前塊的指定頁面。
步驟S620:更新RAM 136中暫存的當前塊的F2H表,用以儲存當前塊中的寫入頁面對應於邏輯位址的對照資訊。
步驟S630:判斷這些邏輯位址所關聯的H2F子表是否暫存在RAM 136。如果是,則流程繼續步驟S640的處理;否則,流程繼續步驟S660的處理。
步驟S640:更新RAM 136中暫存的H2F子表,用於儲存這些邏輯位址對應於哪些實體位址的對照資訊。
步驟S650:將RAM 136中暫存的F2H表中的相應紀錄的更新旗標(Update Flag)設為”1”。
步驟S660:將RAM 136中暫存的F2H表中的相應紀錄的更新旗標設為”0”。
以下舉些實例說明,當前塊的F2H表中的每個紀錄除了儲存邏輯位址的資訊外,還儲存更新旗標,用於指出這筆紀錄的對照資訊是否已經更新到RAM 136中暫存的H2F子表,“1”代表已更新,“0”代表未更新。表1描述當前塊的F2H表的範例內容:
表1
第一至第三筆紀錄指出當前塊的頁面P#0至P#2分別儲存了邏輯位址LBA#64~95(也就是主頁面H#2)、LBA#96~127(也就是主頁面H#3)和LBA#128~159(也就是主頁面H#3)的使用者資料,並且它們的對照資訊已經更新到RAM 136中暫存的H2F子表。第四至第六筆紀錄指出當前塊的頁面P#3至P#5分別儲存了邏輯位址LBA#192000~192031(也就是主頁面H#6000)、LBA#192032~192063(也就是主頁面H#6001)和LBA#192064~192095(也就是主頁面H#6002)的使用者資料,並且它們的對照資訊不能更新到RAM 136中暫存的H2F子表。第四至第六筆紀錄可稱為用於更新閃存模組150中的相應H2F子表的中間資訊。換句話說,關聯於邏輯位址LBA#192000~192031、LBA#192032~192063和LBA#192064~192095的H2F子表430#1尚未從閃存模組150讀出,需要進一步執行表格更新程序。
實體頁面編號 | 邏輯位址 | 更新旗標 |
P#0 | LBA#64~95 | 1 |
P#1 | LBA#96~127 | 1 |
P#2 | LBA#128~159 | 1 |
P#3 | LBA#32000~32031 | 0 |
P#4 | LBA#32032~32063 | 0 |
P#5 | LBA#32064~32095 | 0 |
本發明實施例提出一種主機丟棄命令的執行方法,由處理單元134載入和執行相關韌體或軟體指令時實施。本方法在每次執行完主機丟棄命令後,更新RAM 136中暫存的H2F子表和丟棄佇列,用於儲存最新的邏輯與實體位址之間的對照資訊以及H2F子表的更新狀態。參考圖7,詳細步驟說明如下:
步驟S710:執行第一個(下一個)主機丟棄命令。處理單元134可提取主機寫入命令的參數(包含邏輯位址、長度等)。
步驟S720:判斷這些邏輯位址所關聯的H2F子表是否暫存在RAM 136。如果是,則流程繼續步驟S730的處理;否則,流程繼續步驟S740的處理。
步驟S730:更新RAM 136中暫存的H2F子表,用於刪除對應於這些邏輯位址的實體位址的對照資訊。假設主機丟棄命令指示丟棄LBA#64到LBA#127的使用者資料,處理單元134可將相應H2F子表中關聯於LBA#64到LBA#127(也就是主頁面H#2到主頁面H#3)的實體位址欄位填成虛假值(Dummy Values),代表LBA#64到127的使用者資料不存在於閃存模組150中。
步驟S740:將主機丟棄命令指示的邏輯位址推入丟棄佇列,用於表示這些邏輯位址的捨棄資訊並沒有更新到相應的H2F子表中。
以下舉些實例說明,假設主機丟棄命令指示丟棄邏輯位址LBA#192032~192095(也就是主頁面H#6001至H#6002)的使用者資料,而邏輯位址LBA#192032~192095關聯的H2F子表並沒有暫存在RAM 136。由於每個實體頁面可以儲存32個LBA的使用者資料,因此邏輯位址LBA#192032~192095分成邏輯位址LBA#192032~192063和LBA#192064~192095,並且將分割後的邏輯位址推入到丟棄佇列中。表2描述丟棄佇列的範例內容:
表2
丟棄佇列的內容可稱為用於更新閃存模組150中的相應H2F子表的中間資訊。
◆當前塊的F2H表或者丟棄佇列的上位意義◆
節點編號 | 邏輯位址 |
N#0 | LBA#192032~192063 |
N#1 | LBA#192064~192095 |
總的來說,當前塊的F2H表或者丟棄佇列儲存了特定邏輯位址所關聯的H2F子表是否需要執行表格更新程序的資訊。例如,當前塊的F2H表中的每個具有更新旗標為“0”的紀錄儲存了特定邏輯位址所關聯的H2F子表需要執行表格更新程序的資訊。丟棄佇列中的每個節點儲存了特定邏輯位址所關聯的H2F子表需要執行表格更新程序的資訊。
本發明實施例提出一種表格更新程序的執行方法,由處理單元134載入和執行相關韌體或軟體指令時實施。每當在當前塊寫滿或者在預設條件滿足時,執行表格更新程序,用於將RAM 136中暫存的H2F子表寫入閃存模組150,以及根據F2H表和/或丟棄佇列中指示的特定邏輯位址的H2F表的未更新資訊,更新閃存模組150中相應的H2F子表。參考圖8,詳細步驟說明如下:
步驟S810:將RAM 136中暫存的H2F子表寫入閃存模組150中的指定系統塊。假設RAM 136中暫存了H2F子表430#0:處理單元134驅動閃存介面139將RAM 136中暫存的H2F子表430#0寫入閃存模組150中的指定系統塊。
步驟S820:依據RAM 136中暫存的當前塊的F2H表和丟棄佇列的內容從閃存模組150讀取未更新邏輯位址所關聯的H2F子表並儲存在RAM 136。接續表1所述的當前塊的F2H表的範例和表2所述的丟棄佇列的範例,未更新邏輯位址為LBA#192000至LBA#192031,並且其所關聯的H2F子表為430#1。於是,處理單元134驅動閃存介面139從指定的系統塊讀取H2F子表430#1,並且儲存至RAM 136。
步驟S830:依據RAM 136中暫存的當前塊的F2H表和丟棄佇列的內容更新RAM 136中新讀取的H2F子表(例如,H2F子表430#1)。
步驟S840:將RAM 136中更新後的H2F子表寫入閃存模組150中的指定系統塊。
如上所述的方法可適用於RAM 136無法配置空間給所有H2F子表的系統架構中,並且通過在RAM 136中預存一部分的H2F子表可以節省表格更新程序的執行時間。
為了讓讀者更容易理解,雖然如上所述的實施例以一個當前塊作為例子說明操作細節,所屬技術領域人員在適當修改後可應用到能夠並行寫入的多個當前塊的閃存介面,本發明並不因此受限。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如儲存裝置中的韌體轉換層(Firmware Translation Layer,FTL)、特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1、2中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6至圖8的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
132:匯流排
134:處理單元
136:隨機存取記憶體
138:直接記憶體存取控制器
139:閃存介面
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
310,330:資料平面
310#0~310#m,330#0~330#m:實體塊
P#0~P#n:實體頁面
410:高階對照表
430#0~430#15:H2F子表
510:實體頁面中的區段
530:實體位址資訊
530-0:實體塊編號
530-1:實體頁面編號和其中的區段編號
S610~S660:方法步驟
S710~S740:方法步驟
S810~S840:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的NAND閃存單元的示意圖。
圖4為依據本發明實施例的高階對照表和主機與閃存位址對照子表之間的關聯示意圖。
圖5為依據本發明實施例的主機與閃存位址對照子表和實體頁面之間的關聯示意圖。
圖6為依據本發明實施例的執行主機寫入命令的方法流程圖。
圖7為依據本發明實施例的執行主機丟棄命令的方法流程圖。
圖8為依據本發明實施例的執行表格更新程序的方法流程圖。
S810~S840:方法步驟
Claims (15)
- 一種更新主機與閃存位址對照表的方法,由處理單元執行,包含: 在隨機存取記憶體中配置空間給第一主機與閃存位址對照子表,以及給用以更新閃存模組中的第二主機與閃存位址對照子表的中間資訊; 在執行主機寫入命令以寫入資料到所述閃存模組時或者執行主機丟棄命令以丟棄所述閃存模組中的資料時,更新所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表和所述中間資訊;以及 在表格更新程序中,將所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表寫入所述閃存模組中的系統塊,依據所述隨機存取記憶體中暫存的所述中間資訊更新所述第二主機與閃存位址對照子表並且將更新後的第二主機與閃存位址對照子表寫入所述閃存模組中的所述系統塊。
- 如請求項1所述的更新主機與閃存位址對照表的方法,其中,所述隨機存取記憶體無法配置足夠空間來暫存所有的主機與閃存位址對照子表。
- 如請求項1所述的更新主機與閃存位址對照表的方法,其中,所述中間資訊儲存在當前塊的閃存與主機位址對照表之中,所述方法包含: 在執行所述主機寫入命令時,更新所述隨機存取記憶體中暫存的所述當前塊的所述閃存與主機位址對照表,用以儲存所述當前塊中的多個寫入頁面對應於多個邏輯位址的對照資訊,其中,所述多個邏輯位址包含關聯於所述第一主機與閃存位址對照子表的第一邏輯位址和關聯於所述第二主機與閃存位址對照子表的第二邏輯位址; 針對所述第一邏輯位址,更新所述第一主機與閃存位址對照子表以儲存所述第一邏輯位址對應於哪個實體位址的對照資訊,以及將所述當前塊的所述閃存與主機位址對照表中的相應更新旗標設為第一值;以及 針對所述第二邏輯位址,將所述當前塊的所述閃存與主機位址對照表中的相應更新旗標設為第二值。
- 如請求項3所述的更新主機與閃存位址對照表的方法,其中,所述當前塊的所述閃存與主機位址對照表中的更新旗標用以指出相應對照資訊是否已經更新到所述第一主機與閃存位址對照子表。
- 如請求項3所述的更新主機與閃存位址對照表的方法,其中,包含: 在所述表格更新程序中,依據所述閃存與主機位址對照表中的每個設為所述第二值的所述更新旗標所關聯的對照資訊更新所述第二主機與閃存位址對照子表。
- 如請求項1所述的更新主機與閃存位址對照表的方法,其中,所述中間資訊儲存在丟棄佇列之中,所述方法包含: 在執行所述主機丟棄命令時,判斷所述主機丟棄命令指出的邏輯位址是否關聯於所述第一主機與閃存位址對照子表; 當所述主機丟棄命令指出的邏輯位址關聯於所述第一主機與閃存位址對照子表時,更新所述第一主機與閃存位址對照子表以儲存所述邏輯位址的使用者資料已經丟棄的資訊;以及 當所述主機丟棄命令指出的邏輯位址關聯於所述第二主機與閃存位址對照子表時,將所述邏輯位址推入所述丟棄佇列,代表所述邏輯位址的使用者資料已經丟棄的資訊需要更新到所述第二主機與閃存位址對照子表。
- 如請求項6所述的更新主機與閃存位址對照表的方法,包含: 在所述表格更新程序中,依據所述丟棄佇列中的所述邏輯位址更新所述第二主機與閃存位址對照子表。
- 一種電腦程式產品,包含程式碼,其中,當處理單元執行所述程式碼時,實施如請求項1至7中任一項所述的更新主機與閃存位址對照表的方法。
- 一種更新主機與閃存位址對照表的裝置,包含: 隨機存取記憶體; 閃存介面,耦接閃存模組;以及 處理單元,耦接所述隨機存取記憶體和所述閃存介面,用於在所述隨機存取記憶體中配置空間給第一主機與閃存位址對照子表,以及給用以更新所述閃存模組中的第二主機與閃存位址對照子表的中間資訊;在執行主機寫入命令以寫入資料到所述閃存模組時或者執行主機丟棄命令以丟棄所述閃存模組中的資料時,更新所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表和所述中間資訊;以及在表格更新程序中,將所述隨機存取記憶體中暫存的所述第一主機與閃存位址對照子表寫入所述閃存模組中的系統塊,依據所述隨機存取記憶體中暫存的所述中間資訊更新所述第二主機與閃存位址對照子表並且將更新後的第二主機與閃存位址對照子表寫入所述閃存模組中的所述系統塊。
- 如請求項9所述的更新主機與閃存位址對照表的裝置,其中,所述隨機存取記憶體無法配置足夠空間來暫存所有的主機與閃存位址對照子表。
- 如請求項9所述的更新主機與閃存位址對照表的裝置,其中,所述中間資訊儲存在當前塊的閃存與主機位址對照表之中, 其中,所述處理單元在執行所述主機寫入命令時,更新所述隨機存取記憶體中暫存的所述當前塊的所述閃存與主機位址對照表,用以儲存所述當前塊中的多個寫入頁面對應於多個邏輯位址的對照資訊,其中,所述多個邏輯位址包含關聯於所述第一主機與閃存位址對照子表的第一邏輯位址和關聯於所述第二主機與閃存位址對照子表的第二邏輯位址;針對所述第一邏輯位址,更新所述第一主機與閃存位址對照子表以儲存所述第一邏輯位址對應於哪個實體位址的對照資訊,以及將所述當前塊的所述閃存與主機位址對照表中的相應更新旗標設為第一值;以及針對所述第二邏輯位址,將所述當前塊的所述閃存與主機位址對照表中的相應更新旗標設為第二值。
- 如請求項11所述的更新主機與閃存位址對照表的裝置,其中,所述當前塊的所述閃存與主機位址對照表中的更新旗標用以指出相應對照資訊是否已經更新到所述第一主機與閃存位址對照子表。
- 如請求項11所述的更新主機與閃存位址對照表的裝置,其中,所述處理單元在所述表格更新程序中,依據所述閃存與主機位址對照表中的每個設為所述第二值的所述更新旗標所關聯的對照資訊更新所述第二主機與閃存位址對照子表。
- 如請求項9所述的更新主機與閃存位址對照表的裝置,其中,所述中間資訊儲存在丟棄佇列之中, 其中,所述處理單元在執行所述主機丟棄命令時,判斷所述主機丟棄命令指出的邏輯位址是否關聯於所述第一主機與閃存位址對照子表;當所述主機丟棄命令指出的邏輯位址關聯於所述第一主機與閃存位址對照子表時,更新所述第一主機與閃存位址對照子表以儲存所述邏輯位址的使用者資料已經丟棄的資訊;以及當所述主機丟棄命令指出的邏輯位址關聯於所述第二主機與閃存位址對照子表時,將所述邏輯位址推入所述丟棄佇列,代表所述邏輯位址的使用者資料已經丟棄的資訊需要更新到所述第二第二主機與閃存位址對照子表。
- 如請求項14所述的更新主機與閃存位址對照表的裝置,其中,所述處理單元在所述表格更新程序中,依據所述丟棄佇列中的所述邏輯位址更新所述第二主機與閃存位址對照子表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110143439A TWI835027B (zh) | 2021-11-23 | 2021-11-23 | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110143439A TWI835027B (zh) | 2021-11-23 | 2021-11-23 | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202321921A true TW202321921A (zh) | 2023-06-01 |
TWI835027B TWI835027B (zh) | 2024-03-11 |
Family
ID=87803782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110143439A TWI835027B (zh) | 2021-11-23 | 2021-11-23 | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI835027B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858008B2 (en) * | 2014-10-30 | 2018-01-02 | ScaleFlux | Method to reduce flash memory IOs with host maintained address mapping table |
TWI639918B (zh) * | 2017-05-11 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
TWI679538B (zh) * | 2018-03-31 | 2019-12-11 | 慧榮科技股份有限公司 | 資料儲存系統之控制單元以及邏輯至物理映射表更新方法 |
TWI749490B (zh) * | 2020-03-25 | 2021-12-11 | 慧榮科技股份有限公司 | 寫入閃存管理表的電腦程式產品及方法及裝置 |
-
2021
- 2021-11-23 TW TW110143439A patent/TWI835027B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI835027B (zh) | 2024-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI660346B (zh) | 記憶體管理方法以及儲存控制器 | |
TWI766207B (zh) | 多命名空間的資料存取方法及電腦程式產品 | |
US11537328B2 (en) | Method and apparatus for executing host commands | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US11681638B2 (en) | Method of synchronizing time between host device and storage device and system performing the same | |
US11307766B2 (en) | Apparatus and method and computer program product for programming flash administration tables | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI805505B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
US20230161713A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for updating host-to-flash address mapping table | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI774277B (zh) | 主機命令的執行方法及裝置 | |
TWI787110B (zh) | 寫入資料到閃存記憶體的方法及裝置 | |
TWI740446B (zh) | 管理垃圾回收程序的電腦程式產品及方法及裝置 | |
TWI814647B (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
US20230315622A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for data access in response to host discard commands | |
TWI795680B (zh) | 主機效能加速模式的資料讀取方法及裝置 | |
TWI569201B (zh) | 控制方法、記憶體控制器與資料傳輸系統 | |
US20240264946A1 (en) | Memory controller, method of driving memory controller, and memory system | |
US20230153237A1 (en) | Method and device for storing data | |
TW202422345A (zh) | 主機命令的邏輯位址區間搜索方法及裝置 |