TW202038097A - 多平面上頁面的片段資料讀取方法及電腦程式產品 - Google Patents

多平面上頁面的片段資料讀取方法及電腦程式產品 Download PDF

Info

Publication number
TW202038097A
TW202038097A TW108140180A TW108140180A TW202038097A TW 202038097 A TW202038097 A TW 202038097A TW 108140180 A TW108140180 A TW 108140180A TW 108140180 A TW108140180 A TW 108140180A TW 202038097 A TW202038097 A TW 202038097A
Authority
TW
Taiwan
Prior art keywords
read
data
command
page
plane
Prior art date
Application number
TW108140180A
Other languages
English (en)
Other versions
TWI737031B (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 慧榮科技股份有限公司
Publication of TW202038097A publication Critical patent/TW202038097A/zh
Application granted granted Critical
Publication of TWI737031B publication Critical patent/TWI737031B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

本發明提出一種電腦程式產品,由處理單元載入並執行,包含以下的程式碼:提供排程資料表;將命令佇列中的每一記憶體操作命令依據其實體位址資訊安排到排程資料表中的儲存格;依據排程資料表的內容為一個邏輯單元號挑選二個或以上的記憶體操作命令;驅動閃存介面來完成多頁面讀取精簡操作,從該邏輯單元號讀取該挑選的記憶體操作命令請求的資料;以及回覆讀取的資料給主機。

Description

多平面上頁面的片段資料讀取方法及電腦程式產品
本發明涉及快閃記憶裝置,特別指一種多平面上頁面的片段資料讀取方法及電腦程式產品。
快閃記憶裝置通常分為NOR快閃記憶裝置與NAND快閃記憶裝置。NOR快閃記憶裝置為隨機存取裝置,主機(Host)可於位址腳位上提供任何存取NOR快閃記憶裝置的位址,並及時地從NOR快閃記憶裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃記憶裝置並非隨機存取,而是序列存取。NAND快閃記憶裝置無法像NOR快閃記憶裝置一樣,可以存取任何隨機位址,主機反而需要寫入序列的位元組(Bytes)的值到NAND快閃記憶裝置中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(快閃記憶裝置中寫入作業的最小資料塊)或一個區塊(快閃記憶裝置中抹除作業的最小資料塊)。
傳統的NAND快閃記憶體(NAND flash memory)提供的讀取命令,通常讓控制器能夠讀取一整個跨平面頁面的資料。然而,隨著NAND快閃記憶裝置中的跨平面頁面的長度(如16KB)已經超過主機執行的作業系統所管理的邏輯區塊位址(Logical Block Address LBA)的資料長度(如4KB),傳統每次都要讀取一整個跨平面頁面資料的讀取操作於處理主機的短資料讀取命令時可能降低NAND快閃記憶體的整體效能。因此,本發明提出一種多平面上頁面的片段資料讀取方法及電腦程式產品,針對擁有較長跨平面頁面的NAND快閃記憶體進行最佳化的資料讀取操作。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本發明提出一種多平面上頁面的片段資料讀取方法,該方法由處理單元於載入並執行韌體或軟體的程式碼時實施,包含:提供排程資料表;將命令佇列中的每一記憶體操作命令依據其實體位址資訊安排到排程資料表中的儲存格;依據排程資料表的內容為一個邏輯單元號挑選二個或以上的記憶體操作命令;驅動閃存介面來完成多頁面讀取精簡操作,從該邏輯單元號讀取該挑選的記憶體操作命令請求的資料;以及回覆讀取的資料給主機。
本發明提出一種多平面上頁面的片段資料讀取的電腦程式產品,包含用於實施如上步驟的程式碼。
上述實施例的優點之一,通過使用排程資料表將兩個或兩個以上的片段讀取操作搜集成為一個MPR-lite操作,可以提升短資料讀取的效能。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接"至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1,快閃儲存系統架構100包含主機(Host)110、控制器(Controller,或稱裝置端Device)130及邏輯單元號(Logical Block Number,LUN)150。此系統架構可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品。控制器130可包含多核處理器133,為單一運算元件,搭配兩個用於載入韌體或軟體模組的程式碼的獨立處理器核心133-0及133-1。處理器核心133-0可通過主機介面131使用通用快閃記憶儲存(Universal Flash Storage,UFS)、快速非揮發記憶體(Non-Volatile Memory Express,Nvme)、通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(Advanced Technology Attachment,ATA)、序列先進技術附著(Serial Advanced Technology Attachment,SATA)、快速周邊元件互聯(Peripheral Component Interconnect Express,PCI-E)或其他介面協定,與主機110彼此通信。處理器核心133-1可通過閃存介面137使用雙倍資料率(Double Data Rate,DDR)通訊協定,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他介面協定,與LUN 110彼此通信。
邏輯單元號(Logical Unit Number,LUN)150提供大量的儲存空間,通常是數百Gigabytes,甚至是Terabytes,可用於儲存大量的使用者資料,例如高解析度圖片、影片等。LUN 150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可為三層式單元(Triple Level Cells,TLCs)或四層式單元(Quad-Level Cells,QLCs)。資料緩存器(Data Buffer)139可用於緩存從LUN 150讀取並即將敲出給主機110的使用者資料。參考圖2,閃存介面137可包含四個輸出入通道(I/O Channels,以下簡稱通道CH),包括通道CH#0至CH#3,每一個通道CH連接三個LUN,例如,通道CH#0連接LUN150#0、150#4及150#8。處理器核心133-1可驅動閃存介面137發出致能訊號CE#0至CE#2中的一個來致能LUN 150#0至150#3、LUN 150#4至150#7、或LUN 150#8至150#11,接著以並行的方式從致能的LUN讀取使用者資料。為了簡化說明,在下述僅以通道CH#0至CH#1以及CE#0至CE#1來致能LUN 150#0~1以及LUN 150#4~5為例進行說明,但不以此為限。
控制器130可配置命令佇列135,用於儲存多個快閃記憶體操作命令,快閃記憶體操作命令例如是讀取頁面(Read Page)命令、頁面編程(Program Page)命令、抹寫區塊(Erase Block)命令等等。快閃記憶體操作命令可以關聯於主機110發出的但尚未處理的主機命令(Host Commands),例如是主機讀取命令、主機寫入命令等等,亦可以是控制器130所自主發出的命令。
命令佇列135可實施於靜態隨機存取記憶體(Static Random Access Memory,SRAM),包含多筆項目(Entry)的集合。命令佇列135中的每一筆項目可儲存一個快閃記憶體操作命令及相關資訊。集合中的快閃記憶體操作命令可依據到達時間依序存放。集合的操作基本原則是由處理器核心133-0從結束位置(如指標CQT所指的位置)新增快閃記憶體操作命令(可稱為入列),並且由處理器核心133-1從開始位置(如指標CQH所指的位置)移除快閃記憶體操作命令(可稱為出列)。然而,為了最佳化資料讀取操作,第一個新增至命令佇列135的快閃記憶體操作命令,不一定會是第一個被移出的。另外,控制器130亦可使用堆疊(Stack)以儲存上述的快閃記憶體操作命令,並不以此為限。
LUN 150包含多個平面(Planes),參考圖4,以LUN 150#0為例,其包含4個平面(Planes),包括:平面410至470。每一平面包含多個物理區塊(Physical Blocks,簡稱為區塊),以平面410為例,其包含區塊410#0~m,m為正整數。每個區塊包含多個頁面(Pages),以區塊410#0為例,其包含頁面P#0至P#n,n為正整數。每個頁面P包含多個NAND記憶體單元(Memory Cells),並且NAND記憶體單元可為三層式單元或四層式單元。於一些實施例中,當每一個NAND記憶體單元為三層式單元而可記錄8個狀態時,一個字元線可包含頁面P#0(可稱為最低位元頁面,MSB page)、頁面P#1(可稱為中間位元頁面,CSB,Center Significant Bit page)及頁面P#2(可稱為最高位元頁面,LSB page)。當每一個NAND記憶體單元為四層式單元而可記錄16個狀態時,除了MSB、CSB以及LSB頁面之外,更包括TSB(可稱為頂部位元,TSB,Top Significant Bit)頁面。同一LUN 150中的不同平面中一個的區塊可虛擬形成大區塊(Big Block),不同LUN 150中的大區塊(Big Block)可虛擬形成超級區塊(Super Block)。
資料快取136以及/或資料緩存器(Data Buffer)139可儲存資料讀取時所需查找的邏輯-物理映射表(Logical-Physical Mapping Table,L2P映射表),L2P映射表記錄每一筆資料的邏輯位址與物理位址的映射資訊。資料快取136可實施於SRAM,資料緩存器139可實施於動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)中的預先分配區域。
雖然每個區塊或頁面中的記憶體單元為TLCs或QLCs,但是,控制器130可採用單層式單元(Single Logical Cells,SLCs)模式以將資料編程至區塊或頁面中,用以提升資料讀取及資料編程的速度。為了方便區塊編程模式的管理,控制器130較佳建立並維護實體組態資料表(Physical Configuration Table)以記錄每一區塊的編程模式,即預設模式(TLC或QLC)或SLC模式,並將實體組態資料表儲存至資料快取136中。於資料讀取操作中,控制器130可通過搜索實體組態資料表來辨認每個區塊或頁面的編程模式,如此一來,再以適當的讀取方式來讀取區塊或頁面的資料。
控制器130可輸出讀取頁面命令,用以讀取LUN 150中一個平面中的一個區塊的一個頁面,亦可輸出讀取頁面多平面(Read Page Multi-plane)命令以讀取不同平面的一個區塊的一個頁面的資料。然而,有時候主機110並不需要一整個頁面資料,而是僅需要一個頁面中的4KB資料。此時,控制器130可利用片段讀取(Snap Read)命令以讀取一個頁面中的部分資料。關於片段讀取操作,參考圖5。波型510顯示耦接於LUN 150及閃存介面137間的資料線DQ[7:0]的時脈類型,以1個”CMD”時脈指出從閃存介面137傳送的主要命令,5個”Addr”時脈指出從閃存介面137傳送想要讀取的LUN 137的實體位址,再以1個”CMD”時脈指出從閃存介面137傳送的確認(Confirm)命令,最後,”DOUT ”表示從LUN 150所輸出的資料。波型520為波型510的示範片段讀取命令,主要命令為00h,確認命令為20h,因此,LUN 150判斷此操作命令為片段讀取命令,為讀取指定頁面(實體位址)的部分頁面資料。
部分頁面資料例如為16KB頁面資料中的8KB資料,參考圖6,其中,8KB資料可選自頁面中的三種不同的區段:前8KB區段625,中間8KB區段645,及後8KB區段665,每一8KB區段的長度較佳大於等於8KB。另外,部分頁面資料也可例如為16KB頁面資料中的4KB資料,即將16KB頁面區分成第一4KB區段、第二4KB區段、第三4KB區段以及第四4KB區段,每一4KB區段的長度較佳大於等於4KB。
另外,由於LUN 150包含多個平面(Planes),因此,控制器130可輸出多頁面讀取精簡(Multi-Page Read Lite,MPR-Lite)命令,用以讀取LUN 150中多個平面中的頁面上的片段資料,參考圖6,例如:平面810及830的頁面P#0中的前8KB區段625,平面830及850的頁面P#1的後8KB區段665。MPR-Lite命令可提升片段資料的讀取效能。
參考圖1,以資料讀取為例,處理器核心133-0可通過主機介面131取得來自主機110的資料讀取命令,其中,資料讀取命令提供目標資料的邏輯位址。處理器核心133-0藉由查找L2P映射表以及邏輯位址可取得目標資料在LUN 150中的頁面位置(實體位址),並藉由實體組態資料表可得知目標資料的編程模式。接著,處理器核心133-0產生快閃記憶體操作命令至命令佇列135,其中,快閃記憶體操作命令包括目標資料的實體位址。
控制器130可利用命令佇列135以儲存多個快閃記憶體操作命令,例如:64個快閃記憶體操作命令。處理器核心133-1可在資料快取136中建立並維護排程表(Scheduling Table)900以及/或待命表(Standby Table)910,用以排序命令佇列135中快閃記憶體操作命令,使得快閃快閃記憶體操作命令的執行更具效率。參考圖9,例如,命令佇列135目前儲存13個讀取頁面命令,標號分別為”a”~”m”。處理器核心133-1將讀取特定LUN 150的讀取頁面命令記錄至排程表900中的特定欄位,例如,將讀取頁面命令”b”、 ”a”、 ”d”排入排程表900中,以分別讀取LUN 150#0、LUN 150#4以及LUN 150#1的頁面,如此一來,處理器核心133-1可以同步以及交錯(Interleaving)的操作方式將讀取頁面命令”b”、 ”a”、 ”d”輸出至LUN 150#0、LUN 150#4以及LUN 150#1。處理器核心133-1將讀取頁面命令”c”、”e”~”m”排入待命表,當排程表900中的讀取頁面命令”b”、 ”a”、 ”d”執行完畢之後,再將待命表中的讀取頁面命令”e”、”c”、”g” 排入至排程表900。之後,再將待命表中的讀取頁面命令”j”、”f”、”k” 排入至排程表900,最後,將待命表中的讀取頁面命令”i”、”m” 排入至排程表900。因此,13個讀取頁面命令需要4個週期才能執行完畢。於一些實施方式,處理器核心133-1僅建立並維護排程表900,並將快閃記憶體操作命令依序儲存至排程表900,處理器核心133-1執行完第一列快閃記憶體操作命令後,繼續執行下一列快閃記憶體操作命令,以此類推。
如果目標資料為一個頁面中的4KB或8KB資料時,則控制器130可利用命令佇列135以儲存片段讀取命令而非讀取頁面命令。或是,以MPR-Lite命令來執行命令佇列135中的片段讀取命令,即將多個片段讀取命令整合成一個MPR-Lite命令。當多個片段讀取命令整合成一個MPR-Lite命令時,控制器130需將多個片段讀取命令變更成多個讀取頁面多平面命令,確認命令為32h,而最後一個片段讀取命令不變更,確認命令為20h,如此一來,控制器130不但可以同步以及交錯的操作方式來執行片段讀取命令,更可以增加片段讀取命令的執行效率。參考圖11,片段讀取命令”b”為讀取LUN 150#0中目標資料,片段讀取命令”a”和”h”為讀取LUN 150#4中不同平面的目標資料,片段讀取命令”d”和”g”為讀取LUN 150#1中不同平面的目標資料,因此,控制器130可將片段讀取命令”a”、”b”、”d”、”h”以及”g”以MPR-Lite命令來執行,因此,控制器130可一併執行5個片段讀取命令,而非3個片段讀取命令,換句話說,MPR-Lite命令可將片段讀取命令的執行效率提升了66%。
於一些實施例中,為因應如上所述的MPR Lite命令,處理器核心133-1可於載入並執行特定軟體或韌體命令時實施如圖10所示的快閃記憶體操作命令排序功能。
步驟S1010:處理器核心133-1於資料快取136中提供MPR-Lite排程資料表。相較於圖9所示的排程表900及待命表910,MPR-Lite排程資料表針對每個LUN提供更細緻的區分,有利於將兩個或以上的片段讀取命令整合成一個MPR-lite操作。
參考圖11所示的MPR-Lite排程資料表1100,針對每個LUN,可包含兩欄”Plane0/1”及”Plane2/3”,用於將片段讀取命令依據其欲讀取的實體位址區分到其中一欄的儲存格中。例如,MPR-Lite排程資料表1100中第三欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令;而其中第四欄的儲存格用來紀錄讀取平面850以及/或平面870上資料的片段讀取命令。
此外,由於資料編程至區塊時,可能是採用預設編程模式,例如:TLC或QLC模式,亦可能是採用SLC模式。不同的編程模式需使用不同的資料讀取方式方能正確地讀取資料,因此,將多個片段讀取命令整合成一個MPR-Lite命令時,為了正確地讀取資料,多個片段讀取命令所欲讀取的目標資料必需採用相同編程模式,因此,MPR-Lite排程資料表1100可略作調整而成為MPR-Lite排程資料表1200,參考圖12所示,針對每個LUN,可包含三欄”Main P0/1”、”SLC P2/3”及”QLC P2/3”,用於將每個快閃記憶體操作命令依據其欲讀取的實體位址及使用的模式區分到其中一欄的儲存格中。例如,MPR-lite排程資料表1200中第四欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的快閃記憶體操作命令,而不管使用的讀取模式為何;其中第五欄的儲存格用來紀錄使用SLC模式讀取平面850以及/或平面870上資料的快閃記憶體操作命令;而其中第六欄的儲存格用來紀錄使用QLC模式讀取平面850以及/或平面870上資料的快閃記憶體操作命令。
接著,參考圖10,處理器核心133-1反覆執行一個迴圈(步驟S1030至S1090),用於將命令佇列135中的每個快閃快閃記憶體操作命令安排到MPR-Lite排程資料表中的適當儲存格。於每個回合,詳細說明如下:
步驟S1030:處理器核心133-1從命令佇列135中取得一個或多個尚未排序的快閃記憶體操作命令的實體位址資訊。如果一個快閃記憶體操作命令指示讀取平面830以及平面850上的資料,處理器核心133-1可將此快閃記憶體操作命令安排到關聯於平面830的欄位中的儲存格,例如圖11中的欄”Plane0/1”或圖12中的欄”Main P0/1”。
步驟S1070:以及依據實體位址及其他相關資訊將每一個快閃記憶體操作命令安排到MPR-Lite排程資料表中的適當儲存格。參考圖11的使用案例,MPR-Lite排程資料表1100中第三欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令”a”、”c”及”f”;而其中第四欄的儲存格用來紀錄讀取平面850以及/或平面870上資料的片段讀取命令”h”及”i”。
於步驟S1070的另一些實施例,記憶體操作命令的其他相關資訊可包含此快閃記憶體操作命令使用何種模式進行讀取。處理器核心133-1可搜索資料快取136中實體組態資料表的內容,依據實體位址對應到的區塊的編程模式,得知此快閃記憶體操作命令需要使用何種模式進行讀取。參考圖12的使用案例,MPR-Lite排程資料表1200中第四欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令”a”及”f”;其中第五欄的儲存格用來紀錄使用SLC模式讀取平面850以及/或平面870上資料的片段讀取命令”h”及”i”;而其中第六欄的儲存格用來紀錄使用QLC模式讀取平面850以及/或平面870上資料的片段讀取命令”c”。
接續圖11所述的排序結果,圖13顯示挑選快閃記憶體操作命令的使用案例。例如,於一個批次中,處理器核心133-1驅動閃存介面137發送讀取頁面命令給LUN 150#0,用於讀取片段讀取命令”b”指定的實體位址的資料;發送讀取頁面多平面命令給LUN 150#4,用於讀取片段讀取命令”a”及”h”指定的實體位址的資料,發送讀取頁面多平面命令給LUN 150#1,用於讀取片段讀取命令”d” 指定的實體位址的資料,以及發送片段讀取命令給LUN 150#1,用於讀取記憶體操作命令”g”指定的實體位址的資料,以形成一個MPR-lite操作。
接續圖12所述的排序結果,圖14顯示挑選記憶體操作命令的使用案例。例如,於一個批次中,處理器核心133-1判斷目標資料的編程為SLC模式,因此,驅動閃存介面137發送讀取頁面多平面命令給LUN 150#0,用於讀取片段讀取命令”b”指定的實體位址的資料;發送讀取頁面多平面命令給LUN 150#4,用於片段讀取命令”a”及”h”指定的實體位址的資料,發送片段讀取命令給LUN 150#1,用於讀取片段讀取命令”d”指定的實體位址的資料,以形成一個MPR-lite操作。
藉由參考MPR-Lite排程資料表的排序結果,處理器核心133-1可逐批次執行如上所述的片段讀取命令,但是,當處理器核心133-1改以MPR-Lite命令來讀取多平面上頁面的片段資料,不但可提升資料讀取的效率,更提升片段讀取操作的效率。於4K隨機讀取Q64/T4測試中,相較於片段讀取命令,MPR-Lite命令可提升將近30~50%的平均讀取資料命中率。一次讀取的命中率定義為通過閃存介面137從LUN 150中讀取資料被保留下來以回覆給主機110的比例。例如,當片段讀取命令讀取的8K資料全部都保留下來以回覆給主機110時,則這次讀取的命中率為100%。當片段讀取命令讀取的8K資料只保留一半以回覆給主機110時,則這次讀取的命中率為50%。
本發明所述的方法中的全部或部分步驟可以電腦程式實現,例如電腦的作業系統、電腦中特定硬體的驅動程式、或軟體應用程式。此外,也可實現於如上所示的其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成電腦程式,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦程式.可儲存於適當的電腦可讀取資料載具,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖10的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
100:快閃儲存系統架構
110:主機
130:控制器
131:主機介面
133-0、133-1:處理器核心
135:命令佇列
136:資料快取
137:閃存介面
138:DMA控制器
139:資料緩存器
150:LUNs
150#0~150#11:LUN
CH#0~CH#3:通道CH
CE#0~CE#2:晶片致能訊號
CQT、CQH:指標
139#0:存取子介面
410#0~470#m:平面
P#0~P#(n):頁面
490#1~490#n:超頁面
tWB、tRSNAP、tDBSYtP R:時間區間
900:排程資料表
S1010~S1090:方法步驟
1100、1200:MPR-Lite排程資料表
圖1為依據本發明實施例的快閃儲存系統架構圖。
圖2為閃存介面與邏輯單元號(Logical Unit Number LUN)的連接示意圖。
圖3為命令佇列示意圖。
圖4為LUN的資料組織示意圖。
圖5為閃存介面操作的片段讀取的時序圖。
圖6為頁面中的區段示意圖。
圖7為閃存介面操作的多頁面讀取精簡的時序圖。
圖8為LUN中的平面及跨平面頁面的組織示意圖。
圖9為依據一些實施方式的記憶體操作命令排程示意圖。
圖10為依據本發明實施例的記憶體操作命令排程方法的流程圖。
圖11及圖12為依據本發明實施例的記憶體操作命令排程示意圖。
圖13及圖14為依據本發明實施例的記憶體操作命令挑選示意圖。
S1010~S1090:方法步驟

