计算机组成复习

考研复习用

Posted by canjuly on December 10, 2018

计算机组成原理

第一章 计算机系统概论

wedge

计算机层次结构

  • 冯诺伊曼提出了“存储程序”的概念,按顺序执行指令,以该思想为基础的计算机称为冯诺依曼机,主要特点如下:
    1. 硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成
    2. 指令和数据以二进制形式存放在存储器中,并可按地址寻访
    3. 指令在存储器内按顺序存放
    4. 指令由操作码和地址码组成
    5. 早期的冯诺依曼机以运算器为中心
  • 目前绝大多数现代计算机仍遵循冯诺依曼的存储程序的设计思想
  • 1Byte(字节) = 8bit(比特、位),1个字有多少bit由计算机自己决定
  • MAR(地址寄存器),存放访存地址;MDR(数据寄存器),用于寻址,位数对应存储单元的个数,这两者均属于存储器
  • ALU(算术逻辑单元),ACC(累加器),MQ(乘商寄存器),X(操作数寄存器),IX(变址寄存器),BR(基址寄存器),PSW(程序状态字寄存器)均属于运算器
  • PC(程序计数器),IR(指令寄存器),CU(控制单元)均属于控制器

三个级别的语言

  • 机器语言由二进制编码组成,是计算机唯一能直接识别和运行的语言
  • 汇编语言为指令代码,必须经过汇编操作转换成机器语言才能执行
  • 高级语言需经过编译后变为汇编语言再汇编成机器语言,或解释之后变成机器语言。区别在于解释型语言每次运行都需要翻译,编译型语言则不需要

计算机的性能指标

  • 机器字长指计算机一次定点整数运算能处理的二进制的位数,一般等于内部寄存器大小,字长越大精度越高
  • 数据通路宽度指数据总线一次能并行传送信息的位数
  • 吞吐量表示单位时间内处理请求的数量,主要取决于主存的存取周期
  • 响应时间指用户发出一个请求到系统做出响应并获取所需结果的等待时间
  • CPU时钟周期是CPU最小的时间单位,为主频的倒数
  • 主频是计算机内部的主时钟的频率
  • CPI指一条指令所需要的时钟周期数
  • MIPS指每秒执行多少百万条指令
  • MFLOPS指每秒执行多少百万次浮点运算

第二章 数据的表示和运算

note and compute

海明码

  • 为了能纠正一位错,设n为有效信息位数,k为校验和的位数,则有n + k <= 2^k - 1,若还需要检测两位错则还需增加一位校验位

数据的存放方式

  • 大端方式指先存放高位字节,再存放高位字节
    小端方式指先存放低位字节,再存放高位字节
    直观上来说,大端方式看起来比较顺,比如数字0x12345678,小端存就是78563412,大端存就是12345678
  • 按边界对齐指某个数据开始地址需为字长的整数倍,如32为计算机按字节编址,字地址就必须是4的整数倍(32b == 4B)
  • struct中,存储按边界对齐有几个重要条件:
    1. 每个成员按其类型方式对齐,如char为1,short为2,int为4
    2. struct长度必须是成员中最大的对齐值的整数倍

定点数的表示与运算

  • 原码、补码、反码的表示方法不再赘述,c语言默认用补码表示int
  • 移码和补码仅差一个符号为,也就是说,只有移码的表示正数时第一位是1
  • 算术移位过程中符号为不参与移位。对于补码来说,左移添0,右移添1
  • 补码的溢出判别法有如下三种:
    1. 单符号位法:参加操作的两个数符号相同,结果又与源操作数符号不同,则溢出
    2. 双符号位法:运算结果的两个符号位不同,则溢出,最高位符号代表真正的符号
    3. 符号位和进位法:若符号位和最高位的进位不同,则溢出
  • 强制类型转换时机器码不变,改变的是解释机器码的方式

浮点数的表示

  • 规格化浮点数用原码表示时,尾数最高位一定是1,用补码表示时,尾数最高位一定和符号位相反
  • 规格化浮点数运算结果为非规格化时要进行规格处理,其中左归可能进行多次,右规最多只会进行一次

IEEE754标准

  • 最高位为符号位,后8位为阶码E,用移码表示;再后23位为尾数M,用原码表示
  • 阶码全1表示无穷大,全0表示机器0,因此,阶码E的范围为1~254。计算阶码时可以直接按其二进制表示的数再减去127,简便的计算出实际的阶码值
  • 除临时浮点数以外,尾数采用隐藏位策略,最高位隐含“1”

