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
[go: Go Back, main page]

Computer Design

First Supervision

  1. State Moore's law and comment on its applicability to modern and future systems.
  2. 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?
  3. 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.
  4. 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.
  5. Explain the concept of endianness.
  6. 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?
  7. (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?
  8. (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?
  9. 2004 paper 5 question 2, parts (a) and (c)

Second Supervision

  1. (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.
  2. What are 'operating modes', why are they necessary, and what support does the ARM instruction set provide.
  3. 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?
  4. Why is the execution of LDM, STM complicated? How does the ARM processor execute LDM, STM instructions?
  5. first part of the course
    2000 paper 6 question 2
    2003 paper 3 question 1, parts (a) and (b)
  6. Caches
    2003 paper 5 question 2
    2001 paper 6 question 2

Third Supervision

Fourth Supervision

Return to main page...