CN107885456B - 减少io命令访问nvm的冲突 - Google Patents

减少io命令访问nvm的冲突 Download PDF

Info

Publication number
CN107885456B
CN107885456B CN201610868432.3A CN201610868432A CN107885456B CN 107885456 B CN107885456 B CN 107885456B CN 201610868432 A CN201610868432 A CN 201610868432A CN 107885456 B CN107885456 B CN 107885456B
Authority
CN
China
Prior art keywords
command
die
write
write command
mapping module
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
CN201610868432.3A
Other languages
English (en)
Other versions
CN107885456A (zh
Inventor
孙清涛
路向峰
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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201610868432.3A priority Critical patent/CN107885456B/zh
Publication of CN107885456A publication Critical patent/CN107885456A/zh
Application granted granted Critical
Publication of CN107885456B publication Critical patent/CN107885456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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]

Abstract

本发明公开一种减少IO命令访问NVM的冲突的方法,包括:响应于收到写命令,从指定管芯或逻辑单元分配物理地址;将所述写命令的数据写入所述物理地址。其中,指定管芯或逻辑单元是固态存储设备中的部分管芯或逻辑单元,使得仅在固态存储设备的指定管芯或逻辑单元写入数据,从而在固态存储设备的其他管芯或逻辑单元,读命令不会被写命令阻塞。

Description

减少IO命令访问NVM的冲突
技术领域
本发明涉及存储领域,更具体地,涉及调整读写命令的优先顺序从而提高服务质量的技术。
背景技术
以固态存储设备(Solid Storage Device,SSD)为例,如图1所示,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址分配、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO命令。控制部件104还耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Ena ble)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Docu ments/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND F lash Interface Specification(Revision 3.0)”中,提供了关于目标(tar get)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
在处理来自主机的读命令时,SSD利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,SSD为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。
固态存储设备包括多个管芯(DIE)或多个逻辑单元(LUN)。管芯或逻辑单元之间可以并行响应读写操作。以管芯(DIE)为例,在同一管芯上的多个读、写或擦除操作顺序执行。
发明内容
闪存的读操作延迟要明显小于写延迟,同时在一个存储单元结构中(Die),读操作、写操作与擦除操作必须串行操作。也就是说,读操作可能需要等待对同一个DIE的写操作或擦除操作完成之后才能被处理。
这会引起读命令的延迟受到写命令的影响,导致读命令延迟增长明显。对于读延迟敏感的业务来说,服务质量也会受到明显的影响。
特别是在高并发环境下,在SSD上有上百甚至数千的IO命令在处理。而SSD中的管芯数量一般在不超过几百个,因而在同一管芯上有较大概率会存在两个或更多的IO操作。此时,被写操作阻塞的读操作的延迟明显增加。
根据本发明的第一方面,提供一种处理IO命令的方法,包括:确定多个IO命令中的第一IO命令相对于第二IO命令是否为低延迟IO命令;如果所述第一IO命令相对于第二IO命令为低延迟IO命令,则优先地对所述第一IO命令做出响应。
根据本发明的一个实施方式,如果所述第一IO命令为读命令,第二IO命令为非读命令,则确定所述第一IO命令为低延迟命令。
根据本发明的一个实施方式,如果所述第一IO命令中的标签指示所述第一IO命令处于低延迟模式,或者所述第一IO命令访问指定命名空间,则确定所述第一IO命令为低延迟命令。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括:优先地执行所述第一IO命令,而无论是否在收到所述第一IO命令之前收到所述第二IO命令。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括:如果所述第二IO命令正在执行,则将所述第二IO命令的执行挂起,并执行所述第一IO命令。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括:将所述第一IO命令归入高优先级IO命令集合,其中,相对于处于所述高优先级IO命令集合之外的IO命令,所述高优先级IO命令集合中的IO命令被优先地响应。
根据本发明的一个实施方式,优先地对所述第一IO命令集合做出响应包括:仅在特定情况满足时,才执行所述第二IO命令,否则停止所述第二IO命令的执行。
根据本发明的一个实施方式,仅在特定时间段内执行所述第二IO命令。
根据本发明的一个实施方式,当所述第二IO命令的执行达到特定数据量之后,则停止所述第二IO命令的执行。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括:从指定的管芯或逻辑单元分配物理地址,以及将所述第二IO命令的数据写入所述物理地址,其中指定的管芯或逻辑单元是存储设备中的部分管芯或逻辑单元。
根据本发明的一个实施方式,还包括:将指定的管芯或逻辑单元变更为第二管芯或第二逻辑单元,使得响应于所述第二IO命令,从所述第二管芯或第二逻辑单元分配物理地址。
根据本发明的一个实施方式,还包括:由指定的处理器来处理所述第二IO命令,所述处理器同所述指定的管芯或逻辑单元相关联。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括,选择负载低的处理器来处理所述第一IO命令。
根据本发明的一个实施方式,优先地对所述第一IO命令做出响应包括,选择处理能力强的处理器来处理所述第一IO命令。
根据本发明的一个实施方式,所述第二命令包括写命令、擦除命令、编程命令中的一种或多种。
根据本发明的第二方面,提供一种访问缓存信息的设备,包括:第一装置,用于确定多个IO命令中的第一IO命令相对于第二IO命令是否为低延迟IO命令;第二装置,用于如果所述第一IO命令相对于第二IO命令为低延迟IO命令,则优先地对所述第一IO命令做出响应。
根据本发明第三方面,提供了一种用于调度DIE/LUN上的读写操作的方法,包括:响应于收到写命令,从指定管芯或逻辑单元分配物理地址;将写命令的数据写入物理地址。其中,指定管芯或逻辑单元是固态存储设备中的部分管芯或逻辑单元,使得仅在固态存储设备的指定管芯或逻辑单元写入数据,从而在固态存储设备的其他管芯或逻辑单元,读命令不会被写命令阻塞。
响应于收到写命令,从指定管芯或逻辑单元分配物理地址;记录所述写命令的逻辑地址与所述物理地址的对应关系;将所述写命令的数据写入所述物理地址;以及其中所述指定管芯或逻辑单元是存储设备中的部分管芯或逻辑单元,使得仅在存储设备的指定管芯或逻辑单元写入数据,而从所述存储存储设备的所有管芯或逻辑单元读取数据。
根据本发明的一个实施方式,进一步包括:响应于满足指定条件,停止在所述存储设备的指定管芯或逻辑单元上写入数据。
根据本发明的一个实施方式,进一步包括,将所述指定管芯或逻辑单元变更为第二管芯或第二逻辑单元以供写入数据。
根据本发明的一个实施方式,如果向所述指定管芯或逻辑单元写入的数据达到第一阈值,则满足指定条件。
根据本发明的一个实施方式,如果所述指定管芯或逻辑单元接收写入数据的时间达到第二阈值,则满足指定条件。
根据本发明的一个实施方式,如果所述指定管芯或逻辑单元中空闲管芯或逻辑单元低于第三阈值,则满足指定条件。
根据本发明的一个实施方式,如果如果向所述指定管芯或逻辑单元写入数据的次数达到第四阈值,则满足指定条件。
根据本发明的一个实施方式,还包括,响应于收到写命令,选择第一处理器来处理写命令,所述第一处理器同所述指定管芯或逻辑单元相关联;以及所述第一处理器从与其相关联的指定管芯或逻辑单元为写命令分配物理地址。
根据本发明的一个实施方式,改变同所述第一处理器相关联的管芯或逻辑单元。
根据本发明的一个实施方式,还包括:响应于收到写命令,生成包括所述物理地址的写入操作,将所述写入操作添加到低优先级队列;响应于收到读命令,生成读操作,将所述读操作添加到高优先级队列;以及优先地处理所述高优先级队列中的操作。
根据本发明的一个实施方式,还包括:响应于收到对低延迟模式的指示,仅在指定管芯或逻辑单元来承载写命令。
根据本发明的一个实施方式,还包括:响应于收到读命令,基于所述读命令中的低延迟模式标签,仅在指定管芯或逻辑单元来承载写命令。
根据本发明第四方面,提供一种处理IO命令的方法,包括:第一装置,用于响应于收到写命令,从指定管芯或逻辑单元分配物理地址;第二装置,用于记录所述写命令的逻辑地址与所述物理地址的对应关系;第三装置,用于将所述写命令的数据写入所述物理地址;以及其中所述指定管芯或逻辑单元是存储设备中的部分管芯或逻辑单元,使得仅在存储设备的指定管芯或逻辑单元写入数据,而从所述存储存储设备的所有管芯或逻辑单元读取数据。
根据本发明的第五方面,提供一种固态驱动器,包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述固态驱动器执行上面所述的方法。
根据本发明的第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备执行上面所述的方法。
本发明的提供的技术方案能够降低或消除读操作的延迟,提高SSD读的服务质量。
附图说明
图1示出了现有技术的存储设备的框图。
图2A示出了根据本发明一个示例性实施方式的流程图。
图2B是根据本发明实施例的固态存储设备的控制部件的框图。
图3示出了根据本发明一个实施方式的为IO命令分配管芯或逻辑单元的示意图。
图4示出了根据本发明一个实施方式的调整接收写命令的管芯或逻辑单元的示意图。
图5示出了根据本发明另一个方面的调度管芯或逻辑单元上的IO命令的方法流程图。
图6示出了根据本发明一个实施方式的地址映射的示意性框图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述。需要理解的是,本公开中“第一”、“第二”仅用于指示对象,而并不用于限制数量和/或顺序。
图2示出了根据本发明一个示例性实施方式的流程图。如图2所示,本发明提供的IO命令处理的方法包括:在步骤S210,确定多个IO命令中的第一IO命令相对于第二IO命令是否为低延迟IO命令;在步骤S220,如果第一IO命令相对于第二IO命令为低延迟IO命令,则优先地对第一IO命令做出响应。
通常,IO命令包括多种类型。IO命令可以是主机发送的读命令和/或写命令。也可以是固态驱动器的闪存管理模块发送给接口控制器的读命令、编程命令和/或擦除命令。
在这些IO命令中,写命令、擦除命令和编程命令均会更新所访问的NVM芯片所存储的数据,而读命令并不会对数据产生修改或更新。在根据本发明的实施例中,可以将读命令指定为低延迟IO命令,以希望固态存储设备以较低的延迟处理此类IO命令。具有较低的延迟指此类IO命令的平均处理延迟低于其他IO命令(诸如写命令、擦除命令,也包括未被指定为低延迟读命令),或者超过一定百分比(例如,99.99%)的此类IO命令的处理延迟小于指定阈值(例如,100us)。
根据本发明的另一实施方式,一个IO命令是否为低延迟命令,可以通过IO命令中包含的标签来指示。例如,可以设置IO命令中的标签,使得其指示该IO命令为低延迟命令。在另一个例子中,为固态存储设备设置工作模式。在低延迟工作模式中,将读命令视为需要低延迟的IO命令。与低延迟模式相对的是普通工作模式。通过专用的管理命令为固态存储设备设置工作模式,或者响应于接收到带有标签的IO命令,依据标签将固态存储设备设置为低延迟工作模式。在依然另一个例子中,通过命令为固态存储设备设置IO延迟阈值(例如,100us)和/或IO延迟的百分比(例如,99.99%),从而固态存储设备需要使超过IO延迟的百分比的IO命令的延迟在IO延迟阈值之下。
作为另一个实施方式,如果一个IO命令,优选地为读命令,访问指定的命名空间,则也可以将其确定为低延迟命令。由此,为不同的命名空间指定不同的工作模式,使得访问一些命名空间的IO命令,同访问另一些命名空间的IO命令相比,是低延迟命令。
图2B是根据本发明实施例的固态存储设备的控制部件的框图。SSD的控制部件104中包括主机接口210、前端处理模块220、闪存管理模块230以及一个或多个接口控制器。主机接口210用于同主机交换命令与数据。闪存管理模块230提供逻辑地址到物理地址映射、磨损均衡等功能,并生成IO命令发送给接口控制器。接口控制器耦合到NVM芯片105。接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。接口控制器接收IO命令,并根据IO命令向NVM芯片发出读/写请求。在一个例子中,接口控制器提供具有不同优先级的多个队列(队列242与队列244,其中队列242是高优先级队列而队列244是低优先级队列)来接收IO命令。闪存管理模块230将低延迟读命令填入接口控制器的高优先级队列,使接口控制器优先处理低延迟读命令。而将写命令和/或其他读命令填入接口控制器的低优先级队列。接口控制器会优先处理高优先级队列242中的命令,而以低优先级处理队列244中的命令。
根据本发明的实施方式,接口控制器可以采用多种方式来优先地对读命令做出响应。
根据一个实施方式,无论是否在收到写命令之前收到读命令,都优先地执行读命令。例如,写命令在t1时刻被接收到,而在t1时刻之后的t2时刻接收到读命令,此时,由于读命令具有较高的优先级,因此将先执行该读命令,从而降低读命令的处理延迟。
根据另一个实施方式,如果接口控制器发现在NVM芯片或管芯上写命令正在执行,而此时接收到对相同NVM芯片或管芯的读命令,则将正在执行的写命令挂起,并执行该读命令。通过此方式,写命令的执行将被读命令的执行中断,并且读命令在写命令中断期间被优先地执行,直到该读命令执行完毕,写命令才恢复执行,从而降低了读命令的延迟。进一步地,恢复执行的写命令可以被再次挂起,来执行另一个读命令。
作为依然另一个实施方式,由闪存管理模块230生成对写命令的挂起命令。对于读命令,在根据FTL表获得要访问的物理地址后,若发现该物理地址所对应的NVM芯片或管芯上有正在执行的写命令(或擦除命令),则生成对写命令的挂起命令,。接下来,向生成对该NVM芯片或管芯的读命令。从而NVM芯片或管芯优先地服务于读命令。从而减小读命令的处理延迟。
根据又一个实施方式,将读命令归入高优先级IO命令集合,由此,相对于处于高优先级IO命令集合之外的IO命令,高优先级IO命令集合中的IO命令被优先地响应。通过此方式,可以将多个读命令设置到具有高优先级的集合中,从而该集合中的所有IO命令均优先于该集合之外的其他IO命令。可以理解的是,也可以将其他IO命令,例如特定的写命令,编程命令等加入到该集合中,从而也能够优先地得到执行。
还可以通过对写命令和/或擦除命令的限制来实现对读命令的优先执行。
根据本发明的一个实施方式,仅在特定时间段内执行该写命令。例如,当对写命令的执行时间超过指定值之后,暂停对写命令的执行,从而将固态存储设备的全部资源用于执行读命令。换言之,可以定期或不定期地停止对写命令的执行,从而留出更多的处理能力来执行读命令,由此降低了读命令的延迟。该时间段可以根据实际情况来设置,也可以定期的调整。
根据本发明的又一个实施方式,在时间片内对写命令的执行达到特定数据量之后,停止对写命令的执行。例如,在写命令写入的数据达到一定数量或处理了指定数量的写命令之后,则停止对写命令的执行。由此留出更多的处理能力来执行读命令。由此降低了读命令的延迟。该数据量可以根据实际情况来设定,也可以定期调整。
另一方面,还可以通过改变IO命令所针对的管芯(DIE)或者逻辑单元(LUN)来调整IO命令的优先级。
根据本发明的一个实施方式,从指定的管芯或逻辑单元分配物理地址,并且将写命令的数据写入所分配的物理地址,其中指定的管芯或逻辑单元是存储设备中的部分而不是全部的管芯或逻辑单元。
图3示出了根据本发明一个实施方式的为IO命令分配管芯或逻辑单元的示意图。
如图3所示,固态存储设备存在多个DIE/LUN,可以从每个DIE/NVM分配物理地址以供写命令写入数据。在这些DIE/NVM中,仅将部分的DIE/NVM分配给写命令以承载写入数据。在图3中,示例性地将DIE/LUN 1和DIE/LUN 2分配给写命令,而所有的DIE/NVM均承载读命令。
在根据图3中的实施例中,仅有一部分DIE/LUN承担写命令,而所有DIE/LUN均可进行读命令。由此降低了固态存储设备中读命令被写命令阻塞的几率,从而降低了读命令的平均处理延迟。
在根据本发明的实施例中,还可以动态地调整用来承载写命令DIE/LUN。
根据本发明的一个实施方式,将指定的承载写命令的DIE/LUN变更为另一个或多个DIE/LUN,从而在该新指定的DIE/LUN上为写命令分配物理地址。
图4示出了根据本发明一个实施方式的调整接收写命令的管芯或逻辑单元的示意图。
如图4所示,控制部件104耦合到多个DIE/LUN。写命令最初由DIE/LUN 410来承载,响应于满足指定条件,停止在所述存储设备的指定管芯或逻辑单元上写入数据。例如DIE/LUN 410上的IO命令负载提升而导致读命令的延迟增加,或者由DIE/LUN 410承载的写命令的数量或数据量已经达到一定阈值,或者DIE/NVM410的空闲存储空间的数量小于阈值,从而将接收写命令DIE/LUN调整为DIE/LUN 420。通过动态地调整承载写命令的DIE/LUN,可以有效地降低读命令的处理延迟。
上面所述的指定条件可以是多种条件。根据本发明的一个实施方式,该指定条件可以包括向所述指定管芯或逻辑单元写入的数据达到第一阈值,即超过该阈值,则停止继续在上述管芯或逻辑单元上写入数据。
该指定条件还可以是所述指定管芯或逻辑单元接收写入数据的时间达到第二阈值。在此条件下,每隔特定时间,则停止在这些指定的管芯或逻辑单元上继续写入数据,从而为读命令留出更多的时间和带宽。该指定条件还可以是所述指定管芯或逻辑单元中空闲存储空间低于第三阈值。根据本发明的一个实施方式,指定条件还可以包括向所述指定管芯或逻辑单元写入数据的次数达到第四阈值。上述中的第一至第四阈值可以根据实际情况,由本领域技术人员进行相应的选择或设置,从而满足实际的需求。
在依然另一个例子中,为了提升对读命令的处理速度,降低读命令的处理延迟,选择负载较低或者处理能力较强的处理器来处理读命令。这将导致读命令被以较高的速度或者带宽来处理,从而降低了读命令的延迟。
图5示出了根据本发明另一个实施例的调度管芯或逻辑单元上的IO命令的方法流程图。
如图5所示,为处理写命令,在步骤S510,响应于收到写命令,从指定管芯或逻辑单元分配物理地址;在步骤S530,将写命令的数据写入物理地址。其中,指定管芯或逻辑单元是固态存储设备中的部分管芯或逻辑单元,使得仅在固态存储设备的指定管芯或逻辑单元写入数据,从而在固态存储设备的其他管芯或逻辑单元,读命令不会被写命令阻塞。
可选地,分配物理地址后,还记录写命令的逻辑地址与物理地址的对应关系。
以及周期性地或在指定条件下,变更指定的管芯或逻辑单元。从而在一段时间内,由指定的部分管芯或逻辑单元承载写命令,而在更长的时间段或固态存储设备的生命周期内,所有的管芯或逻辑单元均承载写命令。以及在一段时间内,由全部的管芯或逻辑单元均可能承载读命令。
图6示出了根据本发明由一个实施方式的调整接收写命令的管芯或逻辑单元的示意图。
如图6所示,固态存储设备的控制部件604中包括地址映射模块1和地址映射模块2,这些地址映射模块均耦合到不同的DIE/LUN。在图6中,地址映射模块1关联于逻辑单元组1与逻辑单元组2,地址映射模块2关联于逻辑单元组3和逻辑单元组4。每个逻辑单元组中包括多个逻辑单元。可选地,地址映射模块关联到由多个管芯组成的管芯组。地址映射模块仅从与其关联的逻辑单元组分配物理地址。
对于写命令,前端处理模块620将写命令指派给地址映射模块1处理地址映射模块1从逻辑单元组1或逻辑单元组2中为写命令分配物理地址。对于读命令,前端处理模块620将读命令分配给地址映射模块1与地址映射模块2的任何一个。作为举例,前端处理模块620依据读命令所访问的逻辑地址将读命令指派给地址映射模块之一。需要理解地,地址映射模块可以有多个。每个地址映射模块仅从与其关联的逻辑单元组为写命令分配物理地址。在分配物理地址后,地址映射模块还记录写命令的逻辑地址与分配的物理地址的对应关系。从而在处理读命令时,依据读命令的逻辑地址能找到对应的物理地址。
在另一个例子中,地址映射模块通过FTL表能通过读命令的逻辑地址提供对应的物理地址。前段处理模块620将写命令仅分配给地址映射模块1来处理,而将读命令分配给地址映射模块1和2来进行处理。
进一步地,由于地址映射模块1承担了写命令,使地址映射模块2更多承担读命令,以平衡两个地址映射模块的负载。更进一步地,向地址映射模块1和2分派IO命令时,基于地址映射模块的负载或性能分配。向负载低的地址映射模块分派读命令,或者向性能好的地址映射模块分派读命令。
周期性地,或者在指定条件下改变地址映射模块与逻辑单元组的关联关系。例如,在已经由地址映射模块1承担了指定数量的写命令和/或指定量的写入数据,将地址映射模块1变更为关联到逻辑单元组3和/或逻辑单元组4,使得地址映射模块1从逻辑单元组3和/或逻辑单元组4分配物理地址。以及使地址映射模块关联于逻辑单元组1和/或逻辑单元组2。
作为依然另一个例子,周期性地,或者在指定条件下改变承担写命令的地址映射模块。例如,前端处理模块620将写命令指派给地址映射模块2来处理。
作为举例,地址映射模块是一个或多个处理器。
本发明的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、应用专用集成电路(ASIC)等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现根据本发明实施例所提供的方法。
例如,本发明可以实施为固态驱动器,该固态驱动器可以包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述固态存储设备执行根据本发明实施例所提供的方法。
本发明的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备执行根据本发明实施例所提供的方法。
上面的描述仅仅是对本发明示例性而非穷尽式的描述,本领域技术人员可以对上述方法、设备、装置、模块等进行添加,删减、修改、替换等等,而并不脱离本发明的实质和保护范围。