浮点数的运算

  1. 对阶:小阶向大阶看齐
  2. 尾数求和:将尾数按定点数规则运算
  3. 规格化:左归或右规,直到尾数最高位变为1
  4. 舍入:对阶和右规的操作中可能会将尾数的低位丢失,因此需要舍入,常用的方法有“0舍1入法”和“恒置1法”
  5. 溢出判断:左归不会引发溢出,右规到阶码大于最大阶码才溢出

强制类型转换

  • char->int->long->double和float->double的转换过程中不会损失精度
  • 小精度和大精度的运算中,小精度会隐式转变为大精度
  • 注意,整数转浮点数可能会损失一些精度

第三章 存储系统

store system

存储器的分类

  • 按存取方式主要分为ROM(只读存储器)和RAM(随机存储器)。RAM任一单元可以随机存取,ROM智能随机读出而不能写入
  • RAM皆属于易失性存储器,断电后信息无法保存;ROM则属于非易失性存储器,信息永久保存。
  • ROM和RAM可共同作为主存的一部分
  • ROM广义上也派生可反复重写的类型,但其写入速度比读取速度慢得多
  • RAM可分为SRAM(静态随机存储器)和DRAM(动态随机存储器)。SRAM读取是非破坏性读出,不需要再生信息,常用于cache;DRAM是破坏性读出,需要定时刷新,常用于主存
  • DRAM刷新方式有集中刷新分散刷新异步刷新
    集中刷新是在一个刷新周期内用一段固定的时间进行刷新,此时无法对存储器进行读取,称为死区或死时间
    分散刷新指把刷新时间分散到各个工作周期去,这种方法增加了系统的存取时间
    异步刷新结合了上两种方法的优点
  • DRAM采用地址复用技术,地址线是原来的1/2,且地址信号分行、列两次传送

主存储器与CPU的连接

  • 一般位扩展比较简单,就是直接拿主存储器的位数去除以芯片位数获得需要的芯片块数,数据线分开连到每一个芯片即可
  • 字扩展将主存储器容量除以芯片容量获得需要的芯片块数,地址线低位连到每一块芯片上,高位作为片选线
  • 读写命令线与每一块芯片的读写控制端连接
  • 片选信号分为线选法和译码片选法

双端口RAM

  • 双端口RAM允许两个独立的控制器同时异步的访问存储单元。但是同一时间只能有一个端口对同一个地址单元进行写入操作

低位交叉存储器和高位交叉存储器

  • 这两个构造本质上是为了能在同一个存储周期内尽可能多的进行存取
  • 高位交叉存储器指高位表示体号,低位表示体内地址,这样存储器仍是顺序存储器,故只有较小的可能性在一个周期内连续读出多个数据
  • 低位交叉存储器是将低位作为体号,高位作为体内地址。这样程序存放在相邻体中,采用流水线的方式并行存取,有利于提高存储器带宽。如存取一个字的周期为T,总线传送周期为r,为保证流水线不间断,存储器交叉模块数应大于等于m = T / r。每经过r时间延迟后启动下一个模块,故连续存取m个字的时间为t = T + (m - 1) * r

超级重点:高速缓冲存储器(cache)

  • 程序访问的局部性原理包括时间局部性和空间局部性。
    时间局部性是指访问到的存储单元在不久之后还会用到
    空间局部性是指访问未来要用到的信息和现在使用的信息在存储空间上是临近的
  • CPU可以直接访问cache,CPU和cache之间的数据交换以字为单位,而cache和主存之间的数据交换是以块为单位的
  • cache和主存的映射方式包括如下几种:
    1. 直接映射:主存数据块只能装入到cache的唯一位置,一般映射关系为j = i mod 2^c,这里j是cache块号,i是主存块号,c是cache总块数。此时地址结构由高到低包括:主存字块标记(Tag)、cache字块地址(块号)、块内地址
    2. 组相联映射:主存数据块可装入一组中的任何一个位置。一般映射关系为j = i mod Q,这里j是cache组号,i是主存块号,Q是cache组数。此时地址结构由高到低包括:主存字块标记(Tag)、组地址、块内地址
    3. 全相联映射:可将主存数据块装入cache任一位置。地址结构由高到低包括:主存字块标记(Tag)、块内地址
  • 对于cache的每一行,一般包括如下几项:数据位、标记位和有效位。倘若使用写回法还需增加一位脏位。(这个是用来用来计算cache的大小的)
  • cache替换策略包括随机法(RAND)、先进先出法(FIFO)、最近最少使用(LRU)、最近不经常使用(LFU)。其中最近不经常使用法是指将最近一段时间被访问次数最少的存储行换出

