CN115933968A - 计算存储装置和电子系统 - Google Patents
计算存储装置和电子系统 Download PDFInfo
- Publication number
- CN115933968A CN115933968A CN202211082337.2A CN202211082337A CN115933968A CN 115933968 A CN115933968 A CN 115933968A CN 202211082337 A CN202211082337 A CN 202211082337A CN 115933968 A CN115933968 A CN 115933968A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- storage device
- processor
- user program
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 213
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 238000000034 method Methods 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 101100122010 Methanocella arvoryzae (strain DSM 22066 / NBRC 105507 / MRE50) glmM gene Proteins 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 230000006386 memory function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101150104728 GPR88 gene Proteins 0.000 description 1
- 101100029548 Mus musculus Pgm2 gene Proteins 0.000 description 1
- 101150028796 PGM1 gene Proteins 0.000 description 1
- 102100038404 Probable G-protein coupled receptor 88 Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Security & Cryptography (AREA)
Abstract
提供了计算存储装置和电子系统。所述计算存储装置包括:非易失性存储器,被配置为存储数据;以及存储控制器,被配置为基于所述数据来控制将被执行的多个应用。存储控制器包括:处理器;以及存储器,包括被配置为存储用户程序的程序槽。处理器被配置为:驱动操作系统执行用户程序,以控制所述多个应用之中的应用基于事件信号对所述数据执行第一操作。
Description
本申请要求于2021年9月10日在韩国知识产权局提交的第10-2021-0121030号韩国专利申请的权益,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开涉及计算存储装置和包括该计算存储装置的存储系统。
背景技术
半导体存储器可被分类为易失性存储器(诸如,静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM))和非易失性存储器(诸如,闪存、相变随机存取存储器(PRAM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器(RRAM)、铁电随机存取存储器(FRAM))。易失性存储器在电力供应被切断时丢失存储的数据,而非易失性存储器即使在电力供应被切断时也保留存储的数据。
基于闪存的存储装置可用作计算系统中的大容量存储介质。通用的存储装置具有在主机装置的控制下对数据进行存储的功能。最近,为了降低主机装置的计算负荷,已开发了支持存储装置中的各种计算操作或各种应用的存储装置。
发明内容
本公开的方面提供了一种计算存储装置,所述计算存储装置使用应用内部操作的用户程序来执行各种计算操作。
本公开的方面还提供了一种包括计算存储装置的电子系统,所述计算存储装置根据通过主机装置提供的执行条件来执行内部操作。
然而,本公开的方面不限于在此阐述的那些方面。通过参照下面给出的本公开的具体实施方式,以上和其他方面对于本公开所属领域的普通技术人员将变得更加清楚。
根据本公开的一方面,一种计算存储装置包括:非易失性存储器,被配置为存储数据;以及存储控制器,被配置为基于所述数据来控制将被执行的多个应用。存储控制器包括:处理器;以及存储器,包括被配置为存储用户程序的程序槽。处理器被配置为:驱动操作系统执行用户程序,以控制所述多个应用之中的应用基于事件信号对所述数据执行第一操作。
根据本公开的另一方面,一种计算存储装置包括:非易失性存储器,被配置为存储数据;存储控制器,被配置为基于所述数据来控制将被执行的多个应用;以及处理器,被配置为:根据外部命令重新配置事件处理器,控制事件处理器根据包括在外部命令中的执行条件而在多个应用之中确定应用,并且根据执行条件执行所述应用。存储控制器还被配置为:根据外部命令重新配置处理器。
根据本公开的另一方面,提供了一种电子系统,所述电子系统包括:非易失性存储器,被配置为存储数据;存储控制器,包括处理器和存储器,存储器包括被配置为存储通过内部操作系统执行的用户程序的程序槽;以及主机装置,被配置为将针对用户程序的下载命令提供给存储控制器。内部操作系统被配置为:基于下载命令将用户程序存储在程序槽中,执行用户程序以控制多个应用之中的应用对数据执行第一操作。
根据以下具体实施方式、附图和权利要求,其他特征和优势可以是清楚的。
附图说明
从以下结合附图对示例实施例的描述,这些和/或其他方面将变得清楚并且更容易理解,在附图中:
图1是根据示例实施例的存储系统的框图;
图2是根据示例实施例的图1的存储系统的框图;
图3和图4是示出根据示例实施例的图2的存储系统的操作的流程图;
图5至图10是用于解释根据示例实施例的图2的存储系统的操作的示图;
图11是用于解释根据示例实施例的图2的存储系统的另一操作的示图;
图12是示出根据示例实施例的一些存储系统的操作的流程图;
图13是用于解释根据示例实施例的一些存储系统的框图;
图14是用于解释根据示例实施例的一些存储系统的框图;
图15是用于解释根据示例实施例的存储控制器与非易失性存储器装置之间的通信的示图;
图16示出根据示例实施例的系统;以及
图17是根据示例实施例的数据中心的框图。
具体实施方式
在下文中,将参照附图描述示例实施例。在图1至图17的描述中,基本上相同的组件通过相同的参考标记进行标识,并且对基本上相同的组件的任何冗余描述将被省略。此外,贯穿附图,类似的组件通过类似的参考标记进行标识。
图1是根据示例实施例的存储系统100a的框图。参照图1,存储系统100a可包括主机装置110和存储装置120。在一个示例实施例中,存储系统100a可以是移动系统(诸如,便携式通信终端(移动电话)、智能电话、平板个人计算机、可穿戴装置、医疗保健装置或物联网(IOT)装置)。在一个示例实施例中,存储系统100a可以是计算装置(诸如,个人计算机、膝上型计算机、服务器或媒体播放器),或者可以是汽车装置(诸如,导航装置)。
在一个示例实施例中,存储装置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可以是包括在应用处理器中的嵌入式存储器,或者可以是设置在应用处理器外部的非易失性存储器装置、易失性存储器装置、非易失性存储器模块或易失性存储器模块。
存储装置120可以是被配置为根据来自主机装置110的请求而存储数据或输出存储的数据的存储介质。在一个示例实施例中,存储装置120可包括固态驱动器(SSD)、嵌入式存储器和可移除外部存储器中的至少一者。当存储装置120是SSD时,存储装置120可以是符合NVMe标准的装置。当存储装置120是嵌入式存储器或外部存储器时,存储装置120可以是符合通用闪存(UFS)标准或嵌入式多媒体卡(eMMC)标准的装置。主机装置110和存储装置120中的每个可根据采用的标准协议来生成和发送包(packet)。
存储装置120可包括存储控制器CTRL和非易失性存储器装置NVM。存储控制器CTRL可包括中央处理器(CPU)121、硬件(HW)加速器122、闪存转换层(FTL)123、内部存储器124、包管理器125、事件处理器126、计算程序存储器127、主机接口块128、存储器接口块129和系统总线BUS。在一个示例实施例中,包括在存储控制器CTRL中的各种组件中的每个可被实现为知识产权(IP)块或功能块,并且可以以软件、硬件、固件或它们的组合的形式实现。例如,IP块可包括用于执行特定功能的电路,并且可具有包括商业秘密的设计。
CPU 121可以是处理器,并且可控制存储控制器CTRL的总体操作。例如,CPU 121可被配置为驱动在存储控制器CTRL上运行的各种固件或软件。
硬件加速器122可被配置为执行通过存储控制器CTRL执行的各种计算操作,或者驱动在存储控制器CTRL上执行的应用或计算程序。在一个示例实施例中,硬件加速器122可被配置为执行在主机装置110上运行的主机应用的一些功能。在一个示例实施例中,内部应用可被配置为执行各种数据计算操作(诸如,加密操作、过滤操作和用于机器学习的卷积运算)。
在一个示例实施例中,CPU 121和硬件加速器122被示出为单独的功能块,但是示例实施例不限于此。例如,CPU 121和硬件加速器122中的每个可被实现为单独的处理器核。可选择地,CPU 121和硬件加速器122可被实现为一个处理器核,或者可被实现为包括多个处理器核的多核处理器。
FTL 123可执行各种维护操作,以有效地使用非易失性存储器装置NVM。例如,维护操作可包括地址映射操作、磨损均衡操作和垃圾收集操作。
地址映射操作可以是在通过主机装置110管理的逻辑地址与非易失性存储器装置NVM的物理地址之间进行转换或映射的操作。
磨损均衡操作可表示使包括在非易失性存储器装置NVM中的多个存储器块的使用频率或使用次数均衡的操作,并且磨损均衡操作可通过平衡物理块的擦除计数的固件技术或通过硬件来实现。在一个示例实施例中,因为非易失性存储器装置NVM的存储器块通过磨损均衡操作被均匀地使用,所以可防止特定存储器块过度劣化,从而延长非易失性存储器装置NVM的寿命。
垃圾收集操作可表示这样的操作:该操作通过将非易失性存储器装置NVM的受害存储器块(victim memory block)的有效数据复制到目标存储器块,然后对受害存储器块进行擦除,来确保非易失性存储器装置NVM的可用存储器块或空闲存储器块。
在一个示例实施例中,FTL 123可以以固件或软件的形式实现,并且可被存储在内部存储器124或单独的工作存储器中。CPU 121可通过驱动存储在内部存储器124或单独的工作存储器中的FTL 123,来执行上述各种维护操作。在一个示例实施例中,FTL 123可通过被配置为执行上述各种维护操作的各种硬件自动化电路来实现。也就是说,FTL 123可被实现为硬件,并且上述各种维护操作可通过硬件被执行。
内部存储器124可作为存储控制器CTRL的缓冲存储器或工作存储器进行操作。例如,内部存储器124可临时存储从主机装置110或非易失性存储器装置NVM接收的数据。可选择地,内部存储器124可对存储控制器CTRL的操作所需的各种信息或程序代码进行存储。CPU 121可基于存储在内部存储器124中的信息或程序代码来执行各种操作。
在一个示例实施例中,内部存储器124可被配置为对由硬件加速器122使用的数据或用于通过硬件加速器122执行的应用的程序代码以及稍后将被描述的程序槽(programslot)进行存储。硬件加速器122可执行存储在内部存储器124中的程序代码,或者可对存储在内部存储器124中的数据执行各种操作。
尽管内部存储器124被示出为包括在存储控制器CTRL中,但是示例实施例不限于此。内部存储器124还可以是位于存储控制器CTRL外部的单独的存储器模块或存储器装置。存储控制器CTRL还可包括被配置为控制位于存储控制器CTRL外部的存储器模块或存储器装置的存储控制器。
包管理器125可被配置为解析从主机装置110接收的包或生成将被发送给主机装置110的数据的包。在一个示例实施例中,可基于主机装置110与存储装置120之间的接口协议来生成包。
事件处理器126根据包括在存储控制器CTRL中的功能块的执行条件,生成至内部操作系统的事件信号,并且内部操作系统根据事件信号执行程序槽中的用户程序。
尽管事件处理器126被示为被包括在存储控制器CTRL中,但是示例实施例不限于此。存储控制器CTRL还可包括被配置为控制位于存储控制器CTRL外部的事件处理器的事件处理器控制器,并且事件处理器可以是单独的芯片或嵌入式现场可编程门阵列(FPGA)。
计算程序存储器127可用作用于临时存储将被发送给主机装置110的数据或从主机装置110接收的数据的缓冲存储器。此外,计算程序存储器127可接收和存储来自稍后将被描述的主机文件系统的文件数据,并且内部操作系统可基于存储的文件数据来执行用户程序。
存储控制器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通信。在一个示例实施例中,存储器接口块129可被配置为支持闪存接口(诸如,切换(toggle)接口或开放式NAND闪存接口(ONFI)接口)。然而,示例实施例不限于此。
包括在存储控制器CTRL中的各种组件可通过系统总线BUS彼此通信。系统总线BUS的示例可包括各种系统总线(诸如,高级系统总线(ASB)、高级外围总线(APB)、高级高性能总线(AHB)和高级可扩展接口(AXI))。
非易失性存储器装置NVM可被配置为在存储控制器CTRL的控制下存储数据、输出存储的数据或擦除存储的数据。在一个示例实施例中,非易失性存储器装置NVM可以是二维(2D)或三维(3D)NAND闪存装置。然而,示例实施例不限于此,非易失性存储器装置NVM还可以是基于磁性随机存取存储器(MRAM)、自旋转移力矩MRAM、导电桥接式随机存取存储器(CBRAM)、铁电随机存取存储器(FeRAM)、相变随机存取存储器(PRAM)、电阻式随机存取存储器(RRAM)和各种其他类型的存储器的存储器装置。在一个示例实施例中,非易失性存储器装置NVM可包括多个非易失性存储器,并且非易失性存储器中的每个可被实现为单独的芯片或单独的封装件。存储控制器CTRL可分别通过多个通道与非易失性存储器装置NVM的非易失性存储器通信。
如上所述,存储装置120可通过使用存储控制器CTRL的CPU 121和硬件加速器122执行各种应用,来执行各种计算操作。在这种情况下,可降低将要通过主机装置110执行的计算负荷。因此,可提高存储系统100a的总体性能。
存储控制器CTRL还可包括纠错码(ECC)引擎和高级加密标准(AES)引擎。ECC引擎可对从非易失性存储器装置NVM读取的数据执行错误检测和纠正功能。例如,ECC引擎可生成将被存储在非易失性存储器装置NVM中的写入数据的奇偶校验位。生成的奇偶校验位可与写入数据一起被存储在非易失性存储器装置NVM中。稍后,当对非易失性存储器装置NVM执行读取操作时,ECC引擎可使用读取数据和对应的奇偶校验位来纠正读取数据中的错误,并且可输出纠错后的读取数据。
AES引擎可通过使用对称密钥算法,对输入到存储控制器CTRL的数据执行加密操作和解密操作中的至少一者。
图2是图1的存储系统100a的框图。为了易于描述,将不再重复已参照图1提供的描述。参照图1和图2,存储系统100a可包括主机装置110和存储装置120。因为以上已描述了主机装置110和存储装置120的示意性配置和操作,所以将不再重复其详细描述。
在一个示例实施例中,主机装置110可包括处理器,并且处理器可驱动主机应用APP_h。主机应用APP_h可表示在主机操作系统(OS)OS_h上执行的程序。主机应用APP_h可将数据存储在存储装置120中,或者可读取存储在存储装置120中的数据。也就是说,主机应用APP_h可发出用于向/从存储装置120输入/输出(I/O)的主机命令CMD_h。通过主机装置110的主机应用APP_h发出的I/O在下文中将被称为主机I/O。
主机操作系统OS_h可包括主机文件系统FS_h。在主机操作系统OS_h上运行的主机文件系统FS_h可被配置为管理或组织存储装置120的存储空间。主机操作系统OS_h可通过基于NVMe标准的接口连接到存储装置120。
根据一些示例实施例的主机操作系统OS_h通过主机接口块128将关于主机文件系统FS_h的数据DATA发送给计算程序存储器(CPM)127,并且计算程序存储器127基于数据DATA将文件数据File_D提供给内部操作系统OS_i。
存储装置120可包括存储控制器CTRL和非易失性存储器装置NVM。存储控制器CTRL可包括FTL 123、内部存储器124、计算程序存储器127、主机接口块128和存储器接口块129。存储控制器CTRL可从主机装置110接收主机命令,并且执行与接收的主机命令对应的操作。
例如,主机接口块128可包括物理端口和NVMe引擎。物理端口可以是被配置为根据PCIe协议发送和接收物理信号的电路或物理层,并且NVMe引擎可被配置为处理通过物理端口接收的信号。在一个示例实施例中,NVMe引擎可以是提供主机装置110与存储装置120(或NVM子系统)之间的接口的NVMe控制器,或者可以是被配置为支持NVMe接口的物理功能块。
FTL 123可从NVMe引擎接收信号,并且基于接收的信号执行各种维护操作。因为以上已描述了FTL 123的操作,所以将不再重复其详细描述。FTL123可通过存储器接口块129读取存储在非易失性存储器装置NVM中的数据或者将数据存储在非易失性存储器装置NVM中。
如上所述,通过主机装置110的主机应用APP_h生成的主机I/O可通过主机文件系统FS_h、主机接口块128、FTL 123和存储器接口块129来处理。
在一个示例实施例中,存储装置120可被配置为通过执行内部应用APP_i来执行各种计算操作。例如,存储装置120的存储控制器CTRL可执行内部应用APP_i。内部应用APP_i可在内部操作系统或固件(在下文中,被称为“内部操作系统”)OS_i上执行。然后,内部应用APP_i可作为用户程序Pgm被执行。内部应用APP_i和内部操作系统OS_i可通过参照图1描述的CPU121和硬件加速器122驱动。
在一个示例实施例中,在存储控制器CTRL上运行的内部应用APP_i和内部操作系统OS_i可与在主机装置110上运行的主机应用APP_h和主机操作系统OS_h不同。例如,内部应用APP_i可在物理上或逻辑上与主机操作系统OS_h(和主机应用APP_h)分离,并且内部操作系统OS_i可在物理上或逻辑上与主机操作系统OS_h分离。可选择地,内部应用APP_i和内部操作系统OS_i可通过存储装置120内部的组件(例如,存储控制器CTRL的CPU 121和硬件加速器122)驱动,并且主机应用APP_h和主机操作系统OS_h可通过主机装置110内部的组件(例如,主机装置110的处理器)驱动。此外,用于内部应用APP_i和内部操作系统OS_i的程序代码可被存储在内部存储器124中,并且程序代码可被驱动,以控制内部应用APP_i和内部操作系统OS_i。
在一个示例实施例中,内部应用APP_i和内部操作系统OS_i可与执行存储控制器CTRL的存储功能所需的程序不同。存储控制器CTRL的存储功能可表示响应于来自主机装置110的主机命令而写入数据、读取数据或管理非易失性存储器装置NVM的存储空间的功能。也就是说,与现有的存储装置相比,根据示例实施例的存储装置120还可包括内部应用APP_i和内部操作系统OS_i,从而可被配置为执行附加计算操作。
内部操作系统OS_i可基于从事件处理器126提供的事件信号event_s,来确定和执行存储在内部存储器124中的程序槽(Pgm_Slot)PS中的用户程序Pgm,并且用户程序Pgm可基于存储在计算程序存储器127中的文件数据File_D而被执行。
当内部操作系统OS_i执行用户程序Pgm时,内部操作系统OS_i可执行包括以上通用存储功能的至少一个内部应用APP_i。
当内部应用APP_i被执行时,I/O可从内部应用APP_i发出。通过内部应用APP_i发出的I/O在下文中将被称为内部I/O。通过内部应用APP_i发出的内部I/O可通过内部操作系统OS_i的内部文件系统FS_i发送给FTL 123。在一个示例实施例中,内部文件系统FS_i可以是通过存储控制器CTRL的内部操作系统OS_i管理或使用的组件,并且可以是与主机装置110的主机文件系统FS_h不同的组件。
事件处理器126根据作为存储装置120中的功能块进行操作的程序装置PgmD的操作,将事件信号event_s提供给内部操作系统OS_i。
程序装置PgmD包括例如FTL 123、主机接口块128、存储器接口块129和非易失性存储器装置NVM。程序装置PgmD还可包括ECC引擎和AES引擎。
作为程序装置PgmD的操作的示例,FTL 123可执行数据DATA的垃圾收集操作、数据DATA的读取回收操作和磨损均衡操作,主机接口块128可执行数据DATA的提交操作、数据DATA的编程完成操作和数据DATA的高速缓存命中操作,并且非易失性存储器装置NVM可执行数据DATA的读取操作和数据DATA的写入操作。
在一个示例实施例中,存储控制器CTRL中的组件之间的通信可通过系统总线BUS或单独的通信方法来实现。例如,主机接口块128与FTL 123之间的通信、FTL 123与存储器接口块129之间的通信可通过系统总线BUS或单独的通信方法来实现。
图3和图4是示出根据示例实施例的图2的存储系统100a的操作的流程图。图5至图10是用于解释根据示例实施例的图2的存储系统100a的操作的示图。
参照图2至图4,存储装置120下载用户程序Pgm(操作S110)。例如,存储装置120可在存储装置120的启动之后,通过主机装置110下载用户程序Pgm。
主机装置110通过主机操作系统OS_h发出下载命令Download CMD(操作S111)。主机装置110发送下载命令Download CMD和包括第a用户程序Pgma至第Z用户程序PgmZ的用户程序Pgm(操作S112)。
存储装置120响应于下载命令Download CMD,将第a用户程序Pgma至第Z用户程序PgmZ存储在内部存储器124中的程序槽PS中(操作S113)。
此外,参照图5,程序槽PS包括第一区域RG1和第二区域RG2。程序槽PS将在存储装置120中定义的第一用户程序Pgm1至第N用户程序PgmN存储在第一区域RG1中,并且将可通过主机装置100存储的第a用户程序Pgma至第Z用户程序PgmZ存储在第二区域RG2中。
第a用户程序Pgma至第Z用户程序PgmZ可以是程序代码,并且可与例如扩展的伯克利包过滤器(eBPF)或Python的脚本对应。然而,示例实施例不限于这些示例。为了易于描述,下面的描述将基于第a用户程序Pgma至第Z用户程序PgmZ以eBPF的形式被存储的假设。
图6是示出第Z用户程序PgmZ的内容的示例程序代码。此外,参照图6,第Z用户程序PgmZ可以以编程语言编写。在一个示例实施例中,第Z用户程序PgmZ可以以C语言以eBPF的形式来编译。
第Z用户程序PgmZ可包括伴随有逻辑块地址过滤的垃圾收集(GC)操作。稍后将在第Z用户程序PgmZ中描述的操作是用户程序Pgm的示例,并且示例实施例不限于该示例。
第Z用户程序PgmZ可包括垃圾收集执行(GC_copy)操作和垃圾收集放弃(GC_drop)操作。
第Z用户程序PgmZ包括包含逻辑块地址的条件表达式“if”语句。当逻辑块地址(LBA)小于40000时,第Z用户程序PgmZ可通过“if”语句返回垃圾收集执行(GC_copy)操作。当逻辑块地址达到或超过40000时,第Z用户程序PgmZ可返回垃圾收集放弃(GC_drop)操作。然后,通过执行第Z用户程序PgmZ,存储装置120可仅对具有小于40000的逻辑块地址的块执行垃圾收集。40000是示例数字,并且示例实施例不限于该数字。
也就是说,通过执行第Z用户程序PgmZ,存储装置120执行伴随有基于作为通用存储功能的垃圾收集(gc)的逻辑块地址过滤的垃圾收集(GC)操作。因此,可以看出,第a用户程序Pgma至第Z用户程序PgmZ可根据程序代码基于通用存储功能进行操作。第a用户程序Pgma至第Z用户程序PgmZ中的每个的描述可与第Z用户程序PgmZ的描述对应。
此外,参照图7,主机装置110将文件数据File_D从主机文件系统FS_h发送给计算程序存储器127(操作S120)。稍后将被执行的用户程序将基于存储在计算程序存储器127中的文件数据File_D来执行。
此外,参照图8,存储装置120注册用户程序Pgm的执行条件(操作S130)。
主机装置110通过主机操作系统OS_h发出执行命令Execution CMD(操作S131)。主机装置110将执行命令Execution CMD发送给程序装置PgmD(操作S132)。
例如,在图6的第Z用户程序PgmZ的情况下,执行命令Execution CMD包括执行条件,并且执行条件包括槽ID#PgmZ、事件发生时间GC event和参数数据para_D。
槽ID#PgmZ指示内部操作系统OS_i加载执行命令Execution CMD所针对的用户程序(Pgm1至PgmN、Pgma至PgmZ)所需的数据。
事件发生时间GC event是与执行命令Execution CMD所针对的用户程序(Pgm1至PgmN、Pgma至PgmZ)所基于的程序装置PgmD的操作时间对应的信息。例如,在图6的第Z用户程序PgmZ的情况下,事件发生时间GC event与FTL 123的垃圾收集(GC)操作时间对应。
参数数据para_D是用于执行用户程序(Pgm1至PgmN、Pgma至PgmZ)的要素,并且用户程序(Pgm1至PgmN、Pgma至PgmZ)基于参数数据para_D来执行操作。例如,在图6的第Z用户程序PgmZ的情况下,参数数据para_D与逻辑块地址值40000对应。
程序装置PgmD对包括在执行命令Execution CMD中的槽ID#PgmZ、事件发生时间GCevent和参数数据para_D进行注册(操作S133)。在图6的第Z用户程序PgmZ的情况下,FTL123对包括在执行条件中的槽ID#PgmZ、事件发生时间GC event和参数数据para_D进行存储和注册。
此外,参照图9,事件处理器126将用于用户程序Pgm的事件信号event_s发送给内部操作系统OS_i(操作S140)。在一个示例实施例中,事件处理器126可根据执行命令Execution CMD所针对的用户程序被不同的配置。例如,当执行命令Execution CMD对应于不同于垃圾收集操作的写入操作时,事件处理器126可被重新配置以作出不同的响应(例如,生成不同的事件信号event_s)。
程序装置PgmD在事件发生时间生成事件信号(操作S141)。在图6的第Z用户程序PgmZ的情况下,事件处理器126在与事件发生时间GC event对应的事件发生时间event_123,从FTL 123接收槽ID#PgmZ和参数数据para_D。
事件处理器126基于接收的槽ID#PgmZ和参数数据para_D将事件信号event_s提供给内部操作系统OS_i(操作S142)。
内部操作系统OS_i基于事件信号event_s执行程序(操作S150)。内部操作系统OS_i基于事件信号event_s对程序槽PS执行程序请求Req_pgm(操作S151)。
此外,参照图10,内部操作系统OS_i基于事件信号event_s加载用户程序Pgm(操作S152),并执行用户程序Pgm(操作S153)。
在图6的第Z用户程序PgmZ的情况下,内部操作系统OS_i加载第Z用户程序PgmZ,并将第Z用户程序PgmZ作为内部应用APP_i执行。
内部操作系统OS_i基于存储在计算程序存储器127中的文件数据File_D来执行第Z用户程序PgmZ。
第Z用户程序PgmZ发出针对程序装置PgmD的内部命令CMD_i(操作S154)。第Z用户程序PgmZ将内部命令CMD_i发送给程序装置PgmD(操作S155)。
程序装置PgmD响应于内部命令CMD_i执行内部操作(操作S156)。在图6的第Z用户程序PgmZ的情况下,程序装置PgmD响应于内部命令CMD_i执行在执行Z用户程序PgmZ时所需的垃圾收集执行(GC_copy)操作。
图11是用于解释根据示例实施例的图2的存储系统100a的另一操作的示图。为了易于描述,以下描述将集中于与图6至图10的描述的不同之处。作为参考,图11是用于解释存储在图5的程序槽PS中的另一用户程序Pgm的示图。
图11中示出的操作可包括伴随有数据压缩的垃圾收集(GC)操作(GC w/Compression)。图11的操作是用户程序Pgm的示例,并且示例实施例不限于该示例。
例如,垃圾收集操作的目标存储器块可被称为受害块。图11的操作包括以下操作:压缩非易失性存储器装置NVM的受害块VB的有效数据PG_A、PG_C和PG_E,将压缩后的数据pg_a'、pg_c'和pg_e'写入目标块DB,然后对受害块VB进行擦除。在垃圾收集操作中,非易失性存储器装置NVM的受害块VB的无效数据PG_B和PG_D可在擦除操作中被清理。
如在图6至图10的操作中一样,内部操作系统OS_i可通过执行用户程序Pgm,基于FTL 123的垃圾收集(GC)操作来执行图11的操作。
根据一些示例实施例的计算存储装置120可使用通过主机装置110下载的用户程序Pgm来执行各种计算操作,并且用户程序Pgm可应用作为计算存储装置120内部的功能块的程序装置PgmD。
此外,计算存储装置120可根据通过主机装置100提供的包括执行条件的执行命令Execution CMD来执行内部操作。因此,主机装置100可有效地管理计算存储装置120的内部操作。
图12是示出根据示例实施例的存储系统的操作的流程图。为了易于描述,以下描述将集中于与图3的描述的不同之处。为了易于描述,将不再重复图3中已提供的描述。
与图3的操作相比,与操作S110对应的下载用户程序和与操作S130对应的注册用户程序的执行条件被依次执行。(操作S210)。
在用户程序的执行条件被注册之后,将文件数据File_D从主机文件系统FS_h发送给计算程序存储器127(与操作120对应的操作S220)被执行。
接下来,与操作S140对应的发送事件信号(操作S230)和与操作S150对应的执行用户程序(操作S240)被执行。
图13是用于解释根据示例实施例的一些存储系统的框图。为了易于描述,以下描述将集中于与图2的描述的不同之处。为了易于描述,将不再重复图2中已提供的描述。
事件处理器126可以以软件、固件或它们的组合的形式实现在内部操作系统OS_i中。如存储系统100b中示出的,事件处理器126被实现在内部操作系统OS_i中。在一个示例实施例中,事件处理器126可经由操作系统(例如,内部操作系统OS_i)通过处理器(例如,CPU 121、硬件加速器122等)来执行。
因此,内部操作系统OS_i在事件发生时间event从程序装置PgmD接收槽ID#Pgm和参数数据para_D。
在内部操作系统OS_i中,事件处理器126加载与槽ID#Pgm对应的用户程序Pgm。
图14是用于解释根据示例实施例的一些存储系统的框图。为了易于描述,以下描述将集中于与图2的描述的不同之处。为了易于描述,将不再重复图2中已提供的描述。
与设置了单独的计算程序存储器127的图2相比,在存储系统100c中,文件数据File_D从主机文件系统FS_h提供给内部存储器124',并且被存储在内部存储器124'中,内部操作系统OS_i基于存储在内部存储器124'中的文件数据File_D来执行用户程序Pgm。
图15是用于解释根据示例实施例的存储控制器CTRL与非易失性存储器装置NVM之间的通信的示图。参照图15,存储装置可包括存储控制器CTRL和非易失性存储器装置NVM。参照图15描述了存储控制器CTRL与非易失性存储器装置NVM之间的一个通信通道,但是示例实施例不限于此。存储控制器CTRL和其他非易失性存储器装置可通过与参照图15描述的通道类似的一个通道或多个通道彼此通信。
存储控制器CTRL可包括第一接口电路IF_C。在一个示例实施例中,第一接口电路IF_C可以是包括在存储器接口块(诸如,上述存储器接口块129)中的电路。
第一接口电路IF_C可包括第一信号引脚P21至第八信号引脚P28。存储控制器CTRL可通过第一接口电路IF_C的信号引脚P21至P28将各种信号发送给非易失性存储器装置NVM。例如,存储控制器CTRL可通过第一信号引脚P21将芯片使能信号nCE发送给非易失性存储器装置NVM,通过第二信号引脚P22将命令锁存使能信号CLE发送给非易失性存储器装置NVM,通过第三信号引脚P23将地址锁存使能信号ALE发送给非易失性存储器装置NVM,通过第四信号引脚P24将写入使能信号nWE发送给非易失性存储器装置NVM,通过第五信号引脚P25将读取使能信号nRE发送给非易失性存储器装置NVM,通过第六信号引脚P26与非易失性存储器装置NVM交换数据选通信号DQS,通过第七信号引脚P27与非易失性存储器装置NVM交换数据信号DQ,并且通过第八信号引脚P28从非易失性存储器装置NVM接收就绪信号(或忙碌信号)nR/B。在一个示例实施例中,第七信号引脚P27可根据实现方法包括多个引脚。
非易失性存储器装置NVM可包括第二接口电路IF_M、控制逻辑电路CL和存储器单元阵列MCA。第二接口电路IF_M可包括第一信号引脚P11至第八信号引脚P18。第二接口电路IF_M可通过第一信号引脚P11至第八信号引脚P18从存储控制器CTRL接收各种信号。例如,非易失性存储器装置NVM可通过第一信号引脚P11从存储控制器CTRL接收芯片使能信号nCE,通过第二信号引脚P12从存储控制器CTRL接收命令锁存使能信号CLE,通过第三信号引脚P13从存储控制器CTRL接收地址锁存使能信号ALE,通过第四信号引脚P14从存储控制器CTRL接收写入使能信号nWE,通过第五信号引脚P15从存储控制器CTRL接收读取使能信号nRE,通过第六信号引脚P16与存储控制器CTRL交换数据选通信号DQS,通过第七信号引脚P17与存储控制器CTRL交换数据信号DQ,并且通过第八信号引脚P18将就绪信号(或忙碌信号)nR/B发送给存储控制器CTRL。
第二接口电路IF_M可基于写入使能信号nWE的切换时序,从在命令锁存使能信号CLE的使能时段中(例如,高电平状态下)接收的数据信号DQ获得命令CMD。第二接口电路IF_M可基于写入使能信号nWE的切换时序,从在地址锁存使能信号ALE的使能时段中(例如,高电平状态下)接收的数据信号DQ获得地址ADDR。
在一个示例实施例中,写入使能信号nWE可维持静态(例如,高电平或低电平),并且可在高电平与低电平之间切换。例如,写入使能信号nWE可在命令CMD或地址ADDR被发送的时段中切换。因此,第二接口电路IF_M可基于写入使能信号nWE的切换时序来获得命令CMD或地址ADDR。
在非易失性存储器装置NVM的数据输出操作中,第二接口电路IF_M可在输出数据DATA之前通过第五信号引脚P15接收切换的读取使能信号nRE。第二接口电路IF_M可基于读取使能信号nRE的切换而生成切换的数据选通信号DQS。例如,第二接口电路IF_M可生成在从读取使能信号nRE的切换开始时间起的预定延迟(例如,tDQSRE)之后开始切换的数据选通信号DQS。
第二接口电路IF_M可与数据选通信号DQS的切换时序同步地发送包括数据DATA的数据信号DQ。因此,数据DATA可与数据选通信号DQS的切换时序对齐并且被发送给存储控制器CTRL。
在非易失性存储器装置NVM的数据输入操作中,第二接口电路IF_M可从存储控制器CTRL与包括数据DATA的数据信号DQ一起接收切换的数据选通信号DQS。第二接口电路IF_M可基于数据选通信号DQS的切换时序从数据信号DQ获得数据DATA。例如,第二接口电路IF_M可通过在数据选通信号DQS的上升沿和下降沿对数据信号DQ进行采样来获得数据DATA。
第二接口电路IF_M可通过第八信号引脚P18将就绪/忙碌输出信号nR/B发送给存储控制器CTRL。当非易失性存储器装置NVM处于忙碌状态时(即,当内部操作正被执行时),第二接口电路IF_M可将指示忙碌状态的就绪/忙碌输出信号nR/B发送给存储控制器CTRL。当非易失性存储器装置NVM处于就绪状态时(即,当内部操作未被执行或被完成时),第二接口电路IF_M可将指示就绪状态的就绪/忙碌碌输出信号nR/B发送给存储控制器CTRL。
控制逻辑电路CL可总体控制非易失性存储器装置NVM的各种操作。控制逻辑电路CL可从第二接口电路IF_M接收所获得的命令CMD/地址ADDR。控制逻辑电路CL可根据接收的命令CMD/地址ADDR,生成用于控制非易失性存储器装置NVM的其他组件的控制信号。
存储器单元阵列MCA可在控制逻辑电路CL的控制下,对从第二接口电路IF_M获得的数据DATA进行存储。存储器单元阵列MCA可在控制逻辑电路CL的控制下,将存储的数据DATA输出到第二接口电路IF_M。
存储器单元阵列MCA可包括多个存储器单元。例如,存储器单元可以是闪存单元。然而,示例实施例不限于此,并且存储器单元还可以是RRAM单元、FRAM单元、PRAM单元、晶闸管随机存取存储器(TRAM)单元或MRAM单元。
图16示出根据示例实施例的系统1000。参照图16,系统1000可以是移动系统(诸如,便携式通信终端(移动电话)、智能电话、平板个人计算机、可穿戴装置、医疗保健装置或IOT装置)。系统1000不必限于移动系统,并且还可以是个人计算机、膝上型计算机、服务器、媒体播放器或汽车装置(诸如,导航装置)。
系统1000可包括主处理器1100、存储器1200a至1200b和存储装置1300a至1300b,并且还可包括图像拍摄装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、电力供应装置1470和连接接口1480中的一个或多个。
主处理器1100可控制系统1000的总体操作,更具体地,可控制构成系统1000的其他组件的操作。主处理器1100可被实现为通用处理器、专用处理器或应用处理器。
主处理器1100可包括一个或多个CPU核1110,并且还可包括用于控制存储器1200a至1200b和/或存储装置1300a至1300b的控制器1120。根据示例实施例,主处理器1100还可包括作为用于高速数据操作(诸如,人工智能(AI)数据操作)的专用电路的加速器1130。加速器1130可包括图形处理器(GPU)、神经处理器(NPU)和/或数据处理器(DPU),并且可被实现为在物理上独立于主处理器1100的其他组件的单独的芯片。
存储器1200a至1200b可用作系统1000的主存储器装置,并且可包括易失性存储器(诸如,静态随机存取存储器(SRAM)/或动态随机存取存储器(DRAM)),但是也可包括非易失性存储器(诸如,闪存、PRAM和/或RRAM)。存储器1200a至1200b也可与主处理器1100实现在同一封装件中。在一个示例实施例中,存储器1200a至1200b可作为上述主机存储器进行操作。
存储装置1300a至1300b可用作不管电力是否被供应都存储数据的非易失性存储装置,并且可具有比存储器1200a至1200b相对大的存储容量。存储装置1300a至1300b可分别包括存储控制器(STRG CTRL)1310a至1310b和非易失性存储器1320a至1320b,非易失性存储器1320a至1320b在存储控制器1310a至1310b的控制下存储数据。非易失性存储器1320a至1320b可包括具有2D结构或3D垂直NAND(VNAND)结构的闪存,但是也可包括其他类型的非易失性存储器(诸如,PRAM和/或RRAM)。
包括在系统1000中的存储装置1300a至1300b可在物理上与主处理器1100分离,或者可与主处理器1100实现在同一封装件中。此外,存储装置1300a至1300b可以是SSD或存储卡的形式,从而可通过接口(诸如,稍后将描述的连接接口1480)可拆卸地连接到系统1000的其他组件。存储装置1300a至1300b可以是但不必限于应用了标准协议(诸如,UFS、eMMC或NVMe)的装置。
在一个示例实施例中,存储装置1300a至1300b可被配置为在主处理器1100的控制下执行各种操作,并且可以是参照图1至图15描述的计算存储装置。在一个示例实施例中,存储装置1300a至1300b可被配置为运行或执行通过加速器1130执行的功能中的一些。
图像拍摄装置1410可拍摄静止图像或运动图像,并且可以是相机、摄像机和/或网络摄像头。
用户输入装置1420可从系统1000的用户接收各种类型的数据,并且可以是触摸板、小键盘、键盘、鼠标和/或麦克风。
传感器1430可检测可从系统1000外部获得的各种类型的物理特性,并且可将检测到的物理特性转换成电信号。传感器1430可是温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
通信装置1440可根据各种通信协议,将信号发送给系统1000外部的其他装置和从系统1000外部的其他装置接收信号。通信装置1440可包括天线、收发器和/或调制解调器。
显示器1450和扬声器1460可用作分别将输出视觉信息和音频信息输出到系统1000的用户的输出装置。
电力供应装置1470可适当地转换从嵌入在系统1000中的电池和/或外部电源供应的电力,并且将电力供应给系统1000的每个组件。
连接接口1480可提供系统1000与外部装置之间的连接,该外部装置连接到系统1000以与系统1000交换数据。连接接口1480可被实现为各种接口(诸如,ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB、SD卡、MMC、eMMC、UFS、eUFS和CF卡接口)。
图17是根据示例实施例的数据中心2000的框图。数据中心2000是管理各种数据并提供关于各种数据的各种服务的设施。因此,数据中心2000也可被称为数据存储中心。数据中心2000可以是用于操作搜索引擎或数据库的系统,并且可以是通过各种机构使用的计算系统。数据中心2000可包括多个应用服务器2100_1至2100_n和多个存储服务器2200_1至2200_m。应用服务器2100_1至2100_n的数量和存储服务器2200_1至2200_m的数量可被不同地改变。
为了易于描述,将描述第一存储服务器2200_1作为示例。其他存储服务器2200_2至2200_m和应用服务器2100_1至2100_n中的每个可具有与第一存储服务器2200_1的结构类似的结构。
第一存储服务器2200_1可包括处理器2210_1、存储器2220_1、交换机2230_1、网络接口连接(NIC)2240_1和存储装置2250_1。处理器2210_1可控制第一存储服务器2200_1的总体操作。存储器2220_1可在处理器2210_1的控制下存储各种命令或数据。处理器2210_1可被配置为访问存储器2220_1并执行各种命令和/或处理数据。在一个示例实施例中,存储器2220_1可包括各种类型的存储器装置(诸如,双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插式存储器模块(DIMM)、傲腾DIMM(Optane DIMM)和非易失性DIMM(NVDIMM))中的至少一者。
在一个示例实施例中,包括在第一存储服务器2200_1中的处理器2210_1的数量和存储器2220_1的数量可被不同地改变。在一个示例实施例中,包括在第一存储服务器2200_1中的处理器2210_1和存储器2220_1可形成处理器-存储器对(processor-memory pair),并且包括在第一存储服务器2200_1中的处理器-存储器对的数量可被不同地改变。在一个示例实施例中,包括在第一存储服务器2200_1中的处理器2210_1的数量和存储器2220_1的数量可彼此不同。处理器2210_1可包括单核处理器或多核处理器。
交换机2230_1可在处理器2210_1的控制下选择性地连接处理器2210_1和存储装置2250_1或者选择性地连接NIC 2240_1和存储装置2250_1。
NIC 2240_1可被配置为将第一存储服务器2200_1连接到网络NT。NIC2240_1可包括网络接口卡、网络适配器等。NIC 2240_1可通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络NT。NIC 2240_1可包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可通过主机总线接口连接到处理器2210_1或交换机2230_1。主机总线接口可包括各种接口(诸如,ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB、SD卡、MMC、eMMC、UFS、eUFS和CF卡接口)中的至少一者。在一个示例实施例中,NIC 2240_1可与处理器2210_1、交换机2230_1和存储装置2250_1中的至少一个集成。
存储装置2250_1可在处理器2210_1的控制下存储数据或输出存储的数据。存储装置2250_1可包括控制器(CTRL)2251_1、非易失性存储器2252_1(例如,NAND)、DRAM 2253_1和接口(I/F)2254_1。在一个示例实施例中,存储装置2250_1还可包括用于安全或隐私的安全元件(SE)。
控制器2251_1可控制存储装置2250_1的总体操作。在一个示例实施例中,控制器2251_1可包括SRAM。控制器2251_1可响应于通过接口2254_1接收的信号,将数据存储在非易失性存储器2252_1中或者输出存储在非易失性存储器2252_1中的数据。在一个示例实施例中,控制器2251_1可被配置为基于切换(toggle)接口或ONFI接口来控制非易失性存储器2252_1。
DRAM 2253_1可被配置为临时存储将被存储在非易失性存储器2252_1中的数据或从非易失性存储器2252_1读取的数据。DRAM 2253_1可被配置为存储控制器2251_1的操作所需的各种数据(例如,元数据和映射数据)。接口2254_1可提供处理器2210_1、交换机2230_1或NIC 2240_1与控制器2251_1之间的物理连接。在一个示例实施例中,接口2254_1可被实现为将存储装置2250_1直接连接到专用电缆的直连式存储(DAS)接口。在一个示例实施例中,接口2254_1可通过主机总线接口基于上述各种接口中的至少一者来配置。
上述第一存储服务器2200_1的组件仅是示例,并且示例实施例不限于此。上述第一存储服务器2200_1的组件可被应用于其他存储服务器或应用服务器中的每个。在一个示例实施例中,可从应用服务器2100_1或2100_n选择性地省略存储装置2150_1或2150_n。
应用服务器2100_1至2100_n和存储服务器2200_1至2200_m可通过网络NT彼此通信。网络NT可使用光纤通道(FC)或以太网来实现。这里,FC可以是用于相对高速数据传输的介质,并且可使用提供高性能/高可用性的光学开关(opticalswitch)。存储服务器2200_1至2200_m可根据网络NT的访问方法被提供为文件存储装置、块存储装置或对象存储装置。
在一个示例实施例中,网络NT可以是存储专用网络(诸如,存储区域网络(SAN))。例如,SAN可以是使用FC网络并且根据FC协议(FCP)实现的FC-SAN。可选择地,SAN可以是使用TCP/IP网络并且根据通过TCP/IP的SCSI或互联网SCSI(iSCSI)协议实现的IP-SAN。在一个示例实施例中,网络NT可以是通用网络(诸如,TCP/IP网络)。例如,网络NT可根据协议(诸如,通过以太网的FC(FCoE)、网络附接存储(NAS)或通过网络的NVMe(NVMe-oF))来实现。
在一个示例实施例中,应用服务器2100_1至2100_n中的至少一个可被配置为通过网络NT访问应用服务器2100_1至2100_n中的至少另一个或存储服务器2200_1至2200_m中的至少一个。
例如,第一应用服务器2100_1可通过网络NT将用户或客户端请求的数据存储在存储服务器2200_1至2200_m中的至少一个中。可选择地,第一应用服务器2100_1可通过网络NT从存储服务器2200_1至2200_m中的至少一个获得用户或客户端请求的数据。在这种情况下,第一应用服务器2100_1可被实现为网络(web)服务器或数据库管理系统(DBMS)。
也就是说,第一应用服务器2100_1的处理器2110_1可通过网络NT访问包括在另一应用服务器(例如,2100_n)中的存储器2120_n或存储装置2150_n。可选择地,第一应用服务器2100_1的处理器2110_1可通过网络NT访问第一存储服务器2200_1的存储器2220_1或存储装置2250_1。因此,第一应用服务器2100_1可对存储在其他应用服务器2100_2至2100_n或存储服务器2200_1至2200_m中的数据执行各种操作。例如,第一应用服务器2100_1可执行或发出用于在其他应用服务器2100_2至2100_n或存储服务器2200_1至2200_m之间传送或复制数据的命令。在这种情况下,传送或复制的数据可经由存储服务器2200_1至2200_m的存储器2220_1至2220_m或直接地从存储服务器2200_1至2200_m的存储装置2250_1至2250_m传送到应用服务器2100_1至2100_n的存储器2120_1至2120_n。通过网络NT传送的数据可以是为了安全或隐私而被加密的数据。
在一个示例实施例中,存储装置2150_1至2150_n和2250_1至2250_m可以是参照图1至15描述的计算存储装置,并且可被配置为执行各种计算操作。如参照图1至图15描述的那样,存储装置2150_1至2150_n和2250_1至2250_m可处理在通过它们的各个接口执行各种内部操作时生成的内部I/O。
根据示例实施例,通过附图中的框表示的组件、元件、模块或单元(在本段中统称为“组件”)中的至少一个可被实现为执行上述相应功能的各种数量的硬件结构、软件结构和/或固件结构。这些组件可包括例如图1、图2、图5、图7至图10、图13和图14中示出的主机控制器111、主机存储器112、CPU 121、硬件加速器122、FTL 123、内部存储器124、包管理器125、事件处理器126、计算程序存储器127、主机接口块128、存储器接口块129、存储控制器CTRL,但不限于此。这些组件中的至少一个可使用通过一个或多个微处理器或其他控制设备的控制来执行相应功能的直接电路结构(诸如,存储器、处理器、逻辑电路、查找表等)。此外,这些组件中的至少一个可通过模块、程序或代码的一部分来具体实现,模块、程序或代码的一部分包含用于执行特定逻辑功能的一个或多个可执行指令并且通过一个或多个微处理器或其他控制设备来执行。此外,这些组件中的至少一个可包括处理器(诸如,执行相应功能的中央处理器(CPU)、微处理器等)或可通过处理器(诸如,执行相应功能的中央处理器(CPU)、微处理器等)来实现。这些组件中的两个或更多个可组合成一个单个组件,该单个组件执行被组合的两个或更多个组件的所有操作或功能。此外,这些组件中的至少一个的至少一部分功能可通过这些组件中的另外的组件执行。
虽然已具体示出和描述了示例实施例的方面,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。
Claims (20)
1.一种计算存储装置,包括:
非易失性存储器,被配置为存储数据;以及
存储控制器,被配置为基于所述数据来控制将被执行的多个应用,
其中,存储控制器包括:
处理器;以及
存储器,包括被配置为存储用户程序的程序槽,
其中,处理器被配置为:驱动操作系统基于事件信号执行用户程序,以控制所述多个应用之中的应用对所述数据执行第一操作。
2.根据权利要求1所述的计算存储装置,其中,用户程序基于外部命令被存储在程序槽中。
3.根据权利要求2所述的计算存储装置,其中,用户程序作为扩展的伯克利包过滤器被存储在程序槽中。
4.根据权利要求1所述的计算存储装置,其中,处理器还被配置为:驱动操作系统,以控制所述应用发出针对第一操作的内部命令。
5.根据权利要求1所述的计算存储装置,其中,处理器还被配置为:控制事件处理器根据与第一操作对应的执行条件来确定所述应用。
6.根据权利要求5所述的计算存储装置,其中,执行条件包括逻辑块地址参数。
7.根据权利要求5所述的计算存储装置,其中,事件处理器经由操作系统通过处理器来执行。
8.根据权利要求1所述的计算存储装置,其中,第一操作包括垃圾收集操作或写入操作。
9.根据权利要求1至权利要求8中的任意一项所述的计算存储装置,其中,存储器被配置为存储从外部输入的文件数据,并且用户程序基于文件数据被执行。
10.根据权利要求9所述的计算存储装置,其中,存储器包括:
计算程序存储器,被配置为存储文件数据;以及
内部存储器,被配置为存储程序槽。
11.一种计算存储装置,包括:
非易失性存储器,被配置为存储数据;
存储控制器,被配置为基于所述数据来控制将被执行的多个应用;以及
处理器,被配置为:根据外部命令重新配置事件处理器,控制事件处理器根据包括在外部命令中的执行条件而在所述多个应用之中确定应用,并且根据执行条件执行所述应用,
其中,存储控制器还被配置为:根据外部命令重新配置处理器。
12.根据权利要求11所述的计算存储装置,其中,处理器被设置在存储控制器中,并且还被配置为驱动操作系统,以通过操作系统执行所述应用。
13.根据权利要求12所述的计算存储装置,其中,存储控制器还包括存储器,存储器包括被配置为存储通过操作系统执行的用户程序的程序槽,并且处理器还被配置为:驱动操作系统根据执行条件执行用户程序,以控制所述应用。
14.根据权利要求13所述的计算存储装置,其中,用户程序基于外部命令被存储在程序槽中。
15.根据权利要求14所述的计算存储装置,其中,外部命令包括针对用户程序的第一外部命令和针对执行条件的第二外部命令。
16.根据权利要求11至权利要求15中的任意一项所述的计算存储装置,其中,执行条件包括逻辑块地址参数。
17.一种电子系统,包括:
非易失性存储器,被配置为存储数据;
存储控制器,包括处理器和存储器,存储器包括被配置为存储通过内部操作系统执行的用户程序的程序槽;以及
主机装置,被配置为将针对用户程序的下载命令提供给存储控制器,
其中,内部操作系统被配置为:基于下载命令将用户程序存储在程序槽中,执行用户程序,以控制多个应用中的应用对所述数据执行第一操作。
18.根据权利要求17所述的电子系统,其中,主机装置被配置为:在提供下载命令之后,将包括用于第一操作的执行条件的执行命令提供给存储控制器,并且处理器还被配置为:控制事件处理器根据执行条件而在所述多个应用之中确定所述应用。
19.根据权利要求18所述的电子系统,其中,事件处理器经由内部操作系统通过处理器来执行。
20.根据权利要求17所述的电子系统,其中,用户程序作为扩展的伯克利包过滤器被存储在程序槽中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0121030 | 2021-09-10 | ||
KR1020210121030A KR20230037906A (ko) | 2021-09-10 | 2021-09-10 | 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115933968A true CN115933968A (zh) | 2023-04-07 |
Family
ID=83232576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211082337.2A Pending CN115933968A (zh) | 2021-09-10 | 2022-09-06 | 计算存储装置和电子系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230084539A1 (zh) |
EP (1) | EP4148572B1 (zh) |
KR (1) | KR20230037906A (zh) |
CN (1) | CN115933968A (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
-
2021
- 2021-09-10 KR KR1020210121030A patent/KR20230037906A/ko unknown
-
2022
- 2022-03-08 US US17/689,049 patent/US20230084539A1/en active Pending
- 2022-09-06 CN CN202211082337.2A patent/CN115933968A/zh active Pending
- 2022-09-07 EP EP22194360.8A patent/EP4148572B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP4148572B1 (en) | 2024-05-15 |
EP4148572A1 (en) | 2023-03-15 |
US20230084539A1 (en) | 2023-03-16 |
KR20230037906A (ko) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9817652B2 (en) | Data storage device and method for reducing firmware update time and data processing system including the device | |
US11645011B2 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
WO2013092121A1 (en) | Solid-state storage management | |
US20230229357A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US20240037027A1 (en) | Method and device for storing data | |
US20230393959A1 (en) | Out-of-band management method for storage apparatus, baseboard management controller and storage apparatus | |
KR102425470B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20230071730A (ko) | 데이터 프로세싱 장치 및 그것의 동작 방법 | |
EP3992799A1 (en) | Electronic device and automotive device | |
CN114281245A (zh) | 同步写方法及装置、存储系统、电子设备 | |
CN114647374A (zh) | 执行处理代码的存储装置和存储装置的操作方法 | |
EP4148572A1 (en) | Computational storage device and storage system including the computational storage device | |
CN114510372A (zh) | 储存装置及其操作方法 | |
US20230153237A1 (en) | Method and device for storing data | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
US20230393749A1 (en) | Method and device of storage data | |
US20230325110A1 (en) | Operation method of host device and operation method of storage device | |
EP4246330A1 (en) | Storage device and operating method thereof | |
EP4258097A1 (en) | Operation method of host device and operation method of storage device | |
US20230325093A1 (en) | Storage device and operating method thereof | |
US20230384960A1 (en) | Storage system and operation method therefor | |
KR20230067439A (ko) | 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치 | |
CN116108442A (zh) | 安全处理器及其操作方法和包括该安全处理器的存储装置 | |
KR20230169885A (ko) | 영구 메모리 장치 및 컴퓨팅 시스템 | |
CN116893877A (zh) | 主机装置的操作方法及存储装置的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |