考研学习
解题方法计算机组成原理

计算机组成原理第 1 章:计算机系统概述

408 计算机组成原理「计算机系统概述」复习:核心知识点、真题题型、通用解法与易错点。

Last updated on

本章按照“知识框架 → 真题命题规律 → 各类题型统一解法 → 典型真题/模拟题 → 易错点 → 预测变式”组织。

本章参考本站中的以下内容:

  • 408 真题 → 计算机组成原理 → 第 1 章 计算机系统概述
  • 408 模拟选择题 → 计算机组成原理 → 第 1 章 计算机系统概述

本站的第 1 章真题主要分成“计算机系统层次结构”与“计算机性能指标”两大部分;真题从 2009、2010 一直到 2024 都有覆盖。(Any Docs) 模拟题则补充了软件分类、解释程序、冯·诺依曼机、大小端和更复杂的性能分析。(Any Docs)


一、先建立第 1 章的整体框架

这一章本身知识并不难,但是有一个特点:

概念题很碎,计算题公式很少,但特别容易因为“比例、单位、速度/时间倒数关系”出错。

408 第 1 章基本可以拆成下面 6 类。

题型重要程度主要考法
冯·诺依曼结构与存储程序★★★★指令/数据如何区分、五大部件、工作过程
软件层次与语言转换★★★编译、汇编、链接、解释
计算机层次结构与ISA★★★ISA、机器语言、汇编语言、微指令
CPU性能基本公式★★★★★指令数、CPI、主频、CPU时间
性能比较与优化★★★★★速度比、加速比、局部优化
MIPS/FLOPS/字长等指标★★★★指标含义、单位换算

其中真正应该做到“看到题就机械套流程”的,是后面三类性能题。


二、第 1 章最重要的一条公式

这一章几乎所有性能计算题都围绕下面这条式子:

而

所以

其中:

  • :Instruction Count,程序执行的指令条数
  • :Cycles Per Instruction,平均每条指令需要的时钟周期数
  • :CPU 主频
  • :时钟周期长度

解答第 1 章性能题时,第一反应应该永远是:

指令条数 × CPI ÷ 主频。

不要先想 MIPS,不要先想 GHz,也不要凭感觉比较 CPU 快慢。


三、题型一:冯·诺依曼计算机

这是本章最经典的概念题。

1. 必须背熟的核心思想

冯·诺依曼机最核心的是:

(1)存储程序

程序执行之前:

程序和数据都必须事先存入存储器。

CPU 再不断:

取指令 → 分析指令 → 执行指令。


(2)指令和数据都是二进制

在存储器中:

指令是二进制,数据也是二进制。

因此仅仅观察内存中一串:

010101010101...

无法知道它究竟是:

  • 指令;
  • 整数;
  • 浮点数;
  • 地址;
  • 字符。

二进制本身没有固定语义,语义来自解释它的上下文。

这个思想在408中非常重要。


典型真题:2009

网站中的 2009 真题问:

冯·诺依曼计算机中,指令和数据都以二进制存入存储器,CPU 根据什么区分当前取出的内容究竟是指令还是数据?

答案是:

当前所处的指令周期阶段。 (Any Docs)

为什么?

取指阶段:

此时取出来的东西:

当成指令。

执行阶段如果某条指令要求读取操作数:

此时取出来:

当成数据。

所以不是看:

  • 存储位置;
  • 二进制长什么样;
  • 内容本身。

而是看:

CPU 当前为什么去访问这个地址。


四、一个非常重要的延伸:数据本身没有“类型”

这又引出了 2023 真题。

2023 真题

题目核心是:

某个地址码给出一个通用寄存器编号。寄存器中的内容可能是操作数,也可能是操作数地址,CPU 怎么知道是哪一种? (Any Docs)

答案:

寻址方式。

例如寄存器 R1 中:

情况一:寄存器寻址

意思是:

情况二:寄存器间接寻址

意思变成:

真正操作数:

注意:

R1 里面的二进制完全没变。

变的是:

指令怎样解释它。

