CN113835756A - 主机命令解析方法和装置、固态硬盘控制器、固态硬盘 - Google Patents

主机命令解析方法和装置、固态硬盘控制器、固态硬盘 Download PDF

Info

Publication number
CN113835756A
CN113835756A CN202111143686.6A CN202111143686A CN113835756A CN 113835756 A CN113835756 A CN 113835756A CN 202111143686 A CN202111143686 A CN 202111143686A CN 113835756 A CN113835756 A CN 113835756A
Authority
CN
China
Prior art keywords
command
processed
type
microcode
solid state
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.)
Pending
Application number
CN202111143686.6A
Other languages
English (en)
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 CN202111143686.6A priority Critical patent/CN113835756A/zh
Publication of CN113835756A publication Critical patent/CN113835756A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及存储技术领域,特别涉及一种主机命令解析方法和装置、固态硬盘控制器以及固态硬盘。本发明提供的主机命令解析方法通过接收主机发送的待处理命令,检测该待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令,根据该待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,从而通过所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。本发明通过对待处理命令划分类型,根据待处理命令的类型在对应的命令处理模块中解析该命令,不仅提高了命令解析效率,而且提高了命令解析的灵活性。

Description

主机命令解析方法和装置、固态硬盘控制器、固态硬盘
技术领域
本发明涉及存储技术领域,特别涉及一种主机命令解析方法和装置、固态硬盘控制器以及固态硬盘。
背景技术
目前,固态硬盘控制器在处理主机下发的命令时,通常是NVMe(Non-VolatileMemory express,非易失性内存主机控制器接口规范)控制器从主机获取命令,然后提交给固态硬盘控制器内的处理器,该处理器解析该命令,根据该命令反馈一存储空间至NVMe控制器,NVMe控制器再从主机取数据写入至该存储空间。当数据传输完成,NVMe控制器通过该处理器发送命令至闪存控制器,闪存控制器根据接收到的命令从上述存储空间中搬移所传输的数据至闪存,最后处理器释放该存储空间。
发明人在实现本发明实施例的过程中发现,相关技术是将主机命令都提交给处理器来解析,这会造成命令解析效率低,无法满足性能的要求。
发明内容
本发明实施方式主要解决的技术问题是如何提高主机命令的解析效率。
为解决上述技术问题,本发明实施方式采用的一个技术方案是:提供一种主机命令解析方法,所述方法包括:
接收主机发送的待处理命令;
检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;
根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
可选的,所述检测所述待处理命令的类型包括:
解析所述待处理命令的命令操作码;
根据所述命令操作码确定所述待处理命令的类型。
可选的,在所述待处理命令的类型为所述已发布协议命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为所述已发布协议命令时,传输所述待处理命令至硬件自动解析模块;
通过所述硬件自动解析模块根据所述命令操作码解析所述待处理命令,获得所述待处理命令的类型、命令需要传输的数据长度、物理内存页大小以及命令错误指示信息。
可选的,在所述待处理命令的类型为新增读写命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为新增读写命令时,传输所述待处理命令至微码控制器;
通过所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码;
根据所述微码解析所述待处理命令。
可选的,所述通过所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码包括:
通过所述微码控制器比较微码对应的命令操作码与所述待处理命令对应的命令操作码;
在两个所述命令操作码相同时,获取所述命令操作码对应的微码。
可选的,所述根据所述微码解析所述待处理命令具体包括:
获取所述微码的格式,并根据所述微码的格式解析所述待处理命令。
可选的,在所述待处理命令的类型为新增管理命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为新增管理命令时,传输所述待处理命令至微控制器;
通过所述微控制器从存储器中获取预设指令,并根据所述预设指令解析所述待处理命令。
为解决上述技术问题,本发明实施方式采用的另一个技术方案是:提供一种主机命令解析装置,包括:
命令接收模块,用于接收主机发送的待处理命令;
类型检测模块,用于检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;
命令解析模块,用于根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
为解决上述技术问题,本发明实施方式采用的又一个技术方案是:提供一种固态硬盘控制器,包括:一个或多个处理器,以及存储器;在所述存储器中存储有程序,当所述程序被所述一个或多个处理器执行时,所述程序使所述固态硬盘控制器执行上述所述的主机命令解析方法。
为解决上述技术问题,本发明实施方式采用的还一个技术方案是:提供一种固态硬盘,包括:上述所述的固态硬盘控制器,以及分别与所述固态硬盘控制器连接的硬件自动解析模块、微码控制器和微控制器。
区别于相关技术的情况,本发明实施例提供的主机命令解析方法和装置、固态硬盘控制器、固态硬盘,通过接收待处理命令,根据待处理命令的命令操作码来检测待处理命令的类型,并根据该命令的类型为之分配对应的命令处理模块,并在该命令处理模块中解析所述待处理命令,获取待处理命令的解析结果。若检测到待处理命令为已发布协议命令,则传输所述待处理命令至硬件自动解析模块进行解析;若检测到待处理命令为新增读写命令,则传输所述待处理命令至微码控制器,通过引入微码控制器来高效率地解析新增读写命令,提高固态硬盘和主机间的数据传输效率;若检测到所述待处理命令的类型为新增管理命令,则传输所述待处理命令至微控制器进行解析。综上,本发明实施例提供的主机命令解析方法和装置、固态硬盘控制器、固态硬盘能够对待处理命令进行类型判定,根据待处理命令的类型在对应的命令处理模块中解析该命令,不仅提高了命令解析效率,而且提高了命令解析的灵活性。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种固态硬盘的结构示意图;
图2是本发明实施例提供的一种固态硬盘控制器的结构示意图;
图3是本发明实施例提供的一种主机命令解析方法的流程示意图;
图4是图3中S12的具体流程示意图;
图5是图3中关于已发布协议命令的解析流程图;
图6是图3中关于新增读写命令的解析流程图;
图7是图3中关于新增管理命令的解析流程图;
图8是本发明实施例提供的一种指令集的示例图;
图9是本发明实施例提供的命令操作码和命令类型的对应关系示例图;
图10是本发明实施例提供的一种主机命令解析装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明,所描述的实施例是本发明一部分实施例,而不是全部的实施例。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互组合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块的划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。除非另有定义,本说明书所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本发明。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本发明实施例提供的主机命令解析方法,在接收到待处理命令时,先根据待处理命令的命令操作码来检测待处理命令的类型,并根据该命令的类型为之分配对应的命令处理模块,并在该命令处理模块中解析所述待处理命令,获取待处理命令的解析结果。若检测到待处理命令为已发布协议命令,则传输所述待处理命令至硬件自动解析模块进行解析;若检测到待处理命令为新增读写命令,则传输所述待处理命令至微码控制器,通过引入微码控制器来高效率地解析新增读写命令,提高固态硬盘和主机间的数据传输效率;若检测到所述待处理命令的类型为新增管理命令,则传输所述待处理命令至微控制器进行解析。总体上,本发明实施例能够对待处理命令进行类型判定,根据待处理命令的类型在对应的命令处理模块中解析该命令,既满足了解析命令的效率,又可以提高解析命令的灵活性。
可以将本发明实施例提供的主机命令解析方法应用于固态硬盘,特别可以应用于NVMe固态硬盘的主机命令的解析,由此提高固态硬盘命令解析效率和提高解析命令的灵活性。
请参阅图1,为本发明实施例提供的一种固态硬盘的结构示意图。如图1所示,所述固态硬盘20包括固态硬盘控制器21、以及分别与所述固态硬盘控制器21连接的微码控制器22、硬件自动解析模块23和微控制器24。其中,所述固态硬盘20可以通过有线或者无线的方式与主机10通信连接,用以实现数据交互。
其中,固态硬盘控制器21用于作为控制运算单元,管理固态硬盘20内部系统。在本实施例中,该固态硬盘控制器21用于负责解析主机命令的流程控制,具体用于从微码控制器22、硬件自动解析模块23和微控制器24中决策出用于解析当前的主机命令的模块。
在一个实施例中,请参阅图2,固态硬盘控制器21包括一个或多个处理器211以及存储器212。处理器211与存储器212连接,可以通过总线或者其他方式连接。所述处理器211用于运行存储在存储器212中的非易失性软件程序、指令以及模块,从而实现本发明的任一方法实施例。例如:所述处理器211用于接收主机发送的待处理命令;检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
存储器212主要用于缓存主机10发送的读/写指令以及根据主机10发送的读/写指令从闪存介质获取的读数据或者写数据。存储器212作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器212可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器212可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器212可选包括相对于处理器211远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述存储器212可以为静态随机存取存储器(Static RandomAccess Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDRSRAM)。
其中,微码控制器22、硬件自动解析模块23和微控制器24可以以集成电路的方式集成于所述固态硬盘20上,所述固态硬盘20具体可以是NVMe固态硬盘。所述微码控制器22和所述微控制器24用于解析新增的主机命令,即未来新版本协议中的命令,包括新增读写命令和新增管理命令,所述硬件自动解析模块23用于解析已经发布的最新协议中的命令。
具体地,所述微码控制器22通过微码对主机命令进行解析,所述微码指的是所述微码控制器22的执行指令。通过微码对主机命令进行解析的详细过程可参考下述方法实施例。所述硬件自动解析模块23用于对当前版本的协议中的命令进行自动解析。所述微控制器24通过在线可编程的方式处理新增管理命令,对新增管理命令进行解析。
所述固态硬盘20还包括至少一个闪存介质,作为所述固态硬盘20的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质得以成为各类便携型数字设备的存储介质的基础。
其中,闪存介质可以为Nand FLASH,Nand FLASH以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand FLASH的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand FLASH的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand FLASH的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。
一个Nand FLASH包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是Nand FLASH执行擦除操作的最小单位,Page页为Nand FLASH执行读写操作的最小单位,一个Nand FLASH的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。具体的,闪存介质按照存储单元的电压的不同层次,可分为SLC、MLC、TLC以及QLC。
本发明实施例提供的固态硬盘通过检测所述待处理命令的类型,并根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。相较于现有技术,本发明实施例提供的固态硬盘不仅能够提高命令解析的效率,而且可以提高命令解析的灵活性。
请参阅图3,为本发明实施例提供的一种主机命令解析方法的流程示意图。该方法可以应用于上述固态硬盘20,具体可以应用于上述固态硬盘控制器21。该方法包括:
S11、接收主机发送的待处理命令。
固态硬盘可以接收主机通过总线发送的待处理命令。通常情况下,主机基于NVMe协议(Non-Volatile Memory Express,非易失性存储器,是专为固态存储器设计的新型传输协议)下发命令,包括已发布协议命令、新增读写命令和新增管理命令等,其中,已发布协议命令指目前版本的协议中的命令,例如当前2.0版本的NVMe协议中的命令;新增读写命令指将来新版本协议中新增的读写命令(I/O命令);新增管理命令指将来新版本协议中新增的管理命令(Admin命令)。通常情况下,管理命令主要用在主机管理和控制固态硬盘的情况,因为管理命令使用频率较低,所以一般对解析管理命令的效率要求不高,而读写命令通常用于主机与固态硬盘之间的数据传输,尤其是其中的Write/Read/Zone Append命令使用频率很高,所以一般对读写命令的解析效率要求较高。
S12、检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令。以写命令为例,NVMe协议中规定的写命令格式如下:
Byte[0]:Opcode(命令操作码)为8’h01
Byte[3:2]:Command identifier(命令标识符)
Byte[7:4]:Namespace identifier(命令空间标识符)
Byte[39:24]:Data pointer(数据指针)
Byte[47:40]:Starting logical block address(数据块的逻辑起始地址)
Byte[49:48]:Number of logical block(数据块的个数,一般以512B或者4KB为单位)
所述待处理命令的命令操作码中通常包含命令类型,检测所述待处理命令的类型时,可以通过解析待处理命令的命令操作码来确定所述待处理命令的类型。通常来说,读写命令(如Write/Read/Zone Append)的命令格式基本相同,如上面的写命令格式示例;但管理命令的格式不统一,例如Direct Receive(opcode为8’h1A)的Byte[43:40]为命令数据的长度且以Dword为单位,而Security Receive(opcode为8’h82)的Byte[47:44]为命令数据的长度且以Byte为单位,其格式并不相同。
请参阅图4,所述检测所述待处理命令的类型包括:
S121、解析所述待处理命令的命令操作码,以使后续可以根据命令的操作码来解析出该命令是否有数据传输、该命令的类型(读/写)、该命令数据传输的大小以及所需要的PRP(Physical Region Page,物理内存页)的个数等信息。
S122、根据所述命令操作码确定所述待处理命令的类型。
例如,请参阅图9,为所述命令操作码和所述命令类型的对应关系,解析所述待处理命令的命令操作码就可以得到所述待处理命令的类型,所述类型具体包括已发布协议命令、新增读写命令和新增管理命令,例如,识别到待处理命令的命令操作码为01h或者02h,则得到所述待处理命令的类型是新增读写命令。
S13、根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
相较于现有技术中将主机命令都提交给处理器来解析的方法,本方案会通过识别命令操作码的方式来识别主机下发的待处理命令的类型,将其分为已发布协议命令、新增读写命令和新增管理命令,并针对不同类型的待处理命令,将其分配至不同的命令处理模块以处理所述待处理命令,不仅能够满足解析命令的效率,又能够保证解析命令的灵活性。
具体的,请参阅图5,在所述待处理命令的类型为所述已发布协议命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
S1311、在所述待处理命令的类型为所述已发布协议命令时,传输所述待处理命令至硬件自动解析模块。所述已发布协议命令指目前协议中的命令,例如当前1.4版本的NVMe协议中的命令。
S1312、通过所述硬件自动解析模块根据所述命令操作码解析所述待处理命令,获得所述待处理命令的类型、命令需要传输的数据长度、物理内存页大小以及命令错误指示信息。
所述硬件自动解析模块会根据所述待处理命令中的命令操作码解析出所述待处理命令的类型,自动检查各个区域是否合法,再判断命令的方向时读还是写,以及判断命令的大小,确定命令需要传输的数据长度、存储所需要的PRP个数以及命令中是否有错误等信息,然后申请数据存储空间以存储数据。以写命令(opcode为8’h01)为例,若接收的待处理命令的命令操作码为8’h01,则解析为写命令并且有数据传输,例如其中待处理命令中的[49:48]为数据传输的长度/数据块的个数等信息,根据协议中每个命令的格式可以解析目前协议中的所有命令。
请参阅图6,在所述待处理命令的类型为新增读写命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
S1321、在所述待处理命令的类型为新增读写命令时,传输所述待处理命令至微码控制器。所述新增读写命令指在目前协议的基础上新增的读写命令,例如NVMe协议版本更新后新增加的读写命令,由于所述新增读写命令是新增的命令,不能预知到所述新增读写命令的命令操作码,本实施例通过引入可编程的微码控制器并结合微码来解析所述新增读写命令,请参阅上述写命令格式,所述新增读写命令的命令格式基本相同。
S1322、通过所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码。所述微码是在运行一些功能复杂的指令时所分解一系列相对简单的指令,在微码控制器的初始化阶段就需要将所述微码写入微码控制器内部的寄存器(SRAM,StaticRandom-Access Memory,静态随机存取存储器),此时微码保存在内存中,每次启动软件时可以更新所述微码。由于一般情况下协议版本更新时新增加的读写命令不多,例如NVMe协议从1.3版本到1.4版本增加了一个读写命令,本实施例中可以选择写入8条微码,通常能够满足使用需求,还可以保证在1-8个时钟周期完成命令的解析。
本实施例通过引入微码和微码控制器,将机器指令与相关的电路实现分离,这样一来机器指令可以更自由的进行设计与修改,而不用考虑到实际的电路架构。
其中,所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码包括:
S13221、通过所述微码控制器比较微码对应的命令操作码与所述待处理命令对应的命令操作码;
S13222、在两个所述命令操作码相同时,获取所述命令操作码对应的微码。
所述微码控制器会依次从寄存器中获取微码,并将微码中对应的命令操作码与所述待处理命令对应的命令操作码进行比较,当该条微码对应的比较结果相同,则选择这条微码对所述待处理命令进行解析,若比较结果不同,则继续获取下一条微码对应进行比较。
S1323、根据所述微码解析所述待处理命令。具体包括:
S13231、获取所述微码的格式,并根据所述微码的格式解析所述待处理命令。
在本实施例中,微码的格式可以是:
bit[7:0]:opcode(命令操作码)
bit[13:8]:命令的大小为64Byte(用于确定选取哪个byte被解析成数据的长度)
bit[15:14]:指定数据长度的单位(2’b00是Byte,2’b01是Dword,2’b10是512Byte,2’b11是4K byte)
bit[16]:指定命令的类型(1’b0是写方向,1’b1是读方向)
bit[17]:指定数据长度的基准值(1’b0是基0的值,1’b1是基1的值)
bit[19:18]:指定命令的优先级
微码控制器接收到所述待处理命令后,首先比较微码中的命令操作码和待处理命令中的命令操作码,若相同,则通过微码的bit[13:8]以及bit[15:16]来解析所述待处理命令的长度,然后通过微码的bit[16]确定所述待处理命令的传输方向,再通过bit[19:18]确定所述待处理命令的优先级,之后为所述待处理命令确定一块存储空间,并将所述待处理命令提交至固态硬盘控制器的处理器。
在本实施例中,所述微码控制器可以包括微码寄存器、微码控制单元、微码比较单元、算术逻辑单元和结果输出单元。所述微码存放在所述微码寄存器中,所述微码控制模块从微码寄存器中获取微码,所述微码比较单元将待处理命令的命令操作码和微码的命令操作码进行比较,所述算术逻辑单元可以进行逻辑运算,例如包括加法、减法及移位操作等,所述微码控制模块还包含程序地址自增处理以及程序结束处理,解析完成后通过结果输出单元输出所述待处理命令的解析结果,包括命令类型、命令长度以及错误状态等信息。
请参阅图7,在所述待处理命令的类型为新增管理命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
S1331、在所述待处理命令的类型为新增管理命令时,传输所述待处理命令至微控制器;
S1332、通过所述微控制器从存储器中获取预设指令,并根据所述预设指令解析所述待处理命令。
所述新增管理命令指指在目前协议的基础上新增的管理命令,例如NVMe协议版本更新后新增加的管理命令,由于所述新增管理命令是新增的命令,不能预知到所述新增管理命令的命令操作码,并且相较于上述实施例中的新增读写命令,所述新增管理命令的命令格式并不统一,在本实施例中,微控制器通过在线可编程的方式来解析所述新增管理命令,在微控制对应的芯片的初始化阶段,软件可以在线将指令写入内部的寄存器。然后,微控制器会依次从寄存器中取出指令进行执行来解析主机的命令。其中,可以针对NVMe协议中规定的命令来设计所述微控制器,使其能够支持5级流水线和冲突检测,例如使用32-bit指令集,可以提供算术运算,以计算出待处理命令的长度,可以提供跳转指令以进行命令操作码的比较,并将执行命令时的临时数据和执行命令后的状态存放于通用寄存器中。其中所述指令集的示例如图8所示,通用寄存器的示例如下:
通用寄存器
0~7:$t0~$t7(32-bit临时寄存器)
8:$zero
9:$opcode(命令操作码寄存器)
10~15:$cmd_entry(命令Dword[15:10]的内容)
16:$bc(命令total byte count寄存器)
17:$cmd_type(命令类型,最高bit是表示是否有数据传输)
18:$error(最高bit是表示是否有error)
在本实施例中,所述微控制器可以包括命令寄存器、命令获取单元、命令解析单元、算术逻辑单元和寄存器堆。其中,软件执行的命令存放在所述命令寄存器中,所述命令获取单元可以从所述命令寄存器里面取命令,还包含程序地址自增处理以及地址的跳转处理,所述命令解析单元可以根据命令的命令操作码来解析命令,例如可以是跳转命令或者算术逻辑命令,所述算术逻辑单元可以进行逻辑运算,例如包括加法、减法及移位操作等,所述寄存器堆中包含8个32-bit的临时寄存器、操作码寄存器以及错误状态寄存器等,配合命令解析单元解析命令。
在一些实施例中,当接收到主机发送的待处理命令时,会先根据所述待处理命令的命令操作码来确定所述待处理命令是否属于已发布协议命令,若是,则直接传输所述待处理命令至硬件自动解析模块进行解析;若不是,再继续确定所述待处理命令属于新增读写命令还是新增管理命令,若是新增读写命令则传输所述待处理命令至微码控制器进行解析,若是新增管理命令则传输所述待处理命令至微控制器进行解析。
本发明实施例提供了一种主机命令解析方法,通过接收主机发送的待处理命令,然后检测所述待处理命令的类型,并根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。其中,待处理命令的类型包括已发布协议命令、新增读写命令和新增管理命令,若检测到待处理命令为已发布协议命令,则传输所述待处理命令至硬件自动解析模块进行解析;若检测到待处理命令为新增读写命令,则传输所述待处理命令至微码控制器,通过引入微码控制器来高效率地解析新增读写命令,提高固态硬盘和主机间的数据传输效率;若检测到所述待处理命令的类型为新增管理命令,则传输所述待处理命令至微控制器进行解析,相较于现有技术中将主机命令都提交给处理器来解析的方案,本方法既满足了解析命令的效率,又可以提高解析命令的灵活性。
请参阅图10,图10是本发明实施例提供的一种主机命令解析装置的结构示意图,该主机命令解析装置30包括命令接收模块31、类型检测模块32和命令解析模块33。
命令接收模块31,用于接收主机发送的待处理命令;
类型检测模块32,用于检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;
命令解析模块33,用于根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
需要说明的是,上述主机命令解析装置可执行本发明实施例所提供的主机命令解析方法,具备执行方法相应的功能模块和有益效果。未在主机命令解析装置实施例中详尽描述的技术细节,可参见本发明实施例所提供的主机命令解析方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种主机命令解析方法,其特征在于,包括:
接收主机发送的待处理命令;
检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;
根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
2.根据权利要求1所述的方法,其特征在于,所述检测所述待处理命令的类型包括:
解析所述待处理命令的命令操作码;
根据所述命令操作码确定所述待处理命令的类型。
3.根据权利要求2所述的方法,其特征在于,在所述待处理命令的类型为所述已发布协议命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为所述已发布协议命令时,传输所述待处理命令至硬件自动解析模块;
通过所述硬件自动解析模块根据所述命令操作码解析所述待处理命令,获得所述待处理命令的类型、命令需要传输的数据长度、物理内存页大小以及命令错误指示信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,在所述待处理命令的类型为新增读写命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为新增读写命令时,传输所述待处理命令至微码控制器;
通过所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码;
根据所述微码解析所述待处理命令。
5.根据权利要求4所述的方法,其特征在于,所述通过所述微码控制器根据所述命令操作码获取与所述待处理命令匹配的微码包括:
通过所述微码控制器比较微码对应的命令操作码与所述待处理命令对应的命令操作码;
在两个所述命令操作码相同时,获取所述命令操作码对应的微码。
6.根据权利要求4所述的方法,其特征在于,所述根据所述微码解析所述待处理命令具体包括:
获取所述微码的格式,并根据所述微码的格式解析所述待处理命令。
7.根据权利要求1至3任一项所述的方法,其特征在于,在所述待处理命令的类型为新增管理命令时,所述根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果包括:
在所述待处理命令的类型为新增管理命令时,传输所述待处理命令至微控制器;
通过所述微控制器从存储器中获取预设指令,并根据所述预设指令解析所述待处理命令。
8.一种主机命令解析装置,其特征在于,包括:
命令接收模块,用于接收主机发送的待处理命令;
类型检测模块,用于检测所述待处理命令的类型,所述类型包括已发布协议命令、新增读写命令和新增管理命令;
命令解析模块,用于根据所述待处理器命令的类型,发送所述待处理命令至所述类型对应的命令处理模块,以根据所述命令处理模块解析所述待处理命令,获取所述待处理命令的解析结果。
9.一种固态硬盘控制器,其特征在于,包括:一个或多个处理器,以及存储器;
在所述存储器中存储有程序,当所述程序被所述一个或多个处理器执行时,所述程序使所述固态硬盘控制器执行如权利要求1至7任一项所述的主机命令解析方法。
10.一种固态硬盘,其特征在于,包括:权利要求9所述的固态硬盘控制器,以及分别与所述固态硬盘控制器连接的硬件自动解析模块、微码控制器和微控制器。
CN202111143686.6A 2021-09-28 2021-09-28 主机命令解析方法和装置、固态硬盘控制器、固态硬盘 Pending CN113835756A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111143686.6A CN113835756A (zh) 2021-09-28 2021-09-28 主机命令解析方法和装置、固态硬盘控制器、固态硬盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111143686.6A CN113835756A (zh) 2021-09-28 2021-09-28 主机命令解析方法和装置、固态硬盘控制器、固态硬盘

Publications (1)

Publication Number Publication Date
CN113835756A true CN113835756A (zh) 2021-12-24

Family

ID=78967028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111143686.6A Pending CN113835756A (zh) 2021-09-28 2021-09-28 主机命令解析方法和装置、固态硬盘控制器、固态硬盘

Country Status (1)

Country Link
CN (1) CN113835756A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114721600A (zh) * 2022-05-16 2022-07-08 北京得瑞领新科技有限公司 NVMe设备中软硬件协同的命令解析系统及方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177350A1 (en) * 2003-03-07 2004-09-09 Su-Chen Lin Windowstm f-language interpreter
CN1722663A (zh) * 2004-07-13 2006-01-18 联想(北京)有限公司 一种代理服务器系统及其实现代理通讯的方法
CN101645058A (zh) * 2009-09-04 2010-02-10 成都市华为赛门铁克科技有限公司 命令处理方法、命令发送方法、装置及系统
CN102902644A (zh) * 2012-09-28 2013-01-30 忆正科技(武汉)有限公司 一种闪存控制器以及闪存控制方法
CN105739947A (zh) * 2014-12-10 2016-07-06 中兴通讯股份有限公司 一种寄存器冲突的检测方法及装置
CN106776689A (zh) * 2016-11-10 2017-05-31 郑州云海信息技术有限公司 一种主机信息查询方法、装置和主机
CN110601880A (zh) * 2019-09-02 2019-12-20 平安科技(深圳)有限公司 一种云平台、业务处理方法、命令接口及计算机设备
CN112995069A (zh) * 2019-12-16 2021-06-18 华为技术有限公司 一种指令写入方法、装置及网络设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177350A1 (en) * 2003-03-07 2004-09-09 Su-Chen Lin Windowstm f-language interpreter
CN1722663A (zh) * 2004-07-13 2006-01-18 联想(北京)有限公司 一种代理服务器系统及其实现代理通讯的方法
CN101645058A (zh) * 2009-09-04 2010-02-10 成都市华为赛门铁克科技有限公司 命令处理方法、命令发送方法、装置及系统
CN102902644A (zh) * 2012-09-28 2013-01-30 忆正科技(武汉)有限公司 一种闪存控制器以及闪存控制方法
CN105739947A (zh) * 2014-12-10 2016-07-06 中兴通讯股份有限公司 一种寄存器冲突的检测方法及装置
CN106776689A (zh) * 2016-11-10 2017-05-31 郑州云海信息技术有限公司 一种主机信息查询方法、装置和主机
CN110601880A (zh) * 2019-09-02 2019-12-20 平安科技(深圳)有限公司 一种云平台、业务处理方法、命令接口及计算机设备
CN112995069A (zh) * 2019-12-16 2021-06-18 华为技术有限公司 一种指令写入方法、装置及网络设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114721600A (zh) * 2022-05-16 2022-07-08 北京得瑞领新科技有限公司 NVMe设备中软硬件协同的命令解析系统及方法
CN114721600B (zh) * 2022-05-16 2022-09-02 北京得瑞领新科技有限公司 NVMe设备中软硬件协同的命令解析系统及方法

Similar Documents

Publication Publication Date Title
US11735273B2 (en) Data storage systems and methods for improved recovery after a write abort event
US7657696B2 (en) Method to detect NAND-flash parameters by hardware automatically
EP3005127B1 (en) Systems and methods for preventing unauthorized stack pivoting
EP3014461B1 (en) Systems and methods for procedure return address verification
US9858140B2 (en) Memory corruption detection
CN109313620B (zh) 存储器协议
US10275181B2 (en) Methods for scheduling and executing commands in a flash memory and apparatuses using the same
RU2638641C2 (ru) Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы
US10199108B2 (en) Methods for read retries and apparatuses using the same
US9652375B2 (en) Multiple chunk support for memory corruption detection architectures
US10402118B2 (en) Methods for atomic writes in an SSD (solid state disk) system and apparatuses using the same
CN113835756A (zh) 主机命令解析方法和装置、固态硬盘控制器、固态硬盘
CN113396399A (zh) 具有带单根虚拟化的多个端口的存储器子系统
KR101200737B1 (ko) 기지의 프로세서 상태에 기초하여 cam 리네이밍 레지스터 파일 내의 비교기를 선택적으로 인에이블링하는 절전 방법 및 장치
US10254994B2 (en) Methods for migrating data to avoid read disturbance and apparatuses using the same
CN112148203B (zh) 存储器管理方法、装置、电子设备及存储介质
TWI716909B (zh) 記憶體控制系統及操作記憶體控制系統的方法
US10204699B2 (en) Methods for migrating data to avoid read disturbance and apparatuses using the same
US20150046669A1 (en) Storage system and method for operating same
CN112673364A (zh) 数据传输方法、数据传输装置、电子设备和存储介质
CN110879794B (zh) 存储器管理方法以及存储控制器
US20220253314A1 (en) Method performed by a microcontroller for managing a nop instruction and corresponding microcontroller
US11720681B2 (en) Firmware execution profiling and verification
CN116414310A (zh) 一种数据存储方法
CN110908592A (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