mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
11886 字
31 分钟
计算机系统概述

计算机组成原理的入门重点在于理清系统的组成与层次结构,并熟练掌握性能评价指标的计算


第1章:计算机系统概述#


1.1 计算机发展历程#

计算机的发展主要按核心器件划分为四代:

阶段核心器件软件与存储特征
第一代 (1946—1958)电子管使用机器语言,主要用于科学计算
第二代 (1958—1964)晶体管出现辅助存储器(如磁盘),开始使用汇编语言与高级语言
第三代 (1964—1971)中小规模集成电路操作系统出现,计算机类型呈现多样化和系列化
第四代 (1971 至今)超大规模集成电路微处理器问世,运算速度与存储容量大幅提升

微电子技术的发展基本遵循摩尔定律

集成电路芯片上所集成的晶体管数目,大约每 18 至 24 个月就会翻一番。


1.2 计算机系统的组成#

计算机系统是由硬件和软件协同工作的复杂系统。

计算机系统=硬件系统+软件系统\text{计算机系统} = \text{硬件系统} + \text{软件系统}

冯·诺依曼结构核心思想#

现代计算机大多基于冯·诺依曼结构,其核心设计思想可以概括为以下三点:

  1. 二进制表示:数据和指令均采用二进制代码表示。
  2. 存储程序:程序和数据提前存入主存储器中。
  3. 程序控制:CPU 根据存储的程序自动、顺序地执行指令。

硬件五大部件#

硬件系统是计算机的物理基础,通常由五大部件构成。

  • 存储器:存放程序和数据。
  • 运算器:负责对数据进行算术运算和逻辑运算。
  • 控制器:负责翻译指令并控制各部件协调工作。
  • 输入设备:将外部信息转换为计算机可识别的电信号。
  • 输出设备:将计算机的计算结果转换为用户可读的信息。

在结构关系上,各部件的组合形成了计算机的核心:

  • CPU:运算器和控制器共同组成 CPU。
  • 主机:CPU 和主存储器共同合称为主机。
  • 总线:计算机各部件通过总线互连,总线包括数据线、地址线和控制线。

重点:CPU 和主存储器合称为主机;辅存(如硬盘)属于外设,不属于主机的范畴。

软件的分类#

软件系统用于扩展硬件功能并解决具体问题,主要分为系统软件与应用软件。

  • 系统软件:用于管理、控制和维护计算机系统资源。例如:操作系统、编译器、汇编器、数据库管理系统。
  • 应用软件:用于解决特定领域的具体应用问题。例如:浏览器、办公软件、图像处理软件。

重点:操作系统是管理资源的系统软件,切勿将其误归为应用软件。

软硬件的等价性#

在计算机系统中,同一个功能既可以通过硬件电路实现,也可以通过软件程序实现。

  • 硬件实现:运行速度快,但开发成本高,缺乏灵活性。
  • 软件实现:灵活性高,开发成本低,但运行速度慢。

1.3 计算机系统的层次结构#

计算机系统通过多级抽象层次实现从高级语言到底层硬件的转换。从底向上通常划分为以下 6 个层次:

flowchart BT L1[第1层: 逻辑门层] --> L2[第2层: 微代码层] L2 --> L3[第3层: 指令集架构层] L3 --> L4[第4层: 操作系统层] L4 --> L5[第5层: 汇编语言层] L5 --> L6[第6层: 高级语言层]

在各层次的转换与协作中,关键要素如下:

  • 逻辑门与微代码:第 1 层与第 2 层是底层硬件逻辑系统,由硬件直接执行微指令。
  • 指令集架构层:该层是计算机软、硬件系统之间的界面和纽带。所有软件程序必须最终转换为该层的机器语言指令,才能被底层硬件执行。
  • 操作系统与翻译:操作系统管理软硬件资源;汇编器和编译器则将高级程序翻译为低层语言。

在各层关系中,低层是高层的基础,高层是低层功能的扩展


1.4 计算机性能指标与评价#

计算机的性能需要通过多个维度的指标来衡量,不能单一以主频论高低。

1.4.1 基本配置指标#

  • 字长:CPU 一次能够处理的二进制数据位数。字长越长,计算精度越高,数据表示范围越大。其单位是位,缩写为 b。

    单位换算与区分

    • 1B=8bit1\text{B} = 8\text{bit}(大写 B 表示字节,小写 b 表示位)。
    • 比如 32 位字长即为 32bit=4B32\text{bit} = 4\text{B};64 位字长即为 64bit=8B64\text{bit} = 8\text{B}
  • 主存容量:主存储器能容纳的信息总量。容量增加有利于减少访问慢速外存的次数。主存容量通常使用 2 的幂作为换算单位: 1KB=210B=1024B1\text{KB} = 2^{10}\text{B} = 1024\text{B} 1MB=220B1\text{MB} = 2^{20}\text{B} 1GB=230B1\text{GB} = 2^{30}\text{B}
字长与存储容量的区别
  • 字长描述的是 CPU 一次处理数据的宽度,单位为位。
  • 主存容量表示存储器能存入的二进制代码总量,单位为字节,且其容量通常以 2 的幂来换算,而主频等速度指标则通常以 10 的幂换算。这两者的换算进制极易混淆。

1.4.2 时间与速度指标#

  • 时钟周期:一个时钟脉冲的持续时间,是计算机中最基本、最小的时间单位。主频与时钟周期互为倒数。
  • 响应时间:从用户提交请求到系统完成响应所经历的时间,反映单次任务的快慢。
  • 吞吐率:系统在单位时间内完成的任务总量,反映整体处理能力。
  • MIPS:每秒执行的百万条指令数。
  • MFLOPS:每秒执行浮点运算的次数,常用于衡量科学计算性能。

1.4.3 CPU 性能公式应用#

在性能评估的相关计算中,以下核心公式是考试与实际评估的重点。

时钟周期与主频的关系#

主频 ff 表示 CPU 每秒产生的时钟周期数。时钟周期 TT 表示一个时钟脉冲的持续时间。主频与时钟周期互为倒数:

T=1fT = \frac{1}{f}

1. 主频单位换算(使用 10 的幂)#

主频以 10001000 递增换算:

1KHz=103Hz1\text{KHz} = 10^3\text{Hz}1MHz=106Hz1\text{MHz} = 10^6\text{Hz}1GHz=109Hz1\text{GHz} = 10^9\text{Hz}

2. 时间单位换算#

1s=103ms=106μs=109ns1\text{s} = 10^3\text{ms} = 10^6\mu\text{s} = 10^9\text{ns}

3. 频率与周期的对应速记表#

在实际计算中,频率与周期存在以下直接对应关系,掌握后可显著加快解题速度:

主频时钟周期
1Hz1\text{Hz}1s1\text{s}
1KHz1\text{KHz}1ms1\text{ms}
1MHz1\text{MHz}1μs1\mu\text{s}
1GHz1\text{GHz}1ns1\text{ns}

口诀速记:如 2GHz2\text{GHz} 对应 0.5ns0.5\text{ns}500MHz500\text{MHz} 对应 2ns2\text{ns}

应用例题:某 CPU 的主频为 4GHz4\text{GHz},求其时钟周期。

解析:根据 1GHz1ns1\text{GHz} \leftrightarrow 1\text{ns} 的对应关系,主频为 4GHz4\text{GHz},则时钟周期为:

T=14GHz=0.25nsT = \frac{1}{4\text{GHz}} = 0.25\text{ns}