所以这一章可以建立一个非常重要的思想:

机器中的二进制没有天然语义,指令规定如何解释二进制。

以后学:

  • 补码
  • 浮点数
  • 地址
  • 指令
  • Cache
  • 虚拟地址

都会不断遇到这个思想。


五、题型二:冯·诺依曼特点判断题

2019 真题

题目让判断哪一项不符合冯·诺依曼基本思想,其中错误说法是:

数据都直接包含在指令中。 (Any Docs)

当然不对。

数据可能来自:

  • 指令立即数字段;
  • 寄存器;
  • 主存;
  • I/O设备。

所以:

而不是一定写在指令里面。


模拟题:竟成模拟五

题目问冯·诺依曼计算机基本特点。

正确选项是类似:

指令按地址访问,并通常按顺序执行。

其他几个陷阱分别是:

  • 十进制存储:错,内部主要采用二进制;
  • 指令存储器、数据存储器完全分开:典型哈佛结构;
  • 按内容读取:普通主存是按地址访问。(Any Docs)

这里需要记住:

而“按内容访问”以后在 Cache / 相联存储器附近会再遇到。


六、冯·诺依曼机五大部件

理论上包括:

  1. 运算器
  2. 控制器
  3. 存储器
  4. 输入设备
  5. 输出设备

现代计算机一般:


模拟题:王道卷五

题目问:

冯·诺依曼机中,能够识别/区分指令与数据的部件是谁?

答案:

控制器。 (Any Docs)

因为控制器负责:

  • 取指;
  • 译码;
  • 发出控制信号;
  • 控制整个指令执行流程。

运算器只是负责:

总线只是:

搬东西。

存储器只是:

存东西。

因此看到:

谁负责“分析指令”“产生控制信号”“协调部件工作”

答案通常就是:

控制器。


七、题型三:机器语言、汇编语言、高级语言

这类题在真题里出现得相当多。


2015 真题

题目给:

I. 机器语言程序 II. 汇编语言程序 III. 硬件描述语言程序

问计算机硬件可以直接执行哪些。

答案:

仅机器语言程序。 (Any Docs)

CPU真正执行的是:

这样的机器指令。

汇编语言:

ADD R1,R2

只不过是:

机器指令的符号化表示。

必须经过汇编。


八、机器语言、汇编语言、高级语言的关系

建议直接形成这张图:

高级语言
C / C++ / ...
    ↓ 编译
汇编语言
    ↓ 汇编
机器语言/目标文件
    ↓ 链接
可执行文件

更完整地说:

C源程序
↓
预处理
↓
编译
↓
汇编
↓
链接
↓
可执行文件

九、2022 真题:源程序到可执行文件

2022 真题直接考流程:

高级语言源程序生成可执行目标文件的主要阶段按什么顺序排列?

答案:

(Any Docs)

每个阶段一定区分清楚。

预处理

处理:

#include
#define
#if

编译

高级语言:

a=b+c;

转换成低级代码/汇编表示。


汇编

汇编语言:

add ...

转换成机器级目标代码。


链接

把多个:

  • .o
  • .obj
  • 库

组合起来形成:

可执行文件。


十、2016 真题:编译程序

2016 真题:

将高级语言源程序转换成机器级目标代码文件的程序是什么?

答案:

编译程序。 (Any Docs)

这一类选择题最容易混:

程序输入主要输出/作用
编译器高级语言低级目标程序
汇编器汇编语言机器级目标代码
链接器目标文件可执行文件
解释器高级语言边翻译边执行

十一、解释程序 vs 编译程序

模拟题“竟成·模拟七”就专门考这个:

高级语言执行过程中“一句一句翻译,翻译一句立即执行一句”的程序是什么?

答案:

解释程序。 (Any Docs)

最简单判断:

编译

解释

口诀:

编译:先翻完再运行。

解释:边翻边运行。


十二、2024 真题:机器指令、微指令、汇编指令、伪指令

这是非常值得注意的一题。

题目给:

  • 伪指令
  • 微指令
  • 机器指令
  • 汇编指令

问CPU可以直接理解并执行哪些。

真题答案:

微指令和机器指令。 (Any Docs)


为什么?

机器指令

比如ISA规定:

ADD
LOAD
STORE

最终机器码由 CPU 执行。


微指令

如果CPU采用:

微程序控制器

一条机器指令内部又可能分解为若干微指令。

例如:

机器指令 ADD
        ↓
微指令1
微指令2
微指令3

它属于CPU内部控制器层次。


汇编指令

ADD R1,R2

CPU并不认识字符:

A D D

必须汇编成机器码。


伪指令

更不是CPU真正提供的ISA指令。

例如汇编器可能允许:

move R1,R2

实际上翻译为:

一条或多条真正的机器指令。

所以:


十三、顺便建立“计算机系统层次结构”

这一点后续学习非常有帮助。

可以粗略理解成:

高级语言层
─────────────
汇编语言层
─────────────
ISA / 机器语言层
─────────────
微体系结构层
─────────────
数字逻辑层
─────────────
电子器件

其中408特别重视的接口:

ISA。


十四、什么是 ISA?

ISA:

Instruction Set Architecture,指令集体系结构。

它本质上是:

软件和硬件之间的接口。

从程序员角度可以看到:

  • 有哪些指令;
  • 有哪些寄存器;
  • 数据类型;
  • 寻址方式;
  • 指令格式;
  • 地址空间;
  • 异常/中断机制等。

但一般看不到:

  • CPU流水线具体几级;
  • Cache内部怎么实现;
  • ALU内部具体电路。

所以:

这句话在性能比较题里特别重要。


十五、题型四:性能指标——全章第一重点

从网站真题分布看,这一类连续出现:

  • 2010
  • 2011
  • 2012
  • 2013
  • 2014
  • 2017
  • 2020
  • 2021
  • 2022
  • 2023

说明它绝对是本章主战场。(Any Docs)


十六、三个基本量一定区分

1. 指令条数 IC

一个程序执行:

意思:

共执行10亿条机器指令。

编译器会影响它。

例如优化后:

但注意:

指令条数减少,不一定程序就一定快。

因为 CPI 可能增加。

这正是2014真题考的东西。


十七、CPI

CPI:

例如:

100条指令总共用了300个周期:

注意:

CPI不是时间。

它没有秒、ns这些单位。


十八、多种指令时如何求平均 CPI?

这是必考。

假设:

指令比例CPI
A50%2
B20%3
C10%4
D20%5

平均CPI:

也就是:


十九、2013 真题:平均CPI + MIPS

这就是网站中的2013真题。

题目给:

CPU主频1.2 GHz,并给出A/B/C/D四类指令的比例和CPI,求机器的MIPS。

先得到:

主频:

于是:

答案:

400 MIPS。(Any Docs)


二十、MIPS到底怎么算?

MIPS:

Million Instructions Per Second

每秒执行多少百万条机器指令。

首先:

因此:

如果主频直接使用 MHz:

这是最方便的公式。


二十一、2022 真题:平均CPI和CPU执行时间

题目核心:

主频1 GHz,执行10000条指令;其中80%的指令CPI为1,20%的指令CPI为10,问平均CPI和CPU时间。 (Any Docs)

第一步:

总周期数:

主频:

因此周期时间:

于是:

答案:

这是第 1 章最标准的模板题。


二十二、性能计算标准四步法

以后所有类似题,一律:

第一步:求平均CPI

第二步:求总周期数

第三步:主频转周期

第四步:求时间

或者一步:


二十三、2023 真题:GIPS + CPU时间

题目给:

  • 主频
  • 指令数
  • 平均 CPI = 1.2

求:

  • 指令执行速度
  • 用户CPU时间。(Any Docs)

指令速度:

所以:

CPU时间:

答案:


二十四、单位换算是本章隐藏大坑

必须非常熟:

时间:

所以:

1 GHz

100 MHz

200 MHz

500 MHz

这种最好练到条件反射。


