并发IO命令的无锁处理方法技术

技术编号:20116692 阅读:21 留言:0更新日期:2019-01-16 11:52
本申请提出了并发IO命令的无锁处理方法。本申请的并发IO命令的无锁处理方法包括:接收第一IO命令;判断第一IO命令同排序集合中的任何IO命令是否冲突;响应于第一IO命令同排序集合中的任何IO命令都不冲突,将第一IO命令插入到排序集合中,处理第一IO命令;响应于第一IO命令被处理完成,将第一IO命令从排序集合中取出。

A Lockless Processing Method for Concurrent IO Commands

This application proposes a lock-free processing method for concurrent IO commands. The lock-free processing method of the concurrent IO command in this application includes: receiving the first IO command; judging whether the first IO command conflicts with any IO command in the sorted set; inserting the first IO command into the sorted set in response to the first IO command does not conflict with any IO command in the sorted set, and processing the first IO command; and processing the first IO in response to the first IO command being processed and completed. Remove from the sorted set.

【技术实现步骤摘要】
并发IO命令的无锁处理方法
本申请涉及固态存储设备,具体涉及在存储设备中对多个IO命令的并发资源访问中消除对锁的使用。
技术介绍
图1是现有技术的固态存储设备的框图,如图1所示,存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVMExpress)、SAS、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-VolatileMemory)芯片105以及可选地固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmablegatearray,现场可编程门阵列)、ASIC(ApplicationSpecificIntegratedCircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM,也可以是NVM芯片105的部分。NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,ChipEnable)信号的一个或多个逻辑单元(LUN,LogicUNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“OpenNANDFlashInterfaceSpecification(Revision3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。物理页中可以包括多个数据段,数据段具有指定的尺寸,例如4096或4416字节。在固态存储设备中,利用FTL(FlashTranslationLayer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。来自主机的IO命令包括例如读命令与写命令。在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。在NVMe规范(http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_1_Gold_20160603.pdf)中定义了原子操作(AtomicOperation)。原子操作包括原子写命令。为执行原子写命令,固态存储设备确保在原子写命令中指示的数据,要么都写入到固态存储设备中,要么都未写入到固态存储设备中,而不会有其他自行结果。当同时存在向相同或部分相同的地址写入数据的两个或更多原子写命令同时存在时,这些原子写命令的执行结果是如同这些原子写命令串行执行的。例如,参看表1,原子写命令A向逻辑地址(LBA)0-3写入数据,原子写命令B向逻辑地址(LBA)1-4写入数据(表1中用“A”指示由原子写命令A写入的数据,而由“B”指示由原子写命令B写入的数据)。表1的第2行与第3行示出了命令A与命令B的正确执行结果。参看表1,一种可能的结果(如表1第2行所示)是LBA0-LBA3是写命令A所写入的数据,而LBA4是写命令B所写入的数据,换句话说,写命令B先生效,原子性地更新了LBA1-LBA4,接下来写命令A生效,又原子性地更新了LBA0-LBA3。另一种可能的结果(如表1第3行所示)是LBA0是写命令A所写入的数据,而LBA1-LBA4是写命令B所写入的数据,换句话说,写命令A先生效,原子性地更新了LBA0-LBA3,接下来写命令B生效,又原子性地更新了LBA1-LBA4。除了上面提到的两种结果,其他任何结果都不符合NVMe规范对原子写命令的要求。表1LBA0LBA1LBA2LBA3LBA4LBA5LBA6有效结果AAAAB有效结果ABBBB无效结果AABBB
技术实现思路
在固态存储设备中,同时处理多个IO命令,几乎每个IO命令都需要访问FTL表。使用锁机制为IO命令访问的FTL表项时消除访问冲突能够满足对IO命令的原子性要求。然而,访问锁增加了对存储器带宽与CPU计算能力的占用,且不利于提升固态存储设备的处理能力与性能-功耗比。根据本申请的实施例,能够实现多个IO命令的并发处理,满足原子性要求,消除了锁的使用,提升了固态存储设备的处理性能。根据本申请的第一方面,提供了根据本申请第一方面的第一并发IO命令的无锁处理方法,包括:接收第一IO命令;判断第一IO命令同排序集合中的任何IO命令是否冲突;响应于第一IO命令同排序集合中的任何IO命令都不冲突,将第一IO命令插入到排序集合中,处理第一IO命令;响应于第一IO命令被处理完成,将第一IO命令从排序集合中取出。根据本申本文档来自技高网
...

【技术保护点】
1.一种并发IO命令的无锁处理方法,其特征在于,包括:接收第一IO命令;判断第一IO命令同排序集合中的任何IO命令是否冲突;响应于第一IO命令同排序集合中的任何IO命令都不冲突,将第一IO命令插入到排序集合中,处理第一IO命令;响应于第一IO命令被处理完成,将第一IO命令从排序集合中取出。

【技术特征摘要】
1.一种并发IO命令的无锁处理方法,其特征在于,包括:接收第一IO命令;判断第一IO命令同排序集合中的任何IO命令是否冲突;响应于第一IO命令同排序集合中的任何IO命令都不冲突,将第一IO命令插入到排序集合中,处理第一IO命令;响应于第一IO命令被处理完成,将第一IO命令从排序集合中取出。2.如权利要求1所述的方法,其特征在于,还包括:响应于第一IO命令同排序集合中的任何IO命令冲突,将第一IO命令置于等待集合中。3.如权利要求2所述的方法,其特征在于,还包括:从等待集合中获取第一IO命令,响应于第一IO命令同排序集合中的任何IO命令冲突消失,将第一IO命令插入到排序集合中,以及处理第一IO命令。4.如权利要求1至3任一项所述的方法,其特征在于,响应于第一IO命令同排序集合中的第二IO命令冲突,将第一IO命令置于同第二IO命令相关联的等待子集中。5.如权利要求4所述的方法,其特征在于,第二IO命令被处理完成并从排序集合中移除,从同第二IO命令相关联的等待子集中获取第三IO命令,并尝试将第三IO命令加入排序集合。6.如权...

【专利技术属性】
技术研发人员:鲁海波路向峰孙清涛
申请(专利权)人:北京忆恒创源科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1