CN115993937A - 一种多进程固态硬盘仿真环境实现方法和装置 - Google Patents
一种多进程固态硬盘仿真环境实现方法和装置 Download PDFInfo
- Publication number
- CN115993937A CN115993937A CN202310275034.0A CN202310275034A CN115993937A CN 115993937 A CN115993937 A CN 115993937A CN 202310275034 A CN202310275034 A CN 202310275034A CN 115993937 A CN115993937 A CN 115993937A
- Authority
- CN
- China
- Prior art keywords
- host
- memory
- solid state
- interface specification
- specification message
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 518
- 239000007787 solid Substances 0.000 title claims abstract description 156
- 238000004088 simulation Methods 0.000 title claims abstract description 126
- 230000008569 process Effects 0.000 claims abstract description 407
- 238000012360 testing method Methods 0.000 claims abstract description 127
- 238000006243 chemical reaction Methods 0.000 claims abstract description 73
- 238000013515 script Methods 0.000 claims abstract description 64
- 238000013519 translation Methods 0.000 claims description 86
- 238000012795 verification Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 18
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种多进程固态硬盘仿真环境实现方法和装置,涉及计算机系统及存储技术领域;包括模拟主机进程申请主机内存,主机内存存储有固态硬盘测试脚本;模拟主机进程解析固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将非易失性内存主机控制器接口规范消息发送至闪存转换层进程;闪存转换层进程接收非易失性内存主机控制器接口规范消息,并执行非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。通过本发明实施例模拟主机进程使用真实固态硬盘一样的测试脚本,因此在固态硬盘上出现漏洞的脚本可以直接在仿真环境上执行;完全真实的仿真固态硬盘的运行情况,实现快速定位解决发现的问题。
Description
技术领域
本发明涉及固态硬盘仿真技术领域,特别是涉及一种多进程固态硬盘仿真环境实现方法、一种多进程固态硬盘仿真环境实现装置、一种电子设备和一种存储介质。
背景技术
在进行SSD(solid-state drives,固态硬盘)相关的设计开发时,如直接在已有SSD上进行研究设计需要投入的大量的经济成本和时间成本,这是不能被接收的。如果先把设计在仿真环境上实现验证,不但能够快速地获得功能、性能、能耗等预估数据,还能验证不同方案设计的实际效果,促进完善优化设计。
在现有SSD仿真系统中,采用的是单进程的串行系统框架。需要专门的trace文件将测试向量导入仿真环境,不能直接使用真实SSD使用的测试脚本。这直接导致仿真环境与真实SSD需要各自维护一份测试向量,增加额外的工作量。因为不同的测试脚本,还可能导致运行于仿真环境之上的软件流程与真实SSD的软件流程存在差异,无法完全真实的仿真SSD的运行情况。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种多进程固态硬盘仿真环境实现方法、一种多进程固态硬盘仿真环境实现装置、一种电子设备和一种存储介质。
在本发明的第一个方面,本发明实施例公开了一种多进程固态硬盘仿真环境实现方法,所述多进程包括模拟主机进程和闪存转换层进程;所述方法包括:
所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
可选地,所述方法还包括:
所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程。
可选地,所述态硬盘测试脚本包括固态硬盘测试命令,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息的步骤包括:
所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;
所述模拟主机进程确定所述偏移地址为所述占用内存信息。
可选地,在所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤之后,所述方法还包括:
所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程。
可选地,在所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程的步骤之后,所述方法还包括:
所述模拟主机进程获取验证信息;
所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
可选地,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放的步骤包括:
所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
可选地,所述闪存转换层进程包括实体线程;所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤包括:
所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
可选地,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
所述实体线程基于所述物理内存地址进行数据搬运。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址的步骤包括:
所述实体线程从所述主机内存中确定初始物理地址;
所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
可选地,在所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息的步骤之前,所述方法还包括:
所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
可选地,所述物理接口协议链接为套接字链接时,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接的步骤包括:
所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
可选地,所述模拟主机进程将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程的步骤包括:
所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
可选地,所述方法还包括:
所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
可选地,所述方法还包括:
所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
在本发明的第二个方面,本发明实施例公开了一种多进程固态硬盘仿真环境实现装置,所述多进程包括模拟主机进程和闪存转换层进程;所述装置包括:
内存申请模块,用于所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
解析模块,用于所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
执行模块,用于所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
在本发明的第三个方面,本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的多进程固态硬盘仿真环境实现方法的步骤。
在本发明的第四个方面,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的多进程固态硬盘仿真环境实现方法的步骤。
本发明实施例包括以下优点:
本发明实施例通过模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。通过本发明实施例模拟主机进程使用真实固态硬盘一样的测试脚本,闪存转换层进程执行对应的测试指令,因此在固态硬盘上出现漏洞的脚本可以直接在仿真环境上执行;完全真实的仿真固态硬盘的运行情况,实现快速定位解决发现的问题,进而提高代码调试、漏洞定位效率,减少固态硬盘调试周期。
附图说明
图1是本发明的一种多进程固态硬盘仿真环境实现方法实施例的步骤流程图;
图2是本发明的另一种多进程固态硬盘仿真环境实现方法实施例的步骤流程图;
图3是本发明的一种多进程固态硬盘仿真环境实现方法示例的进程连接关系图;
图4是本发明的一种多进程固态硬盘仿真环境实现方法示例的步骤流程图;
图5是本发明的一种多进程固态硬盘仿真环境实现装置实施例的结构框图;
图6是本发明实施例提供的一种电子设备的结构框图;
图7是本发明实施例提供的一种存储介质的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心发明点之一为通过操作系统提供的进程间通信接口来模拟SSD用于主机间通信的物理介质。仿真环境的模拟主机(Host)进程模拟真实的主机系统生成的非易失性内存主机控制器接口规范(non-volatile memory-express,Nvme)消息发送至仿真环境闪存转换层(Flash Translation Layer,FTL)进程(FTL进程包含真实SSD固件程序),进而到达仿真环境与真实SSD完全相同效果。其中Host进程解析测试脚本并生成Nvme消息。FTL进程除包含真实SSD固件完全一样的线程外,与真实SSD的控制器上的硬件接口完全一样,确保FTL进程与真实SSD完全一样
参照图1,示出了本发明的一种多进程固态硬盘仿真环境实现方法实施例的步骤流程图,所述多进程包括模拟主机进程和闪存转换层进程;其中,模拟主机进程和闪存转换层进程可以处于同一系统中;也可以处于不同系统中,本发明实施例不作限定。
所述多进程固态硬盘仿真环境实现方法具体可以包括如下步骤:
步骤101,所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
在本发明实施例中,首先可以启动模拟主机进程,模拟主机进程向主机申请主机内存。主机内存中可以存储有固态硬盘测试脚本,固态硬盘测试脚本可以由测试人员预先编写;当需要针对固态硬盘进行测试时,可以通过远程接入无线连接测试的方式,或者通过插入优盘等第三方设备启动测试。此时模拟主机进程主机内存可以接收固态硬盘测试脚本。此外,需要说明的固态硬盘测试脚本可以是针对固态硬盘的容量测试对应的测试脚本、可以是针对固态硬盘的读写速度测试对应的测试脚本、可以是固态硬盘颗粒测试对应的测试脚本、可以是针对固态硬盘的主控测试对应的测试脚本、可以是是针对固态硬盘的接口测试对应的测试脚本等,本发明实施例对此固态硬盘测试脚本的具体类型不作限定。
步骤102,所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
模拟主机进程接收到固态硬盘测试脚本后,解析固态硬盘测试脚本,确定固态硬盘测试命令对应的具体操作内容以及操作位置,生成非易失性内存主机控制器接口规范消息。
生成非易失性内存主机控制器接口规范消息后,将非易失性内存主机控制器接口规范消息发送至闪存转换层进程中。
步骤103,所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
闪存转换层进程通过与模拟主机进程连接的通信链路中,接收模拟主机进程发送的非易失性内存主机控制器接口规范消息;并且在接收到模拟主机进程发送的非易失性内存主机控制器接口规范消息后,执行该非易失性内存主机控制器接口规范消息对固态硬盘的数据进行处理,以完成固态硬盘仿真,实现对固态硬盘的真实仿真测试。
本发明实施例通过模拟主机进程申请主机内存,主机内存存储有固态硬盘测试脚本;模拟主机进程解析固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将非易失性内存主机控制器接口规范消息发送至闪存转换层进程;闪存转换层进程接收非易失性内存主机控制器接口规范消息,并执行非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。通过本发明实施例模拟主机进程使用真实固态硬盘一样的测试脚本,闪存转换层进程执行对应的测试指令,因此在固态硬盘上出现漏洞的脚本可以直接在仿真环境上执行;完全真实的仿真固态硬盘的运行情况,实现快速定位解决发现的问题,进而提高代码调试、漏洞定位效率,减少固态硬盘调试周期。
参照图2,示出了本发明的另一种多进程固态硬盘仿真环境实现方法实施例的步骤流程图,所所述多进程包括模拟主机进程和闪存转换层进程。
在本发明实施例中,模拟主机进程和闪存转换层进程都运行在仿真平台的操作系统中,该操作系统可以是Linux(操作系统名)系统,也可以是Windows(操作系统名)系统;对于操作系统的类型本发明实施例不作限定。
所述多进程固态硬盘仿真环境实现方法具体可以包括如下步骤:
步骤201,所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
在本发明实施例中,首先可以启动模拟主机进程,模拟主机进程向主机申请主机内存;主机内存存储有固态硬盘测试脚本;。
具体地,对于启动模拟主机进程时,所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
在本发明的一可选实施例中,对于启动模拟主机进程,可以是模拟主机进程同时启动多个模拟主机子进程,模拟一个系统中多个IO(Input/Output,输入/输出)队列访问SSD场景。即多个模拟主机进程同时与一个闪存转换层进程通信。
步骤202,所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程;
主机内存具有对应的起始地址;为了模拟主机进程可以与闪存转换层进程基于主机内存进行交互,模拟主机进程将主机内存的起始地址传递给闪存转换层进程;以使模拟主机进程和闪存转换层进程可以基于同一主机内存进行数据交互。
步骤203,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
模拟主机进程接收主机发送的针对固态硬盘进行测试的固态硬盘测试脚本后,模拟主机进程会对固态硬盘测试脚本行解析。
具体地,所述态硬盘测试脚本包括固态硬盘测试命令,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
子步骤S2031,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
模拟主机进程接收主机发送的针对固态硬盘进行测试的固态硬盘测试脚本。其中,固态硬盘测试脚本包括至少一条固态硬盘测试命令。一条固态硬盘测试命令对应一个测试内容。其中,固态硬盘测试命令可以是fio(压力测试)命令,非易失性内存主机控制器接口规范(数据传输测试)命令。固态硬盘测试脚本为真实固态硬盘的测试脚本,其中包括至少一条固态硬盘测试命令;即固态硬盘测试脚本可以只包括一条固态硬盘测试命令,也可以包括多条固态硬盘测试命令。并且这些固态硬盘测试命令都可以被执行。
模拟主机进程针对固态硬盘测试命令进行解析,生成对应的非易失性内存主机控制器接口规范消息,并将非易失性内存主机控制器接口规范消息发送至闪存转换层进程,由闪存转换层进程进行模拟仿真。
在本发明的一可选实施例中,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
子步骤S20311,所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
在本发明实施例中,模拟主机进程解析固态硬盘测试命令,计算出运行该固态硬盘测试命令需要占用的内存大小,即占用内存空间。
子步骤S20312,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
模拟主机进程在申请得到的主机内存中,根据占用内存空间对应的大小,确定占用内存空间匹配的占用内存信息。
具体地,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息的步骤包括:所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;所述模拟主机进程确定所述偏移地址为所述占用内存信息。
在本发明实施例中, 模拟主机进程在主机内存中,从初始地址为首地址进行偏移,偏移的距离为与占用内存空间大小对应的距离,得到偏移地址。并且将偏移地址为占用内存信息。
子步骤S20313,所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
模拟主机进程会根据占用内存信息,生成对应的非易失性内存主机控制器接口规范消息。
此外,为了非易失性内存主机控制器接口规范消息可以模拟真实发送SSD的过程,在本发明的一可选实施例中,所述方法还可以包括:
步骤S1,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
启动闪存转换层进程,闪存转换层进程创建与模拟主机进程对应的物理接口协议链接;其中该物理接口协议可以是socket(套接字)、PCIE(peripheral componentinterconnect express,一种高速串行计算机扩展总线标准)、SATA(Serial AdvancedTechnology Attachment,串行连接)。
具体地,所述物理接口协议链接为套接字链接时,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接的步骤包括:所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
在本发明实施例中,物理接口协议链接为套接字链接,此时,闪存转换层进程则创建与模拟主机进程对应的套接字链接,即采用套接字将闪存转换层进程和模拟主机进程进行连接。
此外,对于启动闪存转换层进程时,所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
闪存转换层进程可以同时启动多个闪存转换层子进程,模拟一个系统中有多个SSD场景。即一个模拟主机进程同时与多个闪存转换层子进程通信。
步骤S2,所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
闪存转换层进程基于物理接口协议链接,与模拟主机进程连接,以模拟真实的物理接口连接。
在本发明的一可选实施例中,所述模拟主机进程将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程的步骤包括:所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
对于将非易失性内存主机控制器接口规范消息发送至闪存转换层进程时,模拟主机进程可以通过采用物理接口协议链接将非易失性内存主机控制器接口规范消息发送至闪存转换层进程,模拟真实发送测试命令的场景。
步骤204,所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真;
闪存转换层进程可以通过物理接口协议链接来接收模拟主机进程发送的非易失性内存主机控制器接口规范消息。并闪存转换层进程执行非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
在本发明的一可选实施例中,所述闪存转换层进程包括实体线程;所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤包括:
子步骤S2041,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
在发明实施例中,闪存转换层进程包括多个实体(model)线程,每一个实体线程为独立线程,与真实固态硬盘的控制器上的硬件接口完全一样。
在执行非易失性内存主机控制器接口规范消息时,则是实体线程根据非易失性内存主机控制器接口规范消息中的地址信息进行数据搬运,以完成对应的测试内容。
在本发明的一可选实施例中,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运的步骤包括:
子步骤S20411,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
首先,实体线程依据非易失性内存主机控制器接口规范消息,在主机内存中确定出物理内存地址,即通过物理内存地址确定实际进行数据搬运的真实内存地址。
具体地,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址的步骤包括:所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
对于物理内存地址的确定,实体线程可以根据非易失性内存主机控制器接口规范消息的偏移地址,在主机内存对应的实际内存地址中转换为物理内存地址。
进一步地,所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址的步骤包括:所述实体线程从所述主机内存中确定初始物理地址;所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
对于转换为实体线程从主机内存中确定初始物理地址;然后在初始物理地址上,以初始物理地址为首地址偏移,偏移地址对应的内存空间,得到实际的物理内存地址。
子步骤S20412,所述实体线程基于所述物理内存地址进行数据搬运。
实体线程得到物理内存地址后,基于该物理内存地址进行数据搬运。
步骤205,所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
闪存转换层进程执行非易失性内存主机控制器接口规范消息完成后,可以生成执行完成信息。通过执行完成信息表征当前非易失性内存主机控制器接口规范消息执行完成。
步骤206,所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程;
闪存转换层进程将执行完成信息发送至模拟主机进程,以使模拟主机进程可以通过执行完成信息确定当前的非易失性内存主机控制器接口规范消息已经由闪存转换层进程执行完成。
步骤207,所述模拟主机进程获取验证信息;
在当前的非易失性内存主机控制器接口规范消息已经由闪存转换层进程执行完成,模拟主机进程可以从主机内存中获取到对应的验证信息,通过该验证信息确定数据是否正常被处理。
步骤208,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
模拟主机进程在确定验证信息为预设成功信息时,即数据是被正常处理,可以确定非易失性内存主机控制器接口规范消息对应的测试内容测试成功,可以对主机内存进行内存释放,以进行下一项测试。
在本发明的一可选实施例中,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放的步骤包括:
子步骤S2081,所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
在本发明实施例中,模拟主机进程在验证信息为预设成功信息时,在主机内存中,释放偏移地址占用的内存,即将执行当前非易失性内存主机控制器接口规范消息所在占用的存储空间进行释放,以便下一项测试使用主机内存。
本发明实施例实现了SSD仿真环境中闪存转换层与真实的SSD上运行的软件算法完全一样的效果,在仿真环境调试完成的闪存转换层代码可以直接移植到真实SSD上运行,无需其他修改。避免闪存转换层算法从仿真环境移植到真实SSD的额外工作量,减小SSD设计开发周期。SSD仿真环境进程间通信方式,能真实模拟主机与SSD间通信方式,实现SSD上电功能模拟,加/卸载驱动功能模拟,为SSD固件开发调试提供更多更简单的验证方式。在多进程SSD仿真环境,模拟主机进程可以使用于真实SSD测试脚本进行测试验证,避免仿真环境和真实SSD维护两套测试脚,减少测试脚本维护工作量,提高维护效率。模拟主机进程使用于真实SSD完全一样的测试脚本,因此在SSD上出现漏洞的脚本可以直接在仿真环境上执行。仿真环境的优势是可以快速定位解决发现的问题,进而提高代码调试、漏洞定位效率,减少调试周期。通过启动多个模拟主机子进程,或启动多个闪存转换层进程,实现多IO队列访问SSD,或多SSD场景,实现SSD前端业务仿真调试。
为了使本领域技术人员能够更好地理解本发明实施例,下面通过一个例子对本发明实施例加以说明:
Host进程和FTL进程运行在同一系统上。如图3所示,Host进程向系统申请一段共享内存M1用于模式真实SSD访问的主机内存,在Host进程生成的Nvme消息中主机地址包含在这段内存中。 Host进程根据输入的SSD测试命令生成相应的Nvme消息发送到FTL进程,其中Nvme 消息中的主机地址为共享内存M1中的内存地址。FTL进程处理完后返回Nvme cpl消息。
具体地,参照图4,本发明示例将SSD仿真环境分为Host进程和FTL进程两个独立的进程,进程间使用系统提供的标准接口模拟SSD与主机链接的物理介质,使用标准格式的SSD接口协议传递数据。进而达到FTL进程与真实SSD上运行的软件算法完全一样,实现完全与真实SSD完全一样的运行效果。
本发明示例中仿真环境启动时,先启动Host进程,Host进程从主机申请一段内存M1,将该内存区域模拟真实SSD访问的主机内存。Host进程成功申请M1后,由Host进程启动FTL进程,同时将M1 的起始地址传递给FTL进程,FTL进程将收到的M1起始地址保存到仿真环境的硬件model中。
本发明示例中FTL进程启动后,将创建与Host进程的socket链接,socket链接将模拟SSD与主机的物理链接。通过socket搭载符合SSD标准协议的消息实现主机与SSD间的通信,完成FTL进程启动,模拟SSD加载驱动过程。
本发明示例中仿真环境正常运行时,Host进程根据取测试命令内容获取到信息,计算需要的内存空间大小,根据计算结果从M1中申请一段满足要求的连续内存M2,并计算出M2在M1中的偏移地址。
本发明示例中Host进程根据获取到的信息生成Nvme消息。并将生成的Nvme消息通过socket发送给FTL进程。FTL进程收到Nvme消息后,按照真实SSD完全一样的处理流程处理。仿真环境硬件model在搬移数据时自动将Nvme消息中的偏移地址转换为M1的实际地址再进行数据处理。
本发明示例中FTL进程处理完成收到的Nvme消息,FTL进程发送Nvme cpl消息给Host进程,Host进程收到Nvme cpl消息后 ,验证状态信息,如处理正常完成,则释放M2空间到M1。
发明中独立的Host进程可以同时启动多个子进程,模拟一个系统中多个IO队列访问SSD场景。即多个个Host进程同时与一个FTL进程通信。
本发明示例中独立的FTL进程可以同时启动多个进程,模拟一个系统中有多个SSD场景。即一个Host进程同时与多个FTL进程通信。
本发明实现了SSD仿真环境中FTL与真实的SSD上运行的软件算法完全一样的效果,在仿真环境调试完成的FTL代码可以直接移植到真实SSD上运行,无需其他修改。避免FTL算法从仿真环境移植到真实SSD的额外工作量,减小SSD设计开发周期。SSD仿真环境进程间通信方式,能真实模拟主机与SSD间通信方式,实现SSD上电功能模拟,加/卸载驱动功能模拟,为SSD固件开发调试提供更多更简单的验证方式。在多进程SSD仿真环境,Host进程可以使用于真实SSD测试脚本进行测试验证,避免仿真环境和真实SSD维护两套测试脚,减少测试脚本维护工作量,提高维护效率。Host进程使用于真实SSD完全一样的测试脚本,因此在SSD上出现漏洞的脚本可以直接在仿真环境上执行。仿真环境的优势是可以快速定位解决发现的问题,进而提高代码调试、漏洞定位效率,减少调试周期。通过启动多个Host子进程,或启动多个FTL进程,实现多IO队列访问SSD,或多SSD场景,实现SSD前端业务仿真调试。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种多进程固态硬盘仿真环境实现装置实施例的结构框图,所述多进程包括模拟主机进程和闪存转换层进程;所述多进程固态硬盘仿真环境实现装置具体可以包括如下模块:
内存申请501,用于所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
解析模块502,用于所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
执行模块503,用于所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
在本发明的一可选实施例中,所述装置还包括:
传递模块,用于所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程。
在本发明的一可选实施例中,所述态硬盘测试脚本包括固态硬盘测试命令,所述解析模块502包括:
解析子模块,用于所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
在本发明的一可选实施例中,所述解析子模块包括:
占用内存空间确定单元,用于所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
匹配子单元,用于所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
非易失性内存主机控制器接口规范消息生成单元,用于所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
在本发明的一可选实施例中,所述匹配子模块包括:
偏移子单元,用于所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;
占用内存信息子单元,用于确定所述模拟主机进程确定所述偏移地址为所述占用内存信息。
在本发明的一可选实施例中,所述装置还包括:
执行反馈模块,用于所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
反馈信息模块,用于所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程。
在本发明的一可选实施例中,所述装置还包括:
验证获取模块,用于所述模拟主机进程获取验证信息;
内存释放模块,用于所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
在本发明的一可选实施例中,所述内存释放模块包括:
释放子模块,用于所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
在本发明的一可选实施例中,所述闪存转换层进程包括实体线程;所述执行模块503包括:
数据搬运子模块,用于所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
在本发明的一可选实施例中,所述数据搬运子模块包括:
物理内存地址确定单元,用于所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
搬运单元,用于所述实体线程基于所述物理内存地址进行数据搬运。
在本发明的一可选实施例中,所述物理内存地址确定单元包括:
转换子单元,用于所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
在本发明的一可选实施例中,所述转换子单元包括:
初始物理地址确定子单元,用于所述实体线程从所述主机内存中确定初始物理地址;
物理内存地址确定子单元,用于所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
在本发明的一可选实施例中,所述装置还包括:
创建模块,用于所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
连接模块,用于所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
在本发明的一可选实施例中,所述物理接口协议链接为套接字链接时,所述创建模块包括:
创建子模块,用于所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
在本发明的一可选实施例中,所述解析模块502包括:
发送子模块,用于所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
在本发明的一可选实施例中,所述装置还包括:
第一启动模块,用于所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
在本发明的一可选实施例中,所述装置还包括:
第二启动模块,用于所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图6,本申请实施例还提供了一种电子设备,包括:
处理器601和存储介质602,所述存储介质602存储有所述处理器601可执行的计算机程序,当电子设备运行时,所述处理器601执行所述计算机程序,以执行如本发明实施例任一项所述的多进程固态硬盘仿真环境实现方法。
其中,所述多进程包括模拟主机进程和闪存转换层进程;所述多进程固态硬盘仿真环境实现方法包括:
所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
可选地,所述方法还包括:
所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程。
可选地,所述态硬盘测试脚本包括固态硬盘测试命令,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息的步骤包括:
所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;
所述模拟主机进程确定所述偏移地址为所述占用内存信息。
可选地,在所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤之后,所述方法还包括:
所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程。
可选地,在所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程的步骤之后,所述方法还包括:
所述模拟主机进程获取验证信息;
所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
可选地,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放的步骤包括:
所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
可选地,所述闪存转换层进程包括实体线程;所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤包括:
所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
可选地,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
所述实体线程基于所述物理内存地址进行数据搬运。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址的步骤包括:
所述实体线程从所述主机内存中确定初始物理地址;
所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
可选地,在所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息的步骤之前,所述方法还包括:
所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
可选地,所述物理接口协议链接为套接字链接时,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接的步骤包括:
所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
可选地,所述模拟主机进程将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程的步骤包括:
所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
可选地,所述方法还包括:
所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
可选地,所述方法还包括:
所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
参照图7,本申请实施例还提供了一种计算机可读存储介质,701,所述存储介质701上存储有计算机程序,所述计算机程序被处理器运行时执行如本申请实施例任一项所述的多进程固态硬盘仿真环境实现方法。
其中,所述多进程包括模拟主机进程和闪存转换层进程;所述多进程固态硬盘仿真环境实现方法包括:
所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
可选地,所述方法还包括:
所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程。
可选地,所述态硬盘测试脚本包括固态硬盘测试命令,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
可选地,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息的步骤包括:
所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;
所述模拟主机进程确定所述偏移地址为所述占用内存信息。
可选地,在所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤之后,所述方法还包括:
所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程。
可选地,在所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程的步骤之后,所述方法还包括:
所述模拟主机进程获取验证信息;
所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
可选地,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放的步骤包括:
所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
可选地,所述闪存转换层进程包括实体线程;所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤包括:
所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
可选地,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
所述实体线程基于所述物理内存地址进行数据搬运。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
可选地,所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址的步骤包括:
所述实体线程从所述主机内存中确定初始物理地址;
所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
可选地,在所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息的步骤之前,所述方法还包括:
所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
可选地,所述物理接口协议链接为套接字链接时,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接的步骤包括:
所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
可选地,所述模拟主机进程将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程的步骤包括:
所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
可选地,所述方法还包括:
所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
可选地,所述方法还包括:
所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种多进程固态硬盘仿真环境实现方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (20)
1.一种多进程固态硬盘仿真环境实现方法,其特征在于,所述多进程包括模拟主机进程和闪存转换层进程;所述方法包括:
所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述模拟主机进程将所述主机内存的起始地址传递给所述闪存转换层进程。
3.根据权利要求2所述的方法,其特征在于,所述态硬盘测试脚本包括固态硬盘测试命令,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息。
4.根据权利要求3所述的方法,其特征在于,所述模拟主机进程解析所述固态硬盘测试命令生成非易失性内存主机控制器接口规范消息的步骤包括:
所述模拟主机进程解析所述固态硬盘测试命令,确定占用内存空间;
所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息;
所述模拟主机进程基于所述占用内存信息,生成所述非易失性内存主机控制器接口规范消息。
5.根据权利要求4所述的方法,其特征在于,所述模拟主机进程在所述主机内存中,确定出与所述占用内存空间匹配的占用内存信息的步骤包括:
所述模拟主机进程在所述主机内存的起始地址上,基于所述占用内存空间进行偏移,得到偏移地址;
所述模拟主机进程确定所述偏移地址为所述占用内存信息。
6.根据权利要求5所述的方法,其特征在于,在所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤之后,所述方法还包括:
所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息完成后,生成执行完成信息;
所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程。
7.根据权利要求6所述的方法,其特征在于,在所述闪存转换层进程将所述执行完成信息发送至所述模拟主机进程的步骤之后,所述方法还包括:
所述模拟主机进程获取验证信息;
所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放。
8.根据权利要求7所述的方法,其特征在于,所述模拟主机进程在所述验证信息为预设成功信息时,对所述主机内存进行内存释放的步骤包括:
所述模拟主机进程在所述验证信息为预设成功信息时,在所述主机内存中,释放所述偏移地址占用的内存。
9.根据权利要求5所述的方法,其特征在于,所述闪存转换层进程包括实体线程;所述闪存转换层进程执行所述非易失性内存主机控制器接口规范消息的步骤包括:
所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运。
10.根据权利要求9所述的方法,其特征在于,所述实体线程基于所述非易失性内存主机控制器接口规范消息进行数据搬运的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址;
所述实体线程基于所述物理内存地址进行数据搬运。
11.根据权利要求10所述的方法,其特征在于,所述实体线程依据所述非易失性内存主机控制器接口规范消息,在所述主机内存中确定出物理内存地址的步骤包括:
所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址。
12.根据权利要求11所述的方法,其特征在于,所述实体线程依据所述非易失性内存主机控制器接口规范消息的偏移地址,在所述主机内存中转换为所述物理内存地址的步骤包括:
所述实体线程从所述主机内存中确定初始物理地址;
所述实体线程在所述初始物理地址偏移所述偏移地址对应的内存空间,得到所述物理内存地址。
13.根据权利要求1所述的方法,其特征在于,在所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息的步骤之前,所述方法还包括:
所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接;
所述闪存转换层进程基于所述物理接口协议链接与所述模拟主机进程连接。
14.根据权利要求13所述的方法,其特征在于,所述物理接口协议链接为套接字链接时,所述闪存转换层进程创建与所述模拟主机进程对应的物理接口协议链接的步骤包括:
所述闪存转换层进程创建与所述模拟主机进程对应的套接字链接。
15.根据权利要求13所述的方法,其特征在于,所述模拟主机进程将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程的步骤包括:
所述模拟主机进程采用所述物理接口协议链接将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程。
16.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述模拟主机进程同时启动多个模拟主机子进程;以模拟多队列访问固态硬盘场景。
17.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述闪存转换层进程同时启动多个闪存转换层子进程;以模拟多固态硬盘场景。
18.一种多进程固态硬盘仿真环境实现装置,其特征在于,所述多进程包括模拟主机进程和闪存转换层进程;所述装置包括:
内存申请模块,用于所述模拟主机进程申请主机内存,所述主机内存存储有固态硬盘测试脚本;
解析模块,用于所述模拟主机进程解析所述固态硬盘测试脚本生成非易失性内存主机控制器接口规范消息,并将所述非易失性内存主机控制器接口规范消息发送至所述闪存转换层进程;
执行模块,用于所述闪存转换层进程接收所述非易失性内存主机控制器接口规范消息,并执行所述非易失性内存主机控制器接口规范消息,以完成固态硬盘仿真。
19.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至17中任一项所述的多进程固态硬盘仿真环境实现方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的多进程固态硬盘仿真环境实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310275034.0A CN115993937A (zh) | 2023-03-21 | 2023-03-21 | 一种多进程固态硬盘仿真环境实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310275034.0A CN115993937A (zh) | 2023-03-21 | 2023-03-21 | 一种多进程固态硬盘仿真环境实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115993937A true CN115993937A (zh) | 2023-04-21 |
Family
ID=85992305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310275034.0A Pending CN115993937A (zh) | 2023-03-21 | 2023-03-21 | 一种多进程固态硬盘仿真环境实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115993937A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806892A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 存储芯片模型测试方法、装置、通信设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105741883A (zh) * | 2016-01-28 | 2016-07-06 | 深圳市硅格半导体股份有限公司 | 测试方法和装置 |
CN109445691A (zh) * | 2018-10-16 | 2019-03-08 | 深圳忆联信息系统有限公司 | 一种提高ftl算法开发和验证效率的方法及装置 |
CN111752772A (zh) * | 2020-05-11 | 2020-10-09 | 珠海妙存科技有限公司 | 存储设备仿真测试系统及方法 |
US20200401751A1 (en) * | 2019-06-24 | 2020-12-24 | Samsung Electronics Co., Ltd. | Systems & methods for multi pf emulation using vfs in ssd controller |
CN112395146A (zh) * | 2020-11-27 | 2021-02-23 | 深圳忆联信息系统有限公司 | Ssd固件仿真验证方法、系统、计算机设备及存储介质 |
CN112541311A (zh) * | 2020-12-02 | 2021-03-23 | 深圳市金泰克半导体有限公司 | 仿真测试方法、装置、计算机设备和存储介质 |
CN113948146A (zh) * | 2021-10-22 | 2022-01-18 | 江苏芯盛智能科技有限公司 | 固态硬盘的测试方法、装置及电子设备 |
US20230038605A1 (en) * | 2021-08-06 | 2023-02-09 | SK Hynix Inc. | System and method for testing multicore ssd firmware based on preconditions generation |
-
2023
- 2023-03-21 CN CN202310275034.0A patent/CN115993937A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105741883A (zh) * | 2016-01-28 | 2016-07-06 | 深圳市硅格半导体股份有限公司 | 测试方法和装置 |
CN109445691A (zh) * | 2018-10-16 | 2019-03-08 | 深圳忆联信息系统有限公司 | 一种提高ftl算法开发和验证效率的方法及装置 |
US20200401751A1 (en) * | 2019-06-24 | 2020-12-24 | Samsung Electronics Co., Ltd. | Systems & methods for multi pf emulation using vfs in ssd controller |
CN111752772A (zh) * | 2020-05-11 | 2020-10-09 | 珠海妙存科技有限公司 | 存储设备仿真测试系统及方法 |
CN112395146A (zh) * | 2020-11-27 | 2021-02-23 | 深圳忆联信息系统有限公司 | Ssd固件仿真验证方法、系统、计算机设备及存储介质 |
CN112541311A (zh) * | 2020-12-02 | 2021-03-23 | 深圳市金泰克半导体有限公司 | 仿真测试方法、装置、计算机设备和存储介质 |
US20230038605A1 (en) * | 2021-08-06 | 2023-02-09 | SK Hynix Inc. | System and method for testing multicore ssd firmware based on preconditions generation |
CN113948146A (zh) * | 2021-10-22 | 2022-01-18 | 江苏芯盛智能科技有限公司 | 固态硬盘的测试方法、装置及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806892A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 存储芯片模型测试方法、装置、通信设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016197768A1 (zh) | 芯片验证方法、装置及系统 | |
US10042744B2 (en) | Adopting an existing automation script to a new framework | |
CN111859832B (zh) | 一种芯片仿真验证方法、装置及相关设备 | |
CN115168129B (zh) | 植入仿真器的自动化测试系统及ssd硬盘测试方法 | |
CN113849419B (zh) | 芯片的测试向量生成方法、系统、设备及存储介质 | |
CN117785593B (zh) | 一种基于UVM的xHCI驱动的实现系统及方法 | |
CN111316227B (zh) | 一种调试应用程序的方法及设备 | |
WO2024130861A1 (zh) | 一种云原生的硬件逻辑仿真fpga加速方法及系统 | |
CN116089281A (zh) | 一种芯片测试方法、测试平台和设备 | |
CN115993937A (zh) | 一种多进程固态硬盘仿真环境实现方法和装置 | |
US9117018B2 (en) | Method of debugging software and corresponding computer program product | |
CN114430385B (zh) | 一种网络设备的检测方法、装置及电子设备 | |
CN112860587B (zh) | Ui自动测试方法和装置 | |
CN117112447A (zh) | 一种数据传输方法、装置、电子设备及可读存储介质 | |
US20240176632A1 (en) | Method for generating and verifying automotive embedded software based on autosar | |
CN113657068A (zh) | Soc仿真验证及soc的仿真验证设备验证环境搭建方法 | |
CN115952044A (zh) | 一种自动化测试方法及其装置 | |
CN115562931A (zh) | 处理器调试模块验证方法、装置、电子设备和存储介质 | |
US10922249B2 (en) | Input/output control code filter | |
CN113792522A (zh) | 仿真验证方法、装置及计算设备 | |
CN117597669A (zh) | 一种测试方法、系统及装置 | |
CN113986263A (zh) | 代码自动化测试方法、装置、电子设备、存储介质 | |
US11275875B2 (en) | Co-simulation repeater with former trace data | |
CN112882897A (zh) | 异常场景处理方法、装置、电子设备及存储介质 | |
CN117933155B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230421 |