arkulo56 / thought

记录所有可记录的零碎技术点,请关注Issues
20 stars 9 forks source link

字和字长 #21

Open arkulo56 opened 9 years ago

arkulo56 commented 9 years ago

在计算机中作为一个整体被存取、传送、处理的二进制数字符串叫做一个字或单元,每个字中二进制位数的长度,称为字长。 一个字由若干个字节组成,不同的计算 机系统的字长是不同的,常见的有8位、16位、32位、64位等,字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计算机性能的一个重要指标。

目前主流微机正在由32位机向64位机转变。

注意字与字长的区别,字是单位,而字长是指标,指标需要用单位去衡量。正象生活中重量与公斤的关系,公斤是单位,重量是指标,重量需要用公斤加以衡量。

如果说某计算机系统的字长为32bits,那意味着:

  1. CPU通用数据总线的宽度为32bits;
  2. CPU内部数据寄存器位数为32bits;
  3. 这台机器一次能做处理,运算的最长字节的能力32bits;

此外,字长对软件/数字的影响:

  1. 整数 – 计算机处理的整数值通常可以有若干种不同的长度,但是其中总有一种正好是该构架的字长。
  2. 浮点数 – 计算机处理的浮点数通常是一个字长或字长的倍数。
  3. 地址 – 计算机处理的存储器地址必须有足够的尺寸,以便可以表示需要的数值范围,但是又不能过大。经常使用的尺寸是字,不过也可以是字的倍数或分数。
  4. 存储器-处理器传送 – 当处理器从存储器子系统读取数据至寄存器,或者,写寄存器数据到存储器,传送的数据通常是字。
  5. 编址单位 – 在一个给定的构架中,连续的地址值对应连续的存储器单位;该单位就是编址单位。在大部分计算机中,这个单位或者是一个字符(例如:字节)或者是一个字;
  6. 指令 – 机器指令通常是字长的分数或倍数。因为指令和数据经常共享同一个存储子系统,所以自然作出这样的选择。而在哈佛大学架构(Harvard architecture)中,指令和数据的长度并不需要有关联。

...

字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍字长运算。

字符的尺寸对于字长的选择也有影响。随着IBM360系统的引入——该系统使用8位字符,并支持大小写字母——标准的字符(确切地说:字节)尺寸也转变成为8位。从那以后,字长也自然变成了8的倍数,16、32、64位字长被广泛使用。