MENU

计算机组成原理

June 11, 2020 • Read: 120 • 教程学习

计算机组成原理复习

第一章

  • 冯诺依曼计算机的特点

    • 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成;
    • 指令和数据以同同等地位存放于存储器内,并可以按地址访问;
    • 指令和数据均用二进制表示;
    • 指令由操作码、地址码两大部分组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;
    • 指令在存储器中顺序存放,通常自动顺序取出执行;
    • 机器以运算器为中心(原始冯•诺依曼机)。
  • 计算机硬件框图

运算器:用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器里。

存储器:用来存放数据和程序。

控制器:用来控制、指挥程序和数据的输入、运行以及处理运算的结果。

输入设备:用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等

输出设备:可将机器运算结果转换为人们熟悉的信息形式,如打印机输出等。

t5SktO.png

课后习题

第三章

  • 总线的概念

    • 总线是多个部件共享的传输部件。
    • 是各个部件共享的传输介质
    • 补充:总线传输的特点是:某一时刻只能有一路信息在总线上传输,即分时使用。为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。
  • 总线的分类

    • 片内总线:芯片内部总线
    • 系统总线:计算机各部件之间的信息传输线

      • 数据总线 双向 与机器字长、存储字长有关

      用来传输各种功能部件间的数据信息,是双向传输总线,其位数与机器字长、存储字长有关,一般为8/16/32位。

      • 地址总线 单项 与存储地址、I/O地址有关

      主要用来指出数据总线上的源数据或目的数据在主存单元的地址或I/O设备的地址。

      • 控制总线 有出 有入

      用来发送各种控制信号的传输线,通常对任意控制线而言,它的传输是单向的。

    • 通信总线:用于计算机系统或计算机系统与其它系统(控制表、移动通信等)之间的通信

      • 传输方式

        • 串行通信总线

        --------------------

        • 并行通信总线

          --------------------
          --------------------
          --------------------
          --------------------
  • 总线进行判优控制的原因

★ 为什么要设置总线判优控制?

总线判优控制解决多个部件同时申请总线时的使用权分配问题;

1、基本概念

