\begin{tikzpicture}[ mem/.style={
    draw=lightGray,
    top color=lightGray,
    bottom color=white,
    rounded rectangle,
    shading=axis,
    minimum width=2cm,
  },
  plain/.style={
    draw=none,
  },
  arrow/.style={
    thick,
    decoration={
      markings,
      mark=at position 1 with {\arrow[semithick]{open triangle 60}}
    },
   double distance=1.4pt, shorten >= 5.5pt,
   preaction = {decorate},
   postaction = {draw,line width=1.4pt, white,shorten >= 4.5pt}
  },
]
  \node at (0, 2) [mem] (hdd) {HDD};
  \node[below=12pt of hdd, mem] (ssd) {SSD};
  \node[below=12pt of ssd, mem] (ram) {RAM};
  \node[below=12pt of ram, mem] (cache) {Cache};
  \node[below=12pt of cache, mem] (register) {Register};

  \node[left=6pt of hdd, plain] {TB};
  \node[left=6pt of ssd, plain] {GB};
  \node[left=6pt of ram, plain] {GB};
  \node[left=6pt of cache, plain] {MB};
  \node[left=6pt of register, plain] {bits};

  \node[right=6pt of hdd, plain] {persistent};
  \node[right=6pt of ssd, plain] {persistent};
  \node[right=6pt of ram, plain] {volatile};
  \node[right=6pt of cache, plain] {volatile};
  \node[right=6pt of register, plain] {volatile};

  \draw[arrow]
    ($ (current bounding box.south west) + (-0.5,0) $) --
    (current bounding box.north west);
  \draw[arrow]
    ($ (current bounding box.north east) + (0.5,0) $) --
    (current bounding box.south east);

  \node[above=0pt of current bounding box.north west] {largest};
  \node[below=0pt of current bounding box.south east] {fastest};
\end{tikzpicture}
