µÚ 1 Õ ϰ Ìâ ´ð °¸
5£®ÈôÓÐÁ½¸ö»ù×¼²âÊÔ³ÌÐòP1ºÍP2ÔÚ»úÆ÷M1ºÍM2ÉÏÔËÐУ¬¼Ù¶¨M1ºÍM2µÄ¼Û¸ñ·Ö±ðÊÇ5000ÔªºÍ8000Ôª£¬ÏÂ±í¸ø³öÁËP1ºÍP2ÔÚM1ºÍM2ÉÏËù»¨µÄʱ¼äºÍÖ¸ÁîÌõÊý¡£ ³ÌÐò P1 P2 M1 Ö¸ÁîÌõÊý 200¡Á106 300¡Á103 Ö´ÐÐʱ¼ä(ms) 10000 3 Ö¸ÁîÌõÊý 150¡Á106 420¡Á103 M2 Ö´ÐÐʱ¼ä(ms) 5000 6 Çë»Ø´ðÏÂÁÐÎÊÌ⣺ £¨1£© ¶ÔÓÚP1£¬ÄĄ̈»úÆ÷µÄËٶȿ죿¿ì¶àÉÙ£¿¶ÔÓÚP2ÄØ£¿ £¨2£© ÔÚM1ÉÏÖ´ÐÐP1ºÍP2µÄËÙ¶È·Ö±ðÊǶàÉÙMIPS£¿ÔÚM2ÉϵÄÖ´ÐÐËÙ¶ÈÓÖ¸÷ÊǶàÉÙ£¿´ÓÖ´ÐÐËÙ¶È
À´¿´£¬¶ÔÓÚP2£¬ÄĄ̈»úÆ÷µÄËٶȿ죿¿ì¶àÉÙ£¿ £¨3£© ¼Ù¶¨M1ºÍM2µÄʱÖÓÆµÂʸ÷ÊÇ800MHzºÍ1.2GHz£¬ÔòÔÚM1ºÍM2ÉÏÖ´ÐÐP1ʱµÄƽ¾ùʱÖÓÖÜ
ÆÚÊýCPI¸÷ÊǶàÉÙ£¿ £¨4£© Èç¹ûij¸öÓû§ÐèÒª´óÁ¿Ê¹ÓóÌÐòP1£¬²¢ÇÒ¸ÃÓû§Ö÷Òª¹ØÐÄϵͳµÄÏìӦʱ¼ä¶ø²»ÊÇÍÌÍÂÂÊ£¬ÄÇô£¬
¸ÃÓû§ÐèÒª´óÅú¹º½ø»úÆ÷ʱ£¬Ó¦¸ÃÑ¡ÔñM1»¹ÊÇM2£¿ÎªÊ²Ã´£¿£¨Ìáʾ£º´ÓÐÔ¼Û±ÈÉÏ¿¼ÂÇ£© £¨5£© Èç¹ûÁíÒ»¸öÓû§Ò²ÐèÒª¹º½ø´óÅú»úÆ÷£¬µ«¸ÃÓû§Ê¹ÓÃP1ºÍP2Ò»Ñù¶à£¬Ö÷Òª¹ØÐĵÄÒ²ÊÇÏìӦʱ
¼ä£¬ÄÇô£¬Ó¦¸ÃÑ¡ÔñM1»¹ÊÇM2£¿ÎªÊ²Ã´£¿
²Î¿¼´ð°¸£º
£¨1£© ¶ÔÓÚP1£¬M2±ÈM1¿ìÒ»±¶£»¶ÔÓÚP2£¬M1±ÈM2¿ìÒ»±¶¡£
£¨2£© ¶ÔÓÚM1£¬P1µÄËÙ¶ÈΪ£º200M/10=20MIPS£»P2Ϊ300k/0.003=100MIPS¡£
¶ÔÓÚM2£¬P1µÄËÙ¶ÈΪ£º150M/5=30MIPS£»P2Ϊ420k/0.006=70MIPS¡£
´ÓÖ´ÐÐËÙ¶ÈÀ´¿´£¬¶ÔÓÚP2£¬ÒòΪ100/70=1.43±¶£¬ËùÒÔM1±ÈM2¿ì0.43±¶¡£ £¨3£© ÔÚM1ÉÏÖ´ÐÐP1ʱµÄƽ¾ùʱÖÓÖÜÆÚÊýCPIΪ£º10¡Á800M/(200¡Á106)=40¡£
ÔÚM2ÉÏÖ´ÐÐP1ʱµÄƽ¾ùʱÖÓÖÜÆÚÊýCPIΪ£º5¡Á1.2G/(150¡Á106)=40¡£
£¨4£© ¿¼ÂÇÔËÐÐP1ʱM1ºÍM2µÄÐԼ۱ȣ¬ÒòΪ¸ÃÓû§Ö÷Òª¹ØÐÄϵͳµÄÏìӦʱ¼ä£¬ËùÒÔÐÔ¼Û±ÈÖеÄÐÔ
ÄÜÓ¦¿¼ÂÇÖ´ÐÐʱ¼ä£¬ÆäÐÔÄÜΪִÐÐʱ¼äµÄµ¹Êý¡£¹ÊÐÔ¼Û±ÈRΪ£º
R=1/(Ö´ÐÐʱ¼ä¡Á¼Û¸ñ)
RÔ½´ó˵Ã÷ÐÔ¼Û±ÈÔ½¸ß£¬Ò²¼´£¬¡°Ö´ÐÐʱ¼ä¡Á¼Û¸ñ¡±µÄֵԽС£¬ÔòÐÔ¼Û±ÈÔ½¸ß¡£ ÒòΪ10¡Á5000 > 5¡Á8000£¬ËùÒÔ£¬M2µÄÐԼ۱ȸߡ£Ó¦Ñ¡ÔñM2¡£
£¨5£© P1ºÍP2ÐèҪͬµÈ¿¼ÂÇ£¬ÐÔÄÜÓжàÖÖ·½Ê½£ºÖ´ÐÐʱ¼ä×ܺ͡¢ËãÊõƽ¾ù¡¢¼¸ºÎƽ¾ù¡£
ÈôÓÃËãÊõƽ¾ù·½Ê½£¬Ôò£ºÒòΪ(10+0.003)/2¡Á5000 > (5+0.006)/2¡Á8000£¬ËùÒÔM2µÄÐԼ۱ȸߣ¬Ó¦Ñ¡ÔñM2¡£
ÈôÓü¸ºÎƽ¾ù·½Ê½£¬Ôò£ºÒòΪsqrt(10¡Á0.003) ¡Á5000 < sqrt(5¡Á0.006) ¡Á8000£¬ËùÒÔM1µÄÐԼ۱ȸߣ¬Ó¦Ñ¡ÔñM1¡£
6£®Èô»úÆ÷M1ºÍM2¾ßÓÐÏàͬµÄÖ¸Á£¬ÆäʱÖÓÆµÂÊ·Ö±ðΪ1GHzºÍ1.5GHz¡£ÔÚÖ¸ÁÖÐÓÐÎåÖÖ²»Í¬ÀàÐ͵ÄÖ¸ÁîA~E¡£ÏÂ±í¸ø³öÁËÔÚM1ºÍM2ÉÏÿÀàÖ¸ÁîµÄƽ¾ùʱÖÓÖÜÆÚÊýCPI¡£ »úÆ÷ M1 M2 Çë»Ø´ðÏÂÁÐÎÊÌ⣺
A 1 2 B 2 2 C 2 4 D 3 5 E 4 6 £¨1£©M1ºÍM2µÄ·åÖµMIPS¸÷ÊǶàÉÙ£¿
£¨2£©¼Ù¶¨Ä³³ÌÐòPµÄÖ¸ÁîÐòÁÐÖУ¬ÎåÀàÖ¸Áî¾ßÓÐÍêÈ«ÏàͬµÄÖ¸ÁîÌõÊý£¬Ôò³ÌÐòPÔÚM1ºÍM2ÉÏÔËÐÐʱ£¬ÄĄ̈»úÆ÷¸ü¿ì£¿¿ì¶àÉÙ£¿ÔÚM1ºÍM2ÉÏÖ´ÐгÌÐòPʱµÄƽ¾ùʱÖÓÖÜÆÚÊýCPI¸÷ÊǶàÉÙ£¿ ²Î¿¼´ð°¸£º
£¨1£©M1ÉÏ¿ÉÒÔÑ¡ÔñÒ»¶Î¶¼ÊÇAÀàÖ¸Áî×é³ÉµÄ³ÌÐò£¬Æä·åÖµMIPSΪ1000MIPS¡£
M2ÉÏ¿ÉÒÔÑ¡ÔñÒ»¶ÎAºÍBÀàÖ¸Áî×é³ÉµÄ³ÌÐò£¬Æä·åÖµMIPSΪ1500/2=750MIPS¡£ £¨2£©5ÀàÖ¸Áî¾ßÓÐÍêÈ«ÏàͬµÄÖ¸ÁîÌõÊý£¬ËùÒÔ¸÷Õ¼20%¡£
ÔÚM1ºÍM2ÉÏÖ´ÐгÌÐòPʱµÄƽ¾ùʱÖÓÖÜÆÚÊýCPI·Ö±ðΪ£º M1£º20%¡Á(1+2+2+3+4)= 0.2¡Á12 = 2.4
M2£º20%¡Á(2+2+4+5+6)= 0.2¡Á19 = 3.8
¼ÙÉè³ÌÐòPµÄÖ¸ÁîÌõÊýΪN£¬ÔòÔÚM1ºÍM2ÉϵÄÖ´ÐÐʱ¼ä·Ö±ðΪ£º
M1£º2.4¡Á N¡Á1/1G = 2.4N (ns) M2£º3.8¡ÁN¡Á1/1.5G = 2.53 N (ns)
M1Ö´ÐÐPµÄËٶȸü¿ì£¬Ã¿ÌõÖ¸ÁîÆ½¾ù¿ì0.13ns£¬Ò²¼´M1±ÈM2¿ì0.13/2.53¡Á100%¡Ö5%¡£ £¨Ë¼¿¼£ºÈç¹û˵³ÌÐòPÔÚM1ÉÏÖ´ÐбÈM2ÉÏ¿ì (3.8¨C2.4)/3.8¡Á100%= 36.8%£¬ÄÇô£¬Õâ¸ö½áÂÛÏÔÈ»ÊÇ´íÎóµÄ¡£ÇëÎÊ´íÔÚʲôµØ·½£¿£©
7£®¼ÙÉèͬһÌ×Ö¸ÁÓò»Í¬µÄ·½·¨Éè¼ÆÁËÁ½ÖÖ»úÆ÷M1ºÍM2¡£»úÆ÷M1µÄʱÖÓÖÜÆÚΪ0.8ns£¬»úÆ÷M2µÄʱÖÓÖÜÆÚΪ1.2ns¡£Ä³¸ö³ÌÐòPÔÚ»úÆ÷M1ÉÏÔËÐÐʱµÄCPIΪ4£¬ÔÚM2ÉϵÄCPIΪ2¡£¶ÔÓÚ³ÌÐòPÀ´Ëµ£¬ÄĄ̈»úÆ÷µÄÖ´ÐÐËٶȸü¿ì£¿¿ì¶àÉÙ£¿ ²Î¿¼´ð°¸£º
¼ÙÉè³ÌÐòPµÄÖ¸ÁîÌõÊýΪN£¬ÔòÔÚM1ºÍM2ÉϵÄÖ´ÐÐʱ¼ä·Ö±ðΪ£º
M1£º4 N¡Á0.8 = 3.2N (ns) M2£º2 N¡Á1.2 = 2.4 N (ns)
ËùÒÔ£¬M2Ö´ÐÐPµÄËٶȸü¿ì£¬Ã¿ÌõÖ¸ÁîÆ½¾ù¿ì0.8ns£¬±ÈM1¿ì0.8/3.2¡Á100%=25%¡£
8£®¼ÙÉèij»úÆ÷MµÄʱÖÓÆµÂÊΪ4GHz£¬Óû§³ÌÐòPÔÚMÉϵÄÖ¸ÁîÌõÊýΪ8¡Á109£¬ÆäCPIΪ1.25£¬ÔòPÔÚMÉϵÄÖ´ÐÐʱ¼äÊǶàÉÙ£¿ÈôÔÚ»úÆ÷MÉÏ´Ó³ÌÐòP¿ªÊ¼Æô¶¯µ½Ö´ÐнáÊøËùÐèµÄʱ¼äÊÇ4Ã룬ÔòPÕ¼ÓõÄCPUʱ¼äµÄ°Ù·Ö±ÈÊǶàÉÙ£¿ ²Î¿¼´ð°¸£º
³ÌÐòPÔÚMÉϵÄÖ´ÐÐʱ¼äΪ£º1.25¡Á8¡Á109¡Á1/4G = 2.5 s£¬´ÓÆô¶¯PÖ´ÐпªÊ¼µ½Ö´ÐнáÊøµÄ×Üʱ¼äΪ4Ã룬ÆäÖÐ2.5ÃëÊÇPÔÚCPUÉÏÕæÕýµÄÖ´ÐÐʱ¼ä£¬ÆäËûʱ¼ä¿ÉÄÜÖ´ÐвÙ×÷ϵͳ³ÌÐò»òÆäËûÓû§³ÌÐò¡£ ³ÌÐòPÕ¼ÓõÄCPUʱ¼äµÄ°Ù·Ö±ÈΪ£º2.5/4 = 62.5%¡£
9£®¼Ù¶¨Ä³±àÒëÆ÷¶Ôij¶Î¸ß¼¶ÓïÑÔ³ÌÐò±àÒëÉú³ÉÁ½ÖÖ²»Í¬µÄÖ¸ÁîÐòÁÐS1ºÍS2£¬ÔÚʱÖÓÆµÂÊΪ500MHzµÄ
»úÆ÷MÉÏÔËÐУ¬Ä¿±êÖ¸ÁîÐòÁÐÖÐÓõ½µÄÖ¸ÁîÀàÐÍÓÐA¡¢B¡¢CºÍDËÄÀà¡£ËÄÀàÖ¸ÁîÔÚMÉϵÄCPIºÍÁ½¸öÖ¸ÁîÐòÁÐËùÓõĸ÷ÀàÖ¸ÁîÌõÊýÈçϱíËùʾ¡£ ¸÷Ö¸ÁîµÄCPI S1µÄÖ¸ÁîÌõÊý S2µÄÖ¸ÁîÌõÊý A 1 5 1 B 2 2 1 C 3 2 1 D 4 1 5
ÇëÎÊ£ºS1ºÍS2¸÷ÓжàÉÙÌõÖ¸ÁCPI¸÷Ϊ¶àÉÙ£¿Ëùº¬µÄʱÖÓÖÜÆÚÊý¸÷Ϊ¶àÉÙ£¿Ö´ÐÐʱ¼ä¸÷Ϊ¶àÉÙ£¿ ²Î¿¼´ð°¸£º
S1ÓÐ10ÌõÖ¸ÁCPIΪ (5¡Á1+2¡Á2+2¡Á3+1¡Á4)/10=1.9, Ëùº¬µÄʱÖÓÖÜÆÚÊýΪ10¡Á1.9=19£¬Ö´ÐÐʱ¼äΪ19/500M = 38ns¡£
S2ÓÐ8ÌõÖ¸ÁCPIΪ (1¡Á1+1¡Á2+1¡Á3+5¡Á4)/8 =3.25, Ëùº¬µÄʱÖÓÖÜÆÚÊýΪ8¡Á3.25=26£¬Ö´ÐÐʱ¼äΪ26/500M = 52ns¡£
£¨×¢£º´ÓÉÏÊö½á¹ûÀ´¿´£¬¶ÔÓÚͬһ¸ö¸ß¼¶ÓïÑÔÔ´³ÌÐò£¬ÔÚͬһ̨»úÆ÷ÉÏËùÉú³ÉµÄÄ¿±ê³ÌÐò²»Í¬£¬ÆäÖ´ÐÐʱ¼ä¿ÉÄܲ»Í¬£¬¶øÇÒ£¬²¢²»ÊÇÖ¸ÁîÌõÊýÉÙµÄÄ¿±ê³ÌÐòÖ´ÐÐʱ¼ä¾ÍÒ»¶¨ÉÙ¡££©
10£®¼Ù¶¨»úÆ÷MµÄʱÖÓÆµÂÊΪ1.2GHz£¬Ä³³ÌÐòPÔÚ»úÆ÷MÉϵÄÖ´ÐÐʱ¼äΪ12ÃëÖÓ¡£¶ÔPÓÅ»¯Ê±£¬½«Æä
ËùÓеijË4Ö¸Áî¶¼»»³ÉÁËÒ»Ìõ×óÒÆ2λµÄÖ¸ÁµÃµ½ÓÅ»¯ºóµÄ³ÌÐòP?¡£ÒÑÖªÔÚMÉϳ˷¨Ö¸ÁîµÄCPIΪ5£¬×óÒÆÖ¸ÁîµÄCPIΪ2£¬PµÄÖ´ÐÐʱ¼äÊÇP?Ö´ÐÐʱ¼äµÄ1.2±¶£¬ÔòPÖÐÓжàÉÙÌõ³Ë·¨Ö¸Áî±»Ìæ»»³ÉÁË×óÒÆÖ¸Áî±»Ö´ÐУ¿ ²Î¿¼´ð°¸£º
ÏÔÈ»£¬P?µÄÖ´ÐÐʱ¼äΪ10Ã룬Òò´Ë£¬P±ÈP?¶à»¨ÁË2ÃëÖÓ£¬Òò´Ë£¬Ö´ÐÐʱ±»»»³É×óÒÆÖ¸ÁîµÄ³Ë·¨Ö¸ÁîµÄÌõÊýΪ1.2G¡Á2/(5¨C2) = 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.1001£¬¨C0.1001£¬+1.0£¬¨C1.0£¬+0.010100£¬¨C0.010100£¬+0£¬¨C0 ²Î¿¼´ð°¸£º
ÔÂë ²¹Âë +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λÊýÖµ£©£¬Ð´³öÏÂÁи÷¶þ½øÖÆÊýµÄ²¹ÂëºÍÒÆÂë±íʾ¡£
+1001£¬¨C1001£¬+1£¬¨C1£¬+10100£¬¨C10100£¬+0£¬¨C0 ²Î¿¼´ð°¸£º
+1001£º ¨C1001£º +1£º ¨C1£º +10100£º ¨C10100£º +0£º ¨C0£º
ÒÆÂë 10001001 01110111 10000001 011111111 10010100 01101100 10000000 10000000 ²¹Âë
00001001 11110111 00000001 11111111 00010100 11101100 00000000 00000000
6£®ÒÑÖª [x]²¹£¬Çóx
£¨1£©[x]²¹=1.1100111 £¨2£©[x]²¹=10000000 £¨3£©[x]²¹=0.1010010 £¨4£©[x]²¹=11010011 ²Î¿¼´ð°¸£º
£¨1£©[x]²¹=1.1100111 x = ¨C0.0011001B £¨2£©[x]²¹=10000000 x = ¨C10000000B = ¨C128 £¨3£©[x]²¹=0.1010010 x = +0.101001B £¨4£©[x]²¹=11010011 x = ¨C 101101B = ¨C 45
7£®¼Ù¶¨Ò»Ì¨32λ×Ö³¤µÄ»úÆ÷Öдø·ûºÅÕûÊýÓò¹Âë±íʾ£¬¸¡µãÊýÓÃIEEE 754±ê×¼±íʾ£¬¼Ä´æÆ÷R1ºÍR2
µÄÄÚÈÝ·Ö±ðΪR1£º0000108BH£¬R2£º8080108BH¡£²»Í¬Ö¸Áî¶Ô¼Ä´æÆ÷½øÐв»Í¬µÄ²Ù×÷£¬Òò¶ø£¬²»Í¬Ö¸ÁîÖ´ÐÐʱ¼Ä´æÆ÷ÄÚÈݶÔÓ¦µÄÕæÖµ²»Í¬¡£¼Ù¶¨Ö´ÐÐÏÂÁÐÔËËãÖ¸Áîʱ£¬²Ù×÷ÊýΪ¼Ä´æÆ÷R1ºÍR2µÄÄÚÈÝ£¬ÔòR1ºÍR2ÖвÙ×÷ÊýµÄÕæÖµ·Ö±ðΪ¶àÉÙ£¿ £¨1£© ÎÞ·ûºÅÊý¼Ó·¨Ö¸Áî £¨2£© ´ø·ûºÅÕûÊý³Ë·¨Ö¸Áî £¨3£© µ¥¾«¶È¸¡µãÊý¼õ·¨Ö¸Áî ²Î¿¼´ð°¸£º R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011b R2 = 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b £¨1£©¶ÔÓÚÎÞ·ûºÅÊý¼Ó·¨Ö¸ÁR1ºÍR2ÖÐÊDzÙ×÷ÊýµÄÎÞ·ûºÅÊý±íʾ£¬Òò´Ë£¬ÆäÕæÖµ·Ö±ðΪR1£º108BH,
R2£º8080108BH¡£
£¨2£©¶ÔÓÚ´ø·ûºÅÕûÊý³Ë·¨Ö¸ÁR1ºÍR2ÖÐÊDzÙ×÷ÊýµÄ´ø·ûºÅÕûÊý²¹Âë±íʾ£¬ÓÉ×î¸ßλ¿ÉÖª£¬ R1
ΪÕýÊý£¬ R2Ϊ¸ºÊý¡£R1µÄÕæÖµÎª+108BH, R2µÄÕæÖµÎª¨C(0111 1111 0111 1111 1110 1111 0111 0100b + 1b) = ¨C7F7FEF75H¡£
£¨3£©¶ÔÓÚµ¥¾«¶È¸¡µãÊý¼õ·¨Ö¸ÁR1ºÍR2ÖÐÊDzÙ×÷ÊýµÄIEEE754µ¥¾«¶È¸¡µãÊý±íʾ¡£ÔÚIEEE 754
±ê×¼ÖУ¬µ¥¾«¶È¸¡µãÊýµÄλÊýΪ32룬ÆäÖаüº¬1λ·ûºÅ룬8λ½×Â룬23λβÊý¡£ ÓÉR1ÖеÄÄÚÈÝ¿ÉÖª£¬Æä·ûºÅλΪ0£¬±íʾÆäΪÕýÊý£¬½×ÂëΪ0000 0000£¬Î²Êý²¿·ÖΪ000 0000 0001 0000 1000 1011£¬¹ÊÆäΪ·Ç¹æ¸ñ»¯¸¡µãÊý£¬Ö¸ÊýΪ¨C126£¬Î²ÊýÖÐûÓÐÒþ²ØµÄ1£¬ÓÃÊ®Áù½øÖƱíʾβÊýΪ+0.002116H£¬¹ÊR1±íʾµÄÕæÖµÎª+0.002116H¡Á 10-126¡£ ÓÉR2ÖеÄÄÚÈÝ¿ÉÖª£¬Æä·ûºÅλΪ1£¬±íʾÆäΪ¸ºÊý£¬½×ÂëΪ0000 0001£¬Î²Êý²¿·ÖΪ000 0000 0001 0000 1000 1011£¬¹ÊÆäΪ¹æ¸ñ»¯¸¡µãÊý£¬Ö¸ÊýΪ1¨C127 = ¨C126£¬Î²ÊýÖÐÓÐÒþ²ØµÄ1£¬ÓÃÊ®Áù½øÖƱíʾβÊýΪ¨C1.002116H£¬¹ÊR2±íʾµÄÕæÖµÎª¨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 00¡0B = 00¡0B 11¡1B (¨C1) < 00¡0B (0) 11¡1B (232¨C1) > 00¡0B(0) 011¡1B (231¨C1) > 100¡0B (¨C231) 011¡1B (231¨C1) < 100¡0B(231) 011¡1B (231¨C1) > 100¡0B (¨C231) 11¡1B (¨C1) > 11¡10B (¨C2) 11¡1B (232¨C1) > 11¡10B (232¨C2) ˵Ã÷
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 <= len¨C1; i++) 7 result += a[i]; 8 return result; 9 }
²Î¿¼´ð°¸£º
²ÎÊýlenµÄÀàÐÍÊÇunsigned£¬ËùÒÔ£¬µ±len=0ʱ£¬Ö´ÐÐlen-1µÄ½á¹ûΪ11¡1£¬ÊÇ×î´ó¿É±íʾµÄÎÞ·ûºÅÊý£¬Òò¶ø£¬ÈκÎÎÞ·ûºÅÊý¶¼±ÈËüС£¬Ê¹µÃÑ»·Ìå±»²»¶ÏÖ´ÐУ¬ÒýÆðÊý×éÔªËØµÄ·ÃÎÊÔ½½ç£¬·¢Éú´æ´¢Æ÷·ÃÎÊÒì³£¡£ Ö»Òª½«lenÉùÃ÷ΪintÐÍ£¬»òÑ»·µÄ²âÊÔÌõ¼þ¸ÄΪi 10. Éèij¸¡µãÊý¸ñʽΪ£º Êý·û βÊý ½×Âë 6λ²¹Âë 5Î»ÒÆÂë 1λ ÆäÖУ¬ÒÆÂëµÄÆ«Öó£ÊýΪ16£¬²¹Âë²ÉÓÃһλ·ûºÅ룬»ùÊýΪ4¡£ £¨1£© ÓÃÕâÖÖ¸ñʽ±íʾÏÂÁÐÊ®½øÖÆÊý£º+1.7£¬¨C0.12£¬+19£¬¨C1/8¡£ £¨2£© д³ö¸Ã¸ñʽ¸¡µãÊýµÄ±íʾ·¶Î§£¬²¢Óë12붨µã²¹ÂëÕûÊý±íʾ·¶Î§±È½Ï¡£ ²Î¿¼´ð°¸£º£¨¼Ù¶¨²ÉÓÃ0Éá1Èë·¨½øÐÐÉáÈ룩 £¨1£© +1.7 = +1.1011001B = 0.011011B¡Á 41, ¹Ê½×ÂëΪ1 +16 = 17 = 10001B, βÊýΪ+0.011011µÄ²¹Â룬 ¼´0.011011£¬ËùÒÔ+1.7±íʾΪ0 10001 011011¡£ ¨C0.12 = ¨C 0.000111101B = ¨C 0.011111B ¡Á 4¨C1, ¹Ê½×ÂëΪ¨C1 + 16 =15 = 01111B, βÊýΪ¨C 0.011111 µÄ²¹Â룬¼´1.100001, ËùÒÔ¨C0.12±íʾΪ1 01111 100001¡£ +19 = +10011B = 0.010011B¡Á 43£¬¹Ê½×ÂëΪ3 + 16 = 19 = 10011B, βÊýΪ0.010011£¬ËùÒÔ+19±í ʾΪ0 10011 010011¡£ ¨C1/8 = ¨C 0.125 = ¨C 0.001B = ¨C 0.100000 ¡Á 4¨C1£¬½×ÂëΪ¨C1 + 16 = 15 = 01111B£¬Î²ÊýΪ¨C 0.100000µÄ²¹Â룬¼´1.100000£¬ËùÒÔ¨C1/8±íʾΪ1 01111 100000¡£ £¨2£©¸Ã¸ñʽ¸¡µãÊý±íʾµÄ·¶Î§ÈçÏ¡£ ÕýÊý×î´óÖµ£º0.111111B ¡Á 411111£¬¼´£º0.333¡Á 415 £¨¡Ö230¡Ö109£© ÕýÊý×îСֵ£º0.000001B ¡Á 400000£¬¼´£º0.001¡Á 4¨C16 £¨¡Ö2¨C34¡Ö10¨C10£© ¸ºÊý×î´óÖµ£º¨C0.000001B ¡Á 400000£¬¼´£º¨C0.001¡Á 4¨C16 ¸ºÊý×îСֵ£º¨C1.000000B ¡Á 411111£¬¼´£º¨C1.000¡Á 415 Òò´Ë£¬¸Ã¸ñʽ¸¡µãÊýµÄÊýÁ¿¼¶ÔÚ10¨C10¡«109Ö®¼ä¡£ 12붨µã²¹ÂëÕûÊýµÄ±íʾ·¶Î§Îª£º¨C211¡«+(211¨C1)£¬¼´£º¨C2048¡«2047 Óɴ˿ɼû£¬¶¨µãÊýºÍ¸¡µãÊýµÄ±íʾ·¶Î§Ïà²î·Ç³£´ó¡£ 11. ÏÂÁм¸ÖÖÇé¿öËùÄܱíʾµÄÊýµÄ·¶Î§ÊÇʲô£¿ £¨1£© 16λÎÞ·ûºÅÕûÊý £¨2£© 16λÔÂ붨µãСÊý £¨3£© 16λ²¹Â붨µãСÊý £¨4£© 16λ²¹Â붨µãÕûÊý £¨5£© ÏÂÊö¸ñʽµÄ¸¡µãÊý£¨»ùÊýΪ2£¬ÒÆÂëµÄÆ«Öó£ÊýΪ128£© Êý·û βÊý ½×Âë 1λ 8Î»ÒÆÂë 7λÔÂë ²Î¿¼´ð°¸£º £¨1£©ÎÞ·ûºÅÕûÊý£º0¡«216¨C1¡£ £¨2£©ÔÂ붨µãСÊý£º¨C(1¨C2¨C15)¡« +(1¨C2¨C15)¡£ £¨3£©²¹Â붨µãСÊý£º¨C1¡«+(1¨C2¨C15)¡£ £¨4£©²¹Â붨µãÕûÊý£º¨C32768¡«+32767¡£ £¨5£©¸¡µãÊý£º¸ºÊý£º¨C(1¨C2¨C7)¡Á2+127¡«¨C2¨C7¡Á2¨C128¡£ ÕýÊý£º+2¨C135¡«(1¨C2¨C7) ¡Á2+127¡£ 12. ÒÔIEEE754µ¥¾«¶È¸¡µãÊý¸ñʽ±íʾÏÂÁÐÊ®½øÖÆÊý¡£ +1.75£¬+19£¬¨C1/8£¬258 ²Î¿¼´ð°¸£º +1.75 = +1.11B = 1.11B ¡Á 20, ¹Ê½×ÂëΪ0+127=01111111B, Êý·ûΪ0£¬Î²ÊýΪ1.110¡0£¬Ð¡ÊýµãǰΪÒþ²ØÎ»£¬ËùÒÔ+1.7±íʾΪ0 01111111 110 0000 0000 0000 0000 0000£¬ÓÃÊ®Áù½øÖƱíʾΪ3FE00000H¡£ +19 = +10011B = +1.0011B ¡Á 24£¬¹Ê½×ÂëΪ4+127 = 10000011B, Êý·ûΪ0£¬Î²ÊýΪ1.00110¡0£¬ËùÒÔ+19±íʾΪ0 10000011 001 1000 0000 0000 0000 0000£¬ÓÃÊ®Áù½øÖƱíʾΪ41980000H¡£ ¨C1/8 = ¨C 0.125 = ¨C 0.001B = ¨C 1.0 ¡Á 2¨C3£¬½×ÂëΪ¨C3+127 = 01111100B£¬Êý·ûΪ1£¬Î²ÊýΪ1.0¡0£¬ËùÒÔ¨C1/8±íʾΪ1 01111100 000 0000 0000 0000 0000 0000£¬ÓÃÊ®Áù½øÖƱíʾΪBE000000H¡£ 258=100000010B=1.0000001B ¡Á 28, ¹Ê½×ÂëΪ8+127=10000111B, Êý·ûΪ0£¬Î²ÊýΪ1.0000001£¬ËùÒÔ258±íʾΪ0 10000111 000 0001 0000 0000 0000 0000£¬ÓÃÊ®Áù½øÖƱíʾΪ43810000H¡£ 13£®ÉèÒ»¸ö±äÁ¿µÄֵΪ4098£¬ÒªÇó·Ö±ðÓÃ32λ²¹ÂëÕûÊýºÍIEEE 754µ¥¾«¶È¸¡µã¸ñʽ±íʾ¸Ã±äÁ¿£¨½á¹û ÓÃÊ®Áù½øÖƱíʾ£©£¬²¢ËµÃ÷ÄĶζþ½øÖÆÐòÁÐÔÚÁ½ÖÖ±íʾÖÐÍêÈ«Ïàͬ£¬ÎªÊ²Ã´»áÏàͬ£¿ ²Î¿¼´ð°¸£º 4098 = +1 0000 0000 0010B = +1. 0000 0000 001 ¡Á 212 32λ2-²¹ÂëÐÎʽΪ£º0000 0000 0000 0000 00010000 0000 0010£¨00001002H£© IEEE754µ¥¾«¶È¸ñʽΪ£º0 100010110000 0000 0010 0000 0000 000 £¨45801000H£© ´ÖÌ岿·ÖΪ³ýÒþ²ØÎ»ÍâµÄÓÐЧÊý×Ö£¬Òò´Ë£¬ÔÚÁ½ÖÖ±íʾÖÐÊÇÏàͬµÄÐòÁС£ 14£®ÉèÒ»¸ö±äÁ¿µÄֵΪ¨C2147483647£¬ÒªÇó·Ö±ðÓÃ32λ²¹ÂëÕûÊýºÍIEEE754µ¥¾«¶È¸¡µã¸ñʽ±íʾ¸Ã±äÁ¿£¨½á¹ûÓÃÊ®Áù½øÖƱíʾ£©£¬²¢ËµÃ÷ÄÄÖÖ±íʾÆäÖµÍêÈ«¾«È·£¬ÄÄÖÖ±íʾµÄÊǽüËÆÖµ¡£ ²Î¿¼´ð°¸£º ¨C2147483647 = ¨C111 1111 1111 1111 1111 1111 1111 1111B = ¨C1.11 1111 1111 1111 1111 1111 1111 1111 ¡Á 230 32λ2-²¹ÂëÐÎʽΪ£º1000 0000 0000 0000 0000 0000 0000 0001 £¨80000001H£© IEEE 754µ¥¾«¶È¸ñʽΪ£º1 10011101 1111 1111 1111 1111 1111 111 £¨CEFFFFFFH£© 32λ2-²¹ÂëÐÎʽÄܱíʾ¾«È·µÄÖµ£¬¶ø¸¡µãÊý±íʾµÄÊǽüËÆÖµ£¬µÍλ±»½Ø¶Ï 15£®ÏÂ±í¸ø³öÁËÓйØIEEE 754¸¡µã¸ñʽ±íʾÖÐÒ»Ð©ÖØÒªÊý¾ÝµÄȡֵ£¬±íÖÐÒѾÓÐ×î´ó¹æ¸ñ»¯ÊýµÄÏàÓ¦ÄÚ ÈÝ£¬ÒªÇóÌîÈëÆäËû¸¡µãÊýµÄÏàÓ¦ÄÚÈÝ¡££¨×¢£º±íÖÐa´ú±íÒ»¸öÔÚ1µ½10Ö®¼äµÄÕý´¿Ð¡Êý£© µ¥¾«¶È ÏîÄ¿ ½×Âë βÊý ÒÔ2µÄÃݴαíʾµÄÖµ 0 1 ×î´ó¹æ¸ñ»¯Êý ×îС¹æ¸ñ»¯Êý ×î´ó·Ç¹æ¸ñ»¯Êý ×îС·Ç¹æ¸ñ»¯Êý +¡Þ NaN Ë«¾«¶È ÒÔ2µÄÃݴαíʾµÄÖµ 0 1 (2¨C2¨C52)¡Á21023 1.0¡Á2¨C1022 (1¨C2¨C52)¡Á2¨C1022 2¨C52¡Á2¨C1022 ¨C ¨C ÒÔ10µÄÃݴαíʾµÄÖµ 0 1 a¡Á10308 a¡Á10¨C308 a¡Á10¨C308 a¡Á10¨C? ¨C ¨C ÒÔ10µÄÃݴαíʾµÄÖµ 0 1 a¡Á1038 a¡Á10¨C38 a¡Á10¨C38 a¡Á10¨C44 ¨C ¨C 00000000 01111111 11111110 00000001 00000000 00000000 11111111 11111111 0?.00 0?.00 1?11 0?.00 1?11 0?01 0?.00 ·ÇÈ«0 0 1 (2¨C2¨C23)¡Á2127 1.0¡Á2¨C126 (1¨C2¨C23)¡Á2¨C126 2¨C23¡Á2¨C126=2¨C149 ¨C ¨C 16£®ÒÑÖªÏÂÁÐ×Ö·û±àÂ룺A=100 0001£¬a=110 0001£¬0=011 0000£¬ÇóE¡¢e¡¢f¡¢7¡¢G¡¢Z¡¢5µÄ7λACSIIÂëºÍµÚһλǰ¼ÓÈëÆæÐ£ÑéλºóµÄ8λ±àÂë¡£ ²Î¿¼´ð°¸£º EµÄASCIIÂëΪ?A? + (?E?¨C?A?) = 100 0001 + 100 = 100 0101, ÆæÐ£ÑéλP = 0£¬µÚһλǰ¼ÓÈëÆæÐ£Ñéλ ºóµÄ8λ±àÂëÊÇ0 100 0101¡£ eµÄASCIIÂëΪ¡®a¡¯+ (?e?¨C?a?) = 110 0001 + 100 = 110 0101£¬ÆæÐ£ÑéλP = 1, µÚһλǰ¼ÓÈëÆæÐ£Ñéλ ºóµÄ8λ±àÂëÊÇ1 110 0101¡£ fµÄASCIIÂëΪ¡®a¡¯+ (?f?¨C?a?) = 110 0001 + 101 = 110 0110, ÆæÐ£ÑéλP = 1, µÚһλǰ ¼ÓÈëÆæÐ£Ñé λºóµÄ8λ±àÂëÊÇ 1 110 0110¡£ 7µÄASCIIÂëΪ¡®0¡¯+ (7 - 0) = 011 0000 + 111 = 011 0111,ÆæÐ£ÑéλP = 0, µÚһλǰ¼ÓÈëÆæÐ£Ñéλºó µÄ8λ±àÂëÊÇ0 011 0111¡£ GµÄASCIIÂëΪ¡®A¡¯+ (?G?¨C?A?) = 100 0001 + 0110 = 100 0111, ÆæÐ£ÑéλP = 1, µÚһλǰ¼ÓÈëÆæÐ£ÑéλºóµÄ8λ±àÂëÊÇ1 100 0111¡£ ZµÄASCIIÂëΪ¡®A¡¯+(?Z?¨C?A?) = 100 0001 + 11001 = 101 1010, ÆæÐ£ÑéλP = 1, µÚһλǰ¼ÓÈëÆæÐ£ÑéλºóµÄ8λ±àÂëÊÇ 1 101 1010¡£ 5µÄASCIIÂëΪ¡®0¡¯+(5 ¨C 0) = 011 0000 + 101 = 011 0101£¬ÆæÐ£ÑéλP = 1, µÚһλǰ¼ÓÈëÆæÐ£ÑéλºóµÄ8λ±àÂëÊÇ 1 011 0101¡£ 17£®¼Ù¶¨ÔÚÒ»¸ö³ÌÐòÖж¨ÒåÁ˱äÁ¿x¡¢yºÍi£¬ÆäÖУ¬xºÍyÊÇfloatÐͱäÁ¿£¨ÓÃIEEE754µ¥¾«¶È¸¡µãÊý±í ʾ£©£¬iÊÇ16λshortÐͱäÁ¿£¨Óò¹Âë±íʾ£©¡£³ÌÐòÖ´Ðе½Ä³Ò»Ê±¿Ì£¬x= ¨C0.125¡¢y=7.5¡¢i=100£¬ËüÃǶ¼±»Ð´µ½ÁËÖ÷´æ£¨°´×Ö½Ú±àÖ·£©£¬ÆäµØÖ··Ö±ðÊÇ100£¬108ºÍ112¡£Çë·Ö±ð»³öÔÚ´ó¶Ë»úÆ÷ºÍС¶Ë»úÆ÷ÉϱäÁ¿x¡¢yºÍiÔÚÄÚ´æµÄ´æ·ÅλÖᣠ²Î¿¼´ð°¸£º ¨C0.125 = ¨C0.001B = ¨C1.0 ¡Á2-3 xÔÚ»úÆ÷ÄÚ²¿µÄ»úÆ÷ÊýΪ£º1 01111100 00¡0 (BE00 0000H) 7.5= +111.1B= +1.111¡Á22 yÔÚ»úÆ÷ÄÚ²¿µÄ»úÆ÷ÊýΪ£º0 10000001 11100¡0 (40F0 0000H) 100=64+32+4=1100100B iÔÚ»úÆ÷ÄÚ²¿±íʾµÄ»úÆ÷ÊýΪ£º0000 0000 0110 0100£¨0064H£© ´ó¶Ë»ú С¶Ë»ú µØÖ· ÄÚÈÝ ÄÚÈÝ 100 BEH 00H 101 00H 00H 102 00H 00H 103 00H BEH 108 40H 00H 109 F0H 00H 110 00H F0H 111 00H 40H 112 00H 64H 113 64H 00H 18£®¼Ù¶¨Ä³¼ÆËã»úµÄ×ÜÏß²ÉÓÃÆæÐ£Ñ飬ÿ8λÊý¾ÝÓÐһλУÑé룬ÈôÔÚ32λÊý¾ÝÏßÉÏ´«ÊäµÄÐÅÏ¢ÊÇ8F 3C AB 96H£¬Ôò¶ÔÓ¦µÄ4¸öУÑéλӦΪʲô£¿Èô½ÓÊÜ·½ÊÕµ½µÄÊý¾ÝÐÅÏ¢ºÍУÑéλ·Ö±ðΪ87 3C AB 96HºÍ0101B£¬Ôò˵Ã÷·¢ÉúÁËʲôÇé¿ö£¬²¢¸ø³öÑéÖ¤¹ý³Ì¡£ ²Î¿¼´ð°¸£º ´«ÊäÐÅÏ¢8F 3C AB 96HÕ¹¿ªÎª1000 1111 0011 1100 1010 1011 1001 0110£¬Ã¿8λÓÐÒ»¸öÆæÐ£Ñé룬Òò´Ë£¬ ×ÜÏßÉÏ·¢ËÍ·½ËͳöµÄ4¸öУÑéλӦ¸Ã·Ö±ðΪ0¡¢1¡¢0¡¢1¡£ ½ÓÊÜ·½µÄÊý¾ÝÐÅϢΪ87 3C AB 96H£¬Õ¹¿ªºóΪ1000 0111 0011 1100 1010 1011 1001 0110£»½ÓÊÕµ½µÄУÑé λ·Ö±ðΪ0¡¢1¡¢0¡¢1¡£ÔÚ½ÓÊÜ·½½øÐÐУÑéÅжÏÈçÏ£º ¸ù¾Ý½ÓÊÕµ½µÄÊý¾ÝÐÅÏ¢¼ÆËã³ö4¸öÆæÐ£Ñéλ·Ö±ðΪ1¡¢1¡¢0¡¢1£¬½«¸Ã4λУÑéλ·Ö±ðºÍ½ÓÊÕµ½µÄ4λУ Ñéλ½øÐÐÒì»ò£¬µÃµ½1¡¢0¡¢0¡¢0£¬ËµÃ÷Êý¾ÝÐÅÏ¢µÄµÚÒ»¸ö×Ö½Ú·¢Éú´«Êä´íÎó¡£¶ÔÕÕ´«Êäǰ¡¢ºóµÄÊý¾ÝÐÅÏ¢£¬µÚÒ»×Ö½Ú8FH±ä³ÉÁË87H£¬ËµÃ÷ȷʵ·¢ÉúÁË´«Êä´íÎó£¬ÑéÖ¤ÕýÈ·¡£ 19£®Ð´³ö16λÊý¾ÝµÄSECÂë¡£¼Ù¶¨Êý¾ÝΪ0101 0001 0100 0110£¬ËµÃ÷SECÂëÈçºÎÕýÈ·¼ì²âÊý¾Ýλ5µÄ ´íÎó¡£ ²Î¿¼´ð°¸£º ¶ÔÓÚ16λÊý¾Ý£¬¿ÉÒÔÈçϲåÈëУÑéλ£º M16M15M14M13M12P5M11M10M9M8M7M6M5P4M4M3M2P3M1P2P1 ÆäÖÐMiÊÇÔÐÅÏ¢Êý¾Ý£¬ PiÊǼÓÈëµÄУÑé룬¶ÔÓÚ¸÷¸öУÑéλµÄÖµ¿ÉÒÔÈçϼÆËã P1 = M1¨’M2¨’M3¨’M4¨’M5¨’M7¨’M9¨’M11¨’M12¨’M14¨’M16= 1 P2 = M1¨’M3¨’M4¨’M6¨’M7¨’M10¨’M11¨’M13¨’M14= 1 P3 = M2¨’M3¨’M4¨’M8¨’M9¨’M10¨’M11¨’M15¨’M16= 0 P4 = M5¨’M6¨’M7¨’M8¨’M9¨’M10¨’M11= 0 P5 = M12¨’M13¨’M14¨’M15¨’M16= 0 ËùÒÔ´ËʱP5 P4 P3 P2 P1 = 00011£¬µÚÎåλÊý¾Ý³ö´íʱ£¬Êý¾Ý×Ö±äΪ£º0101 0001 0101 0110£¬P5?P4?P3?P2?P1?= 01010£¬¹ÊÕÏ×Ö = 00011¨’01010 = 01001£¬ËµÃ÷Âë×ÖµÚ9λ³ö´í£¬¼´M5³ö´í¡£ 20£®¼ÙÉèÒª´«Ë͵ÄÊý¾ÝÐÅϢΪ£º100011£¬ÈôÔ¼¶¨µÄÉú³É¶àÏîʽΪ£ºG(x)= x3+1£¬ÔòУÑéÂëΪ¶àÉÙ£¿¼Ù¶¨ÔÚ ½ÓÊն˽ÓÊÕµ½µÄÊý¾ÝÐÅϢΪ100010£¬ËµÃ÷ÈçºÎÕýÈ·¼ì²âÆä´íÎó£¬Ð´³ö¼ì²â¹ý³Ì¡£ ²Î¿¼´ð°¸£º ÔÊý¾ÝÐÅϢΪ100011£¬¶ÔÓ¦µÄ±¨ÎĶàÏîʽΪM(x) = x5 + x + 1, Éú³É¶àÏîʽµÄλÊýΪ4룬ËùÒÔÔÚÔÊý¾ÝÐÅÏ¢ºóÃæÌí¼Ó3¸ö0£¬±äΪM?(x) = x3M(x) = x8 + x4 + x3, ÓÃM(x)ȥģ2³ýG(x)£¬µÃµ½µÄÓàÊýΪ111£¬ËùÒԵõ½CRCÂëΪ100011 111¡£ ¼ì²âʱ£¬ÓýÓÊÕµ½µÄCRCÂëȥģ2³ýÉú³É¶àÏîʽ1001£¬ÈôµÃµ½µÄÓàÊýΪ0£¬Ôò±íÃ÷ÕýÈ·£¬·ñÔò˵Ã÷ ´«Êäʱ·¢ÉúÁË´íÎó¡£´ËÌâÖнÓÊÕµ½µÄCRCÂëΪ100010 111£¨¼´Êý¾Ý100010¼Ó¼ìÑéλ111£©£¬ÏÔÈ»£¬ÓÃ100010 111 Ä£2³ý 1001£¬µÃµ½ÓàÊýΪ001£¬²»Îª0£¬ËµÃ÷´«Êäʱ·¢Éú´íÎó¡£ µÚ 3 Õ ϰ Ìâ ´ð °¸ 2£¨4£©¸ß¼¶ÓïÑÔÖеÄÔËËãºÍ»úÆ÷ÓïÑÔ£¨¼´Ö¸ÁÖеÄÔËËãÊÇʲô¹ØÏµ£¿¼Ù¶¨Ä³Ò»¸ö¸ß¼¶ÓïÑÔÔ´³ÌÐòPÖÐÓгˡ¢³ýÔËË㣬µ«»úÆ÷MÖв»Ìṩ³Ë¡¢³ýÔËËãÖ¸ÁÔò³ÌÐòPÄÜ·ñÔÚ»úÆ÷MÉÏÔËÐУ¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º£¨ÂÔ£© 3£®¿¼ÂÇÒÔÏÂCÓïÑÔ³ÌÐò´úÂ룺 int func1(unsigned word) { return (int) (( word <<24) >> 24); } int func2(unsigned word) { return ( (int) word <<24 ) >> 24; } ¼ÙÉèÔÚÒ»¸ö32λ»úÆ÷ÉÏÖ´ÐÐÕâЩº¯Êý£¬¸Ã»úÆ÷ʹÓöþ½øÖƲ¹Âë±íʾ´ø·ûºÅÕûÊý¡£ÎÞ·ûºÅÊý²ÉÓÃÂß¼ÒÆÎ»£¬´ø·ûºÅÕûÊý²ÉÓÃËãÊõÒÆÎ»¡£ÇëÌîдÏÂ±í£¬²¢ËµÃ÷º¯Êýfunc1ºÍfunc2µÄ¹¦ÄÜ¡£ W »úÆ÷Êý Öµ func1(w) »úÆ÷Êý Öµ func2(w) »úÆ÷Êý Öµ 0000 007FH 0000 0080H 0000 00FFH 0000 0100H 127 128 255 256 0000 007FH 0000 0080H 0000 00FFH 0000 0000H +127 +128 +255 0 0000 007FH FFFF FF80H FFFF FFFFH 0000 0000H +127 ¨C128 ¨C1 0 º¯Êýfunc1µÄ¹¦ÄÜÊǰÑÎÞ·ûºÅÊý¸ß24λÇåÁ㣨×óÒÆ24λÔÙÂß¼ÓÒÒÆ24룩£¬½á¹ûÒ»¶¨ÊÇÕýµÄÓзûºÅÊý£»¶øº¯Êýfunc2µÄ¹¦ÄÜÊǰÑÎÞ·ûºÅÊýµÄ¸ß24λ¶¼±ä³ÉºÍµÚ25λһÑù£¬ÒòΪ×óÒÆ24λºó½øÐÐËãÊõÓÒÒÆ£¬¸ß24λ²¹·ûºÅ루¼´µÚ25룩¡£ 4£®ÌîдÏÂ±í£¬×¢Òâ¶Ô±ÈÎÞ·ûºÅÊýºÍ´ø·ûºÅÕûÊýµÄ³Ë·¨½á¹û£¬ÒÔ¼°½Ø¶Ï²Ù×÷ǰ¡¢ºóµÄ½á¹û¡£ ģʽ ÎÞ·ûºÅÊý ¶þ½øÖƲ¹Âë ÎÞ·ûºÅÊý ¶þ½øÖƲ¹Âë ÎÞ·ûºÅÊý ¶þ½øÖƲ¹Âë x »úÆ÷Êý 110 110 001 001 111 111 Öµ 6 ¨C2 1 +1 7 ¨C1 »úÆ÷Êý 010 010 111 111 111 111 y Öµ 2 +2 7 ¨C1 7 ¨C1 x¡Áy£¨½Ø¶Ïǰ£© »úÆ÷Êý 001100 111100 000111 111111 110001 000001 Öµ 12 ¨C4 7 ¨C1 49 +1 x¡Áy£¨½Ø¶Ïºó£© »úÆ÷Êý 100 100 111 111 001 001 Öµ 4 ¨C4 7 ¨C1 1 +1 5£®ÒÔÏÂÊÇÁ½¶ÎCÓïÑÔ´úÂ룬º¯Êýarith( )ÊÇÖ±½ÓÓÃCÓïÑÔдµÄ£¬¶øoptarith( )ÊǶÔarith( )º¯ÊýÒÔij¸öÈ· ¶¨µÄMºÍN±àÒëÉú³ÉµÄ»úÆ÷´úÂë·´±àÒëÉú³ÉµÄ¡£¸ù¾Ýoptarith( )£¬¿ÉÒÔÍÆ¶Ïº¯Êýarith( ) ÖÐMºÍNµÄÖµ¸÷ÊǶàÉÙ£¿ #define M #define N int arith (int x, int y) { int result = 0 ; result = x*M + y/N; return result; } int optarith ( int x, int y) { int t = x; x << = 4; x - = t; if ( y < 0 ) y += 3; y>>2; return x+y; ²Î¿¼´ð°¸£º ¿ÉÒÔ¿´³öx*MºÍ¡°int t = x; x << = 4; x-=t;¡±Èý¾ä¶ÔÓ¦£¬ÕâЩÓï¾äʵÏÖÁËx³Ë15µÄ¹¦ÄÜ£¨×óÒÆ4λÏ൱ÓÚ³ËÒÔ16£¬È»ºóÔÙ¼õ1£©£¬Òò´Ë£¬MµÈÓÚ15£» y/NÓë¡°if ( y < 0 ) y += 3; y>>2;¡±Á½¾ä¶ÔÓ¦£¬¹¦ÄÜÖ÷ÒªÓɵڶþ¾ä¡°yÓÒÒÆ2λ¡±ÊµÏÖ£¬ËüʵÏÖÁËy³ýÒÔ4µÄ¹¦ÄÜ£¬Òò´ËNÊÇ4¡£¶øµÚÒ»¾ä¡°if ( y < 0 ) y += 3;¡±Ö÷ÒªÓÃÓÚ¶Ôy=¨C1ʱ½øÐе÷Õû£¬Èô²»µ÷Õû£¬Ôò¨C1>>2=¨C1¶ø¨C1/4=0£¬Á½Õß²»µÈ£»µ÷Õûºó¨C1+3=2£¬2>>2=0£¬Á½ÕßÏàµÈ¡£ ˼¿¼£ºÄÜ·ñ°Ñ if ( y < 0 ) y += 3; ¸Ä³É if ( y < 0 ) y += 2; £¿ ²»ÄÜ£¡ÒòΪy = - 4ʱ²»ÕýÈ·¡£ 6£®ÉèA4?A1ºÍB4?B1·Ö±ðÊÇËÄλ¼Ó·¨Æ÷µÄÁ½×éÊäÈ룬C0ΪµÍλÀ´µÄ½øÎ»¡£µ±¼Ó·¨Æ÷·Ö±ð²ÉÓô®ÐнøÎ»ºÍÏÈÐнøÎ»Ê±£¬Ð´³öËĸö½øÎ»C4?C1µÄÂß¼±í´ïʽ¡£ ²Î¿¼´ð°¸£º ´®ÐнøÎ»£º C1 = X1C0+Y1C0 + X1 Y1 C2 = X2C1+Y2C1 + X2 Y2 C3 = X3C2+Y3C2 + X3 Y3 C4 = X4C3+Y4C3 + X4 Y4 ²¢ÐнøÎ»£º C1 =X1Y1 + (X1+Y1)C0 C2=X2Y2+(X2+Y2)X1Y1+ (X2+Y2)(X1+Y1)C0 C3=X3Y3+(X3+Y3)X2Y2+(X3+Y3) (X2+Y2)X1Y1+(X3+Y3) (X2+Y2)(X1+Y1)C0 C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+(X4+Y4)(X3+Y3) (X2+Y2)(X1+Y1)C0 7£®ÓÃSN74181ºÍSN74182Æ÷¼þÉè¼ÆÒ»¸ö16λÏÈÐнøÎ»²¹Âë¼Ó/¼õÔËËãÆ÷£¬»³öÔËËãÆ÷µÄÂß¼¿òͼ£¬²¢¸ø³öÁã±êÖ¾¡¢½øÎ»±êÖ¾¡¢Òç³ö±êÖ¾¡¢·ûºÅ±êÖ¾µÄÉú³Éµç·¡£ ²Î¿¼´ð°¸£¨Í¼ÂÔ£©£º Âß¼¿òͼ²Î¼û½Ì²ÄÖеÄͼ3.15ºÍͼ3.16£¬½«Á½¸öͼ½áºÏÆðÀ´¼´¿É£¬Ò²¼´Ö»Òª½«Í¼3.15ÖеÄBÊäÈë¶ËµÄÿһλBiÈ¡·´£¬µÃµ½Bi£¬ºÍÔÂëBiÒ»ÆðË͵½Ò»¸ö¶þ·ѡÔñÆ÷£¬ÓɽøÎ»C0×÷ΪѡÔñ¿ØÖÆÐźš£µ±C0Ϊ1ʱ×ö¼õ·¨£¬´Ëʱ£¬Ñ¡Ôñ½«Bi×÷ΪSN74181µÄBÊäÈë¶Ë£»·ñÔò£¬µ±C0Ϊ1ʱ£¬×ö¼Ó·¨¡£ Áã±êÖ¾ZF¡¢½øÎ»±êÖ¾CF¡¢Òç³ö±êÖ¾OF¡¢·ûºÅ±êÖ¾SFµÄÂß¼µç·¸ù¾ÝÒÔÏÂÂß¼±í´ïʽ»³ö¼´¿É¡£ ZF=F15+F14+F13+F12+F11+F10+F9+F8+F7+F6+F5+F4+F3+F2+F1+F0 CF=C16 OF= C0£¨A15B15F15 + A15B15F15£©+ C0£¨A15B15F15 + A15B15F15£© SF= F15 8£® ÓÃSN74181ºÍSN74182Æ÷¼þÉè¼ÆÒ»¸ö32λµÄALU£¬ÒªÇó²ÉÓÃÁ½¼¶ÏÈÐнøÎ»½á¹¹¡£ £¨1£© д³öËùÐèµÄSN74181ºÍSN74182оƬÊý¡£ £¨2£© »³ö32λALUµÄÂß¼½á¹¹Í¼¡£ ²Î¿¼´ð°¸£¨Í¼ÂÔ£©£º ½«Èçͼ3.15ËùʾµÄÁ½¸ö16λALU¼¶ÁªÆðÀ´¼´¿É£¬¼¶ÁªÊ±£¬µÍ16λALUµÄ¸ßλ½øÎ»C16×÷Ϊ¸ß16λALUµÄµÍλ½øÎ»C0£¬Òò´Ë£¬Ö»ÒªÓÃ8ƬSN74181ºÍ2ƬSN74182¡£ 9£®ÒÑÖªx= 10£¬y= ¨C6£¬²ÉÓÃ6λ»úÆ÷Êý±íʾ¡£Çë°´ÈçÏÂÒªÇó¼ÆË㣬²¢°Ñ½á¹û»¹Ô³ÉÕæÖµ¡£ £¨1£© Çó[x+y]²¹£¬[x¨Cy]²¹¡£ £¨2£© ÓÃÔÂëһλ³Ë·¨¼ÆËã[x¡Áy]Ô¡£ £¨3£© ÓÃMBA£¨»ù4²¼Ë¹£©³Ë·¨¼ÆËã[x¡Áy]²¹¡£ £¨4£© Óò»»Ö¸´ÓàÊý·¨¼ÆËã[x/y]ÔµÄÉ̺ÍÓàÊý¡£ £¨5£© Óò»»Ö¸´ÓàÊý·¨¼ÆËã[x/y]²¹µÄÉ̺ÍÓàÊý¡£ ²Î¿¼´ð°¸£º [10]²¹= 001010 [¨C6]²¹= 111010 [6]²¹= 000110 [10]Ô= 001010 [¨C6]Ô= 100110 £¨1£© [10+(¨C6)]²¹= [10]²¹+[¨C 6]²¹= 001010+111010 = 000100 (+4) [10¨C(¨C6)]²¹= [10]²¹+[¨C (¨C6)]²¹= 001010+000110 = 010000 (+16) £¨2£©ÏȲÉÓÃÎÞ·ûºÅÊý³Ë·¨¼ÆËã001010¡Á 000110µÄ³Ë»ý£¬ÔÂëһλ³Ë·¨¹ý³Ì£¨Ç°ÃæÁ½¸ö0Ê¡ÂÔ£©ÈçÏ£º C P Y ˵Ã÷ 0 0000 0 1 1 0 P0=0 + 0 0 0 0 y4= 0£¬+0 0 0 0 0 0 C,P ºÍYͬʱÓÒÒÆÒ»Î» 0 0 0 0 0 00 1 1 µÃP1 + 1 0 1 0 y3=1£¬+X 01 0 1 0 C,P ºÍYͬʱÓÒÒÆÒ»Î» 0 0 1 0 1 0 00 1µÃP2 + 1 0 1 0y2= 1£¬+X 0 1 1 1 1 0 00 0 C,P ºÍYͬʱÓÒÒÆÒ»Î» 0 01 1 11 0 00µÃP3 + 0 0 0 0y1= 0£¬+0 0 0 1 1 1 C,P ºÍYͬʱÓÒÒÆÒ»Î» 0 0 0 1 111 0 0µÃP4 ÈôÁ½¸ö6λÊýÏà³ËµÄ»°£¬Ôò»¹ÒªÓÒÒÆÁ½´Î£¬µÃ 000000 111100 ·ûºÅλΪ£º0?1 = 1£¬Òò´Ë£¬[X¡ÁY]Ô= 1000 0011 1100 ¼´X ¡Á Y = ¨C11 1100B = ¨C60 £¨3£© [¨C10]²¹= 110110£¬²¼Ë¹³Ë·¨¹ý³ÌÈçÏ£º P Y y-1˵Ã÷ 0 0 0000 1 110 1 00 Éèy-1 =0£¬[P0]²¹=0 y0 y-1 =00£¬P¡¢YÖ±½ÓÓÒÒÆÒ»Î» 0 0 0000 0 1 11 0 1 0 µÃ[P1]²¹ + 1 1 0 110y1 y0 =10£¬+[¨CX]²¹ 1 1 0 110 P¡¢YͬʱÓÒÒÆÒ»Î» 1 1 1 011 00 1 1 1 0 1 µÃ[P2]²¹ + 0 0 1 010y2 y1 =01£¬+[X]²¹ 0 0 0 1 01 P¡¢YͬʱÓÒÒÆÒ»Î» 0 0 0 0 1 01 0 0 1 1 1 0µÃ[P3]²¹ +1101 1 0 1 0 0 1 1 1 0y3 y2 =10£¬+[¨CX]²¹ 11 1 0 0 0P¡¢YͬʱÓÒÒÆÒ»Î» 111 1 0 0 0 1 0 01 1 1µÃ[P4]²¹ + 0 0 0 00 00 1 0 0 1 11y4 y3 =11£¬+0 111 1 0 0P¡¢YͬʱÓÒÒÆÒ»Î» 111 1 1 0 0 0 1 00 1 1µÃ[P5]²¹ + 0 0 0 00 00 0 10 0 1 1y5 y4 =11£¬+0 111 1 1 0P¡¢YͬʱÓÒÒÆÒ»Î» 111 1 1 1 0 0 0 10 0 1µÃ[P6]²¹ Òò´Ë£¬[X ¡Á Y]²¹=1111 1100 0100£¬¼´X ¡Á Y = ¨C11 1100B= ¨C60 £¨4£©ÒòΪ³ý·¨¼ÆËãÊÇ2nλÊý³ýnλÊý£¬ËùÒÔ[6]Ô=0110£¬[10]Ô=0000 1010£¬[¨C6]²¹=1010£¬ É̵ķûºÅλ£º0?1=1£¬ÔËËã¹ý³Ì£¨Ç°ÃæÁ½¸ö0Ê¡ÂÔ£©ÈçÏ£º ÓàÊý¼Ä´æÆ÷RÓàÊý/É̼ĴæÆ÷Q˵Ã÷ 0 0 0 0 1 0 1 0 ¿ªÊ¼R0=X +1 0 1 0 R1=X¨CY 1 0 1 0 1 0 1 0 0 R1<0£¬Ôòq4 =0£¬Ã»ÓÐÒç³ö 01 0 1 0 1 00 2R1£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÌ£© + 01 1 0 R2 =2R1+Y 10 1 1 0 1 0 0 0 R2<0£¬Ôòq3 = 0 01 1 0 1 0 0 0 2R2 £¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÌ£© + 01 1 0 R3 =2R2 +Y 11 0 01 0 0 0 0 R3<0£¬Ôòq2 = 0 10 01 0 0 00 2R3 £¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÌ£© + 01 1 0 R3 =2R2 +Y 1 11 10 0 0 0 0 R4<0£¬Ôòq1 =0 1 1 1 0 0 0 0 0 2R4£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÌ£© + 01 1 0 R5 =2R4 +Y 0 1 0 0 0 0 0 01 R5>0£¬Ôòq0 =1 É̵ÄÊýÖµ²¿·ÖΪ£º00001¡£ËùÒÔ£¬[X/Y]Ô=00001 (×î¸ßλΪ·ûºÅλ)£¬ÓàÊýΪ0100¡£ £¨5£©½«10ºÍ¨C6·Ö±ð±íʾ³É²¹ÂëÐÎʽΪ£º[10]²¹= 0 1010 , [¨C6]²¹= 1 1010£¬¼ÆËã¹ý³ÌÈçÏ£º ÏȶԱ»³ýÊý½øÐзûºÅÀ©Õ¹£¬[10]²¹=00000 01010£¬[6]²¹= 0 0110 ÓàÊý¼Ä´æÆ÷RÓàÊý/É̼ĴæÆ÷Q˵Ã÷ 0 0 00 0 0 1 0 1 0 ¿ªÊ¼R0=[X] + 1 10 10 R1=[X]+[Y] 1 10 1 00 1 0 1 0 R1Óë[Y]ͬºÅ£¬Ôòq5 =1 1 0 1 0 01 0 101 2R1£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÏÉÌ1£© +0 0 1 1 0 R2 =2R1+[¨CY] 11 0 1 01 0 10 1 R2Óë[Y]ͬºÅ£¬Ôòq4= 1£¬ 1 0 1 0 10 1 0 1 1 2R2£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÏÉÌ1£© + 0 0 1 1 0 R3 =2R2+[-Y] 1 1 0 1 10 10 1 1 R3Óë[Y]ͬºÅ£¬Ôòq3 = 1 1 0 1 1 01 0 1 1 1 2R3£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÏÉÌ1£© + 00 1 1 0 R4=2R3+[¨CY] 11 1 0 010 1 1 1 R4Óë[Y]ͬºÅ£¬Ôòq 2 = 1 11 0 0 10 1 1 1 1 2R4£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÏÉÌ0£© + 00 1 1 0 R5=2R4+[-Y] 11 1 1 1 0 1 1 1 1 R5Óë[Y]ͬºÅ£¬Ôòq1= 1£¬ 11 1 1 01 1 1 11 2R5£¨RºÍQͬʱ×óÒÆ£¬¿Õ³öһλÉÏÉÌ1£© + 00 1 1 0 R6=2R5 +[¨CY] 00 1 0 0 1 1 1 1 0 R6Óë[Y]ÒìºÅ£¬Ôòq0 = 0£¬Q×óÒÆ£¬¿Õ³öһλÉÏÉÌ1 + 00 0 0 0+1 ÉÌΪ¸ºÊý£¬Ä©Î»¼Ó1£»ÓàÊý²»ÐèÒªÐÞÕý 0 0 1 0 0 1 1 1 1 1 ËùÒÔ£¬[X/Y]²¹=11111£¬ÓàÊýΪ00100¡£ ¼´£ºX/Y= ¨C 0001B = ¨C 1£¬ÓàÊýΪ 0100B = 4 ½«¸÷Êý´úÈ빫ʽ¡°³ýÊý¡ÁÉÌ+ÓàÊý= ±»³ýÊý¡±½øÐÐÑéÖ¤£¬µÃ£º(¨C6)¡Á(¨C1) +4= 10¡£ 10£®ÈôÒ»´Î¼Ó·¨ÐèÒª1ns£¬Ò»´ÎÒÆÎ»ÐèÒª0.5ns¡£Çë·Ö±ð¼ÆËãÓÃһλ³Ë·¨¡¢Á½Î»³Ë·¨¡¢»ùÓÚCRAµÄÕóÁÐ ³Ë·¨¡¢»ùÓÚCSAµÄÕóÁг˷¨ËÄÖÖ·½Ê½¼ÆËãÁ½¸ö8λÎÞ·ûºÅ¶þ½øÖÆÊý³Ë»ýʱËùÐèµÄʱ¼ä¡£ ²Î¿¼´ð°¸£º һλ³Ë·¨£º8´ÎÓÒÒÆ£¬8´Î¼Ó·¨£¬¹²¼Æ12ns£» ¶þλ³Ë·¨£º4´ÎÓÒÒÆ£¬4´Î¼Ó·¨£¬¹²¼Æ6ns£» »ùÓÚCRAµÄÕóÁг˷¨£ºÃ¿Ò»¼¶²¿·Ö»ý²»½öÒÀÀµÓÚÉÏÒ»¼¶²¿·Ö»ý£¬»¹ÒÀÀµÓÚÉÏÒ»¼¶×îÖյĽøÎ»£¬¶øÃ¿ Ò»¼¶½øÎ»ÓÖÊÇ´®ÐнøÐеģ¬ËùÒÔ×µÄ·¾¶×ܹ²¾¹ýÁË8+2¡Á(8¨C1)=22´ÎÈ«¼ÓÆ÷£¬¹²¼ÆÔ¼22ns£» »ùÓÚCSAµÄÕóÁг˷¨£º±¾¼¶½øÎ»ºÍ±¾¼¶ºÍͬʱ´«Ë͵½ÏÂÒ»¼¶£¬Í¬¼¶²¿·Ö»ýÖ®¼ä²»Ï໥ÒÀÀµ£¬Ö»½øÐÐO£¨N£©´Î¼Ó·¨ÔËË㣬Òò´Ë£¬¹²¼ÆÔ¼8ns¡£ 11£®ÔÚIEEE 754¸¡µãÊýÔËËãÖУ¬µ±½á¹ûµÄβÊý³öÏÖʲôÐÎʽʱÐèÒª½øÐÐ×󹿣¬Ê²Ã´ÐÎʽʱÐèÒª½øÐÐÓҹ棿 ÈçºÎ½øÐÐ×󹿣¬ÈçºÎ½øÐÐÓҹ棿 ²Î¿¼´ð°¸£º (1)¶ÔÓÚ½á¹ûΪ¡À1x.xx¡¡xµÄÇé¿ö£¬ÐèÒª½øÐÐÓҹ档ÓÒ¹æÊ±£¬Î²ÊýÓÒÒÆÒ»Î»£¬½×Âë¼Ó1¡£ÓÒ¹æ²Ù×÷¿ÉÒÔ±íʾΪ£ºM b?M b ¡Á2 -1£¬Eb?Eb+1¡£ÓÒ¹æÊ±×¢ÒâÒÔÏÂÁ½µã£º a) βÊýÓÒÒÆÊ±£¬×î¸ßλ¡°1¡±±»ÒƵ½Ð¡Êýµãǰһλ×÷ΪÒþ²ØÎ»£¬×îºóÒ»Î»ÒÆ³öʱ£¬Òª¿¼ÂÇÉáÈë¡£ b) ½×Âë¼Ó1ʱ£¬Ö±½ÓÔÚĩλ¼Ó1¡£ (2)¶ÔÓÚ½á¹ûΪ¡À0.00¡¡01x¡¡xµÄÇé¿ö£¬ÐèÒª½øÐÐ×󹿡£×ó¹æÊ±£¬ÊýֵλÖð´Î×óÒÆ£¬½×ÂëÖð´Î¼õ1£¬Ö±µ½½«µÚһλ¡°1¡±ÒƵ½Ð¡Êýµã×ó±ß¡£¼Ù¶¨kΪ½á¹ûÖС°¡À¡±ºÍ×ó±ßµÚÒ»¸ö1Ö®¼äÁ¬Ðø0µÄ¸öÊý£¬Ôò×󹿲Ù×÷¿ÉÒÔ±íʾΪ£ºM b?M b ¡Á2k£¬Eb?Eb¨Ck¡£×ó¹æÊ±×¢ÒâÒÔÏÂÁ½µã£º a) βÊý×óÒÆÊ±ÊýÖµ²¿·Ö×î×ók¸ö0±»ÒƳö£¬Òò´Ë£¬Ïà¶ÔÀ´Ëµ£¬Ð¡ÊýµãÓÒÒÆÁËkλ¡£ÒòΪ½øÐÐβÊýÏà¼Óʱ£¬Ä¬ÈÏСÊýµãλÖÃÔÚµÚÒ»¸öÊýֵ루¼´£ºÒþ²ØÎ»£©Ö®ºó£¬ËùÒÔСÊýµãÓÒÒÆkλºó±»ÒƵ½Á˵Úһλ1ºóÃæ£¬Õâ¸ö1¾ÍÊÇÒþ²ØÎ»¡£ b) Ö´ÐÐEb?Eb¨Ckʱ£¬Ã¿´Î¶¼ÔÚĩλ¼õ1£¬Ò»¹²¼õk´Î¡£ 12£®ÔÚIEEE 754¸¡µãÊýÔËËãÖУ¬ÈçºÎÅжϸ¡µãÔËËãµÄ½á¹ûÊÇ·ñÒç³ö£¿ ²Î¿¼´ð°¸£º ¸¡µãÔËËã½á¹ûÊÇ·ñÒç³ö£¬²¢²»ÒÔβÊýÒç³öÀ´Åжϣ¬¶øÖ÷Òª¿´½×ÂëÊÇ·ñÒç³ö¡£Î²ÊýÒç³öʱ£¬¿Éͨ¹ýÓÒ¹æ²Ù×÷½øÐоÀÕý¡£½×ÂëÉÏÒçʱ£¬ËµÃ÷½á¹ûµÄÊýֵ̫´ó£¬ÎÞ·¨±íʾ£»½×ÂëÏÂÒçʱ£¬ËµÃ÷½á¹ûÊýֵ̫С£¬¿ÉÒ԰ѽá¹û½üËÆÎª0¡£ ÔÚ½øÐжԽס¢¹æ¸ñ»¯¡¢ÉáÈëºÍ¸¡µãÊýµÄ³Ë/³ýÔËËãµÈ¹ý³ÌÖУ¬¶¼ÐèÒª¶Ô½×Âë½øÐмӡ¢¼õÔËË㣬¿ÉÄܻᷢÉú½×ÂëÉÏÒç»ò½×ÂëÏÂÒ磬Òò´Ë£¬±ØÐë¶Ô½×Âë½øÐÐÒç³öÅжϡ£ £¨ÓйضԽ×Âë½øÐÐÒç³öÅжϵķ½·¨¿É²Î¼û½Ì²ÄÖÐÏà¹ØÕ½ڡ££© 13£®¼ÙÉ踡µãÊý¸ñʽΪ£º½×ÂëÊÇ4Î»ÒÆÂ룬ƫÖó£ÊýΪ8£¬Î²ÊýÊÇ6λ²¹Â루²ÉÓÃË«·ûºÅ룩£¬Óø¡µãÔË Ëã¹æÔò·Ö±ð¼ÆËãÔÚ²»²ÉÓÃÈκθ½¼ÓλºÍ²ÉÓÃ2λ¸½¼Ó루±£»¤Î»¡¢ÉáÈë룩Á½ÖÖÇé¿öϵÄÖµ¡££¨¼Ù¶¨¶Ô½×ºÍÓÒ¹æÊ±²ÉÓþͽüÉáÈ뵽żÊý·½Ê½£© £¨1£©(15/16) ¡Á27+(2/16) ¡Á25 £¨2£©(15/16) ¡Á27¨C(2/16) ¡Á25 £¨3£©(15/16) ¡Á25+(2/16) ¡Á27 £¨4£©(15/16) ¡Á25¨C(2/16) ¡Á27 ²Î¿¼´ð°¸£¨¼Ù¶¨²ÉÓÃÒþ²ØÎ»£©£º X= (15/16) ¡Á27=0.111100B ¡Á27=(1.111000)2¡Á26 Y1= (2/16) ¡Á25=0.001000B¡Á25=(1.000000)2¡Á22 Y2= (¨C2/16) ¡Á25=¨C0.001000B¡Á25=(¨C1.000000)2¡Á22 K= (15/16) ¡Á25=0.111100B ¡Á25=(1.111000)2¡Á24 J1= (2/16) ¡Á27=0.001000B ¡Á27=(1.000000)2¡Á24 J2= (¨C2/16) ¡Á27=¨C0.001000B ¡Á27=(¨C1.000000)2¡Á24 ¸ù¾ÝÌâÄ¿Ëù¸øµÄ¸÷ÖÖλÊý£¬¿ÉÒԵõ½ÔÚ»úÆ÷ÖбíʾΪ£º [X]¸¡= 00 1110 (1)111000 [Y1]¸¡= 00 1010 (1)000000 [Y2]¸¡= 11 1010 (1)000000 [K]¸¡= 00 1100 (1)111000 [J1]¸¡= 00 1100 (1)000000 [J2]¸¡= 11 1100 (1)000000 ËùÒÔ£¬E x= 1110£¬Mx= 00 (1). 111000£¬E y1 = 1010£¬My= 00(1).000000£¬E y2 = 1010£¬My= 11(1).000000 Ek= 1100£¬MK = 00 (1). 111000£¬EJ1 = 1100£¬MJ1 = 00(1).000000£¬EJ2 = 1100£¬MJ2 = 11(1).000000 βÊýMÖÐСÊýµãÇ°ÃæÓÐÈýλ£¬Ç°Á½Î»ÎªÊý·û£¬±íʾ˫·ûºÅ£¬µÚÈýλ¼ÓÁËÀ¨ºÅ£¬ÊÇÒþ²ØÎ»¡°1¡±¡£ ûÓи½¼ÓλʱµÄ¼ÆË㣺 £¨1£© X+Y1 [¦¤E]²¹= [E x]ÒÆ+ [¨C[E y1]ÒÆ]²¹(mod 2n) = 1110 + 0110 = 0100 ¦¤E = 4£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖªÐèÒª¶Ôy1½øÐжԽף¬½á¹ûΪ£ºE y1 = E x= 1110£¬My 1=000.000100 βÊýÏà¼Ó£ºMb = Mx+ My1 = 001. 111000+ 000.000100 = 001.111100£¬Á½Î»·ûºÅÏàµÈ£¬ÊýÖµ²¿·Ö×î¸ßλΪ1£¬²»ÐèÒª½øÐйæ¸ñ»¯£¬ËùÒÔ×îºó½á¹ûΪ£ºE=1110£¬M=00(1).111100, ¼´(31/32) ¡Á27 £¨2£© X+Y2 [¦¤E]²¹= [E x]ÒÆ+ [¨C[E y2]ÒÆ]²¹(mod 2n) = 1110 + 0110 = 0100; ¦¤E = 4£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖªÐèÒª¶Ôy2½øÐжԽף¬½á¹ûΪ£ºE y2 = E x= 1110£¬My2=111.111100 βÊýÏà¼Ó£ºMb = Mx+ My2 = 001. 111000+ 111.111100=001.110100£¬Á½Î»·ûºÅÏàµÈ£¬ÊýÖµ²¿·Ö×î¸ßΪ1£¬²»ÐèÒª½øÐйæ¸ñ»¯£¬ËùÒÔ×îºó½á¹ûΪ£ºE=1110£¬M=00(1).110100, ¼´(29/32) ¡Á27 £¨3£© K+J1 [¦¤E]²¹= [EK]ÒÆ+ [¨C[EJ1]ÒÆ]²¹(mod 2n) = 1100 + 0100 = 0000; ¦¤E = 0£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖª²»ÐèÒª½øÐжԽס£ βÊýÏà¼Ó£ºMb = MK+ MJ1 = 001. 111000+ 001.000000= 010.111000£¬Á½Î»·ûºÅ²»µÈ£¬ËµÃ÷βÊýÒç³ö£¬ÐèÒª½øÐÐÓҹ棬×îºó½á¹ûΪ£ºE=1101£¬M=00(1).011100, ¼´(23/32) ¡Á26 £¨4£© K+J2 [¦¤E]²¹= [EK]ÒÆ+ [¨C[EJ2]ÒÆ]²¹(mod 2n) = 1100 + 0100 = 0000; ¦¤E = 0£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖª²»ÐèÒª½øÐжԽס£ βÊýÏà¼Ó£ºMb = MK+ MJ2 = 00 1. 111000+ 111.000000 = 000.111000£¬Á½Î»·ûºÅÏàµÈ£¬ÊýÖµ²¿·Ö×î¸ßλΪ0£¬ÐèÒª½øÐÐ×󹿣¬ËùÒÔ×îºó½á¹ûΪ£ºE=1011£¬M=00(1).110000, ¼´(7/8) ¡Á24 Èç¹ûÓÐÁ½Î»¸½¼Óλ¾«¶ÈÉÏ»áÓÐÌá¸ß£¬ÔÚ¶Ô½×µÄʱºòҪעÒâСÊýµãºó¾Í²»ÊÇ6룬¶øÊÇ8룬×îºóÁ½Î»Îª±£»¤Î»ºÍÉáÈëλ¡£µ«ÊÇÓÉÓÚ±¾Ìâ6λβÊýÒѾ×ã¹»£¬ÔÙ¼Ó2λ¸½¼Ó룬Æä½á¹ûÊÇÒ»ÑùµÄ¡£ 14£®²ÉÓÃIEEE 754µ¥¾«¶È¸¡µãÊý¸ñʽ¼ÆËãÏÂÁбí´ïʽµÄÖµ¡£ £¨1£©0.75+(¨C65.25£© £¨2£©0.75¨C(¨C65.25£© ²Î¿¼´ð°¸£º x=0.75=0.110...0B =(1.10...0)2¡Á2-1 y=¨C65.25 =¨C 1000001.01000...0B =(¨C1.00000101...0) 2¡Á26 ÓÃIEEE 754±ê×¼µ¥¾«¶È¸ñʽ±íʾΪ£º [x]¸¡= 0 01111110 10...0 [y]¸¡= 1 10000101 000001010...0 ËùÒÔ£¬E x= 01111110£¬Mx= 0 (1). 1...0£¬E y = 10000101£¬My= 1(1).000001010...0 βÊýMxºÍMyÖÐСÊýµãÇ°ÃæÓÐÁ½Î»£¬µÚһλΪÊý·û£¬µÚ¶þλ¼ÓÁËÀ¨ºÅ£¬ÊÇÒþ²ØÎ»¡°1¡±¡£ ÒÔÏÂÊǼÆËã»úÖнøÐи¡µãÊý¼Ó¼õÔËËãµÄ¹ý³Ì£¨¼Ù¶¨±£Áô2λ¸½¼Óλ£º±£»¤Î»ºÍÉáÈë룩 £¨1£©0.75+ (¨C65.25£© ¢Ù¶Ô½×£º [¦¤E]²¹= [E x]ÒÆ+ [¨C[E y]ÒÆ]²¹(mod 2n) = 0111 1110 + 0111 1011 = 1111 1001 ¦¤E = ¨C7£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖªÐèÒª¶Ôx½øÐжԽף¬½á¹ûΪ£ºEx = Ey= 10000101£¬Mx =00.000000110...000 xµÄβÊýMxÓÒÒÆ7룬·ûºÅ²»±ä£¬ÊýÖµ¸ßλ²¹0£¬Òþ²ØÎ»ÓÒÒÆµ½Ð¡ÊýµãºóÃæ£¬×îºóÒÆ³öµÄ2λ ±£Áô ¢ÚβÊýÏà¼Ó£ºMb = Mx+ My= 00.000000110...000+ 11.000001010 ...000 £¨×¢ÒâСÊýµãÔÚÒþ²ØÎ»ºó£© ¸ù¾ÝÔÂë¼Ó/¼õ·¨ÔËËã¹æÔò£¬µÃ£º00.000000110...000+ 11.000001010...000 = 11.000000100¡000 ÉÏʽβÊýÖÐ×î×ó±ßµÚһλÊÇ·ûºÅ룬ÆäÓà¶¼ÊÇÊýÖµ²¿·Ö£¬Î²ÊýºóÃæÁ½Î»ÊǸ½¼Ó루¼Ó´Ö£©¡£ ¢Û¹æ¸ñ»¯£º¸ù¾ÝËùµÃβÊýµÄÐÎʽ£¬ÊýÖµ²¿·Ö×î¸ßλΪ1£¬ËùÒÔ²»ÐèÒª½øÐйæ¸ñ»¯¡£ ¢ÜÉáÈ룺°Ñ½á¹ûµÄβÊýMbÖÐ×îºóÁ½Î»¸½¼ÓλÉáÈëµô£¬´Ó±¾ÀýÀ´¿´£¬²»¹Ü²ÉÓÃʲôÉáÈë·¨£¬½á¹û¶¼Ò»Ñù£¬ ¶¼ÊǰÑ×îºóÁ½¸ö0È¥µô£¬µÃ£ºMb= 11.000000100¡0 ¢ÝÒç³öÅжϣºÔÚÉÏÊö½×Âë¼ÆËãºÍµ÷Õû¹ý³ÌÖУ¬Ã»Óз¢Éú¡°½×ÂëÉÏÒ硱ºÍ¡°½×ÂëÏÂÒ硱µÄÎÊÌâ¡£Òò´Ë£¬½× ÂëEb= 10000101¡£ ×îºó½á¹ûΪEb= 10000101£¬Mb= 1(1).00000010¡0£¬¼´£º¨C64.5¡£ £¨2£©0.75¨C(¨C65.25£© ¢Ù¶Ô½×£º [¦¤E]²¹= [E x]ÒÆ+ [¨C[E y]ÒÆ]²¹(mod 2n) = 0111 1110 + 0111 1011 = 1111 1001 ¦¤E = -7£¬¸ù¾Ý¶Ô½×¹æÔò¿ÉÖªÐèÒª¶Ôx½øÐжԽף¬½á¹ûΪ£ºEx = Ey= 10000110£¬Mx =00.000000110...000 xµÄβÊýMxÓÒÒÆÒ»Î»£¬·ûºÅ²»±ä£¬ÊýÖµ¸ßλ²¹0£¬Òþ²ØÎ»ÓÒÒÆµ½Ð¡ÊýµãºóÃæ£¬×îºóÒÆ³öµÄλ±£ Áô ¢ÚβÊýÏà¼Ó£ºMb = Mx¨CMy= 00.000000110...000 ¨C 11.000001010...000 £¨×¢ÒâСÊýµãÔÚÒþ²ØÎ»ºó£© ¸ù¾ÝÔÂë¼Ó/¼õ·¨ÔËËã¹æÔò£¬µÃ£º00.000000110...000¨C 11.000001010...000=01.00001000¡000 ÉÏʽβÊýÖÐ×î×ó±ßµÚһλÊÇ·ûºÅ룬ÆäÓà¶¼ÊÇÊýÖµ²¿·Ö£¬Î²ÊýºóÃæÁ½Î»ÊǸ½¼Ó루¼Ó´Ö£©¡£ ¢Û¹æ¸ñ»¯£º¸ù¾ÝËùµÃβÊýµÄÐÎʽ£¬ÊýÖµ²¿·Ö×î¸ßλΪ1£¬²»ÐèÒª½øÐйæ¸ñ»¯¡£ ¢ÜÉáÈ룺°Ñ½á¹ûµÄβÊýMbÖÐ×îºóÁ½Î»¸½¼ÓλÉáÈëµô£¬´Ó±¾ÀýÀ´¿´£¬²»¹Ü²ÉÓÃʲôÉáÈë·¨£¬½á¹û¶¼Ò»Ñù£¬ ¶¼ÊǰÑ×îºóÁ½¸ö0È¥µô£¬µÃ£ºMb= 01.00001000¡0 ¢ÝÒç³öÅжϣºÔÚÉÏÊö½×Âë¼ÆËãºÍµ÷Õû¹ý³ÌÖУ¬Ã»Óз¢Éú¡°½×ÂëÉÏÒ硱ºÍ¡°½×ÂëÏÂÒ硱µÄÎÊÌâ¡£Òò´Ë£¬½× ÂëEb= 10000101¡£ ×îºó½á¹ûΪEb = 10000101£¬Mb= 0(1).00001000¡0£¬¼´£º+66¡£ ˼¿¼Ì⣺¶Ô½×ʱ·¢ÉúʲôÇé¿ö£¬¾Í¿ÉÒÔ²»ÔÙ¼ÌÐø½øÐмÆË㣿 15£®¼Ù¶¨Ê®½øÖÆÊýÓÃ8421 NBCDÂë±íʾ£¬²ÉÓÃÊ®½øÖƼӷ¨ÔËËã¼ÆËãÏÂÁбí´ïʽµÄÖµ£¬²¢ÌÖÂÛÔÚÊ®½øÖÆ BCDÂë¼Ó·¨ÔËËãÖÐÈçºÎÅжÏÒç³ö¡£ £¨1£©234+567 £¨2£©548+729 ²Î¿¼´ð°¸£º £¨1£©234+567 001000110100 + 0101 01100111 0111 10011011 + 0110 01111010 0001 + 0110 0000 10000000 0001 ½á¹ûΪ£º (801)10 £¨2£©548+729 0000 010101001000 + 00000111 00101001 0000 110001110001 + 0000 0110 0000 0110 00010010 0111 0111 ½á¹ûΪ£º (1277)10 ÔÚµÚ£¨2£©ÌâÖУ¬Èç¹ûÊDzÉÓÃ12λÊý±íʾ¼ÓÊý548ºÍ729£¬ÔòÄÜ¿´³ö×îºóµÃµ½µÄ´ð°¸ÊÇ1100 0111 0111£¬Õâʱ¾ÍÊÇBCDÂë¼Ó·¨Òç³öÁË¡£ËùÒÔÎÒÃÇÔÚÅжϵÄʱºò²»Äܽö½ö¿´BCDÂë×î¸ßλÊDz»ÊǶªÊ§£¬¶øÒª¿´½á¹ûµÄ×î¸ß4λÊDz»ÊÇ´óÓÚ9£¬Èç¹û´óÓÚ9£¬¾Í¿ÉÒÔÈÏΪÊÇÒç³öÁË¡£ 16£®¼Ù¶¨Ê®½øÖÆÊýÓÃ8421 NBCDÂë±íʾ£¬Ê®½øÖÆÔËËã673¨C356¿ÉÒÔ²ÉÓÃ673¼ÓÉÏ(¨C356)µÄÄ£10²¹ÂëʵÏÖ¡£ »³öʵÏÖÉÏÊö²Ù×÷µÄ3λʮ½øÖÆÊýµÄBCDÂë¼õ·¨ÔËËãÏß·£¬ÁгöÏß·ÖÐËùÓеÄÊäÈë±äÁ¿ºÍÊä³ö±äÁ¿¡£ ²Î¿¼´ð°¸£º [¨C (356) 10]²¹= 0110 0100 0100 011001110011 + 0110 01000100 110010110111 + 0110 01100000 00110001 0111 ×î¸ßλ²úÉú½øÎ»£¬Òò´Ë£¬½á¹ûΪÕýÊý£º0011 0001 0111£¬¹Ê½á¹ûΪ£º(+317)10 µç·ͼ·ÖΪÁ½²¿·Ö£¬Ò»¸öÊÇÇó³öÄ£10²¹Â룬ÁíÒ»¸öÊǼÆËãÒÔ¼°ÅжÏÊä³ö½á¹ûµÄµç·ͼ£¨²Î¼û½Ì²Äͼ3.33£©¡£ ÇóÄ£10²¹ÂëµÄµç·ͼ£¨RTL¼¶£©ÈçÏ£º Add0jianshu[11..0]11' h333 --A[10..0]B[10..0]+ADDER12' h001 --Add1A[11..0]B[11..0]+ADDERtemp[11..0] ¼ÆËãµç·ͼ£¨RTL¼¶£©ÈçÏ£º 1' h0 --Add2A[4..0]B[4..0]Add13A[3..0]result~[71..48]Add14A[4..0]jianshu[11..0]1' h0 --+ADDERtemp[11..0]4' h3 --B[3..0]+Add8ADDER5' h01 --SELB[4..0]+DATAAADDERresult~[83..72]SELOUT0DATAADATABOUT0A[3..0]4' h3 --B[3..0]+ADDERDATAB1' h0 --A[4..0]B[4..0]Add1result[11..0]1' h0 --+A[3..0]Add124' h3 --B[3..0]result~[47..36]Add11A[3..0]MUX21ADDER+ADDER4' h3 --B[3..0]SELMUX211' h0 --A[4..0]B[4..0]Add0+ADDERDATAA1' h0 --+ADDERA[4..0]OUT0Add9DATAB5' h01 --B[4..0]+LessThan4ADDERA[3..0]Add104' h3 --B[3..0]5' h09 --A[4..0]B[4..0]+LessThan3ADDERA[4..0] µÚ 4 ÕÂϰÌâ´ð°¸ 3. ÒÑ֪ij»úÖ÷´æ¿Õ¼ä´óСΪ64KB£¬°´×Ö½Ú±àÖ·¡£ÒªÇó£º £¨1£©ÈôÓÃ1K¡Á4λµÄSRAMоƬ¹¹³É¸ÃÖ÷´æ´¢Æ÷£¬ÐèÒª¶àÉÙ¸öоƬ£¿ £¨2£©Ö÷´æµØÖ·¹²¶àÉÙλ£¿¼¸Î»ÓÃÓÚѡƬ£¿¼¸Î»ÓÃÓÚÆ¬ÄÚѡַ£¿ £¨3£©»³ö¸Ã´æ´¢Æ÷µÄÂß¼¿òͼ¡£ ²Î¿¼´ð°¸£º £¨1£©64KB / 1K¡Á4λ = 64¡Á2 = 128Ƭ¡£ £¨2£©ÒòΪÊǰ´×Ö½Ú±àÖ·£¬ËùÒÔÖ÷´æµØÖ·¹²16룬6λѡƬ£¬10λƬÄÚѡַ¡£ £¨3£©ÏÔÈ»£¬Î»·½ÏòÉÏÀ©Õ¹ÁË2±¶£¬×Ö·½ÏòÀ©Õ¹ÁË64±¶¡£ÏÂͼÖÐÆ¬Ñ¡ÐźÅCSΪ¸ßµçƽÓÐЧ¡£ Y0A15¡¡¡A10A9¡Y63A0¡1K*4SRAMCSWR1K*4SRAMCSWR??1K*4SRAMCSWR1K*4SRAMCSWRD7¡D0WE 4. ÓÃ64K¡Á1λµÄDRAMоƬ¹¹³É256K¡Á8λµÄ´æ´¢Æ÷¡£ÒªÇó£º £¨1£©¼ÆËãËùÐèоƬÊý£¬²¢»³ö¸Ã´æ´¢Æ÷µÄÂß¼¿òͼ¡£ £¨2£©Èô²ÉÓÃÒ첽ˢз½Ê½£¬Ã¿µ¥ÔªË¢Ð¼ä¸ô²»³¬¹ý2ms£¬Ôò²úÉúË¢ÐÂÐźŵļä¸ôÊǶàÉÙʱ¼ä£¿Èô²É Óü¯ÖÐˢз½Ê½£¬Ôò´æ´¢Æ÷Ë¢ÐÂÒ»±é×îÉÙÓöàÉÙ¶ÁдÖÜÆÚ£¿ ²Î¿¼´ð°¸£º £¨1£©256KB / 64K¡Á1λ = 4¡Á8 = 32Ƭ¡£´æ´¢Æ÷Âß¼¿òͼ¼ûÏÂÒ³£¨Í¼ÖÐÆ¬Ñ¡ÐźÅCSΪ¸ßµçƽÓÐЧ£©¡£ £¨2£©ÒòΪÿ¸öµ¥ÔªµÄˢмä¸ôΪ2ms£¬ËùÒÔ£¬²ÉÓÃÒ첽ˢÐÂʱ£¬ÔÚ2msÄÚÿÐбØÐ뱻ˢÐÂÒ»´Î£¬ÇÒ ½ö±»Ë¢ÐÂÒ»´Î¡£ÒòΪDRAMоƬ´æ´¢ÕóÁÐΪ64K=256¡Á256£¬ËùÒÔÒ»¹²ÓÐ256ÐС£Òò´Ë£¬´æ´¢Æ÷¿ØÖÆÆ÷±ØÐëÿ¸ô2ms/256=7.8¦Ìs²úÉúÒ»´ÎË¢ÐÂÐźš£²ÉÓü¯ÖÐˢз½Ê½Ê±£¬Õû¸ö´æ´¢Æ÷Ë¢ÐÂÒ»±éÐèÒª256¸ö´æ´¢£¨¶Áд£©ÖÜÆÚ£¬ÔÚÕâ¸ö¹ý³ÌÖУ¬´æ´¢Æ÷²»ÄܽøÐжÁд²Ù×÷¡£ A17Y0¡¡A16A15¡¡Y3A0CSCSCSCSCSCSDRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1CSDRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1CSCSCSCSCSCSCSCSCS??DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1D7¡D0 5. ÓÃ8K¡Á8λµÄEPROMоƬ×é³É32K¡Á16λµÄÖ»¶Á´æ´¢Æ÷£¬ÊÔÎÊ£º £¨1£©Êý¾Ý¼Ä´æÆ÷×îÉÙÓ¦ÓжàÉÙλ£¿£¨2£©µØÖ·¼Ä´æÆ÷×îÉÙÓ¦ÓжàÉÙλ£¿ £¨3£©¹²Ðè¶àÉÙ¸öEPROMоƬ£¿ £¨4£©»³ö¸ÃÖ»¶Á´æ´¢Æ÷µÄÂß¼¿òͼ¡£ ²Î¿¼´ð°¸£º £¨1£©Êý¾Ý¼Ä´æÆ÷×îÉÙÓÐ16λ¡£ £¨2£©µØÖ·¼Ä´æÆ÷×îÉÙÓУº15루Èô°´16λµÄ×Ö±àÖ·£©£»16루Èô°´×Ö½Ú±àÖ·£©¡£ £¨3£©¹²ÐèÒª 32K¡Á16λ / 8K¡Á8λ= 4¡Á2 = 8Ƭ¡£ £¨4£©¸ÃÖ»¶Á´æ´¢Æ÷µÄÂß¼¿òͼÈçÏ£¨¼Ù¶¨°´×Ö±àÖ·£¬Í¼ÖÐÆ¬Ñ¡ÐźÅCSΪ¸ßµçƽÓÐЧ£©¡£ Y0A14A13A12¡¡????CSWR??CS????CSWR¡¡Y3A08K*8EPROM8K*8EPROMWR8K*8EPROM8K*8EPROMWRCSD15¡¡D8D7¡¡D0 6. ij¼ÆËã»úÖÐÒÑÅäÓÐ0000H¡«7FFFHµÄROMÇøÓò£¬ÏÖÔÚÔÙÓÃ8K¡Á4λµÄRAMоƬÐγÉ32K¡Á8λµÄ ´æ´¢ÇøÓò£¬CPUµØÖ·×ÜÏßΪA0-A15£¬Êý¾Ý×ÜÏßΪD0-D7£¬¿ØÖÆÐźÅΪR/W#£¨¶Á/д£©¡¢MREQ#£¨·Ã´æ£©¡£ÒªÇó˵Ã÷µØÖ·ÒëÂë·½°¸£¬²¢»³öROMоƬ¡¢RAMоƬÓëCPUÖ®¼äµÄÁ¬½Óͼ¡£¼Ù¶¨ÉÏÊöÆäËûÌõ¼þ²»±ä£¬Ö»ÊÇCPUµØÖ·Ï߸ÄΪ24¸ù£¬µØÖ··¶Î§000000H¡«007FFFHΪROMÇø£¬Ê£ÏµÄËùÓеØÖ·¿Õ¼ä¶¼ÓÃ8K¡Á4λµÄRAMоƬÅäÖã¬ÔòÐèÒª¶àÉÙ¸öÕâÑùµÄRAMоƬ£¿ ²Î¿¼´ð°¸£º WECPUµØÖ·Ïß¹²16룬¹Ê´æ´¢Æ÷µØÖ·¿Õ¼äΪ0000H¡«FFFFH£¬ÆäÖУ¬8000H¡«FFFFHΪRAMÇø£¬¹²215=32K¸öµ¥Ôª£¬Æä¿Õ¼ä´óСΪ32KB£¬¹ÊÐè8K¡Á4λµÄоƬÊýΪ32KB/8K¡Á4λ=4¡Á2=8Ƭ¡£ ÒòΪROMÇøÔÚ0000H¡«7FFFH£¬RAMÇøÔÚ8000H¡«FFFFH£¬ËùÒÔ¿Éͨ¹ý×î¸ßλµØÖ·A15À´Çø·Ö£¬µ±A15Ϊ0ʱѡÖÐROMоƬ£»Îª1ʱѡÖÐRAMоƬ£¬´Ëʱ£¬¸ù¾ÝA14ºÍA13½øÐÐÒëÂ룬µÃµ½4¸öÒëÂëÐźţ¬·Ö±ðÓÃÓÚ4×é×ÖÀ©Õ¹Ð¾Æ¬µÄƬѡÐźš££¨Í¼ÂÔ£¬¿É²ÎÕÕͼ4.15£© ÈôCPUµØÖ·ÏßΪ24룬ROMÇøÎª000000H¡«007FFFH£¬ÔòROMÇø´óСΪ32KB£¬×Ü´óСΪ16MB=214KB=512¡Á32KB£¬ËùÒÔRAMÇø´óСΪ511¡Á32KB£¬¹²ÐèʹÓÃRAMоƬÊýΪ511¡Á32KB/8K¡Á4λ=511¡Á4¡Á2¸öоƬ¡£ 7. ¼Ù¶¨Ò»¸ö´æ´¢Æ÷ϵͳ֧³Ö4Ìå½»²æ´æÈ¡£¬Ä³³ÌÐòÖ´Ðйý³ÌÖзÃÎʵØÖ·ÐòÁÐΪ3, 9, 17, 2, 51, 37, 13, 4, 8, 41, 67, 10£¬ÔòÄÄЩµØÖ··ÃÎʻᷢÉúÌå³åÍ»£¿ ²Î¿¼´ð°¸£º ¶ÔÓÚ4Ìå½»²æ·ÃÎʵĴ洢ϵͳ£¬Ã¿¸ö´æ´¢Ä£¿éµÄµØÖ··Ö²¼Îª£º Bank0: 0¡¢4¡¢8¡¢12¡¢16 ¡ ¡ Bank1: 1¡¢5¡¢9¡¢13¡¢17 ¡37 ¡41¡ Bank2: 2¡¢6¡¢10¡¢14¡¢18 ¡ ¡ Bank3: 3¡¢7¡¢11¡¢15¡¢19¡51¡67 Èç¹û¸ø¶¨µÄ·Ã´æµØÖ·ÔÚÏàÁÚµÄ4´Î·ÃÎÊÖгöÏÖÔÚͬһ¸öBankÄÚ£¬¾Í»á·¢Éú·Ã´æ³åÍ»¡£ËùÒÔ£¬17ºÍ9¡¢37ºÍ17¡¢13ºÍ37¡¢8ºÍ4·¢Éú³åÍ»¡£ 8. ÏÖ´ú¼ÆËã»úÖУ¬SRAMÒ»°ãÓÃÓÚʵÏÖ¿ìËÙСÈÝÁ¿µÄcache£¬¶øDRAMÓÃÓÚʵÏÖÂýËÙ´óÈÝÁ¿µÄÖ÷´æ¡£ ÒÔǰ³¬¼¶¼ÆËã»úͨ³£²»Ìṩcache£¬¶øÊÇÓÃSRAMÀ´ÊµÏÖÖ÷´æ£¨È磬Cray¾ÞÐÍ»ú£©£¬ÇëÎÊ£ºÈç¹û²»¿¼Âdzɱ¾£¬Ä㻹ÕâÑùÉè¼Æ¸ßÐÔÄܼÆËã»úÂð£¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º ²»ÕâÑù×öµÄÀíÓÉÖ÷ÒªÓÐÒÔÏÂÁ½¸ö·½Ã棺 ¢ÙÖ÷´æÔ½´óÔ½ºÃ£¬Ö÷´æ´ó£¬È±Ò³ÂʽµµÍ£¬Òò¶ø¼õÉÙÁË·ÃÎÊ´ÅÅÌËùÐèµÄʱ¼ä¡£ÏÔÈ»ÓÃDRAMоƬ±ÈÓÃSRAMоƬ¹¹³ÉµÄÖ÷´æÈÝÁ¿´óµÄ¶à¡£ ¢Ú³ÌÐò·ÃÎʵľֲ¿ÐÔÌØµãʹµÃcacheµÄÃüÖÐÂʺܸߣ¬Òò¶ø£¬¼´Ê¹Ö÷´æÃ»ÓÐÓÿìËÙµÄSRAMоƬ¶øÊÇÓÃDRAMоƬ£¬Ò²²»»áÓ°Ïìµ½·ÃÎÊËÙ¶È¡£ 9. ·Ö±ð¸ø³ö¾ßÓÐÏÂÁÐÒªÇóµÄ³ÌÐò»ò³ÌÐò¶ÎµÄʾÀý£º £¨1£©¶ÔÓÚÊý¾ÝµÄ·ÃÎÊ£¬¼¸ºõûÓÐʱ¼ä¾Ö²¿ÐԺͿռä¾Ö²¿ÐÔ¡£ £¨2£©¶ÔÓÚÊý¾ÝµÄ·ÃÎÊ£¬ÓкܺõÄʱ¼ä¾Ö²¿ÐÔ£¬µ«¼¸ºõûÓпռä¾Ö²¿ÐÔ¡£ £¨3£©¶ÔÓÚÊý¾ÝµÄ·ÃÎÊ£¬ÓкܺõĿռä¾Ö²¿ÐÔ£¬µ«¼¸ºõûÓÐʱ¼ä¾Ö²¿ÐÔ¡£ £¨4£©¶ÔÓÚÊý¾ÝµÄ·ÃÎÊ£¬¿Õ¼ä¾Ö²¿ÐÔºÍʱ¼ä¾Ö²¿ÐÔ¶¼ºÃ¡£ ²Î¿¼´ð°¸£¨ÂÔ£©£º ¿ÉÒÔ¸ø³öÐí¶àÀàËÆµÄʾÀý¡£ÀýÈ磬¶ÔÓÚ°´ÐÐÓÅÏÈ´æ·ÅÔÚÄÚ´æµÄ¶àάÊý×飬Èç¹û°´ÁÐÓÅÏÈ·ÃÎÊÊý×éÔªËØ£¬Ôò¿Õ¼ä¾Ö²¿ÐԾͲÈç¹ûÔÚÒ»¸öÑ»·ÌåÖÐij¸öÊý×éÔªËØÖ»±»·ÃÎÊÒ»´Î£¬Ôòʱ¼ä¾Ö²¿ÐԾͲ 10. ¼Ù¶¨Ä³»úÖ÷´æ¿Õ¼ä´óС1GB£¬°´×Ö½Ú±àÖ·¡£cacheµÄÊý¾ÝÇø£¨¼´²»°üÀ¨±ê¼Ç¡¢ÓÐЧλµÈ´æ´¢Çø£©ÓÐ64KB£¬ ¿é´óСΪ128×Ö½Ú£¬²ÉÓÃÖ±½ÓÓ³ÉäºÍȫд£¨write-through£©·½Ê½¡£ÇëÎÊ£º £¨1£©Ö÷´æµØÖ·ÈçºÎ»®·Ö£¿ÒªÇó˵Ã÷ÿ¸ö×ֶεĺ¬Ò塢λÊýºÍÔÚÖ÷´æµØÖ·ÖеÄλÖᣠ£¨2£©cacheµÄ×ÜÈÝÁ¿Îª¶àÉÙλ£¿ ²Î¿¼´ð°¸£º £¨1£©Ö÷´æ¿Õ¼ä´óСΪ1GB£¬°´×Ö½Ú±àÖ·£¬ËµÃ÷Ö÷´æµØÖ·Îª30λ¡£cache¹²ÓÐ64KB/128B=512ÐУ¬ Òò´Ë£¬ÐÐË÷Òý£¨Ðкţ©Îª9λ£»¿é´óС128×Ö½Ú£¬ËµÃ÷¿éÄÚµØÖ·Îª7λ¡£Òò´Ë£¬30λÖ÷´æµØÖ·ÖУ¬¸ß14λΪ±êÖ¾£¨Tag£©£»Öмä9λΪÐÐË÷Òý£»µÍ7λΪ¿éÄÚµØÖ·¡£ £¨2£©ÒòΪ²ÉÓÃÖ±½ÓÓ³É䣬ËùÒÔcacheÖÐÎÞÐèÌæ»»Ëã·¨ËùÐè¿ØÖÆÎ»£¬È«Ð´·½Ê½ÏÂÒ²ÎÞÐèÐ޸ģ¨dirty£© 룬¶ø±ê־λºÍÓÐЧλ×ÜÊDZØÐëÓеģ¬ËùÒÔ£¬cache×ÜÈÝÁ¿Îª512¡Á(128¡Á8+14+1)=519.5Kλ¡£ 11. ¼Ù¶¨Ä³¼ÆËã»úµÄcache¹²16ÐУ¬¿ªÊ¼Îª¿Õ£¬¿é´óСΪ1¸ö×Ö£¬²ÉÓÃÖ±½ÓÓ³É䷽ʽ¡£CPUÖ´ÐÐij³ÌÐòʱ£¬ ÒÀ´Î·ÃÎÊÒÔϵØÖ·ÐòÁУº2£¬3£¬11£¬16£¬21£¬13£¬64£¬48£¬19£¬11£¬3£¬22£¬4£¬27£¬6ºÍ11¡£ÒªÇó£º £¨1£©ËµÃ÷ÿ´Î·ÃÎÊÊÇÃüÖл¹ÊÇȱʧ£¬ÊÔ¼ÆËã·ÃÎÊÉÏÊöµØÖ·ÐòÁеÄÃüÖÐÂÊ¡£ £¨2£©ÈôcacheÊý¾ÝÇøÈÝÁ¿²»±ä£¬¶ø¿é´óС¸ÄΪ4¸ö×Ö£¬ÔòÉÏÊöµØÖ·ÐòÁеÄÃüÖÐÇé¿öÓÖÈçºÎ£¿ ²Î¿¼´ð°¸ £¨1£© cache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬ÆäÊý¾ÝÇøÈÝÁ¿Îª16ÐСÁ1×Ö/ÐÐ=16×Ö£»Ö÷´æ±»»®·Ö³É1×Ö/¿é£¬ËùÒÔ£¬ Ö÷´æ¿éºÅ=×ֺš£Òò´Ë£¬Ó³É乫ʽΪ£ºcacheÐкŠ= Ö÷´æ¿éºÅ mod 16 = ×ֺŠmod 16¡£ ¿ªÊ¼cacheΪ¿Õ£¬ËùÒÔµÚÒ»´Î¶¼ÊÇmiss£¬ÒÔÏÂÊÇÓ³Éä¹ØÏµ£¨×ÖºÅ-cacheÐкţ©ºÍÃüÖÐÇé¿ö¡£ 2-2: miss£¬3-3: miss£¬11-11: miss£¬16-0: miss, 21-5: miss£¬13-13: miss£¬64-0: miss¡¢replace£¬ 48-0: miss¡¢replace£¬19-3: miss¡¢replace£¬11-11: hit, 3-3: miss¡¢replace£¬22-6: miss£¬ 4-4: miss£¬27-11: miss¡¢replace£¬6-6: miss¡¢replace£¬11-11: miss¡¢replace¡£ Ö»ÓÐÒ»´ÎÃüÖУ¡ £¨2£©cache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬Êý¾ÝÇøÈÝÁ¿²»±ä£¬Îª16¸ö×Ö£¬Ã¿¿é´óСΪ4¸ö×Ö£¬ËùÒÔ£¬cache¹² ÓÐ4ÐУ»Ö÷´æ±»»®·ÖΪ4¸ö×Ö/¿é£¬ËùÒÔ£¬Ö÷´æ¿éºÅ=[×ÖºÅ/4]¡£Òò´Ë£¬Ó³É乫ʽΪ£ºcacheÐкŠ= Ö÷´æ¿éºÅ mod 4 = [×ÖºÅ/4] mod 4¡£ ÒÔÏÂÊÇÓ³Éä¹ØÏµ£¨×ÖºÅ-Ö÷´æ¿éºÅ-cacheÐкţ©ºÍÃüÖÐÇé¿ö¡£ 2-0-0: miss£¬3-0-0: hit£¬11-2-2: miss£¬16-4-0: miss¡¢replace£¬21-5-1¡¢13-3-3: miss£¬ 64-16-0¡¢48-12-0¡¢19-4-0: miss, replace£¬11-2-2: hit£¬3-0-0: miss¡¢replace£¬ 22-5-1: hit£¬4-1-1: miss¡¢replace£¬27-6-2: miss¡¢replace£¬6-1-1: hit£¬11-2-2: miss¡¢replace¡£ ÃüÖÐ4´Î¡£ Óɴ˿ɼû£¬¿é±ä´óºó£¬ÄÜÓÐЧÀûÓ÷ÃÎʵĿռä¾Ö²¿ÐÔ£¬´Ó¶øÊ¹ÃüÖÐÂÊÌá¸ß£¡ 12. ¼Ù¶¨Êý×éÔªËØÔÚÖ÷´æ°´´Ó×óµ½ÓÒµÄϱê˳Ðò´æ·Å¡£ÊԸıäÏÂÁк¯ÊýÖÐÑ»·µÄ˳Ðò£¬Ê¹µÃÆäÊý×éÔªËØµÄ ·ÃÎÊÓëÅÅÁÐ˳ÐòÒ»Ö£¬²¢ËµÃ÷ΪʲôÐ޸ĺóµÄ³ÌÐò±ÈÔÀ´µÄ³ÌÐòÖ´ÐÐʱ¼ä¶Ì¡£ int sum_array ( int a[N][N][N]) { int i, j, k, sum=0; for (i=0; i < N; i++) for (j=0; j < N; j++) for (k=0; k < N; k++) sum+=a[k][i][j]; return sum; } ²Î¿¼´ð°¸£º int sum_array ( int a[N][N][N]) { int i, j, k, sum=0; for (k=0; k < N; k++) for (i=0; i < N; i++) for (j=0; j < N; j++) sum+=a[k][i][j]; return sum; } Ð޸ĺó³ÌÐòµÄÊý×éÔªËØµÄ·ÃÎÊÓëÅÅÁÐ˳ÐòÒ»Ö£¬Ê¹µÃ¿Õ¼ä¾Ö²¿ÐÔ±ÈÔ³ÌÐòºÃ£¬¹ÊÖ´ÐÐʱ¼ä¸ü¶Ì¡£ 13. ·ÖÎö±È½ÏÒÔÏÂÈý¸öº¯ÊýµÄ¿Õ¼ä¾Ö²¿ÐÔ£¬²¢Ö¸³öÄĸö×îºÃ£¬Äĸö×î²î£¿ # define N 1000 typedef struct { int vel[3]; int acc[3]; } point; point p[N]; void clear1(point *p, int n) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j<3; j++) p[i].vel[j] = 0; for (j = 0; i<3; j++) p[i].acc[j] = 0; } } # define N 1000 typedef struct { int vel[3]; int acc[3]; } point; point p[N]; void clear2(point *p, int n) { int i, j; for (i=0; i ²Î¿¼´ð°¸£º ¶ÔÓÚº¯Êýclear1£¬ÆäÊý×é·ÃÎÊ˳ÐòÓëÔÚÄÚ´æµÄ´æ·Å˳ÐòÍêȫһÖ£¬Òò´Ë£¬¿Õ¼ä¾Ö²¿ÐÔ×îºÃ¡£ ¶ÔÓÚº¯Êýclear2£¬ÆäÊý×é·ÃÎÊ˳ÐòÔÚÿ¸öÊý×éÔªËØÄÚÌøÔ½Ê½·ÃÎÊ£¬ÏàÁÚÁ½´Î·ÃÎʵĵ¥Ôª×î´óÏà²î3¸öintÐͱäÁ¿£¨¼Ù¶¨sizeof(int)=4£¬ÔòÏ൱ÓÚ12B£©£¬Òò´Ë¿Õ¼ä¾Ö²¿ÐÔ±Èclear1²î¡£ÈôÖ÷´æ¿é´óС±È12BСµÄ»°£¬Ôò´ó´óÓ°ÏìÃüÖÐÂÊ¡£ ¶ÔÓÚº¯Êýclear3£¬ÆäÊý×é·ÃÎÊ˳ÐòÓëÔÚÄÚ´æµÄ´æ·Å˳Ðò²»Ò»Ö£¬ÏàÁÚÁ½´Î·ÃÎʵĵ¥Ôª¶¼Ïà²î6¸öintÐͱäÁ¿£¨¼Ù¶¨sizeof(int)=4£¬ÔòÏ൱ÓÚ24B£©Òò´Ë£¬¿Õ¼ä¾Ö²¿ÐÔ±Èclear2»¹²î¡£ÈôÖ÷´æ¿é´óС±È24BСµÄ»°£¬Ôò´ó´óÓ°ÏìÃüÖÐÂÊ¡£ 14. ÒÔÏÂÊǼÆËãÁ½¸öÏòÁ¿µã»ýµÄ³ÌÐò¶Î£º float dotproduct (float x[8], float y[8]) { float sum = 0.0; int i,; for (i = 0; i < 8; i++) sum += x[i] * y[i]; return sum; } ÒªÇó£º £¨1£©ÊÔ·ÖÎö¸Ã¶Î´úÂëÖÐÊý×éxºÍyµÄʱ¼ä¾Ö²¿ÐԺͿռä¾Ö²¿ÐÔ£¬²¢ÍƶÏÃüÖÐÂʵĸߵ͡£ £¨2£©¼Ù¶¨¸Ã¶Î³ÌÐòÔËÐеļÆËã»úµÄÊý¾Ýcache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬ÆäÊý¾ÝÇøÈÝÁ¿Îª32×Ö½Ú£¬Ã¿¸ö Ö÷´æ¿é´óСΪ16×Ö½Ú¡£¼Ù¶¨±àÒë³ÌÐò½«±äÁ¿sumºÍi·ÖÅ䏸¼Ä´æÆ÷£¬Êý×éx´æ·ÅÔÚ00000040H¿ªÊ¼µÄ32×Ö½ÚµÄÁ¬Ðø´æ´¢ÇøÖУ¬Êý×éy½ô¸úÔÚxºó½øÐдæ·Å¡£ÊÔ¼ÆËã¸Ã³ÌÐòÊý¾Ý·ÃÎʵÄÃüÖÐÂÊ£¬ÒªÇó˵Ã÷ÿ´Î·ÃÎʵÄcacheÃüÖÐÇé¿ö¡£ £¨3£©½«ÉÏÊö£¨2£©ÖеÄÊý¾Ýcache¸ÄÓÃ2-·×éÏàÁªÓ³É䷽ʽ£¬¿é´óС¸ÄΪ8×Ö½Ú£¬ÆäËûÌõ¼þ²»±ä£¬ Ôò¸Ã³ÌÐòÊý¾Ý·ÃÎʵÄÃüÖÐÂÊÊǶàÉÙ£¿ £¨4£©ÔÚÉÏÊö£¨2£©ÖÐÌõ¼þ²»±äµÄÇé¿öÏ£¬Èç¹û½«Êý×éx¶¨ÒåΪfloat[12]£¬ÔòÊý¾Ý·ÃÎʵÄÃüÖÐÂÊÊǶà ÉÙ£¿ ²Î¿¼´ð°¸£º £¨1£©Êý×éxºÍy¶¼°´´æ·Å˳Ðò·ÃÎÊ£¬²»¿¼ÂÇÓ³ÉäµÄÇé¿öÏ£¬¿Õ¼ä¾Ö²¿ÐÔ¶¼½ÏºÃ£¬µ«¶¼Ö»±»·ÃÎÊÒ»´Î£¬ ¹ÊûÓÐʱ¼ä¾Ö²¿ÐÔ¡£ÃüÖÐÂʵĸߵÍÓë¿é´óС¡¢Ó³É䷽ʽµÈ¶¼Óйأ¬ËùÒÔ£¬ÎÞ·¨ÍƶÏÃüÖÐÂʵĸߵ͡£ £¨2£©cache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬¿é´óСΪ16×Ö½Ú£¬Êý¾ÝÇø´óСΪ32×Ö½Ú£¬¹Êcache¹²ÓÐ2ÐС£Êý ×éxµÄ8¸öÔªËØ£¨¹²32B£©·Ö±ð´æ·ÅÔÚÖ÷´æ40H¿ªÊ¼µÄ32¸öµ¥ÔªÖУ¬¹²ÓÐ2¸öÖ÷´æ¿é£¬ÆäÖÐx[0] ~ x[3]ÔÚµÚ4¿é£¬x[4] ~ x[7]ÔÚµÚ5¿éÖУ»Êý×éyµÄ8¸öÔªËØ£¨¹²32B£©·Ö±ðÔÚÖ÷´æµÚ6¿éºÍµÚ7¿éÖС£ËùÒÔ£¬x[0] ~ x[3]ºÍy[0] ~ y[3]¶¼Ó³Éäµ½cacheµÚ0ÐУ» x[4] ~ x[7]ºÍy[4] ~ y[7]¶¼Ó³Éäµ½cacheµÚ1ÐС£ cache µÚ0ÐÐ µÚ1ÐÐ µÚ0-3´ÎÑ»· x[0-3]£¬y[0-3] µÚ4-7´ÎÑ»· x[4-7]£¬y[4-7] ÿµ÷ÈëÒ»¿é£¬×°Èë4¸öÊý×éÔªËØ£¬ÒòΪx[i]ºÍy[i]×ÜÊÇÓ³É䵽ͬһÐУ¬Ï໥ÌÔ̶Է½£¬¹Êÿ´Î¶¼²»ÃüÖУ¬ÃüÖÐÂÊΪ0. £¨3£©¸ÄÓÃ2·×éÏàÁª£¬¿é´óСΪ8B£¬Ôòcache¹²ÓÐ4ÐУ¬Ã¿×éÁ½ÐУ¬¹²Á½×é¡£ Êý×éxÓÐ4¸öÖ÷´æ¿é£¬x[0] ~ x[1]¡¢x[2] ~ x[3]£¬x[4] ~ x[5]£¬x[6] ~ x[7]·Ö±ðÔÚµÚ8~11¿éÖУ» Êý×éyÓÐ4¸öÖ÷´æ¿é£¬y[0] ~ y[1]¡¢y[2] ~ y[3]£¬y[4] ~ y[5]£¬y[6] ~ y[7]·Ö±ðÔÚµÚ12~15¿éÖУ» cache µÚ0×é µÚ1×é µÚ0ÐÐ µÚ1ÐÐ x[0-1],x[4-5] y[0-1],y[4-5] x[2-3],x[6-7] y[2-3],y[6-7] ÿµ÷ÈëÒ»¿é£¬×°ÈëÁ½¸öÊý×éÔªËØ£¬µÚ¶þ¸öÊý×éÔªËØµÄ·ÃÎÊ×ÜÊÇÃüÖУ¬¹ÊÃüÖÐÂÊΪ50%¡£ £¨4£©Èô£¨2£©ÖÐÌõ¼þ²»±ä£¬Êý×éx¶¨ÒåÁË12¸öÔªËØ£¬¹²ÓÐ48B£¬Ê¹µÃy´ÓµÚ7¿é¿ªÊ¼£¬Òò¶ø£¬x[i] ºÍy[i]¾Í²»»áÓ³É䵽ͬһ¸öcacheÐÐÖУ¬¼´£ºx[0] ~ x[3]ÔÚµÚ4¿é£¬x[4] ~ x[7]ÔÚµÚ5¿é£¬x[8] ~ x[11]ÔÚµÚ6¿éÖУ¬y[0] ~ y[3]ÔÚµÚ7¿é£¬y[4] ~ x[7]ÔÚµÚ8¿é¡£ cache µÚ0ÐÐ µÚ1ÐÐ µÚ0-3´ÎÑ»· x[0-3] y[0-3] µÚ4-7´ÎÑ»· y[4-7] x[4-7] ÿµ÷ÈëÒ»¿é£¬×°Èë4¸öÊý×éÔªËØ£¬µÚÒ»¸öÔªËØ²»ÃüÖУ¬ºóÃæ3¸ö×ÜÃüÖУ¬¹ÊÃüÖÐÂÊΪ75%¡£ 15. ÒÔÏÂÊǶԾØÕó½øÐÐתÖõijÌÐò¶Î£º typedef int array[4][4]; void transpose(array dst, array src) { int i, j; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) dst[j][i] = src[i][j]; } ¼ÙÉè¸Ã¶Î³ÌÐòÔËÐеļÆËã»úÖÐsizeof(int)=4£¬ÇÒÖ»ÓÐÒ»¼¶cache£¬ÆäÖÐL1 data cacheµÄÊý¾ÝÇø´óСΪ32B£¬²ÉÓÃÖ±½ÓÓ³É䡢д»Ø·½Ê½£¬¿é´óСΪ16B£¬³õʼΪ¿Õ¡£Êý×édst´ÓµØÖ·0000C000H¿ªÊ¼´æ·Å£¬Êý×ésrc´ÓµØÖ·0000C040H¿ªÊ¼´æ·Å¡£ÌîдÏÂ±í£¬ËµÃ÷Êý×éÔªËØsrc[row][col]ºÍdst[row][col]Ó³Éäµ½cacheµÄÄÄÒ»ÐУ¬Æä·ÃÎÊÊÇÃüÖУ¨hit£©»¹ÊÇʧЧ£¨miss£©¡£ÈôL1 data cacheµÄÊý¾ÝÇøÈÝÁ¿¸ÄΪ128Bʱ£¬ÖØÐÂÌîд±íÖÐÄÚÈÝ¡£ 32B row=0 row=1 row=2 row=3 128B row=0 row=1 row=2 row=3 col=0 4/miss 5/ miss 6/ miss 7/ miss col=0 0/miss 1/miss 0/miss 1/miss srcÊý×é col=1 0/miss 1/hit 0/miss 1/hit col=1 4/hit 5/hit 6/hit 7/hit col=2 0/hit 1/miss 0/hit 1/miss col=2 4/hit 5/hit 6/hit 7/hit col=3 0/miss 1/hit 0/miss 1/hit col=3 4/ hit 5/hit 6/hit 7/hit col=0 0/miss 1/miss 0/miss 1/miss col=0 0/miss 1/miss 2/miss 3/miss dstÊý×é col=1 0/miss 1/miss 0/miss 1/miss col=1 0/hit 1/hit 2/hit 3/hit col=2 0/miss 1/miss 0/miss 1/miss col=2 0/hit 1/hit 2/hit 3/hit col=3 0/miss 1/miss 0/miss 1/miss col=3 0/hit 1/hit 2/hit 3/hit srcÊý×é dstÊý×é ²Î¿¼´ð°¸£º ´Ó³ÌÐòÀ´¿´£¬Êý×é·ÃÎʹý³ÌÈçÏ£º src[0] [0]¡¢dst[0] [0]¡¢src[0] [1]¡¢dst[1] [0]¡¢src[0] [2]¡¢dst[2] [0]¡¢src[0] [3]¡¢dst[3] [0] src[1] [0]¡¢dst[0] [1]¡¢src[1] [1]¡¢dst[1] [1]¡¢src[1] [2]¡¢dst[2] [1]¡¢src[1] [3]¡¢dst[3] [1] src[2] [0]¡¢dst[0] [2]¡¢src[2] [1]¡¢dst[1] [2]¡¢src[2] [2]¡¢dst[2] [2]¡¢src[2] [3]¡¢dst[3] [2] src[3] [0]¡¢dst[0] [3]¡¢src[3] [1]¡¢dst[1] [3]¡¢src[3] [2]¡¢dst[2] [3]¡¢src[3] [3]¡¢dst[3] [3] ÒòΪ¿é´óСΪ16B£¬Ã¿¸öÊý×éÔªËØÓÐ4¸ö×Ö½Ú£¬ËùÒÔ4¸öÊý×éÔªËØÕ¼Ò»¸öÖ÷´æ¿é£¬Òò´Ëÿ´Î×ÜÊǵ÷Èë4¸öÊý×éÔªËØµ½cacheµÄÒ»ÐС£ µ±Êý¾ÝÇøÈÝÁ¿Îª32Bʱ£¬L1 data cacheÖй²ÓÐ2ÐС£Êý×éÔªËØdst[0][i]¡¢dst[2][i] ¡¢src[0][i]¡¢src[2][i] (i=0¡«3)¶¼Ó³Éäµ½cacheµÚ0ÐУ¬Êý×éÔªËØdst[1][i]¡¢dst[3][i] ¡¢src[1][i]¡¢src[3][i] (i=0¡«3)¶¼Ó³Éäµ½cacheµÚ1ÐС£Òò´Ë£¬´ÓÉÏÊö·ÃÎʹý³ÌÀ´¿´£¬src[0][0]ËùÔÚµÄÒ»¸öÖ÷´æ¿é£¨¼´´æ·Åsrc[0][i] (i=0¡«3)ËĸöÊý×éÔªËØ£©¸Õµ÷Èëcacheºó£¬dst[0][0]ËùÔÚÖ÷´æ¿éÓÖ°Ñsrc[0][0]Ìæ»»µôÁË¡£¡¡ µ±Êý¾ÝÇøÈÝÁ¿Îª128Bʱ£¬L1 data cacheÖй²ÓÐ8ÐС£Êý×éÔªËØdst[0][i]¡¢dst[1][i] ¡¢dst[2][i]¡¢dst[3][i]¡¢src[0][i]¡¢src[1][i]¡¢src[2][i]¡¢src[3][i] (i=0¡«3) ·Ö±ðÓ³Éäµ½cacheµÚ0¡¢1¡¢2¡¢3¡¢4¡¢5¡¢6¡¢7ÐС£Òò´Ë£¬²»»á·¢ÉúÊý×éÔªËØµÄÌæ»»¡£Ã¿´Î×ÜÊǵÚÒ»¸öÊý×éÔªËØ²»ÃüÖУ¬ºóÃæÈý¸öÊý×éÔªËØ¶¼ÃüÖС£ 16. ͨ¹ý¶Ô·½¸ñÖÐÿ¸öµãÉèÖÃÏàÓ¦µÄCMYKÖµ¾Í¿ÉÒÔ½«·½¸ñͼÉÏÏàÓ¦µÄÑÕÉ«¡£ÒÔÏÂÈý¸ö³ÌÐò¶Î¶¼¿ÉʵÏÖ ¶ÔÒ»¸ö8¡Á8µÄ·½¸ñÖÐͼÉÏ»ÆÉ«µÄ¹¦ÄÜ¡£ struct pt_color { int c; int m; int y; int k; } struct pt_color square[8][8]; int i, j; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { square[i][j].c = 0; square[i][j].m = 0; square[i][j].y = 1; square[i][j].k = 0; } } struct pt_color { int c; int m; int y; int k; } struct pt_color quare[8][8]; int i, j; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { square [j] [i].c = 0; square [j] [i].m = 0; square [j] [i].y = 1; square [j] [i].k = 0; } } struct pt_color { int c; int m; int y; int k; } struct pt_color square[8][8]; int i, j; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) square[i][j].y = 1; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) { square[i][j].c = 0; square[i][j].m = 0; square[i][j].k = 0; } ³ÌÐò¶ÎA ³ÌÐò¶ÎB ³ÌÐò¶ÎC ¼ÙÉècacheµÄÊý¾ÝÇø´óСΪ512B£¬²ÉÓÃÖ±½ÓÓ³É䣬¿é´óСΪ32B£¬´æ´¢Æ÷°´×Ö½Ú±àÖ·£¬sizeof(int)=4¡£±àÒëʱ±äÁ¿iºÍj·ÖÅäÔڼĴæÆ÷ÖУ¬Êý×ésquare°´ÐÐÓÅÏÈ·½Ê½´æ·ÅÔÚ000008C0H¿ªÊ¼µÄÁ¬ÐøÇøÓòÖУ¬Ö÷´æµØÖ·Îª32λ¡£ÒªÇó£º £¨1£© ¶ÔÈý¸ö³ÌÐò¶ÎA¡¢B¡¢CÖÐÊý×é·ÃÎʵÄʱ¼ä¾Ö²¿ÐԺͿռä¾Ö²¿ÐÔ½øÐзÖÎö±È½Ï¡£ £¨2£© »³öÖ÷´æÖеÄÊý×éÔªËØºÍcacheÖÐÐеĶÔÓ¦¹ØÏµÍ¼¡£ £¨3£© ¼ÆËãÈý¸ö³ÌÐò¶ÎA¡¢B¡¢CÖеÄд²Ù×÷´ÎÊý¡¢Ð´²»ÃüÖдÎÊýºÍдȱʧÂÊ¡£ ²Î¿¼´ð°¸£º £¨1£©¶ÔÓÚʱ¼ä¾Ö²¿ÐÔÀ´Ëµ£º ³ÌÐò¶ÎA¡¢BºÍCÖУ¬¶¼ÊÇÿ¸öÊý×éÔªËØÖ»±»·ÃÎÊÒ»´Î£¬ËùÒÔ¶¼Ã»ÓÐʱ¼ä¾Ö²¿ÐÔ£» ¶ÔÓÚ¿Õ¼ä¾Ö²¿ÐÔÀ´Ëµ£º ³ÌÐò¶ÎA·ÃÎÊ˳ÐòºÍ´æ·Å˳ÐòÒ»Ö£¬ËùÒÔ£¬¿Õ¼ä¾Ö²¿ÐԺã» ³ÌÐò¶ÎB·ÃÎÊ˳ÐòºÍ´æ·Å˳Ðò²»Ò»Ö£¬ËùÒÔ£¬¿Õ¼ä¾Ö²¿ÐÔ²»ºÃ£» ³ÌÐò¶ÎCËäÈ»·ÃÎÊ˳ÐòºÍ´æ·Å˳ÐòÒ»Ö£¬µ«Í¬Ò»¸öÖ÷´æ¿éÓÐÁ½´Î·ÃÎÊ£¬ËùÒÔ¿Õ¼ä¾Ö²¿ÐÔ²»ºÃ£» £¨2£©cacheµÄÐÐÊýΪ512B/32B=16£»Êý×éÊ×µØÖ·Îª0000 0C80H£¬ÒòΪ0000 0C80HÕýºÃÊÇÖ÷´æµÚ 1100100B£¨100£©¿éµÄÆðʼµØÖ·¡£ËùÒÔÊý×é´ÓÖ÷´æµÚ100¿é¿ªÊ¼´æ·Å£¬Ò»¸öÊý×éÔªËØÕ¼4¡Á4B=16B£¬ËùÒÔÿ2¸öÊý×éÔªËØÕ¼ÓÃÒ»¸öÖ÷´æ¿é¡£8¡Á8µÄÊý×é¹²Õ¼ÓÃ32¸öÖ÷´æ¿é£¬ÕýºÃÊÇcacheÊý¾ÝÇø´óСµÄ2±¶¡£ Ö÷´æÖеÄÊý×éÔªËØÓëcacheÐеÄÓ³Éä¹ØÏµÍ¼ÈçÏ£º CacheÐкŠ0# 1# 2# 3# 4# 5# Square[3][4]/ [3][5] 15# Square[3][6]/ [3][7] Square[4][0]/ [4][1] Square[0][0]/ [0][1] Square[0][2]/ [0][3] Square[0][4]/ [0][5] Square[0][6]/ [0][7] Square[1][0]/ [1][1] Ö÷´æ¿éºÅ 100# 101# 102# 103# 114# 115# 116# Square[7][0]/ [7][1] Square[7][2]/ [7][3] Square[7][4]/ [7][5] Square[7][6]/ [7][7] 128# 129# 130# 131# £¨3£©¶ÔÓÚ³ÌÐò¶ÎA£º ÿÁ½¸öÊý×éÔªËØ£¨¹²Éæ¼°8´Îд²Ù×÷£©×°Èëµ½Ò»¸öcacheÐÐÖУ¬×ÜÊǵÚÒ»´Î·ÃÎÊʱδÃüÖУ¬ºóÃæ7´Î¶¼ÃüÖУ¬ËùÒÔ£¬×ܵÄд²Ù×÷´ÎÊýΪ64 ¡Á 4 = 256´Î£¬Ð´²»ÃüÖдÎÊýΪ256¡Á1/8 = 32´Î£¬Òò¶øÐ´È±Ê§ÂÊΪ12.5%¡£ ¶ÔÓÚ³ÌÐò¶ÎB£º ÿÁ½¸öÊý×éÔªËØ£¨¹²Éæ¼°8´Îд²Ù×÷£©×°Èëµ½Ò»¸öcacheÐÐÖУ¬µ«×ÜÊÇÖ»ÓÐÒ»¸öÊý×éÔªËØ£¨Éæ¼°4´Îд²Ù×÷£©ÔÚ±»ÌÔÌ֮ǰ±»·ÃÎÊ£¬²¢ÇÒ×ÜÊǵÚÒ»´Î²»ÃüÖУ¬ºóÃæ3´ÎÃüÖС£¼´Ð´²»ÃüÖдÎÊýΪ256¡Á1/4 = 64´Î£¬Òò¶øÐ´È±Ê§ÂÊΪ25%¡£ ¶ÔÓÚ³ÌÐò¶ÎC£º µÚÒ»¸öÑ»·¹²64´Î·ÃÎÊ£¬Ã¿´Î×°ÈëÁ½¸öÊý×éÔªËØ£¬µÚÒ»´Î²»ÃüÖУ¬µÚ¶þ´ÎÃüÖУ»µÚ¶þ¸öÑ»·£¬¹²·ÃÎÊ64¡Á3´Î£¬Ã¿Á½¸öÊý×éÔªËØ£¨¹²Éæ¼°6´Îд²Ù×÷£©×°Èëµ½Ò»¸öcacheÐÐÖУ¬²¢ÇÒ×ÜÊǵÚÒ»´Î²»ÃüÖУ¬ºóÃæ5´ÎÃüÖС£ËùÒÔ×ܵÄд²»ÃüÖдÎÊýΪ32+(3¡Á64)¡Á1/6 = 64´Î£¬Òò¶ø×ÜȱʧÂÊΪ25%¡£ 17. ¼ÙÉèij¼ÆËã»úµÄÖ÷´æµØÖ·¿Õ¼ä´óСΪ64MB£¬²ÉÓÃ×Ö½Ú±àÖ··½Ê½¡£ÆäcacheÊý¾ÝÇøÈÝÁ¿Îª4KB£¬²ÉÓÃ4 ·×éÏàÁªÓ³É䷽ʽ¡¢LRUÌæ»»ºÍ»ØÐ´£¨write back£©²ßÂÔ£¬¿é´óСΪ64B¡£ÇëÎÊ£º £¨1£©Ö÷´æµØÖ·×Ö¶ÎÈçºÎ»®·Ö£¿ÒªÇó˵Ã÷ÿ¸ö×ֶεĺ¬Ò塢λÊýºÍÔÚÖ÷´æµØÖ·ÖеÄλÖᣠ£¨2£©¸ÃcacheµÄ×ÜÈÝÁ¿ÓжàÉÙλ£¿ £¨3£©Èôcache³õʼΪ¿Õ£¬CPUÒÀ´Î´Ó0ºÅµØÖ·µ¥ÔªË³Ðò·ÃÎʵ½4344ºÅµ¥Ôª£¬Öظ´°´´ËÐòÁй²·ÃÎÊ16´Î¡£ ÈôcacheÃüÖÐʱ¼äΪ1¸öʱÖÓÖÜÆÚ£¬È±Ê§ËðʧΪ10¸öʱÖÓÖÜÆÚ£¬ÔòCPU·Ã´æµÄƽ¾ùʱ¼äΪ¶àÉÙʱÖÓÖÜÆÚ£¿ ²Î¿¼´ð°¸£º £¨1£©cacheµÄ»®·ÖΪ£º4KB=212B=24×é¡Á22ÐÐ/×é¡Á26×Ö½Ú/ÐУ¬ËùÒÔ£¬cache×éºÅ£¨×éË÷Òý£©Õ¼4λ¡£ Ö÷´æµØÖ·»®·ÖΪÈý¸ö×ֶΣº¸ß16λΪ±êÖ¾×ֶΡ¢Öмä4λΪ×éºÅ¡¢×îµÍ6λΪ¿éÄÚµØÖ·¡£ ¼´Ö÷´æ¿Õ¼ä»®·ÖΪ£º64MB=226B=216×éȺ¡Á24¿é/×éȺ¡Á26×Ö½Ú/¿é £¨2£©cache¹²ÓÐ64ÐУ¬Ã¿ÐÐÖÐÓÐ16λ±êÖ¾¡¢1λÓÐЧλ¡¢1λÐÞ¸Ä(dirty)λ¡¢2λLRU룬ÒÔ¼°Êý ¾Ý64B¡£¹Ê×ÜÈÝÁ¿Îª64¡Á(16+1+1+2+64¡Á8)=34048λ¡£ £¨3£©ÒòΪÿ¿éΪ64B£¬CPU·ÃÎʵĵ¥Ôª·¶Î§Îª0¡«4344£¬¹²4345¸öµ¥Ôª£¬4345/64=67.89£¬ËùÒÔCPU ·ÃÎʵÄÊÇÖ÷´æÇ°68¿é£¨µÚ0¡«67¿é£©£¬Ò²¼´CPUµÄ·ÃÎʹý³ÌÊǶÔǰ68¿éÁ¬Ðø·ÃÎÊ16´Î£¬×ܷôæ´ÎÊýΪ16¡Á4345=69520¡£ 16´Î 0 0# cache¹²ÓÐ16×飬ÿ×é4ÐУ¬²ÉÓÃLRUËã·¨µÄÌæ»»Çé¿öÈçÏÂͼËùʾ£º 1 63 64 1# 65 128 2# 4288 67# 4344 4352 68# ¸ù¾ÝͼÖÐËùʾ¿ÉÖª£¬µÚÒ»´ÎÑ»·µÄÿһ¿éÖ»ÓеÚÒ»´ÎδÃüÖУ¬ÆäÓà¶¼ÃüÖУ»ÒÔºó15´ÎÑ»·ÖУ¬ÓÐ20¿éµÄµÚÒ»×ÖδÃüÖУ¬ÆäÓà¶¼ÃüÖС£ËùÒÔÃüÖÐÂÊpΪ(69520¨C68¨C15¡Á20)/69520=99.47% ƽ¾ù·Ã´æÊ±¼äΪ£ºHit Time + (1¨Cp) ¡Á Miss Penalty =1+10¡Á(1¨Cp)=1+0.0053¡Á10= 1.053¸öʱÖÓÖÜÆÚ 18. ¼Ù¶¨Ä³´¦ÀíÆ÷¿Éͨ¹ýÈí¼þ¶Ô¸ßËÙ»º´æÉèÖò»Í¬µÄд²ßÂÔ£¬ÄÇô£¬ÔÚÏÂÁÐÁ½ÖÖÇé¿öÏ£¬Ó¦·Ö±ðÉèÖóÉʲ ôд²ßÂÔ£¿ÎªÊ²Ã´£¿ £¨1£©´¦ÀíÆ÷Ö÷ÒªÔËÐаüº¬´óÁ¿´æ´¢Æ÷д²Ù×÷µÄÊý¾Ý·ÃÎÊÃܼ¯ÐÍÓ¦Óᣠ£¨2£©´¦ÀíÆ÷ÔËÐгÌÐòµÄÐÔÖÊÓ루1£©Ïàͬ£¬µ«°²È«ÐÔÒªÇó¸ß£¬²»ÔÊÐíÓÐÈκÎÊý¾Ý²»Ò»ÖµÄÇé¿ö·¢Éú¡£ ²Î¿¼´ð°¸£º £¨1£©²ÉÓÃwrite back²ßÂԽϺ㬿ɼõÉٷôæ´ÎÊý¡£ £¨2£©²ÉÓÃwrite through²ßÂԽϺã¬Äܱ£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ¡£ 19. ÒÑÖªcache1²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬¹²16ÐУ¬¿é´óСΪ1¸ö×Ö£¬È±Ê§ËðʧΪ8¸öʱÖÓÖÜÆÚ£»cache2Ò²²ÉÓÃÖ± ½ÓÓ³É䷽ʽ£¬¹²4ÐУ¬¿é´óСΪ4¸ö×Ö£¬È±Ê§ËðʧΪ11¸öʱÖÓÖÜÆÚ¡£¼Ù¶¨¿ªÊ¼Ê±cacheΪ¿Õ£¬²ÉÓÃ×Ö±àÖ··½Ê½¡£ÒªÇóÕÒ³öÒ»¸ö·ÃÎʵØÖ·ÐòÁУ¬Ê¹µÃcache2¾ßÓиüµÍµÄȱʧÂÊ£¬µ«×ܵÄȱʧËðʧ·´¶ø±Ècache1´ó¡£ ²Î¿¼´ð°¸£º ¼ÙÉècache1ºÍcache2µÄȱʧ´ÎÊý·Ö±ðΪxºÍy£¬¸ù¾ÝÌâÒ⣬xºÍy±ØÐëÂú×ãÒÔÏÂÌõ¼þ£º 11¡Áy > 8¡Áx ÇÒ x > y£¬ÏÔÈ»£¬Âú×ã¸ÃÌõ¼þµÄxºÍyÓÐÐí¶à£¬ÀýÈ磬x=4£¬y=3¡¢x=5£¬y=4µÈµÈ¡£ ¶ÔÓÚÒÔϵķÃÎʵØÖ·ÐòÁУº0£¬1£¬4£¬8£¬cache1ȱʧ4´Î£¬¶øcache2ȱʧ3´Î£» ¶ÔÓÚÒÔϵķÃÎʵØÖ·ÐòÁУº0£¬2£¬4£¬8£¬12£¬cache1ȱʧ5´Î£¬¶øcache2ȱʧ4´Î£» ¶ÔÓÚÒÔϵķÃÎʵØÖ·ÐòÁУº0£¬3£¬4£¬8£¬12£¬16£¬20£¬cache1ȱʧ7´Î£¬¶øcache2ȱʧ6´Î£» Èç´ËµÈµÈ£¬¿ÉÒÔÕÒ³öºÜ¶à¡£ 20. Ìá¸ß¹ØÁª¶Èͨ³£»á½µµÍȱʧÂÊ£¬µ«²¢²»×ÜÊÇÕâÑù¡£Çë¸ø³öÒ»¸öµØÖ··ÃÎÊÐòÁУ¬Ê¹µÃ²ÉÓÃLRUÌæ»»Ëã ·¨µÄ2-·×éÏàÁªÓ³Éäcache±È¾ßÓÐͬÑù´óСµÄÖ±½ÓÓ³ÉäcacheµÄȱʧÂʸü¸ß¡£ ²Î¿¼´ð°¸£º 2-·×éÏàÁªcacheµÄ×éÊýÊÇÖ±½ÓÓ³ÉäcacheµÄÐÐÊýµÄÒ»°ë£¬ËùÒÔ£¬¿ÉÒÔÕÒµ½Ò»¸öµØÖ·ÐòÁÐA¡¢B¡¢C£¬Ê¹µÃ£ºAÓ³É䵽ijһ¸öcacheÐУ¬BºÍCͬʱӳÉäµ½ÁíÒ»¸öcacheÐУ¬²¢ÇÒA¡¢B¡¢CÓ³É䵽ͬһ¸öcache×é¡£ÕâÑù£¬Èç¹û·Ã´æµÄµØÖ·ÐòÁÐΪA¡¢B¡¢C¡¢A¡¢B¡¢C¡¢A¡¢B¡¢C ¡£¬Ôò¶ÔÓÚÖ±½ÓÓ³Éäcache£¬ÆäÃüÖÐÇé¿öΪ£ºmiss/miss/miss /hit/miss/miss /hit/miss/miss/¡ ÃüÖÐÂʿɴï33.3%¡£ ¶ÔÓÚ×éÏàÁªcache£¬ÒòΪA¡¢B¡¢CÓ³É䵽ͬһ¸ö×飬ÿ×éÖ»ÓÐ2ÐУ¬²ÉÓÃLRUÌæ»»Ëã·¨£¬ËùÒÔ£¬Ã¿¸öµØÖ·´¦µÄÊý¾Ý¸Õµ÷³öcache¾ÍÓÖ±»·ÃÎʵ½£¬Ã¿´Î¶¼ÊÇmiss£¬ÃüÖÐÂÊΪ0¡£ ÀýÈ磺¼Ù¶¨Ö±½ÓÓ³ÉäcacheΪ4ÐСÁ1×Ö/ÐУ¬Í¬Ñù´óСµÄ2-·×éÏàÁªcacheΪ2×é¡Á2ÐÐ/×é¡Á1×Ö/ÐÐ µ±·ÃÎÊÐòÁÐΪ£º0¡¢2¡¢4¡¢0¡¢2¡¢4¡¢0¡¢2¡¢4¡¢ ¡£¨¾Ö²¿¿é´óСΪ3£©Ê±£¬Ôò³öÏÖÉÏÊöÇé¿ö¡£ µ±·ÃÎʵľֲ¿¿é´óÓÚ×éµÄ´óСʱ£¬¿ÉÄܻᷢÉú¡°µßô¤¡±ÏÖÏ󣺸ձ»Ìæ»»³öÈ¥µÄÊý¾ÝÓÖ±»·ÃÎÊ£¬µ¼ÖÂȱʧÂÊΪ100%£¡ 21. ¼Ù¶¨ÓÐÈý¸ö´¦ÀíÆ÷£¬·Ö±ð´øÓÐÒÔϲ»Í¬µÄcache£º cache1£º²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬¿é´óСΪ1¸ö×Ö£¬Ö¸ÁîºÍÊý¾ÝµÄȱʧÂÊ·Ö±ðΪ4%ºÍ6%£» cache2£º²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬¿é´óСΪ4¸ö×Ö£¬Ö¸ÁîºÍÊý¾ÝµÄȱʧÂÊ·Ö±ðΪ2%ºÍ4%£» cache3£º²ÉÓÃ2-·×éÏàÁªÓ³É䷽ʽ£¬¿é´óСΪ4¸ö×Ö£¬Ö¸ÁîºÍÊý¾ÝµÄȱʧÂÊ·Ö±ðΪ2%ºÍ3%¡£ ÔÚÕâЩ´¦ÀíÆ÷ÉÏÔËÐÐÏàͬµÄ³ÌÐò£¬¸Ã³ÌÐòµÄCPIΪ2.0£¬ÆäÖÐÓÐÒ»°ëÊǷôæÖ¸Áî¡£ÈôȱʧËðʧΪ£¨¿é´óС+6£©¸öʱÖÓÖÜÆÚ£¬´¦ÀíÆ÷1ºÍ´¦ÀíÆ÷2µÄʱÖÓÖÜÆÚ¶¼Îª420ps£¬´øÓÐcache3µÄ´¦ÀíÆ÷3µÄʱÖÓÖÜÆÚΪ450ps¡£ÇëÎÊ£ºÄĸö´¦ÀíÆ÷Òòcacheȱʧ¶øÒýÆðµÄ¶îÍ⿪Ïú×î´ó£¿Äĸö´¦ÀíÆ÷Ö´ÐÐËÙ¶È×î¿ì£¿ ²Î¿¼´ð°¸£º ¼ÙÉèËùÔËÐеijÌÐò¹²Ö´ÐÐNÌõÖ¸ÁÿÌõ·Ã´æÖ¸Áî½ö¶Áдһ´ÎÄÚ´æÊý¾Ý£¬ÔòÔڸóÌÐòÖ´Ðйý³ÌÖи÷´¦ÀíÆ÷Òòcacheȱʧ¶øÒýÆðµÄ¶îÍ⿪ÏúºÍÖ´ÐÐʱ¼ä¼ÆËãÈçÏ¡£ ¶ÔÓÚ´¦ÀíÆ÷1£º ¶îÍ⿪ÏúΪ£ºN¡Á(4%+6%¡Á50%)¡Á(1+6)=0.49 N¸öʱÖÓÖÜÆÚ Ö´ÐгÌÐòËùÐèʱ¼äΪ£º(N¡Á2.0+0.49N)¡Á420ps=1045.8N ps ¶ÔÓÚ´¦ÀíÆ÷2£º ¶îÍ⿪ÏúΪ£ºN¡Á(2%+4%¡Á50%)¡Á(4+6)=0.40N¸öʱÖÓÖÜÆÚ Ö´ÐгÌÐòËùÐèʱ¼äΪ£º(N¡Á2.0+0.40N)¡Á420ps=1008N ps ¶ÔÓÚ´¦ÀíÆ÷3£º ¶îÍ⿪ÏúΪ£ºN¡Á(2%+3%¡Á50%)¡Á(4+6)=0.35N¸öʱÖÓÖÜÆÚ Ö´ÐгÌÐòËùÐèʱ¼äΪ£º(N¡Á2.0+0.35N)¡Á450ps=1057.5N ps Óɴ˿ɼû£¬´¦ÀíÆ÷1µÄcacheȱʧÒýÆðµÄ¶îÍ⿪Ïú×î´ó£¬´¦ÀíÆ÷2µÄÖ´ÐÐËÙ¶È×î¿ì¡£ 22. ¼Ù¶¨Ä³´¦ÀíÆ÷´øÓÐÒ»¸öÊý¾ÝÇøÈÝÁ¿Îª256BµÄcache£¬Æä¿é´óСΪ32B¡£ÒÔÏÂCÓïÑÔ³ÌÐò¶ÎÔËÐÐÔڸô¦Àí Æ÷ÉÏ£¬sizeof(int)=4£¬±àÒëÆ÷½«±äÁ¿i, j, c, s¶¼·ÖÅäÔÚͨÓüĴæÆ÷ÖУ¬Òò´Ë£¬Ö»Òª¿¼ÂÇÊý×éÔªËØµÄ·Ã´æÇé¿ö¡£Èôcache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬Ôòµ±s=64ºÍs=63ʱ£¬È±Ê§ÂÊ·Ö±ðΪ¶àÉÙ£¿Èôcache²ÉÓÃ2-·×éÏàÁªÓ³É䷽ʽ£¬Ôòµ±s=64ºÍs=63ʱ£¬È±Ê§ÂÊÓÖ·Ö±ðΪ¶àÉÙ£¿ int i, j, c, s, a[128]; ¡¡ for ( i = 0; i <10000; i++ ) for ( j = 0; j <128; j=j+s ) c = a[j]; ²Î¿¼´ð°¸£º ÒÑÖª¿é´óСΪ32B£¬cacheÈÝÁ¿Îª256B=8ÐСÁ8×Ö/ÐСÁ4B/×Ö£¬½ö¿¼ÂÇÊý×é·ÃÎÊÇé¿ö¡£ 1) Ö±½ÓÓ³É䣬s=64: ·Ã´æË³ÐòΪa[0]¡¢a[64] , a[0]¡¢a[64], ¡ ¡ ,¹²Ñ»·10000´Î¡£ÕâÁ½¸öÔªËØ±»Ó³É䵽ͬһ¸öcacheÐÐÖУ¬Ã¿´Î¶¼»á·¢Éú³åÍ»£¬Òò´ËȱʧÂÊΪ100%¡£ 2) Ö±½ÓÓ³É䣬s=63: ·Ã´æË³ÐòΪa[0]¡¢a[63]¡¢a[126], a[0]¡¢a[63]¡¢a[126], ¡ ¡¹²Ñ»·10000´Î¡£ÕâÈý¸öÔªËØÖкóÃæÁ½¸öÔªËØÒòΪӳÉ䵽ͬһ¸öcacheÐÐÖУ¬Òò´Ëÿ´Î¶¼»á·¢Éú³åÍ»£¬¶øa[0]²»»á·¢Éú³åÍ»£¬¹ÊȱʧÂÊΪ67%¡£ 3) 2-·×éÏàÁª£¬s=64: ·Ã´æË³ÐòΪa[0]¡¢a[64] , a[0]¡¢a[64], ¡ ¡,¹²Ñ»·10000´Î¡£ÕâÁ½¸öÔªËØËäȻӳÉ䵽ͬһ¸öcache×éÖУ¬µ«¿ÉÒÔ·ÅÔÚ¸Ã×鲻ͬcacheÐÐÖУ¬ËùÒÔ²»»á·¢Éú³åÍ»£¬È±Ê§ÂÊΪ0¡£ 4) 2-·×éÏàÁª£¬s=63: ·Ã´æË³ÐòΪa[0]¡¢a[63]¡¢a[126], a[0]¡¢a[63]¡¢a[126], ¡ ¡¹²Ñ»·10000´Î¡£ÕâÈý¸öÔªËØÖкóÃæÁ½¸öÔªËØËäÓ³É䵽ͬһ¸öcache×éÖУ¬µ«¿É·ÅÔÚ²»Í¬cacheÐÐÖÐ, ¶øa[0]²»»á·¢Éú³åÍ»£¬¹ÊȱʧÂÊΪ0¡£ 23. ¼Ù¶¨Ò»¸öÐéÄâ´æ´¢ÏµÍ³µÄÐéÄâµØÖ·Îª40룬ÎïÀíµØÖ·Îª36룬ҳ´óСΪ16KB£¬°´×Ö½Ú±àÖ·¡£ÈôÒ³±í ÖÐÓÐÓÐЧλ¡¢´æ´¢±£»¤Î»¡¢ÐÞ¸Äλ¡¢Ê¹ÓÃ룬¹²Õ¼4룬´ÅÅ̵ØÖ·²»ÔÚÒ³±íÖУ¬Ôò¸Ã´æ´¢ÏµÍ³ÖÐÿ¸ö½ø³ÌµÄÒ³±í´óСΪ¶àÉÙ£¿Èç¹û°´¼ÆËã³öÀ´µÄʵ¼Ê´óС¹¹½¨Ò³±í£¬Ôò»á³öÏÖʲôÎÊÌ⣿ ²Î¿¼´ð°¸£º ÒòΪÿҳ´óСÓÐ16KB£¬ËùÒÔÐéÄâÒ³ÊýΪ240B/16KB=2(40-14)=226Ò³¡£ ÎïÀíÒ³ÃæºÍÐéÄâÒ³Ãæ´óСÏàµÈ£¬ËùÒÔÎïÀíÒ³ºÅµÄλÊýΪ36¨C14=22λ¡£ Ò³±íÏîλÊýΪ£ºÓÐЧλ+±£»¤Î»+ÐÞ¸Äλ+ʹÓÃλ+ÎïÀíÒ³ºÅλÊý=4+22=26λ¡£ Ϊ¼ò»¯Ò³±í·ÃÎÊ£¬Ã¿Ïî´óСȡ32λ¡£Òò´Ë£¬Ã¿¸ö½ø³ÌµÄÒ³±í´óСΪ£º226¡Á32b=256MB¡£ Èç¹û°´Êµ¼Ê¼ÆËã³öµÄÒ³±í´óС¹¹½¨Ò³±í£¬ÔòÒ³±í¹ý´ó¶øµ¼ÖÂÒ³±íÎÞ·¨Ò»´Î×°ÈëÄÚ´æ¡£ 24. ¼Ù¶¨Ò»¸ö¼ÆËã»úϵͳÖÐÓÐÒ»¸öTLBºÍÒ»¸öL1 data cache¡£¸Ãϵͳ°´×Ö½Ú±àÖ·£¬ÐéÄâµØÖ·16룬ÎïÀíµØ Ö·12λ£»Ò³´óСΪ128B£¬TLBΪËÄ·×éÏàÁª£¬¹²ÓÐ16¸öÒ³±íÏL1 data cache²ÉÓÃÖ±½ÓÓ³É䷽ʽ£¬¿é´óСΪ4B£¬¹²16ÐС£ÔÚϵͳÔËÐе½Ä³Ò»Ê±¿Ìʱ£¬TLB¡¢Ò³±íºÍL1 data cacheÖеIJ¿·ÖÄÚÈÝ£¨ÓÃÊ®Áù½øÖƱíʾ£©ÈçÏ£º ×éºÅ±ê¼ÇÒ³¿òºÅÓÐЧλ±ê¼ÇÒ³¿òºÅÓÐЧλ±ê¼ÇÒ³¿òºÅÓÐЧλ±ê¼ÇÒ³¿òºÅÓÐЧλ 0 1 2 3 ÐéÒ³ºÅÒ³¿òºÅÓÐЧλÐÐË÷Òý±ê¼ÇÓÐЧλ×Ö½Ú3 ×Ö½Ú2 ×Ö½Ú1 ×Ö½Ú0 00 01 02 03 08 03 14 02 1 1 1 1 0 1 2 3 19 15 1B 36 1 0 1 0 12 ¨C 03 ¨C 56 ¨C 45 ¨C C9 ¨C 12 ¨C AC ¨C CD ¨C 03 03 02 07 ¨C 2D ¨C ¨C 0 1 0 0 09 02 08 63 0D ¨C ¨C 0D 1 0 0 1 00 04 06 0A ¨C ¨C ¨C 34 0 0 0 1 07 0A 03 72 02 ¨C ¨C ¨C 1 0 0 0 (a) TLB£¨ËÄ·×éÏàÁª£©£ºËÄ×é¡¢16¸öÒ³±íÏî 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ¨C 16 ¨C 07 13 17 09 ¨C 19 ¨C 11 0D 0 1 0 1 1 1 1 0 1 0 1 1 4 5 6 7 8 9 A B C D E F 32 0D ¨C 16 24 2D 2D ¨C 12 16 33 14 1 1 0 1 1 0 1 0 1 1 1 0 23 46 ¨C 12 23 ¨C 43 ¨C 76 A3 2D ¨C 34 67 ¨C 54 62 ¨C 62 ¨C 83 F4 4A ¨C C2 23 ¨C 65 12 ¨C 23 ¨C 21 23 45 ¨C 2A 3D ¨C DC 3A ¨C C3 ¨C 35 11 55 ¨C (b) ²¿·ÖÒ³±í£º£¨¿ªÊ¼16Ï (c) L1 data cache£ºÖ±½ÓÓ³É䣬¹²16ÐУ¬¿é´óСΪ4B Çë»Ø´ðÏÂÁÐÎÊÌ⣺ £¨1£©ÐéÄâµØÖ·ÖÐÄļ¸Î»±íʾÐéÄâÒ³ºÅ£¿Äļ¸Î»±íʾҳÄÚÆ«ÒÆÁ¿£¿ÐéÄâÒ³ºÅÖÐÄļ¸Î»±íʾTLB±ê¼Ç£¿ Äļ¸Î»±íʾTLBË÷Òý£¿ £¨2£©ÎïÀíµØÖ·ÖÐÄļ¸Î»±íʾÎïÀíÒ³ºÅ£¿Äļ¸Î»±íʾҳÄÚÆ«ÒÆÁ¿£¿ £¨3£©Ö÷´æ£¨ÎïÀí£©µØÖ·ÈçºÎ»®·Ö³É±ê¼Ç×ֶΡ¢ÐÐË÷Òý×ֶκͿéÄÚµØÖ·×ֶΣ¿ £¨4£©CPU´ÓµØÖ·067AHÖÐÈ¡³öµÄֵΪ¶àÉÙ£¿ËµÃ÷CPU¶ÁÈ¡µØÖ·067AHÖÐÄÚÈݵĹý³Ì¡£ ²Î¿¼´ð°¸£º £¨1£©16λÐéÄâµØÖ·ÖеÍ7λΪҳÄÚÆ«ÒÆÁ¿£¬¸ß9λΪÐéÒ³ºÅ£»ÐéÒ³ºÅÖиß7λΪTLB±ê¼Ç£¬µÍ2 λΪTLB×éË÷Òý¡£ £¨2£©12λÎïÀíµØÖ·ÖеÍ7λΪҳÄÚÆ«ÒÆÁ¿£¬¸ß5λΪÎïÀíÒ³ºÅ¡£ £¨3£©12λÎïÀí£¨Ö÷´æ£©µØÖ·ÖУ¬µÍ2λΪ¿éÄÚµØÖ·£¬Öмä4λΪcacheÐÐË÷Òý£¬¸ß6λΪ±ê¼Ç¡£ £¨4£©µØÖ·067AH=0000 0110 0111 1010B£¬ËùÒÔ£¬ÐéÒ³ºÅΪ0000011 00B£¬Ó³Éäµ½TLBµÄµÚ00×飬 ½«0000011B=03HÓëTLBµÚ0×éµÄËĸö±ê¼Ç±È½Ï£¬ËäÈ»ºÍÆäÖÐÒ»¸öÏàµÈ£¬µ«¶ÔÓ¦µÄÓÐЧλΪ0£¬ÆäÓà¶¼²»µÈ£¬ËùÒÔTLBȱʧ£¬ÐèÒª·ÃÎÊÖ÷´æÖеÄÂý±í¡£Ö±½Ó²é¿´0000011 00B =00CH´¦µÄÒ³±íÏÓÐЧλΪ1£¬È¡³öÎïÀíÒ³ºÅ19H=11001B£¬ºÍÒ³ÄÚÆ«ÒÆ111 1010BÆ´½Ó³ÉÎïÀíµØÖ·£º11001 111 1010B¡£¸ù¾ÝÖмä4λ1110Ö±½ÓÕÒµ½cacheµÚ14ÐÐ(¼´£ºµÚEÐÐ)£¬ÓÐЧλΪ1£¬ÇÒ±ê¼ÇΪ33H=110011B£¬ÕýºÃµÈÓÚÎïÀíµØÖ·¸ß6룬¹ÊÃüÖС£¸ù¾ÝÎïÀíµØÖ·×îµÍÁ½Î»10£¬È¡³ö×Ö½Ú2ÖеÄÄÚÈÝ4AH=01001010B¡£ 25. »º³åÇøÒç³öÊÇÖ¸·ÖÅäµÄij¸öÄÚ´æÇøÓò£¨»º³åÇø£©µÄ´óС±È´æ·ÅÄÚÈÝËùÐè¿Õ¼äС¡£ÀýÈ磬ÔÚÕ»(stack) ÖзÖÅäÁËÒ»¿é¿Õ¼äÓÃÓÚ´æ·Åij¸ö¹ý³ÌÖеÄÒ»¸ö×Ö·û´®£¬½á¹û×Ö·û´®³¤¶È³¬¹ýÁË·ÖÅä¿Õ¼äµÄ´óС¡£ºÚ¿ÍÍùÍù»áÀûÓûº³åÇøÒç³öÀ´Ö²ÈëÈëÇÖ´úÂë¡£Çë˵Ã÷¿ÉÒÔ²ÉÓÃʲô´ëÊ©À´·ÀÖ¹»º³åÇøÒç³ö©¶´¡£ µÚ 5 ÕÂϰÌâ´ð°¸ 3£® ¼Ù¶¨Ä³¼ÆËã»úÖÐÓÐÒ»Ìõ×ªÒÆÖ¸Á²ÉÓÃÏà¶ÔѰַ·½Ê½£¬¹²Õ¼Á½¸ö×Ö½Ú£¬µÚÒ»×Ö½ÚÊDzÙ×÷Â룬µÚ¶þ×Ö½Ú ÊÇÏà¶ÔÎ»ÒÆÁ¿£¨Óò¹Âë±íʾ£©£¬CPUÿ´Î´ÓÄÚ´æÖ»ÄÜȡһ¸ö×Ö½Ú¡£¼ÙÉèÖ´Ðе½Ä³×ªÒÆÖ¸ÁîʱPCµÄÄÚÈÝΪ200£¬Ö´ÐиÃ×ªÒÆÖ¸ÁîºóÒªÇó×ªÒÆµ½100¿ªÊ¼µÄÒ»¶Î³ÌÐòÖ´ÐУ¬Ôò¸Ã×ªÒÆÖ¸ÁîµÚ¶þ×Ö½ÚµÄÄÚÈÝÓ¦¸ÃÊǶàÉÙ£¿ ²Î¿¼´ð°¸£º ÒòΪִÐе½¸Ã×ªÒÆÖ¸ÁîʱPCΪ200£¬ËùÒÔ˵Ã÷¸Ã×ªÒÆÖ¸Áî´æ·ÅÔÚ200µ¥Ôª¿ªÊ¼µÄÁ½¸ö×Ö½ÚÖС£ÒòΪCPUÿ´Î´ÓÄÚ´æÖ»ÄÜȡһ¸ö×Ö½Ú£¬ËùÒÔÿ´Îȡһ¸ö×Ö½ÚºóPCÓ¦¸Ã¼Ó1¡£ ¸Ã×ªÒÆÖ¸ÁîµÄÖ´Ðйý³ÌΪ£ºÈ¡200µ¥ÔªÖеÄÖ¸Áî²Ù×÷Âë²¢ÒëÂë¡úPC+1¡úÈ¡201µ¥ÔªµÄÏà¶ÔÎ»ÒÆÁ¿¡úPC+1¡ú¼ÆËã×ªÒÆÄ¿±êµØÖ·¡£¼ÙÉè¸Ã×ªÒÆÖ¸ÁîµÚ¶þ×Ö½ÚΪOffset£¬Ôò100=200+2+Offset£¬¼´Offset=100¨C202=¨C102=10011010B £¨×¢£ºÃ»ÓÐ˵¶¨³¤Ö¸Áî×Ö£¬ËùÒÔ²»Ò»¶¨ÊÇÿÌõÖ¸ÁîÕ¼2¸ö×Ö½Ú¡££© 4£® ¼ÙÉèµØÖ·Îª1200HµÄÄÚ´æµ¥ÔªÖеÄÄÚÈÝΪ12FCH£¬µØÖ·Îª12FCHµÄÄÚ´æµ¥ÔªµÄÄÚÈÝΪ38B8H£¬¶ø 38B8Hµ¥ÔªµÄÄÚÈÝΪ88F9H¡£ËµÃ÷ÒÔϸ÷Çé¿öϲÙ×÷ÊýµÄÓÐЧµØÖ·ºÍ²Ù×÷Êý¸÷ÊǶàÉÙ£¿ £¨1£©²Ù×÷Êý²ÉÓñäַѰַ£¬±äÖ·¼Ä´æÆ÷µÄÄÚÈÝΪ12£¬Ö¸ÁîÖиø³öµÄÐÎʽµØÖ·Îª1200H¡£ £¨2£©²Ù×÷Êý²ÉÓÃÒ»´Î¼ä½ÓѰַ£¬Ö¸ÁîÖиø³öµÄµØÖ·ÂëΪ1200H¡£ £¨3£©²Ù×÷Êý²ÉÓüĴæÆ÷¼ä½ÓѰַ£¬Ö¸ÁîÖиø³öµÄ¼Ä´æÆ÷±àºÅΪ8£¬8ºÅ¼Ä´æÆ÷µÄÄÚÈÝΪ1200H¡£ ²Î¿¼´ð°¸£º £¨1£© ÓÐЧµØÖ·EA=000CH+1200H=120CH£¬²Ù×÷Êýδ֪¡£ £¨2£© ÓÐЧµØÖ·EA=(1200H)=12FCH£¬²Ù×÷ÊýΪ38B8H¡£ £¨3£© ÓÐЧµØÖ·EA=1200H£¬²Ù×÷ÊýΪ12FCH¡£ 5£® ͨ¹ý²é×ÊÁÏÁ˽âIntel 80x86΢´¦ÀíÆ÷ºÍMIPS´¦ÀíÆ÷Öи÷×ÔÌṩÁËÄÄЩ¼Ó·¨Ö¸Á˵Ã÷ÿÌõ¼Ó·¨Ö¸Áî µÄ»ã±àÐÎʽ¡¢Ö¸Áî¸ñʽºÍ¹¦ÄÜ£¬²¢±È½Ï¼Ó¡¢¼õÔËËãÖ¸ÁîÔÚÕâÁ½ÖÖÖ¸ÁîϵͳÖв»Í¬µÄÉè¼Æ·½Ê½£¬°üÀ¨²»Í¬µÄÒç³ö´¦Àí·½Ê½¡£ ²Î¿¼´ð°¸£¨ÏêϸÐÅÏ¢ÂÔ£©£º MIPS: Intel 80x86: 6£® ij¼ÆËã»úÖ¸Áîϵͳ²ÉÓö¨³¤Ö¸Áî×Ö¸ñʽ£¬Ö¸Áî×Ö³¤16λ£¬Ã¿¸ö²Ù×÷ÊýµÄµØÖ·Â볤6λ¡£Ö¸Áî·Ö¶þµØ Ö·¡¢µ¥µØÖ·ºÍÁãµØÖ·ÈýÀà¡£Èô¶þµØÖ·Ö¸ÁîÓÐk2Ìõ£¬ÎÞµØÖ·Ö¸ÁîÓÐk0Ìõ£¬Ôòµ¥µØÖ·Ö¸Áî×î¶àÓжàÉÙÌõ£¿ ²Î¿¼´ð°¸£º Éèµ¥µØÖ·Ö¸ÁîÓÐk1Ìõ£¬Ôò ((16 ¨Ck2) ¡Á26 ¨Ck1) ¡Á26 = k0£¬ËùÒÔ k1= (16 ¨Ck2) ¡Á26 ¨Ck0/26 7£® ij¼ÆËã»ú×Ö³¤16λ£¬Ã¿´Î´æ´¢Æ÷·ÃÎÊ¿í¶È16룬CPUÖÐÓÐ8¸ö16λͨÓüĴæÆ÷¡£ÏÖΪ¸Ã»úÉè¼ÆÖ¸ Áîϵͳ£¬ÒªÇóÖ¸Á¶ÈΪ×Ö³¤µÄÕûÊý±¶£¬ÖÁ¶àÖ§³Ö64ÖÖ²»Í¬²Ù×÷£¬Ã¿¸ö²Ù×÷Êý¶¼Ö§³Ö4ÖÖѰַ·½Ê½£ºÁ¢¼´£¨I£©¡¢¼Ä´æÆ÷Ö±½Ó£¨R£©¡¢¼Ä´æÆ÷¼ä½Ó£¨S£©ºÍ±äÖ·£¨X£©£¬´æ´¢Æ÷µØÖ·Î»ÊýºÍÁ¢¼´Êý¾ùΪ16룬ÈκÎÒ»¸öͨÓüĴæÆ÷¶¼¿É×÷±äÖ·¼Ä´æÆ÷£¬Ö§³ÖÒÔÏÂ7ÖÖ¶þµØÖ·Ö¸Áî¸ñʽ£¨R¡¢I¡¢S¡¢X´ú±íÉÏÊöËÄÖÖѰַ·½Ê½£©£ºRRÐÍ¡¢RIÐÍ¡¢RSÐÍ¡¢RXÐÍ¡¢XIÐÍ¡¢SIÐÍ¡¢SSÐÍ¡£ÇëÉè¼Æ¸ÃÖ¸ÁîϵͳµÄ7ÖÖÖ¸Áî¸ñʽ£¬¸ø³öÿÖÖ¸ñʽµÄÖ¸Á¶È¡¢¸÷×Ö¶ÎËùռλÊýºÍº¬Ò壬²¢ËµÃ÷ÿÖÖ¸ñʽָÁîÐèÒª¼¸´Î´æ´¢Æ÷·ÃÎÊ£¿ ²Î¿¼´ð°¸£º Ö¸Áî¸ñʽ¿ÉÒÔÓкܶàÖÖ£¬Ö»ÒªÂú×ãÒÔϵÄÒªÇó¼´¿É¡£ ²Ù×÷Âë×ֶΣº6λ£»¼Ä´æÆ÷±àºÅ£º3λ£»Ö±½ÓµØÖ·ºÍÁ¢¼´Êý£º16λ£»±äÖ·¼Ä´æÆ÷±àºÅ£º3λ£»×ÜλÊýÊÇ8µÄ±¶Êý¡£ Ö¸Áî¸ñʽÀý1£º RRÐÍ RIÐÍ RSÐÍ RXÐÍ 0000 0010 OP (6λ) OP (6λ) OP (6λ) OP (6λ) R t (3λ) Rs (3λ) Rt (3λ) 000 Imm16 (16λ) 0100 0110 R t (3λ) Rs (3λ) Rt (3λ) Rx (3λ) Offset16 (16λ) XIÐÍ SIÐÍ SSÐÍ 1000 OP (6λ) OP (6λ) OP (6λ) Rx (3λ) 000 Offset16 (16λ) Imm16 (16λ) Imm16 (16λ) 1010 1100 R t (3λ) 000 Rt (3λ) Rs (3λ) Ö¸Áî¸ñʽÀý2£º RRÐÍ OP (6λ) RIÐÍ RSÐÍ 01 R t (3λ) Rt (3λ) 01 00 Rs (3λ) Imm16 (16λ) 000 OP (6λ) 01 OP (6λ) 01 R t (3λ) 01 R t (3λ) 10 11 Rs (3λ) Rx (3λ) Offset16 (16λ) RXÐÍ OP (6λ) XIÐÍ SIÐÍ OP (6λ) 11 Rx (3λ) Offset16 (16λ) 00 10 00 Imm16 (16λ) 000 000 OP (6λ) 10 10 R t (3λ) Rt (3λ) Imm16 (16λ) Rs (3λ) SSÐÍ OP (6λ) Ѱַ·½Ê½×Ö¶Î(2λ)----00£ºÁ¢¼´£»01£º¼ÄÖ±£»10£º¼Ä¼ä£»11-±äÖ· 8£® ÓÐЩ¼ÆËã»úÌṩÁËרÃŵÄÖ¸ÁÄÜ´Ó32λ¼Ä´æÆ÷ÖгéÈ¡ÆäÖÐÈÎÒâÒ»¸öλ´®ÖÃÓÚÒ»¸ö¼Ä´æÆ÷µÄµÍλÓРЧλÉÏ£¬²¢¸ßλ²¹0£¬ÈçÏÂͼËùʾ¡£MIPSÖ¸ÁîϵͳÖÐûÓÐÕâÑùµÄÖ¸ÁÇëд³ö×î¶ÌµÄÒ»¸öMIPSÖ¸ÁîÐòÁÐÀ´ÊµÏÖÕâ¸ö¹¦ÄÜ£¬ÒªÇói=5, j=22, ²Ù×÷ǰºóµÄ¼Ä´æÆ÷·Ö±ðΪ$s0ºÍ$s2¡£ 31 j i 0 (31¨Cj)λ 31 0 (32¨C(j¨Ci) )λ (j¨Ci)λ (i+1)λ 0 000 (j¨Ci)λ ²Î¿¼´ð°¸£º ¿ÉÒÔÏÈ×óÒÆ9λ£¬È»ºóÓÒÒÆ15룬¼´£º sll $s2, $s0, 9 srl $s2, $s2, 15 ˼¿¼£º(1) µÚ¶þÌõÓÃËãÊõÓÒÒÆÖ¸Áîsra Ðв»ÐУ¿ ²»ÐУ¬ÒòΪ²»Äܱ£Ö¤¸ßλ²¹0£¡ (2) ÈôµÚÒ»ÌõÖ¸ÁîÖеÄ$s2¸Ä³ÉÆäËû¼Ä´æÆ÷R£¬Ôò»á´øÀ´Ê²Ã´ÎÊÌ⣿ ËùÓüĴæÆ÷RµÄÖµ±»ÆÆ»µ£¡ 9£® ÒÔϳÌÐò¶ÎÊÇij¸ö¹ý³Ì¶ÔÓ¦µÄÖ¸ÁîÐòÁС£Èë¿Ú²ÎÊýint aºÍint b·Ö±ðÖÃÓÚ$a0ºÍ$a1ÖУ¬·µ»Ø²ÎÊýÊǸà ¹ý³ÌµÄ½á¹û£¬ÖÃÓÚ$v0ÖС£ÒªÇóΪÒÔÏÂMIPSÖ¸ÁîÐòÁмÓ×¢ÊÍ£¬²¢¼òµ¥ËµÃ÷¸Ã¹ý³ÌµÄ¹¦ÄÜ¡£ add $t0, $zero, $zero loop: beq $a1, $zero, finish add $t0, $t0, $a0 sub $a1, $a1, 1 j loop finish: addi $t0, $t0, 100 add $v0, $t0, $zero ²Î¿¼´ð°¸£º 1:½«t0¼Ä´æÆ÷ÖÃÁã 2:Èç¹ûa1µÄÖµµÈÓÚÁãÔò³ÌÐò×ªÒÆµ½finish´¦ 3:½«t0ºÍa0µÄÄÚÈÝÏà¼Ó£¬½á¹û´æ·ÅÓÚt0 4:½«a1µÄÖµ¼õ1 5:ÎÞÌõ¼þ×ªÒÆµ½loop´¦ 6:½«t0µÄÄÚÈݼÓÉÏ100£¬½á¹û´æ·ÅÓÚt0 7:½«t0µÄÖµ´æ·ÅÔÚv0 ¸Ã³ÌÐòµÄ¹¦ÄÜÊǼÆËã¡°100+a¡Áb¡± 10£® ÏÂÁÐÖ¸ÁîÐòÁÐÓÃÀ´¶ÔÁ½¸öÊý×é½øÐд¦Àí£¬²¢²úÉú½á¹û´æ·ÅÔÚ$v0ÖС£¼Ù¶¨Ã¿¸öÊý×éÓÐ2500 ¸ö×Ö£¬ ÆäÊý×éϱêΪ0µ½2499¡£Á½¸öÊý×éµÄ»ùµØÖ··Ö±ð´æ·ÅÔÚ$a0ºÍ$a1ÖУ¬Êý×鳤¶È·Ö±ð´æ·ÅÔÚ$a2ºÍ$a3ÖС£ÒªÇóΪÒÔÏÂMIPSÖ¸ÁîÐòÁмÓ×¢ÊÍ£¬²¢¼òµ¥ËµÃ÷¸Ã¹ý³ÌµÄ¹¦ÄÜ¡£¼Ù¶¨¸ÃÖ¸ÁîÐòÁÐÔËÐÐÔÚÒ»¸öʱÖÓÆµÂÊΪ2GHzµÄ´¦ÀíÆ÷ÉÏ£¬add¡¢addiºÍsllÖ¸ÁîµÄCPIΪ1£»lwºÍbneÖ¸ÁîµÄCPIΪ2£¬Ôò×Çé¿öÏÂÔËÐÐËùÐèʱ¼äÊǶàÉÙÃ룿 sll $a2, $a2, 2 sll $a3, $a3, 2 add $v0, $zero, $zero add $t0, $zero, $zero outer: add $t4, $a0, $t0 lw $t4, 0($t4) add $t1, $zero, $zero inner: add $t3, $a1, $t1 lw $t3, 0($t3) bne $t3, $t4, skip addi $v0, $v0, 1 skip: addi $t1, $t1, 4 bne $t1, $a3, inner addi $t0, $t0, 4 bne $t0, $a2, outer ²Î¿¼´ð°¸£º 1:½«a2µÄÄÚÈÝ×óÒÆ2룬¼´³Ë4 2:½«a3µÄÄÚÈÝ×óÒÆ2룬¼´³Ë4 3:½«v0ÖÃÁã 4:½«t0ÖÃÁã 5:½«µÚÒ»¸öÊý×éµÄÊ×µØÖ·´æ·ÅÔÚt4 6:È¡µÚÒ»¸öÊý×éµÄµÚÒ»¸öÔªËØ´æ·ÅÔÚt4 7:½«t1ÖÃÁã 8:½«µÚ¶þ¸öÊý×éµÄÊ×µØÖ·´æ·ÅÔÚt3 9:È¡µÚ¶þ¸öÊý×éµÄµÚÒ»¸öÔªËØ´æ·ÅÔÚt3 10:Èç¹ût3ºÍt4²»ÏàµÈ£¬ÔòÌø×ªµ½skip 11:½«v0µÄÖµ¼Ó1£¬½á¹û´æÓÚv0 12:½«t1µÄÖµ¼Ó4£¬½á¹û´æÓÚt1 13:Èç¹ût1²»µÈÓÚa3£¬¼´»¹Î´È¡ÍêÊý×éÖÐËùÓÐÔªËØ£¬Ôò×ªÒÆµ½inner 14:½«t0µÄÖµ¼Ó4 15:Èç¹ût0²»µÈÓÚa2£¬¼´»¹Î´È¡ÍêÊý×éÖÐËùÓÐÔªËØ£¬Ôò×ªÒÆµ½outer ¸Ã³ÌÐòµÄ¹¦ÄÜÊÇͳ¼ÆÁ½¸öÊý×éÖÐÏàÍ¬ÔªËØµÄ¸öÊý¡£ ³ÌÐò×µÄÇé¿öÊÇ£ºÁ½¸öÊý×éËùÓÐÔªËØ¶¼ÏàµÈ£¬ÕâÑùÿ´ÎÑ»·¶¼²»»áÖ´ÐÐskip¡£Òò´Ë£¬Ö¸Áî×ÜÌõÊýΪ£º5+2500¡Á(3+2500¡Á6+2)=37512505£¬ ÆäÖУºadd,addiºÍsllµÄÖ¸ÁîÌõÊýΪ£º4+2500¡Á(2+2500¡Á3+1)=18757504 lwºÍbneµÄÖ¸ÁîÌõÊýΪ£º 1+2500¡Á(1+2500¡Á3+1)=18755001 ËùÒÔ£º³ÌÐòÖ´ÐеÄʱ¼äΪ£º(2GHzclockµÄclock time=1/2G=0.5ns) (18757504¡Á1+18755001¡Á2) ¡Á0.5ns = 28133753ns¡Ö0.028s 11£® ÓÃÒ»ÌõMIPSÖ¸Áî»ò×î¶ÌµÄÖ¸ÁîÐòÁÐʵÏÖÒÔÏÂCÓïÑÔÓï¾ä£ºb=25|a¡£¼Ù¶¨±àÒëÆ÷½«aºÍb·Ö±ð·ÖÅäµ½ $t0ºÍ$t1ÖС£Èç¹û°Ñ25»»³É65536£¬¼´b=65536|a£¬ÔòÓÃMIPSÖ¸Áî»òÖ¸ÁîÐòÁÐÈçºÎʵÏÖ£¿ ²Î¿¼´ð°¸£º Ö»ÒªÓÃÒ»ÌõÖ¸Áîori $t1, $t0, 25¾Í¿ÉʵÏÖ¡£ Èç¹û°Ñ25»»³É65536£¬Ôò²»ÄÜÓÃÒ»ÌõÖ¸Áîori $t1, $t0, 65536À´ÊµÏÖ£¬ÒòΪ65536£¨1 0000 0000 0000 0000B£©²»ÄÜÓÃ16λÁ¢¼´Êý±íʾ¡£¿ÉÓÃÒÔÏÂÁ½ÌõÖ¸ÁîʵÏÖ¡£ lui $t1, 1 or $t1, $t0, $t1 12£® ÒÔϳÌÐò¶ÎÊÇij¸ö¹ý³Ì¶ÔÓ¦µÄMIPSÖ¸ÁîÐòÁУ¬Æä¹¦ÄÜΪ¸´ÖÆÒ»¸ö´æ´¢¿éÊý¾Ýµ½ÁíÒ»¸ö´æ´¢¿éÖУ¬´æ ´¢¿éÖÐÿ¸öÊý¾ÝµÄÀàÐÍΪfloat£¬Ô´Êý¾Ý¿éºÍÄ¿µÄÊý¾Ý¿éµÄÊ×µØÖ··Ö±ð´æ·ÅÔÚ$a0ºÍ$a1ÖУ¬¸´ÖƵÄÊý¾Ý¸öÊý´æ·ÅÔÚ$v0ÖУ¬×÷Ϊ·µ»Ø²ÎÊý·µ»Ø¸øµ÷Óùý³Ì¡£ÔÚ¸´Öƹý³ÌÖÐÓöµ½0ÔòÍ£Ö¹£¬×îºóÒ»¸ö0Ò²ÐèÒª¸´ÖÆ£¬µ«²»±»¼ÆÊý¡£ÒÑÖª³ÌÐò¶ÎÖÐÓжà¸öBug£¬ÇëÕÒ³öËüÃDz¢Ð޸ġ£ addi $v0, $zero, 0 loop: lw $v1, 0($a0) sw$v1, 0($a1) addi $a0, $a0, 4 addi $a1, $a1, 4 beq$v1, $zero,loop ²Î¿¼´ð°¸£º Ð޸ĺóµÄ´úÂëÈçÏ£º addi $v0, $zero, 0 loop: lw $v1, 0($a0) sw $v1, 0($a1) beq $v1, $zero, exit addi $a0, $a0, 4 addi $a1, $a1, 4 addi $v0, $v0, 1 j loop exit: 13£® ˵Ã÷beqÖ¸ÁîµÄº¬Ò壬²¢½âÊÍΪʲô»ã±à³ÌÐòÔÚ¶ÔÏÂÁлã±àÔ´³ÌÐòÖеÄbeqÖ¸Áî½øÐлã±àʱ»áÓöµ½ÎÊ Ì⣬Ӧ¸ÃÈçºÎÐ޸ĸóÌÐò¶Î£¿ here: beq$s0, $s2, there ¡¡ there: addi $s1, $s0, 4 ²Î¿¼´ð°¸£º beqÊÇÒ»¸öI-ÐÍÖ¸Á¿ÉÒÔÌø×ªµ½µ±Ç°Ö¸Áîǰ£¬Ò²¿ÉÒÔÌø×ªµ½µ±Ç°Ö¸Áîºó¡£Æä×ªÒÆÄ¿µÄµØÖ·µÄ¼ÆË㹫ʽΪ£ºPC+4+offset¡Á4£¬offsetÊÇ16λ´ø·ûºÅÕûÊý£¬Óò¹Âë±íʾ¡£Òò´Ë£¬·ÖÖ§Ö¸ÁîbeqµÄÏà¶Ô×ªÒÆ·¶Î§ÈçÏ¡£ ÆäÕýÌø·¶Î§Îª£º0000 0000 0000 0000£¨4£©~ 0111 1111 1111 1111£¨217=4+(215¨C1)¡Á4£© ¸ºÌø·¶Î§Îª£º1000 0000 0000 0000£¨4¨C217=4+(¨C215)¡Á4£©~ 1111 1111 1111 1111£¨0=4+(¨C1)¡Á4£© ³¬¹ýÒÔÉÏ·¶Î§µÄÌø×ª¾Í²»ÄÜÓÃÉÏÊöÖ¸ÁîÐòÁÐʵÏÖ¡£ Òò´Ë£¬ÉÏÊöÖ¸ÁîÐòÁÐÓ¦¸Ã¸Ä³ÉÒÔÏÂÖ¸ÁîÐòÁУº here: bne $s0, $s2, skip j there skip: ¡¡ ¡¡ there: add $s0, $s0, $s0 14£® ÒÔÏÂCÓïÑÔ³ÌÐò¶ÎÖÐÓÐÁ½¸öº¯Êýsum_arrayºÍcompare£¬¼Ù¶¨sum_arrayº¯ÊýµÚÒ»¸ö±»µ÷Óã¬È«¾Ö±ä Á¿sum·ÖÅäÔڼĴæÆ÷$s0ÖС£ÒªÇóд³öÿ¸öº¯Êý¶ÔÓ¦µÄMIPS»ã±à±íʾ£¬²¢»³öÿ¸öº¯Êýµ÷ÓÃǰ¡¢ºó Õ»ÖеÄ״̬¡¢Ö¡Ö¸ÕëºÍÕ»Ö¸ÕëµÄλÖᣠ1 int sum=0; 2 int sum_array(int array[], int num) 3 { 4 int i; 5 for (i = 0; i 9 int compare (int a, int b) 10 { 11 if ( a>b) 12 return 1; 13 else 14 return 0; 15 } ²Î¿¼´ð°¸£¨Í¼ÂÔ£©£º ³ÌÐòÓÉÁ½¸ö¹ý³Ì×é³É£¬È«¾Ö¾²Ì¬±äÁ¿sum·ÖÅ䏸$s0¡£ ΪÁ˾¡Á¿¼õÉÙÖ¸ÁîÌõÊý£¬²¢¼õÉÙ·ÃÎÊÄÚ´æ´ÎÊý¡£ÔÚÿ¸ö¹ý³ÌµÄ¹ý³ÌÌåÖÐ×ÜÊÇÏÈʹÓÃÁÙʱ¼Ä´æÆ÷$t0~$t9£¬ÁÙʱ¼Ä´æÆ÷²»¹»»òÕßij¸öÖµÔÚµ÷Óùý³Ì·µ»Øºó»¹ÐèÒªÓ㬾ÍʹÓñ£´æ¼Ä´æÆ÷$s0~$s7¡£ MIPSÖ¸ÁîϵͳÖÐûÓмĴæÆ÷´«ËÍÖ¸ÁΪÁËÌá¸ß»ã±à±íʾµÄ¿É¶ÁÐÔ£¬ÒýÈëÒ»ÌõαָÁîmoveÀ´±íʾ¼Ä´æÆ÷´«ËÍ£¬»ã±àÆ÷½«Æäת»»Îª¾ßÓÐÏàͬ¹¦ÄܵĻúÆ÷Ö¸ÁαָÁî¡°move $t0, $s0¡±¶ÔÓ¦µÄ»úÆ÷Ö¸ÁîΪ¡°add $t0,$zero,$s0¡±¡£ £¨1£©¹ý³Ìset_array£º¸Ã¹ý³ÌºÍ½Ì²ÄÖÐÀý5.10ÖеIJ»Í¬£¬ÔÚÀý5.10ÖÐarrayÊý×éÊǹý³Ìsum_arrayµÄ¾Ö²¿±äÁ¿£¬Ó¦¸ÃÔÚ¹ý³ÌÕ»Ö¡ÖиøÊý×é·ÖÅä¿Õ¼ä£¬µ«¸ÃÌâÖеÄÊý×éarrayÊÇÔÚÆäËû¹ý³ÌÖж¨ÒåµÄ£¬½ö½«ÆäÊý×éÊ×µØÖ·×÷Ϊ²ÎÊý´«µÝ¸ø¹ý³Ìsum_array£¨¼Ù¶¨ÔÚÔÚ$a0ÖУ©£¬Òò´Ë£¬ÎÞÐèÔÚÆäÕ»Ö¡ÖиøÊý×é·ÖÅä¿Õ¼ä¡£´ËÍ⣬»¹ÓÐÒ»¸öÈë¿Ú²ÎÊýΪnum£¨¼Ù¶¨ÔÚ$a1ÖУ©£¬ÓÐÒ»¸ö·µ»Ø²ÎÊýsum£¬±»µ÷Óùý³ÌΪcompare¡£Òò´Ë£¬ÆäÕ»Ö¡ÖгýÁ˱£ÁôËùÓõı£´æ¼Ä´æÆ÷Í⣬»¹±ØÐë±£Áô·µ»ØµØÖ·£¬ÒÔÃâÔÚµ÷Óùý³Ìcompareʱ±»¸²¸Ç¡£ÊÇ·ñ±£´æ$fpÒª¿´¾ßÌåÇé¿ö£¬Èç¹ûÈ·±£ºóÃæ¶¼²»Óõ½$fp£¬Ôò¿ÉÒÔ²»±£´æ£¬µ«ÎªÁ˱£Ö¤$fpµÄÖµ²»±»ºóÃæµÄ¹ý³Ì¸²¸Ç£¬Í¨³£Çé¿öÏ£¬Ó¦¸Ã±£´æ$fpµÄÖµ¡£ Õ»Ö¡ÖÐÒª±£´æµÄÐÅÏ¢Ö»Óзµ»ØµØÖ·$raºÍÖ¡Ö¸Õë$fp£¬ÆäÕ»Ö¡¿Õ¼äΪ4¡Á2=8B¡£ »ã±à±íʾÈçÏ£º move $s0, $zero # sum=0 set-array:addi $sp, $sp, ¨C8 # generate stack frame sw $ra, 4($sp) # save $ra on stack sw $fp, 0($sp) # save $fp on stack addi $fp, $sp, 4 # set $fp move $t2, $a0 # base address of array move $t0, $a1 # $t0=num move $t3, $zero # i=0 loop: slt $t1, $t3, $t0 # if i addi $a1, $a1, 1 jalcompare # $a1=i+1 # call compare beq $v0, $zero, else # if $v0 = 0, jump to else sll $t1, $t3, 2 # i¡Á4 add $t1, $t2, $t1 # $t1=array[i] lw $t4, 0($t1) # load array[i] add $s0, $s0, $t4 # sum+=array[i] else£ºaddi $t3, $t3, 1 # i=i+1 j loop exit1: lw $ra, 4($sp) # restore $ra lw $fp, 0($sp) # restore $fp addi $sp, $sp, 8 # free stack frame jr $ra # return to caller £¨2£©¹ý³Ìcompare£ºÈë¿Ú²ÎÊýΪaºÍb£¬·Ö±ðÔÚ$a0ºÍ$a1ÖС£ÓÐÒ»¸ö·µ»Ø²ÎÊý£¬Ã»Óоֲ¿±äÁ¿£¬ÊÇÒ¶×Ó¹ý³Ì£¬ÇÒ¹ý³ÌÌåÖÐûÓÐÓõ½Èκα£´æ¼Ä´æÆ÷£¬ËùÒÔÕ»Ö¡Öв»ÐèÒª±£ÁôÈκÎÐÅÏ¢¡£ compare: move $v0, $zero # return 0 beq $a0, $a1, exit2 # if $a0=$a1, jump to exit2 slt $t1, $a0, $a1 # if $a0<$a1, $t1=1; if $a0>=$a1, $t1= 0 bne $t1, $zero, exit2 # if $a0<$a1, jump to exit2 ori $v0, $zero,1 # return 1 exit2: jr $ra 15£® ÒÔÏÂÊÇÒ»¸ö¼ÆËã½×³ËµÄCÓïÑԵݹé¹ý³Ì£¬Çë°´ÕÕMIPS¹ý³Ìµ÷ÓÃÐÒéд³ö¸ÃµÝ¹é¹ý³Ì¶ÔÓ¦µÄMIPS »ã±àÓïÑÔ³ÌÐò£¬ÒªÇóÄ¿±ê´úÂ뾡Á¿¶Ì£¨Ìáʾ£º³Ë·¨ÔËËã¿ÉÓó˷¨Ö¸Áî¡°mul rd, rs, rt¡±À´ÊµÏÖ£¬¹¦ÄÜΪ¡°rd¡û(rs) ¡Á(rt)¡±£©¡£ int fact ( int n) { if (n < 1) return (1) ; else return (n*fact (n-1) )£» } ²Î¿¼´ð°¸£º Fact: addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) slti $t0,$a0,1 beq $t0,$zero,L1 addi $v0,$zero,1 addi $sp,$sp,8 jr $ra L1: addi $a0,$a0,-1 jal Fact lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 mul $v0,$a0,$v0 jr $ra ϰÌâ 1£® ¸ø³öÒÔϸÅÄîµÄ½âÊÍ˵Ã÷¡£ Ö¸ÁîÖÜÆÚ£¨Instruction Cycle£© »úÆ÷ÖÜÆÚ£¨Machine Cycle£© ͬ²½ÏµÍ³£¨Synchronous system£© ʱÐòÐźţ¨Timing signal£© ¿ØÖƵ¥Ôª£¨Control Unit, CU£© Ö´Ðв¿¼þ£¨Execute Unit£¬EU£© ×éºÏÂß¼Ôª¼þ£¨Combinational logic element£©»ò²Ù×÷Ôª¼þ£¨Operate element£© ʱÐòÂß¼Ôª¼þ£¨Sequential logic circuit£©»ò״̬Ԫ¼þ£¨State element£© ¶à·ѡÔñÆ÷£¨Multiplexor£© À©Õ¹Æ÷£¨Extension unit£© ¡°Á㡱À©Õ¹£¨0- extend£© ¡°·ûºÅ¡±À©Õ¹£¨Sign extend£© ËãÊõÂß¼²¿¼þALU£¨Arithmetic Logic Unit£© ¼Ó·¨Æ÷£¨Adder£© CPU×ÜÏߣ¨CPU Bus£© ¼Ä´æÆ÷¶Ñ£¨Register file£© ¶¨Ê±·½Ê½£¨Clocking methodology£© ±ßÑØ´¥·¢£¨Edge-triggered£© ¼Ä´æÆ÷дÐźţ¨Register Write£© Ö¸Áî´æ´¢Æ÷£¨Instruction Memory£© Êý¾Ý´æ´¢Æ÷£¨Data Memory£© ³ÌÐò¼ÆÊýÆ÷£¨Program Counter£© Ö¸Áî¼Ä´æÆ÷£¨Instruction Register£© Ö¸ÁîÒëÂëÆ÷£¨Instruction Decoder£© ʱÖÓÖÜÆÚ£¨Clock Cycle£© Ö÷Ƶ£¨CPU Clock Rate / Frequency ×ªÒÆÄ¿±êµØÖ·£¨Branch target address£© ¿ØÖÆÐźţ¨Control signal£© ΢³ÌÐò¿ØÖÆÆ÷£¨Microprogrammed control£© Ó²²¼Ïß¿ØÖÆÆ÷£¨Hardwared control£© ¿ØÖÆ´æ´¢Æ÷£¨Control Storage£¬¿Ø´æCS£© ΢´úÂ루Microcode£© ΢ָÁMicroinstruction£© ΢³ÌÐò£¨Microprogram£© ¹Ì¼þ£¨Firmware£© ÖжϹý³Ì£¨Interrupt Processing£© Òì³££¨Exception£© ¹ÊÕÏ£¨fault£© ×ÔÏÝ(Trap) ÖÕÖ¹£¨Abort£© Öжϣ¨Interrupt£© ÖжϷþÎñ³ÌÐò£¨Interrupt Handler£© ÖжÏÔÊÐí루Interrupt Enable Bit£© ¹ØÖжϣ¨Interrupt OFF£© ¿ªÖжϣ¨Interrupt ON£© ÖжÏÏìÓ¦£¨Interrupt Response£© ÏòÁ¿Öжϣ¨Vector Interrupt£© ÖжÏÏòÁ¿£¨Interrupt vector£© ÖжÏÏòÁ¿±í£¨Interrupt vector table£© ÏòÁ¿µØÖ·£¨vector Address£© ÖжÏÀàÐͺţ¨Interrupt number£© 2. ¼òµ¥»Ø´ðÏÂÁÐÎÊÌâ¡£ £¨1£©CPUµÄ»ù±¾×é³ÉºÍ»ù±¾¹¦Äܸ÷ÊÇʲô£¿ £¨2£©È¡Ö¸Á¼þµÄ¹¦ÄÜÊÇʲô£¿ £¨3£©¿ØÖÆÆ÷µÄ¹¦ÄÜÊÇʲô£¿ £¨4£©ÎªÊ²Ã´¶Ô´æ´¢Æ÷°´Òì²½·½Ê½½øÐжÁдʱÐèÒªWMFCÐźţ¿°´Í¬²½·½Ê½·ÃÎÊ´æ´¢Æ÷ʱ£¬CPUÈçºÎʵ ÏÖ´æ´¢Æ÷¶Áд£¿ £¨5£©µ¥ÖÜÆÚ´¦ÀíÆ÷µÄCPIÊǶàÉÙ£¿Ê±ÖÓÖÜÆÚÈçºÎÈ·¶¨£¿ÎªÊ²Ã´µ¥ÖÜÆÚ´¦ÀíÆ÷µÄÐÔÄܲԪ¼þÔÚÒ»¸öÖ¸ ÁîÖÜÆÚÄÚÄÜ·ñ±»Öظ´Ê¹Óã¿ÎªÊ²Ã´£¿ £¨6£©¶àÖÜÆÚ´¦ÀíÆ÷µÄÉè¼ÆË¼ÏëÊÇʲô£¿Ã¿ÌõÖ¸ÁîµÄCPIÊÇ·ñÏàͬ£¿ÎªÊ²Ã´ÔÚÒ»¸öÖ¸ÁîÖÜÆÚÄÚij¸öÔª¼þ ¿É±»Öظ´Ê¹Óã¿ £¨7£©µ¥ÖÜÆÚ´¦ÀíÆ÷ºÍ¶àÖÜÆÚ´¦ÀíÆ÷µÄ¿ØÖÆÂß¼Éè¼ÆµÄ²î±ðÊÇʲô£¿ £¨8£©Ó²²¼Ïß¿ØÖÆÆ÷ºÍ΢³ÌÐò¿ØÖÆÆ÷µÄÌØµã¸÷ÊÇʲô£¿ £¨9£©ÎªÊ²Ã´CISC´ó¶àÓÃ΢³ÌÐò¿ØÖÆÆ÷ʵÏÖ£¬RISC´ó¶àÓÃÓ²²¼Ïß¿ØÖÆÆ÷ʵÏÖ£¿ £¨10£©Ë®Æ½ÐÍ΢ָÁîºÍ´¹Ö±ÐÍ΢ָÁîµÄ»ù±¾¸ÅÄîºÍÓÅȱµãÊÇʲô£¿ £¨11£©CPU¼ì²âÄÚ²¿Òì³£ºÍÍⲿÖжϵķ½·¨ÓÐʲô²»Í¬£¿ 3. ÔÚÊéÖÐͼ6.9ÖУ¬¼Ù¶¨×ÜÏß´«ÊäÑÓ³ÙºÍALUÔËËãʱ¼ä·Ö±ðÊÇ20psºÍ200ps£¬¼Ä´æÆ÷½¨Á¢Ê±¼äΪ10ps£¬¼Ä´æÆ÷±£³Öʱ¼äΪ5ps£¬¼Ä´æÆ÷µÄËø´æÑÓ³Ù£¨Clk-to-Q time£©Îª4ps£¬¿ØÖÆÐźŵÄÉú³ÉÑÓ³Ù£¨Clk-to-signal time£©Îª7ps£¬Èý̬ÃŽÓͨʱ¼äΪ3ps£¬Ôò´Óµ±Ç°Ê±ÖÓµ½´ï¿ªÊ¼ËãÆð£¬Íê³ÉÒÔϲÙ×÷µÄ×î¶Ìʱ¼äÊǶàÉÙ£¿¸÷ÐèÒª¼¸¸öʱÖÓÖÜÆÚ£¿ £¨1£©½«Êý¾Ý´ÓÒ»¸ö¼Ä´æÆ÷´«Ë͵½ÁíÒ»¸ö¼Ä´æÆ÷ £¨2£©½«³ÌÐò¼ÆÊýÆ÷PC¼Ó1 Ëùʾ¡£ Clk Clk-to-Q ¼Ä´æÆ÷Êä³ö¿ªÊ¼ÓÐЧ ½ÓͨÈý̬ ×ÜÏß´«ÃÅʱ¼ä Êäʱ¼ä ½¨Á¢Ê±¼ä ±£³Ö ʱ¼ä Clk-to-Signal Riout Rjin t0 t1 t2 t3 t4 (a) µ±Ç°ÖÜÆÚÄÚ²»Ö´ÐÐALUÔËËã Clk-to-Q ¼Ä´æÆ÷Êä³ö¿ªÊ¼ÓÐЧ ½ÓͨÈý̬ ×ÜÏß´«ÃÅʱ¼ä Êäʱ¼ä ALUʱÑÓ ½¨Á¢Ê±¼ä ±£³Ö ʱ¼ä Clk Clk-to-Signal Riout Zin t0 t1 t2 t3 t4 t5 (b) µ±Ç°ÖÜÆÚÄÚÖ´ÐÐALUÔËËã ͼ6.10 µ¥×ÜÏßÊý¾Ýͨ·ÖÐÖ÷Ҫ·¾¶µÄ¶¨Ê± ²Î¿¼´ð°¸£º £¨1£©¼Ä´æÆ÷µÄËø´æÑÓ³ÙÓë¿ØÖÆÐźŵÄÉú³ÉÑÓ³ÙµÄʱ¼äÖØµþ£¬ ÇÒClk-to-signal time> Clk-to-Q time£¬ËùÒÔÍê³É¼Ä´æÆ÷´«Ë͵Äʱ¼äÑÓ³ÙΪ£º7+3+20+10=40ps¡£ ÒòΪÔÚÕâ¸ö¹ý³ÌÖУ¬Ö»Òª×îºó±£´æÒ»´ÎÐÅÏ¢µ½¼Ä´æÆ÷£¬ËùÒÔÖ»ÐèÒªÒ»¸öʱÖÓÖÜÆÚ¡£ £¨2£©·ÖÁ½¸ö½×¶Î£º PC+1¡úZ£º7+3+20+200+10=240ps£» Z¡úPC£º7+3+20+10==40ps ¼Ä´æÆ÷±£³Öʱ¼äÓÃÀ´×÷Ϊʱ¼äÔ¼Êø¡£ ÒòΪÔÚÕâ¸ö¹ý³ÌÖУ¬ÐèÒª¾¹ýÁ½´Î×ÜÏß´«Ê䣬ÿ´Î¶¼½«´«ÊäÐÅÏ¢±£´æÔÚij¸ö¼Ä´æÆ÷ÖУ¬ËùÒÔÐèÒªÁ½¸öʱÖÓÖÜÆÚ¡£ 4. ÓÒͼ6.30¸ø³öÁËijCPUÄÚ²¿½á¹¹µÄÒ»²¿·Ö£¬MARºÍMDRÖ±½ÓÁ¬µ½´æ´¢Æ÷×ÜÏߣ¨Í¼ÖÐÊ¡ÂÔ£©¡£ÔÚÁ½¸ö×ÜÏßÖ®¼äµÄËùÓÐÊý¾Ý´«ËͶ¼Ðè¾¹ýËãÊõÂß¼²¿¼þALU¡£ALU¿ÉʵÏֵIJ¿·Ö¹¦Äܼ°Æä¿ØÖÆÐźÅÈçÏ£º MOVa£ºF=A£» MOVb£ºF=B£» a+1£ºF=A+1£» b+1£ºF=B+1 a-1£ºF=A-1£» b-1£ºF=B-1 ÆäÖÐAºÍBÊÇALUµÄÊäÈ룬FÊÇALUµÄÊä³ö¡£¼Ù¶¨JSR£¨×ª×Ó IRÖ¸ÁָÁîÕ¼Á½¸ö×Ö£¬µÚÒ»¸ö×ÖÊDzÙ×÷Â룬µÚ¶þ¸ö×Ö¸ø³ö MDR×Ó³ÌÐòµÄÆðʼµØÖ·£¬·µ»ØµØÖ·±£´æÔÚÖ÷´æµÄÕ»ÖУ¬ÓÃSP£¨Õ» ָʾÆ÷£©Ö¸ÏòÕ»¶¥£¬°´×Ö±àÖ·£¬Ã¿´Î´ÓÖ÷´æ¶Áȡһ¸ö×Ö¡£Çë MARд³ö¶ÁÈ¡²¢Ö´ÐÐJSRÖ¸ÁîËùÒªÇóµÄ¿ØÖÆÐźÅÐòÁУ¨Ìáʾ£ºµ±Ç° PCÖ¸ÁîµØÖ·ÔÚPCÖУ©¡£ SP²Î¿¼´ð°¸£º ¼Ù¶¨²ÉÓÃͬ²½·½Ê½£¨ÈôΪÒì²½£¬ÔòÖ»ÐèÔÚreadºÍWriteºó¼ÓÒ»¸öµÈ´ýÐÅYºÅWMFC£© AB·ÖÈý¸ö½×¶Î£º ALU1. ȡָÁî²Ù×÷Â룺PCout, MOVb, MARin F Read, b+1, PCin ͼ30 MDRout, MOVb, IRin 2. È¡×Ó³ÌÐòÊ×Ö·£ºPCout, MOVb, MARin Read, b+1, Yin (·µ»ØµØÖ·ÔÚYÖÐ) MDRout, MOVb,PCin(×Ó³ÌÐòÊ×Ö·ÔÚPCÖÐ) 3. ±£´æ·µÖ·ÖÁÕ»£ºSPout, MOVb, MARin Yout, MOVb, MDRin Write, SPout, b-1, SPin (×¢£ºÈô°´×µÄ´æ´¢·ÃÎÊʱ¼ä×÷ΪCPUʱÖÓÖÜÆÚ£¬ÔòÉÏÊöÿ¸ö½×¶Î¶¼ÐèÈý¸öʱÖÓÖÜÆÚ) ÄÜ·ñÓøüÉÙµÄʱÖÓÖÜÆÚÍê³ÉÉÏÊö¹¦ÄÜ£¿²»ÄÜ£¡ÒÔÏÂÊÇÁíÒ»ÖÖ·½Ê½£© 1. ȡָÁî²Ù×÷Â룺PCout, MOVb, MARin Read, b+1, Yin MDRout, MOVb, IRin 2. È¡×Ó³ÌÐòÊ×Ö·£ºYout, MOVb, MARin Read, a+1, Yin £¨ÓÃb+1Ò²ÐУ© MDRout, MOVb, PCin 3. ±£´æ·µÖ·ÖÁÕ»£ºSPout, MOVb, MARin Yout, MOVb, MDRin Write, SPout, b-1, Spin 5. ¼Ù¶¨Ä³¼ÆËã»ú×Ö³¤16룬CPUÄÚ²¿½á¹¹ÈçÊéÖÐͼ6.9Ëùʾ£¬CPUºÍ´æ´¢Æ÷Ö®¼ä²ÉÓÃͬ²½·½Ê½Í¨ÐÅ£¬°´×Ö±àÖ·¡£²ÉÓö¨³¤Ö¸Áî×Ö¸ñʽ£¬Ö¸ÁîÓÉÁ½¸ö×Ö×é³É£¬µÚÒ»¸ö×ÖÖ¸Ã÷²Ù×÷ÂëºÍѰַ·½Ê½£¬µÚ¶þ¸ö×Ö°üº¬Á¢¼´ÊýImm16¡£ÈôÒ»´Î´æ´¢·ÃÎÊËù»¨Ê±¼äΪ2¸öCPUʱÖÓÖÜÆÚ£¬Ã¿´Î´æ´¢·ÃÎÊ´æÈ¡Ò»¸ö×Ö£¬È¡Ö¸Áî½×¶ÎµÚ¶þ´Î·Ã´æ½«Imm16È¡µ½MDRÖУ¬Çëд³öÏÂÁÐÖ¸ÁîÔÚÖ¸ÁîÖ´Ðн׶εĿØÖÆÐźÅÐòÁУ¬²¢ËµÃ÷ÐèÒª¼¸¸öʱÖÓÖÜÆÚ¡£ £¨1£©½«Á¢¼´ÊýImm16¼Óµ½¼Ä´æÆ÷R1ÖУ¬´Ëʱ£¬Imm16ΪÁ¢¼´²Ù×÷Êý¡£ ¼´£ºR[R1]¡ûR[R1]+ Imm16 £¨2£©½«µØÖ·ÎªImm16µÄ´æ´¢µ¥ÔªµÄÄÚÈݼӵ½¼Ä´æÆ÷R1ÖУ¬´Ëʱ£¬Imm16Ϊֱ½ÓµØÖ·¡£ ¼´£ºR[R1]¡ûR[R1]+ M[Imm16] £¨3£©½«´æ´¢µ¥ÔªImm16µÄÄÚÈÝ×÷ΪµØÖ·ËùÖ¸µÄ´æ´¢µ¥ÔªµÄÄÚÈݼӵ½¼Ä´æÆ÷R1ÖС£´Ëʱ£¬Imm16Ϊ¼ä½Ó µØÖ·¡£¼´£ºR[R1]¡ûR[R1]+ M[M[Imm16]] ²Î¿¼´ð°¸£º £¨1£© MDRout, Yin R1out, add, Zin Zout, R1in Ðè3¸öʱÖÓÖÜÆÚ £¨2£© MDRout, MARin Read1,£¨R1out, YinÒ²¿ÉÒÔ·ÅÔڸÿØÖÆÐźÅËùÔÚµÄʱÖÓÖÜÆÚÖУ© Read2, R1out, Yin MDRout, add, Zin Zout, R1in Ðè5¸öʱÖÓÖÜÆÚ £¨3£© MDRout, MARin Read1 Read2 MDRout, MARin Read1,£¨R1out, Yin£© Read2, R1out, Yin MDRout, add, Zin Zout, R1in Ðè8¸öʱÖÓÖÜÆÚ 6. ¼Ù¶¨Í¼6.24µ¥ÖÜÆÚÊý¾Ýͨ·¶ÔÓ¦µÄ¿ØÖÆÂß¼·¢Éú´íÎó£¬Ê¹µÃÔÚÈκÎÇé¿öÏ¿ØÖÆÐźÅRegWr¡¢RegDst¡¢Branch¡¢MemWr¡¢ExtOp¡¢R-type×ÜÊÇΪ0£¬ÔòÄÄЩָÁî²»ÄÜÕýÈ·Ö´ÐУ¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º RegWr ×ÜÊÇ0 ÔòËùÓÐÐèд½á¹ûµ½¼Ä´æÆ÷µÄÖ¸ÁÈ磺R-TypeÖ¸Áî¡¢loadÖ¸ÁîµÈ£©¶¼²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪ¼Ä´æÆ÷²»·¢Éúд²Ù×÷ ÔòËùÓÐR-TypeÖ¸Áî¶¼²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪĿµÄ¼Ä´æÆ÷Ö¸¶¨´íÎó ×ÜÊÇ1 ²»Ðèд½á¹ûµ½¼Ä´æÆ÷µÄÖ¸Áî¿ÉÄÜ»á³ö´í£¨Èçstore,·ÖÖ§,×ªÒÆÖ¸ÁîµÈ£© ËùÓзÇR-TypeÖ¸Áî¶¼²»ÄÜÕýÈ·Ö´ÐÐ RegDst Branch MemWr ExtOp BranchÖ¸Áî¿ÉÄܳö´í£¬ÒòΪÓÀÔ¶²»»á·¢Éú×ªÒÆ ·ÇBranchÖ¸Áî¶¼³ö´í,ÒòΪÏÂÌõÖ¸ÁîµÄµØÖ·¼ÆËã´íÎó StoreÖ¸Áî²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪ´æ´¢Æ÷²»ÄÜдÈëËùÐèÊý¾Ý ·ÇStoreÖ¸Áî¶¼»á³ö´í,ÒòΪ´æ´¢Æ÷ÄÚ»áдÈë´íÎóÊý¾Ý ÐèÒª·ûºÅÀ©Õ¹µÄÖ¸ÁÈçBeq¡¢lw/sw,addiuµÈ£©±ØÐë0À©Õ¹µÄÖ¸Áî»á³ö´í(±ÈÈçori) ·¢Éú´íÎó 7. ¼Ù¶¨Í¼6.24µ¥ÖÜÆÚÊý¾Ýͨ·¶ÔÓ¦µÄ¿ØÖÆÂß¼·¢Éú´íÎó£¬Ê¹µÃÔÚÈκÎÇé¿öÏ¿ØÖÆÐźÅRegWr¡¢RegDst¡¢Branch¡¢MemWr¡¢ExtOp¡¢R-type×ÜÊÇΪ1£¬ÔòÄÄЩָÁî²»ÄÜÕýÈ·Ö´ÐУ¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º¼ûµÚ6ÌâµÄ±í¸ñ. 8. ÔÚMIPSÖ¸ÁÖÐÐèÒªÔö¼ÓÒ»ÌõswapÖ¸Á¿ÉÒÔʹÓÃÈí¼þ·½Ê½ÓÃÈô¸ÉÌõÒÑÓÐÖ¸ÁîÀ´ÊµÏÖαָÁҲ¿ÉÒÔͨ¹ý¸Ä¶¯Ó²¼þÀ´ÊµÏÖ¡£ £¨1£©Ð´³öÓÃαָÁʽʵÏÖ¡°swap $rs, $rt¡±Ê±µÄÖ¸ÁîÐòÁÐ £¨2£©¼Ù¶¨ÓÃÓ²¼þʵÏÖʱ»áʹһÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äÔö¼Ó10%£¬ÔòswapÖ¸ÁîÔÚ³ÌÐòÖÐÕ¼¶à´óµÄ±ÈÀý²ÅÖµµÃÓÃÓ²¼þ·½Ê½À´ÊµÏÖ£¿ ²Î¿¼´ð°¸£º £¨1£© swapÖ¸Áî¿ÉÓÃÒÔÏÂÈýÌõÖ¸ÁîʵÏÖ¡£ xor $rs, $rs, $rt xor $rt, $rs, $rt xor $rs, $rs, $rt £¨ÈôʹÓöîÍâ¼Ä´æÆ÷$rtemp£¬Ôò$rtempÄÚÈÝ»á±»ÆÆ»µ£¬ËùÒÔαָÁîÒ»°ã²»ÄÜÓöîÍâ¼Ä´æÆ÷£© add $rtemp, $rs, $zero add $rs, $rt, $zero add $rt, $rtemp, $zero £¨ÈôʹÓüӼõ·¨,£¬¿ÉÄÜÒç³ö¡£ÈçʹÓÃÎÞ·ûºÅÊý¼Ó¼õ·¨addu,subuÒ²¿ÉÒÔ£© add $rs, $rs, $rt sub $rt, $rs, $rt add $rs, $rs, $rt £¨2£©¼Ù¶¨¸ÃÖ¸ÁîÕ¼x%£¬ÆäËûÖ¸ÁîÕ¼(1-x)% ÔòÓÃÓ²¼þʵÏÖ¸ÃÖ¸Áîʱ, ³ÌÐòÖ´ÐÐʱ¼äΪÔÀ´µÄ1.1*(x+1-x) =1.1 ±¶ ÓÃÈí¼þʵÏÖ¸ÃÖ¸Áîʱ£¬³ÌÐòÖ´ÐÐʱ¼äΪÔÀ´µÄ3x+1-x =£¨2x+1£©±¶ µ±1.1 < 2x+1 ʱ£¬Ó²¼þʵÏÖ²ÅÓÐÒâÒå ÓÉ´Ë¿ÉÖª£¬x > 5% 9. ¼Ù¶¨Í¼6.33¶àÖÜÆÚÊý¾Ýͨ·¶ÔÓ¦µÄ¿ØÖÆÂß¼·¢Éú´íÎó£¬Ê¹µÃÔÚÈκÎÇé¿öÏ¿ØÖÆÐźÅPCWr¡¢IRWr¡¢RegWr¡¢BrWr¡¢PCSource¡¢MemWr¡¢MemtoReg¡¢PCWrCond¡¢R-type×ÜÊÇΪ0£¬ÔòÄÄЩָÁî²»ÄÜÕýÈ·Ö´ÐУ¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º ÈôPCWr=0£¬ÔòËùÓÐÖ¸Áî¶¼²»ÕýÈ·£¬ÒòΪÎÞ·¨¸üÐÂPC ÈôIRWr=0£¬ÔòËùÓÐÖ¸Áî¶¼²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪIRÖв»ÄÜдÈëÖ¸Áî ÈôRegWr=0£¬ÔòËùÓÐÐèҪд½á¹ûµ½¼Ä´æÆ÷µÄÖ¸ÁÈ磺R-TypeÖ¸Áî¡¢loadÖ¸ÁîµÈ£©¶¼ ²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪ¼Ä´æÆ÷²»·¢Éúд²Ù×÷ ÈôBrWr=0£¬ÔòBranchÖ¸Áî²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪͶ»ú¼ÆËãµÄ·ÖÖ§µØÖ·ÎÞ·¨ËÍÈë¼Ä´æÆ÷ ÈôPCSource=00£¬Ôò³ýjÖ®ÍâµÄÆäËûÖ¸Áî¶¼²»ÄÜÕýÈ·µÃµ½ÏÂÌõÖ¸ÁîµØÖ· ÈôMemWr=0£¬ÔòStoreÖ¸Áî²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪ´æ´¢Æ÷²»ÄÜдÈëÊý¾Ý ÈôMemtoReg=0£¬ÔòËùÓÐLoadÖ¸ÁîÖ´ÐдíÎó£¬ÒòΪ¼Ä´æÆ÷дÈëµÄÊÇALUÊä³ö ÈôPCWrCond=0£¬ÔòBranchÖ¸Áî²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪ²»ÄÜдÈë×ªÒÆÄ¿±êµØÖ·µ½PC ÈôR-type=0£¬ÔòËùÓÐR-typeÖ¸ÁîµÄÖ´ÐпÉÄܳö´í 10. ¼Ù¶¨P.185ͼ6.32¶àÖÜÆÚÊý¾Ýͨ·¶ÔÓ¦µÄ¿ØÖÆÂß¼·¢Éú´íÎó£¬Ê¹µÃÔÚÈκÎÇé¿öÏ¿ØÖÆÐźÅPCWr¡¢IRWr¡¢RegWr¡¢BrWr¡¢PCSource¡¢MemWr¡¢MemtoReg¡¢PCWrCond¡¢R-type×ÜÊÇΪ1£¬ÔòÄÄЩָÁî²»ÄÜÕýÈ·Ö´ÐУ¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º ÈôPCWr=1£¬Ôò³ÌÐòÖ´ÐÐ˳Ðòʧ¿Ø£¬ÒòΪÿ¸öʱÖÓ¶¼»á¸üÐÂPC ÈôIRWr=1£¬ÔòËùÓÐÖ¸Áî¶¼¿ÉÄܲ»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪдÈëIRµÄ¿ÉÄܲ»Êǵ±Ç°Ö¸Áî ÈôRegWr=1£¬ÔòËùÓв»Ðèд½á¹ûµ½¼Ä´æÆ÷µÄÖ¸ÁÈ磺sw¡¢beqµÈ£©¶¼²»ÄÜÕýÈ·Ö´ÐÐ ÈôBrWr=1£¬ÔòBranchÖ¸Áî²»ÄÜÕýÈ·Ö´ÐУ¬ÒòΪÔËËã½×¶ÎµÄALUÊä³öÒ²»á·ÅÈë¼Ä´æÆ÷£¬³ÉΪ´íÎóµÄ·ÖÖ§×ªÒÆÄ¿±êµØÖ·¡£ ÈôPCSource=01£¬ÔòjºÍBranchÖ¸Áî²»ÄÜÕýÈ·µÃµ½ÏÂÌõÖ¸ÁîµØÖ· ÈôMemWr=1£¬Ôò³ýStoreÖ¸ÁîÍâµÄËùÓÐÖ¸Áî¶¼²»ÄÜÕýÈ·Ö´ÐÐ ÈôMemtoReg=1£¬Ôò³ýLoadÍâµÄËùÓÐÖ¸ÁîÖ´ÐдíÎó ÈôPCWrCond=1£¬Ôò³ýBranchÍâµÄÆäËûÖ¸Áî¿ÉÄܲ»ÄÜÕýÈ·Ö´ÐÐ ÈôR-type=1£¬ÔòËùÓзÇR-typeÖ¸ÁîµÄÖ´ÐпÉÄܳö´í 12. ¼Ù¶¨Ä³¼ÆËã»ú×Ö³¤16룬±êÖ¾¼Ä´æÆ÷FlagÖеÄZF¡¢NFºÍVF·Ö±ðÊÇÁã¡¢¸ººÍÒç³ö±êÖ¾£¬²ÉÓÃË«×Ö½Ú¶¨³¤Ö¸Áî×Ö¡£¼Ù¶¨Bgt (´óÓÚÁã×ªÒÆ)Ö¸ÁîµÄµÚÒ»¸ö×Ö½ÚÖ¸Ã÷²Ù×÷ÂëºÍѰַ·½Ê½£¬µÚ¶þ¸ö×Ö½ÚÎªÆ«ÒÆµØÖ·Imm8£¬Æä¹¦ÄÜÊÇ£º Èô(ZF+(NF¨’VF)=0) Ôò PC=PC+2+Imm8 ·ñÔò PC=PC+2 £¨1£© ¸Ã¼ÆËã»úµÄ±àÖ·µ¥Î»ÊÇʲô£¿ £¨2£© »³öʵÏÖBgtÖ¸ÁîµÄÊý¾Ýͨ·¡£ ²Î¿¼´ð°¸£º £¨1£©¸Ã¼ÆËã»úµÄ±àÖ·µ¥Î»ÊÇ×Ö½Ú¡£ ÒòΪPCµÄÔöÁ¿ÊÇ2£¬ÇÒÿÌõÖ¸ÁîÕ¼2¸ö×Ö½Ú£¬ËùÒÔ±àÖ·µ¥Î»ÊÇ×Ö½Ú¡£ £¨2£©ÊµÏÖBgtÖ¸ÁîµÄÊý¾Ýͨ·ÈçÏ ¸ù¾Ý¡°´óÓÚ¡±Ìõ¼þÅжϱí´ïʽ£¬¿ÉÒÔ¿´³ö¸ÃbgtÖ¸ÁîʵÏÖµÄÊÇ´ø·ûºÅÕûÊý±È½Ï¡£ÒòΪÎÞ·ûºÅÊý±È½Ïʱ£¬ÆäÅжϱí´ïʽÖÐûÓÐÒç³ö±êÖ¾OF¡£Æ«ÒƵØÖ·Imm8Ϊ²¹Âë±íʾ£¬×ªÒÆÄ¿±êµØÖ·¿ÉÄÜÔÚbgtÖ¸Áî֮ǰ£¬Ò²¿ÉÄÜÔÚbgtÖ¸ÁîÖ®ºó¡£¼ÆËã×ªÒÆÄ¿±êµØÖ·Ê±£¬Æ«ÒÆÁ¿ÎªImm8, ·¶Î§Îª-128¡«127£¬¹Ê×ªÒÆÄ¿±êµØÖ·µÄ·¶Î§ÊÇPC+2+(-128)¡«PC+2+127 Èç¹ûÆ«ÒÆÁ¿ÎªImm8x2, ×ªÒÆÄ¿±êµØÖ·µÄ·¶Î§ÊÇPC+2+(-128¡Á2)¡«PC+2+127¡Á2£¬ÆäʵÒâζ×ÅÏà¶ÔÓÚbgtÖ¸ÁîµÄǰ127ÌõÖ¸Áîµ½ºó128ÌõÖ¸ÁîÖ®¼ä¡£ IR OP MOD Imm8 PC +2 ZF NF VF 1 0 Bgt 13. ¶ÔÓÚ¶àÖÜÆÚMIPS´¦ÀíÆ÷£¬¼Ù¶¨½«·ÃÎÊÊý¾ÝµÄ¹ý³Ì·Ö³ÉÁ½¸öʱÖÓÖÜÆÚ¿ÉʹʱÖÓÆµÂÊ´Ó4.8GHzÌá¸ßµ½ 5.6GHz£¬µ«»áʹµÃlwºÍswÖ¸ÁîÔö¼ÓʱÖÓÖÜÆÚÊý¡£ÒÑÖª»ù×¼³ÌÐòCPUint 2000Öи÷ÀàÖ¸ÁîµÄƵÂÊΪ£ºLoad: 25%£¬Store:10%£¬Branch: 11%£¬Jump:2%£¬ALU: 52%¡£ÒÔ»ù×¼³ÌÐòCPUint 2000Ϊ±ê×¼¼ÆËãʱÖÓÆµÂÊÌá¸ßºó´¦ÀíÆ÷µÄÐÔÄÜÌá¸ßÁ˶àÉÙ£¿Èô½«È¡Ö¸Áî¹ý³ÌÔÙ·Ö³ÉÁ½¸öʱÖÓÖÜÆÚ£¬Ôò¿É½øÒ»²½Ê¹Ê±ÖÓÆµÂÊÌá¸ßµ½6.4GHz£¬´Ëʱ£¬Ê±ÖÓÆµÂʵÄÌá¸ßÊÇ·ñÒ²ÄÜ´øÀ´´¦ÀíÆ÷ÐÔÄܵÄÌá¸ß£¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º ÈýÖÖÆµÂʵĻúÆ÷ÉÏ£¬¸÷ÀàÖ¸ÁîµÄ°Ù·Ö±ÈºÍ CPI M1 4.8GHz M2 5.6GHz M3 6.4GHz Load 25% 5 6 7 Store 10% 4 5 6 Branch 11% 3 3 4 Jump 2% 3 3 4 ALU 52% 4 4 5 ÈýÖÖ»úÆ÷µÄƽ¾ùCPIºÍMIPS CPIofM1=25%x5+10%x4+11%x3+2%x3+52%x4=4.12 CPIofM2=25%x6+10%x5+11%x3+2%x3+52%x4=4.47 CPIofM3=25%x7+10%x6+11%x4+2%x4+52%x5=5.47 MIPSofM1=4.8G / 4.12 =1165 MIPSofM2=5.6G / 4.47 = 1253 MIPSofM3=6.4 G / 5.47 = 1170 Óɴ˿ɼû£¬Êý¾Ý´æÈ¡¸ÄΪ˫ÖÜÆÚµÄ×ö·¨Ð§¹û½ÏºÃ¡£½øÒ»²½°ÑȡָÁî¸ÄΪ˫ÖÜÆÚµÄ×ö·¨·´¶øÊ¹MIPSÊý±äСÁË£¬ËùÒÔ²»¿ÉÈ¡¡£ÒòΪÊý¾Ý´æÈ¡Ö»Éæ¼°µ½load/StoreÖ¸Á¶øÖ¸Áî´æÈ¡Éæ¼°µ½ËùÓÐÖ¸ÁʹµÃCPIÏÔÖøÌá¸ß¡£ 15. ΢³ÌÐò¿ØÖÆÆ÷ÈÝÁ¿Îª1024¡Á48λ£¬Î¢³ÌÐò¿ÉÔÚÕû¸ö¿Ø´æÄÚʵÏÖ×ªÒÆ£¬·´Ó³ËùÓÐÖ¸ÁîÖ´ÐÐ״̬ת»»µÄÓÐ ÏÞ״̬»úÖÐÓÐ4¸ö·ÖÖ§µã£¬Î¢Ö¸Áî²ÉÓÃˮƽ¸ñʽ£¬Î¢µØÖ·ÓÉרÃŵÄϵØÖ·×Ö¶ÎÈ·¶¨¡£ÇëÉè¼ÆÎ¢Ö¸ÁîµÄ¸ñʽ£¬ËµÃ÷¸÷×Ö¶ÎÓжàÉÙλ£¿ÎªÊ²Ã´£¿ ²Î¿¼´ð°¸£º ΢³ÌÐò¿ØÖÆÆ÷ÈÝÁ¿Îª1024¡Á48λ£¬ËµÃ÷΢µØÖ·Õ¼10λ£¬Î¢Ö¸Áî×Ö¹²48룬ÆäÖÐ10λϵØÖ·×Ö¶ÎÓÃÀ´¸ø³öÏ Ìõ΢µØÖ·£»×ªÒÆ¿ØÖÆ×Ö¶ÎÐèÒª¶Ô5ÖÖÇé¿ö½øÐпØÖÆ£¬Ðè3λ¡£ÀýÈ磬 000£ºÈ¡Ö¸Áî΢ָÁîÊ×µØÖ· 100£º¸ù¾Ý·ÖÖ§1´¦µÄÌõ¼þÑ¡ÔñÏÂÌõ΢µØÖ· 101£º¸ù¾Ý·ÖÖ§2´¦µÄÌõ¼þÑ¡ÔñÏÂÌõ΢µØÖ· 110£º¸ù¾Ý·ÖÖ§3´¦µÄÌõ¼þÑ¡ÔñÏÂÌõ΢µØÖ· 111£º¸ù¾Ý·ÖÖ§4´¦µÄÌõ¼þÑ¡ÔñÏÂÌõ΢µØÖ· ʣϵÄ48-10-3=35λÓÃÀ´±íʾ΢²Ù×÷Âë×ֶΡ£ £¨Èç¹û²ÉÓüÆÊýÆ÷·¨£¬Ôò×ªÒÆ¿ØÖÆ×Ö¶ÎÐèÒª¶Ô6ÖÖÇé¿ö½øÐпØÖÆ£¬±ÈÉÏÊö5ÖÖÇé¿ö¶àÒ»ÖÖ£º¼´Ë³ÐòÖ´ÐÐÏÂÌõ΢ָÁ´Ëʱ£¬Ò²Òª3λ¡££© Ò²¿ÉÒÔÓÃ5λ×÷Îª×ªÒÆ¿ØÖÆ×Ö¶Î, 33λ×÷Ϊ΢²Ù×÷Âë×Ö¶Î 00001£¬00010,00100,01000,10000 ------------------ÆäËü 16. ¶ÔÓÚ¶àÖÜÆÚCPUµÄÒì³£ºÍÖжϴ¦Àí£¬»Ø´ðÒÔÏÂÎÊÌ⣺ £¨1£©¶ÔÓÚ³ýÊýΪ0¡¢Òç³ö¡¢ÎÞЧָÁî²Ù×÷Âë¡¢ÎÞЧָÁîµØÖ·¡¢ÎÞЧÊý¾ÝµØÖ·¡¢È±Ò³¡¢·ÃÎÊԽȨºÍÍⲿ Öжϣ¬ CPUÔÚÄÄЩָÁîµÄÄĸöʱÖÓÖÜÆÚÄÜ·Ö±ð¼ì²âµ½ÕâЩÒì³£»òÖжϣ¿ £¨2£©ÔÚ¼ì²âµ½Ä³¸öÒì³£»òÖжϺó£¬CPUͨ³£ÒªÍê³ÉÄÄЩ¹¤×÷£¿¼òҪ˵Ã÷CPUÈçºÎÍê³ÉÕâЩ¹¤×÷£¿ £¨3£©TLBȱʧºÍcacheȱʧ¸÷ÔÚÄĸöÖ¸ÁîµÄÄĸöʱÖÓÖÜÆÚ±»¼ì²âµ½£¿Èç¹û¼ì²âµ½·¢ÉúÁËTLBȱʧºÍ cacheȱʧ£¬ÄÇô£¬CPU¸÷ÒªÍê³ÉÄÄЩ¹¤×÷£¿¼òҪ˵Ã÷CPUÈçºÎÍê³ÉÕâЩ¹¤×÷£¿£¨Ìáʾ£ºTLBȱʧ¿ÉÒÔÓÐÈí¼þºÍÓ²¼þÁ½ÖÖ´¦Àí·½Ê½¡££© ²¿·Ö²Î¿¼´ð°¸£º a. ¡°³ýÊýΪ0¡±Òì³£ÔÚÈ¡Êý/ÒëÂë(ID/Reg)ÖÜÆÚ½øÐмì²â b. ¡°Òç³ö¡±Òì³£ÔÚR-TypeÖ¸ÁîµÄÖ´ÐÐ(Exe)ÖÜÆÚ½øÐмì²â c. ¡°ÎÞЧָÁÒì³£ÔÚÈ¡Êý/ÒëÂë(ID/Reg)ÖÜÆÚ½øÐмì²â d. ¡°ÎÞЧָÁîµØÖ·¡±¡¢¡°È±Ò³¡±ºÍ¡°·ÃÎÊԽȨ¡±Òì³£ÔÚȡָÁî(IF)ÖÜÆÚ¼ì²â e. ¡°ÎÞЧÊý¾ÝµØÖ·¡±¡¢¡°È±Ò³¡±ºÍ¡°·ÃÎÊԽȨ¡±Òì³£ÔÚ´æ´¢Æ÷·ÃÎÊ£¨Mem£©ÖÜÆÚ¼ì²â f. ¡°Öжϡ±¿ÉÔÚÿÌõÖ¸ÁîµÄ×îºóÒ»¸öÖÜÆÚ(WB)µÄ×îºó½øÐмì²â 11. ¼Ù¶¨ÓÐÒ»ÌõMIPSαָÁî¡°Bcmp $t1, $t2, $t3¡±£¬Æä¹¦ÄÜÊÇʵÏÖ¶ÔÁ½¸öÖ÷´æ¿éÊý¾ÝµÄ±È½Ï£¬$t1ºÍ$t2ÖÐ ·Ö±ð´æ·ÅÁ½¸öÖ÷´æ¿éµÄÊ×µØÖ·£¬$t3Öдæ·ÅÊý¾Ý¿éµÄ³¤¶È£¬Ã¿¸öÊý¾ÝÕ¼Ëĸö×Ö½Ú£¬ÈôËùÓÐÊý¾Ý¶¼ÏàµÈ£¬Ôò½«0ÖÃÈë$t1£»·ñÔò£¬½«µÚÒ»´Î³öÏÖ²»ÏàµÈʱµÄµØÖ··Ö±ðÖÃÈë$t1ºÍ$t2²¢½áÊø±È½Ï¡£Èô$t4ºÍ$t5ÊÇÁ½¸ö¿ÕÏмĴæÆ÷£¬Çë¸ø³öʵÏÖ¸ÃαָÁîµÄÖ¸ÁîÐòÁУ¬²¢ËµÃ÷ÔÚÀàËÆÓÚP.185ͼ6.32µÄ¶àÖÜÆÚÊý¾Ýͨ·ÖÐÖ´ÐиÃαָÁîʱҪÓöàÉÙʱÖÓÖÜÆÚ¡£ ²Î¿¼´ð°¸£º £¨1£©ÊµÏÖαָÁî¡°bcmp $t1, $t2, $t3¡±µÄÖ¸ÁîÐòÁÐÈçÏ¡£ beq $t3, $zero, done lw $t4, 0($t1) lw $t5, 0($t2) # ÈôÊý¾Ý¿é³¤¶ÈΪ0£¬Ôò½áÊø # ¿é1µÄµ±Ç°Êý¾ÝÈ¡µ½$t4 # ¿é2µÄµ±Ç°Êý¾ÝÈ¡µ½$t5 # $t4ºÍ$t5µÄÄÚÈݲ»µÈ£¬Ôò½áÊø # ¿é1Öеĵ±Ç°Êý¾ÝÖ¸ÏòÏÂÒ»¸ö # ¿é2Öеĵ±Ç°Êý¾ÝÖ¸ÏòÏÂÒ»¸ö # ±È½Ï´ÎÊý¼õ1 compare: bne $t4, $t5, done addi $t1, $t1, 4 addi $t2, $t2, 4 addi $t3, $t3, -1 bne $t3, $zero, compare # ÈôûÓÐÈ«²¿±È½ÏÍ꣬Ôò¼ÌÐø±È½Ï addi $t1, $zero, 0 # ÈôÈ«²¿¶¼ÏàµÈ£¬Ôò½«$t1ÖÃ0 done: £¨2£©ÔÚ¶àÖÜÆÚÊý¾Ýͨ·ִÐÐʱ£¬ÉÏÊö³ÌÐò¶ÎÖÐÓõ½µÄÖ¸Áîbeq¡¢lw¡¢bneºÍaddiµÄʱÖÓÖÜÆÚÊý·Ö±ðΪ3¡¢5¡¢3ºÍ4¡£Èô±È½ÏµÄÊý¾Ý¿é´óСΪ50¸ö×Ö£¬ÔòÉÏÊöÖ¸ÁîÐòÁÐÖеÄÑ»·£¨´ÖÌ岿·Ö£©×î¶à±»Ö´ÐÐ50´Î£¬Òò¶øËùÐèµÄÖ¸ÁîÊý×î¶àΪ1+50¡Á7+1=352¡£ÆäÖУ¬loadÖ¸ÁîΪ50¡Á2=100Ìõ£¬Ê±ÖÓÖÜÆÚÊýΪ5¡Á100=500£»branchÖ¸ÁîÊýΪ1+2¡Á50=101£¬Ê±ÖÓÖÜÆÚÊýΪ3¡Á101=303£»addiÖ¸ÁîÊýΪ1+3¡Á50=151£¬Ê±ÖÓÖÜÆÚÊýΪ4¡Á151=604¡£ËùÒÔ£¬×ÜʱÖÓÖÜÆÚÊý×î¶àΪ500+303+604=1407¡£ ϰÌâ 1£® ¸ø³öÒÔϸÅÄîµÄ½âÊÍ˵Ã÷¡£ Ö¸ÁîÁ÷Ë®Ïߣ¨Instruction pipelining£© Ö¸ÁîÍÌÍÂÁ¿£¨Instruction throughput£© ½á¹¹Ã°ÏÕ£¨Structural hazard£© Êý¾ÝðÏÕ£¨Data hazard£© ÆøÅÝ£¨Bubble£© Á÷Ë®ÏßÉî¶È£¨Pipeline Depth£© Á÷Ë®ÏßðÏÕ£¨Hazard£© ¿ØÖÆÃ°ÏÕ£¨Control hazard£© Á÷Ë®Ïß×èÈû£¨Pipeline stall£© ¿Õ²Ù×÷£¨nop£© ·ÖÖ§Ô¤²â£¨Branch predict£© ¶¯Ì¬·ÖÖ§Ô¤²â£¨Dynamic predict£© ·ÖÖ§Ìõ¼þÂú×㣨Branch taken£© ¾²Ì¬·ÖÖ§Ô¤²â£¨Static predict£© ÑÓ³Ù·ÖÖ§£¨Delayed branch£© ת·¢£¨Forwarding£© ·ÖÖ§ÑÓ³Ù²Û£¨Delayed branch slot£© ÅÔ·£¨Bypassing£© IPC£¨Instructions Per Cycle£© Á÷Ë®¶Î¼Ä´æÆ÷£¨Pipeline register£©