1.1.1 软硬件发展
计算机硬件的发展
电子管时代:
第一台 电子数字计算机:ENIAC
机器语言
占地面积约170平方米
耗电量150千瓦
包含了17468根真空管
晶体管时代:
第一台使用晶体管线路的计算机:TRADIC
面向过程的程序设计语言:FORTEAN
有了操作系统的雏形
耗电量30瓦
包含了800只晶体管
中小规模集成电路时代:
高级语言迅速发展
开始有了分时操作系统
大规模,超大规模集成电路时代:
产生了微处理器
新的概念:并行,流水线,高速缓冲,虚拟存储器…
微处理器的发展:
机器字长:计算机一次整数运算所能处理的二进制位数
操作系统位数:其所以来的指令集的位数(影响的是整个系统能够访问的存储空间的大小)
摩尔定律(揭示了信息技术进步的速度):集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍
计算机软件的发展
语言的发展:
操作系统的发展
1.1.2 计算机的分类及发展方向
按照所用信号类型分类
电子模拟计算机对环境的要求较高,因为模拟信号容易被扰乱而不易恢复,所以一般用于科研。
电子数字计算机较为常用,像我们家庭使用的个人计算机也都是电子数字计算机。
按照指令和数据流分类
-
单指令流&单数据流(SISD):冯诺依曼体系结构
-
单指令流&多数据流(SIMD):阵列处理器,向量处理器
-
多指令流&单数据流(MISD):实际上不存在
-
多指令流&多数据流(MIMD):多处理器,多计算机
发展趋势:“两级”分化
1.2.1 系统结构
计算机系统的组成
冯诺依曼体系的计算机以运算器为核心:
现代计算机以存储器为核心:
软件和硬件在逻辑上是等效的:例如:为了实现更多位数的计算,我们可以通过买更多的运算器来实现,也可以通过设计步骤来实现,将更多位数拆分成几等位数。通过硬件来实现某个任务,也可以通过某个软件来实现某个任务。但是两者并不是等价的,例如完成这个任务,硬件和软件的完成所需时间不一定相同。
计算机硬件系统的基本组成
这里说的主机与我们平常见到的机箱中的主机并不一样,机箱中的主机内容比主机更加丰富。辅助存储器就是我们平常说的机械硬盘,固态硬盘,闪存等等…
1.2.2 CPU及工作过程
功能部件-运算器和控制器
计算机的工作过程-取数指令
MAR:地址寄存器,用于指明要读/写哪个存储单元。其位数反映存储单元的数量
MDR:数据寄存器,用于暂存要读/写的数据。其位数=存储字长。
PS:可以理解为PC永远存储着下一条指令的地址,但其实在工作期间存储着当前指令的地址。对于控制器需要记得的是永远到PC中寻找要执行的执行。
第一步:去PC所指向的那个位置取出指令地址到主存的地址寄存器中。
(PC) -> MAR
第二步:根据地址到对应的存储体中找出相应的数据,放到数据寄存器中。
M(MAR) -> MDR
第三步:该数据是一条指令,则放置到指令寄存器中
(MDR) -> IR
-----------------------------------取指令结束,开始解析指令------------------
第四步:将操作码放置到控制单元中,控制单元解析操作码,就能知道接下来应该怎么控制各个部件工作
OP(IR) -> CU
-----------------------------------分析指令结束,开始执行指令,假设是取数指令------------------
第五步:从指令中切分出地址码,放置到地址寄存器中
Ad(IR) -> MAR
第六步:根据地址到对应的存储体中找出相应的数据,放到数据寄存器中
M(MAR) -> MDR
第六步:数据寄存器中的数据是一个“数据”,将“数据”放置到累加器中
(MDR) -> ACC
-----------------------------------执行指令结束------------------
如何判断从MDR取出来的数据放置到ACC还是IR中?
答案:如果取出来的数据是指令,则放置IR中,否则放置ACC中
CPU如何区分从MDR中取出来的是指令和数据?
答案:根据指令周期的不同阶段。在取指周期取出来的就是指令,在执行周期取出来的就是数据
大致的步骤:从PC中取出指令的地址送到地址寄存器,然后在存储体中找到地址对应的数据,获取该数据,放入数据寄存器中,然后辨别是取出的是数据还是指令,数据则送至累加器,指令则送至指令寄存器,如果是指令,则送至控制单元解析指令,然后控制各部件执行指令
1.2.3 IO设备
功能部件 - I/O设备
1.2.4 软件系统
计算机编程语言
编译程序:整体编译完了,再一次性执行。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
解释程序:一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
1.2.5 五层结构
计算机系统的层次结构
冯诺依曼计算机
1.2.6 存储器
存储电容放置一个1的信息(也可以是0,无所谓),开关元件收到一个读的信息(假设用1代表读,0代表写),开关元件控制整个电路联通,中间的电路就相当于一根导线,这样就把存储电容中的信息传输到了外边。写也类似的。
一个存储单元由多个存储元组成。
多个存储元构成一个存储体。
从存储单元中读出的一个个信号合在一起称为存储字。
存储字长:描述一个存储字有多少位
地址寄存器
译码器作用:接受地址寄存器中存放的地址,然后将其转为选通信号,就可以找出该地址所保存的数据
数据寄存器
数据寄存器并不需要译码器,只是单纯的通过存储元的电容来存储数据。
1.3.1 性能指标 - 容量(主存储器)
主存储器的总容量 = 存储单元个数 * 存储字长 (单位:bit,一个bit就一个0或1)
)
1Byte(字节) = 8 bit(位)
n位地址(译码器中的“条数”) -> 2的n次方个存储单元(系统能支持额最大容量=2的n次方 * 存储字长)
常用的2的n次方数(记住2的0次方到10次方):
各种单位:
b:2的0次方
B:2的3次方
K:2的10次方
M:2的20次方
G:2的30次方
T:2的40次方
4K = 2的2次方 * 2的10次方 = 2的12次方
1.3.2 性能指标 - 速度(运算器)
时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。