Aritmetikai-logikai egység
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és1946-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ésAz 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 tárolóval 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.
Gyakorlati áttekintés
szerkesztésA 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ésA legtöbb ALU a következő utasításokat képes végrehajtani:
- 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)
- Egyszerű logikai utasítások (ÉS, NEM, VAGY, KIZÁRÓ VAGY)
- 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ésA 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:
- 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
- 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.
- 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.
- 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.
- 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.
- 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ésAz 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ésA 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 né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ésJegyzetek
szerkesztésForrások
szerkesztés- 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[halott link]
- 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ésEz 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. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További információk
szerkesztés- Egy komplex ALU szimulátor MATLABban Archiválva 2008. január 7-i dátummal a Wayback Machine-ben