Ταυτόχρονη Διαχείριση Διεργασιών σε Ενσωματωμένα Συστήματα Εφαρμόσιμη σε Οδηγό Πολυμεσικών Εφαρμογών Εξεταστική Επιτροπή Καθηγητής κ. Κ. Γκούτης Καθηγητής κ. Δ. Σερπάνος Αναπ. Καθηγητής κ. Σ. Κουμπιάς Βασίλης Βλάχος ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΣΥΣΤΗΜΑΤΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ» ΠΜΣ-ΟΣΥΛ 1
Σχεδιασμός ενσωματωμένων συστημάτων Σκοπός της έρευνας μας Ανάπτυξη μεθοδολογίας για την σχεδίαση ενσωματωμένων συστημάτων τα οποία εκτελούν δυναμικές και ταυτόχρονες (concurrent) εφαρμογές πραγματικού χρόνου Επίλυση των προβλημάτων που εμφανίζονται σε ενσωματωμένα συστήματα 2
Σχεδιασμός ενσωματωμένων συστημάτων Υποστηριζόμενες λειτουργίες σήμερα Αναπαραγωγή μουσικής Ραδιόφωνο Παιχνίδια WAP Υποστηριζόμενες λειτουργίες στο μέλλον Αναπαραγωγή video Video conference Java εφαρμογές GPRS 3
Σχεδιασμός ενσωματωμένων συστημάτων Philips Nexperia Διαθέσιμα στην εποχή των δισεκατομμυρίων τρανζίστορ CMP: Chip Multi Processor SUN MAJC IBM Power4 MIT M-machine Stanford Hydra Philips Nexperia Improvsys Jazzu 4
Σχεδιασμός ενσωματωμένων συστημάτων Live from FZ-TV Τα πολυεπεξεργαστικά συστήματα χρησιμοποιούνται ευρύτατα ως servers και σε επιστημονικές εφαρμογές, άλλα όχι σε ενσωματωμένα συστήματα γιατί Δεν υπάρχουν αποτελεσματικοί compilers Η διαδικασία αυτή όταν γίνεται χειροκίνητα απαιτεί πολύ μεγάλη προσπάθεια 5
Σχεδιασμός ενσωματωμένων συστημάτων speed n power n3 energy n2 6
Σχεδιασμός ενσωματωμένων συστημάτων Μεγαλύτερη αυτονομία των ενσωματωμένων συστημάτων μπορεί να επιτευχθεί με Μείωση του μεγέθους των τρανζίστορ Βελτίωση των χρησιμοποιούμενων υλικών στα ολοκληρωμένα Βελτίωση στην τεχνολογία κατασκευής μπαταριών 7
Σχεδιασμός ενσωματωμένων συστημάτων Thread Node1 Thread Node2 ARM Vdd=3.0V 20nJ/instr. 1TU/instr. Thread Noden Energy TimeUnits 110 M TUs 110M instr. 2200 mj 8
Σχεδιασμός ενσωματωμένων συστημάτων TN1 TN2 Vdd=1.5V 5nJ/instr. 2TUs/instr. More TimeUnits 80 M TUs 180 M TUs TNn Vdd=3.0V 20nJ/instr. 1TU/instr. Tradeoff More energy 40M instr. 80M TU 200 mj 70M instr. 70M TU 1600 mj 1400 mj 90M instr. 180M TUs 450 mj 20M instr. 20M Tus 400 mj 850 mj 9
Σχεδιασμός ενσωματωμένων συστημάτων void BIFSDecoder :: ParseInsertionCommand () { int nid; MediaObject *pnode; if (!m_pscene) throw BifsException (BIFX_NODEID_NOT_FOUND);. switch (ParseInt (2, "type")) { case 0: nid = ParseInt (GetNodeIDbits (), "NodeID"); case 3: ParseRoute (m_pscene); Προσέγγιση Άσπρου Κουτιού Υπερβολικά λεπτομερές Όλες οι αποφάσεις πρέπει να ληφθούν κατά την διάρκεια του σχεδιασμού 10
Delivery Layer Σχεδιασμός ενσωματωμένων συστημάτων Data Buffer Data Channel Buffer Data Channel Buffer Data Channel Buffer Channel OD Wavelet BIFS Buffer Buffer Προσέγγιση Μαύρου Κουτιού Εύκολη διαχείριση Ανεπαρκείς πληροφορίες προκειμένου να ληφθούν οι κατάλληλες σχεδιαστικές αποφάσεις 11
Σχεδιασμός ενσωματωμένων συστημάτων Compression layer Synchronization layer TaskA TaskC TaskB TaskD TaskE P( ) V( ) Data dependency 12
C/C++ specification of dynamic concurrent system Extraction of the gray-box model Memory architecture Task-level DTSE Real-time partly constraints resolved Concurrency improving transformations Static task scheduling cost cost cost task1 task2 time time Run-time scheduler processor1 processor2 processor3 platform Real-time constraints task3 time platform Real-time constraints partly resolved fully resolved time 13
Καμπύλες Pareto Cost X: Non-optimal points x timing bottleneck move to higher cost processor/memory solution x x x x x scheduling alternatives TB6 TB5 TB4 TB3 TB2 TB1 Time Budget 14
Scheduling σε ενσωματωμένα συστήματα πραγματικού χρόνου Στατικό scheduling: 1 compiling 2 3 1 3 2 4 4 Δυναμικό scheduling: new task 4 1 3 run time 1 3 4 2 2 15
Γιατί χρειάζεται δυναμικό scheduling Cost operation point TB6 TB5 TB4 TB3 TB2 TB1 Time Budget Ο στατικός scheduler είναι υποχρεωμένος να επιλέξει ένα μόνο σημείο λειτουργίας Δεν διαθέτει ευελιξία Δεν είναι σε θέση να ανταποκριθεί σε μεταβαλλόμενα περιβάλλοντα όπου εμφανίζεται μη ντετερμινισμός, δυναμική δημιουργία/ διαγραφή αντικειμένων Πρέπει πάντα να επιλέγει την χειρότερη δυνατή περίπτωση 16
Γιατί χρειάζεται στατικό scheduling Cost operation point TB6 TB5 TB4 TB3 TB2 TB1 Time Budget Ο δυναμικός scheduler πρέπει να είναι ταχύτατος Απαιτείται ελάχιστη υπολογιστική πολυπλοκότητα κατά την διάρκεια του run-time O δυναμικός scheduler δεν είναι σε θέση να επιτύχει βελτιστοποιήσεις των scheduling σχημάτων Δεν επιτρέπει καθόλου προβλεψημότητα 17
Παράδειγμα δυναμικού scheduling Cost Task 1 Task 2 Cost cost increase 1 80 80 100 Time Budget Time Budget + Cost Task 3 cost decrease and 2 > 1 20 40 Time Budget 18
MTG μοντέλο: Συνδυασμός Petri-Net και CDFG μοντέλου Thread Task MTG Thread Thread Frame Thread Thread Frame TN Thread: ένα σύνολο από thread frames. Είναι ένα ανεξάρτητο κομμάτι κώδικα το οποίο εκτελεί μια TN : thread node συγκεκριμένη λειτουργία. TN TN TN Thread frame: ένα σύνολο από thread nodes. TN TN Event Thread Thread Frame Thread Thread Frame TN CDFG TN Thread node: το μικρότερο τμήμα κώδικα που μπορεί να scheduled από τον design-time scheduler. Αποτελείται από κόμβους και ακμές ενός CDFG γράφου 19
Συνδυασμός στατικού και δυναμικού scheduling thread 1 thread 2 2 1 A B 3 Static Scheduling Static Scheduling 1 P ro c 1 Dynamic 3 Scheduling 2 P ro c 2 1 P ro c 1 P ro c 1 2 3 P ro c 2 P ro c 2 B P ro c 1 B P ro c 2. B P ro c 1 P ro c 2 A 1 3 2 A A. Στατικό. scheduling:πραγματοποιείται κατά την διάρκεια.του compilation ερευνώντας όλες τις δυνατές βελτιστοποιήσεις Δυναμικό scheduling: πραγματοποιείται κατά την διάρκεια του.. run time, παρέχοντας ευελιξία και δυναμικότητα με χαμηλό κόστος 20
Scheduling σε ενσωματωμένα συστήματα πραγματικού χρόνου Γράφος διεργασιών Precedence constraint Χρόνος εκτέλεσης Κατανάλωση ενέργειας Πλατφόρμα Αριθμός επεξεργαστών 21
Scheduling σε ενσωματωμένα συστήματα πραγματικού χρόνου P2 P1 P3 task graph processors Προβλήματα που πρέπει να επιλυθούν: Ποίος κόμβος? Πότε θα ανατεθεί? Σε ποιόν επεξεργαστή? Στόχος: Ελαχιστοποίηση του ενεργειακού κόστους εντός των υφιστάμενων χρονικών περιορισμών 22
Αλγόριθμοι που έχουν χρησιμοποιηθεί στο design-time scheduling Γενετικοί αλγόριθμοι Αλγόριθμοι βασισμένοι σε Μεικτό Ακέραιο Γραμμικό Προγραμματισμό (MILP) Ευρηστικοί Αλγόριθμοι 23
Σύγκριση μεταξύ ευρηστικού αλγορίθμου και MILP 24
MILP αλγόριθμοι Πλεονεκτήματα Ικανοποιητικός αριθμός Pareto σημείων Ικανοποιητικό εύρος Pareto καμπύλης Εξαγωγή βέλτιστων σημείων Pareto Ντετερμινιστικοί Μειονεκτήματα Μεγάλος χρόνος εξαγωγής αποτελεσμάτων, λόγω αναζήτησης βέλτιστων σημείων 25
Γενετικοί αλγόριθμοι Οι γενετικοί αλγόριθμοι χρησιμοποιούν Μετάλλαξη Διασταύρωση Αναπαραγωγή Για να βελτιώσουν την υγεία των χρωμοσωμάτων και να προσεγγίσουν εγγύτερα την λύση του προβλήματος 26
Σύγκριση μεταξύ γενετικού αλγορίθμου και ευρηστικού αλγορίθμου 27 Πλατφόρμα 4 επεξεργαστών. Σύγκριση ευρηστικού αλγορίθμου γενετικού αλγορίθμου
Γενετικοί αλγόριθμοι Πλεονεκτήματα Ικανοποιητικός αριθμός σημείων Pareto Ικανοποιητικό εύρος καμπύλης Pareto Λογικός χρόνος εξαγωγής των αποτελεσμάτων Μειονεκτήματα Μη ντετερμινιστικοί δηλαδή τα αποτελέσματα διαφέρουν ακόμα και με την ίδια είσοδο 28
Ευρηστικός αλγόριθμος Πλεονεκτήματα Ταχύτατη εξαγωγή αποτελεσμάτων Ντετερμινιστικός Σχεδόν βέλτιστα σημεία Pareto Μειονεκτήματα Μη ικανοποιητικός αριθμός σημείων Pareto Μη ικανοποιητικό εύρος καμπύλης Pareto 29
Ευρηστικός Αλγόριθμος Design-time Scheduling Κριτήρια Βάρος (Weight): ο χρόνος εκτέλεσης στον χαμηλής ταχύτητας επεξεργαστή Φορτίο (Load): το άθροισμα των βαρών των εξαρτώμενων κόμβων Επιλογή του κατάλληλου υποψήφιου κόμβου Όταν ο κόμβος έχει το μέγιστο βάρος και το μέγιστο φορτίο Ένας κόμβος έχει το μέγιστο βάρος και ο άλλος έχει το μέγιστο φορτίο W = 10 L =6 W = 15 W=6 L = 18 L =0 W=2 L =6 30
31 Πλατφόρμα 4 επεξεργαστών. Σύγκριση στρατηγικών φορτίου-βάρους
32 Πλατφόρμα 6 επεξεργαστών. Σύγκριση στρατηγικών φορτίου-βάρους.
33 Πλατφόρμα 8 επεξεργαστών. Σύγκριση στρατηγικών φορτίου-βάρους
34 Πλατφόρμα 4 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Πρώτη φάση.
35 Πλατφόρμα 6 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Πρώτη φάση.
36 Πλατφόρμα 8 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Πρώτη φάση.
Ψευδοκώδικας αρχικού ευρηστικού αλγορίθμου for (int i=0;i<number_of_processor_in_the_platform;i++) { // processor[0] is the fastest and highest Vdd processor if processor[i]==free { assign_node_to_the_processor(); break; } } else find_the_earliest_finishing_processor(); 37
Ψευδοκώδικας του επεκταμένου αλγόριθμου με την προσθήκη του «ευνοούμενου» επεξεργαστή. for (int i=0;i<number_of_processor_in_the_platform;i++) { // processor[0] is the fastest and highest Vdd // processor if processor[i]==free { assign_node_to_the_processor(); if processor[i]==preferred_processor break; } } else find_the_earliest_finishing_processor(); 38
39 Πλατφόρμα 4 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Δεύτερη φάση
40 Πλατφόρμα 6 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Δεύτερη φάση
41 Πλατφόρμα 8 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου. Δεύτερη φάση
Ψευδοκώδικας του επεκταμένου αλγόριθμου με την προσθήκη του «ευνοούμενου» επεξεργαστή. for (int i=0;i<number_of_processor_in_the_platform;i++) { // processor[0] is the fastest and highest Vdd processor if processor[i]==free { assign_node_to_the_processor(); if processor[i]>=preferred_processor break; } } else find_the_earliest_finishing_processor(); 42
43 Πλατφόρμα 4 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου, πλήρως βελτιστοποιημένου.
44 Πλατφόρμα 6 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου, πλήρως βελτιστοποιημένου.
45 Πλατφόρμα 8 επεξεργαστών. Σύγκριση μεταξύ αρχικού αλγορίθμου και επεκταμένου αλγορίθμου, πλήρως βελτιστοποιημένου.
46 Πλατφόρμα 4 επεξεργαστών. Οι βελτιστοποιήσεις του επεκταμένου ευρηστικού αλγορίθμου βήμα προς βήμα.
47 Πλατφόρμα 6 επεξεργαστών. Οι βελτιστοποιήσεις του επεκταμένου ευρηστικού αλγορίθμου βήμα προς βήμα.
48 Πλατφόρμα 8 επεξεργαστών. Οι βελτιστοποιήσεις του επεκταμένου ευρηστικού αλγορίθμου βήμα προς βήμα.
49 Πλατφόρμα 4 επεξεργαστών. Σύγκριση αρχικού και επεκταμένου αλγορίθμου βασιζόμενη σε πλήρως σειριακή εφαρμογή OpenGL.
50 Πλατφόρμα 6 επεξεργαστών. Σύγκριση αρχικού και επεκταμένου αλγορίθμου βασιζόμενη σε πλήρως σειριακή εφαρμογή OpenGL.
51 Πλατφόρμα 8 επεξεργαστών. Σύγκριση αρχικού και επεκταμένου αλγορίθμου βασιζόμενη σε πλήρως σειριακή εφαρμογή OpenGL.
Επεκταμένος ευρηστικός αλγόριθμος Πλεονεκτήματα Ικανοποιητικός αριθμός σημείων Pareto Ικανοποιητικός εύρος καμπύλης Pareto Σχεδόν βέλτιστα σημεία Pareto Ντετερμινιστικός Λογικός χρόνος εξαγωγής αποτελεσμάτων Μειονεκτήματα Σειριακοί γράφοι? 52
Μελλοντικές επεκτάσεις Ο ευρηστικός αλγόριθμος θα πρέπει να ενσωματώνει Κόστος επικοινωνιών Κόστος μεταφοράς δεδομένων Κόστος context switching Χρησιμοποίηση ετερογενών επεξεργαστών Επίλυση προβλημάτων με σεμαφόρους και άλλα πολύπλοκα μη ντερμινιστικά ζητήματα 53
Λειτουργικά συστήματα πραγματικού χρόνου Επιλογή του κατάλληλου λειτουργικού συστήματος πραγματικού χρόνου για Ομογενές πολυεπεξεργαστικό περιβάλλον Εφαρμογή ενός νέου αλγορίθμου scheduling Εκτέλεση πολυμεσικών εφαρμογών 54
Λειτουργικά συστήματα πραγματικού χρόνου Περίπου 100 λειτουργικά συστήματα πραγματικού χρόνου LynxOs, Blue Cat Linux, Ecos, ChorusOS, VRXT, AMX Kadak, JMI C executive, CMX-RTX, CORTEX, Intime, irmx, IRX, Jbed, MQX,ON Time RTOS-32, OnCore OS, Linux for Real Time, OS-9, OSE, PDOS, QNX Neutrino, REDICE Linux, RTLinux, Prose, Katix, ucr, Maruti, Spring, Harmony, DeltaOS, embos, ertos, ETS-RTX, EYRX, INTERGRITY, RTSecure, Nucleus Plus, RTMach, SHARCOS, Smx, SuperTask!, TxOS&TxSDK, Vx Works, RTEms, RTXC, Hurd, Hard Hat, TimeSys, Virtuoso, Embedix, ElinOS, RED-Linux, uclinux, RTAI-Linux, RTXC, psosystem3, ADEOS 55
Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα από τον ακαδημαϊκό χώρο Λειτουργικά συστήματα από την βιομηχανία / εμπορικά λειτουργικά συστήματα Λειτουργικά συστήματα ανοιχτού κώδικα / ελεύθερου λογισμικού 56
Λειτουργικά συστήματα πραγματικού χρόνου Η αρχιτεκτονική του συστήματος Δυνατότητες πραγματικού χρόνου Κόστος απόκτησης Διαθεσιμότητα πηγαίου κώδικα Υποστηριζόμενο υλικό Εργαλεία, λογισμικό Τεκμηρίωση Υποστήριξη 57
Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα από τον ακαδημαϊκό χώρο + Κόστος απόκτησης + Διαθεσιμότητα πηγαίου κώδικα + Τεκμηρίωση - Υποστηριζόμενο υλικό - Εργαλεία, λογισμικό - Υποστήριξη 58
Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα από την βιομηχανία + Υποστηριζόμενο υλικό + Εργαλεία, λογισμικό + Τεκμηρίωση + Υποστήριξη -Κόστος απόκτησης -Διαθεσιμότητα πηγαίου κώδικα 59
Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα ανοιχτού κώδικα/ ελεύθερου λογισμικού + Κόστος απόκτησης + Διαθεσιμότητα πηγαίου κώδικα + Τεκμηρίωση + Υποστήριξη - Υποστηριζόμενο υλικό - Υποστήριξη 60
Λειτουργικά συστήματα πραγματικού χρόνου OS Virtuoso Distributed Central-controlled Distributed Memory Maps Memory Pools Memory Support Communication Link Drivers Synchronization Semaphores, Events, Queues, Mailboxes, Semaphore Channels, Linked-List Channels. Stack Channels Low power Όχι Free Όχι Source Code Όχι Platforms Supported Analog Devices [SHARC ADSP2106, HammerHead SHARC ADSP-2116X, ADSP-21020] TI [TM320C6x,RMS320C4x] Win NT simulation 61
Λειτουργικά συστήματα πραγματικού χρόνου OS QNX Development Environment Support QNX + Third Party Tools Modularity Scalability Modular Scalable MicroKernel Distributed Central-controlled Central-controlled SMP Supported Memory Support Physical memory is divided in 4k pages. Full protection model Private Virtual Memory Communication Message Passing, POSIX Message Queues, Pipes, FIFOs Synchronization Mutexes, Condvars, Barriers, Sleep on Locks, Read/Writer locks, Semaphores, Atomic Operations, Send /Receive Policy Low power Όχι Free Όχι Source Code Όχι Platforms Supported PowerPC, MIPS, ARM, x86 62
Λειτουργικά συστήματα πραγματικού χρόνου OS ECos Development Environment Support GNU Tool Chain + RedHat Tools Modularity Scalability Scalable Modular Distributed Central-controlled Central-controlled Memory Support Memory Pools Communication Message Boxes Synchronization Mutex, Conditions Variables, Event Flags, Messages Queueus Low power Όχι Free Ναι Source Code Ναι Platforms Supported ARM, Hitachi SH3, Intel x86,mips, Matsushita AMBx, PowerPC, SPARC 63
Λειτουργικά συστήματα πραγματικού χρόνου OS RTLinux Development Environment Support Modularity Scalability GNU Tool Chain + FSMLabs Distributed Central-controlled Memory Support Central-Controlled Partial SMP Support Communication SYS V IPC, Shared Memory, RT-FIFOs Synchronization Modular Scalable Linux Memory Management Memory Buffer Pool Standard Linux Synchronization Methods Low power Όχι Free Ναι Source Code Ναι Platforms Supported (IA32),PowerPC: 603, 604, 7400, MPC8260,MPC860, IBM 4056P, PowerMac G4, Synergy VGM5, MIPSAMD Elan NetSC520, Alpha (ev6) 64
Λειτουργικά συστήματα πραγματικού χρόνου Επιλέχθηκε το Virtuoso γιατί Εξαιρετικές δυνατότητες για κατανεμημένη επεξεργασία Μηδενικό κόστος απόκτησης Επαρκή τεκμηρίωση Επαρκή υποστήριξη Ισχυρά εργαλεία 65