(Translated by https://www.hiragana.jp/)
x86 - Βικιπαίδεια Μετάβαση σしぐまτたうοおみくろん περιεχόμενο

x86

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια
x86
ΣχεδιαστήςIntel, AMD
Bits16-bit, 32-bit, 64-bit
Κυκλοφόρησε1978
ΣχεδίασηCISC
ΤύποςΚαταχωρητές-Μνήμη (Register-Memory)
ΚωδικοποίησηΠοικίλλει (1 έως 15 byte)
ΔιακλάδωσηΚαταχωρητής κατάστασης (Status register)
EndiannessLittle
Μέγεθος σελίδας8086i286: κανένα
i386, i486: σελίδες τたうωおめがνにゅー 4 KB
P5 Pentium: πρόσθεσε σελίδες τたうωおめがνにゅー 4 MB
(Legacy PAE: 4 KB→2 MB)
x86-64: πρόσθεσε σελίδες τたうοおみくろんυうぷしろん 1 GB
Επεκτάσειςx87, IA-32, P6, MMX, SSE, SSE2, x86-64, SSE3, SSSE3, SSE4, SSE5, AVX
ΑνοιχτόςΌχι πλήρως. Γがんまιいおたαあるふぁ συγκεκριμένα προχωρημένα χαρακτηριστικά τたうοおみくろんυうぷしろん x86 χρειάζεται άδεια από τたうηいーたνにゅー Intel, ενώ αντίστοιχα γがんまιいおたαあるふぁ τたうοおみくろんνにゅー x86-64 ίσως χρειάζεται άδεια από τたうηいーたνにゅー AMD. Οおみくろん επεξεργαστής 80486 κυκλοφορεί πάνω από 20 χρόνια σしぐまτたうηいーたνにゅー αγορά [1] κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー τたうοおみくろんνにゅー επηρεάζουν πατέντες. Αυτό τたうοおみくろん υποσύνολο της αρχιτεκτονικής x86 είναι επομένως ανοιχτό.
Καταχωρητές
Γενικής χρήσης16-bit: 6 καταχωρητές μみゅーεいぷしろん ειδικούς ρόλους + BP κかっぱαあるふぁιいおた SP;
32-bit: 6 GPRs + EBP κかっぱαあるふぁιいおた ESP;
64-bit: 14 GPRs + RBP κかっぱαあるふぁιいおた RSP.
Κινητής υποδιαστολής16-bit: Επιπλέον ξεχωριστή μονάδα κινητής υποδιαστολής x87 (FPU).
32-bit: Ξεχωριστή ή ενσωματωμένη μονάδα κινητής υποδιαστολής x87 (FPU), ενσωματωμένες μονάδες SSE2 σしぐまεいぷしろん μεταγενέστερους επεξεργαστές.
64-bit: Ενσωματωμένες μονάδες x87 κかっぱαあるふぁιいおた SSE2.
Οおみくろん επεξεργαστής Intel 8086.
Οおみくろん επεξεργαστής Intel Core 2 Duo, ένα παράδειγμα x86-συμβατού, πολυπύρηνου επεξεργαστή 64-bit.
Οおみくろん επεξεργαστής AMD Athlon (αρχική έκδοση) - διαφορετική τεχνολογία αλλά υλοποίηση πλήρως συμβατή μみゅーεいぷしろん τους x86.

Οおみくろん όρος x86 αναφέρεται σしぐまεいぷしろん μみゅーιいおたαあるふぁ οικογένεια από αρχιτεκτονικές συνόλου εντολών[2] πぱいοおみくろんυうぷしろん βασίζονται σしぐまτたうηいーたνにゅー CPU Intel 8086. Οおみくろん επεξεργαστής 8086 κυκλοφόρησε τたうοおみくろん 1978 σαν μみゅーιいおたαあるふぁ πλήρως 16-bit επέκταση τたうοおみくろんυうぷしろん 8080 της Intel πぱいοおみくろんυうぷしろん βασιζόταν σしぐまεいぷしろん τεχνολογία 8-bit, κかっぱαあるふぁιいおた εισήγαγε τたうοおみくろん segmentation γがんまιいおたαあるふぁ νにゅーαあるふぁ ξεπεράσει τたうοおみくろん φράγμα τたうωおめがνにゅー 16-bit διευθύνσεων της προηγούμενης σχεδίασης. Οおみくろん όρος x86 προήλθε από τたうοおみくろん γεγονός ότι οおみくろんιいおた πρώτοι απόγονοι τたうοおみくろんυうぷしろん 8086 είχαν κかっぱαあるふぁιいおた αυτοί ονόματα πぱいοおみくろんυうぷしろん τελείωναν σしぐまεいぷしろん "86". Μみゅーεいぷしろん τたうαあるふぁ χρόνια έχουν γίνει πολλές προσθήκες κかっぱαあるふぁιいおた επεκτάσεις σしぐまτたうοおみくろん σύνολο εντολών x86, σχεδόν πάντα μみゅーεいぷしろん βάση τたうηいーたνにゅー προς τたうαあるふぁ πίσω συμβατότητα (backward compatibility).[3] Ηいーた αρχιτεκτονική έχει υλοποιηθεί σしぐまεいぷしろん επεξεργαστές της Intel, της Cyrix, της AMD, της VIA, κかっぱαあるふぁιいおた πολλών άλλων εταιρειών.

Οおみくろん όρος δでるたεいぷしろんνにゅー είναι συνώνυμος μみゅーεいぷしろん τたうηいーたνにゅー συμβατότητα μみゅーεいぷしろん τたうοおみくろんνにゅー IBM PC: ηいーた τελευταία απαιτεί κかっぱαあるふぁιいおた άλλο υλικό. Υπήρξαν κかっぱαあるふぁιいおた άλλα συστήματα πぱいοおみくろんυうぷしろん χρησιμοποίησαν τたうσしぐまιいおたπぱい x86, όπως τたうαあるふぁ ενσωματωμένα συστήματα κかっぱαあるふぁιいおた οおみくろん φορητός υπολογιστής GRID Compass, κάποιες φορές πぱいρろーιいおたνにゅー από τたうοおみくろんνにゅー ίδιο τたうοおみくろんνにゅー IBM PC.

Οおみくろん όρος διαδόθηκε μετά τたうηいーたνにゅー κυκλοφορία τたうοおみくろんυうぷしろん 80386, κかっぱαあるふぁιいおた υπονοεί συνήθως συμβατότητα μみゅーεいぷしろん τたうοおみくろん σύνολο εντολών 32-bit τたうοおみくろんυうぷしろん 80386. Αυτό συχνά γράφεται κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー x86-32 γがんまιいおたαあるふぁ νにゅーαあるふぁ ξεχωρίζει από τたうοおみくろん αρχικό "x86-16" πぱいοおみくろんυうぷしろん ήταν 16-bit ή από τたうοおみくろん x86-64 πぱいοおみくろんυうぷしろん είναι 64-bit.[4] Αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろんιいおた περισσότεροι επεξεργαστές x86 που χρησιμοποιούνται σしぐまεいぷしろん νέους προσωπικούς υπολογιστές κかっぱαあるふぁιいおた εξυπηρετητές έχουν δυνατότητες 64-bit, γがんまιいおたαあるふぁ νにゅーαあるふぁ αποφεύγονται προβλήματα συμβατότητας μみゅーεいぷしろん παλαιότερους υπολογιστές ή συστήματα, συχνά χρησιμοποιείται οおみくろん όρος x86-64x64) γがんまιいおたαあるふぁ νにゅーαあるふぁ υποδηλώνει λογισμικό 64-bit, μみゅーεいぷしろん τたうοおみくろんνにゅー όρο x86 νにゅーαあるふぁ χρησιμοποιείται μόνο γがんまιいおたαあるふぁ λογισμικό 32-bit.[5][6]

Αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろん 8086 αναπτύχθηκε αρχικά γがんまιいおたαあるふぁ ενσωματωμένα συστήματα κかっぱαあるふぁιいおた μικρούς προσωπικούς υπολογιστές (γがんまιいおたαあるふぁ χρήση δηλαδή από έναν χρήστη), ως απάντηση σしぐまτたうοおみくろんνにゅー επιτυχημένο Zilog Z80 πぱいοおみくろんυうぷしろん ήταν 8080-συμβατός,[7] σύντομα ηいーた γραμμή τたうωおめがνにゅー x86 απέκτησε περισσότερα χαρακτηριστικά κかっぱαあるふぁιいおた επεξεργαστική ισχύ. Σήμερα οおみくろんιいおた x86 είναι πολύ διαδεδομένοι στους σταθερούς κかっぱαあるふぁιいおた στους φορητούς υπολογιστές κかっぱαあるふぁιいおた έχουν αντικαταστήσει τους μεσαίου μεγέθους υπολογιστές (midrange computers) κかっぱαあるふぁιいおた τους επεξεργαστές RISC σしぐまεいぷしろん πολλούς εξυπηρετητές κかっぱαあるふぁιいおた σταθμούς εργασίας. Τたうοおみくろん υλικό τたうωおめがνにゅー x86 υποστηρίζεται από ένα μεγάλο μέρος τたうοおみくろんυうぷしろん λογισμικού, όπως τたうαあるふぁ λειτουργικά συστήματα DOS, Windows, Linux, BSD, Solaris κかっぱαあるふぁιいおた Mac OS X.

Οおみくろんιいおた σύγχρονοι x86 δでるたεいぷしろんνにゅー απαντώνται συχνά σしぐまεいぷしろん ενσωματωμένα συστήματα κかっぱαあるふぁιいおた σしぐまεいぷしろん εφαρμογές μみゅーεいぷしろん απαιτήσεις χαμηλής κατανάλωσης ενέργειας (όπως αυτές πぱいοおみくろんυうぷしろん βασίζονται σしぐまεいぷしろん μικρές μπαταρίες), ούτε σしぐまεいぷしろん αγορές φτηνών μικροεπεξεργαστών, όπως οおみくろんιいおた οικιακές συσκευές κかっぱαあるふぁιいおた τたうαあるふぁ παιχνίδια.[8] Συνήθως χρησιμοποιούνται απλές αρχιτεκτονικές 8-bit κかっぱαあるふぁιいおた 16-bit, αあるふぁνにゅー κかっぱαあるふぁιいおた υπάρχουν οおみくろんιいおた x86-συμβατοί VIA C7, VIA Nano, AMD Geode, Athlon Neo, κかっぱαあるふぁιいおた Intel Atom, πぱいοおみくろんυうぷしろん είναι σχεδιάσεις 32-bit κかっぱαあるふぁιいおた 64-bit μみゅーεいぷしろん σχετικά μικρή κατανάλωση κかっぱαあるふぁιいおた κόστος.

Πολλοί έχουν προσπαθήσει, συμπεριλαμβανομένης της ίδιας της Intel, νにゅーαあるふぁ αντικατασταθεί ηいーた "άκομψη" αρχιτεκτονική x86, ηいーた οποία είχε προκύψει κατευθείαν από τους πρώτους απλούς μικροεπεξεργαστές 8-bit. Παραδείγματα είναι οおみくろん iAPX 432 (γνωστός κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー Intel 8800), οおみくろん Intel 960, οおみくろん Intel 860 κかっぱαあるふぁιいおた ηいーた αρχιτεκτονική Itanium της Intel κかっぱαあるふぁιいおた της Hewlett Packard. Παρόλα αυτά, ηいーた συνεχής βελτίωση της μικροαρχιτεκτονικής κかっぱαあるふぁιいおた τたうωおめがνにゅー κυκλωμάτων τたうωおめがνにゅー x86, καθώς κかっぱαあるふぁιいおた ηいーた ανάπτυξη της βιομηχανίας τたうωおめがνにゅー ημιαγωγών έχουν εδραιώσει τους x86 σしぐまεいぷしろん πολλές περιοχές εφαρμογών. Ηいーた επέκταση 64 bit της AMD γがんまιいおたαあるふぁ τους x86 (σしぐまτたうηいーたνにゅー οποία ηいーた Intel τελικά απάντησε μみゅーεいぷしろん μみゅーιいおたαあるふぁ συμβατή σχεδίαση)[9] κかっぱαあるふぁιいおた ηいーた δυνατότητα τたうωおめがνにゅー x86 νにゅーαあるふぁ κλιμακώνουν τις επιδόσεις τους, όπως οおみくろん οκταπύρηνος Intel Xeon κかっぱαあるふぁιいおた οおみくろん 12-πύρηνος AMD Opteron δείχνουν πώς σしぐまτたうηいーたνにゅー περίπτωση τたうοおみくろんυうぷしろん x86 ηいーた συνεχής εξέλιξη κλασικών βιομηχανικών προτύπων μπορεί νにゅーαあるふぁ αντεπεξέλθει σしぐまτたうοおみくろんνにゅー ανταγωνισμό από νέες κかっぱαあるふぁιいおた διαφορετικές αρχιτεκτονικές.[10]

Σημείωση: Σしぐまτたうοおみくろん κείμενο πぱいοおみくろんυうぷしろん ακολουθεί, κάθε χρήση τたうωおめがνにゅー προθεμάτων kilo/mega/giga/tera έχει τたうηいーた δυαδική τους σημασία (δυνάμεις τたうοおみくろんυうぷしろん 1024).

Σしぐまτたうοおみくろんνにゅー παρακάτω πίνακα φαίνονται τたうαあるふぁ εμπορικά ονόματα κοινών[11] επεξεργαστών πぱいοおみくろんυうぷしろん υλοποιούν τたうοおみくろん σύνολο εντολών x86, ομαδοποιημένα ανά γενιές πぱいοおみくろんυうぷしろん δείχνουν κάποια σημαντικά σημεία σしぐまτたうηいーたνにゅー ιστορία τたうοおみくろんυうぷしろん x86. Νにゅーαあるふぁ σημειωθεί ότι οおみくろんιいおた γενιές αυτές δでるたεいぷしろんνにゅー είναι ακριβείς: κάθε μみゅーιいおたαあるふぁ ορίζει ένα γενικό πλαίσιο μみゅーεいぷしろん βάση κάποια βελτιωμένη ή εμπορικά πετυχημένη μικροαρχιτεκτονική επεξεργαστών.