展开计算过程为:

T=14×109Hz=0.25×109s=0.25nsT = \frac{1}{4 \times 10^9\text{Hz}} = 0.25 \times 10^{-9}\text{s} = 0.25\text{ns}

总时钟周期数的计算#

总时钟周期数指 CPU 执行某个程序所消耗的全部时钟周期数量。可以把时钟周期理解为 CPU 的工作节拍,程序运行过程中经历的所有“工作节拍”总数即为总时钟周期数。

计算公式如下:

总时钟周期数=指令条数×平均CPI\text{总时钟周期数} = \text{指令条数} \times \text{平均CPI}

若以 ICIC 表示指令条数,CPI\text{CPI} 表示平均每条指令所需的时钟周期数,公式可表示为:

Clock Cycles=IC×CPI\text{Clock Cycles} = IC \times \text{CPI}

应用例题:假设某程序包含 10001000 条指令,平均每条指令需要 44 个时钟周期,求 CPU 执行该程序所需的总时钟周期数。

解析:直接代入公式计算:

总时钟周期数=1000×4=4000\text{总时钟周期数} = 1000 \times 4 = 4000

执行该程序一共需要经历 4000 个时钟周期。

平均 CPI 的计算#

CPI 表示平均每条指令执行所需的时钟周期数。

CPI=总时钟周期数指令条数\text{CPI} = \frac{\text{总时钟周期数}}{\text{指令条数}}

若程序中包含多种类型的指令,每种指令的 CPI 和所占比例不同,则需要计算平均 CPI:

平均CPI=i=1n(CPIi×Pi)\text{平均}\text{CPI} = \sum_{i=1}^{n}(\text{CPI}_i \times P_i)

其中,CPIi\text{CPI}_i 为第 ii 类指令的 CPI,PiP_i 为该类指令在程序中的占比。

应用例题:某程序中包含三类指令,它们在程序中的占比及各自的 CPI 如下表所示。求该程序的平均 CPI。

指令类型占比CPI
算术逻辑指令60%2
访存指令30%4
分支指令10%3

解析

平均CPI=2×60%+4×30%+3×10%=1.2+1.2+0.3=2.7\text{平均}\text{CPI} = 2 \times 60\% + 4 \times 30\% + 3 \times 10\% = 1.2 + 1.2 + 0.3 = 2.7

CPU 执行时间的计算#

CPU 执行时间是衡量计算机实际速度最真实的指标。

TCPU=指令条数×CPI×时钟周期T_{\text{CPU}} = \text{指令条数} \times \text{CPI} \times \text{时钟周期}

由于时钟周期 TT 与主频 ff 互为倒数(T=1fT = \frac{1}{f}),代入得:

TCPU=IC×CPI×1f=IC×CPIfT_{\text{CPU}} = IC \times \text{CPI} \times \frac{1}{f} = \frac{IC \times \text{CPI}}{f}

应用例题:某程序包含 10610^6 条指令,运行在主频为 2GHz2\text{GHz} 的处理器上,该程序的平均 CPI 为 1.5。求该程序在该处理器上的 CPU 执行时间。

解析

TCPU=106×1.52×109Hz=0.75×103s=0.75msT_{\text{CPU}} = \frac{10^6 \times 1.5}{2 \times 10^9\text{Hz}} = 0.75 \times 10^{-3}\text{s} = 0.75\text{ms}

MIPS 的计算#

MIPS 表示每秒执行的百万条指令数。

MIPS=指令条数执行时间×106\text{MIPS} = \frac{\text{指令条数}}{\text{执行时间} \times 10^6}

由 CPU 执行时间公式 TCPU=IC×CPIfT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} 代入执行时间:

MIPS=ICIC×CPIf×106=IC×fIC×CPI×106=fCPI×106\text{MIPS} = \frac{IC}{\frac{IC \times \text{CPI}}{f} \times 10^6} = \frac{IC \times f}{IC \times \text{CPI} \times 10^6} = \frac{f}{\text{CPI} \times 10^6}

如果主频的单位是 MHz,公式可以简化为:

MIPS=主频(MHz)CPI\text{MIPS} = \frac{\text{主频}(\text{MHz})}{\text{CPI}}

应用例题:某 CPU 的主频为 800MHz800\text{MHz},执行某特定程序的平均 CPI 为 2.5。求该 CPU 的运行速度。

解析:由于主频单位已为 MHz,可直接套用简化公式:

MIPS=8002.5=320\text{MIPS} = \frac{800}{2.5} = 320

该 CPU 在执行该程序时的速度为 320MIPS320\text{MIPS}

GIPS 的计算#

GIPS 表示每秒执行的十亿条指令数(即 10910^9 条指令),常用于现代高频处理器的性能衡量。

GIPS=指令条数执行时间×109\text{GIPS} = \frac{\text{指令条数}}{\text{执行时间} \times 10^9}

由 CPU 执行时间公式 TCPU=IC×CPIfT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} 代入执行时间:

GIPS=ICIC×CPIf×109=IC×fIC×CPI×109=fCPI×109\text{GIPS} = \frac{IC}{\frac{IC \times \text{CPI}}{f} \times 10^9} = \frac{IC \times f}{IC \times \text{CPI} \times 10^9} = \frac{f}{\text{CPI} \times 10^9}

如果主频的单位是 GHz,公式可以简化为:

GIPS=主频(GHz)CPI\text{GIPS} = \frac{\text{主频}(\text{GHz})}{\text{CPI}}

应用例题:某 CPU 主频为 1.5GHz1.5\text{GHz},执行某特定程序的平均 CPI 为 1.2。求该 CPU 的指令执行速度(用 GIPS 表示)。

解析:由于主频单位已为 GHz,可直接套用简化公式:

GIPS=1.51.2=1.25\text{GIPS} = \frac{1.5}{1.2} = 1.25

该 CPU 在执行该程序时的速度为 1.25GIPS1.25\text{GIPS}

MFLOPS 的计算#

MFLOPS 表示每秒执行浮点运算的次数(以百万次为单位),常用于衡量科学计算性能。

MFLOPS=浮点操作次数执行时间×106\text{MFLOPS} = \frac{\text{浮点操作次数}}{\text{执行时间} \times 10^6}

应用例题:某台计算机执行一个浮点程序,该程序共执行了 3×1073 \times 10^7 次浮点操作,总运行时间为 0.15 秒。求该计算机的浮点运算速度。

解析

MFLOPS=3×1070.15s×106=30.15×107106=20×10=200\text{MFLOPS} = \frac{3 \times 10^7}{0.15\text{s} \times 10^6} = \frac{3}{0.15} \times \frac{10^7}{10^6} = 20 \times 10 = 200

该计算机在执行该程序时的速度为 200MFLOPS200\text{MFLOPS}

综合性能比较#

比较两台计算机性能时,不能只看主频,还要结合 CPI 和执行时间。

应用例题:两台机器执行同一个程序,指令条数 ICIC 相同:

  • 机器 A:平均 CPIA=3\text{CPI}_A = 3,时钟周期 TcA=2nsT_{cA} = 2\text{ns}
  • 机器 B:平均 CPIB=2\text{CPI}_B = 2,时钟周期 TcB=4nsT_{cB} = 4\text{ns}

请判定哪台机器的性能更好。

解析:计算两台机器的 CPU 执行时间:

TA=IC×3×2ns=6ICnsT_A = IC \times 3 \times 2\text{ns} = 6IC\text{ns} TB=IC×2×4ns=8ICnsT_B = IC \times 2 \times 4\text{ns} = 8IC\text{ns}

由于 TA<TBT_A < T_B,因此机器 A 的实际执行速度更快,性能更好。尽管机器 B 的 CPI 更低,但由于其时钟周期较长,导致最终耗时更多。

基准测试程序#

因为单一的峰值性能指标往往不能反映实际工作负载下的真实情况,因此在实际应用中,通常使用基准测试程序(如 Dhrystone、SPEC 等评测集)来综合评价计算机的整体性能。


1.4.4 性能测试、典型题型与易错点#

为了帮助更好地应对考试与实际应用,本节整理了第一章的期末考查高频题、典型题型、名词解释对比及常见易错点。

历年期末考查高频选择与填空点#

核心高频必背考点
  • 冯·诺依曼机工作方式:基本工作方式是控制流驱动方式,其基本特点是按地址访问并顺序执行指令
  • 冯·诺依曼采用二进制的原因:数据采用二进制编码表示的主要原因为:制造两个稳态的物理器件较容易二进制的运算规则简单便于用逻辑门电路实现算术运算
  • CPI 与时钟频率无关:CPI 仅与系统结构、指令集和计算机组织有关,与时钟频率无关
常考基础指标与概念
  • 存储速度位次:CPU 存取速度的排序为:寄存器 > Cache > 内存
  • 32 位微机的含义:32 位微机中的”32 位”是指该计算机所用的 CPU 能同时处理 32 位的二进制数(即机器字长为 32 位)。
  • MAR 与 MDR 位数确定规则MAR 的位数等于地址码长度(决定了最大寻址空间);MDR 的位数等于存储字长(决定了一次存取的数据位数)。例如:1MB 容量的存储器按字节编址时主存包含 2202^{20} 个字节单元,故地址寄存器 MAR 为 20 位;若存储字长为 32 位,则数据寄存器 MDR 为 32 位。
  • 机器字长、指令字长与存储字长:三者在数值上可能不等。存储字长是存放在一个存储单元中的二进制代码位数。
  • 层次结构的依存关系:计算机系统 6 层结构之间的关系为:上层实现对下层的功能扩展,而下层是实现上层的基础
  • 编译程序与解释程序的性能:编译程序和解释程序都能将高级语言翻译为机器语言,但编译程序编译时间较长、运行速度较快;解释程序翻译一条立即执行一条,方法简单但运行速度较慢

概念与简答精选#

CPU 区分指令和数据的两种方法

在冯·诺依曼结构计算机中,指令和数据都以二进制形式存放在存储器中,CPU 主要通过以下两种方法区分它们:

  1. 通过不同时间段区分:在取指阶段从主存中取出的是指令;在执行阶段从主存中取出的是操作数。
  2. 通过地址来源区分:由程序计数器 PC 提供存储单元地址取出的是指令;由指令地址码部分提供存储单元地址取出的是操作数。
控制器的三项具体功能
  1. 指令控制:从主存储器中取出指令,并指出下一条指令在主存中的位置。
  2. 操作控制:对指令进行译码,并产生相应的操作控制信号,以便启动规定的动作。
  3. 数据加工与传输控制:指挥并控制 CPU、主存和输入输出设备之间数据流动的方向。

注:取指操作是控制器固有的功能,不需要在操作码的控制下完成。取指令是控制器的基本动作,不受当前指令操作码支配。

CPU 的四项基本功能
  1. 程序控制:控制指令的执行顺序。
  2. 操作控制:控制指令进行具体的物理操作。
  3. 时间控制:对各种操作实施严格的定时控制。
  4. 数据加工:对数据进行算术运算和逻辑运算。
主机的精确定义

主机是指计算机除去输入输出设备以外的主要机体部分。主机中包含了除外围设备外所有的电路部件(即由 CPU 和主存储器组成),是一个能够独立工作的系统。

软件开发与执行工具对比#

在软件执行与转换过程中,以下几个概念极易混淆:

  • 汇编器:用于将汇编语言源程序翻译成机器语言目标程序。
  • 编译器:用于将高级语言源程序翻译成低级语言程序(通常为汇编程序或机器语言目标代码)。
  • 解释器:边翻译边执行源程序或中间代码,不生成独立的目标程序。
  • 链接器:用于将多个目标文件和库文件连接起来,生成最终的可执行文件。
工具翻译方式是否生成目标程序典型代表
编译器整体翻译后执行C / C++ 编译器
解释器逐条翻译并执行Python 解释器

硬件、软件与固件#

  • 硬件:计算机中实际存在的物理实体(如 CPU、存储器、外部设备)。
  • 软件:程序、数据和相关文档的集合。
  • 固件:固化在硬件(如只读存储器)中的程序。固件兼具软件和硬件的特点,如计算机主板上的 BIOS。

IPC 与 CPI 的关系#

  • CPI:平均每条指令执行所需的时钟周期数。
  • IPC:每个时钟周期能够执行的指令条数。 二者在理想情况下互为倒数:
IPC=1CPI\text{IPC} = \frac{1}{\text{CPI}}

ALU 与寄存器位数#

在硬件技术指标中,ALU(算术逻辑单元)的宽度通用寄存器的位数通常与机器字长保持一致,而指令寄存器浮点寄存器的位数则不一定等于机器字长。


术语标准概念集#

  • 机器字长:计算机进行一次整数运算所能处理的二进制数据的位数,即 CPU 一次能处理的数据的位数。
  • 存储字长:存储器一次存取操作的最大位数。
  • 存储字:存放在一个存储单元中的二进制代码组合。
  • 指令字长:机器指令中二进制代码的总位数,取决于操作码长度、操作数地址长度和个数。
  • 存储容量:通常用 MAR 的编址数与存储字位数的乘积来表示。
  • 指令周期、机器周期、时钟周期的层级关系
    • 指令周期:CPU 取出一条指令并执行该指令的时间。
    • 机器周期:又称 CPU 周期,通常由若干个时钟周期构成,是指令执行中的一个阶段时间(如取指周期、执行周期)。
    • 时钟周期:计算机操作的最小时间单位,是主频的倒数。
    • 层级关系:一个指令周期通常包含若干个机器周期,一个机器周期又包含若干个时钟周期。

性能计算典型真题#

题型 1:阿姆达尔定律与系统加速比#

期末真题:基准程序 A 在某计算机上的运行时间为 100 秒,其中 90 秒为 CPU 时间,其余为输入输出时间。若 CPU 速度提高 50%,输入输出速度保持不变,求运行该程序所耗费的时间、整体速度提升比例,以及这一计算结果给我们的性能优化启发。

解析

  1. 原系统总时间:Told=100sT_{\text{old}} = 100\text{s},其中 CPU 时间为 90s90\text{s},输入输出时间为 10s10\text{s}
  2. CPU 速度提高 50%,意味着 CPU 执行相同指令所花的时间缩短为原来的 11+50%=11.5\frac{1}{1 + 50\%} = \frac{1}{1.5}
  3. 优化后的 CPU 时间: TCPU=90s1.5=60sT'_{\text{CPU}} = \frac{90\text{s}}{1.5} = 60\text{s}
  4. 优化后的总时间: Tnew=TCPU+TIO=60s+10s=70sT_{\text{new}} = T'_{\text{CPU}} + T_{\text{IO}} = 60\text{s} + 10\text{s} = 70\text{s}
  5. 整体加速比: S=ToldTnew=100701.43S = \frac{T_{\text{old}}}{T_{\text{new}}} = \frac{100}{70} \approx 1.43
  6. 整体性能提升比例为:1.431=43%1.43 - 1 = 43\%
  7. 性能提升启发:在进行计算机性能优化时,不能单单考虑 CPU 速度的提升。根据阿姆达尔定律,系统整体的速度提升受限于那些无法被优化或优化程度较低的部分(如输入输出速度)。因此,必须均衡提升各部件的性能,以避免出现系统瓶颈。

