> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0907world.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 第 1 章 计算机系统概述

本章介绍计算机系统的基本组成、层次结构、程序从源代码到可执行文件的生成流程，以及常见性能指标

<Tip>
  一个完整的计算机系统由**软件**和**硬件**组成
</Tip>

## 计算机系统的基本组成

<AccordionGroup>
  <Accordion title="冯.诺依曼结构的基本思想">
    * 采用“存储程序”的工作方式
    * 计算机由运算器、控制器、存储器、输入设备和输出设备 5 个基本部件组成
  </Accordion>

  <Accordion title="现代计算机结构">
    <img src="https://mintcdn.com/0907/yO7weug7l78KOEtX/images/computer-architecture/Chapter1_Computer_Structure.webp?fit=max&auto=format&n=yO7weug7l78KOEtX&q=85&s=40341f051d725b3fee981eae8c94416a" alt="现代计算机结构图" width="655" height="384" data-path="images/computer-architecture/Chapter1_Computer_Structure.webp" />

    * 中央处理器
      * 数据通路
        * 算术逻辑单元（ALU）
        * 通用寄存器组
      * 控制器
    * 存储器
    * 外部设备和设备控制器
    * 总线
  </Accordion>
</AccordionGroup>

## 计算机系统层次结构

<AccordionGroup>
  <Accordion title="层次结构包含">
    * 算法和程序
    * 编程语言
    * 语言处理系统
    * 操作系统
    * 指令集体系结构
    * 微体系结构
  </Accordion>

  <Accordion title="编程语言">
    * 高级语言
    * 低级语言
    * 机器级语言
      * 机器语言（计算机唯一能**直接**识别和执行的语言）
      * 汇编语言
  </Accordion>

  <Accordion title="翻译程序">
    * 汇编程序（汇编语言 -> 机器语言）
    * 解释程序（高级语言 -> 逐条 -> 机器语言）
    * 编译程序（高级语言 -> 整体 -> 机器语言）
  </Accordion>
</AccordionGroup>

## 程序开发与执行过程

<Accordion title="从源程序到可执行程序">
  <img src="https://mintcdn.com/0907/yO7weug7l78KOEtX/images/computer-architecture/Chapter1_Program_Flow.webp?fit=max&auto=format&n=yO7weug7l78KOEtX&q=85&s=a0de4e1dee83d22d6ba260504eb6c319" alt="源程序到可执行程序流程图" width="795" height="168" data-path="images/computer-architecture/Chapter1_Program_Flow.webp" />

  <Steps>
    <Step title="预处理阶段">
      预处理器 `cpp` 处理源文件中以 `#` 开头的预处理指令，生成预处理后的 C 文件 `hello.i`
    </Step>

    <Step title="编译阶段">
      编译器 `ccl` 将 `hello.i` 翻译为汇编程序 `hello.s`
    </Step>

    <Step title="汇编阶段">
      汇编器 `as` 将 `hello.s` 转化为机器语言指令，生成可重定位目标文件 `hello.o`
    </Step>

    <Step title="链接阶段">
      连接器 `ld` 将 `hello.o` 与标准 C 库中所需的函数（例如 `printf`）进行链接，解析外部符号引用，最终生成完整的可执行文件 `hello`，并保存至磁盘
    </Step>
  </Steps>
</Accordion>

## 计算机主要性能指标

<Info>
  复习这部分时，优先区分三组概念：吞吐率和响应时间、时钟周期和时钟频率、CPI 和 IPC
</Info>

<AccordionGroup>
  <Accordion title="基本指标">
    * 吞吐率：在单位时间内所完成的工作量
    * 响应时间：指从作业提交开始到作业完成所用的时间
    * 时钟周期：机器内部主时钟脉冲的宽度
    * 时钟频率：机器内部主时钟的频率，即时钟周期的倒数
    * CPI：执行一条指令所需的时钟周期数
    * MIPS：每秒执行多少百万条指令
  </Accordion>

  <Accordion title="计算能力相关指标">
    * MFLOPS：百万次浮点运算/秒
    * GFLOPS：十亿次浮点运算/秒
    * TFLOPS：万亿次浮点运算/秒
    * PFLOPS：千万亿次浮点运算/秒
    * EFLOPS：百亿亿次浮点运算/秒
    * ZFLOPS：十万亿亿次浮点运算/秒
    * `1s = 1000 ms = 1000000 μs = 1000000000 ns`
  </Accordion>

  <Accordion title="其他指标">
    * IPS：每秒执行多少条指令
    * IPC：每个时钟周期运行多少条指令
    * 平均指令周期：CPU 执行一条指令平均需要的时间
  </Accordion>
</AccordionGroup>