Γενιά Πρώτη κυκλοφορία Γνωστά εμπορικά ονόματα Γραμμικός/φυσικός χώρος διευθύνσεων Ιδιαίτερα χαρακτηριστικά
1 1978 Intel 8086, Intel 8088 κかっぱαあるふぁιいおた οおみくろんιいおた κλώνοι τους 16-bit / 20-bit (segmented) οおみくろんιいおた πρώτοι μικροεπεξεργαστές x86
1982 Intel 80186, Intel 80188 κかっぱαあるふぁιいおた οおみくろんιいおた κλώνοι τους, NEC V20/V30 υλικό γがんまιいおたαあるふぁ γρήγορους υπολογισμούς διευθύνσεων, γρήγορο πολλαπλασιασμό/διαίρεση, κかっぱ.αあるふぁ.
2 Intel 80286 κかっぱαあるふぁιいおた οおみくろんιいおた κλώνοι τたうοおみくろんυうぷしろん 16-bit (30-bit virtual) / 24-bit (segmented) μονάδα διαχείρισης μνήμης (memory management unit, MMU), γがんまιいおたαあるふぁ προστατευμένη κατάσταση (protected mode) κかっぱαあるふぁιいおた μεγαλύτερο χώρο διευθύνσεων (address space)
3 (IA-32) 1985 Intel 80386 κかっぱαあるふぁιいおた οおみくろんιいおた κλώνοι τたうοおみくろんυうぷしろん, AMD Am386 32-bit (46-bit virtual) / 32-bit σύνολο εντολών 32-bit, MMU μみゅーεいぷしろん σελίδες (paging)
4 (FPU) 1989 Intel486 κかっぱαあるふぁιいおた οおみくろんιいおた κλώνοι τたうοおみくろんυうぷしろん, AMD Am486/Am5x86 διοχέτευση (pipelining) τύπου RISC, ενσωματωμένη μονάδα κινητής υποδιαστολής x87 (80-bit), κρυφή μνήμη σしぐまτたうοおみくろん τたうσしぐまιいおたπぱい (on-chip cache)
4/5 1997 IDT/Centaur-C6, Cyrix III-Samuel, VIA C3-Samuel2 / VIA C3-Ezra (2001), VIA C7 (2005) ενσωματωμένη FPU εντός σειράς (in-order), κάποια μοντέλα μみゅーεいぷしろん κρυφή μνήμη L2 στο τたうσしぐまιいおたπぱい (on-chip L2 cache), επεκτάσεις MMX, SSE
5 1993 Pentium, Pentium MMX, Cyrix 5x86, Rise mP6 υπερβαθμωτοί (superscalar), δίαυλος δεδομένων (databus) 64-bit, γρηγορότερη FPU, MMX (2x 32-bit)
5/6 1996 AMD K5, Nx586 (1994) μετάφραση μみゅー-op
6 1995 Pentium Pro, Cyrix 6x86, Cyrix MII, Cyrix III-Joshua (2000) όπως παραπάνω / 36-bit φυσική (PAE) μετάφραση μみゅー-op, εντολές μεταφοράς υπό συνθήκη, εκτέλεση εκτός σειράς (out-of-order execution), μετονομασία καταχωρητών (register renaming), υποθετική εκτέλεση (speculative execution), φυσική επέκταση μνήμης (Physical Address Extension, PAE) (Pentium Pro), κρυφή μνήμη L2 στον επεξεργαστή (in-package L2 cache) (Pentium Pro)
1997 AMD K6/-2/3, Pentium II/III υποστήριξη κρυφής μνήμης L3, 3DNow!, SSE (2x 64-bit)
2003 Pentium M, Intel Core (2006) βελτιστοποιημένοι γがんまιいおたαあるふぁ χαμηλή κατανάλωση ενέργειας (Thermal Design Power)
7 1999 Athlon, Athlon XP υπερβαθμωτές FPU, ευρεία σχεδίαση (μέχρι τρεις εντολές x86 ανά παλμό ρολογιού)
2000 Pentium 4 βαθιά διοχέτευση, υψηλή συχνότητα, SSE2, hyper-threading
7/8 2000 Transmeta Crusoe, Efficeon σχεδίαση VLIW μみゅーεいぷしろん προσομοιωτή x86, ελεγκτής μνήμης σしぐまτたうοおみくろん τたうσしぐまιいおたπぱい
2004 Pentium 4 Prescott 64-bit / φυσικός 40-bit σしぐまτたうηいーたνにゅー πρώτη υλοποίηση της AMD. πολύ βαθιά διοχέτευση, πολύ υψηλή συχνότητα, SSE3, δυνατότητα 64-bit (ΚかっぱΜみゅーΕいぷしろん ακεραίων) στις υποδοχές LGA 775
2006 Intel Core 2 64-bit (ΚかっぱΜみゅーΕいぷしろん ακεραίων), χαμηλή κατανάλωση, πολλοί πυρήνες (multi-core), χαμηλότερη συχνότητα ρολογιού, SSE4 (Penryn)
2008 VIA Nano εκτέλεση εκτός σειράς (Out-of-order execution), υπερβαθμωτοί, 64-bit (ΚかっぱΜみゅーΕいぷしろん ακεραίων), κρυπτογράφηση σしぐまτたうοおみくろん υλικό, πολύ χαμηλή κατανάλωση ενέργειας, προσαρμοζόμενη διαχείριση ενέργειας (adaptive power management)
8 (x86-64) 2003 Athlon 64, Opteron σύνολο εντολών x86-64 (βασικός πυρήνας ακεραίων ΚかっぱΜみゅーΕいぷしろん), ελεγκτής μνήμης σしぐまτたうοおみくろん τたうσしぐまιいおたπぱい, hypertransport
8/9 2007 AMD Phenom όπως παραπάνω / φυσικός 48-bit γがんまιいおたαあるふぁ τたうοおみくろんνにゅー AMD Phenom μονολιθικοί τετραπύρηνοι, SSE4a, HyperTransport 3 ή QuickPath, εγγενής ελεγκτής μνήμης, κρυφή μνήμη L3 στο τたうσしぐまιいおたπぱい, αρθρωτή σχεδίαση, κάποια μοντέλα Core i3/i5 περιλαμβάνουν GPU
2008 Intel Core i3, Intel Core i5, Intel Core i7, AMD Phenom II
Intel Atom εντός σειράς (in-order) αλλά μみゅーεいぷしろん υψηλό βαθμό διοχέτευσης, πολύ χαμηλή κατανάλωση ενέργειας, σしぐまεいぷしろん κάποια μοντέλα: 64-bit (ΚかっぱΜみゅーΕいぷしろん ακεραίων), ενσωματωμένη GPU
2011 AMD Bobcat, Llano εκτέλεση εκτός σειράς (Out-of-order execution), ΚかっぱΜみゅーΕいぷしろん ακεραίων 64-bit, ενσωματωμένη GPU, χαμηλή κατανάλωση (Bobcat)
9 (GPU) 2011 Intel Sandy Bridge, AMD Bulldozer κかっぱαあるふぁιいおた Trinity SSE5/AVX (4x 64-bit), αρθρωτή σχεδίαση, ενσωματωμένη GPU σしぐまτたうοおみくろん τたうσしぐまιいおたπぱい
2012 Intel Ivy Bridge βαθμός σμίκρυνσης τσιπ 22 nm (Sandy Bridge). Θしーたαあるふぁ κατασκευαστεί χρησιμοποιώντας τたうηいーたνにゅー τεχνολογίας τρανζίστορ τριών πυλών της Intel (tri-gate)
2013 Intel Larrabee πολύ ευρεία μονάδα διανυσμάτων (vector unit), εντολές LRBni (8x 64-bit)
2014 Intel Haswell εντολές FMA3, DDR4

Ηいーた αρχιτεκτονική x86 κυκλοφόρησε γがんまιいおたαあるふぁ πρώτη φορά τたうοおみくろん 1978 μみゅーεいぷしろん τたうηいーたνにゅー ΚかっぱΜみゅーΕいぷしろん Intel 8086, πぱいοおみくろんυうぷしろん ήταν μみゅーιいおたαあるふぁ πλήρως 16-bit σχεδίαση, ηいーた οποία είχε βασιστεί στους παλιότερους επεξεργαστές 8-bit 8008 κかっぱαあるふぁιいおた 8080. Αあるふぁνにゅー κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー ήταν συμβατή σしぐまτたうοおみくろん επίπεδο τたうοおみくろんυうぷしろん δυαδικού κώδικα (binary compatible), σχεδιάστηκε έτσι ώστε νにゅーαあるふぁ επιτρέπει σしぐまεいぷしろん προγράμματα συμβολικής γλώσσας πぱいοおみくろんυうぷしろん είχαν γραφτεί γがんまιいおたαあるふぁ αυτούς τους επεξεργαστές (κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ τたうοおみくろんνにゅー σύγχρονό τους 8085) νにゅーαあるふぁ μεταφράζονται μηχανικά σしぐまεいぷしろん αντίστοιχη συμβολική γλώσσα 8086. Αυτό είχε σしぐまαあるふぁνにゅー συνέπεια οおみくろん νέος επεξεργαστής νにゅーαあるふぁ αποτελέσει ελκυστική λύση γがんまιいおたαあるふぁ πολλούς καταναλωτές. Οおみくろん εξωτερικός δίαυλος όμως τたうοおみくろんυうぷしろん 8086 ήταν 16-bit κかっぱαあるふぁιいおた αυτό οδήγησε σしぐまεいぷしろん σημαντική επανασχεδίαση τたうοおみくろんυうぷしろん υλικού, καθώς επίσης κかっぱαあるふぁιいおた σしぐまεいぷしろん άλλες επιπλοκές κかっぱαあるふぁιいおた σημεία πぱいοおみくろんυうぷしろん τたうοおみくろん κόστος αυξανόταν. Γがんまιいおたαあるふぁ νにゅーαあるふぁ αντιμετωπίσει αυτό τたうοおみくろん εμπόδιο, ηいーた Intel εισήγαγε τたうοおみくろんνにゅー σχεδόν πανομοιότυπο 8088, οおみくろん οποίος σしぐまτたうηいーたνにゅー πραγματικότητα ήταν ένας 8086 μみゅーεいぷしろん εξωτερικό δίαυλο 8-bit πぱいοおみくろんυうぷしろん επέτρεπε απλούστερες πλακέτες τυπωμένων κυκλωμάτων (printed circuit boards) κかっぱαあるふぁιいおた χρειαζόταν λιγότερα τたうσしぐまιいおたπぱい DRAM (του 1-bit) - ήταν επίσης πぱいιいおたοおみくろん εύκολο νにゅーαあるふぁ επικοινωνήσει μみゅーεいぷしろん τたうαあるふぁ ήδη διαδεδομένα (δでるたηいーたλらむだ. χαμηλού κόστους) συστήματα κかっぱαあるふぁιいおた περιφερειακά τたうσしぐまιいおたπぱい πぱいοおみくろんυうぷしろん ήταν 8-bit. Αυτό, μαζί μみゅーεいぷしろん άλλους, μみゅーηいーた τεχνικούς λόγους, οδήγησε σしぐまτたうηいーたνにゅー απόφαση της IBM νにゅーαあるふぁ κατασκευάσει έναν οικιακό / προσωπικό υπολογιστή μみゅーεいぷしろん βάση τたうοおみくろんνにゅー 8088, παρά τたうηいーた διαθεσιμότητα επεξεργαστών 16-bit από τたうηいーたνにゅー Motorola, τたうηいーたνにゅー Zilog κかっぱαあるふぁιいおた τたうηいーたνにゅー National Semiconductor (ενώ εξέτασε επίσης κかっぱαあるふぁιいおた άλλους επεξεργαστές 8-bit πぱいοおみくろんυうぷしろん ήδη κυκλοφορούσαν). Οおみくろん IBM PC πぱいοおみくろんυうぷしろん προέκυψε, επικράτησε τたうωおめがνにゅー συστημάτων CP/M μみゅーεいぷしろん βάση τたうοおみくろんνにゅー Z80, τたうωおめがνにゅー υπολογιστών Apple II, κかっぱαあるふぁιいおた άλλων διαδεδομένων υπολογιστών, μみゅーεいぷしろん αποτέλεσμα νにゅーαあるふぁ γίνει τたうοおみくろん νにゅーτたうεいぷしろん φάκτο πρότυπο τたうωおめがνにゅー προσωπικών υπολογιστών κかっぱαあるふぁιいおた οおみくろん 8088 και οおみくろんιいおた απόγονοί τたうοおみくろんυうぷしろん νにゅーαあるふぁ επικρατήσουν σしぐまεいぷしろん αυτόν τたうοおみくろんνにゅー κλάδο της αγοράς μικροεπεξεργαστών.

Οおみくろん iAPX 432 και οおみくろん 80286

[Επεξεργασία | επεξεργασία κώδικα]

Ένας άλλος παράγοντας ήταν οおみくろん προχωρημένος αλλά ασύμβατος επεξεργαστής 32-bit Intel 8800 (γνωστός κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー iAPX 432) πぱいοおみくろんυうぷしろん απέτυχε σしぐまτたうηいーたνにゅー αγορά περίπου τたうηいーたνにゅー ίδια εποχή πぱいοおみくろんυうぷしろん κυκλοφόρησε οおみくろん IBM-PC: οおみくろん 8800 απογοήτευσε από πλευράς ταχύτητας σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろんνにゅー καινούριο κかっぱαあるふぁιいおた γρήγορο 80286 στις αρχές τたうοおみくろんυうぷしろん 1982. (Οおみくろん 80186, πぱいοおみくろんυうぷしろん κυκλοφόρησε παράλληλα μみゅーεいぷしろん τたうοおみくろんνにゅー 80286, προοριζόταν γがんまιいおたαあるふぁ ενσωματωμένα συστήματα, κかっぱαあるふぁιいおた στόχευε ήδη σしぐまεいぷしろん μみゅーιいおたαあるふぁ μεγάλη αγορά.) Ηいーた εμπορική αποτυχία τたうοおみくろんυうぷしろん 32-bit 8800 ήταν ένας βασικός λόγος πぱいοおみくろんυうぷしろん ηいーた Intel συνέχισε νにゅーαあるふぁ αναπτύσσει πぱいιいおたοおみくろん προχωρημένους επεξεργαστές συμβατούς μみゅーεいぷしろん τたうοおみくろんνにゅー 8086, όπως οおみくろん 80386 (επέκταση σしぐまτたうαあるふぁ 32-bit τたうοおみくろんυうぷしろん γρήγορου 80286).

Άλλοι κατασκευαστές

[Επεξεργασία | επεξεργασία κώδικα]

Διάφορες εταιρείες, όπως ηいーた IBM, ηいーた NEC,[12] ηいーた AMD, ηいーた TI, ηいーた STM, ηいーた Fujitsu, ηいーた OKI, ηいーた Siemens, ηいーた Cyrix, ηいーた Intersil, ηいーた C&T, ηいーた NexGen κかっぱαあるふぁιいおた ηいーた UMC, άρχισαν νにゅーαあるふぁ σχεδιάζουν κかっぱαあるふぁιいおた νにゅーαあるふぁ κατασκευάζουν επεξεργαστές γがんまιいおたαあるふぁ προσωπικούς υπολογιστές κかっぱαあるふぁιいおた ενσωματωμένα συστήματα. Αυτά οおみくろんιいおた υλοποιήσεις τたうοおみくろんυうぷしろん x86 συνήθως δでるたεいぷしろんνにゅー ήταν απλές αντιγραφές αλλά είχαν διαφορετική εσωτερική μικροαρχιτεκτονική κかっぱαあるふぁιいおた παρείχαν διαφορετικές λύσεις σしぐまεいぷしろん ηλεκτρονικά κかっぱαあるふぁιいおた φυσικά προβλήματα υλοποίησης. Τたうαあるふぁ πρώτα συμβατά τたうσしぐまιいおたπぱい ήταν 16-bit, ενώ σχεδιάσεις 32-bit ακολούθησαν πολύ αργότερα. Σしぐまτたうηいーたνにゅー αγορά τたうωおめがνにゅー προσωπικών υπολογιστών, οおみくろんιいおた πρώτες σημαντικές ποσότητες εμφανίστηκαν γύρω σしぐまτたうοおみくろん 1990 μみゅーεいぷしろん τους επεξεργαστές πぱいοおみくろんυうぷしろん ήταν συμβατοί μみゅーεいぷしろん τたうοおみくろんνにゅー i386 κかっぱαあるふぁιいおた τたうοおみくろんνにゅー i486, συχνά χρησιμοποιώντας τたうοおみくろん ίδιο όνομα μみゅーεいぷしろん τたうαあるふぁ πρωτότυπα τたうσしぐまιいおたπぱい της Intel. Άλλες εταιρείες πぱいοおみくろんυうぷしろん σχεδίασαν ή κατασκεύασαν επεξεργαστές x86 ή x87 ήταν ηいーた ITT Corporation, ηいーた National Semiconductor, ηいーた ULSI System Technology κかっぱαあるふぁιいおた ηいーた Weitek.

Μετά τたうοおみくろんνにゅー i486 πぱいοおみくろんυうぷしろん είχε πλήρη διοχέτευση (pipelining), ηいーた Intel κυκλοφόρησε τたうηいーたνにゅー εμπορική ονομασία Pentium (ηいーた οποία, σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τους κωδικούς αριθμούς, μπορούσε νにゅーαあるふぁ κατοχυρωθεί σしぐまαあるふぁνにゅー εμπορικό σήμα) γがんまιいおたαあるふぁ τたうηいーた νέα της γραμμή υπερβαθμωτών (superscalar) σχεδιάσεων x86. Λόγω της εξαφάνισης τたうωおめがνにゅー ονομασιών x86 γがんまιいおたαあるふぁ νομικούς λόγους, ηいーた IBM συνεργάστηκε μみゅーεいぷしろん τたうηいーたνにゅー Cyrix γがんまιいおたαあるふぁ τたうηいーたνにゅー κατασκευή τたうοおみくろんυうぷしろん 5x86 κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια τたうωおめがνにゅー γρήγορων σχεδιάσεων 6x86 (M1) κかっぱαあるふぁιいおた 6x86MX (MII) της Cyrix, πぱいοおみくろんυうぷしろん ήταν τたうαあるふぁ πρώτα τたうσしぐまιいおたπぱい x86 που υλοποίησαν μετονομασία καταχωρητών (register renaming) ώστε νにゅーαあるふぁ είναι δυνατή ηいーた υποθετική εκτέλεση (speculative execution). Παράλληλα, ηいーた AMD σχεδίασε κかっぱαあるふぁιいおた κατασκεύασε (αλλά κυκλοφόρησε μみゅーεいぷしろん καθυστέρηση) τたうοおみくろんνにゅー προχωρημένο 5k86 (K5), οおみくろん οποίος, εσωτερικά, ήταν βασισμένος σしぐまεいぷしろん σημαντικό βαθμό στις παλιότερες σχεδιάσεις 29K RISC της AMD - παρόμοια μみゅーεいぷしろん τたうοおみくろんνにゅー Nx586 της NexGen, χρησιμοποιούσε μみゅーιいおたαあるふぁ στρατηγική όπου αφιερωμένες βαθμίδες της διοχέτευσης αποκωδικοποιούν εντολές x86 σしぐまεいぷしろん εύκολα διαχειρίσιμες μικρολειτουργίες (micro-operations), μみゅーιいおたαあるふぁ μέθοδος πぱいοおみくろんυうぷしろん από τότε έγινε οおみくろん κανόνας γがんまιいおたαあるふぁ τις περισσότερες σχεδιάσεις τたうοおみくろんυうぷしろん x86 μέχρι σήμερα.

Κάποιες πρώιμες εκδόσεις αυτών τたうωおめがνにゅー τたうσしぐまιいおたπぱい είχαν προβλήματα απαγωγής θερμότητας. Οおみくろん 6x86 είχε επίσης κάποια μικρά προβλήματα συμβατότητας κかっぱαあるふぁιいおた από τたうοおみくろんνにゅー Nx586 έλειπε ηいーた μονάδα κινητής υποδιαστολής (FPU) κかっぱαあるふぁιいおた ηいーた (τότε σημαντική) συμβατότητα σしぐまεいぷしろん ακίδες (pin-compatibility), ενώ οおみくろん K5 αποδείχτηκε λらむだιいおたγがんまοおみくろん αργός, όταν (τελικά) κυκλοφόρησε. Πολλοί καταναλωτές επίσης δでるたεいぷしろんνにゅー γνώριζαν γがんまιいおたαあるふぁ αυτές τις εναλλακτικές έναντι τたうοおみくろんυうぷしろん Pentium. Αυτά τたうαあるふぁ προβλήματα οδήγησαν σしぐまεいぷしろん εμπορική αποτυχία τたうωおめがνにゅー εναλλακτικών σχεδιάσεων, παρά τたうοおみくろん γεγονός ότι οおみくろん K5 είχε πολύ καλή συμβατότητα μみゅーεいぷしろん τたうοおみくろんνにゅー Pentium κかっぱαあるふぁιいおた οおみくろん 6x86 ήταν σημαντικά πぱいιいおたοおみくろん γρήγορος από τたうοおみくろんνにゅー Pentium σしぐまεいぷしろん πράξεις ακεραίων.[13] Ηいーた AMD αργότερα κατάφερε νにゅーαあるふぁ εδραιωθεί σしぐまαあるふぁνにゅー σημαντικός παίχτης σしぐまτたうηいーたνにゅー αγορά, λόγω τたうωおめがνにゅー επεξεργαστών K6, ενώ τελικά ανέπτυξε τους πολύ επιτυχημένους Athlon κかっぱαあるふぁιいおた Opteron. Υπήρξαν κかっぱαあるふぁιいおた άλλες εταιρείες πぱいοおみくろんυうぷしろん συμμετείχαν σしぐまτたうηいーたνにゅー αγορά, όπως ηいーた Centaur Technology (γνωστή παλιότερα σしぐまαあるふぁνにゅー IDT), ηいーた Rise Technology κかっぱαあるふぁιいおた ηいーた Transmeta. Ηいーた επεξεργαστές C3 κかっぱαあるふぁιいおた C7 της VIA Technologies, πぱいοおみくろんυうぷしろん έχουν χαμηλή κατανάλωση ενέργειας, σχεδιάστηκαν από τたうηいーたνにゅー Centaur κかっぱαあるふぁιいおた κυκλοφορούν γがんまιいおたαあるふぁ μεγάλο χρονικό διάστημα. Ηいーた τελευταία σχεδίαση της Centaur, οおみくろん VIA Nano, είναι οおみくろん πρώτος επεξεργαστής τους μみゅーεいぷしろん υπερβαθμωτή κかっぱαあるふぁιいおた υποθετική εκτέλεση. Έχει ενδιαφέρον τたうοおみくろん ότι κυκλοφόρησε περίπου τたうηいーたνにゅー ίδια χρονική περίοδο μみゅーεいぷしろん τたうοおみくろんνにゅー πρώτο επεξεργαστή της Intel μみゅーεいぷしろん εκτέλεση εντός σειράς ("in-order") μετά τたうοおみくろんνにゅー Pentium P5, τたうοおみくろんνにゅー Intel Atom.

Επεκτάσεις τたうοおみくろんυうぷしろん μεγέθους λέξης

[Επεξεργασία | επεξεργασία κώδικα]

Ηいーた αρχιτεκτονική τたうοおみくろんυうぷしろん συνόλου εντολών έχει επεκταθεί δύο φορές γがんまιいおたαあるふぁ μεγαλύτερα μεγέθη λέξης (word size). Τたうοおみくろん 1985, ηいーた Intel κυκλοφόρησε τたうοおみくろんνにゅー επεξεργαστή 32-bit 80386 (γνωστό κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー i386), οおみくろん οποίος σταδιακά αντικατέστησε τたうαあるふぁ παλιά τσιπ 16-bit στους υπολογιστές (νにゅーαあるふぁ κかっぱαあるふぁιいおた δでるたεいぷしろん συνέβη τたうοおみくろん ίδιο σしぐまτたうαあるふぁ ενσωματωμένα συστήματα) κατά τたうαあるふぁ επόμενα χρόνια: τたうοおみくろん επαυξημένο αυτό προγραμματιστικό μοντέλο αρχικά ονομάστηκε αρχιτεκτονική τたうοおみくろんυうぷしろん i386 ("i386 architecture"), λόγω τたうοおみくろんυうぷしろん ονόματος της πρώτης τたうοおみくろんυうぷしろん υλοποίησης, αλλά σしぐまτたうηいーた συνέχεια ηいーた Intel τたうοおみくろん ονόμασε IA-32 όταν εισήγαγε τたうηいーたνにゅー (διαφορετική) αρχιτεκτονική IA-64. Μεταξύ 1999-2003, ηいーた AMD επέκτεινε αυτήν τたうηいーたνにゅー αρχιτεκτονική 32-bit σしぐまτたうαあるふぁ 64 bits κかっぱαあるふぁιいおた τたうηいーたνにゅー ονόμασε x86-64 (σしぐまεいぷしろん αρχικά της έγγραφα) κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια AMD64. Σύντομα ηいーた Intel υιοθέτησε αυτές της επεκτάσεις της AMD κάτω από τたうοおみくろん όνομα IA-32e, τたうοおみくろん οποίο σしぐまτたうηいーた συνέχεια άλλαξε σしぐまεいぷしろん EM64T, κかっぱαあるふぁιいおた τελικά κατέληξε σしぐまτたうοおみくろん όνομα Intel 64. Ανάμεσα σしぐまεいぷしろん αυτά τたうαあるふぁ πέντε ονόματα, ηいーた πぱいιいおたοおみくろん κοινή ονομασία είναι ηいーた αρχική x86-64, αあるふぁνにゅー κかっぱαあるふぁιいおた ηいーた Microsoft κかっぱαあるふぁιいおた ηいーた Sun Microsystems ακόμα χρησιμοποιούν τたうοおみくろんνにゅー όρο x64.

Βασικά χαρακτηριστικά της αρχιτεκτονικής

[Επεξεργασία | επεξεργασία κώδικα]

Ηいーた αρχιτεκτονική x86 έχει εντολές μεταβλητού μήκους κかっぱαあるふぁιいおた είναι κυρίως σχεδίαση "CISC" δύο διευθύνσεων μみゅーεいぷしろん έμφαση σしぐまτたうηいーたνにゅー προς τたうαあるふぁ πίσω συμβατότητα (backward compatibility). Τたうοおみくろん σύνολο εντολών δでるたεいぷしろんνにゅー είναι όμως κλασικό CISC, αλλά επεκτείνει μみゅーεいぷしろん διακριτό τρόπο τις απλές αρχιτεκτονικές 8-bit τたうοおみくろんυうぷしろん 8008 κかっぱαあるふぁιいおた τたうοおみくろんυうぷしろん 8080. Υποστηρίζεται ηいーた διευθυνσιοδότηση μみゅーεいぷしろん byte κかっぱαあるふぁιいおた οおみくろんιいおた λέξεις αποθηκεύονται σしぐまτたうηいーた μνήμη σしぐまεいぷしろん σειρά μικρού άκρου (little-endian). Επιτρέπεται ηいーた πρόσβαση σしぐまτたうηいーた μνήμη σしぐまεいぷしろん διευθύνσεις πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー είναι στοιχισμένες (unaligned) γがんまιいおたαあるふぁ όλα τたうαあるふぁ μεγέθη λέξεων πぱいοおみくろんυうぷしろん επιτρέπονται. Τたうοおみくろん μεγαλύτερο μέγεθος πぱいοおみくろんυうぷしろん υποστηρίζεται εγγενώς γがんまιいおたαあるふぁ αριθμητική ακεραίων κかっぱαあるふぁιいおた διευθύνεσιες μνήμης ή σχετικές διευθύνσεις-offsets) είναι 16, 32, ή 64 bits ανάλογα μみゅーεいぷしろん τたうηいーた γενιά της αρχιτεκτονικής (οおみくろんιいおた νεότεροι επεξεργαστές υποστηρίζουν απευθείας κかっぱαあるふぁιいおた μικρότερους ακεραίους). Πολλές απλές τιμές μπορούν νにゅーαあるふぁ επεξεργαστούν ταυτόχρονα μέσω της μονάδας SIMD πぱいοおみくろんυうぷしろん περιλαμβάνεται στις μεταγενέστερες γενιές, όπως περιγράφεται σしぐまτたうηいーた συνέχεια.[14] Γがんまιいおたαあるふぁ κοινές καταστάσεις κかっぱαあるふぁιいおた τιμές πぱいοおみくろんυうぷしろん βρίσκονται σしぐまτたうοおみくろん εύρος -128..127, γがんまιいおたαあるふぁ χρήση σしぐまεいぷしろん σχετικές διευθύνσεις ή απλά δεδομένα, μπορούν νにゅーαあるふぁ χρησιμοποιηθούν κατευθείαν αριθμοί 8-bit. Οおみくろんιいおた εντολές συνήθως έχουν μήκος 2 ή 3 byte (αあるふぁνにゅー κかっぱαあるふぁιいおた κάποιες είναι πολύ μεγαλύτερες κかっぱαあるふぁιいおた άλλες είναι ένα byte).

Γがんまιいおたαあるふぁ νにゅーαあるふぁ εξοικονομηθεί κかっぱαあるふぁιいおた άλλο χώρος γがんまιいおたαあるふぁ τたうηいーたνにゅー κωδικοποίηση τたうωおめがνにゅー εντολών, οおみくろんιいおた περισσότεροι καταχωρητές (registers) εκφράζονται σしぐまαあるふぁνにゅー κώδικες (opcodes) μみゅーεいぷしろん χρήση 3 bit, κかっぱαあるふぁιいおた τたうοおみくろん πολύ ένας τελεστέος μιας εντολής μπορεί νにゅーαあるふぁ είναι θέση μνήμης (υπάρχουν σχεδιάσεις "CISC", όπως οおみくろん PDP-11, πぱいοおみくろんυうぷしろん χρησιμοποιούν δύο). Αυτός οおみくろん τελεστέος όμως μπορεί νにゅーαあるふぁ είναι ταυτόχρονα κかっぱαあるふぁιいおた οおみくろん προορισμός (destination), ή ταυτόχρονα ηいーた προέλευση (source) κかっぱαあるふぁιいおた οおみくろん προορισμός, ενώ οおみくろん άλλος τελεστέος, ηいーた προέλευση, μπορεί νにゅーαあるふぁ είναι είτε καταχωρητής (register), είτε απευθείας τιμή (immediate). Αυτό, μαζί μみゅーεいぷしろん άλλους παράγοντες, οδηγεί σしぐまεいぷしろん μικρό μέγεθος κώδικα πぱいοおみくろんυうぷしろん συμπεριφέρεται καλά σしぐまεいぷしろん σχέση μみゅーεいぷしろん τους επεξεργαστές 8-bit κかっぱαあるふぁιいおた χρησιμοποιεί αποδοτικά τたうηいーたνにゅー κρυφή μνήμη γがんまιいおたαあるふぁ τις εντολές (instruction cache memory). Οおみくろん σχετικά μικρός αριθμός τたうωおめがνにゅー καταχωρητών γενικής χρήσης (κληρονομιά τたうωおめがνにゅー 8-bit επεξεργαστών) έχει οδηγήσει σしぐまεいぷしろん συχνή χρήση της διευθυνσιοδότησης μみゅーεいぷしろん βάση καταχωρητές (register-relative addressing) κかっぱαあるふぁιいおた μικρές σχετικές διευθύνσεις, ειδικά γがんまιいおたαあるふぁ πρόσβαση σしぐまτたうηいーたνにゅー στοίβα. Έχει υπάρξει σημαντική έρευνα γがんまιいおたαあるふぁ νにゅーαあるふぁ γίνουν αυτές οおみくろんιいおた περιπτώσεις πρόσβασης τόσο γρήγορες, όσο ηいーた πρόσβαση στους καταχωρητές, δでるたηいーたλらむだ. μみゅーεいぷしろん μみゅーιいおたαあるふぁ μόνο εντολή, συνήθως όταν τたうαあるふぁ δεδομένα υπάρχουν ήδη σしぐまτたうηいーたνにゅー κρυφή μνήμη πρώτου επιπέδου.

Αριθμοί κινητής υποδιαστολής κかっぱαあるふぁιいおた SIMD

[Επεξεργασία | επεξεργασία κώδικα]

Γがんまιいおたαあるふぁ τたうοおみくろんνにゅー αρχικό επεξεργαστή 8086 αναπτύχθηκε ένας ξεχωριστός επεξεργαστής κινητής υποδιαστολής, μみゅーεいぷしろん εσωτερικούς καταχωρητές 80-bit, οおみくろん 8087. Τたうοおみくろん τたうσしぐまιいおたπぱい αυτό τελικά οδήγησε σしぐまτたうηいーたνにゅー ανάπτυξη τたうοおみくろんυうぷしろん 80387, ενώ οおみくろんιいおた μεταγενέστεροι επεξεργαστές ενσωμάτωσαν μみゅーιいおたαあるふぁ προς τたうαあるふぁ πίσω συμβατή έκδοση αυτής της λειτουργικότητας σしぐまτたうοおみくろん ίδιο τたうσしぐまιいおたπぱい μみゅーεいぷしろん τたうοおみくろんνにゅー κύριο επεξεργαστή. Οおみくろんιいおた μοντέρνες σχεδιάσεις x86 περιλαμβάνουν επιπλέον μみゅーιいおたαあるふぁ μονάδα SIMD (βべーたλらむだ. παρακάτω, SSE) όποι οおみくろんιいおた εντολές μπορούν νにゅーαあるふぁ εκτελούνται παράλληλα σしぐまεいぷしろん (μία ή δύο) λέξεις τたうωおめがνにゅー 128-bit, μみゅーεいぷしろん κάθε λέξη νにゅーαあるふぁ περιέχει 2 ή 4 αριθμούς κινητής υποδιαστολής (μήκους 64 ή 32 bit οおみくろん καθένας), ή εναλλακτικά 2, 4, 8 ή 16 ακεραίους (μήκους 64, 32, 16 ή 8 bit οおみくろん καθένας αντίστοιχα). Τたうοおみくろん εύρος τたうωおめがνにゅー καταχωρητών SIMD σημαίνει ότι οおみくろんιいおた επεξεργαστές x86 που υπάρχουν σήμερα μπορούν νにゅーαあるふぁ φορτώσουν ή νにゅーαあるふぁ αποθηκεύσουν μέχρι 128 bit δεδομένων από τたうηいーた μνήμη μみゅーεいぷしろん μみゅーιいおたαあるふぁ μόνο εντολή κかっぱαあるふぁιいおた νにゅーαあるふぁ εκτελέσουν λειτουργίες επιπέδου bit (αλλά όχι αριθμητική ακεραίων[15]) σしぐまεいぷしろん ποσότητες πλήρως 128-bit παράλληλα. Οおみくろんιいおた επόμενοι επεξεργαστές x86 έχουν λειτουργίες SIMD 256-bit (μみゅーεいぷしろん φόρτωση κかっぱαあるふぁιいおた αποθήκευση σしぐまτたうηいーた μνήμη 256-bit).

Σύγχρονες υλοποιήσεις

[Επεξεργασία | επεξεργασία κώδικα]

Κατά τたうηいーた διάρκεια της εκτέλεσης, οおみくろんιいおた σύγχρονοι επεξεργαστές x86 χρησιμοποιούν κάποιων επιπλέον σταδίων αποκωδικοποίησης γがんまιいおたαあるふぁ νにゅーαあるふぁ σπάσουν τις περισσότερες εντολές σしぐまεいぷしろん μικρότερα κομμάτια, τις μみゅーιいおたκかっぱρろーοおみくろん-εντολές (micro-operations). Αυτές δίνονται σしぐまεいぷしろん μみゅーιいおたαあるふぁ μονάδα ελέγχου πぱいοおみくろんυうぷしろん τις κρατά κかっぱαあるふぁιいおた κατανέμει χρονικά τたうηいーたνにゅー εκτέλεσή τους, διατηρώντας πάντα τたうηいーた συμβατότητα μみゅーεいぷしろん τたうηいーた σημασιολογία τたうοおみくろんυうぷしろん x86, ώστε νにゅーαあるふぁ μπορούν νにゅーαあるふぁ εκτελεστούν παράλληλα (εいぷしろんνにゅー μέρει), από μみゅーιいおたαあるふぁ εξειδικευμένη μονάδα εκτέλεσης (οおみくろん επεξεργαστής έχει αρκετές τέτοιες μονάδες διαθέσιμες). Αυτές οおみくろんιいおた σύγχρονες σχεδιάσεις x86 είναι επομένως υπερβαθμωτές (superscalar), κかっぱαあるふぁιいおた μπορούν νにゅーαあるふぁ εκτελούν εντολές εκτός σειράς (out of order execution) κかっぱαあるふぁιいおた υποθετικά (μέσω μετονομασίας καταχωρητών), τたうοおみくろん οποίο σημαίνει ότι μπορούν νにゅーαあるふぁ εκτελούν ταυτόχρονα πολλές εντολές x86 (κατά τμήματα ή ολόκληρες), κかっぱαあるふぁιいおた όχι απαραίτητα μみゅーεいぷしろん τたうηいーたνにゅー ίδια σειρά μみゅーεいぷしろん τたうηいーたνにゅー οποία δόθηκαν από τたうοおみくろん πρόγραμμα πぱいοおみくろんυうぷしろん εκτελείται.