题型 2:编译优化与指令条数变化#

真题:程序 P 在某计算机上的执行时间为 20 秒。编译优化后指令数减少到原来的 70%,而平均 CPI 增加到原来的 1.2 倍,求优化后的执行时间及加速比。

解析

  1. 设优化前的指令数为 ICIC,平均 CPI 为 CPI\text{CPI},主频为 ff。原执行时间为: Told=IC×CPIf=20sT_{\text{old}} = \frac{IC \times \text{CPI}}{f} = 20\text{s}
  2. 优化后的指令数 IC=0.7ICIC' = 0.7IC,平均 CPI CPI=1.2CPICPI' = 1.2\text{CPI},主频 ff 不变。
  3. 优化后的执行时间: Tnew=0.7IC×1.2CPIf=0.84×IC×CPIf=0.84×20s=16.8sT_{\text{new}} = \frac{0.7IC \times 1.2\text{CPI}}{f} = 0.84 \times \frac{IC \times \text{CPI}}{f} = 0.84 \times 20\text{s} = 16.8\text{s}
  4. 加速比: S=ToldTnew=2016.81.19S = \frac{T_{\text{old}}}{T_{\text{new}}} = \frac{20}{16.8} \approx 1.19

题型 3:同一程序在不同机器上的性能对比#

期末真题:计算机 M1 和 M2 采用相同的指令集架构,主频分别为 1.5GHz1.5\text{GHz}1.2GHz1.2\text{GHz},平均 CPI 分别为 2 和 1。求同一程序在 M1 和 M2 上运行时间的比值,并说明哪台机器更快。

解析

  1. 由于采用相同指令集且运行同一程序,因此指令条数 ICIC 相同。
  2. M1 的执行时间: T1=IC×21.5×109HzT_1 = \frac{IC \times 2}{1.5 \times 10^9\text{Hz}}
  3. M2 的执行时间: T2=IC×11.2×109HzT_2 = \frac{IC \times 1}{1.2 \times 10^9\text{Hz}}
  4. 两者运行时间之比: T1T2=IC×2/(1.5×109)IC×1/(1.2×109)=2×1.21.5=1.6\frac{T_1}{T_2} = \frac{IC \times 2 / (1.5 \times 10^9)}{IC \times 1 / (1.2 \times 10^9)} = \frac{2 \times 1.2}{1.5} = 1.6
  5. 结果表明,M1 的运行时间是 M2 的 1.6 倍,因此 M2 运行该程序的速度更快,是 M1 的 1.6 倍。

题型 4:主频、指令数与运行速度的综合计算#

期末真题:某计算机主频为 1.5GHz1.5\text{GHz},执行某特定程序的指令条数为 5×1055 \times 10^5,运行该程序时的平均 CPI 为 1.2。求执行该程序的 CPU 时间和指令执行速度(用 GIPS 表示)。若主频降为 1GHz1\text{GHz},其他条件不变,求对应的 CPU 时间和指令执行速度。

解析

  1. 主频为 1.5GHz 时
    • CPU 时间: TCPU=IC×CPIf=5×105×1.21.5×109Hz=6×1051.5×109Hz=4×104s=0.4ms T_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} = \frac{5 \times 10^5 \times 1.2}{1.5 \times 10^9\text{Hz}} = \frac{6 \times 10^5}{1.5 \times 10^9\text{Hz}} = 4 \times 10^{-4}\text{s} = 0.4\text{ms}
    • 指令执行速度: GIPS=fCPI×109=1.5×1091.2×109=1.25GIPS\text{GIPS} = \frac{f}{\text{CPI} \times 10^9} = \frac{1.5 \times 10^9}{1.2 \times 10^9} = 1.25\text{GIPS}
  2. 主频为 1GHz 时
    • CPU 时间: TCPU=5×105×1.21×109Hz=6×1051×109Hz=6×104s=0.6ms T_{\text{CPU}} = \frac{5 \times 10^5 \times 1.2}{1 \times 10^9\text{Hz}} = \frac{6 \times 10^5}{1 \times 10^9\text{Hz}} = 6 \times 10^{-4}\text{s} = 0.6\text{ms}
    • 指令执行速度: GIPS=1×1091.2×1090.833GIPS\text{GIPS} = \frac{1 \times 10^9}{1.2 \times 10^9} \approx 0.833\text{GIPS}

题型 5:混合指令的平均 CPI 与 MIPS 计算#

期末真题:已知某计算机主频为 800MHz800\text{MHz},其指令分为四类,它们在基准程序中所占的比例及各自的 CPI 如下表所示。求该计算机的平均 CPI 以及运行速度(用 MIPS 表示)。若主频提升至 1.2GHz1.2\text{GHz},且四类指令所占比例及各自 CPI 均保持不变,求提升主频后的 MIPS。

指令类型所占比例CPI
A40%2
B30%2
C20%3
D10%5

解析

  1. 计算平均 CPI: 平均CPI=2×40%+2×30%+3×20%+5×10%=0.8+0.6+0.6+0.5=2.5\text{平均}\text{CPI} = 2 \times 40\% + 2 \times 30\% + 3 \times 20\% + 5 \times 10\% = 0.8 + 0.6 + 0.6 + 0.5 = 2.5
  2. 主频为 800MHz 时
    • 由于主频为 800MHz800\text{MHz},可套用简化公式计算 MIPS: MIPS=8002.5=320\text{MIPS} = \frac{800}{2.5} = 320
  3. 主频提升至 1.2GHz 时
    • 主频 1.2GHz=1200MHz1.2\text{GHz} = 1200\text{MHz},计算提升后的 MIPS: MIPS=12002.5=480\text{MIPS} = \frac{1200}{2.5} = 480

常见考试易错点警示#

易错点 1:主频高不等于执行时间短

由公式 TCPU=IC×CPIfT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} 可知,主频只是影响执行时间的要素之一。若一台高主频计算机的 CPI 极大,或编译器生成的指令条数极多,其执行速度反而可能低于低主频计算机。执行时间是评估性能的最终标准

易错点 2:缩短程序执行时间的措施

要缩短程序执行时间,可以采取以下三项有效措施:

  • 提高时钟频率:提高 CPU 主频。
  • 优化数据通路结构:降低平均 CPI。
  • 对程序进行编译优化:减少指令条数 ICIC 并降低平均 CPI。
易错点 3:MIPS 指标的局限性

MIPS 仅代表每秒执行的百万条指令数。然而,对于不同的指令集架构,单条指令的复杂度和功能差异巨大。用简单指令集运行程序可能需要极多的指令数(MIPS 虽高,但耗时多),而复杂指令集可能只需少量指令。因此,MIPS 不能跨架构用于绝对性能的横向对比。

易错点 4:优化后平均 CPI 上升,程序仍可能变快

在编译优化中,可能通过消除大量执行周期极短的简单指令(如无用的数据搬运),导致程序中高周期指令的比例上升,从而使平均 CPI 变大。但由于指令条数 ICIC 大幅减少,总的执行时间 TCPUT_{\text{CPU}} 反而缩短。

