找回密码
 注册
搜索
查看: 2868|回复: 33

[讨论] CPU地址线问题

[复制链接]
发表于 2008-11-21 09:47:04 | 显示全部楼层 |阅读模式
请教,CPU 32根地址线AD(0...31),但是实际上地址线只用到了AD(3...31),有三根AD(0...2)没有用到,请问下大家这三根为什么没有用到阿
 楼主| 发表于 2008-11-21 09:57:06 | 显示全部楼层
这个问题已经求教过很多人,但是似乎都没有讲清楚,请教高人能详细的解释一下
点评回复

使用道具 举报

发表于 2008-11-21 16:32:52 | 显示全部楼层
主要跟一些mcu的寻址空间有关,你好好看看mcu的spec
点评回复

使用道具 举报

发表于 2008-11-21 18:52:08 | 显示全部楼层
地址对齐~
0~2不用,cpu发出的地址a:0110-0111 b:0110-0101
在总线上都只能看到0110-0100
起到地址对齐的作用~
点评回复

使用道具 举报

发表于 2008-11-22 16:44:33 | 显示全部楼层
个人觉得可能有如下两种情况:
A  A[0..2]这3根地址线用上了,在系统里。比如接入3-8译码器(e.g. 74138),其输出端作为存储器的/EN。如此,外围最多可扩充8(2^3)片存储芯片(ROM or RAM),系统寻址空间也便为2^32,即从0000,0000,0000,0000 -- 1111,1111,1111,1111均有效。要注意的一点是,数据宽度跟寻址范围是两个概念的,整体数据宽度,处决于选定型号的Memory芯片的单位数据宽度。
B   A[0..2]未用。于是,系统寻址空间仅为2^29,从0x0000-0xFFF8(即0000,0000,0000,0xxx -- 1111,1111,1111,1xxx。为便于分析,将XXX全解析为0),于是首地址为0x0,次地址为0x0008,第3个地址为0x0010...不会出现0x9之类的地址。此即楼上斑竹所言“8字节对齐”(通俗点理解,这就如等差序列,公差不再是默认的1,而是8了)[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2008-12-26 17:18:32 | 显示全部楼层
地址线的多少,和外挂内存的大小有关。
点评回复

使用道具 举报

发表于 2008-12-26 20:29:21 | 显示全部楼层

这个问题要从处理器设计角度来考虑

首先, 要弄明白几个概念, 不是教科书上的, 我自己定义的, 可能会不太精准.

1. 处理器的最小寻址单位, 一个地址对应的ram单元或者是寄存器地址最小bit数, 比如说8, 16, 32...
2. 处理器的最大寻址单位, 一个地址对应的ram单元或者寄存器地址的最大bit数, 比如说8,16,32,64...

大多数处理器的最小寻址单位是8, 最大寻址单位是处理器alu的位宽,
比如说8为的51, 最小寻址单位是8, 最大寻址单位也是8.
arm, 最小寻址单位是8, 最大寻址单位是32.
TI c6000, 最小寻址单位是8, 最大寻址单位是32(某些片子是64).
tiger sharac, 最小寻址单位是32, 最大寻址单位是64.

编址是根据最小寻址单位来编的, 比如说arm 4gb的空间, 是4g*8bits 的空间.
tiger sharac, 是4g*32bits的空间.

但是多数16位, 32位, 64位以及更高级的处理器也支持字节寻址. 也就是他们的最小寻址单元还是8位,
比如在64位tic6000 dsp处理器上,安排了
lb, sb, 读写8位
lh, sh, 读写16位
lw, sw, 读写32位
ld, sd, 读写32位.

同时,从存储器上, 以SDRAM 为例, 也有最小寻址单元和最大寻址单元之分, 比如说32位的SDRAM 也支持一次写入8位, 16位, 32 位.
这时候怎么接呢?. 通常用BE0-BE3来选中一个32位单元的不容字节.
处理器内部也就不把低两位(32位系统), 或低三位(64位系统)的地址线引出来, 而是直接译码变成 BEx.

设计起来非常灵活, 像TI的dsp, 还可以直接接8位的flash, 此时就是把a3-a21, 接到flash的a0-a19. 把A3当A0用.

也许这里, 还有地址对齐问题.

其实也可以一次说明白.
还是以TI64位的系统为例, 支持8位, 16位, 32位, 64位寻址.
64位时, BE0 - be7都有效. 处理器发出的地址是8的倍数.
32位时, be0 - be3, 或者是be4-be7有效, 处理器内发出的地址是4的倍数.
16位时, be0 - be1, be2-be3, be4-be5, be6-be7有效, 处理器发出的地址是2的倍数.

或许你要问,为什么16位时不能是be1-be2? 有效, 32位时不能是be1-be4有效, 这完全是为了简化存储器效率和处理器的设计难度.

x86处理器是允许这样的.
但是be1-be2这样的地址, 处理器要发出两个存储器周期,
be1-be4这样的地址, 处理器要发出三个存储器周期, 这样一来, 使用这种不对齐指令的执行时间就会编长.

在不支持这种不对齐的处理器中有的会产生异常, 有的处理器根本就不管,直接把你地址的低位扔掉.
我曾经遇到这样的错误, 在msp430中处理网络协议包, 开始的时候是正确的, 后来我添加了一个变量就错了,
后来一查, 原来我放数据的buffer, 开始的时候是16位地址对齐的,添加一个变量后就不对齐了.













[br]<p align=right><font color=red>+5 RD币</font></p>
点评回复

使用道具 举报

发表于 2008-12-27 09:40:32 | 显示全部楼层
楼上例证很雄厚!
点评回复

使用道具 举报

发表于 2008-12-27 09:47:47 | 显示全部楼层
拓展开来揣测,1Byte=8bit,多半因设计出计算机的西方人,他们的文字所在ASCII code,是8bit的。
于是硬件上,ALU、 Register、RAM等,在最低层,都被组织成n*8的形式。
当涉及多字节数据时,内/外地址机构,就得注意了。[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2008-12-29 13:17:15 | 显示全部楼层
可能是cpu是8位寻址,而memory是64位的,所以0~2的地址线就不用了.[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2009-1-3 18:45:36 | 显示全部楼层
以下是引用e28_tom在2008-12-29 13:17:15的发言:
可能是cpu是8位寻址,而memory是64位的,所以0~2的地址线就不用了.

个人支持这个解释
点评回复

使用道具 举报

发表于 2009-1-6 19:10:59 | 显示全部楼层
以下是引用e28_tom在2008-12-29 13:17:15的发言:
可能是cpu是8位寻址,而memory是64位的,所以0~2的地址线就不用了.


这个正解
点评回复

使用道具 举报

发表于 2009-1-12 10:12:50 | 显示全部楼层
看完这个话题,受益匪浅啊!在下也有过这样的疑惑,也问过一些人,但没人能回答得如此详尽!今天受教了。
点评回复

使用道具 举报

发表于 2009-5-9 16:59:44 | 显示全部楼层
本人不是太理解对齐是什么意识,个人认为既然是一次读取8位,那么就只需要知道它的首地址,下面顺次读取就可以了,后面三位地址线就不用了.
点评回复

使用道具 举报

发表于 2009-5-12 11:13:39 | 显示全部楼层
以下是引用e28_tom在2008-12-29 13:17:15的发言:
可能是cpu是8位寻址,而memory是64位的,所以0~2的地址线就不用了.

本文来自:我爱研发网(52RD.com) 详细出处:http://www.52rd.com/bbs/Detail_RD.BBS_143451_77_1_1.html

这个是正解,其他的都说了那么多,都是多余的,还误人子弟.
点评回复

使用道具 举报

发表于 2009-5-12 21:41:57 | 显示全部楼层
学习了,非常不错的资料!
点评回复

使用道具 举报

发表于 2009-5-13 15:18:34 | 显示全部楼层
非常不错的资料,跟着学习
点评回复

使用道具 举报

发表于 2009-5-15 16:14:17 | 显示全部楼层
看看你的存储器是多少为的,对ARM CPU来说,一个地址对应8位的数据,而如果存储器是16,32,64位时,其一个地址对应的分别是16位,32位,64位数据,可以这样认为,存储器一个地址的数据,CPU需要2个,4个,8个地址才能读完,所有低位地址线不用。[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

发表于 2009-5-19 18:00:13 | 显示全部楼层
还是不懂
能仔细讲解吗
点评回复

使用道具 举报

发表于 2009-5-25 09:02:23 | 显示全部楼层
是呀,学习了,但是,不知道有没有类似的书籍呢?
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-15 21:06 , Processed in 0.343045 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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