the review of the Principle of Computer Organization

第1章

  • 计算机性能指标
    • 机器字长——计算机一次整数运算能够处理的二进制数据的位数
    • 主频、时钟周期
    • CPI(每条指令周期数)——Clock cycle Per Instruction
    • MIPS(每秒执行多少百万条定点指令数)——Million Instructions Per Second
    • FLOPS(每秒执行浮点操作的次数)
  • 传统冯诺依曼体系是单指令流和单数据流系统
    • 存储器
    • 运算器
    • 控制器
    • 输入设备
    • 输出设备
    • 相关特点
      • 指令和数据按地址寻访
      • 二进制代码
  • 计算机功能部件
    • 主存储器
      • MAR(地址寄存器),其位数对应存储单元的个数
      • MDR(数据寄存器),其位数和存储字长相等
    • 控制器
      • IR(指令寄存器),存放当前指令
      • PC(程序计数器),存放当前欲执行指令的地址
      • CU(控制单元)
    • 运算器
      • 核心是ALU(算术逻辑单元),包含ACC(累加器),IX(变址寄存器),BR(基址寄存器)…
  • 计算机能够直接执行的语言是:机器语言
  • 用助记符编写的语言是:汇编语言
  • 把汇编语言源程序转变为机器语言的过程称为:汇编

第2章

  • 进制的转换
  • 校验码
    • 奇偶校验码
      • 只能发现数据代码中奇数位出错情况,但不能纠正错误
    • 海明码
      • 能够自动指出因为错误并纠错
      • n+k <= 2^k-1,其中n:信息位位数,k:校验位位数
      • 校验位分布在2^(i-1)位置上,即(1,2,4,8…)
      • 校验位(P1,P2,P3…)的计算
        • 将数据位编成二进制,P1对应个位为1的数据位值的异或,P1对应十位为1的数据位值的异或…
      • 校验原理
        • 将整个海明码的每一位编成响应二进制数,对个位为1的海明码值求异或…,如果最终每一位对应的异或值都为0,则代表没有出错
    • 循环冗余校验码(CRC)
      • 原信息码补0,0的个数为多项式最高次数的值
      • 补完0之后对多项式系数构成的二进制做除法取余
      • 余数加至原信息码后面构成循环冗余码
  • 定点数的表示
    • 原码(8位表示范围-127~127,存在+0和-0)
    • 反码(8位表示范围-127~127,存在+0和-0)
    • 补码(8位表示范围-128~127,0有唯一补码)
    • 移码——补码符号位取反(8位表示范围-128~127),移码直观上反应真值大小
    • 双符号位加减运算
      • 00,结果为正数,无溢出
      • 01,正溢出
      • 10,负溢出
      • 11,结果为负数,无溢出
    • 原码一位乘法
      • 符号位和数值位分开
      • 对应位为1则累加|x|,移位。对应位为0,则累加0,移位。
    • 补码一位乘法(Booth算法)
      • 符号位参与运算
      • 乘数末尾补0,根据最后两位的值来判断操作
      • 00——右移一位
      • 01——累加[x]补,右移一位
      • 10——累加[-x]补,右移一位
      • 11——右移一位
      • 补码转化为真值
  • 浮点数的表示
    • IEEE754标准
      • 单精度(32位):1位符号位(s)+8位阶码(E)+23位尾数(M)
      • E = 指数(e) + 127
      • 1.M(隐藏为1的尾数)
    • 加减法
      • 0操作数检查
      • 对阶——小阶向大阶对齐
      • 尾数求和
      • 规格化

