计算机系统概述
1.冯诺依曼架构
冯诺依曼架构由五部分构成
- 在现代的计算机架构与冯诺依曼架构基本一致,例如 CPU 由控制设备和逻辑运算设备构成,内存和磁盘构成存储设备,输入设备有鼠标、键盘等,输出设备有显示屏等
2.计算机基本硬件组成
- 计算机基本组成的硬件有 中央处理器(CPU)、内存(主存)、磁盘/硬盘
3.计算机性能指标
1.性能
- 响应时间:指计算机完成某个任务所需的时间
- 吞吐率(带宽):单位时间内完成任务的数量
对于某个计算机其性能表示为: 性能 = 1 / 执行时间, 即响应时间越短性能越好
2.CPU性能
要描述CPU性能先要知道时钟频率,也叫主频,其是时钟周期的倒数,是指每秒多少个时钟周期
时钟周期:就是一个上升沿到下一个上升沿的时间,对于时钟周期和时钟频率的单位转换关系如图
CPU性能除了与时钟频率有关还与CPI (Cycle Pre Instruction)有关,其意思就是平均执行每条指令需要的时钟周期
- CPU性能的表示公式:CPU的时间 = 指令数 * CPI * 时钟周期
- 也等于 CPU的时间 = 指令数 * CPI / 时钟频率
3.MIPS与其他指标
-
MIPS(Million Instructions Per Second),没秒执行百万条指令数
-
其描述指令执行的效率,越大效率越高,与执行时间成反比
其计算公式为 MIPS = 指令数 / (执行时间 * 1e6) , 同时执行时间为 指令数 * CPI / 时钟频率,
化简为 MIPS = 时钟频率 / (CPI * 1e6)
同样类似与MIPS的单位量还有下图这些,本质上与MIPS一直只是每个单位之间都扩大1e3
4.高级程序到机器程序
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
以这个程序为例子,进行从高级程序到机器程序的转化,步骤如下
当我们写下上面的hello.c 的程序后,在Linux命令行中输入 gcc -o hello hello.c , 就可以得到hello的可执行文件,下面我们将其分步进行
- 当我们输入 gcc -E -o hello.i hello.c 时,预处理器回对.c文件进行预处理,然后生成hello.i文件
- 当我们输入gcc -S -o hello.s hello.i 时,编译器回对hello.i 文件进行编译,然后生成hello.s文件
- 当我们输入 as -o hello.o hello.s时,汇编器回对hello.s 进行汇编,然后生成可重定位文件 hello.o
- 最后,链接器将hello.o 和其他需要文件进行链接然后生成可执行文件 hello
对上面文件进行解释:
- .i 文件其实就是将头文件、define的进行替换之后的文件
- .s文件就是将.i 文件 "翻译"成汇编代码之后的文件
- .o文件就是将.s文件 "翻译"成机器代码之后的文件