写在最前面:
本系列文章主要记录本科时期计算机组成原理课程的学习内容,以及自身对于课程知识的体会与理解。本科的学习过程中,笔者发现多数的专业类课程授课时,对于作业的练习和讲解所占时间并不长。课本上的习题答案多数可以在网络上找到,但寻找参考答案的过程可能并不顺利。
学习之余,针对所学的一些内容和练习的课后习题,笔者有一些粗浅的理解与思考,希望能通过文章的方式,帮助后来的学习者掌握这门课程的学习。
笔者的经验:题海战术不如深刻领悟。
习题教材:《计算机组成原理 第二版》任国林编著
摘要:
本课程主要分为七章的知识,从宏观概述到计算机各部件的工作原理,进行了深刻详尽的讲解。第一部分名为计算机系统概述,该章节以宏观的视角带领初学者,理解何为计算机,计算机工作的原理,以及软件、硬件、性能指标等相关计算机知识。笔者就课程学习中的作业练习,记录自身的理解与感悟。
备注:笔者答案以学习时自身答案为主,大部分参考正确答案做出修订,少部分表述与标准答案不同,便于自身学习理解。
- 计算机的工作方式
- 计算机的部件及其互连
- 计算机的性能指标
一、计算机的工作方式
本章的重点内容。理解冯诺依曼模型的基础上,理解主存、CPU之间的存储程序方式,以及工作时的循环。这里的作业习题以简答为主。
1.3 存储程序工作方式的基本思想是什么?
答:程序和数据预先存放在存储器中,机器工作时,自动、逐条地从存储器中取出指令并执行。
教材与ppt有几乎与原话相同的表述,计算机工作的核心思想,要充分理解含义。在院校考试时也喜欢作为考察重点进行考察。
1.10 程序执行的过程是什么?计算机中通常采用什么实现方案?
理解指令循环的执行过程,知道都有那些阶段,每个阶段各自的任务是什么,答案为:
程序执行过程是一个循环的指令执行过程,循环变量为指令地址,指令执行过程又可分为取指令、分析指令、执行指令三个阶段。
应详细叙述三阶段的具体任务。结合第二问采用实现方案,在叙述中描述三个过程用到了哪些硬件(PC,IR,ID)故答案为:
计算机通常用寄存器PC存放指令地址,用寄存器IR存放当前指令内容。指令执行过程中,取指令阶段用PC的内容作为地址从主存中读出指令,并存放到IR中;分析指令阶段用ID分析出IR中内容包含的操作类型、操作数信息;执行指令阶段根据指令分析的结果,实现相应的约定操作。
二、计算机的部件及其互连
冯诺依曼结构指出,计算机有5大基础部件,以总线的方式互联。本章内容讲解了各个硬件的基本功能,以及总线互连的基本知识。
1.4 计算机的硬件由哪些部件组成?它们各有哪些功能?这些部件如何连接?
本问题有3小问,让我们分别思考。第一问要掌握的知识是5大硬件的概念,理解冯诺依曼模型就不难回答。
答(1)计算机的硬件由运算器、控制器、存储器、输入设备和输出设备组成
第二小问延续,进一步掌握5大硬件的功能。在本课程中,运算器在第二章讲解,存储器在第三章讲解,控制器在第五章讲解,输入输出在第七章讲解。故本章节学习,应先对硬件部件有宏观功能性概念。
答(2)输入设备、输出设备负责程序和数据的输入、输出;存储器负责存储程序和数据;运算器负责处理数据;控制器负责指挥和控制各部件协调工作,以实现程序的自动执行。
第三小问需要掌握部件的互连知识。本课程的串行机情境下,互连为总线。
答(3)计算机硬件的各个部件都通过总线互连。
三、计算机的性能指标
衡量计算机性能的标准。常见概念如CPU执行时间,主频,吞吐量等。计算中往往涉及CPU执行时间较多。需掌握公式。
1.16. 计算机M的时钟频率为2 GHz;指令集包含A、B两类指令,指令长度都为2个字节,指令执行时的CPI分别为5和8。某程序P的大小为2 MB,其中40%为A类指令,其余为B类指令。程序P执行时,10%的A类指令和20%的B类指令分别执行了20次,其余指令各执行了1次。求程序P执行时的CPU时间及CPI。
解:求解CPU时间需要掌握相关公式
分析:题目给出了时钟频率。注意时钟频率最后计算时,要取倒数(频率与时间关系,计算的易错点)。
2GHz=1/(2×10^9)s
程序P的大小为2MB,指令长度2字节=2B,我们可将存储空间视为一维线性地址。故首先程序P指令条数我们可求得:
2MB/2B=2^20条
其中,根据所占百分比,A类指令为0.4×2^20条,B类指令为0.6×2^20条。
由CPU时间公式,已知CPI分别为5、8,要确定指令执行的次数。10%的A指令执行20次,其余执行1次,故对于A指令的执行次数为:
0.4×2^20×(10%×20+90%×1)=1.16×2^20
同理可得,B类指令执行次数:
0.6×2^20×(20%×20+80%×1)=2.88×2^20
共执行了1.16×2^20+2.88×2^20=4.04×2^20条指令。
因此,执行次数,CPI,时钟主频均已知,CPU时间带入上述公式,可计算得:
(1.16×2^20×5+2.88×2^20×8)/(2×10^9)=14.42×2^20×10^9≈15.12ms
最后,求解平均CPI,利用加权平均的方法,求A,B类指令执行次数占程序真正执行指令占比得到权重,加权平均计算得出结果:
CPI=(1.16×2^20×5+2.88×2^20×8)/(4.04×2^20)≈7.13
本类计算题需理解CPU时间公式的计算方法,根据题目条件,逐步找到指令执行条数、主频、CPI来进行相关计算。