Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Procesoriaus registrai

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

Procesoriaus registrai - tokia esminė procesoriaus dalis - specialios atminties ląstelės, su kuriomis tiesiogiai atliekami skaičiavimai ir į kurias tiesiogiai išsaugomi visokie duomenys. Beveik jokiam normaliam naudotojui visiškai nežinoma, kas tai yra per daiktas, tačiau registrus puikiai žino visi, kas bent kažkiek moka programuoti asembleriu, nes dauguma veiksmų būna būtent su registrais.

Registras - tam tikra speciali atminties ląstelė, esanti procesoriuje ir tiesiogiai naudojama procesoriaus vykdomoms operacijoms. Skirtingai nuo operacinės atminties, kuri būna adresuojama (t.y., naudojami atminties ląstelių numeriai), registras yra ne adresuojamas, o įvardinamas, t.y., jis turi nuosavą pavadinimą, pvz., R1, R2, R3, R4 ar AX, BX, CX, DX ar EAX, EBX, ECX, EDX ar dar kokį nors, kokį tam tikri procesoriaus kūrėjai sugalvojo. Tokie pavadinimai naudojami, programuojant asembleriu.

Registrai yra viena iš kelių svarbiausių kompiuterio atminties rūšių - viena yra būtent registrai, o kita - tai operacinė atmintis. Aišku, dar kartais būna koks nors stekas, bet paprastai šiais laikais jo niekas beveik nenaudoja, o dar būna registrų langai, bet jie yra išties tie patys registrai, tik sugrupuoti į didesnes grupes.

Registrai paprastai būna pačiame procesoriuje (nors senovėje būdavo ir kaip atskiras įrenginys), ir jų esmė labai paprasta - kiekviena procesoriaus operacija ką tai daro su tų registrų turiniu, pvz., perkelia į registrą skaičių iš operacinės atminties ar atvirkščiai, perkelia skaičių iš registro į operacinę atmintį. Arba, pvz., sudeda du registrus vieną su kitu. Arba sudaugina du registrus vieną iš kito. Arba dar ką nors padaro.

Pagal savo paskirtį registrai gali būti skirstomi į kokias penkias rūšis:

  • Universalūs duomenų registrai, su kuriais daromi bet kokie skaičiavimai
  • Specializuoti duomenų registrai, skirti konkretiems skaičiavimų operandams ir rezultatams, t.y., akumuliatoriai
  • Adresų registrai, kurie saugo operacinės atminties adresus - t.y., rodykles arba pointerius
  • Universalūs registrai, kurie gali būti naudojami ir kaip duomenų, ir kaip adresų registrai
  • Specializuoti vykdymo registrai, kurie atlieka kokias nors papildomas funkcijas, pvz., saugo segmento adresą, steko adresą, kokį nors vykdymo statusą ar dar ką nors neaiškaus

Kartais išskiriamos ir specializuotos registrų rūšys:

  • Akumuliatoriai - tai tie registrai, kurie yra skirti tam tikroms operacijoms - jų įvedimui ir rezultatų gavimui. Naudojami dažniausiai primityviuose 8 bitų procesoriuose.
  • Adresų registrai - dažniausiai nenaudojami įprastoms skaičiavimo operacijoms, o naudojami darbui su operacine atmintimi - juose esantis skaičius reiškia operacinės atminties adresą, kuris gali būti panaudotas veiksmams su atitinkamą adresą turinčia atminties ląstele - žodžiu, tiesiog rodyklės
  • Steko registrai - iš esmės, adresų registrai, tačiau suveikiantys su tokiomis operacijomis, kaip PUSH ar PULL, kurios pakrauna į steką duomenis ar juos iš steko iškrauna
  • Skaitliukai - prie tam tikrų operacijų vienetu paaugantys registrai, naudojami pvz., kai reikia kokių nors ciklų

Registrai yra labai svarbūs, kai kalbame apie procesorių architektūrą, nes pagrindinai pagal registro dydį nusakoma ir tai, kiek bitų ta architektūra yra: jei dauguma registrų yra 8 bitų dydžio, tai čia bus 8 bitų architektūra, o jei dauguma registrų yra 16 bitų - tai bus 16 bitų architektūra, o jei dauguma bus 32 bitų - tai bus 32 bitų architektūra, o jei bus 64 bitų registrai - tai bus 64 bitų architektūra.

Vėlgi, jei registrai bus specializuoti ir skirtingos operacijos vyks su skirtingais registrais - tai bus architektūra su akumuliatoriais (dažniausiai tai primityvios 8 bitų architektūros). Jei registrai bus universalūs - tai bus architektūra su bendros paskirties registrais. Jei bus labai daug skirtingų operacijų su registrais - tai bus CISC architektūra.

Jei registrų bus daug, jie apjungti į grupes ir bus bendros operacijos, skirtos visos krūvos registrų pakrovimui į operacinę atmintį ar atvirkščiai, o dar bus ir persijungimo tarp tų registrų grupių operacijos - tai reikš, kad turime RISC architektūrą. RISC procesoriuose registrų skaičius būna padaromas labai didelis ir jie gauna tam tikrų savybių, netiesiogiai panašių į registro adresavimą. Tokia registrų grupė vadinama registrų langu. Štai tada būna, pvz., 16, 32 ar dar koks nors skaičius registrų, kuriuos vienu veiksmu galima išmesti į operacinę atmintį ar iš jos pakrauti. Kartu su tokiais registrais gali būti naudojamos ir vektorinės komandos, kur viena komanda vienodus veiksmus atlieka su ištisa registrų seka.

Skirtingos procesorių architektūros turi labai skirtingus registrų rinkinius, ir daugiausiai per registrus ir skiriasi. Padoresniuose procesoriuose dauguma atvejų naudojami bendros paskirties registrai, kur su tuo pat registru priklausomai nuo veiksmo, galima daryti ką tau reikia - ar duomenis saugoti, ar veiksmus atlikti, ar atmintį adresuoti.