Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεKarena Traino Τροποποιήθηκε πριν 10 χρόνια
1
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Η Αρχιτεκτονική των Επεξεργαστών Ψ.Ε.Σ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου ΕΣ 08 – Επεξεργαστές Ψηφιακών Σημάτων
2
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα ◊Kuo [2005]: Chapters 1 & 4 ◊Lapsley [2002]: Chapter 5 ◊Hayes [2000]: Κεφάλαιo 8 ◊TMS320C6000 CPU and Instruction Set Reference Guide ◊Σημειώσεις διδάσκοντα Βιβλιογραφία Ενότητας
3
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Εισαγωγή Kuo [2005]: Chapters 1 & 4 Lapsley [2002]: Chapter 5 Hayes [2000]: Κεφάλαιo 8 TMS320C6000 CPU and Instruction Set Reference Guide [pdf] Kuo [2005]: Chapters 1 & 4 Lapsley [2002]: Chapter 5 Hayes [2000]: Κεφάλαιo 8 TMS320C6000 CPU and Instruction Set Reference Guide [pdf] ◊Η γενική δομή της αρχιτεκτονικής Επεξεργαστών Ψ.Ε.Σ επιδεικνύεται στο διπλανό σχήμα: ◊Η αρχιτεκτονική αυτή έχει σχεδιαστεί για βέλτιστη υλοποίηση της λειτουργίας FIR (Finite Impulse Response) filtering ◊Περιλαμβάνει δύο (ένα για εντολές, ένα για δεδομένα) ή τρεις (ένα για εντολές, δύο για δεδομένα) διαδρόμους δεδομένων (data buses) για εκτέλεση εντολών MAC (Multiply Accumulate) σε ένα κύκλο εντολής. Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
4
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Οι επεξεργαστές Ψ.Ε.Σ αποτελούνται από τρεις δομικές μονάδες οι οποίες μπορούν και λειτουργούν παράλληλα: ◊Τον Ελεγκτή Προγράμματος, ο οποίος καθορίζει τη σειρά εκτέλεσης των εντολών ενός προγράμματος ◊Την Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ – CPU: Central Processing Unit), στην οποία εκτελούνται όλες οι εντολές και οι αριθμητικές πράξεις ◊Τις Γεννήτριες Διευθύνσεων Δεδομένων (DAGEN – Data Address Generator), οι οποίες υπολογίζουν τη διεύθυνση των δεδομένων που θα χρησιμοποιηθούν στην επόμενη εντολή ◊Συνήθως αυτό που κάνουν οι γεννήτριες διευθύνσεων δεδομένων είναι να αυξάνουν ένα μετρητή κατά ένα ώστε η διεύθυνση μνήμης να δείχνει προς τα επόμενα δεδομένα ◊Εκτός από τα παραπάνω δομικά δομικά στοιχεία οι επεξεργαστές Ψ.Ε.Σ περιλαμβάνουν και δύο ξεχωριστούς διαδρόμου δεδομένων: ◊Διάδρομος Προγράμματος (Program Bus) μέσω του οποίου μεταφέρονται (κυρίως) οι εντολές προς εκτέλεση στη ΚΜΕ ◊Διάδρομος Δεδομένων (Data Bus) μέσω του οποίου μεταφέρονται τα δεδομένα που θα τύχουν επεξεργασίας στη ΚΜΕ Βασικά Δομικά Στοιχεία Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
5
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Οι διάδρομοι δεδομένων και προγράμματος υποδιαιρούνται σε επιμέρους διαδρόμους ως εξής: ◊Διάδρομος δεδομένων ◊Διάδρομος διεύθυνσης ανάγνωσης δεδομένων (Data Read Address Bus), ο οποίος μεταφέρει τη διεύθυνση από την οποία θα διαβαστούν τα δεδομένα ◊Διάδρομος ανάγνωσης δεδομένων (Data Read Bus), ο οποίος μεταφέρει τα δεδομένα από τη μνήμη στη ΚΜΕ ◊Διάδρομος διεύθυνσης εγγραφής δεδομένων (Data Write Address Bus), ο οποίος μεταφέρει τη διεύθυνση στην οποία θα εγγραφούν τα δεδομένα ◊Διάδρομος εγγραφής δεδομένων (Data Write Address Bus), ο οποίος μεταφέρει τα δεδομένα που θα εγγραφούν στη μνήμη. ◊Διάδρομος Προγράμματος ◊Διάδρομος διεύθυνσης ανάγνωσης προγράμματος (Program Address Bus), ο οποίος μεταφέρει τη διεύθυνση από την οποία θα διαβαστούν τα δεδομένα προγράμματος (π.χ εντολές) ◊Διάδρομος ανάγνωσης προγράμματος (Program Read Bus), ο οποίος μεταφέρει τα δεδομένα προγράμματος (π.χ εντολές) από τη μνήμη στη ΚΜΕ Διάδρομοι Δεδομένων και Προγράμματος Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
6
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η κεντρική μονάδα επεξεργασίας είναι υπεύθυνη για την εκτέλεση των εντολών προγράμματος και την επεξεργασία των δεδομένων. ◊Η δομή της διαφέρει από επεξεργαστή σε επεξεργαστή αλλά συνήθως περιλαμβάνει τις ακόλουθες μονάδες: ◊Ολισθητές - Shifters (Εισόδου, εξόδου και γινομένου) ◊Τον Πολλαπλασιαστή (Multiplier) ◊Την αριθμητική και λογική μονάδα (ALU – Arithmetic Logic Unit) ◊To Συσσωρευτή (Accumulator) ◊Στο επόμενο σχήμα δίνεται μια τυπική αρχιτεκτονική της KME για επεξεργαστές σταθερής υποδιαστολής και η συγκεκριμένη αρχιτεκτονική της KME για την οικογένεια επεξεργαστών TMS320C2000 Η Κεντρική Μονάδα Επεξεργασίας Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
7
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Η Αρχιτεκτονική της ΚΜΕ Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
8
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Ολισθητές ◊Οι ολισθητές πραγματοποιούν ολίσθηση της συμβολοσειράς από bit δεξιά ή αριστερά (που είναι το πιο συνηθισμένο στους επεξεργαστές Ψ.Ε.Σ). ◊Για μη προσημασμένους δυαδικούς αριθμούς, ή για προσημασμένους θετικούς δυαδικούς αριθμούς έχουμε: ◊Ολίσθηση δεξιά 1 bit= διαίρεση του αριθμού με το δύο ◊Ολίσθηση αριστερά 1 bit= πολλαπλασιασμός του αριθμού με το δύο ◊Παράδειγμα: ◊Έστω η αναπαράσταση αριθμών στο format Q.7. Να βρεθεί το αποτέλεσμα της ολίσθησης (α) δεξιά και (β) αριστερά κατά δύο (2) bit των αριθμών 00011101 (=0.2266) 10011101 (=-0.7734) ◊Με βάση τα αποτελέσματα του παραπάνω παραδείγματος να αιτιολογήσετε το γεγονός ότι οι πεξεργαστές Ψ.Ε.Σ χρησιμοποιούν ολίσθηση μόνο προς τα αριστερά. Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
9
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Ολισθητές (ΙΙ) ◊Στην Κεντρική Μονάδα Επεξεργασίας υπάρχουν τρεις ομάδες ολισθητών: ◊Ολισθητές εισόδου – Πραγματοποιούν ολίσθηση των δεδομένων εισόδου (προερχόμενων από τη μνήμη δεδομένων) για ταχύτερη υλοποίηση πολλαπλασιασμών / διαιρέσεων με δυνάμεις του δύο, όπως απαιτείται σε πολλές εφαρμογές Ψ.Ε.Σ (π.χ. Ταχύς Μετασχηματισμός Φουριέ –FFT) ◊Ολισθητές γινομένου - Πραγματοποιούν ολίσθηση των αποτελεσμάτων του πολλαπλασιασμού δύο αριθμών έτσι ώστε να δημιουργείται το σωστό αποτέλεσμα (π.χ. ολίσθηση αριστερά κατά 1 bit για απαλλαγή από το δεύτερο ψηφίο προσήμου που προκύπτει από τον αριθμό) ◊Ολισθητές εξόδου - Πραγματοποιούν ολίσθηση των δεδομένων εξόδου (κατευθυνόμενων προς τη μνήμη δεδομένων) έτσι ώστε να αποθηκεύεται το σωστό μέρος του αποτελέσματος της πράξης που έχει πραγματοποιηθεί στην ΚΜΕ. Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
10
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Ολισθητής Εισόδου (Input Shifter) ◊Στην οικογένεια επεξεργαστών TMS320C2000 ο ολισθητής εισόδου: ◊Έχει μέγεθος 32 bit, δηλαδή διπλάσιο από το μήκος λέξης της συγκεκριμένης οικογένειας επεξεργαστών που είναι 16 bit. ◊Πραγματοποιεί ολίσθηση αριστερά από 0-16 bit σε δεδομένα από τη μνήμη δεδομένων (π.χ δείγματα ενός ηχητικού σήματος) ή τη μνήμη προγράμματος (π.χ συντελεστές φίλτρου που είναι αποθηκευμένη εκεί) ◊Ο αριθμός των ολισθήσεων αριστερά καθορίζεται: ◊Απευθείας από την υπό εκτέλεση εντολή (π.χ. Εντολές ADD, LACC) ◊Ανάλογα με τα 4 τελευταία bits του προσωρινού καταχωρητή (TREG – Temporary REGister) ◊Κατά την ολίσθηση αριστερά τα στα LSBs του αριθμού που ολισθαίνει εισάγονται μηδενικά. ◊Παραδείγματα εντολών που χρησιμοποιούν ολίσθηση εισόδου (επεξεργαστής TMS320C2000) ◊LACC dma, shift1 =>Φορτώνει το συσσωρευτή (ACCumulator) με τα περιεχόμενα της θέσης μνήμης dma, αφού προηγουμένως τα ολισθήσει αριστερά κατά shift1 bits ◊LACT dma =>Φορτώνει το συσσωρευτή με τα περιεχόμενα της θέσης μνήμης dma, αφού προηγουμένως τα ολισθήσει αριστερά κατά τόσα bits όσα υποδεικνύονται από τα 4 τελευταία bits του προσωρινού καταχωρητή (TREG – Temporary REGister) Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
11
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Ολισθητής Εισόδου: Παράδειγμα I ◊Να χρησιμοποιήσετε τη δυνατότητα ολίσθησης εισόδου για ταχύτερη υλοποίηση της πράξης: x 3 =x 2 +16*x 1 (υποθέστε ότι x 1 ≥0) ◊Λύση (κώδικας ASSEMBLY): ◊LACC x 2 (ACC<= x 2 ) ◊ADD x 1, 4 (ACC<= ACC +16* x 1 ) ◊Πραγματοποιεί ολίσθηση αριστερά κατά 4 bits στον αριθμό x 1 (δεδομένα που περιέχονται στη θέση μνήμης που υποδεικνύεται από το συμβολικό όνομα x 1 ) και προσθέτει το αποτέλεσμα της ολίσθησης στα υπάρχον περιεχόμενο του συσσσωρευτή ◊SACL x 3 (x 3 <= ACCL) ◊Αποθηκεύει τα 16 LSBs του συσσωρευτή (ACCL – ACCumulator Low) στη θέση μνήμης που υποδεικνύεται από το συμβολικό όνομα x 3 Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
12
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Ολισθητής Εισόδου: Παράδειγμα ΙI ◊Να χρησιμοποιήσετε τη δυνατότητα ολίσθησης εισόδου για ταχύτερη υλοποίηση της πράξης: x 2 =x 1 /8 (υποθέστε ότι x 1 ≥0) ◊Λύση (κώδικας ASSEMBLY): ◊LACC x 1, 13 (ACC<= 2 13 * x 1 ) ◊SACL x 2 (x 2 <= ACCH) ◊Αποθηκεύει τα 16 MSBs του συσσωρευτή (ACCH – ACCumulator High) στη θέση μνήμης που υποδεικνύεται από το συμβολικό όνομα x 2. Εφόσον έχει πραγματοποιηθεί ολίσθηση αριστερά κατά 13 bit στη ουσία το ACCH περιέχει τον αριθμό x 1 ολισθημένο κατά 3 bit δεξιά (δηλαδή διαιρεμένο κατά 8) Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
13
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Πολλαπλασιαστής (Multiplication Unit) ◊Στη περίπτωση της οικογένειας επεξεργαστών TMS320C2000 ο πολλαπλασιαστής αποτελείται από τα εξής στοιχεία: ◊Ένα δυαδικό πολλαπλασιαστή 16x16 bits για τον υπολογισμό ενός γινομένου 32 bits. ◊Τον προσωρινό καταχωρητή TREG (Temporary REGister) μεγέθους 16 bits στον οποίο αποθηκεύεται το ένα από τα ορίσματα του πολλαπλασιασμού ◊Το άλλο όρισμα είναι αποθηκευμένο σε κάποια θέση μνήμης (είτε μνήμης δεδομένων είτε μνήμης προγράμματος εφόσον πρόκειται για συντελεστές φίλτρου) ◊Τον καταχωρητή γινομένου PREG (Product REGister) μεγέθους 32 bits στον οποίο αποθηκεύεται προσωρινά τα αποτέλεσμα του πολλαπλασιασμό (γινόμενο) ◊Τον ολισθητή γινομένου μεγέθους 32 bits ◊Παραδείγματα εντολών που σχετίζονται με τον πολλαπλασιαστή ◊PAC (ACC <= PREG) ◊SPH dma => Αποθηκεύει τα 16MSB του PREG στη θέση μνήμης dma ◊SPL dma => Αποθηκεύει τα 16LSB του PREG στη θέση μνήμης dma ◊LT dma (TREG Μεταφέρει τα δεδομένα της θέσης μνήμης dma στον καταχωρητή TREG Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
14
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Πολλαπλασιαστής: Παραδείγματα σύνθετων εντολών ◊Παραδείγματα σύνθετων εντολών που σχετίζονται με τον πολλαπλασιαστή: ◊LTA dma (Load TREG, Accumulate product) ◊(TREG <= dma) - Μεταφέρει τα δεδομένα της θέσης μνήμης dma στον καταχωρητή TREG ◊(ACC <= ACC + PREG) – Συσσώρευση προηγούμενου γινομένου ◊LTP dma (Load TREG, store Product) ◊(TREG <= dma) ◊(ACC <= PREG) – Μεταφορά προηγούμενου γινομένου στο συσσωρευτή ◊LTS dma (Load TREG, Subtract product) ◊(TREG <= dma) ◊(ACC <= ACC - PREG) ◊LTD dma (Load TREG, Accumulate product, Data move) ◊(TREG <= dma) ◊(ACC <= ACC + PREG) ◊(dma+1 <= dma) Τα δεδομένα στη θέση μνήμης dma μεταφέρονται στην επόμενη θέση μνήμης Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
15
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Πολλαπλασιαστής: Παραδείγματα σύνθετων εντολών (ΙΙ) ◊Παραδείγματα σύνθετων εντολών που σχετίζονται με τον πολλαπλασιαστή: ◊MPY dma (Multiply TREG with contents of dma) ◊(PREG <= dma* TREG) ◊(PREG <= PREG <<) – Ολίσθηση προς τα αριστερά του γινομένου ανάλογα με το περιεχόμενο των PM bits του καταχωρητή ST1 ◊MPYA dma (Multiply TREG with contents of dma, Accumulate previous result) ◊(ACC <= ACC + PREG) ◊(PREG <= dma* TREG) ◊(PREG <= PREG <<) ◊MPYS dma (Multiply TREG with contents of dma, Subtract previous product from ACC) ◊(ACC <= ACC - PREG) ◊(PREG <= dma* TREG) ◊(PREG <= PREG <<) Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
16
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Αριθμητική και Λογική Μονάδα (ALU) ◊Η αριθμητική και λογική μονάδα εκτελεί: ◊Προσθέσεις και αφαιρέσεις ◊Λογικές πράξεις (AND, OR, NOT κλπ) ◊Συγκρίσεις τιμών ◊Γραμμικές και κυκλικές Ολισθήσεις ◊Αποτελείται από τα επόμενα στοιχεία: ◊Την ALU ◊Το συσσωρευτή (συγκεντρώνει τα αποτελέσματα ενδιάμεσων πράξεων – κυρίως εντολών Multiply Accumulate) ◊Τον ολισθητή εξόδου (πραγματοποιεί ολίσθηση προς τα αριστερά από 0-7 bits) Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
17
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ALU: Παραδείγματα εντολών ◊Παραδείγματα σύνθετων εντολών που σχετίζονται με την ALU: ◊ADD dma, shift1 ◊(ACC <= ACC+ dma<<) – Προσθέτει στο συσσωρευτή το περιεχόμενο της θέσης μνήμης dma ολισθημένο κατά shift1 bits προς τα αριστερά ◊APAC ◊(ACC <= ACC + PREG) – Μεταφορά προηγούμενου γινομένου στο συσσωρευτή ◊SACL data1, 4 ◊(data1 <= ACCL<<) – Αποθηκεύει στη θέση μνήμης data1 τα 16LSB bits του συσσωρευτή αφού προηγουμένως ολισθήσει τα περιεχόμενα του (συσσωρευτή) κατά 4 bits προς τα αριστερά ◊SACH data2, 3 ◊(data1 <= ACCH<<) – Αποθηκεύει στη θέση μνήμης data2 τα 16MSB bits του συσσωρευτή αφού προηγουμένως ολισθήσει τα περιεχόμενα του 3 bits προς τα αριστερά Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
18
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Οι γεννήτριες διευθύνσεων δημιουργούν (παράλληλα προς την εκτέλεση των εντολών) τη διεύθυνση των δεδομένων που θα χρησιμοποιηθούν από τις επόμενες προς εκτέλεση εντολές ◊Αυτό που γίνεται στη πράξη είναι απλά να αυξάνουν ή να μειώνουν τη τιμή του δείκτη διεύθυνσης μνήμης (δεδομένων) κατά ένα. ◊Οι βοηθητικοί καταχωρητές (auxiliary registers) και η μονάδα ARAU ως σύνολο βοηθούν στη δημιουργία των νέων διευθύνσεων μνήμης Γεννήτρια Διευθύνσεων Δεδομένων Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
19
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Βοηθητική μονάδα καταχωρητών (ARAU) ◊Η βοηθητική μονάδα καταχωρητών χρησιμοποιείται για την εκτέλεση αριθμητικών πράξεων στις διευθύνσεις μνήμης με στόχο τη διευθυνσιοδότηση δεδομένων στη μνήμη δεδομένων: ◊Αποτελείται από 8 καταχωρητές (AR 0 -AR 7 ) ένα βοηθητικό καταχωρητή (ARP) μεγέθους 3 bits ο οποίος υποδεικνύει τον ενεργό καταχωρητή. ◊Τα περιεχόμενα του ενεργού καταχωρητή υποδεικνύουν τη θέση μνήμης στην οποία υπάρχουν τα προς επεξεργασία δεδομένα. ◊Είσοδοι της ARAU μπορούν να είναι: ◊Τα 8 LSB bits του καταχωρητή εντολών ◊Τα περιεχόμενα της θέσης μνήμης η οποία υποδεικνύεται από τα περιεχόμενα του ενεργού καταχωρητή ◊Τα περιεχόμενα του καταχωρητή AR 0 Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
20
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Βοηθητική μονάδα καταχωρητών (II) ◊Ο στόχος της ARAU είναι να δημιουργεί διευθύνσεις δεδομένων παράλληλα προς την εκτέλεση πράξεων από την αριθμητική και λογική μονάδα. ◊Μια σειρά από εντολές χρησιμοποιούνται για τον έλεγχο τον βοηθητικών καταχωρητών όπως οι εντολές ◊LAR ARn, #k (Load Auxiliary Register), η οποία φορτώνει στον βοηθητικό καταχωρητή n (n=0,…,7) τη τιμή k. ◊MAR *, AR 1, η οποία φορτώνει τον βοηθητικό καταχωρητή ARP με τη τιμή 1, έτσι ώστε ενεργός βοηθητικός καταχωρητής να γίνει ο καταχωρητής AR 1. ◊Πολλές εντολές, με τη βοήθεια του δείκτη *, μπορούν να επηρεάσουν τους καταχωρητές της ARAU σύμφωνα με τον πίνακα ορισμάτων που παρατίθεται στο σχήμα. Για παράδειγμα αν ενεργός καταχωρητής είναι ο AR 1 η εντολή: ◊ADD *+, προσθέτει στο συσσωρευτή τα δεδομένα στη μνήμη τα οποία υποδεικνύονται από το περιεχόμενο του ενεργού καταχωρητή (AR 1 ). Το περιεχόμενο αυτό αυξάνεται στη συνέχεια κατά 1. Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
21
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Παράδειγμα: ◊Να γραφεί πρόγραμμα σε ASSEMBLY το οποίο προσθέτει τέσσερις τιμές, διαδοχικά αποθηκευμένες στη μνήμη, η πρώτη από τις οποίες βρίσκεται στη θέση μνήμης 60h (Hex). ◊Λύση ◊MAR *, AR 0 (ARP<=0) – Ενεργός καταχωρητής ο AR 0 ◊LAR AR 1, #3 (AR 1 <=3) – Μετρητής επαναλήψεων ο AR 1 ◊LAR AR 0, #60h (AR 0 <=60h) – O AR 0 δείχνει στη θέση μνήμης που είναι αποθηκευμένη η πρώτη τιμή SUM ADD *+, AR 1 (ACC<= ACC+{AR 0 }) – το περιεχόμενο της θέσης μνήμης που υποδεικνύει ο καταχωρητής AR 0 προστίθεται στο συσσωρευτή (AR 0 <= AR 0 +1) – Η τιμή του ενεργού καταχωρητή AR 0 αυξάνεται κατά 1 ώστε να δείχνει στην επόμενη θέση μνήμης (επομένη αποθηκευμένη τιμή) (ARP<=1) – Ενεργός καταχωρητής ο AR 1 ΒΑΝΖ SUM, *-, AR 0 –Διακλάδωση υπό συνθήκη (Ο ενεργός καταχωρητής περιέχει τη τιμή 0) στη ετικέτα SUM, (AR 1 <= AR 1 -1) – Mείωση της τιμής του ενεργού καταχωρητή κατά 1 (ARP<=0) – Ενεργός καταχωρητής ο AR 0 Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
22
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Ο ελεγκτής προγράμματος είναι μια αυτόνομη μονάδα η οποία καθορίζει τη ροή του προγράμματος, δηλαδή τη σειρά εκτέλεσης των εντολών. Περιλαμβάνει υλικό όπως: ◊τον μετρητή προγράμματος (PC-Program Counter) ◊τη στοίβα εντολών (Program Stack) ◊τους καταχωρητές κατάστασης (Status Registers) και στοιχεία ελέγχου προγράμματος σε λογισμικό, όπως: ◊Διακλαδωτές (branches) ◊Κλήσεις (calls) ◊Επιστροφές (return) ◊Εντολές υπό συνθήκη (conditional instuctions) ◊Επαναλήψεις (repeats) ◊Διακοπές (interrupts). Ελεγκτής Προγράμματος Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
23
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Ο μετρητής προγράμματος (PC -Program Counter) είναι ένας καταχωρητής μεγέθους ίσου με το μήκος εντολών (το οποίο είναι συνήθως ίσο με το μήκος λέξης) στον οποίο περιέχεται η διεύθυνση μνήμης της επόμενης προς εκτέλεση εντολής (δηλαδή της εντολή που θα φορτωθεί από τη μνήμη στον καταχωρητή εντολών). ◊Στον επεξεργαστή TMS320C2000 ο PC έχει μέγεθος 16 bits ◊Η τιμή του PC μπορεί να τροποποιηθεί ανάλογα με τη ροή του προγράμματος: ◊Ακολουθιακά (αυξάνεται η τιμή του κατά 1) ◊Με την εντολή εκτέλεσης διακλάδωσης ή υπορουτινας ◊Η στοίβα προγράμματος αποθηκεύει την εντολή επιστροφής στην κανονική ροή προγράμματος κατά τη διάρκεια εξυπηρέτησης μιας διακοπής (interrupt) ή ενεργοποίησης μιας υπορουτίνας Μετρητής και στοίβα προγράμματος Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
24
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Στους επεξεργαστές Ψ.Ε.Σ υπάρχουν κάποιοι καταχωρητές ειδικού σκοπού που ρυθμίζουν συγκεκριμένες λειτουργίες του επεξεργαστή. Για παράδειγμα περιέχουν τα PM bits τα οποία ρυθμίζουν τον αριθμό των bits ολίσθησης του γινομένου και το OVM bit το οποίο ενεργοποιεί την ανίχνευση κορεσμού στο συσσωρευτή. ◊Στην περίπτωση του επεξεργαστή TMS320C2000 υπάρχουν δύο καταχωρητές κατάστασης, οι καταχωρητές ST0 και ST1. ◊Ο καταχωρητής ST0 περιέχει ανάμεσα σε άλλα το OVM (Overflow Saturation Mode) bit ενώ ο καταχωρητής ST1 περιέχει τα PM bits. ◊Οι επόμενες εντολές αφορούν τον έλεγχο των καταχωρητών ST0 και ST1: ◊LST (Load Status Registers) => Φορτώνει τους καταχωρητές (συνολικά) με συγκεκριμένες τιμές. ◊SST (Store Status Registers) => Αποθηκεύει τα περιεχόμενα των καταχωρητών (ως σύνολο) στη μνήμη. ◊SETC (Set Control) =>Θέτει συγκεκριμένα bits των καταχωρητών σε τιμή 1: ◊SETC INTM => Ενεργοποιεί το masking interrupt bit (απενεργοποιεί τις διακοπές του επεξεργαστή) ◊CLRC (Clear Control) =>Μηδενίζει συγκεκριμένα bits των καταχωρητών. ◊CLRC OVM => Απενεργοποιεί το Overflow Saturation Mode Καταχωρητές Κατάστασης (Status Registers) Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
25
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Διακλάδωσεις (branches) ◊Υπάρχουν δύο ειδών διακλαδώσεις ◊Χωρίς συνθήκη: Ο μετρητής προγράμματος φορτώνεται με μια συγκεκριμένη εντολή (jump to particular address). Παράδειγμα: ◊Β dst_label (όπου dst_label δηλώνει την ετικέτα της εντολής στην οποία μεταφέρεται ο έλεγχος προγράμματος) ◊Με σύνθηκη: η διακλάδωση πραγματοποιείται ανάλογα μτ αποτέλεσμα του ελέγχου μιας συνθήκης (βλέπε πίνακα) ◊BCND pma, cond1 (στον μετρητή προγράμματος φορτώνεται η εντολή στη διεύθυνση pma εφόσον πληρείται η συνθήκη cond1 Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
26
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Παράδειγμα: ◊Να γραφεί πρόγραμμα σε ASSEMBLY το οποίο εκτελεί: ◊το τμήμα κώδικα σε που ξεκινά από την ετικέτα label1 αν x1>x2, ◊το τμήμα κώδικα σε που ξεκινά από την ετικέτα label2 αν x1=x2, ◊το τμήμα κώδικα σε που ξεκινά από την ετικέτα label3 αλλιώς ◊Λύση ◊LACC x 1 (ACC<=x1) – Η τιμή x1 φορτώνεται στο συσσωρευτή ◊SUB x 2 (ACC <= ACC-x2) – Η τιμή x2 αφαιρείται από το συσσωρευτή ◊BCND label1, GT – Διακλάδωση στην ετικέτα label1 αν η τιμή του συσσωρευτή είναι μεγαλύτερη από το μηδέν ◊BCND label2, EQ – Διακλάδωση στην ετικέτα label2 αν η τιμή του συσσωρευτή είναι ίση με μηδέν label 3 … – Συνέχιση εκτέλεσης του κώδικα από το label3 σε κάθε άλλη περίπτωση Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
27
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Να γραφεί πρόγραμμα σε ASSEMBLY το οποίο υλοποιεί ένα FIR φίλτρο τάξης L. Υποθέστε ότι οι συντελεστές του φίλτρου βρίσκονται αποθηκευμένοι στη μνήμη προγράμματος και υποδεικνύονται από το μνημονικό όνομα (ετικέτα) COEF και ότι τα δείγματα του σήματος βρίσκονται αποθηκευμένα στη μνήμη δεδομένων και σε θέση στην οποία δείχνει ο ενεργός καταχωρητής (έστω AR 0 ) Παράδειγμα FIR φιλτραρίσματος Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα ◊LACC #0 (ACC<=0) – Μηδενισμός συσσωρευτή ◊RPT #L-1 (RPTC <= L-1) – Επανάληψη εκτέλεσης της επόμενης εντολής L φορές ◊MAC COEF, *+ (ACC<= ACC+PREG), (PREG<= {PC}*{AR 1 }) – Πολλαπλασιασμός των περιεχομένων της διεύθυνσης που δείχνει ο PC και ο ενεργός καταχωρητής (AR 1 ). (AR 1 <= AR 1 +1) - Η τιμή του ενεργού καταχωρητή AR 1 αυξάνεται κατά 1 ώστε να δείχνει στην επόμενη θέση μνήμης (επομένη αποθηκευμένη τιμή) (PC<= PC +1) – Η αύξηση της τιμής του μετρητή προγράμματος πραγματοποιείται αυτόματα και είναι ανεξάρτητη της εντολής που εκτελείται ◊APAC (ACC<= ACC+PREG) –Συσσώρευση του τελικού αποτελέσματος
28
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η υλοποίηση του προηγούμενου προγράμματος με μεταφορά δεδομένων σε ανώτερες διευθύνσεις (ώστε να μπορούν να εισάγονται νέα δεδομένα στη μνήμη) στη μνήμη δεδομένων μπορεί να γίνει τη διάταξη μνήμης του σχήματος και τη χρήση της εντολής MACD (Multiply-Accumulate Data move) Παράδειγμα FIR φιλτραρίσματος (ΙΙ) ◊LACC #0 (ACC<=0) – Μηδενισμός συσσωρευτή ◊RPT #L-1 (RPTC <= L-1) – Επανάληψη εκτέλεσης της επόμενης εντολής L φορές ◊MACD COEF, *- (ACC<= ACC+PREG), (PREG<= {PC}*{AR 1 }) – Πολλαπλασιασμός των περιεχομένων της διεύθυνσης που δείχνει ο PC και ο ενεργός καταχωρητής (AR 1 ). (AR 1 <= AR 1 -1) - Η τιμή του ενεργού καταχωρητή AR 1 μειώνεται κατά 1 ώστε να δείχνει στην προηγούμενη θέση μνήμης (προηγούμενη αποθηκευμένη τιμή) (PC<= PC +1) – Η αύξηση της τιμής του μετρητή προγράμματος πραγματοποιείται αυτόματα και είναι ανεξάρτητη της εντολής που εκτελείται ◊APAC (ACC<= ACC+PREG) –Συσσώρευση του τελικού αποτελέσματος Εισαγωγή Βασικά Δομικά Στοιχεία ΚΜΕ Γεννήτρια Διευθύνσεων Ελεγκτής Προγράμματος Παραδείγματα
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.