原子写命令的方法与装置制造方法及图纸

技术编号:19121818 阅读:43 留言:0更新日期:2018-10-10 05:04
本申请提供了原子写命令的执行方法与装置。所提供的原子写命令包括多个子命令,该方法包括:将多个子命令按照各子命令要访问的逻辑地址排序;获取所述多个子命令中未被处理的多个子命令中排序最前的第一子命令,根据第一子命令要访问的第一逻辑地址,对与该第一逻辑地址对应的FTL表项加锁;若对与该第一逻辑地址对应的FTL表项加锁成功,则按照子命令的排序获取下一子命令,根据该下一子命令要访问的第二逻辑地址,对与该第二逻辑地址对应的FTL表项加锁,直到对同属于该原子写命令的所有子命令的每个子命令要访问的逻辑地址相对应的FTL表项加锁均成功。

【技术实现步骤摘要】
原子写命令的方法与装置
本申请涉及存储
,尤其涉及原子写命令的方法与装置。
技术介绍
图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)、SCSI(SmallComputerSystemInterface,小型计算机系统接口)、SAS(SerialAttachedSCSI,串行连接SCSI)、IDE(IntegratedDriveElectronics,集成驱动器电子)、USB(UniversalSerialBus,通用串行总线)、PCIE(PeripheralComponentInterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(DynamicRandomAccessMemory,动态随机访问存储器)110。其中,NAND闪存、相变存储器、FeRAM(FerroelectricRAM,铁电存储器)、MRAM(MagneticRandomAccessMemory,磁阻存储器)、RRAM(ResistiveRandomAccessMemory,阻变存储器)等是常见的NVM(Non-VolatileMemory,非易失存储器)。控制部件104用于控制在接口103、NVM芯片105以及DRAM110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmablegatearray,现场可编程门阵列)、ASIC(ApplicationSpecificIntegratedCircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM110,并可访问DRAM110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。在控制部件104中运行的软件和/或固件(下面统称为“固件”)可被存储在NVM芯片105或另外的固件存储器中。在固态存储设备102上电时,从固件存储器将固件加载到DRAM110和/或控制部件104内部的存储器中。可选地,通过接口103或调试接口接收并加载固件。在NVMe规范(http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_1_Gold_20160603.pdf)中定义了原子操作(AtomicOperation)。原子操作包括原子写命令。为执行原子写命令,固态存储设备确保在原子写命令中指示的数据,要么都写入到固态存储设备中,要么都未写入到固态存储设备中,而不会有其他自行结果。当同时存在向相同或部分相同的地址写入数据的两个或更多原子写命令时,这些原子写命令的执行结果是如同这些原子写命令串行执行的。例如,参看表1,原子写命令A向逻辑地址(LogicBlockAddress,LBA)LBA0-3写入数据,原子写命令B向逻辑地址LBA1-4写入数据(表1中用“A”指示由原子写命令A写入的数据,而由“B”指示由原子写命令B写入的数据)。下表的第2行与第3行示出了命令A与命令B的正确执行结果。参看表1,一种可能的结果(如下表第2行所示)是LBA0-3是写命令A所写入的数据,而LBA4是写命令B所写入的数据,换句话说,写命令B先生效,原子性地更新了LBA1-4,接下来写命令A生效,又原子性地更新了LBA0-3。另一种可能的结果(如下表第3行所示)是LBA0是写命令A所写入的数据,而LBA2-4是写命令B所写入的数据,换句话说,写命令A先生效,原子性地更新了LBA0-3,接下来写命令B生效,又原子性地更新了LBA1-4。除了上面提到的两种结果,其他任何结果都不符合NVMe规范对原子写命令的要求。表1LBA0LBA1LBA2LBA3LBA4LBA5LBA6有效结果AAAAB有效结果ABBBB无效结果AABBB
技术实现思路
有鉴于此,本申请提供一种原子写命令的执行方法与装置。根据本专利技术的第一方面,提供了根据本专利技术第一方面的第一原子写命令执行方法,包括:从主机接收原子写命令;获取原子写命令要访问的逻辑地址;原子写命令要访问的逻辑地址,对与该逻辑地址对应的FTL表项加锁;若加锁成功,对原子写命令进行处理。根据本专利技术的第一方面的第一原子写命令执行方法,提供了根据本专利技术第一方面的第二原子写命令执行方法,还包括:若加锁失败,暂停对原子写命令的处理,直到加锁成功。根据本专利技术的第一方面的第一或第二原子写命令执行方法,提供了根据本专利技术第一方面的第三原子写命令执行方法,其中,对原子写命令的处理包括:为原子写命令分配物理地址;将原子写命令对应的数据写入所分配的物理地址中;以及将原子写命令要访问的逻辑地址与所分配的物理地址记录在被加锁的FTL表项中。根据本专利技术的第一方面的第一、第二或第三原子写命令执行方法,提供了根据本专利技术第一方面的第四原子写命令执行方法,还包括:将原子写命令拆分成多个子命令,其中每个子命令所访问的逻辑地址的范围不超过一个FTL表项所指示的逻辑地址范围。根据本专利技术的第二方面,提供了根据本专利技术第二方面的第一原子写命令执行方法,其中原子写命令包括多个子命令,该方法包括:将多个子命令按照各子命令要访问的逻辑地址排序;获取所述多个子命令中未被处理的多个子命令中排序最前的第一子命令,根据第一子命令要访问的第一逻辑地址,对与该第一逻辑地址对应的FTL表项加锁;若对与该第一逻辑地址对应的FTL表项加锁成功,则按照子命令的排序获取下一子命令,根据该下一子命令要访问的第二逻辑地址,对与该第二逻辑地址对应的FTL表项加锁,直到对同属于该原子写命令的所有子命令的每个子命令要访问的逻辑地址相对应的FTL表项加锁均成功。根据本专利技术的第二方面的第一原子写命令执行方法,提供了根据本专利技术第二方面的第二原子写命令执行方法,还包括:若对与该第一逻辑地址对应的FTL表项加锁失败,暂停对所述原子写命令的执行,直到对与该第一逻辑地址对应的FTL表项加锁成功。根据本专利技术的第二方面的第二原子写命令执行方法,提供了根据本文档来自技高网
...
原子写命令的方法与装置

【技术保护点】
1.一种原子写命令的执行方法,其特征在于,包括:从主机接收原子写命令;获取原子写命令要访问的逻辑地址;依据原子写命令要访问的逻辑地址,对与该逻辑地址对应的FTL表项加锁;若加锁成功,对原子写命令进行处理。

【技术特征摘要】
1.一种原子写命令的执行方法,其特征在于,包括:从主机接收原子写命令;获取原子写命令要访问的逻辑地址;依据原子写命令要访问的逻辑地址,对与该逻辑地址对应的FTL表项加锁;若加锁成功,对原子写命令进行处理。2.一种原子写命令的执行方法,其中所述原子写命令包括多个子命令,其特征在于,包括:将多个子命令按照各子命令要访问的逻辑地址排序;获取所述多个子命令中未被处理的多个子命令中排序最前的第一子命令,根据第一子命令要访问的第一逻辑地址,对与该第一逻辑地址对应的FTL表项加锁;若对与该第一逻辑地址对应的FTL表项加锁成功,则按照子命令的排序获取下一子命令,根据该下一子命令要访问的第二逻辑地址,对与该第二逻辑地址对应的FTL表项加锁,直到对同属于该原子写命令的所有子命令的每个子命令要访问的逻辑地址相对应的FTL表项加锁均成功。3.根据权利要求2所述的方法,其特征在于,直到对与该第一逻辑地址对应的FTL表项加锁成功,才按照子命令的排序获取下一子命令。4.根据权利要求2或3所述的方法,其特征在于,还包括:响应于对与所述原子写命令的所有子命令的逻辑地址对应的FTL表项都加锁成功,才处理所述原子写命令对应的子命令。5.根据权利要求2-4之一所述的方法,其特征在于,还包括:从主机接收第二原子写命令;将第二原子写命令拆分成第二多个子命令;将第二多个子命令按照各子命令要访问的逻辑地址进行排序;以及获取所述第二多个子命令中未被处理的多个子命令中排序最前的第三子命令,根据第三子命令要访问的第三逻辑地址,对与该第三逻辑地址对应的FTL表项加锁;若对与该第三逻辑地址对应的FTL表项加锁成功,则按照子命令的排序获取下一子命令,根据该下一子命令要访问的第四逻辑地址,对与该第四逻辑地址对应的FTL表项加锁,直到对同属于第二原子写命令的所有子命令的每个子命令要访问的逻辑地址相对应的FTL表项加锁均成功。6.根据权利要求2-5之一所述的方法,其特征在于,还包括:响应于属于所述原子写命令的所有子命令均处理完成,才释放同所述原子写命令的所有子命令对应的FTL表项的锁。7.一种原子写命令执行装置,其中所述原子写命令包括多个子命令,其特征在于,包括:子命令排序模块,用于将多个子命令按照各子命令要访问的逻辑地址排序...

【专利技术属性】
技术研发人员:袁戎谭云顺
申请(专利权)人:北京忆恒创源科技有限公司
类型:发明
国别省市:北京,11

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

1