Aritmetikai logikai egység
A Wikipédiából, a szabad enciklopédiából.
| Ezen szócikk bedolgozandó a(z) Aritmetikai-logikai egység szócikkbe, azután törlendő vagy átirányítássá alakítandó. |
| Ezt a lapot át kellene olvasni, ellenőrizni a szavak helyesírását és a szöveg nyelvhelyességét. |
A számítástechnikában, az aritmetikai logikai egység (ALU) egy olyan digitális áramkör, ami elvégzi az aritmetikai és logikai műveleteket. Az ALU alapvető eleme a számítógép központi vezérlőegységének, esetenként a legegyszerűbb microprocesszorok is magukba foglalnak egy utasítást, ilyen például a várakozási idő. A processzorok, a CPU-k és GPU-k számítógép belsejében találhatók, melyek belülről nagyon erős és bonyolult ALUk; 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.
Tartalomjegyzék |
[szerkesztés] Korai fejlődés
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. Az IAS computer 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. Neumann János az ALU-val kezdte, mert ez elengedhetetlen kelléke a számítógépnek, ugyanis ez végzi el az egyszerű matematikai utasításokat, beleértve az összeadást, szorzást, kivonást és osztást.[1] Ő hitt benne, hogy ettől „eredményes lesz a számítógép, ami talán megfékezi a speciális szerveket ezekhez az utasításokhoz”[2].
[szerkesztés] Numerikus rendszerek
Az ALU-nak számos eljárást kell használnia ugyanazokra a számításokra, ahogy jó néhány digitális áramkörnek is. 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 rendszereket, tíz csővezetékkel számjegyenként.
Az ALU 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.
[szerkesztés] Gyakorlati áttekintés
A legtöbb processzor utasításait egy vagy több ALU végzi. Az ALU betölti az adatokat a bemenő regiszterbe, végrehajtja a műveletet, és az eredményt eltárolja a kimenő regiszteren. A vezérlőegység mondja meg a ALU-nak, 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[3].
[szerkesztés] Egyszerű utasítások
A legtöbb ALU a következő utasításokból áll:
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.)
[szerkesztés] Összetett utasítások
A mérnökök úgy tervezték az ALU-t, hogy képes legyen bármilyen utasítást számolni, 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. Ezért a mérnökök mindig pontosan kiszámolják, hogy mennyi processzort (vagy más áramköröket) kell beszerezni az ALU-hoz, hogy az elég erőteljes legyen ahhoz, hogy a processzort gyorsabbá tegye, de még nem olyan összetett, hogy megfizethetetlen legyen. Képzeld csak el, mire van szükséged ahhoz, hogy kiszámold egy szám négyzetgyökét; egy elektromérnök az utasításhoz a következő lehetőséges eszközöket adná meg:
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.Tervezzünk egy nagyon összetett ALU-t, ami néhány lépésben ki tudja számolni bármilyen szám négyzetgyökét. De – és itt a trükk – a közbeeső eredményeket továbbadja a soros áramköröknek, amik sorba rendezik azokat, akár a gyárak futószalagai. 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. Ez teszi képessé az ALU-t olyan gyors termeléshozamra mint az Egyidejű ALU, habár az eredmények csak a kezdeti késés után jelentkeztek. Ezt nevezzük csővonalas számolásnak.
3.Tervezzünk olyan összetett ALU-t, ami néhány lépésben ki tudja számolni a négyzetgyököt. Ezt nevezzük interaktív számolásnak, és általában az irányítást az összetett vezérlőegység végzi beépített mikrokódokkkal.
4.Tervezzünk egy egyszerű ALU-t a processzorban, és adjuk meg a különálló szakosított és drága processzort, amit a tervező csak emellé tud behelyezni, és végrehajtja a fenti lehetőségek egyikét. Ezt nevezzük segédprocesszornak.
5.Mondjuk meg a programozóknak, hogy ne legyenek segédprocesszorok, és ne legyen versengés, így mindenki meg tudja írni a saját négyzetgyököt számoló algoritmusát. Ezt szoftver könyvtárakkal hajtjuk végre.
6.Versenyeztessük a létező segédprocesszorokat, így, akármikor a program próbálja végrehajtani a négyzetgyök számítást. Ellenőrizzen a processzor, ha az segédprocesszor és használjuk is valamelyiket közülük; ha nem az, szakítsa meg a program folyamatát és hívja segítségül az operációs rendszert, hogy hajtsa végre a négyzetgyökszámítást néhány szoftver-algoritmuson keresztül. Ezt nevezzük szoftver versengésnek.
A fent említettek között van a leggyorsabb és a legdrágább, a leglassúbb és a legolcsóbb. 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, eszköze az első opció, az egyszerű utasításokhoz, a #2-es a nagyon összetett utasításokhoz, és a #3-t a rendkívül összetett utasításokhoz. Ez által lehetővé válik a nagyon összetett ALU-k építésének lehetősége ezekben a processzorokban.
[szerkesztés] Bemenetek és kimenetek
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.[4]
[szerkesztés] ALU-k vs. FPU-k
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.
[szerkesztés] Lásd még
[szerkesztés] Lábjegyzetek
[szerkesztés] Hivatkozások
- 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.
[szerkesztés] Külső Linkek
Egy komplex ALU szimulátor MATLABban
- Ez a szócikk részben vagy egészen a(z) Arithmetic logic unit című Wikipédia-szócikk ezen változatának fordításán alapul.


