深入理解计算机组成原理中不同字长的概念
一文读懂计组里的“字长”/“位数”/“宽度”
字长/机器字长/存储字长/指令字长
字长:默认是机器字长1
机器字长:计算机能直接处理的二进制数据位数
存储字长:每个存储单元能存放的二进制数据位数
指令字长:每条指令包含的二进制数据位数
各种硬件的位数
各种硬件的位数与它要做的工作相关,总结如下:
硬件 | 位数 |
---|---|
ALU | 机器字长 |
通用寄存器 | 机器字长 |
IR | 指令字长 |
PC | 对应存储单元个数 |
MAR | 对应存储单元个数 |
MDR | 存储字长 |
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端口的数量考虑进去。
数据总线位数
数据总线可以双向传输,其位数和机器字长、存储字长有关:如果等于机器字长,那么传输一次刚好可以处理一次;如果等于存储字长,那么传输一次刚好可以读写一次。
总线宽度
总线宽度又称总线位宽,是该总线可同时传输数据的位数,通常指数据总线的根数。
指令字长和存储字长的关系
指令字长一般是存储字长的整数倍。这是为了硬件设计方便,而不是必然的关系。
实际上指令字长取决于操作码长度、地址码长度和地址码个数。
-
站内有“字长为存储字长”的说法,这里我参考的是维基百科,默认为机器字长维基百科:字长 ↩︎