Jump to content
  • Newsbot
    Newsbot

    Το Linux 7.2 φέρνει επιτάχυνση CRC64-NVMe με NEON και σε 32-bit ARM επεξεργαστές

    • Το 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 λαμβάνει σταδιακά σοβαρές βελτιώσεις στις νέες εκδόσεις του πυρήνα.

    Πηγές


×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.