CN113805791A - 由存储设备向主机传送数据重定位信息以提高系统性能 - Google Patents

由存储设备向主机传送数据重定位信息以提高系统性能 Download PDF

Info

Publication number
CN113805791A
CN113805791A CN202011543164.0A CN202011543164A CN113805791A CN 113805791 A CN113805791 A CN 113805791A CN 202011543164 A CN202011543164 A CN 202011543164A CN 113805791 A CN113805791 A CN 113805791A
Authority
CN
China
Prior art keywords
memory
computing device
host computing
cache
data
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
Application number
CN202011543164.0A
Other languages
English (en)
Inventor
B·杜塔
S·N·特丽卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN113805791A publication Critical patent/CN113805791A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]

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 Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种装置,包括:控制器,其包括接口,该接口包括与主机计算设备进行通信的电路;以及包括电路的重定位管理器,该重定位管理器用于:针对主机计算设备提供要在非易失性存储器内重定位的多个数据块的标识;以及响应于要被重定位的多个数据块的标识,根据由主机计算设备提供的指令来重定位多个数据块的至少一个子集。

Description

由存储设备向主机传送数据重定位信息以提高系统性能
背景技术
一种计算机系统可以包括可以与一个或多个存储设备进行通信的一个或多个中央处理单元(CPU)。CPU可以包括处理器,处理器用于执行利用耦合到CPU的存储设备的操作系统和/或其他软件应用。软件应用可以向存储设备写入数据并且从存储设备中读取数据。
附图说明
图1示出了根据某些实施例的计算机系统的框图,其中,重定位信息由高速缓冲存储设备传送到主机。
图2示出了根据某些实施例的用于将重定位信息从高速缓冲存储设备传送到主机的示例流程。
图3示出了根据某些实施例的计算机系统的框图,其中,通过存储设备将重定位信息传送到主机。
图4示出了根据某些实施例的用于将重定位信息从存储设备传送到主机的示例流程。
在各个附图中,相似的附图标记和标志指示相似的元素。
具体实施方式
尽管附图描绘了特定的计算机系统,但是各种实施例的构思适用于任何合适的集成电路和其他逻辑设备。其中可以使用本公开的教导的设备的示例包括:台式计算机系统、服务器计算机系统、存储系统、手持设备、平板计算机、其他薄型笔记本电脑、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括:蜂窝电话、数码相机、媒体播放器、个人数字助理(PDA)、和手持PC。嵌入式应用可以包括,例如,微控制器、数字信号处理器(DSP)、SOC、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行以下教导的功能和操作的任何其他系统。本公开的各种实施例可以在任何合适的计算环境中使用,例如,个人计算设备、服务器、大型机、云计算服务提供商基础设施、数据中心、通信服务提供商基础设施(例如,演进分组核心的一个或多个部分)、或者包括一组计算设备的其他环境。
图1示出了根据某些实施例的计算机系统100的框图,其中,重定位信息由高速缓冲存储设备106传送到主机(例如,中央处理单元(CPU)102)。系统100包括耦合到高速缓冲存储设备106、系统存储器设备107和存储设备110的CPU 102。在操作期间,可以在CPU 102与高速缓冲存储设备106、系统存储器设备107和存储设备110中的一个或多个之间传送数据。在一些实例中,数据可以在高速缓冲存储设备106、系统存储器设备107和存储设备110中的两个或多个之间直接地传送。在各种实施例中,特定的数据操作(例如,擦除、编程和读取操作)或涉及高速缓冲存储设备106、系统存储器设备107或存储设备110的其他通信可以由处理器108执行的操作系统(例如,经由文件系统115)或其他软件应用(例如,高速缓存控制器112)中的一个或多个进行管理。
缓存是一种向终端用户提供性能和成本益处的技术。例如,系统存储器(例如,动态随机存取存储器(DRAM))可以用于缓存磁盘数据。可替代地,快速存储设备(例如,固态驱动器(SSD)或诸如包括3D交叉点存储器的双列直插式存储器模块(DIMM)之类的存储设备)可以用于缓存较慢的存储设备(例如,硬盘驱动器(HDD))的数据。当由主机执行的应用请求当前未被主机计算设备缓存的数据时,数据可以从较慢的存储设备中被取回,并且然后被存储在可以由主机更容易地存取的存储器中。例如,可以通过将被取回的数据存储在高速缓冲存储设备(例如,SSD)、系统存储器设备(例如,DRAM)和/或CPU的一个或多个较低级别的高速缓存中来缓存从较慢的存储设备(例如,硬盘驱动器(HDD))中取回的数据。在数据被缓存之后,可以从高速缓存中的一个而不是较慢的存储设备中取回数据,因此减少了由主机进行数据访问的延时的量。
许多存储设备(例如,包括NAND非易失性存储器的SSD)包括数据的间接结构,其中,由主机使用的逻辑块地址(LBA)被映射到存储设备的物理地址。存储设备可以使用被称为“重组(defrag)”(其是“重组(defragmentation)”的简称)的操作来将物理数据重定位在后台中的存储设备内(例如,独立于来自主机的如此操作的特定命令)。此过程帮助维护良好的写入性能,同时满足各种介质管理约束。重组操作将源带中的有效源数据的多个块移动到目的地带,其中,数据块可以引用任何合适的数据组。数据块的后台重定位可能由于多种原因(例如,数据无效性级别、后台数据刷新、读取干扰、NAND错误、抢先错误处理或其他原因)而被触发。由于重组操作会在存储驱动器上内部地引入附加的读取和写入,因此重组操作会增加读取和写入放大率,并且降低存储驱动器的写入性能和耐久性。
在其中将存储设备用作高速缓存的配置中,当正在被移动的数据在高速缓存内变旧或者即将从高速缓存中被逐出时,在存储设备内的重定位是浪费的。在其中将存储设备用作后备存储并且将更快的存储器(例如,DRAM、3D交叉点存储器(例如,3D XPointTM)、或其他字节可访问的非易失性存储器(例如,磁阻随机存取存储器(MRAM)))用作缓存介质的配置中,存储设备上的重组操作提供了消除介质读取操作以执行预提取或高速缓存行插入的机会,由于存储设备无论如何都需要执行读取操作作为重组操作的一部分,并且相同的读取操作可以主动提供用于存储在缓存介质中的数据(无论是通过高速缓存控制器间接地提供给缓存介质还是经由对等通信直接地提供给缓存介质),以用于高速缓存插入而不要求单独的数据读取操作。
诸如SSD之类的存储设备还可以受益于“修整(trim)”或类似的操作,该操作建议存储设备不再需要指定的LBA处的数据。例如,当用户删除文件时,操作系统可以将修整命令发送到存储设备的控制器,以指示在存储设备上进行垃圾收集时可以擦除的数据块(例如,LBA区域)。存储设备然后可以优化重组操作,使得修整操作中指定的数据不被移动(由于它不再有效)。许多系统确定并发布修整命令,但是在修整命令的发布和相关联的重组操作之间可能存在时间间隔。例如,系统可以每晚向一个或多个存储设备发布修整命令。然而,由存储设备在白天期间执行的重组操作可能无法利用相关联的修整操作来最小化数据移动。
本公开的各种实施例通过允许存储设备(例如,SSD)向主机发送重定位信息来提高存储设备性能和耐久性。在一些实施例中,此通信是通过非易失性存储器快速(NVMe)异步事件请求通知或类似的命令来完成的。NVM Express版本1.3和先前的版本定义了寄存器级接口,以供主机软件通过PCI Express与非易失性存储器子系统(PCIeTM上NVMeTM)进行通信。结构上的NVMeTM规范定义了协议接口以及对NVMe接口的相关的扩展,从而实现了在其他互连(例如,以太网、无线带宽TM、光纤信道)上的操作。结构上的NVMe规范具有针对每个NVMe传输的NVMe传输绑定(在该规范内或通过引用)。NVMe规范在https://nvmexpress.org/resources/specifications/处是可获得的。
取决于正在被移动的数据以及指示是保留、逐出还是预提取数据的缓存策略,缓存逻辑可以在重定位之前修整块或者在重定位读取上适时地缓存块。在一些实施例中,文件系统还可以使用这样的通知来用精细的时间粒度发布修整命令。各种实施例可以允许关于数据的重定位的信息来通知由主机发起的各种I/O操作,包括,高速缓存惰性写入、高速缓存预提取、从回收站中删除主机文件、以及触发SSD修整操作。向主机提供重组重定位信息可以减少在I/O忙碌时段期间的SSD重定位,因此提高性能和耐久性,同时允许在重定位读取期间进行适时的缓存和预提取。一些实施例的各种技术优点可以包括:消除重定位浪费、加速预提取、提高缓存命中率(并且因此提高系统级性能)、以及降低内部的写入放大(并且因此降低写入性能和耐久性)。
图1示出了其中高速缓冲存储设备106缓存另一存储设备110的数据的实施例。尽管高速缓冲存储设备106可以是任何合适的存储设备,但是在一些实施例中,高速缓冲存储设备106是SSD或NVDIMM,SSD和NVDIMM包括可字节寻址的非易失性存储器(例如,3D交叉点、MRAM或其他类型的字节可访问的非易失性存储器)。高速缓存控制器112可以管理在高速缓冲存储设备106上缓存来自存储设备110的数据。下面将更详细地描述高速缓存控制器112和系统100的其他组件。参考图2描述了系统100的示例操作。
图2示出了根据某些实施例的用于将重定位信息从高速缓冲存储设备106传送到主机(例如,CPU 102)的示例流程200。在此流程中,高速缓存控制器112代表CPU 102进行操作以与高速缓冲存储设备106通信,尽管在其他实施例中,所描绘的通信和操作可以由系统100的任何合适的组件来执行。
当高速缓存控制器112向高速缓冲存储设备106注册以从高速缓冲存储设备106接收重定位信息时,流程开始于202。注册请求可以采用任何合适的格式。在其中高速缓冲存储设备106实现NVMe接口的一个实施例中,注册请求可以包括操作码为0x0C的异步事件请求命令(其是NVMe管理命令集合的一部分),例如,如在NVM Express基本规范,修订版1.4a或其他合适的NVMe规范(当前的或将来的)中所定义的。命令的事件类型可以被设置为“特定于供应商的事件”。一般而言,由主机的软件将异步事件请求命令发送到高速缓冲存储设备106,以实现报告来自高速缓冲存储设备106的存储设备控制器118的异步事件。
在204处,由高速缓冲存储设备106生成重定位带中的有效块的列表。此列表可以响应于高速缓冲存储设备106内的数据的重定位的触发而生成(例如,作为重组操作的一部分)。该列表包括在重定位期间要被移动的块的标识。该列表可以具有指定要被移动的一个或多个数据块的任何合适的格式(例如,个体的块的标识符、块的范围或其他合适的标识符)。在一个实施例中,该列表可以包括指示哪些块将被重定位的位图。在各种实施例中,可以使用任何合适的名称(例如,LBA或间接单元(IU)(或其表示))来在列表中标识块,其中,IU可以是单个LBA(例如,512字节或其他大小)或者任何合适数量的LBA(例如,128个LBA)。
当高速缓冲存储设备106触发了块的重定位时,其通知高速缓存控制器112,并且然后推迟重定位,直到其接收到包括针对块的指令的响应为止。在一些实施例中,如果在超时时段内没有从主机接收到响应,则高速缓冲存储设备106重定位列表中的所有块。
在206处,与数据块的重定位相关联的事件通知从高速缓冲存储设备106发送到高速缓存控制器112。在一些实施例中,事件通知可以指示重定位块的列表是可用的。作为示例,当使用NVMe接口时,高速缓冲存储设备106的存储设备控制器118可以在存在异步事件(在这种情况下,已经生成了重定位块的列表)要报告给主机时,将完成队列条目发布到管理完成队列。
在208处,高速缓存控制器212从高速缓冲存储设备106请求重定位块列表。在一个示例中,当使用NVMe接口时,此请求可以包括针对特定于供应商的日志页面的获取日志页面命令,该命令包括重定位块的列表。在其他实施例中,该请求可以采用任何合适的格式。在209处,将重定位块列表提供给高速缓存控制器112。在一些实施例中,事件通知206可以可替代地包括重定位块的列表(与异步事件已经发生的通知相反),使得高速缓存控制器112不需要随后请求块。在各种实施例中,每次高速缓冲存储设备106触发重定位,高速缓存控制器112可以从高速缓冲存储设备106接收重定位块列表。
在210处,高速缓存控制器112处理重定位块列表。在特定的实施例中,高速缓存控制器112可以将要被重定位的每个块指派给一组存储桶(bucket)中的一个(例如,通过将标签指派给每个块或者以其他方式将被指派的存储桶与该块相关联)。在各种实施例中,可以围绕以下准则来组织存储桶。首先,如果最近尚未使用块(例如,由主机读取或写入),则不需要将其包括在高速缓冲存储设备106中(由于高速缓存被设计为存储预期在不久的将来由CPU使用的数据)。在各种实施例中,例如,基于块是否被包括在近期使用的块的队列内或者基于自该块的上一次使用以来的时间的指示(例如,此指示可以随着时间改变,并且当该块被访问时可以被重置),最近是否已经使用过块可以是二进制决策。其次,如果数据是脏的(例如,数据已经在高速缓冲存储设备106处被修改,但是尚未在存储设备110处被更新),则应当从高速缓冲存储设备106读取数据并且在存储设备110中更新数据。
在图1的所描绘的实施例中,高速缓存控制器112将块指派给四个存储桶:trim_bucket 128、flush_trim_bucket 130、relo_bucket 132和relo_flush_bucket 134。在所描绘的实施例中,这些存储桶被存储在系统存储器107中,尽管在其他实施例中,存储桶可以被存储在系统100的任何合适的存储器中(例如,CPU 102的高速缓存、专用于存储桶的存储位置、或其他合适的存储器位置)。在一个实施例中,在210处的块的处理期间,每个块被指派给这些存储桶中的一个。
如果该块不脏并且近期未被使用,则该块被指派给trim_bucket 128以用于从高速缓冲存储设备106中删除。如果该块是脏的并且近期未被使用,则该块被指派给flush_trim_bucket 130以用于刷新到存储设备110并且根据高速缓冲存储设备106进行修整。如果该块不脏但是近期已经被使用,则该块被添加到relo_bucket 132以供高速缓冲存储设备106用于重定位。最终,如果该块是脏的但是近期已经被使用,则该块被指派给relo_flush_bucket 134,使得该块可以被重定位在高速缓冲存储设备106内,以及在合适的时间被刷新到存储设备110(例如,当带宽可用时,可以以惰性方式在后台中将其写入存储设备110)。作为数据重定位过程的一部分在高速缓冲存储设备106处执行的读取可以被适时地用于获得要被刷新到存储设备110的数据。
在处理了关于存储桶的块之后,高速缓存控制器112用关于被标记为重定位的块的指令来命令高速缓冲存储设备106。例如,在212处,请求被发送到高速缓冲存储设备106以修整trim_bucket 128中的块。如前所描述的,修整命令向高速缓冲存储设备106指示不需要这些块,并且因此可以将其从重定位中排除。
在214处,高速缓存控制器112发起将flush_trim_bucket 130中的块刷新到存储设备110的请求(流程的此部分还可以包括从主机到高速缓冲存储设备106的对应的读取命令,以获得要被刷新到存储设备110的数据)。另外,在216处,请求被发送到高速缓冲存储设备106以修整flush_trim_bucket 130中的块。
在218处,将块重定位在relo_bucket 132中的请求被发送到高速缓冲存储设备106。
在220处,将块缓存和重定位在relo_flush_bucket 134中的请求被发送到高速缓冲存储设备。此请求命令高速缓冲存储设备106将块重定位在relo_flush_bucket 134中,并且将对应于这些块的读取数据保留在传输缓冲器127中,使得它们可以由主机读取而不必发起标准读取操作来从其原始位置或重定位位置读取块。例如,当高速缓冲存储设备106重定位数据时,它可以首先将数据从其当前的位置读取到传输缓冲器127中,并且然后将数据从传输缓冲器127写入到其重定位的目的地。在各种实施例中,传输缓冲器127可以包括一种类型的存储器(例如,DRAM或SRAM),该存储器允许比用于由高速缓冲存储设备106持久地存储数据的存储器(例如,NAND闪存或3D交叉点)的类型更快的访问。因此,高速缓冲存储设备106可以利用其在重定位期间执行的读取,以使数据更容易地经由传输缓冲器127供主机使用。
在针对各种存储桶中的块提供指令之后(或与此同时),在222处,高速缓存控制器112命令高速缓冲存储设备106:高速缓冲存储设备106可以开始剩余的有效块(例如,未被高速缓存控制器112经由请求212和216从列表中移除的块)的块重定位。
当高速缓冲存储设备106重定位块时,它可以遍历这些块以检查正在被重定位的块是否在relo_flush_bucket 134中。如果特定的块在此存储桶中,则其在重定位过程期间被缓存在高速缓冲存储设备106的传输缓冲器127中。如果传输缓冲器已满,则在226处将这种传输缓冲器的通知发送到高速缓存控制器112。如果在将块置于传输缓冲器中之后,传输缓冲器尚未满,则循环继续,并且当遇到指派给relo_flush_bucket 134的附加的块时,此块也可以在其被重定位时被读取到传输缓冲器中,依此类推,直到传输缓冲器已满。一旦通知高速缓存控制器112缓冲器已满,高速缓存控制器112就在228处读取缓冲器中的块,并且然后在230处将读取块刷新到存储设备110。如果缓冲器未满,但是重定位操作已经完成,则高速缓冲存储设备106可以将这种情况通知高速缓存控制器,并且高速缓存控制器112可以读取传输缓冲器中的任何剩余的块并且将这些块刷新到存储设备110。
在另一实施例中,代替在重定位读取操作之后从传输缓冲器127中读取relo_flush_bucket 134的块,高速缓存控制器112可以将读取和重定位请求发布(其在一个实施例中可以被包括在单个命令中,例如特定于NVMe供应商的命令)到高速缓冲存储设备106,以在relo_flush_bucket 134的块上执行标准读取操作,并且命令高速缓冲存储设备106在relo_flush_bucket 134中重定位这些块。在任何情况下,一旦读取的数据是可用的,高速缓存控制器112就可以将数据刷新到存储设备110。
图2中描述的流程仅仅表示在特定的实施例中可能发生的操作。可以以任何合适的顺序执行操作,而不脱离特定的实施例的范围。在其他实施例中,可以在流程中执行附加的操作。图2中示出的操作中的一些可以在适当的时候被重复、组合、修改或删除。例如,可以将212、216、218、220和222中的任一个或多个组合在从高速缓存控制器112发送到高速缓冲存储设备106的单个命令内(该命令在一个实施例中可以是特定于NVMe供应商的命令)。作为另一示例,212和216可以被包括在相同的修整命令内,并且218、220和222可以被组合在另一命令中(该命令在一个实施例中可以是特定于NVMe供应商的命令)。在其他实施例中,来自高速缓存控制器112的单个命令可以指定将不被重定位的块(并且因此应当从高速缓冲存储设备106接收的初始块重定位列表中移除)或者可以指定将被重定位的块。在各种实施例中,相同的命令(或不同的命令)可以指定在重定位期间要缓存哪些块。
再次返回到图1,CPU 102包括处理器108,例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、SOC或其他用于执行代码(即,软件指令)的设备。在所描绘的实施例中,处理器108包括两个处理元件(核心114A和114B),其可以包括非对称处理元件或对称处理元件。然而,处理器可以包括任何数量的可以是对称或不对称的处理元件。
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程插槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够保存处理器的状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作系统、应用或其他代码)相关联的任何硬件。物理处理器(或处理器插槽)通常指代集成电路,其潜在地包括诸如核心或硬件线程之类的任何数量的其他处理元件。
核心114可以指代位于能够维护独立架构状态的集成电路上的逻辑,其中,每个独立维护的架构状态与至少一些专用的执行资源相关联。硬件线程可以指代位于能够维护独立架构状态的集成电路上的任何逻辑,其中,独立维护的架构状态共享对执行资源的访问。可以看出的是,当某些资源被共享并且其他资源被专用于架构状态时,硬件线程和核心的命名法之间的线重叠。然而经常,核心和硬件线程被操作系统视为个体的逻辑处理器,其中,操作系统能够个体地调度每个逻辑处理器上的操作。
在各种实施例中,处理元件还可以包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处理硬件、寄存器、或其他硬件,以促进处理元件的操作。
应用113可以由CPU 102执行以执行任何合适的操作。该应用可以与由处理器108执行的应用代码相关联。在系统100的各个操作阶段期间,该应用代码可以被存储在存储设备110、高速缓冲存储设备106和/或系统存储器107内。该应用可以通过文件系统115来请求存储在存储设备110、高速缓冲存储设备106和/或系统存储器107内的数据。
文件系统115使所存储的数据对应用113可见(例如,通过在分层名称空间中组织存储)。文件系统115可以管理对文件内容和关于那些文件的元数据二者的访问。文件系统115可以从应用113接收针对由计算系统100存储的数据的系统调用。文件系统115可以是由CPU 102执行的操作系统的一部分。文件系统115可以表示任何合适的文件系统(例如,文件分配表(FAT)、新技术文件系统(NTFS)、弹性文件系统(ReFS)、HFS+、本机Linux文件系统、或其他合适的文件系统)。
高速缓存控制器112可以接收数据读取和写入请求,并且可以确定如何完成往返高速缓存介质(例如,高速缓冲存储设备106)和后备存储介质(例如,存储设备110)的这些请求。高速缓存控制器可以执行任何其他合适的功能(例如,协调后台操作(例如,惰性写入))以使两个介质保持同步,管理到数据和与该数据相关联的元数据的映射,在从高速缓冲存储设备106中删除脏数据之前刷新数据,或者管理将数据预提取到高速缓冲存储设备106中。
在各种实施例中,高速缓存控制器112可以利用I/O控制器109以与高速缓冲存储设备106或存储设备110进行通信。例如,高速缓存控制器112可以将请求发送到I/O控制器109,并且I/O控制器109可以将请求发送到高速缓冲存储设备106或存储设备110。类似地,I/O控制器109可以从高速缓冲存储设备106或存储设备110接收通信,并且将通信提供给高速缓存控制器112。
I/O控制器109是集成的I/O控制器,其包括用于在CPU 102和I/O设备之间传送数据的逻辑。在其他实施例中,I/O控制器109可以在与CPU 102不同的芯片上。I/O设备可以指代能够向电子系统(例如,CPU 102)传送数据和/或从其接收数据的任何合适的设备。例如,I/O设备可以包括音频/视频(A/V)设备控制器(例如,图形加速器或音频控制器);数据存储设备控制器(例如,闪速存储器设备、磁性存储磁盘或光学存储磁盘控制器);无线收发器;网络处理器;网络接口控制器;或用于另外的输入设备的控制器(例如,监视器、打印机、鼠标、键盘或扫描仪);或其他合适的设备。在特定的实施例中,I/O设备可以包括可以通过I/O控制器109耦合到CPU 102的高速缓冲存储设备106或存储设备110。
I/O设备可以使用以下任何合适的协议来与CPU 102的I/O控制器109进行通信:例如,外围组件互连(PCI)、PCI Express(PCIe)、通用串行总线(USB)、串行连接SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、IEEE 802.3、IEEE 802.11或其他当前或将来的信令协议。在特定的实施例中,I/O控制器109和相关联的I/O设备可以根据以下逻辑设备接口规范来传送数据和命令:NVMe(例如,如在www.nvmexpress.org/specifications/处可获得的规范中的一个或多个所描述的)或高级主机控制器接口(AHCI)(例如,如由诸如串行ATA AHCI之类的一个或多个AHCI规范:在http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html处可获得的规范,修订版1.3.1所描述的)。在各种实施例中,耦合到I/O控制器109的I/O设备可以位于芯片外(例如,与CPU 102不在相同的芯片上)或者可以与CPU 102集成在相同的芯片上。
存储器控制器111是集成的存储器控制器,其控制进出一个或多个系统存储器设备107的数据流。存储器控制器111可以包括可操作用于以下操作的逻辑:从系统存储器设备107中读取,写入系统存储器设备107,或者从系统存储器设备107请求其他操作。在各种实施例中,存储器控制器111可以从核心114和/或I/O控制器109接收写入请求,并且可以将这些请求中指定的数据提供给系统存储器设备107以用于存储在其中。存储器控制器111还可以从系统存储器设备107中读取数据,并且将读取数据提供给I/O控制器109或核心114。在操作期间,存储器控制器111可以发布包括系统存储器设备107的一个或多个地址的命令,以便从存储器读取数据或者向存储器写入数据(或执行其他操作)。在一些实施例中,存储器控制器111可以实现在与CPU 102相同的芯片上,而在其他实施例中,存储器控制器111可以实现在与CPU 102的芯片不同的芯片上。I/O控制器109可以执行关于一个或多个高速缓冲存储设备106或存储设备110的类似的操作。
系统存储器设备107可以存储任何合适的数据(例如,由处理器108用于提供计算机系统100的功能的数据)。例如,可以将与由核心114执行的程序或由核心114访问的文件相关联的数据存储在系统存储器设备107中。因此,系统存储器设备107可以包括系统存储器,该系统存储器存储由核心114执行或以其他方式使用的数据和/或指令序列。在各种实施例中,系统存储器设备107可以存储临时数据、即使在断开系统存储器设备107的电源之后仍保留存储的持久性数据(例如,用户的文件或指令序列)、或者其组合。系统存储器设备107可以被专用于特定的CPU 102,或者可以与计算机系统100的其他设备(例如,一个或多个其他处理器或其他设备)共享。
在各种实施例中,系统存储器设备107可以包括存储器(其包括任何数量的存储器阵列)、存储器设备控制器以及其他支持逻辑(未示出)。存储器阵列可以包括非易失性存储器和/或易失性存储器。非易失性存储器是不需要电源来维持由该介质存储的数据状态的存储介质。非易失性存储器的非限制性示例可以包括以下各项中的任一个或组合:固态存储器(例如,平面或3D NAND闪速存储器或NOR闪速存储器)、3D交叉点存储器、使用硫化物相变材料(例如,硫化物玻璃)的存储器设备、字节可寻址的非易失性存储器设备、铁电存储器、硅氧化氮氧化硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)奥氏存储器、纳米线存储器、电可擦可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)、以及磁性存储存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的相交处并且是个体可寻址的,并且其中,位存储基于体电阻的改变。易失性存储器是需要电源来维持由该介质存储的数据状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM)(例如,DRAM或静态随机存取存储器(SRAM))。可以在存储器阵列中使用的一种特定的类型的DRAM是同步动态随机存取存储器(SDRAM)。
在特定的实施例中,存储器107的任何部分(例如,易失性存储器的一部分)可以符合由JEDEC发布的用于SDRAM存储器的标准的一个或多个部分,例如,用于双倍数据率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、用于DDR4SDRAM的JESD79-4A或低功率DDR标准(例如,LPDDR4)(这些标准在www.jedec.org处是可获得的)。这样的标准(和类似的标准)可以被称为基于DDR的标准。
高速缓冲存储设备106或存储设备110可以存储任何合适的数据(例如,由处理器108用于提供计算机系统100的功能的数据)。例如,与由核心114A和114B执行的程序或由核心114A和114B访问的文件相关联的数据可以被存储在高速缓冲存储设备106或存储设备110中。因此,在一些实施例中,高速缓冲存储设备106或存储设备110可以存储由核心114A和114B执行或以其他方式使用的数据和/或指令序列。在各种实施例中,高速缓冲存储设备106或存储设备110可以存储即使在断开对高速缓冲存储设备106或存储设备110的电源之后仍保留存储的持久性数据(例如,用户的文件或软件应用代码)。高速缓冲存储设备106或存储设备110可以被专用于CPU 102或者与计算机系统100的其他设备(例如,另一个CPU或其他设备)共享。
在所描绘的实施例中,高速缓冲存储设备106包括存储设备控制器118和存储器116,该存储器116包括可操作用于存储数据的四个存储器设备122A-D,然而,高速缓冲存储设备可以包括任何合适数量的存储器设备。高速缓冲存储设备106可以包括任何数量的存储器116,并且每个存储器116可以包括任何数量的存储器设备122(例如,122A-D)。在特定的实施例中,存储器设备122可以是或者包括具有一个或多个存储器芯片123(例如,存储器芯片123A-D)的半导体封装。在所描绘的实施例中,存储器116包括存储器设备122A-D(尽管在本文中可以对存储器设备122A进行特定参考,但是其他存储器设备可以具有存储器设备122A的任何合适的特性)和存储器设备控制器126。
存储器设备122A(例如,存储器设备的每个存储器芯片)包括多个存储器单元,存储器单元各自可操作用于存储一个或多个位。可以以任何合适的方式(例如,按行(例如,字线)和列(例如,位线)、三维结构和/或其他方式)来布置存储器设备122A的单元。在各种实施例中,单元可以在逻辑上被分组为体、块、子块、平面、字线、页面、帧、字节或其他合适的组。
存储器设备122A可以包括上面列出的易失性或非易失性存储器中的任一个或其他合适的存储器。在特定的实施例中,存储器设备122A包括非易失性存储器(例如,平面或3D NAND闪速存储器)。在特定的实施例中,具有非易失性存储器的存储器设备122A可以符合由JEDEC发布的用于非易失性存储器的一个或多个标准,例如,JESD218、JESD219、JESD220-1、JESD220C、JESD223C、JESD223-1、或其他合适的现有或将来的标准(在本文中引用的JEDEC标准在www.jedec.org处是可获得的)。
在各种实施例中,高速缓冲存储设备106包括NAND闪速存储器(在本文中包括NAND闪速存储器的存储设备被称为NAND闪速存储设备)。在一些实施例中,高速缓冲存储设备106可以是固态驱动器;存储器卡;通用串行总线(USB)闪存驱动器;或集成在设备(例如,智能手机、相机、媒体播放器或其他计算设备)内的存储器。一般而言,具有NAND闪速存储器的存储设备通过由存储器的每个单元存储的位数进行分类。例如,单级单元(SLC)存储器具有各自存储一位数据的单元,多级单元(MLC)存储器具有各自存储两位数据的单元,三级单元(TLC)存储器具有各自存储三位数据的单元,四级单元(QLC)存储器具有各自存储四位数据的单元;并且五级单元(PLC)存储器具有各自存储五位数据的单元,尽管一些存储器可以在相同的设备的相同的阵列或不同的阵列上利用多种编码方案(例如,MLC和TLC)。
在特定的实施例中,存储器设备122是半导体封装。在各种实施例中,半导体封装可以包括壳体,该壳体包括诸如存储器芯片123A-D之类的一个或多个半导体管芯(也被称为芯片)。封装还可以包括用于连接到外部电路的接触引脚或引线。然而,由于存储器设备可以是一个或多个存储器阵列的任何合适的布置以及任何合适的物理布置中的相关联的逻辑,因此封装仅仅是存储器设备122可以采取的一个示例形式。例如,尽管单个物理封装可以包括单个存储器设备122,但是多个存储器设备122可以驻留在单个封装上,或者存储器设备122可以散布在多个封装上。
存储器116可以体现在一个或多个不同的物理介质中,例如,电路板、管芯、磁盘驱动器、其他介质、或其任何组合(或与一个或多个封装的组合)。在特定的实施例中,存储器116包括耦合到多个存储器设备122的电路板,存储器设备122各自包括半导体封装。
在各种实施例中,存储设备110可以包括上面关于高速缓冲存储设备106所描述的任何合适的特性。在一些实施例中,存储设备110可以包括磁盘驱动程序,该磁盘驱动程序比高速缓冲存储设备106存储更多的数据,但是访问速度更慢。
高速缓冲存储设备106、系统存储器设备107和存储设备110可以包括任何合适的类型的存储器,并且在各种实施例中不限于特定的速度、技术或存储器的形状因子。例如,高速缓冲存储设备106可以是磁盘驱动器(例如,固态驱动器)、闪存驱动器、与计算设备集成的存储器(例如,集成在计算设备的电路板上的存储器)、可以被插入在存储器插槽中的存储器模块(例如,双列直插式存储器模块)或者其他类型的存储设备。类似地,系统存储器107或存储设备110可以具有任何合适的形状因子。此外,计算机系统100可以包括多种不同的类型的存储设备。
系统存储器设备107、高速缓冲存储设备106、或者存储设备110可以包括任何合适的接口,以使用以下任何合适的通信协议来与存储器控制器111或I/O控制器109进行通信:例如,基于DDR的协议、PCI、PCIe、USB、SAS、SATA、FC、系统管理总线(SMBus)或其他合适的协议。在一些实施例中,系统存储器设备107、高速缓冲存储设备106、或者存储设备110可以包括通信接口,以根据以下任何合适的逻辑设备接口规范与存储器控制器111或I/O控制器109进行通信:例如,NVMe、AHCI或其他合适的规范。在特定的实施例中,系统存储器设备107、高速缓冲存储设备106或存储设备110可以包括多个通信接口,通信接口各自使用单独的协议来与存储器控制器111和/或I/O控制器109进行通信。
存储设备控制器118可以包括用于从CPU 102(例如,经由与存储器控制器111或I/O控制器109通信的接口)接收请求的逻辑,使得请求关于存储器116(或者其存储器设备和/或存储器芯片)被执行,并且将与请求相关联的数据提供给CPU 102(例如,经由存储器控制器111或I/O控制器109)。存储设备控制器118还可以可操作用于检测和/或纠正在存储器操作期间遇到的错误。在实施例中,控制器118还跟踪特定的单元(或单元的逻辑分组)已经被写入的次数,以便执行损耗均衡和/或检测单元何时接近它们可以被可靠地写入的经估计的次数。在执行损耗均衡时,存储设备控制器118可以在存储器116的存储器的块之间均匀地分散写入操作,使得特定的块不比其他块更多地被写入。在各种实施例中,控制器118还可以监视高速缓冲存储设备106的各种特性(例如,温度或电压),并且将相关联的统计信息报告给CPU 102。存储设备控制器118可以实现在与存储器116相同的电路板或设备上,或者实现在不同的电路板或设备上。例如,在一些环境中,存储设备控制器118可以是集中式存储控制器,其管理计算机系统100的多个不同的存储器116(其各自可以是相同类型的存储器或者可以是不同类型的存储器)的存储器操作(并且因此可以将本文所描述的存储设备控制器功能提供给其耦合到的任何存储器)。
在各种实施例中,高速缓冲存储设备106还包括地址转换引擎120。在所描绘的实施例中,地址转换引擎120被示出为存储设备控制器118的一部分,尽管在各种实施例中,地址转换引擎120可以与存储设备控制器118分开并且可通信地耦合到存储设备控制器118。在各种实施例中,地址转换引擎120可以集成在与存储设备控制器118相同的芯片或封装上,或者集成在不同的芯片或封装上。
在各种实施例中,地址转换引擎120可以包括用于存储和更新以下两项之间的映射的逻辑:逻辑地址空间(例如,对耦合到高速缓冲存储设备106的主机计算设备可见的地址空间)和高速缓冲存储设备106的存储器116的物理地址空间(其可以或可以不被暴露给主机计算设备)。逻辑地址空间可以暴露多个逻辑数据组,所述逻辑数据组被物理地存储在通过高速缓冲存储设备106的物理地址空间可寻址的存储器的对应的物理组上。物理地址空间的物理地址可以包括标识高速缓冲存储设备106的物理存储器位置(例如,存储器116的存储器阵列内的位置)的任何合适的信息,例如,物理存储器位置位于其上的存储器116的标识符,物理存储器位置位于其上的存储器设备122A的标识符,物理存储器位置的一页或多页,物理存储器位置的一个或多个子块,物理存储器位置的一个或多个字线,物理存储器位置的一个或多个位线,或其他合适的标识符或其编码。
在各种实施例中,高速缓冲存储设备106还包括程序控制逻辑124,单独地或与存储器设备122的控制器126组合的程序控制逻辑124可操作用于控制:当数据被写入存储器116时执行的编程序列、当从存储器116读取数据时执行的读取序列、或者当从存储器116中擦除数据时执行的擦除序列。在各种实施例中,程序控制逻辑124可以提供在对数据进行编程、读取和/或擦除期间应用于存储器阵列的一个或多个存储器单元、字线、位线和/或其他部分的各种电压(或者指示应当提供哪些电压的信息),执行纠错,并且执行其他合适的功能。
在各种实施例中,程序控制逻辑124可以被集成在与存储设备控制器118相同的芯片上或不同的芯片上。在所描绘的实施例中,程序控制逻辑124被示出为存储设备控制器118的一部分,尽管在各种实施例中,程序控制逻辑124的全部或一部分可以与存储设备控制器118分开并且可通信地耦合到存储设备控制器118。例如,程序控制逻辑124的全部或一部分可以位于与存储器116和/或存储器设备122A-D相同的封装或芯片上。
存储设备控制器118还包括重定位管理器125,该重定位管理器125可以包括用于控制与存储器116内的数据的重定位相关联的操作的逻辑。例如,重定位管理器125可以确定重定位操作要被执行,生成要被重定位的数据块的列表,并且与程序控制逻辑124接合以根据从CPU 102接收到的指令来重定位数据。在一些实施例中,重定位管理器125可以与程序控制逻辑和/或地址转换引擎120集成在一起。
存储设备控制器118还包括传输缓冲器127,传输缓冲器127包括任何合适的易失性或非易失性存储器,所述存储器用于临时地存储从存储器116读取的数据(例如,在重定位操作期间)。
在一些实施例中,系统100的元件中的全部或一些驻留在(或耦合到)相同的电路板(例如,母板)上。在各种实施例中,元件之间的任何合适的分区可能存在。例如,CPU 102中描绘的元件可以位于单个管芯上(即,片上)或封装上,或者CPU 102的元件中的任一个可以位于芯片外或封装外。类似地,高速缓冲存储设备106中描绘的元件可以位于单个芯片上或多个芯片上。在各种实施例中,高速缓冲存储设备106和主机计算设备(例如,CPU 102)可以位于相同的电路板上或者相同的设备上,并且在其他实施例中,高速缓冲存储设备106和主机计算设备可以位于不同的电路板或设备上。
系统100的组件可以以任何合适的方式耦合在一起。例如,总线可以将组件中的任一个耦合在一起。总线可以包括任何合适的互连(例如,多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线或射击收发器逻辑(GTL)总线)。在各种实施例中,集成的I/O子系统包括系统100的各个组件之间的点对点复用逻辑(例如,核心114、一个或多个存储器控制器111、I/O控制器109、集成的I/O设备、直接存储器访问(DMA)逻辑(未示出)等)。在各种实施例中,计算机系统100的组件可以通过一个或多个网络耦合在一起,该一个或多个网络包括任何数量的中间网络节点(例如,路由器、交换机或其他计算设备)。例如,主机计算设备(例如,CPU 102)和高速缓冲存储设备106可以通过网络可通信地耦合。
尽管未被描绘,但是系统100可以使用电池和/或电源插座连接器以及相关联的系统来接收电力,使用显示器来输出由CPU 102提供的数据,或者使用允许CPU 102的网络接口来通过网络进行通信。在各种实施例中,电池、电源插座连接器、显示器和/或网络接口可以被通信地耦合到CPU 102。可以使用其他电力源(例如,可再生能源(例如,太阳能或基于运动的电力))。
图3示出了根据某些实施例的计算机系统300的框图,在计算机系统300中,重定位信息通过存储设备306被传送到主机(例如,CPU 302)。在此实施例中,存储设备306被用作后备存储,并且系统存储器307被用作高速缓存。一般而言,系统300的组件可以具有系统100的对应的组件的任何合适的特性。
在此实施例中,代替缓存控制器(例如,112),文件系统312包括缓存逻辑326,缓存逻辑326用于实现本文所描述的缓存功能和重定位指令。在各种实施例中,缓存逻辑326(或其子集)可以与文件系统312集成在一起,被包括在由CPU 302执行的驱动程序中,或者以其他方式被包括在由处理器308执行的操作系统中。类似于高速缓存控制器112,缓存逻辑326可以利用控制器(例如,I/O控制器310)来与存储设备306和系统存储器307进行通信。
在所描绘的实施例中,由缓存逻辑326使用的存储桶与在将存储设备306用作高速缓冲存储设备时使用的存储桶不同。尽管仍然使用trim_bucket 328和relo_bucket 332,但是其他两个存储桶已经被relo_cache_bucket 334代替。在所描绘的实施例中,这些存储桶被存储在系统存储器307中,尽管在其他实施例中,存储桶还可以被存储在系统300的任何合适的存储器中(例如,CPU 302的高速缓存、专用于存储桶的存储位置、或其他合适的存储器位置)。
图4示出了根据某些实施例的用于将重定位信息从存储设备306传送到主机(例如,CPU 302)的缓存逻辑326的示例流程400。与流程200的操作类似的操作可以具有上面描述的这样的操作的任何合适的特性。
在402处,当文件系统312的缓存逻辑326向存储设备306注册以从存储设备306接收重定位信息时,该流程开始。注册请求可以采用任何合适的格式。在一个实施例中,其中,存储设备306实现了NVMe接口,注册请求可以包括如前所描述的异步事件请求命令。
在404处,生成了重定位带中的有效块的列表。此列表可以响应于存储设备306内的数据的重定位的触发而生成(例如,作为重组操作的一部分)。该列表包括在重定位期间要被移动的块的标识。
当存储设备306触发了块的重定位时,其通知缓存逻辑326,并且然后推迟重定位,直到它从缓存逻辑326接收到包括针对块的指令的响应。在一些实施例中,如果在超时时段内未从主机接收到响应,则存储设备306继续重定位块。
在406处,与数据的重定位相关联的事件通知从存储设备306被发送到缓存逻辑326。在一些实施例中,事件通知可以指示重定位块的列表是可用的。作为示例,当使用NVMe接口时,存储设备306的控制器318在存在异步事件(在这种情况下,已经生成了重定位块的列表)要报告给主机时可以将完成队列条目发布到管理完成队列。
在408处,缓存逻辑326从存储设备306请求重定位块列表。在一个示例中,当使用NVMe接口时,此请求可以包括针对特定于供应商的日志页面的获取日志页面命令,该特定于供应商的日志页面包括重定位块的列表。在其他实施例中,该请求可以采用任何合适的格式。在409处,重定位块列表被提供给缓存逻辑326。在一些实施例中,事件通知406可以可替代地包括重定位块的列表(与异步事件已经发生的通知相反),使得缓存逻辑326不需要随后请求这些块。在注册之后,每次存储设备306触发重定位时,缓存逻辑326可以从存储设备306接收重定位块列表。
在410处,缓存逻辑326处理重定位块列表。在特定的实施例中,缓存逻辑326可以将要被重定位的每个块指派给一组存储桶中的一个(例如,通过将标签指派给每个块或者以其他方式将被指派的存储桶与块相关联)。
在图3的所描绘的实施例中,缓存逻辑326将块指派给三个存储桶:trim_bucket328、relo_bucket 332和relo_cache_bucket 334。在一个实施例中,在410处的块的处理期间,每个块被指派给这些存储桶中的一个。
如果块已经在文件系统312中被删除,但是尚未在存储设备306上被修整(例如,CPU 302尚未将块已经经由修正或其他命令被删除通知存储设备306),然后该块被指派给trim_bucket 328,以用于从存储设备306中删除。
如果该块将在不久的将来由CPU 302利用,则该块被指派给relo_cache_bucket334,以利用重定位读取操作以便将该块缓存在系统存储器307中。例如,可以基于CPU 302的预提取策略来确定该块是否将在不久的将来由CPU 302利用。例如,CPU 302(例如,经由缓存逻辑326)可以维护在预期由CPU 302使用这样的块之前(在块由CPU 302明确请求之前)将被预提取的块的列表。如果正在被处理的块出现在此列表上(或者出于其他原因被确定为指定用于预提取),则将其置于relo_cache_bucket 334中。
如果未将块置于trim_bucket 328或relo_cache_bucket 334中,则将该块置于relo_bucket 332中。
在处理存储桶之后,缓存逻辑326用关于由存储设备306标记为重定位的块的指令来命令存储设备306。例如,在412处,请求被发送到存储设备306以修整trim_bucket 328中的块。如前所描述的,修整命令向存储设备306指示不需要块,并且因此可以将其从重定位中排除。
在414处,用于在relo_cache_bucket 334中缓存和重定位块的请求被发送到存储设备306。此请求命令存储设备306在relo_cache_bucket 134中重定位块,并且将对应于这些块的读取数据保留在存储设备306的传输缓冲器327中,使得它们可以被CPU 302读取,而不必从它们的重定位的位置读取它们(例如,如以上关于流程200所描述的)。
在416处,针对重定位relo_bucket 332中的块的请求被发送到存储设备306。
在针对各种存储桶中的块提供指令之后(或与此同时),缓存逻辑326然后命令存储设备306它可以开始剩余的有效块(例如,由于不需要重定位而未被缓存逻辑326指定的块)上的块重定位。
当存储设备306重定位这些块时,它可以遍历这些块以检查正在被重定位的数据块是否在relo_cache_bucket 334中。如果特定的块在此存储桶中,则在重定位过程期间将其缓存在存储设备306的传输缓冲器327中。如果传输缓冲器327已满,则在422处将这样的传输缓冲器327的通知发送到缓存逻辑326。如果传输缓冲器尚未满,则循环继续,并且当遇到被指派给relo_cache_bucket 334的附加的块时,此块还可以被读取到传输缓冲器中,依此类推,直到传输缓冲器已满。一旦将传输缓冲器327已满通知缓存逻辑326,则在424处缓存逻辑326读取缓冲器中的块,并且然后在426处将读取块缓存在系统存储器307中。如果缓冲器未满,但是重定位操作已经完成,则存储设备306可以将这种情况通知缓存逻辑326,并且缓存逻辑326可以读取传输缓冲器327中的任何剩余的块,并且将这些块缓存到系统存储器307。
图4中描述的流程仅仅表示在特定的实施例中可能发生的操作。可以以任何合适的顺序执行操作,而不脱离特定的实施例的范围。在其他实施例中,可以在流程中执行附加的操作。在适当的情况下,图4中示出的操作中的一些可以被重复、组合、修改或删除。例如,可以将412、414、416和418中的任一个或多个组合在从缓存逻辑326发送到存储设备306的单个命令内(该命令在一个实施例中可以是特定于NVMe供应商的命令)。作为另一示例,412可以是标准修整命令,并且另一命令可以组合414、416和418的信息(例如,在特定于NVMe供应商的命令中)。在其他实施例中,来自缓存逻辑326的单个命令可以标识将不被重定位的块(并且因此应当从块重定位列表中被移除),或者该命令可以标识将被重定位的块。在一些实施例中,相同的命令(或不同的命令)可以指定在重定位操作期间要缓存哪些块。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中是有用的,可以使用硬件描述语言(HDL)或另一种功能描述语言来表示硬件。另外地,可以在设计过程的一些阶段处产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中的各种设备的物理布置的数据级别。在使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模的不同的掩模层上存在或不存在各种特征的数据。在一些实施方式中,这种数据可以以数据库文件格式(例如,图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)或类似的格式)存储。
在一些实施方式中,除了其他示例外,基于软件的硬件模型、HDL和其他功能描述语言对象可以包括寄存器传输语言(RTL)文件。这样的对象可以是一成不变的,使得设计工具可以接受HDL对象(或模型),解析HDL对象以获得所描述的硬件的属性,并且根据该对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以根据HDL对象确定各种硬件和/或固件元件的配置(例如,总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及其他可以被实现的属性)以便实现在HDL对象中建模的系统。设计工具可以包括用于确定片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些实例中,HDL对象可以用作用于开发模型和设计文件的基础,该模型和设计文件可以由制造装备用于制造所描述的硬件。实际上,可以提供HDL对象本身作为制造系统软件的输入,以造成所描述的硬件。
在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或诸如磁盘之类的磁性或光学存储装置可以是机器可读介质,其用于存储经由调制的或以其他方式生成的以发送这样的信息的光波或电波发送的信息。当指示或携带代码或设计的电载波被发送时,在执行电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的诸如编码到载波中的信息之类的制品至少临时地存储在有形的机器可读介质上。
在各种实施例中,可以将存储设计的表示的介质提供给制造系统(例如,能够制造集成电路和/或相关的组件的半导体制造系统)。设计表示可以命令系统制造能够执行上面描述的功能的任何组合的设备。例如,设计表示可以命令系统关于制造哪些组件,组件应当如何被耦合在一起,组件应当被置于设备上的哪个位置,和/或关于要被制造的设备的其他合适的规范。
本文所使用或图中所描绘的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括硬件(例如,微控制器,与用于存储适于由微控制器执行的代码的非暂时介质相关联)。因此,在一个实施例中对模块的引用指代硬件,其被特别配置为识别和/或执行要保存在非暂时性介质上的代码。此外,在另一实施例中,模块的使用指代包括代码的非暂时性介质,该代码特别适于由微控制器执行以执行预定的操作。并且,如可以被推断的,在又一实施例中,术语模块(在此示例中)可以指代微控制器和非暂时性介质的组合。经常,被示出为单独的模块界限通常变化并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件(例如,晶体管、寄存器或诸如可编程逻辑器件之类的其他硬件)。
逻辑可以用于实现所描述的流程中的任一个或者各种组件的功能,组件例如是:CPU 102和302,处理器108和308,核心114A、114B、314A、314B,I/O控制器109和310,存储器控制器111和311,高速缓冲存储设备106,存储设备110和306,系统存储器设备107和307,高速缓存控制器112,文件系统115和312,应用113,高速缓存逻辑326,存储桶128、130、132、134、328、332、334,存储器116和316,存储器设备122和322,存储器芯片123,控制器126,存储设备控制器118和318,地址转换引擎120和320,程序控制逻辑124和324,重定位管理器125和325,传输缓冲器127和327,其子组件,或本文所描述的其他实体或组件。“逻辑”可以指代用于执行一个或多个功能的硬件、固件、软件和/或每种的组合。在各种实施例中,逻辑可以包括可操作用于执行软件指令的微处理器或其他处理元件、诸如专用集成电路(ASIC)之类的分立逻辑、诸如现场可编程门阵列(FPGA)之类的编程逻辑设备、包含指令的存储设备、逻辑设备的组合(例如,如将在印刷电路板上找到的)、或其他合适的硬件和/或软件。逻辑可以包括一个或多个门或其他电路组件。在一些实施例中,逻辑还可以被完全地体现为软件。软件可以被体现为在非暂时性计算机可读存储介质上记录的软件封装、代码、指令、指令集合和/或数据。固件可以被体现为在存储设备中被硬编码(例如,非易失性)的代码、指令或指令集合和/或数据。
在一个实施例中,短语“用于”或“被配置为”的使用指代布置、放在一起、制造、提供出售、进口和/或设计装置、硬件、逻辑或元件以执行指定的或确定的任务。在此示例中,没有正在操作的装置或其元件仍然“被配置为”执行指定的任务,前提是其被设计、耦合和/或互连以执行所述指定的任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”将使能信号提供给时钟的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,该逻辑门是以某种方式耦合的逻辑门,在操作期间,1或0输出用于启用时钟。再次注意到,术语“被配置为”的使用不要求操作,而是关注于装置、硬件和/或元件的潜在状态,其中,在潜在状态下,装置、硬件和/或元件被设计为当装置、硬件和/或元件正在操作时执行特定的任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作用于”的使用指代以这种方式设计用于实现以指定的方式使用装置、逻辑、硬件和/或元件的一些装置、逻辑、硬件和/或元件。如上所述,在一个实施例中,用于、能够或可操作用于的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中,装置、逻辑、硬件和/或元件没有正在操作,但是以这种方式被设计为实现以指定的方式使用装置。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知的表示。经常,逻辑电平、逻辑值或合逻辑的值的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1指代高逻辑电平,而0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数十也可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分表示。作为示例,诸如逻辑一之类的第一值可以表示默认或初始状态,而诸如逻辑零之类的第二值可以表示非默认值。另外,在一个实施例中,术语重置和设置分别指代默认值或默认状态以及更新值或更新状态。例如,默认值潜在地包括高逻辑值(即,重置),而更新的值潜在地包括低逻辑值(即,设置)。注意,值的任何组合可以用于表示任何数量的状态。
以上所阐述的方法、硬件、软件、固件或代码的实施例可以经由指令或代码来实现,指令或代码存储在机器可访问、机器可读、计算机可访问或计算机可读的介质上,其可由处理元件执行。机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读取的形式的信息的任何机制。例如,机器可访问介质包括随机存取存储器(RAM)(例如,静态RAM(SRAM)或动态RAM(DRAM));ROM;磁性或光学存储介质;闪速存储设备;电存储设备;光学存储设备;声存储设备;用于保存从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备等,以上介质用于区别于可以从其接收信息的非暂时性介质。
用于对逻辑进行编程以执行本公开的实施例的指令可以被存储在系统中的存储器内(例如,DRAM、高速缓存、闪速存储器或其他存储装置)。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但是不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传送信息中使用的有形的机器可读存储装置。因此,计算机可读介质包括适合于存储或发送由机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿此说明书引用“一个实施例”或“实施例”意指结合该实施例描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿本说明书各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,特定的特征、结构或特性可以以任何合适的方式结合在一个或多个实施例中。
在前述说明书中,已经参考特定示例性的实施例给出了具体实施方式。然而,将显而易见的是,可以对其进行各种修改和改变,而不偏离如所附权利要求书中阐述的本公开的更广泛的精神和范围。说明书和附图因此应当被视为说明性的意义而非限制性的意义。此外,对实施例和其他示例性语言的前述使用不一定指代相同的实施例或相同的示例,但是可以指代不同和独特的实施例以及潜在相同的实施例。
示例1可以包括一种装置,其包括:控制器,其包括:接口,其包括用于与主机计算设备进行通信的电路;以及包括电路的重定位管理器,该重定位管理器用于:为主机计算设备提供要在非易失性存储器内重定位的多个数据块的标识;以及响应于要被重定位的多个数据块的标识,根据由主机计算设备提供的指令来重定位多个数据块的至少子集。
示例2包括示例1的主题,其中,由主机计算设备提供的指令包括不需要被重定位的数据块的标识。
示例3包括示例1-2中的任一个的主题,其中,由主机计算设备提供的指令包括这样的数据块的标识,其要被缓存在传输缓冲器中,以用于在非易失性存储器内重定位数据块期间从非易失性存储器读取数据块时,由主机计算设备取回。
示例4包括示例1-3中的任一个的主题,其中,由主机计算设备提供的指令包括要在非易失性存储器内重定位的数据块的标识。
示例5包括示例1-4中的任一个的主题,其中,由主机计算设备提供的指令包括要被传送到主机计算设备并在非易失性存储器内被重定位的数据块的标识。
示例6包括示例1-5中的任一个的主题,其中,重定位管理器用于:响应于确定对非易失性存储器的一部分执行重组操作,而提供多个数据块的标识。
示例7包括示例1-6中的任一个的主题,其中,重定位管理器用于:在从主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的多个数据块的标识。
示例8包括示例7的主题,其中,针对重定位事件的注册请求是非易失性存储器快速(NVMe)异步事件请求命令。
示例9包括示例1-8中的任一个的主题,进一步包括非易失性存储器。
示例10包括示例1-9中的任一个的主题,进一步包括主机计算设备,其中,主机计算设备包括中央处理单元(CPU)。
示例11包括示例1-10中的任一个的主题,进一步包括:通信地耦合到CPU的处理器的电池、通信地耦合到处理器的显示器、或者通信地耦合到处理器的网络接口。
示例12包括一种方法,其包括:由存储设备确定重定位多个数据块;由存储设备向主机计算设备提供要被重定位的多个数据块的标识;以及响应于要被重定位的多个数据块的标识,由存储设备根据由主机计算设备提供的指令来重定位多个数据块的至少子集。
示例13包括示例12的主题,其中,由主机计算设备提供的指令包括不需要被重定位的数据块的标识。
示例14包括示例12-13中的任一个的主题,其中,由主机计算设备提供的指令包括这样的数据块的标识:其要被缓存在传输缓冲器中,以用于在块的重定位期间从非易失性存储器读取数据块时,由主机计算设备取回。
示例15包括示例12-14中的任一个的主题,其中,由主机计算设备提供的指令包括要被重定位的数据块的标识。
示例16包括示例12-15中的任一个的主题,其中,由主机计算设备提供的指令包括要被传送到主机计算设备并被重定位的数据块的标识。
示例17包括示例12-16中的任一个的主题,进一步包括:响应于确定对非易失性存储器的一部分执行重组操作而提供多个数据块的标识。
示例18包括示例12-17中的任一个的主题,进一步包括:在从主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的多个数据块的标识。
示例19包括示例18的主题,其中,针对重定位事件的注册请求是非易失性存储器快速(NVMe)异步事件请求命令。
示例20包括一种系统,其包括:用于通过存储设备向主机计算设备提供要在存储设备上重定位的多个数据块的标识的单元;以及用于以下操作的单元:响应于要被重定位的多个数据块的标识,由存储设备根据由主机计算设备提供的指令来重定位多个数据块的至少子集。
示例21包括示例20的主题,其中,由主机计算设备提供的指令包括不需要被重定位的数据块的标识。
示例22包括示例20-21中的任一个的主题,其中,由主机计算设备提供的指令包括这样的数据块的标识:其要被缓存在传输缓冲器中,以用于在块的重定位期间从非易失性存储器读取数据块时,由主机计算设备取回。
示例23包括示例20-22中的任一个的主题,其中,由主机计算设备提供的指令包括要被重定位的数据块的标识。
示例24包括示例20-23中的任一个的主题,其中,由主机计算设备提供的指令包括要被传送到主机计算设备并被重定位的数据块的标识。
示例25包括示例20-24中的任一个的主题,进一步包括:响应于确定对非易失性存储器的一部分执行重组操作而提供多个数据块的标识。
示例26包括示例20-25中的任一个的主题,进一步包括:在从主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的多个数据块的标识。
示例27包括示例26的主题,其中,针对重定位事件的注册请求是非易失性存储器快速(NVMe)异步事件请求命令。
示例28包括一种或多种其上存储有代码的非暂时性计算机可读介质,其中,该代码是可执行的以使得机器用于:向主机计算设备提供要在存储设备上重定位的多个数据块的标识;以及响应于要被重定位的多个数据块的标识,根据由主机计算设备提供的指令来在存储设备上重定位多个数据块的至少子集。
示例29包括示例28的主题,其中,由主机计算设备提供的指令包括不需要被重定位的数据块的标识。
示例30包括示例28-29中的任一个的主题,其中,由主机计算设备提供的指令包括这样的数据块的标识:其应当被缓存在传输缓冲器中,以用于在块的重定位期间从非易失性存储器读取数据块时,由主机计算设备取回。
示例31包括示例28-30中的任一个的主题,其中,由主机计算设备提供的指令包括应当被重定位的数据块的标识。
示例32包括示例28-31中的任一个的主题,其中,由主机计算设备提供的指令包括要被传送到主机计算设备并被重定位的数据块的标识。
示例33包括示例28-32中的任一个的主题,进一步包括:响应于确定对非易失性存储器的一部分执行重组操作而提供多个数据块的标识。
示例34包括示例28-33中的任一个的主题,进一步包括:在从主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的多个数据块的标识。
示例35包括示例34的主题,其中,针对重定位事件的注册请求是非易失性存储器快速(NVMe)异步事件请求命令。

Claims (21)

1.一种装置,包括:
控制器,其包括:
接口,其包括用于与主机计算设备进行通信的电路;以及
重定位管理器,其包括电路,所述重定位管理器用于:
为所述主机计算设备提供要在非易失性存储器内重定位的多个数据块的标识;以及
响应于要被重定位的所述多个数据块的所述标识,根据由所述主机计算设备提供的指令来重定位所述多个数据块的至少子集。
2.根据权利要求1所述的装置,其中,由所述主机计算设备提供的所述指令包括不需要被重定位的数据块的标识。
3.根据权利要求1所述的装置,其中,由所述主机计算设备提供的所述指令包括这样的数据块的标识:其要被缓存在传输缓冲器中,以用于在所述非易失性存储器内重定位所述数据块期间从所述非易失性存储器读取所述数据块时,由所述主机计算设备取回。
4.根据权利要求1所述的装置,其中,由所述主机计算设备提供的所述指令包括要在所述非易失性存储器内重定位的数据块的标识。
5.根据权利要求1所述的装置,其中,由所述主机计算设备提供的所述指令包括要被传送到所述主机计算设备并在所述非易失性存储器内被重定位的数据块的标识。
6.根据权利要求1所述的装置,其中,所述重定位管理器用于:响应于确定对所述非易失性存储器的一部分执行重组操作,而提供所述多个数据块的所述标识。
7.根据权利要求1所述的装置,其中,所述重定位管理器用于:在从所述主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的所述多个数据块的所述标识。
8.根据权利要求7所述的装置,其中,针对重定位事件的所述注册请求是非易失性存储器快速(NVMe)异步事件请求命令。
9.根据权利要求1所述的装置,进一步包括所述非易失性存储器。
10.根据权利要求9所述的装置,进一步包括所述主机计算设备,其中,所述主机计算设备包括中央处理单元(CPU)。
11.根据权利要求10所述的装置,进一步包括:通信地耦合到所述CPU的处理器的电池、通信地耦合到所述处理器的显示器、或者通信地耦合到所述处理器的网络接口。
12.一种方法,包括:
由存储设备确定重定位多个数据块;
由所述存储设备向主机计算设备提供要被重定位的所述多个数据块的标识;以及
响应于要被重定位的所述多个数据块的所述标识,由所述存储设备根据由所述主机计算设备提供的指令来重定位所述多个数据块的至少子集。
13.根据权利要求12所述的方法,其中,由所述主机计算设备提供的所述指令包括不需要被重定位的数据块的标识。
14.根据权利要求12所述的方法,其中,由所述主机计算设备提供的所述指令包括这样的数据块的标识:其要被缓存在传输缓冲器中,以用于在所述数据块的重定位期间从非易失性存储器读取所述数据块时,由所述主机计算设备取回。
15.根据权利要求12所述的方法,其中,由所述主机计算设备提供的所述指令包括要被重定位的数据块的标识。
16.根据权利要求12所述的方法,其中,由所述主机计算设备提供的所述指令包括要被传送到所述主机计算设备并被重定位的数据块的标识。
17.根据权利要求12所述的方法,进一步包括:响应于确定对所述非易失性存储器的一部分执行重组操作而提供所述多个数据块的所述标识。
18.根据权利要求12所述的方法,进一步包括:在从所述主机计算设备接收到针对重定位事件的注册请求之后,提供要被重定位的所述多个数据块的所述标识。
19.根据权利要求18所述的方法,其中,针对重定位事件的所述注册请求是非易失性存储器快速(NVMe)异步事件请求命令。
20.一种系统,包括用于执行根据权利要求12-19中的任一项所述的方法的单元。
21.根据权利要求20所述的系统,其中,所述单元包括机器可读代码,所述机器可读代码当被执行时,使得机器执行根据权利要求12-19中的任一项所述的方法的一个或多个步骤。
CN202011543164.0A 2020-06-16 2020-12-24 由存储设备向主机传送数据重定位信息以提高系统性能 Pending CN113805791A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/903,329 US20200319815A1 (en) 2020-06-16 2020-06-16 Communication of data relocation information by storage device to host to improve system performance
US16/903,329 2020-06-16

Publications (1)

Publication Number Publication Date
CN113805791A true CN113805791A (zh) 2021-12-17

Family

ID=72662311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011543164.0A Pending CN113805791A (zh) 2020-06-16 2020-12-24 由存储设备向主机传送数据重定位信息以提高系统性能

Country Status (3)

Country Link
US (1) US20200319815A1 (zh)
EP (1) EP3926451B1 (zh)
CN (1) CN113805791A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907573B2 (en) * 2021-06-21 2024-02-20 Western Digital Technologies, Inc. Performing background operations during host read in solid state memory device
US11842059B2 (en) * 2021-09-01 2023-12-12 Micron Technology, Inc. Memory sub-system address mapping
US20230137938A1 (en) * 2021-10-28 2023-05-04 Silicon Motion, Inc. Method and apparatus for performing data access control of memory device with aid of predetermined command
US11809327B2 (en) * 2021-11-16 2023-11-07 Western Digital Technologies, Inc. Data auto-relocation in an integrated memory assembly

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721059B2 (en) * 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US7917686B2 (en) * 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8819375B1 (en) * 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9201799B2 (en) * 2013-06-03 2015-12-01 Samsung Electronics Co., Ltd. Method for disk defrag handling in solid state drive caching environment
US10176212B1 (en) * 2014-10-15 2019-01-08 Seagate Technology Llc Top level tier management
US10552340B2 (en) * 2017-02-28 2020-02-04 Oracle International Corporation Input/output direct memory access during live memory relocation
US10254979B1 (en) * 2017-09-28 2019-04-09 Intel Corporation Relocating or aborting a block of data by a host, based on media policies managed by a storage device
US11354058B2 (en) * 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system

