Non-blocking caches

This commit is contained in:
2022-05-25 19:13:05 +02:00
parent 696b2b05d2
commit b8d75bf8f1
8 changed files with 237 additions and 19 deletions

56
img/mshr_file.tikz Normal file
View File

@@ -0,0 +1,56 @@
\begin{tikzpicture}
\begin{pgfonlayer}{nodelayer}
\node [style=block address] (19) at (7.5, -8.5) {};
\node [style=block address] (18) at (7.25, -8.75) {};
\node [style=none] (0) at (-0.5, 0) {};
\node [style=none] (1) at (-0.5, -10) {};
\node [style=none] (2) at (19, 0) {};
\node [style=none] (3) at (19, -10) {};
\node [style=none] (4) at (1.5, -1) {MSHR 1};
\node [style=none] (5) at (1.5, -3) {MSHR 2};
\node [style=none] (6) at (1.5, -4) {\vdots};
\node [style=none] (7) at (1.5, -5.5) {MSHR n};
\node [style=block address] (8) at (7, -1) {Block Address};
\node [style=block address] (9) at (14, -1) {Target Information};
\node [style=valid] (10) at (18, -1) {V};
\node [style=block address] (11) at (7, -3) {Block Address};
\node [style=block address] (12) at (14, -3) {Target Information};
\node [style=valid] (13) at (18, -3) {V};
\node [style=block address] (14) at (7, -5.5) {Block Address};
\node [style=block address] (15) at (14, -5.5) {Target Information};
\node [style=valid] (16) at (18, -5.5) {V};
\node [style=block address] (17) at (7, -9) {Comparators};
\node [style=none] (20) at (5.5, -1.75) {};
\node [style=none] (21) at (5.5, -2.25) {};
\node [style=none] (22) at (5.5, -3.75) {};
\node [style=none] (23) at (5.5, -4.75) {};
\node [style=none] (24) at (5.5, -6.25) {};
\node [style=none] (25) at (5.5, -7.75) {};
\node [style=none] (26) at (7, -3.75) {};
\node [style=none] (27) at (7, -4.75) {};
\node [style=none] (28) at (7, -6.25) {};
\node [style=none] (29) at (7, -7.75) {};
\node [style=none] (30) at (9.5, -6.25) {};
\node [style=none] (31) at (9.5, -7.75) {};
\node [style=none] (32) at (8.25, -7) {\dots};
\node [style=none] (33) at (7, -11) {};
\node [style=none] (34) at (7.75, -10.5) {Hit};
\node [style=none] (35) at (9.25, 0.5) {MSHR File};
\node [style=none] (36) at (-1.5, -9) {};
\node [style=none] (37) at (1.25, -8.5) {Address};
\end{pgfonlayer}
\begin{pgfonlayer}{edgelayer}
\draw (20.center) to (21.center);
\draw (22.center) to (23.center);
\draw (24.center) to (25.center);
\draw (26.center) to (27.center);
\draw (28.center) to (29.center);
\draw (30.center) to (31.center);
\draw (17) to (33.center);
\draw (0.center) to (2.center);
\draw (2.center) to (3.center);
\draw (3.center) to (1.center);
\draw (1.center) to (0.center);
\draw (36.center) to (17);
\end{pgfonlayer}
\end{tikzpicture}

View File

@@ -19,6 +19,13 @@
\tikzstyle{os}=[fill={rgb,255: red,207; green,207; blue,207}, draw=black, shape=rectangle, minimum width=6cm]
\tikzstyle{hardware}=[fill={rgb,255: red,174; green,169; blue,174}, draw=black, shape=rectangle, minimum width=6cm]
\tikzstyle{align text}=[fill=none, draw=none, rotate=90, align=center]
\tikzstyle{tlb}=[fill={rgb,255: red,230; green,230; blue,230}, draw=black, shape=rectangle, minimum width=3.5cm, minimum height=2cm]
\tikzstyle{asid}=[fill={rgb,255: red,230; green,230; blue,230}, draw=black, shape=rectangle]
\tikzstyle{cache 2}=[fill={rgb,255: red,230; green,230; blue,230}, draw=black, shape=rectangle, minimum width=3.5cm, minimum height=2.75cm]
\tikzstyle{page frame}=[fill={rgb,255: red,179; green,179; blue,179}, draw=black, shape=rectangle, minimum width=6.5cm]
\tikzstyle{cache data}=[fill={rgb,255: red,230; green,230; blue,230}, draw=black, shape=rectangle, minimum width=10cm]
\tikzstyle{block address}=[fill={rgb,255: red,200; green,200; blue,255}, draw=black, shape=rectangle, minimum height=0.75cm, minimum width=3.5cm]
\tikzstyle{valid}=[fill={rgb,255: red,200; green,200; blue,255}, draw=black, shape=rectangle, minimum height=0.75cm, minimum width=0.6cm]
% Edge styles
\tikzstyle{dashed line}=[-, dashed]
@@ -32,3 +39,6 @@
\tikzstyle{latex arrow}=[-, -latex]
\tikzstyle{context switch}=[-, dashed, fill={rgb,255: red,222; green,222; blue,222}]
\tikzstyle{latex arrow dashed}=[-, -latex, dashed]
\tikzstyle{thin}=[-, very thin]
\tikzstyle{virtual page number}=[-, fill={rgb,255: red,179; green,179; blue,179}]
\tikzstyle{page offset}=[-, fill={rgb,255: red,247; green,247; blue,247}]

