5

Xbox Velocity Architecture, czyli jak działa podsystem pamięci w Xbox Series X

Specyfikację sprzętową konsoli Xbox Series X znamy już praktycznie od podszewki. Wiemy, że bazuje ona na procesorze AMD z rdzeniami Zen 2 oraz układzie graficznym RDNA 2, który ma zapewnić wydajność rzedu 12 Tflopsów, czterokrotnie większą niż w Xbox One X. Jednak duszą konsoli ma być specjalnie zaprojektowany podsystem pamięci.

Xbox Velocity Architecture – dusza Xbox Series X

Architektura Xbox Velocity została zaprojektowana jako najlepsze rozwiązanie do strumieniowego przesyłania zasobów gry w Xbox Series X. Ta radykalna zmiana tradycyjnego podsystemu I/O wpłynęła bezpośrednio na wszystkie aspekty projektu nowej konsoli. Jeśli procesor nazwiemy sercem Xbox Series X, to Xbox Velocity jest jej duszą. Dzięki głębokiej integracji innowacji sprzętowych i programowych, architektura zapewni niespotykane dotąd wrażenia z gier. Xbox Velocity składa się z czterech głównych komponentów: dysku SSD NVMe, sprzętowo przyspieszonych bloków dekompresyjnych, zupełnie nowej warstwy API DirectStorage oraz technologii Sampler Feedback Streaming (SFS).

Dysk SSD NVME

Podstawą architektury Xbox Velocity jest dysk SSD NVMe o pojemności 1 TB, zapewniający przepustowość rzędu 2,4 GB/s, ponad 40 razy więcej niż w Xbox One. Tradycyjne dyski SSD stosowane w komputerach PC, często zmniejszają wydajność wraz ze wzrostem temperatury, SSD NVME w konsoli Xbox Series X zapewnia spójną i stałą wydajność. Deweloperzy mają gwarantowany poziom wydajności I/O przez cały czas.

Sprzętowa przyspieszona dekompresja

Pakiety gier i zasoby są kompresowane w celu zminimalizowania czasu pobierania i ilości pamięci wymaganej dla każdej gry. Dzięki przyspieszeniu sprzętowemu, zarówno dla standardowego dekompresora LZ, jak i zupełnie nowego, zastrzeżonego algorytmu specjalnie zaprojektowanego dla danych tekstur o nazwie BCPack, Xbox Series X dostarcza programistom to, co najlepsze, aby osiągnąć korzyści bez utraty jakości lub wydajności. Ponieważ dane tekstur stanowią znaczną część całkowitego rozmiaru gry, mając specjalnie opracowany algorytm zoptymalizowany dla danych tekstur (oprócz ogólnego przeznaczenia dekompresora LZ), oba mogą być używane równolegle w celu zmniejszenia rozmiaru gry. Zakładając współczynnik kompresji 2:1, Xbox Series X zapewnia efektywną wydajność 4,8 GB/s, około 100 razy większą niż w konsolach obecnej generacji. Aby zapewnić podobny poziom wydajności dekompresyjnej w oprogramowaniu, potrzebne byłyby więcej niż 4 rdzenie procesora Zen 2.

Nowy interfejs API DirectStorage

Standardowe interfejsy plików API I/O zostały opracowane ponad 30 lat temu i praktycznie nie uległy zmianie. Od tego czasu technologia pamięci masowej znacznie się poprawiła.  Dlatego dodaliśmy zupełnie nowy interfejs API DirectStorage do rodziny DirectX, przyznając programistom dokładną kontrolę nad ich operacjami I/O, umożliwiając im tworzenie wielu kolejek I/O, ustalanie priorytetów i minimalizowanie opóźnień I/O. Te interfejsy API bezpośredniego dostępu na niskim poziomie gwarantują, że programiści będą mogli w pełni korzystać z wydajności I/O zapewnianej przez sprzęt.

Sampler Feedback Streaming (SFS)

To zupełnie nowa technologia oparta na wszystkich udoskonaleniach Architektury Xbox Velocity. Tekstury gry są zoptymalizowane na różnych poziomach szczegółowości i rozdzielczości, zwanych mipmapami. Można ich używać podczas renderowania w zależności od odległości w jakiej dany obiekt znajduje się od gracza. Gdy ten zbliża się do gracza, rozdzielczość tekstury musi wzrosnąć, aby zapewnić wyraźne szczegóły i efekty wizualne. Jednak większe mipmapy wymagają znacznej ilości pamięci w porównaniu do mipsów o niższej rozdzielczości, których można użyć, jeśli przedmiot znajduje się dalej. Dzięki wyspecjalizowanemu modułowi dodanemu do Xbox One X, mogliśmy analizować wykorzystanie pamięci tekstur przez GPU i odkryliśmy, że procesor graficzny często uzyskuje dostęp do mniej, niż 1/3 danych obrazów, wymaganych do załadowania do pamięci.

Pojedyncza scena często zawiera tysiące różnych tekstur, co powoduje znaczną utratę efektywnej pamięci i przepustowości  I/O z powodu nieefektywnego wykorzystania. Dzięki tej wiedzy udało się znacznie zoptymalizować cały algorytm tak, aby ładować do pamięci tylko te tekstury, które są potrzebne. Pozwoliło to na nawet 2,5 krotne zwiększenie efektywnej przepustowości podsystemu pamięci. W rezultacie deweloperze mogą tworzyć jeszcze bogatsze i ciekawsze lokacje, nie przejmując się limitami sprzętowymi.