深入理解计算机组成原理中不同字长的概念

一文读懂计组里的“字长”/“位数”/“宽度”

  • 字长/机器字长/存储字长/指令字长
  • 各种硬件的位数
  • ALU算术逻辑单元位数
  • 通用寄存器位数
  • IR指令寄存器位数
  • PC程序计数器位数
  • MAR地址寄存器位数
  • MDR数据寄存器位数
  • 按字节/字/Xbit编址
  • 地址总线位数
  • 数据总线位数
  • 总线宽度
  • 指令字长和存储字长的关系
  • 字长/机器字长/存储字长/指令字长

    字长:默认是机器字长1
    机器字长:计算机能直接处理的二进制数据位数
    存储字长:每个存储单元能存放的二进制数据位数
    指令字长:每条指令包含的二进制数据位数

    各种硬件的位数

    各种硬件的位数与它要做的工作相关,总结如下:

    硬件 位数
    ALU 机器字长
    通用寄存器 机器字长
    IR 指令字长
    PC 对应存储单元个数
    MAR 对应存储单元个数
    MDR 存储字长

    ALU算术逻辑单元位数

    ALU

    基本ALU具有三个并行数据总线,包括两个输入操作数A、B和一个结果输出Y,且A、B、Y总线宽度相同。
    ALU是CPU的核心部分,能直接处理的二进制数据位数(输入的操作数的位数)等于机器字长。

    通用寄存器位数

    ALU操作数的来源通常是通用寄存器,因此
    通用寄存器位数=输入ALU的操作数的位数=机器字长。

    IR指令寄存器位数

    IR用于保存当前正在执行或解码的指令。在简单的处理器中,每条要执行的指令都被加载到IR中,其位数取决于指令字长。

    PC程序计数器位数

    用于存放下一条要执行的指令在主存中的地址。位数取决于可寻址内存,例如,PC宽度为32位 能够寻址2^32个存储单元。所以PC的位数n反映了主存的容量。

    MAR地址寄存器位数

    MAR里保存着需要访问的数据的内存位置。位数同PC,由存储单元的个数决定。

    MDR数据寄存器位数

    MDR充当处理器和内存单元之间的缓冲区,存放指令或地址(间接寻址)。一个要存储的字必须传送到MDR ,从那里转到特定的内存位置。MDR的位数由存储字长决定。

    按字节/字/Xbit编址

    按字节/字/Xbit编址分别表示存储空间的最小编址单位是字节/字/Xbit,用白话说,每个存储单元里的二进制代码位数为1字节/1个字长/Xbit,这个长度就是存储单元长度,也即存储字长。

    地址总线位数

    地址总线位数决定了CPU可以直接访问的RAM的最大数量,因为每根线对应一个地址位。例如:具有32位地址总线的计算机可以直接寻址4GB(2^32B )的物理内存,而36位的计算机可以寻址64GB(2^36B)。
    如果I/O端口和主存地址空间统一编址,也要把I/O端口的数量考虑进去。

    数据总线位数

    数据总线可以双向传输,其位数和机器字长、存储字长有关:如果等于机器字长,那么传输一次刚好可以处理一次;如果等于存储字长,那么传输一次刚好可以读写一次。

    总线宽度

    总线宽度又称总线位宽,是该总线可同时传输数据的位数,通常指数据总线的根数。

    指令字长和存储字长的关系

    指令字长一般是存储字长的整数倍。这是为了硬件设计方便,而不是必然的关系。
    实际上指令字长取决于操作码长度、地址码长度和地址码个数。


    1. 站内有“字长为存储字长”的说法,这里我参考的是维基百科,默认为机器字长维基百科:字长 ↩︎

    物联沃分享整理
    物联沃-IOTWORD物联网 » 深入理解计算机组成原理中不同字长的概念

    发表回复