Strojové inštrukcie
Strojové cykly sa líšia typom mikroinštrukcie, ktorá sa práve vykonáva. V našom počítačovom systéme ideme budovať ďalšiu úroveň - strojové intrukcie Jedna strojová inštrukcia sa skladá z niekoľkých strojových cyklov s rôznymi mikroinštrukciami. |
OPERAČNÝ SYSTÉM |
STROJOVÉ INŠTRUKCIE |
MIKROPROGRAMOVANIE |
LOGICKÉ OBVODY |
Strojové inštrukcie závisia od typu procesora. Ak sú typy kompatibilné, pracujú s tou istou inštrukčnou sadou. Pri kompilácii nového vytvoreného programu sa program prekladá do strojového kódu daného procesora, na ktorom kompilácia prebieha. |
Argumenty strojových inštrukcií
Každá strojová inštrukcia sa skladá z operačného kódu a operandov (argumentov) inštrukcie.
OPERAČNÝ KÓD | OPERAND 1 | OPERAND 2 |
Všetky inštrukcie majú 2 operandy (až na negáciu). Operandy sa odvolávajú na adresy registrov, adresy pamäťových miest, či relatívne adresy. Operandy môžu byť nasledujúceho typu:
|
TYP OPERANDU | PRÍKLAD |
Priamy operand - immediate | napr. ADD r1, 400 - k číslu v registri r1 pripočítaj číslo 400 |
Priama adresácia - direct | napr. ADD r1, (400) - k číslu v registri r1 pripočítaj číslo z pamäte z adresy 400 |
Nepriama adresácia - indirect | napr. ADD r1, @(400) - k číslu v registri r1 pripočítaj číslo z pamäte z adresy, ktorá sa nachádza na adrese 400 |
Typ register I. - reg. direct | napr. ADD r1, r2 - k číslu v registri r1 pripočítaj číslo z registra r2 |
Typ register II. - reg. indirect | napr. ADD r1, (r2) - k číslu v registri r1 pripočítaj číslo, ktorého adresa sa nachádza v registri r2 |
Posunutý typ - indexed | napr. ADD r1, (r2+400) - k číslu v registri r1 pripočítaj číslo na adrese, ktorú dostaneme posunom adresy v registri r2 o 400 |
Podľa typu inštrukcie sa jedna inštrukcia vykonáva na 5 až 40 strojových cyklov. Ak napr. taktovacia frekvencia CPU je 1GHz, tak takýto procesor vykoná za 1 sekundu 250 miliónov strojových cyklov. Ak jedna strojová inštrukcia zaberie v priemere 25 MC, tak procesor so spomínanou taktovacou frekvenciou je schopný vykonať 10 miliónov inštrukcií za 1 sekundu. |
Fázy spracovania
NÁZOV FÁZY | POPIS |
FETCH INSTRUCTION FI | Načítanie kódu inštrukcie z operačnej pamäte (cache pamäte) z miesta,na ktoré ukazuje IP register a následné uloženie do precovného registra, IP register sa inkrementuje. (1 MC) |
DECODE INSTRUCTION DI | Dekódovanie kódu inštrukcie, výpočet adresy odpovedajúcej mikroinštrukcie na realizáciu strojovej inštrukcie. (1 MC) |
FETCH DATE FD | Načítanie dát - operandov inštrukcie podľa druhu inštrukcie, podľa adresovacieho režimu, IP register sa inkrementuje. (min. 2 MC) |
EXECUTION INSTRUCTION EI | Vykonanie inštrukcie, súčasne sa mení príznakový register -Flags. (viac MC) |
WRITE DATE WD | Uloženie výsledku operácie, zápis dát do pamäte. ( min. 1 MC) |
Urýchlenie CPU
Keďže vo väčšine CPU len "prehadzuje" dáta (2. takt je neaktívny) medzi operačnou pamäťou a registrami, urýchlenie práce sa realizuje paralelným spracovaním fáz - tzv. PIPELINING - zreťazenie vykonávania fáz inštrukcií. Je snaha v každom strojových cykle zapísať výsledok operácie.
Ďalšou možnosťou urýchlenia práce CPU je predpovedanie výsledku operácie. Ak nasledujúca operácia je podmienený skok, tak CPU môže buď čakať na výsledok, alebo náhodne vybrať jeden z možných smerov, pričom ak výber cesty je úspešný, pokračuje ďalej, ak nie, vykonané operácie sa "zahodia". CPU môže tiež sledovať obe možné cesty (2 ALU) pri podmienenom skoku, pričom zlá cesta sa zruší.
Cache pamäť je ďalším urýchlením práce CPU. Aby sa po každú inštrukciu nechodilo zvlášť do pamäte, naraz sa naloaduje napr. 8kB dát resp. kódu inštrukcií. |
Typy strojových inštrukcií
Každá inštrukcia pozostáva z kódu (typu) inštrukcie a operandov (argumentov) napr. pre súčet čísel má inštrukcia nasledujúci tvar: ADD kam_pripočítaj, čo, resp. ADD r1, r0. V nasledujúcom zozname sa nachádzajú najčastejšie používané inštrukcie.(Pre CPU Intel) |
- Inštrukcie presunu
- Aritmetické inštrukcie
- ADD - sčítanie
- SUB - odčítanie
- MUL - násobenie
- DIV - delenie
- Logické inštrukcie
- AND - logický súčin
- OR - logický súčet
- XOR - exklusive OR
- NOT - negácia
- Inštrukcie posunu
- ROL - rotácia vľavo
- ROR - rotácia vpravo
- ARL - aritmetická rotácia vľavo (obnovenie znamienka na 1. bite
- ARR - aritmetická rotácia vpravo (obnovenie znamienka na 1. bite
- SHL - posun do ľava s pridaním C (carry) bitu z Flag registra
- Inštrukcie pre prácu so zásobníkom
- PUSH - uloženie na vrchol zásobníka
- POP - výber z vrcholu zásobníka
- Inštrukcie pre riadenie toku spracovania - nepodmienené a podmienené skoky - prepisuje sa IP register
- JMP - absolútny resp. relatívny skok - kde sa prenáša riadenie
- JNZ - jump not zero
- JNC - jump not carry
- JGE - jump great egre (>=0)
- JC - jump carry
- Inštrukcie pre volanie podprogramov a prerušení
- CALL - volanie podprogramu (návratová adresa sa zapíše do zásobníka, až potom sa prepíše IP register)
- RET - návrat z procedúry
- CNZ - call not zero
- RETZ - return zero
- INT - interupt (prerušenie)
- RTI - return interupt (návrat z prerušenia)
- Inštrukcie vstupu a výstupu
- IN - čítanie zo vstupno-výstupného portu
- OUT - zápis na vstupno-výstupný port
- Inštrukcie, ktoré menia bity príznakového registra
- HALT - zastavenie činnosti CPU
- SEC - set carry
- CLC - clear carry
- STI - set interupt
- CLI - clear interupt
- ďalšie - napr. pre inštrukcie floating point
|
RISC alebo CISC ?
Inštrukčná sada procesora môže byť dvojakého typu - CISC, alebo RISC:
CISC - complet instruction set computer - počítač s úplnou inštrukčnou sadou - programátor má širokú paletu inštrukcií a CPU ich realizuje bez PIPELININGU.
RISC - reducet instruction set computer - počítač s redukovanou inštrukčnou sadou - počet inštrukcií je malý, sú jednoduchšie, zložité inštrukcie sa rozkúskujú na niekoľko jednoduchších inštrukcií, pre zložité aritmetické inštrukcie sa používa koprocesor. |
Odkazy na príbuzné témy
© Jana Machová
|