You are on page 1of 7

# The American University in Cairo

Department of Computer Science and Engineering

EENGR352 /CSCE 231

Computer Organization and Assembly Programming

First Midterm ‐ Fall 2010

Name:_______________________________________________

ID: __________________________________

Tips/Instructions:

‐ Total exam time is 70 minutes.
‐ No external aids are allowed; these include: friends, notes, books, text messages, or the
Internet.
‐ Some problems can be solved in multiple ways. Only one is required.
‐ Unclear answers or unclear hand writing will reduce your chances.
‐ Do your best! You will be graded for your understanding and the way you think of a problem.

Best of Luck!
October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 1 (5 Points)
Just like we defined MIPS rating, we can also define something called the MFLOPS rating which stands
for Millions of Floating Point operations per Second. If Machine A has a higher MIPS rating than that of
Machine B, then does Machine A necessarily have a higher MFLOPS rating in comparison to Machine B?

ANSWER

A higher MIPS rating for machine A compared to machine B need not imply a higher MFLOPS rating for
that machine A. One reason for this can be the following: It is possible that the floating point
instructions form a fairly low proportion of the all the instructions in a given program. So if the floating
point operations of machine B are far more efficient than the floating point operations of machine A
while the other (integer, memory etc) instructions are more efficient on B, then machine B gets a higher
MFLOPS rating than A while A has a higher MIPS rating.

Page 2 of 7

October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 2 (15 Points)
Consider two different implementations, M1 and M2, of the same instruction set. There are three
classes of instructions (A, B, and C) in the instruction set. M1 has a clock rate of 80 MHz and M2 has a
clock rate of 100 MHz. The average number of cycles for each instruction class and their frequencies (for
a typical program) are as follows:

## Instruction Class Machine M1 –

Instruction Class Machine M1 – Machine M2 – Frequency
Cycles/Instruction Class Cycles/Instruction Class
A 1 2 60%
B 2 3 30%
C 4 4 10%
Machine M2 –
(a) Calculate the average CPI for each machine, M1, and M2.
ANSWER

For Machine M1: Clocks per Instruction = (60/100)* 1 + (30/100)*2 + (10/100)*4 = 1.6

For Machine M2: Clocks per Instruction = (60/100)*2 + (30/100)*3 + (10/100)*4 = 2.5

(b) Calculate the average MIPS ratings for each machine, M1 and M2.

ANSWER

For Machine M1: Average MIPS rating = Clock Rate/(CPI * 106) = (80 * 106) / (1.6*106) = 50.0

For Machine M2: Average MIPS rating = Clock Rate/(CPI * 106) = (100 * 106) / (2.5*106) = 40.0

(c)  Which machine has a smaller MIPS rating ? Which individual instruction class CPI do you need to
change, and by how much, to have this machine have the same or better performance as the
machine with the higher MIPS rating (you can only change the CPI for one of the instruction classes
on the slower machine)?
ANSWER

Machine M2 has a smaller MIPS rating. If we change the CPI of instruction class A for Machine M2 to 1,
we can have a better MIPS rating than M1 as follows:

Clocks per Instruction = (60/100)*1 + (30/100)*3 + (10/100)*4 = 1.9

Average MIPS rating = Clock Rate/(CPI * 106) = (100 * 106) / (1.9*106) = 52.6

Page 3 of 7

October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 3 (10 Points)
(Amdahl’s law question) Suppose you have a machine which executes a program consisting of 50%
floating point multiply, 20% floating point divide, and the remaining 30% are from other instructions.

(a) Management wants the machine to run 4 times faster. You can make the divide run at most 3 times
faster and the multiply run at most 8 times faster. Can you meet management’s goal by making only
one improvement, and which one?

ANSWER

Amdahl’s Law states: Execution time after improvement = (Execution time affected by
improvement)/(Amount of Improvement) + Execution time unaffected

Assuming initially that the floating point multiply, floating point divide and the other instructions had
the same CPI, Execution time after Improvement with Divide = (20)/3 + (50 + 30) = 86.67

Execution time after Improvement with Multiply = (50)/8 + (20 + 30) = 66.67

The management’s goal cannot be met by making the improvement with Multiply alone.

