¼ÆËã»ú×éÖ¯Óëϵͳ½á¹¹µÚÆßÕÂϰÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

ϰÌâ

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£©

¶¯Ì¬¶à·¢É䣨Dynamic multiple issue£© ³¬³¤Ö¸Áî×ÖVLIW

Á÷Ë®¶Î¼Ä´æÆ÷£¨Pipeline register£© ¾²Ì¬¶à·¢É䣨Static multiple issue£© ³¬Á÷Ë®Ïߣ¨Superpipelining£© ³¬±êÁ¿Á÷Ë®Ïߣ¨Superscalar£©

¶¯Ì¬Á÷Ë®Ïߣ¨Dynamic pipelining£© Ö¸Áî·Ö·¢£¨Instruction dispatch£© ÎÞÐò·¢É䣨out-of-order issue£© ÖØÅÅÐò»º³å£¨Reorder buffer£© ÂÒÐòÖ´ÐУ¨out-of-order execution£© ÎÞÐòÍê³É£¨out-of-order completion£©

Ö¸ÁîԤȡ£¨Instruction prefetch£© °´Ðò·¢É䣨in-order issue£©

´æ´¢Õ¾£¨Reservation station£©

Ö¸ÁîÌá½»µ¥Ôª£¨Instruction commit unit£© °´ÐòÍê³É£¨in-order completion£© 2. ¼òµ¥»Ø´ðÏÂÁÐÎÊÌâ¡£

£¨1£©Á÷Ë®Ïß·½Ê½Ï£¬Ò»ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äËõ¶ÌÁË»¹ÊǼӳ¤ÁË£¿³ÌÐòµÄÖ´ÐÐʱ¼äËõ¶ÌÁË»¹ÊÇ

¼Ó³¤ÁË£¿ÎªÊ²Ã´£¿

£¨2£©¾ßÓÐÊ²Ã´ÌØÕ÷µÄÖ¸ÁÒ×ÓÚʵÏÖÖ¸ÁîÁ÷Ë®Ïߣ¿

£¨3£©Á÷Ë®Ïß´¦ÀíÆ÷ÖÐʱÖÓÖÜÆÚÈçºÎÈ·¶¨£¿µ¥ÌõÁ÷Ë®Ïß´¦ÀíÆ÷µÄCPIΪ¶àÉÙ£¿Ã¿¸öʱÖÓÖÜÆÚ

Ò»¶¨ÓÐÒ»ÌõÖ¸ÁîÍê³ÉÂð£¿ÎªÊ²Ã´£¿

£¨4£©Á÷Ë®Ïß´¦ÀíÆ÷µÄ¿ØÖÆÆ÷ʵÏÖ·½Ê½¸üÀàËÆÓÚµ¥ÖÜÆÚ¿ØÖÆÆ÷»¹ÊǶàÖÜÆÚ¿ØÖÆÆ÷£¿ £¨5£©ÎªÊ²Ã´ÒªÔÚ¸÷Á÷Ë®¶ÎÖ®¼ä¼Ó¼Ä´æÆ÷£¿¸÷Á÷Ë®¶Î¼Ä´æÆ÷µÄ¿í¶ÈÊÇ·ñ¶¼Ò»Ñù£¿ÎªÊ²Ã´£¿ £¨6£©ÄãÄÜÁгöÄļ¸ÖÖÁ÷Ë®Ïß±»×èÈûµÄÇé¿ö£¿ÄãÖªµÀÓ²¼þºÍÈí¼þÊÇÈçºÎ´¦ÀíËüÃǵÄÂ𣿠£¨7£©³¬Á÷Ë®ÏߺͶ෢ÉäÁ÷Ë®ÏßµÄÖ÷񻂿±ðÊÇʲô£¿

£¨8£©¾²Ì¬¶à·¢ÉäÁ÷Ë®ÏߺͶ¯Ì¬¶à·¢ÉäÁ÷Ë®ÏßµÄÖ÷񻂿±ðÊÇʲô£¿ £¨9£©ÎªÊ²Ã´ËµPentium 4ÊÇ¡°CISC¿Ç¡¢RISCºË¡±µÄÌåϵ½á¹¹£¿