Όταν πρωτοκυκλοφόρησε αυτή ηいーた τεχνολογία ονομάστηκε "πυρήνας RISC" ("RISC core") ή "μετάφραση RISC" ("RISC translation"), γがんまιいおたαあるふぁ εμπορικούς λόγους, αλλά κかっぱαあるふぁιいおた γιατί αυτές οおみくろんιいおた μικρο-εντολές έχουν κάποιες ιδιότητες πぱいοおみくろんυうぷしろん έχουν κάποια είδη τたうωおめがνにゅー εντολών RISC. Παρόλα αυτά, οおみくろん παραδοσιακός μικροκώδικας (microcode) πぱいοおみくろんυうぷしろん χρησιμοποιείται από τたうηいーた δεκαετία τたうοおみくろんυうぷしろん 1950 έχει επίσης αυτές τις ιδιότητες κかっぱαあるふぁιいおた ηいーた μόνη διαφορά της νέας αυτής προσέγγισης ήταν ότι ηいーた μετάφραση σしぐまεいぷしろん μικρο-λειτουργίες τώρα γινόταν μみゅーεいぷしろん ασύγχρονο τρόπο. Οおみくろんιいおた μονάδες εκτέλεσης δでるたεいぷしろん χρειαζόταν νにゅーαあるふぁ συγχρονίζονται μみゅーεいぷしろん τたうαあるふぁ στάδια αποκωδικοποίησης, κάτι πぱいοおみくろんυうぷしろん πρόσφερε νέες δυνατότητες γがんまιいおたαあるふぁ τたうηいーたνにゅー ανάλυση της (αποθηκευμένης) ροής τたうωおめがνにゅー εντολών, κかっぱαあるふぁιいおた τたうοおみくろんνにゅー εντοπισμό λειτουργιών πぱいοおみくろんυうぷしろん μπορούν νにゅーαあるふぁ εκτελεστούν παράλληλα, τροφοδοτώντας παραπάνω από μみゅーιいおたαあるふぁ μονάδα εκτέλεσης.

Νεότεροι επεξεργαστές κάνουν κかっぱαあるふぁιいおた τたうοおみくろん αντίστροφο: συνδυάζουν κάποιες ακολουθίες από εντολές τたうοおみくろんυうぷしろん x86 (όπως μみゅーιいおたαあるふぁ εντολής σύγκρισης πぱいοおみくろんυうぷしろん ακολουθείται από ένα άλμα υπό συνθήκη) σしぐまεいぷしろん πολυπλοκότερες μみゅーιいおたκかっぱρろーοおみくろん-εντολές πぱいοおみくろんυうぷしろん ταιριάζουν καλύτερα σしぐまτたうοおみくろん μοντέλο εκτέλεσης κかっぱαあるふぁιいおた μπορούν νにゅーαあるふぁ εκτελεστούν γρηγορότερα ή μみゅーεいぷしろん χρήση λιγότερων πόρων.

Μみゅーιいおたαあるふぁ άλλη τεχνική προς τたうηいーたνにゅー κατεύθυνση της αύξησης της ταχύτητας είναι ηいーた προσωρινή αποθήκευση αποκωδικοποιημένων μみゅーιいおたκかっぱρろーοおみくろん-εντολών, ώστε οおみくろん επεξεργαστής νにゅーαあるふぁ μπορεί άμεσα νにゅーαあるふぁ τις χρησιμοποιήσει ξανά, αντί νにゅーαあるふぁ πρέπει νにゅーαあるふぁ αποκωδικοποιήσει πάλι κάποιες εντολές. Τたうοおみくろん πぱいιいおたοおみくろん γνωστό παράδειγμα τέτοιας μνήμης βρίσκεται σしぐまτたうηいーた μικροαρχιτεκτονική NetBurst της Intel (οおみくろんιいおた επεξεργαστές Pentium 4) κかっぱαあるふぁιいおた ονομάζεται Execution Trace Cache.

Ηいーた Transmeta χρησιμοποιεί μみゅーιいおたαあるふぁ τελείως διαφορετική μέθοδο στους επεξεργαστές της πぱいοおみくろんυうぷしろん είναι συμβατοί μみゅーεいぷしろん τους x86. Χρησιμοποιούν μみゅーιいおたαあるふぁ μετάφραση της τελευταίας στιγμής (just-in-time translation) γがんまιいおたαあるふぁ νにゅーαあるふぁ μετατρέπουν εντολές x86 σしぐまεいぷしろん εντολές πぱいοおみくろんυうぷしろん καταλαβαίνει οおみくろん ίδιος οおみくろん επεξεργαστής. Ηいーた Transmeta υποστηρίζει ότι αυτή προσέγγιση οδηγεί σしぐまεいぷしろん σχεδίαση μみゅーεいぷしろん χαμηλότερη κατανάλωση ενέργειας επειδή οおみくろん επεξεργαστής μπορεί νにゅーαあるふぁ αγνοήσει τたうοおみくろん πολύπλοκο στάδιο αποκωδικοποίησης τたうωおめがνにゅー κλασικών υλοποιήσεων x86.

Σしぐまτたうαあるふぁ τέλη της δεκαετίας τたうοおみくろんυうぷしろん 1970, λόγω τたうοおみくろんυうぷしろん χαμηλού κόστους της μνήμης, οおみくろんιいおた μικροϋπολογιστές έφτασαν τたうοおみくろん όριο διευθύνσεων σしぐまτたうαあるふぁ 16-bit πぱいοおみくろんυうぷしろん ήταν 64-KB. Κάποιοι μικροϋπολογιστές όπως οおみくろん PDP-11 χρησιμοποιούσαν κάποιες πολύπλοκες τεχνικές εναλλαγής πινάκων μνήμης (bank-switching), ενώ άλλοι, όπως οおみくろん VAX της Digital, σχεδίασαν ακριβότερους επεξεργαστές πぱいοおみくろんυうぷしろん μπορούσαν νにゅーαあるふぁ χειριστούν απευθείας διευθύνσεις κかっぱαあるふぁιいおた δεδομένα τたうωおめがνにゅー 32-bit. Οおみくろん αρχικός 8086, οおみくろん οποίος είχε προκύψει από τたうοおみくろんνにゅー απλό μικροεπεξεργαστή 8080 κかっぱαあるふぁιいおた στόχευε σしぐまεいぷしろん χρήση σしぐまεいぷしろん μικρούς κかっぱαあるふぁιいおた φτηνούς υπολογιστές, έκανε χρήση απλών καταχωρητών τμήματος (segment registers), οおみくろんιいおた οποίοι αύξησαν τたうοおみくろん εύρος τたうωおめがνにゅー διευθύνσεων μνήμης μόνο κατά 4 bit. Πολλαπλασιάζοντας μみゅーιいおたαあるふぁ διεύθυνση 64-KB μみゅーεいぷしろん τたうοおみくろん 16, ηいーた διεύθυνση 20-bit πぱいοおみくろんυうぷしろん προέκυπτε μπορούσε νにゅーαあるふぁ διευθυνσιοδοτήσει συνολικά ένα megabyte (1,048,576 byte), ένα αρκετά μεγάλο μέγεθος γがんまιいおたαあるふぁ τους μικρούς υπολογιστές της εποχής. Ηいーた ιδέα τたうωおめがνにゅー καταχωρητών τμήματος δでるたεいぷしろんνにゅー ήταν νέα, πολλοί από τους παλαιότερους μεγαλύτερους υπολογιστές χρησιμοποιούσαν καταχωρητές τμήματος γがんまιいおたαあるふぁ νにゅーαあるふぁ κάνουν τたうηいーたνにゅー εναλλαγή μεταξύ διαφορετικών εργασιών. Σしぐまτたうηいーたνにゅー πράξη, ηいーた τεχνική αυτή, όπως υλοποιήθηκε σしぐまτたうοおみくろんνにゅー x86 δέχτηκε σημαντική κριτική γιατί έκανε πぱいιいおたοおみくろん πολύπλοκο τたうοおみくろんνにゅー προγραμματισμό κかっぱαあるふぁιいおた τたうηいーた συγγραφή μεταγλωττιστών. Αあるふぁνにゅー κかっぱαあるふぁιいおた ηいーた αρχιτεκτονική σύντομα επέτρεψε τις γραμμικές διευθύνσεις 32-bit (αρχίζοντας από τたうοおみくろんνにゅー 80386 του 1985), σημαντικές εταιρείες (όπως ηいーた Microsoft) άργησαν πολλά χρόνια νにゅーαあるふぁ μετατρέψουν τたうαあるふぁ 16-bit συστήματά τους. Οおみくろん 80386 (κかっぱαあるふぁιいおた οおみくろん 80486) γがんまιいおたαあるふぁ πολλά χρόνια χρησιμοποιήθηκε σしぐまαあるふぁνにゅー ένας γρηγορότερος 8086, συμβατός μみゅーεいぷしろん τたうαあるふぁ 16-bit.

Τたうαあるふぁ δεδομένα κかっぱαあるふぁιいおた οおみくろん κώδικας μπορούσαν νにゅーαあるふぁ χρησιμοποιηθούν σしぐまεいぷしろん "κοντινά" ("near") τμήματα 16-bit μέσα σしぐまεいぷしろん αυτόν τたうοおみくろんνにゅー χώρο διευθύνσεων τたうοおみくろんυうぷしろん 1 MB, ενώ ένας μεταγλωττιστής μπορούσε νにゅーαあるふぁ λειτουργεί μみゅーεいぷしろん "μακρινό" ("far") τρόπο χρησιμοποιώντας ζεύγη 32-bit τμήμα:μετατόπιση πぱいοおみくろんυうぷしろん νにゅーαあるふぁ φτάνουν μέχρι τたうοおみくろん 1 MB. Αあるふぁνにゅー κかっぱαあるふぁιいおた αυτό σしぐまτたうηいーた συνέχεια της δεκαετίας τたうοおみくろんυうぷしろん 1980 αποδείχτηκε εξίσου περιοριστικό, λειτούργησε γがんまιいおたαあるふぁ τたうηいーたνにゅー αγορά τたうωおめがνにゅー PC πぱいοおみくろんυうぷしろん τότε εμφανιζόταν κかっぱαあるふぁιいおた διευκόλυνε πολύ τたうηいーたνにゅー μετάφραση λογισμικού από τους παλιούς 8008, 8080, 8085, κかっぱαあるふぁιいおた Z80 γがんまιいおたαあるふぁ τたうοおみくろんνにゅー νέο επεξεργαστή. Τたうοおみくろん 1985, τたうοおみくろん μοντέλο διευθύνσεων μみゅーεいぷしろん τμήματα 16-bit πρακτικά απομακρύνθηκε, μみゅーεいぷしろん τたうηいーたνにゅー χρήση καταχωρητών μετατόπισης 32-bit, σしぐまτたうηいーた σχεδίαση τたうοおみくろんυうぷしろん 386.

Σしぐまτたうηいーたνにゅー πραγματική κατάσταση (real mode), ηいーた διευθυνσιοδότηση μνήμης μみゅーεいぷしろん τμήματα γίνεται μみゅーεいぷしろん τたうηいーたνにゅー ολίσθηση της διεύθυνσης τμήματος κατά 4 bit αριστερά κかっぱαあるふぁιいおた τたうηいーたνにゅー προσθήκη της μετατόπισης ώστε νにゅーαあるふぁ προκύψει ηいーた τελική διεύθυνση 20-bit. Γがんまιいおたαあるふぁ παράδειγμα, αあるふぁνにゅー οおみくろん DS είναι A000h κかっぱαあるふぁιいおた οおみくろん SI είναι 5677h, τたうοおみくろん DS:SI δείχνει σしぐまτたうηいーたνにゅー απόλυτη διεύθυνση DS × 10h + SI = A5677h. Οおみくろん συνολικός χώρος διευθύνσεων σしぐまτたうηいーたνにゅー πραγματική κατάσταση είναι επομένως 220 byte, ή 1 MB, ένα εντυπωσιακό μέγεθος γがんまιいおたαあるふぁ τたうηいーたνにゅー εποχή (1978). Όλες οおみくろんιいおた διευθύνσεις μνήμης αποτελούνται από ένα τμήμα κかっぱαあるふぁιいおた μみゅーιいおたαあるふぁ μετατόπιση κかっぱαあるふぁιいおた κάθε τύπος πρόσβασης (κώδικας, δεδομένα, στοίβα) είχε δικό τたうοおみくろんυうぷしろん καταχωρητή (γがんまιいおたαあるふぁ δεδομένα ήταν οおみくろん DS, γがんまιいおたαあるふぁ κώδικα οおみくろん CS, γがんまιいおたαあるふぁ στοίβα οおみくろん SS). Σしぐまεいぷしろん περίπτωση πρόσβασης γがんまιいおたαあるふぁ δεδομένα, οおみくろん καταχωρητής τμήματος μπορεί νにゅーαあるふぁ είναι οποιοσδήποτε από τους τέσσερις καταχωρητές τμήματος, μみゅーεいぷしろん χρήση τたうοおみくろんυうぷしろん κατάλληλου προθέματος (segment override prefix).

Σύμφωνα μみゅーεいぷしろん τたうηいーたνにゅー τεχνική τたうωおめがνにゅー τμημάτων, δύο διαφορετικά ζεύγη από τμήματα κかっぱαあるふぁιいおた μετατοπίσεις μπορούν νにゅーαあるふぁ δείχνουν σしぐまτたうηいーたνにゅー ίδια απόλυτη διεύθυνση. Δηλαδή, αあるふぁνにゅー οおみくろん DS είναι A111h κかっぱαあるふぁιいおた οおみくろん SI είναι 4567h, τたうοおみくろん DS:SI δείχνει σしぐまτたうηいーたνにゅー ίδια διεύθυνση A5677h όπως κかっぱαあるふぁιいおた τたうοおみくろん παράδειγμα παραπάνω. Επίσης ηいーた τεχνική κάνει αδύνατη τたうηいーたνにゅー χρήση παραπάνω από τεσσάρων τμημάτων ταυτόχρονα. Οおみくろん CS κかっぱαあるふぁιいおた οおみくろん SS είναι πολύ σημαντικοί γがんまιいおたαあるふぁ τたうηいーたνにゅー σωστή λειτουργία τたうοおみくろんυうぷしろん προγράμματος, επομένως μόνο οおみくろん DS κかっぱαあるふぁιいおた οおみくろん ES μπορούν νにゅーαあるふぁ χρησιμοποιηθούν γがんまιいおたαあるふぁ νにゅーαあるふぁ δείχνουν σしぐまεいぷしろん τμήματα μみゅーεいぷしろん δεδομένα εκτός τたうοおみくろんυうぷしろん προγράμματος (ή, πぱいιいおたοおみくろん σωστά, εκτός τたうοおみくろんυうぷしろん τμήματος τたうοおみくろんυうぷしろん προγράμματος πぱいοおみくろんυうぷしろん εκτελείται αυτήν τたうηいーた στιγμή) ή εκτός της στοίβας.

Σしぐまτたうηいーたνにゅー προστατευμένη κατάσταση (protected mode), ένας καταχωρητής τμήματος δでるたεいぷしろんνにゅー περιλαμβάνει πぱいιいおたαあるふぁ τたうηいーたνにゅー φυσική διεύθυνση της αρχής ενός τμήματος, αλλά δείχνει σしぐまεいぷしろん μみゅーιいおたαあるふぁ δομή τたうοおみくろんυうぷしろん συστήματος πぱいοおみくろんυうぷしろん ονομάζεται περιγραφέας τμήματος (segment descriptor). Οおみくろん περιγραφέας τμήματος περιέχει τたうηいーた φυσική διεύθυνση της αρχής τたうοおみくろんυうぷしろん τμήματος, τたうοおみくろん μήκος τたうοおみくろんυうぷしろん τμήματος κかっぱαあるふぁιいおた τたうαあるふぁ δικαιώματα πρόσβασης σしぐまτたうοおみくろん τμήμα. Ηいーた μετατόπιση ελέγχεται αあるふぁνにゅー είναι μέσα σしぐまτたうοおみくろん μήκος τたうοおみくろんυうぷしろん τμήματος, αあるふぁνにゅー είναι εκτός προκαλείται εξαίρεση (exception). Οおみくろんιいおた μετατοπίσεις πぱいοおみくろんυうぷしろん αναφέρονται σしぐまεいぷしろん θέσεις μέσα σしぐまτたうοおみくろん τμήμα συνδυάζονται μみゅーεいぷしろん τις φυσικές διευθύνσεις σしぐまτたうηいーたνにゅー αρχή τたうοおみくろんυうぷしろん τμήματος γがんまιいおたαあるふぁ νにゅーαあるふぁ προκύψει ηいーた τελική διεύθυνση πぱいοおみくろんυうぷしろん αντιστοιχεί σしぐまεいぷしろん αυτήν τたうηいーたνにゅー μετατόπιση.

Ηいーた χρήση τμημάτων δυσκολεύει τたうοおみくろんνにゅー προγραμματισμό κかっぱαあるふぁιいおた τたうηいーたνにゅー σχεδίαση μεταγλωττιστών γιατί ηいーた χρήση κοντινών κかっぱαあるふぁιいおた μακρινών δεικτών επηρεάζει τたうηいーたνにゅー ταχύτητα τたうωおめがνにゅー προγραμμάτων.

