CN109388340B - 数据存储装置及管理数据存储装置中的flr的方法 - Google Patents

数据存储装置及管理数据存储装置中的flr的方法 Download PDF

Info

Publication number
CN109388340B
CN109388340B CN201810897441.4A CN201810897441A CN109388340B CN 109388340 B CN109388340 B CN 109388340B CN 201810897441 A CN201810897441 A CN 201810897441A CN 109388340 B CN109388340 B CN 109388340B
Authority
CN
China
Prior art keywords
flr
command
virtual
storage device
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810897441.4A
Other languages
English (en)
Other versions
CN109388340A (zh
Inventor
丁志敏
桑贾尔·K·奥雨开
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.)
Kioxia Corp
Original Assignee
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Publication of CN109388340A publication Critical patent/CN109388340A/zh
Application granted granted Critical
Publication of CN109388340B publication Critical patent/CN109388340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/0658Controller construction 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation

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)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及用于管理支持IO虚拟化的存储装置中的功能级重置的方法。一种数据存储装置包括非易失性半导体存储器装置和固态驱动器控制器,所述固态驱动器控制器以通信方式耦合到所述非易失性半导体存储器装置且包含功能级重置管理器。所述功能级重置管理器能够从主机系统接收功能级重置请求、基于所述功能级重置请求产生功能级重置位图,并向命令处理管线广播所述功能级重置请求。所述功能级重置位图能够指示哪些功能处于重置状态。另外,所述功能级重置管理器能够确定哪些功能处于所述重置状态,并指示所述命令处理管线取消与处于所述重置状态的功能相关联的命令。

Description

