>
首页 » 技术文章 » Cache中Tag电路的设计

Cache中Tag电路的设计

作者:高沁伟 凌青 杨军  时间:2006-12-04 18:49  来源:电子设计信息网-www.edires.net
摘要:在SoC系统中,片上缓存(Cache)的采用是解决片上处理器和片外存储器之间速度差异的重要方法,Cache中用来存储标记位并判断Cache是否命中的Tag电路的设计将会影响到整个Cache的性能。本文阐述了Tag电路原理,采用write和compare两根控制信号线,控制Tag电路在预充电,比较和加载三种状态之间进行转换。仿真结果表明Tag电路可以实现其功能,使系统性能得到提高。

关键词:SoC;Cache;Tag电路

引言

在现代SoC系统中,片上高速微处理器和片外低速存储器之间速度差异是制约系统性能的瓶颈,片上Cache是解决这个问题的有效手段。Cache分为Tag电路和Data电路两部分。其中Tag电路是用来存储标记位,并和虚拟地址的标记位比较,进而判断Cache是否命中;Data电路是用于存储与地址相对应的数据。如果命中,由Data电路送出相应的数据;否则,则访问主存,将包含这个字的块加载到Cache中,并把请求的字送给CPU。Tag电路的设计将影响到整个Cache的性能。本文是一个统一结构Cache中的Tag电路设计,Cache容量为8k,采用4路组关联,每行16个字节;采用随机替换策略和写直达。本文将从Tag电路的总体结构和各部分子电路的结构来说明,并给出电路的仿真结果。

1Tag的总体结构

Cache容量为8k,采用4路组关联,每行16个字节,所以Tag电路的存储体共有128个标记位入口(entry),标记位为21位,另外为了实现对Cache使无效,每个Tag行有一个状态位。状态位为0时表明Cache无效,为1时Cache有效。Tag电路共有三种状态:预充电状态、加载状态和比较输出状态。两根控制信号write和compare信号使Tag模块在这三种状态之间转换,且两信号互斥,不会同时为1。


Tag结构示意图如图1所示,其中npc为预充电控制信号,en为写使能控制信号,与随机数产生器相关,实现Cache的随机替换策略。在进行标记位比较时,CPU给出虚拟地址VA,VA[10∶4]位经过译码,选通Tag存储体中某一行的字线,也就是选择一个标记位,被选中的标记位和CPU给出的虚拟地址的标记位VA[31∶11]经比较单元进行比较。比较的结果经过灵敏放大器放大后输出。

图1Tag结构示意图

由于Cache为四路组关联的结构,同时有4个标记与VA[31∶11]位进行比较,比较结果经过适当的组合逻辑后,生成表明Cache是否命中的match信号和表明四路中每一路是否命中的matchi信号。命中时,match_i为高电平,match为低电平。如果Cache没有命中,则需要将新的数据加载到Cache中,电路进入加载状态,输入电路的写使能信号打开,虚拟地址中的标记位VA[31∶11]经过输入电路产生差分信号送到位线上,并锁存到Tag的存储单元中。

2子电路设计

2.1输入电路
输入电路如图2所示,若写使能en打开,微处理器送出的虚拟地址经过输入电路转变成差分信号存到Tag的存储体中。en为四路Tag存储体的写使能信号分别为rand0.k,rand1.k,rand2.k,rand3.k。其中k=write×/clk,而rand0, rand1, rand2,rand3是由随机数产生器产生的两位随机数经过译码而产生的四根选择信号,实现随机写。/clk是一个时钟信号,使en成为和时钟同步的控制信号。

图2输入电路

2.2存储单元
存储单元采用由6个晶体管构成的CMOSSRAM存储单元来构成4路22位x128entry的存储阵列。

图3SRAM存储单元

2.3比较电路
比较电路如图4所示,存储单元中的数据和微处理器送出的标记位VA[31∶11]位通过比较电路进行比较。y=va⊕bl(异或操作),即命中时,比较结果y输出为0。由于采用传输门电路来构成比较电路,输出的比较结果的逻辑电平实际和位线上的逻辑电平一致。考虑到采用标准6管的SRAM存储单元的位线上有很大的负载电容,位线上电平的逻辑摆幅很小。比较的结果需要经过灵敏放大器输出给后一级的电路。

图4由传输门构成的异或门

2.4灵敏放大单元
差分灵敏放大器可以抑止共模噪声,而仅放大差分信号,同时将双端输入转换成单端输出。图5所示的灵敏放大器只有在使能控制端打开的时候,才能将比较的结果放大输出。也就是当se=1时,Tag电路才进入比较状态。灵敏放大器的使能信号为:se=compare×/clk

图5带有控制端的差分灵敏放大器

如比较结果一致,比较单元输出的y=0,yn=1,经过灵敏放大器,就会恢复主摆幅的输出电平。灵敏放大器和比较电路配合,即使位线上只有很小的逻辑摆幅时,也可以恢复比较结果输出,提高了Cache的性能。同时se信号的产生电路是一个反馈环路,当se=1时,由于电路负反馈,se很快被下拉为0,se只是一个很窄的脉冲信号,这样可以缩短灵敏放大器的工作时间,降低Cache的功耗。

2.5预充电电路
为了避免电路进入比较状态时,灵敏放大器出现误动作,在Cache进入工作状态之前,将位线bl和bln都预充电到高电平。预充电电路如图6所示,其中使能信号为:npc=(write+compare).clk.该信号是低电平时有效。

2.6译码电路
译码电路仅在write或者compare为高电平的时候使能。将VA[10∶4]位进行7到128的译码,直接的7到128的译码不仅功耗大,而且在版图实现上会占用很大的面积,所以多采用分组译码,本设计采用一个带有控制端的2到4译码器,一个普通的2到4译码器和一个普通的3到8译码器实现组合译码。

图6预充电电路

3仿真结果

将本文中设计的Tag电路和配合ARM公司提供的ARM7TDMI内核进行仿真实验,仿真采用nanosim+vcs混和仿真的办法进行。图7和图8为仿真波形。其中arm_mclk是ARM7TDMI是内核的执行指令和访问内存的主时钟,arm_a[31∶0]为内核送出的32为虚拟地址,compare和write为控制Tag电路在加载状态,比较状态和预充电状态之间转换的控制信号线,se_amp为灵敏放大器的使能信号,en是输入电路中的写使能信号,npc为预充电控制信号。n_clk为同步时钟,se,npc,en都是与该时钟同步的信号,match是表示Cache是否命中的信号。

图7仿真波形一

图7所示波形反映了,处理器送出来虚拟地址为0x40,Tag电路进入比较状态,灵敏放大器的使能信号打开,将比较结果输出,match=0,没有命中,需要将该地址的数据加载到Cache中,write信号变为1,输入电路的使能信号打开,将地址标记位写入到Tag存储体中。由于Cache一次写操作会加载一行,即四个字的数据,所以对0x44不再进行比较和写操作,此时的Tag电路处于预充电状态。在图8的仿真波形中,我们可以看到,由于前面已经将0x40,0x44,0x48,0x4c这四个地址对应的数据加载到Cache中,当处理器要访问0x48这个地址的数据时,经过比较,Cache给出表示命中的match信号。

图8仿真波形二

4结论

片上缓存(Cache)可以解决由于片上处理器和片外存储器之间速度差异带来的问题,提高系统性能。Cache中用来存储标记位并进行比较,判断Cache是否命中的Tag电路的设计会影响Cache的性能。从仿真结果来看,本文中设计的Tag电路在write和compare两根控制信号线的控制下,在预充电,比较和加载三种状态之间进行正确的转换,实现存储和比较标记位的功能,可使系统的性能得到提高。




相关推荐

SoC验证走出实验室良机已到

SoC  ICE  2014-01-17

蓝牙整合无线充电方案领舞穿戴式产品

SoC  Bluetooth  2013-12-31

Xilinx授予TSMC最佳供应商奖

Xilinx  SoC  2013-08-28

多核竞争已过时 “处理技术”将成新战场

SoC  处理技术  2013-08-26

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

Semico:28nm SoC开发成本较40nm攀升1倍

28nm  SoC  2013-06-25
在线研讨会
焦点