文章目录
1. 存储器的分类
-
按存储介质分类
- 半导体存储器 : 双极型、静态MOS型、动态MOS型--------- 易失
- 磁表面存储器 : 磁盘(Disk)、磁带(Tape) ------------------------ 非易失
- 磁芯存储器 (破坏性读出): 硬磁材料、环状元件 -------------- 非易失
- 光盘存储器 : 激光、磁光材料 ------------------------------------- 非易失
-
按存取方式分类
- 存取时间与物理地址无关(随机访问)
- 每个单元读写时间一样,且与各单元所在位置无关。如:内存
- 随机存储器 在程序的执行过程中 可 读 可 写
- 只读存储器 在程序的执行过程中 只读
- 存取时间与物理地址有关(串行访问)
-
顺序存取存储器 (Sequential Access Memory, SAM ):数据按顺序从存储载体的始端读出或写入,因而存取时间的长短与信息所在位置有关。例如:磁带。
-
直接存取存储器 (Direct Access Memory DAM ) (Direct Access Memory, DAM ):直接定位到要读写的数据块,在读写某个数据块时按顺序进行。例如:磁盘。
-
相联存储器( Associate Memory/Content Addressed Memory CAM):根据存储内容来进行存取的存储器,可以实现快速地查找块表。适合于信息的检索和更新。
-
- 存取时间与物理地址无关(随机访问)
-
按在计算机中的作用分类
-
按断电后信息的可保存性分类
- (1) 非易失(不挥发)性存储器(Nonvolatile Memory): 信息可一直保留, 不需电源维持。
(如 :ROM、磁表面存储器、光存储器等) - (2) 易失(挥发)性存储器 (Volatile Memory): 电源关闭时信息自动丢失。
(如: RAM 、Cache等)
- (1) 非易失(不挥发)性存储器(Nonvolatile Memory): 信息可一直保留, 不需电源维持。
-
按功能/容量/速度/所在位置分类
- 寄存器(Register):封装在CPU内,用于存放当前正在执行的指令和使用的数据 用于存放当前正在执行的指令和使用的数据,用触发器实现,速度快,容量小(几十个)
- 高速缓存(Cache):位于CPU内部或附近,用来存放当前要执行的局部程序段和数据,用SRAM实现,速度可与CPU 匹配, 容量小(几MB)
- 内存储器MM:位于CPU之外,用来存放已被启动的程序及所用的数据 用来存放已被启动的程序及所用的数据,用DRAM实现,速度较快,容量较大(几GB)
- 外存储器AM:于主机之外,用来存放暂不运行的程序、数据或存档文件,用磁表面或光存储器实现,容量大而速度慢。
-
存储器的性能指标
- 存储容量:存储字数X字长(如1M×8位)。
- 单位成本:每位价格=总成本/总容量。
- 存储速度:数据传输率=数据的宽度/存储周期。
- 存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
- 存取周期(T m):存取周期又称为读写周期或访问周期。它是指存储器进行次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
- 主存带宽(Bm):主存帯宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。
2. 存储器的层次化结构
- 主存储器
- 半导体存储芯片的基本结构
- 存储矩阵:由大量相同的位存储单元阵列构成
- 译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。
- 读写电路:包括读出放大器和写入电路,用来完成读/写操作。
- 读/写控制线:決定芯片进行读/写操作。
- 片选线:确定哪个存储芯片被选中。可用于容量扩充。
- 数据线:是双向的,其位数与读出或写入的数据位数有关。
- 数据线数和地址线数共同反映存储芯片容量的大小。
3. 半导体随机存取存储器
RAM :随机访问存储器,能够快速方便的访问地址中的内容,访问的速度与存储位置无关。当电源关闭时RAM不能保留数据(易失
)。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)
SRAM和DRAM的比较
特点 | SRAM | DRAM |
---|---|---|
存储信息 | 触发器,双稳态 | 电容,充放电 |
破坏性读出 | 非 | 是 |
需要刷新 | 不要 | 需要 |
送行列地址 | 同时送 | 分两次送 |
运行速度 | 快 | 慢 |
集成度 | 低(6个逻辑元件构成) | 高(1个或3个逻辑元件构成) |
发热量 | 大 | 小 |
存储成本 | 高 | 低 |
用途 | 常用作 Cache | 常用作主存 |
3.1 SRAM存储器
- SRAM(Static Random Access Memory):SRAM存储器单元使用
触发器
存储,具有双稳态
特性,只要有电,它就会永远的保持它的值(有点类似ROM易失性)。即使有干扰来扰乱电压,当干扰消除时,电路就会恢复到稳定值。 - 存取周期 = 存取时间 + 恢复时间
3.2 DRAM存储器
- DRAM(Dynamic Random Access Memory):即动态随机存取存储器,DRAM 只能将数据保持很短的时间。为了保持数据,DRAM使用
电容
存储,所以必须隔一段时间刷新
(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。 (关机就会丢失数据) - 刷新周期:一般为2ms
- 以行为单位,每次刷新一行存储单元,存储器中所有芯片同时刷新。
为什么要用行列地址:减少选通线的数量 - 如何刷新:有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
- 集中刷新:2ms内集中安排时间全部刷新,有一段时间专门用于刷新,无法访问存储器,称为访存“死区”
- 分散刷新:每次读写完都刷新一行
- 异步刷新:2ms内每行刷新1次即可
3.3只读存储器
- 概念
- 计算机存储器在其上数据已被预先记录。一旦将数据写入ROM 芯片,就无法将其删除,只能读取。
- 与主存储器(RAM)不同,即使计算机关闭,ROM也会保留其内容。ROM被称为非易失性,现在有很多非易失性存储器。
- 由于历史原因,虽然ROM中有的类型可以读也可以写,但是整体上都被称为只读存储器(Read Only Memory)。
- ROM是以它们能够被重新编程(写)的次数和对它们进行重编程所用的机制来区分的。
- 类别
- 一次可编程只读存储器(PROM):存储内容由用户用专门的设备(编程器)一次性写入,之后无法修改。
- 可擦除可编程只读存储器( EPRON):修改次数有限,写入时间很长
- 闪速存储器( lash Memory):如U盘,写入速度较快
4. 主存储器与CPU的连接
- 主存容量扩展-位扩展
- 主存容量扩展-字扩展
线选法 | 译码器选法 |
---|---|
n条线n个选片信号 | n条线→2^n个选片信号 |
电路简单 | 电路复杂 |
地址空间不连续 | 地址空间可连续,可以增加逻辑设计 |
- 主存容量扩展-字位同时扩展
- 【典例】
- 确认地址线、数据线,选择存储芯片
数据线:CPU数据线8根→存储器位数应扩展为8位
地址分配: 6000 H ∼ 67 F F H → 67 F F H − 6000 H + 1 = 800 H , 8 × 1 6 2 = 2 3 × 2 8 = 2 11 = 2 K 6000H\sim67FFH \to 67FFH-6000H+1=800H,8×16^2=2^3×2^8=2^{11}=2K 6000H∼67FFH→67FFH−6000H+1=800H,8×162=23×28=211=2K
→ \quad\quad\quad\quad \to →用1片2K×8位ROM,ROM地址线11根
6800 H ∼ 6 B F F H → 6 B F F H − 6800 H + 1 = 400 H , 4 × 1 6 2 = 2 2 × 2 8 = 2 10 = 1 K \quad\quad\quad\quad 6800H\sim6BFFH \to6BFFH-6800H+1=400H,4×16^2=2^2×2^8=2^{10}=1K 6800H∼6BFFH→6BFFH−6800H+1=400H,4×162=22×28=210=1K
→ \quad\quad\quad\quad \to →用2片1K×4位ROM,RAM地址线10根
地址线:6000H~-67FFH→011000000000000~01100111111111
\quad\quad\quad 6800H~6BFFH→011010000000~011010111 - 结果
- 答题思路
系统程序区用ROM,用户程序区用RAM。
- 确认地址线、数据线,选择存储芯片
5. 双端口RAM和多模块存储器
- 双端口
解决写入错误和读入错误的方法:
置“忙”信号为0由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。 - 多模块存储器
- 普通存储器:每行为1个存储单元
- 单体多字存储器:每个存储单元存储m个字,总线宽度也为m个字,每次并行读出m个字。
指令和数据在主存内必须是连续存放的 - 多体并行存储器:每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交又工作。
6. 高速缓冲存储器( Cache)
6.1 Cache的基本工作原理
- 局部性原理
- 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的。
- 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息
- 命中率H:CPU欲访问的信息已在Cache中的比率。缺失率M=1-H
- 性能分析
设t为命中时的 Cache访问时间,m为未命中时的访问时间。Cache-主存系统的平均访问时间为 T = H × t + ( 1 − H ) × m T=H\times t+(1-H) \times m T=H×t+(1−H)×m
6.2 Cach和主存之间的映射方式
- 直接映象:一个主存块只能映象到 cache 中的唯一一个指定块。
- 全相联映象: 一个主存块可映象到任何 cache 块。
- 组相联映象: 将存储空间分成若干组,各组之间用直接映象,组内各块之间用全相联映象
6.3 Cache中主存块的替换算法
- 随机(RAND)算法:
- 随机地确定替换的 Cache块。
- 它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低。
- 先进先出(FIFO)算法:
- 选择最早调入的行进行替换。
- 它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入 Cache的块替换掉。
- 近期最少使用(LRUD)算法:
- 依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FIFO要高,是堆栈类算法。
- LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
- 最不经常使用(LFU)算法:
- 将一段时间内被访问次数最少的存储行换出。
- 每行也设置个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
6.4 Cache写策略
- 命中:
- 写回法( write-back):当CPU对 Cache写命中时,只修改 Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
- 全写法(写直通法, write - through):当CPU对 Cache写命中时,必须把数据同时写入Cache/和主存,一般使用写缓冲 write-buffer。
- 不命中
- 写分配法( write- allocate):把主存中的块调入 Cache,在 Cacher中修改。搭配写回法使用。
- 非写分配法(not- wite- allocate):只写入主存,不调入 Cache,搭配全写法使用。
写回法搭配写分配法;全写法搭配非写分配法。
7. 虚拟存储器
7.1 虚拟存储器的基本概念
- 逻辑地址:程序员编程所用的地址以及 CPU 通过指令访问主存时所产生的地址。
- 物理地址:实际的主存储器的地址称为“真实地址”。
7.2 页式虚拟存储器
页式管理:一种虚拟存储器的管理方式,把虚拟存储空间和实际存储空间等分成固定容量的页,需要时装入内存,各页可装入主存中不同的实际页面位置。
7.3 段式虚拟存储器
段式管理:一种虚拟存储器的管理方式,把虚拟存储空间分成段,段的长度可以任意设定,并可以放大或缩小。
段表:每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。
7.4 段页式虚拟存储器
段页式管理:一种虚拟存储器的管理方式,将存储空间逻辑模块分成段,每段又分成若干页。
虚拟地址:段号+段内页号+页内地址
7.5 TLB(快表)
页表、段表存放在主存中,收到虛拟地址后要先访问主存,查询页表、段表,进行虚实地址转换。
放在主存中的页表称为慢表(Page)。
提高变换速度→用高速缓存储器存放常用的页表项→快表(TLB)
访问过程:
参考文章:
博主「krolem」,原文链接:https://blog.csdn.net/cxzs110/article/details/88603858