虚拟存储器

  • 虚拟存储器对于应用程序员时透明的
  • cache写策略包括如下:命中时有全写法和写回法;不命中时有写分配法和非写分配法
    1. 全写法指把cache同时写入cache和主存。优点是随时能保持主存数据的正确性,缺点是增加了访问次数,降低了cache效率
    2. 写回法指只修改cache的内容,而不立即写入主存,只有当块换出时才写回。这种方式减少了访存次数,但存在数据不一致的隐患
  • 其他重点内容放在操作系统里面讲

第四章 指令系统

shenmeshenmede system

指令格式

  • 指令格式一般包括操作码、寻址特征、形式地址
  • 零地址操作数隐含的从栈顶和次栈顶弹出

指令的寻址方式

  • 寻址方式主要包括立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址、基址寻址、变址寻址、堆栈寻址
  • 立即寻址:地址字段给出的不是操作数的地址而是操作数,又称立即数,以补码形式存放。“#”一般代表立即寻址特征
  • 相对寻址:PC内容加上形式地址得到有效地址,广泛用于转移指令
  • 基址寻址是面向操作系统的,有利于多道程序设计;变址寻址是面向用户的,有利于编制循环程序和处理数组
  • 一般来说寄存器寻址最快,因为不用访存

CISC与RISC

  CISC RISC
指令系统 复杂、庞大 简单、精简
指令数目 一般大于200 一般小于100
指令字长 不固定 定长
可访存指令 不加限制 只有Load/Store指令
各种指令执行时间 相差较大 多数在一个时钟周期内完成
各种指令使用频度 相差很大 都比较常用
通用寄存器数量 较少
目标代码 难以优化 易于优化
控制方式 微程序控制 组合逻辑控制
  • RISC采用流水线技术,特征由:指令长度一致、指令格式规整、数据和指令在存储器内“对齐”存放

中央处理器

CPU

CPU的基本结构

  • CPU主要由运算器和控制器两大部分组成
  • 运算器包括算术逻辑运算单元(ALU)、暂存寄存器(DR)、累加寄存器(ACC)、程序状态字寄存器(PSWR)、移位器、计数器
  • 控制器包括程序计数器(PC)、指令寄存器(IR)、指令译码器、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)、时序系统、微操作信号发生器
  • CPU中的寄存器分为用户可见和用户不可见。可见的包括:通用寄存器、PSWR、PC、ACC。不可见的包括:IR、DR、MAR、MDR

指令执行过程

  • 指令周期是指从取指、分析取数到执行完该指令所需的全部时间。指令周期通常包括取指周期、间址周期、执行周期和中断周期

重点:数据通路

  • 这里09和15命制了大题
  • 取指周期:PC->MAR,M(MAR)->MDR,(MDR)->IR,(PC)+1->PC
  • 执行算术或逻辑运算:Ad(IR)->MAR,M(MAR)->MDR,(MDR)->Y(ALU的一个输入端),(ACC)+(Y)->Z(ALU的一个输出端),(Z)->ACC

控制器的功能和工作原理

  • 控制方式包括硬布线和微程序控制器:
    1. 硬布线控制器的设计思想:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序及时产生。特点是:控制器速度取决于电路延迟,速度快,难以修改和扩充,结构复杂,通常适用于RISC
    2. 微程序控制器的设计思想是:采用存储程序的原理,将微操作控制信号以为程序的形式存放在控制存储器中,一条机器指令对应一个微程序,执行指令时读出微程序执行即可。特点是:每条指令都要从控存中读取,速度较慢,易于扩充和修改,结构规整、通常适用于CISC
  • 微程序控制器一般包括控制存储器、微指令寄存器、微地址形成部件、微地址寄存器。
  • 控制存储器的微程序个数应为机器指令数再加上对应取指、间址、中断周期等共用的微程序数,若系统中有n种机器指令,那么微程序数起码为n+1个(1位公共的取指微程序)
  • 微地址的形成方式主要有:
    1. 直接由微指令下地址段指出。这种方式又称为断定方式
    2. 根据机器指令的操作码形成
    3. 此外还有增量计数法、根据各种标志决定分支转移的地址、通过网络测试形成、由硬件产生
  • 微指令包括:
    1. 水平型微指令。一条水平微指令可以定义并执行几种并行操作。水平型微指令微指令长,微程序短,执行速度快,编写程序较麻烦
    2. 垂直型微指令。一条垂直微指令只能定义并执行一种操作。垂直型微指令指令短,微程序长,执行速度慢,编写微程序简单
  • 微指令的编码方式主要有:
    1. 直接编码。实现方法是:微指令中每一位都代表一个微指令。特点是简单直观、指令字长过长
    2. 字段直接编码。实现方法是:将指令划分为若干小字段,互斥的放在一组中,相容的放在不同字段,每个字段独立编码。特点是:指令长度更小,原则上每个小段的全0表示该字段不发出任何微命令