32
img/virtual_address.tikz Normal file
View File

@@ -0,0 +1,32 @@
\begin{tikzpicture}
\begin{pgfonlayer}{nodelayer}
\node [style=none] (0) at (0, 0) {};
\node [style=none] (2) at (16, 0) {};
\node [style=none] (3) at (16, -1) {};
\node [style=none] (4) at (19, 0) {};
\node [style=none] (5) at (19, -1) {};
\node [style=none] (6) at (24, 0) {};
\node [style=none] (7) at (24, -1) {};
\node [style=none] (9) at (0, -1) {};
\node [style=none] (10) at (8, -0.5) {Virtual Page Number};
\node [style=none] (13) at (0.5, 0.5) {63};
\node [style=none] (14) at (23.5, 0.5) {0};
\node [style=none] (17) at (16.5, 0.5) {11};
\node [style=none] (18) at (15.5, 0.5) {12};
\node [style=none] (19) at (8, 0.5) {\dots};
\node [style=none] (20) at (20, 0.5) {\dots};
\node [style=none] (22) at (20, -0.5) {Page Offset};
\end{pgfonlayer}
\begin{pgfonlayer}{edgelayer}
\draw (3.center)
to (9.center)
to [in=270, out=90] (0.center)
to (2.center)
to (4.center)
to (6.center)
to (7.center)
to (5.center)
to cycle;
\draw (2.center) to (3.center);
\end{pgfonlayer}
\end{tikzpicture}

View File

@@ -0,0 +1,66 @@
\begin{tikzpicture}
\begin{pgfonlayer}{nodelayer}
\node [style=none] (0) at (0, 0) {};
\node [style=none] (1) at (0, -1) {};
\node [style=none] (2) at (12, 0) {};
\node [style=none] (3) at (12, -1) {};
\node [style=none] (4) at (17, 0) {};
\node [style=none] (5) at (17, -1) {};
\node [style=none] (6) at (6, -0.5) {Virtual Page Number};
\node [style=none] (7) at (14.5, -0.5) {Page Offset};
\node [style=none] (8) at (2.5, 0.75) {Virtual Address};
\node [style=tlb] (9) at (3, -7) {TLB};
\node [style=asid] (10) at (1.5, -3.5) {ASID};
\node [style=cache 2] (11) at (14, -6.25) {Cache};
\node [style=page frame] (12) at (3, -11) {Page Frame Number};
\node [style=page frame] (13) at (3, -13) {Tag: Page Frame Number};
\node [style=cache data] (14) at (10, -16.5) {Cache Data};
\node [style=none] (15) at (1.5, -5) {};
\node [style=none] (16) at (6, -1) {};
\node [style=none] (17) at (6, -3) {};
\node [style=none] (18) at (4.5, -3) {};
\node [style=none] (19) at (4.5, -5) {};
\node [style=none] (20) at (3, -9) {};
\node [style=none] (21) at (10, -1.25) {};
\node [style=none] (22) at (10.25, -1.5) {};
\node [style=none] (23) at (17, -1.25) {};
\node [style=none] (24) at (16.75, -1.5) {};
\node [style=none] (25) at (13.5, -1.5) {};
\node [style=none] (26) at (9.5, -4.5) {};
\node [style=none] (27) at (9.5, -3) {};
\node [style=none] (28) at (13.5, -3) {};
\node [style=none] (29) at (10.5, -4.5) {};
\node [style=none] (30) at (11.25, -2.5) {Cache Index};
\node [style=none] (31) at (14, -16) {};
\node [style=none] (32) at (13, -9) {};
\node [style=none] (33) at (13, -13) {};
\node [style=none] (34) at (12, 0) {};
\node [style=none] (35) at (12, -1) {};
\end{pgfonlayer}
\begin{pgfonlayer}{edgelayer}
\draw [style=page offset] (3.center)
to (5.center)
to (4.center)
to (2.center);
\draw [style=virtual page number] (0.center)
to (1.center)
to (3.center)
to (2.center)
to [in=0, out=180] cycle;
\draw [style=latex arrow] (10) to (15.center);
\draw (16.center) to (17.center);
\draw (17.center) to (18.center);
\draw [style=latex arrow] (18.center) to (19.center);
\draw [style=latex arrow] (20.center) to (12);
\draw [style=thin] (21.center) to (22.center);
\draw [style=thin] (22.center) to (24.center);
\draw [style=thin] (24.center) to (23.center);
\draw (25.center) to (28.center);
\draw (28.center) to (27.center);
\draw (27.center) to (26.center);
\draw [style=latex arrow] (26.center) to (29.center);
\draw [style=latex arrow] (11) to (31.center);
\draw [style=latex arrow] (33.center) to (13);
\draw (32.center) to (33.center);
\end{pgfonlayer}
\end{tikzpicture}