Last fixes
This commit is contained in:
@@ -46,7 +46,7 @@ GPs are passed as references, so they do not need to be copied between modules.
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\tikzfig{img/tlm}
|
||||
\caption[Forward and backward path between TLM sockets \cite{Menard2017}.]{Forward and backward path between TLM sockets \cite{Menard2017}. $\blacksquare$ denotes an initiator socket, $\square$ denotes a target socket.}
|
||||
\caption[Forward and backward path between TLM sockets.]{Forward and backward path between TLM sockets \cite{Menard2017}. $\blacksquare$ denotes an initiator socket, $\square$ denotes a target socket.}
|
||||
\label{fig:tlm}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
@@ -67,8 +67,8 @@ With AT, a special protocol is used that uses a four-phase handshake:
|
||||
When an initiator requests data from a target, it starts the transaction with the \texttt{BEGIN\_REQ} phase by calling its \texttt{nb\_transport\_fw()} method.
|
||||
This method in turn calls the receiving module's target socket and the target module then enqueues the payload into its \revabbr{payload event queue}{PEQ}.
|
||||
The PEQ pretends it has received the payload after the delay, that the initiator has specified with its call to the transport method.
|
||||
If the target is not yet ready to accept a new request, it defers its \texttt{END\_REQ} phase until it is ready.
|
||||
During this time, the initiator is blocked from sending further requests either to this or other modules as the target applies \textit{backpressure} on the initiator.
|
||||
If the target is not yet ready to accept the new request, it defers its \texttt{END\_REQ} phase until it is ready.
|
||||
During this time, the initiator is blocked from sending further requests to this module as the target applies \textit{backpressure} on the initiator.
|
||||
This concept is called the \textit{exclusion rule}.
|
||||
Otherwise, the target directly responds the \texttt{END\_REQ} phase back to the initiator.
|
||||
|
||||
@@ -94,8 +94,8 @@ Analogously, it is also possible for the initiator to directly respond with the
|
||||
Besides this, it is also possible for the target to directly respond with the \texttt{BEGIN\_RESP} phase after it has received the \texttt{BEGIN\_REQ} phase and therefore skip the \texttt{END\_REQ}.
|
||||
The initiator has to react accordingly and must detect that the \texttt{END\_REQ} has been skipped.
|
||||
However, since the initiator is blocked due to backpressure during this period, this shortcut should only be used if the response is ready to send after a short delay.
|
||||
Another form of this shortcut is the combination with return path of the forward transport function call.
|
||||
Here, the return path is used to directly send the \texttt{BEGIN\_REQ} phase, without invoking the backward transport function altogether, reducing the required number of transport calls to only two.
|
||||
Another form of this shortcut is the combination with the return path of the forward transport function call.
|
||||
Here, the return path is used to directly send the \texttt{BEGIN\_RESP} phase, without invoking the backward transport function altogether, reducing the required number of transport calls to only two.
|
||||
|
||||
The last shortcut that can be made is the so-called \textit{early completion}.
|
||||
When the target receives the \texttt{BEGIN\_REQ} phase, it can already place the requested data into the payload and pass \texttt{TLM\_COMPLETED} as the return value back to the initiator.
|
||||
|
||||
Reference in New Issue
Block a user