Akumulator (obliczeniowy) - Accumulator (computing)

Kalkulator mechaniczny Walther WSR-16. Rząd kółek z cyframi w wózku (z przodu) to akumulator.

W komputerze „S jednostka centralna (CPU), przy czym akumulator jest rejestr , w którym pośrednie , jednostka arytmetyczno-logiczna wyniki są przechowywane.

Bez rejestru takiego jak akumulator, wynik każdego obliczenia (dodawanie, mnożenie, przesuwanie itp.) trzeba by zapisywać do pamięci głównej , być może tylko po to, aby ponownie odczytać go z powrotem do użycia w następnej operacji.

Dostęp do pamięci głównej jest wolniejszy niż dostęp do rejestru, takiego jak akumulator, ponieważ technologia wykorzystywana do dużej pamięci głównej jest wolniejsza (ale tańsza) niż ta stosowana do rejestru. Wczesne elektroniczne systemy komputerowe często dzieliły się na dwie grupy, te z akumulatorami i te bez akumulatorów.

Nowoczesne systemy komputerowe często mają wiele rejestrów ogólnego przeznaczenia, które mogą działać jako akumulatory, a termin nie jest już tak powszechny jak kiedyś. Jednak, aby uprościć ich konstrukcję, wiele procesorów specjalnego przeznaczenia nadal korzysta z jednego akumulatora.

Podstawowy pomysł

Operacje matematyczne często odbywają się w sposób stopniowy, wykorzystując wyniki jednej operacji jako dane wejściowe do następnej. Na przykład ręczne obliczenie tygodniowej listy płac pracownika może wyglądać mniej więcej tak:

  1. sprawdzić liczbę przepracowanych godzin z karty czasu pracy pracownika
  2. sprawdź stawkę wynagrodzenia dla tego pracownika z tabeli
  3. pomnóż godziny przez stawkę wynagrodzenia, aby otrzymać podstawową tygodniową płacę
  4. pomnożyć wynagrodzenie podstawowe przez stały procent, aby uwzględnić podatek dochodowy
  5. odejmij tę liczbę od wynagrodzenia podstawowego, aby otrzymać tygodniową wypłatę po opodatkowaniu
  6. pomnóż ten wynik przez inny stały procent, aby uwzględnić plany emerytalne
  7. odejmij tę liczbę od wynagrodzenia podstawowego, aby otrzymać tygodniową pensję po wszystkich potrąceniach

Program komputerowy wykonujący to samo zadanie wykonywałby tę samą podstawową sekwencję operacji, chociaż wszystkie wyszukiwane wartości byłyby przechowywane w pamięci komputera. We wczesnych komputerach liczba godzin była prawdopodobnie przechowywana na karcie dziurkowanej, a stawka w innej formie pamięci, na przykład bębnie magnetycznym . Po zakończeniu mnożenia wynik należy gdzieś umieścić. W „maszynie perkusyjnej” prawdopodobnie będzie to powrót do bębna, operacja, która zajmuje dużo czasu. A potem już następna operacja musi wczytać tę wartość z powrotem, co wprowadza kolejne znaczne opóźnienie.

Akumulatory radykalnie poprawiają wydajność w takich systemach, zapewniając obszar notatnika, w którym wyniki jednej operacji mogą być przenoszone do następnej, z niewielkim spadkiem wydajności lub bez utraty wydajności. W powyższym przykładzie podstawowa płaca tygodniowa zostałaby naliczona i umieszczona w akumulatorze, który następnie mógłby być od razu wykorzystany przy obliczaniu podatku dochodowego. Powoduje to usunięcie z sekwencji jednej operacji zapisywania i jednej operacji odczytu, operacji, które zazwyczaj trwały dziesiątki do setek razy dłużej niż samo mnożenie.

Maszyny akumulatorowe

Maszyna akumulator , zwany również maszyna 1 argumentu , lub procesor z architekturą akumulatorów na bazie , to rodzaj procesora, gdzie, chociaż może mieć kilka rejestrów CPU przeważnie przechowuje wyniki obliczeń w jednym specjalnym rejestrze, zwykle o nazwie „akumulator”. Prawie wszystkie wczesne komputery były maszynami akumulacyjnymi, w których tylko wysokowydajne „ superkomputery ” miały wiele rejestrów. Następnie, gdy systemy mainframe ustąpiły miejsca mikrokomputerom , architektury akumulatorów znów stały się popularne, a MOS 6502 był tego godnym uwagi przykładem. Wiele 8-bitowych mikrokontrolerów, które są nadal popularne od 2014 r., takich jak PICmicro i 8051 , to maszyny oparte na akumulatorach.

