speciális célú regiszter From Wikipedia, the free encyclopedia
A számítógépek processzorában (CPU) az akkumulátor vagy akkumulátorregiszter olyan regiszter, amelyben az aritmetikai-logikai egység által végzett műveletek operandusainak, illetve a művelet eredményének átmeneti tárolása történik. A korai számítógépekben még nem alkalmaztak akkumulátort, minden műveletvégzés (összeadás, szorzás, eltolás stb.) eredményét vissza kellett írni a központi (más néven operatív) memóriába, ahonnan gyakran a következő műveletnél vissza is kellett olvasni a következő művelet számára. Ez nagyon lelassította a számítógép működését, mivel a központi memóriában használt technológia jóval lassabb (de olcsóbb) elérést tesz lehetővé, mint az akkumulátorban és a processzor más regisztereiben használt. A korszerű számítógépekben az akkumulátor helyett már egy vagy több regisztertömb van, amelyben akár 512 regiszter is elhelyezkedhet.
A hagyományos példa az akkumulátor használatára egy számokból álló lista összegzése (az accumulator szó szerinti jelentése: felhalmozó). Az akkumulátor kezdeti értékét nullára állítják, majd a számok egyenként beolvasásra kerülnek, és értékük hozzáadódik az akkumulátorhoz. Miután minden szám hozzá lett adva, az akkumulátorban lévő eredmény visszaíródik a központi memóriába vagy egy másik (nem akkumulátor-) regiszterbe.
Az akkumulátorgép, amit 1-operandusú vagy egycímű gépnek is neveznek, illetve az akkumulátor-architektúrájú processzor olyan CPU, melyben a számítások eredményét – ha vannak is egyéb regiszterei – a CPU egy speciális regiszterben tárolja, amit tipikusan „akkumulátornak” neveznek. A hőskor számítógépei szinte mind akkumulátorgépek voltak. Számos, a 2010-es években is népszerű mikrokontroller (mint a 68HC12, aPICmicro, az 8051 és mások) lényegében akkumulátorgép.
A modern mikroprocesszorok jellemzően 2- vagy 3-operandusú gépek – a további operandusok határozzák meg, hogy a számos általános célú regiszter (másképp: általános célú akkumulátor[1]) közül melyik lesz a számítások forrás- és célcíme. Az ilyen mikroprocesszorok nem tekinthetők „akkumulátorgépeknek”.
Az akkumulátorregisztert az általános célú regisztertől az különbözteti meg, hogy az akkumulátor (ha az architektúrában létezik ilyen) lehet aritmetikai utasítások implicit operandusa. Tekintsük a következő gépi utasítást:
ADD memcím
Ez az utasítás összeadja az akkumulátorban lévő értéket a memcím-en lévő értékkel, az eredményt az akkumulátorban helyezi el. Az utasítás nem azonosítja az akkumulátort a regiszter sorszáma alapján; az utasításban implicit módon szerepel az akkumulátor, és semmilyen másik regiszter nem lehet meghatározva az utasításban. Léteznek olyan architektúrák, ahol egyes utasításokban egy kijelölt regiszter akkumulátorként szerepel, más utasítások pedig explicit módon, a regiszter számával hivatkozhatnak rá.
Történelmi konvenciók szerint egy regisztert kiválasztanak „az akkumulátor” szerepére; ez az „aritmetikai szerv” szó szerint akkumulálja magában a számokat egy aritmetikai műveletsor idejére:
Néhány példa az elérhető utasításokra (modern értelmezésben):
Nincs általánosan elterjedt konvenció az akkumulátor és regiszterek közötti műveletek elnevezésére. Egy hagyományos megoldás (pl. Donald Knuth 1973-as hipotetikus MIX számítógépében) szerint két utasítást használnak, egy load accumulator utasítást a regiszterből vagy memóriából való betöltésre (pl. „LDA r”) és store accumulator utasítást a regiszterbe vagy memóriába való mentésére (pl. „STA r”). Knuth modelljében számos más utasítás is szerepelt.
Az IBM korai „tudományos” számítógépeinek többsége, kezdve az 1952-ben bemutatott, vákuumcsöves IBM 701-gyel, egyetlen 36 bites akkumulátort tartalmazott külön szorzó/hányados regiszterrel a hosszabb eredmények kezelésére. A decimális IBM 650-nek tíz számjegyű akkumulátora volt; a későbbi, már tranzisztoros, decimális IBM 7070-ben három akkumulátor is volt.
A 12 bites PDP–8 a miniszámítógépek közül az elsők között használt akkumulátort, ami több későbbi gép designját is befolyásolta. A PDP–8-nak egyetlen akkumulátora volt, a HP 2100 és a Data General Nova 2, illetve 4 akkumulátorral rendelkezett. A Novát azok a mérnökök hozták létre, akik a Digitalon (DEC) belül más fejlesztési utat képviseltek, mint ami végül PDP–11-ben csúcsosodott ki. A Novának négy akkumulátora volt, AC0–AC3, bár az AC2 és az AC3 felhasználható volt eltolási címek megadására is, az általános célú regiszterek irányába tett lépésként. A PDP–11 az általános regiszterek a jelenlegihez közelebb álló modelljét tartalmazta, R0–R7 közötti vagy még tovább folytatódó számozással, amit a legtöbb későbbi CISC és RISC gépek is átvettek.
A korai 4 és 8 bites mikroprocesszorok, mint az Intel 4004, 8008 és mások egyetlen akkumulátorral rendelkeztek. A 8051-es mikrovezérlőben kettő volt, egy elsődleges és egy másodlagos akkumulátor; a másodikat csak szorzásnál (MUL AB) vagy osztásnál (DIV AB) használták, ahol az egyetlen akkumulátor kevésnek bizonyult; szorzásnál a 16 bites eredményt a két 8 bites akkumulátor közösen tárolta, míg osztásnál a hányadost az elsődleges akkumulátor (A), a maradékot a másodlagos akkumulátor (B) tárolta. A 8008-as közvetlen leszármazottaiként a 8080-as és a 8086-os, a széles körben elterjedt Intel x86 család tagjai nagy számok szorzásakor-osztásakor szintén az elsődleges EAX akkumulátort és a másodlagos EDX akkumulátort használják. Például a MUL ECX utasítás a 32 bites ECX és EAX regisztereket szorozza össze, a 64 bites eredményt az EAX-ben és az EDX-ben tárolva. A MUL és a DIV azonban egyedi esetek, más aritmetikai-logikai utasítások (ADD, SUB, CMP, AND, OR, XOR, TEST) a nyolc regiszter (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) bármelyikét kijelölheti akkumulátorként (tehát az utasítás bal operandusaként és célcímeként). Az x86 ezért, bár az akkumulátor-modellre épül, egy meglehetősen általános regiszterarchitektúrának tekinthető.[2] Az x86 utasításkészlet 64 bites kiterjesztése, az x86-64 még általánosabb, hiszen az eredeti 6 helyett 14 általános regiszter található benne.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.