第3章 存储器系统 知识点归纳(计算机组成原理)
3.3 动态随机存取存储器(DRAM)
3.3.1 DRAM存储元的工作原理
DRAM靠电容存储电荷表示0/1;电容会漏电,所以必须刷新。
• 有电荷:1;无电荷:0
• 结构简单,集成度高、功耗低;速度比SRAM慢
• 对比SRAM:SRAM用触发器,不需要刷新,速度更快、成本高
3.3.2 DRAM芯片的逻辑结构
• 地址线分行地址、列地址,分时送入(行地址选通\overline{RAS}、列地址选通\overline{CAS}),减少引脚数量
• 内部:行译码、列译码、存储阵列、读写电路、刷新控制电路
• 容量表示:行地址数 × 列地址数 × 位宽
3.3.3 DRAM读/写时序
1. 先送行地址,\overline{RAS}有效,锁存行地址,选中一行
2. 再送列地址,\overline{CAS}有效,锁存列地址,选中存储单元
3. 由WE信号控制读/写:
◦ WE=1:读,电容电荷读出、放大再生
◦ WE=0:写,给电容充/放电
读出是破坏性读出,读完必须重写再生
3.3.4 DRAM的刷新操作
电容漏电,信息会丢失,定时给电容补充电荷就是刷新。
• 刷新方式3种:
1. 集中刷新:集中一段时间刷新,期间停止读写,有死区
2. 分散刷新:每个存取周期拆分,无死区,速度变慢
3. 异步刷新(常用):兼顾速度、死区,按最大刷新间隔均匀安排
• 刷新按行刷新,一行所有单元同时刷新,不需要列地址
• 刷新间隔标准:一般2ms
3.3.5 突发传输模式(Burst)
给出起始地址后,连续自动访问后续多个单元,不用每次都发地址;适合连续数据块,提升带宽。
3.3.6 同步DRAM(SDRAM)
• 同步:和CPU时钟同步,时钟控制所有操作
• 支持突发,内部多Bank(存储体),可以交错操作,提高利用率
3.3.7 双倍数据率SDRAM(DDR SDRAM)
• 在时钟上升沿+下降沿都传输数据,一倍时钟下带宽是SDRAM的2倍
• DDR、DDR2、DDR3、DDR4、DDR5都属于这类,电脑内存主流
3.3.8 DRAM读/写校验
增加校验位(奇偶校验/CRC/ECC),检测、纠正存储读出错误;服务器内存常用ECC校验。
3.3.9 CDRAM
Cache DRAM,芯片内部集成小容量SRAM Cache,把常用数据放在片上Cache,减少访问主存延迟。
3.4 只读存储器(ROM)
3.4.1 只读存储器概述
断电信息不丢失(非易失),早期只能读,现在Flash可擦写。
分类:掩膜ROM、PROM(一次性可编程)、EPROM(紫外线擦除)、EEPROM(电可擦)、Flash闪存。
3.4.2 NOR闪存
• 特点:随机读速度快,支持按字节读取;擦写按块,擦除慢
• 用途:BIOS、固件,可以直接在上面运行程序
对比NAND Flash:读慢、按页访问,适合U盘、固态硬盘,大容量存储
3.5 并行存储器(提高主存带宽)
3.5.1 双端口存储器
一套存储阵列,两个独立端口、两套地址/数据/读写控制,可以同时访问同一个存储体。
• 冲突:两个端口同时访问同一个单元,会发生写冲突,需要仲裁逻辑
• 用途:高速缓存、多处理器共享存储器
3.5.2 多模块交叉存储器(多体交叉)
把主存分成多个独立存储体,地址交叉编址(低位体号,高位体内地址)
• 原理:流水线并行访问多个体,连续地址落在不同体,可同时读出
• 理想带宽:体数 × 单体带宽;随机地址容易冲突,带宽下降
3.6 Cache存储器(高速缓存)
核心思想:局部性原理(时间局部性、空间局部性),CPU常用数据放到高速小容量Cache,减少访问低速主存。
3.6.1 Cache基本原理
• 层次:CPU → Cache → 主存
• 命中率H:访问Cache命中的概率;不命中(缺失)就去主存拿,同时把块调入Cache
• 平均访问时间 T_a=H\times T_c+(1-H)\times(T_c+T_m)
T_c:Cache访问时间,T_m:主存访问时间
3.6.2 主存与Cache的地址映射
1. 直接映射:主存块只能固定放到Cache某一行;硬件简单,冲突高
公式:Cache行号 = 主存块号 mod Cache行数
2. 全相联映射:主存块可以放到Cache任意行;冲突最小,硬件复杂、速度慢
3. 组相联映射(最常用):Cache分成若干组;主存块固定映射到某一组,组内任意行。折中方案。
地址划分:标记Tag + 组号 + 块内偏移
3.6.3 Cache的替换策略(不命中且Cache满了,淘汰哪一块)
• FIFO:先进先出,最早调入的块替换;容易把还会用到的数据淘汰
• LRU(最近最少使用,考试高频):淘汰很久没访问的块,效果好,硬件有开销
• LFU:淘汰访问次数最少的块
• 随机替换:硬件最简单,性能最差
3.6.4 Cache的写操作策略
解决Cache和主存数据不一致:
1. 写直达(Write-through):写Cache同时写主存;一致性好,速度慢
2. 写回(Write-back):只写Cache,块被替换时才写回主存;加修改位(脏位),速度快,一致性风险
3. 写分配 / 不写分配:写缺失时,是否把主存块调入Cache
3.6.5 多级Cache
L1(离CPU最近,最小最快)、L2、L3;逐级增大容量、变慢;降低缺失损失。
3.7 虚拟存储器
核心:用硬盘(辅存)模拟主存,扩大程序可使用的逻辑地址空间,解决主存容量不足;由操作系统+硬件(MMU)共同实现。
区分:Cache是硬件为主,加速主存;虚存是OS为主,扩充地址空间。
3.7.1 虚拟存储器的基本概念
• 虚地址(逻辑地址):程序看到的地址
• 实地址(物理地址):内存真实地址
• 程序运行在虚地址空间,页面不在内存时发生缺页中断,OS从磁盘调页
3.7.2 页式虚拟存储器
• 把虚存、主存划分成固定大小页;虚页、实页(页框)
• 页表:存放【虚页号→实页号、有效位、脏位、访问位】
• 地址转换:虚地址 = 虚页号 + 页内偏移;查页表得到实页号,拼接偏移得到物理地址
• TLB(快表):高速缓存一部分页表项,加速地址转换,减少访存
3.7.3 段式、段页式虚拟存储器
• 段式:按程序逻辑模块分段,段长可变;利于共享、保护;地址转换慢,内存碎片多
• 段页式:先分段,段内再分页;兼顾段的逻辑优势、页式管理高效,现在操作系统主流方案
3.7.4 虚存的替换算法
和Cache替换算法类似,但由操作系统软件实现:LRU、FIFO、Clock(时钟算法,工程常用)。缺页中断时,内存满了就要淘汰页面。
3.7.5 存储管理部件 MMU
硬件电路,负责:虚实地址转换、页表查找、缺页中断触发、权限检查。
3.8 鲲鹏920处理器的内存系统
3.8.1 鲲鹏存储系统层次结构
经典存储层次:寄存器 → L1 Cache → L2 Cache → L3 Cache → 主存DDR → 外存;鲲鹏是ARM架构多核处理器,多核心共享L3 Cache。
3.8.2 鲲鹏920片上系统的主存系统
支持多通道DDR内存,多体并行,提升内存带宽;支持ECC内存校验,面向服务器。
3.8.3 鲲鹏920地址映射与变换
ARM架构的虚实地址转换,支持页表、TLB;支持大页、地址空间隔离,适配服务器虚拟化。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)