计算机组成原理之高速缓存(重要点)

这一篇也是计算机组成中比较重要的概念,高速缓存。

上一篇已经讲了存储层次结构,接下来看看高速缓存的原理。

Cache取回数据时并不只是取回CPU要求的单个数据,而是取回一个数据块Block,其实这是一个预期的行为,比如一般我们

访问数组下标为1的数据时,接下来大可能继续访问下标2,3……的数据

另外频繁被访问的数据也会在Cache中被缓存下来 

 这是Cache的访问过程,看起来非常像我们写的程序逻辑判断。。。

  上图中衡量高速缓存的是平均访问时间=命中时间+失效代价X失效率

  降低平均访问时间也是从这三个参数入手设计,然而实现目标总没有那么十全十美,比如想让命中时间降低,需要让缓存容量减小,

这样能存下的缓存数据就减少了,失效率也会上去。

  需要知道的是指令和数据以前都是在内存中,但是指令和数据的访存时间差距却很大,一般指令访存的平均时间比数据小很多,比如

厨师现在知道了下一个菜是炒番茄鸡蛋,但是收到指令很久才有切好的番茄送过来,因此现代CPU大多数将指令和数据分放在两个独立的

Cache中,避免空间上相互影响。

  下图是Corei7的缓存设计。其中路组相联指的是高速缓存中的相同地址头的存放策略。比如编号为1的房间现在放着数据A,现在需要

数据B,取回来后编号也是1,那么是增加一个房间呢还是替换编号1房间的数据A呢,很显然,这又是个相互制约的设计

 

 关于Cache的写策略,只能从字面意思上去理解,具体的怎么设置尚不清楚

 

posted @ 2018-09-12 22:09  鼠标的博客  阅读(775)  评论(0编辑  收藏  举报