教育改变生活
标题:
课后练习参考答案第一章:
[打印本页]
作者:
chinasll
时间:
前天 22:41
标题:
课后练习参考答案第一章:
课后练习参考答案第一章:
一、名词解释
中央处理器(CPU) :中央处理器是计算机系统的核心部件,负责执行程序中的指令、
处理数据,并控制计算机的各个部件协调工作。CPU 包含算术逻辑单元(ALU)和控制单元,
执行算术运算、逻辑运算、数据传送和输入/输出操作的控制。
算术逻辑部件(ALU) :算术逻辑部件是 CPU 中的一个关键组件,负责执行算术运算(如
加、减、乘、除)和逻辑运算(如与、或、非、异或) 。ALU 接收来自控制单元的操作码,
并根据这些操作码执行相应的运算。
通用寄存器:通用寄存器是 CPU 内部的高速存储单元,用于暂存指令、数据和地址。
它们可以被 CPU 快速访问,从而加速数据处理速度。
程序计数器(PC) :程序计数器是一个特殊的寄存器,用于存储下一条将要执行的指令
的地址。当 CPU 执行一条指令时,程序计数器自动加 1(或按照跳转指令更改) ,以指向下
一条要执行的指令。
指令寄存器(IR) :指令寄存器用于暂存当前正在执行的指令。当 CPU 从主存储器中读
取一条指令后,会将其放入指令寄存器中,解码并执行。
控制器:控制器是 CPU 中的另一个关键组件,负责从主存储器中取出指令,对指令进
行译码,并根据指令的要求,有序地、协调地指挥和控制计算机各部件自动工作。
主存储器:主存储器是计算机中的主要存储部件,用于存储程序和数据。CPU 可以直接
访问主存储器中的数据,而不需要通过其他外部设备。
总线:总线是计算机各部件之间传输信息的公共通道,由导线组成,用于在 CPU、主存
储器、I/O 设备之间传输数据和控制信号。
主存地址寄存器(MAR) :主存地址寄存器用于存放欲访问的主存单元的地址,其地址
由 CPU 中的程序计数器给出。MAR 与主存储器地址译码电路相连,为 CPU 访问主存提供所
要访问的主存单元的地址。
主存数据寄存器(MDR) :主存数据寄存器用于暂存从主存储器读出的一条指令或一个
数据字,或准备写入主存储器的字。MDR 与主存储器数据总线相连,与 MAR 配合使用,实
现 CPU 与主存储器之间的数据交换。
机器指令:机器指令是 CPU 能直接识别并执行的指令,由操作码和操作数地址码组成。
每一条指令完成一个基本的微操作,如数据传送、算术运算等。
指令操作码: 指令操作码是机器指令中的一部分, 用于指定该指令所要执行的操作类型,如加法、减法、存储等。
高级程序设计语言: 高级程序设计语言是一种接近于人类自然语言和数学语言的程序设
计语言,易于编写和理解,经过编译或解释后能转换成机器语言执行。
汇编语言:汇编语言是一种用助记符表示的指令系统中的指令,是一种低级程序设计语
言。汇编语言需要汇编程序翻译成机器语言才能执行。
机器语言:机器语言是直接用二进制代码指令表达的计算机语言,是计算机唯一能直接
识别和执行的语言。
机器级语言:机器级语言通常指的是与特定机器或处理器直接相关的低级编程语言,包
括机器语言和汇编语言。
源程序:源程序是用高级程序设计语言编写的、尚未编译或解释的程序。
目标程序:目标程序是源程序经编译或解释后得到的机器语言程序,可以直接被计算机
执行。
编译程序: 编译程序是一种将高级程序设计语言编写的源程序翻译成目标程序的软件工
具。编译过程通常包括词法分析、语法分析、语义分析、优化和代码生成等阶段。
解释程序:解释程序是一种直接执行高级程序设计语言编写的源程序的软件工具。解释
程序对源程序进行逐句扫描和解释,并立即执行相应的操作,不生成独立的目标程序。
汇编程序:汇编程序是一种将汇编语言源程序翻译成机器语言目标程序的软件工具。汇
编过程包括将汇编语言指令转换为机器语言指令,并分配内存地址等。
语言处理系统:语言处理系统是指用于处理各种程序设计语言的软件工具集合,包括编
译器、解释器、汇编器等。
设备控制器:设备控制器是计算机中的一个硬件部件,负责控制和管理外部设备(如打
印机、磁盘驱动器等)与 CPU 之间的数据传输。
最终用户:最终用户是指直接使用计算机系统和应用程序的个人或组织,他们通过用户
界面与计算机进行交互,完成各种任务。
系统管理员:系统管理员是负责管理和维护计算机系统的专业人员,他们负责安装、配
置、监控和维护计算机硬件、软件和网络等。
应用程序员:应用程序员是负责开发、编写和维护各种应用程序的专业人员,他们使用
高级程序设计语言进行程序设计,以满足用户的特定需求。
系统程序员:系统程序员是负责设计、开发和维护计算机系统软件的专业人员,他们负
责编写操作系统、编译器、数据库管理系统等核心软件。指令集体系结构(ISA) :指令集体系结构定义了计算机指令的格式、数量和功能,以及
CPU 如何执行这些指令
微体系结构(Microarchitecture) :微体系结构是计算机处理器设计的一个关键部分,它
定义了处理器内部各个组件的结构、功能以及它们之间的交互方式。微体系结构决定了处理
器如何执行指令、管理数据、处理中断等,从而影响了处理器的性能、功耗和效率。
透明(Transparency) :在计算机科学中,透明通常指的是某个方面对使用者是不可见的
或者是不需要考虑的。例如,内存管理的某些细节对程序员可能是透明的,意味着程序员不
需要直接处理这些细节,而由操作系统或硬件自动管理。
响应时间(Response Time) :响应时间是指系统或组件从接收到输入或请求到产生相应
输出或响应所需的时间。在计算机系统中,响应时间通常用于衡量用户界面、网络请求或数
据库查询等的速度。
吞吐率(Throughput) :吞吐率是指系统或组件在单位时间内处理输入或输出数据的数
量或速度。它衡量了系统处理数据的整体效率,通常以每秒处理的事务数、每秒传输的字节
数等来度量。
用户 CPU 时间(User CPU Time) :用户 CPU 时间是指 CPU 在执行用户程序时所花费的
时间。这是区分于系统 CPU 时间的一个概念,系统 CPU 时间指的是 CPU 在执行操作系统内
核任务时所花费的时间。
时钟周期(Clock Cycle) :时钟周期是计算机处理器中的一个基本时间单位,它表示处
理器执行一个基本操作所需的时间。每个时钟周期,处理器都会执行一系列预定义的指令或
操作。
主频(Clock Rate) :主频是指处理器每秒钟的时钟周期数,通常以赫兹(Hz)或兆赫兹
(MHz) 、吉赫兹(GHz)为单位表示。主频越高,处理器执行指令的速度通常越快。
CPI(Cycles Per Instruction) :CPI 是指处理器执行一条指令所需的平均时钟周期数。它
衡量了处理器的指令执行效率,CPI 越低,说明处理器执行指令的速度越快。
基准程序(Benchmark Program) :基准程序是一组用于测试和评估计算机系统性能的预
定义程序和测试套件。 通过运行这些基准程序, 可以比较不同系统的性能, 并找出性能瓶颈。
MIPS(Millions of Instructions Per Second) :MIPS 是一个衡量处理器性能的指标,表示
处理器每秒钟能执行的百万条指令数。MIPS 越高,说明处理器的性能越好。
峰值 MIPS(Peak MIPS) :峰值 MIPS 是指处理器在理想条件下能够达到的最高 MIPS
值。这通常是在处理器没有遇到任何瓶颈(如内存延迟、I/O 限制等)时测得的性能上限。相对 MIPS (Relative MIPS) : 相对 MIPS 是用于比较不同处理器或系统性能的 MIPS 指标。
它通常是将一个系统的 MIPS 值除以另一个基准系统的 MIPS 值,从而得到一个相对性能的
比值。
二、简单回答下列问题
(1)冯.诺依曼计算机由哪几部分组成?各部分的功能是什么?
解答:冯·诺依曼计算机主要由五大部分组成:输入设备、输出设备、运算器、控制器
和存储器。
输入设备:用于接收用户输入的数据和指令,如键盘、鼠标等。
输出设备:用于展示计算机处理后的结果,如显示器、打印机等。
运算器:执行各种算术和逻辑运算。
控制器:控制计算机的各个部件协同工作,负责指令的读取、解释和执行。
存储器:存储数据和程序,包括内存和外存。
(2) 什么是“存储程序”工作方式?
解答: “存储程序”工作方式是指将程序和数据以二进制代码形式预先存放在计算机的
存储器中,然后计算机在运行时从存储器中取出指令并加以执行。这种方式使得计算机能自
动、连续地执行程序,从而大大提高了计算机的工作效率。
(3)一条指令的执行过程包含哪几个阶段?
解答:一条指令的执行过程通常包含以下几个阶段:
取指令:从存储器中取出指令。
分析指令:对指令进行译码,确定其操作性质。
执行指令:根据指令的要求进行具体的操作,如数据的运算、地址的计算、结果的存储
等。
存储结果:将执行结果存储回存储器。
(4)计算机系统的层次结构如何划分?
解答:答案:计算机系统的层次结构通常划分为以下几个层次:
微程序机器层:与硬件直接相关的层次,由微指令和微程序组成。
机器语言机器层:由机器指令组成的层次,程序员可以直接用机器指令编写程序。
操作系统机器层:通过系统调用为程序员提供一批汇编、编译、连接和编辑等软件。
汇编语言机器层:为程序员提供汇编语言。高级语言机器层:使用高级程序设计语言编程的层次,程序员可以通过高级语言编写程
序。
(5)计算机系统的用户可分为哪几类?每类用户工作在哪个层次?
解答:计算机系统的用户主要分为三类:
高级用户:这类用户通常工作在应用层,使用高级语言进行编程和应用开发。
系统程序员:他们工作在系统层,负责设计、开发和维护操作系统、编译器等系统软件。
机器语言程序员: 这类用户直接工作在机器语言层, 使用机器语言或汇编语言编写程序。
(6) 程序的 CPI 与哪些因素有关?
解答:程序的 CPI(每条指令的时钟周期数)与以下因素有关:
指令类型:不同类型的指令所需的执行时间不同,因此 CPI 会有所差异。
指令的执行顺序:指令的执行顺序可能影响到 CPU 的流水线效率,从而影响 CPI。
数据的存取方式:如内存访问延迟、缓存命中率等都会影响指令的执行时间,从而影响
CPI。
程序的优化程度:优化过的程序通常能更有效地利用 CPU 资源,降低 CPI。
(7)为什么说性能指标 MIPS 不能很好地反映计算机的性能?
解答:MIPS(每秒百万条指令数)是一个衡量计算机性能的指标,但它并不能很好地
反映计算机的性能,原因如下:
MIPS 只考虑了指令的执行速度,而没有考虑指令的类型和复杂性。不同类型的指令所
需的执行时间可能相差很大,因此单纯的指令数量并不能完全反映计算机的性能。
MIPS 忽略了内存访问、I/O 操作等其他可能影响性能的因素。在实际情况中,这些因素
往往对性能有着重要影响。
MIPS 是一个理论上的性能指标,实际运行中的程序可能受到多种因素的影响,如操作
系统调度、并发执行等,使得实际性能与 MIPS 值存在差距。
因此,虽然 MIPS 是一个有用的性能指标,但它并不能全面反映计算机的实际性能。在
评估计算机性能时,还需要考虑其他因素,如响应时间、吞吐量、功耗等。
三、假定你的朋友不太懂计算机,请用简单通俗的语言给你的朋友介绍计算机系统是如
何工作的。
解答:计算机系统就像是一个大工厂,有很多不同的工人和机器一起工作来完成任务。
首先,我们有输入设备,比如键盘和鼠标,就像是我们告诉工厂要做什么的手和口。我
们通过这些设备告诉电脑我们要做什么。然后,电脑里有一个叫做“处理器”的东西,它就像工厂里的总指挥,负责安排和执行
我们的指令。
接着,电脑还有一个叫做“内存”的地方,就像工厂里的临时仓库,用来存放处理过程
中需要用到的数据。
处理器根据我们的指令从内存里取数据,然后进行计算或者操作,再把结果存回内存或
者通过输出设备(比如显示器或打印机)展示出来。
最后,电脑里还有一个叫做“硬盘”的地方,就像工厂里的长期仓库,用来保存我们不
需要马上用但又不希望丢失的数据。
四、你对计算机系统的哪些部分最熟悉,哪些部分最不熟悉?最想进一- 步了解细节的
是哪些部分的内容?
解答:我最熟悉的部分是操作系统和常用软件的使用,因为平时的工作和生活中经常使
用。但对于硬件部分,比如处理器的内部工作原理、内存的层次结构等,我就相对不熟悉。
我最想进一步了解的是计算机网络的细节,比如数据是如何在网络中传输的、网络安全
是如何保障的、以及云计算和大数据等技术是如何实现的。这些内容对于现代社会的信息化
发展至关重要,而且也是我工作中可能会用到的知识。
五、 图1.1所示模型计算机(采用图1.2所示指令格式)的指令系统中,除了有mv(op=000)、
add(op= 00). loud(op= 110)1 和 store(op-1111)指令外, R 型指令还有减( sub,∞p=0010)和乘
(mul, ∞:0011)等指令,请仿照图 1. 3 给出求解表达式"z=(x-y)*y;"所对应的指令序列( 包括
机器代码和对应的汇编指令)以及在主存中的存放内容,并仿照图 1.5 给出每条指令的执行
过程以及所包含的微操作。
解析:首先,我们需要理解提供的指令格式和指令系统。图 1.2 所示指令格式中,操作
码(op)占据前 4 位,而 R 型指令的其他位通常用于指定源操作数和目标操作数的寄存器
地址。由于未提供具体的指令格式图,我们将基于一般的 R 型指令格式来构建所需的指令序
列。
表达式 "z=(x-y)*y" 对应的指令序列需要考虑以下几点:
(1)*执行减法 x - y,并将结果保存在一个临时寄存器中(例如 t0) 。
(2)使用临时寄存器 t0 和 y 执行乘法。
(3)将乘法结果保存在 z 中。
假设 x 在寄存器 R1 中, y 在寄存器 R2 中, z 在寄存器 R3 中, 而临时结果存放在 R0
中。以下是对应的指令序列和机器代码:(1)sub R0, R1, R2 ; R0 = R1 - R2
机器代码: 0010 0000 0001 0010 (假设 op=0010 为 sub 指令,且寄存器地址按序排列)
汇编指令: sub R0, R1, R2
(2) mul R0, R0, R2 ; R0 = R0 * R2 (即 (x-y) * y)
机器代码: 0011 0000 0000 0010 (假设 op=0011 为 mul指令)
汇编指令: mul R0, R0, R2
(3)mv R3, R0 ; R3 = R0 (将结果移动到 z 所在的寄存器 R3)
机器代码: 0000 0011 0000 0000 (假设 op=000 为 mv指令)
汇编指令: mv R3, R0
关于在主存中的存放内容,这取决于程序加载时的内存布局。通常,指令和数据会分别
存放在不同的内存区域。指令序列会被加载到代码段,而变量 x、y、z 和临时变量 t0 则
会被加载到数据段。具体的内存地址取决于操作系统的内存管理策略和程序的加载方式。
至于每条指令的执行过程及包含的微操作,这通常依赖于具体的处理器设计。然而,我
们可以提供一个一般性的描述,以说明这些指令如何在处理器内部执行:
(1)sub R0, R1, R2 指令执行过程:
从寄存器 R1 和 R2 中读取值。
执行减法操作。
将结果存放到寄存器 R0。
(2)mul R0, R0, R2 指令执行过程:
从寄存器 R0 和 R2 中读取值。
执行乘法操作。
将结果存放到寄存器 R0(覆盖原来的值) 。
(3)mv R3, R0 指令执行过程:
从寄存器 R0 中读取值。
将值存放到寄存器 R3。
每个指令的执行过程中,处理器可能需要执行多个微操作,如从内存读取指令、解码指
令、 读取源操作数、 执行算术运算、 写入目标操作数等。 这些微操作由处理器的控制单元 (CU)
根据指令的操作码和指令格式来协调执行。
由于图 1.5 的具体内容未给出,无法直接仿照其格式来展示每条指令的执行过程和微操
作。但你可以根据上述描述,结合你了解的具体处理器架构和微操作,来绘制每条指令的执行流程和相应的微操作序列。
六、
解析:
(1) 对于 P1, M2 比 M1 快一倍;对于 P2,M1 比 M2 快一倍。
(2)对于 M1,P1 的速度为: 200M/10=20MIPS ; P2 为 300k/0.003=100MIPS。对于 M2,
P1 的速度为: 150M/5=30MIPS
2 为 420k/0.006=70MIPS。从执行速度来看,对于 P2,因为
100/70=1.43 倍,所以 M1 比 M2 快 0.43 倍。
(3)在 M1 上执行 P1 时的平均时钟周期数 CPI 为: 10x800M/(200x106)=40。在 M2 上执
行 P1 时的平均时钟周期数 CPI 为:5x1.2G/(1 50 x106)=40。
(4)考虑运行 P1 时 M1 和 M2 的性价比,因为该用户主要关心系统的响应时间,所以
性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比 R 为:R=1/(执行时间
x 价格),R 越大说明性价比越高,也即, “执行时间 x 价格”的值越小,则性价比越高。因
为 10x5000> 5 x8000,所以,M2 的性价比高。应选择 M2。
(5) P1 和 P2 需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。
若用算术平均方式,则:因为(10+0.003)/2x5000 > (5+0.006)/2 8000x,所以 M2 的性价比高,
应选择 M2。若用几何平均方式,则: 因为 sqrt(10 x0.003) x5000 < sqrt(5 0x.006) x8000,所以
M1 的性价比高,应选择 M1。(1)M1. 上可以选择一段都是 A 类指令组成的程序,其峰值 MIPS 为 1000MIPS。M2.上可
以选择一段 A 和 B类指令组成的程序,其峰值 MIPS 为 1 500/2=750MIPS。
(2)5 类指令具有完全相同的指令条数,所以各占 20%。 在 M1 和 M2 上执行程序 P 时的平
均时钟周期数 CPI 分别为:
M1:20%x(1+2+2+3+4)= 0.2x12= 2.4
M2:20%*(2+2+4+5+6)= 0.2x19=3.8
假设程序 P 的指令条数为 N,则在 M1 和 M2.上的执行时间分别为:
M1:2.4x Nx1/1G= 2.4N (ns)
M2:3.8xNx1/1.5G = 2.53 N (ns)
M1 执行 P 的速度更快每条指令平均快 0.13ns,也即 M1 比 M2 快 0.13/2.53x100%≈5%。
八. 假设同-.套指令集用不同的方法设计了两种机器 MI 和 M2。机器 MI 的时钟周期为
0.8ns,机器 M2 的时钟周期为 1.2ns。某程序 P 在机器 MI 上运行时的 CPI 为 4,在 M2 上的
CPI 为 2。对于程序 P 来说,哪台机器的执行速度更快?快多少?
解析:因为 M1 和 M2 实现的是同一套指令集,所以程序 P 在机器 M1 和 M2.上执行的
指令条数棚同,假定是 N 条,则 P 在 M1 上的执行时间为 4x0.8nsxN=3.2N(ns); P 在 M2.上的执
行时间为 2x1.2nsxN=2.4N(ns)。由此可知,对于程序 P 来说,M2 的执行速度更快,平均每条
指令快 0.8ns。
九. 假设某机器M的时钟频率为4CHz,用户程序P在M上的指令条数为8x10*.其CPI为
1.25, 则 P 在 M上的执行时间是多少?若在机器 M 上从程序 P 开始启动到执行结束所需的时
间是 4s,则 P 的用户 CPU 时间所占的百分比是多少?
解析:我们要计算用户程序 P 在机器 M 上的执行时间,以及程序 P 的用户 CPU 时间所
占的百分比。首先,我们需要知道几个关键参数:机器的时钟频率、程序的指令条数、CPI(每条指
令的时钟周期数) 。
执行时间(T)可以通过以下公式计算:
T = (指令条数 × CPI) / 时钟频率
这里,指令条数是 8×10^6,CPI 是 1.25,时钟频率是 4GHz(即 4×10^9 Hz) 。
用户 CPU 时间所占的百分比可以通过以下公式计算:
百分比 = (P 的执行时间 / 总时间) × 100%
这里,总时间是 4 秒。
计算结果为:执行时间是 0.0025 秒
用户 CPU 时间所占的百分比是 0.06%。
十、假定某编译器对某段高级语言程序编译生成两种不同的指令序列 S1 和 S2,在时钟
频率为 500 MHz 的机器 M 上运行,目标指令序列中用到的指令类型有 A. B、C 和 D 四类。
四类指令在 M 上的 CPI 和两个指令序列所用的各类指令条数如下表所示。
请问 SI 和 S2 各有多少条指令? CPI 各为多少?所含的时钟周期数各为多少?执行时间各
为多少?
解析: S1 有 10 条指令, CPI 为(5x1+2x2+2*3+1x4)/10=1.9,所含的时钟周期数为 10x1.9=19,
执行时间为 19/500M = 38ns。
S2 有 8 条指令, CPI 为(1x1+1x2+1x3+5*4)/8 =3.25,所含的时钟周期数为 8x3.25=26,执行时
间为 26/500M= 52ns。
(注:从上述结果来看, 对于同一个高级语言源程序,在同一台机器上所生成的目标程序不
同,其执行时间可能不同,而且,并不是指令条数少的目标程序执行时间就一定少。)
十一、 假定机器M的时钟频率为400MHz, 某程序P在机器M上的执行时间为12. 000s。
对 P 优化时,将其所有的乘 4 指令都换成了一条左移两位的指令,得到优化后的程序 p'。
已知在M上乘法指令的CPI为102,左移指令的CPI为2, P'的执行时间为1.008.则P中有多少
条乘法指令被替换成了左移指令被执行?
显然,P 的执行时间为 10 秒,因此,P 比 P 多花了 2 秒钟,因此,执行时被换成左移指令的乘法指令的条数为 1.2GX2 / (5-)=800M .
欢迎光临 教育改变生活 (http://bbs.goldoar.com/)
Powered by Discuz! X3.2