野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15556|回复: 3

单片机,嵌入式,pc等都是以字节编址吗

[复制链接]
发表于 2015-1-13 22:50:39 | 显示全部楼层 |阅读模式
问的这个问题可能很幼稚,也有点偏,想请教是不是现代的所有微控制器,计算机等,都是以字节编址的。打个比方,以stm32为例,它的寄存器是32位的,以字节编址的话,如果A寄存器的地址是0的话,B寄存器的地址就是4,但如果以字(16位)来编址的话,A寄存器的地址是0,B的就是2。如果以双字(32位)来编址,A是0,B就是1。这样以前可以访问一个寄存器的现在就可以访问2个或4个,岂不是可以大增加可访问寄存器的数量。那为什么得按照字节编址,而不按照字或双字来编址,请大神解救下我。
回复

使用道具 举报

 楼主| 发表于 2015-1-13 23:38:23 | 显示全部楼层
换种说法就是:stm32的地址总线是32位,每个地址可以访问最小单元是字节(8位2进制数),32位地址总线可以寻址4GB。那如果每个地址访问的最小单元是字(16位2进制数),那31位地址总线就可以寻址4GB,如果每个地址访问的最小单元是双字(32位2进制数),那30位地址总线就可以寻址4GB。让每个地址可以访问最小单元是字或双字,寻址会更多啊,为什么要以字节编址?
回复 支持 反对

使用道具 举报

发表于 2015-1-14 15:59:01 | 显示全部楼层
只有单位统一才便于比较,如电脑的内存是4GB,就是4G字节,但并不代表一次访问就是一个字节,WINDOWS实际访问内存常以32位为单位来访问,以增加读写效率,另外实际电路中,不光看地址线的宽度,还要看数据线的宽度,若数据线是8位的,当然地址编址就要以字节为单位了,若数据线是16位宽度, 一次就可以访问两个字节 当年INTEL出的8086CPU,处理器和内部寄存器是16位的,但对外数据线就是8位的
为了提高效率,当然16位宽度比8位快了 但有时增加地址宽度会造成引脚数量增加,如增加一根地址线,寻址范围扩大1倍,而同样情况下数据线要增加8根,寻址内存才增加一倍(16位和8位比较)
对于STM32,因内部的很多寄存器是32位,所以访问时内部时都以32位为单位,对外FMSC,则是8位或16位可设置
回复 支持 反对

使用道具 举报

发表于 2015-1-14 16:19:40 | 显示全部楼层
本帖最后由 11kxmx 于 2015-1-15 07:45 编辑
11kxmx 发表于 2015-1-14 15:59
只有单位统一才便于比较,如电脑的内存是4GB,就是4G字节,但并不代表一次访问就是一个字节,WINDOWS实际访 ...


对外为了减少引线数量,并不支持地32位数据宽度
但在PC中的内存条,为了增加读写速度,数据宽度就大得多了 ,大多是32位或64位的,甚至到128位的都有
显存中更是达到256BIT
但显卡对主板来说,为了减小引脚数量,数据线又成串行的了 256BIT只是显存到GPU的数据宽度

因为现在多数内存条是32位或64位的,所以现在WINDOWS访问内存或保存文件时常以4个字节为单位来进行,不足4个字节的部分会补0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 09:41 , Processed in 0.037202 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表