当前位置: 代码网 > 科技>电脑产品>CPU > 让你轻松搞懂Cache(高度缓存存储器):计算机组成原理超详解

让你轻松搞懂Cache(高度缓存存储器):计算机组成原理超详解

2024年07月31日 CPU 我要评论
Cache是一种位于CPU和主存之间的小容量、高速度的存储器。其主要作用是弥补CPU与主存之间的速度差异,从而提高系统整体性能。原因:CPU主频提升会带动系统性能的改善,但内存存取速度较低会导致CPU等待,降低处理速度,浪费CPU能力。解决方法:在慢速的DRAM和快速的CPU之间插入一至多级的速度较快、容量较小的SRAM起到缓冲作用,使CPU能够快速存取主存中的数据,而不使系统成本上升过高,这就是Cache的作用。地址映射。


在计算机体系结构中, cache是提升系统性能的重要组件。对于基础小白来说,理解cache的工作原理和相关概念至关重要。本文将以简洁明了的方式,详细介绍cache的基本原理、工作机制和优化方法,帮助读者快速掌握这一关键知识点。

一. 为什么要使用cache(什么是cache)?

cache是一种位于cpu和主存之间的小容量、高速度的存储器。其主要作用是弥补cpu与主存之间的速度差异,从而提高系统整体性能。

  • 原因:cpu主频提升会带动系统性能的改善,但内存存取速度较低会导致cpu等待,降低处理速度,浪费cpu能力。
  • 解决方法:在慢速的dram和快速的cpu之间插入一至多级的速度较快、容量较小的sram起到缓冲作用,使cpu能够快速存取主存中的数据,而不使系统成本上升过高,这就是cache的作用。
    在这里插入图片描述

二. cache采用的程序访问的局部性原理

程序访问的局部性是指在一个较短的时间间隔内,程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。

  • 局部性原理:对局部范围的存储器地址频繁访问,而对其他范围的访问甚少。
  • cache利用局部性原理:将常用的数据和指令从主存调入cache,供cpu在一段时间内使用,从而提高访问速度。

三. cache的工作原理

1. 主存地址的划分

为了方便比较和快速查找,cache和主存都被分成了若干大小相同的,每块包含若干个字。
在这里插入图片描述

  • 主存块地址:标识cpu访问的主存单元所在的主存块号。
  • 块内偏移地址:表示要访问的单元在某块的偏移值。
  • 索引:指示cpu访问cache存储体的范围。
  • 标记:用于判断内容是否在cache中。
2. cache的基本结构

cache的结构主要包括三部分:

  • 数据存储体:存放主存数据的副本。
  • 标记存储体:存放标记,不同映射方式标记位数不同。
  • 有效位:标识存放在cache中的数据是否有效。
3. cache的组织及cpu访问cache的流程

cache命中

  1. 对cpu访问存储器的地址进行逻辑划分,得到标记、索引、块内地址。
  2. 按索引字段的值从cache标记存储体的特定单元读出标记值,并比较。
  3. 若命中,则形成cache地址。
  4. 访问cache数据存储体,读取数据送至cpu。

cache不命中

  1. 对cpu访问存储器的地址进行逻辑划分,得到标记、索引、块内地址。
  2. 按索引字段的值从cache标记存储体的特定单元读出标记值,并比较。
  3. 若不命中,则进入cache替换策略。
  4. 调入数据块,更新标记存储体,送数据至cpu。

四. cache的命中率计算详解

命中率 h:
h=nc/(nc+nm

  • 命中率:cache命中的次数占总访问次数的比例。
  • 丢失率:1−h
  • 平均访问时间 ta
    ta=h⋅tc+(1−h)⋅tm

举例说明
假设一个程序访问内存100次,其中70次命中cache,30次不命中。cache的访问时间为10纳秒,主存的访问时间为50纳秒。

  • 命中率 h:
    h=70/100=0.7
  • 平均访问时间 ta
    ta=0.7⋅10+(1−0.7)⋅50=7+15=22 纳秒

五. cache的地址映射及变换方法

1. 什么是cache的地址映射?

地址映射是指将主存地址空间映射到cache的地址空间,即将存放在主存中的程序或数据按照某种规则装入cache,并建立两者之间地址的对应关系。

2. 什么是cache的地址变换?

地址变换是指在程序运行时,根据地址映像函数将主存地址变换成cache地址。

3. 三种地址映射方法:
  1. 全相联映射:主存中的任何一个块都可以映射到cache中的任何一个位置。这种方式灵活性高,但查找速度慢。
  2. 直接映射:主存中的每一个块固定映射到cache中的某一个位置,查找速度快,但灵活性差。
  3. 组相联映射:综合了全相联映射和直接映射的优点,将cache分成若干组,每组内采用全相联映射,组间采用直接映射,既有一定的灵活性,又能保持较高的查找速度。

六. cache的三种替换算法

1. 为什么需要三种替换算法?

不同的替换算法在实现复杂度、命中率提升和硬件开销等方面各有优劣。通过选择合适的替换算法,可以在不同应用场景下优化cache性能。

2. 三种替换算法
  1. 先进先出(fifo)

    • 原理:选择最早调入cache的字块进行替换。
    • 优点:实现简单,开销小。
    • 缺点:未考虑数据的访问频率,命中率较低。
  2. 近期最少使用(lru)和最不经常使用(lfu)

    • lru:将长时间未被访问的行换出,能有效提高命中率。
    • lfu:将一段时间内被访问次数最少的行换出,但无法严格反映近期访问情况。
  3. 随机法

    • 原理:随机确定被替换的块。
    • 优点:实现容易。
    • 缺点:命中率不稳定,有时会降低命中率。

结论

通过详细分析cache的工作原理、地址映射方法和替换算法,本文帮助读者深入理解了cache在计算机系统中的重要作用及其实现机制。cache通过利用程序访问的局部性原理,有效提高了cpu访问存储系统的速度,从而提升了计算机系统的整体性能。

计算机原理复习目录汇总

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com