Zespół inżynierów z MIT opracował obiektową hierarchię pamięci, aby efektywniej zarządzać danymi. W artykule analizujemy, jak została skonstruowana.
/ / PD
Jak wiadomo, wzrost wydajności nowoczesnych procesorów CPU nie wiąże się z odpowiednim spadkiem opóźnienia podczas dostępu do pamięci. Różnice w zmianach wskaźników z roku na rok mogą sięgać nawet 10 razy (). W efekcie powstaje wąskie gardło, które uniemożliwia pełne wykorzystanie dostępnych zasobów i spowalnia przetwarzanie danych.
Szkody w wydajności powoduje tzw. opóźnienie dekompresji. W niektórych przypadkach na wstępną dekompresję danych może być potrzebnych do 64 cykli procesora.
Dla porównania: dodawanie i mnożenie liczb zmiennoprzecinkowych nie więcej niż dziesięć cykli. Problem polega na tym, że pamięć działa z blokami danych o stałej wielkości, a aplikacje operują obiektami, które mogą zawierać różne typy danych i różnić się od siebie rozmiarem. Aby rozwiązać problem, inżynierowie z MIT opracowali obiektową hierarchię pamięci, która optymalizuje przetwarzanie danych.
Jak działa technologia
Podstawą rozwiązania są trzy technologie: Hotpads, Zippads i algorytm kompresji COCO.
Hotpads to zarządzana programowo hierarchia ultraszybkiej pamięci rejestrowej (). Te rejestry nazywane są pads i jest ich trzy — od L1 do L3. Przechowują obiekty różnych rozmiarów, metadane i tablice wskaźników.
W zasadzie architektura stanowi system cache'ów, ale dostosowany do pracy z obiektami. Poziom pada, na którym znajduje się obiekt, zależy od częstotliwości jego używania. Jeśli jeden z poziomów jest "przepełniony", system uruchamia mechanizm podobny do "śmieciarzy" w językach Java lub Go. Analizuje, jakie obiekty są używane rzadziej od innych i automatycznie przenosi je między poziomami.
Zippads działa na podstawie Hotpads — archiwizuje i dekompresuje dane, które wchodzą lub wychodzą z dwóch ostatnich poziomów hierarchii — pada L3 i pamięci głównej. W pierwszym i drugim padzie dane są przechowywane w niezmienionej formie.

Zippads kompresuje obiekty, których rozmiar nie przekracza 128 bajtów. Większe obiekty dzielą się na fragmenty, które następnie są umieszczane w różnych lokalizacjach pamięci. Jak piszą deweloperzy, takie podejście zwiększa współczynnik efektywnie wykorzystywanej pamięci.
Do kompresji obiektów zastosowany jest algorytm COCO (Cross-Object COmpression), o którym opowiemy dalej, chociaż system może także pracować z lub . Algorytm COCO jest rodzajem kompresji różnicowej (). Porównuje on obiekty z "bazowymi" i usuwa powtarzające się bity – zobacz schemat poniżej:

Według inżynierów z MIT, ich obiektowo zorientowana hierarchia pamięci jest o 17% bardziej wydajna niż klasyczne metody. Jest znacznie bliższa strukturze nowoczesnych aplikacji, dlatego nowa metoda ma potencjał.
Spodziewane jest, że technologię mogą najpierw zacząć stosować firmy zajmujące się danymi dużymi i algorytmami uczenia maszynowego. Kolejnym potencjalnym kierunkiem są platformy chmurowe. Dostawcy IaaS będą mogli skuteczniej zarządzać wirtualizacją, systemami przechowywania danych i zasobami obliczeniowymi.
Nasze dodatkowe zasoby i źródła:
![]()
![]()
![]()
![]()
![]()
![]()
Źródło: habr.com
