Masinkood ja käsukonveier

iDevide ikoon Eesmärk
Mõista mõisteid: masinkood, käsukonveier ja parallelism.

Masinkood

Kõik arvutis töötavad protsessid teisendatakse riistava tasemel masinkoodi. Masinkoodi moodustavad käsud, mida protsessor mõistab ja oskab täita (ning nende käsude juurde kuuluvad andmed). Erinevatel protsessoritel võib olla kasutusel erinev käsustik, mis tähendab ka seda, et masikood, mida protsessor mõistab võib olla erinev.

Alates Inteli 8086 protsessorist suudavad kõik PC tüüpi arvutites kasutatavad protsessorid tagasiühilduvalt täita kogu 8086 masinkoodi. Selliseid arvuteid nimetatakse x86 arhitektuuriga arvutiteks.

Käsukonveier

Masinkoodi käsu täitmiseks tuleb käsuga viia läbi teatud hulk tegevusi: käsk tuleb kindlasti juhtseadme poole dekodeerida (mõista mida teha tuleb), seejärel tuleb käsk täita (teha tegevused, mida käsk endas sisaldab), ja seejärel tuleb tulem kindlasti kuhugi tagasikirjutada (muuhulgas tuleb ka teada anda võimalikest iseärasustest, tulem oli null, tulem oli negatiivne jne). Käsu tätmiseks on protsessori sees käsukonveier, ehk reeglite ja tegevuste kogum, mida tuleb käsu täitmiseks teha. Käsukonveieri astmete (ehk siis käsu tätmiseks vajalike tegevuste arv) sõltub protsessorist. Reeglina on nii, et mida keerulisem protsessor, seda rohkem astmeid on käsukonveieril, mida pikem on käsu konveier, seda pikem on jällegi aeg (taktide arv), mis kulub ühe takti täitmiseks.

Parallelism

Kuna keerulisemad protsessorid on pikema käsukonveieriga ja seega kuluks ühe takti tätmiseks rohkem takte on kasutusele võetud tehnoloogia, kus mitu käsku täidetakse korraga. Mõte seisneb selles, et kui üks käsk on dekodeeritud ja seda hakatakse tätma, siis samaaegselt hakatakse järgmist käsku juba dekodeerima jne. Kaasaegsed protsessorid suudavad täita juba rohkem kui ühe käsu ühe taki jooksul. Ühe käsu täitmiseks eraldi kulub loomulikult mitu takti, aga kuna käske täidetakse mitu  üheaegselt, siis keskmiselt täidetakse ühe takti jooksul rohkem kui üks käsk.

Protsessorid, mis täidavad rohkem kui ühe käsu üheagselt nõuavad täie efektiivsusega töötamiseks programmeerija poolt ka vastavat programmeerimist, sest kui üks käsk sõltub teise käsu tulemist, siis neid üheaegselt täita ei saa.

Lisalugemist: wikipedia.org