APP下载

一种嵌入式系统的滑动Cache机制设计

2015-07-01何青松邓超邱志

单片机与嵌入式系统应用 2015年3期
关键词:功耗仲裁间隔

何青松,邓超,邱志

(中国船舶重工集团公司 第七二二研究所,武汉 430205)

一种嵌入式系统的滑动Cache机制设计

何青松,邓超,邱志

(中国船舶重工集团公司 第七二二研究所,武汉 430205)

为了提高嵌入式系统中Cache的使用效率,针对不同类型的应用程序对指令和数据Cache的容量实时需求不同,提出一种滑动Cache组织方案。均衡考虑指令和数据Cache需求,动态地调整一级Cache的容量和配置。采用滑动Cache结构,不但降低了一级Cache的动态和静态泄漏功耗,而且还降低了整个处理器的动态功耗。模拟仿真结果表明,该方案在有效降低Cache功耗的同时能够提高Cache的综合性能。

滑动Cache;可重构;低功耗

引 言

对于便携式嵌入式设备,降低其整体功耗具有越来越重要的实际意义。而在设计的嵌入式设备中,Cache的功耗占整体功耗的40%左右[1-2],因此,研究如何降低Cache功耗的各种技术成为嵌入式设备设计者关注的重点。针对嵌入式系统运行的特征,很多应用系统都曾经提出过多种可重构Cache结构[2-5],例如通过调节Cache的容量[3]、相联度[2]、块大小[4]、替换策略、缓存块数[5]等技术方式,适应不同的嵌入式程序对Cache资源的需求,达到提高性能和降低功耗的目的。

由于不同嵌入式程序对指令Cache和数据Cache的需求是不平衡的,从而导致某种Cache的容量不足而另一种Cache却空闲。嵌入式系统通常采用制定容量的指令Cache和数据Cache,本文引入动态重构的概念,实现了一种可重新划分指令Cache和数据Cache大小的高速缓存模块,可动态配置指令Cache和数据Cache的大小。对于较小的应用程序,如果指令Cache和数据Cache过大,虽然命中率很高,但是也造成了功耗的增加;而对于较大的应用程序,如果指令Cache和数据Cache过小,则会造成命中率的明显降低,在很大程度上影响处理器的性能。动态可重构Cache可以在程序运行的过程中随着Cache命中率的变化随时重构,既保证较高的命中率,又保证较低的功耗。

1 滑动Cache方案

本文引入了一种新的Cache组织结构(称做滑动Cache),是对动态可重构Cache的一种扩展方式,应用于嵌入式处理器中Icache和Dcache分离的片上一级Cache,主要包含指令Cache块(Icache)、数据Cache块(Dcache)和滑动Cache块(Scache)3个部分,使Scache能够在Icache和Dcache之间滑动。滑动Cache结构的特别之处在于它可以综合考虑程序对Icache和Dcache的实时需要,进而通过仲裁机制动态决定Scache是用来扩充Icache的容量,还是用来扩充Dcache的容量,或者是休眠。这种方法不但降低了Cache的动态功耗和静态泄漏功耗,而且处理器的性能也有所提高,它不需要任何软件编译的支持,也不需要改动除Cache之外的其他硬件。

1.1 滑动Cache基本思想

处理器及其Cache系统的设计在运行各种不同的应用程序时,其性能表现还是有很大差异的,某些程序需要的指令比较少但是却要处理大量的数据,比如压缩解压缩算法。相反,还有一些程序需要执行的指令非常多,但数据量较少,例如一些编译程序。因此在运行各种程序时都使用同一容量和结构的Cache,会造成某种Cache缺失率非常高,但同时另外一种Cache却有部分闲置。如果设计一种Cache结构能随着不同程序的需求,将一种Cache的闲置部分提供给另外一个需要增大容量的Cache使用,而不是简单地关闭这些部分,那么处理器性能将会大大提高。滑动Cache组织结构图如图1 所示。

图1 滑动Cache组织结构图

Scache有3种状态:当Icache缺失率较高时Scache作为Icache使用;当Dcache缺失率较高时Scache作为Dcache使用;如果Icache和Dcache缺失率都不高,Scache就休眠。当Scache与原有的Icache和Dcache结合使用时,只扩大组数,不改变相联度。Scache的容量要小于等于Icache和Dcache中容量较大的一个,即Cslide≤max(Cinst,Cdata)。例如Icache容量为32 KB,Dcache容量为64 KB,则Scache容量可选范围小于等于64 KB。假设Scache选定为64 KB,当Scache被指定用做Icache时, Scache中只有32 KB与原Icache结合使用,其余超出原Icache容量的32 KB处于休眠状态。由于不同容量的Cache需要的Tag长度不同,Scache的容量可能会在Icache和Dcache两个不同容量之间变动,导致滑动Cache的Tag长度也不固定。为了保证Scache既可充当Icache使用,又可充当Dcache使用,Scache的Tag长度应该等于指令和数据Tag中较长的,即Lslide tag=max(Linst tag,Ldata tag)。

1.2 滑动Cache仲裁机制

滑动Cache仲裁机制是核心部分,通过它来判断Cache容量何时需要滑动、何时休眠,以及按照什么原则进行滑动。利用缺失率作为监视Cache性能的基本尺度,通过设计和使用一套参数来监视、反映和调整系统的动态行为和需求。这套参数如下所示:

① 敏感间隔计数器(Sense Intervals Num,SIN):为了监视Cache性能,就必须把一个应用程序的整个运行周期分成一些固定的长度,称为敏感间隔(例如100万条指令为一个间隔[6])。运算逻辑单元每执行一条指令,敏感间隔计数器就会自动加1。并且强制规定,只有一个敏感间隔结束以后,才可以启动仲裁机制调整一级Cache的容量。

