一、计算机系统概述
【复习提示】
本章是组成原理的概述,考查时易针对有关概念或性能指标出选择题,也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念,是学好后续章节的基础。部分知识点在初学时理解不深刻也无须担忧,相信随着后续章节的学习,一定会有更为深入的理解。本章中读者要重点掌握各个性能指标的计算,这部分内容在历年真题中出现的频率很高。
1.1 计算机发展历程
1.1.1 计算机硬件的发展
计算机系统 = 硬件 + 软件
计算机硬件的发展:
- 第一代计算机:(使用电子管),
- 第二代计算机:(使用晶体管),
- 第三代计算机:(使用较小规模的集成),
- 第四代计算机:(使用较大规模的集成),
已经经历了4代,计算机的速度越来越快,并且体积变得越来越小。
发展趋势:更微型、多用途;更巨型、超高速
晶体管之父:肖克利(1956年诺贝尔物理学奖得主)
1957年,"八叛徒"创立了仙童半导体
1959年,仙童半导体发明了“集成电路”
1968年,摩尔离开仙童,创立intel
1969年,仙童销售部负责人桑德斯离开仙童,创立AMD
摩尔定律:集成电路上的晶体管数量每18月就会翻一翻,所以每18月计算机的处理效率就会提高一倍。
1.1.2 计算机软件的发展
计算机软件技术的发展,促进计算机系统的发展。
计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的 FORTRAN、结构化程序设计的 PASCAL到面向对象的C++和适应网络环境的Java。
同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系统,如 Windows、UNIX、 Linux等。
1.1.3 计算机的分类与发展方向
可以分为:
- 电子模拟计算机和电子数字计算机。
数字计算机又可以按照用途分为:
- 专用计算机和通用计算机
- 通用计算机又分为:巨型机、大型机、中型机、小型机、微型机和单片机6类。
按照指令和数据流可以分为:
- 单指令流和单数据流系统(SISD),即传统的冯·诺依曼体系结构。
- 单指令流和多数据流系统(SIMD),包括阵列处理器和向量处理器系统。
- 多指令流和单数据流系统(MISD),这种计算机实际上不存在。
- 多指令流和多数据流系统(MIMD),包括多处理器和计算机系统。
1.2 计算机系统层次结构
1.2.1 计算机系统的组成
计算机系统由硬件系统和软件系统共同构建起来
1.2.2 计算机硬件的基本组成
1、早期的冯·诺依曼机
美籍匈牙利科学家冯·诺依曼最先提出“程序存储”的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。
什么是存储程序原理?按此原理,计算机应具有哪几大功能?
“程序存储”:指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令
计算机按照此原理应具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
冯诺曼体系结构特点:
- 计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
早期的冯·诺依曼机以运算器为中心,且是单处理机,最根本的特征是采用“存储程序”原理,基本工作方式是控制流驱动方式!

2、现代计算机的组织结构

3、计算机的功能部件
主机:主存、运算器、控制器

五大部分:
<1> 输入设备,是指将外部信息以计算机能读懂的方式输入进来,如键盘,鼠标等
<2> 输出设备,就是将计算机处理的信息以人所能接受的方式输出出来,比如显示屏,打印机。
<3> 存储器,存储器分为 主存储器(内存储器,CPU能直接访问) 和辅助存储器(外存储器,协助主存储器记忆更多的信息,辅助存储器的信息需要导入到主存储器中,才可以被CPU访问)。
-
主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相联存储器既可以既可以按照地址寻址,又可以按照内容寻址,为了与传统存储器区别,又称为内容寻址的存储器!)
-
主存储器是由地址寄存器(MAR),数据寄存器(MDR),存储体,时序控制逻辑,地址寄存器存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器,是存储器与其他部件的中介,用于暂存要从存储器读或写的信息。时序控制逻辑用于产生存储器操作所需的各种时序信号。在现代CPU,MAR和MDR是在CPU中的。

-
地址寄存器(MAR):存放访存地址,经过地址译码后找到所选的存储单元。
MAR用于寻址,其位数对应着存储单元的个数,如MAR为10位,则有210=1024个存储单元,记为1K。MAR的长度=PC的长度。
-
数据寄存器(MDR):用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。
MDR的位数=存储字长,一般为字节的2次幂的整数倍。
注意:MAR与MDR虽然是存储器的一部分,但在现代计算机中却是存在于CPU中的;另外,后文提到的高速缓存(Cache),也存在于CPU中。
-
<4> 运算器,是计算机的运算单元,用于算术运算和逻辑运算
- 运算器的核心单元是算术逻辑单元(ALU:Arithmetic and Logical Unit)

