Procesoriaus instrukcija (kompiuterių mokslas) — apibrėžimas ir tipai

Sužinokite, kas yra procesoriaus instrukcija, jos apibrėžimas, ilgiai ir tipai (RISC, CISC, VLIW) — aiškus ir suprantamas vadovas kompiuterių moksle.

Autorius: Leandro Alegsa

Kompiuterių moksle instrukcija yra viena procesoriaus operacija, aiškiai apibrėžta procesoriaus instrukcijų rinkinyje (ISA — instruction set architecture). Instrukcija nurodo procesoriui, ką daryti (pvz., sudėti du skaičius, perskaityti duomenis iš atminties arba pereiti prie kitos programos vietos) ir kokius operandus naudoti.

Instrukcijos struktūra

Tradicinėje instrukcijoje paprastai yra du pagrindiniai komponentai:

  • opkodas — laukas, nurodantis atliekamą operaciją (pvz., add, load, jump);
  • operandai — nurodymai, su kuo ta operacija atliekama (registrai, atminties vietos arba tiesioginiai (immediate) duomenys).

Operandų žymenys gali turėti papildomus laukus ar bitus, nurodančius adresavimo režimus (pvz., tiesioginis, netiesioginis, indeksuotas) arba būti įkoduoti fiksuotose instrukcijos laukuose.

Ilgis ir kodavimas

Instrukcijų dydis labai varijuoja: nuo vos kelių bitų kai kuriuose mikrovaldikliuose iki kelių baitų ar daugiau VLIW sistemose. Daugumos šiuolaikinių procesorių, naudojamų asmeniniuose kompiuteriuose, pagrindiniuose kompiuteriuose ir superkompiuteriuose, instrukcijų dydis paprastai būna nuo 16 iki 64 bitų.

Kai kuriose architektūrose, ypač redukuoto instrukcijų rinkinio kompiuteriuose (RISC), instrukcijos yra fiksuoto ilgio, paprastai atitinkančio procesoriaus žodžio dydį (word size). Kitos, sudėtingesnės (CISC) architektūros naudoja kintamo ilgio instrukcijas, kurių formato laukai (pvz., opkodas, modR/M, poslinkiai, immediate) gali turėti skirtingą ilgį ir sudėtingumą.

Instrukcijų tipai ir architektūros

  • RISC — mažas, fiksuoto ilgio opkodų rinkinys; paprastesnės, greitos instrukcijos, lengviau pavieniui taktinti.
  • CISC — daug sudėtingų, dažnai kintamo ilgio instrukcijų, kurios gali atlikti aukšto lygio veiksmus per vieną instrukciją.
  • VLIW — vykdomos kelios operacijos vienu metu į vieną labai ilgą instrukcijos žodį; daug instrukcijų atliekama lygiagrečiai.
  • Specifinės paradigmos — akumuliatoriaus pagrindu (accumulator), steko pagrindu (stack-based) arba registrų mašinos (register-based).

Operandai ir adresavimo režimai

Operandai gali būti:

  • registrai (greičiausias prieigos būdas),
  • atminties vietos (tiesioginės arba per registrą/poslinkį),
  • tiesioginiai (immediate) skaičiai, įkoduoti pačioje instrukcijoje.

Adresavimo režimai lemia, kaip procesorius interpretuoja operandų reikšmes: tiesioginis, netiesioginis, indeksuotas, bazinis+offset, relatyvus šuoliams ir kt. Sudėtingesnės architektūros gali turėti daug adresavimo būdų, kas leidžia lanksčiau formuluoti instrukcijas, tačiau padidina dekodavimo sudėtingumą.

Programavimas ir instrukcijų generavimas

Instrukcijos retai rašomos tiesiogiai kaip mašininis kodas. Jas paprastai nurodo programuotojai naudodami asemblerio kalbą, kur kiekviena asamblėjaus instrukcija atitinka vieną ar kelias mašininio kodo instrukcijas. Daug dažniau instrukcijas generuoja kompiliatoriai, kurie aukšto lygio kalbos konstruktus paverčia efektyviomis mašininėmis instrukcijomis.

Taip pat egzistuoja pseudo-instrukcijos (makroinstrukcijos), kurios assemblerio ar kompiliatoriaus metu išskaidomos į kelias tikras instrukcijas. Kai kurios instrukcijos gali būti įgyvendintos aparatinės įrangos lygiu (hardwired), o kitos — per mikrokodą, kuris sudaro vidurinį sluoksnį tarp ISA ir fizinių grandžių.

VLIW, mikrokodas ir mikroarchitektūra

