Σωλήνωση (υπολογιστές)

Στην πληροφορική σωλήνωση, διοχέτευση ή διασωλήνωση (αγγλ: pipeline) καλείται ένα σύνολο από στοιχεία, υποσυστήματα μιας διαδικασίας επεξεργασίας δεδομένων τα οποία συνδέονται σε σειρά, έτσι ώστε η έξοδος από ένα στοιχείο να αποτελεί είσοδο για το επόμενο στη σειρά. Τα δεδομένα μπορούν επομένως να υφίστανται επεξεργασία παράλληλα από τα διάφορα υποσυστήματα της σωλήνωσης. Οι βασικές σωληνώσεις σχετικές με υπολογιστές είναι : η σωλήνωση εντολών όπως η κλασική σωλήνωση RISC, που χρησιμοποιείται στην Κεντρική Μονάδα Επεξεργασίας επιτρέποντας να εκτελούνται παράλληλα τα στάδια διαφορετικών εντολών αυξάνοντας την απόδοση του υπολογιστή. Στη σωλήνωση αυτή τα στοιχεία της επεξεργασίας είναι μέρη του επεξεργαστή που υλοποιούν τα επιμέρους στάδια εκτέλεσης μια εντολής (προσαγωγή, αποκωδικοποίηση, υπολογισμός τελεστών, προσαγωγή τελεστών, εκτέλεση εντολής κτλ.). Πρόκειται για μία μέθοδο παραλληλισμού εντολών στο υλικό του επεξεργαστή. η σωλήνωση γραφικών η οποία συναντάται στις περισσότερες κάρτες γραφικών, οι οποίες αποτελούνται από πολλαπλές μονάδες αριθμητικής ή πλήρεις επεξεργαστές που υλοποιούν τα διαφορετικά στάδια λειτουργιών γραφικής απόδοσης(rendering) όπως προοπτική προβολή, ψαλίδισμα παραθύρων, υπολογισμούς φωτισμού κτλ. η σωλήνωση λογισμικού η οποία αποτελείται από διεργασίες κατάλληλα διαμορφωμένες ώστε το ρεύμα δεδομένων εξόδου της μιας να είναι ρεύμα δεδομένων εξόδου για την επόμενη. η σωλήνωση (pipe) ως ένας μηχανισμός διαδιεργασιακής επικοινωνίας. Έτσι υλοποιείται εσωτερικά η σωλήνωση λογισμικού στα λειτουργικά συστήματα Unix.

 Η έννοια της σωλήνωσης έχει εφαρμογή στην καθημερινότητά μας. Το κλασικό παράδειγμα είναι η σωλήνωση που πραγματοποιείται σε μια αλυσίδα παραγωγής σε ένα εργοστάσιο. Π.χ. σε ένα εργοστάσιο αυτοκινήτων υπάρχουν τρία διακριτά στάδια στην γραμμή παραγωγής: ενσωμάτωση μηχανής (20 λεπτά), ξύλινη εσωτερική επένδυση (5 λεπτά), τροχοί (10 λεπτά). Τα στάδια αυτά εκτελούνται με κάποια σειρά για κάθε παραγόμενο όχημα. Μόλις ενσωματωθεί η μηχανή σε ένα αυτοκίνητο, το τελευταίο αφήνει το στάδιο αυτό για να περάσει στο στάδιο της «επένδυσης». Την ίδια στιγμή ένα καινούργιο όχημα εισέρχεται στο πρώτο στάδιο της «μηχανής». Τα δύο στάδια εκτελούνται παράλληλα από διαφορετικά στάδια της αλυσίδας για διαφορετικά αυτοκίνητα. Αν θέλαμε να φτιάξουμε τρια αυτοκίνητα και η σωλήνωση δεν ξεκινούσε να δουλεύει σε νέο αυτοκίνητο μέχρι να τελειώσει το παλιό, θα χρειαζόμασταν 105 λεπτά. Εκμεταλλευόμενοι όμως τη δυνατότητα που μας παρέχεται για παραλληλη λειτουργία των στάδιων της σωλήνωσης θα χρειαζόμασταν μόνο 75 λεπτά. Η διαδικασίας της σωλήνωσης δεν μειώνει τον χρόνο κάθε στάδιου ξεχωριστά, αυξάνει μόνο τη ρυθμαπόδοση του συστήματος όταν αυτό επεξεργάζεται ένα συνεχόμενο ρεύμα από δεδομένα. Ένα υπολογιστικό σύστημα που χρησιμοποιεί σωλήνωση χρειάζεται περισσότερους πόρους (ηλεκτρικά κυκλώματα, μονάδες επεξεργασίας, μνήμη κτλ) σε σχέση με ένα άλλο που θα επεξεργαζόταν μια μονάδα εισόδου τη φορά. Επίσης η σωλήνωση μπορεί να αυξήσει τον χρόνο που απαιτείται για την εκτέλεση μιας εντολής. Ένα σημείο κλειδί στη σχεδίαση μιας σωλήνωσης είναι η εξισσορόπηση των επιμέρους σταδίων. Χρησιμοποιώντας το παράδειγμα της γραμμής παραγωγής, θα είχαμε μεγαλύτερη εξοικονόμηση χρόνου αν το στάδιο της μηχανής και των τροχών διαρκούσε 15 λεπτα. Παρόλο που ο χρόνος αδράνειας θα ήταν πάλι 35 λεπτά, θα μπορούσαμε να παίρνουμε ένα αυτοκίνητο κάθε 15 λεπτά. Ένα ακόμα σχεδιαστικό στοιχείο είναι η πρόληψη για επαρκή ενδιάμεσο χώρο αποθήκευσης ανάμεσα στα στάδια της σωλήνωσης, ιδιαίτερα όταν οι χρόνοι επεξεργασίας των σταδίων είναι ακανόνιστοι, ή όταν μονάδες δεδομένων που διατρέχουν τη σωλήνωση ενδέχεται να καταστραφούν ή να δημιουργηθούν. παραλληλισμός (υπολογιστές) αρχιτεκτονική υπολογιστών διαμεταγωγή χρόνος αδράνειας