二十五、题型五:不能只比较主频

这是408特别喜欢设置的陷阱。

错误观念

CPU主频越高,所以CPU一定越快。

错误。

因为:

性能由三项共同决定:

例如:

机器A:

机器B:

执行相同数量指令:

所以虽然A主频翻倍,却:

慢了一倍。


二十六、2017 真题:主频更高却更慢

网站2017真题:

M1:

M2:

相同ISA、执行同一程序,比较运行时间。(Any Docs)

由于指令数相同:

所以:

M1主频明明更高:

但因为CPI:

最终M1反而慢。

这是考试特别想考查理解的:

主频不是性能。


二十七、“时间比”和“速度比”一定注意倒数

这是本章第一大计算错误来源。

若:

说明:

A运行时间是B的2倍。

那么:

B的速度才是A的2倍。

因为:

因此:

背:


二十八、模拟题:不同机器 + 不同编译器

王道卷三有一道非常好的综合题。

给:

  • M1主频800 MHz
  • M2主频400 MHz
  • A/B/C三种指令
  • 每种指令在M1、M2上CPI不同
  • C1、C2两个编译器产生的指令比例不同

要求分别比较机器性能。(Any Docs)

这题真正考的是:

机器和编译器都会影响性能。

机器影响:

编译器影响:

标准流程:

第一步

对每台机器、每个编译器分别算:

第二步

算:

第三步

题目问“速度几倍”时:

千万别直接:


二十九、题型六:编译优化是否真的优化?

2014 真题

题目:

程序原来运行20s。编译优化后,指令条数变成原来的70%,但CPI变成原来的1.2倍,求新执行时间。 (Any Docs)

主频不变:

所以:

于是:

所以:

这道题非常重要,因为它说明:

指令条数减少 ≠ 一定按相同比例提速。


三十、比例变化题统一做法

假设:

则:

所以:

以后这类题甚至不需要求原来的具体:

  • 指令数;
  • CPI;
  • 主频。

直接算比例。


三十一、2010 真题:什么能缩短CPU时间?

题目给三个措施:

  1. 提高CPU主频;
  2. 优化数据通路;
  3. 编译优化。

答案:

三个都可能降低执行时间。(Any Docs)

用万能式分析:

提高主频

优化数据通路

通常可能:

编译优化

可能:

甚至:

所以这一章很多概念题可以直接:

回到CPU时间公式判断。


三十二、题型七:局部优化与Amdahl思想

2012 真题很经典。

题目:

某程序总运行100s,其中CPU时间90s,I/O时间10s。如果CPU速度提高50%,I/O速度不变,新运行时间多少? (Any Docs)

注意“速度提高50%”意味着:

所以CPU新时间:

I/O:

没变。

于是:

答案:


三十三、“速度提高50%”不是“时间减少50%”

这是超级高频坑。

若:

由于:

所以:

而不是:

例如:

则:

只减少了:

也就是:


三十四、Amdahl定律

2012这题实际上已经体现了Amdahl思想:

只优化程序的一部分,整体性能提升受到未优化部分限制。

若程序中比例 的部分获得 倍加速:

例如CPU占90%:

CPU快1.5倍:

整体加速:

因此新时间:


三十五、一个极限结论特别重要

如果CPU部分无限快:

那么:

2012题:

即使CPU无限快:

因为那10%的I/O时间永远存在。

这就是:

系统瓶颈决定整体性能。


三十六、模拟题:某条慢指令值不值得优化?

王道卷一题:

某指令I占10%,CPI为20;其他指令平均CPI为5。将I的CPI优化到10,但时钟周期反而延长10%,问是否值得。(Any Docs)

这是非常高质量的题。

假设共 条。

原周期数:

优化后:

可是周期长度变成:

所以新时间:

旧时间:

由于:

因此:

值得。


三十七、这类综合优化题统一解法

千万别只说:

CPI降低了,所以快。

必须同时比较:

若三者都变:

然后比较。


三十八、题型八:CPU时间 vs 程序总运行时间

