《计算机组成原理》知识点---第4章 Cache存储

目录

 

4.1 计算机存储系统概述

4.1.1 存储系统的特性

4.1.2 存储器层次结构

4.2 cache存储器原理

4.3 cache的设计要素

4.3.1 映射功能

4.3.1.1 直接映射(direct mapping)

4.3.3.2 全相联映射(associative mapping)

4.3.3.3 组相联映射(set-associative mapping)

4.3.2 替换算法

 


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中被访问次数最少的块
  • 不基于使用情况的技术,它是在候选行中任意选取,然后进行替换。

 

猜你喜欢

转载自blog.csdn.net/weixin_43574277/article/details/106978571