计算机组成原理学习笔记——高速缓冲存储器Cache

本文详细介绍了缓存(Cache)的原理,包括为何使用Cache、Cache的工作原理、基本结构、读写操作以及改进方法。同时,深入探讨了Cache主存的地址映射方式,包括直接映射、全相联映射和组相联映射,以及替换算法如FIFO、LRU和LFU。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.0 概述

1.1 为什么用Cache?

我在前面总结存储器的时候有写到过出现Cache的背景,因为CPU发展的速度比存储器更新迭代的速度快的多得多,为了避免CPU“空等”的现象,我们在CPU和内存之间加入一个容量小速度快的存储设备,这个存储设备就是cache,是由静态RAM组成
在这里插入图片描述
程序访问的局部性原理

程序局部性原理,是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于复程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。
程序局部性制包括程序的时间局部性和程序的空间局部性。

  1. 程序的时间局部性: 是指程序即将用到的信息可能就是目前正在使用的信息。
  2. 程序的空间局部性: 是指程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临近。

cache和主存之间进行的数据交换是一个‘块’,这个‘块’中既包含了正在使用的指令和数据,也包括了相邻的指令和数据。

1.2 Cache的工作原理

(1)主存和缓存的编址及工作原理
下面这两个图,左侧是主存储器的结构,右侧是cache存储器的结构。
在这里插入图片描述
我们把主存储器和cache分成大小相等的’块‘,分别是M块和C块,cache的容量要远远小于主存的容量,M>>C。

实际应用当中cache地址的意义并不大,也不需要实际去形成cache的地址。
一个块在主存和cache之间进行传送的时候是整体进行传送的,块内字节的顺序不会发生任何变化,所以主存的块内地址部分和cache的块内地址部分的值是完全相同的。

cache结构上的标记部分,实际上标记的是对应关系,如果一个主存块要调入到cache当中,那就可以把主存块号写到标记当中,将来CPU给出一个内存的地址,希望可以在cache当中访问到这个地址那首相需要确定的是这个块是否已经被送到了cache当中,那么他就拿给出地址的主存块号和cache当中的标进行比较,如果和某一个标记正好相等,并且这个cache块是有效的,那么这个块内就保存了他要在内存中访问的信息,就可以直接从cache当中获取这些信息,那么它的速度就会得到很大的提高。

(2) 命中与未命中

上面我们写道,缓存共有C块,主存共有M块, M>>C
在CPU访问主存的时候,如果要访问的块已经放到了缓存当中,在缓存当中能够取到相

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值