1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
%!TEX root = essence_of_hwsw.tex
\section{Memorie a semiconduttore}
\subsection{Definizione di memoria}
Una memoria pu\`o essere definita come un sistema in grado di conservare delle
informazioni come per esempio un Hard-Disk, un libro o un DVD\@. In questo
capitolo sono analizzate solamente alcuni tipi di memoire dette \emph{memorie a
semiconduttore}. In queste forme di memoria l'informazione \`e rappresentata da
un livello di tensione (per esempio lo standard TTL) che come conseguenza
richiede un supporto fisico elettronico.
\subsection{Classificazione delle memorie}
Le memorie digitali possono essere classificate in base a vari criteri quali
\begin{itemize}
\item Mantenimento dell'informazione senza l'uso di alimentazione: \\
{\bf Volatili} o {\bf Non volatili}
\item Tempo di permanenza con l'alimentazione: \\
{\bf Statiche} o {\bf Dinamiche}
\item Modalit\`a di accesso: \\
{\bf Casuale} o {\bf Sequenziale} (o entrambe)
\end{itemize}
\subsection{Unit\`a di misura}
In informatica in molti casi sono pi\`u importanti le potenze di 2 che le
potenze di 10. Perci\`o oltre ai prefissi del sistema internazionale kilo (k)
\(10^3\), mega (M) \(10^6\), giga (G) \(10^9\) sono stati aggiunti dalla commissione
europea IEC i prefissi kibi (Ki) \(2^{10} = 1024^1\), mebi (Mi) \(2^{20} =
1024^2\), gibi (Gi) \(2^{30} = 1024^3\) ecc.
Naturalmente per\`o non essendo uno standard internazionale negli USA la
commissione JEDEC utilizza un sistema differente. Lo standard americano
modifica il significato dei simboli SI quando sono combinati con l'unit\`a Byte
(B). Quindi 1 KB = 1 KiB = \(2^{10}\) Bytes, 1 MB = 1 MiB = \(2^{20}\) Bytes, 1 GB
= 1 GiB = \(2^{30}\) ecc.
\begin{table}[H]
\centering {\def\arraystretch{1.2}
\begin{tabular}{ l l c l c }
\toprule
Valore & Nome IEC & Simbolo IEC & Nome JEDEC & Simbolo JEDEC \\
\midrule
\(2^{10} = 1024^1\) & KibiByte & KiB & KiloByte & KB \\
\(2^{20} = 1024^2\) & MebiByte & MiB & MegaByte & MB \\
\(2^{30} = 1024^3\) & GibiByte & GiB & GigaByte & GB \\
\bottomrule
\end{tabular}}
\caption{Riassunto delle unit\`a di misura}
\end{table}
\subsection{Notazione}
Le memorie vengono normalmente indicate con la seguente notazione.
\[ words~count \times word~size \]
In cui \(word~size\) indica la dimensione della parola, ovvero il numero di bit
utilizzato in uscita, mentre \(words~count\) indica il numero di parole presenti.
Per esempio una memoria da 2 KiB (o 2KB secondo la notazione JEDEC) viene
indicata come memoria \(2048\times 8\) bit.
\`E anche possibile indicare la dimensione con il numero di bit
contenuti nella memoria. Sempre lo stesso esempio di una memoria da 2 KiB
si indica quindi con \(16384\) bits oppure 16 K (che con lo standard JEDEC
corrisponde a \(16 \cdot 1024 = 16384\)).
\subsection{Conversione Decimale \(\leftrightarrow{}\) Esadecimale}
Per rappresentare graficamente le regioni di indirizzabili occupare da una
memoria si utilizza spesso dei diagrammi che rappresentano l'\emph{address
space}. Nell'address space per\`o normalmente si indica gli indirizzi in base
16 azich\`e 10, perci\`o \`e necessario convertire le grandezze di una memoria
indicate in base decimale in esadecimale.
Consideriamo quindi un esempio di una memoria di 4 KiB all'indirizzo {\tt
2000h} di un address space a 16 bit. Per determinare quanto spazio
nell'address space viene occupato si deve trovare il numero di bits e poi
convertirlo in esadecimale.
\[
4~{\rm KiB} = 4 \cdot 1024 \cdot 8 ~{\rm bit} = 16384 ~{\rm bit} = 4000 {\rm h}
\]
\subsection{Read Only Memory ({\tt ROM})}
La memoria ROM \`e un circuito combinatorio che fornisce in uscita una serie di
dati \(Y_0\dotso Y_{m-1}\) in corrispondenza ad una serie di ingressi \(A_0\dotso
A_{n-1}\). Con \(n\) bit in ingresso si possono avere fino a \(2^n\) celle di
dimensione \(m\) in uscita.
In questo tipo di memoria come implica il nome le informazioni vengono
conservate permanentemente nella configurazione del circuito, siccome esse sono
`bruciate' fisicamente nel circuito.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{res/memorie/rom}
\caption{Funzionamento di una ROM}
\end{figure}
Per ogni indirizzo in \(A\) corrisponde una riga che accende alcuni bit
sull'uscita \(Y\) in base alle connessioni presenti tra le linee dei dati e le
linee delle parole. La connessione pu\`o essere costruita con differenti
metodi, creando quindi differenti tipi di ROM\@. La seguente tabella descrive
brevemente le caratteristiche di ognuna.
\begin{table}[H]
\centering {
\def\arraystretch{1.4}\tabcolsep=6pt
\begin{tabular}{>{\ttfamily}p{.12\textwidth} p{.28\textwidth} p{.5\textwidth}}
\toprule
\rmfamily Acronimo & Nome & Caratteristica \\
\midrule
ROM & Read Only Memory & Programmata in fabbrica \\
PROM & Programmable ROM & Programmabile dall'utente una volta sola, per sempre.
La programmazione avviene bruciando dei fusibili. \\
EPROM o UVPROM & Erasable PROM & Programmabile pi\`u volte dall'utente. \`E possibile
cancellare il contenuto esponendo il chip ai raggi UV per 15 - 20 min. \\
EEPROM o E\textsuperscript{2}PROM & Electronically Erasable PROM &
Programmabile pi\`u volte dall'utente, la memoria viene riscritta in pochi
millisecondi utilizzando dei segnali elettrici. \\
FLASH & & Si controlla il gate di un tipo di transistor CMOS, che resta
bloccato nella posizione anche in assenza di alimentazione. \\
\bottomrule
\end{tabular}}
\end{table}
% che diamine erano?
% \subsection{Memorie non volatili ({\tt NVRWM})}
\subsection{Random Access Memory ({\tt RAM})}
In una memoria ad accesso casuale, o memoria RAM (Random Access Memory), una
qualsiasi locazione \`e individuata da un numero (indirizzo o address) e
il suo contenuto pu\`o essere letto o modificato in un intervallo di tempo
costante detto \emph{tempo di accesso} \(t_a\).
%% doc: 01c memorie principali.pdf
% TODO: check
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{res/memorie/ram}
\caption{Metodo per accedere al contenuto di una memoria ad acesso casuale}
\end{figure}
Quando viene richiesta un' operazione di lettura con il segnale {\tt R},
l'indirizzo comanda il multiplexer per passare sull'uscita il dato contenuto
alla locazione richiesta. Nell'operazione di scrittura il segnale {\tt W}
abilita la scrittura del dato presente in ingresso nella cella indicata tramite
il demultiplexer.
La RAM pu\`o essere di tipo \emph{statico} o \emph{dinamico}. Le {\tt SRAM}
(static RAM) sono dei flip-flops, mentre le {\tt DRAM} (dynamic RAM) sono dei
microcondensatori C-MOS nei quali 1 corrisponde al condensatore carico e 0
corrisponde al condensatore scarico.
\paragraph{La RAM dinamica ({\tt DRAM})} avendo un comportamento elettrico
tipico dei condensatori, essa \`e soggetta alla scarica, cio\`e tende a
perdere l'informazione contenuta, perci\`o necessitano di essere ricaricate
regolarmente con della circuiteria che esegue un \emph{refresh}.
\paragraph{La RAM statica ({\tt SRAM})} essendo un FF, \`e in grado di
mantenere le informazioni per un tempo indeterminato affinch\`e ci sia
l'alimentazione. Gli svantaggi delle SRAM rispetto alle DRAM sono il consumo
energetico (potenza dissipata) e la dimensione, che rendono la densit\`a di
bit per unit\`a di area minore. Come vantaggio invece le SRAM tendono ad essere
pi\`u veloci delle DRAM\@.
% \subsection{Indirizzamento sequenziale, 1D e 2D}
|