Newsgroup: it.comp.hardware.cpu
Titolo: [tecnico] Pc moderni e mmu

Domandina: facendo un po' di teoria sulla gestione della memoria dei pc, 
mi sono imbattuto in sta mmu e mi č venuta la curiositą di capire nei pc 
moderni ndo sta?
Mi verrebbe da pensare nel chipset (+ precisamente nel northbridge) ma 
siccome la teoria dice che č dotata di memoria "velocissima", che 
memoria c'ha? e in che quantitą?
Mi fido di voi, guru :)


Per quello che so il MMU (Memory Managment Unit) è un circuito di gestione
della memoria virtuale che traduce gli indirizzi logici (appartenenti alla
memoria virtuale) in indirizzi fisici (relativi alla memoria centrale, alias
RAM, dove queste informazioni devono essere riportate prima di essere
utilizzate nell'elaborazione).Ad esempio nei istemi basati sul processore
Motorola 68020 la MMU è separata dal processore, ma nella maggior parte dei
processori moderni (ad esempio come nelle cpu Intel) questo componente è
integrato nella CPU. In alcuni sistemi la MMU fornisce l'interfaccia tra
microprocessore e memoria e, in tal caso, le viene demandato il compito di
fungere da multiplatore (multiplexer) d'indirizzi e, nel caso si utilizzi
DRAM (RAM Dinamica) si occupa anche del rinfresco o riginerazione di
quest'ultima.
Ciao.

moderni ndo sta?
la memory management unit?
nei processori.
--
    (iao!!oai)                                    (ICQ: 10860566)
    //.aurizio
[WARNING!: togliete _nessuno_ per rispondere]
    Time may change me
    But I can't trace time

Mi fido di voi, guru :)
Anche se non sono un guru, provo a risponderti io (vediamo se ricordo
qualcosa...). Allora la MMU (Memory Mangagement Unit) dovrebbe una
unità presente nei microprocessori che si occupa della gestione del
systema "memoria virtuale".
Mi spiego un po' meglio. Ogni volta che tu crei un processo (pensa ad
un processo come ad un'applicazione che gira, anche se in realtà nei
sistemi multi-thread la cosa è leggermente diversa) ad esso il sistema
operativo assegna uno spazio d'indizzamenti (dipende sia dal SO che
dalla CPU) flat (lineare) da 4 gigabyte (32 bit) protetto, ma questi
indirizzi sono virtuali. Dico virtuali perche ogni indirizzo virtuale
del processo deve essere tradotto in un indirizzo reale (la memoria
del tuo PC) e per fare ciò esistono diverse tecniche (memoria
segmentata, paginata, mista...) la MMU (se non ricordo male) svolge
questo lavoro. 
Ricorda che se per ipotesi la tua applicazione ha allocato 4 MB
contigui, non è detto che questi fisicamente lo siano (per la storia
della memoria paginata: pagina virtuale (es 8kbyte)-> pagina fisica o
pagina su disco) e non è neppure detto che siano presenti in main
memory (per la storia della memoria del famoso "swap" su disco).
Quindi in definitiva la mmu insieme con il sistema operativo si occupa
di recuperare a partire da un indirizzo virtuale di un processo,
l'indirizzo fisico del dato e nel caso questo non sia presente sulla
memoria centrale lo carica da disco.
Questo è quanto più o meno succede... spero di non aver detto una
cazzata...
Peppe

 quest'ultima.
Sei sicuro di questo ultimo punto?
Hai qualche riferimento?
bye,
-- 
piergiorgio

 nei processori.
Ok, e la "memoria molto veloce" che utilizza cos'è? la cache della cpu?

 ha scritto
nel messaggio news:3CDD1BC9...@nexgo.REMOVE.THIS.de...

Sono abbastanza sicuro che il MMU si occupi anche del rinfresco
della RAM; me l'aveva confermato tempo fa un prof di informatica
che conoscevo...
Per quanto riguarda il fatto che possa fungere da multiplexer l'ho
letto su un libro.
Se comunque hai altre spiegazioni dimmi pure... ;-).
Ciao.


wrote:

