2020-09-01

计算机组成原理预习

概论

计算机的基本概念

  1. 冯·诺伊曼思想
    1. 二进制表示程序和数据
    2. 存储程序的工作方式
    3. 五大部件组成
  2. 信息的数字化表示
    1. 采用二进制代码表示各种信息
    2. 物理机制上用数字信号(脉冲、电平)
  3. 存储程序工作方式
    1. 事先编制程序
    2. 事先存储程序
    3. 自动、连续地执行程序

计算机系统地硬件组成

  1. 主要功能部件

    1. CPU

      运算器、寄存器组、控制器

      1. 运算器

        算数运算和逻辑运算

        由通用寄存器组、选择器、ALU、移位器组成。

        ALU:全加器实现运算操作

        通用寄存器组:提供操作数、存放结果

        选择器:选择操作数;选择控制条件、实施算法

        移位器:直接或者移位送出运算结果

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GivfjvGg-1598962519440)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596871152492.png)]

      2. 控制器

        功能:产生控制命令(微命令)、控制全机操作。

        微命令序列:由一系列微命令组成,是实现机器语言的底层。

        微命令:用于进行底层一步操作。

        微命令产生方式:

        1. 组合逻辑控制方式(硬件实现,成本高,速度快)
        2. 微程序控制方式(软件实现、成本低、速度慢)
    2. 存储器

      存储信息

      组成:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8gnSBVN-1598962519442)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596871429293.png)]

      地址寄存器:MAR(Adress)

      数据寄存器:MDR(Data)

      存储体:存放信息的实体,存储体由若干个存储单元组成,存储单元由若干个存储元件组成(0/1)

      存储单元:一串二进制代码

      存储字:存储单元中二进制代码的组合

      存储字长:存储单元中二进制代码的位数;每个存储单元有一个地址。

      寻址系统:对地址码进行译码、选择存储单元

      控制线路:产生读\写时序,控制读\写操作。

  2. 硬件系统结构

    1. 以总线为基础的系统结构

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

      按功能分:

      • 内总线
      • 局部总线
      • 系统总线
      • 外总线

      按信息传递分:

      • 地址总线
      • 数据总线
      • 控制总线

      按格式分:

      • 并行总线
      • 串行总线

      按时序分:

      • 同步总线
      • 异步总线

      按方向分:

      • 单向总线
      • 双向总线

计算机系统的性能指标

  1. 基本字长

    指处理机能直接处理的二进制信息位数。(影响计算精度、硬件成本、指令功能)

  2. 存储容量

    1. 主存容量

      存储单元个数(决定地址位数) X 位数(表明编址单位)

      表示为字数 X 字长(按字编址)字节数(按字节编址)

    2. 外存容量

      常表示为字节数

      外存容量与地址码位数无关

  3. 运算速度

    1. 定点/浮点四则运算

    2. 每秒平均执行的指令条数(IPS)

    3. CPU主频和时钟频率(MHz)

      CPU主频:计算机的振荡器输出的脉冲序列的频率。

      时钟频率:CPU完成一步操作的时间

  4. 数据通路宽度与数据传输率

    数据通路宽度:指数据总线一次能传送的数据位数,影响计算机的有效处理速度,分CPU内部和CPU外部两种情况。

    数据传输率:指数据总线每秒传送的数据量、带宽。与总线数据通路宽度和总线时钟频率有关。

    总线带宽=总线位数 X 总线时钟频率/8

  5. 处理功能

    1. 指令系统功能(寻址方式、指令类型)
    2. 系统软件配置

信息表示

移码和补码只差了一个符号位,最小真值的移码全为0,用移码表示浮点数的阶码能方便地判断浮点数阶码地大小

信息分为数据信息(分为数值信息和非数值信息)控制信息(指令信息等)

  1. 数据信息的表示

    真值:用正、负符号加绝对值表示数值

    机器数:在计算机内部使用的,连同数符一起数码化了的数。

    1. 补码表示法

      "模"是指一个计量系统的计数范围,计算机也可以看作是一个计量器,它也有一个计量范围,即都存在一个“模”。表示n位计算机计量范围是0~2n-1,模=2n

      "模"实质上是计量器产生"溢出"的量,它的值在计量器上表示不出来,计量器只能表示出模的余数.任何有模的计量器,均可化减法为加法运算。

      补码就是将负数进行求模运算(例如在模为12的时钟计算中,当前时钟指向10点而准确时间是6点,则有两种计算方式,负计算:倒拨4小时,10-6=4,正计算:正拨动8小时,(10+8)%12=6。按照这个思想,为了方便计算,我们就可以把负数转为补码形式,方便后面直接进行加法运算。)

      一个负数加上“模”即得该负数的补数

      两个互为补数的数,它们绝对值之和为模数

    2. 数的定点表示和浮点表示

      1. 定点表示:

        小数点按照约定的方式标出,即固定位置

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wf84Yy1T-1598962519443)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596874845352.png)]

        这里表示小数点通用的固定位置。

        类型: 表示范围 精度

        无符号数: 00000000~11111111(0~255) 1

        定点整数: (11111111) ~(01111111)(-127~+127) 1

        ​ (10000000) ~(01111111)(-128~+127) 1

        定点小数:(1.1111111) ~(0.1111111)(-(1-2-7)~(1-2-7)) 2-7

        ​ (1.0000000) ~(0.1111111)(-1~(1-2-7)) 2-7

        问题:为什么定点整数原码和补码的范围不一致?

        回答:最主要的原因在于对0的表示上

        1. 原码:有正0和负0之分,[+0]=00000000,[-0]=10000000;
        2. 反码: 同样有两种表示方法,[+0]=00000000 ,[-0]=11111111;
        3. 补码:0只有一种表示方式,即[0]=00000000;

        对于原码来说,正0和负0的区分在数学上并没有任何意义。反而会浪费一种状态,所以导致了明明有256种状态却表示了255个数字。所以补码为了避免这种情况带来的浪费,将-0通过补码算法将其表示为-128.

        同理,对于定点小数来说,也是将负0进行了二次利用。让其能表达更大的范围

      2. 浮点表示法

        1. 格式:

          1. 浮点数真值:N=±RE X M

            浮点数机器格式:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4wOp0Kb-1598962519445)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596876109004.png)]

            R:阶码底,隐含约定。(计算机中为2)

            E:阶码,为定点整数,补码或移码表示。其位数决定了数值范围;阶符表示阶的正负。

            M:尾数,为定点小数,原码或补码表示。其位数决定了**数的精度;**数符表示数的正负。

            浮点数的尾数要遵从尾数的规格化。

            尾数规格化:1/2<=|M|<1

            1. 原码表示的尾数规格化,第一个数值位是否为“1”,是,规格化;否,非规格化
            2. 补码表示的尾数规格化:符号位与第一个数值位是否相异,是,规格化;否,非规格化(-1/2除外)|M|<=1/2但是最高位为1

            问题:为什么尾数要规格化?

            回答:因为有效数字的位数是被限制死的,而前导零会占用有效数字的空间,所以前导零越多有效数字越少,因此去除前导零才能保证有效数字位数的最大化。

          2. 表示范围和精度(这里都没放入阶码底进行计算)

            阶符1位,阶码m位,补码表示,以2为底。

            数符1位,尾数n位,补码表示,规格化。

            • 最小浮点数:(最大阶码2m-1,尾数为绝对值最大的负数-1)
            • 最大浮点数:阶码最大数2m-1,尾数为最大数,1-2-n
            • 最小浮点正数:阶码为最小数-2m,尾数为最小正数:2-1(尾数规格化了)
          3. 移码

            [x]=2n+x(2n>x>=-2n)(注意,这里是没带符号位的,如果带了符号位,则应该是[x]=2n-1+x)

            x为真值,n为整数位数

            x=10100

            [x]=25+10100=1,10100=-10100(用逗号将符号位和数值位隔开)

            x=-10100

            [x]=25-10100=0,01100=+01100(用逗号将符号位和数值位隔开)

          4. IEEE754格式

            32位(1,8,23),x=(-1)sX(1.M)X2E-127

            64(1,11,52),x=(-1)sX(1.M)X2E-1023

            尾数f用原码表示,第一位总是1,因而可在尾数中省略第一位的1,称为隐藏位,这样使得单精度格式的23bit尾数实际表示了24bit有效数字,双精度格式的52bit的尾数实际上表示了53bit有效数字。IEEE754规定隐藏位1的位置在小数点之前。

            阶码用移码表示,但偏置常数并不是通常n位移码所用的2n-1,而是2n-1-1;因此,单精度浮点数偏置常数为127,双精度浮点数偏置常数为1023。 因为尾数f中有一位在小数点之前的1的隐藏位中,所以,如果尾数换成用等值的纯小数表示的话,阶码就需要加1,相当于偏置常数为128和1024。

            *总结,为什么是127和1024,是因为将尾数隐藏起来的一个1加入到了阶码当中。212E-128=2127

            小数转为二进制,乘二取整数,正向排列

            十进制转32位单精度:

            1. 将十进制转为二进制(指十进制的绝对值,符号位单独提出)
            2. 将尾数得出(要记住,浮点数表示的是2E*1.M的形式,所以要将二进制写为2E*1.M的形式,例如1001.1001应该写为23*1.0011001的形式)
            3. 将阶码提出,2n的n即为阶码。
            4. 将阶码转为移码形式,即加上127(有一隐藏位。)
  2. 指令信息的表示

    指令字长(指操作码和地址码):

    指令基本格式 操作码(1个)|地址码(1个或几个)

    定长指令格式:便于控制

    变长指令格式:合理利用存储空间

    CISC:复杂指令系统计算机

    RISC:精简指令系统计算机

    操作码结构(指操作码):

    1. 定长操作码 (指令较长或变长)

      各指令操作码的位置,位数固定相同

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3bVDLMau-1598962519446)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596957422171.png)]

      首先,地址码占12位,剩余为操作码,操作码需要留一个状态作为区分不同地址的标准。

    2. 扩展操作码(指令字长限定)

      操作码位置位数不固定

    3. 复合型操作码

      操作码分为几部分,每部分表示一种状态

      例如:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RP8CNFmH-1598962519447)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596957530302.png)]

    地址结构:

    指令中提供的地址可能是:1.存储单元地址码,2.寄存器编号

    指令提供地址的方式:

    1. 显地址方式:指令中明显指明地址。
    2. 隐地址方式:地址隐含约定,不出现在指令中。(可以减少指令中的地址数,简化地址结构)

    地址结构简化的方式:用指令计数器PC指示指令地址

    0地址结构指令:用于堆栈或特殊指令操作。

    寻址方式:

    指令中如何提供操作数或提供操作数地址。

    1. 立即寻址

      直接给出操作数本身(执行时间短,无需访问内存)

    2. 直接寻址

      直接给出操作数在内存中的地址,S=(A),无需进行寻址运算,便于硬件实现

    3. 寄存器寻址

      通过寄存器编号,找到寄存器中存储的操作数。S=(Ri)(比在内存中取块,但数量更少)

    4. 寄存器间接寻址

      寄存器中存储的内存的地址。

    5. 相对寻址,

      将PC的内容加上指令中形式地址D。S=((PC)+D)

    6. 基址寻址

      基址寄存器Rb中的基址值加上偏移量 S=((Rb)+D),此时Rb不能改变,靠D改变

      程序重定位:用户编程时使用的是与实际主存地址无关的逻辑地址,将来运行时再转换为物理地址,成为程序重定位(逻辑转物理)

    7. 变址寻址

      变址寄存器的Rx中的地址与偏移量相加,S=((Rx)+D),此时D不能改变,Rx可以改变

    8. 基址加变址

      指令给出两个寄存器号和一个地址量,寄存器内容和地址量之和为有效地址。

      S=((Rx)+(Rb)+D)便于处理二维数组

    9. 堆栈寻址方式

      先进后出。有两种堆栈(寄存器堆栈(寄存器组作为堆栈,栈顶固定不动,数据串行移动,无需堆栈指示器)和存储器堆栈(划分存储空间,数据不懂,栈顶移动,需要设置堆栈指示器SP指向栈顶))

    寻址方式说明

    1. 操作码隐含说明不同寻址方式
    2. 指令中专门设置字段说明寻址方式

    指令类型:

    1. 传送指令(注意传送范围->寄存器和内存,指明传送单位例如8位,16位,32位,设置寻址方式)
    2. 输入输出指令(主机和外设,考虑功能扩展,主机对外设的寻址方式,I/O指令设置方式(设置专用I/O指令,用传送指令实现I/O操作、通过I/O处理机进行I/O操作))
    3. 算术逻辑运算符
    4. 程序控制指令(转移、循环、转子程序指令和返回指令、软中断指令)

