系列文章目录
组成原理(一):基本概述
组成原理(二):总线
组成原理(三):存储器(上)
组成原理(三):存储器(中)
前言
哈工大计组网课笔记,教材是《计算机组成原理》(唐朔飞)
(三)高速缓冲存储器
1.概述
1.1.为什么用Cache?
由于CPU性能发展与存储器性能发展之间存在剪刀差,现阶段的CPU执行速度远大于一般主存(DRAM)存取速度,为了避免CPU出现“空等”现象,所以需要在CPU和主存之间加入一层容量小,速度高的Cache,CPU访问的的指令,大多能在Cache中取得。
程序访问的局部性原理:包括时间局部性和空间局部性。
- 时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。
- 空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是连续的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的。
所以,Cache与主存之间数据交换的单位是块。
1.2.Cache的工作原理
1.2.1.主存与缓存的编址
主存和Cache都分成大小相等的块,主存中有M块,Cache中有C块
(
M
>
>
C
)
(M >>C)
(M>>C)。主存的块内偏移地址位数决定了块的大小,块号的位数则决定了块的数量。而Cache的地址也分为缓存块号和块内地址,但是实际应用中,Cache的地址意义并不大(思考原因)。
一个块在内存和Cache中进行传送的时候是整体进行传送,块内字节的顺序不会发生任何变化,所以主存和Cache的块内偏移地址的值是完全相同的。
Cache上有一个标记,标记了主存块和Cache块之间的对应关系。即存储了此Cache块中存储的主存中的块的主存块号,当CPU给出一个内存地址,希望能在Cache中访问这个地址,首先就会确定这个块是否已经被送到了Cache当中,即比较给出的的地址的主存块号与Cache中的标记,如果和某一个Cache的标记相等,且该Cache块有效,则可直接从此Cache中获得想要访问的主存数据。
1.2.2.命中与不命中
主存中有M块,Cache中有C块
(
M
>
>
C
)
(M >>C)
(M>>C)。
命中:要访问的主存块已经调入缓存,CPU在缓存中能够取到相应得数据或指令,就称为命中。如果命中,则主存块与缓存块就建立了对应关系。
未命中:要访问的主存块没有调入缓存,CPU必须到主存中获得相应得数据或指令,就称为未命中。如果未命中,则主存块与缓存块未建立了对应关系。、
1.2.3.Cache的命中率
CPU欲访问的信息在Cache中的比率
KaTeX parse error: Expected '}', got 'EOF' at end of input: …\quad{N_2-未命中率}
命中率与Cache的容量与块长有关。
一般来说每块取4~8个字。块长取一个周期内从主存调出的信息长度
1.2.4.Cache-主存的效率
效率e与命中率有关
e
=
访问
C
a
c
h
e
的时间
平均访问时间
×
100
%
e = \frac{访问Cache的时间}{平均访问时间}\times{100\%}
e=平均访问时间访问Cache的时间×100%
设Cache命中率为
h
h
h,访问Cache的时间为
t
c
t_c
tc,访问主存的时间为
t
m
t_m
tm,则
e
=
t
c
h
×
t
c
+
(
1
−
h
)
×
t
m
×
100
%
e = \frac{t_c}{h\times t_c + (1-h)\times t_m}\times{100\%}
e=h×tc+(1−h)×tmtc×100%
可得
t
c
t
m
≤
e
≤
1
{\frac{t_c}{ t_m}}\leq e \leq 1
tmtc≤e≤1
注意:这里算平均访问时间,是在Cache与主存并行的情况下,如果先访问Cache,在Cache没有命中的的情况下再访问主存,这时平均访问时间的公式不再是上面那个。
1.3.Cache的基本结构
- 主存Cache地址映射变换机构
CPU发出一个地址,同时发给主存和主存cache地址映射变换机构,如果命中,就将主存地址转化为Cache地址(由于偏移地址(低位地址)一致,所以基本上是主存块号(高位地址)到Cache块号的转换),从cache存储体中找到对应的字,然后通过数据总线送到CPU,完成一次读写过程;如果没有命中,而应该从主存中取出字送给CPU,与此同时,如果cache中有空间可以装进,就将这个字所在的块拿到cache中。 - Cache替换机构
如果空间不够,不能装进cache,cache替换机构就将cache中不常用的块拿出,将该字的块替换进cache中。 - Cache存储体
1.4.Cache的读写操作
1.4.1.读操作
1.4.2.写操作
Cache与主存的一致性(重点)
-
写直达法(Write-through):
写操作时数据既写入Cache又写入主存,时刻保存Cache内容和主存内容一致,并且Cache块内容从Cache中退出的的时候,不需要对主存执行写操作,更新策略比较容易实现。写操作的的时间就是访问主存的时间
优点:Cache和主存一直保持一致
缺点:可能造成CPU对同一个内存单元反复写 -
写回法(Write-back):
写操作时只把数据写入Cache而不写入主存,当Cache块内容从Cache中退出时才写回主存,允许一段时间中,主存与Cache内容不一致
优点:修改数据只在Cache中修改速度快,减少了主存的写入操作
缺点:在多处理器的情况下,各个处理器有各自的Cache,内存的一个块在各个处理器的Cache中都有副本,这里科南出现各个副本之间的一致性问题。
1.5.Cahce的改进
-
增加Cache的级数
片载Cache(单一缓存)
片外Cache(二级缓存) -
统一缓存和分立缓存
统一缓存:数据与指令统一放入Cache----冯氏结构
分立缓存:Cache分为指令Cache和数据Cache
2.Cache-主存的地址映射
指主存当中的任意一块如果要加载到Cache当中的话,可以加载到那些块。
2.1.直接映射
主存当中任意一个给定的的块,只能映射(装载)到某一个指定的Cache块当中。
优点:成本低,速度快
存在问题:Cache利用率可能很低,相同编号的字块冲突可能性比较大,导致频繁替换降低命中率。
2.2.全相联映射
主存当中任何一个块可以被放入到Cache的任何一个块当中。
优点:Cache利用率高
存在问题:因为是全相联,所以在检验是否命中时,要将主存块号与Cache中所有块的标记进行比对,这个比较是同时进行的,电路比较复杂(成本高),速度比较慢。
参加比较的的位数也比较长,比较器的长度也会比较长。
2.3.组相联映射
某一个主存块只能映射到某一缓存组中的缓存块中
-
直接映射:某一主存块 j j j按照 2 Q 2Q 2Q映射到缓存的第 j m o d 2 Q j\bmod2Q jmod2Q组的指定块。
-
全相联映射:某一主存块 j j j可任意映射到缓存的任意块。
-
组相联映射:某一主存块 j j j按照 Q Q Q映射到缓存的第 i i i组的任意块。
如果将Cache中所有的块都分为一组,那么组相联就成了全相联,如果组相联中所有组都只有唯一的一块,那么组相联就成了直接映射。
这三种映射方式在不同层次的Cache当中作用是不同的,在靠近CPU层次Cache中就可以用直接映射,或者是组中数量少的组相联;在中间的一些层次,可以用组相联映射;距离CPU最远的Cache层次,据可以采用全相联模式。
3.替换算法
先进先出算法(FIFO)
近期最少使用算法(LRU)
辅助存储器(四)
1.概述
1.1.特点
不直接与CPU交换信息
1.2.磁表面存储器的技术指标
- 记录密度
道密度 D t D_t Dt:硬盘在径向方向上,单位长度有多少个磁道。
位密度 D b D_b Db:单位长度的磁道保存了多少位二进制信息。(同心圆越往外,位密度越低) - 存储容量
C = n × k × s n − 盘面 k − 磁道 s − 每个磁道的二进制信息 C = n \times k \times s \quad{n-盘面}\quad{k-磁道}\quad{s-每个磁道的二进制信息} C=n×k×sn−盘面k−磁道s−每个磁道的二进制信息 - 平均寻址时间
平均寻址时间 = 寻道时间+等待时间
辅存的速度 = 寻址时间+ 磁头读写时间 - 数据传输率
D r = D b × V ( V − 磁盘旋转速度) D_r = D_b \times V(V-磁盘旋转速度) Dr=Db×V(V−磁盘旋转速度) - 误码率
出错信息位数与读出信息的总位数的比值
2.磁记录原理
3.硬磁盘存储器
3.1.硬磁盘存储器的类型
- 固定磁头和移动磁头
- 可换盘和固定盘
3.2.硬磁盘存储器的结构
- 磁盘驱动器
- 磁盘控制器
- 盘片
- 由硬质铝合金材料组成