(30 points)
Read the paper "NICE: an elegant and powerful 32-bit architecture,"
B. Ulmann,
Computer Architecture News Vol. 25, No. 4, September 1997.
(I handed it out in class or mailed it to you, depending on whether
you're still in Northfield.)
Some of the questions below concern the addressing modes
described in
the table at the bottom right of page 31. Some clarification
of these modes is in order before you get started. The
"#[Rxx]" addressing mode is very much like the second
operand of the MIPS instructions lw and sw. Also,
"Rxx--" means that the register is decremented after its contents
are used as an operand (post-decrement), and "--Rxx" means
the register is decremented
before it is used (pre-decrement). Thus, for example, "move r14, @--r12" would
decrement r12, then get the word pointed to by the new r12, and put
that word in r14.
One last note. There are typos aplenty in this paper, and at least
a couple of them seem to involve dollar signs. A dollar sign preceding
a number indicated that the number is expressed in hexadecimal
notation. Otherwise, the base is ten. If you think there should
be a dollar sign somewhere where there isn't one, it's probably a typo.
Let's get started.
- In NICE, what is the smallest addressable unit of memory? For MIPS,
the smallest addressable unit is one byte, so instruction addresses
are multiples of four. What can you say about instruction addresses
on NICE?
- What do the NICE instructions
"add r3, r4, r5" and "?!z mov r15, #label" do? Show machine
code for each of them.
- Why are immediate operands important in instruction set design? In
NICE, where are immediate operands stored? What range
of integers are allowable as immediate operands? What
major weakness does NICE have with respect to immediate operands?
- To what uses might post-increment and pre-decrement
addressing modes be put?
- Consider the multi-cycle datapath of Figure 5.36 on page
315 of Patterson and Hennessy. Either draw a similar datapath or
modify Figure 5.36 to make it suitable for implementing the
NICE instruction set. You may ignore anything related to interrupts,
and you should not concern yourself with the internal structure
of the control required to drive your datapath.
- What do you think NICE's strengths
are? How about its weaknesses? The author says that NICE is
"well suited for educational
purposes as well as for small control applications." For what
reasons would NICE be inappropriate for higher performance
computing?
Thanks for joining me this term.
Have a good break.