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

Lecture 20

Back to Memory(回到内存基础)

1. 内存地址(Address)

• 主存储器的每个存储单元都有一个唯一的地址。

• 地址用于标识和访问内存中的特定位置。

2. 内存地址的重要性

• 存储容量越大,所需的地址位数(Address Width)越多。

最大内存长度(Maximal memory length) 由 地址宽度 (address width)决定。

Address Width(地址宽度)

1. 地址宽度的定义

• 地址宽度由以下因素决定:

CPU 的地址寄存器位数(例如 IP 或 MAR)。

地址总线的线路数量(Address Bus)。

2. 说明

• 地址宽度直接影响系统能够访问的最大内存范围。

• 例如,地址宽度是 32 位,则可以访问的内存范围为 个存储单元。

Address Width and Memory Length(地址宽度与内存长度的关系)

1. 不同地址宽度对应的最大内存容量

• 16 位地址:64 KB。

• 20 位地址:1 MB。

• 24 位地址:16 MB。

• 32 位地址:4 GB(常见于 Pentium 时代)。

• 64 位地址:> 17 亿 GB(适用于现代 64 位架构)。

2. 总结

• 地址宽度越大,系统能够访问的内存越多,但实际使用时可能受其他硬件限制。

Memory Parameters(内存参数)

• 图中展示了不同地址宽度下内存地址空间的表示方式。

• 例如:

• 16 位地址宽度可访问 个存储单元(64K)。

• 32 位地址宽度可访问 个存储单元(4G)。

2. 重要性

• 地址宽度决定了系统的寻址能力和最大内存容量。

Ideal Configuration(理想配置)

1. 32 位地址宽度的理想配置

• 32 位地址宽度的内存寻址范围是 4 GB。

• 图示显示了一个理想的内存系统,其中 CPU 通过 32 根地址线连接到一个 4 GB 的 SRAM 模块。

2. 理想状态

• 单个内存芯片负责整个地址空间。

• CPU 可以通过完整的地址线直接访问内存。

Not So Ideal in Practice(实际中的非理想情况)

1. 现实中的内存使用限制

• 即使有 4 GB 的地址空间,很多系统并未完全利用。

• 实际的内存芯片容量通常为 128 Mb、256 Mb 或 1 Gb,需要组合多个芯片来实现。

2. 示例

• 8 个 256 Mb 的芯片(chips)可以组合成一个 256 MB 的模块(module)。

• 存储器寻址不仅需要选择芯片,还需要选择芯片内的具体位置。

Memory Modules(内存模块)

1. SIMM 卡(Single Inline Memory Module)

• 容量:16 MB。

• 特性:

• 50 ns 的访问时间。

• 32 位数据宽度。

• 使用 72 个引脚。

• SIMM 是早期的内存模块设计,仅支持单侧接触。

2. DIMM 卡(Dual Inline Memory Module)

• 容量:64 MB。

• 特性:

• 100 MHz 的时钟频率。

• 64 位数据宽度。

• 使用 168 个引脚。

• DIMM 是现代内存模块设计,支持双侧接触,提供更高的性能。

Memory Mapping(内存映射)

1. 内存映射的定义

• 内存映射指的是将地址空间映射到物理内存模块或芯片上。

• 当 CPU 发送地址时:

• 地址的一部分用于定位正确的内存芯片。

• 另一部分用于确定芯片内的具体地址。

2. 内存映射表(Memory Maps)

• 系统如何将地址映射到特定存储位置由内存映射表决定。

Memory Map for a Small System(小型系统的内存映射表)

1. 示例表格

• 包括设备(PROM 和 RAM)的容量、引脚数量、地址范围等。

2. 内存分配

• 每个设备分配一个独特的地址段。

• 通过地址总线上的特定信号选择芯片并访问数据。

Memory Address Decoding(内存地址解码)

1. 解码需求

• 通常内存芯片的宽度与地址总线宽度不匹配。

• 例如:

• CPU 可能发送 32 位地址。

• RAM 可能只接收 24 位地址。

2. 解码器电路(Memory Address Decoding circuit):

• 使用专门的 内存地址解码器 电路完成必要的解码。

• 该电路将高位地址信号分配给特定芯片。

Memory Levels(内存层次)

1. 内存的层次结构

寄存器(Registers)

• 位于 CPU 内部,访问速度最快,容量最小。

缓存(Cache Memory)

• 包括 L1 和 L2 缓存,用于快速存取数据。

主存(Main Memory)

• 通常指 RAM,用于存储当前运行程序和数据。

大容量存储(Mass Storage)

• 如硬盘,用于存储永久性数据。

Why We Need Memory Levels(为何需要内存层次)

1. 原因

适应更快的 CPU 需求

• 高速缓存和寄存器弥补了 CPU 和内存之间的速度差距。

降低系统成本

• 高速内存(如缓存)成本高,通过分层设计可减少整体开销。

满足软件系统扩展的需求

• 现代软件需要大量存储器和灵活的存储解决方案。

以下是逐页内容详细解析:

Registers(寄存器)

1. 定义

• 寄存器是处理器内部的核心部分,作为最小单位的存储器单元

• 用于暂时存储处理器正在使用的数据。

2. 特性

访问速度非常快:通常只需几纳秒。

容量有限:一般只有几十个寄存器,每个寄存器可以是 32 位、64 位或 80 位。

3. 作用

• 在计算过程中,存储操作数、中间结果或地址。

Cache Memory(缓存内存)

1. 定义

• 缓存是比主存更快的存储器,位于 CPU 和主存之间。

• 通常由速度快但更昂贵的 SRAM(静态 RAM) 组成。

