?
助记一下:
位b:一粒花生米,每一粒=一个二进制位 0/1
一个字节B:拥有8粒花生米的一勺花生米
字:我(CPU)一次能吃下(能处理)一勺或几勺花生米(一个字节或几个字节)
字长:我(计算机)一次吃下(处理的)这几勺里一共有多少粒(多少位数)花生米
?
官方一点:
?
??? bit,是计算机中最小的数据单位,使用二进制,只能表示0和1,在硬件上利用高电压和低电压两种信号实现。
??? 一个字节由8位组成,从0000 0000到1111 1111,转换为十进制为0-255,一共256个数字。它是存储空间的基本计量单位;
??? 是CPU一次能够处理数据位数的最大值.
??? 一个字通常由多个字节组成,和字长密切相关。因此,字一定为字节的整数倍。字的位数称为字长(注意:字不等于字长乘以字节!字=字长×位)。
??? 比如一个8位的CPU,这里的8位指其字长为8位,即单位时间内可以处理8位二进制数,即一个字节数。现在的CPU大部分为64位,即单位时间内可以处理64位二进制数,即8个字节数;
??? 32位的计算机中:32位(bit)=4字节(byte)=1字(word)
??? 64位的计算机中:64位(bit)=8字节(byte)=1字(word)
?
??? 又称作“机器字长”,顾名思义,就是字的长度,这里的长度用位来表示。
??? 64位CPU的字长就是64位、32位CPU的字长就是32位。
??? 计算机中的存储是由存储体来完成的,一个存储体相当于一个大箱子,这个大箱子又有许多小格子。
??? 小格子中存储的就是实际存储的数据,这个小格可以存储不同位数的数据,与MDR相关存储体中的小格子数量由地址线确定,和MAR相等。可结合下面图示理解。
?
??? 存储字长:即一个存储单元可存放的最大二进制位数,位数一般等于MDR大小。
??? 存储字:即一个存储单元中存储的一个具体的二进制代码组合。
??? 主存储器由许多存储单元组成,每个存储单元包括多个存储元,每个存储元存储一位二进制代码"0"或"1",故而存储单元可存储一串二进制代码。
??? 如下图中红色的 10100101,这串代码称为存储字,这串代码的位数称为存储字长。
??? 存储字长一般为一个字节(8bit)或字节的偶数倍, 许多存储单元共同构成了一个存储体。.
??? 主存储器=存储体
?
?
?
①指令字长
??? 是指指令中包含二进制代码的位数,即一条指令的总长度(可能会变)。
??? 取决于操作码的位数(即多少操作)、操作数地址的长度(取决于主存的大小,如果容量为1GB的主存按字节寻址,每个操作数地址的长度都需要30位地址码)以及操作数地址的个数(四、三、二、一、零地址等)。与机器字长没有必然的联系。
??? 但为了硬件设计方便,指令字长一般取字节或存储字长的整数倍。如果指令字长等于存储字长的2倍,那么需要⒉次访存,那么取指周期就等于机器周期的⒉倍。
②机器字长
??? CPU进行一次整数运算所能处理的二进制数据的位数,通常和ALU直接相关,运算器内部寄存器决定。
③存储字长
??? 是指一个存储单元存储的二进制代码(存储字)的长度。通常和MDR位数相同。
注:如果指令字长等于存储字长,那么取指周期就等于机器周期。
?
?
地址总线线数 —> 可寻址的范围 一> 存储器最大容量
数据总线线数 —> 一次可取的数据位数 —> MDR的位数
????????????????????? —> 运算器一次处理的位数 —> 运算器寄存器位数
控制总线线数 —> 一次可并行传送的控制信息位数
IO线数 —> 与外设通信的并行程度
?
?
PC位数:主存字数(PC即程序计数器:用于给出下一条指令地址)
IR位数:指令字长(IR即指令寄存器:用于接收从主存中取到的指令)
?
?
?
?
?
?
简单来说:
按字节编址是指内存中每一个字节,也就是8个比特的一个内存单元,都有一个地址。
假设一个字有8个字节。这时按字编码,意味着每8个字节才有一个地址。
这也意味着每8个字节有7个字节是没有地址的。
?
?
如果不理解,举个通俗的例子:
?? ?? 拿房子举例,你有N个房子,每个房子B立方米这么大,那么,你的房子容量总共有多大,自然是NB立方米了。每个房子B立方米,也就是按字节编址咯 ~
? ? ? 这里的N个房子,也就是寻址单元的个数,log2(N)即地址线位数。
????? 但要是有人规定,两个房子才算一个房子,才给一个房间号呢,那么,你的房子容量怎么算啊,自然是N/2在乘以2B了。即按双字寻址。
????? 有人要是规定四个房子才算真正一个房子,才给一个房间号,那么,你的房子容量怎么算,自然是N/4在乘以4B了。
?
那我们先从一道简单的问题来操练一下吧 ~ !
设有一个1MB容量的存储器,字长32位,
问:按字节编址,字编址的寻址范围、各自的寻址范围大小、MAR和MDR的位数??
答:
如果按字节编址:
????? 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
????? 按字节编址,1字节=8bit,则MDR的位数=8
(ps:求出该存储器最多可容纳多少字节,从0到最多可容纳的字节数就是地址范围)
?
如果按字编址:
????? 1MB=2^20B
????? 1字=32bit=4B
(ps:字长是32位,就是指1字=32bit,该信息只有在按字编址时才有用。这里的字长说的是存储字长)
????? 2^20B/4B = 2^18???
????? 地址范围为0~2^18-1,也就是说我们至少要用18根地址线才能完成对1MB空间的编码。
????? 所以MAR为20位,按字编址的寻址范围是2^18
????? 按字编址,1字=32bit,则MDR的位数=32
?
以上题目注意几点:
1.区分寻址空间与寻址范围两个不同的概念,寻址范围仅仅是一个数字范围,不带有单位
而寻址范围的大小很明显是一个数,指寻址区间的大小
而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~(2^20)-1,要减1呢,因为地址是从0开始计算的。寻址空间为1MB。
2.按字节寻址,指的是存储空间的最小编址单位是字节,按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多。
3.区别M和MB。
补充例题1:
某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
补充例题2:
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。
参考来源
计算机 存储体 存储单元 存储元 存储字 存储字长的联系__Mr. White的博客-CSDN博客_存储元