这个概念也很容易混。

程序从点击“运行”到结束:

是总经过时间(elapsed time)。

里面可能包括:

  • CPU真正执行程序;
  • 等待磁盘;
  • 等待网络;
  • 等待I/O;
  • 操作系统调度等。

而CPU时间只统计:

CPU真正花在程序上的时间。


模拟题:王道卷四

题目:

  • 主频2 GHz
  • CPI 1.2
  • 指令数
  • 程序总经历时间4s

问CPU时间占比。(Any Docs)

CPU时间:

所以占:

答案:


三十九、题型九:MIPS、FLOPS到底是什么

2011 真题

问:

哪个指标描述浮点运算速度?

答案:

MFLOPS。 (Any Docs)


FLOPS

即:

每秒浮点运算次数。

注意:

不是“每秒指令数”。

一条机器指令:

可能完成一个、多个乃至大量浮点操作。


四十、单位前缀必须背


四十一、2021 真题:PFLOPS

神威·太湖之光题给:

因为:

所以:

浮点操作/秒。(Any Docs)

又因为:

所以:

于是大约:


四十二、MIPS和FLOPS不能混用

MIPS

看:

FLOPS

看:

因此两个不同ISA机器:

MIPS通常并不适合简单横向比较。

因为一条复杂指令可能完成:

别的机器几条指令的功能。

所以:


四十三、CPI和IPC

网站真题选项中也出现IPC。

CPI:

IPC:

理想简单情况下:

但现代超标量处理器中,平均:

也是可能的。

后面CPU流水线会更加系统地讲。


四十四、题型十:机器字长

2020 真题

题目给:

I. ALU II. 指令寄存器 III. 通用寄存器 IV. 浮点寄存器

问哪些宽度一定与机器字长相同。

408标准答案:

ALU和通用寄存器。 (Any Docs)


四十五、机器字长究竟是什么?

机器字长通常指:

CPU一次能够处理的二进制数据位数。

例如:

  • 32位机器;
  • 64位机器。

主要和:

  • ALU宽度;
  • 通用寄存器宽度

有关。


四十六、不要混淆四个“长度”

非常重要。

1. 机器字长

CPU一次处理数据的宽度。

例如:


2. 指令字长

一条机器指令多少bit。

可能:

  • 固定长度;
  • 可变长度。

不要求一定等于机器字长。


3. 存储字长

一个存储单元一次存储的数据位数。


4. 数据字长

某种数据类型的位数。

例如:

具体由系统规定。

所以:

这是非常典型的概念陷阱。


四十七、模拟题里出现的大小端题怎么处理?

本站第 1 章模拟题还放了几道:

  • 小端存储;
  • 补码;
  • 数组地址;
  • 机器码。

例如王道卷三题:

sub ax, imm,立即数为 ,机器采用小端,问机器码排列及执行后的SF。(Any Docs)

这其实已经是:

第 1 章工作原理 + 第 2 章数据表示

的综合题。


四十八、小端模式核心规则

假设16位数:

有两个字节:

12 34

其中:

  • 12:高字节
  • 34:低字节

小端:

低字节放低地址。

所以:

低地址 → 34
高地址 → 12

口诀:

小端,小的地址放低位字节。


四十九、模拟题中的

16位补码:

因此字节:

FF FD

小端存储:

低地址:FD
高地址:FF

所以机器码中立即数字节顺序为:

FD FF

这就是网站该题得到 2D FD FF 的原因。(Any Docs)


五十、数组地址 + 小端综合

王道卷七模拟题:

int buf[4]={-2,103,-10,-20};

首地址给定,问某个字节地址中的内容。(Any Docs)

这种题统一四步:

第一步:确定元素

32位int:

所以先通过地址偏移:

计算:


第二步:求元素补码

例如:

32位补码:


第三步:拆字节

FF FF FF F6

第四步:按照大小端排列

小端:

低地址 → F6 FF FF FF → 高地址

然后定位题目问的那个地址。

这类题今后在第 2 章还会大量出现。


五十一、模拟性能综合题:Cache + CPI

竟成模拟一有一道很值得做:

原程序把“乘4”指令换成“左移2位”,同时两类指令的基础CPI和Cache命中率不同;程序时间从12s降为10s,要求反推出替换了多少条指令。(Any Docs)

这是典型:

第 1 章性能 + Cache

综合。


五十二、先求“有效CPI”

原“乘4”:

  • 命中CPI:94
  • 未命中率:

未命中额外:

所以:

左移:

所以每替换一条:

个周期。


程序时间减少:

CPU主频:

因此少执行周期:

每条减少100周期,所以:

这是一道非常好的综合题。


五十三、这一题应该总结成什么方法?

不要只记答案。

以后凡是:

“某种优化使程序少花了 秒,问优化了多少次/多少条指令”

统一:

然后:


五十四、网站模拟题中有一道题值得特别提醒

竟成模拟三给:

  • 主频200 MHz;
  • 四类指令;
  • 不同CPI和指令条数;

要求程序执行时间和有效MIPS。

本站解析已经指出:

按照题目给的数据计算,四个选项都不正确,正确结果应为约 和 。 (Any Docs)

这是非常好的训练。

考试复习千万不要形成:

“算不出选项,所以肯定是计算错了。”

应该有独立验算能力。


五十五、把这道有问题的模拟题重新算一次

指令数:

总周期:

主频:

所以周期:

执行时间:

MIPS:

所以:

网站这里判断题面/选项存在问题是合理的。(Any Docs)


五十六、题型十一:反推主频

竟成模拟六:

M1和M2具有相同ISA。M1主频800MHz,程序在M1运行12s,在M2运行8s;M2的CPI是M1的1.5倍,求M2主频。(Any Docs)

这种题不要重新设太多变量。

利用:

同程序:

于是:

已知:

约掉CPI:

因此:


五十七、本章最推荐的“比例法”

性能比较题不要轻易求具体指令数。

若同一个程序:

则:

如果指令数相同:

这是第 1 章最好用的比较公式。


五十八、性能题的“万能判断树”

以后看到性能题,按这个走。

题目问程序时间?
        ↓
有没有各类指令?
   ↓有
先求平均CPI
        ↓
T = IC × CPI / f

如果题目问:

A比B快多少倍?

先分别得到:

再:


如果题目说:

优化前后发生变化

直接:


如果:

只有部分程序加速

用:


五十九、最容易犯的10个错误

错误1:主频越高性能越高

错误。

还要看IC、CPI。


错误2:CPI越低机器一定越快

同样错误。

如果主频、指令数不同,也不能这么判断。


错误3:指令条数减少30%,时间也减少30%

错误。

还要看CPI与主频。


错误4:速度提高50%,时间减少50%

错误。


错误5:性能比直接等于时间比

恰好倒过来。


错误6:平均CPI直接算术平均

假设CPI:

不能:

必须按指令比例加权。


错误7:GHz直接拿去和微秒乱算

最好全部先转成标准单位,或者熟练使用:


错误8:把总运行时间当CPU时间

总运行时间包含I/O等待。


错误9:认为内存中数据本身具有固定意义

错误。

同一个:

FFFFFFFF

可以被解释成:

  • 有符号整数;
  • 无符号整数;
  • 地址;
  • 指令的一部分。

错误10:把机器字长等同于指令字长

不一定相等。


六十、建议重点掌握的真题

按照复习价值排序,本文将这样分。

第一梯队:必须熟练到秒杀

2013

多类指令比例+CPI+主频,求MIPS。

练:

平均CPI。

2014

IC变为70%,CPI变为1.2倍,求新时间。

练:

比例法。

2017

两台不同主频、不同CPI的机器比较速度。

练:

性能比较。

2022

各类CPI+指令比例,求平均CPI和CPU时间。

练:

CPU时间基本公式。

2023

主频、指令条数、CPI,求GIPS和CPU时间。

练:

基本指标综合。

这些题基本覆盖本章绝大多数计算题。(Any Docs)


