TWI814647B - 執行主機命令的方法及電腦程式產品及裝置 - Google Patents

執行主機命令的方法及電腦程式產品及裝置 Download PDF

Info

Publication number
TWI814647B
TWI814647B TW111144898A TW111144898A TWI814647B TW I814647 B TWI814647 B TW I814647B TW 111144898 A TW111144898 A TW 111144898A TW 111144898 A TW111144898 A TW 111144898A TW I814647 B TWI814647 B TW I814647B
Authority
TW
Taiwan
Prior art keywords
logical address
register
data
host
input terminal
Prior art date
Application number
TW111144898A
Other languages
English (en)
Other versions
TW202422344A (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 慧榮科技股份有限公司
Priority to TW111144898A priority Critical patent/TWI814647B/zh
Application granted granted Critical
Publication of TWI814647B publication Critical patent/TWI814647B/zh
Publication of TW202422344A publication Critical patent/TW202422344A/zh

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本發明涉及一種執行主機命令的方法、電腦程式產品及裝置。該方法由處理單元執行,包含:設定開始寄存器和結束寄存器以儲存第一邏輯位址區間;提供循序寫入佇列,包含多個項目,每個項目定義第二邏輯位址區間;設定啟動寄存器以驅動搜索引擎;經過一段時間後,偵測匹配寄存器和結果位址寄存器的值以判斷第一邏輯位址區間的全部或者部分資料是否暫存在隨機存取記憶體;以及當第一邏輯位址區間的全部或者部分資料暫存在隨機存取記憶體時,操作隨機存取記憶體中暫存的第一邏輯位址區間的全部或者部分資料。通過如上所述的專屬搜索引擎的設置,讓處理單元可將需要大量比對的邏輯位址區間的搜索任務交給搜索引擎執行,並且將其運算資源提供給其他的任務,從而提升儲存裝置的整體效能。

Description

執行主機命令的方法及電腦程式產品及裝置
本發明涉及儲存裝置,尤指一種執行主機命令的方法、電腦程式產品及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,主機端(Host Side)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,主機端反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、丟棄、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
然而,在實際更新閃存模組中儲存的資料之前,欲循序寫入的資料可先暫存在閃存控制器中的隨機存取記憶體一段時間。暫存的資料可能會被後續的主機讀取命令所讀取。如果能夠直接從隨機存取記憶體讀取暫存的資料並回覆主機端,而不是通過閃存介面從閃存模組執行實際的讀取操作,將縮短主機讀取命令的執行時間。或者,暫存的資料可能會被後續的主機資料更新命令(例如,寫入命令、抹除命令、丟棄命令等)所覆寫。如果能夠直接更新隨機存取記憶體暫存的命中資料,將縮短主機資料更新命令的執行時間。本發明提出一種執行主機命令的方法、電腦程式產品及裝置,用於決定後 續主機命令的位址區間是否命中暫存資料的邏輯位址區間,從而縮短主機命令的執行時間。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種執行主機命令的方法,由處理單元執行,包含:設定第一開始寄存器和第一結束寄存器以儲存第一邏輯位址區間;提供循序寫入佇列,包含多個項目,每個項目定義第二邏輯位址區間;設定啟動寄存器以驅動搜索引擎;經過一段時間後,偵測匹配寄存器和結果位址寄存器的值以判斷第一邏輯位址區間的全部或者部分資料是否暫存在隨機存取記憶體;以及當第一邏輯位址區間的全部或者部分資料暫存在隨機存取記憶體時,操作隨機存取記憶體中暫存的第一邏輯位址區間的全部或者部分資料。
每個第二邏輯位址區間的待寫入資料暫存在隨機存取記憶體,並且尚未寫入到閃存模組。搜索引擎設置以搜索循序寫入佇列中的項目,用以發現是否存在任何項目的第二邏輯位址區間全部或者部分重疊於第一邏輯位址區間,並且將搜索結果儲存在匹配寄存器和結果位址寄存器。
本說明書另涉及一種電腦程式產品,包含程式碼。當處理單元執行所述程式碼時,實施如上所述的執行主機命令的方法。
本說明書還涉及一種執行主機命令的裝置,包含:隨機存取記憶體;搜索引擎;和處理單元。隨機存取記憶體配置空間給循序寫入佇列和資料緩存器,循序寫入佇列包含多個項目,每個項目定義第二邏輯位址區間,以及每個第二邏輯位址區間的待寫入資料暫存在資料緩存器,且尚未寫入到閃存模組。搜索引擎包含啟動寄存器。處理單元設置以設定第一開始寄存器和第一結束寄存器以儲存第一邏輯位址區間;設定啟動寄存器以驅動搜索引擎;經過一段時間後,偵 測所述匹配寄存器和所述結果位址寄存器的值以判斷第一邏輯位址區間的全部或者部分資料是否暫存在資料緩存器;以及當所述第一邏輯位址區間的所述全部或者部分資料暫存在資料緩存器時,操作資料緩存器中暫存的第一邏輯位址區間的所述全部或者部分資料。
上述實施例的優點之一,通過如上所述的專屬搜索引擎的設置,讓處理單元可將需要大量比對的邏輯位址區間的搜索任務交給搜索引擎執行,而將其運算資源提供給其他的任務,從而提升儲存裝置的整體效能。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
132:匯流排
134:處理單元
135,135#0~135#7:搜索引擎
136:隨機存取記憶體
138:直接記憶體存取控制器
139:閃存介面
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
310:循序寫入佇列
330:資料緩存器
410#0~410#7:寄存器組
511,523:開始寄存器
512,524:結束寄存器
515:匹配寄存器
516:結果位址寄存器
521:啟動寄存器
525:項目位址寄存器
526:狀態寄存器
551,553:比較器
555:或非閘
580:記憶體存取控制器
591:D正反器
593:輸出電路
S610~S660:方法步驟
S710~S760:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的循序寫入佇列的範例項目以及資料緩存器的範例空間之間的關聯示意圖。
圖4為依據本發明實施例的多個搜索引擎和對應寄存器組的示意圖。
圖5為依據本發明實施例的搜索引擎和周邊元件的方塊圖。
圖6為依據本發明實施例的搭配搜索引擎的主機讀取命令的執行方法流程圖。
圖7為依據本發明實施例的搭配搜索引擎的主機寫入命令的執行方法流程圖。
圖8為依據本發明實施例的執行範例主機寫入命令後的循序寫入佇列的範例項目以及資料緩存器的範例空間之間的關聯示意圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的「包含」、「包括」等詞,用 以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如「第一」、「第二」、「第三」等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為「連接」或「耦接」至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為「直接連接」或「直接耦接」至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如「介於」相對於「直接介於」,或者是「鄰接」相對於「直接鄰接」等等。
參考圖1。電子裝置10包含主機端(Host Side)110、閃存控制器130及閃存模組150,並且閃存控制器130及閃存模組150可合稱為裝置端(Device Side)。電子裝置10可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機、智慧電視、智慧電冰箱、車用電子系統(Automotive Electronics System)等電子產品之中。主機端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)等,依據主機命令的類型和其中攜帶參數產生主機資料更新命令(Host Data-update Command),排程並執行這些命令。閃存控制器130另包含隨機存取記憶體(Random Access Memory,RAM)136,可實施為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)或上述兩者的結合,用於配置空間作為資料緩存器(Data Buffer),儲存從主機端110讀取並即將寫入閃存模組150的使用者資料(也可稱為主機資料),以及從閃存模組150讀取並即將輸出給主機端110的使用者資料。隨機存取記憶體136另可儲存執行過程中需要的資料,例如,變數、資料表、主機-閃存對照表(Host-to-Flash H2F Table)、閃存-主機對照表(Flash-to-Host F2H Table)、循序更新佇列(Sequential Update Queue)等。閃存介面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等。 DMA控制器138可依據處理單元134的指令,通過匯流排架構132在元件間遷移資料,例如,將主機介面131或閃存介面139中特定資料緩存器(Data Buffer)的資料搬到RAM 136中的特定位址,將RAM 136中特定位址的資料搬到將主機介面131或閃存介面139中的特定資料緩存器等。
閃存模組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閃存單元。
處理單元134可從RAM 136載入並執行韌體轉換層(Firmware Translation Layer,FTL)的程式碼,執行主機端110發送的各種主機命令,以及執行用於提昇儲存裝置的整體效能的背景操作。背景操作可以是垃圾搜集(Garbage Collection,GC)、損耗磨平(Wear Leveling,WL)、讀取再生(read reclaim)、讀取刷新(read refresh)等程序。每次當FTL驅動主機介面131從主機端110獲取循序更新命令(Sequential Update Command)時,將循序更新命令攜帶的多個邏輯位址推入循序更新佇列,以及將循序更新命令的待寫入資料暫存在RAM 136的資料緩存器。接著,每次當FTL通過主機介面131從主機端110接收到主機命令(例如,讀取命令、寫入命令、抹除命令、丟棄命令等)的時候,搜索循序更新佇列中的項目以判斷循序更新佇列中是否已經記錄了此主機命令的邏輯位址,或者此主機命令的邏輯位址區間中的全部或者一部分位址。如果存在,則代表RAM 136中暫存了命中邏輯位址或者邏輯位址區間的資料,但這些資料尚未寫入閃存模組150。FTL可操作RAM 136中的暫存資料以加速此主機命令的執行。
在一些實施方式中,循序更新佇列配置為在每個項目(Entry)中儲存一個邏輯位址。邏輯位址可為邏輯區塊位址編號(Logical Block Address,LBA Number),每個LBA編號指向一個512位元組的資料。或者,邏輯位址可為主機頁面編號(Host Page Number),每個主機頁面編號指向一個4K位元組的資料。例如,如果循序更新命令指示閃存控制器130寫入LBA#0x1000至LBA#0x13FF的資料的時候,FTL在循序更新佇列中推入1024個項目,分別包含邏輯位址”0x1000”至”0x13FF”。然而,上述實施方式將配置RAM 136中大量的空間給 循序更新佇列。此外,每次當FTL通過主機介面131從主機端110接收到主機命令時,也需要耗費大量的時間搜索循序更新佇列中的大量項目並逐一比對,用以判斷寫入佇列中是否已經存在此主機命令中攜帶的至少一個邏輯位置。
為了降低RAM 136的空間消耗,本發明實施例提出一種精簡資料結構,用於表示循序寫入佇列中的每個項目,其中,每個項目儲存一段邏輯位址區間,包含開始位址和結束位址。參考圖3所示的記憶體空間的配置示意圖。RAM 136配置空間給循序更新佇列310和資料緩存器330。循序更新佇列310用於依照循序更新命令到達閃存控制器130的時間順序,儲存主機端110發送的相應於循序更新命令的開始位址和結束位址。循序更新命令可包含邏輯位址的長度大於1的主機寫入命令、主機抹除命令、主機丟棄命令等。循序更新佇列310可儲存數百筆或者數千筆的循序更新命令的邏輯位址區間。循序更新佇列310的操作基本原則是由結束位置新增循序更新命令的邏輯位址區間(可稱為入列),並且由開始位置移出循序更新命令的邏輯位址區間(可稱為出列)。也就是說,第一個新增至佇列的命令,也將會是第一個被移出和處理的,符合先進先出(First-In First-Out,FIFO)的原則。例如,循序更新佇列310中的每個項目可儲存4個位元組的開始邏輯位址和4個位元組的結束邏輯位址,表示多個連續的邏輯位址。RAM 136的位址”0x41000”儲存第0個循序更新命令的開始邏輯位址”0x1000”和結束邏輯位址”0x13FF”,RAM 136的位址”0x41008”儲存第1個循序更新命令的開始邏輯位址”0x8C0”和結束邏輯位址”0x8DF”,依此類推。開始邏輯位址”0x1000”和結束邏輯位址”0x13FF”表示1024個連續的邏輯位址,開始邏輯位址”0x8C0”和結束邏輯位址”0x8DF”表示32個連續的邏輯位址,依此類推。循序更新佇列310可設計為循環式佇列(Cyclical Queue)。
資料緩存器330用於儲存循序更新命令的待寫入資料。例如,資料緩存器330中的空間Buf#0儲存第0個主機寫入命令的待寫入資料,其邏輯位址區間為”0x1000”至”0x13FF”;空間Buf#1儲存第1個主機寫入命令的待寫入資料,其邏輯位址區間為”0x8C0”至”0x8DF”,依此類推。RAM 136更可儲存主機命令基本資料表(未顯示於圖3),包含多筆項目,每筆項目紀錄命令編號、命令類型、連續性、循序更新佇列310中儲存邏輯位址區間的開始記憶體位址、資料緩存器330中儲存待寫入資料的開始記憶體位址等。命令類型可包含讀取”R”、寫入”W”、抹除”E”、丟棄”D”等。連續性可包含循序”Sqt”、隨機”Rnd”等。FTL可通過主機命令基本資料表知道循序更新佇列310中的每個邏輯位址區間所對應到的待寫入資料實際儲存於資料緩存器330中的哪塊記憶體空間。
參考圖4,閃存控制器130中可設置八個的專屬搜索引擎135#0至135#7和對應的寄存器組(Register Sets)410#0至410#7,讓處理單元134在執行韌體以處理主機命令時,可設定寄存器組410#0至410#7中的指定寄存器,用於驅動搜索引擎135#0至135#7並行地執行八個位址區間的搜索任務。當處理單元134驅動搜索引擎135#0至135#7開始工作後,可先中斷此主機命令的執行並且跳轉去執行不同的主機命令,或者背景操作,而不需要等待這八個搜索任務的執行結果。為了容易說明,整份揭露書中若提到搜索引擎135,則代表搜索引擎135#0至135#7中的任意一個。若提到寄存器組410,則代表搜索引擎410#0至410#7中的任意一個或者相應一個。搜索引擎135可獲取相應寄存器組410中的搜索邏輯位址區間,逐一比對循序寫入佇列310中的項目,直到發現搜索邏輯位址區間的全部或者一部分出現在任何項目為止,或者直到所有項目都比對完畢還沒有發現搜索邏輯位址區間為止。每當搜索引擎135發現搜索邏輯位址區間的全部或者一部分出現在任何項目時,設定相應寄存器組410中 的指定寄存器,用以通知處理單元134搜索成功的訊息以及搜索到的項目。當搜索引擎135比對完所有項目還沒有發現搜索邏輯位址區間時,設定相應寄存器組410中的指定寄存器,用以通知處理單元134搜索失敗的訊息。處理單元134可在一段時間後從寄存器組410#0至410#7中的指定寄存器讀取搜索結果,並且根據搜索結果繼續執行此主機命令。由於處理單元134不需要執行這八個搜索任務而能夠將其運算資源提供給其他的任務,儲存裝置的整體效能得以提升。雖然揭露書中描述了八個的專屬搜索引擎和對應的寄存器組,所屬技術領域人員可依據不同的系統需求在閃存控制器130中設置更多或者更少的專屬搜索引擎和對應的寄存器組,本發明不應因此局限。
參考圖5所示的搜索引擎135和周邊元件的方塊圖。處理單元134可儲存如圖3所示的循序寫入佇列310的範例項目至RAM 136,並且分別設定開始寄存器511和結束寄存器512的值startA和startB以定義一段搜索的邏輯位址區間。處理單元134為加速接收到的主機命令的執行,可通過設定啟動寄存器521以驅動搜索引擎135。處理單元134還在可啟動計時器以計數一段時間之後,先中斷此主機命令的執行並開始其他任務的處理。開始寄存器511和結束寄存器512可整合在處理單元134或者搜索引擎135之中。
初始時,匹配寄存器515和結果位址寄存器516儲存空值(NULL)。處理單元134設定啟動寄存器521為邏輯”1”後,啟動寄存器521輸出邏輯”1”給記憶體存取控制器580和正反器591以致能(Enable)記憶體存取控制器580和正反器591。此外,啟動寄存器521輸出邏輯”1”給狀態寄存器526,代表搜索引擎135現在處於忙碌(Busy)狀態。在每次的時鐘訊號轉態時,記憶體存取控制器580從循序寫入佇列310的開始位址(例如,RAM 136的記憶體位址”0x41000”)起讀取8個位元組的資料,並且將前4個位元組的值儲存到開始寄存器523作 為開始邏輯位址startB,將後4個位元組的值儲存到結束寄存器524作為結束邏輯位址endB。記憶體存取控制器580還將RAM 136中的開始讀取的位址儲存到項目位址寄存器525。比較器551判斷結束寄存器512的值endA是否小於開始寄存器523的值startB,如果是,則輸出邏輯”1”給或非閘(NOR gate)555,表示處理單元134欲搜索的邏輯位址區間和目前讀取項目中的邏輯位址區間沒有重疊(也就是沒有命中),否則,輸出邏輯”0”給或非閘555。比較器553判斷結束寄存器524的值endB是否小於開始寄存器511的值startA,如果是,則輸出邏輯”1”給或非閘555,表示處理單元134欲搜索的邏輯位址區間和目前讀取項目中的邏輯位址區間沒有重疊(也就是沒有命中),否則,輸出邏輯”0”給或非閘555。當或非閘555從比較器551或比較器553接收到邏輯”1”時,輸出邏輯”0”給D正反器591、輸出電路593和記憶體存取控制器580,用於讓D正反器591輸出邏輯”0”給匹配寄存器515(代表沒有命中),不讓輸出電路593輸出結果,以及讓記憶體存取控制器580繼續從循序寫入佇列310讀取下一個項目的邏輯位址區間。當或非閘555從比較器551和比較器553都接收到邏輯”0”時,輸出邏輯”1”給D正反器591、輸出電路593和記憶體存取控制器580,用於讓D正反器591輸出邏輯”1”給匹配寄存器515(代表命中),讓輸出電路593將項目位址寄存器525的值儲存到結果位址寄存器516作為搜索到的結果(也就是RAM 136中的命中項目的開始記憶體位址),以及不致能(Disable)記憶體存取控制器580。當記憶體存取控制器580搜索完循序寫入佇列310的最後一個項目或者被不致能之後,輸出邏輯”0”給狀態寄存器526,代表搜索引擎135現在處於空閒(Idle)狀態。匹配寄存器515和結果位址寄存器516可整合在處理單元134或者搜索引擎135之中。
當計時器計數到這段時間後,處理單元134可檢查狀態寄存器526,判斷搜索引擎135現在處於忙碌狀態(代表搜索中)或者空閒狀態 (代表搜索完畢)。如果搜索引擎135處於忙碌狀態,則處理單元134重設計時器以計數一段時間。如果搜索引擎135處於空閒狀態,則處理單元134讀取匹配寄存器515中的值。如果匹配寄存器515中的值為邏輯”0”,則代表循序寫入佇列310中找不到任何重疊於邏輯位址區間startA至endA的項目。如果匹配寄存器515中的值為邏輯”1”,則代表循序寫入佇列310中含有重疊於邏輯位址區間startA至endA的項目,處理單元134讀取結果位址寄存器516中儲存的記憶體位址。接著,處理單元134讀取RAM 136的此記憶體位址開始的8個位元組,用以取得命中的邏輯位址區間。
上述的專屬的搜索引擎135搭配循序寫入佇列310中的項目的精簡資料結構,能夠應用到主機讀取命令的執行過程。參考圖6所示的主機讀取命令的執行方法流程圖,此方法由處理單元134在載入和執行FTL時執行,用以反覆地從主機端110接收主機讀取命令,並且使用循序寫入佇列310和搜索引擎135來加速主機讀取命令的執行。詳細說明如下:
步驟S610:獲取主機讀取命令中攜帶的邏輯位址區間。
步驟S622:分別將邏輯位址區間的開始邏輯位址startA和結束邏輯位址endA設定到開始寄存器511和結束寄存器512。
步驟S624:設定啟動寄存器521以驅動搜索引擎135開始搜索循序寫入佇列310的內容,用於判斷此主機讀取命令的邏輯位址區間的全部或者一部分是否能夠在循序寫入佇列310中找到。
步驟S626:啟動計時器以計數一段時間。在這段時間中,FTL可跳轉去執行其他的主機命令,或者背景操作,而不需要等待搜索引擎135的搜索結果。
步驟S632:讀取狀態寄存器526的值以判斷搜索引擎135是否完成搜索。如果狀態寄存器526的值為邏輯”0”(代表搜索引擎135現在處於空閒狀態),則流程繼續進行步驟S634的處理。如果狀態寄存器 526的值為邏輯”1”(代表搜索引擎135現在處於忙碌狀態),流程繼續進行S626的處理。
步驟S634:讀取匹配寄存器515的值以判斷搜索引擎135是否搜索到暫存在RAM 136的相應於上述邏輯位址區間的資料。如果匹配寄存器515的值為邏輯”1”(代表搜索到暫存的資料),則流程繼續進行步驟S636的處理。如果匹配寄存器515的值為邏輯”0”(代表搜索不到暫存的資料),流程繼續進行S650的處理。
步驟S636:判斷是否需要從閃存模組150讀取資料。如果是,則流程繼續進行步驟S642的處理。否則,流程繼續進行S660的處理。FTL可讀取結果位址寄存器516中儲存的記憶體位址,並且從RAM 136的此記憶體位址開始讀取4位元的開始邏輯位址startB和4位元的結束邏輯位址endB。FTL判斷邏輯位址區間startA至endA是否被完整包含在邏輯位址區間startB至endB之內。如果是,則代表邏輯位址區間startA至endA的資料完整地暫存在RAM 136之中,不需要再從閃存模組150讀取資料。否則,代表邏輯位址區間startA至endA的資料中有一部分沒有暫存在RAM 136之中,需要再從閃存模組150讀取。
步驟S642:驅動閃存介面139以從閃存模組150讀取所需的資料(也就是邏輯位址區間startA至endA和邏輯位址區間startB至endB之間不重疊的邏輯位址區間startC至endC的資料)。
步驟S644:合併RAM 136中暫存的資料和從閃存模組150讀取的資料,並且驅動主機介面131將合併後的資料回覆給主機端110。
步驟S650:驅動閃存介面139以從閃存模組150讀取所需的資料(也就是邏輯位址區間startA至endA的資料),並且驅動主機介面131將讀取的資料回覆給主機端110。
步驟S660:驅動閃存介面139以從RAM 136讀取暫存的資料(也就是邏輯位址區間startA至endA的資料),並且驅動主機介面131將讀 取的資料回覆給主機端110。
舉例來說,FTL收到請求讀取邏輯位址”0x800”到”0xFFF”的資料的主機讀取命令(步驟S610),設定開始寄存器511和結束寄存器512的值,讓startA=”0x800”,startB=”0xFFF”(步驟S622),接著將啟動寄存器521設為邏輯”1”以驅動搜索引擎135開始搜索循序寫入佇列310的內容,用於判斷此主機讀取命令的邏輯位址區間是否能夠在循序寫入佇列310中找到(步驟S624)。當FTL通過啟動寄存器521驅動搜索引擎135(步驟S624)並啟動計時器(步驟S626)之後,可先中斷此主機讀取命令的執行並開始其他任務的處理。當計時器計數完這段時間後,FTL通過讀取狀態寄存器526、匹配寄存器515和結果位址寄存器516中的值,知道請求搜索的邏輯位址區間startA=”0x800”至endA=”0xFFF”所命中的項目儲存在RAM 136中的記憶體位址”0x41008”。接著,FTL判斷出邏輯位址區間startA=”0x800”至endA=”0xFFF”部分重疊於第1個循序更新命令的邏輯位址區間startB=”0x8C0”至endB=”0x8DF”(步驟S636中“是”的路徑)。FTL搜索主機-閃存對照表以找出邏輯位址區間”0x800”至”0x8BF”和”0x8E0”至”0xFFF”的實體位址,並且驅動閃存介面139從閃存模組的這些實體位址讀取資料(步驟S642)。FTL還根據主機命令基本資料表的內容從資料緩存器330的空間Buf#1讀取邏輯位址區間”0x8C0”至”0x8DF”的待寫入資料,合併暫存的和讀取的資料,以及驅動主機介面131將合併後的資料回覆給主機端110(步驟S644)。
上述的專屬的搜索引擎135搭配循序寫入佇列310中的項目的精簡資料結構,能夠應用到主機寫入命令的執行過程。參考圖7所示的主機寫入命令的執行方法流程圖,此方法由處理單元134在載入和執行FTL時執行,用以反覆地從主機端110接收主機寫入命令,並且使用循序寫入佇列310和搜索引擎135來加速主機寫入命令的執行。詳 細說明如下:
步驟S710:獲取主機寫入命令中攜帶的邏輯位址區間。
步驟S722、S724、S726、S732、S734的技術細節可分別參考圖6的步驟S622、S624、S626、S632、S634的說明,為求簡明不再贅述。
步驟S736:判斷是否在循序寫入佇列310新增新的項目。如果是,則流程繼續進行步驟S742的處理。否則,流程繼續進行S760的處理。FTL可讀取結果位址寄存器516中儲存的記憶體位址,並且從RAM 136的此記憶體位址開始讀取4位元的開始邏輯位址startB和4位元的結束邏輯位址endB。FTL判斷邏輯位址區間startA至endA是否被完整包含在邏輯位址區間startB至endB之內。如果是,則代表邏輯位址區間startA至endA的資料完整地暫存在RAM 136之中,不需要新增新的項目到循序寫入佇列310。否則,代表邏輯位址區間startA至endA中有一部分邏輯位址區間的資料還沒有暫存在RAM 136之中,需要將這部分邏輯位址區間的資料暫存在資料緩存器330的未分配空間,並且新增新的項目到循序寫入佇列310以反映新暫存的待寫入資料。
步驟S742:更新搜索到的在RAM 136中暫存的資料(也就是邏輯位址區間startA至endA和邏輯位址區間startB至endB之間重疊的邏輯位址區間startC至endC的資料)。
步驟S744:儲存其餘的待寫入資料到資料緩存器330的新分配空間(也就是邏輯位址區間startA至endA和邏輯位址區間startB至endB之間不重疊的邏輯位址區間startD至endD的資料),並且新增相應的項目到循序寫入佇列310。
步驟S750:儲存邏輯位址區間startA至endA的待寫入資料到資料緩存器330的未分配空間,並且新增相應的項目到循序寫入佇列310。
步驟S760:更新搜索到的在RAM 136中暫存的資料(也就是邏輯位址區間startA至endA的資料)。
舉例來說,FTL收到請求寫入邏輯位址”0x7800”到”0x83FF”的資料的主機寫入命令(步驟S710),設定開始寄存器511和結束寄存器512的值,讓startA=”0x7800”,startB=”0x83FF”(步驟S722),接著將啟動寄存器521設為邏輯”1”以驅動搜索引擎135開始搜索循序寫入佇列310的內容,用於判斷此主機寫入命令的邏輯位址區間是否能夠在循序寫入佇列310中找到(步驟S724)。當FTL通過啟動寄存器521驅動搜索引擎135(步驟S724)並啟動計時器(步驟S726)之後,可先中斷此主機寫入命令的執行並開始其他任務的處理。當計時器計數完這段時間後,FTL通過讀取狀態寄存器526、匹配寄存器515和結果位址寄存器516中的值,知道請求搜索的邏輯位址區間startA=”0x7800”至endA=”0x83FF”所命中的項目儲存在RAM 136中的記憶體位址”0x41010”。接著,FTL判斷出邏輯位址區間startA=”0x7800”至endA=”0x83FF”部分重疊於第2個循序更新命令的邏輯位址區間startB=”0x8000”至endB=”0x9FFF”(步驟S736中“是”的路徑)。FTL更新資料緩存器330的空間Buf#2中的邏輯位址區間”0x8000”至”0x83FF”的暫存資料為此主機寫入命令的待寫入資料(步驟S742)。FTL還儲存邏輯位址區間”0x7800”至”0x7FFF”的待寫入資料到新分配空間Buff#4,並且新增第4個項目到循序寫入佇列310(步驟S744)。執行後的結果可參考圖8所示的記憶體空間的配置示意圖。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如儲存裝置中的韌體轉換層(Firmware Translation Layer,FTL)、特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具) 存取的網路伺服器。
雖然圖1、圖2、圖4、圖5中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6至圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S610~S660:方法步驟

