Οργάνωση Η/Υ Ο Επεξεργαστής TRN Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου
ΚMΕ Κυριότεροι Καταχωρητές της ΚΜΕ του υπολογιστή TRN IR (20 bits) X (20 bits) I (13 bits) PC (13 bits) A (20 bits) KME
Καταχωρητές 1/2 Καταχωρητής A (συσσωρευτής accumulator) Εκτέλεση αριθμητικών και λογικών πράξεων Συσσώρευση (αποθήκευση) των ενδιάμεσων αποτελεσμάτων των πράξεων. Καταχωρητής X Βοηθητικός καταχωρητής που χρησιμοποιείται ως επέκταση του καταχωρητή A. Καταχωρητής IR (καταχωρητής εντολών - instruction register) Περιέχει την εντολή που πρόκειται κάθε φορά να εκτελεσθεί.
Καταχωρητές 2/2 Καταχωρητής PC (μετρητής προγράμματος - program counter) Περιέχει την διεύθυνση της προς εκτέλεση εντολής που βρίσκεται στην μνήμη. Καταχωρητής I. (καταχωρητής δείκτης - index register) είναι μήκους 13 bits και Χρησιμοποιείται κατά την δεικτοδοτημένη αναφορά στην μνήμη. Χρησιμοποιείται και ως μετρητής (counter).
Μορφή Εντολών Στον υπολογιστή ΤRN οι εντολές παριστάνονται με μία λέξη υπολογιστή μήκους 20 δυαδικών ψηφίων Πεδίο Κώδικα Εντολής Πεδίο Τρόπου Προσπέλασης Πεδίο Διεύθυνσης 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Ψηφίο Έμμεσης Αναφοράς Ψηφίο Δεικτοδοτημένης Αναφοράς
Τρόποι Αναφοράς στη Μνήμη Άμεση Αναφορά στη Μνήμη Έστω η εντολή LDA 1312 A 5 Α <- Μ[TAG] 1310 1311 5 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321
Τρόποι Αναφοράς στη Μνήμη Δεικτοδοτημένη Αναφορά στη Μνήμη Έστω η εντολή LDA,Ι 1312 A 7 Ι 3 Α <- Μ[TAG+I] 1310 1311 5 1312 1313 1314 7 1315 1316 1317 1318 1319 1320 1321 1312 + 3 = 1315
Τρόποι Αναφοράς στη Μνήμη Έμμεση Αναφορά στη Μνήμη Έστω η εντολή LDA (1312) A 6 Α <- Μ[ M[TAG] ] 1310 1311 1320 1312 1313 1314 1315 1316 1317 1318 1319 6 1320 1321
Τρόποι Αναφοράς στη Μνήμη Έμμεση και Δεικτοδοτημένη Αναφορά στη Μνήμη Έστω η εντολή LDA,Ι (1312) A 6 Ι 3 Α <- Μ[ M[TAG+I] ] 1310 1311 1312 1313 1314 1320 1315 1316 1317 1318 1319 6 1320 1321 1312+3= 1315
Κύκλοι Μηχανής Η μεταφορά από τη μνήμη και η εκτέλεση μιας εντολής, λαμβάνει χώρα σε τέσσερις φάσεις ή κύκλους μηχανής : Κύκλος Ανάκλησης της Εντολής (Instruction Fetch) Κύκλος Δεικτοδοτημένης Αναφοράς, D=1 (Index Addressing) (σχηματισμός βοηθητικής διεύθυνσης Β) Κύκλος Έμμεσης Αναφοράς. E=1 (Indirect Addressing) (σχηματισμός τελικής διεύθυνσης Β) Κύκλος Εκτέλεσης
Η Συμβολική Γλώσσα του TRN
Συμβολική Γλώσσα TRN Οι εντολές και οι ψευδοεντολές της συμβολικής γλώσσας αποτελούνται εν γένει από τέσσερα τμήματα: ΕΠΙΓΡΑΦΗ: ΛΕΙΤΟΥΡΓΙΑ ΔΙΕΥΘΥΝΣΗ ΣΧΟΛΙΑ Επιγραφή: Ορισμός συμβολικών ονομάτων (6 ή λιγότεροι χαρακτήρες) Λειτουργία: Συμβολικό όνομα εντολής ή ψευδοεντολής Διεύθυνση: Σχόλια: - συμβολικό όνομα - ένας αριθμός (-4096..4095, $1310 με MSB 0 ή 1) - σύμβολο * - συνδυασμός των ανωτέρω σε περιορισμένες παραστάσεις Αγνοούνται από το συμβολομεταφραστή
Δήλωση Προσπέλασης στη Μνήμη Άμεση Προσπέλαση στη Μνήμη LDA TAG Δεικτοδοτημένη Προσπέλαση στη Μνήμη LDA,I TAG Έμμεση Προσπέλαση στη Μνήμη LDA (TAG) Έμμεση και Δεικτοδοτημένη Προσπέλαση στη Μνήμη LDA,I (TAG)
Συμβολική Γλώσσα TRN Είδη εντολών του TRN (32 εντολές): Εντολές μεταφοράς Αριθμητικές λογικές εντολές Εντολές άλματος Εντολές ολίσθησης Εντολές εισόδου εξόδου Άλλες εντολές
Εντολές Μεταφοράς LDA T A M[T] Το περιεχόμενο της διεύθυνσης T μεταφέρεται στον καταχωρητή A LDX T X M[T] Το περιεχόμενο της διεύθυνσης T μεταφέρεται στον καταχωρητή X LDI T I M[T] Το περιεχόμενο της διεύθυνσης T (τα bits 0 έως 12) μεταφέρεται στον κατάχωρητή I
Εντολές Μεταφοράς STA T M[T] A Το περιεχόμενο του A αποθηκεύεται στην θέση T της μνήμης STX T M[T] X Το περιεχόμενο του X αποθηκεύεται στην θέση T STI T M[T] I Το περιεχόμενο του I αποθηκεύεται στην θέση T της μνήμης με επέκταση προσήμου.
Εντολές Μεταφοράς ENA N A AP Το περιεχόμενο του A γίνεται ίσο με τον αριθμό που υπάρχει στο πεδίο διεύθυνσης της εντολής με επέκταση προσήμου*. ΕΝΙ N Ι ΑP Το περιεχόμενο του I γίνεται ίσο με τον αριθμό που υπάρχει στο πεδίο διεύθυνσης της εντολής.
Αριθμητικές και Λογικές INA A A + 1 Αυξάνεται το περιεχόμενο του A κατά μία μονάδα INX X X + 1 Αυξάνεται το περιεχόμενο του Χ κατά μια μονάδα. DCA Α Α 1 Μειώνεται το περιεχόμενο το Α κατά μια μονάδα DCI I I 1 Μειώνεται το περιεχόμενο του Ι ADA Τ A A + M[T] Το περιεχόμενο της θέσης μνήμης T προστίθεται στον A και το αποτέλεσμα οδηγείται στον A SUB Τ A A M[T] Το περιεχόμενο της θέσης μνήμης T αφαιρείται από τον A και το αποτέλεσμα οδηγείται στον A
Αριθμητικές και Λογικές AND Τ A A ^ M[T] Εκτελείται το λογικό γινόμενο (AND) μεταξύ των αντίστοιχων bits του A και της θέσης μνήμης T, το δε αποτέλεσμα οδηγείται στον A ORA Τ A A v M[T] Ομοίως εκτελείται το λογικό άθροισμα XOR Τ A A M[T] Ομοίως εκτελείται η αποκλειστική διάζευξη CMA A A Εκτελείται το συμπλήρωμα ως προς ένα του A, δηλαδή τα bits με τιμή 1 γίνονται 0 και αντιστρόφως
Εντολές Άλματος JMP Τ PC T Ο μετρητής προγράμματος γίνεται ίσος με T οπότε η επόμενη εντολή που θα εκτελεσθεί είναι η T (άλμα) JPN Τ PC T if A<0 Άλμα αν το περιεχόμενο του Α είναι αρνητικό JAG Τ PC T if A>0 Άλμα αν το περιεχόμενο του Α είναι θετικό JPZ Τ PC T if A=0 Άλμα αν το περιεχόμενο του Α είναι 0, Οι JPN, JAG και JPZ είναι ορθές μόνο μετά από κάποια πράξη με τον Α.
Εντολές Άλματος JPO Τ PC T if V=1 (overflow) Ο μετρητής προγράμματος γίνεται ίσος με T μόνον όταν υπάρχει υπερχείλιση. Υπερχείλιση συμβαίνει, όταν το αποτέλεσμα μιας αριθμητικής πράξης είναι λάθος. JSR Τ M[T] PC και PC T + 1 Το περιεχόμενο του μετρητή προγράμματος πρώτα στην θέση T της μνήμης (bits 0 ως 12) και στην συνέχεια γίνεται ίσο με T+1. Χρήσιμη εντολή για την εκτέλεση υποπρογραμμάτων. JIG Τ PC T if I > 0 Ο μετρητής προγράμματος γίνεται ίσος με T μόνο εάν το περιεχόμενο του καταχωρητή δείκτη είναι μεγαλύτερο του μηδενός
Εντολές Ολίσθησης SHA Ν Το περιεχόμενο του A ολισθαίνει προς τα αριστερά κατά μία θέση εάν το περιεχόμενο του τμήματος διεύθυνσης (bits 0 έως 12) είναι ένας οποιοσδήποτε θετικός αριθμός, διαφορετικά το περιεχόμενο του A ολισθαίνει κατά μία θέση προς τα δεξιά. Τα ακραία bits του A συμπληρώνονται με μηδενικά. Shift A αριστερά, if AP > 0 else Shift A δεξιά SHX Ν Ομοίως για τον καταχωρητή Χ SAX Ν Ομοίως (ολίσθηση) για τους Α και Χ ταυτόχρονα σαν ένας καταχωρητής.
Εντολές Εισόδου - Εξόδου ΙΝP Τ A (δεδομένα θύρας εισόδου) Το περιεχόμενο του καταχωρητή A γίνεται ίσο με το περιεχόμενο της θύρας εισόδου T (0-7) OUT Τ (δεδομένα θύρας εξόδου) Α Το περιεχόμενο του καταχωρητή A μεταφέρεται στην θύρα εξόδου T (8-15) Άλλες Εντολές ΗLT ΝΟP Διακοπή λειτουργίας Καμία λειτουργία
Ψευδοεντολές Καθοδηγούν τον συμβολομεταφραστή στο στάδιο της μετάφρασης. Στην αρχή του προγράμματος ΠΡΙΝ την πρώτη εκτελέσιμη εντολή. Στο τέλος του προγράμματος. Ψευδοεντολή NAM Έναρξη και ονομασία (6 χαρακτ.) προγράμματος. Ψευδοεντολές ENT και ΕΧΤ Εάν ένα πρόγραμμα P1 αναφέρεται σε διευθύνσεις ΑDD1, ADD2 ενός προγράμματος P2, τότε αυτό πρέπει να δηλωθεί στο P1 ως: EXT ΑDD1, ADD2 και στο πρόγραμμα P2 ως: ΕΝΤ ADD1, ADD2
Ψευδοεντολές Ψευδοεντολή CON Μορφή LOC: CON e1, e2, Αποθηκεύει e1 στη διεύθυνση LOC, e2 στη διεύθυνση LOC+1 Ψευδοεντολές RES Μορφή LOC: RES n Με την ψευδοεντολή RES n θέσεις μνήμης από τη διεύθυνση LOC και μετά παραμένουν κενές προς χρήση από το πρόγραμμα. Αναφορά σε αυτές (για αποθήκευση/ανάκληση περιεχομένου) γίνεται μέσω του συμβολικού ονόματος LOC.
Ψευδοεντολές Ψευδοεντολή ORG Moρφή ORG C όπου C αριθμητική διεύθυνση που προσδιορίζει το αρχικό σημείο των εντολών που ακολουθούν στη μνήμη. Ψευδοεντολή END Δηλώνει τέλος του προγράμματος
Ένα Απλό Πρόγραμμα Να γραφεί πρόγραμμα το οποίο προσθέτει δύο αριθμούς που είναι αποθηκευμένοι στη μνήμη και αποθηκεύει το αποτέλεσμα στην επόμενη των δύο αριθμών θέση. NAM ADD2 ORG 0 LDA N1 ADA N2 STA N2 + 1 HLT N1: CON 10 N2: CON 20 RES 1 END
Παραλλαγή Να γραφεί πρόγραμμα το οποίο προσθέτει 8 αριθμούς που είναι αποθηκευμένοι στη μνήμη και αποθηκεύει το αποτέλεσμα στην επόμενη των 8 αριθμών θέση. NAM ADDN ORG 0 ENA 0 ENI 8 LOOP: DCI ADA,I TAB JIG LOOP STA TAB + 8 HLT TAB: CON 1,2,3,4,5,6,7,8 RES 1 END
Αντιγραφή Μνήμης Να γραφεί πρόγραμμα το οποίο αντιγράφει 8 θέσεις μνήμης, από την συμβολική θέση CP και πέρα, στις θέσεις που ξεκινούν από τη θέση DEST. LOOP: NAM MEMORY ORG 0 ENI 8 DCI LDA,I CP STA,I DEST JIG LOOP HLT CP: CON 10, 20, 30, 40, 50, 60, 70, 80 DEST: RES 10 END
Αντιγραφή Μνήμης σε μια Διεύθυνση Να γραφεί πρόγραμμα το οποίο αντιγράφει 3 θέσεις μνήμης, από την συμβολική θέση CP και πέρα, στις θέσεις που τελειώνουν στη διεύθυνση που είναι αποθηκευμένη στη θέση DEST. LOOP: NAM MEMORY ORG 0 ENI 3 DCI LDA,I CP STA (DEST) LDA DEST DCA STA DEST JIG LOOP HLT CP: CON 10, 20, 30 DEST: CON 32 END
If-Then Δομή Να γραφεί πρόγραμμα το οποίο αντιστοιχεί στο ακόλουθο. GRT = 0 if (A >= B) then GRT = 1 RESULT = A + B Τα Α, Β, GRT και RESULT είναι θέσεις μνήμης. NAM ADDI: IFTHEN ORG 0 ENA 0 STA GRT LDA A SUB B JPN ADDI ENA 1 STA GRT LDA A ADA B STA RESULT HLT A: CON 5 B: CON 10 GRT: RES 1 RESULT: RES 1 END
If-then Δομή με με συνθήκη AND Να γραφεί πρόγραμμα το οποίο αντιστοιχεί στο ακόλουθο. GRT = 0 if (A >= B) AND (A >0) then GRT = 1 RESULT = A + B Τα Α, Β, GRT και RESULT είναι θέσεις μνήμης.
If-then Δομή με συνθήκη AND NAM ADDI: IFTHEN ORG 0 ENA 0 STA GRT LDA A SUB B JPN ADDI ADA B JPN ADDI JPZ ADDI ENA 1 STA GRT LDA A ADA B STA RESULT HLT A: CON 15 B: CON 10 GRT: RES 1 RESULT: RES 1 END
If-then-else Δομή Υλοποίηση του ακόλουθου κώδικα στη συμβολική γλώσσα του TRN. result = 0; if ( input == 5) result = 10; else result = 20;
Υλοποίηση If-Then-else NAM TEST ORG 0 INPUT: CON 3 (Τιμή μεταβλητής INPUT) FIVE: CON 5 (Σταθερά FIVE για σύγκριση) RESULT: RES 1 (Δέσμευση θέσης για RESULT) LDA INPUT ( A = 3) SUB FIVE JPZ EQUAL ENA 20 ( INPUT! = 5) STA RESULT ( RESULT = 20) JMP STOP EQUAL: ENA 10 ( INPUT == 5) STA RESULT (RESULT = 10) STOP: HLT END
Δομή Επανάληψης FOR Υλοποίηση του βρόχου A = 0; for( i = n; i > 0; i --) A = A + i ; στη συμβολική γλώσσα του TRN
Δομή Επανάληψης FOR NAM VROXOS ORG 0 N: CON 5 (Τιμή μεταβλητής n) INDX: RES 1 (Δέσμευση θέσης για το i) SUM: RES 1 (Δέσμευση θέσης για αποτελ) LDI N ( Ι = n) STI INDX ( i = n) ENA 0 (A = 0) LOOP: ADA INDX ( A = A + i) DCI ( Ι = Ι 1) STI INDX ( i = Ι ) JIG LOOP (if i>0 επανάληψη) STA SUM ( SUM = A) HLT END
Υποπρογράμματα Κυρίως πρόγραμμα Υποπρόγραμμα EXT TAG ENT TAG. TAG: RES 1.. AD:JSR ΤΑG. ENA NUM JMP (TAG)... Με την εντολή JSR TAG : [TAG] AD+1 PC TAG + 1
Ένα απλό πρόγραμμα III Υλοποίηση του κώδικα x = 5; y = 2* x; z = 2 * y; στη συμβολική γλώσσα του TRN, με χρήση υπορρουτίνας που υπολογίζει το διπλάσιο ενός αριθμού, δηλαδή x = 5; y = double(x); z = double(y);
Υποπρογράμματα ΙΙΙ Κυρίως πρόγραμμα Υποπρόγραμμα ΝΑΜ ΜΑΙΝ ΝΑΜ DOUBLE EXT TAG ENT TAG ORG 0 ORG 20 X: CON 5 TAG: RES 1 Y: RES 1 SHA 1 (ολίσθ. του Α αριστ) Z: RES 1 JMP (TAG) LDA X END JSR ΤΑG STA Y JSR TAG STA Z HLT END
Απεικόνιση της μνήμης Συμβ.Διευθ. Περιεχόμενο Διευθ Χ Υ Ζ 5 Reserved Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT 0 1 2 3 4 5 6 7 8 9 Συμβ.Διευθ. Περιεχόμενο Διευθ ΤΑG Reserved SHA 1 JMP (TAG) 20 21 22 23 24 25 26 27 28 29
Απεικόνιση της μνήμης Συμβ.Διευθ. Περιεχόμενο Διευθ Χ Υ Ζ 5 Reserved Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT 0 1 2 3 4 5 6 7 8 9 Συμβ.Διευθ. Περιεχόμενο Διευθ ΤΑG 5 SHA 1 JMP (TAG) 20 21 22 23 24 25 26 27 28 29
Απεικόνιση της μνήμης Συμβ.Διευθ. Περιεχόμενο Διευθ Χ Υ Ζ 5 Reserved Reserved LDA X JSR TAG STA Y JSR TAG STA Z HLT 0 1 2 3 4 5 6 7 8 9 Συμβ.Διευθ. Περιεχόμενο Διευθ ΤΑG 7 SHA 1 JMP (TAG) 20 21 22 23 24 25 26 27 28 29
Ο υπολογιστής TRN Καταχωρητές Μορφή Εντολών Ρεπερτόριο εντολών Παραδείγματα Προγραμμάτων