按字寻址和按字节寻址问题!
2015-02-20 22:17
856 查看
转载说明:
最近和“位”打交道多了,研究PCI本地地址I/O寻址空间,看到资料是最大256 Byte,可用8根地址线。当时糊涂,在想2^8=256 啊,怎么和256 Byte搭上了。况且数据线是32位呢。于是网上搜了搜,发现这个讨论帮助蛮大的。特别是7楼和13楼的解答。
以下内容为转载:
L1:
L2:
我是这么理解的:通常人们说的16位机、32位机中的数字都指字长(内部数据线数),数据线根数只决定能传输数据的能力。而地址线根数才决定寻址范围,寻址范围跟数据线根数是无关的,假如有n根地址线,则寻址范围就是2^n B (注意后面范围是字节)。回到原题,20根就是2^20=1MB(恰好是按字节寻),由数据线根数知芯片字长为16位,那按字时就是每个单元扩大到16位,所以1M*8=512k*16;
注意:不要跟存储器按字节、字寻址混淆了,去找来对比下。
L3:
L4:
没什么疑问的?按字节寻址就是1M,因为2的20次方就是1M啊?一般告诉的地址空间就是指按字节寻址的,至于按字寻址就是2的20次方除以2,得出2的19次方,即512KB
L5:
你看我说的对不啊
首先这个范围应该是没有单位的 其次CPU的地址线和主存的地址线应该是相连的 我看你们的意思是不是虽然CPU有16根数据线 但是只用了8根 另外的空闲了 而地址线是全部用了 可是题目上并没有给出确切的条件啊 并且这样虽然按字节寻址范围是1M了 但是岂不是按字也是1M了吗 因为3L的前提就是1字就是1字节啊!
L6:
各位楼上解释的对,其实记住也行。寻址确实与数据线无关
按字节寻址就是2的地址线数目的次方
按字寻址就是按字节寻址除以(字长\字节),这里字长就是数据线位数
L7:
上面的解释都没看明白,LZ的那到题是唐朔飞教材P97页例4.3,在题目中讲到,A0和BHE来控制按字节和按字两种形式访问,也就是说A0是不能用来传地址的,也就是说CPU只有19根地址线来传地址,因此地址总共有2^19种,每种地址代表的是一个存储单元,也就是指向一个存储字。
如果按字访问就可以访问的地址范围是2^19=512K
如果按字节访问,由于CPU有16根数据线,即一个存储单元可以存16位二进制代码,也就是说一个存储字有16位,即1W=2B,所以按字节访问可以访问的地址范围是512K*2=1M。
如果对存储单元和存储字不是很理解的话,请看唐朔飞教材P13,里面主存结构说的很明显,以及P17关于“MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长”即说明地址位数决定了存储单元的个数,每个存储单元对应一个地址,就是地址位数决定了地址范围;数据位数决定了存储字长。。。
L8:
建议LZ把唐书P73页的地址分配结合下面的图细读三遍!
.
.
.
L11:
L13:
按字节寻址的范围表示意思就是每个字节编上号,按字节的号去寻找它~比如4根地址线可以寻找到0—15个“字节号”;
而按字寻址的范围表示现在仍然是4根地址线,为了把每个字中的两个字节都表示出来,必须拿出一位作为字内的字节表示,
这时就只有3根地址线可以寻“字号”也就是0—7个“字号”。这样说不知道你能不能理解了。。。
注:”字节号“与”字号“是方便理解,自己起的名字,不严谨的~
L15:
嗯
明白了 从组相连映射那理解的,就你说的那意思,感觉可以用组相连来理解
================
原讨论在此:
http://www.cskaoyan.com/thread-48595-1-1.html
最近和“位”打交道多了,研究PCI本地地址I/O寻址空间,看到资料是最大256 Byte,可用8根地址线。当时糊涂,在想2^8=256 啊,怎么和256 Byte搭上了。况且数据线是32位呢。于是网上搜了搜,发现这个讨论帮助蛮大的。特别是7楼和13楼的解答。
以下内容为转载:
L1:
按字寻址和按字节寻址问题!迷茫!!!
CPU有20根地址线和16根数据线,请问CPU按字节访问和按字访问的地址范围是多少? 书上答案是按字节范围是1M 按字访问的范围是512K 可是书前面讲过地址线对应存储单元 20根就是1M个存储单元 所以按字访问应该是1M的范围 按字节的话应该是2M的范围 和答案矛盾了 求解释!!!! |
我是这么理解的:通常人们说的16位机、32位机中的数字都指字长(内部数据线数),数据线根数只决定能传输数据的能力。而地址线根数才决定寻址范围,寻址范围跟数据线根数是无关的,假如有n根地址线,则寻址范围就是2^n B (注意后面范围是字节)。回到原题,20根就是2^20=1MB(恰好是按字节寻),由数据线根数知芯片字长为16位,那按字时就是每个单元扩大到16位,所以1M*8=512k*16;
注意:不要跟存储器按字节、字寻址混淆了,去找来对比下。
L3:
我以前的想法和你相同,后来听高手说存储单元的位数通常默认为1B,因此按字节寻址是1M. 2L中的说法应该就是这个意思吧,但是寻址范围应该就是1M而不是1MB |
没什么疑问的?按字节寻址就是1M,因为2的20次方就是1M啊?一般告诉的地址空间就是指按字节寻址的,至于按字寻址就是2的20次方除以2,得出2的19次方,即512KB
L5:
你看我说的对不啊
首先这个范围应该是没有单位的 其次CPU的地址线和主存的地址线应该是相连的 我看你们的意思是不是虽然CPU有16根数据线 但是只用了8根 另外的空闲了 而地址线是全部用了 可是题目上并没有给出确切的条件啊 并且这样虽然按字节寻址范围是1M了 但是岂不是按字也是1M了吗 因为3L的前提就是1字就是1字节啊!
L6:
各位楼上解释的对,其实记住也行。寻址确实与数据线无关
按字节寻址就是2的地址线数目的次方
按字寻址就是按字节寻址除以(字长\字节),这里字长就是数据线位数
L7:
上面的解释都没看明白,LZ的那到题是唐朔飞教材P97页例4.3,在题目中讲到,A0和BHE来控制按字节和按字两种形式访问,也就是说A0是不能用来传地址的,也就是说CPU只有19根地址线来传地址,因此地址总共有2^19种,每种地址代表的是一个存储单元,也就是指向一个存储字。
如果按字访问就可以访问的地址范围是2^19=512K
如果按字节访问,由于CPU有16根数据线,即一个存储单元可以存16位二进制代码,也就是说一个存储字有16位,即1W=2B,所以按字节访问可以访问的地址范围是512K*2=1M。
如果对存储单元和存储字不是很理解的话,请看唐朔飞教材P13,里面主存结构说的很明显,以及P17关于“MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长”即说明地址位数决定了存储单元的个数,每个存储单元对应一个地址,就是地址位数决定了地址范围;数据位数决定了存储字长。。。
L8:
建议LZ把唐书P73页的地址分配结合下面的图细读三遍!
.
.
.
L11:
本人理解、 按字寻址,即两个字节时,2^1=2 需要调出一根地址线用于存储单元内部寻址,故地址线变为19根用来寻存储单元,所以2^19=512K 按字节时,只有一个字节,而2^0=1,所以全部地址线用来寻存储单元,故为 2^20=1M 不知道对否,反正做题没错过~~~ |
按字节寻址的范围表示意思就是每个字节编上号,按字节的号去寻找它~比如4根地址线可以寻找到0—15个“字节号”;
而按字寻址的范围表示现在仍然是4根地址线,为了把每个字中的两个字节都表示出来,必须拿出一位作为字内的字节表示,
这时就只有3根地址线可以寻“字号”也就是0—7个“字号”。这样说不知道你能不能理解了。。。
注:”字节号“与”字号“是方便理解,自己起的名字,不严谨的~
L15:
嗯
明白了 从组相连映射那理解的,就你说的那意思,感觉可以用组相连来理解
================
原讨论在此:
http://www.cskaoyan.com/thread-48595-1-1.html
相关文章推荐
- 关于网络传输字节顺序的问题: hton? or ntoh?-
- Flash对双字节的支持问题
- C#通过SOCKET与delphi 的通讯问题(一)之 字节对齐
- 代码解决关于限制字节数的校验问题
- 问题解答之 指令寻址和操作数寻址
- VC++中关于字节对齐的问题
- [C_Basic]再谈编译器字节问题
- 使用字节与字符串转换时需要注意的问题
- 应考虑字节顺序(大小端问题)的几种情况
- 遭遇字节对齐的问题。
- C++中结构体的字节对齐问题
- arm的字节对齐问题
- Sql中LEN函数处理汉字长度问题(sql、len、字节)
- 解决 ASP 最大输入为 200KB 字节的问题/error 'ASP 0104 : 80004005' By Stabx
- 汉字字节问题
- 关于字节对齐问题的解释.
- 字节对齐的问题
- 关于cnComm串口类库的问题解决方案,就是很多人说的只读几个字节的问题
- 一个用js限制用户输入字节个数的问题.
- 字节序与字节对齐问题