GR20180200009U - Μια διαταξη εκτελεσης ομαδων νηματων - Google Patents

Μια διαταξη εκτελεσης ομαδων νηματων Download PDF

Info

Publication number
GR20180200009U
GR20180200009U GR20180200009U GR20180200009U GR20180200009U GR 20180200009 U GR20180200009 U GR 20180200009U GR 20180200009 U GR20180200009 U GR 20180200009U GR 20180200009 U GR20180200009 U GR 20180200009U GR 20180200009 U GR20180200009 U GR 20180200009U
Authority
GR
Greece
Prior art keywords
program counter
thread
threads
group
counter control
Prior art date
Application number
GR20180200009U
Other languages
English (en)
Inventor
Isidoros Sideris
Eugenia Cordero-Crespo
Amir KLEEN
Original Assignee
Arm Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arm Limited filed Critical Arm Limited
Priority to GR20180200009U priority Critical patent/GR20180200009U/el
Publication of GR20180200009U publication Critical patent/GR20180200009U/el

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)

Abstract

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

Description

ΜΙΑ ΔΙΑΤΑΞΗ ΚΑΙ ΜΙΑ ΜΕΘΟΔΟΣ ΕΚΤΕΛΕΣΗΣ ΟΜΑΔΩΝ ΝΗΜΑΤΩΝ
ΥΠΟΒΑΘΡΟ
Η παρούσα τεχνική σχετίζεται με μια διάταξη και μια μέθοδο για την εκτέλεση ομάδων νημάτων, όπου κάθε ομάδα νημάτων περιλαμβάνει πολλαπλά νήματα.
Είναι γνωστή η διάταξη για τα νήματα εντός μιας συγκεκριμένης ομάδας νημάτων για την εκτέλεση των ίδιων εντολών, συνήθως σε σχέση με διαφορετικά δεδομένα. Σε ένα τέτοιο σύστημα, όταν επιλέγεται μια συγκεκριμένη ομάδα νημάτων για έκδοση σε ένα κύκλωμα επεξεργασίας νημάτων, οι εντολές τις οποίες πρέπει να εκτελέσει κάθε ένα από τα νήματα εντός της ομάδας νημάτων, μπορούν να προσκομίζονται σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος, ο οποίος χρησιμοποιείται από κοινού ανάμεσα στα νήματα. Συχνά, όταν τα νήματα μιας ομάδας νημάτων διατάσσονται για την εκτέλεση εντολών με τον παραπάνω τρόπο, το κύκλωμα επεξεργασίας νημάτων αναφέρεται ότι υιοθετεί ένα μοντέλο εκτέλεσης Μονής Εντολής Πολλαπλών Νημάτων (Single Instruction Multiple Thread ή SIMT).
Κατά την εκτέλεση επεξεργασίας SIMT, είναι δυνατόν ο απαριθμητής προγράμματος που σχετίζεται με κάθε ένα από τα νήματα να αποκλίνει όταν αυτά τα νήματα εκτελούν μια εντολή κλάδου, λόγω ότι για παράδειγμα ορισμένα από τα νήματα ακολουθούν τον κλάδο ενώ άλλα όχι. Σε συστήματα SIMT, είναι γνωστή η παροχή ενός μηχανισμού ανίχνευσης κάθε τέτοιας απόκλισης και στη συνέχεια η δυνατότητα περιορισμού της επακόλουθης επεξεργασίας των νημάτων σε ένα συγκεκριμένο υποσύνολο των νημάτων μέχρι να επιτευχθεί ένα τέτοιο σημείο, στο οποίο ανιχνεύεται ότι τα νήματα επανασυγκλίνουν. Όσο αυξάνει ο αριθμός των νημάτων που εκτελούν μαζί την ίδια εντολή, οι μηχανισμοί απόκλισης και επανασύγκλισης των νημάτων γίνονται όλο και πιο περίπλοκοι, ενώ γίνονται και πολύ ακριβοί όσον αφορά το εμβαδόν κυκλώματος που απαιτείται για την υποστήριξη αυτής της λειτουργίας. Περαιτέρω, μπορεί να επιφέρουν επιπτώσεις στην απόδοση, εφόσον είναι συνηθισμένο στα γνωστά συστήματα η απαίτηση από το μηχανισμό απόκλιση ς/επανασύγκλισης να ολοκληρώνει τους ελέγχους του προτού να είναι δυνατή η συνέχεια της εκτέλεσης από το κύκλωμα επεξεργασιας νηματων
Ανάλογα, θα ήταν επιθυμητή η παροχή ενός βελτιωμένου μηχανισμού για την αντιμετώπιση της απόκλισης και της επανασύγκλισης των νημάτων εντός ενός τέτοιου συστήματος επεξεργασίας δεδομένων.
ΠΕΡΙΛΗΨΗ
Σε ένα παράδειγμα διαμόρφωσης, παρέχεται μια διάταξη η οποία περιλαμβάνει: ένα κύκλωμα χρονοπρογραμματισμού που επιλέγει για εκτέλεση μια πρώτη ομάδα νημάτων από ένα πλήθος ομάδων νημάτων, ένα κύκλωμα επεξεργασίας νημάτων, το οποίο αποκρίνεται στο κύκλωμα χρονοπρογραμματισμού, που εκτελεί τα ενεργά νήματα της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος ο οποίος χρησιμοποιείται από κοινού από τα ενεργά νήματα, με το κύκλωμα επεξεργασίας νημάτων να αποκρίνεται σε ένα συμβάν εξόδου που συμβαίνει στην πρώτη ομάδα νημάτων, ώστε να προσδιορίζει κατά πόσο υφίσταται μια κατάσταση ελέγχου απαριθμητή προγράμματος, με το κύκλωμα επεξεργασίας νημάτων να διαθέτει αποθηκευτικό χώρο καταχωρητών για την αποθήκευση πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων και ένα κύκλωμα ελέγχου του απαριθμητή προγράμματος το οποίο έχει πρόσβαση στον εν λόγω αποθηκευτικό χώρο καταχωρητών και σε παρουσία της εν λόγω κατάστασης ελέγχου του απαριθμητή προγράμματος, για την πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος που ενημερώνει τον κοινό απαριθμητή προγράμματος και μια ένδειξη ενεργού νήματος για την πρώτη ομάδα νημάτων, με το κύκλωμα χρονοπρογραμματισμού να διατάσσεται ώστε να επιλέγει, για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, μια δεύτερη ομάδα νημάτων από το εν λόγω πλήθος ομάδων νημάτων διαφορετική της εν λόγω πρώτης ομάδας νημάτων, αναμένοντας ταυτόχρονα την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος από το κύκλωμα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
Σε ένα άλλο παράδειγμα διαμόρφωσης, παρέχεται μια μέθοδος εκτέλεσης ομάδων νημάτων σε μια διάταξη που διαθέτει ένα κύκλωμα χρονοπρογραμματισμού για την επιλογή για εκτέλεση μιας πρώτης ομάδας νημάτων από ένα πλήθος ομάδων νημάτων και ένα κύκλωμα επεξεργασίας νημάτων, το οποίο αποκρίνεται στο κύκλωμα χρονοπρογραμματισμού, για την εκτέλεση των ενεργών νημάτων της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος ο οποίος χρησιμοποιείται από κοινού από τα ενεργά νήματα, με τη μέθοδο να περιλαμβάνει τα εξής: τον προσδιορισμό, σε απόκριση ενός συμβάντος εξόδου από το κύκλωμα επεξεργασίας νημάτων το οποίο συμβαίνει στην πρώτη ομάδα νημάτων, κατά πόσο υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος, την παροχή στο κύκλωμα επεξεργασίας νημάτων αποθηκευτικού χώρου καταχωρητών για την αποθήκευση πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων, τη χρήση ενός κυκλώματος ελέγχου του απαριθμητή προγράμματος, το οποίο στην παρουσία της εν λόγω κατάστασης ελέγχου του απαριθμητή προγράμματος, πραγματοποιεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος για την ενημέρωση του κοινού απαριθμητή προγράμματος και μιας ένδειξης ενεργού νήματος για την πρώτη ομάδα νημάτων, με το κύκλωμα ελέγχου του απαριθμητή προγράμματος να έχει πρόσβαση στον εν λόγω αποθηκευτικό χώρο καταχωρητών κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος και τον εξαναγκασμό του κυκλώματος χρονοπρογραμματισμού να επιλέγει, για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, μια δεύτερη ομάδα νημάτων από το εν λόγω πλήθος ομάδων νημάτων διαφορετική από την εν λόγω πρώτη ομάδα νημάτων, αναμένοντας ταυτόχρονα την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος από το κύκλωμα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
Σε ένα περαιτέρω παράδειγμα διαμόρφωσης, παρέχεται μια διάταξη η οποία περιλαμβάνει: μέσα χρονοπρογραμματισμού για την επιλογή για εκτέλεση μιας πρώτης ομάδας νημάτων από ένα πλήθος ομάδων νημάτων, μέσα επεξεργασίας νημάτων για την εκτέλεση, σε απόκριση των μέσων χρονοπρογραμματισμού, των ενεργών νημάτων της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος ανάμεσα στα ενεργά νήματα, με τα μέσα επεξεργασίας νημάτων να προσδιορίζουν, σε απόκριση ενός συμβάντος εξόδου που συμβαίνει για την πρώτη ομάδα νημάτων, κατά πόσο υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος, με τα μέσα επεξεργασίας νημάτων να έχουν αποθηκευτικά μέσα καταχωρητών για την αποθήκευση πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων και μέσα ελέγχου του απαριθμητή προγράμματος που έχουν πρόσβαση στα εν λόγω αποθηκευτικά μέσα καταχωρητών και, με την παρουσία της εν λόγω κατάστασης ελέγχου του απαριθμητή προγράμματος, για την πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος για την ενημέρωση του κοινού απαριθμητή προγράμματος και μιας ένδειξης ενεργού νήματος για την πρώτη ομάδα νημάτων, με τα μέσα χρονοπρογραμματισμού για την επιλογή, για εκτέλεση από τα μέσα επεξεργασίας νημάτων, μιας δεύτερης ομάδας νημάτων από το εν λόγω πλήθος ομάδων νημάτων διαφορετικής από την εν λόγω πρώτη ομάδα νημάτων, αναμένοντας ταυτόχρονα την πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος από τα μέσα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
ΣΥΝΤΟΜΗ ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΣΧΕΔΙΑΓΡΑΜΜΑΤΩΝ
Η παρούσα τεχνική θα περιγράφει περαιτέρω, μόνο μέσω παραδείγματος, αναφορικά με τις υλοποιήσεις αυτής όπως απεικονίζεται στα συνοδευτικά σχεδιαγράμματα, στα οποία:
Το Σχήμα 1 είναι ένα διάγραμμα βαθμιδών μιας διάταξης σύμφωνα με μια υλοποίηση,
Το Σχήμα 2 απεικονίζει τον τρόπο με τον οποίο μπορεί το αρχείο καταχωρητών να οργανώνεται σύμφωνα με μια υλοποίηση,
Το Σχήμα 3 είναι ένα διάγραμμα βαθμιδών το οποίο απεικονίζει τα βήματα που πραγματοποιούνται από τον ανιχνευτή της κατάστασης ελέγχου του Σχήματος 1 σύμφωνα με μια υλοποίηση,
Το Σχήμα 4 είναι ένα διάγραμμα ροής το οποίο απεικονίζει τα βήματα που πραγματοποιούνται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος του Σχήματος 1 σύμφωνα με μια υλοποίηση,
Το Σχήμα 5 είναι ένας πίνακας ο οποίος απεικονίζει τον τρόπο, σε μια υλοποίηση, λήψης μιας απόφασης κατά πόσο απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος, σε εξάρτηση από τον τύπο ενός συμβάντος εξόδου και την τρέχουσα κατάσταση μιας σημαίας απόκλισης,
Το Σχήμα 6 απεικονίζει ένα παράδειγμα ακολουθίας των σταδίων που πραγματοποιούνται σε σχέση με μια συγκεκριμένη ομάδα νημάτων κατά την υιοθέτηση της προσέγγισης των υλοποιήσεων που περιγράφηκαν,
Τα Σχήματα 7 Α και 7Β απεικονίζουν τον τρόπο με τον οποίο το κύκλωμα ελέγχου του απαριθμητή προγράμματος του Σχήματος 1 μπορεί να κατασκευάζεται σύμφωνα με δύο διαφορετικές υλοποιήσεις, και
Το Σχήμα 8 είναι ένα διάγραμμα ροής το οποίο απεικονίζει σχηματικά μια εναλλακτική υλοποίηση όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος του Σχήματος 1 κάνει εγγραφή στους πρόσθετους καταχωρητές του αρχείου καταχωρητών και όχι το κύκλωμα επεξεργασίας νημάτων.
ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΥΛΟΠΟΙΗΣΕΩΝ
Προτού εξεταστούν οι υλοποιήσεις αναφορικά με τα συνοδευτικά σχεδιαγράμματα, παρέχεται η ακόλουθη περιγραφή των υλοποιήσεων.
Σε μια υλοποίηση, παρέχεται μια διάταξη η οποία έχει ένα κύκλωμα χρονοπρογραμματισμού για την επιλογή, ανάμεσα σε ένα πλήθος ομάδων νημάτων, μιας ομάδας νημάτων η οποία είναι επόμενη προς εκτέλεση. Για την ακόλουθη εξέταση, αυτή η επιλεγμένη ομάδα νημάτων θα αναφέρεται ως μια πρώτη ομάδα νημάτων. Η διάταξη περιλαμβάνει ένα κύκλωμα επεξεργασίας νημάτων, το οποίο αποκρίνεται στο κύκλωμα χρονοπρογραμματισμού για την εκτέλεση των ενεργών νημάτων της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος ο οποίος χρησιμοποιείται από κοινού από τα ενεργά νήματα. Μολονότι σε ορισμένες περιπτώσεις όλα τα νήματα της ομάδας νημάτων μπορεί να είναι ενεργά, ώστε κάθε νήμα να εκτελείται όταν αυτή η ομάδα νημάτων εκδίδεται στο κύκλωμα επεξεργασίας νημάτων, ορισμένες χρονικές στιγμές μόνο ένα υποσύνολο των νημάτων θα είναι πράγματι ενεργά νήματα, ενώ οι πληροφορίες μπορούν να διατηρούνται ώστε να προσδιορίζεται οποιαδήποτε χρονική στιγμή ποια είναι τα ενεργά νήματα κάθε ομάδας νημάτων.
Σε κάποιο σημείο κατά την εκτέλεση της πρώτης ομάδας νημάτων, θα συμβεί ένα συμβάν εξόδου, και σε αυτό το σημείο το κύκλωμα επεξεργασίας νημάτων διατάσσεται ώστε να προσδιορίζει κατά πόσο υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος. Η διάταξη περαιτέρω περιλαμβάνει ένα κύκλωμα ελέγχου του απαριθμητή προγράμματος το οποίο, όταν προσδιοριστεί ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος, μπορεί να διεγείρεται ώστε να πραγματοποιεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος για την ενημέρωση του κοινού απαριθμητή προγράμματος και μια ένδειξη ενεργών νημάτων για την πρώτη ομάδα νημάτων. Κατά τη διάρκεια αυτής της διαδικασίας, η λειτουργία ελέγχου του απαριθμητή προγράμματος μπορεί να απαιτεί πρόσβαση σε πληροφορίες του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων. Στις υλοποιήσεις που περιγράφηκαν, αυτές οι πληροφορίες διατηρούνται με έναν πολύ αποδοτικό ως προς το εμβαδόν τρόπο παρέχοντας στο κύκλωμα επεξεργασίας νημάτων έναν αποθηκευτικό χώρο καταχωρητών στον οποίο μπορούν να αποθηκεύονται οι πληροφορίες του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων, με το κύκλωμα ελέγχου του απαριθμητή προγράμματος να διατάσσεται ώστε να έχει πρόσβαση σε αυτό τον αποθηκευτικό χώρο καταχωρητών.
Περαιτέρω, εφόσον το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να έχει πρόσβαση στον αποθηκευτικό χώρο καταχωρητών για τις πληροφορίες που απαιτεί για την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος, δεν είναι απαραίτητο το κύκλωμα επεξεργασίας νημάτων να παραμένει ανενεργό ενώ το κύκλωμα ελέγχου του απαριθμητή προγράμματος πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος. Αντίθετα, σύμφωνα με τις υλοποιήσεις που περιγράφηκαν, το κύκλωμα χρονοπρογραμματισμού μπορεί να διατάσσεται ώστε να επιλέγει, για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, μια διαφορετική ομάδα νημάτων (αναφέρεται στο παρόν ως δεύτερη ομάδα νημάτων) από το πλήθος ομάδων νημάτων, αναμένοντας ταυτόχρονα την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος από το κύκλωμα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων. Με μια τέτοια προσέγγιση, η λειτουργία του κυκλώματος ελέγχου του απαριθμητή προγράμματος τοποθετείται εκτός της κρίσιμης διαδρομής, επιτρέποντας με αυτό τον τρόπο τη χρήση του κυκλώματος επεξεργασίας νημάτων για την πραγματοποίηση εμπρόσθιας προόδου όσον αφορά στην επεξεργασία άλλων ομάδων νημάτων ενώ το κύκλωμα ελέγχου του απαριθμητή προγράμματος πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
Μια τέτοια προσέγγιση έχει βρεθεί ότι παρέχει έναν ιδιαίτερα αποδοτικό ως προς το εμβαδόν μηχανισμό για την πραγματοποίηση των λειτουργιών ελέγχου του απαριθμητή προγράμματος που απαιτούνται για την ανίχνευση αποκλίσεων και/ή συγκλίσεων νημάτων εντός μιας ομάδας νημάτων, ενώ είναι επίσης πολύ αποδοτικός όσον αφορά στην απόδοση και στην κατανάλωση ισχύος. Συγκεκριμένα, χρησιμοποιώντας τον αποθηκευτικό χώρο καταχωρητών για τη διατήρηση των πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα (όπως θα εξεταστεί αργότερα, σε μια υλοποίηση ο αποθηκευτικός χώρος καταχωρητών μπορεί να είναι τμήμα ενός κοινού αποθηκευτικού χώρου καταχωρητών ο οποίος παρέχει και τους δύο καταχωρητές λειτουργίας για χρήση ως τελεστές προέλευσης και προορισμού και επιπλέον καταχωρητές για τη συγκράτηση των πληροφοριών του απαριθμητή προγράμματος), αυτό μπορεί να μειώσει σημαντικά το εμβαδόν που απαιτείται σε σύγκριση με μηχανισμούς οι οποίοι χρησιμοποιούν δομές αποθήκευσης μνήμης τυχαίας προσπέλασης (random access memory ή RAM) ή άλλες παρόμοιες για τη διατήρηση αυτών των πληροφοριών. Περαιτέρω, μια τέτοια προσέγγιση επιτρέπει στο κύκλωμα επεξεργασίας νημάτων την έξοδο και την έκδοση με χρήσιμο έργο για εκτέλεση για μια διαφορετική ομάδα νημάτων, ενώ το κύκλωμα ελέγχου του απαριθμητή προγράμματος πραγματοποιεί στη συνέχεια τη λειτουργία ελέγχου του απαριθμητή προγράμματος εκτός της κρίσιμης διαδρομής. Εφόσον το κύκλωμα ελέγχου του απαριθμητή προγράμματος είναι εκτός της κρίσιμης διαδρομής, ο χρόνος που απαιτείται για την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος δεν επηρεάζει την απόδοση της διάταξης, υποθέτοντας ότι στο ενδιάμεσο υπάρχει χρήσιμο έργο να πραγματοποιηθεί όσον αφορά στις άλλες ομάδες νημάτων. Αυτό μπορεί να δημιουργεί μεγάλη ευελιξία στον τρόπο με τον οποίο κατασκευάζεται το κύκλωμα ελέγχου του απαριθμητή προγράμματος.
Ο αποθηκευτικός χώρος καταχωρητών μπορεί να παίρνει ένα πλήθος μορφών, όμως σε μια υλοποίηση περιλαμβάνει τουλάχιστον έναν καταχωρητή για κάθε ομάδα νημάτων στο εν λόγω πλήθος ομάδων νημάτων, ώστε να κάνει δυνατή τη διατήρηση των πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα για κάθε μια από το πλήθος ομάδων νημάτων. Συνεπώς, σε κάθε ομάδα νημάτων μπορεί να εκχωρούνται ένας ή περισσότεροι αποκλειστικοί καταχωρητές εντός του αποθηκευτικού χώρου καταχωρητών για την αποθήκευση των σχετικών πληροφοριών του απαριθμητή προγράμματος, επιτρέποντας τη διατήρηση των πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα κάθε μιας από τις προς διατήρηση ομάδες νημάτων και συνεπώς επιτρέποντας στο κύκλωμα ελέγχου του απαριθμητή προγράμματος να πραγματοποιεί λειτουργίες ελέγχου του απαριθμητή προγράμματος όσον αφορά σε οποιαδήποτε ομάδα νημάτων, μέσω πρόσβασης στον(ους) κατάλληλο(ους) καταχωρητή(ές) εντός του αποθηκευτικού χώρου καταχωρητών.
Η διάταξη συνήθως θα περιλαμβάνει ένα αρχείο καταχωρητών το οποίο περιλαμβάνει ένα πλήθος καταχωρητών οι οποίοι μπορεί να προσδιορίζονται από τις εντολές που εκτελούνται για κάθε νήμα. Τέτοιοι καταχωρητές συχνά αναφέρονται ως αρχιτεκτονικοί καταχωρητές, εφόσον είναι ορατοί στον προγραμματιστή, και μπορούν να προσδιορίζονται ως καταχωρητές προέλευσης ή προορισμού για εντολές. Σε μια υλοποίηση, ο αποθηκευτικός χώρος καταχωρητών παρέχεται επεκτείνοντας το αρχείο καταχωρητών ώστε να συμπεριλάβει έναν αριθμό επιπλέον καταχωρητών οι οποίοι δεν μπορούν να προσδιοριστούν από τις εντολές. Συνεπώς, αυτοί οι επιπλέον καταχωρητές δεν είναι ορατοί στο μοντέλο προγραμματιστή και δεν μπορούν να προσδιορίζονται ως καταχωρητές προέλευσης ή προορισμού από τις εντολές. Σε μια υλοποίηση, αντιμετωπίζονται ωστόσο ως υπονοούμενοι καταχωρητές προορισμού όταν εκτελούνται ορισμένες εντολές. Για παράδειγμα, όπως θα εξεταστεί λεπτομερέστερα αργότερα, όταν εκτελείται μια εντολή αλλαγής ροής εντολών (όπως μια εντολή κλάδου), ο(ι) κατάλληλος(οι) καταχωρητής(ές) για την τρέχουσα ομάδα νημάτων μπορεί(ούν) να ορίζεται(ονται) ως ένας προορισμός στον οποίο θα εγγράφονται οι υπολογισμένες τιμές του απαριθμητή προγράμματος, για κάθε νήμα, που προκύπτουν από την εκτέλεση αυτής της εντολής αλλαγής ροής εντολών.
Υπάρχει ένας αριθμός περιπτώσεων οι οποίες μπορούν να δημιουργήσουν το συμβάν εξόδου που προσδιορίζεται ότι υφίσταται. Σε μια υλοποίηση, το συμβάν εξόδου προσδιορίζεται ότι υφίσταται τουλάχιστον σε απόκριση της εκτέλεσης μιας εντολής αλλαγής ροής εντολών από τα ενεργά νήματα της πρώτης ομάδας νημάτων. Σε ένα παράδειγμα, όταν το κύκλωμα χρονοπρογραμματισμού επιλέγει μια ομάδα νημάτων προς έκδοση στο κύκλωμα εκτέλεσης, μια βαθμίδα εντολών μπορεί να ανακτάται από τη μνήμη ξεκινώντας με μια κοινή τιμή απαριθμητή προγράμματος, και εάν αυτή η βαθμίδα περιλαμβάνει μια εντολή αλλαγής ροής εντολών, αυτή η εντολή αλλαγής ροής εντολών μπορεί να αποτελέσει την τελική εντολή στη βαθμίδα. Ανάλογα, σε μια χρονική στιγμή κατά την οποία εκτελείται η εντολή αλλαγής ροής εντολών, αυτό υποδηλώνει ότι έχει εκτελεστεί η τελική εντολή της βαθμίδας και ανάλογα υφίσταται το συμβάν εξόδου.
Σε μια υλοποίηση, το κύκλωμα επεξεργασίας νημάτων αποκρίνεται στην εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών για την εγγραφή στον αποθηκευτικό χώρο καταχωρητών, για κάθε ενεργό νήμα, μιας τιμής του απαριθμητή προγράμματος που υπολογίζεται με την εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών. Εφόσον μια εντολή αλλαγής ροής εντολών συνήθως δεν προσδιορίζει έναν καταχωρητή προορισμού, η εσοχή εγγραφής της για το αρχείο καταχωρητών μπορεί να χρησιμοποιείται για την επανεγγραφή των υπολογισμένων τιμών του απαριθμητή προγράμματος στον(ους) κατάλληλο(ους) καταχωρητή(ές) του αποθηκευτικού χώρου καταχωρητών (όπως αναφέρθηκε νωρίτερα σε μια υλοποίηση αυτοί οι καταχωρητές είναι κρυφοί καταχωρητές εντός του αρχείου καταχωρητών οι οποίοι δεν μπορούν να προσδιορίζονται άμεσα από τις εντολές). Συνεπώς, η εγγραφή των τιμών του απαριθμητή προγράμματος στον αποθηκευτικό χώρο καταχωρητών σε αυτό το σημείο δεν έχει κάποια επίπτωση στην απόδοση, εφόσον κατά την εκτέλεση της εντολής αλλαγής ροής εντολών κανονικά δε θα υπήρχαν άλλα δεδομένα τα οποία πρέπει να εγγραφούν στο αρχείο καταχωρητών. Σε τέτοιες υλοποιήσεις στις οποίες η εκτέλεση της εντολής αλλαγής ροής εντολών προκαλεί την εγγραφή των υπολογισμένων τιμών του απαριθμητή προγράμματος στον αποθηκευτικό χώρο καταχωρητών, τότε στο κύκλωμα ελέγχου του απαριθμητή προγράμματος απλά πρέπει να δοθεί πρόσβαση ανάγνωσης στον αποθηκευτικό χώρο καταχωρητών κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος, ώστε να μπορεί να ανακτά τις απαιτούμενες πληροφορίες οι οποίες του επιτρέπουν να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος για την ομάδα νημάτων. Συγκεκριμένα, σε μια υλοποίηση δεν υπάρχει ανάγκη να δοθεί στο κύκλωμα ελέγχου του απαριθμητή προγράμματος ξεχωριστή πρόσβαση εγγραφής στον αποθηκευτικό χώρο καταχωρητών, συνεπώς αποφεύγοντας την ανάγκη παροχής μιας ξεχωριστής θύρας εγγραφής για το κύκλωμα ελέγχου του απαριθμητή προγράμματος.
Υπάρχει ένας αριθμός τρόπων με τους οποίους μπορεί να πραγματοποιείται η λειτουργία ελέγχου του απαριθμητή προγράμματος. Ωστόσο, σε μια υλοποίηση το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να διατάσσεται ώστε να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος αξιολογώντας τον απαριθμητή προγράμματος που σχετίζεται με κάθε νήμα χρησιμοποιώντας έναν ντετερμινιστικό κανόνα ταξινόμησης, για τον προσδιορισμό μιας επόμενης τιμής του απαριθμητή προγράμματος και μιας ένδειξης των νημάτων των οποίων ο απαριθμητής προγράμματος βρίσκεται στην επόμενη τιμή του απαριθμητή προγράμματος. Κατά την υλοποίηση του ντετερμινιστικού κανόνα ταξινόμησης, υπάρχει μεγάλη ευελιξία σχετικά με τον τρόπο κατασκευής του κυκλώματος ελέγχου του απαριθμητή προγράμματος, εφόσον όπως αναφέρθηκε νωρίτερα το κύκλωμα ελέγχου του απαριθμητή προγράμματος βρίσκεται εκτός της κρίσιμης διαδρομής και συνεπώς η απόδοση του κυκλώματος ελέγχου του απαριθμητή προγράμματος μπορεί να αντισταθμίζεται από το εμβαδόν που απαιτείται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος. Για παράδειγμα, το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να κατασκευάζεται ώστε να υιοθετεί μια από τις ακόλουθες υλοποιήσεις σε εξάρτηση από μια επιθυμητή απόδοση:
(ϊ) για την αξιολόγηση του απαριθμητή προγράμματος όλων των νημάτων της ομάδας νημάτων παράλληλα,
(ϊΐ) για την πραγματοποίηση μιας επαναλαμβανόμενης ακολουθίας βημάτων αξιολόγησης, όπου ένα διαφορετικό υποσύνολο των απαριθμητών προγράμματος αξιολογείται σε κάθε επανάληψη της επαναλαμβανόμενης ακολουθίας, ενώ ένα αποτέλεσμα της τελικής επανάληψης υποδηλώνει την επόμενη τιμή του απαριθμητή προγράμματος και τα νήματα των οποίων ο απαριθμητής προγράμματος βρίσκεται στην επόμενη τιμή του απαριθμητή προγράμματος.
Συγκεκριμένα, κανονίζοντας την παράλληλη πραγματοποίηση της αξιολόγησης, η απόδοση του κυκλώματος ελέγχου του απαριθμητή προγράμματος μπορεί να αυξάνεται, αλλά σε βάρος της απαίτησης ενός σχετικά μεγάλου εμβαδού για το κύκλωμα ελέγχου του απαριθμητή προγράμματος. Ωστόσο, εάν είναι επιθυμητή η παροχή μιας πιο αποτελεσματικής ως προς το εμβαδόν υλοποίησης, τότε το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να διευθετείται αντίθετα ώστε να πραγματοποιεί την επαναλαμβανόμενη ακολουθία βημάτων αξιολόγησης που περιγράφεται παραπάνω. Μολονότι αυτό σημαίνει ότι μειώνεται η απόδοση, μπορεί να επιτρέπει τη σημαντική μείωση του εμβαδού, και όπως αναφέρθηκε νωρίτερα μια μείωση της απόδοσης μπορεί να αντιμετωπίζεται εύκολα χωρίς επίπτωση στη συνολική απόδοση της διάταξης, δεδομένου ότι θα είναι δυνατή η πραγματοποίηση χρήσιμου έργου όσον αφορά σε άλλες ομάδες νημάτων όσο το κύκλωμα ελέγχου του απαριθμητή προγράμματος πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος για μια συγκεκριμένη ομάδα νημάτων.
Ο ντετερμινιστικός κανόνας ταξινόμησης μπορεί να διατάσσεται με έναν αριθμό τρόπων, αλλά σε μια υλοποίηση εξυπηρετεί στον προσδιορισμό μιας ελάχιστης τιμής του απαριθμητή προγράμματος και μιας ένδειξης των νημάτων των οποίων ο απαριθμητής προγράμματος βρίσκεται σε αυτή την ελάχιστη τιμή του απαριθμητή προγράμματος. Αυτή η ελάχιστη τιμή του απαριθμητή προγράμματος μπορεί στη συνέχεια να ορίζεται ως ο επόμενος κοινός απαριθμητής προγράμματος ο οποίος θα χρησιμοποιείται από κοινού ανάμεσα στα ενεργά νήματα όταν το κύκλωμα χρονοπρογραμματισμού επακόλουθα επιλέγει αυτή την ίδια ομάδα νημάτων για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων.
Υπάρχει ένας αριθμός τρόπων με τους οποίους είναι δυνατή η ανίχνευση της απόκλισης στα νήματα της ομάδας νημάτων, όμως σε μια υλοποίηση το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να ορίζει μια σημαία απόκλισης όταν η πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος υποδεικνύει ότι τα νήματα της πρώτης ομάδας έχουν αποκλίνει. Η κατάσταση αυτής της σημαίας απόκλισης μπορεί να διατίθεται και σε άλλα εξαρτήματα της διάταξης, ώστε οποιαδήποτε χρονική στιγμή να είναι δυνατό να προσδιοριστεί κατά πόσο η ομάδα νημάτων η οποία επεξεργάζεται εκείνη τη στιγμή από το κύκλωμα επεξεργασίας νημάτων είναι εκείνη τη στιγμή σε κατάσταση απόκλισης ή όχι. Όπως θα εξεταστεί σε περισσότερη λεπτομέρεια αργότερα, αυτό μπορεί για παράδειγμα να χρησιμοποιείται για τον προσδιορισμό σε ορισμένες περιπτώσεις κατά πόσο απαιτείται ή όχι μια λειτουργία ελέγχου του απαριθμητή προγράμματος.
Το συμβάν εξόδου μπορεί να προκύπτει για έναν αριθμό λόγων, όμως σε μια υλοποίηση το συμβάν εξόδου προκύπτει τουλάχιστον όταν το κύκλωμα επεξεργασίας νημάτων ολοκληρώνει την εκτέλεση μιας βαθμίδας κώδικα που έχει εκχωρηθεί για την πρώτη ομάδα νημάτων, μια εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών και/ή μια ένδειξη σύγκλισης σχετίζεται με την εντολή που εκτελείται εκείνη τη στιγμή.
Συνεπώς, εάν μια βαθμίδα κώδικα που έχει εκχωρηθεί δεν περιλαμβάνει μια εντολή αλλαγής ροής εντολών και απλά εκτελείται κανονικά χωρίς κάποια ένδειξη σύγκλισης να σχετίζεται με την τελική εντολή στη βαθμίδα, το κύκλωμα επεξεργασίας νημάτων μπορεί απλά να διακόπτει την επεξεργασία της ομάδας νημάτων και να σηματοδοτεί αυτό το συμβάν εξόδου προς το κύκλωμα χρονοπρογραμματισμού, ενώ το κύκλωμα χρονοπρογραμματισμού θα είναι τότε ελεύθερο να επιλέγει μια άλλη βαθμίδα κώδικα για αυτή την ομάδα νημάτων προς εκτέλεση από το κύκλωμα επεξεργασίας νημάτων. Ωστόσο, εάν αντίθετα η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών, αυτό υποδηλώνει μια περίπτωση στην οποία είναι δυνατή η απόκλιση, ενώ μπορεί να είναι απαραίτητη η πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος. Παρόμοια, εάν μια ένδειξη σύγκλισης σχετίζεται με την εντολή που εκτελείται εκείνη τη στιγμή, αυτό υποδηλώνει μια περίπτωση στην οποία μπορεί να είναι απαραίτητη η πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος ώστε να προσδιοριστεί κατά πόσο στην πράξη μια αποκλίνουσα ομάδα νημάτων έχει τώρα επανασυγκλίνει. Η ένδειξη σύγκλισης μπορεί να προδιαγράφεται με έναν αριθμό τρόπων. Για παράδειγμα, μπορεί να είναι μια στατική ένδειξη που προστίθεται για παράδειγμα από το μεταγλωττιστή σε συσχέτιση με ορισμένες γραμμές κώδικα ή σε ορισμένες υλοποιήσεις μπορεί να ορίζεται δυναμικά κατά τη διάρκεια της εκτέλεσης. Αμιγώς μέσω παραδείγματος, ο τερματισμός όλων των ενεργών νημάτων τα οποία αποκλίνουν, μπορεί να προκαλέσει σιωπηρή επανασύγκλιση (για συνέχεια με τα υπόλοιπα νήματα).
Μόλις συμβεί το συμβάν εξόδου, υπάρχει ένας αριθμός τρόπων με τους οποίους το κύκλωμα επεξεργασίας νημάτων μπορεί να προσδιορίζει κατά πόσο υφίσταται ή όχι η κατάσταση ελέγχου του απαριθμητή προγράμματος και συνεπώς κατά πόσο υπάρχει ανάγκη πραγματοποίησης μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος. Σε μια υλοποίηση, το κύκλωμα επεξεργασίας νημάτων μπορεί να διατάσσεται ώστε να προσδιορίζει ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος όταν είναι ενεργοποιημένη η σημαία απόκλισης και είτε η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών, είτε η ένδειξη σύγκλισης σχετίζεται με την εντολή που εκτελείται εκείνη τη στιγμή.
Συνεπώς, εάν έχει ήδη ανιχνευθεί προηγουμένως απόκλιση και η εντολή που εκτελείται εκείνη τη στιγμή είναι είτε μια εντολή αλλαγής ροής εντολών, είτε έχει την ένδειξη σύγκλισης συσχετισμένη με αυτή, τότε σε μια υλοποίηση η κατάσταση ελέγχου του απαριθμητή προγράμματος προσδιορίζεται ότι υφίσταται.
Περαιτέρω, σε μια υλοποίηση το κύκλωμα επεξεργασίας νημάτων μπορεί να διατάσσεται ώστε να προσδιορίζει ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος όταν η σημαία απόκλισης είναι απενεργοποιημένη και η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών. Συνεπώς, σε αυτή την υλοποίηση, η παρουσία της εντολής αλλαγής ροής εντολών προκαλεί τον προσδιορισμό παρουσίας της κατάστασης ελέγχου του απαριθμητή προγράμματος ανεξάρτητα εάν η σημαία απόκλισης είναι εκείνη τη στιγμή απενεργοποιημένη ή ενεργοποιημένη.
Ωστόσο, σε μια εναλλακτική υλοποίηση, το κύκλωμα επεξεργασίας νημάτων μπορεί να περιλαμβάνει ένα κύκλωμα προελέγχου το οποία διατάσσεται, όταν η σημαία απόκλισης είναι απενεργοποιημένη και η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών, ώστε να πραγματοποιεί μια λειτουργία προελέγχου ώστε να προσδιορίζεται κατά πόσο υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος. Συνεπώς, σε αυτή την υλοποίηση, η παρουσία της εντολής αλλαγής ροής εντολών δε θα διεγείρει αυτόματα την πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος, σε περιπτώσεις στις οποίες η σημαία απόκλισης είναι εκείνη τη στιγμή απενεργοποιημένη. Αντίθετα, σε ορισμένες περιπτώσεις το κύκλωμα επεξεργασίας νημάτων μπορεί να έχει τη δυνατότητα να προσδιορίζει ότι στην πράξη δεν απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Απλά μέσω παραδείγματος, εάν το κύκλωμα επεξεργασίας νημάτων μπορεί να προσδιορίζει ότι, για όλα τα ενεργά νήματα, οι κλάδοι ήταν όλοι είτε κατειλημμένοι είτε όχι, μπορεί να είναι δυνατό να συναχθεί ότι πράγματι δεν υφίσταται απόκλιση και ανάλογα δεν υπάρχει ανάγκη να πραγματοποιηθεί η λειτουργία ελέγχου του απαριθμητή προγράμματος.
Σε μια υλοποίηση, διευθετείται ώστε τα περιεχόμενα του χώρου αποθήκευσης καταχωρητών να ενημερώνονται μόνο όταν η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών. Αυτό παρέχει μια ιδιαίτερα αποτελεσματική υλοποίηση, εφόσον όπως αναφέρθηκε νωρίτερα τέτοιες εντολές αλλαγής ροής εντολών συνήθως δεν προσδιορίζουν οι ίδιες έναν προορισμό και συνεπώς η εσοχή εγγραφής τους (η οποία αλλιώς δε θα χρησιμοποιούταν) μπορεί να χρησιμοποιείται για την ενημέρωση των πληροφοριών του απαριθμητή προγράμματος στον αντίστοιχο κρυφό καταχωρητή του αποθηκευτικού χώρου καταχωρητών.
Υπάρχει ένας αριθμός τρόπων με τους οποίους μπορεί να πραγματοποιείται η λειτουργία ελέγχου του απαριθμητή προγράμματος όταν ορίζεται η ένδειξη σύγκλισης, όμως σε μια υλοποίηση, σε μια τέτοια περίπτωση, το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να διαβάζει τις πληροφορίες του απαριθμητή προγράμματος από το χώρο αποθήκευσης καταχωρητών για κάθε νήμα που εκκρεμεί της πρώτης ομάδας νημάτων και να συγκρίνει αυτές τις πληροφορίες του απαριθμητή προγράμματος με τον κοινό απαριθμητή προγράμματος όπως ενημερώνεται για το πρώτο νήμα προγράμματος μετά το συμβάν εξόδου. Συγκεκριμένα, ο κοινός απαριθμητής προγράμματος όπως ενημερώνεται θα υποδηλώνει την τιμή του απαριθμητή προγράμματος για όλα τα ενεργά νήματα εκείνη τη στιγμή.
Τα νήματα που εκκρεμούν είναι αυτά τα έγκυρα νήματα της πρώτης ομάδας νημάτων τα οποία δε θεωρούνται εκείνη τη στιγμή ως ενεργά νήματα. Συγκεκριμένα, μετά από ένα συμβάν απόκλισης, θα ισχύει συνήθως ότι ένα υποσύνολο των νημάτων θα σημειώνεται ως νήματα που εκκρεμούν και ένα υποσύνολο θα σημειώνεται ως ενεργά νήματα και ότι η επεξεργασία θα συνεχίζεται μετά μόνο όσον αφορά στα ενεργά νήματα μέχρι να συμβεί επανασύγκλιση. Ακολουθώντας την παραπάνω προσέγγιση στην οποία ο ενημερωμένος κοινός απαριθμητής προγράμματος χρησιμοποιείται για να παρέχει την ενημερωμένη τιμή του απαριθμητή προγράμματος για τα ενεργά νήματα, δεν απαιτείται η εγγραφή στον αποθηκευτικό χώρο καταχωρητών πριν την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Συνεπώς, αυτό αποτρέπει την ανάγκη ενημέρωσης του αποθηκευτικού χώρου καταχωρητών, η οποία διαφορετικά θα μπορούσε να επιφέρει μια ποινή απόδοσης.
Υπάρχει ένας αριθμός τρόπων με τους οποίους το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να διεγείρεται ώστε να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος όταν προσδιορίζεται ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος. Σε μια υλοποίηση, το κύκλωμα επεξεργασίας νημάτων μπορεί το ίδιο να εκδίδει ένα σήμα προς το κύκλωμα ελέγχου του απαριθμητή προγράμματος για τη διέγερση της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Ωστόσο, σε μια εναλλακτική υλοποίηση, το κύκλωμα επεξεργασίας νημάτων μπορεί απλά να υποδηλώνει, σε σχέση με το συμβάν εξόδου, ότι απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος, ενώ το κύκλωμα χρονοπρογραμματισμού μπορεί τότε να διατάσσεται ώστε να στέλνει ένα κατάλληλο σήμα στο κύκλωμα ελέγχου του απαριθμητή προγράμματος και να διεγείρει την πραγματοποίηση της λειτουργίας ελέγχου αυτού του απαριθμητή προγράμματος.
Σε μια συγκεκριμένη υλοποίηση, όταν προσδιορίζεται η παρουσία της κατάστασης ελέγχου του απαριθμητή προγράμματος από το κύκλωμα επεξεργασίας νημάτων, το κύκλωμα επεξεργασίας νημάτων διατάσσεται ώστε να προσαρμόζει σε μια πρώτη κατεύθυνση μια τιμή εξάρτησης για την πρώτη ομάδα νημάτων και να εκπέμπει ένα σήμα ελέγχου προς το κύκλωμα ελέγχου του απαριθμητή προγράμματος για τη διέγερση της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται στη συνέχεια για την ολοκλήρωση της λειτουργίας ελέγχου του απαριθμητή προγράμματος για την προσαρμογή, σε μια δεύτερη κατεύθυνση αντίθετη της εν λόγω πρώτης κατεύθυνσης, της τιμής εξάρτησης για την πρώτη ομάδα νημάτων, ενώ αποτρέπεται η επιλογή από το κύκλωμα χρονοπρογραμματισμού της πρώτης ομάδας νημάτων για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων εκτός εάν η τιμή εξάρτησης για την πρώτη ομάδα νημάτων έχει μια τιμή η οποία υποδηλώνει ότι δεν υπάρχουν λειτουργίες ελέγχου του απαριθμητή προγράμματος που εκκρεμούν για την πρώτη ομάδα νημάτων. Συνεπώς, διατηρώντας την τιμή εξάρτησης με τον τρόπο που περιγράφηκε, το κύκλωμα χρονοπρογραμματισμού μπορεί απλά να αναφέρεται στην τρέχουσα τιμή της τιμής εξάρτησης για κάθε ομάδα νημάτων κατά τον προσδιορισμό των ομάδων νημάτων που είναι διαθέσιμες για έκδοση προς το κύκλωμα επεξεργασίας νημάτων. Όσο κάποια λειτουργία ελέγχου του απαριθμητή προγράμματος εκκρεμεί για μια συγκεκριμένη ομάδα νημάτων, θα αποτρέπεται συνεπώς η επιλογή από το κύκλωμα χρονοπρογραμματισμού αυτής της ομάδας νημάτων για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων.
Όπως αναφέρθηκε νωρίτερα, σε μια υλοποίηση τα περιεχόμενα του αποθηκευτικού χώρου καταχωρητών ενημερώνονται από το κύκλωμα επεξεργασίας νημάτων με την εκτέλεση μιας εντολής αλλαγής ροής εντολών, με το γεγονός αυτό να παρέχει μια ιδιαίτερα αποτελεσματική υλοποίηση σε περιπτώσεις στις οποίες η εσοχή εγγραφής που σχετίζεται με την εντολή αλλαγής ροής εντολών αλλιώς δε χρησιμοποιείται. Ωστόσο, εάν σε μια εναλλακτική υλοποίηση μια τέτοια ενημέρωση του αποθηκευτικού χώρου καταχωρητών θα απαιτούσε πράγματι έναν ή περισσότερους επιπλέον κύκλους στο κύκλωμα επεξεργασίας νημάτων, τότε αντί της επιβάρυνσης από αυτό τον πιθανό επιπλέον χρόνο, το κύκλωμα επεξεργασίας νημάτων μπορεί να διατάσσεται ώστε, με την εκτέλεση της εντολής αλλαγής ροής εντολών, να εγγράφει σε έναν προσωρινό αποθηκευτικό χώρο (για παράδειγμα μια προσωρινή μνήμη) μια διεύθυνση κλάδου που ακολουθήθηκε, μια διεύθυνση κλάδου που δεν ακολουθήθηκε και μια ένδειξη, για κάθε ενεργό νήμα, κατά πόσο ένας κλάδος ακολουθήθηκε σε απόκριση της εκτέλεσης της εντολής αλλαγής ροής εντολών.
Στη συνέχεια, το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να διατάσσεται ώστε να αποκρίνεται στην εκτέλεση της λειτουργίας ελέγχου του απαριθμητή προγράμματος για πρόσβαση στο χώρο προσωρινής αποθήκευσης και αποκατάσταση, για κάθε ενεργό νήμα, μιας τιμής του απαριθμητή προγράμματος που υπολογίστηκε με την εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών. Το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί στη συνέχεια να διατάσσεται, όταν η πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος υποδηλώνει απόκλιση των νημάτων της πρώτης ομάδας νημάτων, ώστε να εγγράφει την τιμή του απαριθμητή προγράμματος για κάθε ενεργό νήμα στον αποθηκευτικό χώρο καταχωρητών. Συνεπώς, σε αυτή την περίπτωση, το κύκλωμα ελέγχου του απαριθμητή προγράμματος πραγματοποιεί τη λειτουργία εγγραφής στον αποθηκευτικό χώρο καταχωρητών. Κατά τη μετέπειτα δοκιμή για επανασύγκλιση, η διαδικασία μπορεί να συνεχίζει με τον ίδιο τρόπο όπως εξετάστηκε νωρίτερα και ακόμη δεν υπάρχει ανάγκη πραγματοποίησης κάποιας εγγραφής στον αποθηκευτικό χώρο καταχωρητών κατά τη δοκιμή για επανασυγκλιση.
Συγκεκριμένες υλοποιήσεις θα περιγραφούν τώρα αναφορικά με τα Σχήματα. Το Σχήμα 1 είναι ένα διάγραμμα βαθμιδών μιας διάταξης σύμφωνα με μια υλοποίηση. Το κύκλωμα χρονοπρογραμματισμού 10 είναι υπεύθυνο για τον προσδιορισμό της ομάδας νημάτων που πρέπει να επιλεγεί για εκτέλεση στο κύκλωμα επεξεργασίας νημάτων 30 σε κάποια συγκεκριμένη χρονική στιγμή. Συγκεκριμένα, όταν το κύκλωμα επεξεργασίας νημάτων διακόπτει την εκτέλεση μιας τρέχουσας ομάδας νημάτων, αυτή η διακοπή σηματοδοτείται μέσω της διαδρομής 60 προς το κύκλωμα χρονοπρογραμματισμού 10 και το κύκλωμα χρονοπρογραμματισμού μπορεί στη συνέχεια να προσδιορίσει για επιλογή μια επόμενη ομάδα νημάτων για εκτέλεση στο κύκλωμα επεξεργασίας νημάτων 30. Το κύκλωμα χρονοπρογραμματισμού διατηρεί μια επόμενη τιμή του κοινού απαριθμητή προγράμματος για κάθε ομάδα νημάτων εντός του αποθηκευτικού χώρου 15, όπως υποδεικνύεται από τα στοιχεία αποθήκευσης 20, 22 στο Σχήμα 1. Συγκεκριμένα, η διάταξη διατάσσεται ώστε να λειτουργεί με τρόπο SIMT ώστε όταν η ομάδα νημάτων πρόκειται να εκτελεστεί στο κύκλωμα επεξεργασίας νημάτων, το κύκλωμα επεξεργασίας νημάτων εκτελεί τις ίδιες εντολές για κάθε ένα από τα ενεργά νήματα, με τις εντολές να ταυτοποιούνται χρησιμοποιώντας την επόμενη τιμή του κοινού ΑΠ (PC ή program counter ή απαριθμητής προγράμματος) για τη συγκεκριμένη ομάδα νημάτων.
Συγκεκριμένα, μόλις το κύκλωμα χρονοπρογραμματισμού επιλέξει την ομάδα νημάτων, τότε η επόμενη τιμή του κοινού ΑΠ για αυτή την ομάδα νημάτων μπορεί να παρέχεται στην κρυφή μνήμη εντολών 25 ώστε να προκαλείται η έκδοση των εντολών στο κύκλωμα επεξεργασίας νημάτων 30. Συνήθως, η πρώτη εντολή ταυτοποιείται από την επόμενη τιμή του κοινού ΑΠ, ενώ επίσης εκδίδεται ένας αριθμός επιπλέον εντολών (όπως ταυτοποιούνται αυξάνοντας αυτή την τιμή ΑΠ), ώστε να παρέχεται μια βαθμίδα εντολών στο κύκλωμα επεξεργασίας νημάτων προς εκτέλεση. Αυτή η βαθμίδα εντολών αναφέρεται ορισμένες φορές ως ρήτρα, ενώ ο αριθμός των εντολών στη ρήτρα μπορεί να ορίζεται στατικά ή σε ορισμένες περιπτώσεις μπορεί να καθορίζεται δυναμικά. Το κύκλωμα επεξεργασίας νημάτων 30 θα εκτελεί τότε, για κάθε ενεργό νήμα, τις εντολές της ρήτρας, μετά το οποίο είναι αναπόφευκτο να προκόψει ένα συμβάν εξόδου, προκαλώντας τη διακοπή της εκτέλεσης των εντολών για αυτή την ομάδα νημάτων από το κύκλωμα επεξεργασίας νημάτων (μέχρι αυτή η ομάδα νημάτων επιλεγεί μετέπειτα και πάλι από το κύκλωμα χρονοπρογραμματισμού 10).
Όπως θα εκτιμηθεί από τους έμπειρους στην τέχνη, εάν οι απαιτούμενες εντολές βρίσκονται ήδη εντός της κρυφής μνήμης εντολών 25, μπορούν να εκδίδονται άμεσα στο κύκλωμα επεξεργασίας νημάτων 30, αλλά σε περίπτωση μιας αστοχίας κρυφής μνήμης για οποιαδήποτε από τις απαιτούμενες εντολές, μπορεί να εκδίδεται ένα αίτημα προσκόμισης εντολής προς το σύστημα μνήμης για την ανάκτηση των απαιτούμενων εντολών, ώστε να είναι δυνατή στη συνέχεια η έκδοσή τους στο κύκλωμα επεξεργασίας νημάτων (σε μια υλοποίηση αυτές οι προσκομισμένες εντολές θα εκχωρούνται επίσης στην κρυφή μνήμη εντολών 25 καθώς προσκομίζονται από τη μνήμη).
Όπως αναφέρθηκε νωρίτερα, κατά την εκτέλεση των νημάτων μιας ομάδας νημάτων με τρόπο SIMT, είναι πιθανό οι τιμές των απαριθμητών προγράμματος των νημάτων να μπορούν να αποκλίνουν μεταξύ τους με την εκτέλεση μιας εντολής αλλαγής ροής εντολών. Η εντολή αλλαγής ροής εντολών θα είναι συνήθως μια εντολή κλάδου, ενώ θα γίνει κατανοητό ότι όταν εκτελούνται τέτοιες εντολές, η ενημερωμένη τιμή του απαριθμητή προγράμματος που προκύπτει θα εξαρτάται από το κατά πόσο ο κλάδος επελέγη ή δεν επελέγη. Σε ορισμένες περιπτώσεις, μπορεί επίσης να εξαρτάται από τα περιεχόμενα συγκεκριμένων καταχωρητών, ενώ αυτά τα περιεχόμενα μπορεί να διαφέρουν για διαφορετικά νήματα. Συγκεκριμένα, μολονότι τα νήματα εκτελούν τις ίδιες εντολές, συνήθως χειρίζονται διαφορετικά δεδομένα και συνεπώς είναι πιθανό, για έμμεσους κλάδους οι οποίοι καθορίζουν τη διεύθυνση προορισμού αναφορικά με τα περιεχόμενα ενός καταχωρητή, η πραγματική διεύθυνση προορισμού να διαφέρει για συγκεκριμένα νήματα, ακόμη και εάν όλα από αυτά τα νήματα επιλέξουν τον κλάδο.
Λόγω της πιθανότητας απόκλισης κατά την εκτέλεση μιας εντολής κλάδου, εάν μια ρήτρα πράγματι περιέχει μια εντολή κλάδου, αυτή η εντολή κλάδου σε μια υλοποίηση θα είναι η τελική εντολή στη ρήτρα. Συνεπώς, όταν εκτελείται η εντολή κλάδου, το συμβάν εξόδου θα προσδιορίζεται ότι υφίσταται. Σε αυτό το σημείο, το κύκλωμα ανιχνευτή κατάστασης ελέγχου 40 εντός του κυκλώματος επεξεργασίας νημάτων 30 μπορεί να προσδιορίζει κατά πόσο υπάρχει ανάγκη ελέγχου των τιμών του απαριθμητή προγράμματος ώστε να αξιολογείται κατά πόσο υφίσταται απόκλιση ή όχι. Εάν το συμβάν εξόδου προκόψει λόγω της εκτέλεσης μιας εντολής κλάδου, τότε σε μια υλοποίηση μπορεί να αποφασιστεί ότι απαιτείται πάντα μια λειτουργία ελέγχου του απαριθμητή προγράμματος, όμως σε μια άλλη υλοποίηση, όπως θα εξεταστεί λεπτομερέστερα αργότερα, μπορεί να παρέχεται ένα κύκλωμα προελέχγου 45 στα πλαίσια του ανιχνευτή κατάστασης ελέγχου 40 για να προσδιοριστούν ορισμένες περιπτώσεις στις οποίες μπορεί να εγγυάται ότι πράγματι δε θα υπάρξει κάποια απόκλιση και ανάλογα δεν απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος.
Για να πραγματοποιηθεί έλεγχος για επανασύγκλιση των τιμών του απαριθμητή προγράμματος, ο κώδικας μπορεί να ενσωματώνει ενδείξεις σύγκλισης σε συνεργασία με συγκεκριμένες εντολές. Αυτές μπορούν να προστίθενται στατικά από το μεταγλωττιστή κατά τη μεταγλώττιση του κώδικα ή εναλλακτικά όπως εξετάστηκε νωρίτερα, τουλάχιστον κάποιοι δείκτες σύγκλισης μπορούν να προστίθενται δυναμικά κατά την εκτέλεση του κώδικα. Εάν, μόλις συμβεί το συμβάν εξόδου, προσδιοριστεί ότι υφίσταται ένας δείκτης σύγκλισης σε συνεργασία με την εντολή που εκτελείται εκείνη τη στιγμή, τότε και πάλι ο ανιχνευτής κατάστασης ελέγχου 40 μπορεί να προσδιορίζει κατά πόσο θα πρέπει να πραγματοποιηθεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος.
Η λειτουργία του ανιχνευτή κατάστασης ελέγχου 40 σε μια υλοποίηση θα εξεταστεί λεπτομερέστερα αργότερα αναφορικά με το Σχήμα 3, όμως περιληπτικά, όποτε ο ανιχνευτής κατάστασης ελέγχου 40 ανιχνεύει, μόλις συμβαίνει το συμβάν εξόδου, ότι υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος, μπορεί να διεγείρει το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 ώστε να πραγματοποιεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Σε μια υλοποίηση, αυτή η λειτουργία ελέγχου προϋποθέτει την πραγματοποίηση ενός αλγορίθμου ταξινόμησης όσον αφορά στις τιμές του απαριθμητή προγράμματος για τα νήματα, όπως θα εξεταστεί λεπτομερέστερα αργότερα αναφορικά με το Σχήμα 4.
Όπως δείχνεται στο Σχήμα 1, ένα αρχείο καταχωρητών 35 παρέχεται εντός του κυκλώματος επεξεργασίας νημάτων 30. Αυτό περιλαμβάνει ένα σύνολο αρχιτεκτονικών καταχωρητών 37 οι οποίοι μπορούν να προσδιορίζονται από εντολές ως καταχωρητές προέλευσης ή καταχωρητές προορισμού κατά την πραγματοποίηση των λειτουργιών που απαιτούνται από αυτές τις εντολές. Οι καταχωρητές αναφέρονται ως αρχιτεκτονικοί καταχωρητές επειδή είναι ορατοί στο μοντέλο προγραμματιστή κατά την εγγραφή των εντολών του νήματος.
Όπως δείχνεται στο Σχήμα 1, στις υλοποιήσεις που περιγράφηκαν το αρχείο καταχωρητών 35 επεκτείνεται ώστε να περιλαμβάνει και ορισμένους επιπλέον καταχωρητές 39. Αυτοί μπορούν να θεωρούνται ότι δεν είναι αρχιτεκτονικοί καταχωρητές, εφόσον δεν μπορούν άμεσα να προσδιορίζονται από τις εντολές. Ωστόσο, όπως θα περιγράφει λεπτομερέστερα αργότερα, αυτοί οι επιπλέον καταχωρητές μπορούν να αναπαράγονται με τις τιμές του απαριθμητή προγράμματος για κάθε νήμα μιας ομάδας νημάτων ώστε να μπορούν αυτές οι πληροφορίες να είναι διαθέσιμες στο κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Αυτό παρέχει έναν ιδιαίτερα αποδοτικό αποθηκευτικό χώρο για τέτοιες πληροφορίες, απαιτώντας σημαντικά μικρότερο εμβαδόν σε σχέση με την περίπτωση που παρεχόταν μια ξεχωριστή δομή RAM ή άλλη παρόμοια για την αποθήκευση αυτών των πληροφοριών του απαριθμητή προγράμματος για πρόσβαση από το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50.
Διευκολύνει επίσης ένα μηχανισμό μέσω του οποίου η λειτουργία του κυκλώματος ελέγχου του απαριθμητή προγράμματος μπορεί να τοποθετείται εκτός της κρίσιμης διαδρομής, ώστε να επιτρέπει την έκδοση εντολών μιας άλλης ομάδας νημάτων προς το κύκλωμα επεξεργασίας νημάτων από το κύκλωμα χρονοπρογραμματισμού κατά τη διάρκεια της αναμονής του αποτελέσματος της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Για παράδειγμα, σε μια υλοποίηση, κατά την εκτέλεση μιας εντολής κλάδου, το κύκλωμα επεξεργασίας νημάτων 30 διατάσσεται ώστε να πραγματοποιεί μια λειτουργία εγγραφής στο(ους) σχετικό(ούς) καταχωρητή(ές) εντός των επιπλέον καταχωρητών 39 ώστε να ενημερώνει τις πληροφορίες του απαριθμητή προγράμματος για τα νήματα της ομάδας νημάτων. Μπορεί στη συνέχεια να προσδιορίζει, μέσω του ανιχνευτή κατάστασης ελέγχου 40, κατά πόσο απαιτείται ή όχι μια λειτουργία ελέγχου του απαριθμητή προγράμματος, μπορεί να ειδοποιεί το κύκλωμα ελέγχου του απαριθμητή προγράμματος ανάλογα και σε αυτό το σημείο μπορεί να εκπέμπει μια έξοδο προς το κύκλωμα χρονοπρογραμματισμού 10, ώστε το κύκλωμα χρονοπρογραμματισμού να μπορεί να χρησιμοποιεί τους πόρους του κυκλώματος επεξεργασίας νημάτων για μια άλλη ομάδα νημάτων.
Για την ομάδα νημάτων από την οποία πραγματοποίησε έξοδο το κύκλωμα επεξεργασίας νημάτων 30 (για λόγους απλότητας ας ονομάσουμε αυτή την ομάδα νημάτων, ομάδα νημάτων X), είναι σημαντικό το κύκλωμα χρονοπρογραμματισμού 10 να μην επιλέξει και πάλι την ομάδα νημάτων X για εκτέλεση στο κύκλωμα επεξεργασίας νημάτων 30 εάν υφίσταται μια λειτουργία ελέγχου του απαριθμητή προγράμματος σε εκκρεμότητα για αυτή την ομάδα νημάτων X. Σε μια υλοποίηση, αυτή η λειτουργία ελέγχεται χρησιμοποιώντας τους απαριθμητές εξάρτησης 55. Ένας ξεχωριστός απαριθμητής εξάρτησης μπορεί να παρέχεται για κάθε ομάδα νημάτων, ενώ αυτοί οι απαριθμητές μπορούν να αυξάνονται από το κύκλωμα επεξεργασίας νημάτων 30 και να μειώνονται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50. Συγκεκριμένα, όταν για την ομάδα νημάτων X, ο ανιχνευτής κατάστασης ελέγχου 40 προσδιορίσει ότι απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος, τότε επιπλέον της ειδοποίησης του κυκλώματος ελέγχου του απαριθμητή προγράμματος 50, θα εκπέμψει ένα σήμα στους απαριθμητές εξάρτησης 55 ώστε να προκαλέσει την αύξηση του απαριθμητή εξάρτησης για την ομάδα νημάτων X. Μετέπειτα, όταν το κύκλωμα ελέγχου του απαριθμητή προγράμματος ολοκληρώσει τη λειτουργία ελέγχου του απαριθμητή προγράμματος για την ομάδα νημάτων X, εκπέμπει ένα σήμα στους απαριθμητές εξάρτησης 55 που προκαλεί τη μείωση του απαριθμητή εξάρτησης για την ομάδα νημάτων X.
Σε μια συγκεκριμένη υλοποίηση, κάθε ένας από τους απαριθμητές εξάρτησης αρχικοποιείται σε μια λογική τιμή 0, ενώ το κύκλωμα χρονοπρογραμματισμού 10 διατάσσεται ώστε να επιλέγει για εκτέλεση μόνο μια ομάδα νημάτων ανάμεσα στις ομάδες νημάτων των οποίων ο σχετικός απαριθμητής εξάρτησης είναι 0. Κάθε ομάδα νημάτων με μη μηδενικό απαριθμητή εξάρτησης εξαιρείται από τη διαδικασία επιλογής από το κύκλωμα χρονοπρογραμματισμού 10.
Όταν το κύκλωμα ελέγχου του απαριθμητή προγράμματος διεγείρεται ώστε να πραγματοποιεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος για την ομάδα νημάτων X, εφαρμόζει έναν ντετερμινιστικό κανόνα ταξινόμησης για τον προσδιορισμό μιας τιμής του απαριθμητή προγράμματος ανάμεσα στις τιμές του απαριθμητή προγράμματος των ενεργών και εκκρεμών νημάτων και μια ένδειξη των νημάτων των οποίων ο απαριθμητής προγράμματος είναι σε αυτή την επιλεγμένη τιμή απαριθμητή. Σε μια συγκεκριμένη υλοποίηση, ο ντετερμινιστικός κανόνας ταξινόμησης χρησιμοποιείται για τον προσδιορισμό μιας ελάχιστης τιμής του απαριθμητή προγράμματος ανάμεσα στις τιμές του απαριθμητή προγράμματος των ενεργών και εκκρεμών νημάτων.
Εντός μιας συγκεκριμένη ομάδας νημάτων, μπορεί όλα τα νήματα να θεωρούνται έγκυρα, όμως σε άλλες υλοποιήσεις ένα ή περισσότερα από τα νήματα μπορεί να σημειώνονται ως άκυρα, ενώ κάθε τέτοιο άκυρο νήμα εξαιρείται από την επεξεργασία. Λαμβάνοντας υπόψη τα έγκυρα νήματα, τότε πριν από οποιαδήποτε απόκλιση όλα αυτά τα έγκυρα νήματα θεωρούνται ως ενεργά νήματα, ενώ ανάλογα όταν η ομάδα νημάτων εκτελείται στο κύκλωμα επεξεργασίας νημάτων, το κύκλωμα επεξεργασίας νημάτων θα εκτελεί εντολές για κάθε ένα από αυτά τα νήματα. Ωστόσο, μετά την ανίχνευση μιας απόκλισης, τότε μέχρι να συμβεί η επανασύγκλιση μόνο ένα υποσύνολο αυτών των έγκυρων νημάτων θα θεωρείται ενεργό και τα υπόλοιπα έγκυρα νήματα θα θεωρούνται ως εκκρεμή νήματα. Όπως θα εξεταστεί λεπτομερέστερα αργότερα, μπορούν να δημιουργούνται ενεργές μάσκες και εκκρεμείς μάσκες για την αναγνώριση των ενεργών νημάτων και των εκκρεμών νημάτων για κάθε ομάδα νημάτων, ενώ το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να αξιολογεί τις τιμές του απαριθμητή προγράμματος για τα ενεργά και τα εκκρεμή νήματα κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος. Για αυτό το σκοπό, στο κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 μπορεί να δίδεται δικαίωμα πρόσβασης για ανάγνωση για τους επιπλέον καταχωρητές 39 εντός του αρχείου καταχωρητών 35, το οποίο όπως εξετάστηκε νωρίτερα θα ενημερώνεται με την εκτέλεση κάθε εντολής κλάδου για τη σύλληψη των ενημερωμένων τιμών του απαριθμητή προγράμματος για τα διάφορα νήματα κάθε ομάδας νημάτων. Το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 μπορεί επίσης να έχει πρόσβαση στον αποθηκευτικό χώρο 15 εντός του κυκλώματος χρονοπρογραμματισμού 10 για τη λήψη των τιμών του απαριθμητή προγράμματος για ορισμένα νήματα κατά την πραγματοποίηση ελέγχου απόκλισης μέσω εκτέλεσης της λειτουργίας ελέγχου του απαριθμητή προγράμματος, όπως θα εξεταστεί λεπτομερέστερα αργότερα με περισσότερες παραπομπές στο Σχήμα 4.
Μέσω της πραγματοποίησης της λειτουργίας ελέγχου του απαριθμητή προγράμματος, θα προσδιοριστεί ένας κοινός επόμενος απαριθμητής προγράμματος (program counter ή PC) για την ομάδα νημάτων X, ο οποίος θα δρομολογηθεί μέσω της διαδρομής 70 προς το κύκλωμα χρονοπρογραμματισμού 10 για αποθήκευση στο κατάλληλο στοιχείο 20, 22 του αποθηκευτικού χώρου 15. Επιπλέον, το κύκλωμα ελέγχου του απαριθμητή προγράμματος θα προσδιορίζει επίσης κάποια άλλα σήματα ελέγχου τα οποία θα εξεταστούν λεπτομερέστερα αργότερα, δηλαδή μια ενημερωμένη ενεργή μάσκα, μια ενημερωμένη εκκρεμή μάσκα και μια σημαία απόκλισης, τα οποία μπορούν να εξάγονται μέσω της διαδρομής 75.
Το Σχήμα 2 απεικονίζει λεπτομερέστερα το αρχείο καταχωρητών 35 του Σχήματος 1 σύμφωνα με μια υλοποίηση. Όπως εξετάστηκε νωρίτερα, το αρχείο καταχωρητών 35 περιλαμβάνει ένα σύνολο αρχιτεκτονικών καταχωρητών 37. Κάθε αρχιτεκτονικός καταχωρητής 90, 92 μπορεί να διαμορφώνεται από έναν αριθμό φυσικών μονοδιάστατων καταχωρητών, ώστε να είναι δυνατή η μεμονωμένη διατήρηση ημών δεδομένων για κάθε ένα από τα νήματα μιας ομάδας νημάτων. Εάν ο αριθμός των ομάδων νημάτων που μπορούν να χρησιμοποιούν από κοινού την πρόσβαση στο αρχείο καταχωρητών 35 είναι NGκαι ο αριθμός των αρχιτεκτονικών καταχωρητών ανά νήμα είναι NR, τότε NR * NGαρχιτεκτονικοί καταχωρητές 90, 92 μπορούν να παρέχονται εντός του τμήματος 37. Όταν ένα συγκεκριμένο νήμα αποκτά πρόσβαση σε έναν από αυτούς τους αρχιτεκτονικούς καταχωρητές, θα αποκτά πρόσβαση στο συγκεκριμένο τμήμα (μονοδιάστατος καταχωρητής) το οποίο αποθηκεύει την ημή δεδομένων για αυτό το νήμα.
Οι επιπλέον καταχωρητές 39 μπορούν να θεωρούνται ως μη αρχιτεκτονικοί καταχωρητές, εφόσον δεν είναι δυνατή η απευθείας πρόσβαση σε αυτούς μέσω προσδιορισμού των τελεστών προέλευσης ή προορισμού εντός των εντολών. Σε μια υλοποίηση, παρέχονται NGεπιπλέον καταχωρητές, δηλαδή ένας για κάθε ομάδα νημάτων που μπορεί να έχει πρόσβαση στο αρχείο καταχωρητών. Όπως με τους αρχιτεκτονικούς καταχωρητές, κάθε καταχωρητής 94 που δείχνεται στο Σχήμα 2 μπορεί να αποτελείται από πολλούς μονοδιάστατους καταχωρητές, ενώ ο καταχωρητής 94 που σχετίζεται με μια συγκεκριμένη ομάδα νημάτων μπορεί να χρησιμοποιείται για την αποθήκευση της ημής του ΑΠ για κάθε νήμα αυτής της ομάδας νημάτων. Αυτό απεικονίζεται σχημαηκά στο Σχήμα 2 για τον καταχωρητή 80 που σχετίζεται με την ομάδα νημάτων X. Αυτό περιλαμβάνει έναν αριθμό πεδίων 82, 84, 86, ένα για κάθε ένα από τα νήματα Υ που παρέχονται εντός της ομάδας νημάτων X.
Το Σχήμα 3 είναι ένα διάγραμμα ροής το οποίο απεικονίζει τη λειτουργία το ανιχνευτή κατάστασης ελέγχου 40 σύμφωνα με μια υλοποίηση. Στο βήμα 100 προσδιορίζεται κατά πόσο έχει συμβεί ένα συμβάν εξόδου και σε περίπτωση που έχει συμβεί, προσδιορίζεται στο βήμα 105 κατά πόσο αυτό το συμβάν εξόδου οφείλεται στην εκτέλεση μιας εντολής κλάδου. Σε αυτή την περίπτωση, τότε σε μια υλοποίηση το κύκλωμα επεξεργασίας νημάτων διατάσσεται στο βήμα 110 ώστε να ενημερώνει τον καταχωρητή 94 εντός των μη αρχιτεκτονικών καταχωρητών 39 ο οποίος έχει εκχωρηθεί για την τρέχουσα ομάδα νημάτων. Αυτό μπορεί να προϋποθέτει την εγγραφή σε πολλαπλούς μονοδιάστατους καταχωρητές οι οποίες συλλογικά διαμορφώνουν τον εκχωρημένο καταχωρητή 94. Μόνο οι πληροφορίες του ΑΠ για τα ενεργά νήματα ενημερώνονται και συγκεκριμένα ενημερώνονται αυτές οι εγγραφές με τον υπολογισμένο ΑΠ ο οποίος έχει προκόψει από την εκτέλεση της εντολής κλάδου για αυτό το σχετικό νήμα. Κάθε πληροφορία του ΑΠ που συγκροτείται για τα άλλα νήματα διατηρείται ως έχει και δεν αντικαθίσταται.
Μετά το βήμα 110, στη συνέχεια, σε μια υλοποίηση, ανιχνεύεται στο βήμα 115 κατά πόσο είναι ενεργοποιημένη η σημαία απόκλισης. Όπως εξετάστηκε νωρίτερα, η σημαία απόκλισης ενεργοποιείται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος όταν προσδιορίζεται μια απόκλιση στις τιμές του απαριθμητή προγράμματος, ενώ τηρείται μια ξεχωριστή σημαία απόκλισης για κάθε ομάδα νημάτων. Συνεπώς, εάν η σημαία απόκλισης είναι ενεργοποιημένη, αυτό σημαίνει ότι μια προηγούμενη λειτουργία ελέγχου του απαριθμητή προγράμματος έχει προσδιορίσει μια απόκλιση στις τιμές του ΑΠ για την υπό εξέταση τρέχουσα ομάδα νημάτων. Σε αυτή την περίπτωση, η διαδικασία συνεχίζει στο βήμα 135, όπου ο ανιχνευτής κατάστασης ελέγχου 40 διεγείρει το κύκλωμα ελέγχου του ΑΠ 50 για την πραγματοποίηση της λειτουργίας ελέγχου του ΑΠ. Επιπλέον, στο βήμα 140, ο απαριθμητής εξάρτησης για την τρέχουσα ομάδα νημάτων αυξάνεται και στο βήμα 145 η έξοδος σηματοδοτείται στο χρονοπρογραμματιστή 10.
Σε μια υλοποίηση, εάν η σημαία απόκλισης προσδιορίζεται ως απενεργοποιημένη στο βήμα 115, τότε μπορεί να πραγματοποιηθεί μια αναθεώρηση προελέγχου στο βήμα 120 από το κύκλωμα προελέγχου 45 του ανιχνευτή κατάστασης ελέγχου 40. Συγκεκριμένα, όταν δεν υπάρχει απόκλιση εκείνη τη στιγμή, το κύκλωμα προελέγχου μπορεί να έχει τη δυνατότητα να προσδιορίζει, από πληροφορίες για την εκτέλεση της εντολής κλάδου, κατά πόσο υπάρχει πιθανότητα απόκλισης. Ως ένα συγκεκριμένο παράδειγμα, εάν όλα τα ενεργά νήματα είναι και ενεργά εκείνη τη στιγμή, και είναι γνωστό ότι, για κάθε νήμα, ο κλάδος δεν επιλέχθηκε, τότε θα είναι γνωστό ότι δεν υπάρχει πιθανότητα απόκλισης. Παρόμοια, εάν αντίθετα είναι γνωστό ότι όλα τα νήματα επέλεξαν τον κλάδο και είναι γνωστό ότι η διεύθυνση προορισμού κλάδου θα είναι ίδια για κάθε νήμα, όπως για παράδειγμα θα ήταν η περίπτωση εάν η διεύθυνση προορισμού κλάδου προσδιορίζεται αναφορικά με μια άμεση τιμή που προσδιορίζεται στην εντολή, τότε και πάλι μπορεί να προσδιοριστεί ότι δεν υπάρχει πιθανότητα απόκλισης. Ανάλογα, υπό αυτές τις συνθήκες, το κύκλωμα προελέγχου 45 μπορεί να προσδιορίζει ότι δεν υφίσταται η κατάσταση ελέγχου του ΑΠ. Αυτό αξιολογείται στο βήμα 125 και εάν το κύκλωμα προελέγχου είχε τη δυνατότητα να προσδιορίσει ότι δεν υφίσταται η κατάσταση ελέγχου του ΑΠ, τότε η διαδικασία απλά συνεχίζει στο βήμα 130 όπου ο κοινός επόμενος ΑΠ ενημερώνεται για την ομάδα νημάτων, εκπέμποντας ένα σήμα μέσω της διαδρομής 60 προς το κύκλωμα χρονοπρογραμματισμού για την ενημέρωση του σχετικού στοιχείου αποθήκευσης 20, 22. Συγκεκριμένα, σε αυτό το σημείο, είναι γνωστό ότι όλα τα νήματα χρησιμοποιούν από κοινού έναν κοινό ΑΠ και ότι δεν υπάρχει κάποια απόκλιση. Ωστόσο, εάν η αναθεώρηση προελέγχου δεν έχει τη δυνατότητα να προσδιορίσει με σαφή τρόπο ότι δεν υπάρχει απόκλιση, τότε η διαδικασία συνεχίζει στο βήμα 135 ώστε να προκαλέσει τη διέγερση του κυκλώματος ελέγχου του ΑΠ και να πραγματοποιήσει τη λειτουργία ελέγχου του ΑΠ.
Όπως υποδεικνύεται στο Σχήμα 3, τα βήματα 115, 120, 125, 130 είναι προαιρετικά και σε μια εναλλακτική υλοποίηση θα μπορούσαν να εξαιρεθούν. Σε αυτή την υλοποίηση, όποτε το συμβάν εξόδου οφείλεται στην εκτέλεση μιας εντολής κλάδου, το κύκλωμα ελέγχου του ΑΠ διεγείρεται για την πραγματοποίηση της λειτουργίας ελέγχου του ΑΠ στο βήμα 135.
Εάν στο βήμα 105 προσδιοριστεί ότι το συμβάν εξόδου δεν οφείλεται στην εκτέλεση μιας εντολής κλάδου, τότε είναι γνωστό ότι όλα τα ενεργά νήματα χρησιμοποιούν από κοινού έναν κοινό ΑΠ και ανάλογα ο κοινός επόμενος ΑΠ μπορεί να ενημερώνεται για την ομάδα νημάτων στο βήμα 150. Στο βήμα 155 προσδιορίζεται κατά πόσο υφίσταται ο δείκτης σύγκλισης. Εάν δεν υφίσταται, τότε η διαδικασία απλά συνεχίζει στο βήμα 145 όπου η έξοδος σηματοδοτείται στο χρονοπρογραμματιστή. Ωστόσο, εάν ο δείκτης σύγκλισης υφίσταται, προσδιορίζεται στο βήμα 160 κατά πόσο είναι ενεργοποιημένη η σημαία απόκλισης. Εάν η σημαία απόκλισης δεν είναι ενεργοποιημένη, τότε αυτό σημαίνει ότι δεν υπάρχει απόκλιση εκείνη τη στιγμή για την εν λόγω ομάδα νημάτων και ανάλογα δεν υπάρχει ανάγκη πραγματοποίησης κάποιας λειτουργία ελέγχου του ΑΠ και πάλι η επεξεργασία μπορεί να συνεχίζει απευθείας στο βήμα 145 για τη σηματοδότηση της εξόδου στο χρονοπρογραμματιστή.
Ωστόσο, εάν προσδιοριστεί στο βήμα 160 ότι η σημαία απόκλισης είναι ενεργοποιημένη, τότε η διαδικασία συνεχίζει στο βήμα 135, ώστε να προκαλεί τη διέγερση του κυκλώματος ελέγχου του ΑΠ για την πραγματοποίηση της λειτουργίας ελέγχου του ΑΠ.
Στην υλοποίηση που περιγράφηκε παραπάνω, υποτίθεται ότι το κύκλωμα επεξεργασίας νημάτων 30 απευθείας σηματοδοτεί στο κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 όταν απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος, ενώ οι απαριθμητές εξάρτησης χρησιμοποιούνται ώστε να επιτρέπουν στο κύκλωμα χρονοπρογραμματισμού να αποφασίζει κατά πόσο ορισμένες ομάδες νημάτων είναι υποψήφιες προς εκτέλεση στο κύκλωμα επεξεργασίας νημάτων. Σε μια εναλλακτική υλοποίηση, οι απαριθμητές εξάρτησης 55 δε χρησιμοποιούνται, ενώ το ίδιο το κύκλωμα χρονοπρογραμματισμού 10 ειδοποιεί το κύκλωμα ελέγχου του απαριθμητή προγράμματος όταν απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Σε αυτή την υλοποίηση, ο ανιχνευτής κατάστασης ελέγχου 40 ακόμη πραγματοποιεί τα διάφορα βήματα που δείχνονται στο Σχήμα 3, όμως τα βήματα 135 και 140 παραλείπονται και το βήμα 145 συμπληρώνεται ώστε όταν σηματοδοτείται η έξοδος στο χρονοπρογραμματιστή, ο χρονοπρογραμματιστής επίσης ειδοποιείται ότι απαιτείται μια λειτουργία ελέγχου του ΑΠ εάν το βήμα 145 έχει επιτευχθεί από οποιαδήποτε διαδρομή στο Σχήμα 3 η οποία προηγουμένως θα είχε δρομολογηθεί μέσω του βήματος 135.
Το κύκλωμα χρονοπρογραμματισμού 10 είναι στη συνέχεια υπεύθυνο για την εντολοδότηση του κυκλώματος ελέγχου του απαριθμητή προγράμματος 50 για την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος για τη σχετική ομάδα νημάτων και στη συνέχεια δεν επιτρέπει την επιλογή αυτής της ομάδας νημάτων για εκτέλεση στο κύκλωμα επεξεργασίας νημάτων 30 μέχρι το κύκλωμα ελέγχου του απαριθμητή προγράμματος επαληθεύσει εγκαίρως ότι έχει ολοκληρωθεί η απαιτούμενη λειτουργία ελέγχου του απαριθμητή προγράμματος.
Το Σχήμα 4 είναι ένα διάγραμμα ροής το οποίο απεικονίζει τις λειτουργίες που πραγματοποιούνται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 σύμφωνα με μια υλοποίηση. Στο βήμα 200, προσδιορίζεται κατά πόσο έχει ληφθεί ένα αίτημα ελέγχου του ΑΠ. Κάθε τέτοιο αίτημα ελέγχου του ΑΠ θα προσδιορίζει την ομάδα νημάτων με την οποία σχετίζεται αυτό το αίτημα ελέγχου. Όταν έχει ληφθεί ένα αίτημα ελέγχου του ΑΠ, τότε στο βήμα 210 προσδιορίζεται κατά πόσο αυτό το αίτημα πραγματοποιείται λόγω μιας πιθανής απόκλισης ή μιας πιθανής επανασύγκλισης. Αυτές οι πληροφορίες μπορούν να περιλαμβάνονται στο αίτημα που αποστέλλεται από τον ανιχνευτή κατάστασης αιτημάτων 40 (ή το κύκλωμα χρονοπρογραμματισμού).
Εάν απαιτείται ένας έλεγχος απόκλισης, τότε η διαδικασία συνεχίζει στο βήμα 215 όπου η τιμή του απαριθμητή προγράμματος για κάθε ενεργό και εκκρεμές νήμα διαβάζεται από το αρχείο καταχωρητών 35 και συγκεκριμένα από το σχετικό καταχωρητή εντός των επιπλέον καταχωρητών 39.
Μετέπειτα, στο βήμα 220, ένας αλγόριθμος ταξινόμησης εφαρμόζεται για τα νήματα, με τον αλγόριθμο ταξινόμησης σε μια υλοποίηση να προσδιορίζει την ελάχιστη τιμή του απαριθμητή προγράμματος ανάμεσα σε αυτές που διαβάζονται στο βήμα 215 και μια ένδειξη των νημάτων τα οποία έχουν αυτή την ελάχιστη τιμή του απαριθμητή προγράμματος.
Στο βήμα 225, αυτές οι πληροφορίες χρησιμοποιούνται για την ενημέρωση της ενεργής μάσκας και της εκκρεμούς μάσκας, αλλά και για την ενημέρωση της τιμής του κοινού επόμενου ΑΠ η οποία εκδίδεται στη συνέχεια μέσω της διαδρομής 70 προς το χρονοπρογραμματιστή 10. Σε μια υλοποίηση, ο κοινός επόμενος ΑΠ ορίζεται στην ελάχιστη τιμή του ΑΠ που προσδιορίζεται μέσω της εφαρμογής του αλγορίθμου ταξινόμησης στο βήμα 220.
Στο βήμα 230, προσδιορίζεται κατά πόσο ανιχνεύεται απόκλιση στα νήματα. Αυτό θα ισχύει εάν η εκκρεμής μάσκα δεν αποτελείται μόνο από μηδενικά. Εάν ανιχνευτεί απόκλιση τότε η διαδικασία συνεχίζει στο βήμα 235 όπου ενεργοποιείται η σημαία απόκλισης, ενώ διαφορετικά η διαδικασία συνεχίζει στο βήμα 270 όπου η σημαία απόκλισης μηδενίζεται. Μετά το βήμα 235 ή 270, η διαδικασία συνεχίζει στο βήμα 240 όπου μειώνεται ο απαριθμητής εξάρτησης για τη σχετική ομάδα νημάτων και μετά η διαδικασία επιστρέφει στο βήμα 200.
Εάν στο βήμα 210 προσδιοριστεί ότι ο απαιτούμενος έλεγχος είναι ένας έλεγχος σύγκλισης, τότε η διαδικασία συνεχίζει στο βήμα 245. Συγκεκριμένα, σε περίπτωση ενός ελέγχου σύγκλισης, δε θα είχε εκτελεστεί μια εντολή κλάδου ως η τελική εντολή της ρήτρας και ανάλογα δε θα είχε πραγματοποιηθεί καμία λειτουργία εγγραφής στο σχετικό επιπλέον καταχωρητή 39. Ωστόσο, είναι γνωστό ότι όλα τα ενεργά νήματα χρησιμοποιούν από κοινού τον ίδιο ΑΠ, ενώ αυτές οι πληροφορίες θα έχουν χρησιμοποιηθεί για την ενημέρωση του κοινού επόμενου ΑΠ. Ανάλογα, στο βήμα 245 το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 ανακτά τον ενημερωμένο κοινό επόμενο ΑΠ από τον αποθηκευτικό χώρο 15 του κυκλώματος χρονοπρογραμματισμού 10 και στη συνέχεια διαβάζει τον ΑΠ για κάθε εκκρεμές νήμα από το αρχείο καταχωρητών στο βήμα 250. Μετέπειτα, εφαρμόζει τον αλγόριθμό ταξινόμησης στο βήμα 255 και στη συνέχεια ενημερώνει τον κοινό επόμενο ΑΠ, την ενεργή μάσκα και την εκκρεμή μάσκα στο βήμα 260. Αυτά τα βήματα 255, 260 ισοδυναμούν με τα βήματα 220, 225 που εξετάστηκαν νωρίτερα.
Μετέπειτα, προσδιορίζεται κατά πόσο ανιχνεύεται σύγκλιση, το οποίο θα ισχύει σε μια υλοποίηση εάν η εκκρεμής μάσκα είναι τώρα όλο μηδενικά. Εάν ισχύει αυτό, τότε η σημαία απόκλισης μηδενίζεται στο βήμα 270 ενώ διαφορετικά ενεργοποιείται στο βήμα 235. Και πάλι, ο απαριθμητής εξάρτησης μειώνεται στη συνέχεια στο βήμα 240.
Εάν η εναλλακτική υλοποίηση που εξετάστηκε νωρίτερα υλοποιηθεί σε περιπτώσεις στις οποίες δε χρησιμοποιούνται οι απαριθμητές εξάρτησης, ενώ αντίθετα το κύκλωμα χρονοπρογραμματισμού αναλαμβάνει την ευθύνη να ζητήσει από το κύκλωμα ελέγχου του απαριθμητή προγράμματος την πραγματοποίηση λειτουργιών ελέγχου του απαριθμητή προγράμματος όπως απαιτείται, στη συνέχεια το βήμα 240 σε αυτή την περίπτωση αντικαθίσταται από ένα βήμα στο οποίο το κύκλωμα ελέγχου του απαριθμητή προγράμματος ειδοποιεί το κύκλωμα χρονοπρογραμματισμού ότι η λειτουργία ελέγχου του απαριθμητή προγράμματος για τη σχετική ομάδα νημάτων έχει ολοκληρωθεί.
Το Σχήμα 5 συγκεντρώνει σε μορφή πίνακα τις αποφάσεις που λήφθηκαν από τον ανιχνευτή κατάστασης ελέγχου 40 σε μια υλοποίηση, συγκεκριμένα για να προσδιοριστεί κατά πόσο απαιτείται ή όχι μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Όπως δείχνεται στον πίνακα, αυτή η απόφαση βασίζεται τόσο στον τύπο του συμβάντος εξόδου όσο και σε μια ένδειξη κατά πόσο η σημαία απόκλισης είναι εκείνη τη στιγμή ενεργοποιημένη ή απενεργοποιημένη. Όταν ο τύπος του συμβάντος εξόδου είναι κανονικός, δηλ. δε σχετίζεται κάποιος δείκτης σύγκλισης με την τελική εντολή της ρήτρας, και η τελική εντολή της ρήτρας δεν είναι μια εντολή κλάδου, τότε δεν απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος ανεξάρτητα από την τρέχουσα κατάσταση της σημαίας απόκλισης. Ωστόσο, όπως υποδεικνύεται από τον πίνακα 300 εάν η τελική εντολή στη ρήτρα έχει το δείκτη σύγκλισης συσχετισμένο με αυτή, τότε διαπιστώνεται κατά πόσο η σημαία απόκλισης είναι ενεργοποιημένη ή μη. Εάν η σημαία απόκλισης δεν είναι ενεργοποιημένη, τότε δεν απαιτείται κάποια λειτουργία ελέγχου του απαριθμητή προγράμματος, όμως εάν η σημαία απόκλισης είναι ενεργοποιημένη, τότε απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος.
Όπως επίσης δείχνεται στον πίνακα 300, εάν η τελική εντολή στη ρήτρα είναι μια εντολή κλάδου, τότε εάν η σημαία απόκλισης είναι ήδη ενεργοποιημένη, θα απαιτηθεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Ωστόσο, εάν η σημαία απόκλισης δεν είναι ενεργοποιημένη, τότε υπάρχουν δύο επιλογές. Συγκεκριμένα, εάν παραλειφθούν τα προαιρετικά βήματα 115, 120, 125, 130 του Σχήματος 3, τότε, όπως δείχνεται από την επιλογή 1, ο ανιχνευτής κατάστασης ελέγχου θα προσδιορίσει ότι απαιτείται μια λειτουργία ελέγχου του απαριθμητή προγράμματος. Ωστόσο, εάν υλοποιηθούν τα προαιρετικά βήματα 115, 120, 125, 130, τότε, όταν η σημαία απόκλισης δεν είναι ενεργοποιημένη, η απόφαση κατά πόσο απαιτείται ή όχι μια λειτουργία ελέγχου του απαριθμητή προγράμματος θα εξαρτάται από το αποτέλεσμα της αναθεώρησης προελέγχου που πραγματοποιείται από το κύκλωμα προελέγχου 45.
Το Σχήμα 6 απεικονίζει ένα παράδειγμα ακολουθίας για την ομάδα νημάτων X. Συγκεκριμένα, δείχνεται ένας πίνακας 350 όπου κάθε εγγραφή προσδιορίζει μια ενεργή μάσκα, μια εκκρεμή μάσκα, μια κατάσταση σημαίας απόκλισης, μια τιμή κοινού επόμενου ΑΠ και πληροφορίες ενεργών ΑΠ λωρίδων. Ο χρόνος υποτίθεται ότι προχωράει μεταβαίνοντας ανάμεσα στις εγγραφές από την ανώτερη εγγραφή προς την κατώτερη εγγραφή. Ανάλογα, σε μια πρώτη χρονική στιγμή, ο χρονοπρογραμματιστής επιλέγει την ομάδα νημάτων X για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, και ανάλογα πραγματοποιείται μια διαδικασία έκδοσης για την έκδοση των απαιτούμενων εντολών της ρήτρας προς το κύκλωμα επεξεργασίας νημάτων 30. Σε αυτό το παράδειγμα, υποτίθεται ότι η ομάδα νημάτων αποτελείται από τέσσερα νήματα, τα οποία όλα είναι ενεργά. Ανάλογα, η ενεργή μάσκα είναι όλο 1 και η εκκρεμείς μάσκες είναι όλο 0. Περαιτέρω, η σημαία απόκλισης υποτίθεται ότι είναι απενεργοποιημένη σε αυτή τη χρονική στιγμή και ο κοινός επόμενος ΑΠ που χρησιμοποιείται για τον προσδιορισμό των εντολών που εκδίδονται προς κύκλωμα επεξεργασίας νημάτων SIMT υποτίθεται ότι έχει την τιμή 48.
Σε μια μετέπειτα χρονική στιγμή, υποτίθεται ότι το συμβάν εξόδου λαμβάνει χώρα επειδή η τελική εντολή στη ρήτρα είναι μια εντολή κλάδου. Σε αυτό το σημείο, οι εγγραφές για την ενεργή μάσκα, την εκκρεμή μάσκα, τη σημαία απόκλισης και τον κοινό επόμενο PC είναι αμετάβλητα, όμως υποτίθεται ότι οι ΑΠ που υπολογίζονται με την εκτέλεση της εντολής κλάδου για κάθε ένα από τα νήματα είναι όπως δείχνονται στην τελική στήλη (η στήλη ενεργών ΑΠ λωρίδων). Όπως φαίνεται, σε αυτή την περίπτωση δύο από τα νήματα έχουν προχωρήσει σε μια τιμή ΑΠ 128 όμως τα άλλα δύο νήματα έχουν προχωρήσει σε μια τιμή ΑΠ 96. Σε αυτό το σημείο, ο ανιχνευτής κατάστασης ελέγχου 40 θα διεγείρει το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 για την πραγματοποίηση μιας λειτουργίας ελέγχου του ΑΠ, κατά τη διάρκεια της οποίας οι τιμές του ΑΠ ταξινομούνται. Αυτό προκαλεί τον προσδιορισμό από τον αλγόριθμο ταξινόμησης ότι η ελάχιστη τιμή του ΑΠ είναι 96 και ότι πράγματι υπάρχει απόκλιση. Ανάλογα, θα ορίσει την ενεργή μάσκα στην τιμή 0011, την εκκρεμή μάσκα στην τιμή 1100 και θα ενεργοποιήσει τη σημαία απόκλισης. Θα εκδώσει επίσης ως τιμή του κοινού επόμενου ΑΠ το 96.
Σε αυτό το σημείο, ο χρονοπρογραμματιστής είναι ελεύθερος να επιλέξει και πάλι την ομάδα νημάτων X για εκχώρηση στο κύκλωμα επεξεργασίας νημάτων. Όταν το κάνει, όπως υποδεικνύεται από την τέταρτη εγγραφή του πίνακα 350, μόνο δύο από τα νήματα θα είναι ενεργά, δηλαδή τα δύο νήματα που είχαν προχωρήσει στην τιμή του απαριθμητή προγράμματος 96.
Υποτίθεται ότι μετέπειτα όταν προκύπτει το συμβάν εξόδου, ένας δείκτης σύγκλισης σχετίζεται με την τελική εντολή. Όπως θα διαφανεί από την πρότερη συζήτηση του βήματος 155, 160 στο Σχήμα 3, αυτό θα διεγείρει και πάλι την πραγματοποίηση της λειτουργίας ελέγχου του ΑΠ, ενώ επιπλέον θα ενημερωθεί ο κοινός επόμενος ΑΠ στην τιμή 128, ώστε να συμπίπτει με τον κοινό ΑΠ ο οποίος υπολογίστηκε για τα δύο ενεργά νήματα. Όταν πραγματοποιηθεί η λειτουργία ελέγχου του ΑΠ, θα προσδιοριστεί ότι η ελάχιστη τιμή του ΑΠ είναι 128, και ότι πράγματι συνέβη επανασύγκλιση, εφόσον τόσο τα ενεργά νήματα όσο και τα εκκρεμή νήματα χρησιμοποιούν όλα από κοινού την ίδια τιμή του ΑΠ. Ανάλογα, το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 θα επαναφέρει την ενεργή μάσκα σε όλο 1, την εκκρεμή μάσκα σε όλο 0 και θα απενεργοποιήσει τη σημαία απόκλισης.
Το κύκλωμα χρονοπρογραμματισμού 10 είναι και πάλι στη συνέχεια ελεύθερο να επιλέξει την ομάδα νημάτων X για έκδοση στο κύκλωμα επεξεργασίας νημάτων, ενώ υποτίθεται ότι το κάνει σε μια μετέπειτα χρονική στιγμή, όπως υποδηλώνεται από την έβδομη εγγραφή στον πίνακα 350.
Όταν η τρέχουσα ρήτρα στη συνέχεια εξέρχεται αργότερα, υποτίθεται σε αυτή την περίπτωση ότι οφείλεται και πάλι στην εκτέλεση μιας εντολής κλάδου ως την τελική εντολή στη ρήτρα. Σε αυτή την περίπτωση, η επόμενη τιμή του ΑΠ αφήνεται στο 128, ενώ υποτίθεται ότι οι ΑΠ του ενεργού διαδρόμου λαμβάνουν τις τιμές που δείχνονται στον πίνακα 350. Συγκεκριμένα, υποτίθεται ότι τα νήματα 0 και 2 έχουν συνεχίσει σε μια τιμή ΑΠ του 196, ενώ τα νήματα 1 και 3 έχουν συνεχίσει σε μια τιμή ΑΠ του 256. Και πάλι, η λειτουργία ελέγχου του ΑΠ θα διεγερθεί και η πραγματοποίηση της λειτουργίας ελέγχου του ΑΠ θα έχει ως αποτέλεσμα την εκχώρηση του επόμενου κοινού ΑΠ ώστε να έχει μια τιμή του 196, την ενεργοποίηση της σημαίας απόκλισης, τον ορισμό της ενεργής μάσκας στην τιμή 0101 και τον ορισμό της εκκρεμούς μάσκας στην τιμή 1010. Η επεξεργασία μπορεί στη συνέχεια να συνεχίζει όπως εξετάστηκε νωρίτερα.
Όπως σημειώνεται από τον αστερίσκο έναντι κάθε εγγραφής λειτουργίας ελέγχου του ΑΠ στον πίνακα 350, όσο πραγματοποιείται η λειτουργία ελέγχου του ΑΠ για την ομάδα νημάτων X ο χρονοπρογραμματιστής μπορεί να επιλέγει μια άλλη ομάδα νημάτων για εκτέλεση στο κύκλωμα επεξεργασίας νημάτων 30 και ως εκ τούτου ο χρόνος που απαιτείται από το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 για την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος δεν επηρεάζει τη συνολική απόδοση της διάταξης, υποθέτοντας ότι είναι δυνατή η πραγματοποίηση χρήσιμου έργου σε σχέση με άλλες ομάδες νημάτων κατά τη διάρκεια αυτού του χρόνου.
Εφόσον το κύκλωμα ελέγχου του απαριθμητή προγράμματος 50 είναι εκτός της κρίσιμης διαδρομής, ο τρόπος με τον οποίο είναι κατασκευασμένο το κύκλωμα ελέγχου του ΑΠ μπορεί να επιλέγεται κατάλληλα, ώστε να αντισταθμίζεται η διεκπεραιωτική ικανότητα από το εμβαδόν. Αυτό απεικονίζεται σχηματικά από τα Σχήματα 7Α και 7Β.
Συγκεκριμένα, το Σχήμα 7 Α δείχνει μια σειριακή προσέγγιση στην οποία οι τιμές του ΑΠ για τα έγκυρα νήματα δεν εξετάζονται όλες ταυτόχρονα. Συγκεκριμένα, σε μια υλοποίηση, κάθε νήμα μπορεί να εξετάζεται ένα κάθε φορά ή τα νήματα μπορούν να εξετάζονται σε μικρότερες ομάδες όπως τετράδες. Συγκεκριμένα, εάν για παράδειγμα μια ομάδα νημάτων περιελάμβανε 32 νήματα, οι τιμές του ΑΠ μπορεί να εξετάζονται για μια τετράδα (δηλ. για τέσσερα νήματα) κάθε φορά. Όπως υποδεικνύεται από το βήμα 400, οι πληροφορίες του ΑΠ μπορούν να προσκομίζονται από το αρχείο καταχωρητών εντός ενός ή περισσότερων κύκλων και μετά να αποθηκεύονται προσωρινά στο βήμα 410. Ο επόμενος κοινός ΑΠ μπορεί επίσης να αποθηκεύεται προσωρινά στο βήμα 405 εάν απαιτείται (όπως εξετάστηκε νωρίτερα αναφορικά με το Σχήμα 4, οι πληροφορίες του κοινού επόμενου ΑΠ μπορούν να χρησιμοποιούνται εάν η λειτουργία ελέγχου του ΑΠ πραγματοποιείται λόγω πιθανής σύγκλισης). Ένα στάδιο πολύπλεξης (MUX) 415 μπορεί να χρησιμοποιείται στη συνέχεια για την επιλογή της κατάλληλης τιμής του ΑΠ ή των κατάλληλων τιμών του ΑΠ για είσοδο στο συγκριτή 420. Ο συγκριτής 420 διατάσσεται ώστε να προσδιορίζει την ελάχιστη τιμή του ΑΠ ανάμεσα σε αυτές που παρέχονται από το στάδιο MUX 415 και το τρέχον περιεχόμενο του στοιχείου αποθήκευσης 425 (εκτός μιας πρώτης επανάληψης στην οποία το περιεχόμενο του στοιχείου αποθήκευσης 425 αγνοείται αποτελεσματικά και ανάλογα μετά την πρώτη επανάληψη το στοιχείο αποθήκευσης 425 αναπαράγεται με αυτό που αρχικά θεωρείται ότι είναι η ελάχιστη τιμή του ΑΠ μετά την πρώτη σύγκριση).
Όπως υποδεικνύεται από το βέλος 440, η διαδικασία μπορεί στη συνέχεια να επαναλαμβάνεται μέχρι να εξεταστεί η τιμή του ΑΠ για κάθε έγκυρο νήμα, και ανάλογα μέχρι να προσδιοριστεί η πραγματική ελάχιστη τιμή του ΑΠ. Αυτή η τελική ελάχιστη τιμή του ΑΠ μπορεί να συλλαμβάνεται στο στοιχείο αποθήκευσης 430 και στη συνέχεια να εξάγεται ως ο κοινός επόμενος ΑΠ. Σε μια υλοποίηση, όλες οι πληροφορίες του ΑΠ που απαιτούνται από το αρχείο καταχωρητών μπορούν να διαβάζονται αρχικά, ώστε το βήμα 400 να μην απαιτεί επανάληψη, ενώ η διαδικασία απλά επαναλαμβάνει τα υπόλοιπα στάδια μέχρι να πραγματοποιηθεί ταξινόμηση όλων των τιμών του ΑΠ.
Το Σχήμα 7Β απεικονίζει μια πλήρως παράλληλη προσέγγιση. Και πάλι οι πληροφορίες προσκομίζονται από το αρχείο καταχωρητών στο βήμα 450 και αποθηκεύονται προσωρινά στο βήμα 460 και πάλι ο κοινός επόμενος ΑΠ μπορεί επίσης να αποθηκεύεται προσωρινά στο βήμα 455. Το κύκλωμα MUX 465 χρησιμοποιείται στη συνέχεια για την επιλογή για κάθε έγκυρο νήμα της σχετικής τιμής του ΑΠ, ώστε να είναι δυνατή η σύγκριση των τιμών του ΑΠ για όλα τα έγκυρα νήματα σε ένα μόνο στάδιο στο βήμα 470 ώστε να παράγεται η τιμή του κοινού επόμενου ΑΠ.
Μολονότι δε δείχνεται για λόγους απλότητας στα Σχήματα 7Α και 7Β, θα εκτιμηθεί ότι θα παρασχεθούν επίσης επιπλέον εξαρτήματα για την κατασκευή της ενεργής και της εκκρεμούσας μάσκας και την ενεργοποίηση της σημαίας απόκλισης. Όταν χρησιμοποιείται η προσέγγιση του Σχήματος 7Α, η ενεργή και εκκρεμούσα μάσκα μπορούν να δημιουργούνται χρησιμοποιώντας μια επαναληπτική διαδικασία ώστε μέχρι να πραγματοποιηθεί η τελική επανάληψη, η ενεργή και η εκκρεμούσα μάσκα έχουν αναπαραχθεί πλήρως. Η σημαία απόκλισης στη συνέχεια ενεργοποιείται ή απενεργοποιείται στο τέλος της διαδικασίας μόλις προσδιοριστεί κατά πόσο η εκκρεμούσα μάσκα είναι όλο 0 ή όχι (όλα τα 0 στην εκκρεμούσα μάσκα να υποδηλώνουν ότι η σημαία απόκλισης θα πρέπει να είναι καθαρή, ενώ η παρουσία οποιοσδήποτε λογικής τιμής 1 στην εκκρεμούσα μάσκα υποδηλώνει ότι η σημαία απόκλισης θα πρέπει να ενεργοποιηθεί).
Σύμφωνα με τις υλοποιήσεις που περιγράφηκαν παραπάνω, οι επιπλέον καταχωρητές 39 εγγράφονται από το κύκλωμα επεξεργασίας νημάτων μόνο μετά την εκτέλεση μιας εντολής κλάδου. Εφόσον οι εντολές κλάδου συνήθως δεν προσδιορίζουν έναν καταχωρητή προορισμού εντός του αρχείου καταχωρητών 35, η διαθέσιμη εσοχή εγγραφής (η οποία διαφορετικά θα παρέμενε αχρησιμοποίητη) μπορεί να χρησιμοποιείται για την πραγματοποίηση της απαιτούμενης εγγραφής στο σχετικό επιπλέον καταχωρητή 39 που έχει εκχωρηθεί στην τρέχουσα ομάδα νημάτων. Συνεπώς, η ανάγκη εγγραφής στους επιπλέον καταχωρητές δεν έχει ως αποτέλεσμα κάποια επίπτωση στην απόδοση.
Ωστόσο, εάν σε εναλλακτική υλοποίηση απαιτούνταν ένας ή περισσότεροι επιπλέον κύκλοι για την πραγματοποίηση της εγγραφής στους επιπλέον καταχωρητές, τότε θα μπορούσε να χρησιμοποιείται η εναλλακτική προσέγγιση, όπως δείχνεται σχηματικά στο Σχήμα 8. Συγκεκριμένα, το βήμα 500 αντικαθιστά το βήμα 110 του Σχήματος 3. Συνεπώς, αντί της εγγραφής στους καταχωρητές, εάν το συμβάν εξόδου οφειλόταν στην εκτέλεση μιας εντολής κλάδου, το κύκλωμα επεξεργασίας νημάτων κάνει εγγραφή ορισμένων πληροφοριών σε ένα χώρο προσωρινής αποθήκευσης, όπως σε μια προσωρινή μνήμη. Συγκεκριμένα, σε μια υλοποίηση, αποθηκεύει τη διεύθυνση προορισμού σε περίπτωση επιλογής του κλάδου, τη διεύθυνση προορισμού σε περίπτωση μη επιλογής του κλάδου και μια ένδειξη για κάθε ενεργό νήμα κατά πόσο επελέγη ή δεν επελέγη ο κλάδος. Το υπόλοιπο του Σχήματος 3 τότε παραμένει αμετάβλητο.
Εάν τα βήματα επεξεργασίας του Σχήματος 3 έχουν ως αποτέλεσμα τη διέγερση ενός ελέγχου του ΑΠ, τότε στις περιπτώσεις στις οποίες είχε πραγματοποιηθεί το βήμα 500, αυτό θα οφείλεται στο γεγονός ότι έχει συμβεί μια πιθανή απόκλιση και ανάλογα θα έχει επιλεγεί η διαδρομή ναι από το βήμα 210 του Σχήματος 4. Στη θέση του βήματος 215 του Σχήματος 4, πραγματοποιείται το βήμα 510 του Σχήματος 8, όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος κατασκευάζει την τιμή του ΑΠ για κάθε ενεργό νήμα από τα περιεχόμενα της προσωρινής μνήμης. Για τα νήματα που εκκρεμούν, μπορεί ακόμη να διαβάζει τις τιμές του ΑΠ από το αρχείο καταχωρητών. Όπως υποδεικνύεται από το βήμα 520, η διαδικασία μπορεί στη συνέχεια να συνεχίζει από το βήμα 220 του Σχήματος 4, αλλά με το επιπλέον βήμα ότι, εάν ανιχνευθεί απόκλιση στο βήμα 230, τότε επιπλέον της ενεργοποίησης της σημαίας απόκλισης, το κύκλωμα ελέγχου του απαριθμητή προγράμματος θα πραγματοποιεί μια λειτουργία εγγραφής στο σχετικό επιπλέον καταχωρητή 39 εντός του αρχείου καταχωρητών 35 ώστε να ενημερώνει τις πληροφορίες τιμής του ΑΠ για κάθε ενεργό νήμα. Για την υλοποίηση μιας τέτοιας εναλλακτικής υλοποίησης, θα ήταν απαραίτητη η παροχή μιας θύρας εγγραφής για το κύκλωμα ελέγχου του απαριθμητή προγράμματος ώστε να έχει τη δυνατότητα εγγραφής στους επιπλέον καταχωρητές 39. Ως μια περαιτέρω εναλλακτική, εάν είναι επιθυμητό το κύκλωμα ελέγχου του απαριθμητή προγράμματος μπορεί να διατάσσεται ώστε να πραγματοποιεί μια λειτουργία εγγραφής στο σχετικό επιπλέον καταχωρητή 39 εντός του αρχείου καταχωρητών 35 ώστε να ενημερώνει τις πληροφορίες τιμής του ΑΠ για κάθε ενεργό νήμα, ανεξάρτητα εάν ανιχνεύθηκε απόκλιση στο βήμα 230.
Θα εκτιμηθεί ότι οι υλοποιήσεις που περιγράφηκαν παραπάνω παρέχουν έναν ιδιαίτερα αποδοτικό ως προς το εμβαδόν μηχανισμό για την πραγματοποίηση της απαιτούμενης διαδικασίας ταξινόμησης του ΑΠ για την ανίχνευση της απόκλισης και της επανασύγκλισης των νημάτων μιας ομάδας νημάτων σε έναν επεξεργαστή SIMT. Η επέκταση του αρχείου καταχωρητών για την υποδοχή των απαραίτητων πληροφοριών του απαριθμητή προγράμματος παρέχει έναν ιδιαίτερα αποδοτικό ως προς το εμβαδόν μηχανισμό και επίσης σε μια υλοποίηση μπορεί να ενημερώνεται χωρίς να επιφέρει κάποια επιβάρυνση στην απόδοση. Περαιτέρω, μια τέτοια προσέγγιση επιτρέπει την τοποθέτηση του κυκλώματος ελέγχου του απαριθμητή προγράμματος εκτός της κρίσιμης διαδρομής, παρέχοντας ένα μεγάλο βαθμό ευελιξίας σχετικά με τον τρόπο κατασκευής του κυκλώματος ελέγχου του απαριθμητή προγράμματος, δίνοντας τη δυνατότητα αντιστάθμισης ανάμεσα στη διεκπεραιωτικότητα του κυκλώματος ελέγχου του απαριθμητή προγράμματος και των απαιτήσεών του σε εμβαδόν. Εφόσον η λειτουργία ελέγχου του απαριθμητή προγράμματος πραγματοποιείται εκτός της κρίσιμης διαδρομής, το κύκλωμα χρονοπρογραμματισμού είναι ελεύθερο να εκχωρεί και άλλες ομάδες νημάτων στο κύκλωμα επεξεργασίας νημάτων όσο πραγματοποιείται η λειτουργία ελέγχου του απαριθμητή προγράμματος.
Στην παρούσα εφαρμογή, οι λέξεις “διαμορφωμένο για...” χρησιμοποιούνται με τη σημασία ότι ένα στοιχείο μιας διάταξης έχει μια διαμόρφωση ικανή να εκτελεί την καθορισμένη λειτουργία. Σε αυτό το πλαίσιο, μια “διαμόρφωση” σημαίνει μια διάταξη ή έναν τρόπο διασύνδεσης υλικού ή λογισμικού. Για παράδειγμα, η διάταξη μπορεί να έχει ένα αποκλειστικό υλικό το οποίο παρέχει την καθορισμένη λειτουργία ή ένας επεξεργαστής ή μια άλλη διάταξη επεξεργασίας μπορεί να προγραμματίζεται ώστε να πραγματοποιεί τη λειτουργία. Η φράση “διαμορφωμένο για” δεν υπονοεί ότι το στοιχείο διάταξης πρέπει να αλλάζεται με κάποιο τρόπο ώστε να παρέχεται η καθορισμένη λειτουργία.
Μολονότι επεξηγηματικές υλοποιήσεις της εφεύρεσης περιγράφηκαν λεπτομερώς στο παρόν αναφορικά με τα συνοδευτικά σχεδιαγράμματα, πρέπει να γίνει κατανοητό ότι η εφεύρεση δεν περιορίζεται σε αυτές ακριβώς τις υλοποιήσεις και ότι διάφορες αλλαγές, προσθήκες και τροποποιήσεις μπορούν να πραγματοποιούνται σε αυτή από άτομα έμπειρα στην τέχνη χωρίς απόκλιση από το αντικείμενο και το πνεύμα της εφεύρεσης όπως ορίζεται από τις συνημμένες αξιώσεις. Για παράδειγμα, θα ήταν δυνατοί διάφοροι συνδυασμοί των χαρακτηριστικών των εξαρτώμενων αξιώσεων με τα χαρακτηριστικά των ανεξάρτητων αξιώσεων χωρίς απόκλιση από το αντικείμενο της παρούσας εφεύρεσης.

