计算机组成原理

计组作为计算机专业的重要专业课,感觉以前掌握的不太好,如今重新复习,并列提纲如下,望能起到温故而知新之效。

计算机系统概述

计算机发展历程

计算机硬件的发展

  • 世界上第一台电子数字计算机【ENIAC】

  • 计算机的四代变化

    • 电子管时代
    • 晶体管时代
    • 中小规模集成电路时代
    • 超大规模集成电路时代
  • 计算机元件的更新换代

计算机软件的发展

计算机的分类与发展方向

  • 电子计算机

    • 电子模拟计算机

    • 电子数字计算机

      • 专用计算机

      • 通用计算机

        • 巨型机
        • 大型机
        • 中型机
        • 小型机
        • 微型机
        • 单片机
  • 按指令和数据流分类

    • 单指令流和单数据流系统【SISD】

      • 传统冯诺依曼体系结构
    • 单指令流和多数据流系统【SIMD】

      • 阵列处理器和向量处理器系统
    • 多指令流和单数据流系统【MISD】

      • 不存在
    • 多指令流和多数据流系统【MIMD】

      • 多处理器和多计算机系统

计算机系统层次结构

计算机系统的组成

img

计算机硬件的基本组成

  • 早期的冯诺依曼机

    • 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备组成
    • 指令和数据以同等地位(二进制形式)存储在存储器中,并可按地址寻访,CPU通过寻址方式区分
    • 指令由操作码和地址码组成
    • 指令在存储器中按顺序存放
    • 早期的冯诺依曼机以运算器为中心,I/O通过运算器和存储器传送数据
    • 控制流驱动方式
    • img
  • 现代计算机的组织结构

  • img

  • 计算机的功能部件

    • 输入设备

    • 输出设备

    • 存储器

      • 概念

        • 计算机的存储部件,存放程序和数据
      • 主存储器(主存)

        • CPU能直接访问

        • <– 组成

          • 存储单元

            • <– 组成

              • 存储元件

                • 存储一位二进制代码“0”or“1”
            • 存储一串二进制代码,称为存储字,代码位数称为存储字长

              • 存储字长是1B(8bit)或字节的偶数倍
        • 包括

          • 存储体

          • 地址寄存器【MAR】

            • 位数对应存储单元个数

              • 10位代表有2^10个存储单元
          • 数据寄存器【MDR】

            • 位数与存储字长相等
          • 时序控制逻辑

        • 工作方式

          • 按存储单元的地址进程存取
      • 辅助存储器(外存储器、辅存)

        • 外存的信息调入主存才能被CPU访问
    • 运算器

      • 核心:算术逻辑单元【ALU】
      • 累加器、状态寄存器和通用寄存器组
      • 若干通用寄存器
    • 控制器

      • 包括

        • 程序计数器【PC】

          • 存放当前欲执行指令的地址,可自动+1形成下一条指令地址,与主存的MAR之间有一条直接通路
        • 指令寄存器【IR】

          • 存放当前的指令,内容来自主存的MDR
        • 控制单元【CU】

计算机软件的分类

  • 系统软件

    • OS、数据库管理系统【DBMS】、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序
  • 应用软件

计算机的工作过程

  • 1、把程序和数据装入主存
  • 2、从程序的起始地址允许程序
  • 3、用程序首地址从存储器取出第一条指令,经过一系列步骤完成指令功能,计算下一条指令的地址
  • 4、用得到的地址继续读第二条指令执行,直到程序结束
  • 每条指令都是在取指、译码和执行的循环中完成的

计算机系统的多级层次结构

  • img
  • 三个级别的语言

    • 机器语言

      • 二进制编码组成,机器语言是计算机唯一可以直接识别和执行的语言
    • 汇编语言

      • 英文或缩写代替二进制的指令代码,汇编语言要经过汇编操作,将其转化为机器语言才能执行
    • 高级语言

      • C++/java/C,编译程序编译成汇编语言,汇编操作得到机器语言才能执行

计算机性能指标

机器字长

  • 计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数

  • 机器字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高

  • 指令字长(与机器字长对比)

    • 一个指令中包含的二进制代码的位数
  • 存储字长(与机器字长对比)

    • 一个存储单元存储的二进制代码的长度

数据通路带宽

  • 数据总线一次所能并行传送信息的位数

主存容量

  • 主存储器能存储信息的最大容量,通常用字节(B)衡量

    • 字数×字长(例 512K×16位)

    • MAR的位数反映存储单元个数,其反映可寻址范围的最大值

      • MAR16位 表示有2^16=65536个存储单元 (称64K内存) MDR32位 则存储容量 64K×32位
    • n位地址->2^n个存储单元 最大容量= 2^n×存储字长

    • 总容量=存储单元个数×存储字长 bit单位 总容量=存储单元个数×存储字长/8 Byte单位

运算速度

