# 应用软件 (application software)
应用软件是指为针对使用者的某种应用目的所编写的软件。例如,办公自动化软件,互联网应用软件,多媒体处理软件,股票分析软件,游戏软件,管理信息系统等。
# 操作系统 (Operating System, OS)
操作系统是计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,其目的是使计算机系统所有资源最大限度地发挥作用,并为用户提供方便的、有效的、友善的服务界面。操作系统是一个庞大的管理控制程序,包括 5 方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前比较流行的操作系统主要有两个家族:类 UNIX 家族和微软的 Windows 家族。
# 最终用户 (end user)
使用应用程序完成特定任务的计算机用户称为最终用户。大多数计算机使用者属于最终用户。例如,使用炒股软件的股民、玩计算机游戏的人、进行会计电算化处理的财会人员等。
# 系统管理员 (system administrator)
系统管理员是指利用操作系统提供的功能对系统进行配置、管理和维护以建立高效合理的系统环境供计算机用户使用的操作人员。其职责主要包括:安装、配置和维护系统的硬件和软件,建立和管理用户账户,升级软件,备份和恢复业务系统及数据,等等。
# 应用程序员 (application programmer)
应用程序员是使用高级编程语言编制应用软件的程序员。
# 系统程序员 (system programmer)
系统程序员是设计和开发系统软件的程序员。例如,开发操作系统、编译器、数据库管理系统等系统软件的程序员就是系统程序员。
# 高级语言 (high-level programming language)
高级语言也称为高级编程语言或算法语言。它是面向问题和算法的描述语言。用这种语言编写程序时,程序员不必了解实际机器的结构和指令系统等细节,而通过一种比较自然的、直接的方式来描述问题和算法。
# 汇编语言 (assembly language)
汇编语言是一种面向实际机器结构的低级语言,是机器语言的符号表示,与机器语言一一对应。因此,汇编语言程序员必须对机器的结构和指令系统等细节非常清楚。
# 机器语言 (machine language)
机器语言是直接用二进制代码(指令)表示的语言。用户必须用二进制代码来编写机器语言程序。因此,机器语言程序员必须对机器的结构和指令系统等细节非常清楚。
# 指令集 (instruction set)
指令集是一台计算机能够执行的所有机器指令的集合。按功能划分,可将指令分为运算指令、移位指令、传送指令、串指令、程序控制指令等类型。
# 指令集体系结构 (Instruction Set Architecture, ISA)
指令集体系结构是计算机硬件与系统软件之间的接口,指机器语言程序员或操作系统、编译器、解释器设计人员所看到的计算机功能特性和概念性结构。其核心部分是指令系统,同时还包含数据类型和数据格式定义、寄存器组织、I/O 空间的编址和数据传输方式、中断
<!-- page: 15 -->
结构、计算机状态的定义和切换、存储保护等。ISA 设计的好坏直接决定了计算机的性能和成本。
## 透明性(transparency)
由于计算机系统采用了层次化结构进行设计和组织,因而面向不同的硬件或软件层面进行工作的人员或用户所“看到”的计算机是不一样的。也就是说,计算机组织方式或系统结构中的一部分对某些用户而言是“看不到”的或称为“透明”的。例如,对于高级语言程序员来说,指令格式、数据格式、机器结构、指令和数据的存取方式等都是透明的;而对于机器语言程序员和汇编语言程序员来说,指令格式、机器结构、数据格式等则不是透明的。
## 源程序(source program)
编译程序、解释程序和汇编程序统称为语言处理程序。各种语言处理程序处理的对象称为源程序,用高级(算法)语言或汇编语言编写。例如,C 语言源程序、Java 语言源程序、汇编语言源程序等。
## 目标程序(object program)
编译程序和汇编程序对源程序进行翻译得到的结果程序称为目标程序或目标代码(object code)。
## 编译程序(compiler)
编译程序也称编译器,用来将高级语言源程序翻译成汇编语言或机器语言目标代码的程序。
## 解释程序(interpreter)
解释程序将源程序的一条语句翻译成对应的机器语言目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序中的语句全部被翻译并执行完。因此,解释程序并不输出目标程序,而是直接输出源程序的执行结果。
## 汇编程序(assembler)
汇编程序也是一种语言翻译程序,它把汇编语言写的源程序翻译为机器语言目标程序。汇编程序和汇编语言是两个不同的概念,不能混为一谈。
## 响应时间(response time)
响应时间也称为执行时间(execution time)或等待时间(latency),是指从作业提交开始到作业完成的时间。一般一个程序的响应时间除了 CPU 执行程序包含的指令执行时间外,还包括等待 I/O 的时间、系统运行其他用户程序所用的时间和操作系统运行的时间等。
## 吞吐率(throughput)
在有些场合下,吞吐率也称带宽(bandwidth),是指在一定的时间内所完成的工作量。
## CPU 执行时间(CPU execution time)
CPU 执行时间也称为 CPU 时间(CPU time),是指在程序运行过程中,CPU 真正用于程序执行的时间。它不包括因为等待 I/O 操作完成所需的时间,也不包括 CPU 执行其他程序所需的时间。对用户来说,能直接感觉到的只能是响应时间,而不可能是 CPU 执行时间。它被进一步分为两部分:一部分是用来运行用户程序代码的时间,称为用户 CPU 时间(user CPU time);另一部分是为了执行用户程序而不得不运行的一些操作系统代码所花费的时间,称为系统 CPU 时间(system CPU time)。
<!-- page: 16 -->
系统性能(system performance)
通常用在没有任何其他负载的情况下程序的响应时间来表示系统性能。
CPU性能(CPU performance)
通常用用户CPU时间来表示CPU性能。
时钟周期(clock cycle, tick, clock tick, clock)
所有计算机执行指令的过程都是分成若干步骤和相应的动作来完成的,每一步动作都要有相应的控制信号进行控制,这些控制信号何时发出、作用时间多长,都要有相应的定时信号进行同步。因此,CPU必须能够获得用于同步的时钟定时信号,也就是CPU的主脉冲信号,其宽度称为时钟周期。
时钟频率(clock rate,主频)
CPU的主频就是CPU的主脉冲时钟信号的频率,是CPU时钟周期的倒数。
CPI(Cycle Per Instruction)
CPI是衡量CPU性能的一种基本参数,它表示执行一条指令所需的平均时钟周期个数。
基准测试程序(benchmark)
基准测试程序是专门用来进行性能评价的一组程序,这些程序能够很好地反映机器在运行实际负载时的性能。可以在不同机器上运行相同的基准测试程序来比较不同机器的运行时间,从而比较其性能。
SPEC基准测试程序集(SPEC benchmark)
系统性能评价标准(System Performance Evaluation Cooperative, SPEC)是一个应用最广泛,也是最全面的对CPU性能进行评测的基准程序集,分整数程序集SPECint和浮点程序集SPECfp等。
SPEC比值(SPEC ratio)
SPEC比值是指将测试程序在参考机器上运行时的执行时间除以该程序在测试机器上的执行时间所得到的比值。比值越大,机器的性能越好。
阿姆代尔定律(Amdahl's law)
阿姆代尔定律主要含义是指系统优化某部件所获得的系统性能的改善程度,取决于该部件被使用的频率,或所占总执行时间的比例。该定律很好地刻画了改善“系统瓶颈”性能的重要性。
MIPS(Million Instructions Per Second)
MIPS用来衡量单位时间内执行指令的条数,具体是指每秒执行多少百万条指令。
加法指令执行速度(add instruction execution speed)
加法指令执行速度最早用来衡量计算机性能的指标是完成单个运算(如加法运算)指令所需要的时间。当时大多数指令的执行时间是相同的。加法指令能反映乘、除等运算,而其他指令的时间也大体与加法指令相当。故加法指令的速度有一定的代表性。计量单位为KIPS(每秒千条指令)和MIPS(每秒百万条指令)。
平均指令执行时间(average instruction execution time)
平均指令执行时间也称为等效指令速度法或Gibson混合法。随着计算机的发展,不同指令所需的执行时间差别越来越大,人们就根据等效指令速度法通过统计各类指令在程序
<!-- page: 17 -->
中所占比例进行折算。设某类指令 $i$ 在程序中所占比例为 $w_{i}$,执行时间为 $t_{i}$,则等效指令的执行时间为:$T = w_{1} \times t_{1} + w_{2} \times t_{2} + \cdots + w_{n} \times t_{n}$($n$ 为指令种类数)。如果指令执行时间用时钟周期数来衡量,平均指令执行时间就是平均CPI。对平均指令执行时间求倒数能够得到平均MIPS值。
## 峰值 MIPS (peak MIPS)
选取一组指令组合,使得平均CPI最小,由此得到的MIPS就是峰值MIPS。有些制造商经常将峰值MIPS直接当作MIPS,因此,实际上的性能要比标称的性能差。
## 相对 MIPS (relative MIPS)
根据一种公认的参考机型来定义相应的MIPS值,其值的含义是相对于参考机型MIPS的多少倍。
## MFLOPS (Million FLOating-point operations Per Second)
MFLOPS是计算机浮点运算速度的一种计量单位,表示每秒执行多少百万次浮点操作。它是基于所完成的单精度浮点数的操作次数而不是指令数来衡量的。类似的速度单位还有GFLOPS(G表示 $10^{9}$)、TFLOPS(T表示 $10^{12}$)、PFLOPS(P表示 $10^{15}$)、EFLOPS(E表示 $10^{18}$)等。
## 1.4 常见问题解答
### 1. 计算机系统就是硬件系统吗?
答:计算机系统就是硬件系统是不完整的表述。一个完整的计算机系统应该包括硬件系统和软件系统两部分。硬件系统包括运算器、控制器、存储器、输入设备和输出设备五大基本部件。软件系统分为系统软件和应用软件两大类。系统软件包括操作系统、计算机语言处理程序(各种程序翻译软件,包括编译程序、解释程序、汇编程序)、服务性程序、数据库管理系统和网络软件等;应用软件包括各种特定领域的处理程序。计算机系统中的硬件和软件是相辅相成的,缺一不可。软件是计算机系统的灵魂,没有软件的硬件不能被用户使用,犹如一堆废铁。
### 2. 同一个功能可以由软件完成也可以由硬件完成吗?
答:软件和硬件是两种完全不同的形态,硬件是实体,是物质基础;软件是一种信息,看不见、摸不到。但是它们都可以用来实现逻辑功能,所以在逻辑功能上,软件和硬件是等价的。因此,在计算机系统中,许多功能既可以直接由硬件实现,也可以在硬件的配合下由软件来实现。例如,乘法运算既可以用专门的乘法器硬件实现,即机器提供专门的一条乘法指令;也可以用乘法子程序来实现,即不提供乘法指令,而由加法指令和移位指令等组成的一个指令序列来完成乘法运算。
### 3. 解释程序和编译程序有什么差别?
答:编译程序和解释程序是两种不同的翻译程序。两者的不同在于:编译程序将高级语言源程序全部翻译成目标程序,每次执行程序时,只要执行目标程序,因此,只要源程序不变,就无须重新翻译;解释程序是将源程序的一条语句翻译成对应的机器目标代码并立即执行,然后翻译下一条语句并执行,直至所有源程序中的语句全部被翻译并执行完,所以解释程序的执行过程是翻译一句,执行一句。解释的结果是源程序执行的结果,而不会生成目标
<!-- page: 18 -->
程序。
4. 要计算机做的任何工作都要先编写成程序才能完成吗?
答:是的。要计算机完成的任何事情,都必须先编制程序,程序是由指令构成的。不管是用哪种语言编写的程序,最终都要翻译成机器语言程序才能让机器理解,机器语言程序是由一条一条指令组成的程序。CPU的主要功能就是周而复始地执行指令,因此,要计算机完成的所有功能都是通过执行一条一条指令来实现的,也就是由一个程序来完成的。有时我们说某个特定的功能是由硬件实现的,但并不是说不要编写程序,如果法功能可由乘法器这个硬件实现,但要启动这个硬件(乘法器)工作,必须先执行程序中的乘法指令。
5. 指令和数据在形式上没有差别,且都存于存储器中,计算机如何区分它们呢?
答:指令和数据在计算机内部都是用二进制表示的,因而都是0、1序列,在形式上没有差别。在指令和数据取到CPU之前,它们都存放在存储器中,CPU必须能够区分读出的是指令还是数据,如果是指令,CPU会把指令的操作码送到指令译码器进行译码,而把指令的地址码送到相应的地方进行处理;如果是数据,则送到寄存器或运算器。那么,CPU如何识别读出的是指令还是数据呢?实际上,CPU并不是把信息从主存读出后,靠某种判断方法来识别信息是数据还是指令。而是在读出之前就知道将要读的信息是数据还是指令了。执行指令的过程分为取指令、指令译码、取操作数、运算、送结果等。所以,在取指令阶段,总是根据程序计数器(PC)的值去取指令,所以取来的一定是指令;取操作数阶段取来的一定是数据。
6. 衡量计算机系统性能的主要指标是什么?
答:计算机性能的好坏主要体现在速度方面,而衡量速度快慢主要有两个指标:响应时间和吞吐率。响应时间是指从作业提交开始到作业完成所花的时间。一般一个程序的响应时间除了CPU执行该程序包含的指令所用的时间外,还包括等待输入输出操作所需时间和操作系统运行这个程序所花的时间开销等。吞吐率是指单位时间内完成的工作量。
7. CPU的时钟频率越高,机器的速度就越快,对吗?
答:在其他因素不变的情况下,CPU的时钟频率越高,机器的速度肯定越快。但是,程序执行的速度除了与CPU的速度有关外,还与存储器、I/O等模块的存取速度、总线的传输速度和cache的设计策略等都有很大关系。因此,机器的速度不是只由CPU的时钟频率决定的。
8. CPI的含义是什么?执行时间(响应时间)与CPI是什么关系?
答:CPI是指每条指令执行时所用的时钟周期数。通常,一条特定指令的CPI是一个确定的值,而某个计算机或程序的CPI则是一个平均值。一个程序的执行时间取决于该程序所包含的指令数、CPI和时钟周期。在指令数和时钟周期一定的情况下,CPI越大,执行时间越长。
9. 用户真正感觉到的程序执行时间是否就是执行一个程序中所有指令所用的时间?
答:不是。执行一个程序中所有指令所用的时间实际上比用户真正感觉到的程序执行时间要短。因为在一个程序执行过程中,可能还会执行操作系统代码或其他用户程序,并且,有时还可能等待I/O操作。比如,在UNIX操作系统中,假定用time命令测试某程序执行时间的结果为80.3u 10.1s 2:02 74%,则说明该程序所有指令的执行时间(即用户CPU时间)只有80.3s,执行操作系统代码所用时间(即系统CPU时间)是10.1s,用户感觉到的总
<!-- page: 19 -->
响应时间为 $2 \times 60 + 2 = 122\mathrm{s}$,其中 $(80.3 + 10.1) / 122 = 74\%$ 是CPU时间,剩下 $26\%$ 的时间(即30多秒)用来等待I/O操作或运行其他用户程序。
## 10. 计算机的MIPS数据大,说明性能越好,对吗?
答:不对。MIPS数反映的是机器执行定点指令的速度。但是,不同机器的指令集不同,指令的功能也不同,也许一个机器上一条指令的功能,在另外一个机器上要用多条指令来完成,这样,同样的指令条数所完成的功能可能完全不同;另外,不同机器的CPI和时钟周期也不同,因而一条指令所用时间也不同。所以,用MIPS数来对不同的机器进行性能比较是不太客观的。
## 11. 基准测试程序执行得越快,说明机器的性能越好,对吗?
答:不对。一般情况下,基准测试程序能够反映机器性能的好坏。但是,如果制造商针对基准测试程序中频繁出现的语句采用专门的编译器,使基准程序的运行效率大幅提高。那么基准评测程序测试的结果就不能说明问题。
## 1.5 单项选择题
1. 以下有关对摩尔定律的描述中,错误的是( )。
A. 每 18 个月,集成电路芯片上集成的晶体管数将翻一番
B. 每 18 个月,集成电路芯片的速度将提高一倍
C. 每 18 个月,集成电路芯片的价格将降低一半
D. 集成电路技术一直会遵循摩尔定律发展下去
2. 从计算机的主要元器件来看,计算机发展所经历的过程为( )。
A. 晶体管、电子管、SSI、MSI、LSI、ULSI、VLSI
B. 电子管、晶体管、SSI、MSI、LSI、VLSI、ULSI
C. 电子管、晶体管、LSI、MSI、SSI、VLSI、ULSI
D. 晶体管、电子管、MSI、SSI、LSI、ULSI、VLSI
3. 一个完整的计算机系统包括硬件和软件。软件又分为( )。
A. 操作系统和语言处理程序
B. 系统软件和应用软件
C. 操作系统和高级语言
D. 低级语言程序和高级语言程序
4. 以下给出的软件中,属于应用软件的是( )。
A. 汇编程序
B. 编译程序
C. 操作系统
D. 文字处理程序
5. 以下给出的软件中,属于系统软件的是( )。
A. Windows XP
B. MS Word
C. 金山词霸
D. RealPlayer
6. 下面有关指令集体系结构的说法中,错误的是( )。
A. 指令集体系结构位于计算机软件和硬件的交界面上
B. 指令集体系结构是指低级语言程序员所看到的概念结构和功能特性
C. 程序员可见寄存器的长度、功能与编号不属于指令集体系结构的内容
<!-- page: 20 -->
D. 指令集体系结构的英文缩写是 ISA
7. 计算机系统采用层次化结构,从最上面的应用层到最下面的硬件层,其层次化构成为()。
A. 高级语言虚拟机-操作系统虚拟机-汇编语言虚拟机-机器语言机器
B. 高级语言虚拟机-汇编语言虚拟机-机器语言机器-操作系统虚拟机
C. 高级语言虚拟机-汇编语言虚拟机-操作系统虚拟机-机器语言机器
D. 操作系统虚拟机-高级语言虚拟机-汇编语言虚拟机-机器语言机器
8. 以下有关程序编写和执行方面的叙述中,错误的是()。
A. 可用高级语言和低级语言编写出功能等价的程序
B. 高级语言和汇编语言源程序都不能在机器上直接执行
C. 编译程序员必须了解机器结构和指令系统
D. 汇编语言是一种与机器结构无关的编程语言
9. 冯·诺依曼计算机中,CPU区分从存储器取出的是指令还是数据的依据是()。
A. 指令译码结果的不同
B. 指令和数据的寻址方式的不同
C. 指令和数据的访问阶段的不同
D. 指令和数据所在的存储单元的不同
10. 以下是有关冯·诺依曼结构计算机中指令和数据表示形式的叙述,其中正确的是()。
A. 指令和数据可以从形式上加以区分
B. 指令以二进制形式存放,数据以十进制形式存放
C. 指令和数据都以二进制形式存放
D. 指令和数据都以十进制形式存放
11. 以下是有关计算机中指令和数据存放位置的叙述,其中正确的是()。
A. 指令存放在内存,数据存放在外存
B. 指令和数据任何时候都存放在内存
C. 指令和数据任何时候都存放在外存
D. 程序被启动后,其指令和数据被装入内存
12. 冯·诺依曼计算机工作方式的基本特点是()。
A. 程序一边被输入计算机一边被执行
B. 程序直接从磁盘读到 CPU 执行
C. 按地址访问指令并自动按序执行程序
D. 程序自动执行而数据手工输入
13. 以下是有关冯·诺依曼计算机结构的叙述,其中错误的是()。
A. 计算机由运算器、控制器、存储器和输入/出设备组成
B. 程序由指令和数据构成,存放在存储器中
C. 指令由操作码和地址码两部分组成
D. 指令按地址访问,所有数据在指令中直接给出
14. 以下有关计算机各部件功能的叙述中,错误的是()。
A. 运算器用来完成算术运算
B. 存储器用来存放指令和数据
<!-- page: 21 -->
C. 控制器通过执行指令来控制整个机器的运行
D. 输入/输出设备用来完成用户和计算机之间的信息交换
15. 以下给出了改善计算机性能的 4 种措施:
① 用更快的处理器来替换原来的慢速处理器;
② 增加同类处理器个数,使得不同的处理器同时执行程序;
③ 优化编译生成的代码使得程序执行的总时钟周期数减少;
④ 减少指令执行过程中访问内存的时间。
对于某个特定的程序,以上措施中,能缩短其执行时间的措施是( )。
A. ①、②、③
B. ①、②、④
C. ①、③、④
D. 全部
16. 若某典型基准测试程序在机器 A 上运行时需要 20s,而在机器 B 上的运行时间是 16s,那么相对来说,下面给出的结论中正确的是( )。
A. 所有程序在机器 A 上都比在机器 B 上运行速度慢
B. 机器 B 的速度是机器 A 的 1.25 倍
C. 机器 A 的速度是机器 B 的 1.25 倍
D. 机器 A 比机器 B 慢 1.25 倍
17. 已知计算机 A 的时钟频率为 $800\mathrm{MHz}$,假定某程序在计算机 A 上运行需要 12s。现在硬件设计人员想设计计算机 B,希望该程序在计算机 B 上的运行时间能缩短为 8s,使用新技术后可使计算机 B 的时钟频率大幅度提高,但在计算机 B 上运行该程序所需的时钟周期数为在计算机 A 上的 1.5 倍。那么,计算机 B 的时钟频率至少应为多少才能达到所希望的要求?( )
A. $800 \mathrm{MHz}$
B. $1.2 \mathrm{GHz}$
C. $1.5 \mathrm{GHz}$
D. $1.8 \mathrm{GHz}$
18. 假设同一套指令集用不同的方法设计了两种机器 A 和机器 B。机器 A 的时钟周期为 1.2ns,机器 B 的时钟周期为 2ns。某个程序在机器 A 上运行时的 CPI 为 2,在机器 B 上的 CPI 为 1。则对于该程序来说,机器 A 和机器 B 之间的速度关系为( )。
A. 机器 A 比机器 B 快 1.2 倍
B. 机器 B 比机器 A 快 1.2 倍
C. 机器 A 的速度是机器 B 的 1.2 倍
D. 机器 B 的速度是机器 A 的 1.2 倍
19. 假定编译器对高级语言的某条语句可以编译生成两种不同的指令序列,A、B 和 C 三类指令的 CPI 和两种不同序列中所含的三类指令的条数见表 1.1。
表 1.1 三类指令的 CPI 及指令条数
[tbl-0.md](tbl-0.md)
则以下结论中错误的是( )。
A. 序列一比序列二少 1 条指令
B. 序列一比序列二的执行速度快
C. 序列一的总时钟周期数比序列二多 1 个
<!-- page: 22 -->
D. 序列一的 CPI 比序列二的 CPI 大
20. 假定用不同的编译器对同一个程序进行编译生成不同的目标代码指令序列,A、B和C三类指令的CPI和两种不同指令序列中所含的三类指令条数见表1.2。
表 1.2 三类指令的 CPI 及指令条数
[tbl-1.md](tbl-1.md)
两个指令序列都在时钟周期为 2ns 的机器上运行。根据计算得到其 MIPS 指标和执行速度两方面的结论为( )。
A. 序列一的 MIPS 数比序列二多 50,序列一的执行速度也比序列二快 10s
B. 序列二的 MIPS 数比序列一多 50,但序列一的执行速度比序列二快 10s
C. 序列一的 MIPS 数比序列一多 100,序列一的执行速度也比序列二快 20s
D. 序列二的 MIPS 数比序列一多 100,但序列一的执行速度比序列二快 20s
【参考答案】
1. D
2. B
3. B
4. D
5. A
6. C
7. C
8. D
9. C
10. C
11. D
12. C
13. D
14. A
15. D
16. B
17. D
18. D
19. B
20. B
1.6 分析应用题
1. 请说明以下措施对缩短程序的响应时间和提高系统的吞吐率各有什么影响?
(1) 使用更快的处理器。
(2) 增加处理器个数,使得不同的处理器同时执行不同的作业。
(3) 优化编译生成的代码,使得程序执行的总时钟周期数减少。
(4) 在 CPU 和主存之间增加 cache,减少访问指令和数据的时间。
【分析解答】
措施(1):因为总执行时间 = 总时钟周期数 × 时钟周期。更快的处理器意味着时钟频率加快了,即每个时钟周期更短了,故总执行时间变短了。因此,采用更快的处理器可缩短程序响应时间,从而使单位时间内完成的作业数增加,系统的吞吐率也提高了。
措施(2):处理器个数的增加使得同时可以有多个作业在不同的处理器上进行处理,因而,系统在单位时间内可以完成更多的作业,吞吐率会明显提高。但每个作业的处理过程还是一样的,所以程序的执行时间并不会缩短。但是,因为吞吐率提高了,所以作业在等待队列中的排队时间减少了,因而响应时间会在一定的程度上有相应的改善。
措施(3):优化编译使生成的代码总的执行时钟周期数减少,也就缩短了程序的执行时间,因而使得单位时间内完成的作业数增加,提高了系统的吞吐率。
措施(4):在 CPU 和主存之间增加 cache,使得程序访问存储器的时间大大缩短,因而可以缩短程序的响应时间,从而也就使得单位时间内完成的作业数增加,提高了系统的吞吐率。
<!-- page: 23 -->
综上所述,措施(1)、措施(3)和措施(4)是因为首先缩短了程序的执行时间而使得系统吞吐率提高;而措施(2)是因为提高了系统的吞吐率,使得程序等待时间缩短而缩短了程序响应时间。程序响应时间和系统吞吐率之间通常是相辅相成的关系,但在某些特定情况下,它们有可能是对立关系。
2. 假定某程序 P 由一个 100 条指令构成的循环组成,该循环共执行 50 次,在某系统 S 中执行程序 P 花了 20000 个时钟周期,则系统 S 在执行程序 P 时的 CPI 是多少?