ENDP
Esempio 1 – Procedura alfa
PROC alfa
ADD R1, R0, R0
azzera_alfa:
SB BUF_IN(R1), R0
ADDI R1, R1, 1
SEQI R2, R1, 1024
BEQZ R2, azzera_alfa
RET
ENDP
Esempio 2 – Procedura beta
PROC beta
ADDI R1, R0, 1024
azzera_beta:
SUBI R1, R1, 1
SB BUF_IN(R1), R0
BNEZ R1, azzera_beta
RET
ENDP
Salvataggio e ripristino del contesto
Per garantire la correttezza nell’annidamento delle procedure, è necessario salvare i registri
usati nello stack, e ripristinarli prima del RET.
Esempio con salvataggio/ripristino
PROC alfa
PUSH R1
PUSH R2
ADD R1, R0, R0
azzera_alfa:
SB BUF_IN(R1), R0
ADDI R1, R1, 1
SEQI R2, R1, 1024
BEQZ R2, azzera_alfa
POP R2
POP R1
RET
ENDP
Conclusione
Con l’introduzione delle istruzioni e il DLX è in grado di gestire
PUSH, POP, CALL, CALLR RET,
chiamate annidate a procedura e di salvare il contesto di esecuzione nel modo più classico e
sicuro, rendendo possibile l’implementazione di strutture di programma più complesse come
funzioni ricorsive, gestione di interrupt, e salti condizionati.
Dispositivi di Memoria
Contesto generale
Nel contesto dell’architettura dei calcolatori, i dispositivi di memoria rivestono un ruolo cruciale
accanto a CPU e interfacce di I/O. La memoria è lo spazio in cui risiedono i dati e le istruzioni del
programma in esecuzione. Essa viene vista dalla CPU come un vettore di celle numerate attraverso
un sistema di indirizzamento.
Il bus di sistema
La CPU comunica con memoria e periferiche tramite un bus di sistema, suddiviso in tre
componenti:
• Bus dati: trasporta dati e istruzioni. È bidirezionale e largo tipicamente 8, 16, 32 o 64 bit.
• Bus indirizzi: unidirezionale, trasporta gli indirizzi di memoria. Ogni linea rappresenta un
bit dell’indirizzo.
• Bus comandi: segnali di controllo che definiscono l’operazione (es. lettura o scrittura). I
principali comandi sono:
• Memory Read Command
MRDC#:
• Memory Write Command
MWRC#:
• I/O Read Command
IORDC#:
• I/O Write Command
IOWRC#:
Spazio di indirizzamento
La memoria principale è modellata come un vettore dove n è il numero di bit
M[0 .. 2ⁿ - 1]
del bus indirizzi. Ogni cella rappresenta un byte (8 bit). Alcuni esempi di architetture:
• 8085 → 64 KB (16 bit indirizzo)
• 8086 → 1 MB (20 bit indirizzo)
• DLX → 4 GB (32 bit indirizzo)
Gli indirizzi vengono spesso rappresentati in esadecimale, dove ogni cifra equivale a 4
bit.
I/O mapping
I dispositivi di I/O possono essere:
• Memory-mapped: condividono lo spazio con la memoria
• Isolated I/O: hanno uno spazio di indirizzamento separato (tipico di architetture Intel)
Lo spazio I/O è solitamente più piccolo. Ad esempio, nei sistemi Intel a 16/32 bit è di 64 KB.
Mappatura dei dispositivi
Per essere accessibile dal software, un dispositivo deve essere mappato in uno spazio di
indirizzamento, cioè gli viene assegnata una finestra di indirizzi.
Esempio:
• mappato da a (256 byte)
D1 0100H 01FFH
• mappato a (1 byte)
D2 0700H
I dispositivi più grandi (es. RAM, EPROM) hanno finestre molto più ampie.
Caratteristiche ai morsetti dei dispositivi
Ogni dispositivo dispone di:
• A[k-1..0]: indirizzi locali (offset nel chip)
• D[m-1..0]: bus dati
• CS# (Chip Select): attiva il dispositivo
• OE# (Output Enable): abilita l’uscita dei dati (lettura)
• WR# (Write Enable): abilita la scrittura
Questi segnali permettono di accedere correttamente alle celle interne del dispositivo.
Memorie EPROM
Le EPROM (Erasable Programmable Read-Only Memory) sono memorie non volatili:
• Capacità: multipli di 2 (es. 32K, 64K, 128K, …)
• Solo lettura in uso normale
• Richiedono temporizzazioni ben definite:
• Chip Enable Time
Tce:
• Access Time
Tacc:
• Output Enable Time
Toe:
Esempio di EPROM: 27C256 da 32K x 8
Le ROM
Una ROM 2K × 8 è composta da:
• Decoder di indirizzo
• Matrice di celle memorizzate (fuse o memorie permanenti)
• Interfaccia con CE#, OE#, BD[7..0]
Serve per contenere firmware o codici di boot.
Temporizzazioni nelle memorie
Durante una lettura, la CPU genera:
• (indirizzo)
BA[31..0] = PC
• (comando)
MEMRDC#
• In risposta, il dato compare su entro un tempo sufficiente a rispettare il
BD[31..0] setup
prima del clock successivo.
time
A seconda della velocità della memoria, può essere necessario inserire stati di wait.
RAM statica (SRAM)
Caratteristiche principali:
• Organizzata in matrice di latch (flip-flop CD) → non serve refresh
• Capacità minore rispetto alle DRAM
• Utilizzata nelle cache
Interfaccia della SRAM:
• indirizzo
A[n-1..0]:
• dati
D[m-1..0]:
• segnali di controllo
CE#, OE#, WE#:
Lettura SRAM:
Se e il contenuto della riga viene portato su
CE#=0 OE#=0, D[m-1..0]
crittura SRAM:
Se e il contenuto su viene scritto nella riga selezionata
CE#=0 WE#=0, D[m-1..0]
Cella di RAM statica
Ogni cella contiene un latch che memorizza un singolo bit.
Una riga contiene m bit → ogni operazione legge/scrive l’intera riga contemporaneamente.
SRAM vs DRAM
Caratteristica SRAM DRAM
Transistor per bit 4–6 1
Refresh No Sì
Capacità Più piccola Più grande
Velocità Più veloce (es. 10ns) Più lenta (es. 75ns)
Uso tipico Cache Memoria principale
Costo per bit Alto Basso
Conclusione
La gestione della memoria nei calcolatori moderni prevede una mappatura precisa degli spazi di
indirizzamento, l’uso combinato di ROM, EPROM, SRAM, DRAM, e un’interfaccia corretta con
la CPU tramite i bus. Ogni tipo di memoria ha specifici tempi di accesso, segnali di controllo e
campi d’impiego ben distinti.
Mapping
Introduzione
Il mapping dei dispositivi è un concetto fondamentale per comprendere come i dispositivi fisici
(memorie, periferiche I/O, ecc.) vengano integrati all'interno dello spazio di indirizzamento del
processore. Questo processo prevede l'assegnazione di una porzione dello spazio di indirizzi a
ciascun dispositivo, rispettando alcune condizioni e logiche di decodifica.
Ipotesi di Lavoro
Per semplicità, si considera il caso in cui:
• ogni indirizzo rappresenta 1 byte;
• i dispositivi hanno porta dati da 8 bit;
• il bus dati è a 8 bit.
Con queste ipotesi, valgono tre condizioni importanti:
1. La dimensione della finestra di indirizzi per ogni dispositivo è una potenza di 2;
2. Gli indirizzi sono contigui;
3. L'indirizzo iniziale della finestra è un multiplo della sua dimensione (condizione di
allineamento).
Condizione di Allineamento
Un dispositivo di n = 2^k byte è allineato se il suo indirizzo iniziale A è un multiplo di n:
A mod 2k=0A \bmod 2^k = 0
Esempi:
• 2 byte: allineato se indirizzo pari;
• 8 byte: indirizzo termina con 000 (3 zeri binari);
• 64 KB: l'indirizzo esadecimale termina con quattro zeri (0000H).
Rappresentazione degli Indirizzi
Supponendo un bus di indirizzi da 20 bit (1MB), un dispositivo di 2^k byte sarà mappato da un
indirizzo:
A=α##(0)kA = \alpha \#\# (0)_k
Dove:
• α\alpha seleziona la finestra (20-k bit);
• ii è l'offset interno al dispositivo (k bit);
Quindi:
Ai=α##iA_i = \alpha \#\# i
Esempi di Mappatura
1. RAM da 128KB mappata a 40000H:
• Campo α\alpha: individua la finestra da 128KB;
• Campo ii: offset nel chip.
2. Dispositivo I/O da 16 byte a 1020H:
• Campo α\alpha: identifica la finestra di 16 byte;
• Campo ii: offset all'interno del dispositivo.
Decodifica Completa
In questo caso, tutti i bit dell'indirizzo sono usati per individuare in modo univoco il dispositivo e
l'offset:
• α\alpha: decodificato da decoder esterni;
• ii: decodificato da decoder interni al chip.
Regola Generale:
• I bit meno significativi (BA[k-1..0]) vanno al chip;
• I bit più significativi (BA[m-1..k]) formano un mintermine per il CS* (chip select).
Decodifica Semplificata (o Parziale)
Per ridurre la complessità della logica di decodifica, si possono trascurare alcuni bit dell'indirizzo
nel CS*.
Effetti:
• Il CS diventa più semplice da implementare;
• Il dispositivo viene replicato in più finestre dello spazio di indirizzamento.
Se si ignorano jj bit, il dispositivo viene mappato in 2j2^j finestre contigue o non, a seconda della
posizione dei bit ignorati.
Esempi di Decodifica
1. Se ignoriamo BA4 per un dispositivo da 16B a 1020H, viene mappato anche a 1030H;
2. Se ignoriamo BA11, si ottiene una replica non contigua (es. 1020H e 1820H).
Tabella di confronto per vari chip e relativi CS:
• RAM1: /BA17 /BA16
• RAM2: /BA17 BA16
• EPROM1: BA19 BA18 BA17 BA16
Esempi di Mapping e Interfacciamento
• Mappatura di chip da 64KB:
• RAM1: 00000H (indice 0)
• RAM2: 10000H (indice 1)
• EPROM1: F0000H (indice F)
• Espressioni dei CS con decodifica completa:
⋅ ⋅ ⋅
CS_RAM1=/BA19 /BA18 /BA17 /BA16CS\_RAM1 = /BA19 \cdot /BA18 \cdot /BA17 \cdot
/BA16
Errori con Decodifica Semplificata
Quando due dispositivi finiscono per condividere una finestra, la CPU attiva più dispositivi
contemporaneamente, causando conflitti:
• La EPROM2 si attiva quando la CPU accede alla RAM3;
• RAM1 si attiva anche quando si accede a RAM2.
Esempi con Dispositivi di I/O
Spesso mappati in finestre piccole (es. 16B), si utilizzano espressioni semplificate:
Dispositivo Indirizzo CS (semplificata)
IO1 1000H /BA15 /BA13 /BA4
IO2 1010H BA4
IO3 3000H /BA14 BA13
IO4 8000H /BA12
IO5 F000H BA14
Ogni configurazione è pensata per identificare univocamente ciascun dispositivo.
Conclusioni
Il mapping dei dispositivi e la logica di decodifica sono elementi essenziali per:
• garantire il corretto indirizzamento delle risorse hardware;
• ottimizzare lo spazio di indirizzamento;
• bilanciare costo e complessità tra decodifica completa e semplificata.
La decodifica completa garantisce un mapping preciso ma richiede più risorse hardware, mentre la
decodifica semplificata riduce la complessità a discapito della precisione e dell'efficienza dell'uso
dello spazio di indirizzamento.
Gestione dell
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Calcolatori elettronici - parziale
-
Appunti del corso di Calcolatori elettronici
-
Appunti dell'intero corso di Calcolatori elettronici
-
Appunti Calcolatori Elettronici