大纲要求
(一)计算机的发展历程
(二)计算机系统层次结构1.计算机系统的基本组成2.计算机硬件的基本组成
1.计算机系统的基本组成
2.计算机硬件的基本组成
3.计算机软件和硬件的关系
4.计算机的工作过程
(三)计算机性能指标
吞吐量、响应时间;CPU时钟周期、主频、CPI、CPU执行时间;MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS
考点与要点分析
核心考点
1.冯·诺依曼计算机的基本特点与指令执行过程
2.计算机的各种性能指标
基础要点
1.计算机硬件和软件的发展过程
2.计算机系统的基本组成
3.计算机硬件的基本组成
4.计算机指令执行的完整流程
5.计算机性能指标
本章知识体系框架图
1.1计算机的发展历程
1.1.1计算机硬件的发展
计算机从20世纪40年代诞生至今,已有几十年的历史。计算机的发展历程既是计算机硬件技术的发展历史,也是计算机软件技术的发展历史。
1.计算机的发展历程
(1)第一代计算机(1946-1957年)——电子管时代
主要特点:①电子管作为开关器件;②使用机器语言;③可以存储信息;④输入/输出很慢。
(2)第二代计算机(1958-1964年)——晶体管时代
主要特点:①晶体管代替电子管;②采用磁心存储器;③汇编语言取代机器语言。
(3)第三代计算机(1965-1971年)——中小规模集成电路时代
主要特点:①中小规模的集成电路代替晶体管;②操作系统问世。
(4)第四代计算机(1972年至今)——超大规模集成电路时代
主要特点:①采用集成度很高的电路;②微处理器问世。
从第一代到第四代,计算机的体系结构都是相同的,即都由控制器、存储器、运算器、输入设备和输出设备组成,称为冯·诺依曼体系结构。
(5)第五代计算机——智能计算机(了解)主要特点:①具备人工智能,像人一样思维;②运算速度极快;③软件系统能够处理知识信息。神经网络计算机是智能计算机的重要代表。
(6)第六代计算机一—生物计算机与量子计算机(了解)主要特点:未来计算机发展的方向和趋势。
2.计算机的分类
计算机按用途可以分为专用计算机和通用计算机。
专用计算机针对某类问题能显示出最有效、最快速和最经济的特性,但它的适应性较差,不适于其他方面的应用。
通用计算机适应性很强,应用面很广,但其运行效率、速度和经济性依据不同的应用对象会受到不同程度的影响。通用计算机按其规模、速度和功能等又可分为巨型机、大型机、中型机、小型机、微型机及单片机6类。这些类型之间的基本区别通常在于其体积、结构复杂程度、功率消耗、性能指标、数据存储容量、指令系统和设备、软件配置等的不同。
此外,计算机按照指令和数据流可以分为:
(1)单指令流单数据流(SISD),即传统的冯·诺依曼体系结构。
(2)单指令流多数据流(SIMD),包括阵列处理器和向量处理器系统。
(3)多指令流单数据流(MISD),这种计算机实际上不存在。
(4)多指令流多数据流(MIMD),包括多处理器和多计算机系统。
3.计算机硬件的更新换代
(1)摩尔定律。当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的计算机性能,将每隔18~24个月翻一倍以上。这一定律揭示了信息技术进步的速度。
(2)半导体存储器的发展。1970年,仙童公司生产出第一个较大容量的半导体存储器,至今半导体存储器经历了多代变化:单芯片1KB、4KB、…16MB、64MB、…、1GB、2GB、4GB和现在的8GB与16GB。
(3)微处理器的发展。1971年Intel公司开发出第一个微处理器Intel 4004,之后经历了Intel 8008(8位)、Intel8086(16位)、Intel 80286(16位)、Intel 80386(32位)、Intel 80486(32位)、Pentium(32位)、Pentium pro(64位)、PentiumIⅡ(64位)、Pentium III(64位)、Pentium4(64位)、CORE(64位)等。这里的16位、32位、64位指机器字长,是指计算机进行一次整数运算所能处理的二进制数据的位数。
1.1.2计算机软件的发展
计算机软件(Software,也称软件)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。这里只介绍编程语言和操作系统的发展。
计算机语言的发展主要从面向机器的机器语言和汇编语言,到面向问题的高级语言过渡。其中高级语言的发展真正促进了软件的发展,早期产生的高级语言包括科学计算和工程计算的Fortran、结构化程序设计Pascal,之后出现了通用编程语言C语言、面向对象的C++语言和适应网络环境的Java语言。
操作系统直接影响计算机系统性能,主要经历了DOS到UNIX、Linux再到Windows的发展过程。
1.2计算机系统层次结构
1.2.1计算机系统的基本组成
计算机系统由硬件和软件两部分组成。硬件包括中央处理器、存储器和外部设备等;软件是计算机的运行程序和相应的文档。
补充知识点:软硬件在逻辑上是等效的(注意选择题)。
解析:对于某一功能来说,其既可以用软件实现,也可以用硬件实现,则称为软硬件在逻辑上是等效的。一般来说,一个功能使用硬件实现效率较高,但硬件成本远高于软件;使用软件实现可以提高灵活性,但是效率往往不如硬件实现高。
1.2.2计算机硬件的基本组成
计算机硬件主要由存储器、运算器、控制器、输入设备和输出设备组成(输入/输出设备统称I/O设备),它们之间的关系如图1-1所示。
其中,运算器+控制器=CPU,CPU+主存储器=主机,I/O设备又称为外部设备。
1.存储器
存储器分为主存储器(简称主存,也称内存储器)和辅助存储器(简称辅存,也称外存储器)。CPU能够直接访问的存储器是主存储器。主存储器是存放程序和数据的部件,是计算机实现“存储程序控制”的基础。辅助存储器用于帮助主存储器记忆更多的信息,辅助存储器中的信息必须调入主存后,才能被CPU访问。
补充知识点:与存储相关的那些名词。
解析:有关存储的概念类包含存储元、存储单元、存储体、存储字和存储字长等,见表1-1。
主存储器由许多存储单元组成,每个存储单元包括多个存储元,每个存储元存储一位二进制代码“0”或“1”。故而存储单元可存储一串二进制代码,称这串代码为存储字,这串代码的位数称为存储字长,存储字长一般为一个字节(8bit)或字节的偶数倍。许多存储单元共同构成了一个存储体。
存储器的基本结构如图1-2所示。
存储体用于存放二进制信息。地址寄存器(MAR)存放访存地址,经过地址译码器译码后找到所选的存储单元。数据寄存器(MDR)用于暂存从主存中读或写的信息。
注意:地址寄存器(MAR)与数握寄存器(MDR)虽然是存储器的一部分,但是在现代计算机中存在于CPU中。
补充知识点:寻址范围的概念和数据寄存器的位数。|
寻址范围的概念怎么理解?例如地址线20根,数据线16根,按字节寻址为什么是1MB,而不是2MB?按字寻址为什么是512KB,而不是1MB?提问如后者的考生思维方式基本都是在算寻址范围时马上将数据线的位数算进去。其实按字节寻址时和数据线没有任何关系(仅当按字寻址时才考虑数据线,通过数据线来判断字长),只和地址线有关。下面通过实例进行讲解。
一般求寻址范围有两种题型。
1)直接给出存储器的容量和字长,然后按字节、半字、字、双字寻址。
【例1-1】已知计算机的字长为32位,存储器的容量为1MB,如果按字节、半字、字、双字寻址,寻址范围各是多少?
解:首先1MB=8Mbit(为了在后面的计算中单位统一)
按字节寻址时,寻址范围为:8Mbit/8bit=1M。
按半字寻址时,寻址范围为:8Mbit/16bit=512K。
按字寻址时,寻址范围为:8Mbit/32bit=256K。
按双字寻址时,寻址范围为:8Mbit/64bit=128K。
友情提示:寻址范围的单位一定不含B和bit等,因为在计算的时候约掉了。
2)不给出存储器的容量,只给出地址线和数据线的位数。
【例1-2】假设CPU有20根地址线和32根数据线,试问按字节和字寻址,寻址范围分别是多少?
解答:解答这类题目时首先要清楚地址线的位数对应的都是按字节寻址,如果是按字寻址,则需要拿出地址线来做字内字节寻址。还有一点就是,不要一看到是按字节寻址,就马上从数据线拿出4给地址线,即×32=×8,得出按字节寻址是4MB,这是错误的。寻址本身和数据线没有任何关系。
正确解题思路:首先,32根数据线可以看成存储字长是32位,那么一个存储字就有4个字节,如图1-3所示。
假设现在按字节寻址,20根地址线的寻址范围应该是=1MB,然后因为是按字节寻址,所以每个寻址单元已经是最小的,不需要字内寻址。如果是按字寻址,那么还有没有20位的地址线来寻址?没有,因为每个字有4个字节。这4个字节的区分,如图1-3所示,字号为0的字里面有0号、1号、2号、3号共4个字节,只能从20根地址线里拿出两根来作为字内寻址。两根地址线的信号分别为00、01、10、11,分别代表字内的0号、1号、2号、3号字节。这样,只剩18根地址线来寻址,按字寻址的寻址范围是=256K。
注意:以后遇到的寻址范围题目就是这两种情况。
可能疑问点:什么是字地址?
解析:按字节编址时,一个字可能占用几个存储单元,字地址就是这几个连续存储单元地址中的最小值,例如,假定机器中一个字为32位,按字节编址,那么字地址指具有4的倍数的那些地址,如0、4、8、12、…;对应的还有半字地址(2的倍数,如0、2、4、6、…)、双字地址(8的倍数,如0、8、16、…)。
扩展知识点:考生可能会遇到下面这样的题目。
一个16K×32位的存储器,其地址线和数据线总共多少根?相信这种题目考生都会做,地址线和数据线分别是14根和32根,共46根。但是如果题目是这样:已知存储器的容量为1MB,那地址线和数据线一共多少根?因为有无数种书写方式,写成1M×8、512K×16、256K×32,对应的数据线和地址线总和分别为28、35、50,哪个是对的?记住一点,只要写成nMB的形式,一律默认为nM×8,应该是28根。
另外,在介绍存储器结构时讲过,从存储器中取出的信息要先存放在数据寄存器,因此数据寄存器的位数应该和一个存储单元的大小一致(如果小于存储单元,则放不下;如果大于存储单元,则浪费),即数据寄存器的位数和存储字长要相等。
2.运算器
运算器是对信息进行处理和运算的部件,主要功能是进行算术和逻辑运算,其核心是算术逻辑单元(ALU)。算术运算主要包括:加、减、乘、除。逻辑运算主要包括:与、或、非、异或、比较、移位等运算。
注意:考研大纲基本上没有涉及逻辑运算,讨论的都是算术运算。
运算器包括若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前三个寄存器是必须有的。另外还有程序状态字寄存器(PSW),保留各类运算指令或测试指令的结果的各类状态信息,以表征系统运行状态。运算器和控制器的知识将在第5章中央处理器部分详细介绍,本节主要帮助考生描绘计算机硬件的基本框架。
3.控制器
控制器是整个计算机的“指挥中心”,它使计算机各个部件自动协调工作。计算机中有两种信息在流动:一种是控制信息;另一种是数据信息。
控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。PC用来存放当前预执行指令的地址,可以自动+1形成下一条指令的地址,它与主存的MAR之间有一条直接通路。R用来存放当前的指令,其内容来自主存的MDR。指令中的操作码字段OP(IR)送至CU,用以分析指令并发出各种微操作命令序列;指令中的地址码字段Ad(IR)送往MAR来取操作数。
可能疑问点:计算机如何判断取出的是数据还是指令?因为数据和指令需要送往不同的地方?
解析:1)通常完成一条指令可分为取指阶段和执行阶段。在取指阶段,通过访问存储器可将指令取出;在执行阶段,通过访问存储器可以将操作数取出。这样,虽然指令和数据都是以二进制代码形式存放在存储器中,但CPU可以判断在取指阶段访问存储器取出的二进制代码是指令,而在执行阶段访问存储器取出的二进制代码是数据。
2)指令寄存器的操作码送入操作码译码器进行译码,然后与时钟和节拍脉冲发生器合作产生一个时序控制信号,并且和操作码译码器的结果一起送入微操作控制器。很明显,每次都是把“一个操作”+“一个时间”送入微操作控制器,说明秩序非常好。
3)指令的地址码需要送入地址形成部件。若是转移地址,则送入PC;若是操作数地址,则送入存储器的地址译码器去取操作数,取出的操作数先放在数据寄存器,然后送往运算器进行运算。
4)每读取一条指令,PC的内容自动加1。
5)重复前4个步骤,直至打印出结果,最后执行停机指令,机器便自动停机。
4.输入设备
输入设备是将人们所熟悉的信息形式转换成计算机可以接收并识别的信息形式的设备,例如键盘,当按下一个键时,此键被翻译成ASCII码传输给计算机,而ASCII码就是计算机可以接收并识别的信息形式。
5.输出设备
输出设备可将二进制信息转换成人类或其他设备可以接收或识别的信息,如显示器。
补充知识点:冯·诺依曼计算机的特点总结(注意选择题)。
解析:1945年,数学家冯·诺依曼提出了“存储程序”的概念(在此之前,存储器只存放数据,不存放程序)。以此概念为基础的各类计算机统称为冯·诺依曼计算机。它的特点如下:
1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。
2)指今和数据以同等地位保存于存储器中,并可按地址访问存储器。
3)指令和数据均用二进制代码表示。
4)指令由操作码和地址码组成,操作码用来表示操作的性质(是加法还是减法,或者其他操作),地址码用来表示操作数在存储器中的位置。
5)指令在存储器内按顺序存放。通常指令是顺序执行的,在特定条件下,可根据运算结果或设定的条件改变执行顺序。
6)机器以运算器为中心,输入/输出设备与存储器之间的数据传送通过运算器完成。
【例1-3】(2009年统考真题)冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU区分它们的依据是()。
A.指令操作码的译码结果
B.指令和数据的寻址方式
C.指令周期的不同阶段
D.指令和数据所在的存储单元
解析:答案为选项C。在冯·诺依曼计算机中,指令和数据均以二进制形式存放在同一个存储器中。CPU可以根据指令周期的不同阶段来区分指令和数据,通常在取指阶段取出的是指令,其他阶段取出的是数据。
归纳总结:除去根据指令周期的不同阶段来区分指令和数据外,还有一个方法,即取指令和取数据时地址的来源是不同的,指令地址来源于程序计数器,而数据地址来源于地址形成部件或指令的地址码字段。
解题技巧:本题较容易误选为A。需要搞清楚的是,CPU只有在确定取出的是指令之后,才会将其操作码部分送去译码,因此不可能依据译码的结果来区分指令和数据。
可能疑问点:为什么有些书上说机器以存储器为中心?哪个正确?
解析:都正确。在微处理器问世之前,运算器和控制器是两个分离的功能部件,加上当时的存储器还是以磁心存储器为主,计算机存储的信息量较少,因此早期冯·诺依曼提出的计算机结构是以运算器为中心的,其他部件通过运算器完成信息的传递。
随着微电子技术的进步,人们成功研制出了微处理器。微处理器将运算器和控制器两个主要功能部件合二为一,集成到一个芯片中。同时,随着半导体存储器代替磁心存储器,存储容量成倍扩大,加上需要计算机处理、加工的信息量与日俱增,以运算器为中心的结构已不能满足计算机发展的需求,甚至会影响计算机的性能。为适应发展的需要,现代计算机组织结构逐步转化为以存储器为中心。但是,现代计算机的基本结构仍然遵循冯·诺依曼思想。
6.五大部件之间的关系
五大部件之间的关系如图1-4所示。
流程分析:
1)通过与控制器之间的信号请求,输入设备首先输入信息给存储器,这里的信息一定是包含数据和程序两者(如果只包含数据,则不知道如何操作;若只包含程序,则计算机不知道对谁操作,所以两者缺一不可)。
2)控制器调用相应的指令来运行程序,然后发出相应的操作命令给运算器(如果需要使用运算器),控制器给出操作数的地址,使用该地址从存储器调用操作数给运算器进行运算。
3)运算结果返回给存储器,若需要打印,则通过输出设备与控制器之间的信号请求,打印出结果。
1.2.3计算机软件的分类
软件是由人们事先编制的具有各类特殊功能的程序。它们通常存放在计算机的主存或辅存中。
计算机的软件通常分为两大类:系统软件和应用软件。
系统软件又称为系统程序,主要用来管理整个计算机系统,使系统资源得到合理的调度,高效运行,例如操作系统、编译程序、文件系统等都是系统软件。
应用软件又称为应用程序,它是用户根据任务需要所编写的各种程序,如QQ、Word等都是应用软件。
另外计算机的编程语言也可以分为三大类:机器语言、汇编语言和高级语言。
机器语言用二进制代码“0”或“1”描述不同的指令,编程人员需要记忆每一条指令的二进制编码。机器语言的优点是计算机可以直接识别和执行。
汇编语言实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。汇编语言的程序必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
高级语言(如C、C++、Java等)需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或者直接由高级语言程序翻译成机器语言程序。高级语言的优点是方便编程人员写出解决问题的处理方案和解题过程。
补充知识点:编译程序、解释程序、汇编程序的区别。
解析:汇编程序是用汇编语言编写的程序,与编译程序、解释程序完全不是一个概念。
由于计算机不能直接执行高级语言程序,因此需要一个“翻译人员”来对高级语言进行翻译。通常有两种方式:一种是编译执行方式;另一种是解释执行方式。那两者有什么区别?先记住一句话:“用嘴来解释,用手来编译”。假设现在有一个日本人在做演讲,但我们不懂日语(类似于机器要执行一段完全看不懂的C语言程序),现在有两种解决方法:
第一种方法就是请一个口译,日本人说一句,口译人员翻译一句给你听,但是最后演讲完,就没有一张中文演讲稿,因为是口译。
第二种方法就是请一个笔译,等日本人讲完将其演讲稿直接全文翻译成中文给你看,这样就可以保留一张中文演讲稿。
总结:1)解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句就提交给计算机执行一句,并不形成目标程序。
2)编译程序把高级语言源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后让计算机去执行这个目标程序,得到计算结果。
可见,编译程序与解释程序最大的区别在于:前者生成目标代码,而后者不生成。此外,编译程序产生目标代码的执行速度比解释程序的执行速度要快(若遇到循环程序,则解释程序要不断地重复解释,而编译程序只需执行一次即可)。
1.2.4计算机的工作过程
计算机的工作过程其实就是不断从存储器中逐条取出指令,然后送至控制器,经分析后由CPU发出各种操作命令,指挥各部件完成各种操作,直至程序中全部指令执行结束。
1.2.5计算机系统的层次结构
就像计算机网络中分层的概念一样,对于某一层次的观察者来说,观察者只需关注此层的一些概念,不用理会下层是如何工作和实现的。同理,现代计算机也不是一种简单的电子设备,而是由硬件与软件结合而成的复杂整体。它通常由5个不同的层次组成,在每一层上都能够进行程序设计,如图1-5所示。
1)第1级。微程序机器级。微指令由硬件直接执行(微程序将在第5章中讲解)。
2)第2级。传统机器级(机器语言)。它用微程序解释机器指令系统。
3)第3级。操作系统级。用机器语言程序解释作业控制语句。
4)第4级。汇编语言机器级。用汇编程序翻译成机器语言程序。
5)第5级。高级语言机器级。用编译程序翻译成汇编程序或直接翻译成机器语言。
1.3计算机性能指标
考研主要涉及以下计算机性能指标:
(1)吞吐量
吞吐量指信息流入、处理和流出系统的速率。它取决于CPU能够多快地取指令,数据能够多快地从内存取出或存入,以及所得结果能够多快地从内存送到输出设备。这些决定因素中的任一步骤都与主存紧密相关,因此吞吐量主要取决于主存的存取周期。
(2)响应时间
响应时间指从提交作业到该作业得到CPU响应所经历的时间。响应时间越短,吞吐量越大。
(3)主频
主频是机器内部主时钟的频率,是衡量机器速度的重要参数,其常用单位为Hz、MHz等。如果主频为8MHz,则可以计算出时钟周期为1/8×10s=0.125(即每秒有8M个时钟周期)。
(4)CPU周期
CPU周期又称为机器周期,通常用从内存读取一条指令字的最短时间来定义。一个指令周期常由若干个CPU周期构成。
(5)CPU时钟周期
主频的倒数,是CPU中最小的时间单位。
(6)CPI、MIPS和FLOPS(三者为衡量运算速度的指标)
CPI(Clock Cycle Per Instruction):执行一条指令所需要的时钟周期数。
MIPS(Milion Instructions Per Second):每秒可执行百万条指令数,如某机器每秒可以执行800万条指令,则记作8MIPS。
FLOPS(Floating-point Operations Per Second):每秒执行的浮点运算次数。
MFLOPS(Million Floating-point Operations Per Second):每秒百万次浮点运算,与MIPS类似。
GFLOPS(Giga Floating-point Operations Per Second):每秒十亿次浮点运算。
TFLOPS(Tera Floating-point Operations Per Second):每秒万亿次浮点运算。
PFLOPS(Peta Floating-point Operations Per Second):每秒千万亿次浮点运算。
补充:IPC(Instructions Per Clock Cycle):CPU的每一个时钟周期内所执行的指令数。
(7)CPU执行时间
CPU执行时间指CPU对某特定程序的执行时间,例如,对于程序A和程序B,CPU执行程序A和程序B分别使用了2s和4s,则对于程序A和程序B而言,CPU执行时间分别是2s和4s。
【例1-4】(2011年统考真题)下列选项中,描述浮点数操作速度指标的是()。
A.MIPS B.CPI C.IPC D.MFLOPS
解析:答案为选项D。MFLOPS表示每秒百万次浮点运算。
可能疑问点:CPU的时钟频率越高,机器的速度就越快,对吗?
答:在其他因素不变的情况下,CPU的时钟频率越高,机器的速度肯定越快。但是,程序执行的速度除了与CPU的速度有关外,还与存储器和I/O模块的存取速度、总线的传输速度、Cache的设计策略等都有很大的关系。因此,机器的速度不是只由CPU的时钟频率决定的。
可能疑问点:执行时间(响应时间)与CPI是什么关系?
答:通常,一条特定指令的CPI是一个确定的值,而某个程序的CPI是一个平均值。一个程序的执行时间取决于该程序所包含的指令数、CPI和时钟周期。在指令数和时钟周期一定的情况下,CPI越大,执行时间越长。