CN116027969A - 存储设备 - Google Patents
存储设备 Download PDFInfo
- Publication number
- CN116027969A CN116027969A CN202211291412.6A CN202211291412A CN116027969A CN 116027969 A CN116027969 A CN 116027969A CN 202211291412 A CN202211291412 A CN 202211291412A CN 116027969 A CN116027969 A CN 116027969A
- Authority
- CN
- China
- Prior art keywords
- data
- graphics data
- metadata
- memory
- storage device
- 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
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/0658—Controller construction arrangements
-
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0653—Monitoring storage devices or systems
-
- 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/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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了一种具有改进的性能和效率的存储设备。一种存储设备,包括:控制器,被配置为接收来自外部设备的预处理指令命令;非易失性存储器,被配置为存储原始图形数据;以及缓冲存储器,连接到控制器和非易失性存储器,其中,控制器被配置为:从非易失性存储器加载原始图形数据,响应于预处理指令命令通过根据向量相似度对原始图形数据进行分类来生成预处理图形数据,基于预处理图形数据生成元数据,以及将预处理图形数据和元数据提供给非易失性存储器,非易失性存储器被配置为将预处理图形数据和元数据存储在数据块中,并且缓冲存储器被配置为缓冲原始图形数据、预处理图形数据和元数据。
Description
相关申请的交叉引用
本申请要求于2021年10月26日在韩国知识产权局提交的韩国专利申请No.10-2021-0143213的优先权,其全部内容通过引用并入本文。
技术领域
实施例涉及存储设备。
背景技术
半导体存储器件包括易失性存储器件和非易失性存储器件。易失性存储器件具有快速的读取和写入速度,并且同时,易失性存储器件在断电时可能会丢失其存储的内容。相反,由于非易失性存储器件即使在断电时也保留其存储的内容,因此非易失性存储器件用于存储需要保留的内容,而与供电无关。
例如,易失性存储器件包括静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)等。非易失性存储器件即使在断电时仍保留其存储的内容。例如,非易失性存储器件可以被分类为ROM(只读存储器)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁性RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。闪存可以被分类为NOR型闪存和NAND型闪存。
发明内容
实施例涉及一种存储设备,包括:控制器,被配置为接收来自外部设备的预处理指令命令;非易失性存储器,被配置为存储原始图形数据;以及缓冲存储器,连接到控制器和非易失性存储器,其中,控制器被配置为:从非易失性存储器加载原始图形数据,响应于预处理指令命令通过根据向量相似度对原始图形数据进行分类来生成预处理图形数据,基于预处理图形数据生成元数据,并且将预处理图形数据和元数据提供给非易失性存储器,非易失性存储器被配置为将预处理图形数据和元数据存储在数据块中,并且缓冲存储器被配置为缓冲原始图形数据、预处理图形数据和元数据。
实施例涉及一种存储设备,包括:非易失性存储器,被配置为包括多个数据块并存储原始图形数据;缓冲存储器,被配置为缓冲原始图形数据;以及FPGA,被配置为:从缓冲存储器加载原始图形数据,基于缓冲存储器的数据容量和原始图形数据的传输速率中的至少一个确定非易失性存储器的多个数据块中的第一数据块的块大小,并且将原始图形数据中的第一图形数据存储在第一数据块中。
实施例涉及一种存储设备,包括:控制器,被配置为从外部设备接收预处理指令命令和查询;以及非易失性存储器,被配置为存储原始图形数据,其中,控制器被配置为:响应于预处理指令命令,基于原始图形数据生成预处理图形数据,并将预处理图形数据存储在非易失性存储器中,响应于查询加载预处理图形数据,以及基于预处理图形数据输出响应信号。
附图说明
通过参照附图详细描述示例实施例,特征对于本领域技术人员将变得显而易见,在附图中:
图1是根据一些示例实施例的存储器系统的框图。
图2是图1的非易失性存储器的框图。
图3是图1的存储控制器和非易失性存储器的框图。
图4是示出了根据一些示例实施例的存储器单元阵列的示例电路图。
图5是根据一些示例实施例的FPGA的框图。
图6是根据一些示例实施例的对原始图形数据执行预处理的存储器系统的框图。
图7是用于说明图6的存储器系统的操作的梯形图。
图8是用于说明图6的FPGA的操作的流程图。
图9是用于说明存储在第二存储器单元阵列中的多个数据集的图。
图10是用于说明根据一些示例实施例的包括加速器的FPGA的操作的图。
图11是用于说明根据一些示例实施例的包括加速器的FPGA的操作的图。
图12是用于说明根据一些示例实施例的元数据的图。
图13是根据一些示例实施例的响应于查询的存储器系统的框图。
图14是用于说明图13的存储器系统的操作的梯形图。
图15是用于说明图13的FPGA的计算操作的框图。
图16是根据一些示例实施例的存储器系统的框图。
图17是根据一些示例实施例的存储器系统的框图。
图18是根据一些示例实施例的包括存储设备的数据中心的图。
具体实施方式
图1是根据一些示例实施例的存储器系统的框图。
参照图1,存储器系统1可以包括主机设备20和存储设备10。主机设备20可以包括主机控制器201和主机存储器202。主机控制器201可以控制主机设备20的整体操作。主机存储器202可以临时存储从外部发送的数据、要向存储设备10发送的数据、或者从存储设备10发送的数据。主机设备20可以被实现为应用处理器(AP)。
存储设备10可以包括现场可编程门阵列(FPGA)100、存储控制器200、第一缓冲存储器300和非易失性存储器400。
存储设备10可以包括用于响应来自主机设备20的请求存储数据的存储介质。作为示例,存储设备10可以包括SSD(固态驱动器)、嵌入式存储器和可拆卸外部存储器中的至少一种。当存储设备10是SSD时,存储设备10可以是符合NVMe(非易失性存储器规范)标准的设备。当存储设备10是嵌入式存储器或外部存储器时,存储设备10可以是符合UFS(通用闪存)或eMMC(嵌入式多媒体卡)标准的设备。存储设备10和主机设备20可以各自根据所采用的标准协议来生成和发送分组。
当存储设备10的非易失性存储器400包括闪存时,闪存可以包括2D NAND存储器阵列或3D(或竖直)NAND(VNAND)存储器阵列。作为另一示例,存储设备10还可以包括各种其他类型的非易失性存储器。例如,MRAM(磁性RAM)、自旋转移扭矩MRAM、导电桥接RAM(CBRAM)、FeRAM(铁电RAM)、PRAM(相位RAM)、电阻式存储器(电阻式RAM)和其他各种类型的存储器可以用作存储设备10。
FPGA 100可以对存储在第一缓冲存储器300中的数据执行各种类型的计算、运算等。FPGA 100可以使用映射到硬件逻辑配置的算法,使用临时存储在第一缓冲存储器300中的数据集来执行计算。FPGA 100可以使用存储在非易失性存储器400中的数据集来执行计算,而无需主机设备20的干预。即,包括根据本示例实施例的FPGA 100的存储设备10将数据集提供给主机设备20,主机设备20不执行数据集的计算处理以使用存储在非易失性存储器400中的数据集来处理计算,并且存储设备10通过FPGA 100自行完成计算,并且可以将计算结果数据提供给主机设备20。下面将提供对FPGA 100的更详细描述。
存储控制器200可以包括主机接口211、存储器接口212和CPU(中央处理单元)213。此外,存储控制器200可以包括闪存转换层(FTL)214、分组管理器215、第二缓冲存储器216、ECC(纠错码)引擎217和AES(高级加密标准)引擎218。存储控制器200还可以包括工作存储器(未示出),闪存转换层(FTL)214加载到该工作存储器中,并且CPU 213可以执行闪存转换层以对非易失性存储器400执行数据写入和读取操作。
主机接口211可以向主机设备20发送分组,以及从主机设备20接收分组。从主机设备20发送到主机接口211的分组可以包括要写入非易失性存储器400中的命令或数据,并且从主机接口211发送到主机设备20的分组可以包括对命令的响应、从非易失性存储器400读取的数据等。存储器接口212可以向非易失性存储器400发送要写入非易失性存储器400中的数据或接收从非易失性存储器400读取的数据。存储器接口212可以被实现为符合标准协议,例如,Toggle或ONFI(开放NAD闪存接口)。
闪存转换层214可以执行若干功能,例如,地址映射、磨损均衡和垃圾收集。地址映射操作是将从主机设备20接收到的逻辑地址改变为用于将数据实际存储在非易失性存储器400中的物理地址的操作。磨损均衡是一种用于使非易失性存储器400中的块被统一使用以防止特定块过度退化的技术,并且可以例如通过用于平衡物理块的擦除计数的固件技术来实现。垃圾收集是一种用于通过将块的有效数据复制到新块然后擦除现有块的方法来确保非易失性存储器400中的可用容量的技术。
分组管理器215可以根据与主机设备20讨论的接口的协议生成分组,或者可以从主机设备20接收到的分组中解析各种类型的信息。
第二缓冲存储器216可以临时存储要写入非易失性存储器400中的数据或要从非易失性存储器400读取的数据。第二缓冲存储器216可以被配置为设置在存储控制器200的内部,但也可以放置在存储控制器200的外部。
ECC引擎217可以对从非易失性存储器400读取的读取数据执行错误检测和校正功能。更具体地,ECC引擎217可以对要写入非易失性存储器400中的数据生成奇偶校验比特,并且由此生成的奇偶校验比特可以与写入数据一起存储在非易失性存储器400中。当从非易失性存储器400读取数据时,ECC引擎217可以使用从非易失性存储器400读取的奇偶校验比特与读取数据一起校正读取数据的错误,并且可以输出已校正错误的读取数据。
AES引擎218可以使用对称密钥算法对输入到存储控制器200的数据执行加密操作和解密操作中的至少一个操作。
第一缓冲存储器300可以缓冲存储在非易失性存储器400中的数据。此外,第一缓冲存储器300可以缓冲从FPGA 100传输的数据。即,当FPGA 100使用存储在非易失性存储器400中的数据集时,第一缓冲存储器300可以临时存储存储在非易失性存储器400中的数据集,使得FPGA 100可以使用该数据集。非易失性存储器400可以存储在FPGA 100执行计算时使用的数据集。
图2是图1的非易失性存储器的框图。
参照图2,非易失性存储器400可以包括存储器单元阵列410、地址解码器420、电压发生器430、读/写电路440和控制逻辑电路450。
存储器单元阵列410可以通过字线WL连接到地址解码器420。存储器单元阵列410可以通过位线BL连接到读/写电路440。存储器单元阵列410可以包括多个存储器单元。例如,沿行方向布置的存储器单元可以连接到字线WL。例如,沿列方向布置的存储器单元可以连接到位线BL。
地址解码器420可以通过字线WL连接到存储器单元阵列410。地址解码器420可以响应于控制逻辑电路450的控制而操作。可以向地址解码器420提供来自存储控制器200的地址ADDR。可以向地址解码器420供应来自电压发生器430的用于诸如编程或读取操作的电压。
地址解码器420可以对接收到的地址ADDR的行地址进行解码。地址解码器420可以使用解码的行地址来选择字线WL。可以向读/写电路440提供解码的列地址DCA。例如,地址解码器420可以包括行解码器、列解码器、地址缓冲器等。
电压发生器430可以根据控制逻辑电路450的控制生成用于访问操作的电压。例如,电压发生器430可以生成用于执行编程操作的编程电压和编程验证电压。例如,电压发生器430可以生成用于执行读取操作的读取电压,并且可以生成用于执行擦除操作的擦除电压、擦除验证电压等。此外,电压发生器430可以向地址解码器420提供用于执行每个操作的电压。
读/写电路440可以通过位线BL连接到存储器单元阵列410。读/写电路440可以与存储控制器200交换数据DATA。读/写电路440可以响应于控制逻辑电路450的控制而操作。可以向读/写电路440提供从地址解码器420解码的列地址DCA。读/写电路440可以使用解码的列地址DCA来选择位线BL。
例如,读/写电路440可以将接收到的数据DATA编程到存储器单元阵列410中。读/写电路440可以从存储器单元阵列410读取数据,并向外部(例如,存储控制器200)提供读取的数据。例如,读/写电路440可以包括诸如读出放大器、写驱动器、列选择电路和页缓冲器的配置。即,读/写电路440可以将从存储控制器200接收到的数据DATA缓冲到页缓冲器,并将缓冲的数据DATA编程到存储器单元阵列410中。
控制逻辑电路450可以连接到地址解码器420、电压发生器430和读/写电路440。控制逻辑电路450可以控制非易失性存储器400的操作。控制逻辑电路450可以响应于从存储控制器200提供的控制信号CTRL和命令CMD(例如,写入命令、读取命令等)而操作。
图3是图1的存储控制器和非易失性存储器的框图。
参照图3,存储设备10可以包括存储控制器200和非易失性存储器400。存储设备10可以支持多个通道CH1至CHm,并且存储控制器200和非易失性存储器400可以通过多个通道CH1至CHm连接。例如,存储设备10可以被实现为诸如SSD(固态驱动器)的存储设备。
非易失性存储器400可以包括多个非易失性存储器件NVM11至NVMmn。非易失性存储器件NVM11至NVMmn中的每一个非易失性存储器件可以通过相应的方式连接到多个通道CH1至CHm中的一个通道。例如,非易失性存储器件NVM11至NVM1n可以通过路径W11至W1n连接到第一通道CH1,并且非易失性存储器件NVM21至NVM2n可以通过路径W21至W2n连接到第二通道CH2。在示例实施例中,非易失性存储器件NVM11至NVMmn中的每一个非易失性存储器件可以在可以根据来自存储控制器200的单独指令操作的任何存储器单元中实现。例如,非易失性存储器件NVM11至NVMmn中的每一个非易失性存储器件可以被实现为芯片或管芯。
存储控制器200可以通过多个通道CH1至CHm向非易失性存储器400发送信号,以及从非易失性存储器400接收信号。例如,存储控制器200可以通过通道CH1至CHm向非易失性存储器400发送命令CMDa至CMDm、地址ADDRa至ADDRm、以及数据DATAa至DATAm,或者可以从非易失性存储器400接收数据DATAa至DATAm。
存储控制器200可以通过每个通道选择连接到该通道的非易失性存储器件之一,并且可以向所选择的非易失性存储器件发送信号,以及从所选择的非易失性存储器件接收信号。例如,存储控制器200可以在连接到第一通道CH1的非易失性存储器件NVM11至NVM1n中选择非易失性存储器件NVM11。存储控制器200可以通过第一通道CH1向所选择的非易失性存储器件NVM11发送命令CMDa、地址ADDRa和数据DATAa,或者可以从所选择的非易失性存储器件NVM11接收数据DATAa。
存储控制器200可以通过彼此不同的通道并行地向非易失性存储器400发送信号,以及从非易失性存储器400接收信号。例如,存储控制器200可以通过第二通道CH2向非易失性存储器400发送命令CMDb,同时通过第一通道CH1向非易失性存储器400发送命令CMDa。例如,存储控制器200可以通过第二通道CH2从非易失性存储器400接收数据DATAb,同时通过第一通道CHi从非易失性存储器400接收数据DATAa。
存储控制器200可以控制非易失性存储器400的整体操作。存储控制器200可以向通道CH1至CHm发送信号,以控制连接到通道CH1至CHm的非易失性存储器件NVM11至NVMmn中的每一个非易失性存储器件。例如,存储控制器200可以向第一通道CH1发送命令CMDa和地址ADDRa,以控制在非易失性存储器件NVM11至NVM1n中的所选择的一个非易失性存储器件。
非易失性存储器件NVM11至NVMmn中的每一个非易失性存储器件可以在存储控制器200的控制下操作。例如,非易失性存储器件NVM11可以根据向第一通道CH1提供的命令CMDa、地址ADDRa和数据DATAa来对数据DATAa进行编程。例如,非易失性存储器件NVM21可以根据向第二通道CH2提供的命令CMDb和地址ADDRb读取数据DATAb,并且可以向存储控制器200发送读取的数据DATAb。
尽管图3示出了非易失性存储器400通过m个通道与存储控制器200通信,并且非易失性存储器400包括n个非易失性存储器件以对应于每个通道,但是通道的数量以及连接到一个通道的非易失性存储器件的数量可以进行各种改变。
图4是示出了根据一些示例实施例的存储器单元阵列的示例电路图。
参照图4,多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以沿第一方向x和第二方向y布置在衬底(未示出)上。多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以具有沿第三方向z延伸的形式。多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33可以共同连接到形成在衬底上或衬底内部的公共源极线CSL。公共源极线CSL被示为在第三方向z上连接到多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的最下端,但是公共源极线CSL在第三方向z上可以电连接到多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的最下端,并且公共源极线CSL不限于物理上位于多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的下端的配置。此外,虽然图4示出了多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33以3×3的布置放置,但是可以改变放置在存储器单元阵列410中的多个单元串的放置形式和数量。
一些单元串NS11、NS12和NS13可以连接到第一地选择线GSL1。一些单元串NS21、NS22和NS23可以连接到第二地选择线GSL2。一些单元串NS31、NS32和NS33可以连接到第三地选择线GSL3。
此外,一些单元串NS11、NS12和NS13可以连接到第一串选择线SSL1。一些单元串NS21、NS22和NS23可以连接到第二串选择线SSL2。一些单元串NS31、NS32和NS33可以连接到第三串选择线SSL3。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个单元串可以包括连接到每条串选择线的串选择晶体管SST。另外,多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个单元串可以包括连接到每条地选择线的地选择晶体管GST。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33的每个地选择晶体管的一端可以连接到公共源极线CSL。此外,在多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个单元串中,多个存储器单元可以在地选择晶体管和串选择晶体管之间沿第三方向z顺序地堆叠。尽管图4中未示出,多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每一个单元串可以包括在地选择晶体管和串选择晶体管之间的虚设单元。此外,可以改变包括在每个串中的串选择晶体管的数量。
单元串NS11可以包括沿第三方向z放置在最下端的地选择晶体管GST11、沿第三方向z顺序地堆叠在地选择晶体管GST11上的多个存储器单元M11_1至M11_8、以及沿第三方向z堆叠在最上面的存储器单元M11_8上的串选择晶体管SST11。此外,单元串NS21可以包括沿第三方向z放置在最下端的地选择晶体管GST21、沿第三方向z顺序地堆叠在地选择晶体管GST21上的多个存储器单元M21_1至M21_8、以及沿第三方向z堆叠在最上面的存储器单元M21_8上的串选择晶体管SST21。此外,单元串NS31可以包括沿第三方向z放置在最下端的地选择晶体管GST31、沿第三方向z顺序地堆叠在地选择晶体管GST31上的多个存储器单元M31_1至M31_8、以及沿第三方向z堆叠在最上面的存储器单元M31_8上的串选择晶体管SST31。
在第三方向z上位于距衬底或地选择晶体管相同高度处的存储器单元可以通过相应的字线共同电连接。例如,在形成有存储器单元M11_1、M21_1和M31_1的高度处的存储器单元可以连接到第一字线WL1。此外,在形成有存储器单元M11_2、M21_2和M31_2的高度处的存储器单元可以连接到第二字线WL2。在下文中,由于连接到第三字线WL3至第八字线WL8的存储器单元的放置和结构也与此类似,因此将不提供对其的描述。
多个单元串NS11、NS21、NS31、NS12、NS22、NS32、NS13、NS23和NS33中的每个串选择晶体管的一端可以连接到位线BL1、BL2和BL3。例如,串选择晶体管ST11、SST21和SST31可以连接到沿第二方向y延伸的位线BL1。由于连接到位线BL2和BL3的其他串选择晶体管的说明也与此类似,因此将不提供对其的说明。
与一个串(或地)选择线和一个字线相对应的存储器单元可以形成一页。可以以每页为单位执行写入操作和读取操作。在每页上的每个存储器单元也可以存储两个或更多比特。写入每一页的存储器单元的比特可以形成逻辑页。
存储器单元阵列410可以被设置为三维存储器阵列。三维存储器阵列可以单片地形成在存储器单元阵列的一个或多个物理层上,该存储器单元阵列具有放置在衬底(未示出)上的有源区和与存储器单元的操作相关的电路。与存储器单元的操作相关的电路可以位于衬底内部或衬底上。单片形成意味着3D阵列的每一层级的层可以直接沉积在3D阵列的较低层级的层上。
图5是根据一些示例实施例的FPGA的框图。
参照图5,FPGA 100可以包括加速器110、预处理器120、第三缓冲存储器130和最终计算器140。
加速器110可以自行执行计算。例如,加速器110可以代表主机设备20执行可以由主机设备20以其他方式执行的计算。加速器110可以基于存储在非易失性存储器400中的数据集来执行计算。加速器110可以响应于来自主机设备20的命令执行计算,并向主机设备20提供计算执行结果。
加速器110可以使用最近邻搜索算法中的分层可导航小世界(HNSW)搜索算法来执行计算。在本说明书中,虽然加速器110被描述为使用HNSW算法执行计算,但这仅是用于说明的示例。例如,加速器110可以使用近似最近邻搜索算法来执行计算。在另一示例中,加速器110可以使用固定半径近邻搜索算法来执行计算。
加速器110可以接收用于计算的数据集和查询。例如,加速器110可以从非易失性存储器400或第一缓冲存储器300接收用于计算的数据集。此外,加速器110可以从主机设备20接收用于计算的查询。加速器110可以响应于查询输出对数据集执行计算的结果。此外,加速器110可以向主机设备20或非易失性存储器400提供执行计算的结果。
预处理器120可以对从第一缓冲存储器300提供的数据集执行预处理。例如,预处理器120可以通过第一缓冲存储器300接收存储在非易失性存储器400中的数据集。预处理器120可以检查包括在数据集中的向量数据。此处,向量数据可以包括多个维度信息。预处理器120可以确定多个向量数据之间的相似度。例如,预处理器120可以使用HNSW算法确定向量数据之间的相似度。预处理器120可以生成包括相似向量数据的预处理数据集。即,预处理数据集可以对应于具有向量数据的数据集,该向量数据具有现有向量相似度。下面将提供其详细说明。
第三缓冲存储器130可以缓冲来自非易失性存储器400的数据集。例如,第三缓冲存储器130可以重新缓冲在第一缓冲存储器300中缓冲的数据集。在实施方式中,FPGA 100可以省略第三缓冲存储器130,并将在第一缓冲存储器300中缓冲的数据集直接传输到加速器110或预处理器120。
最终计算器140可以使用从加速器110生成的最终候选数据来计算最终结果数据。在一些示例实施例中,最终计算器140可以执行蛮力计算。在一些示例实施例中,最终计算器140可以放置在与FPGA 100不同的芯片上。在一些其他实施例中,最终计算器140可以包括在主机设备20中。在这种情况下,最终候选数据由加速器110提供,并且包括在主机设备20中的最终计算器140可以计算最终结果数据。
在下文中,将参照图6至图12描述预处理器120的操作。
图6是根据一些示例实施例的对原始图形数据执行预处理的存储器系统的框图。图7是用于说明图6的存储器系统的操作的梯形图。
参照图6和图7,主机设备20可以向FPGA 100提供预处理指令命令PCMD(S500)。此处,预处理指令命令PCMD对应于指示预处理器120执行预处理操作的命令。即,预处理器120可以响应于预处理指令命令PCMD对数据集执行预处理。然而,即使不传输预处理指令命令PCMD,预处理器120也可以执行预处理操作。
FPGA 100可以加载原始图形数据OGD(S501)。即,FPGA100可以响应于预处理指令命令PCMD加载原始图形数据OGD。因此,非易失性存储器400可以向FPGA 100提供原始图形数据OGD(S502)。即,存储在第一存储器单元阵列410a中的原始图形数据OGD可以通过第一缓冲存储器300提供给预处理器120。
此处,原始图形数据OGD可以包括多个图像向量数据。在一些示例实施例中,一个图像向量数据可以包括128维数据。由于一维数据可以对应于4B,因此一个图像向量数据可以对应于512B。此外,图像向量数据可以包括最近的向量数据的列表。因此,可以表示为原始图形数据OGD的图像向量数据可以根据接近度进行连接。
预处理器120可以接收预处理指令命令PCMD和原始图形数据OGD。预处理器120可以响应于预处理指令命令PCMD对原始图形数据OGD执行预处理。
首先,预处理器120可以基于存储设备10的环境信息确定数据块BLK1至BLKn的块大小(S503)。即,预处理器120可以确定存储在数据块BLK1至BLKn中的数据的块大小,数据块BLK1至BLKn包括在非易失性存储器400的第二存储器单元阵列410b中。
图8是用于说明图6的FPGA的操作的流程图。图9是用于说明存储在第二存储器单元阵列中的多个数据集的图。
参照图8和图9,FPGA 100可以将原始图形数据OGD加载到第一缓冲存储器300中(S510)。预处理器120可以基于存储设备10的环境信息确定阈值(S511)。例如,第二存储器单元阵列410b可以包括第一数据块BLK1至第n数据块BLKn。第一数据块BLK1的块大小可以对应于第一块大小SZ1,第二数据块BLK2的块大小可以对应于第二块大小SZ2,并且第n数据块BLKn的块大小可以对应于第n块大小SZn。即,预处理器120可以确定第一块大小SZ1至第n块大小SZn。
此处,预处理器120可以基于存储设备10的内部环境信息来确定块大小的阈值。例如,预处理器120可以基于诸如第一缓冲存储器300的数据容量和数据的传输速率之类的信息来确定包括在存储器单元阵列410b中的数据块的块大小的阈值。例如,当第一缓冲存储器300的数据容量相对较大时,数据块的阈值可能相对较大。此外,数据块的阈值可以取决于包括在所生成的预处理图形数据PPGD中的图像向量数据的集中程度而变化。
预处理器120可以确定数据块的块大小是否小于所确定的阈值(S512)。如果数据块的块大小小于所确定的阈值(S512-Y),则数据块的块大小可以增加(S513)。即,这种情况下生成的数据块的块大小可能会继续增加。如果数据块的块大小不小于所确定的阈值(S512-N),则预处理器120可以生成新的数据块(S514)。即,预处理器120可以将预处理图形数据PPGD存储在新生成的数据块中。
如果预处理图形数据PPGD的生成已经完成(S515-Y),则操作可以终止,并且如果预处理图形数据PPGD的生成没有完成(S515-N),则预处理器120可以再次执行操作(S512)。
再次参照图6、图7和图9,预处理器120可以基于向量距离相似度对原始图形数据OGD进行分类,以生成预处理图形数据PPGD(S504)。原始图形数据OGD可以是未分类的数据集,并且随机存储在第一存储器单元阵列410a的数据块中。预处理图形数据PPGD可以通过被分类而存储在第二存储器单元器阵列410b的数据块BLK1至BLKn中。此处,存储在数据块BLK1至BLKn中的每一个数据块中的图像向量数据可以具有向量相似度。即,存储在第一数据块BLK1中的第一预处理图形数据PPGD1中包括的第一图像向量数据可以彼此具有向量相似度,存储在第二数据块BLK2中的第二预处理图形数据PPGD2中包括的第二图像向量数据可以彼此具有向量相似度,并且存储在第n数据块BLKn中的第n预处理图形数据PPGDn中包括的第n图像向量可以彼此具有向量相似度。然而,第一图像向量数据至第n图像向量数据可能彼此不具有向量相似度。
图10和图11是用于说明根据一些示例实施例的包括加速器的FPGA的操作的图。
参照图10和图11,预处理器120可以使用HNSW算法处理数据。然而,预处理器120或加速器110可以使用各种算法来处理数据。
预处理器120可以处理多个数据集DS1至DSn。多个数据集DS1至DSn可以对应于图形结构。由包括在多个数据集DS1至DSn中的数据形成的图形结构可以包括多个层。多个层可以包括从顶层到层0。多个层中的每个层可以包括多个点。多个点可以包括图像向量信息。
在实现为包括在数据集DS1至DSn中的数据的图形结构中,顶层可以包括最少数量的点。随着层下降,包括在层中的点数可以增加。作为图形结构的最低层的层0可以包括数据集DS1至DSn的所有点。每个层可以包括上层中包括的所有点。因此,竖直相邻的层可以通过点连接。
在一些示例实施例中,预处理器120可以从顶层开始搜索与预处理指令命令PCMD相对应的数据。在找到与数据最接近的点之后,预处理器120可以基于该点开始下层搜索。
在一些示例实施例中,预处理器120可以使用多个数据集DS1至DSn从数据集DS1至DSn中的每一个数据集中获得局部K最近邻。局部K最近邻可以包括最终候选数据。因此,可以生成最终K最近邻。预处理图形数据PPGD可以通过上述对包括在原始图形数据OGD中的数据集的分类方法来生成。此处,第一预处理图形数据PPGD1的图像向量数据具有向量相似度,第二预处理图形数据PPGD2的图像向量数据具有向量相似度,并且第n预处理图形数据PPGDn的图像向量数据可以具有向量相似度。预处理图形数据PPGD可以存储在数据块BLK1至BLKn中,在该数据块BLK1至BLKn中确定非易失性存储器400的第二存储器单元阵列410b的块大小。
再次参照图7和图9,预处理器120可以基于预处理图形数据PPGD生成元数据MTD(S505)。预处理器120可以基于第一预处理图形数据PPGD1生成第一元数据MTD1。第一元数据MTD1可以包括指示包括在第一预处理图形数据PPGD1中的图像向量数据和其他预处理图形数据之间的关系的信息。
图12是用于说明根据一些示例实施例的元数据的图。
参照图12,元数据MTD可以包括最近邻块列表。例如,元数据MTD可以包括第二数据块BLK2接近第十二数据块BLK12、第四十三数据块BLK43和第九数据块BLK9的信息。
此外,元数据MTD可以包括块预览向量数据。块预览向量数据可以包括第二块大小SZ2(其是第二数据块BLK2的块大小)、存储在第二数据块BLK2中的第二预处理图形数据PPGD2的数据中的最小值、最大值和平均值、第二数据块BLK2和另一数据块之间的向量相似度距离等。
再次参照图9,预处理器120可以生成多个元数据MTD。可以生成第一元数据MTD1至第n元数据MTDn。此处,第一数据集DS1可以包括第一预处理图形数据PPGD1和第一元数据MTD1,第二数据集DS2可以包括第二预处理图形数据PPGD2和第二元数据MTD2,并且第n数据集DSn可以包括第n预处理图形数据PPGDn和第n元数据MTDn。
再次参照图7,预处理器120可以向非易失性存储器400提供预处理图形数据PPGD和元数据MTD(S506)。因此,非易失性存储器400可以将预处理图形数据PPGD和元数据MTD存储在多个数据块BLK1至BLKn中(S507)。因此,根据向量相似度组织的预处理图形数据PPGD可以存储在非易失性存储器400的第二存储器单元阵列410b中,并且可以删除存储在第一存储器单元阵列410a中的原始图形数据OGD。由于预处理图形数据PPGD存储在多个数据块BLK1至BLKn中,因此可以提高存储设备10的性能。
图13是根据一些示例实施例的响应于查询的存储器系统的框图。图14是用于说明图13的存储器系统的操作的梯形图。图15是用于说明图13的FPGA的计算操作的框图。
参照图13和图14,主机设备20可以向FPGA100提供查询QR(S520)。FPGA 100可以响应于查询QR加载元数据MTD(S521)。因此,非易失性存储器400可以向FPGA 100提供元数据MTD(S522)。
预处理器120可以基于查询QR和元数据MTD加载预处理图形数据PPGD(S523)。例如,预处理器120可以基于包括在元数据MTD中的块大小、预处理图形数据PPGD的数据中的最小值、最大值和平均值、数据块之间的向量相似度距离等加载对应的预处理图形数据PPGD。例如,如果包括在多个元数据MTD1至MTDn中的第一元数据MTD1中的信息与查询QR具有向量相似度,则预处理器120可以加载与第一元数据MTD1相对应的第一预处理图形数据PPGD1。在这种情况下,预处理器120可以使用上述HNSW算法加载预处理图形数据PPGD。
因此,FPGA 100可以向非易失性存储器400提供请求信号RQ(S524),并且非易失性存储器400可以响应于请求信号RQ向FPGA 100提供预处理图形数据PPGD(S525)。
FPGA 100可以基于查询QR和预处理图形数据PPGD来执行计算(S526)。此处,加速器110可以接收预处理图形数据PPGD并对其执行计算。
参照图15,第三缓冲存储器130或第一缓冲存储器300可以从非易失性存储器400接收第x预处理图形数据PPGDx、第y预处理图形数据PPGDy和第z预处理图形数据PPGDz。第一缓冲存储器300可以缓冲第x预处理图形数据PPGDx、第y预处理图形数据PPGDy和第z预处理图形数据PPGDz。此处,第y预处理图形数据PPGDy和第z预处理图形数据PPGDz可以具有与第x预处理图形数据PPGDx最接近的向量相似度。该信息可以记录在元数据MTD中。
第三缓冲存储器130或第一缓冲存储器300可以向加速器110提供第x预处理图形数据PPGDx。加速器110可以基于查询QR和第x预处理图形数据PPGDx来执行计算。例如,加速器110可以将查询QR的图像向量数据与第x预处理图形数据PPGDx进行比较来确定它们是否具有相似度。加速器110可以使用上述HNSW算法来执行计算。
随后,加速器110可以从第三缓冲存储器130或第一缓冲存储器300顺序地接收和处理第y预处理图形数据PPGDy和第z预处理图形数据PPGDz。此处,由于第x预处理图形数据PPGDx、第y预处理图形数据PPGDy和第z预处理图形数据PPGDz通过预处理器120具有向量接近度,因此可以实现存储设备10的大量数据管理的优化和效率。
最终计算器140可以从加速器110接收信息,并输出请求信号RSP。例如,最终计算器140可以接收具有与查询QR相似的特征的预处理图形数据PPGD并确定它。例如,可以输出与查询QR相对应的预处理图形数据PPGD的特征。然而,这仅仅是最终计算器140和加速器110的操作的示例。FPGA 100可以向主机设备20提供响应信号RSP(S527),并且主机设备20可以基于响应信号RSP进行操作。
在下文中,将参照图16描述根据另一示例实施例的存储器系统2。
图16是根据一些示例实施例的存储器系统的框图。为了便于说明,将简要描述或省略使用图1至图15描述的内容的重复部分。
参照图16,存储器系统2可以包括存储设备10和主机设备20。
存储设备10的存储控制器200可以包括FPGA 100。主机设备20可以包括主机控制器201、主机存储器202和最终计算器140。
可以向主机存储器202提供来自FPGA 100的加速器110的最终候选数据,并且主机存储器202可以临时存储最终候选数据。即,主机存储器202可以用作存储由加速器110提供的最终候选数据的缓冲存储器。
最终计算器140可以使用存储在主机存储器202中的最终候选数据来生成最终结果数据。最终计算器140可以包括蛮力计算器。最终计算器140可以包括用于蛮力计算的加速电路。因此,FPGA 100可以不单独包括最终计算器140。即,FPGA 100可以向主机设备20提供尚未通过最终计算器140进行计算的最终候选数据。
在下文中,将参照图17描述根据另一示例实施例的存储器系统3。
图17是根据一些示例实施例的存储器系统的框图。为了便于说明,将简要描述或省略使用图1至图15描述的内容的重复部分。
参照图17,存储器系统3可以包括第一存储设备11、第二存储设备12和主机设备20。
第一存储设备11可以包括第一存储控制器210、第一FPGA101、第四缓冲存储器301和第一非易失性存储器401。
第一非易失性存储器401可以存储第一数据集DS1至第M数据集DSM。
第一FPGA 101可以通过对现有存储的数据集执行预处理来生成第一数据集DS1至第M数据集DSM。第一FPGA 101可以基于第一输入查询对第一数据集DS1至第M数据集DSM执行计算处理。包括在第一FPGA 101中的加速器可以使用第一数据集DS1生成第一最终候选数据。第一FPGA 101可以向主机设备20提供所生成的第一最终候选数据。
第二存储设备12可以包括第二存储控制器220、第二FPGA 102、第五缓冲存储器302和第二非易失性存储器402。
第二非易失性存储器402可以存储与第一数据集DS1至第M数据集DSM不同的第(M+1)数据集至第N数据集(DS(M+1)至DSN)。
第二FPGA 102可以通过对现有存储的数据集执行预处理来生成第(M+1)数据集至第N数据集(DS(M+1)至DSN)。第二FPGA 102可以基于第二输入查询对第(M+1)数据集至第N数据集(DS(M+1)至DSN)执行计算处理。包括在第二FPGA 102中的加速器可以使用第(M+1)数据集至第N数据集(DS(M+1)至DSN)来生成第二最终候选数据。第二FPGA 102可以向主机设备20提供所生成的第二最终候选数据。
即,第一FPGA 101和第二FPGA 102中的每一个FPGA可以基于相同的查询使用不同的数据集并行地执行计算。
主机存储器202可以用作临时存储由第一FPGA 101提供的第一最终候选数据和由第二FPGA 102提供的第二最终候选数据的缓冲存储器。
包括在主机设备20中的最终计算器140可以使用存储在主机存储器202中的第一最终候选数据和第二最终候选数据来生成最终结果数据。最终计算器140可以包括蛮力计算器。最终计算器140可以包括用于蛮力计算的加速电路。因此,第一FPGA 101和第二FPGA102可以不单独包括最终计算器140。即,第一FPGA 101和第二FPGA 102可以向主机设备20提供尚未通过最终计算器140进行计算的第一候选数据和第二最终候选数据。
图18是根据一些示例实施例的包括存储设备的数据中心的图。
参照图18,数据中心3000可以是收集各种类型的数据并提供服务的设施,并且也可以被称为数据存储中心。数据中心3000可以是用于搜索引擎和数据库操作的系统,并且可以是在诸如银行或政府机构之类的公司中使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。可以不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量,并且应用服务器3100至3100n的数量和存储服务器3200至3200m的数量可以彼此不同。
应用服务器3100或存储服务器3200可以包括处理器3110和3210以及存储器3120和3220中的至少一个。以存储服务器3200为例,处理器3210可以控制存储服务器3200的整体操作,并访问存储器3220以执行加载到存储器3220中的命令和/或数据。存储器3220可以是DDR SDRAM(双数据速率同步DRAM)、HBM(高带宽存储器)、HMC(混合存储立方体)、DIMM(双列直插式存储模块)、傲腾(Optane)DIMM或NVM DIMM(非易失性DIMM)。根据示例实施例,可以不同地选择包括在存储服务器3200中的处理器3210的数量和存储器3220的数量。在示例实施例中,处理器3210和存储器3220可以提供处理器存储器对。在示例实施例中,处理器3210的数量和存储器3220的数量可以彼此不同。处理器3210可以包括单核处理器或多核处理器。存储服务器3200的上述说明也相似地适用于应用服务器3100。根据示例实施例,应用服务器3100可以不包括存储设备3150。存储服务器3200可以包括至少一个或多个存储设备3250。可以不同地选择包括在存储服务器3200中的存储设备3250的数量。存储设备3250可以包括参照图1至图17描述的存储设备10。即,存储设备3250可以通过包括FPGA 100来组织存储在非易失性存储器中的数据集以生成预处理图形数据PPGD。
应用服务器3100至3100n和存储服务器3200至3200m可以通过网络3300彼此通信。可以使用FC(光纤通道)、以太网等来实现网络3300。FC是用于相对高速数据传输的介质,并且可以使用提供高性能/高可用性的光开关。取决于网络3300的访问类型,存储服务器3200至3200m可以被设置为文件存储、块存储或对象存储。
在示例实施例中,网络1300可以是诸如SAN(存储区域网络)之类的仅存储网络。例如,SAN可以是使用FC网络并根据FCP(FC协议)实现的FC-SAN。作为另一示例,SAN可以是IP-SAN,其使用TCP/IP网络并根据iSCSI(TCP/IP上的SCSI或互联网SCSI)协议来实现。在另一示例中,网络1300可以是诸如TCP/IP网络之类的通用网络。例如,网络1300可以根据诸如FCoE(以太网FC)、NAS(网络附加存储)和NVMe-oF(基于架构的NVMe)之类的协议来实现。
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的说明也可以适用于另一应用服务器3100n,并且存储服务器3200的说明也可以适用于另一存储服务器3200m。
应用服务器3100可以通过网络3300将由用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一个存储服务器中。此外,应用服务器3100可以通过网络3300从存储服务器3200至3200m中的一个存储服务器获取由用户或客户端请求读取的数据。例如,应用服务器3100可以被实现为Web服务器、DBMS(数据库管理系统)等。
应用服务器3100可以通过网络3300访问包括在另一应用服务器3100n中的存储器3120n或存储设备3150n,或者可以通过网络3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储设备3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的命令。数据可以经由存储服务器32()0至3200m的存储器3220至3220m从存储服务器3200至3200m的存储设备3250至3250m移动,或者可以直接移动到应用服务器3100至3100n的存储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加密的数据。
以存储服务器3200为例,接口3254可以提供处理器3210和控制器3251之间的物理连接,以及NIC(网络互连)3240和控制器3251之间的物理连接。例如,接口3254可以以DAS(直接连接存储)类型来实现,其中,存储设备3250与专用电缆直接连接。此外,例如,接口3254可以以各种接口类型来实现,例如,ATA(高级技术附件)、SATA(串行ATA)、e-SATA(外部SATA)、SCSI(小型计算机小型接口)、SAS(串行连接SCSI)、PCI(外围组件互连)、PCIe(快速PCI)、NVMe(快速NVM)、IEEE 1394、USB(通用串行总线)、SD(安全数字)卡、MMC(多媒体卡)、eMMC(嵌入式多媒体卡)、UFS(通用闪存)、eUFS(嵌入式通用闪存)和/或CF(紧凑型闪存)卡接口。
存储服务器3200还可以包括开关3230和NIC3240。根据处理器3210的控制,开关3230可以选择性地连接处理器3210和存储设备3250,或者可以选择性地连接NIC 3240和存储设备3250。
在示例实施例中,NIC 3240可以包括网络接口卡、网络适配器等。NIC 3240可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络3300。NIC 3240可以包括内部存储器、DSP(数字信号处理器)、主机总线接口等,并且可以通过主机总线接口连接到处理器3210和/或开关3230等。主机总线接口也可以被实现为上述接口3254的示例之一。在示例实施例中,NIC 3240也可以与处理器3210、开关3230和存储设备3250中的至少一个集成。
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可以向存储设备3150至3150n和3250至3250m或存储器3120至3120n和3220至3220m发送命令以编程数据或读取数据。该数据可以是通过ECC(纠错码)引擎纠正错误的数据。该数据可以是经过数据总线反转(DBI)或数据屏蔽(DM)处理的数据,并且可以包括CRC(循环冗余码)信息。该数据可以是为了安全或隐私而加密的数据。
存储设备3150至3150m和3250至3250m可以响应于从处理器接收到的读取命令向NAND闪存器件3252至3252m发送控制信号和命令/地址信号。因此,当从NAND闪存器件3252至3252m读取数据时,输入RE(读取使能)信号作为数据输出控制信号,并且可以用于将数据输出到DQ总线。可以使用RE信号生成DQS(数据选通)。取决于WE(写入使能)信号的上升沿或下降沿,命令和地址信号可以被锁存到页缓冲器。
控制器3251通常可以控制存储设备3250的操作。在示例实施例中,控制器3251可以包括SRAM(静态随机存取存储器)。控制器3251可以响应于写入命令将数据写入NAND闪存3252,或者可以响应于读取命令从NAND闪存3252读取数据。例如,可以由存储服务器3200中的处理器3210、另一存储服务器3200m中的处理器3210m或应用服务器3100和3100n中的处理器3110和3110n提供写入命令和/或读取命令。DRAM 3253可以临时存储(缓冲)要写入NAND闪存3252的数据或从NAND闪存3252读取的数据。此外,DRAM 3253可以存储元数据。此处,元数据是用户数据或由控制器3251生成以管理NAND闪存3252的数据。存储设备3250可以包括用于安全或隐私的SE(安全元件)。
通过总结和回顾,已经有越来越多的尝试通过结合处理器和加速器来提高电子设备的处理速度。这些尝试已经在各种领域中进行,并且正在对具有基于加速器的平台的存储设备执行大量研究,特别是在诸如SSD(固态驱动器)之类的大容量存储设备中。
如上所述,本公开的各方面可以提供一种具有改进的性能和效率的存储设备。
本文已经公开了示例实施例,并且尽管采用了特定术语,但是它们仅用于且应被解释为一般和描述性意义,而不是为了限制的目的。在一些情况下,如在提交本申请时本领域普通技术人员将显而易见的,除非另有明确说明,否则结合特定实施例描述的特征、特性和/或元件可以单独使用或与结合其他实施例描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离所附权利要求中阐述的本发明的精神和范围的前提下,可以进行形式和细节上的各种改变。
Claims (20)
1.一种存储设备,包括:
控制器,被配置为接收来自外部设备的预处理指令命令;
非易失性存储器,被配置为存储原始图形数据;以及
缓冲存储器,连接到所述控制器和所述非易失性存储器,其中:
所述控制器被配置为:
从所述非易失性存储器加载所述原始图形数据,
响应于所述预处理指令命令通过根据向量相似度对所述原始图形数据进行分类来生成预处理图形数据,
基于所述预处理图形数据生成元数据,并且
将所述预处理图形数据和所述元数据提供给所述非易失性存储器,
所述非易失性存储器被配置为将所述预处理图形数据和所述元数据存储在数据块中,并且
所述缓冲存储器被配置为缓冲所述原始图形数据、所述预处理图形数据和所述元数据。
2.根据权利要求1所述的存储设备,其中,所述控制器被配置为:基于所述缓冲存储器的数据容量和所述原始图形数据的传输速率中的至少一个,确定存储在所述非易失性存储器的所述数据块中的数据的数据容量。
3.根据权利要求1所述的存储设备,其中:
所述数据块包括第一数据块和第二数据块,
所述预处理图形数据包括第一预处理图形数据和第二预处理图形数据,
所述元数据包括第一元数据和第二元数据,
所述第一预处理图形数据和所述第一元数据存储在所述第一数据块中,并且
所述第二预处理图形数据和所述第二元数据存储在所述第二数据块中。
4.根据权利要求3所述的存储设备,其中,所述第一元数据包括关于与所述第一数据块最接近的所述第二数据块的信息,以及关于所述第一预处理图形数据的最小值、最大值和平均值的信息。
5.根据权利要求4所述的存储设备,其中,所述控制器被配置为:参照所述第一元数据,从所述非易失性存储器加载存储在所述第一数据块中的数据,以及从所述非易失性存储器加载存储在所述第二数据块中的数据。
6.根据权利要求3所述的存储设备,其中,所述第一数据块的数据容量与所述第二数据块的数据容量不同。
7.根据权利要求3所述的存储设备,其中,包括在所述第一预处理图形数据中的第一向量和包括在所述第二预处理图形数据中的第二向量是基于向量距离相似度来分类的。
8.根据权利要求1所述的存储设备,其中,所述控制器被配置为:
响应于查询,基于所述元数据加载存储在所述非易失性存储器中的所述预处理图形数据,并且
通过基于所述查询和所述预处理图形数据执行计算,输出响应信号。
9.根据权利要求8所述的存储设备,其中,所述控制器被配置为获得具有与所述查询最接近的向量相似度的预处理图形数据。
10.根据权利要求1所述的存储设备,其中,所述控制器被配置为:使用分层可导航小世界HNSW搜索算法来生成所述预处理图形数据。
11.根据权利要求1所述的存储设备,其中,所述控制器包括现场可编程门阵列FPGA,所述现场可编程门阵列FPGA被配置为对所述预处理图形数据进行分类并生成所述元数据。
12.一种存储设备,包括:
非易失性存储器,被配置为包括多个数据块并存储原始图形数据;
缓冲存储器,被配置为缓冲所述原始图形数据;以及
现场可编程门阵列FPGA,所述FPGA被配置为:
从所述缓冲存储器加载所述原始图形数据,
基于所述缓冲存储器的数据容量和所述原始图形数据的传输速率中的至少一个,确定所述非易失性存储器的所述多个数据块中的第一数据块的块大小,并且
将所述原始图形数据中的第一图形数据存储在所述第一数据块中。
13.根据权利要求12所述的存储设备,其中:
所述FPGA被配置为:确定与所述第一数据块不同的第二数据块的块大小,并且将所述原始图形数据中与所述第一图形数据不同的第二图形数据存储在所述第二数据块中,并且
包括在所述第一图形数据中的向量和包括在所述第二图形数据中的向量是基于向量距离相似度来分类的。
14.根据权利要求13所述的存储设备,其中,所述FPGA被配置为:响应于来自外部设备的查询将所述第一图形数据加载到所述缓冲存储器中,以及通过基于所述第一图形数据和所述查询执行计算来输出响应信号。
15.根据权利要求13所述的存储设备,其中:
所述FPGA被配置为:基于所述第一图形数据生成第一元数据,并基于所述第二图形数据生成第二元数据,
所述非易失性存储器被配置为:将所述第一元数据存储在所述第一数据块中,并将所述第二元数据存储在所述第二数据块中,并且
所述FPGA被配置为:基于所述第一元数据和所述第二元数据将所述第一图形数据和所述第二图形数据加载到所述缓冲存储器中。
16.根据权利要求15所述的存储设备,其中,所述第一元数据包括关于与所述第一数据块最接近的所述第二数据块的信息,以及关于所述第一图形数据的最小值、最大值和平均值的信息。
17.一种存储设备,包括:
控制器,被配置为从外部设备接收预处理指令命令和查询;以及
非易失性存储器,被配置为存储原始图形数据,其中:
所述控制器被配置为:
响应于所述预处理指令命令,基于所述原始图形数据生成预处理图形数据,并将所述预处理图形数据存储在所述非易失性存储器中,
响应于所述查询加载所述预处理图形数据,并且
基于所述预处理图形数据输出响应信号。
18.根据权利要求17所述的存储设备,其中,所述控制器被配置为:通过基于向量相似度对所述原始图形数据进行分类来生成所述预处理图形数据,基于所述预处理图形数据生成元数据,并且将所述元数据存储在所述非易失性存储器中。
19.根据权利要求18所述的存储设备,其中,所述控制器被配置为:响应于所述查询基于所述元数据加载所述预处理图形数据。
20.根据权利要求19所述的存储设备,其中,所述控制器被配置为:使用分层可导航小世界HNSW搜索算法来生成所述预处理图形数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210143213A KR20230059239A (ko) | 2021-10-26 | 2021-10-26 | 스토리지 장치 |
KR10-2021-0143213 | 2021-10-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116027969A true CN116027969A (zh) | 2023-04-28 |
Family
ID=86055580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211291412.6A Pending CN116027969A (zh) | 2021-10-26 | 2022-10-19 | 存储设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11921625B2 (zh) |
KR (1) | KR20230059239A (zh) |
CN (1) | CN116027969A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626334B2 (en) | 2014-12-24 | 2017-04-18 | Intel Corporation | Systems, apparatuses, and methods for K nearest neighbor search |
US20180341642A1 (en) | 2016-07-17 | 2018-11-29 | Gsi Technology Inc. | Natural language processing with knn |
US11256431B1 (en) | 2017-01-13 | 2022-02-22 | Lightbits Labs Ltd. | Storage system having a field programmable gate array |
JP2018148366A (ja) * | 2017-03-03 | 2018-09-20 | キヤノン株式会社 | 画像形成装置 |
CN108256570A (zh) | 2018-01-13 | 2018-07-06 | 惠州学院 | 基于k邻域相似性的数据聚类方法、装置和存储介质 |
US10949087B2 (en) * | 2018-05-15 | 2021-03-16 | Samsung Electronics Co., Ltd. | Method for rapid reference object storage format for chroma subsampled images |
US10949214B2 (en) | 2019-03-29 | 2021-03-16 | Intel Corporation | Technologies for efficient exit from hyper dimensional space in the presence of errors |
US11074008B2 (en) | 2019-03-29 | 2021-07-27 | Intel Corporation | Technologies for providing stochastic key-value storage |
US11029871B2 (en) | 2019-05-15 | 2021-06-08 | EMC IP Holding Company LLC | Deduplication using nearest neighbor cluster |
-
2021
- 2021-10-26 KR KR1020210143213A patent/KR20230059239A/ko unknown
-
2022
- 2022-05-24 US US17/752,004 patent/US11921625B2/en active Active
- 2022-10-19 CN CN202211291412.6A patent/CN116027969A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230129606A1 (en) | 2023-04-27 |
US11921625B2 (en) | 2024-03-05 |
KR20230059239A (ko) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190099693A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US11698855B2 (en) | Method, memory controller and storage device to perform garbage collection based on fragmentation ratio of blocks | |
US11429295B2 (en) | Storage device storing data based on key-value and operating method of the same | |
US11804280B2 (en) | Non-volatile memory device, operating method thereof, controller for controlling the same, and storage device having the same | |
CN115146116A (zh) | 使用内容可寻址存储器的关键值数据存储系统 | |
US20230350578A1 (en) | Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same | |
US10445372B2 (en) | Method and device to access auxiliary mapping data for a data structure | |
US20230152968A1 (en) | Storage devices including non-volatile memory devices | |
US12001709B2 (en) | Storage devices and operating methods of storage controllers | |
US11675504B2 (en) | Memory controller, memory system including the same, and method of operating the same | |
US20220197510A1 (en) | Storage device for executing processing code and operating method of the storage device | |
KR20230068935A (ko) | 스토리지 장치 및 그 구동 방법 | |
CN114546903A (zh) | 存储装置和包括其的存储系统 | |
US11921625B2 (en) | Storage device for graph data | |
US20230114199A1 (en) | Storage device | |
US12014772B2 (en) | Storage controller and storage device including the same | |
US20230141409A1 (en) | Storage device and operating method thereof | |
US20240220151A1 (en) | Computational storage device and method for operating the device | |
US11842076B2 (en) | Storage system and operating method for same | |
US20240193105A1 (en) | Computational storage device and method of operating the same | |
KR20220037184A (ko) | 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법 | |
KR20240108972A (ko) | 연산 스토리지 장치 및 그 구동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |