Käsky (tietojenkäsittelytiede): määritelmä, rakenne ja tyypit

Tietojenkäsittelytieteessä käsky on prosessorin yksittäinen toiminto, joka määritellään prosessorin käskykokonaisuudessa.

Ohjeen koko tai pituus vaihtelee suuresti, joissakin mikrokontrollereissa se on vain 4 bittiä ja joissakin VLIW-järjestelmissä (Very Long Instruction Word) jopa moninkertainen määrä tavuja. Useimmissa nykyaikaisissa prosessoreissa, joita käytetään henkilökohtaisissa tietokoneissa, suurtietokoneissa ja supertietokoneissa, käskykoko on 16-64 bittiä. Joissakin arkkitehtuureissa, erityisesti Reduced instruction set -tietokoneissa, ohjeet ovat kiinteän pituisia, tyypillisesti kyseisen arkkitehtuurin sanakokoa vastaavia.

Perinteisissä arkkitehtuurijärjestelmissä käsky sisältää op-koodin, joka määrittää suoritettavan operaation, kuten "lisää muistin sisältö rekisteriin", ja nolla tai useampia operandimääritteitä, jotka voivat määrittää rekistereitä, muistipaikkoja tai kirjaimellisia tietoja. Operandin määritteillä voi olla osoitustiloja, jotka määrittävät niiden merkityksen, tai ne voivat olla kiinteissä kentissä.

VLIW-arkkitehtuurissa, joihin monet mikrokoodiarkkitehtuurit kuuluvat, useita samanaikaisia operaatioita ja operandeja määritetään yhdessä käskyssä.

Ohjeita määritetään harvoin konekoodin muodossa; ohjelmoijat voivat määritellä ne assemblerikielellä tai yleisemmin kääntäjät voivat tuottaa ne.

On olemassa toinenkin yleisempi määritelmä "käskylle", joka ei liity ainoastaan prosessorin käskykantaan: Ohje voi olla mikä tahansa suoritettavan tietokoneohjelman elementin esitys.

Seuraavaksi täydennän ja selvennän edellä esitettyjä asioita käytännön esimerkein ja selkokielellä:

  • Käskyn rakenne: Tyypillinen käsky koostuu op-koodista (operation code), joka kertoo mitä toimenpidettä suoritetaan, sekä yhdestä tai useammasta operandista, jotka kertovat missä tiedot ovat. Operandeissa voi olla rekisteriviittauksia, muistiosoite- tai likiarvot (immediate).
  • Osoitustilat (addressing modes): Nämä määrittävät, miten operandin arvo haetaan. Tavallisia osoitustiloja ovat suora ja epäsuora osoitus, rekisteri- ja muistiosoite, indeksoitu osoitus sekä välitön arvo. Osoitustila vaikuttaa käskyn tulkintaan ja suoritusajan vaatimuksiin.
  • Kiinteä vs. muuttuva käskyn pituus: Kiinteän pituuden käskyt helpottavat dekoodausta ja pipeliningiä (esim. monissa RISC-arkkitehtuureissa), kun taas muuttuvan pituuden käskyt voivat tehdä instruktiojoukosta tiiviimmän (esim. monet CISC-arkkitehtuurit).
  • RISC vs. CISC: RISC (Reduced Instruction Set Computer) -arkkitehtuureissa pyritään yksinkertaisiin, nopeasti suoritettaviin käskyihin ja usein kiinteään käskynpituuteen. CISC (Complex Instruction Set Computer) sisältää monimutkaisempia käskyjä, jotka voivat suorittaa useita alitoimintoja yhdessä käskyssä.
  • VLIW ja SIMD: VLIW yhdistää useita toimintoja yhteen pitkään käskyyn, jolloin rinnakkaisuus ilmaistaan käskytasolla. SIMD- ja muut data-parallel -ohjeet puolestaan suorittavat samaa operaatiota useille arvoille samanaikaisesti.

Käskykoodin muodostaminen ja ohjelmointi: Tavallinen kehitysprosessi on, että ohjelmoija kirjoittaa korkean tason koodin, joka käännetään assemblerikielelle tai suoraan konekoodiksi kääntäjän toimesta. Assemblerissa käskyt esitetään inhimillisempänä tekstinä (mnemonics), jotka sitten muunnetaan bittijonoksi, jonka prosessori ymmärtää.

Käskyn suoritusvaiheet: Prosessorissa käskyn suoritus jaetaan usein kolmeen päävaiheeseen: fetch (haetaan käsky muistista), decode (dekoodataan op-koodi ja operandit) ja execute (suoritetaan operaatio). Nykyaikaisissa suorittimissa nämä vaiheet voivat tapahtua pipelinetysti tai rinnakkain, ja mukana on myös vaiheita kuten operandin haku muistista, kirjoitus takaisin rekisteriin ja mahdolliset sivuvaikutusten käsittelyt.

Pipelining ja suoritusoptimoinnit: Prosessorit pyrkivät maksimoimaan läpimenoa pipeliningin, haaroitushaitan (branch prediction) ja out-of-order -suorituksen avulla. Nämä tekniikat vaikuttavat siihen, miten käskyt järjestetään ja millaisia riippuvuuksia niillä voi olla toistensa kanssa. Riippuvuudet voivat aiheuttaa stallauksia ja vaatia lisälaitteistoa ratkaistaviksi.

Mikrokoodi ja käskyn abstraktiot: Joissain arkkitehtuureissa korkean tason käsky dekoodataan sarjaksi pienempiä mikrokäskyjä (micro-ops), joita suoritusyksikkö toteuttaa. Tämä mahdollistaa monimutkaisten CISC-käskyjen toteutuksen laitteistossa, joka sisäisesti toimii yksinkertaisemmilla operaatiolla.

Käskyn esitysmuodot: Käskyt voidaan tallentaa ja siirtää muistissa erimuotoisina — binäärisenä konekoodina, assemblerinä tai korkeammalla tasolla ohjelmaelementteinä. Lisäksi debuggauksessa ja analyysissä käskyjä voidaan esittää disassembleroituina ihmisen luettavissa muodoissa.

Käskytyyppiesimerkkejä (ei tyhjentävä lista):

  • Liike- ja latauskäskyt (load/store)
  • Aritmeettiset ja loogiset operaatiot (add, sub, and, or)
  • Ehdolliset ja ehdottomat hyppykäskyt (branch/jump)
  • Kutsut ja paluut (call/return) aliohjelmiin
  • IO- ja järjestelmäkäskyt (esim. keskeytyskäsittely, porttiluku/kirjoitus)

Lisätietoja ja käsitteiden yhteydet: Käskyjen tarkka merkitys, muoto ja suoritus riippuvat aina prosessorin arkkitehtuurista ja sen käskykannasta. Kun suunnitellaan ohjelmia tai laitteistoa, on tärkeää ymmärtää kyseisen arkkitehtuurin käskyjoukko, osoitustilat ja suoritusmalli.

Yhteenvetona: käsky on prosessorin pienin suoritettava yksikkö, jolla on rakenne (op-koodi ja operandit), monia toteutustapoja ja useita tyyppejä. Sen koko ja monimutkaisuus vaihtelevat laajasti laitteiston ja suunnittelutavoitteen mukaan.

Aiheeseen liittyvät sivut

Kysymyksiä ja vastauksia

K: Mikä on tietotekniikan opetus?


V: Tietojenkäsittelytieteessä käsky on prosessorin yksittäinen toiminto, joka määritellään prosessorin käskykirjassa.

K: Kuinka pitkiä ohjeet voivat olla?


V: Ohjeen koko tai pituus vaihtelee suuresti, joissakin mikrokontrollereissa se voi olla vain 4 bittiä ja joissakin VLIW-järjestelmissä (Very Long Instruction Word) jopa moninkertainen määrä tavuja. Useimmissa nykyaikaisissa prosessoreissa, joita käytetään henkilökohtaisissa tietokoneissa, suurtietokoneissa ja supertietokoneissa, käskykoko on 16-64 bittiä. Joissakin arkkitehtuureissa, erityisesti RISC-tietokoneissa (Reduced Instruction Set Computers), käskyt ovat kiinteän pituisia, mikä vastaa yleensä kyseisen arkkitehtuurin sanakokoa.

K: Mitä käsky sisältää?


V: Käsky sisältää op-koodin, joka määrittää suoritettavan operaation, kuten "lisää muistin sisältö rekisteriin", ja nolla tai useampia operandimääritteitä, jotka voivat määrittää rekistereitä, muistipaikkoja tai kirjaimellisia tietoja. Operandin määritteillä voi olla osoitustiloja, jotka määrittävät niiden merkityksen, tai ne voivat olla kiinteissä kentissä. VLIW-arkkitehtuurissa useita samanaikaisia operaatioita ja operandeja määritetään yhdessä käskyssä.

K: Miten ohjeet yleensä määritetään?


V: Ohjeet määritetään harvoin konekoodin muodossa; ohjelmoijat voivat määritellä ne assemblerointikielellä tai yleisemmin kääntäjät generoivat ne.

K: Onko "käskylle" olemassa toinen määritelmä?


V: Kyllä, "käskylle" on olemassa toinenkin yleisempi määritelmä, joka ei liity ainoastaan prosessorin käskykokonaisuuteen, joka on mikä tahansa suoritettavan tietokoneohjelman elementin esitys.

K: Ovatko kaikki ohjeet samankokoisia?


V: Ei, käskyjen koko tai pituus vaihtelee suuresti riippuen käytetystä prosessorityypistä. Se vaihtelee 4 bitistä useisiin tavuihin VLIW-järjestelmissä, ja useimpien nykyaikaisten prosessoreiden koko on 16-64 bittiä, kun taas RISC-arkkitehtuurissa on tyypillisesti kiinteän pituisia käskyjä, jotka vastaavat kyseisen arkkitehtuurin sanakokoa.

AlegsaOnline.com - 2020 / 2025 - License CC3