CPU-1运算部件

算数逻辑运算基础

  1. 定点加减运算

    1. 补码加减法

      数用补码表示,符号位参加运算。

      1. 基本关系式

        [X+Y]=[X]+[Y](mod 2)

        [X-Y]=[X]+[-Y]

        [Y]——>[-Y](即变补):不管[Y]是正或负,将其符号连同尾数一起各位变反,末尾加1

        溢出:当运算结果的数值位侵占符号位,称为溢出。同符号的数相加可能会产生溢出

        上溢出:结果大于机器能表示的最大正数

        下溢出:结果小于机器所能表示的最小负数

      2. 溢出判断

        A、B对应符号位SA,SB(符号位参与运算)

        结果符号位Sf

        符号位进位Cf

        尾数最高位进位C

        1. 硬件判断1(SA,SB和Sf):溢出=~SA ~SB Sf+SASB ~Sf
        2. 硬件判断2(Cf和C的关系):溢出=Cf异或C
        3. 硬件判断3(双符号位):溢出=第一符号位异或第二符号位
      3. 移位操作

        1. 移位类型

          1. 逻辑移位:数码位置变化,数值不变

            10001111左移后:00011111

          2. 算术移位:数码位置变化,数值变化,符号位不变

        2. 正数补码移位规则

          数符不变(单符号:符号位不变,空位补0;双符号:第一符号位不变(左移值可以到第二符号位,右移时第二符号位的值可以到最高位),空位补0)

        3. 负数补码移位规则

          数符不变(单:符号位不变;双:第一符号位不变)

          左移空位补0,右移空位补1

        4. 十进制运算

          1. 设有专门计算BCD的指令

          2. 先用二进制的加减乘除进行运算,紧接着再进行BCD码的矫正。

            直接进行加减,如果结果大于9,则加6,然后拆分二进制

            例如5+6=0101+0110=1011>9需要矫正1011+6=1011+0110=10001=0001,0001=(11)10

        5. 舍入操作

          1. 截断法:无条件舍去
          2. 恒置1:舍去多余位,保留最低位置1
          3. 0舍1入:类似四舍五入,当保留部分位0.11…1时,会导致再次溢出。

      运算器是是实现数学运算和逻辑运算的核心;加法器又是运算器的核心

    2. 算数逻辑运算部件ALU

      1. 全加器(FA)

        FA是最基本的运算单位,由它构成加法器

        FA有三个输入量:两个操作数Ai和Bi,以及进位信号Ci-1

        FA有两个输出量:本位和Si,以及高位进位i信号Ci

        Si=Ai异或Bi异或Ci-1

        Ci=AiBi+(Ai异或Bi)Ci-1

        一个全加器只完成一位加法

        全加器不需要存储信息,则可以使用门电路实现。

        加法器分为:串行加法器(只有一个全加器)、并行加法器(若干个全加器,运算时间取决于进位信号的传递时间,优化:尽量加快进位产生和传递的速度)

        进位链:构成进位信号产生和传递的逻辑网络称为进位链。

        进位链的进位表达式:

        Ci=AiBi+(Ai异或Bi)Ci-1

        设Gi=AiBi,称为进位产生函数

        Pi=Ai异或Bi,称为进位传递函数

        则进位表达式Ci=Gi+PiCi-1

        并行加法器有串行进位和并行进位两种进位方式。

        1. 串行进位

          把n个全加器串联起来,就可以实现两个n尾数的相加,称为串行进位的并行加法器。

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJowXBet-1598962519448)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596967288405.png)]

          延迟取决于字长、一位进位s时间则n位ns时间

        2. 并行进位

          改进:

          让各进位同时形成,避免进位之间的依赖关系:

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzNxVI0i-1598962519449)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596967398565.png)]

          以上进位输出不依赖于其地位进位的输入,因此各级进位可以同时产生,形成并行进位。

          速度与字长无关

          延迟时间为s

          随着位数增加,Ci的逻辑表达式会越来越长,电路会更加复杂,实现更困难。

        3. 分组进位

          组内按照并行进位,产生C1C4~,这些进位可以同时得到(4位先行进位电路CLA),组内称为并行进位。

          组间可以采用并行(多级先行进位)或串行(单级先行进位)

          BCLA:组间的先行进位加法器

          CLA(全部Ci)与BCLA(产生了3个Ci然后产生了Gi和Pi函数)的区别仅仅在于它们进位的电路上。

          组间并行(多级先行进位):

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbuzSYss-1598962519449)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596978098136.png)]

          将C4完全拆分,拆分到只有C0的形式,将无关C0的一部分列为G1*,有关的列为P1*,向CLA电路传递这两个函数,由于C0已经知道了。所以C4可以直接求出。C8也是同样的方式,只不过把C4换为C0

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6vSjMMPK-1598962519450)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596978515515.png)]

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxALGZRf-1598962519451)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596978537825.png)]

          串行进位直接依赖于前一级,所以必须按照C3、C2、C1来写

      2. 多功能算数逻辑部件ALU

        为了完成多功能算数逻辑部件ALU,将全加器进行扩展。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PPZjkutF-1598962519451)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1596979016349.png)]

        算数:接收来自低位的进位信号

        逻辑:不接受来自低位的进位信号

        加法器:全加器(两个半加器组成)和进位门组成

        4位选择器共产生32位操作(16位算数、16位逻辑)

      3. 运算器的组织

        运算器主要由ALU(全加器、进位链、输入选择器)、寄存器、多路转换器、内部数据总线组成

        各功能模块之间一般由总线进行链接

        分为三种结构:单总线、双总线、三总线。

        单总线:控制简单,速度慢,操作数需要两次送入ALU并需要两个缓冲寄存器保存操作数,完成一次运算需要3步。

        双总线:不需要设置缓冲寄存器(数据可以直接到达),完成一次运算需要2步。需要设置一个结果缓冲器(避免总线仍被操作数占用的情况)。

        三总线:操作速度快,控制相对复杂。

    3. 定点乘法

      1. 手工计算到机器运算的两种解决方式:1.采用常规的加法器来实现(通过累加移位的方式实现,称为时序控制的加法器) 2.采用阵列乘法器实现(将多项式一次求和)

        1. 常规加法器(乘法,右移,每次只处理一位乘数)

          手工乘法时,多项式相加(乘了过后的值),默认采用的是左移操作。例如 1101+1101需要将第二个1101左移变为1101+11010。但是,这样不适合机器运算(因为加法器位数不能改变),所以,就用一种新的方式进行。1101+1101时,第一个1101的最后一个1在以后的运算中都不会参与,所以可以用将最新的最后一位移出的方式(即右移第一个,最后再排到后面)进行运算,即110+1101,最后在结果末尾加一个1就行了。

          1. 原码一位乘法(结果、操作数都用原码表示;符号单独处理;作n次循环,用不到-B

            每次一位乘数去乘被乘数(每次用绝对值进行乘法,符号位单独处理)。

            由于被乘数和乘数需要多次使用需要设置两个寄存器(被乘B,乘C),而且需要有一个部分累加值和乘积高位的寄存器(A)。

            所以需要三个寄存器。

            运算时采用双符号位,得结果后再转为单符号位(因为有移位操作,避免损失数字)

            一般来说,进行原码一位乘法得时候,乘数不写符号位,避免将符号位进行运算。

            运算过程中累加缓存器可能会出现第一符号位和第二符号位不同的情况,但是由于之后会右移,所以不被认为溢出。

            计算过程中会把A、C级联,所以右移时会把A中移出的放到C的高位,C的最低位直接移出,所以最后C中保存结果的低位,A中保存结果的高位

            最后符号位单独处理,进行异或操作。

            硬件实现:

            3个寄存器,A、C级联,异或门。A、B为n+2位,而C为n位(避免符号位进行运算)

          2. 补码一位乘**(注意,Cn是高位,Cn+1是低位,一定要在C后面加0,注意第n+1步是修正无需移位(直接将C0和C1截掉就可以了))**

            两种方式:1.校正法,使用较少,公式:[X x Y]=[X] x (0.Y1Y2…Yn)-[X] x Y0(Y0为符号位)

            2.比较法,也叫做Booth法,无需校正,控制较为简单

            以下皆为比较法(低位减去高位):

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bxozMDal-1598962519452)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597045865560.png)]

            Yn+1为计算方便,设置为0

            1.设置累加和寄存器

            2.计算Yn+1-Yn(需要先在末尾加一个0设为Yn+1`)

            3.右移即乘以2-1

            4.n步后,取决于Y1-Y0的状态,如果为1或负数,则需要进行n+1步,如果为0,则不需要n+1步,并且n+1步时Y1-Y0的状态是20,所以不需要进行右移操作

            实例:

            X=-0.1101,Y=-0.1011,求(XY)

            设置寄存器:A=00.0000,B=X=11.0011,-B=(-X)=00.1101(可能会有负数操作),C=Y=1.0101(由于符号位要参与运算,所以不能省略)

            右移时要注意负数补码右移是补1

            运算结束后,要把Y0和Y1去除掉,留下的就为最终的结果。

            规则:

            1. A、B取双符号位,符号参与运算
            2. C取单符号位,符号参与移位,已决定最后是否需要修正
            3. C末尾设置附加位Cn+1,初值位0
            4. 做n步循环,若需做n+1位,则不移位,仅修正。

            硬件实现:A、B、C位n+2位(单符号位,但最后要加一个附加位),与或门n+2个

          3. 阵列乘法器

            采用与门配合全加器实现

            构成n X n整数阵列乘法器,需要n X n个乘法单元

      2. 定点除法

        除法——>若干余数与除数加减、移位。

        关键(决定余数与除数的绝对值大小(试探法,直接减,再通过余数判断关系),决定是否上商)

        也分为常规除法器和阵列除法器进行运算。

        除数是乘法的逆运算,所以一般采用减、左移运算

        (小数)先决条件:

        1. 除数不等于0,否则商无限大
        2. 被除数要小于除数,否则商会溢出
      3. 常规除法器

        1. 原码恢复余数除法(步数无法预知)

          2 X 余数 -被除数(10进制运算时是直接加0其实就是乘10,这里为2进制,所以为乘以2)=新余数(为正:够减,商1;不够减:为负:不够减、商0,恢复原余数)。

          设置三个寄存器:A(双符号位):被除数、余数,B(双符号位):除数,C:商(单符号位)

          把被除数当作初始余数,直接开始2 X 余数操作,机器上商时与手工不同,上商时把商上在最后一位(因为后面会进行级联左移,最后一位会变回第一位),恢复余数时不上商

          最后将n位商都上完时,剩余的就为最终的余数了(符号要取决于被除数的符号(求模运算),并且要乘以2-n)。

          结果:X/Y=商+余数/除数

          1. 原码不恢复余数法(加减交替法)

          当2 x 余数 -被除数 < 0时:即 2 x r1 -B=r2’<0时

          需要恢复余数(r2’+B=r2)

          然后需要继续进行除法运算:2r2-B=r3

          将整个步骤拆分:2r2-B=2(r2’+B)-B=2r2’+B=r3

          即当 2 x r1 -B=r2’<0直接进行2r2’+B=r3

          当2 x 余数 -被除数 >= 0时:即 2 x r1 -B=r2’>=0时,则下一步直接进行2r1-B

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8vOf0Zl8-1598962519452)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597062638660.png)]

          也需要设置三个寄存器

          当最终商上完了之后,如果最后余数为负数,需要恢复余数即+B,之后符号取决于被除数的符号

          步数为n步,至于需不需要n+1步取决于余数的符号,如果为负需要恢复余数

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vP4atI7W-1598962519453)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597063440382.png)]

          硬件实现:

          三个寄存器

          A(余数寄存器以及初始被除数寄存器)、B:n+2

          C:n+1(上商的寄存器)

          加法器:n+2位

          与或门:n+2个(控制加法或减法)

          1. 补码不恢复余数除法

            由于补码符号位参与运算,因此不能直接进行减法试探是否够减。

            判断是否够减:

            1. 同号相除(通过减的方式判断(要求余数越来越小),被除数-除数=结果与操作数同号则够减、不同号则不能减)
            2. 异号相除:r与被除数同号,与除数异号则够减;r与被除数异号,与除数同号
            3. 两个关于除数的是否同号刚好相反。

            求商值:

            同号:商为正(够减商1,不够减商0)

            异号:商为负(够减商0,不够减商1)

            综上:不管商为正或负,余数与除数的符号同号则上1,不同号则上0

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wfS53QSJ-1598962519453)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597064758366.png)]

            求商符

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0FcsYsmg-1598962519454)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597065226894.png)]

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNNfGDBy-1598962519454)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597065388230.png)]

            这里时按权展开的形式

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-24RiKWRd-1598962519455)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597065413533.png)]

            3)商符变反

            综上:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KiXftnLn-1598962519456)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597065456939.png)]

            4)余数求到rn

            时刻注意尾数恒定置1

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3cEZAVZ-1598962519457)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597066039529.png)]

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6SZ1vir-1598962519457)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597066103025.png)]

        2. 阵列除法器

          CAS(可控加减单元,有四个输入端和四个输出端)是构成除法器的基本单元。

    4. 浮点四则运算

      浮点数中包含两组代码,采用定点整数格式的阶码和定点小数格式的尾数,所以浮点数四则运算特别强调对阶和规格化两个概念

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkQ3smGG-1598962519458)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597133023981.png)]

      1. 浮点加减运算

        1. 检测是否能简化操作(判断操作数是否为0,分为两种情况,1.尾数为0,2.阶码下溢(机器0))

        2. 对阶(例如3.5 X 103+2.6 X 102需要变为35 X 102+2.6 X 102)这个操作在计算机中就叫对阶。对阶规则:小阶向大阶对齐。(如果大阶向小阶对齐,则尾数左移,丢失最高位,而小阶向大阶对齐,则尾数右移,丢失最低位,误差较小)

        3. 尾数加减

        4. 结果规格化( 原码:小数点后第一为1,补码:第一位与符号位相反,但-1/2是例外)

        5. 浮点数的溢出只体现在阶码上,不体现在尾数上,所以当尾数加减时,尾数绝对值大于1,应该右移规格化

        6. 舍入(0舍1入或截断或恒置1法)

        7. 溢出判断

          超过最大的正指数值,阶码上溢出,认为数据为正负无穷

          超过了可以表示的最小负数值,阶码下溢,认为数据为0

          同号尾数相加,出现的最高位向上的进位,在浮点数中不算溢出,需要进行右移操作。

      2. 浮点乘法运算步骤

        阶码为两数阶码之和,乘积尾数为相乘尾数之积

        阶码用补码表示:无需校正

        阶码用移码表示:需要减去一个2n移码偏移量。

        [X+Y]=[X]+[Y]

        [X-Y]=[X]+[-Y]

      3. 浮点数除法运算步骤

        阶码为相除两数的阶码之差,商的尾数为相处两数的尾数之商

        1. 尾数调整(因为必须要去被除数尾数绝对值小于除数位数绝对值)

存储器

存储程序和数据

要求:容量大、速度快、价格低

两种或两种以上的存储器构成存储体系。

三级存储体系:cache、主存、辅存(顺序不能变)

  1. 存储器分类

    1. 存储介质划分

      能作为存储介质的特点:1.两种稳定状态(对应0、1)2.能方便与电信号进行转换

      1. 半导体存储器:速度快(内存)
      2. 磁表面存储器:容量大,用于外存
      3. 光存储器:可靠性高,保存时间长
    2. 存取方式

      访问存储单元的方法

      存储位元:记录一位二进制信息的区域。

      存储单元:存储一个机器字或一个字节,具有唯一地址。

      1. 随机访问RAM

        特点:按地址随机访问存储器任意单元、访问时间与具体位置无关

      2. 只读存储器ROM

        正常工作只读,能随机读出,不能随机写入

        MROM:只读

        PROM:一次写

        EPROM、EEPROM可多次改写。

      3. 顺序存取存储器(磁带)

        以文件形式进行组织,一个文件包含若干个块、一个块包含若干字节。存储时包含若干字节

        速度慢、容量大、成本低。

      4. 直接存取存储器

        基本与顺序存储器相同,只不过先将磁头定位到磁道,然后从磁道进行扫描。

      5. 相联存储器

        按内容检索到存储位置进行读写,采取了一种随机存取访问。一般被cache采用。

    3. 按存储器信息的可保存性分

      1. 断电后是否丢失数据(挥发性(易失)存储器,非挥发性(非易失)存储器)
      2. 读出后是否保持数据(破坏存储器(需重写、DRAM)、非破坏性存储器(SRAM))
    4. 计算机中的作用

      1. 高速缓冲存储器(SRAM组成,速度接近CPU工作速度,存放活跃程序和数据,CPU内部一级缓存,CPU与内存之间的二级缓存)
      2. 主存:指令直接面向的存储器,存放启动的数据和程序。
      3. 辅助存储区:CPU不能直接访问。
  2. 主存基本操作

    主线通过数据总线与CPU的数据缓冲寄存器(MDR)连接、地址总线与CPU的存储器地址寄存器(MAR)连接(将地址进入地址译码器进行操作)进行读/写(通过控制总线进行发出读、写操作)操作。

    读操作:CPU发送地址——>AB(Address Bus地址总线)到存储器;CPU发送读命令——>(CB control Bus控制总线)到存储器;存储器通过DB(Data Bus数据总线)发送数据到MDR(数据寄存器)。

    读取下一条指令是通过PC程序计数器读取的

  3. 存储器的主要技术指标

    1. 存储容量:单位用位b、字节B、KB、MB、GB,主存容量受限于地址总线的位数,外存的容量与总线位数无关,主存的1KB=210B、辅存的容量是1KB=103B

    2. 速度:

      • 存取时间:启动一次存储器到完成该操作的时间(TA表示
      • 存取周期:连续启动两次独立的存储器体操作所需的最小时间间隔。包含存取时间和自身恢复时间。(TM=TA+自身恢复时间)
    3. 带宽

      带宽=存储器总线宽度/存取周期

    4. 价格(每位价格)

    5. 功耗

    6. 可靠性(抗干扰能力)

  4. 半导体存储器

    按使用功能分:1.随机存取存储器(RAM,可读写的存储器)2.只读存储器(ROM)

    1. ROM

      1. 掩模式ROM(简称ROM,制作时把数据写入,之后不能改写)
      2. PROM(可编程ROM,只能编程一次)
      3. EPROM(可擦除的PROM,紫外线照射可重置内容,可重复编程(紫外线重置,而高电压能使其进行编辑操作),可编程次数有限!!!)
      4. EEPROM(与EPROM相似,但用电擦除和重编程,不需要使用紫外线。)
      5. flash EPROM(可用电擦除数据块,而不是单个的存储单元,具备了EPROM和RAM的优点)
    2. RAM(一般使用MOS工艺存储芯片)

      1. 静态RAM(SRAM)工艺更难,容量比动态要小,速度比动态快

        依靠双稳态电路内部交叉反馈的机制存储信息

        静态MOS存储单元与存储芯片:

        每个存储芯片都有多个MOS管

        非破坏性读出,读出不需要重写。

        存储芯片:

        例如:SRAM芯片2114(1k X 4位)1k个单元,每个单元4位二进制信息

        1k个单元,代表210个单元,即有10个地址端(10个地址端的状态刚好210,输入),而每个单元可以存放四个二进制数(即有四个数据段D3~D0,是可以同时输入或输出的),而控制端有(1.片选~CS(代表选中这个存储芯片,输入0代表选中,1代表未选中),2.写使能~WE(控制读/写操作,输入0为写、1为读));还需要有电源(VCC)和接地(GND)。

      2. 动态RAM(DRAM)(MOS单元+电容组成的记忆电路)

        依靠电容存储

        单管单元的动态MOS为破坏性读出(判断是1还是0通过位线进行判断)

        4k位以上时,多采用动态单管MOS单元

        存储芯片:

        例子:DRAM芯片2164(64K x 1位)64k个单元,每个单元1位

        地址端:对于动态RAM的外特性与静态RAM的外特性有区别,例如,这里的64K个单元,按道理应该需要16个地址端,但只需要8个(采用分时复用的思想,分为和行和列,所以只需要8个地址端);而在动态RAM中的数据端是分开的,所以尽管只有1位保存,但需要两个数据端。 对于控制端,依然有写使能~WE和片选信号(!!注意,这里地址用的是分时复用的思想,所以片选信号分为了行地址选通~RAS(高八位)和列地址选通~CAS(低八位));电源和接地;还有一个脚,用于新型号中片内自动刷新

      3. 位扩展

        主存的组织设计:存储器的逻辑设计、动态M的刷新、主存的校验

        而半导体存储器的逻辑设计需要解决:芯片的选用、地址分配与片选逻辑、信号线连接。

        位扩展:用多个存储器期间对字长进行扩充(即对位进行扩充)。

        1.选择适合的芯片。2.将地址线、读写线、片选线对应连接。3.将数据线单独连接,拼接成要求的数据宽度。

        例:1k x 4芯片设计1k x 8位的存储器。

        地址线、读写线、片选线串联。

        数据端并联,分别与地址线链接(一个负责高位、一个负责低位)

      4. 字扩展

        对字数进行扩充。

        1.确定使用数量。2.将低位地址线、读写线、数据线对应连接。3.用高位地址线译码、将输出接置各芯片的片选端。

        例子:1k x 4扩展为4k x 4。

        选择4个芯片,

        1k个字需要10个地址端,4k需要12个地址端。此时芯片上的地址端以及被确定死了,无法在芯片上进行扩展地址端,而多出来的两个地址端就是我们要使用高位地址线译码,通过对多出来的两个地址端进行译码操作,连接到四个芯片的片选端,就代表选中了该芯片。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZJUTpAT-1598962519459)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597201735180.png)]

      5. 字位扩展

        一般方法:1.先选择芯片进行位扩展,扩展为组。2.再用组进行字扩展,按照子扩展的方法将字数增加到目标字数。(先位后字)

      6. 地址分配与片选逻辑

        存储器寻址逻辑(1.芯片内的寻址系统(二级译码);2.芯片外的地址分配与片选逻辑

      7. 例子

        0000H~07FFH一共有07FFH-0000H+1个地址,即0800H=211,而且地址中存储单元为B,所以为211B即2KB

        由不同的容量芯片组成的空间分配时:先安排大容量芯片(地址低段),再安排小容量芯片(便于拟定片选逻辑)

        按照大容量的芯片来分配地址逻辑:例如5KB需要13位地址寻址,由2个2KB和一个1KB来分配5KB,那么每一个就按照2KB来进行分配片内地址逻辑,即211从A0到A11都为芯片内部寻址方式,A12A11就用于分配外部地址,00代表第一个2KB芯片,01代表第二个2KB芯片,10代表第三个芯片,但由于第三个芯片只有1KB的内存,只需要10位进行内部地址的分配,所以将A10~也作为外部内存的分配,即100代表第三个内存。

        低位地址分配给芯片,高位地址用于形成片选逻辑

      8. 刷新

        刷新是动态存储器区别于静态存储器的明显标志。CPU、DMA与刷新线路在访问存储器时是竞争的(刷新线路优先)

        定义:定期向电容补充电荷(动态存储器依靠电容电荷存储信息,时间一长会泄放,需要定期向电容补充电荷,保持信息不变。)

        注意刷新和重写的区别:刷新属于保持状态,重写是重写状态

        最大刷新间隔:2ms,必须对所有动态单元刷新一遍

        刷新方法:芯片间同时刷新,芯片内刷新是按行读的方式进行刷新。

        刷新周期=存取周期——刷新一行所用的时间

        芯片的刷新周期数取决于芯片矩阵的行数决定。

        所以对动态RAM的主存的访问就分为两种:1.CPU访存(读写操作,cpu提供行、列地址)2.动态刷新(刷新地址计数器提供行地址,定时刷新)。

        刷新周期的安排方式:

        1. 集中式刷新(集中安排刷新时间,时间内停止读写操作,主存利用率高、控制简单,但容易形成一段时间不能使用的死区)
        2. 分散式刷新(将系统的存取周期分为两个部分,前半期用于正常读写或保持,后半期用于刷新。主存利用率不高,速度大约降低一半 )
        3. 异步式刷新(两种方式的结合,把刷新操作分配到最大刷新间隔内进行,相邻两行的刷新间隔位:最大刷新间隔时间/行数,将其作为一种DMA请求,由DMA控制器作为发布

        DMA:直接存储器访问方式。

  5. 辅助存储器

    存放当前CPU不需要使用的程序和数据

    特点:容量大、成本低、可以脱机保存信息

    两类:磁表面、光存储器

    1. 磁表面存储器的基本原理

      记录信息介质:一层很薄的磁层,需要依附于具有一定及其强度的基体上(分为软质基体和硬质基体)

      记录信息:利用磁性材料在不同方向的磁场作用下的两种稳定的剩磁状态

      组成:

      1. 磁头:形成和判别磁层的不同磁化状态(写、读、复合磁头)
      2. 读/写操作:通过磁头与磁层相对运动进行,一般磁头固定,磁层高速运动。
      3. 写入:给磁头通入写磁化电流,磁层移动。
      4. 读出:通过磁电转换得出。

      磁记录方式:磁记录的编码方式,即如何按照写入代码序列形成相应得磁化电流波形。

      1. 归零制(RZ):写入1通正电流完毕后归零,写0通负电流,完毕后归零。(转变区数目过多,不利于记 录,很少使用)

      2. 不归零制(NRZ):写0维持-I不变,写1时,保持+I不变。 **即只有信息变换时,才在磁层中产生转变区。**缺点:没办法区分连续1或0,如果某一位干扰,则错误会延展

      3. 见1就翻的不归零1制(NRZ1)

        写入0时,写入电路位处原方向不变;

        写1时,写入电流方向翻转。

        读出时,0没有读出信号,只有1有转变区。

        缺点:若无同步信号,无法区分连续的0是多少个。

        不具备自同步能力:不能从读出中得出同步信号。

        具备自同步能力:能从读出中得出同步信号。

      4. 调相制(PM)

        写0,写入电流由正变为负

        写1,写入电流由正变为负

        相邻两位相同时,两位交界处要翻转一次。

        具有自同步能力

      5. 调频制(FM)

        写1时,不仅在位周期的中心产生翻转,位与位之间也必须翻转。

        写0时,位周期中心不翻转,位与位之间的边界处要翻转一次。

        1的频率比0多一倍。

        具有自同步能力。

      6. 改进调频制(MFM或M2F)

        写1时,在位单元中间改变写入电流方向

        写两个以上0时,在它们的交界处改变写入电流方向

        转变区约为FM的一半。

        相同技术条件下单元长度可以缩短为FM的一半。

        具有自同步功能。

      编码效率:位密度与磁化反转密度的比值FM、PM的编码效率只有50%,MFM,NRZ,NRZ1为100%。

  6. 校验码

    1. 码距的概念

      一组编码体制中,各组合法代码间不同的位数称为距离,其最小距离为该编码的码距

      例如BCD码的0010和0111的距离为2,因为有两个码不同;而BCD码的码距为1(最小距离为1)

    2. 作用:衡量一种编码查错与纠错的能力(越小能力越不好)

    3. 查错与纠错的基本出发点(冗余校验的思想)

      1. 约定某种规律,作为检测的依据

        有效信息位+校验位——>写入校验码——>读出时进行译码检测

        例如:奇偶校验码:有效信息位+1位校验位——>校验码。检测依据:约定校验码中1的个数为奇数/偶数(偶校验:将所有位采用异或的方式获得校验位,如果有一个信息位不同就会导致检验位不同,所以码距就变为了2;奇校验:所有位采用先异或再取反的方式),可以检测一位(奇数)错,不能纠错。用于主存校验

        例如:海明校验码(也叫汉明校验码):多重奇偶校验,将代码进行分组——>各组进行奇偶校验——>形成多位指误字(=全0 无错,不全0 有错)根据指误字状态对于出错位序号,将出错位变反纠错。

        1位纠错海明码:发现出错,还能指出哪一位出错。设有R位校验位(检验位仍有可能出错),则有0~2R-1个状态组合。0表示无出错,并设有K个数据为,则有:2R-1>=R+K

        校验位排在2i-1(i=1,2,…)的位置上

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bJsomoSa-1598962519459)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597223006581.png)]

        而有效数据位的分组是按照他们所属于的集合,例如D4D3D2D1这4个数据位,给他们分配3个校验位,然后按照2i-1的方式进行排位,分别标号1~7。此时第一个数据位D1的标号为3,二进制为011,属于001和010这两个分组即P1和P2这两个组,同理D2在第5位,二进制位101,属于100和001两个组即P1和P3这两个组。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tSkgua3H-1598962519460)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597223756692.png)]

        对于每个组的成员,都采用奇偶校验码的操作,P1=D4异或D2异或D1

        类似这种的方式,码距为3,可以检测两位出错,也可以检测一位并纠正一位错。

        循环冗余校验(CRC码):

        模2加减:不考虑进位和借位,则模二加和减的结果完全相同,其实就是异或运算。

        模2乘:也不考虑进位和借位,多项式相加时1+1=0,0+1=1,1+0=1,0+0=0并且没有进位!!!

        模2除:上商的规则,余数或被除数的最高位为1则商1,然后做减法(模2减),当余数的位数比除数的位数小一位,除法运算结束。

        余数位数比约定代码的位数少1

        1. 约定规律:校验码能被某代码除尽,设有效信息为A,约定代码为G。A/G=Q+R/G(R为余数)——>(A-R)/G=Q

        2. 编码方式:将有效信息与余数拼接再一起就形成校验码

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAP6YT6y-1598962519461)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597225095344.png)]

          求余数:A/G

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKNkNDCO-1598962519461)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597225148833.png)]

          此时r应该=3(模2除终止条件为比除数小1位)

        3. 译码和纠错

          循环校验码/约定代码(余数为0,无错;余数非0,有错 不同余数对应不同出错数位)

          纠错:利用余数循环的特点,将出错位移至校验码最高位,变反纠错。(节省硬件)

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGXGnPKF-1598962519462)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597225740763.png)]

        4. 生成多项式

          满足三个条件(1.出错,余数和不为0;2.不同出错位对应不同余数;3.余数循环

      2. 增大码距,从信息量上提供指错的可能

中央处理器

功能:

  1. 程序的顺序控制(指令控制,记得PC(程序计数器))
  2. 操作控制(发出微命令或微操作控制信号,控制各部件按指令的要求进行动作)
  3. 时间控制(**执行操作:微操作;控制微操作的命令:微命令;**对各种操作实施时间上的定时称为时间控制)
  4. 数据加工(算数运算或逻辑运算)

基本组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0RnYl3Y-1598962519463)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1590640607631.png)]

控制器

程序计数器PC、指令寄存器、地址寄存器、指令译码器、时序产生器和操作控制器。

协调和指挥计算机系统的操作

功能:

  1. 从内存取出指令并指明下一条指令在内存中的位置
  2. 对指令进行译码或测试,并产生相应的操作控制信号。
  3. 指挥并控制CPU、内存和I/O设备之间数据流动的方向。
操作控制器和时序产生器

数据通路是许多寄存器之间传送信息的通路。

各寄存器之间建立数据通路的任务由操作控制器来完成

操作控制器根据指令操作码和时序信号,产生各种操作控制信号(微命令),可分为三种时序逻辑型、存储逻辑型、时序逻辑与存储逻辑结合型。

  1. 组合逻辑控制器(时序逻辑型)

    由组合逻辑电路构成(门电路,触发器),由硬件构成。速度快,但不利于规整,扩展困难,难以实现设计自动化。

  2. 微程序控制器(存储逻辑型)

    程序设计思想引入CPU,将微操作信号代码化,将每条机器指令转化为一段微程序并存入一个专门的存储器(控制存储器——CM)中,微操作控制信号由微指令产生。易于实现设计自动化。

    思想:

    1. 若干微命令编织成一条微指令,控制实现一步操作。
    2. 若干微指令组成一段微程序,解释执行一条机器语言。
    3. 微程序事先存放在控制存储器中,执行机器指令时再取出。

    微命令:控制部件通过控制线向执行部件发出的各种控制命令

    微操作:执行部件接受微命令后所进行的操作。有相容性(多条在一个微周期内能一起执行)和互斥性之分(不能一起执行)微周期:从控制存储器中提取一条微指令并执行微指令的时间叫做微周期

    控制部件与执行部件通过控制线和反馈信息进行联系

    微命令和微操作是一一对应的。

    微指令:是指控制存储器中的一个单元的内容,即控制字,是若干微命令的集合。存放控制字的控制存储器的单元地址称为微地址。一条微指令通常包含两部分:1.操作控制字段也叫微操作码(产生某一步操作需要的各微操作控制信号)2.顺序控制字段:也叫微地址码,控制产生下一步要执行的微指令地址。

    微指令分为垂直型和水平型之分:

    1. 垂直型微指令:一条微指令定义并执行一种基本操作。优点:简单、规整,便于编写程序;缺点:微程序长,执行速度慢
    2. 水平型微指令:一条微指令定义并执行集中的基本操作。优点:微程序短,执行速度快;缺点:微指令长,微程序编写麻烦

    微程序:一系列微指令的有序集合就是微程序。一条机器指令对应一个微程序

    微指令的编码方法:

    1. 直接控制法:

      微命令按位给出。

      无需译码操作,产生微命令速度快,信息表示效率低。

    2. 分段直接编译法

      分为多端,每一段通过译码电路定义其编码含义。缩短了微指令字。

      分段原则:1.把互斥性分在同一段内,兼容性分在不同段。2.应该与数据通路结构相适应。3.每个小段包含的信息位不能太多。4.一般每个小段还要留出一个状态表示不发出任何微命令。

    3. 分段间接编译法

      间接编译的含义是:一个字段的某些编码不能独立地定义某些微命令,需要与其他字段的编码来联合定义。

  3. 可编辑逻辑阵列PLA(结合型)

操作控制器产生的控制信号必须定时,还必须有时序产生器

时序产生器的作用:对各种操作实施时间上的控制。

CPU中的主要寄存器

MDR和MAR是用户不能直接访问

  1. 数据缓冲寄存器(MDR)
  2. 指令寄存器(IR)
  3. 程序计数器(PC 存放下一条指令地址)
  4. 地址寄存器(MAR)
  5. 累加寄存器(AC CPU中至少有一个累加器,如果CPU中有多个累加寄存器就称为通用寄存器组(可以由CPU编程直接访问,每个寄存器都有一个编号地址,逻辑简单(甚至可能是一个小的单元),不同计算机对寄存器的功能分配不同))
  6. 状态条件寄存器(PSW 记录先行程序的运行状态,指示程序的工作方式,记录上一条指令的结果状态;编程设置断点,是否允许中断)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IHzvjhwo-1598962519464)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597566873129.png)]

指令周期

指令周期:CPU从内存中取出指令并执行的时间

  1. 时序系统

    1. 多级时序系统

      CPU周期(机器周期):内存读取一条指令字的最短时间,每个机器周期并不相同,因为操作可能并不相同

      指令周期=i X 机器周期

      周期状态触发器:标志CPU处于哪一个机器周期(任何时间都只能有一个状态为1)

      时钟周期:将一个机器周期分为若干个相同的时钟周期,机器周期包含若干个时钟周期(CPU完成一步的操作)

      时钟脉冲信号:在时钟周期中有些微操作需要同步定时脉冲。为此,在一个时钟周期的末尾设置同步打入脉冲,上升沿将稳定的运算结果打入寄存器,下降沿实现周期的切换。

    2. 时序控制方式及其变化

      时序控制采用的方式

      1. 同步控制

        各项操作受统一时序控制,有明显的时序时间划分,操作的衔接、部件之间的数据传送受严格同步定时控制

        优点:时序关系简单,控制简单。

        缺点:时间安排不合理。

        用于CPU内部、设备内部、系统总线操作(速度相近、传送时间确定、传送距离较近)。

      2. 异步控制

        各项操作按不同需要安排时间,不受统一时序控制。

        特点:无统一时钟周期划分,各操作间的各部件之间的信息交换采用异步应答方式
        优点:时间安排合理

        缺点:控制复杂

        用于异步总线操作(各挂接部件速度差异大传送时间不确定、距离较远)。

      3. 同步方式的变化

        1. 不同指令安排不同时钟周期数

          指令周期可变,时钟周期长度不变。

        2. 总线周期中插入延长周期

          总线周期长度可变,时钟周期长度不变

        3. 同步方式引入异步应答

          以固定时钟周期作为时序基础,引入应答思想。

  2. 指令运行的基本过程

    1. 取指令阶段(公共操作,所有指令的取指操作相同):

      从主存中取出并送至指令寄存器中去。

      取指周期:完成取指阶段任务的时间。

      1. PC中的内容放入MAR,通过AB(ABus)送到存储器
      2. CU(控制单元)经过CB向存储器发读命令
      3. 主存取出指令通过DB送到MDR
      4. MDR将内容送至IR(指令寄存器)
      5. PC内容递增
    2. 分析取数操作

      指令译码器ID识别和区分指令类型,指令的不同导致取数阶段的操作是不同的。

    3. 执行阶段

      完成指令的操作,形成稳定的运算结果,并将其存储起来,完成执行阶段任务的时间称为执行周期。

  3. 指令的微操作序列

    执行指令时,需要将指令分解为一系列时间上有先后的基本微操作,即微操作序列。

    微操作序列与CPU内部数据通路密切相关,不同的数据通路就有不同的微操作序列。

    JC(条件转移指令,其中C是标志控制位)

    例如JC A如果有进位(c=1)则PC的内容加上A,即跳转到PC+A条指令执行,如果C=0,则顺序执行。

    IR(指令寄存器)会将操作码放入指令译码器,而将地址码保存在本地

微程序
控制器的组成和工作过程
主要部件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1t1fgjb5-1598962519464)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597400074666.png)]

  1. 控制存储器CM

    功能:存放微程序

    CM属于CPU,不属于主存储器。

  2. 微指令寄存器UIR

    功能:存放现行微指令

  3. 微指令形成电路

    功能:提供两类微地址

    1.微程序入口地址:由机器指令操作码形成。

    2.后续微地址:由微地址字段、现行微地址等形成。

  4. 微地址寄存器(UAR)

    用于存放要执行的微程序入口地址。

工作过程
  1. 取机器指令

    取指微指令一般为公共单元,放在公共单元

    1. CM(控制存储器)取微指令到UIR(微指令寄存器)
    2. 微指令寄存器中的微命令字段通过译码器产生微命令即将机器指令放入**指令寄存器(IR)**中。
  2. 转微程序入口

    1. 指令寄存器中的操作码通过微地址形成电路形成与机器指令对应的微程序入口地址
    2. 将微程序入口地址放入微地址寄存器中
    3. 根据微地址寄存器的内容去访问控制存储器对应的存储单元.
    4. 取出微指令到微指令寄存器
  3. 执行首条微指令

    微指令寄存器中的微命令字段通过译码器将微命令送往各操作部件

  4. 取后续微指令

    由微指令寄存器中的微地址字段和现行微地址运行状态送往微地址形成电路取出后续微指令。

  5. 执行后续微指令

    同3

  6. 返回

    微程序执行完,返回CM(存放取微指令的固定单元)

微地址形成方式

1.定长操作码:操作码的部分位与微程序入口对应,则可以使用一级功能转移,一次转换成功,但是由于定长操作码的状态表示有限,而一个微程序由若干微指令序列组成,如果采用部分位与微程序入口对应,很可能出现下一个微指令变成了另一种操作的入口地址。所以,一般采用微程序入口地址为一个无条件转移的指令。即:无条件转移到真正保存微程序的地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEvVRFnY-1598962519465)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597401270895.png)]

2.变长操作码:各类指令操作码的位置位数不固定,需要两次转换,即二级功能转移:1.分类转:区分指令类型(例如2个地址的1个地址的)2.功能转:根据同一指令类型区分操作类型(例如加减操作)

3.用可编程逻辑阵列PLA实现功能转移

将指令寄存器的操作码地址码和条件都作为可编程PLA的输入,将输出设为一个个入口地址。

后续微地址的形成

1.增量方式

以顺序执行为主,辅以各种常规转移操作。

有顺序、跳步(跳过一个微指令)、无条件转移、有条件转移、转微子程序(转移到另一个子程序,会有一个返回微主程序的微指令,里面包含一个包含返回地址的寄存器号)

2.断定方式

由直接给定和测试断定相结合形成微地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z8SWs4N0-1598962519466)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597412779988.png)]

前面是微命令控制,后面的是顺序控制即地址。

给定部分的位数是可以变化的而断定条件是不变的。

断定主要区分指令的格式例如是机器指令源寻址方式还是机器指令目的寻址方式。

方框图语言表示指令周期

方框图语言:用于表示一条指令的指令周期

方框:代表一个CPU周期,方框中的内容表示数据通路的操作

菱形:表示某种判别或测试,它不会单独占用一个CPU周期,而是会依附于前面一个方框图的周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JeYSy9Au-1598962519466)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597413823505.png)]

:公操作符号,对外设的请求处理。

串行微程序控制方式:读一条微指令就执行一条

模型机设计

设计步骤:

1.拟定指令系统(格式,寻址方式)

  1. 指令格式

    包含操作码和地址码。

    PC一般都为隐地址

    二级时序:

    1. 在CPUIR的上升沿即(工作脉冲的下降沿)将微指令打入UIR
    2. 在工作脉冲的上升沿将结果打入目的地,同时将后续微地址打入UAR(微地址寄存器)

    微程序控制器设计:

    1. 根据CPU的结构图描绘出每条指令的微操作流程图并综合成总的流程图
    2. 对微操作进行归类、综合
    3. 设计微指令格式
    4. 微程序设计
    5. 画出微程序控制器的组成框图

2.确定总体结构(寄存器、ALU、数据通路)

3.安排时序(硬件(组合时序):三级时序(指令周期、机器周期、脉冲序列)、软件(微程序):二级时序)

4.拟定指令流程和微命令序列

5.形成控制逻辑(组:列出逻辑式、微:按微指令格式写程序)

流水CPU的结构

CPU按流水线方式组成,分为三大部件:指令部件(也是一个流水线)、指令队列(先进先出)、执行部件(具有多个算数运算逻辑部件)。

存储器体系:多体交叉存储器(为了使存储器的存取时间与流水线的其他各过程段相匹配;采用低位交叉(比高位交叉快m倍 )(高位交叉即之前学的存储芯片扩展中说的,高位用于片外选择))、Cache。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vhdhSCQd-1598962519467)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597483495477.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlBdRGlE-1598962519468)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597483500340.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BKqbzmv-1598962519468)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597483597073.png)]

总线

定义:一组能为多个部件分时共享的信息传送线路

特点:分时、共享

实体:一组传送线与相应的控制逻辑(比如控制权的转移)

单处理机分为:

1.内部总线:CPU内部连接各寄存器及运算部件

2.系统总线:CPU同计算机系统的其他高速功能部件,如存储器、通道。(分为地址总线、数据总线、控制总线)

3.I/O总线:中、低速I/O设备之间连接的总线

总线特性:

1.物理特性:物理连接方式。

2.功能特性:每一根线的功能。(比如系统总线分为地址总线、数据总线、控制总线)

3.电气特性:每一根线上信号的传递方向以及有效电平范围。例如CPUin和CPUout

4.时间特性:定义了每根线在什么时间有效。规定了总线上各信号的时序关系。

总线标准

含义:总线信号组成、信号引脚含义、信号电平等做统一规定。

原因:便于灵活组成系统

总线信号组成:电源、地址、数据、控制(时序、数传控制、中断请求、总线请求、复位)

1.总线带宽:总线本身所能达到的最高传输速率。衡量总线性能的重要指标,单位MB/s,带宽=传送字节(例如数据总线32位则传送字节为4B) X 时钟周期(以MHz为单位,1GHz=1000MHz)
2.总线分类
  1. CPU内总线(CPU芯片内寄存器和算逻部件之间互联的总线,也叫ALU总线,可以为单组数据线(单向、双向)或多组数据线,或多种总线)

  2. 部件内总线

    插件板各芯片之间互连的总线。

    分为地址、数据、控制线。

  3. 系统总线

    计算机系统内个功能部件之间,或各插件板之间互联的总线

    分为地址、数据、控制线

  4. 外总线

    计算机系统、或计算机系统与其他系统之间互连的总线(通信总线)

    分为数据线(与地址复用)、控制线

3.按数据传送格式划分
  1. 并行总线:同时传送各位信息
  2. 串行总线:分时逐位传送各位信息
4.总线连接方式

按照连接方式不同,单机系统采用的总线结构由三种基本类型:1.单总线结构、2.双总线结构、3.三总线结构

1.单总线结构

所有的部件之间的连接都通过一组总线(包括数据总线、地址总线和控制总线)连接。特点:外部设备不能直接连接到总线上,需要I/O接口才能挂接到总线上。如果需要增加外设数量,直接增加I/O接口就可以了,可扩展性强。缺点:总线成为系统的瓶颈,同一时间只能一个部件传递

2.双总线结构

在CPU和存储器之间有一个处理机总线,然后通过扩展总线控制线路连接到ISA/EISA总线(通过该总线连接到I/O设备)

3.三总线结构

在双总线的基础上,在处理机总线和扩展总线控制线路中间有一个PCI总线(主要用于连接速度较快的设备),而ISA/EISA主要链接速度较慢的设备。

5.对性能的影响
  1. 最大存储容量

    在单总线结构(因为在一条总线上,所以需要为外围部件分配地址)中,最大储存容量必须小于由计算机字长决定的可能的地址总数。

    双总线结构,对主存和外设进行存取的判断是利用各自的指令操作码,所以存储容量不会受到外围设备多少的影响。

  2. 数据宽度

    是指输入输出设备取得输入输出总线后所传送数据的总量。

  3. 总线线数

    指总线的物理线路条数。总线线数越多,成本越高,抗干扰能力越强。线距越长,成本越高,抗干扰能力减弱。

总线的控制方式

分两类:1.集中式(控制逻辑基本分布在一处)2.分布式(控制逻辑分散在总线中)

集中式分为3种
  1. 串行链接方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Uwr7TFo-1598962519470)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597495039609.png)]

    优先级:0>1>n

    灵活性差(优先级不能改变)

    但只需要在总线上增加三条线就可以完成控制,并且不随着部件的增加而增加。

  2. 计数器定时查询方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XlaGFHZR-1598962519471)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597495393534.png)]

    总线控制器中设置了一个定时计数器(一定频率进行奇数,通过若干条定时查询计数线发送代码,如果代码与某个提出了总线的部件的编码相同,则将其分配总线请求。如果没有提出使用总线的部件,则它会按照一定频率进行定时发送)所以优先级就可以通过定时计数器设置计数器的优先级(即可以通过软件程序进行改变)。

    缺点:在总线的基础上增加2+n(2n>=部件数)(请求线和忙线,加上若干条定时查询计数代码线(用于发送二进制代码,需要与部件号码一一对应))条信号线才能实现定时查询计数。并且部件的个数受到定时查询计数线的限制,扩展性不好

  3. 独立请求方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GadjqCyk-1598962519471)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597496039337.png)]

    每一个部件都有一个单独的总线请求和总线允许信号线,所有的部件共享一条总线已分配信号线。

    信号线=2N+1(N=部件个数)

    速度:分配总线的速度最快,但是硬件代价最高。

信息的传送方式

计算机系统中,传输信息采用三种方式:串行传送、并行传送(系统总线必须采用)和分时传送

  1. 串行传送

    只有一条传送线且采用脉冲传送,按顺序传送表示一个数码的所有二进制位(bit)的脉冲信号,每次一位。

    传送的数据需要在部件进行并——串转换,称为拆卸;接收时需要进行串——并转换,称为装配。

    优点:一条传输线,利于长距离传输。

  2. 并行传送

    每个数据位都需要单独一条传输线。

    一般采用电位传送,速度比串行快,硬件成本高。

  3. 分时传送

    两种概念:1.总线复用方式(即某个传输线即传送地址又传送数据,通过划分时间片的方式完成操作)2.共享总线的部件进行分时使用总线。

输入输出系统

接口也叫输入输出适配器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfkZFFW8-1598962519472)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597568615336.png)]

接口类型与功能

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

分类
按数据传输格式划分

系统总线和外设之间总是并行传送。

  1. 并行接口:接口与系统总线、接口与外设均按并行方式传送数据,数据各位同时传送。

  2. 串行接口

    接口与系统总线并行,接口与外设串行。

    与主机较远时适用。

按时序控制划分
  1. 同步接口

    接口和系统总线的信息传送由统一的时序信号控制

  2. 异步接口

    接口与系统总线采用异步应答的方式。

按I/O传送控制方式划分

主机和外设需要传送:数据信息、控制信息、状态信息。

  1. 直接程序传送接口
  2. 中断接口(可采用查询方式)
  3. DMA接口(可插入中断DMA善后处理)
接口主要功能

接口中往往要设置:控制寄存器、状态寄存器、数据缓冲寄存器

寻址

接受CPU送来的地址码,选择接口中的寄存器供CPU访问。

数据传送与缓冲

实现主机与外设的速度匹配(设置多个数据缓冲寄存器或局部缓冲存储器)。

缓冲深度(缓冲器容量)与传送的数据量有关。

预处理

串——并格式转换(串口方式)

数据通路宽度转换(并口方式)

电平转换

控制功能

传送控制命令与状态信息,实现I/O传送控制方式

输入输出信息传送控制方式

按发展的先后次序和主机与外设并行工作的程度,分为4类:

  1. 程序查询方式

    最简单的一种信息交换方式,输入和输出完全是CPU执行程序来完成。操作简单,但外设和主机不能同时工作。适用于外设的数目不多。

    工作流程:

    1.预置传送参数,包括存取数据的主存缓冲区首地址和传送数据的个数。

    2.启动外设(通过CPU执行输出指令)

    3.取外设的状态(通过CPU执行输入指令)

    4.传送一次数据(可能是输入指令和输出指令)

    5.修改传送参数

    6.判断查询是否结束

    通常程序查询方式接口中至少有两个寄存器:1.数据缓冲寄存器(数据端口)、2.设备状态寄存器(状态端口)。

    1.查询式输入接口

    由外设——>主机

    1. CPU执行输入指令查询接口中的状态端口
    2. 通过输入指令读取接口中的数据端口中的数据到CPU的寄存器。
    3. 将状态端口还原

    2.查询式输出接口

    主机——>外设

    1. CPU通过执行输入指令读取接口中的状态端口
    2. 通过输出指允许CPU向外设发送数据。
    3. CPU通过执行输入指令状态端口还原。
  2. 程序中断方式

    主机启动外设后,无需等待查询,而是继续执行原来的程序,外设做好了输入输出准备时,向主机发中断请求,主机接收到请求后,就暂停原来执行的程序,转去执行中断服务程序对外部请求进行处理,中断处理完之后,返回原来的程序继续执行。

    完成一次中断需要许多辅助操作(例如需要记得程序中断点)适用于中、低速外设;适用于外界发生的随机事件的处理。

  3. 直接存储器存取(DMA)方式(在外设和主存开辟直接数据通路)

    DMA方式是在主存和外设之间开辟直接的数据通路,可以进行基本上不需要CPU接入的主存和外设之间的信息传送,可以保证CPU的高效率,而且满足高速外设的需要。

    只能简单的数据传送操作,在数据块的传送的开始和结束需要CPU及中断系统进行预处理和后处理

  4. I/O通道控制方式

    时DMA方式的进一步发展,在系统中设有通道控制部件,每个通道挂有若干外设,主机执行I/O操作,只需要启动有关通道,通道将执行通道程序,从而完成I/O操作。

    通道是一个特殊的处理器,能独立执行通道程序,产生相应的控制信号,实现对外设的统一管理以及主存和外设的数据传送,需要CPU进行启动和关闭。

中断系统和程序中断方式

查询:CPU和外设不能并行工作

中断:CPU不需要等待外设准备,当外设准备好之后会发送中断请求,CPU会中断程序将数据传送给外设然后继续执行自己的程序,可以完成并行工作。

实质:程序的切换。方法:保存断点,保护现场;恢复现场返回断点。时间:指令结束时切换,保证程序的完整性。

特点:随机性。

注意中断(随机发生)和转子程序(通过程序员事先安排执行)的区别

中断基本类型
自愿中断和强迫中断

自愿中断:又称程序自中断,不是随机产生的中断,而是在程序中安排的有关指令,例如软中断指令INT n。

强迫中断:随机产生的中断,不是程序中事先安排好的

程序中断和简单中断

程序中断:通过CPU执行一段中断服务程序,需要占用CPU时间。

简单中断:即DMA方式,不执行中断服务程序。

内中断和外中断

内中断:由CPU内部硬件和软件引起的中断。

外中断:CPU以外的部件一起的中断。

向量和非向量中断

向量中断:中断服务程序的入口地址由中断事件自己提供的中断

非向量中断:不提供入口地址

单重中断和多重中断

单重中断:执行中断服务程序的过程中不能被再打断

多重中断:可以响应新的中断。

中断典型应用

处理故障;实时处理;管理中、低速I/O操作;多级通信

中断系统的组成
软件

服务程序、中断向量表

硬件

接口方面:请求、传递等;

CPU方面:响应逻辑。

中断全过程
如何产生中断请求

外设工作完成(完成)并且CPU允许请求(屏蔽)

如何传送中断请求

1.使用单独请求线

2.使用公共请求线

中断判优

1.优先顺序:故障、DMA、外中断

2.CPU现行程序和外设请求的判优

  1. CPU设置允许中断标志
  2. CPU设置程序状态字的优先级字段为现行程序赋予优先级

3.各外设请求的判优

  1. 软件判优:由程序查询顺序确定优先级,可以灵活修改优先级
  2. 硬件判优
中断响应

条件:外设有请求,且未被屏蔽;CPU开中断;一条指令(非停机指令)结束时;无故障、DMA等优先级更高的请求。

如何获取终端服务程序的入口地址:

1.非向量中断

将服务程序入口组织在查询程序中。

2.向量中断

将服务程序入口(中断向量(服务程序入口地址、服务程序状态字))组织在中断向量表(存放中断向量的表(一段存储区))中;CPU响应时由硬件直接提供向量地址(访问向量表的地址(指向中断向量的首址))

3.响应过程

CPU执行中断隐指令(硬件执行):1.发响应信号INTA,进入中断周期。2.关中断,保存断点3.获得中断号,转换为向量地址查向量表。4.取中断向量,转中断服务程序。

中断处理

中断处理由软件执行,强调灵活性

1.单极中断:一次只能处理一个中断(不支持嵌套)

流程:

  1. 保护现场(通过push指令传入堆栈)
  2. 具体服务处理(外中断:数据传送)
  3. 恢复现场(pop指令从堆栈中取出)
  4. 开中断、返回

2.多重中断:允许嵌套。

  1. 保护现场
  2. 送新屏蔽字、开中断(禁止同级别或低级别的打断,允许高级别的打断)
  3. 具体服务处理
  4. 关中断(过渡阶段,不允许被打断,保护现场和恢复现场不允许被打断)
  5. 恢复现场及原屏蔽字
  6. 开中断、返回
中断接口
  1. 组成(寄存器级)

    1. 寄存器选择

      对接口寄存器寻址。

    2. 命令字(控制字)寄存器

      接受CPU向外设的命令字转换为相应操作命令送外设。

      格式的拟定:用代码表示各种命令。

    3. 状态字寄存器

      表示当前外设的状态

    4. 数据缓冲器

      传送数据,实现缓冲。

    5. 控制逻辑

      请求信号产生逻辑

      电平转换逻辑

      串并转换逻辑

    6. 公用中断控制器

      接受外设请求,判优,送出公共请求;

      接收中断批准。

  2. 工作过程(外中断)

    1. 初始化:设置工作方式,送屏蔽字,送中断号。
    2. 发启动命令启动设备。
    3. 设备完成工作,申请中断
    4. 中断控制器汇集各请求,形成中断号,向CPU发送INT
    5. CPU响应,发批准INT
    6. 中断控制器送出中断号
    7. CPU执行中断隐指令操作进入服务程序。
  3. 接口设计

    设计命令字、状态字格式的拟定,中断源的扩展。

DMA方式及接口

定义:

硬件直接实现主存和I/O之间的数据传送,传送期间不需CPU程序干预(直接DMA控制器进行控制实现,DMA控制器接管总线全,传送完毕再交换总线权);传送期间只要CPU不访存,可并行操作;传送前和传送后需要CPU程序干预。

硬件设置

DMA控制器(控制传送方向,操作类型,提供主存地址,控制传送次数)

接口(传递请求和DMA中断请求(结束是以中断方式处理)、数据缓冲、提供外设地址)。

初始化

CPU通过程序完成DMA控制器的初始化。

CPU需要进行启动外设

判断一个总线周期结束时优DMA请求(总线周期:一个总线传送一条数据就是一个周期)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GduUHvj-1598962519473)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597562448564.png)]

分为三个阶段:

1.程序准备:主程序实现初始化

2.DMA传送:硬件实现M<——>I/O

3.善后处理:中断处理程序判断传送的正误。

用于高速、简单、批量数据传送

DMA与中断的特点

相同点:能响应随机请求,可以并行操作

不同:中断:用程序实现中、低速I/O传送,能处理复杂事态;一条指令结束时响应请求。(程序切换)

DMA:用硬件实现高速、简单I/O传送;一个总线周期结束时响应请求(线权切换)

功能

传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用,当DMA传送结束后,将恢复CPU的一切权力并开始执行其操作。

  1. 接受外设发送的DMA请求,并向CPU发出总线请求。
  2. CPU响应此总线请求,发出总线响应信号接管对总线的控制,进入DMA操作周期
  3. 进行DMA初始化
  4. 规定传送方向,发出控制信号,并执行数据传送的操作
  5. 向CPU报告DMA操作结束
基本组成
主存地址计数器

存放待交换数据的主存地址,初始值为主存缓冲区的首地址。

传送长度计数器

初始值为传送数据的总字节数或总字数。

数据缓冲寄存器

暂存每次传送的数据。

DMA请求触发器

外设准备好数据后会发送信号。

控制/状态逻辑

用于指定传送方向,修改传送参数,对DMA信号和CPU响应进行同步。

中断机构

数据传送完毕后向CPU提出中断请求,实现DMA传送的结尾处理。

DMA控制器的引出线
地址主线

地址选择和地址寻址。

数据总线

在DMA方式下,用它进行数据传送。

控制数据传送方式的信号线

读主存/外设,写主存/外设

与外设的联络信号线

外设向DMA请求,DMA响应外设请求。

与CPU的联络信号线

向CPU请求总线,CPU响应DMA请求。

传送方法与传送过程
传送方法
CPU停止访问主存法

DMA获取总线控制权,禁止CPU发出主存控制信号。

存储器分时法

将一个存取周期分为两个时间片,一片分给CPU,一片分给DMA。

周期挪用

CPU与DMA轮流使用主存。

传送过程
DMA预处理

通过CPU执行相应的程序,执行相应的输入输出指令赋初值。

DMA传送和数据传送

传送期间不需要CPU干预

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCy57GZ5-1598962519474)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597563661577.png)]

DMA后处理

DMA控制器发送中断请求,CPU执行相应的DMA结束处理工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值