CN115204081A - 芯片仿真方法、平台和系统、计算机可读存储介质 - Google Patents

芯片仿真方法、平台和系统、计算机可读存储介质 Download PDF

Info

Publication number
CN115204081A
CN115204081A CN202110384588.5A CN202110384588A CN115204081A CN 115204081 A CN115204081 A CN 115204081A CN 202110384588 A CN202110384588 A CN 202110384588A CN 115204081 A CN115204081 A CN 115204081A
Authority
CN
China
Prior art keywords
model
simulation
chip
operating system
simulation environment
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
CN202110384588.5A
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN202110384588.5A priority Critical patent/CN115204081A/zh
Publication of CN115204081A publication Critical patent/CN115204081A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了芯片仿真方法、平台和系统、存储介质,涉及芯片仿真检测领域;芯片仿真方法包括:根据芯片内部的功能模块构建仿真模型,仿真模型包括第一级模型、与第一级模型互联的第二级模型;运行第一级模型,并在第一仿真环境下启动操作系统;其中,第一仿真环境设有第一级模型;在第一仿真环境下停止运行完成启动的操作系统;从第一仿真环境切换至第二仿真环境,在第二仿真环境下将至少一个第一级模型切换至第二级模型、并唤醒被停止运行的操作系统;其中第二仿真环境设有第一级模型和第二级模型,第二仿真环境用于供操作系统完成加载。本申请实施例通过构建二级模型,以使得高精度的芯片仿真模型快速启动,缩短仿真时长。

Description

