|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
相信很多新手刚入门汇编便对“寻址能力以及其单位”感到模糊不解,便各种提问。很好,如果你对这个存在疑问,对答案质疑,那么说明你比别人聪明,懂得思考问题。
曾经的我也对这个存在各种不解,各种纠结。现在我走过来了,分享一下我对这个的理解,帮助新手们解惑。
这里引用一下某鱼油的疑问:
“CPU的寻址能力不就是CPU能够寻址的个数么?
它的地址总线的宽度决定了它的寻址能力。
总线宽度为N,则寻址能力位2^N
可是2^N=?KB 似乎不能表达吧……所以想到此,我觉着此题没有表达准确。
我知道8b = 1B (八个二进制位等于一个字节)
2^10B=1KB
在检测题一中:
1个CPU的寻址能力为8KB,那么它的地址总线的宽度为___. 答案是13
8KB=2^13B=2^13*8b=2^16b 也就是2^16个二进制位,也就是总线有2^16根组成,
想到此,我觉着答案为2^16
首先,我觉着这个题本身出的就有问题,因为寻址能力指的是能够寻址的个数,是一个整数,没有单位,或者单位是“个” 可是这个题中,如果答案为13,则把B看成了寻址能力的单位,也就是说寻址能力是**个字节。如果答案为2^16,则把b看成了寻址能力的单位,这样也不对,而要把“个”看成寻址能力的单位,只能是:
8KB能表达的数的个数为:
1B=8b 8个二进制数能表示的数为:2^8
8KB=2^13B=2^13*B=2^13*2^8=2^21 个数,也就是说由21个二进制位(也就是说需要总线由21根组成)才能表达8KB描述的数。所以总线宽度为21.
请高手指点一下……我不淡定了。
”
解答引用一下百度百科:“
寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。”
实例:
公式是2^n, 假设n=2,就是两条地址总线。
变化有:
00
01
10
11
就是2^2=4种变化。
简单来说就是把n看成有多少个空格,然后用从0开始的二进制填充,然后自加1后重新填充,当填到全部空位都是1的时候,算算自己一共填了多少次,这就是寻址能力。自己可以动手在纸上练习。
也许现在你对什么是寻址能力已经有个模糊了解了,但是你又纠结于单位问题了,寻址能力的基础单位是B(字节)。我曾经也是无法理解的,但是聪明的人不会纠结一些问题钻牛角尖而停下前进的脚步。不懂就不懂,反正将来也会懂得,因为这些知识只是片面的,当我们达到一定高度就会懂这些简单的小问题了,呵呵,扯远了。一个人可以不聪明,但是一定要灵活。
现在说下我的见解:“寻址”,我们要突出“寻找”这个词语,它怎么找?地址就好比门牌号码,cpu就是通过地址这个门牌号码访问到我们的每一个内存单元(一个8bit的空间),“寻址能力”就是cpu能通过地址门牌找到多少个单元。这样单位问题就很明了,一个单元是8bit=1B,我们寻址能力就是能够找到多少个单元,就是能力有多少个B,然后根据换算等等什么kb啊,mb啊,gb啊,都出来了。我们中国人都是聪明的,要善于灵活比喻,形象思考。
|
评分
-
查看全部评分
|