Title: ΠΡΟΣΟΧΗ!!!: BUG ΣΤΗ ΜΙΚΡΟΜΝΗΜΗ ΤΟΥ TRN Post by: sm on May 23, 2006, 11:36:30 am Υπάρχει ένα λογικό σφάλμα στη μνήμη ελέγχου του TRN η οποία προκαλεί το ακόλουθο πρόβλημα: Εάν προσπαθήσουμε να κάνουμε JMP με δεικτροδότηση ο TRN απλά θα αγνοήσει την δεικτοδότηση.
Το επισυναπτόμενο αρχείο είναι ένα πρόγραμμα που βοηθάει στην διαπίστωση αυτού του προβλήματος. Εάν το τρέξουμε έχοντας τον TRN στο mode της απλής εκτέλεσης εντολών (όπου η μικρομνήμη αγνοείται) το άλμα θα γίνει κανονικά με δεικτοδότηση και το πρόγραμμα θα τερματίσει με τον PC στην τιμή 16. Εάν όμως το τρέξουμε με τον TRN στο mode της καλωδιωμένης λογικής ή της μικροπρογραμματιζόμενης λογικής το άλμα θα γίνει χωρίς δεικτοδότηση και το πρόγραμμα θα τερματίσει με τον PC στην τιμή 11. Γιατί συμβαίνει αυτό το σφάλμα; Μπορούμε να διαπιστώσουμε τον λόγο εάν δούμε το μικροπρόγραμμα που υλοποιεί την εντολή JMP. Αυτό ξεκινάει με τις δύο συνηθισμένες μικροεντολές για έλεγχο δεικτοδοτημένης και έμεσης προσπέλασης μνήμης και την εκτέλεση των απαραίτητων χειρισμών. Εν συνεχεία τοποθετεί το περιεχόμενο του BR στον PC. Όταν καλείται η JMP από την κεντρική μνήμη μέσω της μικρορουτίνας FETCH, τοποθετείται πρώτα στον BR. Μετα από τον BR μεταφέρεται στον IR και ταυτόχρονα το BR(AP) τοποθετείται στον AR. O BR λοιπόν έχει προς ώρας το ίδιο περιεχόμενο με τον IR και ο AR έχει το IR(AP). Εάν έχουμε άμεση προσπέλαση το BR(AP) τοποθετείται στον PC και γίνεται FETCH της επόμενης εντολής. (Πετυχημένο άλμα!) Εάν έχουμε δεικτοδοτημένη και έμεση προσπέλαση πρώτα προστήθεται στον AR ο I και το αποτέλεσμα αποθηκεύτεται στον AR. Εν συνεχεία, αφού έχουμε και έμεση προπέλαση το άλμα θα γίνει όχι στην διεύθυσνη η οποία προέκυψε από το άθροισμα αλλά στην διεύθυνση η οποία είναι αποθηκευμένη στη θέση μνήμης με διεύθυνση την τιμή που προέκυψε από το άθροιμα. Κάνοντας λοιπόν ένα READ, η διεύθυνση αυτή τοποθετείται στον BR. Μετά ο BR μεταφέρεται στον PC και ακολουθεί FETCH της επόμενης εντολής. (Πετυχημένο άλμα!) Εάν έχουμε τώρα δεικτοδοτημένη προσπέλαση, καλείται κανονικά η μικρορουτίνα INDEX η οποία, όπως και προηγουμένως, προσθέτει τον I στον AR και αποθηκεύει το αποτέλεσμα στον AR. Έτσι λοιπόν ο AR περιέχει την διεύθυνση της θέσης μνήμης στην οποία πρέπει να γίνει το άλμα. Στη συνέχει όμως το μικροπρόγραμμα τοποθετει το περιεχόμενο του BR, το οποίο δεν έχει προσαυξηθεί κατά I, στον PC με αποτέλεσμα να γίνεται άλμα αλλά χωρίς δεικτοδότηση. (Μη-πετυχημένο άλμα!) Δεν το έχω ψάξει αλλά έχω την εντύπωση πως και οι υπόλειπες εντολές άλματος (JIZ, JIG κτλ.) θα πρέπει να εμφανίζουν το αντίστοιχο πρόβλημα καθώς έχουν προγραμματιστεί με το ίδιο σκεπτικό. Υπήρξε σχετική ενημέρωση του καθηγητή κ. Χασάπη ο οποίος και συμφώνησε πως αποτελεί πρόβλημα του TRN. Επίσης ανέφερε ότι το συγκεκριμένο πρόβλημα δεν πρέπει να μας απασχολήσει για το εργαστήριο ή για τις εξετάσεις και πως δεν θα έπρεπε να χρησιμοποιήσουμε αυτή τη λειτουργεία στα προγράμματά μας, μιας και διαπιστώσαμε πως λειτουργεί εσφαλμένα. Title: Re: ΠΡΟΣΟΧΗ!!!: BUG ΣΤΗ ΜΙΚΡΟΜΝΗΜΗ ΤΟΥ TRN Post by: Verminoz on May 23, 2006, 12:26:34 pm Αίσχος είναι αυτός ο TRN. Καχεκτικός...ελπιζω κάποια μέρα να αναβαθμιστεί λίγο αυτό το αίσχος...
Title: Re: ΠΡΟΣΟΧΗ!!!: BUG ΣΤΗ ΜΙΚΡΟΜΝΗΜΗ ΤΟΥ TRN Post by: NetBuster on May 23, 2006, 12:48:00 pm Eχει ηδη αναβαθμιστει Verminoz..
Το ΕΜΠ χρησιμοποιει τον TRN+ με εκτεταμενες αλλαγες(pipelines νομιζω κτλ)... Θα μπορουσε ομως να δημιουργηθει εμας νεος "υπολογιστης" απο το Τμημα. Τι στο καλο την εχουμε τη γνωση? Title: Re: ΠΡΟΣΟΧΗ!!!: BUG ΣΤΗ ΜΙΚΡΟΜΝΗΜΗ ΤΟΥ TRN Post by: Verminoz on May 23, 2006, 12:56:41 pm Eχει ηδη αναβαθμιστει Verminoz.. Το ΕΜΠ χρησιμοποιει τον TRN+ με εκτεταμενες αλλαγες(pipelines νομιζω κτλ)... Θα μπορουσε ομως να δημιουργηθει εμας νεος "υπολογιστης" απο το Τμημα. Τι στο καλο την εχουμε τη γνωση? Τι έχουμε??? :???: :P |