Il memory address register (MAR, in italiano registro degli indirizzi di memoria) è un registro interno alla CPU che contiene lindirizzo di memoria della cella a cui la CPU sta per accedere (in lettura o in scrittura). In pratica, il MAR fornisce alla memoria l'indirizzo da porre sulle linee dell'bus degli indirizzi durante un trasferimento dati o istruzioni.
Funzione In una **lettura** da memoria, la CPU carica nel MAR l'indirizzo desiderato e avvia il ciclo di lettura: il dato prelevato viene depositato nel MDR/MBR (memory data/buffer register) e poi passato ai registri/alle unità interne. In una **scrittura**, la CPU carica l'indirizzo nel MAR e il dato nel MDR; la memoria memorizza nel punto indirizzato dal MAR il valore presente nel MDR quando il segnale di scrittura è attivo.
Relazioni con altri registri Nel **ciclo di prelievo dell’istruzione** (fetch), l'indirizzo dell'istruzione successiva contenuto nel PC viene copiato nel MAR, dopodiché il contenuto letto dalla memoria passa nel MDR e quindi nel IR.
Ampiezza e implementazione Il MAR è tipicamente dimensionato per contenere un indirizzo completo dello spazio di indirizzamento; nell’architettura didattica MARIE (4K parole) il MAR è a 12 bit, pari ai bit d’indirizzo necessari per 4K posizioni. Il MAR e il MDR costituiscono l'interfaccia minima fra unità di controllo e memoria; si tratta di strutture **microarchitetturali**: di norma non sono visibili al livello dell’ISA, a differenza di registri architetturali come PC, registri generali, codici di condizione, ecc.
Architetture correlate Nelle architetture di tipo von Neumann lo stesso MAR è usato (in tempi diversi) per indirizzare istruzioni e dati. In alcune implementazioni Harvard esistono registri d’indirizzo separati per il percorso istruzioni e per quello dati (talvolta indicati come instruction address register e data address register). (Concetto didattico; la terminologia varia a seconda della famiglia di processori.)
Terminologia MDR (Memory Data Register) è spesso detto anche MBR (Memory Buffer Register); entrambi indicano il registro che veicola i dati da/verso la memoria, mentre il MAR veicola l’indirizzo.
Note
Voci correlate Memory data register Program counter Instruction register Bus (informatica) Architettura di von Neumann Architettura di Harvard
Altri progetti
Categoria:Terminologia informatica Categoria:Microprocessore