概述

计算机系统层次结构

  1. 计算机系统硬件组成:运算器、控制器、存储器、输入输出设备
  2. 冯诺依曼计算机设计关键思想:存储程序,并按地址顺序执行
  3. 计算机软件组成:系统软件、应用软件
  4. 计算机语言:自然语言、高级语言、汇编语言、机器语言
  5. 计算机性能指标
    1. 基本字长:表示一个操作数或一条指令所用的基本二进制位数
    2. 运算速度:以MIPS和MFLOPS作为计量单位衡量运算速度
    3. 主频:CPU工作主时钟的频率,时钟周期为主频的倒数
    4. CPI:执行一条指令所用的时钟周期数

数据的表示和运算

数制与编码

  1. 进位计数制及其相互转换

  2. 数值数据的编码与表示

    1. 真值和机器数

      1. 真值:数据的数值通常以正(+)、负(-)号后跟绝对值来表示,称之为“真值”。
      2. 机器数:在计算机中使用的连同数符一起数码化的数值称为机器数。
    2. BCD码:计算机中采用4位二进制码对每个十进制数位进行编码,一个多位的十进制数被表示为这种编码的数串。

    3. 校验码:提高计算机的可靠性,采用少量冗余的线路,在原有数据位之外增加校验位,使新得到的由数据位和校验位构成的码字带上某种特性

      1. 概念:

        1. 码字:若干位二进制代码组成的一个字
        2. 码制:包含若干种码字的集合
        3. 距离:在一种码制中将两个码字逐位比较,具有不同代码的位的个数叫做这两个码字间的“距离”
        4. 码距:将一种码制中各码字间的最小距离称为“码距”
      2. 常见校验码:

        1. 奇偶校验码:码距由1增加到2

        2. 循环冗余校验码(CRC):CRC整个编码长度为n=k+r位,k位信息之后拼接r位校验码

          • 生成步骤:将被传送的k位信息C(x)左移r位,除以多项式G(x),得到商Q(x)和余数R(x)

            C(x)2r/G(x)=Q(x)+R(x)/G(x)C(x)*2^r/G(x)=Q(x)+R(x)/G(x)

            C(x)2r+R(x)=Q(x)G(x)C(x)*2^r+R(x)=Q(x)*G(x)

          • CRC采用按位加减,不考虑进位与借位。

          • G(x)是约定的除数,为了得到r位余数,G(x)必须是r+1位

定点数的表示和运算

  1. 定点数的表示(计算机中,小数点位置固定不变的数)

    1. 无符号数的表示:全部位数用来表示数值大小,对于字长为n位的无符号数的表示范围:02n10\sim2^n-1
    2. 带符号数的表示:二进制最高位为符号位,“0”代表该数为正,“1”代表为负
    3. 纯小数的原码、反码、补码
      1. X=0.1011 原 = 反 = 补 = 0 1011
      2. X=-0.1011 原 = 1 1011 反 = 1 0100 补 = 1 0101
      3. 原码、反码表示范围:(12(n1))X12(n1)-(1-2^{-(n-1)})\le X\le1-2^{-(n-1)}
      4. 补码表示范围:1X12(n1)-1\le X\le1-2^{-(n-1)}
      5. [y]补码 ↔ [-y]补码 将所有位取反在末位+1
      6. 补码可以表示(-1),因为0的原码、反码为 0 0000 和 1 0000 他们的补码均为 0 0000 故用多出来的1 0000来表示-1的补码。
    4. 整数的原码、反码、补码表示基本同纯小数,不同点在于小数点的位置。
      1. 原码、反码表示范围:(2n11)X2n11-(2^{n-1}-1)\le X\le2^{n-1}-1
      2. 补码表示范围:2n1X2n11-2^{n-1}\le X\le2^{n-1}-1
  2. 定点数的运算

    1. 移位
      1. 算术移位:移位后绝对值发生变化,带符号位移位
      2. 逻辑移位:参与移位的对象被视为纯逻辑意义上的代码组合,使数码位置发生变化,没有正负性质、大小问题,无符号数移位。
    2. 补码定点数加/减运算
      1. 加法:[x+y]_{\mbox{补}}=[x]_{\mbox{补}}+[y]_{\mbox{补}}
      2. 减法:[x-y]_{\mbox{补}}=[x]_{\mbox{补}}+[-y]_{\mbox{补}}
      3. 溢出判断:
        1. 单符号位:OV=CsCfOV=Cs\oplus Cf,其中,CsCs为符号位的进位,CfCf为最高数值位进位
        2. 双符号位:正数双符号位为00,负数为11,运算后01为正溢,10为负溢
  3. 定点数的乘法运算

    待补充