(b)  Dogbert has now taken over the company removing all the previous managers. If you make both the
multiply and divide improvements, what is the speed of the improved machine relative to the
original machine?
ANSWER

If we make both the improvements,

Execution time after Improvement = (50)/8 + (20)/3 + (30) = 53.33

The speedup relative to the original machine = (100)/(53.33) = 1.88

Page 4 of 7

October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 4 (10 Points)
In MIPS assembly, write an assembly language version of the following C code segment:

## int A, B;

for (i=1; i < 100; i++) {
A[i] = A[i-1] + B[i];
}

At the beginning of this code segment, the only values in registers are the base address of arrays A and B
in registers \$a0 and \$a1. Avoid the use of multiplication instructions–they are unnecessary.

ANSWER

The MIPS assembly sequence is as follows:

## li \$t0, 1 # Starting index of i

li \$t5, 100 # Loop bound
loop:
lw \$t1, 0(\$a1) # Load A[i-1]
lw \$t2, 4(\$a2) # Load B[i]
add \$t3, \$t1, \$t2 # A[i-1] + B[i]
sw \$t3, 4(\$a1) # A[i] = A[i-1] + B[i]
addi \$a1, 4 # Go to i+1
addi \$a2, 4 # Go to i+1
addi \$t0, 1 # Increment index variable
bne \$t0, \$t5, loop # Compare with Loop Bound

halt:

Page 5 of 7

October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 5 (15 Points)
Suppose that a new MIPS instruction, called bcp, was designed to copy a block of words from one
address to another. Assume that this instruction requires that the starting address of the source block
be in register \$t1 and that the destination address be in \$t2. The instruction also requires that the
number of words to copy be in \$t3 (which is > 0). Furthermore, assume that the values of these registers
as well as register \$t4 can be destroyed in executing this instruction (so that the registers can be used as
temporaries to execute the instruction).

Do the following: Write the MIPS assembly code to implement a block copy without this instruction.
Write the MIPS assembly code to implement a block copy with this instruction. Estimate the total cycles
necessary for each realization to copy 100‐words on the multicycle machine (assuming that any
instruction will take only one cycle to execute).

ANSWER

The MIPS code to implement block copy without the bcp instruction is as follows:

loop:
lw \$t4, 0(\$t1)
sw \$t4, 0(\$t2)
addi \$t1, \$t1, 4
addi \$t2, \$t2, 4
subi \$t3, \$t3, 1
bne \$t3, \$zero, loop
To implement block copy with this instruction:

li \$t1, src
li \$t2, dst
li \$t3, count
bcp

Assuming each instruction in the MIPS code of ‘loop’ takes 1 cycle, for doing a 100‐word copy the total
number of cycles taken is 6*100 = 600 cycles.

Page 6 of 7

October 13, 2010
CSCE 231 / EENGR352 – First Midterm

Question 6 (BONUS – 7 Points)
In MIPS assembly, write an assembly language version of the following C code segment:

## for (i = 0; i < 98; i ++) {

C[i] = A[i + 1] - A[i] * B[i + 2]
}

## Arrays A, B and C start at memory location A000hex, B000hex and C000hex respectively. Try to reduce

the total number of instructions and the number of expensive instructions such as multiplies.

ANSWER

The MIPS assembly sequence is as follows:

## li \$s0, 0xA000 # Load Address of A

li \$s1, 0xB000 # Load Address of B
li \$s2, 0xC000 # Load Address of C
li \$t0, 0 # Starting index of i
li \$t5, 98 # Loop bound
loop:
lw \$t1, 0(\$s1) # Load A[i]
lw \$t2, 8(\$s2) # Load B[i+2]
mul \$t3, \$t1, \$t2 # A[i] * B[i+2]
lw \$t1, 4(\$s1) # Load A[i+1]
add \$t2, \$t1, \$t3 # A[i+1] + A[i]*B[i+2]
sw \$t2, 4(\$s3) # C[i] = A[i+1] + A[i]*B[i+2]
addi \$s1, 4 # Go to A[i+1]
addi \$s2, 4 # Go to B[i+1]
addi \$s3, 4 # Go to C[i+1]
addi \$t0, 1 # Increment index variable
bne \$t0, \$t5, loop # Compare with Loop Bound

halt:

Page 7 of 7