博客
关于我
嵌入式系统设计师学习笔记⑥:存储器的层次架构及Cache详解
阅读量:392 次
发布时间:2019-03-05

本文共 972 字,大约阅读时间需要 3 分钟。

嵌入式系统设计师学习笔记:存储器的层次架构及Cache详解

存储器被组织成金字塔形的层次结构,自上而下依次变得更慢、访问效率更低、容量更大、每字节的造价更便宜。其所处的层数从高到低分别为:

  • CPU寄存器(最快,但容量最少)
  • 缓存(速度较快)
  • 主存(速度较慢)
  • 磁盘(速度较慢,容量大)
  • CD-ROM/Disk(速度更慢,容量大)
  • 存储设备(速度最慢,容量更大)

Cache概述

Cache是CPU与主存储器之间的缓冲器,主要功能是解决“冯·诺依曼瓶颈”问题,通过提高数据传输效率来优化系统性能。其核心原理解决程序的时间局部性和空间局部性。以下是Cache的基本组成和相关概念:

局部性原理

  • 时间局部性:程序运行中,如果某个存储项被访问过,未来一段时间内它很有可能再次被访问。
    例如:循环变量i在短时间内被多次使用。
  • 空间局部性:在程序运行过程中,某个存储项被访问后,其在内存中的相邻区域很有可能在短时间内被访问。
    例如:数组的元素按物理存储顺序连续排列,相邻元素的访问频率较高。

Cache的命中率直接决定了系统性能。在读操作中,Cache命中时间远小于失效损失时间。因此在设计Cache时,需要尽量减少失效率,而提高命中率。

Cache参数

  • 块(Line):Cache数据交换的最小单位。
  • 命中(Hit):在Cache中找到所需数据的操作。
    命中率(Hit Rate) = 命中次数 / 总访问次数。
  • 失效(Miss):需要在更慢的级别(如主存)中查找数据。
    失效率(Miss Rate) = 1 - 命中率。
  • 置换算法:根据程序需求动态替换Cache中的数据块,影响命中率。

Cache地址映像

Cache地址映像是通过硬件自动实现的。以下是Cache地址变换的几种常见方式:

常见的地址映像和变换方式

  • 直接映像

    • 主存与Cache按块一一映射,主存的块只能映射到Cache中的特定块。
    • 地址变换电路简单,适合小容量Cache。
  • 组相联映像

    • 主存的任意块可以映射到Cache中的任意块地址。
    • 适用于大容量Cache,空间利用率高,但实现较为复杂。
  • 全相联映像

    • Cache分成多个组,每个组内采用直接映像方式,组间采用全相联镜像。
    • 这是一个折中方案,成本比全相联镜像低。
  • 通过选择合适的镜像方式,可以在实现复杂度和命中率之间取得最佳平衡。

    转载地址:http://jmvzz.baihongyu.com/

    你可能感兴趣的文章
    使用async、await改善异步代码
    查看>>
    java 多态类型转换
    查看>>
    (C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
    查看>>
    HTML 和 CSS 简单实现注册页面
    查看>>
    趣谈win10常用快捷键
    查看>>
    IDEA出现问题:Received fatal alert: protocol_version 解决方案
    查看>>
    Airtest自动化测试 Docs airtest.core.android package
    查看>>
    11.2.6 时间值的小数秒
    查看>>
    Redis源码分析(七)--- zipmap压缩图
    查看>>
    【MySQL】(九)触发器
    查看>>
    Oracle 11G环境配置
    查看>>
    【Python】(十二)IO 文件处理
    查看>>
    【Oozie】(三)Oozie 使用实战教学,带你快速上手!
    查看>>
    师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
    查看>>
    C语言的数值溢出问题(上)
    查看>>
    8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
    查看>>
    vue项目通过vue.config.js配置文件进行proxy反向代理跨域
    查看>>
    android:使用audiotrack 类播放wav文件
    查看>>
    聊聊我的五一小假期
    查看>>
    数据库三个级别封锁协议
    查看>>