- 运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(X)、基址寄存器(BR)等,其中前3个寄存器是必须具备的。
- 运算器内还有程序状态寄存器(PSW),也称标志寄存器,用于存放ALU运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。
<5> 控制器,控制器是计算机的指挥中心,有其指挥各部件自动协调第进行工作,现代计算机将运算器和控制器集成到一个芯片上,合成为中央处理器,简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。

- PC用来存放当前欲执行指令的地址,具体自动加1的功能(这里的“1”指一条指令的长度),即可自动形成下一条指令的地址,它与主存的MAR之间有一条直接通路。
- IR用来存放当前的指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列:而地址码Ad(IR)送往MAR,用以取操作数。
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机,而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设。
图1.4所示为冯・诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)。

CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
1.2.3 计算机软件的分类
1、系统软件和应用软件
计算机软件,一般分为系统软件和应用软件:
-
系统软件:一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。
如操作系统(OS),数据库管理系统(DBMS),语言处理系统(比如编译器),分布式软件系统,网络软件系统,标准库系统,服务性系统(比如连接程序)。
-
应用软件:指用户为解决某个应用领域中的各类问题而编制的程序。
如各种科学计算类程序,工程设计类程序,数据统计与处理程序。
注意:数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件。而数据库系统一般是由数据库,数据库管理系统,数据库管理员和应用系统构成。所以只能说它里面有系统软件,但并不能说它为系统软件。
2、三个级别的语言
- 机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
- 汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
- 高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
由高级语言转换到汇编语言的过程叫做编译,由汇编语言转换到机器语言的过程叫做汇编,边翻译边执行的叫做解析。
计算机无法直接理解和执行高级语言程序,需要将高级语言程序转换为机器语言程序,通常把进行这种转换的软件系统称为翻译程序。翻译程序有以下三类:
- 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序。
- 解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
- 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序。
机器语言是唯一可以控制cpu的语言,因为它的符号不利于人识别和书写,为了方便理解和记忆,将机器语言换一些通俗易懂的符号,这就变成了汇编语言。一般来说在编译器中高级语言先转换为汇编再转换为机器语言,也有直接转换为机器语言的情况。
机器语言是计算机唯一可以直接执行的语言,汇编语言用助记符编写,以便记忆。而正则语言是编译原理中符合正则文法的语言。
解释程序的特点是翻译一句执行一句,边翻译边执行;由高级语言转化为汇编语言的过程称为编译,把汇编语言源程序翻译成机器语言程序的过程称为汇编。
3、软件和硬件的逻辑功能等价性
- 硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现。
- 软、硬件逻辑功能的等价性:对某一功能来说,既可以由硬件实现,又可以由软件实现,从用户的角度来看,它们在功能上是等价的。
- 软件和硬件逻辑功能的等价性是计算机系统设计的重要依据,软件和硬件的功能分配及其界面的确定是计算机系统结构研究的重要内容。
1.2.4 计算机的工作过程
程序被编译成二进制存储在主存中:

指令执行过程的描述:
(MAR):表示MAR里边的值为0
M(MAR) :主存储器所指向的存储单元里边的值
OP(IR):取操作码
Ad(IR):取地址码
- 1)取数

- 2)乘法

- 3)加法

- 4)存数

- 5)停机

对于“取数”指令的执行过程:

上图是计算机的工作流程,首先PC将指令地址发送给MAR,MAR根据地址在存储体中找到指令数据存放在MDR中,之后MDR将指令存放在IR中,取指令结束,之后指令中的操作码进入CU中,地址码重复上述取指令步骤,将数据发送到ACC中,执行指令结束。注意区分指令和数据的依据:指令周期的不同阶段。
- IR存放当下欲执行的指令;
- PC存放下一条指令的地址;
- MAR存放欲访问的存储单元地址;
- MDR存放从存储单元取来的数据!
地址译码器是主存的构成部分,不属于CPU;地址寄存器虽然一般属于主存,但是现代计算机中绝大多数CPU内集成了地址寄存器!
关于CPU存取速度的比较:寄存器(CPU内部)> Cache(高速的SRAM) > 内存 (SDRAM)
1.2.5 计算机系统的工作原理
1)“存储程序”工作方式
一个程序的执行就是周而复始地执行一条一条指令的过程。每条指令的执行过程包括:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。

