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

Αρχιτεκτονική συνόλου εντολών

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια
(Ανακατεύθυνση από Σύνολο εντολών)

Τたうοおみくろん σύνολο εντολών (instruction set) ή αρχιτεκτονική συνόλου εντολών (instruction set architecture, ISA), είναι τたうοおみくろん τμήμα της αρχιτεκτονικής υπολογιστών πぱいοおみくろんυうぷしろん συνδέεται μみゅーεいぷしろん τたうοおみくろんνにゅー προγραμματισμό κかっぱαあるふぁιいおた περιλαμβάνει τους τύπους δεδομένων της μηχανής, τις εντολές, τους καταχωρητές, τους τρόπους διευθυνσιοδότησης (addressing modes), τたうηいーたνにゅー αρχιτεκτονική μνήμης, τたうοおみくろんνにゅー χειρισμό διακοπών κかっぱαあるふぁιいおた εξαιρέσεων, καθώς κかっぱαあるふぁιいおた τたうηいーたνにゅー εξωτερική είσοδο/έξοδο (Input/output, I/O). Μみゅーιいおたαあるふぁ αρχιτεκτονική συνόλου εντολών περιλαμβάνει τたうοおみくろん σύνολο τたうωおめがνにゅー μνημονικών εντολών (opcodes) της γλώσσας μηχανής, κかっぱαあるふぁιいおた τις εντολές πぱいοおみくろんυうぷしろん υλοποιούνται από τたうοおみくろんνにゅー ίδιο τたうοおみくろんνにゅー επεξεργαστή. [1]

Ηいーた αρχιτεκτονική συνόλου εντολών διαφέρει από τたうηいーた μικροαρχιτεκτονική, ηいーた οποία είναι τたうοおみくろん σύνολο τたうωおめがνにゅー τεχνικών σχεδίασης επεξεργαστών, πぱいοおみくろんυうぷしろん χρησιμοποιείται γがんまιいおたαあるふぁ τたうηいーたνにゅー υλοποίηση τたうοおみくろんυうぷしろん συνόλου εντολών. Υπολογιστές μみゅーεいぷしろん διαφορετικές μικροαρχιτεκτονικές μπορούν νにゅーαあるふぁ έχουν τたうοおみくろん ίδιο σύνολο εντολών. Γがんまιいおたαあるふぁ παράδειγμα, οおみくろん Pentium της Intel κかっぱαあるふぁιいおた οおみくろん Athlon της AMD υλοποιούν σχεδόν ίδιες εκδόσεις τたうοおみくろんυうぷしろん συνόλου εντολών x86, αλλά έχουν σημαντικά διαφορετικές εσωτερικές σχεδιάσεις. Ηいーた αρχιτεκτονική συνόλου εντολών IA32 σχεδιάστηκε από τたうηいーたνにゅー εταιρία Intel γがんまιいおたαあるふぁ τたうοおみくろんυうぷしろん επεξεργαστές της ίδιας εταιρίας. Ηいーた ανταγωνιστική εταιρία AMD υλοποίησε επεξεργαστές διαφορετικής αρχιτεκτονικής από αυτούς της Intel αλλά χρησιμοποίησε τたうοおみくろん ίδιο ακριβώς σύνολο εντολών IA32 (αρχικά σχεδιασμένο μόνο γがんまιいおたαあるふぁ Intel). Τたうοおみくろん 2002 περίπου ηいーた AMD επέκτεινε τたうοおみくろん σύνολο εντολών Intel-IA32 σしぐまτたうοおみくろん νέο σύνολο x86-64 για νにゅーαあるふぁ υποστηρίζονται συστήματα 64 bit τたうαあるふぁ οποία μπορούν νにゅーαあるふぁ χρησιμοποιηθούν χώρους διεύθυνσης μνήμης μέχρι 256 terrabytes ( bytes). Ηいーた Intel μみゅーεいぷしろん τたうοおみくろん IA32 απευθυνόταν σしぐまεいぷしろん μηχανήματα 32bit όπου μπορούσαν νにゅーαあるふぁ χρησιμοποιούν χώρο διεύθυνσης μνήμης μέχρι 4 gbytes ( bytes).Ηいーた AMD εκτός από τたうοおみくろん σύνολο εντολών x86-64 τたうηいーたνにゅー εποχή εκεί κατάφερε κかっぱαあるふぁιいおた έβγαλε σしぐまτたうηいーたνにゅー αγορά επεξεργαστή γρηγορότερο από 1 GHz. [2] Ηいーた επέκταση της AMD σしぐまτたうοおみくろん νέο σύνολο x86-64 επέτρεψε νにゅーαあるふぁ μπορούν νにゅーαあるふぁ χρησιμοποιηθούν χώροι διεύθυνσης μνήμης μέχρι 256 terrabytes ( bytes). Τたうοおみくろん σύνολο εντολών x86-64 στην συνέχεια υιοθετήθηκε κかっぱαあるふぁιいおた από τたうηいーたνにゅー Intel γがんまιいおたαあるふぁ τたうηいーたνにゅー κατασκευή επεξεργαστών. Τたうοおみくろん σύνολο εντολών x86-64 ενσωματώνει λειτουργίες γがんまιいおたαあるふぁ δημιουργία βελτιωμένου κώδικα μηχανής. [3]

Κάποιες εικονικές μηχανής (virtual machines) πぱいοおみくろんυうぷしろん υποστηρίζουν κώδικα byte (bytecode), όπως αυτές της Smalltalk κかっぱαあるふぁιいおた της Java, καθώς κかっぱαあるふぁιいおた ηいーた εικονική μηχανή Common Language Runtime της Microsoft σしぐまαあるふぁνにゅー αρχιτεκτονική συνόλου εντολών, τたうηいーたνにゅー υλοποιούν μεταφράζοντας τたうοおみくろんνにゅー κώδικα byte από συχνά χρησιμοποιούμενα μονοπάτια κώδικα σしぐまεいぷしろん κώδικα μηχανής, κかっぱαあるふぁιいおた εκτελούν τたうαあるふぁ λιγότερο συχνά χρησιμοποιούμενα μονοπάτια μみゅーεいぷしろん διερμηνεία. Γがんまιいおたαあるふぁ παράδειγμα, μみゅーεいぷしろん αυτόν τたうοおみくろんνにゅー τρόπο, ηいーた Transmeta υλοποίησε τたうοおみくろん σύνολο εντολών x86 σしぐまεいぷしろん επεξεργαστές VLIW.

Ηいーた TIMI (Technology-Independent Machine Interface) ήταν μみゅーιいおたαあるふぁ ιδιαίτερη αρχιτεκτονική συνόλου εντολών πぱいοおみくろんυうぷしろん εμφανίστηκε στους IBM System/38 κかっぱαあるふぁιいおた IBM AS/400. Υλοποιήθηκε από λογισμικό χαμηλού επιπέδου πぱいοおみくろんυうぷしろん μετέφραζε τたうοおみくろんνにゅー κώδικα TIMI σしぐまεいぷしろん κώδικα μηχανής, παρέχοντας λειτουργίες πぱいοおみくろんυうぷしろん σήμερα θしーたαあるふぁ αποδίδονταν σしぐまεいぷしろん μみゅーιいおたαあるふぁ «εικονική μηχανή» (virtual machine). Σχεδιάστηκε γがんまιいおたαあるふぁ νにゅーαあるふぁ αυξήσει τたうοおみくろんνにゅー χρόνο ζωής της πλατφόρμας κかっぱαあるふぁιいおた τたうωおめがνにゅー εφαρμογών της, επιτρέποντας τたうηいーた μεταφορά ολόκληρης της πλατφόρμας σしぐまεいぷしろん πολύ διαφορετικό υλικό χωρίς νにゅーαあるふぁ χρειάζεται μετατροπή σしぐまτたうοおみくろん λογισμικό εκτός από τたうοおみくろんνにゅー μεταφραστή από TIMI σしぐまεいぷしろん γλώσα μηχανής, κかっぱαあるふぁιいおた από τたうοおみくろんνにゅー κώδικα πぱいοおみくろんυうぷしろん υλοποιεί τις υπηρεσίες πぱいοおみくろんυうぷしろん χρησιμοποιούνται από τたうοおみくろんνにゅー κώδικα μηχανής πぱいοおみくろんυうぷしろん προκύπτει. Αυτό επέτρεψε σしぐまτたうηいーたνにゅー IBM νにゅーαあるふぁ μεταφέρει τたうηいーたνにゅー πλατφόρμα AS/400 από μみゅーιいおたαあるふぁ παλιά αρχιτεκτονική CISC σしぐまτたうηいーたνにゅー νεότερη αρχιτεκτονική POWER χωρίς νにゅーαあるふぁ πρέπει νにゅーαあるふぁ γράψει πάλι ή νにゅーαあるふぁ μεταγλωττίσει μέρη τたうοおみくろんυうぷしろん λειτουργικού συστήματος ή τたうοおみくろんυうぷしろん λογισμικού, εκτός από τたうοおみくろんνにゅー κώδικα χαμηλού επιπέδου πぱいοおみくろんυうぷしろん αναφέρθηκε πぱいρろーιいおたνにゅー.

Ηいーた γλώσσα μηχανής κατασκευάζεται από διακριτές εντολές (statements, instructions). Σしぐまτたうηいーたνにゅー αρχιτεκτονική πぱいοおみくろんυうぷしろん εκτελείται, μみゅーιいおたαあるふぁ εντολή μπορεί νにゅーαあるふぁ ορίζει:

  • Συγκεκριμένους καταχωρητές γがんまιいおたαあるふぁ αριθμητικές πράξεις, σχηματισμό διευθύνσεων μνήμης ή λειτουργίες ελέγχου
  • Συγκεκριμένες θέσεις μνήμης ή μετατοπίσεις (offsets)
  • Συγκεκριμένους τρόπους σχηματισμού διευθύνσεων (addressing modes) πぱいοおみくろんυうぷしろん χρησιμοποιούνται γがんまιいおたαあるふぁ τたうηいーたνにゅー ερμηνεία τたうωおめがνにゅー τελεστών

Συνδυάζοντας αυτές τις απλές εντολές μπορούν νにゅーαあるふぁ προκύψουν πぱいιいおたοおみくろん σύνθετες εντολές, οおみくろんιいおた οποίες (σしぐまεいぷしろん μみゅーιいおたαあるふぁ αρχιτεκτονική φふぁいοおみくろんνにゅー Νόιμαν) εκτελούνται ακολουθιακά ή όπως ορίζουν οおみくろんιいおた εντολές ροής ελέγχου (control flow).

Κάποιες εντολές πぱいοおみくろんυうぷしろん υπάρχουν σしぐまτたうαあるふぁ περισσότερα σύνολα εντολών είναι οおみくろんιいおた εξής:

  • Χειρισμός δεδομένων κかっぱαあるふぁιいおた λειτουργίες μνήμης
    • θέσε (set) έναν καταχωρητή (πぱいοおみくろんυうぷしろん είναι μみゅーιいおたαあるふぁ προσωρινή μικρή μνήμη σしぐまτたうοおみくろんνにゅー επεξεργαστή) σしぐまεいぷしろん μみゅーιいおたαあるふぁ σταθερή τιμή
    • μετακίνησε (move) δεδομένα από μみゅーιいおたαあるふぁ θέση μνήμης σしぐまεいぷしろん έναν καταχωρητή (ή αντίστροφα). Αυτό γίνεται γがんまιいおたαあるふぁ νにゅーαあるふぁ ληφθούν τたうαあるふぁ δεδομένα πぱいοおみくろんυうぷしろん χρειάζεται ένας υπολογισμός πぱいοおみくろんυうぷしろん ακολουθεί, ή γがんまιいおたαあるふぁ νにゅーαあるふぁ αποθηκευτεί τたうοおみくろん αποτέλεσμα ενός υπολογισμού.
    • διάβασμα (read) κかっぱαあるふぁιいおた γράψιμο (write) δεδομένων σしぐまεいぷしろん συσκευές υλικού
  • Αριθμητική κかっぱαあるふぁιいおた Λογική
    • πρόσθεσε (add), αφαίρεσε (subtract), πολλαπλασίασε (multiply), ή διαίρεσε (divide) τις τιμές δύο καταχωρητών, τοποθετώντας τたうοおみくろん αποτέλεσμα σしぐまεいぷしろん έναν καταχωρητή, ίσως θέτωντας έναν ή περισσότερους κωδικούς κατάστασης (flags, condition codes) σしぐまεいぷしろん έναν καταχωρητή κατάστασης (status register)
    • λειτουργίες μεταξύ bit (bitwise operations), όπως ηいーた σύζευξη κかっぱαあるふぁιいおた ηいーた διάζευξη τたうωおめがνにゅー αντίστοιχων bit σしぐまεいぷしろん δύο καταχωρητές, ή ηいーた άρνηση κάθε bit σしぐまεいぷしろん έναν καταχωρητή
    • σύγκρινε (compare) τις τιμές δύο καταχωρητών (γがんまιいおたαあるふぁ παράδειγμα, γがんまιいおたαあるふぁ νにゅーαあるふぁ βρεθεί αあるふぁνにゅー ηいーた μία είναι μεγαλύτερη ή αあるふぁνにゅー είναι ίσες)
  • Ροή ελέγχου
    • διακλάδωση (branch) σしぐまεいぷしろん κάποια άλλη θέση σしぐまτたうοおみくろん πρόγραμμα, γがんまιいおたαあるふぁ νにゅーαあるふぁ συνεχίσει ηいーた εκτέλεση εντολών από εκεί
    • διακλάδωση υπό συνθήκη (conditionally branch) σしぐまεいぷしろん μみゅーιいおたαあるふぁ άλλη θέση σしぐまτたうοおみくろん πρόγραμμα, αあるふぁνにゅー ισχύει κάποια συνθήκη
    • έμμεση διακλάδωση (indirectly branch) σしぐまεいぷしろん μみゅーιいおたαあるふぁ άλλη θέση, σώζοντας τたうηいーたνにゅー θέση της επόμενης εντολής, γがんまιいおたαあるふぁ νにゅーαあるふぁ αποτελεί ένα σημείο επιστροφής (από μみゅーιいおたαあるふぁ κλήση)

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

  • ηいーた ταυτόχρονη αποθήκευση πολλών καταχωρητών σしぐまτたうηいーた στοίβα
  • ηいーた μετακίνηση μεγάλων τμημάτων μνήμης
  • ηいーた αριθμητική μιγαδικών αριθμών ή αριθμών κινητής υποδιαστολής (ημίτονο, συνημίτονο, τετραγωνική ρίζα, κかっぱλらむだπぱい.)
  • ηいーた εκτέλεση μιας εντολής δοκιμή-και-ανάθεση (test-and-set)
  • οおみくろんιいおた εντολές πぱいοおみくろんυうぷしろん χρησιμοποιούν τたうηいーたνにゅー ALU μみゅーεいぷしろん δεδομένα από τたうηいーた μνήμη αντί από κάποιον καταχωρητή

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

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

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

Στις αρχιτεκτονικές πολύ μεγάλης λέξης εντολής (very long instruction word, VLIW), στις οποίες ανήκουν πολλές αρχιτεκτονικές μικροκώδικα, πολλοί ταυτόχρονοι κωδικοί κかっぱαあるふぁιいおた τελεστέοι ορίζονται μみゅーεいぷしろん μみゅーιいおたαあるふぁ μόνο εντολή.

Κάποια σπάνια σύνολα εντολών δでるたεいぷしろんνにゅー έχουν πεδίο κωδικού (όπως οおみくろんιいおた Transport Triggered Architectures (TTA) ή ηいーた εικονική μηχανή της Forth), μόνο τελεστέους. Άλλα ασυνήθιστα σύνολα εντολών χωρίς τελεστέους ("0-operand") δでるたεいぷしろんνにゅー έχουν πεδία γがんまιいおたαあるふぁ τたうοおみくろんνにゅー ορισμό τたうωおめがνにゅー τελεστέων, όπως κάποιες μηχανές στοίβας, γがんまιいおたαあるふぁ παράδειγμα ηいーた NOSC [1].

Τたうοおみくろん μέγεθος ή μήκος μιας εντολής διαφέρει σημαντικά, από τέσσερα μみゅーπぱいιいおたτたう σしぐまεいぷしろん κάποιους μικροελεγκτές σしぐまεいぷしろん εκατοντάδες μみゅーπぱいιいおたτたう σしぐまεいぷしろん κάποια συστήματα VLIW. Οおみくろんιいおた επεξεργαστές πぱいοおみくろんυうぷしろん χρησιμοποιούνται στους προσωπικούς υπολογιστές, στους μεγάλους υπολογιστές (mainframes), κかっぱαあるふぁιいおた στους υπερυπολογιστές έχουν μεγέθη εντολής πぱいοおみくろんυうぷしろん κυμαίνονται από τたうαあるふぁ 8 μέχρι τたうαあるふぁ 64 bit (ηいーた πぱいιいおたοおみくろん μεγάλη εντολή τたうοおみくろんυうぷしろん x86 είναι 15 byte, δηλαδή 120 bit). Σしぐまεいぷしろん ένα σύνολο εντολών, διαφορετικές εντολές μπορεί νにゅーαあるふぁ έχουν διαφορετικά μεγέθη. Σしぐまεいぷしろん κάποιες αρχιτεκτονικές, ειδικά στις RISC, οおみくろんιいおた εντολές έχουν σταθερό μήκος, συνήθως ίσο μみゅーεいぷしろん τたうοおみくろん μέγεθος λέξης της αρχιτεκτονικής. Σしぐまεいぷしろん άλλες αρχιτεκτονικές, οおみくろんιいおた εντολές έχουν μεταβαλλόμενο μήκος, συνήθως ακέραια πολλαπλάσια τたうοおみくろんυうぷしろん byte ή μισής λέξης (halfword).

Οおみくろんιいおた εντολές πぱいοおみくろんυうぷしろん αποτελούν ένα πρόγραμμα σπάνια γράφονται μみゅーεいぷしろん τたうηいーたνにゅー εσωτερική, αριθμητική τους μορφή. Οおみくろん προγραμματιστής συνήθως τις γράφει χρησιμοποιώντας συμβολική γλώσσα (assembly) ή, συχνότερα, παράγονται αυτόματα από έναν μεταγλωττιστή.

Ηいーた σχεδίαση ενός συνόλου εντολών είναι πολύπλοκο θέμα. Σしぐまτたうηいーたνにゅー ιστορία τたうωおめがνにゅー μικροεπεξεργαστών συναντώνται δύο προσεγγίσεις. Ηいーた πρώτη ήταν ηいーた CISC (Complex Instruction Set Computer), ηいーた οποία είχε πολλές διαφορετικές εντολές. Κατά τたうηいーた δεκαετία τたうοおみくろんυうぷしろん 1970 όμως, εταιρείες όπως ηいーた IBM βρήκαν μετά από έρευνα ότι πολλές εντολές τたうοおみくろんυうぷしろん συνόλου εντολών μπορούσαν νにゅーαあるふぁ παραλειφθούν. Τたうοおみくろん αποτέλεσμα ήταν ηいーた αρχιτεκτονική RISC (Reduced Instruction Set Computer), ηいーた οποία χρησιμοποιεί μικρότερο σύνολο εντολών. Ένα απλούστερο σύνολο εντολών μπορεί νにゅーαあるふぁ προσφέρει υψηλότερες ταχύτητες, μικρότερο μέγεθος μικροεπεξεργαστή κかっぱαあるふぁιいおた μειωμένη κατανάλωση ενέργειας. Ένα πぱいιいおたοおみくろん πολύπλοκο σύνολο εντολών όμως μπορεί νにゅーαあるふぁ εκτελεί αποδοτικά συχνές λειτουργίες, νにゅーαあるふぁ εκμεταλλεύεται καλύτερα τたうηいーたνにゅー μνήμη κかっぱαあるふぁιいおた τたうηいーたνにゅー κρυφή μνήμη (cache) ή νにゅーαあるふぁ απλοποιεί τたうοおみくろんνにゅー προγραμματισμό.