第3章

  • 在计算机中的层次
    • 主存(内存)
    • 辅存(外存)
    • 高速缓冲存储器(cache)
    • cache——主存:解决速度问题,数据调动由硬件完成,对程序员透明
    • 主存——辅存:解决容量问题,数据调动由硬件和操作系统完成,对应用程序员透明
  • 存储器的分类
    • 存储介质
      • 磁表面(磁带,磁盘)
      • 磁芯半导体
      • 光存储器(光盘)
    • 存取方式
      • 随机存储器
      • 顺序存储器(磁带)
      • 直接存储器(磁盘)——介于两者之间
    • 内容的可保存性
      • ROM(只读存储器)
      • RAM(随机读写存储器)
  • 存储器的性能指标
    • 存储容量、单位成本、存储速度
    • 存储速度
      • 存取时间——启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
      • 存取周期——进行一次完整的读写操作所需的时间。即连续两次独立地访问存储器之间所需的最小时间间隔
      • 通常:存储周期 > 存取时间,原因是在读写操作之后有一段恢复内部状态的复原时间
    • 主存带宽——数据传输率
  • SRAM
    • 地址线 (字数)
    • 数据线 (位数)
    • 读写控制线
  • DRAM
    • 刷新方式
      • 集中式刷新,利用一个固定的时间,对存储器的所有行进行逐一再生,这期间停止对存储器的读写操作
      • 分散式刷新,没有死区
    • 存储器容量的扩充
  • ROM
    • 掩模ROM
    • 可编程ROM(PROM,EPROM,E2PROM)
  • FLASH存储器
    • 是在EPROM上发展而来
  • 并行存储器
    • 双端口存储器
      • 左右两个独立的端口,具有相互独立的地址线、数据线和读写控制线
      • 当两个端口的地址不相同时,两个端口进行读写操作一定不会发生冲突
      • 使用同一个地址单元时,会造成冲突
    • 多模块交叉存储器
      • 高位交叉编址仍是顺序存储器
      • 低位交叉编址则是交叉存储器
      • 顺序方式:t = mT
      • 交叉方式:t = T + (m-1)τ (其中T=mτ)
      • 模块数必须大于等于m
  • cache
    • cache命中率(h)
    • cache访问时间(Tc)
    • 访问效率(e=Tc/Ta)
    • 平均访问时间(Ta)
    • 主存和cache的地址映射
      • 由于cache容量很小,需要将主存地址定位到cache中
      • 全相联——可以装入cache中的任意位置
        • 地址结构:主存字块标记+字块内标记
      • 直接映射——主存数据块只能装入cache中的唯一位置。
        • j = i % N (j:cache块号,i:主存块号,N:cache总块数)
        • 地址结构:主存字块标记+cache字块标记+字块内地址
      • 组相联——组间直接映射,组内全相联
        • 地址结构:主存字块标记+组号+字块内地址
    • cache中主存块的替换算法
      • LRU(最近最少使用)
      • LFU(最不经常使用)
      • 随机替换
    • cache的写操作策略
      • 写回法——CPU写命中cache时,只修改cache的内容,此行被换出时才写回主存
      • 全写法——CPU写命中时,cache和主存同时发生写修改
      • 写一次法——第一次写命中时同时写入主存
  • 虚拟存储器
    • 逻辑地址和物理地址
    • 页式虚拟存储
      • 虚拟空间和主存空间被划分成同样大小的页
      • 页表——存放虚页号和实页号的对照表,一般放在内存中
      • 查页表,需要访问一次主存
    • 段式虚拟存储
      • 段是按程序的逻辑结构来划分的,段的长度不一致
      • 段号+段内地址
    • 段页式虚拟存储
      • 分段,每段在划分为相同大小的页
      • 段号+段内页号+页内地址
    • TLB(快表)——经常需要访问的页对应的页表放在高速缓冲器中
    • Page(慢表)——放在主存中的页表
    • TLB是Page的一个很小的副本
    • TLB命中,Page一定命中
    • Page不命中,cache和主存也不命中

第4章

指令格式

  • 操作码
  • 地址码
  • 指令的长度——一条指令中包含二进制代码的位数
  • 指令字长=操作码长度+地址码长度
    • 机器字长——计算机能够直接处理的二进制数据的位数,决定了计算机的精度。通常和主存单元的位数一致
    • 单字长指令:指令长度=1*机器字长
    • 双字长指令:指令长度=2*机器字长
  • 零地址指令、一地址指令、二地址指令、三地址指令、四地址指令
  • 二地址指令根据操作数的物理位置
    • 存储器——存储器(SS)
    • 寄存器——寄存器(RR)
    • 寄存器——存储器(RS)
  • 若指令字长32位,操作码8位,一个地址字段占24位,则指令操作数的直接寻址范围为2^24=16M
  • 指令周期——执行一条指令所需要的时间

