Pipelining: Αρχιτεκτονική, Πλεονεκτήματα & Μειονεκτήματα

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Η αύξηση της ταχύτητας εκτέλεσης του προγράμματος αυξάνει κατά συνέπεια την ταχύτητα του ο επεξεργαστής. Υπάρχουν πολλοί τρόποι που εφευρέθηκαν, τόσο η υλοποίηση υλικού όσο και η αρχιτεκτονική λογισμικού, για την αύξηση της ταχύτητας εκτέλεσης. Παρατηρήθηκε ότι με την εκτέλεση οδηγιών ταυτόχρονα, ο χρόνος που απαιτείται για την εκτέλεση μπορεί να μειωθεί. Η έννοια του παραλληλισμού στο προγραμματισμός προτάθηκε. Σύμφωνα με αυτό, περισσότερες από μία οδηγίες μπορούν να εκτελεστούν ανά κύκλο ρολογιού. Αυτή η ιδέα μπορεί να εφαρμοστεί από έναν προγραμματιστή μέσω διαφόρων τεχνικών όπως Pipelining, πολλαπλές μονάδες εκτέλεσης και πολλαπλοί πυρήνες . Μεταξύ όλων αυτών των μεθόδων παραλληλισμού, η χρήση σωληνώσεων γίνεται πιο συχνά. Λοιπόν, πώς μια εντολή μπορεί να εκτελεστεί με τη μέθοδο σωληνώσεων; Πώς αυξάνει την ταχύτητα εκτέλεσης;

Τι είναι το Pipelining;

Για να κατανοήσουμε την ιδέα του pipelining ας δούμε το ριζικό επίπεδο του τρόπου εκτέλεσης του προγράμματος. Το Instruction είναι το μικρότερο πακέτο εκτέλεσης ενός προγράμματος. Κάθε οδηγία περιέχει μία ή περισσότερες λειτουργίες. Οι απλοί κλιματικοί επεξεργαστές εκτελούν μία ή περισσότερες οδηγίες ανά κύκλο ρολογιού, με κάθε εντολή να περιέχει μόνο μία λειτουργία. Οι οδηγίες εκτελούνται ως μια ακολουθία φάσεων, για την παραγωγή των αναμενόμενων αποτελεσμάτων. Αυτή η ακολουθία δίνεται παρακάτω




Ακολουθία εκτέλεσης οδηγιών

Ακολουθία εκτέλεσης οδηγιών

  • IF: Μεταφέρει την εντολή στο μητρώο οδηγιών.
  • Αναγνωριστικό: Instruction Decode, αποκωδικοποιεί την εντολή για τον κώδικα.
  • AG: Διεύθυνση διεύθυνσης, δημιουργεί τη διεύθυνση.
  • DF: Data Fetch, μεταφέρει τους τελεστές στον καταχωρητή δεδομένων.
  • ΛΗΞΗ: Εκτέλεση, εκτελεί την καθορισμένη λειτουργία.
  • WB: Γράψε πίσω, γράφει πίσω το αποτέλεσμα στο το μητρώο.

Δεν απαιτούν όλες οι παραπάνω οδηγίες όλα τα παραπάνω βήματα, αλλά τα περισσότερα. Αυτά τα βήματα χρησιμοποιούν διαφορετικές λειτουργίες υλικού. Κατά τη σωληνώσεις αυτές οι διαφορετικές φάσεις εκτελούνται ταυτόχρονα. Κατά τη διοχέτευση μέσω αγωγών αυτές οι φάσεις θεωρούνται ανεξάρτητες μεταξύ διαφορετικών λειτουργιών και μπορούν να αλληλεπικαλύπτονται. Έτσι, πολλαπλές λειτουργίες μπορούν να εκτελεστούν ταυτόχρονα με κάθε λειτουργία να βρίσκεται στη δική της ανεξάρτητη φάση.



Οδηγίες για σωληνώσεις

Ας δούμε τον τρόπο επεξεργασίας των οδηγιών σε σωληνώσεις. Αυτό γίνεται εύκολα κατανοητό από το παρακάτω διάγραμμα.

Οδηγίες για σωληνώσεις

Οδηγίες για σωληνώσεις

