CN110389909A - 使用深度神经网络优化固态驱动器的性能的***和方法 - Google Patents
使用深度神经网络优化固态驱动器的性能的***和方法 Download PDFInfo
- Publication number
- CN110389909A CN110389909A CN201910302894.2A CN201910302894A CN110389909A CN 110389909 A CN110389909 A CN 110389909A CN 201910302894 A CN201910302894 A CN 201910302894A CN 110389909 A CN110389909 A CN 110389909A
- Authority
- CN
- China
- Prior art keywords
- prediction
- controller
- host
- request
- dnn
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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/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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/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/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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种数据存储设备的控制器包括:主机接口,提供到主机计算机的接口;闪存转换层(FTL),将逻辑块地址(LBA)转换为与输入/输出(I/O)请求相关联的物理块地址(PBA);闪存接口,提供到闪存介质的接口,以访问存储在闪存介质上的数据;以及一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式。一个或多个DNN模块向FTL提供与从主机计算机接收的一个或多个过去的I/O请求和当前I/O请求相关联的一个或多个预测输出,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。FTL预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
Description
相关申请的交叉引用
本申请要求于2018年4月16日提交的序列号为62/658,190的美国临时专利申请的权益和优先权,其公开内容通过引用整体并入本文。
技术领域
本公开一般涉及深度神经网络(deep neural network),更具体地,涉及使用深度神经网络优化固态驱动器(SSD)的性能的***和方法。
背景技术
固态驱动器(SSD)包括用于存储数据的闪存介质。主机(host)使用逻辑块地址(LBA)访问存储在SSD中的数据。当主机执行数据输入/输出(I/O)请求时,SSD的SSD控制器可能需要执行若干内部操作以便完成(fulfil)主机I/O操作。例如,SSD控制器响应于主机I/O请求获取(fetch)闪存转换层(FTL)的数据结构(如果它不存在于芯片上(on-chip)),执行LBA查找以进行逻辑到物理地址转换,经由一个或多个闪存通道(flash channel)从物理位置(页面/块)获取用户数据。此外,SSD控制器可以使用复杂算法(例如低密度奇偶校验(LDPC)和Bose-Chaudhuri-Hocquenghem(BCH))执行纠错,解压缩被纠错的数据,解密未压缩数据,更新FTL数据结构,并向主机计算机(host computer)提供各种统计数据和日志,并卸载(offload)缓存。此外,SSD控制器需要在存在诸如回收和垃圾收集的内部后台操作的情况下执行上述步骤。
如上所述访问存储在SSD中的数据的步骤和操作可能是复杂的并且消耗SSD控制器的大量资源和时间。在采用复杂算法执行和管理SSD所需的内部任务时,SSD控制器需要为主机计算机提供足够的带宽和延迟(latency),以执行主机发起的(host-initiated)I/O操作。同时,SSD控制器尝试消耗最少量的功率并使用最少的资源(诸如存储缓冲器)以便优化I/O操作的成本。
发明内容
根据一个实施例,一种数据存储设备的控制器包括:主机接口,提供到主机计算机的接口;闪存转换层(FTL),将逻辑块地址(LBA)转换为与经由主机接口从主机计算机接收的输入/输出(I/O)请求相关联的物理块地址(PBA);闪存接口,提供到数据存储设备的闪存介质的接口,以访问存储在数据存储设备的闪存介质上的数据;以及一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式。主机接口向一个或多个DNN模块提供一个或多个输入向量,一个或多个DNN模块向FTL提供与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求和当前I/O请求相关联的一个或多个预测输出,并且其中一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。FTL预取(prefetch)存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
根据另一实施例,一种数据存储设备包括:一个或多个闪存介质;控制器,被配置为控制一个或多个闪存介质;以及一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式。一个或多个DNN模块从控制器接收一个或多个输入向量,向控制器提供与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求和当前I/O请求相关联的一个或多个预测输出,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。控制器预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
根据另一实施例,一种桥接(bridge)设备包括:一个或多个处理器;一个或多个深度神经网络(DNN)模块;处理器访问模块,提供一个或多个处理器与一个或多个DNN模块之间的接口;主机接口;以及到固态驱动器(SSD)的设备接口。一个或多个DNN模块经由主机接口从SSD接收一个或多个输入向量,向SSD提供与使用一个或多个输入向量来自远程发起者的一个或多个过去的I/O请求和从远程发起者接收的当前I/O请求相关联的一个或多个预测输出,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。SSD预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据,并经由设备接口将数据提供给桥接设备。
现在将参考附图更具体地描述并在权利要求中指出上述和其他优选特征,包括各种新颖的实施细节和事件组合。将理解,本文描述的特定***和方法仅作为例示被示出,而不是作为限制。如本领域技术人员将理解的,在不脱离本公开的范围的情况下,可以在各个以及多个实施例中采用本文描述的原理和特征。
附图说明
图1示出了根据一个实施例的具有访问模式识别能力的示例SSD的框图;
图2示出了根据一个实施例的示例DNN模型的框图;以及
图3示出了根据一个实施例的实现用于预测主机访问模式的DNN模块的示例桥接设备的框图。
具体实施方式
本文公开的每个特征和教导可以单独使用或与其他特征和教导结合使用,以提供用于使用深度神经网络优化固态驱动器(SSD)的性能的***和方法。参考附图进一步详细描述了单独地以及组合地利用许多这些附加特征和教导的代表性示例。该详细描述仅旨在向本领域技术人员教导用于实践本教导的各方面的进一步细节,并且不旨在限制权利要求的范围。因此,在详细描述中以上公开的特征的组合对于在最广泛意义上实践本教导可能不是必需的,而是仅仅教导以描述本教导的特定代表性示例。
在以下描述中,仅出于解释的目的,阐述了具体的术语以提供对本公开的透彻理解。然而,对于本领域技术人员将清楚的是,实践本公开的教导不一定需要这些具体细节。
这里的详细描述的一些部分是根据对计算机存储器内的数据位的操作的算法和符号表示来呈现的。数据处理领域的技术人员使用这些算法描述和表示来有效地将他们工作的实质传达给本领域其他技术人员。这里算法通常被认为是导致期望结果的自相一致的步骤序列。这些步骤是需要物理量的物理操纵的步骤。通常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。
然而,应记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从下面的讨论中明确指出,否则应理解,在整个描述中,利用诸如“处理”、“计算(computing)”、“计算(calculating)”、“确定”、“显示”等术语的讨论是指计算机***或类似电子计算设备的动作和过程,其将在计算机***的寄存器和存储器内表示为物理(电子)量的数据操纵和转换成在计算机***存储器或寄存器或者其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
此外,代表性示例和从属权利要求的各种特征可以以未具体和明确列举的方式组合,以便提供本教导的另外有用的实施例。还明确指出,为了原始公开的目的,以及为了限制所要求保护的主题内容,实体的组的所有值的范围或指示都公开了每个可能的中间值或中间实体。还明确指出,附图中所示的部件的大小和形状被设计成有助于理解如何实施本教导,但不旨在限制示例中所示的大小和形状。
即将发生的主机访问输入/输出(I/O)操作的预测(prediction)对于优化固态驱动器(SSD)的性能可以是非常有用的。当主机应用在时间上重复执行其功能时,关于对诸如SSD的数据存储设备的I/O访问模式,这些主机访问模式中的一些会出现。这种存储访问模式可能难以辨别,因为它们可能在更长的持续时间内重复。此外,许多主机应用可以共享数据存储设备,因此可能源自多个主机应用的多个模式可能变得难以识别和彼此辨别。本公开提出了一种基于深度神经网络(DNN)的方案,用于检测SSD控制器的、或者SSD控制器与现场可编程门阵列(FPGA)的组合的内部的主机I/O访问的时间和空间模式。
当SSD控制器接收到主机I/O操作时,SSD控制器执行从逻辑地址(例如,逻辑块地址(LBA))到物理地址(例如,物理块地址(PBA))的转换并从物理地址(例如,页面或块)中获取用户数据到(fetch into)片上缓冲器(例如,读取缓冲器)。SSD控制器可以运行诸如低密度奇偶校验(LDPC)和Bose-Chaudhuri-Hocquenghem(BCH)的纠错算法,以排除不常见的主机I/O访问模式并纠正在读取操作期间可能发生的任何比特错误,并且在将用户数据提供给请求主机之前进一步对其进行解密和/或解压缩。所有这些操作可能必须与内部后台操作(例如回收和垃圾收集(GC))争夺有限的SSD资源。
如果SSD控制器预先知道(advance knowledge)在不久的将来的主机I/O操作(例如,随后访问的LBA),则SSD控制器可以提前处理一些操作,并为所请求的主机I/O操作提供优化的性能。例如,在知道由主机进行的即将发生的存储访问的情况下,SSD控制器可以从很可能被访问的闪存介质中预取用户数据,以实现具有更高命中率和低延迟的主机I/O操作,同时优化其内部后台操作。例如,多个主机应用在很长的持续时间内重复执行其功能可能会产生(give rise)某些LBA序列的模式。然而,使用状态机检测长且复杂的LBA模式可能很复杂且不切实际。本***和方法提供对主机I/O访问中的LBA模式或命令模式的检测以及对即将访问SSD的特定物理地址的预测。用于主机访问模式识别的本技术可以应用于检测空间模式(例如,LBA)和时间模式两者,以实现SSD的内部资源的最佳分配和使用。
本公开描述了用于使用神经网络检测主机I/O访问中的空间模式的技术。在一个或多个主机上运行的各种应用可以将用户数据存储在诸如SSD的相同数据存储设备中。随着技术的演进,随着SSD存储容量的显著增加,这种情况更有可能发生。在主机应用从SSD读取数据和写入数据时,在对SSD的数据访问中可能存在多个模式。这样的模式可能很长并且会随着时间的推移而展开。SSD的SSD控制器可以检测主机应用的各种数据访问模式(例如LBA或LBA集群模式)、非易失性存储器快速(NVMe)命令(这里也称为操作码(opcode))和/或即将发生的空闲间隙或预见到的(anticipated)主机存储访问的特征。SSD控制器可以基于各种指示符使用关于数据访问模式的信息,以在带宽、延迟和内部资源的使用方面优化SSD的性能。
根据一个实施例,本***和方法可以采用基于深度神经网络(DNN)的方案,例如长短期记忆(LSTM)网络和卷积神经网络(CNN),以通过主机应用有效地检测数据访问模式(例如LBA/LBA集群模式),并且预测即将发生的主机访问I/O操作,例如LBA/LBA集群访问和即将发生的主机命令。预测的主机访问I/O操作不仅可以用来执行SSD内部操作以提供主机请求的数据,还可以利用对即将发生的主机I/O访问操作的知识来调度内部后台操作。这样的操作的示例包括但不限于:1)数据的预取(与缓存预取(cache prefetch)分开);2)缓存逐出策略的优化;3)即将发生的命令(例如Flush、Trim和NVMe管理接口(NVMe-MI)命令)的优化执行;以及4)内部后台操作(例如回收和垃圾收集(GC))的优化调度。
图1示出了根据一个实施例的具有访问模式识别能力的示例SSD的框图。SSD 100包括SSD控制器110和一个或多个闪存介质151a-151n。SSD控制器110具有三个功能单元或分区(partition),包括主机接口111、闪存转换层(FTL)112和闪存接口113。SSD控制器110的闪存接口113经由相应的闪存通道125访问闪存介质151a-151n(例如,NAND芯片)。
在一些实施例中,SSD 100与非易失性存储器(NVMe)标准或NVMe over Fabrics(NVMe-oF)标准兼容。在NVMe-oF的情况下,运行主机应用的主机计算机(未示出)可以通过各种网络组构(fabrics)耦合到SSD 100,网络结构包括但不限于以太网、光纤通道和InfiniBand。术语“主机计算机”和“主机应用”在本公开中可以可互换地使用而不会引起混淆。
主机接口111可以通过各种协议(例如***组件互连快速(PCIe)或以太网)接收主机I/O命令121,执行命令获取、命令运行的发起、数据传输以及回到主机应用的完成条目(completion entry)的发布。主机接口111可以解析所获取的命令,从解析的命令中提取LBA、数据传输的长度和其他命令字段,并将它们提供给FTL层112。FTL层112执行从逻辑地址(例如,逻辑块地址)到相应的物理地址的转换,并且与闪存接口113接口连接以交换用户数据以及运行后台操作所需的内部数据。物理地址可以是元组(tuple)的形式,例如,闪存通道、块编号、页面编号、页面偏移。根据主机I/O命令的类型,物理地址可用于获取用于读取命令或程序的用户数据或写入用于写入命令的接收数据。
在主机接口111获取命令并将LBA和其他字段呈现给FTL层112时,主机接口111还向DNN模块161的一个或多个DNN引擎提供一组输入171(这里也称为输入向量)。每个DNN引擎在这里也可以称为采用如图2所示的相应DNN模型的DNN处理器。在图1所示的示例中,DNN模块161被实现为SSD控制器110的一部分,其管理和控制对SSD 100的闪存介质151a-151n的访问。然而,应理解,在不脱离本公开的范围的情况下,DNN模块161和/或预测误差估计器163(将在下面进一步详细讨论)可以被实现为在SSD 100的外部。
根据一个实施例,SSD控制器110可以以现场可编程门阵列(FPGA)和专用集成电路(ASIC)实现。在另一个实施例中,DNN模块161和SSD控制器110可以实现在单个ASIC中。实现为具有DNN模块161的本SSD 100可以应用于各种目标应用,例如计算机视觉,包括模式识别、图像分类、对象检测和分割。实现为具有DNN模块161的本SSD 100可以进一步应用于其他商业应用,例如自主驾驶和增强现实(AR)或虚拟现实(VR)。
DNN模块161处理输入向量171,诸如LBA、操作码、增量时间、命名空间ID(NSID)、主机ID等,并且预测可由主机应用即将访问的LBA或LBA集群。DNN预测的结果可以存储在预测表162中,该预测表162将一个或多个过去的主机I/O请求和当前主机I/O请求与可跟随在当前主机I/O请求之后的预测的主机I/O请求相关联。预测表162的格式可以根据***配置和目标应用而变化。
来自DNN模块161的预测输出172(诸如LBA、操作码、空闲时间等)被馈送到FTL层112以执行各种查找动作,以便响应于检测到的主机I/O操作的模式来优化SSD 100的性能。在主机应用访问用户数据时,预测误差估计器163比较预测的主机I/O访问的模式和检测到的实际主机I/O访问模式,并且如果预测的结果与实际主机访问模式不匹配,则计算DNN模块161的任何预测误差173。预测误差估计器163将预测误差173反馈回DNN 161用于进一步训练和重新学习。继续DNN模块161的(重新)训练/(重新)学习过程以改良(refine)DNN模型并更好地预测主机I/O操作的模式以优化SSD100的性能。预测表162随着训练/学习过程的重复而更新。
在主机访问发生时,主机接口111将输入向量171馈送到DNN模块161。输入向量171可以包括关于主机访问的各种输入,其可以用于识别对闪存介质151a-151n的访问模式。DNN模块161不仅可以使用当前输入向量,而且在主机访问模式可以通过多个输入向量来识别时还可以使用在当前输入向量之前接收的多个输入向量来检测主机访问模式。输入向量171中包括的条目的示例是但不限于LBA、LBA的范围、主机访问(读取/写入)的长度、主机访问(读取/写入)的数量、命名空间ID、主机ID(例如,主机NVMe限定(qualified)名称(NQN))、命令操作码(OPC)、由命令操作码指示的I/O类型(例如,读取/写入/刷新(flush)等)、流ID、NVM集ID、时间增量和/或时间戳、以及其他相关的存储参数。
馈送到FTL 112的预测输出172的示例包括但不限于LBA、LBA集群、主机访问的类型(例如,主机命令、读取/写入/刷新等)、即将发生的空闲间隙、即将发生的访问量(accessvolume)(例如,b/w、大小等)、以及关于DNN模块161的其他信息。
根据一个实施例,本***和方法可以结合一个或多个DNN模块(例如,LSTM网络、CNN)来实现并使用各种特征,以便有效地检测主机I/O操作的访问模式。这些特征的示例可以包括但不应限于监督(supervised)学习(例如,用户发起的学习)和无监督(unsupervised)学习(例如,自我学习或训练)、以及学习新模式和忘记非活动模式。下面将更详细地讨论本***和方法的这些特征中的一些。
根据一个实施例,本***和方法可以操作长短期记忆(long short term memory,LSTM)网络。LSTM网络包括多个LSTM单元(或块)以形成循环神经网络(recurrent neuralnetwork,RNN)的层。LSTM单元由元胞(cell)和多个门(例如输入门、输出门和忘记门)组成。该元胞负责在任意时间间隔内“记住”值。三个门中的每一个门都用作多层前馈(feedforward)RNN中的“常规”人工神经元(neuron)。这些门可以计算加权和的激活(使用激活函数),并且这些门和元胞彼此连接。“长短期”的表达是指LSTM网络可以模仿(model)可能持续很长一段时间的短期记忆。LSTM模型非常适合于对在重要事件之间的未知大小和持续时间的给定时滞的时间序列进行分类、处理和预测。
I/O特征描述符的序列由LSTM网络来维持,并且被用于对下一个I/O操作或接下来的一些I/O操作进行推断。每个I/O特征描述符中的项被描述为如上所述的“输入向量”。输入向量在接收到新的主机命令时被更新。所述序列是对能够与该序列匹配(如果之前已经看到过)并对接下来的I/O操作进行预测的训练的(trained)LSTM网络的输入。
根据一个实施例,主机命令中的LBA访问可以被转换为区块号(chunk number),其中较大的区块大小对应于闪存介质151a-151n上的擦除块(erase block)的大小。来自要被访问的下一区块号的DNN模块161的预测输出172可以馈送到FTL 112,以便对相应的区块和擦除块调度预取、垃圾收集和其他操作。
LSTM网络可以被配置为在执行主机访问时被持续地训练。可以基于若干约束来确定为LSTM训练而选择的序列的最大大小(这里也称为世代长度(epoch length))。例如,序列的最大大小可以大于或等于其中要识别主机访问模式的访问的最大长度。此外,序列的最大大小可以小于或等于用于模式检测的可用计算资源不会导致对其他SSD操作(特别是,主机发起的I/O操作)的延迟或影响的最大长度。通常,更大的最大世代长度需要更多的资源。根据一个实施例,在***要求和SSD的操作条件改变时,可以选择和更新用于LSTM训练的序列的最大大小。在一个实施例中,可以基于以下各项确定基于LSTM训练的序列的最大大小:将用户数据存储在闪存介质151a-151n中以及访问闪存介质151a-151n中的用户数据的一个或多个目标应用;用于训练/学习以及执行主机访问模式的预测的DNN模块161的资源(例如,处理器、存储缓冲器)的可用性;以及从主机应用接收的用于I/O操作的工作负载。
根据一个实施例,本***和方法可以采用多层神经网络以检测主机访问模式的序列。图2示出了根据一个实施例的示例DNN模型的框图。DNN模型200包括多个层,包括输入层201、一个或多个中间层211和输出层221。DNN模型200的每个层包括多个节点,这里也称为神经元。每个节点或神经元表示具有一个或多个输入和输出的计算单元。来自层中的多个节点的每个输入可以被馈送到相邻层中的每个节点。类似地,输出可以被馈送到相邻层中的多个节点。
在本示例中,输入层201具有l个节点,每个中间层211具有m个节点,输出层221具有n个节点。网络中的每个节点都连接到相邻层中的每个节点。取决于DNN模型200的应用,节点l、m、n的数量可以彼此相同或不同。虽然本示例仅示出具有相同数量的节点的两个中间层211,但是应当理解,在不脱离本公开的范围的情况下,可以存在任何数量的中间层以及每个中间层中的不同数量的节点。
根据一个实施例,DNN模型200可以以在主机计算机上运行的应用来实现。主机计算机可以具有多个处理器,例如中央处理单元(CPU)和/或图形处理单元(GPU),作为DNN模型200的计算资源。根据另一实施例,DNN模型200可以实现在数据存储设备中,例如包括一个或多个CPU和/或GPU作为DNN模型200的计算资源的固态驱动器(SSD)。在其他实施例中,多个计算资源可以分布在计算机***上,并且DNN模型200中的计算可以分布在一个或多个主机计算机以及一个或多个数据存储设备上。
输入层201接收输入向量250(例如,图1的输入向量171),并且输出层221可以产生预测输出251(例如,图1的预测输出172)。输入向量250可以包括LBA或LBA范围、操作码、流ID、命名空间ID、数据大小、时间戳等中的一个或多个。预测输出251可以包括关于主机要发布的下一个或者接下来的一些命令的信息。对于基于输入向量250的序列预测的每个主机命令,预测输出251可以对应于即将发生的主机命令本身、与主机很可能发布的读取或写入命令相对应的LBA或LBA范围、或者命令的数据大小。在另一示例中,预测输出251可以包括分类变量,该分类变量指示预测的主机命令是否是读取、写入、刷新(同步缓存)命令、管理命令、或诊断命令。
根据一个实施例,可以在指定的训练模式中训练包括LSTM网络的DNN模型200,其中从主机向SSD发送多个随机选择的I/O工作负载,以便使用可能的访问模式的范围来执行训练。替选地,可以设计LSTM网络,使得SSD控制器(例如,图1的SSD控制器110)周期性地且不断地从输入的主机命令中学习,只要其预测成功率保持改善即可。关于即将发生的主机命令的序列的信息被周期性地发送到训练的LSTM模型,以产生关于接下来一些主机命令的推断。如果训练的LSTM模型显示了低精度等级,则SSD控制器可以设置触发全新再训练和/或终止当前推断活动的标志或值,并分配和声明资源以执行新的LSTM训练。
参考图1,SSD控制器110使用来自DNN模块161的关于即将发生的主机I/O访问的预测来优化SSD 100的性能。存在能够使用即将发生的主机I/O访问的知识的各种方式。例如,SSD控制器110能够预取预见到的用户数据,采用数据缓存逐出策略,必要时预取FTL数据结构,优化命令执行,基于预见到的主机刷新命令优化写入缓冲器刷新,在预见到的主机“获取日志(Get Log)”命令之前准备统计数据和日志数据,执行各种其他用户I/O以及管理NVMe命令,优化用于清点、配置和监视基于NVMe的数据存储设备(例如,基于NVMe的SSD)的NVMe-MI命令,并基于预见到的空闲时段优化内部操作的调度。此外,例如,当用户在由诸如Amazon Web Services(AWS)或Microsoft Windows Azure之类的超大规模存储(hyper-scaler)提供的出租的计算和存储资源上开始全新的应用时,SSD控制器110可以对SSD 100执行用户可配置的重置。
DNN模块161可以检测主机应用的漫长、复杂和交错的数据访问模式。例如,基于对某些LBA或LBA集群的预测的即将发生的主机读取命令,SSD控制器110可以预取数据。预取的数据可以保存在SSD 100的片上或片外(off-chip)存储器中。这样的预取的数据可以以最小的延迟提供给主机应用。该技术可显著地降低读取延迟性能。
当DNN模块161识别即将发生的LBA或LBA集群以对其执行读取或写入操作时,SSD控制器110可以使用该知识来执行更加优化的缓存管理。例如,在缓存逐出操作中,SSD控制器110必须选择缓存中的块以进行逐出。DNN或LSTM计算并分配对缓存中存在的每个块的即将发生的主机访问的概率。当必须从缓存中逐出块时,SSD控制器110选择具有即将访问的最低概率的块。如果缓存中的多个块具有相同的最低的主机访问概率,则SSD控制器110选择具有相同的最低概率的块之中的、具有最旧的时间戳的块用于逐出。如果预测的数据存在于片上或片外缓存缓冲器中,则SSD控制器110可降低数据的逐出优先级。另一方面,如果在不久的将来不预测某些LBA范围或LBA群集,则SSD控制器110增加那些LBA的逐出优先级。逐出优先级可以基于对即将访问某些LBA范围或LBA集群的预测而动态地改变。
在执行主机命令时,可能需要将存储在闪存介质151a-151n中的FTL数据结构115(例如写入缓存116和读取预取缓存117)获取到FTL 112。在DNN模块161预测在不久的将来将访问的LBA或LBA集群时,SSD控制器110可以预取FTL数据结构115以减少执行相关联的主机I/O命令的延迟。
除了正常的数据读取和写入命令以外,主机应用还可以发出各种命令。当DNN模块161预测即将发生的命令时,SSD控制器110可以适时地(opportunistically)使用该知识。例如,有时主机可以发出Flush(刷新)命令。如果在不久的将来预见到Flush命令,则SSD控制器110可能(potentially)能够提早开始写入缓存刷新操作。当预见到诸如“Get Smartpage(获取智能页面)”或“Get Log page(获取日志页面)”的主机命令时,SSD控制器110可以保持数据准备就绪。可以适时地使用该方法来管理和准备与兼容NVMe的SSD的各种管理(administrative)命令和管理(management)接口命令(例如,NVMe-MI命令)相关联的SSD100中存储的数据。
SSD控制器110可以周期性地执行许多管家任务(这里也称为后台操作)。通常,SSD控制器110尝试执行这样的后台操作以最小化对同时执行的主机I/O命令的影响。由于这些活动本质上是固有异步的,因此在不影响I/O延迟的情况下执行后台操作的最佳调度成为一个困难且具有挑战性的问题。当DNN模块161预测主机数据访问之间的空闲间隙时,SSD控制器110可以使用关于空闲间隙的知识来适时地提前(prepone)一些后台操作。类似地,SSD控制器110可以使用预见到的大量(heavy)主机数据访问的任何DNN预测来延后(postpone)一些后台操作。
图3示出了根据一个实施例的实现用于预测主机访问模式的DNN模块的示例桥接设备的框图。桥接设备301包括处理器310,处理器310执行固件(F/W)311、处理器访问模块(PAM)312、DNN模块313、写入缓冲器314、NVMe-oF硬件(H/W)数据路径315、读取缓冲器316、PCIe应用(PAPP)层317和PCIe根端口(RP)318的指令。桥接设备301可以与NVMe-oF标准兼容。在这种情况下,桥接设备301可以从远程发起者340(例如,主机计算机或在主机计算机上运行的应用)接收NVMe-oF命令,并且提供到后端SSD 350的数据存储接口,后端SSD 350可以是NVMe兼容的SSD。在一个实施例中,桥接设备301可以集成在如在FPGA或ASIC中实现的与NVMe-oF标准兼容的以太网SSD(eSSD)内。桥接设备301可以包括计算和存储器资源以执行深度神经网络(DNN)学习和训练。使用所分配的计算和存储器资源,桥接设备301可以从主机计算机或主机应用卸载各种计算和存储密集型功能,以便在数据存储设备(在本示例中为SSD 350)附近或内部提供加速的数据访问。
NVMe-oF硬件(H/W)数据路径315使用基于以太网的传输协议上的远程直接存储器访问(RDMA)协议提供到远程发起者340的主机接口。包括写入缓冲器314和读取缓冲器316的片上数据缓冲器被用于促进远程发起者340与后端SSD 350之间的数据传输。PAPP层317和PCIe RP 318提供到后端SSD 350的NVMe接口。处理器访问模块(PAM)312向运行固件311的嵌入式处理器310提供对NVMe-oF H/W数据路径315的访问。DNN模块313可以实现上述LSTM/CNN逻辑,以实现LBA/主机访问预测。NVMe-oF H/W数据路径315将从远程发起者340接收的输入向量(诸如LBA)和主机命令馈送到DNN模块313。在嵌入式处理器310上运行的固件311可以配置DNN模块313以及从DNN模块313读取预测的LBA和操作码。固件311可以使用来自DNN模块313的预测输出来评估DNN模块313的预测准确度和DNN模块313的其他性能参数。DNN模块313结合固件311,可以估计预测误差的准确度,以执行图1的预测误差估计器163的功能。
根据一个实施例,一种数据存储设备的控制器包括:主机接口,提供到主机计算机的接口;闪存转换层(FTL),将逻辑块地址(LBA)转换为与经由主机接口从主机计算机接收的输入/输出(I/O)请求相关联的物理块地址(PBA);闪存接口,提供到数据存储设备的闪存介质的接口,以访问存储在数据存储设备的闪存介质上的数据;以及一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式。主机接口向一个或多个DNN模块提供一个或多个输入向量,一个或多个DNN模块向FTL提供与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求和当前I/O请求相关联的一个或多个预测输出,并且其中所述一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。FTL预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
一个或多个预测输出可以识别主机操作之间的空闲时间,并且FTL可以在空闲时间期间执行闪存介质的后台操作。
一个或多个DNN模块可以包括存储基于当前I/O请求的多个预测输出的预测表。
控制器还可以包括预测误差估计器,被配置为向一个或多个DNN模块提供预测误差,以执行训练或学习与一个或多个过去的I/O请求、当前I/O请求、以及至少一个预测的I/O请求相关联的I/O访问模式。
FTL可以基于主机计算机的I/O访问模式确定时间并且执行以下操作中的一个或多个:获取或更新FTL的数据结构、执行纠错、解压缩数据、解密数据、执行后台操作、向主机计算机提供统计数据和日志、以及卸载缓存。
控制器可以在现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或FPGA与ASIC的组合中实现。
一个或多个DNN模块可以采用长短期记忆(LSTM)网络或卷积神经网络(CNN)。
数据存储设备可以是非易失性存储器快速(NVMe)固态驱动器(SSD)或组构上NVMe(NVMe-oF)SSD。
一个或多个输入向量可以包括以下各项中的一个或多个:LBA、LBA的范围、主机访问的长度、主机访问的数量、命名空间ID、主机ID、命令操作码(OPC)、由命令操作码指示的I/O类型、流ID、NVM集ID、时间增量和/或时间戳。
一个或多个预测输出可以包括LBA、LBA集群、主机访问的类型、即将发生的空闲间隙、即将发生的访问量中的一个或多个。
一个或多个DNN模块可以分配对缓存中存在的每个块的即将访问的概率,并且控制器可以从缓存中逐出具有最低概率的块。
如果缓存中的多个块具有相同的最低概率,则控制器可以从缓存中逐出具有最旧的时间戳的块。
根据另一实施例,一种数据存储设备包括:一个或多个闪存介质;控制器,被配置为控制一个或多个闪存介质;以及一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式。一个或多个DNN模块从控制器接收一个或多个输入向量,向控制器提供与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求以及当前I/O请求相关联的一个或多个预测输出,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。控制器预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
一个或多个预测输出可以识别主机操作之间的空闲时间,并且FTL可以在空闲时间期间执行闪存介质的后台操作。
控制器可以包括预测误差估计器,被配置为向一个或多个DNN模块提供预测误差以执行训练或学习与一个或多个过去的I/O请求、当前I/O请求、以及至少一个预测的I/O请求相关联的主机访问模式。
控制器可以在现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或FPGA与ASIC的组合中实现。
数据存储设备可以是非易失性存储器快速(NVMe)固态驱动器(SSD)或组构上NVMe(NVMe-oF)SSD。
一个或多个DNN模块可以基于即将访问的概率向缓存中存在的每个块分配序号(number),并且控制器可以从缓存中逐出具有最低概率的块。
如果缓存中的多个块具有相同的最低概率,则控制器可以从缓存中逐出具有最旧的时间戳的块。
根据另一实施例,一种桥接设备包括:一个或多个处理器;一个或多个深度神经网络(DNN)模块;处理器访问模块,提供一个或多个处理器与一个或多个DNN模块之间的接口;主机接口;以及到固态驱动器(SSD)的设备接口。一个或多个DNN模块经由主机接口从SSD接收一个或多个输入向量,向SSD提供与使用一个或多个输入向量来自远程发起者的一个或多个过去的I/O请求和从远程发起者接收的当前I/O请求相关联的一个或多个预测输出,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求。SSD预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据,并经由设备接口将数据提供给桥接设备。
桥接设备还可以包括多个缓冲器,用于存储要在远程发起者和SSD之间传输的数据。
到SSD的接口可以包括PCIe应用(PAPP)层和PCIe根端口(RP)。
主机接口可以是与NVMe-oF兼容的组构(fabric)接口,并且设备接口可以与NVMe兼容。
一个或多个DNN模块可以在现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或FPGA与ASIC的组合中实现。
上文已经描述了以上示例实施例,用于说明实现用于使用深度神经网络优化固态驱动器(SSD)的性能的***和方法的各种实施例。本领域普通技术人员将想到对所公开的示例实施例的各种修改和偏离。在所附权利要求中阐述了旨在落入本发明范围内的主题内容。
Claims (20)
1.一种数据存储设备的控制器,包括:
主机接口,提供到主机计算机的接口;
闪存转换层(FTL),将逻辑块地址(LBA)转换为与经由主机接口从主机计算机接收的输入/输出(I/O)请求相关联的物理块地址(PBA);
闪存接口,提供到数据存储设备的闪存介质的接口,以访问存储在数据存储设备的闪存介质上的数据;以及
一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式,
其中,所述主机接口向一个或多个DNN模块提供一个或多个输入向量,一个或多个DNN模块向FTL提供一个或多个预测输出,所述一个或多个预测输出与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求以及当前I/O请求相关联,并且其中,所述一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求,并且
其中,FTL预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
2.如权利要求1所述的控制器,其中,所述一个或多个预测输出识别主机操作之间的空闲时间,并且FTL在空闲时间期间执行闪存介质的后台操作。
3.如权利要求1所述的控制器,其中,所述一个或多个DNN模块包括存储基于当前I/O请求的多个预测输出的预测表。
4.如权利要求1所述的控制器,还包括预测误差估计器,被配置为向一个或多个DNN模块提供预测误差,以执行训练或学习与一个或多个过去的I/O请求、当前I/O请求、以及至少一个预测的I/O请求相关联的I/O访问模式。
5.如权利要求1所述的控制器,其中,FTL基于主机计算机的I/O访问模式确定时间并执行以下操作中的一个或多个:获取或更新FTL的数据结构、执行纠错、解压缩数据、解密数据、执行后台操作、向主机计算机提供统计数据和日志、以及卸载缓存。
6.如权利要求1所述的控制器,其中,所述控制器在现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或FPGA与ASIC的组合中实现。
7.如权利要求1所述的控制器,其中,所述一个或多个DNN模块采用长短期记忆(LSTM)网络或卷积神经网络(CNN)。
8.如权利要求1所述的控制器,其中,所述数据存储设备是非易失性存储器快速(NVMe)固态驱动器(SSD)或组构上NVMe(NVMe-oF)SSD。
9.如权利要求1所述的控制器,其中,所述一个或多个输入向量包括以下各项中的一个或多个:LBA、LBA的范围、主机访问的长度、主机访问的数量、命名空间ID、主机ID、命令操作码(OPC)、由命令操作码指示的I/O类型、流ID、NVM集ID、时间增量和/或时间戳。
10.如权利要求1所述的控制器,其中,所述一个或多个预测输出包括LBA、LBA集群、主机访问的类型、即将发生的空闲间隙、即将发生的访问量中的一个或多个。
11.如权利要求1所述的控制器,其中,所述一个或多个DNN模块分配对缓存中存在的每个块的即将访问的概率,并且所述控制器从缓存中逐出具有最低概率的块。
12.如权利要求11所述的控制器,其中,如果缓存中的多个块具有相同的最低概率,则控制器从缓存中逐出具有最旧的时间戳的块。
13.一种数据存储设备,包括:
一个或多个闪存介质;
控制器,被配置为控制一个或多个闪存介质;以及
一个或多个深度神经网络(DNN)模块,用于预测主机计算机的I/O访问模式,
其中,所述一个或多个DNN模块从所述控制器接收一个或多个输入向量,向控制器提供一个或多个预测输出,所述一个或多个预测输出与使用一个或多个输入向量从主机计算机接收的一个或多个过去的I/O请求和当前I/O请求相关联,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求,并且
其中,所述控制器预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据。
14.如权利要求13所述的数据存储设备,其中,所述一个或多个预测输出识别主机操作之间的空闲时间,并且FTL在空闲时间期间执行闪存介质的后台操作。
15.如权利要求13所述的数据存储设备,其中,所述控制器包括预测误差估计器,被配置为向一个或多个DNN模块提供预测误差,以执行训练或学习与一个或多个过去的I/O请求、当前I/O请求、以及至少一个预测的I/O请求相关联的主机访问模式。
16.如权利要求13所述的数据存储设备,其中,所述控制器在现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或FPGA与ASIC的组合中实现。
17.如权利要求13所述的数据存储设备,其中,所述数据存储设备是非易失性存储器快速(NVMe)固态驱动器(SSD)或组构上NVMe(NVMe-oF)SSD。
18.如权利要求13所述的数据存储设备,其中,所述一个或多个DNN模块基于即将访问的概率向缓存中存在的每个块分配序号,并且所述控制器从缓存中逐出具有最低概率的块。
19.如权利要求18所述的数据存储设备,其中,如果缓存中的多个块具有相同的最低概率,则控制器从缓存中逐出具有最旧的时间戳的块。
20.一种桥接设备,包括:
一个或多个处理器;
一个或多个深度神经网络(DNN)模块;
处理器访问模块,提供一个或多个处理器与一个或多个DNN模块之间的接口;
主机接口;以及
到固态驱动器(SSD)的设备接口,
其中,所述一个或多个DNN模块经由所述主机接口从SSD接收一个或多个输入向量,向SSD提供一个或多个预测输出,所述一个或多个预测输出与使用一个或多个输入向量来自远程发起者的一个或多个过去的I/O请求和从远程发起者接收的当前I/O请求相关联,并且一个或多个预测输出包括跟随在当前I/O请求之后的至少一个预测的I/O请求,并且
其中,SSD预取存储在闪存介质中的与至少一个预测的I/O请求相关联的数据,并经由设备接口将数据提供给桥接设备。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862658190P | 2018-04-16 | 2018-04-16 | |
US62/658,190 | 2018-04-16 | ||
US16/012,470 US10963394B2 (en) | 2018-04-16 | 2018-06-19 | System and method for optimizing performance of a solid-state drive using a deep neural network |
US16/012,470 | 2018-06-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110389909A true CN110389909A (zh) | 2019-10-29 |
CN110389909B CN110389909B (zh) | 2022-03-15 |
Family
ID=68161714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910302894.2A Active CN110389909B (zh) | 2018-04-16 | 2019-04-16 | 使用深度神经网络优化固态驱动器的性能的***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10963394B2 (zh) |
KR (1) | KR102542580B1 (zh) |
CN (1) | CN110389909B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240743A (zh) * | 2020-01-03 | 2020-06-05 | 上海兆芯集成电路有限公司 | 人工智能集成电路 |
WO2021088404A1 (zh) * | 2019-11-06 | 2021-05-14 | 深圳大普微电子科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN113098799A (zh) * | 2019-12-23 | 2021-07-09 | 希捷科技有限公司 | 使用存储设备的端口到端口网络路由 |
CN113094368A (zh) * | 2021-04-13 | 2021-07-09 | 成都信息工程大学 | 一种提升缓存访问命中率的***及方法 |
CN113162632A (zh) * | 2021-04-29 | 2021-07-23 | 东方红卫星移动通信有限公司 | 智能qc-ldpc译码方法、译码器及低轨卫星通信*** |
CN113223584A (zh) * | 2021-05-26 | 2021-08-06 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据读取方法 |
CN113435601A (zh) * | 2020-03-23 | 2021-09-24 | 华为技术有限公司 | 数据预取方法、装置以及存储设备 |
CN113741567A (zh) * | 2021-11-08 | 2021-12-03 | 广东省新一代通信与网络创新研究院 | 矢量加速器及其控制方法、装置 |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494484B2 (en) * | 2016-10-24 | 2022-11-08 | Nubeva, Inc. | Leveraging instrumentation capabilities to enable monitoring services |
US10796198B2 (en) | 2018-02-08 | 2020-10-06 | Western Digital Technologies, Inc. | Adjusting enhancement coefficients for neural network engine |
US11164073B2 (en) | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Systolic neural network processor with feedback control |
KR102608825B1 (ko) * | 2018-04-26 | 2023-12-04 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
CN109189693B (zh) * | 2018-07-18 | 2020-10-30 | 深圳大普微电子科技有限公司 | 一种对lba信息进行预测的方法及ssd |
KR20200015260A (ko) * | 2018-08-03 | 2020-02-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
EP3626167B1 (en) * | 2018-09-21 | 2024-07-17 | IMEC vzw | A method of generating a model for heart rate estimation from a photoplethysmography signal and a method and a device for heart rate estimation |
US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
WO2020183246A2 (en) * | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Termination of non-volatile memory networking messages at the drive level |
US11294602B2 (en) | 2019-03-14 | 2022-04-05 | Marvell Asia Pte Ltd | Ethernet enabled solid state drive (SSD) |
EP3939237B1 (en) | 2019-03-14 | 2024-05-15 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (ssds) via a connection between the ssds |
US10929058B2 (en) * | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11783176B2 (en) | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US10958527B2 (en) * | 2019-06-12 | 2021-03-23 | International Business Machines Corporation | Transaction fencing in a multi-domain network |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11301132B2 (en) * | 2019-08-30 | 2022-04-12 | Micron Technology, Inc. | Scheduling media management operations based on provided host system usage requirements |
US11003384B2 (en) | 2019-08-30 | 2021-05-11 | Micron Technology, Inc. | Scheduling media management operations based on determined host system usage requirements |
KR20210032222A (ko) * | 2019-09-16 | 2021-03-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
US11711310B2 (en) | 2019-09-18 | 2023-07-25 | Tweenznet Ltd. | System and method for determining a network performance property in at least one network |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11971824B2 (en) * | 2019-10-28 | 2024-04-30 | Aetherai Ip Holding Llc | Enhancing memory utilization and throughput in executing a computational graph |
US11175856B2 (en) | 2019-11-08 | 2021-11-16 | Micron Technology, Inc. | Background operation selection based on host idle time |
US20210142146A1 (en) * | 2019-11-13 | 2021-05-13 | Micron Technology, Inc. | Intelligent image sensor stack |
CN110955405B (zh) * | 2019-11-26 | 2023-07-25 | 深圳鲲云信息科技有限公司 | 一种输入数据的处理及指数值获取方法、装置及电子设备 |
US11716338B2 (en) * | 2019-11-26 | 2023-08-01 | Tweenznet Ltd. | System and method for determining a file-access pattern and detecting ransomware attacks in at least one computer network |
KR102211655B1 (ko) | 2019-12-26 | 2021-02-04 | 한양대학교 에리카산학협력단 | 프록시 서버 및 이를 이용한 웹 오브젝트 예측 방법 |
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
KR20210092980A (ko) * | 2020-01-17 | 2021-07-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법 |
US11972361B2 (en) * | 2020-01-29 | 2024-04-30 | Samsung Electronics Co., Ltd. | Performance optimization of object grouping schema in a network key-value storage device using adaptive regression |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US10997080B1 (en) | 2020-02-11 | 2021-05-04 | Western Digital Technologies, Inc. | Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address |
KR102267477B1 (ko) | 2020-02-20 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11636059B2 (en) * | 2020-03-31 | 2023-04-25 | Samsung Electronics Co., Ltd. | Scaling performance in a storage server with storage devices |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11281575B2 (en) * | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11294808B2 (en) | 2020-05-21 | 2022-04-05 | Micron Technology, Inc. | Adaptive cache |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US20210390053A1 (en) * | 2020-06-15 | 2021-12-16 | Micron Technology, Inc. | Host-Assisted Memory-Side Prefetcher |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422934B2 (en) | 2020-07-14 | 2022-08-23 | Micron Technology, Inc. | Adaptive address tracking |
US11409657B2 (en) | 2020-07-14 | 2022-08-09 | Micron Technology, Inc. | Adaptive address tracking |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US20220076160A1 (en) * | 2020-09-09 | 2022-03-10 | Western Digital Technologies, Inc. | Embedded Machine Learning for Storage Devices |
SG10202009754QA (en) * | 2020-10-01 | 2020-11-27 | Flexxon Pte Ltd | Module and method for detecting malicious activities in a storage device |
US20220121985A1 (en) * | 2020-10-20 | 2022-04-21 | Western Digital Technologies, Inc. | Machine Learning Supplemented Storage Device Calibration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
CN112433682B (zh) * | 2020-12-15 | 2023-12-05 | 合肥大唐存储科技有限公司 | 固态硬盘中控制参数的获取方法、存储介质和电子装置 |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11514992B2 (en) | 2021-02-25 | 2022-11-29 | Microchip Technology Inc. | Method and apparatus for reading a flash memory device |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11934696B2 (en) | 2021-05-18 | 2024-03-19 | Microchip Technology Inc. | Machine learning assisted quality of service (QoS) for solid state drives |
WO2022245385A1 (en) * | 2021-05-18 | 2022-11-24 | Microchip Technology Inc. | Machine learning assisted quality of service (qos) for solid state drives |
US11699493B2 (en) | 2021-05-24 | 2023-07-11 | Microchip Technology Inc. | Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values |
US11514994B1 (en) | 2021-05-28 | 2022-11-29 | Microchip Technology Inc. | Method and apparatus for outlier management |
US11513720B1 (en) | 2021-06-11 | 2022-11-29 | Western Digital Technologies, Inc. | Data storage device having predictive analytics |
KR102365312B1 (ko) | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
KR20230031425A (ko) * | 2021-08-27 | 2023-03-07 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
DE112022002131T5 (de) | 2021-09-28 | 2024-04-11 | Microchip Technology Inc. | Ldpc-dekodierung mit trapped-block-management |
US12007899B2 (en) * | 2021-09-30 | 2024-06-11 | Micron Technology, Inc. | Delta predictions for page scheduling |
US20230236977A1 (en) * | 2022-01-21 | 2023-07-27 | Nvidia Corporation | Selectable cache policy |
US20230251792A1 (en) * | 2022-02-04 | 2023-08-10 | Western Digital Technologies, Inc. | Memory Device Based Accelerated Deep-Learning System |
CN114637466B (zh) * | 2022-03-03 | 2022-11-11 | 深圳大学 | 一种数据读写行为推测方法、装置、存储介质及电子设备 |
US11977779B2 (en) * | 2022-05-11 | 2024-05-07 | Bank Of America Corporation | Smart queue for distributing user requests to automated response generating systems |
US11983442B2 (en) * | 2022-06-22 | 2024-05-14 | Western Digital Technologies, Inc. | Data storage device and method for multi-level conditional prediction of future random read commands |
US20240134801A1 (en) * | 2022-10-19 | 2024-04-25 | Samsung Electronics Co., Ltd. | Methods and system for efficient access to solid state drive |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288716A1 (en) * | 2007-05-14 | 2008-11-20 | Buffalo Inc. | Storage device |
US20130275710A1 (en) * | 2010-09-15 | 2013-10-17 | Pure Storage, Inc. | Scheduling of i/o writes in a storage environment |
CN105900069A (zh) * | 2014-01-07 | 2016-08-24 | 苹果公司 | 对被存储在闪存存储器中的数据的推测性预取 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN107797763A (zh) * | 2016-09-02 | 2018-03-13 | 三星电子株式会社 | 固态驱动器、驱动器和控制固态驱动器的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112755B2 (en) * | 2006-06-30 | 2012-02-07 | Microsoft Corporation | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10397368B2 (en) * | 2015-06-25 | 2019-08-27 | International Business Machines Corporation | Data prefetching for large data systems |
US10025532B2 (en) | 2015-09-11 | 2018-07-17 | Sandisk Technologies Llc | Preserving read look ahead data in auxiliary latches |
US10013370B2 (en) * | 2015-12-29 | 2018-07-03 | EMC IP Holding Company LLC | Method and system for providing access of a storage system using a shared storage module as a transport mechanism |
US9983999B2 (en) * | 2016-01-22 | 2018-05-29 | Samsung Electronics Co., Ltd. | Computing system with cache management mechanism and method of operation thereof |
US11269764B2 (en) * | 2017-03-21 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for adaptive scheduling of background operations |
DE102017003735A1 (de) | 2017-04-19 | 2018-10-25 | Viking Gmbh | Verfahren zum Betrieb eines Systems aus selbstfahrenden Bodenbearbeitungsgeräten |
US10394706B2 (en) * | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
US10884637B2 (en) * | 2018-04-03 | 2021-01-05 | Elastic Flash Inc. | Workload based storage optimization |
-
2018
- 2018-06-19 US US16/012,470 patent/US10963394B2/en active Active
-
2019
- 2019-03-13 KR KR1020190029002A patent/KR102542580B1/ko active IP Right Grant
- 2019-04-16 CN CN201910302894.2A patent/CN110389909B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288716A1 (en) * | 2007-05-14 | 2008-11-20 | Buffalo Inc. | Storage device |
US20130275710A1 (en) * | 2010-09-15 | 2013-10-17 | Pure Storage, Inc. | Scheduling of i/o writes in a storage environment |
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN105900069A (zh) * | 2014-01-07 | 2016-08-24 | 苹果公司 | 对被存储在闪存存储器中的数据的推测性预取 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN107797763A (zh) * | 2016-09-02 | 2018-03-13 | 三星电子株式会社 | 固态驱动器、驱动器和控制固态驱动器的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088404A1 (zh) * | 2019-11-06 | 2021-05-14 | 深圳大普微电子科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN113098799A (zh) * | 2019-12-23 | 2021-07-09 | 希捷科技有限公司 | 使用存储设备的端口到端口网络路由 |
US11824752B2 (en) | 2019-12-23 | 2023-11-21 | Seagate Technology Llc | Port-to-port network routing using a storage device |
CN111240743A (zh) * | 2020-01-03 | 2020-06-05 | 上海兆芯集成电路有限公司 | 人工智能集成电路 |
CN111240743B (zh) * | 2020-01-03 | 2022-06-03 | 格兰菲智能科技有限公司 | 人工智能集成电路 |
CN113435601A (zh) * | 2020-03-23 | 2021-09-24 | 华为技术有限公司 | 数据预取方法、装置以及存储设备 |
CN113094368A (zh) * | 2021-04-13 | 2021-07-09 | 成都信息工程大学 | 一种提升缓存访问命中率的***及方法 |
CN113162632A (zh) * | 2021-04-29 | 2021-07-23 | 东方红卫星移动通信有限公司 | 智能qc-ldpc译码方法、译码器及低轨卫星通信*** |
CN113162632B (zh) * | 2021-04-29 | 2022-08-09 | 东方红卫星移动通信有限公司 | 智能qc-ldpc译码方法、译码器及低轨卫星通信*** |
CN113223584A (zh) * | 2021-05-26 | 2021-08-06 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据读取方法 |
CN113741567A (zh) * | 2021-11-08 | 2021-12-03 | 广东省新一代通信与网络创新研究院 | 矢量加速器及其控制方法、装置 |
CN113741567B (zh) * | 2021-11-08 | 2022-03-29 | 广东省新一代通信与网络创新研究院 | 矢量加速器及其控制方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
US20190317901A1 (en) | 2019-10-17 |
KR20190120698A (ko) | 2019-10-24 |
US10963394B2 (en) | 2021-03-30 |
CN110389909B (zh) | 2022-03-15 |
KR102542580B1 (ko) | 2023-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389909A (zh) | 使用深度神经网络优化固态驱动器的性能的***和方法 | |
US11726931B2 (en) | Artificial intelligence-enabled management of storage media access | |
US20200184320A1 (en) | Neural network processing | |
WO2019094882A1 (en) | Deep neural network processor with interleaved backpropagation | |
US11449230B2 (en) | System and method for Input/Output (I/O) pattern prediction using recursive neural network and proaction for read/write optimization for sequential and random I/O | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
CN114254733A (zh) | 使用树形直接存储器存取(dma)总线的神经网络权重分布 | |
WO2019118363A1 (en) | On-chip computational network | |
CN110100274A (zh) | 具有降低功率渲染的混合现实*** | |
CN115516437A (zh) | 主机辅助的存储器侧预取器 | |
KR20160081815A (ko) | 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법 | |
US20240220153A1 (en) | Memory used for artificial neural network processing and system including the same | |
US20190286971A1 (en) | Reconfigurable prediction engine for general processor counting | |
CN117015767A (zh) | 存储器信道控制器的芯片上互连 | |
US20240231681A1 (en) | Memory controller, processor and system for artificial neural network | |
US11733763B2 (en) | Intelligent low power modes for deep learning accelerator and random access memory | |
CN108062279A (zh) | 用于处理数据的方法和设备 | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN113255902A (zh) | 神经网络电路、***和控制数据流的方法 | |
US12001893B1 (en) | Distributed synchronization scheme | |
US20230108883A1 (en) | Systems and methods for increasing hardware accelerator performance in neural network applications | |
US11922306B2 (en) | Tensor controller architecture | |
KR20240064424A (ko) | 태스크 매니저, 뉴럴 프로세싱 장치 및 이의 태스크 디펜던시 세팅 방법 | |
CN117519578A (zh) | 计算存储装置及其操作方法、以及存储*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |