CN111684431A - 数据存储装置空闲时间处理 - Google Patents

数据存储装置空闲时间处理 Download PDF

Info

Publication number
CN111684431A
CN111684431A CN201980011742.5A CN201980011742A CN111684431A CN 111684431 A CN111684431 A CN 111684431A CN 201980011742 A CN201980011742 A CN 201980011742A CN 111684431 A CN111684431 A CN 111684431A
Authority
CN
China
Prior art keywords
storage device
host
module
queue
controller
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
CN201980011742.5A
Other languages
English (en)
Inventor
A·弗罗利科夫
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN111684431A publication Critical patent/CN111684431A/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种计算机系统,其具有经由外围组件互连高速总线耦合到存储装置的主机。所述主机根据非易失性存储器主机控制器接口规范与所述存储装置通信。所述主机提供定制模块,所述定制模块含有用于执行定制命令的操作的指令。所述主机向所述存储装置发送空闲时间命令,以用于在空闲时间执行。响应于确定所述存储装置处于空闲状态,所述存储装置执行所述空闲时间命令,在此期间,所述存储装置的所述控制器可以使用所述模块。

Description

数据存储装置空闲时间处理
相关申请案
本申请要求于2018年2月9日提交的名称为“数据存储装置空闲时间处理(DataStorage Device Idle Time Processing)”的美国专利申请序列号15/893,249的申请日的权益,其全部公开内容在此通过引用并入本文。
技术领域
本文公开的至少一些实施例总体上涉及计算机存储装置,并且更具体地但不限于涉及固态驱动器(SSD)。
背景技术
典型的计算机存储装置(诸如硬盘驱动器(HDD)、固态驱动器(SSD)和混合驱动器)具有控制器,其接收来自主机的数据存取请求,并且执行编程的计算任务,以通过特定于配置在存储装置中的介质和结构(诸如硬盘驱动器中涂覆有磁性材料的刚性旋转盘、固态驱动器中具有存储单元的集成电路、以及混合驱动器中的二者)的方式来实施请求。
标准化逻辑装置接口协议允许主机以独立于存储装置的特定介质实施的方式寻址计算机存储装置。
例如,非易失性存储器主机控制器接口规范(NVMHCI)(也称为NVMExpress(NVMe))指定用于经由外围组件互连高速(PCI Express或PCIe)总线访问非易失性存储装置的逻辑装置接口协议。
附图说明
在附图的诸图中,通过实例而非限制的方式展示了实施例,在附图中,相同的附图标记指示类似的元件。
图1示出了根据本文公开的一些实施例的计算机系统,其经配置以在存储装置中执行空闲时间处理。
图2示出了执行空闲时间处理的方法。
图3示出了执行空闲时间处理的另一方法。
具体实施方式
存储装置(诸如固态驱动器(SSD))具有控制器,其通常经由固件进行编程,以执行访问存储装置中的存储介质所需的计算,诸如将主机用来指定数据存取位置的逻辑地址转换成存储装置中的存储元件的物理地址。
在本文公开的至少一个实施例中,存储装置可定制以将其控制器的计算能力作为计算资源提供给其主机,并且当存储装置至少部分地处于空闲状态时提供计算服务。
例如,可以将经配置以用于由存储装置的控制器执行的附加模块加载到存储装置中,以启用来自其主机的定制命令。主机可以向存储装置发送定制命令,以请求存储装置执行由定制命令调用的且使用附加模块编程的计算。存储装置在空闲时间使用存储装置的控制器的计算能力和/或已经存储在存储装置中的数据来执行定制命令。在存储装置报告完成执行定制命令之后,将计算结果存储在存储装置中以供主机检索。因此,存储装置不仅存储用于主机的数据,而且根据由主机指定的指令、程序和/或应用执行可定制的数据处理任务。
图1示出了根据本文公开的一些实施例的计算机系统,其经配置以在存储装置中执行空闲时间处理。
图1的计算机系统包含存储装置103,其附接到主机101。主机101将附加模块133传送到存储装置103,并且使用提交队列111、...、113发送经由附加模块133实施的或由附加模块133编程/定义的请求/命令。存储装置103将定制的请求/命令放置在空闲队列131中以用于在空闲时间执行,并且在空闲时间之前执行其它请求/命令。当存储装置103具有用于执行空闲队列131中的请求/命令的空闲资源时,存储装置103加载附加模块133,运行空闲队列131中的请求/命令,并且向完成队列115、…、或117提供响应,所述完成队列与从其接收请求/命令的提交队列111、…、或113相关联。
附加模块133可以被提供作为固件104的一部分。在固件104的更新期间,附加模块133传送到存储装置103并且存储在非易失性存储介质109中(例如,作为固件104的一部分)。
可替代地或组合地,附加模块133可以被提供作为经由输入/输出请求存储在非易失性存储介质109中的数据。因为在空闲时间期间,从空闲队列131执行使用附加模块133实施的请求/命令,所以允许主机101在提交请求/命令之后提供附加模块133。
固件104可以包含操作系统(例如,经由Linux内核版本或Chromium OS版本来实施)。任选地,包含在固件104中的操作系统是开放源码计算机操作系统,其允许计算机系统的用户或第三方将应用、扩展和/或应用程序(app)开发为附加模块133。
固件104可以包含应用程序编程接口(API),其使用计算机编程语言(诸如脚本语言)来支持应用、扩展和/或应用程序的开发。
在一个实施方案中,存储装置103具有控制器107,其具有多个处理器121、…、123。处理器121、…、123中的一个经配置以运行操作系统来处理定制命令。
例如,处理器121可以运行操作系统并且管理附加模块133,所述操作系统识别空闲队列131中的定制命令并将其排队。当处理器121没有用于标准输入/输出操作的任务(例如,在NVMe标准中的管理命令集和NVM命令集中定义的命令)时,操作系统根据空闲队列131中的请求/命令的需要来加载附加模块133。当在任何提交队列111、…、113中存在等待的其它输入/输出请求/命令时,操作系统可以暂停执行定制命令和/或处理来自空闲队列131的命令,直到处理器121基本上再次空闲。
进一步地,处理器121可以监视其它处理器(例如,123)的工作负荷,并且将来自空闲队列131的请求/命令分派到空闲处理器(例如,123)。
在一些实施方案中,在主机101上将空闲队列实施为要在存储装置103的空闲时间处理的命令的专用提交队列(例如,113)。放置在提交队列(例如,113)中的命令可以不限于使用附加模块133的定制命令。例如,标准读取或写入命令可以放置在提交队列(例如,113)中,以用于在空闲时间执行。
例如,提交队列113配置为用于在存储装置103的空闲时间处理的命令队列。存储装置103的控制器107在处理器121、…、123中的至少一个处于空闲状态之前,不会从提交队列113提取请求/命令。存储装置103的控制器107从其它提交队列(例如,113)提取命令,直到它们为空并且完成执行所提取的命令/请求。进一步地,控制器107可以在进入空闲状态之前执行系统空闲任务,诸如固态驱动器中的空闲时间垃圾收集。
例如,附加模块133可以经编程以使用存储在非易失性存储介质109中的数据来执行机器学习。
例如,附加模块133可以经编程以将过滤器应用于存储在非易失性存储介质109中的数据,以生成经过滤的数据。
例如,附加模块133可以经编程以将存储在非易失性存储介质109中的数据从一种格式转换为另一种格式。
例如,附加模块133可以经编程以索引和/或组织存储在非易失性存储介质109中的数据。
在一些情形中,当多个帐户共享非易失性存储介质109时,计算机系统可以通过创建多个命名空间来提高数据安全性。每个帐户经分配以访问一或多个命名空间,以供所述帐户排它性地使用;并且使用命名空间中定义的逻辑地址来寻址帐户中的数据存取。附加模块(133)的执行限制了从其接收空闲队列(131)中的请求/命令的帐户的相应名称空间内的数据访问。存储装置103将帐户的命名空间中定义的逻辑地址翻译为非易失性存储介质109中的物理地址。
存储装置的物理存储器元件可以布置为经由逻辑块寻址(LBA)寻址的逻辑存储器块。逻辑存储器块是最小的LBA可寻址存储器单元;并且每个LBA地址识别可以映射到存储装置中的存储器单元的特定物理地址的单个逻辑存储块。
存储装置的命名空间的概念类似于硬盘驱动器中用于创建逻辑存储空间的分区的概念。存储装置103的不同部分可以分配给不同的命名空间,并且因此可以在它们各自的命名空间内具有彼此独立地配置的LBA地址。每个命名空间均识别可经由LBA寻址的存储装置的存储器的数量。可以在不同的命名空间中使用相同的LBA地址,以识别存储装置的不同部分中的不同存储器单元。例如,在具有n个存储器单元的存储装置的第一部分上分配的第一命名空间可以具有0至n-1个LBA地址;并且在具有m个存储器单元的存储装置的第二部分上分配的第二命名空间可以具有0至m-1个LBA地址。
存储装置103的主机101可以向存储装置103发送用于创建、删除或保留命名空间的请求。尽管由命名空间中的LBA地址逻辑地表示的特定存储器单元可以物理地对应于不同时刻的不同存储器单元(例如,如在SSD中),但是在存储装置的存储容量的一部分分配给命名空间之后,相应命名空间中的LBA地址逻辑地表示存储介质中的特定存储器单元。
尤其是当期望动态地分配、删除以及进一步在存储装置上分配具有不同大小的多个命名空间时,逐块命名空间映射可以用于高效地实施将多个命名空间中定义的LBA地址映射到存储装置中的物理存储器元件中,并且用于高效地使用存储装置的存储容量。
例如,分配给已删除命名空间的存储容量的部分可能不足以容纳大小大于已删除命名空间的后续命名空间的分配;并且重复的分配和删除周期可能导致存储容量碎片化,从而可能导致LBA地址到物理地址的映射效率低下和/或存储装置的碎片化存储容量的使用效率低下。
在逐块命名空间映射将在所分配的命名空间中定义的LBA地址翻译为在存储装置的整个存储容量上定义的LBA地址之后,在存储装置的整个存储容量上定义的相应LBA地址可以以独立于装置上命名空间的分配的方式被进一步映射到物理存储元件。当LBA地址的逐块映射基于预定大小的块大小时,可以使用有效的数据结构来根据在所分配的命名空间中定义的LBA地址高效地计算在存储装置的整个存储容量上定义的LBA地址。
例如,可以根据预定块大小将存储装置的整个存储容量划分为LBA地址块,以实施命名空间管理的灵活性和效率。块大小表示块中LBA地址的数目。从在所分配的命名空间中定义的LBA地址到在存储装置的整个存储容量上定义的LBA地址的逐块命名空间映射允许将在整个存储器上定义的非邻接LBA地址分配给命名空间,这可以减少由命名空间分配和删除的循环引起的存储容量的碎片化,并且提高存储容量的使用效率。
有关逐块命名空间映射、链接命名空间和帐户以及经由链接命名空间和加密密钥为每个帐户提供安全数据的进一步细节和实例可以在于2018年1月19日提交的名称为“管理从非易失性存储器装置分配给用户的存储资源(Management of Storage ResourcesAllocated from Non-volatile Memory Devices to Users)”的美国专利申请序列号15/876,066中找到,其全部公开内容在此通过引用并入本文。
图1的主机101经由具有预定协议的通信信道与存储装置103通信。通常,主机101可以是具有一或多个中央处理单元(CPU)的计算机,计算机外围装置(诸如存储装置103可以经由互连件(诸如计算机总线(例如,外围组件互连(PCI)、PCI扩展(PCIeXtended(PCI-X))、PCI Express(PCIe))、通信部分、和/或计算机网络)附接到所述中央处理单元。
计算机存储装置103可以用来存储用于主机101的数据。计算机存储装置的实例通常包含硬盘驱动器(HDD)、固态驱动器(SSD)、闪速存储器、动态随机存取存储器、磁带、网络附连存储装置等。存储装置103具有主机接口105,其使用通信信道实施与主机101的通信。例如,在一个实施例中,主机101与存储装置103之间的通信通道是PCIe总线;并且主机101和存储装置103使用NVMe协议彼此通信。
在一些实施方案中,主机101与存储装置103之间的通信信道包含计算机网络,诸如局域网、无线局域网、无线个域网、蜂窝通信网络、高速宽带一直连接的无线通信连接(例如,当前或未来一代的移动网络链路);并且主机101和存储装置103可以经配置以使用类似于NVMe协议中的数据存储管理和使用命令来彼此通信。
存储装置103的控制器107运行固件104以响应于来自主机101的通信而执行操作。固件通常是一类计算机程序,其提供对工程化的计算装置的控制、监视和数据处理。
通常,存储装置109的非易失性存储介质103可以实施为集成电路中的存储器单元、或者涂覆在硬磁盘上的磁性材料。存储介质109是非易失性的,因为不需要电源来维持存储在非易失性存储介质109中的数据/信息,所以在非易失性存储介质109断电然后再次通电之后可以检索所述数据/信息。存储器单元可以使用各种存储器/存储技术(诸如基于与非门(NAND gate)的闪速存储器、相变存储器(PCM)、磁存储器(MRAM)、电阻式随机存取存储器和3D XPoint)来实施,使得存储介质109是非易失性的,并且可以在没有电源的情况下保留其中存储的数据达数天、数月和/或数年。
存储装置103包含易失性动态随机存取存储器(DRAM)106,其用于存储由控制器107使用的运行时数据和指令,以提高控制器107的计算性能和/或为在主机101与非易失性存储介质109之间传输的数据提供缓冲器。DRAM 106是易失性的,因为它需要电源来维持存储在其中的数据/信息,所以当电力中断时,所述数据/信息立即或快速丢失。
易失性DRAM 106通常具有比非易失性存储介质109更小的延迟,但是在断电时快速丢失其数据。因此,有利的是,使用易失性DRAM 106来临时存储在其当前计算任务中用于控制器107的指令和数据以提高性能。在一些情形中,用易失性静态随机存取存储器(SRAM)代替易失性DRAM 106,在一些应用中,易失性静态随机存取存储器比DRAM更省电。当非易失性存储介质109具有与易失性DRAM 106相当的数据存取性能(例如,在延迟、读取/写入速度方面)时,可以消除易失性DRAM 106;并且控制器107可以通过在非易失性存储介质109上对指令和数据进行操作而不是在易失性DRAM 106上进行操作来执行计算。
例如,交叉点存储和存储器装置(例如,3D XPoint存储器)具有与易失性DRAM 106相当的数据存取性能。交叉点存储器装置使用无晶体管存储器元件,其各自具有堆叠在一起作为列的存储器单元和选择器。存储器元件列经由两个垂直的导线层连接,其中一层位于存储器元件列上方,另一层位于存储器元件列下方。可以在两层中的每一层上的一根导线的交叉点处单独地选择每个存储器元件。交叉点存储器装置是快速的和非易失性的,并且可以用作用于处理和存储的统一存储器池。
在一些情形中,控制器107具有处理器内高速缓冲存储器,其数据存取性能优于易失性DRAM 106和/或非易失性存储介质109。因此,优选的是,在控制器107的计算操作期间,在控制器107的处理器内高速缓冲存储器中高速缓存当前计算任务中使用的部分指令和数据。在一些情形中,控制器107具有多个处理器,每个处理器均具有其自己的处理器内高速缓冲存储器。
任选地,控制器107使用组织在存储装置103中的数据和/或附加模块133来执行数据密集型的存储器内处理。例如,响应于来自主机101的请求,控制器107对存储在存储装置103中的一组数据执行实时分析,并且作为响应,将缩减的数据集传送到主机101。例如,在一些应用中,存储装置103连接到实时传感器以存储传感器输入;并且控制器107的处理器经配置以基于传感器输入来执行机器学习和/或模式识别,从而支持至少部分地经由存储装置103和/或主机101实施的人工智能(AI)系统。
在一些实施方案中,在计算机芯片制造中将控制器107的处理器与存储器(例如,106或109)集成在一起,以使处理能够在存储器中进行,并且因此克服了冯诺伊曼瓶颈(vonNeumann bottleneck),其由于在分别地根据冯诺伊曼架构配置的处理器与存储器之间的数据移动中的延迟所导致的吞吐量限制而限制了计算性能。处理和存储器的集成提高了处理速度和存储器传输速率,并且减少了延迟和能耗。
存储装置103可以用于各种计算系统,诸如云计算系统、边缘计算系统、雾计算系统、和/或独立的计算机。在云计算系统中,远程计算机服务器连接在网络中以存储、管理和处理数据。边缘计算系统通过在靠近数据源的计算机网络的边缘处执行数据处理来优化云计算,并且因此减少了与集中式服务器和/或数据存储的数据通信。雾计算系统使用一或多个终端用户装置或接近用户的边缘装置来存储数据,并且因此减少或消除了在集中式数据仓库中存储数据的需要。
本文公开的本发明的至少一些实施例可以使用由控制器107(诸如固件104)执行的计算机指令来实施。在一些情形中,硬件电路可以用于实施固件104的至少一些功能。固件104最初可以存储在非易失性存储介质109或另一非易失性装置中,并且加载到易失性DRAM 106和/或处理器内高速缓冲存储器中,以供控制器107执行。
任选地,存储装置103具有寄存器,其在命名空间和/或帐户中执行的数据存取期间存储命名空间的加密密钥。
在至少一些实施例中,主机101和存储装置103经由消息队列彼此通信。例如,主机101可以使用提交队列来向存储装置103提交请求;并且主机101可以使用完成队列来接收来自存储装置103的响应。例如,NVMe的版本(例如,非易失性存储器主机控制器接口规范1.2)指定将具有固定时隙大小的循环缓冲器用于提交队列或完成队列。
NVMe进一步指定用于处理不同类型的命令的不同类型的消息队列。例如,输入/输出(I/O)命令限于经由I/O提交队列提交;并且管理命令限于经由管理提交队列提交。I/O命令的实例包含从存储装置103读取数据的命令、将数据写入到存储装置103中的命令、比较存储装置103中的数据的命令等。管理命令的实例包含管理命名空间的命令、附接命名空间的命令、创建I/O提交队列或完成队列的命令,删除I/O提交队列或完成队列的命令、用于固件管理的命令等。NVMe允许多个I/O提交队列通过在创建每个I/O提交队列的请求中明确地识别I/O完成队列来共享I/O完成队列。
NVMe要求存储装置103的控制器107根据在提交队列中放置命令的顺序从提交队列中提取命令/请求。然而,NVMe允许控制器107以任何顺序执行提取的命令。
在本文公开的至少一些实施例中,当提交队列具有定制命令(例如,不是NVMe中定义的标准命令)时,控制器107将定制命令放置在空闲队列131中,以用于在空闲时间期间执行。
例如,存储装置103可以根据轮询调度(round robin)方案处理为存储装置103配置的所有I/O提交队列,其中存储装置103执行来自队列的一个命令、或多达预定数目的命令,然后根据预定队列顺序处理下一队列。在提交队列111、…、113为空之后,控制器107处理空闲队列131。
例如,存储装置103可以随机地选择队列来执行命令(或多达预定数目的命令),然后随机地选择下一队列来执行命令(或多达相同的预定数目的命令)。在提交队列111、…、113为空之后,控制器107处理空闲队列131。
例如,存储装置103可以随机地选择队列来执行随机数目的命令,然后随机地选择下一队列来执行随机数目的命令。在提交队列111、…、113为空之后,控制器107处理空闲队列131。
例如,存储装置103可以随机地选择队列来执行所述队列中的一组相关命令,然后随机地选择下一队列来执行一组相关命令。在提交队列111、…、113为空之后,控制器107处理空闲队列131。
可替代地或组合地,一或多个提交队列(例如,111)经配置以提交用于在空闲时间执行的命令。控制器107完成对其它队列的处理以进入空闲状态,以便进一步处理经配置以提交用于在空闲时间执行的命令的提交队列(例如,111)。
图2示出了执行空闲时间处理的方法。例如,图2的方法可以在图1的计算机系统中实施。
图2的方法包含:更新201存储装置103的固件104;将附加模块133安装203到存储装置103上(例如,经由固件更新和/或将模块作为数据存储在存储装置103中);向存储装置103提交205(例如,经由提交队列111、…、113)请求以运行由附加模块133支持或编程的定制命令;将请求排队207在存储装置103中(例如,在空闲队列131中)以用于在空闲时间执行;以及在执行定制命令之后接收209(例如,经由完成队列115、…、117)来自存储装置103的响应。
图3示出了执行空闲时间处理的另一方法。例如,图3的方法可以在图1的计算机系统中实施。
图3的方法包含:在存储装置103中接收221来自主机101的请求;在存储装置103中接收223含有用于执行请求的指令的模块133;以及确定225存储装置103是否处于空闲状态(例如,已经完成非定制命令和/或已经完成空闲时间垃圾收集)。
如果确定227存储装置103是空闲的,则图3的方法进一步包含:执行229任务并进一步确定227存储装置103是否是空闲的;否则,图3的方法进一步包含:加载231模块133以用于执行;根据请求运行233模块133;以及从存储装置103向主机101提供235对请求的响应。
例如,计算机系统(例如,如图1所展示的)具有:主机101;以及存储装置103,其经由通信总线(例如,外围组件互连高速总线)耦合到主机101。存储装置103具有:主机接口105,其与主机101通信;控制器107;非易失性存储介质109;以及固件104,其含有可由控制器107执行的指令。
主机101向存储装置103传递模块133和运行模块133的请求。模块133和请求可以在一个提交中一起传递,或者分开传递。作为响应,存储装置103一直等待直到其处于空闲状态,以便根据请求运行模块133。
主机101可以根据非易失性存储器主机控制器接口规范与存储装置103通信。
作为实例,存储装置103是固态驱动器,其中运行模块133的命令或请求由执行固件103的控制器107来调度,以便在固态驱动器完成空闲时间垃圾收集之后执行。
存储装置103的控制器107可以包含多个处理器121、…、123,这些处理器可以是单独的微处理器,或者是封装在微处理器中的不同处理核。固件104可以包含在处理器121、…、123中的一个上运行的操作系统,以在空闲队列131中识别并调度经由提交队列111、…、113接收的定制命令的执行。操作系统管理附加模块133的加载和卸载。
例如,在处理器121、…、123中的一个上运行的操作系统将空闲队列131配置在存储装置103的易失性DRAM(106)中以保存从提交队列111、…、113提取的定制请求/命令,并且在存储装置103处于空闲状态时调度它们的执行。优选地,在提交队列111、…、113全部为空、从提交队列111、…、113提取的请求/命令(除了在空闲队列131中保存的那些之外)全部完成、和/或例程空闲处理任务(诸如SSD的空闲时间垃圾收集)全部完成之后达到空闲状态。
可以以各种方式将含有用于执行定制命令的操作的指令的模块133从主机101传送到存储装置103。例如,可以将模块133作为经由管理提交队列提交的固件更新传送到存储装置103,作为经由I/O提交队列发送的请求/命令的一部分传送到存储装置103,或者作为经由I/O提交队列将数据存储在非易失性存储介质109中的请求/命令传送到存储装置103,其中所存储的数据包含模块133。将模块133存储在非易失性存储介质109中的I/O请求/命令可以与使用模块133的I/O请求/命令分离,并且可以使用与I/O提交队列相同的队列或与其不同的另一队列来提交,所述I/O提交队列用于提交使用模块133的I/O请求/命令。
作为在存储装置中维持空闲队列131的替代,或组合地,单独的提交队列(例如,113)可以经配置以提交空闲时间请求/命令,其可以使用或可能不使用附加模块133。固件104经配置以使得控制器107在空闲时间从针对空闲时间请求/命令所识别的提交队列(例如,113)提取命令。在其它提交队列(例如,111,…)和/或空闲队列131为空之后、在先前提取的请求/命令已经完成之后、和/或在例程空闲时间任务已经完成之后,识别空闲时间。
通常,在执行附加模块133期间,附加模块133经编程以由存储装置103的控制器107使用存储在非易失性存储介质109中的数据来运行,而不需要与主机101通信。在空闲队列131和/或提交队列(例如,113)中执行用于空闲时间执行的请求/命令可以使用固件104中的一或多个模块和/或可以使用在处理器121、…、123中的一个中运行的操作系统中的一或多个模块。处理结果可以存储回非易失性存储装置109中和/或经由放置在完成队列115、…、或117中的消息报告给主机。
非暂时性计算机存储介质可以用于存储固件104和/或附加模块133的指令。当指令由计算机存储装置103的控制器107执行时,所述指令使得控制器107执行以上讨论的方法。
在本公开中,各种功能和操作可以描述为由计算机指令执行或由其引起,以简化描述。然而,本领域的技术人员将认识到,此些表达意味着功能是由一或多个控制器或处理器(诸如微处理器)执行计算机指令而产生的。可替代地或组合地,可以使用具有或不具有软件指令的专用电路来实施功能和操作,诸如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。实施例可以使用不具有软件指令的硬连线电路来实施,或者与软件指令组合来实施。因此,这些技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
虽然一些实施例可以在全功能计算机和计算机系统中实施,但是各种实施例能够作为计算产品以各种形式分发,并且能够被应用,而与用于实际进行分发的机器或计算机可读介质的特定类型无关。
所公开的至少一些方面可以在软件中至少部分地实施。也就是说,可以响应于计算机系统或其它数据处理系统的处理器(诸如微处理器或微控制器)执行含在存储器(诸如ROM、易失性RAM、非易失性存储器、高速缓冲存储器或远程存储装置)中的指令序列而在所述计算机系统或其它数据处理系统中实施这些技术。
经执行以实施实施例的例程可以实施为操作系统或被称为“计算机程序”的特定应用、组件、程序、对象、模块或指令序列的一部分。计算机程序通常包括在计算机的各种存储器和存储装置中的设置在不同时间的一或多个指令,并且当计算机中的一或多个处理器读取和执行所述指令时,所述指令使得计算机执行对涉及各个方面的元件进行执行所必需的操作。
有形的、非暂时性的计算机存储介质可以用于存储软件和数据,当数据处理系统执行所述软件和数据时,所述软件和数据使得系统执行各种方法。可执行软件和数据可以存储在各个位置(包含例如ROM、易失性RAM、非易失性存储器和/或高速缓冲存储器)。这类软件和/或数据的部分可以存储在这些存储装置中的任何一个中。进一步地,数据和指令可以从集中式服务器或对等网络获得。数据和指令的不同部分可以在不同的时间以及在不同的通信会话中或在相同的通信会话中从不同的集中式服务器和/或对等网络获得。可以在执行应用程序之前获得全部数据和指令。可替代地,当需要执行时,可以及时动态地获得数据和指令的部分。因此,不要求数据和指令在特定时刻全部在机器可读介质上。
计算机可读存储介质的实例包含但不限于可记录和不可记录类型的介质(诸如易失性和非易失性存储器装置)、只读存储器(ROM)、随机存取存储器(RAM)、闪速存储器装置、软盘和其它可移动盘、磁盘存储介质、以及光存储介质(例如,光盘只读存储器(CDROM)、数字多功能盘(DVD)等)等等。指令可以在暂时性介质(诸如电、光、声或其它形式的传播信号(诸如载波、红外信号、数字信号等))中实施。暂时介质通常用于传递指令,但不被视为能够存储指令。
在各种实施例中,硬连线电路可以与软件指令组合使用以实施这些技术。因此,这些技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
尽管一些附图以特定顺序展示了多个操作,但是可以对不依赖于顺序的操作进行重新排序,并且可以对其它操作进行组合或分解。虽然特别提及了一些重新排序或其它分组,但是对于本领域的普通技术人员来说,其它重新排序或分组将是显而易见的,因此并未给出详尽的替代列表。此外,应当认识到,这些阶段可以以硬件、固件、软件、或它们的任意组合来实施。
以上描述和附图是说明性的,不应解释为限制性的。描述了众多具体细节以提供透彻的理解。然而,在某些情形中,为避免模糊本描述,没有描述众所周知的或常规的细节。本公开中对一个实施例或实施例的引用不一定是对同一实施例的引用;并且,此些引用意味着至少一个。
在前述说明书中,已参考本公开的特定示范性实施例描述了本公开。显而易见的是,在不脱离所附权利要求所阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而非限制性的。

Claims (14)

1.一种计算机系统,其包括:
主机;以及
存储装置,其具有:
主机接口,其与所述主机通信;
控制器;
非易失性存储介质;以及
固件,其含有能够由所述控制器执行的指令;且
其中所述主机向所述存储装置传递模块和运行所述模块的请求;且
其中所述存储装置从所述主机接收所述模块和所述请求,并且响应于确定所述存储装置处于空闲状态而根据所述请求运行所述模块。
2.根据权利要求1所述的计算机系统,其进一步包括:
通信总线,其耦合在所述主机与所述存储装置之间,其中所述通信总线是外围组件互连高速总线;且
其中所述主机根据非易失性存储器主机控制器接口规范与所述存储装置通信。
3.根据权利要求2所述的计算机系统,其中所述存储装置是固态驱动器。
4.根据权利要求3所述的计算机系统,其中至少在完成所述固态驱动器中的空闲时间垃圾收集之后,所述存储装置被确定处于所述空闲状态。
5.根据权利要求2所述的计算机系统,其中所述控制器包含多个处理器;所述固件包含在所述处理器中的一个上运行的操作系统。
6.根据权利要求5所述的计算机系统,其中所述操作系统在所述存储装置的存储器中配置保存所述请求的空闲队列,并且在所述存储装置处于所述空闲状态时,调度所述请求的执行。
7.根据权利要求6所述的计算机系统,其中所述主机具有多个提交队列,以将请求传送到所述存储装置;并且至少在所述提交队列为空之后,所述存储装置被确定处于所述空闲状态。
8.根据权利要求2所述的计算机系统,其中作为所述请求的一部分或作为存储在所述非易失性存储介质中的数据的一部分,所述模块经由固件更新从所述主机传送到所述存储装置。
9.根据权利要求2所述的计算机系统,其中所述主机具有多个提交队列,以将请求传送到所述存储装置;所述多个提交队列包含第一队列和由所述存储装置识别为在所述存储装置的空闲时间期间提交请求以供执行的第二队列。
10.根据权利要求9所述的计算机系统,其中所述固件将所述控制器配置成仅在所述第一队列为空之后才从所述第二队列提取命令。
11.根据权利要求10所述的计算机系统,其中所述固件将所述控制器配置成仅在完成执行来自所述第一队列的命令或完成空闲时间垃圾收集之后才从所述第二队列提取命令。
12.一种在计算机系统中实施的方法,所述方法包括:
从主机向存储装置传递模块,其中所述存储装置具有与所述主机通信的主机接口、控制器、非易失性存储介质和含有能够由所述控制器执行的指令的固件;
从所述主机向存储装置传递运行所述模块的请求;
在所述存储装置中从所述主机接收所述模块;
在所述存储装置中从所述主机接收所述请求;
由所述存储装置的所述控制器确定所述存储装置是否处于空闲状态;
响应于确定所述存储装置处于所述空闲状态,根据所述请求运行所述模块。
13.根据权利要求12所述的方法,其中所述模块和所述请求通过耦合在所述主机与所述存储装置之间的外围组件互连高速总线进行传送。
14.根据权利要求13所述的方法,其中运行所述模块包含:在不与所述主机通信的情况下处理存储在所述非易失性存储介质中的数据、将所述处理的结果存储在所述非易失性存储介质中、在运行所述模块之后向所述主机提供完成消息。
CN201980011742.5A 2018-02-09 2019-01-23 数据存储装置空闲时间处理 Pending CN111684431A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/893,249 US10678458B2 (en) 2018-02-09 2018-02-09 Data storage device idle time processing
US15/893,249 2018-02-09
PCT/US2019/014765 WO2019156812A1 (en) 2018-02-09 2019-01-23 Data storage device idle time processing

Publications (1)

Publication Number Publication Date
CN111684431A true CN111684431A (zh) 2020-09-18

Family

ID=67541658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980011742.5A Pending CN111684431A (zh) 2018-02-09 2019-01-23 数据存储装置空闲时间处理

Country Status (3)

Country Link
US (2) US10678458B2 (zh)
CN (1) CN111684431A (zh)
WO (1) WO2019156812A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678458B2 (en) 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10489085B2 (en) 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
US11301132B2 (en) * 2019-08-30 2022-04-12 Micron Technology, Inc. Scheduling media management operations based on provided host system usage requirements
CN112286466B (zh) * 2020-11-18 2024-05-07 合肥沛睿微电子股份有限公司 电子装置及空间复用方法
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052506A1 (en) * 2006-08-28 2008-02-28 Fujitsu Limited Storage apparatus, control method, and control device
US20160124740A1 (en) * 2014-10-30 2016-05-05 Sang Hoon Choi Data storage device and method for reducing firmware update time and data processing system including the device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1434128A1 (en) 2002-12-27 2004-06-30 Neodio Technologies Corporation Plug-and-play interconnection architecture and method with in-device storage module in peripheral device
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9455955B2 (en) 2006-05-17 2016-09-27 Richard Fetik Customizable storage controller with integrated F+ storage firewall protection
JP2008046791A (ja) 2006-08-14 2008-02-28 Fujitsu Ltd 記憶装置、ファームウェア更新方法、及び制御装置
WO2011128928A1 (en) * 2010-04-12 2011-10-20 Hitachi, Ltd. Storage device
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
KR101702366B1 (ko) 2010-12-22 2017-02-03 삼성전자주식회사 동적으로 확장 가능한 기능을 제공하는 스토리지 장치 및 그것의 동작 방법
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9459810B2 (en) * 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US10235102B2 (en) * 2015-11-01 2019-03-19 Sandisk Technologies Llc Methods, systems and computer readable media for submission queue pointer management
US10656873B2 (en) * 2016-12-21 2020-05-19 Intel Corporation Technologies for prioritizing execution of storage commands
KR20180081236A (ko) * 2017-01-06 2018-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것을 포함하는 데이터 처리 시스템
US10635617B2 (en) 2017-05-19 2020-04-28 Western Digital Technologies, Inc. Context-aware dynamic command scheduling for a data storage system
US10678458B2 (en) 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10489085B2 (en) 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052506A1 (en) * 2006-08-28 2008-02-28 Fujitsu Limited Storage apparatus, control method, and control device
US20160124740A1 (en) * 2014-10-30 2016-05-05 Sang Hoon Choi Data storage device and method for reducing firmware update time and data processing system including the device

Also Published As

Publication number Publication date
WO2019156812A1 (en) 2019-08-15
US20190250838A1 (en) 2019-08-15
US20200301592A1 (en) 2020-09-24
US11740812B2 (en) 2023-08-29
US10678458B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
US11669277B2 (en) Latency-based scheduling of command processing in data storage devices
US11714553B2 (en) Namespaces allocation in non-volatile memory devices
US11640242B2 (en) Namespace management in non-volatile memory devices
US11740812B2 (en) Data storage device idle time processing
US11687446B2 (en) Namespace change propagation in non-volatile memory devices
US9418002B1 (en) Processing unit reclaiming requests in a solid state memory device
US11966329B2 (en) Address map caching for a memory system
US11151052B2 (en) Reading sequential data from memory using a pivot table
US11487478B2 (en) Memory system and method of controlling nonvolatile memory
US11340806B2 (en) Meta data processing during startup of storage devices
CN107003880A (zh) 内核更新方法和装置、计算机设备
US20220391091A1 (en) Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices
US20230315316A1 (en) Reading a master boot record for a namespace after reformatting the namespace

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200918

WD01 Invention patent application deemed withdrawn after publication