0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:TOMORROW 星辰 作者:TOMORROW 星辰 2020-12-25 15:33 次阅读

计算机或者嵌入式刚刚入门的人,可能会有这样的疑问: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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10335

    浏览量

    206230
  • 计算机
    +关注

    关注

    19

    文章

    6617

    浏览量

    84032
收藏 人收藏

    评论

    相关推荐

    51单片机片内外存储器统一是什么意思?

    51单片机片内外存储器统一是什么意思?
    发表于 10-08 16:08

    杂散发射共有测过的吗?

    杂散发射共有测过的吗?是 spectrum下的 spurious spectrum 还是 LTE 下 选 spectrum emission mask?
    发表于 06-16 10:21

    简要分析OFDM几种多接入技术

    简要分析OFDM几种多接入技术
    发表于 05-26 06:34

    对MCU的CAN节点进行

    1. 案例概述  在制作在线升级软件的CAN通信协议时,为了能够对多个MCU进行同时升级,并且可靠地获取每个MCU的升级状态,需要对MCU的CAN节点进行。  假如我们只想实现每次仅仅升级一个
    发表于 08-06 07:16

    一个具有20位地和32位字长的存储器能存储多少个字节的信息

    一个具有20位地和32位字长的存储器能存储多少个字节的信息?需要多少位地址作芯片选择?
    发表于 10-26 07:52

    如何对MCU的CAN节点进行

    如何对MCU的CAN节点进行呢?STM系列芯片的UDID特点有哪些呢?
    发表于 11-04 06:43

    AVR系列单片机内部有三种类型的被独立的存储器

    AVR 系列单片机内部有三种类型的被独立的存储器,它们分别为:Flash 程序存储器、内部SRAM 数据存储器和EEPROM 数据存储器[1]。Flash 存储器为1K~128K 字节,支持并行
    发表于 11-23 08:22

    的寻址范围计算步骤

    的寻址范围计算步骤:256M字节=256 *1024 * 1024 * 8位,计算机
    发表于 01-05 08:21

    内存的方法

    一、内存和寻址、内存对齐1、内存的方法内存在逻辑上就是一个一个的格子,这些格子可以用来装东西(里面装的东西就是内存中存储的数),每个格子有一个编号,这个编号就是内存地址,这个内
    发表于 02-11 06:57

    SDRAM和NOR FLASH属于CPU的统一空间吗

    CPU怎样才能去访问NAND FLASH控制器呢?SDRAM和NOR FLASH属于CPU的统一空间吗?
    发表于 03-01 06:32

    请问字节没接入内存芯片的用作字内寻址的那几根地址线在mar里吗?

    如果在,那mar一个地址对应一个字节,而mdr又不是一个字节的大小,那mar乘mdr就不是内存容量了啊如果不在,那具体过程是不是以下说法字节
    发表于 08-28 16:13

    大家好,DMX512灯具如何实现级联,求思路

    DMX512灯具如何实现级联,求思路
    发表于 06-09 21:23

    关于STM8S字长度问题和自动快速字节编程问题

    (1)字长度问题:RM0016文档 字编程部分介绍1字=4字节,PM0044介绍1字=2字节 (例如LDW指令),因此这两个文档不是矛盾吗? (2)自动快速字节编程问题:上文
    发表于 08-08 07:42

    请问51单片机如何统一?

    51单片机如何统一?
    发表于 10-18 07:58

    液流储能电池原理图解分析

    液流储能电池原理图解分析 液流储能电池的原理图
    发表于 12-18 08:53 8365次阅读