易错点 5:CPU 时间不等于总运行时间

程序在系统中的总运行时间除了包括 CPU 执行指令的时间外,还包含了等待输入输出、页中断调页、系统调度等非 CPU 占用时间。在性能改进中,若只优化了 CPU 性能,输入输出等时间是无法被缩短的。


1.5 课程学习建议与本章总结#

本章的重点知识与计算公式整理如下:

核心结构体系#

  • 冯·诺依曼结构的核心是二进制存储程序
  • 主机由 CPU 和主存储器组成,各部件通过包含数据线、地址线和控制线的总线进行互连。
  • 指令集架构层是计算机软、硬件系统之间的界面和纽带。

核心计算公式一览#

指标公式 / 关系式备注
时钟周期T=1/fT = 1 / f与主频互为倒数
平均 CPI平均CPI=(CPIi×Pi)\text{平均}\text{CPI} = \sum(\text{CPI}_i \times P_i)各类指令占比加权求和
CPU 执行时间TCPU=IC×CPI×T=IC×CPIfT_{\text{CPU}} = IC \times \text{CPI} \times T = \frac{IC \times \text{CPI}}{f}评估计算机性能最核心的标准
MIPSMIPS=fCPI×106\text{MIPS} = \frac{f}{\text{CPI} \times 10^6}ff 单位为 MHz,则为 fCPI\frac{f}{\text{CPI}}
GIPSGIPS=fCPI×109\text{GIPS} = \frac{f}{\text{CPI} \times 10^9}ff 单位为 GHz,则为 fCPI\frac{f}{\text{CPI}}
MFLOPSMFLOPS=浮点操作次数执行时间×106\text{MFLOPS} = \frac{\text{浮点操作次数}}{\text{执行时间} \times 10^6}衡量科学计算性能

性能评估是一个综合性的工作。在进行性能比较时,必须从实际的 CPU 执行时间基准测试程序 出发进行综合计算与判定,切忌只凭主频高低妄下结论。


习题1:课后习题与真题详解#

课后习题截图1 课后习题截图2

1.1 名词解释#

  1. 摩尔定律:集成电路上可容纳的晶体管数量大约每 18 到 24 个月翻一番,是半导体工艺快速迭代的经验性规律。
  2. 汇编器:负责将用助记符书写的汇编语言源程序整体翻译成二进制机器语言目标程序的工具软件。
  3. 编译器:负责将高级语言源程序整体翻译成低级机器代码或汇编代码的程序。
  4. 解释器:逐句翻译并立即执行高级语言程序的软件,边解释边执行,通常不产生独立的目标文件。
  5. 链接器:将多个独立编译的目标模块和系统提供的库函数组合,生成统一可执行目标文件。
  6. 时钟周期:时钟信号脉冲的持续时间,是 CPU 工作最基本的最小时间单位,其数值与主频互为倒数。
  7. 机器字长:CPU 一次能够直接进行算术或逻辑运算的二进制位数,常与通用寄存器和 ALU 的宽度一致。
  8. 主存容量:主存储器中可寻址和存储信息的最大总量,通常使用 2 的幂作为换算进制。
  9. CPI:平均每条指令执行所需的时钟周期数。
  10. IPC:每个时钟周期平均执行的指令条数,其数值与 CPI 互为倒数。
  11. MIPS:平均每秒执行的百万条指令数。
  12. MFLOPS:平均每秒执行的百万次浮点运算次数。
  13. CPU 时间:CPU 运行特定程序所真正消耗的计算时间,不包含等待外设和系统调度的非 CPU 占用时间。

1.2 选择题详解#

第 1 题#

冯·诺依曼结构计算机中数据采用二进制编码表示,其主要原因是_______。

Ⅰ. 二进制运算规则简单 Ⅱ. 制造两个稳态的物理器件较为容易 Ⅲ. 便于逻辑门电路实现算术运算

A. 仅 Ⅰ、Ⅱ B. 仅 Ⅰ、Ⅲ C. 仅 Ⅱ、Ⅲ D. Ⅰ、Ⅱ、Ⅲ

解析

答案:D

  • Ⅰ 正确:二进制仅有 0 和 1 两种状态,加减乘除的逻辑规则远比十进制简单。
  • Ⅱ 正确:在物理硬件上,制造具有两个稳定状态(如电压高低、电容充电放电、晶体管导通截止)的元器件门槛最低、可靠性最高。
  • Ⅲ 正确:基础的逻辑门电路天然便于实现逻辑与、或、非,从而极易组合出实现算术加减法运算的加法器。

第 2 题#

下列关于冯·诺依曼结构计算机基本思想的叙述中,错误的是_______。

A. 程序的功能都通过中央处理器执行指令实现 B. 指令和数据都用二进制表示,形式上无差别 C. 指令按地址访问,数据都在指令中直接给出 D. 程序执行前,指令和数据需预先存放在存储器中

解析

答案:C

  • A 正确:现代计算机执行程序即由 CPU 不断从存储器取指令、解析指令并执行指令来完成全部功能。
  • B 正确:指令和数据在主存中都是一连串二进制代码,表现形式完全一样,仅在不同工作阶段由 CPU 负责区分。
  • C 错误:前半句正确,但后半句错误。操作数(数据)可以存放在寄存器、主存或输入输出接口中,通过各种寻址方式在指令中给出地址指针,而非只能以立即数形式在指令中直接给出。
  • D 正确:这是存储程序的经典核心思想,程序启动前其指令和数据必须一并装入主存。

第 3 题#

将高级语言源程序转换为机器级目标代码文件的程序称为_______。

A. 汇编程序 B. 链接程序 C. 编译程序 D. 解释程序

解析

答案:C

  • A 错误:汇编程序是将汇编助记符源程序翻译为二进制机器级目标程序。
  • B 错误:链接程序是将多个目标文件与静态库函数组合并重新分配地址,生成最终的可执行文件。
  • C 正确:编译程序将高级语言编写的源程序一次性翻译为等价的汇编或机器级目标程序。
  • D 错误:解释程序不生成独立的机器级目标文件,而是采用逐句翻译并立即执行的方式运行。

第 4 题#

将高级语言源程序转换为可执行目标文件的主要过程是_______。

A. 预处理 \rightarrow 编译 \rightarrow 汇编 \rightarrow 链接 B. 预处理 \rightarrow 汇编 \rightarrow 编译 \rightarrow 链接 C. 预处理 \rightarrow 编译 \rightarrow 链接 \rightarrow 汇编 D. 预处理 \rightarrow 汇编 \rightarrow 链接 \rightarrow 编译

解析

答案:A

  • A 正确:构建 C/C++ 等高级语言的规范工具链流程为:
    1. 预处理:展开宏定义、处理条件编译和包含的头文件;
    2. 编译:将源程序转换为具体的汇编代码文件;
    3. 汇编:将汇编代码转换为二进制的目标机器码文件;
    4. 链接:整合各目标模块,引入库函数并定位逻辑地址,输出最终的二进制可执行目标文件。
  • B、C、D 错误:步骤逻辑次序混乱。

第 5 题#

计算机硬件能够直接执行的是_______。

Ⅰ. 机器语言程序 Ⅱ. 汇编语言程序 Ⅲ. 硬件描述语言程序

A. 仅 Ⅰ B. 仅 Ⅰ、Ⅱ C. 仅 Ⅰ、Ⅲ D. Ⅰ、Ⅱ、Ⅲ

解析

答案:A

  • Ⅰ 正确:机器语言是由 0 和 1 组成的指令集体系结构,硬件电路可直接译码和运行。
  • Ⅱ 错误:汇编语言无法被 CPU 电路直接识别,必须先使用汇编器翻译为机器语言程序。
  • Ⅲ 错误:硬件描述语言用于描述电路结构或逻辑行为,通常用于逻辑仿真或电路综合,并非可直接由现成 CPU 硬件执行的二进制程序。

第 6 题#

下列给出的部件中,其位数,也就是宽度,一定与机器字长相同的是_______。

Ⅰ. ALU Ⅱ. 指令寄存器 Ⅲ. 通用寄存器 Ⅳ. 浮点寄存器

A. 仅 Ⅰ、Ⅱ B. 仅 Ⅰ、Ⅲ C. 仅 Ⅱ、Ⅲ D. 仅 Ⅱ、Ⅲ、Ⅳ

解析

答案:B

  • Ⅰ 正确:算术逻辑单元用于执行定点算术逻辑运算,其基本位宽往往直接体现并限制了主机的定点一次处理宽度(即机器字长)。
  • Ⅱ 错误:指令寄存器的宽度仅需容纳单条指令即可,它由指令字长决定,而指令字长与定点数据宽度(机器字长)不必然相等。
  • Ⅲ 正确:通用寄存器用于承载和暂存基础操作数,其宽度与机器字长保持完全一致。
  • Ⅳ 错误:浮点寄存器用于处理精度极高的科学计算(例如单精度 32 位、双精度 64 位、双精度扩展 80 位等),其宽度独立于 CPU 定点字长。

第 7 题#

下列选项中,描述浮点数操作速度指标的是_______。

A. MIPS B. CPI C. IPC D. MFLOPS

解析

答案:D

  • A 错误:MIPS 指标表示每秒执行的百万条指令数,用于评价综合指令运行速度。
  • B 错误:CPI 表示单条指令所需的平均时钟周期数。
  • C 错误:IPC 表示单时钟周期的平均执行指令数。
  • D 正确:MFLOPS 表示每秒百万次浮点操作数,常用于衡量浮点核心计算能力。

第 8 题#

2017 年公布的全球超级计算机排名中,“神威·太湖之光”浮点运算速度为 93.0146 PFLOPS93.0146\text{ PFLOPS},说明该计算机每秒完成的浮点操作次数约为_______。

A. 9.3×10139.3 \times 10^{13} 次 B. 9.3×10159.3 \times 10^{15} 次 C. 9.39.3 千万亿次 D. 9.39.3 亿亿次

解析

答案:D

  • 国际单位制中单位前缀 P 代表皮它(即 101510^{15})。
  • 因此 93.0146 PFLOPS=93.0146×1015 次/秒9.3×1016 次/秒93.0146\text{ PFLOPS} = 93.0146 \times 10^{15}\text{ 次/秒} \approx 9.3 \times 10^{16}\text{ 次/秒}
  • 1亿亿=108×108=10161\text{亿亿} = 10^8 \times 10^8 = 10^{16},所以 9.3×10169.3 \times 10^{16} 换算为汉字单位即为 9.39.3 亿亿次。

第 9 题#

下列选项中,能缩短程序执行时间的措施是_______。

Ⅰ. 提高 CPU 时钟频率 Ⅱ. 优化数据通路结构 Ⅲ. 对程序进行编译优化

A. 仅 Ⅰ 和 Ⅱ B. 仅 Ⅰ 和 Ⅲ C. 仅 Ⅱ 和 Ⅲ D. Ⅰ、Ⅱ、Ⅲ

解析

答案:D

  • 根据 CPU 执行时间公式 TCPU=IC×CPIfT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f}
    • Ⅰ 正确:提高 CPU 主频 ff 可直接使周期缩短,降低执行时间。
    • Ⅱ 正确:优化数据通路结构能够降低不同指令的平均 CPI\text{CPI},从而减少总时钟周期数。
    • Ⅲ 正确:依靠编译优化可以对指令逻辑重新排布,从而缩减指令条数 ICIC 且降低指令运行的加权平均 CPI\text{CPI}

第 10 题#

某计算机主频为 1.2 GHz1.2\text{ GHz},其指令分为 4 类,它们在基准程序中所占比例及 CPI 如下表所示。该机的 MIPS 数是_______。

指令类型ABCD
占比50%20%10%20%
CPI2345

A. 100 B. 200 C. 400 D. 600

解析

答案:C

  1. 计算程序的平均 CPI: 平均CPI=0.5×2+0.2×3+0.1×4+0.2×5=1+0.6+0.4+1=3\text{平均CPI} = 0.5 \times 2 + 0.2 \times 3 + 0.1 \times 4 + 0.2 \times 5 = 1 + 0.6 + 0.4 + 1 = 3
  2. 换算主频为 MHz:1.2 GHz=1200 MHz1.2\text{ GHz} = 1200\text{ MHz}
  3. 利用简化公式求解 MIPS: MIPS=12003=400\text{MIPS} = \frac{1200}{3} = 400

第 11 题#

假定基准程序 A 在某计算机上的运行时间为 100 秒100\text{ 秒},其中 90 秒90\text{ 秒} 为 CPU 时间,其余为 I/O 时间。若 CPU 速度提高 50%,I/O 速度不变,则运行基准程序 A 所耗费的时间是_______。

A. 55 秒55\text{ 秒} B. 60 秒60\text{ 秒} C. 65 秒65\text{ 秒} D. 70 秒70\text{ 秒}

解析

答案:D

  1. 原程序中的非 CPU 时间(即等待 I/O 时间)为:100s90s=10s100\text{s} - 90\text{s} = 10\text{s}
  2. 若 CPU 速度提升 50%,代表新型处理器的运行效率是旧款的 1.51.5 倍,所以新的 CPU 时间为: TCPU=90s1.5=60sT'_{\text{CPU}} = \frac{90\text{s}}{1.5} = 60\text{s}
  3. 因为 I/O 速度不变,总时间等于新 CPU 时间与不变的 I/O 时间之和: T=60s+10s=70sT'_{\text{总}} = 60\text{s} + 10\text{s} = 70\text{s}

第 12 题#

程序 P 在机器 M 上的执行时间为 20 秒20\text{ 秒},编译优化后,P 执行的指令数减少到原来的 70%,而 CPI 增加到原来的 1.2 倍,则 P 在 M 上的执行时间是_______。

A. 8.4 秒8.4\text{ 秒} B. 11.7 秒11.7\text{ 秒} C. 14.0 秒14.0\text{ 秒} D. 16.8 秒16.8\text{ 秒}

解析

答案:D

  1. CPU 执行时间公式为 TCPU=IC×CPIfT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f}。在机器 M 的主频 ff 保持不变的情况下: TCPU=TCPU×70%×1.2=TCPU×0.84T'_{\text{CPU}} = T_{\text{CPU}} \times 70\% \times 1.2 = T_{\text{CPU}} \times 0.84
  2. 代入原时间数据: TCPU=20s×0.84=16.8sT'_{\text{CPU}} = 20\text{s} \times 0.84 = 16.8\text{s}

第 13 题#