Claims (10)

  1. 一種電腦程式產品,用以讀取多平面上頁面的片段資料,由一處理單元載入並執行,包含以下的程式碼: 提供一排程資料表; 將一命令佇列中的每一記憶體操作命令依據該記憶體操作命令的實體位址資訊安排到該排程資料表中的一儲存格; 依據該排程資料表的內容為一邏輯單元號挑選二個或以上的記憶體操作命令,其中每一該挑選的記憶體操作命令請求讀取少於一跨平面頁面的長度的資料; 驅動一閃存介面來完成一多頁面讀取精簡操作,從該邏輯單元號讀取該挑選的記憶體操作命令請求的資料;以及 回覆讀取的資料給一主機。
  2. 如請求項1所述的電腦程式產品,其中該多頁面讀取精簡操作,包含:驅動該閃存介面發送一或多讀取頁面多平面命令後發送一片段讀取命令給該邏輯單元號,讀取該挑選的記憶體操作命令指定的實體位址的資料。
  3. 如請求項2所述的電腦程式產品,其中,該讀取頁面多平面命令及該片段讀取命令分別用來讀取不同跨平面頁面上的片段資料。
  4. 如請求項2所述的電腦程式產品,其中,該讀取頁面多平面命令及該片段讀取命令運行在一模式下。
  5. 如請求項4所述的電腦程式產品,其中,該模式為單層式單元、三層式單元或四層式單元模式。
  6. 一種讀取多平面上頁面的片段資料的方法,由一處理單元執行,包含: 提供一排程資料表; 將一命令佇列中的每一記憶體操作命令依據該記憶體操作命令的實體位址資訊安排到該排程資料表中的一儲存格; 依據該排程資料表的內容為一邏輯單元號挑選二個或以上的記憶體操作命令,其中每一該挑選的記憶體操作命令請求讀取少於一跨平面頁面的長度的資料; 驅動一閃存介面來完成一多頁面讀取精簡操作,從該邏輯單元號讀取該挑選的記憶體操作命令請求的資料;以及 回覆讀取的資料給一主機。
  7. 如請求項6所述的讀取多平面上頁面的片段資料的方法,其中該多頁面讀取精簡操作,包含:驅動該閃存介面發送一或多讀取頁面多平面命令後發送一片段讀取命令給該邏輯單元號,讀取該挑選的記憶體操作命令指定的實體位址的資料。
  8. 如請求項7所述的讀取多平面上頁面的片段資料的方法,其中,該讀取頁面多平面命令需要的等待資料就緒時間比該片段讀取命令需要的等待資料就緒時間短。
  9. 如請求項6所述的讀取多平面上頁面的片段資料的方法,其中該排程資料表中的每一欄用於記錄讀取特定邏輯單元號中特定平面上的記憶體操作命令的資訊。
  10. 如請求項6所述的讀取多平面上頁面的片段資料的方法,其中該排程資料表中的每一欄用於記錄讀取特定邏輯單元號中一第一平面、一第二平面並使用一第一模式、或該第二平面並使用一第二模式的記憶體操作命令的資訊。
