为了评估最终系统软件的性能,将列表1中的伪随机码正确转换成C代码并同时用于A、B系统中,然后利用内部存储器中的结构模拟每个系统的硬件接口。代码中应避免使用位域,因为标准C实现不能在限制性访问的地址空间上正确工作。系统代码模拟运行于PowerPC,编译工具采用的是Green Hills MultIC,目标操作系统是VxWorks,编译器设置在中级优化度(目的是帮助调试,并允许设计工程师把每条汇编指令与每一行C代码联系起来)。
表1列出了伪随机码的每一行,并给出了每个系统实现所用到的汇编指令与功能调用数量。另外还对两个实现所用的代码执行速度进行测试。子程序升级系统B轴的速度要比系统A快5.3倍,这主要归功于任务阻塞与去阻塞功能调用的去除。要注意的是实际系统中的加速效果可能并不明显,因为实际的硬件访问时间对总的执行时间影响最大。
在实验中要提升两个实现所用编译器的优化度,结果发现优化度的提高对系统B无效,对系统A来说只是减少了很少的代码,并且速度却稍有降低。这样的结果表明,系统B的硬件接口在轴域的资源访问上非常接近内部访问的效能。
另外,为了对两种实现所用到的硬件设备进行评估,要用VHDL对硬件接口进行编码,然后用赛灵思的WebPACk软件进行综合,并把设计映射到赛灵思的Virtex FPGA中。采用Virtex系列芯片的结果是系统A要消耗56个功能片(slice),系统B要消耗85个功能片。V300E-PQ240器件总共具有3072个片,因此系统A占用可用资源的1.8%,系统B则占2.8%。9500系列器件的内部资源更有限些,比如XC95288XL-PQ208,系统A将占用该器件可用资源的18%,系统B则占30%。
仔细考察这两个设计发现,系统B所用的额外资源中最主要的驱动源是组合型轴寻址方案。为了验证这一结果,重新组织寄存器映射,以便将每个轴作为一个独立资源使用,单个轴映射按地址位边界对齐。这一变通的实现方式保留了系统B的所有软件接口优点,同时减少了整体硬件器件的使用,Virtex系列器件的片利用率能降低2.3%,9500系列的利用率能降低22%。
硬件设计会极大地影响系统软件实现的复杂性和质量。一个好的硬件设计要求设计人员能根据硬件实现与最终软件设计环境的复杂性做出决定,正确理解硬件接口设计对软件开发流程的影响能极大地改进系统质量、性能和可靠性,同时减少系统开发的周期与成本。