Κάποιοι σχεδιαστές συνόλων εντολών διατηρούν κάποιους κωδικούς εντολών γがんまιいおたαあるふぁ κλήσεις συστήματος ή διακοπές λογισμικού. Γがんまιいおたαあるふぁ παράδειγμα οおみくろん MOS Technology 6502 χρησιμοποιεί τたうηいーたνにゅー 00H, οおみくろん Zilog Z80 χρησιμοποιεί τους οκτώ κωδικούς C7,CF,D7,DF,E7,EF,F7,FFH[4] ενώ οおみくろん Motorola 68000 χρησιμοποιεί κωδικούς σしぐまτたうοおみくろん εύρος A000..AFFFH (οおみくろん δείκτης Ηいーた σημαίνει δεκαεξαδικό σύστημα).

Οおみくろんιいおた εικονικές μηχανές μπορούν νにゅーαあるふぁ υλοποιηθούν γρήγορα κかっぱαあるふぁιいおた εύκολα αあるふぁνにゅー ένα σύνολο εντολών ικανοποιεί τις απαιτήσεις εικονικοποίησης τたうωおめがνにゅー Πόπεκ κかっぱαあるふぁιいおた Γκόλντμπεργκ (Popek and Goldberg virtualization requirements).

Σしぐまεいぷしろん συστήματα μみゅーεいぷしろん πολλούς επεξεργαστές οおみくろんιいおた αλγόριθμοι συγχρονισμού χωρίς αναμονή (non-blocking synchronization) είναι πぱいιいおたοおみくろん εύκολο νにゅーεいぷしろん υλοποιηθούν αあるふぁνにゅー τたうοおみくろん σύνολο εντολών υποστηρίζει κάποια λειτουργία τたうοおみくろんυうぷしろん τύπου «φόρτωσε κかっぱαあるふぁιいおた αύξησε κατά ένα» ("fetch-and-increment") ή «φόρτωσε συνδεδεμένο/αποθήκευσε συνθήκη» ("load linked/store conditional", "LL/SC") ή «σύγκρινε κかっぱαあるふぁιいおた αντάλλαξε ατομικά» ("atomic compare and swap").

Υλοποίηση τたうοおみくろんυうぷしろん συνόλου εντολών

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

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

Όταν σχεδιάζει τたうηいーたνにゅー μικροαρχιτεκτονική ενός επεξεργαστή, ένας μηχανικός χρησιμοποιεί «μみゅーπぱいλらむだοおみくろんκかっぱ» από έτοιμα κυκλώματα όπως οおみくろんιいおた αθροιστές, οおみくろんιいおた πολυπλέκτες, οおみくろんιいおた μετρητές, οおみくろんιいおた καταχωρητές, οおみくろんιいおた αριθμητικές κかっぱαあるふぁιいおた λογικές μονάδες, κかっぱ.αあるふぁ. Σしぐまτたうηいーた συνέχεια χρησιμοποιείται μみゅーιいおたαあるふぁ γλώσσα μεταφοράς καταχωρητών (register transfer language) πぱいοおみくろんυうぷしろん νにゅーαあるふぁ περιγράφει τたうηいーたνにゅー αποκωδικοποίηση κかっぱαあるふぁιいおた τたうηいーたνにゅー διάταξη γがんまιいおたαあるふぁ εκτέλεση κάθε εντολής τたうοおみくろんυうぷしろん συνόλου εντολών, σしぐまεいぷしろん αυτήν τたうηいーたνにゅー συγκεκριμένη μικροαρχιτεκτονική. Υπάρχουν δύο βασικοί τρόποι νにゅーαあるふぁ κατασκευαστεί μみゅーιいおたαあるふぁ μονάδα ελέγχου (control unit) πぱいοおみくろんυうぷしろん νにゅーαあるふぁ υλοποιεί αυτήν τたうηいーたνにゅー περιγραφή (αあるふぁνにゅー κかっぱαあるふぁιいおた πολλές σχεδιάσεις δανείζονται στοιχεία κかっぱαあるふぁιいおた από τους δύο):

  1. Οおみくろんιいおた πρώτες σχεδιάσεις υπολογιστών κかっぱαあるふぁιいおた κάποιοι από τους απλότερους υπολογιστές RISC υλοποιούσαν κατευθείαν μみゅーεいぷしろん κυκλώματα τたうηいーたνにゅー αποκωδικοποίηση κかっぱαあるふぁιいおた τたうηいーたνにゅー διάταξη τたうωおめがνにゅー εντολών (όπως υλοποιουσαν κかっぱαあるふぁιいおた τたうηいーたνにゅー υπόλοιπη μικροαρχιτεκτονική).
  2. Άλλες σχεδιάσεις χρησιμοπιούν ρουτίνες μικροκώδικα ή πίνακες γがんまιいおたαあるふぁ αυτόν τたうοおみくろんνにゅー σκοπό—συνήθως σしぐまαあるふぁνにゅー ROM μέσα σしぐまτたうοおみくろん τたうσしぐまιいおたπぱい ή σしぐまαあるふぁνにゅー προγραμματιζόμενες λογικές συστοιχίες (Programmable Logic Arrays, PLA) ενώ σしぐまτたうοおみくろん παρελθόν είχαν χρησιμοποιηθεί κかっぱαあるふぁιいおた ξεχωριστές μνήμες RAM.

