Десятичные компьютеры — электронные цифровые вычислительные машины, имеющие внутреннее представление данных и адресов в виде десятичных чисел, а также набор инструкций, ориентированный на работу с такими числами и адресами, без преобразования их в двоичную форму. Некоторые из таких машин имели также изменяющуюся длину машинного слова, что позволяло работать с числами большой разрядности.

Консольная панель  (англ.) компьютера IBM 650 c двузначными индикаторами (1953 год).

Ранние компьютеры править

И «Аналитическая машина» английского математика и изобретателя Чарльза Бэббиджа продуманная в XIX веке и явившаяся прообразом всех современных цифровых компьютеров. И электро-механический программируемый компьютер «Гарвардский Марк I» созданный в 1939—1944 годах компанией IBM по заказу ВМС США, массой около 4,5 тонны построенный на переключателях и реле с использованием наработок Чарльза Бэббиджа — были десятичными компьютерами.

Некоторые ранние электро-ламповые компьютеры, такие как: ENIAC (1945 год), IBM NORC  (англ.) (1954 год) и IBM 650 (1954 год), и даже некоторые первые транзисторные компьютеры, такие как: IBM 7070  (англ.) (1958 год) и IBM 1620  (англ.) (1959 год) — были десятичными. В этих машинах базовой единицей данных была десятичная цифра, закодированная в той или иной схеме, например, как двоично-десятичный код (BCD), би-квинарный код  (англ.), код «два из пяти»  (англ.) или код excess-3  (англ.) (XS-3). Эти машины имели адресацию слов, а не байтов (за исключением IBM 1620). Нецифровые данные, например символы, кодировались двумя десятичными цифрами.

Другие ранние компьютеры были символ-ориентированными и реализовывали машинные инструкции для работы с числами, представленными в качестве последовательности (строки) символов. В этих машинах единицей информации был алфавитно-цифровой символ, как правило закодированный шестью двоичными битами. UNIVAC I и UNIVAC II  (англ.) имели адресацию 12-символьных слов. Среди машин IBM такими были IBM 702  (англ.), IBM 705  (англ.), серия IBM 1400  (англ.), IBM 7010  (англ.), а также IBM 7080  (англ.)[1].

Линия компьютеров Burroughs B2500  (англ.) (представлена ​​1966 году) использовала 8-разрядное кодирование EBCDIC или ASCII для символов, две десятичные цифры упаковывались в один байт. Эти компьютеры не имели операций двоичной арифметики, так что их тоже можно считать представителями десятичной архитектуры.

Программная поддержка править

В 1964 году IBM представила линию IBM System/360 с исключительно байтовой адресацией и стандартизированным определением понятия «байт» (8 бит). Для облегчения работы с десятичными данными машины S/360 имели операции над упакованными десятичными числами (в дополнение к стандартным операциям над целыми) и операции с подвижной запятой (двоичные). В S/360 была стандартизирована также кодировка EBCDIC, хотя ASCII также поддерживалось[2].

Ранние микропроцессоры также обеспечивали ограниченную поддержку команд десятичной арифметики. Например, процессоры серий Intel 8080 и Intel 80x86 имеют инструкции для преобразования однобайтных BCD-чисел (упакованных или неупакованных) в двоичный формат перед или после арифметических операций[3]. С развитием процессоров данные инструкции остались без изменений (другими словами, их не расширили для работы, например, с 32-разрядными BCD-числами), поэтому в случае необходимости такие вычисления достаточно несложно реализовать программно[4]. Сопроцессоры x87 имеют инструкции для преобразования 10-байтовых (18 десятичных цифр) упакованных десятичных данных, однако после такого преобразования сопроцессор оперирует с такими числами как с обычными с подвижной запятой.

Процессоры Motorola, такие как 68000, имели инструкции сложения и вычитания чисел BCD[5], как и MOS Technology 6502 (в более поздних вариантах архитектуры 68x00 — например FreeScale ColdFire — инструкции BCD изъяли).

Семейство процессоров IBM POWER6 и процессоры мейнфреймов IBM System z9  (англ.) имплементируют работу с 7-, 16- и 34-разрядными десятичными числами (стандарт IEEE 754r, 2008 год) с использованием упаковки Densely packed decimal  (англ.)[6] — у POWER6 эти команды аппаратно, а у System z9 в микрокоде.

См. также править

Примечания править

  1. IBM. IBM 1401 Data Processing System: Reference Manual. — April 1962. — P. 20. — ISBN A24-1403-5. Архивная копия от 9 декабря 2019 на Wayback Machine Источник. Дата обращения: 31 января 2022. Архивировано 9 декабря 2019 года.
  2. IBM. IBM System/360 Principles of Operation. — 1964. — ISBN A22-6821-0. Архивная копия от 29 февраля 2012 на Wayback Machine Источник. Дата обращения: 31 января 2022. Архивировано 29 февраля 2012 года.
  3. MASM Programmer's Guide. Microsoft (1992). Дата обращения: 1 июля 2007. Архивировано из оригинала 15 июля 2007 года.
  4. Douglas W. Jones. BCD Arithmetic, a tutorial (англ.). The University of Iowa, Department of Computer Science (2002). Дата обращения: 31 января 2022. Архивировано 3 сентября 2011 года.
  5. Motorola M68000 Family Programmer's Reference Manual. Дата обращения: 1 июля 2007. Архивировано 24 сентября 2015 года.
  6. Mike F. Cowlishaw. General Decimal Arithmetic. IBM (2015). Дата обращения: 2 января 2016. Архивировано 25 декабря 2018 года.

Ссылки править