计算机组成原理 | 第一章 计算机系统概述 习题1
1.3 冯·诺依曼结构计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部件组成?它们各有何作用?(P4-6)
冯·诺依曼结构计算机的主要设计思想是存储程序和程序控制。存储程序就是将解题的步骤编制成程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中,方便执行;而程序控制则是指计算机中的控制器逐条取出存储器中的指令并按顺序执行,控制各功能部件进行相应的操作,完成数据的加工处理。
按照冯·诺依曼的设计思想,计算机的硬件系统包含运算器、控制器、存储器、输入设备和输出设备,它们的作用如下:
(1) 运算器:是一种用于信息加工处理的部件,它对数据进行算术运算和逻辑运算;
(2) 控制器:是整个计算机的指挥中心,它可使计算机各部件协调的工作;
(3) 存储器:存放程序和数据;
(4) 输入设备:是将信息输入计算机的外部设备,它将人们熟悉的信息形式转换成计算机能接收并识别的信息形式;
(5) 输出设备:是将计算机运算结果转换成人们和其他设备能接收和识别的信息形式的设备,如字符、文字、图形、图像、声音等。
1.4 计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用?(P9)
计算机系统的层次结构分为6各抽象层次,分别为逻辑门层、微代码层、指令集架构层、操作系统层、汇编语言层、高级语言层。各层次在计算机系统中作用如下:
逻辑门层:该层是计算机系统最底层的硬件系统,由逻辑门、触发器等逻辑电路组成,它是由逻辑设计者采用布尔代数设计的硬件内核。
微代码层:该层是实际的机器层,该层的用户使用微指令编写微程序,用户所编写的微程序由硬件直接执行,注意只有采用微程序设计的计算机系统才有这一层。
指令集架构层:该层可通过机器语言编写程序实现对计算机硬件的控制,是计算机中软件系统与硬件系统之间的界面和纽带。
操作系统层:该层用于对计算机系统的硬件和软件资源进行统一管理和调度,提高计算机系统的使用效率,方便用户使用计算机。
汇编语言层:该层为用户提供基于助记符表示的汇编语言编程。
高级语言层:面向用户的抽象层次。用户使用与机器无关的高级语言编程,编程过程中不需要知道机器的技术细节,只需掌握高级语言的语法规则、算法和数据结构等就可以编程。高级语言大大降低了学习和使用计算机的难度,便于计算机的应用与推广。
1.5 假定某计算机1和计算机2以不同的方式实现了相同的指令集,该指令集中共有A、B、C、D 4类指令,它们所占的比例分别为40%、20%、15%和25%。计算机1和计算机2的时钟频率分别为600MHz和800MHz,各类指令在两计算机上的CPI如表1.8所示。
表1.8 各类指令在两计算机上的CPI
指令类型 | A | B | C | D |
---|---|---|---|---|
CPI1 | 2 | 3 | 4 | 5 |
CPI2 | 2 | 2 | 3 | 4 |
求两计算机的MIPS各为多少?(P11-12)
计算机1的平均CPI = (2 * 40%) + (3 * 20%) + (4 * 15%) + (5 * 25%) = 3.25
计算机2的平均CPI = (2 * 40%) + (2 * 20%) + (3 * 15%) + (4 * 25%) = 2.65
计算机1的MIPS = f / CPI = 600MHz / 3.25 = 184.62
计算机2的MIPS = f / CPI = 800MHz / 2.65 = 301.89
解析:
CPI指执行每条指令所需要的平均时钟周期数
IPC指每个时钟周期CPU能执行的指令条数,是CPI的倒数
MIPS指每秒执行完成的指令数量,以百万条为单位
MIPS = f / CPI = IPC * f (时钟频率f的单位为MHz)
计算机性能与指令的CPI和主频有直接的关系,主频越高,MIPS值越高;CPI越小,MIPS值越高。
1.6 若某程序编译后生成的目标代码由A、B、C、D 4类指令组成,它们在程序中所占比例分别为40%、20%、15%和25%.已知A、B、C、D四类指令的CPI分别为1、2、2、2。现需要对程序进行编译优化,优化后的程序中A类指令数量减少了一半,而其他指令数量未发生变化。假设运行该程序的计算机CPU主频为500MHz。回答下列各题。
(1)优化前后程序的CPI各为多少?(P11-12)
(2)优化前后程序的MIPS各为多少?(P11-12)
(3)通过上面的计算结果,你能得出什么结论?(P14-15)
(1) 优化前的CPI = (1 * 40%) + (2 * 60%) = 1.6
优化后的CPI = (1 * 25%) + (2 * 75%) = 1.75
(2) 优化前的MIPS = f / CPI = 500MHz / 1.6 = 312.5
优化后的MIPS = f / CPI = 500MHz / 1.75 = 285.71
(3) 通过上面的计算结果,我得出:程序中包含的指令条数的多少不足以评价计算机的性能。虽然程序中A类指令条数减少而其他指令数量不变,但是程序的CPI增加了,MIPS也随之减少了。
解析:
优化后的程序中A类指令数量减少了一半,占比为20%;B、C、D类指令数量未发生变化,占比分别为20%、15%、25%。即A类占比20%,B、C、D类占比60%,合为80%,因此需要重新计算A、B、C、D类在程序中所占比例。
A类:20% / 80% = 25% B、C、D类:60% / 80% = 75%