Article directory:
1: Similarities and differences between virtual memory and CACHE
2. Memory performance indicators
3. Hierarchical structure of memory
Three: the basic composition of the main memory
Four: semiconductor random access memory
Five: the connection between the main memory and the CPU
Six: Dual-port RAM and multi-module memory
Seven: The basic concept and principle of cache cache memory
Eight: virtual memory (focus on learning in the operating system)
1: Similarities and differences between virtual memory and CACHE
1.相同之处
目的为了提高系统性能
数据分为小信息块,作为基本的传递单位
都存在地址映射,替换算法,更新策略
按照局部性原理,将活跃的数据放到高速部件中
2.不同之处
Cache解决系统速度问题苏尼存储器解决主存容量问题
Cache 全部由硬件实现,是硬件存储器虚拟存储器有OS和硬件共同实现,是逻辑上的存储器
Cache对所有程序员透明,虚拟存储器对应用程序员透明,对系统程序员不透明
虚拟存储器不命中对系统性能影响更大
CPU只能与Cache和主存直接交互︰虚拟存储系统只能先将数据从硬盘调入主存,不能与CPU直接通信
Two: the memory hierarchy
1. Classification of memory
1.层次分类
1.1 主存储器 主存、内存:可直接被CPU读写
存放计算机运行时的程序与数据
可以被CPU直接访问,也可以与Cache和辅存进行交换数据
容量小,速度快,价格高
1.2 辅助存储器 辅存、外存:
存储当前暂时不用的程序和数据,以及一些永久保留数据
不可以与CPU直接交互
容量大,速度慢,价格低
1.3 高速缓冲存储器(cache):可直接被CPU读写
位于主存与CPU之间,缓解CPU与主存之间速度差距问题
CPU可以直接访问
容量小,速度与CPU相匹配,价格高高档计算机将他们放在CPU中
2.存储介质分类
2.1 磁表面存储器︰磁盘磁带(非易失)、磁头、载磁体、磁盘
2.2 磁芯存储器半导体存储器(MOS型存储器双极型存储器):硬磁材料、环状元件 (非易失)
2.3 光存储器∶光盘
2.4 半导体存储器:TTL、MOS,体积小、功耗低、速度快
2.5 光盘存储器:激光、磁光材料 (非易失)
3.存取方式分类
rom与ram都是随机存取,广义上的只读存储器可以通过电擦除写入的,写入速度比读速度慢
3.1 随机存储器(RAM )
随机存取,读写方便,使用灵活
用途:主存高速缓冲存储器
类型∶静态RAM(触发器原理) 动态RAM(电容充电原理)
3.2 串行访问存储器:读写某个存储单元所需要时间与存储单元的物理位置有关
3.2.1 顺序存储器(SAM)
读写一个存储单元所需时间取决于存储单元所在的物理位置
3.2.2 直接存取存储器(DAM)
既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取
3.3 相联存储器(Associative Memory) ,即可以按内容访问的存储器(ContentAddressed Memory,CAM)
可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器
4.信息可保存性
4.1 易失性存储器
RAM、断电后,仍然可以保持信息
4.2 非易失性存储器存储器
ROM、磁表面存储器、光存储器
4.3 读出类型:
4.3.1 破坏性读出:读出后需要对存储信息再生
如DRAM芯片,读出数据后要进行重写
4.3.2 非破坏性读出:不会对原存储信息破坏
如SRAM芯片、磁盘、光盘
5.信息的可更改性
5.1 只读存储器(ROM )
只能读出不能写入
用途:与随机存储器构成主存存储固定不变的程序(甚至操作系统的固化)
ROM也派生出可以反复重写的类型
5.2 读写存储器(Read/Write Memory)
即可读、也可写(如:磁盘、内存、Cache)
2. Memory performance indicators
1.计算机追求目标:大容量,低成本,高速度(联系自身买电脑)
2.存储容量=存储字数*字长
3.单位成本/价格=总成本/总容量
4.存储速度:数据传输率=数据宽度/存储周期
4.1 存取时间Ta:存储器启动到完成操作,分为读出时间与写入时间
4.2 存取周期Tm(读写周期、访问周期)︰存储器进行一次完整读写操作需要时间
4.3 主存带宽Bm(数据传输率):每秒主存进出信息的最大数量
单位为字/秒、字节/秒(B/s)或位/秒(b/s)
4.4 存储周期:一般大于存取时间(读写操作后需要内部复原时间)
存储周期=存取时间+恢复时间
3. Hierarchical structure of memory
存储系统目标:更大更快更便宜
主存----辅存层次不断发展,衍生出虚拟存储器系统
Cache-----主存层次(高速缓冲存储器) 解决CPU和主存速度不匹配问题
主存------辅存层次 解决存储系统容量问题
Three: the basic composition of the main memory
1.基本元件
MOS管,作为通电“开关”
电容,存储电荷(即存储二进制0/1)
2.存储芯片的结构
2.1 译码驱动电路:译码器将地址信号转化为字选通线的高低电平
2.2 存储矩阵(存储体):由多个存储单元构成,每个存储单元又由多个存储元构成
2.3 读写电路:每次读/写一个存储字
2.4 地址线、数据线、片选线、读写控制线(可能分开两根,也可能只有一根)
3.寻址
现代计算机通常按字节编址(每个字节),即每个字节对应一个地址
按字节寻址、按字寻址、按半字寻址、按双字寻址
Four: semiconductor random access memory
1. Semiconductor memory chip
1.存储矩阵:大量相同的位存储单元阵列构成
2.译码驱动:地址信号翻译成对应存储单元的选通信号
3.读写电路︰完成读写操作
4.读/写控制线:决定芯片是读还是写
5.片选线:确定那个芯片被选中
6.数据线数与地址线数共同反映存储芯片容量大小
地址线:单项输入,位数与存储字的个数有关
数据线:双向的,位数与读出或写入的数据位数有关
7.半导体随机存储器分类(存储原理不同)
SRAM∶高速缓存
DRAM:主存
74138译码器
2. SRAM and DRAM
RAM chip - one is volatile, data disappears after power off
1.SRAM用于Cache(使用双稳态触发器存储信息) 使用双稳态触发器(六管MOS)记忆信息 非破坏性读出,易失性存储器 存取速度快,集成度低,功耗大,成本高,常用来组成高速缓冲存储器 同时送行列地址 2.DRAM用户主存(使用栅极电容存储信息) 2.2 利用电荷存储信息,破坏性读出,易失性存储器 存取速度慢,集成度高,功耗低,容量大,成本低,常用来组成主存系统 分两次送行列地址 2.3 刷新方法(DRAM特有) 死区∶在刷新的时候,停止对存储器的读写操作,称为死时间 刷新单位是行 2.3.1 集中刷新 刷新时间固定存在死区 读写不受刷新影响,存取速度快 死区不能访问存储器 2.3.2 分散刷新 将每行刷新分散到各个工作周期中 没有死区 存取周期边长,降低整机速度 2.3.3 异步刷新 集中刷新和异步刷新结合 缩短了死时间,又提高了整机速度 2.3.4 透明刷新:刷新安排在译码阶段,不存在死时间 3.存储器的读写周期 RAM读周期︰存储芯片进行两次连续读操作时,必须间隔的时间,读周期总是大于等于读出时间 RAM写周期∶数据总线上的信息能够可靠的写入存储器
1.多久需要刷新一次? 刷新周期:一般为2ms 2.每次刷新多少存储单元? 以行为单位,每次刷新一行存储单元 为什么要用行列地址? 减少选通线的数量 3.如何刷新? 有硬件支持,读出一行的信息后重新写入,占用1个读/写周期 4.在什么时刻刷新? 假设DRAM内部结构排列成128×128的形式,读/写周期(存取周期)0.5us,2ms共2ms/0.5us = 4000个周期
3. ROM read only memory
ROM chip - a non-volatile, data will not be lost after power off
1.ROM特点:
随机存取,非易失性存储器
结构简单,位密度比可读写存储器高
2.ROM类型
2.1 掩膜式只读存储器(MROM):可靠性高,集成度高,价格便宜、灵活性差
在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)
2.2 一次性可编程只读存储器(PROM):写入内容无法更改,可编程只读存储器
用户可用专门的PROM写入器写入信息,写一次之后就不可更改
2.3 可擦除可编程只读存储器(EPROM):可擦除可编程只读存储器
可以对内容进行多次改写、紫外线擦除UVEPROM、电擦除E^2PROM
2.3.1 紫外线擦除UVEPROM (ultraviolet rays) —―用紫外线照射8~20分钟,擦除所有信息
2.3.2 电擦除EEPROM(也常记为EPROM,第一个E是Electrically)一一可用“电擦除”的方式,擦除特定的字
2.4 闪速存储器(Flash Memory):如U盘,写入速度较快
可长期保存信息可重写、价格便宜,集成度高、擦写速度快
注意:由于闪存需要先擦除在写入,因此闪存的“写”速度要比“读”速度更慢
2.5 固态硬盘(SSD):控制单元+FLASH芯片
可以长期保存信息,快速擦除,重写、相对于传统硬盘,读写速度快,低功耗、价格高
由控制单元+存储单元(Flash芯片)构成
Five: the connection between the main memory and the CPU
1.连接原理:主存储器与CPU连接(数据总线、地址总线、控制总线) 2.存储器芯片的基本结构:译码驱动电路、存储矩阵、读写电路 地址线、数据线、片选线、读写控制线 3.主存容量扩展:位扩并字扩串 3.1 位扩展:将多个存储芯片并联、8片8Kx1位—>8Kx8位存储器 3.2 字扩展:多个存储芯片串联、4片16Kx8位->64Kx8位 字扩展法(存储芯片的地址分配和片选) 3.2.1 线选法: 通过地址线直接对芯片进行选择 优点:不需要地址译码器线路简单 缺点:地址空间不连续,不能充分利用系统存储空间,造成地址资源浪费 3.2.2 译码片选法: 通过使用地址译码器对芯片进行选择 优点:每片芯片的地址范围是唯━确定的,而且是连续的,也便于扩展 缺点∶对译码电路要求过高 3.3 字位同时扩展法:增加存储字数量,增加存储字长、并联与串联结合在一起 选择存储器芯片与CPU进行连接 4.存储器与CPU的连接 4.1 选择合理存储芯片: RAM∶为用户编程设置的 ROM:存放系统程序 4.2 地址线的选择:芯片容量不同地址线也不同 CPU地址线低位与存储芯片的地址线连接 CPU地址线高位用于扩充芯片使用 4.3 数据线的连接 CPU数据线数与存储芯片线数相等时可以直接连接 CPU数据线数与存储芯片线数不等时∶必须对存储芯片进行扩位,使其相等 4.4 读/写命令线的连接:高电平为读,低电平为写 4.5 片选线的连接:片选线的作用在于选择那一片存储芯片被选中(是CPU与存储芯片连接的关键)
Six: Dual-port RAM and multi-module memory
1.目的︰为了提高CPU访问存储器的速度采用双端口存储器(空间并行)、多模块存储器(时间并行)
2.双端口RAM
一个存储器有左,右两个独立端口,分别具有两组相互独立的地址线,数据线,读写控制线
支持两个CPU同时访问RAM
可同时读/写不同的存储单元;可同时读同一个存储单元;不能同时写(或者一读一写)同一个单元
若发生“冲突”,则发出“BuSY"信号,其中一个CPU的访问端口暂时关闭
2.1 冲突:
对同一地址单元,两个端口同时写入数据
对于同一个地址单元一个端口写一个端口读
2.2. 无冲突:
对同一个地址单元,两个端口同时读
对于同一个地址单元,两个端口不同时写
3.多模块存储器:多体低位交叉编制可以有效的提高存储速度
目的:为了提高访问速度
3.1 单体多字存储器
按照地址顺序读出数据,存储单元存储m个字,总线宽度也为m个字,一次性并行读出m个字,总线宽度也要扩展为m个字
优点:增大了存储器带宽,提高单体存储器工作速度
3.2 多体并行存储器
多个模块构成,每个模块有着相同的容量和存取速度,各模块独既可并行工作又可以交叉工作
3.2.1 高位交叉编址:本质上仍然是顺序存储器
理论上多个存储体可以被并行访问,但是由于通常会连续访问,因此实际效果相当于单纯的扩容
3.2.2 低位交叉编址:可以在不改变每个模块的存取周期的前提下,采用流水线的方式并行存储,可以提高存储器的带宽
4.存取周期T:可以连续读/写的最短时间间隔=存取时间r +恢复时间
当存储模块数m≥T/r时,可使流水线不间断
每个存储周期内可读写地址连续的m个字
微观上, m个模块被串行访问;宏观上,每个存取周期内所有模块被并行访问
Seven: The basic concept and principle of cache cache memory
1.工作原理:将某些主存块复制到Cache中,缓和CPU与主存之间的速度矛盾
2.基本概念
主存与Cache之间以“块"为单位进行数据交换
主存的“块”又叫“页/页框/页面”;Cache的“块”又叫“行”
主存地址可拆分为(主存块号,块内地址)的形式
每次被访问的主存块,一定会被立即调入cache
3.局部性原理
时间局部性:现在访问的地址,不久之后也很可能被再次访问
空间局部性:现在访问的地址,其附近的地址也很可能即将被访问
4.性能分析
理解Cache命中率、缺失率
两种方式:
先访问Cache,发现未命中再访问主存
同时访问Cache和主存,若Cache命中则停止访问主存
如何区分Cache 与主存的数据块对应关系?
5.CACHE与主存的映射方式
按照一定的规则将主存中的某些数据存入到Cache中
有效位(O/1)+标记+整块数据
其中“标记"用于指明对应的内存块,不同映射方式,“标记”的位数不同
5.1 直接映射:
主存块只能放到特定的某个Cache行,行号=主存块号%总行数
主存地址结构:标记(主存块号前几位)+行号(主存块号末几位)块内地址
优点∶对于任意一个地址,只需对比一个“标记”,速度最快﹔缺点:Cache存储空间利用不充分,命中率低
5.2 全相联映射:
主存块可以放到Cache的任意位置
主存地址结构:标记(整个主存块号)+块内地址
优点:Cache存储空间利用充分,命中率高;{缺点〉查找“衫记"最慢,有可能需要对比所有行的标记
5.3 组相邻映射
主存块可以放到特定分组中的任意位置,所属组号=主存块号%总组数
主存地址结构:标记(主存块号前几位)+组号(主存块号末几位)块内地址
优点:另外两种方式的折中,综合效果较好
术语:n路组相联映射——每n个Cache行为一组
Cache很小,主存很大。如果cache满了怎么办?
6.CACHE中的替换算法
6.1 随机算法RAND:随机确定替换的Cache块
优点﹔实现简单
缺点∶没有依据局部性原理,命中率低
6.2 先进先出算法FIFO:最早调入的行进行替换
优点:容易实现
缺点:没有依据局部性原理
6.3 近期最少使用算法LRU:根据局部性原理,选择近期内最久没有访问的存储行(堆栈类篁法)
优点:平均命中率高的
缺点:需要设置计数器比较存储行
6.4 最不经常使用算法LFU:一段时间内访问次数最少的存储行换出
将被访问次数最少的主存块替换。每个Cache行设置一个“计数器",用于记录被访问过多少次
曾经被经常访问的主存块在未来不一定会用到,LFU实际运行效果不好
CPu修改了Cache中的数据副本,如何确保主存中数据母本的一致性?
7.CACHE写策略:非写分配法与全写法搭配写分配法与写回法搭配
7.1 写命中:
7.1.1 全写法(写直通法.write-through ) :对Cache写命中后,数据同时写入Cache和主存
实现简单,随时保持主存数据正确性
增加了访存次数,降低了效率
7.1.2 写回法( write-back): 对Cache命中时,只修改Cache内容,不立即写入主存
减少了访存次数
存在数据不一致的隐患,同时需要设置一个脏位
7.2 写不命中:
7.2.1 写分配法( write-allocate):加载主存中的块到Cache中,然后更新Cache块
试图使用空间局部性原理
每次不命中都要从主存中调块
7.2.2 非写分配法( not-write-allocate):只写入主存,不进行调块
7.3 多级Cache(通常为3级):可以有效避免频繁写时造成的写缓冲饱和和溢出
现代计算机通常采用多级Cache结构,各级Cache间常采用“全写法+非写分配法”,Cache和主存间常采用“写回法+写分配法”
Eight: virtual memory (focus on learning in the operating system)
1.基本概念 将主存或者辅存的地址空间统一编址 实地址对应的是主存地址空间 使用虚地址需要辅助硬件找出虚地址和实地址之间的关系,并对其对应存储单元装入状态进行判断 实际情况:需要使用的先送入主存,暂时不用的放在磁盘中 逻辑地址(虚地址):程序员视角看到的地址 逻辑地址=逻辑页号+页内地址(虚地址=虚页号+页内地址) 物理地址(实地址):实际在主存中的地址 物理地址=主存块号+页内地址(实地址=实页号+页内地址) 2.页式虚拟存储器 优点∶页面长度固定调入方便 缺点:零头浪费对页的处理、保护共享不是特别方便 以页为基本单位的虚拟存储器称为页式虚拟存储器 计算过程: 虚拟地址=虚页号+页内地址 虚页号+页表起始地址=页表地址 根据页表地址查找实页号 实页号+页内地址=实地址 3.段式虚拟存储器 优点∶段分界与程序分界相对应易于编译、管理、修改、保护、共享 缺点∶段长分配不便存在段间碎片 按照程序的逻辑结构划分 计算过程: 虚地址=段号+段内地址 段号+段表起始地址=段表地址 查询段表数据 实地址=段表所得数据+段内地址 4.段页式存储器 优点:可以按段实现共享和保护,同时也有着页的调用方便 缺点∶地址变换要两次查表,开销较大 先将程序按逻辑分段,再将每段分为固定大小页 段长必须是页的整数倍 虚地址=段号+段内页号+页内地址 5.快表(TLB) 根据局部性原理,将一些经常访问的页放入高速缓冲器中构成快表,可以极大提高查询的效率 采用相联存储器构成,可以按照内容查询 访问顺序:TLB--->页表--->Cache--->主存 命中情况:只要抓住存储数据的来源就可以推导出命中情况 Cache命中,page必然命中,TLB不一定命中 Cache不命中,无法退出TLB与page命中情况 Page不命中,Cache和主存不会命中,此时要执行调页策略