论文部分内容阅读
嵌入式系统经过十几年的迅速发展,从简单的电子表、电子计算器到高数据吞吐量和密集计算的个人数字助理、移动式多媒体终端,它所包含的产品出现了显著变化。然而,随着处理器速度与存储器访问延迟的差距不断增大,面向多媒体应用和实时控制应用的SoC芯片中存储子系统的访问延迟已经成为系统性能的主要瓶颈之一。另外,对基于RISC核的嵌入式系统来说,在面向影像,视频的应用中,能耗的主要来源不在于数据通路和控制器,而在于对存储器的频繁访问,其中片外存储器成为能耗主要的消费者。因此,如何设计和优化存储子系统,便成了SoC芯片设计过程中必须要解决的重要问题。本文以ARM、SPM、Cache、外部存储器接口和片外存储器构建的SoC存储子系统作为目标架构,探索了一套在芯片设计阶段进行存储子系统设计以及性能和能耗优化的方法。
本文首先利用ARM公司的SoC Designer工具实现了一套时钟周期级(Cycle Accurate)精度的SoC高层仿真模型,为后续研究提供了软件运行环境和性能、能耗的评估手段。它设计和实现了EMI、SDRAM、Cache、SPM等模块的高层模型,ARM内核和AMBA总线采用库中的模型,并通过与RTL代码的VCS仿真结果相比,仿真波形与后者基本一致,仿真速度比VCS仿真快近600倍(RTL代码的VCS仿真速度为平均每秒钟177个周期,本文的SoC高层模型平均每秒钟可以运行105438个周期),完全达到了系统级设计对于SoC高层模型的要求。
基于以往SPM布局优化技术的分析,本文提出了一种基于扩展控制流图的SPM布局优化技术,适用于SoC芯片中嵌入式微处理器为ARM并且仅有SPM没有Cache的架构。该技术充分考虑了程序中所有的函数和数据,包括DCD数据、全局变量、堆栈数据、并根据划分粒度将函数进一步细分为指令块,从而把程序划分为一系列节点。采用扩展控制流图(ECFG)来描述各个节点之间的关系,进而生成性能矩阵、能耗矩阵和大小矩阵来更加精确的计算存储子系统的性能和能耗收益以及节点所需的SPM容量。本文采用改进的贪婪算法来解决节点分配这个经典的0/1背包问题,最后通过一个链接器自动生成新的目标程序。通过MP3player、Gunzip等基准测试程序的仿真实验结果表明,通过合理运用分配策略将程序中访问频度大的节点放入SPM可以大幅降低程序的运行时间和能耗。采用基于扩展控制流图的SPM分配策略把应用程序的一部分从SDRAM中移到SPM中运行可以平均减少应用程序的运行时间56%,降低能耗60%左右;与前人的研究相比,平均减少应用程序运行时间11%,降低能耗27%左右。在SPM的容量平均为2Kbytes时,对于上述基准测试程序可以得到性能和能耗收益相对于SPM容量的最大化。
基于以往关于Cache组织架构的研究,本文提出了一种基于软件可控Cache方法的Cache布局优化技术,适用于SoC芯片中没有MMU并且Cache硬件结构可更改的系统架构。在以前的研究中大多选用Cache命中率,特别是读操作命中率,作为衡量Cache性能的标准。一般认为命中率越高,性能越好。但是在嵌入式应用中,命中率并不能真实地反映Cache的工作性能。另外传统的仅由硬件控制的替换策略,严重限制了高速缓存(Cache)性能的提高。本文提出的软件可控Cache优化方法,以总体操作开销(Total Operation Overhead,TOO)为研究对象,基于传统结构增加一个软件控制器,实现了如下的三种操作:①TOO很大且生命期均匀分布的数据块在Cache中保留副本;②TOO很大且生命期集中分布的数据块在其有效生命期内,优先保留在Cache中;③TOO很小的数据块由处理器直接与外存通信。通过软什配置,可以方便地控制影响Cache性能的数据存取操作,并且可以有效地控制硬件开销及能耗的增长,弥补了前人研究中存在的不足,为嵌入式Cache的设计提供了一种新颖的实现机制。通过CRC32等基准测试程序的实验结果表明,对于数据指令统一Cache,程序执行时间比普通Cache减少了约10%,同时总线占用率减少了28%左右,硬件开销为增加了8条标记表信息和相关控制电路。
最后,对整篇论文的研究内容进行了总结,并指出本课题进一步发展的方向。