? 156 ?

3. ¼Ù¶¨ÔÚÒ»¸öÎå¼¶Á÷Ë®Ïߣ¨Èçͼ7.5Ëùʾ£©´¦ÀíÆ÷ÖУ¬¸÷Ö÷Òª¹¦Äܵ¥ÔªµÄ²Ù×÷ʱ¼äΪ£º´æ´¢

µ¥Ôª£º200ps£»ALUºÍ¼Ó·¨Æ÷£º150ps£»¼Ä´æÆ÷¶Ñ¶Á¿Ú»òд¿Ú£º50ps¡£ÇëÎÊ£º

£¨1£©ÈôÖ´Ðн׶ÎEXËùÓõÄALU²Ù×÷ʱ¼äËõ¶Ì20%£¬ÔòÄÜ·ñ¼Ó¿ìÁ÷Ë®ÏßÖ´ÐÐËÙ¶È£¿Èç¹ûÄܵϰ£¬Äܼӿì¶àÉÙ£¿Èç¹û²»Äܵϰ£¬ÎªÊ²Ã´£¿

£¨2£©ÈôALU²Ù×÷ʱ¼äÔö¼Ó20%£¬¶ÔÁ÷Ë®ÏßµÄÐÔÄÜÓкÎÓ°Ï죿 £¨3£©ÈôALU²Ù×÷ʱ¼äÔö¼Ó40%£¬¶ÔÁ÷Ë®ÏßµÄÐÔÄÜÓкÎÓ°Ï죿 ²Î¿¼´ð°¸£º

a. ALU²Ù×÷ʱ¼äËõ¶Ì20%²»ÄܼӿìÁ÷Ë®ÏßÖ¸ÁîËÙ¶È¡£ÒòΪ´æ´¢µ¥ÔªµÄʱ¼äΪ200ps£¬ËùÒÔÁ÷Ë®ÏßµÄʱÖÓÖÜÆÚ²»»áÒòΪALU²Ù×÷ʱ¼äµÄËõ¶Ì¶ø±ä¶Ì¡£

b. ALU²Ù×÷ʱ¼äÑÓ³¤20%ʱ£¬±äΪ180ps£¬±È200psС£¬¶ÔÁ÷Ë®ÏßÐÔÄÜûÓÐÓ°Ï죻 c. ALU²Ù×÷ʱ¼äÑÓ³¤40%ʱ£¬±äΪ210ps£¬±È200ps´ó£¬ËùÒÔ£¬Á÷Ë®ÏßµÄʱÖÓÖÜÆÚ½«±äΪ210£¬ÆäЧÂʽµµÍÁË£¨210-200)/200=5%¡£

4. ¼Ù¶¨Ä³¼ÆËã»ú¹¤³ÌʦÏëÉè¼ÆÒ»¸öÐÂCPU£¬Ò»¸öµäÐͳÌÐòµÄºËÐÄÄ£¿éÓÐÒ»°ÙÍòÌõÖ¸ÁÿÌõ

Ö¸ÁîÖ´ÐÐʱ¼äΪ100ps¡£ÇëÎÊ£º

£¨1£©ÔÚ·ÇÁ÷Ë®Ïß´¦ÀíÆ÷ÉÏÖ´ÐиóÌÐòÐèÒª»¨¶à³¤Ê±¼ä£¿

£¨2£©ÈôÐÂCPUÊÇÒ»¸ö20¼¶Á÷Ë®Ïß´¦ÀíÆ÷£¬Ö´ÐÐÉÏÊöͬÑùµÄ³ÌÐò£¬ÀíÏëÇé¿öÏ£¬Ëü±È·ÇÁ÷

Ë®Ïß´¦ÀíÆ÷¿ì¶àÉÙ£¿

