Co to jest rejestr?

click fraud protection

Jeśli nie jesteś szczególnie zainteresowany komputerami, wybaczono ci założenie, że jedynymi formami pamięci w komputerze są dysk twardy i pamięć RAM. Ci z was, którzy interesują się komputerami, prawdopodobnie wiedzą, że tak nie jest i że Procesor ma również zestaw pamięci podręcznych, które służą do buforowania danych z pamięci RAM, aby procesor mógł uzyskać do nich dostęp szybciej. Wszystko to są reklamowane funkcje, głównie dlatego, że prędkość i/lub pojemność jest przyzwoitym punktem sprzedaży i ogólnie wpływa na poziom wydajności.

W rzeczywistości istnieje jednak jeszcze jedna warstwa pamięci. O ile mogłoby się wydawać, że pamięć podręczna L1 znajduje się tak blisko rzeczywistego rdzenia przetwarzania, jak to możliwe, istnieje inna wyższa warstwa w hierarchii pamięci. To są rejestry procesora. Powodem, dla którego tak naprawdę nie są one reklamowane ani wymieniane, jest to, że tak naprawdę w ogóle nie są zmieniane. Technicznie mogą być jednak, liczba i wielkość rejestrów jest w rzeczywistości fundamentalna dla architektury. Oznacza to, że wszystkie procesory x86-64 mają taką samą liczbę rejestrów. Nie są sprzedawane, ponieważ nie stanowią konkurencyjnego punktu.

Co robi rejestr?

Rejestr jest szybko dostępnym miejscem przechowywania dla procesora. Dostęp do rejestru jest natychmiastowy z zerową latencją, podczas gdy nawet pamięć podręczna L1 ma około 4-5 cykli opóźnienia w nowoczesnych procesorach. Ta natychmiastowość dostępu wskazuje na przypadek użycia rejestrów. Rejestry są używane do przechowywania instrukcji aktywnie obsługiwanych przez CPU. Przechowują również punkty danych, które mają zostać przetworzone. Niektóre rejestry są ogólnego przeznaczenia, podczas gdy inne mają bardzo konkretny cel. Przykładem rejestru specjalnego przeznaczenia może być licznik programu, w którym procesor śledzi swoją pozycję w sekwencji programu.

Wiele rejestrów jest uważanych za dostępne dla użytkownika. Nie oznacza to jednak, że użytkownik komputera może wybrać, jaką wartość w nich umieścić. Oznacza to, że uruchomione oprogramowanie może określić dane, które mają zostać załadowane do tych rejestrów. Mniejsza liczba rejestrów to rejestry wewnętrzne, co oznacza, że ​​oprogramowanie w ogóle nie może ich adresować. Rejestr instrukcji, w którym przechowywana jest aktualnie wykonywana instrukcja, jest przykładem rejestru wewnętrznego.

Zarejestruj zmianę nazwy

Chociaż architektura procesora może zezwalać tylko na pojedynczą konfigurację rejestrów, w rzeczywistości jest w tym trochę niuansów. Wszystkie nowoczesne procesory wykorzystują zmianę nazwy rejestru. Jest to technika, w której można mieć więcej rejestrów fizycznych i używać ich do wstępnego ładowania danych lub przechowywania danych związanych z niesprawną instrukcją, która w innym przypadku zostałaby nadpisana. Kiedy CPU dochodzi do punktu, w którym potrzebuje danych w dodatkowych rejestrach, po prostu zmienia ich nazwę tak, aby był adresowalny, jednocześnie czyniąc nieadresowalnym wcześniej adresowalny rejestr.

Proces zmiany nazwy rejestru może być bardzo pomocny przy realizacji zamówień poza kolejnością. Na przykład, jeśli miejsce w pamięci jest zaprogramowane tak, aby było odczytywane, a następnie zapisywane, a instrukcje zostały wykonane w tej kolejności, jest to w porządku. Jeśli jednak instrukcje zostaną zmienione tak, aby najpierw wykonać zapis, instrukcja odczytu otrzyma nieprawidłową wartość. Aby temu zapobiec, pierwotna wartość do odczytania jest przechowywana w nieużywanym rejestrze, którego nazwa jest następnie zmieniana, gdy odpowiednia instrukcja jest przetwarzana.

Wniosek

Rejestry są najwyższą warstwą w hierarchii pamięci. Są jedyną częścią bezpośrednio adresowaną przez procesor i nie mają opóźnień. Rejestry są używane do przechowywania danych aktywnie wykonywanych przez CPU. Są one również używane do przechowywania innych punktów danych, takich jak licznik programu, który śledzi, która instrukcja jest następną do wykonania. Bardzo ograniczona liczba rejestrów jest dostępna w architekturze x86-64 z 16 rejestrami ogólnego przeznaczenia i 16 lub 32 rejestrami zmiennoprzecinkowymi, w zależności od tego, czy AVX-512 jest obsługiwany.