- 程序执行前,先将程序第一条指令的地址存放到PC中
- 取指令时,将PC的内容作为地址访问主存
- 在每条指令执行过程中,都需要计算下条将执行指令的地址,并送至PC
- 若当前指令为顺序型指令,则下条指令地址为PC的内容加上当前指令的长度
- 若当前指令为转跳型指令,则下条指令地址为指令中指定的目标地址
- 当前指令执行完后,根据PC的值到主存中取出的是下条将要执行的指令
2)从源程序到可执行文件
在计算机中编写的C语言程序,都必须被转换为一系列的低级机器指令,这些指令按照一种称为可执行目标文件的格式打好包,并以二进制磁盘文件的形式存放起来。

-
预处理阶段:**预处理器(cpp)**对源程序中以字符#开头的命令进行处理,例如将#include命令后面的.h文件内容插入程序文件。输出结果是一个以 .i 为扩展名的源文件hello.i。
-
编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。
汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
-
汇编阶段:汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包成一个称为可重定位目标文件的hello.o,它是一种二进制文件,因此用文本编辑器打开会显示乱码。
-
链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,或简称可执行文件。本例中,链接器将hello.o和标准库函数printf所在的可重定位目标模块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。
3)指令执行过程的描述
可执行文件代码段是由一条一条机器指令构成的,指令是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。下图为冯·诺依曼结构的简单模型机。

下面以取数指令(送至运算器的ACC中)为例来说明,其信息流程如下:
-
取指令:PC→MAR→M→MDR→IR
根据PC取指令到IR。将PC的内容送MAR,MAR中的内容直接送地址线,同时控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传送到IR中。
-
分析指令:OP(IR)→CU
指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。在本例中,IR中是取数指令,因此读控制信号被送到总线的控制线上。
-
执行指令:Ad(IR)→MAR→M→MDR→ACC
取数操作。将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写信号线,从主存中读出操作数,并通过数据线送至MDR,再传送到ACC中。
每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1→PC。
1.2.6 计算机系统的层次结构
下层是上层的基础,上层是下层的扩展。

-
M4:高级语言机器(执行高级语言)它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。
在高级语言层之上,还可以有应用程序层,它由解决实际问题的处理程序组成,如文字处理软件、多媒体处理软件和办公自动软件等。
-
M3:汇编语言机器(执行汇编语言):它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。
-
M2:操作系统机器(向上提供广义指令):它由操作系统程序实现。
操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。
-
M1:传统机器(执行机器语言指令):它也是一个实际的机器层,由微程序解释机器指令系统。
-
M0:微程序机器(执行微指令):这是一个实在的硬件层,它由机器硬件直接执行微指令。
没有配备软件的纯硬件系统称为裸机。
M2~M4层称为虚拟机,简单来说就是软件实现的机器。虚拟机器只对该层的观察者存在,对于某层的观察者来说,只能通过该层的语言来了解和使用计算机,而不必关心下层是如何工作的。
软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA是指软件能感知到的部分,也称软件可见部分。

- 编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
- 解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)
1.3 计算机性能指标
- 1)存储器

- 2)CPU

- 3)系统整体的性能指标

- 4)知识回顾

1、机器字长
**计算机的位数(机器字长),表示计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数。**计算机字长通常选定为字节(8位)的整数倍,通常是2、4、8倍。不同的计算机,字节可能不同。
机器字长、指令字长、存储字长的区别和联系是什么?
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数, 它们都必须是字节的整数倍。
- 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
2、数据通路带宽
-
数据通路带宽是指数据总线一次所能并行传送信息的位数。
-
这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。
3、主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如 512K×16位)来表示存储容量。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。
例如,MAR为16位,表示216 = 64K=65536,即此存储体内有65536个存储单元(可称为64K内存,1K=1024),若MDR为32位,表示存储容量为216x32 = 64K×32。

