Ιστορική Αναδρομή Αρχαιότητα Υπολογιστική Δραστηριότητα: Μέτρηση με τα δάκτυλα Βαβυλώνιοι: Εξηνταδεκαδικό σύστημα αρίθμησης Βρετανοί: Δωδεκαδικό Πρωτόγονες Φυλές: Τριαδικό σύστημα !!! Πρώτη υπολογιστική μηχανή: άβακας (2000 π.χ.)
Ιστορική Αναδρομή Αναγέννηση 1600 μ.Χ. : John Napier λογαριθμικοί κανόνες sin(A) * cos(B) = (1/2)sin(A+B) + (1/2)sin(A-B) Επομένως, για τον πολλαπλασιασμό 0.17365 * 0.99027, αναζητούμε σε πίνακες και βρίσκουμε ότι 0.17365 = sin(10), 0.99027 = cos(8) Συνεπώς: sin(10) * cos(8) = (1/2) * (sin(18) + sin(2) ) Από πίνακες: sin(18) = 0.30902, sin(2) = 0.03490 Κατά συνέπεια: 0.17365 * 0.99027 = 0.17196 1642 : Blaise Pascal υπολογιστική μηχανή με χρήση οδοντοτών τροχών (πρόσθεση – αφαίρεση) http://www-jime.open.ac.uk/98/7/pascal.html#applet τέλη 17ου αιώνα: Leibnitz (βελτίωση : πολλαπλασιασμός και διαίρεση)
Υπολογιστική Μηχανή του Pascal Ιστορική Αναδρομή Υπολογιστική Μηχανή του Pascal
Ιστορική Αναδρομή 19ος αιώνας 1801: Joseph Jacquard προγραμματιζόμενος αργαλειός 1833: Charles Babbage αναλυτική μηχανή (εκτέλεση αριθμητικών πράξεων και δυνατότητα προγραμματισμού. Δυστυχώς δεν κατασκευάστηκε….)
Αναλυτική Μηχανή του Babbage (μοντέλο) Ιστορική Αναδρομή Αναλυτική Μηχανή του Babbage (μοντέλο)
Ιστορική Αναδρομή 19ος αιώνας 1880: Η ανάλυση στοιχείων της απογραφής διήρκεσε 8 χρόνια. Η Αμερικανική Δημογραφική Υπηρεσία ανέθεσε στον Hollerith να αναπτύξει μέθοδο για επιτάχυνση της επεξεργασίας 1890: Η ανάλυση των στοιχείων διήρκεσε τρία χρόνια 1890: O Hellerith πήγε στην Computing and Tabulating 1911: Συγχώνευση με τρείς άλλες εταιρείες To 1924 μετονομάστηκε σε International Business Machines (IBM) από
Ιστορική Αναδρομή Πρώτος – Δεύτερος Παγκόσμιος Πόλεμος Στον 1ο Παγκ. Πόλεμο κατασκευάστηκαν αριθμητικές μηχανές με ταχύτητα 6 ως 10 sec για πολλαπλασιασμό δύο δεκαψήφιων αριθμών Δεκαετία 1930: Αξιοποίηση ‘’ρελέ’’ για υλοποίηση άλγεβρας Boole (καταχωρητικά στοιχεία - μνήμες) 1937-1944: Πανεπιστήμιο Harvard και ΙΒΜ Automatic Sequence-Controlled Calculator (ASCC) αργότερα MARK-I ΜΑRK-I: Βάρος: 5 τόνοι, 0.3 sec για πρόσθεση δύο 23-ψήφιων αριθμών, 6 secs για πολλαπλασιασμό
Ιστορική Αναδρομή Πρώτος – Δεύτερος Παγκόσμιος Πόλεμος Τέλη δεκαετίας ’30: John Atanasoff, Iowa State College Πρώτος ηλεκτρονικός υπολογιστής ειδικού σκοπού (ABC). Πρώτος υπολογιστής που χρησιμοποιούσε το δυαδικό σύστημα αρίθμησης (Δικαίωση το 1973 !!!)
Ιστορική Αναδρομή Δεύτερος Παγκόσμιος Πόλεμος Κατά τη διάρκεια του πολέμου αναπτύχθηκαν από την Βρετανική Αντικατασκοπεία ηλεκτρονικοί υπολογιστές (Colossi) για αποκωδικοποίηση μηνυμάτων
Ιστορική Αναδρομή ΕΝΙΑC 1943 – 1946: University of Pennsylvania (Mauchly και Eckert) Electronic Numerical Integrator and Calculator Πρώτος ηλεκτρονικός υπολογιστής γενικού σκοπού Χρήση ηλεκτρονικών λυχνιών 5000 προσθέσεις ή 30 πολλαπλασιασμούς / δευτερόλεπτο Μνήμη: δυνατότητα αποθήκευσης 20 δεκαψήφιων
Ιστορική Αναδρομή ΕΝΙΑC (..συνέχεια) Επιφάνεια: 15 χιλιάδες τετραγωνικά πόδια Βάρος: 30 τόνοι 18000 λυχνίες, 70000 αντιστάσεις, 10000 πυκνωτές 150 kW ισχύς
Ιστορική Αναδρομή Υπολογιστές πρώτης γενιάς John von Neumann έννοια του αποθηκευμένου προγράμματος (stored program concept) 1949: πρώτος υπολογιστής Von Neumann, Cambridge, UK, EDSAC, επίβλεψη: Maurice Wilkes Οι Mauchly – Eckert του ENIAC ίδρυσαν την UNIVAC: UNIVAC-I πρώτος Η/Υ μαζικής παραγωγής (1951)
Ιστορική Αναδρομή Transistor 1947: Brattain, Schockley, Bardeen Πρώτη χρήση: Ενίσχυση. Η εφαρμογή τάσης στο Β ενισχύει το ρεύμα μεταξύ C και E B C E
Metal-Oxide-Semiconductor Field-Effect Transistor Ιστορική Αναδρομή Metal-Oxide-Semiconductor Field-Effect Transistor (MOSFET)
Silicon Wafer Si
Oxidation Si
Photosensitive film Si
Mask Si
Ultraviolet light Si
Chemical Etching Si
Removal SiO2
Ion Implantation SiO2 Si
n+ regions SiO2 Si
Terminals SiO2 Si
Operation Si SiO2 VDD GND VDD
Ιστορική Αναδρομή Υπολογιστές δεύτερης γενιάς Αντικατάσταση των λυχνιών από transistor. Μαζική παραγωγή Η/Υ από IBM και άλλες εταιρείες. Γρηγορότερη ταχύτητα επεξεργασίας Το κόστος παρέμενε υψηλό: Ο 7090 της ΙΒΜ: $ 3 million ο καθένας !!!
Ιστορική Αναδρομή Υπολογιστές τρίτης γενιάς Χρήση μονολιθικών ολοκληρωμένων κυκλώμάτων (SSI, MSI), μνήμη μαγνητικών δακτυλίων, ισχυρότερες συσκευές εισόδου/εξόδου ΙΒΜ σειρά 360 (1964), DEC Μείωση τιμών υπολογιστών – ταυτόχρονη αύξηση ικανοτήτων Έννοια συμβατότητας Δυνατότητα σύνδεσης με Η/Υ μέσω τηλεφωνικών γραμμών
Ιστορική Αναδρομή Υπολογιστές τέταρτης γενιάς Μέσα δεκαετίας ’70 έως μέσα δεκαετίας ’80 Large Scale of Integration Μνήμες ημιαγωγών Χαρακτηριστικά: Πολυεπεξεργαστές, δίκτυα υπολογιστών, μικροεπεξεργαστές Υπολογιστές πέμπτης γενιάς Very Large Scale of Integration (VLSI) Εκατομμύρια transistor σε μία ψηφίδα πυριτίου
Οργάνωση Συστημάτων
Ιστορία Λογισμικού Πρώτος Προγραμματιστής στην Ιστορία….. Μία γυναίκα: Ada Augusta Έγραψε το πρώτο πρόγραμμα (υπολογισμός των αριθμών Bernoulli) για την αναλυτική μηχανή του Babbage
Ιστορία Λογισμικού Πρώτη γενιά Γλώσσα Μηχανής (machine language) Δεδομένα και εντολές που ερμηνεύονται άμεσα από το υλικό του υπολογιστή Π.χ. Η εντολή: 00010100000000000000000001100100 αποθηκεύει τα περιεχόμενα της λέξης 100 της μνήμης σε έναν καταχωρητή
Ιστορία Λογισμικού Πρώτη γενιά (..βελτίωση) Συμβολικές Γλώσσες Προγραμματισμού (symbolic assembly languages) (γλώσσες προγραμματισμού χαμηλού επιπέδου) Μνημονικά ονόματα για εντολές Π.χ. η εντολή: 00010100000000000000000001100101 γράφεται ως LDA 101 Συμβολομεταφραστής (assembler) το πρόγραμμα που μετατρέπει την assembly σε γλώσσα μηχανής
Ιστορία Λογισμικού Πρώτη γενιά (..μειονεκτήματα) Δυσκολία ανάπτυξης ενός προγράμματος Πλήρης εξάρτηση από τη μηχανή Για το σκοπό αυτό αναπτύχθηκαν οι διερμηνευτές (interpreter) που είναι σε θέση να διαβάσουν μια εντολή του τύπου C = A * B και να την ερμηνεύσουν ανάλογα με τον υπολογιστή To πρόγραμμα ερμηνεύεται από τον interpreter κάθε φορά που πρόκειται να εκτελεστεί -> Χρονοβόρο
Ιστορία Λογισμικού Δεύτερη γενιά Γλώσσες προγραμματισμού υψηλού επιπέδου: 1957 FORTRAN (FORmula TRANslator system) (επιστημονικές εφαρμογές) 1958 ALGOL (αλγόριθμοι, ανικανότητα χειρισμού μη αριθμητικών δεδομένων) 1960 COBOL (Common Business Oriented Language) (εμπορικές εφαρμογές, χειρισμός αρχείων) Στις γλώσσες αυτές χρησιμοποιούνται μεταγλωττιστές (compilers) : μετατροπή γλώσσας υψηλού επιπέδου σε γλώσσα μηχανής
Εκτέλεση ενός προγράμματος Πρόγραμμα γλώσσας υψηλού επιπέδου (π.χ. C) Πηγαίος κώδικας μεταγλωττιστής Πρόγραμμα γλώσσας μηχανής Αντικείμενος κώδικας συνδέτης (linker) Πρόγραμμα γλώσσας μηχανής Εκτελέσιμος κώδικας φορτωτής Πρόγραμμα γλώσσας μηχανής Εκτελέσιμος κώδικας Εκτέλεση προγράμματος μαζί με δεδομένα
Ιστορία Λογισμικού Τρίτη γενιά Εισαγωγή της έννοιας του λειτουργικού συστήματος 1965 PL/1 της IBM (multi-programming) 1965 BASIC (Beginner’s All-purpose Symbolic Instruction Code) (Dartmouth College, USA) 1971 Pascal (Ζυρίχη, Niklaus Wirth) ο ίδιος στη συνέχεια υλοποίησε την MODULA-2 To 1972 υπήρχαν 172 γλώσσες προγραμματισμού !!
Ιστορία Λογισμικού Τέταρτη γενιά Αρχές 1970 : Κρίση Λογισμικού Ως αποτέλεσμα προέκυψε η γλώσσα Ada (Ada’83) Eξάπλωση του λειτουργικού συστήματος UNIX Από το UNIX προέκυψε η γλώσσα C Σε όλες τις προηγούμενες γλώσσες κυρίαρχη έννοια είναι η συνάρτηση (διαδικασία) : διαδικασιακές γλώσσες Η Smalltalk εισήγαγε την έννοια των αντικειμενοστραφών γλωσσών προγραμματισμού
Ιστορία Λογισμικού Πέμπτη γενιά Επικράτηση των αντικειμενοστραφών μεθόδων Εμφάνιση της C++, Java LINUX
Intel Pentium Processors FABRICATION STAGES FOR Intel Pentium Processors
486 Απρ. 1989 25 - 100 ΜΗz 1.2Μ Trans. 4 GB
Pentium MMX March 1993 60-233 ΜΗz 3.1Μ trans 4 GB
Pentium Pro March 1995 150-200 ΜHz 5.5Μ trans 4 GB
Pentium II May 1997 233-400 MHz 7.5 M trans 4 GB
Οργάνωση Υπολογιστών Εισαγωγή Λειτουργικές μονάδες ενός υπολογιστή : Κεντρική Μονάδα Επεξεργασίας – ΚΜΕ – CPU Κύρια ή Πρωτεύουσα Μνήμη Βοηθητική ή δευτερεύουσα ή εξωτερική μνήμη Συσκευές ή μονάδες Εισόδου/Εξόδου Όλα τα ανωτέρω κυκλώματα υλοποιούνται με Ολοκληρωμένα Κυκλώματα (ICs)
Οργάνωση Υπολογιστών Ιεραρχία: Οι λειτουργικές μονάδες αποτελούνται από απλούστερα κυκλώματα, όπως: - καταχωρητές (registers) - μετρητές (counters) - αποκωδικοποιητές (decoders) που με τη σειρά τους αποτελούνται από βασικά ψηφιακά κυκλώματα, όπως: - πύλες - δισταθείς πολυδονητές (flip-flops) - απομονωτές (latches) τα οποία υλοποιούνται από ένα μόνο συστατικό στοιχείο : - MOSFET τρανζίστορ
Οργάνωση Υπολογιστών Βαθμός ή Κλίμακα Ολοκλήρωσης : Εξαρτάται από τον αριθμό των βασικών κυκλωμάτων ανά ψηφίδα πυριτίου: Ολοκλήρωση Μικρής Κλίμακας (SSI): 1-10 βασικά κυκλώματα Ολοκλήρωση Μέσης Κλίμακας (MSI): 10-100 Ολοκλήρωση Μεγάλης Κλίμακας (LSI): 100- δεκάδες χιλιάδες Ολοκλ. Πολύ Μεγάλης Κλίμακας (VLSI): 50000 – (ULSI) ?
Κύρια Μνήμη (Main Memory) Χρήση: Αποθήκευση προγραμμάτων (ακολουθίες εντολών) Αποθήκευση ορισμένων από τα δεδομένα Επειδή η κύρια μνήμη έχει πεπερασμένη χωρητικότητα και είναι σχετικά ακριβή, χρησιμοποιείται για να αποθηκεύει τις τρέχουσες πληροφορίες Οι πληροφορίες που δεν χρειάζονται άμεσα αποθηκεύονται στην βοηθητική μνήμη, που έχει σχεδόν απεριόριστη χωρητικότητα.. έχει όμως πολύ μεγαλύτερο χρόνο προσπέλασης
Κύρια Μνήμη (Main Memory) Οργάνωση Μνήμης Η κύρια μνήμη αποτελείται από ένα συνεχόμενο αριθμό θέσεων, κάθε μία από τις οποίες περιέχει το ίδιο πλήθος δυαδικών ψηφίων (δυφίων ή bits) Σε κάθε θέση αντιστοιχεί μία διεύθυνση (address) μέσω της οποίας πραγματοποιείται η αναφορά στο περιεχόμενο της θέσης Η κάθε θέση είναι ικανή να αποθηκεύσει μία δυφιοσυλλαβή, ή ένα byte (8 δυαδικά ψηφία)
Κεντρική Μονάδα Επεξεργασίας Λειτουργία Ανακαλεί αυτόματα εντολές από τη μνήμη και τις εκτελεί ακολουθιακά Η ΚΜΕ περιέχει έναν αριθμό καταχωρητών Κάθε καταχωρητής αποθηκεύει μία ακολουθία δυφιοσυλλαβών (bytes) ορισμένου μήκους που ονομάζεται λέξη (word) Ένα σύστημα με κύρια μνήμη και ΚΜΕ, είναι η απλούστερη μορφή υπολογιστικού συστήματος (εξαιρουμένου του λογισμικού) Υπολογιστής = Επεξεργαστής + Κύρια Μνήμη
Κύρια Μνήμη (Main Memory) Έστω ότι σε έναν υπολογιστή με μήκος λέξης 32 bit (= 4 byte), θέλουμε να αποθηκεύσουμε τα περιεχόμενα ενός καταχωρητή (JC00) στη μνήμη, στις θέσεις 0 - 3 Περιεχόμενο Διεύθυνση 1 2 3 4 5 6 7 J C Big endian οργάνωση ("μεγάλου άκρου) Η αποθήκευση ξεκινά από το σημαντικότερο (αριστερότερο) byte της λέξης Επεξεργαστές: Motorola Υπολογιστές: Apple Macintosh, Atari, Amiga, workstations Sun, HP
Κύρια Μνήμη (Main Memory) Έστω ότι σε έναν υπολογιστή με μήκος λέξης 32 bit (= 4 byte), θέλουμε να αποθηκεύσουμε τα περιεχόμενα ενός καταχωρητή (JC00) στη μνήμη, στις θέσεις 0 - 3 Περιεχόμενο Διεύθυνση 1 2 3 4 5 6 7 C J Little endian οργάνωση ("μικρού άκρου) Η αποθήκευση ξεκινά από το λιγότερο σημαντικό (δεξιότερο) byte της λέξης Επεξεργαστές: Intel Υπολογιστές: IBM και συμβατοί Οι όροι big και small endian προέρχονται από τα "Ταξίδια του Gulliver" όπου σατιρίζονται οι πολιτικοί που διαφωνούν αν πρέπει τα αυγά να σπάζονται από το μεγάλο ή μικρό άκρο τους
Οργάνωση Η/Υ Συσκευές Εισόδου: Εισαγωγή πληροφοριών από το εξωτερικό περιβάλλον Συσκευές Εξόδου: Μετάδοση πληροφοριών από τον υπολογιστή προς το εξωτερικό περιβάλλον Συσκευές Βοηθητικής Αποθήκευσης: Δίσκοι
Υλικό – Λογισμικό Οποιαδήποτε διεργασία είναι δυνατόν να εκτελεστεί είτε σε υλικό είτε σε λογισμικό Π.χ. Ο πολλαπλασιασμός είναι δυνατόν να εκτελεστεί μόνο με τη χρήση ενός αθροιστή και καταχωρητών (Π.χ. Πολ/σμός δύο αριθμών 16 bit σε 16 κύκλους) Είναι όμως δυνατόν να χρησιμοποιηθεί κύκλωμα ειδικού σκοπού που εκτελεί τον πολ/σμό σε έναν κύκλο μηχανής Η απόφαση για ανάθεση λειτουργιών σε υλικό – λογισμικό είναι θέμα κόστους, ταχύτητας, ευελιξίας Οι αποφάσεις αυτές καθορίζουν τις διαφορετικές αρχιτεκτονικές συστημάτων