指令流水线

  • 指令流水线指将一条指令的执行过程分为多个子过程,每个子过程和其他子过程通过各自的功能并行执行
  • 流水线每一段时间须相等,一般取操作时间最长的作为一段的时间
  • 引起流水线阻塞的因素包括:
    1. 结构相关:多条指令在同一时刻争用同一资源。解决方法有:前一指令访存时暂停后续指令,或者单独设置数据存储器和指令寄存器。后一种属于资源重复配置
    2. 数据相关:指在一个程序中,存在前一指令执行完才能执行后一指令的情况。它分为如下三种类型:(设指令i在j之前执行)
      RAW:写后读相关,指j想要在i写入之前读出
      WAR:读后写相关,指j想要在i读出之前写入
      WAW:写后写相关,指j想要在i写入之前写入
      按序流动的的流水线只可能发生RAW相关。
      数据相关解决办法有:把数据相关的指令及其后续指令暂停若干周期,或者设置专用的数据通路,即不等前一条指令把计算结果写回寄存器,下一条指令直接把上一条指令ALU的计算结果作为自己的输入数据开始计算过程。后一种称之为数据旁路技术
    3. 控制相关:指流水线遇到转移指令和其他改变PC值的指令而造成的断流的情况。解决办法有:
      尽早判别转移是否发生,今早生成转移目标地址
      预取转移成功和不成功两个控制流方向上的目标指令
      加快和提前形成条件码
      提高转移方向的准确率
  • 流水线的性能指标主要包括如下三种:
    1. 流水线的吞吐率是指单位之间内流水线完成的工作量,计算公式为:TP = n / Tk 其中n是任务数,Tk是处理完成n个任务所用时间
    2. 流水线的加速比是指不使用流水线和使用流水线的时间之比,计算公式为:S = T0 / Tk 其中T0代表不使用流水线所需的时间
    3. 流水线的效率指:在时空图上,n个任务占有的时空区有效面积和n个任务所用时间与k个流水段所围成的时空区总面积之比
  • 超标量流水线:以后再补

第六章 总线

buzhidao

总线分类

  • 按功能划分可划为以下三类:
    1. 片内总线:CPU内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线
    2. 系统总线:计算机系统内各功能部件之间的相互连接
    3. 通信总线:用于计算机系统之间或计算机系统和其他系统之间信息传递的总线
  • 系统总线又包括以下三类:
    1. 数据总线:双向传输总线,位数与机器字长、存储字长有关。数据是广义的,也就是说数据总线上传递的不一定是真正的数据
    2. 地址总线:单向传输总线,位数与存储单元有关。用来指出数据总线上的源数据或目的数据所在的主存单元或IO端口的地址
    3. 控制总线:传输控制信息,包括CPU送出的控制命令和主存或外设返回CPU的反馈信号

总线的性能指标:

  • 总线宽度:指总线上能够同时传输的数据位数,通常是数据线的根度
  • 总线带宽:可理解为总线的数据传输率。总线带宽(B/s) = 总线工作频率 * 总线宽度 / 8
  • 总线复用:指一种信号线不同时间传输不同信息。
  • 猝发传送:在一个总线周期中可以传输多个存储地址连续的数据,又称突发传送

总线仲裁

  1. 链式查询:总线上所有部件共用一根总线请求线。链式查询中,优先级是固定的,离总线越近优先级越高,结构简单容易扩充。缺点是对硬件电路故障最为敏感,优先级低的部件长期不能使用总线
  2. 数器定时查询:采用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根根总线响应线。优点是优先级可变,对电路的故障没有链式查询方式敏感;缺点是增加了控制线根数,约为⌈logn⌉ + 2条控制线
  3. 独立请求方式:每一个设备均有一对总线请求线和总线允许线。优点是响应速度快,优先级次序控制灵活;缺点是控制线数量多,需要2n + 1条控制线