Claims (20)

  1. ΑΞΙΩΣΕΙΣ 1. Μια διάταξη η οποία περιλαμβάνει: ένα κύκλωμα χρονοπρογραμματισμού για την επιλογή προς εκτέλεση μιας πρώτης ομάδας νημάτων από ένα πλήθος ομάδων νημάτων, ένα κύκλωμα επεξεργασίας νημάτων, το οποίο αποκρίνεται στο κύκλωμα χρονοπρογραμματισμού, για την εκτέλεση των ενεργών νημάτων της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος ο οποίος χρησιμοποιείται από κοινού ανάμεσα στα ενεργά νήματα, με το κύκλωμα επεξεργασίας νημάτων να αποκρίνεται σε ένα συμβάν εξόδου το οποίο συμβαίνει για την πρώτη ομάδα νημάτων, για να προσδιοριστεί κατά πόσο υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος, με το κύκλωμα επεξεργασίας νημάτων να έχει χώρο αποθήκευσης καταχωρητών για την αποθήκευση πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων, και με το κύκλωμα ελέγχου του απαριθμητή προγράμματος να έχει πρόσβαση στον εν λόγω χώρο αποθήκευσης καταχωρητών και, σε περίπτωση παρουσίας της εν λόγω κατάστασης ελέγχου του απαριθμητή προγράμματος, να πραγματοποιεί μια λειτουργία ελέγχου του απαριθμητή προγράμματος για την ενημέρωση του κοινού απαριθμητή προγράμματος και μια ένδειξη ενεργού νήματος για την πρώτη ομάδα νημάτων, με το κύκλωμα χρονοπρογραμματισμού να διατάσσεται ώστε να επιλέγει, για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, μια δεύτερη ομάδα νημάτων από το εν λόγω πλήθος ομάδων νημάτων διαφορετική από την εν λόγω πρώτη ομάδα νημάτων, κατά την αναμονή πραγματοποίησης της λειτουργίας ελέγχου του απαριθμητή προγράμματος από το κύκλωμα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
  2. 2. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου ο εν λόγω χώρος αποθήκευσης καταχωρητών περιλαμβάνει τουλάχιστον έναν καταχωρητή για κάθε ομάδα νημάτων στο εν λόγω πλήθος ομάδων νημάτων, ώστε να επιτρέπει τη διατήρηση των πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα για κάθε μια από το πλήθος των ομάδων νημάτων.
  3. 3. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, η οποία περαιτέρω περιλαμβάνει: ένα αρχείο καταχωρητών το οποίο περιλαμβάνει ένα πλήθος καταχωρητών οι οποίοι προσδιορίζονται από εντολές που εκτελούνται για κάθε νήμα, και ο αποθηκευτικός χώρος καταχωρητών περιλαμβάνει έναν αριθμό επιπλέον καταχωρητών οι οποίοι δεν προσδιορίζονται από τις εν λόγω εντολές.
  4. 4. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου το εν λόγω συμβάν εξόδου προσδιορίζεται ότι υφίσταται τουλάχιστον σε απόκριση της εκτέλεσης μιας εντολής αλλαγής ροής εντολών από τα ενεργά νήματα της πρώτης ομάδας νημάτων.
  5. 5. Μια διάταξη όπως αξιώνεται στην Αξίωση 4, όπου το κύκλωμα επεξεργασίας νημάτων αποκρίνεται στην εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών για εγγραφή στον αποθηκευτικό χώρο καταχωρητών, για κάθε ενεργό νήμα, μιας τιμής απαριθμητή προγράμματος υπολογισμένης με την εκτέλεση της εντολής αλλαγής ροής εντολών.
  6. 6. Μια διάταξη όπως αξιώνεται στην Αξίωση 5, όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος έχει πρόσβαση ανάγνωσης στον εν λόγω αποθηκευτικό χώρο καταχωρητών κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος.
  7. 7. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου: το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος αξιολογώντας τον απαριθμητή προγράμματος που σχετίζεται με κάθε νήμα χρησιμοποιώντας έναν ντετερμινιστικό κανόνα ταξινόμησης, για τον προσδιορισμό μιας επόμενης τιμής του απαριθμητή προγράμματος και μιας ένδειξης των νημάτων των οποίων ο απαριθμητής προγράμματος είναι στην επόμενη τιμή του απαριθμητή προγράμματος, το κύκλωμα ελέγχου του απαριθμητή προγράμματος κατασκευάζεται ώστε να υιοθετεί μια από τις ακόλουθες υλοποιήσεις σε εξάρτηση μιας επιθυμητής διεκπεραιωτικότητας : (ϊ) για παράλληλη αξιολόγηση του απαριθμητή προγράμματος όλων των νημάτων της ομάδας νημάτων, (ii) για την πραγματοποίηση μιας επαναλαμβανόμενης ακολουθίας βημάτων αξιολόγησης, όπου σε κάθε επανάληψη της επαναλαμβανόμενης ακολουθίας αξιολογείται ένα διαφορετικό υποσύνολο των απαριθμητών προγράμματος και ένα αποτέλεσμα της τελικής επανάληψης υποδεικνύει την επόμενη τιμή του απαριθμητή προγράμματος και τα νήματα των οποίων ο απαριθμητής προγράμματος είναι στην επόμενη τιμή του απαριθμητή προγράμματος.
  8. 8. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος αξιολογώντας τον απαριθμητή προγράμματος που σχετίζεται με κάθε νήμα χρησιμοποιώντας έναν ντετερμινιστικό κανόνα ταξινόμησης, για τον προσδιορισμό μιας ελάχιστης τιμής του απαριθμητή προγράμματος και μιας ένδειξης των νημάτων των οποίων ο απαριθμητής προγράμματος είναι στην ελάχιστη τιμή του απαριθμητή προγράμματος.
  9. 9. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να ενεργοποιεί μια σημαία απόκλισης όταν η πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος υποδεικνύει ότι τα νήματα της πρώτης ομάδας νημάτων έχουν αποκλίνει.
  10. 10. Μια διάταξη όπως αξιώνεται στην Αξίωση 9, όπου το εν λόγω συμβάν εξόδου συμβαίνει τουλάχιστον όταν: το κύκλωμα επεξεργασίας νημάτων ολοκληρώνει την εκτέλεση μιας εκχωρηθείσας βαθμίδας κώδικα για την πρώτη ομάδα νημάτων, μια εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών, μια ένδειξη σύγκλισης σχετίζεται με την εντολή που εκτελείται εκείνη τη στιγμή.
  11. 11. Μια διάταξη όπως αξιώνεται στην Αξίωση 10, όπου το κύκλωμα επεξεργασίας νημάτων διατάσσεται ώστε να προσδιορίζει ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος όταν είναι ενεργοποιημένη η σημαία απόκλισης και είτε η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών είτε η ένδειξη σύγκλισης σχετίζεται με την εντολή που εκτελείται εκείνη τη στιγμή.
  12. 12. Μια διάταξη όπως αξιώνεται στην Αξίωση 11, όπου το κύκλωμα επεξεργασίας νημάτων διατάσσεται περαιτέρω για να προσδιοριστεί ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος όταν η σημαία απόκλισης είναι απενεργοποιημένη και η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών.
  13. 13. Μια διάταξη όπως αξιώνεται στην Αξίωση 11, όπου το κύκλωμα επεξεργασίας νημάτων περιλαμβάνει ένα κύκλωμα προελέγχου το οποίο διατάσσεται, όταν η σημαία απόκλισης είναι απενεργοποιημένη και η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών, για την πραγματοποίηση μιας λειτουργίας προελέγχου για να προσδιοριστεί κατά πόσο υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος.
  14. 14. Μια διάταξη όπως αξιώνεται στην Αξίωση 10, όπου τα περιεχόμενα του αποθηκευτικού χώρου καταχωρητών ενημερώνονται μόνο όταν η εντολή που εκτελείται εκείνη τη στιγμή είναι μια εντολή αλλαγής ροής εντολών.
  15. 15. Μια διάταξη όπως αξιώνεται στην Αξίωση 14, όπου το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε, κατά την πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος λόγω της ενεργής εν λόγω ένδειξης σύγκλισης, να διαβάζονται οι πληροφορίες απαριθμητή προγράμματος από τον αποθηκευτικό χώρο καταχωρητών για νήμα που εκκρεμεί από την πρώτη ομάδα νημάτων και να συγκρίνονται αυτές οι πληροφορίες απαριθμητή προγράμματος με τον κοινό απαριθμητή προγράμματος όπως ενημερώνεται για το πρώτο νήμα προγράμματος μετά το συμβάν εξόδου.
  16. 16. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου όταν προσδιορίζεται ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος από το κύκλωμα επεξεργασίας νημάτων, το κύκλωμα ελέγχου του απαριθμητή προγράμματος διεγείρεται ώστε να πραγματοποιεί τη λειτουργία ελέγχου του απαριθμητή προγράμματος από ένα από το κύκλωμα επεξεργασίας νημάτων και το κύκλωμα χρονοπρογραμματισμού.
  17. 17. Μια διάταξη όπως αξιώνεται στην Αξίωση 1, όπου: όταν προσδιορίζεται ότι υφίσταται η κατάσταση ελέγχου του απαριθμητή προγράμματος από το κύκλωμα επεξεργασίας νημάτων, το κύκλωμα επεξεργασίας νημάτων διατάσσεται ώστε να προσαρμόζει σε μια πρώτη κατεύθυνση μια τιμή εξάρτησης για την πρώτη ομάδα νημάτων και να εκπέμπει ένα σήμα ελέγχου προς το κύκλωμα ελέγχου του απαριθμητή προγράμματος για τη διέγερσης της πραγματοποίησης της λειτουργίας ελέγχου του απαριθμητή προγράμματος, το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται ώστε να ολοκληρώνει τη λειτουργία ελέγχου του απαριθμητή προγράμματος για την προσαρμογή, σε μια δεύτερη κατεύθυνση αντίθετη της εν λόγω πρώτης κατεύθυνσης, της τιμής εξάρτησης για την πρώτη ομάδα νημάτων, και αποτρέπεται η επιλογή της πρώτης ομάδας νημάτων από το κύκλωμα χρονοπρογραμματισμού για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων εκτός εάν η τιμή εξάρτησης για την πρώτη ομάδα νημάτων έχει μια τιμή που υποδηλώνει ότι δεν υπάρχουν λειτουργίες ελέγχου του απαριθμητή προγράμματος που εκκρεμούν για την πρώτη ομάδα νημάτων.
  18. 18. Μια διάταξη όπως αξιώνεται στην Αξίωση 4, όπου το κύκλωμα επεξεργασίας νημάτων αποκρίνεται στην εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών για την εγγραφή σε έναν προσωρινό αποθηκευτικό χώρο μιας διεύθυνσης επιλογής κλάδου, μιας διεύθυνσης μη επιλογής κλάδου και μιας ένδειξης, για κάθε ενεργό νήμα, κατά πόσο επελέγη ένας κλάδος σε απόκριση της εκτέλεσης της εν λόγω εντολής αλλαγής ροής εντολών.
  19. 19. Μια διάταξη όπως αξιώνεται στην Αξίωση 18, όπου: το κύκλωμα ελέγχου του απαριθμητή προγράμματος αποκρίνεται στην εκτέλεση της λειτουργίας ελέγχου του απαριθμητή προγράμματος για πρόσβαση στον προσωρινό αποθηκευτικό χώρο και ανακατασκευή, για κάθε ενεργό νήμα, μιας τιμής του απαριθμητή προγράμματος υπολογισμένης με την εκτέλεση της εν λόγω εντολής αλλαγής ροής εντολών, το κύκλωμα ελέγχου του απαριθμητή προγράμματος διατάσσεται, όταν η πραγματοποίηση της λειτουργίας ελέγχου του απαριθμητή προγράμματος υποδηλώνει ότι τα νήματα της πρώτης ομάδας νημάτων έχουν αποκλίνει, για την εγγραφή της τιμής του απαριθμητή προγράμματος για κάθε ενεργό νήμα στον αποθηκευτικό χώρο καταχωρητών.
  20. 20. Μια- μέθοδος εκτέλεσης ομάδων νημάτων σε μια διάταξη με ένα κύκλωμα χρονοπρογραμματισμού για την επιλογή προς εκτέλεση μιας πρώτης ομάδας νημάτων από ένα πλήθος ομάδων νημάτων και ένα κύκλωμα επεξεργασίας νημάτων, το οποίο αποκρίνεται στο κύκλωμα χρονοπρογραμματισμού, για την εκτέλεση των ενεργών νημάτων της πρώτης ομάδας νημάτων σε εξάρτηση από έναν κοινό απαριθμητή προγράμματος που χρησιμοποιείται από κοινού ανάμεσα στα ενεργά νήματα, με τη μέθοδο να περιλαμβάνει: τον προσδιορισμό, σε απόκριση ενός συμβάντος εξόδου από το κύκλωμα επεξεργασίας νημάτων που συμβαίνει για την πρώτη ομάδα νημάτων, κατά πόσο υφίσταται μια κατάσταση ελέγχου του απαριθμητή προγράμματος, την παροχή στο κύκλωμα επεξεργασίας νημάτων αποθηκευτικού χώρου καταχωρητών για την αποθήκευση των πληροφοριών του απαριθμητή προγράμματος για κάθε νήμα της πρώτης ομάδας νημάτων, τη χρήση ενός κυκλώματος ελέγχου του απαριθμητή προγράμματος, σε περίπτωση παρουσίας της εν λόγω κατάστασης ελέγχου του απαριθμητή προγράμματος, για την πραγματοποίηση μιας λειτουργίας ελέγχου του απαριθμητή προγράμματος για την ενημέρωση του κοινού απαριθμητή προγράμματος και μιας ένδειξης ενεργών νημάτων για την πρώτη ομάδα νημάτων, με το κύκλωμα ελέγχου του απαριθμητή προγράμματος να έχει πρόσβαση στον εν λόγω αποθηκευτικό χώρο καταχωρητών κατά τη διάρκεια της πραγματοποίησης της λειτουργίας ελέγχου του απαριθμητή
    προγραμματος κα τον εξαναγκασμό του κυκλώματος χρονοπρογραμματισμού να επιλέξει, για εκτέλεση από το κύκλωμα επεξεργασίας νημάτων, μια δεύτερη ομάδα νημάτων από το εν λόγω πλήθος των ομάδων νημάτων διαφορετική από την εν λόγω πρώτη ομάδα νημάτων, κατά τη διάρκεια της αναμονής της πραγματοποίησης της λειτουργίας ελέγχου του απαριθμητή προγράμματος από το κύκλωμα ελέγχου του απαριθμητή προγράμματος για την πρώτη ομάδα νημάτων.