Υπάρχουν κάποιες νέες σχεδιάσεις επεξεργαστών πぱいοおみくろんυうぷしろん μεταγλωττίζουν τたうοおみくろんνにゅー σύνολο εντολών σしぐまεいぷしろん μみゅーιいおたαあるふぁ εγγράψιμη RAM ή μνήμη φλας μέσα σしぐまτたうηいーたνにゅー κεντρική μονάδα επεξεργασίας (όπως οおみくろん επεξεργαστής Rekursiv κかっぱαあるふぁιいおた οおみくろん Imsys Cjip),[5] ή σしぐまεいぷしろん ένα FPGA (reconfigurable computing). Ένα παλαιότερο παράδειγμα είναι οおみくろん MCP-1600 της Western Digital, οおみくろん οποίος χρησιμοποιεί μみゅーιいおたαあるふぁ ξεχωριστή ROM αποκλειστικά γがんまιいおたαあるふぁ τたうοおみくろんνにゅー μικροκώδικα.

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

Συχνά οおみくろんιいおた λεπτομέρειες της υλοποίησης επηρεάζουν τたうηいーたνにゅー επιλογή τたうωおめがνにゅー εντολών τたうοおみくろんυうぷしろん συνόλου εντολών. Γがんまιいおたαあるふぁ παράδειγμα, πολλές υλοποιήσεις της σωλήνωσης εντολών (instruction pipeline) επιτρέπουν μόνο μみゅーιいおたαあるふぁ φόρτωση ή μみゅーιいおたαあるふぁ εγγραφή σしぐまτたうηいーた μνήμη ανά εντολή, μみゅーεいぷしろん αποτέλεσμα νにゅーαあるふぁ προκύπτει μみゅーιいおたαあるふぁ αρχιτεκτονική RISC τύπου φόρτωσης-αποθήκευσης (load-store architecture). Ένα άλλο παράδειγμα είναι οおみくろんιいおた πρώτοι τρόποι μみゅーεいぷしろん τους οποίους υλοποιήθηκε ηいーた σωλήνωση εντολών μみゅーεいぷしろん χρήση σχισμής καθυστέρησης (delay slot).

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

Ηいーた μνήμη ήταν ακριβή στις πρώτους υπολογιστές μみゅーεいぷしろん αποτέλεσμα τたうαあるふぁ προγράμματα νにゅーαあるふぁ έπρεπε νにゅーαあるふぁ είναι όσο πぱいιいおたοおみくろん μικρά γινόταν ώστε νにゅーαあるふぁ χωρούν σしぐまτたうηいーたνにゅー περιορισμένη μνήμη κかっぱαあるふぁιいおた τたうοおみくろん συνολικό μέγεθος τたうωおめがνにゅー εντολών πぱいοおみくろんυうぷしろん χρειάζονταν γがんまιいおたαあるふぁ μみゅーιいおたαあるふぁ λειτουργία, ηいーた πυκνότητα κώδικα (code density), ήταν βασικό χαρακτηριστικό κάθε συνόλου εντολών. Οおみくろんιいおた υπολογιστές μみゅーεいぷしろん υψηλή πυκνότητα κώδικα είχαν (κかっぱαあるふぁιいおた ακόμα έχουν) εντολές γがんまιいおたαあるふぁ τたうηいーたνにゅー είσοδο σしぐまεいぷしろん διαδικασία (procedure entry), επιστροφή μみゅーεいぷしろん παραμέτρους (parameterized return), δομές επανάληψης (loops) κかっぱλらむだπぱい. (κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ αυτό ονομάστηκαν εいぷしろんκかっぱ τたうωおめがνにゅー υστέρων υπολογιστές σύνθετου συνόλου εντολών ή CISC). Συνήθως όμως οおみくろんιいおた εντολές "CISC" απλά συνδύαζαν μみゅーιいおたαあるふぁ βασική αριθμητική ή λογική λειτουργία μみゅーεいぷしろん τたうηいーたνにゅー προσπέλαση ενός ή περισσότερων τελεστέων σしぐまτたうηいーた μνήμη (χρησιμοποιώντας διάφορους τρόπους σχηματισμού διευθύνσεων: άμεσο, έμμεσο, μみゅーεいぷしろん δείκτη, κかっぱλらむだπぱい.). Κάποιες αρχιτεκτονικές μπορεί νにゅーαあるふぁ επιτρέπουν δύο ή τρεις τελεστέους (μαζί μみゅーεいぷしろん τたうοおみくろん αποτέλεσμα) από τたうηいーた μνήμη ή μπορούν νにゅーαあるふぁ εκτελούν λειτουργίες όπως ηいーた αυτόματη αύξηση δεικτών σしぐまτたうηいーた μνήμη κατά ένα. Τたうαあるふぁ σύνολα εντολών πぱいοおみくろんυうぷしろん υλοποιούνται σしぐまεいぷしろん λογισμικό μπορεί νにゅーαあるふぁ έχουν ακόμα πぱいιいおたοおみくろん σύνθετες κかっぱαあるふぁιいおた ισχυρές εντολές.

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

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

Έχει γίνει επίσης έρευνα πάνω σしぐまτたうηいーたνにゅー συμπίεση εκτελέσιμων (executable compression) γがんまιいおたαあるふぁ τたうηいーた βελτίωση της πυκνότητας κώδικας. Ηいーた μαθηματική θεωρία της πολυπλοκότητα Κολμογκόροβ (Kolmogorov complexity) περιγράφει τたうαあるふぁ ανοιχτά προβλήματα κかっぱαあるふぁιいおた τους περιορισμούς αυτής της προσέγγισης.