总线操作和定时

  • 同步定时:系统采用一个统一的时钟信号来协调发送和接受双方的传送定时关系。一个总线周期中,发送方和接收方可以各进行一次数据传送。优点是传送速度快,总线控制逻辑简单;缺点是主从设备强制性同步,不能及时进行数据通信的有效性检验,可靠性较差
  • 异步定时:没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方的“握手”信号来实现定时控制。优点是总线周期长度可变,能使两个速度差别较大的部件之间进行信息交换。缺点是比同步方式控制方式更复杂,速度也更慢。
    异步定时方式又包括以下三种:不互锁、半互锁和全互锁

总线标准

  • 常见的有ISA、EISA、VESA、PCI、AGP、PCI-Express、RS-232C、USB、SCSI、SATA,这里不再赘述

第七章 输入/输出系统

I/O system

IO系统基本概念

  • 外部设备:输入/输出设备及通过输入/输出接口才能访问的外存储设备
  • 接口:在各个外设和主机之间的数据传输时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式的转换

磁盘与RAID

  • RAID是将多个独立的物理磁盘组成一个独立的逻辑盘,具有更好的存储性能、可靠性和安全性。在RAID1~RAID5的几种方案中,无论何时有磁盘损坏,都可以随时更换而不会损坏数据
  • 磁盘读写时间包括:寻道时间、延迟时间和传输时间。其中延迟时间是指定位到磁道中某一个扇区所需要的时间,多为半个自转周期。

I/O接口

  • I/O接口是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换
  • I/O总线分为如下三种:
    1. 数据线:I/O与主机之间数据代码之间的传递线,双向
    2. 地址线:又称设备选择线,用于主机选中具体的外部设备,单向
    3. 控制线:由CPU发出的用来控制外设的信号,如控制外设的启停,单向
  • I/O端口的编址包括如下两种:
    1. 统一编址:把I/O端口当作存储器的单元进行地址分配,采用统一的访存指令访问I/O端口。优点是不需要专门的I/O指令,使端口有较大的编制空间。缺点是占用了存储地址,是内存容量变小,执行速度较慢
    2. 独立编制:I/O端口地址与存储器地址无关,需要专门的I/O指令访问端口。优点是程序编制清晰,便于理解。缺点是I/O指令少,一般只能对端口进行操作,增加了控制的复杂性

I/O方式

  • 程序查询方式:CPU启动I/O后停止现行程序的运行,运用测试指令不断检测设备状态。显然此时CPU的占用率是100%
  • 程序中断方式:CPU在每条指令周期结束时,统一向所有中断源发出中断查询信号,若有中断则CPU进入中断周期,执行中断隐指令。其中中断隐指令由硬件执行,包括关中断,保存断点和引出中断服务程序。
  • 中断向量是指中断服务程序的入口地址,,那么中断向量地址指的就是中断服务程序入口地址的地址。
  • 中断处理过程(多级中断)包括:关中断->保存断点->取中断服务程序入口地址及新PSW->保护现场->送新屏蔽字->开中断->服务处理(执行中断服务程序)->关中断->恢复现场和屏蔽字->开中断->中断返回。其中前三项由硬件完成,其余皆由中断服务程序完成
  • 设置屏蔽字较为简单,不再赘述
  • DMA方式:DMA方式在外设和主存之间建立了一条“直接数据通道”,传输数据时不再经过CPU,而是由DMA控制器控制。它不需要保护、恢复CPU现场等繁琐的操作。DMA控制器必须具有控制总线的能力
  • DMA的传送方式包括:
    1. 停止CPU访问主存,要求CPU放弃相关总线使用权
    2. DMA和CPU交替访存,将一个周期分为两半,一半供CPU访存,另一半由DMA访存。这种方式的总线使用权是通过分时控制的
    3. 周期挪用:DMA挪用一个或几个存取周期
      显然,DMA优先级高于CPU,因为若外部设备得不到及时的响应,则传输的数据可能丢失,导致不可挽回的后果
  • DMA的传送过程包括预处理、数据传送和后处理,DMA的响应可发生在任意机器周期结束时(如取指、间址)
  • 通道控制方式:CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首地址和要访问的I/O设备,通道接到该命令后,通过执行通道程序便可完成CPU指定的I/O任务,数据传送结束时向CPU发出中断请求