计算机组成原理
第一章 概述
-
软件:系统软件,应用软件
-
计算机发展:1946年ENIAC,电子管时代->晶体管时代->中小型集成电路时代->大规模集成阶段
-
冯诺依曼结构:
- 输入、输出、操作、控制、存储
- 指令和数据存储在同一位置的存储器中,并根据地址进行搜索
- 指令包括操作码和地址码
- 存储程序
- 运算器为中心
-
现代计算机结构:
- 以存储器为中心
- CPU=运算器 控制器
-
主存储器的组成:存储体 MAR(地址寄存器) MDR(数据寄存器)
-
取指令->分析指令->执行指令
- 取指令:pc计数器得到指令索引值,去MAR将寄存器翻译成存储体中的地址MDR传输至IR(指令寄存器)
- 分析指令:在IR指令由地址码和操作码组成
- 执行指令:分析指令后,移交给控制单位CU协调运算
-
计算机系统的多层结构:高级程序语言在高级虚拟机器中翻译为汇编语言,汇编语言机器翻译为机器语言,下层有微指令机器
-
编译程序:所有高级语言一次翻译成机器语言 解释程序:逐句翻译高级语言
-
性能指标
- MAR位数:反应存储单元的数量
- MDR位数:存储字长,每个存储单元的大小
- CPI:clock cycle per instruction,一条指令所需的时钟周期数
- IPS:instruction per second,平均每秒执行多少命令?
- FLOPS:float-point operations per second,每秒执行浮点计算次数
- 数据通路带宽:数据总线一次传输数据的位数
- 吞吐量:单位时间处理要求的数量
- 响应时间:从发送请求到完成请求的时间
第二章 数据的表示和操作
- 进位计数制
- 8421码,余三码,2421码
- 字符与字符串
- 英文字符:ASCII码,七位二进制
- 汉字字符位码,94*为了防止与控制通信字符信字符冲突加20H为了继续在计算器存储中添加80个国家标码H成为机内码
- 奇偶校验:校验位由模2加运算获得
- 汉明码:n位信息位,k需要满足位置验证 2 k > = n k 1 2^k>=n k 1 2k>=n k 1,校准位置分别填写在1、2、4、8等位置。校准位置上的值是通过相应的位差或操作获得的。检测错误时,这些代码和相应的校准代码是不同的或计算错误的
- CRC(循环冗余校验码):生成多项式的最高次量是校验码位数,记录为r,将码字左移R位进行除法验证。
- 定点数的表示
- 无符号:无正负
- 原码:符号位0表示正数,1表示负数,整数表示范围为 ? ( 2 n ? 1 ) 到 2 n ? 1 -(2^n-1)到2^n-1 ?(2n?1)到2n−1,0有+0和-0两种,小数标识范围为 − ( 1 − 2 − n ) 到 1 − 2 − n -(1-2^{-n})到1-2^{-n} −(1−2−n)到1−2−n
- 反码:正数的反码和原码相同,负数的反码为在原码基础上数值位全部取反,表示范围与原码一样,0也有+0和-0
- 补码:正数补码与原码相同,负数补码为反码末尾加一,0只有全0这种表示,特殊规定[x]补=1,0000000表示-2^7
- 移码:表示整数,补码的基础上符号位取反,可用于比较绝对值
- 已知[x]补求[-x]补的技巧:所有位取反,末位加一
- 算术移位
- 反码:对于正数补0,负数补1
- 补码:右移补1,左移补0
- 加减运算
- 乘法运算
- 原码一位乘法:绝对值相乘,符号位是符号异或得到
- 补码一位乘法:进行n轮加法和移位,最后再进行一次加法,初始时辅助位置为0,若辅助位减去最低位为-1,则加上[-x]补;若为0,则加上0,若为1,则加上[x]补,加一次后acc寄存器和mq寄存器算术右移一位
- 除法运算
- 恢复余数法:acc存储被除数,通用寄存器存储除数,默认商1,如果得到负数则恢复,逻辑左移一位,符号位异或运算得到,左移n次,上商n+1次
- 原码加减交替法:若商1得到负数,直接商0,余数左移一位再加上除数
- 补码交替加减法:余数和除数同号商1,余数左移一位减去除数;若异号,商0,余数左移一位加上除数,重复n次
- 强制类型转换:不改变数据内容,改变解释方式,在计算机中补码形式保存,short占2字节,int占4字节
- 数据的存储和排列
- 大端存储:先存储高字节数据 小端存储:先存储低字节数据
- 边界对齐
- 浮点数
- 算术逻辑单元
第三章 存储系统
-
RAM:随机存取存储器
-
SAM:顺序存取存储器
-
DAM:直接存取存储器
-
CAM:相联存储器,按内容查找,例如快表
-
ROM:只读存储器,bios存在ROM中
-
主存储器的基本组成
-
半导体元器件原理:mos管和电容,通过译码器将MAR翻译为高电平,选通字选线,计算金属引脚时考虑数据线,地址线,片选线,读写控制线
-
DRAM和SRAM
类型 SRAM DRAM 存储材料 触发器 栅极电容 是否破坏 否 是 是否重写 否 是 运行速度 快 慢 集成度 低 高 发热 大 小 成本 高 低 是否易失 是 是 是否刷新 否 是 行列地址 一次 两次 -
DRAM的刷新:分散刷新,集中刷新,异步刷新,不需要CPU介入
-
DRAM的地址线复用技术:将地址线减半,分为行地址和列地址两次导通
-
-
MROM:掩模式只读存储器,不可重写
-
PROM:可编程只读存储器,可以写一次
-
EPROM:可进行多次重写 UVEPROM:紫外线照射擦除 EEPROM:电擦除
-
Flash:闪存,读速度比写速度快
-
主存储器与CPU的连接
-
存取周期:存取时间+恢复时间
-
双端口RAM与多模块存储器
- 低位交叉编址可以提高存取效率,使得存取时间为T+(n-1)r,T为存取周期,r是读取时间,为了让流水线不间断,应该让m>=T/r
- 双通道内存:低位交叉编址原理
-
Cache
- 局部性原理:未来用到信息可能就在现在信息邻近位置,这是空间局部性;未来要用到的信息很可能就是现在用到的信息,这是时间局部性
- cashe与主存映射
- 全相联映射:主存块可以放在cache任意位置,利用率高,但是查找慢
- 直接映射:每个主存块只能放到一个特定的位置,查找快,但是利用率低
- 组相联映射:cache分为若干组,每个主存块可以放到对应组的任一快上,综合上面两种优缺点
- cache替换算法
- 随机算法(RAND):cache满了,随机挑选一块淘汰
- 先进先出算法(FIFO),没有用到局部性原理,频繁的换入换出,“抖动现象”
- 最近最久未使用(LRU),命中率最好
- 最不经常使用(LFU)
- cache写策略:如何保持副本与原本一致性?
- 写命中
- 写回法:对cache写命中时,不立即写入主存,该cache被淘汰时再写回,是否被修改用脏位标记
- 全写法:写直通法,cache修改时,同时修改主存对应块,可增加写缓冲减少访存次数
- 写不命中
- 写分配法:对cache写未命中时,把主存块调入cache,在cache中修改,可配合写回法使用
- 非写分配法:对cache写未命中时只写入主存,不调入cache,搭配全写法使用
- 写命中
- 多级cache
-
页式存储
-
虚拟存储器
- 页式虚拟存储器
- 段式虚拟存储器
- 段页式虚拟存储器
第四章 指令系统
- 指令字长:一条指令的字长,可能变化
- 机器字长:CPU进行一次运算的位数
- 存储字长:一个存储单元中的位数
- 指令的分类
- 按照操作类型
- 数据传送:LOAD,STORE
- 算术逻辑
- 移位操作
- 转移操作
- 输入输出操作
- 按照操作码分:定长操作码与可变长操作码
- 按照指令长度分:定长指令字结构与变长指令字结构
- 按照指令含地址个数
- 零地址指令:不需要操作数,例如空操作,停机,关中断指令
- 一地址指令:只需要一个操作数,例如加一减一取反运算,求补;或者原地操作
- 二地址指令:(A1)OP(A2)->A1,访存四次,取指令->读A1->读A2->写A1
- 三地址指令:(A1)OP(A2)->A3,访存四次,取指令->读A!->读A2->写A3
- 四地址指令:(A1)OP(A2)->A3,A4=下一条指令的地址,访存四次
- 按照操作类型
- 扩展操作码:用1111表示扩展位,不允许短码是长码的前缀,操作码唯一,对于频繁的操作,采用较短的操作码,这与哈弗曼树类似
- 指令寻址:
- 顺序寻址
- 跳跃寻址
- 数据寻址:确定地址码的真实地址,用寻址特征区分不同的寻址方式,有效地址(EA)
- 直接寻址:直接送入MAR,访存一次
- 间接寻址:访存三次,EA=(A)
- 寄存器寻址:操作数存在寄存器中,执行阶段不用访存
- 寄存器间接寻址
- 隐含地址:隐含给出操作数地址
- 立即寻址:又称为立即数,采用补码表示,这个就是内存地址,用#标识,访存一次
- 基址寻址:EA=(BR)+A,BR为基址寄存器,面向操作系统
- 变址寻址:EA=(IX)+A,IX为变址寄存器,面向用户
- 基址寻址&变址寻址复合:EA=(IX)+((BR)+A)
- 相对寻址:EA=(PC)+A
- 堆栈寻址:操作数存在堆栈中,隐含使用堆栈指针(SP)作为操作数地址 ,硬堆栈不必访存,软堆栈需要访存1次
- CISC:complex instruction set computer,一条指令完成一个复杂的基本功能,X86架构,台式机,笔记本,功耗高
- RISC:reduced instruction set computer,一条及指令完成一个基本动作,多条指令组合完成一个复杂的基本功能,ARM架构,用于手机,平板,功耗低
第五章 CPU
- CPU的功能
- 指令控制:取指令,分析指令,执行指令
- 操作控制:指令送去相应部位
- 时间控制
- 数据加工
- 中断处理
- 运算器基本结构
- 算术逻辑单元:ALU,实现算数逻辑运算
- 通用寄存器组:AX,BX,CX,SP等,用于存放操作数
- 暂存寄存器:暂存从主存读取的数据,因为直接放入通用寄存器会破坏其原有数据
- 累加寄存器:用于实现加法运算
- 程序状态字寄存器(PSW):例如OP表示溢出,SF表示符号标志,ZF表示零标志,CP是进位标志
- 移位器:移位运算
- 计数器:控制乘除运算的操作步数
- 控制器基本结构
- 程序计数器
- 指令寄存器
- 指令译码器
- 微操作信号发生器
- 时序系统
- 存储器地址寄存器:存放所访问主存单元的地址
- 存储器数据寄存器
- 指令周期:去除一个指令并执行花费的时间,包含取指令周期(包括取指令和分析指令)和执行周期,CPU内部最小单位是CPU时钟周期;对于含有间接地址的指令,还有间址周期 机器周期:例如完成取指令用到的时间就是机器周期,多个机器周期组成一个指令周期 取指周期:根据PC内容取出指令存放在IR中 间址周期:根据IR中指令地址区操作数有效地址 执行周期:根据指令操作码和操作数做出相应操作 中断周期:保存断点,送中断向量,处理中断请求
- 空指令:只做取指令和分析指令
- 执行方案
- 单指令周期:所有指令执行时间相同,指令间串行
- 多指令周期:不同类型的指令执行步骤不同,指令间串行
- 流水线方案:隔一段时间启动一条指令,多条指令处于不同阶段,同时进行
- 数据通路-单总线结构
- 寄存器之间数据传送:三态门控制输入输出
- 微操作流程
- 数据通路-专用通路结构
- 硬布线控制器设计
- 安排微操作时序-取址周期的原则
- 先后顺序不得随意更改
- 被控对象不同的微操作尽量在一个节拍完成
- 时间短的微操作尽量在一个节拍内完成允许有先后顺序
- 微程序控制器:一条微指令包含多条微命令(微操作)
- 水平型微指令:一条微指令可以定义多个并行的微命令,微程序短,执行速度快,但是微指令长,编写麻烦 微指令编码方式,称为微指令控制方式,是指如何对微指令控制字段进行编码,以形成控制信号,编码目的是保证速度情况下,尽量缩短微指令字长
- 直接编码(直接控制)方式:在微指令控制字段中,每一位代表一个微操作命令,置为一表示控制信号有效,这种方式简单直观,执行的速度快,并行性好,但是微指令字长过大,造成CM(控制存储器)过大
- 字段直接编码方式:将微指令控制字段分为若干段,每段经过译码后发出控制信号微命令字段分段的原则是:
- 互斥性微命令在同一段,相容性命令在不同段中
- 每个小段包含信息位不能太多
- 每个小段留出一个状态,表示本字段不发出任何微命令,例如3位的小段,只能表示7个互斥微操作
- 字段间接编码方式:第一层译码器译码后又经过一层译码
- 垂直型微指令:一条微指令只能定义一条微命令,微指令短,简单,规整,便于编写,但是微程序长,执行速度慢,效率低
- 混合型微指令
- 指令流水线
- 顺序执行方式,控制简单,硬件代价低
- 一次重叠执行方式:上一次和下一次重叠一个阶段,各部件利用率提高了,但是需要更多硬件,控制过程相对麻烦一点
- 二次重叠执行方式:下一次和上一次重叠两个阶段
- 性能指标:
- 吞吐率:单位时间完成任务数,理想最大吞吐率为1/△t
- 加速比:完成同样的任务,不使用流水线与使用流水线用时比例
- 效率:设备利用率
- 影响流水线的因素
- 数据相关(数据冲突),解决方有硬件方法阻塞stall和软件方法NOP(空操作)
- 控制相关(控制冲突):改变PC值和转移指令时
- 流水线分类
- 五段式流水线
- 水平型微指令:一条微指令可以定义多个并行的微命令,微程序短,执行速度快,但是微指令长,编写麻烦 微指令编码方式,称为微指令控制方式,是指如何对微指令控制字段进行编码,以形成控制信号,编码目的是保证速度情况下,尽量缩短微指令字长
第六章 总线
- 总线仲裁
- 集中仲裁:总线控制器判断选择主设备使用总线
- 链式查询方式:总线允许、总线请求、总线忙三根线,可以按照优先级排列链接设备,扩充容易,结构简单,但是对故障敏感,优先级难以改变
- 计数器查询方式:用一个计数器控制使用权,消除了链式查询对故障敏感的缺点
- 独立请求方式:每个设备有自己的请求线和允许线,总线控制器带有排队器,响应速度快
- 分布仲裁方式:不需要中央仲裁器,每个设备有自己的仲裁号表示优先级
- 集中仲裁:总线控制器判断选择主设备使用总线
- 总线传输四个阶段
- 申请分配:传输请求和总线仲裁
- 寻址阶段
- 传输阶段
- 结束阶段
- 主设备从设备通信方式
- 同步定时方式:传送速度快,逻辑简单,适用于总线长度较小,可靠性较差
- 异步定时方式:可靠性好,但是比较复杂
- 不互锁方式:主设备发出请求信号后,等待一段时间就撤销,从设备收到请求信号后,发出回答信号,一段时间后撤销,双方通信不存在互锁
- 半互锁方式:主设备发出请求信号,等到从设备发出回答信号才撤销,从设备发出一段时间后自动撤销
- 全互锁方式:主设备发出请求信号收到从设备回答信号后撤销,从设备得知主设备撤销请求信号后撤销回答信号,彼此存在全互锁
- 半同步方式:从设备发出wait信号
- 分离式通信
- 总线标准
- ISA:系统总线
- EISA:系统总线
- FBS:前端总线
- QPI:系统总线
- VESA:局部总线
- PCI:并行
第七章 输入输出系统
- IO控制方式
- 程序查询方式:CPU轮询检查IO控制器中的状态寄存器,检测到已完成再取数据
- 程序中断方式:等键盘输入时去执行其他程序,当键盘输入完成时IO控制器发送中断请求,CPU响应中断请求
- DMA控制方式:直接内存访问,通过DMA总线与高速IO设备相连,CPU向DMA接口发出主存地址,磁盘地址,读写数据量等参数
- 通道控制方式:通道可以识别一系列通道指令
- IO系统组成
- IO硬件:包括外部设备,IO接口,IO总线等
- IO软件:IO指令,包括操作码,命令码,设备码;通道指令,通道程序是提前放在主存中的
- VRAM容量=分辨率* 灰度级位数;VRAM带宽=VRAM容量* 刷新率