跳到主要内容

计算机系统概述

1.1 计算机发展历程

1.1.1 计算机硬件的发展

计算机的发展经历了四代:

代次年代逻辑元件主存储器特点
第一代1946-1957电子管延迟线、磁鼓机器语言,体积大,成本高,速度低
第二代1958-1964晶体管磁芯存储器出现高级语言和编译程序,操作系统雏形
第三代1965-1971中小规模集成电路半导体存储器分时操作系统,高速缓存、虚拟存储器概念出现
第四代1972至今大规模/超大规模集成电路半导体存储器微处理器,并行、流水线等技术

重要规律

  • 摩尔定律:价格不变时,集成电路上可容纳的晶体管数目约每隔18个月增加一倍,性能提升一倍。
  • 半导体存储器发展:从单芯片1KB到现在的1GB以上。
  • 微处理器发展:从Intel 4004(4位)到Core i7(64位),机器字长不断增长。

1.1.2 计算机软件的发展

  • 机器语言 → 汇编语言 → 高级语言(FORTRAN、PASCAL、C++、Java等)。
  • 系统软件:操作系统(Windows、UNIX、Linux)、编译程序等。

1.2 计算机系统层次结构

1.2.1 计算机系统的组成

计算机系统由硬件系统软件系统共同构成。

  • 硬件:物理设备的总称。
  • 软件:程序、数据及相关文档。

软硬件逻辑等价性:某一功能既可用软件实现,又可用硬件实现,在逻辑功能上是等价的。硬件实现速度快,软件实现灵活。

1.2.2 计算机硬件

冯·诺依曼机基本思想

核心是“存储程序”概念。特点:

  1. 采用“存储程序”工作方式。
  2. 硬件由运算器、存储器、控制器、输入设备、输出设备五大部分组成。
  3. 指令和数据以同等地位存储在存储器中,形式上无区别,但计算机能区分。
  4. 指令和数据均用二进制代码表示。
  5. 指令由操作码和地址码组成。

计算机的功能部件

(1)输入设备:将程序和数据输入计算机(键盘、鼠标等)。

(2)输出设备:将处理结果输出(显示器、打印机等)。

(3)存储器

  • 主存储器(主存):CPU可直接访问。按地址存取。
  • 存储体:存放二进制信息。
  • MAR(存储器地址寄存器):存放访存地址。MAR的位数反映最大可寻址的存储单元个数(如10位MAR可寻址2^10=1024个单元)。
  • MDR(存储器数据寄存器):暂存从存储器中读或写的信息。MDR的位数通常等于存储字长。
  • 注意:MAR和MDR虽然属于存储器部分,但在现代计算机中通常存在于CPU中。

(4)运算器

  • 核心是ALU(算术逻辑单元)
  • 包含通用寄存器(如ACC累加器、MQ乘商寄存器、X操作数寄存器等)。
  • 包含PSW(程序状态寄存器),存放标志信息(溢出、进位、负、零等)。

(5)控制器

  • PC(程序计数器):存放下一条指令的地址,具有自动加1功能。
  • IR(指令寄存器):存放当前指令。
  • CU(控制单元):分析指令并发出微操作命令序列。

通常将运算器和控制器集成在同一芯片上,称为CPU(中央处理器)。CPU和主存构成主机,其他为外设

1.2.3 计算机软件

  • 系统软件:操作系统、数据库管理系统、语言处理程序等。
  • 应用软件:为解决具体应用问题而编制的程序。

三个级别的语言

语言类型特点执行方式
机器语言二进制代码,计算机唯一可直接执行的语言直接执行
汇编语言用助记符代替二进制,需汇编程序转换为机器语言汇编后执行
高级语言接近自然语言,需编译/解释编译或解释后执行

翻译程序

  • 汇编程序:汇编语言 → 机器语言。
  • 解释程序:逐条翻译并立即执行,不生成目标文件。
  • 编译程序:将高级语言一次全部翻译为汇编或机器语言程序。

软/硬件逻辑功能等价性:如浮点数运算既可用硬件浮点运算器实现,也可用软件子程序实现。

1.2.4 计算机系统的层次结构

层次名称实现方式
第5层高级语言层编译程序支持
第4层汇编语言层汇编程序支持
第3层操作系统层操作系统(混合层)
第2层传统机器语言层微程序解释指令系统
第1层微程序机器层硬件直接执行微指令
  • 裸机:没有配备软件的纯硬件系统。
  • 虚拟机:第3~5层,由软件实现的机器。
  • ISA(指令集体系结构):软件与硬件之间的接口,是软件可见部分。

1.2.5 计算机系统的工作原理

“存储程序”工作方式:程序执行前先送入主存,启动后自动逐条执行指令。

从源程序到可执行文件的四个阶段(以GCC为例):

  1. 预处理:处理#include#define等,生成.i文件。
  2. 编译:将.i文件编译为汇编语言文件.s
  3. 汇编:将.s文件转换为可重定位目标文件.o(二进制)。
  4. 链接:将多个.o文件和库函数链接为可执行文件。

