Κεφάλαιο 1 Αφαιρετικότητα και Τεχνολογία Υπολογιστών (Computer Abstractions and Technology) 1
Υπολογιστές Οι υπολογιστές μπορούν να χωριστούν σε τρεις κατηγορίες, βάση της εφαρμογής τους: Επιτραπέζιοι Υπολογιστές (Desktop computers): ατομικής χρήσης, συνήθως περιλαμβάνουν οθόνη, πληκτρολόγιο, ποντίκι, κτλ Εξυπηρετητές (Servers): χρησιμοποιούνται για εκτέλεση μεγάλων προγραμμάτων πολλαπλών χρηστών, συνήθως η πρόσβαση σε αυτούς είναι εξ αποστάσεως (remote access) μέσω δικτύου Ενσωματωμένοι υπολογιστές (Embedded computers): τοποθετούνται μέσα σε άλλες συσκευές, εκτελούν μόνο συγκεκριμένες, προκαθορισμένες λειτουργίες/λογισμικό 2
Υπολογιστές: Desktops Γνωστοί ως «Προσωπικοί Υπολογιστές» Καλή απόδοση για ένα χρήστη, σε χαμηλό κόστος Κατέχουν ένα από τα μεγαλύτερα μερίδια της αγοράς υπολογιστών, έστω και αν παρουσιάστηκαν μόλις πριν 30 χρόνια! 3
Υπολογιστές: Servers Διεκπεραιώνουν μεγάλα φορτία εργασίας Για συγκεκριμένες πολυσύνθετες εφαρμογές (π.χ. scientific computing) ή για πολλές μικρότερες εργασίες (π.χ. web server) Ευρύ φάσμα κόστους και ικανοτήτων Υπερυπολογιστές (Supercomputers) 4
Υπολογιστές: Embedded Computers Έχουν το ευρύτερο φάσμα εφαρμογών και απόδοσης Οι περισσότεροι χρήστες δεν αντιλαμβάνονται την ύπαρξη τους μέσα στη συσκευή Έχετε τουλάχιστον ένα από τα πιο κάτω 5
Υπολογιστές (συν.) #μικροεπεξεργαστών σε ενσωματωμένους υπολογιστές αυξάνεται κατά 40% ετησίως # μικροεπεξεργαστών σε επιτραπέζιους υπολογιστές αυξάνεται με πιο σταθερό ρυθμό, γύρω στο 9% ετησίως Αριθμός μικροεπεξεργαστών που πουλήθηκαν μεταξύ του 1998 και 2000 6
Από τι αποτελείται ένας Υπολογιστής? Τυπικά συνιστώσα μέρη (δεν ισχύουν όλα για ενσωματωμένους υπολογιστές): μονάδες εισόδου (mouse, keyboard) μονάδες εξόδου (display, printer) μονάδες μνήμης (disk drives, DRAM, SRAM, CD) δίκτυο μικροεπεξεργαστής (διάδρομος δεδομένων και μονάδα ελέγχου) *** το επίκεντρό μας σε αυτό το μάθημα *** Υλοποιείται από εκατομμύρια τρανζίστορ Αδύνατο να αντιληφθείς τι γίνεται με το να βλέπεις τον μικροεπεξεργαστή σε επίπεδο τρανζίστορ Άρα χρειαζόμαστε... 7
Αφαιρετικότητα (Abstraction) Με την αφαιρετικότητα ξεφορτωνόμαστε αχρείαστη λεπτομέρεια. Βοηθά να ανταπεξέλθουμε στη μεγάλη πολυπλοκότητα ενός συστήματος. Το Υλικό και το Λογισμικό αποτελούνται από επίπεδα ιεραρχίας, με τα χαμηλότερα επίπεδα να περιέχουν περισσότερη λεπτομέρεια. Άρα, τα υψηλότερα επίπεδα είναι πιο απλά οι λεπτομέρειες αφαιρούνται Το υλικό ενός υπολογιστή μπορεί να εκτελεί μόνο πολύ απλές εντολές, σε χαμηλό επίπεδο (=γλώσσα μηχανής). High-level language program (in C) Assembly language program (for MIPS) Γλώσσα Υψηλού Επιπέδου Μεταγλωττιστής Συμβολική Γλώσσα Συμβολομεταφραστής swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } swap: Compiler muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Assembler Ποιοι από τους όρους στα δεξιά υποδηλώνουν αφαιρετικότητα; Ποιος είναι στο υψηλότερο επίπεδο και ποιος στο χαμηλότερο; Binary machine language program (for MIPS) Γλώσσα Μηχανής 00000000101000010000000000011000 00000000000110000001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 8
Πως λειτουργούν οι Η/Υ? Τι υπάρχει κάτω από το πρόγραμμα/λογισμικό? Πρέπει να καταλάβουμε τα πιο κάτω μοντέλα αφαιρετικότητας: Λογισμικό Εφαρμογών (Applications software) Λογισμικό Συστήματος (Systems software) --O/S, Compilers Συμβολική Γλώσσα (Assembly Language) Γλώσσα Μηχανής (Machine Language) Θέματα Αρχιτεκτονικής (Architectural Issues) -- κρυφή μνήμη, ιδεατή μνήμη, διασωλήνωση Ακολουθιακή Λογική (Sequential logic) διαγράμματα καταστάσεων Συνδυαστική Λογική (Combinational logic) Λογική Boole (Boolean logic) Τρανζίστορ (Transistors) --CMOS Ημιαγωγοί/Πυρίτιο (Semiconductors/Silicon) Ιδιότητες ατόμων, ηλεκτρόνια και κβαντική δυναμική (atoms, electrons, quantum dynamics) Υψηλό Επίπεδο Αφαιρετικότητας Χαμηλό Επίπεδο Αφαιρετικότητας 9
Ορισμένοι Απαραίτητοι Ορισμοί Λογισμικό Συστήματος: παρέχει υπηρεσίες κοινής χρήσης, όπως: Λειτουργικό Σύστημα (Operating System): επιβλέπει το σύστημα, χειρίζεται τους πόρους του συστήματος Μεταγλωττιστής (Compiler): μεταγλωττίζει εντολές γλώσσας υψηλού επιπέδου (π.χ. Cκαι Java) σε εντολές συμβολικής γλώσσας Συμβολομεταφραστής (Assembler): μεταφράζει συμβολικές εντολές (assembly instructions) σε γλώσσα μηχανής Λογισμικό Εφαρμογών: παρέχει επικοινωνία μεταξύ του χρήστη και του λογισμικού του συστήματος, π.χ.: Γλώσσα Υψηλού Επιπέδου (High-level programming language): συμβατή γλώσσα προγραμματισμού (C, Fortran, κτλ), αποτελείται από λέξεις και αλγεβρική σημειογραφία Λογισμικό πλοήγησης (Web browser), λογισμικό επεξεργασίας κειμένου (word-processing software), κτλ 10
Ιεραρχία Λογισμικού/Υλικού (εναλλακτικό διάγραμμα) Κάθεεπίπεδομπορείναέχειτη δική του εσωτερική ιεραρχία. Για παράδειγμα: System Software Compiler Assembler 11
Αρχιτεκτονική Συνόλου Εντολών Instruction Set Architecture (ISA) Σημαντικό μοντέλο αφαιρετικότητας Επίσης γνωστό ως architecture ενός υπολογιστή Διασύνδεση μεταξύ του υλικού και γλώσσας χαμηλού επιπέδου (γλώσσα μηχανής) Η αφηρημένη δομή του υπολογιστή που χρειάζεται να είναι γνωστή στον προγραμματιστή της γλώσσας χαμηλού επιπέδου Τυποποιεί εντολές, μορφήδυαδικώνψηφίωντωνεντολών, κτλ Πλεονέκτημα: διαφορετικές υλοποιήσεις της ίδιας αρχιτεκτονικής (οικογένεια μικροεπεξεργαστών = ίδια αρχιτεκτονική, διαφορετικοί μικροεπεξεργαστές). Για παράδειγμα, 80386, 80486, Alpha 21064, 21164, 21264, 12
Αρχιτεκτονική Συνόλου Εντολών (ISA) (συν.) Το ISA δεν είναι συμβατό μεταξύ μικροεπεξεργαστών από διαφορετικές οικογένειες Μερικά σύγχρονα ΙSAs: IA-32, PowerPC, MIPS, SPARC, ARM Προγραμματιστική Γλώσσα Υψηλού Επιπέδου Μεταγλωττιστής Συμβολική Γλώσσα Συμβολομεταφραστής Γλώσσα Μηχανής Υλικό ISA: διασύνδεση μεταξύ της μηχανής και του υλικού 13
Βασική δομή Υλικού του Η/Υ Τα 5 βασικά μέρη: Επεξεργαστής (Processor, CPU) -- Μονάδα Ελέγχου (Control unit): Μέρος του CPU που διαχειρίζεται τις λειτουργίες/ αλληλοεπίδραση μεταξύ του διαδρόμου δεδομένων, μνήμης και Ι/Ο -- Διάδρομος Δεδομένων (Datapath): Μέρος του CPU που εκτελεί τις αριθμητικές πράξεις και διαχειρίζεται τη ροή των δεδομένων Κυρίως Μνήμη (Memory): Αποθηκευτικός χώρος όπου κρατούνται τα προγράμματα όταν εκτελούνται, περιέχει εντολές και δεδομένα Περιφερειακές Μονάδες (Peripherals) -- Εισόδου (Input): συσκευή παροχής δεδομένων στον υπολογιστή -- Εξόδου (Output) : συσκευή αποθήκευσης/παρουσίασης δεδομένων του υπολογιστή 14
Βασική δομή Υλικού του Η/Υ Αυτή η οργάνωση είναι ανεξάρτητη της τεχνολογίας του υλικού. Άρα, μπορεί να εφαρμοστεί σε όλες τις αρχιτεκτονικές υπολογιστών. 15
Τι έχει μέσα το κουτί? power supply (τροφοδοσία) Processor (under the heat sink) DVD drive fan with cover zip drive hard drive motherboard (κυρίως πλακέτα) processor memory I/O interface 16
Μια πιο κοντινή ματιά στον επεξεργαστή Miscellaneous Interface Logic Μικροφωτογραφία του ολοκληρωμένου του μικροεπεξεργαστή Pentium 4 Βασικά λειτουργικά μέρη του Pentium 4 17
Μικροφωτογραφίες άλλων επεξεργαστών Pentium UltraSparc 18
Μνήμη του Υπολογιστή Καταχωρητές (Registers) Αποθηκευτικός χώρος του μικροεπεξεργαστή (στο ίδια ολοκληρωμένο), μέρος της αρχιτεκτονικής του μικροεπεξεργαστή Κρυφή Μνήμη (Cache) Μικρή και γρήγορη μνήμη που λειτουργεί ως ενδιάμεση μνήμη μεταξύ του μικροεπεξεργαστή και της κυρίως μνήμης Ιεραρχική δομή: 1 ο επίπεδο, 2 ο επίπεδο, Κυρίως Μνήμη ήαπλάμνήμη (Main Memory) Περιέχει τα προγράμματα (εντολές και δεδομένα) κατά την εκτέλεσή τους. Συνήθως με DRAM chips. Δευτερεύουσα Μνήμη (Secondary Memory) Σκληρός δίσκος, δισκέτα, CD, Zip, FLASH 19
Ταξινομήσεις Μνήμης Βάση Διάρκειας Πρόσκαιρη (Volatile) Διατηρεί τα δεδομένα μόνο αν το σύστημα δέχεται ισχύ, δηλ. μόλις διακοπεί η παροχή ισχύος τα δεδομένα χάνονται (αποθηκευτικό χώρος για τα προγράμματα που εκτελούνται) Μόνιμη (Non-Volatile) Διατηρεί τα δεδομένα ακόμα και στην απουσία ισχύος, αποθηκευτικό χώρος μεγάλης διάρκειας Βάση Τεχνολογίας CMOS (ROM, RAM, SRAM, DRAM) Στατική RAM υψηλό κόστος, γρήγορη Δυναμική RAM για κυρίως μνήμη Μαγνητικός δίσκος (hard disk, floppy, zip) Λέιζερ/Οπτική (CD, DVD) Πρόσκαιρη Μόνιμη 20
Τεχνολογίες Επεξεργαστών και Μνήμης Έτος Τεχνολογία Σχετική Απόδοση Κόστος ανά μονάδα 1951 Ηλεκτρονική Λυχνία (Vacuum Tube) 1965 Transistor 35 1975 Ολοκληρωμένο Κύκλωμα (Integrated Circuit--IC) 1995 Τεχνολογία Πολύ Μεγάλης Κλίμακας Ολοκλήρωσης (Very Large Scale Integration--VLSI) 1 900 2,400,000 2005 Ultra Large Scale Integration--ULSI 6,200,000,000 21
O «νόμος» του Gordon Moore Νόμος του Moore (1965): «Ο αριθμός των τρανζίστορ ανά τετραγωνική ίντσα διπλασιάζεται κάθε 18 μήνες» 22
O «νόμος» του Gordon Moore (συν.) Νόμος του Moore (1965): «Ο αριθμός των τρανζίστορ ανά τετραγωνική ίντσα διπλασιάζεται κάθε 18 μήνες» Ανάπτυξη χωρητικότητας ανά DRAM chip 23
Πρόοδος της Τεχνολογίας Η/Υ Απόδοση (Performance) 1971: 1 million instructions/sec 2001: 1 billion instructions/sec Χωρητικότητα (Storage) 1971: 10MB 2001: 80,000MB Κόστος 1971: $4,000,000 2001: $2,000 Ο παράγοντας βελτίωσης σε απόδοση/ χωρητικότητα /κόστος είναιγύρωστα~8 δισεκατομμύρια (μέσα σε 30 χρόνια!) 24
Πρόοδος της Τεχνολογίας Η/Υ 25
Η κατασκευή ολοκληρωμένων σήμερα Όλα ξεκινούν από Πυρίτιο (Silicon): φυσικό στοιχείο, ημιαγωγός Ημιαγωγός (Semiconductor): υλικό με όχι ιδιαίτερα καλές ικανότητες αγωγής ηλεκτρισμού. Μπορεί να μετατραπεί, μέσω χημικών διαδικασιών, στα ακόλουθα: Άριστο αγωγό ηλεκτρισμού Άριστο μονωτή ηλεκτρισμού Εναλλασσόμενος αγωγός/μονωτής (κάτω από συγκεκριμένες συνθήκες) == διακόπτης (switch) Τρανζίστορ: ημιαγωγός πυριτίου που λειτουργεί σαν διακόπτης Ολοκληρωμένο VLSI: αποτελείται από εκατομμύρια τρανζίστορ, αγωγών και μονωτών 26
Η διαδικασία κατασκευής ολοκληρωμένων 27
Απόδοση Παραγωγής (Yield) Το ποσοστό των μη-ελαττωματικών ολοκληρωμένων από τον συνολικό αριθμό ολοκληρωμένων σε ένα πλακίδιο (wafer) Yield = 1 / ( 1 + ( Defects per area x Die area/2 ) ) 2 28
Ιστορική Αναδρομή 1946 -- ENIAC (=Electronic Numerical Integrator and Calculator): κατασκευάστηκε κατά τη διάρκεια του 2 ου Παγκοσμίου Πολέμου, ο πρώτος υπολογιστής γενικής χρήσεως Χρησιμοποιήθηκε για υπολογισμό των πινάκων βολών πυροβολικού 80 πόδια μάκρος και 8.5 πόδια ύψος και αρκετά πόδια πλάτος Κάθε ένας από του 20 καταχωρητές 10-ψηφίων είχε 2 πόδια μάκρος 18,000 ηλεκτρονικές λυχνίες Εκτελούσε 1900 προσθέσεις το δευτερόλεπτο 29
Ιστορική Αναδρομή (συν.) 1951 -- UNIVAC I (Universal Automatic Computer): Ο 1 ος δημοφιλής εμπορικός υπολογιστής Κόστος: γύρω στο $1 εκατομμύριο, πωλήθηκαν 48! 30
Ιστορική Αναδρομή (συν.) 1964 IBM System/360: 1 η εφαρμογή της ιδέας της αρχιτεκτονικής αφαιρετικότητας η 1 η οικογένεια υπολογιστών 6 υλοποιήσεις, ποικιλία στην τιμή και την απόδοση IBM/360-40: 1.6 MHz, 32-256 KB, $225,000 IBM/360-65: 5.0 MHz, 256 KB 1 MB, $1,200,000 IBM/360-50: 2.0 MHz, 128-256 KB, $550,000 IBM/360-75: 5.1 MHz, 256 KB 1 MB, $1,900,000 31
Ιστορική Αναδρομή (συν.) 1965 PDP-8 από την Digital Equipment Corporation (DEC): ο 1 ος μινι υπολογιστής! Κόστος κάτω των $20,000 1971 Η Intel εφεύρε τον 1 ο μικροεπεξεργαστή, τον Intel 4004 1977 Ο Steve Jobs και ο Steve Wozniak παρουσίασαν το Apple II προσωπικός υπολογιστής 1981 Η IBM ανακοίνωσε τον 1 ο της προσωπικό υπολογιστή, το IBM-PC (με μικροεπεξεργαστή της Intel) Ο υπολογιστής με τις μεγαλύτερες πωλήσεις όλων των εποχών! Από εδώ χρησιμοποιείται και ο όρος «IBM-compatible» Xerox Alto: Η αρχικήέμπνευσητουσύγχρονουεπιτραπέζιου υπολογιστή 32
Ιστορική Αναδρομή (συν.) Apple II Plus Xerox Alto 33
Ιστορική Αναδρομή (συν.) 1976 Gray -1: ο 1 ος υπερ-υπολογιστής (supercomputer), ο απόγονος του Gray--1963 Τότε, ο γρηγορότερος και ακριβότερος στον κόσμο και ο υπολογιστής με το χαμηλότερο κόστος/απόδοση για επιστημονικούς υπολογισμούς 34
Ιστορική Αναδρομή (συν.) Χρόνος Όνομα Μέγεθος (ft 2 ) Ισχύς (watts) Απόδοση (adds/sec) Μνήμη (KB) Κόστος ($) Απόδοση/ Κόστος Έναντι Univac Κόστος (2003 $, με πληθωρισμό) Απόδοση/ Κόστος Έναντι Univac 1951 Univac1 1000 124,500 1,900 48 1,000,000 1 6,107,600 1 1964 IBM S360/ Mode50 60 10,000 500,000 64 1,000,000 263 4,792,300 318 1965 PDP 8 8 500 330,000 4 16,000 10,855 75,390 13,135 1976 Cray -1 58 60,000 166,000,000 32,768 4,000,000 21,842 10,756,800 51,604 1981 IBM PC 1 150 240,000 256 3,000 42,105 5,461 154,673 1991 HP900/ model 750 1996 ΙIntel PPro PC (200 MHz) 2003 Intel Pentium 4 PC (3.0 GHz) 2 500 50,000,000 16,384 7,4000 3,556,188 9,401 16,122,356 2 500 400,000,000 16,384 4,400 47,846,890 4,945 239,078,908 2 500 6,000,000,000 262,144 1,600 1,875,000,000 1,600 11,452,000,00 0 Χαρακτηριστικά βασικών εμπορικών υπολογιστών από το 1950 35