Claims (10)

1.一种减少IO命令访问NVM的冲突的方法,包括:
响应于收到写命令,将所述写命令指派给第一地址映射模块,第一地址映射模块仅从同其关联的逻辑单元组分配物理地址,在分配物理地址后,第一地址映射模块还记录写命令的逻辑地址与分配的物理地址的对应关系,其中逻辑单元组包括多个逻辑单元;
将所述写命令的数据写入所述物理地址;
响应于收到读命令,将所述读命令指派给第一地址映射模块与第二地址映射模块的任何一个;
其中还包括,周期性地或在指定条件下改变地址映射模块与逻辑单元组的关联关系。
2.根据权利要求1所述的方法,进一步包括:
响应于满足指定条件,停止在存储设备的指定管芯或逻辑单元上写入数据。
3.根据权利要求2所述的方法,进一步包括,将所述指定管芯或逻辑单元变更为第二管芯或第二逻辑单元以供写入数据。
4.根据权利要求2或3所述的方法,其中,
如果向所述指定管芯或逻辑单元写入的数据达到第一阈值,则满足指定条件;或者
如果所述指定管芯或逻辑单元接收写入数据的时间达到第二阈值,则满足指定条件;或者
如果所述指定管芯或逻辑单元中空闲管芯或逻辑单元低于第三阈值,则满足指定条件;或者
如果向所述指定管芯或逻辑单元写入数据的次数达到第四阈值,则满足指定条件。
5.根据权利要求1所述的方法,还包括,
响应于收到写命令,选择第一处理器来处理写命令,所述第一处理器同指定管芯或逻辑单元相关联;以及所述第一处理器从与其相关联的指定管芯或逻辑单元为写命令分配物理地址。
6.根据权利要求5所述的方法,还包括:
改变同所述第一处理器相关联的管芯或逻辑单元。
7.根据权利要求6所述的方法,还包括:
响应于收到写命令,生成包括所述物理地址的写入操作,将所述写入操作添加到低优先级队列;
响应于收到读命令,生成读操作,将所述读操作添加到高优先级队列;以及
优先地处理所述高优先级队列中的操作。
8.根据权利要求7所述的方法,还包括:
响应于收到对低延迟模式的指示,仅在指定管芯或逻辑单元来承载写命令;或者
响应于收到读命令,基于所述读命令中的低延迟模式标签,仅在指定管芯或逻辑单元来承载写命令。
9.一种减少IO命令访问NVM的冲突的设备,包括:
第一装置,用于响应于收到写命令,将所述写命令指派给第一地址映射模块,第一地址映射模块仅从同其关联的逻辑单元组分配物理地址,在分配物理地址后,第一地址映射模块还记录写命令的逻辑地址与分配的物理地址的对应关系,其中逻辑单元组包括多个逻辑单元;
第二装置,用于将所述写命令的数据写入所述物理地址;
第三装置,用于响应于收到读命令,将所述读命令指派给第一地址映射模块与第二地址映射模块的任何一个;
第四装置,用于周期性地或在指定条件下改变地址映射模块与逻辑单元组的关联关系。
10.一种固态驱动器,包括:
一个或者多个处理器;
存储器;
存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述固态驱动器执行权利要求1-8中任意一项所述的方法。
CN201610868432.3A 2016-09-29 2016-09-29 减少io命令访问nvm的冲突 Active CN107885456B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610868432.3A CN107885456B (zh) 2016-09-29 2016-09-29 减少io命令访问nvm的冲突

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610868432.3A CN107885456B (zh) 2016-09-29 2016-09-29 减少io命令访问nvm的冲突

