TWI758745B - 排程主機命令執行的電腦程式產品及方法及裝置 - Google Patents
排程主機命令執行的電腦程式產品及方法及裝置 Download PDFInfo
- Publication number
- TWI758745B TWI758745B TW109119399A TW109119399A TWI758745B TW I758745 B TWI758745 B TW I758745B TW 109119399 A TW109119399 A TW 109119399A TW 109119399 A TW109119399 A TW 109119399A TW I758745 B TWI758745 B TW I758745B
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- flash memory
- queue
- command
- user data
- Prior art date
Links
Images
Landscapes
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
本發明涉及一種排程主機命令執行的電腦程式產品,包含由閃存控制器的處理單元載入並執行的程式碼,其程式碼用於:依照到達上述閃存控制器的時間順序從第一佇列的頂端遷移一或多個主機寫命令至第二佇列,使得第一佇列的頂端儲存主機讀命令;從第一佇列的頂端提取主機讀命令;執行主機讀命令,用於從閃存模組讀取使用者資料;以及回覆使用者資料給主機端。
Description
本發明涉及儲存裝置,尤指一種排程主機命令執行的電腦程式產品及方法及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
一般來說,閃存控制器會以先進先出的順序來執行主機發出的命令,例如主機讀命令、主機寫命令、主機抹寫命令等,用來從閃存單元的指定位址讀取使用者資料,寫入使用者資料到閃存單元的指定位址,或者抹寫閃存單元中的指定實體塊。此外,為了提升閃存單元的空間使用,閃存控制器可能主動安排垃圾回收程序(Garbage Collection,GC Process)需要執行的控制器讀指令、控制器寫指令等。當主機讀命令的到達時間晚於大量檔案的主機寫命令,和/或GC程序需要執行的GC讀指令、GC寫指令時,就需要等待之前的命
令都執行完。然而,這些主機讀命令有可能是主機端開啟應用程式時需要讀取特定位址的使用者資料,如果不能及時回覆將造成應用程式的開啟不順,造成使用者認為固態硬碟(Solid State Disk,SSD)產品的效能不佳。因此,本發明提出一種排程主機命令執行的電腦程式產品及方法及裝置,用於解決如上所述的問題。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種排程主機命令執行的電腦程式產品,包含由閃存控制器的處理單元載入並執行的程式碼,其程式碼用於:依照到達上述閃存控制器的時間順序從第一佇列的頂端遷移一或多個主機寫命令至第二佇列,使得第一佇列的頂端儲存主機讀命令;從第一佇列的頂端提取主機讀命令;執行主機讀命令,用於從閃存模組讀取使用者資料;以及回覆使用者資料給主機端。
本說明書另涉及一種排程主機命令執行的方法,由閃存控制器執行,包含:依照到達上述閃存控制器的時間順序從第一佇列的頂端遷移一或多個主機寫命令至第二佇列,使得第一佇列的頂端儲存主機讀命令;從第一佇列的頂端提取主機讀命令;執行主機讀命令,用於從閃存模組讀取使用者資料;以及回覆使用者資料給主機端。
如上所述閃存控制器中的隨機存取記憶體配置所述第一佇列和所述第二佇列,第一佇列用於依照到達閃存控制器的時間順序儲存主機端發出的主機命令。
本說明書更另涉及一種排程主機命令執行的裝置,包含:隨機存取記憶體;閃存介面,耦接閃存模組;主機介面,耦接主機端;和處理單元,耦接隨機存取記憶體、閃存介面和主機介面。處理單元依照到達上述裝置的時間順序從第一佇列的頂端遷移一個或多個主機寫命令至第二佇列,使得第一佇列的頂端儲存主機讀命令;從第一
佇列的頂端提取主機讀命令;執行主機讀命令,用於驅動閃存介面從閃存模組讀取使用者資料;以及驅動主機介面回覆使用者資料給主機端。
上述實施例的優點之一,通過上述二個佇列的設置以及上述的排程機制,可避免主機讀命令想取得的使用者資料因為長資料的寫入而不能及時回覆給主機端,造成應用程式的開啟不順。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
132:匯流排
134:處理單元
136:隨機存取記憶體
138:直接記憶體存取控制器
139:閃存介面
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
300:原生命令佇列
400:原生寫命令佇列
S510~S570:方法步驟
S610~S650:方法步驟
S710~S730:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為一些實施方式的原生命令佇列的示意圖。
圖4為依據本發明實施例的原生命令佇列和原生寫命令佇列的示意圖。
圖5為依據本發明實施例的寫入程序的方法流程圖。
圖6為依據本發明實施例的垃圾回收程序的方法流程圖。
圖7為依據本發明實施例的讀取程序的方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的「包含」、「包括」等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如「第一」、「第二」、「第三」等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先
後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為「連接」或「耦接」至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為「直接連接」或「直接耦接」至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如「介於」相對於「直接介於」,或者是「鄰接」相對於「直接鄰接」等等。
參考圖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等。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閃存單元。
在一些實施方式中,RAM 136配置空間給原生命令佇列(Native Command Queue,NCQ),用於依照命令到達閃存控制器130的時間順序儲存主機端110發送的命令,例如主機讀命令、主機寫命令、主機抹寫命令等。參考圖3,NCQ 300包含多筆項目(Entry)形成的集合(Collection)。原生命令佇列300中的每一筆項目可儲存一個主機命令,例如主機讀命令(以「R」代表)、主機寫命令(以
「W」代表)等。NCQ 300的操作基本原則是由結束位置(如指標T
所指的位置)新增項目(可稱為入列),並且由開始位置(如指標H所指的位置)移除項目(可稱為出列)。也就是說,第一個新增至NCQ 300的命令,也將會是第一個被移出的,符合先進先出(First-In First-Qut,FIFO)的原則。位在第8個項目的主機讀命令必須等第0到7個主機寫命令都執行完才能執行。然而,此主機讀命令可能是因應主機端110開啟應用程式時需要讀取特定位址的使用者資料而發出的,而之前的8個主機寫命令的執行可能是需要花費一段時間的長資料寫入,使得此主機讀命令想取得的使用者資料不能及時回覆給主機端110,造成應用程式的開啟不順,更糟的是,讓使用者認為固態硬碟(Solid State Disk,SSD)產品的效能不佳。
為了解決如上所述實施方式的問題,本發明實施例提出一種主機命令的排程機制,用於讓主機讀命令不因為長資料寫入的主機寫命令的執行而太晚被提取及執行。在一般情況下,新排程機制可讓主機讀命令的優先權高於主機寫命令,讓閃存控制器130能夠優先服務主機讀命令。參考圖4,除了NCQ 300以外,RAM 136另配置空間給原生寫命令佇列(Native Command Queue-Write,NCQ-W)400,用於依照到達閃存控制器130的時間順序儲存從NCQ 300遷移的主機寫命令。舉例來說,由於如圖3所示的NCQ 300中包含了主機讀命令,並且在第0至第7個項目的主機寫命令之後,因此,新的排程機制將NCQ 300中的第0至第7個項目的主機寫命令先遷移到NCQ-W 400,使得處理單元134能夠先從NCQ 300中提取並執行第0到第1個主機讀命令。詳細來說,處理單元134依照第0到第1個主機讀命令中攜帶的資訊驅動閃存介面139從閃存模組150讀取使用者資料,並且驅動主機介面131回覆使用者資料給主機端110。所屬技術領域人員可讓NCQ-W 400的深度D2小於NCQ 300的深度D1。例如,D1為20、32、64時,D2可分別設為10、16、32。通過NCQ 300和NCQ-W 400的設
置,以及如上所述的排程機制,可避免主機讀命令想取得的使用者資料因為長資料的寫入而不能及時回覆給主機端110,造成應用程式的開啟不順。
為了讓主機讀命令能夠儘快被執行,處理單元134載入和執行相關韌體或軟體指令時會在多個時間點從NCQ 300遷移主機寫命令到NCQ-W 400主機讀命令,並偵測NCQ 300中是否存在任何主機讀命令。詳細說明如下:參考圖5,為相應於如上所述的排程機制,本發明實施例提出一種寫入程序,由處理單元134載入和執行相關韌體或軟體指令時實施。在寫入程序中,處理單元134分批次提取並執行NCQ-W 400中的主機寫命令,並且在每個批次中執行不超過預設數目的主機寫命令,用於避免因執行主機寫命令的時間過久而阻礙了未完成的垃圾回收程序(Garbage Collection,GC Procedure)和/或造成主機讀命令的執行逾時。在每個批次中,如果有未完成的GC處理,處理單元134先執行一段時間的未完成GC處理,然後才提取和執行NCQ-W 400中不超過預設數目的主機寫命令。此外,如果NCQ 300中存在主機讀命令,處理單元134先執行主機讀命令,然後才提取和執行NCQ-W 400中不超過預設數目的主機寫命令。
當閃存模組150中的閒置塊(Spare Blocks)的數量少於閥值時,閃存控制器130需要花費時間執行GC程序,避免閃存模組150因可用空間不足而無法再寫入資料。詳細來說,處理單元134驅動閃存介面139將閃存模組150中儲存的多個實體塊中破碎的使用者資料蒐集起來,並將蒐集的使用者資料寫入閃存模組150中新的實體塊,用於使這些釋放出來的實體塊可在抹除後被其他使用者資料使用。
圖5的詳細步驟說明如下:
步驟S510:判斷是否存在未完成的GC處理。如果是,流程繼續步驟S520的處理;否則,流程繼續步驟S530的處理。需要注意的是,
如果不先執行GC程序來釋放出更多的可用空間,可能會讓主機寫命令在執行時發生空間不足的情況。處理單元134可在執行GC程序的過程中,於RAM 136中紀錄一個公用變數(Public Variable),用於指出GC程序還需要的時間(也可稱為剩餘時間)。處理單元134可通過公用變數判斷是否存在未完成的GC程序。如果公用變數的值大於0,則代表存在未完成的GC程序。如果公用變數的值等於0,則代表不需要執行GC程序。
步驟S520:進入GC程序。GC程序的技術細節將在圖6中描述。在這裡需要注意的是,當GC程序離開後,將回到寫入程序並繼續步驟S530的處理。
步驟S530:從NCQ 300的頂端遷移主機寫命令到NCQ-W 400,直到在NCQ 300的頂端發現了主機讀命令,或NCQ 300空了,或NCQ-W 400滿了為止。處理單元134可反覆執行一個迴圈,直到上述條件中的一個滿足為止。在每一回合,處理單元134先檢查上述條件是否滿足,並且,當所有條件都不滿足時,從NCQ 300的頂端遷移一個主機寫命令到NCQ-W 400的底端。
步驟S540:判斷NCQ 300中是否存在主機讀命令。如果是,流程繼續步驟S550的處理;否則,流程進行步驟S560的處理。
步驟S550:進入讀取程序。讀取程序的技術細節將在圖7中描述。在這裡需要注意的是,當讀取程序離開後,將回到寫入程序並繼續步驟S560的處理。
步驟S560:從NCQ-W 400的頂端提取並執行NCQ-W 400中不超過預設數目的主機寫命令。參考圖2,為了優化閃存模組150的寫入操作,舉例來說,處理單元134可將提取的主機寫命令所指示寫入的使用者資料切割成固定的長度,例如16K位元組,並且驅動閃存介面139通過通道CH#0到CH#3並行地寫入致能的NAND閃存單元。接著,處理單元134可驅動主機介面131回覆這些提取的主機寫命令已經執
行完畢的訊息給主機端110。
步驟S570:判斷是否執行完NCQ-W 400中所有的主機寫命令。如果是,流程離開寫入程序;否則,流程進行步驟S510的處理。
參考圖6,為相應於如上所述的排程機制,本發明實施例提出一種GC程序,由處理單元134載入和執行相關韌體或軟體指令時實施。處理單元134分段執行GC程序,用於避免因執行GC程序的時間過久而讓主機寫命令的執行逾時。在每個批次中,如果NCQ 300中存在主機讀命令,處理單元134先執行主機讀命令,然後才執行一段時間的GC操作。需要注意的是,GC程序並不只能從寫入程序觸發,也可以是處理單元134在執行優化的背景程序時觸發。詳細步驟說明如下:
步驟S610:從NCQ 300的頂端遷移主機寫命令到NCQ-W 400,直到在NCQ 300的頂端發現了主機讀命令,或NCQ 300空了,或NCQ-W 400滿了為止。詳細技術細節可參考步驟S530的說明,為求簡明不再贅述。
步驟S620:判斷NCQ 300中是否存在主機讀命令。如果是,流程繼續步驟S630的處理;否則,流程進行步驟S640的處理。
步驟S630:進入讀取程序。讀取程序的技術細節將在圖7中描述。
在這裡需要注意的是,當讀取程序離開後,將回到GC程序並繼續步驟S640的處理。
步驟S640:執行一段時間的GC操作。
步驟S650:計算未完成GC程序所需要的時間。處理單元134可更新RAM 136中的公用變數,用於指出未完成GC程序所需要的時間給其他程序參考。
從圖5和圖6所示的方法可知,當NCQ 300中存在主機讀命令時,寫入程序和GC程序都需要暫停來讓主機讀命令先執行。然而,閃存控制器130也需要保證主機寫命令不能逾時,否則,主機端110可能
認為先前發送給閃存控制器130的主機寫命令發生逾時而採取一些錯誤回復行動,例如重送主機寫命令。
為避免如上所述的問題,參考圖7,本發明實施例提出一種讀取程序,由處理單元134載入和執行相關韌體或軟體指令時實施。詳細步驟說明如下:
步驟S710:判斷NCQ-W 400中是否存在即將逾時的主機寫命令。如果是,流程繼續步驟S720的處理;否則,流程進行步驟S730的處理。在每個主機寫命令進入NCQ 300時,都會給予一個時間戳記(Timestamp),用於記錄此主機寫命令進入閃存控制器130的時間點。處理單元134可判斷NCQ-W 400頂端的主機寫命令的時間戳記距離現在所經過的時間是否大於預設閥值,如果是,則代表NCQ-W 400頂端的主機寫命令即將逾時。
步驟S720:從NCQ-W 400的頂端提取並執行即將逾時的主機寫命令。處理單元134可執行一個迴圈,持續搜集位於NCQ-W 400頂端的主機寫命令,直到NCQ-W 400不存在即將逾時的主機寫命令,或者NCQ-W 400空了為止。接著,為了優化閃存模組150的寫入操作,舉例來說,處理單元134可將搜集到的主機寫命令所指示寫入的使用者資料切割成固定的長度,例如16K位元組,並且驅動閃存介面139通過通道CH#0到CH#3並行地寫入致能的NAND閃存單元。接著,處理單元134可驅動主機介面131回覆這些搜集到的主機寫命令已經執行完畢的訊息給主機端110。
步驟S730:從NCQ 300的頂端提取並執行主機讀命令。處理單元134可執行一個迴圈,持續提取並執行位於NCQ 300頂端的主機讀命令,直到NCQ 300的頂端不是主機讀命令,或者NCQ 300空了為止。在每一個回合中,處理單元134可取得主機讀命令指示的邏輯位址(例如,邏輯區塊位址Logical Block Address,LBA),並藉由搜索邏輯-實體映射表(Logical-to-Physical,L2P Table)來得到此邏輯位
址的使用者資料實際儲存於閃存模組150的實體位址。接著,處理單元134可驅動閃存介面139從閃存模組150讀取此實體位址的使用者資料並驅動主機介面131將讀取的使用者資料回覆給主機端110。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如儲存裝置中的韌體轉換層(Firmware Translation Layer,FTL)、特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1、圖2中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖5至圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S510~S570:方法步驟
Claims (10)
- 一種排程主機命令執行的電腦程式產品,包含由一閃存控制器的一處理單元載入並執行的程式碼,其中,上述閃存控制器中的一隨機存取記憶體配置空間給一第一佇列和一第二佇列,上述第一佇列用於依照到達上述閃存控制器的時間順序儲存一主機端發出的主機命令,上述程式碼用於:依照到達上述閃存控制器的時間順序從上述第一佇列的頂端遷移一或多個主機寫命令至上述第二佇列,使得上述第一佇列的頂端儲存一主機讀命令;從上述第一佇列的頂端提取上述主機讀命令;執行上述主機讀命令,用於從一閃存模組讀取使用者資料;以及回覆上述使用者資料給上述主機端。
- 如請求項1所述的排程主機命令執行的電腦程式產品,包含程式碼用於:在上述主機讀命令執行前,判斷上述第二佇列是否存在即將逾時的主機寫命令;以及當上述第二佇列存在即將逾時的主機寫命令時,從上述第二佇列提取並執行上述即將逾時的主機寫命令,其中,上述即將逾時的主機寫命令指其時間戳記距離現在所經過的時間大於一閥值的主機寫命令。
- 如請求項1所述的排程主機命令執行的電腦程式產品,包含程式碼用於:在上述主機讀命令執行後,執行一段時間的垃圾回收操作,用於將上述閃存模組中儲存的多個實體塊中破碎的使用者資料蒐集起 來,並將上述蒐集的使用者資料寫入上述閃存模組中新的實體塊。
- 如請求項1所述的排程主機命令執行的電腦程式產品,包含程式碼用於:執行一段時間的垃圾回收操作後,從上述第二佇列的頂端提取上述主機寫命令;以及執行上述主機寫命令,其中,上述垃圾回收操作將上述閃存模組中儲存的多個實體塊中破碎的使用者資料蒐集起來,並將所蒐集的使用者資料寫入上述閃存模組中新的實體塊。
- 一種排程主機命令執行的方法,由一閃存控制器執行,其中,上述閃存控制器中的一隨機存取記憶體配置空間給一第一佇列和一第二佇列,上述第一佇列用於依照到達上述閃存控制器的時間順序儲存一主機端發出的主機命令,上述方法包含:依照到達上述閃存控制器的時間順序從上述第一佇列的頂端遷移一或多個主機寫命令至上述第二佇列,使得上述第一佇列的頂端儲存一主機讀命令;從上述第一佇列的頂端提取上述主機讀命令;執行上述主機讀命令,用於從一閃存模組讀取使用者資料;以及回覆上述使用者資料給上述主機端。
- 一種排程主機命令執行的裝置,包含:一隨機存取記憶體,配置空間給一第一佇列和一第二佇列,其中,上述第一佇列用於依照到達一閃存控制器的時間順序儲存一主機端發出的主機命令; 一閃存介面,耦接一閃存模組;一主機介面,耦接上述主機端;以及一處理單元,耦接上述隨機存取記憶體、上述閃存介面和上述主機介面,依照到達上述裝置的時間順序從上述第一佇列的頂端遷移一或多個主機寫命令至上述第二佇列,使得上述第一佇列的頂端儲存一主機讀命令;從上述第一佇列的頂端提取上述主機讀命令;執行上述主機讀命令,用於驅動上述閃存介面從上述閃存模組讀取使用者資料;以及驅動上述主機介面回覆上述使用者資料給上述主機端。
- 如請求項6所述的排程主機命令執行的裝置,其中,上述處理單元在上述主機讀命令執行前,判斷上述第二佇列是否存在即將逾時的主機寫命令;以及當上述第二佇列存在即將逾時的主機寫命令時,從上述第二佇列提取並執行上述即將逾時的主機寫命令,用於驅動上述閃存介面寫入指定的使用者資料到上述閃存模組。
- 如請求項7所述的排程主機命令執行的裝置,其中,上述即將逾時的主機寫命令指其時間戳記距離現在所經過的時間大於一閥值的主機寫命令。
- 如請求項6所述的排程主機命令執行的裝置,其中,上述處理單元在上述主機讀命令執行後,執行一段時間的垃圾回收操作,用於驅動上述閃存介面將上述閃存模組中儲存的多個實體塊中破碎的使用者資料蒐集起來,並將所蒐集的使用者資料寫入上述閃存模組中新的實體塊。
- 如請求項6所述的排程主機命令執行的裝置,其中,上述處理單 元在執行一段時間的垃圾回收操作後,從上述第二佇列的頂端提取上述主機寫命令;以及執行上述主機寫命令,用於驅動上述閃存介面寫入指定的使用者資料到上述閃存模組,上述垃圾回收操作將上述閃存模組中儲存的多個實體塊中破碎的使用者資料蒐集起來,並將所蒐集的使用者資料寫入上述閃存模組中新的實體塊。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109119399A TWI758745B (zh) | 2020-06-10 | 2020-06-10 | 排程主機命令執行的電腦程式產品及方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109119399A TWI758745B (zh) | 2020-06-10 | 2020-06-10 | 排程主機命令執行的電腦程式產品及方法及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202147103A TW202147103A (zh) | 2021-12-16 |
TWI758745B true TWI758745B (zh) | 2022-03-21 |
Family
ID=80784010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109119399A TWI758745B (zh) | 2020-06-10 | 2020-06-10 | 排程主機命令執行的電腦程式產品及方法及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI758745B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140013041A1 (en) * | 2009-07-16 | 2014-01-09 | Mosaid Technologies Incorporated | Simultaneous read and write data transfer |
US20170075570A1 (en) * | 2015-09-10 | 2017-03-16 | HoneycombData Inc. | Reducing read command latency in storage devices |
US20170109096A1 (en) * | 2015-10-15 | 2017-04-20 | Sandisk Technologies Inc. | Detection of a sequential command stream |
CN110365604A (zh) * | 2018-03-26 | 2019-10-22 | 三星电子株式会社 | 储存设备及其队列管理方法 |
CN111164566A (zh) * | 2018-03-06 | 2020-05-15 | 西部数据技术公司 | 具有主机侧命令注入的非易失性存储系统 |
-
2020
- 2020-06-10 TW TW109119399A patent/TWI758745B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140013041A1 (en) * | 2009-07-16 | 2014-01-09 | Mosaid Technologies Incorporated | Simultaneous read and write data transfer |
US20170075570A1 (en) * | 2015-09-10 | 2017-03-16 | HoneycombData Inc. | Reducing read command latency in storage devices |
US20170109096A1 (en) * | 2015-10-15 | 2017-04-20 | Sandisk Technologies Inc. | Detection of a sequential command stream |
CN111164566A (zh) * | 2018-03-06 | 2020-05-15 | 西部数据技术公司 | 具有主机侧命令注入的非易失性存储系统 |
CN110365604A (zh) * | 2018-03-26 | 2019-10-22 | 三星电子株式会社 | 储存设备及其队列管理方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202147103A (zh) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI660346B (zh) | 記憶體管理方法以及儲存控制器 | |
CN117687568A (zh) | 顺序写入流管理 | |
CN111399750B (zh) | 闪存数据写入方法及计算机可读取存储介质 | |
US11537328B2 (en) | Method and apparatus for executing host commands | |
US11960396B2 (en) | Method and computer program product for performing data writes into a flash memory | |
CN117897686A (zh) | 用于在固态驱动器中减少nand管芯冲突的方法和设备 | |
US11494113B2 (en) | Computer program product and method and apparatus for scheduling execution of host commands | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
TWI670599B (zh) | 記憶體管理方法以及儲存控制器 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
CN114625307A (zh) | 计算机可读存储介质、闪存芯片的数据读取方法及装置 | |
TW202223662A (zh) | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
CN113495850A (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TWI774277B (zh) | 主機命令的執行方法及裝置 | |
TWI740446B (zh) | 管理垃圾回收程序的電腦程式產品及方法及裝置 | |
TWI814647B (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
TWI844174B (zh) | 主機命令的邏輯位址區間搜索方法及裝置 | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
TWI805505B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
US20240202112A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands | |
US20240201902A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands |