cs3410 hw1 review 2014, 2, 21. agenda we will go through the hw1 questions together tas will then...
TRANSCRIPT
Question 1: Karnaugh Mapa b c out
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 0
0 0 0 1
1 1 0 1
00 01 11 10
0
1
cab
0
1
0
1
1
1
0
0
• Sum of products:
• Karnaugh map minimization:• Cover all 1’s• Group adjacent blocks of 2n
1’s that yield a regular shape• Encode common features
cbabcabcacabout
cabaout
Rules for Karnaugh Map Minimization
• Minterms can overlap• Minterms can span 1, 2, 4, 8 … cells• The map can wrap around
0 0 0 1
1 1 0 1
00 01 11 10
0
1
cab
1
0
0
0
1
0
0
0
0 0 0 1
1 1 0 1
10 00 01 11
0
1
cab
1
0
1
0
0
0
0
0
Question 2: Numbers & Arithmetic
• Binary translation:– Base conversion via repetitive division
• From binary to Hex and Oct• Negating a number (2’s complement)• Overflow– Overflow happened iff
carry into msb != carry out of msb
Question 4: FSM (cont.)Current state Input Next state Output
x1 x2 x0 x1’=x0 x2’=x1
0 0 0 0 0 okay
0 0 1 1 0 okay
0 0 2 2 0 okay
0 1 0 0 0 okay
0 1 1 1 0 okay
0 1 2 2 0 okay
0 2 0 0 0 spam
… … … … … …
State (x1=0, x2=0) and (x1=0, x2=1) have exactly the same transitions AND output. So they are NOT distinct states.
Question 7: Performance
• Instruction mix for some program P, assume:– 25% load/store ( 3 cycles / instruction)– 60% arithmetic ( 2 cycles / instruction)– 15% branches ( 1 cycle / instruction)
• CPI:– 3 * .25 + 2 * .60 + 1 * .15 = 2.1
• CPU Time = # Instructions x CPI x Clock Cycle Time– Assuming 400k instructions, 30 MHz :
• 400k * 2.1 / 30 = 28000 µs (1 µs = 1 microsecond = 1/1M S)
Question 8 (cont.)
• Refer to section 1.6 in the text book• 4.3.1: The clock cycle time is determined by
the critical path (the load instruction)• 4.3.2: – Speedup =
– Execution time = cycle time * num of instructions– Speedup < 1 means we are actually slowing down
Execution time (old)Execution time (new)
Question 8 (cont.)
• 4.3.3:– Cost-performance ratio (CPR) = – The higher, the better– This question asks for a “comparison” of CPR
CPR ratio= = *
PerformanceCost
CPR (old)CPR (new)
Cost (new)Cost (old)
Perf (old)Perf (new)
1speedup
Question 9/10/11: Assembler Code
• Writing the instructions in a human-readable format– http://www.cs.cornell.edu/courses/CS3410/2014s
p/MIPS_Vol2.pdf• Core instruction set– http://www.cs.cornell.edu/courses/CS3410/2014s
p/project/pa1/pa1.html
Assembler Code
• When writing the assembler code:– Decide which register stores which variable• Typically you should use $t0~$t9 and $s0~$s7 (You
don’t need to understand their difference now)
– Decide which instruction you want to use• Get familiar with the core instruction set• Get familiar with some basic patterns
Basic Assembler Coding Patterns
• Arithmetic– C code:
– Assembler:a = b + c;
#a: $s0, b: $s1, c:$s2ADD $s0, $s1, $s2
Basic Assembler Coding Patterns
• Brunch– C code:
– Assembler:
if(a < b)//DO A...
else//DO B...
#a: $s0, b: $s1SLT $t0, $s0, $s1BEQ $t0, $zero, POINTB#DO A...
POINTB:#DO B...
Basic Assembler Coding Patterns
• While loop– C code:
– Assembler:
while(a < b)//Do something...
#a: $s0, b: $s1LOOP:SLT $t0, $s0, $s1BEQ $t0, $zero, EXIT#Do something...J LOOPEXIT:#Out of the loop...
Basic Assembler Coding Patterns
• Array access– C code:
– Assembler:
int myArray[10];a = myArray[2];
#a: $s0, myArray: $s1LW $s0, 8($s1)
C Programming
• Have you tried the hello-world?• Use csuglab machines. It is easier.• How to read input from the terminal?– scanf:
– You need a buffer for itint scanf ( const char * format, ... );