总线是多个部件共享的传输部件。

    • 主设备(模块) 对总线有控制权
    • 从设备(模块) 响应从主设备发来的总线命令
    • 总线判优控制
    • 集中式

      • 链式查询(用3条控制线进行控制)

      BS(总线忙);

      BR(总线讲求);

      BG(总线允许):
      特征:将BG串行地从一部件(I/O接口)送到下一个部件,直到到达有请求的部件为止。
      优先权位置:离总线控制器最近的部件具有最高使用权,离它越远,优先权越低。
      电路:链式查询靠接口的优先权排队电路实现。

      t4HpIs.png

      • 计数器定时查询

      优先级设置较灵活,对故障不敏感,连线及控制过程较复杂;

      t4qgGn.png

      • 独立请求方式

      优点:响应时间快,对优先次序的控制相当灵活 缺点:控制线数增加了很多

      t4qoa4.png

    • 总线周期的四个阶段

      • 请求和仲裁阶段

      当有多个模块提出总线请求时,必须由仲裁机构仲裁,确定将总线的使用权分配给哪个模块。

      • 寻址周期

      取得总线使用权的模块,经总线发出本次要访问的存储器或I/O端口的地址和有关命令。

      • 传送数据

      主模块(指取得总线控制权的模块)与其他模块之间进行数据的传送。

      • 结束阶段

      主模块将有关信息从总线上撤除,主模块交出对总线的控制权。

    补充:总线周期是指主设备和从设备之间完成完整地可靠的通信所需要的时长

    • 总线通信控制的四种方式

      • 同步通信

      每种总线操作都有一个确定的通信协议(规定在每个时钟周期内交换那些信息)

      优点:①速度快,并且接口逻辑很少

      缺点:①总线上每个设备必须以同样的时钟周期进行工作

      ​ ②由于时钟偏移问题,同步总线不能很长

      • 异步通信

      没有公共时钟标准,因此,能够连接宽带范围很大的各种设备。总线能够加长而不用担心时钟偏移问题

      • 非互锁
      • 半互锁
      • 全互锁

      优点:灵活,可接挂各种不同工作速度的设备

      缺点:①对噪声较敏感

      ​ ②接口逻辑较复杂

      • 半同步通信

      为了解决异步通信的噪声敏感的问题,在异步总线种引入时钟信号!这样信号的有限时间限制在时钟到达的时刻,而不用受其他时间的信号干扰

      优点:结合了同步异步通信的优点,既保持了”所有信号都由时钟定时“的特点,又允许”不同速度设备共存于总线“

      • 分离式通信

      基本思想:将一个传输操作事务分成两个子过程。在第一个子过程中,主控设备A在获得总线使用权后,将请求的事务类型(即总线命令)、地址以及其他有关信息(如标识主控设备身份的编号等)发送到总线上,从设备B记录下这些信息。主控设备发完这些信息后便立即释放总线,这样其他设备便可使用总线。在第二个子过程中,从设备B收到主控设备A发来的信息后,就按照其请求的命令进行相应的操作,当准备好主控设备所需的数据后,从设备B便请求使用总线,一旦获得使用权,则从设备B就将主控设备A的编号及所需的数据等送到总线上,这样主控设备A便可接收数据。

      优点:提高整个系统的总有效带宽

      缺点:控制相当复杂,开销大

    课后习题

    3.1、什么是总线?总线传输有何特点?为了减轻总线负载,总线上的部件应具备什么特点?

    答:总线是多个部件共享的传输部件。
    总线传输的特点是:某一时刻只能有一路信息在总线上传输,即分时使用。
    为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。

    3.2、总线如何分类?什么是系统总线?系统总线又分为几类,它们各有何作用,是单向的,还是双向的,它们与机器字长、存储字长、存储单元有何关系?

    答:①按连接部件不同,可分为片内总线、系统总线、通信总线。

        ②系统总线按照传输信息不同分为数据总线,地址总线,控制总线
    
    • 数据总线——用来传输各功能部件之间的数据信息。它是双向传输总线 ,其位数与机器字长、存储字长有关,一般为8位、16位或32位。
    • 地址总线——用来指出数据总线上的源数据或目的数据在主存单元的地址或IO设备的地址。它是单向传输总线,其位数与存储单元的个数有关。
    • 控制总线——用来发出各种控制信号。通常对任一控制线而言,是单向传输;对控制总线总体来说,又是双向的。

    3.4、为什么要设置总线判优控制?常见的集中式总线控制有几种?各有何特点?哪种方式响应时间最快?哪种方式对电路故障最敏感?

    答:总线判优控制解决多个部件同时申请总线时的使用权分配问题;

    常见的集中式总线控制有三种:链式查询、计数器定时查询、独立请求;

    • 链式查询方式连线简单,易于扩充,对电路故障最敏感;
    • 计数器定时查询方式优先级设置较灵活,对故障不敏感,连线及控制过程较复杂
    • 独立请求方式速度最快,但硬件器件用量大,连线多,成本较高。

    3.7、画图说明异步通信中请求与回答有哪几种互锁关系?

    t5pXQJ.png

    第四章

    • RAM和ROM的区别

      • ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。
      • ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存
      • RAM两大类:

        • 静态RAM(SRAM)

        SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用

        • 动态RAM(DRAM)

        DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

      • ROM的种类

        • 可编程ROM(PROM)

        PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了!

        • 可擦除可编程ROM(EPROM)

        EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。

    • 存储器的层次结构

      • 图解

      t5AsXD.jpg

      • 存储器三个主要特则的关系

      t5FuuQ.png

      • 缓存—主存层次和主存—辅存层次

        • CPU的运行速度增长过快,为了缓解CPU和主存之间的速度差,我们在CPU和主存之间,增加了一个缓存。这个缓存可以有效地提高主存的运行速度。
        • 缓存中保存的是主存中程序的副本。CPU可以直接通过访问缓存来访问主存,缓存和主存之间还可以进行信息交流。缓存和主存是采用硬件的方法连接成一个整体。
        • 主存和缓存之间数据的调入调出对于程序员是透明的

        t5kGdA.png

    • 存储器中MAR和MDR的含义与作用

      • MAR

      位于CPU中的地址寄存器(用来存储地址)

      • MDR

      位于CPU中的数据寄存器(用来存储数据)

      • 图解

      t5VQMT.png

      • CPU从主存储器读取信息的过程

      首先CPU将该信息的地址送至MAR,经由地址总线送至主存,然后发出读命令。

      主存接到读命令后,得知需将该地址单元的内容读出,将该地址单元的内容读取至数据总线上,传送至MDR。(随后MDR中的信息要作何处理由CPU决定,与主存无关)。

      • CPU向主存储器写入信息的过程

      首先CPU将该信息要写入的主存单元的地址经由MAR发送至地址总线,并将信息送入MDR。

      然后向主存发出写命令,主存接到写命令后,便将数据总线上的信息写入到地址总线指出的对应的主存单元中。

      t5Vree.png

    • 半导体存储芯片的译码驱动方式

      • 线选法

      t5zmE6.png

      • 重合法

      t5zZHx.png

    • 动态RAM的刷新

      • 刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。
      • 必须采用定时刷新的方法,它规定在一定的时间内,对动态RAM的全部基本单元电路必做一次刷新,一般取2ms,这个时间称为刷新周期,又称再生周期。
      • 通常有三种方式刷新:集中刷新、分散刷新、异步刷新

        • 集中刷新

        集中刷新是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读/写操作。不能进行读/写操作的时间称为“死时间”,又称访存“死区”,所占的比例称为死时间率

        tISQoV.png

        • 分散刷新

        分散刷新是指对每行存储单元的刷新分散到每个存取周期内完成。把机器的存取周期tCtC分成两段,前半段tMtM用来读/写或维持信息,后半段 $t_R$用来刷新,即$t_C=t_M+t_Rt_C=t_M+t_R$。

        tI9fG8.png

        • 异步刷新

        异步刷新是前两种方式的结合,它既可缩短“死时间”,又充分利用最大刷新间隔为2ms的特点。

        tI9orj.png

    • 存储容量的扩展方法

    将若干存储芯片连在一起才能组成足够容量的存储器,称为存储容量的扩展,通常有位扩展字扩展

    • 位扩展

    位扩展是指增加存储字长。

    假设现在有1K(1024个)4位的存储芯片(容量为4096bit)若干,要想构成一个1K8位的存储器,我们可以使用两片1K*4位的存储芯片来构成,如下图

    tICwoq.png

    我们通过片选信号CS同时选中两片存储芯片,同时进行8位数据的读出和写入,更形象的图可看如下

    tICIfK.png

    对于如上例子,位扩展的关键就是将两个存储芯片当成一个存储芯片来用,让两个存储芯片同时工作,同时被选中,同时做读操作,同时做写操作,要想保证同时,就是把两个芯片的片选,用相同的信号进行连接。

    • 字拓展

    字扩展是指增加存储器字的数量。

    假设现在有1K8位的存储芯片若干,要想构成一个2K8位的存储器,我们可以使用两片1K*8位的存储芯片来构成,如下图

    tICbOH.png

    每一个存储芯片的容量是1K8位,因为我们要构成一个2K(11位2进制位)8的存储器,我们发现有2K有11位二进制位,而存储芯片的每一片的容量是1K(10位二进制位),多了一位,恰好我们可以使用这一位二进制位来作为片选信号,更形象的图可看如下

    tIPehV.png

    总共有11条地址线,对于A10,我们将它当成片选信号线,当A10=0时,选中左边的存储芯片工作,右边不工作,当A10=1时,通过一个取反,选择右边的芯片工作,这从外部看来就是从 0 0000000000 ~ 1 1111111111 刚好是从0~2047共2K个存储单元,每一个存储单元存放8位的二进制代码

    • 字、位扩展

    字、位扩展是指既增加存储字的数量,又增加存储字长。

    假设现在有1K4位的存储芯片若干,要组成4K8位的存储器,我们可以使用八片1K4位的存储芯片来构成,首先拿两片,来构成1K8bit这样一组芯片,接着,我们需要4组来构成4K8bit的存储器,如何进行连接呢?其实就是将上述两种方法进行综合,4K8的存储器,4K(12位二进制位,即12根地址线),8bit,就是8根数据线,1K4bit的芯片有需要10根地址线,也就是说系统给出的从A0-A11 12根地址线,其中的10根A0-A9是直接送到芯片当中构成1K8的一个小的存储器,剩余的2根地址线A11-A10,我们用来做片选信号,如下图

    tIP238.png

    4K的空间我们分配到了4个存储器当中,每个存储器包含了两片1K*4bit的存储芯片,

    第一个存储器的范围为 00 0...0(10个0)~00 1...1(10个1)

    第二个存储器的范围为 01 0...0(10个0)~01 1...1(10个1)

    第三个存储器的范围为 10 0...0(10个0)~10 1...1(10个1)

    第四个存储器的范围为 11 0...0(10个0)~11 1...1(10个1)

    由A11和A10来判断要访问的地址在哪一个存储器当中,我们采用译码器进行译码,当

    A11 =0 A10=0 选择第一个存储器

    A11 =0 A10=1 选择第二个存储器

    A11 =1 A10=0 选择第三个存储器

    A11 =1 A10=1 选择第四个存储器

    • 存储器与CPU的连接方法

      • 地址线的连接

      CPU的地址数往往比存储芯片的地址线数多。通常总是将CPU地址线的低位与存储字的地址线相连。CPU地址线的高位或在存储芯片扩充时用,或做其他用途,如片选信号等。

      • 数据线的连接

      CPU的数据线数与存储芯片的数据线数也不一定相等。此时必须对存储芯片扩位,使其数据位数CPU的数据线数相等。

      • 读/写命令线的连接

      CPU读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。

      • 片选线的连接

      片选线的连接CPU与存储芯片正确工作的关键。片选有效信号与CPU的访存控制信号(低电平有效)有关,因为只有当CPU要求访存时,才需选择存储芯片。片选有效信号还和地址有关,因为CPU的地址线往往多于存储芯片的地址线,故那些未与存储芯片连上的高位地址必须和访存控制信号共同产生存储芯片和片选信号。

      • 合理选择存储芯片

      主要是指存储芯片类型(RAM或ROM)和数量的选择。通常选用ROM存放系统程序、标准子程序和各类常数等。RAM则是为用户编程而设置的。

      • 时序、负载
    • 将欲传送的信息根据配偶或配奇原则配置成汉明码

    在计算机运行过程中,由于种种原因导致数据在存储过程中可能出现差错,为了能够及时发现错误并且将错误纠正,通常可以将原数据配成汉明编码。

    汉明码具有一位纠错能力。

    设将要进行检测的二进制代码为n位,为使其具有纠错能力,需要再加上k位的检测位,组成n+k位的代码。那么,新增加的检测位数k应满足:

    2k≥n+k+1或2k-1≥n+k

    代码长度和检测位数的关系

    | N | K(最小) |
    | ------ | ------- |
    | 1 | 2 |
    | 2~4 | 3 |
    | 5~11 | 4 |
    | 12~26 | 5 |
    | 27~57 | 6 |
    | 58~120 | 7 |

    当k的位数确定后,便可根据承担的检测任务设定他们在传送代码中的位置和他们的取值。首先,将所要检测的代码分为Pn组,分多少个组,我们通过k的值来确定。下面我用一个例子来说明。

    假设将要进行检测的二进制代码为0101,位数n=4,根据公式2k≥n+k+1可以得出k的值是3,所以最终形成的汉明码应为n+k=7位。

    所以分组分为P1、P2、P4。原因则是第一组是20、第二组则是21 、同理第三组则是22 、依次列推分组应按照2k-1。同时以后根据分组产生的数插入的位置也是按照此规律插入,比如第一组插入20、即第1位,第二组插入21 、即第2位,以此类推。那么组分好了,他们每一组中包含的位则是:

    p1包含(1,3,5,7,9,11,...位)

    p2包含(2,3,6,7,10,11,14,15,...位)

    p3包含(4,5,6,7,12,13,14,15,...位)

    每一组中包含的数又是如何确定的呢?我们来看下面这个表格

    | 编号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | … |
    | ------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
    | 二进制 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | … |

    将编号转成二进制从右向左,如果第一位是1,例如编号是1,3,5,7....的就分入第一组,如果第二位是1的,例如编号2,3,6,7,10...的就分入第二组,以此类推将所有的编号分入相应的组中。下面我么来看例子0101是如何产生汉明码的(采用配偶原则),

    | 序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
    | ------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
    | 名称 | C1 | C2 | B4 | C4 | B3 | B2 | B1 |
    | 传送数 | | | 0 | | 1 | 0 | 1 |

    其中C1、C2、C4是我们插入的检测位

    如果按照配偶原则来配置汉明码,则C1应使1 3 5 7位中“1”的个数为偶数;C2应使2 3 6 7位中“1”的个数为偶数;C4应使4 5 6 7位中“1”的个数为偶数。

    按照上面我所说的则:

    C1=③位+⑤位+⑦位,即C1=B4+B3+B1=0+1+1=0

    C2=③位+⑥位+⑦位,即C2=B4+B2+B1=0+0+1=1

    C4=⑤位+⑥位+⑦位,即C4=B3+B2+B1=1+0+1=0

    所以0101的汉明码应为C1C2B4C4B3B2B1,即0100101

    汉明码还存在配奇原则,下面来讲一讲配奇原则。按照配奇原则配置1100101的汉明码。

    根据1100101可知n=7。根据公式我们可以求出需要添加k=4位检测位,详细情况如下表。

    | 二进制序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    | ---------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
    | 汉明码 | C1 | C2 | 1 | C4 | 1 | 0 | 0 | C8 | 1 | 0 | 1 |

    按配奇原则配置,则

    C1=③位+⑤位+⑦位+⑨位+11位+1=1+1+0+1+1+1=1

    C2=③位+⑥位+⑦位+10位+11位+1=1

    C4=⑤位+⑥位+⑦位+1=0

    C8=⑨位+10位+11位+1=1

    所以按配奇原则新配置的汉明码为11101001101

    • 对接收到的汉明码纠错

    根据以上说的汉明码的配偶原则和配奇原则我们来看汉明码的纠错。设接收到的错误汉明码(按配偶原则配置)是0100111,我们可以根据上述规律来确定出错位。

    | 二进制序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
    | -------------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
    | 接收到的汉明码 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |

    那么新的检测位是

    P1=①位+③位+⑤位+⑦位,即P1=0+0+1+1=0

    P2=②位+③位+⑥位+⑦位,即P2=1+0+1+1=1

    P4=④位+⑤位+⑥位+⑦位,即P4=0+1+1+1=1

    根据P4P2P1构成的二进制是110,将110转换成十进制为6,说明是第6位出错,或者根据配偶原则的规律,其“1”的个数必须是偶数也能判断出是第6位,所以第六位应将“1”改为“0”,那么正确的汉明码应为0100101。

    那么为什么在汉明码纠错过程中,新的检测位P4P2P1的状态即指出了编码中错误的信息位?

    汉明码属于分组奇偶校验,P4P2P1=000,说明接收方生成的校验位和收到的校验位相同,否则不同说明出错。由于分组时校验位只参加一组奇偶校验,有效信息参加至少两组奇偶校验,若果校验位出错,P4P2P1的某一位将为1,刚好对应位号4、2、1;若果有效信息出错,将引起P4P2P1中至少两位为1,如B1出错,将使P4P1均为1,P2=0,P4P2P1=101,

    • Cache在计算机中的作用

      • 介绍

      电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM之间,规模较小,但速度很高的存储器,通常由SRAM(静态存储器)组成。

      • 作用

      提高CPU数据输入输出的速率。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,仿佛其存储系统容量与内存相当而访问速度近似Cache。

      • 基本原理

      使用Cache改善系统性能的依据是程序的局部性原理。

    • 命中率、平均访问时间与效率的计算方法

      • 命中率

      效率 e 命中率 有关

    $$ e=\frac{访问cache的时间}{平均访问时间} 100\% $$

    **设Cache命中率为 h,访问 Cache 的时间为$t_c$ ,访问 主存 的时间为 $$t_m$$**
    

    $$ e=\frac{t_c}{h × t_c+ (1-h)× t_m} 100\% $$

    • Cache-主存地址映射的三种方式

      • 直接映射

      多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。
      cache的行号i和主存的块号j有如下函数关系:i=j mod m(m为cache中的总行数)
      优点:硬件简单,容易实现
      缺点:命中率低, Cache的存储空间利用率低

      tIe1FH.png

      • 全相联映射

      主存的一个块直接拷贝到cache中的任意一行上
      优点:命中率较高,Cache的存储空间利用率高
      缺点:线路复杂,成本高,速度低

      tIed0S.png

      • 组相联映射

      将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:cache总行数m=u×v 组号q=j mod u

      组间采用直接映射,组内为全相联
      硬件较简单,速度较快,命中率较高

      tIeBkQ.png

    课后习题

    4.3、存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次?

    答:存储器的层次结构主要体现在 Cache- 主存和主存 - 辅存这两个存储层次上。

    Cache- 主存层次在存储系统中主要对 CPU 访存起加速作用,即从整体运行的效果分析, CPU 访存速度加快,接近于 Cache 的速度,而寻址空间和位价却接近于主存。

    主存 - 辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。

    综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。

    主存与 CACHE 之间的信息调度功能全部由硬件自动完成。而主存 与辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部分通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。

    4.8、试比较静态 RAM 和动态 RAM 。

    答:区别:动态RAM会周期性的刷新,静态RAM不进行刷新

    1、静态RAM,指zhiSRAM:只要有供电,它保存的数据就不会丢失,dao且为高速存储器,如CPU中的高速缓存(cache)
    2、动态RAM,指DRAM:有供电,还要根据它要求的刷新时间参数,才能保持存储的数据不丢失,如电脑中的内存条

    4.9、什么叫刷新?为什么要刷新?说明刷新有几种方法。

    答:刷新:对 DRAM 定期进行的全部重写过程;

    刷新原因:因电容泄漏而引起的 DRAM 所存信息的衰减需要及时补充,因此安排了定期刷新操作;

    常用的刷新方法有三种:集中式、分散式、异步式。

    • 集中式:在最大刷新间隔时间内,集中安排一段时间进行刷新,存在 CPU 访存死时间。
    • 分散式:在每个读 / 写周期之后插入一个刷新周期,无 CPU 访存死时间。
    • 异步式:是集中式和分散式的折衷。

    4.10、半导体存储器芯片的译码驱动方式有几种?

    解:半导体存储器芯片的译码驱动方式有两种:线选法和重合法。

    • 线选法:地址译码信号只选中同一个字的所有位,结构简单,费器材;
    • 重合法:地址分行、列两部分译码,行、列译码线的交叉点即为所选单元。这种方法通过行、列译码信号的重合来选址,也称矩阵译码。可大大节省器材用量,是最常用的译码驱动方式。

    4.15、设 CPU 共有 16 根地址线, 8 根数据线,并用$\overline{MREQ}$ ( 低电平有效)作访存控制信号,作$\frac{R}{\overline{W}}$读写命令信号(高电平为读,低电平为写)。现有下列存储芯片: ROM ( 2K × 8 位, 4K × 4 位, 8K × 8 位), RAM ( 1K × 4 位, 2K × 8 位, 4K × 8 位),及 74138 译码器和其他门电路(门电路自定)。试从上述规格中选用合适芯片,画出 CPU 和存储芯片的连接图。要求:

    ( 1 )最小 4K 地址为系统程序区, 4096~16383 地址范围为用户程序区。

    答:地址空间分配图:

    系统程序区( ROM 共 4KB ): 0000H-0FFFH

    用户程序区( RAM 共 12KB ): 1000H-3FFFH

    ( 2 )指出选用的存储芯片类型及数量。

    答:选片: ROM :选择 4K × 4 位芯片 2 片,位并联RAM :选择 4K × 8 位芯片 3 片,字串联 (RAM1 地址范围为 :1000H-1FFFH,RAM2 地址范围为 2000H-2FFFH, RAM3 地址范围为 :3000H-3FFFH)

    ( 3 )详细画出片选逻辑。

    答:( 3 )各芯片二进制地址分配如下:

    A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
    ROM1,20000000000000000
    00000111111111111
    RAM10001000000000000
    00011111111111111
    RAM20010000000000000
    00101111111111111
    RAM30011000000000000
    00111111111111111

    CPU和存储器连接逻辑图及片选逻辑如下图所示:

    tIuiTS.png

    4.17、写出 1100 、 1101 、 1110 、 1111 对应的汉明码。

    解:有效信息均为 n=4 位,假设有效信息用 b4b3b2b1 表示

    校验位位数 k=3 位,( 2 k >=n+k+1 )

    设校验位分别为 c1 、 c2 、 c3 ,则汉明码共 4+3=7 位,即: c1c2b4c3b3b2b1

    校验位在汉明码中分别处于第 1 、 2 、 4 位

    c1=b4 ⊕ b3 ⊕ b1

    c2=b4 ⊕ b2 ⊕ b1

    c3=b3 ⊕ b2 ⊕ b1

    当有效信息为 1100 时, c3c2c1=110, 汉明码为 0111100 。

    当有效信息为 1101 时, c3c2c1=001, 汉明码为 1010101 。

    当有效信息为 1110 时, c3c2c1=000, 汉明码为 0010110 。

    当有效信息为 1111 时, c3c2c1=111, 汉明码为 1111111 。

    4.18、已知收到的汉明码(按配偶原则配置)为 1100100 、 1100111 、 1100000 、 1100001 ,检查上述代码是否出错?第几位出错?

    解:假设接收到的汉明码为: c1 ’ c2 ’ b4 ’ c3 ’ b3 ’ b2 ’ b1 ’

    纠错过程如下:

    P1=c1 ’⊕ b4 ’⊕ b3 ’⊕ b1 ’

    P2=c2 ’⊕ b4 ’⊕ b2 ’⊕ b1 ’

    P3=c3 ’⊕ b3 ’⊕ b2 ’⊕ b1 ’

    如果收到的汉明码为 1100100 ,则 p3p2p1=011 ,说明代码有错,第 3 位( b4 ’)出错,有效信息为: 1100

    如果收到的汉明码为 1100111 ,则 p3p2p1=111 ,说明代码有错,第 7 位( b1 ’)出错,有效信息为: 0110

    如果收到的汉明码为 1100000 ,则 p3p2p1=110 ,说明代码有错,第 6 位( b2 ’)出错,有效信息为: 0010

    如果收到的汉明码为 1100001 ,则 p3p2p1=001 ,说明代码有错,第 1 位( c1 ’)出错,有效信息为: 0001

    4.19、已经接收到下列汉明码,分别写出它们所对应的欲传送代码。

    ( 1 ) 1100000 (按偶性配置)

    ( 2 ) 1100010 (按偶性配置)

    ( 3 ) 1101001 (按偶性配置)

    ( 4 ) 0011001 (按奇性配置)

    ( 5 ) 1000000 (按奇性配置)

    ( 6 ) 1110001 (按奇性配置)

    解:(一)假设接收到的汉明码为 C1 ’ C2 ’ B4 ’ C3 ’ B3 ’ B2 ’ B1 ’, 按偶性配置则:

    P1=C1 ’⊕ B4 ’⊕ B3 ’⊕ B1 ’

    P2=C2 ’⊕ B4 ’⊕ B2 ’⊕ B1 ’

    P3=C3 ’⊕ B3 ’⊕ B1 ’

    ( 1 )如接收到的汉明码为 1100000 ,

    P1=1 ⊕ 0 ⊕ 0 ⊕ 0=1

    P2=1 ⊕ 0 ⊕ 0 ⊕ 0=1

    P3=0 ⊕ 0 ⊕ 0=0

    P3P2P1=011 ,第 3 位出错,可纠正为 1110000 ,故欲传送的信息为 1000 。

    ( 2 )如接收到的汉明码为 1100010 ,

    P1=1 ⊕ 0 ⊕ 0 ⊕ 0=1

    P2=1 ⊕ 0 ⊕ 1 ⊕ 0=0

    P3=0 ⊕ 0 ⊕ 0=0

    P3P2P1=001 ,第 1 位出错,可纠正为 0100010 ,故欲传送的信息为 0010 。

    ( 3 )如接收到的汉明码为 1101001 ,

    P1=1 ⊕ 0 ⊕ 0 ⊕ 1=0

    P2=1 ⊕ 0 ⊕ 0 ⊕ 1=0

    P3=1 ⊕ 0 ⊕ 1=0

    P3P2P1=000 ,传送无错,故欲传送的信息为 0001 。

    (二)假设接收到的汉明码为 C1 ’ C2 ’ B4 ’ C3 ’ B3 ’ B2 ’ B1 ’, 按奇性配置则:

    P1=C1 ’⊕ B4 ’⊕ B3 ’⊕ B1 ’⊕ 1

    P2=C2 ’⊕ B4 ’⊕ B2 ’⊕ B1 ’⊕ 1

    P3=C3 ’⊕ B3 ’⊕ B1 ’⊕ 1

    ( 4 )如接收到的汉明码为 0011001 ,

    P1=0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1=1

    P2=0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1=1

    P3=1 ⊕ 0 ⊕ 1 ⊕ 1=1

    P3P2P1=111 ,第 7 位出错,可纠正为 0011000 ,故欲传送的信息为 1000 。

    ( 5 )如接收到的汉明码为 1000000 ,

    P1=1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1=0

    P2=0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1=0

    P3=0 ⊕ 0 ⊕ 0 ⊕ 1=1

    P3P2P1=100 ,第 4 位出错,可纠正为 1001000 ,故欲传送的信息为 0000 。

    ( 6 )如接收到的汉明码为 1110001 ,

    P1=1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1=0

    P2=1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1=0

    P3=0 ⊕ 0 ⊕ 1 ⊕ 1=0

    P3P2P1=000 ,传送无错,故欲传送的信息为 1001 。

    4.26、计算机中设置 Cache 的作用是什么?能否将 Cache 的容量扩大,最后取代主存,为什么?

    答:计算机中设置 Cache 的作用是解决 CPU 和主存速度不匹配问题。

    不能将 Cache 的容量扩大取代主存,

    原因如下:

    1 ) Cache 容量越大成本越高,难以满足人们追求低价格的要求;

    ( 2 )如果取消主存,当 CPU 访问 Cache 失败时,需要将辅存的内容调入 Cache 再由 CPU 访问,造成 CPU 等待时间太长,损失更大。

    4.28、设主存容量为 256K 字, Cache 容量为 2K 字,块长为 4 。

    ( 1 )设计 Cache 地址格式, Cache 中可装入多少块数据?

    ( 2 )在直接映射方式下,设计主存地址格式。

    ( 3 )在四路组相联映射方式下,设计主存地址格式。

    ( 4 )在全相联映射方式下,设计主存地址格式。

    ( 5 )若存储字长为 32 位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。

    解:( 1 ) Cache 容量为 2K 字,块长为 4 , Cache 共有$$2K/4=2^{11}/2^2 =2^9 =512$$ 块,

    Cache 字地址 9 位,字块内地址为 2 位

    因此, Cache 地址格式设计如下:

    Cache 字块地址( 9 位)字块内地址( 2 位)

    ( 2 )主存容量为 256K 字 =2 18 字,主存地址共 18 位,共分 256K/4=2 16 块,

    主存字块标记为 18-9-2 =7 位。

    直接映射方式下主存地址格式如下:

    主存字块标记( 7 位)Cache 字块地址( 9 位)字块内地址( 2 位)

    ( 3 )根据四路组相联的条件,一组内共有 4 块,得 Cache 共分为 512/4=128=2 7 组,

    主存字块标记为 18-7-2 =9 位,主存地址格式设计如下:

    主存字块标记( 9 位)组地址( 7 位)字块内地址( 2 位)

    ( 4 )在全相联映射方式下,主存字块标记为 18-2=16 位,其地址格式如下:

    主存字块标记( 16 位)字块内地址( 2 位)

    ( 5 )若存储字长为 32 位,存储器按字节寻址,则主存容量为 256K*32/4=2 21 B ,

    Cache 容量为 2K32/4=2 14 B ,块长为 432/4=32B=2 5 B ,字块内地址为 5 位,

    在直接映射方式下,主存字块标记为 21-9-5 =7 位,主存地址格式为:

    主存字块标记( 7 位)Cache 字块地址( 9 位)字块内地址( 5 位)

    在四路组相联映射方式下,主存字块标记为 21-7-5 =9 位,主存地址格式为:

    主存字块标记( 9 位)组地址( 7 位)字块内地址( 5 位)

    在全相联映射方式下,主存字块标记为 21-5=16 位,主存地址格式为:

    主存字块标记( 16 位)字块内地址( 5 位)

    4.30、一个组相连映射的 CACHE 由 64 块组成,每组内包含 4 块。主存包含 4096 块,每块由 128 字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。

    cache 组数: 64/4=16 , Cache 容量为: $64*128=2^{13}$$ 字, cache 地址 13 位

    主存共分 4096/16=256 区,每区 16 块

    主存容量为: 4096*128=2 19 字,主存地址 19 位,地址格式如下:

    主存字块标记( 8 位)组地址( 4 位)字块内地址( 7 位)

    第五章

    • I/O设备与主机信息传送的控制方式

      • 程序查询方式

      也称查询方式,采用该方式,数据在CPU和外设间 的传送完全靠计算机程序控制,CPU的操作和外围设备操作同步,硬件结构简单,但由于外部设备动作慢,浪费CPU时间多,系统效率低。

      tIMhWQ.png

      • 程序中断方式

      外设备准备就绪后中断方式猪肚通知CPU,在CPU相应 I/O设备的中断请求后,在暂停现行程序的执行,转为I/O设备服务可明显提高CPU的利用率,在一定程度上实现了主机和I/O设备的并行工作,但硬件结构负载,服务开销时间大

      tIQiTK.md.png

      • DMA方式

      DMA方式与中断方式一样,实现了主机和I/O设备的并行工作,由于DMA 方式直接依靠硬件实现贮存与I/O设备之间的数据传送,传送期间不需要CPU程序干预,CPU可继续执行原来的程序,因此CPU利用率和系统效率比中断方式更高,但DMA方式的硬件结构更为复杂。
      tIQkFO.md.png

    • 中断的概念

      • 程序中断是指在计算机执行实现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

      toSfU0.png

      • 中断系统是计算机实现中断功能的软、硬件总称。在CPU一侧配置了中断机构,在设备一侧配置了中断控制接口,在软件上设计了相应的中断服务程序。
    • 中断方式的接口电路中触发器INTR、MASK、B、D的含义与作用

      • 接口电路

      topCKH.png

      • INTR:中断请求触发器

      作用:用来登记中断源发出的随机性中断请求信号,以便为CPU查询中断及中断排队判优线路提供稳定的中断请求信号。INTR = 1 有请求

      • MASK:中断屏蔽触发器

        • 当中断源被屏蔽时(MASK=1),此时即使D=1,中断查询信号到来时刻只能将INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。
        • 若该中断源未被屏蔽(MASK=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,
      • D:完成触发器
      • B:非准备好触发器
    • I/O中断的处理过程

      • 中断响应的事前准备
      • CPU检查是否有中断/异常信号
      • 根据中断向量到IDT表中取得处理这个向量的中断程序的段选择符
      • 根据取得的段选择符到GDT中找相应的段描述符
      • CPU根据特权级的判断设定即将运行的中断服务程序要使用的栈的地址
      • 保护当前程序的现场
      • 跳转到中断服务程序的第一条指令开始执行
      • 中断服务程序处理完毕,恢复执行先前中断的程序
      • 中断服务程序处理完毕

      toVYJs.png

    • 中断服务程序的执行流程

      • 保护现场

        • 程序断点→中断隐指令完成
        • 寄存器内容的保护→进栈指令
      • 中断服务(设备服务)

        • 对不同I/O设备具有不同内容的设备服务
      • 恢复现场

        • 出栈指令
      • 中断返回

        • 中断返回指令
    • 中断向量地址和入口地址的区别

      • 区别

        • 向量地址是硬件电路(向量编码器)产生的中断源的内存地址编号,
        • 中断入口地址是中断服务程序首址。
      • 联系

        • 中断向量地址可理解为中断服务程序入口地址指示器(入口地址的地址),通过它访存可获得中断服务程序入口地址。
    • 解决DMA接口和CPU争用主存的方法(三种)

      • 停止CPU访问主存

        • 当外设要求传送一批数据时,由DMA接口向CPU发一个停止信号,要求CPU放弃地址线、数据线和有关控制线的使用权。
        • DMA接口获得总线控制权后,开始进行数据传送,在数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交回给CPU。
        • 优点:控制简单,适用于数据传输率很高的I/O设备实现成组数据的传送。
        • 缺点:DMA接口在访问主存时,CPU基本上处于不工作状态或保持原状态。
        • CPU对主存的利用率并没有得到充分的发挥。
      • 周期挪用(周期窃取)

        • 在这种方法中,每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权一个或几个主存周期,而DMA不请求时,CPU仍继续访问主存。
        • I/O设备要求DMA传送会遇到三种情况:

          • 第一种是此时CPU不需访问主存(如CPU正在执行乘法指令)故I/O设备访存与CPU不发生冲突
          • 第二种情况是I/O设备要求DMA传送时,CPU正在访存,此时必须待存取周期结束时刻,CPU才能将总线占有权让出。
          • 第三种情况是I/O设备要求访存时,CPU也要求访存,这就出现了访存冲突。此刻,I/O访存优先于CPU访存,因为I/O不立即访存就可能丢失数据,这时I/O要窃取一、二个存取周期,意味着CPU在执行访存指令过程中插入了DMA请求,并挪用了一、二个存取周期,使CPU延缓了一、二个存取周期再访存。 与CPU暂停访存的方式相比,
        • 它既实现了I/O传送,又较好地发挥了主存与CPU的效率,是一种广泛采用的方法。

    toeACd.jpg

    • DMA与CPU交替访问

      • 这种方法适合于CPU的工作周期比主存存取周期长的情况。
      • 这种方式不需要总线使用权的申请建立和归还过程,总线使用权是通过C1和C2分别控制的。
      • 在这种工作方式下,CPU既不停止主程序的运行也不进入等待状态,在CPU不知不觉中完成了DMA的数据传送,故又有“透明的DMA”方式之称,当然其相应的硬件逻辑变得更为复杂。

    toetK0.jpg

    • DMA方式的特点

      • 允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
      • DMA 传输将一个内存区从一个装置复制到另外一个, CPU 初始化这个传输动作,传输动作本身是由 DMA控制器来实行和完成。
      • 设备:外设通过DMA的一种专门接口电路——DMA控制器(DMAC)。

      toejIg.png

    课后习题

    5.3、I/0设备与主机交换信息时,共有哪几种控制方式?简述它们的特点。

    • 程序直接控制方式:也称查询方式,采用该方式,数据在CPU和外设间的传送完全靠计算机程序控制,CPU 的操作和外围设备操作同步,硬件结构简单,但由于外部设备动作慢,浪费CPU时间多,系统效率低。
    • 程序中断方式:外设备准备就绪后中断方式猪肚通知CPU,在CPU相应I/0设备的中断请求后,在暂停现行程序的执行,转为I/0设备服务可明显提高CPU的利用率,在一-定程度上实现了主机和I/O设备的并行工作,但硬件结构负载,服务开销时间大
    • DMA方式与中断方式一样,实现了主机和I/O设备的并行工作,由于DMA方式直接依靠硬件实现贮存与I/O设备之间的数据传送,传送期间不需要CPU程序干预,CPU可继续执行原来的程序,因此CPU利用率和系统效率比中断方式更高,但DMA方式的硬件结构更为复杂。

    5.10、什么是I/O接口,与端口有何区别?为什么要设置I/O接口?I/O接口如何分类?

    解:I/O接口一般指CPU和I/O设备间的连接部件,而端口是指I/O接口内CPU能够访问的寄存器,端口加上相应的控制逻辑即构成I/O接口。

    I/O接口分类方法很多,主要有:

    (1)按数据传送方式分有并行接口和串行接口两种;

    (2)按数据传送的控制方式分有程序控制接口、程序中断接口、DMA接口三种。

    5.15、什么是中断允许触发器?它有何作用?

    解:中断允许触发器是CPU中断系统中的一个部件,他起着开关中断的作用(即中断总开关,则中断屏蔽触发器可视为中断的分开关)。

    第六章

    • 整数与小数原码、补码、反码和移码的表示

      • 原码

        • 定点整数:

    $$ {x_{[{\rm{原}}]}} = \left\{ {\begin{array}{*{20}{l}} {x,0 \le x < 1}\\ {{2^0} - x = {2^0} + \left| x \right|, - 1 < x \le 0} \end{array}} \right. $$

    • 定点整数

    $$ {x_{[原]}} = \left\{ \begin{array}{l} x,0 \le x < {2^{\rm{n}}}\\ {2^n} - x = {2^n} + |x|, - {2^n} < x \le 0 \end{array} \right.\ $$

    • 补码

      • 定点小数

    $$ {x_{[补]}} = \left\{ \begin{array}{l} x,0 \le x < 1\\ 2 + x = 2 - |x|, - 1 \le x \le 0 \end{array} \right.(\bmod 2)\ $$

    • 定点整数

    $$ {x_{[补]}} = \left\{ {\begin{array}{*{20}{l}} {x,0 \le x < {2^{\rm{n}}},0 \le x < {2^n}}\\ {{2^{n + 1}} + x = {2^{n + 1}} - |x|, - {2^n} \le x \le 0} \end{array}(\bmod {2^{n + 1}})} \right. $$

    • 反码

      • 定点小数

    $$ {x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}} {x,0 \le x < 1}\\ {(2 - {2^{ - n}}) + x = 2 + x - {2^{ - n}}, - 1 < x \le 0} \end{array}} \right. $$

    • 定点整数

    $$ {x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}} {x,0 \le x < {2^{\rm{n}}}}\\ {({2^{n + 1}} - 1) + x = {2^{n + 1}} + x - 1, - {2^n} < x \le 0} \end{array}} \right. $$

    • 移码
    • 用于表示浮点数的阶码
    • 定义

    $$ x[移] = {2^n} + x, - {2^n} \le x < {2^n} $$

    • 原码一位乘法规则、原码二位乘法规则、恢复余数法、不恢复余数法(加减交替法)
    • 浮点数加减法运算

    课后习题

    6.5、已知[x]补,求[x]原和x。

    [x1]补=1.1100; [x2]补=1.1001; [x3]补=0.1110; [x4]补=1.0000;

    [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000;

    解:[x]补与[x]原、x的对应关系如下:

    [x]补1.11001.10010.11101.00001,01011,11000,01111,0000
    [x]原1.01001.01110.11101,10111,01000,0111
    x-0.0100-0.01110.1110-1-1011-1000,0111-10000

    第七章

    • 寻址方式的概念

      • 寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式,
      • 是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
    • 两种指令寻址与十种数据寻址的过程及特点

      • 指令寻址

        • 顺序寻址方式

        由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令;接着从存储器取出第2条指令,再执行第二条指令;接着再取出第3条指令。

        这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令计数器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

        • 跳跃寻址方式

        当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

        采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。

      • 操作数寻址

        • 隐含寻址

        这种类型的指令,不是明显地给出操作数的地址。而是在指令中隐含着操作数的地址。例如,单地址的指令格式,就不明显地在地址字段中指出第2操作数的地址,而是规定累加寄存器AC作为第2操作数地址。指令格式明显指出的仅是第1操作数的地址D。因此,累加寄存器AC对单地址指令格式来说是隐含地址。[2] 如:DAA ;

        • 立即寻址

        指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。立即寻址方式的特点是指令执行时间很短,因为它不需要访问内存取数,从而节省了访问内存的时间。

        如:MOV AX,5678H 注意:立即数只能作为源操作数,不能作为目的操作数。

        • 直接寻址

        直接寻址是一种基本的寻址方法,其特点是:在指令格式的地址的字段中直接指出操作数在内存的地址。由于操作数的地址直接给出而不需要经过某种变换,所以称这种寻址方式为直接寻址方式。在指令中直接给出参与运算的操作数及运算结果所存放的主存地址,即在指令中直接给出有效地址

        • 间接寻址

        间接寻址是相对直接寻址而言的,在间接寻址的情况下,指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器,或者说此形式地址单元的内容才是操作数的有效地址。

        • 寄存器寻址方式

        当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。显然,此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号(可以是8位也可以是16位(AX,BX,CX,DX))。指令结构中的RR型指令,就是采用寄存器寻址方式的例子。如:MOV DS,AX

        • 寄存器间接寻址方式

        寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。[2]

        • 相对寻址方式

        相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,因而所编程序可以放在内存的任何地方。[2] 指令格式:MOV AX,[BX+1200H] 操作数物理地址PA=(DS/SS)*10H+EA EA=(BX/BP/SI/DI)+(6/8)位偏移量Disp 对于BX,SI,DI寄存器来说段寄存器默认为DS,对于SP来说,段寄存器默认为SS[3]

        • 基址寻址方式

        在基址寻址方式中将CPU中的基址寄存器的内容,加上变址寄存器的内容而形成操作数的有效地址。基址寻址的优点是可以扩大寻址能力,因为与形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。[2]

        • 变址寻址方式

        变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。

        但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增1、自减1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化。[2]

        • 块寻址方式

        块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块移动。[2]

    • 指令格式设计一般方式

      • 原则:

        • 尽量短(指令短,程序就短)
        • 要有足够的操作码位数
        • 指令必须有唯一解释
        • 指令字长必须是字长整数倍(传输,存储,运算一般都是以字节为基本单位)
        • 指令尽量规整(便于流水线,CPU执行更快)

    课后习题

    7.2、什么叫寻址方式?为什么要学习寻址方式?

    答:

    • 寻址,就是寻找指令中操作数的地址,
    • 寻址方式,就是找到操作数的方式,指令要进行操作,都有相应的数据参加,可是数据在哪里?是什么?都是通过不同的寻址方式来找到的。
    • 学习寻址方式,是为了找到指令中参与操作的数据,然后根据指令,得出结果。

    7.6、某指令系统字长为16位,地址码取4位,提出一种方案,使该指令系统有8条三地址指令、16条二地址指令、100条一地址指令。

    指令操作码分配方案如下:

    4位OP

    0000,

    ……, A1,A2,A3;8条三地址指令

    0111,

              1000,0000, 
    
              ……,……,  A2,A3:16条二地址指令 
    
              1000,1111, 
    
              1001,0000,0000, 
    
              ……,……,……,  A3:100条一地址指令 
    
              1001,0110,0011, 
    
              1001,0110,0100, 
    
              ……,……,……,  冗余编码 
    
              1001,1111,1111,   可用来扩充一、零地址指令条数 
    
              1010, 
    
              ……,   冗余编码 
    
              1111,    可用来扩充三、二、一、零地址指令条数
    

    7.9、试比较间接寻址和寄存器间接寻址

    答:间接寻址和寄存器间址都可扩大寻址范围,它们形成有效地址的方式类似;间接寻址需通过访存(若是多次间址还需多次访存)得到有效地址;寄存器间接寻址有效地址不是存放在存储单元中,而是存放于寄存器中,故比间接寻址少访存一次。

    7.10、试比较基址寻址和变址寻址

    答: 1、都可有效地扩大指令寻址范围。2、基址寻址时,基准地址由基址寄存器给出,地址的改变反映在位移量A的取值上;变址寻址时,基准地址由A给出,地址的改变反映在变址值的自动修改上,变址值由变址寄存器给
    出。3、基址寄存器内容通常由系统程序设定,变址寄存器内容通常由用户设定。4、基址寻址适用于程序的动态重定位,变址寻址适用于数组或字符串处理,适用场合不同。

    第八章

    • CPU的功能

      • 取指令

      控制器必须具备能自动地从存储器中取出指令的功能

      • 分析指令

      分析指令包括两部分内容:

      • 其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;
      • 其二,分析参与这次操作的操作数地址,即操作数的有效地址。
      • 执行指令

      执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。

      • CPU必须具有控制程序的顺序执行(称指令控制)、产生完成每条指令的控制命令(称操作控制)、对各种操作加以时间上的控制(称时间控制)、对数据进行算术运算和逻辑运算(称数据加工)、处理中断等功能。
    • 常见的用户可见寄存器与控制和状态寄存器

      • 用户可见寄存器

        • 通用寄存器

        通用寄存器可由程序设计者指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器。寄存器间接寻址时还可用通用寄存器存放有效地址的地址。

        • 数据寄存器
          数据寄存器用于存放操作数,其位数应满足多数数据类型的数值范围。
        • 地址寄存器

        地址寄存器用于存放地址,其本身可以具有通用性,也可用于特殊的寻址方式。

        • 条件码寄存器
          条件码是CPU根据运算结果由硬件设置的位。将条件码放到一个或多个寄存器中,就构成了条件码寄存器。
      • 控制和状态寄存器

        • MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。
        • MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
        • PC:程序计数器,存放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC的值可被修改。
        • IR:指令寄存器,存放当前欲执行的指令。
        • PSW:程序状态字寄存器,存放条件码和其他状态信息。在具有中断系统的机器中还有中断标记寄存器。
    • 指令周期的基本概念

      • CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间。取指阶段完成取指令和分析指令的操作,又称取指周期;执行阶段完成执行指令的操作,又称执行周期
      • 由于各种指令操作功能不同,因此各种指令的指令周期是不相同的。
      • 简介寻址的指令周期就包括取指周期间址周期执行周期3个阶段,其中间址周期用于取操作数的有效地址,因此间址周期介于取指周期和执行周期之间。
      • 如果有请求,CPU则要进入中断响应阶段,又称中断周期。在此阶段,CPU必须将程序断点保存到存储器中。一个完整的指令周期应包括取值、间址、执行、中断4个子周期。

      toBEGj.png

    • 影响流水线性能的三个因素

      • 影响CPU流水线性能的因素有:

        • 多个任务在同一时间周期内争用同一个流水段
          例如,假如在指令流水线中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。
        • 数据依赖
          比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到A运算完成,两次运算不能同时执行。
        • 条件转移的影响
          如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令。这时就必须等第一条指令的判断结果出来才能执行第二条指令。条件转移所造成的流水线停顿甚至比相关还要严重的多。

        越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

    • 流水线性能的三个评价指标的计算方法

      • 吞吐率

        • 单位时间内 流水线所完成指令 或 输出结果 的 数量

        设 m 段的流水线各段时间为Δt

        • 最大吞吐率

          $$T_{pmax} =\frac{1}{Δt}$$

        • 实际吞吐率

          连续处理 n 条指令的吞吐率为

          $$T_p=\frac{n}{m•Δt+(n-1)•Δt}$$

      • 加速比$$S_p$$

        • m 段的 流水线的速度 与等功能的 非流水线的速度 之比

        设流水线各段时间为Δt

        • 完成 n 条指令在 m 段流水线上共需

          $$T=m•Δt+(n-1)•Δt$$

        • 完成 n 条指令在等效的非流水线上共需

          $$T^`=nm•Δt$$t

          $$S_p=\frac{nm•Δt}{m•Δt+(n-1)•Δt}=\frac{nm}{m+n-1}$$

      • 效率

        • 流水线中各功能段的 利用率

    $$ 效率=\frac{流水线各段处于工作时间的时空和区}{流水线中各段总的时空区} $$

    $$ =\frac{mnΔt}{m(m+n-1)Δt} $$

    • CPU的中断系统需要解决的7个问题及其解决方法

      • 各中断源如何向CPU提出请求?

      中断请求触发器,其个数与中断源个数相等,用以标志某个中断源向CPU提出中断请求。

      • 各中断源同时提出请求怎么办?

      排队器,用来进行中断判优,当多个中断源同时请求时,排队器可选中优先级最高的中断请求。

      • CPU什么条件、什么时间、以什么方式响应中断?
      • 如何保护现场?

      堆栈,用来保护现场。

      • 如何寻找入口地址?

        • 硬件向量法是由硬件电路产生对应某中断的向量地址,在向量地址内可设置一条无条件转移指令,转向中断服务程序的入口地址。只需在中断响应周期将向量地址送至PC,在CPU进入下一取指周期时,就可取出无条件转移指令,执行该指令即可转至中断服务程序。也可以在向量地址内直接存放服务程序的入口地址,通过访问向量地址的存储单元,采用间址的方法找到服务程序的入口地址。
        • 软件查询法是在主存中存有一段中断识别程序,它通过程序判断是那个中断源提出请求,并转至相应的入口地址。只要在中断响应周期将中断识别程序的首地址送至PC,在CPU进入下一取指周期,就可以取出中断识别程序的第一条指令,逐条执行指令,便可找到相应的服务程序入口地址。
      • 如何恢复现场。如何返回?

      中断查询信号电路。在每条指令执行周期结束时刻,该电路向各中断源发查询信号。

      在计算机系统中,为了管理中断,指令系统应设有开中断、关中断、置屏蔽字及中断返回等指令。

      • 处理中断的过程中又出现新的中断怎么办?

    课后习题

    8.1、CPU有哪些功能?画出其结构框图并简要说明各个部件的作用。

    答:CPU的主要功能是执行存放在主存储器中的程序即机器指令。CPU是由控制器和运算器组成

    tofebj.png

    ALU:实现逻辑运算

    寄存器:存放操作数

    CU:发出各种操作命令序列的控制部件

    中断系统:处理异常情况和特殊请求

    8.12、计算机为了管理中断,在硬件上通常有哪些设置?各有何作用?对指令系统有何考虑?

    答:计算机为了管理中断,在硬件上设有专门处理中断的机构——中断系统。

    它通常包括:中断请求寄存器、中断优先级排队器、向量编码器、中断允许触发器、中断标记触发器、中断屏蔽触发器等。

    功能如下:

    • 中断请求寄存器——对中断源发出的进行登记;
    • 中断优先级排队器——对同时提出的中断信号进行裁决,选出一个最紧迫的响应;
    • 向量编码器——向量中断时,用来产生中断地址;
    • 中断允许触发器——CPU中的中断总开关,完成开、关中断的状态设置;
    • 中断标记触发器(INT)——用来建立中断中期状态。INT=1,表示进入中断周期,即开始执行中断隐指令;
    • 中断屏蔽触发器——读预科屏蔽的中断源进行开、关中断操作,可视为各中断源的中断分开关。
    • 采用程序终端技术时,指令系统中往往有相关的指令支持,常见的有指令有:开中断、关中断、中断返回等。

    8.17、在中断系统中,INTR、INT、EINT这3个触发器各有何作用?

    • INTR:中断请求触发器,用来登记中断源发出的随机性中断信号,以便为CPU查询中断及中断排队判优线路提供稳定的中断请求信号
    • EINT:中断允许触发器,CPU 中的中断总开关。当EINT=1时,表示允许中断(开中断),当EINT=0时,表示禁止中断(关中断)。其状态可由开、关中断等指令设置。
    • INT:中断标记触发器,控制器时序系统中周期状态分配电路的一部分,表示中断周期标记。当INT=1时,进入中断周期,执行中断隐
      指令的操作。

    8.18、什么是中断隐指令,有哪些功能?

    答:中断隐指令:CPU响应中断之后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的

    功能:(1)保存断点(2)暂不允许中断(3)引出中断服务程序

    8.19、中断处理过程中“保护现场”需完成哪些任务?如何实现?

    答:中断处理过程中"保护现场”要完成保存程序的断点和通用寄存器及状态寄存器的内容具体来讲,可在中断服务程序的起始部分安排若干条存数指令将寄存器的内容存到存储器中保存或用进栈指令将各寄存器的内容推入堆栈保存即将程序中断时间的"现场"保存起来.

    8.24、现有A、B、C、D四个中断源,其优先级由高向低按A、B、C、D顺序排列。若中断服务程序的执行时间为20µs,请根据下图所示时间轴给出的中断源请求中断的时刻,画出CPU执行程序的轨迹。

    答:A、B、C、D的响优先级即处理优先级。CPU执行程序的轨迹图如下:

    tohg6U.png

    8.25、某机有五个中断源L0、L1、L2、 L3、L4,按中断响应的优先次序由高向低排序为L0→ L1→L2→L3→L4,根据下示格式,现要求中断处理次序改为 L1→L4→L2→L0→L3,根据下面的格式,写出各中断源的屏蔽字。

    答:各中断源屏蔽状态见下表:

    屏蔽字屏蔽字屏蔽字屏蔽字屏蔽字
    中断源01234
    L010010
    L111111
    L210110
    L300010
    L410111

    表中:设屏蔽位=1,表示屏蔽;屏蔽位=0,表示中断开放。

    8.26、设某机配有A、B、C三台设备,其优先顺序按A®B®C降序排列,为改变中断处理次序,它们的中断屏蔽字设置如下:

    设备屏蔽字
    A111
    B010
    C011

    请按下图所示时间轴给出的设备请求中断的时刻,画出CPU执行程序的轨迹。

    答:A、B、C设备的响应优先级为A最高、B次之、C最低,处理优先级为A最高、C次之、B最低。CPU执行程序的轨迹图如下:

    to59a9.png

    第九章

    • 指令周期的四个阶段对应的微操作命令

      • 取值周期

      为了便于讨论,假设CPU内有四个寄存器,如图8.10 所示。MAR与地址总线相连,存放欲访问的存储单元地址; MDR与数据总线相连,存放欲写入存储器的信息或最近从存储器中读出的信息: PC存放现行指令的地址,有计数功能: IR存放现行指令。取指令的过程可归纳为以下几个操作:

      • 现行指令地址送至存储器地址寄存器,记作PC→MAR;
      • 向主存发读命令,启动主存作读操作,记作1→R;
      • 将MAR (通过地址总线)所指的主存单元中的内容(指令)经数据总线读至MDR内,记作M(MAR)→MDR
      • 将MDR的内容送至IR,记作MDR→IR;
      • 形成下一条指令的地址,记作(PC) +1→PC. .
      • 间值周期

        • 将指令的地址码部分(形式地址)送至存储器地址寄存器,记作Ad(IR)→MAR;
        • 向主存发读命令,启动主存作读操作,记作1→R;
        • 将MAR(通过地址总线)所指的主存单元中的内容(有效地址)经数据总线读至MDR内,记作M(MAR)→MDR;
        • 将有效地址送至指令寄存器的地址字段,记作MDR→Ad(IR)。此操作在有些机器中可省略。
      • 执行周期

        • 非访存指令
        • 访存指令
        • 转移类指令
      • 中断周期

        • 将特定地址“0”送至存储器地址寄存器,记作0→MAR;
        • 向主存发写命令,启动存储器作写操作,记作1→W;
        • 将PC的内容(程序断点)送至MDR,记作PC→MDR;
        • 将MDR的内容(程序断点)通过数据总线写入到MAR (通过地址总线)所指示的主存单元(0地址单元)中,记作MDR→M(MAR);
        • 向量地址形成部件的输出送至PC,记作向量地址→PC,为下一条,指令周期作准备;
        • 关中断,将允许中断触发器清0,记作0→EINT (该操作可直接由硬件线路完成)。
    • 常见指令控制信号对应的微操作:如间接寻址加法指令ADD@X
    • 机器周期、时钟周期和多级时序系统的概念

      • 机器周期:所有指令执行过程中的一个基准时间

        • 若指令字长 = 存储字长,取指周期=机器周期
      • 时钟周期

        • 一个机器周期内可完成若干个微操作
        • 时钟周期是控制计算机操作的最小单位时间
        • 用时钟周期控制产生一个或几个微操作命令
      • 多级时序系统

        • 机器周期、节拍(状态)组成多级时序系统
        • 一个指令周期包含若干个机器周期
        • 一个机器周期包含若干个时钟周期
    • CU常见的控制方式

      • 同步控制方式

        • 采用定长的机器周期

        以最长的微操作序列和最繁的微操作作为标准,机器周期内节拍数相同

        • 采用不定长的机器周期

        机器周期内节拍数不等

        • 采用中央控制和局部控制相结合的方法

        局部控制的节拍宽度与中央控制的节拍宽度一致

      • 异步控制方式

        • 无基准时标信号
        • 无固定的周期节拍和严格的时钟同步
        • 采用应答方式
      • 联合控制方式

        • 同步与异步相结合
      • 人工控制方式

        • Reset
        • 连续和单条指令执行转换开关
        • 符合停机开关

    课后习题

    9.1、设CPU内的部件有: PC、IR、MAR、MDR、ACC、ALU、CU,且采用非总线结构。
    (1)写出取指周期的全部微操作。
    (2)写出取数指令LDAX,存数指令STAX,加法指令ADDX (X均为主存地址)在执行阶段所需的全部微操作。
    (3)当上述指令均为间接寻址时,写出执行这些指令所需的全部微操作。
    (4)写出无条件转移指令JMP Y和结果为零则转指令BAZ Y在执行阶段所需的全部微操作。

    9.2、控制单元的功能是什么?其输入受什么控制?

    答:控制单元的主要功能是发出各种不同的控制信号。其输入受时钟信号、指令寄存器的操作码字段、标志和来自系统总线的控制信号的控制。

    第十章

    • 组合逻辑设计方法
    • 微程序设计方法

    课后习题

    • 暂无

    作者:icelo

    博客:冰洛博客


    作者:冰洛

    链接:https://icelo.club/archives/53.html

    版权:转载时须注明来源:冰洛博客

    Archives QR Code Tip
    QR Code for this page
    Tipping QR Code