Articles

Co je to akumulátor?


Nejlepší odpověď

Akumulátor je objekt, který bude postupně sledovat součty, počty potřebné k efektivnímu výpočtu průměrů, směrodatné odchylky, minut , max atd. spíše než pokaždé přepočítávat.

Odpověď

Dovolte mi trochu upřesnit vaši otázku: Jaký je rozdíl mezi architekturou sady instrukčních sad akumulátoru a architekturou sady instrukčních sad univerzálních registrů?

Jedná se o dva body v návrhovém prostoru pro sady instrukcí. Zvažte, co musí instrukce CPU dělat. Zatím jen zvažte výpočetní pokyny. Minimálně musí poskytnout následující informace:

  • Jaký výpočet provést (přidat, odečíst, posunout, porovnat)
  • Na jakých hodnotách provést výpočet ( vstupy do výpočtu)
  • Kam umístit výsledek (výstup výpočtu)

Například kdybych napsal programové prohlášení na vysoké úrovni X = Y + Z, musíte říct procesoru, aby načetl hodnoty uchovávané v Y a Z, přidal je a výsledek zapsal do X.

V architektuře akumulátoru většina výpočetní instrukce fungují na speciálním registru zvaném akumulátor. Většina operací proto má akumulátor jako implicitní argument instrukce. Akumulátor buď poskytuje vstup do instrukce, přijímá výstup z instrukce, nebo obojí. Chcete-li provést X = Y + Z na počítači založeném na akumulátoru, sekvence instrukcí bude vypadat zhruba takto:

  • Načíst Y do akumulátoru
  • Přidat Z do akumulátoru
  • Uložit akumulátor do X

Kdybych měl složitější výraz, například „I = J + K + L + M + N + O „, sekvence může vypadat takto:

  • Načíst J do akumulátoru
  • Přidat K do akumulátoru
  • Přidat L do akumulátor
  • Přidat M do akumulátoru
  • Přidat N do akumulátoru
  • Přidat O do akumulátoru
  • Uložit akumulátor do I

Protože většina operací zahrnuje akumulátor, není třeba k jeho specifikaci věnovat žádné bity opcode. Jak jsem již zmínil, akumulátor je implicitně . Také v samotném stroji může být akumulátor zabudován přímo do samotné aritmetické jednotky, což zjednodušuje hardware.

V univerzální architektuře registrů je výpočetní instrukce s použít více argumentů k určení, z jakých registrů se mají číst hodnoty. Díky tomu jsou flexibilnější. Flexibilita však stojí za cenu: Potřebujete více bitů opcode, abyste určili, na kterých registrech se bude pracovat, a musíte poskytnout cesty pro všechny tyto registry k aritmetické jednotce.

Pro příklady výše uvedených výrazů , kód nakonec nevypadá moc odlišně:

  • Načíst Y do registru R0
  • Načíst Z do registru R1
  • Přidat R0 do R1, uvedení výsledek v R2
  • Store R2 to X

Univerzální registrační stroje začnou zobrazovat výhodu, když můžete uchovávat hodnoty v registrech napříč mnoha operacemi. Předpokládejme například, že jsem chtěl spustit tento trochu složitější program:

X = A + B

Y = A - B

V akumulátorovém stroji bych musel znovu načíst A a B pro obě operace. Na stroji pro všeobecné účely bych načetl A a B. pouze jednou.

V počítačích pro všeobecné účely existuje také několik odrůd: (Tento seznam není vyčerpávající; některé architektury také kombinují tyto koncepty. )

  • Register-Memory: Jeden operand pochází z registru a jeden operand pochází z paměti.
  • Register-Register, 2-address: Oba operandy pocházejí z registrů, ale výsledek musí přepsat jeden ze vstupů.
  • Register-Register, 3-adresa: oba operandy pocházejí z registry a výsledek může přejít do vlastního registru.

Například procesor x86 je stroj Register-Memory, který také nabízí pokyny Register-Register se 2 adresami. Většina strojů RISC jsou stroje se 3 adresami Register-Register se samostatnými pokyny pro načítání / ukládání. Oba jsou univerzální registrační stroje.

Porovnejte je s 6502 , což je akumulátorový stroj. Většina aritmetických funkcí (sčítání, odčítání, otáčení a posunutí) funguje na registru A. Dva další registry, X a Y, podporují pouze přírůstek, úbytek a porovnání; používají se hlavně k indexování paměti a čítačů smyček.

Třetím typem architektury, o kterém jste se nezmínil, je stack architektura . Architektura zásobníku je podobná architektuře akumulátoru v tom, že všechny výpočty jsou zaměřeny na jeden bod. Rozdíl je v tom, že architektura zásobníku vždy čte své argumenty ze zásobníku a vždy vloží své výsledky do zásobníku.Vstupy i výstupy výpočetní instrukce jsou implicitní. Další pokyny pak potřebují ke správě odesílání hodnot do a vyskakování hodnot ze zásobníku.

Ve skutečných čipech nenajdete mnoho architektur zásobníku. Ale v interpretech jsou populární (například bajtový kód Java) nebo FORTH) a v některých kalkulačkách, jako jsou kalkulačky založené na RPN od společnosti HP.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *