# 计算机系统概述
## 计算机系统层次结构
- 计算机系统的基本组成
- 计算机硬件的基本结构
- 计算机软件和硬件的关系
- 计算机系统的工作原理
## 计算机性能指标
概述
1 - 计算机系统层次结构
计算机系统的基本组成
硬件系统和软件系统共同构成了一个完整的计算机系统。硬件指的是有形的物理设备,是计算机系统中实际物理装置的总称。软件指的是在硬件上运行的程序和相关的数据及文档。
硬件和软件关系:硬件是计算机的物理部分,它提供了运行软件所需的基础设施,而软件则是指令集,指导硬件如何工作以执行特定的任务。
计算机硬件
冯·诺依曼基本思想
冯·诺依曼提出的 “存储程序” 的思想奠定了当代计算机的基本结构,以此概念为基础的各类计算机通称为 冯·诺依曼机,其特点如下:
- 采用 “存储程序” 的工作方式。
- 计算机硬件系统由 运算器、存储器、控制器、输入设备和输出设备5大部件组成。
- 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们。
- 指令和数据均用二进制代码表示,指令包含操作码和地址码,操作码指出操作的类型,地址码指出操作数的地址。
计算机的功能部件
- 运算器 (Arithmetic Logic Unit, ALU)
- 功能:负责执行所有的算术运算(如加、减、乘、除)和逻辑运算(如AND、OR、NOT、比较等)。
- 组件:包括运算部件(执行具体的数学和逻辑操作)和临时存储用的寄存器。
- 存储器 (Memory)
- 功能:存储数据和指令。主存储器(如RAM)临时存储正在运行的程序和数据,而辅助存储器(如硬盘、SSD)用于长期存储。
- 种类:包括随机存取存储器(RAM)、只读存储器(ROM)、硬盘、SSD等。
- 控制器 (Control Unit)
- 功能:管理和协调计算机的各个部件,确保指令按正确的顺序执行,并控制数据流。
- 组件:包括指令寄存器、程序计数器和一个解码器,它们共同参与指令的获取、解码和执行。
- 输入设备 (Input Devices)
- 功能:允许用户或其他系统将数据输入计算机。
- 重要性:它们构成了用户与计算机系统之间的主要交互界面。
- 输出设备 (Output Devices)
- 功能:显示或输出计算机处理的结果。
- 例子:显示器、打印机、扬声器、投影仪等。
计算机软件
系统软件和应用软件
- 系统软件 (System Software)
- 定义:系统软件是直接运行在硬件上的软件,为其他软件提供一个运行和执行的平台。
- 功能:
- 管理和控制计算机硬件,使其能够与应用软件进行交互。
- 提供应用软件开发的基础服务和接口。
- 应用软件(Application Software)
- 定义:应用软件是构建在系统软件之上,为用户提供特定功能或执行特定任务的软件。
- 功能:
- 解决用户的具体问题或满足特定需求。
- 提供与用户的直接交互界面。
三个级别的语言
- 机器语言 (Machine Language):
- 定义:这是计算机硬件直接理解和执行的语言,它是用二进制代码表示的(通常是0和1)。
- 特点:
- 与特定计算机架构紧密相关。
- 非常低级:每条机器代码对应硬件的一个操作。
- 对于人类来说,阅读和编写是困难的。
- 汇编语言 (Assembly Language):
- 定义:这是一种低级编程语言,它使用符号和助记符(而非二进制代码)来代表机器语言的指令。
- 特点:
- 与特定计算机架构紧密相关。
- 比机器语言更容易理解和编写。
- 需要一个汇编器来将汇编代码转换为机器代码。
- 高级语言 (High-Level Language):
- 定义:这是为了更方便地编写和理解计算机程序而设计的语言。它们与特定的计算机架构相对独立。
- 特点:
- 抽象度高,语法通常更接近自然语言或数学符号。
- 可以在不同的硬件平台上运行,只需适当地编译或解释。
- 需要一个编译器或解释器来将高级语言代码转换为机器代码(或执行)。
计算机系统的工作原理
从源程序到可执行程序
- 预处理(Preprocessing):预处理器会执行诸如宏替换、文件包含、条件编译等任务,仅限于某些语言,比如
C
和C++
。 - 编译(Compilation):编译器将源代码或预处理后的源代码转换为中间代码或目标代码,标代码通常是特定平台的汇编语言代码或机器代码。
- 汇编(Assembly):汇编器将汇编语言代码转换为机器代码。
- 链接(Linking):链接器将一个或多个目标文件与所需的库文件链接在一起,生成一个可执行文件。这个步骤确保所有函数或方法的调用都能找到它们在内存中的正确位置。
- 加载和执行(Execution):当你运行可执行文件时,操作系统的加载器会将它加载到内存中。CPU开始按照程序的指令执行任务。
# 预处理
gcc -E hello.c -o hello.i
# 编译
gcc -c hello.c -o hello.o
# 汇编
gcc -S hello.c
# 链接
gcc hello.o -o hello
# 加载和执行
./hello
2 - 计算机性能指标
CPU指标
主频
主频是指计算机中时钟信号的频率,通常以赫兹(Hz)为单位表示。例如,一个3.0 GHz的CPU意味着它的时钟周期每秒钟震荡30亿次。
时钟周期
CPU时钟周期是CPU完成一个基本操作所需的时间,与主频是互为倒数的关系。例如,3.0 GHz的CPU的时钟周期是1/3.0亿 = 0.333纳秒。
指令执行指标
CPI
CPI 的全称是 Cycle Per Instruction,也称每指令周期,即一条指令所需要的平均时钟周期。
IPC
IPC 的全程是 Instruction Per Cycle,也称每周期指令,即每个时钟周期执行的平均指令数,是 CPI 的倒数。
IPS
IPS 的全程是 Instruction Per Second,也称每秒指令数,即每秒平均能够执行多少条指令。
MIPS
MIP 的全称是 Million Instructions Per Second,及每秒能够执行 多少个 百万的指令。
浮点运算指标
各种FLOPS
这些都是评估计算机性能的指标,尤其在浮点运算方面。它们分别代表每秒可以执行的浮点运算次数:
- MFLOPS: 百万次每秒
- GFLOPS: 十亿次每秒
- TFLOPS: 万亿次每秒
- PFLOPS: 千万亿次每秒
- EFLOPS: 百亿亿次每秒
- ZFLOPS: 万亿亿次每秒
计算机指标
字长
字长(Word Length)指的是计算机在内部一次操作中所能处理的二进制数字位数。例如,一个32位的CPU一次可以处理32位的数据。
数据通路带宽(Data Bus Width)
数据通路带宽是CPU和内存之间传输数据的宽度,通常以位为单位表示。比如,64位的数据总线意味着每个时钟周期内,可以传输64位的数据。
主存容量
主存储器能够存储信息的最大容量,通常用字节来衡量。
MAR的位数反应了可寻址范围的最大值(不一定是存储器的实际容量),与地址总线的位数一致。
这里主要看清题目中的 按字节寻址 和 按字寻址,内存空间 / 寻址单位 = 可寻址范围,通过可寻址范围计算MAR的位数。
比如主存地址空间大小为128KB = 2^17B,字长16位(2B),按字寻址,则MAR位数为16。
吞吐量
吞吐量(Throughput)表示在单位时间内,系统可以完成的任务数量。在计算机网络中,它可能表示数据的传输速率;在计算中,它可能表示每秒执行的操作数。