TW108140180A 2019-04-01 2019-11-06 多平面上頁面的片段資料讀取方法及電腦程式產品 TWI737031B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962827317P 2019-04-01 2019-04-01
US62/827,317 2019-04-01

Publications (2)

Publication Number Publication Date
TW202038097A true TW202038097A (zh) 2020-10-16
TWI737031B TWI737031B (zh) 2021-08-21

Family

ID=72805449

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108140180A TWI737031B (zh) 2019-04-01 2019-11-06 多平面上頁面的片段資料讀取方法及電腦程式產品

Country Status (2)

Country Link
CN (1) CN111796759B (zh)
TW (1) TWI737031B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756644B2 (en) 2021-06-23 2023-09-12 International Business Machines Corporation Triage of multi-plane read requests

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230010768A (ko) * 2020-11-06 2023-01-19 양쯔 메모리 테크놀로지스 씨오., 엘티디. 의사 비동기 다중 평면 독립적 판독
CN114546289B (zh) * 2022-02-27 2023-06-02 苏州浪潮智能科技有限公司 一种读取数据的方法、系统、设备以及介质
CN114546294B (zh) * 2022-04-22 2022-07-22 苏州浪潮智能科技有限公司 一种固态硬盘读方法、系统及相关组件

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4406604B2 (ja) * 2002-06-11 2010-02-03 アシシュ エイ パンドヤ Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ
US8924675B1 (en) * 2010-09-24 2014-12-30 Emc Corporation Selective migration of physical data
WO2013095401A1 (en) * 2011-12-20 2013-06-27 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
TWI475385B (zh) * 2012-03-14 2015-03-01 Phison Electronics Corp 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
KR102615659B1 (ko) * 2016-07-08 2023-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756644B2 (en) 2021-06-23 2023-09-12 International Business Machines Corporation Triage of multi-plane read requests

Also Published As

Publication number Publication date
TWI737031B (zh) 2021-08-21
CN111796759A (zh) 2020-10-20
CN111796759B (zh) 2023-11-07

Similar Documents

Publication Publication Date Title
US11954370B2 (en) Command queuing
US11216189B2 (en) Method and computer program product for reading partial data of a page on multiple planes
TWI737031B (zh) 多平面上頁面的片段資料讀取方法及電腦程式產品
US10782910B2 (en) Methods for internal data movements of a flash memory device and apparatuses using the same
US8429358B2 (en) Method and data storage device for processing commands
US9342371B2 (en) Boot partitions in memory devices and systems
US8626996B2 (en) Solid state memory (SSM), computer system including an SSM, and method of operating an SSM
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
CN110678852A (zh) 控制对缓冲器的存储器操作的设备和方法
KR20140032789A (ko) 불휘발성 메모리 장치의 컨트롤러 및 그것의 커멘드 스케줄링 방법
CN111813703A (zh) 数据储存装置及逻辑至物理地址映射表的更新方法
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법
US11182310B2 (en) Priority determination circuit and method of operating the priority determination circuit for preventing overlapping operation
TW202139013A (zh) 管理垃圾回收程序的電腦程式產品及方法及裝置