CPU»º´æÓÅ»¯£ºÔÚ³ÌÐòÉè¼ÆÖУ¬Ö»¹ÜïÔÌCPU»º´æÊ§Ð§£¨cachemiss£©£¬Í¨¹ýºÏÀíµÄÊý¾Ý½á¹¹ºÍ»á¼ûģʽÀ´Ìá¸ß»º´æÖÀÖÐÂÊ¡£
ÄÚ´æ´ø¿íÓëÑÓ³Ù£ºÓÅ»¯ÄÚ´æ»á¼ûµÄ·½·¨£¬ïÔÌÄÚ´æ´ø¿íµÄÆÌÕźÍÑÓ³Ù¡£ÀýÈ磬ʹÓÃ¶ÔÆëÄÚ´æ?£¨alignedmemory£©À´Ìá¸ß»á¼ûËÙÂÊ¡£
Ö¸Áî¼¶²¢ÐУºÊ¹ÓÃCPUµÄ³¬±ê?Á¿£¨superscalar£©ºÍ³¬Á÷Ë®Ïߣ¨superpipeline£©¼Ü¹¹£¬Í¨¹ýÖ¸Áî¼¶²¢ÐУ¨instruction-levelparallelism£©À´Ìá¸ßÖ´ÐÐЧÂÊ¡£
Äں˼¶Çý¶¯³ÌÐò£º¹ØÓÚÐèÒª¼«¸ßÐÔÄܵÄÓ¦Ó㬿ÉÒÔ¿ª·¢Äں˼¶Çý¶¯³ÌÐò£¬Ö±½ÓÓëÓ²¼þ½»»¥£¬ïÔÌÖÐÐIJãµÄ¿ªÏú¡£ÀýÈ磬¸ßÐÔÄÜÍøÂç×°±¸»òÕßʵʱϵͳÖУ¬Äں˼¶Çý¶¯ÄÜÏÔÖøÌá¸ßÐÔÄÜ¡£
ÄÚºËÇÀÕ¼£ºÔÚʵʱϵͳÖУ¬ÄÚºËÇÀÕ¼£¨kernelpreemption£©ÊÖÒÕ¿ÉÒÔÈ·±£¸ßÓÅÏȼ¶Ê¹ÃüÄÜʵʱÏìÓ¦£¬ïÔÌϵͳµÄÇÀÕ¼ÑÓ³Ù¡£
Äں˹²Ïí£ºÔÚ¶àºËϵͳÖУ¬Í¨¹ýºÏÀí·ÖÅɺ͹²ÏíÄÚºË×ÊÔ´£¬¿ÉÒÔ³ä·ÖʹÓöàºËµÄ²¢ÐÐÅÌËãÄÜÁ¦¡£ÀýÈ磬ʹÓù²ÏíÄڴ棨sharedmemory£©À´ïÔÌͬ²½¿ªÏú¡£
Ñ¡ÔñºÏÊʵÄÊý¾Ý½á¹¹£º²î±ðµÄ?Êý¾Ý½á¹¹ÊÊÓÃÓÚ²î±ðµÄÓ¦Óó¡¾°¡£ÀýÈ磬¹þÏ£±íÊÊÓÃÓÚ²éÕÒ²Ù×÷£¬¶øÁ´±íÊÊÓÃÓÚÆµÈÔ²åÈëºÍɾ³ýµÄ²Ù×÷¡£
Ëã·¨ÖØÆ¯ºóÆÊÎö£ºÔÚÑ¡ÔñË㷨ʱ£¬ÒªÆÊÎöÆäʱ¼äÖØÆ¯ºóºÍ¿Õ¼äÖØÆ¯ºó¡£Ö»¹ÜÑ¡Ôñ¸ü¸ßЧµÄËã·¨£¬ÀýÈ磬´Ó?O(n^2)ÓÅ»¯µ½O(nlogn)¡£
¶¯Ì¬ÍýÏ룺¶¯Ì¬ÍýÏëÊÇÒ»ÖÖ½â¾öÖØ´óÎÊÌâµÄÒªÁ죬Ëü¿ÉÒÔÏÔÖøÌáÉýËã·¨µÄЧÂÊ¡£ÀýÈ磬ÔÚ½â¾ö±³°üÎÊÌâʱ£¬¶¯Ì¬ÍýÏëÄܹ»ÓÐÓÃ×èÖ¹ÖØ¸´ÅÌËã¡£
»ã±àÓÅ»¯£ºÔÚÒªº¦ÐÔÄÜ·¾¶ÉÏʹÓûã±àÓïÑÔ±àд´úÂ룬¿ÉÒÔÏÔÖøÌáÉýÐÔÄÜ¡£ÀýÈ磬¶ÔÐÔÄÜÒªº¦Â·¾¶¾ÙÐÐÊÖ¹¤ÓÅ»¯£¬¿ÉÒÔïÔ̲»ÐëÒªµÄÖ¸ÁîºÍ¿ªÏú¡£
Ö¸ÁÓÅ»¯£º³ä·ÖʹÓÃCPUµÄÌØ¶¨Ö¸Á£¬ÈçSIMD£¨SingleInstruction,MultipleData£©Ö¸Á¿ÉÒÔÔÚ´¦Öóͷ£´ó×ÚÊý¾ÝʱÌá¸ßÐÔÄÜ¡£
ÊÖ¹¤ÓÅ»¯£ºÔÚC/C++µÈ¸ß¼¶ÓïÑÔÖУ¬Í¨¹ýÊÖ¹¤ÓÅ»¯£¨manualoptimization£©£¬ÈçïÔÌÑ»·Ç¶Ìס¢ÓÅ»¯»º´æÊ¹Óõȣ¬¿ÉÒÔÏÔÖøÌáÉý´ú?ÂëµÄÖ´ÐÐЧÂÊ¡£
Ä£¿é»¯Éè¼Æ£º½«´úÂëÆÊÎö³É¶à¸ö×ÔÁ¦µÄ?Ä£¿é£¬Ã¿¸öÄ£¿é¾ßÓÐÌØ¶¨µÄ¹¦Ð§£¬±ãÓÚ¹ÜÀíºÍά»¤¡£Ä£¿é»¯Éè¼ÆÒ²ÄÜÌá¸ß´úÂëµÄ¸´ÓÃÐԺͲâÊÔЧÂÊ¡£
ʹÓÃÉè¼ÆÄ£Ê½£ºÉè¼ÆÄ£Ê½ÊǾÓÉÖØ¸´ÑéÖ¤µÄ×î¼Ñʵ¼ù£¬ËüÄÜ×ÊÖúÄã½â¾ö³£¼ûµÄÉè¼ÆÎÊÌâ¡£ÀýÈ磬ʹÓõ¥ÀýģʽÀ´¿ØÖƶÔijһ×ÊÔ´µÄ»á¼û£¬»òÕßʹÓù¤³§Ä£Ê½À´¹ÜÀí¹¤¾ßµÄ½¨Éè¡£
¼ò»¯Âß¼£º×èÖ¹ÖØ´óµÄÌõ¼þÓï¾äºÍǶÌ×µÄÑ»·£¬Ö»¹ÜʹÓþ«Á·Ã÷ÎúµÄ´úÂë¡£ÖØ´óµÄÂß¼²»µ«ÄÑÒÔÃ÷È·£¬»¹»á½µµÍ´úÂëµÄÖ´ÐÐЧÂÊ¡£
Á¢ÒìÍ·ÄÔµÄ×îÖÕÄ¿µÄÊÇÔÚʵ¼ùÖÐÓ¦Óã¬Í¨¹ýʵ¼ù£¬¿ÉÒÔÒ»Ö±ÑéÖ¤ºÍË¢ÐÂÁ¢ÒìÒªÁì¡£ÀýÈ磬ÔÚÏÖʵÏîÄ¿ÖУ¬¿ÉÒÔʵÑéÐÂµÄÆÊÎöÒªÁìºÍÊÖÒÕ£¬²¢Í¨¹ýʵ¼ù£¬·¢Ã÷ÆäÓÅÊÆºÍȱ·¦¡£
×ܽáÆðÀ´£¬ÊµÏÖ¼«ÖÂЧÄÜ£¬ÐèÒª´Ó¶à¸ö·½Ãæ¾ÙÐÐ×ÛºÏÓÅ»¯¡£Í¨¹ýÕÆÎÕ½¹µã¹¦Ð§¡¢Ê¹ÓÃ×Ô¶¯»¯¹¦Ð§¡¢ÓÅ»¯½çÃæºÍ½á¹¹¡¢¾ÙÐÐϵͳ¼¶ÓÅ»¯¡¢Ò»Á¬Ñ§Ï°Óë¸üС¢ÔöÇ¿ÍŶÓÐ×÷¡¢×÷ÓýÓÅÒìµÄСÎÒ˽¼Òϰ¹ß¡¢ºÏÀíµÄÐÄÀíµ÷ÊÊÓëѹÁ¦¹ÜÀíÒÔ¼°Á¢ÒìÓë´´Ò⣬¿ÉÒÔÖÜÈ«ÌáÉýÊÂÇéЧÂÊ£¬µÖ´ï¼«ÖÂЧÄܵÄáÛ·å¡£