TW202137006A - 寫入閃存管理表的電腦程式產品及方法及裝置 - Google Patents
寫入閃存管理表的電腦程式產品及方法及裝置 Download PDFInfo
- Publication number
- TW202137006A TW202137006A TW109109967A TW109109967A TW202137006A TW 202137006 A TW202137006 A TW 202137006A TW 109109967 A TW109109967 A TW 109109967A TW 109109967 A TW109109967 A TW 109109967A TW 202137006 A TW202137006 A TW 202137006A
- Authority
- TW
- Taiwan
- Prior art keywords
- flash memory
- host
- flash
- current block
- user data
- Prior art date
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明涉及一種寫入閃存管理表方法,由閃存控制器執行,包含:週期性檢查已經寫入閃存模組的當前塊的使用者資料是否滿足隨機寫入條件;以及,如果是,則依據當前塊的閃存-主機對照表的內容更新主機-閃存對照子表中的紀錄。
Description
本發明涉及儲存裝置,尤指一種寫入閃存管理表的電腦程式產品及方法及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
為了提昇閃存模組的資料寫入及讀取效能,閃存控制器會以多個通道並行地執行資料寫入及讀取。為了達成並行處理的目的,一段連續性的資料會分散地儲存到多個通道所連接的閃存單元,並使用閃存管理表(Flash Management Tables)紀錄使用者資料的邏輯位址(由主機端管理)與實體位址(由閃存控制器管理)間的對應關係。然而,閃存管理表的寫入也影響到整體系統的效能。因此,本發明提出一種寫入閃存管理表的電腦程式產品及方法及裝置,用於提升系統整體效能。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種電腦程式產品,用於寫入閃存管理表,包含由閃存控制器的處理單元載入並執行的程式碼:週期性檢查已經寫入閃存模組的當前塊的使用者資料是否滿足隨機寫入條件;以及,如果是,則依據當前塊的閃存-主機對照表的內容更新主機-閃存對照子表的紀錄。
本說明書另涉及一種寫入閃存管理表的方法,由閃存控制器執行,包含:週期性檢查已經寫入閃存模組的當前塊的使用者資料是否滿足隨機寫入條件;以及,如果是,則依據當前塊的閃存-主機對照表的內容更新主機-閃存對照子表的紀錄。
本說明書更另涉及一種寫入閃存管理表的裝置,包含:閃存介面;和處理單元。閃存介面耦接閃存模組,並處理單元耦接閃存介面。處理單元週期性檢查已經寫入閃存模組的當前塊的使用者資料是否滿足隨機寫入條件;以及,如果是,則依據當前塊的閃存-主機對照表的內容驅動閃存介面更新閃存模組中的主機-閃存對照子表的紀錄。
上述實施例的優點之一,通過隨機寫入條件的檢查,可避免因為大量的主機-閃存對照子表更新而延遲後續主機讀命令和/或主機寫命令的執行。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
參考圖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)、快速非揮發記憶體(Non-Volatile Memory Express,NVMe)、嵌入式多媒體卡(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)、抹除命令(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,H2F Table)、閃存-主機對照表(Flash-to-Host,F2H Table)等。閃存介面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中維護每個當前塊的閃存-主機對照表(Flash-to-Host,F2H table),包含多筆紀錄,依頁面編號的順序儲存當前塊中每個頁面的使用者資料關聯於哪的邏輯位址的資訊。邏輯位址可使用邏輯區塊位址(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)、主機-閃存對照表(Host-to-Flash,H2F table)等。F2H表可另稱為實體-邏輯對照表,而H2F表可另稱為邏輯-實體對照表。
除了將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子表所需的空間可以為1KB、2KB、4KB、8KB等。參考圖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的編號。閃存管理表可包含如上所述的F2H表、高階對照表、H2F表、H2F子表等。
在一些實施方式中,每當一個當前塊中的所有頁面都儲存滿使用者資料之後,或者一個當前塊中的剩餘頁面都填入虛假值之後,處理單元134才依據當前塊的F2H表的內容更新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。
為了解決如上所述實施方式的問題,本發明實施例提出一種閃存管理表的寫入方法,由處理單元134載入和執行相關韌體或軟體指令時實施。針對閃存模組150中的每個當前塊,週期性(詳細來說,每當寫入預設數目的主頁面的使用者資料到此當前塊後)檢查已經寫入此當前塊的使用者資料是否滿足隨機寫入條件。當已經寫入的使用者資料滿足隨機寫入條件時,依據此當前塊的F2H表的內容更新閃存模組150中儲存的H2F子表及高階對照表中的有關紀錄。參考圖6,詳細步驟說明如下:
步驟S610:將變數C1和C2初始為0。處理單元134使用變數C1來紀錄從上一次檢查以來已經寫入的主頁面數目,用來決定檢查的時間點。處理單元134另使用變數C2來紀錄待更新的H2F子表的數目,用來判斷是否滿足隨機寫入的條件。
步驟S620:驅動閃存介面139寫入一個主頁面的使用者資料並更新RAM 136中F2H表的相關紀錄。例如,處理單元134驅動閃存介面139寫入主頁面H#10000的使用者資料到當前塊的第100個頁面後,更新RAM 136中F2H表的第100個紀錄,用於儲存主頁面H#10000(也就是邏輯位址)的資訊。
步驟S630:改變變數C1=C1+1。
步驟S640:判斷新寫入使用者資料所關聯的H2F子表是否不屬於待更新的H2F子表。如果是,流程進行步驟S645的處理;否則,流程進行步驟S650的處理。處理單元134可在RAM 136中維護更新位元圖(Update Bitmap),包含多個位元,每個位元紀錄閃存模組150中相應H2F子表是否需要更新的資訊,“1”代表相應H2F子表需要更新,“0”代表相應H2F子表不需要更新。舉例來說,為紀錄如圖4所示的H2F子表430#0至430#15的待更新狀態,更新位元圖包含16個位元,初始為“0b0000000000000000”。處理單元134可依據寫入的主頁面編號和更新位元圖的內容來判斷新寫入使用者資料所關聯的H2F子表是否不屬於待更新的H2F子表。
步驟S645:修改待更新的H2F子表的資訊,並且改變C2=C2+1。處理單元134可修改更新位元圖的內容來反應新寫入的使用者資料。舉個使用案例來說,假設更新位元圖處於初始狀態,而已經寫入的使用者資料的主頁面編號為H#10000:處理單元134可將RAM 136中的位元圖改為“0b0001000000000000”並且改變C2為1。
步驟S650:判斷變數C1是否超過閥值TH1。如果是,流程進行步驟S655的處理;否則,流程進行步驟S620的處理。處理單元134可通過這個判斷決定檢查時間點。例如,假設一個當前塊能夠儲存4096個主頁面的使用者資料:處理單元134可在每寫入當前塊的1/4空間的使用者資料後就做一次判斷,因此,閥值TH1可設為4096/4=1024,使得處理單元134在寫入1024、2048、3172和4096個主頁面的使用者資料後就進行一次是否滿足隨機寫入的判斷。所屬技術領域人員可通過改變閥值TH1來改變進行上述判斷的頻次,當閥值TH1設得較低時,就會執行更多是否滿足隨機寫入的判斷。
步驟S655:改變變數C1=0。
在另一些實施例中,流程可省略步驟S650和步驟S655,讓處理單元134在每次寫入一個主頁面的使用者資料後就進行是否滿足隨機寫入的判斷。
步驟S660:判斷變數C2是否超過閥值TH2。如果是,流程進行步驟S665的處理;否則,流程進行步驟S670的處理。處理單元134可通過這個判斷決定已經寫入的使用者資料是否滿足隨機寫入條件。在一些實施例中,閥值TH2設定為低於閥值TH1的一個固定值,例如50、100、500、1000、1024、2048或其他的正整數。在另一些實施例中,閥值TH2設定為隨另一個閥值TH1改變的值,公式如下;
TH2=TH1/n
其中,n可為小於TH1的任意正整數,例如從2到5的任意正整數。例如,假設閥值TH1=1024,n=4:處理單元134偵測到C1超過256時(也就是更新位元表中存在超過256個位元為”1”),判定已經寫入的使用者資料滿足隨機寫入的條件。綜上所述,隨機寫入條件指已經寫入閃存模組150的此當前塊的使用者資料所關聯的主機-閃存對照子表的數目高於閥值。
步驟S665:依據F2H表中未處理的內容驅動閃存介面139更新閃存模組150中H2F子表和高階對照表的相關紀錄,改變變數C2=0,以及初始化待更新的H2F子表的資訊。例如,F2H表中未處理紀錄為第1025至第2048筆紀錄,則處理單元134只需要依據F2H表中第1025至第2048筆紀錄的內容更新閃存模組150中關聯的H2F子表和高階對照表的相關紀錄。由於閃存模組150中關聯的H2F子表的內容已經更新,處理單元134初始化變數C2和更新位元表。
步驟S670:判斷當前塊是否已經寫滿。如果是,流程進行步驟S675的處理;否則,流程進行步驟S620的處理。當前塊可能已經寫滿使用者資料,或者在將使用者資料寫入某個實體頁面後將剩餘的頁面填入虛假值(Dummy Values)。
步驟S675:驅動閃存介面139寫入最終的F2H表至閃存模組150,並且依據F2H表中未處理的內容驅動閃存介面139更新閃存模組150中H2F子表和高階對照表的相關紀錄。
搭配圖4的高階對照表的內容,表1的一個實體塊的關聯範例F2H表顯示已執行的主機寫命令為順序寫入(也就是非隨機寫入):
表1
H#100 |
H#101 |
H#102 |
H#103 |
H#104 |
H#105 |
H#106 |
H#107 |
H#108 |
H#109 |
H#110 |
H#111 |
H#112 |
H#113 |
H#114 |
H#115 |
雖然表2的一個實體塊的關聯範例F2H表顯示的主頁面編號並不是連續的,但是根據步驟S660的判斷,已執行的主機寫命令也是非隨機寫入:
表2
H#100 |
H#108 |
H#116 |
H#124 |
H#132 |
H#140 |
H#148 |
H#156 |
H#164 |
H#172 |
H#180 |
H#188 |
H#196 |
H#204 |
H#212 |
H#220 |
搭配圖4的高階對照表的內容,由於表3的一個實體塊的關聯範例F2H表顯示已執行的主機寫命令關聯到16個H2F表,判斷為隨機寫入:
表3
H#100 |
H#4196 |
H#8292 |
H#12388 |
H#16484 |
H#20580 |
H#24676 |
H#28772 |
H#32868 |
H#36964 |
H#41060 |
H#45156 |
H#49252 |
H#53348 |
H#57444 |
H#61540 |
為了讓讀者更容易理解,雖然圖6所示的實施例以一個當前塊作為例子說明寫入閃存管理表的方法、電腦程式產品及裝置的操作細節,所屬技術領域人員在適當修改後可應用到能夠並行寫入的多個當前塊的閃存管理表的寫入操作,本發明並不因此受限。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如儲存裝置中的韌體轉換層(Firmware Translation Layer,FTL)、特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1、2中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
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~S675:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的NAND閃存單元的示意圖。
圖4為依據本發明實施例的高階對照表和主機-閃存對照子表之間的關聯示意圖。
圖5為依據本發明實施例的主機-閃存對照子表和實體頁面之間的關聯示意圖。
圖6為依據本發明實施例的寫入閃存管理表的方法流程圖。
S610~S675:方法步驟
Claims (15)
- 一種電腦程式產品,用於寫入閃存管理表,包含由一閃存控制器的一處理單元載入並執行的程式碼: 週期性檢查已經寫入一閃存模組的一當前塊的使用者資料是否滿足一隨機寫入條件;以及 當已經寫入上述閃存模組的上述當前塊的使用者資料滿足上述隨機寫入條件時,依據上述當前塊的一閃存-主機對照表的內容更新一主機-閃存對照子表的一紀錄。
- 如請求項1所述的電腦程式產品,其中,上述隨機寫入條件指已經寫入上述閃存模組的上述當前塊的使用者資料所關聯的上述主機-閃存對照子表的數目高於一閥值。
- 如請求項2所述的電腦程式產品,包含由上述閃存控制器的上述處理單元載入並執行的程式碼: 每當寫入一預設數目的主頁面的使用者資料到上述當前塊後,檢查已經寫入上述閃存模組的上述當前塊的使用者資料是否滿足上述隨機寫入條件。
- 如請求項3所述的電腦程式產品,其中,上述閥值為低於上述預設數目的固定正整數。
- 如請求項3所述的電腦程式產品,其中,上述閥值的設定公式如下: TH2=TH1/n TH2代表上述閥值,TH1代表上述預設數目,n代表小於TH1的正整數。
- 如請求項5所述的電腦程式產品,其中,n代表從2到5的正整數。
- 如請求項1所述的電腦程式產品,其中,更新上述主機-閃存對照子表中的上述紀錄的程序包含: 搜尋一高階對照表的內容來找出上述主機-閃存對照子表的一實體位址; 從上述閃存模組的上述實體位址讀取上述主機-閃存對照子表; 依據上述當前塊的上述閃存-主機對照表的內容更新上述主機-閃存對照子表中的上述紀錄;以及 寫入上述更新後的主機-閃存對照子表到上述閃存模組。
- 一種寫入閃存管理表的方法,由一閃存控制器執行,包含: 週期性檢查已經寫入一閃存模組的一當前塊的使用者資料是否滿足一隨機寫入條件;以及 當已經寫入上述閃存模組的上述當前塊的使用者資料滿足上述隨機寫入條件時,依據上述當前塊的一閃存-主機對照表的內容更新一主機-閃存對照子表的一紀錄。
- 如請求項8所述的閃存管理表寫入方法,其中,上述隨機寫入條件指已經寫入上述閃存模組的上述當前塊的使用者資料所關聯的上述主機-閃存對照子表的數目高於一閥值。
- 如請求項9所述的閃存管理表寫入方法,包含: 每當寫入一預設數目的主頁面的使用者資料到上述當前塊後,檢查已經寫入上述閃存模組的上述當前塊的使用者資料是否滿足上述隨機寫入條件。
- 一種寫入閃存管理表的裝置,包含: 一閃存介面,耦接一閃存模組;以及 一處理單元,耦接上述閃存介面,用於週期性檢查已經寫入上述閃存模組的一當前塊的使用者資料是否滿足一隨機寫入條件;以及當已經寫入上述閃存模組的上述當前塊的使用者資料滿足上述隨機寫入條件時,依據上述當前塊的一閃存-主機對照表的內容驅動上述閃存介面更新上述閃存模組中的一主機-閃存對照子表的一紀錄。
- 如請求項11所述的寫入閃存管理表的裝置,包含: 一隨機存取記憶體,耦接於上述處理單元,用於儲存上述當前塊的上述閃存-主機對照表。
- 如請求項11所述的寫入閃存管理表的裝置,其中,上述隨機寫入條件指已經寫入上述閃存模組的上述當前塊的使用者資料所關聯的上述主機-閃存對照子表的數目高於一閥值。
- 如請求項13所述的寫入閃存管理表的裝置,其中,上述處理單元每當寫入一預設數目的主頁面的使用者資料到上述當前塊後,檢查已經寫入上述閃存模組的上述當前塊的使用者資料是否滿足上述隨機寫入條件。
- 如請求項11所述的寫入閃存管理表的裝置,其中,上述處理單元搜尋一高階對照表的內容來找出上述主機-閃存對照子表的一實體位址;驅動上述閃存介面從上述閃存模組的上述實體位址讀取上述主機-閃存對照子表;依據上述當前塊的上述閃存-主機對照表的內容更新上述主機-閃存對照子表中的上述紀錄;以及驅動上述閃存介面寫入上述更新後的主機-閃存對照子表到上述閃存模組。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109967A TWI749490B (zh) | 2020-03-25 | 2020-03-25 | 寫入閃存管理表的電腦程式產品及方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109967A TWI749490B (zh) | 2020-03-25 | 2020-03-25 | 寫入閃存管理表的電腦程式產品及方法及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202137006A true TW202137006A (zh) | 2021-10-01 |
TWI749490B TWI749490B (zh) | 2021-12-11 |
Family
ID=79601297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109109967A TWI749490B (zh) | 2020-03-25 | 2020-03-25 | 寫入閃存管理表的電腦程式產品及方法及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI749490B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI835027B (zh) * | 2021-11-23 | 2024-03-11 | 慧榮科技股份有限公司 | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769945B2 (en) * | 2007-01-18 | 2010-08-03 | Sandisk Il Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US7970983B2 (en) * | 2007-10-14 | 2011-06-28 | Sandisk Il Ltd. | Identity-based flash management |
CN101833516A (zh) * | 2007-12-14 | 2010-09-15 | 创惟科技股份有限公司 | 改进闪存存取效率的存储系统与方法 |
WO2011148223A1 (en) * | 2010-05-27 | 2011-12-01 | Sandisk Il Ltd | Memory management storage to a host device |
-
2020
- 2020-03-25 TW TW109109967A patent/TWI749490B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI835027B (zh) * | 2021-11-23 | 2024-03-11 | 慧榮科技股份有限公司 | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
Also Published As
Publication number | Publication date |
---|---|
TWI749490B (zh) | 2021-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
KR102691851B1 (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US20200218653A1 (en) | Controller, data storage device, and operating method thereof | |
CN111158579B (zh) | 固态硬盘及其数据存取的方法 | |
US12019558B2 (en) | Logical to physical address indirection table in a persistent memory in a solid state drive | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
TW201329999A (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN113448487B (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
US11681638B2 (en) | Method of synchronizing time between host device and storage device and system performing the same | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
KR20200114086A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
CN113495850B (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
KR20230037255A (ko) | 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TW201337553A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US20200394134A1 (en) | Data storage device and operating method thereof | |
TWI740446B (zh) | 管理垃圾回收程序的電腦程式產品及方法及裝置 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI805505B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
KR102583244B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
US11294587B2 (en) | Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device | |
US20230161713A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for updating host-to-flash address mapping table |