£¨3£©Êµ¼ÊÁ÷Ë®Ïß²¢²»ÊÇÀíÏëµÄ£¬Á÷Ë®¶Î¼äÊý¾Ý´«ËÍ»áÓжîÍ⿪Ïú¡£ÕâЩ¿ªÏúÊÇ·ñ»áÓ°ÏìÖ¸

ÁîÖ´ÐÐʱ¼ä£¨Instruction latency£©ºÍÖ¸ÁîÍÌÍÂÂÊ£¨Instruction throughput£©£¿ ²Î¿¼´ð°¸£º

£¨1£©·ÇÁ÷Ë®Ïß´¦ÀíÆ÷ÉÏÖ´ÐиóÌÐòµÄʱ¼äΪ£º100ps x 106=100¦Ìs.

£¨2£©ÈôÔÚÒ»¸ö20¼¶Á÷Ë®ÏߵĴ¦ÀíÆ÷ÉÏÖ´ÐУ¬ÀíÏëÇé¿öÏ£¬Ã¿¸öʱÖÓÖÜÆÚΪ£º100/20=5ps£¬

ËùÒÔ£¬³ÌÐòÖ´ÐÐʱ¼äԼΪ5 x 106=5¦Ìs. ¿ì100/5=20±¶¡£

£¨3£©Á÷Ë®Ïß¶ÎÖ®¼äÊý¾ÝµÄ´«µÝ²úÉúµÄ¶îÍ⿪Ïú£¬Ê¹µÃÒ»ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼ä±»ÑÓ³¤£¬¼´Ó°

Ïì Instruction latency£»Í¬Ê±Ò²À­³¤ÁËÿ¸öÁ÷Ë®¶ÎµÄÖ´ÐÐʱ¼ä£¬¼´Ó°Ïì Instruction throughput¡£ »¹ÓÐʲô²»ÀíÏëµÄÒòËØ£¿ ¡ª¡ªÊ±ÖÓÖÜÆÚ²»»áÊÇ5us ¡ª¡ª¿ÉÄÜ·¢Éú×èÈûµÈ

? 157 ?

5. ¼Ù¶¨×ÔÓµÄÒ»ÌõÖ¸ÁîËùÓõÄ×éºÏÂß¼­·Ö³É6¿é£¬ÒÀ´ÎΪA~F£¬ÆäÑÓ³Ù·Ö±ðΪ80ps¡¢30ps¡¢

60ps¡¢50ps¡¢70ps¡¢10ps¡£ÔÚÕâЩ×éºÏÂß¼­¿éÖ®¼ä²åÈë±ØÒªµÄÁ÷Ë®¶Î¼Ä´æÆ÷¾Í¿ÉʵÏÖÏàÓ¦µÄÖ¸ÁîÁ÷Ë®Ïߣ¬¼Ä´æÆ÷ÑÓ³ÙΪ20ps¡£ÀíÏëÇé¿öÏ£¬ÒÔϸ÷ÖÖ·½Ê½ËùµÃµ½µÄʱÖÓÖÜÆÚ¡¢Ö¸ÁîÍÌÍÂÂʺÍÖ¸ÁîÖ´ÐÐʱ¼ä¸÷ÊǶàÉÙ£¿Ó¦¸ÃÔÚÄÄÀï²åÈëÁ÷Ë®Ï߼ĴæÆ÷£¿ £¨1£©²åÈëÒ»¸öÁ÷Ë®¶Î¼Ä´æÆ÷£¬µÃµ½Ò»¸öÁ½¼¶Á÷Ë®Ïß £¨2£©²åÈëÁ½¸öÁ÷Ë®¶Î¼Ä´æÆ÷£¬µÃµ½Ò»¸öÈý¼¶Á÷Ë®Ïß £¨3£©²åÈëÈý¸öÁ÷Ë®¶Î¼Ä´æÆ÷£¬µÃµ½Ò»¸öËļ¶Á÷Ë®Ïß £¨4£©ÍÌÍÂÁ¿×î´óµÄÁ÷Ë®Ïß ²Î¿¼´ð°¸£º

