CN110531923B - 包括可重配置的逻辑的存储设备和操作该存储设备的方法 - Google Patents
包括可重配置的逻辑的存储设备和操作该存储设备的方法 Download PDFInfo
- Publication number
- CN110531923B CN110531923B CN201910242793.0A CN201910242793A CN110531923B CN 110531923 B CN110531923 B CN 110531923B CN 201910242793 A CN201910242793 A CN 201910242793A CN 110531923 B CN110531923 B CN 110531923B
- Authority
- CN
- China
- Prior art keywords
- reconfigurable logic
- host
- logic circuit
- design file
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0629—Configuration or reconfiguration of storage 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/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/0626—Reducing size or complexity of storage 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/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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
存储设备包括可重配置的逻辑电路、控制逻辑电路和非易失性存储器。在存储设备的操作期间,可重配置的逻辑电路从第一加速器可改变到第二加速器。控制逻辑电路被配置为,从主机接收包括关于主机所需功能的信息的主机命令,并且根据所接收的主机命令,动态地重配置可重配置的逻辑电路,使得可重配置的逻辑电路执行该功能。非易失性存储器连接到控制逻辑电路。
Description
相关申请的交叉引用
该申请要求2018年5月23日在韩国知识产权局提交的韩国专利申请No.10-2018-0058641的优先权,其公开内容通过引用整体结合于此。
技术领域
本公开涉及存储设备。更具体地,本公开涉及一种包括可重配置的逻辑电路的存储设备以及操作该存储设备的方法。
背景技术
存储系统可以包括主机和存储设备。为了提高存储系统的处理速度,存储系统还可以包括加速器,其通过执行主机执行的一些计算来帮助主机计算。当加速器布置在存储设备外部时,加速器的计算操作所花费的时间会根据在主机、存储设备和加速器之间输入或输出数据所花费的时间而增加。
加速器可以被分类为执行设定功能的专用硬件加速器或者可根据设计文件(例如现场可编程门阵列(FPGA)图像)重配置的可重配置的加速器。最近,由于主机需要执行各种应用并高速处理每个应用,因此很需要可重配置以对应各种应用的可重配置的加速器,诸如FPGA。
发明内容
本公开提供了一种存储设备、包括该存储设备的存储系统以及操作该存储设备的方法。该存储设备包括可重配置的逻辑电路,该可重配置的逻辑电路在存储设备的操作期间根据主机所需的功能而自适应地被重配置。
根据本公开的一方面,一种存储设备包括可重配置的逻辑电路、控制逻辑电路和非易失性存储器。该存储设备能够与主机通信。在存储设备的操作期间,可重配置的逻辑电路从第一加速器可改变到第二加速器。控制逻辑电路被配置为从主机接收包括关于主机所需功能的信息的主机命令并且动态地重配置可重配置的逻辑电路,使得可重配置的逻辑电路根据所接收的主机命令来执行功能。非易失性存储器连接到控制逻辑电路。
根据本公开的另一方面,存储系统包括存储设备和主机。存储设备包括可重配置的逻辑电路。主机能够执行多个应用并且被配置为决定可重配置的逻辑电路的重配置,使得可重配置的逻辑电路作为与应用中的第一应用相对应的第一加速器而操作。主机还被配置为将包括关于第一应用的信息的第一主机命令发送到存储设备。可重配置的逻辑电路根据第一主机命令被重配置为第一加速器。
根据本公开的另一方面,存储设备包括可重配置的逻辑电路。操作存储设备的方法包括由存储设备从主机接收包括关于主机所需功能的信息的主机命令。操作存储设备的方法还包括:存储设备,根据主机命令,通过将用于实施该功能的设计文件下载到可重配置的逻辑电路中而动态地重配置可重配置的逻辑电路以对应于该功能。
附图说明
通过以下结合附图的详细描述,将更清楚地理解本公开的实施例,其中:
图1是示出根据本公开的实施例的存储系统的框图;
图2是示出根据本公开另一实施例的存储系统的框图;
图3是示出根据本公开的实施例的操作存储设备的方法的流程图;
图4是示出包括在图1的存储系统中的存储设备中的可重配置的逻辑电路被重配置为第一加速器的范例的框图;
图5是示出包括在图1的存储系统中的存储设备中的可重配置的逻辑电路被重配置为第二加速器的范例的框图;
图6是示出根据本公开的实施例的主机、控制逻辑电路和可重配置的逻辑电路之间的操作的流程图;
图7是示出根据本公开的实施例的存储设备的示例的框图;
图8是示出根据本公开的实施例的存储设备的另一示例的框图;
图9是示出根据本公开的实施例的存储系统中的第一数据路径的框图;
图10是示出图9的存储系统中包括的主机、控制逻辑电路和可重配置的逻辑电路之间的操作的示例的流程图;
图11是示出图9的存储系统中包括的主机、控制逻辑电路和可重配置的逻辑电路之间的操作的另一示例的流程图;
图12是示出根据本公开的实施例的存储系统中的第二数据路径的框图;
图13是示出图12的存储系统中包括的主机、控制逻辑电路和可重配置的逻辑电路之间的操作的示例的流程图;
图14是示出根据本公开的实施例的存储系统中的第三数据路径的框图;
图15是示出根据本公开的实施例的存储系统中的各种数据路径的框图;
图16A示出了根据本公开的实施例的用于非易失性存储器的映射表;
图16B示出了根据本公开的实施例的用于易失性存储器的映射表;
图17是示出根据本公开的实施例的服务器的框图;
图18是示出根据本公开的实施例的网络系统的框图;和
图19是示出根据本公开的实施例的网络系统的框图。
具体实施方式
图1是示出根据本公开的实施例的存储系统10的框图。
参见图1,存储系统10可以包括存储设备100和主机200,并且存储设备100可以包括控制逻辑110、NVM 120(非易失性存储器)和可重配置的逻辑130。可重配置的逻辑130可以是通过执行由主机200执行的一些计算来帮助主机200的计算的加速器。例如,可重配置的逻辑130可以是现场可编程门阵列(FPGA)。然而,可重配置的逻辑130不限于此,并且可重配置的逻辑130可以是可编程逻辑器件(PLD)或复杂PLD(CPLD)。换句话说,这里所说的诸如控制逻辑110和可重配置的逻辑130的逻辑是指诸如FPGA、PLD、CPLD和/或包括专用集成电路(ASIC)的处理器的一个或多个电路元件的电路。而且,在图中,包括图1,电路可以被示为例如“决策器”、“解码器”、“控制器”、“加速器”和“处理器”。如在此描述的发明构思的领域中的传统,可以根据执行所描述的一个或多个功能的块来描述和说明示例。这些块在本文中可称为决策器、解码器、控制器、加速器和处理器(除了那些称为逻辑的块)等等,并且这些块在物理上由模拟和/或数字电路实施,例如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子部件、有源电子部件、光学部件、硬连线电路等,并且这些块可以可选地由固件和/或软件驱动。电路可以体现在例如一个或多个半导体芯片中,或者体现在诸如印刷电路板等的基板支撑件上。构成块的电路可以由专用硬件实施或者由处理器(例如,一个或多个编程的微处理器和相关电路)实施或者由执行块的某些功能的专用硬件和执行块的其他功能的处理器的组合来实施。在不脱离本发明构思的范围的情况下,示例的每个块可以在物理上分成两个或更多个交互和分立的块。同样地,在不脱离本发明构思的范围的情况下,可以将示例的块物理地组合成更复杂的块。
根据实施例,控制逻辑110可以实施为第一芯片,可重配置的逻辑130可以实施为第二芯片,并且第一芯片和第二芯片可以安装在单个板上并且可以彼此电连接。根据实施例,控制逻辑110可以实施为第一芯片,可重配置的逻辑130可以实施为第二芯片,并且第一芯片和第二芯片可以构成封装体叠层(package-on-package POP)。例如,控制逻辑110可以使用专用集成电路(ASIC)芯片来实施,并且可重配置的逻辑130可以使用FPGA来实施。
可以根据包括关于主机200所需功能的信息的主机命令CMD来重配置可重配置的逻辑130。根据实施例,主机命令CMD可以包括关于由主机200执行的应用的信息。根据实施例,主机命令CMD可以包括与主机200执行的应用相对应的设计文件信息。
详细地,控制逻辑110可以在可重配置的逻辑130中下载或编程用于基于主机命令CMD对可重配置的逻辑130进行编程的设计文件。例如,当可重配置的逻辑130是FPGA时,设计文件可以是FPGA图像,并且控制逻辑110可以通过将FPGA图像下载到可重配置的逻辑130中来重配置可重配置的逻辑130。
设计文件可以定义可重配置的逻辑130中包括的逻辑块之间的连接、互连、和输入/输出(I/O)单元。设计文件可以用超高速集成电路(VHSIC)硬件描述语言(VHDL)或诸如Verilog的硬件描述语言(HDL)来实施。详细地,设计文件可以通过经由寄存器传输级(RTL)设计的合成而生成,或者可以在通过使用开放计算语言(CL)对软件内核和硬件内核进行编码之后通过顶层编译生成。
根据可重配置的逻辑130所下载的设计文件的类型,可重配置的逻辑130执行的计算类型可以变化。例如,当第一设计文件被下载到可重配置的逻辑130中时,可重配置的逻辑130可以作为第一加速器操作,并且当第二设计文件被下载到可重配置的逻辑130中时,可重配置的逻辑130可以作为第二加速器操作。根据实施例,可以在存储系统10的操作期间根据主机命令CMD重配置可重配置的逻辑130。
根据一个实施例,可重配置的逻辑130可以执行多媒体代码转换或擦除编码。根据实施例,可重配置的逻辑130可以执行机器学习算法,诸如卷积神经网络(CNN)或循环神经网络(recurrent neural network RNN)。例如,在存储系统10的操作期间,可重配置的逻辑130可以被配置为执行视频转码,并且可以被重配置为根据用于指示CNN的主机命令CMD执行CNN。
例如,可重配置的逻辑130可以执行内联处理(inline processing)、预处理、预过滤、密码术、压缩、协议桥接等。例如,可重配置的逻辑130可以执行排序操作、搜索操作、逻辑运算和算术运算中的至少一个。逻辑运算可以表示由各种逻辑门中的任何一个执行的计算,各种逻辑门例如AND门、OR门、XOR门、NOR门、NAND门或这些计算中的两个或更多个的组合。由可重配置的逻辑130执行的计算的示例不限于此,并且由可重配置的逻辑130执行的计算可以是与主机200执行的一些计算相对应的任意计算。即,由可重配置的逻辑130执行的计算可以是这样的计算,即可能是、可以是、有时是或者以其它方式由主机200执行的计算,但是由可重配置的逻辑130动态地且基于主机命令CMD而按需执行的计算。
主机200可以经由各种接口中的任何接口与存储设备100通信。例如,可以使用应用处理器(AP)或片上系统(SoC)来实施主机200。主机200可以执行各种应用,包括第一应用(APP1)210a和第二应用(APP2)210b。另外,主机可以包括重配置决策器220。主机200执行的应用的类型可以由用户输入来确定。例如,第一应用APP1 210a和第二应用APP2 210b可以是多媒体再现应用、图像识别应用、语音识别应用、加密应用、搜索应用等。
重配置决策器220可以根据主机200期望执行的应用来决定可重配置的逻辑130的重配置或非重配置。重配置决策器220可以生成主机命令CMD,主机命令CMD包括关于主机200期望执行的应用的信息、与应用相对应的功能或者与应用相对应的设计文件。该主机命令CMD可以称为重配置命令。
主机200可以向存储设备100发送用于重配置可重配置的逻辑130的设计文件。主机200可以向存储设备100发送用于控制可重配置的逻辑130的控制信号。主机200可以将由可重配置的逻辑130执行计算的数据发送到存储设备100。主机200可以从存储设备100接收通过可重配置的逻辑130的计算而生成的数据。
控制逻辑110可以响应于从主机200接收的主机命令CMD来重配置可重配置的逻辑130。存储设备100的控制逻辑110可以包括命令解码器111和配置控制器112。命令解码器111和配置控制器112可以使用硬件、软件或固件来实施。命令解码器111可以被称为命令检测器。配置控制器112可以被称为设计文件下载器、图像下载器或编程电路。
命令解码器111可以接收主机命令CMD,并且可以从接收的主机命令CMD检测主机200所需的功能。根据实施例,命令解码器111可以确定当前在可重配置的逻辑130中编程的设计文件是否对应于主机200所需的功能。根据一个实施例,命令解码器111可以确定与所检测的功能对应的设计文件是否已经存储在NVM 120中。
主机200被配置用于向存储设备100的控制逻辑110发送用于对可重配置的逻辑130进行编程的设计文件。配置控制器112可以从主机200接收与主机200所需的功能相对应的设计文件并且通过将接收到的设计文件下载或编程到可重配置的逻辑130中而重配置可重配置的逻辑130。配置控制器112可以在可重配置的逻辑130中对接收到的设计文件进行编程,以便将功能实施到可重配置的逻辑130中。也就是说,配置控制器112被配置用于通过在可重配置的逻辑130中将用于实施功能到可重配置逻辑130中的设计文件进行编程来动态地重配置可重配置的逻辑130。根据一个实施例,配置控制器112可以从主机200接收设计文件。根据一个实施例,配置控制器112可以从NVM 120接收设计文件。
通过根据主机命令CMD而被重配置,可重配置的逻辑130可以作为与主机200执行的应用对应的加速器而操作。因此,可重配置的逻辑130可以从主机200或NVM 120接收数据,并且可以根据主机200所需的功能对接收的数据执行计算。然后,可重配置的逻辑130可以将计算结果提供给主机200或NVM 120。
主机200可以将读取请求发送到存储设备100,并且存储设备100可以响应于读取请求从NVM 120读取数据。控制逻辑110可以响应于从主机200接收的写请求来控制数据被写入NVM 120。或者,控制逻辑110可以响应于从主机200接收到的读取请求而控制数据被从NVM 120读取。
NVM 120可以包括含有多个存储器单元(memory cell)的存储器单元阵列。根据实施例,NVM 120可以包括闪存设备,例如,NAND闪存设备。然而,NVM 120不限于此,并且NVM120可以包括电阻存储器件,诸如电阻随机访问存储器(ReRAM)、相变RAM(PRAM)或磁RAM(MRAM)。
根据实施例,存储设备100可以是以块为单位管理数据的块存储设备。根据实施例,存储设备100可以是以对象为单位管理数据的对象存储设备。例如,存储设备100可以是键值存储设备。键值存储设备通过使用键值对来快速且简单地处理数据。键值对是具有唯一性的键和值的对子,该值是与键对应的数据,并且键值对可以被称为元组或键值元组。在键值对中,键可以表示为任意字符串,例如文件名、统一资源标识符(URI)或散列,并且该值可以是任何类型的数据,例如图像或用户偏好文件或文档。
可以使用例如个人计算机(PC)、数据服务器、网络耦合存储器、物联网(IoT)设备或便携式电子装置来实施存储系统10。便携式电子装置可以是膝上型计算机、移动电话、智能电话、平板电脑、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、音频播放器、便携式多媒体播放器(PMP)、个人导航设备(PND)、MP3播放器、手持式游戏机、电子书、可穿戴装置等。
根据一些实施例,存储设备100可以是嵌入在电子装置中的内部存储器。例如,存储设备100可以是固态驱动器(SSD)、嵌入式通用闪存(UFS)存储设备或嵌入式多媒体卡(eMMC)。根据一些实施例,存储设备100可以是可从电子装置拆卸的外部存储器。例如,存储设备100可以是UFS存储卡、紧凑型闪存(CF)卡、安全数字(SD)卡、Micro-SD卡、Mini-SD卡、极端数字(xD)卡或记忆棒。
图2是示出根据本公开另一实施例的存储设备100'的框图。
参见图2,存储设备100'可以包括控制逻辑110'和NVM 120。存储设备100'对应于图1的存储设备100的修改形式,并且仅描述了存储设备100'和图1中的存储设备100之间的差异。
根据本实施例,控制逻辑110'可以包括命令解码器111、配置控制器112和可重配置的逻辑130'。根据实施例,控制逻辑110'可以实施为第一芯片,例如ASIC芯片,并且可重配置的逻辑130'可以嵌入第一芯片中。也就是说,控制逻辑110'和可重配置的逻辑130'可以在单个芯片中实施。根据实施例,控制逻辑110'可以使用FPGA来实施。下面描述的各种实施例适用于图1中的存储设备100和图2中的存储设备100'。
图3是示出根据本公开的实施例的操作存储设备的方法的流程图。
参见图3,根据本实施例的操作存储设备的方法可以是重配置包括在存储设备中的可重配置的逻辑的方法,并且可以包括例如在图1的存储设备100中顺序执行的操作。现在将参考图1和图3更详细地描述这一点。
在操作S110中,存储设备100接收包括关于主机200所需功能的信息的主机命令CMD。可以在存储设备100的操作期间,换句话说,在运行时期间执行操作S110。然而,操作S110不限于此,并且可以在存储设备100被供电的时间点或者在存储设备100被重置的时间点执行操作S110。
在操作S130中,存储设备100通过将设计文件下载到可重配置的逻辑130中来动态地重配置可重配置的逻辑130。因此,用于重配置可重配置的逻辑130的触发条件是由主机200提供的主机命令CMD,并且可以根据主机命令CMD重配置可重配置的逻辑130,以执行与主机200执行的应用相对应的功能。
在现有技术中,仅在系统被供电或重置时才将FPGA图像编程到FPGA。换句话说,FPGA重配置的触发条件是供电或重置,并且将FPGA图像重新编程或重新下载到FPGA中的条件非常有限。因此,使用非常大且昂贵的FPGA来将主机所需的所有功能预编程到FPGA。
然而,根据本实施例,存储设备100可以在存储设备100正在操作时接收主机命令CMD,并且可以根据主机命令CMD实时地重配置可重配置的逻辑130。因此,主机200所需的所有功能不需要预先编程到可重配置的逻辑130,并且主机200当前所需的功能可以实时地重新编程到可重配置的逻辑130。因此,可以减少用于实施可重配置的逻辑130的硬件资源,并且可以降低与可重配置的逻辑130相关联的功耗、实施区域和实施成本。
图4是示出将包括在图1的存储设备100中的可重配置的逻辑130重配置为第一加速器130a的范例的框图。
参见图4,当执行第一应用APP1 210a时,重配置决策器220可以决定可重配置的逻辑130的重配置,使得可重配置的逻辑130可以执行与第一应用APP1 210a相对应的功能。因此,可重配置的逻辑130可以被重配置为用于第一应用APP1 210a的第一加速器130a。
例如,第一应用APP1 210a可以是语音或图像识别应用,并且第一加速器130a可以执行语音或图像识别所需的CNN。如前所述,存储设备100可以包括控制逻辑110,并且控制逻辑110可以包括配置控制器112。根据一个实施例,主机200可以向存储设备100提供用于将可重配置的逻辑130重配置为第一加速器130a的第一设计文件。也就是,主机200可被配置用于向存储设备100发送用于将可重配置的逻辑130编程为第一加速器130a的第一设计文件。存储设备100的控制逻辑110的配置控制器112可以被配置用于通过根据第一主机命令在可重配置的逻辑130中编程用于将可重配置的逻辑编程为第一加速器130a的第一设计文件,来动态地重配置可重配置的逻辑130。
图5是示出将包括在图1的存储设备100中的可重配置的逻辑130重配置为第二加速器130b的范例的框图。
参见图5,当执行第二应用APP2 210b时,重配置决策器220可以决定可重配置的逻辑130的重配置,使得可重配置的逻辑130可以执行与第二应用APP2 210b相对应的功能。因此,可重配置的逻辑130可以重配置为针对第二应用APP2 210b的第二加速器130b。
例如,第二应用APP2 210b可以是多媒体再现应用,并且第二加速器130b可以执行多媒体再现所需的代码转换。代码转换意味着转换多媒体内容的文件格式、分辨率和图像质量的操作。根据实施例,主机200可以向存储设备100提供第二设计文件,该第二设计文件用于将可重配置的逻辑130重配置为第二加速器130b。也就是说,主机200可以被配置用于向存储设备100发送用于将可重配置的逻辑130编程为第二加速器130b中的第二设计文件。
图6是示出根据本公开的实施例的主机200、控制逻辑110和可重配置的逻辑130之间的操作的流程图。
参见图6,主机200、控制逻辑110和可重配置的逻辑130之间的操作对应于图4和5的实施例。在操作S200中,主机200决定可重配置的逻辑130被重配置为用于第一应用APP1210a的第一加速器130a并且生成主机命令CMD。例如,第一应用APP1 210a可以是多媒体再现应用,并且主机命令CMD可以包括代码转换请求。在操作S205中,主机200将主机命令CMD发送到控制逻辑110。
在操作S210中,控制逻辑110检测主机命令CMD并控制要被重配置的可重配置的逻辑130。例如,命令解码器111可以从主机命令CMD检测代码转换请求。根据实施例,命令解码器111可以确定对应于代码转换请求的第一设计文件是否已经被编程到可重配置的逻辑130中。根据实施例,命令解码器111可以确定对应于代码转换请求的第一设计文件已经存储在包括在存储设备100中的存储器中。
在操作S220中,控制逻辑110将对应于第一应用APP1 210a的第一设计文件发送到可重配置的逻辑130。在操作S230中,通过下载第一设计文件,可重配置的逻辑130被配置为具有与第一应用APP1 210a对应的功能。因此,可以使用第一加速器130a来实施可重配置的逻辑130。例如,可重配置的逻辑130可以通过下载对应于代码转换的第一设计文件来执行与多媒体再现应用相对应的代码转换。在操作S240中,可重配置的逻辑130将指示重配置完成的响应消息发送到控制逻辑110。在操作S245中,控制逻辑110将指示重配置完成的响应消息发送到主机200。
在操作S250中,主机200决定可重配置的逻辑130被重配置为用于第二应用APP2210b的第二加速器130b并且生成主机命令CMD。例如,第二应用APP2 210b可以是语音识别应用,并且主机命令CMD可以包括CNN请求。在操作S255中,主机200将主机命令CMD发送到控制逻辑110。
在操作S260中,控制逻辑110检测主机命令CMD并控制要被重配置的可重配置的逻辑130。例如,命令解码器111可以从主机命令CMD检测CNN请求。根据实施例,命令解码器111可以确定对应于CNN请求的第二设计文件是否已经被编程到可重配置的逻辑130中。根据实施例,命令解码器111可以确定对应于CNN请求的第二设计文件已经存储在存储设备100中包括的存储器中。
在操作S270中,控制逻辑110将对应于第二应用APP2 210b的第二设计文件发送到可重配置的逻辑130。在操作S280中,通过下载第二设计文件,可重配置的逻辑130被配置以具有与第二应用APP2 210b对应的功能。因此,可以使用第二加速器130b来实施可重配置的逻辑130。例如,可重配置的逻辑130可以通过下载与CNN相对应的第二设计文件来执行与语音识别应用相对应的CNN。在操作S290中,可重配置的逻辑130将指示重配置完成的响应消息发送到控制逻辑110。在操作S295中,控制逻辑110将指示重配置完成的响应消息发送到主机200。
如上面参考图4至图6说明的,根据本实施例,当主机200执行的应用改变时,主机200可以向存储设备100提供主机命令CMD,并且可重配置的逻辑130可以根据主机命令CMD从第一加速器130a改变为第二加速器130b。然而,本公开的发明构思不限于此,并且可以根据主机命令CMD部分地重配置可重配置的逻辑130。
还可以根据硬件资源来重配置可重配置的逻辑130以执行更多计算。例如,当可重配置的逻辑130具有足够多的硬件资源时,可重配置的逻辑130可以在作为第一加速器130a操作时根据主机命令CMD进一步执行与第二加速器130b相对应的计算,并且因此,可重配置的逻辑130可以被重配置以执行与第一加速器130a和第二加速器130b相对应的计算。
图7是示出存储设备100a的框图,该存储设备100a是根据本公开的实施例的存储设备的示例。
参见图7,存储设备100a可以包括控制逻辑110a、可重配置的逻辑130和存储器MEM。控制逻辑110a可以包括命令解码器111、配置控制器112、存储器控制器113和缓冲器114。存储设备100a对应于图1的存储设备100的修改,现在将省略对其的冗余描述。
命令解码器111可以接收主机命令CMD并且可以对接收到的主机命令CMD进行解码从而检测关于主机200所需功能的信息。根据一个实施例,命令解码器111可以确定可重配置的逻辑130中当前编程的设计文件是否对应于主机200所需的功能。命令解码器111可以将从主机200接收的设计文件加载到缓冲器114。
根据实施例,命令解码器111可以通过参考映射表来确定对应于检测的信息的设计文件是否已经存储在存储器MEM中。当确定设计文件已经存储在存储器MEM中时,命令解码器111可以输出指示存储器控制器113的控制操作的控制信号。另一方面,当确定设计文件还没有存储在存储器MEM中时,命令解码器111可以将响应消息发送到主机200。
存储器控制器113可以从命令解码器111接收控制信号,并且可以响应于接收的控制信号控制关于存储器MEM的读取操作。也就是说,存储器控制器113可以被配置为控制用于从NVM 120读取设计文件的读取操作。存储器控制器113可以经由缓冲器114将读取的设计文件提供给配置控制器。详细地,存储器控制器113可以将读取命令发送到存储器MEM。存储器MEM可以存储用于重配置可重配置的逻辑130的设计文件DF。根据一个实施例,存储器MEM可以是图1中的NVM 120。根据一个实施例,存储器MEM可以是例如易失性存储器(诸如DRAM)。存储器MEM可以通过响应于读取命令执行读取操作来输出设计文件DF。存储器控制器113可以从存储器MEM接收设计文件DF,并且可以将接收的设计文件DF加载到缓冲器114中。
缓冲器114可以缓冲从主机200或存储器MEM接收的设计文件DF,并且可以将缓冲的设计文件DF提供给配置控制器112。例如,缓冲器114可以是静态随机访问存储器(SRAM)或先进先出(FIFO)缓冲器。例如,缓冲器114可以使用易失性存储器(例如DRAM)或非易失性存储器(例如PRAM或闪存)来实施。根据实施例,当存储器控制器113的操作速度大于配置控制器112的操作速度时,存储器控制器113可以将设计文件DF缓冲在缓冲器114中。根据实施例,存储器控制器113可以将设计文件DF直接提供到配置控制器112,而不经过缓冲器114。
配置控制器112可以将设计文件DF下载或编程到可重配置的逻辑130中。尽管配置控制器112被示为包括在控制逻辑110a中,配置控制器112不限于此。根据一些实施例,配置控制器112可以被实施为包括在可重配置的逻辑130中,例如,可以在FPGA中实施。
图8是示出存储设备100b的框图,该存储设备100b是根据本公开的实施例的存储设备的另一示例。
图8中的存储设备100b对应于图7中的存储设备100a的修改,下面将仅说明存储设备100b和图7中的存储设备100a之间的差异。除了图7中的存储设备100a的组件之外,存储设备100b还可以包括缓冲器131和数据同步逻辑132。缓冲器131可以是可重配置的逻辑130的专用缓冲器,并且可以缓冲可重配置的逻辑130的计算结果。因为可重配置的逻辑130可以高速执行计算,所以缓冲器131可以被实施为与可重配置的逻辑130相邻,例如可以在FPGA中实施,从而防止可重配置的逻辑130的性能下降。
数据同步逻辑132可以同步可重配置的逻辑130的计算操作所需的数据。例如,当可重配置的逻辑130被配置为第一加速器(例如图4中的第一加速器130a)时,第一加速器130a中使用的数据也可能在可重配置的逻辑130已经被配置为第二加速器(例如图5中的第二加速器130b)时被需要。因此,数据同步逻辑132可以将第一加速器130a中使用的数据与将在第二加速器130b中使用的数据同步。例如,数据同步逻辑132可以使用FPGA的一部分来实施。例如,数据同步逻辑132可以包括存储器。
图9是示出根据本公开的实施例的存储系统10c中的第一数据路径DP1的框图。
参见图9,主机200a对应于图1的主机200的修改,并且与图1中的主机200相比,还可以包括存储设计文件DF的缓冲器230。缓冲器230可以缓冲分别对应于主机200a可执行的应用的多个设计文件。
主机200a可以将设计文件DF提供给存储设备100。可以沿着第一数据路径DP1将设计文件DF提供给可重配置的逻辑130。详细地,设计文件DF可以经由配置控制器112从主机200a的缓冲器230提供给可重配置的逻辑130。根据一些实施例,设计文件DF可以经由缓冲器(例如图7中的缓冲器114)和控制逻辑110内的配置控制器112提供给可重配置的逻辑130。
图10是示出图9中的主机200a、控制逻辑110和可重配置的逻辑130之间的操作的示例的流程图。
参见图10,在操作S300中,主机200a决定加速器(即,可重配置的逻辑130)的重配置。例如,重配置决策器220可以根据主机200a执行的应用类型来决定可重配置的逻辑130的重配置。在操作S310中,主机200a生成主机命令CMD,该主机命令CMD包括关于主机200a所需的功能的信息、关于主机200a执行的应用的信息或关于与主机200a执行的应用相对应的设计文件的信息。在操作S320中,主机200a将主机命令CMD发送到控制逻辑110。在操作S335中,控制逻辑110从主机命令CMD检测关于主机200a所需功能的信息并将响应消息发送到主机200a。
根据实施例,控制逻辑110可以确定检测的功能是否已经在可重配置的逻辑130中被编程。根据实施例,控制逻辑110可以包括存储可重配置的逻辑130中当前编程的设计文件的表。控制逻辑110可以从表中检测可重配置的逻辑130中当前编程的设计文件。然后,控制逻辑110可以确定检测的设计文件是否对应于从主机命令CMD检测的功能。当确定检测的设计文件对应于从主机命令CMD检测的功能时,在操作S335中,控制逻辑110可以向主机200a发送响应消息,该响应消息指示主机200a所需的功能已经在可重配置的逻辑130中实施。另一方面,当确定检测的设计文件不对应于从主机命令CMD检测的功能时,在操作S335中,控制逻辑110可以向主机200a发送请求主机200a发送设计文件的响应消息。
根据实施例,控制逻辑110可以通过参考映射表来确定与检测的功能相对应的设计文件是否已经存储在存储设备100中。当确定设计文件尚未存储在存储设备100中时,在操作S335,控制逻辑110可以向主机200a发送请求主机200a发送设计文件的响应消息。然而,本公开的发明构思不限于此。在操作S335中,控制逻辑110可以简单地将仅包括确定结果的响应消息发送到主机200a。
根据实施例,控制逻辑110可以不确定设计文件是否已经存储在存储设备100中。当完成主机命令CMD的解码时,在操作S335中,控制逻辑110可以向主机200a发送请求主机200a发送设计文件的响应消息。然而,控制逻辑110不限于此。在操作S335中,控制逻辑110可以向主机200a发送指示主机命令CMD的解码已经完成的响应消息。
在操作S340中,主机200a将设计文件发送到控制逻辑110。在操作S350中,控制逻辑110基于设计文件来控制关于可重配置的逻辑130的重配置。在操作S360中,控制逻辑110将设计文件发送到可重配置的逻辑130。在操作S370中,可以通过下载设计文件将可重配置的逻辑130重配置为与设计文件相对应的组件。在操作S380中,可重配置的逻辑130向控制逻辑110发送指示重配置已经完成的响应消息。在操作S390中,控制逻辑110向主机200a发送指示重配置已经完成的响应消息。
图11是示出图9中的主机200a、控制逻辑110和可重配置的逻辑130之间的操作的另一示例的流程图。
参见图11,在操作S400,主机200a决定加速器(即可重配置的逻辑130)的重配置。在操作S410中,主机200a生成主机命令CMD,该主机命令CMD包括关于主机200a所需的功能的信息和与该功能相对应的设计文件。在操作S420中,主机200a将包括设计文件的主机命令CMD发送到控制逻辑110。
在操作S430,控制逻辑110接收主机命令CMD并从接收的主机命令CMD检测关于主机200a所需的功能的信息。控制逻辑110可以将设计文件缓冲在缓冲器(例如图7中的缓冲器114)中。在操作S440中,控制逻辑110基于设计文件来控制关于可重配置逻辑130的重配置。在操作S450,控制逻辑110将设计文件发送到可重配置的逻辑130。在操作S460,可以通过下载设计文件将可重配置的逻辑130重配置为与设计文件相对应的组件。在操作S470中,可重配置的逻辑130向控制逻辑110发送指示重配置已经完成的响应消息。在操作S480中,控制逻辑110向主机200a发送指示重配置已经完成的响应消息。
图12是示出根据本公开的实施例的存储系统10d中的第二数据路径DP2的框图。
参见图12,NVM 120可以存储设计文件DF。主机200可以预先将多个设计文件发送到存储设备100,以便实时地重配置可重配置的逻辑130。因此,NVM 120可以存储分别对应于主机200可执行的应用的多个设计文件。
可以沿着第二数据路径DP2将设计文件DF提供给可重配置逻辑130。详细地,设计文件DF可以经由配置控制器112从NVM 120提供给可重配置的逻辑130。根据一些实施例,可以经由缓冲器(例如图7中的缓冲器114)和控制逻辑110内的配置控制器112将设计文件DF提供给可重配置的逻辑130。
图13是示出图12中的主机200、控制逻辑110、NVM 120和可重配置的逻辑130之间的操作的示例的流程图。
参见图13,在操作S500,主机200决定加速器(即可重配置的逻辑130)的重配置,并且将包括关于主机200所需功能的信息的主机命令CMD发送到控制逻辑110。在操作S510中,控制逻辑110从接收的主机命令CMD检测关于主机200所需的功能的信息。
在操作S520中,控制逻辑110通过参考映射表来确定与检测的功能相对应的设计文件DF是否已经存储在NVM 120中。当确定设计文件DF尚未存储在NVM 120中时,在操作S530,控制逻辑110将响应消息发送到主机200。根据一个实施例,图10中的操作S340至S390可以在操作S530之后执行。
另一方面,当确定设计文件DF已经存储在NVM 120中时,在操作S540,控制逻辑110将读取命令发送到NVM 120。在操作S550,NVM 120响应于读取命令执行读取操作,并且在操作S555中将设计文件DF发送到控制逻辑110。在操作S560中,控制逻辑110基于设计文件DF来控制对于可重配置逻辑130的重配置。
在操作S570中,控制逻辑110将设计文件DF发送到可重配置的逻辑130。在操作S580中,可通过下载设计文件DF将可重配置的逻辑130重配置为与设计文件DF对应的组件。在操作S590中,可重配置的逻辑130向控制逻辑110发送指示重配置已经完成的响应消息。在操作S595中,控制逻辑110向主机200发送指示重配置已经完成的响应消息。
图14是示出根据本公开的实施例的存储系统10e中的第三数据路径DP3的框图。
参见图14,存储设备100c对应于图1中的存储设备100的修改,并且与图1中的存储设备100相比,还可以包括VM 140(易失性存储器)。VM 140可以存储设计文件DF。主机200可以预先将多个设计文件发送到存储设备100c,以便实时地重配置可重配置的逻辑130。因此,VM 140可以存储分别对应于主机200可执行的应用的多个设计文件。
可以沿着第三数据路径DP3将设计文件DF提供给可重配置的逻辑130。详细地,设计文件DF可以经由配置控制器112从VM 140提供给可重配置的逻辑130。根据一些实施例,可以经由缓冲器(例如图7中的缓冲器114)和控制逻辑110中的配置控制器112将设计文件DF提供给可重配置的逻辑130。
图15是示出根据本公开实施例的存储系统10f中的各种数据路径的框图。
参见图15,控制逻辑110b可以包括命令解码器111、配置控制器112、缓冲器114、处理器115、映射表116、主机接口(IF)117和NVM IF 118,它们经由总线119彼此通信。控制逻辑110b可以对应于图8中的控制逻辑110a的修改,将省略其重复描述。
处理器115可以包括中央处理单元或微处理器。另外,处理器可以控制控制逻辑110b的整体操作。根据实施例,处理器115可以使用多核处理器(例如双核处理器或四核处理器)来实施。
映射表116可以存储已经写入多个设计文件的物理地址。根据实施例,映射表116可以存储已经写入设计文件的NVM 120的物理地址。这将在下面参考图16A更详细地描述。根据实施例,映射表116可以存储已经写入设计文件的VM(例如图14中的VM 140)的物理地址。这将在下面参考图16B更详细地描述。映射表116可以加载到存储器中。
主机IF 117可以在主机200和控制逻辑110b之间提供IF,例如通用串行总线(USB)、MMC、PCIExpress(PCI-E)、AT附件(ATA)、串行AT附件(SATA)、并行AT附件(PATA)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、增强型小盘接口(ESDI)和基于集成驱动电子(IDE)的IF等。
NVM IF 118可以在控制逻辑110b和NVM 120之间提供IF。根据一个实施例,图8中的存储器控制器113可以在NVM IF 118中实施。例如,可以经由NVM IF 118在控制逻辑110b和NVM 120之间发送或接收读取命令、写入命令或数据。根据一个实施例,数个NVM IF可以对应于控制逻辑110b和NVM 120之间的信道的数量。
根据一个实施例,主机IF 117可以从主机200接收设计文件并将接收的设计文件提供给配置控制器112,并且配置控制器112可以将设计文件编程到可重配置的逻辑130中。在一个实施例中,缓冲器114可以向配置控制器112提供设计文件,并且配置控制器112可以将设计文件编程到可重配置的逻辑130中。根据一个实施例,NVM IF 118可以从NVM 120接收设计文件并将所接收的设计文件提供给配置控制器112,并且配置控制器112可以将设计文件编程到可重配置的逻辑130中。
图16A示出根据本公开实施例的用于非易失性存储器NVM的映射表116a。
参见图16A,映射表116a可以存储在其处已经存储了第一至第三设计文件DF1a、DF2a和DF3a的物理地址。例如,映射表116a可以存储在图12中的控制逻辑110中。例如,根据映射表116a,第一设计文件DF1a可以存储在NVM的第一物理地址PPN1a(例如,图12的NVM120),第二设计文件DF2a可以存储在NVM的第二物理地址PPN2a,第三设计文件DF3a可以存储在NVM的第三物理地址PPN3a。
图16B示出了根据本公开实施例的用于易失性存储器VM的映射表116b。
参见图16B,映射表116b可以存储在其处已经存储第一至第三设计文件DF1b、DF2b和DF3b的物理地址。例如,映射表116b可以存储在图14中的控制逻辑110中。例如,根据映射表116b,第一设计文件DF1b可以存储在VM的第一物理地址PPN1b,第二设计文件DF2b可以存储在VM的第二物理地址PPN2b,第三设计文件DF3b可以存储在VM的第三物理地址PPN3b。
图17是示出根据本公开的实施例的存储系统10g的框图。
参见图17,存储系统10g可以包括存储设备100d、主机200和HW加速器300(硬件加速器),它们可以经由总线400彼此通信。例如,存储系统10g可以是服务器或数据中心。存储设备100d可以包括存储器ST和可重配置的加速器RA。这样,存储系统10g可以包括HW加速器300和可重配置的加速器RA二者。在这种情况下,可重配置的加速器RA可以在存储设备100d内实施。
HW加速器300可以通过执行主机200执行的计算当中的预定计算来帮助主机200的计算。例如,HW加速器300可以是图形处理单元(GPU)。可重配置的加速器RA可以通过根据主机200执行的计算类型被实时地重配置来执行与主机200当前执行的应用相对应的计算。这样,在存储系统10g的操作期间由HW加速器300执行的计算不改变,而在存储系统10g的操作期间由可重配置的加速器RA执行的计算可以改变。
根据本实施例,存储设备100d可以通过包括存储器ST而用作现有存储设备,并且存储设备100d还可以通过进一步包括可重配置的加速器RA而用作用于帮助主机200的计算的加速器。在这种情况下,由于在存储设备100d内包括存储器ST和可重配置的加速器RA,所以可以增加存储器ST和可重配置的加速器RA之间的数据处理速度。
图18是示出根据本公开的实施例的网络系统1000的框图。
参见图18,网络系统1000可以包括服务器系统1100以及经由网络NET与服务器系统1100通信的多个终端1210至1230。服务器系统1100可以包括服务器1110和SSD 1120。SSD1120可以对应于根据上述实施例的存储设备100、100'、100a、100b、100c和100d。根据一些实施例,SSD 1120可以使用上面参考图1到图17描述的实施例来实施。
图19是示出根据本公开的实施例的网络系统2000的框图。
参见图19,网络系统2000可以包括客户端组2100和数据中心2200。客户端组2100可以包括经由第一网络NET1(例如因特网)与数据中心2200通信的客户端设备C。数据中心2200是收集各种类型的数据并提供服务的设施,并且可以包括经由第二网络NET2(例如局域网(LAN)或内联网)彼此通信的应用服务器组2210、DB服务器组2220(数据库服务器组)和对象高速缓存服务器组2230。
应用服务器组2210可以包括应用服务器设备AS,应用服务器设备AS可以处理从客户端组2100接收的请求,并且可以根据客户端组2100的请求访问DB服务器组2220或对象高速缓存服务器组2230。DB服务器组2220可以包括存储由应用服务器设备AS处理的多条数据的DB服务器设备DS。对象高速缓存服务器组2230可以包括临时存储DB服务器设备DS中存储的数据或者从DB服务器设备DS读取的数据的对象高速缓存服务器设备OCS,因此可以用作应用服务器设备AS和DB服务器设备DS之间的高速缓存。根据实施例,可以使用上面参考图1至图17描述的实施例来实施DB服务器设备DS。
尽管已经参考本公开的示例性实施例具体示出和描述了本公开的发明构思,但是本领域普通技术人员将理解,在不脱离由所附权利要求限定的精神和范围的情况下可以在其中进行形式和细节上的各种改变。
Claims (15)
1.一种被配置为与主机通信的存储设备,该存储设备包括:
可重配置的逻辑电路,其在所述存储设备的操作期间从针对第一应用实现的第一加速器被改变到针对第二应用实现的第二加速器;
控制逻辑电路,其被配置为从主机接收包括关于根据第二应用主机所需功能的信息的主机命令并且根据所接收的主机命令动态地重配置所述可重配置的逻辑电路,使得所述可重配置的逻辑电路执行该功能;和
存储器,其连接到所述控制逻辑电路,
其中所述控制逻辑电路包括:
配置控制器,所述配置控制器被配置为通过在所述可重配置的逻辑电路中编程用于将所述功能实施到所述可重配置的逻辑电路中的设计文件来动态地重配置所述可重配置的逻辑电路,和
命令解码器,所述命令解码器被配置为从主机命令检测所述功能作为检测的功能,并且确定用于将检测的功能实施到所述可重配置的逻辑电路中的设计文件是否已经存储在所述存储器中。
2.根据权利要求1所述的存储设备,其中所述配置控制器还被配置为从主机接收所述设计文件作为接收的设计文件,并将所述接收的设计文件编程到所述可重配置的逻辑电路中。
3.根据权利要求1所述的存储设备,其中,
所述存储器包括存储所述设计文件的非易失性存储器,和
所述配置控制器还被配置为从所述非易失性存储器接收所述设计文件作为接收的设计文件,并将所述接收的设计文件编程到所述可重配置的逻辑电路中。
4.根据权利要求3所述的存储设备,其中所述控制逻辑电路还包括存储器控制器,所述存储器控制器被配置为控制读取操作用于从所述非易失性存储器读取所述设计文件作为读取的设计文件,并将所述读取的设计文件提供给所述配置控制器。
5.根据权利要求1所述的存储设备,
其中所述存储器包括存储所述设计文件的非易失性存储器,并且
其中,所述配置控制器还被配置为从所述易失性存储器接收所述设计文件作为接收的设计文件,并将所述接收的设计文件编程到所述可重配置的逻辑电路中。
6.根据权利要求1所述的存储设备,其中包括所述控制逻辑电路的第一芯片和包括所述可重配置的逻辑电路的第二芯片安装在单个板上。
7.根据权利要求1所述的存储设备,其中包括所述控制逻辑电路的第一芯片和包括所述可重配置的逻辑电路的第二芯片被实施为封装叠层(POP)。
8.根据权利要求1所述的存储设备,其中所述控制逻辑电路和所述可重配置的逻辑电路实施在单个芯片上。
9.根据权利要求1所述的存储设备,其中所述可重配置的逻辑电路包括现场可编程门阵列(FPGA)。
10.一种存储系统,包括:
存储设备,其包括可重配置的逻辑电路;和
主机,被配置为执行多个应用并且被配置为决定所述可重配置的逻辑电路的重配置使得所述可重配置的逻辑电路作为与多个应用中的第一应用相对应的第一加速器或与多个应用中的第二应用相对应的第二加速器操作,并且发送包括关于所述第一应用的信息的第一主机命令到所述存储设备,
其中,根据所述第一主机命令将所述可重配置的逻辑电路重配置为所述第一加速器,并且
其中在所述存储系统的操作期间并且在发送所述第一主机命令之后,所述主机还被配置为决定所述可重配置的逻辑电路的重配置使得所述可重配置的逻辑电路作为与多个应用中的第二应用相对应的第二加速器操作,并且将包括关于所述第二应用的信息的第二主机命令发送到所述存储设备,
其中所述存储设备还包括:
配置控制器,所述配置控制器被配置为,根据所述第一主机命令,通过在所述可重配置的逻辑电路中编程用于将所述可重配置的逻辑电路实施为所述第一加速器的设计文件,来动态地重配置所述可重配置的逻辑电路;
存储器;和
命令解码器,所述命令解码器被配置为从第一主机命令检测关于第一应用的信息并且确定用于将所述可重配置的逻辑电路实施到第一应用中的设计文件是否已经存储在所述存储器中。
11.根据权利要求10所述的存储系统,其中所述主机还被配置为向所述存储设备发送用于将所述可重配置的逻辑电路编程为所述第一加速器的第一设计文件。
12.根据权利要求10所述的存储系统,其中所述主机还被配置为向所述存储设备发送用于将所述可重配置的逻辑电路编程为所述第二加速器的第二设计文件。
13.一种操作包括可重配置的逻辑电路、配置控制器、存储器和命令解码器的存储设备的方法,所述方法包括:
从主机接收主机命令,该主机命令包括关于主机所需功能的信息,其中所述接收由所述存储设备执行;和
根据主机命令,通过将用于将该功能实施到可重配置的逻辑电路中的设计文件下载到所述可重配置的逻辑电路中,来动态地重配置所述可重配置的逻辑电路以对应于该功能,其中动态地重配置由所述存储设备的配置控制器执行,
其中在所述存储设备的操作期间并且基于接收到主机命令,所述存储设备动态地重配置可重配置的逻辑电路,使得所述可重配置的逻辑电路从作为针对第一应用实现的第一加速器操作被改变为作为针对第二应用实现的第二加速器操作,以便实现主机所需的功能,
其中所述方法还包括:
在动态重新配置之前,从主机命令检测所述功能作为检测的功能,并确定所述设计文件是否已经存储在存储器中,其中检测和确定由所述命令解码器执行。
14.根据权利要求13所述的方法,还包括:在动态地重配置之前,从确定所述检测的功能是否已在所述可重配置的逻辑电路中实施,其中确定由所述命令解码器执行。
15.根据权利要求13所述的方法,其中,
所述存储器存储设计文件,以及
该方法还包括:在动态地重配置之前,由所述存储设备从所述存储器读取所述设计文件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180058641A KR102559581B1 (ko) | 2018-05-23 | 2018-05-23 | 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR10-2018-0058641 | 2018-05-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110531923A CN110531923A (zh) | 2019-12-03 |
CN110531923B true CN110531923B (zh) | 2022-02-11 |
Family
ID=65903903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910242793.0A Active CN110531923B (zh) | 2018-05-23 | 2019-03-28 | 包括可重配置的逻辑的存储设备和操作该存储设备的方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10817440B2 (zh) |
EP (1) | EP3591536B1 (zh) |
KR (1) | KR102559581B1 (zh) |
CN (1) | CN110531923B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US11269645B2 (en) | 2020-03-11 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array |
CN111679596A (zh) * | 2020-04-26 | 2020-09-18 | 苏州泰富晶宇科技有限公司 | 卫星i/o板卡的重构方法和可重构卫星i/o板卡系统 |
US11347652B2 (en) * | 2020-08-31 | 2022-05-31 | Microsoft Technology Licensing, Llc | Banked memory architecture for multiple parallel datapath channels in an accelerator |
US20220083500A1 (en) * | 2020-09-15 | 2022-03-17 | Nvidia Corporation | Flexible accelerator for a tensor workload |
KR20220052771A (ko) * | 2020-10-21 | 2022-04-28 | 삼성전자주식회사 | 전자 장치 및 그 동작방법 |
WO2022131397A1 (ko) * | 2020-12-16 | 2022-06-23 | 주식회사 모빌린트 | Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법 |
US11755208B2 (en) * | 2021-10-12 | 2023-09-12 | Western Digital Technologies, Inc. | Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks |
US11893244B2 (en) | 2021-10-12 | 2024-02-06 | Western Digital Technologies, Inc. | Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887165A (en) * | 1996-06-21 | 1999-03-23 | Mirage Technologies, Inc. | Dynamically reconfigurable hardware system for real-time control of processes |
US6539438B1 (en) * | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
US7171548B2 (en) * | 1998-11-20 | 2007-01-30 | Altera Corporation | Method for managing resources in a reconfigurable computer having programmable logic resources where automatically swapping configuration data between a secondary storage device and the programmable logic resources |
US7617470B1 (en) * | 2005-10-11 | 2009-11-10 | California Institute Of Technology | Reconfigurable integrated circuit and method for increasing performance of a reconfigurable integrated circuit |
US8560996B1 (en) * | 2011-02-15 | 2013-10-15 | Xilinx, Inc. | Method and system for preparing modularized circuit designs for dynamic partial reconfiguration of programmable logic |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1083363A (ja) * | 1996-03-28 | 1998-03-31 | Mega Chips:Kk | ゲームプログラム供給システムおよびプログラム書き換えシステム |
US5946219A (en) | 1996-10-30 | 1999-08-31 | Atmel Corporation | Method and system for configuring an array of logic devices |
US7269641B2 (en) * | 2000-08-30 | 2007-09-11 | Sun Microsystems, Inc. | Remote reconfiguration system |
US6873842B2 (en) | 2001-03-30 | 2005-03-29 | Xilinx, Inc. | Wireless programmable logic devices |
JP3540796B2 (ja) * | 2001-12-28 | 2004-07-07 | 東京エレクトロンデバイス株式会社 | 演算システム |
US7127601B2 (en) | 2002-05-30 | 2006-10-24 | Sun Microsystems, Inc. | System and method for delivering FPGA programming |
JP4334463B2 (ja) | 2004-12-02 | 2009-09-30 | イノテック株式会社 | 半導体集積回路のテスト装置および方法 |
US7265578B1 (en) | 2005-04-04 | 2007-09-04 | Lattice Semiconductor Corporation | In-system programming of non-JTAG device using SPI and JTAG interfaces of FPGA device |
JP2007207136A (ja) * | 2006-02-06 | 2007-08-16 | Nec Corp | データ処理装置、データ処理方法、及びデータ処理プログラム |
US7809936B2 (en) * | 2006-08-02 | 2010-10-05 | Freescale Semiconductor, Inc. | Method and apparatus for reconfiguring a remote device |
US8117137B2 (en) * | 2007-04-19 | 2012-02-14 | Microsoft Corporation | Field-programmable gate array based accelerator system |
KR100958113B1 (ko) | 2007-10-24 | 2010-05-18 | 주식회사 아이티엔티 | 반도체 테스트용 fpga 구성장치 및 이를 이용한 dut 테스트방법 |
JP5373620B2 (ja) * | 2007-11-09 | 2013-12-18 | パナソニック株式会社 | データ転送制御装置、データ転送装置、データ転送制御方法及び再構成回路を用いた半導体集積回路 |
US9239786B2 (en) * | 2012-01-18 | 2016-01-19 | Samsung Electronics Co., Ltd. | Reconfigurable storage device |
KR101920719B1 (ko) * | 2012-11-19 | 2019-02-13 | 삼성전자주식회사 | 논리 장치, 논리 장치를 포함하는 디지털 필터 및 논리 장치를 제어하는 방법 |
US9191617B1 (en) | 2013-12-23 | 2015-11-17 | Altera Corporation | Using FPGA partial reconfiguration for codec applications |
US9530483B2 (en) * | 2014-05-27 | 2016-12-27 | Src Labs, Llc | System and method for retaining dram data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem |
KR102276374B1 (ko) * | 2015-01-09 | 2021-07-14 | 삼성전자주식회사 | PoP 구조의 반도체 패키지 및 그에 따른 리프레쉬 제어방법 |
EP3089035A1 (en) | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
US10140572B2 (en) * | 2015-06-25 | 2018-11-27 | Microsoft Technology Licensing, Llc | Memory bandwidth management for deep learning applications |
US11079936B2 (en) * | 2016-03-01 | 2021-08-03 | Samsung Electronics Co., Ltd. | 3-D stacked memory with reconfigurable compute logic |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US10394991B2 (en) | 2016-10-06 | 2019-08-27 | Altera Corporation | Methods and apparatus for dynamically configuring soft processors on an integrated circuit |
US11115293B2 (en) * | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US10990290B2 (en) * | 2017-05-15 | 2021-04-27 | Alibaba Group Holding Limited | High-volume, low-latency data processing in flexibly configured local heterogeneous computing environments |
US10255909B2 (en) * | 2017-06-29 | 2019-04-09 | Intel IP Corporation | Statistical-analysis-based reset of recurrent neural networks for automatic speech recognition |
JP6911600B2 (ja) * | 2017-07-18 | 2021-07-28 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US10403578B2 (en) * | 2017-09-30 | 2019-09-03 | Intel Corporation | Electronic device package |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10489056B2 (en) * | 2017-11-09 | 2019-11-26 | Nvidia Corporation | Queue manager for streaming multiprocessor systems |
US10394474B2 (en) * | 2017-11-10 | 2019-08-27 | Smart IOPS, Inc. | Devices, systems, and methods for reconfiguring storage devices with applications |
KR102408858B1 (ko) * | 2017-12-19 | 2022-06-14 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법 |
US20190206839A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Electronic device package |
TWI646783B (zh) * | 2018-04-10 | 2019-01-01 | 大陸商深圳大心電子科技有限公司 | 解碼方法及儲存控制器 |
WO2020190807A1 (en) * | 2019-03-15 | 2020-09-24 | Intel Corporation | Systolic disaggregation within a matrix accelerator architecture |
US11507702B2 (en) * | 2019-11-05 | 2022-11-22 | Apple Inc. | Secure mode switching in neural processor circuit |
-
2018
- 2018-05-23 KR KR1020180058641A patent/KR102559581B1/ko active IP Right Grant
-
2019
- 2019-03-18 EP EP19163488.0A patent/EP3591536B1/en active Active
- 2019-03-25 US US16/363,791 patent/US10817440B2/en active Active
- 2019-03-28 CN CN201910242793.0A patent/CN110531923B/zh active Active
-
2020
- 2020-10-26 US US17/080,614 patent/US11550738B2/en active Active
-
2021
- 2021-01-13 US US17/148,011 patent/US11650940B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887165A (en) * | 1996-06-21 | 1999-03-23 | Mirage Technologies, Inc. | Dynamically reconfigurable hardware system for real-time control of processes |
US7171548B2 (en) * | 1998-11-20 | 2007-01-30 | Altera Corporation | Method for managing resources in a reconfigurable computer having programmable logic resources where automatically swapping configuration data between a secondary storage device and the programmable logic resources |
US6539438B1 (en) * | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
US7617470B1 (en) * | 2005-10-11 | 2009-11-10 | California Institute Of Technology | Reconfigurable integrated circuit and method for increasing performance of a reconfigurable integrated circuit |
US8560996B1 (en) * | 2011-02-15 | 2013-10-15 | Xilinx, Inc. | Method and system for preparing modularized circuit designs for dynamic partial reconfiguration of programmable logic |
Also Published As
Publication number | Publication date |
---|---|
US11650940B2 (en) | 2023-05-16 |
EP3591536B1 (en) | 2023-05-10 |
KR102559581B1 (ko) | 2023-07-25 |
EP3591536A1 (en) | 2020-01-08 |
US20210133125A1 (en) | 2021-05-06 |
US11550738B2 (en) | 2023-01-10 |
US20190361821A1 (en) | 2019-11-28 |
CN110531923A (zh) | 2019-12-03 |
KR20190133555A (ko) | 2019-12-03 |
US20210056054A1 (en) | 2021-02-25 |
US10817440B2 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110531923B (zh) | 包括可重配置的逻辑的存储设备和操作该存储设备的方法 | |
CN110851378A (zh) | 双列直插式存储器模块(dimm)可编程加速卡 | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算系统 | |
KR20160056723A (ko) | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 | |
US11868626B2 (en) | Storage device set including storage device and reconfigurable logic chip, and storage system including the storage device set | |
US12061818B2 (en) | Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set | |
US11809953B1 (en) | Dynamic code loading for multiple executions on a sequential processor | |
US20160299690A1 (en) | Data storage device and data processing system including the same | |
US11586355B2 (en) | Selectively operable memory device | |
KR20220061828A (ko) | 가속기를 포함하는 컴퓨팅 시스템 및 그 동작 방법 | |
US11836606B2 (en) | Neural processing unit and electronic apparatus including the same | |
EP4148572B1 (en) | Computational storage device and storage system including the computational storage device | |
US11321254B2 (en) | Computing system for transmitting completion early between serially connected electronic devices | |
KR102440665B1 (ko) | 계층적 메모리 장치 | |
US20240354030A1 (en) | Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set | |
US20240303196A1 (en) | Memory device and method for scheduling block request | |
CN114528228A (zh) | 与主机处理器通信的设备、包括该设备的系统以及操作该设备的方法 | |
WO2021034597A1 (en) | Hierarchical memory apparatus |
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 |