嵌入式计算机 的设计不同于通用的计算机设计,它的设计过程较复杂。对于嵌人式计算机的设计,是针对具体的应用问题,通过对问题的描述、建模,分解嵌入式计算的任务需求后,在建立的计算模型上,进一步地向设计的领域转换,即:将需要完成的计算任务向可以有效地解决该问题的嵌入式计算机系统结构与组成映射。
嵌人式计算机的设计,涉及到软件和硬件的分别设计。硬件的设计,主要是需要考虑处理器的类型及数量,系统组成部件(包括处理器、存储器、专用部件及可编程部件、I/O部件等)之间的互联拓扑结构(即选择通信部件,以什么样的总线协议进行系统各组成部件的互联)。嵌入式计算机,由于其设计时间要求、应用环境的限制,对它的设计成本、设计性能都有特殊的要求。
嵌入式计算机的设计*价指标,可以是多种指标的综合,例如:处理速度(主要以任务的计算时间度量)、设计体积、设计成本、实时反应能力、系统的功耗、可靠性与可信度等。由于嵌入式计算机设计本身的复杂性及特殊性,不同的设计要求,*价的方式方法对不同的设计过程各不相同,同时,对这些*价指标的偏好程度及侧重点也不相同。有的环境要求很苛刻的实时性,有的应用场合要求很小的设计体积,有的要求在较小的设计成本下获得尽可能快的处理速度等。因此,嵌入式计算机的设计*价与测量是复杂的。
本文主要就嵌入式计算机的设计*价指标、*价方法,使用到的*测技术及用于设计过程中的*测基准方法进行分析,并对未来的嵌入式计算机设计中用到的*测基准技术进行探讨。
2嵌入式计算机的设计性能测试 指标
对于嵌入式计算机的设计性能进行*价,需要对构成嵌入式计算机系统的组成部件,如嵌入式微处理器、编译器、运行库等关键的系统构件的*价性能特征,定义一系列的性能指标。用于嵌入式计算机设计性能*测的常用指标有以下几种:
(1)系统的执行时间(Execution Time)和加速比(Speed Up)
嵌入式计算机设计对于运行的应用程序执行时间衡量,是嵌入式计算机系统设计性能测试中最重要的性能指标。用于*测的基准程序运行时间,即基准程序的运行速度,直接反映了嵌入式系统的性能。这一性能指标,主要由嵌入式微处理器、存储系统的层次结构和I/O系统的整体性能决定,同时,也与应用程序向嵌入式计算机目标处理器编译过程有关。编译器的优化能力、支持程序运行的运行库性能对应用程序的运行时间,有着密切的关系,同时,也受操作系统的开销和同时运行的其他用户任务的影响。这一性能指标,通常会选择系统对应用测试程序的最大峰值速度作为为度量的指标。
通过对比测试,可以*测2个嵌入式系统及构成系统的关键构件设计的改进加速比:
(2)代码尺寸(Code Size)
代码尺寸是指将应用程序的源程序,由编译器编译后生成的二进制代码大小。嵌入式系统是资源受限的系统,它的内存资源往往受应用需求与成本的限制,要求应用程序的目标代码在达到一定性能的条件下,尽可能降低代码尺寸,以减少对有限内存资源的占用量。通过编译后的基准测试程序代码尺寸,可以反映微处理器的代码压缩性能和用于这种微处理器上编译器的存储优化性能。
(3)系统功耗(Energy Consumption)
目前的嵌入式系统,对于电源的要求也较为苛刻。由电池 供电的嵌入式系统,一般都尽可能节省电源的要求。低功耗的嵌入式系统设计,不仅节省了系统的电源耗费成本,而且在很程度上可以有效地延长系统使用寿命。因此,对于系统的功耗*价,也是嵌入式系统的一项重要性能指标。嵌入式系统的能量消耗主要由各芯片的工艺属性和电路规模决定,受芯片电源管理控制。进一步的系统设计,进入片上系统(System-on-a-Chip,SoC)的设计时代后,系统的功耗就将会有硬件本身维持运行所消耗的静态功耗及进行软件任务的计算所表现出的系统芯片逻辑门翻转而引起的动态功耗。在目前普通的嵌入式计算机中,硬件芯片的功耗管理,可以最终通过指令序列和软件编程控制,分别由编译器指令调度和操作系统功耗管理模块完成。嵌入式系统的功耗指标,表征着嵌入式系统硬件、操作系统和编译系统的省电属性。
(4)执行的指令数(Instructions Executed)
执行的指令数是应用程序在一个时钟周期或者机器周期中,嵌入式处理器可以执行的指令个数。目前的嵌入式微处理器,可以使用基于RISC核的处理器,也可以是用于数字信号处理的DSP 处理器,也可能是多种异构处理器组成的处理单元(PROCESS Element)。RISC结构的嵌入微处理器,大多数指令为单周期指令,在一个机器周期都可以处理完成。使用运行于嵌入式系统中的测试基准程序执行的指令数,可以表征嵌入式系统中编译器的速度优化能力及微处理器完成指令运算的运行性能。
这些指标,可以是每指令平均时钟周期CPI(Cycles Per Instruction)、每时钟执行的平均指令数IPC(Instructions Per Cycle)、每秒执行的百万指令数MIPS(Millions of Instructions Per Second)等。这3个性能指标的定义分别如下:
其中,Cycles是执行应用程序经历的时钟节拍数。3种性能指标都可以用于描述应用程序的执行效率,反映编译器的速度优化性能及嵌入式计算机的处理器核心的指令处理能力。
(5)高速缓存未命中率(Cache Miss Rate)
其中Cache Miss为Cache未命中数,Cache Access为Cache总的访问次数。缓存未命中率(Cache MissRate)表示在应用程序执行过程中,访问存储器的性能,以及存储器对处理器所需要使用到的指令、数据的高速支持能力,可以用来表征表示编译器的数据分布、存储器系统的组织和访问优化能力。
在以上5种性能指标中,前3种可用于描述整个嵌入式系统、微处理器、编译器、运行库的性能*测指标,后2种主要用于*测编译器的优化性能。除此以外,某些嵌入式应用还需要使用其他性能指标,如总线/网络 带宽(MBps)和浮点运算速度(MFLOPS)等。
3嵌入式计算机设计中的常用测试方法
嵌入式计算机系统设计中常用到的测试方法,可以是基于静态分析的解析方法,也可以是进行模拟仿真的方法,也可以是直接运行应用程序进行测量的方法。
3.1 解析法
采用分析技术,假定计算机系统参数与性能指标参数之间存在某种关系,按工作负载的驱动条件列出方程,用数学方法求解直接得出系统的性能。解析法采用的公式还是很完善,需要假设系统处于一系列理想状态,一般用在系统的设计阶段,结论的正确性需要经过测量方法的验证。使用解析法,进行系统的性能*价,需要完备的性能*价模型。这方面,由于设计的层次(板级设计、芯片级设计、系统级SoC设计等)不同,需要建立的*测模型也各不相同。往往会有面积的*测模型、功耗的*测模型等。
3.2模拟法
按照被*价的系统的运行特性建立一个系统模型,按照系统可能有的工作负载特性,建立工作负载模型并编制出模拟程序,在被*价系统上运行模拟程序,并通过在其他的系统上运行这一模拟程序,通过程序在不同系统运行获得的性能参数对比,就可以得出设计的优劣。模拟法也用于系统的设计阶段。软件模拟的方法,往往会带来的误差,建立的工作负载模型不可能对结果具有相接的影响,使得这一方法得到的结果往往不能如实地反应系统设计的真实性能。
3.3 测量方法
测量技术是对投入运行的现有嵌入系统进行直接测量,因此它的结论是真实、精确和可信的。分析、模拟技术是基于对以前的测量结果积累归纳得来的,所以说测量是最基本的*价技术。测量方法需要相应的系统测试环境与工具,这样的测试组成,可能是专门的测试硬件设备、软件及相应的计算机检测系统。
测量方法要求得出精确的数值,就需要从概念上和具体的结构上对待测系统进行大量的分析,设计专门的测量工具,根据需要考虑的因素和环境,进行多次的反复测量并统计分析测量的结果,因此这一方法也是比较耗时的。
4嵌入式计算机的性能测试原理及测试环境构成
4.1 性能测试原理
嵌入式系统由硬件子系统和软件子系统2部分组成。硬件子系统包括微处理器内核、高速缓存、存储器、外设接口等,这些逻辑功能部件通常集成在一个嵌入式处理器(Embedded PROCESSor)中。软件子系统包括嵌入式操作系统(RTOS)、中间件(Middle Ware)、嵌入式编译器(Compiler)和运行库(Runtime Library)等。嵌入式应用程序的可执行代码通常包括3部分:编译应用程序生成的目标代码、链接程序从运行库中提取的库例程代码和操作系统功能调用。一个嵌入式应用程序(Application)的执行时间(Execution Time)受上述多种因素的影响,可用以下函数描述:
Execution Time(Application)=f(EPROCESSor,RTOS,MiddleWare,Compiler,Library)
上述函数的5个参数中,改变其中1个参数,保持其余4个参数不变,进行性能测试,收集测试结果并进行对比分析,可实现整个嵌入式系统和关键构件的性能测试。主要测试项目的测试方法如下:
(1)改变Embedded PROCESSor,保持其他参数不变,并比较测试结果,可以*测不同嵌入式微处理器的性能差异;
(2)改变RTOS,保持PROCESSor不变,以*测不同RTOS的性能差异;
(3)改变Compiler,保持其他参数不变,可*测嵌入式编译系统编译优化能力;
(4)改变Library,保持其他参数不变,可以*测不同运行库的性能;
(5)比较两个个嵌入式平台的性能指标,可以*测二者的性能差异;
(6)将执行测试基准程序获得的性能指标与嵌入式应用要求的性能指标进行比较,可以*测嵌入式系统性能是否满足应用需求。
4.2性能*测环境
嵌入式系统性能*测环境,通常包括用于嵌入式系统*测的测试主机和将要被测*的嵌入式系统,基本结构如图1所示。
测试主机运行测试管理控制程序,控制性能测试过程的执行,编译、加载和启动性能测试基准程序,收集性能数据,分析测试结果,生成测试报告。被测*的嵌入式系统则运行下载的测试基准程序,测定和采集性能数据,并通过测试代理反馈给测试主机。两者之间通过某种连接(如串口、以太网 等)方式,进行数据的通信与交互。