Ο δάσκαλός μου είπε ότι ένας 8086 μικροεπεξεργαστής Intel έχει μια διεύθυνση 16-bit και μια φυσική διεύθυνση 20-bit. Ποια είναι η διαφορά μεταξύ μιας διεύθυνσης και μιας φυσικής διεύθυνσης;


Απάντηση 1:

Αυτό σημαίνει ότι το 8086 οι διευθύνσεις που χρησιμοποιούνται σε προγράμματα (η λογική ή εικονική διεύθυνση όπως την ονομάζετε) είναι 16 bits, αλλά η πραγματική διεύθυνση που στέλνει η 8086 στη μνήμη RAM είναι 20 bits.

Γιατί; Επειδή τα 16 bits = 64 KB του χώρου διευθύνσεων όπου ως 20 bits της διεύθυνσης = 1 MB μνήμης. Έτσι, μπορείτε να απευθύνετε περισσότερη μνήμη από ό, τι είναι δυνατό με μια απλή διεύθυνση 16 bit (16 φορές περισσότερη μνήμη σε αυτή την περίπτωση).

Πως? Ανάκληση του σχήματος κατανομής διευθύνσεων πραγματικού τρόπου. Το 8086, η διεύθυνση αποστέλλεται σε RAM = μητρώο τμήματος * 16 + offset (αντικαταστήστε τον καταχωρητή τμήματος και αντισταθμίστε με cs: ip, ds: si, es: di κλπ)

Επομένως, αν και οι καταχωρητές και οι αντισταθμίσεις τμήματος είναι 16 bit, θα μπορούσαμε να έχουμε μια φυσική διεύθυνση μήκους 20 bits.

(Εάν παρατηρήσετε, ο πολλαπλασιασμός κατά 16 είναι ο ίδιος με την μετατόπιση προς τα αριστερά κατά 4. Μια διεύθυνση 16 bit αριστερά μετατοπισμένη με 4 γίνεται μια διεύθυνση 20 bit (offset δεν έχει προστεθεί ακόμα))


Απάντηση 2:

Ένας από τους πιο σημαντικούς στόχους που οι ηλεκτρολόγοι μηχανικοί πρέπει να δώσουν προσοχή όταν τους λένε να σχεδιάσουν κάτι είναι πόσο θα κοστίσει το πράγμα όταν σχεδιάζεται να κατασκευαστεί και να πωληθεί. Και μερικές φορές αυτό σημαίνει ότι τα δεδομένα και τα λεωφορεία διεύθυνσης σε έναν υπολογιστή έχουν πολυπλεξία για να εξοικονομήσουν χρήματα. Κανονικά θα σκεφτόμασταν ένα δίαυλο διεύθυνσης 20 bit ως έχον 20 ξεχωριστά σύρματα, που το καθένα φέρει ένα bit δεδομένων στο δίαυλο διευθύνσεων. Είναι δυνατό να έχουμε 16 καλώδια να μιλάμε στο δίαυλο διευθύνσεων όταν τα 4 bits υψηλής τάξης ελέγχονται από ένα μητρώο τμήματος. Αυτό έχει ως αποτέλεσμα να υπάρχει μια αρχιτεκτονική μνήμης που είναι 1 megabyte που αντιμετωπίζεται ως 16 τράπεζες των 64kilobytes. Ο δίαυλος διευθύνσεων 16 bit θα επιλέξει διευθύνσεις από 0-64k και θα πρέπει να αλλάξετε τα περιεχόμενα του καταχωρητή επιλογής τράπεζας για να μιλήσετε με επιτυχημένες ομάδες μνήμης 64k μέχρι το όριο των 1 meg. Οι CPU που έχουν λιγότερες γραμμές διευθύνσεων από το μέγεθος μνήμης που υποστηρίζεται συνήθως έχουν καταχωρητές τμήματος έτσι ώστε ο κώδικας kernal ή ο λειτουργικός κώδικας να μπορούν να παρακολουθούν και να αλλάζουν τον κατάλογο επιλογής τράπεζας όπως απαιτείται.

Αυτό δημιουργεί τελικά μια κατάσταση όπου μια δεδομένη διεύθυνση φυσικής μνήμης εντοπίζεται από καταχωρητή τεσσάρων δυαδικών ψηφίων + bus 16 address bit = 20 bit φυσική διεύθυνση για να μιλήσει σε μνήμη 1 megabyte. Ευτυχώς, περάσαμε πολύ από τις ημέρες της δεκαετίας του 1970, όπου οι σχεδιαστές τσιπ δίσταζαν να βάλουν το cpus σε πακέτα με περισσότερους από 40 καρφίτσες, έτσι ώστε να μην χρειάζεται πολυπλεξία λεωφορείων τόσο συχνά.