Rejestry procesora (ang. processor registers) – komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128/256 bitów) umieszczone wewnątrz procesora i służące do przechowywania tymczasowych wyników obliczeń, adresów lokacji w pamięci operacyjnej itd. Większość procesorów przeprowadza działania (obliczenia) wyłącznie korzystając z wewnętrznych rejestrów, użycie do obliczeń danych zawartych w pamięci wymaga użycia rozkazu kopiowania ich do rejestrów. Podobnie wyniki obliczeń są umieszczane w rejestrach, w niektórych procesorach, tylko w jednym rejestrze zwanym akumulatorem, w innych istnieje możliwość umieszczenia wyniku w jednym z wielu rejestrów, przeniesienie wyniku do pamięci wymaga użycia dodatkowego rozkazu procesora.

Rejestry procesora stanowią najwyższy szczebel w hierarchii pamięci, będąc najszybszym rodzajem pamięci komputera. Realizowane zazwyczaj za pomocą przerzutników dwustanowych, z reguły jako tablica rejestrów (blok rejestrów, z ang. register file).

Liczba rejestrów i możliwości wykonywania na nich operacji zależy od przyjętej koncepcji budowy procesora określanej jako architektura procesora.

Podział ze względu na zastosowanie

edytuj

W architekturze procesora CISC, ze względu na zastosowanie, można wyróżnić rodzaje rejestrów:

  • akumulator – rejestr, w którym jest jeden z argumentów działania i w którym umieszczany jest wynik działań,
  • rejestry danych – do przechowywania danych całkowitoliczbowych, np. argumentów i wyników obliczeń,
  • rejestry adresowe – do przechowywania adresów i uzyskiwania dostępu do pamięci, wśród nich wyróżnić można rejestry segmentowe,
  • rejestry ogólnego zastosowania (ang. general purpose), będące połączeniem dwóch powyższych typów, czyli mogące przechowywać zarówno dane, jak i adresy,
  • rejestry zmiennoprzecinkowe – do przechowywania i wykonywania obliczeń na liczbach zmiennoprzecinkowych, z reguły znajdujące się w oddzielnym bloku funkcjonalnym procesora, zwanym koprocesorem (FPU),
  • rejestry stałych – przechowujące stałe, jedynie do odczytu,
  • rejestry wektorowe – przechowujące dane do jednoczesnego przetwarzania wielu danych przez instrukcje typu SIMD,
  • rejestry specjalne, określające stan wykonania, wśród nich wymienić można rejestr wskaźnika instrukcji, wskaźnik stosu, rejestr flag procesora,
  • rejestry instrukcji – do przechowywania obecnie przetwarzanej instrukcji

Rejestry procesorów x86

edytuj

32-bitowe rejestry ogólnego przeznaczenia to:

  • EAX – Accumulator (akumulator – jego pamięć wykorzystuje arytmometr; używa się go do przechowywania wyników wielu operacji)
  • EBX – Base Register (rejestr bazowy – służy do adresowania)
  • ECX – Counter Register (rejestr licznikowy – służy jako licznik w pętli)
  • EDX – Data Register (rejestr danych – umożliwia przekaz/odbiór danych z portów wejścia/wyjścia)
  • ESP – Stack Pointer (przechowuje wskaźnik wierzchołka stosu)
  • EBP – Base Pointer (rejestr bazowy – służy do adresowania)
  • ESI – Source Index (rejestr źródłowy – trzyma źródło łańcucha danych)
  • EDI – Destination Index (rejestr przeznaczenia – przetrzymuje informacje o miejscu docelowym łańcucha danych)

Możliwy jest też dostęp do ich 16-bitowych mniej znaczących części – AX, BX, CX, DX, SP, BP, SI, DI, a w przypadku czterech pierwszych także do młodszego (Low) i starszego bajta (High) – odpowiednio AL, AH, BL, BH, CL, CH, DL, DH.

W procesorach 64-bitowych do rejestrów o długości 64 bitów odwołuje się poprzez nazwę z przedrostkiem R zamiast E – np. RAX, RBX.

Są też dostępne rejestry segmentów, określające położenie segmentów pamięci w przestrzeni adresowej (gdy procesor pracuje w trybie rzeczywistym lub wirtualnym) lub deskryptory segmentów (w trybie chronionym):

  • CS – Code Segment (segment kodu);
  • DS – Data Segment (segment danych);
  • ES – Extra Segment (dodatkowy segment danych);
  • SS – Stack Segment (segment stosu);
  • FS – dodatkowy rejestr segmentu;
  • GS – dodatkowy rejestr segmentu.

Ponadto istnieją:

  • EFLAGSrejestr flag procesora, składający się z pojedynczych bitów określających stan procesora;
  • EIP – wskaźnik adresowy na aktualnie wykonywaną instrukcję. Za jego pomocą procesor realizuje m.in. skoki, pętle, przejścia do podprogramów;
  • rejestry koprocesora arytmetycznego:
    • osiem rejestrów stosu koprocesora, oznaczanych w zależności od kompilatora jako ST0... ST7, 0... 7 lub ST(0)... ST(7);
    • rejestr stanu koprocesora;
    • rejestr stanu stosu koprocesora;
    • rejestr sterujący koprocesora;
  • rejestry kontrolne procesora CRn (n – numer rejestru);
  • rejestry debugera DRn (n – numer rejestru);
  • rejestry MMX (rozszerzenie) – 8 rejestrów 64-bitowych nazywanych mm0 ... mm7 (zamapowane na rejestry FPU);
  • rejestry SSE (rozszerzenie):
    • 8 rejestrów 128-bitowych nazywanych xmm0 ... xmm7; w trybie 64-bitowym dostępne jest 8 kolejnych rejestrów 128-bitowych xmm8 ... xmm15;
    • rejestr kontrolno-sterujący mxcsr.

Liczba rejestrów

edytuj

Poniższa tabela przedstawia liczbę ogólnych i zmiennoprzecinkowych rejestrów w niektórych architekturach procesorów.

Architektura
procesora
Liczba rejestrów
ogólnego zastosowania zmiennoprzecinkowych
x86 8 8[1]
x86-64 16 16[2]
IA-64 128 128
SPARC 32 32[3]
IBM POWER 32 32
PA-RISC 32 32
DEC Alpha 32 32
6502 3 0
PIC 1 0
ARM 16 32[4]

Zobacz też

edytuj

Przypisy

edytuj
  1. Ta liczba odnosi się do rejestrów x87, procesory z rozszerzeniem SSE mają 8 dodatkowych rejestrów XMM. Pierwsze procesory x86 były jednak pozbawione jednostki i rejestrów zmiennoprzecinkowej.
  2. Ta liczba odnosi się do rejestrów XMM jednostki SSE, procesory mają jednak dodatkowe 8 rejestrów x87.
  3. Ze względu na zastosowany w tej architekturze procesorów mechanizm przesuwanych okien rejestrów, jest to liczba rejestrów widocznych w przez oprogramowanie w danym momencie, a nie ogólna liczba rejestrów dostępnych w procesorze.
  4. Liczba ta odnosi się do 64-bitowych rejestrów jednostki NEON. Jednostka zmiennoprzecinkowa jest jednak opcjonalna w architekturze ARM. Ponadto istnieją jej inne implementacje i tryby pracy, w efekcie których liczba dostępnych rejestrów może być różna.

📚 Artikel Terkait di Wikipedia

Fiat Freemont

wariantów Fiata Freemont poszerzył pierwszy wariant specjalny. Wersję Black Code wyróżnia m.in. 19 calowe felgi aluminiowe lakierowane na czarno, czarne wykończenia

Citroën C3 Picasso

europejskie rynki. Exclusive Blackcherry 90th Anniversary Millenium Code Red Code White Passion Bleus Music Touch Steel Edition (kraje skandynawskie)

Ogólny błąd ochrony

stack segment; skr. SS) zawiera selektor segmentu tylko do odczytu, wykonania lub segment pusty (ang. null segment) segment kodu (ang. code segment; skr

Konkurs Piosenki Eurowizji 2024

Szwecji. Finał konkursu wygrał Nemo, reprezentant Szwajcarii z piosenką „The Code”, za którą otrzymał łącznie 591 punktów w głosowaniu jurorów i telewidzów

Intel 8086

rejestr segmentowy programu (Code Segment register). Zawartość tego rejestru wyznacza początek aktualnie używanego segmentu programu. Wartość ta wykorzystywana

Ochrona pamięci

identyfikatorów segmentów przewidziano początkowo 4 rejestry segmentowe: rejestr segmentu kodu (CS – code segment) rejestr segmentu stosu (SS – stack segment) rejestr

Casual dining

restauracji Sphinx, Wook, Green Way oraz Sioux. Casual dining obejmuje segment rynku między szybko-obsługowymi barami (fast food) a drogimi, ekskluzywnymi

Kod nieznany

bazie Filmweb Code inconnu w bazie IMDb (ang.) p d e Filmy w reżyserii Michaela Hanekego Encyklopedie internetowe (film): Britannica: topic/Code-Unknown