按字寻址和按字节寻址问题!

转载说明:

最近和“位”打交道多了,研究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的范围  
和答案矛盾了  求解释!!!!
L2:

我是这么理解的:通常人们说的16位机、32位机中的数字都指字长(内部数据线数),数据线根数只决定能传输数据的能力。而地址线根数才决定寻址范围,寻址范围跟数据线根数是无关的,假如有n根地址线,则寻址范围就是2^n B (注意后面范围是字节)。回到原题,20根就是2^20=1MB(恰好是按字节寻),由数据线根数知芯片字长为16位,那按字时就是每个单元扩大到16位,所以1M*8=512k*16;             注意:不要跟存储器按字节、字寻址混淆了,去找来对比下。

L3:

我以前的想法和你相同,后来听高手说存储单元的位数通常默认为1B,因此按字节寻址是1M.
2L中的说法应该就是这个意思吧,但是寻址范围应该就是1M而不是1MB

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:

本人理解、
     按字寻址,即两个字节时,2^1=2   需要调出一根地址线用于存储单元内部寻址,故地址线变为19根用来寻存储单元,所以2^19=512K   
       按字节时,只有一个字节,而2^0=1,所以全部地址线用来寻存储单元,故为 2^20=1M

           不知道对否,反正做题没错过~~~

L13:

 按字节寻址的范围表示意思就是每个字节编上号,按字节的号去寻找它~比如4根地址线可以寻找到0—15个“字节号”;
而按字寻址的范围表示现在仍然是4根地址线,为了把每个字中的两个字节都表示出来,必须拿出一位作为字内的字节表示,
这时就只有3根地址线可以寻“字号”也就是0—7个“字号”。这样说不知道你能不能理解了。。。
    注:”字节号“与”字号“是方便理解,自己起的名字,不严谨的~

L15:

嗯 明白了 从组相连映射那理解的,就你说的那意思,感觉可以用组相连来理解

================

原讨论在此:

http://www.cskaoyan.com/thread-48595-1-1.html


展开阅读全文

没有更多推荐了,返回首页