VLIW architektūrose vienoje instrukcijoje pateikiama informacija kelioms lygiagrečioms operacijoms, todėl vykdymo laikas gali būti labai efektyvus, jei suderinamas su kompiliatoriumi. Mikrokodo architektūrose (dažnai naudojamose kai kuriuose CISC procesoriuose) aukšto lygio instruksija suskaidoma į seką paprastesnių mikropasiruošimų, kuriuos atlieka mikrovaldiklis ar valdiklio logika.

Instrukcijų vykdymo eiga ir našumas

Paprastinė instrukcijos vykdymo seka — fetch → decode → execute (nuskaitymas → dekodavimas → vykdymas). Modernūs procesoriai turi papildomus sluoksnius: instrukcijų eilės (queues), pipelinus, išankstinį vykdymą (out-of-order execution), spėjamąjį šuolių atlikimą (branch prediction) ir duomenų talpyklas (caches). Šie mechanizmai gerina pralaidumą, bet kartu introduce instrukcijų lygių priklausomybių ir užrakinimų (hazardų) problematiką.

Praktiniai pavyzdžiai

Paprastas pavyzdys asamblėjaus formatu: ADD R1, R2 — pridėti registro R2 reikšmę prie registro R1. Mašininiu kodu tai bus opkodas, po kurio seka operandų laukai. Sudėtingesnėje architektūroje ta pati aukšto lygio operacija galėtų reikšti kelias mikrokodo instrukcijas arba kelias VLIW polinius operacijas.

Išvados

Instrukcija yra ISA kertinis elementas, apibrėžiantis, kaip programinė įranga gali valdyti aparatinę įrangą. Instrukcijų ilgis, formatas ir galimi operandų adresavimo režimai glaudžiai susiję su procesoriaus mikroarchitektūra ir daro didelę įtaką tinkamiems kompiliavimo ir optimizavimo sprendimams.

Susiję puslapiai

Klausimai ir atsakymai

K: Kas yra kompiuterių mokslo instrukcija?


A: Kompiuterių moksle instrukcija yra viena procesoriaus operacija, apibrėžta procesoriaus instrukcijų rinkinyje.

K: Kokio ilgio gali būti instrukcijos?


A: Instrukcijos dydis arba ilgis gali būti labai įvairus: nuo 4 bitų kai kuriuose mikrovaldikliuose iki kelių baitų kai kuriose labai ilgų instrukcijų žodžių (VLIW) sistemose. Daugumos šiuolaikinių procesorių, naudojamų asmeniniuose kompiuteriuose, pagrindiniuose kompiuteriuose ir superkompiuteriuose, instrukcijų dydis yra nuo 16 iki 64 bitų. Kai kuriose architektūrose, ypač RISC (Reduced Instruction Set Computers), instrukcijos yra fiksuoto ilgio, paprastai atitinkančio tos architektūros žodžio dydį.

K: Ką apima instrukcija?


A.: Instrukciją sudaro opkodas, nurodantis atliekamą operaciją, pavyzdžiui, "pridėk atminties turinį prie registro", ir nulis ar daugiau operandų, kurie gali nurodyti registrus, atminties vietas arba tiesioginius duomenis. Operandų žymenys gali turėti adresavimo režimus, lemiančius jų reikšmę, arba gali būti fiksuotuose laukuose. VLIW architektūrose vienoje instrukcijoje vienu metu nurodomos kelios operacijos ir operandai.

K: Kaip paprastai nurodomos instrukcijos?


A: Instrukcijos retai nurodomos naudojant jų mašininio kodo formą; jas gali nurodyti programuotojai, naudodami asemblerio kalbą, arba dažniau jas generuoja kompiliatoriai.

K: Ar yra kitas "instrukcijos" apibrėžimas?


A: Taip, yra dar viena bendresnė "instrukcijos" apibrėžtis, susijusi ne tik su procesoriaus instrukcijų rinkiniu, kuris yra bet koks vykdytinos kompiuterio programos elemento atvaizdavimas.

K: Ar visos instrukcijos yra vienodo dydžio?


Atsakymas: Ne, instrukcijų dydis arba ilgis labai skiriasi priklausomai nuo naudojamo procesoriaus tipo - nuo 4 bitų iki keleto baitų VLIW sistemose, o daugumos šiuolaikinių procesorių dydis yra 16-64 bitai, tuo tarpu RISC architektūros paprastai turi fiksuoto ilgio instrukcijas, atitinkančias tos architektūros žodžio dydį.


Ieškoti
AlegsaOnline.com - 2020 / 2025 - License CC3