浮点数的表示和运算

  1. 浮点数的表示

    1. 浮点数通常用N=MREN=M*R^E来表示,其中,M为尾数,E是阶码,R是阶的基数,且R为常数,一般为2,8或16.

    2. 浮点数的一般机器格式:

      image-20220608144535099
    3. 尾数规格化:12M<1\dfrac{1}{2}\le|M|\lt1,即正数的尾数应该为0.1xxxx,负数的尾数应该为1.1xxxx

    4. 上溢:浮点数阶码大于机器最大阶码:中断;下溢:浮点数阶码小于机器最小阶码:零处理。

  2. IEEE标准

    1. 单精度浮点数(32位),阶码8位,尾数24位(含1位符号位)
    2. 双精度浮点数(64位),阶码11位,尾数53位(含1位符号位)
    3. 约定小数点左有一位隐含位,使得尾数有效值位1.M。
    4. 阶码用移码表示:n位阶码,偏移量为2n112^{n-1}-1,即127或1023
    5. 格式:1位符号位S+8/11位阶码E+23/52位尾数
  3. 浮点数加减运算

    1. 对阶:低阶向高阶对齐:
      1. 求阶差:Δj=jxjy\Delta j=j_x-j_y
        1. Δj>0,Sy\Delta j>0, S_y右移
        2. Δj<0,Sx\Delta j<0, S_x右移
      2. 尾数为原码时,尾数右移时,符号位不动,最高数值位补0
      3. 尾数为补码时,尾数右移时,符号位也移位,最高位补符号位
      4. 对齐原则:小向大对齐
    2. 尾数运算:阶码对齐后直接对尾数进行运算
    3. 结果规格化:使补码尾数的最高位和尾数符号相反,如溢出需右规,不是规格化时应左归
    4. 舍入操作:右规或对阶过程中,尾数低位会被移掉,常用0舍1入法。当移掉部分最高位为1时,在尾数末尾加1,如果加1后又使得尾数溢出,则需要再进行一次右规。
    5. 判断溢出:下溢置0,上溢中断

算术逻辑单元ALU

  1. 串行进位加法器
    • 三输入、两输出
    • Si=AiBiCi1Si=A_i\oplus B_i\oplus C_{i-1}
    • Ci=AiBi+BiCi1+AiCi1=AiBi+(Ai+Bi)Ci1C_i=A_iB_i+B_iC_{i-1}+A_iC_{i-1}=A_iB_i+(A_i+B_i)C_{i-1}
  2. 并行进位加法器
    • 引入两个函数:进位产生函数Gi=AiBiG_i=A_iB_i,进位传递函数Pi=Ai+BiP_i=A_i+B_i,则Ci=Gi+PiCi1C_i=G_i+P_iC_{i-1}
    • 提高速度的关键:尽量加快进位产生和传递的速度
  3. 算术逻辑单元ALU
    • 4位ALU部件SN74181

存储器系统

存储器分类

  1. 按存储介质:半导体存储器、磁表面存储器、光存储器
  2. 按读写性质分:随机读写存储器(RAM)(又分为SRAM、DRAM)、只读存储器(ROM)
  3. 按在计算机中的层次作用:主存储器、辅存、高速存储器(Cache)

存储器层次结构

image-20220608153715079
  1. 存储系统运行遵循的局部性原理:时间、空间、顺序局部性
  2. 一致性原则和包含性原则

半导体随机存取存储器

  1. SRAM(静态随机存储器)

    1. 存储信息原理:依靠双稳态电路内部交叉反馈机制存储
    2. 特点:速度快、功耗大,集成度较低,常用于Cache
    3. 非破坏性读出
  2. DRAM(动态随机存储器)

    1. 存储信息原理:依靠电容存储电荷的原理存储信息

    2. 特点:功耗低,集成度较高,速度快,常用于主存

    3. 破坏性读出,读出后需要重写

    4. DRAM的刷新定义:定期向电容补充电荷

    5. DRAM的刷新方法:各动态芯片可同时刷新,片内按行刷新,刷新一行所用时间称为刷新周期(存取周期)

      1. 集中式刷新:2ms内集中安排所有刷新周期,用在实时要求不高的场合

        image-20220608155337335
      2. 分散式刷新:用在低速系统中

        image-20220608155443250
      3. 异步刷新:各刷新周期分散安排在规定时间内,每隔一段时间刷新一行,用于大多数计算机中

        image-20220608155432727
  3. ROM(只读存储器)

    1. ROM:由芯片制造商制造时写入内容,以后只读不写。使用二极管/晶体管作为原件。
    2. PROM:一次性写入存储器,多用熔丝制作并用通断表示1/0
    3. EPROM:信息改写用紫外线照射即可擦除
    4. E2^2PROM:编程序原理同EPROM,擦除原理完全不同,具有电擦除功能
    5. Flash Memory:同时具有ROM和RAM两者性能。大容量、非易失性、低价格、可在线改写、高速度(读)。

