如何区分按字节编址与按字编址

  设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小? 

     如果按字节编址,则 

                     1MB = 2^20B 

  (ps:1MB=1024kb,1kb=1024btye,1024是2的10次方)

                     1字节=1B=8bit 

                     2^20B/1B = 2^20 

     地址范围为0~(2^20)-1,也就是说需要二十根地址线才能完成对1MB空间的编码,所以地址寄存器为20位,寻址范围大小为2^20=1M

(ps:求出该存储器最多可容纳多少字节,从0到最多可容纳的字节数就是地址范围)

     如果按字编址,则

                      1MB=2^20B

                      1字=32bit=4B

(ps:字长是32位,就是指1字=32bit,该信息只有在按字编址时才有用。这里的字长说的是存储字长)

                     2^20B/4B = 2^18   

      地址范围为0~2^18-1,也就是说我们至少要用18根地址线才能完成对1MB空间的编码。因此按字编址的寻址范围是2^18

以上题目注意几点:

1.区分寻址空间与寻址范围两个不同的概念,寻址范围仅仅是一个数字范围,不带有单位

  而寻址范围的大小很明显是一个数,指寻址区间的大小

  而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~(2^20)-1,寻址空间为1MB。

2.按字节寻址,指的是存储空间的最小编址单位是字节,

按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多。

3.区别M和MB。

                        M为数量单位。1024=1K,1024K=1M

                        MB指容量大小。1024B=1KB,1024KB=1MB.

地址的概念:存储器被划分成若干单元。从0号单元开始编号。这些编号就可以看作地址。

寻址的概念:CPU要从存储器读数据,必须要说明读存储器的哪个单元,即指明地址。地址信息通过地址总线向存储器传输。一个N位的地址总线,可以寻址的最大范围是2^N个存储单元。

按字节编址:存储器被划分成若干个单元,每个单元容量为1个字节,从0开始编号(地址)。

按字编址:存储器被划分为若干个单元,每个单元容量为1个字(假定为32位),从0开始编号。

对一个2M x 32位的存储器,其容量为8MB

按字编址:CPU一次寻址的大小为1个字(32位),共有8M*8bit/32bit = 2M个单元,即寻址2^21个存储单元,地址总线为21位。

按字节编址:CPU一次寻址大小为1个字节(8位),共有8M*8bit/8bit = 8M个单元,即寻址2^23个存储单元,地址总线为23位。

1、某计算机字长为32位,其存储容量为16MB,若按双字编址,它的寻址范围是多少?

2、某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?

解答:

我的方法是全部换算成1位2进制的基本单元来算。先计算总容量,如第一题中是16mb中,一B为8位,也就是8个一位基本单元组成,16M=2^24位=2^24个一位基本单元。所以总的基本单元是2^24*8。

一个字长是n位,就是说一个字是由n个一位基本单元组成。按照字来编址就是说由一个字所包含的一位基本单元的个数作为一个地址单元,它对应一个地址。同理,双字编址就是两个字所包含的的基本单元数作为一个地址单元。由于一个字节(1B)永远是8位,所以按字节编址永远是8个一位基本单元作为一个地址单元。寻址范围就是说总共有多少个这样的地址。

第一题中一个字长是32位,对于按字编址来说一个地址单元有32个基本单元,按双字编址则是一个地址单元有64个,按字节是8个,总容量是2^24*8个。所以按字编址的地址数是2^24*8/32个,按双字是2^24*8/64个,按字节是2^24*8/8个。因此,第一题答案是2^21=2M。

同理,第二题答案是2^26*8/8=2^26=64M。

来源:https://blog.csdn.net/qq_26222859/article/details/50558253

原文地址:https://www.cnblogs.com/zhj868/p/12797916.html