Ας υποθέσουμε ότι οι οδηγίες είναι ανεξάρτητες. Σε έναν απλό επεξεργαστή σωληνώσεων, σε μια δεδομένη στιγμή, υπάρχει μόνο μία λειτουργία σε κάθε φάση. Η αρχική φάση είναι η φάση IF. Έτσι, στον πρώτο κύκλο ρολογιού, πραγματοποιείται μία λειτουργία. Όταν φτάσει ο επόμενος παλμός ρολογιού, η πρώτη λειτουργία πηγαίνει στη φάση ID αφήνοντας κενή τη φάση IF. Τώρα, αυτή η κενή φάση κατανέμεται στην επόμενη λειτουργία. Έτσι, κατά τη διάρκεια του δεύτερου παλμού ρολογιού η πρώτη λειτουργία βρίσκεται στη φάση ID και η δεύτερη λειτουργία βρίσκεται στη φάση IF.

Για τον τρίτο κύκλο, η πρώτη λειτουργία θα είναι σε φάση AG, η δεύτερη λειτουργία θα είναι στη φάση ID και η τρίτη λειτουργία θα είναι στη φάση IF. Με αυτόν τον τρόπο, οι οδηγίες εκτελούνται ταυτόχρονα και μετά από έξι κύκλους ο επεξεργαστής θα παράγει μια εντελώς εκτελεσμένη εντολή ανά κύκλο ρολογιού.


Έχει εκτελεστεί διαδοχικά αυτή η εντολή, αρχικά η πρώτη εντολή πρέπει να περάσει από όλες τις φάσεις και στη συνέχεια θα ανακτηθεί η επόμενη οδηγία; Έτσι, για την εκτέλεση κάθε εντολής, ο επεξεργαστής θα απαιτούσε έξι κύκλους ρολογιού. Όμως, σε έναν επεξεργαστή μέσω pipelined καθώς η εκτέλεση των οδηγιών πραγματοποιείται ταυτόχρονα, μόνο η αρχική εντολή απαιτεί έξι κύκλους και όλες οι υπόλοιπες οδηγίες εκτελούνται ως μία ανά κάθε κύκλο μειώνοντας έτσι το χρόνο εκτέλεσης και αυξάνοντας την ταχύτητα του επεξεργαστή.

Αρχιτεκτονική σωληνώσεων

Ο παραλληλισμός μπορεί να επιτευχθεί με τεχνικές υλικού, μεταγλωττιστή και λογισμικού. Να εκμεταλλευτεί την έννοια της σωληνώσεως στο αρχιτεκτονική υπολογιστών πολλές μονάδες επεξεργαστών διασυνδέονται και λειτουργούν ταυτόχρονα. Στην αρχιτεκτονική επεξεργαστή με αγωγούς, υπάρχουν ξεχωριστές μονάδες επεξεργασίας που παρέχονται για ακέραιους και οδηγούς κινητής υποδιαστολής. Ενώ στη διαδοχική αρχιτεκτονική, παρέχεται μία μόνο λειτουργική μονάδα.

Μονάδα επεξεργαστή με σωληνώσεις

Μονάδα επεξεργαστή με σωληνώσεις

Στο στατικό αγωγό, ο επεξεργαστής πρέπει να περάσει την οδηγία σε όλες τις φάσεις του αγωγού ανεξάρτητα από την απαίτηση της εντολής. Σε έναν δυναμικό επεξεργαστή αγωγών, μια εντολή μπορεί να παρακάμψει τις φάσεις ανάλογα με την απαίτησή της, αλλά πρέπει να κινηθεί σε διαδοχική σειρά. Σε έναν σύνθετο δυναμικό επεξεργαστή αγωγών, η εντολή μπορεί να παρακάμψει τις φάσεις καθώς και να επιλέξει τις φάσεις εκτός τάξης.

Pipelining σε RISC επεξεργαστές

Ο πιο δημοφιλής Αρχιτεκτονική RISC Ο επεξεργαστής ARM ακολουθεί τις σωληνώσεις 3 σταδίων και 5 σταδίων. Σε pipelining 3 σταδίων τα στάδια είναι: Fetch, Decode και Execute. Αυτό το pipelining έχει καθυστέρηση 3 κύκλων, καθώς μια μεμονωμένη οδηγία διαρκεί 3 κύκλους ρολογιού για να ολοκληρωθεί.

ARM 3 στάδιο Pipelining

ARM 3 στάδιο Pipelining