Τρόποι διευθυνσιοδότησης

[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた τρόποι διευθυνσιοδότησης τたうωおめがνにゅー επεξεργαστών x86 στα 16-bit μπορούν νにゅーαあるふぁ περιγραφούν περιληπτικά ως εξής:

Οおみくろんιいおた τρόποι διευθυνσιοδότησης γがんまιいおたαあるふぁ διευθύνσεις μήκους 32-bit σしぐまεいぷしろん επεξεργαστές x86 των 32-bit ή τたうωおめがνにゅー 64-bit μπορούν νにゅーαあるふぁ περιγραφούν από τたうοおみくろんνにゅー τύπο:

Οおみくろんιいおた τρόποι διευθυνσιοδότησης γがんまιいおたαあるふぁ κώδικα 64-bit γがんまιいおたαあるふぁ επεξεργαστές x86 στα 64-bit μπορούν νにゅーαあるふぁ περιγραφούν από τους εξής τύπους:

κかっぱαあるふぁιいおた

Οおみくろん δεύτερος τύπος διευθυνσιοδότησης γがんまιいおたαあるふぁ κώδικα 64-bit (σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろんνにゅー καταχωρητή RIP, πぱいοおみくろんυうぷしろん είναι οおみくろん δείκτης εντολής, instruction pointer) διευκολύνει τたうηいーたνにゅー υλοποίηση κώδικα πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー εξαρτάται από τις θέσεις μνήμης (όπως οおみくろんιいおた κοινές βιβλιοθήκες σしぐまεいぷしろん κάποια λειτουργικά συστήματα).

Οおみくろん 8086 είχε 64 KB από χώρο 8-bit (ή εναλλακτικά 32 K-λέξεις τたうωおめがνにゅー 16-bit) γがんまιいおたαあるふぁ είσοδο/έξοδο κかっぱαあるふぁιいおた 64 KB (ένα τμήμα) στοίβας μνήμης μみゅーεいぷしろん υποστήριξη υλικού. Σしぐまτたうηいーた στοίβα μπορούσαν νにゅーαあるふぁ τοποθετηθούν μόνο λέξεις (2 byte). Ηいーた στοίβα μεγάλωνε προς τたうαあるふぁ κάτω (προς αριθμητικά μικρότερες διευθύνσεις), μみゅーεいぷしろん τたうοおみくろん SS:SP νにゅーαあるふぁ δείχνει σしぐまτたうοおみくろん κάτω άκρο της. Υπήρχαν 256 διακοπές (interrupts), οおみくろんιいおた οποίες μπορούσαν νにゅーαあるふぁ κληθούν από τたうοおみくろん υλικό ή τたうοおみくろん λογισμικό. Οおみくろんιいおた διακοπές αυτές μπορούσαν νにゅーαあるふぁ είναι διαδοχικές, χρησιμοποιώντας τたうηいーたνにゅー στοίβα γがんまιいおたαあるふぁ νにゅーαあるふぁ αποθηκεύουν τたうηいーたνにゅー διεύθυνση επιστροφής τους.

Καταχωρητές τたうοおみくろんυうぷしろん x86

[Επεξεργασία | επεξεργασία κώδικα]

Γがんまιいおたαあるふぁ πληροφορίες σχετικά μみゅーεいぷしろん τους καταχωρητές τたうωおめがνにゅー επεξεργαστών, δείτε Καταχωρητής επεξεργαστή.

Οおみくろん αρχικός 8086 κかっぱαあるふぁιいおた οおみくろん 8088 έχουν δεκατέσσερις καταχωρητές τたうωおめがνにゅー 16-bit. Από αυτούς οおみくろんιいおた τέσσερις (AX, BX, CX, DX) είναι γενικής χρήσης (αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろん καθένας μπορεί νにゅーαあるふぁ έχει επιπλέον ρόλους, γがんまιいおたαあるふぁ παράδειγμα μόνο οおみくろん CX μπορεί νにゅーαあるふぁ χρησιμοποιηθεί ως μετρητής σしぐまτたうηいーたνにゅー εντολή επανάληψης loop). Καθένας τους μπορεί νにゅーαあるふぁ διαβαστεί σしぐまαあるふぁνにゅー δύο ξεχωριστά byte (γがんまιいおたαあるふぁ παράδειγμα, τたうοおみくろん υψηλότερο byte τたうοおみくろんυうぷしろん BX ονομάζεται BH κかっぱαあるふぁιいおた τたうοおみくろん χαμηλότερο byte BL). Υπάρχουν δύο καταχωρητές δεικτών: οおみくろん SP πぱいοおみくろんυうぷしろん δείχνει σしぐまτたうηいーたνにゅー κορυφή της στοίβας (Stack Pointer) κかっぱαあるふぁιいおた οおみくろん BP πぱいοおみくろんυうぷしろん δείχνει σしぐまεいぷしろん κάποιο άλλο σημείο της στοίβας (Base Pointer), συνήθως πぱいιいおたοおみくろん πάνω από τις τοπικές μεταβλητές. Δύο καταχωρητές, οおみくろん SI κかっぱαあるふぁιいおた οおみくろん DI, χρησιμοποιούνται ως δείκτες σしぐまεいぷしろん πίνακες.

Γがんまιいおたαあるふぁ τたうοおみくろんνにゅー σχηματισμό διευθύνσεων μνήμης χρησιμοποιούνται τέσσερις καταχωρητές (CS, DS, SS κかっぱαあるふぁιいおた ES). Οおみくろん καταχωρητής FLAGS περιέχει σημαίες (flags), όπως τたうοおみくろん υπόλοιπο (carry), ηいーた υπερχείλιση (overflow) κかっぱαあるふぁιいおた οおみくろん έλεγχος γがんまιいおたαあるふぁ μηδέν. Τέλος, οおみくろん δείκτης εντολής (instruction pointer, IP) δείχνει σしぐまτたうηいーたνにゅー επόμενη εντολή πぱいοおみくろんυうぷしろん θしーたαあるふぁ διαβαστεί από τたうηいーた μνήμη κかっぱαあるふぁιいおた θしーたαあるふぁ εκτελεστεί.

Σしぐまτたうοおみくろんνにゅー Intel 80286 υπάρχουν τρεις επιπλέον καταχωρητές πぱいοおみくろんυうぷしろん κρατούν διευθύνσεις πινάκων από περιγραφείς (GDTR, LDTR, IDTR) κかっぱαあるふぁιいおた ένας τέταρτος καταχωρητής εργασιών (task register, TR).

Μみゅーεいぷしろん τたうηいーたνにゅー εμφάνιση τたうοおみくろんυうぷしろん επεξεργαστή 32-bit 80386, οおみくろんιいおた καταχωρητές γενικής χρήσης, οおみくろんιいおた καταχωρητές βάσης, οおみくろんιいおた καταχωρητές δεικτών, οおみくろん δείκτης εντολής κかっぱαあるふぁιいおた οおみくろん καταχωρητής FLAGS, πぱいοおみくろんυうぷしろん ήταν 16-bit, επεκτάθηκαν σしぐまτたうαあるふぁ 32 bit (αυτό όμως δでるたεいぷしろんνにゅー συνέβη κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ τους καταχωρητές τμήματος). Αυτό αναπαριστάται μみゅーεいぷしろん ένα πρόθεμα "E" (από τたうηいーたνにゅー αγγλική λέξη Extended πぱいοおみくろんυうぷしろん δείχνει τたうηいーたνにゅー επέκταση) μπροστά από τたうαあるふぁ ονόματα τたうωおめがνにゅー καταχωρητών σしぐまτたうηいーた συμβολική γλώσσα τたうοおみくろんυうぷしろん x86. Επομένως, οおみくろん καταχωρητής AX αντιστοιχεί σしぐまτたうαあるふぁ κατώτερα 16 bit τたうοおみくろんυうぷしろん νέου καταχωρητή EAX πぱいοおみくろんυうぷしろん είναι 32-bit, οおみくろん SI αντιστοιχεί σしぐまτたうαあるふぁ κατώτερα 16 bit τたうοおみくろんυうぷしろん ESI, κかっぱοおみくろんκかっぱ. Οおみくろんιいおた καταχωρητές γενικής χρήσης, οおみくろんιいおた καταχωρητές βάσης κかっぱαあるふぁιいおた οおみくろんιいおた καταχωρητές δείκτη μπορούν νにゅーαあるふぁ χρησιμοποιηθούν σしぐまαあるふぁνにゅー βάση στους διάφορους τρόπους διευθυνσιοδότησης, ενώ όλοι οおみくろんιいおた καταχωρητές εκτός από τたうοおみくろんνにゅー καταχωρητή στοίβας μπορούν νにゅーαあるふぁ χρησιμοποιηθούν σしぐまαあるふぁνにゅー δείκτες σしぐまτたうοおみくろん σχημαστισμό διευθύνσεων.

Προστέθηκαν επίσης δύο νέοι καταχωρητές τμήματος (FS κかっぱαあるふぁιいおた GS). Λόγω τたうοおみくろんυうぷしろん αυξημένου αριθμού τたうωおめがνにゅー καταχωρητών, τたうωおめがνにゅー εντολών κかっぱαあるふぁιいおた τたうωおめがνにゅー τελεστέων, χρειάστηκε επέκταση της μορφής τたうοおみくろんυうぷしろん κώδικα μηχανής. Γがんまιいおたαあるふぁ νにゅーαあるふぁ διατηρηθεί ηいーた συμβατότητα, τたうαあるふぁ τμήματα μみゅーεいぷしろん εκτελέσιμο κώδικα μπορούν νにゅーαあるふぁ σημειωθούν ανάλογα μみゅーεいぷしろん τたうοおみくろん αあるふぁνにゅー περιέχουν εντολές 16-bit ή 32-bit. Ειδικά προθέματα επιτρέπουν σしぐまεいぷしろん εντολές 32-bit νにゅーαあるふぁ υπάρχουν σしぐまεいぷしろん ένα τμήμα 16-bit κかっぱαあるふぁιいおた αντίστροφα.

Στον 80486 προστέθηκε Μονάδα Κινητής Υποδιαστολής (FPU), μみゅーεいぷしろん οχτώ καταχωρητές 80-bit.[16]

Σしぐまτたうοおみくろんνにゅー Pentium II προστέθηκαν οχτώ καταχωρητές ακεραίων MMX 64-bit (MMX0..MMX7, πぱいοおみくろんυうぷしろん μοιράζονται τたうαあるふぁ κατώτερα bit μみゅーεいぷしろん τたうηいーた στοίβα της μονάδας κινητής υποδιαστολής πぱいοおみくろんυうぷしろん είναι 80-bit (st(0)..st(7))).[16] Σしぐまτたうοおみくろんνにゅー Pentium III προστέθηκαν ένας καταχωρητής ελέγχου κατάστασης τたうωおめがνにゅー 32-bit (control/status register, MXCSR) γがんまιいおたαあるふぁ τたうοおみくろん σύνολο εντολών Streaming SIMD Extension (SSE) κかっぱαあるふぁιいおた οχτώ καταχωρητές SSE τたうωおめがνにゅー 128-bit γがんまιいおたαあるふぁ αριθμούς κινητής υποδιαστολής (XMM0..XMM7).[16]

Από τたうοおみくろんνにゅー επεξεργαστή AMD Opteron κかっぱαあるふぁιいおた μετά, ηいーた αρχιτεκτονική x86 επέκτεινε τους καταχωρητές από 32 bit σしぐまεいぷしろん 64 bit μみゅーεいぷしろん παρόμοιο τρόπο μみゅーεいぷしろん τたうηいーたνにゅー επέκταση από τたうαあるふぁ 16 στα 32-bit προστατευμένης κατάστασης (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP), ενώ προστέθηκαν οχτώ επιπλέον γενικοί καταχωρητές 64-bit (R8, R9..R15) μみゅーεいぷしろん τたうηいーたνにゅー δημιουργία τたうοおみくろんυうぷしろん x86-64. Οおみくろんιいおた επεκτάσεις αυτές όμως μπορούν νにゅーαあるふぁ χρησιμοποιηθούν μόνο σしぐまτたうηいーたνにゅー κατάσταση 64-bit, πぱいοおみくろんυうぷしろん είναι ηいーた μみゅーιいおたαあるふぁ από τις δύο καταστάσεις πぱいοおみくろんυうぷしろん είναι διαθέσιμες σしぐまεいぷしろん μακρά κατάσταση (long mode). Οおみくろんιいおた τρόποι σχηματισμού διευθύνσεων δでるたεいぷしろんνにゅー άλλαξαν σημαντικά σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうηいーたνにゅー κατάσταση 32-bit, μόνο οおみくろんιいおた διευθύνσεις επεκτάθηκαν σしぐまτたうαあるふぁ 64 bit, ενώ οおみくろんιいおた εικονικές διευθύνσεις επεκτείνονται (μαζί μみゅーεいぷしろん τたうοおみくろん πρόσημό τους) σしぐまτたうαあるふぁ 64 bit. Επιπλέον προστέθηκε μみゅーιいおたαあるふぁ κατάσταση σχηματισμού διευθύνσεων γがんまιいおたαあるふぁ αναφορές σしぐまτたうηいーた μνήμη σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろんνにゅー καταχωρητή RIP (τたうοおみくろんνにゅー δείκτη εντολής), γがんまιいおたαあるふぁ τたうηいーた διευκόλυνση της υλοποίησης κώδικα πぱいοおみくろんυうぷしろん νにゅーαあるふぁ είναι ανεξάρτητος από τたうηいーたνにゅー τοποθέτησή τたうοおみくろんυうぷしろん (position-independent code), οおみくろん οποίος χρησιμοποιείται σしぐまεいぷしろん διαμοιραζόμενες βιβλιοθήκες σしぐまεいぷしろん κάποια λειτουργικά συστήματα.

Άλλοι/ειδικοί καταχωρητές

[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた επεξεργαστές x86 (αρχίζοντας από τたうοおみくろんνにゅー 80386) περιλαμβάνουν επίσης κάποιους ειδικούς καταχωρητές όπως οおみくろんιいおた καταχωρητές ελέγχου (CR0 έως 4, CR8 μόνο σしぐまτたうαあるふぁ 64-bit), καταχωρητές αποσφαλμάτωσης (DR0 έως 3, επιπλέον 6 και 7), οおみくろんιいおた καταχωρητές δοκιμών (TR3 έως 7, μόνο σしぐまτたうοおみくろんνにゅー 80486), οおみくろんιいおた καταχωρητές περιγραφέων (GDTR, LDTR, IDTR), οおみくろん καταχωρητής εργασιών (TR) κかっぱαあるふぁιいおた οおみくろんιいおた διάφοροι ειδικοί καταχωρητές κάθε μοντέλου (model-specific registers ή MSRs, αρχίζοντας από τたうοおみくろんνにゅー Pentium).

Αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろんιいおた βασικοί καταχωρητές (εκτός τたうοおみくろんυうぷしろん δείκτη εντολής) είναι "γενικής χρήσης" κかっぱαあるふぁιいおた μπορούν νにゅーαあるふぁ χρησιμοποιηθούν γがんまιいおたαあるふぁ οτιδήποτε, αρχικά προτάθηκε ηいーた εξής χρήση τους:

  • AX/EAX/RAX: συσσωρευτής (Accumulator)
  • BX/EBX/RBX: δείκτης βάσης (Base index), γがんまιいおたαあるふぁ παράδειγμα σしぐまεいぷしろん πίνακες
  • CX/ECX/RCX: μετρητής (Counter)
  • DX/EDX/RDX: δεδομένα (Data)/γενική χρήση
  • SI/ESI/RSI: δείκτης πηγής (Source Index) γがんまιいおたαあるふぁ λειτουργίες μみゅーεいぷしろん συμβολοσειρές
  • DI/EDI/RDI: δείκτης προορισμού (Destination Index) γがんまιいおたαあるふぁ λειτουργίες μみゅーεいぷしろん συμβολοσειρές
  • SP/ESP/RSP: δίκτης στοίβας (Stack Pointer) πぱいοおみくろんυうぷしろん δείχνει σしぐまτたうοおみくろん πάνω μέρος της στοίβας
  • BP/EBP/RBP: δείκτης βάση στοίβας (Stack Base Pointer) πぱいοおみくろんυうぷしろん δείχνει σしぐまτたうηいーた διεύθυνση τたうοおみくろんυうぷしろん τρέχοντος πλαισίου στοίβας
  • IP/EIP/RIP: δείκτης εντολής (Instruction Pointer) - κρατάει τたうοおみくろん μετρητή προγράμματος (program counter), πぱいοおみくろんυうぷしろん δείχνει σしぐまτたうηいーたνにゅー τρέχουσα εντολή.

Δでるたεいぷしろんνにゅー προτάθηκαν κάποιες ιδιαίτερες χρήσεις γがんまιいおたαあるふぁ τους άλλους 8 καταχωρητές πぱいοおみくろんυうぷしろん είναι διαθέσιμοι σしぐまτたうηいーたνにゅー κατάσταση 64-bit.

Κάποιες εντολές μεταγλωττίζονταν κかっぱαあるふぁιいおた εκτελούνταν γρηγορότερα όταν χρησιμοποιούσαν τους καταχωρητές ανάλογα μみゅーεいぷしろん τις παραπάνω χρήσεις. Γがんまιいおたαあるふぁ παράδειγμα, αあるふぁνにゅー χρησιμοποιηθεί οおみくろん AL σしぐまαあるふぁνにゅー συσσωρευτής γがんまιいおたαあるふぁ νにゅーαあるふぁ προστεθεί μみゅーιいおたαあるふぁ απευθείας τιμή τύπου byte σしぐまεいぷしろん αυτόν, προκύπτει ηいーた γρήγορη εντολή 04h (πρόσθεση σしぐまτたうοおみくろんνにゅー AL), ενώ αあるふぁνにゅー χρησιμοποιηθεί οおみくろん καταχωρητής BL προκύπτει ηいーた γενική (δでるたηいーたλらむだ. όχι εξειδικευμένη) εντολή 80C3h. Άλλο παράδειγμα είναι ηいーた διαίρεση διπλής ακρίβειας κかっぱαあるふぁιいおた οおみくろん πολλαπλασιασμός πぱいοおみくろんυうぷしろん λειτουργούν μみゅーεいぷしろん τους καταχωρητές AX κかっぱαあるふぁιいおた DX.

Οおみくろんιいおた σύγχρονοι μεταγλωττιστές εκμεταλλεύονται τたうοおみくろん byte sib ("scaled index byte") πぱいοおみくろんυうぷしろん επιτρέπει τたうοおみくろんνにゅー ομοιόμορφο χειρισμό τたうωおめがνにゅー καταχωρητών. Κάποιες ειδικές εντολές έχασαν τたうηいーたνにゅー προτεραιότητά τους σしぐまτたうηいーた σχεδίαση υλικού κかっぱαあるふぁιいおた έγιναν πぱいιいおたοおみくろん αργές σしぐまεいぷしろん σχέση μみゅーεいぷしろん ισοδύναμες σύντομες ακολουθίες εντολών, όπως ηいーた εντολή LODSW.

Καταχωρητές Γενικής Χρήσης (A, B, C κかっぱαあるふぁιいおた D)

64 56 48 40 32 24 16 8
R?X
E?X
?X
?H ?L

Καταχωρητές Τμημάτων (C, D, S, E, F κかっぱαあるふぁιいおた G)

16 8
?S

Καταχωρητές Δείκτη (S κかっぱαあるふぁιいおた B)

64 56 48 40 32 24 16 8
R?P
E?P
?P
?PL

Σημείωση: Οおみくろんιいおた καταχωρητές ?PL είναι διαθέσιμοι μόνο σしぐまτたうηいーたνにゅー κατάσταση 64-bit.

Καταχωρητές Σχετικού Δείκτη (S κかっぱαあるふぁιいおた D)

64 56 48 40 32 24 16 8
R?I
E?I
?I
?IL

Σημείωση: Οおみくろんιいおた καταχωρητές ?IL είναι διαθέσιμοι μόνο σしぐまτたうηいーたνにゅー κατάσταση 64-bit.

Καταχωρητής Δείκτη Εντολής (I)

64 56 48 40 32 24 16 8
R?P
E?P
?P

Καταχωρητές Γενικής Χρήσης κατάστασης 64-bit (R8, R9, R10, R11, R12, R13, R14, R15)

64 56 48 40 32 24 16 8
?
?D
?W
?B

Καταστάσεις λειτουργίας

[Επεξεργασία | επεξεργασία κώδικα]

Πραγματική κατάσταση

[Επεξεργασία | επεξεργασία κώδικα]

Ηいーた πραγματική κατάσταση (real mode) είναι κατάσταση λειτουργίας τたうοおみくろんυうぷしろん 8086 κかっぱαあるふぁιいおた τたうωおめがνにゅー μεταγενέστερων επεξεργαστών πぱいοおみくろんυうぷしろん είναι συμβατοί μみゅーεいぷしろん τたうοおみくろんνにゅー x86. Ηいーた πραγματική κατάσταση έχει χώρο διευθύνσεων μνήμης χωρισμένο σしぐまεいぷしろん τμήματα 20 bit (επομένως οおみくろんιいおた διευθύνσεις μπορούν νにゅーαあるふぁ αναφέρονται μόνο σしぐまεいぷしろん 1 MB μνήμης), ηいーた πρόσβαση τたうοおみくろんυうぷしろん λογισμικού τις ρουτίνες τたうοおみくろんυうぷしろん BIOS κかっぱαあるふぁιいおた σしぐまτたうαあるふぁ περιφερειακά τたうοおみくろんυうぷしろん υλικού είναι απευθείας κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー υπάρχουν οおみくろんιいおた έννοιες της προστασίας μνήμης ή της πολυεπεξεργασίας σしぐまτたうοおみくろん επίπεδο τたうοおみくろんυうぷしろん υλικού. Όλοι οおみくろんιいおた επεξεργαστές x86 της σειράς 80286 κかっぱαあるふぁιいおた έπειτα εκκινούν σしぐまεいぷしろん πραγματική κατάσταση, ενώ οおみくろんιいおた 80186 κかっぱαあるふぁιいおた οおみくろんιいおた προηγούμενοι επεξεργαστές είχαν μόνο μみゅーιいおたαあるふぁ κατάσταση, πぱいοおみくろんυうぷしろん αντιστοιχούσε σしぐまτたうηいーたνにゅー πραγματική κατάσταση τたうωおめがνにゅー μεταγενέστερν τたうσしぐまιいおたπぱい.

Γがんまιいおたαあるふぁ νにゅーαあるふぁ γίνει χρήση περισσότερων από 64 KB μνήμης, πρέπει νにゅーαあるふぁ χρησιμοποιηθούν οおみくろんιいおた καταχωρητές τμήματος. Αυτό περιέπλεξε τたうηいーたνにゅー κατάσταση γがんまιいおたαあるふぁ τたうηいーたνにゅー υλοποίηση μεταγλωττιστών, όπου χρειάστηκε νにゅーαあるふぁ χρησιμοποιηθούν ειδικές καταστάσεις δεικτών, όπως ηいーた "κοντινή" ("near"), ηいーた "μακρινή" ("far") κかっぱαあるふぁιいおた ηいーた "μεγάλη" ("huge"), ώστε νにゅーαあるふぁ προσαρμοστούν σしぐまτたうοおみくろん μοντέλο της αρχιτεκτονικής μみゅーεいぷしろん τμήματα, μみゅーεいぷしろん κάποιους δείκτες νにゅーαあるふぁ περιέχουν μετατοπίσεις 16-bit σしぐまεいぷしろん έμμεσα δηλωμένα τμήματα, ενώ άλλοι περιείχαν διευθύνσεις τμημάτων κかっぱαあるふぁιいおた μετατοπίσεις μέσα σしぐまεいぷしろん τμήματα.

Προστατευμένη κατάσταση

[Επεξεργασία | επεξεργασία κώδικα]

Εκτός από τたうηいーたνにゅー πραγματική κατάσταση οおみくろん Intel 80286 υποστήριζε τたうηいーたνにゅー προστατευμένη κατάσταση (protected mode), πぱいοおみくろんυうぷしろん επέκτεινε τたうηいーたνにゅー φυσική μνήμη πぱいοおみくろんυうぷしろん μπορούσε νにゅーαあるふぁ αναφερθεί μέσω διευθύνσεων σしぐまεいぷしろん 16 MB κかっぱαあるふぁιいおた τたうηいーたνにゅー εικονική μνήμη (virtual memory) σしぐまεいぷしろん 1 GB, ενώ παρείχε προστατευμένη μνήμη (protected memory), ηいーた οποία εμπόδιζε ένα πρόγραμμα νにゅーαあるふぁ επηρεάζει τたうαあるふぁ υπόλοιπα. Αυτό ήταν δυνατό επειδή οおみくろんιいおた καταχωρητές τμημάτων χρησιμοποιούνταν μόνο σしぐまαあるふぁνにゅー δείκτες σしぐまεいぷしろん έναν πίνακα από τμήματα. Υπήρχαν δύο τέτοιοι πίνακες, οおみくろん Καθολικός Πίνακας Περιγραφέων (Global Descriptor Table, GDT) κかっぱαあるふぁιいおた οおみくろん Τοπικός Πίνακας Περιγραφέων (Local Descriptor Table, LDT), οおみくろん καθένας από τους οποίους μπορούσε νにゅーαあるふぁ έχει μέχρι 8192 περιγραφείς τμημάτων, μみゅーεいぷしろん κάθε τμήμα νにゅーαあるふぁ παρέχει πρόσβαση σしぐまεいぷしろん μνήμη μεγέθους 64 KB. Οおみくろん πίνακας τμημάτων έδινε μみゅーιいおたαあるふぁ διεύθυνση βάσης (base address) τたうωおめがνにゅー 24-bit, ηいーた οποία μπορούσε νにゅーαあるふぁ προστεθεί σしぐまεいぷしろん κάποια μετατόπιση γがんまιいおたαあるふぁ νにゅーαあるふぁ προκύψει μみゅーιいおたαあるふぁ απόλυτη διεύθυνση. Σしぐまεいぷしろん κάθε τμήμα μπορούσε νにゅーαあるふぁ δοθεί ένα επίπεδο ασφάλειας (ring level), από ένα σύνολο τεσσάρων τέτοιων επιπέδων, γがんまιいおたαあるふぁ ασφάλεια σしぐまεいぷしろん επίπεδο υλικού.

Οおみくろん Intel 80386 υποστήριξε πρώτος τις σελίδες (paging) σしぐまτたうηいーたνにゅー προστατευμένη κατάσταση, πぱいοおみくろんυうぷしろん επέτρεπαν τたうηいーた χρήση εικονικής μνήμης μみゅーεいぷしろん σελίδες.

Οおみくろんιいおた σελίδες χρησιμοποιούνται εκτενώς σしぐまτたうαあるふぁ σύγχρονα λειτουργικά συστήματα μみゅーεいぷしろん δυνατότητες πολυδιεργασίας. Τたうαあるふぁ λειτουργικά συστήματα Linux, 386BSD κかっぱαあるふぁιいおた Windows NT αναπτύχθηκαν σしぐまτたうοおみくろんνにゅー 386 γιατί ήταν ηいーた πρώτη αρχιτεκτονική επεξεργαστή της Intel πぱいοおみくろんυうぷしろん υποστήριζε σελίδες κかっぱαあるふぁιいおた μετατοπίσεις τμημάτων 32-bit. Ηいーた αρχιτεκτονική τたうοおみくろんυうぷしろん 386 έγινε ηいーた βάση γがんまιいおたαあるふぁ τたうηいーたνにゅー περαιτέρω ανάπτυξη της σειράς x86.

Οおみくろんιいおた επεξεργαστές x86 που υποστηρίζουν προστατευμένη κατάσταση εκκινούν σしぐまεいぷしろん πραγματική κατάσταση γがんまιいおたαあるふぁ νにゅーαあるふぁ είναι συμβατοί μみゅーεいぷしろん τους προηγούμενους επεξεργαστές τύπου 8086. Όταν οおみくろん επεξεργαστής αρχίζει νにゅーαあるふぁ λειτουργεί (booting), αρχικοποιεί τたうηいーたνにゅー πραγματική κατάσταση κかっぱαあるふぁιいおた αρχίζει νにゅーαあるふぁ εκτελεί εντολές. Οおみくろん κώδικας εκκίνησης τたうοおみくろんυうぷしろん λειτουργικού συστήματος, οおみくろん οποίος μπορεί νにゅーαあるふぁ βρίσκεται σしぐまεいぷしろん μνήμη ανάγνωσης (ROM), μπορεί νにゅーαあるふぁ βάλει τたうοおみくろんνにゅー επεξεργαστή σしぐまεいぷしろん προστατευμένη κατάσταση γがんまιいおたαあるふぁ νにゅーαあるふぁ είναι διαθέσιμες οおみくろんιいおた σελίδες κかっぱαあるふぁιいおた τたうαあるふぁ άλλα επιπλέον χαρακτηριστικά. Τたうοおみくろん σύνολο εντολών της προστατευμένης κατάστασης είναι συμβατό μみゅーεいぷしろん αυτό της πραγματικής κατάστασης.

Εικονική κατάσταση 8086

[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχει επίσης μみゅーιいおたαあるふぁ ειδική κατάσταση της προστατευμένης κατάστασης 32-bit, πぱいοおみくろんυうぷしろん ονομάζεται εικονική κατάσταση 8086 (virtual 8086 mode). Πρόκειται γがんまιいおたαあるふぁ μみゅーιいおたαあるふぁ ειδική υβριδική κατάσταση λειτουργίας πぱいοおみくろんυうぷしろん επιτρέπει σしぐまεいぷしろん προγράμματα κかっぱαあるふぁιいおた λειτουργικά συστήματα πραγματικής κατάστασης νにゅーαあるふぁ εκτελούνται κάτω από τたうοおみくろんνにゅー έλεγχο ενός λειτουργικού συστήματος προστατευμένης μνήμης πぱいοおみくろんυうぷしろん έχει τたうοおみくろん ρόλο τたうοおみくろんυうぷしろん επόπτη (supervisor). Αυτό επιτρέπει τたうηいーたνにゅー ταυτόχρονη εκτέλεση προγραμμάτων προστατευμένης κατάστασης κかっぱαあるふぁιいおた πραγματικής κατάστασης. Ηいーた κατάσταση αυτή είναι διαθέσιμη μόνο στις εκδόσεις 32-bit της προστατευμένης κατάστασης - ηいーた εικονική κατάσταση 8086 δでるたεいぷしろんνにゅー υπάρχει σしぐまτたうηいーたνにゅー έκδοση 16-bit της προστατευμένης κατάστασης, ή σしぐまτたうηいーたνにゅー μακρά κατάσταση.

Κύριο λήμμα: Μακρά κατάσταση

Τたうοおみくろん 2002 ήταν πぱいιいおたαあるふぁ προφανές ότο οおみくろん χώρος διευθύνσεων 32-bit της αρχιτεκτονικής x86 περιόριζε τたうηいーたνにゅー ταχύτητά της σしぐまεいぷしろん εφαρμογές πぱいοおみくろんυうぷしろん χειρίζονταν μεγάλους όγκους δεδομένων. Ένας χώρος διευθύνσεων 32-bit επέτρεπε σしぐまτたうοおみくろんνにゅー επεξεργαστή νにゅーαあるふぁ αναφερθεί απευθείας μέσω διευθύνσεων μόνο σしぐまεいぷしろん 4 GB δεδομένων, πぱいοおみくろんυうぷしろん ήταν μικρό μέγεθος γがんまιいおたαあるふぁ τις ανάγκες της επεξεργασίας βίντεο κかっぱαあるふぁιいおた τたうωおめがνにゅー βάσεων δεδομένων, ενώ ηいーた χρήση διευθύνσεων 64-bit επέτρεπε τたうηいーたνにゅー αναφορά σしぐまεいぷしろん 16,777,216 TB (ή 16 δισεκατομμύρια GB) δεδομένων, αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろんιいおた περισσότερες αρχιτεκτονικές 64-bit δでるたεいぷしろんνにゅー υποστηρίζουν πρόσβαση σしぐまεいぷしろん όλον τたうοおみくろんνにゅー χώρο διευθύνσεων τたうωおめがνにゅー 64-bit (ηいーた AMD64, γがんまιいおたαあるふぁ παράδειγμα, υποστηρίζει μόνο 48 bit, χωρισμένα σしぐまεいぷしろん 4 επίπεδα σελίδων, μιας διεύθυνσης 64-bit).

Ηいーた AMD ανέπτυξε τたうηいーたνにゅー επέκταση της αρχιτεκτονικής x86 από 32-bit σしぐまεいぷしろん 64-bit, ηいーた οποία χρησιμοποιείται σήμερα στους επεξεργαστές x86, αρχικά μみゅーεいぷしろん τたうοおみくろん όνομα x86-64, κかっぱαあるふぁιいおた αργότερα σしぐまαあるふぁνにゅー AMD64. Ηいーた αρχιτεκτονική αυτή χρησιμοποιείται από τις οικογένειες επεξεργαστών Opteron, Athlon 64, Turion 64 κかっぱαあるふぁιいおた τたうαあるふぁ μεταγενέστερα μοντέλα τたうωおめがνにゅー Sempron. Ηいーた επιτυχία τたうωおめがνにゅー επεξεργαστών AMD64, σしぐまεいぷしろん συνδυασμό μみゅーεいぷしろん τたうηいーたνにゅー πειρορισμένη αποδοχή της αρχιτεκτονικής IA-64 έκανε τたうηいーたνにゅー Intel νにゅーαあるふぁ κυκλοφορήσει τたうηいーたνにゅー δική της υλοποίηση τたうοおみくろんυうぷしろん συνόλου εντολών AMD64. Ηいーた Intel είχε ήδη υλοποιήσει υποστήριξη γがんまιいおたαあるふぁ AMD64[17] αλλά είχε επιλέξει νにゅーαあるふぁ μみゅーηいーたνにゅー τたうηいーたνにゅー ενεργοποιήσει, ελπίζοντας ότι ηいーた AMD δでるたεいぷしろんνにゅー θしーたαあるふぁ προλάβαινε νにゅーαあるふぁ κυκλοφορήσει τους AMD64 πριν εδραιωθεί τたうοおみくろん νέο σύνολο εντολών IA-64 τたうοおみくろんυうぷしろん Itanium. Αρχικά αποκαλούσε τたうηいーたνにゅー υλοποίηση της επέκτασης AMD64 σしぐまαあるふぁνにゅー EM64T, κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια σしぐまαあるふぁνにゅー Intel 64.

Σしぐまτたうαあるふぁ έγγραφά τους κかっぱαあるふぁιいおた σしぐまτたうαあるふぁ ονόματα τたうωおめがνにゅー προϊόντων τους, ηいーた Microsoft κかっぱαあるふぁιいおた ηいーた Sun αναφέρονται στους AMD64/Intel 64 συνολικά σしぐまαあるふぁνにゅー x64, όσον αφορά τたうαあるふぁ λειτουργικά συστήματα Windows and Solaris αντίστοιχα. Οおみくろんιいおた διανομές τたうοおみくろんυうぷしろん Linux τους αποκαλούν είτε σしぐまαあるふぁνにゅー "x86-64" (ή "x86_64"), είτε σしぐまαあるふぁνにゅー "amd64". Τたうαあるふぁ συστήματα BSD χρησιμοποιούν τたうοおみくろんνにゅー όρο "amd64" ενώ τたうοおみくろん Mac OS X χρησιμοποιεί τたうοおみくろんνにゅー όρο "x86_64".

Ηいーた μακρά κατάσταση είναι κυρίως μみゅーιいおたαあるふぁ επέκταση τたうοおみくろんυうぷしろん συνόλου εντολών 32-bit, αλλά σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τたうηいーた μετάβαση από τたうαあるふぁ 16 στα 32 bit, πολλές εντολές αφαιρέθηκαν από τたうηいーたνにゅー κατάσταση 64 bit. Αυτό δでるたεいぷしろんνにゅー επηρεάζει τたうηいーたνにゅー πραγματική δυαδική συμβατότητα τたうωおめがνにゅー προγραμμάτων (τたうαあるふぁ παλιά προγράμματα μπορούν νにゅーαあるふぁ εκτελεστούν σしぐまεいぷしろん άλλες καταστάσεις, πぱいοおみくろんυうぷしろん ακόμα υποστηρίζουν τις παλιές εντολές) αλλά αλλάζει τたうοおみくろんνにゅー τρόπο πぱいοおみくろんυうぷしろん πρέπει νにゅーαあるふぁ λειτουργούν οおみくろんιいおた συμβολομεταφραστές κかっぱαあるふぁιいおた οおみくろんιいおた μεταγλωττιστές τたうοおみくろんυうぷしろん νέου κώδικα.

Αυτή ήταν ηいーた πρώτη φορά πぱいοおみくろんυうぷしろん μみゅーιいおたαあるふぁ σημαντική επέκταση της αρχιτεκτονικής x86 ξεκίνησε από άλλη εταιρεία από τたうηいーたνにゅー Intel. Ήταν επίσης ηいーた πρώτη φορά πぱいοおみくろんυうぷしろん ηいーた Intel υιοθέτησε τεχνολογία τέτοιου τύπου από εξωτερική πηγή.

Μονάδα κινητής υποδιαστολής

[Επεξεργασία | επεξεργασία κώδικα]
Κύριο λήμμα: x87
Δείτε επίσης: Μονάδα Κινητής Υποδιαστολής

Οおみくろんιいおた πρώτοι επεξεργαστές x86 μπορούσαν νにゅーαあるふぁ επεκταθούν μみゅーεいぷしろん υλικό γがんまιいおたαあるふぁ αριθμητική κινητής υποδιαστολής (floating-point), τたうοおみくろん οποίο ήταν μみゅーιいおたαあるふぁ σειρά από αριθμητικούς συνεπεξεργαστές μみゅーεいぷしろん ονόματα τたうοおみくろんυうぷしろん τύπου 8087, 80287 και 80387. Μみゅーεいぷしろん λίγες εξαιρέσεις, από τたうοおみくろんνにゅー 80486 κかっぱαあるふぁιいおた έπειτα, οおみくろんιいおた επεξεργαστές x86 ενσωμάτωσαν αυτήν τたうηいーたνにゅー λειτουργικότητα x87 σしぐまτたうοおみくろん ίδιο τたうοおみくろん τたうσしぐまιいおたπぱい, κάτι πぱいοおみくろんυうぷしろん έκανε τις εντολές τたうοおみくろんυうぷしろん x87 νにゅーτたうεいぷしろん φάκτο μέρος τたうοおみくろんυうぷしろん συνόλου εντολών x86.

Οおみくろんιいおた καταχωρητές τたうοおみくろんυうぷしろん x87, έχουν ονόματα ST(0) έως ST(7), είναι 80 bit κかっぱαあるふぁιいおた αποθηκεύουν αριθμούς σύμφωνα μみゅーεいぷしろん τたうοおみくろん πρότυπο κινητής υποδιαστολής διπλής εκτεταμένης ακρίβειας τたうοおみくろんυうぷしろん IEEE. Οおみくろんιいおた καταχωρητές αυτοί οργανώνονται σしぐまαあるふぁνにゅー στοίβα μみゅーεいぷしろん τたうοおみくろんνにゅー ST(0) σしぐまτたうηいーたνにゅー κορυφή της στοίβας. Αυτό έγινε ώστε νにゅーαあるふぁ εξοικονομηθεί χώρος εντολών κかっぱαあるふぁιいおた έτσι οおみくろんιいおた καταχωρητές είναι άμεσα προσβάσιμοι μόνο στις αριθμητικές εντολές πぱいοおみくろんυうぷしろん χειρίζονται αποκλειστικά καταχωρητές: οおみくろん ST0 πρέπει πάντα νにゅーαあるふぁ είναι τたうοおみくろん ένας από τους δύο τελεστέους, είτε ηいーた πηγή, είτε οおみくろん προορισμός, ανεξάρτητα από τたうοおみくろんνにゅー άλλο τελεστέο, πぱいοおみくろんυうぷしろん μπορεί νにゅーαあるふぁ είναι ένας καταχωρητής ST(x) ή μみゅーιいおたαあるふぁ αναφορά σしぐまτたうηいーたνにゅー μνήμη.

Κύριο λήμμα: MMX (σύνολο εντολών)

Τたうοおみくろん MMX είναι σύνολο εντολών SIMD πぱいοおみくろんυうぷしろん σχεδιάστηκε από τたうηいーたνにゅー Intel κかっぱαあるふぁιいおた κυκλοφόρησε πρώτη φορά τたうοおみくろん 1997 για τたうοおみくろんνにゅー μικροεπεξεργαστή Pentium MMX. Τたうοおみくろん σύνολο εντολών MMX αναπτύχθηκε μみゅーεいぷしろん βάση μみゅーιいおたαあるふぁ παρόμοια ιδέα πぱいοおみくろんυうぷしろん ήδη είχε χρησιμοποιηθεί σしぐまτたうοおみくろんνにゅー Intel i860. Υποστηρίζεται στους περισσότερους επεξεργαστές IA-32 που ακολούθησαν, από τたうηいーたνにゅー Intel κかっぱαあるふぁιいおた από άλλες εταιρείες. Τたうοおみくろん MMX συνήθως χρησιμοποιείται γがんまιいおたαあるふぁ εφαρμογές πολυμέσων, όπως ηいーた επεξεργασία βίντεο.

Τたうοおみくろん MMX πρόσθεσε 8 νέους "καταχωρητές" σしぐまτたうηいーたνにゅー αρχιτεκτονική, γνωστούς μみゅーεいぷしろん τたうαあるふぁ ονόματα από MM0 έως MM7 (σしぐまτたうοおみくろん εξής θしーたαあるふぁ αποκαλούνται MMn). Σしぐまτたうηいーたνにゅー πραγματικότητα, αυτοί οおみくろんιいおた νέοι "καταχωρητές" ήταν απλά ονόματα πぱいοおみくろんυうぷしろん έδειχναν στους υπάρχοντες καταχωρητές της στοίβας της μονάδας κινητής υποδιαστολής x87. Έτσι, οτιδήποτε γινόταν σしぐまτたうηいーたνにゅー στοίβα κινητής υποδιαστολής επηρέαζε τους καταχωρητές MMX. Σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τたうηいーたνにゅー στοίβα αυτή όμως, οおみくろんιいおた καταχωρητές MMn δでるたεいぷしろんνにゅー ήταν σχετικοί αλλά απόλυτοι κかっぱαあるふぁιいおた άρα μπορούσαν νにゅーαあるふぁ χρησιμοποιηθούν ανεξάρτητα. Τたうοおみくろん σύνολο εντολών δでるたεいぷしろんνにゅー είχε σημασιολογία στοίβας κかっぱαあるふぁιいおた μみゅーεいぷしろん αυτόν τたうοおみくろんνにゅー τρόπο τたうαあるふぁ υπάρχοντα λειτουργικά συστήματα μπορούσαν νにゅーαあるふぁ αποθηκεύουν κかっぱαあるふぁιいおた νにゅーαあるふぁ επαναφέρουν τους επεξεργαστές όταν εκτελούσαν παραπάνω από ένα προγράμματα, χωρίς αλλαγές.

Κάθε καταχωρητής MMn είναι ένας ακέραιος 64-bit. Μみゅーιいおたαあるふぁ από τις βασικές ιδέες όμως τたうοおみくろんυうぷしろん συνόλου εντολών MMX ήταν οおみくろんιいおた τύποι πακεταρισμένων δεδομένων (packed data types), πぱいοおみくろんυうぷしろん σήμαινε ότι αντί νにゅーαあるふぁ χρησιμοποιείται ολόκληρος οおみくろん καταχωρητής γがんまιいおたαあるふぁ έναν ακέραιο τたうωおめがνにゅー 64-bit (quadword), μπορούσε νにゅーαあるふぁ χρησιμοποιηθεί γがんまιいおたαあるふぁ δύο ακεραίους τたうωおめがνにゅー 32-bit (doubleword), τέσσερις ακεραίους τたうωおめがνにゅー 16-bit (word) ή οχτώ ακεραίους τたうωおめがνにゅー 8-bit (byte). Οおみくろんιいおた καταχωρητές MMn τたうωおめがνにゅー 64-bit τたうοおみくろんυうぷしろん συνόλου εντολών MMX αποτελούσαν επίσης εναλλακτικά ονόματα γがんまιいおたαあるふぁ τたうηいーた στοίβα της μονάδας κινητής υποδιαστολής κかっぱαあるふぁιいおた κάθε καταχωρητής κινητής υποδιαστολής είχε εύρος 80 bit - αυτό σήμαινε ότι τたうαあるふぁ ανώτερα 16 bit τたうωおめがνにゅー καταχωρητών κινητής υποδιαστολής δでるたεいぷしろんνにゅー χρησιμοποιούνται από τις εντολές MMX. Σしぐまεいぷしろん αυτά τたうαあるふぁ bit δινόταν πάντα ηいーた τιμή ένα από κάθε εντολή MMX, πぱいοおみくろんυうぷしろん αντιστοιχούσε σしぐまτたうηいーたνにゅー αναπαράσταση σしぐまεいぷしろん κινητή υποδιαστολή της έννοιας δでるたεいぷしろんνにゅー-είναι-αριθμός (Not-A-Number, NaN) ή άπειρο.

Κύριο λήμμα: 3DNow!

Τたうοおみくろん 1997 ηいーた AMD κυκλοφόρησε τたうηいーたνにゅー τεχνολογία 3DNow! Χρονικά εμφανίστηκε τたうηいーたνにゅー ίδια εποχή πぱいοおみくろんυうぷしろん άρχισαν νにゅーαあるふぁ είναι δημοφιλείς οおみくろんιいおた εφαρμογές γραφικών τριών διαστάσεων (3D) κかっぱαあるふぁιいおた είχε σχεδιαστεί ώστε νにゅーαあるふぁ βελτιώσει τたうηいーたνにゅー ταχύτητα επεξεργασίας διανυσμάτων (vector processing) τたうοおみくろんυうぷしろん επεξεργαστή σしぐまεいぷしろん εφαρμογές πぱいοおみくろんυうぷしろん έκαναν σημαντική χρήση γραφικών. Οおみくろんιいおた προγραμματιστές ηλεκτρονικών παιχνιδιών 3D κかっぱαあるふぁιいおた οおみくろんιいおた εταιρείες πぱいοおみくろんυうぷしろん σχεδίαζαν κάρτες γραφικών κかっぱαあるふぁιいおた άλλο υλικό γがんまιいおたαあるふぁ γραφικά 3D χρησιμοποίησαν τたうοおみくろん 3DNow! γがんまιいおたαあるふぁ νにゅーαあるふぁ έχουν καλύτερη απόδοση στους επεξεργαστές K6 κかっぱαあるふぁιいおた Athlon της AMD.

Τたうοおみくろん 3DNow! σχεδιάστηκε σしぐまαあるふぁνにゅー μみゅーιいおたαあるふぁ φυσική εξέλιξη τたうοおみくろんυうぷしろん MMX από τους ακέραιους στους αριθμούς κινητής υποδιαστολής κかっぱαあるふぁιいおた χρησιμοποιεί τたうαあるふぁ ίδια ονόματα καταχωρητών μみゅーεいぷしろん τたうοおみくろん MMX, από τたうοおみくろん MM0 έως τたうοおみくろん MM7. Ηいーた μόνη διαφορά είναι ότι αντί νにゅーαあるふぁ πακετάρει ακέραιους στους καταχωρητές, πακετάρει δύο αριθμούς κινητής υποδιαστολής απλής ακρίβειας. Τたうοおみくろん πλεονέκτημα της χρήσης ονομάτων γがんまιいおたαあるふぁ τους καταχωρητές της μονάδας κινητής υποδιαστολής είναι ότι μπορούν νにゅーαあるふぁ χρησιμοποιηθούν οおみくろんιいおた ίδιες εντολές κかっぱαあるふぁιいおた δομές δεδομένων πぱいοおみくろんυうぷしろん αποθηκεύουν τたうηいーたνにゅー κατάσταση της μονάδας κινητής υποδιαστολής γがんまιいおたαあるふぁ νにゅーαあるふぁ αποθηκεύσουν τたうηいーたνにゅー κατάσταση τたうωおめがνにゅー καταχωρητών 3DNow! κかっぱαあるふぁιいおた μみゅーεいぷしろん αυτόν τたうοおみくろんνにゅー τρόπο δでるたεいぷしろんνにゅー χρειάζονται μετατροπές σしぐまτたうαあるふぁ λειτουργικά συστήματα (τたうαあるふぁ οποία δでるたεいぷしろんνにゅー χρειάζεται κかっぱαあるふぁνにゅー νにゅーαあるふぁ γνωρίζουν γがんまιいおたαあるふぁ τたうηいーたνにゅー ύπαρξη της τεχνολογίας αυτής).

Κύρια λήμματα: Streaming SIMD Extensions, SSE2, SSE3, SSSE3, SSE4 κかっぱαあるふぁιいおた SSE5

Τたうοおみくろん 1999 ηいーた Intel κυκλοφόρησε τたうοおみくろん σύνολο εντολών Streaming SIMD Extensions (SSE) κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια, τたうοおみくろん 2000, τたうοおみくろん SSE2. Ηいーた πρώτη προσθήκη επέτρεψε σしぐまεいぷしろん βασικές λειτουργίες κινητής υποδιαστολής νにゅーαあるふぁ μみゅーηいーたνにゅー επιβαρύνουν πぱいιいおたαあるふぁ τたうηいーたνにゅー στοίβα τたうοおみくろんυうぷしろん x87 και ηいーた δεύτερη έκανε τたうοおみくろん MMX σχεδόν περιττό αφού επέτρεπε στις εντολές νにゅーαあるふぁ χρησιμοποιούνται σしぐまτたうηいーたνにゅー πράξη από τους κλασικούς μεταγλωττιστές. Τたうοおみくろん SSE3 κυκλοφόρησε τたうοおみくろん 2004 μみゅーεいぷしろん τたうηいーたνにゅー έκδοση Prescott τたうωおめがνにゅー επεξεργαστών Pentium 4 κかっぱαあるふぁιいおた πρόσθεσε ειδικές εντολές μνήμης κかっぱαあるふぁιいおた χειρισμού νημάτων ώστε νにゅーαあるふぁ αυξηθεί ηいーた ταχύτητα της τεχνολογίας HyperThreading της Intel. Ηいーた AMD αγόρασε δικαιώματα χρήσης τたうοおみくろんυうぷしろん συνόλου εντολών SSE3 κかっぱαあるふぁιいおた υλοποίησε τις περισσότερες από τις εντολές από τたうηいーたνにゅー έκδοση E κかっぱαあるふぁιいおた μετά, στους επεξεργαστές Athlon 64. Οおみくろん Athlon 64 δでるたεいぷしろんνにゅー υποστηρίζει HyperThreading κかっぱαあるふぁιいおた άρα δでるたεいぷしろんνにゅー έχει τις εντολές SSE3 που χρησιμοποιούνται μόνο γがんまιいおたαあるふぁ αυτό.

Τたうοおみくろん SSE σταμάτησε νにゅーαあるふぁ συνδέεται μみゅーεいぷしろん τたうηいーたνにゅー στοίβα της μονάδας κινητής υποδιαστολής (FPU), μみゅーεいぷしろん αποτέλεσμα νにゅーαあるふぁ μみゅーηいーたνにゅー είναι συμβατό μみゅーεいぷしろん παλιότερες γενιές συνόλων εντολών SIMD όπως τたうοおみくろん MMX. Απελευθέρωσε ομως τους σχεδιαστές από τους περιορισμούς τたうωおめがνにゅー καταχωρητών της FPU, επιτρέποντάς τους νにゅーαあるふぁ χρησιμοποιούν οχτώ μεγαλύτερους καταχωρητές τたうωおめがνにゅー 128-bit, μみゅーεいぷしろん ονόματα XMM0 έως XMM7. (Σημείωση: οおみくろん αριθμός τους σしぐまτたうοおみくろんνにゅー AMD64 έχει αυξηθεί από 8 σε 16.) Τたうοおみくろん μειονέκτημα αυτής της προσέγγισης ήταν ότι τたうαあるふぁ λειτουργικά συστήματα έπρεπε νにゅーαあるふぁ γνωρίζουν γがんまιいおたαあるふぁ τたうηいーたνにゅー ύπαρξη τたうοおみくろんυうぷしろん SSE ώστε νにゅーαあるふぁ μπορούν νにゅーαあるふぁ σώζουν τたうηいーたνにゅー κατάσταση τたうωおめがνにゅー καταχωρητών τους. Έτσι ηいーた Intel δημιούργησε μみゅーιいおたαあるふぁ ελαφρώς τροποποιημένη έκδοση της προστατευμένης κατάστασης, πぱいοおみくろんυうぷしろん τたうηいーたνにゅー ονόμασε enhanced mode, ηいーた οποία επιτρέπει τたうηいーたνにゅー χρήση εντολών SSE, ενώ αυτές είναι απενεργοποιημένες σしぐまτたうηいーたνにゅー κανονική προστατευμένη κατάσταση. Ένα λειτουργικό σύστημα πぱいοおみくろんυうぷしろん γνωρίζει γがんまιいおたαあるふぁ τたうηいーたνにゅー ύπαρξη τたうοおみくろんυうぷしろん SSE θしーたαあるふぁ μみゅーπぱいεいぷしろんιいおた σしぐまεいぷしろん αυτήν τたうηいーたνにゅー νέα κατάσταση, ενώ ένα λειτουργικό πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー τたうηいーたνにゅー αναγνωρίζει θしーたαあるふぁ μみゅーπぱいεいぷしろんιいおた μόνο σしぐまεいぷしろん προστατευμένη κατάσταση.

Τたうοおみくろん SSE είναι ένα σύνολο εντολών SIMD πぱいοおみくろんυうぷしろん λειτουργεί μόνο μみゅーεいぷしろん τιμές κινητής υποδιαστολής, όπως τたうοおみくろん 3DNow! αλλά σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん αυτό, δでるたεいぷしろんνにゅー είναι συμβατό μみゅーεいぷしろん τις παλιές χρήσεις της στοίβας της FPU. Έχοντας μεγαλύτερους καταχωρητές από τたうοおみくろん 3DNow!, τたうοおみくろん SSE μπορεί νにゅーαあるふぁ περιέχει διπλάσιο αριθμό από αριθμούς κινητής υποδιαστολής στους καταχωρητές τたうοおみくろんυうぷしろん. Τたうοおみくろん αρχικό SSE περιοριζόταν σしぐまεいぷしろん αριθμούς απλής ακρίβειας, όπως τたうοおみくろん 3DNow!, ενώ τたうοおみくろん SSE2 εισήγαγε τたうηいーた δυνατότητα νにゅーαあるふぁ πακετάρονται κかっぱαあるふぁιいおた αριθμοί διπλής ακρίβειας, κάτι πぱいοおみくろんυうぷしろん τたうοおみくろん 3DNow! δでるたεいぷしろん μπορούσε νにゅーαあるふぁ υποστηρίξει, γιατί ένας αριθμός διπλής ακρίβειας έχει μέγεθος 64-bit κかっぱαあるふぁιいおた θしーたαあるふぁ χρειαζόταν έναν ολόκληρο καταχωρητή 3DNow! MMn από μόνος τたうοおみくろんυうぷしろん. Μみゅーεいぷしろん μέγεθος 128 bit, οおみくろんιいおた καταχωρητές XMMn τたうοおみくろんυうぷしろん SSE μπορούσαν νにゅーαあるふぁ χωρέσουν δύο αριθμούς κινητής υποδιαστολής διπλής ακρίβειας σしぐまεいぷしろん έναν καταχωρητή μみゅーεいぷしろん αποτέλεσμα τたうοおみくろん SSE2 νにゅーαあるふぁ είναι πぱいιいおたοおみくろん κατάλληλο γがんまιいおたαあるふぁ επιστημονικούς υπολογισμούς σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうοおみくろん SSE1 ή τたうοおみくろん 3DNow!, τたうαあるふぁ οποία περιορίζονταν σしぐまεいぷしろん αριθμούς απλής ακρίβειας. Τたうοおみくろん SSE3 δでるたεいぷしろん πρόσθεσε επιπλέον καταχωρητές.

Επέκταση Φυσικής Διεύθυνσης (PAE)

[Επεξεργασία | επεξεργασία κώδικα]

Ηいーた Επέκταση Φυσικής Διεύθυνσης (Physical Address Extension, PAE) προστέθηκε αρχικά σしぐまτたうοおみくろんνにゅー Pentium Pro της Intel, γがんまιいおたαあるふぁ νにゅーαあるふぁ επιτρέψει επιπλέον 4 bit φυσικών διευθύνσεων σしぐまτたうηいーたνにゅー προστατευμένη κατάσταση 32-bit. Τたうοおみくろん μέγεθος της μνήμης σしぐまτたうηいーたνにゅー προστατευμένη κατάσταση περιορίζεται συνήθως σしぐまεいぷしろん 4 GB. Μέσω κάποιων τεχνικών τたうωおめがνにゅー συστημάτων διαχείρισης της μνήμης (όσον αφορά τις σελίδες κかっぱαあるふぁιいおた τたうαあるふぁ τμήματα), τたうαあるふぁ λειτουργικά συστήματα γがんまιいおたαあるふぁ x86 μπορούν νにゅーαあるふぁ έχουν πρόσβαση σしぐまεいぷしろん περισσότερα από 32-bit χώρου διευθύνσεων, ακόμα κかっぱαあるふぁιいおた χωρίς χρήση της κατάστασης 64-bit. Τたうοおみくろん μήκος τたうωおめがνにゅー μετατοπίσεων σしぐまτたうαあるふぁ τμήματα κかっぱαあるふぁιいおた τたうωおめがνにゅー γραμμικών διευθύνσεων μένει ίδιο, στα 32 bit.

Κύριο λήμμα: x86-64
δείτε επίσης: Itanium

Τたうοおみくろんνにゅー Απρίλιο τたうοおみくろんυうぷしろん 2003, ηいーた AMD κυκλοφόρησε τたうοおみくろんνにゅー πρώτο επεξεργαστή x86 μみゅーεいぷしろん καταχωρητές φυσικών διευθύνσεων μνήμης 64-bit, οおみくろんιいおた οποίοι μπορούσαν νにゅーαあるふぁ αναφερθούν σしぐまεいぷしろん πολύ περισσότερη μνήμη από 4 GB χρησιμοποιώντας τたうηいーたνにゅー νέα επέκταση x86-64 (γνωστή κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー x64). Ηいーた Intel εμφάνισε τたうοおみくろんνにゅー πρώτο της επεξεργαστή x86-64 τたうοおみくろんνにゅー Ιούλιο τたうοおみくろんυうぷしろん 2004.

Πぱいρろーιいおたνにゅー από τους x86-64 είχε προηγηθεί μみゅーιいおたαあるふぁ άλλη αρχιτεκτονική πぱいοおみくろんυうぷしろん χρησιμοποιούσε διευθύνσεις μνήμης 64-bit: ηいーた Intel είχε κυκλοφορήσει τたうοおみくろんνにゅー Itanium τたうοおみくろん 2001, στοχεύοντας σしぐまτたうηいーたνにゅー αγορά υπολογιστών υψηλών επιδόσεων. Οおみくろん Itanium όμως ήταν ασύμβατος μみゅーεいぷしろん τたうοおみくろんνにゅー x86 κかっぱαあるふぁιいおた χρησιμοποιείται λιγότερο σήμερα. Οおみくろんιいおた x86-64 επίσης είχαν τたうοおみくろん NX bit, τたうοおみくろん οποίο πρόσφερε κάποια προστασία από σφάλματα ασφάλειας πぱいοおみくろんυうぷしろん προκαλούνταν από buffer overruns.

Μέχρι πρόσφατα ηいーた αρχιτεκτονική x86 δでるたεいぷしろんνにゅー ικανοποιούσε τις απαιτήσεις τたうωおめがνにゅー Popek κかっぱαあるふぁιいおた Goldberg, οおみくろんιいおた οποίοι τたうοおみくろん 1974 είχαν δώσει τις προδιαγραφές της εικονικής εκτέλεσης πολλών λειτουργικών σしぐまεいぷしろん μみゅーιいおたαあるふぁ πλατφόρμα (virtualization). Παρόλα αυτά υπήρξαν διάφορα εμπορικά προϊόντα γがんまιいおたαあるふぁ "x86 virtualization", όπως τたうοおみくろん VMware vSphere, τたうοおみくろん Parallels, τたうοおみくろん Microsoft Hyper-V Server κかっぱαあるふぁιいおた τたうοおみくろん Microsoft Virtual PC. Σしぐまτたうηいーたνにゅー κοινότητα τたうοおみくろんυうぷしろん ανοιχτού κώδικα τたうαあるふぁ πぱいιいおたοおみくろん σημαντικά εγχειρήματα virtualization ήταν οおみくろん QEMU/KQEMU, τたうοおみくろん VirtualBox κかっぱαあるふぁιいおた τたうοおみくろん Xen.

Ηいーた Intel κかっぱαあるふぁιいおた ηいーた AMD έχουν κυκλοφορήσει επεξεργαστές x86 μみゅーεいぷしろん επεκτάσεις virtualization σしぐまτたうοおみくろん υλικό τους, οおみくろんιいおた οποίες αντιμετωπίζουν τους περιορισμούς της αρχιτεκτονικής x86. Αυτές οおみくろんιいおた επεκτάσεις είναι γνωστές σしぐまαあるふぁνにゅー Intel VT (κωδικό όνομα "Vanderpool") κかっぱαあるふぁιいおた AMD-V (κωδικό όνομα "Pacifica"). Αあるふぁνにゅー κかっぱαあるふぁιいおた οおみくろんιいおた περισσότεροι σύγχρονοι επεξεργαστές x86 περιλαμβάνουν αυτές τις επεκτάσεις, ηいーた τεχνολογία θεωρείται ότι ακόμα εξελίσσεται, μみゅーεいぷしろん πολλές λύσεις σしぐまεいぷしろん λογισμικό νにゅーαあるふぁ είναι γρηγορότερες από αυτές τις λύσεις σしぐまεいぷしろん υλικό.[18] This is expected to change as the technology matures


  1. 80486 32-bit CPU breaks new ground in chip density and operating performance. (Intel Corp.) (product announcement) EDN | May 11, 1989 | Pryce, Dave
  2. Σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τたうηいーた μικροαρχιτεκτονική (microarchitecture) κかっぱαあるふぁιいおた τたうηいーた συγκεκριμένη ηλεκτρονική κかっぱαあるふぁιいおた φυσική υλοποίηση πぱいοおみくろんυうぷしろん χρησιμοποιείται σしぐまτたうηいーた σχεδίαση ενός τたうσしぐまιいおたπぱい.
  3. Ηいーた Intel σταμάτησε νにゅーαあるふぁ ονομάζει τους επεξεργαστές σしぐまαあるふぁνにゅー "x86" από τたうοおみくろんνにゅー P5 Pentium τたうοおみくろんυうぷしろん 1993 (επειδή οおみくろんιいおた αριθμοί δでるたεいぷしろん μπορούν νにゅーαあるふぁ αποτελούν κατοχυρωμένες εμπορικές ονομασίες). Παρόλα αυτά, οおみくろん όρος x86 ήταν πぱいιいおたαあるふぁ εδραιωμένος όσον αφορά τις τεχνικές συζητήσεις, τたうηいーたνにゅー συγγραφή μεταγλωττιστών, κかっぱλらむだπぱい.
  4. Ηいーた Intel χρησιμοποιεί τους όρους IA-32 κかっぱαあるふぁιいおた Intel 64 (παλαιότερα EM64T ή IA-32e) γがんまιいおたαあるふぁ τたうοおみくろん x86 και τたうοおみくろん x86-64 αντίστοιχα. Ηいーた AMD σήμερα προτιμά τたうηいーたνにゅー ονομασία AMD64 έναντι της x86-64 πぱいοおみくろんυうぷしろん εισήγαγε παλαιότερα.
  5. «Linux* Kernel Compiling». Intel. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 6 Ιουνίου 2007. Ανακτήθηκε στις 4 Σεπτεμβρίου 2007. 
  6. «Intel Web page search result for "x64"». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 24 Οκτωβρίου 2007. Ανακτήθηκε στις 4 Σεπτεμβρίου 2007. 
  7. «Birth of a Standard: The Intel 8086 Microprocessor». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 26 Σεπτεμβρίου 2010. Ανακτήθηκε στις 13 Ιουλίου 2011. 
  8. Ηいーた αγορά τたうωおめがνにゅー ενσωματωμένων συστημάτων περιλαμβάνει πάνω από 25 διαφορετικές αρχιτεκτονικές, οおみくろんιいおた οποίες, λόγω κόστους, κατανάλωσης ενέργειας κかっぱαあるふぁιいおた απλούστερης υλοποίησης, υπερέχουν τたうωおめがνにゅー x86.
  9. «"Time and again, processor architects have looked at the inelegant x86 architecture and declared it cannot be stretched to accommodate the latest innovations," said Nathan Brookwood, principal analyst, Insight 64». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 7 Μαρτίου 2012. Ανακτήθηκε στις 13 Ιουλίου 2011. 
  10. Microsoft to End Intel Itanium Support[νεκρός σύνδεσμος]
  11. «Microprocessor Hall of Fame». Intel. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 6 Ιουλίου 2007. Ανακτήθηκε στις 11 Αυγούστου 2007. 
  12. Οおみくろんιいおた V20 και V30 της NEC περιλαμβάνουν κかっぱαあるふぁιいおた τたうοおみくろん παλιότερο σύνολο εντολών τたうοおみくろんυうぷしろん 8080, γがんまιいおたαあるふぁ νにゅーαあるふぁ μπορούν νにゅーαあるふぁ εκτελούν εφαρμογές τたうοおみくろんυうぷしろん CP/M σしぐまεいぷしろん πλήρη ταχύτητα (δでるたηいーたλらむだ. χωρίς νにゅーαあるふぁ χρειάζεται προσομοίωση τたうοおみくろんυうぷしろん 8080 μみゅーεいぷしろん λογισμικό).
  13. Είχε όμως πぱいιいおたοおみくろん αργή FPU, παρά τたうοおみくろん γεγονός ότι ηいーた Cyrix ξεκίνησε σしぐまαあるふぁνにゅー σχεδιαστής γρήγορων FPU γがんまιいおたαあるふぁ επεξεργαστές x86.
  14. Τたうαあるふぁ τσιπ 16-bit κかっぱαあるふぁιいおた 32-bit κυκλοφόρησαν τたうοおみくろん 1978 και τたうοおみくろん 1985 αντίστοιχα. Ηいーた σχεδίαση γがんまιいおたαあるふぁ υποστήριξη 64-bit ανακοινώθηκε τたうοおみくろん 1999 κかっぱαあるふぁιいおた κυκλοφόρησε σταδιακά από τたうοおみくろん 2003 κかっぱαあるふぁιいおた έπειτα.
  15. Αυτό συμβαίνει γιατί ηいーた αριθμητική ακεραίων δημιουργεί υπόλοιπο (carry) ανάμεσα σしぐまεいぷしろん διπλανά bit (σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τις απλές λειτουργίες σしぐまεいぷしろん επίπεδο bit).
  16. 16,0 16,1 16,2 Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 1 Αρχειοθετήθηκε 2011-06-28 σしぐまτたうοおみくろん Wayback Machine., p. 2-33 (2009)
  17. «Intel's Yamhill Technology: x86-64 compatible | Geek.com». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 5 Σεπτεμβρίου 2012. Ανακτήθηκε στις 24 Ιουλίου 2011. 
  18. Adams, Keith (2006-21-2006). «A Comparison of Software and Hardware Techniques for x86 Virtualization». Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, CA, USA, 2006. ACM 1-59593-451-0/06/0010. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 2010-08-20. https://web.archive.org/web/20100820201944/http://www.vmware.com/pdf/asplos235_adams.pdf. Ανακτήθηκε στις 2006-12-22. 

Εξωτερικοί σύνδεσμοι

[Επεξεργασία | επεξεργασία κώδικα]