£¨1£©Á½¼¶Á÷Ë®Ïߵį½ºâµãÔÚCºÍDÖ®¼ä£¬ÆäÇ°ÃæÒ»¸öÁ÷Ë®¶ÎµÄ×éºÏÂß¼­ÑÓʱΪ80+30+60=170ps£¬ºóÃæÒ»¸öÁ÷Ë®¶ÎµÄ×éºÏÂß¼­ÑÓʱΪ50+70+10=130ps¡£ÕâÑùÿ¸öÁ÷Ë®¶Î¶¼ÒÔ×ÑÓʱµ÷ÕûΪ

170+20=190ps£¬¹ÊʱÖÓÖÜÆÚΪ

190ps£¬Ö¸ÁîÍÌÍÂÂÊΪ

1/190ps=5.26GOPS£¬Ã¿ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äΪ2x190=380ps¡£

£¨2£©Á½¸öÁ÷Ë®¶Î¼Ä´æÆ÷·Ö±ð²åÔÚBºÍC¡¢DºÍEÖ®¼ä£¬ÕâÑùµÚÒ»¸öÁ÷Ë®¶ÎµÄ×éºÏÂß¼­ÑÓʱΪ80+30=110ps£¬ÖмäµÚ¶þ¶ÎµÄʱÑÓΪ60+50=110ps£¬×îºóÒ»¸ö¶ÎÑÓʱΪ70+10=80ps¡£ÕâÑùÿ¸öÁ÷Ë®¶Î¶¼ÒÔ×ÑÓʱµ÷ÕûΪ110+20=130ps£¬¹ÊʱÖÓÖÜÆÚΪ130ps£¬Ö¸ÁîÍÌÍÂÂÊΪ1/130ps=7.69GOPS£¬Ã¿ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äΪ3x130=390ps¡£

£¨3£©Èý¸öÁ÷Ë®¶Î¼Ä´æÆ÷·Ö±ð²åÔÚAºÍB¡¢CºÍD¡¢DºÍEÖ®¼ä£¬ÕâÑùµÚÒ»¸öÁ÷Ë®¶ÎµÄ×éºÏÂß¼­ÑÓʱΪ80ps£¬µÚ¶þ¶ÎʱÑÓΪ30+60=90ps£¬µÚÈý¶ÎʱÑÓΪ50ps£¬×îºóÒ»¶ÎÑÓʱΪ70+10=80ps¡£ÕâÑùÿ¸öÁ÷Ë®¶Î¶¼ÒÔ×ÑÓʱµ÷ÕûΪ90+20=110ps£¬¹ÊʱÖÓÖÜÆÚΪ110ps£¬Ö¸ÁîÍÌÍÂÂÊΪ1/110ps=9.09GOPS£¬Ã¿ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äΪ4x110=440ps¡£

£¨4£©ÒòΪËùÓÐ×éºÏÂß¼­¿éÖÐ×ÑÓʱΪ80ps£¬ËùÒÔ£¬´ïµ½×î´ó¿ÉÄÜÍÌÍÂÂʵĻ®·ÖÓ¦¸ÃÊÇÒÔÒ»¸öÁ÷Ë®¶ÎÑÓʱΪ80ps+20psÀ´½øÐУ¬Òò´Ë£¬ÖÁÉÙ°´Îå¶ÎÀ´»®·Ö£¬·Ö±ð°ÑÁ÷Ë®¶Î¼Ä´æÆ÷²åÔÚAºÍB¡¢BºÍC¡¢CºÍD¡¢DºÍEÖ®¼ä£¬ÕâÑùµÚÒ»¶ÎµÄ×éºÏÂß¼­ÑÓʱΪ80ps£¬µÚ¶þ¶ÎΪ30ps£¬µÚÈý¶ÎΪ60ps£¬µÚËĶÎΪ50ps£¬×îºóÒ»¶ÎΪ70+10=80ps¡£ÕâÑùÿ¸öÁ÷Ë®¶Î¶¼ÒÔ×ÑÓʱµ÷ÕûΪ80+20=100ps£¬¹ÊʱÖÓÖÜÆÚΪ100ps£¬Ö¸ÁîÍÌÍÂÂÊΪ1/100ps=10GOPS£¬Ã¿ÌõÖ¸ÁîµÄÖ´ÐÐʱ¼äΪ5x100=500ps¡£

