CN111966303A - 一种数据处理方法、系统、设备及可读存储介质 - Google Patents

一种数据处理方法、系统、设备及可读存储介质 Download PDF

Info

Publication number
CN111966303A
CN111966303A CN202010910117.9A CN202010910117A CN111966303A CN 111966303 A CN111966303 A CN 111966303A CN 202010910117 A CN202010910117 A CN 202010910117A CN 111966303 A CN111966303 A CN 111966303A
Authority
CN
China
Prior art keywords
doorbell register
tail
host
solid state
nvme command
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
Application number
CN202010910117.9A
Other languages
English (en)
Other versions
CN111966303B (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.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics 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 Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202010910117.9A priority Critical patent/CN111966303B/zh
Publication of CN111966303A publication Critical patent/CN111966303A/zh
Application granted granted Critical
Publication of CN111966303B publication Critical patent/CN111966303B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据处理方法、系统、设备及可读存储介质。本申请公开的方法应用于固态硬盘,包括:生成NVMe命令;将NVMe命令写入CQ;记录NVMe命令在CQ中的标志位,并更新CQ的CQ尾部标记,以便主机按照标志位和更新后的CQ尾部标记从CQ中读取并执行NVMe命令,从而使固态硬盘主动向主机发送NVMe命令。本申请可以提升包括主机与固态硬盘的系统的处理能力和性能,实现系统资源的合理调配。相应地,本申请提供的一种数据处理系统、设备及可读存储介质,也同样具有上述技术效果。

Description

一种数据处理方法、系统、设备及可读存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种数据处理方法、系统、设备及可读存储介质。
背景技术
在计算机传统技术中,主机与固态硬盘可以通过NVMe(Non-Volatile Memoryexpress)协议进行通信。在通信过程中,主机为主设备(即发令方),固态硬盘为从设备(执行方),即:主机可向固态硬盘请求命令,固态硬盘无法向主机发送请求命令,此种交互方式将固态硬盘限制为“被动”角色,会降低包括主机与固态硬盘的系统的处理能力和性能,影响了系统资源的合理调配。
因此,如何避免固态硬盘被限制为“被动”角色,提高系统处理能力和性能,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理方法、系统、设备及可读存储介质,以避免固态硬盘被限制为“被动”角色,提高系统处理能力和性能。其具体方案如下:
第一方面,本申请提供了一种数据处理方法,应用于固态硬盘,包括:
生成NVMe命令;
将所述NVMe命令写入CQ;
记录所述NVMe命令在所述CQ中的标志位,并更新所述CQ的CQ尾部标记,以便主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令。
优选地,所述记录所述NVMe命令在所述CQ中的标志位,并更新所述CQ的CQ尾部标记,包括:
利用所述固态硬盘中的第一门铃寄存器记录所述标志位,并更新所述第一门铃寄存器中记录的所述CQ尾部标记;
利用第二门铃寄存器记录所述标志位,并更新所述固态硬盘中的第一门铃寄存器记录的所述CQ尾部标记;
利用第二门铃寄存器记录所述标志位,并更新所述固态硬盘中的第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ尾部标记。
优选地,若利用所述第二门铃寄存器记录所述标志位,则所述第二门铃寄存器设置于所述主机中。
优选地,所述主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令,包括:
所述主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取所述NVMe命令后,更新所述CQ的CQ首部标记,并删除所述标志位;执行所述NVMe命令得到执行结果,将所述执行结果写入SQ,并更新所述SQ的SQ尾部标记,以便所述固态硬盘按照更新后的所述SQ尾部标记从所述SQ中读取所述执行结果后,更新所述SQ的SQ首部标记。
第二方面,本申请提供了一种数据处理系统,包括:内设有第一门铃寄存器的固态硬盘,与所述固态硬盘连接的主机,第二门铃寄存器;
所述固态硬盘,用于生成NVMe命令,将所述NVMe命令写入CQ;利用所述第二门铃寄存器记录所述NVMe命令在所述CQ中的标志位;更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ的CQ尾部标记;所述CQ设置于当前系统中;
所述主机,用于按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令。
优选地,所述第二门铃寄存器设置于所述主机中。
优选地,
所述主机,还用于按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取所述NVMe命令后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ的CQ首部标记,并删除所述第二门铃寄存器中记录的所述标志位;执行所述NVMe命令得到执行结果,将所述执行结果写入SQ,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ尾部标记;所述SQ设置于当前系统中;
相应的,
所述固态硬盘,还用于按照更新后的所述SQ尾部标记从所述SQ中读取所述执行结果后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ首部标记。
优选地,
所述主机,还用于将请求数据写入SQ,并更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ尾部标记;所述SQ设置于当前系统中;
相应的,
所述固态硬盘,还用于按照更新后的所述SQ尾部标记从所述SQ中读取所述请求数据后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ首部标记;将处理所述请求数据得到的请求结果写入所述CQ,并更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ尾部标记;
相应的,
所述主机,还用于按照更新后的所述CQ尾部标记从所述CQ中读取所述请求结果后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ首部标记。
优选地,
若所述CQ被清空,则将所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ首部标记和所述CQ尾部标记进行初始化;
若所述SQ被清空,则将所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ首部标记和所述SQ尾部进行初始化。
第三方面,本申请提供了一种数据处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据处理方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据处理方法。
通过以上方案可知,本申请提供了一种数据处理方法,应用于固态硬盘,包括:生成NVMe命令;将所述NVMe命令写入CQ;记录所述NVMe命令在所述CQ中的标志位,并更新所述CQ的CQ尾部标记,以便主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令。
可见,本申请中的固态硬盘可以主动将NVMe命令写入CQ,同时记录NVMe命令在CQ中的标志位以及CQ尾部标记,这样主机就可以按照相应标志位和CQ尾部标记从CQ中读取并执行NVMe命令,从而使固态硬盘主动向主机发送NVMe命令。在此过程中,固态硬盘为发令方,主机为执行方,因此该过程中的固态硬盘为“主动”角色,可以主动请求主机进行相关处理,如:询问主机端的资源占用情况等。因此本申请可以提升包括主机与固态硬盘的系统的处理能力和性能,实现系统资源的合理调配。
相应地,本申请提供的一种数据处理系统、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据处理方法流程图;
图2为本申请公开的一种数据处理装置示意图;
图3为本申请公开的一种数据处理系统示意图;
图4为本申请公开的一种CPU向SSD发送NVMe命令进行处理的流程图;
图5-图9为图4示意的具体过程中,CPU端的DB以及SSD端的DB中各自记录的信息示意图;
图10为本申请公开的一种SSD向CPU发送NVMe命令进行处理的流程图;
图11-图14为图10示意的具体过程中,CPU端的DB以及SSD端的DB中各自记录的信息示意图;
图15为本申请公开的一种数据处理设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,主机可向固态硬盘请求命令,固态硬盘无法向主机发送请求命令,此种交互方式将固态硬盘限制为“被动”角色,会降低包括主机与固态硬盘的系统的处理能力和性能,影响了系统资源的合理调配。为此,本申请提供了一种数据处理方案,能够避免固态硬盘被限制为“被动”角色,提高系统处理能力和性能。
需要说明的是,计算机冯诺依曼体系结构设计了运算器、控制器、存储器、输入设备、输出设备五个组成部分。但是,在长期的技术发展中,传统交互通讯都是将这些组成部分赋予主从关系,比如:一般将运算器+控制器(即CPU)作为主设备,存储器(如SSD)作为从设备;并且,很多接口协议(如NVMe)也是基于这样的结构设计的。
比如,以NVMe为例,SQ(Submission Queue,提交队列)位于主机内存中,主机要发送命令时,先把准备好的命令放在SQ中,然后通知SSD来取;CQ(Completion Queue,完工队列)也是位于主机内存中,一个命令执行完成,成功或失败,SSD总会往CQ中写入命令完成状态。主机与SSD相互通知对方,是通过写SSD端的DB来实现的。
参见图1所示,本申请实施例公开了一种数据处理方法,应用于固态硬盘,包括:
S101、生成NVMe命令;
需要说明的是,NVMe命令是固态硬盘主动生成的请求命令,请求命令如:询问主机端的资源(如内存)占用情况的命令;告知主机当前固态硬盘的执行能力有限,需要调用外部设备执行多余任务等。
S102、将NVMe命令写入CQ;
其中,CQ和SQ设置于当前系统中(如系统的内存、其他器件中),当前系统包括:固态硬盘以及与固态硬盘连接的主机。
CQ(Completion Queue,完成队列)中一般记录的是固态硬盘执行主机命令后获得的相应结果,一个命令执行完成,成功或失败,SSD总会往CQ中写入相应状态。在本实施例中,固态硬盘将自己生成的NVMe命令也写入CQ,并记录NVMe命令在CQ中的标志位,这样主机在从CQ中读取数据时,就可以知道当前读取的数据是NVMe命令还是执行结果。
S103、记录NVMe命令在CQ中的标志位,并更新CQ的CQ尾部标记,以便主机按照标志位和更新后的CQ尾部标记从CQ中读取并执行NVMe命令。
需要说明的是,NVMe命令在CQ中的标志位以及CQ尾部标记的记录方式可以有多种。在一种具体实施方式中,记录NVMe命令在CQ中的标志位,并更新CQ的CQ尾部标记,包括:利用固态硬盘中的第一门铃寄存器记录标志位,并更新第一门铃寄存器中记录的CQ尾部标记;或利用第二门铃寄存器记录标志位,并更新固态硬盘中的第一门铃寄存器记录的CQ尾部标记;或利用第二门铃寄存器记录标志位,并更新固态硬盘中的第一门铃寄存器和第二门铃寄存器中分别记录的CQ尾部标记。
上述第一种记录方式为:用固态硬盘中的第一门铃寄存器记录NVMe命令在CQ中的标志位以及CQ尾部标记。此方式需要主机频繁访问第一门铃寄存器,会降低处理效率。
上述第二种记录方式为:新增一个第二门铃寄存器,用第二门铃寄存器记录NVMe命令在CQ中的标志位,用固态硬盘中的第一门铃寄存器记录CQ尾部标记。此种方式也需要主机频繁访问第一门铃寄存器,会降低处理效率,但此方式比上述第一种记录方式效果更佳。
上述第三种记录方式为:新增一个第二门铃寄存器,用第二门铃寄存器记录NVMe命令在CQ中的标志位以及CQ尾部标记,同时用第一门铃寄存器也记录CQ尾部标记。此方式无需主机频繁访问第一门铃寄存器(主机访问第二门铃寄存器即可),因此不会降低处理效率,其效果比上述第一种记录方式和第二种记录方式更佳。
在上述第二种记录方式和第三种记录方式中,均利用第二门铃寄存器记录标志位,此时第二门铃寄存器可以设置于主机中。若第二门铃寄存器设置于主机的内存中,则第二门铃寄存器可以替换为其他形式,如记录表等。当然,第二门铃寄存器也可以是主机中的物理器件。该标志位可以是NVMe命令包括的所有数据在CQ中的位置,也可以是NVMe命令包括的第一条数据或最后一条数据在CQ中的位置。CQ是一个队列,因此数据在其中的位置即为数据在其中的队列标记。队列标记如:0、1、2、3等。
在一种具体实施方式中,主机按照标志位和更新后的CQ尾部标记从CQ中读取并执行NVMe命令,包括:主机按照标志位和更新后的CQ尾部标记从CQ中读取NVMe命令后,更新CQ的CQ首部标记,并删除标志位;执行NVMe命令得到执行结果,将执行结果写入SQ,并更新SQ的SQ尾部标记,以便固态硬盘按照更新后的SQ尾部标记从SQ中读取执行结果后,更新SQ的SQ首部标记。
SQ(Submission Queue,提交队列)中一般记录的是主机发送给固态硬盘中请求命令。在本实施例中,主机将自己执行NVMe命令的相应结果也写入SQ,这样固态硬盘就可以从SQ中获得NVMe命令的相应结果。
在上述第三种记录方式中,利用第二门铃寄存器记录NVMe命令在CQ中的标志位以及CQ尾部标记,同时用第一门铃寄存器也记录CQ尾部标记。相应的,CQ首部标记、SQ尾部标记、SQ首部标记也可以记录在第二门铃寄存器和第一门铃寄存器。也就是说,第二门铃寄存器和第一门铃寄存器同时记录CQ首部标记、CQ尾部标记、SQ尾部标记、SQ首部标记,此外,第二门铃寄存器会额外记录NVMe命令在CQ中的标志位。
需要说明的是,NVMe协议的命令大小为64Bytes,命令执行结果为16Bytes,因此写入SQ的每条数据大小为64Bytes,写入CQ的每条数据大小为16Bytes。据此,若固态硬盘将NVMe命令写入CQ,会同时往CQ中写入4条数据,主机读取CQ中的NVMe命令,也会同时读取4条数据。若主机将执行NVMe命令的相应结果写入SQ,由于该结果仅占位16Bytes,而SQ的每条数据大小为64Bytes,因此可以将该结果放置于64Bytes的前16Bytes,后需字节数为空即可。固态硬盘读取时,仅读取前16Bytes即可。
可见,本申请实施例中的固态硬盘可以主动将NVMe命令写入CQ,同时记录NVMe命令在CQ中的标志位以及CQ尾部标记,这样主机就可以按照相应标志位和CQ尾部标记从CQ中读取并执行NVMe命令,从而使固态硬盘主动向主机发送NVMe命令。在此过程中,固态硬盘为发令方,主机为执行方,因此该过程中的固态硬盘为“主动”角色,可以主动请求主机进行相关处理,如:询问主机端的资源占用情况等。因此本实施例可以提升包括主机与固态硬盘的系统的处理能力和性能,实现系统资源的合理调配。
下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的一种数据处理装置与上文描述的一种数据处理方法可以相互参照。
参见图2所示,本申请实施例公开了一种数据处理装置,应用于固态硬盘,包括:
生成模块201,用于生成NVMe命令;
写入模块202,用于将NVMe命令写入CQ;
记录模块203,用于记录NVMe命令在CQ中的标志位,并更新CQ的CQ尾部标记,以便主机按照标志位和更新后的CQ尾部标记从CQ中读取并执行NVMe命令。
在一种具体实施方式中,记录模块具体用于:
利用固态硬盘中的第一门铃寄存器记录标志位,并更新第一门铃寄存器中记录的CQ尾部标记;
利用第二门铃寄存器记录标志位,并更新固态硬盘中的第一门铃寄存器记录的CQ尾部标记;
利用第二门铃寄存器记录标志位,并更新固态硬盘中的第一门铃寄存器和第二门铃寄存器中分别记录的CQ尾部标记。
在一种具体实施方式中,若利用第二门铃寄存器记录标志位,则第二门铃寄存器设置于主机中。
在一种具体实施方式中,主机按照标志位和更新后的CQ尾部标记从CQ中读取NVMe命令后,更新CQ的CQ首部标记,并删除标志位;执行NVMe命令得到执行结果,将执行结果写入SQ,并更新SQ的SQ尾部标记,以便固态硬盘按照更新后的SQ尾部标记从SQ中读取执行结果后,更新SQ的SQ首部标记。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据处理装置,该装置能够让固态硬盘主动向主机发送NVMe命令,可以提升包括主机与固态硬盘的系统的处理能力和性能,实现系统资源的合理调配。
下面对本申请实施例提供的一种数据处理系统进行介绍,下文描述的一种数据处理系统与上文描述的一种数据处理方法可以相互参照。
本申请实施例公开了一种数据处理系统,包括:内设有第一门铃寄存器的固态硬盘,与固态硬盘连接的主机,第二门铃寄存器;
固态硬盘,用于生成NVMe命令,将NVMe命令写入CQ;利用第二门铃寄存器记录NVMe命令在CQ中的标志位;更新第一门铃寄存器和第二门铃寄存器中分别记录的CQ的CQ尾部标记;CQ设置于当前系统的内存;
主机,用于按照标志位和更新后的CQ尾部标记从CQ中读取并执行NVMe命令。
在一种具体实施方式中,第二门铃寄存器设置于主机中。
在一种具体实施方式中,
主机,还用于按照标志位和更新后的CQ尾部标记从CQ中读取NVMe命令后,更新第一门铃寄存器和第二门铃寄存器中分别记录的CQ的CQ首部标记,并删除第二门铃寄存器中记录的标志位;执行NVMe命令得到执行结果,将执行结果写入SQ,更新第一门铃寄存器和第二门铃寄存器中分别记录的SQ的SQ尾部标记;SQ设置于当前系统中;
相应的,
固态硬盘,还用于按照更新后的SQ尾部标记从SQ中读取执行结果后,更新第一门铃寄存器和第二门铃寄存器中分别记录的SQ的SQ首部标记。
在一种具体实施方式中,
主机,还用于将请求数据写入SQ,并更新第一门铃寄存器和第二门铃寄存器中分别记录的SQ的SQ尾部标记;SQ设置于当前系统中;
相应的,
固态硬盘,还用于按照更新后的SQ尾部标记从SQ中读取请求数据后,更新第一门铃寄存器和第二门铃寄存器中分别记录的SQ的SQ首部标记;将处理请求数据得到的请求结果写入CQ,并更新第一门铃寄存器和第二门铃寄存器中分别记录的CQ尾部标记;
相应的,
主机,还用于按照更新后的CQ尾部标记从CQ中读取请求结果后,更新第一门铃寄存器和第二门铃寄存器中分别记录的CQ首部标记。
在一种具体实施方式中,
若CQ被清空,则将第一门铃寄存器和第二门铃寄存器中分别记录的CQ首部标记和CQ尾部标记进行初始化,一般初始化为0。
若SQ被清空,则将第一门铃寄存器和第二门铃寄存器中分别记录的SQ首部标记和SQ尾部标记进行初始化,一般初始化为0。
需要说明的是,CQ和SQ均为环形队列,一般覆盖式写入数据。在系统初始化状态时,CQ和SQ为空,因此第一门铃寄存器和第二门铃寄存器分别记录的SQ首部标记和SQ尾部标记为0。若CQ或SQ出错,则可以根据实际情况清空相应队列,然后将第一门铃寄存器和第二门铃寄存器分别记录的SQ首部标记和SQ尾部标记初始化为0。
其中,关于本实施例中各个端的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据处理系统,该系统能够让固态硬盘主动向主机发送NVMe命令,可以提升包括主机与固态硬盘的系统的处理能力和性能,实现系统资源的合理调配。
参见图3所示,本申请实施例公开了一种数据处理系统,包括:内设有门铃寄存器(即图3中的第一门铃寄存器,也就是DB in Endpoint)的固态硬盘,与固态硬盘连接的CPU(即主机处理器),设置于当前系统的NVMe驱动层的门铃寄存器(即图3中的第二门铃寄存器,也就是DB in Host),根复合体(Root Complex)。DB(DoorBell Register)即门铃寄存器。
其中,NVMe驱动层是系统逻辑上的概念,第二门铃寄存器的相关代码在系统的NVMe驱动层予以实现,代码运行时涉及的具体数据可以存储在主机的内存中、主机端的物理寄存器中,或系统的其他存储部件中。
具体的,固态硬盘连接于根复合体上的一个PCIe(Peripheral ComponentInterconnect express)接口上,根复合体上的其他PCIe接口可以连接其他外接设备,如其他存储设备等。当前系统的内存中设有SQ和CQ。固态硬盘和CPU通过NVMe协议进行通信。
基于图3所示的系统,若CPU向SSD(固态硬盘)发送NVMe命令进行处理,则具体流程可参见图4。SSD控制器即SSD中的控制器,也就图3中的NVMe控制器。
图4示意的具体过程包括:
1、假设SQ和CQ是空的,则CPU端的DB以及SSD端的DB中各自记录的信息可参见图5。图5示意的是这两个DB的初始状态。
2、若CPU往SQ中写入了3个命令,则SQ的Tail(即SQ的尾部标记)更新为3。此时CPU更新两个DB中记录的SQ的Tail为3,更新后两个DB中各自记录的信息可参见图6。更新后,SSD可得知有新命令写入的通知消息。
3、SSD从SQ中把3个命令都取回来执行。之后,SSD把两个DB中的SQ的Head(即SQ的首部标记)更新为3,更新后,两个DB中各自记录的信息可参见图7。
4、假设SSD执行完了2个命令,且往CQ中写入了这2个命令的完成信息,那么SSD把两个DB中的CQ的Tail(即CQ的尾部标记)更新为2,更新后,两个DB中各自记录的信息可参见图8。同时SSD发中断消息给CPU,以告知CPU有命令完成。
5、CPU收到中断信息后,从CQ中取出那2条完成信息,并把两个DB中的CQ的Head(即CQ的首部标记)更新为2,更新后,两个DB中各自记录的信息可参见图9。
至此,CPU向SSD发送NVMe命令进行处理的过程完成。在该过程中,每次CQ或SQ中有数据更新,均需要同时更新两个DB,从而可使这两个DB中的数据同步。在该过程中,CPU端的DB中的Command Head List始终为空(空用Null表示)。Command Head List用于记录SSD写入CQ的NVMe命令的位置,具体为NVMe命令的第一条数据在CQ中的位置。Command Head List的具体用途在下述详细介绍。
基于图3所示的系统,若SSD向CPU发送NVMe命令进行处理,则具体流程可参见图10。
图10示意的具体过程包括:
1、假设SQ和CQ是空的,则CPU端的DB以及SSD端的DB中各自记录的信息可参见图5。图5示意的是这两个DB的初始状态。
2、若SSD往CQ中写入了1条NVMe命令,则CQ的Tail更新为4(因为1条NVMe命令是64字节,而CQ中的每条数据为16字节)。此时SSD更新两个DB中记录的CQ的Tail为4,并将该NVMe命令包括的第一条数据在CQ中的队列标记(即0)写入Command Head List。更新后,两个DB中各自记录的信息可参见图11。更新后,CPU可得知有新命令写入的通知消息。其中,CQ的队列标记为0、1、2、3等。
3、CPU从CQ中同时读取4条数据,取出4条数据组成一条NVMe命令进行处理。之后,CPU把两个DB中的CQ的Head更新为4,并删除Command Head List中的“0”,更新后,两个DB中各自记录的信息可参见图12。
4、CPU执行完这一条NVMe命令,且往SQ中写入了相应完成信息,那么CPU把两个DB中的SQ的Tail更新为1,更新后,两个DB中各自记录的信息可参见图13。同时CPU发中断消息给SSD,以告知SSD有命令完成。
5、SSD收到中断信息后,从SQ中取出那1条完成信息(因为完成信息仅占位16字节,而SQ中的每条数据占位64字节,因此可以仅解析前16字节),并把两个DB中的SQ的Head更新为1,更新后,两个DB中各自记录的信息可参见图14。
至此,SSD向CPU发送NVMe命令进行处理的过程完成。在该过程中,每次CQ或SQ中有数据更新,均需要同时更新两个DB,从而可使这两个DB中的数据同步。若SSD将NVMe命令写入CQ,会同时往CQ中写入4条数据,且同时更新两个DB,CPU读取CQ中的NVMe命令,也会同时读取4条数据,也会同时更新两个DB。若CPU将执行NVMe命令的相应结果写入SQ,由于该结果仅占位16Bytes,而SQ的每条数据大小为64Bytes,因此可以将该结果放置于64Bytes的前16Bytes,后需字节数为空即可。固态硬盘读取时,仅读取前16Bytes即可。
本实施例在CPU端增加DB,以记录SSD发出的NVMe命令。不增加新的SQ与CQ:CPU对SSD发出的命令放在SQ,SSD执行完该命令的结果放置CQ中;SSD对CPU发出的命令放在CQ,CPU执行完该命令的结果放置SQ中。利用Command Head List使CPU区分CQ中的数据是命令还是执行结果,并使CPU确定数据读取长度。
可见,本实施例兼容标准的NVMe协议,优化成本与开销较小,且容易实现,解决了现有NVMe协议通信双方“主从关系”的不对称约束,本实施例提供的系统中的CPU和SSD可以相互向对方发出请求指令并获取执行结果。该系统可以更有效地调配整个系统资源,提升其处理能力与整体性能。
下面对本申请实施例提供的一种数据处理设备进行介绍,下文描述的一种数据处理设备与上文描述的一种数据处理方法、系统及装置可以相互参照。
参见图15所示,本申请实施例公开了一种数据处理设备,包括:
存储器1501,用于保存计算机程序;
处理器1502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据处理方法、系统、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据处理方法,其特征在于,应用于固态硬盘,包括:
生成NVMe命令;
将所述NVMe命令写入CQ;
记录所述NVMe命令在所述CQ中的标志位,并更新所述CQ的CQ尾部标记,以便主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令。
2.根据权利要求1所述的数据处理方法,其特征在于,所述记录所述NVMe命令在所述CQ中的标志位,并更新所述CQ的CQ尾部标记,包括:
利用所述固态硬盘中的第一门铃寄存器记录所述标志位,并更新所述第一门铃寄存器中记录的所述CQ尾部标记;
利用第二门铃寄存器记录所述标志位,并更新所述固态硬盘中的第一门铃寄存器记录的所述CQ尾部标记;
利用第二门铃寄存器记录所述标志位,并更新所述固态硬盘中的第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ尾部标记。
3.根据权利要求2所述的数据处理方法,其特征在于,若利用所述第二门铃寄存器记录所述标志位,则所述第二门铃寄存器设置于所述主机中。
4.根据权利要求1所述的数据处理方法,其特征在于,所述主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令,包括:
所述主机按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取所述NVMe命令后,更新所述CQ的CQ首部标记,并删除所述标志位;执行所述NVMe命令得到执行结果,将所述执行结果写入SQ,并更新所述SQ的SQ尾部标记,以便所述固态硬盘按照更新后的所述SQ尾部标记从所述SQ中读取所述执行结果后,更新所述SQ的SQ首部标记。
5.一种数据处理系统,其特征在于,包括:内设有第一门铃寄存器的固态硬盘,与所述固态硬盘连接的主机,第二门铃寄存器;
所述固态硬盘,用于生成NVMe命令,将所述NVMe命令写入CQ;利用所述第二门铃寄存器记录所述NVMe命令在所述CQ中的标志位;更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ的CQ尾部标记;
所述主机,用于按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取并执行所述NVMe命令。
6.根据权利要求5所述的数据处理系统,其特征在于,所述第二门铃寄存器设置于所述主机中。
7.根据权利要求5所述的数据处理系统,其特征在于,
所述主机,还用于按照所述标志位和更新后的所述CQ尾部标记从所述CQ中读取所述NVMe命令后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ的CQ首部标记,并删除所述第二门铃寄存器中记录的所述标志位;执行所述NVMe命令得到执行结果,将所述执行结果写入SQ,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ尾部标记;
相应的,
所述固态硬盘,还用于按照更新后的所述SQ尾部标记从所述SQ中读取所述执行结果后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ首部标记。
8.根据权利要求5所述的数据处理系统,其特征在于,
所述主机,还用于将请求数据写入SQ,并更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ尾部标记;
相应的,
所述固态硬盘,还用于按照更新后的所述SQ尾部标记从所述SQ中读取所述请求数据后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述SQ的SQ首部标记;将处理所述请求数据得到的请求结果写入所述CQ,并更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ尾部标记;
相应的,
所述主机,还用于按照更新后的所述CQ尾部标记从所述CQ中读取所述请求结果后,更新所述第一门铃寄存器和所述第二门铃寄存器中分别记录的所述CQ首部标记。
9.一种数据处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至4任一项所述的数据处理方法。
10.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的数据处理方法。
CN202010910117.9A 2020-09-02 2020-09-02 一种数据处理方法、系统、设备及可读存储介质 Active CN111966303B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010910117.9A CN111966303B (zh) 2020-09-02 2020-09-02 一种数据处理方法、系统、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010910117.9A CN111966303B (zh) 2020-09-02 2020-09-02 一种数据处理方法、系统、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN111966303A true CN111966303A (zh) 2020-11-20
CN111966303B CN111966303B (zh) 2024-03-19

Family

ID=73393080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010910117.9A Active CN111966303B (zh) 2020-09-02 2020-09-02 一种数据处理方法、系统、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111966303B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486574A (zh) * 2020-12-16 2021-03-12 江苏国科微电子有限公司 一种完成队列的回复管理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484549A (zh) * 2015-08-31 2017-03-08 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
US20170286205A1 (en) * 2016-04-01 2017-10-05 Samsung Electronics Co., Ltd. Storage device and event notification method for storage device
CN110109626A (zh) * 2019-05-20 2019-08-09 哈尔滨工业大学 一种基于FPGA的NVMe SSD命令处理方法
CN110362274A (zh) * 2019-06-28 2019-10-22 苏州浪潮智能科技有限公司 一种NVMe控制器、网络化存储设备及系统
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484549A (zh) * 2015-08-31 2017-03-08 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
US20170286205A1 (en) * 2016-04-01 2017-10-05 Samsung Electronics Co., Ltd. Storage device and event notification method for storage device
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置
CN110109626A (zh) * 2019-05-20 2019-08-09 哈尔滨工业大学 一种基于FPGA的NVMe SSD命令处理方法
CN110362274A (zh) * 2019-06-28 2019-10-22 苏州浪潮智能科技有限公司 一种NVMe控制器、网络化存储设备及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486574A (zh) * 2020-12-16 2021-03-12 江苏国科微电子有限公司 一种完成队列的回复管理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111966303B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
TWI463317B (zh) Memory device and control method thereof
JP2010231770A (ja) シン・プロビジョニング・ボリュームのバックアップとリストアのための方法と装置
WO2019090493A1 (zh) 内存块回收方法和装置
US20130054840A1 (en) Tag allocation for queued commands across multiple devices
US20240053998A1 (en) Method and apparatus for processing inter-core communication, and computer system
CN107453845B (zh) 应答确认方法及设备
CN111966303A (zh) 一种数据处理方法、系统、设备及可读存储介质
TWI704456B (zh) 資料儲存裝置與資料存取方法
US20200242040A1 (en) Apparatus and Method of Optimizing Memory Transactions to Persistent Memory Using an Architectural Data Mover
CN117492661A (zh) 数据写入方法、介质、装置和计算设备
WO2022242665A1 (zh) 一种数据存储方法及相关装置
CN116486868A (zh) 计算高速链路(CXL)上的高速非易失性存储器(NVMe)
CN109684029A (zh) 存储内容访问方法、装置、电子设备及计算机存储介质
US20040177183A1 (en) Interface circuit, disc controller, disc drive apparatus and interface control method
US7814288B2 (en) Protecting memory operations involving zero byte allocations
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
JP2005276211A (ja) コンピューティングデバイスの記憶媒体との間の効率的なデータ転送
JP2007018195A (ja) 情報処理方法および情報処理装置
US20240168877A1 (en) Solving submission queue entry overflow with an additional out-of-order submission queue entry
US11687287B2 (en) Control apparatus and information processing system
US20240168681A1 (en) Solving submission queue entry overflow with shadow submission queue
EP4160422A1 (en) Method for using intermediate device to process data, computer system, and intermediate device
WO2022126534A1 (zh) 数据处理方法及相关设备
US8909827B2 (en) Method to allow a host to replace logical path resources it owns
JP6276301B2 (ja) ストレージアクセス制御装置、ストレージアクセス制御システム、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム

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