4-bitine ALU 74181 skeem
**Aritmeetika-loogikaplokk** (inglise *arithmetic logic unit*, lühend *ALU*) on protsessori plokk, mis on mõeldud aritmeetika- ja loogikateheteks kahendarvudega. Kõik aritmeetikatehted sooritatakse arvude või nende täiendkoodide liitmisega ja nihutamisega. Peamised loogikatehted on NING, VÕI, EI ja Mod2, mille täitmiseks on ALU-s vastavad loogikalülitused.

Erinevate tehete selekteerimiseks on aritmeetika-loogikaplokil multipleksor.

Ajalugu
-------

Texas Instruments SN74AS888 8-bitine ALU
ENIAC arvuti looja, John von Neumann, oli esimese ALU valmistaja.[*viide?*] 1945 avaldati esimesed uue arvutiga (EDVAC) seotud teadustööd. Oma töös nimetas von Neumann seadmeid, mis tema arvates pidid arvutis olema. Nende hulgas oli ka ALU. John von Neumann rõhutas, et ALU on arvutile vajalik, sest see garanteerib, et arvuti on võimeline teostama põhilisi matemaatilisi tehteid (liitmine, lahutamine, korrutamine, jagamine).

Ehitus ja tööpõhimõte
---------------------

ALU koosneb summaatorist, registritest, mis säilitavad informatsiooni operatsioonide käigus ning moodustavad arvutuste tulemusi, ja loogilistest skeemidest, mis vastutavad vajaliku informatsiooni muutmise eest.

Sõltuvalt ülesannetest võib aritmeetika- ja loogikaseadmed jagada kaheks:

1. mikroprogramm (juhtimise seade), mis koostab mikrokäskude jada
2. operatsiooniseade (ALU), kus realiseeritakse antud mikrokäskude jada

**Registrite funktsioonid, mis kuuluvad ALU koostisse**

Osa operatsioonide registritest on tarkvaraliselt kättesaadav, mis tähendab, et neid saab kasutada käskudes operandidena. Nende hulka kuuluvad:

1. akumulaator (järjestikuliseks summeerimiseks jt teheteks)
2. indeksiregistrid
3. mõned lisaregistrid

Ülejäänud registrid ei ole tarkvaraliselt kättesaadavad, neid ei saa programmis suunata. Operatsiooniseadmeid saab jaotada sõltuvalt töödeldavast informatsioonist, informatsiooni töötlemise viisist ja loogilisest struktuurist.

### ALU ehitus

ALU operatsioonide loetelu sõltub eesmärkidest ja funktsioonidest, mida arvuti täidab teiste seadmete funktsioneerimisel.

ALU operatsioonid (teostatavad tehted) on mikrooperatsioonide kogumid, seega peab ALU koosnema elementidest, mis neid mikrooperatsioone teostavad. Seega määrab ALU struktuuri mikrooperatsioonide kogum, mis on vajalik aritmeetiliste, loogiliste ja eriotstarbeliste tehete täitmiseks. ALU ülesanne on pakkuda sellist mikrooperatsioonide hulka, mis võimaldaks koostada mikroprogrammi igale vajalikule operatsioonile (tehtele). Sellist mikrooperatsioonide kogumit on lihtne pakkuda. Üldiselt tuleb ALU aritmeetilise ja loogilise operatsiooni algoritm valida minimaalse mikrooperatsioonide hulgatingimuse põhimõttel. ALU vajaliku töökiiruse tagamiseks ei tohi mikrooperatsioonide hulk olla liiga piiratud. Liiga piiratud mikrooperatsioonide hulga puhul võivad mõned tehted tekitada väga pikki mikroprogramme, mis omakorda suurendab mõningate operatsioonide täitmise aega.

ALU loogilise struktuuri keerukust iseloomustab teatud määral üksteisest erinevate mikrooperatsioonide hulk, mis on vajalik ülesannete kogumi täitmiseks ALUs. Iga registri alguses on kogutud vastavad loogilised skeemid, mis tagavad seosed registrite vahel ja võimaldavad rakendada etteantud mikrokäske. Sõnadega teostatava operatsiooni täitmine on teatud mikrokäskude jada, mis vastutavad ALU sõnade edasiandmise ja muutmise eest. Mikrokäskude täitmise järjekord määratakse operatsiooni täitmise algoritmi teel. Järelikult sõltuvad ALU registrite ja funktsioonide (mida peavad täitma registrid) omavahelised seosed peamiselt operatsiooni täitmise metoodikast: aritmeetiline, loogiline või eriaritmeetiline.

ALU operatsioonid
-----------------

ALU operatsioone saab liigitada järgmisteks rühmadeks:

1. kahendsüsteemi aritmeetikatehted täisarvude jaoks;
2. kahendsüsteemi (või kuueteistkümnendsüsteemi) aritmeetikatehted ujukomaarvude jaoks;
3. kümnendsüsteemi aritmeetikatehted;
4. indeks-aritmeetikatehted (käsu aadresside modifitseerimise korral);
5. spetsiifilised eriaritmeetikatehted;
6. loogikatehted;
7. operatsioonid tähtnumbriliste väljadega

