当前位置: 首页 > news >正文

计算机组成与体系结构:内存接口(Memory Interface)

目录

什么是内存接口 ?

为什么需要特别设计“接口”?

什么是 MIPS?为什么它和内存接口有关?

内存接口的两种访问方式

串行访问(Serial Access Model)

并行访问(Parallel Access Model)


什么是内存接口 ?

我们可以从最直觉的问题入手:

❓ CPU 要处理数据,那它是怎么和内存沟通、传输数据的?

这就像人要和外界沟通,需要“语言”和“通道”,那么 CPU 也需要某种“协议”或“机制”来访问 memory(内存)。这个“语言和通道”就是:

Memory Interface(内存接口)——它是连接 CPU 和 Memory(内存)之间的通信桥梁。

它解决的本质问题是:

CPU 访问数据的速度 vs 内存响应的速度 严重不匹配,怎么办?

为什么需要特别设计“接口”?

我们可以回到最基础的现实限制:

组件执行速度(Cycle)
CPU几 GHz(1 纳秒级)
Memory100 纳秒甚至更慢

于是你会发现:

❗ CPU 每执行一条指令,可能得等几十个时钟周期才能从内存中拿到数据!

那么问题来了:

怎么让 CPU 不至于“饿死在等待内存数据”时钟周期中?

这就是 Memory Interface(内存接口)设计的出发点。

什么是 MIPS?为什么它和内存接口有关?

我们先解释这个术语:

MIPS(Million Instructions Per Second)中文叫“每秒百万条指令数”,是衡量 CPU 执行速度的指标。

BUT❗ 注意:

MIPS 只反映 CPU 的潜力,不考虑它是否在等待内存!

所以现实中你可能看到:

CPU 有 2 GHz、理应执行 2 Billion 条指令/秒,但实际 MIPS 远低于理论值。

为什么?因为……

🔁 CPU 经常被 慢速 memory interface 拖慢了节奏。

这就说明:

内存接口的效率,直接影响 CPU 的真实性能表现(有效 MIPS)!

内存接口的两种访问方式

什么是 AMAT?

AMAT(Average Memory Access Time):平均内存访问时间,它是衡量 每一次访问内存时,CPU 平均等待的总时间。由于内存系统通常是多级的(multi-level memory hierarchy,多级内存层次结构),所以我们需要计算一个综合延迟。 

这两种公式,其实对应了两种不同的层级访问策略(memory access strategy)

并行访问(Parallel Access Model)

在这个模型下:

  • 所有层级同时开始访问(look-through),但只有命中最低层才使用它的数据。

  • 每次你 miss 上一层,就会把前面“浪费掉的等待时间”也算上。

  • H1​,H2​:第1、2级缓存的命中率(hit rate)

  • T1​,T2​,T3​:第1、2级缓存和主存的访问时间(access time)

注意这里每层访问时间是累加的,因为所有层是并发启动的,miss 时你还得等前面那几层“白白等的时间”。 

 

通俗解释:

你像是在同时发送3个邮件请求给不同的图书管理员:

  • 如果第一个管理员(L1)找到了,他最快回你;

  • 如果他没找到,而第二个找到了,你要等 L1 的时间 + L2 的时间;

  • 如果前两个都没找到,那你得等 L1 + L2 + 内存 的时间。

每一层你都等了一遍,结果可能还是没拿到你要的书。

 串行访问(Serial Access Model)

在这种模型下:

  • CPU 一级一级地访问内存层级:先查 L1 Cache → 如果 Miss 再查 L2 → 如果还 Miss 再查主存(Memory)。

  • 每次只访问一个层次,如果命中了,就不继续往下找。

通俗解释:

就像你要在一个大图书馆找一本书:

  • 你先去最近的书架(L1)找;

  • 找不到再去二楼(L2);

  • 如果还找不到,才去图书馆最深处(Memory)。

每次你只动一步,只有没找到才走下一步。

串行模型(Serial) 更接近实际硬件层级 Cache 的使用方式(大多数 CPU 是这样设计的);

并行模型(Parallel) 更适合某些流水线处理场景或预测式 prefetch 架构。

举例:

 


http://www.mrgr.cn/news/99261.html

相关文章:

  • (五)机器学习---决策树和随机森林
  • Kubernetes集群超配节点容量
  • el-select+vue-virtual-scroller解决数据量大卡顿问题
  • 深度学习3.5 图像分类数据集
  • Ubuntu下展锐刷机工具spd_dump使用说明
  • Transformer中Post-Norm和Pre-Norm如何选择?
  • 机器学习-08-推荐算法-案例
  • 《相对论中相对性原理的实验验证与分析》
  • 开源脚本分享:用matlab处理ltspice生成的.raw双脉冲数据
  • 若依框架免登陆、页面全屏显示、打开新标签页(看板大屏)
  • 从规则到大模型:知识图谱信息抽取实体NER与关系RE任务近10年演进发展详解
  • 单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day17
  • Transformer系列(三):编码器—解码器架构
  • GAIA-2:用于自动驾驶的可控多视图生成世界模型
  • Rust: 从内存地址信息看内存布局
  • [k8s实战]Containerd 1.7.2 离线安装与配置全指南(生产级优化)
  • STM32的启动方式
  • k8s 基础入门篇之开启 firewalld
  • 240422 leetcode exercises