Claims (13)

  1. 一種執行主機命令的方法,由處理單元執行,上述方法包含:設定第一開始寄存器和第一結束寄存器以儲存第一邏輯位址區間,其中,所述第一邏輯位址區間包含第一開始邏輯位址至第一結束邏輯位址;提供循序寫入佇列,其中,所述循序寫入佇列包含多個項目,每個所述項目定義第二邏輯位址區間,所述第二邏輯位址區間包含第二開始邏輯位址至第二結束邏輯位址,每個所述第二開始邏輯位址至所述第二結束邏輯位址的待寫入資料暫存在隨機存取記憶體,並且尚未寫入到閃存模組;設定啟動寄存器以驅動搜索引擎,其中,所述搜索引擎設置以搜索所述循序寫入佇列中的多個所述項目,用以發現是否存在任何所述項目的所述第二邏輯位址區間全部或者部分重疊於所述第一邏輯位址區間,並且將搜索結果儲存在匹配寄存器和結果位址寄存器;經過一段時間後,偵測所述匹配寄存器和所述結果位址寄存器的值以判斷所述第一邏輯位址區間的全部或者部分資料是否暫存在所述隨機存取記憶體;在所述一段時間中,中斷所述主機命令的執行,並且跳轉去執行不同的主機命令,或者背景操作;以及當所述第一邏輯位址區間的所述全部或者部分資料暫存在所述隨機存取記憶體時,操作所述隨機存取記憶體中暫存的所述第一邏輯位址區間的所述全部或者部分資料。
  2. 如請求項1所述的執行主機命令的方法,其中,所述主機命令為主機讀取命令,所述方法包含: 當所述結果位址寄存器的指出項目的所述第一邏輯位址區間全部重疊所述第二邏輯位址區間時,從所述隨機存取記憶體讀取所述第一邏輯位址區間的待寫入資料;以及驅動主機介面以回覆讀取資料給主機端。
  3. 如請求項2所述的執行主機命令的方法,包含:當所述結果位址寄存器的所述指出項目的所述第一邏輯位址區間部分重疊所述第二邏輯位址區間時,從所述隨機存取記憶體讀取所述第一邏輯位址區間中的重疊於所述第二邏輯位址區間的第三邏輯位址區間的待寫入資料,以及驅動閃存介面以從閃存模組讀取所述第一邏輯位址區間中的不重疊於所述第二邏輯位址區間的第四邏輯位址區間的資料;合併所述第三邏輯位址區間的所述待寫入資料以及所述第四邏輯位址區間的所述資料;以及驅動所述主機介面以回覆合併後資料給所述主機端。
  4. 如請求項1所述的執行主機命令的方法,其中,所述主機命令為主機寫入命令,所述方法包含:當所述結果位址寄存器的指出項目的所述第一邏輯位址區間全部重疊所述第二邏輯位址區間時,更新所述隨機存取記憶體中暫存的所述第一邏輯位址區間的待寫入資料。
  5. 如請求項4所述的執行主機命令的方法,包含:當所述結果位址寄存器的所述指出項目的所述第一邏輯位址區間部分重疊所述第二邏輯位址區間時,更新所述隨機存取記憶體中暫存的所述第一邏輯位址區間中的重疊於所述第二邏輯位址區間的第三邏輯位址區間的待寫入資料;將所述第一邏輯位址區 間中的不重疊於所述第二邏輯位址區間的第四邏輯位址區間的待寫入資料儲存在所述隨機存取記憶體;以及新增相應於所述第四邏輯位址區間的項目到所述循序寫入佇列。
  6. 如請求項1所述的執行主機命令的方法,其中,所述搜索引擎包含:第二開始寄存器,儲存所述第二開始邏輯位址;第二結束寄存器,儲存所述第二結束邏輯位址;第一比較器包含第一輸入端、第二輸入端和第一輸出端,其中,所述第一輸入端耦接所述第一結束寄存器,所述第二輸入端耦接所述第二開始寄存器,並且所述第一輸出端設置以當所述第一結束邏輯位址不小於所述第二開始邏輯位址時,輸出邏輯”0”給或非閘;第二比較器包含第三輸入端、第四輸入端和第二輸出端,其中,所述第三輸入端耦接所述第二結束寄存器,所述第四輸入端耦接所述第一開始寄存器,並且所述第二輸出端設置以當所述第二結束邏輯位址不小於所述第一開始邏輯位址時,輸出邏輯”0”給所述或非閘;所述或非閘包含第五輸入端、第六輸入端和第三輸出端,其中,所述第五輸入端耦接所述第一輸出端,所述第六輸入端耦接所述第二輸出端,所述第三輸出端設置以當所述第五輸入端和所述第六輸入端都接收到邏輯”0”時,輸出邏輯”1”給所述匹配寄存器,並且輸出邏輯”1”給輸出電路;以及所述輸出電路,設置以當從所述或非閘接收到邏輯”1”時,輸出所述隨機存取記憶體中儲存所述第二邏輯位址區間的記憶體位址至所述結果位址寄存器。
  7. 一種執行主機命令的電腦程式產品,包含程式碼,其中,當處理單元執行所述程式碼時,實施如請求項1至6中任一項所述的執行主機命令的方法。
  8. 一種執行主機命令的裝置,包含:隨機存取記憶體,配置空間給循序寫入佇列和資料緩存器,其中,所述循序寫入佇列包含多個項目,每個所述項目定義第二邏輯位址區間,所述第二邏輯位址區間包含第二開始邏輯位址至第二結束邏輯位址,每個所述第二開始邏輯位址至所述第二結束邏輯位址的待寫入資料暫存在所述資料緩存器,並且尚未寫入到閃存模組;搜索引擎,耦接所述隨機存取記憶體,包含啟動寄存器;以及處理單元,耦接所述隨機存取記憶體和所述搜索引擎,設置以設定第一開始寄存器和第一結束寄存器以儲存第一邏輯位址區間,其中,所述第一邏輯位址區間包含第一開始邏輯位址至第一結束邏輯位址;設定所述啟動寄存器以驅動所述搜索引擎,其中,所述搜索引擎設置以搜索所述循序寫入佇列中的多個所述項目,用以發現是否存在任何所述項目的所述第二邏輯位址區間全部或者部分重疊於所述第一邏輯位址區間,並且將搜索結果儲存在匹配寄存器和結果位址寄存器;經過一段時間後,偵測所述匹配寄存器和所述結果位址寄存器的值以判斷所述第一邏輯位址區間的全部或者部分資料是否暫存在所述資料緩存器;以及當所述第一邏輯位址區間的所述全部或者部分資料暫存在所述資料緩存器時,操作所述資料緩存器中暫存的所述第一邏輯位址區間的所述全部或者部分資料,其中,所述處理單元設置以在所述一段時間中,中斷所述主機命令的執行,並且跳轉去執行不同的主機命令,或者背景操作。
  9. 如請求項8所述的執行主機命令的裝置,其中,所述主機命令為主機讀取命令,所述處理單元設置以當所述結果位址寄存器的指出項目的所述第一邏輯位址區間全部重疊所述第二邏輯位址區間時,從所述資料緩存器讀取所述第一邏輯位址區間的待寫入資料;以及驅動主機介面以回覆讀取資料給主機端。
  10. 如請求項9所述的執行主機命令的裝置,其中,所述處理單元設置以當所述結果位址寄存器的所述指出項目的所述第一邏輯位址區間部分重疊所述第二邏輯位址區間時,從所述資料緩存器讀取所述第一邏輯位址區間中的重疊於所述第二邏輯位址區間的第三邏輯位址區間的待寫入資料,以及驅動閃存介面以從閃存模組讀取所述第一邏輯位址區間中的不重疊於所述第二邏輯位址區間的第四邏輯位址區間的資料;合併所述第三邏輯位址區間的所述待寫入資料以及所述第四邏輯位址區間的所述資料;以及驅動所述主機介面以回覆合併後資料給所述主機端。
  11. 如請求項8所述的執行主機命令的裝置,其中,所述主機命令為主機寫入命令,所述處理單元設置以當所述結果位址寄存器的指出項目的所述第一邏輯位址區間全部重疊所述第二邏輯位址區間時,更新所述資料緩存器中暫存的所述第一邏輯位址區間的待寫入資料。
  12. 如請求項11所述的執行主機命令的裝置,其中,所述處理單元設置以當所述結果位址寄存器的所述指出項目的所述第一邏輯位址區間部分重疊所述第二邏輯位址區間時,更新所述資料緩存器中暫存的所述第一邏輯位址區間中的重疊於所述第二邏輯位址區間的第三邏輯位址區間的待寫入資料;將所述第一邏輯位址區間中的不重疊 於所述第二邏輯位址區間的第四邏輯位址區間的待寫入資料儲存在所述資料緩存器;以及新增相應於所述第四邏輯位址區間的項目到所述循序寫入佇列。
  13. 如請求項8所述的執行主機命令的裝置,其中,所述搜索引擎包含:第二開始寄存器,儲存所述第二開始邏輯位址;第二結束寄存器,儲存所述第二結束邏輯位址;第一比較器包含第一輸入端、第二輸入端和第一輸出端,其中,所述第一輸入端耦接所述第一結束寄存器,所述第二輸入端耦接所述第二開始寄存器,並且所述第一輸出端設置以當所述第一結束邏輯位址不小於所述第二開始邏輯位址時,輸出邏輯”0”給或非閘;第二比較器包含第三輸入端、第四輸入端和第二輸出端,其中,所述第三輸入端耦接所述第二結束寄存器,所述第四輸入端耦接所述第一開始寄存器,並且所述第二輸出端設置以當所述第二結束邏輯位址不小於所述第一開始邏輯位址時,輸出邏輯”0”給所述或非閘;所述或非閘包含第五輸入端、第六輸入端和第三輸出端,其中,所述第五輸入端耦接所述第一輸出端,所述第六輸入端耦接所述第二輸出端,所述第三輸出端設置以當所述第五輸入端和所述第六輸入端都接收到邏輯”0”時,輸出邏輯”1”給所述匹配寄存器,並且輸出邏輯”1”給輸出電路;以及所述輸出電路,設置以當從所述或非閘接收到邏輯”1”時,輸出所述隨機存取記憶體中儲存所述第二邏輯位址區間的記憶體位址至所述結果位址寄存器。
