Aritmetikai-logikai egység

A Wikipédiából, a szabad enciklopédiából
Az ALU egy tipikus jelölési módja: A & B az operandusok; R a kimenet; F a Vezérlő egység; bemenete; D a kimeneti státusz

A számítástechnikában az aritmetikai-logikai egység (rövidítése ALU az angol Arithmetic Logic Unit alapján) aritmetikai és logikai műveleteket elvégző digitális áramkör. Alapvető eleme a számítógép központi vezérlőegységének. A processzorok, a CPU-k és a GPU-k a számítógép belsejében található, belülről nagyon erős és bonyolult ALU-k; egy egyszerű alkatrész is számos ALU-t tartalmazhat.

Neumann János alkotta meg az ALU fogalmát 1945-ben, amikor cikkében beszámolt új számítógépéről, az EDVAC-ról.

Egy tipikus Neumann-féle CPU belső szerkezetének részében az ALU végzi az összeadást, a kivonást és más egyszerű műveleteket az inputjain, így adva át az eredményt az output regiszternek, azaz a kimeneten ez fog megjelenni.

Története, kialakulása[szerkesztés | forrásszöveg szerkesztése]

1946-ban Neumann János, a kollégáival a Princeton Institute of Advanced Studies (IAS) számítógépének tervezésén dolgozott. Ez a számítógép lett az összes későbbi számítógép "prototípusa". Javaslatára áttekintették, hogy szerinte mire van szüksége a gépéhez, beleértve az ALU-t is. Az ő véleménye szerint ez elengedhetetlen kelléke a számítógépnek, ugyanis ez végzi el az egyszerű matematikai utasításokat, mint az összeadást, kivonást és a logikai relációkat, függvényeket is ez hajtja végre.[1]

Numerikus rendszerek[szerkesztés | forrásszöveg szerkesztése]

Az ALU-nak ugyanazt a numerikus modellt kell használnia a számításokra, mint ahogy a számítógép többi alkatrészének. A modern processzorok egy számot általában binárisan, kettes komplemensként ábrázolják. A korai számítógépek a számrendszerek széles skáláját használták, beleértve az egyes komplemenst, az előjeles-nagyságot és néha a tízes számrendszereket, tíz csővezetékkel számjegyenként.

Az ALU tulajdonképpen egy ezek közül a numerikus rendszerek közül, ám eltérő tervezete befolyásolta elterjedését és kedvezett a kettes komplemensnek, ezzel könnyebbé téve az ábrázolást az ALU-val történő összeadás és kivonás számolásánál.

Egy egyszerű 2 bites ALU, ami a XOR, AND, OR, és az összeadás műveleteket tudja (a magyarázathoz kattints a képre)

Gyakorlati áttekintés[szerkesztés | forrásszöveg szerkesztése]

A legtöbb processzor utasításait egy, vagy több ALU végzi. Ezek az egységek betöltik az adatokat a bemenő regiszterbe, végrehajtják a műveletet, és az eredményt eltárolják a kimenő regiszteren. A vezérlőegység mondja meg, hogy melyik utasításon hajtsa végre az adatot. Egy másik eljárás helyezi át az adatot ezek között a regiszterek és a memória között.[2]

Egyszerű utasítások[szerkesztés | forrásszöveg szerkesztése]

A legtöbb ALU a következő utasításokat képes végrehajtani:

  1. Egész számú aritmetikai utasítások (összeadás, kivonás, és néha a szorzás és osztás, habár ezek sokkal költségesebbek)
  2. Egyszerű logikai utasítások (ÉS, NEM, VAGY, KIZÁRÓ VAGY)
  3. Bitmozgató utasítások (balra vagy jobbra mozgatnak, vagy elforgatnak szavakat speciális bitszámmal, előjellel, vagy előjel nélkül. Ezek a mozgatások képesek értelmezni a 2-vel való szorzást és osztást is, mivel ha "balra", eggyel magasabb helyiértékre "eltoljuk" a számunkat, az megfelel a 2-vel való szorzással)

Összetett utasítások[szerkesztés | forrásszöveg szerkesztése]

