C1 APPENDICE. SIMULATORE DEGLI INDIRIZZI Permette di svolgere esercizi di traduzione da indirizzi logici a indirizzi fisici. Esempio con tabella delle pagine a 1 livello Tabella delle pagine a 1 livello Dimensione delle pagine: 4096 byte Indirizzo virtuale (logico): 30 bit Indirizzo fisico: 23 bit Righe nella TLB: 16 Dimensione entry tabella: 4 byte Passo 1 + 2: segmentazione indirizzo logico + segmentazione indirizzo fisico Occhio che il termine segmentazione non ha nulla a vedere col meccanismo della segmentazione: è necessario solo spezzare l indirizzo per distinguere offset e numero di pagina/frame. Siccome la dimensione della pagina è 4096 byte, i 12 bit a destra di indirizzo logico e fisico sono riservati all offset. I restanti indicheranno rispettivamente il numero di pagina virtuale e il numero di pagina fisica (frame). Si avrà quindi Logical Address 18 12 e Physical Address 11 12. Passo 3: aggiunta dell offset nell indirizzo fisico Si seleziona l offset dell indirizzo logico con il tasto Select e si incolla nell indirizzo fisico con il tasto Paste. Questo è il lavoro che fa il microprocessore quando prende i bit bassi dell indirizzo logico e li sposta sull indirizzo fisico.
Si notino gli offset uguali tra indirizzo logico e fisico. Passo 4: segmentazione della TLB La TLB è da segmentare in modo da identificare il page number logico e il frame number fisico. Siccome l indirizzo logico determinato al passo 1+2 era composto da 18 bit identificanti la pagina, dividiamo in corrispondenza del 18 in modo da ottenere Page bits: 18. La controprova è data dal fatto che i Frame bits sono 11. Questo è in linea con quanto fatto al passo 1+2, dove la pagina fisica (frame) è identificata nell indirizzo fisico dai primi 11 bit. Passo 5: selezione dell indirizzo di pagina logico Si seleziona il numero di pagina dell indirizzo logico con il tasto Select. Questo indirizzo comparirà nella clipboard della TLB. Passo 6: ricerca nella TLB In questo esempio l operazione di lookup (da attivare premendo sull apposito tasto) ha successo. Otteniamo così i frame bits (00001111011) corrispondenti e possiamo saltare le fasi 7 e 8.
Passo 7: analisi della tabella delle pagine contenuta in memoria In questo particolare esempio le fasi 7 e 8 sono saltabili, perché la fase 6 ha generato un TLB hit. Questo però non sempre è vero. In quest altro esempio la TLB non è proprio presente, quindi bisogna analizzare la tabella delle pagine. Nel caso in cui ci sia bisogno di analizzare la tabella delle pagine contenuta in memoria, clicchiamo su Memory View. Passo 8: ritrovamento della entry contenuta nella tabella delle pagine Selezioniamo poi i Page bits dall indirizzo logico e, una volta isolati nella clipboard, clicchiamo su Entry. Verrà evidenziata la entry in memoria. Bisogna fare attenzione al bit di validità v: se questo vale 0, come nell esempio riportato, l indirizzo del frame non è vali - do e quindi possiamo identificare un page fault.
Se invece il bit vale 1, il frame corrispondente alla pagina è contenuto in memoria fisica. Passo 9: aggiunta del frame number nell indirizzo fisico Se la fase 6 o la fase 8 hanno restituito un frame number valido, questo va incollato nella parte relativa al segmento dell indirizzo fisico. Passo 10: verdetto finale Se sono riuscito a trovare correttamente un indirizzo fisico posso rispondere Found Physical Address. Se invece le fasi 6, 7 e 8 non hanno restituito un numero di frame valido, clicco su Page Fault. Un output mi dirà se ho fatto cazzate o l ho sfangata con successo.
Esempio con tabella delle pagine a 2 livelli Tabella delle pagine a 2 livelli Dimensione delle pagine: 4096 byte Tabella delle pagine di L2: 512 byte Indirizzo virtuale (logico): 30 bit Indirizzo fisico: 23 bit Righe nella TLB: 16 Dimensione entry tabella: 4 byte Passo 1 + 2: segmentazione indirizzo logico + segmentazione indirizzo fisico Uguale a prima. Attenzione: anche se la paginazione è a due livelli, conviene prima di tutto spezzare l indirizzo fisico in sole due parti. Otteniamo Logical Address 18 12 e Physical Address 11 12. Passo 3: aggiunta dell offset nell indirizzo fisico Identico a prima. Passo 4: segmentazione della TLB Identico a prima (in questo particolare esempio, Page bits 18 e Frame bits 11). Nelle fasi 1+2 è convenuto dividere l indirizzo in sole due parti (e non in tre) in modo da ricondursi al caso precedente e fare tutto con semplicità in caso di TLB hit. Passo 5: selezione dell indirizzo di pagina logico Identico a prima. Passo 6: ricerca nella TLB Identico a prima. Passo 7: visualizzazione della tabella delle pagine di primo livello Nel caso in cui ci sia bisogno di analizzare la tabella delle pagine contenuta in memoria, clicchiamo su Memory View. E importante che l analisi sia fatta sulla tabella delle pagine di primo livello.
Passo 8: ulteriore passo di segmentazione A seconda della dimensione della tabella delle pagine di secondo livello, spezziamo ulteriormente l indirizzo logico. Nell esempio, la tabella di L2 è grande 512 byte, quindi è completamente indirizzata usando 9 bit. Otteniamo Logical Address 9 9 12. Passo 9: selezione del numero di pagina nella page table di primo livello Selezioniamo (nell esempio) i primi 9 bit dell indirizzo logico, che vengono isolati nella clipboard. Passo 10: ricerca della entry nella page table di primo livello Una volta selezionati i bit per indirizzare la tabella delle pagine di primo livello, clicchiamo su Entry. Se il bit di validità è 0 possiamo dichiarare l esercizio concluso, marcandolo come Invalid Reference. Se, come nel nostro caso, il bit di validità è pari a 1 possiamo procedere.
Passo 11 + 12: visualizzazione della tabella delle pagine di secondo livello con successiva impostazione del frame di partenza Cliccando su Second visualizziamo la tabella delle pagine di secondo livello, grazie alla quale possiamo trovare l indirizzo del frame. In seguito clicchiamo su Frame. Passo 13: selezione del numero di pagina nella page table di secondo livello Selezioniamo (nell esempio) i secondi 9 bit dell indirizzo logico, che vengono isolati nella clipboard. Passo 14: ricerca della entry nella page table di secondo livello Una volta selezionati i bit per indirizzare la tabella delle pagine di secondo livello, clicchiamo su Entry. Se il bit di validità è 0 possiamo dichiarare l esercizio concluso, marcandolo come Page Fault. Altrimenti, come in questo caso, l indirizzo del frame fisico viene copiato nella clipboard.
Passo 15: aggiunta del numero di frame nell indirizzo fisico Già analizzato. Passo 16: verdetto finale Come sopra. ***