TWI797022B - 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 - Google Patents

儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 Download PDF

Info

Publication number
TWI797022B
TWI797022B TW111121641A TW111121641A TWI797022B TW I797022 B TWI797022 B TW I797022B TW 111121641 A TW111121641 A TW 111121641A TW 111121641 A TW111121641 A TW 111121641A TW I797022 B TWI797022 B TW I797022B
Authority
TW
Taiwan
Prior art keywords
internal
host
nvme
engine
memory
Prior art date
Application number
TW111121641A
Other languages
English (en)
Other versions
TW202307672A (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
Priority claimed from KR1020210078889A external-priority patent/KR102365312B1/ko
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202307672A publication Critical patent/TW202307672A/zh
Application granted granted Critical
Publication of TWI797022B publication Critical patent/TWI797022B/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Advance Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明提供一種計算儲存裝置,包含:非揮發性記憶體(NVM)裝置;以及儲存控制器,經組態以控制NVM裝置。儲存控制器包含:計算處理器,經組態以執行內部應用程式以產生內部命令;主機介面電路,經組態以自外部主機裝置接收主機命令,自計算處理器接收內部命令,以及個別地處理接收到的主機命令及接收到的內部命令;快閃轉譯層(FTL),經組態以基於主機介面電路的處理的結果而進行位址映射操作;以及記憶體介面電路,經組態以基於FTL的位址映射操作而控制NVM裝置。

Description

儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
本揭露的實施例是關於一種半導體記憶體,且更特定言之是關於一種儲存控制器、一種計算儲存裝置以及計算儲存裝置的操作方法。
[相關申請案的交叉引用]
本申請案主張2021年6月17日在韓國智慧財產局申請的韓國專利申請案第10-2021-0078889號的優先權,所述申請案的揭露內容以全文引用的方式併入本文中。
半導體記憶體裝置分類為:揮發性記憶體裝置,其中所儲存資料在電源斷開時消失,諸如靜態隨機存取記憶體(static random access memory;SRAM)或動態隨機存取記憶體(dynamic random access memory;DRAM);或非揮發性記憶體(non-volatile memory;NVM)裝置,其中即使在電源斷開時仍保持所儲存資料,諸如快閃記憶體裝置、相變RAM(phase-change RAM;PRAM)、 磁性RAM(magnetic RAM;MRAM)、電阻性RAM(resistive RAM;RRAM)或鐵電RAM(ferroelectric RAM;FRAM)。
基於快閃記憶體的儲存裝置用作計算系統的高容量儲存媒體。典型儲存裝置具有在主機裝置的控制下儲存資料的功能。現如今,為了減小主機裝置的計算的負擔,正在開發支援其中的各種計算或各種應用程式的儲存裝置。
一或多個實施例以減少的成本及改良的效能提供一種儲存控制器及計算儲存裝置,以及計算儲存裝置的操作方法。
根據實施例,一種計算儲存裝置包含:非揮發性記憶體裝置;以及儲存控制器,控制件非揮發性記憶體裝置。儲存控制器包含:計算引擎,執行內部應用程式以產生內部命令;主機介面區塊,自外部主機裝置接收主機命令,自計算引擎接收內部命令,以及個別地處理接收到的主機命令及接收到的內部命令;快閃轉譯層,基於主機介面區塊的處理的結果而進行位址映射操作;以及記憶體介面區塊,基於快閃轉譯層的位址映射操作而控制非揮發性記憶體裝置。
根據實施例,計算儲存裝置的操作方法包含:由實體埠自外部主機裝置接收主機命令;經由NVM高速(NVMe)引擎處理主機命令;由快閃轉譯層針對經處理主機命令進行第一位址映射;由記憶體介面區塊基於第一位址映射而存取非揮發性記憶體裝置;由執行內部應用程式的計算引擎產生內部命令;經由NVMe引擎處理內部命令;由快閃轉譯層針對經處理內部命令進行第二 位址映射;以及由記憶體介面區塊基於第二位址映射而存取非揮發性記憶體裝置。
根據實施例,經組態以控制非揮發性記憶體裝置的儲存控制器包含:NVMe引擎,經由外部主機驅動器接收主機命令;快閃轉譯層(FTL),在NVMe引擎的控制下進行位址映射;記憶體介面區塊,基於FTL的位址映射而存取非揮發性記憶體裝置;內部應用程式,發出內部輸入/輸出(I/O);內部檔案系統,組織內部I/O;以及內部驅動器,基於經組織內部I/O而產生內部命令。NVMe引擎自內部驅動器接收內部命令,且基於接收到的內部命令經由FTL及記憶體介面區塊而存取非揮發性記憶體裝置。
根據實施例,計算儲存裝置包含:非揮發性記憶體裝置;計算控制器,藉由執行內部應用程式產生內部命令;以及儲存控制器,自計算控制器接收內部命令,回應於接收到的內部命令存取非揮發性記憶體裝置,自外部主機裝置接收主機命令,以及回應於接收到的主機命令存取非揮發性記憶體裝置,且儲存控制器包含經組態以接收內部命令及主機命令兩者的主機介面區塊。
60:通信通道
100:儲存系統
110:主機裝置
111:主機控制器
112:主機記憶體
119:NVM裝置
120、6300a、6300b、7150_1、7150_n、7250_1、7250_m:儲存裝置
121:中央處理單元
122:計算引擎
123:FTL
123a:FTL加速器
123b:讀取緩衝電路
123c:寫入緩衝電路
123d:錯誤處置器
124:控制器記憶體
125:封包管理器
126:錯誤校正碼引擎
127:進階加密標準
128:主機介面區塊
128a:實體埠
128b:NVMe引擎
128b_1:第一NVMe引擎
128b_2:第二NVMe引擎
129:記憶體介面區塊
240:控制器緩衝區
1211:計算控制器
1221:第一記憶體
1222:第二記憶體
2220、6200a、6200b、7120_1、7120_n、7220_1、7220_m:記憶體
5230、7130_1、7130_n、7230_1、7230_m:開關
6000:系統
6100:主處理器
6110:CPU核心
6120、7251_1、7251_m:控制器
6130:加速器
6310a、6310b、CTRL:儲存控制器
6320a、6320b、7252_1、7252_m:NVM
6410:影響擷取裝置
6420:使用者輸入裝置
6430:感測器
6440:通信裝置
6450:顯示器
6460:揚聲器
6470:功率供應裝置
6480:連接介面
7000:資料中心
7100_1、7100_n:應用程式伺服器
7110_1、7110_n、7210_1、7210_m:處理器
7140_1、7140_n:網路介面連接件
7200_1、7200_m:儲存伺服器
7240_1、7240_m:NIC
7253_1、7253_m:DRAM
7254_1、7254_m:介面
A1、B1、B2、C1、C2、D1、D2、D3、E1、E2:階段
ADDR:位址
ALE:位置鎖存啟用信號
APP1:第一應用程式
APP_h:主機應用程式
APP_i:內部應用程式
BUS:系統匯流排
CL:控制邏輯電路
CLE:命令鎖存啟用信號
CMD:命令
CMD_h:主機命令
CMD_i:內部命令
CQ_h:主機完成佇列
CQ_i:內部完成佇列
DATA:資料
DQ:資料信號
DQS:資料選通信號
dr_d:專用驅動器
DR_h:主機NVMe驅動器
DR_hc:NVMe驅動器
DR_i、DR_ic:內部NVMe驅動器
DT1:第一資料
DT2:第二資料
EXE:執行命令
FS_h:主機檔案系統
FS_i:內部檔案系統
if_d:專用介面
IF1:第一介面
IF2:第二介面
IF3:第三介面
IF4:第四介面
IFC_1:第一介面電路
IFC_2:第二介面電路
LOAD:負載命令
MCA:記憶體單元陣列
nCE:晶片啟用信號
nR/B:讀取及忙綠信號
nRE:讀取啟用信號
NT:網路
nWE:寫入啟用信號
NS1:第一名稱空間
NS2:第二名稱空間
NS3:第三名稱空間
OS_h:主機作業系統
OS_i:內部作業系統
OUT_h:主機輸出
OUT_i:內部輸出
P11、P21:第一接腳
P12:第二接腳
P13:第三接腳
P14:第四接腳
P15、P25:第五接腳
P16:第六接腳
P17:第七接腳
P18、P28:第八接腳
READ1:第一讀取命令
READ2:第二讀取命令
RES_h:主機回應
RES_i:內部回應
RG1:第一區
RG2:第二區
RQ_h:主機請求
RQ_i:內部請求
S110、S120、S130、S140、S150、S160、S210、S212、S220、S222、S232、S230、S240、S242、S250、S252、S260:操作
SQ_h:主機提交佇列
SQ_i:內部提交佇列
以上及其他態樣及特徵將藉由參考隨附圖式來描述某些實施例而變得更清楚,其中:圖1為示出根據實施例的儲存系統的方塊圖。
圖2為用於描述根據實施例的儲存系統的操作的圖。
圖3為示出根據實施例的儲存系統的方塊圖。
圖4為用於描述根據實施例的儲存系統的操作的流程圖。
圖5為示出根據實施例的FTL的方塊圖。
圖6為示出根據實施例的儲存系統的方塊圖。
圖7A及圖7B為用於描述根據實施例的由儲存裝置管理的儲存空間的圖。
圖8為示出根據實施例的儲存系統的方塊圖。
圖9為示出根據實施例的儲存裝置的方塊圖。
圖10為示出根據實施例的儲存系統的方塊圖。
圖11為示出根據實施例的儲存系統的方塊圖。
圖12為示出根據實施例的儲存控制器的操作的流程圖。
圖13為示出根據實施例的儲存系統的方塊圖。
圖14、圖15以及圖16為用於描述根據實施例的在主機裝置的控制下進行的儲存裝置的操作(例如,內部應用程式驅動)的圖。
圖17、圖18、圖19、圖20以及圖21為示出根據一些實施例的儲存系統的方塊圖。
圖22為用於描述根據實施例的儲存控制器與非揮發性記憶體裝置之間的通信的圖。
圖23為根據實施例的向其應用儲存裝置的系統的圖。
圖24為根據實施例的向其應用記憶體裝置的資料中心的圖。
在下文中,可詳細且清楚地描述某些實施例至所屬領域中具有通常知識者容易實施本發明的程度。
圖1為示出根據實施例的儲存系統的方塊圖。參考圖1, 儲存系統100可包含主機裝置110及儲存裝置120。在一或多個實施例中,儲存裝置120可為計算儲存裝置,如下文詳細描述。
在實施例中,儲存系統100可為行動系統,諸如行動電話、智慧型手機、平板個人電腦(personal computer;PC)、可穿戴式裝置、健康照護裝置,或物聯網(internet of things;IOT)裝置。在實施例中,儲存系統100可為計算裝置,諸如個人電腦、膝上型電腦、伺服器、媒體播放器或系統,諸如包含導航系統的汽車裝置。
在實施例中,儲存裝置120可為經組態以進行除相關技術儲存裝置的共同功能(例如,儲存及輸出資料的功能)之外的各種計算的計算儲存裝置。在下文中,為便於說明,術語「儲存裝置」及「計算儲存裝置」可互換地使用。
主機裝置110可將資料儲存於儲存裝置120中或可讀取儲存於儲存裝置120中的資料。主機裝置110可包含主機控制器111及主機記憶體112。主機控制器111可經組態以控制儲存裝置120。在實施例中,主機控制器111可經由介面與儲存裝置120通信。介面可遵從NVMe標準的介面,但實施例不限於此。
主機記憶體112可為主機裝置110的緩衝記憶體、工作記憶體或系統記憶體。舉例而言,主機記憶體112可經組態以儲存用於主機裝置110操作的各種資訊。主機記憶體112可用作用於暫時儲存待發送至儲存裝置120的資料或自儲存裝置120接收到的資料的緩衝記憶體。在實施例中,主機記憶體112可由儲存裝置120支援存取。
在實施例中,主機控制器111及主機記憶體112可實施 為單獨半導體晶片。替代地,在實施例中,主機控制器111及主機記憶體112可整合於單一半導體晶片中或可實施為多晶片封裝。舉例而言,主機控制器111可為應用程式處理器包含的多個模組中的一者。應用程式處理器可實施為系統單晶片(system on chip;SoC)。主機記憶體112可為包含於應用程式處理器中的嵌入式記憶體,或可為安置於應用程式處理器外部的NVM裝置、揮發性記憶體裝置、非揮發性記憶體模組或揮發性記憶體模組。
儲存裝置120可為經組態以取決於主機裝置110的請求儲存資料或輸出所儲存資料的儲存媒體。在實施例中,儲存裝置120可包含固態磁碟機(solid state drive;SSD)、嵌入式記憶體以及可移除外部記憶體中的至少一者。在儲存裝置120為SSD的情況下,儲存裝置120可為遵從NVMe標準的裝置。在儲存裝置120為嵌入式記憶體或外部記憶體的情況下,儲存裝置120可為遵從通用快閃儲存(Universal Flash Storage;UFS)或嵌入式多媒體卡(Embedded Multi-Media Card;eMMC)標準的裝置。主機裝置110及儲存裝置120中的每一者可產生遵從應用於其的標準協定的封包且可發送所產生的封包。
儲存裝置120可包含儲存控制器CTRL及NVM裝置119。儲存控制器CTRL可包含中央處理單元(central processing unit;CPU)121、計算引擎122(例如計算處理器)、FTL 123、控制器記憶體124、封包管理器125、錯誤校正碼(error correction code;ECC)引擎126(例如錯誤校正處理器)、進階加密標準(advanced encryption standard;AES)引擎127(例如AES處理器)、主機介面區塊128(例如主機介面電路)、記憶體介面區塊129(例如記憶 體介面電路)以及系統匯流排。在實施例中,包含於儲存控制器CTRL中的各種組件中的每一者可實施為智慧財產權(intellectual property;IP)區塊或功能區塊,且可實施為軟體、硬體、韌體或其組合。
CPU 121可控制儲存控制器CTRL的總體操作。舉例而言,CPU 121可經組態以驅動在儲存控制器CTRL上運行的各種韌體或軟體。
計算引擎122可經組態以進行待在儲存控制器CTRL上處理的各種計算或驅動在儲存控制器CTRL上運行的應用程式或計算程式。在實施例中,計算引擎122可經組態以進行在主機裝置110上驅動的主機應用程式的功能的部分。在實施例中,內部應用程式可經組態以進行各種資料處理操作,諸如用於機器學習的加密操作、濾波操作以及卷積運算。
在實施例中,CPU 121及計算引擎122示出為單獨功能區塊,但實施例不限於此。舉例而言,CPU 121及計算引擎122中的每一者可實施為獨立處理器核心。替代地,CPU 121及計算引擎122可實施為一個處理器核心或可實施為包含多個處理器核心的多核心處理器。
FTL 123可進行用於有效地使用NVM裝置119的各種維護操作。舉例而言,維護操作可包含位址映射操作、磨損調平操作、廢料收集操作等。
位址映射操作可指在由主機裝置110管理的邏輯位址與NVM裝置119的物理位址之間進行轉譯或映射的操作。
磨損調平操作可指使用包含於NVM裝置119中的多個 記憶體區塊的頻率或使用多個記憶體區塊的次數均一的操作,且可經由用於使實體區塊的抹除計數平衡的韌體技術或經由硬體實施。在實施例中,由於NVM裝置119的多個記憶體區塊中的每一者經由磨損調平操作均一地使用,因此可防止特定記憶體區塊過度降級,且因此可改良NVM裝置119的使用壽命。
廢料收集操作可指藉由將NVM裝置119的源記憶體區塊的有效資料複製至其目標記憶體區塊且接著抹除該源記憶體區塊來確保可用記憶體區塊或自由記憶體區塊的操作。
在實施例中,FTL 123可實施為軟體或韌體且可儲存於控制器記憶體124中或單獨工作記憶體中。CPU 121可藉由驅動儲存於控制器記憶體124或單獨工作記憶體中的FTL 123來進行上文所描述的維護操作。在實施例中,可經由經組態以進行上文所描述的維護操作的各種硬體自動電路來實施FTL 123。亦即,FTL 123可實施為硬體,且上文所描述的維護操作可經由硬體進行。
控制器記憶體124可用作儲存控制器CTRL的緩衝記憶體或工作記憶體。舉例而言,控制器記憶體124可暫時儲存自主機裝置110或NVM裝置119接收到的資料。替代地,控制器記憶體124可經組態以儲存各種資訊或程式碼以供儲存控制器CTRL操作。CPU 121可基於儲存於控制器記憶體124中的資訊或程式碼而進行各種操作。
在實施例中,控制器記憶體124可經組態以儲存由計算引擎122使用的資料或儲存用於由計算引擎122驅動的應用程式的程式碼。計算引擎122可執行儲存於控制器記憶體124中的程式碼或可對儲存於控制器記憶體124中的資料進行各種計算(或 操作)。
在圖1中所示出的實例中,控制器記憶體124包含於儲存控制器CTRL中,但實施例不限於此。控制器記憶體124可為定位於儲存控制器CTRL外部的單獨記憶體模組或記憶體裝置。儲存控制器CTRL可更包含經組態以控制位於外部上的記憶體模組記憶體裝置的記憶體控制器。
封包管理器125可經組態以解析自主機裝置110接收到的封包或產生用於待發送至主機裝置110的資料的封包。在實施例中,可基於主機裝置110與儲存裝置120之間的介面協定而產生封包。
ECC引擎126可對自NVM裝置119讀取的資料進行錯誤偵測與校正功能。舉例而言,ECC引擎126可產生關於待寫入至NVM裝置119的資料的同位位元。因此產生的同位位元可與寫入資料一起儲存於NVM裝置119中。隨後,在自NVM裝置119讀取資料時,ECC引擎126可藉由使用讀取的資料及對應同位位元來校正讀取的資料的錯誤且可輸出錯誤校正讀取的資料。
AES引擎127可藉由使用對稱密鑰演算法對輸入至儲存控制器CTRL的資料進行加密操作及解密操作中的至少一者。
儲存控制器CTRL可經由主機介面區塊128與主機裝置110通信。在下文中,為了描述實施例,假定主機介面區塊128支援遵從NVMe標準的介面。然而,實施例並不限於此。舉例而言,主機介面區塊128可經組態以支援各種介面中的至少一者,諸如先進技術附接(Advanced Technology Attachment;ATA)介面、串列ATA(Serial ATA;SATA)介面、外部SATA(external SATA; e-SATA)介面、小電腦小介面(Small Computer Small Interface;SCSI)、串列附接SCSI(Serial Attached SCSI;SAS)介面、周邊組件互連(Peripheral Component Interconnection;PCI)介面、PCI快速(PCI express;PCIe)介面、IEEE 1394介面、通用串列匯流排(Universal Serial Bus;USB)介面、安全數位(Secure Digital;SD)卡介面、MMC介面、eMMC介面、UFS介面、嵌入式UFS(embedded UFS;eUFS)介面以及緊湊型快閃(Compact Flash;CF)卡介面。
儲存控制器CTRL可經由記憶體介面區塊129與NVM裝置119通信。在實施例中,記憶體介面區塊129可經組態以支援快閃介面,諸如雙態觸發介面或開放NAND快閃介面(open NAND flash interface;ONFI)。然而,實施例不限於此。
包含於儲存控制器CTRL中的各種組件可經由系統匯流排BUS彼此通信。系統匯流排BUS可包含各種系統匯流排,諸如高級系統匯流排(Advanced System Bus;ASB)、高級周邊匯流排(Advanced Peripheral Bus;APB)、高級高效能匯流排(Advanced High Performance Bus;AHB)以及高級可擴展介面(Advanced eXtensible Interface;AXI)匯流排。
在儲存控制器CTRL的控制下,NVM裝置119可經組態以儲存資料、輸出所儲存資料或抹除所儲存資料。在實施例中,NVM裝置119可為二維(two-dimensional;2D)或三維(three-dimensional;3D)NAND快閃記憶體裝置,但實施例不限於此。舉例而言,NVM裝置119可為MRAM、自旋轉移力矩MRAM(Spin-Transfer Torque MRAM;SST-MRAM)、導電橋接RAM(Conductive bridging RAM;CBRAM)、FRAM、PRAM、RRAM或基於彼此不同的各種類型的記憶體的記憶體裝置。在實施例中,NVM裝置119可包含多個非揮發性記憶體,其中的每一者實施為獨立晶片或獨立封裝。儲存控制器CTRL可經由多個通道與NVM裝置119的多個非揮發性記憶體通信。
如上文所描述,根據實施例的儲存裝置120可藉由使用儲存控制器CTRL的計算引擎122執行各種應用程式來進行各種計算(或操作)。在此情況下,由於可緩解帶由主機裝置110進行的計算的負擔,因此可改良儲存系統100的總體效能。
圖2為用於描述儲存系統的操作的圖。為便於說明,將省略描述儲存系統100的操作所不必要的組件。
參考圖1及圖2,上文描述主機裝置110及儲存裝置120的組態及操作,且因此將省略冗餘描述。
在實施例中,主機裝置110可包含處理器,且處理器可驅動主機應用程式APP_h。主機應用程式APP_h可指在主機作業系統OS_h上驅動的程式。主機應用程式APP_h可將資料儲存於儲存裝置120中或可讀取儲存於儲存裝置120中的資料。亦即,主機應用程式APP_h可發出對於儲存裝置120的I/O請求。在下文中,由主機裝置110的主機應用程式APP_h發出的I/O請求稱為「主機I/O」。
主機作業系統OS_h可包含主機檔案系統FS_h及主機NVMe驅動器DR_h。主機檔案系統FS_h可經組態以管理或組織主機作業系統OS_h上的儲存裝置120的儲存空間。主機NVMe驅動器DR_h可經由第一介面IF1(例如,第一介面路徑或第一介 面連接)將主機I/O發送至儲存裝置120,所述主機I/O經由主機檔案系統FS_h組織為主機命令。在實施例中,主機NVMe驅動器DR_h可經組態以支援NVMe標準且可由圖1的主機控制器111控制或驅動。在此情況下,第一介面IF1可為基於NVMe標準的介面。
儲存控制器CTRL可包含FTL 123、主機介面區塊128,以及記憶體介面區塊129。儲存控制器CTRL可經由第一介面IF1自主機NVMe驅動器DR_h接收主機命令,且可進行對應於接收到的主機命令的操作。
舉例而言,主機介面區塊128可包含實體埠(physical port;PT)128a及NVMe引擎128b,例如NVMe處理器。PT 128a可為經組態以發送及接收遵從周邊組件高速互連(PCIe)協定的實體信號的電路或實體層。
NVMe引擎128b可經組態以處理經由PT 128a接收到的信號或經由PT 128a將信號發送至主機NVMe驅動器DR_h。在實施例中,NVMe引擎128b可經組態以處理經由PT 128a接收到的信號。在實施例中,NVMe引擎128b可為提供主機裝置110與儲存裝置120(或NVM子系統)之間的介面的NVMe控制器。在實施例中,NVMe引擎128b可經組態以支援NVMe介面的實體功能(physical function;PF)區塊。
FTL 123可自NVMe引擎128b接收信號且可基於接收到的信號而進行各種維護操作。上文描述FTL 123的操作,且因此將省略冗餘描述。FTL 123可經由記憶體介面區塊129讀取儲存於NVM裝置119中的資料或可經由記憶體介面區塊129將資料儲存 於NVM裝置119中。
如上文所描述,可經由主機檔案系統FS_h、主機NVMe驅動器DR_h、PT 128a、NVMe引擎128b、FTL 123以及記憶體介面區塊129處理由主機裝置110的主機應用程式APP_h發出的主機I/O。
在實施例中,儲存裝置120可經組態以藉由驅動內部應用程式APP_i進行各種計算(或操作)。舉例而言,儲存裝置120的儲存控制器CTRL可驅動內部應用程式APP_i。內部應用程式APP_i可在內部作業系統或韌體(下文稱為「內部作業系統」)OS_i上驅動。內部應用程式APP_i及內部作業系統OS_i可由參考圖1所描述的計算引擎122驅動。
在實施例中,由儲存控制器CTRL驅動的內部應用程式APP_i及內部作業系統OS_i可不同於由主機裝置110驅動的主機應用程式APP_h及主機作業系統OS_h。舉例而言,內部應用程式APP_i可物理上或邏輯上與主機應用程式APP_h區別,且內部作業系統OS_i可物理上或邏輯上與主機作業系統OS_h區別。替代地,內部應用程式APP_i及內部作業系統OS_i可由儲存裝置120的內部組件(例如,儲存控制器CTRL的計算引擎122)驅動,且主機應用程式APP_h及主機作業系統OS_h可由主機裝置110的內部組件(例如處理器)驅動。
在實施例中,內部應用程式APP_i及內部作業系統OS_i可為不同於進行儲存控制器CTRL的儲存功能所需的程式的組件。儲存控制器CTRL的儲存功能可包含回應於來自主機裝置110的主機命令而儲存資料、讀取資料以及管理NVM裝置119的儲存空 間的功能。亦即,相較於相關技術儲存裝置,根據實施例的儲存裝置120可更包含內部應用程式APP_i及內部作業系統OS_i且因此可另外進行計算。
當驅動內部應用程式APP_i時,可自內部應用程式APP_i發出I/O請求。在下文中,由內部應用程式APP_i發出的I/O請求稱為「內部I/O」。可經由內部檔案系統FS_i及內部作業系統OS_i的專用驅動器dr_d將由內部應用程式APP_i發出的內部I/O提供至FTL 123。在實施例中,內部檔案系統FS_i可為由儲存控制器CTRL的內部作業系統OS_i管理或使用的組件,且可為區別於主機裝置110的主機檔案系統FS_h的組件。
在實施例中,專用驅動器dr_d可經由專用介面if_d與FTL 123通信。專用驅動器dr_d可為分開地實施用於與FTL 123通信的軟體、韌體或硬體組件。
在實施例中,儲存控制器CTRL中的組件之間的通信可經由系統匯流排BUS或個別通信通道或路徑實施。舉例而言,NVMe引擎128b與FTL 123之間的通信、FTL 123與記憶體介面區塊129之間的通信、專用驅動器dr_d與FTL 123之間的通信可經由系統匯流排BUS實施或可分別經由獨立通信通道實施。
圖3為示出圖1的儲存系統的方塊圖。為便於說明,將省略與上文所描述的組件相關聯的冗餘描述。參考圖1及圖3,主機裝置110可驅動主機作業系統OS_h及主機應用程式APP_h。
在實施例中,儲存控制器CTRL可在內部作業系統OS_i上驅動內部應用程式APP_i。內部應用程式APP_i可由計算引擎122在內部作業系統OS_i上驅動。內部作業系統OS_i可經由內 部檔案系統FS_i及內部NVMe驅動器DR_i處理自內部應用程式APP_i發出的內部I/O。內部NVMe驅動器DR_i可經由第二介面IF2與NVMe引擎128b通信。
亦即,在實施例中,由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O可經由內部檔案系統FS_i、內部NVMe驅動器DR_i、NVMe引擎128b、FTL 123以及記憶體介面區塊129處理。
在參考圖3所描述的實施例中,可經由內部作業系統OS_i的內部NVMe驅動器DR_i將由儲存控制器CTRL的內部應用程式APP_i發出的I/O提供至NVMe引擎128b。亦即,來自主機裝置110的主機應用程式APP_h的主機I/O及來自儲存控制器CTRL的內部應用程式APP_i的內部I/O可經由同一NVMe引擎128b處理或可共用同一NVMe引擎128b。在此情況下,可緩解實施或設計經組態以處理由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O的組件的負擔。
舉例而言,在參考圖2所描述的實施例中,可經由內部作業系統OS_i的專用驅動器dr_d將由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O提供至FTL 123。在此情況下,為了實施經組態以與FTL 123直接通信的專用驅動器dr_d,及FTL 123與專用驅動器dr_d之間的直接通信增加設計的負擔。
相反,在實施例中,儲存控制器CTRL的內部NVMe驅動器DR_i可經由第二介面IF2與NVMe引擎128b通信。在此情況下,內部NVMe驅動器DR_i可包含實質上類似於主機NVMe驅動器DR_h的軟體層或硬體層。亦即,由於儲存控制器CTRL的 內部NVMe驅動器DR_i的結構類似於相關技術NVMe驅動器的結構,因此設計不存在額外負擔。第二介面IF2可為基於與第一介面IF1相同的標準(例如,基於NVMe標準或PCIe標準)的介面。亦即,不需要另外設計用於內部作業系統OS_i的驅動器與FTL 123之間的通信的單獨介面或專用介面。在實施例中,第二介面IF2可為經由系統匯流排BUS虛擬化的介面。
如上文所描述,根據實施例的儲存裝置120可經由內部應用程式APP_i進行各種計算(或操作)。可經由儲存控制器CTRL的內部NVMe驅動器DR_i將由儲存控制器CTRL的內部應用程式APP_i發出的I/O提供至NVMe引擎128b。NVMe引擎128b可經組態以支援與主機裝置110通信。亦即,可經由與由主機裝置110發出的I/O相同的路徑處理由儲存控制器CTRL發出的I/O。因此,可緩解設計儲存控制器CTRL的內部組態的負擔。
圖4為用於描述圖3的儲存系統的操作的流程圖。為便於說明,將省略與上文所描述的組件相關聯的冗餘描述。參考圖3及圖4,在操作S110中,主機應用程式APP_h可發出主機I/O。舉例而言,主機應用程式APP_h可發出用於獲得資料以自儲存裝置120操作或將資料儲存於儲存裝置120中的主機I/O。
在操作S120中,可將對應於主機I/O的主機請求RQ_h自主機應用程式APP_h提供至主機NVMe驅動器DR_h。在實施例中,主機請求RQ_h可為藉由在主機作業系統OS_h的主機檔案系統FS_h處組織主機I/O產生的資訊。在操作S130中,主機NVMe驅動器DR_h可回應於主機請求RQ_h經由第一介面IF1將對應於主機請求RQ_h的主機命令CMD_h發送至主機介面區塊 128。
在操作S140中,主機介面區塊128、FTL 123以及記憶體介面區塊129可處理因此接收到的主機命令CMD_h。舉例而言,主機介面區塊128、FTL 123以及記憶體介面區塊129可進行對應於主機命令CMD_h的操作。
在操作S150中,主機介面區塊128可向主機NVMe驅動器DR_h提供指示處理主機命令CMD_h的主機回應RES_h。
在操作S160中,主機NVMe驅動器DR_h可回應於主機回應RES_h而將主機輸出OUT_h(例如,與主機I/O相關聯的結果)提供至主機應用程式APP_h。
在操作S210中,內部I/O可由儲存控制器CTRL的內部應用程式APP_i發出。舉例而言,在進行各種計算(或操作)的過程中,內部應用程式APP_i可發出用於讀取儲存於NVM裝置119中的資料或將資料儲存於NVM裝置119的內部I/O。
在操作S220中,可將對應於內部I/O的內部請求RQ_i提供至內部NVMe驅動器DR_i。在實施例中,內部請求RQ_i可為藉由在內部作業系統OS_i的內部檔案系統FS_i處組織內部I/O產生的資訊。
在操作S230中,內部NVMe驅動器DR_i可回應於內部請求RQ_i經由第二介面IF2將對應於內部請求RQ_i的內部命令CMD_i發送至主機介面區塊128。
在操作S240中,主機介面區塊128、FTL 123以及記憶體介面區塊129可處理因此接收到的內部命令CMD_i。舉例而言,主機介面區塊128、FTL 123以及記憶體介面區塊129可進行對應 於內部命令CMD_i的操作。
在操作S250中,主機介面區塊128可向內部NVMe驅動器DR_i提供指示處理內部命令CMD_i的內部回應RES_i。
在操作S260中,內部NVMe驅動器DR_i可回應於內部回應RES_i而將內部輸出OUT_i(例如,與內部I/O相關聯的結果)提供至內部應用程式APP_i。
如上文所描述,由主機裝置110發出的主機I/O及由儲存控制器CTRL發出的內部I/O兩者可經由儲存裝置120的主機介面區塊128、FTL 123以及記憶體介面區塊129處理。亦即,由於主機I/O及內部I/O經由同一I/O路徑處理,因此可緩解設計用於處理內部I/O的單獨專用驅動器及單獨專用介面的負擔。
圖5為示出圖1的FTL的方塊圖。在實施例中,將參考圖5描述FTL 123的功能的至少一部分實施為硬體或自動化的實施例,但實施例不限於此。舉例而言,FTL 123可由軟體實施且可由儲存控制器CTRL的CPU 121驅動。
參考圖1及圖5,FTL 123可包含FTL加速器123a、讀取緩衝電路123b、寫入緩衝電路123c以及錯誤處置器123d。在實施例中,FTL加速器123a、讀取緩衝電路123b、寫入緩衝電路123c以及錯誤處置器123d中的每一者可實施為經組態以自動化FTL 123的功能的至少一部分的硬體電路。
FTL加速器123a可為經組態以自動化FTL 123的功能的硬體電路,諸如位址映射或區塊分配。FTL加速器123a可基於自NVMe引擎128b提供的資訊而進行位址映射或區塊分配。舉例而言,FTL加速器123a可將自NVMe引擎128b提供的邏輯位址轉 譯為NVM裝置119的物理位址。可將關於經轉譯物理位址的資訊提供至記憶體介面區塊129。
讀取緩衝電路123b可為經組態以自動化與儲存裝置120的讀取操作相關聯的資料路徑的硬體電路。舉例而言,讀取緩衝電路123b可為經組態以暫時儲存自記憶體介面區塊129提供的讀取資料及將暫時所儲存讀取資料傳送至NVMe引擎128b的硬體電路。
寫入緩衝電路123c可為經組態以自動化與儲存裝置120的寫入操作相關聯的資料路徑的硬體電路。舉例而言,寫入緩衝電路123c可為經組態以暫時儲存自NVMe引擎128b提供的寫入資料及將暫時所儲存寫入資料傳送至記憶體介面區塊129的硬體電路。
錯誤處置器123d可為經組態以處理在FTL 123的操作期間發生的各種錯誤情形(例如,資料危險)的硬體電路。
在實施例中,讀取緩衝電路123b、寫入緩衝電路123c以及錯誤處置器123d可在FTL加速器123a的控制下彼此交換資料或資訊。
如上文所描述,FTL 123可經由經組態以自動化其功能的全部或一部分的硬體電路實施。在此情況下,相較於由軟體實施FTL 123的情況,可提供儲存裝置120(或包含FTL 123的儲存控制器CTRL)的效能。
在實施例中,經由硬體電路自動化的FTL 123可經設計使得在主機介面區塊128(或NVMe引擎128b)與記憶體介面區塊129之間進行最佳化。在此情況下,如在圖2的實施例中,在 由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O經由專用驅動器dr_d直接提供至FTL 123的情況下,需要再次設計現有經最佳化FTL 123,或可不最佳化FTL 123的效能。
相反,根據實施例,在由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O經由內部NVMe驅動器DR_i提供至NVMe引擎128b的情況下,由於FTL 123經由NVMe引擎128b具備關於內部I/O的資訊,因此可緩解再次設計經自動化FTL 123的單獨負擔,且可確保經自動化FTL 123的最佳效能。
圖6為示出圖1的儲存系統的方塊圖。上文描述儲存系統100的內部組件及操作,且因此將省略冗餘描述。
在圖6的實施例中,內部NVMe驅動器DR_i可與PT 128a通信。在此情況下,第二介面IF2可經組態以具有與第一介面IF1相同的通信協定或包含與第一介面IF1相同的信號線。在實施例中,PT 128a可經組態以與系統匯流排BUS連接,且內部NVMe驅動器DR_i可經由系統匯流排BUS與PT 128a通信。在實施例中,PT 128a可包含經組態以與主機NVMe驅動器DR_h通信的第一信號接腳及經組態以與內部NVMe驅動器DR_i通信的第二信號接腳。替代地,PT 128a可包含由主機NVMe驅動器DR_h及內部NVMe驅動器DR_i共用的共用信號接腳。
在實施例中,在內部NVMe驅動器DR_i與PT 128a直接通信的情況下,內部NVMe驅動器DR_i可具有與主機NVMe驅動器DR_h相同的硬體層或相同的軟體層。由於內部NVMe驅動器DR_i與實體埠128a直接通信,因此可緩解設計內部NVMe驅動器DR_i與NVMe引擎128b之間的通信虛擬化的負擔。
圖7A及圖7B為用於描述由圖1的儲存裝置管理的儲存空間的圖。為便於說明,儲存裝置120的儲存空間概念地示出於圖7A及圖7B中,但實施例不限於此。
首先,參考圖1、圖3、圖6以及圖7A,NVMe引擎128b可經由PT 128a接收自主機裝置110發出的主機I/O,或可經由PT 128a接收由內部應用程式APP_i發出的內部I/O。替代地,NVMe引擎128b可直接接收由內部應用程式APP_i發出的內部I/O。
NVMe引擎128b可藉由使用第一名稱空間NS1及第二名稱空間NS2管理NVM裝置119的儲存空間。在實施例中,名稱空間可指示能夠格式化成邏輯區塊的非揮發性記憶體的大小,作為NVM裝置119的儲存空間的部分。
第一名稱空間NS1可分配至主機裝置110的主機應用程式APP_h,且第二名稱空間NS2可分配至儲存控制器CTRL的內部應用程式APP_i。在此情況下,NVMe引擎128b可處理第一名稱空間NS1中的主機I/O且可處理第二名稱空間NS2中的內部I/O。
在實施例中,內部應用程式APP_i可存取由主機應用程式APP_h管理的資料。在此情況下,NVMe引擎128b可藉由使用第一名稱空間NS1處理由內部應用程式APP_i發出的內部I/O。替代地,主機應用程式APP_h可存取由內部應用程式APP_i管理的資料。在此情況下,NVMe引擎128b可藉由使用第二名稱空間NS2處理由主機應用程式APP_h發出的主機I/O。
亦即,根據實施例,由於由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O經由NVMe引擎128b處理,因此在 無設計的額外負擔的情況下內部應用程式APP_i與主機應用程式APP_h之間的資料交換可為可能的。
接著,參考圖1、圖3、圖6以及圖7B,NVMe引擎128b可劃分成第一NVMe引擎128b-1及第二NVMe引擎128b-2。第一NVMe引擎128b-1可經由PT 128a自主機NVMe驅動器DR_h接收主機I/O或主機命令。第一NVMe引擎128b-1可經組態以處理接收到的主機I/O或主機命令且管理第一名稱空間NS1。第二NVMe引擎128b-2可直接自內部NVMe驅動器DR_i接收內部I/O或內部命令,或可經由PT 128a自內部NVMe驅動器DR_i接收內部I/O或內部命令。第二NVMe引擎128b-2可經組態以處理接收到的內部I/O或內部命令且管理第二名稱空間NS2。
在實施例中,第一NVMe引擎128b-1及第二NVMe引擎128b-2可一起管理第三名稱空間NS3或可共用第三名稱空間NS3。在實施例中,第三名稱空間NS3可為經組態以管理在內部應用程式APP_i與主機應用程式APP_h之間共用的資料的儲存空間。在此情況下,可經由第三名稱空間NS3在內部應用程式APP_i與主機應用程式APP_h之間共用資料。
在實施例中,第一NVMe引擎128b-1及第二NVMe引擎128b-2可經組態以支援單根I/O虛擬化及共用(single-root I/O virtualization;SR-IOV)。第一NVMe引擎128b-1及第二NVMe引擎128b-2中的一者可支援SR-IOV功能的PCI高速功能的PF,且另一者可由PF支援的虛擬功能(virtual function;VF)。在實施例中,PF及VF可支援共用VNM子系統的NVMe控制器。
參考圖7A及圖7B描述與不同名稱空間相關聯的主機命 令及內部命令的處理,但實施例不限於此。舉例而言,NVMe引擎128b可將NVM裝置119劃分及管理成非揮發性記憶體集,且可相對於不同非揮發性記憶體集處理主機命令及內部命令。非揮發性記憶體集可指示NVM裝置119的邏輯上或物理上分類的非揮發性記憶體的集合。在實施例中,一個非揮發性記憶體集可包含一或多個名稱空間。
圖8為示出根據實施例的儲存系統的方塊圖。為便於說明,將省略與上文所描述的組件相關聯的冗餘描述。
在實施例中,主機裝置110可包含主機記憶體112,所述主機記憶體112包含主機提交佇列SQ_h及主機完成佇列CQ_h。主機提交佇列SQ_h及主機完成佇列CQ_h可用於處理由主機應用程式APP_h發出的主機I/O。
舉例而言,主機NVMe驅動器DR_h可將對應於由主機應用程式APP_h發出的主機I/O的主機命令添加至主機提交佇列SQ_h(亦即,可使主機命令進入佇列)。隨後,主機NVMe驅動器DR_h可經由第一介面IF1將門鈴信令發送或寫入至NVMe引擎128b。NVMe引擎128b可回應於門鈴信令而自主機記憶體112的主機提交佇列SQ_h提取主機命令。NVMe引擎128b可處理經提取主機命令且可將指示處理經提取主機命令的完成資訊添加至主機記憶體112的主機完成佇列CQ_h。隨後,NVMe引擎128b可對主機NVMe驅動器DR_h產生中斷。主機NVMe驅動器DR_h可回應於中斷而檢查儲存於主機記憶體112的主機完成佇列CQ_h中的完成資訊。隨後,主機NVMe驅動器DR_h可將提供檢查完成資訊(或釋放主機完成佇列CQ_h)的通知的門鈴發送至NVMe 引擎128b。
如上文所描述,可遵從對應於第一介面IF1的標準的NVMe標準處理由主機應用程式APP_h發出的主機I/O。然而,實施例並不限於此。可基於各種不同介面標準而處理由主機應用程式APP_h發出的主機I/O。
在實施例中,儲存控制器CTRL的控制器記憶體124可包含內部提交佇列SQ_i及內部完成佇列CQ_i。內部提交佇列SQ_i及內部完成佇列CQ_i可用於處理由內部應用程式APP_i發出的內部I/O。
舉例而言,可經由內部NVMe驅動器DR_i處理由儲存控制器CTRL的內部應用程式APP_i發出的內部I/O。內部NVMe驅動器DR_i可經由NVMe引擎128b將對應於內部I/O的內部命令添加至控制器記憶體124的內部提交佇列SQ_i。同時,內部NVMe驅動器DR_i可將門鈴信令提供至NVMe引擎128b。NVMe引擎128b可回應於門鈴信令處理添加至控制器記憶體124的內部提交佇列SQ_i的內部命令,且NVMe引擎128b可將關於處理的完成資訊提供至內部NVMe驅動器DR_i,或可將完成資訊儲存於控制器記憶體124的內部完成佇列CQ_i中。
如上文所描述,由主機應用程式APP_h發出的主機I/O可經由包含於主機裝置110的主機記憶體112中的主機提交佇列SQ_h及主機完成佇列CQ_h處理。由內部應用程式APP_i發出的內部I/O可經由包含於儲存控制器CTRL的控制器記憶體124中的內部提交佇列SQ_i及內部完成佇列CQ_i處理。
在實施例中,就NVMe引擎128b而言,可基於主機記憶 體緩衝(host memory buffer;HMB)功能而處理由主機應用程式APP_h發出的主機I/O,且可基於控制器記憶體緩衝(controller memory buffer;CMB)功能而處理由內部應用程式APP_i發出的內部I/O。
圖9為示出根據實施例的儲存裝置的方塊圖。為便於說明一些組件將省略,但實施例不限於此。此外,將省略冗餘描述。
在實施例中,內部NVMe驅動器DR_i可直接存取控制器記憶體124的內部提交佇列SQ_i及內部完成佇列CQ_i。
在此情況下,經由第二介面IF2,內部NVMe驅動器DR_i可處理類似於主機NVMe驅動器DR_h的內部命令的內部命令。舉例而言,內部NVMe驅動器DR_i可將內部命令添加至控制器記憶體124的內部提交佇列SQ_i且可將門鈴信令發送或寫入至NVMe引擎128b。NVMe引擎128b可回應於門鈴信令而自控制器記憶體124的內部提交佇列SQ_i提取內部命令且可處理經提取內部命令。NVMe引擎128b可將指示完成處理經提取內部命令的完成資訊寫入於控制器記憶體124的內部完成佇列CQ_i中,且可對內部NVMe驅動器DR_i產生中斷。內部NVMe驅動器DR_i可回應於中斷而檢查儲存於控制器記憶體124的內部完成佇列CQ_i中的完成資訊。
如上文所描述,就NVMe引擎128b而言,由主機應用程式APP_h發出的主機I/O及由內部應用程式APP_i發出的內部I/O可基於HMB功能而處理。在此情況下,控制器記憶體124的部分區(例如,包含內部提交佇列SQ_i及內部完成佇列CQ_i的區)可識別為具有類似於NVMe引擎128b的HMB的功能的功能的 區。
在實施例中,控制器記憶體124可更包含控制器緩衝區240。控制器緩衝區可經組態以儲存用於儲存控制器CTRL的各種資訊以操作或暫時儲存讀取資料及寫入資料。在實施例中,在控制器記憶體124中,內部提交佇列SQ_i及內部完成佇列CQ_i可為物理上或邏輯上與控制器緩衝區分離的區。
在實施例中,即使內部提交佇列SQ_i、內部完成佇列CQ_i以及控制器緩衝區示出為包含於控制器記憶體124中,但實施例不限於此。舉例而言,內部提交佇列SQ_i及內部完成佇列CQ_i可包含於與控制器記憶體124實體上分離的單獨記憶體中,且單獨記憶體可經由系統匯流排BUS或專用通道與內部NVMe驅動器DR_i通信。
圖10為示出根據實施例的儲存系統的方塊圖。為便於說明,將省略與上文所描述的組件相關聯的冗餘描述。
在實施例中,主機提交佇列SQ_h及主機完成佇列CQ_h可包含於儲存控制器CTRL的控制器記憶體124中。亦即,主機裝置110可藉由使用包含於控制器記憶體124中的主機提交佇列SQ_h及主機完成佇列CQ_h來處理由主機應用程式APP_h發出的主機I/O。在實施例中,在主機裝置110與儲存裝置120之間的第一介面IF1是基於NVMe標準的情況下,主機裝置110可經組態以基於以NVMe標準定義的CMB功能而處理主機I/O。
如上文所描述,由於主機NVMe驅動器DR_h及內部NVMe驅動器DR_i共用同一NVMe引擎128b,因此NVMe引擎128b可有效地處理與主機NVMe驅動器DR_h相關聯的主機I/O 及與內部NVMe驅動器DR_i相關聯的內部I/O。舉例而言,在由內部應用程式APP_i發出的內部I/O經由FTL 123直接處理而不傳遞通過NVMe引擎128b的情況下,NVMe引擎128b不對內部I/O進行命令仲裁。在此情況下,內部I/O與主機I/O之間的命令處理延遲(亦即風險情況)可出現。相反,在由內部應用程式APP_i發出的內部I/O經由NVMe引擎128b處理的情況下,由於NVMe引擎128b管理主機提交佇列SQ_h及內部提交佇列SQ_i兩者,因此NVMe引擎128b可基於主機I/O及內部I/O中的每一者的優先順序而進行適當命令仲裁。在此情況下,可改良儲存裝置120的總體效能。
在以上實施例中,描述主機提交佇列SQ_h、主機完成佇列CQ_h、內部提交佇列SQ_i以及內部完成佇列CQ_i,但實施例不限於此。主機記憶體112或控制器記憶體124可更包含經組態以儲存由主機裝置110發出的用於儲存裝置120的各種投與操作的主機管理命令的主機管理者佇列,及經組態以儲存關於主機管理者命令的完成資訊的主機管理者完成佇列。替代地,主機記憶體112或控制器記憶體124可更包含經組態以儲存由儲存控制器CTRL發出的用於儲存裝置120的各種投與操作的內部管理者命令的內部管理者佇列,及經組態以儲存關於內部管理者命令的完成資訊的內部管理者完成佇列。
圖11為示出根據實施例的儲存系統的方塊圖。為便於說明一些組件將省略,但實施例不限於此。此外,將省略冗餘描述。
如圖11中所示出,主機裝置110可將對應於由主機應用程式APP_h發出的主機I/O的信號(例如,主機命令)提供至儲 存控制器CTRL的PT 128a。可將經由PT 128a接收到的信號提供至內部應用程式APP_i。內部應用程式APP_i可經由內部NVMe驅動器DR_i處理經由PT 128a提供的信號(亦即,主機命令)。
舉例而言,內部應用程式APP_i可進行各種內部計算(或操作)。在此情況下,可經由內部檔案系統FS_i及內部NVMe驅動器DR_i將由內部應用程式APP_i發出的內部I/O提供至NVMe引擎128b。內部應用程式APP_i可進一步處理經由PT 128a提供的信號(亦即,主機命令)。在此情況下,內部應用程式APP_i可經由內部NVMe驅動器DR_i將接收到的信號(亦即,主機命令)提供至NVMe引擎128b而不傳遞通過內部檔案系統FS_i。原因為不需要另外藉由使用內部檔案系統FS_i組織經由PT 128a接收到的信號(亦即,主機命令),此係由於接收到的信號已經由主機檔案系統FS_h組織。
亦即,儲存控制器CTRL的內部應用程式APP_i可經由內部檔案系統FS_i及內部NVMe驅動器DR_i處理內部I/O;此外,內部應用程式APP_i可經由內部NVMe驅動器DR_i處理主機I/O或主機命令而不傳遞通過內部檔案系統FS_i。
圖12為示出圖11的儲存控制器的操作的流程圖。參考圖11及圖12,在操作S212中,儲存控制器CTRL可接收主機命令CMD_h或可產生內部I/O。舉例而言,儲存控制器CTRL可經由PT 128a自主機裝置110接收主機命令CMD_h。接收到的主機命令CMD_h可傳送至內部應用程式APP_i。替代地,儲存控制器CTRL可產生對應於內部I/O的請求RQ_i。如上文所描述,內部I/O可由儲存控制器CTRL的內部應用程式APP_i發出。在實施例 中,內部應用程式APP_i可發出用於其自身計算(或操作)的內部I/O,可回應於主機命令CMD_h而發出內部I/O,或可發出內部I/O以處理主機命令CMD_h。
在操作S222中,儲存控制器CTRL可判定主機命令CMD_h或內部I/O是否與內部操作相關聯。舉例而言,可判定儲存控制器CTRL的待處理操作是否為內部操作抑或主機操作(亦即,對應於主機I/O的操作)。在實施例中,儲存控制器CTRL可將由內部應用程式APP_i發出的內部I/O判定為與內部操作相關聯,且可將經由PT 128a接收到的主機命令判定為與主機操作相關聯。替代地,儲存控制器CTRL可基於與待處理的操作相關聯的名稱空間而判定待處理的操作是否為內部操作抑或主機操作。
當判定待處理的操作與內部操作相關聯時,在操作S232中,儲存控制器CTRL可藉由使用內部檔案系統FS_i及內部NVMe驅動器DR_i產生內部命令CMD_i。舉例而言,儲存控制器CTRL可經由內部檔案系統FS_i組織關於待處理的操作的資訊(例如,內部I/O或主機命令),且可經由內部NVMe驅動器DR_i將經組織資訊轉換為適合於第二介面IF2的信號。
當判定待處理的操作不與內部操作相關聯時或在判定待處理的操作與主機操作相關聯時,在操作S242中,儲存控制器CTRL可藉由使用內部NVMe驅動器DR_i基於關於待處理的操作的資訊(例如,內部I/O或主機命令)而產生內部命令CMD_i,而不傳遞通過內部檔案系統FS_i。舉例而言,當待處理的操作不與內部操作相關聯時或在待處理的操作與主機操作相關聯時,相關資訊(例如,主機命令)可為已由主機檔案系統FS_h組織的資 訊。在實施例中,為便於說明,給定描述為由內部NVMe驅動器DR_i產生的命令為內部命令,但實施例不限於此。
在操作S252中,儲存控制器CTRL可藉由使用NVMe引擎128b及FTL 123處理所產生的內部命令CMD_i。亦即,由於藉由使用NVMe引擎128b及FTL 123處理對應於主機I/O的操作及對應於內部I/O的操作兩者,因此可緩解設計儲存裝置120的負擔。
圖13為示出根據實施例的儲存系統的方塊圖。為便於說明,將省略與上文所描述的組件相關聯的冗餘描述。
在實施例中,內部應用程式APP_i可在主機裝置110控制下操作。舉例而言,主機裝置110可經由PT 128a提供用於控制儲存控制器CTRL的內部應用程式APP_i的資訊、信號或命令。NVMe引擎128b可將經由PT 128a接收到的資訊、信號或命令提供至內部應用程式APP_i。
在實施例中,經由PT 128a接收到的資訊、信號或命令可與驅動內部應用程式APP_i的操作相關聯,諸如用於內部應用程式APP_i的負載、執行、輸入或輸出操作。內部應用程式APP_i可回應於經由PT 128a接收到的資訊、信號或命令而操作。舉例而言,內部應用程式APP_i可回應於接收到的資訊、信號或命令而產生內部I/O。所產生的內部I/O可經由內部檔案系統FS_i、內部NVMe驅動器DR_i、NVMe引擎128b、FTL 123以及記憶體介面區塊129處理。
在實施例中,在經由PT 128a接收到的資訊、信號或命令與主機操作(例如,儲存裝置120的讀取操作或寫入操作)相關聯 的情況下,NVMe引擎128b可藉由使用FTL 123直接處理經由PT 128a接收到的資訊、信號或命令,而不傳遞通過內部應用程式APP_i。
如上文所描述,儲存裝置120可在主機裝置110的控制下驅動內部應用程式APP_i,且由內部應用程式APP_i發出的內部I/O可藉由使用內部NVMe驅動器DR_i及NVMe引擎128b來處理。
圖14至圖16為用於描述在主機裝置的控制下進行的儲存裝置的操作(例如,內部應用程式驅動)的圖。為繪製簡潔及便於描述起見,將省略一些組件,但實施例不限於此。
參考圖14,控制器記憶體124可包含第一區RG1及第二區RG2。在實施例中,第一區RG1可經組態以儲存與在儲存控制器CTRL上驅動的內部應用程式APP_i相關聯的資訊或程式碼。第二區RG2可經組態以儲存由在儲存控制器CTRL上驅動的內部應用程式APP_i管理或使用的資料。
在實施例中,第一區RG1及第二區RG2可物理或邏輯上劃分於控制器記憶體124中。在實施例中,第一區RG1及第二區RG2可由儲存控制器CTRL劃分或管理,且可將關於第一區RG1及第二區RG2的資訊提供至主機裝置110。在實施例中,第一區RG1及第二區RG2可由主機裝置110管理或劃分。上文描述儲存系統100的剩餘組件,且因此將省略冗餘描述。
在實施例中,主機裝置110可經組態以負載待在儲存裝置120上執行的內部應用程式。
舉例而言,如圖14中所示出,主機裝置110可包含第一 應用程式APP1或與第一應用程式APP1相關聯的程式碼。主機裝置110可藉由將負載命令LOAD及第一應用程式APP1發送至儲存控制器CTRL(階段A1)來將第一應用程式APP1負載至儲存控制器CTRL的控制器記憶體124上。自主機裝置110接收到的第一應用程式APP1可儲存於控制器記憶體124的第一區RG1中,且儲存控制器CTRL可驅動儲存於控制器記憶體124的第一區RG1中的第一應用程式APP1。
替代地,如圖15中所示出,第一應用程式APP1可儲存於NVM裝置119中。在此情況下,主機裝置110可將負載命令LOAD發送至儲存控制器CTRL(階段B1)。回應於負載命令LOAD,儲存控制器CTRL可將儲存於NVM裝置119中的第一應用程式APP1負載至控制器記憶體124的第一區RG1上(階段B2)。
在實施例中,儲存控制器CTRL自NVM裝置119負載第一應用程式APP1的操作可以類似於處理內部I/O的以上方式的方式進行。亦即,回應於來自主機裝置110的負載命令LOAD,儲存控制器CTRL可產生用於自NVM裝置119負載第一應用程式APP1的內部I/O,且所產生的內部I/O可基於參考圖1至圖13所描述的操作方法而處理。更詳細地,內部I/O可經由儲存控制器CTRL的主機介面區塊處理,所述主機介面區塊經組態以自主機裝置110接收負載命令LOAD。
在實施例中,儲存控制器CTRL可經組態以驅動內部應用程式以在主機裝置110的控制下進行各種操作。舉例而言,如圖16中所示出,主機裝置110可將第一讀取命令READ1發送至 儲存控制器CTRL(階段C1)。第一讀取命令READ1可為用於讀取待由第一應用程式APP1處理的第一資料DT1的命令。儲存控制器CTRL可回應於第一讀取命令READ1而自NVM裝置119讀取第一資料DT1(階段C2)。第一資料DT1可儲存於控制器記憶體124的第二區RG2中。
在實施例中,圖16的第一讀取命令READ1可不同於用於主機裝置110的正常讀取操作(例如,主機裝置110自儲存裝置120讀取資料的操作)的正常讀取命令。舉例而言,圖16的第一讀取命令READ1可為用於將由儲存控制器CTRL驅動的第一應用程式APP1將處理的第一資料DT1負載至控制器記憶體124的第二區RG2上的命令。在此情況下,回應於第一讀取命令READ1,儲存控制器CTRL可產生內部I/O且可基於參考圖1至圖13所描述的操作方法而處理內部I/O。
主機裝置110可將執行命令EXE發送至儲存控制器CTRL(階段D1)。執行命令EXE可為用於由儲存控制器CTRL起始第一應用程式APP1的執行的命令。儲存控制器CTRL可回應於執行命令EXE而執行第一應用程式APP1。舉例而言,在儲存控制器CTRL的控制下,可將第一資料DT1提供至第一應用程式APP1(階段D2)。第一應用程式APP1可對第一資料DT1進行計算且可產生及輸出第二資料DT2作為計算的結果(階段D3)。第二資料DT2可儲存於控制器記憶體124的第二區RG2中。
在實施例中,在第一應用程式APP1經組態以直接存取控制器記憶體124的情況下(例如,如同參考圖9給出的以上描述,在驅動第一應用程式APP1的計算引擎可直接存取控制器記憶體 124的情況下),第一應用程式APP1或計算引擎可存取控制器記憶體124而不產生單獨內部I/O。替代地,在第一應用程式APP1未能直接存取控制器記憶體124的情況下(例如,如同參考圖8給出的以上描述,在驅動第一應用程式APP1的計算引擎可經由NVMe引擎存取控制器記憶體124的情況下),第一應用程式APP1或計算引擎可產生內部I/O,且所產生的內部I/O可基於參考圖1至圖13所描述的方法而處理。
主機裝置110可將第二讀取命令READ2發送至儲存控制器CTRL(階段E1)。儲存控制器CTRL可回應於第二讀取命令READ2將儲存於控制器記憶體124的第二區RG2中的第二資料DT2發送至主機裝置110(階段E2)。在實施例中,第二讀取命令READ2可為在無儲存控制器CTRL的內部應用程式(亦即,第一應用程式APP1)的干預的情況下進行的讀取操作的讀取命令。
如上文所描述,根據實施例的儲存裝置可驅動經組態以進行各種計算(或操作)的內部應用程式。在此情況下,可經由內部NVMe驅動器將由內部應用程式發出的內部I/O提供至NVMe引擎。亦即,此由於在儲存裝置中驅動的內部應用程式與主機裝置共用NVMe引擎,因此可有效地處理主機I/O及內部I/O而無設計上的額外負擔。
圖17為示出根據實施例的儲存系統的方塊圖。在上文所描述的一些實施例中,儲存裝置可經由一個儲存控制器CTRL執行內部應用程式APP_i以進行各種計算(或操作)且控制NVM裝置119。然而,實施例並不限於此。舉例而言,儲存裝置可單獨地包含經組態以進行計算的計算控制器。
參考圖17,儲存裝置120可為具有計算功能的計算儲存裝置。
主機裝置110可經組態以讀取儲存於儲存裝置120中的資料或將資料儲存於儲存裝置120中。替代地,主機裝置110可將計算請求提供至儲存裝置120使得儲存裝置120進行特定計算。
儲存裝置120可包含計算控制器1211,例如計算處理器、儲存控制器CTRL、第一記憶體1221、第二記憶體1222以及NVM裝置119。
計算控制器1211可回應於主機裝置110的請求而操作。舉例而言,計算控制器1211可經組態以取決於主機裝置110的請求而進行計算或將主機裝置110的請求傳送至儲存控制器CTRL。在實施例中,計算控制器1211可經由第三介面IF3與主機裝置110通信。第三介面IF3可為遵從NVMe標準的介面,但實施例不限於此。在此情況下,主機裝置110可具有經組態以與計算控制器1211的NVMe驅動器DR_hc通信的NVMe驅動器DR_h。
第一記憶體1221可用作計算控制器1211的緩衝記憶體或工作記憶體。舉例而言,第一記憶體1221可經組態以儲存用於可由計算控制器1211執行的內部應用程式的程式碼或儲存由計算控制器1211使用或管理的資料。
儲存控制器CTRL可經組態以基於來自計算控制器1211的請求或命令而控制NVM裝置119。在實施例中,儲存控制器CTRL可遵從NVMe介面標準與計算控制器1211通信。亦即,儲存控制器CTRL可經組態以經由同一路徑處理由主機裝置110發出的主機I/O及由計算控制器1211發出的內部I/O。
圖18為示出根據實施例的儲存系統的方塊圖。參考圖18,儲存裝置120,例如計算儲存裝置可包含計算控制器1211、儲存控制器CTRL、記憶體2220以及NVM裝置119。上文描述主機裝置110及儲存裝置120的組件,且因此將省略冗餘描述。
在實施例中,計算控制器1211及儲存控制器CTRL可經組態以共用記憶體2220。在此情況下,計算控制器1211及儲存控制器CTRL可經由記憶體2220交換資料。儲存系統100的操作類似於上文所描述的操作,除了計算控制器1211及儲存控制器CTRL共用記憶體2220以外,且因此將省略冗餘描述。
圖19為示出根據實施例的儲存系統的方塊圖。參考圖19,儲存裝置120,例如計算儲存裝置可包含計算控制器1211、儲存控制器CTRL、第二記憶體1222以及NVM裝置119。上文描述主機裝置110及儲存裝置120的組件,且因此將省略冗餘描述。
在實施例中,儲存控制器CTRL可經組態以存取第二記憶體1222,且計算控制器1211可經組態以經由儲存控制器CTRL存取第二記憶體1222。剩餘操作類似於上文所描述的操作,且因此將省略冗餘描述。
圖20為示出根據實施例的儲存系統的方塊圖。參考圖20,儲存裝置120,例如計算儲存裝置可包含計算控制器1211、儲存控制器CTRL、第一記憶體1221、第二記憶體1222以及NVM裝置119。上文描述主機裝置110及儲存裝置120的組件,且因此將省略冗餘描述。
在實施例中,主機裝置110可與儲存裝置120的計算控制器1211及儲存控制器CTRL個別地通信。舉例而言,主機裝置 110可基於第一介面IF1而與儲存控制器CTRL通信,且可讀取儲存於NVM裝置119中的資料或可將資料儲存於NVM裝置119中。
主機裝置110可基於第三介面IF3而與計算控制器1211通信且可控制計算控制器1211。在主機裝置110的控制下,計算控制器1211可驅動內部應用程式或可根據內部應用程式的驅動將結果資料發送至主機裝置110。
在實施例中,儲存控制器CTRL可包含經組態以支援遵從NVMe標準的通信的NVMe引擎128b(以上詳細描述)。主機裝置110可包含主機NVMe驅動器DR_h,且主機NVMe驅動器DR_h可與儲存控制器CTRL的NVMe引擎128b通信。計算控制器1211可包含內部NVMe驅動器DR_ic,且內部NVMe驅動器可例如經由第四介面IF4基於NVMe而與儲存控制器CTRL的NVMe引擎128b通信。亦即,主機裝置110及計算控制器1211可經組態以共用儲存控制器CTRL的NVMe引擎128b(或包含NVMe引擎128b的主機介面區塊128)。儘管主機NVMe驅動器DR_h繪示為與計算控制器1211及儲存控制器CTRL通信,但可針對第一介面IF1及第三介面IF3中的每一者提供個別驅動器。
圖21為示出根據實施例的儲存系統的方塊圖。參考圖21,儲存裝置120,例如計算儲存裝置可包含計算控制器1211、儲存控制器CTRL、第一記憶體1221、第二記憶體1222、開關5230以及NVM裝置119。上文描述主機裝置110及儲存裝置120的組件,且因此將省略冗餘描述。
在實施例中,主機裝置110可經組態以與儲存裝置120的 開關5230通信。開關5230可經組態以將自主機裝置110接收到的資訊(例如,命令或資料)提供至計算控制器1211或儲存控制器CTRL,或將自計算控制器1211及儲存控制器CTRL接收到的資訊(例如,資料)傳送至主機裝置110。舉例而言,在自主機裝置110接收到的資訊(例如,命令或資料)與計算控制器1211相關聯的情況下,開關5230可將自主機裝置110接收到的資訊提供至計算控制器1211。計算控制器1211可回應於接收到的資訊而進行對應計算(或操作)。在實施例中,開關5230可為經組態以切換或路由PCIe信號的PCIe開關。
在實施例中,計算控制器1211的計算(或操作)可經由儲存控制器CTRL進行;在此情況下,對應於自計算控制器1211發出的內部I/O的內部命令可由儲存控制器CTRL的NVMe引擎處理。在實施例中,計算控制器1211及儲存控制器CTRL可經由開關5230彼此通信。替代地,計算控制器1211及儲存控制器CTRL可經由單獨通信通道,例如經由第四介面IF4彼此通信。
如上文所描述,根據實施例的儲存裝置可為經組態以在內部進行各種計算(或操作)的計算儲存裝置。計算儲存裝置可包含計算控制器及儲存控制器。計算控制器可經組態以在計算儲存裝置中進行各種計算(或操作)或可經組態以驅動支援各種計算(或操作)的內部應用程式。儲存控制器可經組態以存取包含於計算儲存裝置中的非揮發性記憶體裝置。在此情況下,計算控制器及主機裝置可共用儲存控制器的主機介面區塊,且因此可在無設計上的額外負擔的情況下改良計算儲存裝置的效能。
儘管包含兩個控制器(例如,計算控制器及儲存控制器) 的計算儲存裝置的實例在以上參考圖17至圖21描述,但實施例不限於此。舉例而言,計算儲存裝置可包含經組態以進行不同計算功能的多個計算控制器及經組態以存取非揮發性記憶體裝置的儲存控制器。替代地,計算儲存裝置可包含經組態以進行各種計算功能及對非揮發性記憶體裝置的存取的整合式控制器。因此,上文所描述的實施例僅為實例,且不為限制性的。
圖22為用於描述根據實施例的儲存裝置120的儲存控制器CTRL與NVM裝置119之間的通信的圖。參考圖22,儲存控制器CTRL與NVM裝置119之間的一個通信通道60將參考圖22描述,但實施例不限於此。儲存控制器CTRL及其他非揮發性記憶體裝置可經由實質上類似於圖22的通信通道的其他通道(亦即,多個通道)彼此通信。
儲存控制器CTRL可包含第一介面電路IFC_1。在實施例中,第一介面電路IFC_1可為包含於上文所描述的記憶體介面區塊129中的電路。
第一介面電路IFC_1可包含第一接腳P11至第八接腳P18。儲存控制器CTRL可經與多個接腳P11至接腳P18將各種信號傳輸至NVM裝置119。舉例而言,儲存控制器CTRL可經由第一接腳P11傳輸晶片啟用信號nCE、經由第二接腳P12傳輸命令鎖存啟用信號CLE、經由第三接腳P13傳輸位址鎖存啟用信號ALE、經由第四接腳P14傳輸寫入啟用信號nWE,以及經由第五接腳P15將讀取啟用信號nRE傳輸至NVM裝置119,且可經由第六接腳P16與NVM裝置119交換資料選通信號DQS以及經由第七接腳P17與NVM裝置119交換資料信號DQ,且經由第八接腳 P18自NVM裝置119接收讀取及忙綠信號nR/B。在實施例中,第七接腳P17可包含多個接腳。
NVM裝置119可包含第二介面電路IFC_2、控制邏輯電路CL以及記憶體單元陣列MCA。第二介面電路IFC_2可包含第一接腳P21至第八接腳P28。第二介面電路IFC_2可經由第一接腳P21至第八接腳P28與儲存控制器CTRL交換各種信號。上文描述儲存控制器CTRL與NVM裝置119之間的各種信號,且因此將省略冗餘描述。
第二介面電路IFC_2可自資料信號DQ獲得命令CMD,所述資料信號DQ基於寫入啟用信號nWE的雙態觸發時間點而在命令鎖存啟用信號CLE的啟用區段(例如,高位準狀態)中接收。第二介面電路IFC_2可自資料信號DQ獲得位址ADDR,所述資料信號DQ基於寫入啟用信號nWE的雙態觸發時間點而在位址鎖存啟用信號ALE的啟用區段(例如,高位準狀態)中接收。
在實施例中,寫入啟用信號nWE可維持於靜態狀態(例如,高位準或低位準)且在高位準與低位準之間雙態觸發。舉例而言,寫入啟用信號nWE可在傳輸命令CMD或位址ADDR的區段中雙態觸發。因此,第二介面電路IFC_2可基於寫入啟用信號nWE的雙態觸發時間點而獲得命令CMD或位址ADDR。
在NVM裝置119的資料(DATA)輸出操作中,第二介面電路IFC_2可在輸出資料DATA之前接收經由第五接腳P25雙態觸發的讀取啟用信號nRE。第二介面電路IFC_2可產生基於讀取啟用信號nRE的雙態觸發而雙態觸發的資料選通信號DQS。舉例而言,第二介面電路IFC_2可基於讀取啟用信號nRE的雙態觸 發開始時間而產生在預定延遲(例如,tDQSRE)之後開始雙態觸發的資料選通信號。第二介面電路IFC_2可基於資料選通信號DQS的雙態觸發時間點而傳輸包含資料的資料信號DQ。因此,資料可與資料選通信號DQS的雙態觸發時間點對準且傳輸至儲存控制器CTRL。
在NVM裝置119的資料(DATA)輸入操作中,當包含資料的資料信號DQ自儲存控制器CTRL接收時,第二介面電路IFC_2可自記憶體控制器接收雙態觸發的資料選通信號DQS以及資料。第二介面電路IFC_2可基於資料選通信號DQS的雙態觸發時間點而自資料信號DQ獲得資料。舉例而言,第二介面電路IFC_2可在資料選通信號DQS的上升邊緣及下降邊緣處取樣資料信號DQ且獲得資料。
第二介面電路IFC_2可經第八接腳P28將就緒/忙綠輸出信號nR/B傳輸至儲存控制器CTRL。當NVM裝置119處於忙碌狀態(亦即,當在NVM裝置119中進行操作時)時,第二介面電路IFC_2可將指示忙碌狀態的就緒/忙碌輸出信號nR/B傳輸至儲存控制器CTRL。當NVM裝置119處於就緒狀態(亦即,當不在NVM裝置119中進行或完成操作時)時,第二介面電路IFC_2可將指示就緒狀態的就緒/忙碌輸出信號nR/B傳輸至儲存控制器CTRL。
控制邏輯電路CL可控制NVM裝置119的所有操作。控制邏輯電路CL可接收自第二介面電路IFC_2獲得的命令/位址CMD/ADDR。控制邏輯電路CL可產生用於回應於接收到的命令/位址CMD/ADDR而控制NVM裝置119的其他組件的控制信號。 舉例而言,控制邏輯電路CL可產生用於將資料程式化至記憶體體單元陣列MCA或自記憶體單元陣列MCA讀取資料的各種控制信號。
記憶體單元陣列MCA可經由控制邏輯電路CL的控制儲存自第二介面電路IFC_2獲得的資料。記憶體單元陣列MCA可經由控制邏輯電路CL的控制將所儲存資料輸出至第二介面電路IFC_2。
記憶體單元陣列MCA可包含多個記憶體單元。舉例而言,多個記憶體單元可為快閃記憶體單元。然而,本發明概念不限於此,且記憶體單元可為RRAM單元、FRAM單元、PRAM單元、閘流體RAM(thyristor RAM;TRAM)單元或MRAM單元。在下文中,將主要描述記憶體單元為NAND快閃記憶體單元的實施例。
圖23為根據實施例的向其應用儲存裝置的系統的圖。參考圖23,系統6000可基本上為行動系統,諸如攜帶型通信終端(例如,行動電話)、智慧型手機、平板PC、穿戴式裝置、健康照護裝置或IOT裝置。然而,圖23的系統6000並非必需受限於行動系統且可為PC、膝上型電腦、伺服器、媒體播放器或汽車裝置(例如,導航裝置)。
系統6000可包含主處理器6100、記憶體(例如,6200a至6200b)以及儲存裝置(例如,6300a至6300b)。此外,系統6000可包含影像擷取裝置6410、使用者輸入裝置6420、感測器6430、通信裝置6440、顯示器6450、揚聲器6460、功率供應裝置6470以及連接介面6480中的至少一者。
主處理器6100可控制系統6000的所有操作,更具體言 之,包含於系統6000中的其他組件的操作。主處理器6100可實施為通用處理器、專用處理器或應用程式處理器。
主處理器6100可包含至少一個CPU核心6110,且更包含經組態以控制記憶體6200a至記憶體6200b及/或儲存裝置6300a至儲存裝置6300b的控制器6120。在一些實施例中,主處理器6100可更包含加速器6130,所述加速器6130為用於諸如人工智慧(artificial intelligence;AI)資料操作的高速資料操作的專用電路。加速器6130可包含圖形處理單元(graphics processing unit;GPU)、神經處理單元(neural processing unit;NPU)及/或資料處理單元(data processing unit;DPU)且實施為與主處理器6100的其他組件實體分離的晶片。
記憶體6200a至記憶體6200b可用作系統6000的主記憶體裝置。儘管記憶體6200a至記憶體6200b中的每一者可包含諸如SRAM及/或DRAM的揮發性記憶體,但記憶體6200a至記憶體6200b中的每一者可包含諸如快閃記憶體、PRAM及/或RRAM的非揮發性記憶體。記憶體6200a及記憶體6200b可實施於與主處理器6100相同的封裝中。
儲存裝置6300a至儲存裝置6300b可充當不管是否向其供應功率都經組態以儲存資料的非揮發性儲存裝置,且具有比記憶體6200a及記憶體6200b更大的儲存容量。儲存裝置6300a至儲存裝置6300b可分別包含儲存控制器6310a至儲存控制器6310b,亦即「STRG CTRL」及經組態以經由儲存控制器6310a至儲存控制器6310b的控制儲存資料的NVM 6320a至NVM 6320b。儘管NVM 6320a至NVM 6320b可包含具有2D結構或3D V-NAND 結構的快閃記憶體,但NVM 6320a至NVM 6320b可包含其他類型的NVMs,諸如PRAM及/或RRAM。
儲存裝置6300a至儲存裝置6300b可與主處理器6100實體上分離且包含於系統6000中或實施於與主處理器6100相同的封裝中。另外,儲存裝置6300a至儲存裝置6300b可具有SSD或記憶體卡的類型且以可移除方式經由諸如將在下文描述的連接介面6480的介面與系統6000的其他組件組合。儲存裝置6300a至儲存裝置6300b可為向其應用諸如UFS、eMMC或NVMe的標準協定的裝置,但不限於。
在實施例中,儲存裝置6300a至儲存裝置6300b可經組態以在主處理器6100的控制下進行各種計算,且儲存裝置6300a至儲存裝置6300b中的一或多個可與參考圖1至圖21所描述的儲存裝置120相同。在實施例中,儲存裝置6300a至儲存裝置6300b可經組態以進行或執行由加速器6130執行的功能的至少部分。
影像擷取裝置6410可擷取靜態影像或移動影像。影像擷取裝置6410可包含攝影機、攝錄影機及/或網路攝影機。
使用者輸入裝置6420可接收由系統6000的使用者輸入的各種類型的資料且包含觸控板、小鍵盤、鍵盤、滑鼠及/或麥克風。
感測器6430可偵測可自系統6000的外部獲得的各種類型的物理量,且將經偵測的物理量轉換為電信號。感測器6430可包含溫度感測器、壓力感測器、照度感測器、位置感測器、加速度感測器、生物感測器及/或陀螺儀感測器。
通信裝置6440可根據各種通信協定傳輸及接收系統 6000外部的其他裝置之間的信號。通信裝置6440可包含天線、收發器及/或數據機。
顯示器6450及揚聲器6460可充當經組態以將視覺資訊及聽覺資訊分別輸出至系統6000的使用者的輸出裝置。
功率供應裝置6470可適當轉換自系統6000中嵌入的電池及/或外部電源供應的功率,且將所轉換的功率供應至系統6000的組件中的每一者。
連接介面6480可在系統6000與外部裝置之間提供連接,所述外部裝置連接至系統6000且能夠將資料傳輸至系統6000且自系統6000接收資料。連接介面6480可藉由使用各種介面方案來實施,諸如ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 6394、USB介面、SD卡介面、MMC介面、eMMC介面、UFS介面、eUFS介面以及CF卡介面。
圖24為示出向其應用根據實施例的伺服器系統的資料中心的方塊圖。參考圖24,維持各種資料且提供與資料相關聯的各種服務的設施的資料中心7000可稱作「資料儲存中心」。資料中心7000可為用於搜索引擎或資料庫管理的系統,或可為用於各種機構的計算系統。資料中心7000可包含多個應用程式伺服器7100_1至應用程式伺服器7100_n以及多個儲存伺服器7200_1至儲存伺服器7200_m。應用程式伺服器7100_1至應用程式伺服器7100_n的數目以及儲存伺服器7200_1至儲存伺服器7200_m的數目可不同地改變或修改。多個應用程式伺服器7100_1至應用程式伺服器7100_n可分別包含處理器7110_1至處理器7110_n、開關7130_1至開關7130_n、儲存裝置7150_1至儲存裝置7150_n以及 用於連接至網路NT的網路介面連接件(network interface connector;NIC)7140_1至網路介面連接件7140_n。多個儲存伺服器7200_1至儲存伺服器7200_m可分別包含處理器7210_1至處理器7210_m、記憶體7220_1至記憶體7220_m、儲存裝置7250_1至儲存裝置7250_m、開關7230_1至開關7230_m以及NIC 7240_1至NIC 7240_m。儲存裝置7250_1至儲存裝置7250_m可分別包含控制器7251_1至控制器7251_m(指示為圖23中的「CTRL」),NVM 7252_1至NVM 7252_m、DRAM 7253_1至DRAM 7253_m以及介面(I/F)7254_1至介面(I/F)7254_m。
在下文中,為便於說明,將描述第一儲存伺服器7200_1的實例。然而,儲存伺服器7200_1至儲存伺服器7200_m以及多個應用程式伺服器7100_1至應用程式伺服器7100_n中的每一者可具有類似結構。
第一儲存伺服器7200_1可包含處理器7210_1、記憶體7220_1、開關7230_1、NIC 7240_1以及儲存裝置7250_1。處理器7210_1可進行第一儲存伺服器7200_1的總體操作。記憶體7220_1可在處理器7210_1的控制下儲存各種指令或資料。處理器7210_1可經組態以存取記憶體7220_1以執行各種指令或處理資料。在實施例中,記憶體7220_1可包含各種類型的記憶體裝置中的至少一者,諸如雙資料速率同步DRAM(Double Data Rate Synchronous DRAM;DDR SDRAM)、高頻寬記憶體(High Bandwidth Memory;HBM)、混雜記憶體立方體(混雜Memory Cube;HMC)、雙直列記憶體模組(Dual In-line Memory Module;DIMM)、傲騰DIMM(Optane DIMM)以及非揮發性DIMM(Non-Volatile DIMM; NVDIMM)。
在實施例中,包含於第一儲存伺服器7200_1中的處理器7210_1的數目及包含於第一儲存伺服器7200_1中的記憶體7220_1的數目可不同地改變或修改。在實施例中,包含於第一儲存伺服器7200_1中的處理器7210_1及記憶體7220_1可構成處理器記憶體對,且包含於第一儲存伺服器7200_1中的處理器記憶體對的數目可不同地改變或修改。在實施例中,包含於第一儲存伺服器7200_1中的處理器7210_1的數目及包含於第一儲存伺服器7200_1中的記憶體7220_1的數目可為不同的。處理器7210_1可包含為單一核心處理器或多核處理器。
在處理器7210_1的控制下,開關7230_1可選擇性地連接處理器7210_1及儲存裝置7250_1或可選擇性地連接NIC 7240_1、儲存裝置7250_1以及處理器7210_1。
NIC 7240_1可連接第一儲存伺服器7200_1與網路NT。NIC 7240_1可包含網路介面卡、網路配接器以及類似物。NIC 7240_1可經由有線介面、無線介面、藍芽介面或光學介面與網路NT連接。NIC 7240_1可包含內部記憶體、DSP、主機匯流排介面以及類似物,且可經由主機匯流排介面與處理器7210_1或開關7230_1連接。主機匯流排介面可包含各種介面中的至少一者,諸如ATA介面、SATA介面、e-SATA介面、SCSI、SAS介面、PCI介面、PCIe介面、NVMe介面、IEEE 1394介面、USB介面、SD卡介面、MMC介面、eMMC介面、UFS介面、eUFS介面以及CF卡介面。在實施例中,NIC 7240_1可與處理器7210_1、開關7230_1以及儲存裝置7250_1中的至少一者整合。
在處理器7210_1的控制下,儲存裝置7250_1可儲存資料或可輸出所儲存資料。儲存裝置7250_1可包含控制器7251_1、NVM 7252_1、DRAM 7253_1以及I/F 7254_1。在實施例中,儲存裝置7250_1可更包含用於安全性或隱私的安全元件(secure element;SE)。
控制器7251_1可控制儲存裝置7250_1的總體操作。在實施例中,控制器7251_1可包含SRAM。回應於經由I/F 7254_1接收到的信號,控制器7251_1可將資料儲存於NVM 7252_1中或可輸出儲存於NVM 7252_1中的資料。在實施例中,控制器7251_1可經組態以基於雙態觸發介面或ONFI而控制NVM 7252_1。
DRAM 7253_1可經組態以暫時儲存待儲存於NVM 7252_1中的資料或自NVM 7252_1讀取的資料。DRAM 7253_1可經組態以儲存用於控制器7251_1操作的各種資料(例如,元資料及映射資料)。I/F 7254_1可在控制器7251_1與處理器7210_1、開關7230_1或NIC 7240_1之間提供實體連接。在實施例中,介面可實施以支援允許儲存裝置7250_1經由專用電纜直接連接的直接附接儲存(Direct-Attached Storage;DAS)。在實施例中,I/F 7254_1可經由主機介面匯流排基於各種以上所描述的介面中的至少一者而實施。
第一儲存伺服器7200_1的以上組件提供為實例且不為限制性的。第一儲存伺服器7200_1的以上組件可應用於儲存伺服器中的每一者或多個應用程式伺服器7100_1至應用程式伺服器7100_n中的每一者。在實施例中,可選擇性地省略應用程式伺服器7100_1至應用程式伺服器7100_n的儲存裝置7150_1至儲存裝 置7150_n中的每一者。
多個應用程式伺服器7100_1至應用程式伺服器7100_n以及多個儲存伺服器7200_1至儲存伺服器7200_m可經由網路NT彼此通信。網路NT可藉由使用光纖通道(fiber channel;FC)、乙太網路或類似者實施。在此情況下,FC可為用於高速資料傳輸的媒體,且可使用提供高效能/高可用性的光學開關。取決於網路NT的存取方式,儲存伺服器7200_1至儲存伺服器7200_m可提供為檔案儲存、區塊儲存或物件儲存。
在實施例中,網路NT可為諸如儲存區域網路(storage area network;SAN)的儲存專屬網路。舉例而言,SAN可為使用FC網路且遵從FC協定(FC協定;FCP)實施的FC-SAN。替代地,SAN可為使用TCP/IP網路且遵從iSCSI(或TCP/IP上SCSI或網際網路SCSI)協定實施的IP-SAN。在實施例中,網路NT可為諸如TCP/IP網路的相關技術網路。舉例而言,網路NT可遵從諸如乙太網路FC(FC over Ethernet;FCoE)、網路附接儲存(network attached storage;NAS)、網路組構上NVMe(NVMe over Fabrics;NVMe-oF)的協定來實施。
在實施例中,多個應用程式伺服器7100_1至應用程式伺服器7100_n中的至少一者可經組態以經由網路NT存取剩餘應用程式伺服器中的至少一者或多個儲存伺服器7200_1至儲存伺服器7200_m中的至少一者。
舉例而言,第一應用程式伺服器7100_1可經由網路NT將由使用者或用戶端請求的資料儲存於多個儲存伺服器7200_1至儲存伺服器7200_m中的至少一者中。替代地,第一應用程式伺服 器7100_1可經由網路NT自多個儲存伺服器7200_1至儲存伺服器7200_m中的至少一者獲得由使用者或用戶端請求的資料。在此情況下,第一應用程式伺服器7100_1可為網頁伺服器、資料庫管理系統(database management system;DBMS)或類似者。
亦即,第一應用程式伺服器7100_1的處理器7110_1可經由網路NT存取另一應用程式伺服器(例如,7100_n)的記憶體(例如,7120_n)或儲存裝置(例如,7150_n)。替代地,第一應用程式伺服器7100_1的處理器7110_1可經由網路NT存取第一儲存伺服器7200_1的記憶體7220_1或儲存裝置7250_1。因此,第一應用程式伺服器7100_1可對儲存於其他應用程式伺服器或多個儲存伺服器7200_1至儲存伺服器7200_m中的資料進行各種操作。舉例而言,第一應用程式伺服器7100_1可執行或發出用於在其他應用程式伺服器之間或多個儲存伺服器7200_1至儲存伺服器7200_m之間移動或複製資料的指令。在此情況下,可經由儲存伺服器7200_1至儲存伺服器7200_m的記憶體7220_1至7220_m或直接將針對移動或複製的資料自儲存伺服器7200_1至儲存伺服器7200_m的儲存裝置7250_1至儲存裝置2250_m移動至應用程式伺服器7100_1至應用程式伺服器7100_n的記憶體7120_1至記憶體7120_n。經由網路NT傳送的資料可為針對安全性或隱私進行加密的資料。
在實施例中,儲存裝置7150_1至儲存裝置7150_n以及儲存裝置7250_1至儲存裝置7250_m中的一或多個可為參考圖1至圖21所描述的計算儲存裝置且可經組態以進行各種計算(computation)/計算(calculation)操作。儲存裝置7150_1至儲存 裝置7150_n以及儲存裝置7250_1至儲存裝置7250_m可處理所請求的內部I/O,同時進行如參考圖1至圖21所描述的各種內部計算(computation)/計算(calculation)。
根據一些實施例,儲存裝置可藉由執行內部應用程式來進行各種計算(或操作)。在此情況下,儲存裝置中所產生的內部I/O可經由與由外部主機裝置產生的主機I/O相同的路徑處理。因此,可緩解設計用於處理內部應用程式的單獨專用驅動器或專用通道的負擔。此外,由於可使用現有最佳化儲存裝置的設計,因此改良儲存裝置的效能。
在已參考本揭露的實施例來描述本揭露時,所屬領域中具有通常知識者將顯而易見,在不脫離如以下申請專利範圍中所闡述的本揭露的精神及範圍的情況下,可對本揭露內容進行各種改變及修改。
100:儲存系統 110:主機裝置 111:主機控制器 112:主機記憶體 119: NVM裝置 120:儲存裝置 121:中央處理單元 122:計算引擎 123:FTL 124:控制器記憶體 125:封包管理器 126:錯誤校正碼引擎 127:進階加密標準 128:主機介面區塊 129:記憶體介面區塊

Claims (20)

  1. 一種計算儲存裝置,包括:非揮發性記憶體(NVM)裝置;以及儲存控制器,經組態以控制所述NVM裝置,其中所述儲存控制器包含:計算引擎,經組態以執行內部應用程式以產生內部命令;主機介面區塊,經組態以自外部主機裝置接收主機命令,自所述計算引擎接收所述內部命令,以及個別地處理接收到的所述主機命令及接收到的所述內部命令;快閃轉譯層(FTL),經組態以基於所述主機介面區塊的所述處理的結果而進行位址映射操作;以及記憶體介面區塊,經組態以基於所述FTL的所述位址映射操作而控制所述NVM裝置。
  2. 如請求項1所述的計算儲存裝置,更包括:系統匯流排,其中所述計算引擎、所述主機介面區塊、所述FTL以及所述記憶體介面區塊經由所述系統匯流排彼此通信。
  3. 如請求項2所述的計算儲存裝置,其中所述主機介面區塊經組態以基於第一介面與所述外部主機裝置通信及基於第二介面與所述計算引擎通信。
  4. 如請求項3所述的計算儲存裝置,其中所述第一介面為NVM高速(NVMe)介面,且所述第二介面為藉由在所述系統匯流排上使所述NVMe介面虛擬化來實施的介面。
  5. 如請求項2所述的計算儲存裝置,其中所述主機介 面區塊包含:實體埠,經組態以分別將實體信號傳輸至所述外部主機裝置且自所述外部主機裝置接收所述實體信號;以及NVMe引擎,經組態以經由所述實體埠接收所述主機命令及經由所述系統匯流排接收所述內部命令。
  6. 如請求項5所述的計算儲存裝置,其中所述NVM裝置在被劃分成第一名稱空間及第二名稱空間的狀態下被管理,且其中所述NVMe引擎進一步經組態以處理關於所述第一名稱空間的所述主機命令及處理關於所述第二名稱空間的所述內部命令。
  7. 如請求項2所述的計算儲存裝置,其中所述主機介面區塊包含:實體埠,經組態以分別將實體信號傳輸至所述外部主機裝置且自所述外部主機裝置接收所述實體信號;第一NVMe引擎,經組態以經由所述實體埠接收所述主機命令;以及第二NVMe引擎,經組態以經由所述系統匯流排接收所述內部命令。
  8. 如請求項7所述的計算儲存裝置,其中所述NVM裝置在被劃分成第一名稱空間、第二名稱空間以及第三名稱空間的狀態下被管理,其中所述第一NVMe引擎進一步經組態以處理關於所述第一名稱空間的所述主機命令,其中所述第二NVMe引擎進一步經組態以處理關於所述第二 名稱空間的所述內部命令,且其中所述第一NVMe引擎及所述第二NVMe引擎共用所述第三名稱空間。
  9. 如請求項1所述的計算儲存裝置,其中所述儲存控制器更包含控制器記憶體,其中所述控制器記憶體包含對應於所述內部命令的內部提交佇列及內部完成佇列。
  10. 如請求項9所述的計算儲存裝置,其中所述計算引擎進一步經組態以經由所述主機介面區塊將所述內部命令添加至所述控制器記憶體的所述內部提交佇列,且其中所述主機介面區塊自所述控制器記憶體的所述內部提交佇列接收所述內部命令。
  11. 如請求項9所述的計算儲存裝置,其中所述計算引擎進一步經組態以將所述內部命令直接添加至所述控制器記憶體的所述內部提交佇列,且其中所述主機介面區塊進一步經組態以自所述計算引擎接收門鈴信令及藉由回應於所述門鈴信令而自所述控制器記憶體的所述內部提交佇列提取所述內部命令來接收所述內部命令。
  12. 如請求項1所述的計算儲存裝置,其中所述主機介面區塊進一步經組態以:自所述外部主機裝置接收門鈴信令;以及藉由回應於所述門鈴信令而自所述外部主機裝置的主機記憶體的主機提交佇列提取所述主機命令來接收所述主機命令。
  13. 如請求項1所述的計算儲存裝置,其中所述FTL包 含:FTL加速器,經組態以進行所述位址映射操作;讀取緩衝電路,經組態以管理經由所述記憶體介面區塊接收到的讀取資料;以及寫入緩衝電路,經組態以管理經由所述主機介面區塊接收到的寫入資料,以及其中所述FTL加速器、所述讀取緩衝電路以及所述寫入緩衝電路為硬體電路。
  14. 一種計算儲存裝置的操作方法,所述操作方法包括:由實體埠自外部主機裝置接收主機命令;經由非揮發性記憶體高速(NVMe)引擎處理所述主機命令;由快閃轉譯層(FTL)針對經處理的所述主機命令進行第一位址映射;由記憶體介面區塊基於所述第一位址映射而存取NVM裝置;由執行內部應用程式的計算引擎產生內部命令;經由所述NVMe引擎處理所述內部命令;由所述FTL針對經處理的所述內部命令進行第二位址映射;以及由所述記憶體介面區塊基於所述第二位址映射而存取所述NVM裝置。
  15. 如請求項14所述的操作方法,其中由所述計算引擎產生所述內部命令更包含:由所述實體埠自所述外部主機裝置接收執行命令;由所述實體埠將所述執行命令傳送至所述計算引擎;以及 由所述計算引擎回應於所述執行命令執行所述內部應用程式,且取決於執行所述內部應用程式而產生所述內部命令。
  16. 如請求項14所述的操作方法,其中由所述計算引擎產生所述內部命令更包含:由所述實體埠自所述外部主機裝置接收執行命令;由所述NVMe引擎自所述實體埠接收所述執行命令;由所述NVMe引擎將所述執行命令傳送至所述計算引擎;以及由所述計算引擎回應於所述執行命令執行所述內部應用程式,且取決於執行所述內部應用程式而產生所述內部命令。
  17. 如請求項14所述的操作方法,其中所述內部應用程式儲存於所述計算儲存裝置的控制器記憶體中。
  18. 一種經組態以控制非揮發性記憶體(NVM)裝置的儲存控制器,包括:NVM高速(NVMe)引擎,經組態以經由外部主機驅動器接收主機命令;快閃轉譯層(FTL),經組態以在所述NVMe引擎的控制下進行位址映射;記憶體介面區塊,經組態以基於所述FTL的所述位址映射而存取所述NVM裝置;內部應用程式,經組態以發出內部輸入/輸出(I/O)請求;內部檔案系統,經組態以組織所述內部I/O請求;以及內部驅動器,經組態以基於經組織的所述內部I/O請求而產生內部命令, 其中所述NVMe引擎進一步經組態以:自所述內部驅動器接收所述內部命令;以及基於接收到的所述內部命令經由所述FTL及所述記憶體介面區塊而存取所述NVM裝置。
  19. 如請求項18所述的儲存控制器,其中所述外部主機驅動器及所述NVMe引擎經組態以基於NVMe介面彼此通信,且其中所述內部驅動器及所述NVMe引擎經組態以經由對應於所述NVMe介面的虛擬化版本的介面彼此通信。
  20. 如請求項19所述的儲存控制器,其中所述外部主機驅動器及所述內部驅動器中的每一者包含經組態以支援所述NVMe介面的NVMe驅動器。
TW111121641A 2021-06-17 2022-06-10 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 TWI797022B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2021-0078889 2021-06-17
KR1020210078889A KR102365312B1 (ko) 2021-06-17 2021-06-17 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US17/829,980 2022-06-01
US17/829,980 US11645011B2 (en) 2021-06-17 2022-06-01 Storage controller, computational storage device, and operational method of computational storage device

Publications (2)

Publication Number Publication Date
TW202307672A TW202307672A (zh) 2023-02-16
TWI797022B true TWI797022B (zh) 2023-03-21

Family

ID=81878009

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111121641A TWI797022B (zh) 2021-06-17 2022-06-10 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法

Country Status (4)

Country Link
US (1) US20230229357A1 (zh)
EP (1) EP4105771A1 (zh)
JP (1) JP7247405B2 (zh)
TW (1) TWI797022B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100792568B1 (ko) * 2006-08-21 2008-01-09 현대자동차주식회사 자동차용 다목적 거치대

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190023196A (ko) * 2017-08-28 2019-03-08 에스케이하이닉스 주식회사 데이터 저장 장치
JP2020021385A (ja) * 2018-08-03 2020-02-06 キオクシア株式会社 メモリシステム
KR20200037049A (ko) * 2018-09-21 2020-04-08 삼성전자주식회사 스토리지 장치
KR20200129843A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10866740B2 (en) * 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory
US11010314B2 (en) * 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190023196A (ko) * 2017-08-28 2019-03-08 에스케이하이닉스 주식회사 데이터 저장 장치
JP2020021385A (ja) * 2018-08-03 2020-02-06 キオクシア株式会社 メモリシステム
KR20200037049A (ko) * 2018-09-21 2020-04-08 삼성전자주식회사 스토리지 장치
KR20200129843A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
JP2023001076A (ja) 2023-01-04
TW202307672A (zh) 2023-02-16
JP7247405B2 (ja) 2023-03-28
EP4105771A1 (en) 2022-12-21
US20230229357A1 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US11726701B2 (en) Memory expander, heterogeneous computing device using memory expander, and operation method of heterogenous computing
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
TWI797022B (zh) 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US11921639B2 (en) Method for caching data, a host device for caching data, and a storage system for caching data
US20230028071A1 (en) Memory module, system including the same, and operation method of memory module
US11829641B2 (en) Storage device and operating method for managing a command queue
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
US11868270B2 (en) Storage system and storage device, and operating method thereof
US11914879B2 (en) Storage controller and storage system comprising the same
US20230195688A1 (en) Multi-core processor and storage device
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device
US20230222062A1 (en) Apparatus and method for cache-coherence
US20230153237A1 (en) Method and device for storing data
US20240086110A1 (en) Data storage method, storage apparatus and host