Nel kernel Linux è stata ottimizzata l'implementazione dell'algoritmo CRC32C

Per l'inclusione nella futura versione del kernel Linux 6.13 è stata proposta una patch con una revisione dell'implementazione dell'algoritmo di checksum CRC32C. Il codice dell'implementazione CRC32C è stato ridotto di circa 10 volte (da 4546 a 418 byte). Con la protezione retpoline disattivata dagli attacchi di tipo Spectre, il guadagno prestazionale con la nuova implementazione raggiunge l'11,8% sui processori AMD Zen 2, il 6,4% su Intel Emerald Rapids e il 4,8% su Intel Haswell. Con retpoline attivato, il guadagno prestazionale è più evidente e raggiunge il 66,8% su sistemi con processori Intel Emerald Rapids, il 35,0% su Intel Haswell e il 29,5% su AMD Zen 2. retpoline enabled | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 35.0% | 20.7% | 17.8% | 9.7% | -0.2% | 4.4% | Intel Emerald Rapids | 66.8% | 45.2% | 36.3% | 19.3% | 0.0% | 5.4% | AMD Zen 2 | 29.5% | 17.2% | 13.5% | 8.6% | -0.5% | 2.8% | retpoline disabled: | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 3.3% | 4.8% | 4.5% | 0.9% | -2.9% | 0.3% | Intel Emerald Rapids | 7.5% | 6.4% | 5.2% | 2.3% | -0.0% | 0.6% | AMD Zen 2 | 11.8% | 1.4% | 0.2% | 1.3% | -0.9% | -0.2% |

La versione originale di CRC32C includeva 128 cicli espansi (unroll), il che portava a un codice piuttosto grande. Poiché i processori moderni con supporto per l'esecuzione delle istruzioni fuori ordine (out of order) possono eseguire i comandi in parallelo, tale ottimizzazione dei salti nei cicli è risultata eccessiva e portava solo a un codice eccessivamente grande. Invece delle 128 iterazioni, nella nuova versione sono state mantenute solo 4, il che non solo ha ridotto drasticamente il volume del codice, ma ha anche accelerato l'esecuzione dell'operazione.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster