ʲοĵ
1 ϰ
5ԳP1P2ڻM1M2УٶM1M2ļ۸ֱ5000Ԫ8000Ԫ±P1P2M1M2ʱָ M1 M2 ָ ִʱ(ms) ָ ִʱ(ms) 66P1 20010 10000 15010 5000 33P2 30010 3 42010 6 ش⣺
1 P1̨ٶȿ죿٣P2أ 2 M1ִP1P2ٶȷֱǶMIPSM2ϵִٶָǶ٣ִٶ
P2̨ٶȿ죿٣ 3 ٶM1M2ʱƵʸ800MHz1.2GHzM1M2ִP1ʱƽʱ
CPIǶ٣ 4 ijûҪʹóP1ҸûҪϵͳӦʱʣô
ûҪʱӦѡM1M2ΪʲôʾԼ۱Ͽǣ 5 һûҲҪûʹP1P2һ࣬ҪĵҲӦʱ
䣬ôӦѡM1M2Ϊʲô
ο𰸣
1 P1M2M1һP2M1M2һ
2 M1P1ٶΪ200M/10=20MIPSP2Ϊ300k/0.003=100MIPS
M2P1ٶΪ150M/5=30MIPSP2Ϊ420k/0.006=70MIPS
ִٶP2Ϊ100/70=1.43M1M20.43 3 M1ִP1ʱƽʱCPIΪ10800M/(200106)=40
M2ִP1ʱƽʱCPIΪ51.2G/(150106)=40
4 P1ʱM1M2Լ۱ȣΪûҪϵͳӦʱ䣬Լ۱е
Ӧִʱ䣬ΪִʱĵԼ۱RΪ
R=1/(ִʱ۸)
RԽ˵Լ۱ԽߣҲִʱ۸ֵԽСԼ۱Խߡ Ϊ105000 > 58000ԣM2Լ۱ȸߡӦѡM2
5 P1P2Ҫͬȿǣжַʽִʱܺ͡ƽƽ
ƽʽΪ (10+0.003)/25000 > (5+0.006)/28000M2Լ۱ȸߣӦѡM2
üƽʽΪsqrt(100.003) 5000 < sqrt(50.006) 8000M1Լ۱ȸߣӦѡM1
6M1M2ָͬʱƵʷֱΪ1GHz1.5GHzֲָͬ͵ָA~E±M1M2ÿָƽʱCPI A B C D E M1 M2 1 2 2 2 2 4 3 5 4 6 ش⣺
1M1M2ķֵMIPSǶ٣
2ٶijPָУָȫָͬPM1M2ʱ̨죿٣M1M2ִгPʱƽʱCPIǶ٣ ο𰸣
1M1ϿѡһζAָɵijֵMIPSΪ1000MIPS
M2ϿѡһABָɵijֵMIPSΪ1500/2=750MIPS 25ָȫָͬԸռ20%
M1M2ִгPʱƽʱCPIֱΪ M120%(1+2+2+3+4)= 0.212 = 2.4
ʲοĵ
ʲοĵ
M220%(2+2+4+5+6)= 0.219 = 3.8
PָΪNM1M2ϵִʱֱΪ
M12.4 N1/1G = 2.4N (ns) M23.8N1/1.5G = 2.53 N (ns)
M1ִPٶȸ죬ÿָƽ0.13nsҲM1M20.13/2.53100%5% ˼˵PM1ִбM2Ͽ (3.8C2.4)/3.8100%= 36.8%ôȻǴġʴʲôط
7ͬһָòͬķֻM1M2M1ʱΪ0.8nsM2ʱΪ1.2nsijPڻM1ʱCPIΪ4M2ϵCPIΪ2ڳP˵ִ̨ٶȸ죿٣ ο𰸣
PָΪNM1M2ϵִʱֱΪ
M14 N0.8 = 3.2N (ns) M22 N1.2 = 2.4 N (ns)
ԣM2ִPٶȸ죬ÿָƽ0.8nsM10.8/3.2100%=25%
9
8ijMʱƵΪ4GHzûPMϵָΪ810CPIΪ1.25PMϵִʱǶ٣ڻMϴӳPʼִнʱ4룬PռõCPUʱİٷֱǶ٣ ο𰸣
PMϵִʱΪ1.2581091/4G = 2.5 sPִпʼִнʱΪ4룬2.5PCPUִʱ䣬ʱִвϵͳû PռõCPUʱİٷֱΪ2.5/4 = 62.5%
9ٶijijθԳֲָͬS1S2ʱƵΪ500MHz
MУĿָõָABCDࡣָMϵCPIָõĸָ±ʾ A B C D ָCPI S1ָ S2ָ 1 5 1 2 2 1 3 2 1 4 1 5 ʣS1S2жָCPIΪ٣ʱΪ٣ִʱΪ٣
ο𰸣
S110ָCPIΪ (51+22+23+14)/10=1.9, ʱΪ101.9=19ִʱΪ19/500M = 38ns
S28ָCPIΪ (11+12+13+54)/8 =3.25, ʱΪ83.25=26ִʱΪ26/500M = 52ns
עͬһԴͬһ̨ɵĿִͬʱܲͬңָٵĿִʱһ١
10ٶMʱƵΪ1.2GHzijPڻMϵִʱΪ12ӡPŻʱ
еij4ָһ2λָõŻijP֪Mϳ˷ָCPIΪ5ָCPIΪ2PִʱPִʱ1.2Pж˷ָ滻ִָУ ο𰸣
ȻPִʱΪ10룬ˣPP2ӣˣִʱָij˷ָΪ1.2G2/(5C2) = 800M
ϰ
3ʵиת 1 (25.8125)10= (?)2= (?) 8= (?) 16 2 (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421 3 (0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16
ʲοĵ
ʲοĵ
4 (4E.C)16 = (?)10= (?) 2 ο𰸣
1 (25.8125)10 = (1 1001.1101)2 = (31.64) 8 = (19.D) 16
2(101101.011)2 = (45.375)10 = (55.3) 8 = (2D.6) 16 = (0100 0101.0011 0111 0101) 8421
3(0101 1001 0110.0011)8421 = (596.3)10 = (1001010100.01001100110011) 2 = (254.4CCC) 16 4(4E.C)16 = (78.75)10 = (0100 1110.11) 2 4 ٶΪ8λ1λţ7λֵдиԭͲʾ
+0.1001C0.1001+1.0C1.0+0.010100C0.010100+0C0 ο𰸣
ԭ +0.1001 0.1001000 0.1001000 C0.1001 1.1001000 1.0111000 +1.0 C1.0 1.0000000 +0.010100 0.0101000 0.0101000 C0.010100 1.0101000 1.1011000 +0 0.0000000 0.0000000 C0 1.0000000 0.0000000 5 ٶΪ8λ1λţ7λֵдиIJʾ
+1001C1001+1C1+10100C10100+0C0 ο𰸣
+1001 10001001 00001001 C1001 01110111 11110111 +1 10000001 00000001 C1 011111111 11111111 +10100 10010100 00010100 C10100 01101100 11101100 +0 10000000 00000000 C0 10000000 00000000 6 ֪ [R]R
1[R]=1.1100111 2[R]=10000000 3[R]=0.1010010 4[R]=11010011 ο𰸣
1[R]=1.1100111 R = C0.0011001B 2[R]=10000000 R = C10000000B = C128 3[R]=0.1010010 R = +0.101001B 4[R]=11010011 R = C 101101B = C 45
7ٶһ̨32λֳĻдòʾIEEE 754ʾĴR1R2
ݷֱΪR10000108BHR28080108BHָͬԼĴвͬIJִָͬʱĴݶӦֵͬٶִָʱΪĴR1R2ݣR1R2вֱֵΪ٣ 1 ӷָ 2 ˷ָ 3 ȸָ ο𰸣 R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011b R2 = 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b 1ӷָR1R2DzʾˣֱֵΪR1108BH,
R28080108BH
2ڴ˷ָR1R2DzĴʾλ֪ R1
ʲοĵ
ʲοĵ
Ϊ R2ΪR1ֵΪ+108BH, R2ֵΪC(0111 1111 0111 1111 1110 1111 0111 0100b + 1b) = C7F7FEF75H
3ڵȸָR1R2DzIEEE754ȸʾIEEE 754
УȸλΪ32λа1λλ8λ룬23λβ R1еݿ֪λΪ0ʾΪΪ0000 0000βΪ000 0000 0001 0000 1000 1011ΪǹָΪC126βûص1ʮƱʾβΪ+0.002116HR1ʾֵΪ+0.002116H 10-126 R2еݿ֪λΪ1ʾΪΪ0000 0001 βΪ000 0000 0001 0000 1000 1011ΪָΪ1C127 = C126βص1ʮƱʾβΪC1.002116HR2ʾֵΪC1.002116H 10-126
8ٶMֳΪ32λòʾ±һиڻMִеC
еĹϵʽеıɱкݵд ϵʽ 0 == 0U C1 < 0 C1 < 0U 2147483647 > C2147483647 C 1 2147483647U > C2147483647 C 1 2147483647 > (int) 2147483648U C1 > C2 (unsigned) C1 > C2 з з з з 1 1 0 1 0 1 1 1 000B = 000B 111B (C1) < 000B (0) 111B (232C1) > 000B(0) 0111B (231C1) > 1000B (C231) 0111B (231C1) < 1000B(231) 0111B (231C1) > 1000B (C231) 111B (C1) > 1110B (C2) 111B (232C1) > 1110B (232C2) ˵
9һCԳһaÿԪصĺ͡lenΪ0ʱֵӦ0
ڻִʱȴ˴洢쳣ʲôԭɵģ˵Ӧġ
1 float sum_elements(float a[], unsigned len) 2 { 3 int i; 4 float result = 0; 5 6 for (i = 0; i <= lenC1; i++) 7 result += a[i]; 8 return result; 9 }
ο𰸣
lenunsignedԣlen=0ʱִlen-1ĽΪ111ɱʾκСʹѭ屻ִУԪصķԽ磬洢쳣 ֻҪlenΪintͣѭIJΪi β 6λ 5λ 16һλλΪУƫóΪ4 1λ 1 ָʽʾʮ+1.7C0.12+19C1/8 2 дøʽıʾΧ12λ㲹ʾΧȽϡ ο𰸣ٶ01뷨룩 1 +1.7 = +1.1011001B = 0.011011B 41, ʽΪ1 +16 = 17 = 10001B, βΪ+0.011011IJ룬 0.011011+1.7ʾΪ0 10001 011011 C0.12 = C 0.000111101B = C 0.011111B 4C1, ʽΪ C1 + 16 =15 = 01111B, βΪC 0.011111 IJ룬1.100001, ԨC0.12ʾΪ1 01111 100001 ʲοĵ

