计算机组成原理day3

Cache的原理

Cache的工作原理

Cache原意为高速缓存,它是为了解决主存速度跟不上CPU速度的问题而诞生的。在主存内,会存在2^n个可编址的字组成,每个字有唯一的n位地址。而主存与Cache需要进行映射,单纯这样是映射不过去的,因此将主存的内存,切分块,每个块的大小相同,且包含若干个字。具体如下图:
在这里插入图片描述
Cache的效率,受两个重要因素影响

  • 容量
  • 块长

这两个因素在实际描述中,统称为“命中率”,也就是使用“命中率”来衡量Cache的效率,命中率的解释是指:CPU要访问的信息已在Cache内的比率。
在这里插入图片描述

Cache的基本结构

在这里插入图片描述

Cache存储体

Cache存储体以块为单位与主存交换信息,加速Cache与主存之间的调动,主存大多采用多提结构,且Cache访存的优先级最高。

地址映射变换机构

地址映射变换机构是将CPU送来的主存地址转换为Cache地址。

替换结构以及相关算法

当Cache满了的时候,数据无法继续往cache里面写,怎么办?这时候需要用到替换结构,当数据继续写入的时候,替换结构会通过一定的算法,将一部分的块移入到主存里面。(注:其实在实际编程中,用户是不知道Cache的块是否已经满了,因为将主存块调入Cache的任务完全由机器硬件自动完成的)。
相关的替换结构的算法(替换策略):

  • 先进先出(FIFO)
  • 近期最少使用(LRU)
  • 随机法

Cache的读写操作

在这里插入图片描述
Cache的读写操作,如上图所示。读操作其实不太复杂,主要是寻址,写操作比较复杂一点,且写操作还有两种方法可用:

  • 写直达法
  • 写回法

这两种方法都各有特色,选择合适的就行。

Cache的改进

其实Cache刚出来的时候,只有一级的缓存,但后来,普遍采用多Cache,主要有两个原因:

  • 增加Cache的级数
  • 将统一的Cache变成分立的Cache
    在这里插入图片描述

单一缓存和两级缓存

顾名思义,单一缓存就是在CPU与主存之间,只建立一级的缓存,一般来说,这个缓存会直接设计在芯片上,实际的如STM32H7等芯片,带有内部Cache缓存的。但是如果芯片太高级,一级缓存不足以满足要求时,就会在片外再加入一片缓存,这时候讲片内的称为L1(一级缓存),片外的称为L2(二级缓存)。

统一缓存和分立缓存

  • 统一缓存:指令和数据都存放在同一缓存内的Cache
  • 分立缓存:是指指令和数据分别存放在两个缓存中

因此,一个称为指令Cache,一个称为数据Cache

Cache地址映射

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42312125/article/details/107413883