Publications (2)

Publication Number Publication Date
CN107885456A CN107885456A (zh) 2018-04-06
CN107885456B true CN107885456B (zh) 2022-09-16

Family

ID=61769953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610868432.3A Active CN107885456B (zh) 2016-09-29 2016-09-29 减少io命令访问nvm的冲突

Country Status (1)

Country Link
CN (1) CN107885456B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110568991B (zh) * 2018-06-06 2023-07-25 北京忆恒创源科技股份有限公司 降低锁引起的io命令冲突的方法与存储设备
CN110580227B (zh) * 2018-06-07 2024-04-12 北京忆恒创源科技股份有限公司 自适应nvm命令生成方法与装置
US10606516B2 (en) * 2018-08-01 2020-03-31 Hewlett Packard Enterprise Development Lp Systems and methods for I/O prioritization in NVMe-compliant storage devices
US11372580B2 (en) * 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
CN109407978B (zh) * 2018-09-27 2020-07-28 清华大学 高并发索引b+链表数据结构的设计与实现方法
CN110989918B (zh) * 2018-10-03 2023-03-28 慧荣科技股份有限公司 写入控制方法以及数据存储装置及其控制器
CN111290975A (zh) * 2018-12-07 2020-06-16 北京忆恒创源科技有限公司 使用统一缓存处理读命令与预读命令的方法及其存储设备
CN109783398B (zh) * 2019-01-18 2020-09-15 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
CN112015527B (zh) * 2019-05-29 2024-03-22 闪迪技术有限公司 管理从提交队列获取和执行命令
CN111124962B (zh) * 2019-11-13 2021-06-29 苏州浪潮智能科技有限公司 一种基于服务器pch和bmc的tf卡槽复用方法及系统
CN111261206B (zh) 2020-01-17 2022-03-08 苏州浪潮智能科技有限公司 一种读写方法、装置和电子设备及可读存储介质
US20220413719A1 (en) * 2020-03-10 2022-12-29 Micron Technology, Inc. Maintaining queues for memory sub-systems
CN114546245A (zh) * 2020-11-18 2022-05-27 北京忆恒创源科技股份有限公司 利用zns标准实现透明压缩的方法及其设备
CN112817533A (zh) * 2021-01-29 2021-05-18 深圳忆联信息系统有限公司 Ssd管理方法、装置计算机设备及存储介质
CN113076066B (zh) * 2021-04-14 2023-12-08 湖南兴天电子科技股份有限公司 大容量高速存储设备及其运行方法
CN114489488A (zh) * 2021-12-29 2022-05-13 山东云海国创云计算装备产业创新中心有限公司 数据读写方法、nand控制器及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929748A (zh) * 2012-11-08 2013-02-13 华为技术有限公司 数据备份方法及装置
CN103049390A (zh) * 2012-12-14 2013-04-17 华为技术有限公司 应用元数据的数据处理方法及存储系统
CN103150261A (zh) * 2013-03-11 2013-06-12 北京忆恒创源科技有限公司 用于同时访问多个固态盘的方法与装置
CN105867844A (zh) * 2016-03-28 2016-08-17 联想(北京)有限公司 一种命令控制方法及存储设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719103B (zh) * 2009-11-25 2012-07-18 成都市华为赛门铁克科技有限公司 基于存储设备的信息处理方法以及存储设备
CN102651009B (zh) * 2011-02-28 2014-09-24 国际商业机器公司 一种存储系统中检索数据的方法和设备
US9639466B2 (en) * 2012-10-30 2017-05-02 Nvidia Corporation Control mechanism for fine-tuned cache to backing-store synchronization
JP2016506585A (ja) * 2013-01-08 2016-03-03 ヴァイオリン メモリー インコーポレイテッド データストレージのための方法及びシステム
CN104090847B (zh) * 2014-06-25 2017-01-11 华中科技大学 一种固态存储设备的地址分配方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929748A (zh) * 2012-11-08 2013-02-13 华为技术有限公司 数据备份方法及装置
CN103049390A (zh) * 2012-12-14 2013-04-17 华为技术有限公司 应用元数据的数据处理方法及存储系统
CN103150261A (zh) * 2013-03-11 2013-06-12 北京忆恒创源科技有限公司 用于同时访问多个固态盘的方法与装置
CN105867844A (zh) * 2016-03-28 2016-08-17 联想(北京)有限公司 一种命令控制方法及存储设备

