计算机组成原理
1. 计算机系统概述
1. 计算机系统层次结构
- 冯诺依曼机的基本工作方式:控制流驱动方式
- 在运算器中,不包含地址寄存器
- 把汇编语言源程序转变为机器语言程序的过程是 汇编
- 数据库系统不是 系统软件
- 相联存储器既可以按地址寻址也可按内容寻址
- 指令和数据都以二进制形式存储在存储器中,CPU区分它们的依据是:指令周期的不同阶段
解析:在取值阶段取的是指令,执行阶段取的是数据。容易选成 指令操作码的译码结果,需要注意的是,CPU只有在确定取出的是指令时,才会将其操作码送去译码。
- 计算机硬件能够直接执行的是 机器语言
2. 计算机的性能指标
- 在CPU的寄存器中,指令寄存器 对用户是完全透明的。
- CPU 的 CPI 与时钟频率无关,与系统结构,计算机组织,指令集有关
- ALU和通用寄存器的位数一定与机器字长相同
各种关系的转换
-
MIPS = 时钟频率/CPI
-
程序执行时间 = CPI * 时钟周期 * 指令数
-
指令周期 = 1 / 指令执行速度
-
微机逻辑电路相同,指的是 CPI 相同, 时钟周期不一定相同
2. 数据的表示和运算
1. 数制和编码
- 如果没有特殊说明,BCD码指的是 8421码
- 真值0 表示惟一的机器数是 补码和移码
- 若定点整数为64位,含一位符号位,则用补码表示的绝对值最大的负数为 -2^63
- 一般用移码表示浮点数的阶,而补码表示定点整数
- 补码符号位取反获得移码
- 补码进行运算时带上符号位
- 二进制转八进制,十六进制时,小数部分也是从右往左算
2. 运算方法和运算电路
- ALU属于组合逻辑电路
- 在串行进位的并行加法器中,影响加法器运算速度的关键因素是 进位传递延迟
- 加法器中每位的 进位信号为 XY,进位传递信号 X⊕Y
- 模4补码(即双符号位)存储时只需要一个符号位 ,因为一个正确的数值,符号位是相同的
- 实现 N位(不包含符号位) 补码一位乘时,乘积为2N+1位
- 在算术移位的情况下,补码左移的前提条件是 其原最高有效位和原符号位要相同
- C语言中变量都以补码形式存储,int 四字节,short 两字节,char 一字节
- 加法器的 低位进位输入信息 :如果是减法为1,加法为 0
3. 浮点数的表示和运算
- 基数(小数点前边的那个数)越大,表示的范围越大,精度越低
- 关于规格化
|
|
-
在对阶操作中,不存在阶码减小,位数左移的情况。因为阶码小的要向阶码大的对齐。
-
采用规格化浮点数主要是为了增加数据的表示精度
-
8421码是十进制数的编码
-
原码表示的规格化小数是小数点后两位(基数为4,用两位表示)不全为0的小数
-
定点数没有舍入的概念,只有浮点数才有
-
浮点数舍入的情况有两种:1. 对阶 2. 右规格化
-
舍入不一定产生误差
-
float类型(IEEE754 单精度浮点数格式)能表示的最大正整数是 2^128 - 2^104
-
尾数溢出时,可能只产生误差,结果不一定溢出
-
对阶操作不会引起阶码上溢或下溢
3.存储器系统
1. 存储器概述
- 磁盘属于直接存取存储器(DAM)
- 存储器的存取周期是指 存储器进行连续存或写操作所允许的最短时间间隔
- 相联存储器是按 内容指定方式和地址指定方式相结合进行寻址的存储器
- 多级存储系统是为了降低存储成本 易错
- 虚拟存储器中主存和辅存之间的数据调动对 应用级程序员 是透明的
- cache / 主存系统的效率 e = 访问Cache的时间 / 平均访存时间
公式 = 1/ [H + (1-H)*r] H为命中率,r 为主存访问时间除以 Cache访问时间
2. 主存储器
- 芯片的引脚数除了数据线和地址线,还有 一根片选线和读写控制线(一根和两根都有可能)
- DRAM的刷新是以行为单位的
- DRAM在分散刷新时,不存在死时间
- DRAM和SRAM 对比
DRAM采用地址复用技术,因此地址线只有一半
- 采用地址复用技术时,数据线减半,但会多增加行通选线和列通选线(片选线用行通选代替)
- Cache是易失性存储器,falsh存储器不是易失性存储器
- U盘属于只读存储器
- RAM和ROM都是采用随机存取方式进行信息访问
- 闪存:读速度比写快;是一种半导体存储器;非易失性存储器;随机访问方式
3. 外部存储器
- RAID技术不可以提高磁盘的磁记录密度
- 固态硬盘(SSD)容易磨损
- 磁盘平均存取时间:访道时间 + 访问扇区时间 + 扫描扇区时间
6. 虚拟存储器
- 虚拟存储管理系统应该具有较好的局部性,此理论的基本含义是在程序的执行过程中,程序对主存的访问是不均匀的
- 段页式和页式交换的单位都是页
- 虚拟存储器对应用程序员透明,对系统程序员不透明
- 快表(TLB)存放在寄存器中,慢表存放在 主存中
- TLB 存放 Page(页表)的一部分,Cache 存放 主存的一部分。
- Cache使用直写方式 需要把数据同时写入 cache 和 主存
- 缺页处理完成后回到发生缺页的指令继续执行
4. 指令系统
1. 指令格式
- 指令系统是计算机软/硬件的界面
- 指令系统和机器语言是相关的
- 程序控制类指令的功能是改变程序执行的顺序
- 堆栈计算机中,零地址指令的操作数来自 堆栈的栈顶和次栈顶单元
- 单字长指令可加快取指令的速度
- 计算机按字节编制,指令的位数必须是8的倍数
2. 指令的寻址方式
- 指令系统中采用不同的寻址方式的目的是缩短指令字长,扩大寻址空间,提高编程的灵活性
- 无条件转移指令(是指程序转移到新的地址后继续执行)的功能是将指令中的地址码送入程序计数器(PC)
- 为了缩短指令中某个地址段的位数,最有效的方法是采取寄存器寻址
因为寄存器的数量较小,使用较少的位数即可全部表示
- 基址寻址有利于多道程序设计和编制浮动程序,变址寻址有利于处理数组问题和编制循环程序
- 堆栈寻址方式中,进栈时:先放入数据,SP(指向栈顶单元的指针)再减一 出栈时:SP先加一,在弹出数据
- 相对寻址中,相对地址实际上是以下条指令在内存中的首地址为基准位置的偏移量
因为在执行本条指令时,PC已完成加一操作
-
采用跳跃寻址时,可以实现程序的无条件浮动和条件浮动
-
指令寄存器寻址和指令寄存器间接寻址所需的指令码长度最短,立即寻址,直接寻址,间接寻址方式的指令码长度最长
寄存器寻址方式执行速度最快,间接寻址方式的执行速度最慢
若指令系统采用定长指令码格式,则立即寻址方式执行速度最快。若采用变长指令码格式时,寄存器寻址方式执行速度最快
3.程序的机器级代码表示
两数相加寄存器变化:
OF(溢出标志位,over flag): 没有溢出为0
SF(符号标志位,symbol flag):看符号位
CF(进位标志位,carry flag):sub⊕C (做减法时sub为1,C作为进位输出)
ZF(零标志位,zero flag)相关指令执行后结果为0那么 ZF=1,结果不为0则 ZF=0;
5. 中央处理器
1. CPU的功能和基本结构
- CPU分为运算器和控制器,控制器包括IR(指令寄存器),MAR,MDR,PC,指令译码器,时序电路,微操作信号发生器
- 条件转移指令执行时所依据的条件来自标志寄存器
需要对标志寄存器的内容进行测试,看是否满足转移条件
- 在CPU的寄存器中,指令寄存器对用户是透明的。汇编语言程序员可见的是PC
- 在一条无条件跳转指令的指令周期内,PC的值被修改 2 次。
- 指令寄存器的位数取决于 指令字长
- CPU中通用寄存器的位数取决于机器字长(计算机能直接处理的二进制位数,决定了计算机的运算精度),可以存放数据和地址,但不能存放指令。
- 指令译码是对 指令的操作码字段 进行译码
- 间址周期(取操作数的有效地址)结束时,MDR的内容为 操作数地址
- CPU中的专用寄存器:IR,PC,MAR,MDR,PSW(程序状态字寄存器)
2. 指令执行过程
- 指令总是根据程序计数器从主存中取出,即使有转移指令,也是从PC中取出
- 取指令操作是控制器自动运行的
- 不同指令周期所包含的机器周期数可能不同
- 只有出现中断请求时才会进入中断周期,每个指令周期不一定都包含一个中断周期
- 不同长度的指令,取值操作不同。如果指令长度相同,取址操作相同。
- 指令字长和机器字长的长度没有任何关系
3. 数据通路的功能和基本结构
-
采用CPU内部总线方式的数据通路的特点:结构简单,容易实现,性能较低,存在较多的冲突现象
4.控制器的功能和工作原理
- 在微程序控制器中,形成微程序入口地址的是机器指令的操作码地段
- 微程序控制器的速度比硬布线控制器慢,主要是因为增加了从控制存储器读取微指令的时间
- 与硬布线控制器相比,微程序控制器的时序系统比较简单
- 水平型微指令位数较多,较复杂;垂直型微指令位数较少,较简单,一次只能完成一次基本操作
- 水平型微指令能充分利用数据通路的并行结构
- 若指令系统中具有n种机器指令,则控制存储器中的微程序数至少是 n+2个,一个是公共的取指令,另一个对应中断的微程序
- 微机的CPU都是微处理器,和采用哪种控制器没有关系
- 控制存储器采用ROM实现,按地址访问,容量是2的幂次方
- 除控制部件(控制器)之外的部件都是执行部件
- 水平型微指令由操作控制字段,判别测试字段和下地址字段组成。例题是大题的第四,第五题。(判别测试字段还不知道怎么求)
5.异常和中断机制
- 主存故障引起的中断是硬件中断
- 异常事件在当前指令执行过程中进行检测,中断请求在当前指令执行后进行检测
- 自陷是通过陷阱指令预先设定的一类内部中断事件
- 中断是指来自CPU执行指令以外事件,异常也称内中断
- 访存时缺页属于异常(易错)
6. 指令流水线
- 流水线的冒险
- 结构冒险:资源冲突
- 数据冒险:数据冲突(RAW,WAR,WAW)
- 控制冒险:改变指令执行顺序
- 流水线的吞吐率:n/(k+n-1)*时钟周期
- 流水线的加速比:kn/(k+n-1)
- 超标量流水线的实质是以空间换时间,不是指运算操作并行
- 采用旁路技术可解决数据相关问题
- 流水线数据通路由控制部件控制,但不包含控制部件
- 理想情况下,单周期CPU,基本流水线CPU的CPI为1,多周期CPU的CPI>1,超标量流水线CPU的CPI<1.
- 流水线采用**“按序发射,按序完成”**方式,下一条指令的IF(取指操作)必须和上一条指令的ID(译码)并行,以免因上一条指令发生冲突而导致下一条指令先执行完。
7. 多处理器的基本概念
- 单指令单数据流结构(SISD);多指令多数据流结构(MIMD)
- 多处理机属于MIMD
- 双核是指在CPU上集成两个运算核心
- NUMA构架比UMA架构的运算扩展性要强
- UMA架构需要解决的重要问题是Cache的一致性
6.总线
6.1 总线概述
- 总线上的部件,可以分时向总线发送数据,但可同时从总线接受数据
- 在总线上,同一时刻只能有一个主设备控制总线传输操作
- 使用总线结构便于增减外设,同时减少信息传输线的条数
- 系统总线中地址线的功能是 指定主存和 I/O设备接口电路的地址
- 不同信号在同一条信号线上分时传输的方式称作 总线复用方式
- 采用局部总线技术的作用是 节省系统的总带宽
- 突发式(猝发式)发送可以连续传送地址连续的数据
- USB是串行传输,不能同时传输2位数据; 可通过级联方式连接多台外设
- 用于设备和设备控制器(I/O接口)之间互联的接口标准是 USB
- 多总线结构中,总线之间通过桥接器连接
- PCI—Express采用串行数据报方式传送数据
2. 总线事务和定时
- 同步通信比异步通信的传输效率高
- 在异步总线中,传送操作按需分配时间、
- 同步总线由统一的时序信号控制,异步总线由握手信号定时
7. 输入输出系统
1. I/O系统基本概念
- I/O指令是CPU系统指令的一部分,格式和其他通用指令相比有所不同
- 通道程序放在主存中,由通道执行
- 键盘,鼠标等输入设备一般都采用中断方式来实现
- 打印机从打字原理的角度来分析,可分为击打式和非击打式;按能打出汉字来分,可分为点阵式打印机和活字式打印机
- 计算机中一个汉字内码在主存中占用 2B, 输出的字型码 16*16点阵在缓冲存储区中占用 32B
2. I/O接口
- 在统一编制方式下,区分存储单元和I/O设备是靠不同的地址码,进行输入/输出的操作指令是访存指令
- I/O接口的功能也包括I/O过程中的错误和状态检测
- 磁盘驱动器向盘片磁道记录数据时采用串行方式写入
- I/O指令实现的数据传送通常发生在通用寄存器和I/O端口之间
3. I/O方式
-
在总线仲裁方式中,独立请求方式响应时间最快,是以增加控制线数为代价的
-
中断向量是中断服务程序入口地址,中断向量地址是中断服务程序入口地址的地址(重要)
-
可以提出中断的有 外部事件,虚拟存储器失效,浮点数运算上溢, 浮点数运算下溢不能引起中断
-
DMA的优先级比程序中断的优先级高
-
能产生DMA请求的总线部件是具有DMA接口的设备
-
中断优先级从高到低:访管->程序性-> 重新启动
-
检测有无DMA请求,一般在存取周期结束后,而不是在指令周期结束后(易错)
-
设置中断屏蔽标志可以改变多个中断服务程序执行完的次序
-
中断方式的特点是 CPU与外设并行工作,传送与主程序串行工作
-
CPU响应DMA请求的条件是当前机器周期执行完
-
中断发生时,程序计数器内容的保护和更新是由硬件自动完成的
-
在DMA方式下,数据从内存传送到外设经过的路径是内存->数据总线->DMAC(DMA的数据缓冲寄存器)->外设
-
DMA传送前由设备驱动程序设置传送参数,传送结束后的处理由中断服务程序完成