假定计算机 M1 和 M2 具有相同的指令集体系结构,主频分别为 1.5 GHz1.5\text{ GHz}1.2 GHz1.2\text{ GHz}。在 M1 和 M2 上运行某基准程序 P,平均 CPI 分别为 2 和 1,则程序 P 在 M1 和 M2 上运行时间的比值是_______。

A. 0.4 B. 0.625 C. 1.6 D. 2.5

解析

答案:C

  1. 由于 M1 和 M2 的指令集体系结构相同,且运行相同的二进制可执行程序 P,因此指令总数 ICIC 相同。
  2. 根据执行时间公式: T1T2=IC×CPI1/f1IC×CPI2/f2=CPI1×f2CPI2×f1=2×1.2GHz1×1.5GHz=2.41.5=1.6\frac{T_1}{T_2} = \frac{IC \times \text{CPI}_1 / f_1}{IC \times \text{CPI}_2 / f_2} = \frac{\text{CPI}_1 \times f_2}{\text{CPI}_2 \times f_1} = \frac{2 \times 1.2\text{GHz}}{1 \times 1.5\text{GHz}} = \frac{2.4}{1.5} = 1.6

第 14 题#

若某计算机主频为 1 GHz1\text{ GHz},在该计算机上执行程序 P,共执行了 1000010000 条指令,其中 80%80\% 的指令执行平均需 1 个时钟周期,20%20\% 的指令执行平均需 10 个时钟周期。程序 P 的平均 CPI 和 CPU 执行时间分别是_______。

A. 2.8, 28μs2.8,\ 28\mu\text{s} B. 28, 28μs28,\ 28\mu\text{s} C. 2.8, 28 ms2.8,\ 28\text{ ms} D. 28, 28 ms28,\ 28\text{ ms}

解析

答案:A

  1. 计算程序的平均 CPI: 平均CPI=0.8×1+0.2×10=2.8\text{平均CPI} = 0.8 \times 1 + 0.2 \times 10 = 2.8
  2. 计算 CPU 执行时间: TCPU=IC×CPIf=10000×2.81×109 Hz=2.8×1041×109 Hz=2.8×105 s=28×106 s=28μsT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} = \frac{10000 \times 2.8}{1 \times 10^9\text{ Hz}} = \frac{2.8 \times 10^4}{1 \times 10^9\text{ Hz}} = 2.8 \times 10^{-5}\text{ s} = 28 \times 10^{-6}\text{ s} = 28\mu\text{s}

第 15 题#

若机器 M 的主频为 1.5 GHz1.5\text{ GHz},在 M 上执行程序 P 的指令条数为 5×1055 \times 10^5,P 的平均 CPI 为 1.2,则 P 在 M 上的指令执行速度和用户 CPU 时间分别为_______。

A. 0.8 GIPS, 0.4 ms0.8\text{ GIPS},\ 0.4\text{ ms} B. 0.8 GIPS, 0.4μs0.8\text{ GIPS},\ 0.4\mu\text{s} C. 1.25 GIPS, 0.4 ms1.25\text{ GIPS},\ 0.4\text{ ms} D. 1.25 GIPS, 0.4μs1.25\text{ GIPS},\ 0.4\mu\text{s}

解析

答案:C

  1. 计算指令执行速度(采用 GIPS 指标): 速度=fCPI×109=1.5×109 Hz1.2×109=1.25GIPS\text{速度} = \frac{f}{\text{CPI} \times 10^9} = \frac{1.5 \times 10^9\text{ Hz}}{1.2 \times 10^9} = 1.25\text{GIPS}
  2. 计算用户 CPU 执行时间: TCPU=IC×CPIf=5×105×1.21.5×109 Hz=6×1051.5×109 Hz=4×104 s=0.4 msT_{\text{CPU}} = \frac{IC \times \text{CPI}}{f} = \frac{5 \times 10^5 \times 1.2}{1.5 \times 10^9\text{ Hz}} = \frac{6 \times 10^5}{1.5 \times 10^9\text{ Hz}} = 4 \times 10^{-4}\text{ s} = 0.4\text{ ms}

1.3 简答题:冯·诺依曼结构计算机思想与硬件组成#

冯·诺依曼结构计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部件组成?它们各有何作用?

解析

一、 冯·诺依曼结构核心思想

  1. 采用二进制:计算机内部的指令和数据均使用二进制进行编码表示。
  2. 存储程序:程序(指令序列)和数据提前一并存入主存储器中。
  3. 形式无差别:指令和数据统一存放在主存内,没有物理上的形态区别,只有在 CPU 的不同工作阶段中才被折射出不同含义。
  4. 按地址顺序执行:指令以地址形式存放在存储器中,由程序计数器 PC 自动加 1 指示下一条指令,实现程序的顺序自动控制。

二、 硬件系统五大部件及作用 按此设计思想,硬件系统由以下五大核心部分组成:

  • 运算器:负责执行定点和浮点算术运算和逻辑运算(如与、或、非、移位等)。
  • 控制器:负责控制全机自动协调运行。主要负责将指令从存储器读出并译码,产生相应的一系列时序微操作控制信号。
  • 存储器:用于保存正在运行的系统和用户的程序指令、以及待处理的运算数据。
  • 输入设备:用于将用户或外部输入的物理信号转化为计算机可识别的二进制电信号。
  • 输出设备:用于将计算机的处理结果转换为人类或外部物理设备能识别的数字、文本或声光信号。

1.4 简答题:计算机系统的多级层次结构#

计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用?

解析

计算机系统在功能上采用多级层次结构,通过由低到高的抽象层次完成高级任务到底层物理开关状态的转换:

  1. 微程序/微代码级(第 1 层):由微代码或基本逻辑门硬件电路直接解释执行。它的作用是为上层指令集系统提供最基本的硬件执行环境。
  2. 机器语言级(第 2 层):该层由物理 CPU 能直接理解和解释执行的二进制指令组成,构成了软硬件直接交互的界面。
  3. 操作系统级(第 3 层):负责直接管理底层硬件资产(如 CPU 周期、物理内存、外设),并提供一系列系统调用以供上层编写的程序使用。
  4. 汇编语言级(第 4 层):采用助记符代替机器码,使程序员能够进行底层的效率优化,需要由汇编器转换为机器代码才能运行。
  5. 高级语言级(第 5 层):采用类似自然语言与数学公式的语法(如 C、C++、Python),使开发脱离了对特定芯片结构的依赖,显著提升了编程生产力与代码的可移植性。
  6. 应用软件级(第 6 层):直接面向最终终端用户,利用高级软件或脚本实现各种生产力任务与特定业务问题。

在系统的层次结构中,下层是实现上层的物质技术基础,而上层则是对下层功能的进一步抽象与拓展


1.5 简答题:存储器寄存器位数的实际计算#

设有一个 1MB 容量的存储器,机器字长和存储字长均为 32 位,请问若按字节编址,地址寄存器是多少位?数据寄存器是多少位?

解析

  1. 地址寄存器位数的计算
    • 存储器容量为 1MB,且按字节编址,说明主存共包含 1M=2201\text{M} = 2^{20} 个可寻址的字节单元。
    • 寻址这些单元需要 20 根地址线,因此地址寄存器的宽度为 20 位。
  2. 数据寄存器位数的计算
    • 数据寄存器的宽度由存储字长决定。
    • 题目中存储字长为 32 位,因此数据寄存器的宽度为 32 位。

考点归纳: 本题考查地址寄存器与数据寄存器宽度的确定方法。地址寄存器的位数等于主存地址码的长度,数据寄存器的位数等于存储字长。这与机器字长的大小无关。


