CN109388340B - 数据存储装置及管理数据存储装置中的flr的方法 - Google Patents
数据存储装置及管理数据存储装置中的flr的方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0745—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0058—Bus-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
技术领域
本公开涉及数据存储装置和用于管理支持输入/输出虚拟化的存储装置中的功能级重置请求的方法。
背景技术
在输入/输出(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检查点处。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/671,436 | 2017-08-08 | ||
US15/671,436 US10908998B2 (en) | 2017-08-08 | 2017-08-08 | Managing function level reset in an IO virtualization-enabled storage device |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11074013B2 (en) | 2018-08-07 | 2021-07-27 | Marvell Asia Pte, Ltd. | Apparatus and methods for providing quality of service over a virtual interface for solid-state storage |
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)
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)
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 |
JP2014522066A (ja) | 2011-08-09 | 2014-08-28 | エルエスアイ コーポレーション | 入出力デバイスとコンピューティングホストとの相互運用 |
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 |
-
2017
- 2017-08-08 US US15/671,436 patent/US10908998B2/en active Active
-
2018
- 2018-08-07 TW TW107127474A patent/TWI684864B/zh active
- 2018-08-08 EP EP18187955.2A patent/EP3441870B1/en active Active
- 2018-08-08 CN CN201810897441.4A patent/CN109388340B/zh active Active
Patent Citations (5)
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 |
---|---|
CN109388340A (zh) | 2019-02-26 |
US10908998B2 (en) | 2021-02-02 |
US20190050295A1 (en) | 2019-02-14 |
TWI684864B (zh) | 2020-02-11 |
TW201911054A (zh) | 2019-03-16 |
EP3441870B1 (en) | 2023-10-04 |
EP3441870A1 (en) | 2019-02-13 |
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 | |
JP2018041153A (ja) | ストレージシステムおよび入出力処理方法 | |
US8938588B2 (en) | Ensuring forward progress of token-required cache operations in a shared cache | |
TW202316259A (zh) | 用於控制資料處理系統中的共享記憶體的設備和方法 | |
CN109308167B (zh) | 用于跟踪写入请求的设备和***、以及控制器的方法 | |
US9946656B2 (en) | Completion packet return based on eviction or flush | |
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 |