ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τι είναι ο προγραμματισμός
Advertisements

7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Διευθυνσιοδότηση Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Παραλληλισμός Εντολών (Pipelining) Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο.
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Pipelining – Βασικές αρχές.
Το υλικο του Υπολογιστη
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Λογισμικο συστηματοσ Κεφάλαιο 4ο
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Η Αρχιτεκτονική των Επεξεργαστών Ψ.Ε.Σ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών.
ΜΑΘ-3122/106 Προγραμματισμός
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
William Stallings Computer Organization and Architecture 7 th Edition Κεφάλαιο 16 Λειτουργία Μονάδας Ελέγχου.
Ανάλυση Συστημάτων Αυτομάτου Ελέγχου:
ΔΤΨΣ 150: Ψηφιακή Επεξεργασία Εικόνας © 2005 Nicolas Tsapatsoulis Κατάτμηση Εικόνων: Κατάτμηση με βάση τις περιοχές Τμήμα Διδακτικής της Τεχνολογίας και.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Pipelining –
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
ΒΕΣ 06: Προσαρμοστικά Συστήματα στις Τηλεπικοινωνίες © 2007 Nicolas Tsapatsoulis Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων: Παραλλαγές.
Ο Μετασχηματισμός Laplace και ο Μετασχηματισμός Ζ
Ευστάθεια Συστημάτων Αυτομάτου Ελέγχου:
Μορφές Αντισταθμιστών και Κλασικές Μέθοδοι Σχεδίασης
Σχεδίαση και Υλοποίηση IIR φίλτρων
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
© Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος Νεκτάριος Κοζύρης Νίκος Αναστόπουλος
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Κεφάλαιο 10 – Υποπρογράμματα
ΒΕΣ 06: Προσαρμοστικά Συστήματα στις Τηλεπικοινωνίες © 2007 Nicolas Tsapatsoulis Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων: Ο αλγόριθμος.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Συνολική αρχιτεκτονική του Επεξεργαστή TMS320C6713 και προγραμματισμός σε ASSEMBLY Τμήμα.
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL. Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: –Προσκόμιση.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 9 ο Μάθημα.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων:
ΜΙΚΡΟΕΛΕΓΚΤΕΣ-ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΤΗ C
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών A. Βαφειάδης Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Α.Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Θέματα Φεβρουαρίου
ΑΛΓΟΡΙΘΜΟΣ.
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
Εισαγωγή στα Προσαρμοστικά Συστήματα
Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου ΕΣ 08 – Επεξεργαστές Ψηφιακών Σημάτων

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining ◊Kehtarnavaz [2005]: Chapter 7 ◊Chassaing [2005]: Chapter 8 ◊Kuo [2005]: Chapter 4, Section 4.4, Chapter 5, Section 5.3 ◊TMS320C6000 Programmer's Guide ◊Code Composer Studio Tutorial ◊TMS320C6000 CPU and Instruction Set Reference Guide Βιβλιογραφία Ενότητας

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η ιδιομορφία της αρχιτεκτονικής των επεξεργαστών Ψ.Ε.Σ συνεπάγεται ότι η βέλτιστη αποτελεσματικότητα (μεγαλύτερη ταχύτητα εκτέλεσης προγράμματος ώστε να μπορούν να υποστηριχθούν εφαρμογές επεξεργασίας σήματος σε πραγματικό χρόνο – real time signal processing ) επιτυγχάνεται με προγραμματισμό σε ASSEMBLY. ◊Δυστυχώς ο προγραμματισμός σε ASSEMBLY είναι και χρονοβόρος αλλά και επιρρεπής σε σφάλματα. Για το σκοπό αυτό έχουν αναπτυχθεί εργαλεία βελτιστοποίησης κώδικα (code optimization) γραμμένου είτε σε γλώσσα C είτε σε γραμμική ASSEMBLY (δηλαδή ASSEMBLΥ η οποία δεν λαμβάνει υπόψη τη συγκεκριμένη αρχιτεκτονική του επεξεργαστή τον οποίο θέλουμε να προγραμματίσουμε) ◊Παρά τα ανωτέρω είναι πιθανόν σε κάποιες περιπτώσεις να χρειαστεί προγραμματισμός σε καθαρή ASSEMBLY ώστε να βελτιωθούν κάποια χρονοβόρα τμήματα κώδικα. Για το σκοπό αυτό πρέπει να υπάρχει αναλυτική γνώση τόσο των εντολών που υποστηρίζονται από το συγκεκριμένο επεξεργαστή όσο και της αρχιτεκτονικής του Εισαγωγή  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η διαδικασία ανάπτυξης εφαρμογών σε επεξεργαστές Ψ.Ε.Σ περιλαμβάνει μια σειρά από βήματα τα οποία εμπλέκουν μια σειρά εργαλείων. Στη πρώτη φάση έχουμε επαλήθευση της πρωτότυπης εφαρμογής σε μια πλατφόρμα ταχείας πρωτοτυποποίησης (π.χ. Matlab). Στη συνέχεια ακολουθείται το διάγραμμα ροής του διπλανού σχήματος, δηλαδή: ◊Ανάπτυξη κώδικα σε C χωρίς να λαμβάνεται υπόψη καμία ιδιομορφία του επεξεργαστή. Ο κώδικας C μπορεί να δημιουργηθεί χρησιμοποιώντας το SIMULINK και το Real Time Workshop ◊Βελτιστοποίηση κώδικα C χρησιμοποιώντας εργαλεία όπως το Profile του Code Composer Studio. Αν η φάση αυτή δεν οδηγήσει στο απαιτούμενο αποτέλεσμα τότε προχωράμε σε αναγνώριση των κρισίμων τμημάτων κώδικα τα οποία και κωδικοποιούμε με γραμμική ASSEMBLY. ◊Βελτιστοποίηση του κώδικα ASSEMBLY, δηλαδή μετατροπή της γραμμικής ASSEMBLY σε προσαρμοσμένη στο συγκεκριμένο επεξεργαστή ASSEMBLY. ◊Κωδικοποίηση με καθαρή ASSEMBLY, τμημάτων κώδικα που εξακολουθούν να εκτελούνται αργά. Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η βελτιστοποίηση κώδικα απαιτεί την πραγματοποίηση συγκρίσεων (benchmarking) για διάφορες / διάφορους: ◊Μορφές κώδικα (C, γραμμική ASSEMBLY, καθαρή ASSEMBLY) ◊Ρυθμίσεις του compiler ◊Τύπους δεδομένων προγράμματος (π.χ. short, double) ◊Κατηγορίες εντολών (fixed-point, floating- point) ◊Το βασικό εργαλείο για την πραγματοποίηση συγκρίσεων είναι το εργαλείο Profile του Code Composer Studio ◊Επιλέγουμε τις συναρτήσεις που θέλουμε να παρακολουθήσουμε και να συγκρίνουμε την επίδοση τους (κύκλοι ρολογιού) για τις διάφορες επιλογές, και εκτελούμε το πρόγραμμα μας Βελτιστοποίηση κώδικα C  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Χρησιμοποιώντας το profile tool βλέπουμε ότι η βασική συνάρτηση main_asm.c εκτελείται σε 264 κύκλους ρολογιού ενώ η συνάρτηση ASSEMBLY sum.asm εκτελείται σε 133 κύκλους ρολογιού ◊Από τα συνολικά στατιστικά βλέπουμε ότι έχουμε 40.81% του χρόνου του επεξεργαστή να δαπανάται σε NOP (No OPeration) εντολές Βελτιστοποίηση κώδικα C (II)  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Στο παράδειγμα βλέπουμε πως μπορούμε να βελτιστοποιήσουμε την ταχύτητα εκτέλεσης του προγράμματος main_asm.c χρησιμοποιώντας το optimization tool του compiler ◊Με βελτιστοποίηση σε επίπεδο καταχωρητών (βλέπε επόμενη διαφάνεια) επιτυγχάνεται μείωση των κύκλων ρολογιού για την εκτέλεση της main_asm.c σε λιγότερο από το μισό. Βελτιστοποίηση κώδικα C (III)  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Υπάρχουν τέσσερα επίπεδα βελτιστοποίησης ◊-ο0, Register, δηλαδή βελτιστοποίηση χρήσης καταχωρητών ◊-ο1, Local, όπως παραπάνω συν προσπάθεια καλύτερης χρήσιμων των δομικών μονάδων (.L,.M,.D.,S.) των δύο ΚΜΕ που έχει ο επεξεργαστής ◊-ο2, Function, όπως παραπάνω συν προσπάθεια βελτιστοποίησης κώδικα ASSEMBLY με software pipelining ◊-ο3, File, όπως παραπάνω συν απαλοιφή μη χρησιμοποιούμενων συναρτήσεων Βελτιστοποίηση κώδικα C (IV)  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η ταχύτητα εκτέλεσης ενός προγράμματος μειώνεται όταν ο τύπος των δεδομένων (ή των συντελεστών ενός φίλτρου) είναι κινητής υποδιαστολής. ◊Μικρό κέρδος εκτέλεσης επιτυγχάνεται και με διαφοροποίηση ανάμεσα στα bit αναπαράστασης σε αριθμούς σταθερής υποδιαστολής (βλέπε παράδειγμα: short=16bit (half-word), int=32bit (word) Η επίδραση του τύπου δεδομένων  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Σε πολλές περιπτώσεις οι βελτιστοποιήσεις στον κώδικα C δεν είναι επαρκείς και χρειάζεται να πάρουμε την ‘κατάσταση στα χέρια’ μας: ◊Υπάρχουν τρεις δυνατές επιλογές: ◊Γραμμική ASSEMBLY (αρχεία.sa), ◊ASM εντολές (statements) σε κώδικα C: asm(“assembly code”) ◊Συναρτήσεις ASSEMBLY οι οποίες μπορούν να κληθούν από κώδικα C (C- callable assembly function (.asm)). Στην περίπτωση αυτή μπορούμε να βελτιστοποιήσουμε συγκεκριμένα κομμάτια κώδικα εφαρμόζοντας τεχνικές όπως παράλληλη εκτέλεση εντολών και software pipelining Συνδυασμός C και Assembly  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Τα ορίσματα των συναρτήσεων μεταφέρονται μέσω των καταχωρητών A4, B4, A6, B6,... με τη σειρά που δίνεται ◊Το αποτέλεσμα της κλήσης της συνάρτησης επιστρέφεται μέσω του καταχωρητή A4. ◊Η διεύθυνση επιστροφής από τον κώδικα στον οποίο έχει γίνει η κλήση της συνάρτησης δίνεται στον καταχωρητή B3. Οπότε πρέπει να δίνεται μεγάλη προσοχή να μην χρησιμοποιείται για άλλο σκοπό ο Β3 εντός της συνάρτησης ASSEMPLY ◊Ονοματολογία (βλέπε προηγ. διαφάνεια): ◊Στον κώδικα C: label (η συνάρτηση δηλώνεται ως external) ◊Στον κώδικα ASSEMBLY: _label (η συνάρτηση δηλώνεται ως global) ◊Πρόσβαση σε global μεταβλητές εντός του κώδικα ASSEMBLY:.ref _variablename Assembly συναρτήσεις καλούμενες από C  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Σκελετός assembly συναρτήσεων καλούμενων από C Παράδειγμα assembly συνάρτησης καλούμενης από C Σκελετός assembly συναρτήσεων καλούμενων από C  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Εκμεταλλευόμενοι το γεγονός ότι έχουμε 8 ανεξάρτητες μονάδες στον επεξεργαστή μπορούμε να εκτελέσουμε παράλληλα μέχρι και 8 εντολές. ◊Στο επόμενο παράδειγμα οι εντολές LDH και SUB μπορούν να εκτελεστούν παράλληλα (βλέπε ||) με αποτέλεσμα την επιπλέον βελτίωση της ταχύτητας εκτέλεσης σε 116 κύκλους ρολογιού Παράλληλη εκτέλεση στις δομικές μονάδες  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis ◊Η τεχνική software pipelining εφαρμόζεται σε συναρτήσεις ASSEMBLY και προσπαθεί να αναδιατάξει τη σειρά εκτέλεσης των εντολών ώστε να ελαχιστοποιούνται οι εντολές NOP. ◊Στο επόμενο παράδειγμα οι εντολές SUB και Β δεν περιμένουν αποτέλεσμα από την εντολή LDH (σε αντίθεση με την εντολή ADD) ούτε επηρεάζουν άμεσα την εντολή ADD, άρα μπορούν να αναδιαταχθούν πριν από αυτή με χρήση της τεχνικής delayed branch Software Pipelining  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining

ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Software Pipelining (ΙΙ)  Εισαγωγή  Ανάπτυξη εφαρμογών σε Επεξεργαστές ΨΕΣ  Βελτιστοποίηση κώδικα C  Συνδυασμός C και Assembly  Παράλληλη εκτέλεση εντολών  Software Pipelining