芯片仿真方法、平台和系统、计算机可读存储介质
技术领域
本发明涉及芯片仿真检测领域,尤其涉及一种芯片仿真方法、平台和系统、计算机可读存储介质。
背景技术
在芯片研发过程中,通过预先对芯片架构性能进行性能评估,可以检测所设计的芯片架构性能是否满足需求,也可以提前进行业务性能测试,还可以在设计不可逆前进行架构持续调优;因此,芯片架构性能评估对应芯片研发非常重要。
然而,当前的芯片架构性能评估中,仿真速度较慢、仿真时长过长,效率低下。
发明内容
本申请实施例提供了芯片仿真方法、平台和系统、计算机可读存储介质,能够使得芯片仿真模型快速启动,缩短仿真时长。
第一方面,本申请实施例提供了一种芯片仿真方法,芯片仿真方法包括:
根据芯片内部的功能模块构建仿真模型,仿真模型包括第一级模型、与第一级模型互联的第二级模型;
运行所述第一级模型,并在第一仿真环境下启动操作系统;其中,所述第一仿真环境设有所述第一级模型;
在所述第一仿真环境下停止运行完成启动的操作系统;
从所述第一仿真环境切换至第二仿真环境,在所述第二仿真环境下将至少一个所述第一级模型切换至所述第二级模型、并唤醒被停止运行的所述操作系统;其中所述第二仿真环境设有所述第一级模型和所述第二级模型,所述第二仿真环境用于供所述操作系统完成加载。
第二方面,申请实施例提供了一种芯片仿真平台,包括:
模型构建模块,用于根据芯片内部的功能模块构建仿真模型,所述仿真模型包括第一级模型、与第一级模型互联的第二级模型;
加载模块,用于在第一仿真环境下启动操作系统的加载、并运行所述第一级模型;其中,所述第一仿真环境设有所述第一级模型;
运行模块,用于在所述第一仿真环境下停止运行完成启动的操作系统;
仿真切换模块,用于从所述第一仿真环境切换至第二仿真环境,在所述第二仿真环境下将至少一个所述第一级模型切换至所述第二级模型、并唤醒被停止运行的所述操作系统;
其中,所述第二仿真环境设有所述第一级模型和所述第二级模型。
第三方面,申请实施例提供了一种芯片仿真系统,包括如第三方面所提供的芯片仿真平台。
第四方面,申请实施例提供了一种计算机可读存储介质,所述计算机可执行指令用于:执行第一方面提供的芯片仿真方法。
本申请实施例:通过本申请实施例第一级模型以使得芯片仿真模型快速启动,缩短仿真时长;通过切换至较为精准的第二级模型以完成精准仿真。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1是本申请实施例一种芯片仿真方法的流程图;
图2是本申请实施例中第一仿真环境的框架示意图;
图3是本申请实施例中第二仿真环境的框架示意图;
图4是图1中步骤S400的流程图;
图5是本申请实施例一种仿真环境切换示意图;
图6是本申请实施例一种基准测试程序的检查点位置示意图;
图7是本申请实施例一种并行仿真线程示意图;
图8是本申请实施例一种芯片仿真方法应用于应用场景的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
IP核(intellectual property core):是指某一方提供的形式为逻辑单元、芯片设计的可重用模块;是将一些在数字电路中常用的,例如FIR滤波器、SDRAM控制器、PCI接口等设计成可修改参数的功能模块;IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期。
FM(Fast Model,快速模型):FM是IP的程序员视角模型,FM模型通过软件模拟的方式实现具有完整硬件功能的仿真模型,能够支持开发人员在硅芯片制作前进行软件功能开发和调试,仿真速度很快。FM模型主要服务于仿真芯片功能,无法进行性能仿真。
CA模型(Cycle-Accurate Model,周期精准模型):CA模型能够精准反应硬件的性能,主要用于架构决策、性能优化。
在实际的芯片研发过程中,技术人员根据功能需求构建芯片框架,并通过对芯片框架进行建模以得到芯片模型,对芯片模型进行仿真测试以获取所设计芯片架构的性能参数。通过在设计初期对芯片架构性能进行性能评估,并根据性能评估结果对芯片框架进行调节,以优化芯片性能。
然而,由于高精度模型包含设计全部性能信息,其本身的仿真速度非常慢,并且多核系统中核数越多、模型数量越多,仿真速度就会更慢;此外,操作系统本身非常庞大,远远大于基准测试程序,所以在精准模型上启动操作系统的时间非常长;并且,大部分基准测试程序必须要在操作系统中才能运行,即精准模型上必须要能够先运行操作系统,才能执行基准测试程序进行测试。综上,当前仿真模型的仿真时长过长,无法及时地反馈性能评估结果。
例如,假定处理器主频为1GHz,高精度的仿真模型使得软件仿真速度会降低到约为10Hz,从而使得真实芯片上运行需耗时1ms的测试程序在仿真环境中需耗时超过27小时。
基于上述技术问题,本申请提供一种芯片仿真方法通过构建二级模型,以使得高精度的芯片仿真模型快速启动,缩短仿真时长。
请参照图1、图2、图3,本申请通过一种芯片仿真方法,包括:步骤S100、根据芯片内部的功能模块构建仿真模型,仿真模型包括第一级模型、与第一级模型互联的第二级模型;步骤S200、运行第一级模型,并在第一仿真环境下启动操作系统;其中,第一仿真环境设有第一级模型;步骤S300、在所述第一仿真环境下停止运行完成启动的操作系统;步骤S400、从第一仿真环境切换至第二仿真环境,在第二仿真环境下将至少一个第一级模型切换至第二级模型、并唤醒被停止运行的所述操作系统;其中,第二仿真环境设有第一级模型和第二级模型。
可以理解的是,芯片架构包括多个功能模块,每个功能模块需要构建模型,将所有功能模块的模型进行互联,从而一起构建芯片仿真环境;在一实施例中,根据芯片的功能模块构建相应的仿真模型,其中,仿真模型包括第一级模型和第二级模型,第一级模型与第二级模型之间互联;第一级模型对应于芯片架构的所有功能模块,用于仿真芯片架构的所有功能模块所对应的功能;第二级模型仅对应于影响芯片架构关键性能的功能模块,用于反应仅对芯片架构中影响关键性能的功能模块所对应的性能。本申请实施例中的操作系统是Linux系统。在其他变更实施例中,根据芯片架构的实际应用环境,可对仿真模型可加载其他的操作系统。
在一些实施例中,第一级模型为快速模型,第二级模型为周期精准模型。快速模型可实现芯片制作前的软件功能开发和调试,且可快速地完成操作系统的加载启动。然而,快速模型无法进行性能仿真,需要通过周期精准模型进行性能仿真,周期精准模型具有完整功能和精准时钟周期时序。
在第一仿真环境中,各个第一级模型相互连接以构成芯片架构完整的仿真模型,通过将操作系统加载至由第一级模型所构成的仿真模型,并通过基于第一级模型构成仿真模型快速完成操作系统的加载启动。
在第一仿真环境中,当操作系统完成加载启动后,先停止运行操作系统,也即使操作系统进入休眠状态;并由第一仿真环境切换至第二仿真环境、且在第二仿真环境下,将影响关键性能的第一级模型切换为第二级模型。通过将操作系统的系统环境参数迁移至第二级模型中,在第二仿真环境下不需要重新启动操作系统,只需要唤醒被停止运行的操作系统,即只需要唤醒休眠中的操作系统,从而在第二级模型快速完成操作系统的运行,并利用第二级模型对芯片架构进行性能仿真。可以理解的是,从休眠到唤醒操作系统的时间远小于重新启动操作系统的时间,因此实现了加速启动。
可以理解的是,以单独的第二级模型对芯片架构进行高精度仿真虽可准确测量芯片架构的性能,但操作系统启动速度缓慢,使得仿真耗时过长,无法及时反馈芯片架构的性能参数。通过将可快速启动操作系统的第一级模型与可进行高精度仿真的第二级模型进行互联,以构建完整的芯片架构模型。
通过将操作系统加载至完整的仿真模型,并以第一级模型启动操作系统,从而快速完成操作系统的加载启动。
进一步地,上述的芯片仿真方法提供了两种不同仿真环境。在第一仿真环境中,芯片架构的仿真模型由与芯片内部的所有功能模块对应的第一级模型构成;在第二仿真环境中,芯片架构的仿真模型由与不影响芯片关键性能的功能模块对应的第一级模型、影响芯片关键性能的功能模块对应的第二级模型混合构成。
请参照图2、图3,当操作系统完成加载启动后,仿真平台将操作系统的当前运行模型由第一仿真环境切换至第二仿真环境,并且由于在第二模型上不需要重新启动操作系统,省去了重新启动操作系统的时间,从而实现了加速启动,缩短仿真时长,以及时地反馈芯片架构的性能参数。即以第一级模型作为初始的操作系统运行载体,并以第二级模型作为芯片架构核心部分的性能仿真模型。
在第一仿真环境、第二仿真环境中,仿真模型均为真实芯片架构的镜像,其区别在于:影响关键性能的功能模块对应的模型类型。在第一仿真环境中,模型的仿真测试速度较快;在第二仿真环境中,模型的仿真测试可有效检测影响芯片关键性能的功能模块的性能。
进一步地,通过设置对应的信号转换桥、协议转换桥,以保证各个模型之间进行通信连接,以实现信号传输。例如,若当前仿真环境处于第一仿真环境时,各个模型均为第一级模型,故通过信号转换桥即可实现各个模组之间的信号传输。
若当前仿真环境处于第二仿真环境时,仿真模型中存在第一级模型、第二级模型,通过在第一级模型、第二级模型之间设有协议转换桥,将第一级模型、第二级模型的通信接口进行协议转换,以实现两者的通信转换。可以理解为,第一级模型应用于第一通信协议、第二模型应用于第二通信协议,通过协议转换桥对来在于第一级模型/第二级模型的通信接口进行协议转换,以得到适用于第二级模型/第一级模型的通信接口。进一步地,第一级模型、第二级模型之间交换的通信接口包括信号向量、总线协议。
进一步,通过对性能监控器、环境控制接口进行仿真模型构建以得到对应的第一级模型、第二级模型,从而使得第一仿真环境、第二仿真环境均能够实现对仿真模型的性能监控。
本申请中,第一级模型为快速模型,第二级模型为周期精准模型,通过将快速模型和周期精准模型进行互联,以快速模型作为初步的操作系统加载启动模型,周期精准模型作为实际性能仿真模型,从而快速完成操作系统的启动。当操作系统完成启动后,先停止运行操作系统,也即使操作系统进入休眠状态,并由第一仿真环境切换至第二仿真环境、且在第二仿真环境下,通过预设切换指令将快速模型切换为周期精准模型,由于将操作系统的系统环境参数迁移至第二级模型中,因此在第二仿真环境下不需要重新启动操作系统,只需要唤醒被停止运行的操作系统,即只需要唤醒休眠中的操作系统,从而在周期精准模型快速完成操作系统的运行,并利用周期精准模型对芯片架构进行性能仿真。可以理解的是,从休眠到唤醒操作系统的时间远小于重新启动操作系统的时间,因此实现了加速启动,从而加快性能评估的速度。
此外,上述芯片仿真方法所构建的仿真模型可以快速加载启动Linux操作系统,并直接运行真实的业务软件进行性能评估,不需要专门开发裸机(Bare Metal)测试用例,且可对芯片架构进行性能评估。
请参照图2、图3,在一些实施例中,功能模块包括处理器、总线、DDR控制器、DDR物理层、中断控制器、计数器、RAM、电源控制器。
其中,处理器、总线、DDR控制器、DDR物理层分别构建对应的第一级模型、第二级模型,且第一级模型、第二级模型之间通过协议转换桥进行通信转换。
可以理解的,通过对处理器、总线、DDR控制器、DDR物理层、中断控制器、计数器、RAM、电源控制器分别构建对应的程序员视角模型,以搭建完整的芯片架构仿真模型。
进一步地,处理器、总线、DDR控制器、DDR物理层分别构建对应的周期精准模型。且与处理器、总线、DDR控制器、DDR物理层对应的程序员视角模型、周期精准模型通过协议转换桥模型实现模型之间的切换,从而将周期精准模型替换快速模型,以通过周期精准模型进行精准仿真。
本申请的芯片仿真方法通过对芯片架构的功能模块(IP核)进行仿真,得到完整的芯片架构仿真模型,以检测芯片架构中各个功能模块的性能。
进一步地,根据芯片规格对仿真模型进行模型参数配置,以使仿真模型可有效地表征真实芯片的规格。
通过将与各个功能模块对应的仿真模型进行集成,以完成各个仿真模型的互联,从而对芯片框架进行完整的模型搭建。
此外,以功能函数的方式设置性能监控模块,并连接至仿真模型的各个接口。通过性能监控模块相互结合,以对仿真模型进行性能检测及模型切换。
即仿真模型包括包括处理器模型、总线模型、DDR控制器模型、DDR物理层模型、中断控制器模型、计数器模型、RAM模型、电源控制器模型。处理器模型、总线模型、DDR控制器模型、DDR物理层模型包括对应的第一级模型、第二级模型;中断控制器模型、计数器模型、RAM模型、电源控制器模型包括对应的第一级模型。可以理解为,在第一仿真环境中,处理器模型、总线模型、DDR控制器模型、DDR物理层模型、中断控制器模型、计数器模型、RAM 模型、电源控制器模型的模型类型均为程序员视角模型;在第二仿真环境中,处理器模型、总线模型、DDR控制器模型、DDR物理层模型的模型类型为周期精准模型,而中断控制器模型、计数器模型、RAM模型、电源控制器模型的模型类型为程序员视角模型。
在一实施例中,芯片仿真方法还包括:
获取基准测试程序,并将基准测试程序切分为至少两个子测试程序;其中,基准测试程序用于运行在操作系统上以对仿真模型进行基准测试;
在第一仿真环境下,在完成启动的操作系统上运行至少两个子测试程序。
在另一实施例中,也可以不对基准测试程序切分,完整的基准测试程序直接在第二仿真环境下运行在操作系统上。若不对基准测试程序切分,则只需要构建一个第二仿真环境。
在一些实施例中,子测试程序包括检查点,步骤S300包括:
若子测试程序运行到检查点,则停止运行操作系统。
在一些实施例中,芯片仿真方法还包括:
获取被停止运行的操作系统的当前运行状态;
将当前运行状态保存为状态文件;其中,第二仿真环境存储有状态文件。
请参阅图4,在一实施例中,第二仿真环境的数量等于子测试程序的数量,步骤S400包括:
步骤S410、从第一仿真环境切换至第二仿真环境;
步骤S420、在每一第二仿真环境下,将至少一个第一级模型切换至第二级模型,并通过状态文件还原操作系统的当前运行状态;
步骤S430、在每一第二仿真环境下,唤醒处于当前运行状态的操作系统,并在完成唤醒的每一操作系统上运行其中一子测试程序。在一实施例中,状态文件为二进制的文件。
在一具体应用场景中,操作系统的当前运行状态为休眠状态,完成唤醒的操作系统的状态为正常运行状态。
结合图5所示,在一些实施例中,在第一环境下,操作系统在第一级模型上加载启动;在完成启动的操作系统上运行子测试程序,当子测试程序运行到检查点位置时,停止运行操作系统,使操作系统进入休眠状态;然后从第一仿真环境切换至第二仿真环境,在每一第二仿真环境下将第一级模型切换为第二级模型,并通过状态文件还原操作系统的当前运行状态,且唤醒处于当前运行状态的操作系统,从而使操作系统恢复到正常运行状态;在对应的每一第二仿真环境下,再在第二级模型上继续运行对应的子测试程序。
通过并行的仿真线程对芯片架构进行仿真检测,以缩减仿真的时间。本实施例与上述实施例相结合,在通过构建二级模型以快速启动高精度第二级模型的同时,通过多个仿真环境同时仿真一个基准测试程序的多个不同片段,从而提高仿真速度,从而及时地反馈芯片架构的性能参数。通过芯片架构的性能参数对芯片架构进行及时的调制,以对芯片架构进行优化。
以无线业务性能测试为例,一个1ms用例的仿真时间为27小时,使用本仿真平台切片并行的仿真方式,通过将切片粒度设置为0.1ms,则并行仿真2.7小时即可得到性能数据,有效地缩短仿真时间、提升测试效率。本实施例中,通过多个仿真环境同时并行仿真一个基准测试程序的不同片段,从而提高仿真速度。举例来说,将基准测试程序切分为4个子测试程序,并通过4个并行的仿真线程分别执行每一个子测试程序。经由数据合并模块将每一个子测试程序对应的性能数据进行数据合并,以得到完整的性能数据。
在一些实施例中,在第一仿真环境下启动操作系统,并将基准测试程序切分为至少两个子测试程序,包括:在基准测试程序的源码的关键函数前分别插入检查点源码,并对插入检查点源码后得到的完整源码进行重新编译,得到至少两个子测试程序。
根据基准测试程序的基准特征,在测试程序的源码中各个期望观测的关键函数前插入检查点源码。通过对插入检查点源码后得到的完整源码进行重新编译,以得到N个完整的插入点不同的待测程序,每一个完整的待测程序为基准测试程序的子测试程序。根据关键函数的个数对测试程序进行切分得到N个子测试程序,并通过并行线程分别运行子测试程序,以缩短仿真测试时长。
在一些实施例中,在第一仿真环境下启动操作系统,并将基准测试程序切分为至少两个子测试程序,包括:根据基准测试程序在第一级模型上的运行时间轨迹,将基准测试程序切分为至少两个次级基准测试程序;对切分后的至少两个次级基准测试程序的源码分别插入检查点源码,对插入检查点源码后得到的完整源码进行重新编译,得到至少两个子测试程序。
根据基准测试程序在第一级模型上的运行时间轨迹,将测试程序切分为N份(可以不严格等分),并对切分后的测试程序的对应源码处插入检查点源码,通过对插入检查点源码后得到的完整源码进行重新编译,以得到N个完整的插入点不同的待测程序。
在一些实施例中,在第一仿真环境下启动操作系统,并将基准测试程序切分为至少两个子测试程序,包括:获取执行基准测试程序的汇编指令集,将汇编指令集切分为至少两个汇编指令子集;在每一个汇编指令子集对应的汇编代码前插入检查点汇编源码,得到对应的汇编文件;通过对汇编文件进行重新编译,得到至少两个子测试程序。
可以理解为,对基准测试程序在第一级模型上的汇编指令流保存下载,将汇编指令流切分为N份(可以不严格等分)。在每份汇编指令流对应的汇编代码前插入检查点汇编源码,以构成新的汇编文件。进一步地,通过对汇编文件进行重新编译,以得到N个完整的插入点不同的待测程序。
其中,第一级模型、第二级模型为互联两个仿真模型。通过将互联的第一级模型、第二级模型,并通过第一级模型快速启动操作系统,由第一级模型切换至第二级模型,以达到加快第二级模型的仿真速度。
在一些实施例中,通过寄存器存储仿真环境的仿真精度信息,其中,仿真精度信息用于判断当前的仿真环境和仿真模型的类型;通过检查点可以读取到存储在寄存器的仿真精度信息,从而根据仿真精度信息判断当前的仿真环境是第一仿真环境或者第二仿真环境,及判断当前的仿真模型是第一级模型还是第二级模型;当判断当前的仿真环境是第一仿真环境,则停止运行操作系统,使操作系统进入休眠状态;判断当前的仿真模型是第一级模型,则切换至第二级模型。
进一步地,在操作系统处于当前运行状态即进行休眠期间,通过将当前运行模型由FM模型切换为CA模型,并由CA模型启动还原处于第一级模型中的仿真线程。
通过二进制的状态文件在第二级模型中还原操作系统的当前运行状态,而监控模块生成休眠唤醒指令并发送至处理器中。当处理器接收到休眠唤醒指令后,操作系统进行恢复操作系统的标准流程,并恢复原有的多个仿真线程。至此,通过预运行第一级模型,并将第一级模型中的操作系统状态迁移至第二级模型中,以达到第二级别模型快速加载运行操作系统的效果。
请参照图6,在一些实施例中,检查点包括第一子检查点、第二子检查点;从第一仿真环境切换至第二仿真环境,在第二仿真环境下将至少一个第一级模型切换至第二级模型,还包括:子测试程序运行至第一检查点,则将第一仿真环境的精度数据存储至寄存器,并将仿真环境当前从第一仿真环境切换至第二仿真环境;子测试程序运行至第二检查点,开始收集仿真模型的性能数据。在另一实施例,若检查点只有一个,则在子测试程序运行到检查点时就开始收集性能数据。
可以理解的,当子测试程序对操作系统缓存状态较为敏感时,若当前运行模型切换后,马上收集仿真模型的性能数据,则性能数据无法有效表征芯片架构的真实性能。
通过设置第一子检查点、第二子检查点,且子测试程序运行至第一检查点,则将当前仿真环境精度存储至寄存器;将当前运行模型切换为第二级模型,并再次运行子测试程序;子测试程序运行至第二检查点,则开始收集仿真模型的性能数据。即第一子检查点、第二子检查点之间的程序运行作为缓存的预热阶段。
当子测试程序运行至第二检查点,则操作系统缓存预热完成,通过监控模块对仿真模型的性能参数进行收集,以得到可有效表征芯片架构的性能参数。
举例来说,将子测试程序划分为4个片段,则第一子检查点、第二子检查点的间隔可以为一个片段,也可以是一个片段中的一部分。
可以理解的是,以单独的第二级模型对芯片架构进行高精度仿真可准确测量芯片架构的性能,但操作系统启动速度缓慢,使得仿真耗时过长,无法及时反馈芯片架构的性能参数。通过将可快速启动操作系统的第一级模型与可进行高精度仿真的第二级模型进行互联,以构建完整的芯片架构模型。
在一实际应用场景下,在第一仿真环境中,启动由第一级模型构成的仿真模型,并快速执行操作系统的加载启动。当操作系统完成加载启动后,通过调用操作系统休眠命令使当前运行的操作系统进入休眠模式,以Linux系统为例,可以通过调用休眠命令#echomem> /sys/power/state,以使当前运行的Linux操作系统进入休眠模式。
在操作系统进入休眠状态时,将操作系统的当前运行状态保存至内存模型中,并更新内存模型中的缓存数据。进一步地,仿真环境中的外设模型进行关闭。
当执行完上述操作后,对操作系统中除内存和中断控制器之外的其他模型进行断电复位,例如,对CPU和其他外设模型进行断电复位。在此过程中,操作系统的当前运行状态均被存在内存中。
进一步地,将内存中操作系统的当前运行状态转换为二进制的状态文件,并经由模型调测接口将状态文件保存至仿真服务器中。
通过脚本进行参数传递,并对仿真模型的互联方式进行切换,以从第一仿真环境切换为第二仿真环境。当完成仿真环境切换后,将保存好的状态文件再通过模型调测接口加载到第二级模型中的DDR模型内。与此同时,根据性能分析的需要,将性能监控模型插入到检查点。
当状态文件被加载至第二级模型中的DDR模型后,通过SystemC代码操作信号量在第二仿真环境中构造一个中断唤醒信号,并传递给中断控制器。当中断控制器识别中断唤醒信号后,中断控制器查询休眠寄存器,并识别当前CPU处于休眠状态,则会置位唤醒信号线并传递给电源控制模块。当电源控制模块接收到中断唤醒信号后,对CPU进行解复位。
进一步地,以Linux操作系统为例进行说明,CPU从复位地址开始启动,软件通过内存数据识别为热启动并跳入操作系统恢复过程,约1ms后恢复完成所有线程并进入终端命令窗口。与此同时,操作系统重新恢复后,第二级模型(CA精度模型)启动Linux操作系统完成。至此,通过第一级模型、第二级模型构建的混合仿真模型实现了快速启动Linux操作系统的效果,并可快速完成基于CA精度模型的芯片架构性能仿真。
即,通过先启动仿真模型中第一级模型,以快速完成操作系统的加载。进一步地,当操作系统完成加载启动后,操作系统进入正常运行状态。当基准测试程序对应的子测试程序运行至检查点时,性能监控模块对与关键功能模块对应的当前运行模型类型进行检测,若与关键功能模块对应的当前运行模型为第一级模型,则操作系统将运行模型切换至第二级模型。
通过将与关键功能模块对应的当前运行模型切换为能够精准反应芯片框架性能的第二级模型,以对芯片架构进行高精度性能仿真。
请参照图7、图8,在一些实施例中,以Linux操作系统为例进行说明,在第一仿真环境中,通过脚本以第一级模型的方式完成操作系统的加载,且N个第二仿真环境下、加载启动 Linux操作系统,加载运行N个子测试程序。当子测试程序运行到检查点,则将第一仿真环境切为第二仿真环境,并实现N个第二仿真环境同时并行仿真。
在图7的示例中,检查点为两个,分别是第一检查点和第二检查点;关键函数为PartX,PartZ为上一子测试程序的尾部,用于程序预热;PartY为在第二仿真环境下运行的子测试程序;第一子检查点、第二子检查点之间的程序运行作为缓存的预热阶段。可以理解地,当子测试程序对操作系统缓存状态较为敏感时,若当前运行模型切换后,马上收集仿真模型的性能数据,则性能数据无法有效表征芯片架构的真实性能。当子测试程序运行至第二检查点,则操作系统缓存预热完成,通过监控模块对仿真模型的性能参数进行收集,以得到可有效表征芯片架构的性能参数。
在图8的示例中,基准测试程序被切分为N个,分别记为Part1,Part2,...,PartN。
可以理解地,第一仿真环境可以是一个,则N个子测试程序先在第一仿真环境下串行运行;第一仿真环境可以是N个,则N个子测试程序分别在N个第一仿真环境下并行运行。第二仿真环境为N个,N个子测试程序分别在N个第二仿真环境下并行运行。
可以理解地,基准测试程序也可以不切分,完整的基准测试程序直接在一个第一仿真环境下运行或一个第二仿真环境运行。
进一步地,通过检查点源码读取存储在寄存器的仿真精度信息,从而根据仿真精度信息判断当前的仿真环境是第一仿真环境或者第二仿真环境,及判断当前的仿真模型是第一级模型还是第二级模型;当判断当前的仿真环境是第一仿真环境,则停止运行操作系统,使操作系统进入休眠状态;判断当前的仿真模型是第一级模型,则切换至第二级模型。
举例来说,若判断为第一级模型,则通过while循环暂停仿真环境运行,同时触发上述仿真模型切换功能;在当前运行模型类型切换为CA模型后,对操作系统程序进程恢复。此时,检查点源码会再次读取寄存器,识别为CA模型后,则跳出循环继续以CA模型执行测试程序。
其中,第一级模型对应于芯片架构的所有功能模块,即对芯片架构中各个功能模块均设置有对应的第一级模型;第二级模型仅对应于影响芯片架构关键性能的功能模块,即仅对芯片架构中影响关键性能的功能模块设有对应的第二级模型。
通过将操作系统加载至第一级模型,并以第一级模型启动操作系统,从而快速完整操作系统的启动。当操作系统完成启动后,仿真切换模块将操作系统的当前运行模型由第一级模型切换至第二级模型,以加快操作系统对第二级模型的响应速度,并及时反馈芯片架构的性能参数。芯片仿真平通过将各个第一级模型相互连接以构成芯片架构完整的仿真模型,并将操作系统加载至由第一级模型所构成的芯片仿真模型。即通过第一级模型快速完成操作系统的加载启动。
当操作系统完成加载启动后,芯片仿真平台将影响关键性能的第一级模型切换为第二级模型。芯片仿真平台通过将操作系统环境参数迁移至第二级模型中,以在第二级模型快速完成操作系统的运行,并利用第二级模型对芯片架构进行性能仿真。
上述芯片仿真平台可以在仿真模型中快速启动Linux操作系统,并直接运行真实的业务软件进行性能评估,不需要专门开发裸机(Bare Metal)测试用例,且可对芯片架构进行有效的性能评估。
在一些实施例中,第一级模型为快速模型,第二级模型为周期精准模型。快速模型可实现硅芯片制作前的软件功能开发和调试,且可快速地启动操作系统。然而,快速模型无法进行性能仿真,仅能进行基础的软件功能开发和调试。周期精准模型具有完整功能和精准时钟周期时序,但其软件仿真速度较低,且随着芯片的核数增加仿真速度将进一步降低。
请参照图2、图3,本申请还提供一种芯片仿真平台包括:模型构建模块,用于根据芯片内部的功能模块构建仿真模型,仿真模型包括第一级模型、与第一级模型互联的第二级模型;加载模块,用于在第一仿真环境下启动操作系统的加载、并运行第一级模型;其中,第一仿真环境设有第一级模型;运行模块,用于在所述第一仿真环境下停止运行完成启动的操作系统;仿真切换模块,用于从第一仿真环境切换至第二仿真环境,在第二仿真环境下将至少一个第一级模型切换至第二级模型;其中,第二仿真环境设有第一级模型和第二级模型。
可以理解的是,第一级模型分别对应于芯片架构的所有功能模块,即对芯片架构中各个功能模块均设置有对应的第一级模型;第二级模型仅对应于影响芯片架构关键性能的功能模块,即仅对芯片架构中影响关键性能的功能模块设有对应的第二级模型。仿真切换模块通过执行互换脚本以将第一仿真环境切换至第二仿真环境。
在第一仿真环境中,各个第一级模型相互连接以构成芯片架构完整的仿真模型,通过将操作系统加载至由第一级模型所构成的仿真模型,并通过基于第一级模型构成仿真模型快速完成操作系统的加载启动。
当操作系统完成加载启动后,先暂停运行操作系统,也即使操作系统进入休眠状态;并由第一仿真环境切换至第二仿真环境、且在第二仿真环境下,将影响关键性能的第一级模型切换为第二级模型。通过将操作系统的系统环境参数迁移至第二级模型中,在第二仿真环境下不需要重新启动操作系统,只需要唤醒被暂停运行的操作系统,即只需要唤醒休眠中的操作系统,从而在第二级模型快速完成操作系统的运行,并利用第二级模型对芯片架构进行性能仿真。可以理解的是,从休眠到唤醒操作系统的时间远小于重新启动操作系统的时间,因此实现了加速启动。
可以理解的是,以单独的第二级模型对芯片架构进行高精度仿真虽可准确测量芯片架构的性能,但操作系统启动速度缓慢,使得仿真耗时过长,无法及时反馈芯片架构的性能参数。通过将可快速启动操作系统的第一级模型与可进行高精度仿真的第二级模型进行互联,以构建完整的芯片架构模型。通过将操作系统加载至完整的仿真模型,并以第一级模型启动操作系统,从而快速完整操作系统的加载启动。
进一步地,上述的芯片仿真方法提供了两种不同仿真环境。在第一仿真环境中,芯片架构的仿真模型由与各个功能模块对应的第一级模型构成;在第二仿真环境中,芯片架构的仿真模型由与不影响芯片关键性能的功能模块对应的第一级模型、影响芯片关键性能的功能模块对应的第二级模型混合构成。
在一些实施例中,芯片仿真平台还包括:性能监控模块,用于收集在第二仿真环境下,基准测试程序运行所产生的性能数据;数据合并模块,用于对性能数据进行数据合并。
进一步地,仿真切换模块还包括:寄存器,用于存储第一仿真环境的精度数据。
通过并行的仿真线程对芯片架构进行仿真检测,以缩减仿真的时间。本实施例与上述实施例相结合,在通过构建二级模型以快速启动高精度第二级模型的同时,通过开启多个仿真线程以缩减仿真时长、提高仿真速度,从而及时地反馈芯片架构的性能参数。通过芯片架构的性能参数对芯片架构进行及时的调制,以对芯片架构进行优化。
程序切分模块可根据实际业务需要以不同的方式对测试程序进行切分。例如,根据测试程序的基准特征,在测试程序的源码中各个期望观测的关键函数前插入检查点源码。通过对插入检查点源码后得到的完整源码进行重新编译,以得到N个完整的插入点不同的待测程序 (即子测试程序)。根据关键函数的个数对测试程序进行切分得到N个子测试程序,并通过并行线程分别运行子测试程序,以缩短仿真测试时长。或者根据测试程序在第一级模型上的运行时间轨迹,将测试程序切分为N份(可以不严格等分),并对切分后的测试程序的对应源码处插入检查点源码,通过对插入检查点源码后得到的完整源码进行重新编译,以得到N 个完整的插入点不同的待测程序。
此外,测试程序还可以对测试程序在第一级模型上的汇编指令流保存下载,将汇编指令流切分为N份(可以不严格等分)。在每份汇编指令流对应的汇编代码前插入检查点汇编源码,以构成新的汇编文件。进一步地,通过对汇编文件进行重新编译,以得到N个完整的插入点不同的待测程序。
通过将基准测试程序进行关键程序片段分段,以得到至少两个子测试程序。在第一仿真环境下,运行FM模型,并启动操作系统,以快速地完成操作系统的加载启动。当操作系统完成启动后,先停止运行操作系统,也即使操作系统进入休眠状态;并由第一仿真环境切换至第二仿真环境,且由于第二仿真环境的数量与子测试程序的数量相等,使得每一第二仿真环境下可以执行其中一个子测试程序,从而将这些子测试程序分别在独立的仿真环境下并行执行,以进行并行模型仿真检测。
通过并行的仿真线程对芯片架构进行仿真检测,以缩减仿真的时间。本实施例与上述实施例相结合,在通过构建二级模型以快速启动高精度第二级模型的同时,通过开启多个仿真线程以缩减仿真时长、提高仿真速度,从而及时地反馈芯片架构的性能参数。通过芯片架构的性能参数对芯片架构进行及时的调制,以对芯片架构进行优化。
数据合并模块用于对每一个仿真线程的性能数据进行数据合并,以得到完整的仿真性能数据。通过完整的仿真性能数据对芯片架构进行表征,以有效地反馈芯片架构的性能,为技术人员提供精准的芯片架构调节参考。
以无线业务性能测试为例,一个1ms用例的仿真时间为27小时,使用本仿真平台切片并行的仿真方式,通过将切片粒度设置为0.1ms,则并行仿真2.7小时即可得到性能数据,有效地缩短仿真时间、提升测试效率。举例来说,程序切分模块将基准测试程序切分为4个子测试程序,并通过在4个第二仿真环境下并行执行每一个子测试程序。经由数据合并模块将每一个子测试程序对应的性能数据进行数据合并,以得到完整的性能数据。
本申请还提供了一种芯片仿真系统,包括上述任一实施例中的芯片仿真平台。
本申请还提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于:执行上述任一实施例中的芯片仿真方法。
以上是对本申请的较佳实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (10)

