\title{Opgaver til Microprocessors 2} \date{2021-03-24} \section{Problem 4.1} \emph{In Fig. 4-6, the B bus register is encoded in a 4-bit field, but the C bus is represented as a bit map. Why?} It is often wanted to save the result from the ALU in multiple destination registers. Therefore one cannot take the shortcut with a 4-bit field, as that would only allow one save at the time. One cannot present 1 and 2 at the same time in 4-bit field, as that would activate register 3. \section{Problem 4.5} {\itshape Suppose that in the example of Fig. 4-14(a) the statement \begin{verbatim} k = 5; \end{verbatim} is added after the if statement. What would the new assembly code be? Assume that the compiler is an optimizing compiler. } Well k is set either way, so one can invert the if. \begin{verbatim} ILOAD j ILOAD k IADD BIPUSH 3 IF_ICMPEQ L1 ILOAD j BIPUSH 1 ISUB ISTORE j L1: BIPUSH 5 ISTORE k \end{verbatim} \section{Problem 4.9} {\itshape How long does a 2.5-GHz Mic-1 take to execute the Java statement \begin{verbatim} i = j + k \end{verbatim} Give your answer in nanoseconds } First we "compile" the java statement :-). \begin{verbatim} ILOAD j ILOAD k IADD ISTORE i \end{verbatim} Then we can add how many microinstructions each takes (\textbf{bold} number) multiplied with how many times it is used. \begin{equation} \underbrace{\mathbf 1 \cdot 4}_{MAIN} + \underbrace{\mathbf 5 \cdot 2}_{ILOAD} + \underbrace{\mathbf 3}_{IADD} + \underbrace{\mathbf 6}_{ISTORE} = 23 \end{equation} Then we can multiply with the nanoseconds a single instruction takes \begin{equation} \frac 1 {2.5 \cdot 10^9} \cdot 23 = 9.2 \cdot 10^{-9}\,, \end{equation} which is 9.2 Nanoseconds.