Για τη σωστή εφαρμογή του αγωγού θα πρέπει επίσης να αναβαθμιστεί η αρχιτεκτονική του υλικού. Το υλικό για αγωγούς 3 βαθμίδων περιλαμβάνει τράπεζα μητρώου, ALU, Barrel shifter, Generator address, incrementer, Instruction decoder και data register.

ARM 3 Stage Pipelining Datapath

ARM 3 Stage Pipelining Datapath

Σε 5 στάδια pipelining τα στάδια είναι: Fetch, Decode, Execute, Buffer / data και Write back.

Κίνδυνοι σωληνώσεων

Σε ένα τυπικό πρόγραμμα υπολογιστή εκτός από απλές οδηγίες, υπάρχουν οδηγίες διακλάδωσης, λειτουργίες διακοπής, οδηγίες ανάγνωσης και εγγραφής. Το Pipelining δεν είναι κατάλληλο για όλες τις οδηγίες. Όταν εκτελούνται ορισμένες οδηγίες σε σωληνώσεις μπορούν να σταματήσουν τον αγωγό ή να τον ξεπλύνουν τελείως. Αυτός ο τύπος προβλημάτων που προκαλούνται κατά τη διάρκεια του αγωγού ονομάζεται Pipelining Hazards.

Στα περισσότερα από τα προγράμματα υπολογιστών, το αποτέλεσμα μιας εντολής χρησιμοποιείται ως χειριστής από την άλλη οδηγία. Όταν αυτές οι οδηγίες εκτελούνται σε σωληνώσεις, προκύπτει διακοπή καθώς το αποτέλεσμα της πρώτης εντολής δεν είναι διαθέσιμο όταν η εντολή δύο αρχίζει να συλλέγει τελεστές. Έτσι, η εντολή δύο πρέπει να σταματήσει μέχρι να εκτελεστεί η εντολή και να δημιουργηθεί το αποτέλεσμα. Αυτός ο τύπος κινδύνου ονομάζεται κίνδυνος ανάγνωσης σωληνώσεων ανάγνωσης.

Διαβάστε μετά την εγγραφή κινδύνου Pipelining

Διαβάστε μετά την εγγραφή κινδύνου Pipelining

Η εκτέλεση οδηγιών διακλάδωσης προκαλεί επίσης κίνδυνο αγωγού. Οδηγίες υποκαταστήματος κατά την εκτέλεση σε σωληνώσεις επηρεάζει τα στάδια ανάκτησης των επόμενων οδηγιών.

Συμπεριφορά υποκαταστημάτων μέσω σωληνώσεων

Συμπεριφορά υποκαταστημάτων μέσω σωληνώσεων

Πλεονεκτήματα του Pipelining

  • Η απόδοση οδηγιών αυξάνεται.
  • Η αύξηση του αριθμού των σταδίων αγωγού αυξάνει τον αριθμό των οδηγιών που εκτελούνται ταυτόχρονα.
  • Ταχύτερη ALU μπορεί να σχεδιαστεί όταν χρησιμοποιείται αγωγός.
  • Η Pipelined CPU λειτουργεί σε υψηλότερες συχνότητες ρολογιού από τη μνήμη RAM.
  • Το Pipelining αυξάνει τη συνολική απόδοση της CPU.

Μειονεκτήματα του Pipelining

  • Ο σχεδιασμός του επεξεργαστή με σωλήνωση είναι περίπλοκος.
  • Η καθυστέρηση οδηγιών αυξάνεται σε επεξεργαστές με σωληνώσεις.
  • Είναι δύσκολο να προβλεφθεί η απόδοση ενός επεξεργαστή με σωληνώσεις.
  • Όσο μακρύτερος είναι ο αγωγός, τόσο χειρότερο είναι το πρόβλημα κινδύνου για οδηγίες διακλάδωσης.

Το Pipelining ωφελεί όλες τις οδηγίες που ακολουθούν μια παρόμοια σειρά βημάτων για την εκτέλεση. Οι επεξεργαστές που έχουν σύνθετες οδηγίες όπου κάθε εντολή συμπεριφέρεται διαφορετικά από την άλλη είναι δύσκολο να ολοκληρωθεί. Οι επεξεργαστές έχουν εύλογα εργαλεία με 3 ή 5 στάδια του αγωγού, καθώς καθώς αυξάνεται το βάθος του αγωγού, αυξάνεται ο κίνδυνος που σχετίζεται με αυτόν. Ονομάστε μερικούς από τους επεξεργαστές με σωληνώσεις με το στάδιο του αγωγού τους;