100 likes | 202 Views
Translation Lookaside Buffers. Φροντιστήριο του μαθήματος “ Προηγμένοι Μικροεπεξεργαστές ”. Πως γίνεται η μετάφραση. Τα bits 31:22 μας δείχνουν το offset του σχετικού directory entry μέσα στο Page Directory
E N D
Translation Lookaside Buffers Φροντιστήριο του μαθήματος “Προηγμένοι Μικροεπεξεργαστές”
Πως γίνεται η μετάφραση • Τα bits 31:22 μας δείχνουν το offset του σχετικού directory entry μέσα στο Page Directory • Τα bits 21:12 μας δείχνουν το offset του σχετικού page-table entry μέσα στο Page Table. • Τα bits 11:0 μας δείχνουν το offset της μεταβλητής μέσα στο Page • 3 memory accesses για την προσπέλαση μίας μεταβλητής • Προφανώς δεν γίνεται να κάνουμε την ίδια διαδικασία για κάθε ξεχωριστή μεταβλητή
Translation Lookaside Buffer • Η Λύση: • Μία cache μνήμη που θα αποθηκεύει αντιστοιχίες virtual σε physical διευθύνσεις TLB • Κάθε εγγραφή του TLB περιέχει: • Τα 20 high-order bits της virtual address • Τα 20 high-order bits της αντίστοιχης physical address • 4 control bits • Για pages που η physical address τους βρίσκεται στο TLB Μόνο ένα access
TLB και x86 architecture • Η δομή και οι μέθοδοι ελέγχου του TLB δεν αποτελούν κομμάτι της x86 αρχιτεκτονικής • Σε κάθε διαφορετικό μοντέλο η υλοποίηση μπορεί και συνήθως είναι αρκετά διαφορετική
Έλεγχος των TLB • Τα περιεχόμενα των TLB είναι προσπελάσιμα μέσω των test registers TR6 και TR7 TR7 TR6
Έλεγχος των TLB – TR6 • TR6: • Bit 0: Δηλώνει αν θέλουμε να αναζητήσουμε (1) ή να γράψουμε (0) ένα TLB • Bit 1: Δηλώνει αν θέλουμε να ενεργήσουμε στο instruction (0) ή στο data (1) TLB • Bits 31:12 : Το page που ψάχνουμε να δούμε αν περιέχεται στο TLB ή που θέλουμε να προσθέσουμε TR7 TR6
Έλεγχος των TLB – TR7 • TR7: • Bit 4: Δείχνει αν κατά την αναζήτηση ενός page είχαμε hit στο TLB • Bits 31:12 : • Αναναζητούσαμε και είχαμε hit περιέχουν την physical address που αντιστοιχεί στο page που αναζητήσαμε • Αν γράφουμε ένα TLB θέτουμε εδώ το physical address που θέλουμε να αντιστοιχεί στο page που ορίσαμε στον TR6 TR7 TR6
Έλεγχος των TLB • Μετά τους Pentium οι TR6 και TR7 μετατράπηκαν σε Model Specific Registers που διαβάζονται με την εντολή RDMSR και γράφονται με την εντολή WRMSR • RDMSR: • Διαβάζει τον MSR που καθορίζεται από τον ECX στους καταχωρητές EDX:EAX • WRMSR: • Γράφει τα περιεχόμενα των καταχωρητών EDX:EAX στον MSR που καθορίζεται από τον ΕCX • Ο TR6 χρησιμοποιείται με ECX=8 και ο TR7 με ECX=9
Παράδειγμα ελέγχου του D-TLB next: mov eax,PAGE_NO ;load eax with the page number or eax,01h ;we search for that page or eax,02h ;and we search in the D-TLB mov ecx,08h ;WRMSR refers to TR6 wrmsr ;so TR6 <= eax mov ecx,09h ;RDMSR refers to TR7 rdmsr ;soeax <= TR7 and al,10h ;leave only the hit bit jz miss ;if zero, page not in TLB hit: ;print that page PAGE_NO was found and ;to which physical page frame it corresponds miss: ;print that page PAGE_NO was not found