TW111144898A 2022-11-24 2022-11-24 執行主機命令的方法及電腦程式產品及裝置 TWI814647B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW111144898A TWI814647B (zh) 2022-11-24 2022-11-24 執行主機命令的方法及電腦程式產品及裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW111144898A TWI814647B (zh) 2022-11-24 2022-11-24 執行主機命令的方法及電腦程式產品及裝置

Publications (2)

Publication Number Publication Date
TWI814647B true TWI814647B (zh) 2023-09-01
TW202422344A TW202422344A (zh) 2024-06-01

Family

ID=88965909

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111144898A TWI814647B (zh) 2022-11-24 2022-11-24 執行主機命令的方法及電腦程式產品及裝置

Country Status (1)

Country Link
TW (1) TWI814647B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070233933A1 (en) * 2005-12-28 2007-10-04 Jeremy Wang Hard disk drive cache memory and playback device
TW200745858A (en) * 2005-12-28 2007-12-16 Silicon Storage Tech Inc Unified memory and controller
US20090157946A1 (en) * 2007-12-12 2009-06-18 Siamak Arya Memory having improved read capability
TW201715401A (zh) * 2015-10-29 2017-05-01 愛思開海力士有限公司 資料儲存設備及其操作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070233933A1 (en) * 2005-12-28 2007-10-04 Jeremy Wang Hard disk drive cache memory and playback device
TW200745851A (en) * 2005-12-28 2007-12-16 Silicon Storage Tech Inc Hard disk drive cache memory and playback device
TW200745858A (en) * 2005-12-28 2007-12-16 Silicon Storage Tech Inc Unified memory and controller
US20090157946A1 (en) * 2007-12-12 2009-06-18 Siamak Arya Memory having improved read capability
TW201715401A (zh) * 2015-10-29 2017-05-01 愛思開海力士有限公司 資料儲存設備及其操作方法

