Kahe tuumaga protsessor 
**Protsessorituum** (inglise keeles *processor core*) on arvuti protsessori arvutusüksus. Protsessorituuma eesmärk on vastavalt ette antavatele käskudele teostada arvutusoperatsioone.

Mis on protsessorituum?
-----------------------

Protsessorituuma puhul on tegemist arvutusüksusega, mis asub arvuti kesktöötlusseadmes ehk protsessoris (inglise keeles *Central\_Processing Unit*, CPU). Protsessorituum täidab juhistena ette antud käske, milleks on arvutusülesanded. Töödeldav informatsioon loetakse töötlemiseks arvuti muutmällu (*Random Access Memory*, RAM),

Tööpõhimõte ==
Protsessorituumas teostatakse aritmeetika-loogikaploki (*Arithmetic and Logic Unit*, ALU) abil aritmeetika- ja loogikatehteid kahendsüsteemis. Selleks, et aritmeetika-loogikaplokk suudaks teostada tehteid, peab kõigepealt info jõudma sisend- ja juhisregistritest aritmeetika-loogikaplokki. Aritmeetikatehteid tehakse kahendkoodis arvudega, mida saab liita ja nihutada. Tehete tulemused salvestatakse protsessori registri(te)sse ja sealt edasi läbi vahemälu arvuti muutmällu.

Aritmeetika-loogikaplokk sooritab järgmisi loogikatehteid:

* VÕI (OR),
* NING/JA (AND),
* välistav või (XOR),
* Inverteeritud välistav või (XNOR),
* EI (NOT),
* EI-EGA ehk VÕI-EI (NOR),
* NING-EI (NAND)

Nende tehete sooritamiseks on aritmeetika-loogikaplokis vastavad loogikalülitused. Aritmeetika-loogikaploki operatsioonide loetelu sõltub protsessorituuma funktsioonist arvuti protsessoris.

Näide: loogikatehete tulemused sõltuvalt sisendsuurustest:| **Sisend** | **Tulemus** |
| **L1** | **L2** | **VÕI** | **NING/JA** | **XOR** | **XNOR** | **NOR** | **NAND** |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |

4-bitine ALU
Aritmeetika-loogikaploki (ALU) tehted on üldjuhul mikrooperatsioonide kogumid. Aritmeetika-loogikaploki ülesanne on pakkuda sellist mikrooperatsioonide kogumit, mis võimaldaks koostada vastava mikroprogrammi igale vajalikule operatsioonile ehk tehtele. ALU aritmeetika- ja loogikatehete algoritmid valitakse minimaalse mikrooperatsioonide hulga tingimuse põhimõttel. ALU vajaliku töökiiruse tagamiseks ei tohi mikrooperatsioonide hulk olla liiga piiratud. Liiga piiratud mikrooperatsioonide hulga korral võivad mõned tehted tekitada väga pikki mikroprogramme, mis omakorda suurendavad 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. Iga protsessi alguses on loogikalülitused, mis loovad seosed erinevate juhiste vahel ja võimaldavad rakendada etteantud mikrokäske. Mikrokäskude täitmise järjekord määratakse operatsiooni täitmise algoritmiga. ALU poolt täidetavad funktsioonid võivad olla omavahel seotud. Peamiselt on operatsiooni täitmise järjekord kõigepealt aritmeetiline ja peale seda loogiline või eriaritmeetiline.

Aritmeetika-loogikaploki 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-st 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 |

  

### Võta-dekodeeri-teosta (inglise keeles fetch–decode–execute) operatsioonid

#### Võta (inglise keeles Fetch)