寻址方式

  • 指令的寻址方式
    • 顺序寻址——使用程序计数器PC来计数
    • 跳跃寻址
  • 数据的寻址方式
    • 隐含寻址——累加器ACC对单地址指令来说是隐含地址
    • 立即数寻址——指令执行时间最短
    • 直接寻址——形式地址A就是操作数的真实地址,即EA=A
    • 间接寻址——指令的地址字段给出的是操作数有效地址所在存储单元的地址,即EA=(A)
    • 寄存器寻址——在指令字中直接给出操作数所在寄存器的编号,EA=Ri
    • 寄存器间接寻址——寄存器Ri中给出的是操作数所在主存单元的地址,EA=(Ri)
    • 偏移寻址
      • 相对寻址——PC的内容加上指令中形式地址A形成操作数的有效地址,EA=(PC)+A
      • 基址寻址——基址寄存器BR的内容加上形式地址A形成操作数的有效地址,EA=(BR)+A
      • 变址寻址——变址寄存器IX的内容加上形式地址A形成操作数的有效地址,EA=(IX)+A
    • 堆栈寻址

CISC和RISC

  • 复杂指令系统计算机CISC
    • 指令数目多
    • 指令长度不一致、格式多、寻址方式不一致
    • 使用频率相差较大
    • 执行时间相差较大
    • 控制器大多采用微程序控制
  • 精简指令系统计算机RISC
    • 选取高频率使用的一些简单指令
    • 长度固定、格式少、寻址方式少
    • 只有load/store指令访存,其余指令在寄存器之间进行
    • CPU通用寄存器相当多
    • 以硬布线控制为主、组合逻辑控制
    • 采用指令流水线技术,大多在一个时钟周期内完成

第5章

  • CPU功能
    • 指令控制
    • 操作控制
    • 时间控制
    • 数据加工
    • 中断处理
  • CPU组成
    • 运算器
      • ALU、通用寄存器、数据缓冲寄存器、PSW
    • 控制器
      • PC、IR、MAR、MDR、指令译码器
  • 主要寄存器
    • DR(数据缓冲寄存器)——暂时存放ALU运算结果
    • IR(指令寄存器)——保存当前正在执行的一条指令
    • PC(程序计数器)——保存下一条要执行的指令
    • AR(数据地址寄存器)——保存所访问数据cache存储器中单元的地址
    • 通用寄存器
    • PSW(状态字寄存器)——各种条件代码(进位标志、溢出标志)
  • 数据通路
    • 数据在功能部件之间传送的路径称为数据通路
    • 数据通路基本结构
      • CPU内部单总线
      • CPU内部三总线
      • 专用数据通路方式
  • 指令周期
    • 构成:取指周期+间址周期+执行周期+中断周期,4个过程都有访存操作,目的不同
      • 取指:取指令
      • 间址:取有效地址
      • 执行:取操作数
      • 中断:保存程序断点
    • 指令周期 > 机器周期 > 时钟周期(节拍T)
    • 时钟周期是CPU操作的最基本单位
    • 各指令的指令周期(MOV,LAD,ADD,STO,JMP)
  • 控制方式
    • 控制器的控制方式——控制不同操作序列时序信号的方法
    • 同步控制
    • 异步控制
    • 联合控制
  • 控制器
    • 硬布线控制器,又称组合逻辑控制器,由复杂的组合逻辑门电路和触发器构成
      • 速度相对较快,原因是微程序控制每条微指令需要从控存中读取一次,影响速度,硬布线主要取决于电路延迟
    • 微程序控制器
      • 微命令——控制部件通过控制线向执行部件发送各种控制命令
      • 微操作——执行部件接收微命令后进行的操作
      • 微操作在执行部件中是最基本的操作
        • 相容性——同一个CPU周期内能够并行执行
        • 相斥性——不能并行执行
      • 微指令——在一个CPU周期内,实现一定操作功能的微命令的组合,构成一条微指令
      • 微程序——一条机器指令由多条微指令组成的序列来实现
      • 微程序控制器原理图
        • 控制存储器——用来存放实现全部指令系统的微程序
        • 微指令寄存器
        • 地址转移逻辑
      • 微指令周期——读出微指令的时间加上执行该条微指令的时间
      • 为了保证整个机器控制信号的同步,可以将微指令周期设计成CPU周期时间相等
      • 机器指令和微指令的关系
        • 一条及其指令对应一个微程序,微程序由若干微指令序列构成
        • 机器指令与内存存储器相关,微指令和控制存储器相关
  • 微程序设计是利用软件方法来设计硬件的一门技术
    • 目标
      • 缩短微指令的长度
      • 减小控制存储器的容量
      • 提高微程序运行速度
      • 有利于对微指令的修改
      • 提高微程序设计的灵活性
    • 微指令编码
      • 直接表示法
        • 控制字段中的每一位表示一个微命令
        • 优点:简单直观、便于直接用于控制
        • 缺点:指令较长,是控制存储器容量较大
      • 编码表示法
        • 把互斥性微命令编为一组
        • 对微命令进行编码,流出一个代码表示本段不发出微命令
        • 增设微命令译码器
      • 混合表示法
    • 微指令的地址形成方法
      • 初始微地址的形成
        • 根据机器指令的操作码形成
      • 后继微地址的形成
        • 计数器方式,直接由微指令的下地址字段给出
          • 简单、功能较弱、速度慢
        • 多路转移方式
          • 灵活、速度快、设计较为复杂
    • 微指令格式
      • 水平型微指令
        • 一次能定义并执行多个并行操作微命令的微指令
        • 控制字段+判别测试字段+下地址
      • 垂直型
        • 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能
      • 两者的比较
        • 水平型微指令并行操作能力强,效率高,灵活性强
        • 水平型微指令执行一条指令的时间短
        • 水平型微指令解释的指令的微程序,有微指令字较长而微程序较短的特点
        • 垂直型微指令则相反,微指令字较短而微程序长
  • 流水线
    • 线性流水线的时钟周期:τ=max{τi}+τl(其中τi表示过程段Si所需时间,τl表示延时)
    • k级过程段完成n个任务,流水线处理所需时钟周期数:T=k+(n-1)。而串行则需要时钟周期数:T=n*k
    • 分类
      • 指令流水线
      • 算术流水线
      • 处理机流水线
    • 流水线中的主要问题
      • 资源相关——争用同一个功能部件所发生的冲突
      • 数据相关——一条指令必须等另一条指令执行完才能执行
      • 控制相关——由转移指令引起(执行转移指令后,可能顺序执行下一条,也可能转移到新的目标地址)
        • 延迟转移法
        • 转移预测法