主存储器的组成与控制

  1. 主存储器:计算机中存放当前正在执行的程序以及数据的存储器

    image-20220608160436383
  2. 半导体存储器的基本组成

    image-20220608160511308
  3. 存储矩阵:一个基本单元电路只能存放一位二进制信息,为保存大量信息,存储器中需要将许多基本单元电路按一定的顺序排列成阵列形式,称为存储矩阵。排列方式:字结构和位结构。

    排列方式:字结构、位结构

    1. 字结构:同一芯片存放一个字的多位。优点:选中某个单元的各位信息可以从一个芯片读出;缺点:芯片外引线较多。适合容量小的SRAM。
    2. 位结构:同一芯片存放多个字的同一位。优点:外引线少;缺点:需要多个芯片组合。适合DRAM和大容量SRAM。
  4. 地址译码器:功能:接收系统总线传来的地址信号,产生地址译码信号后,选中存储矩阵中的某个或几个基本存储单元。

    1. 单译码:适合小容量存储器
      • eg. 地址线12根,对应4096个状态,需要4096根译码线
    2. 双译码:适合大容量存储器,也称矩阵译码器
      • eg. 地址线12根,X、Y方向各6根,64×64=4096个状态,只需64+64=128根译码线。
  5. 存储器控制电路:通过存储器控制信号的引线端接收来自 CPU或外部电路的控制信号,经过组合变换后对存储矩阵、地址译码器和三态双向缓冲器 MDR 进行控制。

    基本引脚:CE\overline{CE}(或CS\overline{CS}),R/WR/\overline{W}(或WE\overline{WE}OE\overline{OE}

主存储器与CPU的连接

存储器芯片容量有限,在字数和字长方面与实际存储器有很大差距,需要进行扩充。

  1. 存储容量:存放信息的总数,容量 = 存储字数×字长

  2. 存取时间TAT_A:存储器从寻找存储单元的地址码开始到读出或存入数据为止所需时间。

  3. 存储周期TMT_M:CPU连续两次访问存储器所需要的最短时间间隔,略大于存取时间,即TM>TAT_{M}>T_A

  4. 主存容量扩展

    1. 位扩展:多个位扩充的存储芯片的数据线连接于系统数据总线的不同位;其它对应连接;这些芯片应被看作是一个整体

      image-20220608162436400
    2. 字扩展:SRAM 进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。

      专用译码器:2-4译码(74139)、3-8译码(74138),低地址分配芯片内,高地址形成片选逻辑

      image-20220608162545089

高速缓冲存储器(Cache)

目的:解决CPU和主存之间的速度差异,由高速SRAM组成,容量不大,但速度快

特点:存取速度快,容量小、价格高,对程序员透明

  1. 基本工作原理:时间局部性、空间局部性

  2. Cache组成

    1. Cache和主存空间都被划分同样大小的区域,其中:
      • 主存中的区域称位块,一个块由若干定长的字组成
      • Cache中存放一个块的区域叫作行或槽
    2. 每一Cache行外加一个标记tag,指明是主存哪一块的副本
    3. 为了识别一个Cache行信息是否有效,增加一个有效位。
  3. 主存和Cache编址:

    • Cache与主存之间以块为单位交换数据,块(行)的大小相同

    • B=2bB=2^b为每个块(行)的大小

      image-20220608164758392
  4. Cache工作流程

    1. 访存时,CPU送出主存地址
      • 若命中,该主存地址变换成Cache地址,并送往Cache,直接从Cache读出字并送到DB

      • 若未命中,主存将读出的字送到DB,同时将字所在的块复制到Cache,若Cache有空闲则装入,无空闲则依据算法替换

        image-20220608185435565
  5. Cache的指标

    1. Cache的命中率
      1. 命中:主存块调入了Cache,主存块与Cache行建立了对应关系
      2. 未命中:未调入Cache,未建立关系
      3. 命中率h=NcNc+Nmh=\dfrac{N_c}{N_c+N_m}
    2. Cache平均访问时间:ta=htc+(1h)(tm+tc)htc+(1h)tmt_a=ht_c+(1-h)(t_m+t_c)\approx ht_c+(1-h)t_m,其中tct_c代表Cache存取周期,tmt_m代表主存存取周期,hh代表命中率
    3. 访问效率:e=tcta=1r+(1r)he=\dfrac{t_c}{t_a}=\dfrac{1}{r+(1-r)h},其中r=tmtcr=\dfrac{t_m}{t_c}代表主存慢于Cache的倍率
    4. 加速比:SP=tmtaSP=\dfrac{t_m}{t_a}
  6. Cache的地址映像方式

    1. 基本映像方式

      1. 直接映像:将主存分为与Cache同样大小的若干个区,每个区中的某个主存块只能映像到Cache的一个固定行

        1. 映像关系:i=jmodCi=j\enspace mod\enspace Ci=jmod2ci=j\enspace mod\enspace2^c,其中i为Cache行号,j为主存块号,C为Cache总行数,c为Cache行地址位数,且C=2cC=2^c,区号k=j/ck=\lceil j/c\rceil

          image-20220608190730702
        2. 主存地址构成:标记+Cache行号+块内地址,其中标记表示属于哪个区

          image-20220608191019354
        3. Cache地址构成:标记+块内地址

        4. 每个Cache行i可以和若干个主存块对应,每个主存块j只能和一个Cache行对应

        5. 优点:实现简单;缺点:不够灵活,降低命中率

      2. 全相联映像:每个主存块可映像到Cache的任意行中。

        1. 主存地址构成:标记m位+块内地址b位
        2. Cache地址构成:标记m位+块内地址b位
        3. 特点:标记位数多,Cache标记容量大;全部比较操作要用硬件(相联存储器)实现;映像方式灵活但是成本高,时间开销大,不适合大容量Cache
      3. 组相联映像:直接映像和全相联映像方式的一种折中方案。即在 cache 内将其容量先分成以组为单位,然后每组内再包含若干行。

        1. 设Cache共有2c2^c个行,按组划分,每组含2r2^r个行,即可分为Q=2q=2crQ=2^q=2^{c-r}个组,映像关系为:

          i=(jmodQ)×2r+h(0h2r1)i=(j\enspace mod\enspace Q)×2^r+h(0\le h\le2^r-1)

          q=jmodQq=j\enspace mod\enspace Q

          其中,i为Cache行号,j为主存块号,q为Cache组号

        2. 主存地址构成

          image-20220608193229471
        3. Cache地址构成:标记+字块内地址

      4. 练习:某计算机的Cache 共有 16 块,采用两路组相连映射方式(即每组两块)。每个主存块大小为 32
        字节,按字节编址。主存 129 号单元所在的主存块应放入的 Cache 组号是____。

        • 分析:先求出主存129 号单元对应的块号:j=[129/32]=4,Cache 的组数 Q=16/2=8,则可映像到
          Cache的组号q= j mod Q=4 mod 8=4

虚拟存储器

详细内容见操作系统第四章。

指令系统

指令格式

  1. 计算机硬件的核心作用是实现每条指令的功能,执行用机器指令组成的程序。

  2. 从计算机组成的角度指令可以分为:微指令(微程序级指令)、机器指令(介于两者之间,本章学习的内容)、宏指令(若干条机器指令组成的软件)

    • 机器指令介于微指令和宏指令之间,通常简称为指令
    • 每一条指令可以完成一个独立的算数逻辑运算
    • 从组成的角度,指令是软硬件的接口、交界面
  3. 指令的结构

    1. 指令字:代表指令的一组二进制代码信息
    2. 指令字长:指令字中二进制代码的位数,包括定长(便于控制)和变长(合理利用储存空间)的指令格式。
    3. 机器字长:计算机能直接处理的二进制位数,决定了计算机运算精度,通常等于数据总线位数。
    4. 一条指令由操作码和操作数地址码组成,足够的信息+节省存储空间→提高机器性能
  4. 操作码(表示指令要完成的操作)字段格式

    1. 定长操作码:各指令OP位置、位数固定相同。
    2. 变长操作码:各指令OP位置、位数不固定,根据需要变化,适用于字长较短的计算机系统
    • 例:指令字长16位,可能含有3、2、1或0个地址,每个地址占4位

      image-20220609140642566
  5. 操作数地址字段的表示与编码

    1. 计算机操作数来源:CPU内通用寄存器、内存的一个单元、外设接口中的寄存器
    2. 指令提供地址的方式:
      • 显地址方式:指令中明确指明地址(直接或间接给出)
      • 隐地址方式:地址隐含约定,不出现在指令中
    3. 操作数个数类型
      1. 零地址指令,所需操作数由堆栈提供(如NOP,HLT)
      2. 一地址指令,如递增、移位、取反等,所需操作数由堆栈提供。指令字长短,执行时间快,微机中使用频繁。
      3. 二地址指令,例[A1]+[A2]→[A1],指令字较短,访存次数较多(4次),较常使用
      4. 三地址指令,操作后源地址内容不变,仅被拷贝。指令字较长,访存次数较多,一般用在大型机。
  6. 数据在存储器中存放方式:基本采用字节编址,有小端格式(低地址存低字节)、大端格式

    • 边界对齐:要求多字节数据在存储器中采用对准边界 的方式存储,也称作地址对齐,不合要求使用空白字节填充。

      image-20220609141632361

寻址方式

  1. 数据寻址方式

    • 形式地址:指令中地址码给出的地址,用A表示
    • 有效地址:操作数真正的物理地址,形式地址经过某种运算而得到的能直接访问主存中操作数的地址,记作EA
  2. 立即寻址:A=S,指令直接给出操作数,可以用来提供常数、设置初值。

    image-20220609143443071

    特点:执行指令不访存,速度快,位数受到字长限制。

  3. 直接寻址:EA=A,S=(A),指令的操作数地址字段直接给出操作数在存储器中的地址。

    image-20220609143720978

    特点:直观,寻址空间受限

  4. 寄存器寻址:S=®,给出操作数所在寄存器的编号。R占位数少,访问R比M更快。

    image-20220609143922555
  5. 间接寻址:指令给出操作数的有效地址的地址(存储器单元号或寄存器号)

    1. 存储器间址,S=((A)),需要二次访存,可扩大寻址范围,便于编制程序

      image-20220609144032258
    2. 寄存器间址,S=(®),R占用位数少,可以供全字长地址码,修改快。便于编制循环程序。

      image-20220609144155155
  6. 变址寻址:指令给出一个寄存器号和一个变址偏移量,EA=Rx+A, S=((Rx)+A),其中Rx为修改量,可变,A为基准地址,不变。

    image-20220609144502169
  7. 基址寻址:指令给出一个寄存器号和一个地址量,EA=Rb+A, S=((Rb)+A),其中,Rb为基准地址,A为相对于基址的位移,改变Rb的内容,程序能访问存储空间中任何一个与基址保持相同距离的单元。

    image-20220609144703362
  • 基址寻址与变址寻址的区别:
    • 变址寄存器提供修改量,指令提供基准量,适合处理一维数组;
    • 基址寄存器提供基准量,指令提供位移量,面向系统,用于扩大指令访存空间。
  1. 相对寻址:指令给出位移量,EA=PC±A,S=(PC±A)。适合于浮动程序的装配与运行。

    image-20220609145155839
  2. 堆栈寻址:EA=(SP), S=((SP)),SP即可出现在指令中,也可隐含约定。

    image-20220609145538477

指令类型

  1. 传送指令:源地址→目的地址

  2. 算术运算指令:设置时需考虑操作数类型、符号、进制等;运算结束后设置相应状态标志 。

  3. 逻辑运算指令

  4. 转移指令

  5. 转子指令(操作码+子程序入口)与返回指令(操作码+返回地址):同一条返回指令应能提供多个不同的返回地址。返回地址的存取:用堆栈存放返回地址。

    image-20220609150131569

RISC和CISC

  1. RISC
    1. 优先选取使用频率最高的一些简单指令
    2. 指令长度固定,指令格式少,寻址方式少
    3. 只有load/store访存
    4. CPU中的寄存器数量很多
    5. 大部分指令在一个或小于一个机器周期完成;
    6. 硬布线控制逻辑为主,不用或少用微码控制;
    7. 一般用高级语言编程,特别重视编译优化,以减少程序执行时间。
  2. CISC
    1. 系统指令复杂庞大,各种指令使用频度相差大
    2. 指令长度不固定、指令格式种类多、寻址方式多
    3. 访存指令不受限制
    4. 大多数指令需要多个时钟周期执行完毕
    5. 采用微程序控制器
    6. CPU中设有专用寄存器
    7. 难以用优化编译生成高效的目的代码

中央处理单元CPU

CPU功能和基本结构

  1. 基本组成:运算器(算数、逻辑运算)、控制器(取指令、分析指令、执行指令,向计算机各功能部件 提供协调运行每一个步骤 所需要的控制信号)、寄存器、时钟电路

  2. CPU基本结构

    image-20220609154159596

    CPU内部结构:

    image-20220609154207270
  3. CPU的寄存器

    1. 通用寄存器
    2. 控制寄存器,包括PC(位数等于MAR)、IR、PSW
  4. CPU的控制单元CU:产生全部指令的微操作命令序列。在计算机硬件系统中,控制器处于指挥控制地位。

    1. 主要组成:PC、IR、ID、指令执行步骤标记线路、控制信号产生线路、脉冲源
  5. 两种不同类型的控制器

    • 硬布线控制器:采用组合逻辑电路,依据指令及其执行步骤直接产生控制信号
    • 微程序控制器:采用存储器电路把控制信号存储起来(CM),依据指令执行的步骤读出要用到的信号组合

指令执行的步骤与指令周期

  1. 指令执行步骤:IF、ID、EX、MM、WB

  2. 执行周期:CPU取出并执行一条指令所需的全部时间

    image-20220609155643382
  3. 指令周期的数据流

    1. 取指周期:PC→MAR→AB →M→DB→MDR→IR

      image-20220609155806503
    2. 间址周期:Ad(MDR)→MAR→AB→M→DB(EA)→MDR

      image-20220609155906366
    3. 中断周期:SP→MAR→AB→M(保存堆栈) PC(断点)→MDR→DB→M(保存断点) 中断入口→PC

      image-20220609160145364
  4. 指令执行过程

    1. 取指周期:PC→MAR 1→R M(MAR)→MDR OP(IR)→CU (PC) + 1→PC
    2. 间址周期:(Ad)IR→MAR 1→R M(MAR)→MDR MDR→Ad(IR)
  5. 控制单元功能

    image-20220609160533686
    1. 输入信号:时钟、指令寄存器、标志、外来信号(中断请求或总线请求)
    2. 输出信号:CPU内各种控制信号、送至控制总线的信号
  6. 多级时序系统:一个指令周期包含若干个机器周期、一个机器周期包含若干个时钟周期

组合逻辑控制器

  1. 硬布线控制器组成

    image-20220609161510224
    1. 微命令发生器:产生全机所需的各种微命令,控制最基本的操作的命令
    2. 时序电路
      1. 指令周期:取出并执行一条指令所需要的时间,由若干个工作周期组成
      2. 机器周期(CPU周期、工作周期),如取指周期、执行周期等,每个周期包含多个时钟周期
      3. 时钟周期:每个时钟周期完成一步操作
  2. 硬布线控制方式的优缺点

    1. 优点:产生微命令的速度较快
    2. 缺点:设计不规整、效率较低,控制器核心结构凌乱,不便于检查调试;不易修改、扩展指令系统功能
    3. 应用场合:高速计算机

微程序控制器原理

  1. 概念

    • 微操作: 在计算机中,一条机器指令的功能是通过按一定次序执行一系列基本操作完成的,称为微操作
    • 微指令:同时发出的控制信号所执行的一组微操作称位微指令。
      • 一条机器指令分成若干微指令
    • 微程序:计算机每条指令的功能均由微指令序列解释完成,这些微指令的集合就叫做微程序
    • 控制存储器:微程序事先存放在专用的存储器中,由于该存储器主要存放控制命令与下一条微指令的地址(下址),所以称作控制存储器
      • 控制存储器只读
      • 控制存储器字长比机器字长长的多
      • 控制存储器容量取决于实现指令系统所需要的微程序长度
  2. 微程序控制的基本思想:

    • 若干微命令编制成一条微指令,控制实现一步操作
    • 若干微指令组成一段微程序,解释执行一条机器指令
    • 微程序事先存放在控制存储器中,执行机器指令时再取出。执行一条指令实际上就是执行一段存放在控制存储器中的微程序。
  3. 微程序控制器组成原理

    1. 组成:IR、PC、PSW、时序系统等部件,控制存储器(CM),微地址形成电路、微地址寄存器(μAR),微指令寄存器(μIR)以及译码电路等。

      image-20220609194503485
    2. 主要部件:

      1. 控制存储器CM:存放微程序。属于CPU!
      2. 微指令寄存器:存放现行微指令(微命令字段+微地址字段(指明后续微地址形成方式))
      3. 微地址形成电路:提供两类微地址——微程序入口地址和后续微地址。
    3. 工作过程:

      1. 取机器指令

        image-20220609194842858
      2. 转微程序入口

        image-20220609194853587
      3. 执行首条微指令

        image-20220609195901534
      4. 取后续微指令

        image-20220609195933762
      5. 执行后续微指令,同(3)

      6. 返回:微指令执行完,返回CM

    4. 详细说明

      1. 当指令取入IR后,根据操作码进行译码 ,得到相应指令的第一条微指令的地址( 微程序的入口地址 )。指令译码部件 ( 将操作码作为输入地址 ,找到相应的微程序在控制存储器中的首地址 ,由此地址从控制存储器取出微指令,存放在微指令寄存器 µIR 中。
      2. 微指令分为两个部分:
        • 控制(微命令)字段: 产生一次微操作的全部控制信号的编码。 微命令字段各位的输出通过连接线直接与受控制的门相连,于是就提供了相应的控制信号。
        • 下址字段: 产生下一条微指令的地址。
  4. 微程序设计技术:操作控制字段如何形成微命令、后续微地址如何形成

    1. 微指令的编码方式

      1. 直接编码(直接控制)方式:每一位代表一个微指令

        • 无需译码,产生微指令速度快

        • 微命令太多,信息表示效率低

      2. 字段编码表示法:微命令由字段编码给出,选出互斥的微命令编成一组,用二进制编码。

        • 分组原则:同类操作互斥的微命令不能同时出现
        • 缩短了微指令字长,增加了译码时间
        • 注意:每个字段要预留一个状态表示字段内所有信号均不激活
      3. 混合表示法:速度要求高的用直接表示法,其他互斥信号用编码表示法

    2. 微程序流的控制

      当前正在执行的微指令称位现行微指令,现行微指令所在CM的地址称位现行微地址;

      现行微指令执行完毕后下一条执行的微指令称位后继微指令,所在的CM地址为后继微地址。

      微程序流的控制是当前微指令执行完毕后,怎样产生后继微指令的微地址。

      1. 计数器(增量)方式:顺序执行为主,辅以各种常规转移方式(无条件转移、条件转移、转微子程序、返回微主程序,其中跳转地址、条件均由现行微指令给出)

      2. 断定方式(下址字段法):微指令中增加下址字段,指明下一条执行的微指令地址。

        image-20220609202053051

        例:断定条件(A)=01时,微地址低四位为操作码,D给定高6位(16路分支)

    3. 微指令编码格式

      • 垂直型微指令:一条微指令定义并执行一种基本操作。微指令短、简单,便于编写微程序,但微程序长,执行速度慢,不强调并行控制,效率低。
      • 水平型微指令:一条微指令定义并执行几种并行操作。微程序短、执行速度快,但微指令长,编写微程序麻烦。
  5. 微程序控制方式优缺点及应用

    1. 优点:设计规整、效率高;易于修改、扩展指令系统功能;结构规整、整洁,可靠性高;性价比高
    2. 缺点:速度慢、执行效率不高
    3. 应用范围:对速度要求不高、功能较复杂的机器

硬布线控制与微程序控制比较

image-20220609202838435

总线

总线概述

  1. 总线是信息传输的多个部件所互连的一组公共信号通路和计算机系统的互连机构 。各个部件共享的传输介质
  2. 作用:在争用总线的基础上,按系统约定分时为计算机各部件进行数据、地址和控制信号的发送和接收等服务。
    • 某一时刻,只允许一个部件向总线发消息,允许多个部件同时从总线接消息
  3. 总线分类:
    • 并行总线、串行总线
    • 内部总线(CPU内部连接各寄存器以及运算部件)、系统总线(DB、AB、CB)、I/O总线
  4. 总线结构
    1. 总线组成:信号线、总线控制器、收发电路、转换器等。
    2. 系统总线的结构通常分为单总线和多总线结构。
  5. 系统总线
    1. 数据总线:双向传输;总线位数为机器位数,与机器字长、存储器字长有关。
    2. 地址总线:单向总线;位数与存储单元个数有关。
    3. 控制总线:用来发出各种控制信号的传输线,单一控制线单向,总体双向。
  6. 总线性能指标
    1. 总线宽度:并行传输数据的位数
    2. 总线带宽 = 总线宽度 × 总线频率
    3. 时钟同步/异步:总线上的数据与时钟同步的称为同步总线,与时钟不同步的称为异步总线
    4. 总线复用:一条信号线上分时传送两种信号
    5. 信号线数:DB+AB+CB
    6. 总线控制方式:包括突发工作、自动配置、仲裁方式等

总线操作和定时

  1. 总线各设备按对总线有无控制功能可分为:主设备、从设备

  2. 总线周期:完成一次总线操作的时间,共分为四个阶段:

    • 申请分配阶段:主设备提出申请,经总线仲裁机构决定下一传输周期的总线使用权
    • 寻址阶段:获得使用权的主设备由总线发出从设备的地址和命令,启动本次传输的从模块
    • 传数阶段:主从设备数据交换
    • 结束阶段:主设备的有关信息从系统总线撤出,让出总线使用权
  3. 主要总线操作

    1. 读写
    2. 块传输
      • 突发传输:一次总线事务中,主设备只需给出首地址,从设备便能从首地址开始若干连续单元一个个写入/读出多个固定长度数据。
  4. 定时:同步定时方式、异步定时方式

    1. 同步定时方式:

      • 以时钟周期为划分时间段的基准,要求所有的模块由统一的时钟脉冲进行操作的控制。

      • 各模块的所有动作均在时钟周期的开始产生,并且多数动作在一个时钟周期内完成。

      • 特点:较高的传输频率;适用于总线长度较短、各功能模块存储时间接近情况;时间相差较大时总线频率降低

        image-20220610114404345image-20220610114450445

    2. 异步定时方式:是一种应答方式或者互锁机制的定时方式

      • 优点:总线周期长度可变
      • 缺点:增加总线的复杂性和成本
      image-20220610114700453
  5. 总线通信方式

    1. 同步通信:发送时钟信号来同步数据传送

    2. 异步通信:没有时钟,采用握手信号同步

    3. 半同步通信:

      • 发送方仍然发送时钟

      • 接收方根据自身情况反馈信息给发送方,使发送方进行相应调整。增加一条等待响应信号线

      • 主体同步,细节异步

      • 允许不同速率的设备和谐工作

        image-20220610115552707
    4. 分离式通信:每个总线传输周期分为两个子周期:周期1:主模块申请占用总线,使用完后即放弃总线的使用权;周期2:从模块申请占用总线,将各种信息送到总线上。充分挖掘系统总线每个瞬间的潜力。

      • 各模块有权申请占用总线。
      • 采用同步方式通信,省去握手开销。
      • 各模块准备数据时,不占用总线资源。
      • 总线无空闲等待时间,提高了利用率。

总线仲裁

由于总线上连接着多个部件,何时由哪个部件发送信息,如何定时,如何防止信息丢失,如何避免多个设备同时发送,如何规定接收部件等问题都需要总线控制器统一管理,主要包括总线的判优控制(仲裁逻辑)和通信控制。

  1. 集中式仲裁方式

    1. 链式查询(3根线):当一个或多个设备同时发出总线使用请求信号 BR 时,中央仲裁器发出的总线授权信号 BG 沿着菊花链串行的从一个设备依次传送到下一个设备,到达离出发点最近的发出总线请求的设备之后就不再往下传。

      image-20220610120013502
    2. 计数器定时查询(2+log2nlog_2n根线):总线上多个设备通过总线请求信号 BR ,发出请求中央仲裁器接收到请求信号后,在总线忙信号 BS 为0 的情况下,让计数器开始计数,计数值通过一组地址线发往各设备。每个设备有一个地址判别电路,如果地址线上的计数值与总线请求设备地址一致,则该设备对 BS 线置 “1”,表示该设备获得了总线使用权,同时中止计数查询。

      image-20220610120551211
    3. 独立请求方式(2n+1根线,一条公用的总线占用线):每个连接到总线的设备都有一组单独的总线请求信号BRi与总线授权信号BGi。每个设备请求使用总线
      时,它们各自发出自己的总线请求信号。中央仲裁器中设置了一个专门的排队电路,由它根据一定的优先次序决定优先响应哪个设备的请求,然后给该设备总线授权信号 BGi 。

      image-20220610120247312
  2. 分布式仲裁方式:每个主设备都有自己的仲裁号和仲裁电路,需要使用总线时,将唯一仲裁号发往共享总线上,仲裁电路再将从仲裁总线上获得仲裁号和自己仲裁号对比,获胜仲裁号将保留在仲裁总线上,相应设备总线请求获得响应。

    • 信号更多,电路更复杂,但有效防止总线仲裁在时间上的浪费。

总线标准

总线标准:是系统与各模块、模块与模块之间的一个互连的标准界面。

  1. 系统总线
    1. ISA——工业标准体系
    2. EISA——扩展工业标准体系
    3. PCI——外围设备互联
  2. 设备总线
    1. SCSI——小型计算机系统接口
    2. RS-232
    3. USB:即插即用、支持热插拔,串行传输

输入输出系统

I/O系统基本概念

  1. 计算机的输入 输出系统简称为 I/O 系统,通常包括外围设备及其 I/O 接口、通道或输入输出处理器以及相关编程软件。
  2. I/O 系统解决的主要问题:对各种形式的信息进行输入和输出的控制。
  3. 外设: 输入输出设备是外部设备,简称外设。计算机与外设之间的信息交换称为输入和输出
    接口:外设与总线之间的中间环节。在完成各个外设和主机之间数据传输过程中,进行各种协调等工作的逻辑部件或电路。
    端口: 接口电路中可以被访问的单元,有独立的端口地址。可分为数据端口、状态端口、控制端口。

I/O接口

  1. I/O 接口:指主机(CPU 和存储器)和外设的交接部分,在主机与外设之间的逻辑部件,也称设备控制器、设备适配器或 I/O 接口电路。

    I/O接口位于系统总线和外设之间。

    作用:控制并实现主机与外部设备之间的数据传送。

    image-20220617101649802
  2. I/O接口分类:并行接口、串行接口、同步接口、异步接口、程序控制接口、中断接口、DMA接口、通道控制

  3. 基本结构

    image-20220617101942025
  4. I/O端口:为使 CPU 能选择设备并进行数据传送,接口中通常都具有多个可由 CPU 进行读或写操作访问 的寄存器或电路,即 I/O 端口。可以独立或与存储器统一编址。

I/O数据传送控制方式

  1. 程序直接控制传送方式:CPU 执行一段 I/O 程序实现与外设之间数据传送。

  2. 程序中断方式:

    1. 向量中断与非向量中断:

      • 向量中断方式:中断服务程序入口地址称为中断向量;存放所有中断向量的一段内存区域称为中断向量表;访问中断向量表的地址称为中断向量地址。

      • 非向量中断:在某些计算机系统中, CPU 响应中断时只产生一个固定的地址,由此读取中断查询程序的入口地址,通过软件查询程序方式确定被批准的中断源中断服务程序地址。

    2. 中断处理步骤:1. 关中断 2. 保存断点和现场 3. 判别中断源与优先级,转入中断服务处理过程 4. 开中断 5. 执行为外设的中断服务 6. 关中断 7. 恢复现场 8. 开中断 9. 中断返回

    3. 中断屏蔽字:第i位为1代表对Li级进行屏蔽

  3. DMA方式

    1. DMA 是 l/O 设备与主存储器之间由硬件组成的直接数据通路,主要用于高速 I/O 设备与主存之间的成批数据传送。

    2. DMA与中断的区别:

      1. 中断传送过程需要 CPU 的干预,而DMA传送过程不需要CPU的干预,完全由硬件( DMAC )独立完成。

      2. CPU 对中断响应时间只能发生在每条指令执行完毕,而对 DMA 响应的时间可以发生在每个机器周期的结束。

        image-20220617110422464
      3. DMA工作方式

        1. 独占总线:CPU 暂停方式,主机响应 DMA 请求后让出总线,从传送首字开始直到成组数据传送完毕, DMA 控制器掌控总线不放。
        2. CPU周期挪用(单字传送方式):趁存储器空闲时 DMA 占用总线周期传送一个字。若与CPU 发生总线争用时, CPU 让出一个总线周期给 DMA ,即CPU 暂停工作一个周期,然后继续使用总线。
        3. 交替方式:直接访问存储器工作方式 ,与 CPU 轮流使用一个时间片,不需要申请、建立和释放手续。DMA占用总线优先级高于CPU。
      4. DMA控制器主要寄存器:主存地址计数器、请求寄存器、字计数器、数据缓冲寄存器、控制与状态寄存器

      5. DMA传送数据工作流程

        image-20220617111525084 image-20220617111532790 image-20220617111543744
    3. I/O通道控制方式

      1. I/O 通道是具有输入输出处理器控制的输入输出部件,是计算机系统中代替 CPU 管理控制外设的独立部件,它是一种能执行有限I/O指令集合,即通道命令的I/O处理机。能够根据程序控制多个外部设备并提供 DMA 共享的功能。

        通道是一种通过执行通道程序管理 I/O 操作的控制器,它使主机与 I/O 操作之间达到更高的并行程度。由于它的任务是管理实现输入 输出操作,提供一种传送通道,所以将这种控制部件称作通道。

      2. 通道工作过程:启动通道、数据传输、结束处理

      3. 通道可以同时控制许多台同类或不同类的设备。

      4. 通道的类型:

        1. 字节多路通道:以字节方式轮流为多台字符类低速和中速外设服务的通道。
          简单的共享通道,要求每种设备分时占用一个很短的时间片,不同的设备在各自分得的时间片内与通道建立传输连接,实现数据的传送。

        2. 选择通道:以成块方式逐个为优先级高的多台高速外围设备服务。每次只能从所连接的设备中选择一台 I/O 设备的通道程序。此刻该通道程序独占了整个通道。

          数据传送是以数据块方式进行,每次传送一个数据块,传送速率很高。

        3. 数组多路通道:以成组方式工作的高速多路通道。连接多台高速外设,每次为一台传送一个数据块,并轮流为它们服务。在为一台高速外设传送数据的同时,可以有多台在定位或找扇区。

      5. 通道的基本功能:

        1. 接受CPU的I/O指令
        2. 读取并执行通道程序
        3. 控制外设与主存之间的数据传输
        4. 读取外设状态信息,形成、保存通道本身状态信息,提供给CPU
        5. 向CPU发出中断