Fetch’i puhul on tegemist operatsiooni tsükli esimese sammuga, mille eesmärk on kätte saada käsklused. Käsklused on esitatud kahendkoodi numbrite kombinatsioonidena, mis paiknevad mälus (vahe- või operatiivmälus). Käskluse aadress mälus on määratud käskluse viida (inglise keeles pointer) järgi. Viit määrab ära, milline järgmine käsklus tuleb mälust kätte saada. Kui käsklus on kätte saadud, siis kontrollitakse selle pikkust ja lisaks kontrollitakse, et käskluses oleks kaasas ka järgmise käskluse aadress. Käskluste kätte saamisega võivad ka tekkida probleemid, näiteks kui proovitakse käskluseid saada aeglasest mälust. See võib tekitada käskluste ootetsüklite seisakut. Seisaku vältimiseks kasutatakse toru põhimõtet ehk, kui käsklus on ära kontrollitud ja liigub edasi, siis võetakse kontrollimiseks juba uus käsklus. Tänu sellele saab tsükkel toimida ilma seisakuteta. Toru abil proovitakse selle probleem lahendada võimalikult efektiivselt, tekkitakse olukord, mille käigus oleksid võimalikud väiksed ressursi kaod.

#### Dekodeerimine (inglise keeles Decode)

AND dekooder
Käsklused, mida protsessor mälu aadressidelt saab määravad ära, mis ülesannet peab protsessori tuum täitma hakkama. Dekodeerimise plokis muundatakse mälu aadressilt tulevad käsklused signaaliks, mida suudavad ära kasutada protsessori tuumad, et sooritada ette antud ülesanne. 

Dekodeerimise plokis lähtutakse käskluste dekodeerimisel sellest, millist käsustikku (inglise keelses instruction set architecture (ISA)) konkreetne protsessor kasutab. Üldjuhul kujutatakse ette dekodeeritud juhiseid sellisena, et esimene osa bittidest määrab ära, millist ülesannet tuleb hakata protsessori tuumadel täima. Ülejäänud osa käsklusest annab juurde vastavad algandmed ja parameetrid, millest lähtudes tuleb ülesannet täita. Käsklustes olevateks parameetriteks võivad olla näiteks konstantsed väärtused või mingi kindla andme asukoha aadress mälus, mida tuleb selle ülesande täitmiseks kasutada.

Sõltuvalt protsessori arhitektuurist võib käskluste dekodeerimisplokk olla loodud muutmatu plokina (näiteks arvutusprotsessorid) või kui mikroprogrammina (näiteks graafikaprotsessorid). Mikroprogrammi kujul dekodeerimisplokkis muudetakse käsud vastavateks signaalideks, mida saab rakendada mitme taktsageduse tsükli jooksul. On olemas võimalus, kus saab ka mälus paiknevat mikroprogrammi muuta. Selle eesmärk on tõsta efektiivsust, kui protsessori tuumadel on vaia täita ainult mingit kindlat ülesannet, mille puhul tuleb käskluseid dekodeerida erilisel viisil.

#### Teostus (inglise keeles Execute)

Kui on sooritatud käskluste kättesaamine ja dekodeerimine, siis tuleb need käsklused ka teostada. Sõltuvalt protsessori arhitektuurist võib käskluste täitmine toimuda, kas ühe tsükliga või mitme tsükli tulemusena. Käsklusi täites on protsessori erinevad osad aktiivsed või mitteaktiivsed. Protsessori osade aktiivsuse määravad käskluste täitmise ajal tekivad elektrilised signaalid. Käsklus täitetakse üldjuhul ühe takti jooksul. Peale käsu täitmist kirjutatakse tulemus registrisse, et kui neid on vaja kasutada järgmise käsu täitmisel, siis on neile võimalik kiiresti ligi saada. Lisaks kirjutatakse tulemused ka mällu, mis on aeglasem. 

Näiteks kui on vaja sooritada liitmistehe siis tuleb registrist võtta eelmise käsu tulemus, mis tuleb liita aritmeetika-loogikaplokki abil uue käsu tulemusele. Kõik see protsess leiab aset ühe signaali perioodi jooksu, ehk perioodi alguses sisenevad andmed aritmeetika-loogikaplokki ja perioodi lõpuks on aritmeetika-loogikaplokkist väljunud tulemus. Tulemuseks saadud väärtus salvestatakse mällu. Kui peaks juhtuma, et aritmeetika-loogikaplokis teostatava tehte väärtus on liiga suur, siis antakse sellest märku nii öelda lipu tõstmisega. Saadud liiga suur väärtus mõjutab järgmist aritmeetilist rehkendust.

### Register

Protsessori registri puhul on tegemist kiiresti ligi pääsetava asukohaga, kuhu saab ajutiselt salvestada andmeid. Registrid võivad olla näiteks, kas ainult andmete registrisse kirjutamiseks või siis ainult registrist väärtuste lugemiseks (registris hoitakse väärtusi 0, 1, ja pi). Arvuti arhitektuurilises vaates on register tüüpiliselt mälust eraldiseisevalt adresseeritav üksus aga mõningatel juhtudel võib esineda ka registreid, mis asuvad mäluaadressidel. 

Kõikides arvutusseadmetes saadakse andmed mälust, mis liiguvad omakorda edasi registrisse. Registris olevate andmetega teostatakse aritmeetika rehkendusi, mis peavad lõpuks vastama ette antud käsklustele. Rehkenduste tulemused salvestatakse uuesti mällu kas siis samale aadressile nagu algselt või hoopis siis uuele aadressile. Protsessorid kasutavad mäluna kas staatilist (vahemälu) või dünaamilist muutmälu ehk RAM (inglise keelse Random Access Memory), mille poole saab pöörduda erinevatel tasanditel (näiteks 1. 2. ja 3. taseme vahemälu ning muutmälu).

Protsessori registrid on üldjuhul mälu hierarhias kõige kõrgemal positsioonil, seega on võimalik registritele kõige kiiremini ligi saada. Moodsates protsessorite arhitektuurides on mitmeid üldkasutatavaid registreid. Tänu sellele on võimalik registreid nö. ümber nimetada ja selle funktsionaalsusega paraneb efektiivsus ning saavad võimalikuks paralleelseid ülesandeid. Tänapäeva x86 arhitektuur võttis seda tüüpi tehnoloogia kasutusele 1995.aastal, kui tulid välja näiteks sellised protsessorid Pentium Pro, Cyrix 6x86, Nx586, ja AMD K5. 

### Ujukomaarvu-plokk (FPU)

Ujukomaarvu-ploki (inglise keelse floating-point unit (FPU)) puhul on tegemist kindla ülesandega plokiga, milleks on täita ujukoma arvutusi. Plokis teostatakse liitmist, lahutamist, korrutamist, jagamist ja ruutjuure operatsioone. Osad Ujukomaarvu-plokid suudavad teostada ka eksponentsaal ja trigonomeetrilisi arvutusi. Ujukomaarvu-plokk on üldjuhul integreeritud arvuti protsessorisse, kus saab protsessori tuum selle lisafunktsionaalsust ära kasutada.

### Juhtseade

Juhtseade (inglise keeles Control unit) on arvuti protsessori osa, mis juhib protsessori tööd, teisisõnu jagab tuumale ülesandeid. Juhtseade kasutab binaarset dekoodrit, selleks et teisendada käskluseid, mis juhivad ALU, täiturite ja registrite tööd. Juhtseade juhib andmevoogu protsessori ja teiste arvutusseadmete vahel.

Mitmetuumaline protsessor
-------------------------

 *Pikemalt artiklis Mitmetuumaline protsessor*
Mitmetuumaline protsessor on kahe või enama tuumaga protsessor. Mitme tuuma toel on võimalik teostada paralleelarvutusi ja multitegumtööd (inglise keeles multitasking) ehk tehakse mitut toimingut sama aegselt. Mitme tuumaga protsessor saab jagada erinevad ülesanded mitme protsessorituuma vahel. Tänu ülesannete jagamiselle kasvab protsessori efektiivsus ja sooritatakse käsud kiiremini.

Lõim
----

Inteli hüperhargtöötlust kasutava protsessori skeem
Lõim (inglise keeles Thread) tehnoloogia, mis jagab füüsilise protsessori tuuma mitmeks virtuaalseks tuumaks. Ühel protsessori tuumal saab olla mitu lõime, kuid enamasti on tänastel protsessoritel ühe tuuma kohta 2 lõime. Näiteks kui protsessoril on kaks tuuma, siis on protsessoril neli lõime ja kui protsessoril on 8 tuuma siis on sellel 16 lõime. 