2. 功能

• 存储主存的一部分数据副本。

• 加快访问活跃数据(代码或数据块)的速度。

3. 工作方式

• CPU 首先检查缓存,若找到所需数据则称为 缓存命中

• 如果没有找到,则从主存中加载所需数据到缓存中。

Levels of Cache(缓存的层次)

1. 缓存层次结构

一级缓存(L1 Cache)

• 直接位于 CPU 内部。

• 容量较小(8 KB 到 64 KB),但速度最快。

二级缓存(L2 Cache)

• 位于 CPU 和主存之间。

• 容量较大(128 KB 到 512 KB),但速度比 L1 缓慢。

2. 层次化的目的

• 提高数据访问效率,减小与主存之间的性能差距。

Localisation of Access(访问局部性)

1. 定义

内存访问局部性 是缓存工作原理的核心概念。

• 指计算机倾向于在一段时间内访问存储器的某些区域。

2. 两种局部性

时间局部性:最近被访问的数据很可能在短期内再次被访问。

空间局部性:与当前访问地址相邻的地址很可能在短期内被访问。

3. 实现方法

• 将需要频繁访问的代码或数据加载到靠近 CPU 的缓存中。

Why Localisation of Access Works(为何访问局部性有效)

1. 原因

编程习惯:程序员通常会将相关数据项聚集在数组或记录中。

重复模式:程序中经常包含循环或函数调用等重复结构。

编译器优化:编译器会尝试将代码组织得更高效。

Cache Memory and Cache Control Unit(缓存内存与缓存控制单元)

1. 结构

CPU:从缓存中获取数据,若命中则直接使用,否则通过缓存控制器访问主存。

缓存控制单元:管理缓存与主存的数据交换。

系统总线:连接 CPU、缓存、主存和其他 I/O 子系统。

2. 示例配置

• 256 KB 缓存,访问时间 10 ns。

• 64 MB 主存,访问时间 60 ns。

3. 工作原理

• 当 CPU 请求数据时,优先检查缓存。

• 如果缓存中没有,则从主存中加载数据到缓存,供 CPU 使用。

Memory hierarchy

存储器越接近 CPU,访问速度越快,但容量越小。

Memory Hierarchy Characteristics(存储器层次特性)

1. 层次结构的趋势

向下层次

• 容量增加。capacity

• 访问时间增加。access time

• 处理器对存储器的访问频率减少。

• 每位的成本降低。

• 使用汇编代码,依次读取数组元素并计算总和。

2. 局部性分析

时间局部性

• 程序会多次访问数组内的同一元素或附近的元素。

空间局部性

• 数组内的元素存储在相邻地址中,因此连续访问会利用内存的空间局部性。

 

Q&A 1 - Which has the fastest access?

1. 问题

• 以下哪个具有最快的访问速度?

• A. Register

• B. Cache

• C. Disk

• D. Tape

2. 答案

A. Register

Q&A 2 - Which is most expensive?

1. 问题

• 以下哪个存储器的成本最高(每位成本)?

• A. Register

• B. Cache

• C. Disk

• D. Tape

2. 答案

A. Register

问题

• 给定以下组件,形成一个合理的存储器层次结构,以确保良好的成本和速度折中。

• Cache(缓存)

• Disk(磁盘)

• RAM(主存)

答案

• 合理的存储器层次结构如下:

1. Cache(缓存)

• 访问速度最快,成本最高。

• 用于存储经常使用的数据。

• 位于 CPU 和 RAM 之间。

2. RAM(主存)

• 访问速度次于缓存,成本适中。

• 用于存储当前程序运行所需的数据和代码。

3. Disk(磁盘存储)

• 访问速度最慢,成本最低。

• 用于长期存储大容量数据。

局部性的时间属性(Temporal Locality)

问题

局部性可以是时间局部性,这意味着最近使用过的数据比其他数据更可能被访问。(T 或 F)

答案

T(True)

解析

时间局部性

• 描述程序倾向于多次访问最近使用的数据。

• 例如,在循环中访问的变量会在每次循环迭代中重复被访问。

 


http://www.kler.cn/a/460758.html

相关文章:

  • CentOS — 压缩解压
  • 分数阶傅里叶变换代码 MATLAB实现
  • 神经网络入门实战:(二十三)使用本地数据集进行训练和验证
  • 文件本地和OSS上传
  • 全新免押租赁系统助力商品流通高效安全
  • stm32 智能语音电梯系统
  • Django 中数据库迁移命令
  • 基于SpringBoot的宠物寄养系统的设计与实现(源码+SQL+LW+部署讲解)
  • 一起学Git【第七节:查看文件以及文件的删除】
  • 文献阅读分享:强化学习与大语言模型结合的推荐系统LEA
  • 封装echarts成vue component
  • 拉取 Docker 镜像 失败问题
  • Leetcode 3404. Count Special Subsequences
  • 边缘AI计算怎么回事
  • 【paddle】初次尝试
  • jenkins集成工具(一)部署php项目
  • ROS2软件架构全面解析-学习如何设计通信中间件框架
  • SCAU期末笔记 - 计算机系统基础考纲习题
  • docker和k8s实践
  • SAP PP CSAP_MAT_BOM_MAINTAIN BOM ECN 删除组件
  • docker-compos mysql5.7主从配置
  • Python入门:9.递归函数和高阶函数
  • 2020最新整理版SpringBoot 面试题
  • 【C++】2029:【例4.15】水仙花数
  • Python列表推导常见问题解析:高效编程的陷阱与避坑指南
  • DeepSeek V3“报错家门”:我是ChatGPT