第6章

  • 总线
    • 总线是一组能为多个部件分时共享的公共信息传送线路
    • 分时——同一时刻只允许有一个部件向总线发送信息
    • 共享——某一时刻可以有多个部件从总线上接收信息
  • 总线分类
    • 片内总线(内部总线)——CPU内部连接各个寄存器和运算器的总线
    • 系统总线——计算机系统内各部件(CPU,主存)之间连接的总线
      • 数据总线,双向传输
      • 地址总线,单向传输
      • 控制总线
    • I/O总线——低速I/O设备之间互相连接的总线
  • 总线结构
    • 单总线——争用唯一的总线,但不是只有一根
    • 双(多)总线——将低速的I/O设备从单总线上分离出来,实现I/O总线
  • 总线性能指标
    • 总线带宽——总线本身所能达到的最高传输速率
    • 总线频率——
    • 总线宽度——总线上能够同时传输的数据位数,通常指数据总线的根数
  • 总线仲裁
    • 集中式仲裁
      • 链式查询方式
        • 离总线仲裁器最近的设备具有最高优先级、优先级固定
        • 对电路故障很敏感
        • 3根(总线请求1,总线忙1,总线允许1)
      • 计数器定时查询方式
        • log2(n)+2
        • 计数器可以从0开始,也可以从上一次的终点开始,循环方法,此时设备使用总线的优先级相等
      • 独立请求方式
        • 2n+1(总线请求n,总线允许n,总线忙1)
        • 响应速度快
    • 分布式仲裁
      • 每个潜在的主模块都有自己的仲裁号和仲裁器
  • 总线操作和定时
    • 总线的一次信息传送过程:5个步骤
      • 请求总线
      • 总线仲裁
      • 寻址
      • 信息传送
      • 状态返回
    • 同步定时——系统使用同一的时钟信号来协调发送和接收双方的传送定时关系。
      • 传送速度快
      • 适用于总线长度较短及部件的存取时间比较接近的系统
    • 异步定时
      • 没有统一的时钟
      • 依靠传送双方的握手来实现定时控制
      • 总线长度可变,能保证速度相差很大的部件之间进行信息交换
      • 请求和回答信号的互锁
        • 不互锁
        • 半互锁
        • 全互锁
  • 总线标准
    • ISA
    • PCI
    • USB
    • SCSI
    • SATA

