No discussions for the remainder of the semester (including tomorrow). Class will be held as usual.
If you left your tacklebox behind after class today, go to CSE E301 during regular business hours to claim it.
Reminder: colored writing utensils are required on the remaining quizzes. See the syllabus for details.
On quiz 5, if any of the problems require it, I will provide a list of the control line names. You will still need to know what each one controls, though.
The term paper description is now online.
As promised...
BTW, because of the quiz on Wednesday 7/9, I decided to be nice and pushed back the due date I'd announced in class for program 3. Use the extra time wisely. Don't wait until Sunday to get started—remember, the TA and I don't have office hours over the weekend!
Here's the stack frame convention we are using.
The two exercises at the end of the pdf I posted Friday night are practice problems, not collected homework.
Here is a revised Box-n-Pointer diagram for the statements we got hung up on in class. Enjoy the cool retro ascii art ;)
BEFORE:
[ b | a | t | \0 | c | a | t | \0 | r | a | t | \0 ]
sa1a+0 +1 +2 +3 sa1b+0 +1 +2 +3 sa1c+0 +1 +2 +3
^ ^ ^
| | |
| +------------------+ |
| | +-------------------------------------+
| | |
sa1: [ * | * | * ]
[sa1a |sa1b |sa1c ]
sa1+0 +1 +2
char **x = sa1;
*(*(x + 1) + 2) = 'm';
Lefthand side...
(x + 1) == sa1 + (1 * 4)
*(X + 1) == MEM[ sa1 + (1 * 4) ] == sa1b
(*(x + 1) + 2) == sa1b + (1 * 2)
*(*(x + 1) + 2) == MEM[ sa1b + (1 * 2) ]
which gives us...
MEM[sa1b+2] := 'm'
AFTER STATEMENT EXECUTED:
[ b | a | t | \0 | c | a | m | \0 | r | a | t | \0 ]
sa1a+0 +1 +2 +3 sa1b+0 +1 +2 +3 sa1c+0 +1 +2 +3
^ ^ ^
| | |
| +------------------+ |
| | +-------------------------------------+
| | |
sa1: [ * | * | * ]
[sa1a |sa1b |sa1c ]
sa1+0 +1 +2
----------------------------------------------------------------------------------------------------
The next statement is trickier because from a C perspective, sa2 is
the CONTENTS of the memory location we've labeled "sa2" (unlike the
previous example where the symbol sa1 is used the same way in both the
C and MIPS code).
BEFORE:
[ h | a | t | \0 | m | a | t | \0 | s | a | t | \0 ]
anon0+0 +1 +2 +3 anon1+0 +1 +2 +3 anon2+0 +1 +2 +3
^ ^ ^
| | |
| +------------------+ |
| | +-------------------------------------+
| | |
[ * | * | * ]
[anon0|anon1|anon2]
anon3+0 +1 +2
^
|
sa2: [ * ] Note: This diagram is drawn from the MIPS implementation
[anon3]
*(sa1 + 2) = *(sa2 + 1); <-- the original C code
*(sa1 + 2) = *(*sa2 + 1); <-- the transformed C code: matches how we implemented it in
MIPS using a memory location to represent the VARIABLE
pointer sa2
Right hand side...
*sa2 == anon3
(*sa2 + 1) == anon3 + (1 * 4)
*(*sa2 + 1) == MEM[ anon3 + (1 * 4) ] == anon1
Lefthand side...
sa1 == sa1 <-- it's a symbolic address
(sa1 + 2) == sa1 + (2 * 4)
*(sa1 + 2) == MEM[ sa1 + (2 * 4) ]
which gives us...
MEM[ sa1 + (2 * 4) ] = anon1
AFTER STATEMENT EXECUTED:
[ b | a | t | \0 | c | a | m | \0 | r | a | t | \0 ]
sa1a+0 +1 +2 +3 sa1b+0 +1 +2 +3 sa1c+0 +1 +2 +3
^ ^
| |
| +------------------+
| |
| |
sa1: [ * | * | * ]
[sa1a |sa1b |anon1]
sa1+0 +1 +2
|
+------------+
|
V
[ h | a | t | \0 | m | a | t | \0 | s | a | t | \0 ]
anon0+0 +1 +2 +3 anon1+0 +1 +2 +3 anon2+0 +1 +2 +3
^ ^ ^
| | |
| +------------------+ |
| | +-------------------------------------+
| | |
[ * | * | * ]
[anon0|anon1|anon2]
anon3+0 +1 +2
^
|
sa2: [ * ] Note: This diagram is drawn from the MIPS implementation
[anon3]
Here's the promised follow-up to Monday's lecture. It has a couple additional exercises for you to try as an added bonus! Don't forget that IEEE754 FP numbers are fair game for the quiz.
Program 1 is due Wednesday.
Here's a link to SPIM's homepage
On the program, limit yourself to the instructions we have covered in class. No others are needed (nor desirable).
Program 0 is due Friday.
This exercise is about critically evaluating data; responses that do not reflect a critical appraisal are worthless.
Joshua is moving his Thursday hours to 3-5pm. The syllabus has been updated accordingly.
There is a industry standard equation used to estimate yield:
1
yield = ------------------------------------------
a
(1 + ( defects per area * die area / a ))
When Intel's Montecito Itanium 2 was first announced,
inspection of a wafer photo suggested that each die was approximately
30mmx25mm. Assuming a = 4 and a defect rate of 0.75
defects/cm^2, what is the expected yield? Assuming each wafer has 100
raw die and costs $2000 to manufacture, what is the cost per good die?
The syllabus has been updated with the TA's office hours and quiz dates have been scheduled.
Welcome to CDA 3101! Check this site regularly for the latest announcements: for instance... Discussion sessions will not meet this week. If you haven't done so already, please read the syllabus and course policies.
The mandatory biosketch assignment is due at the start of lecture on Monday 5/19. If you've written one previously, take the opportunity to tell me something new about yourself. (Should you be interested in such things, you can read Dave: fact or fiction?.)