第1章 · 播客 第2集
计算机组成与体系结构 · 总线与存储器基础
🎙️ 本集播客:第2集:总线的分时共享与两套分类、存储三级体系为何存在、时间与空间局部性怎么分、四种存取方式配四种设备、SRAM 与 DRAM 的四组对比,最后把内存编址例题(AC000H 到 C7FFFH)一步一步算穿。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
雅
小雅
上一集把部件和指令系统啃完了,这一集换个方向:数据往哪放、怎么放得快。先从总线开始,它的定义里有两个词是考点——总线是一组能为多个部件分时共享的公共信息传送线路。
明
阿明
共享我懂,分时是啥意思?
雅
小雅
原文把两个词分开解释了。共享是指总线上可以挂接多个部件,各部件之间相互交换的信息都可以通过这组公共线路传送;分时是指同一时刻只允许有一个部件向总线发送信息,如果出现两个或两个以上部件同时发送,势必导致信号冲突。但注意后半句——在同一时刻,允许多个部件同时从总线上接收相同的信息。
明
阿明
所以「发」只能一个,「收」可以多个。这个区别像是判断题的料。
雅
小雅
正是。总线分类有两套,别混。按相对于 CPU 或其他芯片的位置,分内部总线和外部总线:CPU 内部,寄存器之间、以及算术逻辑部件 ALU 与控制部件之间传输数据所用的总线叫内部总线;外部总线是 CPU 与内存 RAM、ROM 和输入输出设备接口之间进行通信的通路。
雅
小雅
按功能划分是另一套,分三类:地址总线用来传送地址信息,数据总线用来传送数据信息,控制总线用来传送各种控制信号。考题问「按总线功能划分,用于传送地址信息的总线是」,答地址总线——这题看着白送,但如果你脑子里两套分类是糊的,看到「内部总线」这个选项就可能犹豫。
明
阿明
那还有句关于性能的话吧?我印象里有个「最大因素」。
雅
小雅
记得很准。原文说:由于 CPU 通过总线实现程序取指令、内存和外设的数据交换,在 CPU 与外设一定的情况下,总线速度是制约计算机整体性能的最大因素。「最大因素」这种绝对化表述通常是错项,但这句是原文原话,反而是对的。
明
阿明
行。那存储器系统为什么要搞三级,直接全用最快的不行?
雅
小雅
问到根子上了。传统存储器系统一般分高速缓冲存储器 Cache、主存、辅存三级。主存可由 CPU 直接访问,存取速度快但容量较小,存放当前正在执行的程序和数据;辅存设置在主机外部,存储容量大、价格较低但存取速度较慢,存放暂时不参与运行的程序和数据——注意,CPU 不可以直接访问辅存,辅存中的程序和数据在需要时才传送到主存,所以它是主存的补充和后援。
明
阿明
CPU 不能直接访问辅存,这条我记住了。Cache 呢?
雅
小雅
当 CPU 速度很高时,为了让访问存储器的速度能与 CPU 速度相匹配,又在主存和 CPU 间增设了一级 Cache。Cache 存取速度比主存更快,但容量更小,存放当前最急需处理的程序和数据。至于你问的「为什么不全用快的」——原文答得很直接:高速存储器能以极高速率访问,但价格高昂,如果内存完全由这种高速存储器组成,会大大增加计算机成本。
明
阿明
那多级体系凭什么能用便宜的换来快的?听着像白拿。
雅
小雅
凭局部性原理,这是必考概念。局部性原理是指程序执行时呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地它所访问的存储空间也仅局限于某个区域。它分两种,你必须能一眼分开。
雅
小雅
时间局部性:程序中的某条指令一旦执行,不久以后该指令可能再次执行;产生时间局部性的典型原因,是程序中存在着大量的循环操作。空间局部性:一旦程序访问了某个存储单元,不久以后其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,典型情况是程序顺序执行。
明
阿明
所以「一旦某条指令执行,不久后可能再次执行」这句问的是时间局部性?
雅
小雅
对,原题就这么问,答时间局部性。抓两个关键词就不会错:时间局部性的标志是「同一个东西再次被用」,背后是循环;空间局部性的标志是「附近的东西被用」,背后是顺序执行。看到「循环」想时间,看到「顺序、邻近」想空间。
明
阿明
清楚。存取方式那四种呢,我老把直接和随机搞反。
雅
小雅
四种连设备一起背,题目往往给设备问方式,或给方式问设备。顺序存取:数据以记录的形式组织,访问必须按特定的线性顺序进行,磁带存储器采用这种方式。直接存取:也使用一个共享的读写装置对所有数据访问,但每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块所在位置进行访问,存取时间也是可变的,磁盘存储器采用这种方式。
雅
小雅
随机存取:每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关,主存储器采用这种方式。相联存取:也是一种随机存取的形式,但选择某一单元进行读写是取决于其内容而不是其地址,可以对所有存储单元的特定位进行比较,选择符合条件的单元进行访问;为了提高地址映射的速度,Cache 采取相联存取的方式。
明
阿明
记法有了:磁带顺序、磁盘直接、主存随机、Cache 相联。直接和随机的差别是「时间可变」还是「等时」。
雅
小雅
非常准。差别就在这句:直接存取的存取时间是可变的,随机存取是相同时间、与先前访问序列无关。接着说主存里两种 RAM,这是高频对比题。
明
阿明
DRAM 和 SRAM,我只记得一个要刷新。
雅
小雅
先说共性:随机存取存储器 RAM 既可以写入也可以读出,但断电后信息无法保存,因此只能用于暂存数据。再分开:DRAM 是动态 RAM,它的信息会随时间逐渐消失,因此需要定时对其进行刷新维持信息不丢失;SRAM 是静态 RAM,在不断电的情况下信息能够一直保持而不会丢失。
雅
小雅
然后是四组对比,考试就考这几组:DRAM 的密度大于 SRAM,且更加便宜;SRAM 速度快、电路简单,因为不需要刷新电路,然而容量小、价格高。所以「SRAM 需要定时刷新」是错的,「DRAM 比 SRAM 便宜」是对的,「SRAM 容量大」也是错的。
明
阿明
快而贵而小是 SRAM,慢而便宜而密是 DRAM。那 ROM 呢?
雅
小雅
只读存储器 ROM 可以看作 RAM 的一种特殊形式,特点是存储器的内容只能随机读出而不能写入,常用来存放那些不需要改变的信息。由于信息一旦写入就固定不变,即使断电写入的内容也不会丢失,所以又称为固定存储器。ROM 一般用于存放系统程序 BIOS,也就是基本输入输出系统。
明
阿明
接下来是不是那道内存编址的计算题了?我每次算到一半就懵。
雅
小雅
那我一步一步算给你听。先记大前提:存储器中每个单元的位数是相同且固定的,称为存储器编址单位;编址方式主要有字编址和字节编址,内存一般以字节即 8 位为单位,或者以字为单位——字的长度可大可小,例如 16 位或者 32 位,这类试题一般会给出字的大小。
雅
小雅
题目:内存地址从 AC000H 到 C7FFFH。第一步求地址单元数,用末地址减首地址:C7FFFH 减 AC000H 等于 1BFFFH 个地址单元,转换成十进制就是 112KB。第二步,如果该内存地址按字编址、字是 16 位,那么共有 112KB 乘 16 位。
明
阿明
所以按字编址就是把单元数再乘上每字的位数。第三步呢?
雅
小雅
第三步是反过来求芯片规格。假设该内存由 28 片存储器芯片构成,已知每片有 16KB 个存储单元,问该芯片每个存储单元存储多少位。列式就是:总位数除以总单元数——112KB 乘 16,再除以 28 乘 16KB,等于 4 位。
明
阿明
分子是整个内存的总位数,分母是 28 片乘每片 16KB 个单元的总单元数,一除就是每单元的位数。这么拆我就懂了。
雅
小雅
对,这类题的通用套路就是:先用末地址减首地址得单元数,再按编址方式换算总位数,最后总位数除以总单元数得每单元位数。换个数字也是这三步。
明
阿明
这集的计算我跟上了:末地址减首地址、按编址换总位数、再除总单元数。
雅
小雅
本集必背收一下:总线是分时共享,发只能一个、收可以多个,按功能分地址、数据、控制三类,总线速度是制约整体性能的最大因素;CPU 不能直接访问辅存;时间局部性对应循环、空间局部性对应顺序执行;磁带顺序、磁盘直接、主存随机、Cache 相联;SRAM 快而贵而小、DRAM 密而便宜要刷新。下一集进硬盘和 Cache,那三组标记位是本章最硬的计算题。