按字节编址与按字长编址区别及原理图解分析

描述

计算机或者嵌入式刚刚入门的人,可能会有这样的疑问:CPU 是 32 位/64 位的计算机,是怎么读取一个字节的?又或者说,是怎么一下子读取到 32 位/64 位数据的?这其实就是计算机的编址的问题。只要知道了,按字节编址与按字长编址的区别就可以解决这些疑问了。下面将用按字节编址与按字编址的威廉希尔官方网站 原理图图解来讲述其中的奥秘。

首先,32 位/64 位 CPU 指的是 CPU 的数据总线的宽度,也是字长。初学者可能就会认为,既然是 32 位 CPU 了,数据总线的宽度也是 32 位的,那么 CPU 就应该是每一次都是从内存中并行读取 32 位的数据,那么 32 位 CPU 的内存的基本单元就应该是 32 位的才对,为什么现在的计算机都是以 8 位一个字节为基本存储单元的呢?32 位 CPU 它是怎么实现对一个字节单元的读写操作的呢?

按字节编址

关键就在于字节编址。编址,顾名思义就是对地址的编排。而按字节编址就是,一个字节做为一个基本的地址单元。通俗点说就是一个地址对应一个字节(8 位)。

♦需要说明的是该芯片的基本存储单元是 8 位(一个字节),cADDR0-cADDR15 是 CPU 的地址线。

如上图所示就是一个很经典的按字节编址的威廉希尔官方网站 。按照该威廉希尔官方网站 设计,那么 CPU 的每一个地址都对应着存储芯片的一个字节。这时候还是会有疑问,那么按字节编址,CPU 不是每一次都是只能读取一个字节的数据吗?这个时候再看一个图:

这是一个 32 位 CPU 的内存芯片威廉希尔官方网站 图。仔细观察威廉希尔官方网站 图可以看到,CPU 的 32 位数据是由两个 16 位内存芯片的数据并成的。这样 CPU 就可以每一次都是读取到 32 位的数据了。这时候再来看看地址总线。你会发现,CPU 的地址总线 LADDR2 接的是内存芯片的 A0,LADDR1、LADDR0 哪里去了?为什么错开了两条地址线?

其实这就是 16 位及以上的 CPU 实现按字节编址的关键所在。举个例子就好理解了。CPU 地址总线发出 4 个地址信号 000000、000001、000010、000011(省略掉前面的 N 个 0 了),这 4 个地址信号改变的是最低两位的地址线(LADDR1、LADDR0),高 30 位(LADDR2-LADDR31)始终还是 0,结合威廉希尔官方网站 知道,CPU 地址总线发出的这 4 个地址信号读取到的数据其实是相同的 32 位数据,因为最低两位地址线根本没有接到内存芯片上。而这 32 位数据(4 个字节)刚好可以通过最低两位地址线进行编排(2^2=4),具体 4 个地址与 4 个字节是如何编排的则是由 CPU 所决定的(可以是高字节对高地址,也可以是高字节对低地址)。所以 CPU 发出的每一个地址信号其实还是只对应着一个字节(8 位)的,也就是 CPU 的寻址还是按照字节来寻址的。这就是按字节编址。

而 CPU 要实现对其中某一个字节的操作可以通过“按位与”和“按位或”运算实现。

♦请忽略LADDR14-LADDR24 之间的不连续,这需要结合到具体的芯片型号才能看懂的。并不是本文的重点。

按字编址

如果懂了按字节编址,那么按字编址就很好理解了。直接看图

该图是 32 位 CPU 按字编址的威廉希尔官方网站 原理图。32 位 CPU 的字长就是 32 位,因此按字编址就是,每一个地址对应着一个字长的数据。图中可以看到,CPU 的地址总线 cADDR0-cADDR15 与内存芯片的 A0-A15 是一一对应的,并没有像按字节编址那样,将最低两位错开。然后由两个 16 位的内存芯片的数据合并成 32 位数据。CPU 同样是每次读取 32 字节的数据,但是,CPU 发出的每一个地址信号都对应着一个 32 位的数据,不同的地址信号对应着不同的存储单元。

按字编址设计的威廉希尔官方网站 ,CPU 是没办法寻址到某一个字节并对其操作的,因为 CPU 发出的每一个地址信号都对应着 32 位的数据,无法具体到其中的哪些字节。

总结

判断是按字编址还是按字节编址的关键在于,判断 CPU 给出的每一个地址所确定的存储单元的大小。其大小等于一个字节,那么就是按字节编址的;等于一个字,则是按字编址的。

现代计算机大多数采用的都是按字节编址的方式设计的,也就是经常所说的,计算机最基本的存储单位是字节。

按字节编址的计算机较为通用,兼容性更好;

而按字编址的计算机的兼容性没有那么好了,因为当 CPU 的字长发生变化时,计算机的基本存储单位都会发生变化,但是它可寻址的存储空间更大,因为它的一个地址对应着是 32 位/64 位数据,而按字节编址的一个地址对应的只有一个字节(8 位)的数据。
编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_35001031 2022-08-28
0 回复 举报
能说一下这几根字内寻址线在mar里吗 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分