### Protsessori lõim

Protsessori lõimed tekitatakse tänu riistvaralisele tehnoloogiale, mille abil jagatakse protsessorituum mitmeks lõimeks. Inteli hüperhargtöötluse (inglise keelses Hyper-Threading) puhul jagatakse üks füüsiline protsessorituum kaheks virtuaalseks tuumaks. See tähendab seda, et on kaks tuuma, millel on ühine täiturmootor. Mõlemad virtuaalsed tuumad suudavad tegeleda üksteisest erinevate tarkvaraliste lõimede käsklustega**.** Lõimesid on võimalik luua nii palju kui arvutis kasutusel olev protsessor neid luua laseb.

### Tarkvaraline lõim

Tarkvaralinelõim luuakse operatsiooni süsteemi poolt alati, kui mingi rakendus avatakse. Avatud lõim võib luua omakorda alam lõimed, mis tegelevad kindlate ülesannetega. Põhimõtteliselt, mida rohkem avatakse arvutis rakendusi seda rohkem tarkvaralisilõimesid ka luuakse.

### Miks kasutatakse lõimesid?

Protsessori tuumade ja lõimede arvutusvõimsuse maksimaalseks ära kasutamiseks jagatakse tarkvaraprotsessid mitmeks lõimeks. Mitu tuuma ja lõime võimaldavad protsessoril teostada mitut ülesannet samaaegselt, mis muudab ülesannete täitmise kiiremaks ja efektiivsemaks. Mitu tuuma ja lõime võimaldab ka arvutil jooksutada mitut rakendust samaaegselt ja neid saab kasutada paralleelselt (inglise keeles multitasking).

Taktsagedus
-----------

Taktsagedus määrab, kui kiiresti on protsessor suuteline käsklusi vastu võtma ja arvutusi tegema, ehk näitab kui kiiresti on suuteline protsessoris paiknev tuum teostama ette antud käskluste põhjal aritmeetikatehteid. Taktsagedust mõõdetakse hertsides (Hz), mida suurem number, seda suurem on protsessori taktsagedus. Taktsageduse genereerib taktgeneraator, taktsagedusel on kindel periood. Arvutustehnikas on enamasti taktsageduse allikana kasutusel kvarstostsillaator. Taktsagedust kujutletakse ristküliksignaalina, ühe perioodi vältel võib näiteks arvuti protsessor täita ühe või mitu käsku.

### Taktsagedus või tuumade arv

Kui on arvuti, millel on üks protsessori tuum ja kõrge taktsagedus, siis on arvuti suuteline toimetama ühe ülesandega kiiresi. Kuid mitme protsessorituumaga ja madalama taktsagedusega arvuti on suuteline töötama mitmete ülesannetega samaaegselt. See pärast tulebki arvutite kiiruseid võrreldes jälgida, milliste ülesannete jaoks on spetsiifiline arvuti ehitatud.

Graafikaprotsessori tuum
------------------------

Graafikaprotsessori tuumade ja arvutusprotsessori tuumade vahel on nii sarnasusi kui ka erinevusi. Arvutusprotsessori tuumad on loodud võimega jooksutada väga erinevaid erinevaid ülesandeid. Graafikaprotsessorite tuumad on aga loodud väga kindla eesmärgiga ülesannete täitmiseks, mis muudab need tuumad efektiivsemaks (kiiremaks) neid kindlaid ülesandeid täites. Kuna graafikaprotsessori tuumad on monofunktsionaalsemad, siis on need elektrooniliselt lihtsamad ja neid on samale pinnaühikule paigutada rohkem kui arvutusprotsessori tuumasid. 

### NVIDIA CUDA tuumad

