《计算机系统概论》-第4章-习题答案

  1. 写出冯·诺依曼模型的5个组成部分,并写出各个部件的功能和目的。
    输入设备:输入数据
    输出设备:输出结果
    控制器:控制程序执行
    内存:存放程序(各种运行指令)
    处理器:对数据进行处理和运算

  2. 简要描述一下内存和处理单元的接口,即内存和处理单元的通信方式。
    通过地址寄存器(MAR)和数据寄存器(MDR)两个接口,来完成数据在内存中的读、写操作。

  3. 程序计数器(PC)的命名可能存在什么误导?为什么说指令指针(Instruction Pointer,IP)的命名更加合适?
    计数器可能会被理解成一个数字,实际上代表的是下一条待处理的指令的地址,所以用指令指针更加合适。

  4. 请解释一个计算机的“字长”(word length)的定义。字长对计算机的工作有什么影响?基于第1章中的知识,试判断以下论断是否正确:字的长度越大,处理的信息越多,因而计算能力也更强。
    ALU所能处理的量化大小(size of quantity)通常被称为该计算机的“字长”(word length)。
    不同的字长用在不同用途的计算机中。
    不正确。

  5. 如下表格代表的是一个很小的内存。请基于以下表格回答问题。
    《计算机系统概论》-第4章-习题答案_第1张图片
    a. 地址为3的内存单元存放的数值是多少?地址6呢?
    地址3:0000 0000 0000 0000
    地址6:1111 1110 1101 0011
    b. 每个地址单元的二进制码数值可以有多种解释方法。之前我们学过,它可以是一个无符号数、有符号补码或是浮点数等。
    1 ) 分别写出地址0和地址1数值所对应的补码数;
    0的补码数:7747
    1的补码数:-4059
    2 ) 写出地址4对应的ASCII码;
    e
    3 ) 写出地址6和7对应的IEEE浮点数值(6和7合起来,表示一个32位浮点数);
    英文原版中,指出7在6的前面,合成一个32位浮点数,其二进制为
    0000 0110 1101 1001 1111 1110 1101 0011
    浮点数表示:1.1 1001 1111 1110 1101 0011 x 2-114
    4 ) 分别写出地址0和地址1对应的无符号整数值。
    地址0:7747
    地址1:61477
    c. 在冯·诺依曼模型中,一个内存单元中的数值既可能代表数据也可能代表指令,如果将地址0的内容看做是一条指令,问该指令是什么(LC-3)?
    ADD,R7,R1,R3
    d. 一个二进制数还可以表示为一个内存地址。假设地址5单元存放的是一个内存地址,那么它指向的单元地址是多少?该地址中存放的数值又是多少?
    单元地址:6
    6存放数值:1111 1110 1101 0011

  6. 一条指令有哪两个主要的组成部分?试简述这两个组成部分的内容和作用。
    操作码和操作数两部分组成
    操作码:存放操作指令
    操作数:存放操作数据

  7. 假设一个32位指令的格式如下:
    4.7
    如果存在60种操作码和32个寄存器,试问立即数部分(IMM)可表达的范围是多大(IMM的编码方式为补码)?
    60种操作码可以通过6位表示
    32个寄存器可以通过5位表示
    IMM还剩下16位可以表示,可表达的范围是:
    -2-15~ 215-1

  8. 假设一个32位指令的格式如下:
    4.8
    如果操作码的数目是225,寄存器数目是120,试问:
    a. 指令中表达操作码部分所需要的最小位数是多少?
    8 bits
    b. 表达目的寄存器的最小位数是多少?
    7 bits
    c. 表达UNUSED部分可用的最大位数是多少?
    3 bits

  9. 指令周期中取指令节拍要完成两件重要任务,其一是将下面要处理的指令读入指令寄存器,试问另一个任务是什么?
    PC增量

  10. 例4-1、4-2和4-5分别描述了ADD、LDR、JMP三个指令的处理过程。在整个指令周期中,对于不同的指令,在不同的节拍会对寄存器PC、IR、MAR和MDR做出不同的修改,请填写下表(在空格中填入对应的指令操作码)。
    《计算机系统概论》-第4章-习题答案_第2张图片

  11. 说明指令周期的各个节拍,并简述各节拍中发生的各种操作。
    取指令:取指令到IR寄存器,同时PC增量
    译码:分析检查指令类型
    地址计算:如果需要,进行地址计算
    取操作数:如果需要,取出操作数
    执行:执行指令
    存放结果:将结果保存

  12. 以ADD、LDR、JMP指令为例,分别写出它们的指令周期中各节拍的操作。

  13. 假设读、写内存操作需要100个周期,而读写寄存器和其他节拍操作只需要1个周期。试计算IA-32指令“ADD[eax],edx”(参考例4-3)和LC-3指令“ADD R6,R2,R6”所需要的执行周期数。

  14. 试描述JMP指令的执行情况(假设R3内容为x369C,参考例4-5)。

  15. 如果HALT指令可以清除RUN锁存器,即停止指令周期。试问什么指令可以设置RUN锁存器,即重新启动指令周期?

  16. a. 假设机器周期的长度试2ns(即2x10-9秒),问每秒钟能产生多少个机器周期?
    b. 如果平均每条指令需要8个周期,且计算机每次处理一条指令,问该计算机每秒能处理多少条指令?
    c. 为提高计算机每秒执行指令的数目,现代计算机中采用了很多方法。方法之一是类似生产流水线(或装配线)的方法,即指令的每个节拍都被分割成相对独立的一个或多个逻辑部件,每个节拍接着上一个节拍(同时也是上一个周期)的工作继续做。基于这种模式,每个机器周期都可以从内存读入一条新指令,然后在取指令周期结束时,将其传递给后面的译码节拍;而在下一个机器周期中,该指令在被译码的同时,下一条指令又可以被读入。这就是所谓的“装配线”(assembly line)。假设指令是有序地存放在内存中的,且没有任何事情打断这个顺序执行,那么这个“装配线”每秒钟能执行多少条指令?(在以后的高级课程中,在专业上称这种装配线为“流水线–pipeline”,届时还将研究是什么原因使得流水线不能顺利“流动”。)

参考:https://github.com/QSCTech/zju-icicles/blob/master/计算机系统概论/作业答案/ch04_complete.pdf

你可能感兴趣的:(introduction,to,computing,systems)