TWI774277B - 主機命令的執行方法及裝置 - Google Patents
主機命令的執行方法及裝置 Download PDFInfo
- Publication number
- TWI774277B TWI774277B TW110109643A TW110109643A TWI774277B TW I774277 B TWI774277 B TW I774277B TW 110109643 A TW110109643 A TW 110109643A TW 110109643 A TW110109643 A TW 110109643A TW I774277 B TWI774277 B TW I774277B
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- logical block
- block address
- command
- address number
- Prior art date
Links
Images
Landscapes
- Selective Calling Equipment (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明涉及一種主機命令的執行方法,由閃存控制器中的主機介面實施,包含:偵測是否存在預設數目的連續的主機長寫入命令,每個主機長寫入命令所指示的第一起始邏輯區塊地址編號不對齊於閃存模組中的一個超頁面的首個實體頁面;如果是,計算偏移量,使得主機寫入命令所指示的第二起始邏輯區塊地址編號加上偏移量後能夠對齊一個超頁面的首個實體頁面;並且在邏輯區塊地址位移表中儲存紀錄,包含第二起始邏輯區塊地址編號和偏移量的資訊。通過如上所述的紀錄,可避免後續的主機命令所請求的起始邏輯區塊地址編號不對齊。
Description
本發明涉及儲存裝置,尤指一種主機命令的執行方法及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
一般來說,閃存控制器會以先進先出的順序來執行主機端發出的命令,例如主機讀命令、主機寫命令、主機抹寫命令等,用來從閃存單元的指定位址讀取使用者資料,寫入使用者資料到閃存單元的指定位址,或者抹寫閃存單元中的指定實體塊。有效率地執行主機端發出的主機命令,一直是個重要的課題。因此,本發明提出一種主機命令的執行方法及裝置,用於提升主機命令的執行效能。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種主機命令的執行方法,由閃存控制器中的主機介
面執行,包含:偵測是否存在預設數目的連續的主機長寫入命令,每個主機長寫入命令所指示的第一起始邏輯區塊地址編號不對齊於閃存模組中的一個超頁面的首個實體頁面;如果是,計算偏移量,使得主機寫入命令所指示的第二起始邏輯區塊地址編號加上偏移量後能夠對齊一個超頁面的首個實體頁面;將第二起始邏輯區塊地址編號加上偏移量以產生第三起始邏輯區塊地址編號;在邏輯區塊地址位移表中儲存紀錄,包含第二起始邏輯區塊地址編號和偏移量的資訊;以及輸出關聯於主機寫入命令的第三起始邏輯區塊地址編號至命令佇列的指定位置,使得韌體轉換層依據關聯於主機寫入命令的第三起始邏輯區塊地址編號驅動閃存介面以寫入資料到閃存模組。
本說明書還涉及一種主機命令的執行裝置,包含:閃存介面;隨機存取記憶體;處理單元;和主機介面。隨機存取記憶體配置空間給命令佇列。主機介面包含邏輯區塊地址轉換電路,用於偵測是否存在預設數目的連續的主機長寫入命令,其中,每個主機長寫入命令所指示的第一起始邏輯區塊地址編號不對齊於閃存模組中的一個超頁面的首個實體頁面;如果是,計算偏移量,使得主機寫入命令所指示的第二起始邏輯區塊地址編號加上偏移量後能夠對齊閃存模組中的一個超頁面的首個實體頁面;將第二起始邏輯區塊地址編號加上偏移量以產生第三起始邏輯區塊地址編號;在邏輯區塊地址位移表中儲存紀錄,包含第二起始邏輯區塊地址編號和上述偏移量的資訊;以及輸出關聯於主機寫入命令的第三起始邏輯區塊地址編號至命令佇列的指定位置,使得上述處理單元在執行韌體轉換層的程式碼時依據關聯於主機寫入命令的第三起始邏輯區塊地址編號驅動上述閃存介面以寫入資料到閃存模組。
上述實施例的優點之一,通過如上所述的邏輯區塊地址轉換電路的設置,可減少韌體轉換層在驅動閃存介面寫入資料時花費時間和計算資源來填充並寫入不必要的虛假資料至閃存模組。
上述實施例的另一優點,減少韌體轉換層在驅動閃存介面讀取資料時花費時間和計算資源來從閃存模組讀取這些不必要的虛假資料。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
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#0~1,410#0~1,420#0~1,430#0~1:資料平面
P#0,P#1,P#2,P#n,P#n+1,P#n+2,P#n+3:超頁面
60:為主機寫入命令的LBA轉換電路
610:LBA位移表
632:除法器
634,652,662,664,682,810:比較器
636,656,663,684,698,820,840:輸出電路
640:及閘
654,696,830:加法器
670:計數器
692:計算器
694:寫入電路
S710~S780:方法步驟
S910~S940:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的命令佇列的示意圖。
圖4為依據本發明實施例的超頁面的示意圖。
圖5為當起始邏輯區塊地址(Logical Block Address,LBA)編號不對齊一個超頁面的首個實體頁面時的填充虛假資料的示意圖。
圖6為依據本發明實施例的為主機寫入命令的LBA轉換電路的方塊圖。
圖7為依據本發明實施例的主機寫入命令的處理方法流程圖。
圖8為依據本發明實施例的為主機讀取命令或者主機抹除命令的LBA轉換電路的方塊圖。
圖9為依據本發明實施例的主機讀取命令或者主機抹除命令的處理方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的「包含」、「包括」等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如「第一」、「第二」、「第三」等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,
或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為「連接」或「耦接」至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為「直接連接」或「直接耦接」至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如「介於」相對於「直接介於」,或者是「鄰接」相對於「直接鄰接」等等。
參考圖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)、抹除命令(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閃存單元。
在一些實施例中,一個邏輯區塊地址(Logical Block Address,LBA,由主機端110管理)可對應到512位元組(Bytes)的資料。主機端110可通過主機介面131發出一個主機寫入命令給處理單元134,請求裝置端寫入多個LBA(例如,64個、128個、256個等)的資料到閃存模組150。此外,主機端110可通過主機介面131發出一個主機讀取命令給處理單元134,請求從裝置端讀取多個LBA的資料。為
了讓資料存取有效率,處理單元134可驅動閃存介面139並行地將這些LBA的資料寫入到一個輸出入通道中的多個NAND閃存單元,或者並行地從一個輸出入通道中的多個NAND閃存單元讀取這些LBA的資料。
在一些實施例中,RAM 136配置空間給命令佇列(Command Queue),用於依照命令到達閃存控制器130的時間順序儲存主機端110發送的命令,例如主機讀命令、主機寫命令、主機抹寫命令等。參考圖3,命令佇列300包含多筆項目(Entry)形成的集合(Collection)。命令佇列300中的每一筆項目可儲存一個主機命令,例如主機讀命令(以「R」代表)、主機寫命令(以「W」代表)等。命令佇列300的操作基本原則是由結束位置(如指標T所指的位置)新增項目(可稱為入列),並且由開始位置(如指標H所指的位置)移除項目(可稱為出列)。也就是說,第一個新增至命令佇列300的命令,也將會是第一個被移出的,符合先進先出(First-In First-Out,FIFO)的原則。
一個NAND閃存單元可包含多個資料平面(Data Plane),每個資料平面包含多個實體塊(Physical Block),每個實體塊可包含多個實體頁面(Physical Page)。每個實體頁面可儲存多個(例如16個、32個、64個等)LBA的資料。舉例來說,參考圖4,每個NAND閃存單元包含2個資料平面。NAND閃存單元153#0包含資料平面400#0和400#1,NAND閃存單元153#1包含資料平面410#0和410#1,依此類推。每個實體頁面可儲存16個LBA的資料,也就是8KB的資料。NAND閃存單元153#0至153#3中的特定頁面可形成一個超頁面(Super Page),用於儲存128個LBA的資料,也就是64KB的資料。例如,NAND閃存單元153#0至153#3的所有資料平面中的第0個實體塊的第0個實體頁面形成一個超頁面P#0,NAND閃存單元153#0至153#3的所有資料平面中的第0個實體塊的第1個實體頁面形成一
個超頁面P#1,依此類推。為了優化閃存模組150的存取效能,處理單元134可驅動閃存介面139將LBA#0到LBA#127的資料寫入超頁面P#0,將LBA#128到LBA#255的資料寫入超頁面P#1,依此類推。之後,處理單元134可驅動閃存介面139從超頁面P#0讀取LBA#0到LBA#127的資料,從超頁面P#1讀取LBA#128到LBA#255的資料,依此類推。
主機端110可通過主機介面131發出主機寫入命令給處理單元134,請求寫入特定的資料,例如,檔案系統(File System)、根目錄(Root Directory)、使用者檔案(User Files)等。例如,表1顯示LBA範圍和主機資料之間的範例對照表:
檔案系統和根目錄的LBA範圍為“0x0”至“0x4EFF”,第一使用者檔案的LBA範圍為“0x4F00”至“0x204EFF”,依此類推。
為了優化儲存的效能,主機端110發出的每個主機寫入命令所請求寫入的資料的長度不超過超頁面長度。然而,如果一個主機寫入命令所指示寫入的起始LBA編號不能夠對齊於閃存模組150中的一個
超頁面的首個實體頁面時,資料寫入的效能會大幅降低。例如,為了寫入第四使用者檔案,主機端110依序發出多個主機寫入命令給裝置端,分別請求寫入LBA範圍為“0x404F08”至“0x404F87”、“0x404F88”至“0x405007”、“0x405008”至“0x405087”、“0x405088”至“0x405107”等的資料。在一些實施例中,韌體轉換層(Firmware Translation Layer,FTL)被處理單元134執行時,通過命令佇列300接收到這些主機寫入命令,接著,為每個主機寫入命令將64KB的資料寫入2個超頁面,並且在適當的位置補上虛假資料(Dummy Data)。參考圖5的(a)部分,FTL為LBA範圍為“0x404F08”至“0x404F87”的64KB資料產生兩個超頁面的64KB資料。第一個64KB資料依序包含4KB的虛假資料和LBA範圍為“0x404F08”至“0x404F7F”的60KB資料。第二個64KB資料依序包含LBA範圍為“0x404F80”至“0x404F87”的4KB資料和60KB的虛假資料。接著,FTL驅動閃存介面139將第一個64KB資料寫入閃存模組150中的超頁面P#n,並且將第二個64KB資料寫入閃存模組150中的超頁面P#n+1,其中“n”代表正整數。參考圖5的(b)部分,FTL為LBA範圍為“0x404F88”至“0x405007”的64KB資料產生兩個超頁面的64KB資料。第一個64KB資料依序包含4KB的虛假資料和LBA範圍為“0x404F88”至“0x404FFF”的60KB資料。第二個64KB資料依序包含LBA範圍為“0x405000”至“0x405007”的4KB資料和60KB的虛假資料。接著,FTL驅動閃存介面139將第一個64KB資料寫入閃存模組150中的超頁面P#n+2,並且將第二個64KB資料寫入閃存模組150中的超頁面P#n+3,其中“n”代表正整數。從圖5的範例可知,FTL需要耗費時間和計算資源來填寫虛假資料,並且,閃存模組150還需要耗費時間和儲存空間來寫入這些無用的虛假資料,造成資料寫入的效能大幅下降。此外,當執行關於這些資料的主機讀取命令時,閃存模組150需要耗費時間來讀取這些無用的虛假資料,並且,FTL需要耗費
時間和計算資源來移除虛假資料,造成資料讀取的效能大幅下降。
為了解決如上所述的問題,本發明實施例在主機介面131中設置專屬的LBA轉換電路(LBA Shifting Circuit),用於偵測是否存在預設數目的連續的多個主機長寫入命令(Successive Host Long-Write Commands),並且每個主機長寫入命令所指示寫入的起始LBA編號不對齊於閃存模組150中的一個超頁面的首個實體頁面。如果是,則計算偏移量(Offset),讓此主機寫入命令所指示寫入的起始LBA編號加上偏移量後能夠對齊閃存模組150中的一個超頁面的首個實體頁面。接著,在LBA位移表中儲存一筆紀錄,包含此主機寫入命令所指示寫入的起始LBA編號(作為分隔LBA編號),以及偏移量的資訊,用於讓位於分隔LBA編號之後的起始LBA編號在加上偏移量後能夠對齊閃存模組150中的一個超頁面的首個實體頁面。接著,輸出此主機寫入命令至命令佇列300,其中攜帶更改後的起始LBA編號和寫入長度等參數,用於讓FTL依據此主機寫入命令驅動閃存介面139以執行相應的寫入操作。
此外,專屬的LBA轉換電路還用於當一個主機寫入命令、主機讀取命令或者主機抹除命令中攜帶的起始LBA編號等於分隔LBA編號或者落在分隔LBA編號之後時,將此主機寫入命令或者主機讀取命令的起始LBA編號加上偏移量。接著,輸出此主機寫入命令或者主機讀取命令至命令佇列300,其中攜帶更改後的起始LBA編號和寫入或者讀取長度等參數,用於讓FTL據以驅動閃存介面139以執行相應的寫入或者讀取操作。
搭配參考圖6所顯示的為主機寫入命令的LBA轉換電路60的實施例,本發明實施例提出一種在主機介面131中執行的主機寫入命令的處理方法。詳細說明如下:
步驟S710:從主機端110接收主機寫入命令。主機寫入命令至少攜帶命令碼、起始LBA號碼“LBA_start”、長度“LEN”等參數,而這些
參數會儲存在主機介面131中的寄存器。主機介面131中的寄存器還紀錄一個LBA位移表610,用於儲存分隔LBA編號及偏移量的資訊。為了簡化說明,本發明實施例描述LBA位移表610儲存一筆成對的分隔LBA編號“LBA_sft”及偏移量“Offset”的紀錄。初始時,LBA位移表610可包含分隔LBA編號為“0xFFFFFF”及偏移量為“0x0”的紀錄。主機介面131還包含一個寄存器,用於儲存前一個主機寫入命令的結束LBA編號加1“LBA_pre_end+1”。
步驟S720:判斷起始LBA編號“LBA_start”是否大於或等於LBA位移表中紀錄的分隔LBA編號“LBA_sft”。如果是,流程繼續步驟S730的處理;否則,流程繼續步驟S740的處理。例如,LBA轉換電路60開始運行時,首先以訊號“EN”致能比較器652。比較器652比較起始LBA編號與LBA位移表610中的分隔LBA編號。如果起始LBA編號大於或等於分隔LBA編號,則輸出訊號以致能加法器654;否則,輸出訊號給及閘640。
步驟S730:將起始LBA編號加上LBA位移表610中紀錄的偏移量“Offset”,並且輸出加總的結果到命令佇列300中的指定位置。例如,加法器654將LBA位移表610中紀錄的偏移量“Offset”加上起始LBA編號“LBA_start”,並且驅動輸出電路656以輸出加總的結果到命令佇列300中的指定位置。
步驟S740:判斷是否偵測到n個未對齊的連續主機長寫入命令,“n”為大於1的正整數。如果是,則流程進行步驟S750的處理;否則,流程進行步驟S780的處理。例如,“n”設為4。
例如,LBA轉換電路60開始運行時,以訊號“EN”致能除法器632,用於將起始LBA編號除以一個超頁面所能包含的LBA的最大數目(如128個,以“0x80”表示)。除法器632還驅動比較器634以及輸出計算後的餘數“r”給比較器634。比較器634用於判斷餘數是否等於0,如果是,代表此主機寫入命令的起始LBA編號對齊一個超頁
面的首個實體頁面,比較器634輸出訊號以致能輸出電路636。如果餘數不等於0,代表此主機寫入命令的起始LBA編號沒有對齊一個超頁面的首個實體頁面,比較器634輸出訊號給及閘640。
LBA轉換電路60開始運行時,以訊號“EN”致能比較器662,用於判斷此主機寫入命令所請求的長度是否等於或大於一個超頁面所能包含的LBA的最大數目,如果等於,代表此主機寫入命令是長寫入命令,比較器662輸出訊號給及閘640。如果小於,代表此主機寫入命令不是長寫入命令,比較器662輸出訊號以致能輸出電路663。
當及閘640接收到三個輸入訊號時,代表比較器634偵測到此主機寫入命令的起始LBA編號沒有對齊一個超頁面的首個實體頁面,比較器652偵測到此主機寫入命令的起始LBA編號小於LBA位移表610中紀錄的分隔LBA編號,比較器662偵測到此主機寫入命令是長寫入命令,及閘640輸出訊號以致能比較器664。
比較器664比較起始LBA編號是否等於前一個主機寫入命令的結束LBA編號加1“LBA_pre_end+1”,如果是,代表此主機寫入命令與前一個主機寫入命令形成連續寫入操作,比較器664輸出訊號以將計數器670累加1。如果起始LBA編號不等於前一個主機寫入命令的結束LBA編號加1,代表此主機寫入命令與前一個主機寫入命令不形成連續寫入操作,比較器664輸出訊號以將計數器670重設為0。計數器670輸出的數值代表連續主機寫入命令的數目。
計數器670被改變後輸出計數值“CNT”並且驅動比較器682。比較器682比較計數值是否大於或等於預設數值(如“0x4”),如果是,代表偵測到預設數目的連續主機長寫入命令,比較器682輸出訊號以驅動計算器692、寫入電路694和加法器696。如果計數值小於預設數值,比較器682輸出訊號以驅動輸出電路684。
步驟S750:計算能夠讓起始LBA編號對齊超頁面的首個實體頁面的偏移量。例如,當起始LBA編號的8個最低有效位(Least Significant
Bits)大於“0x80”時,計算器692將“0x100”減去起始LBA標號以獲取偏移量“Offset”。當起始LBA編號的8個最低有效位小於“0x80”時,計算器692將“0x80”減去起始LBA標號以獲取偏移量“Offset”。
步驟S760:更新LBA位移表610中的內容,用於儲存此起始LBA編號(作為分隔LBA編號)和偏移量的資訊。例如,寫入電路694將此起始LBA編號“LBA_start”覆寫LBA位移表610中原來的分隔LBA編號“LBA_sft”,並且將計算出的偏移量覆寫LBA位移表610中原來的偏移量。在這裡需要注意的是,更新後的LBA位移表610會在適當時間點寫入到閃存模組150當做備份,以防止瞬間斷電(Sudden Power Off,SPO)。
步驟S770:將起始LBA編號加上計算出的偏移量“Offset”,並且輸出加總的結果到命令佇列300中的指定位置。例如,加法器696將計算器692輸出的偏移量“Offset”加上起始LBA編號“LBA_start”,並且驅動輸出電路698以輸出加總的結果到命令佇列300中的指定位置。需要注意的是,加總的結果能夠被一個超頁面的長度整除。
步驟S780:將起始LBA編號輸出到命令佇列300中的指定位置。例如,輸出電路636、663或684被驅動時輸出起始LBA編號“LBA_start”到命令佇列300中的指定位置。
雖然圖6的實施例顯示的輸出電路636、663、684為不同的組件,但是所屬技術領域人員可將輸出電路636、663、684中的任意兩個或全部實施為相同的元件,本發明並不因此受限。雖然圖6的實施例顯示的成對的加法器654和輸出電路656,以及加法器696和輸出電路698為不同的成對組件,但是所屬技術領域人員可將成對的加法器654和輸出電路656,以及加法器696和輸出電路698實施為同一對元件,本發明並不因此受限。
由於LBA轉換電路60在處理主機寫入命令“W#3”時偵測到4個未對齊的連續主機長寫入命令(步驟S740中“是”的路徑),計算出偏移量為“0x78”(步驟S750);更新LBA位移表610中的內容,用於儲存分隔LBA編號“0x405088”和偏移量“0x78”的資訊(步驟S760);並且輸出更新後的起始LBA編號“0x405100”到命令佇列300中的指定位置。
接著,由於從主機寫入命令“W#4”以後的主機寫入命令的起始LBA編號都大於LBA位移表610中紀錄的分隔LBA編號“0x405088”(步驟S720中“是”的路徑),LBA轉換電路60將每個起始LBA編號加上LBA位移表610中紀錄的偏移量“0x78”,並且輸出加總的結果到命令佇列300中的指定位置(步驟S730)。表3顯示經過LBA轉換電路60處理後的起始LBA編號的變化:
搭配參考圖8所顯示的為主機讀取命令或者主機抹除命令的LBA轉換電路80的實施例,本發明實施例提出一種在主機介面131中執行的主機讀取命令或者主機抹除命令的處理方法。詳細說明如下:
步驟S910:從主機端110接收主機讀取或者抹除命令。主機讀取或者抹除命令至少攜帶命令碼、起始LBA號碼“LBA_start”、長度等參數,而這些參數會儲存在主機介面131中的寄存器。
步驟S920:判斷起始LBA編號“LBA_start”是否大於或等於LBA位移表610中紀錄的分隔LBA編號“LBA_sft”。如果是,流程繼續步驟S930的處理;否則,流程繼續步驟S940的處理。例如,LBA轉換電路80開始運行時,首先以訊號“EN”致能比較器810。比較器810比較起始LBA編號與LBA位移表610中的分隔LBA編號。如果起始LBA編號大於或等於分隔LBA編號,則輸出訊號給加法器830;否則,輸出訊號以致能輸出電路820。
步驟S930:將起始LBA編號加上LBA位移表610中紀錄的偏移量“Offset”,並且輸出加總的結果到命令佇列300中的指定位置。例如,加法器830將LBA位移表610中紀錄的偏移量“Offset”加上起始LBA編號“LBA_start”,並且驅動輸出電路840以輸出加總的結果到命令佇列300中的指定位置。
步驟S940:將起始LBA編號輸出到命令佇列300中的指定位置。例如,輸出電路820被驅動時輸出起始LBA編號“LBA_start”到命令佇列300中的指定位置。
由於LBA轉換電路80在處理主機讀取命令“R#0”到“R#3”時偵測到其起始LBA編號小於LBA位移表610中紀錄的分隔LBA編號“0x405088”(步驟S920中“否”的路徑),直接將起始LBA編號輸出到命令佇列300中的指定位置(步驟S940)。
接著,由於從主機讀取命令“R#4”以後的主機讀取命令的起始LBA編號都大於LBA位移表610中紀錄的分隔LBA編號“0x405088”(步驟S920中“是”的路徑),LBA轉換電路80將每個起始LBA編號加上LBA位移表610中紀錄的偏移量“0x78”,並且輸出加總的結果到命令佇列300中的指定位置(步驟S930)。表5顯示經過LBA轉換電路80處理後的起始LBA編號的變化:
雖然圖8的實施例顯示LBA轉換電路80為獨立於LBA轉換電路60的裝置,但是所屬技術領域人員可將圖8的組件810到840整合到圖6的電路中,本發明並不因此局限。例如,將圖6中的每個元件都受到模式訊號(Mode Signal)的控制,模式訊號指示圖6中的每個元件工作在資料寫入模式和非資料寫入模式(包含資料讀取、資料抹除模式等)。當模式訊號指示工作在資料寫入模式時,圖6中的每個元件都能夠被致能來完成如上所述的關聯於主機寫入命令的操作。當模式訊號指示工作在非資料寫入模式時,只有圖6中部分的相應元件(例如元件610、652、654、656、636等)來完成如上所述的關聯於主機讀取命令或者主機抹除命令的操作。
雖然實施例描述圖6和圖8所示中的輸出電路用於輸出原始的或者修改後的起始LBA編號至命令佇列300中的指定位置,但是所屬技術領域人員也可讓每個輸出電路一併輸出命令編號、命令類型、操作碼、長度等資訊至命令佇列300中的指定位置,本發明並不因此受限。
通過如上所述的LBA轉換電路60和80的設置,避免了如圖5中所示的缺點,也就是減少韌體轉換層在驅動閃存介面139寫入資料時花費時間和計算資源來填充並寫入不必要的虛假資料至閃存模組150。此外,也減少韌體轉換層在驅動閃存介面139讀取資料時花費時間和計算資源來從閃存模組150讀取這些不必要的虛假資料。
雖然圖1、2、6、8、中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖7、9的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,
或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S710~S780:方法步驟
Claims (12)
- 一種主機命令的執行方法,由一閃存控制器中的一主機介面實施,其中,上述主機介面耦接一主機端,包含:偵測是否存在一預設數目的連續的主機長寫入命令,其中每個上述主機長寫入命令所指示的一第一起始邏輯區塊地址編號不對齊於一閃存模組中的一個超頁面的首個實體頁面;當偵測到存在上述預設數目的上述連續的主機長寫入命令時,計算一偏移量,使得一主機寫入命令所指示的一第二起始邏輯區塊地址編號加上上述偏移量後能夠對齊上述閃存模組中的一個超頁面的首個實體頁面;將上述第二起始邏輯區塊地址編號加上上述偏移量以產生一第三起始邏輯區塊地址編號;在一邏輯區塊地址位移表中儲存一紀錄,包含上述第二起始邏輯區塊地址編號和上述偏移量的資訊,其中上述第二起始邏輯區塊地址編號代表一分隔起始邏輯區塊地址編號;以及輸出關聯於上述主機寫入命令的上述第三起始邏輯區塊地址編號至一命令佇列的指定位置,使得一韌體轉換層依據關聯於上述主機寫入命令的上述第三起始邏輯區塊地址編號驅動一閃存介面以寫入資料到上述閃存模組。
- 如請求項1所述的主機命令的執行方法,其中,上述第三起始邏輯區塊地址編號能夠被一個超頁面的長度整除。
- 如請求項1所述的主機命令的執行方法,包含:當一主機命令中攜帶的一第四起始邏輯區塊地址編號等於上述分隔起始邏輯區塊地址編號或者落在上述分隔起始邏輯區塊地址編 號之後時,將上述第四起始邏輯區塊地址編號加上上述偏移量以產生一第五起始邏輯區塊地址編號;以及輸出關聯於上述主機命令的上述第五起始邏輯區塊地址編號至上述命令佇列的指定位置,使得上述韌體轉換層依據關聯於上述主機命令的上述第五起始邏輯區塊地址編號驅動上述閃存介面以完成相應操作。
- 如請求項3所述的主機命令的執行方法,其中,上述第五起始邏輯區塊地址編號能夠被一個超頁面的長度整除。
- 一種主機命令的執行裝置,包含:一閃存介面,耦接一閃存模組;一隨機存取記憶體,配置空間給一命令佇列;一處理單元,耦接上述隨機存取記憶體及上述閃存介面;以及一主機介面,耦接一主機端和上述隨機存取記憶體,包含:一第一邏輯區塊地址轉換電路,用於偵測是否存在一預設數目的連續的主機長寫入命令,其中,每個上述主機長寫入命令所指示的一第一起始邏輯區塊地址編號不對齊於上述閃存模組中的一個超頁面的首個實體頁面;當偵測到存在上述預設數目的上述連續的主機長寫入命令時,計算一偏移量,使得一主機寫入命令所指示的一第二起始邏輯區塊地址編號加上上述偏移量後能夠對齊上述閃存模組中的一個超頁面的首個實體頁面;將上述第二起始邏輯區塊地址編號加上上述偏移量以產生一第三起始邏輯區塊地址編號;在一邏輯區塊地址位移表中儲存一紀錄,包含上述第二起始邏輯區塊地址編號和上述偏移量的資訊,其中上述第二起始邏輯區塊地址編號代表一分隔起始邏輯區塊地址編號; 以及輸出關聯於上述主機寫入命令的上述第三起始邏輯區塊地址編號至上述命令佇列的指定位置,使得上述處理單元在執行一韌體轉換層的程式碼時依據關聯於上述主機寫入命令的上述第三起始邏輯區塊地址編號驅動上述閃存介面以寫入資料到上述閃存模組。
- 如請求項5所述的主機命令的執行裝置,其中,上述第一邏輯區塊地址轉換電路包含:一計數器;一及閘;一除法器,用於將上述第二起始邏輯區塊地址編號除以一個超頁面所能包含的邏輯區塊地址的最大數目,並且輸出計算後的一餘數;一第一比較器,耦接上述除法器,用於接收上述餘數;並且當上述餘數等於0時,輸出一第一訊號給上述及閘;一第二比較器,用於當上述主機寫入命令所請求的長度等於或大於一個超頁面所能包含的邏輯區塊地址的最大數目時,輸出一第二訊號給上述及閘;一第三比較器,用於從上述及閘接收到相應於上述第一訊號和上述第二訊號的一第三訊號時,判斷上述第二起始邏輯區塊地址編號是否等於前一個主機寫入命令所請求的結束邏輯區塊地址編號加1,如果是,將上述計數器累加1;一第四比較器,耦接上述計數器,用於當上述計數器的計數值大於或等於預設數值時,致能一計算器、一加法器和一寫入電路;上述計算器,耦接上述第四比較器,用於計算上述偏移量;上述加法器,耦接上述第四比較器,用於將上述第二起始邏輯區塊地址編號加上上述偏移量以產生上述第三起始邏輯區塊地址編 號;上述寫入電路,用於在上述邏輯區塊地址位移表中儲存上述紀錄;以及一輸出電路,耦接上述加法器,用於將上述第三起始邏輯區塊地址編號輸出至上述命令佇列的指定位置。
- 如請求項5所述的主機命令的執行裝置,其中,上述邏輯區塊地址位移表被儲存到上述閃存模組當做備份。
- 如請求項5所述的主機命令的執行裝置,其中,上述第三起始邏輯區塊地址編號能夠被一個超頁面的長度整除。
- 如請求項5所述的主機命令的執行裝置,其中,上述主機介面包含:一第二邏輯區塊地址轉換電路,用於當一主機命令中攜帶的一第四起始邏輯區塊地址編號等於上述分隔起始邏輯區塊地址編號或者落在上述分隔起始邏輯區塊地址編號之後時,將上述第四起始邏輯區塊地址編號加上上述偏移量以產生一第五起始邏輯區塊地址編號;以及輸出關聯於上述主機命令的上述第五起始邏輯區塊地址編號至上述命令佇列的指定位置,使得上述處理單元在執行上述韌體轉換層的程式碼時依據關聯於上述主機命令的上述第五起始邏輯區塊地址編號驅動上述閃存介面以完成相應操作。
- 如請求項9所述的主機命令的執行裝置,其中,上述第二邏輯區塊地址轉換電路包含:一比較器,用於當上述第四起始邏輯區塊地址編號等於上述分隔起 始邏輯區塊地址編號或者落在上述分隔起始邏輯區塊地址編號之後時,驅動一加法器;上述加法器,耦接上述比較器,用於將上述第四起始邏輯區塊地址編號加上上述偏移量以產生上述第五起始邏輯區塊地址編號;以及一輸出電路,耦接上述加法器,用於輸出關聯於上述主機命令的上述第五起始邏輯區塊地址編號至上述命令佇列的指定位置。
- 如請求項9所述的主機命令的執行裝置,其中,上述第五起始邏輯區塊地址編號能夠被一個超頁面的長度整除。
- 如請求項9所述的主機命令的執行裝置,其中,上述主機端發出上述主機命令請求寫入或讀取從上述第四起始邏輯地址編號開始的資料,以及上述資料的長度等於一個超頁面的長度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110109643A TWI774277B (zh) | 2021-03-18 | 2021-03-18 | 主機命令的執行方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110109643A TWI774277B (zh) | 2021-03-18 | 2021-03-18 | 主機命令的執行方法及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI774277B true TWI774277B (zh) | 2022-08-11 |
TW202238396A TW202238396A (zh) | 2022-10-01 |
Family
ID=83807035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110109643A TWI774277B (zh) | 2021-03-18 | 2021-03-18 | 主機命令的執行方法及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI774277B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201802682A (zh) * | 2016-04-01 | 2018-01-16 | 英特爾公司 | 基於非依電性記憶體的實體區塊位址集合之間的調換操作之耗損均化技術 |
US20180350180A1 (en) * | 2004-06-01 | 2018-12-06 | Daniel William Onischuk | Computerized voting system |
TW202105219A (zh) * | 2019-07-16 | 2021-02-01 | 開曼群島商創新先進技術有限公司 | Tee系統中的資料傳輸方法和裝置 |
TW202105371A (zh) * | 2019-07-16 | 2021-02-01 | 開曼群島商創新先進技術有限公司 | Tee系統中的多執行緒資料傳輸方法和裝置 |
-
2021
- 2021-03-18 TW TW110109643A patent/TWI774277B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180350180A1 (en) * | 2004-06-01 | 2018-12-06 | Daniel William Onischuk | Computerized voting system |
TW201802682A (zh) * | 2016-04-01 | 2018-01-16 | 英特爾公司 | 基於非依電性記憶體的實體區塊位址集合之間的調換操作之耗損均化技術 |
TW202105219A (zh) * | 2019-07-16 | 2021-02-01 | 開曼群島商創新先進技術有限公司 | Tee系統中的資料傳輸方法和裝置 |
TW202105371A (zh) * | 2019-07-16 | 2021-02-01 | 開曼群島商創新先進技術有限公司 | Tee系統中的多執行緒資料傳輸方法和裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW202238396A (zh) | 2022-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318164B2 (en) | Programmable input/output (PIO) engine interface architecture with direct memory access (DMA) for multi-tagging scheme for storage devices | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
KR20100100394A (ko) | 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법 | |
TWI766207B (zh) | 多命名空間的資料存取方法及電腦程式產品 | |
TW202205095A (zh) | 資料儲存裝置與資料處理方法 | |
CN111796759A (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
TWI774277B (zh) | 主機命令的執行方法及裝置 | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
TWI805505B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
CN113448487A (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
CN113778317A (zh) | 计算机可读取存储介质、调度主机命令的方法及装置 | |
TWI810876B (zh) | 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置 | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
TWI799221B (zh) | 寫入資料到閃存記憶體的方法及裝置 | |
TWI844174B (zh) | 主機命令的邏輯位址區間搜索方法及裝置 | |
TWI740446B (zh) | 管理垃圾回收程序的電腦程式產品及方法及裝置 | |
TW202416108A (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
TWI814647B (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
TW202416120A (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
US20230266896A1 (en) | Memory system for tailoring data, host system for controlling the memory system, and operation method of the memory system | |
TW202422345A (zh) | 主機命令的邏輯位址區間搜索方法及裝置 |