Akumulátor (výpočetní) - Accumulator (computing)

Mechanická kalkulačka Walther WSR-16. Řada číslicových kol ve vozíku (vpředu) je akumulátor.

V počítači je to, centrální procesorová jednotka (CPU), přičemž akumulátor je registr , ve kterém meziprodukty aritmetickou logickou jednotku jsou výsledky uloženy.

Bez registru, jako je akumulátor, by bylo nutné zapsat výsledek každého výpočtu (sčítání, násobení, posun atd.) Do hlavní paměti , možná jen aby byl znovu načten zpět pro použití v další operaci.

Přístup k hlavní paměti je pomalejší než přístup k registru jako k akumulátoru, protože technologie používaná pro velkou hlavní paměť je pomalejší (ale levnější) než pro registr. Rané elektronické počítačové systémy byly často rozděleny do dvou skupin, na ty s akumulátory a na ty bez.

Moderní počítačové systémy mají často více obecných registrů, které mohou fungovat jako akumulátory, a tento termín již není tak běžný jako kdysi. Aby se však zjednodušil jejich návrh, řada procesorů pro zvláštní účely stále používá jeden akumulátor.

Základní koncept

Matematické operace často probíhají postupně, přičemž výsledky jedné operace jsou vstupem do další. Manuální výpočet týdenní mzdy zaměstnance může vypadat například takto:

  1. vyhledejte počet odpracovaných hodin z pracovní karty zaměstnance
  2. z tabulky vyhledejte mzdovou sazbu pro tohoto zaměstnance
  3. vynásobte hodiny výplatní sazbou, abyste získali základní týdenní výplatu
  4. znásobit jejich základní výplatu pevným procentem, aby se zohlednila daň z příjmu
  5. odečtěte toto číslo od základní mzdy, abyste získali jejich týdenní platbu po zdanění
  6. vynásobte tento výsledek dalším fixním procentem, abyste zohlednili penzijní plány
  7. odečtěte toto číslo od základní mzdy, abyste po všech srážkách získali jejich týdenní výplatu

Počítačový program provádějící stejný úkol by sledoval stejnou základní posloupnost operací, i když hodnoty, které se hledají, budou všechny uloženy v paměti počítače. U raných počítačů by byl počet hodin pravděpodobně uložen na děrovací kartě a výplatní sazba v jiné formě paměti, možná v magnetickém bubnu . Jakmile je násobení dokončeno, je třeba výsledek někam umístit. Na „bubnovém stroji“ by to pravděpodobně bylo zpět na buben, operace, která zabere hodně času. A pak hned následující operace musí tuto hodnotu přečíst zpět, což zavádí další značné zpoždění.

Akumulátory dramaticky zlepšují výkon v systémech, jako jsou tyto, tím, že poskytují stírací plochu, kde lze výsledky jedné operace přenést na další za malý nebo žádný výkonnostní postih. Ve výše uvedeném příkladu by byla vypočítána základní týdenní mzda a vložena do akumulátoru, který by pak mohl být okamžitě použit pro výpočet daně z příjmu. Tím se ze sekvence odstraní jedna operace uložení a jedna čtení, operace, které obecně trvaly desítky až stokrát delší než samotné násobení.

Akumulátorové stroje

Akumulátor stroj , také volal jeden-operand stroj , nebo CPU s architekturou akumulátoru bázi , je druh procesoru, kde, i když to může mít několik registrů CPU většinou ukládá výsledky výpočtů v jednom speciálním registru, obvykle nazývané „akumulátor“. Téměř všechny rané počítače byly akumulační stroje s pouze vysoce výkonnými „ superpočítači “ s více registry. Poté, co systémy sálových počítačů ustoupily mikropočítačům , byly architektury akumulátorů opět populární, přičemž MOS 6502 je pozoruhodným příkladem. Mnoho 8bitových mikrokontrolérů, které jsou od roku 2014 stále populární, například PICmicro a 8051 , jsou stroje založené na akumulátorech.