每秒能执行多少条指令

  • 吞吐量

    • 系统单位时间内处理请求的数量
  • 响应时间

    • 用户向计算机发送一个请求,到系统做出相应并获得所需结果的等待时间

      • 通常包括CPU时间(允许一个程序所花时间)和等待时间(磁盘范围、存储器访问、I/O操作、操作系统开销等)
  • CPU时钟周期

    • 通常为节拍脉冲或T周期,即主频的倒数,是CPU中最小的时间单位,每个动作至少需要1个时钟周期
  • 主频(CPU时钟频率)

    • 机器内部主时钟的频率

      • CPU时钟周期=1/主频
    • 单位 Hz 1Hz表示每秒1次

  • CPI

    • 执行一条指令所需要的时钟周期数
  • CPU执行时间

    • 运行一个程序所花费的时间
    • CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
  • MIPS

    • 每秒执行多少百万条指令

      • MIPS=指令条数/(执行时间×10^6)=主频/CPI
  • MFLOPS

    • 每秒执行多少百万次浮点运算

      • MFLOPS=浮点操作次数/(执行时间×10^6)
  • GFLOPS

    • GFLOPS=浮点操作次数/(执行时间×10^9)
  • TFLOPS

    • TFLOPS=浮点操作次数/(执行时间×10^12)
  • 1位(b)=1比特(bit) 1字=2字节 1字节=8位=8比特

数据的表示和运算

数制与编码

进位计数制

  • 一进制
  • 二进制
  • 十进制

数制转换

  • 任意进制->十进制

  • 十进制->任意进制(主要考二进制)

    • 除基取余 先余为低 乘基取整 先整为高
  • 2^n 进制之间的转化

    • 分组

    • 二进制转八进制或十六进制

      • 整数部分从小数点向左,3位(八进制)一组或4位(十六进制)一组,不够在最左补0 小数部分从小数点向右,3位(八进制)一组或4位(十六进制)一组,不够在最右补0

真值和机器数

  • 真值

    • 像+15、-8这种带“+”“-”符号的数

      • 机器数所代表的实际值
  • 机器数

    • 将数据的符号数字化,通常0表示正,1表示负,例如0101表示+5。这种把符号“数字化”的数称为机器数

BCD码

  • 8421码

    • 两个码相加小于等于9,不需要修正 两个码享结大于等于10,加6修正
  • 余3码

    • 8421码基础上加3
  • 2421码

字符与字符串

  • ASCII码

    • 国际上普遍采用的字符系统 7位二进制编码的ASCII码
  • 字符串的存放(了解即可)

    • 大端模式

      • 从高位字节向低位字节顺序存在放
    • 小端模式

      • 从低位字节向高位字节顺序存在放
  • 汉字的表示和编码(了解即可)

    • 区位码
    • 国标码
    • 汉字内码

校验码

  • 奇偶校验码

    • img
  • 海明(汉明)校验码

    • img
    • 有效信息位n 和 校验位k 应满足 $2^k \geq n + k + 1$
  • 循环冗余校验码(CRC码)

    • img
  • 循环冗余码(多项式码)【CRC】

    • 任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。

      • k位帧视为$x^{(k-1)}$到$x^0$的k次多项式的系数序列
      • 7位帧1010111对应的多项式为$x^6+x^4+x^2+x+1$
    • 给定一个m bit的帧或报文,生成一个r bit的序列 称为帧检验序列(FCS) 则形成的帧由m+r比特组成,发送方和接收方确定一个多项式G(x)(最高位和最低位必须为1) 使得帧能被G(x)整除,接收方使用G(x)除去帧,无余数则无差错

    • 模2除法

      • 与逻辑异或相似: 1-1=0, 1-0=1, 0-1=1 , 0-0=0,
    • CRC校验的步骤

      • (1)选择一个生成多项式,作为对接收的帧进行除法运算时的除数

        • ①最高位和最低位必须为1;
        • ②当CRC码的任何一位发生错误时,新帧除生成多项式后余数不为0;
        • ③不同位发生错误时,余数应该是不同的;
        • 例如 $x^5+x^3+x^2+1$,写为二进制:101101
      • (2)计算CRC校验码位数k=生成多项式位数-1,在要发送的数据帧后加k个0 除第一步用生成多项式转化的二进制数,得到的余数即为CRC校验码;

        • 模2除时,余数的位数必须只比除数少一位,不能省略0
      • (3)把得到的校验码CRC代替补足的k个0,构成一个新数据帧发送到接收端,接收端将新帧除以之前选择的除数, 如果没有余数,则表明该数据帧在传输过程中没有出错,否则出错;

    • 例子

      • G(x)=1101(r=3) 待传送数据M=101001(m=6)

        • 余数R=001 发送的数据 101001001
        • img

定点数的表示和运算

