嵌入式处理器性能评价简易方法
2021-07-30徐彬杨露侯庆庆杨楚玮邓甜甜
徐彬,杨露,侯庆庆,杨楚玮,邓甜甜
(中国电子科技集团公司第58 研究所,江苏 无锡 214072)
0 引言
随着军事技术的发展,武器装备国产化已经成为我国军事现代化的重要进程。处理器是现代各种计算机设备的核心,武器装备国产化首先是处理器的国产化。拥有自主知识产权的高性能处理器对于国家安全和经济发展都具有非常重要的意义[1]。
处理器体系结构复杂,内部涉及总线架构、指令集以及时序等方面对处理器性能有影响,因此,客观有效地评价处理器的性能,已成为处理器研究领域重要课题。
针对性能评价指标,目前使用的主要方法为系统上运行测试基准程序(Benchmark),通过基准测试程序的执行时间等参数来评测处理器系统的性能,成熟的处理器性能评测基准程序如Dhrystone、Whetstone、Lmbench和Rhealstone等。其中Dhrystone主要评测处理器的整数运算性能,是早期进行嵌入式系统性能评测的主要性能评测基准;Whetstone主要用于评测处理器的浮点运算[2];Lmbench通过运行大量的程序,测试大多数公认的有可能成为性能瓶颈的重要参数[3],它主要评测处理器、内存、网络、文件系统与硬盘之间传送数据的能力;Rhealstone是一组由6个C语言程序组成的程序集[4],主要用于评测上下文切换、抢占时间、中间延迟、信号量混洗时间、死锁解除时间等。
针对不同的指标,可选择相关的测试基准程序,但是一些测试基准程序对运行环境和平台有特殊要求,无法直接执行。本文旨在介绍一套方便移植、执行有效的评价方法,能够在科研项目中灵活应用。
1 性能评价方法
1.1 带宽评价
带宽是用于衡量处理器的内部存储器的读写性能,可以使用单位时间内完成数据读写的能力来评价。本文采用MBW测试方法,将数据从一块内存复制到另一块内存,通过内存拷贝的手段进行测试,由此方法测出的性能值又称为“拷贝”内存带宽。
MBW方法根据每次拷贝的数据大小又将测试项分为三种类型:
1)D U M B 模式,该模式通过循环进行4 字节(sizeof(long))赋值的方式测试内存带宽。
2)MEMCPY模式,该模式通过memcpy接口一次性拷贝的方式测试内存带宽。
3)MCBLOCK模式,该模式通过memcpy接口分小块拷贝的方式测试内存带宽。
这种方法在评价过程中,评价结果除了与内存本身有关,还与评价时使用的工具链以及memcpy函数等外界因素相关。若是评价同一系列的处理器,外界因素基本相同的情况下,该方法是极其方便有效的。
1.2 指令执行时间评价
循环执行空指令方法用于衡量指定软件环境中的处理器性能。使用汇编语言编写接口实现循环执行nop指令,来保证处理器执行测试函数时执行的指令数是固定的,该测试函数代码短小精悍,能够保证测试函数中的全部指令能够装载至Cache中,保证处理器每次执行测试函数指令时是从Cache中取指,而非内存。这样可有效排除内存性能对处理器性能评价结果造成影响。
1.3 实时响应时间性能评价
实时响应时间是衡量系统性能的重要指标,响应时间越短,系统资源利用率越高。实时响应性能的评价中,重点关注中断响应时间以及上下文切换时间。
1.3.1 中断响应时间评价
中断响应时间为处理器实时性的一个重要体现方面,当中断发生时,处理器保存现场,然后响应中断,执行中断处理任务,处理完毕后,恢复现场,任务恢复执行,中断响应过程如图1所示。在评价过程中重点关注中断响应时间T2-T1,此段时间最短越好,说明系统的响应中断能力较强。
1.3.2 上下文切换时间评价
上下文切换时间是带有操作系统的处理器的重要评价方面,处理器正在运行任务时,由于其它原因切换到另一个任务,需要保存当前任务的状态并恢复另一个任务的状态,当前运行任务转为挂起状态,另一个被选定的就绪任务成为当前任务。从前一个任务挂起计时,到另一个任务变为当前任务时结束,这段时间即为上下文切换时间。具体实施的方法如下:
图1 中断响应过程
1)创建两个任务,一个优先级较高,一个优先级较彽;
2)高优先级的任务获取时间戳,挂起,这样就运行低优先级的任务;
3)低优先级的任务开始时调用获取时间戳的接口,然后恢复高优先级任务的运行。
两个时间戳的差值就是上下文切换时间。
2 实例应用
以自研带有MRCloud操作系统的处理器为例,该处理器有两个系列产品,下文简称为“1号”和“2号”,在设计上,2号与1号相比,增加了二级缓存,即L2 Cache,所以2号性能理论上应比1号要好,利用上述三种评价方法分别对1号和2号进行性能评价,以验证实际情况与理论推测相符。
2.1 带宽评价结果
分别对1号和2号SRAM的32KB进行测试,测试中使用的内存均使用 __attribute__ ((aligned(32)))得到对齐的内存,这样可以保证测试数据的稳定性。其中MCBLOCK模式采用16B、32B、64B、128B、256B、512B、1KB、4KB、8KB、32KB 10种情况进行测试。当数据块较小时,2号与1号测试结果相差不大,但随着数据块大小增加,2号访存性能是1号的2倍,明显优于1号。
2.2 指令执行时间评价结果
分别在1号和2号循环运行空指令,运行次数分别为100000次、1000000次、10000000次,得到执行指令时间如表1所示。可看出执行相同代码和相同的循环次数,2号运行时间明显少于1号,CPU指令执行能力2号优于1号。
表1 CPU 指令执行性能结果
2.3 实时响应时间评价结果
评价中断响应时间采用串口作为外部中断源进行触发,当一个任务正常运行时,串口触发中断,任务挂起,中断开启之前记录两次时间a、b,开启中断,在中断处理函数中记录刚进入中断的时间c,中断处理完成后出中断前的时间d,中断返回后主程序时间e。中断响应时间为(c-b)-(b-a),其中b-a为获取系统时间产生的误差时间。具体评价结果如表2所示,可看出中断响应性能2号与1号几乎相同。
评价上下文切换时间采用三个不同优先级的任务,优先级分别任务1<任务2<任务3,任务1中执行任务3(此时记录系统时间为A),任务3中对任务2执行——吊销20次,然后执行任务1(此时记录系统时间为B),上下文切换时间为(B-A)/20。具体评价结果如表2所示,可看出实时响应性能2号比1号稍微差一点,因为2号处理器是两级总线结构,在切换任务时时间比1号稍长。
表2 实时响应性能评价结果
3 结论
从上述应用实例来看,该套评价方法简单易实现,适用于不同的处理器,特别对于同一系列的新型号产品对比老型号产品性能评价客观清晰,在科研项目紧、任务重的情况下能可以快速地给出一个可靠的结论,有助于项目的积极推进。