¼ÆËã»ú×é³ÉÓëϵͳ½á¹¹¿Îºó´ð°¸È«Ç廪´óѧ³ö°æÉçÔ¬´º·çÖ÷±à ÏÂÔØ±¾ÎÄ

Ò³±íÏîλÊýΪ£ºÓÐЧλ+±£»¤Î»+ÐÞ¸Äλ+ʹÓÃλ+ÎïÀíÒ³ºÅλÊý=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

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¸öÒ³±íÏî

ÐéÒ³ºÅ Ò³¿òºÅ ÓÐЧλ ÐÐË÷Òý ±ê¼Ç ÓÐЧλ ×Ö½Ú3 ×Ö½Ú2 ×Ö½Ú1 ×Ö½Ú0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

08 03 14 02 ¨C 16 ¨C 07 13 17 09 ¨C 19 ¨C 11 0D 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1

0 1 2 3 4 5 6 7 8 9 A B C D E F

19 15 1B 36 32 0D ¨C 16 24 2D 2D ¨C 12 16 33 14 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 12 ¨C 03 ¨C 23 46 ¨C 12 23 ¨C 43 ¨C 76 A3 2D ¨C 56 ¨C 45 ¨C 34 67 ¨C 54 62 ¨C 62 ¨C 83 F4 4A ¨C C9 ¨C 12 ¨C C2 23 ¨C 65 12 ¨C 23 ¨C 21 23 45 ¨C AC ¨C CD ¨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 =

£¨×¢£ºÃ»ÓÐ˵¶¨³¤Ö¸Áî×Ö£¬ËùÒÔ²»Ò»¶¨ÊÇÿÌõÖ¸ÁîÕ¼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 ¨C k2) ¡Á26 ¨C k1) ¡Á26 = k0£¬ËùÒÔ k1= (16 ¨C k2) ¡Á26 ¨C k0/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 10 10 Rx (3λ) Offset16 (16λ) 00 10 00 Imm16 (16λ) 000 000 OP (6λ) 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Ö¸ÁîÐòÁмÓ×¢ÊÍ£¬²¢¼òµ¥ËµÃ÷¸Ã¹ý³ÌµÄ¹¦ÄÜ¡£

²Î¿¼´ð°¸£º

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

add $t0, $zero, $zero beq $a1, $zero, finish add $t0, $t0, $a0 sub $a1, $a1, 1 j

loop

addi $t0, $t0, 100

loop:

finish:

add $v0, $t0, $zero