关于存储器按字节寻址和按字寻址的理解

来源:互联网 发布:mac 下载工具 编辑:程序博客网 时间:2024/05/22 10:31

关于存储器按字节寻址和按字寻址的理解

近日在学习MOOC上学习哈工大刘宏伟老师的“计算机系统组成原理”课程,在4.1节提到主存的时候简单地提到一下关于按字节寻址和按字寻址的寻址空间问题,个人非常疑惑于是各处搜索查找资料,下面是本人就这个问题的理解,诸多不足请各位网友批评指正

  • 对于位、字、字长、字节的理解

  • 位(bit,简写为b):是计算机中最小的数据单位,一个位的值只可能是0或1,如四位二进制数0101。

  • 字节(Byte,简写为B):8个二进制位构成1个字节,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,如11111111表示的则是一个字节,如果换成十进制则一个字节表示的数字范围为0-255,如关于二进制和十进制转换不清楚的可以自行百度,这里不做详细说明。

  • 字长:计算机中对CPU在单位时间内(同一时间)能处理的最大二进制数的位数叫做字长。根据机器的性能不同那么不同的机器有不同的字长。如一台8位的CPU,这里的8位指的即是它的字长为8位,换句话说也就是单位时间最多处理一个长度为8位的二进制数也就是一个字节。

  • 字(Word,简写为W):字是不同计算机系统中占据一个单独的地址(内存单元的编号)并作为一个单元(由一个或多个字节组合而成)处理的一组二进制数。8位的CPU字长为8位,一个字等于一个字节,一次只能处理一个字节,而32位的CPU字长为32位,一个字等于4个字节,一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节,一个字等于8个字节。
    看上去好像不好理解,那么这是什么意思呢?根据我个人的理解,假设有两个人A和B,他们都爱吃包子,他们约定一个时间(单位时间)一起买包子,A(8位的CPU)一顿能吃8个包子(8位即一个字节),于是他买了8个包子(一个字节)装进一个袋子(字)里;而B(32位的CPU)一顿能吃32个包子(32位即四个字节),于是他买了32个包子(四个字节)装进一个袋子里(字)。相信大家看出来了吧,同样是一袋包子,因为A和B食量不同里面装的包子数量不同,这也就是为什么同样是一个字在不同机器上的包含字节不同!

  • 地址线和数据线
    地址线:用于传输地址信息,就像网线一样,内部的线缆有很多但是都封装起来了所以我们看不到,一根地址线可以通过高电平(1)或低电平(0)的电流,根据电流的不同来传输地址数据,这样就很清楚了,每1根地址线有2个状态,那么N根地址线就可以表示2N个不同状态,这些不同的状态即可以用来表示不同的地址。
    数据线:用于传输数据,可以简单的理解为字长为16位的计算机的数据线有16根,因为单位时间内最多传输16位二进制数,所以16根数据线每根都要变换高低电平来输出0或1。

例:一个16K×32位的主,其地址线和数据线的总和是?

答:首先看后面的32位,这个说明该的字长为32个字节即有32根数据线。然后看到前面16K,这个是什么意思呢?这里的16K就是寻址范围(即寻址空间),简单说这里的寻址范围就是我上面提到的地址线表示的状态,那么根据题意一共有16K个不同状态,那么需要多少根地址线呢? 16K=16*210=24210=214N线2N个状态,所以地址线为14根。那么总和为32+14=46根。怎么样?是不是感觉简单了很多呢?


按字节寻址和按字寻址

  • 终于回到正题上了,首先我们讲讲什么叫寻址,寻址就是寻找地址,当CPU请求数据的时候就会对进行读数据的请求。假设我们有一块硬盘,那么硬盘在接收到请求之后就开始查找这个CPU需求的数据具体是放在哪呢?实际上,硬盘上储存的所有数据都有一个自己的地址,在物理上实现是通过磁头在盘片上定位数据的一个过程。不同存储器计算机这两个有什么区别呢?下面我们从三个例题来入手:
  • 例1:设有一台机器有24根地址线,按字节寻址,求其寻址范围。
    解:如果按照字节寻址,就是一个地址线表示的数(即状态)对应一个字节的地址。由此可以得到地址的范围(即状态总和)就是224,即16M。那么寻址的范围就是16MB,注意单位是MB,地址的范围表示的仅仅是数量值,而按字节寻址的范围其单位则为容量单位,自然要带上字节B。
    • 例2:设有一台机器有24根地址线,其字长为16位,按字寻址,求其寻址范围。
      解:字里面封装了字节,为了确保每个字节或者说每个数据都有自己的一个编号,那么需要牺牲一部分地址线来实现。16位字长的机器,每个字表示2个字节,用1位地址线就能区分出来,这边可以类比成“每个袋子装了两个包子,而我现在只给袋子编号,那么你想要找到袋子里面的包子到底是第一个还是第二个就必须在拿出一位的0和1来表示第一个还是第二个包子”。由此表示字地址的数据线位数就只剩下了24-1=23位了。所以寻址的范围就变成了2^23MW,即4MW了。
      • 例3:设有一台机器有24根地址线,其字长为32位,按字寻址,求其寻址范围。
        这个问题就留给后来的读者思考吧,想通了的话其实也很简单!
原创粉丝点击