十进制计算机是一种以十进制格式表示和处理数字及地址的计算机——而非如大多数现代计算机中常见的二进制。一些十进制计算机具有可变字长,从而能够对相对较大的数字进行运算。
从早期计算机到20世纪60年代乃至70年代,十进制计算机一直很常见。直接使用十进制省去了为输入和输出而将十进制转换为二进制的需要,并且相比那些通过子程序进行此类转换的二进制计算机,显著提高了速度。这使得原本低端的机器在会计和簿记等任务中也能提供实用的性能,因此那个时代的许多中低端系统都基于十进制。
1964年,IBM宣布推出System/360系列二进制计算机,该系列包含执行十进制算术运算的指令;随后其他具备十进制算术运算指令的二进制计算机系列也相继问世。20世纪70年代,支持十进制算术运算指令的微处理器在电子计算器、收银机及类似设备中变得普遍,尤其是在8位时代。
二进制计算机整体性能的快速提升削弱了十进制运算的价值。最后一批支持十进制运算的主要新设计之一是摩托罗拉68000,它于1980年出货。较近时期,IBM在其POWER6设计中增加了对十进制的支持,以便直接支持为System/360等20世纪60年代平台编写的程序。除此例外,大多数现代处理器设计很少或根本不支持十进制。
早期计算机
早期的纯十进制计算机包括ENIAC、、、、、80型。在这些机器中,数据的基本单位是十进制数字,采用以下几种方案之一进行编码,包括二进码十进数(BCD码)、以及五取二码。除IBM 1620和1710外,这些机器均使用。当在这些机器中使用非数字字符时,它们被编码为两个十进制数字。
其他早期计算机则是面向字符的,提供用于对十进制数字字符串进行算术运算的指令,采用BCD码或加三码来表示十进制数字。在这些机器上,基本数据元素是英数字元,通常用六位编码。UNIVAC I和采用字寻址,字长为12个字符。IBM的例子包括、、、以及
一些早期的二进制计算机,例如和RCA 601,也具备十进制算术指令。一些其他计算机则拥有特殊指令,如IBM 7090上的CVR和CAQ,可用于加速十进制加法以及十进制到二进制的转换。
后期计算机
IBM System/360系列计算机于1964年推出,旨在统一IBM的各产品线,采用二进制寻址、二进制整数运算和二进制浮点数运算;同时,该系列还包含用于包入十进制整数运算的指令。
其他一些系列的二进制计算机也增加了十进制算术指令。例如,基于二进制的,在某些型号中提供了扩展指令集,支持包入十进制整数运算和十进制浮点数运算。
IBM的中型计算机系列(从1969年的开始)是带有十进制整数指令的二进制计算机。
数字设备公司于1977年推出的VAX系列32位二进制计算机,也包含包入十进制整数运算指令。
从1966年的宝来B2500和B3500开始,仅提供十进制算术运算,包括十进制寻址,从而成为一种十进制架构。
更近期的计算机
对BCD码的支持在早期微处理器中很常见,这些微处理器常用于电子计算器和收银机等完全基于十进制运算的设备中。此类支持的实例可见于英特尔8080、MOS 6502、Zilog Z80、摩托罗拉6800/以及那个时代的大多数其他设计中。在这些设计中,BCD码在算术逻辑单元(ALU)中得到直接支持,使其能够直接对十进制数据进行操作。
至今仍保留在x86家族中,但在长模式下不受支持。这些指令在算术运算之前或之后将单字节BCD数(包括包入和非包入格式)转换为二进制格式。这些操作并未扩展到更宽的格式,因此现在使用32位或更宽的BCD“技巧”进行BCD计算反而比这些指令更快。 FPU具有转换10字节(18位十进制数字)包入十进制数据的指令,不过随后会将其作为浮点数进行操作。
摩托罗拉68000系列既提供了转换实用程序,也提供了在BCD中直接进行加减运算的能力。当定义指令集时,这些指令被移除了。
增加了三种十进制类型,具有两种二进制编码,分别对应7位、16位和34位十进制。
少数直接支持十进制的RISC指令集之一是IBM的,它从Power ISA 2.05版本开始增加了对IEEE 754-2008十进制浮点的支持。十进制整数支持原本是其大型机产品线的一部分,而作为将和zSeries工作负载进行合并的更广泛努力的一部分,十进制算术被添加到POWER系列中,以便单个处理器能够以完整性能支持这些旧机型的工作负载。IBM POWER6处理器是首个实现这些类型的Power ISA处理器,它采用了二进制编码而非BCD。从Power ISA 3.0开始,又增加了十进制整数算术指令。
是IBM大型机指令集的64位版本,从开始增加了对IEEE 754十进制浮点数相同编码的支持。从z15处理器开始,增加了用于执行十进制整数运算的向量指令。
参见
*三进制计算机
参考文献
延伸阅读
- (NB. This title provides detailed description of decimal calculations, including explanation of binary-coded decimals and algorithms.)
- (NB. At least some batches of this reprint edition were misprints with defective pages 115–146.)
评论 (0)