
Il 2 giugno, Eric Biggers (ingegnere di Google) ha presentato nuove implementazioni di AES-XTS per prestazioni significativamente superiori sui processori Intel/AMD grazie ai nuovi set di istruzioni AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 e VAES + AVX10/512.
Il codice AES-NI GCM sostituisce quello precedente, scritto da Intel, e risolve i problemi noti:
«Questo pacchetto di aggiornamenti aggiunge in VAES e AVX512/AVX10 l'implementazione di AES-GCM (modalità Galois/Contatore), che migliora le prestazioni di AES-GCM fino al 162%. Inoltre, sostituisce il vecchio codice AES-NI GCM di Intel con un nuovo codice, che è leggermente più veloce e risolve una serie di problemi, incluso l'enorme dimensione del file binario che supera i 250 KB. Maggiori dettagli possono essere trovati nelle correzioni.»
Lo stato finale del codice assembly x86_64 AES-GCM è che otteniamo due file assembly: uno genera codice AES-NI con o senza AVX, e l'altro genera codice VAES con AVX512/AVX10 con vettori a 256 o 512 bit. Non supporta il VAES singolo (senza AVX512/AVX10). Questo è leggermente diverso da quanto ho fatto con AES-XTS, dove un file genera codice AVX e AVX512/AVX10, incluso codice che utilizza solo VAES (senza AVX512/AVX10), e un altro file genera solo codice diverso da AVX. Tuttavia, al momento questo sembra essere il giusto approccio per ogni algoritmo specifico, considerando che la limitazione a 16 registri SIMD e a vettori a 128 bit ha portato a decisioni costruttive sostanzialmente diverse in AES-GCM, ma non così tanto per AES-XTS. I processori forniti solo con VAES sembrano anche un fenomeno temporaneo, quindi potremmo non doverci sforzare troppo per supportare questa combinazione.»
Fonte: linux.org.ru
