Chinaunix首页 | 论坛 | 博客
  • 博客访问: 35177
  • 博文数量: 11
  • 博客积分: 265
  • 博客等级: 二等列兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-03 12:48
文章分类
文章存档

2012年(11)

我的朋友

分类: 服务器与存储

2012-09-11 10:34:50

平均存储器访问时间:
平均存储器访问时间=命中时间+缺失率*缺失代价

命中时间为cache命中时间

(1)平均存储器访问时间和处理器性能

假定所有的存储器停顿都是由cache缺失引起的.

cache命中的时钟周期数应该被认为是CPU执行时钟,命中时钟周期数包含在CPU执行时钟周期数中

cache的行为对于处理器的性能影响:
CPI表示每条指令执行的时钟数
CPI越低,一定的cache缺失时钟数对CPU时间的相对影响越大
在计算CPI时(考虑到cache缺失的),cache缺失代价用缺失时花费的处理器时钟周期数来度量
对于两台计算机存储层次结构相同,时钟频率较高的处理器,每次缺失会花费较多的周期.

cache对于具有低CPI和高时钟频率处理器的性能影响更为重要.

最终目标是:降低处理器执行时间

(2)缺失代价和乱序执行处理器

全部缺失延迟:没有竞争的延迟和有竞争的延迟

两个问题:
(i)在乱序处理器中,如何确定存储器操作的开始和结束时刻?
(ii)如何确定处理器中重叠的开始时刻

如果在一个周期内处理器不能完成最大可能数目的指令,则称处理器在这个时钟周期内停顿.

5 基本的cache优化机制

cache性能的框架:
平均存储器访问时间=命中时间+缺失率*缺失代价

将cache的优化策略归结为三类:
(1)降低缺失率,增大块容量,增加相联度
(2)减少缺失代价,多级cache,读缺失优先于写
(3)减少cache命中时间,避免索引时候的地址转换


降低缺失率的方法:
  • 强制缺失:对一个块的第一次访问一定不在cache中,所以该块必须被调入到cache中,也叫冷启动缺失或者首次访问缺失
  • 容量缺失:cache容纳不了一个程序执行所需的所有的块,将会发生容量缺失,某些块被丢弃,随后再次被调入
  • 冲突缺失:在直接映射与组相联中,有太多块被映射到同一个组中,则某一块呗丢弃,随后再次被调入
解决冲突缺失:
全相联能够解决冲突缺失,但是硬件昂贵,而且使得处理器的时钟频率变的很慢,导致系统的总性能降低.

解决容量缺失:
增大cache容量,若上层的存储器比程序所需要的空间小很多,则在层次结构之间传输数据会耗费很长时间,这个就是存储器之间出现的抖动现象

减少强制缺失:
增大块容量,若块大小发生改变,则会发生冲突缺失.

多级cache来降低缺失代价:
第一级cache可以小到足以与快速的处理器运行的时钟周期时间相匹配
第二级cache能够足够大到足以捕捉到对内存进行的大多数访问,从而有效的减少缺失代价

两级cache的平均存储器访问时间:
平均存储器访问时间=命中时间(L1)+缺失率(L1)*(命中时间(L2)+缺失率(L2)*缺失代价(L2))

局部缺失率:一级cache的缺失数除以cache的存储器访问总数,在一级cache中等于缺失率L1,在二级cache中,它等于缺失率L2
全局缺失率:一级cache的全局缺失率仍为缺失率L1,二级cache的全局缺失率为缺失率(L1)*缺失率(L2)

二级cache的局部缺失率比较大,一级cache存储的是最易命中的数据

二级cache比一级cache大很多时,全局cache缺失率与二级cache缺失率非常接近,二级cache局部缺失率是一级cache局部缺失率的一个函数,它将随着一级cache的变化而变化
全局cache缺失率才是更好的判断标准

一级cache的速度影响cpu的时钟频率,二级cache的速度仅仅影响一级cache的缺失代价

二级cache的容量:
一级cache的所有信息都可能会出现在二级cache上,二级cache应该比一级cache大得多,若二级cache只是稍大一点,那么局部缺失率将会很高

一级的cache中的数据总是包含在二级cache中,多级包含是存储器层次结构的自然属性,I/O与cache之间的一致性,就能够通过检查二级cache来确定

多级独占:
一级cache中的数据都不在二级cache中
一级cache的缺失只会使一级cache和二级cache中的块进行交换,而不是替换.该方法防止二级cache容量的浪费.
阅读(3338) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~