¡ª¡ªÍÌÍÂÂʵÄÌá¸ß£¬µ¥ÌõÖ¸ÁîÖ´ÐÐʱ¼äµÄÑÓ³¤

? 158 ?

6. ÒÔÏÂÖ¸ÁîÐòÁÐÖУ¬ÄÄЩָÁî¶Ô·¢ÉúÊý¾ÝÏà¹Ø£¿¼Ù¶¨²ÉÓá°È¡Ö¸¡¢ÒëÂë/È¡Êý¡¢Ö´ÐС¢·Ã´æ¡¢

д»Ø¡±Îå¶ÎÁ÷Ë®Ïß·½Ê½£¬ÄÇô²»Óá°×ª·¢¡±¼¼ÊõµÄ»°£¬ÐèÒªÔÚ·¢ÉúÊý¾ÝÏà¹ØµÄÖ¸Áîǰ¼ÓÈ뼸ÌõnopÖ¸Áî²ÅÄÜʹÕâ¶Î³ÌÐò±ÜÃâÊý¾ÝðÏÕ£¿Èç¹û²ÉÓá°×ª·¢¡±ÊÇ·ñ¿ÉÒÔÍêÈ«½â¾öÊý¾ÝðÏÕ£¿²»Ðеϰ£¬ÐèÒªÔÚ·¢ÉúÊý¾ÝÏà¹ØµÄÖ¸Áîǰ¼ÓÈ뼸ÌõnopÖ¸Áî²ÅÄÜʹÕâ¶Î³ÌÐò²»·¢ÉúÊý¾ÝðÏÕ£¿

add $s3, $s1, $s0 sub $t2, $s0, $s3 lw $t1, 0($t2) add $t1, $t1, $t2

²Î¿¼´ð°¸£º

·¢ÉúÊý¾ÝÏà¹ØµÄÓУºµÚ1ºÍ2¼ä¹ØÓÚ$s3¡¢µÚ2ºÍ3¼ä¹ØÓÚ$t2¡¢µÚ2ºÍ4¼ä¹ØÓÚ$t2¡¢µÚ3ºÍ4¼ä¹ØÓÚ$t1¡£

²»½øÐС°×ª·¢¡±´¦ÀíµÄ»°£¬ÐèÒª·Ö±ðÔÚµÚ2¡¢3¡¢4ÌõÖ¸Áîǰ¼ÓÈýÌõnopÖ¸Áî²ÅÄܱÜÃâÊý¾ÝðÏÕ¡£¶øÍ¨¹ý¡°×ª·¢¡±¿ÉÒÔ±ÜÃâ1ºÍ2¡¢2ºÍ3¡¢2ºÍ4¼äµÄÊý¾ÝÏà¹Ø£»µ«µÚ3ºÍ4¼äÊÇload-useÊý¾ÝÏà¹Ø£¬ËùÒÔÎÞ·¨Óá°×ª·¢¡±Ïû³ýðÏÕ£¬Òò´Ë£¬ÐèÔÚµÚ4ÌõÖ¸Áîǰ¼ÓÈëÒ»ÌõnopÖ¸Áî¡£

¼Ä´æÆ÷д¿ÚºÍ¼Ä´æÆ÷¶Á¿Ú·Ö±ð°²ÅÅÔÚÒ»¸öʱÖÓÖÜÆÚµÄǰ¡¢ºó°ë¸öÖÜÆÚÄÚ¶ÀÁ¢¹¤×÷ÄØ£¿ ¡ª¡ª2¡¢3¡¢4Ìõ֮ǰ·Ö±ð²åÈë2Ìõnop¾Í¿ÉÒÔ

? 159 ?