天天看点

DRAM内存编址及各个字长的含义(参考书籍 : Computer Systems A Programmer's Perspective 3rd)

最近上计组课,计组老师讲课总是开飞机。

而且国内清华大学出版社第三版计组教程关于内存的编址和各种字长的含义我个人觉得解释得有点含混不清。

所以自己找了本外文版的计组,发现外文的词意不经过翻译确实更能令人读懂,可能这也是古诗被翻译成外文就淡然无味的原因吧。

首先我们了解下DRAM的内存编址。

首先DRAM的内存被模型化成一种叫做 “阵列” (array element) 的结构.

简单理解就是下图中分成格的矩形。

这个矩形的格数和长宽由DRAM的容量等因素决定。

DRAM内存编址及各个字长的含义(参考书籍 : Computer Systems A Programmer's Perspective 3rd)

每个格子被称为“supercell”。其实格子的名称有“word”(字) 和 “cell” (单元) 两种称呼

前一种是硬件工程师喜欢那么叫,而后一种是电脑架构师喜欢那么叫。

但是为了统一称呼避免混淆,叫他做“supercell” ,至今我都没有在国内找到“supercell” 对应合适的称呼,自己也没有想出一个合适好听的称呼…

但这其中值得玩味的是,为什么硬件工程师喜欢叫他“word(字)”呢?而计算机架构师喜欢叫“cell”呢?

图中第一句话的意思大概可以理解为

计算机结构师觉得这个“supercell”,应该装载存储单元。(存储单元 = 最小编址单元)。

(我的猜想)所以索性叫supercell为“cell”。

而第二句话,硬件工程师觉得supercell应该装填一个字大小的内存信息,这里的字指的是什么呢?

(我的猜想),还记得硬件中的字线(Word Line)吗?是用来打开内存中记忆单元的控制线,那读取一个字大小的数据,是否就是用位线打开一定数量的记忆单元呢?(每个记忆单元为1bit)。

因为硬件工程师认为的word和第一句话里的cell大小相等,所以,这里的word的大小应该等于存储单元的大小。

每次位线都要打开存储单元大小个数量的记忆单元来访问内存。

硬件工程师眼中的word是每次访问内存的最小单位。

DRAM内存编址及各个字长的含义(参考书籍 : Computer Systems A Programmer's Perspective 3rd)

关于存储单元 :

清华大学出版社的教材上介绍“存储单元”

原话是:“存储单元是CPU对主存可访问操作的最小存储单元。”

而我们联系到上面的图,每个supercell都有唯一的编号对应,比如我们有10根地址线,有1024个编址单元,每个编址单元都是一个supercell。

所以我们大概可以把supercell理解成最小的编址单元。也就是教材上说的“CPU对主存可访问操作的最小存储单元”。

所以如果内存按照字节编址,supercell大小是8bits

如果机器字编址,supercell的大小是机器字位数

接下来解释各个字长的含义。

1.我们平常说的“字”指的是机器字,而“字长”一般指的是数据字长

2.机器字长 : 一般是寄存器的位数,即计算机每次运算处理能操作的最大位数,比如常说的32位计算机,一个运算最多从寄存器中取出32位进行运算。

3.数据字长 :是平时所说的字长,只是一个度量数据长度的单位,就像平时说的米,千米一样

比如首先定义数据字长是16位,那么32位int的大小就是2数据字长,平时简称,两个字长

说一个数据的大小必须先定义清楚字长大小。

4.存储字长,在一个存取周期内,能从内存中读取出的最大长度。

比如说存储字长是32位,而存储单元是8位。

那么一次性能从内存读出32位,即32/8 = 4 个supercell(存储单元),那么矩形图每一行就应该有4个supercell,上面的矩形图就是这样设计的。

继续阅读