\begin{tikzpicture}
  
  \node[draw] (D0) at (0,0) {D0};

  \def\mlast{0}

  \foreach \m in {1,...,7}{
    \node[draw, anchor=west] (D\m) at (D\mlast.east){D\m};
    \global\let\mlast\m
  }

  \draw [<-]
    (D0.west) -- ++(-5mm,0) node[above]{$wx$};
  \draw [->] 
    (D7.east) -- ++( 5mm,0) node[above]{$ry$};

  \node (D) at ($(D0.north)!0.5!(D7.north)$) {};
  
  \path let
        \p1=(D7.east),
        \p2=(D0.west)
        in node[draw, minimum width = \x1-\x2] (M) at ($(D)+(0, 10mm)$) {Memory};

  \foreach \m in {0,...,7}{
    \draw [<->] (D\m.north) -- (D\m.north |- M.south);
  }

\end{tikzpicture}
