Calcolatori elettronici: mapping e decodifica
I seguenti appunti seguono il modello del corso di Calcolatori Elettronici T della laurea triennale in Ingegneria Informatica dell’università di Bologna. La struttura è volutamente a forma di domande poiché ciò permette una migliore focalizzazione sui contenuti e dà una maggiore idea su come gli argomenti potrebbero essere chiesti all’esame.
In particolare, in questo documento viene trattato in primo luogo il mapping e la decodifica e in particolare i seguenti principali argomenti:
- La decodifica degli indirizzi
- Come viene divisa la decodifica
- Cos’è il mapping
- DRAM e SRAM
- RAM e EPROM
- Registri e Cache
- Concetto di memoria disallineata
- Condizioni di Mapping
- I segnali con cui i dispositivi si interfacciano con il bus
- Concetto di dispositivo allineato
- Decodifica completa
- Decodifica parziale e Warning
- Memoria logica e memoria fisica
- Il problema della lettura disallineata
Il tutto è trattato sotto forma di 32 domande circa.
Linguaggio macchina
In secondo luogo viene trattato il linguaggio macchina e in particolare i seguenti principali argomenti:
- Cos’è il linguaggio macchina e cosa puoi farci
- Qual è il principale requisito di un linguaggio macchina
- Proprietà e caratteristiche fondamentali dei linguaggi macchina
- Tipi di istruzioni
- Le tecniche di indirizzamento degli operatori in memoria
- Little endian e Big endian
Periferiche di Input/Output
In terzo luogo viene trattato l’Input/Output e in particolare i seguenti principali argomenti:
- Il sottosistema di I/O, uno schema base
- Di cosa necessita un’interfaccia di I/O
- Mapping delle periferiche: cosa non si può fare e cosa si?
- Modalità di gestione dell’I/O
- L’interrupt
- Come vengono gestite le priorità delle interruzioni
Il tutto è trattato sotto forma di 10 domande circa.
Decodifica degli indirizzi
1) Come può essere la decodifica degli indirizzi?
La decodifica degli indirizzi può essere:
- Completa: Lo spazio di indirizzamento è completamente occupato (più complessa). In questo tipo di decodifica vengono decodificati tutti i bit dell’indirizzo.
- Semplificata o parziale: Lo spazio di indirizzamento NON è completamente occupato (più semplice). In questo tipo di decodifica non vengono decodificati tutti i bit di indirizzo, ma solo quelli necessari per identificare un dispositivo. Effetto collaterale: “Spreco” di indirizzi a causa della replicazione (più finestre dello spazio di indirizzamento associate allo stesso dispositivo).
2) Come viene utilizzato un decodificatore?
Un decodificatore è una rete logica combinatoria che viene utilizzata per abilitare o meno un determinato dispositivo all’interno dello spazio di indirizzamento. L’obiettivo della decodifica, di solito, è che non si attivino mai più di un dispositivo contemporaneamente. In particolare, in ingresso vi saranno gli indirizzi emessi dalla CPU.
3) Come si divide la decodifica?
La decodifica si divide in due parti:
- Decodifica esterna: Decodifica che individua uno tra gli N dispositivi all’interno dello spazio di indirizzamento. È compito del progettista.
- Decodifica interna: Decodifica fatta autonomamente dal dispositivo (RAM, EPROM …) che va ad individuare la particolare cella del dispositivo.
4) Qual è la condizione necessaria affinché un dispositivo fisico (memoria, interfaccia o altra entità) sia accessibile per il software?
La condizione necessaria affinché un dispositivo fisico (memoria, interfaccia o altra entità) sia accessibile per il software è che il dispositivo sia mappato in uno spazio di indirizzamento.
5) Cosa significa mappare in uno spazio di indirizzamento, ovvero cos’è il mapping?
Mappare in uno spazio di indirizzamento, ovvero fare il mapping di un dispositivo significa associare al dispositivo una finestra di indirizzi di quello spazio di indirizzamento.
6) Come si effettua l’accesso ai dispositivi mappati?
L’accesso ai dispositivi mappati in uno spazio di indirizzamento si effettua con i cicli di bus.
7) Cosa contiene una RAM all’accensione?
Una RAM all’accensione contiene una tensione elettrica impredicibile. Potrebbe essere uno 0, un 1, oppure una sequenza di 0 e 1.
8) Perché una in una RAM c’è sia il segnale di WR che il segnale di RD, e non se ne usa uno solo e il negato di esso?
Perché potrei non voler né leggere né scrivere! Ovviamente però RD e WR saranno mutuamente esclusivi, ovvero mai si avrà RD=WR=1.
9) Perché nelle RAM in un ciclo di lettura i dati vengono messi sul bus dopo un tempo maggiore rispetto al ciclo di scrittura?
Nelle RAM in un ciclo di lettura i dati vengono messi sul bus dopo un tempo maggiore rispetto al ciclo di scrittura in quanto si ha che:
- Ciclo di lettura: La memoria impiega un certo tempo a reperire i dati al suo interno.
- Ciclo di scrittura: I dati devono essere disponibili subito in quanto prima di essere campionati devono essersi stabilizzati (HOLD).
10) Qual è la differenza tra DRAM e SRAM?
- DRAM (dynamic RAM): Il dato è memorizzato all’interno di un condensatore. Dinamiche in quanto necessitano di circuito di refresh. Il condensatore tende infatti a perdere l’informazione. Densità maggiore (numero bit / cm2 di silicio) rispetto alle SRAM.
- SRAM (static RAM): Il dato è memorizzato in un LATCH CD. Più veloci delle DRAM.
11) Qual è la differenza fra RAM ed EPROM?
- RAM: Volatile, può essere scritta, capacità multipli di 4 (motivi tecnologici).
- EPROM: Non volatile, sola lettura, capacità multipli di 2 (motivi tecnologici).
12) Quali sono i comandi sempre presenti in memorie e registri?
In memorie e registri sono sempre presenti i comandi di:
- WE (write enable): Serve per abilitare o meno la scrittura sul dispositivo.
- OE (output enable): Serve per abilitare o meno i tristate.
13) In un registro Edge-Triggered con WE quali sono le condizioni per cui avvenga una scrittura?
Per avere una scrittura devono essere verificate le seguenti due condizioni:
- WE attivo
- Fronte di salita del CK con dati stabili
14) Perché è importante che un processore abbia molti registri al suo interno?
Se un processore dispone di molti registri puoi permetterti di effettuare meno accessi in memoria in quanto una volta prelevato un dato esso può essere messo in un registro. Ricordiamo che gli accessi alle memorie sono lenti e dunque evitarli velocizza il sistema! Intel ha pochi registri (una decina utilizzabili) – DLX e ARM ne hanno un numero maggiore.
15) Qual è la differenza tra registri e cache?
Una cache è:
- Più grande di un registro in quanto può contenere anche 16K di elementi. I registri del DLX sono a 32 bit.
- Più lenta di un registro in quanto più grande e con un tempo di accesso maggiore rispetto a quello di un registro. Una cache può inoltre essere realizzata su un silicio differente da quello del processore.
16) Come puoi sfruttare al massimo un bus a 32 bit?
Poiché tipicamente le memorie sono a parallelismo dati 8 bit, con un bus dati a 32 bit per sfruttarlo al massimo dovrei usare 4 memorie. Gli svantaggi che derivano da usare 4 memorie e non una sola sono però molteplici:
- Maggiore consumo
- Numero maggiore di pin
- Maggiore area occupata
- Probabilità di rottura di una memoria maggiore
17) Cosa intendiamo con memoria disallineata?
Una memoria è disallineata se inizia ad un indirizzo che NON è multiplo della sua dimensione!
Condizioni di mapping
18) Quali sono le condizioni che dovranno essere rispettate nel mapping di un dispositivo?
In generale l’assegnamento di una finestra di indirizzi al dispositivo nello spazio di indirizzamento dovrà rispettare le seguenti due condizioni:
- La dimensione della finestra di indirizzi associata a un dispositivo è una potenza di 2.
- La finestra di indirizzi è composta da indirizzi contigui.
18bis) Quante posizioni nello spazio di indirizzamento occupa un dispositivo accessibile attraverso il bus?
Un dispositivo accessibile attraverso il bus, sia esso:
- Un dispositivo di memoria (es. RAM, EPROM, register file)
- Un’interfaccia (es. un registro di uscita, una porta parallela o seriale, interfaccia per leggere)
- Un agente master indirizzabile (DMA controller, controllore di HD)
Occupa in generale posizioni nello spazio di indirizzamento dove:
- n = numero di oggetti di 8 bit indirizzabili all’interno del dispositivo stesso (es. numero di celle di memoria nelle RAM e nelle EPROM, numero di registri in un register file)
- k = numero di bit di indirizzo interni al dispositivo: fortemente variabile
Generalmente:
- Dispositivi di I/O (es. Interfacce) k è piccolo (nel corso compreso tra 0 e 4)
- Memorie k è grande (es. RAM da 128KB si ha k = 17)
Ricordiamo che lo spazio di indirizzamento è limitato e dunque più mappo dispositivi grandi prima finisce la finestra di indirizzi che ho a disposizione! In generale nello spazio di indirizzamento posso mappare ciò che voglio, anche un FFD.
19) Di cosa dispongono i dispositivi a 8 bit con all’interno elementi indirizzabili separatamente? Con quali segnali si interfacciano al bus?
Qualunque dispositivo da 8 bit con all’interno elementi indirizzabili separatamente ha al suo interno un decoder di k variabili con ingresso di enable che seleziona i singoli oggetti indirizzabili. Di solito un dispositivo si interfaccia al bus attraverso i seguenti segnali:
- Indirizzi (A[k-1 .. 0]) Sono le k variabili decodificate dal decoder del dispositivo e individuano il byte (8bit) a cui si intende accedere all’interno del chip (offset del chip).
- Dati (D[7 .. 0]) Definiscono la porta bidirezionale che consente di scambiare dati con l’esterno.
- Chip Select (CS) Detto anche Chip Enable (CE), è il segnale di enable del decoder interno al dispositivo. Il CS è funzione di A[n-1 .. k] dove n è il numero totale dei bit di indirizzo.
-
Internet e web mapping appunti - parte 1
-
Internet e web mapping appunti - parte 2
-
Value Stream Mapping
-
Calcolatori elettronici I - progetto macchina