1.芯片仿真方法,其特征在于,包括:
根据芯片内部的功能模块构建仿真模型,所述仿真模型包括第一级模型、与所述第一级模型互联的第二级模型;
运行所述第一级模型,并在第一仿真环境下启动操作系统;其中,所述第一仿真环境设有所述第一级模型;
在所述第一仿真环境下停止运行完成启动的操作系统;
从所述第一仿真环境切换至第二仿真环境,在所述第二仿真环境下,将至少一个所述第一级模型切换至所述第二级模型、并唤醒被停止运行的所述操作系统;其中,所述第二仿真环境设有所述第一级模型和所述第二级模型。
2.根据权利要求1所述的芯片仿真方法,其特征在于,所述第一级模型为快速模型,所述第二级模型为周期精准模型。
3.根据权利要求1或2所述的芯片仿真方法,其特征在于,所述芯片仿真方法还包括:
获取基准测试程序,并将所述基准测试程序切分为至少两个子测试程序;其中,所述基准测试程序用于运行在所述操作系统上以对所述仿真模型进行基准测试;
在所述第一仿真环境下,在完成启动的所述操作系统上运行所述至少两个子测试程序。
4.根据权利要求3所述的芯片仿真方法,其特征在于,所述子测试程序包括检查点,所述在所述第一仿真环境下停止运行完成启动的操作系统,包括:
若所述子测试程序运行到所述检查点,则停止运行所述操作系统。
5.根据权利要求4所述的芯片仿真方法,其特征在于,所述获取基准测试程序,并将所述基准测试程序切分为至少两个子测试程序,包括:
获取基准测试程序;
在所述基准测试程序的源码的关键函数前分别插入检查点源码,并对插入所述检查点源码后得到的完整源码进行重新编译,得到所述至少两个子测试程序;
或,
根据所述基准测试程序在所述第一级模型上的运行时间轨迹,将所述基准测试程序切分为至少两个次级基准测试程序;
对切分后的所述至少两个基准测试程序的源码分别插入检查点源码,对插入所述检查点源码后得到的完整源码进行重新编译,得到所述至少两个子测试程序;
或,
获取执行所述基准测试程序的汇编指令集,将所述汇编指令集切分为至少两个汇编指令子集,在每一个所述汇编指令子集对应的汇编代码前插入检查点汇编源码,得到对应的汇编文件,通过对所述汇编文件进行重新编译,得到至少两个子测试程序。
6.根据权利要求4所述的芯片仿真方法,其特征在于,所述芯片仿真方法,还包括:
获取被停止运行的操作系统的当前运行状态;
将所述当前运行状态保存为状态文件;其中,所述第二仿真环境存储有所述状态文件。
7.根据权利要求6所述的芯片仿真方法,其特征在于,所述第二仿真环境的数量等于所述子测试程序的数量,所述从所述第一仿真环境切换至第二仿真环境,在所述第二仿真环境下,将至少一个所述第一级模型切换至所述第二级模型、并唤醒被停止运行的所述操作系统,包括:
从所述第一仿真环境切换至所述第二仿真环境;
在每一所述第二仿真环境下,将至少一个所述第一级模型切换至所述第二级模型,并通过所述状态文件还原所述操作系统的当前运行状态;
在每一所述第二仿真环境下,唤醒处于所述当前运行状态的所述操作系统,并在完成唤醒的每一操作系统上运行其中一子测试程序。
8.芯片仿真平台,其特征在于,包括:
模型构建模块,用于根据芯片内部的功能模块构建仿真模型,所述仿真模型包括第一级模型、与第一级模型互联的第二级模型;
加载模块,用于在第一仿真环境下启动操作系统、并运行所述第一级模型;其中,所述第一仿真环境设有所述第一级模型;
运行模块,用于在所述第一仿真环境下停止运行完成启动的操作系统;
仿真切换模块,用于从所述第一仿真环境切换至第二仿真环境,在所述第二仿真环境下将至少一个所述第一级模型切换至所述第二级模型、并唤醒被停止运行的所述操作系统;
其中,所述第二仿真环境设有所述第一级模型和所述第二级模型。
9.芯片仿真系统,其特征在于,包括如权利要求8所述的芯片仿真平台。
10.计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于:执行权利要求1至7中任一项所述的芯片仿真方法。
CN202110384588.5A 2021-04-09 2021-04-09 芯片仿真方法、平台和系统、计算机可读存储介质 Pending CN115204081A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110384588.5A CN115204081A (zh) 2021-04-09 2021-04-09 芯片仿真方法、平台和系统、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110384588.5A CN115204081A (zh) 2021-04-09 2021-04-09 芯片仿真方法、平台和系统、计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115204081A true CN115204081A (zh) 2022-10-18

