1.4 计算机的软件
硬件是计算机的物质基础,软件是指挥硬件完成各类任务的程序与文档集合,硬件和软件相互配合,计算机才能发挥完整功能。
1.4.1 软件的组成与分类
计算机软件分为两大类:系统软件和应用软件。
1. 系统软件
面向计算机本身管理,用来管理、调度、维护计算机资源,为上层程序提供服务,不直接面向普通用户的具体业务。
包含:操作系统、编译程序、汇编程序、数据库管理系统、各类服务程序。
- 操作系统:管理CPU、内存、外设,是硬件和应用软件之间的中间桥梁。
- 编译/汇编程序:把高级语言、汇编语言翻译成机器可以识别的机器语言。
2. 应用软件
面向用户,用来解决各类实际业务问题。
例如办公软件、图像处理软件、各类业务管理程序。
1.4.2 软件的发展演变
软件伴随硬件一同迭代发展:
1. 机器语言阶段:直接使用二进制机器指令,可读性极差,面向硬件,编程难度高。
2. 汇编语言阶段:使用助记符代替二进制指令,需要汇编程序翻译为机器语言。
3. 高级语言阶段:贴近人类自然语言,例如C、Java,依靠编译程序或者解释程序转换,程序员不用关心硬件细节。
4. 现代软件阶段:操作系统成熟,软件分层,大量应用软件蓬勃发展,软硬件协同程度越来越高。
1.5 计算机系统性能评价
想要评判一台计算机的好坏,不能只看单一指标,需要多维度综合衡量。
1.5.1 计算机的性能指标
1. 机器字长
CPU一次能够处理的数据位数,字长直接影响运算精度、寄存器位数、数据总线位数。字长越大,一次处理的数据越多。常见:32位、64位。
2. 存储容量
分为主存容量、辅存容量。主存越大,可同时运行的程序越多;单位KB、MB、GB。
3. 运算速度
- MIPS:每秒百万条指令;
- CPI:每条指令执行需要的时钟周期数;
- 时钟频率(主频):主频越高,时钟周期越短,但主频不能单独决定整机速度,还受指令体系、存储器速度影响。
注意:主频高≠整机一定快,不能单凭主频评判计算机性能。
4. 吞吐量与响应时间
- 吞吐量:单位时间系统处理任务总量;
- 响应时间:提交任务到任务完成所消耗的总时间。
1.5.2 计算机系统的测试基准
基准测试程序(Benchmark),使用标准化测试程序,用来客观测试计算机实际性能。
不依靠单一理论参数,运行真实程序,得到可横向对比的性能结果,避免单一指标带来的片面判断。
1.6 计算机系统的层次结构
计算机是多层级的系统,从硬件到软件逐层向上抽象,下层为上层提供服务。
1.6.1 冯·诺依曼体系结构
冯·诺依曼核心思想:存储程序原理
1. 程序和数据统一存放在存储器中;
2. 指令和数据都使用二进制表示;
3. 计算机五大部件:运算器、控制器、存储器、输入设备、输出设备;
4. 控制器从存储器取出指令,自动执行指令,完成运算。
传统冯诺依曼结构:指令、数据共用同一套存储器。
1.6.2 哈佛结构和改进的哈佛结构
哈佛结构:指令存储器与数据存储器相互独立分开。指令、数据分开存储,可以同时取指令和读写数据,提升并行处理能力,多用于嵌入式、单片机。
改进哈佛结构:保留独立指令、数据Cache,主存储器依旧共用,兼顾性能与成本。
1.6.3 非诺依曼化
传统冯诺依曼存在瓶颈:存储器与CPU之间数据传输速度限制,即冯诺依曼瓶颈。
非冯诺依曼体系尝试打破存储程序模式,例如数据流计算机,从架构层面缓解数据传输瓶颈。
1.6.4 多级组成的计算机系统
计算机分层,从底层硬件向上依次:
微程序机器层 → 传统机器语言层 → 汇编语言层 → 高级语言层 → 应用语言层
每一层都有自己对应的语言,上层的程序依靠下层提供的功能实现,对上层屏蔽下层实现细节。
1.6.5 软件与硬件的逻辑等价性
一件功能,既可以用硬件电路实现,也可以用软件编程实现。
- 硬件实现:速度快,成本高,灵活性差;
- 软件实现:灵活性强,成本低,运行速度慢。
很多功能软硬件可以互相替换,这就是软硬件逻辑等价性。例:乘法,可以硬件乘法器完成,也可以软件循环加法实现。
1.6.6 计算机系统结构、计算机组成与计算机实现
1. 计算机系统结构:程序员看到的机器属性,指令集、数据类型、寻址技术,属于软硬件交界面。
2. 计算机组成:系统结构的逻辑实现,例如数据通路、控制逻辑。
3. 计算机实现:物理硬件实现,芯片、器件、电路板等物理工艺。
本章1.4‑1.6小结
1. 软件分为系统软件、应用软件,记住各自实例;
2. 性能指标:字长、存储容量、主频、CPI、MIPS,记住主频不能代表全部性能;
3. 冯诺依曼存储程序思想;哈佛结构指令数据分开存储;
4. 软硬件逻辑等价性:功能软硬件可以互换;
5. 分清系统结构、计算机组成、计算机实现三层概念。