Decimal computer
Decimal computers are computers which can represent numbers and addresses in decimal as well as providing instructions to operate on those numbers and addresses directly in decimal, without conversion to a pure binary representation. Some also had a variable wordlength, which enabled operations on numbers with a large number of digits.
Early computers
Early computers that were exclusively decimal include the ENIAC, IBM NORC, IBM 650, IBM 1620, IBM 7070, UNIVAC Solid State 80. In these machines, the basic unit of data was the decimal digit, encoded in one of several schemes, including binary-coded decimal (BCD), bi-quinary and two-out-of-five code. Except for the IBM 1620 and 1710, these machines used word addressing. When non-numeric characters were used in these machines, they were encoded as two decimal digits.
Other early computers were character oriented, providing instructions for performing arithmetic on character strings of decimal numerals, using BCD or excess-3 (XS-3)[1] for decimal digits. On these machines, the basic data element was an alphanumeric character, typically encoded in six bits. UNIVAC I and UNIVAC II used word addressing, with 12-character words. IBM examples include IBM 702, IBM 705, the IBM 1400 series,[2] IBM 7010, and the IBM 7080.
Later computers
The IBM System/360, introduced in 1964 to unify IBM's product lines, used per character binary addressing, and also included instructions for packed decimal arithmetic as well as binary integer arithmetic, and binary floating point. It used 8-bit characters and introduced EBCDIC encoding, though ASCII was also supported.[3] The Burroughs B2500 introduced in 1966 also used 8-bit EBCDIC or ASCII characters and could pack two decimal digits per byte, but it did not provide binary arithmetic, making it a decimal architecture.
More modern computers
Several microprocessor families offer limited decimal support. For example, the 80x86 family of microprocessors provide instructions to convert one-byte BCD numbers (packed and unpacked) to binary format before or after arithmetic operations .[4] These operations were not extended to wider formats and hence are now slower than using 32-bit or wider BCD 'tricks' to compute in BCD (see ). The x87 FPU has instructions to convert 10-byte (18 decimal digits) packed decimal data, although it then operates on them as floating-point numbers.
The Motorola 68000 provided instructions for BCD addition and subtraction;[5] as does the 6502. In the much later 68000 family-derived processors, these instructions were removed when the Coldfire instruction set was defined, and all IBM mainframes also provide BCD integer arithmetic in hardware. The Zilog Z80, Motorola 6800 and its derivatives, together with other 8-bit processors, and also the Intel x86 family have special instructions that support conversion to and from BCD. The Psion Organiser I handheld computer’s manufacturer-supplied software implemented its floating point operations in software using BCD entirely. All later Psion models used binary only, rather than BCD.
Decimal arithmetic is now becoming more common; for instance, three decimal types with two binary encodings were added to the 2008 IEEE 754r standard, with 7-, 16-, and 34-digit decimal significands.[6]
The IBM Power6 processor and the IBM System z9 have implemented these types using the Densely Packed Decimal binary encoding,[7] the first in hardware and the second in microcode.
References
- UNIVAC 1005 Extended System Programmers Reference Manual (PDF), Sperry Rand, p. 1–8, FSD-1089r1
- IBM 1401 Data Processing System: Reference Manual (PDF). IBM. April 1962. p. 20. A24-1403-5.
- IBM (1964). IBM System/360 Principles of Operation (PDF). First Edition. A22-6821-0.
- "MASM Programmer's Guide". Microsoft. 1992. Archived from the original on 2007-07-15. Retrieved 2007-07-01.
- "Motorola M68000 Family Programmer's Reference Manual" (PDF). Retrieved 2007-07-01.
- "DRAFT Standard for Floating Point Arithmetic P754" (PDF). 2006-10-04. Retrieved 2007-07-01.
- Cowlishaw, Mike F. (2015) [1981,2008]. "General Decimal Arithmetic". IBM. Retrieved 2016-01-02.
Further reading
- Schmid, Hermann (1974). Decimal Computation (1 ed.). Binghamton, New York, USA: John Wiley & Sons, Inc. ISBN 0-471-76180-X. Retrieved 2016-01-03. (NB. This title provides detailed description of decimal calculations, including explanation of binary-coded decimals and algorithms.)
- Schmid, Hermann (1983) [1974]. Decimal Computation (1 (reprint) ed.). Malabar, Florida, USA: Robert E. Krieger Publishing Company. ISBN 0-89874-318-4. Retrieved 2016-01-03. (NB. At least some batches of this reprint edition were misprints with defective pages 115–146.)
- Jones, Douglas W. (2014-09-10) [1999]. "Arithmetic Tutorials". Iowa City, Iowa, USA: The University of Iowa, Department of Computer Science. Retrieved 2016-01-03.