Also Published As

Publication number Publication date
CN107885456A (zh) 2018-04-06

Similar Documents

Publication Publication Date Title
CN107885456B (zh) 减少io命令访问nvm的冲突
US11669277B2 (en) Latency-based scheduling of command processing in data storage devices
US9058208B2 (en) Method of scheduling tasks for memories and memory system thereof
AU2015258208B2 (en) Resource allocation and deallocation for power management in devices
US20200089537A1 (en) Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
US9009397B1 (en) Storage processor managing solid state disk array
US20180150242A1 (en) Controller and storage device for efficient buffer allocation, and operating method of the storage device
KR101687762B1 (ko) 저장 장치 및 그것의 커맨드 스케줄링 방법
US20220350655A1 (en) Controller and memory system having the same
US20180365079A1 (en) Cooperative data migration for storage media
WO2018024214A1 (zh) Io流调节方法与装置
US11429314B2 (en) Storage device, storage system and operating method thereof
CN107885667B (zh) 降低读命令处理延迟的方法与装置
TWI786288B (zh) 儲存裝置、儲存裝置的控制方法及記錄媒體
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
CN107688435B (zh) Io流调节方法与装置
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
KR20180133730A (ko) 스토리지 시스템 및 이의 동작 방법
CN107766262B (zh) 调节并发写命令数量的方法与装置
US20220083222A1 (en) Storage device and control method
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
CN110568991B (zh) 降低锁引起的io命令冲突的方法与存储设备
CN111176826A (zh) 基于资源分配优化的命令处理方法
KR20220145698A (ko) PCIe 장치 및 그 동작 방법
CN117632255A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302 / 303 / 305 / 306 / 307, 3rd floor, B-2, Zhongguancun Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant