第1章 · 播客 第1集
计算机组成与体系结构 · 计算机组成与指令系统
🎙️ 本集播客:第1集:从「五大部件到底是五个还是六个」这个坑开始,把控制器四件套、运算器四件套逐一辨清,讲透冯·诺依曼存储程序、Flynn 四分类和 CISC/RISC 的每一条特征——都是选择题的直接取材点。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
雅
小雅
阿明,先来一道送分题:存储程序概念里说的计算机五大基本部件,你背给我听。
明
阿明
控制器、运算器、主存、辅存、输入设备、输出设备——诶,怎么六个了。
雅
小雅
这就是第一个坑,年年有人栽。原文写得很清楚:五大基本部件是运算器、存储器、控制器、输入设备和输出设备。主存和辅存合起来算一个「存储器」,你把它拆成两个就多出一个来。记住这个数,选择题里「以下哪个不属于五大基本部件」的干扰项经常就拿主存辅存来做。
明
阿明
行吧,那这章我本来还想跳过——架构师还要管硬件?
雅
小雅
原文开头就把这个想法怼回去了:也许有人认为架构师不需要硬件或底层原理的知识,因为这层往往已经封装好了。但事实并非如此——系统是构建在硬件与操作系统之上的,不对底层有认识,会导致一系列安全与性能问题。这句话本身就能出简答题。
明
阿明
懂了,我不跳。那先从控制器开始?
雅
小雅
对。控制器是分析和执行指令的部件,也是统一指挥、控制各部件协调工作的中心部件,它所依据的是机器指令。它下面四个组成:程序计数器 PC,存储下一条要执行指令的地址;指令寄存器 IR,存储即将执行的指令;指令译码器 ID,对指令中的操作码字段进行分析解释;时序部件,提供时序控制信号。
明
阿明
PC 和 IR 我总记混,一个存地址一个存指令,考试怎么问?
雅
小雅
问法就一句:「在控制器中,用于存储下一条要执行指令地址的部件是?」答案是程序计数器 PC。你要在四个选项里同时排掉三个干扰项:IR 存的是即将执行的那条指令本身,不是地址;ID 是对操作码字段做分析解释,它不存东西;而累加寄存器 AC——注意——AC 根本不属于控制器,它是运算器的部件。这道题的杀招就是把 AC 混进控制器的选项里。
明
阿明
好毒。所以看到 AC 出现在「控制器中」的题干里,直接排除。
雅
小雅
对。顺着说运算器。运算器也叫算术逻辑单元 ALU,主要功能是在控制器的控制下完成各种算术运算和逻辑运算。它也是四个组成:算术逻辑单元 ALU,做数据的算术运算和逻辑运算;累加寄存器 AC,是通用寄存器,为 ALU 提供一个工作区,用来暂存数据;数据缓冲寄存器 DR,写内存时暂存指令或数据;状态条件寄存器 PSW,存状态标志与控制标志。
明
阿明
四对四,挺整齐。这里面有没有像 AC 那样的暗坑?
雅
小雅
有,就是 PSW。原文专门标了这是个争议点:也有把状态条件寄存器 PSW 归为控制器的。所以如果题目问「PSW 属于哪个部件」,两种答案都有出处,考试时看选项——如果选项里只有运算器没有控制器,就选运算器;反过来也一样。这种被教材自己标注了争议的点,出题人一般会避开,但你得知道它两边都站得住。
明
阿明
那存储器和输入输出设备呢,这几个听起来最没悬念。
雅
小雅
主存也叫内存储器,存放现场操作的信息与中间结果,包括机器指令和数据;辅存也叫外存储器,存放需要长期保存的各种信息。输入设备把编好的程序和原始数据送进计算机,并转换成计算机内部能识别接受的信息方式,按输入信息形态分字符输入、图形输入、图像输入、语音输入,常见的是键盘鼠标扫描仪;输出设备把处理结果以人或其他设备能接受的形式送出,最常用的是打印机和显示器。
雅
小雅
这里还埋着一个小考点:有些设备既可以是输入设备,同时也可以是输出设备。原文给了两个例子——辅助存储器,以及自动控制和检测系统中使用的数模转换装置。判断题问「输入设备和输出设备是严格互斥的吗」,答案是否。
明
阿明
记下了。接下来该冯·诺依曼了吧,这个名字每年都出现。
雅
小雅
先说一个最爱考的方向性问题。原始的冯·诺依曼计算机在结构上是以运算器为中心的,而发展到现在,已经转向以存储器为中心了。这道题的四个选项一般就是控制器、运算器、存储器、输入设备,问「原始的」就选运算器,问「现代的」就选存储器。看清题干那两个字,一秒得分。
明
阿明
这也太容易看漏了。存储程序概念本身呢?
雅
小雅
存储程序的概念是冯·诺依曼等人于 1946 年 6 月首先提出来的,记住这个时间。它概括为三点:第一,计算机也就是硬件,应由运算器、存储器、控制器、输入设备和输出设备五大基本部件组成;第二,计算机内部采用二进制来表示指令和数据;第三,将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作——这第三点就是存储程序的基本含义。
明
阿明
所以他最大的贡献就是这个「事先存进去」?
雅
小雅
原文的定性很明确:冯·诺依曼对计算机世界的最大贡献,在于「存储程序控制」概念的提出和实现。六十多年来虽然计算机发展速度惊人,但就结构原理来说,目前绝大多数计算机仍建立在存储程序概念的基础上。符合存储程序概念的计算机统称冯·诺依曼型计算机。
明
阿明
那它有没有缺点?总不能六十年都没毛病。
雅
小雅
问得好,缺点正是考点。随着技术发展,冯·诺依曼型计算机暴露出主要弱点:存储器访问会成为瓶颈。已经出现了一些突破存储程序控制的计算机,统称非冯·诺依曼型计算机。原文给了三个例子,你把「驱动方式」和「机器名」配对记:数据驱动的数据流计算机、需求驱动的归约计算机、模式匹配驱动的智能计算机。考试爱把这三组打乱重配,比如说成「需求驱动的数据流计算机」,那就是错的。
明
阿明
数据驱动配数据流、需求驱动配归约、模式匹配配智能。三对。
雅
小雅
接着是 Flynn 分类,这块必考。1966 年 Michael J. Flynn 提出根据指令流、数据流的多倍性特征对计算机系统分类。先把两个定义抠准:指令流,指机器执行的指令序列;数据流,指由指令流调用的数据序列,包括输入数据和中间结果,但不包括输出数据。
明
阿明
等等,数据流不包括输出数据?我一直以为进出都算。
雅
小雅
这就是判断题的原材料——「数据流包括输入数据、中间结果和输出数据」,错。包括输入数据和中间结果,不包括输出数据。这一句你单独背下来。
明
阿明
那 SISD、SIMD、MISD、MIMD 四个,怎么区分才不混?
雅
小雅
一个一个来。SISD 单指令流单数据流,其实就是传统的顺序执行的单处理器计算机,它的指令部件每次只对一条指令译码,并且只对一个操作部件分配数据。SIMD 单指令流多数据流,以并行处理机也就是矩阵处理机为代表,并行处理机包括多个重复的处理单元,由单一指令部件控制,按同一指令流的要求为它们分配各自所需的不同数据。
明
阿明
所以 SIMD 的关键是「一个指令部件、多份不同数据」。MISD 呢?
雅
小雅
MISD 多指令流单数据流,具有 n 个处理单元,按 n 条不同指令的要求,对同一数据流及其中间结果进行不同的处理,一个处理单元的输出又作为另一个处理单元的输入。这里有两个必须记的补充:原文说这类系统实际上很少见到;另外有文献把流水线看作多个指令部件,称流水线计算机是 MISD。
明
阿明
「实际很少见」这句居然也是考点?
雅
小雅
是,问「以下哪类在实际中很少见到」,答 MISD。最后 MIMD 多指令流多数据流,是指能实现作业、任务、指令等各级全面并行的多机系统,多核处理器、多处理机属于 MIMD。所以问「多核处理器属于 Flynn 分类的哪一类」,答案是 MIMD,别被 SIMD 带走——SIMD 是并行处理机、矩阵处理机。
明
阿明
多核=MIMD,并行处理机=SIMD,单处理器=SISD,很少见的=MISD。这四条我背死。
雅
小雅
最后一块,CISC 和 RISC。先说这两者的由来:指令系统的优化设计有两个截然相反的方向。一个是增强指令功能、设置一些功能复杂的指令,把原来由软件实现的常用功能改用硬件的指令系统来实现,这就是复杂指令系统计算机 CISC;另一个是尽量简化指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,较复杂的功能用一段子程序来实现,这就是精简指令系统计算机 RISC。
明
阿明
CISC 的特点里有几个数字吧,我记得考过。
雅
小雅
六条,数字有三处。第一,指令数量众多,通常有 100 到 250 条。第二,指令使用频率相差悬殊——最常使用的是一些比较简单的指令,仅占指令总数的 20%,但在程序中出现的频率却占 80%,而大部分复杂指令很少使用。第三,支持很多种寻址方式,通常为 5 到 20 种。第四,变长的指令,指令长度不固定,变长会增加指令译码电路的复杂性。第五,指令可以对主存单元中的数据直接进行处理,执行速度较慢。第六,以微程序控制为主,因为指令系统很复杂,难以用硬布线逻辑电路实现控制器。
明
阿明
20% 占 80% 这个数字方向别记反——是少数简单指令被高频使用。
雅
小雅
对,方向反了就是错项。再看 RISC,它的总目标是:要求指令系统简化,操作在单周期内完成,指令格式力求一致,寻址方式尽可能减少,并提高编译的效率,最终加快机器处理速度。这句总纲能覆盖一半的选项。
明
阿明
那 RISC 的七条特点,逐条来吧,考「以下关于 RISC 描述错误的是」这种题我最容易掉。
雅
小雅
逐条给你。第一,指令数量少,优先选取使用频率最高的简单指令和常用指令,避免复杂指令;而且只提供 LOAD 从存储器中读数和 STORE 把数据写入存储器这两条指令对存储器操作,其余所有操作都在 CPU 的寄存器之间进行。第二,指令的寻址方式少,通常只支持寄存器寻址、立即数寻址和相对寻址。第三,指令长度固定、指令格式种类少,因为数量少格式少,各字段划分比较一致,译码相对容易。
雅
小雅
第四,以硬布线逻辑控制为主,为提高执行速度通常采用硬布线逻辑也就是组合逻辑来构建控制器——注意这条正好和 CISC 的微程序控制相反,是最常考的对比点。第五,单周期指令执行、采用流水线技术,因为简化了指令系统,很容易利用流水线,使大部分指令都能在一个机器周期内完成;少数指令可能需要多周期,例如 LOAD 和 STORE 因为要访问存储器,执行时间就会长一些。
明
阿明
所以「RISC 所有指令都在一个周期内完成」这种说法是错的?
雅
小雅
错,因为 LOAD/STORE 要访存,会长一些。原文用的是「大部分指令」。这就是典型的绝对化错项。继续第六,优化的编译器——精简指令集使编译工作简单化,指令长度固定、格式少、寻址方式少,编译时不必在相似功能的许多指令中选择,也不必为寻址方式费心,同时易于实现优化,可以生成高效率执行的机器代码。第七,CPU 中的通用寄存器数量多,一般在 32 个以上,有的可达上千个。
明
阿明
32 个以上,上千个。还有 Cache 那句吧?
雅
小雅
对,收尾这句也考:大多数 RISC 采用了 Cache 方案,使用 Cache 来提高取指令的速度;而且有的 RISC 使用两个独立的 Cache 来改善性能,一个称为指令 Cache,另一个称为数据 Cache,这样取指令和取数据可以同时进行、互不干扰。
明
阿明
指令 Cache 加数据 Cache,所以能并行不打架。这集信息量真够大。
雅
小雅
把本集必背清一遍:五大基本部件是五个不是六个,主存辅存合并算存储器;PC 存下一条指令地址、IR 存即将执行的指令、ID 译码操作码、AC 属于运算器不属于控制器;原始冯·诺依曼以运算器为中心、现代以存储器为中心,存储程序 1946 年 6 月提出、瓶颈是存储器访问;Flynn 的数据流不含输出数据,多核是 MIMD、并行处理机是 SIMD、MISD 很少见;CISC 是 100 到 250 条指令、20% 占 80%、寻址 5 到 20 种、微程序控制,RISC 是只有 LOAD 和 STORE 访存、定长指令、硬布线控制、通用寄存器 32 个以上。
明
阿明
这一集把我以前糊在一起的全拆开了,选项陷阱也心里有数了。
雅
小雅
后面还有三集:先讲总线、存储三级体系和局部性原理,再讲硬盘和 Cache 三种映射的标记位怎么算,最后是替换写策略和流水线那几个必考公式——例题我会一步一步算给你听,那才是真拉分的地方。