
15213 Introduction to Computer Systems

Nocona  Opteron  Pentium M  Pentium III  

Int +  0.5/0.5  1/1?  1/1  1/1 
Int *  10/1  3/1  4/1  4/1 
Int /  36/36  46/46  20/20  36/36 
Long /  106/106  76/76  
FP +  5/2  4/1  3/1  3/1 
FP *  7/2  4/1  5/2  5/2 
Float /  32  14  36  36 
Double /46  17  36  36  
Load  3/1  
Store  3/1 
Code slightly different from book, shown here using integer addition.
void combine(int* data, int n, int* dest) { int i; int r = 0; for (i = 0; i < n; i++) r = r + data[i]; *dest = r; }
Results:
CPE Int + Int * FP + FP * 2.20 10.00 5.00 7.00
Code slightly different from book, shown here using integer multiplication.
void combine_step2(int* data, int n, int* dest) { int i; int r0 = 1; /* even elements */ int r1 = 1; /* odd elements */ int limit = n1; /* new limit for stepping by 2 */ for (i = 0; i < limit; i += 2) { r0 = r0 * data[i]; r1 = r1 * data[i+1]; } /* multiplying in possibly remaining elements (here at most one) */ for ( ; i < n; i++) r0 = r0 * data[i]; *dest = r0 * r1; }
Results:
CPE Int + Int * FP + FP * 1.50 5.00 2.50 3.50
[ Home
 Schedule
 Assignments
 Exams
 Lab Machines
 Resources
]
[ Textbook
 Autolab
]
[ Newsgroup
 Blackboard
]
fp@cs
Frank Pfenning