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 και x86 architecture
Έλεγχος των 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 ;so eax <= 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