1.6 计算题:不同实现方式下的 MIPS 比较#

假定某计算机 1 和计算机 2 以不同的方式实现了相同的指令集。该指令集中共有 A、B、C、D 四类指令,它们所占比例分别为:

  • A: 40%
  • B: 20%
  • C: 15%
  • D: 25%

两台计算机的主频分别为 600 MHz600\text{ MHz}800 MHz800\text{ MHz}。各类指令在两台计算机上的 CPI 如下表所示,求两计算机的 MIPS。

计算机ABCD
计算机 12345
计算机 22234

解析

1. 计算机 1 的计算

  • 计算平均 CPI: CPI1=0.4×2+0.2×3+0.15×4+0.25×5=0.8+0.6+0.6+1.25=3.25\text{CPI}_1 = 0.4 \times 2 + 0.2 \times 3 + 0.15 \times 4 + 0.25 \times 5 = 0.8 + 0.6 + 0.6 + 1.25 = 3.25
  • 由于主频 f1=600 MHzf_1 = 600\text{ MHz},直接计算其 MIPS 指标: MIPS1=f1CPI1=6003.25184.62\text{MIPS}_1 = \frac{f_1}{\text{CPI}_1} = \frac{600}{3.25} \approx 184.62

2. 计算机 2 的计算

  • 计算平均 CPI: CPI2=0.4×2+0.2×2+0.15×3+0.25×4=0.8+0.4+0.45+1.0=2.65\text{CPI}_2 = 0.4 \times 2 + 0.2 \times 2 + 0.15 \times 3 + 0.25 \times 4 = 0.8 + 0.4 + 0.45 + 1.0 = 2.65
  • 由于主频 f2=800 MHzf_2 = 800\text{ MHz},直接计算其 MIPS 指标: MIPS2=f2CPI2=8002.65301.89\text{MIPS}_2 = \frac{f_2}{\text{CPI}_2} = \frac{800}{2.65} \approx 301.89

答案

  • 计算机 1 的运算速度约为 184.62 MIPS184.62\text{ MIPS}
  • 计算机 2 的运算速度约为 301.89 MIPS301.89\text{ MIPS}

1.7 计算题:编译优化与性能综合对比#

若某程序编译后生成的目标代码由 A、B、C、D 四类指令组成,它们在程序中所占比例分别为:

  • A: 40%
  • B: 20%
  • C: 15%
  • D: 25%

已知 A、B、C、D 四类指令的 CPI 分别为:1、2、2、2。现在需要对程序进行编译优化,优化后的程序中 A 类指令数量减少了一半,而其他指令数量不变。运行该程序的计算机 CPU 主频为 500 MHz500\text{ MHz}。 回答:

  1. 优化前后程序的 CPI 各为多少?
  2. 优化前后程序的 MIPS 各为多少?
  3. 通过上面的计算结果,能得出什么结论?

解析

一、 优化前后程序的 CPI 各为多少?

  1. 优化前平均 CPICPI=0.4×1+0.2×2+0.15×2+0.25×2=0.4+0.4+0.3+0.5=1.6\text{CPI}_{\text{前}} = 0.4 \times 1 + 0.2 \times 2 + 0.15 \times 2 + 0.25 \times 2 = 0.4 + 0.4 + 0.3 + 0.5 = 1.6
  2. 优化后平均 CPI
    • 设优化前指令总数为 NN,则各指令条数为:A=0.4NA = 0.4N, B=0.2NB = 0.2N, C=0.15NC = 0.15N, D=0.25ND = 0.25N
    • 优化后 A 类指令减少一半,变为 0.2N0.2N,其余指令数不变。因此优化后的指令总数变为: N=0.2N+0.2N+0.15N+0.25N=0.8NN_{\text{后}} = 0.2N + 0.2N + 0.15N + 0.25N = 0.8N
    • 优化后各类指令占比更新为:
      • A 类:0.2N0.8N=25%\frac{0.2N}{0.8N} = 25\%
      • B 类:0.2N0.8N=25%\frac{0.2N}{0.8N} = 25\%
      • C 类:0.15N0.8N=18.75%\frac{0.15N}{0.8N} = 18.75\%
      • D 类:0.25N0.8N=31.25%\frac{0.25N}{0.8N} = 31.25\%
    • 因此,优化后的平均 CPI 为: CPI=0.25×1+0.25×2+0.1875×2+0.3125×2=0.25+0.5+0.375+0.625=1.75\text{CPI}_{\text{后}} = 0.25 \times 1 + 0.25 \times 2 + 0.1875 \times 2 + 0.3125 \times 2 = 0.25 + 0.5 + 0.375 + 0.625 = 1.75

二、 优化前后程序的 MIPS 各为多少? 计算机主频为 f=500 MHzf = 500\text{ MHz}

  1. 优化前 MIPSMIPS=fCPI=5001.6=312.5\text{MIPS}_{\text{前}} = \frac{f}{\text{CPI}_{\text{前}}} = \frac{500}{1.6} = 312.5
  2. 优化后 MIPSMIPS=fCPI=5001.75285.71\text{MIPS}_{\text{后}} = \frac{f}{\text{CPI}_{\text{后}}} = \frac{500}{1.75} \approx 285.71

三、 结论与性能分析 虽然从 MIPS 计算结果上看,优化后的指令速度从 312.5 MIPS312.5\text{ MIPS} 下降到了 285.71 MIPS285.71\text{ MIPS},但这并不意味着优化后程序的性能下降了。 计算优化前后的 CPU 执行时间如下:

  • 优化前执行时间: T=IC×CPIf=N×1.6500 MHz=1.6N5×108 Hz=3.2N×109sT_{\text{前}} = \frac{IC_{\text{前}} \times \text{CPI}_{\text{前}}}{f} = \frac{N \times 1.6}{500\text{ MHz}} = \frac{1.6N}{5 \times 10^8\text{ Hz}} = 3.2N \times 10^{-9}\text{s}
  • 优化后执行时间: T=IC×CPIf=0.8N×1.75500 MHz=1.4N500 MHz=1.4N5×108 Hz=2.8N×109sT_{\text{后}} = \frac{IC_{\text{后}} \times \text{CPI}_{\text{后}}}{f} = \frac{0.8N \times 1.75}{500\text{ MHz}} = \frac{1.4N}{500\text{ MHz}} = \frac{1.4N}{5 \times 10^8\text{ Hz}} = 2.8N \times 10^{-9}\text{s}
  • 计算性能提升(加速比): 加速比=TT=1.6N1.4N1.1429\text{加速比} = \frac{T_{\text{前}}}{T_{\text{后}}} = \frac{1.6N}{1.4N} \approx 1.1429 这说明优化后的程序执行速度实际上提升了约 14.29%14.29\%

结论

  1. 评价程序运行速度最真实可靠的指标是 CPU 执行时间。而 CPI、MIPS、主频等指标无法跨场景进行单一维度的绝对性能对比。
  2. 在编译优化中,消除了大量的低 CPI 指令(如 A类)后,虽然使得剩余指令结构中高 CPI 的指令比例上升,从而导致平均 CPI 增加、MIPS 下降;但由于程序总指令数显著减少,总的时钟周期数大幅下降,从而令程序的实际执行时间变短,性能最终提升。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

计算机系统概述
https://dawn114514.site/posts/计组/计算机系统概述/
作者
黎明
发布于
2026-06-27 12:25:00
许可协议
MIT

部分信息可能已经过时

目录