CN115858323A - 一种针对中央处理器cpu的功能及性能测试方法、系统及装置 - Google Patents
一种针对中央处理器cpu的功能及性能测试方法、系统及装置 Download PDFInfo
- Publication number
- CN115858323A CN115858323A CN202211723772.9A CN202211723772A CN115858323A CN 115858323 A CN115858323 A CN 115858323A CN 202211723772 A CN202211723772 A CN 202211723772A CN 115858323 A CN115858323 A CN 115858323A
- Authority
- CN
- China
- Prior art keywords
- test
- cpu
- tested
- asynchronous event
- software
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及处理器技术领域,尤其涉及一种针对中央处理器CPU的功能及性能测试方法及系统。该方法包括:在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;根据第一待测CPU和第一异步事件发生器对至少一个测试软件的运行情况,在至少一个测试软件中确定出第一待测CPU运行异常的异常测试软件;在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置异常测试软件,以使第二待测CPU和第二异步事件发生器运行异常测试软件,从而对第二待测CPU运行异常的故障点进行调试。如此,缩短了开发周期。
Description
技术领域
本发明实施例涉及处理器技术领域,尤其涉及一种针对中央处理器CPU的功能及性能测试方法、系统、装置、计算设备及计算机可读存储介质。
背景技术
中央处理器(Central Processing Unit,CPU)作为很多设备的核心大脑,其重要程度不言而喻。CPU的可靠性,稳定性、通用性及其功能的全面性影响着整个设备的最终的质量。因此对CPU的功能测试就变得极为复杂和严谨。而在多种功能测试场景中,针对CPU在异步事件的干扰下的功能测试最复杂和不可控。
现有的对CPU进行功能测试的方法中,一般会先进行基于软件的仿真测试(Simulation),再进行基于FPGA(Field Programmable Gate Array,可编程阵列逻辑)的模拟测试(Emulation)。经过研究,我们发现,这样的方式会导致整个开发周期较长。
发明内容
本发明实施例提供一种针对中央处理器CPU的功能及性能测试方法,用以提高对CPU的功能及性能测试的效率,缩短开发周期。
第一方面,本发明实施例提供一种针对中央处理器CPU的功能及性能测试方法,包括:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。
在对第一待测CPU进行功能及性能测试时,不同于现有技术中的先进行基于软件的仿真测试(前仿),再进行基于FPGA板的模拟测试(后仿),本申请的技术方案中,先在FPGA板上进行模拟测试,再在仿真系统中进行基于软件的仿真测试。并且,在FPGA板上,设置了第一异步事件发生器,为第一待测CPU和第一异步事件发生器配置至少一个测试软件,如此,在FPGA板上的异步事件的发生不是随机无章的,而是受测试软件的控制的。之后根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件,将该异常测试软件在仿真系统中重复执行。即,将在模拟测试中出现运行异常的异常测试软件的运行情况在基于软件的仿真测试中重现。那么由于基于软件的仿真测试的调试速度较快,因此可以很快地发现第二待测CPU运行异常的故障点。由于所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现,在FPGA板上运行的异常测试软件也和在仿真系统中运行的异常测试软件相同,即FPGA板上进行模拟测试的运行环境和在仿真系统中进行仿真测试的测试环境完全一致,因此第二待测CPU运行异常的故障点也是第一待测CPU运行异常的故障点。可以发现,在上述技术方案中,在仿真系统中仅需运行异常测试软件,无需运行所有的测试软件。由于FPGA板的测试速度快,调试速度慢,仿真系统的测试速度慢,调试速度快,因此本技术方案在FPGA板上进行测试,筛选出异常测试软件后,将异常测试软件在仿真系统中重现,仿真系统中只需运行异常测试软件,并对其进行调试,调试可观测可分析,可以直观快速地定位待测CPU的具体的错误点。这样无需在FPGA板上进行调试,节省了大量时间,也无需在仿真系统中进行针对所有测试软件的测试工作,仅需对异常测试软件进行测试和调试,进一步节省了大量的时间。如此,缩短了开发周期。
在一些实施例中,所述第一待测CPU和所述第一异步事件发生器通过如下方式运行所述测试软件,包括:
所述第一待测CPU在所述测试软件的配置下执行第一测试任务;所述第一异步事件发生器在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成异步事件并发送至所述第一待测CPU。
如此,在FPGA板上的异步事件的发生不是随机无章的,而是受测试软件的控制的。具体为,第一异步事件发生器可以在监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成异步事件并发送至所述第一待测CPU。正是由于异步事件的发生是受软件控制的,那么将测试软件在FPGA板上运行后发现异常测试软件后,就可以在仿真系统中为第二待测CPU和第二异步事件发生器配置这个异常测试软件,那么在仿真系统中,第二异步事件发生器也是基于同样的机制触发异步事件的。从而可以在仿真系统中复现CPU和异步事件发生器对该异常测试软件的测试过程,从而提高调试速度。
在一些实施例中,根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件,包括:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
通过第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况可以确定第一待测CPU针对该测试软件是否运行正常,是否功能及性能良好。从而就可在至少一个测试软件中确定出第一待测CPU运行异常的异常测试软件。上述技术方案可以更加准确地确定出异常测试软件。
在一些实施例中,所述第一待测CPU在所述测试软件的配置下执行第一测试任务,包括:
所述第一待测CPU获取所述测试软件中的各指令;
所述第一待测CPU在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
所述第一待测CPU接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
通过对测试软件中的各指令进行解析,确定测试指令,根据测试指令执行第一测试任务。如此可以保证第一待测CPU是根据测试软件的配置执行第一测试任务的。那么若在后续确定该测试软件是异常测试软件,就可在基于软件的仿真系统中重新运行该测试软件,那么第二待测CPU也会按照同样的配置执行测试任务。保证能够在基于软件的仿真系统中复现测试软件在基于FPGA板的模拟测试中的运行过程。
在一些实施例中,所述第一待测CPU获取所述测试软件中的各指令之后,还包括:
所述第一待测CPU在各指令中确定配置指令;
所述第一待测CPU根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
所述第一待测CPU接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器在所述测试软件的配置下执行第二测试任务,包括:
所述第一异步事件发生器获取所述配置信息;
所述第一异步事件发生器接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
通过对测试软件中的各指令进行解析,确定配置指令,根据配置指令生成配置信息,从而通过所述配置信息指示所述第一异步事件发生器执行所述第二测试任务。如此可以保证第一异步事件发生器是根据测试软件的配置执行第二测试任务的。那么若在后续确定该测试软件是异常测试软件,就可在基于软件的仿真系统中重新运行该测试软件,那么第一异步事件发生器也会按照同样的配置执行测试任务。保证能够在基于软件的仿真系统中复现测试软件在基于FPGA板的模拟测试中的运行过程。
在一些实施例中,所述第二异步事件发生器通过硬件描述语言编写。
第二方面,本发明实施例还提供一种针对中央处理器CPU的功能及性能测试系统,包括:可编程阵列逻辑FPGA板、仿真系统和测试服务器;所述FPGA板包括第一待测CPU和第一异步事件发生器;所述仿真系统包括第二待测CPU和第二异步事件发生器;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现;
所述测试服务器用于:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试。
在一些实施例中,所述第一待测CPU具体用于:在所述测试软件的配置下执行第一测试任务;
所述第一异步事件发生器具体用于:在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成第一异步事件并发送至所述第一待测CPU。
在一些实施例中,所述测试服务器具体用于:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
在一些实施例中,第一待测CPU具体用于:
获取所述测试软件中的各指令;
在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
在一些实施例中,所述第一待测CPU还用于:
在各指令中确定配置指令;
根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器具体用于:
获取所述配置信息;
接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
在一些实施例中,所述第二异步事件发生器通过硬件描述语言编写。
第三方面,本发明实施例还提供一种针对中央处理器CPU的功能及性能测试装置,包括:
处理单元,用于:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。
在一些实施例中,所述第一待测CPU具体用于:在所述测试软件的配置下执行第一测试任务;
所述第一异步事件发生器具体用于:在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成第一异步事件并发送至所述第一待测CPU。
在一些实施例中,所述处理单元具体用于:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
在一些实施例中,第一待测CPU具体用于:
获取所述测试软件中的各指令;
在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
在一些实施例中,所述第一待测CPU还用于:
在各指令中确定配置指令;
根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器具体用于:
获取所述配置信息;
接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
在一些实施例中,所述第二异步事件发生器通过硬件描述语言编写。
第四方面,本发明实施例还提供一种计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行上述任一方式所列的针对CPU的功能及性能测试方法。
第五方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行上述任一方式所列的针对CPU的功能及性能测试方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的前仿的系统架构示意图;
图2为本发明实施例提供的一种可能的后仿的系统架构示意图;
图3为本发明实施例提供的一种功能及性能测试系统的架构示意图;
图4为本发明实施例提供的一种针对CPU的功能及性能测试方法的示意图;
图5为本发明实施例提供的一种针对CPU的功能及性能测试方法的示意图;
图6为本发明实施例提供的一种针对CPU的功能及性能测试方法的示意图;
图7为本发明实施例提供的一种功能及性能测试系统的架构示意图;
图8为本发明实施例提供的一种针对CPU的功能及性能测试装置的结构示意图;
图9为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
基于本申请描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请所附权利要求保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(Unless otherwise indicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据本申请实施例图示或描述中给出那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
先对CPU和外设之间的交互方法做简单介绍。通常在系统中CPU用于控制各类外设,而外设与CPU的交互一般有两种方式。第一种是由CPU周期性程序式访问外设的状态寄存器,一旦满足某种条件,则CPU进行相应的外设操作,例如从外设中读取数据等。第二种是外设主动发起交互请求,比如CPU需要的一帧数据已经在外设准备完毕。外设通过中断控制器,以某个特定中断向量向CPU发起中断请求,当CPU接收到该中断请求后,执行预先制定好的中断服务程序从该外设取走这一帧数据。第二种是目前主流的有效交互方法。在第二种方式中,外设会主动向CPU发送中断请求,这里的中断请求就是异步事件的一种。一般来说,CPU在接收到异步事件之前,是有自己的执行任务的,例如CPU可能在进行运算,例如可能在搬运数据,例如可能在控制某个设备执行一些操作等等。若CPU的功能及性能良好,运行正常,那么CPU接收到异步事件后,既能够对该异步事件进行处理,又能不影响自己正在执行的任务的正确性。若CPU在接收到异步事件后,没有正确处理异步事件,或者由于接收到这个突发的异步事件而导致正在执行的任务不能正确执行,例如,搬运数据出错,运算出错等,则说明CPU存在一些功能及性能上的缺陷,需要进一步确定该具体的错误点,也就是我们经常说的修复“bug”。
通常,对CPU的功能及性能进行测试分为基于软件的仿真测试(Simulation)和基于FPGA的模拟测试(Emulation)。为了方便介绍,我们在后文中将基于软件的仿真测试称为前仿,将基于FPGA的模拟测试称为后仿。
图1示出了一种可能的前仿的系统架构示意图,该系统架构是一个由虚拟的待测CPU和虚拟的外设构成的仿真系统。虚拟的待测CPU是基于硬件描述语言(HardwareDescription Language,HDL)构建的功能模块,虚拟的外设可以采用HDL也可以采用软件描述语言(Software Description Language,SDL)如C语言进行构建,外设是指鼠标、键盘等设备。在测试软件的配置下,各虚拟的外设会生成一些可控的虚拟的异步事件,并将虚拟的异步事件发送至待测CPU。这些异步事件可以为:中断(Interrupt),重置(Reset),不可屏蔽中断(Non Maskable Interrupt,NMI)和总线错误(Bus Error)。我们可以通过待测CPU对于这些由虚拟的外设触发的虚拟的异步事件的反应来确定待测CPU的功能及性能。前仿中,待测CPU、外设和异步事件都是虚拟构建的,没有真实的物理模块,是一种虚拟仿真。待测CPU和各外设的任一寄存器、逻辑门及内存空间等状态全部都可以利用电子设计自动化(Electronic design automation,EDA)工具在全时钟周期内进行观测和追踪。因此,基于假设的场景,前仿的可控制性、可观测性高,而且易于调试,覆盖率可回收,适合前期的硬件开发阶段。但是虚拟的数据量较大,需要耗费机器大量的时间,因此测试的速度较慢。综上,前仿的测试速度慢,但调试速度较快。
图2示出了一种可能的后仿的系统架构图,待测CPU和各外设均设置在FPGA板上,待测CPU和各外设均为真实的物理模块。待测CPU和各外设的交互是基于真正的物理模块进行的,因此各外设生成的异步事件也是真实的。因为我们无法控制真实的物理模块的行为,因此,各外设如鼠标、键盘等生成的异步事件是随机的。各外设将这些异步事件发送至待测CPU。我们可以通过待测CPU针对这些由外设随机触发的异步事件的反应来确定待测CPU的功能及性能。后仿中,由于待测CPU和各外设均为真实的物理模块,基于硬件加速,因此测试速度快。但是调试较慢,例如可以采用单步调试方法。单步调试是指一般利用FPGA板的联合测试工作组(Joint Test Action Group,JTAG)接口和通用异步接收/发送(UniversalAsynchronous Receiver/Transmitter,UART)接口进行输入及输出,在某个特定运行时间点对特定可观测硬件比如待测CPU的状态寄存器,通用寄存器和内存空间进行输出后再次分析,需要反复利用输出内容进行有效迭代调试后逐渐逼近错误点。调试过程极其耗费时间。综上,后仿的测试速度快,但调试速度较慢。
下面对现有技术中对待测CPU在异步事件的干扰下进行功能测试的方法进行介绍。对待测CPU在异步事件的干扰下进行功能测试时,一般会先采用前仿,然后采用后仿。因为前仿中容易对待测CPU进行观测和分析,容易调试,可以较快地确定待测CPU中具体的错误点,从而对错误点进行针对修复。在不断的测试-调试的迭代中,待测CPU的功能及性能不断完善。在待测CPU的功能及性能达到预设标准后,再将待测CPU和外设下载到FPGA板上,将他们设置成真实的物理模块,在真实的物理环境中进行测试,也就是后仿。后仿的测试速度比前仿快,但是,调试速度较慢。开发过程涉及前仿和后仿,由于前仿中测试速度慢,后仿中调试速度慢,导致整个开发周期较长。
举个例子,首先在前仿的系统架构中,运行所有的测试软件。例如测试软件有100个,每个测试软件中会包含待测CPU执行代码和各外设的外设执行代码,待测CPU根据待测CPU执行代码进行工作,例如搬运数据、进行运算;每个外设根据各自对应的外设执行代码进行工作,外设执行代码中可能就会包含一些触发异步事件的代码。例如在仿真系统执行某个测试软件时,待测CPU根据待测CPU执行代码搬运数据,鼠标根据鼠标执行代码执行一些操作,这些操作中包含在某时刻发送一个异步事件;那么该测试软件的作用就是测试在待测CPU搬运数据的过程中,能否对突然的来自鼠标的异步事件进行处理,同时不影响自己搬运数据的工作。以上仅为一个测试软件的示例,实际上测试软件中的代码会复杂很多。仿真系统运行这100个测试软件的过程就是测试。
然后我们可以观测到在整个测试过程中(100个测试软件)待测CPU的各种运行状态,从而确定待测CPU的具体的错误点,对错误点进行修复,这个过程称为调试。调试过后再次在仿真系统中运行这100个测试软件,即再进行测试……如此经历多次测试-调试的迭代,直至待测CPU在这100个测试软件的测试下,均没有出现运行异常,或者出现运行异常的数量小于某个阈值,则说明待测CPU在异步事件的干扰下仍能正常运行,待测CPU的功能及性能达到预设标准。由于在仿真系统中进行一次测试本身需要的时间就很长,那么多次迭代的测试时间就会更长,导致前仿会耗费很多时间,直接拉长了整个开发周期。
之后采用后仿进行功能测试。将待测CPU和各外设焊在FPGA板上,各外设随机生成异步事件,例如对鼠标进行左击、右击、双击等操作,对键盘进行按键操作。这些操作会作为异步事件到达待测CPU。待测CPU会对这些异步事件作出反应,整个过程称为测试。由于待测CPU和各外设是真实的物理模块,因此测试速度很快。但是调试的过程较慢,也就是说后仿中查找错误点的速度较慢。因此整个开发周期进一步拉长。
综上,本申请实施例提供一种针对CPU的功能及性能测试系统,如图3所示,包括:FPGA板、仿真系统和测试服务器。其中FPGA板包括第一待测CPU和第一异步事件发生器;所述仿真系统包括第二待测CPU和第二异步事件发生器;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。该功能及性能测试系统用于实现对本申请实施例提供的功能及性能测试方法。
也就是说,在FPGA板上的第一待测CPU和第一异步事件发生器是真实的硬件,在仿真系统中的第二待测CPU和第二异步事件发生器是虚拟的软件。
基于图3所示意的功能及性能测试系统的架构图,本申请实施例提供一种针对CPU的功能及性能测试方法,如图4所示。包括:
步骤401,在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能。
步骤402,根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
步骤403,在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试。
本申请实施例提供的方法不同于现有技术中的先进行基于软件的仿真测试,再进行基于FPGA板的模拟测试,而是先进行基于FPGA板的模拟测试,后进行基于软件的仿真测试。
在步骤401中,测试服务器先进行基于FPGA板的模拟测试。在模拟测试中,测试服务器为部署在FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件,以使第一待测CPU和第一异步事件发生器基于这些测试软件执行测试过程,从而测试出第一待测CPU的功能及性能。
测试软件的数量可以为1个,2个甚至更多,本申请实施例对此不做限制。
例如,测试服务器为部署在FPGA板上的第一待测CPU和第一异步事件发生器配置了10个测试软件,其中第1个测试软件是使第一待测CPU进行浮点运算,使第一异步事件发生器在第一待测CPU进行浮点运算的某一时刻向第一待测CPU发送一个异步事件,以测试第一待测CPU的功能及性能是否良好,该异步事件是否能够影响到第一待测CPU执行浮点运算。例如,第2个测试软件是使第一待测CPU进行数据搬运,使第一异步事件发生器在第一待测CPU进行数据搬运的某一时刻向第一待测CPU发送一个异步事件,以测试第一待测CPU的功能及性能是否良好,该异步事件是否能够影响到第一待测CPU执行数据搬运。以上仅为示例,其余的测试软件的功能可以参考上述两个测试软件,本申请实施例对其余的测试软件不作赘述。
将各测试软件配置给FPGA板上的第一待测CPU和第一异步事件发生器后,就可启动测试,令第一待测CPU和第一异步事件发生器执行各测试软件。例如将10个测试软件配置给FPGA板上的第一待测CPU和第一异步事件发生器后,测试服务器就可启动测试,令第一待测CPU和第一异步事件发生器按照一定的顺序执行这10个测试软件。
下面以其中一个测试软件为例,简单介绍第一待测CPU和第一异步事件发生器运行该测试软件的方法。具体为:所述第一待测CPU在所述测试软件的配置下执行第一测试任务;所述第一异步事件发生器在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成异步事件并发送至所述第一待测CPU。
例如,第一测试任务为浮点运算,第一待测CPU在所述测试软件的配置下读取一些指令,来执行浮点运算;第二测试任务为监控到第一待测CPU在读取了目标指令时,生成异步事件发送给第一待测CPU。具体的,在第一待测CPU执行的各指令中的目标指令中,设置有特定含义的吊钩(trigger),一旦第一待测CPU执行到这些目标指令时,吊钩成功,第一异步事件发生器就可监控到第一待测CPU在执行目标指令,因此发送异步事件至第一待测CPU,来干扰第一待测CPU执行浮点运算。这里的异步事件可以为中断、总线错误等等。从而对第一待测CPU的运行功能及性能进行判断,测试第一待测CPU在被突发的异步事件干扰的情况下,是否还能够得出正确的浮点运算的结果,是否能够对该异步事件也做出妥善处理。
例如,第一测试任务为数据搬运,第一待测CPU在所述测试软件的配置下读取一些指令,来执行数据搬运;第二测试任务为监控到第一待测CPU在读取了目标指令时,生成异步事件发送给第一待测CPU。具体的,在第一待测CPU执行的各指令中的目标指令中,设置有特定含义的吊钩(trigger),一旦第一待测CPU执行到这些目标指令时,吊钩成功,第一异步事件发生器就可监控到第一待测CPU在执行目标指令,因此发送异步事件至第一待测CPU,来干扰第一待测CPU执行浮点运算。若这里的异步事件为总线错误,则上述测试软件可以对第一待测CPU的运行功能及性能进行判断,测试第一待测CPU在被突发的总线错误干扰的情况下,是否还能够准确地搬运数据,搬运的数据是否会被总线上返回的错误数据污染。
由于上述测试过程是在FPGA板上基于真实的物理模块进行的,因此相比于在虚拟的软件仿真中,测试速度快。
如此,在FPGA板上的异步事件的发生不是随机无章的,而是受测试软件的控制的。具体为,第一异步事件发生器可以在监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成异步事件并发送至所述第一待测CPU。
在步骤402中,在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取第一待测CPU和第一异步事件发生器对这些测试软件的运行情况,根据各测试软件的运行情况,确定第一待测CPU运行异常的异常测试软件。
一种可能的确定异常测试软件的方式,获取各测试软件中,第一待测CPU针对第一测试任务的执行情况,根据执行情况确定第一待测CPU是否在某个测试软件的运行过程中表现异常,若是,那这个测试软件就是异常测试软件。
例如,测试软件A中,第一待测CPU的第一测试任务是浮点运算,第一待测CPU在运算的过程中,在执行到目标指令时,接收到了第一异步事件发生器发送的异步事件。在本例中,第一待测CPU算出来的结果就是第一待测CPU针对第一测试任务的执行情况。在测试完成后,可以将第一待测CPU算出来的结果和该浮点运算的正确结果进行比对,若一致,则说明异步事件并没有影响到第一待测CPU的执行,第一待测CPU在该测试软件的测试中表现良好;若不一致,则说明第一待测CPU执行浮点运算受到了异步事件的影响,第一待测CPU的功能及性能存在某方面的问题,具体哪里出了问题,需要后续的调试过程找到第一待测CPU的具体的错误点,为了找到具体的错误点,我们将该测试软件A作为异常测试软件用于后续的调试。
另一种可能的确定异常测试软件的方式,在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
例如,测试软件A中,第一待测CPU的第一测试任务是浮点运算,第一待测CPU在运算的过程中,在执行到目标指令时,接收到了第一异步事件发生器发送的中断。在本例中,第一待测CPU算出来的结果就是第一待测CPU针对第一测试任务的执行情况;对该中断的处理情况就是第一待测CPU针对第一异步事件的处理情况。在测试完成后,可以将第一待测CPU算出来的结果和该浮点运算的正确结果进行比对,确定中断是否得到了响应。若第一待测CPU算出来的结果和该浮点运算的正确结果一致且中断得到了响应,则说明异步事件并没有影响到第一待测CPU的执行,并且第一待测CPU还可以妥善处理异步事件,第一待测CPU在该测试软件的测试中表现良好;若第一待测CPU算出来的结果和该浮点运算的正确结果不一致,或者,中断没有得到响应,则说明第一待测CPU的功能及性能存在某方面的问题,具体哪里出了问题,需要后续的调试过程找到第一待测CPU的具体的错误点,为了找到具体的错误点,我们将该测试软件作为异常测试软件用于后续的调试。
通过第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况可以确定第一待测CPU针对该测试软件是否运行正常,是否功能及性能良好。从而就可在至少一个测试软件中确定出第一待测CPU运行异常的异常测试软件。上述技术方案可以更加准确地确定出异常测试软件。
在步骤403中,在确定了异常测试软件后,就可针对性地对这些异常测试软件进行调试,从而确定第一待测CPU的具体的错误点,即,修复“bug”。现有技术中,可能还是会在FPGA板上进行调试,但是FPGA板的调试速度极慢,很难快速定位到第一待测CPU的具体错误点。因此本申请实施例中,将调试过程放在了基于软件的仿真测试中。
在步骤402中确定了异常测试软件后,就可将这些异常测试软件部署给仿真系统中的第二待测CPU和第二异步事件发生器,让二者运行这些异常测试软件。在仿真系统中运行这些异常测试软件的过程称为测试,测试过程依然慢,但是由于异常测试软件的数量少,因此还是减少了开发周期。并且由于基于软件的仿真测试可观测可分析,所以调试速度快,能够很快地发现CPU的具体故障点。
例如,在步骤402中,在10个测试软件中确定了2个异常测试软件,则将这2个异常测试软件部署给基于软件的仿真系统中的第二待测CPU和第二异步事件发生器。第二待测CPU是第一待测CPU的软件实现,第二异步事件发生器是第一异步事件发生器的软件实现,异常测试软件在基于FPGA板的模拟测试中的配置信息和在基于软件的仿真测试中的配置信息完全一致(异步事件的发生时机、异步事件的种类和形式等),因此在仿真系统中运行这些异常测试软件,就是对这些异常测试软件在基于FPGA板的模拟测试中的测试过程的复现。例如,第二待测CPU和第二异步事件发生器运行这2个异常测试软件,分别为测试软件A和测试软件B。针对测试软件A,第二异步事件发生器会像第一异步事件发生器一样,当“埋伏”在第二待测CPU的各指令中的目标指令处的钩子被触发(第二待测CPU执行了目标指令),则以同样的形式触发同样的异步事件给第二待测CPU。当运行完了2个测试软件后,就可对第二待测CPU在运行这2个测试软件时可能出现的问题进行调试,从而确定第二待测CPU的具体的故障点。由于第二待测CPU是第一待测CPU的软件实现,因此也就确定了第一待测CPU的具体的故障点。运行2个测试软件的过程就是测试,测试的速度较慢,但是由于无需运行所有的10个测试软件,因此降低了开发周期。调试的过程很快,进一步降低了开发周期。
由于所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现,在FPGA板上运行的异常测试软件也和在仿真系统中运行的异常测试软件相同,即FPGA板上进行模拟测试的运行环境和在仿真系统中进行仿真测试的测试环境完全一致,因此第二待测CPU运行异常的故障点也是第一待测CPU运行异常的故障点。可以发现,在上述技术方案中,在仿真系统中仅需运行异常测试软件,无需运行所有的测试软件。由于FPGA板的测试速度快,调试速度慢,仿真系统的测试速度慢,调试速度快,因此本技术方案在FPGA板上进行测试,筛选出异常测试软件后,将异常测试软件在仿真系统中重现,仿真系统中只需运行异常测试软件,并对其进行调试,调试可观测可分析,可以直观快速地定位待测CPU的具体的错误点。这样无需在FPGA板上进行调试,节省了大量时间,也无需在仿真系统中进行针对所有测试软件的测试工作,仅需对异常测试软件进行测试和调试,进一步节省了大量的时间。
值得注意的是,现有技术中不能采用先在FPGA板上进行测试,然后在软件仿真中进行调试的方案,因为现有技术中,FPGA板上的外设发生的异步事件都是无规的不可控的。在FPGA板上发生的测试过程不能在软件仿真中完全复现,在FPGA板上发生的错误不一定在软件仿真中发生,因此无法先进行基于FPGA板的模拟测试。在现有技术中就不存在确定异常测试软件这一步骤。
下面具体介绍,第一待测CPU如何在所述测试软件的配置下执行第一测试任务。如图5所示。包括:
步骤501,所述第一待测CPU获取所述测试软件中的各指令。
步骤502,所述第一待测CPU在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务。
步骤503,所述第一待测CPU接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
在步骤501中,测试服务器将测试软件存储在第一待测CPU的任意存储空间中,第一待测CPU在该存储空间读取所述测试软件中的各指令。各指令中包括控制指令、测试指令、配置指令等等。
在步骤502中,第一待测CPU在各指令中确定出用于指示自己执行第一测试任务的测试指令。例如,第一待测CPU在各指令中确定出的测试指令为一段代码a,当第一待测CPU接收到测试开始指令后,读取这段代码a,执行这段代码a,就可进行数据搬运。或者,第一待测CPU在各指令中确定出的测试指令为一段代码b,当第一待测CPU接收到测试开始指令后,读取这段代码b,执行这段代码b,就可进行浮点运算。
在步骤503中,用户通过测试服务器下发测试开始指令,或者测试服务器在将测试软件配置给第一待测CPU后,测试服务器自动开始测试。
第一待测CPU在接收到测试开始指令后,读取测试指令,根据测试指令,执行第一测试任务。这里的第一测试任务例如可以是上文所述的浮点运算或数据搬运。当然也可以是其他的控制工作或处理工作,本申请实施例对此不做限制。
在基于软件的仿真系统中,第二待测CPU也是根据上述方法执行测试任务的。将各异常测试软件配置给第二待测CPU,针对任一异常测试软件,第二待测CPU获取所述异常测试软件中的各指令;所述第二待测CPU在各指令中确定测试指令;所述第二待测CPU接收到用户的测试开始指令后,根据所述测试指令执行第三测试任务。当然,针对同一个测试软件来说,第三测试任务和第一测试任务完全相同。
通过对测试软件中的各指令进行解析,确定测试指令,根据测试指令执行第一测试任务。如此可以保证第一待测CPU是根据测试软件的配置执行第一测试任务的。那么若在后续确定该测试软件是异常测试软件,就可在基于软件的仿真系统中重新运行该测试软件,那么第二待测CPU也会按照同样的配置执行测试任务。保证能够在基于软件的仿真系统中复现测试软件在基于FPGA板的模拟测试中的运行过程。
测试软件中的各指令中还包括配置指令,第一待测CPU还可以在各指令中确定配置指令,根据配置指令生成配置信息。配置信息用于指示所述第一异步事件发生器执行所述第二测试任务。例如,配置信息中指示第一异步事件发生器在第一待测CPU执行目标指令x时生成中断并发送至第一待测CPU。又例如,配置信息中指示第一异步事件发生器在第一待测CPU执行目标指令y时生成总线错误并发送至第一待测CPU。
下面通过一个具体的实施例介绍第一待测CPU和第一异步事件发生器分别如何执行第一测试任务和第二测试任务。如图6所示,包括:
步骤601,第一待测CPU获取所述测试软件中的各指令。
步骤602,所述第一待测CPU在各指令中确定测试指令,在各指令中确定配置指令。
步骤603,第一待测CPU根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务。
步骤604,第一待测CPU将所述配置信息配置给第一异步事件发生器。
步骤605,第一异步事件发生器获取了所述配置信息。
步骤606,所述第一待测CPU接收到用户的测试开始指令。
步骤607,所述第一待测CPU向所述第一异步事件发生器发送测试开始的指示。
步骤608,所述第一待测CPU根据所述测试指令执行所述第一测试任务。
步骤609,第一异步事件发生器接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
第一待测CPU将配置信息存储至第一异步事件发生器对应的存储空间,第一异步事件发生器从该存储空间中获取配置信息,根据配置信息的指示,在接收到第一待测CPU发送的测试开始的指示后,监控第一待测CPU执行到目标指令后,生成异步事件并发送至第一待测CPU。
例如,第一异步事件发生器根据配置信息,在监控到第一待测CPU执行到目标指令c时,生成中断发送至第一待测CPU。又例如,第一异步事件发生器根据配置信息,在监控到第一待测CPU执行到目标指令d时,生成总线错误发送至第一待测CPU。
在基于软件的仿真系统中,第二异步事件发生器也是根据上述方法执行测试任务的。将各异常测试软件配置给第二待测CPU,针对任一异常测试软件,第二待测CPU获取所述异常测试软件中的各指令;所述第二待测CPU在各指令中确定配置指令;根据所述配置指令生成配置信息;将配置信息存储至第二异步事件发生器对应的存储空间;第二待测CPU接收到用户的测试开始指令后,向所述第二异步事件发生器发送测试开始的指示。
所述第二异步事件发生器在自身对应的存储空间获取所述配置信息;接收到所述第二待测CPU发送的所述指示,根据所述配置信息执行所述第四测试任务。当然,针对同一个测试软件来说,第四测试任务和第二测试任务完全相同。
通过对测试软件中的各指令进行解析,确定配置指令,根据配置指令生成配置信息,从而通过所述配置信息指示所述第一异步事件发生器执行所述第二测试任务。如此可以保证第一异步事件发生器是根据测试软件的配置执行第二测试任务的。那么若在后续确定该测试软件是异常测试软件,就可在基于软件的仿真系统中重新运行该测试软件,那么第一异步事件发生器也会按照同样的配置执行测试任务。保证能够在基于软件的仿真系统中复现测试软件在基于FPGA板的模拟测试中的运行过程。
在一些可能的实施例中,由于所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现,第二异步事件发生器是用编程语言编写的虚拟的软件。因此第二异步事件发生器可以用硬件语言例如HDL语言编写,也可以用软件语言如c语言编写。
若在基于软件的仿真测试中采用软件语言编写第二异步事件发生器的话,那在基于FPGA板的模拟测试中,需要重新用硬件语言编写一个异步事件发生器,然后将该用硬件语言编写的异步事件发生器下载到FPGA板上从而得到第一异步事件发生器。可以发现,需要用两种语言分别编写异步事件发生器。
在一些实施例中,由于在基于软件的仿真测试和基于FPGA板的模拟测试中都会用到异步事件发生器,那么在基于软件的仿真测试中可以直接采用硬件语言编写第二异步事件发生器,这样在基于FPGA板的模拟测试中就可直接将该第二异步事件发生器下载到FPGA板上,就可得到第一异步事件发生器了。简化了工程师的编程压力,进一步缩短了开发周期。
图7示出了本申请实施例提供的待测CPU和异步事件发生器的具体的架构图。异步事件发生器对待测CPU中的单一信号或复合信号进行监控,这里的单一信号或复合信号为上文中提到的目标指令的具体表现形式。在想要监控的单一信号或复合信号处设置吊钩,当待测CPU执行目标指令时,单一信号或复合信号会发生变化,例如电平发生变化等等,那么吊钩就会被触发;如此异步事件发生器就可根据配置信息,在驱动电路的控制下,生成异步事件发送至待测CPU。在图7中,驱动电路可以驱动生成各种类型的异步事件,例如中断(Interrupt),重置(Reset),不可屏蔽中断(Non Maskable Interrupt,NMI)和总线错误(Bus Error)等;可以驱动生成各种行为形式的异步事件,例如高低电平,延变,持续时间,中断向量值等。
本申请实施例所指的测试服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
基于相同的技术构思,图8示例性的示出了本发明实施例提供的一种针对中央处理器CPU的功能及性能测试装置的结构,该结构可以执行针对中央处理器CPU的功能及性能测试的流程。
如图8所示,该装置具体包括:
处理单元801,用于:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。
在一些实施例中,所述第一待测CPU具体用于:在所述测试软件的配置下执行第一测试任务;
所述第一异步事件发生器具体用于:在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成第一异步事件并发送至所述第一待测CPU。
在一些实施例中,所述处理单元801具体用于:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
在一些实施例中,第一待测CPU具体用于:
获取所述测试软件中的各指令;
在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
在一些实施例中,所述第一待测CPU还用于:
在各指令中确定配置指令;
根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器具体用于:
获取所述配置信息;
接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
在一些实施例中,所述第二异步事件发生器通过硬件描述语言编写。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图9所示,包括至少一个处理器901,以及与至少一个处理器连接的存储器902,本申请实施例中不限定处理器901与存储器902之间的具体连接介质,图9中处理器901和存储器902之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器902存储有可被至少一个处理器901执行的指令,至少一个处理器901通过执行存储器902存储的指令,可以执行上述针对中央处理器CPU的功能及性能测试方法的步骤。
其中,处理器901是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器902内的指令以及调用存储在存储器902内的数据,从而进行针对中央处理器CPU的功能及性能测试方法。在一些实施例中,处理器901可包括一个或多个处理单元,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。在一些实施例中,处理器901和存储器902可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器901可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器902可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器902是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器902还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行程序,计算机可执行程序用于使计算机执行上述任一方式所列的针对中央处理器CPU的功能及性能测试方法的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种针对中央处理器CPU的功能及性能测试方法,其特征在于,包括:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。
2.如权利要求1所述的方法,其特征在于,所述第一待测CPU和所述第一异步事件发生器通过如下方式运行所述测试软件,包括:
所述第一待测CPU在所述测试软件的配置下执行第一测试任务;所述第一异步事件发生器在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成异步事件并发送至所述第一待测CPU。
3.如权利要求2所述的方法,其特征在于,根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件,包括:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
4.如权利要求2所述的方法,其特征在于,所述第一待测CPU在所述测试软件的配置下执行第一测试任务,包括:
所述第一待测CPU获取所述测试软件中的各指令;
所述第一待测CPU在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
所述第一待测CPU接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
5.如权利要求4所述的方法,其特征在于,所述第一待测CPU获取所述测试软件中的各指令之后,还包括:
所述第一待测CPU在各指令中确定配置指令;
所述第一待测CPU根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
所述第一待测CPU接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器在所述测试软件的配置下执行第二测试任务,包括:
所述第一异步事件发生器获取所述配置信息;
所述第一异步事件发生器接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
6.如权利要求1-5任一项所述的方法,其特征在于,所述第二异步事件发生器通过硬件描述语言编写。
7.一种针对中央处理器CPU的功能及性能测试系统,其特征在于,包括:可编程阵列逻辑FPGA板、仿真系统和测试服务器;所述FPGA板包括第一待测CPU和第一异步事件发生器;所述仿真系统包括第二待测CPU和第二异步事件发生器;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现;
所述测试服务器用于:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试。
8.如权利要求7所述的系统,其特征在于,所述第一待测CPU具体用于:在所述测试软件的配置下执行第一测试任务;
所述第一异步事件发生器具体用于:在所述测试软件的配置下执行第二测试任务;所述第二测试任务为监控到所述第一待测CPU执行所述第一测试任务中的目标指令时,生成第一异步事件并发送至所述第一待测CPU。
9.如权利要求8所述的系统,其特征在于,所述测试服务器具体用于:
在所述第一待测CPU和所述第一异步事件发生器根据所述至少一个测试软件测试完成后,获取所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况;
根据所述第一待测CPU针对每个测试软件中的第一异步事件的处理情况和针对所述第一测试任务的执行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件。
10.如权利要求8所述的系统,其特征在于,第一待测CPU具体用于:
获取所述测试软件中的各指令;
在各指令中确定测试指令;所述测试指令用于指示所述第一待测CPU执行所述第一测试任务;
接收到用户的测试开始指令后,根据所述测试指令执行所述第一测试任务。
11.如权利要求10所述的系统,其特征在于,所述第一待测CPU还用于:
在各指令中确定配置指令;
根据所述配置指令生成配置信息;所述配置信息用于指示所述第一异步事件发生器执行所述第二测试任务;
接收到用户的测试开始指令后,向所述第一异步事件发生器发送测试开始的指示;
所述第一异步事件发生器具体用于:
获取所述配置信息;
接收到所述第一待测CPU发送的所述指示,根据所述配置信息执行所述第二测试任务。
12.如权利要求7-11任一项所述的系统,其特征在于,所述第二异步事件发生器通过硬件描述语言编写。
13.一种针对中央处理器CPU的功能及性能测试装置,其特征在于,包括:
处理单元,用于:
在可编程阵列逻辑FPGA的模拟测试中,为部署于FPGA板上的第一待测CPU和第一异步事件发生器配置至少一个测试软件;所述测试软件用于测试所述第一待测CPU的功能及性能;
根据所述第一待测CPU和所述第一异步事件发生器对所述至少一个测试软件的运行情况,在所述至少一个测试软件中确定出所述第一待测CPU运行异常的异常测试软件;
在基于软件的仿真测试中,为部署于仿真系统中的第二待测CPU和第二异步事件发生器配置所述异常测试软件,以使所述第二待测CPU和所述第二异步事件发生器运行所述异常测试软件,从而对所述第二待测CPU运行异常的故障点进行调试;所述第一待测CPU是所述第二待测CPU在所述FPGA板的硬件实现;所述第一异步事件发生器是所述第二异步事件发生器在所述FPGA板的硬件实现。
14.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行权利要求1至6任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211723772.9A CN115858323A (zh) | 2022-12-30 | 2022-12-30 | 一种针对中央处理器cpu的功能及性能测试方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211723772.9A CN115858323A (zh) | 2022-12-30 | 2022-12-30 | 一种针对中央处理器cpu的功能及性能测试方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858323A true CN115858323A (zh) | 2023-03-28 |
Family
ID=85656361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211723772.9A Pending CN115858323A (zh) | 2022-12-30 | 2022-12-30 | 一种针对中央处理器cpu的功能及性能测试方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858323A (zh) |
-
2022
- 2022-12-30 CN CN202211723772.9A patent/CN115858323A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8930912B2 (en) | Method and system for performing software verification | |
US20090248390A1 (en) | Trace debugging in a hardware emulation environment | |
CN109213680B (zh) | 基于嵌入式软件仿真器的自动化测试方法 | |
CN112084113B (zh) | 基于嵌入式仿真验证软件的可配置自动化测试方法及系统 | |
US9483374B2 (en) | PSMI using at-speed scan capture | |
US7546585B2 (en) | Method, system and computer program product for testing computer programs | |
CN104657247A (zh) | 基于jtag调试方式实现通用型故障注入系统和故障注入方法 | |
US5438673A (en) | Automatic interface for CPU real machine and logic simulator diagnostics | |
CN106681877B (zh) | 芯片调试系统及方法与系统芯片 | |
CN110990289B (zh) | 一种自动提交bug的方法、装置、电子设备及存储介质 | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
US20030226062A1 (en) | System and method for testing response to asynchronous system errors | |
CN111400997A (zh) | 一种基于同步执行的处理器核验证方法、系统及介质 | |
US11113182B2 (en) | Reversible debugging in a runtime environment | |
CN117422026B (zh) | 一种基于risc-v架构的处理器验证系统 | |
CN109753415B (zh) | 处理器验证系统及基于处理器验证系统的处理器验证方法 | |
CN110704315A (zh) | 一种嵌入式软件测试的故障注入装置 | |
Trakhtenbrot | Implementation-oriented mutation testing of statechart models | |
CN115964237A (zh) | 一种针对中央处理器cpu的功能及性能测试方法及装置 | |
US20200310942A1 (en) | Collecting application state in a runtime environment for reversible debugging | |
CN116401086A (zh) | 内存漏斗错误上报机制的测试方法、装置、设备及介质 | |
CN115470141A (zh) | 一种故障模拟方法、装置及相关设备 | |
CN112698974A (zh) | 故障注入测试方法、装置和存储介质 | |
CN116450431A (zh) | Cpu参考模型的指令功能测试系统及其方法、计算机设备和存储介质 | |
CN115858323A (zh) | 一种针对中央处理器cpu的功能及性能测试方法、系统及装置 |
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 |