Десятичный компьютер

Десятичный компьютер — это компьютер, который может представлять числа и адреса в десятичном формате и предоставляет инструкции для работы с этими числами и адресами непосредственно в десятичном формате, без преобразования в чисто двоичное представление. Некоторые также имели переменную длину слова , что позволяло выполнять операции с числами с большим количеством цифр.
Десятичные компьютеры были распространены от первых машин до 1960-х и 1970-х годов. Использование десятичных чисел напрямую избавило от необходимости преобразования десятичных чисел в двоичные для ввода и вывода и позволило значительно повысить скорость по сравнению с двоичными машинами, которые выполняли эти преобразования с помощью подпрограмм. Это позволило машинам низкого уровня обеспечить практическую производительность для таких задач, как бухгалтерский учет и ведение бухгалтерского учета , и многие системы низкого и среднего уровня той эпохи были основаны на десятичной системе счисления.
Линейка двоичных компьютеров IBM System/360 , анонсированная в 1964 году, включала инструкции, выполняющие десятичную арифметику; Затем последовали другие линейки двоичных компьютеров с инструкциями по десятичной арифметике. В 1970-е годы микропроцессоры с инструкциями, поддерживающими десятичную арифметику, стали обычным явлением в электронных калькуляторах , кассовых аппаратах и аналогичных устройствах, особенно в 8-битную эпоху.
Быстрое улучшение общей производительности двоичных машин подорвало ценность десятичных операций. Одним из последних крупных новых проектов, поддерживающих его, был Motorola 68000 , выпущенный в 1980 году. Совсем недавно IBM добавила поддержку десятичных чисел в свои разработки POWER6 , чтобы позволить им напрямую поддерживать программы, написанные для платформ 1960-х годов, таких как System/360 . За этим исключением, большинство современных проектов практически не поддерживают десятичные дроби.
Ранние компьютеры
[ редактировать ]Ранние компьютеры , которые были исключительно десятичными, включают ENIAC , IBM NORC , IBM 650 , IBM 1620 , IBM 7070 , UNIVAC Solid State 80 . В этих машинах основной единицей данных была десятичная цифра, закодированная в одной из нескольких схем, включая двоично-десятичный (BCD), двоично-десятичный код и код «два из пяти» . За исключением IBM 1620 и 1710, эти машины использовали словесную адресацию . Когда в этих машинах использовались нечисловые символы, они кодировались двумя десятичными цифрами.
Другие ранние компьютеры были символьно-ориентированными и предоставляли инструкции для выполнения арифметических операций над символьными строками десятичных чисел с использованием BCD или превышения-3 (XS-3). [1] для десятичных цифр. На этих машинах основным элементом данных был буквенно-цифровой символ, обычно закодированный в шести битах . UNIVAC I и UNIVAC II использовали словесную адресацию с 12-символьными словами. Примеры IBM включают IBM 702 , IBM 705 , серию IBM 1400 , [2] IBM 7010 и IBM 7080 .
Некоторые ранние двоичные компьютеры, такие как Honeywell 800. [3] и RCA 601, [4] [5] также имелись инструкции по десятичной арифметике. У некоторых других были специальные инструкции, такие как CVR и CAQ на IBM 7090 , которые можно было использовать для ускорения сложения десятичных чисел и преобразования десятичных чисел в двоичные. [6]
Более поздние компьютеры
[ редактировать ]Семейство компьютеров IBM System/360 , представленное в 1964 году для унификации продуктовых линеек IBM, использует двоичную адресацию, арифметику двоичных целых чисел и двоичную плавающую запятую; он также включает инструкции для арифметики упакованных десятичных целых чисел. [7]
Некоторые другие линейки двоичных компьютеров добавили инструкции десятичной арифметики. Например, серия Honeywell 6000 , основанная на двоичной серии GE-600 , предлагала в некоторых моделях расширенный набор команд, который поддерживал арифметику упакованных десятичных целых чисел и десятичную арифметику с плавающей запятой. [8]
IBM Линейка компьютеров среднего класса , начиная с System/3 в 1969 году, [9] представляют собой двоичные компьютеры с инструкциями в виде десятичных целых чисел.
Линия VAX 32-битных двоичных компьютеров от Digital Equipment Corporation , представленная в 1977 году, также включает в себя упакованные арифметические инструкции для десятичных целых чисел.
Системы Burroughs Medium , начиная с Burroughs B2500 и B3500 в 1966 году, обеспечивают только десятичную арифметику, включая десятичную адресацию, что делает ее десятичной архитектурой.
Более современные компьютеры
[ редактировать ]Поддержка BCD была распространена в ранних микропроцессорах , которые часто использовались в таких целях, как электронные калькуляторы и кассовые аппараты , где все математические операции были десятичными. Примеры такой поддержки можно найти в Intel 8080 , MOS 6502 , Zilog Z80 , Motorola 6800/6809 и . большинстве других разработок той эпохи В этих проектах BCD напрямую поддерживался в АЛУ, что позволяло ему напрямую выполнять операции с десятичными данными.
Коды операций Intel BCD по сей день остались в семействе x86 , хотя в длинном режиме они не поддерживаются. Эти инструкции преобразуют однобайтовые числа BCD ( упакованные и неупакованные ) в двоичный формат до или после арифметических операций. [10] Эти операции не были распространены на более широкие форматы и, следовательно, теперь выполняются медленнее, чем использование 32-битных или более широких «трюков» BCD для вычислений в BCD. [11] FPU x87 имеет инструкции для преобразования 10-байтовых (18 десятичных цифр) упакованных десятичных данных, хотя затем он обрабатывает их как числа с плавающей запятой.
Серия Motorola 68000 предлагала как утилиты преобразования, так и возможность прямого сложения и вычитания в BCD. [12] Эти инструкции были удалены, когда был определен набор инструкций Coldfire .
В версии стандарта чисел с плавающей запятой IEEE 754 от 2008 года добавлены три десятичных типа с двумя двоичными кодировками: 7-, 16- и 34-значные десятичные значения . [13]
Одним из немногих наборов инструкций RISC , напрямую поддерживающих десятичные числа, является Power ISA от IBM , в который добавлена поддержка десятичных чисел с плавающей запятой IEEE 754-2008, начиная с Power ISA 2.05. Поддержка десятичных целых чисел была частью их линейки мэйнфреймов, и в рамках более широких усилий по объединению десятичной арифметики iSeries и zSeries была добавлена в линейку POWER, чтобы один процессор мог поддерживать рабочие нагрузки этих старых машин с полной производительностью. [ нужна ссылка ] Процессор IBM POWER6 — первый процессор Power ISA, в котором реализованы эти типы, используя плотно упакованное десятичное двоичное кодирование, а не BCD. [14] Начиная с Power ISA 3.0, были добавлены инструкции по арифметике десятичных целых чисел.
z/Architecture , 64-битная версия набора команд мэйнфрейма IBM, добавила поддержку тех же кодировок десятичных чисел с плавающей запятой IEEE 754, начиная с IBM System z9 . [14] Начиная с процессора z15 , были добавлены векторные инструкции для выполнения арифметических операций с десятичными целыми числами. [15]
См. также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Справочное руководство для программаторов расширенной системы UNIVAC 1005 (PDF) , Сперри Рэнд, стр. 1–8, ФСД-1089р1
- ^ Система обработки данных IBM 1401: Справочное руководство (PDF) . ИБМ. Апрель 1962 г. с. 20. А24-1403-5.
- ^ «Слова данных» (PDF) . Справочное руководство программиста Honeywell 800 (PDF) . Миннеаполис – Honeywell , подразделение DATAmatic. 1960. с. 24.
Он может интерпретировать 48 бит слова группами по 4 для целей двоично-десятичных операций, группами по шесть для целей буквенно-цифровых операций или как отдельные единицы информации для чисто двоичных операций.
- ^ «Компьютер RCA 603». Электронная система обработки данных RCA 601 — Руководство общей информации . РКА ЭДП. Март 1961 г. с. 1. 96-15-000.
Арифметические операции с фиксированным словом или полусловом могут выполняться как в двоичном, буквенно-цифровом, так и в десятичном режимах.
- ^ Конструкция системы RCA 601 . Международный семинар по управлению знаниями в области требований. Компьютерное общество IEEE. Декабрь 1960 г. doi : 10.1109/AFIPS.1960.64 .
- ^ Справочное руководство, Система обработки данных IBM 7090 (PDF) . ИБМ. Март 1962 г., стр. 5557, 115–119. А22-6528-4.
- ^ ИБМ (1964). Принципы работы IBM System/360 (PDF) . Первое издание. А22-6821-0.
- ^ Краткое описание серии 6000 (PDF) . Ханивелл. 1971. стр. 6, 31, 34–36.
- ^ Справочное руководство по компонентам карт и дисковых систем IBM System / 3 (PDF) (второе изд.). ИБМ. Апрель 1970 г. GA21-9103-1.
- ^ «Руководство программиста МАСМ» . Майкрософт. 1992. Архивировано из оригинала 15 июля 2007 г. Проверено 1 июля 2007 г.
- ^ Джонс, Дуглас В. (10 сентября 2014 г.) [1999]. «Уроки арифметики» . Айова-Сити, Айова, США: Университет Айовы, факультет компьютерных наук . Проверено 03 января 2016 г.
- ^ «Справочное руководство программатора семейства Motorola M68000» (PDF) . Проверено 1 июля 2007 г.
- ^ «ПРОЕКТ стандарта арифметики с плавающей запятой P754» . ИИЭЭ . 04.10.2006 . Проверено 31 августа 2021 г.
- ^ Jump up to: а б Коулишоу, Майк Ф. (2015) [1981,2008]. «Общая десятичная арифметика» . ИБМ . Проверено 2 января 2016 г.
- ^ Техническое руководство IBM z15 (8561) (PDF) . ИБМ. п. 3. СГ24-8851-00.
Дальнейшее чтение
[ редактировать ]- Шмид, Герман (1974). Десятичные вычисления (1-е изд.). Бингемтон, Нью-Йорк, США: John Wiley & Sons, Inc. ISBN 0-471-76180-Х . Проверено 03 января 2016 г. (Примечание. В этом заголовке содержится подробное описание десятичных вычислений, включая объяснение двоично-десятичных чисел и алгоритмов .)
- Шмид, Герман (1983) [1974]. Десятичные вычисления (1 (переиздание) изд.). Малабар, Флорида, США: Издательская компания Роберта Э. Кригера. ISBN 0-89874-318-4 . Проверено 03 января 2016 г. (Примечание. По крайней мере, в некоторых партиях этого репринтного издания были опечатки с дефектными страницами 115–146.)