Moderní CPU jsou typicky stroje se 2 a 3 operandy. Další operandy specifikují, který z mnoha obecných registrů (nazývaných také „akumulátory obecného účelu“) se používá jako zdroj a cíl pro výpočty. Tyto CPU nejsou považovány za „akumulátorové stroje“.

Charakteristikou, která odlišuje jeden registr jako akumulátor počítačové architektury, je to, že akumulátor (pokud by architektura jednu měla) bude použit jako implicitní operand pro aritmetické instrukce . Například CPU může mít instrukci jako: která přidá hodnotu načtenou z adresy paměti umístění k hodnotě v akumulátoru, čímž výsledek umístí zpět do akumulátoru. Akumulátor není v pokynu identifikován registračním číslem; je v instrukci implicitní a v instrukci nelze specifikovat žádný jiný registr. Některé architektury používají určitý registr jako akumulátor v některých instrukcích, ale jiné instrukce používají čísla registrů pro explicitní specifikaci operandů. ADD memaddress

Historie počítačového akumulátoru

Za akumulátor lze považovat jakýkoli systém, který k uložení výsledku více operací používá jednu „paměť“. J. Presper Eckert týká vyrovnání nejranější přidávání stroje z Gottfried Leibniz a Blaise Pascal jako systémy akumulátorů na bázi. Percy Ludgate byl první, kdo ve svém analytickém stroji z roku 1909 vymyslel multiplikátor-akumulátor (MAC).

Historická konvence věnuje registr „akumulátoru“, „aritmetickému orgánu“, který doslova akumuluje své číslo během sekvence aritmetických operací:

„První část našeho aritmetického orgánu ... by měla být paralelním skladovacím orgánem, který může přijmout číslo a přidat ho k tomu, který již v něm je, který je také schopen vymazat jeho obsah a který může uložit to, co obsahuje. nazývat takový orgán akumulátorem. Je to v zásadě zcela konvenční v minulých i současných počítačových strojích nejrůznějších typů, např. stolní multiplikátory, standardní čítače IBM, modernější reléové stroje, ENIAC “(Goldstine a von Neumann, 1946; s . 98 v Bell a Newell 1971).

Například jen několik pokynů (s nějakou moderní interpretací):

  • Vymažte akumulátor a přidejte číslo z paměťového místa X
  • Vymažte akumulátor a odečtěte číslo z paměťového místa X
  • Přidejte číslo zkopírované z paměťového místa X do obsahu akumulátoru
  • Odečtěte číslo zkopírované z paměťového místa X z obsahu akumulátoru
  • Vymažte akumulátor a přesuňte obsah registru do akumulátoru

Neexistuje žádná konvence týkající se názvů operací od registrů k akumulátorům a od akumulátorů k registrům. Tradice (např. Hypotetický počítač MIX Donalda Knutha (1973) ) například používá dvě instrukce nazývané load akumulátor z registru/paměti (např. „LDA r“) a akumulátor úložiště k registraci/paměti (např. „STA r“). Knuthův model má také mnoho dalších pokynů.

Pozoruhodné počítače založené na akumulátorech

Přední panel počítače IBM 701 se světly zobrazujícími akumulátor a další registry

Konfigurace ENIAC z roku 1945 měla 20 akumulátorů, které mohly pracovat souběžně. Každý z nich mohl uložit osmimístné číslo a přidat k němu (nebo od něj odečíst) číslo, které obdržel. Většina raných binárních „vědeckých“ počítačů IBM , počínaje elektronkou IBM 701 v roce 1952, používala jeden 36bitový akumulátor společně se samostatným registrem multiplikátoru/kvocientu pro zpracování operací s delšími výsledky. IBM 650 , desítkové stroj, měl jednu 10 číslic distributora a dva s deseti akumulátorů; IBM 7070 , pozdější, tranzistorový desítkové Stroj měl tři akumulátory. IBM System / 360 a Digital Equipment Corporation ‚s PDP-6 , měl 16 generála registry účelu, ačkoli PDP-6 a jeho nástupce, PDP-10 , volejte jim akumulátory.

