Перейти до вмісту

Десятковий комп'ютер

Матеріал з Вікіпедії — вільної енциклопедії.
Панель оператора комп'ютера IBM 650 з індикаторами, що показують у бі-квінарному форматі

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

Ранні представники

[ред. | ред. код]

Багато ранні комп'ютерів, таких як ENIAC, IBM NORC, IBM 650, IBM 1620 і IBM 7070, були десятковими. У цих машинах базовою одиницею даних була десяткова цифра, закодована у тій чи іншій схемі, наприклад як двійково-десятковий код (BCD), бі-квінарний код, код excess-3[en] або код код «два з п'яти»[en]. Ці машини мали адресацію слів, а не байтів (за винятком IBM 1620). Нецифрові дані (наприклад, символи) кодувалися двома десятковими цифрами.

Інші ранні комп'ютери були символ-орієнтованими, і реалізовували машинні інструкції для роботи з числами, представленими як послідовності (рядки) символів. У цих машинах одиницею інформації був алфавітно-цифровий символ, як правило закодований шістьма двійковими бітами. UNIVAC I and 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]

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

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

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

Джерела

[ред. | ред. код]
  1. IBM (April 1962). IBM 1401 Data Processing System: Reference Manual (PDF). с. 20. A24-1403-5. Архів оригіналу (PDF) за 9 грудня 2019. Процитовано 10 грудня 2018.
  2. IBM (1964). IBM System/360 Principles of Operation (PDF). First Edition. A22-6821-0. Архів оригіналу (PDF) за 29 лютого 2012. Процитовано 10 грудня 2018.
  3. MASM Programmer's Guide. Microsoft. 1992. Архів оригіналу за 15 липня 2007. Процитовано 1 липня 2007.
  4. Douglas W. Jones (2002). BCD Arithmetic, a tutorial (англ.). The University of Iowa, Department of Computer Science. Архів оригіналу за 3 вересня 2011. Процитовано 11 грудня 2018.
  5. Motorola M68000 Family Programmer's Reference Manual (PDF). Архів оригіналу (PDF) за 24 вересня 2015. Процитовано 1 липня 2007.
  6. Cowlishaw, Mike F. (2015) [1981,2008]. General Decimal Arithmetic. IBM. Архів оригіналу за 25 грудня 2018. Процитовано 2 січня 2016.