机器字长,存储字长,指令字长及其关系

  • 机器字长:cpu中ALU的输入端位数,由于ALU的输入来源通常是通用寄存器或内部数据总线,故也是通用寄存器位数和内部数据总线根数;同时ALU中运算的是定点数和浮点数,所以也是定点数位数,通常为8位,16位,32位,64位反映的是cpu的运算精度 
  • 存储字长:为cpu向内存取某个地址数据时一次性取走的数据量,可理解每行/个地址所拥有的数据量,通常为1B,2B,4B。为外部数据总线根数,通常机器字长为存储字长的整数倍,如1倍,2倍等(也就是机器字长比存储字长大,因为一个能处理32位定点数的cpu必然能处理16位,8位的在主存中的一个定点数,而8位cpu位数处理不了16位定点数)。且决定MDR寄存器位数
  • 指令字长:是单指令的长度(指令字长可以为双,单,半存储字长指令),若指令字长为双存储字长,则取指时需访问主存2次,指令字长决定IR寄存器位数

 

  • 注意:指令字长可以是存储字长的0.5,1,2等倍,机器字长可以是存储字长的1,2,4等倍,但指令字长和机器字长两者本身无必然倍数关系即互不影响,只是恰巧各自与存储字长有倍数关系。因为机器字长强调的是参与ALU运算的定点数位数,而定点数位数显然与指令长度也就是指令字长无关。且机器字长,存储字长,指令字长都必须是8bit即1Byte的整数倍,也就是当存储字长为1Byte时,指令字长最小也要1Byte,而不能取0.5倍,而当前者为16Byte时,后者最小可为1Byte

 

  • MAR位数由地址个数决定,地址个数=主存空间大小/存储字长,本题中地址个数=128KB/2B=256K(16位)因为题干提示 按字编址(字为16位即2B,且“字”默认为存储字长且与机器字长相同)
  • MDR位数由存储字长决定

 

  • 若无特别说明,计算机字长指的是存储字长,且默认其与机器字长相同,就算不相同也不影响计算,因为32位cpu,必然能处理32位,16位,8位等定点数,最多影响通用寄存器位数和cpu内部数据总线根数

你可能感兴趣的:(计算机组成原理)