计组_关于寻址范围的问题理解

本文解析了寻址范围的概念,区分了寻址空间与寻址范围的不同,并解释了地址总线和数据总线的作用。通过实例分析了不同寻址方式下的寻址范围计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.问题缘由

今天在看2020版高分笔记的时候在寻址范围的概念和数据寄存器的位数这一块儿犯了迷糊,在弄懂之后决定总结并记录一下。

首先要区分两个词:

  • 寻址空间应该反映的是内存的容量的大小。
  • 寻址范围应该是一个反映地址取值的数值范围。

来看看问题:

  • 寻址范围的概念怎么理解?例如地址线20根,数据线16根,按字寻址为什么是1MB,而不是2MB?按字寻址为什么是512KB,而不是1MB?

实际上题目中的这种描述是很模糊的,因为1MB也好,2MB也好描述的都是描述寻址空间的,而下面的题目问的却都是寻址范围。在21版上第5页末尾明明已经说明寻址范围不带B和bit等单位,在下一页却依然将寻址范围表述成 2 20 2^{20} 220=1MB,不得不吐槽一下这本书实在很不严谨。

1.几个存储相关的概念

首先来了解几个基本概念,比特位和字节这两个都好理解,但是字长这一块时间长了就有些模糊了,这也是理解不到位的主要原因。

  • 字位 (bit):计算机存储信息的最小单位,即二进制位。
  • 字节(Byte):计量存储容量的一种计量单位,通常情况下1Byte=8bits
  • 字长(Word):计算机同一时间可以处理的二进制数位数叫字长,我们平时说计算机是多少位的,那么相应的字长就是多少个字位,例如对于32位的计算机,它一次就能处理32位数据,它的字长就是32bits=4Bytes

2.地址总线和数据总线的概念

总线是计算机中传输数据的公共通道, 按照其功能大体上可以分为地址总线和数据总线

数据总线是双向三态形式的总线,它既可以把CPU的数据传送到存储器或I/O等其它部件,也可以将其它部件的数据传送到CPU。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。

地址总线是专门用来传送地址的,且地址只能从CPU传向外部存储器或I/O端口,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小

3.回归问题

由上面的内容不难分析出,一根地址线可以看成一个bit位,可以表示出0和1这两个数值,可以用这连个数值代表两个地址。比如0代表地址0,1代表地址1,对于按字节寻址,一个地址对应的空间大小就是一个字节,所以两个地址可以寻址的范围就是2,可寻址空间就是两个字节。

于是如果地址总线有n条,那么实际可以用来表示内存空间的就是n个bit位,n个bit位可以表示的数据范围是 0 0 0~ 2 n − 1 {2^n-1} 2n1 2 n 2^n 2n个数,那么可寻址范围就是 2 n 2^n 2n,按字节寻址可寻址空间就为 2 n 2^n 2n Bytes 。

则对于有20根地址总线来说,它的可寻址范围就是:
2 20 = 2 10 K = 1 M 2^{20}=2^{10}K=1M 220=210K=1M
按字节寻址可寻址空间就是:
2 20 B y t e s = 2 10 K B = 1 M B 2^{20}Bytes=2^{10}KB=1MB 220Bytes=210KB=1MB
这里要注意单位,也就是按多大的空间来寻址,那么当按字长来寻址的时候,字长的大小不是固定的,它由计算机位数决定的,而计算机位数又跟数据总线条数有关,所以需要用到数据总线的相关信息。由字长的大小不难得出,对于有16根数据总线的来说,它的字长就是:
16 b i t s = 2 B y t e s 16bits=2Bytes 16bits=2Bytes
也就是说一个字长就有两个字节。上面说过按照字节寻址范围是1M,因为是按字节寻址,每个寻址单元已经是最小的了,所以不需要字内寻址,如果按字寻址,对于题目中的字长两字节,则需要字内寻址,即区分字内这两个字节的地址)。

对于按字寻址,由于需要区分字内字节地址,所以不能把20根地址线全拿出来按字寻址,也要分部分来进行字内寻址。那么到底分出几根呢?

对于字长为2字节的字内寻址来说,里面只有两个字节,所以一个bit位("0"和"1"两种状态)即可区分出它们。由此不难得到,对于字长为4个字节的字内寻址,要区分出4种状态,那么我们需要2个bit位来实现(“00”,“01”,“10”,“11”)。以此可以类推。。。

回到题目中来,按照字来寻址的时候,由于要分出一根地址线来进行字内寻址,所有只有19根地址线可以用来进行按字寻址,所以按字寻址的可寻址范围就是:
2 19 = 2 9 K = 512 K 2^{19}=2^9K=512K 219=29K=512K

4.总结

  • 按字节寻址的时候,可寻址范围只跟地址总线条数有关,一般对于n条地址总线,可寻址范围为 2 n 2^n 2n ,可寻址空间为 2 n 2^n 2n Bytes。
  • 按字长寻址的时候,字长大小由数据总线的条数决定,当一个字里包含多于1个字节的时候需要区分这些字节所以要进行字内寻址,当然也是通过地址总线来实现,这个时候需要分出地址总线来进行字内寻址。

5.参考

Refer to:
周伟:2020版计算机组成原理高分笔记

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值