最近在梳理计算机相关知识的时候,发现网上不少人将字、字长、机器字长、存储字长、总线宽度的概念搞混了!经过多方资料查询,得到一个靠谱的结论!
直接说结论:
1. 字长=机器字长=CPU总线的宽度(一般是地址总线和数据总线)=CPU的位数=通用寄存器的宽度。
注意:
(1)数据总线宽度不一定都等于字长(可以有32位,16位等),但是一般如果题目没有具体指明数据总线的宽度,默认等于字长。
举个例子:32位计算机:字长 = 机器字长 = 地址总线宽度=数据总线宽度=通用寄存器宽度=32位!
2. 存储容量 (KB)= 存储单元数量 * 存储单元字节数
存储容量 (Kb)= 存储单元数量 * 存储单元字长
存储单元数量 = 2^地址总线宽度
注意:
(1)存储单元计算机一般默认1Byte,与数据总线宽度无关,数据总线只影响CPU数据的传输速率,不影响存储单元字节数和存储容量!! (概念易混!)
存储单元计算机一般默认1Byte的原因直接po一段网友的精彩发言:
内存的可寻址单元是以字节为单位,也就是说不能cpu不能单独定位某个内存位(bit)而只能一次定位到byte; 机器的字长是指cpu一次可以读入的位数;32位可以读入四个字节;64位可以读入八个字节; 为了保证可以单独寻址单个字节;内存的每个字节都需要一个地址; 这样;32为地址线接口的内存只能有2^32*8bit=4GB的容量; 如果内存的寻址单元为两个字节,那么容量可以达到8GB,但是最小的单位将变成两个字节,哪怕我们只是存入一个char,也要占用两个字节;这是个寻址粒度和容量的问题; cpu和内存之间有内存控制器吧,cpu可以一次吐出四个字节到内存控制器;内存控制器分别寻址到每个字节,然后存入内存。 我们可以让只有一条地址线的cpu支持4GB的内存,但是我们只能保存一个数据进去。
(2)存储容量只跟地址总线宽度有关!
(3)存储字长是一个存储单元所存储的二进制位数,与机器字长无关,计算机一般都是8位(1Byte)
举个例子:
若256KB的SRAM具有16条数据线,则他具有多少条地址线?
答:18条
存储单元数量 = 存储容量 (KB)/存储单元字节数 = 256KB/1B = 256K = 2^8 * 2^10 = 2^18
所以有18条地址线,另外1K = 2^10 = 1024
总结:所以你经常看到网上很多说的,为什么地址总线为32位,数据总线为16位的CPU,最大可支持容量为4G(2^32) 而不是2^32 * 2B = 8GB ,因为数据总线根本不影响存储容量!只影响CPU传输速率!