12bitový PDP-8 byl jedním z prvních minipočítačů využívajících akumulátory a inspiroval mnoho pozdějších strojů. PDP-8 měl pouze jeden akumulátor. HP 2100 a údaje Všeobecné Nova měli 2 a 4 ks akumulátorů. Nova byla vytvořena, když bylo toto pokračování PDP-8 odmítnuto ve prospěch toho, co by se stalo PDP-11 . Nova poskytla čtyři akumulátory, AC0-AC3, ačkoli AC2 a AC3 by také mohly být použity k poskytování ofsetových adres, směřující k obecnějšímu využití registrů. PDP-11 měl 8 registrů pro obecné použití, v souladu se systémy System/360 a PDP-10; většina novějších strojů CISC a RISC poskytovala více registrů pro obecné účely.

Rané 4bitové a 8bitové mikroprocesory, jako jsou 4004 , 8008 a mnoho dalších, měly obvykle jediné akumulátory. 8051 mikrokontrolér má dvě, primární a sekundární akumulátor akumulátor, kde je druhý používá instrukce pouze v případě, násobení (MUL AB), nebo dělením (DIV AB); první rozděluje 16bitový výsledek mezi dva 8bitové akumulátory, zatímco druhý ukládá kvocient na primární akumulátor A a zbytek na sekundární akumulátor B. Jako přímý potomek 8008, 8080 a 8086 , moderní všudypřítomné procesory Intel x86 stále používají primární akumulátor EAX a sekundární akumulátor EDX pro násobení a dělení velkých čísel. Například MUL ECX znásobí 32bitové registry ECX a EAX a rozdělí 64bitový výsledek mezi EAX a EDX. MUL a DIV jsou však speciální případy; další aritmeticko-logické instrukce (ADD, SUB, CMP, AND, OR, XOR, TEST) mohou jako akumulátor určit jakýkoli z osmi registrů EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI (tj. levý operand a destinace). Toto je také podporováno pro násobení, pokud není požadována horní polovina výsledku. x86 je tedy poměrně obecná architektura registru, přestože je založena na modelu akumulátoru. 64bitové rozšíření x86, x86-64 , bylo dále zobecněno na 16 namísto 8 obecných registrů.

Reference

  1. ^ "Přehled HC16" . Freescale.com. Archivovány od originálu dne 28. září 2007 . Citováno 2008-09-22 .
  2. ^ J. Presper Eckert, „Průzkum digitálních počítačových paměťových systémů“, IEEE Annals of the History of Computing, 1988, s. 15-28.
  3. ^ "Proveditelnost analytického stroje Ludgate" .
  4. ^ a b Haigh, Thomas; Priestley, Mark; Ropefir, Crispin (2016). ENIAC v akci: Výroba a předělání moderního počítače . Stiskněte MIT. ISBN 9780262334419.
  5. ^ Manuál pro programovaný datový procesor-1 (PDF) , Maynard, Massachusetts : Digital Equipment Corporation , 1961, s. 7: Blokový diagram systému PDP-1 , vyvoláno 2014-07-03
  6. ^ Irvine, Kip R. (2007). Assembly Language for Intel-Based Computers (5th ed.). Sál Pearson Prentice. s. 633, 622. ISBN 978-0-13-238310-3.
  • Goldstine, Herman H. a von Neumann, John, „Planning and Coding of the Problems for an Electronic Computing Instrument“, Rep. 1947, Institute for Advanced Study , Princeton. Přetištěno na s. 92–119 v Bell, C. Gordon a Newell, Allen (1971), Computer Structures: Readings and examples , McGraw-Hill Book Company, New York. ISBN  0-07-004357-4 }. Skutečný poklad podrobných popisů starověkých strojů včetně fotografií.