CN115495389A - 存储控制器、计算存储装置以及计算存储装置的操作方法 - Google Patents
存储控制器、计算存储装置以及计算存储装置的操作方法 Download PDFInfo
- Publication number
- CN115495389A CN115495389A CN202210669860.9A CN202210669860A CN115495389A CN 115495389 A CN115495389 A CN 115495389A CN 202210669860 A CN202210669860 A CN 202210669860A CN 115495389 A CN115495389 A CN 115495389A
- Authority
- CN
- China
- Prior art keywords
- internal
- host
- memory
- nvme
- command
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 313
- 238000011017 operating method Methods 0.000 title description 2
- 230000015654 memory Effects 0.000 claims abstract description 286
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 17
- 238000013519 translation Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 26
- 230000011664 signaling Effects 0.000 claims description 11
- 230000008520 organization Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 37
- 101150053844 APP1 gene Proteins 0.000 description 23
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 23
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 23
- 238000004891 communication Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 101150115593 ifc-2 gene Proteins 0.000 description 19
- 238000007726 management method Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 101100508413 Caenorhabditis elegans ifc-1 gene Proteins 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101001095089 Homo sapiens PML-RARA-regulated adapter molecule 1 Proteins 0.000 description 1
- 102100037019 PML-RARA-regulated adapter molecule 1 Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Software Systems (AREA)
Abstract
提供了存储控制器、计算存储装置以及计算存储装置的操作方法。所述计算存储装置包括:非易失性存储器(NVM)装置;以及存储控制器,被配置为控制NVM装置。存储控制器包括:计算处理器,被配置为:执行内部应用以生成内部命令;主机接口电路,被配置为:从外部主机装置接收主机命令,从计算处理器接收内部命令,并且单独地处理接收的主机命令和接收的内部命令;闪存转换层(FTL),被配置为:基于主机接口电路的处理的结果,执行地址映射操作;以及存储器接口电路,被配置为:基于FTL的地址映射操作,控制NVM装置。
Description
本申请要求于2021年6月17日在韩国知识产权局提交的第10-2021-0078889号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开的实施例涉及半导体存储器,更具体地,涉及存储控制器、计算存储装置以及计算存储装置的操作方法。
背景技术
半导体存储器装置被分类为易失性存储器装置(诸如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM))或非易失性存储器(NVM)装置(诸如,闪存装置、相变RAM(PRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)或铁电RAM(FRAM)),在易失性存储器装置中,存储的数据在电源关闭时丢失,在非易失性存储器(NVM)装置中,存储的数据即使在电源关闭时也被保持。
基于闪存的存储装置被用作计算系统的高容量存储介质。典型的存储装置具有在主机装置的控制下存储数据的功能。如今,为了减小主机装置的计算的负担,正在开发在其中支持各种计算或各种应用的存储装置。
发明内容
一个或多个实施例提供了具有降低的成本和提高的性能的存储控制器和计算存储装置以及计算存储装置的操作方法。
根据实施例,一种计算存储装置包括:非易失性存储器装置以及控制非易失性存储器装置的存储控制器。存储控制器包括:计算引擎,执行内部应用以生成内部命令;主机接口块,从外部主机装置接收主机命令,从计算引擎接收内部命令,并且单独地处理接收的主机命令和接收的内部命令;闪存转换层,基于主机接口块的处理的结果,执行地址映射操作;以及存储器接口块,基于闪存转换层的地址映射操作,控制非易失性存储器装置。
根据实施例,一种计算存储装置的操作方法包括:通过物理端口从外部主机装置接收主机命令;通过NVM快速(NVMe)引擎来处理主机命令;通过闪存转换层对处理后的主机命令执行第一地址映射;通过存储器接口块基于第一地址映射来访问非易失性存储器装置;通过执行内部应用的计算引擎生成内部命令;通过NVMe引擎来处理内部命令;通过闪存转换层对处理后的内部命令执行第二地址映射;以及通过存储器接口块基于第二地址映射来访问非易失性存储器装置。
根据实施例,一种被配置为控制非易失性存储器装置的存储控制器包括:NVMe引擎,通过外部主机驱动器接收主机命令;闪存转换层(FTL),在NVMe引擎的控制下执行地址映射;存储器接口块,基于FTL的地址映射来访问非易失性存储器装置;内部应用,发出内部输入/输出(I/O);内部文件系统,组织内部I/O;以及内部驱动器,基于组织的内部I/O来生成内部命令。NVMe引擎从内部驱动器接收内部命令,并且基于接收的内部命令,通过FTL和存储器接口块访问非易失性存储器装置。
根据实施例,一种计算存储装置包括:非易失性存储器装置;计算控制器,通过执行内部应用来生成内部命令;以及存储控制器,从计算控制器接收内部命令,响应于接收的内部命令来访问非易失性存储器装置,从外部主机装置接收主机命令,并且响应于接收的主机命令来访问非易失性存储器装置,并且,存储控制器包括主机接口块,主机接口块被配置为接收内部命令和主机命令二者。
附图说明
通过参照附图在特定实施例中进行描述,上面和其他方面和特征将变得更加清楚,其中:
图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可以是移动系统(诸如,移动电话、智能电话、平板个人计算机(PC)、可穿戴装置、健康护理装置或物联网(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可以是应用处理器包括的多个模块之一。应用处理器可被实现为片上系统(SoC)。主机存储器112可以是包括在应用处理器中的嵌入式存储器,或者可以是布置在应用处理器外部的NVM装置、易失性存储器装置、非易失性存储器模块或易失性存储器模块。
存储装置120可以是被配置为根据主机装置110的请求存储数据或者输出存储的数据的存储介质。在一个实施例中,存储装置120可包括固态驱动器(SSD)、嵌入式存储器和可拆卸的外部存储器中的至少一个。在存储装置120是SSD的情况下,存储装置120可以是符合NVMe标准的装置。在存储装置120是嵌入式存储器或外部存储器的情况下,存储装置120可以是符合通用闪存(UFS)标准或嵌入式多媒体卡(eMMC)标准的装置。主机装置110和存储装置120中的每个可生成符合应用于其的标准协议的包(packet),并且可发送生成的包。
存储装置120可包括存储控制器CTRL和NVM装置(或NVM)119。存储控制器CTRL可包括中央处理器(CPU)121、计算引擎122(例如,计算处理器)、闪存转换层(FTL)123、控制器存储器124、包管理器125、纠错码(ECC)引擎126(例如,纠错处理器)、高级加密标准(AES)引擎127(例如,AES处理器)、主机接口块128(例如,主机接口电路)、存储器接口块129(例如,存储器接口电路)以及系统总线。在一个实施例中,包括在存储控制器CTRL中的各种组件中的每个可被实现为知识产权(IP)块或功能块,并且可被实现为软件、硬件、固件或它们的组合。
CPU 121可控制存储控制器CTRL的整体操作。例如,CPU 121可被配置为驱动在存储控制器CTRL上运行的各种固件或软件。
计算引擎122可被配置为:执行将在存储控制器CTRL上处理的各种计算,或者驱动在存储控制器CTRL上运行的应用或计算程序。在一个实施例中,计算引擎122可被配置为执行在主机装置110上驱动的主机应用的一种或多种功能的一部分。在一个实施例中,内部应用可被配置为执行各种数据处理操作(诸如,加密运算、滤波运算和用于机器学习的卷积运算)。
在一个实施例中,CPU 121和计算引擎122被示出为单独的功能块,但是实施例不限于此。例如,CPU 121和计算引擎122中的每个可被实现为独立的处理器核。可选地,CPU121和计算引擎122可被实现为一个处理器核,或者可被实现为包括多个处理器核的多核处理器。
FTL 123可执行用于高效地使用NVM装置119的各种维护操作(maintenanceoperation)。例如,维护操作可包括地址映射操作、损耗均衡(wear leveling,又被称为磨损均衡)操作、垃圾收集操作等。
地址映射操作可表示在由主机装置110管理的逻辑地址与NVM装置119的物理地址之间进行转换或映射的操作。
损耗均衡操作可表示使包括在NVM装置119中的多个存储器块被使用的频率或所述多个存储器块被使用的次数一致的操作,并且可通过用于平衡物理块的擦除计数的固件技术或者通过硬件来实现。在一个实施例中,由于NVM装置119的多个存储器块中的每个通过损耗均衡操作而被一致地使用,因此特定存储器块可被防止过度劣化,从而NVM装置119的寿命可被提高。
垃圾收集操作可表示通过将NVM装置119的源存储器块的有效数据复制到NVM装置119的目标存储器块并且随后擦除源存储器块,来确保可用存储器块或空闲存储器块的操作。
在一个实施例中,FTL123可被实现为软件或固件,并且可被存储在控制器存储器124中或者被存储在单独的工作存储器中。CPU 121可通过驱动存储在控制器存储器124或单独的工作存储器中的FTL123来执行上面描述的维护操作。在一个实施例中,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接收的包进行解析(parse),或者生成将被发送到主机装置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可被配置为支持各种接口(诸如,高级技术附件(ATA)接口、串行ATA(SATA)接口、外部SATA(e-SATA)接口、小型计算机小型接口(SCSI)、串行附接SCSI(SAS)接口、外围组件互连(PCI)接口、PCI快速(PCIe)接口、IEEE 1394接口、通用串行总线(USB)接口、安全数字(SD)卡接口、MMC接口、eMMC接口、UFS接口、嵌入式UFS(eUFS)接口和紧凑型闪存(CF)卡接口)中的至少一种。
存储控制器CTRL可通过存储器接口块129与NVM装置119进行通信。在一个实施例中,存储器接口块129可被配置为支持闪存接口(诸如,切换(Toggle)接口或开放NAND闪存接口(ONFI))。然而,实施例不限于此。
包括在存储控制器CTRL中的各种组件可通过系统总线BUS彼此进行通信。系统总线BUS可包括各种系统总线(诸如,高级系统总线(ASB)、高级外围总线(APB)、高级高性能总线(AHB)和高级可扩展接口(AXI)总线)。
在存储控制器CTRL的控制下,NVM装置119可被配置为存储数据,输出存储的数据,或者擦除存储的数据。在一个实施例中,NVM装置119可以是二维(2D)NAND闪存装置或三维(3D)NAND闪存装置,但是实施例不限于此。例如,NVM装置119可以是MRAM、自旋转移矩MRAM(SST-MRAM)、导电桥接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可表示在主机操作系统(operatingsystem,OS)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(例如,第一接口路径或第一接口连接)将通过主机文件系统FS_h组织的主机I/O作为主机命令发送到存储装置120。在一个实施例中,主机NVMe驱动器DR_h可被配置为支持NVMe标准,并且可由图1的主机控制器111控制或驱动。在这种情况下,第一接口IF1可以是基于NVMe标准的接口。
存储控制器CTRL可包括FTL 123、主机接口块128和存储器接口块129。存储控制器CTRL可通过第一接口IF1从主机NVMe驱动器DR_h接收主机命令,并且可执行与接收到的主机命令对应的操作。
例如,主机接口块128可包括物理端口(PT)128a和NVMe引擎128b(例如,NVMe处理器)。PT 128a可以是被配置为发送和接收符合外围组件互连快速(PCIe)协议的物理信号的电路或物理层。
NVMe引擎128b可被配置为:处理通过PT 128a接收的信号,或者通过PT 128a将信号发送到主机NVMe驱动器DR_h。在一个实施例中,NVMe引擎128b可被配置为处理通过PT128a接收的信号。在一个实施例中,NVMe引擎128b可以是提供主机装置110与存储装置120(或NVM子系统)之间的接口的NVMe控制器。在一个实施例中,NVMe引擎128b可以是被配置为支持NVMe接口的物理功能(PF)块。
FTL123可从NVMe引擎128b接收信号,并且可基于接收的信号执行各种维护操作。FTL123的操作在上面被描述,因此,冗余描述将被省略。FTL123可通过存储器接口块129读取存储在NVM装置119中的数据,或者可通过存储器接口块129将数据存储在NVM装置119中。
如上所述,由主机装置110的主机应用APP_h发出的主机I/O可通过主机文件系统FS_h、主机NVMe驱动器DR_h、PT 128a、NVMe引擎128b、FTL 123和存储器接口块129而被处理。
在一个实施例中,存储装置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”。由内部应用APP_i发出的内部I/O可通过内部操作系统OS_i的内部文件系统FS_i和专用驱动器dr_d而被提供给FTL123。在一个实施例中,内部文件系统FS_i可以是由存储控制器CTRL的内部操作系统OS_i管理或使用的组件,并且可以是与主机装置110的主机文件系统FS_h区分开的组件。
在一个实施例中,专用驱动器dr_d可通过专用接口if_d与FTL123进行通信。专用驱动器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描述的实施例中,由存储控制器CTRL的内部应用APP_i发出的I/O可通过内部操作系统OS_i的内部NVMe驱动器DR_i被提供给NVMe引擎128b。也就是说,来自主机装置110的主机应用APP_h的主机I/O和来自存储控制器CTRL的内部应用APP_i的内部I/O可通过同一NVMe引擎128b而被处理,或者可共享同一NVMe引擎128b。在这种情况下,可减轻实现或设计被配置为处理由存储控制器CTRL的内部应用APP_i发出的内部I/O的组件的负担。
例如,在参照图2描述的实施例中,由存储控制器CTRL的内部应用APP_i发出的内部I/O通过内部操作系统OS_i的专用驱动器dr_d而被提供给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的内部应用APP_i发出的I/O可通过存储控制器CTRL的内部NVMe驱动器DR_i而被提供给NVMe引擎128b。NVMe引擎128b可被配置为支持与主机装置110的通信。也就是说,由存储控制器CTRL发出的I/O可通过与由主机装置110发出的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可将指示主机命令CMD_h被处理的主机响应RES_h提供给主机NVMe驱动器DR_h。
在操作S160中,主机NVMe驱动器DR_h可响应于主机响应RES_h而将主机输出OUT_h(例如,与主机I/O相关联的结果)提供给主机应用APP_h。
在操作S210中,可由存储控制器CTRL的内部应用APP_i发出内部I/O。例如,在执行各种计算(或操作)的处理中,内部应用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可将指示内部命令CMD_i被处理的内部响应RES_i提供给内部NVMe驱动器DR_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的框图。在一个实施例中,FTL 123的功能的至少一部分被实现为硬件或被自动化的实施例将参照图5而被描述,但是实施例不限于此。例如,FTL 123可由软件实现,并且可由存储控制器CTRL的CPU 121驱动。
参照图1和图5,FTL 123可包括FTL加速器123a、读取缓冲器电路123b、写入缓冲器电路123c和错误处置器(error handler)123d。在一个实施例中,FTL加速器123a、读取缓冲器电路123b、写入缓冲器电路123c和错误处置器123d中的每个可被实现为被配置为使FTL123的功能的至少一部分自动化的硬件电路。
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可以是被配置为处理在FTL123的操作期间发生的各种错误情况(例如,数据冲突(data hazard))的硬件电路。
在一个实施例中,读取缓冲器电路123b、写入缓冲器电路123c和错误处置器123d可在FTL加速器123a的控制下彼此交换数据或信息。
如上所述,FTL123可通过被配置为使其功能的全部或部分自动化的硬件电路来实现。在这种情况下,与FTL 123通过软件来实现的情况相比,存储装置120(或包括FTL 123的存储控制器CTRL)的性能可被提高。
在一个实施例中,通过一个或多个硬件电路自动化的FTL123可被设计,使得优化在主机接口块128(或NVMe引擎128b)与存储器接口块129之间进行。在这种情况下,类似于图2的实施例,在由存储控制器CTRL的内部应用APP_i发出的内部I/O通过专用驱动器dr_d被直接提供给FTL123的情况下,需要再次设计现有的优化的FTL 123,或者FTL 123的性能可能不被优化。
相比之下,根据实施例,在由存储控制器CTRL的内部应用APP_i发出的内部I/O通过内部NVMe驱动器DR_i被提供给NVMe引擎128b的情况下,因为FTL123通过NVMe引擎128b被提供了关于内部I/O的信息,所以再次设计自动化FTL123的单独负担可被减轻,并且自动化FTL 123的最佳性能可被确保。
图6是示出图1的存储系统的框图。存储系统100的内部组件和操作在上面被描述,因此,冗余描述将被省略。
在图6的实施例中,内部NVMe驱动器DR_i可与PT 128a进行通信。在这种情况下,第三接口IF3可被配置为具有与第一接口IF1相同的通信协议,或者被配置为包括与第一接口IF1相同的信号线。在一个实施例中,PT128a可被配置为与系统总线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 and sharing,SR-IOV)。第一NVMe引擎128b-1和第二NVMe引擎128b-2中的一个可以是作为支持SR-IOV功能的PCI-快速功能的PF,另一个可以是由PF支持的虚拟功能(VF)。在一个实施例中,PF和VF可支持共享NVM子系统的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将门铃信令(doorbell signaling)发送或写入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。
例如,由存储控制器CTRL的内部应用APP_i发出的内部I/O可通过内部NVMe驱动器DR_i而被处理。内部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中。
如上所述,可通过主机装置110的主机存储器112中包括的主机提交队列SQ_h和主机完成队列CQ_h来处理由主机应用APP_h发出的主机I/O。可通过存储控制器CTRL的控制器存储器124中包括的内部提交队列SQ_i和内部完成队列CQ_i来处理由内部应用APP_i发出的内部I/O。
在一个实施例中,就NVMe引擎128b而言,由主机应用APP_h发出的主机I/O可基于主机内存缓冲器(host memory buffer,HMB)功能而被处理,由内部应用APP_i发出的内部I/O可基于控制器内存缓冲(controller memorybuffer,CMB)功能而被处理。
图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而言,可基于HMB功能来处理由主机应用APP_h发出的主机I/O和由内部应用APP_i发出的内部I/O。在这种情况下,控制器存储器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通过FTL123被直接处理而不经过NVMe引擎128b的情况下,NVMe引擎128b不执行针对内部I/O的命令仲裁(arbitration)。在这种情况下,可能发生内部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可执行各种内部计算(或操作)。在这种情况下,由内部应用APP_i发出的内部I/O可通过内部文件系统FS_i和内部NVMe驱动器DR_i而被提供给NVMe引擎128b。内部应用APP_i可还处理通过PT128a提供的信号(即,主机命令)。在这种情况下,内部应用APP_i可在不经过内部文件系统FS_i的情况下通过内部NVMe驱动器DR_i将接收的信号(即,主机命令)提供给NVMe引擎128b。原因在于:因为接收的信号已经通过主机文件系统FS_h而被组织,所以不需要通过使用内部文件系统FS_i来附加地组织通过PT 128a接收的信号(即,主机命令)。
也就是说,存储控制器CTRL的内部应用APP_i可通过内部文件系统FS_i和内部NVMe驱动器DR_i来处理内部I/O;此外,内部应用APP_i可在不经过内部文件系统FS_i的情况下通过内部NVMe驱动器DR_i处理主机I/O或主机命令。
图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,或者可发出用于处理主机命令CMD_h的内部I/O。
在操作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可在不经过内部文件系统FS_i的情况下通过使用内部NVMe驱动器DR_i基于关于将被处理的操作的信息(例如,内部I/O或主机命令)来生成内部命令CMD_i。例如,当将被处理的操作不与内部操作相关联时,或者当将被处理的操作与主机操作相关联时,相关信息(例如,主机命令)可以是已经由主机文件系统FS_h组织的信息。在一个实施例中,为了便于描述,在由内部NVMe驱动器DR_i生成的命令是内部命令时给出描述,但是实施例不限于此。
在操作S252中,存储控制器CTRL可通过使用NVMe引擎128b和FTL123来处理生成的内部命令CMD_i。也就是说,因为与主机I/O对应的操作和与内部I/O对应的操作二者通过使用NVMe引擎128b和FTL 123而被处理,所以设计存储装置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。可通过内部文件系统FS_i、内部NVMe驱动器DR_i、NVMe引擎128b、FTL 123和存储器接口块129来处理生成的内部I/O。
在一个实施例中,在通过PT 128a接收的信息、信号或命令与主机操作(例如,存储装置120的读取操作或写入操作)相关联的情况下,NVMe引擎128b可在不通过内部应用APP_i的情况下通过使用FTL 123来直接处理通过PT 128a接收的信息、信号或命令。
如上所述,存储装置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来将第一应用APP1加载到存储控制器CTRL的控制器存储器124上(阶段A1)。从主机装置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描述的操作方法而被处理。更详细地,可通过存储控制器CTRL的主机接口块来处理内部I/O,该主机接口块被配置为从主机装置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或计算引擎可在不生成单独的内部I/O的情况下访问控制器存储器124。可选地,在第一应用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)的干预(intervention)的情况下执行的读取操作的读取命令。
如上所述,根据实施例的存储装置可驱动被配置为执行各种计算(或操作)的内部应用。在这种情况下,由内部应用发出的内部I/O可通过内部NVMe驱动器被提供给NVMe引擎。也就是说,因为在存储装置中驱动的内部应用与主机装置共享NVMe引擎,所以主机I/O和内部I/O可在没有附加的设计负担的情况下被高效地处理。
图17是示出根据实施例的存储系统的框图。在上面描述的一些实施例中,存储装置可通过一个存储控制器CTRL执行内部应用APP_i以执行各种计算(或操作),并且控制NVM装置119。然而,实施例不限于此。例如,存储装置可单独地包括被配置为执行计算的计算控制器。
参照图17,存储装置120可以是具有计算功能的计算存储装置。
主机装置110可被配置为:读取存储在存储装置120中的数据,或者将数据存储在存储装置120中。可选地,主机装置110可将计算请求提供给存储装置120,使得存储装置120执行特定计算。
存储装置120可包括计算控制器1211(例如,计算处理器)、存储控制器CTRL1212、第一存储器1221、第二存储器1222和NVM装置119。
计算控制器1211可响应于主机装置110的请求而操作。例如,计算控制器1211可被配置为:根据主机装置110的请求来执行计算,或者将主机装置110的请求传送到存储控制器CTRL。在一个实施例中,计算控制器1211可通过第三接口IF3与主机装置110进行通信。第三接口IF3可以是符合NVMe标准的接口,但是实施例不限于此。在这种情况下,主机装置110可具有被配置为与计算控制器1211的NVMe驱动器通信的NVMe驱动器DR_h。
第一存储器1221可被用作计算控制器1211的缓冲存储器或工作存储器。例如,第一存储器1221可被配置为:存储用于可由计算控制器1211执行的内部应用的程序代码,或者存储由计算控制器1211使用或管理的数据。在一个实施例中,第一存储器1221可被配置为通过计算控制器1211被访问,第二存储器1222可被配置为通过存储控制器CTRL被访问。
存储控制器CTRL可被配置为基于来自计算控制器1211的请求或命令来控制NVM装置119。在一个实施例中,存储控制器CTRL可依照NVMe接口标准与计算控制器1211进行通信。也就是说,存储控制器CTRL可被配置为通过同一路径处理由主机装置110发出的主机I/O和由计算控制器1211发出的内部I/O。
图18是示出根据实施例的存储系统的框图。参照图18,存储装置120(例如,计算存储装置)可包括计算控制器1211、存储控制器CTRL 2212、存储器2220和NVM装置119。主机装置110和存储装置120的组件在上面被描述,因此,冗余描述将被省略。
在一个实施例中,计算控制器1211和存储控制器CTRL可被配置为共享存储器2220。在这种情况下,计算控制器1211和存储控制器CTRL可通过存储器2220交换数据。存储系统100的操作类似于上面描述的除了计算控制器1211和存储控制器CTRL共享存储器2220之外的操作,因此,冗余描述将被省略。
图19是示出根据实施例的存储系统的框图。参照图19,存储装置120(例如,计算存储装置)可包括计算控制器1211、存储控制器CTRL 3212、第二存储器1222和NVM装置119。主机装置110和存储装置120的组件在上面被描述,因此,冗余描述将被省略。
在一个实施例中,存储控制器CTRL可被配置为访问第二存储器1222,并且计算控制器1211可被配置为通过存储控制器CTRL访问第二存储器1222。剩余的操作类似于上面描述的操作,因此,冗余描述将被省略。
图20是示出根据实施例的存储系统的框图。参照图20,存储装置120(例如,计算存储装置)可包括计算控制器1211、存储控制器CTRL 4212、第一存储器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驱动器,并且内部NVMe驱动器可例如经由基于NVMe的第四接口IF4与存储控制器CTRL的NVMe引擎128b进行通信。也就是说,主机装置110和计算控制器1211可被配置为共享存储控制器CTRL的NVMe引擎128b(或其中包括NVMe引擎128b的主机接口块128)。尽管主机NVMe驱动器DR_h被示出为与计算控制器1211和存储控制器CTRL进行通信,但是单独的驱动器可针对第一接口IF1和第三接口IF3中的每个被提供。
图21是示出根据实施例的存储系统的框图。参照图21,存储装置120(例如,计算存储装置)可包括计算控制器1211、存储控制器CTRL 5212、第一存储器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 6212与NVM装置119之间的通信的示图。参照图22,存储控制器CTRL与NVM装置119之间的一个通信通道60将参照图22而被描述,但是实施例不限于此。存储控制器CTRL和其他非易失性存储器装置可通过基本上类似于图22的通信通道的其他通道(即,多个通道)彼此进行通信。
存储控制器CTRL可包括第一接口电路IFC_1(例如,控制器接口(I/F)电路IF_C)。在一个实施例中,第一接口电路IFC_1可以是包括在上面描述的存储器接口块129中的电路。
第一接口电路IFC_1可包括第一引脚P11至第八引脚P18。存储控制器CTRL可通过多个引脚P11至P18将各种信号发送到NVM装置119。例如,存储控制器CTRL可通过第一引脚P11将芯片使能信号nCE发送到NVM装置119、通过第二引脚P12将命令锁存使能信号CLE发送到NVM装置119、通过第三引脚P13将地址锁存使能信号ALE发送到NVM装置119、通过第四引脚P14将写入使能信号nWE发送到NVM装置119、通过第五引脚P15将读取使能信号nRE发送到NVM装置119,可通过第六引脚P16与NVM装置119交换数据选通信号DQS、通过第七引脚P17与NVM装置119交换数据信号DQ,并且通过第八引脚P18从NVM装置119接收就绪和忙碌(readyand busy)信号nR/B。在一个实施例中,第七引脚P17可包括多个引脚。
NVM装置119可包括第二接口电路IFC_2(例如,存储器接口电路IF_M)、控制逻辑电路CL和存储器单元阵列MCA。第二接口电路IFC_2可包括第一引脚P21至第八引脚P28。第二接口电路IFC_2可通过第一引脚P21至第八引脚P28与存储控制器CTRL交换各种信号。存储控制器CTRL与NVM装置119之间的各种信号在上面被描述,因此,冗余描述将被省略。
第二接口电路IFC_2可基于写入使能信号nWE的切换时间点从在命令锁存使能信号CLE的使能区间(例如,高电平状态)中接收的数据信号DQ获得命令CMD。第二接口电路IFC_2可基于写入使能信号nWE的切换时间点从在地址锁存使能信号ALE的使能区间(例如,高电平状态)中接收的数据信号DQ获得地址ADDR。
在一个实施例中,写入使能信号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)之后开始切换的数据选通信号DQS。第二接口电路IFC_2可基于数据选通信号DQS的切换时间点发送包括数据的数据信号DQ。因此,数据可与数据选通信号DQS的切换时间点对准(align),并且被发送到存储控制器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(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是用于高速数据操作(诸如,人工智能(AI)数据操作)的专用电路。加速器6130可包括图形处理器(GPU)、神经处理器(NPU)和/或数据处理器(DPU),并且可被实现为与主处理器6100的其他组件物理上分开的芯片。
存储器6200a至6200b可被用作系统6000的主存储器装置。尽管存储器6200a至6200b中的每个可包括易失性存储器(诸如,SRAM和/或DRAM),但是存储器6200a至6200b中的每个可包括非易失性存储器(诸如,闪存、PRAM和/或RRAM)。存储器6200a至6200b可被实现在与主处理器6100相同的封装件中。
存储装置6300a至6300b可用作被配置为无论是否被对其供电都存储数据的非易失性存储装置,并且具有比存储器6200a至6200b大的存储容量。存储装置6300a至6300b可分别包括存储控制器6310a至6310b(即,“STRGCTRL”)以及被配置为经由存储控制器6310a至6310b的控制来存储数据的NVM 6320a至6320b。尽管NVM 6320a至6320b可包括具有2D结构或3DV-NAND结构的闪存,但是NVM 6320a至6320b可包括其他类型的NVM(诸如,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、存储器7120_1至7120_n、交换机7130_1至7130_n、存储装置7150_1至7150_n和用于连接到网络NT的网络接口连接器(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至7240_m。存储装置7250_1至7250_m可分别包括控制器7251_1至7251_m(在图23中被指示为“CTRL”)、NVM 7252_1至7252_m、DRAM 7253_1至7253_m以及接口(I/F)7254_1至7254_m。
下面,为了便于描述,将描述第一存储服务器7200_1的示例。然而,存储服务器7200_1至7200_m以及多个应用服务器7100_1至7100_n中的每个可具有类似的结构。
第一存储服务器7200_1可包括处理器7210_1、存储器7220_1、交换机7230_1、NIC7240_1和存储装置7250_1。处理器7210_1可执行第一存储服务器7200_1的整体操作。存储器7220_1可在处理器7210_1的控制下存储各种指令或数据。处理器7210_1可被配置为访问存储器7220_1,以执行各种指令或者处理数据。在一个实施例中,存储器7220_1可包括各种存储器装置(诸如,双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插存储器模块(DIMM)、傲腾(Optane)DIMM和非易失性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、DRAM7253_1和I/F 7254_1。在一个实施例中,存储装置7250_1还可包括用于安全或隐私的安全元件(SE)。
控制器7251_1可控制存储装置7250_1的整体工作。在一个实施例中,控制器7251_1可包括SRAM。响应于通过I/F 7254_1接收的信号,控制器7251_1可将数据存储在NVM7252_1中,或者可输出存储在NVM 7252_1中的数据。在一个实施例中,控制器7251_1可被配置为基于切换接口或ONFI来控制NVM 7252_1。
DRAM 7253_1可被配置为临时存储将被存储在NVM 7252_1中的数据或从NVM7252_1读取的数据。DRAM 7253_1可被配置为存储用于控制器7251_1操作的各种数据(例如,元数据和映射数据)。I/F 7254_1可提供控制器7251_1与处理器7210_1、交换机7230_1或NIC 7240_1之间的物理连接。在一个实施例中,接口可被实现为支持允许通过专用电缆直接连接存储装置7250_1的直接附接存储(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可通过使用光纤通道(FC)、以太网等来实现。在这种情况下,FC可以是在高速数据传输中使用的介质,并且可使用提供高性能/高可用性的光交换机。根据网络NT的访问方式,存储服务器7200_1至7200_m可被设置为文件存储设备、块存储设备或对象存储设备。
在一个实施例中,网络NT可以是存储专用网络(诸如,存储区域网络(SAN))。例如,SAN可以是使用FC网络并且按照FC协议(FCP)来实现的FC-SAN。可选地,SAN可以是使用TCP/IP网络并且按照iSCSI(或TCP/IP上的SCSI或互联网SCSI)协议实现的IP-SAN。在一个实施例中,网络NT可以是现有技术网络(诸如,TCP/IP网络)。例如,网络NT可按照诸如以太网上的FC(FCoE)、网络附接存储(NAS)或结构上的NVMe(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可被实现为网络服务器、数据库管理系统(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的存储装置7250_1至2250_m通过存储服务器7200_1至7200_m的存储器7220_1至7220_m被移动到应用服务器7100_1至7100_n的存储器7120_1至7120_n,或者从存储服务器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描述的计算存储装置,并且可被配置为执行各种计算/运算操作。如参照图1至图21所述,存储装置7150_1至7150_n和7250_1至7250_m可在执行各种内部计算/运算的同时处理请求的内部I/O。
根据一些实施例,存储装置可通过执行内部应用来执行各种计算(或操作)。在这种情况下,可通过与由外部主机装置生成的主机I/O相同的路径来处理在存储装置中生成的内部I/O。因此,可减轻设计用于处理内部应用的单独的专用驱动器或专用通道的负担。此外,因为现有的优化的存储装置的设计可被使用,所以存储装置的性能被提高。
虽然已经参照本公开的实施例描述了本公开,但是对于本领域普通技术人员将清楚的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可对其进行各种改变和修改。
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至权利要求12中的任一项所述的计算存储装置,其中,FTL包括:
FTL加速器,被配置为执行地址映射操作;
读取缓冲器电路,被配置为管理通过存储器接口电路接收的读取数据;以及
写入缓冲器电路,被配置为管理通过主机接口电路接收的写入数据,并且
其中,FTL加速器、读取缓冲电路和写入缓冲电路是硬件电路。
14.一种计算存储装置的操作方法,所述操作方法包括:
通过物理端口从外部主机装置接收主机命令;
通过非易失性存储器快速NVMe处理器来处理主机命令;
通过闪存转换层FTL对处理后的主机命令执行第一地址映射;
通过存储器接口电路基于第一地址映射来访问NVM装置;
通过执行内部应用的计算处理器生成内部命令;
通过NVMe处理器来处理内部命令;
通过FTL对处理后的内部命令执行第二地址映射;以及
通过存储器接口电路基于第二地址映射来访问NVM装置。
15.根据权利要求14所述的操作方法,其中,通过计算处理器生成内部命令的步骤包括:
通过物理端口从外部主机装置接收执行命令;
通过物理端口将执行命令传送到计算处理器;以及
响应于执行命令通过计算处理器执行内部应用,并且基于执行内部应用来生成内部命令。
16.根据权利要求14所述的操作方法,其中,通过计算处理器生成内部命令的步骤还包括:
通过物理端口从外部主机装置接收执行命令;
通过NVMe处理器从物理端口接收执行命令;
通过NVMe处理器将执行命令传送到计算处理器;以及
响应于执行命令通过计算处理器执行内部应用,并且根据执行内部应用来生成内部命令。
17.根据权利要求14至权利要求16中的任一项所述的操作方法,其中,内部应用被存储在计算存储装置的控制器存储器中。
18.一种存储控制器,所述存储控制器被配置为控制非易失性存储器NVM装置,所述存储控制器包括:
NVM快速NVMe处理器,被配置为通过外部主机驱动器接收主机命令;
闪存转换层FTL,被配置为在NVMe处理器的控制下执行地址映射;
存储器接口电路,被配置为基于FTL的地址映射来访问NVM装置;
内部应用,被配置为发出内部输入/输出请求;
内部文件系统,被配置为组织内部输入/输出请求;以及
内部驱动器,被配置为基于组织的内部输入/输出请求来生成内部命令,
其中,NVMe处理器还被配置为:
从内部驱动器接收内部命令,以及
基于接收的内部命令,通过FTL和存储器接口电路访问NVM装置。
19.根据权利要求18所述的存储控制器,其中,外部主机驱动器和NVMe处理器被配置为:通过NVMe接口彼此进行通信,并且
其中,内部驱动器和NVMe处理器被配置为:通过与NVMe接口的虚拟化版本对应的接口彼此进行通信。
20.根据权利要求19所述的存储控制器,其中,外部主机驱动器和内部驱动器中的每个包括:被配置为支持NVMe接口的NVMe驱动器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0078889 | 2021-06-17 | ||
KR1020210078889A KR102365312B1 (ko) | 2021-06-17 | 2021-06-17 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115495389A true CN115495389A (zh) | 2022-12-20 |
CN115495389B CN115495389B (zh) | 2024-03-22 |
Family
ID=80495483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210669860.9A Active CN115495389B (zh) | 2021-06-17 | 2022-06-14 | 存储控制器、计算存储装置以及计算存储装置的操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11645011B2 (zh) |
KR (1) | KR102365312B1 (zh) |
CN (1) | CN115495389B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947834B2 (en) | 2022-07-15 | 2024-04-02 | Micron Technology, Inc. | Data storage devices with reduced buffering for storage access messages |
US11983434B2 (en) * | 2022-07-15 | 2024-05-14 | Micron Technology, Inc. | Network-ready storage products with computational storage processors |
US11899984B1 (en) | 2022-07-26 | 2024-02-13 | Beijing Tenafe Electronic Technology Co., Ltd. | Virtual queue for messages |
US11907147B1 (en) | 2022-07-28 | 2024-02-20 | Beijing Tenafe Electronic Technology Co., Ltd. | Programmable message inspection engine implemented in hardware that generates an output message using a content modification plan and a destination control plan |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019075109A (ja) * | 2017-10-11 | 2019-05-16 | 三星電子株式会社Samsung Electronics Co.,Ltd. | データ記憶装置及びブリッジ装置 |
CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
US20200104056A1 (en) * | 2018-10-01 | 2020-04-02 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
US20200133898A1 (en) * | 2018-10-30 | 2020-04-30 | Marvell World Trade Ltd. | Artificial Intelligence-Enabled Management of Storage Media Access |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9152823B2 (en) | 2005-04-22 | 2015-10-06 | Storagecraft Technology Corporation | Systems, methods, and computer readable media for computer data protection |
US8959280B2 (en) * | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
KR100966236B1 (ko) | 2009-11-12 | 2010-06-25 | 주식회사 이음기술 | 인증기능이 탑재된 ssd를 사용하는 컴퓨터 및 그 구동방법 |
US10915383B2 (en) | 2014-07-31 | 2021-02-09 | Micro Focus Llc | Remote session information based on process identifier |
KR102148889B1 (ko) | 2014-08-18 | 2020-08-31 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
KR102661020B1 (ko) | 2016-11-07 | 2024-04-24 | 삼성전자주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
KR20180094386A (ko) | 2017-02-15 | 2018-08-23 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102434840B1 (ko) * | 2017-08-28 | 2022-08-22 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 |
US10915475B2 (en) * | 2017-10-12 | 2021-02-09 | Western Digital Technologies, Inc. | Methods and apparatus for variable size logical page management based on hot and cold data |
US10585819B2 (en) | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
US10963394B2 (en) | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
JP2020021385A (ja) | 2018-08-03 | 2020-02-06 | キオクシア株式会社 | メモリシステム |
KR20200037049A (ko) * | 2018-09-21 | 2020-04-08 | 삼성전자주식회사 | 스토리지 장치 |
US11360829B2 (en) | 2018-10-16 | 2022-06-14 | Ngd Systems, Inc. | System and method for communicating between computational storage devices |
KR20200087052A (ko) | 2019-01-10 | 2020-07-20 | 삼성전자주식회사 | NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법 |
KR20200129843A (ko) | 2019-05-10 | 2020-11-18 | 에스케이하이닉스 주식회사 | 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11385831B2 (en) * | 2019-10-11 | 2022-07-12 | FADU Inc. | Memory controller and storage device including the same |
KR20210068699A (ko) | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
-
2021
- 2021-06-17 KR KR1020210078889A patent/KR102365312B1/ko active IP Right Grant
-
2022
- 2022-06-01 US US17/829,980 patent/US11645011B2/en active Active
- 2022-06-14 CN CN202210669860.9A patent/CN115495389B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019075109A (ja) * | 2017-10-11 | 2019-05-16 | 三星電子株式会社Samsung Electronics Co.,Ltd. | データ記憶装置及びブリッジ装置 |
CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
US20200104056A1 (en) * | 2018-10-01 | 2020-04-02 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
US20200133898A1 (en) * | 2018-10-30 | 2020-04-30 | Marvell World Trade Ltd. | Artificial Intelligence-Enabled Management of Storage Media Access |
Also Published As
Publication number | Publication date |
---|---|
CN115495389B (zh) | 2024-03-22 |
KR102365312B1 (ko) | 2022-02-23 |
US20220405015A1 (en) | 2022-12-22 |
US11645011B2 (en) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858015B2 (en) | Solid-state storage management | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US20190171392A1 (en) | Method of operating storage device capable of reducing write latency | |
US11741034B2 (en) | Memory device including direct memory access engine, system including the memory device, and method of operating the memory device | |
US20230229357A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
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 | |
KR20230071730A (ko) | 데이터 프로세싱 장치 및 그것의 동작 방법 | |
EP4148572B1 (en) | Computational storage device and storage system including the computational storage device | |
US20230359389A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230359578A1 (en) | Computing system including cxl switch, memory device and storage device and operating method thereof | |
EP4273708A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230350832A1 (en) | Storage device, memory device, and system including storage device and memory device | |
US11809341B2 (en) | System, device and method for indirect addressing | |
US20230409495A1 (en) | Storage device, operation method of the storage device, and electronic system including the storage device | |
US20230359567A1 (en) | Storage device, computing device including storage device and memory device, and operating method of computing device | |
US20230359379A1 (en) | Computing system generating map data, and method of operating the same | |
US20230393749A1 (en) | Method and device of storage data | |
KR20230156583A (ko) | 복수의 스토리지 장치들 각각의 맵 데이터를 관리하는 메모리 장치의 동작 방법 및 이를 포함하는 컴퓨팅 시스템 및 이의 동작 방법 | |
CN114327254A (zh) | 存储数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |