Kompromisy dotyczące oprogramowania sprzętowego
Istnieje wiele metod obniżania kosztów sprzętu. Jedną z metod jest mniej ścisła integracja wspomagania komunikacji i sieci w węźle przetwarzającym oraz zwiększenie opóźnienia i zajętości komunikacji.
Inną metodą jest zapewnienie automatycznej replikacji i spójności oprogramowania, a nie sprzętu. Ta ostatnia metoda zapewnia replikację i spójność w pamięci głównej i może być wykonywana przy różnym stopniu szczegółowości. Pozwala na użycie gotowych części towarowych dla węzłów i połączeń międzysieciowych, minimalizując koszt sprzętu. To wywiera presję na programistę, aby osiągnąć dobrą wydajność.
Modele rozluźnionej spójności pamięci
Model spójności pamięci dla współdzielonej przestrzeni adresowej definiuje ograniczenia w kolejności, w jakiej operacje pamięci w tych samych lub różnych lokalizacjach wydają się być wykonywane względem siebie. W rzeczywistości każda warstwa systemu obsługująca model nazewnictwa współużytkowanej przestrzeni adresowej musi mieć model spójności pamięci, który obejmuje interfejs programisty, interfejs systemu użytkownika i interfejs sprzętowo-programowy. Oprogramowanie, które współdziała z tą warstwą, musi mieć świadomość własnego modelu spójności pamięci.
Specyfikacje systemu
Systemowa specyfikacja architektury określa kolejność i zmianę kolejności operacji pamięci oraz to, jaką wydajność można w rzeczywistości uzyskać.
Poniżej przedstawiono kilka modeli specyfikacji wykorzystujących rozluźnienia w kolejności programu -
Relaxing the Write-to-Read Program Order- Ta klasa modeli umożliwia sprzętowi tłumienie opóźnień operacji zapisu, które zostały pominięte w pamięci podręcznej pierwszego poziomu. Gdy błąd zapisu znajduje się w buforze zapisu i nie jest widoczny dla innych procesorów, procesor może zakończyć odczyty, które trafiły w jego pamięć podręczną lub nawet pojedynczy odczyt, który brakuje w jego pamięci podręcznej.
Relaxing the Write-to-Read and Write-to-Write Program Orders- Zezwolenie zapisom na ominięcie poprzednich zaległych zapisów w różnych lokalizacjach pozwala na połączenie wielu zapisów w buforze zapisu przed aktualizacją pamięci głównej. W ten sposób wiele błędów zapisu nakłada się i staje się widoczne poza kolejnością. Motywacją jest dalsze zminimalizowanie wpływu opóźnienia zapisu na czas przerwy procesora oraz zwiększenie wydajności komunikacji między procesorami poprzez udostępnienie nowych wartości danych innym procesorom.
Relaxing All Program Orders- Domyślnie żadne polecenia programu nie są gwarantowane, z wyjątkiem zależności danych i sterowania w ramach procesu. W związku z tym zaletą jest to, że wiele żądań odczytu może być oczekujących w tym samym czasie, aw kolejności programu mogą zostać ominięte przez późniejsze zapisy i mogą same zakończyć się poza kolejnością, co pozwala nam ukryć opóźnienia odczytu. Ten typ modeli jest szczególnie przydatny w przypadku procesorów planowanych dynamicznie, które mogą kontynuować poprzednie błędy odczytu do innych odwołań do pamięci. Pozwalają na wiele zmian kolejności, a nawet eliminację dostępu, który jest wykonywany przez optymalizacje kompilatora.
Interfejs programowania
Interfejsy programistyczne zakładają, że polecenia programu nie muszą w ogóle być utrzymywane między operacjami synchronizacji. Zapewnia się, że wszystkie operacje synchronizacji są wyraźnie oznaczone lub zidentyfikowane jako takie. Biblioteka środowiska uruchomieniowego lub kompilator tłumaczy te operacje synchronizacji na odpowiednie operacje zachowujące kolejność, których wymaga specyfikacja systemu.
Następnie system zapewnia sekwencyjnie spójne wykonywanie, nawet jeśli może zmieniać kolejność operacji między operacjami synchronizacji w dowolny sposób, bez zakłócania zależności od lokalizacji w procesie. Pozwala to kompilatorowi na dostateczną elastyczność między punktami synchronizacji dla pożądanych zmian kolejności, a także daje procesorowi możliwość wykonania takiej liczby zmian kolejności, na jaką pozwala jego model pamięci. W interfejsie programisty model spójności powinien być co najmniej tak słaby, jak interfejs sprzętowy, ale nie musi być taki sam.
Mechanizmy tłumaczenia
W większości mikroprocesorów tłumaczenie etykiet w celu utrzymania mechanizmów utrzymujących sprowadza się do wstawienia odpowiedniej instrukcji bariery pamięci przed i / lub po każdej operacji oznaczonej jako synchronizacja. Zapisałby instrukcje z poszczególnymi ładunkami / magazynami wskazującymi, które zamówienia należy egzekwować, i unikając dodatkowych instrukcji. Ponieważ jednak operacje są zwykle rzadkie, nie jest to sposób, w jaki dotychczas postępowała większość mikroprocesorów.
Pokonywanie ograniczeń pojemności
Omówiliśmy systemy, które zapewniają automatyczną replikację i spójność sprzętową tylko w pamięci podręcznej procesora. Pamięć podręczna procesora, która nie jest najpierw replikowana w lokalnej pamięci głównej, replikuje zdalnie przydzielone dane bezpośrednio na podstawie odniesienia.
Problem z tymi systemami polega na tym, że zakres replikacji lokalnej jest ograniczony do pamięci podręcznej sprzętu. Jeśli blok jest zastępowany z pamięci podręcznej, musi zostać pobrany z pamięci zdalnej, gdy będzie ponownie potrzebny. Głównym celem systemów omówionych w tej sekcji jest rozwiązanie problemu wydajności replikacji, ale nadal zapewnianie spójności sprzętowej i drobnej ziarnistości bloków pamięci podręcznej w celu zwiększenia wydajności.
Tertiary Cache
Aby rozwiązać problem z wydajnością replikacji, jedną z metod jest użycie dużej, ale wolniejszej pamięci podręcznej dostępu zdalnego. Jest to potrzebne ze względu na funkcjonalność, gdy węzły maszyny same są wieloprocesorami na małą skalę i można je po prostu powiększyć w celu zwiększenia wydajności. Będzie również przechowywać zreplikowane zdalne bloki, które zostały zastąpione z lokalnej pamięci podręcznej procesora.
Architektury pamięci podręcznej (COMA)
W maszynach COMA każdy blok pamięci w całej pamięci głównej ma powiązany z nim znacznik sprzętowy. Nie ma stałego węzła, w którym zawsze jest zapewnione miejsce na blok pamięci. Dane dynamicznie migrują lub są replikowane w głównych pamięciach węzłów, które mają do nich dostęp / przyciągają. Kiedy uzyskiwany jest dostęp do zdalnego bloku, jest on replikowany w pamięci przyciągania i wprowadzany do pamięci podręcznej, a sprzęt zachowuje spójność w obu miejscach. Blok danych może znajdować się w dowolnej pamięci atrakcji i może być łatwo przenoszony z jednego do drugiego.
Zmniejszenie kosztów sprzętu
Zmniejszenie kosztów oznacza przeniesienie części funkcjonalności specjalistycznego sprzętu na oprogramowanie działające na istniejącym sprzęcie. Oprogramowanie jest znacznie łatwiejsze do zarządzania replikacją i spójnością w pamięci głównej niż w sprzętowej pamięci podręcznej. Tanie metody zwykle zapewniają replikację i spójność w pamięci głównej. Aby spójność była efektywnie kontrolowana, każdy z pozostałych komponentów funkcjonalnych asysty może być wykorzystany dzięki specjalizacji i integracji sprzętu.
Wysiłki badawcze mają na celu obniżenie kosztów za pomocą różnych podejść, takich jak kontrola dostępu na specjalistycznym sprzęcie, ale przypisanie innych czynności do oprogramowania i sprzętu. Innym podejściem jest wykonywanie kontroli dostępu w oprogramowaniu i jest przeznaczone do przydzielania spójnej abstrakcji wspólnej przestrzeni adresowej w węzłach towarowych i sieciach bez specjalistycznego wsparcia sprzętowego.
Implikacje dla oprogramowania równoległego
Rozluźniony model spójności pamięci wymaga, aby programy równoległe oznaczały żądane konflikty dostępu jako punkty synchronizacji. Język programowania zapewnia obsługę etykietowania niektórych zmiennych jako synchronizacji, które następnie zostaną przetłumaczone przez kompilator na odpowiednią instrukcję zachowującą kolejność. Aby ograniczyć możliwość zmiany kolejności dostępu przez kompilatory do pamięci współdzielonej, kompilator może sam używać etykiet.