定点数的表示

  • 定点数的表示

    • 无符号数

      • 整个机器字长全部二进制位均为数值位,机器字长n位 数的表示范围 0~2^n - 1
    • 有符号数

      • 0表示正,最高位为符号位
    • 机器数的定点表示

      • 定点小数

        • 小数点在符号位之后,有效数值部分最高位之前
        • 当$x_0=0$,$x_1$~ $x_n$均为1时,X为其能表示的最大正数,真值等于$1-2^{-n}$
        • 当$x_0=1$,$x_1$~ $x_n$均为1时,X为其能表示的最大负数,真值等于$-(1-2^{-n})$
      • 定点整数

        • 小数点在有效数值部分最低位之后
        • 当$x_0=0$,$x_1$~ $x_n$均为1时,X为其能表示的最大正数,真值等于$2^{n}-1$
        • 当$x_0=1$,$x_1$~ $x_n$均为1时,X为其能表示的最大负数,真值等于$-(2^{n}-1)$
  • 原码

    • 机器数的最高位表示该数的符号
    • 纯整数的原码定义
      • img
      • x为真值,n为整数的位数
      • 若字长为$n+1$,则原码整数的表示范围为$-(2^n-1)\leq x \leq 2^n-1$(关于原点对称)
    • 纯小数的原码定义
      • img
      • 若字长为$n+1$,则原码整数的表示范围为$-(1-2^{-n})\leq x \leq 1-2^{-n}$(关于原点对称)
  • 补码

    • 纯整数的补码定义
      • img
    • 纯小数的补码定义
    • 当真值为正时,补码与原码相同; 当真值为负时,补码(原码) <-> 原码(补码)符号位不变,其余按位取反,末位再加1
  • 反码

    • 纯整数的反码定义
      • img
    • 纯小数的反码定义
      • img
    • 真值为负,原码数值部分按位取反 -> 反码
  • 移码

    • img
    • 一个真值的补码和移码只差一个符号位
    • 移码全0 对应真值最小值$-2^n$ 移码全1 对应真值最大值$2^n-1$
    • 移码大 真值也大 移码小 真值小

定点数的运算

  • 移位运算

    • 算术移位
      • img
    • 逻辑移位
      • img
    • 循环移位
      • img
    • 右移n位:$\div r^n$,左移n位:$\times r^n$
  • 加减运算

    • 补码加减运算

      • 符号扩展

        • 定点数表示的数转换成具有不同位数的某种表示形式。其根本目的是:表示的数值保持不变。

        • 对于正数

          • 新表示形式的所有附加位都用0进行填充
        • 对于负数

          • 符号位保持不变,原码的所有附加位都用0进行填充
          • 符号位保持不变,反码的所有附加位都用1进行填充
          • 符号位保持不变,补码的所有附加位都用1(对于整数)或0(对于小数)进行填充
      • 溢出

        • img
        • img
        • img
      • 强制类型转化

        • 无符号数与有符号数:不改变数据内容,改变解释方式
        • 长整数变短整数:高位截断,保留低位
        • 短整数变长整数:符号扩展

浮点数的表示和运算

浮点数的表示格式

  • $N=r^E \times M$

    • r是浮点数阶码的底(隐含),与尾数的基数相同,通常r=2
    • E是阶码
    • M是尾数
  • img

IEEE754标准

  • img
  • 规格化的短浮点数的真值为:$(-1)^s \times 1.M \times 2^{E-127}$
  • 规格化的长浮点数的真值为:$(-1)^s \times 1.M \times 2^{E-1023}$
  • img

浮点数加减运算

  • img

强制类型转化

  • img
  • img

算术逻辑单元【ALU】

一种功能较强的组合逻辑电路

功能

  • 进行多种算术运算和逻辑运算
  • 加、 减、乘、除四则运算 与、或、非、异或等逻辑运算 移位、求补等操作

基本结构

  • img

加法器

  • 一位全加器
  • 串行加法器
  • 并行加法器

存储系统

存储器的层次结构

存储器的分类

  • 按在计算机中的作用分类

    • 主存储器(主存/内存储器/内存)

      • 存放计算机运行期间所需的大量程序和数据 CPU直接对其随机访问,可与Cache和辅存交换数据

        • 容量较小、存取速度快、价格高
    • 高速缓冲存储器(Cache)

      • 位于主存和CPU之间,存放正在执行的程序段和数据,便于CPU高速使用 存取速度与CPU的速度相匹配

        • 容量小、价格高
    • 辅助存储器(辅存/外存储器/外存)

      • 存放当前暂时不用的程序和数据以及一些需要永久性保存的信息 不能与CPU直接交换信息

        • 容量极大、存取速度慢、成本低
  • 按存储介质分类

    • 磁表面存储器(磁盘、磁带)
    • 磁心存储器半导体存储器(MOS型存储器、双极型存储器)
    • 光存储器(光盘)
  • 按存取方式分类

    • 随机存储器(RAM)

      • 任何一个存储单元都可以随机存取,存取时间与存储单元的物理位置无关

      • 分为

        • 静态RAM

          • 触发器原理寄存信息
        • 动态RAM

          • 电容充电原理寄存信息
      • 优点

        • 读写方便,使用灵活,主要用于主存或高速缓重存储器
    • 只读存储器(ROM)

      • 特点

        • ROM和RAM都是支持随机存取的存储器,均为易失性存储器

        • ROM一旦有了信息则不能轻易改变,即使断电也不会丢失

        • ROM优点

          • 结构简单,位密度比可读写存储器高
          • 具有非易失性,可靠性高
      • 类型

        • img
    • 串行访问存储器

      • 按物理位置先后顺序寻址

      • 包括

        • 顺序存取寄存器(SAM) 磁带
        • 直接存取寄存器(DAM) 磁盘
  • 按信息的可保持性分类

    • 易失性存储器

      • RAM
    • 非易失性存储器

      • ROM、磁表面存储器、光存储器
    • 破坏性读出

    • 非破坏性读出