A mérnökök úgy tervezik az ALU-t, hogy képes legyen bármilyen utasítást végrehajtani, akármilyen bonyolult is az; a probléma az, hogy minél bonyolultabb utasítást képes egy ALU végrehajtani, annál drágább előállítani, és megtervezni. Ezért célja a gyáraknak megtalálni azt az egyensúlyi pontot, ahol az egység előállítási költsége még nem megfizethetetlen, de a teljesítménye elég erőteljes ahhoz, hogy a processzort gyorsabbá tegyen. Például ahhoz, hogy egy ilyen elem kiszámolja egy szám négyzetgyökét, a következő megoldások mind lehetségesek:

  1. Egy rendkívül összetett ALU, ami egyetlen lépésben ki tudja számolni bármilyen szám négyzetgyökét. Ezt hívják egy órajeles számításnak
  2. Egy komplex ALU, ami néhány lépésben ki tudja számolni bármilyen szám négyzetgyökét. De a közbeeső eredményeket minden rész továbbadja a soron következő elemeknek, amik sorba rendezik azokat, akár a gyárak futószalagjai. Ez teszi az ALU-t alkalmassá arra, hogy elfogadjon új számokat számolásra, még mielőtt végzett volna az előző kiszámolásával. Eredményeit a kezdeti késés után az egy órajeles-sel megegyező sebességgel produkálja. Ezt nevezzük futószalag számításnak, angolul pipeline computing.
  3. Létezik az iteratív számítási modell, ekkor egy összetett vezérlőegység irányítja a számítás menetét beépített mikrokódokkal. Néhány lépésben ki tudja számolni egy szám négyzetgyökét.
  4. Segédprocesszoros megoldás is létezik, ekkor egy egyszerű kisegítő, és általában szakosított (speciális utasításokra beállított) ALU jelenik meg a processzorban, ami meggyorsítja a számítást.
  5. Lehetséges, hogy a számítógépet kezelő programozókat utasítjuk arra, hogy írják meg a saját négyzetgyököt számító algoritmusukat. Ezt szoftver könyvtárakkal hajtjuk végre.
  6. Emulálhatunk egy segédprocesszort. Ez úgy történik, hogy a vezérlőegység minden egyes négyzetgyök-utasítás végrehajtása előtt megnézi, hogy van-e elérhető kisegítő ALU a rendszerben, és ha van, a feladatot átruházza arra. Ha nincs, akkor pedig felkéri az operációs rendszert, hogy egy alkalmas algoritmust adjon a feladat kiszámítására.

A fent említettek között van a leggyorsabb és a legdrágább, a leglassúbb és a legolcsóbb is. Ennek következtében, esetenként a legegyszerűbb számítógép is képes kiszámolni a legbonyolultabb formulát is, habár általában sokáig dolgozik, mivel lépésenként számolja a formulát. Az erős processzorok, mint az Intel Core és az AMD64, az egyszerű utasításokhoz az első opció szerint számolnak, a nagyon összetett utasításokhoz azonban a második, a rendkívül összetett utasításokhoz pedig a harmadik módot használják. Ez által lehetővé válik a nagyon összetett ALU-k építésének lehetősége ezekben a processzorokban.

Bemenetek és kimenetek[szerkesztés | forrásszöveg szerkesztése]

Az ALU bemenetei szükségesek az adatok működéséhez (amit operandusnak nevezünk) és a kódolásához. A vezérlőegység jelzi, hogy melyik utasítás következik. A kimenet a számolás eredménye. Néhány kialakításában az ALU generálja a bemeneteket vagy kimeneteket, elindítja feltételes kódolásában, vagy a státusz regiszterbe teszi. Ezeket a kódokat hibajelző esetekre használjuk, mint az elutasítás, túlcsordulás, nullával való osztás, stb.[2]

ALU-k vs. FPU-k[szerkesztés | forrásszöveg szerkesztése]

A lebegőpontos egység végrehajtja az aritmetikai utasításokat két érték között, ezért a számoknak lebegőpontos ábrázolást állítanak elő, ami sokkal bonyolultabb, mint a kettes komplemens ábrázolása egy tipikus ALU-ban. Azért csinálják ezeket a számításokat, mert az FPU-nak számos összetett, beépített áramköre van, beleértve héhány belső ALU-t is.

Általában a mérnökök azt mondják, hogy az ALU az az áramkör, ami az egész számú utasításokat számolja (mint a kettes komplemens és a binárisan kódolt decimális), míg az áramkörök sokkal összetettebb alakúakat számolják (pl: lebegőpontos, komplex számok, stb.), s általában átveszik a sokkal jelesebb nevet.

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

Hivatkozások, források[szerkesztés | forrásszöveg szerkesztése]

  1. Stallings 19. oldal
  2. ^ a b Stallings 290-291. oldal
  • Andrew S. Tanenbaum: Számítógép-architektúrák. Panem, 2001
  • Eredeti címe: "Structured Computer Organisation"
  • Fazlollah M. Reza: Bevezetés az információelméletbe, Bp., 1966.
  • Architektúrák jegyzet, Óbudai Egyetem
  • Martin F. Wolters: kulcs a számítógéphez. Bp., 1972 Fülöp Géza: Ember és információ, 1973 *Racskó Péter: Bevezetés a számítástechnikába. Bp., 1989.
  • Hwang, Enoch (2006). Digital Logic and Microprocessor Design with VHDL [1] Thomson. ISBN 0-534-46593-5
  • Stallings, William (2006). Computer Organization & Architecture: Designing for Performance 7th ed [2]. Pearson Prentice Hall. ISBN 0-13-185644-8.

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez a szócikk részben vagy egészben az Arithmetic logic unit című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

További információk[szerkesztés | forrásszöveg szerkesztése]