- Το Linux 7.2 ενσωματώνει τον επιταχυνόμενο αλγόριθμο CRC64-NVMe μέσω NEON intrinsics και για 32-bit ARM επεξεργαστές, επεκτείνοντας τη βελτίωση που ήδη απολαμβάνει το ARM64 από το Linux 7.1.
- Το γενικό (generic) CRC64 αποτελούσε σημείο συμφόρησης στα NVMe και άλλα υποσυστήματα αποθήκευσης του πυρήνα· η επιτάχυνση NEON έδειξε περίπου 6x βελτίωση στο ARM64 (μετρήσεις από Arm Cortex-A72).
- Η νέα σειρά patches του Ard Biesheuvel επιτρέπει κοινή χρήση των NEON intrinsics μεταξύ ARM32 και ARM64, ενώ ταυτόχρονα αποδίδει στο ARM32 και τη βελτιστοποιημένη συνάρτηση xor_gen() από τον ARM64 κώδικα.
Το υποσύστημα CRC του πυρήνα Linux βελτιώνεται σταδιακά με αρχιτεκτονικά-ειδικές υλοποιήσεις, και η 32-bit ARM πλατφόρμα μόλις πήρε τη δική της μερίδα. Για το Linux 7.1 είχε ενσωματωθεί επιτάχυνση CRC64-NVMe μέσω NEON για ARM64 με περίπου 6x καλύτερη ταχύτητα· ο γενικός κώδικας αποτελούσε σημείο συμφόρησης στα NVMe και άλλα υποσυστήματα αποθήκευσης, ενώ ο αλγόριθμος CRC64-NVMe χρησιμοποιείται για την επαλήθευση της ακεραιότητας δεδομένων. Στο Linux 7.2 ο επιταχυνόμενος κώδικας NEON θα λειτουργεί πλέον και σε συστήματα που βασίζονται σε 32-bit ARM.
Τι έφερε η βελτίωση στο ARM64
Η αρχική υλοποίηση για ARM64 παρείχε CRC64-NVMe βελτίωση σχεδόν 6x σε σύγχρονα Arm SoC. Η NEON-βελτιστοποιημένη υλοποίηση CRC64 ακολούθησε το πρότυπο αντίστοιχων αρχιτεκτονικά-ειδικών υλοποιήσεων, όπως αυτών για x86_64 και RISC-V. Τα αποτελέσματα αυτά μετρήθηκαν σε Arm Cortex-A72 SoC, με την υλοποίηση να βασίζεται στις εντολές NEON Polynomial Multiply Long (PMULL). Ο γενικός αλγόριθμος shift-and-XOR είναι αργός και δημιουργεί σημείο συμφόρησης στα υποσυστήματα NVMe, ενώ η επιταχυνόμενη υλοποίηση χρησιμοποιεί C intrinsics (arm_neon.h) αντί για raw assembly, για καλύτερη αναγνωσιμότητα και συντηρησιμότητα.
Η νέα σειρά patches για ARM32
Μια σειρά patches του Ard Biesheuvel επιτρέπει την κοινή χρήση των NEON intrinsics εντός του πυρήνα Linux μεταξύ 32-bit ARM και 64-bit ARM, καθιστώντας τα ARM64 NEON intrinsics για CRC64 διαθέσιμα σε 32-bit ARM περιβάλλοντα Linux όπου οι πυρήνες CPU διαθέτουν υποστήριξη NEON. Αυτή η αρχιτεκτονική απόφαση — κοινός κώδικας αντί για χωριστές υλοποιήσεις — απλοποιεί τη μακροπρόθεσμη συντήρηση του πυρήνα.
Όπως φαίνεται σε ένα από τα μηνύματα της σειράς patches, η επίδραση στην απόδοση είναι εξίσου σημαντική με αυτή που παρατηρήθηκε στον χώρο του ARM64 — για όσους εξακολουθούν να χρησιμοποιούν 32-bit ARM και upstream builds του πυρήνα Linux το 2026 και μετά.
Ενσωμάτωση στο Linux 7.2 και xor_gen()
Η επιτάχυνση CRC64-NVMe για 32-bit ARM ενσωματώθηκε αυτή την εβδομάδα στον πυρήνα Linux 7.2 μέσω της ενημέρωσης CRC· η ίδια αλλαγή αποδίδει στο ARM32 NEON και τη βελτιστοποιημένη συνάρτηση xor_gen() από τον ARM64 κώδικα. Η συνάρτηση xor_gen() χρησιμοποιείται σε λειτουργίες XOR επί πινάκων δεδομένων, οι οποίες απαντώνται σε RAID και παρόμοια υποσυστήματα.
Η κίνηση αυτή έχει πρακτική σημασία για embedded συστήματα, βιομηχανικούς ελεγκτές και συσκευές IoT που εξακολουθούν να τρέχουν 32-bit ARM SoC με NEON — ειδικά εκεί που χρησιμοποιείται NVMe αποθήκευση και η ακεραιότητα δεδομένων είναι κρίσιμη. Δεδομένου ότι το Linux 7.1 έφερε επίσης υποστήριξη πραγματικού χρόνου (PREEMPT_RT) για 32-bit ARM στον mainline πυρήνα, το οικοσύστημα ARM32 λαμβάνει σταδιακά σοβαρές βελτιώσεις στις νέες εκδόσεις του πυρήνα.

TheLab Weekly Digest
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now