4、运算速度
-
吞吐量:指系统在单位时间内处理请求的数量 ;从用户观点看,它是评价计算机系统性能的综合参数!
它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。
-
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结构的等待时间。
通常包括CPU时间(运行一个程序所花费的时间)与 等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间)。
-
CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要1个时钟周期。
-
主频(CPU时钟频率):机器内部主时钟的频率,是衡量机器速度的重要参数。对于同个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。例如,常用CPU的主频有1.8GHz、2.4GHz、2.8GHz等。
-
CPU时钟周期=1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次。
-
CPU周期又称为机器周期,由多个时钟周期组成!
-
指令周期 > CPU周期 > 时钟周期
-
-
CPI(Clock cycle Per Instruction):即执行一条指令所需的时钟周期数。
不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。
-
CPU执行时间,指运行一个程序所花费的时间。
- CPU执行时间 = CPU时钟周期数/主频 = (指令条数xCPI)/主频
- CPU的性能(CPU执行时间)取决于三个要素:主频(时钟频率)、CPI 、指令条数
-
IPS(Instructions Per Second) =主频/平均CPI,每秒执行多少指令
-
MIPS(Million Instructions Per Second)=即每秒执行多少百万条指令
- MIPS= 指令条数 /(执行时间×106)= 主频 /(CPI × 106)
- MIPS对不同机器进行性能比较是有缺陷的,因为不同机器的指令集不同,指令的功能也就 不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI 和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
MFLOPS(Mega Floating-point Operations Per Second),即每秒执行多少百万次浮点运算。
MFLOPS = 浮点操作次数 /(执行时间×106)
GFLOPS(Giga Floating-point Operations Per Second),即每秒执行多少十亿次浮点运算。
GFLOPS = 浮点操作次数 /(执行时间×109)
TFLOPS(Tera Floating-point Operations Per Second),即每秒执行多少万亿次浮点运算。
TFLOPS = 浮点操作次数 /(执行时间×1012)
此外,还有
PFLOPS= 浮点操作次数 /(执行时间×1015);
EFLOPS=浮点操作次数 /(执行时间×1018);
ZFLOPS=浮点操作次数 /(执行时间×1021)
5、常用数量单位
- 描述存储容量、文件大小时:K=210,M=220,G=230,T=240
- 描述频率、速率时:K=103,M=106,G=109,T=1012
6、基准程序
基准程序(Benchmarks)是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。
7、几个专业术语
- 系列机。具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
- 兼容。指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。
- 软件可移植性。指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性。
- 固件。将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸收了软/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物例如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)。
1.4 本章提出的问题与回答
1、计算机由哪几部分组成?以哪部分为中心?
- 计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成,现代计算机通常把运算器和控制器集成在一个芯片上,合称为中央处理器。
- 而在微处理器面世之前(早期的冯·诺依曼机),运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
- 随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量IO设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使IO操作尽可能地绕过CPU,直接在IO设备和存储器之间完成,以提高系统的整体运行效率。
2、主频高的CPU一定比主频低的CPU快吗?为什么?
衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。CPU的主频,即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、 Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象。
来看看这个电脑的配置,感受一下,以后计算机组成原理中的Cache和主频等
3、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
- 翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码)的软件。
- 翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新翻译,请注意同一种高级语言在不同体系结构下,编译成目标程序是不一样的,目标程序与体系结构相关,但仍不是计算机硬件能够直接执行的程序。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。
- 汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
- 编译程序与汇编程序的区別:若源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。
4、不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
- 机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。
- 其中机器语言可以被硬件直接执行。
1.5 常见问题和易混淆知识点
1、同一个功能既可以由软件实现又可以由硬件实现吗?
- 软件和硬件是两种完全不同的形态,硬件是实体,是物质基础;软件是一种信息,看不见、摸不到。但在逻辑功能上,软件和硬件是等效的。因此,在计算机系统中,许多功能既可以由硬件直接实现,又可以在硬件的配合下由软件实现。
- 一个最大的区别就是,硬件实现比软件实现的速度快很多,但是成本也高!所以,芯片在流片之后,如果发现bug可以用软件修复就用软件修复!
- 例如,乘法运算既可用专门的乘法器(主要由加法器和移位器组成)实现,也可用乘法子程序(主要由加法指令和移位指令等组成)来实现。
2、什么是透明性?透明是指什么都能看见吗?
- 在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不到某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。这与日常生活中的“透明”概念(公开、看得见)正好相反。
- 例如,对于高级语言程序员来说,浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算等都是透明的;而对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等则不是透明的。
- 在CPU中,IR、MAR和MDR对各类程序员都是透明的。
3、机器字长、指令字长、存储字长的区别和联系是什么?
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数, 它们都必须是字节的整数倍。
- 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
4、计算机体系结构和计算机组成的区别和联系是什么?
- 计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
- 计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数如何运算等都属于组成的问题。因此,当两台机器指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,完全可以不同,即可以认为它们的组成方式是不同的。例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。(简言之,看有没有这个属性,就是结构问题;看怎么实现,就是组成问题)
- 许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别,即使是同一系列的不同型号机器,其性能和价格差异也很大。例如, IBM System/370结构就包含了多种价位和性能的机型。
5、基准程序执行得越快说明杺器的性能越好吗?
一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
二、数据的表示与运算
【复习提示】
本章内容较为繁杂,由于计算机中数的表示和运算方法与人们日常生活中的表示和运算方法不同,因此理解也较为困难。纵观近几年的真题,不难发现 unsigned、shot、int、long、foat、 double等在C语言中的表示、运算、溢出判断、隐式类型转换、强制类型转换、IEEE754浮点数的表示,以及浮点数的运算,都是考研考查的重点,需要牢固掌握。

