CN113448504A - 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 - Google Patents
具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 Download PDFInfo
- Publication number
- CN113448504A CN113448504A CN202011451905.2A CN202011451905A CN113448504A CN 113448504 A CN113448504 A CN 113448504A CN 202011451905 A CN202011451905 A CN 202011451905A CN 113448504 A CN113448504 A CN 113448504A
- Authority
- CN
- China
- Prior art keywords
- solid state
- state drive
- ssd
- program code
- computing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3268—Power saving in hard disk drive
-
- 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/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
描述了一种方法。该方法包括执行来自计算系统的系统存储器的固态驱动器程序代码,以执行固态驱动器的垃圾收集、损耗均衡和逻辑块地址到物理块地址的转换例程中的任一项/全部,该固态驱动器耦合到系统存储器是其组件的计算系统。
Description
技术领域
本发明的领域大体涉及计算科学,并且更具体地,涉及具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器。
背景技术
随着云计算、“大数据”、人工智能和其他计算密集型环境的兴起,大容量存储装置正呈现为整体计算系统性能的关键的组件。因此,计算系统设计者一直在寻找减少延时、增加吞吐量、优化功率、和/或提供大容量存储设备的鲁棒性的方法。
附图说明
可以从结合以下附图的具体实施方式中获得对本发明的更好的理解,其中:
图1示出了具有固态驱动器的传统的计算系统;
图2示出了具有固态驱动器的改进的计算系统;
图3示出了由在系统存储器外执行的固态驱动器程序代码采用的数据结构;
图4示出了计算系统。
具体实施方式
图1示出了传统的多处理器计算机系统100。如图1所观察到的,计算机系统包括多个通用的、专用的和/或可重配置的处理核心101_1至101_N。处理核心中的每一个通常包括多个指令执行流水线,其中,这些流水线中的每一个都有其自己的专用L1高速缓存(为了便于说明,在图1中未示出)或便笺式存储器(scratch-pad memory)。每个处理核心还包括为其指令执行流水线提供服务的L2高速缓存102_1至102_N。处理核心101通过网络103互连到彼此、到L3高速缓存104(其为处理核心提供服务)、到系统存储器控制器105和外围控制集线器106。
如本领域中已知的,如果通过流水线中的一个执行的程序代码的线程需要不在流水线的寄存器空间中的数据,则该程序代码将执行存储器存取指令,该指令指定了所需的数据的存储器地址。不是立即从系统存储器107(也被称为“主”存储器)中提取数据,系统将替代地在流水线的L1高速缓存中查找数据项。如果该项不在L1高速缓存中,则系统接下来将查看流水线在其上被实例化的核心的L2高速缓存。如果该项不在L2高速缓存中,则系统将在L3高速缓存104中查找该数据项。如果该项不在L3高速缓存104中,则它将经由系统存储器控制器105(也被称为主存储器控制器105)从系统存储器107中提取该项。
各个核心的L1和L2高速缓存以及L3高速缓存104都是高速缓存一致的。高速缓存一致性是利用协议实现的(例如,在每个高速缓存位置处执行的修改的独占共享无效(MESI)协议),以确保系统不会写入两个不同的版本的数据项。在这里,由于流水线和/或核心中的一个或多个上的多个执行软件线程可能同时期望相同的数据,意图是利用新的信息更新它,因此高速缓存一致性协议有效地防止两个不同的软件线程利用不同的数据写入数据的两个不同的实例。
如图1所观察到的,在各个核心上正在执行的线程中的每一个在系统存储器107中都有其自己的专用操作空间或“占用空间”108_1至108_M。通常,针对系统当前正在执行的每个软件应用,都存在这样的占用空间。每个占用空间108通常包括其对应的线程的程序代码指令和数据。然而,线程的占用空间通常不包含可以被执行的所有程序代码或可以由该线程操作的所有数据。因此,程序代码和/或存储器的页面从大容量存储装置109中被调出(call up),并根据需要被写入线程的占用空间中(通常不包括写回大容量存储装置以给新页面腾出空间的线程的占用空间中的其他页面)。
随着云计算、“大数据”、人工智能和其他计算密集型环境的兴起,大容量存储装置109逐渐呈现为整体计算系统性能的关键组件。在这里,许多软件应用需要访问远远超过在主存储器107中的应用的占用空间108的分配的数据量。因此,往往存在从大容量存储装置109中频繁地调用页面(如图1所观察到的,利用耦合到外围控制集线器(PCH)106的多个大容量存储设备110_1至110_X来实现大容量存储装置)。可以从大容量存储装置109中提取这样的页面的速度越快,应用将暂缓等待数据的页面从大容量存储装置109中被提取并被输入到系统存储器107中的风险就越小。
另外,为了再次满足针对大量数据的整体增长的需求,大容量存储设备自身110_1至110_X(例如,固态驱动器(SSD))的存储容量随着每一代新产品而稳定增长。
然而,增长的SSD容量的问题是每个SSD都预期支持的功能增加。在这里,每个SSD通常包括控制器和相关联的存储器,以执行监督SSD的操作的逻辑111_1至111_X。这种监督通常包括:1)损耗均衡(wear leveling);2)垃圾收集;以及3)逻辑块地址(LBA)到物理块地址(PBA)的转换。
如果SSD的物理存储介质块/单元(例如,NAND闪存、三维交叉点非易失性随机存取存储器(NVRAM)(例如,来自Intel公司的OptaneTM存储器、来自Micron的QuantXTM存储器等))被太频繁地写入,则它们可能会劣化/磨损。因此,在执行损耗均衡时,SSD控制器逻辑111将跟踪其块中已经被最频繁地写入的块,并且在超过某个阈值时,将中断SSD操作以从其当前的块中读取“热”数据并将其写入到已经不那么频繁地写入的其他块中。
为了将热数据写入另一个块,必须首先“清理”另一个块。因此,为了支持损耗均衡,SSD控制器逻辑111还执行垃圾收集。垃圾收集是这样的过程:识别其数据陈旧(例如,其数据被移动到了另一个块)或几乎不被访问的块并准备将其用新数据盖写。在被识别的陈旧的块的情况下,块被擦除并被放置在要新近地被写入的合格的块的空闲列表上。在其数据不是陈旧的但几乎不被访问的块的情况下,该块的数据被读取并写入另一个块。该块然后被擦除并放置在空闲列表上。
因为SSD控制器逻辑111交换或改变存储有特定数据的物理块,所以SSD控制器逻辑111还执行LBA到PBA的地址转换。在这里,当较大的主机计算机系统期望访问数据的一个或多个特定页面时,它利用LBA识别数据。SSD控制器然后将LBA转换为数据实际驻留的SSD内的物理块。在这里,每当损耗均衡操作使得数据移动到不同的块时,就需要更新LBA到PBA表以反映SSD内的数据的新的物理位置。
不幸的是,随着SSD的存储容量的不断扩大,它们的损耗均衡、垃圾收集和LBA到PBA的转换变得越来越计算密集,这转而又从主机的角度影响了SSD延时。即,随着每一代新的SSD,制造“更快的”SSD变得越来越困难。相反,与SSD的前几代相比,SSD存在表现出更长的平均读取/写入延时的风险。
更进一步,将计算密集型功能集成到SSD中以用于由SSD控制器执行会增加SSD功耗。因此,由于SSD存储容量扩大,SSD变得越来越慢,并且越来越耗电。
针对集成到系统中的每个SSD,SSD设备驱动程序软件实例通常被“插入到”操作系统或操作系统实例中。SSD的设备驱动程序软件通常用于通过软件来配置或以其他方式访问SSD。设备驱动程序通常接受来自更高层的软件(例如,操作系统或应用)的命令,并且根据这些命令生成用于SSD控制器的命令。SSD控制器通过SSD的本地固件的执行来处理响应命令。在这里,存在被同时执行的SSD程序代码的多个不同的层:1)在处理核心101上作为软件执行的设备驱动程序软件;2)执行SSD自身内的逻辑111的固件;以及3)在组件上操作的组件微码。使复杂程序的多个不同的层针对SSD同时执行也会增加整体的SSD延时。
图2中描绘了对这些问题中的任一项/全部的解决方案。如图2所观察到的,已经传统上由SSD的控制器执行的SSD的本地逻辑功能211的一些或全部替代地被实现为在通用CPU核心上执行的线程(如图2所观察到的,多个SSD 210_1至210_X耦合到外围控制集线器(PCH)206)。即,在SSD控制器已经传统上执行了在SSD内本地存储和执行的“固件”(具有集成在SSD内的控制器/处理器和存储器)以实现逻辑111的程度上,在图2的方法中,固件程序代码(或至少用于实现传统的SSD固件的逻辑111的程序代码)替代地被实例化为系统存储器207中的占用空间211。传统上作为SSD内的本地固件执行的用于SSD的低级控制器操作然后替代地利用来自系统存储器占用空间的通用处理核心201线程来执行(例如,与标称应用软件程序没有不同地执行)。
随着低级计算密集型SSD控制器操作从SSD 210中被大部分剥离出来,并且替代地更多地作为标称应用软件程序来实现,SSD 210应当展现即时加速、增加的设备的工作动力势(operating power potential)、以及减少的能量占用空间。例如,尽管传统的SSD读取或写入(被称为“编程”)操作在由SSD控制器执行的损耗均衡或垃圾收集之前被暂缓,或者由于SSD控制器执行的LBA到PBA的转换而减慢,但是在图2的方法中,SSD 210自身在各种实施例中执行以下操作:不跟踪热块对冷块(hot vs.cold block),确定哪些块已经超过了用于损耗均衡的热相对阈值,针对垃圾收集识别块,或者执行LBA到PBA的转换或执行其他相关的操作(例如,识别错误块、退役错误块、执行介质宽度写入模式上下文切换(单级单元(SLC)、多级单元(MLC)、三级单元(TLC)、四级单元(QLC)等)、将块重新矢量化为新的转换、重新排序操作等)。替代地,所有这样的功能都是由通用处理核心在主存储器外执行的。
此外,随着这样的计算密集型操作从SSD 210中剥离出来,SSD 210应当每单位的存储数据消耗更少的功率。更进一步,尽管图1的现有技术方法利用两个不同层的复杂和并发集成的程序代码来使用和实现整体SSD,但是相比之下,在图2的方法中,设备驱动程序和传统的固件逻辑可以针对每个SSD被合成为程序代码211的单个实例,作为将传统的SSD设备驱动程序和固件的功能包括在内的单个“更紧密的”软件层。
更进一步,传统上,仅SSD控制器接触更高级的程序代码(例如,SSD的设备驱动程序)所不具备的SSD的更深的上下文细节。具体地,传统的SSD通常包含内部的寄存器空间(例如,嵌入在SSD的存储器芯片、SSD的控制器芯片或诸如现场可编程阵列(FPGA)之类的任何其他SSD内部的硬件上(例如,用于加速各种过程)),它们在SSD外部不可见,并且仅由SSD控制器访问以对SSD的特定特征进行编程。
可配置的寄存器空间的集合(被称为SSD的寄存器或配置“上下文”)传统上用于确立除了以下各项以外的由SSD控制器执行的某些模式和/或功能:垃圾收集、损耗均衡和LBA-PBA转换(例如,带宽仲裁(其中,SSD与主机协商SSD和主机之间的特定的通信速度));介质块包装(media block packing)(对一个或多个存储器块的存储单元密度进行编程(例如,编程为SLC、MLC、TLC、QLC之一));冗余(存储单个数据项的多个实例);错误检测;错误校正;数据刷新(将相同的数据重新编程到已经在单元中驻留延长的时间段的单元中);数据加密(用于安全保护);SSD内的内部硬件加速器的配置(例如,被配置为执行内部性能跟踪和统计的现场可编程门阵列(FPGA));配置SSD内的队列的深度和/或服务速率(例如,为特定的主机/SSD接口速度提供服务);探听命令队列(其也在主存储器中被实现),以将多个相同的命令合并为单个命令等。在本方法中,可以在SSD外部部分地或全部地执行这些功能中的任一项/全部,例如,在系统存储器外执行的程序代码。再次地,来自在计算机主机上执行程序代码的命令将通过主机的硬件(例如,经由外围控制集线器)指向SSD,以例如对SSD内的寄存器进行写入和/或从其读取,以使得这些功能中的任一项/全部被执行,并提供和/或报告它们要根据其操作的任何特定参数。
因此,传统上仅能由SSD控制器访问但是在新方法中可以对在系统存储器外执行的程序代码可编程和/或可见的SSD内的寄存器或配置上下文(其描述SSD的内部的上下文)包括(除了其他可能的上下文信息外)至少用于以下操作的寄存器空间:1)个体地打开或关闭非易失性存储器芯片,和/或个体地启用它们;2)记录指示是否启用错误检测以及如果启用则何种类型的错误检测(例如,奇偶校验、循环冗余校验等)正在被利用的信息;3)记录指示(例如,针对个体的存储器芯片或存储器芯片组)是启用还是禁用纠错编码(ECC)以及如果启用则要执行什么特定ECC算法的信息;4)记录指示存储器芯片或其部分是否已经使其数据被加密以及如果被加密则何种类型的加密将被应用的信息;5)指定在SSD/主机接口处要实现何种协议(例如,外围组件快速互连(PCIe)、非易失性存储器快速(NVMe)、串行AT附件(SATA)等)的信息;6)指示是否要复制数据的信息(例如,存储在一个块中的数据的第二版本被另外存储在另一个块中,以防止数据的丢失),和/或任何其他寄存器空间,以帮助实现在前述段落中指定的功能中的任一项/全部等。
利用根据正在执行的应用来配置这种SSD上下文的能力,如图2的方法所示,可以实现迄今为止尚未被实现的某些微调的、精确的操作效率。一个示例是在通电和/或重置期间非常精确地控制的SSD启动。例如,传统上,当SSD被通电或重置时,很难在一系列紧密控制的顺序步骤中逐步提高其功耗。即,SSD或多或少地完全“打开(on)”,包括例如SSD内的所有存储器芯片和/或其他硬件。因此,SSD的功耗展示了阶跃函数响应。即,SSD处于“关闭(off)”状态,在这种情况下,其功耗较低,或者SSD处于“打开”状态,在这种情况下,其功耗较高(例如,这是因为SSD中的所有存储器芯片均已通电)。
相比之下,如图2的方法所示,在SSD上下文暴露给SSD的占用空间/应用的情况下,可以利用软件非常精确地控制SSD的功耗,例如,根据非常特定的启动顺序来打开特定存储器芯片和/或加速器。即,随着时间的推移,SSD的功耗可以更多地如同阶梯函数而不是阶跃函数来提高。例如,不是SSD一通电就立即打开所有的SSD的存储器芯片,而是仅在SSD开始充满数据时才根据需要对个体的存储器芯片通电。
在一个实施例中,用于系统存储器207中的SSD的占用空间/应用代码211可能需要用于SSD启动的安全的只读存储器入口。在一个实施例中,在系统存储器207中在SSD的占用空间/应用211外执行的SSD的启动过程使得SSD执行以下启动序列:1)启用SSD的主机接口(例如,PCIe);2)等待主机(例如,多处理器CPU片上系统(SOC)半导体芯片)通过SSD的主机接口确认SSD的存在;3)准备SSD的存储器芯片以进行通电;以及,4)根据期望启用任何板载SSD加速器(例如,循环冗余校验(CRC)/纠错编码(ECC)加速器、加密/解密加速器、介质通道队列加速器、性能跟踪分析加速器、数值计算加速器)。任何/所有其他SSD配置上下文可以通过执行SSD占用空间来根据需要从系统存储器快速交换到SSD。
在各种实施例中,该序列通过由正在执行的SSD占用空间/应用代码生成的命令的序列(这些命令从CPU SOC发布到SSD)以及从SSD发送回CPU SOC并执行SSD占用空间代码的状态消息响应来实现。当向SSD发布命令时,SSD的占用空间/应用代码可以写入主机CPU处理器内的被保留的寄存器空间和/或系统存储器内的存储器映射I/O(MMIO)。硬件然后通过主机/SSD接口来将命令物理地传输到SSD。类似地,SSD通过主机/SSD接口可以将响应消息写入CPU SOC寄存器空间或MMIO空间。因此,固态驱动器将从固态驱动器耦合到的主机系统接收信息请求,其中,该信息描述了固态驱动器的内部的上下文。作为响应,固态驱动器在内部提取信息,并且然后将信息发送到主机系统,以支持主机系统执行其执行的各种SSD任务。
图3示出了由SSD的占用空间/应用用于针对SSD执行LBA到PBA的转换的数据结构300的实施例。在这里,数据结构300包括物理块上下文301和虚拟块上下文302二者。物理块上下文301包含用于SSD中的每个存储器芯片中的每个块的元数据(例如,以表格形式)。针对每个这种物理块,元数据描述了该块是健康的、临时有缺陷的、有缺陷的还是脱机的。在另外的实施例中,元数据可以跟踪对每个物理块的访问和/或块的数据中的一些(例如,哪些页面)或块的数据中的全部是否是无效的或被擦除的(例如,出于垃圾收集和/或损耗均衡的目的)。物理块上下文还可以包括暂时记录对物理块进行的最近的改变的日志。
虚拟块上下文302有效地包含了LBA到PBA的映射。在占用空间/应用还包含垃圾收集和损耗均衡逻辑的情况下,占用空间/应用确定何时将块视为“热”(基于物理块上下文301中的元数据)并且应当何时将其数据移动到另一个块,数据将被移动到哪个空闲块,并且确定用于维护空闲块的池的垃圾收集和擦除调度。当占用空间/应用命令SSD将物理数据从一个块移动到另一个块时,虚拟上下文改变302利用针对与所移动的数据相对应的特定的LBA的新的PBA来更新。
因为LBA到PBA的映射是由来自系统存储器的正在执行的SSD占用空间/应用在主机中执行的,所以注意,由占用空间/应用向SSD发布的任何读取/写入/擦除命令都指定了PBA而不是LBA。即,将PBA而非LBA从主机硬件(CPU SOC)传递到实际的SSD。将SSD用作大容量存储装置的任何主机应用都会经由API调用系统存储器中的SSD的占用空间/应用,其中,通过API为受影响的块指定LBA。SSD占用空间/应用然后执行LBA到PBA的映射,并且将具有PBA的对应的命令(例如,读取、编程)发布到SSD。
通过将复杂的细节(例如,计算系统中的每个SSD的寄存器上下文、物理块状态以及LBA到PBA的映射)暴露给更高级别的软件,这种软件可以更好地负载均衡其SSD资源以最终实现比传统的系统更好的SSD延时。具体地,在传统的计算系统中,仅SSD控制器才能看到其相应的SSD的请求队列。在这里,每个SSD设备通常都具有排队空间,以使从主机接收到的命令排队。如果主机在短时间内向SSD馈送大量请求,则SSD的队列易于使大量请求排队,这转而引起SSD响应减少(SSD将无法服务例如大多数/全部已排队的请求,直到队列中的全部先前的请求已经被服务为止)。
相比之下,在图2的改进的方法的情况下,系统存储器中的SSD的占用空间/应用代码的状态可以知道其SSD的内部命令队列状态。通过知道系统中的每个SSD内的队列状态,软件(例如,数据库软件或操作系统软件)可以更好地负载均衡系统中的SSD,并且有利于向具有更少完整的内部队列的SSD发送存储请求,而不是向具有更多完整的内部队列的SSD发送存储请求。理想地,跨SSD的排队延迟作为一个整体将小于传统的系统中的排队延迟,在传统的系统中,不存在对SSD队列状态和对应的负载均衡的这种可见性。
通常,这里的控制操作系统或操作系统实例监督并控制在系统存储器中有多少应用的页面,以及哪些应用的页面在系统存储器中。即,操作系统或操作系统实例知道应用何时需要将页面从大容量存储装置带入到系统存储器,并确定哪些应用页面要从系统存储器中逐出以为从大容量存储装置调出的传入页面腾出空间。
图2的改进的方法允许对系统存储器和大容量存储装置之间的页面移动进行更微调的控制,通过例如使这种页面移动取决于将受页面移动影响的SSD的内部队列状态。即,更高级别的软件将与页面移动相关的命令(例如,从新页面的大容量存储装置中读取以用于输入到系统存储器中以及将从系统存储器中逐出的页面写入到大容量存储装置中)推送到软件可以看到具有较低的内部命令队列状态的SSD,而不是具有更高的内部命令队列状态的SSD。在这种软件被设计为提前进行这样的页面移动(即,在实际需要页面之前从大容量存储装置中调出页面)的程度上,整体系统应当看到减少的SSD延时,而没有任何应用软件暂缓。
此外,SSD可以在池中组队,以直接地卸载数据移动、交换和/或复制之间的操作。这些组队的标识符然后可以以这样的方式使用:每个标识符组将探听诸如用于复制内部写入命令的写入之类的操作,而命令从许多个减少到一个,从而增加了主机系统总线带宽的潜力。
甚至,一旦在系统存储器中实例化了传统的SSD固件程序代码的实例,其就能够被改换用途以用于某个其他硬件组件。例如,用于实现任何加密算法的程序代码也可以由通用处理核心、图形处理单元、FPGA、人工智能单元、网络芯片等中的任一项使用。因此,在各种实施例中,存在可调用的应用编程接口(API),其不仅用于实现SSD操作,而且还实现用于整体计算机内的其他硬件组件的操作。
注意,为了帮助支持主机系统在系统存储器外执行和/或传统上已经在固态驱动器内执行的全部前面提到的功能,固态驱动器(包括其控制器)可以被设计或以其他方式配置为向主机发送某些信息(例如,状态信息、已执行的命令的确认、消息接收的确认等)。
最后,尽管以上实施例提到了闪速存储器大容量存储装置SSD,但是在其他实施例中,非易失性存储器SSD是利用例如由新兴的非易失性存储单元技术组成的三维非易失性随机存取存储器来实现的。示例包括来自Intel公司的OptaneTM存储器、来自Micron公司的QuantXTM和/或集成在半导体芯片的互连布线之间的其他类型的电阻式非易失性存储器单元(例如,电阻式随机存取存储器(ReRAM)、铁电随机存取存储器(FeRAM)、自旋转移力矩随机存取存储器(STT-RAM)等)。这些存储器中的至少一些是字节可寻址的,并且因此可以以系统存储器角色而不是大容量存储装置角色使用。因此,用作非易失性系统存储器的存储器模块的固件也可以在存储器模块(例如,标称软件应用)的外部执行。
图4提供了计算系统400(例如,智能电话、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示例性描绘。如图4所观察到的,计算系统400可以包括设置在多核心处理器或应用处理器上的中央处理单元(CPU)401(其可以包括例如多个通用处理核心415_1至415_X)和主存储器控制器417(也被称为系统存储器)、主存储器402(也被称为系统存储器)、显示器403(例如,触摸屏、平板)、本地有线点对点链路(例如,通用串行总线(USB))接口404、各种网络I/O功能405(例如,以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口406、无线点对点链路(例如,蓝牙)接口407和全球定位系统(GPS)接口408、各种传感器409_1至409_Y、一个或多个相机410、电池411、功率管理控制单元412、扬声器和麦克风413以及音频编码器/解码器414。
应用处理器或多核心处理器450可以是SOC,该SOC包括其CPU 401内的一个或多个通用处理核心415、一个或多个图形处理单元416、主存储器控制器417和I/O控制功能418(外围控制集线器)。通用处理核心415通常执行计算系统的应用软件和系统。图形处理单元416通常执行图形密集型功能以例如生成在显示器403上呈现的图形信息。计算系统还可以包括与核心415关系不大的其他类型的处理单元,例如:1)人工智能处理单元,其用于执行基于神经网络突触的操作以基于状态来学习和优化;2)至少一个可重配置的处理单元,其由存储器块和加速器的阵列组成,以计算专用运算。主存储器控制器417与系统存储器402接合以向系统存储器402写入数据或从系统存储器402中读取数据。
系统存储器402和/或非易失性大容量存储装置420中的任一项可以由三维非易失性随机存取存储器组成,该三维非易失性随机存取存储器例如由新兴的非易失性存储单元技术组成。示例包括来自Intel公司的OptaneTM存储器、来自Micron公司的QuantXTM和/或集成在半导体芯片的互连布线之间的其他类型的电阻式非易失性存储器单元(例如,电阻式随机存取存储器(ReRAM)、铁电随机存取存储器(FeRAM)、自旋转移力矩随机存取存储器(STT-RAM)等)。非易失性大容量存储装置420至少也可以由闪速存储器(例如,NAND闪存)组成。如上所描述的,不管用于大容量存储装置的特定非易失性存储器类型如何,都可以将非易失性存储器集成到SSD中,SSD的固件已经有效地迁移到了如上所详细描述的系统存储器。
触摸屏显示器403、通信接口404-407、GPS接口408、传感器409、相机410和扬声器/麦克风编解码器413、414中的每一个均可以被视为相对于整体计算系统的各种形式的I/O(输入和/或输出),各种形式的I/O在适当的情况下还包括集成的外围设备(例如,一个或多个相机410)。取决于实施方式,这些I/O组件中的各种I/O组件可以被集成在应用处理器/多核处理器450上,或者可以位于管芯外或者位于应用处理器/多核处理器450的封装的外部。功率管理控制单元412通常控制系统400的功耗。
尽管以上对图4的讨论已经讨论了作为SOC的组件的CPU 401、图形处理单元416、主存储器控制器417和外围控制集线器418,但是图4的一般架构应当理解为适用于多种不同类型的计算系统实施方式中的任一种。例如,仅仅作为一种可能性,图4的计算机也可以被实现为机架安装式系统,其中,CPU 401、主存储器控制器417和外围控制集线器418都是插入到公共机架中的单独的组件。一个示例是用于例如活动地板(raised floor)或数据中心应用的开放计算项目(OCP)实施方式等。
本发明的实施例可以包括如上所阐述的各种过程。过程可以体现在机器可执行指令中。这些指令可以用于使得通用或专用处理器执行某些过程。可替代地,这些过程可以通过包含硬连线逻辑电路或可编程逻辑电路(例如,现场可编程门阵列(FPGA)、用于执行过程的可编程逻辑器件(PLD))的特定/定制硬件组件来执行,或者通过已编程的计算机组件和定制硬件组件的任何组合来执行。
本发明的元素也可以被提供为用于存储机器可执行指令的机器可读介质。机器可读介质可以包括但不限于软盘、光盘、CD只读存储器(ROM)和磁光盘、闪速存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或适合用于存储电子指令的其他类型的介质/机器可读介质。例如,本发明可以作为计算机程序被下载,计算机程序可以通过体现在载波或其他传播介质中的数据信号经由通信链路(例如,调制解调器或网络连接)来从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
已经描述了一种计算系统。该计算系统包括:多个处理核心;系统存储器控制器;外围控制集线器;耦合到外围控制集线器的固态驱动器;以及耦合到系统存储器控制器的系统存储器。该系统存储器包括用于执行固态驱动器内的以下操作中的任一项的程序代码:损耗均衡;垃圾收集;逻辑块地址(LBA)到物理块地址(PBA)的转换;用于带宽仲裁的固态驱动器的协商;介质块包装;冗余;错误检测;错误校正;数据刷新;加密;固态驱动器内的硬件加速器的配置;配置固态驱动器内的队列的深度和/或服务速率;以及探听命令队列并将用于固态驱动器的多个命令合并为单个命令。
程序代码用于对固态驱动器内的寄存器空间进行编程。寄存器空间用于实现以下各项中的任一项:i)启用固态驱动器内的存储器芯片;以及ii)启用固态驱动器内的静态或动态硬件加速器。寄存器空间用于实现以下各项中的任一项:i)是否要启用错误检测;ii)要应用哪种类型的错误检测;以及ii)要启用或/和应用的控制器状况或状态。程序代码能够被改换用途以用于计算系统内的以下硬件单元中的任一项的执行:通用处理核心;图形处理单元;现场可编程门阵列(FPGA);人工智能单元;以及网络单元。
程序代码用于顺序地启用固态驱动器内的组件以在固态驱动器的启动期间通过固态驱动器来实现阶梯功耗曲线。系统存储器可以包括用于计算系统的其他固态驱动器的程序代码的其他相应的实例。程序代码的实例中的每一个以及程序代码被设计为将其相应的固态驱动器的命令队列暴露给更高级别的软件。该计算系统可以包括存储在系统存储器中的负载均衡程序代码,以有利于向固态驱动器中的其命令队列被占用较少的那些固态驱动器发送存储命令,而不是向固态驱动器中的其命令队列被占用较多的那些固态驱动器发送存储命令。当向固态驱动器发送读取命令或编程命令时,外围控制集线器可以向固态驱动器发送物理块地址。
描述了一种方法。该方法包括:执行来自计算系统的系统存储器的固态驱动器程序代码,以对耦合到该计算系统的固态驱动器执行以下操作中的任一项/全部:损耗均衡;垃圾收集;逻辑块地址(LBA)到物理块地址(PBA)的转换;用于带宽仲裁的固态驱动器的协商;介质块包装;冗余;错误检测;错误校正;数据刷新;加密;固态驱动器内的硬件加速器的配置;配置固态驱动器内的队列的深度和/或服务速率;以及,探听用于固态驱动器的命令队列并将固态驱动器的多个命令合并为单个命令。
固态驱动器程序代码的执行用于对固态驱动器内的寄存器空间进行编程。寄存器空间的编程用于:i)启用固态驱动器内的存储器芯片;以及ii)启用固态驱动器内的硬件加速器。寄存器空间的编程用于:i)启用错误检测;以及ii)确定将应用哪种类型的错误检测。寄存器空间的编程用于:i)启用纠错编码;以及ii)确定将应用哪种类型的纠错编码。程序代码的执行使得固态驱动器内的组件被顺序地启用以在固态驱动器的启动期间通过固态驱动器来实现阶梯功耗曲线。程序代码的执行将固态驱动器的命令队列暴露给更高级别的软件。
该方法可以进一步包括通过执行它们在系统存储器中的程序代码的相应的实例来将固态驱动器的相应的命令队列暴露给更高级别的软件。更高级别的软件可以有利于向固态驱动器中的其命令队列占用较少的固态驱动器发送命令,而不是向固态驱动器中的其命令队列占用较多的固态驱动器发送命令。该方法可以进一步包括利用物理块地址将读取命令或编程命令发送到固态驱动器。
已经描述了一种装置。该装置包括固态驱动器,该固态驱动器用于从固态驱动器耦合到的主机系统接收信息请求。该信息描述了固态驱动器的内部的上下文。固态驱动器用于在内部提取响应信息,并且然后将信息发送到主机系统,以支持针对固态驱动器执行的以下操作中的任一项的主机系统的执行:损耗均衡;垃圾收集;逻辑块地址(LBA)到物理块地址(PBA)的转换;用于带宽仲裁的固态驱动器的协商;介质块包装;冗余;错误检测;错误校正;数据刷新;加密;固态驱动器内的硬件加速器的配置;配置固态驱动器内的队列的深度和/或服务速率;以及,探听命令队列并将多个固态驱动器命令合并为单个命令。垃圾收集、损耗均衡和逻辑块地址到物理块地址的转换例程将通过以下操作来执行:利用主机系统的通用处理核心执行在主机系统的系统存储器中实例化的程序代码。
在前述说明书中,已经参考本发明的特定示例性实施例描述了本发明。然而,将显而易见的是,在不脱离所附权利要求书中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是说明性意义的而不是限制性意义的。
Claims (20)
1.一种计算系统,包括:
多个处理核心;
系统存储器控制器;
外围控制集线器;
耦合到所述外围控制集线器的固态驱动器;以及,
耦合到所述系统存储器控制器的系统存储器,所述系统存储器包括用于在所述固态驱动器内执行以下操作中的任一项的程序代码:
损耗均衡;
垃圾收集;
逻辑块地址(LBA)到物理块地址(PBA)的转换;
用于带宽仲裁的所述固态驱动器的协商;
介质块包装;
冗余;
错误检测;
错误校正;
数据刷新;
加密;
所述固态驱动器内的硬件加速器的配置;
配置所述固态驱动器内的队列的深度和/或服务速率;以及,
探听命令队列并且将用于所述固态驱动器的多个命令合并为单个命令。
2.根据权利要求1所述的计算系统,其中,所述程序代码用于对所述固态驱动器内的寄存器空间进行编程。
3.根据权利要求2所述的计算系统,其中,所述寄存器空间用于实现以下操作中的任一项:
i)启用所述固态驱动器内的存储器芯片;以及,
ii)启用所述固态驱动器内的静态的或动态的硬件加速器。
4.根据权利要求2所述的计算系统,其中,所述寄存器空间用于指示以下各项中的任一项:
i)所述错误检测是否要被启用;
ii)所述错误检测的类型;以及,
ii)要启用或/和应用的控制器状况或状态。
5.根据权利要求1所述的计算系统,其中,所述程序代码能够被改换用途以用于由所述计算系统内的以下硬件单元中的任一项执行:
通用处理核心;
图形处理单元;
现场可编程门阵列(FPGA);
人工智能单元;以及,
网络单元。
6.根据权利要求1所述的计算系统,其中,所述程序代码用于顺序地启用所述固态驱动器内的组件以在所述固态驱动器的启动期间通过所述固态驱动器实现阶梯功耗曲线。
7.根据权利要求1所述的计算系统,其中,所述系统存储器包括用于所述计算系统的其他固态驱动器的程序代码的其他相应的实例,所述程序代码和程序代码的实例中的每一个被设计为将其相应的固态驱动器的命令队列暴露给更高级别的软件。
8.根据权利要求7所述的计算系统,进一步包括存储在所述系统存储器中的负载均衡程序代码,以有利于向所述固态驱动器中的其命令队列占用较少的固态驱动器发送存储命令,而不是向所述固态驱动器中的其命令队列占用较多的固态驱动器发送存储命令。
9.根据权利要求1所述的计算系统,其中,当向所述固态驱动器发送读取命令或编程命令时,所述外围控制集线器向所述固态驱动器发送物理块地址。
10.一种方法,包括:
执行来自计算系统的系统存储器的固态驱动器程序代码,以针对耦合到所述计算系统的固态驱动器执行以下操作中的任一项/全部:
损耗均衡;
垃圾收集;
逻辑块地址(LBA)到物理块地址(PBA)的转换;
用于带宽仲裁的所述固态驱动器的协商;
介质块包装;
冗余;
错误检测;
错误校正;
数据刷新;
加密;
所述固态驱动器内的硬件加速器的配置;
配置所述固态驱动器内的队列的深度和/或服务速率;以及,
探听所述固态驱动器的命令队列,并且将用于所述固态驱动器的多个命令合并为单个命令。
11.根据权利要求10所述的方法,其中,所述方法进一步包括:执行所述固态驱动器程序代码用于对所述固态驱动器内的寄存器空间进行编程。
12.根据权利要求11所述的方法,其中,对所述寄存器空间的编程用于:
i)启用所述固态驱动器内的存储器芯片;以及,
ii)启用所述固态驱动器内的所述硬件加速器。
13.根据权利要求11所述的方法,其中,对所述寄存器空间的编程用于:
i)启用所述错误检测;以及,
ii)确定所述错误检测的类型。
14.根据权利要求11所述的方法,其中,对所述寄存器空间的编程用于:
i)启用纠错编码;以及,
ii)确定哪种类型的纠错编码要被应用。
15.根据权利要求10所述的方法,其中,所述程序代码的执行使得所述固态驱动器内的组件被顺序地启用以在所述固态驱动器的启动期间通过所述固态驱动器实现阶梯功耗曲线。
16.根据权利要求10所述的方法,其中,所述程序代码的执行将所述固态驱动器的命令队列暴露给更高级别的软件。
17.根据权利要求16所述的方法,进一步包括通过在所述系统存储器中执行其程序代码的相应实例来将固态驱动器的相应的命令队列暴露给所述更高级别的软件,并且所述更高级别的软件有利于向所述固态驱动器中的其命令队列占用较少的固态驱动器发送命令,而不是向所述固态驱动器中的其命令队列占用较多的固态驱动器发送命令。
18.根据权利要求10所述的方法,进一步包括利用物理块地址来向所述固态驱动器发送读取命令或编程命令。
19.一种装置,包括:
固态驱动器,其用于从所述固态驱动器耦合到的主机系统接收信息请求,所述信息描述了所述固态驱动器的内部的上下文,所述固态驱动器用于在内部提取响应信息,并且然后向所述主机系统发送所述信息,以支持所述主机系统执行针对所述固态驱动器执行的以下操作中的任一项:
损耗均衡;
垃圾收集;
逻辑块地址(LBA)到物理块地址(PBA)的转换;
用于带宽仲裁的所述固态驱动器的协商;
介质块包装;
冗余;
错误检测;
错误校正;
数据刷新;
加密;
所述固态驱动器内的硬件加速器的配置;
配置所述固态驱动器内的队列的深度和/或服务速率;以及,
探听命令队列并且将多个固态驱动器命令合并为单个命令。
20.根据权利要求19所述的装置,其中,所述垃圾收集、损耗均衡和逻辑块地址到物理块地址的转换例程用于通过以下操作来执行:利用所述主机系统的通用处理核心来执行在所述主机系统的系统存储器中实例化的程序代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/833,422 | 2020-03-27 | ||
US16/833,422 US11687471B2 (en) | 2020-03-27 | 2020-03-27 | Solid state drive with external software execution to effect internal solid-state drive operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448504A true CN113448504A (zh) | 2021-09-28 |
Family
ID=71517574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011451905.2A Pending CN113448504A (zh) | 2020-03-27 | 2020-12-10 | 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11687471B2 (zh) |
CN (1) | CN113448504A (zh) |
DE (1) | DE102020132764A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116243957A (zh) * | 2023-05-10 | 2023-06-09 | 北京得瑞领新科技有限公司 | Ssd的功能扩展控制方法、装置和系统 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11475954B2 (en) | 2020-11-15 | 2022-10-18 | Macronix International Co., Ltd. | Fast interval read setup for 3D NAND flash |
US11488657B1 (en) * | 2021-04-19 | 2022-11-01 | Macronix International Co., Ltd. | Fast interval read setup for 3D memory |
US11803326B2 (en) | 2021-04-23 | 2023-10-31 | Macronix International Co., Ltd. | Implementing a read setup burst command in 3D NAND flash memory to reduce voltage threshold deviation over time |
US11385839B1 (en) | 2021-04-27 | 2022-07-12 | Macronix International Co., Ltd. | Implementing a read setup in 3D NAND flash memory to reduce voltage threshold deviation over time |
CN113411651A (zh) * | 2021-06-17 | 2021-09-17 | 康佳集团股份有限公司 | 一种视频处理方法、播放器及计算机可读存储介质 |
US20230185483A1 (en) * | 2021-12-14 | 2023-06-15 | Micron Technology, Inc. | Solid State Drives with Hardware Accelerators for Proof of Space Computations |
US11941254B2 (en) | 2021-12-14 | 2024-03-26 | Micron Technology, Inc. | Test memory sub-systems through validation of responses to proof of space challenges |
US11960756B2 (en) | 2021-12-14 | 2024-04-16 | Micron Technology, Inc. | Management of storage space in solid state drives to support proof of space activities |
US11977742B2 (en) | 2022-02-02 | 2024-05-07 | Micron Technology, Inc. | Solid state drives configurable to use storage spaces of remote devices in activities involving proof of space |
US11775188B2 (en) | 2022-02-02 | 2023-10-03 | Micron Technology, Inc. | Communications to reclaim storage space occupied by proof of space plots in solid state drives |
CN114936172A (zh) * | 2022-05-24 | 2022-08-23 | 国网河南省电力公司内乡县供电公司 | 一种能够实现载荷数据管理的无人机机载数据管理系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282128A1 (en) * | 1999-08-04 | 2008-11-13 | Super Talent Electronics, Inc. | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance |
US6839792B2 (en) * | 2000-12-15 | 2005-01-04 | Innovative Concepts, Inc. | Data modem |
US6907552B2 (en) * | 2001-08-29 | 2005-06-14 | Tricn Inc. | Relative dynamic skew compensation of parallel data lines |
US7024427B2 (en) * | 2001-12-19 | 2006-04-04 | Emc Corporation | Virtual file system |
US6983396B2 (en) * | 2002-02-15 | 2006-01-03 | International Business Machines Corporation | Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system |
TWI371691B (en) * | 2007-12-16 | 2012-09-01 | Infortrend Technology Inc | Storage controller for handling data stream and method thereof |
US9720616B2 (en) * | 2008-06-18 | 2017-08-01 | Super Talent Technology, Corp. | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) |
US8090899B1 (en) * | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US9195588B2 (en) * | 2010-11-02 | 2015-11-24 | Hewlett-Packard Development Company, L.P. | Solid-state disk (SSD) management |
US10083152B1 (en) * | 2012-01-27 | 2018-09-25 | Open Invention Network Llc | Virtualized multicore systems with extended instruction heterogeneity |
CN102693198B (zh) * | 2012-05-12 | 2015-03-25 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
US10725835B2 (en) | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
US10423358B1 (en) * | 2017-05-31 | 2019-09-24 | FMAD Engineering GK | High-speed data packet capture and storage with playback capabilities |
US20190294345A1 (en) * | 2018-03-21 | 2019-09-26 | Super Talent Technology Corp. | Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance |
US11069425B2 (en) | 2018-08-21 | 2021-07-20 | Intel Corporation | Multi-level memory repurposing technology to process a request to modify a configuration of a persistent storage media |
US20190042139A1 (en) | 2018-08-30 | 2019-02-07 | Intel Corporation | Moving average valid content on ssd |
US10795593B2 (en) | 2018-09-10 | 2020-10-06 | Intel Corporation | Technologies for adjusting the performance of data storage devices based on telemetry data |
US20190042128A1 (en) | 2018-09-10 | 2019-02-07 | Intel Corporation | Technologies dynamically adjusting the performance of a data storage device |
US20200409698A1 (en) * | 2019-06-29 | 2020-12-31 | Intel Corporation | Apparatus and method for operating system notification of inter-core work offload |
US11372711B2 (en) * | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11016766B2 (en) * | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US11567862B2 (en) | 2020-03-17 | 2023-01-31 | Intel Corporation | Configurable NVM set to tradeoff between performance and user space |
US11748001B2 (en) | 2020-03-26 | 2023-09-05 | Sk Hynix Nand Product Solutions Corp. | Techniques to predict or determine time-to-ready for a storage device |
-
2020
- 2020-03-27 US US16/833,422 patent/US11687471B2/en active Active
- 2020-12-09 DE DE102020132764.1A patent/DE102020132764A1/de active Pending
- 2020-12-10 CN CN202011451905.2A patent/CN113448504A/zh active Pending
-
2023
- 2023-05-12 US US18/196,879 patent/US20230281138A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116243957A (zh) * | 2023-05-10 | 2023-06-09 | 北京得瑞领新科技有限公司 | Ssd的功能扩展控制方法、装置和系统 |
CN116243957B (zh) * | 2023-05-10 | 2023-10-31 | 北京得瑞领新科技有限公司 | Ssd的功能扩展控制方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230281138A1 (en) | 2023-09-07 |
US11687471B2 (en) | 2023-06-27 |
US20200226080A1 (en) | 2020-07-16 |
DE102020132764A1 (de) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687471B2 (en) | Solid state drive with external software execution to effect internal solid-state drive operations | |
JP6112594B2 (ja) | ハイブリッドメモリデバイス、メモリデバイスを含む電子デバイス、および、メモリデバイス用のコントローラ | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
TWI578156B (zh) | 非依電性隨機存取記憶磁碟 | |
US20170351452A1 (en) | Dynamic host memory buffer allocation | |
US20160232103A1 (en) | Block storage apertures to persistent memory | |
US9727267B1 (en) | Power management and monitoring for storage devices | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
JP2013530448A (ja) | キャッシュストレージアダプタアーキテクチャ | |
US20170177482A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
CN111274063B (zh) | 混合内存模块以及操作混合内存模块的系统和方法 | |
US20180285282A1 (en) | Method and apparatus for erase block granularity eviction in host based caching | |
US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
US10949356B2 (en) | Fast page fault handling process implemented on persistent memory | |
US10095432B2 (en) | Power management and monitoring for storage devices | |
EP3926451B1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
CN112148628A (zh) | 用于主机管理的存储的卸载碎片整理操作 | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
WO2017151262A1 (en) | Method and apparatus for providing a contiguously addressable memory region by remapping an address space | |
US11526441B2 (en) | Hybrid memory systems with cache management | |
JP2013532880A (ja) | メモリ領域を埋めるためのプロセッサ支援 | |
US10606488B2 (en) | Selective data flush in a storage device | |
CN114270317A (zh) | 层次型存储器系统 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US11054993B2 (en) | Mass storage system having peer-to-peer data movements between a cache and a backend store |
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 |