|
|
|
|
@@ -7,18 +7,19 @@ In particular, the architecture of \ac{hbm} will be discussed, since it is the \
|
|
|
|
|
\subsection{DRAM Basics}
|
|
|
|
|
\label{sec:dram_basics}
|
|
|
|
|
|
|
|
|
|
A \ac{dram} is a special type of \ac{ram} that uses a single transistor-capacitor pair as a memory cell to encode exactly one bit \cite{jacob2008}.
|
|
|
|
|
Since a capacitor holds electrical charge, it is a volatile type of storage and the bit value it represents eventually vanishes over time as the stored charge is leaked.
|
|
|
|
|
A \ac{dram} is a special type of \ac{ram} that uses a \ac{1t1c} cell as a memory cell to store a single bit of data \cite{jacob2008}.
|
|
|
|
|
Because a capacitor holds electrical charge, it is a volatile form of storage, and the bit value it represents will eventually vanish over time as the stored charge is leaked.
|
|
|
|
|
To circumvent this, regular \textit{refresh} operations are required, involving reading and rewriting the stored value, making this storage method \textit{dynamic}.
|
|
|
|
|
A typical \ac{dram} device consists of several banks, which are themselves composed of a set of \textit{memory arrays}, which in turn are composed of multiple \acp{subarray}.
|
|
|
|
|
Banks operate independently of each other, while the memory arrays of each bank operate in lockstep mode to form the per-device data word, with the number of data bits equal to the number of memory arrays per bank.
|
|
|
|
|
The \acp{subarray} are grid-like structures composed of \acp{lwl} and \acp{lbl}, with a storage cell at each intersection point.
|
|
|
|
|
A typical \ac{dram} device consists of several \textit{banks}, which are themselves composed of a set of \textit{memory arrays}.
|
|
|
|
|
The banks can be controlled independently of each other, while the memory arrays of each bank operate in lockstep mode to form the per-device data word, with the number of data bits equal to the number of memory arrays per bank.
|
|
|
|
|
Memory arrays, in turn, are composed of multiple \acp{subarray}.
|
|
|
|
|
\Acp{subarray} are grid-like structures composed of \acp{lwl} and \acp{lbl}, with a storage cell at each intersection point.
|
|
|
|
|
The \ac{lwl} is connected to the transistor's gate, switching it on and off, while the \ac{lbl} is used to access the stored value.
|
|
|
|
|
Global \acp{mwl} and \acp{mbl} span over all \acp{subarray}, forming complete \textit{rows} and \textit{columns} of a memory array.
|
|
|
|
|
|
|
|
|
|
Because the charge stored in each cell is very small, so-called \acp{psa} are needed to amplify the stored voltage of each cell while it is being connected to the shared \ac{lbl} \cite{jacob2008}, illustrated in figure \ref{img:psa}.
|
|
|
|
|
Because the charge stored in each cell is very small, so-called \acp{psa} are needed to amplify the voltage of each cell while it is being connected to the shared \ac{lbl} \cite{jacob2008}, basic structure of which is illustrated in Figure \ref{img:psa}.
|
|
|
|
|
|
|
|
|
|
\begin{figure}[!ht]
|
|
|
|
|
\begin{figure}
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics{images/psa}
|
|
|
|
|
\caption[\ac{psa} of an open bitline architecture]{\ac{psa} of an open bitline architecture \cite{jacob2008} \cite{jung2017a}}
|
|
|
|
|
@@ -26,18 +27,36 @@ Because the charge stored in each cell is very small, so-called \acp{psa} are ne
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
However, before a value can be read, the \ac{psa} needs to \textit{precharge} its bitline to a halfway voltage $\frac{V_{DD}}{2}$ between 0 and $V_{DD}$.
|
|
|
|
|
When the capacitor is then connected to the bitline, it pushes the voltage level marginally in one direction, enough for the \ac{psa} to detect the voltage difference to an adjacent bitline in another \ac{subarray} and amplifies the voltage level all the way to high or low.
|
|
|
|
|
When the selected wordline is then activated, the charge from the capacitor flows to the bitline and pushes the voltage level slightly in one direction.
|
|
|
|
|
The \ac{psa} compares the changed voltage level with an adjacent bitline in another \ac{subarray} and amplifies that difference all the way to a high or low level.
|
|
|
|
|
|
|
|
|
|
The process of loading the stored value into the \ac{psa} is done for all columns at the same time and is called \textit{row activation}.
|
|
|
|
|
Once a row is activated, it is referred to as \textit{open} and following from a
|
|
|
|
|
% \ac{csl}
|
|
|
|
|
The process of loading the stored values into the \acp{psa} is done for all columns of a row at once and is called \textit{row activation}.
|
|
|
|
|
Once a row is activated, it can be read from or written to with a certain access granularity determined by the \ac{bl} of the memory.
|
|
|
|
|
To perform such a burst access, the \acp{csl} of a set of \acp{psa} must be enabled, connecting them to the more powerful \acp{ssa} that drive the actual bank \ac{io}.
|
|
|
|
|
Depending on the \ac{we} signal, the \acp{ssa} either sense and amplify the logic value of the \acp{psa}, or they overwrite it using the \textit{write drivers}.
|
|
|
|
|
The Figure \ref{img:bank} summarizes the basic architecture of a single storage device consisting of a number of banks that has been discussed so far.
|
|
|
|
|
|
|
|
|
|
\begin{figure}[!ht]
|
|
|
|
|
\begin{figure}
|
|
|
|
|
\centering
|
|
|
|
|
\includegraphics{images/bank}
|
|
|
|
|
\caption[]{\cite{jung2017a}}
|
|
|
|
|
\caption[Architecture of a single DRAM device]{Architecture of a single DRAM device \cite{jung2017a}}
|
|
|
|
|
\label{img:bank}
|
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
|
Since a single \ac{dram} device has only a small width, for example in the case of x8 \ac{dram} a width of 8, several devices operate in lockstep mode to form the wider \textit{data bus} of the \textit{memory channel} \cite{jung2017a}.
|
|
|
|
|
One kind of \ac{dram} subsystem places these sets of devices on a special \ac{pcb} called \ac{dimm}.
|
|
|
|
|
A \ac{dimm} may also consist of several independent \textit{ranks}, which are complete sets of \ac{dram} devices connected to the same data bus, but accessed in an interleaved manner.
|
|
|
|
|
|
|
|
|
|
Besides the data bus, the channel consists also of the \textit{command bus} and the \textit{address bus}.
|
|
|
|
|
Over the command bus, the commands necessary to control memory are issued by the \textit{memory controller}, that sits in between the \ac{dram} and the \ac{mpsoc}.
|
|
|
|
|
For example, to read data, the memory controller may first issue a \ac{pre} command to precharge the bitlines in a certain bank, followed by an \ac{act} command to load the contents of a row into the \acp{psa}, and finally a \ac{rd} command to move the data from the \acp{psa} to the \acp{ssa} where it can be exposed to the data bus.
|
|
|
|
|
The row, column, bank and rank in question is determined by the address bus.
|
|
|
|
|
|
|
|
|
|
% gibt dimms oder auch gddr
|
|
|
|
|
% ODER auch hbm -> überleitung zu hbm
|
|
|
|
|
|
|
|
|
|
\subsection{High Bandwidth Memory}
|
|
|
|
|
\label{sec:hbm}
|
|
|
|
|
|
|
|
|
|
% similar to ranks, pch ...
|
|
|
|
|
|
|
|
|
|
|