2.1 数制与编码
2.1.1 进位计数制及其相互转化
进位计数法
在进位计数法中,每个数位所用到的不同数码的个数称为基数。十进制的基数为10,逢十进一。
- 十进制:基数为10,计数“逢十进一”
- 数符:0~9
- 表示:(1652)10 或 1652D
- 二进制:基数为2的计数制;计数“逢二进一”。
- 数符:0、1
- 表示:(1010001010010)2 或 1010001010010B
- 八进制。基数为8,计数“逢八进一”。
- 数符:0~7
- 表示:(1652)8
- 十六进制:基数为16,“逢十六进一”。
- 数制:0 ~ 9、A、B、C、D、E、F,其中A、B、C、D、E、F分别表示10 ~ 15。
- 表示:(1652)16 或 1652H 或 0x1652
进位计数制总览

1、任意进制转为十进制

- 将任意进制数的各位数码与它们的权值相乘,再把乘积相加,就得到了一个十进制数。
2、二进制与八进制和十六进制互转 (注意:小数部分也是从右往左算)

- 二进制转换为八进制:每3个二进制位对应一个八进制位。
- 二进制转换为十六进制:每4个二进制位对应一个十六进制位。
- 在转换时以小数点为界,整数部分从右往左数分组,左加零补齐;小数部分从左往右数分组,右加零补齐。
注意:八进制与十六进制转换,需要先转成二进制再转换。
3、各种进制的常见书写方式

4、十进制转为任意进制
基数乘除法:这种转换方法对十进制数的整数部分和小数部分将分别进行处理,对整数部分用除基取余法,对小数部分用乘基取整法,最后将整数部分与小数部分的转换结果拼接起来。
- 整数部分(除基取余法):整数部分除基取余,最先取得的余数为数的最低位,最后取得的余数为数的最高位(即除基取余,先余为低,后余为高),商为0时结束。

- 小数部分(乘基取整法):小数部分乘基取整,最先取得的整数为数的最高位,最后取得的整数为数的最低位(即乘基取整,先整为高,后整为低),乘积为1.0(或满足精度要求)时结束。

注意:在计算机中,小数和整数不一样,整数可以连续表示,但小数是离散的,所以并不是每个十进制小数都可以准确地用二进制表示。例如0.3,无论经过多少次乘二取整转换都无法得到精确的结果。但任意一个二进制小数都可以用十进制小数表示。
5、十进制转为二进制(拼凑法)

6、真值和机器数

- 真值:指用正号、负号来分别表示正数(正号可省略)和负数,是机器数所代表的实际值。
- 机器数:用“0”表示“正”,用“1”表示“负”;这种把符号“数字化”的数称为机器数。常用的有原码、补码和反码表示法。如0,101(这里的逗号“,”仅为区分符号位与数值位)表示+5。
知识回顾与重点考点

2.1.2 BCD码(Binary-Code Decimal码)
二进制编码的十进制数(Binary-Coded Decimal,BCD)通常采用4位二进制数来表示一位十进制数中的0~9这10个数码。这种编码方法使二进制数和十进制数之间的转换得以快速进行。但4位二进制数可以组合出16种代码,因此必有6种状态为冗余状态。(从1010到1111这6个为无效码)