Αριθμός τελεστέων

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

Τたうαあるふぁ σύνολα εντολών κατηγοριοποιούνται μみゅーεいぷしろん βάση τたうοおみくろんνにゅー μέγιστο αριθμό τελεστέων πぱいοおみくろんυうぷしろん δηλώνονται ρητά στις εντολές τους.

(Σしぐまτたうαあるふぁ παραδείγματα πぱいοおみくろんυうぷしろん ακολουθούν, τたうαあるふぁ a, b, κかっぱαあるふぁιいおた c είναι (άμεσες ή υπολογισμένες) διευθύνσεις θέσεων μνήμης, ενώ ονόματα της μορφής reg1 αναφέρονται σしぐまεいぷしろん καταχωρητές τたうοおみくろんυうぷしろん υπολογιστή.)

  • 0 τελεστέων (υπολογιστές μηδέν διευθύνσεων, zero-address machines) ή μηχανές στοίβας (stack machines): Όλες οおみくろんιいおた αριθμητικές λειτουργίες χρησιμοποιούν τたうοおみくろん τελευταίο ή τたうαあるふぁ δύο τελευταία στοιχεία της στοίβας, κかっぱαあるふぁιいおた χρησιμοποιούνται εντολές ενός τελεστέου γがんまιいおたαあるふぁ τたうηいーたνにゅー τοποθέτηση (push) κかっぱαあるふぁιいおた τたうηいーたνにゅー αφαίρεση (pop) από τたうηいーた στοίβα: push a, push b, add, pop c.
  • 1 τελεστέου (υπολογιστές μιας διεύθυνσης, one-address machines) ή μηχανές συσσώρευσης (accumulator machines), πぱいοおみくろんυうぷしろん περιλαμβάνουν τις πρώτους υπολογιστές κかっぱαあるふぁιいおた πολλούς μικρούς μικροελεγκτές: οおみくろんιいおた περισσότερες εντολές έχουν μόνο έναν τελεστέο σしぐまτたうαあるふぁ δεξιά (μみゅーιいおたαあるふぁ σταθερά, έναν καταχωρητή ή μみゅーιいおたαあるふぁ θέση μνήμης), θεωρώντας έμμεσα ότι οおみくろん συσσωρευτής (accumulator) είναι οおみくろん τελεστέος σしぐまτたうαあるふぁ αριστερά (καθώς κかっぱαあるふぁιいおた επίσης οおみくろん προορισμός τたうοおみくろんυうぷしろん αποτελέσματος, αあるふぁνにゅー χρειάζεται κάποιος τέτοιος): load a, add b, store c. Μみゅーεいぷしろん αυτήν τたうηいーたνにゅー κατηγορία σχετίζονται κかっぱαあるふぁιいおた οおみくろんιいおた μηχανές στοίβας πぱいοおみくろんυうぷしろん συχνά επιτρέπουν ρητά έναν τελεστέο σしぐまεいぷしろん αριθμητικές εντολές: push a, add b, pop c.
  • 2 τελεστέων — πολλοί υπολογιστές CISC κかっぱαあるふぁιいおた RISC εντάσσονται σしぐまεいぷしろん αυτήν τたうηいーたνにゅー κατηγορία:
    • CISC — όταν οおみくろんιいおた εντολές μπορούν νにゅーαあるふぁ έχουν μόνο έναν τελεστέο μνήμης ανά εντολή, λειτουργούν μみゅーεいぷしろん ακολουθίες εντολών της μορφής load a,reg1; add reg1,b; store reg1,c, ακόμα κかっぱαあるふぁιいおた αあるふぁνにゅー φορτώνουν κかっぱαあるふぁιいおた αποθηκεύουν σしぐまτたうηいーたνにゅー ίδια θέση μνήμης
    • CISC — move a->c; add c+=b.
    • RISC — επειδή χρειάζεται ρητή φόρτωση από τたうηいーた μνήμη, οおみくろんιいおた εντολές θしーたαあるふぁ είναι: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c
  • 3 τελεστέων, πぱいοおみくろんυうぷしろん επιτρέπουν τたうηいーたνにゅー καλύτερη επαναχρησιμοποίηση τたうωおめがνにゅー δεδομένων:[6]
    • CISC — είτε γίνεται ηいーた μοναδική εντολή add a,b,c, είτε (συνηθέστερα): move a,reg1; add reg1,b,c επειδή οおみくろんιいおた περισσότεροι υπολογιστές περιορίζονται σしぐまεいぷしろん δύο τελεστέους μνήμης.
    • RISC — οおみくろんιいおた αριθμητικές εντολές χρησιμοποιούν μόνο καταχωρητές επομένως χρειάζονται ρητές εντολές φόρτωσης/αποθήκευσης δύο τελεστέων: load a,reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c - σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τις περιπτώσεις 2 και 1 τελεστέου, αυτό αφήνει σしぐまεいぷしろん καταχωρητές κかっぱαあるふぁιいおた τις τρεις τιμές a, b, κかっぱαあるふぁιいおた c[6].
  • περισσότερων τελεστέων—κάποιοι υπολογιστές CISC επιτρέπουν τたうηいーた χρήση διάφορων τρόπων σχηματισμού διευθύνσεων, επιτρέποντας περισσότερους από 3 τελεστέους (καταχωρητές ή πρόσβαση σしぐまτたうηいーた μνήμη), όπως ηいーた εντολής πολυωνυμικής αποτίμησης "POLY" τたうοおみくろんυうぷしろん VAX.

