一、考纲及重要知识点
1.1 考纲内容
概念和性能指标出选择题;
综合后续有关内容出有关性能分析的综合题
考纲内容 | 模块化分 | |
1、计算机层次结构 | 计算机系统的基本组成 | |
计算机硬件的基本组成 | ||
计算机软件和硬件的关系 | ||
计算机的工作原理 | ||
2、计算机性能指标 | 吞吐量 | |
响应时间 | ||
CPU时钟周期 | ||
主频 | ||
CPI | ||
CPU执行时间 | ||
MIPS MFLOPS GFLPOPS TFLPOPS PFLOPS EFLOPS ZFLOPS |
1.2 重要知识点
1)MIPS 平均每秒执行百万条指令,越大说明性能相对越好,不是绝对,衡量机器性能指标很多,不能单独以某个指标来判断机器性能的好坏
2)CPU主频是指机器内部主时钟频率
机器内部主时钟频率是 CPU 内部一个固定的 “时钟信号”,每秒 “滴答” 多少次,就决定了 CPU 每秒能完成多少个 “基本操作”
核心逻辑:主频越高,CPU “每秒能干的活越多”
本质上,主频是衡量 CPU “基础运算速度” 的重要指标,但不是唯一指标(比如核心数、架构设计等也会影响性能)。就像一个人每秒能搬 10 块砖(主频高),但如果他一次只能搬 1 块(核心数少),可能不如另一个人每秒搬 8 块但一次能搬 2 块(多核 + 合理架构)效率高。不过,在其他条件相同的情况下,主频高的 CPU 确实更快。
3)主频的理解:每秒有多少个时钟周期;计算机A的时钟频率为800MHZ,说明计算机每秒800M个时钟周期
4)CPU执行时间=指令条数*CPI*时钟周期=指令条数*CPI/主频=时钟周期数/主频
5) 计算机B比计算机A快1.2倍,表明计算机B的速度是计算机A的速度的2.2倍。正确1.2倍的表述为计算机B的速度是A的1.2倍
6)CPU的时钟周期 = 指令条数*CPI;CPI = CPU时钟周期数 / 指令条数;MIPS = 主频/(CPI*106);
CPU执行时间=CPPU的时钟周期数*时钟周期
7)图解
序列一时钟周期数 = 1*1+1*2+3*4 = 15
序列二时钟周期数 = 1*2+1*2+2*3 = 10
所以序列一的时钟周期数更多,速度更慢
序列一的CPI = 15/6 = 2.5
序列二的CPI = 10/5 = 2
在计算机体系结构中,CPI(Cycles Per Instruction,每条指令所需的时钟周期数)越小,性能越好
假设CPU的时钟周期为2.5ns
序列一的MIPS = 主频/(CPI*10^6) = (1s/2.5ns)/(2.5*10^6) = 200
序列二的MIPS = 主频/(CPI*10^6) = (1s/2.5ns)/(2*10^6) = 250
所有序列二的MIPS比一多50
序列一的执行时间 = CPU时钟周期数*时钟周期 = 15*2ns = 30ns
序列二的执行时间 = CPU时钟周期数*时钟周期 = 10*2ns = 20ns
所以序列二的执行速度比序列一快10ms
8)字长 – 指的是计算机内部一次可以处理的二进制数据位数;存储字-存放在一个存储单元中的二进制代码组合;存储字长 – 存放在一个存储单元中二进制的位数
9)CPU的CPI与 系统结构、指令集、计算机组织有关
二、重点题、错题汇总
竟成习题
题目类型 | 题号 | 备注 |
计算机系统层次结构(选择题) | 1-D | |
2-D | ||
3-C | ||
6-C | ||
13 | ||
14 | 直接执行微指令的是硬件 | |
18-D | ||
计算机系统层次结构真题(选择题) | 20-C | |
21 | ||
22 | ||
23-C | ||
计算机性能指标 | 1 | 时钟周期、指令周期、CPU周期、执行周期 |
3 | CPI | |
4-A | CPU的主频是指机器内部主时钟周期 | |
6、7、9、10 | 计算重点题 | |
11 | CPI的公式计算 | |
12 | 假设程序有x条指令,关键的解题步骤 | |
三、习题(王道)
A 思考题
3.1 计算机由哪几部分组成?以哪部分为中心?
计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成;现代计算机把运算器和控制器集成在一个芯片上,合称中央处理器
在微处理器面世之前,运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的发展,同时计算机需要处理、加工的信息量也与日俱增,大量I/0 设备的速度和 CPU 的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已发展为以存储器为中心,使 I/O 操作尽可能地绕过 CPU,直接在 IO 设备和存储器之间完成,以提高系统的整体运行效率。
3.2 主频高的CPU一定比主频低的CPU快吗?为什么?
衡量 CPU运算速度的指标有很多,不能以单独的某个指标来判断 CPU的好坏。CPU 的主频表示 CPU 内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为 CPU 的运算速度还要看 CPU 的流水线的各方面的性能指标(架构、缓存、指令集、CPU 的位数、Cache 大小等)。主频并不直接代表运算速度,因此在一定情况下很可能出现主频较高的 CPU 实际运算速度较低的现象。
3.3 翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
翻译程序有两种:
- 一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。
- 另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。
编译程序与汇编程序的区别:
- 若源语言是诸如C、C++、Java 等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。
- 若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。
3.4 不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
机器语言和汇编语言与机器指令对应
而高级语言不与指令直接对应,具有较好的可移植性。
其中机器语言编写的程序可以被硬件直接执行。
B 易混淆知识点
3.5 什么是透明性?透明是指什么都能看见吗?
在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不到某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。这与日常生活中的“透明”概念(公开、看得见)正好相反。
例如,对于高级语言程序员来说,浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算等都是透明的,在 CPU 中,IR、MAR 和 MDR对各类程序员都是透明的。
而对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等则不是透明的。
3.6 字、字长、机器字长、指令字长、存储字长的区别和联系是什么?
- 字长是指 CPU 内部用于整数运算的数据通路的宽度,因此字长等于 CPU 内部用于整数运算的运算器位数和通用寄存器宽度,它反映了计算机处理信息的能力。
- 字和字长的概念不同。字用来表示被处理信息的单位,用来度量数据类型的宽度,
- 如x86 机器中将一个字定义为 16 位。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的位数。
它们都必须是1字节的整数倍。 - 指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令;
- 若指令字长等于存储字长,则取指令周期等于机器周期。
- 早期的存储字长一般与指令字长、字长相等,因此访问一次主存储器便可取出一条指令或个数据。随着计算机的发展,指令字长、字长都可变,但必须都是字节的整数倍。
3.7 计算机体系结构和计算机组成的区别和联系是什么?
计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含许多对程序员来说透明的硬件细节。
- 例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器的指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,则完全可以不同,即可以认为它们的组成方式是不同的。
- 例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。
许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别,即使是同一系列的不同型号机器,其性能和价格差异也很大。
3.8 基准程序执行得越快说明机器的性能越好吗?
一般情况下,基准测试程序能够反映机器性能的好坏。但是,基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
C 选择题
D 综合题
四、计算机组成原理教材(唐朔飞)
4.1 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?
计算机系统:由计算机硬件和软件两部分组成,计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。
计算机硬件:所谓“硬件”,是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成,如主机、外部设备等;
计算机软件:所谓“软件”它看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成,包括各种程序和文档,如系统软件,应用软件等;
计算机的硬件和计算机软件是相互依赖,相互限制的,没有重要和不重要之分。没有软件的计算机是没有灵魂的,只是一堆机器;没有硬件的计算机只是一个幻想,没有任何作用。
4.2 如何理解计算机系统的层次结构?
把计算机系统结构按功能划分为多个层次,有利于正确理解计算机系统的工作;同时也有利于明确软件、硬件和固件在计算机系统中的地位和作用;层次结构使得各个层次的分工更加明确,容易纠错和升级;有利于理解各种语言的实现及其性质;有利于探索新的虚拟机实现方法,设计新的计算机系统。
4.3 说明高级语言、汇编语言和机器语言的差别及其联系。
高级语言是面向用户的,用高级语言编写的程序称做高级语言源程序,必须翻译成机器语言目标程序才能被计算机执行;
汇编语言:能反映指令功能的助记符表达的计算机语言称汇编语言,它出现在机器语言之前;
机器语言:是计算机唯一能接受和执行的语言。机器语言由二进制码组成,每一串二进制码称做一条指令;
其中只有高级语言是面向用户的,汇编语言和机器语言都是面向机器的。高级语言和汇编语言要经过编译器翻译成机器语言才能被计算机所识别。
4.4 如何理解计算机组成和计算机体系结构?
计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含许多对程序员来说透明的硬件细节。
- 例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器的指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,则完全可以不同,即可以认为它们的组成方式是不同的。
- 例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。
许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别,即使是同一系列的不同型号机器,其性能和价格差异也很大。
4.5 冯·诺依曼计算机的特点是什么?
冯·诺依曼在研究EDVAC机时提出了“存储程序”的概念。以此概念为基础的各类计算机通称为冯·诺依曼计算机,除了存储程序这个最大的特点以外,它的其他主要特点是
(1)计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成;
(2)指令和数据以同等地位存放于存储器内,并可以按地址访问
(3)指令和数据均用二进制表示;
(4)指令由操作码、地址码两大部分组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;
(5)指令在存储器中顺序存放,通常自动顺序取出执行;
(6)机器以运算器为中心(原始冯·诺依曼机)
4.6 画出计算机硬件组成框图,说明各部件的作用及计算机硬件的主要技术指标。
1、运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内;
2、存储器用来存放数据和程序:
3、控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果;
4、输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等;输出设备可将机器运算结果转换为人们熟悉的信息形式,如打印机输出、显示器输出等。
4.7 解释概念:主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。
1、主机:是计算机硬件的主体部分,CPU与主存储器合起来又可称为主机;
2、CPU:中央处理器,是计算机硬件的核心部件,由运算器和控制器组成(早期的运算器和控制器不在同一芯片上,现在的CPU内除含有运算器和控制器外还集成了Cache);
Cache 是 高速、小容量的 SRAM 存储器,位于 CPU 与主存之间,用于缓存 CPU 近期高频访问的指令 / 数据(利用程序局部性原理加速访存)。
3、主存:计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取,由存储体、各种逻辑部件及控制电路组成;
4、存储单元:可存放一个机器字并具有特定存储地址的存储单位;
5、存储元件:存储一位二进制信息的物理元件,是存储器中最小的存储单位,又称存储基元或存储元,不能单独存取;
6、存储基元:存储基元即存储元件,是存储单元的分支,能寄存一位二进制代码“1”或“0”,又称存储元件,存储元;
7、存储基元 = 存储元;
8、存储字:一个存储单元所存二进制代码的逻辑单位;
9、存储字长:一个存储单元所存二进制代码的位数;
10、存储容量:存储器中可存二进制代码的总量;
11、机器字长:指CPU一次能处理的二进制数据的位数;
12、指令字长:一条指令的二进制代码位数。
4.8 解释英文代号:CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/0、MIPS、CPI、FLOPS。
1、CPU:Central Processing Unit,中央处理机(器),是计算机硬件的核心部件,主要由运算器和控制器组成。
2、PC:Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数形成下一条指令地址。
3、IR:Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。
4、CU:ControlUnit,控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。
5、ALU:Arithmetic Logic Unit,算术逻辑运算单元,为运算器的核心部件,其功能是进行算术、逻辑运算。
6、ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。
7、MQ:Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。
8、X:此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;
9、MAR:Memory Address Register,存储器地址寄存器,在主存中用来存放欲访问的存储单元的地址
10、MDR:Memory Data Register,存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。
11、I/O:Input/0utput equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送。
12、MIPS:MillionInstruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。
13、CPl:Clock CyclePerInstruction,表示执行某个程序的指令平均时钟周期数。
14、FLOPS:Floating-point 0perations Per Second,每秒所执行的浮点运算次数。
4.9 画出主机框图,分别以存数指令“STA M”和加法指令“ADD M”(M均为主存地址)为例,在图中按序标出完成该指令(包括取指阶段)的信息流程(如—①—>)。假设主存容量为256Mx32位,在指令字长、存储字长、机器字长相等的条件下,指出图中各寄存器的位数。
(1)STA 指令(存数指令,将 ACC 内容写入内存地址 Ad(IR)
)
PC→MAR, // 取指令:程序计数器→地址寄存器
MAR→MM, // 地址→内存
MM→MDR, // 内存读指令→数据寄存器(隐含 RD 控制)
MDR→IR, // 指令→指令寄存器
OP(IR)→CU, // 指令译码→控制单元产生存数控制信号
Ad(IR)→MAR,// 操作数地址→地址寄存器
ACC→MDR, // ACC 数据→数据寄存器
MAR→MM, // 操作数地址→内存
WR; // 写内存(MDR 内容写入内存)
(2)ADD 指令(加法指令,将内存地址 Ad(IR)
中的数加到 ACC,结果存 ACC)
PC→MAR, // 取指令:程序计数器→地址寄存器
MAR→MM, // 地址→内存
MM→MDR, // 内存读指令→数据寄存器(隐含 RD 控制)
MDR→IR, // 指令→指令寄存器
OP(IR)→CU, // 指令译码→控制单元产生加法控制信号
Ad(IR)→MAR,// 操作数地址→地址寄存器
RD, // 读内存(触发内存输出操作数)
MM→MDR, // 内存操作数→数据寄存器
MDR→X, // 操作数→暂存器 X
ALU(ACC, X)→ACC; // ALU 执行 ACC + X,结果→ACC
- MAR:28 位(因存储容量
256M = 2²⁸
,地址线需覆盖全空间)。 - MDR、IR、ACC、ALU:32 位(存储字长 = 机器字长 = 32 位,对应数据宽度)。
- PC:28 位(存指令地址,与 MAR 地址范围一致)。
(注:框图可通过硬件模块连接直观呈现,核心是 地址流(PC→MAR→存)、指令流(存→MDR→IR)、数据流(ACC/MDR↔ALU / 存) 的时序控制,由译码器和控制器协调。)
该题注意点:
在计算机微操作描述中,方括号 []
的使用核心是区分「寄存器字段提取」和「全内容传输」,具体规则如下:
一、加方括号 [ ]
的场景
1. 提取寄存器内的 “字段 / 部分内容”
指令寄存器 IR
内部包含 操作码(OP)、地址码(Ad) 等位段(字段),需明确提取某字段时,用 [IR]
标记 “从 IR 中解析该字段”:
OP[IR]
:从IR
中提取 操作码字段(供控制单元CU
译码)。Ad[IR]
:从IR
中提取 地址码字段(供寻址内存 / 寄存器)。
→ 本质:针对 寄存器内部的局部位段访问,方括号表示 “解析寄存器的结构,提取特定字段”。
二、不加方括号的场景
1. 传输寄存器的 “完整内容”
当操作是 整个寄存器的值传递(而非提取局部字段),直接写寄存器名,默认操作其 “全部内容”:
- 寄存器→寄存器:如
PC→MAR
(程序计数器PC
的完整内容 → 内存地址寄存器MAR
)。 - 寄存器→总线 / 设备:如
MAR→MM
(MAR
的完整内容 → 内存地址总线MM
)、ACC→MDR
(累加器ACC
的完整内容 → 内存数据寄存器MDR
)。
关键区分:“字段提取” vs “全内容传输”
操作类型 | 示例 | 加 / 不加 [] 原因 |
---|---|---|
提取 IR 内的字段 | OP[IR]→CU | 只取 IR 里的 “操作码”(局部) |
全寄存器内容传输 | PC→MAR | 传 PC 的 “全部值”(整体) |
简单记忆法则
- ✅ 加
[]
:仅针对 指令寄存器IR
,提取其内部的OP
、Ad
等字段时用。 - ❌ 不加
[]
:对PC
、MAR
、ACC
等普通寄存器,传输其完整内容时直接写寄存器名。
(例外:若其他寄存器也设计为 “多字段结构”,提取其字段时也需加 []
,但经典体系结构中仅 IR
常规拆分为 OP、Ad 字段。)
4.10 根据所编写的程序简述计算机的解题过程
# 1. 输入数据
x = float(input("请输入待求平方根的正数 x:"))
eps = float(input("请输入精度要求 ε(如 1e-6):"))
# 2. 初始化迭代变量
y = 1.0 # 初值 y₀=1
# 3. 迭代计算
while True:
y_new = (y + x / y) / 2 # 迭代公式:yₙ₊₁ = (yₙ + x/yₙ)/2
if abs(y_new - y) < eps: # 判断是否满足精度要求
break # 满足则退出循环
y = y_new # 不满足则更新迭代变量,继续循环
# 4. 输出结果
print(f"√{x} 的近似值为:{y_new:.8f}")
主要有以下步骤:
1、取 x 到 ACC
2、加 1 存于 AC
3、除 2 存于MQ,又[MQ] -> 主存单元m
4、取 x 到 ACC;
5、将y1从m中取出,执行[m] -> x ,[ACC] ➗ [x] -> MQ, 得x/yn;
6、[MQ]->ACC,执行yn +x/yn,即[ACC] +[x] -> ACC;
7、除2 得结果于MQ,又[MQ] -> ACC,MQ -> m;
8、[ACC] – [x] -> ACC,然后判断ACC 与 ε的大小,若【ACC】的绝对值小于等于ε,则到 9, 否则返回
9、打印【m】
10、停机
4.11 指令和数据都存于存储器中,计算机如何区分它们?
计算机区分指令和数据有以下2种方法
- 1、通过不同的时间段来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据;
- 2、通过地址来源区分,由PC程序计数器提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。
4.12 什么是指令?什么是程序?
指令:指令是机器完成某种操作的命令,典型的指令通常包括操作码和地址码两部分。
- 操作码用来指出执行什么操作(如加、传送);
- 地址码用来指出操作数在什么地方;
程序:程序是软件开发人员根据用户需求开发的,用程序设计语言描述的,适合计算机执行的指令(语句)序列,所以说程序是众多指令的集合。
五、习题(竟成)
5.1 计算机系统层次结构(选择题)
5.2 计算机性能指标(选择题)
本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客