六十一、第二梯队:必须理解

2009

指令和数据如何区分?

核心:

指令周期阶段。

2019

冯·诺依曼基本思想。

2022

预处理→编译→汇编→链接。

2024

微指令、机器指令、汇编指令、伪指令。

这些是本章概念题的代表。(Any Docs)


六十二、第三梯队:记住指标定义

2011

2020

机器字长。

2021

主要防止概念和单位失分。(Any Docs)


六十三、根据真题趋势预测的几种新变式

以下内容不是网站原题,而是根据现有命题方式设计的预测变式。


预测题1:IPC综合

某处理器主频:

平均:

程序执行:

条指令,求CPU时间。

因为:

所以:

执行时间:

这种“IPC反着给”完全有可能出现。


六十四、预测题2:同时改变IC、CPI、主频

原机器执行程序需要10s。

新编译器令:

新CPU使:

同时主频提高:

求新执行时间。

因此:

总体加速:

这是2014、2017题型的自然升级。


六十五、预测题3:Amdahl反问题

某程序中80%的时间可并行化,希望总体加速4倍。

问被优化部分至少要加速多少倍。

设:

则:

所以:

答案:

这是比2012真题更进一步的反推型。


六十六、预测题4:根本不可能达到的性能

还是上题:

问能否获得6倍总体加速?

即使可加速部分无限快:

因此:

所以:

不可能。

这类题几乎不用算,很适合作为选择题。


六十七、预测题5:MIPS陷阱

机器A:

机器B:

问A是否一定比B运行某高级语言程序快?

答案:

不一定。

因为:

  • ISA可能不同;
  • 编译结果的IC不同;
  • 一条指令完成的工作量不同。

最终应该比较:

这也是408很喜欢的概念方向。


六十八、第 1 章最后压缩成“一页纸”

考场上真正需要记住的就是下面这些。

1. CPU时间


2. 平均CPI


3. IPS


4. MIPS

如果 用 MHz:


5. 性能与时间

所以:


6. 加速比


7. Amdahl


8. 编译过程

高级语言源程序
↓
预处理
↓
编译
↓
汇编
↓
链接
↓
可执行文件

9. 冯·诺依曼

记住:

存储程序。

指令和数据均二进制表示。

程序和数据事先进入存储器。

按地址访问。

通常顺序取指,转移指令可改变顺序。

指令和数据从存储形式上没有本质区别。


六十九、第 1 章复习优先级

若时间有限,建议按下面顺序学:

第一优先级:

把2013、2014、2017、2022、2023真题全部做到看到数字就会列式。

第二优先级:

掌握:

  • 时间比/速度比;
  • 局部优化;
  • Amdahl;
  • CPU时间与总运行时间。

第三优先级:

背熟:

  • 冯·诺依曼;
  • 编译/汇编/链接/解释;
  • ISA;
  • 机器语言/汇编语言/微指令。

第四优先级:

记:

  • MIPS;
  • FLOPS;
  • CPI/IPC;
  • 机器字长;
  • 各类单位换算。

如果把这些真正吃透,计算机组成原理第 1 章基本就没有多少新的题型了:后面的新题大多数只是把 、CPI、主频、Cache失效、流水线或访存开销换一种方式藏起来,最后仍然会落回

这个核心思想。本站的真题与模拟题分布也非常明显地体现了这一点:真题页在性能指标部分连续收录了大量CPI、MIPS、主频和执行时间题,而模拟题则进一步把这些基本量与编译器、Cache、总线和I/O结合起来。(Any Docs)

On this page

