计算机组成原理
2022-02-11 15:27:47 0 举报
AI智能生成
cs
作者其他创作
大纲/内容
指令系统
指令格式
指令的基本格式
组成
操作码字段+地址码字段
操作码指出该指令执行什么性质的操作和具有什么功能
地址码给出被操作数的信息(指令或是数据)的地址
分类
零地址指令
定义
只有操作码OP,没有显式地址
使用的情形
无需操作数
空操作
停机指令
关中断指令
一地址指令
情形一
按A1地址读取操作数,进行OP操作后,结果存回原地址
OP(A1)→A1
情形二
隐含约定目的地址的双操作数指令,隐含的操作数可由累加器ACC提供,运算结果也将存与累加器ACC中
(ACC)OP(A1)→ACC
以32位指令字长为例,操作数占8位,地址码字段占24位,指令操作数的直接寻址范围是2^24 = 16M
二地址指令
(A1)OP(A2)→A1
以32位指令为例,操作数占8位,两个地址码各占12位,寻址范围为2^12 = 4K
三地址指令
(A1)OP(A2)→ A3
以32位指令字长为例,操作码占8位,三个地址各占8位,指令操作数的直接寻址范围是256
若地址字段均为主存地址,完成一段三地址指令需要访存4次(取指令1次,去两个操作数2次,存放结果1次)
四地址指令
(A1)OP(A2)→ A3,A4 = 下一条将要执行指令的地址
以32位指令字长为例,操作码占8位,4个地址各占6位,寻址范围为2^6 = 64
定长操作码指令格式
便于简化计算机硬件设计
有利于提高指令译码和识别速度
扩展操作码指令格式
在指令字长有限的条件下提供更丰富的指令种类
注意事项
不允许短码是长码的前缀,即端操作码不能与长操作码的前面部分的代码相同
各指令操作码一定不能相同
对使用频率高的指令使用短操作码,对于使用频率低的操作码使用长操作码(尽可能减少指令译码和分析的时间)
指令的操作类型
数据传送
算数和逻辑运算
位移操作
转移操作
输入输出操作
指令的寻址方式
指令寻址与数据寻址
指令寻址
顺序寻址
(PC)+ 1 → PC
跳跃寻址
修改当前的(PC)(下一条指令地址仍然通过程序计数器PC给出)
数据寻址
操作码 + 寻址特征 + 形式地址A
常见的数据寻址方式
隐含寻址
不明显的给出操作数的地址,而在指令中隐含操作数的地址
有利于缩短指令字长
需要增加储存操作数或隐含地址的硬件
立即(数)寻址
指令的地址字段给出的不是地址而是操作数本身(数据采用补码存放)
指令在执行阶段不访问主存,指令执行时间最短
地址字段A的位数限制了立即数的范围
直接寻址
指令中的形式地址A就是操作数的真实地址EA
指令在执行阶段只需访问一次主存,不需要专门计算操作数的地址
形式地址A的位数决定了指令操作数的寻址范围,操作数的地址不易修改
间接寻址
指令的形式地址A不是操作数的真实地址,而是操作数有效地址所在的操作数的存储单元的地址
寄存器寻址
在指令中直接给出操作数所在的寄存器编号
EA = Ri
执行阶段不访问主存,只访问寄存器,对应地址码长度较小,执行速度快,支持向量、矩阵运算
寄存器价格昂贵,在计算机中个数有限
寄存器间接寻址
形式地址中给出的寄存器中,存放的的是操作数所在的主存单元的编号
EA = (Ri)
较一般间接寻址速度更快,但指令的执行过程中仍需要访问主存
相对寻址
形式地址A为实际地址相对于程序计数器PC的相对位置
EA = (PC)+ A
操作数的地址不是固定的,它随PC值的变化而变化,且指令地址之间总是相差一个固定值,便于程序浮动
基址寻址
实际地址由基址寄存器(BR)中的内容加上指令中的形式地址A形成
BR可为专用的基址寄存器,也可是通用寄存器
程序执行过程中(BR)不变,A可变
EA = (BR) + A
基址寄存器是面向操作系统的,其中的内容由操作系统或管理程序确定
可扩大寻址范围
用户不需要考虑自己程序存在主存的那个空间区域,有利于多道程序设计,并可用于编址浮动程序
偏移量/形式地址Ad位数较短
变址寻址
实际地址由变址寄存器(IX)中的内容加上指令中的形式地址A形成
IX可为专用的变址寄存器,也可是通用寄存器
程序执行过程中(IX)内容可变,A不可变
EA = (IX)+ A
在数组处理过程中,可将A设定为数组的首地址,不断改变变址寄存器IX的内容,即可形成数组中任一数据的地址,特别适于编制循环程序,偏移量(变址寄存器IX)的位数足以表示整个储存空间
堆栈寻址
按后进先出(LIFO)原则管理的储存区,该区域的读写单元地址是由堆栈指针SP给出
采用堆栈寻址结构的计算机系统,大部分指令都使用无操作数指令的形式,而是隐含使用了堆栈指针SP作为操作数地址,通常情况下在读写一个单元后,都伴有对SP内容的增减操作
硬堆栈
寄存器堆栈,也称硬堆栈
成本高,不适于做大容量的堆栈
软堆栈
从主存中划出一段区域做堆栈是最合算且对常用的做法,此为软堆栈
CISC和RISC的基本概念
复杂指令系统计算机(CISC)
指令系统复杂庞大,指令数目一般在20条以上
指令长度不固定,指令格式多,寻址方式多
可以访存的质量不受限制
各种指令使用的频度相差很大
各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成
控制器大多采取微程序控制。有些指令非常复杂,以至于无法采用硬连线控制
难以用优化编译生成高效的目标代码程序
精简指令系统计算机(RISC)
选取使用频率最高的一些简单指令,复杂指令的功能有简单指令的组合来实现
指令长度固定,指令格式少,寻址种类方式少
只有LOAD/Store(取存/存数)指令访存,其余指令的操作均在寄存器之间进行
CPU中通用寄存器的数量相当多
RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成
以硬布线控制为主,不用或少用微程序控制
特别重视编译优化工作,以减少程序执行时间
中央处理器
CPU的功能和基本结构
CPU的功能
指令控制
操作控制
时间控制
数据加工
中断处理
CPU的基本结构
运算器
算数逻辑单元(ALU)
暂存寄存器
累加寄存器(ACC)
通用寄存器组
程序状态寄存器(PSW)
移位器
计数器
控制器
程序计数器(PC)
指令寄存器(IR)
指令译码器
储存器地址寄存器(MAR)
储存器数据寄存器(MDR)
时序系统
微操作信号发生器
指令执行过程
指令周期
注意事项
CPU从主存中取出并执行一条指令的的时间称为指令周期,不同指令的执行周期可能不同
对于无条件跳转指令JMP X, 执行时不需要访问主存,指令周期仅包含取指周期和执行周期
对于间接寻址的指令,需要先访问一次主存取出有效地址,再访问主存取出操作数,所以还需包括间址周期
CPU响应中断的时机为:一条指令执行完毕之后
一个完整的指令周期应该包括取指,间址,执行和中断四个周期
指令周期的数据流
取指周期
(PC)→MAR
1→R
M(MAR)→MDR
(MDR)→IR
(PC)+1→ PC
间址周期
Ad(IR)/Ad(MDR)→MAR
1→R
M(MAR)→MDR
执行周期
每条具体指令各不相同
中断周期
(SP)-1→SP,(SP)→MAR
1→W
(PC)→MDR
向量地址→PC
指令执行方案
单指令周期
所有指令都采用相同的执行时间
导致指令的执行时间由执行时间最长的指令决定,会拖慢整个系统的运行速度
多指令周期
不同类型的指令采用不同的执行方案
流水线方案
指令之间可以并行执行非方案,力争在每个时钟脉冲周期完成一条指令的执行过程
各并行执行的指令各自处于不同的执行步骤中
控制器的功能和工作原理
控制器的结构和功能
连接关系
运算器部件通过数据总线与主存、输入输出设备传送数据
输入设备和输出设备通过接口电路与总线相连接
主存、输入输出涉笔从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据
控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的各部件提供他们的运行所需的控制信号
主要功能
从主存中取出一条指令,并指出下一条指令在主存中的位置
对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作
指挥并控制CPU、主存、输入输出设备之间的数据流动方向
硬布线控制器
CU输入信号来源
经指令译码器产生的指令信息
时钟周期产生的时钟周期信号和节拍信号
来自执行单元的反馈信号,即标志
硬布线控制器的时序系统
时钟周期
时钟周期信号控制节拍发生器,每个节拍对应一个时钟周期,每个时钟周期内可以完成一个或几个需同时执行的操作
机器周期
机器周期可以视为所有指令执行过程的基准时间
不同周期的操作不同,机器周期也各不相同
指令字长为n倍存储字长时,取指周期也为机器周期的n倍
指令周期
微操作命令
CPU的控制方式
同步控制方式
系统依赖于一个统一的时钟信号
控制电路简单
运行速度较慢
异步控制方式
不存在基准的时标信号,各部件通过应答方式联络
运行速度较快
控制电路复杂
联合控制方式
大部分采用同步控制方式,小部分采用异步方式
特点
控制器速度取决于电路延迟,速度快
控制部件作为产生固定时序信号的逻辑电路,以最少原件和最高速度为目标,设计完成后不能添加新功能
微程序控制器
微程序控制器的基本概念
设计思想
将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令
这些微程序存储在一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个操作中的微命令
相关概念
微命令
在微程序控制的计算机系统中,将控制部件向执行部件发出的各种控制命令
是构成控制程序的最小单位
微操作
微命令的执行过程
微指令
若干微命令的集合
包含
操作控制字段
产生控制信号
顺序控制字段
生成下一条指令
微周期
从控制存储器中读取一条微指令并执行相应的微操作所需的时间
主存储器
用于存放程序和数据
在CPU外,用RAM实现
控制存储器(CM)
用于存放微程序
在CPU内,用ROM实现
程序
指令的有序集合,用于完成特定的功能
微程序
微指令的有序集合,用于实现一条指令
区分相关寄存器
地址寄存器(MAR)
存放主存的读写地址
微地址寄存器(CMAR)
存放控制存储器的读写微命令地址
指令寄存器(IR)
存放主存中读取出的指令
微指令寄存器(CMDR或uIR)
存放控制存储器中读取出的微指令
特点
规整性、灵活性、可维护性
执行每条指令都需要方位控制储存器一次,影响速度
指令流水线
指令流水线的基本概念
将一条指令的执行过程分为若干阶段,每个阶段有相应的功能部件完成;是将指令的各个执行阶段视为流水段的并行处理技术
指令流水线的定义
取指
根据PC内容访问主存储器,取出指令送至IR
分析
对指令操作码进行译码,按给定的寻址方式和地址字段形成操作数的有效地址EA,并从EA中取出操作数
执行
顺序执行
前一条指令执行完毕后再执行下一条指令
控制简单、硬件代价小
指令执行速度慢
流水线执行方式
将取k+1条指令的的过程提前至第k条指令指令的期间完成;将分析k+1条指令的过程提前至第k条指令的执行期间完成
执行n条指令的时间为:T = (2 + n)t
特征
指令长度尽量一致(有利于简化取指命令和指令译码操作)
指令格式应尽量规整,尽量保证源寄存器的位置相同
采用Load/Store指令,其他指令都不能方位存储器
数据和指令在存储器中对齐存放
指令流水线的特点
将一个任务拆分为几个有联系的子任务,每个子任务由一个专门的功能部件来执行,并依靠多个功能部件来缩短程序的执行时间
流水线的每个功能段部件后面都要有一个缓存寄存器,或称锁存器,其作用是保存本流水线的执行结果,供下一流水段使用
流水线中各功能段的时间应尽量相等,否则会引起堵塞、断流
只有连续不断地提供同一种任务时才能发挥流水线的效率
流水线需要装入时间和排空时间
流水线的分类
按使用级别分
部件功能级
处理机级
处理机间级
按使用功能分
单功能流水线
多功能流水线
按连接方式分
静态流水线
动态流水线
按是否有反馈信号分
线性流水线
非线性流水线
影响流水线的因素
资源冲突
多条指令在同一时刻争用同一资源
解决
前一指令访存时,使后一条指令暂停一个时钟周期
单独设置数据存储器和指令寄存器,使取数和取指令操作各自在不同的储存器进行
数据冲突
下一条指令会用到当前指令计算出的结果,此两条指令就存在数据冲突
读后写
前一条指令在读取完成后,下一条指令才可写入
写后读
前一条指令在完成写入后,下一条指令才可读取
解决
将遇到数据相关的指令及其后续指令都堵塞一至几个时钟周期
硬件阻塞
插入NOP指令
设置相关专用通路(旁通技术)
改进编译技术(调整指令顺序)
控制冲突
一条指令要确定下一条指令的位置(修改PC值),会引起“控制冒险”
解决
对转移指令进行分支预测,今早生成转移目标地址
预取转移成功和不成功两个控制流方向上的目标指令
加快和提前形成条件码
提高转移方向的猜准率
流水线的新能指标
流水线的吞吐率
TP(吞吐率)= n(任务数)/Tk(处理完n个任务所用时间)
流水线的加速比
同样一批任务,不使用流水线的时间与使用流水线所用时间之比
n→∞,Smax = k
流水线的效率
流水线设备的利用率
包含时间和空间两个因素
超量流水线的基本概念
超标量流水线技术
每个时钟周期可以并发多条指令,即以并行操作方式将多条指令编译并执行
需要多个功能部件
超流水线技术
在一个时钟周期内再分段,一个时钟周期内一个功能部件使用多次
不能调整指令的执行顺序,靠编译程序解决优化问题
超长指令字
将多条指能并行操作的指令组合成一条具有多个操作码字段的超长指令字
需要多个功能部件
总线
总线概述
总线的基本概念
总线的定义
总线指一组能为多个部件分时共享的公共信息传送线路
总线具有分时和共享两个特点
分时
同一时刻只允许一个部件向总线发送信息
共享
总线上可以挂接多个部件,多个部件可以同时接收信息
总线设备
有控制功能
主设备
无控制功能
从设备
总线特性
机械特性
电器特性
功能特性
时间特性
总线的猝发传输方式
在一个总线周期内传输存储地址连续的多个数据字的总线传输方式
总线的分类
片内总线
芯片内部的总线
CPU与内部寄存器
寄存器与ALU
系统总线
数据总线
用于传输各个功能部件之间的数据信息
双向
位数与机器字长、储存字长有关
地址总线
指出数据总线上的源数据或目的数据的所在主存单元或I/O端口地址
单向
地址总线的位数与主存地址空间的大小有关
控制总线
包括CPU发出的控制命令和只存等设备返回CPU的反馈信息
通信总线
在计算机系统之间或计算机与其他系统系统之间传送信息的总线
也称外部总线
系统总线的结构
单总线结构
单总线并非只有一根信号线,按传送信息的不同可分为地址总线、数据总线、控制总线
结构简单、成本低、易于介入新设备
带宽低、负载重,多个部件争用总线,不支持并发
双总线结构
两条总线
主存总线
用于在主存和CPU间传送数据
I/O总线
多个外部设备与同道间传输数据
将实现主存与I/O分离
需要增加同道等硬件设备
三总线结构
三总线
主存总线
CPU与主存间通信
I/O总线
CPU与外设间通信
DMA总线
主存与高速外设(外存)之间直接传送数据
提高了I/O设备性能,使其更快的响应命令,提高系统吞吐量
系统工作效率低
总线的性能指标
总线传输周期
一次总线操作所需时间(包括申请阶段、寻址阶段、传输阶段和结束阶段)
总线时钟周期
与机器的时钟周期一致
总线工作频率
总线时钟周期的倒数
总线宽度
总线上同时传输的数据位数
总线带宽
总线单位时间内可传输数据的位数
总线复用
一种信号线在不同的时间传输不同的信息
信号线数
地址总线、数据总线、控制总线3种总线数的总和
总线操作和定时
总线传输的4个阶段
申请分配阶段
寻址阶段
传输阶段
结束阶段
同步定时方式
系统采用一个统一的时钟信号来协调发送和接收方的传送定时关系
传送速度快、总线控制逻辑简单
主从涉笔属于强制性同步;不能进行数据通信的有效性检验,可靠性差
异步定时方式
依靠应答方式实现定时控制
总线周期长度可变,能保证两个工作速度相差很大的部件或设备间可靠地进行信息交换,自动适应时间的配合
比同步控制方式稍复杂一些,速度比同步定时方式慢
分类
不互锁
半互锁
主设备等待从设备应答
全互锁
总线标准
I/O系统
I/O系统的基本概念
I/O系统
外设
接口
输入设备
输出设备
外存
构成
I/O软件
I/O硬件
I/O控制方式
程序查询方式
由CPU不断查询I/O设备是否已经就绪
CPU直接控制I/O设备
程序中断方式
CPU通过I/O中断方式控制外设
DMA方式
主存和I/O设备间存在一条直接的数据通路
同道方式
CPU执行I/O命令时只需启动有关通道,通过通道执行通道程序完成I/O操作
外部设备
输入设备
键盘
查出按下的是哪个键
将该键翻译为能被主机接收的编码,入ASCII码
将编码传给主机
鼠标
由底部的传感器将运动的方向和距离检测出来,从而控制光标作出相应的移动
输出设备
显示器
VARM容量 = 分辨率 x 灰度级位数
VARM带宽= 分辨率 x 灰度级位数 x 帧率
打印机
外存
磁盘存储器
磁盘存储器的组成
存储区域
磁头数
柱面数
扇区数
硬盘存储器的组成
磁盘驱动器
磁盘控制器
主流标准:IDE、SCSI、SATA
磁记录原理
磁盘的性能指标
容量
记录密度
平均存取时间
数据传输率
磁盘地址
驱动器号 + 柱面(磁道)号 +盘面号 + 扇区号
磁盘工作过程
取控制字
执行控制字
读写操作为串行,不可同时读、写,也不可同时读/写两组以上的数据
磁盘阵列
指将多个独立的物理磁盘组成一个独立的逻辑盘
分级方案
RAID0
无冗余和无校验的磁盘阵列
RAID1
镜像磁盘阵列
RAID2
采用纠错的海明码的磁盘阵列
RAID3
采用位交叉奇偶校验的磁盘阵列
RAID4
采用块交叉奇偶校验的磁盘阵列
RAID5
无独立校验的就校验磁盘阵列
RAID1~RAID5无论何时,磁盘有无损坏,都可随时拔出受损的磁盘再插入好的磁盘,而数据不会损坏
I/O接口
I/O接口的功能
实现主机与外设的通信联络控制
解决主机与外设时序配合问题,协调不同工作速度的外设和主机间交换信息的工作,保证计算机系统能够统一、协调的工作
进行地址译码和设备选择
实现数据缓冲
信号格式的转换
传送控制命令和状态信息
I/O接口的基本接口
I/O接口的分类
按数据传输方式分
并行接口
串行接口
按控制方式分
程序查询接口
中断接口
DMA接口
按功能灵活性分
可编程接口
不可编程接口
I/O接口机器编址
统一编址(存储器映射方式)
不需要专门的输入输出指令,使CPU的I/O操作更灵活、方便
有较大的编址空间
占用存储器地址,使内存容量变小
执行速度慢
独立编址(I/O映射方式)
与输入输出指令有明显区别,程序编制清晰、易于理解
输入输出指令少,一般只能对端口进行传输操作
需要CPU提供两组信号,增加控制复杂性
计算机系统概述
计算机的四代变化
电子管时代
晶体管时代
中小规模集成电路时代
超大规模集成电路时代
计算机系统的组成
早期的冯诺依曼机
以运算器为中心
指令与数据顺序存放,指令通常顺序执行
指令与地址均用二进制代码表示
指令由操作码和地址码组成,操作码指出造作的类型,地址码指出操作的地址
现代计算机
以储存器为中心
仍然遵循冯诺依曼从储存程序的设计思想
功能部件
输入设备
输出设备
储存器
主存
MAR(地址寄存器)
MDR(数据寄存器)
运算器
运算器的核心是ALU(算数逻辑单元)
ACC(累加器)
MQ(乘商寄存器)
X(操作数寄存器)
IX(变址寄存器)
BR(基址寄存器)
控制器
PC(程序控制寄存器)
用于存放下一条指令的地址,可以自增以形成下一条指令的地址
IR(指令寄存器)
用于存放当前的指令(内容来自MDR),其中操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列
地址码Ad(IR)会送往MAR,用以取出操作数
CU(控制单元)
计算机软件的分类
三个级别的语言
机器语言
汇编语言
高级语言
从源文件到可执行程序
预处理
.c->.i
编译
.i->.s
汇编
.s->.o
链接
.o->可执行程序
计算机的性能指标
机器字长
进行一次整数运算所能处理的二进制数据的位数
通常与CPU的寄存器位数、加法器有关
字长越长,数的表示范围越大,精度越高
数据通路带宽
总线一次所能并行传送的信息位数
主存容量
主储存器所能储存信息的最大容量
运算速度
吞吐量
系统在单位时间内处理请求的数量
响应时间
指用户向计算机发出一个请求,到系统对该请求作出响应并获得所需结果的等待时间
主频
机器内部的时钟频率
主频越高完成一个指令的一个执行步骤的时间越短,指令执行越快
单位是赫兹
CPI
执行一个指令所需的时钟周期数
CPU执行时间
运行一个程序所花费的时间
CPU执行时间 = CPU时钟周期数 / 主频 = (指令条数xCPI)/ 主频
MIPS
每秒执行多少百万条指令
MIPS = 指令条数 / (执行时间 x 10^6) = 主频 (CPI x 10^6)
用MIPS来对比性能是有缺陷的,不同机器的指令集不同,功能也不同
MFLOPS
MFLOPS = 浮点操作次数 / (执行时间 x 10^6)
GFLOPS
GFLOPS = 浮点操作次数 / (执行时间 x 10^9)
TFLOPS
TFLOPS = 浮点操作次数 / (执行时间 / 10^12)
基准程序
专门用以评价性能的一组程序
若是开发人员专门针对基准程序的短代码进行优化,便得不出准确结果
数据的表示和运算
进位计数制及其相互转换
不同进制间的相互转换
全部转换为二进制再进行转换比较方便快捷
进位计数法
二进制
八进制
十六进制
真值和机器数
真值
带正负号的数称为真值
机器数
采用一定的编码方式表示真值
BCD码
8421码
余3码
2421码
字符和字符串
ASCII码
汉字的表示和编码
GB2312-1980
国标码 = (区位码)|16 +2020H
机内码 = (区位码)|16 +8080H
校验码
奇偶校验码
奇校验码
整个校验码中的1的位数为奇数
偶校验码
整个校验码中的1的位数为偶数
缺点
只有检错的作用不能纠错
海明码
可以发现错位,还可以确定错位的位置
确定海明码的位数
n + k = 2^k -1(n为有效信息位数,k为校验位位数)
确定校验位的分布
规定校验位Pi在海明码位号为2^(i-1)的位置上
分组形成校验关系
被校验数据位的海明码位号等于校验该数据位的个校验位海明位号之和
校验位不需要再被校验
校验位取值
校验位Pi的取值位第i组所有数值位取异或
循环冗余校验码(CRC码)
先左移N位,再用生成多项式对左移后的信息码进行模2除,所得余数即CRC码接在信息码后
定点数的表示与运算
有符号数和无符号数的表示
无符号数
整个机器字长均作为数值位,没有符号位,表示范围为:0 ~ 2^n - 1
有符号数
机器数的定点表示
定点小数
定点整数
原码、补码、反码、移码
转换
原码 → 补码(补码 → 原码)
原码为正数,原码和补码表示相同
原码为负,将原码符号位不变,其余数值位取反末位再+1,即得补码
补码取相反数
符号位取反
数值位取反+1
存储系统
存储器的分类
按层次分
主存储器
辅助存储器
高速缓冲存储器
按存储介质分
按存取方式分
随机存储器(RAM)
只读存储器(ROM)
串行访问存储器
按信息的可保存性分
易失性存储器
非易失性存储器
存储器的性能指标
存储容量
单位成本
存储速度
存取时间(Ta)
存取周期(Tm)
主存带宽(Bm)
存储器的层次结构
多级存储系统
寄存器
Cache
主存
磁盘
主存和Cach间的数据调动是由硬件自动完成的,对所有程序员均透明
主存和辅存间的数据调动是由硬件和操作系统共同完成的,对于应用程序员透明
半导体随机存储器(RAM)
SRAM
SRAM的工作原理
用双稳态触发器来记忆信息,读出后不需要恢复
存取速度快,集成度低,功耗大,一般用于Cache
DRAM
DRAM的工作原理
利用储元电路中的栅极电容上的电荷储存信息
DRAM采用地址复用技术地址信号分行、列两次传送
容易集成、价位低、容量大、功耗低
DRAM存取速度比SRAM低,一般用于主存
数据需要刷新
集中刷新
优点:读写造作时不受刷新工作的影响
缺点:存在“死时间”,刷新期间不能访问存储器
分散刷新
将每行的刷新时间分散至各个工作周期中
优点:没有“死区”
缺点:增加系统的存取周期,降低了整机的速度
异步刷新
有以上两者的优点没有以上两者的缺点
DRAM刷新需要注意的问题
刷新对CPU是透明的,即刷新不依赖于外部访问
动态RAM的刷新单位是行,由芯片内部自行生成地址
刷新操作与读操作类似,又有所不同
储存芯片的内部结构
储存体
地址译码器
I/O控制电路
片控制信号
读/写控制信号
RAM的读写周期
只读存储器(ROM)
ROM的特点
结构简单,密度比可读写存储器高
具有非易失性,可靠性高
ROM的类型
掩模式只读存储器(MROM)
生产过程中写入,写入后无法改变内容
可靠性高,集成度高,价格便宜
灵活性差
一次可编程只读存储器(PROM)
可以实现一次性编程的只读存储器,需要专门的编程器写入,写入后无法更改
可擦除可编程只读存储器(EPROM)
可由用户使用编程器写入信息,支持多次改写
写入前需要全部擦除
可编程次数有限
擦除方式
电擦除
紫外线擦除
闪速存储器(Flash Memory)
可在不加电的情况下保存信息
可快速擦除重写
价格便宜,集成度高
固态硬盘
长期保存信息、快速擦除与重写
读写速度快
低功耗
价格高
主存储器与CPU的连接
连接原理
主存储器通过数据总线、地址总线和控制总线与CPU连接
数据总线的位数与工作频率的乘积正比于数据传输速率
地址总线的位数决定了可寻址的最大内存空间
控制总线(I/O)指出总线周期的类型和本次输入/输出完成的时刻
主存容量的扩展
位扩展法
位扩展的连接方式是将多个储存芯片的地址端、片选端和读写控制端相应并联
数据端分别引出
字扩展法
字扩展的连接方式是将芯片的地址线、数据线、读写控制线相应并联
而由片选信号来区分各芯片的地址范围
储存芯片的地址范围和片选
线选法
高位地址先分别连接至各芯片的片选端,当某位信息是“0”时,就选中与之相应的芯片
不允许同时有多位有效
优点:不需要地址译码器,线路简单
缺点:地址空间不连续,选片的地址先必须分时为低电平,不能充分利用系统的地址空间
译码片选法
使用除片内地址线外的高位地址线作为选片信号通过地址译码器产生片选信号
储存器与CPU的连接
合理选择芯片
连接地址线
连接数据线
连接读/写命令线
连接片选线
双端口和多模块存储器
双端口RAM
双端口RAM指同一个存储器有左右两个独立的端口,分别具有两组独立的地址线、数据线、和读写控制线
允许两个独立的控制器同时异步地访问访问存储单元
两个端口的地址不同时,在两个端口上进行读写操作一定不会发生冲突
两个端口同时存取存储器的同一地址单元时,会因数据冲突造成数据存储或者读取错误
解决办法:置“忙”信号为0,由判断殴决定暂时关闭一个端口,未被关闭的端口正常访问,被关闭的端口延长一个很短的时间后再访问
多模块存储器
单体多字存储器
优点:增大了存储器的带宽,提高了存储器的工作效率
缺点:指令与数据在主存内必须是连续存放的,一旦遇到转移指令,或操作数不能连续存放,这种方法的效果就不明显
多体并行存储器
由多体模块组成,每个模块都有相同的容量和存取速度,各模块都有独立的的读写控制电路、地址寄存器和数据寄存器
可以并行工作,也可交叉工作
编址方式
高位交叉编执
高位交叉编址总是把低位的体内地址送到高位体号确定的模块内进行译码
CPU总是按顺序访问存储模块,存储模块不能被并行访问,因而不能提高存储器的吞吐率
低位交叉编址
总是把高位的体内地址送到由低位体号确定的模块内进行译码
程序连续存放在相邻模块中
采用流水线的方式并行存取,提高存储器的带宽
高速缓冲存储器
局部性原理
时间局部性
最近未来要用到的信息,很可能是正在使用的信息,因为程序中存在循环
空间局部性
最近未来要使用的信息很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放、执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的
Cache的基本工作原理
见王道计组图3.17
某些计算机也采用同时访问Cache和主存的方式
若Cache命中,则主存访问终止
否则访问主存并替换Cache
Cache和主存的映射方式
直接映射
实现简单
不够灵活,即使Cache的其他许多地址空着也不能占用
冲突概论最高
空间利用率最低
全相联映射
主存中的每一块可以装入Cache中的任意位置,每行标记用于指出该行取自主存的哪一块,所以CPU访存时需要与所有的Cache相比较
比较灵活,Cache冲突概率低,空间利用率高,命中率也高
标记比较速度慢、实现成本比较高,通常需采用昂贵的按内容寻址的相联存储器进行地址映射
组相联映射
组间采取直接映射,组内采取全相联映射
路数越大,即每组Cache行的数量越大,发生冲突的概率越低,但相联比较电路也越复杂
选定合适的数量可以使得其成本接近直接映射,性能上接近全相联映射
Cache中主存块的替换算法
随机算法(RAND)
随机决定替换的Cache块
实现简单
命中率低
先进先出算法(FIFO)
选择最早调入的块进行替换
近期最少使用算法(LRU)
对每个块设置一个计数器,用来记录主存块的使用情况,并根据数值选择淘汰某个块
最不经常使用算法(LFU)
将一段时间内被访问次数最少的块进行换出
Cache写策略
Cache命中
全写法
Cache命中时,同时写入Cache和主存
实现简单
保持主存数据的正确性
增加了访存次数,降低了Cache的效率
写回法
Cache命中时只写入Cache,不写入主存
换出时写入主存
减少了访存次数
需要设置一个脏位,反映Cache是否被修改
Cache未命中
写分配法
通常与写回法合用
加载主存的块至Cache中,然后更新这个Cache块
每次不命中都需要从主存中读取一块
非写分配法
通常与全写法合用
只写入主存,不进行调块
多级Cache中,离CPU越远访问速度越慢,容量越大
避免了频繁写时造成的写缓冲饱和和溢出
虚拟存储器
虚拟存储器的概念
虚拟存储器将主存储器和辅存储器统一编址,形成庞大的地址空间,使用户可以自由编程,不必在乎主存的容量和程序在主存中实际的存储位置
拥有主存的速度和辅存的容量
对程序员是透明的
使用硬件找出虚地址和实地址间的对应关系,并判断是否存入主存
页式虚拟存储器
以页为基本单位的虚拟存储器
虚拟空间和主存空间都被划分为相等大小的页
主存的页称为实页,虚存的页称为虚页
虚拟地址到物理地址的转换是由页表实现的
页表
页表是一张存放在主存中的虚页号和实页号的对照表
有效位(装入位)
表示对应页面是否装入主存
1表示已装入,表项中存放的是物理页号
0表示未装入,表项中存放的是磁盘地址
脏位(修改位)
表示页面是否被修改(用以判断是否需要写回磁盘)
引用位(使用位 )
配合替换策略进行设置(例如是否实现最先调入算法FIFO)
具体过程
每个进程都有一个页表基址寄存器,存放该进程页表的首地址
通过虚地址高位部分的虚拟页表找到对应的页表项
若装入位为1,使用虚拟地址的低位部分的页内地址和页表中储存的页号(高位)拼接,得到实际的物理地址
特点
优点
页面长度固定,页表简单,调入方便
缺点
程序所用内存空间不可能是页长的整数倍,势必会造成资源的浪费
在资源保护上也不如段式虚拟存储器方便
TLB
存储在Cache中的页表项
快表采用全相联或组相联方式
全相联
组相联
查表过程
同时查找
先查找TLB,未命中再查慢表
段式存储器
定义
将程序按逻辑结构分成段,各段长度因程序而异
虚拟地址分为两部分,段号和段内地址
通过段表实现虚拟地址到物理地址的转换
段表中需要记录的信息
段号
装入位
段起点
段长度(段表长度不固定,页表长度固定不需要记录长度)
优点
分界方式与程序的分界方式相对应,具有逻辑独立性
易于编译、管理、修改、保护、和程序间共享
缺点
段长度可变,不易分配空间,在分配空间时容易形成碎片,不易利用,造成浪费
段页是存储器
定义
先将程序按逻辑结构分段,再将每段分为大小固定的页(长度与主存空间分页长度相同,便于调入调出,基本传送单位是页)
过程
将虚拟地址分为段号、段内页号、页内地址三部分
访存过程
访存时,根据段号找到段表地址
从段表中取出该段页表地址
从页表中取出实页号,与虚拟地址中的页内地址相拼接(此时得到的是物理地址)
优点
具有页式和段式的优点,可实现共享与保护
缺点
系统开销大
0 条评论
下一页