第7章

  • 存储区域
    • 磁盘有若干个记录面,每个记录面分为若干磁道,每条磁道分为若干扇区(块),块是磁盘读写的最小单位。
    • 记录面数
    • 柱面数
    • 扇区数
    • 磁道的编址从外向内依次编址
  • 性能指标
    • 磁盘容量
    • 存储密度
      • 道密度
      • 位密度
      • 面密度=位密度*道密度
    • 平均存取时间
      • T=平均找道时间+平均等待时间(1/2r)+数据传送时间(b/rN),其中r:磁盘旋转率,N:每道字节数,b:传送的字节数
    • 数据传输率
      • Dr=nN,其中n:磁盘旋转率,N:每条磁道容量的字节数
      • Dr=D*v,D:位密度,v:磁盘旋转的线速度
  • 同一柱面不需要重新找道,节省时间
  • 显示设备
    • 分辨率——显示器所能显示的像素个数
    • 灰度级——显示的像素点的亮暗差别
    • 视频存储器(显存):容量M=分辨率r * 灰度级C

第8章

  • 信息交换方式
    • 程序查询方式
    • 程序中断方式
    • 直接访问内存方式(DMA)
      • 仍然考虑中断响应
      • DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存和外围设备之间进行
    • 通道方式
      • CPU把部分权利下放给通道
      • 通道是一个具有特殊功能的处理器
      • 优先权高于CPU
  • 中断方式
    • 程序中断是指在计算机在执行现有程序的过程中,出现异常情况或特殊请求,CPU暂时中止现行程序,转而去处理这些请求,处理完毕后自动返回到断点处继续执行原有程序
    • CPU响应中断的条件
      • 有中断请求
      • CPU允许中断及开中断
      • 一条指令执行完毕执行
    • 中断向量
      • 每个中断程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量
        • 中断向量地址——入口地址的地址
    • 中断隐指令(硬件自动完成)
      • 关中断
      • 保存断点
      • 引出中断服务程序
    • 中断服务程序完成
      • 保护现场和屏蔽字
      • 开中断
      • 恢复现场和屏蔽字
      • 中断返回
    • 中断额外开销时间=中断系统响应时间+软件额外开销
    • 最短中断时间间隔=响应时间+中断服务程序时间
    • CPI执行轨迹图,参考例题
  • DMA
    • 数据传送不经CPU
    • DMA控制器——对数据传输过程中进行控制的硬件
      • 主要功能
      • 接收外设发出的DMA请求,并向CPU发出总线请求
      • CPU响应后,DMA控制器接管总线控制权
      • DMA控制器对内存寻址,执行数据传送的操作
      • 向CPU报告DMA操作的结束
    • DMA传送方式
      • 停止CPU访问主存
      • DMA和CPU交替访存
      • 周期挪用
    • 选择型DMA——在某段时间内只能为一个设备服务
    • 多路型DMA——能同时为多个慢速外围设备服务
  • 中断和DMA的区别
    • DMA除了预处理和后处理,其他时候不占用CPU资源
    • 对中断请求的响应发生在每条指令执行完毕时,对DMA请求的响应可以发生在每个机器周期(取指周期、间指周期…)结束时,只要CPU不占用总线就可以
    • DMA请求的优先权高于中断请求
  • 通道方式
    • 选择通道——一段时间只能一个设备工作
      • 最大数据传输率:F=max(fi)
    • 多路通道
      • 数组多路通道——一段时间内能交替执行多个设备,高速设备。但只允许一个设备进行传输型操作
      • F=max(fi)
      • 字节多路通道——主要用于连接大量低速设备,允许多个设备进行传输型操作
      • F=f1+f2+…