\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. 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 }
\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.
\`E anche possibile indicare la dimensione con il numero di bits
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{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}
\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
componenti, creando quindi differenti tipi di ROM. La seguente tabella descrive
brevemente le caratteristiche di ogniuna.

\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{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 il 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.

% \subsection{Indirizzamento sequenziale, 1D e 2D}