Similar Documents

Publication Publication Date Title
US9760281B2 (en) Sequential write stream management
TWI719654B (zh) 閃存實體資源集合管理裝置及方法以及電腦程式產品
US11537328B2 (en) Method and apparatus for executing host commands
US20220100425A1 (en) Storage device, operating method of storage device, and operating method of computing device including storage device
CN117369729B (zh) 一种zns ssd的附加写入实现方法
CN111897743A (zh) 数据储存装置及逻辑至物理地址映射表的载入方法
TWI756854B (zh) 管理資料儲存的方法及裝置以及電腦程式產品
TWI814647B (zh) 執行主機命令的方法及電腦程式產品及裝置
TWI797905B (zh) 驅動獨立磁碟冗餘陣列引擎的裝置及方法
TWI844174B (zh) 主機命令的邏輯位址區間搜索方法及裝置
TWI749490B (zh) 寫入閃存管理表的電腦程式產品及方法及裝置
US11494113B2 (en) Computer program product and method and apparatus for scheduling execution of host commands
TWI822516B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
TWI822517B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置
CN118072792A (zh) 主机命令的逻辑地址区间搜索方法及装置
CN118069028A (zh) 存储介质、执行主机命令的方法及装置
TWI810876B (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置
TWI758745B (zh) 排程主機命令執行的電腦程式產品及方法及裝置
TWI818762B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
TWI805505B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
US20240012564A1 (en) Memory controller and storage device including the same
TWI799221B (zh) 寫入資料到閃存記憶體的方法及裝置
TW202416120A (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TW202416108A (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置