GR20180200009U 2017-09-06 2017-09-06 Μια διαταξη εκτελεσης ομαδων νηματων GR20180200009U (el)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GR20180200009U GR20180200009U (el) 2017-09-06 2017-09-06 Μια διαταξη εκτελεσης ομαδων νηματων

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GR20180200009U GR20180200009U (el) 2017-09-06 2017-09-06 Μια διαταξη εκτελεσης ομαδων νηματων

Publications (1)

Publication Number Publication Date
GR20180200009U true GR20180200009U (el) 2019-05-09

Family

ID=66677950

Family Applications (1)

Application Number Title Priority Date Filing Date
GR20180200009U GR20180200009U (el) 2017-09-06 2017-09-06 Μια διαταξη εκτελεσης ομαδων νηματων

Country Status (1)

Country Link
GR (1) GR20180200009U (el)

Similar Documents

Publication Publication Date Title
US7120784B2 (en) Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment
US9477479B2 (en) Instruction prefetch throttling using instruction count and branch prediction
JP3512678B2 (ja) キャッシュメモリ制御装置および計算機システム
US7533227B2 (en) Method for priority scheduling and priority dispatching of store conditional operations in a store queue
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
KR102177871B1 (ko) 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
JP6546584B2 (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
KR20000062468A (ko) 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
US20030126515A1 (en) Automatic testing for multi-core architecture
KR102590180B1 (ko) 자격 메타데이터를 관리하는 장치 및 방법
US10761885B2 (en) Apparatus and method of executing thread groups
JP6846405B2 (ja) 条件付きロードの抑制
EP2159691A1 (en) Simultaneous multithreaded instruction completion controller
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
US9792213B2 (en) Mitigating busy time in a high performance cache
GR20180200009U (el) Μια διαταξη εκτελεσης ομαδων νηματων
US6775740B1 (en) Processor having a selector circuit for selecting an output signal from a hit/miss judgement circuit and data from a register file
EP3330848B1 (en) Detection of stack overflow in a multithreaded processor
US20080016292A1 (en) Access controller and access control method
US8423719B2 (en) Apparatus, processor and method of controlling cache memory
CN111742304A (zh) 当调试要在处理电路上执行的程序时访问元数据的方法
US20230289185A1 (en) Data processing apparatus, method and virtual machine
US10423510B2 (en) Apparatus and method for predicting a redundancy period