1. [4] In the summation example in class we saw two solutions: one where processor 0 is
doing all the summation, and the second where there is a tree-like calculation. We found
that the tree-like way is better. State two reasons as to why the tree-like solution is better.
2. [8] In superscalar processors, we increase the number of execution units in order to be
able to execute several instructions at the same time. What modifications do we have to
make for the fetch, decode, issue and commit phases?
3. [6] Suppose we have an eight-core processor. For each one of the following scenarios,
indicate the maximum number of threads that can be executed in parallel and why.
a) Each core is superscalar but not hyperthreading
b) Each core is superscalar and two-way hyperthreading
c) Each core is neither superscalar nor hyperthreading (just pipelining)
4. [6] Superscalar capability makes the processor execute several instructions at the same
time. This is called instruction-level-parallelism. We measure the performance of this
hardware using IPC (Instructions per cycle). Is speculative execution needed for
superscalar processors to work? Justify
5. [2] We have computer chips built as SIMS (e.g. GPUs). However, there are no chips
built as MISD, why is that?
6. [4] Before multicore processors, that is, during the single core era, programs are getting
faster with every new generation of processors without any effort from the program. This
is due to two factors. What are they?