机器字长、存储字长、指令字长的关系?

1. 机器字长是计算机一次性能处理数据的位数,那是否可以理解为存储字长等于机器字长呢?
2. 指令字长包括操作码和地址码的长度,那是否这里的地址码长度等于机器字长呢?如果不是那么为什么32位机器字长的计算机能寻址4G空间呢?
3. 指令也属于计算机数据,按机器字长的定义,指令字长也应该是等于机器字长,这样又出现了上面的矛盾,32位能寻址4G,,表示机器字长的位数全用来做地址码了,那么这时候操作码所的位数不是0了么?

1.这位兄台,是这样的,的确,指令字长=操作吗+地址码,但是地址码的长度并没有你想象的这么长,因为有很多方法可以缩减地址码的长度。
2.就像你担忧的,要对应4G的主存,是不是要32位的地址码呢?那一个3操作数的指令字长就要100多位,这显然不靠谱。所以要缩减地址码的长度,方法有几个,主要的是通过间接寻址的方法。
3.所以你要真正理解间接寻址和寄存器间接寻址这两个方法,打个比方,好比你有8个寄存器,那你找到某个寄存器单元只需要3个地址位,因为只有8个寄存器嘛,找到后,假设每个寄存器单元的长度是32位的,那再根据这个寄存器单元中的内容可以映射的找到对应的4G主存单元,这就是寄存器间接寻址方法,间接寻址也差不多。
4.所以其实你想的没全错,4G的主存要能对应上,起码要个32位的2进制空间来表示地址,但是这个地址不一定写在指令的地址码上,而是写在指令地址码对应的存储单元里,这样通过2步让短的地址码得到了扩充。
5.我尽量说的比较白话了,要是还有疑惑可以继续参考 蒋本珊 著的 计算机组成原理 教师用书里面的第三章貌似75页的 缩短指令中地址码长度的方法 小节也比较清楚。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-06-13
机器字长:CPU一次能够处理的数据的位数。通常等于寄存器的位数。例子:windows 64位/32位,这里的64位和32位指的就是该操作系统的机器字长。

存储字长:计算机存储器中一个存储单元可以存储的位数。例子:某某计算机按照字节编址,即说明该计算机的存储字长为1B=8位。

指令字长:计算机内一条指令的位数。这里通常指的定长指令。

机器字长与存储字长:两者没有必然的联系

机器字长与指令字长:两者没有必然的联系。它既可以等于机器字长也可以大于或者小于机器字长。通常把等于机器字长的指令称为单字长指令。把等于半个机器字长的指令称为半字长指令。把等于两倍机器字长的指令称为双字长指令。

存储字长和指令字长。各位可能经常看到这样的字眼:某某计算机按字节编址,指令长度为16位/32位。通常为了方便取址规定指令字长为存储字长的整数倍。现在的计算机指令长度基本都是存储字长的整数倍。
相似回答