\documentclass[a3paper]{article}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[english,bulgarian]{babel}
\usepackage{color}
\usepackage{pst-pdf}
\usepackage{pstricks,pst-node,pst-text,pst-grad,pst-fill,pst-eucl}
%\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=5pt}

\begin{document}
\pagestyle{empty}
\psset{unit=1cm}
\begin{pspicture}[showgrid=false](25,19.6)

% дефиниране на възлите (без рамката)
\rput(13.5,2.9){\rnode{A}{\parbox{5cm}{
\begin{center}
Кеш за данни 8KB
\end{center}
}}}
\rput(11.7,2.3){\rnode{B}{\parbox{1.5cm}{
\begin{center}
TLB
\end{center}
}}}
\rput(13.5,5.5){\rnode{C}{\parbox{5cm}{
\begin{center}
Многорегистрово циклично повдигащо устройство
\end{center}
}}}
\rput(12.3,6.5){\rnode{D}{\parbox{2.5cm}{
\begin{center}
АЛУ (U Конвейер)
\end{center}
}}}
\rput(14.8,6.5){\rnode{E}{\parbox{2.5cm}{
\begin{center}
АЛУ (V Конвейер)
\end{center}
}}}
\rput(13.5,7.5){\rnode{W}{\parbox{5cm}{
\begin{center}
Целочислени регистри
\end{center}
}}}
\rput(12.3,9.8){\rnode{F}{\parbox{2.5cm}{
\begin{center}
Генериране на адрес (U Конвейер)
\end{center}
}}}
\rput(14.8,9.8){\rnode{G}{\parbox{2.5cm}{
\begin{center}
Генериране на адрес (V Конвейер)
\end{center}
}}}
\rput(13.5,12){\rnode{H}{\parbox{8cm}{
\begin{center}
Управляващо устройство
\end{center}
}}}
\rput(13.5,14){\rnode{I}{\parbox{5cm}{
\begin{center}
Декодиране на инструкции
\end{center}
}}}
\rput(13.5,15){\rnode{J}{\parbox{5cm}{
\begin{center}
Буфери за предварително извличане
\end{center}
}}}
\rput(13.5,17.2){\rnode{K}{\parbox{5cm}{
\begin{center}
Кеш за код 8KB
\end{center}
}}}
\rput(11.7,17.7){\rnode{L}{\parbox{1.5cm}{
\begin{center}
TLB
\end{center}
}}}
\rput(7.5,17.4){\rnode{M}{\parbox{2cm}{
\begin{center}
Буфер за предсказване на преходите
\end{center}
}}}
\rput(5.8,10){\rnode{N}{\parbox{1.5cm}{
\begin{center}
Устрой\-ство за странициране
\end{center}
}}}
\rput{90}(2.2,10){\rnode{O}{\parbox{8cm}{
\begin{center}
Устройство за управление на шината
\end{center}
}}}
\rput(20.3,14.5){\rnode{P}{\parbox{2.5cm}{
\begin{center}
Управляващ ROM
\end{center}
}}}
\rput(22,10.8){\rnode{Q}{\parbox{3cm}{
\begin{center}
Устройство за операции с плаваща запетая
\end{center}
}}}
\rput(22,9.5){\rnode{R}{\parbox{4cm}{
\begin{center}
Управление
\end{center}
}}}
\rput(22,8.5){\rnode{S}{\parbox{4cm}{
\begin{center}
Регистри
\end{center}
}}}
\rput(22,7){\rnode{T}{\parbox{2cm}{
\begin{center}
Събиране
\end{center}
}}}
\rput(22,5.5){\rnode{U}{\parbox{2cm}{
\begin{center}
Делене
\end{center}
}}}
\rput(22,4){\rnode{V}{\parbox{2cm}{
\begin{center}
Умножение
\end{center}
}}}
\rput(2.25,3){\rnode{V}{\parbox{2cm}{
\begin{center}
APIC
\end{center}
}}}
\rput(2.25,17){\rnode{V}{\parbox{1.5cm}{
\begin{center}
DP логика
\end{center}
}}}


%рамки
\psset{linewidth=1.5pt}
\psframe(11,2)(16,3.5)
\psframe(11,2)(12.5,2.5)
\psframe(11,5)(16,6)
\psframe(11,6)(13.5,7)
\psframe(13.5,6)(16,7)
\psframe(11,7)(16,8)
\psframe(11,9)(13.5,10.5)
\psframe(13.5,9)(16,10.5)
\psframe[linewidth=1.5pt,linecolor=red,linestyle=dashed,dash=6pt 3pt](9,11.5)(18,12.5)
\psframe(11,13.5)(16,14.5)
\psframe(11,14.5)(16,15.5)
\psframe(11,16.5)(16,18)
\psframe(11,17.5)(12.5,18)
\psframe[linewidth=1.5pt,linecolor=magenta,linestyle=dashed,dash=6pt 3pt](1.5,16)(3,18)
\psframe[linewidth=1.5pt,linecolor=cyan,linestyle=dashed,dash=6pt 3pt](1.5,2)(3,4)
\psframe[linewidth=1.5pt,linecolor=yellow,linestyle=dashed,dash=6pt 3pt](6.5,16.5)(8.5,18.3)
\psframe[linewidth=1.5pt,linecolor=purple,linestyle=dashed,dash=6pt 3pt](5,8.5)(6.5,11.5)
\psframe[linewidth=1.5pt,linecolor=green,linestyle=dashed,dash=6pt 3pt](1.5,5.5)(3,14.5)
\psframe[linewidth=1.5pt,linecolor=orange,linestyle=dashed,dash=6pt 3pt](18.5,13.5)(22,15.5)
\psframe[linewidth=1.5pt,linecolor=blue,linestyle=dashed,dash=6pt 3pt](19.5,3)(24.5,11.5)% FPU