② Icache缺失计数器(Icache Miss Num,IMN):用来统计一个敏感间隔内Icache的缺失次数,每当Icache发生缺失时计数器自动加1,并且在每个敏感间隔开始时仲裁机制将其清0。

③ Dcache缺失计数器(Dcache Miss Num,DMN):用来统计一个敏感间隔内Dcache的缺失次数,每当Dcache发生缺失时计数器自动加1,并且每个敏感间隔开始时仲裁机制将其清0。

④ Icache缺失边界寄存器(Icache Miss Bound,IMB):用来存储预先设定的Icache缺失边界。

⑤ Dcache缺失边界寄存器(Dcache Miss Bound,DMB):用来存储预先设定的Dcache缺失边界。

⑥ Scache状态标志寄存器(Slide State,SS):用来存储当前Scache的状态,当敏感间隔结束时,仲裁机制会根据IMB、DMB、IMN和DMN的值判断发生哪种情况,进而将Scache设置成相应的状态。Scache的状态有以下5种:

状态1:如果IMN>IMB且DMN

状态2:如果IMNDMB,SS被标志成2,下一个敏感间隔Scache作为Dcache使用。

状态3:如果IMN>IMB且DMN>DMB,并且Icache超过边界的比例大于Dcache,则SS被标志成1,下一个敏感间隔把Scache作为Icache使用。

状态4:如果IMN>IMB且DMN>DMB,并且Dcache超过边界的比例大于Icache,则SS被标志成2,下一个敏感间隔把Scache作为Dcache使用。

状态5:如果IMN

1.3 滑动Cache工作过程

滑动Cache的工作流程如图2所示。

图2 滑动Cache的工作流程图

(1) 设置各个状态寄存器(SS,IMB,DMB)

首先,清空各个计数器(SIN,IMN,DMN),在程序运行初期将SS置为0(即休眠状态),因为在程序刚开始时初始化Cache会导致缺失率非常大,这期间根据缺失率来设置SS是不正确的。通过实验发现大部分程序运行几个敏感间隔后,缺失率趋近于稳定。本文在过了第3个敏感间隔后,每个敏感间隔结束时都启用仲裁机制。

(2) 设置仲裁策略

启动仲裁机制,如图1所示,如果IMB、DMB、IMN和DMN的值满足状态1或状态3,仲裁机制将SS设置为1,Scache作为Icache使用。由于Scache比原Icache容量要大,因此只需要截取与原Icache容量相同的部分作为Icache使用,其余部分休眠。为了正确读取Icache和Scache,就要保证能够正确寻址,因此增加一位地址位用来寻址。本方案将来自CPU地址中的Tag字段的最低位作为增加的地址位寻址,用来判断是对原Icache读取,还是对Scache读取。如果地址中Tag字段的最低位是1,表明来自CPU的地址是对Scache的操作,Scache片选信号选中,Icache片选信号关闭。与之相应,送到总线上的输出数据也应该是从Scache读出的数据。这时IMN统计的数据应该是Icache和Scache的缺失数目之和。

敏感间隔结束后,如果IMB、DMB、IMN和DMN的值满足状态2或状态4,仲裁机制将SS设置为2,Scache作为Dcache使用。如果这时增加的地址位是0,则表明来自CPU的地址是对Dcache的操作,Dcache与总线交互数据,Scache片选信号关闭。当状态5发生时SS被设置为0,整个Scache休眠,Icache和Dcache正常工作。

2 模拟测试及结果

为了对上述设计进行性能评测,在兼容MIPS指令集的嵌入式CPU模拟器上进行测试和数据采集。该模拟器精确到了周期,为提取Cache模型的详细运行数据提供了极大的方便。模拟测试分别实现了3种传统Cache结构模型和可配置Cache结构模型在模拟器上运行两个测试应用程序的性能比较,为了简单起见,主要是对CPI进行比较[7]。

测试过程如下:A、B、C均为传统结构的Cache模型,模型A的Cache大小是4 KB,采用直接映象的组织方式,二级Cache大小为28 KB;模型B的一级Cache大小为8 KB,采用直接映象的组织方式,二级Cache大小为24 KB;模型C的一级Cache大小为8 KB,采用两路组相联映象的组织方式,二级Cache为24 KB;模型D为滑动Cache配置结构的Cache模型,测试数据比较见图3。

图3 测试数据比较图

从模拟器测试的结果看,在采用滑动Cache配置结构的Cache模型上运行的两个应用程序的CPI值为最小,相较典型的A、B 和C三个传统Cache模型,其性能改进是明显的。

结 语

Design of Sliding Cache Mechanism in Embedded System

He Qingsong,Deng Chao,Qiu Zhi

(No.722 Research Institute of CSIC,Wuhan 430205,China)

In order to improve the using efficiency of Cache in the embedded system,a novel sliding Cache structure is proposed,which is based on the fact that different programs need different sizes of instruction and data Cache.This scheme can dynamically adjust the capacity and structure of Cache by balancing the instruction and data Cache requirement.The results indicate that the dynamic power and static leakage power of Level 1 Cache can be reduced using sliding Cache structure.Simulation results show that it decreases the average energy consumption and improves the comprehensive performance of the Cache.

sliding Cache;reconfigurable;low power consumption

TP302

A

猜你喜欢

功耗仲裁间隔
基于任务映射的暗硅芯片功耗预算方法
间隔问题
间隔之谜
一种多通道共享读写SDRAM的仲裁方法
ICSID仲裁中的有效解释原则:溯源、适用及其略比
揭开GPU功耗的面纱
数字电路功耗的分析及优化
一种面向星载计算机的功能级功耗估计方法
两岸四地间相互执行仲裁裁决:过去、现在及将来(上)
上楼梯的学问