**Rekisteri** tietokonetekniikassa tarkoittaa nopeaa muistialuetta, joka on suorittimen sisäistä muistialuetta. Rekisteri sisältää tyypillisesti vain pienen määrän bittejä (1–64). Rekisterissä olevaa tietoa voidaan käsitellä yhden kellojakson aikana, kun muun muistin käsittely voi vaatia useamman kellojakson ajan. Von Neumannin arkkitehtuurissa tieto on aina tallennettava rekisteriin ennen kuin se voidaan käsitellä. Nykyaikaiset suorittimet hyödyntävät useita rekisterejä. Rekisterit on toteutettu kiikuilla.

Rekisterit mikroprosessoreissa
------------------------------

Mikroprosessorit sisältävät tyypillisesti useita eri rekistereitä, joista osa näkyy ohjelmoijalle, mutta osaa käytetään prosessorin sisäiseen toteutukseen. Ohjelmoijan näkökulmasta rekistereihin talletetaan lukuarvoja, jotka ohjaavat konekielikäskyjen toimintaa. Laitteistosuunnittelijan näkökulmasta rekisterit ovat D-kiikkuja, jotka ovat syötteinä piirin sisäiselle tilakoneelle.

Tyypillisissä 32-bittisissä suorittimissa ohjelmoijan näkemät rekisterit ovat 32-bittisiä ja 64-bittisissä suorittimissa vastaavasti 64-bittisiä. Tämä ei kuitenkaan päde aina sillä ns. 32-bittisissä suorittimissa voi esiintyä jopa 128-bittisiä rekistereitä (esimerkiksi SSE2-laajennos).

Rekisterien koot ovat vaihdelleet tietokonearkkitehtuureissa ja esimerkiksi PDP-8 käytti 12-bittistä arkkitehtuuria. IBM S/360:n vaikutuksesta tavusta tuli kahdeksan bittiä ja sanasta tavun monikerta.

Erityskäyttöön tarkoitettuja rekistereitä:

* Instruction Register (IR): suorituksen alla oleva käsky
* Memory Data Register (MDR): muistista haettua tietoa
* Memory Address Register (MAR): muistista haetun tiedon osoite
* Program Counter (PC): ohjelmalaskuri, ohjelman suorituspaikka, viittaa seuraavaan muistista haettavaan käskyyn
* Stack Pointer (SP): pinon osoitin
* Accumulator (AC): laskuri, joka sisältää ALU-yksikön tuloksen

Lisäksi on joukko yleiskäyttöisiä rekistereitä ohjelman suorituksen avuksi.

Rekisterit oheislaitteille
--------------------------

Oheislaitteet tarjoavat omaa toiminnallisuuttaan sovelluksille rekisterien avulla. Rekistereitä on kahta lajia tähän tarkoitukseen. Jotkin oheislaitteet tarjoavat tietyn I/O-portin, johon ohjelmoijan täytyy kirjoittaa kaikki käskynsä. Uudemmat laitteet tarjoavat yleensä I/O-muistiavaruuden, jonne ohjelmoija voi kirjoittaa komentonsa. I/O-muistiavaruus näyttää ohjelmoijalle tavalliselta muistilta, mutta I/O-porttien tapauksessa komentojen antaminen ei välttämättä onnistu tavallisilla muistinkirjoituskomennoilla (store), vaan ohjelmoija joutuu käyttämään erikoiskäskyjä suorittimesta.

Signalointirekisterit
---------------------

Signalointirekisteri (engl. *strobe register*) on rekisteri, johon koskeminen aiheuttaa aina saman toiminnon. Rekisterin lukeminen tai minkä tahansa arvon kirjoittaminen siihen, saa aina aikaan saman toiminnon.

Lähteet
-------

1. 1 2 3  Von Neumann Architecture *computerscience.gcse.guru*. Viitattu 10.7.2018.
2. ↑  The MIPS Register Files *cs.uwm.edu*.  Arkistoitu 6.7.2018. Viitattu 10.7.2018.
3. ↑  Donn Stewart: Flip-flops and registers *cpuville.com*. Viitattu 10.7.2018.
4. ↑  Frequently Asked Questions *homepage.divms.uiowa.edu*. Viitattu 26.7.2017. (englanniksi)
5. ↑  Gordon Bell: Rise and Fall of Minicomputers *ethw.org*. Viitattu 22.1.2020. (englanniksi)
6. ↑  CPU Special Registers HN Computing. Viitattu 10.7.2018.
7. 1 2  CPU Registers (PDF) Texas Instruments. Viitattu 10.7.2018.
8. ↑  CPU Registers *doc.ic.ac.uk*. Viitattu 10.7.2018.

Aiheesta muualla
----------------

* Kuvia tai muita tiedostoja aiheesta **Rekisteri (tietokonetekniikka)** Wikimedia Commonsissa