计算机组成原理第一章
计算机组成原理
第一章
1、计算机的发展
计算机硬件唯一能识别的数据就是 0和1。
计算机系统 = 硬件 + 软件
硬件:计算机的实体,如主机、外设等
软件:由具有各类特殊功能的程序组成
(1)软件
- 系统软件:操作系统、数据库管理系统(DBMS)、标准程序库、网络软件、语言处理程序、服务程序。
- 应用软件:QQ、微信等
软件的发展
(2)硬件
①硬件的发展
发展阶段 | 时间 | 逻辑元件 | 速度(次/秒) | 内存 | 外存 |
---|---|---|---|---|---|
第一代 | 1946-1957 | 电子管 | 几千-几万 | 汞延迟线、磁鼓 | 穿孔卡片、纸带 |
第二代 | 19558-1964 | 晶体管 | 几万-几十万 | 磁芯存储器 | 磁带 |
第三代 | 1964-1971 | 中小规模集成电路 | 几十万-几百万 | 半导体存储器 | 磁带、磁盘 |
第四代 | 1972-现在 | 大规模、超大规模集成电路 | 上千万-万亿 | 半导体存储器 | 磁盘、磁带、光盘、半导体存储器 |
(1)电子管时代
第一台电子数字计算机:ENIAC(1946)
占地面积约170平方米、耗电量150千瓦、运算速度:5000次加法/秒。
逻辑元件:电子管
使用机器语言编程,利用纸带机打孔的方式来进行数据的读取。
如果有小虫子(bug)落在了纸带上,那么计算机读取的数据就会发生错误,所以我们之后就把一些程序上的错误叫做bug。
(2)晶体管时代
使用晶体管作为逻辑元件的计算机,计算机的体积、功耗降低。
并且出现了面向过程编程的程序设计语言:FORTRAN。
并且有了操作系统的雏形。
(3)中小规模集成电路时代
将元件集成在基片上,计算机主要用于科学计算等专业用途,高级语言迅速发展,开始有了分时操作系统。
(4)大规模、超大规模集成电路时代
开始出现“微处理器”、微型计算机。
个人计算机(PC)开始出现,并且已经有了windows、MacOS、Linux…
②微处理机的发展
微处理机的发展以微处理技术为标志、
机器字长:计算机一次整数运算所能处理的二进制位数。
操作系统位数:其所依赖的指令集的位数。
③摩尔定律
摩尔定律:揭示了信息技术进步的速度。集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍。
(3)目前的发展趋势
“两极”分化:
- 一种是微型计算机向更微型化、网络化、高性能、多用途方向发展
- 另一种是巨型机向更巨型化、超高速、并行处理、智能化方向发展。
总结
2、计算机硬件的基本组成
对于早期的ENIAC计算机,需要程序员手动接线来控制计算,非常麻烦。
所以就提出了“存储程序”的概念,存储程序是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
(1)早期的冯诺依曼机
- 输入设备:将信息转换成机器能够识别的形式
- 存储器:存放数据和程序
- 运算器:算术运算和逻辑运算
- 输出设备:将结果转换成人们熟悉的形式
- 控制器:指挥程序运行
在计算机系统中,软件和硬件在逻辑上是等效的。
特点
- 计算机都由五大部件组成
- 指令和数据都以同等地址存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入/输出设备与存储器之间的数据传送通过运算器完成)
(2)现代计算机的结构
现代计算机:以存储器为中心。
CPU = 运算器 + 控制器
简化后的框图
总结
3、认识计算机的各个硬件
(1)主存储器的基本组成
MAR位数反应存储单元的个数。
MDR位数 = 存储字长
存储体:数据在存储体内按地址存储。
存储单元:每个存储单元存放一串二进制代码。
存储字(word):存储单元中二进制代码的组合。
存储字长:存储单元中二进制代码的位数。
存储元:即存储二进制的电子元件,每个存储元可存储1bit。
需要注意的考点
(2)运算器的基本组成
运算器:用于实现算术运算(如加减乘除、逻辑运算)。
(3)控制器的基本组成
完成一条指令:
- 取指令 PC
- 分析指令 IR
- 执行指令 CU
(4)计算机的工作过程
CPU区分指令和数据的依据:指令周期的不同阶段。
总结
4、计算机系统的多级层次结构
(1)五层结构
微指令系统 -> 用机器语言的机器 -> 操作系统机器 -> 汇编语言机器 -> 高级语言机器
由硬件直接执行微指令 -> 执行二进制机器指令 -> 用汇编程序翻译成机器语言程序 -> 用编译程序翻译成汇编语言程序。
注意:
- 汇编语言指令和机器指令一一对应;
- 下层是上层的基础,上层是下层的扩展。
(2)三种级别的语言
- 机器语言:二进制代码
- 汇编语言:助记符
- 高级语言:Java、C++等
编译程序
将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需要翻译一次)。
解释程序
将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)。
注意:编译、汇编、解释程序,可以统称为“翻译程序”。
总结
5、计算机的性能指标
(1)存储器的性能指标
MAR位数反映存储单元的个数(最多支持多少个)
MDR位数 = 存储字长 = 每个存储单元的大小
==> 总容量 = 存储单元个数 * 存储字长 bit (1Byte = 8bit)= 存储单元个数 * 存储字长 / 8 Byte
Eg: MAR为32位,MDR为8位
总容量 = 2^32 * 8bit = 4 GB
拓展:
- 2^10 :K
- 2^20:M
- 2^30:G
- 2^40:T
(2)CPU的性能指标
CPU主频:CPU内数字脉冲信号振荡的频率。
我们把一个脉冲的周期称为CPU的时钟周期。那么
CPU主频(时钟频率) = 1 / CPU时钟周期
(CPU主频,单位:微秒、纳秒)(CPU时钟周期,单位:赫兹,Hz)
CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数。
执行一条指令的耗时 = CPI * CPU时钟周期
CPU执行时间(整个程序的耗时) = CPU时钟周期数 / 主频 = (指令条数 * CPI)/ 主频
IPS(Instructions Per Second):每秒执行多少条指令
IPS = 主频 / 平均CPI
FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算
(3)系统整体的性能指标
静态指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量:指系统在单位时间内处理请求的数量。
它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。
通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。
动态测试
基准程序是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。