1.计算机概述

发布时间 2023-04-13 13:20:15作者: 一七_2

计算机系统概述

1.冯诺依曼架构

QQ截图20230311165244

冯诺依曼架构由五部分构成

  • 在现代的计算机架构与冯诺依曼架构基本一致,例如 CPU 由控制设备和逻辑运算设备构成,内存和磁盘构成存储设备,输入设备有鼠标、键盘等,输出设备有显示屏等

2.计算机基本硬件组成

  • 计算机基本组成的硬件有 中央处理器(CPU)、内存(主存)、磁盘/硬盘

QQ截图20230311165309

3.计算机性能指标

1.性能

  • 响应时间:指计算机完成某个任务所需的时间
  • 吞吐率(带宽):单位时间内完成任务的数量

对于某个计算机其性能表示为: 性能 = 1 / 执行时间, 即响应时间越短性能越好

2.CPU性能

要描述CPU性能先要知道时钟频率,也叫主频,其是时钟周期的倒数,是指每秒多少个时钟周期

QQ截图20221203210841

时钟周期:就是一个上升沿到下一个上升沿的时间,对于时钟周期和时钟频率的单位转换关系如图

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

QQ截图20221203212327

4.高级程序到机器程序

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

以这个程序为例子,进行从高级程序到机器程序的转化,步骤如下

QQ截图20221203212652

当我们写下上面的hello.c 的程序后,在Linux命令行中输入 gcc -o hello hello.c , 就可以得到hello的可执行文件,下面我们将其分步进行

  1. 当我们输入 gcc -E -o hello.i hello.c 时,预处理器回对.c文件进行预处理,然后生成hello.i文件
  2. 当我们输入gcc -S -o hello.s hello.i 时,编译器回对hello.i 文件进行编译,然后生成hello.s文件
  3. 当我们输入 as -o hello.o hello.s时,汇编器回对hello.s 进行汇编,然后生成可重定位文件 hello.o
  4. 最后,链接器将hello.o 和其他需要文件进行链接然后生成可执行文件 hello

对上面文件进行解释:

  • .i 文件其实就是将头文件、define的进行替换之后的文件
  • .s文件就是将.i 文件 "翻译"成汇编代码之后的文件
  • .o文件就是将.s文件 "翻译"成机器代码之后的文件