Co to jest bariera pamięci?

Historycznie procesory były maszynami doskonale sekwencyjnymi. Jest to bardzo logiczne i łatwe do zrozumienia, ale może stanowić problem z wydajnością. Na przestrzeni lat wprowadzono wiele pomysłowych poprawek w projektach procesorów, aby wydobyć jak najwięcej wydajności z płytek krzemowych. Jednym z ciekawszych jest jednak wykonanie poza kolejnością. W procesorach wykonujących poza kolejnością instrukcje niekoniecznie muszą być wykonywane w kolejności, w jakiej zostały wydane.

Przeciąganie w porządku

Główny problem z wydajnością, na który napotyka procesor w kolejności, nazywa się przeciągnięciem potoku. Dzieje się tak, gdy instrukcja jest zależna od pewnej pamięci, ale ta pamięć nie jest bezpośrednio dostępna w rejestrze. W takim przypadku procesor musi znaleźć tę wartość w pamięci. Pamięć podręczna procesora jest sprawdzana jako pierwsza, ponieważ jest to najszybsza warstwa pamięci. Jeśli wartości tam nie ma, systemowa pamięć RAM jest sprawdzana. W tym czasie procesor musi pozostawać bezczynny, ponieważ instrukcje zależne od pamięci muszą zostać zakończone w kolejności przed kolejnymi instrukcjami.

Wpływ przeciągnięcia potoku na wydajność może nie być taki zły, ale może być również stosunkowo poważny. Na przykład pamięć podręczna L1 może zazwyczaj zwrócić wynik rzędu wielkości 5 cykli procesora. Pamięć podręczna L2 może zająć 20 cykli, L3 około 200 cykli, a systemowa pamięć RAM około 400 cykli. Biorąc pod uwagę, że procesor może działać z częstotliwością około 5 GHz, czyli 5 miliardów cykli zegara na sekundę, nawet 400 cykli nie jest takie złe (0,000008%). Ale jeśli masz wiele instrukcji wymagających odwoływania się do danych w niższych warstwach pamięci podręcznej, skumulowany efekt może spowodować zauważalne spowolnienie.

Wykonywanie poza kolejnością i zmiana nazwy rejestru

Wykonywanie poza kolejnością to technika, która pozwala programowi planującemu zmienić kolejność instrukcji w kolejce. Dzięki tej zmianie kolejności może nadać priorytet określonym wątkom w stosunku do innych. Może również przesuwać instrukcje z powrotem do kolejki, jeśli mają zależność danych, która nie została jeszcze spełniona. Zapobiega to w jak największym stopniu zatrzymywaniu się rurociągów, minimalizując cykle bezczynności.

Wykonywanie poza kolejnością wymaga funkcji zwanej zmianą nazwy rejestru. CPU może uzyskać dostęp do danych przechowywanych w rejestrach w ciągu jednego cyklu. Rejestry służą do przechowywania odczytywanych i zapisywanych danych. Niezbędne jest jednak upewnienie się, że komputer jako całość widzi wszystko w porządku logicznym, a nie w porządku poza kolejnością, zoptymalizowanym pod kątem cyklu procesora. Aby to umożliwić, procesory mają znacznie więcej rejestrów logicznych, niż wymaga tego architektura procesora.

Dane, które muszą zostać wypisane, ale mają „wcześniejszą” dyspozycję, która nie została jeszcze wykonana, umieszczane są w rejestrze holdingowym. Dane te nie są przenoszone do innego rejestru, gdy zlecenie samo się poukłada. Zamiast tego nazwa rejestru gospodarstwa zostaje zmieniona na nazwę rejestru, w którym powinien się znajdować. Jest to trochę podobne do przygotowania deseru przed daniem głównym, a następnie trzymania go w lodówce do czasu podania.

Te rejestry logiczne są całkowicie nieadresowane. Procesor może tak naprawdę adresować tylko rejestry logiczne, które obecnie mają wspólną nazwę rejestrów architektury. To powiedziawszy, procesor jest również ich świadomy na tyle, że jeśli inne uporządkowane instrukcje opierają się na danych w logicznym rejestrze przechowywania, mogą go użyć zamiast „przestarzałych” danych w rejestrze architektury w tym konkretnym czasie empirycznym.

Bariery pamięci

Bariera pamięci – zwana także członem, ogrodzeniem pamięci lub instrukcją ogrodzenia – to instrukcja w kodzie komputerowym. Pozwala programiście wymusić ograniczenie porządkowania operacji pamięciowych wydanych przed i po barierze pamięci. Bariera pamięci instruuje program planujący procesora, aby upewnić się, że wszystkie instrukcje są przetwarzane przed jakąkolwiek instrukcją następującą po barierze. Ma to na celu zapewnienie, że ważne operacje zostaną wykonane we właściwej kolejności.

Ogólnie rzecz biorąc, na nowoczesnych komputerach nie powinno to być konieczne. Wykonywanie poza kolejnością i zmiana nazwy rejestru to dobrze ugruntowane i dojrzałe dziedziny. Niemniej jednak bariera pamięci może być pomocna w przypadku starszych, mniej wyrafinowanych, niesprawnych procesorów lub używanych w krytycznych operacjach pamięci.

Bariery pamięci mogą wiązać się z pewnym pogorszeniem wydajności. Dzieje się tak, ponieważ aktywnie uniemożliwiają harmonogramowi procesora optymalizację określonych części przepływu instrukcji. Zwiększa to ryzyko zablokowania rurociągu.

Wniosek

Bariera pamięci to instrukcja, która zapewnia ograniczenie porządkowania operacji pamięciowych. Jest to ważne, ponieważ procesory wykonawcze poza kolejnością mogą zmienić kolejność określonych instrukcji. Chociaż zmiana nazwy rejestru jest dobrze znaną metodą zapewniania integralności pamięci w tym środowisku, pomocne może być ręczne zapewnienie jej.

Bariera pamięci zmusza program planujący procesora do upewnienia się, że instrukcje są zakończone przed jakąkolwiek instrukcją następującą po barierze. Zapobiega to zmianie kolejności operacji pamięciowych. Uniemożliwia to również procesorowi optymalizację przepływu instrukcji, co może mieć wpływ na wydajność.



Leave a Comment

Jak sklonować dysk twardy

Jak sklonować dysk twardy

We współczesnej epoce cyfrowej, gdzie dane są cennym zasobem, klonowanie dysku twardego w systemie Windows może być dla wielu kluczowych procesów. Ten obszerny przewodnik

Jak naprawić błąd ładowania sterownika WUDFRd w systemie Windows 10?

Jak naprawić błąd ładowania sterownika WUDFRd w systemie Windows 10?

Czy podczas uruchamiania komputera pojawia się komunikat o błędzie informujący, że nie udało się załadować sterownika WUDFRd na Twój komputer?

Jak naprawić błąd NVIDIA GeForce Experience o kodzie 0x0003

Jak naprawić błąd NVIDIA GeForce Experience o kodzie 0x0003

Czy na pulpicie pojawia się błąd NVIDIA GeForce o kodzie 0x0003? Jeśli tak, przeczytaj blog, aby dowiedzieć się, jak szybko i łatwo naprawić ten błąd.

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

Jak usunąć procesor graficzny z komputera z systemem Windows w 2023 r

Jak usunąć procesor graficzny z komputera z systemem Windows w 2023 r

Czy musisz usunąć GPU z komputera? Dołącz do mnie, gdy wyjaśnię, jak usunąć procesor graficzny z komputera w tym przewodniku krok po kroku.

Jak zainstalować dysk SSD NVMe na komputerze stacjonarnym i laptopie

Jak zainstalować dysk SSD NVMe na komputerze stacjonarnym i laptopie

Kupiłeś nowy dysk SSD NVMe M.2, ale nie wiesz, jak go zainstalować? Czytaj dalej, aby dowiedzieć się, jak zainstalować dysk SSD NVMe na laptopie lub komputerze stacjonarnym.

Co to jest bomba logiczna?

Co to jest bomba logiczna?

Bomba logiczna to incydent związany z bezpieczeństwem, w którym osoba atakująca przeprowadza opóźnioną akcję. Czytaj dalej, aby dowiedzieć się więcej.

Co to jest SoC?

Co to jest SoC?

Jeśli kiedykolwiek zajrzałeś do wnętrza wieży PC, możesz zobaczyć, że jest tam wiele różnych komponentów. Twój przeciętny laptop zawiera większość tych samych komponentów

Co to jest szyfrowanie asymetryczne?

Co to jest szyfrowanie asymetryczne?

Algorytmy szyfrowania asymetrycznego wykorzystują dwa różne klucze. Jeden klucz służy do szyfrowania, a drugi do deszyfrowania.

Steam Deck: Jak sformatować kartę SD

Steam Deck: Jak sformatować kartę SD

Steam Deck jest dostępny w trzech opcjach przechowywania: 64 GB eMMC, 256 GB NVMe SSD i 512 GB NVMe SSD. W zależności od biblioteki gier i rozmiaru gier