存储器的性能指标

  • 存储容量=存储字数✖字长

    • 存储字数表示存储器的地址空间大小
    • 字长表示一次存取操作的数据量
  • 单位成本

    • 每位价格=总成本/总容量
  • 存储速度

    • 数据传输率=数据的宽度/存储周期

      • 存取时间(Ta)

        • 从启动一次存储器操作到完成该操作经历的时间,分为读出时间和写入时间
      • 存取周期(Tm)/读写周期/访问周期

        • 存储器进行一次完整的读写操作所需的全部时间 连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔
      • 主存带宽(Bm)/数据传输率

        • 每秒从主存进入信息的最大数量
      • 存取时间不等于存储周期,通常存取周期大于存取时间

      • img

存储器的层次化结构

  • img
  • 多级存储器结构
    • img

半导体随机存储器

半导体存储芯片

  • 半导体存储芯片的基本结构
    • img
    • img
  • 74138译码器
    • img

静态随机存储器【SRAM】与动态随机存储器【DRAM】

  • img

  • SRAM工作原理

    • 存储元是用双稳态触发器(六管 MOS)来记忆信息的
    • 即使信息被读出,它仍保持其原状态而不需要再生(非破坏性读出)
    • 只要电源被切断, 原来的保存信息便会丢失,它是易失性半导体存储器。
    • 一般用来组成高速缓冲存储器Cache。
  • DRAM工作原理

    • 利用存储元电路中栅极电容 上的电荷来存储信息的
    • 常见的 DRAM 的基本存储电路通常分为三管式和单管式。
    • 采用地址复用技术,地址线是原来的1/2,且地址信号分行、列两次传送。
    • 一般用来组成大容量主存系统
      • DRAM的刷新
        • 刷新周期:电容上的电荷只能停留1~2ms,所以刷新周期一般为2ms
        • 每次刷新多少存储单元:以行为单位,每次刷新一行
        • 如何刷新:硬件支持,读出一行信息后重新写入,占用1个读/写周期
        • 何时刷新(假设DRAM内部结构排列成128*128,读写周期0.5us,2ms有4000个周期)
          • img
          • img
          • img
      • DRAM采用地址复用技术,地址线减半
  • 存储器的读写周期(稍作了解)

    • RAM的读周期
      • img
    • RAM的写周期
      • img

只读存储器【ROM】

  • 特点

    • ROM和RAM都是支持随机存取的存储器

    • ROM一旦有了信息则不能轻易改变,即使断电也不会丢失

    • ROM优点

      • 结构简单,位密度比可读写存储器高
      • 具有非易失性,可靠性高
  • 类型

    • img

主存储器与CPU的连接

  • 位扩展

    • img

    • 用多个存储器件对字长进行扩充,增加存储字长 使其数据位数与 CPU 的数据线数相等。

    • 连接方式

      • 将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。
  • 字扩展

    • img

    • 增加存储器中字的数量,而位数不变。

    • 连接方式

      • 将芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。
  • img

双端口RAM和多模块存储器

双端口RAM

  • img
  • 同一个存储器有两个独立端口,分别具有两组相互独立的地址线、数据线和读写控制线 允许两个独立的控制器同时异步地访问存储单元
  • 两个端口同时存取存储器的同一地址时,会因数据冲突造成数据存储或读取错误

多模块存储器

  • 单体多字存储器

    • 存储器只有一个存储体,每个存储单元存m个字,总线宽度也为m个字,一次并行读出m个字,地址必须顺序排列并处于同一存储单元
  • 多体并行存储器

    • 高位交叉编址

      • img
      • 高地址体号、低地址为体内地址
    • 低位交叉编址

      • img
      • 低位地址为体号,高位地址为体内地址 程序连续存放在相邻体中
    • 每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器,既能并行工作也能交叉工作

    • 低位交叉编址流水线式存取

      • img

      • 设模块字长等于数据总线宽度 模块存取一个字的存取周期为 T 总线传送周期为 r m 称为交叉存取度。

        • 为实现流水线方式存取,存储器交叉模块数应大于等于:$m=T/r $

        • 每经 r 时间延迟后启动下一个模块,交叉存储器要求其模块数必须大于或等于m 以保证启动某模块后经过 m×r 的时间后再次启动该模块时,其上次存取操作已经完成(即流水线不间断)

        • 这样连续存取 m 个字所需的时间为$t_1 = T+(m-1)*r$

        • 顺序方式连续读取 m 个字所需时间为 $t_2=mT$

高速缓冲存储器

img

工作原理

  • Cache位于存储器层次结构的顶层,通常由 SRAM 构成

Cache和主存的映射方式

  • 直接映射 [对号入座]

    • 主存数据块只能装入 Cache 中的唯一位置。若这个位置已有内容,则产生块冲突,原来的块将无条件地被替换出去(无需使用替换算法)。
    • 地址结构
      • img
  • 全相联映射 [随便坐]

    • 可以把主存数据块装入 Cache 中的任何位置
    • 地址结构
      • img
  • 组相联映射 [按号分组,组内随便坐]

    • 将 Cache 空间分成大小相同的组,主存的一个数据块可以装入到一组内的任何一个位置, 即 组间采取直接映射,而组内采取全相联映射
    • 地址结构
      • img
  • img

