一、计算机的发展
Q:什么是计算机系统? A:计算机系统=硬件+软件
1.计算机硬件的发展
第一代 1946-1957 电子管时代:
第一台电子数字计算机:ENIAC(1946) 冯·诺伊曼 电子管->逻辑元件 1.8W个电子管 缺点:占地大,耗电高,计算速度慢
使用机器语言编程 纸带机
第二代 1958-1964 晶体管时代:
使用晶体管作为逻辑元件 体积大幅度降低 计算速度上升 出现面向对象的程序设计语言:FORTRAN 有了操作系统的雏形
第三代 1964-1971 中小规模集成电路时代:
将元件集成在基片上 高级语言迅速发展 开始有了分时操作系统
第四代 1972-至今 大规模、超大规模集成电路时代:
开始出现微处理器,微型计算机 个人PC萌芽 操作系统:Windows,MacOS,Linux
微处理器的发展
intel 8080——>Pentium IV 8位->64位
机器字长:计算机一次整数运算所能处理的二进制位数
1947年 贝尔实验室 发明晶体管
1957年 仙童半导体公司 发明集成电路
1968年 摩尔——>intel
1969年 桑德斯——>AMD
摩尔定律:
集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍
揭示了信息技术进步的速度
2.计算机软件的发展
软件的分类:
系统软件——用来管理整个计算机系统,eg:操作系统,数据库管理系统,标准程序库,网络软件,语言处理软件,服务程序
应用软件——按任务需求编制成的各种程序,eg:抖音,微信
编程语言:机器语言->汇编语言(把机器语言转化成人类更方便记忆的符号)->高级语言(程序员不需要关心机器的特性)
操作系统:DOS->Windows->ios
3.计算机的分类与发展趋势
电子模拟计算机和电子数字计算机
数字计算机又可以按照用途分为:专用计算机和通用计算机
通用计算机又分为:巨型机、大型机、中型机、小型机、微型机和单片机6类。
按照指令和数据流可以分为:
单指令流和单数据流系统(SISD),即传统的冯·诺依曼体系结构。
单指令流和多数据流系统(SIMD),包括阵列处理器和向量处理器系统。
多指令流和单数据流系统(MISD),这种计算机实际上不存在。
多指令流和多数据流系统(MIMD),包括多处理器和计算机系统。
两极分化:一级是微型计算机->更微型化、网络化、高性能、多用途方向发展,eg:手机、智能手表
另一极巨型机->更巨型化、超高速、并行处理、智能化方向发展,eg:神威·太湖之光(每秒9.3亿亿次浮点运算)、天河二号
二、计算机硬件的基本组成
1.早期的冯·诺伊曼机的结构
ENIAC 手动接线来控制计算
"存储程序":将指令以二进制代码的形式事先输入计算机的主存储器,然后将其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他的指令,直至程序结束
第一台采用冯诺依曼结构的计算机 EDVAC
输入设备:将信息转化成机器能识别的形式
运算器:算术运算、逻辑运算
存储器:存放数据和程序
控制器:指挥程序运行
输出设备:将结果转换成人们熟知的形式
在计算机系统中,软件和硬件在逻辑上是等效的
用软件实现->成本低,效率低 用硬件实现->成本高,效率高
eg:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算,也可以用软件的方法,执行多次加法运算实现
冯诺依曼计算机的特点:
(1)计算机有五大部件组成:运算器、控制器、存储器、I/O设备
(2)指令和数据以二进制方式表示——>方便使用电信号表示
(3)指令和数据以同等地位存储于存储器,可按地址寻访
(4)指令以操作码和地址码组成
(5)存储程序
(6)以运算器为中心——>需要运算器作为中转(低效)
2.现代计算机的结构
以存储器为中心
将运算器和控制器集成在一片芯片上:CPU=运算器+控制器
硬件: 主机:运算器、控制器、主存储器
I/O设备:输入设备、输出设备、辅助存储器(外接硬盘)
三、计算机的功能部件
1.主存储器的基本组成
存储体(数据在存储体内按地址存储)、MAR(存储地址的寄存器)、MDR(存储数据的寄存器)
读取数据过程:
写入数据过程:
存储单元:每个存储单元存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:存储二进制的电子元件,每个存储元可以存1bit
每个地址对应一个存储单元
MAR位数反映存储单元的个数
eg:MAR=4位->2^4个存储单元
MDR位数等于存储字长
eg:MDR=16位->每个单元可存放16bit 一个字(word)=16bit
⋉ 一个字节(Byte)=8 bit
1B=1个字节
1b=16bit
一个字等于多少多少bit取决于计算机结构
2.运算器的基本组成
ACC:累加器,用于存放操作数,或运算结果
MQ:乘商计数器,在做乘除运算时,存放操作数,或运算结果
X:通用的操作数寄存器,用于存放操作数
ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算(复杂结构)
3.控制器的基本组成
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加一的功能
完成一条指令:
四、计算机的工作过程
#include<iostream>
int a=2,b=3,c=1,y=0
void main()
{
y=a*b+c;
}
Step1:读取数据
初:PC=0 指向第一条指令的存储地址
#1:(PC)——>MAR (MAR)=0
#2~3:M(MCR)—>存储体—>MDR (MDR)=000001 0000000101
#4:(MDR)——>IR (IR)=000001 0000000101=5
#5:OR(IR)——>CU 指令的操作码送到CU,CU分析得知“读数”指令
#6:Ad(IR)——>MAR 地址码指向MAR=5
#7~8:M(MAR)—>存储体—>MDR (MDR)=000000000000010
#9:(MDR)——>ACC (ACC)=000000000000010=2
Step2:乘法运算
上一条指令执行后,PC自动加一 (PC)=1 (ACC)=2
#1:(PC)——>MAR (MAR)=1
#2~3:M(MCR)—>存储体—>MDR (MDR)=000100 0000000110
#4:(MDR)——>IR (IR)=000100 0000000110=6
#5:OR(IR)——>CU 指令的操作码送到CU,CU分析得知“乘法”指令
#6:Ad(IR)——>MAR 地址码指向MAR=6
#7~8:M(MAR)—>存储体—>MDR (MDR)=000000000000011
#9:(MDR)——>MQ (MQ)=000000000000011=3
#10:(ACC)——>X (X)=2
#11:(MQ)⨉(X)——>ACC 由ALU实现乘法运算——>(ACC)=6
Step3:加法运算
上一条指令执行后,PC自动加一 (PC)=2 (ACC)=6
#1:(PC)——>MAR (MAR)=2
#2~3:M(MCR)—>存储体—>MDR (MDR)=000011 0000000111
#4:(MDR)——>IR (IR)=000011 0000000111=7
#5:OR(IR)——>CU 指令的操作码送到CU,CU分析得知“加法”指令
#6:Ad(IR)——>MAR 地址码指向MAR=7
#7~8:M(MAR)—>存储体—>MDR (MDR)=000000000000001
#9:(MDR)——>MQ (MQ)=000000000000001=1
#10:(ACC)——>X (X)=1
#11:(MQ)+(X)——>ACC 由ALU实现加法运算——>(ACC)=7
Step4:存入数据
上一条指令执行后,PC自动加一 (PC)=3
#1:(PC)——>MAR (MAR)=3
#2~3:M(MCR)—>存储体—>MDR (MDR)=000010 0000001000
#4:(MDR)——>IR (IR)=000010 0000001000=8
#5:OR(IR)——>CU 指令的操作码送到CU,CU分析得知“存数”指令
#6:Ad(IR)——>MAR 地址码指向MAR=8
#7:(ACC)—>MDR (MDR)=000000000000111=7
#8:MAR——>存储体
#9:(MDR)——>地址为8的存储单元 y=7
Step5:中断停机(利用中断机制通知操作系统终止该进程)
上一条指令执行后,PC自动加一 (PC)=4
#1:(PC)——>MAR (MAR)=3
#2~3:M(MCR)—>存储体—>MDR (MDR)=000110 0000000000
#4:(MDR)——>IR (IR)=000110 0000000000=0
#5:OR(IR)——>CU 指令的操作码送到CU,CU分析得知“停机”指令
(黄色部分为取指令,紫色部分为分析指令,红色部分为执行指令)
五、计算机系统的多级层次结构
1.计算机系统的层次结构
虚拟机器M4 用编译程序翻译成汇编程序
(高级语言机器)
↓
虚拟机器M3 用汇编程序翻译成机器程序
(汇编语言机器)
↓
虚拟机器M2 向上提供“广义指令”(系统调用)
(操作系统机器)
↓
传统机器M1 执行二进制机器指令
(机器语言机器)
↓
虚拟机器M0 由硬件直接执行微指令
(微指令系统机器)
2.三种级别的语言
翻译程序分为:编译程序、汇编程序、解释程序
编译程序:将高级语言编写的源程序的全部语句一次性全部翻译成机器语言程序,再执行机器语言程序(只翻译一次)
解释程序:将源程序的一条语句翻译成对应的机器语言,并立刻执行,紧接着翻译下一句(效率低于编译程序)
*编译程序可形成.exe程序,全名为可执行文件(execute file),是用机器语言描述的程序,之后运行此文件将不需要再编译
六、计算机的性能指标
1.存储器的性能指标
总容量=存储单元个数*存储字长 bit = 存储单元数*存储字长/8 Byte
eg:MAR32位,MDR8位,则总容量=2^32*8 bit=4GB
2.cpu的性能指标
(1)CPU主频:CPU内数字脉冲信号振荡的频率(规律性)->指挥CPU内部所有的部件运作的节奏
CPU主频(时钟频率)=1/CPU时钟周期
(2)CPI(Clock cycle Per Instruction):执行一条指令所需要的时钟周期数
执行一条指令的耗时=CPI⨉CPU时钟周期
CPU执行时间(整个程序的耗时)=CPU时钟周期数全频=(指令条数⨉CPI)/主频
(3)IPS(Instruction Pre Second):每秒执行多少指令
(4)FLOPS(Floating-point Operations Pre Second):每秒执行多少次浮点数运算
3.系统整体的性能指标
(1)数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
(2)吞吐量:指令在单位时间内处理请求的数量(取决于信息能多快的输入内存,CPU多快读取指令,数据能多快从内存存入/取出,所得结果多快从内存发送给一台外接设备)
(3)响应时间:用户向计算机发送一个请求到系统对该请求做出响应并获得所需结果的等待时间
(4)基准程序(动态测试):用来测量计算机处理速度的一种实用程序