-
余3码:这是一种无权码,是在8421码的基础上加(0011)2形成的,因每个数都多余“3”,因此称为余3码。
如8→1011;9→1100。
-
2421码:这也是一种有权码,权值由高到低分别为2,4,2,1,特点是大于或等于5的4位二进制数中最高位为1,小于5的最高位为0。
如5→1011而非0101。
知识回顾与重要考点

2.1.3 字符与字符串

1、字符编码ASCII码

- 案例:

- 汉字的表示和编码

2、字符串

- 大端模式和小端模式

3、知识回顾与重要考点

2.1.4 校验码
任意两个码字之间最少变化的二进制位数称为码距,码距大于等于2的数据校验码开始具有检错的能力。码距越大,检错、纠错能力越强。奇偶校验码的码距等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误;海明码的码距大于2,因此不仅可以发现错误,还能指出错误的位置。仅靠增加奇偶校验位的位数不能提高正确性,还要考虑码距。
具有检、纠错能力的数据校验码的实现原理:在编码中,除合法码字外,再加入一些非法码字,当某个合法码字出现错误时,就变为非法码字。合理安排非法码字的数量和编码规则就能达到纠错的目的。

1、奇偶校验码
原编码上加一个校验位,码距等于2!

- 案例:

- 知识回顾与重要考点

2、海明(汉明)校验码
- 思路简介


-
求解步骤
- 步骤一

- 步骤二

- 步骤三

- 步骤四

-
知识回顾与重要考点

3、循环冗余校验(CRC)码
- 基本思想

-
求解步骤
- 步骤一

- 步骤二

- 步骤三

- 步骤四

-
步骤五

- CRC校验码是可以纠错的,前面这个是因为信息位太长
-
步骤六

-
知识回顾与重要考点

2.2 定点数的表示和运算
1、定点数和浮点数的概念

机器数的定点表示:
定点表示法用来表示定点小数和定点整数。符号位为0表示正数,符号位为1表示负数。

- 定点小数:小数点在符号位之后,有效数值部分最高位之前。
- 当x0 = 0,x1 ~ xn,均为1时,X为其所能表示的最大正数,真值等于 1-2-n;
- 当x0 = 1,x1 ~ xn,均为1时,X为其(原码)所能表示的最小负数,真值等于-(1-2-n)
- 定点整数:小数点在有效数值部分最低位之后。
- 当x0 = 0,x1 ~ xn,均为1时,X为其所能表示的最大正数,真值等于2n-1;
- 当x0 = 1,x1 ~ xn,均为1时,X为其(原码)所能表示的最小负数,真值等于-(2n-1)
2、无符号数

-
无符号整数的表示
整个机器字长全部二进制位均为数值位,机器字长n位数的表示范围0 ~ 2n-1。
-
带符号整数的表示
最高位为符号位,0正1负。计算机中带符号数用补码表示,n位带符号数取值范围是-2n-1 ~ 2n-1-1。
3、原码

用机器数的最高位表示数的符号,其余各位表示数的绝对值。
- 纯整数的原码定义

若字长为n+1,则原码整数的表示范围为-(2n-1)≤x≤2n-1(关于原点对称)
例如,若x1=+1110,x2=-1110,字长为8位,则其原码表示为[x1]原=0,0001110,[x2]原=27+1110=1,0001110,其中最高位是符号位。
- 纯小数的原码定义

若字长为n+1,则原码小数的表示范围为-(1-2-n)≤x≤1-2-n(关于原点对称)
例如,若x1=+0.1101,x2=-0.1101,字长为8位,则其原码表示为[x1]原=0.1101000,[x2]原=1-(-0.1101)=1.1101000,其中最高位是符号位。
原码表示的优点是与真值的对应关系简单、直观,与真值的转换简单,并且用原码实现乘除运算比较简便。缺点是,0的表示不唯一,更重要的是原码加减运算比较复杂。
4、反码
正数与原码相同;负数与原码相比,符号位不变,数值位按位取反。

反码表示存在以下几个方面的不足:0的表示不唯一(即存在正负0);表示范围比补码少个最小负数。反码在计算机中很少使用,通常用作数码变换的中间表示形式。
5、补码
正数与原码相同;负数与原码相比,符号位不变,数值

该博客围绕计算机组成原理展开,涵盖计算机系统概述、数据表示与运算、存储系统、指令系统、中央处理器、总线、输入/输出系统等内容。介绍了各部分的概念、发展、结构、性能指标等,还对常见问题和易混淆知识点进行解答。

2820

被折叠的 条评论
为什么被折叠?