Λόγω τたうοおみくろんυうぷしろん μεγάλου αριθμού bit πぱいοおみくろんυうぷしろん χρειάζονται γがんまιいおたαあるふぁ τたうηいーたνにゅー κωδικοποίηση τたうωおめがνにゅー τριών καταχωρητών μιας εντολής 3 τελεστέων, οおみくろんιいおた επεξεργαστές RISC πぱいοおみくろんυうぷしろん χρησιμοποιούν εντολές 16-bit είναι μηχανές 2 τελεστέων, όπως οおみくろん Atmel AVR, οおみくろん TI MSP430 κかっぱαあるふぁιいおた κάποιες εκδόσεις τたうοおみくろんυうぷしろん ARM Thumb. Οおみくろんιいおた επεξεργαστές RISC πぱいοおみくろんυうぷしろん χρησιμοποιούν εντολές 32-bit είναι συνήθως μηχανές 3 τελεστέων, όπως οおみくろんιいおた επεξεργαστές πぱいοおみくろんυうぷしろん υλοποιούν τたうηいーたνにゅー αρχιτεκτονική Power, τたうηいーたνにゅー αρχιτεκτονική SPARC, τたうηいーたνにゅー αρχιτεκτονική MIPS, τたうηいーたνにゅー αρχιτεκτονική ARM κかっぱαあるふぁιいおた τたうηいーたνにゅー αρχιτεκτονική AVR32.

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

Κατάλογος αρχιτεκτονικών συνόλου εντολών

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

Οおみくろん κατάλογος πぱいοおみくろんυうぷしろん ακολουθεί δでるたεいぷしろんνにゅー είναι πλήρης, καθώς εξακολουθεί ηいーた ανάπτυξη τたうωおめがνにゅー παλιών αρχιτεκτονικών κかっぱαあるふぁιいおた δημιουργούνται νέες αρχιτεκτονικές. Πολλοί μικροεπεξεργαστές κかっぱαあるふぁιいおた μικροελεγκτές πぱいοおみくろんυうぷしろん είναι διαθέσιμοι σしぐまτたうηいーたνにゅー αγορά υλοποιούν αρχιτεκτονικές συνόλου εντολών. Σしぐまεいぷしろん κάποιες εφαρμογές είναι συχνές κかっぱαあるふぁιいおた οおみくろんιいおた εξειδικευμένες αρχιτεκτονικές συνόλου εντολών, όπως σしぐまτたうαあるふぁ ASIC, σしぐまτたうαあるふぁ FPGA κかっぱαあるふぁιいおた σしぐまτたうοおみくろん πεδίο τたうοおみくろんυうぷしろん reconfigurable computing.

Αρχιτεκτονικές συνόλου εντολών σしぐまεいぷしろん υλικό

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

Αρχιτεκτονικές συνόλου εντολών σしぐまεいぷしろん λογισμικό μみゅーεいぷしろん εκδόσεις σしぐまεいぷしろん υλικό

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

Αρχιτεκτονικές συνόλου εντολών σしぐまεいぷしろん λογισμικό

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

Κατηγορίες συνόλων εντολών

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

Εφαρμογές πぱいοおみくろんυうぷしろん χρειάζονται ειδικά σύνολα εντολών

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

Τύποι συσκευών πぱいοおみくろんυうぷしろん υλοποιούν κάποιες αρχιτεκτονικές συνόλου εντολών

[Επεξεργασία | επεξεργασία κώδικα]
  1. Randal E. Bryant and David R. O'Hallaron, (2010). Computer Systems: A Programmer's Perspective. Carnegie Mellon University. σしぐまεいぷしろんλらむだ. 160. ISBN 978-0136108047. 
  2. Randal E. Bryant and David R. O'Hallaron, (2010). Computer Systems: A Programmer's Perspective. Carnegie Mellon University. σしぐまεいぷしろんλらむだ. 160. ISBN 978-0136108047. 
  3. Randal E. Bryant and David R. O'Hallaron, (2010). Computer Systems: A Programmer's Perspective. Carnegie Mellon University. σελίδες 155–156. ISBN 978-0136108047. 
  4. Ganssle, Jack. "Proactive Debugging" Αρχειοθετήθηκε 2012-07-14 at Archive.is. Δημοσίευση: 26 Φεβρουαρίου 2001.
  5. http://cpushack.net/CPU/cpu7.html
  6. 6,0 6,1 6,2 The evolution of RISC technology at IBM by John Cocke Αρχειοθετήθηκε 2012-02-09 σしぐまτたうοおみくろん Wayback Machine. – IBM Journal of R&D, Volume 44, Numbers 1/2, p.48 (2000)
  7. http://repo.or.cz/w/fpgammix.git/blob_plain/HEAD:/doc/README

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

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