½ºÆåÅÍ·Î ºÐ·ù µÈ µÎ ¹ø° º¯Á¾À» ¸·±â À§ÇØ ¹èÆ÷ ÁßÀÎ º¸¾È ÆÐÄ¡´Â CPU ¼º´É ÀúÇϸ¦ µ¿¹ÝÇÏ´Â °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖ´Ù. À©µµ¿ì º¸¾È ÆÐÄ¡¸¦ ¹èÆ÷ÇÑ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®µµ ÀÌ·± ¹®Á¦¸¦ ÁöÀû Çß°í ÀÌ ¹®Á¦¸¦ ÇØ°áÇØ¾ß ÇÒ ÀÎÅÚ ¿ª½Ã ÀÛ¾÷ ºÎÇÏ¿¡ µû¸¥ ¼º´É Ç϶ôÀº ÀÎÁ¤ÇÑ »óÅ¿´´Ù.
ÇÏÁö¸¸, ±¸±ÛÀÌ Ã£Àº ÇعýÀ» »ç¿ëÇϸé CPU ¼º´É ÀúÇÏ ¾øÀÌ µÎ ¹ø° º¯Á¾À¸·Î ¹ß»ýÇÑ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù´Â ¼Ò½ÄÀÌ ÀüÇØÁ³´Ù.
¸®Æ®Æú¸°(Retpoline)¶ó À̸§ Áö¾îÁø ÀÌ ±â¼úÀº µÎ ¹ø° º¯Á¾¿¡ »ç¿ëµÇ´Â ¸í·É ´ë½Å ¸®ÅÏ°ú Æ®·¥Æú¸°À¸·Î ´ëüÇÏ°í °ø°Ý ´ë»óÀÌ µÇ´Â BTB(Branch Target Buffer)¸¦ ¾Æ¿¹ »ç¿ëÇÏÁö ¾Ê´Â ¹æ½ÄÀÌ´Ù.
ÀÌ ±â¹ýÀ» »ç¿ëÇÏ¸é ¹«½ÃÇÒ ¼ö ÀÖ´Â ¼öÁØ¿¡¼ CPU ¼º´É¿¡ ¿µÇâÀ» Áֱ⠶§¹®¿¡ ½ÇÁúÀûÀÎ ¼º´É Ç϶ôÀº ü°¨Çϱâ Èûµé´Ù´Â °ÍÀÌ ±¸±ÛÀÇ ÁÖÀåÀε¥ ±¸±ÛÀº ÀÚü Æò°¡¿¡¼µµ ÀÛ¾÷ ºÎÇÏ¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â ´Ù´Â °ÍÀ» È®ÀÎ Çß´Ù°í ¹àÇû´Ù.
¼º´É ÀúÇϸ¦ ÀÎÁ¤ Çß´ø ÀÎÅÚ ¿ª½Ã ÀڽŵéÀÌ »ç¿ëÇÑ ¹æ¹ý º¸´Ù ¸®Æ®Æú¸°ÀÌ ´õ ³ªÀº °á°ú¸¦ °¡Á®´Ù Áشٰí ÀÎÁ¤Çß´Ù°í ÇÑ´Ù. ÀÎÅÚÀº ¸®Æ®Æú¸°¿¡ ´ëÇÑ Áö¿øÀ» À§ÇØ ´Ù¾çÇÑ ¿ÀÇ ¼Ò½º ÄÄÆÄÀÏ·¯¿Í Çù·Â ÁßÀ̸ç OS º¥´õµé ¿ª½Ã ÀÌ¿¡ ´ëÇÑ Áö¿øÀ» º¸ÁõÇÑ °ÍÀ¸·Î ÀüÇØÁ³´Ù.
´Ü, ±¸±ÛÀÌ Ã£¾Æ³½ ¸®Æ®Æú¸° ±â¹ýÀº ºê·ÎµåÀ£ ÀÌ»ó(6¼¼´ë ÄÚ¾î ÇÁ·Î¼¼¼ ÀÌÈÄ)¿¡¼± Ãß°¡ÀûÀÎ º¸¿Ï Á¶Ãë°¡ º´ÇàµÇ¾ß Çϱ⠶§¹®¿¡ ¸¶ÀÌÅ©·ÎÄÚµå ¾÷µ¥ÀÌÆ®°¡ ÇÊ¿äÇÑ »óȲÀÌ´Ù.
http://www.kbench.com/?q=node/184987