Për të përfshirë në degën e ardhshme të bërthamës Linux 6.13, është propozuar një patch me një implementim të ripërpunuar të algoritmit të llogaritjes së kontrollit CRC32C. Kodi i implementimit të CRC32C është tkurrur rreth 10 herë (nga 4546 në 418 byte). Kur mbrojtja retpoline ndaj sulmeve të klasës Spectre është e çaktivizuar, rritja e performancës me implementimin e ri arrin deri në 11.8% në procesorët AMD Zen 2, 6.4% në Intel Emerald Rapids dhe 4.8% në Intel Haswell. Kur retpoline është e aktivizuar, rritja e performancës është më e dukshme dhe arrin deri në 66.8% në sistemet me procesorë Intel Emerald Rapids, 35.0% në Intel Haswell dhe 29.5% në 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% |
Versioni origjinal i CRC32C përfshinte 128 cikle të zgjatur (unroll), që solli në një kod mjaft të madh. Meqenëse procesorët modernë me mbështetje për ekzekutimin e instrukcioneve jashtë rendit (out of order) mund të ekzekutojnë komanda paralelisht, optimizimi i tillë i komandave të kalimit në cikle rezultoi i tepruar dhe solli vetëm në një kod jashtëzakonisht të madh. Në vend të 128 iteracioneve, në variantin e ri mbetën vetëm 4, gjë që jo vetëm që reduktoi ndjeshëm volumin e kodit, por gjithashtu përshpejtoi realizimin e operacionit.
Burimi: opennet.ru
