CN106469126A - 处理io请求的方法及其存储控制器 - Google Patents
处理io请求的方法及其存储控制器 Download PDFInfo
- Publication number
- CN106469126A CN106469126A CN201510493056.XA CN201510493056A CN106469126A CN 106469126 A CN106469126 A CN 106469126A CN 201510493056 A CN201510493056 A CN 201510493056A CN 106469126 A CN106469126 A CN 106469126A
- Authority
- CN
- China
- Prior art keywords
- request
- relief area
- parallel unit
- read
- erasing
- 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.)
- Granted
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了处理IO请求的方法及其存储控制器。提供的处理IO请求的方法,用于向多个存储器的多个并行单元分发IO请求,其中,为每个并行单元提供IO请求缓冲区,所述IO请求缓冲区包括读请求缓冲区、写请求缓冲区以及擦除请求缓冲区;该方法包括:接收IO请求,基于IO请求对应的物理地址以及访问类型,将IO请求填入该物理地址和访问类型对应的并行单元的IO请求缓冲区,所述访问类型包括读请求、写请求以及擦除请求;从IO请求缓冲区之一中读出IO请求;根据读出的IO请求访问并行单元。
Description
技术领域
本发明涉及电子设备,更具体地,本发明涉固态硬盘处理IO请求的方法以及用于存储设备的存储控制器。
背景技术
参看图1,以固态存储设备(Solid Storage Device,SSD)作为电子设备的举例,图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SCSI、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)存储芯片105以及固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SCSI、iSCSI、Inifiband、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM存储芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM等。固件用于提供电子设备底层功能,诸如BIOS、操作系统加载等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,LogicUnit Number)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
公开号为CN102177556A的中国专利申请公开了一种闪存转换层(FTL)。参看图2,其展示了用于FTL的并行单元的查找表的例子。由于闪存芯片中的逻辑单元(Logic Unit)可以并行方式存取,因而,并行单元可以是一逻辑单元。逻辑单元内可包括多个平面(Plane),并行单元也可为一平面。在一个例子中,固态驱动器包括8个信道(channel)(也称为“通道”)。每个通道上包括多个闪存芯片。通过图2中提供的查找表,将0-31的并行单元编号,映射到特定的通道、芯片启用(也称为“使能”)信号、逻辑单元以及平面。
MLC(Multi-Level Cell,多级单元)NVM是在每个存储单元中能够存储至少两比特信息的非易失性存储器。同SLC(Single Level Cell)NVM相比,具有存储容量大,成本低的特点,但存储的可靠性不如SLC。
中国专利文献CN101710252B中公开了避免意外断电时存储设备的缓冲存储器中的数据丢失的方案。其中,在存储设备中提供备用电源,当发生意外断电时,由备用电源向存储设备提供临时的电能,用于将缓冲存储器(Cache)中的数据转存到闪存中。
发明内容
本发明的一个目的在于提供将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请求的方法,提供了根据本发明第一方面的第十一处理IO请求的方法,其中所述IO请求缓冲区还包括写日志请求缓冲区,所述写日志请求缓冲区的优先级高于所述读请求缓冲区;以及其中所述IO请求的类型还包括写日志请求。
根据本发明第一方面的第二、第四至第七、第十一处理IO请求的方法,提供了根据本发明第一方面的第十二处理IO请求的方法,其中所述IO请求缓冲区还包括写日志请求缓冲区,以及其中所述IO请求的类型还包括写日志请求;所述方法还包括:响应于接收到关闭或掉电消息,将所述写日志请求缓冲区的优先级设置为高于所述读请求缓冲区。
根据本发明第一方面的第十、第十二处理IO请求的方法,提供了根据本发明第一方面的第十三处理IO请求的方法,其中响应于接收到关闭或掉电消息;所述方法还包括:屏蔽读请求、读重做请求以及擦除请求。
根据本发明第一方面的前述处理IO请求的方法,提供了根据本发明第一方面的第十四处理IO请求的方法,其中响应于接收到关闭或掉电消息;所述方法还包括:屏蔽(停止处理)读请求以及擦除请求。
根据本发明第一方面的前述处理IO请求的方法,提供了根据本发明第一方面的第十五处理IO请求的方法,还包括:响应于第一读请求出错,生成第二读请求,用于读取所述第一读请求对应的物理地址所对应的RAID组中的其他数据。
根据本发明第一方面的第十五处理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请求的类型还包括写日志请求;所述处理电路还响应于接收到关闭或掉电消息,将所述写日志请求缓冲区的优先级设置为高于所述读请求缓冲区。
根据本发明第二方面的第十、第十二存储控制器,提供了根据本发明第二方面的第十三存储控制器,其中响应于接收到关闭或掉电消息,所述通道控制器或所述处理电路停止处理(屏蔽)读请求、读重做请求以及擦除请求。
根据本发明第二方面的前述存储控制器,提供了根据本发明第二方面的第十四存储控制器,其中响应于接收到关闭或掉电消息;所述通道控制器或所述处理电路屏蔽(停止处理)读请求以及擦除请求。
根据本发明第二方面的前述存储控制器,提供了根据本发明第二方面的第十五存储控制器,其中所述通道控制器或所述处理电路响应于第一读请求出错,生成第二读请求,用于读取所述第一读请求对应的物理地址所对应的RAID组中的其他数据。
根据本发明第二方面的第十五存储控制器,提供了根据本发明第二方面的第十六存储控制器,还包括:所述处理电路基于所述第二读请求对应的物理地址,将所述第二读请求填入所述第二读请求的物理地址对应的并行单元的读请求缓冲区,以及将所述读请求缓冲区的优先级设置为最高优先级。
根据本发明第二方面的第十五存储控制器,提供了根据本发明第二方面的第十七存储控制器,还包括:所述处理电路基于所述第二读请求对应的物理地址,将所述第二读请求填入所述第二读请求的物理地址对应的并行单元的读请求缓冲区,以及将所述读请求缓冲区的优先级设置为仅低于所述写日志请求缓冲区的优先级。
根据本发明第二方面的第十五至第十七存储控制器,提供了根据本发明第二方面的第十八存储控制器,还包括:所述通道控制器根据所述第二读请求访问并行单元。
根据本发明的第三方面,提供了根据本发明第三方面的第一处理IO请求的装置,用于向多个存储器的多个并行单元分发IO请求,其中,为每个并行单元提供IO请求缓冲区,所述IO请求缓冲区包括读请求缓冲区、写请求缓冲区以及擦除请求缓冲区;所述装置包括:接收模块,用于接收IO请求;缓冲区填充模块,用于基于IO请求对应的物理地址以及访问类型,将IO请求填入该物理地址和访问类型对应的并行单元的IO请求缓冲区,所述访问类型包括读请求、写请求以及擦除请求;读取模块,用于从IO请求缓冲区之一中读出IO请求;并行单元访问模块,用于根据读出的IO请求访问并行单元。
根据本发明第四方面,提供了一种计算机,包括:用于存储程序指令的机器可读存储器;用于执行存储在所述存储器中的程序指令的一个或多个处理器;所述程序指令用于使所述一个或多个处理器执行根据本发明第一方面提供的多种方法之一。
根据本发明的第五方面,提供了一种程序,其使得计算机执行根据本发明的第一方面而提供的多种方法之一。
根据本发明的第六方面,提供了一种在其上具有所记录的程序的计算机可读存储介质,其中所述程序使得计算机执行根据本发明的第一方面而提供的多种方法之一。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是现有技术的存储设备的方框图;
图2展示了用于FTL的并行单元的查找表;
图3展示了根据本发明实施例的存储控制器的方框图;
图4展示了根据本发明实施例的缓冲区;
图5展示了根据本发明又一实施例的存储控制器的方框图;
图6展示了根据本发明实施的处理IO请求的方法的流程图;
图7展示了根据本发明又一实施例的处理IO请求的方法的流程图;
图8展示了根据本发明另一实施例的处理IO请求的方法的流程图;
图9展示了根据本发明依然另一实施例的处理IO请求的方法的流程图;以及
图10展示了根据本发明依然另一个实施例的处理IO请求的方法的流程图。
具体实施方式
图3展示了根据本发明实施例的存储控制器的方框图。存储控制器包括接口310,用于接收IO请求。IO请求可以是写请求、读请求、擦除请求。在进一步的例子中,IO请求还可以是读重做请求,写日志请求。存储控制器还包括一个或多个通道控制器。在图3的例子中,存储控制器包括通道控制器330、通道控制器332、通道控制器334以及通道控制器336。每个通道控制器同一个闪存通道相耦合。闪存通道不属于闪存控制器的部分。在闪存通道中可布置一片或多片闪存芯片(例如闪存芯片0与闪存芯片1)。闪存芯片中包括一个或多个并行单元。
在图3的例子中,通道控制器330与闪存通道340相耦合,通过通道控制器332访问闪存通道340上的并行单元;通道控制器332与闪存通道342相耦合,通过通道控制器332访问闪存通道342上的并行单元;通道控制器334与闪存通道344相耦合,通过通道控制器334访问闪存通道344上的并行单元;通道控制器336与闪存通道346相耦合,通过通道控制器336访问闪存通道346上的并行单元。
存储控制器还提供多个缓冲区320。为所有闪存通道中的每个并行单元提供缓冲区。缓冲区用于缓存对相应的并行单元的IO请求。缓冲区可以集成在存储控制器内部,也可以在同存储控制器相耦合到的存储器中提供,在另一个例子中,在访问存储控制器的主机的内存中提供缓冲区。
根据本发明实施例的存储控制器,执行在图7-图10中展示的根据本发明实施例的处理IO请求的方法。
图4展示了根据本发明实施例的缓冲区420与缓冲区422。在图4的例子中,每个缓冲区包括读请求缓冲区、写请求缓冲区与擦除请求缓冲区,分别用于缓存读请求、写请求与擦除请求。每个缓冲区同一个并行单元L相对应,缓冲区中的读请求缓冲区、写请求缓冲区与擦除请求缓冲区分别用于缓存访问并行单元L的读请求、写请求与擦除请求。在根据本发明的另一个例子中,每个缓冲区还包括写日志请求缓冲区与读重做请求缓冲区,分别用于缓存针对同缓冲区所对应的并行单元的写日志请求与读重做请求。写日志请求是一类特殊的写请求,用于将系统运行期间产生的写日志和/或FTL表写入存储介质。读重做请求是一类特殊的读请求,当读请求失败时,可通过从存储介质中读出该读请求所对应数据所在的RAID组,从RAID组中恢复出该读请求所对应的数据。
读请求缓冲区、写请求缓冲区与擦除请求缓冲区可具有不同的访问优先级。在访问缓冲区时,依据访问优先级来选择访问读请求缓冲区、写请求缓冲区与擦除请求缓冲区中的一个或多个。在一个例子中,读请求缓冲区的访问优先级高于写请求缓冲区,写请求缓冲区的访问优先级高于擦除请求缓冲区。在另一个例子中,缓冲区中还包括写日志请求缓冲区,写日志请求缓冲区的优先级高于读请求缓冲区,读请求缓冲区的优先级高于写请求缓冲区,写请求缓冲区的优先级高于擦除请求缓冲区。在依然另一个例子中,缓冲区中还包括写日志请求缓冲区与读重做请求缓冲区,写日志请求缓冲区的优先级高于读重做请求缓冲区,读重做请求缓冲区的优先级高于读请求缓冲区,读请求缓冲区的优先级高于写请求缓冲区,写请求缓冲区的优先级高于擦除请求缓冲区。在依然又一个例子中,读请求缓冲区、写请求缓冲区与擦除请求缓冲区的访问优先级可在运行时动态调整。在进一步的例子中,对应于各个并行单元的缓冲区具有相同或不同的访问优先级。
图5展示了根据本发明又一实施例的存储控制器的方框图。存储控制器包括接口510,用于接收IO请求。存储控制器包括通道控制器530、通道控制器532、通道控制器534以及通道控制器536。每个通道控制器同一个闪存通道相耦合。闪存通道不属于闪存控制器的部分。在闪存通道中可布置一片或多片闪存芯片(例如闪存芯片0与闪存芯片1)。闪存芯片中包括一个或多个并行单元。
在图5的例子中,通道控制器530与闪存通道540相耦合,通过通道控制器532访问闪存通道540上的并行单元;通道控制器532与闪存通道542相耦合,通过通道控制器532访问闪存通道542上的并行单元;通道控制器534与闪存通道544相耦合,通过通道控制器534访问闪存通道544上的并行单元;通道控制器536与闪存通道546相耦合,通过通道控制器536访问闪存通道546上的并行单元。
存储控制器还提供多个缓冲区520。为所有闪存通道中的每个并行单元提供缓冲区。缓冲区用于缓存对相应的并行单元的IO请求。缓冲区可以集成在存储控制器内部,也可以在同存储控制器相耦合到的存储器中提供,在另一个例子中,在访问存储控制器的主机的内存中提供缓冲区。在根据图5的实施例中,存储控制器还提供多个状态指示单元522。为所有闪存通道的每个并行单元提供状态指示单元。状态指示单元用于根据并行单元正在处理的IO请求指示并行单元的IO处理能力。
每个并行单元能够接收多个IO请求。但为了保证在掉电时,每个并行单元都能完成所接收的IO请求,需要限制并行单元正在处理的IO请求的数量与类型。另一方面,由于读请求缓冲区的优先级高于写请求缓冲区,写请求缓冲区的优先级高于擦除请求缓冲区,当对于一个并行单元存在连续的读请求时,将使得对该并行单元的写请求/擦除请求长时间等待而得不到处理。这样的结果是不利的,因为用户将体验到过长的写请求/擦除请求处理时间。在根据本发明的实施例中,通过状态指示单元来指示并行单元的处理能力,从而更有效地将IO请求分发给并行单元。
参看表1,表1展示了并行单元的IO请求处理能力,包括并行单元正在处理的IO请求与并行单元还能处理的IO请求的对应关系。当一个并行单元正在处理读请求时,该并行单元还能处理读请求、写请求或擦除请求。而当一个并行单元正在处理写请求时,在该写请求完成前,该并行单元还能再处理读请求与写请求,而不能再响应写请求。而当一个并行单元正在处理擦除请求时,在该擦除请求完成前,该并行单元仅能再处理读请求。另一方面,为了避免写请求或擦除请求长期得不到执行,还依据在一个并行单元上已经执行的特定类型的IO请求与其他类型的IO请求的数量关系,来确定并行单元的IO处理能力。例如,当一个并行单元上已经执行的读请求数量小于已经执行的写请求的预定倍数时,该并行单元上还能够执行读请求。当一个并行单元上已经执行的读请求数量大于或不小于已经执行的写请求的预定倍数时,该并行单元上还能够执行写请求。换句话说,当一个并行单元上已经执行的读请求数量大于或不小于已经执行的写请求的预定倍数时,若同时存在对该并行单元的读请求与写请求,即读请求缓冲区与写请求缓冲区中都缓存了IO请求,虽然读请求缓冲区的优先级高于写请求缓冲区的优先级,但此时优先调度写请求缓冲区的请求,以避免对该并行单元的写请求等待过程时间。类似地,当一个并行单元上已经执行的读请求数量大于或不小于已经执行的擦除请求的预定倍数时,此时该并行单元上优先调度擦除请求。
表1并行单元的IO请求处理能力
参看图5,在一个例子中,状态指示单元522指示对应的并行单元正在处理/已经处理的IO请求。根据访问状态指示单元522,得到对应的并行单元正在处理/已经处理的IO请求,并进而例如通过表1确定该并行单元还能够处理的IO请求。在另一个例子中,状态指示单元522直接指示对应的并行单元还能够处理的IO请求。
在根据本发明的实施例中,根据状态指示单元522,确定对应的并行单元还能够处理的IO请求,并作为选择向该并行单元分发IO请求的依据。在另一个例子中,依据状态指示单元522确定对应的并行单元还能处理的IO请求,并结合读请求缓冲区、写请求缓冲区以及擦除请求缓冲区的优先级来确定从读请求缓冲区、写请求缓冲区以及擦除请求缓冲区中的哪个来获得IO请求并分发给该并行单元。
图6展示了根据本发明实施的处理IO请求的方法的流程图。也参看图3,响应于接收到IO请求(610),依据IO请求要访问的地址,确定IO请求对应的并行单元。依据IO请求,填充对应于该IO请求的并行单元的缓冲区(620)。从多个缓冲区之一中取出IO请求(630)。将取出的IO请求送入对应的通道控制器,由通道控制器依据IO请求访问并行单元(640)。
在操作630,从多个缓冲区之一中取出IO请求时,在一个例子中,轮询各个缓冲区,在所访问的缓冲区存在未处理的IO请求时,取出IO请求。在另一个例子中,同时检测各个缓冲区的状态,在发现缓冲区中存在IO请求时,取出IO请求。在依然另一个例子中,各个缓冲区具有不同的优先级,依据存在IO请求的各缓冲区的优先级选择缓冲区,并从选中的缓冲区中取出IO请求。
图7展示了根据本发明又一实施例的处理IO请求的方法的流程图。响应于接收到IO请求(710),依据IO请求要访问的地址,确定IO请求对应的并行单元(715)。在填充IO请求缓冲区时,依据IO请求的类型,将IO请求填入对应类型的缓冲区。当IO请求是读请求时,填充对应于该IO请求的并行单元的读请求缓冲区(722)。当IO请求是写请求时,填充对应于该IO请求的并行单元的写请求缓冲区(724)。当IO请求是擦除请求时,填充对应于该IO请求的并行单元的擦除请求缓冲区(726)。依据读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求(730)。并依据取出的IO请求访问对应的并行单元(740)。例如将取出的IO请求送入对应的通道控制器,由通道控制器依据IO请求访问并行单元。
在进一步的实施例中,在操作730选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求时,还考虑并行单元的处理能力。参看表1,例如当并行单元正在处理擦除请求时,即使与该并行单元对应的缓冲区中存在且仅存在擦除请求,由于依据表1中提供的并行单元的处理能力,在并行单元正在处理擦除请求时,不能再接受新的擦除请求,因而不从缓冲区中取出擦除请求。在另一个例子中,与一并行单元对应的读请求缓冲区与写请求缓冲区中均存在对应的IO请求。而该并行单元上已经执行的读请求数量大于已经执行的写请求的预定倍数。为避免该并行单元上的写请求的处理时间过程,虽然读请求缓冲区的优先级高于写请求缓冲区,也从写请求缓冲区中取出IO请求并进行处理。在另一个例子中,当并行单元上已经执行的读请求数量大于已经执行的写请求的预定倍数时,临时修改对应于该并行单元的读请求缓冲区与写请求缓冲区的优先级,使得写请求缓冲区的优先级临时地高于读请求缓冲区的优先级,并进而依据优先级来选择读请求缓冲区与写请求缓冲区之一来取出IO请求并访问并行单元。
图8展示了根据本发明又一实施例的处理IO请求的方法的流程图。响应于接收到IO请求(810),依据IO请求要访问的地址,确定IO请求对应的并行单元(815)。在填充IO请求缓冲区时,依据IO请求的类型,将IO请求填入对应类型的缓冲区。当IO请求是读请求时,填充对应于该IO请求的并行单元的读请求缓冲区(822)。当IO请求是写请求时,填充对应于该IO请求的并行单元的写请求缓冲区(824)。当IO请求是擦除请求时,填充对应于该IO请求的并行单元的擦除请求缓冲区(826)。依据并行单元当前的IO请求处理能力,以及读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求(830)。并依据取出的IO请求访问对应的并行单元(840)。例如将取出的IO请求送入对应的通道控制器,由通道控制器依据IO请求访问并行单元。
在根据图8的实施例中,伴随着依据取出的IO请求访问对应的并行单元(840),还更新并行单元的状态(850),使并行单元的状态信息指示并行单元正在执行的IO请求。而在通道控制器收到并行单元返回的IO请求的执行结果时,同样更新并行单元的状态,使并行单元的状态信息指示并行单元正在执行的IO请求。在另一个例子中,依据并行单元当前正在执行的IO请求进一步确定并行单元的IO处理能力(860)。并且在操作830,能够依据在操作860中确定的并行单元的IO处理能力,以及读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求。
图9展示了根据本发明依然另一实施例的处理IO请求的方法的流程图。响应于接收到IO请求(910),依据IO请求要访问的地址,确定IO请求对应的并行单元(915)。在填充IO请求缓冲区时,依据IO请求的类型,将IO请求填入对应类型的缓冲区。当IO请求是读请求时,填充对应于该IO请求的并行单元的读请求缓冲区(922)。当IO请求是写请求时,填充对应于该IO请求的并行单元的写请求缓冲区(924)。当IO请求是擦除请求时,填充对应于该IO请求的并行单元的擦除请求缓冲区(926)。依据并行单元当前的IO请求处理能力,以及读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求(930)。并依据取出的IO请求访问对应的并行单元(940)。例如将取出的IO请求送入对应的通道控制器,由通道控制器依据IO请求访问并行单元。伴随着依据取出的IO请求访问对应的并行单元(940),还更新并行单元的状态(950),使并行单元的状态信息指示并行单元正在执行的IO请求。而在通道控制器收到并行单元返回的IO请求的执行结果时,同样更新并行单元的状态,使并行单元的状态信息指示并行单元正在执行的IO请求。依据并行单元当前正在执行的IO请求进一步确定并行单元的IO处理能力(960)。并且在操作930,能够依据在操作960中确定的并行单元的IO处理能力,以及读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求。
在根据图9的本发明的实施例中,在对应于每个并行单元而提供的缓冲区中,除读请求缓冲区、写请求缓冲区与擦除请求缓冲区外,还提供读重做请求缓冲区。在通道控制器收到并行单元返回的IO请求的执行结果时,若IO请求是读请求,且该读请求的执行出错(970),则基于出错的读请求,产生读重做请求,并将该读重做请求填入对应于该并行单元的读重做请求缓冲区(928)。读重做请求用于处理执行出错的读请求。在一个例子中,对出错的读请求再次执行。在另一个例子中,提供闪存芯片提供的读重式(read-retry)机制,以不同的读取方式从闪存芯片的特定物理页读取数据。在又一个例子中,存储设备中以RAID方式组织数据。读请求所对应的数据对应于一个RAID组,在RAID组中包括多项数据,当读请求所对应的数据出错时,利用RAID组中的其他数据有可能恢复出错的数据。通过出错的读请求的地址可获得该地址所在的RAID组中的其他数据的地址。读请求的执行出错,可表现为基于读请求从并行单元获得的读出数据错在错误,例如通过错误校正码可确定读出数据存在错误。读请求出错还可体现为并行单元返回指示读请求出错的信息。
由于读重做请求是对出错的读请求的再次处理,为避免向用户响应出错的读请求的延迟过长,为读重做请求缓冲区设置高优先级。在一个例子中,读重做缓冲区的优先级高于读请求缓冲区,使得当对应于并行单元的缓冲区中存在读重做请求与其他类型的IO请求时,优先处理读重做请求。
在根据本发明的另一个实施例中,响应于读请求出错,基于出错的读请求产生读重做请求,并重新处理该读重做请求。例如,在操作910,接收该读重做请求,并将其按照读请求进行处理。在另一个例子中,基于该读重做请求,填充对应于该读重做请求的并行单元的读请求缓冲区。在此例子中,无需提供读重做请求缓冲区。在依然另一个例子中,通道控制器识别到读请求出错,产生读重做请求,并将该读重做请求发送给并行单元。
图10展示了根据本发明依然另一个实施例的处理IO请求的方法的流程图。响应于接收到IO请求(1010),依据IO请求要访问的地址,确定IO请求对应的并行单元(1015)。在填充IO请求缓冲区时,依据IO请求的类型,将IO请求填入对应类型的缓冲区。当IO请求是读请求时,填充对应于该IO请求的并行单元的读请求缓冲区(1022)。当IO请求是写请求时,填充对应于该IO请求的并行单元的写请求缓冲区(1024)。当IO请求是擦除请求时,填充对应于该IO请求的并行单元的擦除请求缓冲区(1026)。依据并行单元当前的IO请求处理能力,以及读请求缓冲区、写请求缓冲区与擦除请求缓冲区的优先级,选择读请求缓冲区、写请求缓冲区与擦除请求缓冲区之一取出IO请求(1030)。并依据取出的IO请求访问对应的并行单元(1040)。例如将取出的IO请求送入对应的通道控制器,由通道控制器依据IO请求访问并行单元。
在根据图10的本发明的实施例中,在对应于每个并行单元而提供的缓冲区中,除读请求缓冲区、写请求缓冲区与擦除请求缓冲区外,还提供写日志请求缓冲区。写日志请求是一类特殊的写请求,用于将系统运行期间产生的日志和/或FTL表写入存储介质。日志是重要数据,在掉电时要保证日志被完整写入存储设备。在填充IO请求缓冲区时,依据IO请求的类型,将IO请求填入对应类型的缓冲区。当IO请求是写日志请求时,填充对应于该IO请求的并行单元的写日志请求缓冲区(1026)。为写日志请求缓冲区设置最高的优先级,从而保证对写日志请求的优先处理。在发生意外掉电时,存储设备提供备用电源来支撑将关键数据写入非易失存储介质。由于写日志请求缓冲区具有最高优先级,写日志请求在掉电时也能得到有效处理。
在另一个实施例中,存储系统正常运行时,写日志请求缓冲区可具有同写请求缓冲区一致的优先级或其他优先级。响应于收到指示异常掉电的信息,调整写日志缓冲区的优先级,使之具有最高优先级,并使存储系统在异常掉电后,优先处理写日志请求。在依然另一个实施例中,响应于收到指示异常掉电的信息,屏蔽其他类型的IO请求,而仅处理写日志请求。例如,在收到指示异常掉电的信息后,仅从写日志缓冲区中获取写日志请求,并根据取出的写日志请求访问并行单元,将日志写入存储介质,而不在处理存储其他类型IO请求的缓冲区。
本发明实施例还提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行上面所述的方法。
本发明实施例还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
上面已经公开了处理IO请求的方法及其存储控制器。所属领域技术人员还将意识到本发明中所公开的方法或操作流程可由软件、固件及其任何组合实现。实现本发明实施例的方法或操作流程的软件、固件可由访问存储设备的主机的CPU执行。实现本发明实施例的方法或操作的软件、固件可存储于网络服务器、访问存储设备的主机和/或存储设备。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (10)
1.一种处理IO请求的方法,用于向多个存储器的多个并行单元分发IO请求,其中,为每个并行单元提供IO请求缓冲区,所述IO请求缓冲区包括读请求缓冲区、写请求缓冲区以及擦除请求缓冲区;所述方法包括:
接收IO请求,基于IO请求对应的物理地址以及访问类型,将IO请求填入该物理地址和访问类型对应的并行单元的IO请求缓冲区,所述访问类型包括读请求、写请求以及擦除请求;
从IO请求缓冲区之一中读出IO请求;
根据读出的IO请求访问并行单元。
2.根据权利要求1所述的方法,其中所述读请求缓冲区、写请求缓冲区以及擦除请求缓冲区对应不同的处理优先级,以及其中所述从IO请求缓冲区之一中读出IO请求,是根据处理优先级,选择IO请求缓冲区之一。
3.根据权利要求1所述的方法,其中为每个并行单元提供执行状态指示单元,用于根据并行单元上正在处理的IO请求指示各个并行单元的IO请求处理能力,所述IO请求处理能力包括,能够执行读请求、能够执行写请求、和/或能够执行擦除请求;
其中所述从IO请求缓冲区之一中读出IO请求,是根据并行单元的IO请求处理能力,选择IO请求缓冲区之一。
4.根据权利要求1所述的方法,其中所述读请求缓冲区、写请求缓冲区以及擦除请求缓冲区对应不同的处理优先级,以及其中为每个并行单元提供执行状态指示单元,用于根据并行单元上正在处理的IO请求指示各个并行单元的IO请求处理能力,所述IO请求处理能力包括,能够执行读请求、能够执行写请求、和/或能够执行擦除请求;
其中所述从IO请求缓冲区之一中读出IO请求,是根据并行单元的IO请求处理能力,获得该并行单元能够处理的访问类型,以及根据处理优先级,选择该并行单元能够处理的访问类型所对应的IO请求缓冲区之一。
5.根据权利要求3或4之一所述的方法,其中当所述并行单元正在执行擦除请求时,所述并行单元还能够执行读请求;当所述并行单元正在执行写请求时,所述并行单元还能够执行写请求或读请求;以及当所述并行单元正在执行读请求时,所述并行单元还能处理读请求、写请求或擦除请求。
6.根据权利要求2、4、5之一所述的方法,其中所述IO请求缓冲区还包括读重做请求缓冲区,所述读重做请求缓冲区的优先级高于所述读请求缓冲区;所述方法还包括:
响应于读请求出错,生成读重做请求;以及
将根据读重做请求对应的物理地址,将读重做请求填入该读重做请求的物理地址对应的并行单元的读重做请求缓冲区。
7.根据权利要求6所述的方法,其中所述IO请求缓冲区还包括写日志请求缓冲区,所述写日志请求缓冲区的优先级高于所述读重做请求缓冲区;以及其中所述IO请求的类型还包括写日志请求。
8.根据权利要求7所述的方法,其中所述IO请求缓冲区还包括写日志请求缓冲区,以及其中所述IO请求的类型还包括写日志请求;所述方法还包括:
响应于接收到关闭或掉电消息,将所述写日志请求缓冲区的优先级设置为高于所述读重做请求缓冲区。
9.根据权利要求1-8之一所述的方法,其中响应于接收到关闭或掉电消息;所述方法还包括:屏蔽读请求以及擦除请求。
10.一种存储控制器,用于耦合到存储器,并基于IO请求访问存储器;
所述存储控制器包括通道控制器,每个通道控制器用于访问存储器中的多个并行单元;
所述存储控制器还包括为每个并行单元提供的IO请求缓冲区,所述IO请求缓冲区包括读请求缓冲区、写请求缓冲区以及擦除请求缓冲区;
所述存储控制器还包括接口,用于接收IO请求;
所述存储控制器还包括耦合到所述接口与所述通道控制器的处理电路,用于基于IO请求对应的物理地址以及访问类型,将IO请求填入该物理地址和访问类型对应的并行单元的IO请求缓冲区,所述访问类型包括读请求、写请求以及擦除请求;
所述通道控制器从多个IO请求缓冲区之一中获取IO请求,并根据获取的IO请求访问并行单元。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010468615.2A CN111475438B (zh) | 2015-08-12 | 2015-08-12 | 提供服务质量的io请求处理方法及其装置 |
CN201510493056.XA CN106469126B (zh) | 2015-08-12 | 2015-08-12 | 处理io请求的方法及其存储控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510493056.XA CN106469126B (zh) | 2015-08-12 | 2015-08-12 | 处理io请求的方法及其存储控制器 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010468615.2A Division CN111475438B (zh) | 2015-08-12 | 2015-08-12 | 提供服务质量的io请求处理方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106469126A true CN106469126A (zh) | 2017-03-01 |
CN106469126B CN106469126B (zh) | 2020-07-07 |
Family
ID=58213437
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510493056.XA Active CN106469126B (zh) | 2015-08-12 | 2015-08-12 | 处理io请求的方法及其存储控制器 |
CN202010468615.2A Active CN111475438B (zh) | 2015-08-12 | 2015-08-12 | 提供服务质量的io请求处理方法及其装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010468615.2A Active CN111475438B (zh) | 2015-08-12 | 2015-08-12 | 提供服务质量的io请求处理方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN106469126B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092445A (zh) * | 2017-05-31 | 2017-08-25 | 郑州云海信息技术有限公司 | 一种多通道ssd固态盘io调度方法及装置 |
CN107168653A (zh) * | 2017-05-24 | 2017-09-15 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中只读性能的方法及固态硬盘 |
CN108766487A (zh) * | 2018-05-31 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种硬盘异常下电方法、系统、设备及计算机存储介质 |
CN109388596A (zh) * | 2018-09-29 | 2019-02-26 | 上海依图网络科技有限公司 | 一种数据操作方法和装置 |
CN109558070A (zh) * | 2017-09-27 | 2019-04-02 | 北京忆恒创源科技有限公司 | 可扩展存储系统架构 |
CN111208933A (zh) * | 2018-11-21 | 2020-05-29 | 北京百度网讯科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965669B (zh) * | 2021-04-02 | 2022-11-22 | 杭州华澜微电子股份有限公司 | 一种数据存储系统及方法 |
CN113838487B (zh) * | 2021-09-28 | 2023-04-25 | 北京信息科技大学 | 一种多读写头的盘状存储器、读写方法及数据保护方法 |
CN115079803B (zh) * | 2022-05-20 | 2024-03-29 | 上海瑞浦青创新能源有限公司 | 一种适用于微控制器的异常掉电数据保存装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026540A (zh) * | 2006-12-28 | 2007-08-29 | 复旦大学 | 智能多缓冲区管理的集中调度控制器和动态调度方法 |
US20100082888A1 (en) * | 2008-09-30 | 2010-04-01 | Tdk Corporation | Memory controller, flash memory system with memory controller, and method of controlling flash memory |
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN104102761A (zh) * | 2013-04-12 | 2014-10-15 | 国际商业机器公司 | 数据处理系统中数据处理的方法和集成电路 |
CN104137184A (zh) * | 2011-12-23 | 2014-11-05 | 考文森智财管理公司 | 固态驱动器存储系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149857B2 (en) * | 2002-05-14 | 2006-12-12 | Micron Technology, Inc. | Out of order DRAM sequencer |
JP4847036B2 (ja) * | 2005-03-30 | 2011-12-28 | キヤノン株式会社 | バスアクセスを調停する制御装置およびデータ処理装置の制御方法 |
KR100725417B1 (ko) * | 2006-02-22 | 2007-06-07 | 삼성전자주식회사 | 우선 순위에 따른 플래시 메모리의 연산 처리 장치 및 방법 |
US20080162852A1 (en) * | 2006-12-28 | 2008-07-03 | Surya Kareenahalli | Tier-based memory read/write micro-command scheduler |
US8510496B1 (en) * | 2009-04-27 | 2013-08-13 | Netapp, Inc. | Scheduling access requests for a multi-bank low-latency random read memory device |
CN101944066A (zh) * | 2009-07-10 | 2011-01-12 | 成都市华为赛门铁克科技有限公司 | 固态硬盘的接口处理方法、固态硬盘以及存储系统 |
JP2011180656A (ja) * | 2010-02-26 | 2011-09-15 | Kyocera Mita Corp | インタフェース装置、画像形成装置 |
CN102298561B (zh) * | 2011-08-10 | 2016-04-27 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
CN102693198B (zh) * | 2012-05-12 | 2015-03-25 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN102708079B (zh) * | 2012-05-15 | 2015-09-30 | 钜泉光电科技(上海)股份有限公司 | 应用于微控制器的控制数据传输的方法及系统 |
US9092336B2 (en) * | 2013-03-15 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Write admittance policy for a memory cache |
JP6167646B2 (ja) * | 2013-04-30 | 2017-07-26 | 富士通株式会社 | 情報処理装置、制御回路、制御プログラム、および制御方法 |
CN103425439A (zh) * | 2013-07-16 | 2013-12-04 | 记忆科技(深圳)有限公司 | 固态硬盘读写的方法及其固态硬盘 |
-
2015
- 2015-08-12 CN CN201510493056.XA patent/CN106469126B/zh active Active
- 2015-08-12 CN CN202010468615.2A patent/CN111475438B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026540A (zh) * | 2006-12-28 | 2007-08-29 | 复旦大学 | 智能多缓冲区管理的集中调度控制器和动态调度方法 |
US20100082888A1 (en) * | 2008-09-30 | 2010-04-01 | Tdk Corporation | Memory controller, flash memory system with memory controller, and method of controlling flash memory |
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN104137184A (zh) * | 2011-12-23 | 2014-11-05 | 考文森智财管理公司 | 固态驱动器存储系统 |
CN104102761A (zh) * | 2013-04-12 | 2014-10-15 | 国际商业机器公司 | 数据处理系统中数据处理的方法和集成电路 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168653A (zh) * | 2017-05-24 | 2017-09-15 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中只读性能的方法及固态硬盘 |
CN107168653B (zh) * | 2017-05-24 | 2020-09-01 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中只读性能的方法及固态硬盘 |
CN107092445A (zh) * | 2017-05-31 | 2017-08-25 | 郑州云海信息技术有限公司 | 一种多通道ssd固态盘io调度方法及装置 |
CN107092445B (zh) * | 2017-05-31 | 2020-05-29 | 郑州云海信息技术有限公司 | 一种多通道ssd固态盘io调度方法及装置 |
CN109558070A (zh) * | 2017-09-27 | 2019-04-02 | 北京忆恒创源科技有限公司 | 可扩展存储系统架构 |
CN109558070B (zh) * | 2017-09-27 | 2023-09-15 | 北京忆恒创源科技股份有限公司 | 可扩展存储系统架构 |
CN108766487A (zh) * | 2018-05-31 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种硬盘异常下电方法、系统、设备及计算机存储介质 |
CN109388596A (zh) * | 2018-09-29 | 2019-02-26 | 上海依图网络科技有限公司 | 一种数据操作方法和装置 |
CN109388596B (zh) * | 2018-09-29 | 2019-12-31 | 上海依图网络科技有限公司 | 一种数据操作方法和装置 |
CN111208933A (zh) * | 2018-11-21 | 2020-05-29 | 北京百度网讯科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
US11650754B2 (en) | 2018-11-21 | 2023-05-16 | Kunlunxin Technology (Beijing) Company Limited | Data accessing method, device, and storage medium |
CN111208933B (zh) * | 2018-11-21 | 2023-06-30 | 昆仑芯(北京)科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111475438B (zh) | 2021-12-10 |
CN111475438A (zh) | 2020-07-31 |
CN106469126B (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106469126A (zh) | 处理io请求的方法及其存储控制器 | |
US11435908B2 (en) | Geometry-aware command scheduling | |
US8437190B2 (en) | Interleaved flash storage system and method | |
CN108628777A (zh) | 动态和自适应中断合并的系统和方法 | |
KR101560469B1 (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
US8171239B2 (en) | Storage management method and system using the same | |
CN104583977B (zh) | 主机辅助的存储块的压缩 | |
US20130054873A1 (en) | Storage system cache using flash memory with direct block access | |
KR20200035311A (ko) | 캐시 라인 데이터 | |
CN108228473B (zh) | 通过动态地传送存储器范围分配的负载平衡的方法及系统 | |
CN103635968A (zh) | 包含存储器系统控制器的设备和相关方法 | |
CN111684408B (zh) | 多存储器类型存储器模块系统和方法 | |
CN106354615A (zh) | 固态硬盘日志生成方法及其装置 | |
CN105528299B (zh) | 读取命令排程方法以及使用该方法的装置 | |
EP3926451B1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
US20210318801A1 (en) | Zone-append command scheduling based on zone state | |
US12045513B2 (en) | Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command | |
KR20230142795A (ko) | Zns 디바이스들에서의 상이한 기입 우선순위화 | |
Kim et al. | Architecture exploration of high-performance PCs with a solid-state disk | |
CN111625197A (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
US11556268B2 (en) | Cache based flow for a simple copy command | |
CN112230849A (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
CN107885667A (zh) | 降低读命令处理延迟的方法与装置 | |
CN110069427A (zh) | 存储器控制器以及存储器控制器的操作方法 | |
US11733920B2 (en) | NVMe simple copy command support using dummy virtual function |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |