CN114996172A - 基于ssd访问主机内存的方法及*** - Google Patents
基于ssd访问主机内存的方法及*** Download PDFInfo
- Publication number
- CN114996172A CN114996172A CN202210913196.8A CN202210913196A CN114996172A CN 114996172 A CN114996172 A CN 114996172A CN 202210913196 A CN202210913196 A CN 202210913196A CN 114996172 A CN114996172 A CN 114996172A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- target
- host
- nvmessd
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及数据存储技术领域,提供了一种基于SSD访问主机内存的方法及***,该方法包括:采用NVMe协议中的vendor命令建立与NVMeSSD之间的第一数据交互通路;基于第一数据交互通路获取主机内存中与NVMeSSD相关的目标主机内存地址;基于第一数据交互通路发送数据读取控制指令到NVMeSSD,控制NVMeSSD访问目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部;基于第一数据交互通路从NVMeSSD获取目标内存数据。本发明能够从SSD端获取主机内存信息,为SSD问题定位及开发调试提供必要的定位信息,进而有效地加快问题收敛速度及提高开发效率。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种基于SSD访问主机内存的方法及***。
背景技术
NVMe SSD 是一种基于NVMe(Non-Volatile Memory Express)协议与主机进行交互的SSD,具有低延时,高性能等特点。为了能让NVMe SSD正常工作,除了SSD本身需要支持NVMe协议外,主机的操作***也需要支持NVMe协议,常见的操作***有linux和windows,操作***中的NVMe驱动提供了NVMe协议的支持。主机通过NVMe驱动来与NVMe SSD进行交互。
在SSD正常运行时是并不需要查看主机内存中与NVMe SSD相关的内存信息,但是在一些应用场景相下,例如在SSD调试定位及NVMe驱动开发时,如果能方便快捷地查看与SSD相关的主机内存将会对问题分析有很大帮助。基于操作***的不同,现有技术方案中查看SSD相关主机内存的方法主要如下:Linux操作***会为驱动开发者提供一种Mmap访问接口,让开发者可以从用户空间访问到内核空间,从而实现查看SSD相关主机内存的目的,但这个功能是针对开发者的,需要开发者使用特殊编程接口甚至编译内核版本才能实现。Windows相比Linux要查看主机内存条件更为苛刻,如果不是专业的驱动开发者是无法查看到主机SSD相关内存信息。
可见,现有的技术方案查看与SSD相关的主机内存在很大程度上依赖于操作***的开放程度,可能还需要专业的开发人员对***及驱动做进一步等处理才能从主机读取到SSD相关的主机内存信息,对于一些需要现场定位的场景,特别是用户现场,几乎上不具备可行性。另外,对于一些***限制比较严格的操作***,例如windows,可能将无法从主机端获取SSD相关的主机内存信息。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于SSD访问主机内存的方法及***。
本发明的一个方面,提供了一种基于SSD访问主机内存的方法,所述方法包括:
采用NVMe协议中的vendor命令建立与NVMeSSD之间的第一数据交互通路;
基于所述第一数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
基于所述第一数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;
基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据。
进一步地,所述方法还包括:
采用NVMeSSD设备的硬件接口建立与NVMeSSD之间的第二数据交互通路;
当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
基于所述第二数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;
基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
进一步地,所述控制所述NVMeSSD访问所述目标主机内存地址包括:
控制所述NVMeSSD通过PCIe总线访问所述目标主机内存地址。
进一步地,在从所述NVMeSSD获取所述目标内存数据之后,所述方法还包括:
将所述目标内存数据进行数据展示。
进一步地,所述目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息。
进一步地,在从所述NVMeSSD获取所述目标内存数据之后,所述方法还包括:
当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
本发明的另一个方面,提供了一种基于SSD访问主机内存的***,所述***包括内存信息处理模块和主机内存访问模块:
内存信息处理模块,用于采用NVMe协议中的vendor命令建立与主机内存访问模块之间的第一数据交互通路,基于所述第一数据交互通路获取主机内存中与NVMeSSD相关的目标主机内存地址,基于所述第一数据交互通路发送数据读取控制指令到所述主机内存访问模块,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置,基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据;
主机内存访问模块,用于根据内存信息处理模块发送的数据读取控制指令访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置。
进一步地,所述内存信息处理模块,还用于采用NVMeSSD设备的硬件接口建立与主机内存访问模块之间的第二数据交互通路;当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;基于所述第二数据交互通路发送数据读取控制指令到所述主机内存访问模块,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
进一步地,所述目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息;
所述内存信息处理模块,还用于在从所述NVMeSSD获取所述目标内存数据之后,当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
进一步地,所述主机内存访问模块包括:
PCIe接口子模块,用于通过AXI总线与NVMeSSD内部的PCIe模块相连接,以通过PCIe总线访问所述目标主机内存地址,获取目标主机内存地址中的目标内存数据;
CPU接口子模块,用于通过AXI总线与NVMe SSD内部的CPU模块相连接,已建立与NVMeSSD设备的硬件接口的连接;
地址解析子模块,用于解析主机驱动下发的初始化信息,以获取主机内存中与所述NVMe SSD相关的目标主机内存地址;
数据传输子模块,用于建立与内存信息处理模块的第一数据交互通路和/或第二数据交互通路,并进行数据传输;
数据接收子模块,用于接收从所述PCIe接口子模块传输的数据。
本发明实施例提供的基于SSD访问主机内存的方法及***,通过上层软件功能模块的部署能够快速方便地从SSD端获取与SSD相关的主机内存信息,为SSD问题定位及开发调试提供必要的定位信息,进而有效地加快问题收敛速度及提高开发效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的基于SSD访问主机内存的方法的流程图;
图2为本发明实施例提供的基于SSD访问主机内存的方法中命令通路划分示意图;
图3为本发明实施例提出的基于SSD访问主机内存的装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
实际应用中,主机通过NVMe驱动来与NVMe SSD进行交互的内容主要分为下面几类:
Admin 与NVM 命令的交互。命令以Admin Queue(管理队列)及NVM Command Queue(NVM 命令队列) 队列的方式来组织,队列会放在主机的内存中。
命令通知的交互,NVMe通过一种门铃机制(Doorbell)来告知SSD命令队列中是否有新的命令需要处理,Doorbell所在的实际地址也在主机内存中。
读写数据的交互,读写命令中描述了需要交互的读写数据在主机内存中的地址,SSD收到读写命令后会启动数据传输,交互的数据同样也会存放在主机内存中。
通常情况下,在SSD正常运行时是不需要查看主机内存中的队列、Doorbell及读写数据的情况,但在下面几种情况下可能会需要查看主机内存的情况。
1. SSD工作异常时,需要在线定位与调试。异常的原因可能是因为SSD上的固件(Firmware)有缺陷,也可能是因为主机NVMe驱动有缺陷。这种情况下,如果能查看到主机内存中SQ、CQ队列、Doorbell及传输的数据等信息,将会对问题定位有很大帮助。
2. SSD固件开发阶段,该阶段属于开发调试期,固件可能会存在很多缺陷,常常会因为与主机的交互上有缺陷而导致SSD工作异常,如果在该阶段能查看主机内存获取SQ、CQ队列、Doorbell及传输的数据等信息,将会大大加速缺陷的收敛速度,缩短开发周期。
3. NVMe驱动开发阶段。NVMe驱动开发期可能会引起主机异常,如蓝屏,死机等情况,这种情况下无法从主机上查看到主机内存,这时如果能获取主机内存相关信息,也会对问题分析有很大帮助。
为了能够方便地获取SSD相关的主机内存信息,本发明提供了一种基于SSD访问主机内存的方法及***,通过上层软件功能模块的部署以实现从SSD端获取主机中的与SSD相关的主机内存信息。
图1示意性示出了本发明实施例的基于SSD访问主机内存的***架构图。参照图1,本发明实施例的基于SSD访问主机内存的***包括内存信息处理模块10(即Mem Dbg模块)和主机内存访问模块20。
其中,内存信息处理模块是预先设计的上层软件功能模块,该模块是NVMeSSD相关主机内存信息的最终接收者及呈现者。该软件提供了友好的界面,可以将获取到的与NVMeSSD相关的主机内存数据展示给使用者。与NVMeSSD相关的主机内存数据包括但不限于主机提交队列SQ(Submission Queue)、完成队列CQ(Completion Queue)和/或门铃机制Doorbell对应的主机内存地址中的数据信息,以及读写数据的详细信息等。
内存信息处理模块对运行平台无要求,本发明实施例中内存信息处理模块可以运行在主机平台上。
其中,内存信息处理模块10,用于采用NVMe协议中的vendor命令建立与主机内存访问模块20之间的第一数据交互通路,基于第一数据交互通路获取主机内存中与NVMeSSD相关的目标主机内存地址,基于第一数据交互通路发送数据读取控制指令到所述主机内存访问模块20,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块20访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置,基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据。
其中,主机内存访问模块20,用于根据内存信息处理模块发送的数据读取控制指令访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置。
本发明实施例提供的基于SSD访问主机内存的方法,通过上层软件功能模块的部署能够快速方便地从SSD端获取与SSD相关的主机内存信息,为SSD问题定位及开发调试提供必要的定位信息,进而有效地加快问题收敛速度及提高开发效率。
在本发明的一个实施例中,内存信息处理模块运行在主机平台上,通过NVMe协议中定义的vendor命令建立第一数据交互通路,来实现数据交互的。当主机NVMe驱动能够正常工作并能够正常响应NVMeAdmin命令时,内存信息处理模块使用该数据交互通路控制主机内存访问模块访问所述目标主机内存地址以获取目标主机内存地址中的目标内存数据。
具体的,内存信息处理模块通过第一数据交互通路从SSD端获取SSD相关的主机内存地址,例如SQ、CQ、Doorbell的内存地址,这些地址都是主机驱动程序在初始化时配置给SSD的,因此SSD是知道这些地址的详细信息,所以内存信息处理模块在初始化阶段时即可从主机内存访问模块中获取上述内存地址信息。内存信息处理模块通过数据读取控制指令控制SSD内部的主机内存访问模块来访问具体的主机内存地址,主机内存访问模块被动接收控制信号,所有要访问的地址均由Mem Dbg来控制。主机内存访问模块接收到内存信息处理模块下发的数据读取控制指令后,该模块会通过PCIe总线将目标内存数据读取到SSD内部,然后通过第一数据交互通路将数据返回给内存信息处理模块。例如获取SQ队列里的数据内容。
进一步地,内存信息处理模块10,还用于采用NVMeSSD设备的硬件接口建立与主机内存访问模块20之间的第二数据交互通路;当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;基于所述第二数据交互通路发送数据读取控制指令到所述主机内存访问模块,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
具体的,内存信息处理模块采用NVMeSSD设备的硬件接口建立第二数据交互通路来实现数据交互的,该硬件接口为debug接口。Debug为调试接口,一般是出问题的时候连接专用的接口线出来,通过该调试接口可以与SSD进行通信,一般最常见的是串口,但不限于串口或其他硬件通路。该通路是为了确保链路的完备性,可以在第一数据交互通路不能正常工作的情况下实现主机内存数据的访问。具体方法与第一数据交互通路类似,主要区别在于SSD中的主机内存访问模块与内存信息处理模块通过第二数据交互通路进行交互,且回传数据时会将数据传到debug接口通路上。
内存信息处理模块对运行平台无要求,既可以运行在主机平台上,也可以运行在其他平台上,可根据使用场景的不同进行部署,当运行在其他平台时,内存信息处理模块需要基于第二数据通路与主机内存访问模块进行交互,主机内存访问模块运行在NVMe SSD。
本发明提供了两条数据访问通路,在第一数据交互通路不通的情况下可以使用第二数据交互通路,确保数据链路的完备性,SSD内部的主机内存访问模块可以接收上层软件地址配置,并通过PCIe总线获取主机内存相关信息,并根据提出请求的通路决定将数据返回哪个通路。本发明当主机NVMe驱动能够正常工作并能够正常响应NVMeAdmin命令时,可以优先使用第一数据交互通路,第一数据交互通路通过PCIe进行数据传输,传输效率会比较高。
本发明实施例中,目标主机内存地址包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址,对应的,目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息。
进一步地,内存信息处理模块,还用于在从所述NVMeSSD获取所述目标内存数据之后,当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
本实施例中,内存信息处理模块可以进一步通过解析SQ里读写命令的详细内容来获取SQ命令中关于读写数据的主机内存地址,从而进一步读取出该地址中的数据,即内存信息处理模块可以跟踪主机与SSD之间交互的数据交互,这对于SSD上的数据传输问题定位会非常有帮助。本***可以进一步解析SQ内容数据,进而可以跟踪到读写数据在主机内存区的数据内容,为问题定位及开发调试提供必要的定位信息,可以有效地加快问题收敛速度及提高开发效率。
本发明实施例中,如图2所示,主机内存访问模块20具体包括PCIe接口子模块201、CPU接口子模块202、地址解析子模块203、数据传输子模块204以及数据接收子模块205,其中:
PCIe接口子模块201,用于通过AXI总线与NVMeSSD内部的PCIe模块相连接,以通过PCIe总线访问所述目标主机内存地址,获取目标主机内存地址中的目标内存数据;
CPU接口子模块202,用于通过AXI总线与NVMe SSD内部的CPU模块相连接,已建立与NVMeSSD设备的硬件接口的连接;
地址解析子模块203,用于解析主机驱动下发的初始化信息,以获取主机内存中与所述NVMe SSD相关的目标主机内存地址;
数据传输子模块204,用于建立与内存信息处理模块的第一数据交互通路和/或第二数据交互通路,并进行数据传输;
数据接收子模块205,用于接收从所述PCIe接口子模块传输的数据。
本发明可以从SSD端方便地获取需要的定位信息,在一些场景下彻底解决了现有技术不方便获取主机内存信息的缺陷,对于加速问题定位、缩短开发调试有重要意义。
图3示意性示出了本发明一个实施例的基于SSD访问主机内存的方法的流程图。参照图3,本发明实施例的基于SSD访问主机内存的方法具体包括以下步骤:
S11、采用NVMe协议中的vendor命令建立与NVMeSSD之间的第一数据交互通路;
S12、基于所述第一数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
S13、基于所述第一数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置。
具体的,控制所述NVMeSSD访问所述目标主机内存地址包括:控制所述NVMeSSD通过PCIe总线访问所述目标主机内存地址。
S14、基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据。
进一步地,在从所述NVMeSSD获取所述目标内存数据之后,还包括:将所述目标内存数据进行数据展示。
本发明实施例提供的基于SSD访问主机内存的方法,能够快速方便地从SSD端获取与SSD相关的主机内存信息,为SSD问题定位及开发调试提供必要的定位信息,进而有效地加快问题收敛速度及提高开发效率。
本发明实施例提供的基于SSD访问主机内存的方法,还包括附图中未示出的以下步骤:
S21、采用NVMeSSD设备的硬件接口建立与NVMeSSD之间的第二数据交互通路;
S22、当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
S23、基于所述第二数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;
S24、基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
进一步地,在从所述NVMeSSD获取所述目标内存数据之后,还包括将所述目标内存数据进行数据展示。
在本发明的一个具体实施例中,目标主机内存地址包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址,对应的,目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息。
进一步地,在从所述NVMeSSD获取所述目标内存数据之后,所述方法还包括:当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
本实施例中,可以进一步通过解析SQ里读写命令的详细内容来获取SQ命令中关于读写数据的主机内存地址,从而进一步读取出该地址中的数据,即可以跟踪主机与SSD之间交互的数据交互,这对于SSD上的数据传输问题定位会非常有帮助。
本发明可以进一步解析SQ内容数据,进而可以跟踪到读写数据在主机内存区的数据内容,为问题定位及开发调试提供必要的定位信息,可以有效地加快问题收敛速度及提高开发效率。
本发明实施例提供的基于SSD访问主机内存的方法及***,通过上层软件功能模块的部署能够快速方便地从SSD端获取与SSD相关的主机内存信息,为SSD问题定位及开发调试提供必要的定位信息,进而有效地加快问题收敛速度及提高开发效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于SSD访问主机内存的方法,其特征在于,所述方法包括:
采用NVMe协议中的vendor命令建立与NVMeSSD之间的第一数据交互通路;
基于所述第一数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
基于所述第一数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;
基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用NVMeSSD设备的硬件接口建立与NVMeSSD之间的第二数据交互通路;
当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;
基于所述第二数据交互通路发送数据读取控制指令到所述NVMeSSD,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述NVMeSSD访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;
基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
3.根据权利要求1或2所述的方法,其特征在于,所述控制所述NVMeSSD访问所述目标主机内存地址包括:
控制所述NVMeSSD通过PCIe总线访问所述目标主机内存地址。
4.根据权利要求1或2所述的方法,其特征在于,在从所述NVMeSSD获取所述目标内存数据之后,所述方法还包括:
将所述目标内存数据进行数据展示。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息。
6.根据权利要求5所述的方法,其特征在于,在从所述NVMeSSD获取所述目标内存数据之后,所述方法还包括:
当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
7.一种基于SSD访问主机内存的***,其特征在于,所述***包括内存信息处理模块和主机内存访问模块:
内存信息处理模块,用于采用NVMe协议中的vendor命令建立与主机内存访问模块之间的第一数据交互通路,基于所述第一数据交互通路获取主机内存中与NVMeSSD相关的目标主机内存地址,基于所述第一数据交互通路发送数据读取控制指令到所述主机内存访问模块,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置,基于所述第一数据交互通路从所述NVMeSSD获取所述目标内存数据;
主机内存访问模块,用于根据内存信息处理模块发送的数据读取控制指令访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置。
8.根据权利要求7所述的***,其特征在于,所述内存信息处理模块,还用于采用NVMeSSD设备的硬件接口建立与主机内存访问模块之间的第二数据交互通路;当所述第一数据交互通路通信异常时,基于所述第二数据交互通路获取主机内存中与所述NVMeSSD相关的目标主机内存地址;基于所述第二数据交互通路发送数据读取控制指令到所述主机内存访问模块,所述数据读取控制指令中携带有所述目标主机内存地址,控制所述主机内存访问模块访问所述目标主机内存地址,以将目标主机内存地址中的目标内存数据读取到NVMeSSD内部的指定存储位置;基于所述第二数据交互通路从所述NVMeSSD获取所述目标内存数据。
9.根据权利要求7或8所述的***,其特征在于,所述目标内存数据包括提交队列SQ、完成队列CQ和/或门铃机制Doorbell对应的主机内存地址中的数据信息;
所述内存信息处理模块,还用于在从所述NVMeSSD获取所述目标内存数据之后,当所述目标内存数据包括提交队列SQ时,解析提交队列SQ对应的主机内存地址中的数据信息,以获取提交队列SQ命令中关于读写数据的主机内存地址以及地址中的读写数据。
10.根据权利要求8所述的***,其特征在于,所述主机内存访问模块包括:
PCIe接口子模块,用于通过AXI总线与NVMeSSD内部的PCIe模块相连接,以通过PCIe总线访问所述目标主机内存地址,获取目标主机内存地址中的目标内存数据;
CPU接口子模块,用于通过AXI总线与NVMe SSD内部的CPU模块相连接,已建立与NVMeSSD设备的硬件接口的连接;
地址解析子模块,用于解析主机驱动下发的初始化信息,以获取主机内存中与所述NVMe SSD相关的目标主机内存地址;
数据传输子模块,用于建立与内存信息处理模块的第一数据交互通路和/或第二数据交互通路,并进行数据传输;
数据接收子模块,用于接收从所述PCIe接口子模块传输的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210913196.8A CN114996172B (zh) | 2022-08-01 | 2022-08-01 | 基于ssd访问主机内存的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210913196.8A CN114996172B (zh) | 2022-08-01 | 2022-08-01 | 基于ssd访问主机内存的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114996172A true CN114996172A (zh) | 2022-09-02 |
CN114996172B CN114996172B (zh) | 2022-11-01 |
Family
ID=83021511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210913196.8A Active CN114996172B (zh) | 2022-08-01 | 2022-08-01 | 基于ssd访问主机内存的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114996172B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020723A (zh) * | 2016-05-19 | 2016-10-12 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
WO2018076793A1 (zh) * | 2016-10-26 | 2018-05-03 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN111095231A (zh) * | 2018-06-30 | 2020-05-01 | 华为技术有限公司 | 一种基于NVMe的数据读取方法、装置及*** |
CN111221476A (zh) * | 2020-01-08 | 2020-06-02 | 深圳忆联信息***有限公司 | 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质 |
CN113971138A (zh) * | 2020-07-24 | 2022-01-25 | 华为技术有限公司 | 一种数据访问方法及相关设备 |
CN114415974A (zh) * | 2022-03-28 | 2022-04-29 | 北京得瑞领新科技有限公司 | Ssd操作逻辑空间的方法、装置、存储介质及ssd设备 |
-
2022
- 2022-08-01 CN CN202210913196.8A patent/CN114996172B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020723A (zh) * | 2016-05-19 | 2016-10-12 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
WO2018076793A1 (zh) * | 2016-10-26 | 2018-05-03 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN111095231A (zh) * | 2018-06-30 | 2020-05-01 | 华为技术有限公司 | 一种基于NVMe的数据读取方法、装置及*** |
CN111221476A (zh) * | 2020-01-08 | 2020-06-02 | 深圳忆联信息***有限公司 | 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质 |
CN113971138A (zh) * | 2020-07-24 | 2022-01-25 | 华为技术有限公司 | 一种数据访问方法及相关设备 |
CN114415974A (zh) * | 2022-03-28 | 2022-04-29 | 北京得瑞领新科技有限公司 | Ssd操作逻辑空间的方法、装置、存储介质及ssd设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114996172B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110618903A (zh) | 电子设备测试方法与装置 | |
US10055377B2 (en) | Using a proprietary framework on a standards-based embedded device | |
CN105183575A (zh) | 处理器故障的诊断方法、装置及*** | |
US7210065B2 (en) | Methods and structure for testing responses from SAS device controllers or expanders | |
US20030023791A1 (en) | Device driver apparatus | |
US20090292911A1 (en) | Boot test system and method thereof | |
US7281163B2 (en) | Management device configured to perform a data dump | |
JPH11194977A (ja) | 周辺装置の集積回路のデータ送信機能をテスト及び表示するシミュレーション・システム | |
CN116627861B (zh) | 基于扩展器的数据处理方法、***、电子设备及存储介质 | |
CN112506772B (zh) | web自动化测试方法、装置、电子设备和存储介质 | |
CN114996172B (zh) | 基于ssd访问主机内存的方法及*** | |
US20070157014A1 (en) | Apparatus for remote flashing of a bios memory in a data processing system | |
CN111651308B (zh) | Dp转hdmi芯片的调试数据获取方法、装置和智能设备 | |
CN109885420B (zh) | 一种PCIe链路故障的分析方法、BMC及存储介质 | |
WO2022021870A1 (zh) | 一种fc卡的传输错误定位方法及相关装置 | |
US10210110B2 (en) | Associating data buses and management bus connections for peripheral devices | |
CN115794530A (zh) | 一种硬件连接测试方法、装置、设备和可读存储介质 | |
US11586504B2 (en) | Electronic apparatus and boot method thereof | |
US20070118658A1 (en) | User selectable management alert format | |
US11093301B2 (en) | Input output adapter error recovery concurrent diagnostics | |
US10922249B2 (en) | Input/output control code filter | |
US6490544B1 (en) | System for testing a multi-tasking computing device | |
CN113254091A (zh) | 一种基于ceph块设备的无盘***启动方法 | |
US7343431B1 (en) | Method, apparatus, and computer-readable medium for disabling BIOS-provided console redirection capabilities in the presence of an incompatible communications device | |
CN114444423B (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 |