指令执行过程举例(取数指令)

  • 取指令:PC → MAR → 主存 → MDR → IR
  • 分析指令:OP(IR) → CU
  • 执行指令:Ad(IR) → MAR → 主存 → MDR → ACC
  • 计算下条指令地址:(PC) + 1 → PC

注意:(PC)表示PC中的内容,PC→MAR表示数据通路,括号省略;但运算时不能省略,如(PC)+1→PC。


1.3 计算机的性能指标

1.3.1 主要性能指标

1. 机器字长

  • 计算机进行一次整数运算所能处理的二进制数据的位数。
  • 通常等于通用寄存器位数、ALU宽度。
  • 字长越长,数的表示范围越大,精度越高。

2. 数据通路带宽

  • 数据总线一次并行传送信息的位数。可能与CPU内部数据总线宽度不同。

3. 主存容量

  • 主存储器所能存储的最大信息量,通常以字节为单位。
  • MAR位数决定最大存储单元个数,MDR位数决定存储字长。
    例:MAR为16位,MDR为32位,则存储容量 = 2^16 × 32位 = 64K × 32位。

4. 运算速度

  • 吞吐量:单位时间内处理请求的数量。主要取决于主存存取周期。

  • 响应时间:从用户发送请求到获得响应的时间。包括CPU时间和等待时间。

  • 主频与CPU时钟周期

    • 时钟周期 = 1 / 主频,是CPU工作的最小时间单位。
    • 主频越高,执行指令越快。
  • CPI(Cycle Per Instruction):执行一条指令所需的平均时钟周期数。

  • CPU执行时间 = CPU时钟周期数 / 主频 = 指令条数 × CPI / 主频。

  • IPS(Instructions Per Second) = 主频 / 平均CPI。常用MIPS(百万条指令/秒)。

  • MIPS = 指令条数 / (执行时间 × 10^6) = 主频 / (CPI × 10^6)。
    注意:不同机器的指令集不同,MIPS不能直接比较性能。

  • FLOPS:每秒执行的浮点运算次数。
    MFLOPS(10^6)、GFLOPS(10^9)、TFLOPS(10^12)、PFLOPS(10^15)、EFLOPS(10^18)、ZFLOPS(10^21)。

5. 基准程序

  • 专门用来进行性能评价的一组程序,反映实际负载的性能。但可能被针对性优化。

1.3.2 几个专业术语

  • 系列机:具有相同体系结构、基本指令系统的多个型号计算机。
  • 兼容:软件或硬件的通用性,通常在同一系列不同型号间存在。
  • 固件:将程序固化在ROM中组成的部件,具有软件特性、硬件速度,如部分操作系统固化在ROM中。

1.4 常见问题和易混淆知识点

1. 翻译程序、汇编程序、编译程序、解释程序的区别

  • 翻译程序:将高级语言转换为机器语言的软件统称。
  • 汇编程序:汇编语言 → 机器语言。
  • 编译程序:高级语言 → 汇编/机器语言(一次翻译,生成目标文件)。
  • 解释程序:高级语言 → 逐条翻译并立即执行,不生成目标文件。

2. 透明性

  • 在计算机中,透明是指“看不到”,即某个事物或属性对某类用户不存在。例如,高级语言程序员看不到浮点数格式,但对机器语言程序员则不透明。IR、MAR、MDR对各类程序员都透明。

3. 字、字长、机器字长、指令字长、存储字长的区别

  • 字长(机器字长):CPU内部整数运算数据通路的宽度。
  • :用来表示被处理信息的单位,如x86中字=16位。
  • 指令字长:一条指令中包含的二进制代码位数。
  • 存储字长:一个存储单元中二进制代码的位数。
  • 三者可以相等也可以不等,但都是字节的整数倍。

4. 计算机体系结构与计算机组成的区别

  • 体系结构(指令集体系结构,ISA):机器语言或汇编语言程序员所看到的属性(指令集、数据类型、寻址方式等),抽象。
  • 计算机组成:如何实现体系结构,包含对程序员透明的硬件细节。例如,是否具备乘法指令是结构问题,如何实现乘法是组成问题。

5. 基准程序执行越快,机器性能越好吗?

  • 一般情况下是,但基准程序可能存在频度差异,且可能被针对性优化,因此不能完全代表所有应用。

1.5 复习提示

本章是组成原理的概述,常出选择题,也可能结合后续章节出综合题。重点掌握:

  • 冯·诺依曼机的特点(存储程序、五大部件等)。
  • 计算机硬件组成(CPU、主存、外设)及各部件的作用。
  • 计算机性能指标(主频、CPI、CPU执行时间、MIPS、FLOPS)及其计算。
  • 翻译程序(汇编、编译、解释)的区别。
  • 软硬件逻辑等价性、系列机、兼容、固件等概念。