zoukankan      html  css  js  c++  java
  • 什么叫寻址空间?

    一、什么叫寻址空间?
             寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位。
            通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。
           计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。
           Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。 也就是说,如果机器的CPU过早,即使有很大的内存也不能得到利用,而对于现在的PⅡ级的CPU,其寻址能力已远远超过目前的内存容量。
           由此推出:地址总线为N位(N通常都是8的整数倍;也说N根数据总线)的CPU寻址范围是2的N次方字节,即2^N(B)。
    
    二、16位、32位、64位通常指的是什么?
         从CPU的发展史来看,从以前的8位到现在的64位,8位也就是CPU在一个时钟周期内可并行处理8位二进字符0或是1,那么16就以此类推是64位就64位二进制.
         从数据计算上来讲理论上64位比32快一半。但因为电脑是软硬相配合才能发挥最佳性能的.所以操作系统也必须从32位的到64位的,而且系统的硬件驱动也必须是64位的.
    在64CPU的计算机上要安装64位操作系统64位的硬件驱动,32位的硬件驱动是不能用的,只有这样才能发挥计算机的最佳性能.如果64CPU装32操作系统的话,那性能不会有明显的提升。
    总而言之,8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。 三、为什么是2的N次方,而不是其他数的N次方? 因为计算机是采用二进制计算的。 假设一台计算机,它只有1根地址线,请问它最多能对几个存储单元寻址
    ?答案是:2个.因为在任何2进制计算机中,所有物理元件只有 0,1两种状态,对应这个例子,我们假设已经把这唯一的一根地址线与两个存储单元a和b连上了,那么究竟怎么确定何时读a何时读b?有一个办法,当地址线上的电压是高电压时我们读a,相反是低电压时,我们读b.如此一来,一根地址线的情况下,只能对2个存储单元进行寻址 依次类推,2根地址线时可以对4个存储单元进行寻址,对应的电压情况可以是:低低,低高,高低,高高;继续想下去,3根地址线就可以对8个存储单元进行寻址(3个1和3个0不同组合情况:111110100000101100001011),4根就是16个,也就是说,当有n根地址线时,可以对2的n次方个存储单元进行寻址。 一根线是怎么连接到两个存储单元的?好像不同于一根电话线吧,他有两个线芯或才网线,有八个小线(线芯)? 四、什么是存储单元? 存储单元一般应具有存储数据和读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。 程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。 五、为什么计算机采用二进制? (1)技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。 (2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。 (3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。 (4)易于进行转换,二进制与十进制数易于互相转换。 (5)用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。 http://blog.csdn.net/lovejavaydj/article/details/7295505

    地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或输入输出端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为2^16=64KB,16位微型机的地址总线为20位,其可寻址空间为2^20=1MB。一般来说,若地址总线为n位,则可寻址空间为2^n字节。地址总线的宽度,随可寻址的内存元件大小而变,决定有多少的内存可以被存取。

    
    

    数据总线DB(DataBus)用于传送数据信息。数据总线是双向三态形式的总线,即它既可以把CPU的数据传送到存储器或输入输出接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以是指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。

    
    

    计算机最小的单位是位(bit),每8位组成一个字节(Byte),字节(B)也是存储器的最小存储单元。 
    b、B、Kb、KB、Mb、MB、Gb、GB之间的单位换算如下: 
    1B = 2的3次方*b = 8b 
    1Kb = 2的10次方*b = 1024b 
    1KB = 2的13次方*b = 2的10次方*B =1024B 
    1Mb = 2的20次方*b 
    1MB = 2的23次方*b = 2的20次方*B 
    1Gb = 2的30次方*b 
    1GB = 2的33次方*b = 2的30次方*B 
    4Gb = 2的32次方*b 
    4GB = 2的35次方*b = 2的32次方*B 
    至于为什么说16根地址总线的寻址空间为 2的16次方 = 64K(B),是因为字节(B)是内存的最小存储单元,每个地址总线可以对2个存储单元寻址(2B),所以16根地址总线可以寻址 2B的16次方 = 64K(B); 
    同理20根地址总线可以寻址的存储器空间是 2B的20次方 = 1MB; 
    32根地址总线的寻址空间是 2B的32次方 = 4GB;这也是为什么32位地址总线的系统的最大能搭配4GB内存的原因:再多的话CPU就找不到了。

    
    

    关于地址总线和寻址空间的关系可以从下文得到更深刻的理解: 
    "8086有20根地址线,所以可寻址的存储器空间为1MB"。因为,2的20次方等于1MB,所以是这个结果。 
    问,为什么要这样算?这中间的那个过程是怎样的?(硬件是怎么实现的?) 
            假设有这么一台计算机,它只有1根地址线,那么请问它最多能对几个存储单元寻址?答案显然是2个.因为在任何2进制计算机中,所有物理元件只有 0,1两种状态,对应这个例子,我们假设已经把这唯一的一根地址线与两个存储单元a和b连上了,那么究竟怎么确定何时读a何时读b?有一个办法,当地址线上的电压是高电压时我们读a,相反是低电压时,我们读b.如此一来,你应该明白-----一根地址线的情况下,只能对2个存储单元进行寻址 
            依次类推,2根地址线时可以对4个存储单元进行寻址,对应的电压情况可以是:低低,低高,高低,高高;继续想下去,3根地址线就可以对8个存储单元进行寻址,4根就是16个,也就是说,当有n根地址线时,可以对2的n次方个存储单元进行寻址

    http://blog.chinaunix.net/uid-11572501-id-2868719.html
  • 相关阅读:
    js中属性节点的应用
    改变属性的值的方法
    获取所有节点的一些方法的属性(有待改善)
    JS中修改属性
    获取节点的几种小案例
    在页面上点击按钮,出现弹出框
    SelectionSort,选择排序
    BubbleSort冒泡排序
    混合app
    使用(Unicode字符)让inline水平元素换行
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4198313.html
Copyright © 2011-2022 走看看