CN117931053A - 计算存储设备、操作其的方法和操作主机设备的方法 - Google Patents

计算存储设备、操作其的方法和操作主机设备的方法 Download PDF

Info

Publication number
CN117931053A
CN117931053A CN202311136610.XA CN202311136610A CN117931053A CN 117931053 A CN117931053 A CN 117931053A CN 202311136610 A CN202311136610 A CN 202311136610A CN 117931053 A CN117931053 A CN 117931053A
Authority
CN
China
Prior art keywords
execution command
command
host device
namespace
state
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202311136610.XA
Other languages
English (en)
Inventor
李钟沅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN117931053A publication Critical patent/CN117931053A/zh
Pending legal-status Critical Current

Links

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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/0653Monitoring storage devices or 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/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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种用于操作计算存储设备的方法包括:由存储控制器从主机设备接收:(1)指示计算命名空间的设置的计算命名空间设置指令;(2)与计算命名空间相关的延迟阈值;(3)程序;(4)使用程序的第一执行命令;以及(5)使用程序的第二执行命令。额外地,该方法包括响应于第二执行命令,由存储控制器向主机设备发送延迟消息。

Description

计算存储设备、操作其的方法和操作主机设备的方法
相关申请的交叉引用
本申请要求2022年10月24日在韩国知识产权局提交的第10-2022-0137423号韩国专利申请的优先权以及所有利益,其全部内容通过引用结合于此。
技术领域
本公开涉及计算存储设备、用于操作计算存储设备的方法以及用于操作主机设备的方法。
背景技术
半导体存储器设备包括易失性存储器设备和非易失性存储器设备。虽然易失性存储器设备的读取和写入速度很高,但是当易失性存储器设备断电时,易失性存储器设备可能丢失存储的内容。相反,非易失性存储器设备即使在其电源关闭时也保持其存储的内容。因此,非易失性存储器设备不管是否供电用于存储都要被保持的内容。
例如,易失性存储器设备包括静态RAM(SRAM)、动态RAM(DRAM)和同步DRAM(SDRAM)。即使当设备断电时,非易失性存储器设备也在其中保持存储的内容。例如,非易失性存储器设备包括ROM(只读存储器)、可编程ROM(PROM)、EPROM(电可编程ROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁性RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。闪存可以分类为NOR类型闪存和NAND类型闪存。
最近,已经做出尝试将处理器和加速器彼此结合以提高电子设备的处理速度。正在跨各个领域进行这些尝试。特别地,即使对于诸如SSD(固态驱动)的大容量存储设备,也正在对具有基于加速器的平台的计算存储设备进行大量研究。
发明内容
本公开的目的是提供一种能够进行与计算执行相关的延迟控制的计算存储设备、一种用于操作该设备的方法以及一种用于操作主机设备的方法。
根据本公开的目的不限于上述目的。根据本公开的未提及的其他目的和优点可以基于以下描述来理解,并且可以基于根据本公开的实施例来更清楚地理解。此外,将容易理解的是,根据本公开的目的和优点可以使用权利要求及其组合中所示的手段来实现。
根据本公开的一个方面,一种用于操作计算存储设备的方法包括:由存储控制器从主机设备接收:(1)建立计算命名空间的计算命名空间设置指令,(2)与计算命名空间相关的延迟阈值,(3)程序,(4)使用程序的第一执行命令,以及(5)使用程序的第二执行命令。额外地,存储控制器向主机设备发送延迟消息。
根据本公开的另一方面,一种用于操作具有虚拟机的主机设备的方法包括:由虚拟机向存储设备发送:(1)建立计算命名空间以处理来自虚拟机的命令的设置指令,(2)与计算命名空间相关的延迟阈值,(3)要加载到计算命名空间中的程序,(4)使用程序的第一执行命令,以及(5)使用程序的第二执行命令。额外地,虚拟机响应于第二执行命令从存储设备接收延迟消息。
根据本公开的另一方面,一种计算存储设备包括:存储数据的非易失性存储器和存储控制器。存储控制器控制非易失性存储器和加速器。加速器基于从主机设备接收的执行命令并使用从主机设备提供的程序来处理对数据的计算。存储控制器从主机设备接收执行命令。响应于延迟相关的状态是当将从主机设备接收的第一执行命令存储在命令队列中以等待加速器的处理时的第一状态,存储控制器将执行命令存储在命令队列中。响应于延迟相关的状态是不同于第一状态的第二状态,存储控制器向主机设备发送延迟消息。
附图说明
通过参考附图详细描述本公开的说明性实施例,本公开的上述和其他方面和特征将变得更加清晰,其中:
图1是根据一些实施例的存储器系统的框图;
图2是图1的非易失性存储器的框图;
图3是图1的存储控制器和非易失性存储器的框图;
图4是展示图2的存储器单元阵列的说明性电路图;
图5是示出根据一些实施例的存储器系统的操作的流程图;
图6至图10是用于示出图5示出的存储器系统的操作的示图;
图11是示出根据一些实施例的存储器系统的操作的流程图;
图12和图13是用于示出图11示出的存储器系统的操作的示图;
图14是示出根据一些实施例的存储器系统的操作的流程图;
图15至图17是用于示出图14所示的存储器系统的操作的示图;和
图18是根据一些实施例的包括存储设备的数据中心的示图。
具体实施方式
在下文中,参考附图,将描述根据本公开的技术思想的实施例。
图1是根据一些实施例的存储器系统的框图。
参考图1,存储器系统1可以包括主机设备20和存储设备10。
主机设备20可以包括主机控制器201和主机存储器202。主机控制器201可以控制主机设备20的整体操作。在一些实施例中,主机控制器201可以包括分别用多个虚拟机(VM)驱动的多个实体。分别用不同虚拟机驱动的实体可以彼此独立地控制存储设备10。
主机存储器202可以在其中临时存储从外部设备发送的数据、要发送到存储设备10的数据或者从存储设备10发送的数据。在一些实施例中,主机设备20可以被实现为应用处理器(AP)。然而,本公开的实施例不限于此。
存储设备10可以是例如计算存储设备。
存储设备10可以包括现场可编程门阵列(FPGA)100、存储控制器200、缓冲存储器300和非易失性存储器400。
存储设备10可以包括用于根据来自主机设备20的请求在其中存储数据的存储介质。在示例中,存储设备10可以包括SSD(固态驱动)、嵌入式存储器或可移动外部存储器中的至少一个。当存储设备10被实现为SSD时,存储设备10可以是符合NVMe(非易失性快速存储器)标准的设备。当存储设备10被实现为嵌入式存储器或外部存储器时,存储设备10可以是符合UFS(通用闪存)或eMMC(嵌入式多媒体卡)标准的设备。存储设备10和主机设备20中的每一个都可以根据采用的标准协议生成和发送分组。
当存储设备10的非易失性存储器400包括闪存时,闪存可以包括2D NAND存储器阵列或3D(或垂直)NAND(VNAND)存储器阵列。在另一个示例中,存储设备10可以包括各种其他类型的非易失性存储器。例如,存储设备10可以包括MRAM(磁性RAM)、自旋转移矩MRAM、导电桥接RAM(CBRAM)、FeRAM(铁电RAM)、PRAM(相位RAM)、电阻存储器(电阻RAM)和其他各种类型的存储器。
FPGA100可以对存储在缓冲存储器300中的数据执行各种计算(compute)和运算(calculate)。在一些实施例中,FPGA100可以包括用于基于从主机设备20提供的命令对存储在缓冲存储器300中的数据执行各种计算、运算等的多个加速器。
FPGA100可以使用映射到硬件逻辑配置的算法对临时存储在缓冲存储器300中的数据执行计算。在一些实施例中,FPGA100可以对存储在非易失性存储器400中的数据执行计算,而无需主机设备20的干预。
存储控制器200可以包括主机接口211、存储器接口212和CPU(中央处理单元)213。此外,存储控制器200可以还包括闪存转换层(FTL)214、分组管理器215、缓冲存储器216、ECC(纠错码)引擎217、AES(高级加密标准引擎)218、DMA(直接存储器存取)引擎219和队列控制引擎220。
存储控制器200还可以包括工作存储器,闪存转换层(FTL)214被加载到该工作存储器中。向非易失性存储器400的数据写入和从非易失性存储器400的数据读取操作可以由执行闪存转换层的CPU 213控制。
主机接口211可以向主机设备20发送分组/从主机设备20接收分组。从主机设备20发送到主机接口211的分组可以包括要写入非易失性存储器400的命令或数据。从主机接口211发送到主机设备20的分组可以包括对从非易失性存储器400读取的命令或数据的响应。
存储器接口212可以发送要写入非易失性存储器400的数据,或者接收从非易失性存储器400读取的数据。存储器接口212可以被实现为符合标准协议,诸如触发器或ONFI(开放式NAND闪存接口)。
闪存转换层214可以执行若干功能,诸如地址映射、损耗平衡和垃圾收集。地址映射操作指的是将从主机设备20接收的逻辑地址改变为用于在非易失性存储器400中存储数据的物理地址的操作。损耗均衡指的是确保非易失性存储器400中的块被均匀使用以防止特定块过度退化的技术。在一个实例中,损耗平衡可以经由平衡物理块的擦除计数的固件技术来实现。垃圾收集指的是将现有块的有效数据复制到新块,然后擦除现有块以确保非易失性存储器400中的可用容量的技术。
分组管理器215可以根据主机设备20和分组管理器215同意使用的接口协议来产生分组,或者可以解析来自从主机设备20接收的分组的各种信息。
此外,缓冲存储器216可以在其中临时存储要写入非易失性存储器400的数据或者要从非易失性存储器400读取的数据。缓冲存储器216可以具有存在于存储控制器200中的或者可以放置在存储控制器200的外部的组件。
ECC引擎217可以对从非易失性存储器400读取的读取数据执行错误检测和纠正功能。更具体地,ECC引擎217可以生成与要写入非易失性存储器400的写入数据相关的奇偶校验位。然后,生成的奇偶校验位可以与写入数据一起存储在非易失性存储器400中。在从非易失性存储器400读取读取数据时,ECC引擎217可以使用从非易失性存储器400读取的奇偶校验位来纠正读取数据中的错误,并可以输出纠错后的读取数据。
AES引擎218可以使用对称密钥算法对输入到存储控制器200的数据执行加密操作和解密操作中的至少一个。
DMA引擎219可以从缓冲存储器300读取或获取数据块,使得FPGA 100的加速器可以对读取或获取的数据块执行计算。尽管附图示出了DMA引擎219被包括在存储控制器200中,但是实施例不限于此,并且DMA引擎219可以被实现为被包括在FPGA 100中,或者可以被实现为被放置在存储控制器200的外部。
队列控制引擎220监视从主机设备20提供的执行命令排队的状态。当确定加速器难以在预定时间内处理执行命令时,队列控制引擎220可以执行预定操作(例如,向主机设备20发送通知信号或者拒绝接收新的执行命令)。尽管附图示出了队列控制引擎220包括在存储控制器200中,但是实施例不限于此,并且队列控制引擎220可以被实现为被包括在FPGA 100中,或者可以被实现为放置在存储控制器200的外部。稍后将对队列控制引擎220进行更详细的描述。
缓冲存储器300可以缓冲存储在非易失性存储器400中的数据。此外,缓冲存储器300可以缓冲从FPGA 100发送的数据(例如,加速器已经对其执行计算的数据)。也就是说,当FPGA100使用存储在非易失性存储器400中的数据时,缓冲存储器300可以在其中临时存储存储在非易失性存储器400中的数据,使得FPGA 100可以使用该数据。非易失性存储器400可以在其中存储当FPGA100执行计算时所要求的数据。
图2是图1的非易失性存储器的框图。
参考图2,非易失性存储器400可以包括存储器单元阵列410、地址解码器420、电压生成器430、读取/写入电路440和控制逻辑电路450。
存储器单元阵列410可以经由字线WL连接到地址解码器420。存储器单元阵列410可以经由位线BL连接到读取/写入电路440。存储器单元阵列410可以包括多个存储器单元。例如,以行方向布置的存储器单元可以连接到相同的字线WL,而以列方向布置的存储器单元可以连接到相同的位线BL。
地址解码器420可以经由字线WL连接到存储器单元阵列410。地址解码器420可以响应于控制逻辑电路450的控制而操作。地址解码器420可以从存储控制器200接收地址ADDR。地址解码器420可以从电压生成器430接收诸如编程和读取操作的操作所需的电压。
地址解码器420可以解码接收的地址ADDR当中的行地址。地址解码器420可以使用解码的行地址选择字线WL。解码的列地址DCA可以被提供给读取/写入电路440。例如,地址解码器420可以包括行解码器、列解码器和地址缓冲器。
电压生成器430可以在控制逻辑电路450的控制下生成存取操作所要求的电压。例如,电压生成器430可以生成执行编程操作所需的编程电压和编程验证电压。例如,电压生成器430可以生成执行读取操作所需的读取电压,并且可以生成执行擦除操作所需的擦除电压和擦除验证电压。此外,电压生成器430可以向地址解码器420提供执行每个操作所要求的电压。
读取/写入电路440可以经由位线BL连接到存储器单元阵列410。读取/写入电路440可以向存储控制器200发送数据DATA和从存储控制器200接收数据DATA。读取/写入电路440可以响应于控制逻辑电路450的控制而操作。读取/写入电路440可以从地址解码器420接收解码的列地址DCA。读取/写入电路440可以使用解码的列地址DCA选择位线BL。
例如,读取/写入电路440可以将接收的数据DATA编程到存储器单元阵列410中。读取/写入电路440可以从存储器单元阵列410读取数据,并将读取的数据提供给外部设备(例如,存储控制器200)。例如,读取/写入电路440可以包括诸如感测放大器、写入驱动器、列选择电路、页缓冲器等的组件。也就是说,读取/写入电路440可以将从存储控制器200接收的数据DATA缓冲到页缓冲器中,并将缓冲的数据DATA编程到存储器单元阵列410中。
控制逻辑电路450可以连接到地址解码器420、电压生成器430和读取/写入电路440。控制逻辑电路450可以控制非易失性存储器400的操作。控制逻辑电路450可以响应于从存储控制器200提供的控制信号CRTL和命令CMD(例如,写入命令和读入命令)而操作。
图3是图1的存储控制器和非易失性存储器的框图。
参考图3,存储设备10可以包括存储控制器200和非易失性存储器400。存储设备10可以支持多个通道CH1至CHm,并且存储控制器200和非易失性存储器400可以经由多个通道CH1至CHm彼此连接。例如,存储设备10可以被实现为诸如SSD(固态驱动)的存储设备。
非易失性存储器400可以包括多个非易失性存储器设备NVM11至NVMmn。非易失性存储器设备NVM11至NVMmn中的每一个可以经由对应的通路(way)连接到多个通道CH1至CHm中的一个。例如,非易失性存储器设备NVM11至NVM1n可以经由通路W11至W1n连接到第一通道CH1,非易失性存储器设备NVM21至NVM2n可以经由通路W21至W2n连接到第二通道CH2,非易失性存储器设备NVMm1至NVMmn可以经由通路Wm1至Wmn连接到第m通道CHm。在说明性实施例中,非易失性存储器设备NVM11至NVMmn中的每一个可以被实现为任意存储器单元,该任意存储器单元可以根据来自存储控制器200的单独命令进行操作。例如,非易失性存储器设备NVM11至NVMmn中的每一个可以实现为芯片或管芯。然而,本公开不限于此。
存储控制器200可以经由多个通道CH1至CHm向非易失性存储器400发送信号和从非易失性存储器400接收信号。例如,存储控制器200可以经由通道CH1至CHm向非易失性存储器400发送命令CMDa至CMDm、地址ADDRa至ADDRm和数据DATAa至DATAm,或者可以经由通道CH1至CHm从非易失性存储器400接收数据DATAa至DATAm。
存储控制器200可以选择经由每个对应通道连接到每个对应通道的非易失性存储器设备中的一个,并且经由每个对应通道向选择的非易失性存储器设备发送信号和从选择的非易失性存储器设备接收信号。例如,存储控制器200可以经由第一通道CH1从连接到第一通道CH1的非易失性存储器设备NVM11至NVM1n当中选择非易失性存储器设备NVM11。存储控制器200可以经由第一通道CH1将命令CMDa、地址ADDRa和数据DATAa发送到选择的非易失性存储器设备NVM11,或者可以经由第一通道CH1从选择的非易失性存储器设备NVM11接收数据DATAa。
存储控制器200可以经由不同的通道以并行方式向非易失性存储器400发送信号和从非易失性存储器400接收信号。例如,存储控制器200可以经由第二通道CH2将命令CMDb发送到非易失性存储器400,同时经由第一通道CH1将命令CMDa发送到非易失性存储器400。例如,存储控制器200可以经由第二通道CH2从非易失性存储器400接收数据DATAb,同时经由第一通道CH1从非易失性存储器400接收数据DATAa。
存储控制器200可以控制非易失性存储器400的整体操作。存储控制器200可以将信号发送到通道CH1至CHm,以控制连接到通道CH1至CHm的非易失性存储器设备NVM11至NVMmn中的每一个。例如,存储控制器200可以将命令CMDa和地址ADDRa发送到第一通道CH1,以控制非易失性存储器设备NVM11至NVM1n中被选择的一个。
非易失性存储器设备NVM11至NVMmn中的每一个可以在存储控制器200的控制下操作。例如,非易失性存储器设备NVM11可以基于提供给第一通道CH1的命令CMDa、地址ADDRa和数据DATAa对数据DATAa进行编程。例如,非易失性存储器设备NVM21可以基于提供给第二通道CH2的命令CMDb和地址ADDRb读出数据DATAb,并将读出的数据DATAb发送到存储控制器200。
图3示出了非易失性存储器400经由m个通道与存储控制器200通信,并且非易失性存储器400包括对应于每个通道的n个非易失性存储器设备。然而,通道的数量和连接到一个通道的非易失性存储器设备的数量可以不同地改变。
图4是展示图2的存储器单元阵列的说明性电路图。
参照图4,多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以放置在衬底上,并且可以在第一方向X和第二方向y上布置。多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以在第三方向Z上延伸。多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以共同地连接到形成在衬底上或中的公共源极线CSL。
示出了多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的单元当中在第三方向Z上的最底部的单元连接到公共源极线CSL。然而,公共源极线CSL电连接到多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的单元当中在第三方向Z上最底部的单元就足够了。本公开不限于公共源极线CSL在物理上位于多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33下方的配置。此外,示出了多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33排列成3×3阵列。然而,放置在存储器单元阵列410中的多个单元串的布置形式和数量不限于此。
一些单元串NS11、NS12和NS13可以连接到第一接地选择线GSL1。一些单元串NS21、NS22和NS23可以连接到第二接地选择线GSL2。一些单元串NS31、NS32和NS33可以连接到第三接地选择线GSL3。
此外,一些单元串NS11、NS12和NS13可以连接到第一串选择线SSL1。一些单元串NS21、NS22和NS23可以连接到第二串选择线SSL2。一些单元串NS31、NS32和NS33可以连接到第三串选择线SSL3。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个可以包括连接到每个串选择线的串选择晶体管SST。此外,多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个可以各自包括连接到每个接地选择线的接地选择晶体管GST。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个的一端可以连接到公共源极线CSL。此外,在多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的每一个中,多个存储器单元可以在第三方向Z上顺序堆叠,同时被放置在接地选择晶体管和串选择晶体管之间。尽管在图4中未示出,但是多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个可以包括放置在接地选择晶体管和串选择晶体管之间的虚拟单元(dummy cell)。此外,包括在每个单元串中的串选择晶体管的数量不限于该图。
例如,单元串NS11可以包括在第三方向Z上放置在最底层级(bottommost level)的接地选择晶体管GST11、在放置在接地选择晶体管GST11上的同时在第三方向Z上顺序堆叠的多个存储器单元M11_1至M11_8、以及堆叠在最顶部的存储器单元M11_8顶部的串选择晶体管SST11。此外,单元串NS21可以包括在第三方向Z上放置在最底层级的接地选择晶体管GST21、在放置在地选择晶体管GST21上的同时在第三方向Z上顺序堆叠的多个存储器单元M21_1至M21_8、以及堆叠在最顶层的存储器单元M21_8的顶部的串选择晶体管SST21。此外,单元串NS31可以包括在第三方向Z上放置在最底层级的接地选择晶体管GST31、在放置在接地选择晶体管GST31上的同时在第三方向Z上顺序堆叠的多个存储器单元M31_1至M31_8、以及堆叠在最顶层的存储器单元M31_8顶部的串选择晶体管SST31。这可以应用于每个其他串的配置。
位于与衬底或接地选择晶体管在第三方向Z上相同垂直层级的存储器单元可以电连接到相同的字线。例如,处于相同垂直层级的存储器单元M11_1、M21_1和M31_1可以连接到第一字线WL1。此外,处于相同垂直层级的存储器单元M11_2、M21_2和M31_2可以连接到第二字线WL2。这可以应用于连接到第三字线WL3至第八字线WL8中的每一个的存储器单元的布置和结构,因此省略其描述。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个的串选择晶体管的一端可以连接到位线BL1、BL2或BL3。例如,串选择晶体管ST11、SST21和SST31中的每一个的一端可以连接到在第二方向y上延伸的位线BL1。这可以应用于连接到位线BL2或BL3的其他串选择晶体管。因此,省略其描述。
对应于一个串(或接地)选择线和一个字线的存储器单元可以构成一个页面。可以在页面的基础上执行写入操作和读取操作。每个页面的存储器单元中的每一个可以存储至少两位。写入到每个页面的存储器单元的位可以构成逻辑页面。
存储器单元阵列410可以体现为三维(3D)存储器阵列。三维存储器阵列可在存储器单元阵列的一个或多个物理层级处单片(monolithically)形成,所述存储器单元阵列具有放置于衬底(未图示)顶部上的有源区和存储器单元操作中所涉及的电路。存储器单元的操作中涉及的电路可以位于衬底中或衬底上。短语“单片形成”意味着3D阵列的层级中的每一层可以直接沉积在3D阵列的子层级的每一层上。
图5是示出根据一些实施例的存储器系统的操作的流程图。图6至图10是用于示出图5所示的存储器系统的操作的示图。
参考图1和图5,主机设备20向存储控制器200发送设置指令,该设置指令指示计算命名空间CNS的设置以处理主机设备20的命令。然后,在S100中,主机设备20向存储控制器200发送与计算命名空间CNS相关的延迟阈值LTV。
当接收到设置指令时,在S110中,存储控制器200在存储设备10中设置计算命名空间CNS以处理主机设备20的命令。
参考图6,在一些实施例中,计算命名空间CNS可以包括命令队列510、队列控制引擎520、DMA引擎530、加速器540和缓冲存储器550。然而,实施例不限于此,并且如果必要的话,所示计算命名空间CNS的一些组件可以被省略,或者如果必要的话,组件(未示出)可以被添加到计算命名空间CNS。
命令队列510可以在其中存储用于驱动加速器540的执行命令,其中,该执行命令是从主机设备20提供的。在这点上,执行命令可以是例如符合NVMe TP 4091标准(NVMe TP4091计算程序命令集规范)的执行命令。然而,实施例不限于此。
命令队列510可以在其中顺序存储从主机设备20提供的执行命令,并且例如以先进先出(FIFO)方案输出存储的执行命令。
在一些实施例中,命令队列510可以被放置于例如缓冲存储器(图1中的216)中。在一些实施例中,可以通过使用SRAM实现缓冲存储器(图1的216)来实现命令队列510。然而,实施例不限于此。
队列控制引擎520可以管理存储在命令队列510中的执行命令。当确定加速器540处于空闲状态时,队列控制引擎520可以将存储的执行命令传递给加速器540,使得加速器540基于执行命令来处理计算。
在一些实施例中,队列控制引擎520可以将命令队列510作为循环队列来管理。当队列索引增加时,队列控制引擎520可以识别出已经存储了新的执行命令。
在一些实施例中,队列控制引擎520可以以存储控制器(图1的200)中的队列控制引擎220的形式实现。然而,实施例不限于此。
DMA引擎530可以从缓冲存储器550读取或获取数据,使得加速器可以基于执行命令来处理计算。在一些实施例中,DMA引擎530可以以存储控制器(图1的200)中的DMA引擎219的形式实现。然而,实施例不限于此。
加速器540可以例如以FPGA的形式(使用FPGA)来实现,并且可以在队列控制引擎520的控制下基于执行命令来处理计算。在一些实施例中,图1的FPGA 100可以用于实现加速器540。在一些实施例中,可以放置多个加速器540。在这种情况下,加速器540可以用于设置不同的计算命名空间CNS。
缓冲存储器550提供加速器540基于执行命令处理计算所需的数据,并且可以在其中存储加速器540的计算处理结果。在一些实施例中,缓冲存储器550可以被实现为例如DRAM。在一些实施例中,缓冲存储器550可以使用缓冲存储器(图1的300)来实现。然而,实施例不限于此。
上面已经描述了以硬件形式实现命令队列510、队列控制引擎520、DMA引擎530和加速器540中的每一个的实施例。然而,实施例不限于此。如果需要,命令队列510、队列控制引擎520、DMA引擎530和加速器540中的至少一个可以以软件形式实现。
当接收到设置指令时,存储控制器200可以将存储设备10中的必要资源设置为计算命名空间CNS,以响应于设置指令来处理主机设备20的命令。计算命名空间CNS可以是根据NVMe标准的计算命名空间CNS。然而,实施例不限于此。
此外,计算命名空间CNS意味着处理主机设备20的命令所要求的存储设备10中的计算资源集合。计算命名空间CNS可以与用于以分割的方式管理非易失性存储器(图1中的400)的区域的NVM命名空间或者用于以分割的方式管理缓冲存储器(图1中的300)的区域的存储器命名空间相区别。
从主机设备20接收的与计算命名空间CNS相关的延迟阈值LTV意味着当使用计算命名空间CNS处理计算时所允许的时间。例如,当与设置的计算命名空间CNS相关的延迟阈值LTV是30毫秒时,存储控制器200必须在30毫秒内用与接收的执行命令相关的计算处理结果来响应从主机设备20接收的执行命令。
参考图1和图5,当完成计算命名空间CNS设置时,在S120中,存储控制器200通知主机设备20计算命名空间CNS设置已经完成。
接下来,在S130中,主机设备20指示存储控制器200将要使用的程序加载到设置的计算命名空间CNS中。然后,在S140中,响应于该指令,存储控制器200将程序加载到设置的计算命名空间CNS中,并在S150通知主机设备20程序加载已经完成。
例如,参考图7,在S130中,主机设备20指示存储控制器200将程序加载到计算命名空间CNS1的槽#0中。在S140中,响应于该指令,存储控制器200将程序加载到计算命名空间CNS1的槽#0中,并在S150通知主机设备20程序加载已经完成。
所示的计算命名空间CNS1和CNS2是使用存储设备10中的计算资源定义的。如上所述,所示的计算命名空间CNS1和CNS2不同于以分割方式管理非易失性存储器NVM的区域的NVM命名空间NVM NS1和NVM NS2,或者以分割方式管理缓冲存储器的区域的存储器命名空间MNS1和MNS2。
接下来,参考图1和图5,在S160中,主机设备20指示存储控制器200激活加载的程序。然后,在S170中,响应于该指令,存储控制器200激活加载的程序,并在S180中通知主机设备20程序激活已经完成。
例如,参考图8,在S160中,主机设备20指示存储控制器200激活在计算命名空间CNS1的槽#0中加载的程序。在S170中,响应于该指令,存储控制器200激活在计算命名空间CNS1的槽#0中加载的程序,并且在S180中通知主机设备20程序激活已经完成。
接下来,参考图1和图5,在S190中,主机设备20使用激活的程序向存储控制器200发送执行命令。然后,在S200中,存储控制器200识别在处理基于接收到的执行命令的计算中是否存在延迟问题。如果确定存在延迟问题(S200-是),则存储控制器200在S210中向主机设备20发送延迟消息。
延迟消息是指示基于接收到的执行命令的计算不能在延迟阈值LTV内被处理的消息,因此要求额外的动作。在一些实施例中,存储控制器200可以以AER(异步错误报告)方案向主机设备20发送延迟消息。此外,在一些实施例中,存储控制器200可以以延迟消息的形式向主机设备20发送拒绝接收新的执行命令的消息。
在接收到该延迟消息之后,主机设备20可以等待一定量的时间,并且可以再次向存储控制器200发送执行命令,可以尝试使用另一存储设备10来执行计算,或者可以尝试使用主机设备10中的另一计算资源来执行计算。
如果确定不存在延迟问题(S200-否),则在S220中,存储控制器200使用激活的程序和设置的计算命名空间基于执行命令来处理计算。然后,在S230中,存储控制器200通知主机设备20基于接收的执行命令的计算的处理已经完成。
在下文中,参考图9和图10,将更详细地描述存储控制器200识别在处理基于接收的执行命令的计算中是否存在延迟问题的操作。
首先,参照图9,从主机设备20接收的执行命令EC1、EC2、EC3和EC4被顺序存储在命令队列510中,如上所述。
每当接收到新的执行命令时,队列控制引擎520基于接收到的执行命令中的每一个计算加速器处理计算所要求的预测处理时间PPT。然后,队列控制引擎520基于当前存储在命令队列510中的所有执行命令,计算加速器处理所有计算所要求的命令队列510的累积处理时间APT。然后,当累积处理时间APT大于设置的计算命名空间CNS的延迟阈值LTV时,队列控制引擎520确定存在延迟问题。
以图9所示的示例为例,当从主机设备20接收到执行命令EC1时,队列控制引擎520基于执行命令EC1计算加速器处理计算所要求的预测处理时间PPT。在这点上,预测处理时间PPT可以计算为a。在这点上,由于没有其他执行命令存储在命令队列510中,所以命令队列510的累积处理时间APT是a。如果a小于或等于设置的计算命名空间CNS的延迟阈值LTV,则队列控制引擎520将执行命令EC1存储在命令队列510中。
接下来,当从主机设备20接收到执行命令EC2时,队列控制引擎520基于执行命令EC2计算加速器处理计算所要求的预测处理时间PPT。在这点上,预测处理时间PPT可以计算为b。在这点上,由于执行命令EC1已经存储在命令队列510中,所以命令队列510的累积处理时间APT是a+b。如果a+b小于或等于设置的计算命名空间CNS的延迟阈值LTV,则队列控制引擎520将执行命令EC2存储在命令队列510中。
接下来,当从主机设备20接收到执行命令EC3时,队列控制引擎520基于执行命令EC3计算加速器处理计算所要求的预测处理时间PPT。在这点上,预测处理时间PPT可以计算为c。在这点上,由于执行命令EC1和EC2已经存储在命令队列510中,所以命令队列510的累积处理时间APT是a+b+c。如果a+b+c小于或等于设置的计算命名空间CNS的延迟阈值LTV,则队列控制引擎520将执行命令EC3存储在命令队列510中。
接下来,当从主机设备20接收到执行命令EC4时,队列控制引擎520基于执行命令EC4计算加速器处理计算所要求的预测处理时间PPT。在这点上,预测处理时间PPT可以被计算为d。在这点上,由于执行命令EC1、EC2和EC3已经存储在命令队列510中,所以命令队列510的累积处理时间APT是a+b+c+d。在这点上,如果a+b+c+d超过设置的计算命名空间CNS的延迟阈值LTV,则队列控制引擎520确定存在延迟问题。然后,响应于该确定,存储控制器200向主机设备20发送如上所述的延迟消息。
在一些实施例中,这些执行命令可以是NVMe TP 4091计算程序命令集规范中定义的执行命令。例如,执行命令可以包括用于指示压缩、解压缩、加密、解密或过滤存储在非易失性存储器(图1中的400)中的数据的命令。然而,实施例不限于此。
在一些实施例中,当加速器正在处理存储在命令队列510中的执行命令时,队列控制引擎520可以基于加速器基于执行命令完成计算所要求的剩余时间来确定是否存在延迟问题。
例如,参照图10,在执行命令EC2、EC3和EC4存储在命令队列510中并且加速器540正在基于执行命令EC1处理计算的情形下,存储控制器200从主机设备20接收执行命令EC5。响应于该接收,队列控制引擎520可以计算加速器540完成基于执行命令EC1的计算所要求的剩余时间(该剩余时间可以例如小于图9中的a)。然后,队列控制引擎520可以将分别与执行命令EC2、EC3、EC4和EC5相关的剩余时间和预测处理时间PPT彼此相加,以计算命令队列510的累积处理时间APT。
然后,如果命令队列510的计算的累积处理时间APT超过设置的计算命名空间CNS的延迟阈值LTV,则队列控制引擎520可以确定存在延迟问题。然后,响应于该确定,存储控制器200可以向主机设备20发送如上所述的延迟消息。
在下文中,参考图11至图13,将描述根据另外一些实施例的存储器系统的操作。
图11是示出根据一些实施例的存储器系统的操作的流程图。
图12和图13是用于示出如图11所示的存储器系统的操作的示图。
在该实施例中,主机设备可以包括第一虚拟机21和第二虚拟机22。也就是说,在该实施例中,虚拟机21和22中的每一个都可以充当主机设备。
参照图11,在S300中,与第一租户(tenant)相关联的第一虚拟机21向存储控制器200发送设置指令,该设置指令指示第一计算命名空间CNS1的设置以处理第一虚拟机21的命令和与第一计算命名空间CNS1相关的第一延迟阈值LTV1。
参考图12,当接收到设置指令时,存储控制器200设置第一计算命名空间CNS1以处理存储设备10中的第一虚拟机21的命令。在一些实施例中,第一计算命名空间CNS1可以包括命令队列510a、队列控制引擎520a、DMA引擎530a、加速器540a和缓冲存储器550a。
在这点上,命令队列510a在其中存储从第一虚拟机21提供的执行命令。第一计算命名空间CNS1的组件用于处理从第一虚拟机21接收的执行命令。
接下来,参考图11,当完成第一计算命名空间CNS1的设置时,存储控制器200通知第一虚拟机21第一计算命名空间CNS1的设置已经完成。存储控制器200设置第一计算命名空间的操作和存储控制器200发送指示设置完成的响应信号的操作可以参考上面参照图5描述的那些操作。因此,在图11中,为了简化描述,省略了其详细图示。此外,从图11中省略了可以从上面参照图5所做的描述中充分推断出的操作的详细说明。
接下来,在S310中,与第二租户相关联的第二虚拟机22向存储控制器200发送设置指令,该设置指令指示第二计算命名空间CNS2的设置以处理第二虚拟机22的命令和与第二计算命名空间CNS2相关的第二延迟阈值LTV2。
参考图12,当接收到设置指令时,存储控制器200设置第二计算命名空间CNS2以处理存储设备10中的第二虚拟机22的命令。在一些实施例中,第二计算命名空间CNS2可以包括命令队列510b、队列控制引擎520b、DMA引擎530b、加速器540b和缓冲存储器550b。
在这点上,命令队列510b在其中存储从第二虚拟机22提供的执行命令。第二计算命名空间CNS2的组件用于处理从第二虚拟机22接收的执行命令。
接下来,参考图11,当完成第二计算命名空间CNS2的设置时,存储控制器200通知第二虚拟机22第二计算命名空间CNS2的设置已经完成。
接下来,在S320中,第一虚拟机21指示存储控制器200将要使用的第一程序加载到第一计算命名空间CNS1中。然后,在S330中,第二虚拟机22指示存储控制器200将要使用的第二程序加载到设置的第二计算命名空间CNS2中。
例如,参考图13,第一虚拟机21指示存储控制器200将第一程序PRG1加载到第一计算命名空间CNS1的槽#0中。响应于该指令,存储控制器200将第一程序PRG1加载到第一计算命名空间CNS1的槽#0中,并通知第一虚拟机21第一程序PRG1的加载已经完成。
然后,第二虚拟机22指示存储控制器200将第二程序PRG2加载到第二计算命名空间CNS2的槽#0中。响应于该指令,存储控制器200将第二程序PRG2加载到第二计算命名空间CNS2的槽#0中,并通知第二虚拟机22第二程序PRG2的加载已经完成。
参照图11,第一和第二虚拟机21和22中的每一个都激活加载的程序。然后,在S340中,第一虚拟机21使用激活的第一程序向存储控制器200发送执行命令。然后,在S350中,存储控制器200识别在处理基于接收的执行命令的计算中是否存在延迟问题。如果确定基于接收的执行命令的计算不能在第一延迟阈值LTV1内处理(S350-是),则在S360中,存储控制器200将延迟消息发送到第一虚拟机21。
如果确定可以在第一延迟阈值LTV1内处理基于接收的执行命令的计算(S350-否),则在S370中,存储控制器200使用激活的第一程序和设置的第一计算命名空间来处理基于执行命令的计算。然后,存储控制器200通知第一虚拟机21基于接收的执行命令的计算的处理已经完成。上面已经描述了其详细操作,因此省略了对其的重复描述。
接下来,在S380中,第二虚拟机22使用激活的第二程序向存储控制器200发送执行命令。然后,在S390中,存储控制器200识别在处理基于接收的执行命令的计算中是否存在延迟问题。如果确定基于接收的执行命令的计算不能在第二延迟阈值LTV2内处理(S390-是),则在S400中,存储控制器200将延迟消息发送到第二虚拟机22。
如果确定可以在第二延迟阈值LTV2内处理基于接收的执行命令的计算(S390-否),则在S410中,存储控制器200使用激活的第二程序和设置的第二计算命名空间来处理基于执行命令的计算。然后,存储控制器200通知第二虚拟机22基于接收到的执行命令的计算的处理已经完成。
在下文中,参考图14至图17,将描述根据又一些实施例的存储器系统的操作。
图14是示出根据一些实施例的存储器系统的操作的流程图。图15至图17是用于示出如图14所示的存储器系统的操作的示图。在图14中,省略了与上述操作重复的操作的详细说明。
参照图14,在S500中,与第一租户相关联的第一虚拟机21向存储控制器200发送设置指令,该设置指令指示第三计算命名空间CNS3的设置以处理第一虚拟机21的命令和与第三计算命名空间CNS3相关的延迟阈值LTV。
参考图15,当接收到设置指令时,存储控制器200设置第三计算命名空间CNS3以处理存储设备10中的第一虚拟机21的命令。在一些实施例中,第三计算命名空间CNS3可以包括命令队列510c、队列控制引擎520c、DMA引擎530c、加速器540c和缓冲存储器550c。
接下来,参考图14,在S510中,与第二租户相关联的第二虚拟机22向存储控制器200发送设置指令,该设置指令指示第三计算命名空间CNS3的设置以处理第二虚拟机22的命令。也就是说,在该实施例中,不同的虚拟机使用存储设备10中的相同计算命名空间。然后,由于第二虚拟机22不执行延迟敏感任务,所以第二虚拟机22不在存储设备10中的第三计算命名空间CNS3中设置延迟阈值。
参考图15,当接收到设置指令时,存储控制器200设置第三计算命名空间CNS3,使得第三计算命名空间CNS3可以基于从第二虚拟机22接收的执行命令来处理计算。
在这点上,命令队列510c在其中存储从第一虚拟机21提供的执行命令和从第二虚拟机22提供的执行命令。第三计算命名空间CNS3的组件用于处理从第一虚拟机21接收的执行命令和从第二虚拟机22接收的执行命令。
接下来,参考图14,在S520中,第一虚拟机21指示存储控制器200将要使用的第三程序加载到设置的第三计算命名空间CNS3中。尽管该图示出了第一虚拟机21指示存储控制器200将要使用的第三程序加载到设置的第三计算命名空间CNS3中的操作,但是第二虚拟机22而不是第一虚拟机21可以指示相同的操作。
随后,第一虚拟机21可以指示存储控制器200激活在第三计算命名空间CNS3中加载的第三程序。在这点上,代替第一虚拟机21,第二虚拟机22可以指示相同的操作。
接下来,在S530中,第一虚拟机21使用激活的第三程序向存储控制器200发送执行命令。由于第一虚拟机21已经设置了与第三计算命名空间相关的延迟阈值LTV,所以在S540中,存储控制器200识别在处理基于接收到的执行命令的计算中是否存在延迟问题。如果确定基于接收的执行命令的计算不能在延迟阈值LTV内处理(S540-是),则在S550,存储控制器200将延迟消息发送到第一虚拟机21。
如果确定基于接收的执行命令的计算可以在延迟阈值LTV内被处理(S540-否),则在S560,存储控制器200使用激活的第三程序和设置的第三计算命名空间来处理基于执行命令的计算。然后,存储控制器200通知第一虚拟机21基于接收到的执行命令的计算的处理已经完成。
接下来,在S570中,第二虚拟机22使用激活的第三程序向存储控制器200发送执行命令。因为第二虚拟机22不设置与第三计算命名空间相关的延迟阈值LTV,所以存储控制器200不识别在处理基于接收的执行命令的计算中是否存在延迟问题。因此,在S580中,存储控制器200使用激活的第三程序和设置的第三计算命名空间来处理基于执行命令的计算。然后,存储控制器200通知第二虚拟机22基于接收的执行命令的计算的处理已经完成。
下面参照图16和图17更详细地描述该操作。
首先,参照图16,在从第一虚拟机接收的执行命令EC1(1)和EC2(1)以及从第二虚拟机接收的执行命令EC1(2)存储在命令队列510c中的状态下,从第一虚拟机接收新的执行命令EC3(1)。在接收时,队列控制引擎520c执行与执行命令EC3(1)相关的延迟的监视操作(图14的S540)。
然而,如图17所示,在从第一虚拟机接收的执行命令EC1(1)和EC2(1)以及从第二虚拟机接收的执行命令EC1(2)存储在命令队列510c中的状态下,从第二虚拟机接收新的执行命令EC2(2)。在接收时,队列控制引擎520c确定执行命令EC2(2)是对延迟不敏感的任务,因此,不执行与执行命令EC2(2)相关的延迟的监视操作。
上面已经描述了一示例,其中,第一虚拟机21执行延迟敏感的任务并因此在计算命名空间中设置延迟阈值,而第二虚拟机22执行延迟不敏感的任务并因此不在计算命名空间中设置延迟阈值。本公开的实施例不限于此。
在一些实施例中,第一虚拟机21和第二虚拟机22中的每一个可以执行延迟敏感的任务,并且因此可以在共享计算命名空间中设置每个延迟阈值。在这种情况下,队列控制引擎520c可以基于由第一虚拟机21设置的延迟阈值,执行与从第一虚拟机21接收的执行命令相关的延迟的监视。队列控制引擎520c可以基于由第二虚拟机22设置的延迟阈值,执行与从第二虚拟机22接收的执行命令相关的延迟的监视。
在该实施例中,可以为每个主机设备(或虚拟机)设置与存储设备中的计算命名空间相关的延迟阈值。当基于执行命令的计算的处理时间超过延迟阈值时,该事件可以被通知给主机设备(或虚拟机)。因此,主机设备(或虚拟机)可以执行延迟控制所需的后续操作。
因此,在多个主机设备(或虚拟机)竞争性使用存储设备中的计算命名空间的环境中,可以控制与计算执行相关的延迟。
图18是根据一些实施例的包括存储设备的数据中心的示图。
参考图18,数据中心3000可以是收集各种数据并提供服务的设施,并且可以被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,或者可以是在诸如银行或政府机构的企业中使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。根据实施例,可以不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量。应用服务器3100至3100n的数量和存储服务器3200至3200m的数量可以彼此不同。
应用服务器3100或存储服务器3200可以包括处理器3110或3210以及存储器3120或3220中的至少一个。将通过示例的方式描述存储服务器3200的配置。就此而言,处理器3210可以控制存储服务器3200的整体操作,并且可以访问存储器3220以执行加载到存储器3220中的指令和/或数据。存储器3220可以包括DDR SDRAM(双倍数据速率同步DRAM)、HBM(高带宽存储器)、HMC(混合存储立方体)、DIMM(双列直插式存储模块)、Optane DIMM和/或NVMDIMM(非易失性DIMM)。根据实施例,可以不同地选择存储服务器3200中包括的处理器3210的数量和存储器3220的数量。在一个实施例中,处理器3210和存储器3220可以提供处理器-存储器对。在一个实施例中,处理器3210的数量和存储器3220的数量可以彼此不同。处理器3210可以包括单核处理器或多核处理器。存储服务器3200的上述描述可以类似地应用于应用服务器3100。根据该实施例,应用服务器3100可以不包括存储设备3150。存储服务器3200可以包括至少一个存储设备3250。根据实施例,存储服务器3200中包括的存储设备3250的数量可以不同地选择。
在一些实施例中,存储设备3250可以包括如上参考图1至图17所述的存储设备10。也就是说,当存储设备3250可以从多个主机设备(或多个虚拟机)中的每一个接收执行命令并据此执行计算时,存储设备3250可以执行延迟控制。
应用服务器3100至3100n和存储服务器3200至3200m可以通过网络3300相互通信。网络3300可以使用FC(光纤通道)或以太网来实现。在这方面,FC可以是用于相对高速数据传输的介质,并且可以使用提供高性能/高可用性的光开关。取决于网络3300的访问方案,存储服务器3200至3200m可以被实现为文件存储装置、块存储装置或对象存储装置。
在一个实施例中,网络3300可以体现为存储专用网络,诸如SAN(存储区域网络)。例如,SAN可以是使用FC网络并根据FCP FC协议实现的FC-SAN。在另一个示例中,SAN可以是使用TCP/IP网络并且根据iSCSI(TCP/IP上的SCSI或互联网SCSI)协议来实现的IP-SAN。在另一个实施例中,网络3300可以是通用网络,诸如TCP/IP网络。例如,网络3300可以根据诸如FCoE(以太网上的FC)、NAS(网络附加存储)和NVMe-oF(光纤上的NVMe)的协议来实现。
在下文中,描述将集中于应用服务器3100和存储服务器3200。应用服务器3100的描述可以同样适用于其他应用服务器3100n。存储服务器3200的描述可以同样适用于其他存储服务器3200m。
当从用户或客户端接收到存储数据的请求时,应用服务器3100可以经由网络3300将数据存储在存储服务器3200至3200m之一中。此外,一旦从用户或客户端接收到读取数据的请求,应用服务器3100可以经由网络3300从存储服务器3200至3200m之一获取数据。例如,应用服务器3100可以实现为网页(web)服务器或DBMS(数据库管理系统)。
应用服务器3100可以经由网络3300访问包括在另一个应用服务器3100n中的存储器3120n或存储设备3150n。可替代地,应用服务器3100可以经由网络3300访问存储器3220至3220m或者存储服务器3200至3200m中包括的存储设备3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的指令。此时,数据可以从存储服务器3200至3200m的存储设备3250至3250m通过存储服务器3200至3200m的存储器3220至3220m流动到应用服务器3100至3100n的存储器3120至3120n,或者可以直接从存储服务器3200至3200m的存储设备3250至3250m递送到应用服务器3100至3100n的存储器3120至3120n。为了安全或隐私,在网络3300上流动的数据可以是加密数据。
通过示例的方式描述存储服务器3200。接口3254可以提供处理器3210和控制器3251之间的物理连接以及NIC(网络互连)3240和控制器3251之间的物理连接。例如,接口3254可以在DAS(直接连接存储)方案中实现,其中存储设备3250直接连接到专用电缆。此外,例如,接口3254可以以各种接口方案实现,诸如ATA(高级技术附件)、SATA(串行ATA)、e-SATA(外部SATA)、SCSI(小型计算机小型接口)、SAS(串行连接SCSI)、PCI(外围组件互连)、PCIe(PCI特快)、NVMe(NVM特快)、IEEE 1394、USB(通用串行总线)、SD(安全数字)卡、MMC(多媒体卡)、eMMC(嵌入式多媒体卡)、UFS(通用闪存)、eUFS(嵌入式通用闪存)和CF(紧凑闪存)卡接口等。
存储服务器3200可以进一步包括开关3230和NIC 3240。开关3230可以在处理器3210的控制下选择性地将处理器3210和存储设备3250彼此连接,或者选择性地将NIC 3240和存储设备3250彼此连接。
在一个实施例中,NIC 3240可以包括网络接口卡、网络适配器等。NIC 3240可以经由有线接口、无线接口、蓝牙接口或光学接口连接到网络3300。NIC 3240可以包括内部存储器、DSP(数字信号处理器)、主机总线接口等。并且可以经由主机总线接口连接到处理器3210和/或开关3230。主机总线接口可以被实现为如上所述的接口3254的示例之一。在一个实施例中,NIC 3240可以与处理器3210、开关3230和存储设备3250中的至少一个集成。开关3130、3130n和3230m的操作类似于开关3230。NIC 3140、3140n和3240m的操作类似于网卡3240。
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可以向存储设备3150至3150n和3250至3250m或存储器3120至3120n和3220至3220m发送命令,以对其编程或从其读取数据。在这种情况下,数据可以是经由ECC(纠错码)引擎纠错的数据。数据可以是经受DBI(数据总线反转)或DM(数据屏蔽)的数据,并且可以包括CRC(循环冗余码)信息。为了安全或隐私,数据可以是加密数据。
存储设备3150至3150n和3250至3250m可以响应于从处理器接收的读取命令,向NAND闪存设备3252至3252m发送控制信号和命令/地址信号。因此,当从NAND闪存设备3252至3252m读出数据时,可以输入RE(读使能)信号作为数据输出控制信号,以允许数据输出到DQ总线。可以使用RE信号生成DQS(数据选通脉冲)。根据WE(写入使能)信号的上升沿或下降沿,命令和地址信号可以被锁存到页面缓冲器中。
控制器3251可以控制存储设备3250的整体操作。在一个实施例中,控制器3251可以包括SRAM(静态随机存取存储器)。控制器3251可以响应于写入命令(write-in)将数据写入NAND闪存3252。可替代地,控制器3251可以响应于读出命令从NAND闪存3252读出数据。例如,写入命令和/或读出命令可以从存储服务器3200中的处理器3210、另一存储服务器3200m中的处理器3210m或者应用服务器3100或3100n中的处理器3110或3110n提供。
DRAM 3253可以在其中临时存储(缓冲)要写入NAND闪存3252的数据或者从NAND闪存3252读出的数据。此外,DRAM 3253可以在其中存储元数据。就此而言,元数据可以是用户数据或由控制器3251生成的用于管理NAND闪存3252的数据。存储设备3250可以包括用于安全或隐私的SE(安全元件)。
按照本领域的传统,可以根据执行所描述的一个或多个功能的块来描述和说明实施例。在本文中可以被称为单元或模块等的这些块由模拟和/或数字电路物理实现,诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等,并且可选地由固件和/或软件驱动。例如,电路可以实现在一个或多个半导体芯片中,或者在诸如印刷电路板等的衬底支架上。构成块的电路可以由专用硬件、或者由处理器(例如,一个或多个编程的微处理器和相关联的电路)、或者由执行块的一些功能的专用硬件和执行块的其他功能的处理器的组合来实现。在不脱离本公开的范围的情况下,实施例的每个块可以在物理上被分成两个或更多个相互作用且离散的块。同样,在不脱离本公开的范围的情况下,实施例的块可以被物理地组合成更复杂的块。实施例的方面可以通过存储在非暂时性存储介质中并由处理器执行的指令来实现。
虽然上面已经参考附图描述了本公开的实施例,但是本公开不限于这些实施例,并且可以以各种不同的形式实现。本公开所属技术领域的普通技术人员将能够理解,在不改变本公开的技术思想或本质特征的情况下,本公开可以以其他特定形式实现。因此,应该理解,上述实施例在所有方面都不是限制性的,而是说明性的。

Claims (20)

1.一种用于操作计算存储设备的方法,所述方法包括:
由存储控制器从第一主机设备接收:
建立第一计算命名空间的第一计算命名空间设置指令,
与第一计算命名空间相关的第一延迟阈值,
第一程序,
使用第一程序的第一执行命令,以及
使用第一程序的第二执行命令;和
由所述存储控制器响应于所述第二执行命令向第一主机设备发送第一延迟消息。
2.根据权利要求1所述的方法,还包括:
由存储控制器将第一执行命令存储在第一命令队列中;以及
响应于延迟相关的状态是:
当将第二执行命令存储在第一命令队列中时的第一状态,由存储控制器将第二执行命令存储在第一命令队列中,以及
当将第二执行命令存储在第一命令队列中时的第二状态,由存储控制器向第一主机设备发送第一延迟消息。
3.根据权利要求2所述的方法,其中:
第一状态是其中总和等于或小于第一延迟阈值的状态,所述总和通过将以下相加而获取:
使用第一加速器处理基于第一执行命令的第一计算所要求的第一处理时间;和
使用第一加速器处理基于第二执行命令的第二计算所要求的第二处理时间,并且
第二状态是其中总和大于第一延迟阈值的状态。
4.根据权利要求1所述的方法,还包括:
由存储控制器将第一执行命令存储在第一命令队列中;
由第一加速器处理基于第一执行命令的第一计算;以及
响应于延迟相关的状态是:
当将第二执行命令存储在第一命令队列中时的第一状态,由存储控制器将第二执行命令存储在第一命令队列中,以及
当将第二执行命令存储在第一命令队列中时的第二状态,由存储控制器向第一主机设备发送第一延迟消息。
5.根据权利要求4所述的方法,其中:
第一状态是其中总和等于或小于第一延迟阈值的状态,所述总和通过将以下相加而获取:
第一加速器完成第一计算所要求的剩余时间;和
第一加速器处理基于第二执行命令的第二计算所要求的处理时间,以及
第二状态是其中总和大于第一延迟阈值的状态。
6.根据权利要求1所述的方法,还包括:
由存储控制器从第二主机设备接收:
不同于第一计算命名空间设置指令的、建立第二计算命名空间的第二计算命名空间设置指令,
与第二计算命名空间相关的第二延迟阈值,
不同于第一程序的第二程序,
使用第二程序的第三执行命令,以及
使用第二程序的第四执行命令;和
由所述存储控制器响应于第四执行命令向第二主机设备发送第二延迟消息。
7.根据权利要求6所述的方法,其中:
第一主机设备包括与第一租户相关的第一虚拟机,并且
第二主机设备包括与第二租户相关的第二虚拟机。
8.根据权利要求6所述的方法,还包括:
由存储控制器将第三执行命令存储在第二命令队列中;以及
响应于延迟相关的状态是:
当将第四执行命令存储在第二命令队列中时的第一状态,由存储控制器将第四执行命令存储在第二命令队列中,以及
当将第四执行命令存储在第二命令队列中时的第二状态,由存储控制器将第二延迟消息发送到第二主机设备。
9.根据权利要求1所述的方法,还包括:
由所述存储控制器从第二主机设备接收:
第一计算命名空间设置指令,以及
使用第一程序的第三执行命令,其中
存储控制器响应于第三执行命令不向第二主机设备发送延迟消息。
10.根据权利要求9所述的方法,还包括:
由存储控制器将第一执行命令存储在第一命令队列中;
响应于延迟相关的状态是:
当将第二执行命令存储在第一命令队列中时的第一状态,由存储控制器将第二执行命令存储在第一命令队列中,以及
当将第二执行命令存储在第一命令队列中时的第二状态,由存储控制器向第一主机设备发送第一延迟消息;和
由存储控制器将第三执行命令存储在第一命令队列中,而无需确定延迟相关的状态是第一状态还是第二状态。
11.根据权利要求1所述的方法,还包括:
由存储控制器从第二主机设备接收:
第一计算命名空间设置指令,
与第一计算命名空间相关的第二延迟阈值,以及
使用第一程序的第三执行命令;和
由存储控制器响应于第三执行命令向第二主机设备发送第二延迟消息。
12.根据权利要求11所述的方法,还包括:
由存储控制器将第一执行命令存储在第一命令队列中;以及
响应于延迟相关的状态是:
当将第二执行命令存储在第一命令队列中时的第一状态,由存储控制器将第二执行命令存储在第一命令队列中,
当将第二执行命令存储在第一命令队列中时的第二状态,由存储控制器向第一主机设备发送第一延迟消息,
当将第三执行命令存储在第一命令队列中时的第三状态,由存储控制器将第三执行命令存储在第一命令队列中,以及
当将第三执行命令存储在第一命令队列中时的第四状态,由存储控制器向第二主机设备发送第二延迟消息。
13.根据权利要求1所述的方法,其中,第一计算命名空间包括计算存储设备的命令队列、队列控制引擎、直接存储器存取DMA引擎、加速器和缓冲存储器。
14.根据权利要求1所述的方法,其中,第一延迟消息以异步错误报告AER方案被发送到第一主机设备。
15.根据权利要求1所述的方法,其中,第一延迟消息包括指示拒绝接收新的执行命令的消息。
16.一种用于操作包括第一虚拟机的主机设备的方法,所述方法包括:
由第一虚拟机向存储设备发送:
建立第一计算命名空间以处理来自第一虚拟机的命令的第一设置指令,
与第一计算命名空间相关的第一延迟阈值,
将被加载到第一计算命名空间中的第一程序,
使用第一程序的第一执行命令,以及
使用第一程序的第二执行命令;和
由第一虚拟机响应于第二执行命令从存储设备接收第一延迟消息。
17.根据权利要求16所述的方法,其中:
所述主机设备还包括第二虚拟机,
所述方法还包括:
由第二虚拟机向存储设备发送:
建立第一计算命名空间以处理来自第二虚拟机的命令的第二设置指令;和
使用第一程序的第三执行命令,以及
第二虚拟机响应于第三执行命令不从存储设备接收延迟消息。
18.根据权利要求16所述的方法,其中:
所述主机设备还包括第二虚拟机,并且
所述方法还包括:
由第二虚拟机向存储设备发送:
建立第一计算命名空间以处理来自第二虚拟机的命令的第二设置指令,
与第一计算命名空间相关的第二延迟阈值,以及
使用第一程序的第三执行命令;和
由第二虚拟机响应于第三执行命令从存储设备接收第二延迟消息。
19.一种计算存储设备,包括:
非易失性存储器,在其中存储数据;
存储控制器,被配置为控制非易失性存储器;以及
加速器,被配置为基于从主机设备接收的执行命令并使用从主机设备提供的程序来处理对数据的计算,其中:
存储控制器被配置为:
从主机设备接收第一执行命令;和
响应于延迟相关的状态是:
当将从主机设备接收的第一执行命令存储在命令队列中以等待加速器的处理时的第一状态,将第一执行命令存储在命令队列中,以及
不同于第一状态的第二状态,向主机设备发送延迟消息。
20.根据权利要求19所述的计算存储设备,其中,所述存储控制器和所述加速器的至少一些组件被主机设备设置为计算命名空间,所述计算命名空间用于基于从主机设备接收的执行命令来处理计算。
CN202311136610.XA 2022-10-24 2023-09-04 计算存储设备、操作其的方法和操作主机设备的方法 Pending CN117931053A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2022-0137423 2022-10-24
KR1020220137423A KR20240057106A (ko) 2022-10-24 2022-10-24 연산 스토리지 장치 및 그 구동 방법, 호스트 장치의 구동 방법

Publications (1)

Publication Number Publication Date
CN117931053A true CN117931053A (zh) 2024-04-26

Family

ID=87060354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311136610.XA Pending CN117931053A (zh) 2022-10-24 2023-09-04 计算存储设备、操作其的方法和操作主机设备的方法

Country Status (4)

Country Link
US (1) US20240231687A9 (zh)
EP (1) EP4361786A1 (zh)
KR (1) KR20240057106A (zh)
CN (1) CN117931053A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146444B2 (en) * 2016-10-03 2018-12-04 Samsung Electronics Co., Ltd. Method for read latency bound in SSD storage systems
US10489085B2 (en) * 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices

Also Published As

Publication number Publication date
US20240231687A9 (en) 2024-07-11
KR20240057106A (ko) 2024-05-02
EP4361786A1 (en) 2024-05-01
US20240134568A1 (en) 2024-04-25

Similar Documents

Publication Publication Date Title
US11914531B2 (en) Host controller interface using multiple circular queue, and operating method thereof
US12013797B2 (en) Memory controller, memory system and operating method of the memory system using a channel arbitration circuit
US11294600B2 (en) Storage device interfacing with host device and operating method of the storage device
KR20220124318A (ko) 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법
KR20230068935A (ko) 스토리지 장치 및 그 구동 방법
EP4361786A1 (en) Computational storage device, method for operating the computational storage device and method for operating host device
CN114546903A (zh) 存储装置和包括其的存储系统
US11194510B2 (en) Storage device and method of operating the same
EP4398111A1 (en) Computational storage device and method for operating the device
US20240193105A1 (en) Computational storage device and method of operating the same
US11921625B2 (en) Storage device for graph data
US12056048B2 (en) System and method for management of electronic memory
US12045472B2 (en) Storage device supporting multi-tenant operation and methods of operating same
KR102430219B1 (ko) 스토리지 장치, 스토리지 장치의 키 생성 방법 및 스토리지 장치의 인증 방법
EP4386556A1 (en) Operation method of memory controller configured to control memory device
US20240193041A1 (en) Operation method of memory controller configured to control memory device
US11842076B2 (en) Storage system and operating method for same
US20230114199A1 (en) Storage device
US20240296884A1 (en) Storage controller and storage device including the same
CN118092782A (zh) 使用编程中止控制操作存储设备的方法和对应的存储设备
KR20230067457A (ko) 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법
CN114694700A (zh) 存储器控制器、非易失性存储器装置及其存储装置
CN115295046A (zh) 具有优化读取的非易失性存储器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication