Ò»¡¢MMUµÄ²úÉú
Ðí¶àÄêÒÔÇ°£¬µ±ÈËÃÇ»¹ÔÚʹÓÃDOS»òÊǸü¹ÅÀϵIJÙ×÷ϵͳµÄʱºò£¬¼ÆËã»úµÄÄڴ滹·Ç³£Ð¡£¬Ò»°ã¶¼ÊÇÒÔKΪµ¥Î»½øÐмÆË㣬ÏàÓ¦µÄ£¬µ±Ê±µÄ³ÌÐò¹æÄ£Ò²²»´ó£¬ËùÒÔÄÚ´æÈÝÁ¿ËäȻС£¬µ«»¹ÊÇ¿ÉÒÔÈÝÄɵ±Ê±µÄ³ÌÐò¡£µ«Ëæ×ÅͼÐνçÃæµÄÐËÆð»¹ÓÃÓû§ÐèÇóµÄ²»¶ÏÔö´ó£¬Ó¦ÓóÌÐòµÄ¹æÄ£Ò²ËæÖ®ÅòÕÍÆðÀ´£¬ÖÕÓÚÒ»¸öÄÑÌâ³öÏÖÔÚ³ÌÐòÔ±µÄÃæÇ°£¬ÄǾÍÊÇÓ¦ÓóÌÐòÌ«´óÒÔÖÁÓÚÄÚ´æÈÝÄɲ»Ï¸óÌÐò£¬Í¨³£½â¾öµÄ°ì·¨ÊǰѳÌÐò·Ö¸î³ÉÐí¶à³ÆΪ¸²¸Ç¿é£¨overlay£©µÄƬ¶Î¡£¸²¸Ç¿é0Ê×ÏÈÔËÐУ¬½áÊøʱËû½«µ÷ÓÃÁíÒ»¸ö¸²¸Ç¿é¡£ËäÈ»¸²¸Ç¿éµÄ½»»»ÊÇÓÉOSÍê³ÉµÄ£¬µ«ÊDZØÐëÏÈÓɳÌÐòÔ±°Ñ³ÌÐòÏȽøÐзָÕâÊÇÒ»¸ö·Ñʱ·ÑÁ¦µÄ¹¤×÷£¬¶øÇÒÏ൱¿ÝÔï¡£ÈËÃDZØÐëÕÒµ½¸üºÃµÄ°ì·¨´Ó¸ù±¾ÉϽâ¾öÕâ¸öÎÊÌâ¡£²»¾ÃÈËÃÇÕÒµ½ÁËÒ»¸ö°ì·¨£¬Õâ¾ÍÊÇÐéÄâ´æ´¢Æ÷(virtual memory).ÐéÄâ´æ´¢Æ÷µÄ»ù±¾Ë¼ÏëÊdzÌÐò£¬Êý¾Ý£¬¶ÑÕ»µÄ×ܵĴóС¿ÉÒÔ³¬¹ýÎïÀí´æ´¢Æ÷µÄ´óС£¬²Ù×÷ϵͳ°Ñµ±Ç°Ê¹ÓõIJ¿·Ö±£ÁôÔÚÄÚ´æÖУ¬¶ø°ÑÆäËûδ±»Ê¹ÓõIJ¿·Ö±£´æÔÚ´ÅÅÌÉϱÈÈç¶ÔÒ»¸ö16MBµÄ³ÌÐòºÍÒ»¸öÄÚ´æÖ»ÓÐ4MBµÄ»úÆ÷£¬OSͨ¹ýÑ¡Ôñ£¬¿ÉÒÔ¾ö¶¨¸÷¸öʱ¿Ì½«ÄÄ4MµÄÄÚÈݱ£ÁôÔÚÄÚ´æÖУ¬²¢ÔÚÐèҪʱÔÚÄÚ´æºÍ´ÅÅ̼佻»»³ÌÐòƬ¶Î£¬ÕâÑù¾Í¿ÉÒÔ°ÑÕâ¸ö16MµÄ³ÌÐòÔËÐÐÔÚÒ»¸öÖ»¾ßÓÐ4MÄÚ´æ»úÆ÷ÉÏÁË¡£¶øÕâ¸ö16MµÄ³ÌÐòÔÚÔËÐÐÇ°²»±ØÓɳÌÐòÔ±½øÐзָ
ÈκÎʱºò£¬¼ÆËã»úÉ϶¼´æÔÚÒ»¸ö³ÌÐòÄܹ»²úÉúµÄµØÖ·¼¯ºÏ£¬ÎÒÃdzÆ֮ΪµØÖ··¶Î§¡£Õâ¸ö·¶Î§µÄ´óСÓÉCPUµÄλÊý¾ö¶¨,ÀýÈçÒ»¸ö32λµÄCPU£¬ËüµÄµØÖ··¶Î§ÊÇ0~0xFFFFFFFF (4G)¶ø¶ÔÓÚÒ»¸ö64λµÄCPU£¬ËüµÄµØÖ··¶Î§Îª0~0xFFFFFFFFFFFFFFFF (64T),Õâ¸ö·¶Î§¾ÍÊÇÎÒÃǵijÌÐòÄܹ»²úÉúµÄµØÖ··¶Î§£¬ÎÒÃÇ°ÑÕâ¸öµØÖ··¶Î§³ÆΪÐéÄâµØÖ·¿Õ¼ä£¬¸Ã¿Õ¼äÖеÄijһ¸öµØÖ·ÎÒÃdzÆ֮ΪÐéÄâµØÖ·¡£ÓëÐéÄâµØÖ·¿Õ¼äºÍÐéÄâµØÖ·Ïà¶ÔÓ¦µÄÔòÊÇÎïÀíµØÖ·¿Õ¼äºÍÎïÀíµØÖ·£¬´ó¶àÊýʱºòÎÒÃǵÄϵͳËù¾ß±¸µÄÎïÀíµØÖ·¿Õ¼äÖ»ÊÇÐéÄâµØÖ·¿Õ¼äµÄÒ»¸ö×Ó¼¯£¬ÕâÀï¾ÙÒ»¸ö×î¼òµ¥µÄÀý×ÓÖ±¹ÛµØ˵Ã÷ÕâÁ½Õߣ¬¶ÔÓÚһ̨ÄÚ´æΪ256MBµÄ32bit x86Ö÷»úÀ´Ëµ£¬ËüµÄÐéÄâµØÖ·¿Õ¼ä·¶Î§ÊÇ0~0xFFFFFFFF(4G),¶øÎïÀíµØÖ·¿Õ¼ä·¶Î§ÊÇ0x000000000~0x0FFFFFFF£¨256MB£©¡£
ÔÚûÓÐʹÓÃÐéÄâ´æ´¢Æ÷µÄ»úÆ÷ÉÏ£¬ÐéÄâµØÖ·±»Ö±½ÓË͵½ÄÚ´æ×ÜÏßÉÏ£¬Ê¹¾ßÓÐÏàͬµØÖ·µÄÎïÀí´æ´¢Æ÷±»¶Áд¡£¶øÔÚʹÓÃÁËÐéÄâ´æ´¢Æ÷µÄÇé¿öÏ£¬ÐéÄâµØÖ·²»ÊDZ»Ö±½ÓË͵½ÄÚ´æµØÖ·×ÜÏßÉÏ£¬¶øÊÇË͵½ÄÚ´æ¹ÜÀíµ¥Ôª¡ª¡ªMMU£¨Ö÷½ÇÖÕÓÚ³öÏÖÁË£©¡£ËûÓÉÒ»¸ö»òÒ»×éоƬ×é³É£¬Ò»°ã´æÔÚÓëд¦ÀíÆ÷ÖУ¬Æ书ÄÜÊÇ°ÑÐéÄâµØÖ·Ó³ÉäΪÎïÀíµØÖ·¡£
¶þ¡¢MMU¹¤×÷¹ý³Ì
´ó¶àÊýʹÓÃÐéÄâ´æ´¢Æ÷µÄϵͳ¶¼Ê¹ÓÃÒ»ÖÖ³ÆΪ·ÖÒ³£¨paging£©¡£ÐéÄâµØÖ·¿Õ¼ä»®·Ö³É³ÆΪҳ£¨page£©µÄµ¥Î»£¬¶øÏàÓ¦µÄÎïÀíµØÖ·¿Õ¼äÒ²±»½øÐл®·Ö£¬µ¥Î»ÊÇÒ³¿ò(frame).Ò³ºÍÒ³¿òµÄ´óС±ØÐëÏàͬ¡£½ÓÏÂÀ´ÅäºÏͼƬÎÒÒÔÒ»¸öÀý×Ó˵Ã÷Ò³ÓëÒ³¿òÖ®¼äÔÚMMUµÄµ÷¶ÈÏÂÊÇÈçºÎ½øÐÐÓ³ÉäµÄ£º
ÔÚÕâ¸öÀý×ÓÖÐÎÒÃÇÓÐһ̨¿ÉÒÔÉú³É16λµØÖ·µÄ»úÆ÷£¬ËüµÄÐéÄâµØÖ··¶Î§´Ó0x0000~0xFFFF(64K),¶øÕą̂»úÆ÷Ö»ÓÐ32KµÄÎïÀíµØÖ·£¬Òò´ËËû¿ÉÒÔÔËÐÐ64KµÄ³ÌÐò£¬µ«¸Ã³ÌÐò²»ÄÜÒ»´ÎÐÔµ÷ÈëÄÚ´æÔËÐС£Õą̂»úÆ÷±ØÐëÓÐÒ»¸ö´ïµ½¿ÉÒÔ´æ·Å64K³ÌÐòµÄÍⲿ´æ´¢Æ÷£¨ÀýÈç´ÅÅÌ»òÊÇFLASH£©ÒÔ±£Ö¤³ÌÐòƬ¶ÎÔÚÐèҪʱ¿ÉÒÔ±»µ÷Óá£ÔÚÕâ¸öÀý×ÓÖУ¬Ò³µÄ´óСΪ4K£¬Ò³¿ò´óСÓëÒ³Ïàͬ£¨ÕâµãÊDZØÐë±£Ö¤µÄ£¬ÄÚ´æºÍÍâΧ´æ´¢Æ÷Ö®¼äµÄ´«Êä×ÜÊÇÒÔҳΪµ¥Î»µÄ£©£¬¶ÔÓ¦64KµÄÐéÄâµØÖ·ºÍ32KµÄÎïÀí´æ´¢Æ÷£¬ËûÃÇ·Ö±ð°üº¬ÁË16¸öÒ³ºÍ8¸öÒ³¿ò¡£
ÎÒÃÇÏȸù¾ÝÉÏͼ½âÊÍһϷÖÒ³ºóÒªÓõ½µÄ¼¸¸öÊõÓÔÚÉÏÃæÎÒÃÇÒѾ½Ó´¥ÁËÒ³ºÍÒ³¿ò£¬ÉÏͼÖÐÂÌÉ«²¿·ÖÊÇÎïÀí¿Õ¼ä£¬ÆäÖÐÿһ¸ñ±íʾһ¸öÎïÀíÒ³¿ò¡£éÙ»ÆÉ«²¿·ÖÊÇÐéÄâ¿Õ¼ä£¬Ã¿Ò»¸ñ±íʾһ¸öÒ³£¬ËüÓÉÁ½²¿·Ö×é³É£¬·Ö±ðÊÇFrame Index(Ò³¿òË÷Òý)ºÍλp£¨present ´æÔÚ룩£¬Frame IndexµÄÒâÒåºÜÃ÷ÏÔ£¬ËüÖ¸³ö±¾Ò³ÊÇÍùÄĸöÎïÀíÒ³¿ò½øÐÐÓ³ÉäµÄ£¬Î»pµÄÒâÒåÔòÊÇÖ¸³ö±¾Ò³µÄÓ³ÉäÊÇ·ñÓÐЧ£¬ÈçÉÏͼ£¬µ±Ä³¸öÒ³²¢Ã»Óб»Ó³Éäʱ£¨»ò³ÆÓ³ÉäÎÞЧ£¬Frame Index²¿·ÖΪX£©£¬¸ÃλΪ0£¬Ó³ÉäÓÐЧÔò¸ÃλΪ1¡£
ÎÒÃÇÖ´ÐÐÏÂÃæÕâЩָÁ±¾Àý×ÓµÄÖ¸Áî²»Õë¶ÔÈκÎÌض¨»úÐÍ£¬¶¼ÊÇαָÁ
Àý1:
MOVE REG,0 //½«0ºÅµØÖ·µÄÖµ´«µÝ½ø¼Ä´æÆ÷REG.
ÐéÄâµØÖ·0½«±»ËÍÍùMMU,MMU¿´µ½¸ÃÐéµØÖ·ÂäÔÚÒ³0·¶Î§ÄÚ£¨Ò³0·¶Î§ÊÇ0µ½4095£©£¬´ÓÉÏͼÎÒÃÇ¿´µ½Ò³0Ëù¶ÔÓ¦£¨Ó³É䣩µÄÒ³¿òΪ2£¨Ò³¿ò2µÄµØÖ··¶Î§ÊÇ8192µ½12287£©£¬Òò´ËMMU½«¸ÃÐéÄâµØַת»¯ÎªÎïÀíµØÖ·8192£¬²¢°ÑµØÖ·8192Ë͵½µØÖ·×ÜÏßÉÏ¡£ÄÚ´æ¶ÔMMUµÄÓ³ÉäÒ»ÎÞËùÖª£¬ËüÖ»¿´µ½Ò»¸ö¶ÔµØÖ·8192µÄ¶ÁÇëÇó²¢Ö´ÐÐËü¡£MMU´Ó¶ø°Ñ0µ½4096µÄÐéÄâµØÖ·Ó³Éäµ½8192µ½12287µÄÎïÀíµØÖ·¡£
Àý2£º
MOVE REG,8192
±»×ª»»Îª
MOVE REG,24576
ÒòΪÐéÄâµØÖ·8192ÔÚÒ³2ÖУ¬¶øÒ³2±»Ó³Éäµ½Ò³¿ò6£¨ÎïÀíµØÖ·´Ó24576µ½28671£©
Àý3£º
MOVE REG,20500
±»×ª»»Îª
MOVE REG,12308
ÐéÄâµØÖ·20500ÔÚÐéÒ³5£¨ÐéÄâµØÖ··¶Î§ÊÇ20480µ½24575£©¾à¿ªÍ·20¸ö×Ö½Ú´¦£¬ÐéÒ³5Ó³Éäµ½Ò³¿ò3£¨Ò³¿ò3µÄµØÖ··¶Î§ÊÇ 12288µ½16383£©£¬ÓÚÊDZ»Ó³Éäµ½ÎïÀíµØÖ·12288+20=12308¡£
ͨ¹ýÊʵ±µÄÉèÖÃMMU£¬¿ÉÒÔ°Ñ16¸öÐéÒ³ÒþÉäµ½8¸öÒ³¿òÖеÄÈκÎÒ»¸ö£¬µ«ÊÇÕâ¸ö·½·¨²¢Ã»ÓÐÓÐЧµÄ½â¾öÐéÄâµØÖ·¿Õ¼ä±ÈÎïÀíµØÖ·¿Õ¼ä´óµÄÎÊÌâ¡£´ÓÉÏͼÖÐÎÒÃÇ¿ÉÒÔ¿´µ½£¬ÎÒÃÇÖ»ÓÐ8¸öÒ³¿ò£¨ÎïÀíµØÖ·£©£¬µ«ÎÒÃÇÓÐ16¸öÒ³£¨ÐéÄâµØÖ·£©£¬ËùÒÔÎÒÃÇÖ»ÄÜ°Ñ16¸öÒ³ÖеÄ8¸ö½øÐÐÓÐЧµÄÓ³Éä¡£ÎÒÃÇ¿´¿´Àý4»á·¢ÉúʲôÇé¿ö
MOV REG,32780
ÐéÄâµØÖ·32780ÂäÔÚÒ³8µÄ·¶Î§ÄÚ£¬´ÓÉÏͼ×ÜÎÒÃÇ¿´µ½Ò³8ûÓб»ÓÐЧµÄ½øÐÐÓ³É䣨¸ÃÒ³±»´òÉÏX£©£¬ÕâÊÇÓֻᷢÉúʲô£¿MMU×¢Òâµ½Õâ¸öҳûÓб»Ó³É䣬ÓÚÊÇ֪ͨCPU·¢ÉúÒ»¸öȱҳ¹ÊÕÏ£¨page fault£©.ÕâÖÖÇé¿öϲÙ×÷ϵͳ±ØÐë´¦ÀíÕâ¸öÒ³¹ÊÕÏ£¬Ëü±ØÐë´Ó8¸öÎïÀíÒ³¿òÖÐÕÒµ½1¸öµ±Ç°ºÜÉÙ±»Ê¹ÓõÄÒ³¿ò²¢°Ñ¸ÃÒ³¿òµÄÄÚÈÝдÈëÍâΧ´æ´¢Æ÷£¨Õâ¸ö¶¯×÷±»³ÆΪpage copy£©£¬Ëæºó°ÑÐèÒªÒýÓõÄÒ³£¨Àý4ÖÐÊÇÒ³8£©Ó³Éäµ½¸Õ²ÅÊͷŵÄÒ³¿òÖУ¨Õâ¸ö¶¯×÷³ÆΪÐÞ¸ÄÓ³Éä¹Øϵ£©£¬È»ºó´ÓÐÂÖ´ÐвúÉú¹ÊÕϵÄÖ¸ÁMOV REG,32780£©¡£¼ÙÉè²Ù×÷ϵͳ¾ö¶¨ÊÍ·ÅÒ³¿ò1£¬ÄÇôËü½«°ÑÐéÒ³8×°ÈëÎïÀíµØÖ·µÄ4-8K,²¢×öÁ½´¦Ð޸ģºÊ×ÏȰѱê¼ÇÐéÒ³1δ±»Ó³É䣨ÔÀ´ÐéÒ³1ÊDZ»Ó°Éäµ½Ò³¿ò1µÄ£©£¬ÒÔʹÒÔºóÈκζÔÐéÄâµØÖ·4Kµ½8KµÄ·ÃÎʶ¼ÒýÆðÒ³¹ÊÕ϶øʹ²Ù×÷ϵͳ×ö³öÊʵ±µÄ¶¯×÷£¨Õâ¸ö¶¯×÷ÕýÊÇÎÒÃÇÏÖÔÚÔÚÌÖÂ۵ģ©£¬Æä´ÎËû°ÑÐéÒ³8¶ÔÓ¦µÄÒ³¿òºÅÓÉX±äΪ1£¬Òò´ËÖØÐÂÖ´ÐÐMOV REG,32780ʱ£¬MMU½«°Ñ32780Ó³ÉäΪ4108¡£
תÔØ×Ô£ºhttps://blog.csdn.net/yuhaoo/article/details/44200131