Cache中主存块的替换算法

  • 随机算法

  • 先进先出算法

  • 近期最少使用

    • LRU 算法对每行设置一个计数器, Cache 每命中一次,命中行计数器清 0,而其他各行计数器均加1, 需要替换时比较各特定行的计数值,将计数值最大的行换出 。
  • 最不经常使用

    • 新行建立后从 0 开始计数,每访问一次,被访问的行计数器加 1, 需要替换时比较各特定行的计数值,将计数值最小的行换出。

写策略

  • Cache写命中

    • 全写法(写直通法)

      • 当 CPU 对 Cache 写命中时,必须把数据同时写入 Cache 和主存。当某一块需要替换时,不 必把这一块写回主存,将新调入的块直接覆盖即可。
    • 写回法

      • 当 CPU 对 Cache 写命中时,只修改 Cache 的内容,而不立即写入主存,只有当此块被换出 时才写回主存。
      • 每个 Cache 行必须设直一个标志位(脏位),以反映此块是否被 CPU 修改过。
  • Cache写不命中

    • 写分配法

      • 加载主存中的块到 Cache 中,然后更新这个 Cache 块。
    • 非写分配法

      • 只写入主存,不进行调块。
  • 非写分配法通常与全写法合用。写分配法通常和写回法合用。

指令系统

指令格式

基本格式

  • 操作码字段

    • 指出指令中该指令应该执行什么性质的操作和具有何种功能
  • 地址码字段

    • 给出被操作的信息的地址或操作数本身、可以有多个地址码
  • img

格式

  • img
  • 零地址指令
    • img
    • 1)不需要操作数的指令,如空操作指令、停机指令、 关中断指令等
    • 2)零地址的运算类指令仅用在堆核计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入到堆栈中。

定长操作码指令格式

  • 在指令字的最高位部分分配固定的若干位(定长)表示操作码

    • 一般n位操作码字段的指令系统最大能表示2^n条指令

扩展操作码指令格式

  • img
  • 全部指令的操作码字段的位数不固定

指令的寻址方式

指令寻址

  • img

  • 顺序寻址方式

    • (PC)+ 1 -> PC
  • 跳跃寻址方式

    • 由本条指令给出下条指令地址的计算方式

数据寻址

  • 常见的数据寻址方式

    • 隐含寻址

      • img
    • 立即(数)寻址

      • img
      • 一条指令的执行:取指令 访存1次 执行指令 访存0次
      • 优点:指令执行阶段不访问主存,指令执行时间最短
      • 缺点:形式地址的位数限制了立即数的范围
      • img
    • 直接寻址

      • img
      • 在指令格式的地址的字段中直接指出操作数在内存的地址。
    • 间接寻址

      • img

      • 指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器 或者说此形式地址单元的内容才是操作数的有效地址。

        • 优点:可扩大寻址范围、便于编制程序

        • 缺点:需要多次访存,访问速度过慢

      • 主存字第一位为1时,表示取出的不是操作数地址,即多次间接寻址

      • 主存字第一位为0时,表示取得的是操作所的地址

        • 一次间址寻址

          • 访存次数:2次
    • 寄存器寻址

      • 指令字中直接给出操作数所在的寄存器编号

        • 优点

          • 不需要访问主存、速度更快
        • 缺点

          • 寄存器很贵
    • 寄存器间接寻址

      • 寄存器中给出的是操作数所在主存单元的地址
    • 相对寻址

      • img

      • PC的内容加上形式地址A而形成操作数的有效地址 即EA=(PC)+A

        • 优点

          • 操作数的地址不固定,便于程序浮动,广泛应用于转移指令
        • 访存次数:1次

    • 基址寻址

      • 将CPU中基址寄存器(BR)的内容+形式地址A而形成有效地址 即EA=(BR)+A

        • 优点

          • 可扩大寻址范围,用户不用考虑自己的程序存于主存的哪个空间区域,有利于多道程序的设计,可用于编制浮动程序
        • 缺点

          • 形式地址A (偏移量)较短
      • img

      • img

      • 访存次数:1次

    • 变址寻址

      • img

      • $EA=(IX)+A$ IX为变址寄存器(专用),也可以用通用寄存器作为变址寄存器

        • 优点

          • 可扩大寻址范围,适合编制循环程序,偏移量的位数足以表示整个存储空间
      • 变址寄存器中的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)

        • 主要用于处理数组问题

        • 访存次数:1次

    • 堆栈寻址

      • 堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出原则管理的存储区,该存储区中被读/写单元的地址是一个特点的寄存器给出的,该寄存器称为堆栈指针(SP)
    • img

CISC和RISC

  • 对比

    • img
  • CISC

    • 指令数目多、字长不固定、寻址方式多、寄存器数量少、一般为微程序控制
  • RISC

    • 指令数目少、字长固定、寻址方式少、寄存器数量多、一般为组合逻辑控制

中央处理器【CPU】

功能和基本结构