数据存储装置及管理数据存储装置中的FLR的方法
技术领域
本公开涉及数据存储装置和用于管理支持输入/输出虚拟化的存储装置中的功能级重置请求的方法。
背景技术
在输入/输出(IO)虚拟化的情况下,例如固态驱动器(SSD)的高容量存储装置可以在高度虚拟化环境中有效运行。主机环境中的多个虚拟机(VM)可利用SSD中的不同物理和虚拟功能(VF),并且以一种好像每个VM独占访问整个SSD的方式运行。然而,一直存在关于支持IO虚拟化的SSD所发出的潜在安全性和稳定性的问题。
功能级重置(FLR)使得系统能够重置正常中止运行或不稳定的功能。如果相关联的VM有故障或是恶意的,那么虚拟功能可能会变得不稳定。针对每一功能应用FLR请求,且FLR请求仅影响目标功能。然而,一直以来都希望系统能够快速且选择性地中止和清除属于受重置影响的功能的命令,同时使在其它功能的速度和稳定性方面的影响最小。
发明内容
本公开涉及一种数据存储装置,包括非易失性半导体存储器装置和SSD控制器,所述SSD控制器以通信方式耦合到所述非易失性半导体存储器装置且包含FLR管理器。FLR管理器可从主机系统接收FLR请求、基于FLR请求产生FLR位图、向命令处理管线广播FLR请求,并指示命令处理管线取消与处于重置状态的功能相关联的命令。FLR位图可指示多个功能中的哪些功能处于重置状态。
根据一个实施方案,FLR管理器可确定多个功能中的哪些功能处于重置状态。多个功能中的每一个可与多个命令中的一个命令相关联。在一些实施方案中,命令处理管线可取消与多个功能中处于重置状态的功能相关联的命令。
在其它实施方案中,命令处理管线可基于FLR位图确定多个功能中的哪些功能处于重置状态。
在某些实施方案中,FLR管理器可基于以通信方式耦合到FLR管理器的命令计数器而确定多个功能中的哪些功能处于重置状态。命令计数器可经配置以针对每一功能存储命令处理管线中的多个命令的计数。
根据一些实施方案,FLR管理器可处理与多个功能中不处于重置状态的功能相关联的命令。
在一些实施方案中,主机系统是包括多个虚拟机的虚拟机主机。根据一个实施方案,多个功能包括多个物理功能。在其它实施方案中,多个功能包括多个虚拟功能,其中多个虚拟功能中的每一个与至少一个物理功能相关联。
在某些实施方案中,FLR管理器通过外围组件互连高速(PCIe)接口以通信方式耦合到主机系统。
本公开的第二方面涉及一种管理数据存储装置中的FLR的方法。方法包括在FLR管理器处从主机系统接收FLR请求。FLR管理器可在SSD控制器内。方法还包括在FLR管理器处基于FLR请求产生FLR位图。FLR位图可指示多个功能中的哪些功能处于重置状态。另外,方法包括从FLR管理器向命令处理管线广播FLR请求。方法还包括在命令处理管线处取消与多个功能中处于重置状态的功能相关联的命令。
根据一些实施方案,方法还包括在命令处理管线处确定多个功能中的哪些功能处于重置状态。多个功能中的每一个可与多个命令中的一个命令相关联。
在一些实施方案中,方法还包括在命令处理管线处基于FLR位图确定多个功能中的哪些功能处于重置状态。
在其它实施方案中,方法还包括在命令处理管线处基于命令计数器确定多个功能中的哪些功能处于重置状态。命令计数器可存储命令处理管线中的多个命令的计数。
根据一些实施方案,方法还包括处理与多个功能中不处于重置状态的功能相关联的命令。
在某些实施方案中,主机系统是包括多个虚拟机的虚拟机主机。在其它实施方案中,多个功能包括多个物理功能。根据一些实施方案,多个功能包括多个虚拟功能,其中多个虚拟功能中的每一个与至少一个物理功能相关联。
在某些实施方案中,FLR管理器通过PCIe接口与主机系统通信。
附图说明
在结合附图考虑以下详细描述后,前述和其它目标和优势将是显而易见的,在所有附图中相同参考标号指代相同部件,且其中:
图1示出根据本公开的一或多个实施例配置的数据存储装置的示意性图示;
图2示出根据本公开的实施例的数据存储装置的示意性图示;
图3示出根据本公开的一或多个实施例配置的命令处理管线的示意性图示;
图4是根据本公开的实施例的用于管理数据存储装置中的FLR的方法步骤的流程图;
图5是根据本公开的一或多个实施例配置的用于更新命令计数器的方法步骤的流程图;
具体实施方式
图1示出包括主机系统102和存储装置108的计算系统100的示意性图示。主机系统102以通信方式耦合到存储装置108。主机系统102是包括虚拟机104和超管理器106的计算系统。超管理器106管理被称作虚拟机104的多个独立计算机系统仿真。虚拟机104在向SSD控制器110发出命令时各自指定不同虚拟功能。存储装置108是包括SSD控制器110、缓冲存储器117和存储器118的SSD。SSD控制器110包括PCIe接口112、前端114和后端116。存储装置108提供非易失性存储器功能性供主机系统102使用,且包含非易失性半导体存储元件118作为存储媒体,所述非易失性半导体存储元件118例如基于NAND的快闪存储器。缓冲存储器117充当主机系统102和存储器116之间的传输的高速中间缓冲器。存储装置108还可包含未示出的其它元件,例如供电电路、指示灯电路、温度传感器、启动电路、时钟电路和用于辅助各个功能的其它电路。
SSD控制器110接收并处理来自主机系统102的命令,以便对存储器118执行操作。来自主机系统102的命令包含针对存储器118内的位置的读取或写入请求和管理命令,例如用于查询存储装置108的特征集的命令、用于格式化存储器118的命令、用于创建和修改各种类型的队列的命令、用于请求各种事件的通知的命令以及各种其它命令。SSD控制器110还可包含未示出的其它元件。
PCIe接口112包括用于根据已知PCIe标准与主机系统102通信的电路。在另一实施例中,存储装置108使用串行高级技术附件(SATA)接口与主机系统102通信。PCIe接口112使得存储装置108能够以相比于SATA接口更快的数据传输速度及更大的带宽来与主机系统102通信。
前端114使用PCIe接口112与主机系统102通信,以接收、组织和处理来自主机系统102的命令和数据。前端114还使用PCIe接口112在主机系统102和存储装置108之间传输数据。后端116执行与从前端114接收到的命令相关联的数据传输任务。后端116所执行的任务包含在存储器118和缓冲存储器117之间传输数据。
存储器118是在主机系统102请求时存储数据的非易失性半导体存储器。存储器118包含一或多个基于非易失性半导体的存储元件的阵列,所述基于非易失性半导体的存储元件的一些实例包含非易失性NAND快闪存储器、非易失性NOR快闪存储器、基于非易失性DRAM的存储器、磁阻式随机存取存储器(MRAM)和其它类型的存储器。
缓冲存储器117用作主机系统102和存储器118之间的高速缓冲器。缓冲存储器117可包含DRAM,但是还可包含基于非易失性半导体的存储元件,例如某些应用中的相变存储器(PCM)、MRAM或电阻式RAM(ReRAM)。通过前端114将数据从主机系统102传输到缓冲存储器117中。接着,通过后端116将数据从缓冲存储器117传输到存储器118。
SSD控制器110内的各种资源可在多个虚拟功能之间共享。SSD控制器110提供一种主机系统102可借以配置在虚拟功能之间共享资源的方式的机制。更具体地说,主机系统102可向SSD控制器110传送命令,以使SSD控制器110改变指配给不同虚拟功能的资源量。
在主机系统102内,超管理器106管理被称作虚拟机104的多个独立计算机系统仿真。虚拟机104在向SSD控制器110发出命令时各自指定不同虚拟功能。超管理器106管理虚拟机104的各种功能方面,包含IO操作。超管理器106向每个不同的虚拟机104指派不同虚拟功能号。超管理器106可向特定虚拟机104指派超过一个虚拟功能号,但是不向多个虚拟机104指派同一虚拟功能号。因此,每一虚拟功能被唯一地指配给唯一一个虚拟机104。当虚拟机104产生访问存储装置108的命令时,超管理器106变换命令以包含指配给虚拟机104的虚拟功能号,并使用PCIe接口112向存储装置108传送所述命令和虚拟功能号以供处理。
虚拟机104可查询存储装置108以确定指配给与虚拟机104相关联的虚拟功能的资源量。更具体地说,在任何时间,虚拟机104可向存储装置108传送查询命令,请求关于指配给与虚拟机104相关联的虚拟功能的资源数量的信息。作为响应,存储装置108传送指示指配给那些虚拟功能的每一特定资源的数量的消息。
图2示出包括主机客户端102和存储装置108的计算系统200的示意性图示。计算系统200是计算系统100的示例性实例。主机客户端102是包括虚拟机104的计算系统。虚拟机104包括提交队列(SQ)寄存器202和完成队列(CQ)寄存器204。存储装置108是包括PCIe接口112、前端114、FLR管理器206、命令计数器208和FLR位图210的SSD。为了易于解释,已经省略图1中的计算系统100所说明的其它组件。
前端114包括多个功能单元,包含排队接口212、命令剖析单元214、地址设置单元216和数据传输单元218。每一功能单元可含有处理逻辑、寄存器和本地存储器,并且可检测某些状况,例如错误状况和异常。排队接口212就在存储于主机系统102内的存储器中的提交队列和完成队列中存储的命令状态与主机系统102通信。提交队列存储将由SSD控制器110获取的命令,且完成队列存储关于由SSD控制器110完成的命令的信息。命令剖析单元214剖析或解码命令以供进一步处理。
地址设置单元216采用由剖析单元214解码的存储器编址信息(呈物理区域页(PRP)或分散集中列表(SGL)值的形式,并设置存储器地址以在主机和存储装置之间执行数据的DMA传输。缓冲存储器117充当PCIe接口112和后端116之间的中介。数据传输单元218执行主机存储器(通过PRP/SGL值定位)和本地缓冲存储器117之间的直接数据传输。
存储装置108内的一些共享资源包含于排队接口单元212、命令剖析单元214、地址设置单元216和数据传输单元218内。额外资源包含存储在主机系统102中的提交队列(SQ)寄存器202和完成队列(CQ)寄存器204。SQ寄存器202存储将由存储装置108获取的命令标识符、操作代码和缓冲地址参数。CQ寄存器204存储标记(reference)已由存储装置104完成的命令的命令状态。
FLR管理器206充当在利用许多VF运行时确保系统稳定性的监督者。一或多个VF可因为与VF相关联的VM 104出现故障或有恶意而变得不稳定,并且可进入和脱离重置。FLR管理器206将确保一个VM 104和/或相关联的VF的不良稳定性不会渐渐损害其它VF的稳定性,即使它们共享SSD上的资源池也这样。
FLR管理器206检测FLR请求并针对每一功能向前端114的处理子单元、排队接口单元212、命令剖析单元214、地址设置单元216和数据传输单元218报告此类请求。接着,前端114的每一处理子单元将快速且选择性地中止或舍弃受影响VF的命令/工作负荷,同时继续处理不受影响的VF的命令。使用命令处理系统300以管线化方式完成不同VF的工作负荷的处理,这在下文描述。
FLR管理器206针对每一VF通过PCIe接口112从主机系统102接收FLR请求。FLR管理器206继续请求命令处理系统300清除或排空属于管线中受影响VF的所有命令,并重置与受影响VF相关联的处理块的操作状态。FLR管理器206还停用与受影响功能相关联的队列。当FLR管理器206结束这一过程并确定所有受影响命令在命令处理系统300中已排空时,FLR管理器206使用PCIe接口112向主机系统102发送FLR完成指示符。接着,主机系统102可重新启用受影响VF。
FLR管理器206首先通过检测经由PCIe接口112来自主机系统102的FLR请求来实现这一操作。如果存在多个FLR请求,那么FLR管理器206可对FLR请求进行优先化和串行化。接着,FLR管理器206通过专用总线向前端114的所有处理子单元广播FLR请求。优选广播FLR请求的专用总线,但是可存在其它执行广播的方式。FLR位图210对处于重置的功能进行编码。FLR管理器206在接收FLR请求后更新FLR位图210以维持处于重置的功能的记录。前端114的所有处理子单元都可访问FLR位图210。在一些实施例中,前端114的每一处理子单元维持它们自己的FLR位图210。命令计数器208维持针对每一功能在管线中处理多少个命令的记录。
图3示出包括管线302的命令处理系统300的示意性图示。管线302包括多个阶段,包含阶段1 304、阶段2 310、阶段3 312和阶段4 314。每一阶段304、310、312和314包括多个命令块3061-N。管线302还可在每一阶段304、310、312和314之间包括FLR检查点308。
使用命令处理系统300以管线化方式在多个阶段中处理与不同VF相关联的命令。例如,当与第一VF相关联的第一命令占用阶段1 304的命令块306时,与第二VF相关联的第二命令占用阶段2 310的命令块306。
当命令进入管线302时,图2中所示的命令计数器208将进行更新(递增)以反映特定VF的命令处理系统300中的命令的增加量。类似地,当命令离开管线302时,命令计数器208将进行更新(递减)以反映特定VF的命令处理系统300中的命令的减少量。
在管线302的每一阶段之后存在FLR检查点308。在一些实施例中,可存在管线302的一些阶段之后没有FLR检查点308。当命令使用FLR位图210从前一阶段进入一个阶段时,FLR检查点308将检查命令。例如,如果命令离开阶段1 304并进入阶段2 310,那么FLR检查点308将在它进入阶段2 310之前检查它。如果命令属于处于重置的功能,那么命令将从管线302中删除。如果命令已经从管线302中删除,那么已经被删除的命令被视为已经离开管线302。此事件将使命令计数器208更新以反映所述VF的命令处理系统300中的命令的减少量。
FLR管理器206监测命令计数器208以确定FLR请求是否已完成。当已接收到FLR请求的给定VF的命令计数器208达到零时,FLR过程被视为已完成。如果FLR过程结束,那么FLR管理器206使用PCIe接口112向主机系统102告知FLR完成状态。
在FLR请求的处理期间,通过清除管线302中受FLR影响的所有命令,减小继续处理受FLR影响的命令的几率。这减小了系统因为出现故障的VF和其相关联的VM 104而锁定的几率。另外,FLR管理器206将释放资源以处理属于处于健康状态的VF的其它命令。
图4中示出使用计算系统200和命令处理系统300管理FLR的过程400。过程400开始于步骤402,从主机客户端102向存储装置108发送FLR请求。例如,与主机系统102的VM 104相关联的VF可为不稳定的。主机系统102向存储装置108发送不稳定VF的FLR请求,以阻止处理与故障VF相关联的命令。
过程400继续进行到在步骤404中,从PCIe接口112向FLR管理器206发送FLR请求。例如,PCIe接口112可使用数据总线以通信方式耦合到FLR管理器206。可针对每一VF从PCIe接口112向FLR管理器206发送FLR请求。
过程400继续进行到在步骤406中,在FLR管理器206处检测FLR请求。例如,FLR管理器206检测通过PCIe接口112来自主机系统102的FLR请求。在一些实施例中,FLR管理器206针对每一VF通过PCIe接口112从主机系统102接收FLR请求。
过程400继续进行到在步骤408中,在FLR管理器206处对FLR进行判优和串行化。例如,如果超过一个FLR请求同时被发送到FLR管理器206,那么FLR管理器206在接收FLR请求后可确定FLR请求的优先级。此外,FLR管理器206可产生指示哪些VF与FLR请求相关联的FLR位图210。FLR位图210对处于重置的功能进行编码。
过程400继续进行到在步骤410中,更新来自FLR管理器206的FLR位图210。例如,FLR管理器206在接收FLR请求后更新FLR位图210,以维持处于重置的功能的记录。在下文描述过程500时进一步描述步骤410。
过程400继续进行到在步骤412中,从FLR管理器206向命令处理管线302广播FLR。例如,FLR管理器206可通过专用总线向前端114的所有处理子单元、排队接口单元212、命令剖析单元214、地址设置单元216和数据传输单元218广播FLR请求。在一些实施例中,FLR管理器206针对每一功能向前端114的处理子单元报告此类FLR请求。
过程400继续进行到在步骤414中,比较命令处理管线302与FLR位图210。例如,如果占用命令块306的命令与受影响VF相关联,那么FLR管理器206可比较命令块306的位置与FLR位图210,以确定当前哪一命令块306被受影响命令占用。
过程400结束于步骤416,取消命令处理管线302中受FLR影响的命令。例如,前端114的每一处理子单元可选择性地中止或舍弃受影响VF的命令/工作负荷,同时继续处理不受影响的VF的命令。例如,当命令使用FLR位图210从前一阶段进入一个阶段时,FLR检查点308将检查命令。如果命令离开阶段1 304并进入阶段2 310,那么FLR检查点308将在它进入阶段2 310之前检查它。如果命令属于处于重置的功能,那么命令将从管线302中删除。如果命令已经从管线302中删除,那么已经被删除的命令被视为已经离开管线302。
图5中示出使用计算系统200和命令处理系统300管理命令计数器208的过程500。过程500开始于步骤502,更新命令计数器208。例如,命令计数器208维持针对每一功能在管线中处理多少个命令的记录。
过程500继续进行到在步骤504中,确定命令计数器208是否已达到零。例如,FLR管理器206监测命令计数器208以确定FLR请求是否已完成。当已接收到FLR请求的给定VF的命令计数器208达到零时,FLR过程被视为已完成。如果命令计数器208已达到零,那么过程500继续进行到步骤506。否则,过程500继续进行到步骤508。
过程500继续进行到在步骤506中,终止FLR请求。例如,当已接收到FLR请求的给定VF的命令计数器208达到零时,FLR过程被视为已完成。如果FLR过程结束,那么FLR管理器206使用PCIe接口112向主机系统102告知FLR完成状态。
过程500继续进行到在步骤508中,确定与FLR相关联的命令是否已进入命令处理管线302。例如,当命令进入管线302并占用命令块306时,FLR管理器206可更新命令计数器208以反映特定VF的命令处理系统300中的命令的增加量。如果与FLR相关联的命令已进入命令处理管线302,那么过程500继续进行到步骤510。否则,过程500继续进行到步骤512。
过程500继续进行到在步骤510中,增加命令计数器208。例如,当命令进入管线302时,命令计数器208将进行更新以反映特定VF的命令处理系统300中的命令的增加量。
过程500继续进行到在步骤512中,确定与FLR相关联的命令是否已离开命令处理管线302。例如,当命令离开管线302时,FLR管理器206可更新命令计数器208以反映特定VF的命令处理系统300中的命令的减少量。如果与FLR相关联的命令已离开命令处理管线302,那么过程500前进到步骤514。否则,过程500前进到步骤516。
过程500继续进行到在步骤514中,减少命令计数器208。例如,当命令离开管线302时,命令计数器208将进行更新以反映特定VF的命令处理系统300中的命令的减少量。
过程500继续进行到在步骤516中,确定与FLR相关联的命令是否已被取消。例如,当命令使用FLR位图210从前一阶段进入一个阶段时,FLR检查点308将检查命令。如果命令离开阶段1 304并进入阶段2 310,那么,FLR检查点308将在它进入阶段2 310之前检查它。如果命令属于处于重置的功能,那么命令将从管线302中删除。如果命令已经从管线302中删除,那么已经被删除的命令被视为已离开管线302。如果与FLR相关联的命令已被取消,那么过程500前进到步骤518。否则,过程500前进到步骤502。
过程500结束于步骤518,减少命令计数器208。例如,如果命令已经从管线302中删除,那么已经被删除的命令被视为已离开管线302。此事件将使命令计数器208进行更新以反映所述VF的命令处理系统300中的命令的减少量。
在步骤510、514和518之后,过程500前进到步骤502,以更新命令计数器208。执行这一操作以便命令计数器208维持针对每一功能在管线中处理多少个命令的记录。
本领域的技术人员将清楚本发明的各个方面的其它目标、优势和实施例,且它们在本描述内容和附图的范围内。例如但不限于,结构或功能元件可根据本发明重新布置。类似地,根据本发明的原理可应用到即使本文中没有具体地详细描述但仍在本发明的范围内的其它实例。

Claims (22)

1.一种数据存储装置,包括:
非易失性半导体存储器装置;以及
固态驱动器SSD控制器,其以通信方式耦合到所述非易失性半导体存储器装置,所述SSD控制器经配置以响应于从所述数据存储装置外部的主机系统接收的命令而在所述非易失性半导体存储器装置中存储数据和检索数据,所述SSD控制器包含功能级重置FLR管理器,所述功能级重置FLR管理器经配置以:
从所述主机系统接收FLR请求;
响应于接收到FLR请求,基于所述FLR请求产生FLR位图,其中所述FLR位图指示多个虚拟功能中的哪些虚拟功能处于重置状态;
向命令处理管线广播所述FLR请求,所述命令处理管线包括多个FLR检查点;
在所述多个FLR检查点的每一者处,使用所述FLR位图确定与所述多个虚拟功能中的虚拟功能相关联的命令是否处于重置状态;以及
在一或多个命令进入所述命令处理管线后,指示所述命令处理管线基于所述FLR位图中指示的处于所述重置状态的所述多个虚拟功能而取消与所述多个虚拟功能中处于所述重置状态的虚拟功能相关联的所述一或多个命令。
2.根据权利要求1所述的数据存储装置,其中所述多个虚拟功能中的每一个与多个命令中的一个命令相关联。
3.根据权利要求2所述的数据存储装置,其中所述SSD控制器进一步包括以通信方式耦合到所述FLR管理器的命令计数器,其中所述确定进一步包括确定已接收FLR请求的给定虚拟功能的所述命令计数器是否达到零。
4.根据权利要求3所述的数据存储装置,其中所述命令计数器经配置以针对所述多个虚拟功能中的每一虚拟功能存储所述命令处理管线中的所述多个命令的计数。
5.根据权利要求2所述的数据存储装置,其中所述SSD控制器经进一步配置以处理与所述多个虚拟功能中不处于所述重置状态的虚拟功能相关联的命令。
6.根据权利要求1所述的数据存储装置,其中所述SSD控制器经进一步配置以:指示所述命令处理管线在所述多个FLR检查点的每一者处取消所述一或多个命令。
7.根据权利要求1所述的数据存储装置,其中所述主机系统是包括多个虚拟机的虚拟机主机。
8.根据权利要求1所述的数据存储装置,其中所述多个虚拟功能包括多个物理功能。
9.根据权利要求8所述的数据存储装置,其中所述多个虚拟功能中的每一个与至少一个物理功能相关联。
10.根据权利要求1所述的数据存储装置,其中所述FLR管理器通过串行总线接口以通信方式耦合到所述主机系统。
11.根据权利要求1所述的数据存储装置,其中所述SSD控制器经进一步配置以指示所述命令处理管线在FLR检查点处取消所述命令。
12.一种管理数据存储装置中的功能级重置FLR的方法,所述方法包括:
在FLR管理器处从所述数据存储装置外部的主机系统接收FLR请求,其中所述FLR管理器在固态驱动器SSD控制器内,所述SSD控制器经配置以响应于从所述主机系统接收的命令而在所述数据存储装置中存储数据和检索数据;
响应于接收到所述FLR请求,在所述FLR管理器处基于所述FLR请求产生FLR位图,其中所述FLR位图指示多个虚拟功能中的哪些虚拟功能处于重置状态;
从所述FLR管理器向命令处理管线广播所述FLR请求,所述命令处理管线包括多个FLR检查点;
在所述多个FLR检查点的每一者处,使用所述FLR位图确定与所述多个虚拟功能中的虚拟功能相关联的命令是否处于重置状态;以及
在一或多个命令进入所述命令处理管线后,在所述命令处理管线处基于所述FLR位图中指示的处于所述重置状态的所述多个虚拟功能而取消与所述多个虚拟功能中处于所述重置状态的虚拟功能相关联的所述一或多个命令。
13.根据权利要求12所述的方法,其中所述多个虚拟功能中的每一个与多个命令中的一个命令相关联。
14.根据权利要求13所述的方法,其中所述确定进一步包括确定已接收FLR请求的给定虚拟功能的命令计数器是否达到零,其中所述命令计数器以通信方式耦合到所述FLR管理器。
15.根据权利要求14所述的方法,其中所述命令计数器针对所述多个虚拟功能中的每一虚拟功能存储所述命令处理管线中的所述多个命令的计数。
16.根据权利要求13所述的方法,进一步包括处理与所述多个虚拟功能中不处于所述重置状态的虚拟功能相关联的命令。
17.根据权利要求12所述的方法,其进一步包括:指示所述命令处理管线在所述多个FLR检查点的每一者处取消所述一或多个命令。
18.根据权利要求12所述的方法,其中所述主机系统是包括多个虚拟机的虚拟机主机。
19.根据权利要求12所述的方法,其中所述多个虚拟功能包括多个物理功能。
20.根据权利要求12所述的方法,其中所述多个虚拟功能中的每一个与至少一个物理功能相关联。
21.根据权利要求12所述的方法,其中所述FLR管理器通过串行总线接口与所述主机系统通信。
22.根据权利要求12所述的方法,其中所述命令的取消发生在FLR检查点处。
CN201810897441.4A 2017-08-08 2018-08-08 数据存储装置及管理数据存储装置中的flr的方法 Active CN109388340B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/671,436 US10908998B2 (en) 2017-08-08 2017-08-08 Managing function level reset in an IO virtualization-enabled storage device
US15/671,436 2017-08-08

Publications (2)

Publication Number Publication Date
CN109388340A CN109388340A (zh) 2019-02-26
CN109388340B true CN109388340B (zh) 2022-06-03

Family

ID=63407033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810897441.4A Active CN109388340B (zh) 2017-08-08 2018-08-08 数据存储装置及管理数据存储装置中的flr的方法

Country Status (4)

Country Link
US (1) US10908998B2 (zh)
EP (1) EP3441870B1 (zh)
CN (1) CN109388340B (zh)
TW (1) TWI684864B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372580B2 (en) * 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
CN111831388A (zh) * 2019-04-17 2020-10-27 Ati科技无限责任公司 用于过多虚拟机请求的事件保护
CN111338895B (zh) * 2020-02-22 2023-01-10 苏州浪潮智能科技有限公司 一种基于位图的状态管理方法、装置、设备和介质
WO2022231975A1 (en) * 2021-04-27 2022-11-03 Ark Engineering & Technical Services Inc. Reduced footprint ssd with test station for an underground pipeline
US11640335B2 (en) 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1542609A (zh) * 2003-06-24 2004-11-03 威盛电子股份有限公司 处理器及处理管线中例外反应的装置与方法
CN101983365A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 在共享的i/o系统中转换重置
CN103200204A (zh) * 2012-01-04 2013-07-10 中兴通讯股份有限公司 基于云存储的分布式转码系统及其方法
US8898261B1 (en) * 2007-07-02 2014-11-25 Emc Corporation Configuring agent services operable by agents in a storage area network
CN106796556A (zh) * 2014-10-05 2017-05-31 亚马逊技术股份有限公司 仿真端点配置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4182486B2 (ja) 2004-12-20 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
US20070240018A1 (en) * 2005-12-29 2007-10-11 Intel Corporation Functional level reset on a per device/function basis
US8176304B2 (en) 2008-10-22 2012-05-08 Oracle America, Inc. Mechanism for performing function level reset in an I/O device
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8527745B2 (en) 2009-12-07 2013-09-03 Oracle America, Inc. Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US8677030B2 (en) * 2009-12-09 2014-03-18 Oracle America, Inc. Apparatus and method for managing packet classification tables
US8271716B2 (en) 2010-02-01 2012-09-18 Oracle America, Inc. Virtualization of an input/output device for supporting multiple hosts and functions by using an ingress manager for accepting into a buffer communications identified by functions hosted by a single host
TWI537828B (zh) 2010-12-21 2016-06-11 萬國商業機器公司 虛擬機管理的方法及其電腦系統之裝置和電腦程式
US8543754B2 (en) * 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
WO2013022915A1 (en) * 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation
US9047208B1 (en) 2012-12-10 2015-06-02 Qlogic, Corporation Method and system of configuring virtual function in peripheral devices
US9201682B2 (en) 2013-06-21 2015-12-01 Ati Technologies Ulc Virtualized device reset
JP6307847B2 (ja) 2013-11-19 2018-04-11 富士通株式会社 情報処理装置,制御装置及び制御プログラム
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
US10591976B2 (en) * 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1542609A (zh) * 2003-06-24 2004-11-03 威盛电子股份有限公司 处理器及处理管线中例外反应的装置与方法
US8898261B1 (en) * 2007-07-02 2014-11-25 Emc Corporation Configuring agent services operable by agents in a storage area network
CN101983365A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 在共享的i/o系统中转换重置
CN103200204A (zh) * 2012-01-04 2013-07-10 中兴通讯股份有限公司 基于云存储的分布式转码系统及其方法
CN106796556A (zh) * 2014-10-05 2017-05-31 亚马逊技术股份有限公司 仿真端点配置

Also Published As

Publication number Publication date
TW201911054A (zh) 2019-03-16
EP3441870A1 (en) 2019-02-13
CN109388340A (zh) 2019-02-26
US20190050295A1 (en) 2019-02-14
US10908998B2 (en) 2021-02-02
EP3441870B1 (en) 2023-10-04
TWI684864B (zh) 2020-02-11

Similar Documents

Publication Publication Date Title
CN109388340B (zh) 数据存储装置及管理数据存储装置中的flr的方法
US10649815B2 (en) Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
US10997093B2 (en) NVME data processing method and NVME device
KR102667430B1 (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US10019181B2 (en) Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller
US10133668B2 (en) Technologies for providing cross data storage device communications
US10248322B2 (en) Memory system
KR20180037098A (ko) Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법
CN109522250B (zh) 根据多播通信协议与主机通信的存储设备和主机通信方法
US11119691B1 (en) Method and apparatus to perform a function level reset in a memory controller
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
EP3608790B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
CN105378682A (zh) 持久存储器中数据的观察
US20130111103A1 (en) High-speed synchronous writes to persistent storage
CN110647359B (zh) 半导体装置、其操作方法和具有其的层叠存储装置
US9448845B2 (en) Extendible input/output data mechanism for accelerators
US8938588B2 (en) Ensuring forward progress of token-required cache operations in a shared cache
TW202316259A (zh) 用於控制資料處理系統中的共享記憶體的設備和方法
JP2018041153A (ja) ストレージシステムおよび入出力処理方法
US9946656B2 (en) Completion packet return based on eviction or flush
CN109308167B (zh) 用于跟踪写入请求的设备和系统、以及控制器的方法
JP2018041154A (ja) ストレージシステムおよび処理方法
TW202407547A (zh) 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法
CN115809018A (zh) 改善系统的读取性能的设备和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant