We need four states, two of which have the same output (Mlite).
S (current state) output NS (next state) ----------------------------------------------------- 00 Llite 01 01 Mlite 10 10 Rlite 11 11 Mlite 00 -----------------------------------------------------Output:
Mlite = S0 Rlite = (not S0) and S1 Llite = (not S0) and (not S1) = S0 nor S1Next state:
NS0 = not S0 NS1 = S0 xor S1
AVERAGE CPI = Sigma( CPIi * Ci)/Sigma(Ci) = 0.25*IC * Sigma(CPIi)/IC = 0.25 * Sigma(CPIi) (0 < i <= 4) Performance for M2 / Performance for M1 = CPU Time for M1 / CPU Time for M2 = (IC * CPI for M1/Clock Rate for M1)/(IC * CPI for M2/Clock Rate for M2) ( 0.25 * Sigma(CPIi for M1) / Clock Rate for M1 ) =--------------------------------------------------- ( 0.25 * Sigma(CPIi for M2) / Clock Rate for M2 ) = ( (1+2+3+4 ) / 500 ) / ( (2+2+4+4) / 750 ) = 1.25
M1 performance
C1 C1 ----------------- = ------ (1+2+3+4)*0.25*IC 2.5*ICM2 performance
750 750 ----------------- = ---- (2+2+4+4)*0.25*IC 3*ICSolve for C1 in
C1 750 ------ = ------ 2.5*IC 3*ICWe get C1 = 625 MHz.
MFP MNFP floating point multiply 10% 30 900 floating point add 15% 45 900 floating point divide 5% 15 750 integer 70% 210 210 total 100% 300 2760
CPU TIME for MFP = IC * CPI / Clock Rate = 300 * 3.6 / 1000 = 1.08 seconds CPU TIME for MNFP = IC * CPI / Clock Rate 300 * 1000000 * (0.1*30 + 0.15*20 + 0.05*50 + 0.7*1) * 2 =------------------------------------------------------------ 1000 * 1000000 = 5.52 seconds
fraction speed up --------------------------- 0 1.00 0.25 1.25 0.50 1.67 0.75 2.50 1.0 5.00