Nowoczesne procesory są zazwyczaj maszynami 2- lub 3-argumentowymi. Dodatkowe operandy określają, który z wielu rejestrów ogólnego przeznaczenia (zwanych również „akumulatorami ogólnego przeznaczenia”) jest używany jako źródło i miejsce docelowe obliczeń. Te procesory nie są uważane za „maszyny akumulatorowe”.

Cechą, która odróżnia jeden rejestr jako akumulator architektury komputerowej, jest to, że akumulator (gdyby architektura miałaby taki) byłby używany jako niejawny operand dla instrukcji arytmetycznych . Na przykład, procesor może mieć instrukcję taką jak: która dodaje wartość odczytaną z adresu pamięci do wartości w akumulatorze, umieszczając wynik z powrotem w akumulatorze. Akumulator nie jest identyfikowany w instrukcji numerem rejestru; jest to niejawne w instrukcji i żaden inny rejestr nie może być określony w instrukcji. Niektóre architektury używają określonego rejestru jako akumulatora w niektórych instrukcjach, ale inne instrukcje używają numerów rejestrów dla wyraźnej specyfikacji operandów. ADD memaddress

Historia akumulatora komputerowego

Za akumulator można uznać każdy system, który używa pojedynczej „pamięci” do przechowywania wyników wielu operacji. Prespera Eckert dotyczy jeszcze wcześniej maszyny dodawanie z Gottfried Leibnizem i Blaise Pascal jako systemy z akumulatorów. Percy Ludgate był pierwszym, który wymyślił akumulator mnożnikowy (MAC) w swojej Maszynie Analitycznej z 1909 roku.

Konwencja historyczna dedykuje rejestr „akumulatorowi”, „organowi arytmetycznemu”, który dosłownie gromadzi swój numer podczas sekwencji działań arytmetycznych:

„Pierwsza część naszego organu arytmetycznego… powinna być równoległym organem pamięciowym, który może przyjąć numer i dodać go do już znajdującego się w nim, który jest również w stanie wyczyścić jego zawartość i który może przechowywać to, co zawiera. nazwijmy taki organ akumulatorem. Jest to w zasadzie dość konwencjonalne w dawnych i obecnych maszynach liczących najróżniejszych typów, np. mnożniki biurkowe, standardowe liczniki IBM, bardziej nowoczesne maszyny przekaźnikowe, ENIAC” (Goldstine i von Neumann, 1946; s. 98 w Bell i Newell 1971).

Tylko kilka instrukcji to na przykład (z pewną współczesną interpretacją):

  • Wyczyść akumulator i dodaj numer z komórki pamięci X
  • Wyczyść akumulator i odejmij liczbę od komórki pamięci X
  • Dodaj numer skopiowany z komórki pamięci X do zawartości akumulatora
  • Odejmij liczbę skopiowaną z komórki pamięci X od zawartości akumulatora
  • Wyczyść akumulator i przesuń zawartość rejestru do akumulatora

Nie istnieje żadna konwencja dotycząca nazw operacji od rejestrów do akumulatora i od akumulatora do rejestrów. Tradycja (np. hipotetyczny komputer MIX Donalda Knutha (1973) ), na przykład, używa dwóch instrukcji nazywanych ładowaniem akumulatora z rejestru/pamięci (np. „LDA r”) i przechowywaniem akumulatora do rejestru/pamięci (np. „STA r”). Model Knutha ma również wiele innych instrukcji.

Wybitne komputery z akumulatorami

Panel przedni komputera IBM 701 z lampkami wyświetlającymi akumulator i inne rejestry

Konfiguracja ENIAC z 1945 roku miała 20 akumulatorów, które mogły pracować równolegle. Każdy z nich mógł przechowywać liczbę z ośmioma cyframi dziesiętnymi i dodać do niej (lub odjąć od niej) liczbę, którą otrzymał. Większość wczesnych binarnych komputerów „naukowych” IBM, począwszy od lampy próżniowej IBM 701 w 1952 roku, wykorzystywała pojedynczy akumulator 36-bitowy wraz z oddzielnym rejestrem mnożnika/ilorazu do obsługi operacji z dłuższymi wynikami. IBM 650 , maszyna dziesiętny, miał jednego dystrybutora 10-cyfrowy oraz dwa akumulatory dziesięć cyfr; IBM 7070 , później, tranzystorowe maszyna dziesiętny miał trzy akumulatory. IBM System / 360 i Digital Equipment Corporation „s PDP-6 , miał 16 rejestrów ogólnego zastosowania, chociaż PDP-6 i jego następca, PDP-10 , zadzwoń do nich akumulatory.