Also Published As

Publication number Publication date
US20200319815A1 (en) 2020-10-08
EP3926451B1 (en) 2024-03-13
EP3926451A1 (en) 2021-12-22

Similar Documents

Publication Publication Date Title
Seong et al. Hydra: A block-mapped parallel flash memory solid-state disk architecture
Kim et al. Flashsim: A simulator for nand flash-based solid-state drives
EP3382557B1 (en) Method and apparatus for persistently caching storage data in a page cache
US10402338B2 (en) Method and apparatus for erase block granularity eviction in host based caching
EP3926451B1 (en) Communication of data relocation information by storage device to host to improve system performance
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
US20170344430A1 (en) Method and apparatus for data checkpointing and restoration in a storage device
US20100287217A1 (en) Host control of background garbage collection in a data storage device
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
US9727267B1 (en) Power management and monitoring for storage devices
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US11157402B2 (en) Apparatus and method for managing valid data in memory system
US20200042181A1 (en) Apparatus and method for searching valid data in memory system
US20190304543A1 (en) Method and apparatus for dynamically determining start program voltages for a memory device
CN109643574B (zh) 用于在完成数据加载操作之前启动预读取操作的方法和设备
US10725933B2 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
US10095432B2 (en) Power management and monitoring for storage devices
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10942848B2 (en) Apparatus and method for checking valid data in memory system
US10331385B2 (en) Cooperative write-back cache flushing for storage devices
US10698621B2 (en) Block reuse for memory operations
US11893269B2 (en) Apparatus and method for improving read performance in a system
US11068175B2 (en) Technology to manage capacity loss in storage drives
Firmware et al. A Beginner’s Guide to SSD Firmware

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