功能

  • 指令控制

    • 完成取指令、分析指令、和执行指令的操作,即程序的顺序控制
  • 操作控制

  • 时间控制

  • 数据加工

  • 中断处理

CPU的基本结构

  • 运算器

    • 算术逻辑单元【ALU】

      • 进行算术、逻辑运算
    • 暂存寄存器

      • 暂存从主存中读来的数据
    • 累加寄存器

      • 暂时存放ALU运算的结果信息
    • 通用寄存器组

      • 用于存放操作数和各种地址信息,位数与机器字长相等
    • 程序状态字寄存器【PSW】

      • 保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息, 如溢出标志(OP)、符号标志(SF)、零标志、(ZF)、进位标志 (CF)等 PSW 中的这些位参与并决定微操作的形成
    • 移位器

      • 对操作数或运算结构进行移位运算
    • 计数器

  • 控制器

    • 程序计数器【PC】

      • 存放下一条要执行的指令的地址
      • 因程序中指令(通常)是顺序执行的,所以 PC 有自增功能
    • 指令寄存器【IR】

      • :用于保存当前正在执行的那条指令
    • 指令译码器

      • 仅对操作码字段进行译码,向控制器提供特定的操作信号
    • 存储器地址寄存器【MAR】

      • 用于存放所要访问的主存单元的地址
    • 存储器数据寄存器【MDR】

      • 用于存放向主存写入的信息或从主存中读出的信息
    • 时序系统

      • 用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到
    • 微操作信号发生器

      • 根据 IR 的内容(指令)、 PSW 的内容 (状态信息)及时序信号, 产生控制整个计算机系统所需的各种控制信号

CPU中的寄存器

  • 用户可见的寄存器

    • 通用寄存器组
    • 程序状态字寄存器【PSWR】
    • 程序计数器【PC】
    • 累加寄存器【ACC】
  • 用户不可见的寄存器

    • 指令寄存器【IR】
    • 暂存j寄存器【DR】
    • 存储器地址寄存器【MAR】
    • 存储器数据寄存器【MDR】

指令执行过程

指令周期

  • CPU从主存中每取出并执行一条指令所需的全部时间,即CPU完成一条指令的时间

img

img

指令周期的数据流

  • 取值周期

    • img
    • img
    • img
    • img
  • 间址周期

    • img
    • img
    • img
  • 执行周期

  • 中断周期

    • img

    • img

        1. CU控制将SP减1,修改后的地址送入MAR,记做:(SP)-1→SP,(SP)→MAR,本质上是将端点存入某个存储单元,假设其地址为a,故可记做:a→MAR
        1. CU发出控制信号,启动主存进行写操作 记做1->W
        1. 将断电(PC的内容)送入MDR 记做 (PC)->MDR
        1. CU控制将中断服务程序的入口地址送到PC 记做 向量地址->PC

指令执行方案

  • 单指令周期

    • 对所有指令都选用相同的执行时间来完成,指令之间串行执行
  • 多指令周期

    • 对不用类型的指令选用不同的执行步骤来完成,指令之间串行执行
  • 流水线方案

    • 指令之间并行执行

数据通路的功能和基本结构

功能

  • 实现CPU内部的运算器与寄存器之间的数据交换

基本结构

  • CPU内部单总线方式

    • 将所有寄存器的输入和输出端连接到一条公共通路上
  • CPU内部三总线方式

    • 将所有寄存器的输入和输出端连接到多条公共通路上
  • 专用数据通路方式

    • 根据指令执行过程中的数据和地址的流动方向安排连接线路

控制器的功能和工作原理

  • 控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址, 送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。

功能

  • 从主存中取出一条指令,并指出下一条指令在主存中的位置
  • 对指令进行移码或测试,产生相应的操作控制信号,以便启动规定的动作
  • 指挥并控制CPU、主存、输入和输出设备之间的数据流向

分类

  • 硬布线控制器

    • 取值周期微操作命令

    • 间址周期的微操作命令

    • 执行周期的微操作命令

      • 非访存指令

      • 访存指令

      • 转移指令

  • 微程序控制器

    • 基本概念

      • 微命令

        • 将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位

        • 分类

          • 相容性微命令

            • 可以同时产生、共同完成一些微操作的命令
          • 互斥性微命令

            • 在机器中不允许同时出现的微命令
      • 微指令

        • 若干微命令的集合
      • 微操作

        • 微操作是微命令的执行过程
    • 微指令的格式

      • 水平型微指令

        • 一条水平型指令定义并执行集中并行的基本操作
      • 垂直型微指令

        • 一条垂直型指令定义并执行一种基本操作
      • 混合型微指令

    • 微指令的编码方式

      • 直接编码方式
      • 字段直接编码方式
      • 字段间接编码方式
    • 微指令的地址形成方式

对比

指令流水线

指令流水线的定义

  • 顺序执行方式

    • $T=3nt$
  • 一次重叠执行方式

    • $T=(1+2n)t$
  • 二次重叠执行方式

    • $T=(2+n)t$