Rispondo alla seconda domanda, la cache della CPU è una memoria più
piccola ma caratterizzata in genere da una maggiore velocità.
Nella memoria cache (sfruttando il principio di località spaziale e
temporale dei riferimenti) viene copiata la parte che "serve" della
main memory, in questo modo la CPU (che è molto più veloce della RAM)
non deve aspettare inutilmente per accedere ai dati (ma anche alle
istruzioni visto che si tratta di un'architettura di Von Newman)
La cache della CPU è in genere detta di primo livello ed è organizzata
in configurazione direct-mapped poichè cosi riesce ad ottenere un
sottosistema molto veloce e pure compatto (in termini di circuiti,
poichè più semplice). In genere c'è poi la cache di secondo livello,
meno performante rispetto a quello di primo livello, ed organizzata in
modo differente (associativa ad n-vie, raramente full-associtiva).
In genere si parla di gerarchie di memorie, poichè lavorando in questo
modo si riescono ad ottenere buone prestazioni. 
Se vuoi sapere di + ti consiglio di consultare un buon testo di
architetture HW...
bye bye
Peppe

 Se comunque hai altre spiegazioni dimmi pure... ;-).
Che io sappia la MMU si occupa *solo* della
paginazione della memoria, gestione indirizzi
fisici-virtuali, protezione della memoria,
varie ed eventuali.
La gestione della DRAM, multiplexing & refresh,
e` affidata al DRAM controller, tipicamente
situato nel northbridge, nei PC.
Un pezzo di HW a parte, che potrebbe essere
comunque nella CPU, ma e` logicamente separato
dalla MMU, forse, il tutto, potrebbe essere
incluso in un generico blocco "memory controller"
o "bus controller", che includerebbe, tra l'altro,
anche la gestione della cache.
bye,
-- 
piergiorgio

 Ok, e la "memoria molto veloce" che utilizza cos'è? la cache della cpu?
Di solito le MMU hanno una loro cache
(non quella del processore), che serve
a tenere le informazioni relative alla
mappatura di alcune pagine di memoria
(quante ne stanno in questa cache, appunto).
bye,
-- 
piergiorgio

 Rispondo alla seconda domanda, 
No che non hai risposto :)
la mmu utilizza la cache?
E se si, quale? 1 o 2 livello?

E se si, quale? 1 o 2 livello?
No, utilizza una sua memoria cache, non mi ricordo com'č organizzata
mi pare che per ottenere maggiori prestazioni dovrebbe essere full
associative, non ricordo (dovrei dare una rinfrescatina a queste
nozioni ma sono troppo pigro!)
Peppe

 ha scritto
nel messaggio news:3CDD2377...@nexgo.REMOVE.THIS.de...

Inoltre con la MMU si possono appunto dichiarare cachabili e non particolari
zone di memoria anche modificandone gli attibuti tipo writeback o
writetrought.(se si scrive così..)
Infine mi sento di poter dire definitivamente che la MMU ha anche una
propria cache dove è riposta la TBL ossia la tabella degli indirizzi
recentemente + usati.
Comunque la cache della CPU velocizza anche la MMU facendo anche
quest'ultima utilizzo di dati ed istruzioni.


Beh, allora andrò a dirne quattro al prof che mi ha detto ste storie...;)
Ciao.


La gestione della cache in settori di dati e istruzioni separati è chiamata
anche architettura Harward.
Ciao.

 E se si, quale? 1 o 2 livello?
No, ha una cache tutta sua, indipendente
dalla cache del processore.
Tecnicamente sarebbe una L1, ma, ripeto,
non ha nulla a che vedere con la cache
dell'unita` centrale.
Tanto per fare qualche confronto, la
cache della MMU puo` essere di pochi
byte, 64 o 128, o meglio, poche "entry".
Infatti ogni valore potrebbe non essere
un byte, ma semplicemente una stringa
di bit rappresentanti la famiglia di
indirizzi mappati e le varie proprieta`
(leggibile, scrivibile, etc.).
bye,
-- 
piergiorgio


Questo denominazione non la conoscevo o ricordavo, grazie.
Peppe