字长(二进制位数)
字长是指同时参与运算的数的二进制位数,它决定着寄存器、加法器、数据总线等设备的位数,因而直接影响着硬件的代价,同时字长标志着计算机的计算精度和表示数据的范围。为了方便运算,许多计算机允许变字长操作,例如半字长、全字长、双字长等。一般计算机的字长在8~64位之间,即一个字由1~8个字节组成。微型计算机的字长有8位、准16位、16位、32位、64位等。
中文名字长
word size
计算机科学
同一时间处理二进制数位数
是CPU的主要技术指标之一
字长的选择
在设计计算机时,字长的选择是非常重要的。设计上的考虑倾向于为特定的用途(如地址)设定特定的位长。然而,出于经济的考虑,又应该仅使用一种尺寸,或者很少的几种与基本尺寸成倍数或分数(约数)关系的尺寸。这个首选的基本尺寸就成为该构架的字长。
字符的尺寸对于字长的选择也有影响。20世纪60年代中期以前,字符大部分以6位存储;这样最多允许64个字符,因此不能又大写字符。由于将字长定义成字符尺寸的倍数在处理时间和存储空间上都比较划算,所以这个时期字长也就被定义为6位(在二进制机器上)的倍数。通常的选择是36位字长,这也是适合于浮点数格式的一个长度。
随着IBM360系统的引入——该系统使用8位字符,并支持大小写字母——标准的字符(确切地说:字节)尺寸也转变成为8位。从那以后,字长也自然变成了8的倍数,16、32、64位字长被广泛使用。
各种字长的架构
早期的计算机设计中包括所谓的“可变字长”设计。(原文:Early machine designs included some that used what is often termed avariable word length.——译者)。在这类设计中,数字操作数没有固定的长度,它们通过检查某个特殊字符来判断是否结束。这样的机器使用BCD编码表示数字,例如IBM 702、IBM 705、IBM 7080、IBM 7010、UNIVAC 1050、IBM 1401和IBM 1620。
大部分这样的机器一次处理一个存储单元,因为每条指令和数据占用的数个单元,所以指令将使用数个周期来读取存储器。这类机器经常因为这个原因变得非常慢。例如,在IBM 1620 Model I上,取指令需要8个周期,只是为了读取12个数字(Model II降低到6个周期,不过如果指令不需要取其中的一个1个地址域的话,可以只需要4个周期;如果两个都不需要,则只需要1个周期)。
字和字节编址
字长对计算机构架的存储器模式有很大的影响。特别是:通常选择字作为存储器的编址方案,所谓存储器编址方案就是地址码能够指定的最小存储单位。编号相邻的存储器字组,其地址编号相差一。在计算机中这样很自然,因为它通常总是要处理以字为单位的数据(或者是以字的倍数)。并且具有让指令可以使用最小的长度来指定一个地址的优点,这样,就可以减少指令长度或者可以定义更多的指令条数。
当计算机很大的工作量是用来处理字节时,通常定义字节作为地址编址单位要比字更好。这样做字符串中的单个字符可以通过地址直接指定。当然,一个字仍然可以被地址访问,但是比起字编址方案,它的地址将使用更多的位数。在这种组织结构中,字长需要被定义为字符长度的整数倍。这种编址方案在IBM 360中被使用,此后即变成计算机设计中最普遍的方案。
2的幂
数据常常要占用不同大小的存储空间,例如,有些数值比其他的数值要求有更高的精度。通常使用的长度是编址单位(以字为单位编址或以字节为单位编址)的倍数,这个倍数常常是的2的幂。这样做是比较便利的,因为这样的话,将一个处理对象在数组中的索引值转化为这个处理对象的地址只需要进行一个移位操作(这在硬件上只需要进行布线的变化)而不需要进行乘操作。某些时候这样的做法还可以避免除操作。因此,一些现代计算机设计使用的字长(或者其他的操作数)是2的幂乘以字节尺寸。
字长表
年份 | 计算机架构 | 字长 | 整数长度 | 浮点数长度 | 长度指令 | 编址单位 | 字符长度 |
1941 | Zuse Z3 | 22 b | – | w | 8 b | w | – |
1942 | ABC | 50 b | w | – | – | – | – |
1944 | Harvard Mark I | 23 d | w | – | 24 b | – | – |
1946 (1948) {1953} | ENIAC (w/Panel #16) {w/Panel #26} | 10 d | w, 2w (w) {w} | – | – (2d, 4d, 6d, 8d) | – – {w} | – |
1951 | UNIVAC I | 12 d | w | – | ½w | w | 1 d |
1952 | IAS machine | 40 b | w | – | ½w | w | 5 b |
1952 | IBM 701 | 36 b | ½w,w | – | ½w | ½w,w | 6 b |
1952 | UNIVAC 60 | nd | 1d, ... 10d | – | – | – | 2d, 3d |
1953 | IBM 702 | nd | 0d, ... 511d | – | 5d | d | 1 d |
1953 | UNIVAC 120 | nd | 1d, ... 10d | – | – | – | 2d, 3d |
1954 (1955) | IBM 650 (w/IBM 653) | 10 d | w | – (w) | w | w | 2 d |
1954 | IBM 704 | 36 b | w | w | w | w | 6 b |
1954 | IBM 705 | nd | 0d, ... 255d | – | 5d | d | 1 d |
1954 | IBM NORC | 16 d | w | w, 2w | w | w | – |
1956 | IBM 305 | nd | 1d, ... 100d | – | 10d | d | 1 d |
1958 | UNIVAC II | 12 d | w | – | ½w | w | 1 d |
1958 | SAGE | 32 b | ½w | – | w | w | 6 b |
1958 | Autonetics Recomp II | 40 b | w, 79 b, 8d, 15d | 2w | ½w | ½w,w | 5 b |
1959 | IBM 1401 | nd | 1d, ... | – | d, 2d, 4d, 5d, 7d, 8d | d | 1 d |
1959 (TBD) | IBM 1620 | nd | 2d, ... | – (4d, ... 102d) | 12d | d | 2 d |
1960 | LARC | 12 d | w, 2w | w, 2w | w | w | 2 d |
1960 | IBM 1410 | nd | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
1960 | IBM 7070 | 10 d | w | w | w | w,d | 2 d |
1960 | PDP-1 | 18 b | w | – | w | w | 6 b |
1961 | IBM 7030 (Stretch) | 64 b | 1b, ... 64b, 1d, ... 16d | w | ½w,w | b, ½w,w | 1 b, ... 8 b |
1961 | IBM 7080 | nd | 0d, ... 255d | – | 5d | d | 1 d |
1962 | UNIVAC III | 25 b, 6 d | w, 2w, 3w, 4w | – | w | w | 6 b |
1962 | UNIVAC 1107 | 36 b | /6w, ⅓w, ½w,w | w | w | w | 6 b |
1962 | IBM 7010 | nd | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d |
1962 | IBM 7094 | 36 b | w | w, 2w | w | w | 6 b |
1963 | Gemini Guidance Computer | 39 b | 26 b | – | 13 b | 13 b, 26 b | – |
1963 (1966) | Apollo Guidance Computer | 15 b | w | – | w, 2w | w | – |
1964 | CDC 6600 | 60 b | w | w | ¼w, ½w | w | 6 b |
1965 | IBM 360 | 32 b | ½w,w, 1d, ... 16d | w, 2w | ½w,w, 1½w | 8 b | 8 b |
1965 | UNIVAC 1108 | 36 b | /6w, ¼w, ⅓w, ½w,w, 2w | w, 2w | w | w | 6 b, 9 b |
1965 | PDP-8 | 12 b | w | – | w | w | 8 b |
1970 | PDP-11 | 16 b | w | 2w, 4w | w, 2w, 3w | 8 b | 8 b |
1971 | Intel 4004 | 4 b | w,d | – | 2w, 4w | w | – |
1972 | Intel 8008 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
1972 | Calcomp 900 | 9 b | w | – | w, 2w | w | 8 b |
1974 | Intel 8080 | 8 b | w, 2w, 2d | – | w, 2w, 3w | w | 8 b |
1975 | Cray-1 | 64 b | 24 b,w | w | ¼w, ½w | w | 8 b |
1975 | Motorola 6800 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
1975 | MOS Tech. 6501 MOS Tech. 6502 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b |
1976 | Zilog Z80 | 8 b | w, 2w, 2d | – | w, 2w, 3w, 4w, 5w | w | 8 b |
1978 (1980) | Intel 8086 (w/Intel 8087) | 16 b | ½w,w, 2d (w, 2w, 4w) | – (2w, 4w, 5w, 17d) | ½w,w, ... 7w | 8 b | 8 b |
1978 | VAX-11/780 | 32 b | ¼w, ½w,w, 1d, ... 31d, 1b, ... 32b | w, 2w | ¼w, ... 14¼w | 8 b | 8 b |
1979 | Motorola 68000 | 32 b | ¼w, ½w,w, 2d | – | ½w,w, ... 7½w | 8 b | 8 b |
1982 (1983) | Motorola 68020 (w/Motorola 68881) | 32 b | ¼w, ½w,w, 2d | – (w, 2w, 2½w) | ½w,w, ... 7½w | 8 b | 8 b |
1985 | ARM1 | 32 b | w | – | w | 8 b | 8 b |
1985 | MIPS | 32 b | ¼w, ½w,w | w, 2w | w | 8 b | 8 b |
1989 | Intel 80486 | 16 b | ½w,w, 2d w, 2w, 4w | 2w, 4w, 5w, 17d | ½w,w, ... 7w | 8 b | 8 b |
1989 | Motorola 68040 | 32 b | ¼w, ½w,w, 2d | w, 2w, 2½w | ½w,w, ... 7½w | 8 b | 8 b |
1991 | PowerPC | 32 b | ¼w, ½w,w | w, 2w | w | 8 b | 8 b |
2000 | IA-64 | 64 b | 8 b, ¼w, ½w,w | ½w,w | 41 b | 8 b | 8 b |
2002 | XScale | 32 b | w | w, 2w | ½w,w | 8 b | 8 b |
说明:b:位, d: 10进制数,w:该构架的字长,n:变量长度(variable size) |
有关术语
字
在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字,字反映计算机一次并行处理的一组二进制数。字通常分为若干个字节(每个字节一般是8位)。在存储器中,通常每个单元存储一个字,因此每个字都是可以寻址的。字的长度用位数来表示。
在计算机的运算器、控制器中,通常都是以字为单位进行传送的。字在不同的地址出现,其含义是不相同。例如,送往控制器去的字是指令,而送往运算器去的字就是一个数。
字节
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。在微型计算机中,通常用多少字节来表示存储器的存储容量。
参考资料1.2014年上半年信息系统管理工程师上午试卷综合知识(解析)·公开真题库
2.字节、字、位、比特的概念和关系【转发】·布布扣