计算机组成与体系结构:内存接口(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)

串行访问(Serial Access Model)

在这种模型下:

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

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

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

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

  

通俗解释:

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

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

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

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

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

并行访问(Parallel Access Model)

在这个模型下:

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

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

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

 

通俗解释:

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

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

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

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

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

 

 

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试(2025)—— Spring MVC

什么是Spring MVC Spring MVC 是 Spring 框架的一个 基于 Java 的 Web 开发模块,它实现了 MVC(Model-View-Controller)架构模式,用于构建灵活、松耦合的 Web 应用程序。 它是 Spring 生态的核心组件之一,通过简化 HTT…

天翼云手机断开连接2小时关机

2025-04-21 天翼云手机断开连接2小时自动 天翼云手机 4元1个月 天翼云手机永不关机 天翼云手机不休眠 天翼云手机断开连接时,界面显示:离线运行,2小时后自动关机 电脑每小时自动连接一次 手机每小时自动连接一次

Redis——数据结构

目录 1.动态字符串SDS 1.1SDS底层源码 1.2 SDS动态扩容 1.3动态字符串SDS优点 2.IntSet 2.1底层结构 2.2有序性 2.3.IntSet结构扩容 2.4总结 3.Dict 3.1底层结构 3.2.Dict扩容 3.3Dict收缩 3.4.Dict的rehash 1.分配空间 2. 设置 rehashidx 3. 渐进式 rehash…

C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

LeetCode算法题(Go语言实现)_54

题目 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success &a…

内网穿透快解析免费开放硬件集成SDK

一、行业问题 随着物联网技术的发展,符合用户需求的智能硬件设备被广泛的应用到各个领域,而智能设备的远程运维管理也是企业用户遇到的问题 二、快解析内网穿透解决方案 快解析是一款内网穿透产品,可以实现内网资源在外网访问,…

Python+Word实现周报自动化的完整流程

一、技术方案概述 自动化报表解决方案基于以下技术组件: Python 作为核心编程语言python-docx 库用于处理 Word 文档pandas 库用于数据处理和分析matplotlib 或 plotly 库用于数据可视化Word 模版作为报表的基础格式 这种方案的优势在于:保留了 Word 文…

elastic/go-elasticsearch与olivere/elastic

在 Go 语言中,与 Elasticsearch 交互的客户端库有多种选择,其中 github.com/elastic/go-elasticsearch/v8 和 github.com/olivere/elastic/v7 是两个常用的库。这两个库的功能和用途有一些差异,以下是它们的详细对比: 1. github.c…

deepseek + kimi制作PPT

目录 一、kimi简介二、deepseek生成内容三、生成PPT四、编辑PPT 一、kimi简介 kimi是一款只能ppt生成器,擅长将文本内容生成PPT。 在这里,​​DeepSeek 负责内容生成与逻辑梳理​​,​​Kimi 优化表达与提供设计建议​​。 二、deepseek生…

【八大排序】冒泡、直接选择、直接插入、希尔、堆、归并、快速、计数排序

目录 一、排序的介绍二、排序算法的实现2.1 直接插入排序2.2 希尔排序2.3 直接选择排序2.4 堆排序2.5 冒泡排序2.6 快速排序2.7 归并排序2.8 比较排序算法的性能展示2.9 计数排序 个人主页<— 数据结构专栏<— 一、排序的介绍 我们的生活中有很多排序&#xff0c;比如像…

linux 查询目录文件大小

​ 在 Linux 系统中&#xff0c;准确地掌握目录和文件的大小对于磁盘空间管理至关重要。​本文将详细介绍如何使用 du&#xff08;disk usage&#xff09;命令逐层查看目录和文件的大小&#xff0c;并结合 sort 命令对结果进行排序&#xff0c;以便有效地识别和管理占用…

如何简单几步使用 FFmpeg 将任何音频转为 MP3?

在多媒体处理领域&#xff0c;FFmpeg 以其强大的功能和灵活性而闻名。无论是视频编辑、音频转换还是流媒体处理&#xff0c;它都是专业人士和技术爱好者的首选工具之一。在这篇文章中简鹿办公将重点介绍如何使用 FFmpeg 进行音频格式转换&#xff0c;提供一些常用的转换方式&am…

通信信号分类识别

通信信号分类识别 AlexNet网络识别InceptionV3、ResNet-18、ResNet-50网络识别 采用短时傅里叶变换将一维信号转换为二维信号&#xff0c;然后采用经典神经网络进行识别 支持识别BASK,BFSK,BPSK,QPSK,8PSK,QAM和MSK。 AlexNet网络识别 在这里插入图片描述 InceptionV3、Re…

TPshop项目-服务器环境部署(部署环境/服务,检查部署环境/服务,上传TPshop项目到服务器,配置文件的更改,安装TPshop)

目录 部署环境/服务&#xff0c;检查部署环境/服务 检查部署环境/服务 上传TPshop项目到服务器&#xff0c;配置文件的更改&#xff0c;安装TPshop 部署环境/服务&#xff0c;检查部署环境/服务 一般部署环境&#xff0c;会根据开发写的部署文档来一步一步的部署环境。 部署…

C++入门基础:命名空间,缺省参数,函数重载,输入输出

命名空间&#xff1a; C语言是基于C语言的&#xff0c;融入了面向对象编程思想&#xff0c;有了很多有用的库&#xff0c;所以接下来我们将学习C如何优化C语言的不足的。 在C/C语言实践中&#xff0c;在全局作用域中变量&#xff0c;函数&#xff0c;类会有很多&#xff0c;这…

缓存 --- Redis基本数据类型

缓存 --- Redis基本数据类型 Redis Intro5种基础数据类型 Redis Intro Redis&#xff08;Remote Dictionary Server&#xff09;是一款开源的高性能键值存储系统&#xff0c;常用于缓存、消息中间件和实时数据处理场景。以下是其核心特点、数据类型及典型使用场景&#xff1a; …

Redis命令——list

列表类型是用来存储多个有序的字符串&#xff0c;列表中的每个字符串称为元素&#xff08;element&#xff09;&#xff0c;⼀个列表最多可以存储个元素 在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&#xff08;pop&#xff09;&#xff0c;…

Android Jetpack Compose 状态管理解析:remember vs mutableStateOf,有啥不一样?为啥要一起用?

&#x1f331;《Jetpack Compose 状态管理解析&#xff1a;remember vs mutableStateOf&#xff0c;有啥不一样&#xff1f;为啥要一起用&#xff1f;》 在 Jetpack Compose 的世界里&#xff0c;UI 是响应式的。这意味着当状态发生变化时&#xff0c;UI 会自动重组&#xff0…

使用 PCL 和 Qt 实现点云可视化与交互

下面我将介绍如何结合点云库(PCL)和Qt框架(特别是QML)来实现点云的可视化与交互功能&#xff0c;包括高亮选择等效果。 1. 基本架构设计 首先需要建立一个结合PCL和Qt的基本架构&#xff1a; // PCLQtViewer.h #pragma once#include <QObject> #include <pcl/point…

mybatis plus打印sql日志到指定目录

1、mybatis plus打印sql日志 参考文档&#xff1a;mybatis plus打印sql日志_mybatisplus日志打印-CSDN博客 2、修改 修改InfoLevelLogger Override public void debug(String s) {// 修改这里logger.info(s);log.debug(s); } 增加&#xff1a;log.debug(s); 修改logback.x…