L**evinumad ALU operatsioonid**

|  |  |
| --- | --- |
| **R = X + Y** | Х ja Y liitmine |
| **R = X + Y + Cl** | Х ja Y ülekandega liitmine |
|  **R = X - Y** | X-st lahutada Y |
| **R = X - Y - Cl - 1** | X lahutada laenuga Y |
| **R = - X** | Х vastandarv (täisarvude puhul täiendkood) |
| **R = X + 1** | X suurendamine ühe võrra (juurdekasv) |
| **R = X - 1** | X vähendamine ühe võrra |
| **R = PASS Х** | tulemus võrdub operandiga Х |
| **R = O (PASS 0)** | tulemuse kustutamine |
| **R = ABS Х** | tulemus võrdub Х absoluutväärtusega |
| **R = X AND Y** | loogiline Ning-tehe (AND) Х ja Y vahel |
| **R = X OR Y** | loogiline Või-tehe (OR) Х ja Y vahel |
| **R = X XOR Y** | välistav loogiline või (XOR) Х ja Y vahel |
| **R = NOT Х** | loogiline eitus Х-st |

Paljud arvutid teostavad kõiki ülaltoodud tehteid, aga paljude väiksemate mikroarvutite, mikroprotsessorite ja eriotstarbeliste arvutite riistvara ei sisalda ujukomaplokki ega võimalda kümnendsüsteemi aritmeetikatehteid ning tähtnumbrilisi operatsioone.

Sel juhul viiakse need tehted läbi alamprogrammidega. Lühikeste aritmeetikatehete alla kuuluvad liitmine, lahutamine, moodulite lahutamine, pikkadeks aritmeetikateheteks on korrutamine ja jagamine. Loogikatehete rühma moodustavad disjunktsioonitehted (loogiline VÕI) ja konjunktsioonitehted (loogiline NING) kahendsüsteemis arvutisõnadega. Spetsiaalsete aritmeetikatehete hulka kuuluvad normaliseerimine, aritmeetiline nihutamine (nihutatakse ainult numbrilised järgud, märgiline järk jääb kohale), loogiline nihutamine (märgiline järk nihutab koos numbriliste järguga).

Palju tehteid ja operatsioone on ka tähtnumbrilise info töötlemiseks kasutatavate operatsioonide rühmas.

ALU liigitus
------------

ALU operandidega toimetamine jaguneb jada- ja paralleelmeetodiks. Jada-ALU operandid esitatakse jadakoodides ja operatsioonid sooritatakse järjestikku nende jadamisi eraldi järkude ajal. Paralleelsed ALU operandid esitatakse paralleelkoodidega ja operatsioonid sooritatakse paralleelselt kõikide operantide osade ajal.

ALU numbri esitamise meetodid eristatakse:

1. täisarvu jaoks
2. ujukomaarvu jaoks
3. kümnendsüsteemi arvu jaoks

Sõltuvalt elementidest ja sõlmede kasutamisest jagatakse ALUd plokilisteks ja multifunktsionaalseteks.

Plokilises ALUs sooritatakse operatsioonid täisarvude ja ujukomaarvude vahel, kümnendsüsteemi numbrite ja tähtnumbriliste väljadega sooritatakse operatsioonid eriplokkides. Sel viisil suureneb töökiirus, sest plokid võivad teha tööd paralleelselt, aga tunduvalt suurenevad ka seadmekulud. Operatsioonid multifunktsionaalses ALUs kõikide numbrite esitamise vormide jaoks sooritatakse kasutades samu skeeme, mis vajadusel kommuteeritakse seoses nõutud töörežiimiga.

Oma funktsioonide poolest on ALU operatsiooniplokk, mis teostab mikrooperatsioone ja kooskõlastab teiste seadmetega (näiteks mälu) operandide vastuvõtu, nende muutumise ja tulemuste väljastamise. Aritmeetika-loogilist seadet juhitakse juhtplokiga, mis genereerib juhtsignaale, mis omakorda algatavad kindla mikrooperatsioonide sooritamise ALUs. Juhtploki genereeritud signaalide järgnevus määratakse operatsiooni koodiga ja muude signaalidega.

Kirjandus
---------

* 

| * v
* r
Protsessorite tehnoloogia |
| --- |
| Arhitektuur | 
Turingi masin • Universaalne Turingi masin • Harvard • Von Neumann • Kvantarvuti |
| Sõna suurus | 
1 • 2 • 4 • 8 • 12 • 16 • 24 • 31 • 32 • 36 • 48 • 60 • 64 • 128 • 256 • 512 |
| Lõimed | 
Multitegumtöö • Hüper-hargtöötlus |
| Tüübid | 
Mikroprotsessor • Mikrokontroller • Signaaliprotsessor • Süsteemikiip |
| Komponendid | 
Aritmeetika-loogikaplokk • Multipleksor • Demultipleksor • Register  • Taktsagedus • Tuum • Vahemälu |
| Perekonnad | 
x86 • z/Architecture • ARM • MIPS • PowerPC • SPARC • Itanium (IA-64) • Alpha • Prism • SuperH • VAX • Unicore • PA-RISC • MicroBlaze • RISC-V |