CUDA (inglise keeles Compute Unified Device Architecture) puhul on tegemist NVIDIA tehnoloogiaga. Nende tuumade peamiseks ülesandeks on luua efektiivne paralleelne aritmeetikatehete teostamine. CUDA tuumadel on kindlad ülesanded, mis lubab ühel tuumal efektiivsemalt teostada loogikaülesandeid. Kui arvutusprotsessorites on kümneid tuumasid (täna ka juba sadu), siis graafikaprotsessorites on CUDA tuumasid tuhandeid.

### NVIDIA Tensor tuumad

Tensor tuumad on loodud selleks, et muuta tehis intellekt ja masinõppe võimsamaks ja laiaulatuslikumaks. Tensor tuumad on disainitud selleks, et teostada maatriks arvutusi, mille puhul on tegemist masinõppe selgrooga. NVIDIA 3 põlvkonna tensor tuumad on 20x jõudsamad kui eelmise põlvkonna omad. Seda Tensor tuumade kiirust kasutatakse efektiivselt ära NVIDIA DLSS tehnoloogias, kus analüüsitakse masinõppe abil pilti, et selle kvaliteeti tõsta.

### NVIDIA RT tuumad

RT tuumad on disainitud selleks, et reaalajas teostada masinõpet video ja audio väljundite peal. Selle masinõppe eesmärgiks on kiirendada kiirtejälitus (inglise keeles ray tracing) ja teekonnajälitus (inglise keeles path tracing) arvutusi. Kiirtejälitus arvutuste eesmärk on 3D-graafikas simuleerida valguse liikumist peegelduste abil.

Vaata ka
--------

* Keskseade
* Protsessor
* Aritmeetika-loogikaplokk
* Taktsagedus
* Graafikaprotsessor
* Nvidia
* Paralleelarvutus
* Multitegumtöö
* Hüperhargtöötlus

Viited
------

1. 1 2 3 4 5 6  Carl Hamacher,Naraig Manjikian,Zvonko Vranesic,Safwat Zaky (2012). *Computer Organization and Embedded Systems, SIXTH EDITION*.`{{raamatuviide}}`: CS1 hooldus: mitu nime: autorite loend (link)
2. ↑  Ken Shirriff (2013). "The Z-80 has a 4-bit ALU. Here's how it works". *righto.com*. Vaadatud 23.04.2022.
3. 1 2 3  DANNY STIEBEN (28.11.2021). "What Is A Processor Core?". *makeuseof.com*. Vaadatud 23.04.2022.
4. ↑  David Patterson, John Hennessy (2020). *Computer Organization and Design RISC-V Edition The Hardware Software Interface 2nd Edition*.
5. ↑  Computer Hope (29.06.2020). "Control unit". *computerhope.com/*. Vaadatud 24.04.2022.
6. ↑  "What Is Hyper-Threading?". *intel.com/*. Vaadatud 30.04.2022.
7. ↑  "Intel® Hyper-Threading Technology" (PDF). Jaanuar 2003. Vaadatud 27.04.2022.
8. ↑  "What are Threads in Computer Processor or CPU?". *geeksforgeeks.org*. 05.03.2020. Vaadatud 24.04.2022.
9. 1 2  Sophie Sirois (18.12.2018). "What is Processor Speed and Why Does It Matter?". *hp.com*. Vaadatud 24.04.2022.
10. 1 2  Alex Glawion (19.03.2022). "CUDA Cores vs. Stream Processors (And other GPU Cores Explored)". *cgdirector.com/*. Vaadatud 23.04.2022.
11. ↑  "NVIDIA TENSOR CORES". Vaadatud 23.04.2022.
12. ↑  "RTX TECHNOLOGY". Vaadatud 23.04.2022.

Lisaks allikaid

13."MULTI-CORE PROCESSORS: CONCEPTS AND IMPLEMENTATIONS". Vaadatud 23.04.2022.

14."Core". Vaadatud 23.04.2022.

15."Computer processor history". Vaadatud 23.04.2022.

16."Techopedia Explains Flash Memory". Vaadatud 23.04.2022.

17."Microprocessor Types and Specifications". Vaadatud 23.04.2022.

18."Using Intel® Hyper-Threading Technology". Vaadatud 28.04.2022.

19."What Is Path Tracing?". Vaadatud 28.04.2022.