一、先建立第 1 章的整体框架二、第 1 章最重要的一条公式三、题型一:冯·诺依曼计算机1. 必须背熟的核心思想(1)存储程序(2)指令和数据都是二进制典型真题:2009四、一个非常重要的延伸:数据本身没有“类型”2023 真题情况一:寄存器寻址情况二:寄存器间接寻址五、题型二:冯·诺依曼特点判断题2019 真题模拟题:竟成模拟五六、冯·诺依曼机五大部件模拟题:王道卷五七、题型三:机器语言、汇编语言、高级语言2015 真题八、机器语言、汇编语言、高级语言的关系九、2022 真题:源程序到可执行文件预处理编译汇编链接十、2016 真题:编译程序十一、解释程序 vs 编译程序编译解释十二、2024 真题:机器指令、微指令、汇编指令、伪指令为什么?机器指令微指令汇编指令伪指令十三、顺便建立“计算机系统层次结构”十四、什么是 ISA?十五、题型四:性能指标——全章第一重点十六、三个基本量一定区分1. 指令条数 IC十七、CPI十八、多种指令时如何求平均 CPI?十九、2013 真题:平均CPI + MIPS二十、MIPS到底怎么算?二十一、2022 真题:平均CPI和CPU执行时间二十二、性能计算标准四步法第一步:求平均CPI第二步:求总周期数第三步:主频转周期第四步:求时间二十三、2023 真题:GIPS + CPU时间二十四、单位换算是本章隐藏大坑1 GHz100 MHz200 MHz500 MHz二十五、题型五:不能只比较主频错误观念二十六、2017 真题:主频更高却更慢二十七、“时间比”和“速度比”一定注意倒数二十八、模拟题:不同机器 + 不同编译器第一步第二步第三步二十九、题型六:编译优化是否真的优化?2014 真题三十、比例变化题统一做法三十一、2010 真题:什么能缩短CPU时间?提高主频优化数据通路编译优化三十二、题型七:局部优化与Amdahl思想三十三、“速度提高50%”不是“时间减少50%”三十四、Amdahl定律三十五、一个极限结论特别重要三十六、模拟题:某条慢指令值不值得优化?三十七、这类综合优化题统一解法三十八、题型八:CPU时间 vs 程序总运行时间模拟题:王道卷四三十九、题型九:MIPS、FLOPS到底是什么2011 真题FLOPS四十、单位前缀必须背四十一、2021 真题:PFLOPS四十二、MIPS和FLOPS不能混用MIPSFLOPS四十三、CPI和IPC四十四、题型十:机器字长2020 真题四十五、机器字长究竟是什么?四十六、不要混淆四个“长度”1. 机器字长2. 指令字长3. 存储字长4. 数据字长四十七、模拟题里出现的大小端题怎么处理?四十八、小端模式核心规则四十九、模拟题中的 五十、数组地址 + 小端综合第一步:确定元素第二步:求元素补码第三步:拆字节第四步:按照大小端排列五十一、模拟性能综合题:Cache + CPI五十二、先求“有效CPI”五十三、这一题应该总结成什么方法?五十四、网站模拟题中有一道题值得特别提醒五十五、把这道有问题的模拟题重新算一次五十六、题型十一:反推主频五十七、本章最推荐的“比例法”五十八、性能题的“万能判断树”五十九、最容易犯的10个错误错误1:主频越高性能越高错误2:CPI越低机器一定越快错误3:指令条数减少30%,时间也减少30%错误4:速度提高50%,时间减少50%错误5:性能比直接等于时间比错误6:平均CPI直接算术平均错误7:GHz直接拿去和微秒乱算错误8:把总运行时间当CPU时间错误9:认为内存中数据本身具有固定意义错误10:把机器字长等同于指令字长六十、建议重点掌握的真题第一梯队:必须熟练到秒杀20132014201720222023六十一、第二梯队:必须理解2009201920222024六十二、第三梯队:记住指标定义201120202021六十三、根据真题趋势预测的几种新变式预测题1:IPC综合六十四、预测题2:同时改变IC、CPI、主频六十五、预测题3:Amdahl反问题六十六、预测题4:根本不可能达到的性能六十七、预测题5:MIPS陷阱六十八、第 1 章最后压缩成“一页纸”1. CPU时间2. 平均CPI3. IPS4. MIPS5. 性能与时间6. 加速比7. Amdahl8. 编译过程9. 冯·诺依曼六十九、第 1 章复习优先级