首页 > 编程知识 正文

按字寻址和按字节寻址计算,按字寻址和按字节寻址的结果一样吗

时间:2023-05-03 13:33:35 阅读:222675 作者:257

最近读论文时候发现自己对这两个寻址方式的理解不够深刻,看了很多网友写的解释说明后,我发现没有找到一篇能让我理解清楚的文章,因此查找相关资料写下此篇。如有错误,欢迎指正。

 

基本概念

 

位(bit)

位是电子计算机中最小的数据单位。每一位的状态只有两种:0或1,在硬件上利用高电压和低电压两种信号实现;

 

字节(Byte, B)

字节由8个位组成,它是存储空间的基本计量单位

 

字由若干个字节组成。因此,字一定为字节的整数倍。字的位数称为字长(注意:字不等于字长乘以字节!字=字长×位)。比如一个8位的CPU,这里的8位指其字长为8位,即单位时间内可以处理8位二进制数,即一个字节数。现在的CPU大部分为64位,即单位时间内可以处理64位二进制数,即8个字节数;

 

地址线

用于传输地址信息的数据线,一根地址线可以通过高电平或低电平来区分1或0,因此一根地址线有两个状态:1或0,那么N根地址线可以表示个不同的状态。

 

寻址与寻址方式

 

什么是寻址?

寻址指当CPU请求数据时获得该数据在内存上的位置的过程。内存上存储的所有数据都会有一个可以区分的地址,这与其存放的位置相对应,当CPU请求数据时,内存中的电路会根据CPU的地址线上的信号利用数据总线向CPU返回数据。

那么内存是如何编码数据保存的位置的?这里涉及到上文所述的字节的概念。内存每一个存储位置的最小单元都可以储存0或1,即一个位的内容,而内存将8个位设定为一个存储空间的基本单位。而在地址线上每一个地址的编号便对应的是一个存储位置的最小的基本单位。

如何在地址线上用信号表示这个地址,这个问题引出了两个不同的寻址方式:按字节寻址和按字寻址。

 

按字节寻址

按字节寻址指一个地址线表示的数(即状态)与一个字节地址相对应。比如一台机器有30根地址线,如果按字节寻址,其寻址范围是=1GB。注意这里用的单位是B,原因如上文所述,30根地址线对应的是磁盘中的存储空间的基本单位,即1B,8个位。

 

按字寻址

计算机以此方式寻址时,每一个地址值指向了一个字,这里指向的便不是按字节寻址中的字节了。如前文所述对字的定义,一个字里面有任意个字节,那么计算机如何知道其地址指向的到底是字中的第几个字节呢?这便需要地址线中分出一部分标出其所指的到底是字中的第一个字节,还是第二个,亦或是其他。比如一个计算机有30根地址线,如果按字寻址,其字的字长为64位的话,那么每个字长有4个字节,4个字节用二进制编码需要两位来区分(比如第1、2、3、4个字节分别为00,01,10,11)因此真正用来表示字的位置的地址线有30-2=28,其寻址范围是2^28=256MW。注意这里单位为W表示一个字。

 

按字寻址和按字节寻址相同处

不难发现,不论哪种方式,其编码内存中存储基本单位(即B)的数量是一样的。拿上述两个例子来说,按字节寻址可编码1GB,按字寻址编码256MW,而根据例子中对字长的约定1W=4B,即其用来表示字中到底要第几个字节的两根地址线的值共可编码4个不同,其最终可编码的字节数:256M×4B=1GB,因此寻址方式不同只是定义上的差异,其实际上搜索的地址范围(这里的地址范围指的是搜寻的字节数,不是寻址范围!寻址范围求法参考上文两个例子中的解法)是一样的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。