zoukankan      html  css  js  c++  java
  • 关于按字寻址和按字节寻址的理解

     

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

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

    个人对按字、按字节寻址的理解

    自己的理解:

         字长度可为8的整数倍,如32,8位,按字寻址的话,32位存储字包含4个字节,地址线需留出2跟来区分四个字节的位置。按字节寻址的话,则不需要留出地址线来分区了,因为就一个字节。

    什么是位、字节、字、KB、MB?

    什么是位、字节、字、KB、MB
      位:”位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。

      字节:8个二进制位构成1个”字节(Byte)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。

      字:”字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。

      KB:在一般的计量单位中,通常K表示1000。例如:1公里= 1000米,经常被写为1km;1公斤=1000克,写为1kg。同样K在二进制中也有类似的含义。只是这时K表示1024,也就是2的10次 方。1KB表示1K个Byte,也就是1024个字节。

      MB:计量单位中的M(兆)是10的6次方,见到M自然想起要在该数值的后边续上六个0,即扩大一百万倍。在二进制中,MB也表示到了百万级的数量级,但1MB不正好等于1000000字节,而是1048576字节,即 1MB = 2E+20 Bytes = 1048576Bytes。
      
      MB就是通常说的兆

      KB 1KB=1024B

      MB 1MB=1024KB

      GB 1GB=1024MB

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

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

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


    按字节寻址和按字寻址

      • 终于回到正题上了,首先我们讲讲什么叫寻址,寻址就是寻找地址,当CPU请求数据的时候就会对进行读数据的请求。假设我们有一块硬盘,那么硬盘在接收到请求之后就开始查找这个CPU需求的数据具体是放在哪呢?实际上,硬盘上储存的所有数据都有一个自己的地址,在物理上实现是通过磁头在盘片上定位数据的一个过程。不同存储器计算机这两个有什么区别呢?下面我们从三个例题来入手:
      • 例1:设有一台机器有24根地址线,按字节寻址,求其寻址范围。
        解:如果按照字节寻址,就是一个地址线表示的数(即状态)对应一个字节的地址。由此可以得到地址的范围(即状态总和)就是224224,即16M。那么寻址的范围就是16MB,注意单位是MB,地址的范围表示的仅仅是数量值,而按字节寻址的范围其单位则为容量单位,自然要带上字节B。
        • 例2:设有一台机器有24根地址线,其字长为16位,按字寻址,求其寻址范围。
          解:字里面封装了字节,为了确保每个字节或者说每个数据都有自己的一个编号,那么需要牺牲一部分地址线来实现。16位字长的机器,每个字表示2个字节,用1位地址线就能区分出来,这边可以类比成“每个袋子装了两个包子,而我现在只给袋子编号,那么你想要找到袋子里面的包子到底是第一个还是第二个就必须在拿出一位的0和1来表示第一个还是第二个包子”。由此表示字地址的数据线位数就只剩下了24-1=23位了。所以寻址的范围就变成了2^23MW,即4MW了。
          • 例3:设有一台机器有24根地址线,其字长为32位,按字寻址,求其寻址范围。
            这个问题就留给后来的读者思考吧,想通了的话其实也很简单!
  • 相关阅读:
    Codeforces Round #563 (Div. 2)B;Ehab Is an Odd Person
    Codeforces Round #563 (Div. 2)C. Ehab and a Special Coloring Problem
    Codeforces Round #567 (Div. 2) A.Chunga-Changa
    Codeforces Round #569 (Div. 2) B. Nick and Array
    Codeforces Round #570 (Div. 3) B. Equalize Prices
    2019年银联极客挑战赛第一题
    js点击保存图片
    vant地区三级联动
    input 输入金额正则判断
    git 实用命令
  • 原文地址:https://www.cnblogs.com/sunshine88/p/8850254.html
Copyright © 2011-2022 走看看