Накопичувальний регістр

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Акумулятор (процесор))
Перейти до навігації Перейти до пошуку

Накопичувальний регістр[1], Акумуля́тор (англ. accumulator)  — регістр, в якому зберігаються безпосередні результати виконання арифметичних і логічних команд. Альтернативними методами для збереження результату є використання регістрів загального призначення або оперативної пам'яті.

Мікропроцесор з акумуляторною архітектурою або 1-операндна машина відрізняється тим, що навіть якщо в ньому кілька регістрів, результат більшості операцій зберігається в спеціальному реєстрі, який називається «акумулятор». Це спрощує як реалізацію архітектури, так і скорочує розміри машинного коду. Історично практично всі перші мікропроцесори були акумуляторними машинами, і зараз багато популярних однокристальних мікроконтролерів (Motorola 68HC12[en], PIC, 8051) — це акумуляторні машини.

Сучасні CPU звичайно є 2-х і 3-х операндними машинами — у яких додаткові операнди вказують між якими з регістрів загального призначення здійснюються обчислення. Проте деякі регістри все одно історично іменуються акумуляторами. В архітектурах x86 акумуляторами різного розміру є регістри AH, AL, AX, EAX, RAX[2].

Процесор може мати кілька акумуляторів: у 8051 є два, основний A і вторинний B, причому другий використовується при операціях множення і ділення.

Принцип роботи[ред. | ред. код]

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

  1. Ввести кількість відпрацьованих годин за табелем часу працівника
  2. Ввести за таблицею ставку заробітної плати для цього працівника
  3. Помножити години на ставку заробітної плати, щоб отримати їх основну щотижневу оплату
  4. Помножити їх основну заробітну плату на фіксований відсоток для врахування податку на прибуток
  5. Відняти це число від основної заробітної плати, щоб отримати щотижневу заробітну плату після оподаткування
  6. Помножити цей результат на інший фіксований відсоток, щоб врахувати пенсійні плани
  7. Відняти це число від основної заробітної плати, щоб отримати їхню щотижневу заробітну плату після всіх відрахувань

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

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

Зноски[ред. | ред. код]

  1. Є. Мейнарович; М. Кратко (2010). Англійсько-український словник з математики та інформатики. e2u.org.ua. Процитовано 30 грудня 2023.
  2. EAX x86 Register: Meaning and History. keleshev.com. Процитовано 30 грудня 2023.