目录
4.3.3.2 全相联映射(associative mapping)
4.3.3.3 组相联映射(set-associative mapping)
4.1 计算机存储系统概述
4.1.1 存储系统的特性
1. 存储位置是指存储器处于计算机的内部或外部。内部存储器通常指主存。处理器有自己的局部存储器,它们以寄存器的形式存在。cache是内存存储器的另一种形式。
2. 三个与内部存储器相关的概念:
①字:存储器组织的“自然单元”。字长通常与一个整数的数据位数和指令长度相等。
②可寻址单元:在某些系统中,可寻址单元是字。在任何情况下,地址长度A和可寻址单元数N之间的关系为:。
③传输单元:对于主存储器,这是指每次读出或写入存储器的位数。
3. 不同种类的存储器之间的另一个区别就是数据单元的存取方法不同,存取方法包括如下四类:
- 顺序存储:存储器组织成许多称为记录的数据单元,它们以特定的线性序列方式存取。存储的地址信息用于分隔记录和帮助索引。如磁带机采用的是顺序存取方式。
- 直接存取:单个块或记录有基于物理存储位置的唯一地址。通过采用直接存取到达所需的块处,然后在块中顺序搜索、计数或等待,最终达到所要求的位置。如磁盘机系统采用的是直接存取方式。
- 随机存取:存储器中每一个可寻址的存储位置有唯一的物理编排的寻址机制。存取给定存储位置的时间是固定的,不依赖于前面存取的序列。因此,任何存储位置可以随机选取、直接寻址和存取。如主存和某些高速缓存系统采用随机存取方式。
- 关联存取:随机存取类的存储器,它允许对一个字中的某些指定位进行检查比较,看是否与特定的样式相匹配,而且能同时在所有字中进行。因此,字是通过它的内容而不是它的地址进行检索。如高速缓存采用关联存取方式。
4. 存储器三种性能参数
①存取时间(延迟):对于随机存取存储器,这是执行一次读或写操作的时间。对于非随机存取存储器,这是把读-写结构定位到所需要的存储位置所花费的时间。
②存储周期时间:主要用于随机存取存储器,它是存取时间+下一次存取开始之前所需要的附加时间。与系统总线有关。
③传输率:数据传入或传出存储单元的速率。对于随机存取存储器,它等于“1/周期时间”。而对于非随机存取存储器,有以下关系:
4.1.2 存储器层次结构
随着层次的下降,每位价格↓ ,容量↑ ,存取时间 ↑ ,处理器访问存储器的频率 ↓ 。
4.2 cache存储器原理
1. cache存储器的目的是使存储器的速度逼近可用的最快存储器的速度,同时以较便宜的半导体存储器的价格提供一个大的存储器容量。
2. cache/主存结构
3. cache读操作:当cache命中时,数据和地址缓冲器都不起用,通信只在处理器和cache之间进行,此时系统总线上没有信号传输。当cache未命中时,所需求的地址被加载到系统总线上,数据通过数据缓冲器提交给cache和CPU。
4.3 cache的设计要素
4.3.1 映射功能
通常有三种映射方法:
4.3.1.1 直接映射(direct mapping)
直接映射是最简单的映射技术,将主存中的每个块映射一个固定可用的cache行中。
直接映射可表示为:i = j mod m
其中,i = cahe 行号 j = 主存储器的块号 m = cache的行数
主存中的每一块映射到cache中的唯一行,然后接下来的m块依次映射到cache中相应位置。
直接映射基本映射机制如下:
为了访问cache,每一个主存地址可以看成是由三个域组成。最低的w位标识某个块中唯一的一个字或字节,剩余s位指定了主存2^s个块中的一个。cache逻辑将这s位转换为s-r位(最高位部分)的标记域和一个r位的行域,后者标识了m = 2' 个cache行中的一个。
- 地址长度 = (s + w)位
- 可寻址的单元数 = 2 ^ (s + w)个字或字节
- 块大小 = 行大小 = 2 ^ w个字或字节
- 主存的块数 = 2 ^ (s + w) / 2 ^ w = 2 ^ s
- cache 的行数 = m = 2 ^ r
- cache 的容量 = 2 ^ (r + w) 个字或字节
- 标记长度 = (s - r)位 为了与其他装入这一行的块区别开来
4.3.3.2 全相联映射(associative mapping)
允许每一个主存块装入cache中的任意行。
在这种情况下,cache控制逻辑将存储地址简单地表示为一个标记域加一个字域。标记域用来唯一标识一个主存块。为了确定某块是否在cache中,cache控制逻辑必须同时对每一行中的标记进行检查,看其是否匹配。
全相联映射基本映射机制如下:
- 地址长度 = (s + w)位
- 可寻址的单元数 = 2 ^ (s + w)个字或字节
- 块大小 = 行大小 = 2 ^ w个字或字节
- 主存的块数 = 2 ^ (s + w) / 2 ^ w = 2 ^ s
- cache 的行数 = 不由地址格式决定
- 标记长度 = s位
4.3.3.3 组相联映射(set-associative mapping)
直接映射和全相联映射优点结合
在组相联映射中,cache分为v个组,每组包含k个行,它们的关系为:m = v * k i = j mod v
其中,i = cache组号 j = 主存块号 m = cache 的行数 v = 组数 k = 每组中的行数
这被称为 k 路组相联映射。组相联映射cache在物理上是使用了v个全相联映射的cache。同时,它也可以看作为k个直接映射的cache的同时使用。每一个直接映射的cache称为路,包括v个cache行。
组相联映射基本映射机制如下:
- 地址长度 = (s + w)位
- 可寻址的单元数 = 2 ^ (s + w)个字或字节
- 块大小 = 行大小 = 2 ^ w个字或字节
- 主存的块数 = 2 ^ (s + w) / 2 ^ w = 2 ^ s
- cache 中每组的行数 = k
- 组数 = v = 2 ^ d
- cache 的行数 = m = kv = k * 2 ^ d
- cache 的容量 = k * 2 ^ d 字或字节
- 标记长度 = (s - d)位
4.3.2 替换算法
- LRU:替换掉那些在cache中最长时间未被访问过的块
- FIFO:替换掉那些在cache中停留时间最长的块
- LFU:替换掉cache中被访问次数最少的块
- 不基于使用情况的技术,它是在候选行中任意选取,然后进行替换。