影响流水线的因素

  • 结构相关(资源冲突)

    • 多条指令在同一时刻争用同一资源而形成的冲突

    • 解决方法

      • 前一指令访存时,使后一条相关指令(以及其后续指令)暂停一个时钟周期。
      • 单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行,这属于资源重复配置。
  • 数据相关(数据冲突)

    • 数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这 两条指令即为数据相关。当多条指令重叠处理时就会发生冲突

    • 读后写与写后写会出现问题

    • 解决方法

      • 数据旁路技术

        • 设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组, 而是直接把前一条指令的 ALU 的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行
      • 把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行 可分为硬件阻塞(stall)和软件插入“NOP”指令两种方法

      • 通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关

  • 控制相关

    • 当流水线遇到转移指令和其他改变 PC 值的指令而造成断流时,会引起控制相关

    • 解决办法

      • 对转移指令进行分支预测,尽早生成转移目标地址
      • 预取转移成功和不成功两个控制流方向上的目标指令
      • 加快和提前形成条件码
      • 提高转移方向的猜准率

流水线的性能指标

  • 吞吐率【TP】

    1
    -  n 是任务数
    

    Tk是处理完成 n 个任务所用的时间

    1
        - ▲t为时钟周期
    
  • 加速比

    • 完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。
      • T0表示不使用流水线时的执行时间,即顺序执行所用的时间 Tk表示使用流水线时的执行时间
  • 效率

超标量流水线

  • 超标量流水线技术

    • 每个时钟周期内可并发多条独立指令,即以并行操作方式将两条或多条指令编译并执行,为此需配置多个功能部件。
  • 超流水线技术

    • 在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次
  • 超长指令字

    • 将多条能并行操作的指令组合成一条具有多个操作 码字段的超长指令字

总线

总线概述

总线基本概述

  • 总线

    • 一组能为多个部件分时共享的公共信息传送线路

    • 特点

      • 分时

        • 同一时刻只允许一个部件向总线发送信息
      • 共享

        • 总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线路分时共享
  • 总线设备

    • 主设备
    • 从设备
  • 总线特性

    • 机械特性

      • 尺寸、形状
    • 电气特性

      • 传输方向、有效电平范围
    • 功能特性

      • 每根线的功能
    • 时间特性

      • 信号和时序的关系
  • 总线的猝发传送方式

    • 在一个总线周期内传输存储地址连续的多个数据字的总线传输方式

总线分类

  • 片内总线

    • CPU芯片内部寄存器之间、寄存器与ALU之间的公共连接线
  • 系统总线

    • 计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线

    • 分类

      • 数据总线

        • 传输各功能部件之间的数据信息,双向传输总线,位数与机器字长、存储字长有关
      • 地址总线

        • 用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址,单向传输总线,位数与主存地址空间大小有关
      • 控制总线

        • 传输控制信息,包括CPU送出的控制命令和主存(或外设)返回CPU的反馈信号
  • 通信总线(外部总线)

    • 计算机系统之间或计算机系统与其他系统之间传送信息的总线

总线的结构

  • 单总线结构

  • 双总线结构

  • 三总线结构

总线的性能指标

总线仲裁

集中仲裁方式

  • 总线控制逻辑基本上集中于一个设备中,将所有的总线请求集中起来,利用一个特定的裁决算法进行裁决

  • 分类

    • 链式查询方式

      • 总线上所有部件共用总线请求线,有部件请求使用总线时,通过此线发送请求信号到总线控制器 总线控制器检查总线,若不忙 则立即发送总线响应信号,经BG串行地从一个部件传送到下一个部件,依次查询,直到响应信号到达地部件有请求
      • 部件离总线控制器越近,优先级越高
    • 计数器定时查询方式

      • 当总线控制器收到请求信号并判断总线空闲时,计数器开始计数,计数值通过设备地址线发送到各个部件 当地址线上地计数值与请求总线设备的地址一致时,该设备获得总线控制权,此时停止计数和查询
    • 独立请求方式

分布仲裁方式

总线操作和定时

总线传输4个阶段

同步定时方式

异步定时方式

总线标准

I/O系统

I/O系统基本概念

I/O系统

  • I/O软件

  • I/O硬件

    • 包括外部设备、设备控制器、接口、I/O控制总线

I/O控制方式

  • 程序查询方式

  • 程序中断方式

  • DMA方式

  • 通道方式

    • 系统中设有通道控制部件,每个通道挂接若干外设 主机执行I/O命令时,只需启动相关通道,通道执行通道程序完成I/O操作 通道程序存放在主存中

外部设备

输入设备

  • 键盘
  • 鼠标

输出设备

  • 显示器

    • 阴极射线管显示器【CRT】

      • 字符显示器

        • 显示字符的方法以点阵为基础

          • VRAM中存放的是显示字符ASCII码
      • 图像显示器

        • 随机扫描方式
    • 液晶显示器【LCD】

    • LED显示器

    • 参数

      • 屏幕大小

        • 对角线长度表示
      • 分辨率

        • 所能表示的像素个数,高和宽的像素数乘积 例如800×600
      • 灰度级

        • 黑白显示器中所显示的像素点的亮暗差别 彩色显示器中表现为颜色的不同 灰度级越多,图像层次越清楚
      • 刷新

        • 刷新存储器中存储单元的字长取决于颜色数 颜色数m 字长n 则有2^n=m
      • 刷新频率

        • 单位时间内扫描整个屏幕内容的次数,大于30Hz才不会感到闪烁
      • 显示存储器【VRAM】

        • VRAM容量=分辨率×灰度级位数
        • VRAM带宽=分辨率×灰度级位数×帧频
  • 打印机

外存设备

  • 磁盘存储器

    • 存储区域

    • 硬盘存器器的组成

      • 磁盘驱动器
      • 磁盘控制器
    • 性能指标

      • 磁盘的容量

        • 一个磁盘所能存储的字节总数

        • 非格式化容量

          • 磁记录表面可以利用的磁化单元总数
        • 格式化容量

          • 按照某种特定的记录格式能存储的信息总量
      • 记录密度

      • 平均存取时间

        1
        - 存取一个扇区的平均延迟时间为旋转半周的时间
        
      • 数据传输率

        • 磁盘存储器在单位时间内向主机传送数据的字节数

          • D=rN

            • 磁盘转数为 r转/秒 每条磁道容量N个字节
    • 磁盘地址

  • 磁盘阵列

    • •RAID0:无冗余和无校验的磁盘阵列。 •RAID1:镜像磁盘阵列。 •RAID2:采用纠错的海明码的磁盘阵列。 •RAID3: 位交叉奇偶校验的磁盘阵列。 •RAID4:块交叉奇偶校验的磁盘阵列。 •RAIDS:无独立校验的奇偶校验磁盘阵列。

      • RAID0

        • 把连续多个数据块交替地存放在不同物理磁盘的扇区中,几个磁盘交叉井行读写,不 仅扩大了存储容量,而且提高了磁盘数据存取速度, 但没有容错能力
      • RAID1

        • 为了提高可靠性,使两个磁盘同时进行读写,互为备份, 如果一个磁盘出现故障, 可从另一磁盘中读出数据。两个磁盘当一个磁盘使用,意味着容量减少一半。
      • 通过同时使用多个磁盘,提高了传输率; 通过在多个磁盘上井行存取来大幅提 高存储系统的数据吞吐量:通过镜像功能,可以提高安全可靠性; 通过数据校验,可以提供容错 能力。

  • 光盘存储器

  • 固态硬盘

I/O接口(I/O控制器)

功能

  • 主机和外设通道的通信联络控制
  • 进行地址译码和设备选择
  • 实现数据缓冲
  • 信号格式的转换
  • 传送控制命令和状态信息

基本结构

I/O端口及其编址

  • I/O端口

    • 接口电路中可被CPU直接访问的寄存器,主要有

      • 数据端口

        • 读写
      • 状态端口

      • 控制端口

  • 编制方式

    • 统一编址(存储器映射方式)

      • 把I/O端口当作存储器的单元进行地址分配
    • 独立编址(I/O映射方式)

      • 设置专门的I/O指令访问端口

I/O方式

程序查询方式

程序中断方式

中断

  • 概念

    • 计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求, CPU暂时中止现行程序,转而处理异常或特殊请求,处理完毕后CPU又自动返回现行程序断点处
  • 分类

  • 中断请求过程

  • 中断响应过程

    • 响应中断的条件

      • 中断源有中断请求
      • CPU允许中断及开中断
      • 一条指令执行完毕,没有更紧迫的任务
    • 中断判优

      • 软件

        • 查询程序
      • 硬件

        • 硬件排队器
      • 优先级

        • 硬件>软件 非屏蔽>屏蔽 DMA>I/O 高速>低速 I>O 实时>普通
  • 中断处理过程

    • 中断隐指令【不是指令系统中真正的指令】

      • 关中断

      • 保存断点

      • 引出中断服务程序

        • 软件查询法
        • 硬件向量法
      • 保存现场和屏蔽字

      • 开中断

      • 执行中断服务程序

      • 关中断

      • 恢复现场和屏蔽字

      • 开中断、中断返回

  • 多重中断和中断屏蔽

    • 单重中断

      • 如果CPU在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,而 CPU 对新的中断请求不予响应,这种中断为单重中断。
    • 多重中断

      • 如果 CPU 暂停现行的中断服务程序, 转去处理新的中断请求,这种中断为多重中断,又称中断嵌套

      • 多重中断与单重中断的区别在于多重中断在保护现场后需要开中断,以便响应更高优先级的中断请求,而在恢复现场前又需要关中断,恢复现场的过程不能被中断

    • 中断屏蔽

      • 中断屏蔽技术主要用于多重中断, CPU 要具备多重中断的功能,必须满足下列条件: ①在中断服务程序中提前设置开中断指令。 ② 优先级别高的中断源有权中断优先级别低的中断源。 每个中断源都有一个屏蔽触发器, 1表示屏蔽该中断源的请求,0表示可以正常申请

      • 屏蔽字寄存器

        • 所有屏蔽触发器组合在一起构成
      • 屏蔽字

        • 屏蔽字寄存器的内容

DMA

  • DMA方式

    • 特点
  • DMA控制器的组成

  • DMA传送过程

  • DMA传送方式

    • 停止CPU访问主存
    • DMA与CPU交替访存
    • 周期挪用(周期窃取)
  • 与中断对比