zoukankan      html  css  js  c++  java
  • 组成原理答案

    第   一   章
    1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?
        解:P3
        计算机系统——计算机硬件、软件和数据通信设备的物理或逻辑的综合体。
        计算机硬件——计算机的物理实体。
        计算机软件——计算机运行所需的程序及相关资料。
        硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。
    5. 冯•诺依曼计算机的特点是什么?
        解:冯氏计算机的特点是:P9
        • 由运算器、控制器、存储器、输入设备、输出设备五大部件组成;
        • 指令和数据以同一形式(二进制形式)存于存储器中;
        • 指令由操作码、地址码两大部分组成;
        • 指令在存储器中顺序存放,通常自动顺序取出执行;
        • 以运算器为中心(原始冯氏机)。
    7. 解释下列概念:
    主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。
        解:P10
        主机——是计算机硬件的主体部分,由CPU+MM(主存或内存)组成;
        CPU——中央处理器(机),是计算机硬件的核心部件,由运算器+控制器组成;(早期的运、控不在同一芯片上)
        主存——计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成。
        存储单元——可存放一个机器字并具有特定存储地址的存储单位;
        存储元件——存储一位二进制信息的物理元件,是存储器中最小的存储单位,又叫存储基元或存储元,不能单独存取;
        存储字——一个存储单元所存二进制代码的逻辑单位;
        存储字长——一个存储单元所存二进制代码的位数;
        存储容量——存储器中可存二进制代码的总量;(通常主、辅存容量分开描述)
        机器字长——CPU能同时处理的数据位数;
        指令字长——一条指令的二进制代码位数;
    讲评:一种不确切的答法:
        CPU与MM合称主机;
        运算器与控制器合称CPU。
        这两个概念应从结构角度解释较确切。
    8. 解释下列英文缩写的中文含义:
    CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS
        解:全面的回答应分英文全称、中文名、中文解释三部分。
        CPU——Central Processing Unit,中央处理机(器),见7题;
        PC——Program Counter,程序计数器,存放当前欲执行指令的地址,并可自动计数形成下一条指令地址的计数器;
          IR——Instruction Register,
    指令寄存器,存放当前正在执行的指令的寄存器;
        CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件;
        ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件;
        ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器;
          MQ——Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。
        X——此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;
        MAR——Memory Address Register,存储器地址寄存器,内存中用来存放欲访问存储单元地址的寄存器;
          MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器;
          I/O——Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送;
        MIPS——Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位;
    10. 指令和数据都存于存储器中,计算机如何区分它们?
        解:计算机硬件主要通过不同的时间段来区分指令和数据,即:取指周期(或取指微程序)取出的既为指令,执行周期(或相应微程序)取出的既为数据。
        另外也可通过地址来源区分,从PC指出的存储单元取出的是指令,由指令地址码部分提供操作数地址。
        问题讨论:
        × 由控制器分析是指令还是数据;  
    数据进控制器?
        × 指令由指令寄存器存取;
    指令寄存器有控制功能?
        × 指令和数据的格式不一样;指令由操作码和地址码组成)
    两者的二进制代码形式不一样?
        × 指令顺序存放,而数据不是;
    数据为什么不能顺序存放?
        × MAR放地址,MDR放数据;
    取指时MDR中也是数据?
        × 存取数据和存取指令的操作在机器中完全一样;
    无法区分?
        × 指令和数据的地址不一样;
    某一存储单元只能放数据(或指令)?
        × 指令放在ROM中,数据放在RAM中;
    用户程序放在哪?
    第 三 章
    1. 什么是总线?总线传输有何特点?为了减轻总线负载,总线上的部件应具备什么特点?
        解:总线是多个部件共享的传输部件。
        总线传输的特点是:某一时刻只能有一路信息在总线上传输,即分时使用。
        为了减轻总线负载,总线上的部件应通过三态驱动缓冲电路与总线连通。
        讲评:
      围绕“为减轻总线负载”的几种说法:
    × 应对设备按速率进行分类,各类设备挂在与自身速率相匹配的总线上;
    × 应采用多总线结构;
    × 总线上只连接计算机的五大部件;
    × 总线上的部件应为低功耗部件。
    上述措施都无法从根上(工程上)解决问题,且增加了许多不必要(或不可能)的限制。
    × 总线上的部件应具备机械特性、电器特性、功能特性、时间特性;
    这是不言而喻的。
    4. 为什么要设置总线判优控制?常见的集中式总线控制有几种?各有何特点?哪种方式响应时间最快?哪种方式对电路故障最敏感?
        解:总线判优控制解决多个部件同时申请总线时的使用权分配问题;
        常见的集中式总线控制有三种:
    链式查询、计数器查询、独立请求;
        特点:链式查询方式连线简单,易于扩充,对电路故障最敏感;计数器查询方式优先级设置较灵活,对故障不敏感,连线及控制过程较复杂;独立请求方式判优速度最快,但硬件器件用量大,连线多,成本较高。
    5. 解释下列概念:总线的主设备(或主模块)、总线的从设备(或从模块)、总线的传输周期和总线的通信控制。
        解:
        总线的主设备(主模块)——指一次总线传输期间,拥有总线控制权的设备(模块);
        总线的从设备(从模块)——指一次总线传输期间,配合主设备完成传输的设备(模块),它只能被动接受主设备发来的命令;
        总线的传输周期——总线完成一次完整而可靠的传输所需时间;
        总线的通信控制——指总线传送过程中双方的时间配合方式。
    6. 试比较同步通信和异步通信。
        解:
        同步通信——由统一时钟控制的通信,控制方式简单,灵活性差,当系统中各部件工作速度差异较大时,总线工作效率明显下降。适合于速度差别不大的场合;
        异步通信——不由统一时钟控制的通信,部件间采用应答方式进行联系,控制方式较同步复杂,灵活性高,当系统中各部件工作速度差异较大时,有利于提高总线工作效率。
    8. 为什么说半同步通信同时保留了同步通信和异步通信的特点?
        解:
        半同步通信既能像同步通信那样由统一时钟控制,又能像异步通信那样允许传输时间不一致,因此工作效率介于两者之间。
    10. 为什么要设置总线标准?你知道目前流行的总线标准有哪些?什么叫plug and play?哪些总线有这一特点?
        解:
        总线标准的设置主要解决不同厂家各类模块化产品的兼容问题;
        目前流行的总线标准有:ISA、EISA、PCI等;
        plug and play——即插即用,EISA、PCI等具有此功能。
    11. 画一个具有双向传输功能的总线逻辑图。
        解:此题实际上是要求设计一个双向总线收发器,设计要素为三态、双向、使能等控制功能的实现,可参考74LS245等总线收发器芯片内部电路。 逻辑图如下:(n位)
    几种错误的设计:
    几种错误的设计:
    12. 设数据总线上接有A、B、C、D四个寄存器,要求选用合适的74系列芯片,完成下列逻辑设计:
    (1) 设计一个电路,在同一时间实现D→A、D→B和D→C寄存器间的传送;
    (2) 设计一个电路,实现下列操作:
        T0时刻完成D→总线;
      T1时刻完成总线→A;
      T2时刻完成A→总线;
      T3时刻完成总线→B。
        解:
        (1)采用三态输出的D型寄存器74LS374做A、B、C、D四个寄存器,其输出可直接挂总线。A、B、C三个寄存器的输入采用同一脉冲打入。注意-OE为电平控制,与打入脉冲间的时间配合关系为:
        现以8位总线为例,设计此电路,如下图示:
        (2)寄存器设置同(1),由于本题中发送、接收不在同一节拍,因此总线需设锁存器缓冲,锁存器采用74LS373(电平使能输入)。节拍、脉冲配合关系如下:
        节拍、脉冲分配逻辑如下:
    节拍、脉冲时序图如下:
        以8位总线为例,电路设计如下:
    (图中,A、B、C、D四个寄存器与数据总线的连接方法同上。)
        几种错误的设计:
    (1)几种错误的设计:
    (1)几种错误的设计:
    (2)几种错误的设计:
    (2)几种错误的设计:
    第 四 章
    3. 存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次?
        答:存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。
        Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。
        主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。
        综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。
        主存与CACHE之间的信息调度功能全部由硬件自动完成。而主存—辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部份通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。
    4. 说明存取周期和存取时间的区别。
        解:存取周期和存取时间的主要区别是:存取时间仅为完成一次操作的时间,而存取周期不仅包含操作时间,还包含操作后线路的恢复时间。即:
        存取周期 = 存取时间 + 恢复时间
    5. 什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?
        解:存储器的带宽指单位时间内从存储器进出信息的最大数量。
        存储器带宽 = 1/200ns ×32位
    = 160M位/秒 = 20MB/S = 5M字/秒
        注意字长(32位)不是16位。
    (注:本题的兆单位来自时间=106)
    6. 某机字长为32位,其存储容量是64KB,按字编址它的寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。
        解:存储容量是64KB时,按字节编址的寻址范围就是64KB,则:
        按字寻址范围 = 64K×8 / 32=16K字
      按字节编址时的主存地址分配图如下:
    讨论:
      1、一个存储器不可能有两套地址,注意字长32位,不是16位 ,不能按2字节编址;
      2、本题与IBM370、PDP-11机无关;
      3、按字寻址时,地址仍为16位;
    ´    ( :地址14位,单元16K个,按字编址4K空间。)
      4、字寻址的单位为字,不是B。
      5、按字编址的地址范围为0~16K-1,空间为16K字;按字节编址的地址范围为0~64K-1,空间为64KB。不能混淆;
      6、画存储空间分配图时要画出上限。
    7. 一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?
        1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位
        解:
    地址线和数据线的总和 = 14 + 32 = 46根;
        各需要的片数为:
    1K×4:16K×32 / 1K×4 = 16×8 = 128片
    2K×8:16K×32 / 2K×8 = 8×4 = 32片
    4K×4:16K×32 / 4K×4 = 4×8 = 32片
    16K×1:16K×32 / 16K×1 = 32片
    4K×8:16K×32 / 4K×8 = 4×4 = 16片
    8K×8:16K×32 / 8K×8 = 2×4 = 8片
    讨论:
        地址线根数与容量为2的幂的关系,在此为214,14根;
        :32=25,5根)´数据线根数与字长位数相等,在此为32根。(不是2的幂的关系。
    9. 什么叫刷新?为什么要刷新?说明刷新有几种方法。
        解:刷新——对DRAM定期进行的全部重写过程;
        刷新原因——因电容泄漏而引起的DRAM所存信息的衰减需要及时补充,因此安排了定期刷新操作;
        常用的刷新方法有三种——集中式、分散式、异步式。
        集中式:在最大刷新间隔时间内,集中安排一段时间进行刷新;
        分散式:在每个读/写周期之后插入一个刷新周期,无CPU访存死时间;
        异步式:是集中式和分散式的折衷。
    讨论:
      1、刷新与再生的比较:
          共同点:
        •动作机制一样。都是利用DRAM存储元破坏性读操作时的重写过程实现;
        •操作性质一样。都是属于重写操作。
    区别:
        •解决的问题不一样。再生主要解决DRAM存储元破坏性读出时的信息重写问题;刷新主要解决长时间不访存时的信息衰减问题。
        •操作的时间不一样。再生紧跟在读操作之后,时间上是随机进行的;刷新以最大间隔时间为周期定时重复进行。
        •动作单位不一样。再生以存储单元为单位,每次仅重写刚被读出的一个字的所有位;刷新以行为单位,每次重写整个存储器所有芯片内部存储矩阵的同一行。
        •芯片内部I/O操作不一样。读出再生时芯片数据引脚上有读出数据输出;刷新时由于CAS信号无效,芯片数据引脚上无读出数据输出(唯RAS有效刷新,内部读)。鉴于上述区别,为避免两种操作混淆,分别叫做再生和刷新。
        2、CPU访存周期与存取周期的区别:
        CPU访存周期是从CPU一边看到的存储器工作周期,他不一定是真正的存储器工作周期;存取周期是存储器速度指标之一,它反映了存储器真正的工作周期时间。
          3、分散刷新是在读写周期之后插入一个刷新周期,而不是在读写周期内插入一个刷新周期,但此时读写周期和刷新周期合起来构成CPU访存周期。
        4、刷新定时方式有3种而不是2种,一定不要忘了最重要、性能最好的异步刷新方式。
    10. 半导体存储器芯片的译码驱动方式有几种?
        解:半导体存储器芯片的译码驱动方式有两种:线选法和重合法。
        线选法:地址译码信号只选中同一个字的所有位,结构简单,费器材;
        重合法:地址分行、列两部分译码,行、列译码线的交叉点即为所选单元。这种方法通过行、列译码信号的重合来选址,也称矩阵译码。可大大节省器材用量,是最常用的译码驱动方式。
    11. 画出用1024×4位的存储芯片组成一个容量为64K×8位的存储器逻辑框图。要求将64K分成4个页面,每个页面分16组,指出共需多少片存储芯片。
        解:设采用SRAM芯片,
        总片数 = 64K×8位 / 1024×4位
                  = 64×2 = 128片
        题意分析:本题设计的存储器结构上分为总体、页面、组三级,因此画图时也应分三级画。首先应确定各级的容量:
        页面容量 = 总容量 / 页面数
                    = 64K×8位 / 4
                    = 16K×8位;
        组容量 = 页面容量 / 组数
                  = 16K×8位 / 16 = 1K×8位;
        组内片数 = 组容量 / 片容量
                    = 1K×8位 / 1K×4位 = 2片;
    地址分配:
        页面逻辑框图:(字扩展)
        存储器逻辑框图:(字扩展)
    讨论:
     页选地址取A11、A10,页内片选取A15~A12;´ 
        (页内组地址不连贯? )
       不分级画;问题:´
    1、不合题意;
    2、芯片太多难画;
    3、无页译码,6:64译码选组。
    ´   页选直接联到芯片;问题:
    1、SRAM一般只一个片选端;
    2、译码输出负载能力需考虑。
     附加门电路组合2级译码信号;´  
        (应利用译码器使能端输入高一级的译码选通信号)
     不设组选,页选同时选8组(16组),并行存取?´ 
     组译码无页选输入;´ 
    ´   2片芯片合为一体画;
     文字叙述代替画图;´ 
     地址线、数据线不标信号名及信号序号。´ 
    12. 设有一个64K×8位的RAM芯片,试问该芯片共有多少个基本单元电路(简称存储基元)?欲设计一种具有上述同样多存储基元的芯片,要求对芯片字长的选择应满足地址线和数据线的总和为最小,试确定这种芯片的地址线和数据线,并说明有几种解答。
        解:
    存储基元总数 = 64K×8位
                    = 512K位 = 219位;
        思路:如要满足地址线和数据线总和最小,应尽量把存储元安排在字向,因为地址位数和字数成2的幂的关系,可较好地压缩线数。
        设地址线根数为a,数据线根数为b,则片容量为:2a×b = 219;b = 219-a;
    若a = 19,b = 1,总和 = 19+1 = 20;
      a = 18,b = 2,总和 = 18+2 = 20;
      a = 17,b = 4,总和 = 17+4 = 21;
      a = 16,b = 8,总和 = 16+8 = 24;
          ……     ……
        由上可看出:片字数越少,片字长越长,引脚数越多。片字数、片位数均按2的幂变化。
        结论:如果满足地址线和数据线的总和为最小,这种芯片的引脚分配方案有两种:地址线 = 19根,数据线 = 1根;或地址线 = 18根,数据线 = 2根。
       采用字、位扩展技术设计;´   
    13. 某8位微型机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:
        (1)该机所允许的最大主存空间是多少?
        (2)若每个模块板为32K×8位,共需几个模块板?
        (3)每个模块板内共有几片RAM芯片?
        (4)共有多少片RAM?
        (5)CPU如何选择各模块板?
        解:
      (1)218 = 256K,则该机所允许的最大主存空间是256K×8位(或256KB);
      (2)模块板总数 = 256K×8 / 32K×8
                          = 8块;
      (3)板内片数 = 32K×8位 / 4K×4位
                        = 8×2 = 16片;
      (4)总片数 = 16片×8 = 128片;
      (5)CPU通过最高3位地址译码选板,次高3位地址译码选片。地址格式分配如下:
    讨论:
     不对板译码、片译码分配具体地址位;´ 
    ´   板内片选设4位地址;
     不设板选,8个板同时工作,总线分时传送;´ 
    8位芯片;´ 8板通过3:8译码器组成256K´ 
    14. 设CPU共有16根地址线,8根数据线,并用-MREQ(低电平有效)作访存控制信号,R/-W作读写命令信号(高电平为读,低电平为写)。现有下列存储芯片:
    ROM(2K×8位,4K×4位,8K×8位),RAM(1K×4位,2K×8位,4K×8位),及74138译码器和其他门电路(门电路自定)。试从上述规格中选用合适芯片,画出CPU和存储芯片的连接图。要求:
        (1)最小4K地址为系统程序区,4096~16383地址范围为用户程序区;
        (2)指出选用的存储芯片类型及数量;
        (3)详细画出片选逻辑。
        解:
        (1)地址空间分配图:
        (2)选片:ROM:4K×4位:2片;
                      RAM:4K×8位:3片;
        (3)CPU和存储器连接逻辑图及片选逻辑:
    讨论:
      1)选片:当采用字扩展和位扩展所用芯片一样多时,选位扩展。
      理由:字扩展需设计片选译码,较麻烦,而位扩展只需将数据线按位引出即可。
      本题如选用2K×8 ROM,片选要采用二级译码,实现较麻烦。
      当需要RAM、ROM等多种芯片混用时,应尽量选容量等外特性较为一致的芯片,以便于简化连线。
      2)应尽可能的避免使用二级译码,以使设计简练。但要注意在需要二级译码时如果不使用,会使选片产生二义性。
      3)片选译码器的各输出所选的存储区域是一样大的,因此所选芯片的字容量应一致,如不一致时就要考虑二级译码。另外如把片选译码输出“或”起来使用也是不合理的。
      4)其它常见错误:
     138的C输入端接地;(相当于把138当2-4译码器用,不合理)´
    ´ EPROM的PD端接地;
    (PD为功率下降控制端,当输入为高时,进入功率下降状态。因此PD端的合理接法是与片选端-CS并联。)
    ´ ROM连读/写控制线-WE;
    (ROM无读/写控制端)
    15. CPU假设同上题,现有8片8K×8位的RAM芯片与CPU相连,试回答:
        (1)用74138译码器画出CPU与存储芯片的连接图;
        (2)写出每片RAM的地址范围;
        (3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片都有与其相同的数据,分析故障原因。
        (4)根据(1)的连接图,若出现地址线A13与CPU断线,并搭接到高电平上,将出现什么后果?
        解:
      (1)CPU与存储器芯片连接逻辑图:
        (2)地址空间分配图:
        (3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(第5片)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。可能的情况有:
    1)该片的-CS端与-WE端错连或短路;
    2)该片的-CS端与CPU的-MREQ端错连或短路;
    3)该片的-CS端与地线错连或短路;
        在此,假设芯片与译码器本身都是好的。
        (4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。
    17. 某机字长16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。
        解:若想不改用高速存储芯片,而使访存速度提高到8倍,可采取多体交叉存取技术,图示如下:
    8体交叉访问时序:
    18. 什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理?
        解:程序运行的局部性原理指:在一小段时间内,最近被访问过的程序和数据很可能再次被访问;在空间上,这些被访问的程序和数据往往集中在一小片存储区;在访问顺序上,指令顺序执行比转移执行的可能性大 (大约 5:1 )。存储系统中Cache—主存层次采用了程序访问的局部性原理。
    20. Cache做在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处?
        答:Cache做在CPU芯片内主要有下面几个好处:
      1)可提高外部总线的利用率。因为Cache在CPU芯片内,CPU访问Cache时不必占用外部总线;
      2)Cache不占用外部总线就意味着外部总线可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率;
      3)可提高存取速度。因为Cache与CPU之间的数据通路大大缩短,故存取速度得以提高;
        将指令Cache和数据Cache分开有如下好处:
      1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成;
      2)指令Cache可用ROM实现,以提高指令存取的可靠性;
      3)数据Cache对不同数据类型的支持更为灵活,既可支持整数(例32位),也可支持浮点数据(如64位)。
        补充讨论:
        Cache结构改进的第三个措施是分级实现,如二级缓存结构,即在片内Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度(主存—L2—L1)。
    21. 设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映象(即Cache每组内共有4个字块)的Cache组织,要求:
    (1)画出主存地址字段中各段的位数;
    (2)设Cache的初态为空,CPU依次从主存第0、1、2……99号单元读出100个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?
    (3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度提高多少倍?
      答:
    (1)由于容量是按字节表示的,则主存地址字段格式划分如下:
        8           7           2           3         2
    (2)由于题意中给出的字地址是连续的,故(1)中地址格式的最低2位不参加字的读出操作。当主存读0号字单元时,将主存0号字块(0~7)调入Cache(0组x号块),主存读8号字单元时,将1号块(8~15)调入Cache(1组x号块)…… 主存读96号单元时,将12号块(96~103)调入Cache(12组x号块)。
    »    共需调100/8  13次,就把主存中的100个数调入Cache。除读第1遍时CPU需访问主存13次外,以后重复读时不需再访问主存。则在800个读操作中:
      访Cache次数=(100-13)+700=787次
    » 0.98 »  Cache命中率=787/800  98%
    (3)设无Cache时访主存需时800T(T为主存周期),加入Cache后需时:
          (131.167+13)T»T/6+13T´787
    144.167T»                     
      5.55倍»则:800T/144.167T
        有Cache和无Cache相比,速度提高4.55倍左右。
    23. 画出RZ、NRZ、NRZ1、PE、FM写入数字串1011001的写入电流波形图。
        解:
    24. 以写入1001 0110为例,比较调频制和改进调频制的写电流波形图。
        解:写电流波形图如下:
        比较:
        1)FM和MFM写电流在位周期中心处的变化规则相同;
        2)MFM制除连续一串“0”时两个0周期交界处电流仍变化外,基本取消了位周期起始处的电流变化;
        3)FM制记录一位二进制代码最多两次磁翻转,MFM制记录一位二进制代码最多一次磁翻转,因此MFM制的记录密度可提高一倍。上图中示出了在MFM制时位周期时间缩短一倍的情况。由图可知,当MFM制记录密度提高一倍时,其写电流频率与FM制的写电流频率相当;
          4)由于MFM制并不是每个位周期都有电流变化,故自同步脉冲的分离需依据相邻两个位周期的读出信息产生,自同步技术比FM制复杂得多。
       
    25. 画出调相制记录01100010的驱动电流、记录磁通、感应电势、同步脉冲及读出代码等几种波形。
        解:
    注意:
      1)画波形图时应严格对准各种信号的时间关系。
      2)读出感应信号不是方波而是与磁翻转边沿对应的尖脉冲;
      3)同步脉冲的出现时间应能“包裹”要选的读出感应信号,才能保证选通有效的读出数据信号,并屏蔽掉无用的感应信号。
      4)最后读出的数据代码应与写入代码一致。
    26. 磁盘组有六片磁盘,每片有两个记录面,存储区域内径22厘米,外径33厘米,道密度为40道/厘米,内层密度为400位/厘米,转速2400转/分,问:
        (1)共有多少存储面可用?
        (2)共有多少柱面?
        (3)盘组总存储容量是多少?
        (4)数据传输率是多少?
        解:
        (1)若去掉两个保护面,则共有:
    6 × 2 - 2 = 10个存储面可用;
        (2)有效存储区域
            =(33-22)/ 2 = 5.5cm
            柱面数 = 40道/cm × 5.5= 220道
    =p    (3)内层道周长=22 69.08cm
                道容量=400位/cm×69.08cm
              = 3454B
                面容量=3454B × 220道
              = 759,880B
            盘组总容量 = 759,880B × 10面
                          = 7,598,800B
    (4)转速 = 2400转 / 60秒
              = 40转/秒
          数据传输率 = 3454B × 40转/秒
                            = 138,160 B/S
    注意:
    1)计算盘组容量时一般应去掉上、下保护面;
    的精度选取不同将引起答案不同,一般取两位小数;p2)
    盘组总磁道数(=一个盘面上的磁道数)¹3)柱面数
    4)数据传输率与盘面数无关;
    5)数据传输率的单位时间是秒,不是分。
    27. 某磁盘存储器转速为3000转/分,共有4个记录盘面,每毫米5道,每道记录信息12 288字节,最小磁道直径为230mm,共有275道,求:
        (1)磁盘存储器的存储容量;
        (2)最高位密度(最小磁道的位密度)和最低位密度;
        (3)磁盘数据传输率;
        (4)平均等待时间。
    解:
      (1)存储容量 = 275道×12 288B/道×4面 = 13 516 800B
      (2)最高位密度 = p12 288B/230
    = 17B/mm = 136位/mm(向下取整)
        最大磁道直径
      =230mm+275道/5道 ×2
      = 230mm + 110mm = 340mm
    p    最低位密度 = 12 288B / 340
    = 11B/mm = 92位 / mm (向下取整)
      (3)磁盘数据传输率
            = 12 288B × 3000转/分
            =12 288B × 50转/秒=614 400B/S
      (4)平均等待时间 = 1/50 / 2 = 10ms
    讨论:
      1、本题给出的道容量单位为字节,
    因此算出的存储容量单位也是字节,而不是位;
      2、由此算出的位密度单位最终应转换成bpm(位/毫米);
      3、平均等待时间是磁盘转半圈的时间,与容量无关。
    第 五 章
    1. I/O有哪些编址方式?各有何特点?
        解:常用的I/O编址方式有两种: I/O与内存统一编址和I/O独立编址;
        特点: I/O与内存统一编址方式的I/O地址采用与主存单元地址完全一样的格式,I/O设备和主存占用同一个地址空间,CPU可像访问主存一样访问I/O设备,不需要安排专门的I/O指令。
        I/O独立编址方式时机器为I/O设备专门安排一套完全不同于主存地址格式的地址编码,此时I/O地址与主存地址是两个独立的空间,CPU需要通过专门的I/O指令来访问I/O地址空间。
    讨论:I/O编址方式的意义:
        I/O编址方式的选择主要影响到指令系统设计时I/O指令的安排,因此描述其特点时一定要说明此种I/O编址方式对应的I/O指令设置情况。
    ´   I/O与内存统一编址方式将I/O地址看成是存储地址的一部分,占用主存空间;
        问题:确切地讲, I/O与内存统一编址的空间为总线空间,I/O所占用的是内存的扩展空间。
     I/O独立编址方式有明显的I/O地址标识,´   而I/O与内存统一的编址方式没有;
        问题:无论哪种编址方式,I/O地址都是由相应的指令提供的,而地址本身并没有特殊的标识。
    2. 简要说明CPU与I/O之间传递信息可采用哪几种联络方式?它们分别用于什么场合?
        答: CPU与I/O之间传递信息常采用三种联络方式:直接控制(立即响应)、 同步、异步。 适用场合分别为:
        直接控制适用于结构极简单、速度极慢的I/O设备,CPU直接控制外设处于某种状态而无须联络信号。
        同步方式采用统一的时标进行联络,适用于CPU与I/O速度差不大,近距离传送的场合。
        异步方式采用应答机制进行联络,适用于CPU与I/O速度差较大、远距离传送的场合。
    讨论:注意I/O交换方式、I/O传送分类方式与I/O联络方式的区别:
        串行、并行I/O传送方式常用于描述I/O传送宽度的类型;
          I/O交换方式主要讨论传送过程的控制方法;
          I/O联络方式主要解决传送时CPU与I/O之间如何取得通信联系以建立起操作上的同步配合关系。
    ´   同步方式适用于CPU与I/O工作速度完全同步的场合。
        问题: I/O 要达到与CPU工作速度完全同步一般是不可能的。同步方式的实质是“就慢不就快”,如采用同步方式一般CPU达不到满负荷工作。
    6. 字符显示器的接口电路中配有缓冲存储器和只读存储器,各有何作用?
        解:显示缓冲存储器的作用是支持屏幕扫描时的反复刷新;只读存储器作为字符发生器使用,他起着将字符的ASCII码转换为字形点阵信息的作用。
    8. 某计算机的I/O设备采用异步串行传送方式传送字符信息。字符信息的格式为一位起始位、七位数据位、一位校验位和一位停止位。若要求每秒钟传送480个字符,那么该设备的数据传送速率为多少?
        解:480×10=4800位/秒=4800波特;
        波特——是数据传送速率波特率的单位。
      注:题意中给出的是字符传送速率,即:字符/秒。要求的是数据传送速率,串行传送时一般用波特率表示。
      两者的区别:字符传送率是数据的“纯”有效传送率,不含数据格式信息;波特率是“毛”传送率,含数据格式信息。
    10. 什么是I/O接口?为什么要设置I/O接口?I/O接口如何分类?
        解: I/O接口一般指CPU和I/O设备间的连接部件; I/O接口分类方法很多,主要有:
        按数据传送方式分有并行接口和     串行接口两种;
        按数据传送的控制方式分有程序控制接口、程序中断接口、DMA接口三种。
    12. 结合程序查询方式的接口电路,说明其工作过程。
        解:程序查询接口工作过程如下(以输入为例):
    开命令接收门;®选中,发SEL信号®设备选择器译码®接口®地址总线®    1)CPU发I/O地址
      设备开始工作;®接口向设备发启动命令® D置0,B置1 ®  2)CPU发启动命令
     DBR;®    3)CPU等待,输入设备读出数据
         B置0,D置1;®接口®4)外设工作完成,完成信号
     CPU;®控制总线®    5)准备就绪信号
        6)输入:CPU通过输入指令(IN)将DBR中的数据取走;
        若为输出,除数据传送方向相反以外,其他操作与输入类似。工作过程如下:
        开命令接收门;®选中,发SEL信号®设备选择器译码®接口®地址总线®1)CPU发I/O地址
        2)输出: CPU通过输出指令(OUT)将数据放入接口DBR中;
    设备开始工作;®接口向设备发启动命令® D置0,B置1 ®    3)CPU发启动命令
        4)CPU等待,输出设备将数据从 DBR取走;
     B置0,D置1;®接口®    5)外设工作完成,完成信号
         CPU,CPU可通过指令再次向接口DBR输出数据,进行第二次传送。®控制总线®6)准备就绪信号
    13. 说明中断向量地址和入口地址的区别和联系。
        解:
        中断向量地址和入口地址的区别:
        向量地址是硬件电路(向量编码器)产生的中断源的内存地址编号,中断入口地址是中断服务程序首址。
        中断向量地址和入口地址的联系:
        中断向量地址可理解为中断服务程序入口地址指示器(入口地址的地址),通过它访存可获得中断服务程序入口地址。 (两种方法:在向量地址所指单元内放一条JUM指令;主存中设向量地址表。参考8.4.3)
    讨论:
      硬件向量法的实质:
      当响应中断时,为了更快、更可靠的进入对应的中断服务程序执行,希望由硬件直接提供中断服务程序入口地址。但在内存地址字较长时这是不可能的。因此由硬件先提供中断源编号、再由编号间接地获得中断服务程序入口地址。这种中断源的编号即向量地址。
      由于一台计算机系统可带的中断源数量很有限,因此向量地址比内存地址短得多,用编码器类逻辑部件实现很方便。
    14. 在什么条件下,I/O设备可以向CPU提出中断请求?
        解:I/O设备向CPU提出中断请求的条件是:I/O接口中的设备工作完成状态为1(D=1),中断屏蔽码为0 (MASK=0),且CPU查询中断时,中断请求触发器状态为1(INTR=1)。
    15. 什么是中断允许触发器?它有何作用?
        解:中断允许触发器是CPU中断系统中的一个部件,他起着开关中断的作用(即中断总开关,则中断屏蔽触发器可视为中断的分开关)。
    16. 在什么条件和什么时间,CPU可以响应I/O的中断请求?
        解:CPU响应I/O中断请求的条件和时间是:当中断允许状态为1(EINT=1),且至少有一个中断请求被查到,则在一条指令执行完时,响应中断。
    17. 某系统对输入数据进行取样处理,每抽取一个输入数据,CPU就要中断处理一次,将取样的数据存至存储器的缓冲区中,该中断处理需P秒。此外,缓冲区内每存储N个数据,主程序就要将其取出进行处理,这个处理需Q秒。试问该系统可以跟踪到每秒多少次中断请求?
        解:这是一道求中断饱和度的题,要注意主程序对数据的处理不是中断处理,因此Q秒不能算在中断次数内。
      N个数据所需的处理时间=P×N+Q秒
      平均每个数据所需处理时间= (P×N+Q) /N秒;
      求倒数得:
      该系统跟踪到的每秒中断请求数=N/(P×N+Q)次。
    19. 在程序中断方式中,磁盘申请中断的优先权高于打印机。当打印机正在进行打印时,磁盘申请中断请求。试问是否要将打印机输出停下来,等磁盘操作结束后,打印机输出才能继续进行?为什么?
        解:这是一道多重中断的题,由于磁盘中断的优先权高于打印机,因此应将打印机输出停下来,等磁盘操作结束后,打印机输出才能继续进行。因为打印机的速度比磁盘输入输出的速度慢,并且暂停打印不会造成数据丢失。
    讨论:
    ´ 打印机不停,理由有如下几种:
     打印内容已存入打印机缓存;´ 
        问题:1)如果打印机无缓存呢?
            2)如果打印机有缓存,还需要用程序中断方式交换吗?(应用DMA)
     由于在指令执行末查中断,因此执行打印指令时不会响应磁盘中断。´ 
        问题:打印中断处理程序=打印指令?
     采用字节交叉传送方式,当两者同时请求中断时,先响应盘,再响应打印机,交叉服务。´ 
        问题:这是程序中断方式吗?
     由于打印机速度比CPU慢得多,CPU将数据发送给打印机后,就去为磁盘服务,而这时打印机可自己慢慢打印。´ 
        问题:停止打印机传送=停止打印机动作?
     我有打印机,感觉上打印机工作是连贯的;´ 
        问题:人的感觉速度=计算机工作速度?
    22. CPU对DMA请求和中断请求的响应时间是否一样?为什么?
          解: CPU对DMA请求和中断请求的响应时间不一样,因为两种方式的交换速度相差很大,因此CPU必须以更短的时间间隔查询并响应DMA请求(一个存取周期末)。
    讨论:
       CPU对DMA的响应是即时的;´ 
          随时都能响应?
     CPU响应DMA的时间更短;´   
    ´     DMA比中断速度高;
          短、高或不一样的具体程度?
    ´ 不一样。因为DMA与CPU共享主存,会出现两者争用主存的冲突,CPU必须将总线让给DMA接口使用,常用停止CPU访存、周期窃取及DMA与CPU交替访存三种方式有效的分时使用主存;
        这种情况仅仅存在于DMA与中断程序之间吗?答非所问。    
    24. DMA的工作方式中,CPU暂停方式和周期挪用方式的数据传送流程有何不同?画图说明。
        解:两种DMA方式的工作流程见下页,其主要区别在于传送阶段,现行程序是否完全停止访存。
    停止CPU访存方式的DMA工作流程如下:
    现行程序             CPU             DMAC             I/O
          CPU                     DMAC                     I/O
              B                               C                               D
    周期窃取方式的DMA工作流程如下:
    现行程序             CPU             DMAC             I/O
          CPU                     DMAC                     I/O
            B                               C                               D
    25. s,试问该外设是否可用程序中断方式与主机交换信息,为什么?m假设某设备向CPU传送信息的最高频率是40K次/秒,而相应的中断处理程序其执行时间为40
      sm  解:该设备向CPU传送信息的时间间隔 =1/40K=0.025×103=25 < sm40
        则:该外设不能用程序中断方式与主机交换信息,因为其中断处理程序的执行速度比该外设的交换速度慢。
    讨论:
      s)比较接近,传送过程会频繁的打断CPU执行主程序,而执行中断服务程序,因此不能用程序中断方式……。ms)与中断处理时间(40m×I/O传送(25
      错:此时CPU还有可能执行主程序吗?
    举例说明: (输入)
        假设初始CPU空闲,则当I/O将第一个数据放在接口的数据缓冲寄存器中后,向CPU发第一个中断请求,CPU立即响应;
        I/O设备匀速运行, s时响应;ms后,第二个中断请求到来,CPU正在执行中断程序接收第一个数据, 40m25
        s时响应;ms后,第三个中断请求到来,CPU正在执行中断程序接收第二个数据,要到80m50
        s后,第四个中断请求到来,但此时第三个中断请求还没有响应,则放在数据缓冲寄存器中的第三个数据来不及接收,被第四个数据冲掉;m75
        讨论:
      s,CPU大部分时间处于“踏步等待”状态;m 交换一次用时25+40=65´ 
    sm        错1:25 I/O传送间隔主要指设备准备数据的时间(输入),这段时间设备与CPU并行工作。
            错2:程序中断不存在踏步等待。
    ´       10-6=1´40´40K.6秒,时间过长,用程序中断不划算;
    中断处理程序执行时间=?´        错1:设备传送频率
            错2:越慢速的设备越适合用中断。
     若外设与CPU之间有足够大的缓冲区,则可以用程序中断方式;´     
            如果安排足够大的缓冲区,为何不用DMA方式?
        讨论(续):
     两者速度相差较小没有必要用中断。´   
    26. s,是否可采用一条指令执行结束时响应DMA请求的方案,为什么?若不行,应采取什么方案?m设磁盘存储器转速为3000转/分,分8个扇区,每扇区存储1K字节,主存与磁盘存储器数据传送的宽度为16位(即每次传送16位)。假设一条指令最长执行时间是25
        解:先算出磁盘传送速度,然后和指令执行速度进行比较得出结论。
    16¸16 =1K ×8 ×8 ¸道容量=1KB×8
            =1K ×4=4K字
    数传率=4K字×3000转/分
            =4K字×50转/秒 =200K字/秒
    sm5»一个字的传送时间=1/200K字/秒
      注:在此1K=1024,来自数据块单位缩写。
    5 sm<<25 s,所以不能采用一条指令执行结束响应DMA请求的方案,应采取每个CPU机器周期末查询及响应DMA请求的方案(通常安排CPU机器周期=MM存取周期)。m
        讨论:
        扇面、扇段和扇区:扇面指磁盘分区后形成的扇形区域;扇段指扇面上一个磁道所对应的弧形区域;扇区通常用来泛指扇面或扇段。由于磁盘是沿柱面存取而不是沿扇面存取,因此习惯上扇区即指扇段,不用特别说明也不会引起误会。
        问题:是否磁盘转一圈读完所有扇区上的磁道?
        答:应为:磁盘转一圈读完一个磁道上的所有扇区,然后转到下一盘面的同一位置磁道接着读(如果文件未读完的话)。
    ´     s,CPU工作周期大于主存周期,应采用DMA与CPU交替访存;ms,CPU执行指令20ms内主存占用5m不行,在25
          s;m错1:题意为CPU执行指令25
    指令周期;¹      错2:CPU工作周期=内存周期(同步控制)而
    ´         不行,传送间隔=20ms,远大于指令执行周期,应在DMA接口设一小容量存储器,可减少DMA传送占用总线时间;
        对于想采用DMA的慢速设备(像打印机等),可采用此法,对于磁盘不需要。另外,占用总线时间较长的DMA传送为停止CPU访存DMA,如采用周期窃取方式的DMA,每次传送只占一个主存周期时间。
    27. 试从下面七个方面比较程序查询、程序中断和DMA三种方式的综合性能。
        (1)数据传送依赖软件还是硬件;
        (2)传送数据的基本单位;
        (3)并行性;
        (4)主动性;
        (5)传输速度;
        (6)经济性;
        (7)应用对象。
        解:比较如下:
        (1)程序查询、程序中断方式的数据传送主要依赖软件,DMA主要依赖硬件。 (注意:这里指主要的趋势)
        (2)程序查询、程序中断传送数据的基本单位为字或字节,DMA为数据块。
        (3)程序查询方式传送时,CPU与I/O设备串行工作;
        程序中断方式时,CPU与I/O设备并行工作,现行程序与I/O传送串行进行;
        DMA方式时,CPU与I/O设备并行工作,现行程序与I/O传送并行进行。
        (4)程序查询方式时,CPU主动查询I/O设备状态;
        程序中断及DMA方式时,CPU被动接受I/O中断请求或DMA请求。
        (5)程序中断方式由于软件额外开销时间比较大,因此传输速度最慢;
        程序查询方式软件额外开销时间基本没有,因此传输速度比中断快;
        DMA方式基本由硬件实现传送,因此速度最快;
    注意:程序中断方式虽然CPU运行效率比程序查询高,但传输速度却比程序查询慢。
          (6)程序查询接口硬件结构最简单,因此最经济;
        程序中断接口硬件结构稍微复杂一些,因此较经济;
        DMA控制器硬件结构最复杂,因此成本最高;
        (7)程序中断方式适用于中、低速设备的I/O交换;
        程序查询方式适用于中、低速实时处理过程;
        DMA方式适用于高速设备的I/O交换;
        讨论:
        问题1:这里的传送速度指I/O设备与主存间,还是I/O与CPU之间?
        答:视具体传送方式而定,程序查询、程序中断为I/O与CPU之间交换,DMA为I/O与主存间交换。
        问题2:主动性应以CPU的操作方式看,而不是以I/O的操作方式看。
     程序查询方式:以缓冲器容量(块、二进制数字)为单位传送;´   
    ´     程序中断方式:以向量地址中的数据(二进制编码)为单位传送;
     DMA:传送单位根据数据线的根数而定;´   
    30. 什么是多重中断?实现多重中断的必要条件是什么?
        解:多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行的过程。
        实现多重中断的必要条件是:在现行中断服务期间,中断允许触发器为1,即开中断。
        补充题:
        一、某CRT显示器可显示64种ASCII字符,每帧可显示72字×24排;每个字符字形采用7×8点阵,即横向7点,字间间隔1点,纵向8点,排间间隔6点;帧频50Hz,采取逐行扫描方式。假设不考虑屏幕四边的失真问题,且行回扫和帧回扫均占扫描时间的20%,问:
        1)显存容量至少有多大?
        2)字符发生器(ROM)容量至少有多大?
        3)显存中存放的是那种信息?
        4)显存地址与屏幕显示位置如何对应?
        5)设置哪些计数器以控制显存访问与屏幕扫描之间的同步?它们的模各是多少?
        6)点时钟频率为多少?
    解:1)显存最小容量=72×24×8 =1728B
        2)ROM最小容量=64×8行×8列
                = 512B(含字间隔1点)
        3)显存中存放的是ASCII码信息。  
        4)显存每个地址对应一个字符显示位置,显示位置自左至右,从上到下,分别对应缓存地址由低到高。
        5)设置点计数器、字计数器、行计数器、排计数器控制显存访问与屏幕扫描之间的同步。
        它们的模计算如下:
        点计数器模 = 7+1 = 8
        行计数器模 = 8 + 6 = 14
        字、排计数器的模不仅与扫描正程时间有关,而且与扫描逆程时间有关,因此计算较为复杂。
            列方程: (72+x)× 0.8 = 72
                      (24+y)× 0.8 = 24
            解方程得:x = 18,y = 6,则:
        字计数器模 = 72 + 18 = 90
        排计数器模 = 24 + 6 = 30
        6)点频 = 50Hz × 30排 × 14行 × 90字 × 8点   = 15 120 000Hz
                  = 15.12MHz
    讨论:
      1、VRAM、ROM容量应以字或字节为单位,不能以位为单位;
      2、字模点阵在ROM中按行存放,一行占一个存储单元;
      3、显存中存放的是ASCII码而不是像素点;
      4、计算计数器的模及点频时应考虑回扫时间。
        二、有一编码键盘,其键阵列为8行×16列,分别对应128种ASCII码字符,采用硬件扫描方式确认按键信号,问:
        1)扫描计数器应为多少位?
        2)ROM容量为多大?
        3)若行、列号均从0开始编排,则当第5行第7列的键表示字母“F”时,CPU从键盘读入的二进制编码应为多少(设采用奇校验) ?
        4)参考教材图5.15,画出该键盘的原理性逻辑框图;
        5)如果不考虑校验技术,此时ROM是否可省?
        解:1)扫描计数器 = 7位
                        (与键的个数有关)
        2)ROM容量 = 128 × 8 = 128B
                      (与字符集大小有关)
        3)CPU从键盘读入的应为字符“F”的ASCII码 = 01000110 (46H) ,其中最高位为奇校验位(注:不是位置码) 。
      4)该键盘的原理性逻辑框图见下页,与教材图5.15类似,主要需标明参数。
        5)如果不考虑校验技术,并按ASCII码位序设计键阵列(注意) ,则ROM编码表可省,此时7位计数器输出值(扫描码或键位置码)即为ASCII码。
    该键盘的原理性逻辑框图如下:
    三、一针式打印机采用7列×9行点阵打印字符,每行可打印132个字符,共有96种可打印字符,用带偶校验位的ASCII码表示。问:
        1)打印缓存容量至少有多大?
        2)字符发生器容量至少有多大?
        3)列计数器应有多少位?
        4)缓存地址计数器应有多少位?
        解:
        1)打印缓存最小容量 = 132×8
                                  = 132B
                          (考虑偶校验位)
        2)ROM最小容量 = 96×7列×9行
                              = 672×9位
        3)列计数器 = 3位
                  (7列向上取2的幂)
        4)缓存地址计数器 = 8位
                  (132向上取2的幂)
    讨论:
      1、由于针打是按列打印,所以ROM一个存储单元中存一列的9个点,则容量为672×9位;
      2、列计数器是对列号进行计数,所以模=7,3位(模不等于位数);
      3、同样缓存地址计数器模=132,8位。
    第   六   章
    2. 已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。    
    (1)X >  1/8;  ³1/2;    
    (2)X   X³ 
    (3)1/4  > 1/16    
    解: (1)若要X > 1/2,只要a1=1,a2~a6不全为0即可(a2 or a3 or a4  1/8,只要a1~a3不全为0即可(a1 or a2 or a3 =1),³or a5 or a6 = 1);     (2)若要X  a4~a6可任取0或1;
     X³(3)若要1/4  > 1/16,只要a1=0,a2可任取0或1;     当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5 or a6=1;若a3=1,则a4~a6可任取0或1;     当a2=1时, a3~a6可任取0或1。    
    3. 设x为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值?    
    解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。)
    4. 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。         -13/64,29/128,100,-87    
    解:真值与不同机器码对应关系如下:
    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的对应关系如下:
    6. 0,则³设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,[x]补=[x]原成立。    
    解:     当x为小数时,若x          [x]补=[x]原成立;         若x < 0,则当x= -1/2时,           [x]补=[x]原成立。      0,则         [x]补=[x]原成立;         若x³当x为整数时,若x  < 0,则当x= -64时,           [x]补=[x]原成立。
    7. 设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。    
    解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。 [-x*]补=[-x]补的结论只在x>0时成立。当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补不等于[-x]补。    
    8. 讨论若[x]补>[y]补,是否有x>y?    
    解:若[x]补>[y]补,不一定有x>y。 [x]补 > [y]补时 x > y的结论只在 x > 0、y > 0,及 x<0、y<0时成立。当x>0、 y<0时,有x>y,但由于负数补码的符号位为1,则[x]补<[y]补。同样,当x<0、 y >0时,有x < y,但[x]补>[y]补。
    注意: 1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此, 当x<0、y<0时,若[x]补>[y]补,必有x>y。 2)补码的符号位和数值位为一体,不可分开分析。 3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。 4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。 5)不考虑不同数字系统间的比较。(如有人分析x、y字长不等时的情况,无意义。)      
    9. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)?    
    解:真值和机器数的对应关系如下:
    10. 在整数定点机中,设机器数采用一位符号位,写出±0的原码、补码、反码和移码,得出什么结论?    
    解:0的机器数形式如下:
    解:机器数与对应的真值形式如下:
    续表1:
    续表2:
    续表3:
    12. 设浮点数格式为:阶符1位、阶码4位、数符1位、尾数10位。写出51/128、-27/1024、7.375、-86.5所对应的机器数。要求按规格化形式写出:     (1)阶码和尾数均为原码;     (2)阶码和尾数均为补码;     (3)阶码为移码,尾数为补码。    
    解:据题意画出该浮点数的格式:   1         4       1               10
        将十进制数转换为二进制:     x1=51/128=(0.011 001 (0.110 011)2     x2= -27/1024=(-0.000 001 101 1)2         =2-5´1)2         =2-1  (0.111 011)2     x4=´(-0.110 11)2     x3=7.375=(111.011)2         =23 ´ (-0.101 011 01)2     则以上各数的浮点规格化数为:´-86.5=(-1 010 110.1)2         =27  (1)[x1]浮=1,0001;0.110 011 000 0 (2)[x1]浮=1,1111;0.110 011 000 0 (3)[x1]浮=0,1111;0.110 011 000 0
    (1)[x2]浮=1,0101;1.110 110 000 0 (2)[x2]浮=1,1011;1.001 010 000 0 (3)[x2]浮=0,1011;1.001 010 000 0 (1)[x3]浮=0,0011;0.111 011 000 0 (2)[x3]浮=0,0011;0.111 011 000 0 (3)[x3]浮=1,0011;0.111 011 000 0 (1)[x4]浮=0,0111;1.101 011 010 0 (2)[x4]浮=0,0111;1.010 100 110 0 (3)[x4]浮=1,0111;1.010 100 110 0 注:以上浮点数也可采用如下格式:   1       1         4                 10
    13. 浮点数格式同上题,当阶码基值分别取2和16时,     (1)说明2和16在浮点数中如何表示。     (2)基值不同对浮点数什么有影响?     (3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。    
    解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。
        (2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但精度越下降。     (3)r=2时,最大正数的浮点格式为:           0,1111;0.111 111 111 1           其真值为:N+max=215×(1-2-10)           非零最小规格化正数浮点格式为:           1,0000;0.100 000 000 0           其真值为:N+min=2-16×2-1=2-17           r=16时,最大正数的浮点格式为:           0,1111;0.1111 1111 11           其真值为:N+max=1615×(1-2-10)           非零最小规格化正数浮点格式为:           1,0000;0.0001 0000 00           其真值为:N+min=16-16×16-1=16-17
    14. 设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么?    
    解:若要保证数的最大精度,应取阶的基=2。     若要表示±6万间的十进制数,由于32768(215)< 6万 <65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。     故:尾数位数=32-1-1-5=25位      25(32)     该浮点数格式如下:     1             5             1    ³ 按此格式,该浮点数上溢的条件为:阶码           25
    15. 什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式?    
    解:机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。
    16. 设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位符号位,答案均用十进制表示。     (1)无符号数;     (2)原码表示的定点小数;     (3)补码表示的定点小数;     (4)补码表示的定点整数;     (5)原码表示的定点整数;     (6)浮点数的格式为:阶符1位、阶码5位、数符1位、尾数9位(共16位)。分别写出其正数和负数的表示范围(非规格化浮点形式);     (7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。
    解:各种表示方法数据范围如下:(1)无符号整数:0 ~ 216 - 1,         即:0 ~ 65535;    无符号小数:0 ~ 1 - 2-16 ,         即:0 ~ 0.99998; (2)原码定点小数:       1 - 2-15 ~ -(1 - 2-15),         即:0.99997 ~ -0.99997; (3)补码定点小数:1 - 2-15 ~ - 1 ,         即:0.99997~ -1; (4)补码定点整数:215 - 1 ~ -215,         即:32767 ~ -32768; (5)原码定点整数:       215 - 1 ~ -(215 - 1),         即:32767 ~ -32767;
        (6)据题意画出该浮点数格式: 1           5         1               9
    最大负数=1,11 111;1.000 000 001 最小负数=0,11 111;1.111 111 111     则负数表示范围为:     (1-2-9)~ 2-32´(1-2-9) 2)当采用阶移尾原非规格化数时,     正数表示范围为:     231 ´(-2-9)~ -231 ´2-31  (1-2-9)     注:零视为中性数,不在此范围内。´(-2-9)~ -231´ 2-9     负数表示范围为:     2-32 ´
        (7)当机器数采用补码规格化形式时,若不考虑隐藏位,则 最大正数=0,11 111;0.111 111 111 最小正数=1,00 000;0.100 000 2-1 最大负数=1,00 000;1.011 111 111´(1-2-9)~2-32 ´000     其对应的正数真值范围为:     231 (2-1+2-9)~ 231´最小负数=0,11 111;1.000 000 000     其对应的负数真值范围为:     -2-32  (-1)´
    ,不要用£或³    注意:   1)应写出可表示范围的上、下限精确值(用>或<)。   2)应用十进制2的幂形式分阶、尾两部分表示,这样可反映出浮点数的格式特点。括号不要乘开,不要用十进制小数表示,不直观且无意义。   3)书写时二进制和十进制不能混用(如:231写成1031)。   MSB位=1)Å4)原码正、负域对称,补码正、负域不对称,浮点数阶、尾也如此。特别要注意浮点负数补码规格化范围。(满足条件:数符
    17. 设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。     [x1]原=0.001 1010;     [x2]原=1.110 1000;     [x3]原=1.001 1001;     [y1]补=0.101 0100;     [y2]补=1.110 1000;     [y3]补=1.001 1001;     [z1]反=1.010 1111;     [z2]反=1.110 1000;     [z3]反=1.001 1001。
    解:算术左移一位: [x1]原=0.011 0100;正确 [x2]原=1.101 0000;溢出(丢1)出错 [x3]原=1. 011 0010;正确 [y1]补=0. 010 1000;溢出(丢1)出错 [y2]补=1.101 0000;正确 [y3]补=1.011 0010;溢出(丢0)出错 [z1]反=1. 101 1111;溢出(丢0)出错 [z2]反=1. 101 0001;正确 [z3]反=1.011 0011;溢出(丢0)出错     算术左移两位: [x1]原=0.110 1000;正确 [x2]原=1.010 0000;溢出(丢11)出错 [x3]原=1. 110 0100;正确
        算术左移两位: [y1]补=0. 101 0000;溢出(丢10)出错 [y2]补=1.010 0000;正确 [y3]补=1.110 0100;溢出(丢00)出错 [z1]反=1. 011 1111;溢出(丢01)出错 [z2]反=1. 010 0011;正确 [z3]反=1.110 0111;溢出(丢00)出错     算术右移一位: [x1]原=0.000 1101;正确 [x2]原=1.011 0100;正确 [x3]原=1.000 1100(1);丢1,产生误差 [y1]补=0.010 1010;正确 [y2]补=1.111 0100;正确 [y3]补=1.100 1100(1);丢1,产生误差
        算术右移一位: [z1]反=1.101 0111;正确 [z2]反=1.111 0100(0);丢0,产生误差 [z3]反=1.100 1100;正确     算术右移两位: [x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确 [x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确 [y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确 [z2]反=1.111 1010(00);产生误差 [z3]反=1.110 0110(01);产生误差
       
    18. 试比较逻辑移位和算术移位。    
    解:逻辑移位和算术移位的区别:     逻辑移位是对逻辑数或无符号数进行的移位,其特点是不论左移还是右移,空出位均补0,移位时不考虑符号位。     算术移位是对带符号数进行的移位操作,其关键规则是移位时符号位保持不变,空出位的补入值与数的正负、移位方向、采用的码制等有关。补码或反码右移时具有符号延伸特性。左移时可能产生溢出错误,右移时可能丢失精度。
    19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。   (1)A=9/64, B=-13/32, 求A+B;   (2)A=19/32,B=-17/128,求A-B;   (3)A=-3/16,B=9/32,     求A+B;   (4)A=-87,   B=53,       求A-B;   (5)A=115, B=-24,     求A+B。    
    解: (1)A=9/64=(0.001 0010)2       B= -13/32=(-0.011 0100)2       [A]补=0.001 0010       [B]补=1.100 1100
    [A+B]补= 0. 0 0 1   0 0 1 0         + 1. 1 0 0   1 1 0 0           1. 1 0 1   1 1 1 0 ——无溢出     A+B=( -0.010 0010)2 = -17/64   (2)A=19/32=(0.100 1100)2       B= -17/128=(-0.001 0001)2           [A]补=0.100 1100       [B]补=1.110 1111       [-B]补=0.001 0001 [A-B]补= 0. 1 0 0   1 1 0 0         + 0. 0 0 1   0 0 0 1           0. 1 0 1   1 1 0 1 ——无溢出     A-B=(0.101 1101)2 = 93/128
    (3)A= -3/16=(-0.001 1000)2       B=9/32=(0.010 0100)2       [A]补=1.110 1000       [B]补= 0.010 0100 [A+B]补= 1. 1 1 0   1 0 0 0       +   0. 0 1 0   0 1 0 0           0. 0 0 0   1 1 0 0 —— 无溢出     A+B=(0.000 1100)2 = 3/32 (4)A= -87=(-101 0111)2       B=53=(110 101)2       [A]补=1,010 1001       [B]补=0,011 0101       [-B]补=1,100 1011
    [A-B]补= 1,0 1 0   1 0 0 1     +   1,1 0 0   1 0 1 1           0,1 1 1   0 1 0 0 —— 溢出     A-B=(-1,000 1100)2 = -140 (5)A=115=(111 0011)2       B= -24=(-11 000)2       [A]补=0,111 0011       [B]补=1,110 1000 [A+B]补= 0,1 1 1   0 0 1 1       +   1,1 1 0   1 0 0 0           0,1 0 1   1 0 1 1——无溢出     A+B=(101 1011)2 = 91
    20. 用原码一位乘、两位乘和补码一位乘(Booth算法)、两位乘计算x•y。     (1)x= 0.110 111,y= -0.101 110;     (2)x= -0.010 111,y= -0.010 101;     (3)x= 19,         y=   35;     (4)x= 0.110 11, y= -0.111 01。    
    解:先将数据转换成所需的机器数,然后计算,最后结果转换成真值。 (1)[x]原=x=0.110111,[y]原=1.101110       x*=0.110111,     y*=0.101110        1=1       x*×y*=0.100 111 100 010       [x×y]原=1.100Å y0=0 Åx0=0,y0=1,z0=x0  111 100 010       x•y= -0. 100 111 100 010
    原码一位乘:           部分积               1   0 . 0®    乘数y*       0 . 0 0 0   0 0 0     . 1   0   1     1   1   0 —— +0  0 0   0 0 0       0 . 1   0     1   1   1 —— +x*   +   0 . 1 1 0   1 1 1       0 1   0 . 0 1 1   0 1 1       1   0 . 1     0   1   1 —— +x*   +®. 1 1 0   1 1 1  1   0 . 1 0 1   0 0 1       0   1  ®  0 . 1 1 0   1 1 1       1 . 0 1 0   0 1 0  1   0 .®0   . 1   0   1 —— +x*   +   0 . 1 1 0   1 1 1       1 . 1 0 0   0 0 0  1   0 . 0 1 1   0 0 0       0®1 1 0   0 0 0       0   0   1     0 . 1   0 —— +0  1  ®  0   0     1   0 . 1 —— x*   +   0 . 1 1 0   1 1 1       1 . 0 0 1   1 1 1  0 . 1 0 0   1 1 1       1   0   0     0   1   0
    2x*=01.101110,[-x*]补=[-x]补=1.001001 原码两位乘:             部分积                     乘数             Cj       0 0 0 . 0 0 0   0 0 0       0 0 . 1 0 1 1 1 0       0   +   0 0 1 . 1 0 1   1 1 0                       +2x*       0 0 1 . 1 0 1   1 2   0 0 0 . 0 1 1   0 1 1       1 0   0 0®1 0                                 0  .1 0 1 1     +   1 1 1 . 0 0 1   0 0 1                     +[-x*]补       1 1 1 . 2   1 1 1 . 1 1 1   0 0 1      ®1 0 0   1 0 0                                 1  0 0   1 0 0 0 .1 0     +   1 1 1 . 0 0 1   0 0 1                     +[-x*]补     2   1 1 1 . 1 1 0   0®  1 1 1 . 0 0 0   0 1 0                                 1  0 0       1 0   0 0 1 0 0 0 .   +   0 0 0 . 1 1 0   1 1 1                       +x*       0 0 0 . 1 0 0   1 1 1       1 0   0 0 1 0             0 结果同一位乘,x•y= -0. 100 111 100 010
    [x]补=x=0.110111 [y]补=1.010010 [-x]补=1.001001 [2x]补=01.101110 [-2x]补=10.010010 [x×y]补=1.011 000 011 110 0 x•y= -0.100 111 100 010 0 补码一位乘、两位乘运算过程如下:
    补码一位乘:部分积             乘数[y]补           yn+1       0 0 1   0 0 . 0 0 0   0®. 0 0 0   0 0 0     1 . 0   1   0     0   1   0     0 —— +0  0 0     0   1 . 0   1     0   0   1     0   +   1 1 . 0 0 1   0 0 1             1   1 1 . 1 0 0   1 0 0     1®                +[-x]补       1 1 . 0 0 1   0 0 1    0   1 . 0     1   0   0     1   +   0 0 . 1 1 0   1 1 1                       1   0 0 . 0 0 1   1 0 1     1   1   0   1®      +[x]补       0 0 . 0 1 1   0 1 1  1   0 0 . 0 0 0   1 1 0     1   1   1   0     1 . 0  ®  . 0   1   0     0 —— +0  1     0   +   1 1 . 0 0 1   0 0 1                             +[-x]补           1 1   1 1 . 1 0 0   1 1 1     1   1   1   1     0   1 . 0     1®1 . 0 0 1   1 1 1    +   0 0 . 1 1 0   1 1 1                             +[x]补       0 0 . 0 1 1   1   0 0 . 0 0 1   1 1 1     0   1   1   1     1   0   1     . 0   +   1 1®1 1 0  . 0 0 1   0 0 1                             +[-x]补           1 1 . 0 1 1   0 0 0     0   1   1   1     1   0   0 —— 清0
    补码两位乘:             部分积                     乘数             yn+1       0 0 0 . 0 0 0   0 0 0       1 1 . 0 1 0   0 1 0     0   +   1 1 0 . 0 1 0   0 1 0                         +[-2x]补       1 1 0 . 0 2   1 1 1 . 1 0 0   1 0 0       1 0®1 0   0 1 0                                    1 1 .0   1 0 0     1     +   0 0 0 . 1 1 0   1 1 1                           2   0 0 0 . 0®+[x]补       0 0 0 . 0 1 1   0 1 1                                  0 0   1 1 0       1 1   1 0 1   1 .0 1     0     +   0 0 0 . 1 1 0   1 1 1                           +[x]补       0 0 0 . 1 1 1   1 0 1                           2   0 0 0 . 0 0 1   1 1 1       0 1   1 1 1   0 1 1   . 0   +   1 1 1 .®         0 0 1   0 0 1                           +[-x]补       1 1 1 . 0 1 1   0 0 0       0 1   1 1 1   0 0 0 .   结果同补码一位乘, x•y= -0. 100 111 100 010 00
    (2) x= -0.010111,     y= -0.010101       [x]原=1.010111,   [y]原=1.010101       x*=0. 010111 ,   y*=0. 010101       [-x*]补=1.101001,2x*=0.101110        1=0       [x]补=1.101001,Å y0=1 Å[-2x*]补=1.010010       x0=1,y0=1,z0=x0  [y]补=1.101011       [-x]补=0.010111,[2x]补=1.010010       [-2x]补=0.101110       x*×y*=0.000 111 100 011       [x×y]原=0.000 111 100 011       [x×y]补=0.000 111 100 011 0         x•y= 0. 000 111 100 011 运算过程如下:
    原码一位乘:             部分积                 乘数y*       0 . 0 0 0   0 0 0     . 0   1   0     1   0   1 —— +x*   1   0 . 0 0 1   0 1 1       1 .®+   0 . 0 1 0   1 1 1         0 . 0 1 0   1 1 1  1   0 . 0 0 0   1 0 1       1   1 . 0     1   0   1®0   1     0   1   0 —— +0  1   0 . 0 0 1   1 1 0  ®—— +x*   +   0 . 0 1 0   1 1 1       0 . 0 1 1   1 0 0  1   0 . 0 0 0   1 1 1       0   0   1     1 .®    0   1   1   . 0   1   0 —— +0  1   0 . 0 0 1   1®0   1 —— +x*   +   0 . 0 1 0   1 1 1       0 . 0 1 1   1 1 0  1   0 . 0 0 0   1 1 1       1   0   0  ®1 1       0   0   0     1   1 . 0 —— +0    0   1   1
    原码两位乘:               部分积                   乘数y*             Cj       0 0 0 . 0 0 0   0 0 0     0 0 . 0 1 0   1 0 1     0   +   0 0 0 . 0 1 0   1 1 1                       +x*       0 0 0 . 0 1 0   1 1 1                       2   0 0 0 . 0 0 0   1 0 1     1 1   0 0 .0   1 0 1     +   0 0 0 .®          0  0 1 0   1 1 1                       +x*       0 0 0 . 0 1 1   1 0 0             2   0 0 0 . 0 0 0   1 1 1     0 0   1 1 0   0 .0 1      ®                    0  +   0 0 0 . 0 1 0   1 1 1                       +x*       0 0 0 . 0 1 1   1 1 0 2   0 0 0 . 0 0 0   1 1 1    ®                                0  1 0   0 0 1   1 0 0 .                                                   +0       结果同一位乘, x•y= 0. 000 111 100 011
    补码一位乘:部分积             乘数[y]补           yn+1       0 0 . 0 0 0   0 0 0     1 . 1   0   1     0   1   1     0   +   0 0 . 0 1 0   1 1 1         1   0 0 . 0 0 1   0 1 1  ®                    +[-x]补       0 0 . 0 1 0   1 1 1  1   0 0 . 0 0 0   1 0 1     1   1  ®  1   1 . 1   0     1   0   1     1 —— +0    1 . 1     0   1   0     1   +   1 1 . 1 0 1   0 0 1                             1   1 1 . 1 1 0   1 1 1     0   1   1   1   . 1®+[x]补       1 1 . 1 0 1   1 1 0    0   1     0   +   0 0 . 0 1 0   1 1 1                             +[-x]补       1   0 0 . 0 0 0   1 1 1     0   0   1   1     1 . 1   0®    0 0 . 0 0 1   1 1 0      1   +   1 1 . 1 0 1   0 0 1                             +[x]补       1 1 . 1 1   1 1 . 1 1 1   0 0 0     0   0   0   1     1   1 . 1     0   +  ®1 0   0 0 0  0 0 . 0 1 0   1 1 1                           +[-x]补           0 0 . 0 0 1   1 1 1   0 0 . 0 0 0   1 1 1     1   0   0   0     1   1   1   . 1 ——®1    +0
    补码两位乘:             部分积                     乘数               yn+1       0 0 0 . 0 0 0   0 0 0       1 1 . 1 0 1     0   1 1   0   +   0 0 0 . 0 1 0   1 1 1 2   0 0 0 . 0 0 0®                          +[-x]补       0 0 0 . 0 1 0   1 1 1    1 0 1       1 1   1 1 .1     0   1 0   1     +   0 0 0 . 0 1 0   1 1 1                           +[-x]补       0 0 0 . 0 1 1   1 0 0                             2   0 0 0 . 0 0 0   1 1 1       0 0   1 1 1     1 . 1 0   1     +   0 0 0 .®     0 1 0   1 1 1                           +[-x]补       0 0 0 . 0 1 1   1 1 0       2   0 0 0 . 0 0 0   1 1 1       1 0   0 0 1     1  ®                             1 1   . 1                                                                       清0 +0 结果同补码一位乘, x•y= 0. 000 111 100 011 00
    (3) x=   19,         y=   35       x=(10 011)2,y=(100 011)2       x*= [x]原= [x]补= 0,010 011       y*= [y]原= [y]补= 0,100 011       [-x*]补= [-x]补= 1,101 101       2x*= [2x]补= 0,100 110        0=0       x*×y*=Å y0=0 Å[-2x*]补= [-2x]补= 1,011 010       x0=0,y0=0,z0=x0  [x×y]原= [x×y]补               = 0,001 010 011 001       x•y =665 运算过程如下:
    原码一位乘:             部分积                 乘数y*       0,0 0 0   0 0 0       1   0   0     0   1   1 —— +x*   +   0,0 1 0   0 1 1         0,0 1 0   0 1 1 1   0,0 0 1   0 0 1       1   1   0     0   0   1 —— +x*   +   0,0 1 0   0 1 1® 1   0,0 0 1   1 1 0       0   1   1     0   0   0 —— +0®      0,0 1 1   1 0 0  1   0,0 0 0   0 1 1  ®1   0,0 0 0   1 1 1       0   0   1     1   0   0 —— +0 ® 1   0,0 0 0   0 0 1       1   1   0     0   1®    1   0   0     1   1   0 —— +0  1   0,0 0 1   0 1 0    ®  1 —— +x*   +   0,0 1 0   0 1 1       0,0 1 0   1 0 0    0   1   1     0   0   1
    原码两位乘:               部分积                   乘数y*             Cj       0 0 0,0 0 0   0 0 0     0 0,1 0   0   0   1 1   0   +   1 1 1,1 0 1   1 0 1                         +[-x*]补       1 1 1,1 0 1   1 0 1       2   1 1 1,1 1 1   0 1 1     0 1   0 0,1   0   0 0  ®                          1    +   0 0 0,0 1 0   0 1 1                         +x*       0 0 0,0 0 1   1 1 0 2   0 0 0,0 0 0   0 1 1     1 0   0 1   0  ®                                0  0,1 0       +   0 0 0,1 0 0   1 1 0                         +2x*       0 0 0,1 0 2   0 0 0,0 0 1   0 1 0     0 1   1®1   0 0 1                                 0  0   0   1   0 0,                                                     +0         结果同一位乘, x•y= 0,001 010 011 001
    补码一位乘:部分积             乘数[y]补           yn+1       0 0,0 0 0   0 0 0     0,1   0   0   0   1   1     0   +   1 1,1 0 1   1 0 1 1   1 1,1 1 0   1 1®                            +[-x]补       1 1,1 0 1   1 0 1  1   1 1,1 1 1   0 1 1     0   1  ®0     1   0,1   0   0   0   1     1 —— +0    0,1   0   0   0     1   +   0 0,0 1 0   0 1 1                             +[x]补 1   0 0,0 0 0   1 1 1     0   0   1   0, 1   0   0    ®      0 0,0 0 1   1 1 0  1   0®1   0 0,0 0 0   0 1 1     1   0   0   1   0,1   0     0 —— +0 ®0 —— +0  0,0 0 0   0 0 1     1   1   0   0   1   0,1     0   +   1 1,1 0 1   1 0 1       1   1 1,1 1 0   1 1®                      +[-x]补           1 1,1 0 1   1 1 0    1     0   1   1   0   0   1   0,   1   +   0 0,0 1 0   0 1 1                             +[x]补       0 0,0 0 1   0 1 0     0   1   1   0   0   1   0
    补码两位乘:             部分积                     乘数               yn+1       0 0 0,0 0 0   0 0 0     0 0,1 0   0   0   1 1   0   +   1 1 1,1 0 1   1 0 1                       2   1 1 1,1 1 1   0 1 1     0 1   0 0,1   0®  +[-x]补       1 1 1,1 0 1   1 0 1    0 0   1     +   0 0 0,0 1 0   0 1 1                         +[x]补       0 0 2   0 0 0,0 0 0   0 1 1     1 0®0,0 0 1   1 1 0                                    0 1   0   0,1 0   0     +   1 1 1,0 1 1   0 1 0                         2   1 1 1,1®+[-2x]补       1 1 1,0 1 1   1 0 1                                    1 0   1 1 1     0 1   1 0   0   1   0 0,1                     +   0 0 0,0 1 0   0 1 1                         +0       0 0 0,0 0 1   0 1 0     0 1   1 0   0   1   0 0   结果同补码一位乘, x•y= 0, 001 010 011 001 00
    (4) x= 0. 110 11, y= -0.111 01       x*= [x]原= [x]补= 0. 110 11       [y]原=1.111 01,y*=0. 111 01       [y]补=1.000 11       [-x*]补= [-x]补= 1.001 01       2x*= [2x]补= 01.101 10       [-2x*]补=  1=1       x*×y*=0.110 000 111 1Å y0=0 Å[-2x]补= 10.010 10       x0=0,y0=1,z0=x0        [x×y]原=1.110 000 111 1       [x×y]补=1.001 111 000 10       x•y= -0. 110 000 111 1 运算过程如下:
    原码一位乘:部分积                 乘数y*       0 . 0 0 0   0 0       1  ®. 1   1   1     0   1 —— +x*   +   0 . 1 1 0   1 1         0 . 1 1 0   1 1  1   0 . 0 0 1   1 0       1   1®0 . 0 1 1   0 1       1 . 1   1     1   0 —— +0  1   0 . 1 0 0®. 1     1   1 —— +x*   +   0 . 1 1 0   1 1       1 . 0 0 0   0 1    0 0       1   1   1   . 1   1 —— +x*   +   0 . 1 1 0   1 1       1 . 0 1 0   1 1   0 . 1 0 1   0 1       1   1   1     1 . 1 —— +x*   +   0 . 1 1 0   1 1  ®1  1   0 . 1 1 0   0 0       0   1   1     1   1  ®    1 . 1 0 0   0 0 
    原码两位乘:               部分积                   乘数y*         Cj       0 0 0 . 0 0 0   0 0     0 . 1 1   1     0 1         0   +   0 0 0 . 1 1 0   1 1                   +x* 2   0 0 0 . 0 0 1   1®      0 0 0 . 1 1 0   1 1                               0  0     1   1 0 . 1     1 1     +   1 1 1 . 0 0 1   0 1                   +[-x*]补 2   1 1 1 . 1 1 0   1®      1 1 1 . 0 1 0   1 1                               1  0     1   1 1   1   . 0 1       +   0 0 1 . 1 0 1   1 0                   +2x*   1   0 0 0 . 1 1 0   0 0®    0 0 1 . 1 0 0   0 0                               0      0   1 1   1     1 0 .                                                   +0       结果同一位乘, x•y= -0. 110 000 111 1
    补码一位乘:         部分积             乘数[y]补           yn+1       0 0 . 0 0 0   0 0     1 . 0   0   0     1   1     0   +   1 1 . 1   1 1 . 1 0®0 0 1   0 1                       +[-x]补       1 1 . 0 0 1   0 1  1   1 1 . 1 1 0   0 1     0  ®0   1 0     1   1 . 0   0     0   1     1 —— +0    1   1 . 0     0   0     1   +   0 0 . 1 1 0   1 1                       +[x]补   1   0 0 . 0 1 0   1 0     0   0   1   1   . 0   0     0®    0 0 . 1 0 1   0 0  1   0 0 .®1   0 0 . 0 0 1   0 1     0   0   0   1     1 . 0     0 —— +0 ®—— +0  0 0 0   1 0     1   0   0   0     1   1 .   0   +   1 1 . 0 0 1   0 1                       +[-x]补         1 1 . 0 0 1   1 1   1   0   0   0     1   0 —— 清0
    补码两位乘:             部分积                   乘数           yn+1       0 0 0 . 0 0 0   0 0       1 . 0 0   0     1   1     0   +   1 1 1 . 0 0 1   0 1           2   1 1 1 . 1 1 0   0 1       0  ®            +[-x]补       1 1 1 . 0 0 1   0 1  1 1 . 0     0   0     1     +   0 0 0 . 1 1 0   1 1                       +[x]补 2   0 0 0 . 0 0 1   0®      0 0 0 . 1 0 1   0 0                                  1       0   0 0   1     1 . 0     0     +   1 1 0 . 0 1 0   1 0                 1   1®      +[-2x]补       1 1 0 . 0 1 1   1 1                                    1 1 . 0 0 1   1 1       1   0 0   0     1   0 . —— 清0   结果同补码一位乘, x•y= -0. 110 000 111 10
        21. 用原码加减交替法和补码加减交替法计算x÷y。     (1)x=0.100111,y=0.101011;     (2)x=-0.10101, y=0.11011;     (3)x=0.10100, y= -0.10001;     (4)x=13/32,     y= -27/32。     解:     (1)x*=[x]原=[x]补=x= 0.100 111             y*=[y]原=[y]补=y= 0=0    Åy0=0 Å0.101 011           [-y*]补=[-y]补=1.010 101           q0=x0 y]原=0.111 010     r*=0.000 010×2-6=0.000 000 000 010    ¸y*=[x¸y=x*¸x 计算过程如下:
    原码加减交替除法:       被除数(余数)           商       0 . 1 0 0   1 1 1       0 . 0 0 0   0 0 0   +   1 . 0 1 0   1 0 1           试减,+[-y*]补       1 . 1 1 1   1 0    1 . 1 1 1   0 0 0                     0 .   +   0 . 1 0 1   0 1 1        ¬0 1   r<   1 . 0 0 0   1 1 0                  ¬0,+y*       0 . 1 0 0   0 1 1   1 0.1   +   1 . 0 1 0   1 0 1           r>¬0, +[-y*]补       0 . 0 1 1   0 1 1 1   0 . 1 1 0   1 1 0                 0.1 1   +   1 . 0 1 0   1 0 1           r>0, +[-y*]补       0 . 0 0 1   0 1 1
       0 .¬续:       被除数(余数)           商 1 0 1 0   1 1 0               0 . 1 1 1   +   1 . 0 1 0   1 0 1           r>0,    1 . 0 1 0   1 1 0             0.1   1 1 0  ¬+[-y*]补       1 . 1 0 1   0 1 1 1 +   0 . 1 0 1   0 1 1           r<   0 . 0 0¬0,+y*       0 . 0 0 0   0 0 1 1 0   0 1 0           0.1 1   1 0 1   +   1 . 0 1 0   1 0 1           r>0,  0.1 1 1   0 1 0   +   0 . 1 0 1   0 1 1    ¬+[-y*]补       1 . 0 1 0   1 1 1   1       r<0,+y*(恢复余数)       0 . 0 0 0   0 1 0
    补码加减交替除法:       被除数(余数)           商       0 0 . 1 0 0   1 1 1       0 . 0 0 0   0 0 0   +   1 1 . 0 1 0   1 0    1 1 . 1 1 1   0 0 0      ¬1       试减,x、y同号,+[-y]补       1 1 . 1 1 1   1 0 0 1               0 .   +   0 0 . 1 0 1   0 1 1               r、y异号,+[y]补       0 0    0 1 . 0 0 0   1 1 0                   0.1   +   1 1 . 0 1¬. 1 0 0   0 1 1   1    0 0 . 1 1 0¬0   1 0 1               r、y同号, +[-y]补       0 0 . 0 1 1   0 1 1 1   1 1 0                 0.1 1   +   1 1 . 0 1 0   1 0 1               r、y同号, +[-y]补       0 0 . 0 0 1   0 1 1
       0 0 . 0 1 0  ¬续:   被除数(余数)           商 1 1 1 0               0 . 1 1 1   +   1 1 . 0 1 0   1 0 1           r、y同号, +[-y]补    1 1 . 0 1 0   1 1 0             0.1   1 1 0   +  ¬      1 1 . 1 0 1   0 1 1 1    0 0 . 0¬0 0 . 1 0 1   0 1 1           r、y异号,+[y]补       0 0 . 0 0 0   0 0 1 1 0 0   0 1 0           0.1 1   1 0 1   +   1 1 . 0 1 0   1 0 1           r、y同号,  0.1 1 1   0 1 1 —— 恒置1   +   0 0 . 1 0 1  ¬+[-y]补       1 1 . 0 1 0   1 1 1   1 0 1 1         r、x异号,(恢复余数)       0 0 . 0 0 0   0 1 0       且r、y异号, +[y]补 y]补= 0.111 011     [r6]补=0.000 010,r=r*=0.000 000 000 010¸y=[x¸注:恒置1引入误差。 x
    (2)x= -0.101 01,y=0.110 11       [x]原=1.101 01       x*= 0.101 01       y* = [y]原 = [y]补= y = 0.110 11       [-y*]补= [-y]补= 1.001 01       [x]补= 1.010 11     y¸y]原=1.110 00       x¸y*= 0.110 00       [x¸ 0 = 1       x*Å y0 = 1 Å  q0 = x0  = -0.110 00       r*=0.110 00×2-5                 =0.000 001 100 0     计算过程如下:
    原码加减交替除法:       被除数(余数)           商       0 . 1 0 1   0 1       0 . 0   ¬0 0   0 0   +   1 . 0 0 1   0 1           试减,+[-y*]补       1 . 1 1 0   1 0 1 1 . 1 0 1   0 0                     0 .   +   0 . 1 1 0   1 1           r<   0 . 1 1 1   1 0                   0.1  ¬0,+y*       0 . 0 1 1   1 1   1 +   1 . 0 0 1   0 1           r>   0 . 0 0¬0, +[-y*]补       0 . 0 0 0   1 1 1 1   1 0                 0.1 1   +   1 . 0 0 1   0 1           r>0, +[-y*]补       1 . 0 1 0   1 1
       0 . 1 0 1   1 0        ¬续:       被除数(余数)           商 1       0 . 1 1 0   +   0 . 1 1 0   1 1           r<0, +y*       1 . 1 0 0   0    1 . 0 0 0   1 0             0.1   1 0 0   +   0 . 1 1 0   1 1          ¬1 1 r< 0.1 1   0 0 0   +   0 . 1 1 0   1 1    ¬0,+y*       1 . 1 1 1   0 1     1       r<0, +y*(恢复余数)       0 . 1 1 0   0 0
    补码加减交替除法:       被除数(余数)           商       1 1 . 0 1 0   1 1       0 . 0 0 0   0 0   +   0 0 . 1 1 0   1 1        0 0 . 0 1 1   0 0                ¬  试减,x、y异号,+[y]补       0 0 . 0 0 1   1 0 1     1 .   +   1 1 . 0 0 1   0 1               r、y同号,+[-y]补       1 1 . 1 0 0   0    1 1 . 0 0 0   1 0                   1.0   +   0 0 . 1 1 0   1 1        ¬1   1    1 1 . 1 1 0   1 0              ¬      r、y异号, +[y]补       1 1 . 1 1 1   0 1 1   1.0 0   +   0 0 . 1 1 0   1 1               r、y异号, +[y]补       0 0 . 1 0 1   0 1
       0 1 . 0 1 0   1 0               1 . 0 0 1¬续:       被除数(余数)           商 1    0 0¬  +   1 1 . 0 0 1   0 1           r、y同号, +[-y]补       0 0 . 0 1 1   1 1 1 . 1 1 1   1 0             1.0   0 1 1   +   1 1 . 0 0 1   0 1            1.0   0 1 1 1 —— 恒置1   +   1 1 . 0 0¬r、y同号,+[-y]补       0 0 . 0 0 0   1 1     1 1   0 1           r、x异号,(恢复余数)       1 1 . 0 1 0   0 0         且r、y同号,+[-y]补     y=¸y]补=1.001 11,x¸注:恒置1引入误差。     [r5]补=1.010 00,   r= -0.000 001 100 0     [x -0.110 01
    (3)x= 0.101 00,y= -0.100 01       x*= [x]原= [x]补= x=0.101 00       [y]原 = 1.100 01       y* = 0.100 01       [-y*]补=1.011 11       [y]补= 1.011 11   y*= 1.001 01 —— 溢出  ¸ 1 = 1       x*Å y0 = 0 Å    [-y]补= 0.100 01       q0 = x0  y = -1.001 01       r*=0.010 11×2-5                 =0.000¸y]原:无定义       x¸  [x 000 101 1     计算过程如下:
    原码加减交替除法:       被除数(余数)           商       0 . 1 0 1   0 0       0 . 0 0 0   0 0   +   1 . 0 1 1   1 1           试减,+[-y*]补       0 . 0 0    0 . 0 0 1   1 0                     1¬0   1 1                               1 .   +   1 . 0 1 1   1 1           r>0, +[-y*]补         1 . 1 0 1   0 1          1 . 0 1 0   1 0                   1.0   +   0 . 1 0¬                        1 0   0 1           r<   1 . 1 0 1   1 0        ¬0, +y*       1 . 1 1 0   1 1 1         1.0 0   +   0 . 1 0 0   0 1           r<0, +y*       0 . 0 0 1   1 1
       0 . 0 1 1   1 0               1 . 0 0 1  ¬续:       被除数(余数)           商 1 +   1 . 0 1 1   1 1           r>   1 . 1 1¬0, +[-y*]补       1 . 1 1 1   0 1 1 0   1 0             1.0   0 1 0   +   0 . 1 0 0   0 1           r<0,+y*        1.0 0   1 0 1                               r¬0 . 0 1 0   1 1     1>0, 结束     注:当x*>y*时产生溢出,这种情况在第一步运算后判断r的正负时就可发现。此时数值位占领小数点左边的1位,原码无定义,但算法本身仍可正常运行。
    补码加减交替除法:       被除数(余数)           商       0 0 . 1 0 1   0 0       0 . 0 0 0   0 0   +   1    0 0 . 0 0 1  ¬1 . 0 1 1   1 1       试减,x、y异号,+[y]补       0 0 . 0 0 0   1 1 1 1 0                     0 .   +   1 1 . 0 1 1   1 1               r、y异号,+[y]补      1 1 . 0 1 0   1 0                   0.1   +   0 0 .¬    1 1 . 1 0 1   0 1   1    1 1 . 1 0 1¬1 0 0   0 1               r、y同号, +[-y]补       1 1 . 1 1 0   1 1 1   1 0                 0.1 1   +   0 0 . 1 0 0   0 1               r、y同号, +[-y]补       0 0 . 0 0 1   1 1
       0 0 . 0 1 1   1 0  ¬续:       被除数(余数)           商 1             0 . 1 1 0   +   1 1 . 0 1 1   1 1           r、y异号, +[y]补       1 1 .    1 1 . 1 1 0   1 0             0.1   1 0 1   +   0 0 . 1 0 0   0¬1 1 1   0 1 1  0.1   1 0 1 1 —— 恒置1    ¬1           r、y同号,+[-y]补       0 0 . 0 1 0   1 1     1                             r、x同号,结束     [r5]补=0.010 11,r=r*=0.000 000 101 1     Åy= -1.001 01     判溢出:qf ¸y]补=10.110 11,x¸ 1 = 1     [xÅ y0 = 0 Å真符位的产生:qf = x0   0 = 1,溢出Åq0 = 1
        注:由于本题中x*>y*,有溢出。除法运算时一般在运算前判断是否x* >y*,如果该条件成立则停止运算,转溢出处理。但此算法本身在溢出情况下仍可正常运行,此时数值位占领小数点左边的1位,商需设双符号位(变形补码),以判溢出。采用这种方法时运算前可不判溢出,直接进行运算,运算完后再判溢出。
    (4)x=13/32=(0.011 01)2       y= -27/32=(-0.110 11)2       x*= [x]原= [x]补= x=0. 011 01       [y]原 = 1.110 11       y* = 0.110 11       [-y*]补=1.001 01       [y]补= 1.001 01       y*= 0.011 11    ¸ 1 = 1       x*Å y0 = 0 Å[-y]补= 0.110 11       q0 = x0  y =(-0.011 11)2 = -15/32       r*=0.010 11×2-5          ¸y]原=1.011 11       x¸[x   =0.000 000 101 1
    原码加减交替除法:       被除数(余数)           商       0 . 0 1 1   0 1       0 . 0 0 0   0 0   +   1 . 0 0 1   0 1           试减,+[-y*]补       1 . 1 0 0    1 . 0 0 1   0 0                     0 .¬  1 0                               1   +   0 . 1 1 0   1 1           r<0, +y*         1 . 1 1 1   1 1                1 . 1 1 1   1 0                   0.0   +   0 . 1 1 0   1¬                  1 1           r<   1 . 1 0 0   1 0              ¬0, +y*       0 . 1 1 0   0 1 1   0.0 1   +   1 . 0 0 1   0 1           r>0, +[-y*]补       0 . 1 0 1   1 1
       1 . 0 1 1   1 0               0 . 0 1 1  ¬续:       被除数(余数)           商 1 +   1 . 0 0 1   0 1           r>   1 . 0 0¬0, +[-y*]补       0 . 1 0 0   1 1 1 1   1 0             0.0   1 1 1   +   1 . 0 0 1   0 1           r>0, +[-y*]补  0.0 1   1 1 1                               r¬      0 . 0 1 0   1 1     1>0, 结束
    补码加减交替除法:       被除数(余数)           商       0 0 . 0 1 1   0 1       0 . 0 0 ¬0   0 0   +   1 1 . 0 0 1   0 1       试减,x、y异号,+[y]补       1 1 . 1 0 0   1 0 1   1 1 . 0 0 1   0 0                     1 .   +   0 0 . 1 1 0   1 1                1 1 . 1 1 1   1 0                ¬  r、y同号,+[-y]补       1 1 . 1 1 1   1 1   1   1.1   +   0 0 . 1 1 0   1 1               r、y同号,+[-y]补       0 0 . 1 1 0   0 1    0 1 . 1 0 0   1 0                 1.1 0   +   1 1 . 0 0 1   0 1            ¬1   r、y异号, +[y]补       0 0 . 1 0 1   1 1
       0 1¬续:       被除数(余数)           商 1 . 0 1 1   1 0               1 . 1 0 0   +   1 1 . 0 0 1   0 1           r、y异号,    0 1 . 0 0 1   1 0             1.1   0 0 0   +¬+[y]补       0 0 . 1 0 0   1 1 1  1.1   0¬  1 1 . 0 0 1   0 1           r、y异号,+[y]补       0 0 . 0 1 0   1 1     1 0 0 1 —— 恒置1                                 r、x同号,结束     [r]补=0.010 y=(-0.011 11)2 = -15/32¸y]补=1.100 01,x¸11,r=r*=0.000 000 101 1     [x
    22. 设机器字长为16位(含1位符号位),若一次移位需1µs,一次加法需1 µs,试问原码一位乘、补码一位乘、原码加减交替除法和补码加减交替除法各最多需多少时间?     解:原码一位乘最多需时     1µs×15(加)+ 1µs×15(移位)=30µs     补码一位乘最多需时     1µs×16+1µs×15 = 31µs     原码加减交替除最多需时     1µs×(16+1)+1µs×15=32µs (或33µs)     补码加减交替除最多需时   1µs×(16+1) +1µs×15=32µs (或33µs)         (包括最后恢复余数!)
    23. 对于尾数为40位的浮点数(不包括符号位在内),若采用不同的机器数表示,试问当尾数左规或右规时,最多移位次数各为多少?     解:对于尾数为40位的浮点数,若采用原码表示,当尾数左规时,最多移位39次;反码表示时情况同原码;若采用补码表示,当尾数左规时,正数最多移位39次,同原码;负数最多移位40次。当尾数右规时,不论采用何种码制,均只需右移1次。
    24. 按机器补码浮点运算步骤,计算[x±y]补     (1)x=2-011×   0.101 100,             y=2-010×(-0.011 100);     (2)x=2-011×(-0.100 010),             y=2-010×(-0.011 111);     (3)x=2101×(-0.100 101),             y=2100×(-0.001 111)。     解:先将x、y转换成机器数形式: (1)[x]补=1,101;0.101 100       [y]补=1,110;1.100 100     注:为简单起见,源操作数可直接写成浮点格式,不必规格化。
    E]补=[Ex]补+[-Ey]补    D1)对阶:     [ E]补D=11,101+00,010=11,111     [<0,应Ex向Ey对齐,则:     [Ex]补+1=11,101+00,001       E]补+1=11,111+00,001               =00,000=0     至此,D        =11,110     [ Ex=Ey,对毕。     [x]补=1,110;0.010 110 2)尾数运算:     [Mx]补+[My]补= 0 0 . 0 1 0   1 1 0                   + 1 1 . 1 0 0   1 0 0                       1 1 . 1 1 1   0 1 0
    [Mx]补+[-My]补= 0 0 . 0 1 0   1 1 0                 + 0 0 . 0 1 1   1 0 0                   0 0 . 1 1 0   0 1 0 3)结果规格化:   [x+y]补=11,110;11.111 010           =11,011;11.010 000 (左规3次,阶码减3,尾数左移3位)   [x-y]补=11,110;00.110 010     已是规格化数。 4)舍入:无 5)溢出:无     则:x+y=2-101×(-0.110 000)         x-y =2-010×0.110 010
    (2)x=2-011×(-0.100010)       y=2-010×(-0.011111)       [x]补=1,101;1.011 110       [y]补=1,110;1.100 001   1)对阶:       过程同1),则       [x]补=1,110;1.101 111   2)尾数运算:       [Mx]补+[My]补= 1 1 . 1 0 1   1 1 1                     + 1 1 . 1 0 0   0 0 1                         1 1 . 0 1 0   0 0 0     [Mx]补+[-My]补= 1 1 . 1 0 1   1 1 1                       + 0 0 . 0 1 1   1 1 1                         0 0 . 0 0 1   1 1 0
    3)结果规格化:   [x+y]补=11,110;11.010 000     已是规格化数。   [x-y]补=11,110;00.001 110           =11,100;00.111   000 (左规2次,阶码减2,尾数左移2位)     4)舍入:无 5)溢出:无     则:x+y=2-010×(-0.110 000)         x-y =2-100×   0.111 000
    (3)x=2101×(-0.100 101)       y=2100×(-0.001 111)       [x]补=0,101;1.011 E]补=[Ex]补+[-Ey]补    D011       [y]补=0,100;1.110 001   1)对阶:       [ E]补D=00,101+11,100=00,001     [>0,应Ey向Ex对齐,则:     [Ey]补+1=00,100+00,001       E]补+[-1]补=00,001+11,111                   =00,000=0     至此,D      =00,101     [ Ey=Ex,对毕。       [y]补=0,101;1.111 000(1)
    2)尾数运算:     [Mx]补+[My]补= 1 1 . 0 1 1   0 1 1                     + 1 1 . 1 1 1   0 0 0(1)                       1 1 . 0 1 0   0 1 1(1)     [Mx]补+[-My]补= 1 1 . 0 1 1   0 1 1                     + 0 0 . 0 0 0   1 1 1(1)                       1 1 . 1 0 0   0 1 0(1) 3)结果规格化:   [x+y]补=00,101;11.010 011(1)     已是规格化数。   [x-y]补=00,101;11.100 010(1)           =00,100;11.000   101 (左规1次,阶码减1,尾数左移1位)    
    4)舍入:     [x+y]补=00,101;11.010 011(舍)     [x-y]补不变。 5)溢出:无     则:x+y=2101×(-0.101 101)         x-y =2100×(-0.111 011)
        27. 设浮点数阶码取3位,尾数取6位(均不包括符号位),要求阶码用移码运算,尾数用补码运算,计算x•y,且结果保留1倍字长。     (1)x=2-100×   0.101101,             y=2-011×(-0.110101);     (2)x=2-011×(-0.100111),             y=2101×(-0.101011)。     解:先将x、y转换成机器数形式: (1)[x]阶移尾补=0,100;0.101 101       [y]阶移尾补=0,101;1.001 011   1)阶码相加:     [Ex]移+[Ey]补=00,100+11,101                     =00,001(无溢出)
    2)尾数相乘: (补码两位乘比较法)             部分积                     乘数           yn+1       0 0 0 . 0 0 0   0 0 0       1 1 . 0 0 1     0   1 1   0   +   1 1 1 . 0 1 0   0 1 1                           +[-x]补       1 1 1 . 0 1 0   0 1 2   1 1 1 . 1 1 0   1 0 0       1 1   1 1 .0     0   1 0   1     +   1 1 1 .®1  0 1 0   0 1 1                           +[-x]补       1 1 1 . 0 0 0   1 1 1       2   1 1 1 . 1 1 0   0 0 1       1 1   1 1 1     1 . 0®                           0   1     +   0 0 0 . 1 0 1   1 0 1                           +[x]补       0 0 0 2   0 0 0 . 0 0 0   1 1 1    ®. 0 1 1   1 1 0                                      1 0   1 1 1     1   1 1   . 0                     +   1 1 1 . 0 1 0   0 1 1                           +[-x]补       1 1 1 . 0 1 1   0 1 0       1 0   1 1 1     1   0 0(清0)
    [Mx × My]补=1.011 010(101 111 00) 3)结果规格化:已是规格化数。 4)舍入:设采用0舍1入法,应入:     [x×y]阶移尾补=0,001;1.011 011 5)溢出:无     x×y=2-111×(-0.100 101) 方案二:采用阶补尾原格式计算:     [x]阶补尾原=1,100;0.101 101     [y]阶补尾原=1,101;1.110 101   1)阶码相加:     [Ex]补+[Ey]补=11,100+11,101                     =11,001(无溢出)
    原码一位乘:           部分积                   乘数y*       0 . 0 0 0   0 0 0     . 1 1®  1   0     1   0   1 —— +x*   +   0 . 1 0 1   1 0 1       0 . 1 0 1   1 0 1  1   0 . 0 0 1   0 1 1  ®  0 . 0 1 0   1 1 0       1 . 1   1     0   1   0 —— +0      0   1 . 1     1   0   1 —— +x*   +   0 . 1 0 1   1 0 1       0 . 1 1 1   0 0 1   0 . 0 0 1   1®1   0 . 0 1 1   1 0 0       0   0   1   . 1   1   0 —— +0 ®0  1 0       0   0   0     1 . 1   1 —— +x*   +   0 . 1 0 1   1 0 1       0 . 1 1 1 1   0 . 0 1 1   1 0 1       1   0   0     0   1 . 1 —— +x*   +   0 . 1®  0 1 1  1   0 . 1 0 0   1 0 1       0   1   0     0®0 1   1 0 1       1 . 0 0 1   0 1 0    0   1
        [Mx × My]原=1.100 101(010 001) 3)结果规格化:已是规格化数。 4)舍入:设采用0舍1入法,应舍:     [x×y]阶补尾原=1,001;1.100 101 5)溢出:无     x×y=2-111×(-0.100 101) (2)x=2-011×(-0.100 111)       y=2101×(-0.101 011)       [x]阶移尾补=0,101;1.011 001       [y]阶移尾补=1,101;1.010 101 1)阶码相加:     [Ex]移+[Ey]补=00,101+00,101                     =01,010(无溢出)
    2)尾数相乘: (补码两位乘比较法)             部分积                     乘数           yn+1       0 0 0 . 0 0 0   0 0 0       1 1 . 0 1 0     1   0 1   0   +   1 1 1 . 0 1 1   0 0 1                           +[x]补       1 1 1 . 0 1 1 2   1 1 1 . 1 1 0   1 1 0       0 1   1 1 .0     1   0 1   0     +   1®  0 0 1  1 1 . 0 1 1   0 0 1                           +[x]补       1 1 1 . 0 0 1   1 1 1 2   1 1 1 . 1 1 0   0 1 1       1 1   0 1 1    ®                                 1 . 0 1   0     +   1 1 1 . 0 1 1   0 0 1                           +[x]补       2   1 1 1 . 1 1 0   0 1®1 1 1 . 0 0 1   1 0 0                                    1       0 0   1 1 0     1   1 1   . 0                     +   0 0 0 . 1 0 0   1 1 1                           +[-x]补       0 0 0 . 0 1 1   0 1 0       0 0   1 1 0     1   0 0(清0) [Mx × My]补=0.011 010(001 101 00)
    3)结果规格化:     [x×y]阶移尾补=   = 1,010;0.011 010(001 101 00)   = 1,001;0.110 100(011 010 0) 4)舍入:设采用0舍1入法,应舍:     [x×y]阶移尾补=1,001;0. 110 100 5)溢出:无     x×y=2001×0.110 100 方案二:采用阶补尾原格式计算:     [x]阶补尾原=1,101;1.100 111     [y]阶补尾原=0,101;1.101 011 1)阶码相加:     [Ex]补+[Ey]补=11,101+ 00,101                     =00,010(无溢出)
    原码一位乘:           部分积                   乘数y*       0 . 0 0 0   0 0 0     . 1   0   1     0   1   1 1   0 . 0 1 0   0 1 1  ®—— +x*   +   0 . 1 0 0   1 1 1       0 . 1 0 0   1 1 1      1 . 1   0     1   0   1 —— +x*   +   0 . 1 0 0   1 1 1       0 . 1 1 1   0 1 1   0 . 0 0 1   1®1   0 . 0 1 1   1 0 1       0   1 . 1     0   1   0 —— +0 ®0  1 0       1   0   1   . 1   0   1 —— +x*   +   0 . 1 0 0   1 1 1       0 . 1 1 0 1   0 . 0 0®1   0 . 0 1 1   0 1 0       1   1   0     1 . 1   0 —— +0 ®  1 0 1  1   1 0 1       0   1   1     0   1 . 1 —— +x*   +   0 . 1 0 0   1 1 1       0 . 1   0 . 0 1 1   0 1 0       0   0   1     1   0   1®1 1 0   1 0 0 
        [Mx × My]原=0.011 010(001 101) 3)结果规格化:     [x×y]阶补尾原=   = 0,010;0.011 010(001 101)   = 0,001;0.110 100(011 01) 4)舍入:设采用0舍1入法,应舍:     [x×y]阶补尾原=0,001;0. 110 100 5)溢出:无     x×y=2001×0.110 100
       
    28. 机器数格式同上题,要求阶码用移码运算,尾数用补码运算,计算x÷y。     (1)x=2101×   0.100111,             y=2011×(-0.101011);     (2)x=2110×(-0.101101),             y=2011×(-0.111100)。    
    解:先将x、y转换成机器数形式: (1)[x]阶移尾补=1,101;0.100 111       [y]阶移尾补=1,011;1.010 101   1)阶码相减:     [Ex]移+[-Ey]补=01,101+11,101                     =01,010(无溢出)
    2)尾数相除: (补码加减交替除法)       被除数(余数)           商       0 0 . 1 0 0   1 1 1       0 . 0 0 0   0 0 0       试减,   +   1 1 . 0 1 0   1 0 1         Mx、My异号,+[My]补       1 1 . 1 1    1 1 . 1 1 1   0 0 0                     1 .   +   0 0 . 1 0 1   0¬1   1 0 0 1    0 1 . 0 0 0   1 1¬1 1           r、My同号,+[-My]补       0 0 . 1 0 0   0 1 1   1 0                   1.0   +   1 1 . 0 1 0   1 0 1           r、My异号, +[My]补          0 0 . 1 1 0   1 1 0                 1.0 0   +   1 1 . 0¬0 0 . 0 1 1   0 1 1 1 1 0   1 0 1           r、My异号, +[My]补       0 0 . 0 0 1   0 1 1
    续:   被除数(余数)      0 0 . 0 1 0   1 1 0               1 . 0 0 0   +   1 1 . 0 1 0¬            商 1    1 1 . 0 1 0   1 1¬  1 0 1         r、My异号, +[My]补       1 1 . 1 0 1   0 1 1 1 0             1.0   0 0 1   +   0 0 . 1 0 1   0 1 1         r、My同号,+[-My]补          0 0 . 0 0 0   0 1 0           1.0 0   0 1 0   +   1 1 .¬0 0 . 0 0 0   0 0 1 1  1.0 0 0   1¬0 1 0   1 0 1         r、My异号, +[My]补       1 1 . 0 1 0   1 1 1   1 0 1 —— 恒置1   +   0 0 . 1 0 1   0 1 1       r、Mx异号,(恢复余数)       0 0 . 0 0 0   0 1 My]补= 1.000 101, [r]补=0.000 010     r= 0 .000¸0       且r、My同号, +[-My]补     [Mx  2-6 =0.000 000 000 010´010 
    3)结果规格化:已是规格化数。 4)舍入:已恒置1舍入。 5)溢出:无      y=2010×(-0.111 011) 方案二:采用阶补尾原形式:    ¸y]阶移尾补=1,010;1.000 101     x ¸[x [x]阶补尾原=0,101;0.100 111     [y]阶补尾原=0,011;1.101 011   1)阶码相减:     [Ex]补+[-Ey]补=00,101+11,101                     =00,010(无溢出)
    2)尾数相除: (原码加减交替除法)       被除数(余数)           商       0 0 . 1 0 0   1 1 1       0 . 0 0 0   0 0 0       试减,   +   1 1 . 0 1 0   1 0 1                         +[-My*]补          1 1 . 1 1 1   0 0 0                     0 .   +   0 0 .¬1 1 . 1 1 1   1 0 0 1    0¬0,+My*         0 0 . 1 0 0   0 1 1   1<1 0 1   0 1 1                     r 1 . 0 0 0   1 1 0                   0.1   +   1 1 . 0 1 0   1 0 1                  0 0 . 1 1 0   1 1 0              ¬0, +[-My*]补       0 0 . 0 1 1   0 1 1 1>  r 0, +[-My*]补       0 0 . 0 0>  0.1 1   +   1 1 . 0 1 0   1 0 1                 r 1   0 1 1
       0 0 . 0 1 0   1 1 0              ¬续:   被除数(余数)               商 1 0, +[-My*]补       1 1 . 1>0 . 1 1 1   +   1 1 . 0 1 0   1 0 1                 r    1 1 . 0 1 0   1 1 0             0.1   1 1 0   +   0 0 . 1 0 1  ¬0 1   0 1 1 1    0 0 . 0 0 0   0¬0,+My*       0 0 . 0 0 0   0 0 1 1<0 1 1                   r  0,>1 0           0.1 1   1 0 1   +   1 1 . 0 1 0   1 0 1                 r   0.1 1 1   0 1 0   +   0 0 . 1 0 1   0 1¬+[-My*]补       1 1 . 0 1 0   1 1 1   1 0 ,恢复余数,+My*       0 0 . 0 0 0   0 1 0                              <1       r   2-6 =0.000 000 000 010´My]原= 1.111 010     r*= 0 .000 010 ¸[Mx
    ¸y]阶补尾原=0,010;1.111 010     x ¸3)结果规格化:已是规格化数。 4)舍入:无 5)溢出:无     [x y=2010×(-0.111 010) (2)x=2110×(-0.101 101)       y=2011×(-0.111 100)       [x]阶移尾补=1,110;1.010 011       [y]阶移尾补=1,011;1.000 100   1)阶码相减:     [Ex]移+[-Ey]补=01,110+11,101                     =01,011(无溢出)
    2)尾数相除: (补码加减交替除法)       被除数(余数)           商       1 1 . 0 1 0   0 1 1       0 . 0 0 0   0 0 0       试减,   +   0 0 . 1 1 1   1 0 0         Mx、My同号,+[-My]补       0 0 . 0    0 0 . 0 1 1   1 1 0                     0 .   +   1 1 . 0 0 0  ¬0 1   1 1 1 1    1 1 . 0 0 0   1 0¬1 0 0           r、My异号,+[My]补       1 1 . 1 0 0   0 1 0   1 0                   0.1   +   0 0 . 1 1 1   1 0 0           r、My同号, +[-My]补        0 0 . 0 0 0   0 0 0                 0.1 0   +   1 1 .¬  0 0 . 0 0 0   0 0 0 1 0 0 0   1 0 0           r、My异号, +[My]补       1 1 . 0 0 0   1 0 0
    续:   被除数(余数)    1 0 . 0 0 1   0 0 0               0 . 1 0 1   +   0 0 . 1 1¬              商 1    1 0 . 0 0 1   0¬1   1 0 0         r、My同号, +[-My]补       1 1 . 0 0 0   1 0 0 1 0 0             0.1   0 1 1   +   0 0 . 1 1 1   1 0 0         r、My同号,+[-My]补        1 0 . 0 0 1   0 0 0           0.1 0   1 1 1   +   0 0¬  1 1 . 0 0 0   1 0 0 1  0.1 0 1  ¬. 1 1 1   1 0 0         r、My同号, +[-My]补       1 1 . 0 0 0   1 0 0   1 My]补= 0.101 111,¸1 1 1 —— 恒置1                                   r、Mx同号,结束。 [Mx 2-6 = -0.000 000 111 100´[r]补=1.000 100=[My]补 r= -0.111 100
        注:由于补码加减交替除法算法中缺少对部分余数判“0”的步骤,因此算法运行中的某一步已除尽时,算法不会自动停止,而是继续按既定步数运行完。此时商由算法本身的这一缺陷引入了一个误差,而余数的误差正好等于除数。     商的误差引入的原因:当r、My同号时,此题中表示够减(r、Mx同号);当r、My异号时,此题中表示不够减(r、Mx异号);因此,当r=0时,被判为不够减(实际上应为够减),商0(实际上应商1),由此引入了误差。
    3)结果规格化:已是规格化数。  y=2011× 0.101 111¸y]阶移尾补=1,011;0.101 111     x ¸4)舍入:已恒置1舍入。 5)溢出:无     [x 方案二:采用阶补尾原形式:       [x]阶补尾原=0,110;1.101 101       [y]阶补尾原=0,011;1.111 100   1)阶码相减:     [Ex]补+[-Ey]补=00,110+11,101                     =00,011(无溢出)
    2)尾数相除: (原码加减交替除法)       被除数(余数)           商       0 0 . 1 0 1   1 0 1       0 . 0 0 0   0 0 0       试减,   +   1 1 . 0 0 0   1 0 0                  1 1 . 1 0 0   0 1 0          ¬          +[-My*]补       1 1 . 1 1 0   0 0 1 1 0,+My*       0 0<          0 .   +   0 0 . 1 1 1   1 0 0                     r     0 0 . 1 1 1   1 0 0                   0.1   + 1 1 . 0 0 0¬. 0 1 1   1 1 0   1    0 0 . 0 0¬0, +[-My*]补       0 0 . 0 0 0   0 0 0 1>  1 0 0                 r  0,>0   0 0 0                 0.1 1   +   1 1 . 0 0 0   1 0 0                 r  +[-My*]补       1 1 . 0 0 0   1 0 0
       1 0 .¬续:   被除数(余数)                 商 1 0 0 1   0 0 0               0 . 1 1 0   +   0 0 . 1 1 1   1 0 0                    1 0 . 0 0 1   0 0 0             0.1¬0,+My*       1 1 . 0 0 0   1 0 0 1<    r  0,+My*       1 1 . 0 0<  1 0 0   +   0 0 . 1 1 1   1 0 0                     r     1 0 . 0 0 1   0 0 0           0.1 1   0 0 0   +   0 0 . 1 1 1   1¬0   1 0 0 1  0.1 1 0   0 0 0¬0,+My*       1 1 . 0 0 0   1 0 0   1<0 0                     r  0,恢复余数,+My*       0 0 . 0 0 0   0 0 0<  +   0 0 . 1 1 1   1 0 0         r  2-6 = -0.000 000 000 000´My]原= 0.110 000, r= -0.000 000¸[Mx
    3)结果规格化:已是规格化数。  y=2011× 0.110 000 29.¸y]阶补尾原=0,011;0.110 000     x ¸4)舍入:无 5)溢出:无     [x 设机器字长为32位,用与非门和与或非门设计一个并行加法器(假设与非门的延迟时间为30ns,与或非门的延迟时间为45ns),要求完成32位加法时间不得超过0.6µs。画出进位链及加法器逻辑框图。
        解:首先根据题意要求选择进位方案:     1)若采用串行进位链(行波进位),则在di、ti函数的基础上,实现32位进位需要的时间为:     30=1920ns     不满足0.6µs的加法时间限制,不能用。(设1ty=30ns)    ´32=64ty=64´T=2ty 30=600ns  ´8组=20ty=20´2)若采用单重分组跳跃进位(级连方式),则在di、ti的基础上,4位一组分组,32位进位需:     T=2.5ty   刚好满足0.6 µs加法时间的限制,
        考虑到一次加法除进位时间外,还需di、ti函数的产生时间、和的产生时间(最高位和)等因素,故此进位方案仍不适用。     30=450ns    ´6组=15ty=15´结论:若采用单重分组跳跃进位,小组规模需在6位以上较为合适。即:     T=2.5ty 除进位外还有150ns(约5ty)左右的时间供加法开销,较充裕。     3)若采用双重分组跳跃进位(二级先行—级联进位),4位一小组,4小组为一大组分组,则32位进位需:     30=300ns     完全满足0.6µs的加法时间限制,可以使用。´4级=10ty=10´T=2.5ty
        32位双重分组跳跃进位的进位链框图见教材287页图6.23。     6位一组单重分组跳跃进位的进位链框图如下:
        加法器逻辑框图如下。图中,进位链电路可选上述两种方案之一。
    30. 设机器字长为16位,分别按4、4、4、4和5、5、3、3分组,     (1)画出按两种分组方案的单重分组并行进位链框图,并比较哪种方案运算速度快。     (2)画出按两种分组方案的双重分组并行进位链框图,并对这两种方案进行比较。     (3)用74181和74182画出单重和双重分组的并行进位链框图。     解:     (1)4—4—4—4分组的16位单重分组并行进位链框图见教材286页图6.22。
        5—5—3—3分组的16位单重分组并行进位链框图如下:
        (2)4—4—4—4分组的16位双重分组并行进位链框图见教材289页图6.26。     5—5—3—3分组的16位双重分组并行进位链框图如下:
      3=7.5ty;    ´3=7.5ty;     5—5—3—3分组的进位时间=2.5ty´  4—4—4—4分组的进位时间=2.5ty 两种分组方案最长加法时间相同。     结论:双重分组并行进位的最长进位时间只与组数和级数有关,与组内位数无关。
        (3)单重分组16位并行加法器逻辑图如下(正逻辑):
    注意:   1)181芯片正、负逻辑的引脚表示方法;   2)为强调可比性,5-5-3-3分组时不考虑扇入影响;   3)181芯片只有最高、最低两个进位输入/输出端,组内进位无引脚;   4)181为4位片,无法5-5-3-3分组,只能4-4-4-4分组;   5)单重分组跳跃进位只用到181,使用182的一定是双重以上分组跳跃进位;   6)单重分组跳跃进位是并行进位和串行进位技术的结合;双重分组跳跃进位是二级并行进位技术;特别注意在位数较少时,双重分组跳跃进位可以采用全先行进位技术实现;位数较多时,可采用双重分组跳跃进位和串行进位技术结合实现。
    第   七   章
    8. 画出先变址再间址及先间址再变址的寻址过程示意图。    
    解:1)先变址再间址寻址过程简单示意如下:               EA=[(IX)+A],   IX®(IX)+1
    IX®2)先间址再变址寻址过程简单示意如下:     EA=(IX)+(A),   (IX)+1
        注意:    3)寻址后把操作数送回指令操作码,再访存。´1)英文缩写EA表示有效地址,不能乱用。   2)示意图中应标明EA(有效地址)的位置。
    12. 16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答:´某机主存容量为4M     (1)画出一地址指令格式并指出各字段的作用;     (2)该指令直接寻址的最大范围;     (3)一次间址和多次间址的寻址范围;     (4)立即数的范围(十进制表示);
        (5)相对寻址的位移量(十进制表示);     (6)上述六种寻址方式的指令哪一种执行时间最短?哪一种最长?为什么?哪一种便于程序浮动?哪一种最适合处理数组问题?     (7)如何修改指令格式,使指令的寻址范围可扩大到4M?     (8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。
        解:     (1)单字长一地址指令格式:         7             3           6
        (2)A为6位,该指令直接寻址的最大范围为26=64字;     (3)一次间址的寻址范围为216=64K字;     多次间址的寻址范围为215=32K字;     (4)立即数的范围:若采用补码表示为1FH~20H;十进制表示为31~ -32;无符号数为0~63;     (5)相对寻址的位移量范围在采用补码表示时同立即数范围,为31~ -32;
        (6)六种寻址方式中,立即寻址指令执行时间最短,因为此时不需寻址;     间接寻址指令执行时间最长,因为寻址操作需访存一次到多次;     相对寻址便于程序浮动,因为此时操作数位置可随程序存储区的变动而改变,总是相对于程序一段距离;     变址寻址最适合处理数组问题,因为此时变址值可自动修改而不需要修改程序。
        (7)为使指令寻址范围可扩大到4M,需要有效地址22位,此时可将单字长一地址指令的格式改为双字长,如下图示:         7             3             6
        (8)如使一条转移指令能转移到主存的任一位置,可采用上述双字长一地址指令,通过选用合适的寻址方式完成。(如选用直接寻址就可转移到主存任一位置,但选用相对寻址则只能在±2M范围内转移。)     除此之外,(7)、(8)两题也可通过段寻址方式达到扩大寻址空间的目的。总之,不论采取何种方式,最终得到的实际地址应是22位。
    方案二:     (7)如果仍采用单字长指令(16位)格式,为使指令寻址范围扩大到4M,可通过段寻址方案实现。安排如下:     硬件设段寄存器DS(16位),用来存放段地址。在完成指令寻址方式所规定的寻址操作后,得有效地址EA(16位),再由硬件自动完成段寻址,最后得22位物理地址。    26 + EA    ´  物理地址=(DS) 注:段寻址方式由硬件隐含实现。在编程指定的寻址过程完成、EA产生之后由硬件自动完成,对用户是透明的。
    方案三:     (7)在采用单字长指令(16位)格式时,还可通过页面寻址方案使指令寻址范围扩大到4M。安排如下:     硬件设页面寄存器PR(16位),用来存放页面地址。指令寻址方式中增设页面寻址。当需要使指令寻址范围扩大到4M时,编程选择页面寻址方式,则:     EA =(PR)‖A (有效地址=页面地址“拼接”6位形式地址)     这样得到22位有效地址。  
     (5)相对寻址的位移量范围为:    ´讨论:     (6)基址寻址便于程序浮动;´(PC)-32; (PC内容此时做基地址使用,形式地址给出位移量) ~(PC)+31  (7)采用基址寻址:  ´(基址寻址的程序浮动能力没有相对寻址强,在两种寻址方式都给出的情况下,描述程序浮动能力时应选相对寻址)   采用32位指令:(应为双字长指令)´物理地址=段地址+段内位移量A
        通过基址寻址与段寻址获得实际地址的区别:     存储器地址位数),位移量比较短(=形式地址位数),相加后得到的有效地址长度=基地址长度。此时主存不分段。  ³1)基址寻址的基地址一般比较长( 实际地址=有效地址=基地址+位移量     段寻址是基址寻址的一种变种,当基地址短于存储地址时,基址寻址就变成了段寻址,基地址就叫做段地址,此时主存分段。   偏移量+段内位移量(有效地址)´实际地址=段地址
    存储字长的机器中,可直接通过寻址计算获得实际地址。    ³    2)基址寻址一般在机器字长 存储字长的机器中,由于CPU内部数据通路的限制,编程指定的任何一种寻址计算得到的有效地址长度都等于机器字长,为获得更长的地址字,硬件自动通过段寻址计算出存储器实际地址。£在机器字长  (7)采用变址间接寻址,变址寄存器6位,先变址,再间址,   EA=(6位基地址)*(16位间接地址)     =26*216=222  ´   (通过乘法运算进行寻址操作太慢且复杂,无机器用过)
     (8)如使一条转移指令能转移到主存的任一位置,可采用RS型指令; (´   两个错:1)RS型只是二地址以上指令的类型,即指令中二个地址场一个给出寄存器号,一个给出面向存储器的地址信息。2)题意的实现与寻址方式和形式地址长度有关,与指令的地址场结构无直接关系。) 16位容量=226位,采用变址间接寻址,变址寄存器10位,210*216构成26位地址;´ 4M´ (两个错:1)存储器地址结构错;2)寻址计算方法错,见前面的讨论)
    ´   (8)A需22位,采用(7)的双字长指令格式,令PC=0,当PC取不同值时指明当前位置不同; (把转移指令(指令的跳跃寻址)与数据的相对寻址混淆。转移指令可重置PC值,相对寻址时只是用PC的值,而不能对其修改) 相关问题: * 一般:机器字长=存储字长; * CPU中所有寄存器(包括基址寄存器)的位数=机器字长;
    * 通常:指令字长不一定等于机器字长。早期的小型机由于字长较短,指令常以机器字长为单位变化(几字长指令,如PDP-11机),目前以字节长为单位变化(几字节指令)的较多。习题中指令字长=机器字长的假设只是为简单起见; * 当设指令字长=存储字长(=机器字长)时,如用立即寻址,由于立即数由形式地址直接给出,而形式地址的位数肯定不足一个字长,因此立即寻址非常适用于编程给出短常数的场合。如果非要把立即数存入存储器,那就只好高位补0了。干吗这样用呢?   提示:寻址方式的正确选择与编程技巧有关。
    15. 某CPU内有32个32位的通用寄存器,设计一种能容纳64种操作的指令系统。假设指令字长等于机器字长,试回答:     (1)如果主存可直接或间接寻址,采用“寄存器—存储器”型指令,能直接寻址的最大存储空间是多少?画出指令格式并说明各字段的含义。     (2)如果采用通用寄存器作基址寄存器,则上述“寄存器—存储器”型指令的指令格式有何特点?画出指令格式并指出这类指令可访问多大的存储空间?
        解:     (1)如采用RS型指令,则此指令一定是二地址以上的地址格式,指令格式如下:         6         5       1         20
        (2)如采用基址寻址,则指令格式中应给出基址寄存器号,以指定哪一个通用寄存器用作基址寄存器。指令格式变为:     6         5     1   1     5       14
     (2)指令格式:´讨论:  
    16. 某机字长16位,存储器直接寻址空间为128字,变址时的位移量为-64~+63,16个通用寄存器均可作为变址寄存器。采用扩展操作码技术,设计一套指令系统格式,满足下列寻址类型的要求:     (1)直接寻址的二地址指令3条;     (2)变址寻址的一地址指令6条;     (3)寄存器寻址的二地址指令8条;     (4)直接寻址的一地址指令12条;     (5)零地址指令32条。     试问还有多少种代码未用?若安排寄存器寻址的一地址指令,最多还能容纳多少条?
        解:题意分析:     设指令字长=机器字长,128字的直接寻址空间要求形式地址A为7位,-64~+63的位移量也需7位(6位加1位符号位),16个通用寄存器作变址寄存器需4位变址寄存器号,则指令格式为:     (1)直接寻址的二地址指令:   2             7                 7
        (3)寄存器寻址的二地址指令:           8               4           4
        (6)若安排寄存器寻址的一地址指令,指令格式应为:               12                     4
        操作码编码分配: 0 0 0 1       A1,A2;   3条直接寻址的二地址指令。 1 0 1 1   0 0 0 ……   ……     IX,A;6条变址寻址的一地址指令。 1 1   1 0 1 1 1   1 1 0   0 0 0 ……   ……   ……     Ri,Rj; 1 1   1 1 0   1 1 1     8条寄存器寻址的二地址指令。 1 1   1 1 1   0 0 0 0 ……   ……   ……       A; 1 1   1 1 1   1 0 1 1     12条直接寻址的一地址指令。
    续: 1 1   1 1 1   1 1 0 0   0 0 0 ……   ……   ……     ……       Ri; 1 1   1 1 1   1 1 1 0   1 1 1     30条寄存器寻址的 1 1   1 1 1   1 1 1 1   0 0 0     一地址指令。 ……   ……     ……     ……     (利用30个冗余编码) 1 1   1 1 1   1 1 1 1   1 0 1 1 1   1 1 1   1 1 1 1   1 1 0   0 0 0 0 ……   ……     ……     ……     ……       32条0地址 1 1   1 1 1   1 1 1 1   1 1 1   1 1 1 1     指令
     不画所设计的指令格式图,只分配指令操作码编码。  ´讨论:     指令格式中安排寻址方式字段,例:   2         3         4             7    ´
    评注:这是一道指令格式设计题,本题已给出了各种指令所需的条数,因此,在根据题意画出各种指令的格式后,剩下的工作就是要为每一条指令分配编码。在采用扩展操作码技术分配指令编码时,扩展的基本方法是在所设计的指令系统中,选定一种操作码位数最少的指令格式作为基本格式,然后在这种基本格式的基础上进行操作码编码的扩展。为便于硬件译码结构的实现,编码分配应尽量做到有序、有规律。特别是扩展标志码的选择,应尽量采用特征较强的编码,象全‘1’编码等。另外,应在某类指令的编码全部安排完后,再考虑安排扩展标志码,以避免漏排或重码等不必要的混乱。
    17. 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?     解:1)若采用定长操作码时,二地址指令格式如下:     4               6                 6
        设二地址指令有K种,则:     K=24-M-N     当M=1(最小值),N=1(最小值)时,二地址指令最多有:     Kmax=16-1-1=14种     2)若采用变长操作码时,二地址指令格式仍如1)所示,但操作码长度可随地址码的个数而变。此时,     K= 24 -(N/26 + M/212 );    1时,K最大, 则二地址指令最多有:    £      (N/26 + M/212 向上取整)     当(N/26 + M/212 ) Kmax=16-1=15种(只留一种编码作扩展标志用。)
        讨论:此时,一地址指令条数为:     N=(24 - K)×26 - M/26;         ( M/26向上取整)。     零地址指令条数为:     M = 216 - 212K - 26N;     当K最大时(K=15),一地址指令最多有:     Nmax=64 - 1=63种;     零地址指令最多有:     Mmax=64种     注意:应首先根据题意画出指令基本格式。

    第   八   章
    2. 什么是指令周期?指令周期是否有一个固定值?为什么?     解:     指令周期是指一条指令从开始取直到执行完这段时间。     由于计算机中各种指令执行所需的时间差异很大,因此为了提高CPU运行效率,即使在同步控制的机器中,不同指令的指令周期长度都是不一致的,也就是说指令周期对于不同的指令来说不是一个固定值。 讨论:指令周期长度不一致的根本原因在于设计者,为了提高CPU运行效率而这样安排的,与指令功能不同及指令实际执行时间不同没有什么必然关系。
    4. 设CPU内有下列部件:PC、IR、SP、AC、MAR、MDR和CU,要求:     (1)画出完成间接寻址的取数指令LDA@X(将主存某地址单元X的内容取至AC中)的数据流(从取指令开始)。     (2)画出中断周期的数据流。     解:CPU中的数据流向与所采用的数据通路结构直接相关,不同的数据通路中的数据流是不一样的。常用的数据通路结构方式有直接连线、单总线、双总线、三总线等形式,目前大多采用总线结构,直接连线方式仅适用于结构特别简单的机器中。
        为简单起见,本题采用单总线将题意所给部件连接起来,框图如下:
    ¯              LDA@X指令周期流程图:         说   明 
    ¯      LDA
    ¯(2)中断周期流程图如下:       说   明                  
              A                            说   明¯
        讨论:解这道题有两个要素,首先要根据所给部件设计好数据通路,即确定信息流动的载体。其次选择好描述数据流的方法,无论采用什么样的表达方式,其关键都要能清楚地反映数据在通路上流动的顺序,即强调一个“流”字。较好的表达方式是流程图的形式。
    13. 在中断系统中INTR、INT、EINT三个触发器各有何作用?     解:INTR——中断请求触发器,用来登记中断源发出的随机性中断请求信号,以便为CPU查询中断及中断排队判优线路提供稳定的中断请求信号;     EINT——中断允许触发器,CPU中的中断总开关。当EINT=1时,表示允许中断(开中断),当EINT=0时,表示禁止中断(关中断)。其状态可由开、关中断等指令设置;     INT——中断标记触发器,控制器时序系统中周期状态分配电路的一部分,表示中断周期标记。当INT=1时,进入中断周期,执行中断隐指令的操作。
    讨论: ´ 当进入中断周期时,INT=1; (INT=1时,进入中断周期)   ´    回答时首先应给出该触发器的中文名称,然后说明其主要作用。    INT与EINT配合使用以实现关中断功能,即INT=1,反相后使EINT=0; (关中断并不是INT的主要功能,进入中断周期后要执行中断隐指令的全部三个功能)  INT表示自愿中断,完成系统调用;´   (尽管INT触发器的英文缩写与INT指令助记符完全相同,但它们一个是硬件设置,一个是软中断指令,其作用完全不同)
    ´   ´ INT表示处于中断状态中; (INT并不是在整个中断过程中都存在) ´INT标记目前是否正在运行中断程序; (INT标记在运行中断程序时已不存在)      INT判断中断过程中是否接受其它中断请求,INT=0时,开中断,允许中断嵌套;  EINT判断CPU是否响应中断请求;´(INT标记与中断嵌套技术没有任何关系。它不能表示出中断过程中是否接受其它中断请求,INT=0也不表示开中断)  (CPU根据EINT状态决定是否响应中断请求)
    ´ 当CPU响应中断时,EINT置1; (当EINT=1时,允许CPU响应中断) ´ EINT确保CPU响应中断后,不受新的中断干扰; ´(CPU响应中断在先,进入中断周期后才使EINT=0,仅在单重中断时,整个中断过程EINT=0,不接受新的中断请求)   INTR=1,判断哪个中断源有请求;´EINT表示中断隐指令,INT起关中断作用; (把EINT和INT的作用搞反了)  (INTR对中断源的请求进行登记,当INTR=1时,表示有请求)
    20. 现有A、B、C、D四个中断源,其优先级由高向低按A、B、C、D顺序排列。若中断服务程序的执行时间为20µs,请根据下图所示时间轴给出的中断源请求中断的时刻,画出CPU执行程序的轨迹。     解: CPU执行程序的轨迹图如下:
    L1®   
    21. 某机有五个中断源L0、L1、L2、 L3、L4,按中断响应的优先次序由高向低排序为L0 L2,根据下示格式,1)写出各中断源的屏蔽字。®L0 ®L4 ®L3 ®L4,现要求中断处理次序改为L1®L3 ®L2 ® 2)按照修改过的处理次序,当五个中断请求信号同时到来时,请画出CPU中断处理过程。 解:1)各中断源屏蔽状态见下表:
        表中:设屏蔽位=1,表示屏蔽;屏蔽位=0,表示中断开放。     为了使所有中断都能得到及时响应,现行程序的中断屏蔽字一般设为全开放(全0)状态。
    现行程序(00000)
    讨论:    图中括号内为各程序的屏蔽码。     注意:中断屏蔽码的判优作用体现在对低级中断请求的屏蔽上,对于多个同时到来的高级中断请求信号之间则只有开放作用,没有判优作用。此时还需依赖硬件排队线路完成进一步的判优。
      C,为改变中断处理次序,将它们的中断屏蔽字分别设为:               设备    >B>  22. 设某机配有A、B、C三台设备,其优先顺序是A 屏蔽字                 A         1 1 1                 B         0 1 0                 C         0 1 1     s。m请按下图所示时间轴给出的设备请求中断的时刻,画出CPU执行程序的轨迹。设A、B、C中断服务程序的执行时间均为20
    解: CPU执行程序的轨迹图如下:
    讨论:当从B中断转到C中断时,不返回现行程序,下述程序运行轨迹是错误的:
    第   九   章
    3. 什么是指令周期、机器周期和时钟周期?三者有何关系?     解:CPU每取出并执行一条指令所需的全部时间叫指令周期;机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需时间,通常安排机器周期长度=主存周期;时钟周期是指计算机主时钟的周期时间,它是计算机运行时最基本的时序单位,对应完成一个微操作所需时间,通常时钟周期=计算机主频的倒数。
    4. 能不能说机器的主频越快,机器的速度就越快,为什么?     解:不能说机器的主频越快,机器的速度就越快。因为机器的速度不仅与主频有关,还与数据通路结构、时序分配方案、ALU运算能力、指令功能强弱等多种因素有关,要看综合效果。
    5. 设机器A的主频为8MHz,机器周期含4个时钟周期,且该机的平均指令执行速度是0.4MIPS,试求该机的平均指令周期和机器周期,每个指令周期中含几个机器周期?如果机器B的主频为12MHz,且机器周期也含4个时钟周期,试问B机的平均指令执行速度为多少MIPS?     解:先通过A机的平均指令执行速度求出其平均指令周期,再通过主频求出时钟周期,然后进一步求出机器周期。B机参数的算法与A机类似。     计算如下:
    A机平均指令周期=1/0.4MIPS=2.5µs A机时钟周期=1/8MHz=125ns A机机器周期=125ns×4=500ns=0.5µs 83ns B机机器周期 =83ns×4 =332ns»A机每个指令周期中含机器周期个数     =2.5µs÷0.5µs=5个 B机时钟周期 =1/12MHz      设B机每个指令周期也含5个机器周期,则: B机平均指令周期=332ns×5=1.66µs B机平均指令执行速度=1/1.66µs                           =0.6MIPS     结论:主频的提高有利于机器执行速度的提高。
    6. 设某机主频为8MHz,每个机器周期平均含2个时钟周期,每条指令平均有2.5个机器周期,试问该机的平均指令执行速度为多少MIPS?若机器主频不变,但每个机器周期平均含4个时钟周期,每条指令平均有5个机器周期,则该机的平均指令执行速度又是多少MIPS?由此可得出什么结论?     解:先通过主频求出时钟周期,再求出机器周期和平均指令周期,最后通过平均指令周期的倒数求出平均指令执行速度。计算如下:
    时钟周期=1/8MHz=0.125×10-6 =125ns 机器周期=125ns×2=250ns 平均指令周期=250ns×2.5=625ns 平均指令执行速度=1/625ns=1.6MIPS     当参数改变后: 机器周期= 125ns×4=500ns=0.5µs 平均指令周期=0.5µs×5=2.5µs 平均指令执行速度=1/2.5µs=0.4MIPS     结论:两个主频相同的机器,执行速度不一定一样。
    7. 某CPU的主频为8MHz,若已知每个机器周期平均包含4个时钟周期,该机的平均指令执行速度为0.8MIPS,试求该机的平均指令周期及每个指令周期含几个机器周期?若改用时钟周期为0.4µs的CPU芯片,则计算机的平均指令执行速度为多少MIPS?若要得到平均每秒40万次的指令执行速度,则应采用主频为多少的CPU芯片?
        解:先通过主频求出时钟周期时间,再进一步求出机器周期和平均指令周期。     时钟周期=1/8MHz=0.125×10-6                         =125ns     机器周期=125ns×4=500ns=0.5µs     平均指令周期=1/0.8MIPS                     =1.25 ×10-6=1.25µs     每个指令周期所含机器周期个数   = 1.25µs/0.5µs=2.5个
        当芯片改变后,相应参数变为:     机器周期=0.4µs×4=1.6µs     平均指令周期=1.6µs×2.5=4µs     平均指令执行速度=1/4µs                           =0.25MIPS     若要得到平均每秒40万次的指令执行速度,则应采用的主频为:     平均指令周期=1/0.4MIPS                     =2.5 ×10-6=2.5µs     机器周期=2.5µs÷2.5=1µs     时钟周期= 1µs÷4=0.25µs     主频=1/0.25µs=4MHz
    8. 某计算机的主频为4MHz,各类指令的平均执行时间和使用频度如下表所示,试计算该机的速度(单位用MIPS表示),若上述CPU芯片升挡为6MHz,则该机的速度又为多少? s        ms           0.8m指令类别   存取       加、减、比较、转移   乘除   其他 平均指令   执行时间   0.6 s 使用频度   35%             50%             5%     10%ms   1.4m  10
        解: (1)指令平均运行时间 =           (0.6×0.35+0.8×0.5+10×0.05+1.4×0.1)μs                                 = 1.25μs           机器平均运行速度 = 1/1.25μs = 0.8MIPS       (2) 解法一: 时钟周期 = 1/4MHz = 0.25μs           指令平均运行周期数 = 1.25μs ÷0.25μs                                   = 5CPI           时钟周期 = 1/6MHz ≈ 0.167μs           指令平均运行时间 = 0.167μs×5                               ≈ 0.833μs           机器平均运行速度 = 1/0.833μs                               ≈ 1.2MIPS
    11. 设CPU内部结构如图9.4所示,此外还设有B、C、D、E、H、L六个寄存器,它们各自的输入和输出端都与内部总线相通,并分别受控制信号控制(如Bi为寄存器B的输入控制;Bo为B的输出控制)。要求从取指令开始,写出完成下列指令所需的控制信号。 AC)    ®B) (2)SUB   A,H;((AC)-(H) ®(1)ADD   B,C;((B)+(C)  解:先画出相应指令的流程图,然后将图中每一步数据通路操作分解成相应的微操作,再写出同名的微命令即可。
     (1) ADD B,C指令流程及微命令序列如下:  ¯           
    Bo,Yi Co,ALUi,+ Zo,Bi
                 (2) SUB A,H指令流程及微命令序列如下:  ¯ 
    Ho,Yi ACo,ALUi,– Zo,ACi

    第   十   章
    1. 假设响应中断时,要求将程序断点存在堆栈内,并且采用软件办法寻找中断服务程序的入口地址,试写出中断隐指令的微操作及节拍安排。     ®MDR,1®MAR T1     PC®EINT,SP®解:设软件查询程序首址为0号内存单元,则中断隐指令的微操作命令及节拍安排如下: T0     0 SP T4    ® W,SP+1®MDR,1®M(MAR) T3     PSW®MAR,MDR®SP T2     SP®W,SP+1 M(MAR)     由于题意中没有给出确切的数据通路结构,故上述节拍分配方案的并行性较低。®PC,MDR®0
    2. 写出完成下列指令的微操作及节拍安排(包括取指操作)。     (1)指令ADD R1,X完成将R1寄存器的内容和主存X单元的内容相加,结果存于R1的操作。     (2)指令ISZ X完成将主存X单元的内容增1,并根据其结果若为0,则跳过下一条指令执行。     解:该题题意中没有指定数据通路,因此排序前应先设定一下。在此设采用单总线结构的CPU数据通路,且ALU输入端设两个暂存器C、D(见17题图)。并设采用同步控制,每周期3节拍:
      R         T1  ®MAR,1®  (1)指令ADD R1,X的微操作及节拍安排如下:     取指周期:         T0   PC ID     执行周期1:         T0  ®IR,OP(IR)®MDR         T2   MDR®PC+1,M(MAR) D     执行周期2:        ®MDR         T2   MDR®C,M(MAR)®R         T1   R1®MAR,1®X(IR) R1®T0         T1         T2   +,ALU
        (2)指令ISZ X的微操作及节拍安排(取指周期同(1),略):     C    ®MDR         T2   MDR®R         T1   M(MAR)®MAR,1®执行周期1:         T0   X(IR) M(MAR)      ® -W         T2   MDR®MDR         T1   0®执行周期2:         T0   +1,ALU         (PC+1)•Z     (设Z为结果为0标志)     该指令的操作在一个执行周期做不完,因此安排了两个执行周期。
    3. 按序写出下列程序所需的全部微操作命令及节拍安排。
        解:由于题意未明确要求采用何种控制器结构,故仍按较简单的组合逻辑时序关系安排节拍(单总线、同步控制,假设同上题):     LDA 206 指令:     ID    ®IR,OP(IR)®MDR     T2   MDR®R     T1   PC+1,M(MAR)®MAR,1®取指周期:     T0   PC AC®MDR     T2   MDR®R     T1   M(MAR)®MAR,1®执行周期:     T0   206(IR)
        ADD C    ®MDR,AC®R     T1   M(MAR)®MAR,1®207 指令:取指周期:同上。     执行周期1:     T0   207(IR) AC     BAN 204 指令:取指周期:同上。  ®D     执行周期2:     T0     T1     T2   +,ALU®T2   MDR PC®  执行周期: (设N为结果为负标志)     T0       T1       T2   N•204(IR)
        STA 205 指令:    -W     T2  ®MDR,0®MAR     T1   AC®  取指周期:同上。     执行周期:     T0   205(IR) G    ®M(MAR)     STP 指令:     取指周期:同上。     执行周期:     T0       T1     T2   0®MDR (G为停机标志。)
    4. 已知带返转指令的含义如下图所示,写出机器在完成带返转指令时,取指阶段和执行阶段所需的全部微操作及节拍安排。         主程序             子程序
        解:假设同上题,仍按组合逻辑、单总线、同步控制安排,带返转指令的全部微操作及节拍如下:     ID    ®IR,OP(IR)®MDR     T2   MDR®R     T1   PC+1,M(MAR)®MAR,1®取指周期:     T0   PC M(MAR)    ® W     T2   MDR®MDR),1®MDR(PC®MAR     T1   M+1®执行周期:     T0   Ad(IR) PC)®PC (MAR +1®      K+1
    10. 能否说水平型微指令就是直接编码的微指令,为什么?     解:不能说水平型微指令就是直接编码的微指令,因为符合水平型微指令特征的微指令都属于水平型微指令,常见的有:直接编码、字段直接编码、字段间接编码,及混合编码等。直接编码的微指令只是最典型的一种。
    13. 设控制存储器的容量为512×48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:
    17. 假设机器的主要部件有:程序计数器PC,指令寄存器IR,通用寄存器R0、R1、R2、R3,暂存器C、D,ALU,移位器,存储器地址寄存器MAR,存储器数据寄存器MDR及存储矩阵M。     (1)要求采用单总线结构画出包含上述部件的硬件框图,并注明数据流动方向。     (2)画出ADD(R1),(R2)指令在取指阶段和执行阶段的信息流程图。 R1寄存器存放源操作数地址,R2寄存器存放目的操作数的地址。     (3)写出对应该流程图所需的全部微操作命令。
        解: (1)采用单总线结构的CPU硬件框图如下:
    (2)ADD(R1),(R2)   ¯(3)对应该流程图所       指令流程图如下:       需的全部微操作命令。              
    R®R1o,MARi 1  R MDRo,Di®MDRo,Ci R2o,MARi 1
     -W 公操作®+,D,MDRi 0
    18. 假设机器的主要部件同17题,外加一个控制门G。     (1)要求采用双总线结构(每组总线的数据流动方向是单向的),画出包含上述部件的硬件框图,并注明数据流动方向。     (2)画出SUB R1操作的指令周期信息流程图(假设指令地址已放在PC中),并列出相应的微操作控制信号序列。®R1,R3完成(R1)-(R3)
        解: (1)双总线结构的CPU硬件框图如下:
        (2) SUB R1,R3指令周期流程图如下:
    R1o,G,Ci R2o,G,Di -,D,G,R1i
    19. 下表给出8条微指令I1~I8及所包含的微命令控制信号,设计微指令操作控制字段格式,要求所使用的控制位最少,而且保持微指令本身内在的并行性。
        解:为使设计出的微指令操作控制字段最短,并且保持微指令本身内在的并行性,应采用混合编码法。首先找出互斥的微命令组,为便于分析,将微命令表重画如下:
        由表中微命令的分布情况可看出:a、b、c、d、e微命令的并行性太高,因此不能放在同一字段中。另外,由分析可知,在2、3、4分组的互斥组中,3个一组的微命令互斥组对控制位的压缩作用最明显。因此,应尽可能多的找出3个一组的互斥组。现找出的互斥组有:cfj,dij,efh,fhi,bgj,ehj,efj……等等。     从中找出互不相重的互斥组有两个:dij,efh。则:微指令操作控制字段格式安排如下:   1     1     1     1     2       2
        各字段编码分配如下: a —— 0 无操作;   b —— 0 无操作;         1   a微命令;         1 b微命令 c —— 0 无操作;   g —— 0 无操作;         1 c微命令;           1 g微命令 dij —— 00 无操作; efh —— 00 无操作;           01 d微命令;         01   e           10 i微命令;         10   f           11 j微命令;         11   h                 注:每组都应为“无操作”留一种编。     与采用直接控制法比较:     直接控制法:10个微命令需10位操作控制位;     本方案:10个微命令需8位操作控制位,压缩了2位。

  • 相关阅读:
    Apache 虚拟主机 VirtualHost 配置
    EAX、ECX、EDX、EBX寄存器的作用
    Python中文文档 目录(转载)
    八度
    POJ 3268 Silver Cow Party (最短路)
    POJ 2253 Frogger (求每条路径中最大值的最小值,Dijkstra变形)
    2013金山西山居创意游戏程序挑战赛——复赛(1) HDU 4557 非诚勿扰 HDU 4558 剑侠情缘 HDU 4559 涂色游戏 HDU 4560 我是歌手
    HDU 4549 M斐波那契数列(矩阵快速幂+欧拉定理)
    UVA 11624 Fire! (简单图论基础)
    HDU 3534 Tree (树形DP)
  • 原文地址:https://www.cnblogs.com/muyoushui/p/1626163.html
Copyright © 2011-2022 走看看