Badacze z Massachusetts Institute of Technology opracowali nowatorski system pamięci. Nazwali go Tardis, na cześć pojazdu, którym porusza się od ponad 50 (a jeśli wierzyć fabule to od ponad 2000) lat serialowy Doctor Who – Władca Czasu z planety Gallifrey. Oryginalna TARDIS pozwala na podróże w czasie i przestrzeni i jest większa w środku niż na zewnątrz. Jednak to nie z powodu niezwykłych rozmiarów nowa architektura pamięci otrzymała nazwę na cześć żywego statku kosmicznego.
Tardis z MIT jest właściwie protokołem koherencji (spójności pamięci) w systemach wieloprocesorowych. Jak podkreślają twórcy – pierwszym naprawdę nowym rozwiązaniem w tej dziedzinie od ponad 30 lat. Choć amerykańska Tardis nie jest większa w środku niż na zewnątrz, to nie jest tak ciasna jak jej tradycyjne odpowiedniki.
W systemach wieloprocesorowych korzystających z wielu poziomów pamięci z których jeden jest współdzielony, każdy procesor musi na bieżąco „wiedzieć”, że jakiś fragment wspólnej pamięci został właśnie zmodyfikowany przez inny. Zwykle część pamięci wydzielana jest w tym celu na rodzaj bufora, w którym lądują informacje o tym, który rdzeń pracuje właśnie na którym fragmencie danych. Taki bufor zwiększa swoją wielkość liniowo wraz z ilością rdzeni, pożerając ostatecznie nawet kilkadziesiąt procent całej wspólnej pamięci.
W nowym modelu wielkość potrzebnego bufora nie rośnie proporcjonalnie do liczby rdzeni, ale do jej logarytmu. I tak przy systemie 128-rdzeniowym dane o spójności pamięci zajmują o 2/3 mniej pamięci, a w systemie zawierającym 1000 rdzeni – aż o 96% mniej niż w przypadku tradycyjnego rozwiązania. Z czego wynika taka oszczędność? Jak twierdzą twórcy, z tego, że Tardis nie zawraca sobie głowy realnym czasem.
Według uczonych w obliczeniach równoległych tak naprawdę nie ma znaczenia fakt, że dane, na których pracuje procesor A zostały w międzyczasie zmodyfikowane przez procesor B – przynajmniej tak długo, jak reszta systemu będzie traktowała wynik wynik procesora A jako starszy a procesora B jako nowszy. Nie decyduje tu więc rzeczywista kolejność ukończenia pracy, ale jej rozpoczęcia. Badacze z MIT zlikwidowali też jeden z poważnych problemów powodujących spadki wydajności w podobnych systemach – chcąc zapisać wynik obliczenia na bloku danych, nie musimy czekać aż rdzeń który pierwszy zaczął pracę ją skończy. Wystarczy tylko w odpowiedni sposób odnotować kolejność. Reasumując: zaoszczędzimy sporo pamięci, a procesory będą pracować szybciej. Więcej szczegółów powinniśmy poznać w przyszłym miesiącu w czasie International Conference on Parallel Architectures and Compilation Techniques. Miejmy nadzieję, że badacze jakoś wytłumaczą się z faktu, że w nazwie Tardis użyli tylko pierwszej wielkiej litery. :)
[źródło i grafika: spectrum.ieee.org]