CN114721600A - NVMe设备中软硬件协同的命令解析系统及方法 - Google Patents
NVMe设备中软硬件协同的命令解析系统及方法 Download PDFInfo
- Publication number
- CN114721600A CN114721600A CN202210526111.0A CN202210526111A CN114721600A CN 114721600 A CN114721600 A CN 114721600A CN 202210526111 A CN202210526111 A CN 202210526111A CN 114721600 A CN114721600 A CN 114721600A
- Authority
- CN
- China
- Prior art keywords
- command
- processed
- configuration information
- submodule
- analysis
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种NVMe设备中软硬件协同的命令解析系统及方法,系统包括:输入模块、CPU、输出模块和解析加速模块,解析加速模块中包括配置信息子模块、命令检查子模块和命令解析子模块;输入模块用于存储待处理命令;命令检查子模块与输入模块连接,用于从输入模块中读取待处理命令,判断待处理命令是否符合配置信息子模块中的配置信息;若是则向命令解析子模块发送解析控制指令;否则向CPU发送解析控制指令;命令解析子模块或CPU用于在接收到解析控制指令时,对待处理命令进行解析,并在对待处理命令解析完成后将解析结果发送至输出模块。本发明实施例在提高解析速度的同时,可以避免CPU的处理速度成为NVMe设备性能的瓶颈。
Description
技术领域
本发明涉及命令处理技术领域,尤其是涉及一种NVMe设备中软硬件协同的命令解析系统及方法。
背景技术
NVMe固态硬盘凭借低延迟和高吞吐量的特点已经取代机械硬盘,成为企业级市场和消费级市场的主要存储介质。NVMe硬盘控制器芯片作为NVMe固态硬盘的重要组成部分,对NVMe固态硬盘的整体性能具有极其重要的影响。
现有的NVMe硬盘控制器普遍使用CPU对命令进行解析,虽然使用CPU对协议进行处理可以保持对协议的兼容,但是也有着处理速度慢,延迟高的问题。由于每一条NVMe命令都需要控制器CPU完成多次数据读取和大量的运算,需要消耗很多的CPU周期。对处理速度达到百万IOPS的NVMe控制器,CPU的处理速度很容易成为性能瓶颈。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供了一种NVMe设备中软硬件协同的命令解析系统及方法。
第一方面,本发明实施例提供一种NVMe设备中软硬件协同的命令解析系统,包括:输入模块、与所述输入模块连接的CPU、与所述CPU连接的输出模块以及解析加速模块,所述解析加速模块中包括配置信息子模块、与所述配置信息子模块连接的命令检查子模块以及与所述命令检查子模块连接的命令解析子模块:其中,
所述输入模块用于存储待处理命令;
所述命令检查子模块,与所述输入模块连接,用于从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
所述命令解析子模块,与所述输出模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块;
所述CPU,与所述命令检查子模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理模块解析完成后将解析结果发送至所述输出模块。
在一些实施例中,所述命令检查子模块用于判断所述待处理命令是否符合所述配置信息子模块中的配置信息的过程包括:提取所述待处理命令中的指定字段,判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;若是,则所述待处理命令符合所述配置信息子模块中的配置信息; 否则,所述待处理命令不符合所述配置信息子模块中的配置信息;其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项。
在一些实施例中,所述CPU,与所述配置信息子模块连接,具体用于:在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;否则对所述待处理命令进行解析处理。
在一些实施例中,所述CPU用于判断所述待处理命令是否能够被所述命令解析子模块解析处理的过程包括:判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;否则,所述待处理命令不能够被所述命令解析子模块解析处理;对应的,所述CPU用于对所述配置信息子模块中的配置信息进行更新的过程包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
在一些实施例中,所述CPU还用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;所述命令解析子模块还用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;所述命令检查子模块还用于:在接收到解析完成的通知后,控制所述输入模块对所述待处理命令的状态进行更新。
在一些实施例中,所述命令解析子模块,与所述输入模块连接,用于:在对所述待处理命令解析过程中,从所述输入模块中获取解析所需信息。
第二方面,本发明实施例提供一种NVMe设备中软硬件协同的命令解析方法,该方法基于第一方面提供的系统实现,所述方法包括:
命令检查子模块从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
命令解析子模块或所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块。
在一些实施例中,所述判断所述待处理命令是否符合所述配置信息子模块中的配置信息,包括:
提取所述待处理命令中的指定字段;其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项;
判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;
若是,则所述待处理命令符合所述配置信息子模块中的配置信息;
否则,所述待处理命令不符合所述配置信息子模块中的配置信息。
在一些实施例中,所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,包括:
所述CPU在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;
若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;
否则,对所述待处理命令进行解析处理。
在一些实施例中,所述判断所述待处理命令是否能够被所述命令解析子模块解析处理,包括:
所述CPU判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;否则,所述待处理命令不能够被所述命令解析子模块解析处理;
对应的,所述对所述配置信息子模块中的配置信息进行更新,包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
本发明实施例提供的NVMe设备中软硬件协同的命令解析系统及方法,由于系统中包括输入模块、CPU、输出模块以及解析加速模块,所述解析加速模块中包括配置信息子模块、命令检查子模块以及命令解析子模块:所述命令检查子模块从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;所述命令解析子模块或所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理模块解析完成后将解析结果发送至所述输出模块。通过本发明实施例提供的系统中的命令解析子模块解析一些常见命令,采用CPU解析命令解析子模块无法解析的命令,这样可以减少CPU的解析工作量,CPU和命令解析子模块可以并行处理不同的命令,这样可以大幅度的从整体上提高解析命令的速度。同时由于NVMe协议复杂且仍在持续更新,由CPU解析命令解析子模块无法解析的命令,因此可以保持对协议更新的兼容性。可见本发明实施例在提高解析速度的同时,可以避免CPU的处理速度成为NVMe设备性能的瓶颈。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例中NVMe设备中软硬件协同的命令解析系统的结构框图;
图2为本发明一个实施例中NVMe设备中软硬件协同的命令解析方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供一种NVMe设备中软硬件协同的命令解析系统。参见图1,该系统包括:输入模块、与所述输入模块连接的CPU、与所述CPU连接的输出模块以及解析加速模块,所述解析加速模块中包括配置信息子模块、与所述配置信息子模块连接的命令检查子模块以及与所述命令检查子模块连接的命令解析子模块:其中,
所述输入模块用于存储待处理命令;
所述命令检查子模块,与所述输入模块连接,用于从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
所述命令解析子模块,与所述输出模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块;
所述CPU,与所述命令检查子模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理模块解析完成后将解析结果发送至所述输出模块。
也就是说,当输入模块中存在待处理命令时,命令检查子模块从输入模块中读取待处理命令,然后从配置信息子模块中获取配置信息,进而判断待处理命令是否符合配置信息,如果符合,则该待处理命令由命令解析子模块进行解析处理,从而实现硬件解析。如果不符合,则该待处理命令由CPU进行解析处理,从而实现软件解析。不论是命令解析子模块还是CPU在对待处理命令解析完成后,将解析结果都存放到输出模块中进行保存,至此实现对一个待处理命令的解析过程。
其中,配置信息子模块中的配置信息包括命令字、命名空间、地址和长度等要求,符合这些要求的待处理命令可以由命令解析子模块进行解析处理,而不符合这些要求的待处理命令需要由CPU处理或者由CPU进一步进行判断处理。
在具体实施时,所述命令检查子模块用于判断所述待处理命令是否符合所述配置信息子模块中的配置信息的过程包括:
提取所述待处理命令中的指定字段,判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;
若是,则所述待处理命令符合所述配置信息子模块中的配置信息;
否则,所述待处理命令不符合所述配置信息子模块中的配置信息;
其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项。
也就是说,命令检查子模块在判断待处理命令是否符合配置信息的过程可以具体为:首先提取待处理命令中的指定字段,然后判断指定字段中的字段内容是否符合配置信息中的对应的字段要求,如果符合,就说明待处理命令符合配置信息,如果不符合,说明待处理命令不符合配置信息。
例如,配置信息中命令字为读、写,而待处理命令中的命令字字段中的命令字为读,说明待处理命令符合命令字的要求。再例如,如果配置信息中的地址为某个地址范围,而待处理命令所需读取或者写入的地址范围在这个地址范围内,说明待处理命令符合地址要求。
其中,在上述过程中,可以分步骤进行检查,例如,首先对命令字进行检查,如果待处理命令符合命令字的要求,再继续对其它的字段内容进行检查,如果待处理命令通过了所有的检查,则检查命令子模块请求命令解析子模块对待处理命令进行解析,否则请求CPU对待处理命令进行解析。
可理解的是,命令解析子模块在接收到命令检查子模块发送来的解析控制指令时,对待处理命令进行解析,在解析完成后将解析结果写入输出模块中。在解析过程中,命令解析子模块可能需要从输入模块中获取所需的信息。
同样,CPU在接收到命令检查子模块发送来的解析控制指令时,CPU对待处理命令进行解析,在解析完成后将解析结果写入输出模块中。在解析过程中,CPU有可能需要从输入模块中获取所需的信息。
在具体实施时,所述CPU与所述配置信息子模块连接,所述CPU也可以具体用于:
在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;
若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;
否则对所述待处理命令进行解析处理。
在实际场景中,如果命令检查子模块根据配置信息认为待处理命令不能由命令解析子模块进行解析处理,但实际是可以由命令解析子模块处理的。例如,在配置信息子模块中的配置信息中的地址为一个地址范围,该地址范围仅仅是所有可选范围中的一段,而该地址范围已经写满,所以待处理命令的地址字段中的地址为下一段地址范围,所以当命令检查子模块在判断待处理命令是否符合配置信息时发现地址范围不符合,因而控制CPU进行解析处理。但是当CPU得知在命令检查子模块中进行判断时仅仅是地址信息不符合,其它信息都是符合的,此时CPU会通知配置信息子模块进行地址更新,更新为下一个地址范围,此时再通知命令检查子模块重新进行判断,即重新执行上述过程。如果此时检查命令字模块经过重新判断认为待处理命令可以由命令解析字模块进行处理,此时控制命令解析子模块进行解析处理。
也就是说,所述CPU用于判断所述待处理命令是否能够被所述命令解析子模块解析处理的过程可以包括:
判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;
若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;
否则,所述待处理命令不能够被所述命令解析子模块解析处理。
即,只有地址要求不符合,而其他要求均符合,此时通知认为命令解析子模块是可以解析待处理命令的,故CPU通知命令检查子模块重新进行判断。
对应的,所述CPU用于对所述配置信息子模块中的配置信息进行更新的过程包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
其中,所谓的下一个地址范围是指在可选地址范围内当前地址范围相邻的下一段地址范围。例如,可选地址范围为10000个地址,这10000个地址被划分为100个地址范围,当前地址范围为第一个地址范围,则下一个地址范围为第二个地址范围。
在具体实施时,CPU或者命令解析子模块在对待处理命令解析完后会还可以通知检查子模块,这样命令检查子模块得知解析完成可以通知输入模块对待处理命令的状态进行更新,例如,将状态标记为已解析,还可以将待处理命令删除。
也就是说,所述CPU还可以用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;
所述命令解析子模块还用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;
所述命令检查子模块还用于:在接收到解析完成的通知后,控制所述输入模块对所述待处理命令的状态进行更新。
即,不论是CPU还是命令解析子模块在处理完成后都会通知命令检查子模块,然后命令检查子模块会控制输入模块进行状态更新等处理。
在具体实施时,所述命令解析子模块还可以与所述输入模块连接,这样命令解析子模块在对所述待处理命令解析过程中,从所述输入模块中获取解析所需信息。
其中,由命令解析子模块解析的待处理命令是一些常见命令,而CPU尽管可以对所有的命令进行解析,但是本发明实施例中将一部分常见命令的解析任务转移到命令解析子模块中,而由于NVMe协议复杂且仍在持续更新,本发明实施例采用CPU解析命令解析子模块无法解析的命令。即,本发明实施例提供的系统将硬件解析和软件解析相结合,在提高解析速度的同时可以保持对协议更新的兼容性,由于减少了CPU的解析工作量,可以避免CPU的处理速度成为NVMe设备性能的瓶颈。
可理解的是,本发明实施例中采用解析加速模块对部分命令进行解析,大部分的命令是常用的IO命令(比如读命令、写命令等),所以由解析加速模块可以实现大部分命令的解析,因此通过解析加速模块可以大幅度的从整体上提高解析命令的速度。而且,本发明通过配置信息的方式确定具体由谁进行命令解析,这样可以保持对协议的兼容性。本发明实施例中将命令的检查和解析进行分离,可以保证软硬件协同处理的逻辑清晰。
第二方面,本发明实施例提供一种NVMe设备中软硬件协同的命令解析方法,该方法基于第一方面提供的系统实现,参见图2,所述方法包括:
命令检查子模块从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
命令解析子模块或所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块。
在一些实施例中,所述判断所述待处理命令是否符合所述配置信息子模块中的配置信息,包括:
提取所述待处理命令中的指定字段;其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项;
判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;
若是,则所述待处理命令符合所述配置信息子模块中的配置信息;
否则,所述待处理命令不符合所述配置信息子模块中的配置信息。
进一步的,所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,包括:
所述CPU在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;
若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;
否则,对所述待处理命令进行解析处理。
更进一步的,所述判断所述待处理命令是否能够被所述命令解析子模块解析处理,包括:
所述CPU判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;否则,所述待处理命令不能够被所述命令解析子模块解析处理;
对应的,所述对所述配置信息子模块中的配置信息进行更新,包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
在一些实施例中,方法还可以包括:
所述CPU或所述命令解析子模块在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;
所述命令检查子模块在接收到解析完成的通知后,控制所述输入模块对所述待处理命令的状态进行更新。
在一些实施例中,方法还包括:
所述命令解析子模块在对所述待处理命令解析过程中,从所述输入模块中获取解析所需信息。
可理解的是,本发明实施例提供的方法中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的系统中的相应部分,此处不再赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种NVMe设备中软硬件协同的命令解析系统,其特征在于,包括:输入模块、与所述输入模块连接的CPU、与所述CPU连接的输出模块以及解析加速模块,所述解析加速模块中包括配置信息子模块、与所述配置信息子模块连接的命令检查子模块以及与所述命令检查子模块连接的命令解析子模块;其中,
所述输入模块用于存储待处理命令;
所述命令检查子模块,与所述输入模块连接,用于从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
所述命令解析子模块,与所述输出模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块;
所述CPU,与所述命令检查子模块连接,用于在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理模块解析完成后将解析结果发送至所述输出模块。
2.根据权利要求1所述的系统,其特征在于,所述命令检查子模块用于判断所述待处理命令是否符合所述配置信息子模块中的配置信息的过程包括:提取所述待处理命令中的指定字段,判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;若是,则所述待处理命令符合所述配置信息子模块中的配置信息; 否则,所述待处理命令不符合所述配置信息子模块中的配置信息;其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项。
3.根据权利要求2所述的系统,其特征在于,
所述CPU,与所述配置信息子模块连接,具体用于:在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;否则对所述待处理命令进行解析处理。
4.根据权利要求3所述的系统,其特征在于,所述CPU用于判断所述待处理命令是否能够被所述命令解析子模块解析处理的过程包括:判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;否则,所述待处理命令不能够被所述命令解析子模块解析处理;
对应的,所述CPU用于对所述配置信息子模块中的配置信息进行更新的过程包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
5.根据权利要求1所述的系统,其特征在于,
所述CPU还用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;
所述命令解析子模块还用于:在对所述待处理命令解析完成后,通知所述命令检查子模块解析完成;
所述命令检查子模块还用于:在接收到解析完成的通知后,控制所述输入模块对所述待处理命令的状态进行更新。
6.根据权利要求1所述的系统,其特征在于,
所述命令解析子模块,与所述输入模块连接,用于:在对所述待处理命令解析过程中,从所述输入模块中获取解析所需信息。
7.一种NVMe设备中软硬件协同的命令解析方法,其特征在于,该方法基于权利要求1~6任一项所述的系统实现,所述方法包括:
命令检查子模块从所述输入模块中读取所述待处理命令,判断所述待处理命令是否符合所述配置信息子模块中的配置信息;若是,则向所述命令解析子模块发送解析控制指令;否则,向所述CPU发送解析控制指令;
命令解析子模块或所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,并在对所述待处理命令解析完成后将解析结果发送至所述输出模块。
8.根据权利要求7所述的方法,其特征在于,所述判断所述待处理命令是否符合所述配置信息子模块中的配置信息,包括:
提取所述待处理命令中的指定字段;其中,所述指定字段包括命令字字段、命名空间字段、地址字段和长度字段中的至少一项;
判断所述指定字段中的字段内容是否符合所述配置信息中对应的字段要求;
若是,则所述待处理命令符合所述配置信息子模块中的配置信息;
否则,所述待处理命令不符合所述配置信息子模块中的配置信息。
9.根据权利要求8所述的方法,其特征在于,所述CPU在接收到所述解析控制指令时,对所述待处理命令进行解析,包括:
所述CPU在接收到所述解析控制指令时,判断所述待处理命令是否能够被所述命令解析子模块解析处理;
若是,则对所述配置信息子模块中的配置信息进行更新,并通知所述命令检查子模块返回“判断所述待处理命令是否符合所述配置信息子模块中的配置信息”的步骤;
否则,对所述待处理命令进行解析处理。
10.根据权利要求9所述的方法,其特征在于,所述判断所述待处理命令是否能够被所述命令解析子模块解析处理,包括:
所述CPU判断所述待处理命令是否符合所述配置信息中除了地址字段之外的其它指定字段对应的字段要求;若是,则确定所述待处理命令能够被所述命令解析子模块解析处理;否则,所述待处理命令不能够被所述命令解析子模块解析处理;
对应的,所述对所述配置信息子模块中的配置信息进行更新,包括:将所述配置信息中的地址字段中的当前地址范围更新为所述当前地址范围的下一个地址范围。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210526111.0A CN114721600B (zh) | 2022-05-16 | 2022-05-16 | NVMe设备中软硬件协同的命令解析系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210526111.0A CN114721600B (zh) | 2022-05-16 | 2022-05-16 | NVMe设备中软硬件协同的命令解析系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114721600A true CN114721600A (zh) | 2022-07-08 |
CN114721600B CN114721600B (zh) | 2022-09-02 |
Family
ID=82230940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210526111.0A Active CN114721600B (zh) | 2022-05-16 | 2022-05-16 | NVMe设备中软硬件协同的命令解析系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721600B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710187A (zh) * | 2018-12-24 | 2019-05-03 | 深圳忆联信息系统有限公司 | NVMe SSD主控芯片的读命令加速方法、装置、计算机设备及存储介质 |
US20190163364A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
CN109918319A (zh) * | 2019-03-22 | 2019-06-21 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
US20210019077A1 (en) * | 2019-07-15 | 2021-01-21 | Western Digital Technologies, Inc. | Automatic host buffer pointer pattern detection |
CN113835756A (zh) * | 2021-09-28 | 2021-12-24 | 深圳大普微电子科技有限公司 | 主机命令解析方法和装置、固态硬盘控制器、固态硬盘 |
-
2022
- 2022-05-16 CN CN202210526111.0A patent/CN114721600B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190163364A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
CN109710187A (zh) * | 2018-12-24 | 2019-05-03 | 深圳忆联信息系统有限公司 | NVMe SSD主控芯片的读命令加速方法、装置、计算机设备及存储介质 |
CN109918319A (zh) * | 2019-03-22 | 2019-06-21 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
US20210019077A1 (en) * | 2019-07-15 | 2021-01-21 | Western Digital Technologies, Inc. | Automatic host buffer pointer pattern detection |
CN113835756A (zh) * | 2021-09-28 | 2021-12-24 | 深圳大普微电子科技有限公司 | 主机命令解析方法和装置、固态硬盘控制器、固态硬盘 |
Also Published As
Publication number | Publication date |
---|---|
CN114721600B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9009373B2 (en) | Method for implementing audio transmission and mobile terminal | |
US6954806B2 (en) | Data transfer apparatus and method | |
US20060277325A1 (en) | Efficient data transmission system and method via direct memory access controller | |
CN112947857B (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
US20060236001A1 (en) | Direct memory access controller | |
CN112039999A (zh) | 一种内核态访问分布式块存储系统的方法及系统 | |
CN112765090B (zh) | 一种目标地址的预取方法、系统、设备及介质 | |
CN114721600B (zh) | NVMe设备中软硬件协同的命令解析系统及方法 | |
CN110889880A (zh) | 一种贴图处理方法、装置、设备及存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
JP2005258509A (ja) | ストレージ装置 | |
CN113971158A (zh) | 基于网卡的内存访问方法、内存访问方法、设备及系统 | |
CN112416564A (zh) | 一种中断处理方法及处理装置 | |
US7154948B2 (en) | Video codec system, method for processing data between system and host system, and encoding/decoding control method in the system | |
CN117667793B (zh) | 一种多通道描述符管理系统、方法、设备、介质 | |
CN116599917B (zh) | 网口确定方法、装置、设备及存储介质 | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
CN113468195B (zh) | 服务器数据缓存更新方法、系统和主数据库服务器 | |
CN117971583B (zh) | 一种存储颗粒的测试方法、系统、电子设备及存储介质 | |
US20240069754A1 (en) | Computing system and associated method | |
CN111600949B (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN118069570A (zh) | 一种门铃式芯片访问系统、装置和方法 | |
CN116048420A (zh) | 基于小批量数据的固态硬盘读写性能提升方法和装置 | |
CN111200594A (zh) | 接收数据的方法、装置、数据接收设备和存储介质 | |
CN114461408A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |