比较可惜的是,从这章开始,这门课的内容就讲得很不细致了。很多内容只能从一个很高的层次进行介绍,无法深入细节。一旦讲到了偏硬件的东西,由于难以进行实践,又和数学等理科知识关系不大,和电路等学科关系密切,课本就只能划水。
计算机组成原理复习:第五章 存储系统和结构
本章先从整体上介绍了计算机的存储结构,再着重介绍主存的存储思想以及具体的主存种类。之后讲了多个主存储器是如何构成一个系统的。最后稍微介绍了一些其他cache、虚拟内存等内容。
我只针对复习PPT提到的重点和我们课后习题涉及到的内容进行复习。
主存储器的组织
这一节围绕主存是如何存储数据的,介绍了主存储器整体的工作原理,和前面编码的内容有一些关联。主存储器本身的结构在后面的小节里介绍。
存储单元
数据的最小单位是位,被叫做存储位。按位存取效率太低,多个存储位在一起就成了存储字,这是访问的最小单元。存存储字的结构叫存储单元,地址和存储单元是一一对应的。大量存储单元构成了存储体。
主存部分技术指标
存取时间
执行一次读或写操作的时间。
存取周期
两次执行访问操作的间隔时间。因为除了完成存取操作外,主存内部还有一些其他的操作,存取周期一般略大于存取时间。
带宽
等于主存等效工作频率乘主存位宽。
数据在主存的存放
可能出现主存的存储字长比较大,而计算机传来的数据比较小的情况。比如主存的存储字长是64位,而计算机传来的数据可能是8~64位的。如何存这些数据是一个问题:
如果每个数据紧挨着存,那么主存空间没有浪费。但是万一一个存储字剩余容量较小,突然来了一个64位数据,那么这个数据就得拆成两半,存在两个存储字里了。
如果每个数据都存在一个存储字里,那就太浪费了。如果所有数据都是一个字节,那么大量的空间要被浪费。
因此,边界对齐的存取法被提出。这种方法综合了以上两种方法的优点。比如,在存储字为64位的主存储器里,64位数据只能从一个存储字开头从,32位数据只能从半个存储字开头存,16位位数据只能从四分之一个存储字开头存。
主存储器结构与工作原理
这一节前面讲了很多和电路的东西,我们缺乏基础知识,学不懂。我只复习DRAM的刷新以及RAM芯片的一些参数。
DRAM的刷新
由于DRAM电路的问题,需要经常刷新才能维护数据。
注意,刷新是指对每个芯片的刷新。芯片一般会排成正方向阵列,比如16K的芯片,就会排成128*128。之后谈到的按行刷新,这个“行”指的就是128。刷新就等于读了一遍,因此刷新周期等于读写周期。这个刷新周期是以行为单位的。
为了提高整体的工作效率,有几种不同的刷新策略:
集中刷新
在最大允许的刷新间隔内,把工作分成两个阶段:读写操作和刷新。在所有读写操作执行一段时间后,集中刷新所有的存储芯片,再继续读写。等于说每个刷新间隔构成了一个循环的工作周期。
分散刷新
每次读或写之后,立刻刷新。也就是读写操作和刷新绑定。这样可以保证内存正常,但是刷新过于频繁,读写周期变长,没有充分利用最大允许刷新间隔
异步刷新
异步刷新综合以上两种方法,把主存按行分组。先做一会儿读写操作,就停下来刷新第一行;再做一会儿读写操作,就刷新第二行……。在最大允许刷新间隔内,把所有行都刷新一遍。
课本上对以上三种方法都画了一个图,看了图就很好理解。
RAM芯片引脚
- 地址线
- 数据线
- 片选线 CS
- 读写控制线 WE
- Vcc 电源
- GND 地
其中片选线的意思可能不能通过字面来理解。片选线决定该芯片是否工作。
上述引脚的字母打的不是很准确。这篇文章我不打算渲染公式,所以就简单写一下。
先复习一下这些引脚是因为之后的内容会用到。
主存储器的连接与控制
本节讲的是多个主存储器是如何协作的。
主存储器扩展
存储芯片一般比较小。为了得到一个较大的主存储器,需要把存储芯片连接扩展。
先提一句,芯片用数据量和数据位数来表示。比如64K X 1就是地址64K,数据只有1位的芯片。
考试主要考察的就是画图。注意,一堆线要画成粗的线。箭头表示数据传输方向,数据线的箭头是双向的,其他线的箭头是单向的。
有以下三种扩展方法:
位扩展
用一堆地址一样的芯片扩展位数。
地址线、片选线并联进每一个芯片。
数据线每一根接一个芯片。
以64K X 1拓展到64K X 8为例:
芯片1 | 芯片2 | 芯片3 | … | 芯片8 | |
---|---|---|---|---|---|
A0 | ——l—— | ——l—— | ——l—— | ——l—— | ——l—— |
… | ——l—— | ——l—— | ——l—— | ——l—— | ——l—— |
A15 | ——l—— | ——l—— | ——l—— | ——l—— | ——l—— |
CS | ——l—— | ——l—— | ——l—— | ——l—— | ——l—— |
D0 | ——l—— | ————— | ————— | ————— | ————— |
… | |||||
D7 | ————— | ————— | ————— | ————— | ——l—— |
地址扩展
假设一堆芯片位数相同,但存储量不够,可以把它们并在一起扩展地址
这种方法的思想是,地址线的高位用来片选,也就是选择使用那片芯片;低位直接输入芯片。
此处看书上的图很好理解。
字和位同时扩展
同时执行上面两种扩展。
看书上的图很好理解。
存储芯片的地址分配与片选
上一节地址扩展中,出现了如何分配地址这个问题。上一节是用一个译码器来分配地址高位,得到片选结果。本节具体介绍了分配地址时存储芯片片选的方式。
线选法
地址高位的每一位直接就代表是否选中某个芯片,而不经过移码。由于片选时0表示有效,因此用于片选的地址高位只能有一个0。
全译码法
就是上一节的方法,把高位输入译码器进行译码,输出选择哪一个芯片。有可能输入的地址组合量大于需要的量,比如输入9位,但只有4个芯片。这个时候译码结果只有4个是有效的,其他508个都是无效的。
部分译码法
在全移码的基础上,只把部分位输入译码器。比如要选择4个芯片,只输入2位就行了。这样的话地址的高位完全用不到,会产生地址重叠。