Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Viktor Vafeiadis - Supervisions
Viktor Vafeiadis
Computer Design
First Supervision
State Moore's law and comment on its applicability to modern and future
systems.
Describe the accumulator-based, stack-based and general-purpose register architectures.
What are the benefits and the drawbacks of each architecture type?
Can you think of other paradigms?
Imagine a general-purpose register machine which does not support integer
multiplication. Write commented assembly code to perform multiplication
of two positive integers. Your solution's time complexity should be
logarithmic in the size of the smallest input.
[Hint: you might want to first write pseudocode in C/Java.] Optional: Extend your solution to allow multiplication of
negative integers represented using 2's complement arithmetic.
State Amdahl's law.
Consider a benchmark in the architecture above spends 10% of its time
doing multiplications. A hardware designer proposes to add a special MUL
instruction which should be faster by a factor of 20.
For the same die cost, another designer suggests to increase the data cache
improving memory performance by a factor of 1.25.
Assuming, memory operations account for 50% of the execution time, calculate which
suggestion will yield higher overall performance.
Explain the concept of endianness.
What does RISC stand for? The ARM is usually considered a RISC-style architecture,
but it has some instrustions SWP, LDM, STM which do not seem very RISCy. Furthermore
in most instructions the second operand can be shifted/rotated.
What is the purpose of these instructions and extensions?
(a) Write simple ARM code to compute the dot product of two integer vectors
a, b each of length N.
(b) Improve your code using MLA, and pre/post-incrementing addressing modes.
Comment on the improvement gained by using these instructions.
(c) How would your implementation change, if it is statically known that
N=3. What if N=1000?
(a) Explain the difference between caller-saved and callee-saved registers. Which
are more useful?
(b) How does the ARM procedure calling standard split the registers?
What is the purpose of r15 and r14? Should they really be general-purpose registers?
2004 paper 5 question 2, parts (a) and (c)
Second Supervision
(a) What are the tradeoffs between a fixed and a variable-length encoding?
How are ARM instructions encoded? What about x86 and JVM instructions?
(b) What are ARM Thumb instructions, why/when/how are they used? How are they
decoded and executed?
(c) Rewrite the fibonacci code on page 13, using ARM Thumb instructions.
Compare the code size of the ARM, the ARM Thumb and the JVM
(cf. lecture notes, page 22) versions of the fibonacci function.
What are 'operating modes', why are they necessary, and what support does
the ARM instruction set provide.
Explain the difference between virtual and physical addresses. Why is this
distinction important? How are virtual addresses mapped onto physical ones
in the ARM architecture?
Why is the execution of LDM, STM complicated?
How does the ARM processor execute LDM, STM instructions?
first part of the course
2000 paper 6 question 2
2003 paper 3 question 1, parts (a) and (b)
Caches
2003 paper 5 question 2
2001 paper 6 question 2