From: Luke Kenneth Casson Leighton Date: Mon, 8 Jan 2024 11:41:09 +0000 (+0000) Subject: bug 1244: add slide for describing load/store fault-first X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6dbce04d6a586e250eb0fe0edf731bb5c0ad5ccd;p=libreriscv.git bug 1244: add slide for describing load/store fault-first --- diff --git a/conferences/fosdem2024/fosdem2024_ddffirst/fosdem2024_ddffirst.tex b/conferences/fosdem2024/fosdem2024_ddffirst/fosdem2024_ddffirst.tex index a76f7e537..f41b20c4c 100644 --- a/conferences/fosdem2024/fosdem2024_ddffirst/fosdem2024_ddffirst.tex +++ b/conferences/fosdem2024/fosdem2024_ddffirst/fosdem2024_ddffirst.tex @@ -126,6 +126,36 @@ function op\_cmpi(BA, RA, SI) # cmpi not vector-cmpi! \end{itemize} \end{frame} +\frame{\frametitle{Load/Store Fault-First} + + \begin{itemize} + \item Problem: vector load and store can cause a page fault + \item Solution: a protocol that allows optional load/store + \item instruction \textit{requests} a number of elements + \item instruction \textit{informs} the number actually loaded + \item first load/store is not optional + \end{itemize} +} + +\begin{frame}[fragile] + \frametitle{Data-Dependent Fail-First} + + \begin{semiverbatim} + function op\_cmpi(BA, RA, SI) # cmpi not vector-cmpi! + int i, id=0, ira=0; + for (i = 0; i < VL; i++) + CR[BA+id] <= compare(ireg[RA+ira], SI); + if (reg\_is\_vectorised[BA] ) \{ id += 1; \} + if (reg\_is\_vectorised[RA])  \{ ira += 1; \} + \end{semiverbatim} + + \begin{itemize} + \item Above is oversimplified: predication etc. left out + \item Scalar-scalar and scalar-vector and vector-vector now all in one + \item OoO may choose to push CMPIs into instr. queue (v. busy!) + \end{itemize} +\end{frame} + \frame{\frametitle{Additional Simple-V features}