Valve intende collegare la cache di codice tradotto di FEX a Steam Pre-Caching, così che le istruzioni già convertite per ARM possano essere disponibili prima del primo avvio locale di un’applicazione. Pierre-Loup Griffais, ingegnere software di Valve, ha descritto l’integrazione come un piano futuro. Per questa integrazione non sono stati pubblicati risultati prestazionali.

Preparare in anticipo il codice può spostare parte del lavoro di traduzione fuori dall’esecuzione del gioco; il beneficio pratico dipenderà da come Valve realizzerà il piano.

Il piano di Valve anticiperebbe la disponibilità del codice tradotto

FEX traduce le istruzioni CPU x86 di un’applicazione in istruzioni ARM. In un ambiente compatibile, come Proton ARM, può occuparsi del codice dell’applicazione mentre il sistema operativo e i driver grafici funzionano in modo nativo. L’idea alla base di Steam Pre-Caching è rendere disponibile il codice tradotto prima che il gioco venga eseguito localmente per la prima volta.

Il progetto si inserisce nel lavoro più ampio di Valve sul gaming su ARM. La precedente copertura di NeoTeo sull’esplorazione di SteamOS per dispositivi ARM offre il contesto generale; il piano qui descritto riguarda invece il momento in cui il codice FEX potrebbe essere preparato.

Che cosa memorizza la cache FEX

La compilazione JIT genera codice durante l’esecuzione. FEX 2609 documenta una cache su disco facoltativa che conserva il codice JIT generato in un database in formato FOZ e lo cerca nelle esecuzioni successive. La nota indica come attivarla con la variabile d’ambiente FEX_DISKCACHE=1 oppure con l’opzione JSON DiskCache: sono parametri della configurazione generale di FEX. (FEX 2609)

Questa cache riguarda il codice della CPU. La cache o distribuzione degli shader GPU è un meccanismo diverso, legato al lavoro grafico; preparare il codice tradotto da FEX non equivale quindi a preparare gli shader.

Il limite di 1 GB e la gestione delle cache obsolete

FEX 2610 fissa a 1 GB il limite predefinito della cache su disco. Quando lo raggiunge, FEX interrompe il salvataggio di altro codice; il limite si può modificare nelle opzioni INI. (FEX 2610)

La stessa versione rimuove automaticamente le cache diventate obsolete dopo gli aggiornamenti di FEX. Per i file ELF che contengono un GNU build ID, usa inoltre quell’identificativo come chiave parziale: aiuta a evitare il riuso di una cache non aggiornata quando il file viene sostituito, senza coprire ogni possibile caso di obsolescenza. (FEX 2610)