La maggior parte di queste operazioni è "banale": sostituiscono combinazioni di due o tre codici operativi esistenti. Ad esempio, il tipo di istruzione BLSR
è, come specificato nella pagina a cui ti colleghi, equivalente a una sottrazione seguita da un% bit per bitAND
. Questo potrebbe già essere fatto. Le operazioni aggiuntive non danneggiano, e i compilatori trarranno beneficio da esse e, senza dubbio, alcune funzioni di crittografia otterranno alcuni cicli attraverso l'uso di alcuni di questi codici operativi, ma non ci sono risultati rivoluzionari da aspettarsi.
Tra le istruzioni, le più interessanti sono quelle di conteggio ( LZCNT
, TZCNT
) perché il conteggio del numero di zeri iniziali o finali in un registro di bit N è costato O (log N) quando si utilizzano opcodes "classici". Queste operazioni hanno qualche utilità in alcuni casi angolari di calcoli su interi grandi. In particolare, penso che ciò sarà di aiuto per GCD binario , che è usato per calcolare le divisioni in campi finiti - un passo importante nei calcoli su curve ellittiche. Al momento, la divisione in campi finiti è così costosa (se confrontata con la moltiplicazione) che vale la pena utilizzare le coordinate proiettive per calcolare cose sulle curve ellittiche: questo implica un numero dieci volte maggiore di operazioni, ma evita molte divisioni, quindi aumenta i guadagni netti. Una veloce implementazione di GCD binario potrebbe cambiare un po 'quell'immagine. Per ulteriori usi delle operazioni di conteggio, vedi questa pagina di Wikipedia .
Ciò che può davvero migliorare le cose non sono le nuove istruzioni, ma i registri più grandi. AVX2 offre registri a 256-bit; è abbastanza spazio per calcolare otto SHA-256 in parallelo, proprio come SSE2 consente quattro SHA-256 parallelo. Il software di cracking delle password trarrà vantaggio da questo ... (anche se le GPU sono probabilmente migliori). È in corso un lavoro per definire le modalità di hashing degli alberi per trasformare una data funzione hash in un sistema che beneficia del parallelismo; per esempio. vedi questo articolo (da Keccak, aka SHA-3, designer). Il NIST ha espresso la volontà di definire alcuni standard a tale riguardo.
Naturalmente, ci vuole ancora qualche scenario particolare per beneficiare di tali guadagni della CPU. Nella maggior parte degli usi dell'hashing (o della crittografia o altro), la crittografia non è il collo di bottiglia; I / O è. Quando esegui l'hashing dei file, non puoi eseguirli più velocemente di quanto tu possa leggerli dal disco.