《计算机系统:系统架构与操作系统的高度集成》——3.8 练习题-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《计算机系统:系统架构与操作系统的高度集成》——3.8 练习题

简介:

本节书摘来自华章计算机《计算机系统:系统架构与操作系统的高度集成》一书中的第3章,第3.8节,作者:(美)拉姆阿堪德兰(Ramachandran, U.)(美)莱希(Leahy, W. D.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.8 练习题

  1. 电平逻辑与边沿触发逻辑的区别是什么?我们在实现ISA时用的是哪种?为什么?
  2. 给出一个车库门开关控制器的FSM和状态转移表(见图3-12和表3-1),用时序逻辑电路实现这个控制器。(提示:这个时序逻辑电路包含2个状态,产生3种输出,即下一状态、开门信号、关门信号。)
  3. 使用本章介绍的ROM加状态寄存器方式重新实现练习2中的逻辑电路。
  4. 对比控制逻辑的不同设计方法。
  5. 对基于ROM的控制方式,一种减少空间需求的方法是将各个独立的控制信号用ROM中的一个编码字段表示。这种方法的优点和缺点是什么?哪些控制信号能聚集在一起,而哪些不能?给出你的理由。
  6. 基于总线的数据通路设计有哪些优点和缺点?
  7. 考虑一个三总线设计。你如何使用它来组织图3-10中的双总线数据通路上的那些元件?与双总线设计相比,它有什么好处?
  8. 解释为什么内部寄存器,如指令寄存器(IR)和内存地址寄存器(MAR),不应由控制单元在ISA的实现中用于数值的临时存储器。
  9. 一位工程师希望将实现FETCH宏状态的微状态数量减少到2个。请问她该如何完成这个目标呢?
  10. 定长指令的优势是什么?
  11. 给出下图的数据通路,假设所有的线都是16位宽。填写下面的表格。
  12. 在LC-2200处理器中,为什么在ALU后面没有寄存器?
  13. 扩展LC-2200 ISA以便包含一条减法指令。给出该减法指令所需的微状态,假设数据通路如图3-15所示。
  14. 在图3-15的数据通路中,为什么我们需要ALU前面的寄存器A和B?为什么我们需要MAR?什么情况下你不需要它们?(提示:考虑寄存器堆和总线上的额外端口。)
  15. 芯存储器曾经是每位0.01美元。考虑你的计算机,按照这个价格,内存需要花多少钱?如果现在的内存还是这个价,会对计算机产业造成什么影响?
  16. 如果计算机设计者只关注速度而忽略价格因素,那么如今的计算机产业将是怎样?谁会是消费者?如果仅仅考虑价格呢,又会怎样?

image

  1. 在3.5.11节中,我们引入了两个额外的字段,M和T,作为下一状态修改位。这两位允许我们在给定时钟周期中有选择地修改ROM地址的高位。使用这些下一状态修改位来完成图3-30中的控制单元逻辑。
  2. (设计题)
    考虑一个使用面向栈的指令集的CPU。算术指令的操作数和结果都放在栈上,这种体系结构中没有通用寄存器。

下图所示的数据通路使用了两块分离的内存:一块65 536(216)字节的内存用于保存指令和(非栈上的)数据,一块256字节的内存用来保存栈。栈使用常规内存和一个栈指针寄存器实现。栈从地址0开始,压入数据后往上增长(即往高地址增长)。栈指针指向栈顶的元素(当栈为空时,栈指针为–1)。你可以忽略栈上溢或下溢的问题。
程序/数据内存使用的内存地址都是16位。所有的数据都是8位宽。假设程序/数据内存为字节可寻址,即每个地址对应一个8位的字节。每条指令包含8位的操作码。许多指令还包括一个16位的地址字段。指令集在下面给出。这里,“内存”指的是程序/数据内存(而不是栈内存)。
image

注意ADD指令只有8位,但其他指令都是24位。指令在内存中是紧密连续存放的(即并不假设所有指令都是24位长)。
假设内存宽度为8位,即每次对内存的读/写操作都是对其中的8位指令或数据进行访问。这意味着取一条多字节的指令需要多次内存访问。
(a)数据通路
补全下面的设计。
image

假设读或写程序/数据内存或栈内存都需要一个时钟周期来完成(实际上,应该更短一些,因为要留出时间来读/写寄存器)。同样,假设每个ALU算术运算需要的时间略少于一个时钟周期。零检测电路需要的时间可以忽略。
(b)控制单元
给出控制单元的状态表,指出表中每个状态必须给出的控制信号。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接