\psframe(20,9)(24,10)
\psframe(20,8)(24,9)
\psframe(21,6.5)(23,7.5)
\psframe(21,5)(23,6)
\psframe(21,3.5)(23,4.5)

%запълнени рамки 2x
\psframe[fillstyle=crosshatch](10.8,5)(11,8)
\psframe[fillstyle=crosshatch](16,6)(16.2,8)

%стрелки
\psset{arrowscale=1.3,linewidth=1pt}
\psline{->}(20,8)(20,3.8)(21,3.8)
\psline{->}(20,6.8)(21,6.8)
\psline{->}(20,5.3)(21,5.3)
\psline{->}(20.5,8)(20.5,4.3)(21,4.3)
\psline{->}(20.5,7.3)(21,7.3)
\psline{->}(20.5,5.8)(21,5.8)
\psline{->}(23,4)(23.8,4)
\psline{->}(23,5.5)(23.8,5.5)
\psline{->}(23,7)(23.8,7)
\psline{->}(23.8,4)(23.8,8)

\psline{<->}(12,3.5)(12,4)(9.5,4)(9.5,11.5)
\psline{<->}(15,3.5)(15,4)(17.5,4)(17.5,11.5)
\psline{<->}(16,10.3)(17.5,10.3)
\psline{->}(16,9.8)(19,9.8)(19,2.3)(16,2.3)
\psline{->}(16,3.3)(18,3.3)(18,9.3)(16,9.3)
\psline{->}(16.2,7)(18.5,7)(18.5,2.8)(16,2.8)
\psline{<->}(16.2,7.5)(17.5,7.5)
\psline{<->}(16.2,6.5)(18,6.5)
\psline{<->}(18,5.5)(19.5,5.5)

\psline{->}(11,3.3)(8.5,3.3)(8.5,9.3)(11,9.3)
\psline{<->}(8.5,4.5)(19.5,4.5)
\psline{<->}(11,10.3)(9.5,10.3)
\psline{->}(11,9.8)(7,9.8)(7,2.3)(11,2.3)
\psline{<->}(10.8,7.5)(9.5,7.5)
\psline{<->}(10.8,5.5)(8.5,5.5)
\psline{->}(10.8,6.5)(8,6.5)(8,2.8)(11,2.8)

\psline{->}(18,12)(22,12)(22,11.5)

\psline{->}(12,13.5)(12,12.5)
\psline{->}(14,13.5)(14,12.5)
\psline{->}(16,14)(18.5,14)
\psline{->}(19.5,13.5)(19.5,13.3)(13,13.3)(13,12.5)
\psline{->}(21,13.5)(21,13)(15,13)(15,12.5)

\psline{->}(13.5,8)(13.5,8.5)(7.5,8.5)(7.5,10)(7,10)(7,16.5)\uput[90](7.1,12){{\parbox{3cm}{
\begin{center}
Пров. на прехода \& Целеви адрес
\end{center}
}}}
\psline{->}(11,14)(8,14)(8,16.5)\uput[0](8,14.5){{\parbox{2.5cm}{
\begin{center}
Указател на инструкции
\end{center}
}}}
\psline{->}(8.5,17.3)(11,17.3)\uput[0](8.6,17.8){{\parbox{1.8cm}{
\begin{center}
Адрес за предварително извличане
\end{center}
}}}

\psline{<->}(13.5,16.5)(13.5,15.5)

\psline{<->}(13.5,2)(13.5,0.5)
\psline{<->}(11.7,2)(11.7,1)
\psline{<->}(11.8,18)(11.8,19)
\psline{<->}(13.5,18)(13.5,19.5)

%големи линии през цялата схема
\psline(13.5,0.5)(3.8,0.5)(3.8,19.5)(13.5,19.5)\uput[0](4.5,3){{\parbox{1cm}{32-битова адресна шина}}}
\psline(11.7,1)(4.5,1)(4.5,19)(11.8,19)\uput[0](0.5,1.5){{\parbox{3cm}{\flushright 64-битова шина за данни}}}

\psline{<->}(5,10.5)(4.5,10.5)
\psline{<->}(5,9.5)(3.8,9.5)
\psline{<->}(4.5,8)(3,8)
\psline{<->}(3.8,10)(3,10)
\psline{<->}(3,3.5)(3.8,3.5)
\psline{<->}(3,2.5)(4.5,2.5)
\psline{<->}(3,17.5)(3.8,17.5)
\psline{<->}(3,16.5)(4.5,16.5)

%стрелки отляво на Bus Unit

\psline{<->}(1.5,2.5)(0.2,2.5)\uput[0](0.2,2.6){{\parbox{1cm}{
\begin{center}
Управ\-ление
\end{center}
}}}
\psline{<->}(1.5,3.5)(0.2,3.5)\uput[0](0.2,3.8){{\parbox{1cm}{
\begin{center}
Данни
\end{center}
}}}

\psline{<->}(1.5,17)(0.2,17)\uput[0](0.2,17.1){{\parbox{1cm}{
\begin{center}
Управ\-ление
\end{center}
}}}

\psline{<->}(1.5,7)(0.2,7)\uput[0](0.2,12.2){{\parbox{1cm}{
\begin{center}
64-битова шина за данни
\end{center}
}}}
\psline{<->}(1.5,9.5)(0.2,9.5)\uput[0](0.2,9.7){{\parbox{1cm}{
\begin{center}
32-битова адресна шина
\end{center}
}}}
\psline{<->}(1.5,12)(0.2,12)\uput[0](0.2,7.1){{\parbox{1cm}{
\begin{center}
Управ\-ление
\end{center}
}}}


\end{pspicture}
\end{document}
