计算机系统概述
以下具体框架来自华中科技大学 谭志虎 老师,本人根据框架补充自己的一些体会和见解。仅当作学习笔记使用
Target:
一、计算机系统概述
计算机系统层次结构
计算机系统的基本组成
- 硬件系统
- 看得见的物理实体,电子线路和电子元件等
- 软件系统
- 解决问题的思想、方法,包括程序和数据
- 分为
- 固件
- 固化的软件,firmware,本质是软件
- 软硬件功能逻辑等效
- 同一功能即可软件实现,也可以硬件实现
- 软件灵活性高,性能差,成本低
- 硬件效率高,成本高
- 功能划分要折中考虑
- 分层结构
- 软件层(虚拟计算机)
- 高级语言层
- 汇编语言层
- 操作系统层
- 硬件层
- 指令集架构层(机器语言层)
- 微代码层(可选)(微程序解释机器指令)
- 逻辑门层 (实体硬件)
- 图解
- ps:先编译后汇编
- 软件层(虚拟计算机)
- 硬件系统
计算机硬件的基本组成
冯·诺依曼结构
- 思想:存储程序&程序控制
- 存储程序:将解题步骤编制成程序,然后将程序和运行程序所需要的数据储存到存储器中(以二进制),方便执行。
- 程序控制则是计算机中控制器逐条去除存储器中的指令,并按照顺序执行,控制各部件完成相应操作,完成数据的加工处理。
- 组成:5大功能部件
- 存储器:存放程序和数据,按地址访问
- 运算器:执行算术运算和逻辑运算
- 控制器:根据指令的操作码、指令执行过程中的条件状态、时序系统等三方面的因素来产生指令执行过程中所需要的控制信号,控制指令的执行;
- 输入设备:将信息输入到计算机的外部设备,如键盘、鼠标等。
- 输出设备:输出计算机处理结果的外部设备。如显示器、打印机等
- 图解:早期计算机以运算器为中心,现代计算机以存储器为中心
- reason:早期主要是运算速度慢,现在瓶颈在于存储器
- 思想:存储程序&程序控制
冯·诺依曼计算机特点
组成:运算器、控制器、存储器、输入和输出设备
存储程序
- 指令和数据以二进制形式存放在存储器中
- 指令顺序存放,存储器按地址访问
程序控制
- 程序运行时,控制器逐条从主存中取出指令,控制全机相关部件执行相应操作,完成指令的功能直至完成程序的功能。
- 由指令控制计算机的运行
- 由控制器来控制数据的存取及程序的执行
- 程序顺序执行,遇到分支指令可能改变顺序
计算机软件系统分类
- 应用软件
- 解决应用问题的程序集合
- 如数据处理程序、情报检索程序等
- 系统软件
- 管理和调度计算机,方便用户使用计算机并提高使用效率的程序的集合
- 操作系统、数据库管理系统
- 分布式软件系统、网络软件系统、标准库程序
- 语言处理程序
- 编译器:将高级语言转换成汇编语言
- 汇编器:将汇编语言转换成机器指令
- 解释器:将高级语言直接翻译成机器指令 如JAVA
- 应用软件
计算机系统的工作过程
- 工作过程
- CPU不断从主存中逐条取出指令,控制器对指令进行译码分析,计算下条指令地址,并生成完成指令所需各种操作信号序列,控制功能部件依序形成对应数据通路,从而实现指令功能,再取下条指令,执行直至程序中全部指令执行结束
- CPU如何执行程序
- 将可执行程序和数据存放在主存中(存储程序)
- 可执行程序为机器语言编写的代码
- CPU上电后即开始取指令、执行指令的死循环(程序控制)
- 上电后从固定位置开始取指令
- 第一条指令是固化的BIOS程序
- BIOS负责硬件自检,最后引导OS
- OS负责加载可执行目标程序
- 单条指令执行过程
- 取指令
- 指令译码(分析指令功能,计算下条指令地址)
- 指令执行
- 程序执行的过程
- 循环取指令执行机器指令的过程
- 将可执行程序和数据存放在主存中(存储程序)
- 高级语言程序→可执行目标程序
- 编译型高级语言转换流程
- 预处理
- 预处理器对源程序中以#开头的命令进行处理
- 如#include命令后面的.h文件内容插入程序文件
- 输出是一个以.i为扩展名的源文件hello.i,还是C程序
- 编译
- 编译器对预处理后的源程序进行编译
- 生成一个汇编语言程序hello.s,文本文件
- 汇编
- 汇编器将hello.s 翻译成机器语言指令
- 输出为可重定位目标文件的hello.o,二进制文件
- 链接
- 链接器将多个可重定位目标文件和标准库函数合并
- 输出为一个可执行目标程序hello,二进制文件
- 解释性高级语言边解释,边执行,不生成目标代码
- 编译型高级语言转换流程
- 工作过程
计算机系统性能指标
- 静态性能指标
- 机器字长
- CPU一次处理的数据位数
- 与寄存器、运算器、数据总线的位宽相等
- 决定数据表示范围和精度
- 主存容量
- 主存储器所能存储信息的最大容量
- 时间相关性能指标
- 吞吐量
- 系统在单位时间内处理请求的数量
- 响应时间
- 用户向计算机发送一个请求,到系统对该请求做出相应并获得结果所用的时间
- 响应时间越短,吞吐率越大
- 程序执行时间=CPU时间+等待时间(磁盘、存储器访问、I/O操作、OS开销)
- CPU时钟周期
- CPU仅完成一个最基本的动作。是时钟频率的倒数,是处理操作最基本的时间单位
- 主频
- 时钟周期的倒数,同等条件下,频率越高,性能越好
- 频率不可能无限提升,散热问题,串扰问题等
- CPI
- 执行每条指令所需的平均时钟周期数;clock cycle per instruction
- CPI= {\displaystyle \sum_{i=1}^{n}{(CPI_i× P_i)} }= {\displaystyle \sum_{i=1}^{n}{(CPI_i× \frac{IC_i}{IC})} } CPI=i=1∑n(CPI**i×P**i)=i=1∑n(CPI**i×ICICi)
- IPC
- 每个时钟执行的指令条数
- IPC=1/CPIIPC=1/CPI
- CPU执行时间
- 程序执行期间真正消耗CPU的时间
- *T_{cpu}= CPI× IC× T *Tcpu*=*CPI*×*IC*×*T**
- 程序执行期间真正消耗CPU的时间
- MIPS
- 每秒执行多少百万条指令数量 Million Instructions Per Second
- *MIPS= f/(CPI× 10^6 ) *MIPS*=*f*/(*CP**I*×106)*
- 全性能公式
- MIPS=IPC× f MIP**S=IPC×f
- 时钟频率 f 的单位为 MHz
- MFLOPS
- 每秒执行多少百万次浮点操作
- Million Floating-Point Operations Per Second
- 用于衡量科学计算性能
- 更大单位:TFLOPS、PFLOPS、EFLOPS、ZFLOPS
- 每个单位相差1000倍
- 磁存储,网络数传率也使用10进制为单位,计算时需注意
- 1TB硬盘=10^91T**B硬盘=109Byte
- 100M宽带=100×10^6100M宽带=100×106Bit/s
- 单一指标都不能准确评价性能,基准测试程序更靠谱
- 考研真题
- 真题1
- 真题2
- 真题1
计组学习建议
构造观
- 理解并掌握运算器,控制器等核心部件的结构和工作原理
- 实现简单的设计
系统观
- 就是要研究硬件系统与软件系统的协同与互动。
- 从原理上说,可以对任何硬件都从程序员的角度来审视。
- 另一方面,从硬件工程师的角度来审视程序设计的优化问题,即探究如何利用硬件的特性提升程序运行的性能和效率
工程观
- 培养软硬件协同视角下的计算机系统开发和实现能力
- 考虑工程的制约因素
- 能有选择恰当技术和工具进行工程优化的意识
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jjyaoao's Home!
评论
LivereValine