\section{Memorie}

\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. Esso modifica il significato 
dei simboli SI quando essi 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 }
\hline
Valore & Nome IEC & Simbolo IEC & Nome JEDEC & Simbolo JEDEC \\
\hline
$2^{10} = 1024^1$ & KibiByte & KiB & KiloByte & KB \\
$2^{20} = 1024^2$ & MebiByte & MiB & MegaByte & MB \\
$2^{30} = 1024^3$ & GibiByte & GiB & GigaByte & GB \\
\hline
\end{tabular}}
\caption{tablella riassuntiva 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 bits 
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$ bits.


\subsection{Memorie a sola lettura}
\subsubsection{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 nomele informazioni vengono conservate
permanentemente nella configurazione del circuito, siccome esso sono costituite
da un decodificatore ed un codificatore.

\begin{figure}[h!]
	\centering
	\includegraphics[width=\textwidth]{res/memorie/rom}
\end{figure}

Ogni indirizzo in $A$ corrisponde una riga che accende i 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 componenti, creando quindi
differenti tipi di ROM.

\begin{table}[H]
\centering {\def\arraystretch{1.5}\tabcolsep=6pt
\begin{tabular}{ >{\ttfamily}p{.12\textwidth} p{.28\textwidth} p{.5\textwidth} }
\hline
\rmfamily Acronimo & Nome & Caratteristica \\
\hline
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 & 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. \\
\hline
\end{tabular}}
\end{table}

% che diamine erano?
% \subsection{Memorie non volatili ({\tt NVRWM})}

\subsection{Memorie a scrittura e lettura}
\subsubsection{Random Access Memory ({\tt RAM})}

In una memoeria ad acesso 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
\begin{figure}[h!]
	\centering
	\includegraphics[width=\textwidth]{res/memorie/ram}
\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 
condenstatori, 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 indeterminao affinch\`e ci sia l'alimentazione. Gli
svantaggi delle SRAM rispetto alle DRAM sono dal consumo energetico (potenza
dissipata) e la dimensisone, 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.