组原
思维导图
总结
408考察的审题和仔细
KMG,表示速率是10的次方,容量大小为2^10。。有些题计算次数为4k,按需转换为 10,或者2^10
内存中二进制数以补码存放
计算二进制时注意⚠️第i位是2^i-1
异步通信
-
串行
-
起始位,数据位(任意)校验位,停止位
- 2016年
-
-
并行
计算机系统概述
计算机系统的层次结构
-
硬件的基本组成
-
存储器
-
主存储器
-
工作方式:
按存储单元的地址进行存取(按地址存取方式)
-
基本组成
-
存储体
存放二进制信息
-
地址寄存器MAR
存放访存地址,经过地址译码后找到所选的存储单元
- 用于寻址,其位数代表存储单元的个数,反映最大寻址范围(最大寻址范围不等于实际寻址范围)
-
数据寄存器MDR
暂存要从存储器中读或写的信息
- 位数和存储字长相等。若32位。存储容量为32x64k.64k=2^16(Mar的位数。)
-
时序控制逻辑
昌盛存储器操作所需的各种时序信号
-
-
-
辅助存储器
必须被调入主存后,才能为CPU访问
-
-
运算器
-
用于
- 算术运算、逻辑运算
-
算数逻辑单元
-
若干通用寄存器
-
累加器ACC
-
乘商寄存器MQ
-
操作数寄存器X
-
变址寄存器IX
-
基址寄存器BR
-
程序状态寄存器PSW
- 保留运算结果产生的各种状态信息,溢出,符号,进位等
-
-
-
控制器
-
组成
-
程序计数器 PC
PC用来存放当前欲执行指令(下一条)的地址,可以自动加1以形成下一条指令的地址,它与主存的AR之间有一条直接通路。
- 存放指令地址,告诉CPU下一条指令在哪
- 区别mar:存放欲访问的存储单元地址。ir是当前执行指令
-
指令寄存器 IR
IR用来存放当前的指令,其内容来自主存的MDR。指令中的操作码OP(IR送至CU,析指令并发出各种微操作命令序列:而地址码AdR)送往MAR,用以取操作数。
- 存放指令内容,供译码器电路解析
-
控制单元 CU
-
指令译码器
-
对指令操作码进行译码
- 区分,cpu中没有地址译码器
-
-
程序地址寄存器
- 存放访存地址
-
程序数据寄存器
-
存要从存储器读或写的信息
- 操作数地址
-
-
-
-
CPU和主存之间通过总线相连。
-
地址
MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元
-
控制
控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中指
-
数据
-
-
-
系统和硬件的关系
-
计算机系统工作的过程
计算机的性能指标
-
单位时间内处理请求大数量
- 是评价计算机系统性能的综合参数。而浮点运算是衡量用欲科学计算的计算机性能
-
响应时间
- 发出一个请求,计算机作出响应,并返回结果的等待时间
-
cpu时钟周期
-
主频的倒数,cpu最小的时间单位,每次执行都最少需要一个周期
- 主频1.03Ghz,即是每秒有1.03*10^9个时钟周期
-
-
CPI
- 一条指令所需要的时钟周期
-
cpu执行时间=cpu时钟周期数/主频=(指令条数*cpi)/主频
-
计算能力
-
mips
-
每秒执行多少百万条指令=主频/CPI
- 例如:1.2ghz=1200mhz. MIPS=1200/CPI
-
-
mfflops,gflops ,,每秒执行多少百万次浮点运算
- 浮点操作次数/(执行时间*10^6)9,12,
-
易混
-
机器字长
- 一次整数运算所能处理的二进制数,通常等于内部寄存器的大小
-
指令字长
-
一个指令字中包含的二进制码的位数
-
指令字长通常取存储字长的整数倍
- 存储周期就是机器周期的二倍
-
-
-
存储字长
- 一个存储单元存储的二进制代码数
-
决定性字长取决于
-
程序计数器的位数
- 存储器的容量
-
指令寄存器的位数
- 指令字长
-
CPU中通用寄存器的位数
- 机器字长
-
操作系统的位数
- 操作系统可寻址的位数
-
n位的cpu的位数
- 数据总线线数
-
地址总线线数(MAR位数)
-
可寻址的范围。即存储器最大存储范围
- PC的位数一般与他相同
-
-
数据总线线数
-
一次可取数据的位数
- MDR的位数
-
-
控制总线线数
- 一次可并行传送的控制信息位数
-
I/O线数
- 与外设 通信的程度
-
指令寄存器
- 指令字长
-
-
字长
- 指令字长等于存储字长的时候取指周期等于机器周期
-
透明
-
透明的
-
CPU内部
- Ir,mar,mdr
-
微程序的结构和功能
-
-
非
- 指令数据格式,运算
-
-
存储器交换
- 主存和cache之间数据调动是硬件完成的,对所有程序员透明
- 主存和辅存之间的数据调动是由操作系统完成的,对应用程序猿是透明的
-
子主题 9
-
可不可见
-
用户可见(可编程)
-
通用寄存器组
-
程序状态寄存器
-
PC
- 汇编程序员可见
-
-
不可见(透明的)
- 存储器地址寄存器
- 存储器数据寄存器
- 指令寄存器
-
补充
- 速度:寄存器》cache(sram)〉内存(dram)
- 兼容是指计算机软件或硬件的通用性,通常在同一系列的不同型号的计算机间
- 描述速率、频率时k,m用10的幂次表示,在描述存储容量时用2的幂次表示
2 数据的表示和运算
数制与编码
-
进制转换
-
二进制到八/十六进制
- 二进制的3/4位编为一组
-
八进制转为十六进制
- 先转换为2进制
-
任意进制到10进制
-
十进制到任意进制
-
整数部分:除基取余法
-
小数部分:乘基取余法
- 并不是每个小数都能用二表示
-
-
-
BCD码
- 8421码
- 余3码
- 2421码
-
字符与字符串
-
ASCII码
- 7位二进制
-
字符的大端小端模式
-
大端模式:先存高字节到高地址单元,小端相反
- 最低有效字节LSB,最高有效字节MSB
-
注意:大都是按照字节进行排的。两个字符算一个单位
-
-
汉字编码
- 每个编码用两个字节表示
-
-
校验码
-
码距>2,码距越大,检错,纠错能力越大
-
奇偶校验码
- 1个数为奇数或偶数
- 仅能发现奇数个错误,且不能纠错和发现偶数个错误
-
汉明校验码
-
不仅可以发现错误,还能指出错误的位置
-
先求k,然后排序2^i-1,分组,异或运算
-
检验原理
- 能发现两位错误,并纠错一位
-
-
循环冗余校验码
- 信息码补n位0,除多项式,模2除法。不借位()
- 发现并纠错一位或者多位
-
定点数的表示与运算
-
定点数的表示
-
无符号数
-
真值与机器数
-
有符号数
-
原码表示法
-
补码表示法
-
-128=10000000
- 求比较的时候,负数越大越接近于10000
-
-
反码表示法
-
移码表示法
- +2^(n-1)
- 0的表示唯一。可用来比较大小
-
-
不同机器数之间的转换
-
-
定点数的运算
-
移位运算
-
移位符号位不变,移位后相当于对真值补0
-
算术移位
-
正数补0
-
负数
-
原码补0,反码补1
- 补码,左移补0,右移补1
-
-
-
逻辑移位
- 视为无符号数,补0
-
循环位移
- 带进位的
- 不带进位的
-
-
加减运算
-
溢出判断
-
采用1位符号位
-
采用双符号位
- 两个符号相同无溢出,01正溢出,10负溢出
-
一位符号位根据数据位的进位情况判断
-
-
乘除运算
-
原码一位乘法
- 符号位异或
- 真值部分绝对值右移相加
-
补码一位乘法
-
原码一位除法
-
补码一位除法
-
-
强制类型转换(都先转换为补码)
-
有符号数和无符号数
- 保持位值不变,仅改变了解释这些位的方式
-
不同字长整数之间的转换
- 长到短,高位截断
- 短到长,补充高位符号位
- char是8位ascii,转为Int高位补0
-
-
浮点数的表示与运算
-
基本格式
-
格式化
- 左规
- 右规
-
表示范围
- p91页表2.9
-
IEEE 754标准
算数逻辑单元
-
ALU
-
功能
- 算术运算
- 逻辑运算
- 辅助功能:移位,求补
-
基本结构
- 输入
- 控制
- 输出
-
-
加法器
-
一位全加器
- 和
- 进位
-
串行加法器
- 一位全加器&进位触发器
-
并行加法器
-
进位产生原理
- 进位产生信号&进位传递型号
-
串行进位
-
全加器简单串联
-
并行进位
- 组内并行,组间串行
- 组内并行,组间并行
-
-
-
3 存储器
存储器系统
-
存储器分类
-
在计算机中的作用分类
-
主存储器
特点:CPU可以直接访问存储。容量小,存储速度较快。单价高
-
辅助存储器
特点:不能与CPU直接进行交换。容量大存储速度慢,单件价格低。
-
高速缓冲存储器
简称:Cache,位于主存和CPU之间。用来存放正在执行的程序段和数据。便于CPU进行高速访问。速度与CPU相当。但价格高。
-
-
存储介质分类
-
磁表面存储器
磁盘,磁带
-
磁芯存储器半导体存储器
MOS型存储器,双极型存储器。
-
光存储器
-
-
存取方式进行分类
-
随机存储器(RAM)
-
分为
静态RAM(以触发器原理寄存信息)SRAM
动态RAM(以电容充电原理寄存信息)DRAM -
特点,优点,作用于
特点:任何一个存储单元的内容都可以进行随机访问,存取时间与存储单元的位置无关。
优点:读写方便,使用灵活。
用于:用作主存或者高速缓冲存储器。
-
-
只读存储器(ROM)
-
特点
只能随机读出,不能写入。可用于操作系统的固化。
与随机存储器可共同作为主存的一部分,统一构成主存的地址域。
-
-
串行访问存储器
-
特点
:读/写 按照物理位置的先后顺序寻址、
-
分类
-
顺序存取存储器(磁带)
按照顺序存取
-
直接存取存储器(磁盘)
存取信息时,先寻找存储器中的某个小区域。然后再在小区域内进行顺序查找。
-
-
-
-
信息的可保存性分类
-
易失性存储器
- RAM
-
非易失性存储器
- ROM,磁表面存储器,光存储器。
-
补充
具有破坏性读出性能的存储器,每次读出操作后,必须紧接着一个再生操作,恢复被破坏的信息。
-
破坏性读出
读出时。原信息被破坏
-
非破坏性读出
-
-
-
-
存储器的性能指标
-
存储容量
=存储字数存储字长 也相当于存储器的地址空间8位
- =存储字数存储字长 也相当于存储器的地址空间8位
-
单位成本
总成本/总容量
-
存储速度
-
数据传输率=数据的宽度/存储周期
-
存储时间(Ta)
-
存取周期™
-
主存带宽(Bm)
数据传输率,每秒从主存进出信息的最大数量,单位,字/秒、字节每秒,位每秒
-
-
3.2存储器的层次结构
-
体现的两个层次
-
Cahe-主存
- 解决CPU和主存速度不匹配的问题
-
主存-辅存
- 解决存储系统的容量问题
-
-
主要
-
目的:
解决系统大容量,高速度和低成本3个相互制约的矛盾。
原因:cpu,寄存器,cache,主存,磁盘,磁带价格降低,但速度降低。 -
主要思想:
存储器层次的主要思想是上一侧的存储器作为第一层的存储器的高速缓存
-
-
补充
-
两个图
-
三级存储系统的层次结构
-
多级存储器结构
-
-
补充
- 现在计算机都采用这种三级存储系统
- 主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员都是透明的
- 而主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的
-
考点:
-
Cache命中率求解
设命中率为X,则,Cache存取时间*X+主存存取时间(1-x) = Cache存取时间
-
多级存储系统的概念
-
访问时间
Cache命中率 = (cache命中)/(chahe命中+主存完成存取的次数)
平均访问时间 = Tc/e e(访问效率)
-
-
Cache主存效率
-
3.3半导体随机存储器
-
SRAM和DRAM
-
SRAM工作原理
SRAM的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,因此信息被读取后,仍保持原状态而不需要再生(非破坏性读出)
- 组成cache
-
DRAM工作原理
DRAME的是利用存储元电路中电容上的电荷来存储信息的,DRAM的基本存储单元通常只使用一个晶体管,所以它比SRAM的密度高。
DRAM采用地址复用技术,地址线是原来的1/2,且地址信号分行,列两次传送。-
刷新
-
集中刷新
固定时间对所有行进行逐一再生,存在死区,存取速度高
- 死亡时间就是刷新的次数乘以存取周期。时间率是除以2ms
-
分散刷新
把刷新分散到各个工作周期中。无死区,但加长了存取周期。
- 默认存取周期和刷新周期相同
-
异步刷新
将刷新周期除以行数,得到两次刷新操作之间的时间间隔,利用逻辑电路每隔时间t产生一次刷新请求。可避免使CPU连续等待过长的时间,而且减少了刷新次数,提高了效率。
- 大刷新周期默认2ms
- 刷新取刷新周期或存取周期的整数倍,向下取。
-
-
刷新注意:
刷新对CPU是透明的,即刷新不依赖于外部的访问
动态RAM的刷新单位是行,因此刷新操作时仅需要行地址
刷新操作类似于读操作,但又有所同。刷新操作仅给栅极电容补充电荷,不需要信息输出。另外,刷新时不需要选片,即整个存储器中的所有芯片同时被刷新 -
刷新以行为单位
-
-
读写周期(了解即可)
对存储器进行连续两次存取操作所需要的最小时间间隔
-
Questions:
-
为什么采用SRAM作为Cache
因为SRAM内部采用的是双稳态电路的形式来存储数据,不需要进行刷新,SRAM的存取相较于DRAM速度快(,但是集成度低,功耗大。)
-
SRAM价格贵的原因?
一个SRAM存储单元大约需要六个晶体管,集成度低,做工复杂。DRAM通常使用1个晶体管。
-
为什么使用DRAM作为主存系统
相对于SRAM来说,DRAM具有容易集成、位价低、容量大和功耗低等优点,但DRAM的存取速度比SRAM的慢,一般用来组成大容量主存系统
-
为什么DRAM需要刷新?
因为DRAM上的电荷只能维持1-2ms,因此即使电源不断电,信息也会自动消失,因此需要每隔一段时间进行刷新,通常取2ms.
-
易失性存储器和刷新的区别
易失性存储器是指断电后数据丢失,SRAM和DRAM都满足断电内容消失,但需要刷新的只有DRAM,而SRAM不需要刷新
-
-
-
只读存储器
-
特点
结构简单,所以位密度比可读写存储器的高
具有非易失性,所以可靠性高 -
类型
-
掩模式只读存储器(MROM)
生产直接写入,无法更改。可靠性高,集成度高,但灵活性低
-
一次可编程只读存储器(PROM)
一次可编程
-
可擦除可编程只读存储器(EPROM)
可编程次数有限,写入时间太长
- 2011年考过
-
闪速存储器(Flash Memory)
不加电可长期保存,可重写。价格便宜,速度快,集成度高
- 2012年考过
-
固态硬盘(Solid State Drives)
由控制单元和Flash Memory构成。读写速度快,低功耗。价格高
-
-
组成
-
地址线和数据线
-
数据线的长度和MDR相同,地址线的宽度和MAR相同
-
36位MAR地址最大寻址范围为0-2^36-1
-
数据线和地址线共同反映存储体容量的大小 2^36*64位
-
32K*16位
- 地址线15位,数据线16位
-
-
地址引脚和数据引脚的计算
-
-
3.4主存储器与CPU的连接
-
连接原理
- 数据总线的位数与工作频率的乘积正比于数据传输率。
- 地址总线的位数决定了可寻址的最大内存空间
- 控制总线(读/)指出总线周期的类型和本次输入输出操作完成的时刻。
-
主存容量的扩展
-
位扩展法
- 数据总线的并列,增加位数,后面的那个数
-
字扩展法
- 使用译码器选中部分芯片。4片 16K8位,组成64K8位。用最高地址线2^n=4.n=2位做片选
-
字位同时扩展法
-
-
存储芯片的地址分配和片选
- 注意片选线的选择,划分
-
存储器与CPU的连接
-
地址线的选择
-
低位和存储芯片的地址线连接
- 从0开始
-
高位用于扩展
-
-
3.5 双端口RAM和多模块存储器
-
双端口RAM
-
出现四种情况
两个端口不同时对同一地址单元存取数据。
两个端口同时对同一地址单元读出数据。
两个端口同时对同一地址单元写入数据。
两个端口同时对同一地址单元操作,一个写入数据,另一个读出数据- 同一地址访问时会发生冲突。(类比于生产者消费者,有两个口可以访问)
-
出现错误
第三种出现写入错误
第四章出现读出错误-
解决方法:
其中一个端口置忙
-
-
-
多模块存储器
-
单体多字存储器
同一地址取出M个指令,然后1/m周期,cpu取一个。
-
优点:
增大了存储器的带宽,提高了存储器工作的效率
-
缺点:
指令和数据在主存内必须是连续存放的,如果遇到转移指令,或操作数不能连续存放,效果就不明显了
-
-
多体低位交叉存储器
-
由多体模块组成,每个模块相互独立。
-
分类
-
连续编址方式
模块内连续
cpu按顺序访问模块,因此不能并行访问存储模块,所以也不能提高存储器的吞吐率-
编址方式:
- 把低位的体内地址送到由高位体号确定的模块内进行译码。
-
存储器方式
- 存储器方式仍是串行存取,因此这种存储器仍是顺序存储器
-
-
交叉编址方式
低位地址为体号,高位为体内地址
模m进行交叉编址。
程序连续存放在相邻模块中,因此成为交叉存储器-
编址方式:
- 把高位的体内地址送到由低位体号确定的模块内进行译码。
-
补充
另外:这种编址可以在不改变每个模块存取周期的前提下,采用流水线的方式进行存取,提高存储器的带宽。流水线处理,可以提高带宽
- 流水线处理
-
-
-
-
-
考点
-
低位交叉编址流水线方式
存储器模块大于等于m=T/r (T:模块去一个字的存取周期,r总线传送周期,)
前提:模块字长等于数据总线宽度-
模块数=存取周期/总线周期
- 有时计算可以省略前面起始。需要注意
-
-
计算顺序方式和交叉方式的周期
-
发生冲突
- 连续两次访问相邻的序列在同一模块
-
注意
- 交叉编址存储器有时默认是低位交叉编址。最低位代表
-
3.6 高速缓冲存储器
-
程序访问的局部性原理
-
时间局部性
最近的未来要用到的信息,很可能是正在使用的信息(有些循环可能重复使用信息)
-
空间局部性
最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的。(因为指令通常是顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的)
-
-
Cache的基本工作原理
Cache和主存都被划分为相等的块。(便于CPU和主存之间交换信息)
每块由若干字节组成,块的长度成为块长(Cache行长)
Cache中仅保存主存中最活跃的若干块的副本(Cache容量小于主存)
Cache按照某种策略,预测CPU在未来一段时间内欲访问的数据,装入Cache
CPU发出请求,如果访存地址在Cache命中,就将此地址转换为Cache地址,直接进行Cache读操作。与主存无关-
如果不命中?
如果不命中,需要访问主存,并把此字所在的块一次性从主存调入Cache。
-
如果Cache已满?
如果Cache已满,置换算法
-
CPU和Cache,Cache与主存之间的数据交换单位
CPU和Cache直接的数据交换以字为单位
Cache与主存之间的数据交换以Cache块为单位- 虚拟存储器段,页式以页为单位和主存交互
-
cache命中率计算
- cache和主存同时被访问
- 先访问cache在访问主存
-
-
Cache和主存的映射方式
-
直接映射
-
优缺点
优点:实现简单
缺点:不够灵活,块冲突概率最高,空间利用率最低 -
映射到 ?
映射到 主存mod cache块
-
-
全相联映射
主存中任何一块都可以映射到Cache的任何一块中
-
优缺点
优点:映射方式灵活,cache利用率高,快冲突率低,命中率高
缺点:比较速度慢,实现成本高,Cache比较电路的设计和实现比较困难,常需要昂贵的按内容寻址的相联存储器进行地址映射。
适合:小容量Cache- 需要采用昂贵的按内容寻址的相联存储器进行地址映射
-
-
组相联映射
直接映射和全相联映射的折中,Cache和主存都分组,然后组间采用直接映射,组内采用全相联映射
也就是说,将Cache分成u组,每组v块,主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的- 优缺点:二者折中
-
-
Cache中主存块的替换算法
-
随机算法(RAND)
-
先进先出(FIFO)
选择最早调入的行进行替换
-
近期最少使用(LRU)
近期内长久未使用的行进行替换
-
最不经常使用(LFU)
一段时间内访问次数最少的行换出
-
-
Cache写策略
-
Cache写命中
-
全写法
数据同时写入主存和Cache
-
缺点:
增加访问次数,降低了Cache效率
-
解决:
Cache和主存之间增加写缓冲
解决速度不匹配,FIFO队列
-
-
写回法
只写入Cache,当被替换时才写入主存
每行设置一个标志位(脏位),反映是否被CPU修改过,避免访问不一致
-
-
Cache写不命中
-
写分配法
加载主存的块到Cache,然后更新
试图利用程序的空间局部性,-
缺点:
不命中需要重新从主存中读
-
-
非写分配法
只写入主存,不掉块
通常与全写法合用,写分配法通常和写回法合用-
原因:
现在的计算机通常设立多级Cache,离CPU越远,速度越慢,容量越大
-
-
-
3.7虚拟存储器
-
虚拟存储器的基本概念
虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,用户可以在里面进行自由编址,而不需要在乎实际的主存容量和程序存放的位置
虚拟地址比实际地址大-
过程
CPU使用虚地址时,由复制硬件扎到虚地址和实地址之间的对应关系,并判断虚地址对应的存储单元是否已装入内存。
-
如果已装入内存:
通过地址变换,cpu可以直接当我主存指示的实际单元
-
如果不存在主存中:
则把包含这个字的一页或一段调入主存后再由CPU访问
-
如果主存已满,
采用替换算法置换主存的一页或一段
-
-
-
页式虚拟存储器
以页为基本单位的虚拟存储器称为页式虚拟存储器。
-
虚拟地址=?
虚拟地址=虚页号+业内地址
-
页表(将虚拟地址转换到物理地址):
是一张存放在主存中的虚拟号和实页号的对照表,记录程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。
-
组成:
-
有效位(装入位)
-
表示对应页面是否在主存
1:则表示该虚拟页已从外存调入主存,此时页表项存放该页的物理页号
0:没有调入主存,此时页表项可以存放该页的磁盘地址
-
-
脏位(修改位)
- 表示页面是否被修改过
- 虚拟机制采用写回策略
- 利用脏位可判断替换时是否需要写回磁盘
-
引用位
设置替换策略
-
-
优缺点:
优点:页面的长度固定,页表简单,调入方便。
缺点:由于程序不可能正好是页面的整数倍,最后一页的零头将无法利用而造成浪费,并且页不是逻辑上独立的实体所以处理、保护和共享都不及段式虚拟存储器方便
-
-
快表(TLB):加快地址转换
把经常访问的页表放入高速缓冲存储器中(快表)
-
地址转换时先查找快表
-
快表通常采用全相连或组相联方式
-
TLB项由页表内容+一个TLB标记字段
-
TLB标记的内容
- 全相联:该页表项对应的虚页号
- 组相联:虚页号的高位部分,而虚页号的低位部分用于选择TLB的组索引(操作系统3.2.7)
-
-
具有Cache和TLB的虚拟存储系统中,CPU一次访存操作可能涉及TLB,页表,Cache 、主存和磁盘的访问。
-
CPU访问过程中存在三种缺失情况
-
TLB缺失
:要访问的页面对应的页表项不在TLB中
-
Cache缺失:
要访问的主存快不在Cache中
-
缺页Page:
要访问的页面不在主存中
-
-
-
段式虚拟存储器
按照程序的逻辑结构划分,各段长度因程序而异
-
虚拟地址:
段号、段内地址
-
变换:
虚地址到实地址由段表实现
-
过程:
CPU根据虚拟地址访存时,首先根据段号与段表基地址拼接成对应的段表行,然后根据该段表行的装入位判断该段是否已调入主存(装入位为“1”,表示该段已调入主存;装入位为“0”,表示该段不在主存中)。已调入主存时,从段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,得到对应的主存实地址。
-
优点,缺点:
优点:段的分界与程的自然分界相对应,因而具有逻辑独立性,使得它易于编译、管理、修改和保护,也便于多道程序共享
缺点:因为段长度可变,分配空间不便,容易在段间留下碎片,不好利用,造成浪费
-
-
段页式虚拟存储器
程序按逻辑结构分段,每段再划分为固定大小的页,主存也划分为大小相等的页
程序对主存的调入调出以页为基本单位
每个程序对应一个段表,每段对应一个页表,段的长度是页长的整数倍,段的起点是某一页的起点-
虚地址:
段号、段内页号、页内地址
-
优点:缺点
优点:兼具页式和段式虚拟存储器的优点,可以按段实现共享和保护
缺点:地址变换过程中需要两次查表,系统开销较大 -
过程:
CPU根据虚地址访存时,首先根据段号得到段表地址;然后从段表中取出该段的页表起始地址,与虚地址段内页号合成,得到页表地址;最
-
-
虚拟存储器与Cache的比较
- cache是为了加速内存的访问,而tlb是为了虚拟地址到物理地址的转换
- 相同之处
- 不同之处
4 指令
4.1 指令格式
-
基本概念
-
指令:
是指示计算机执行某种操作的命令,计算机运行的最小功能单位
-
指令系统(指令集):
一台计算机的所有指令的集合
指令系统是计算机的主要属性,位于硬件和软件的交界面上
-
-
指令的基本格式
-
指令
-
一条指令通常包括操作码字段和地址码字段两部分
-
操作码:
指出指令中指令应该执行什么性质的操作和具有何种功能。
操作码是识别指令、了解指令功能及区分操作数地址内容的组成和使用方法的关键信息。 -
地址码:
给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的
-
指令长度:
是指一条指令中所包含的二进制代码的位数
-
指令的长度取决于?
操作码的长度、操作数地址码的长度和操作数地址的个数,与机器字长没有固定的关系。
-
-
分类:(机器字长比较)
- 单字长指令
- 半字长指令
- 双字长指令
-
两种结构:
-
定长指令结构
一个指令系统中,所有的指令的长度都是相等的
-
特点:
执行速度快,控制简单
-
-
变长指令结构
各指令长度随指令功能而异
-
-
-
零地址指令
-
只给出操作码OP,没有显式地址。
-
可能:
不需要操作数的指令,如空操作指令、停机指令、关中断指令等
零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
-
-
一地址指令
-
两种形式
1 只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。
指令含义:OP(A1)→A1如操作码含义是加1、减1、求反、求补等。2 隐含约定目的地址的双操作数指令,按指令地址A1可读取源操作数,指令可隐含约定另个操作数由AC(累加器)提供,运算结果也将存放在ACC中。
指令含义:( ACC)OP(A1)→ACC
若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为2^24=16M- 两种形式,要根据操作码的含义确定为哪一种
-
-
二地址指令
指令含义:(A1)OP(A2)→A1
对于常用的算术和逻辑运算指令,往往要求使用两个操作数,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果-
三地址指令
指令含义:(A1)OP(A2)→A3
A3用來存放結果-
四地址指令
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址。
-
-
-
-
定长操作码指令格式
定长操作码指令在指令字的最高位部分分配固定的若干位(定长)表示操作码
定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利。 -
扩展操作码指令格式
最常见的变长操作码方法是扩展操作码,它使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
-
目的:
为了在指令字长有限的前提下仍保持比较丰富的指令种类,采取可变长度操作码
-
特性:
增加指令译码和分析的难度,使控制器的设计复杂化
-
注意:
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
-
不能有前缀
- 如果要扩展更少地址指令,前面必须至少留1个。例如4位,用了15个,留了一个,可以直接乘以后面的2^n。如果后面有零指令需要留。注意题目无零指令
-
4.2指令的寻址方式
-
指令寻址和数据寻址
-
指令寻址
-
顺序寻址
- (PC)+1,自动形成下一条指令地址
-
跳跃寻址
-
转移指令会给出下条执行的计算方式。是否跳跃受到状态寄存器的控制。满足条件才会进行跳跃
-
跳跃的结果是当前指令修改PC的值
- 但下一条指令仍然通过PC给出
-
-
-
数据寻址
- 定义:在指令中表示一个操作数的地址方式,并用这种方式得到操作数的地址
- 指令格式:
-
-
常见的寻址方式
-
隐含寻址
这种类型的指令不明显地给出操作数的地址,而在指令中隐含操作数的地址。
-
优点缺点
优点是有利于缩短指令字长;
缺点是需增加存储操作数或隐含地址的硬件。- 记住是算术运算的操作数来自这个就行
-
不明显的给出操作数地址
-
-
立即(数)寻址
这种指令的地址字段指出的不是操作数的地址,而是操作数的本身,又称立即数,数据采用补码形式存放。
-
优点缺点
优点是指令在执行阶段不访问主存,指令执行讨间最短;
缺点是A的位数限制了立即数的范围。 -
形式地址A就是操作数本身
-
-
直接寻址
指令字中的形式地址A是操作数的真实地址EA,即EA=A,
-
优点缺点
优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址
缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改 -
执行访问一次主存
-
-
间接寻址
间接寻址是相对于直接寻址而言的,指令的地址字段给出的形式地址不是操作数的真正地址,是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)
-
间接寻址也可多次间接寻址,多次时主存第一位标志地址还是操作数
-
优点 缺点
优点是可扩大寻址范围(有效地址EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可方便地完成子程序返回);
缺点是指令在执行阶段要多次访存(一次间接寻址需两次访存,多次间接寻址需根据存储字的最高位确定访存次数)。
由于访问速度过慢,这种寻址方式并不常用。一般问到扩大寻址范围时,通常指的是寄存器间接寻址 -
一次间接寻址访问两次内存
-
方便程序子程序返回
-
-
寄存器寻址
寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数在由R所指的寄存器内
-
优点缺点
优点是指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小,使得指令字短且因不用访存,所以执行速度快,支持向量矩阵运算;
缺点是寄存器价格昂贵,计算机中的寄存器个数有限。 -
不访问主存
-
-
寄存器间接寻址
寄存器间接寻址是指在寄存器R1中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(R)
-
特点
与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存
(因为操作数在主存中) -
需要访问主存
-
扩大寻址范围,使用,并非用间接寻址
-
-
相对寻址
- PC+形式地址A(补码表示)
- 转移指令jump A.如果转移地址为x,占2B。则取指时(pc)=x+2,执行完指令到x+2+A
- 随pc值变化而变化,操作数地址和指令地址总相差一个固定值,因此便于程序浮动。广泛用于转移指令
-
基址寻址
- EA = (BR)+A
- BR:基址寄存器
面向操作系统,其内容有操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性 - 可采用 - 专用寄存器 专用寄存器包括程序计数器PC、堆栈指示器SP和标志寄存器FR,它们的作用是固定的,用来存放地址或地址基值 - 通用寄存器 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果 - 通用寄存器需要进行标记
-
优点:,
- 有利于多道程序设计,并可用于编制浮点程序
-
优点:
-
原因:
用户不用考虑自己的程序存于内存的哪一个空间区域
-
-
变址寻址
- EA = (IX)+ A
- IX:变址寄存器,可用通用寄存器作为
- 变址寄存器是面向用户的,执行过程中IX的内容可以由用户改变。基址面向系统,执行过程值不可变
- 优点:扩大寻址范围
- 用与数组和循环程序
-
堆栈寻址
堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出(LFO)原则管理的存储区
-
分类
- 硬堆栈:寄存器堆栈
- 软堆栈:主存划出的区域
-
-
指令执行都需要访存的,因为操作数在内存中
-
-
X86汇编指令入门
- 相关寄存器
- 寻址模式和内存分配
- 常用指令
-
补充
-
指令译码是对操作码进行的
- cpu不包括地址译码器,位于存储器
-
4.3 CISC和RISC的基本概念
-
CISC
-
设计原因:
随着VLSI技术的发展,硬件成本不断下降,软件成本不断上升,促使人们在指令系统中增加更多、更复杂的指令,以适应不同的应用领域,这样就构成了复杂指令系统计算机(CISC)
-
特点
1)指令系统复杂庞大,指令数目一般为200条以上。
2)指令的长度不固定,指令格式多,寻址方式多。
3)可以访存的指令不受限制。
4)各种指令使用频度相差很大
5)各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成
6)控制器大多数采用微程序控制。有些指令非常复杂,以至于无法采用硬连线控制。
7)难以用优化编译生成高效的目标代码程序。- 微程序控制
-
-
RISC
-
设计原因:
CISC过于复杂,设计要求逐渐提高,研发周期变长,并且设计的80%的指令使用频率却只有20%,从这个事实出发
-
设计中心思想
精简指令系统计算机(RIsC)的中心思想是要求指令系统简化,尽量使用寄存器寄存器操作指令,指令格式要求一致
-
特点
1)选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
2)指令长度固定,指令格式种类少,寻址方式种类少。
3)只有 Load/store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。
4)CPU中通用寄存器的数量相当多
5)RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。
6)以硬布线控制为主,不用或少用微程序控制。
7)特别重视编译优化工作,以减少程序执行时间。- 硬布线控制
- Load/Store指令
-
-
对比圖
程序控制指令
-
转移指令
- 有条件转移指令
- 无条件转移指令
-
循环控制指令
-
调用和返回指令
-
中断指令
5 中央处理器
CPU的功能和基本结构
-
功能
-
指令控制
- 取指,分析指令,执行指令
-
操作控制
- 控制完成什么样的动作
-
时间控制
- 控制指令按时间顺序的信号
-
数据加工
- 逻辑和算术运算
-
中断处理
- 异常处理和特殊请求
-
-
基本结构
-
运算器
-
控制器
-
在控制器的控制下,计算机在不同的阶段对存储器读写,取出来的代码用处也不同
-
-
指令执行过程
-
指令周期包含机器周期,机器周期包含时钟周期
- 机器周期:完成指令周期中的一个过程
-
指令的周期
-
取指周期
-
取指令字
-
取指操作是自动进行的,控制器不需要得到相应的指令
- 但是在微程序下需要取要取指微程序
-
-
-
间址周期
- 取操作数有效地址
-
执行周期
- 取操作数
-
中断周期
-
保存断点
- 开中断下,每条指令执行结束时都可被外部中断打断
- 先sp-1然后再存入数据
- 中断隐指令引出中断程序,微程序下要多一个中断的微程序
-
-
-
补充:总线周期
- 包括申请,寻址,传输,结束阶段
数据通路的功能和基本结构
-
分类
-
内部单总线
- 要考虑总线冲突问题
- 单总线的alu仅有一个输入端相连
-
内部三总线
-
专用数据通路方式
-
-
考点
- 数据通路框架图和数据流向
- 执行阶段信息流向和控制信号
-
数据通路是功能部件之间的传送路径,一般出现这个传送途径都是挖坑的
-
内部总线,系统总线区别
控制器的功能和工作原理
-
硬布线控制
-
组合逻辑电路
-
时钟,节拍发生器
-
由组合逻辑电路根据指令码即时产生
- 相反与下面
-
-
CPU控制方式
-
同步控制方式
-
统一的时钟
- 速度慢
-
-
异步控制方式
- 无统一时间,采用应答方式联络
-
联合控制方式
-
-
-
微程序控制器
-
微程序存放在控制存储器,执行指令需要从控存读出
- 速度慢,易扩充,用于cisc
-
概念
-
微命令,微操作
-
微指令
- 若干微命令的集合
-
微周期
- 对应微指令
-
程序和微程序
-
主存储器和控制存储器
-
-
n种机器指令,控制存储器微程序数最少是n+1.如果公共为n+3
- 一条机器指令对应一个微程序
-
编码方式:核心p61
-
直接编码
-
字段直接编码
- 相容,不相容,译码,空留状态位表示不操作,多一个
-
-
微指令的格式
- 水平
- 垂直
-
-
二者区别和相同p61
指令流水线
-
分类:顺序,一次,二次重叠
-
指令流水线时空图
-
特点
- 设缓存寄存器,各段时间尽量相同
-
影响因素
-
资源冲突
- 解决
-
相关问题
-
相邻指令间存在某种关联,使得指令流水线出现停顿
-
分类
-
数据冲突(数据冒险)
-
下条指令使用上条指令的结果
-
解决
- 暂停执行
- 设置通路,下一个不写入寄存器我就不开始读
- 指令编译优化
-
-
控制冲突(控制冒险)
-
判断真假或跳转时,无法确定该指令的下一条指令
-
解决
-
分支预测
-
静态分支预测
- 随便选一个
-
动态分支预测
- 根据程序执行历史
-
-
预取指令
-
-
-
cache缺少也会引起流水线阻塞
-
-
-
-
性能指标
-
吞吐率
-
任务数/完成任务需要的时间 n/T
-
k+n-1时间可以完成n个任务
- 前x秒完成一个任务,后面每段时间完成一个任务
-
-
-
加速比
-
不使用流水线与使用流水线完n个任务的比
- kn/(n+k-1) =k
-
-
效率(设备利用率)
- 公式
-
-
补充:超标量流水线的特性
-
每个周期同时并行发送多个指令
- 好几个同时开始
-
不能调整指令的执行顺序
-
配置多个功能部件
-
-
超流水线
-
时钟周期内再分段
- 稍微错开一点点
-
一个功能部件多次使用
-
-
流水线阻塞
-
指令流水线通路
- 概念
6 总线
总线概述
-
目的
- 解决i/o设备和主机之间连接的灵活问题
-
分时,共享
-
系统总线
- 总线的工作频率
- 总线的带宽
- 数据总线是双向的。区分数据通路
-
总线的性能指标
总线仲裁
总线操作和定时
-
异步定时方式
- 全互锁
- 半互锁
-
同步定时方式
总线标准
- USB,PCI,PCI-E
- SATA
- 系统总线,局部总线,串行还是并行
- 标准和特点
总线设计,看看课本
7 输入输出系统
i/o系统基本概念
外部设备
-
磁盘阵列计算。考了两次
- 平均查询扇区时间是转一圈的一半
- 存取时间=寻道时间+延迟时间+传输时间
-
RAID0-5
-
显示器相关计算
-
VRAM显示存储器容量
- 分辨率*灰度级位数
-
带宽
- 再乘以刷新频率
-
像素颜色代表位
-
I/O接口
-
功能
-
基本结构
- 外设的状态和控制信息通过数据线传送
- 状态寄存器和控制寄存器的传送方向是相反的
- 控制线:传送读写信号,仲裁,握手信号
- 地址线:给出访问接口的寄存器的地址
-
端口、接口
-
CPU对数据端口执行读写,状态端口只能读,控制端口只能写
-
独立编址
-
在主存中划分,看做存储器的地址。用访存指令
- 通过地址码区分
-
-
统一编址
- 主存和io地址是分开的,需要I/O指令进行访问
IO方式
-
程序查询
-
程序中断
-
程序中断方式
-
内中断(异常,陷入,例外)
-
处理器和内存引起的
-
运算错误,用户执行特权指令,时间片中断,用户态核心态的转换
-
自愿中断
- 系统调用
- 访管指令(trap,陷入)
-
强迫中断
-
硬件故障
-
软件中断
- 程序的非法操作码,地址越界,算出溢出(下溢不需要中断),虚拟系统的缺页
-
-
-
外中断(中断)
-
外设请求,人的干预
-
硬件中断
- 非屏蔽中断
- 可屏蔽中断
-
-
补充
- 陷入是预先设定好的,用于将CPU使用权交给操作系统内核,砖混到核心态
- 故障如缺页
- 终止是直接报错,不返还指令
-
-
中断判优
-
软硬件都可以实现
-
中断优先级
- 硬件故障》》软件中断
- 非屏蔽优于屏蔽
- DMA高于程序中断
- DMA优于I/O
- 访管优先级大于外部中断和程序性中断
- 高速大于低速,输入大于输出
-
-
中断必须满足三个条件
-
中断隐指令
- 由硬件自动执行的某些过程
-
中断屏蔽
- 设计中断屏蔽字
- 中断请求时Cpu执行轨迹
-
多重中断
-
中断处理过程。顺序(299表)会背
- 硬件完成
- 中断程序完成
-
-
DMA方式
-
传送方式:解决冲突
- 停止CPU访问主存
- DMA与CPU交替访存
- 周期挪用
- DMA适用于高速外设和主存交换,鼠标键盘不适用
-
传送过程
-
计算I/O外设的CPU占用情况
- 分为计算中断或者DMA方式,DMA方式中只有预处理和后处理才占用CPU
- 每传送一次数据,占用CPU的时间是多少个时钟周期
- 外设准备数据需要的时间
- 每秒可准备的数据个数,即是每秒需中断的次数
- i/o占比时间为中断时钟周期/主频
-
-
补充
- DMA传送一个数据需要占用一个存取周期
-
-
DMA和中断的对比
- 见A4纸
-
中断响应优先级和中断处理优先级的区别
-
通道方式
- 通道直接和外设向连接,执行通道程序
- 通道程序存放在主存,但由通道取出并执行
组原框架
指令系统
-
指令格式
-
定长指令格式与变长指令格式
-
操作码
- 定长操作码与扩张操作码
- 操作类型
-
地址码
-
-
指令寻址方式
-
指令寻址
- 顺序寻址
- 跳跃寻址
-
数据寻址
- 隐含寻址、立即寻址
- 直接寻址、间接寻址
- 寄存器寻址、寄存器间接寻址
- 偏移寻址、基址寻址、变址寻址、相对寻址
- 堆栈寻址
-
-
CISC和RISC
-
补充内容
-
数据存放
- 编址与寻址
- 大端和小端
- 边界对齐
-
程序计数器PC
-
存储系统
-
存储器与CPU的协同工作
- 存储器的简单模型及寻址的概念
- 主存与CPU的连接
- 双口RAM和多模块存储器
- 高速缓冲存储器
- 虚拟存储器
-
半导体存储器
-
存储芯片的基本结构
-
SRAM、DRAM的工作原理
- SRAM|DRAM工作原理与特点
- DRAM的刷新
- RAM的读写周期
-
ROM的特点和基本类型
-
-
基本概念
- 分类
- 性能指标
-
Cache工作原理
-
地址映射方式
- 全相联:主存字块标记|字块内地址
- 直接映射:主存字块标记|Cache字块地址|字块内地址
- 组组联:主存字块标记|组地址|字块内地址
- 标记项:有效位、标记位(主存字块标记)
-
替换算法
- 随机算法(RAND)
- 先进先出算法(FIFO)
- 近期最少使用(LRU)
- 最不经常使用(LFU)
-
写策略
-
命中
- 全写法(write-through)
- 写回法(write-back)
-
不命中
- 写分配法 write-allocate
- 非写分配法 not-write-alloca
-
-
-
虚拟存储器
-
基本概念
- 虚地址(逻辑地址)
- 实地址(物理地址)
-
类型
- 页式
- 段式
- 段页式
-
虚拟地址转换
- 快表TLB
- 慢表Page
-
访问过程
-