Valve planuje połączyć pamięć podręczną FEX ze Steam Pre-Caching, aby przetłumaczony kod mógł być dostępny przed pierwszym lokalnym uruchomieniem aplikacji. Pierre-Loup Griffais, inżynier Valve, opisał ten plan w rozmowie z PCWorld. Integracja pozostaje planem na przyszłość.
Szerszy kontekst prac Valve nad SteamOS dla ARM przedstawia wcześniejsze omówienie systemu dla tej architektury.
Co FEX zapisuje w pamięci podręcznej
FEX tłumaczy instrukcje procesora x86 na instrukcje ARM. W odpowiednim środowisku, takim jak Proton ARM, system operacyjny i sterowniki graficzne mogą działać natywnie, a FEX zajmuje się kodem CPU aplikacji.
FEX 2609 opisuje opcjonalny zapis wygenerowanego kodu JIT, czyli kodu tworzonego podczas działania programu, w bazie danych w formacie FOZ. Przy kolejnych uruchomieniach FEX może odszukać ten kod w pamięci podręcznej zamiast generować go ponownie. Szczegóły mechanizmu opisuje nota wydania FEX 2609.
Pomysł integracji ze Steam Pre-Caching polega na przygotowaniu takiego kodu przed pierwszym lokalnym uruchomieniem aplikacji. Samo ponowne wykorzystanie kodu w późniejszych uruchomieniach to działanie udokumentowane w FEX; przygotowanie go z wyprzedzeniem przez Steam jest planowaną częścią integracji.
Najważniejszy szczegół techniczny: cache FEX przechowuje przetłumaczony kod procesora, a nie shadery karty graficznej.
Co dzieje się po osiągnięciu limitu 1 GB
FEX 2610 ustala domyślny limit pamięci podręcznej na 1 GB. Po jego osiągnięciu zapis nowych danych się zatrzymuje; limit można zmienić w opcjach INI. FEX opisuje też opcjonalną pamięć podręczną w RAM-ie dla często używanych bloków kodu oraz automatyczne usuwanie starych pamięci podręcznych po aktualizacji FEX. Szczegóły zawiera nota wydania FEX 2610.
Gdy plik ELF zawiera wbudowany identyfikator GNU build ID, FEX używa go jako częściowego klucza pliku. Pomaga to uniknąć użycia starej pamięci podręcznej po zastąpieniu pliku, ale ten mechanizm jest częściowy.
Jakiego zacinania dotyczy plan Valve
Tłumaczenie kodu CPU i kompilowanie shaderów GPU to różne zadania. Przy 60 klatkach na sekundę każda klatka ma około 16,7 ms; tłumaczenie kodu podczas gry może zająć część tego czasu i wywołać przycięcie. Pamięć FEX dotyczy pracy procesora, a nie shaderów. Nie usuwa więc przyczyn zacięć takich jak strumieniowanie zasobów, ograniczenia CPU czy słaba optymalizacja gry.