一、计算机发展历程
不重要,需要了解查阅相关资料
二、计算机系统层次结构
1、计算机系统的组成
完整的计算机系统:硬件系统+软件系统。
硬件:有形的物理设备。
软件:在硬件上运行的程序和相关数据及文档。
软硬件在逻辑功能上是等价的:某一功能,可用软件实现也可用硬件实现。
注:一个功能若使用较为频繁且硬件实现的成本较为理想,则用硬件可提高效率。
2、计算机硬件
冯 诺依曼思想:“存储程序的概念”:
(1)采用 “存储程序” 的工作方式。
(2)计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备5部分组成。
(3)指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们。
(4)指令和数据均用二进制代码表示。
(5)指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
计算机的功能部件
(1)输入设备
将程序和数据以机器所能识别和接受的信息形式输入计算机。
最基本的设备:键盘,此外还有鼠标、扫描仪、摄像机等。
(2)输出设备
将计算机处理结果以人能接受的形式或其他系统所要求的信息形式输出。
最基本的设备:显示器、打印机。
注:输入、输出设备简称I/O设备
(3)存储器
主存储器(也叫内存储器或主存)和辅助存储器(也叫外存储器或外存)
主存储器:CPU能直接访问的存储器。
辅助存储器:帮助主存记忆更多信息,其中内容必须调入主存后才能为CPU所访问。
注:主存储器工作方式是按存储单元地址进行存取,叫按地址存取方式。还有按内容存取方式。
存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位2进制代码“0”或“1”。所以存储单元可存储一串2进制代码,叫存储字,它的位数就是存储字长(可以是1B=8bit,或是字节的偶数倍)。
图中1个存储体,16个存储单元,存储字长为8bit,即1B。
MAR用于寻址,里边的内容是要找寻的内存地址,位数反映最多可寻址存储单元个数。
图中MAR是4位,2的4次方等于16,最多从0找到15(16个存储单元数)。MAR长度与PC长度相等。
MDR用于存放数据,里边的内容是从内存中取到的数据,位数等于存储字长,一般为字节的偶数倍。
图中MDR是8位。
存储体的容量:2的MAR位数次方 * MDR位数
图中存储体的容量:2的4次方 * 8=2的7次方bit,即128bit。
注:主存储器不在CPU中,但现代计算机的MAR和MDR都存在于CPU中。
(4)运算器
用于进行算术运算和逻辑运算。
算术运算:加减乘除。逻辑运算:与、或、非、异或、比较、移位等。
运算器核心是算数逻辑单元(ALU)。
运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等。注:ACC、MQ、X必须具备。
运算器还包含程序状态寄存器(PSW),也叫标志寄存器,存放ALU运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。
(5)控制器
是计算机的指挥中心,“指挥”各部件自动协调地进行工作。
控制器由程序计数器(PC)、指令寄存器(IR)、控制单元(CU)组成。
PC存放当前欲执行指令的地址,有自动加1功能(1指一条指令长度),即可自动形成下一条指令的地址,它与主存储器的MAR之间有一条直接通路。
IR存放当前的指令,内容来自主存储器的MDR。指令中操作码OP(IR)送至CU,用来分析指令并发出各种微操作命令序列;地址码Ad(IR)送至MAR用以取操作数。
注:一般运算器和控制器集成到同一芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机,主机之外其他硬件装置(外存、I/O设备)统称为外部设备、简称外设。
模型机
如图CPU包含ALU、通用寄存器组(GPRs)、标志寄存器、控制器、指令寄存器(IR)、程序计数器(PC)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)。
1.从控制器送出的虚线就是控制信号:
①控制如何修改PC以得到下一条指令的地址
②控制ALU执行什么运算
③控制主存储器进行读操作还是写操作(读写控制信号)
2.CPU和主存储器之间通过一组总线相连,地址、控制、数据三组信号线。
MAR中的地址信息直接送到地址线上,用于指向读/写操作的主存储器存储单元
控制线中有读/写信号线,指出数据是从CPU写入主存储器还是从主存储器读出到CPU
将MDR的数据直接送到数据线或者将数据线的数据接收到MDR中
3、计算机软件
(1)系统软件和应用软件
软件按功能分为:系统软件和应用软件
系统软件是基础软件,通常作为系统资源提供给用户使用。主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等。
应用软件是用户为解决某领域问题编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。
系统程序员:编写操作系统、编译程序等系统软件。
应用程序员:用系统软件编写解决具体应用问题的程序。
(2)三个级别的语言
①机器语言
是二进制代码语言,是计算机唯一可以直接识别和执行的语言。
②汇编语言
用英文单词或其缩写代替二进制的指令代码,更容易为人记忆和理解。
使用汇编语言编写的程序,必须经过一个称为汇编程序的系统软件翻译,转换为机器语言后,才能在计算机硬件系统上执行。
③高级语言
C、C++、JAVA等,通常需要经过编译程序翻译成汇编语言程序,再通过汇编得到机器语言程序。或直接由高级语言翻译成机器语言程序
翻译程序
汇编程序(汇编器):汇编语言程序——>机器语言程序
解释程序(解释器):源程序语句按执行顺序逐条翻译成机器指令并立即执行。(JAVAScript)
编译程序(编译器):高级语言程序——>汇编语言程序或机器语言程序。(JAVA)
4、计算机系统的层次结构
尚无统一标准
ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。ISA指软件能感知到的部分,也称软件可见部分。
5、计算机系统的工作原理
(1)“存储程序”工作方式
程序执行前,将程序所含的指令和数据送入主存储器,一旦程序被启动执行,就无须操作人员的干预,自动逐条完成指令的取出和执行任务。周而复始的执行程序包含的一条条指令。
每条指令的执行过程包括:根据PC从主存储器中取指令、对指令进行译码、取操作数并执行、将结果送回存储器。
程序执行前,将第一条指令地址存放到PC中,取指令时,将PC的内容作为地址访问主存储器。
每条指令执行过程中,计算下一条将执行指令的地址,并送至PC。
若当前指令为顺序型指令,则下一条指令地址为 PC的内容 加上当前指令的长度;若当前指令为转跳型指令,则下一条指令地址为指令中指定的目标地址。
当前指令执行完后,根据PC内容到主存储器中取出下一条将要执行的指令。
(2)从源程序到可执行文件
读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello,翻译过程如下:
①预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,如将#include命令后面的.h文件内容插入程序文件。输出结果是一个以.i为扩展名的源程序hello.i。
②编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。汇编语言源程序中的每条语句都以一种文本格式描述了一种低级机器语言指令。
③汇编阶段:汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包为一个称为可重定位目标代码文件hello.o,它是一种二进制文件,因此用文本编辑器打开会显示乱码。
④链接阶段:链接器(Id)将多个可重定位目标代码文件和标准库函数合并为一个可执行目标文件,简称可执行文件。本例中,链接器将hello.o和标准库函数printf所在的可重定位目标模块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。
(3)指令执行过程的描述
可执行文件中的代码段是一条条机器指令构成的,指令是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。如取数指令从存储单元中取出一个数据送到CPU的寄存器中,存数指令将CPU寄存器的内容写入一个存储单元,ALU指令将两个寄存器的内容进行某种算数或逻辑运算后送到一个CPU寄存器中,等等
取数指令(送至运算器的ACC中)过程如下:
①取指 :PC——>MAR——>M——>MDR——>IR
PC内容送至MAR,MAR的内容送地址总线,同时控制器将读信号送至读/写信号线,主存储器根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传送到IR中。
PC中放着0101,取数指令所在内存地址为0101,通过MAR、地址线传送内容,知道要内存地址0101存放的指令信息,拿到10111111后,通过数据线和MDR传给IR。
②分析指令 :OP(IR)——>CU
IR中拿到指令信息,分为操作码(OP),地址码(AD)。操作码送给CU(控制单元),生成控制信号,发送到其它部件。本例是取数指令,会把读信号送到总线的控制线上。
②执行指令 :AD(IR)——>MAR——>M——>MDR——>ACC
将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写信号线,从主存储器中读出操作数,并通过数据线送至MDR,再传送到ACC中。
注:每取完一条指令,还需为取下一条指令做准备,计算下一条指令的地址即(PC)+1——>PC
(PC)指PC中存放的内容。PC——>MAR应理解为(PC)——>MAR,即程序计数器的值经过数据通路送到MAR,也即表示数据通路时括号可以省略(因为只是表示数据流经的途径,而不强调数据本身的流动)。但运算时括号不能省略,即(PC)+1——>PC不能写为PC+1——>PC。
三、计算机的性能指标
1、机器字长
通常说的“某16位或32位机器”,其中16、32指的是机器字长,简称字长。
字长是指计算机进行一次整数运算(定点整数运算),所能处理的二进制数据的位数,通常与CPU的寄存器位数、ALU有关。字长一般等于通用寄存器位数或ALU的宽度,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为1字节(8位)的整数倍。
注:机器字长、指令字长、存储字长注意区分。
2、数据通路带宽
数据通路带宽指数据总线一次所能并行传送信息的位数。
这里的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。
3、主存容量
主存储器能存储信息的最大容量,通常以字节(B)衡量,也可用字数*字长来表示。
MAR位数反映存储单元个数,MDR位数反映存储单元的字长。
主存容量:2的MAR位数次方 * MDR位数
4、运算速度
①吞吐量和响应时间
吞吐量:系统在单位时间内处理请求的数量。主要取决于主存储器的存取周期。
取决于信息能多快地输入内存,CPU多快地取指令,数据多快的地从内存块取出或存入,所得结果多快地从内存送给一台外部设备。
注:吞吐量代表计算机综合性能。
响应时间:用户向计算机发送一个请求,到系统对该请求作出响应并获得所需结果的等待时间。
通常包括CPU时间(运行一个程序花费时间)与等待时间(磁盘访问、存储器访问、I/O操作、操作系统开销等时间)
②主频和CPU时钟周期
CPU时钟周期:机器内部主时钟脉冲信号的宽度,是CPU工作的最小时间单位。
主频(CPU时钟频率):时钟周期的倒数,即每秒多少个时钟周期。主频以HZ为单位,10HZ表示每秒10个时钟周期
注:假如一个计算机时钟周期为0.2s,那么主频就是一秒5个时钟周期,即5HZ。
③CPI
CPI是执行一条指令所需要的时钟周期数。IPC是CPI的倒数。一个时钟周期执行多少条指令。
对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,即平均CPI
IPS是每秒执行多少条指令,IPS=主频/平均CPI
④CPU执行时间
运行一个程序所花费的时间。等于总CPU时钟周期数/主频,也等于(指令条数*CPI)/主频
CPU执行时间取决于主频、CPI、指令条数。
⑤MIPS
每秒执行多少百万条指令。MIPS=指令条数/(执行时间*10的6次方)=主频/(CPI*10的6次方)
⑥FLOPS
FLOPS是每秒执行多少次浮点运算。
注:存储容量、文件大小的1Kb=2的10次方b,K、M、G、T通常用2的幂次表示,通常用大写的K
速率、频率的1kb=1000b,K、M、G、T通常用10的幂次表示,通常用小写的k
5、基准程序
用来进行性能评价的一组程序,反映机器在运行实际负载时的性能,可通过不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而测评其性能。不同应用场合,应选择不同的基准程序。
6、几个专业术语
系列机
具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
兼容
指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。
固件
将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸收了软件/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软硬件结合的产物。
如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)