【分享】SOC参数自动配置设计方法与功耗优化 3 | 随着SOC集成度的进一步提高,参数个数增多,导致设计选择空间急剧扩大,完全地对每一个参数组合进行评价是不可能的。由于每次计算代价函数需要很长的时间,一些进化优化算法,如遗传算法不再适用。 邻域搜索算法是一种解决优化问题的方法。一般来说,邻域搜索算法只能找到局部最优解。但是与大多数优化问题不同,SOC 的参数具有一定的方向性,系统设计师的经验可以帮助设计师找到一种较优化的参数组合,SOC 参数优化的主要目的是对系统性能进行微调,因此邻域搜索算法可以满足SOC 参数优化的要求。
以一个数据采集系统为例来验证领域搜索算法的有效性,数据采集系统的参数如表1 所示。 在这个应用中,系统从UART 接收数据,利用DMA 运送到内存,软件进行32 点FIR 滤波处理。 UART 的接收速率是10kB/s ,参数的性能相关图如图1 所示。
首先建立功耗相关图。在建图过程中,可以利用参数的数值相关进行参数归并,比如MUL的选用和MAC的选用可以归并为一个参数;以及区分参数的层次性,比如ICache 的失配参数N 由参数A 、B 、C 的一个子图组成。 接着设立代价函数f ( K) =系统功耗, K 是一个参数组合。选择初始解Kbest.f best=f(Kbest ) 。 然后进行参数优化,参数优化的算法步骤如下。
1) 分析功耗相关图的拓扑顺序,包括较低层次的子图。 一般可以采用邻接表作为实现上述算法的数据结构。 首先从图中选一个入度为0 的节点并将其输出,然后从图中删掉此节点及其所有的边。 反复执行这两步,直至剩下的图中再也没有入度为0 的节点。剩下的就是单个节点或环路。 分析拓扑顺序是 为了确定参数优化的顺序。 拓扑序列的第一个节点就是第一个被优化的参数。
表1 数据采集系统参数表
2) 邻域映射定义为取当前优化节点的最近可选值。 仿真得到功耗f ( K) 。 如果f ( K) < f best ,则Kbest = K , f best = f ( K) ;否则退回原来的值。 重复步骤2) ,直到最近的可选值都被仿真过。
3) 选择下一个优化的节点,一般选择拓扑序列的下一个参数,但是在环路中,如果一个参数发生改变,则需要重新遍历一遍环路,这时应取环路上的节点。如果该节点包含较低层次的子图,则选取子图中的节点。 重复步骤2) 。
实验结果
在进行优化实验前, 需要建立IP的功耗模型。 门级电路的功耗估计已经比较成熟了。因为门电路的结构比较简单,可以比较容易地测量静态功耗,并根据标准单元的输入建立动态功耗的查询表。但是门电路的功耗分析可能需要较大的运算量,而且门电路方法一般用于设计的后期,这时软硬件划分、硬件微结构设计、寄存器传输级(RTL)设计、综合都已经完成了。这种方法无法对系统设计提供帮助或参考,这对系统设计师来说是很大的担心,也可能对设计周期产生影响。 当前功耗建模的方向主要是在RTL 或行为级领域。功耗常常与状态相关。对于状态机电路来说,由于硬件模块一般有几个状态,在不同状态下,每个时钟周期上消耗的能量是不同的,可以利用IP 的状态机建模。状态功耗模型并不一定和IP 核的电路状态机完全一致,它还可以考虑电路中的一些组合逻辑输出和关键输入信号如门控时钟信号等,只要这些信号的组合可以表示一个特殊的功耗状态即可。本文采用常用的状态功耗建模方法,利用TSMC0。18 工艺的门电路仿真数据对Cache 、GPR、各运算单元、DMA 和UART 进行建模。
在软硬件仿真平台上,对这个数据采集系统进行仿真。 由于应用程序较短以及采样速率不是很高,在实验中,共经过了28 个参数组合的仿真,得到的优化解如表2 所示。 如果对整个设计空间进行仿真则需要1.92×107 次仿真。
表2 对参数进行邻域搜索优化的结果
结 语
原有的硬件描述语言难以适应参数化设计的要求,Eperl 和Vperl 提供了硬件描述语言的扩展。 利用参数自动配置环境嵌入Eperl 和Vperl ,可以生成对应特定参数配置的SOC 硬件语言描述。 参数优化建立在参数自动配置环境的基础上。在分析SOC参数属性基础上提出的领域搜索算法可以大大减少SOC优化周期。该设计环境已应用于一款嵌入式RISC处理器CK520和基于它的SOC开发,并取得了满意的效果。
|
|