Family

ID=83571233

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110384588.5A Pending CN115204081A (zh) 2021-04-09 2021-04-09 芯片仿真方法、平台和系统、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115204081A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658455A (zh) * 2022-12-07 2023-01-31 北京开源芯片研究院 处理器性能评估方法、装置、电子设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658455A (zh) * 2022-12-07 2023-01-31 北京开源芯片研究院 处理器性能评估方法、装置、电子设备及可读存储介质
CN115658455B (zh) * 2022-12-07 2023-03-21 北京开源芯片研究院 处理器性能评估方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
US20240086269A1 (en) Method, Apparatus and System for Locating Fault of Server, and Computer-readable Storage Medium
CN110865971B (zh) Soc芯片的验证系统及其方法
US20040153762A1 (en) Hardware driven state save/restore in a data processing system
JPH04216174A (ja) ハードウェア・アクセラレータを用いた論理シミユレーション方法および装置
CN106873990A (zh) 嵌入式系统ram损坏模式下的多分区引导方法
CN103257922B (zh) 一种快速测试bios与os接口代码可靠性的方法
WO2020221097A1 (zh) 一种基于有限状态机的操作系统需求层形式化建模方法及装置
CN108121842B (zh) 多处理器系统芯片的低功耗工作方式的验证方法和装置
CN103376340A (zh) 一种转接板、多平台串行测试系统及方法
CN110058973B (zh) 数据储存装置的测试系统与数据储存装置的测试方法
EP4036716A1 (en) Method and device for acquiring mirror image file
CN106681877B (zh) 芯片调试系统及方法与系统芯片
CN115204081A (zh) 芯片仿真方法、平台和系统、计算机可读存储介质
CN113315675B (zh) 一种白盒交换机U-Boot自动化测试方法、系统和存储介质
CN109753415B (zh) 处理器验证系统及基于处理器验证系统的处理器验证方法
CN117389781A (zh) 服务器设备的异常侦测与恢复方法、系统、服务器及介质
CN112527568A (zh) 数据流量测试方法、装置、电子设备及存储介质
CN114461142B (zh) 一种读写Flash数据的方法、系统、装置及介质
CN101923503B (zh) 调整内存内部参数的方法及使用其的电脑系统
CN116401086A (zh) 内存漏斗错误上报机制的测试方法、装置、设备及介质
US20110087922A1 (en) Test method and tool for master-slave systems on multicore processors
CN102591669B (zh) 模块化计算机固件及其实现方法
CN115048307A (zh) 应用软件的弱网测试方法、装置、设备及存储介质
Wu et al. An extensible system simulator for intermittently-powered multiple-peripheral IoT devices
CN111814415A (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