突然想到了关于地址总线的问题
假如要查找的地址超过了地址总线的宽度该咋办 这个问题。。。我这样来解答你,我反问一句,寻址宽度的定义是什么?
内存地址是如何表达的,CPU又是如何进行寻址的。
这些问题明白了你应该就不会这样来问了。。 那就寻不到了啊,就像现在好多机器,32为的操作系统,超过4G,其余的内存就寻址不到了,内存浪费。 leewon 发表于 2013-8-22 16:58 static/image/common/back.gif
那就寻不到了啊,就像现在好多机器,32为的操作系统,超过4G,其余的内存就寻址不到了,内存浪费。
寻址宽度是活的,不管多少内存都是可以寻址到的,仁兄不要乱回答啊。。。
只是32位系统只有4G内存,如果32位被微软定义为8G的话还是可以寻址到的
寻址是CPU,不是系统! 楼主这么和你说吧~~~如果你的机器有8G内存,你装一个32位的系统。那它最多寻址4G 那么剩余的寻不到。就浪费了(因此迷恋很负责的把自己的机器装成了64位,用的很辛苦)。同样的如果查找的地址超过 了就找不到了。而且一般不会出现地址超出的。8086汇编语言采用段+偏移的方式构成一个20位的物理地址。如果段地址过大是有可能超出寻址范围的。FFFFH*16+FFFFH从基本看上去对了但是 操作系统在分配的时候应该不会分配这么大的段地址给 程序。在程序载入到内存的时候这个过程由操作系统分配内存。因此。在写程序的时候我们的段地址一般都不是写死的。 我理解寻址宽度是受CPU寄存器限制的,如果CPU内部的寄存器只有32位,那么外部地址总线就算有64位,CPU内部ALU做运算的时候,也只能存放32位的数据啊。所以我理解不是内存有多大,CPU就都可以寻址到的。
为啥说操作系统这个例子是我觉得,现在机器硬件上已经设计成64位了,但是32位操作系统没有使用高32位,所以即使你有更多的内存,在软件设计上,操作系统依然限制了你使用的物理内存内容范围是4G。
楼主应该提问的是物理内存寻址范围吧。不对请指正。 你是说FFFF:FFFF这种情况吗??
这种情况算出来的实际地址是10FFEF,会把前面的1舍去,所以地址会是0FFEF (⊙o⊙)…32位的电脑你插入500G的内存显示能用的也只有4G而已
你认为会有你说的这种可能吗??? 565123 发表于 2013-8-22 20:25 static/image/common/back.gif
你是说FFFF:FFFF这种情况吗??
这种情况算出来的实际地址是10FFEF,会把前面的1舍去,所以地址会是0FFE ...
会这样啊~~~我没试过·~~~呵呵~~~{:7_174:} 倒是我 错了 CPU只能搜寻2的N次方地址超了搜不出来
地址线可以复用的啊,就比如说,10根地址线,地址总线的宽带是20吧,这10根线先传高10位再传低10位。我这是打个比方,具体多少位我也不知道了 超 过了地扯总线将会找不到。 这个问题真没仔细想过,但是我想它查找的地址不可能超过地址总线的!如果真的超过,应该是找不到! 本帖最后由 604274069 于 2013-8-23 18:13 编辑
地址总线的宽度N是最多寻址2的N次方内存单元。
:loveliness: CPU设计的时候就已经考虑到这点了,地址总线的宽度比CPU内部寄存器的数量多。8086CPU地址总线为20根,内部总线只有16根,所以才发明分段寻址方式。 这个应该是就找不到了吧。。。 顶。。。。{:1_1:}顶。。。。{:1_1:}
页:
[1]