For faster navigation, this Iframe is preloading the Wikiwand page for Rejestr procesora.

Rejestr procesora

Ten artykuł dotyczy terminu w technice. Zobacz też: inne znaczenia słowa „rejestr”.

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  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.
{{bottomLinkPreText}} {{bottomLinkText}}
Rejestr procesora
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?