12-bitowy PDP-8 był jednym z pierwszych minikomputerów wykorzystujących akumulatory i zainspirował wiele późniejszych maszyn. PDP-8 miał tylko jeden akumulator. HP 2100 i Data General Nova miała 2 i 4 akumulatory. Nova została stworzona, gdy ta następca PDP-8 została odrzucona na rzecz tego, co stało się PDP-11 . Nova dostarczyła cztery akumulatory, AC0-AC3, chociaż AC2 i AC3 mogą być również używane do dostarczania adresów offsetowych, dążąc do większej ogólności wykorzystania rejestrów. PDP-11 miał 8 rejestrów ogólnego przeznaczenia, na wzór System/360 i PDP-10; większość późniejszych maszyn CISC i RISC dostarczała wiele rejestrów ogólnego przeznaczenia.

Wczesne mikroprocesory 4- i 8-bitowe, takie jak 4004 , 8008 i wiele innych, zazwyczaj miały pojedyncze akumulatory. 8051 mikrokontroler ma dwa, pierwotnego i wtórnego akumulator ołowiowy, w których drugi służy jedynie instrukcje podczas mnożenia (MUL AB) lub podziału (DIV AB); pierwszy dzieli 16-bitowy wynik między dwa 8-bitowe akumulatory, podczas gdy drugi przechowuje iloraz na głównym akumulatorze A, a resztę na akumulatorze wtórnym B. Jako bezpośredni potomek 8008, 8080 i 8086 , współczesne, wszechobecne procesory Intel x86 nadal używają podstawowego akumulatora EAX i dodatkowego akumulatora EDX do mnożenia i dzielenia dużych liczb. Na przykład MUL ECX pomnoży 32-bitowe rejestry ECX i EAX i podzieli wynik 64-bitowy między EAX i EDX. Jednak MUL i DIV to przypadki szczególne; inne instrukcje arytmetyczno-logiczne (ADD, SUB, CMP, AND, OR, XOR, TEST) mogą określać dowolny z ośmiu rejestrów EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI jako akumulator (tzn. lewy operand i Miejsce docelowe). Jest to również obsługiwane dla mnożenia, jeśli górna połowa wyniku nie jest wymagana. x86 jest zatem dość ogólną architekturą rejestrów, mimo że jest oparta na modelu akumulatorowym. 64-bitowe rozszerzenie x86, x86-64 , zostało dalej uogólnione do 16 zamiast 8 rejestrów ogólnych.

Bibliografia

  1. ^ „Przegląd HC16” . Freescale.com. Zarchiwizowane z oryginału w dniu 28 września 2007 roku . Źródło 2008-09-22 .
  2. ^ J. Presper Eckert, "Ankieta cyfrowych systemów pamięci komputerowych", IEEE Roczniki Historii Informatyki, 1988, s. 15-28.
  3. ^ „Wykonalność maszyny analitycznej Ludgate” .
  4. ^ B Haigh, Thomas; Priestley, Mark; Ropefir, Crispin (2016). ENIAC w akcji: tworzenie i przerabianie nowoczesnego komputera . MIT Naciśnij. Numer ISBN 9780262334419.
  5. ^ Podręcznik programowanego procesora danych-1 (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, s. 7: Schemat blokowy systemu PDP-1 , pobrany 2014-07-03
  6. ^ Irvine, Kip R. (2007). Język asemblera dla komputerów z procesorami Intel (5th ed.). Pearson Prentice Hall. s. 633, 622. ISBN 978-0-13-238310-3.
  • Goldstine, Herman H. i von Neumann, John, „Planning and Coding of the Problems for an Electronic Computing Instrument”, Rep. 1947, Institute for Advanced Study , Princeton. Przedruk na s. 92-119 w Bell, C. Gordon i Newell, Allen (1971), Computer Structures: Readings and Example , McGraw-Hill Book Company, New York. ISBN  0-07-004357-4 }. Prawdziwa skarbnica szczegółowych opisów starożytnych maszyn wraz ze zdjęciami.