ÆÄÀÌÇÁ¶óÀΡ¤¼öÆÛ½ºÄ®¶ó, ºñ¼øÂ÷½ÇÇࡤÃßÃø½ÇÇà ¿ø¸®ºÐ¼®À¸·Î
¸áÆ®´Ù¿î°ú ½ºÆåÅÍ Ãë¾àÁ¡ÀÇ °ø°Ý¿ø¸® ¿ÏÀüºÐ¼®
[º¸¾È´º½º=³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ] ¿¬ÃʺÎÅÍ ÀÏ¸í ¡®CPU°ÔÀÌÆ®¡¯¶ó´Â »ç°í°¡ ¾÷°è¸¦ ¶°µé½âÇÏ°Ô ÇÏ°í ÀÖ´Ù. 20¿© ³â°£ ÀÌ·± Ãë¾àÁ¡ÀÌ ¹ß°ßµÇÁö ¾ÊÀº »óÅ·Π°è¼Ó Á¦Ç°µéÀÌ ÆǸŵŠ¿Ô´Ù´Â »ç½Çµµ ³î¶øÁö¸¸, ÀÎÅÚÀÇ ¡®¾÷°è ¸ðµÎ°¡ ºñ½ÁÇÑ Ãë¾àÁ¡À» °¡Áö°í ÀÖ´Ù¡¯¶ó´Â ¹°Å¸±â½Ä ¹ßÇ¥¶óµç°¡, ±ä±ÞÇÏ°Ô BIOS ÆÐÄ¡¸¦ ¹èÆ÷ÇßÁö¸¸ ÆÐÄ¡ ÀÚü°¡ ¹®Á¦¸¦ ÀÏÀ¸ÄÑ ·Ñ¹éÇ϶ó°í Çߴٵ簡, Ãë¾àÁ¡ ÆÐÄ¡°¡ ¼º´ÉÀúÇϸ¦ ÀÏÀ¸Å³ ¼ö´Â ÀÖÀ¸³ª Àü¹ÝÀûÀ¸·Î ¹«½ÃÇÒ ¸¸ÇÑ ¼öÁØÀ̶ó°í ÇßÁö¸¸ °æ¿ì¿¡ µû¶ó 30% ÀÌ»ó ¼º´ÉÀÌ ³·¾ÆÁö´Â °æ¿ì°¡ º¸°íµÆ´Ùµç°¡, °¢ÀÚÀÇ ÀÔÀå¿¡ µû¸¥ ÁÖÀå°ú È®ÀεÇÁö ¾ÊÀº ¾ê±âµé·Î ¾÷°è°¡ ¸Å¿ì ½Ã²ô·´´Ù. ¹«¾ùº¸´Ù È¥¶õ½º·¯¿î °Ç »ç¿ëÀÚµéÀÌ´Ù. »ç¿ëÀÚµéÀº ¾÷°è ¼±µµ¾÷üµéÀÌ ¸íÈ®ÇÑ °¡À̵å¶óÀÎÀ» Á¦½ÃÇØÁÙ °ÍÀ̶ó´Â ÃʹÝÀÇ ±â´ë¸¦ ¾î´À Á¤µµ Á¢Àº ä »óȲÀ» °ü¸ÁÇÒ »ÓÀÌ´Ù.
[À̹ÌÁö=iclickart]
»ç½Ç ÀÌ Ãë¾àÁ¡µéÀÇ ¹ß°ßÀº ´©±º°¡ÀÇ Ç¥Çö´ë·Î CPU ¾÷°è¿¡ »õ·Î¿î ÁöÆòÀÌ ¿¸° °ÍÀ̳ª ¸¶Âù°¡Áö´Ù. ±×·¸±â ¶§¹®¿¡ ±×Åä·Ï ¿À·£ ±â°£ µ¿¾È È®ÀÎÇÏÁö ¸øÇÑ °ÍÀÌ ¹«¸®´Â ¾Æ´Ï´Ù. ÇÏÁö¸¸ ½Ç»ç¿ëÀÚ ÀÔÀå¿¡¼´Â ¾î¶² ÆÐÄ¡¸¦ ÇØ¾ß ÇÏ°í ½ÇÁ¦ ¾î¶² À§ÇèÀÌ ÀÖ´ÂÁö¿¡ ´ëÇØ ´©±º°¡ ¸íÈ®ÇÏ°Ô ¾Ë·ÁÁÖ¾úÀ¸¸é ÇÏ´Â ¹Ù¶÷ÀÌ ÀÖÀ» °ÍÀ¸·Î º»´Ù. ÀÌ Ãë¾àÁ¡µéÀº ¸ðµç »óȲ¿¡¼ µ¿ÀÏÇÏ°Ô À§ÇèÇÑ °ÍÀº ¾Æ´Ï¸ç ÆÐÄ¡¿¡µµ ±×¿¡ µû¸£´Â Æ®·¹À̵å¿ÀÇÁ°¡ ÀÖ´Ù. ±×·¸±â ¶§¹®¿¡ ¾î¶² °æ¿ì´Â ²À ÆÐÄ¡¸¦ Çϱ⺸´Ù´Â ´Ù¸¥ º¸¿ÏÃ¥À¸·Î ´ëÀÀÇÏ´Â ¹æ¹ýµµ °¡´ÉÇÒ °ÍÀÌ°í, ¾î¶² °æ¿ì´Â ÆÐÄ¡¸¦ ÇϱⰡ ¸Å¿ì ¾î·Á¿î °æ¿ìµµ ÀÖÀ» °ÍÀÌ´Ù. ±×·¸Áö¸¸ ¾î¶² ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ´Â ÀÏ´Ü ±× ¹®Á¦¿¡ ´ëÇؼ Àß ÀÌÇØÇÏ´Â ÀÏÀÌ Áß¿äÇÏ´Ù. ±×¸®°í ÀÌ »ç¾ÈÀ» Àß ÀÌÇØÇϱâ À§Çؼ´Â Áö³ ¼ö½Ê ³â°£ CPU°¡ ¾î¶² ½ÄÀ¸·Î ¹ßÀüÇØ¿Ô´ÂÁö¿¡ ´ëÇؼ ¸ÕÀú ¾Ë¾Æº¸Áö ¾ÊÀ¸¸é ¾È µÈ´Ù.
ÆÄÀÌÇÁ¶óÀΰú ¼öÆÛ½ºÄ®¶ó
ÃÊâ±â CPUÀÇ ±¸Á¶´Â ¸Å¿ì ´Ü¼øÇÏ°Ô, Áö±Ý ½ÇÇàÇØ¾ß ÇÏ´Â ¸í·ÉÀÌ ÀúÀåµÈ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ °®´Â ·¹Áö½ºÅÍ°¡ ÀÖ¾ú°í(PC: Program Counter), CPU´Â ¾îµå·¹½º ¹ö½º¸¦ ÅëÇØ ÇØ´ç ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» Â÷·Ê´ë·Î ÀÐ¾î¼ ½ÇÇàÇÏ´Â ±¸Á¶¿´´Ù. ¸ðµç ¸í·ÉÀº ¼øÂ÷ÀûÀ¸·Î ½ÇÇàµÇ¸ç ¾ÕÀÇ ¸í·ÉÀÌ ¿Ï·áµÇ±â Àü¿¡´Â ¾Æ¹« °Íµµ ÇÒ ¼ö ¾øÀÌ ´ë±âÇØ¾ß Çß´Ù. ±×·±µ¥ ½ÇÁ¦ ¸í·É¾î ½ÇÇàÀº ÇϳªÀÇ ºÐÇØÇÒ ¼ö ¾ø´Â ´ÜÀ§ ÀÛ¾÷ÀÌ ¾Æ´Ï¶ó ¸Þ¸ð¸®¿¡¼ Àб⡤Çؼ®¡¤½ÇÇࡤ°á°ú¾²±â µîÀÇ ´õ ÀÛÀº ´ÜÀ§ ÀÛ¾÷À¸·Îµµ ³ª´ ¼ö Àֱ⠶§¹®¿¡, ÀÌ·± ÀÛ¾÷À» °¢°¢ ºÐ´ãÇÏ´Â À¯´ÖÀ» µû·Î µÎ¾î ÀüÀûÀ¸·Î ¼öÇàÇÏ´Â ±¸Á¶·Î ¹Ù²Ù¸é ÈξÀ È¿À²ÀûÀÌ µÉ ¼ö ÀÖ´Ù. ÀÌ·± ±¸Á¶¸¦ ÆÄÀÌÇÁ¶óÀÎ(pipeline)À̶ó ÇÏ°í, ±âÁ¸ÀÇ ±¸Á¶¿¡ ºñÇØ ¼º´É ¸é¿¡¼ ¿ì¿ùÇÏ´Ù´Â Á¡ÀÌ Áõ¸íµÆ±â ¶§¹®¿¡ Áö±Ý¿¡ ¿Í¼´Â ½ÃÀå¿¡¼ ÆǸŵǴ ¾î¶² CPU¶óµµ ÀÌ·± ±¸Á¶¸¦ °¡Áö°í ÀÖ´Ù. CPUÀÇ Á¾·ù¿¡ µû¶ó ÆÄÀÌÇÁ¶óÀÎ ±íÀÌ´Â ´Ù¸£Áö¸¸ ÀϹÝÀûÀ¸·Î Fetch-Decode-Execute-WriteBackÀÇ ³× ´Ü°è´Â ¹Ýµå½Ã Æ÷ÇԵǸç ÀÌ°ÍÀÌ °¡Àå ´Ü¼øÈµÈ ÆÄÀÌÇÁ¶óÀÎ ±¸Á¶¶ó ÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì °¢ ´Ü°èÀÇ ±â´ÉÀº ´ÙÀ½°ú °°´Ù.
Fetch : ÇÁ·Î±×·¥ÀÇ ½ÇÇàÁöÁ¡ÀÌ °¡¸®Å°´Â ¸í·ÉÀ» °¡Á®¿Â´Ù.
Decode : ÇØ´ç ¸í·ÉµéÀ» ¸¶ÀÌÅ©·Î¿ÉÀ¸·Î º¯°æÇÑ´Ù. ÀÎÅÚ°ú °°Àº CISC±¸Á¶¿¡¼´Â ÇϳªÀÇ ¸í·ÉÀÌ ¿©·¯ °³ÀÇ ¸¶ÀÌÅ©·Î¿ÉÀ¸·Î ÂÉ°³Áö±âµµ ÇÑ´Ù.
Execute : ¸¶ÀÌÅ©·Î¿ÉÀ» ½ÇÇàÇÑ´Ù.
WriteBack : ½ÇÇà°á°ú¸¦ ÀúÀåÇÑ´Ù.
À̶§ °¢ ´Ü°è¸¦ ´ã´çÇÏ´Â À¯´ÖµéÀÌ ¸ðµÎ µ¶¸³ÀûÀ¸·Î ÀÛµ¿ÇϹǷΠÆÄÀÌÇÁ¶óÀÎÀ» ¿©·¯ °³ µÎ¾î ¸í·ÉÀ» µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ±¸Á¶·Î ¼³°èÇÏ¸é ¼º´ÉÀ» ¸¹ÀÌ ²ø¾î¿Ã¸± ¼ö Àִµ¥ ÀÌ·± ±¸Á¶¸¦ ¼öÆÛ½ºÄ®¶ó(SuperScalar)¶ó°í ÇÑ´Ù. µû¶ó¼ µ¿ÀÏÇÑ Å¬·°ÀÇ CPU¶ó°í ÇÏ´õ¶óµµ ÆÄÀÌÇÁ¶óÀÎÀ» ¸î °³ °¡Áö°í ÀÖ´ÂÁö, ¾ó¸¶³ª È¿À²ÀûÀ¸·Î ÀÛµ¿ÇÏ°í ÀÖ´ÂÁö µû¶ó ¼º´ÉÀº ¸¹ÀÌ Â÷ÀÌ°¡ ³´Ù. ÀÌ ±¸Á¶¿¡¼ Áß¿äÇÑ °ÍÀº ÆÄÀÌÇÁ¶óÀÎÀÌ Àá½Ã¶óµµ ½¬Áö ¾Ê°Ô ÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼ ÀÌ °æ¿ì Fetch ´Ü°è¿¡¼´Â ¸í·ÉÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ °¡Á®¿ÀÁö ¾Ê°í ¿©·¯ °³¸¦ µ¿½Ã¿¡ °¡Á®¿Í¼ ½ÇÇàÀ¯´Ö¿¡ ÀûÀçÇÏ°í ÇѲ¨¹ø¿¡ ½ÇÇàÇÏ°Ô ÇÑ´Ù. ¸¸¾à ÆÄÀÌÇÁ¶óÀÎÀÇ ¾îµò°¡¿¡¼ º´¸ñÀÌ »ý°Ü¼ ³ë´Â À¯´ÖÀÌ ÀÖ°Ô µÇ¸é ±×¸¸Å È¿À²ÀÌ ¶³¾îÁö°Ô µÇ±â ¶§¹®¿¡ Ç×»ó ÆÄÀÌÇÁ¶óÀÎÀÇ ¸ðµç À¯´ÖÀº ²Ë²Ë ä¿ö¼ ½ÇÇàµÇ°í ÀÖÁö ¾ÊÀ¸¸é ¾È µÈ´Ù. ±×·¡¼ ÆÄÀÌÇÁ¶óÀÎÀÌ µµÀÔµÈ ÀÌÈÄ Ç×»ó CPU ¼³°èÀÚµéÀÇ ÁÖµÈ °ü½É»ç´Â ÆÄÀÌÇÁ¶óÀÎÀ» ³îÁö ¾Ê°Ô ÇÏ´Â °ÍÀÌ µÆ´Ù. ÀÌ·± Çʿ伺¿¡ ÀÇÇØ µÚ¿¡ ¼³¸íÇÏ´Â ºñ¼øÂ÷½ÇÇà(Out-Of-Order-Execution)À̳ª ÃßÃø½ÇÇà(Speculative Execution)ÀÌ °í¾ÈµÈ °ÍÀÌ´Ù.
[Ãâó=https://en.wikipedia.org/wiki/Superscalar_processor]
À§ ±×¸²Àº ¼öÆÛ½ºÄ®¶ó CPUÀÇ ÆÄÀÌÇÁ¶óÀÎ ¿¹½Ã´Ù. °¢°¢ IF=Instruction Fetch, ID=Instruction Decode, EX=Execute, MEM=Memory Access, WB=Register WriteBack ´Ü°è¸¦ ³ªÅ¸³½´Ù.
ºñ¼øÂ÷½ÇÇà°ú ÃßÃø½ÇÇà
ÆÄÀÌÇÁ¶óÀÎÀ» ³îÁö ¾Ê°Ô ÇÏ·Á¸é ´ç¿¬È÷ ½ÇÇàÀ¯´ÖÀº Ç×»ó ¸¶ÀÌÅ©·Î¿ÉÀ» ÀûÀçÇؼ ±¸µ¿µÇ°í ÀÖ¾î¾ß ÇÑ´Ù. ±×¸®°í Çö´ëÀûÀÎ CPU´Â ½ÇÇàÀ¯´ÖÀ» º¹¼ö °³ °¡Áö°í Àֱ⠶§¹®¿¡ ÀÌ À¯´Öµé Áß ¾î´À °Íµµ ½¬Áö ¾Ê°í ¸í·ÉÀ» °è¼Ó ¹Ýº¹Çؼ ½ÇÇàÇÏ°í ÀÖ´Â »óȲÀÌ °¡Àå È¿À²ÀÌ ÁÁ´Ù. ±×·±µ¥ ¾î¶² »óȲ¿¡¼´Â ¸í·ÉÀ» ¹Ù·Î ½ÇÇàÇÏÁö ¸øÇÏ°í ´ë±âÇØ¾ß ÇÏ´Â °æ¿ì°¡ »ý±ä´Ù. ÆÄÀÌÇÁ¶óÀÎÀÌ 3°³ÀÎ °¡»óÀÇ CPU°¡ Àִµ¥ ´ÙÀ½ ¸í·ÉµéÀ» ½ÇÇàÇÏ·Á°í ÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ.
A : ·¹Áö½ºÅÍ R1°ú R2¸¦ ´õÇؼ R3¿¡ ÀúÀåÇÑ´Ù.
B : R3ÀÇ ³»¿ëÀÌ 100º¸´Ù Å©¸é C¸¦, ±×·¸Áö ¾ÊÀ¸¸é D¸¦ ½ÇÇàÇÑ´Ù.
C : R3¿¡¼ 100À» »©¼ R4¿¡ ÀúÀåÇÑ´Ù.
D : R3¿¡ 100À» ´õÇؼ R5¿¡ ÀúÀåÇÑ´Ù.
ÀÌ °æ¿ì ¸í·ÉÀº 3°³ ÀÌ»óÀÌÁö¸¸ ¸ðµç ÆÄÀÌÇÁ¶óÀÎÀ» ÇѲ¨¹ø¿¡ ±¸µ¿ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé AÀÇ °á°ú¸¦ È®Á¤Çϱâ Àü±îÁö´Â B¿¡¼ÀÇ ÆÇ´Ü°á°ú°¡ ¾î¶»°Ô µÉÁö ¾Ë ¼ö ¾ø°í, ±×¿¡ µû¶ó C¿Í D ¾çÂÊ Çѱºµ¥ÀÇ ¸í·É¸¸À» ½ÇÇàÇÏ°Ô µÇ±â ¶§¹®ÀÌ´Ù. À̶§´Â A¿Í B±îÁö¸¸ ÆÄÀÌÇÁ¶óÀο¡ ÀûÀçÇÑ ´ÙÀ½ AÀÇ °á°ú°¡ ³ª¿Ã ¶§±îÁö ´ë±âÇÑ ÈÄ B¸¦ ½ÇÇàÇÏ°í, ±× °á°ú¿¡ µû¶ó C³ª D¸¦ ´Ù½Ã ÆÄÀÌÇÁ¶óÀο¡ ¿Ã·Á¼ ½ÇÇàÇÏ´Â °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. ÀÌ·¸°Ô µÇ¸é AÀÇ °á°ú°¡ ³ª¿Ã ¶§±îÁö ÆÄÀÌÇÁ¶óÀÎÀÌ ¸ØÃß°Ô µÇ°í º¹¼ö°³ÀÇ ÆÄÀÌÇÁ¶óÀÎÀ» µÐ Àǹ̰¡ ¾ø¾îÁø´Ù. ¸¸¾à ÀÌ ÆÄÀÌÇÁ¶óÀεéÀ» Áß´Ü ¾øÀÌ ¸ðµÎ ä¿ö¼ ½ÇÇàÇÒ ¼ö ÀÖ´Ù¸é ÈξÀ È¿À²ÀûÀÎ ¼öÇàÀÌ °¡´ÉÇÏ°ÚÁö¸¸ ¸í·É B´Â ¸í·É AÀÇ °á°ú¿¡ ÀÇÁ¸ÀûÀ̹ǷΠA°¡ ½ÇÇà¿Ï·á µÇ±â Àü±îÁö C¸¦ ½ÇÇàÇÒÁö D¸¦ ½ÇÇàÇÒÁö ÆÇ´ÜÇÒ ¼ö ¾ø´Ù. ÀÌ·± ¹®Á¦¸¦ ¾î¶»°Ô ÇؼÒÇÒ ¼ö ÀÖÀ»±î?
¿©±â¼ µµÀÔµÈ °ÍÀÌ ÃßÃø½ÇÇà(Speculative Execution)À¸·Î, À§ÀÇ ¿¹¿¡¼Ã³·³ ¸í·ÉÀÇ ½ÇÇà°á°ú¿¡ ´ÙÀ½ ¸í·É¼öÇàÀÌ ÀÇÁ¸ÀûÀ̶ó¸é CPU´Â ¿©·¯ °¡Áö µ¥ÀÌÅÍ¿¡ ±Ù°ÅÇØ ÆÇ´Ü°á°ú¸¦ ÃßÃøÇÑ ÈÄ ´ÙÀ½ ¸í·ÉÀ» ÆÄÀÌÇÁ¶óÀο¡ ÀûÀçÇØ ¹ö¸°´Ù. ÃßÃøÀÌ ¸ÂÀ¸¸é °è¼ÓÇؼ ¸í·ÉÀ» ¼öÇàÇÏ¸é µÇ´Â °ÍÀÌ°í ¸ÂÁö ¾Ê´Ù¸é ½ÇÆÐÇÑ ÀÌÈÄÀÇ ÆÄÀÌÇÁ¶óÀÎÀ» ºñ¿ì°í ±× ºÎºÐºÎÅÍ ´Ù½Ã ½ÇÇàÇÏ°Ô ÇÑ´Ù. µû¶ó¼ ÃßÃøÀÌ Á¤È®ÇÏ´Ù¸é ÆÄÀÌÇÁ¶óÀÎÀÇ È¿À²¼ºÀÌ ¸Å¿ì ³ô¾ÆÁö°í ¼º´ÉÀº ¿Ã¶ó°£´Ù. ¾Õ¼ÀÇ ¿¹´Â ÃßÃø½ÇÇàÀ» Àû¿ëÇÏ¸é ´ÙÀ½°ú °°ÀÌ ´Ù½Ã ¾µ ¼ö ÀÖ´Ù.
A : ·¹Áö½ºÅÍ R1°ú R2¸¦ ´õÇؼ R3¿¡ ÀúÀåÇÑ´Ù.
B : R3ÀÇ ³»¿ëÀÌ 100º¸´Ù Å©¸é C¸¦, ±×·¸Áö ¾ÊÀ¸¸é D¸¦ ½ÇÇàÇÑ´Ù. ±×·±µ¥ ÀÌ ºÐ±âÀÇ ±âÁ¸ °á°ú¸¦ º¸¸é C°¡ ½ÇÇàµÇ´Â °æ¿ì°¡ ¸¹¾Ò´Ù. µû¶ó¼ ÃßÃø½ÇÇàÀ¸·Î C¸¦ ½ÇÇàÇÑ´Ù.
C : R3¿¡¼ 100À» »©¼ R4¿¡ ÀúÀåÇÑ´Ù.
ÀÌ °æ¿ì A, B, C¸¦ °°ÀÌ ÆÄÀÌÇÁ¶óÀο¡ ÀûÀçÇÏ°í ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ¹°·Ð AÀÇ °á°ú´Â µ¿ÀÏÇÏ°Ô ´ë±âÇØ¾ß ÇÏÁö¸¸ ±× °á°ú·Î ÀÎÇÑ ¼öÇà¸í·ÉÀÎ C´Â ÀÌ¹Ì Fetch¿Í Decode¸¦ °ÅÃļ ½ÇÇàÀ¯´Ö¿¡ ÀûÀçµÅ ÀÖÀ¸¹Ç·Î BÀÇ °á°ú°¡ ÃßÃø°ú ÀÏÄ¡ÇÑ´Ù¸é ÆÄÀÌÇÁ¶óÀο¡ ¸í·ÉÀ» ¿Ã¸®´Â °úÁ¤ ¾øÀÌ ¹Ù·Î ½ÇÇàÇÒ ¼ö ÀÖ°í µû¶ó¼ ½Ã°£ÀÌ Å©°Ô ´ÜÃàµÈ´Ù. ¸¸¾à ÃßÃøÀÌ ¸ÂÁö ¾Ê¾Ò´Ù¸é ±× ½ÃÁ¡¿¡¼ºÎÅÍÀÇ ÆÄÀÌÇÁ¶óÀÎÀº Ãë¼ÒµÇ°í ´Ù½Ã ½ÇÇàÇØ¾ß ÇϹǷΠ¼º´É ¸é¿¡¼ ºÒÀÌÀÍÀÌ »ý±ä´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ Á¶°ÇÀ̳ª ºÐ±â´Â ¸Å¿ì ·çƾÇÏ°Ô ½ÇÇàµÇ±â ¶§¹®¿¡(¹Ýº¹¹®À̶óµç°¡) ½ÇÇèÀ» Çغ¸¸é ³î¶ø°Ôµµ ÀÌ ÃßÃø½ÇÇàÀÇ ÀûÁßµµ´Â ¸Å¿ì ³ô´Ù. ±×·¸±â ¶§¹®¿¡ ÀüüÀûÀ¸·Î º¸¸é ¾²Áö ¾Ê´Â °Íº¸´Ù ¾²´Â ÆíÀÌ ÈξÀ ¼º´ÉÀ» ³ôÀ̴µ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ°í, ÀÌ·± ÀÌÀ¯·Î ÃßÃø½ÇÇ൵ Çö´ëÀûÀÎ CPU¶ó¸é ±âº»ÀûÀ¸·Î ¸ðµÎ Àû¿ëµÅ ÀÖ´Ù.
ºñ¼øÂ÷½ÇÇà(Out-Of-Order-Execution)µµ ÃßÃø½ÇÇà°ú ¸¶Âù°¡Áö·Î ¸í·ÉÀ» ÃÖ´ëÇÑ º´·ÄÀûÀ¸·Î ¸¹ÀÌ ½ÇÇàÇÒ ¼ö ÀÖ°Ô Çϱâ À§Çؼ °í¾ÈµÆ´Ù. Fetch´Ü°è¿¡¼´Â ¸í·ÉÀ» º¹¼ö°³·Î °¡Á®¿ÀÁö¸¸ ÀÌ ¸í·ÉµéÀ» ¸ðµÎ ¼ø¼´ë·Î ½ÇÇàÇÏ°Ô µÇ¸é Áß°£ÀÇ Á¶°Ç¹®À̳ª °¢ ¸í·É°£ÀÇ ÀÇÁ¸¼º ¶§¹®¿¡ ÇѲ¨¹ø¿¡ ½ÇÇàÇÏÁö ¸øÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ¸¸¾à ¸í·ÉµéÀÇ ¼ø¼¸¦ ÀϺΠ¹Ù²Ù¾îµµ ÃÖÁ¾ÀûÀÎ °á°ú¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾ÊÀ¸¸ç ±×·¸°Ô ¼ø¼¸¦ ¹Ù²ÞÀ¸·Î½á È¿À²À» ³ôÀÏ ¼ö ÀÖ´Ù¸é CPU´Â ±×·¸°Ô ½ÇÇàÇÏ°Ô ¼³°èµÅ ÀÖ´Ù. µû¶ó¼ ¸í·ÉÀº Ç×»ó ÀÔ·ÂÇÑ ¼ø¼´ë·Î ½ÇÇàµÇÁö´Â ¾Ê°í ÃÖ´ë È¿À²À» ³¾ ¼ö ÀÖ´Â ¼ø¼·Î ¹Ù²Ù¾î¼ ½ÇÇàÇÏÁö¸¸ °á°ú´Â ¼ø¼´ë·Î ½ÇÇàµÇ´Â °Íó·³ ´Ù½Ã Á¤·ÄÇÏ°Ô µÈ´Ù. Çö´ëÀûÀÎ CPU¶ó¸é ¸ðµÎ °¡Áö°í ÀÖ´Â ÀçÁ¤·Ä ¹öÆÛ(ROB, Re-Order Buffer)¿¡¼ DecodeµÈ ¸¶ÀÌÅ©·Î¿ÉµéÀÇ ¼ø¼¸¦ ¹Ù²Ù°Ô µÇ´Â °ÍÀÌ´Ù.
¡ãÀÎÅÚ ½ºÄ«ÀÌ·¹ÀÌÅ© CPUÀÇ °£·«ÈµÈ ½Ì±ÛÄÚ¾î ±¸Á¶ [Ãâó=https://meltdownattack.com/meltdown.pdf]
MeltDown°ú Spectre °ø°ÝÀÇ ±âº»¿ø¸®
À̹ø¿¡ °ø°³µÈ Ãë¾àÁ¡ÀÎ MeltDown°ú Spectre´Â ÀÌ·± Çö´ëÀû CPUÀÇ ½ÇÇ౸Á¶ ÀÚü¸¦ °ø°ÝÇÏ´Â °ÍÀÌ´Ù. ¾Õ¼ ¾ð±ÞÇÑ´ë·Î CPU´Â ÀÔ·ÂµÈ ¸í·ÉÀ» °¡±ÞÀû ÇѲ¨¹ø¿¡ º´·ÄÀûÀ¸·Î ½ÇÇàÇÏ·Á°í Çϸç ÇÊ¿äÇÏ´Ù¸é ½ÇÇà ¼ø¼¸¦ ¹Ù²Ù±âµµ ÇÏ°í °¡´É¼ºÀÌ ³ôÀº ¸í·ÉÀº ÃßÃøÇØ ¹Ì¸® ½ÇÇàÇϱ⵵ ÇÑ´Ù. ±×¸®°í ÃßÃøÀÌ Æ²·È´Ù¸é ÆÄÀÌÇÁ¶óÀÎÀ¸·ÎºÎÅÍ ÀÌ ¸í·ÉÀ» Áö¿òÀ¸·Î½á ¿À½ÇÇàÀÇ °¡´É¼ºÀ» ¸·´Â´Ù. ´Ù½Ã ¸»ÇØ ÃÖ´ëÇÑ ¸¹ÀÌ ÃßÃøÇØ ¸ÕÀú ½ÇÇàÇÏ°í ÃßÃøÀÌ ¸ÂÁö ¾Ê´Â´Ù¸é Ãë¼ÒÇÑ´Ù, ¶ó´Â °ÍÀÌ ±âº»ÀûÀÎ ½ÇÇà¹æ½ÄÀÌ°í, ÀÌ °úÁ¤¿¡¼ ½ÇÇàµÅ¼´Â ¾È µÇ´Â ¸í·ÉÀÌ ½ÇÇàµÉ ¼öµµ ÀÖÀ¸³ª ¹Ù·Î Ãë¼ÒµÅ ¹«È¿ÈµÇ±â ¶§¹®¿¡ ±×·ÎºÎÅÍ ¾î¶² À̵æÀ» ÃëÇϰųª µ¥ÀÌÅ͸¦ À¯ÃâÇÏ´Â ÀÏÀº ºÒ°¡´ÉÇÏ´Ù´Â °ÍÀÌ Áö³ 20¿© ³â°£ Á¤¼³À̾ú´Ù.
±×·±µ¥ À̹ø¿¡ ¹ßÇ¥µÈ ±¸±Û ÇÁ·ÎÁ§Æ® Á¦·ÎÀÇ ³í¹®Àº ÀÌ Á¤¼³À» µÚÁý¾î¾þÀº °ÍÀÌ´Ù. ¾ç °ø°ÝÀÇ ±âº» ¿ø¸®´Â ¾ÆÁÖ Èí»çÇÏ°í ÀÌ·ÐÀûÀ¸·Î´Â ¸ðµç Çö´ëÀû CPU¿¡ ´Ù Àû¿ëµÈ´Ù. ´Ù¸¸ ½ÇÁ¦ Çʵ忡¼ °ø°ÝÀÌ À¯È¿ÇÑÁö ¾Æ´ÑÁö´Â ±¸ÇöÀÇ Â÷À̳ª ±âŸ ¿ä¼ÒµéÀÇ ¿µÇâÀ» ¹Þ±â ¶§¹®¿¡ Å×½ºÆ®Çغ¸±â Àü¿¡´Â ÆÇ´ÜÇÒ ¼ö ¾ø´Ù. µÎ °³ °ø°ÝÀÇ ÇÙ½ÉÀ» °£´ÜÇÏ°Ô Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.
1) µ¥ÀÌÅ͸¦ È®ÀÎÇϱâ À§ÇÑ ¸Þ¸ð¸®¸¦ ÁغñÇÏ°í ij½¬¸¦ »èÁ¦ÇÑ´Ù(Flush).
2) °ø°ÝÀÚ´Â ºñ¼øÂ÷½ÇÇà ¶Ç´Â ÃßÃø½ÇÇàÀ» ÅëÇØ ¿ø·¡ ½ÇÇàµÅ¼´Â ¾È µÇ´Â Äڵ带 ½ÇÇàÇÏ°Ô ÇÑ´Ù.
3) 2)ÀÇ ÄÚµå´Â ¿ø·¡ ¡®½ÇÇàµÅ¼´Â ¾È µÇ´Â¡¯ °ÍÀ̱⠶§¹®¿¡, ÀÌ »ç½ÇÀÌ È®ÀεǴ Áï½Ã ÆÄÀÌÇÁ¶óÀο¡¼ Áö¿öÁö°í Ãë¼ÒµÈ´Ù. ÇÏÁö¸¸ ÀÌ·¸°Ô Ãë¼ÒµÅ¾ß ÇÑ´Ù´Â »ç½ÇÀ» ¾Ë°í ½ÇÁ¦ Ãë¼ÒÇϱâ Àü±îÁö ¾à°£ÀÇ ½Ã°£ÀÌ °É¸®´Âµ¥ ÀÌ ½Ã°£ µ¿¾ÈÀ» misspeculation window¶ó ÇÑ´Ù. °ø°ÝÀÚ´Â misspeculation window¸¦ ´Ã¸®±â À§Çؼ Á¢±ÙÇØ¾ß ÇÏ´Â ¸Þ¸ð¸®ÀÇ Ä³½¬¸¦ ¸®¼ÂÇÏ´Â µî ´Ù¾çÇÑ ÀåÄ¡¸¦ »ç¿ëÇÑ´Ù.
4) misspeculation window µ¿¾È ½ÇÇàµÈ °ø°ÝÀÚÀÇ Äڵ尡 º¸È£µÇ´Â Á¤º¸¿¡ Á¢±ÙÇÑ ÈÄ ÀÌ °ª¿¡ ´ëÀÀÇÏ´Â 1)ÀÇ ¸Þ¸ð¸® ºÎºÐÀ» ÀÐ¾î¼ Ä³½¬¿¡ ³²±ä´Ù. ¸¸¾à °ø°ÝÀÌ ³Ê¹« ´À¸®°Å³ª Ãë¼Ò°¡ »¡¸® µÇ¸é ij½¬¸¦ ³²±â´Â ÀÏÀº ºÒ°¡´ÉÇØÁö°í, °ø°ÝÀº ½ÇÆÐÇÑ´Ù.
5) 1)ÀÇ ¸Þ¸ð¸®¸¦ Â÷·Ê´ë·Î ÀÐÀ¸¸é¼ ¼Óµµ¸¦ ÃøÁ¤Çϸé ij½¬°¡ ÀÖ´Â ºÎºÐÀ» È®ÀÎÇÔÀ¸·Î½á º¸È£µÈ Á¤º¸¸¦ °£Á¢ÀûÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù(Reload). ÀÌ·± ¹æ¹ýÀ» Flush+Reload attackÀ̶ó ÇÑ´Ù.
¶Ç ÀÌ ¿ø°í¸¦ Á¤¸®ÇÏ°í ÀÖ´Â ¿ÍÁß¿¡ ÇÁ¸°½ºÅÏ ´ëÇаú ¿£ºñµð¾Æ¿¡¼ MeltDownPrime°ú SpectrePrimeÀ̶ó´Â »õ·Î¿î °ø°Ý¹æ¹ý¿¡ ´ëÇÑ ³í¹®À» ³»³õ¾Ò´Âµ¥ ±âº»ÀûÀÎ ¿ø¸®´Â ±âÁ¸ÀÇ MeltDown, Spectre¿Í Å©°Ô ´Ù¸£Áö ¾ÊÀº °ÍÀ¸·Î º¸ÀδÙ. ´Ù¸¸ °ø°Ý ½Ã Flush+Reloadó·³ ¸Þ¸ð¸® Àбâ·Î ij½¬¸¦ ³²±â´Â °ÍÀÌ ¾Æ´Ï¶ó Prime+Probe, Áï ¾²±â·Î ÀÎÇÑ Ä³½¬ Å»¶ôÀ¸·Î µ¥ÀÌÅ͸¦ À¯ÃâÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. Áï MeltDownPrime°ú SpectrePrimeÀº À§ÀÇ ¹æ½Ä°ú ºñ±³ÇÒ ¶§ 1) 4) 5)ÀÇ ´Ü°è¿¡¼ ¾à°£ÀÇ Â÷ÀÌ°¡ ³ª´Âµ¥ °°Àº ¹æ½ÄÀ¸·Î Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.
1) µ¥ÀÌÅ͸¦ È®ÀÎÇϱâ À§ÇÑ ¸Þ¸ð¸®¸¦ ÁغñÇÏ°í ÀÐ¾î µé¿©¼ ij½¬¿¡ ÀûÀçÇÑ´Ù(Prime).
2) °ø°ÝÀÚ´Â ºñ¼øÂ÷½ÇÇà ¶Ç´Â ÃßÃø½ÇÇàÀ» ÅëÇØ ¿ø·¡ ½ÇÇàµÅ¼´Â ¾È µÇ´Â Äڵ带 ½ÇÇàÇÏ°Ô ÇÑ´Ù.
3) 2)ÀÇ ÄÚµå´Â ¿ø·¡ ¡®½ÇÇàµÅ¼´Â ¾È µÇ´Â¡¯ °ÍÀ̱⠶§¹®¿¡, ÀÌ »ç½ÇÀÌ È®ÀεǴ Áï½Ã ÆÄÀÌÇÁ¶óÀο¡¼ Áö¿öÁö°í Ãë¼ÒµÈ´Ù. ÇÏÁö¸¸ ÀÌ·¸°Ô Ãë¼ÒµÅ¾ß ÇÑ´Ù´Â »ç½ÇÀ» ¾Ë°í ½ÇÁ¦ Ãë¼ÒÇϱâ Àü±îÁö ¾à°£ÀÇ ½Ã°£ÀÌ °É¸®´Âµ¥ ÀÌ ½Ã°£ µ¿¾ÈÀ» misspeculation window¶ó ÇÑ´Ù. °ø°ÝÀÚ´Â misspeculation window¸¦ ´Ã¸®±â À§Çؼ Á¢±ÙÇØ¾ß ÇÏ´Â ¸Þ¸ð¸®ÀÇ Ä³½¬¸¦ ¸®¼ÂÇÏ´Â µî ´Ù¾çÇÑ ÀåÄ¡¸¦ »ç¿ëÇÑ´Ù.
4) misspeculation window µ¿¾È ½ÇÇàµÈ °ø°ÝÀÚÀÇ Äڵ尡 º¸È£µÇ´Â Á¤º¸¿¡ Á¢±ÙÇÑ ÈÄ ÀÌ °ª¿¡ ´ëÀÀÇÏ´Â 1)ÀÇ ¸Þ¸ð¸® ºÎºÐ¿¡ ¾²¸é ±× À§Ä¡ÀÇ Ä³½¬°¡ Å»¶ôµÈ´Ù. ¸¸¾à °ø°ÝÀÌ ³Ê¹« ´À¸®°Å³ª Ãë¼Ò°¡ »¡¸® µÇ¸é ij½¬¸¦ Å»¶ô½ÃÅ°´Â ÀÏÀº ºÒ°¡´ÉÇØÁö°í, °ø°ÝÀº ½ÇÆÐÇÑ´Ù.
5) 1)ÀÇ ¸Þ¸ð¸®¸¦ Â÷·Ê´ë·Î ÀÐÀ¸¸é¼ ¼Óµµ¸¦ ÃøÁ¤Çϸé ij½¬°¡ ¾ø´Â ºÎºÐÀ» È®ÀÎÇÔÀ¸·Î½á º¸È£µÈ Á¤º¸¸¦ °£Á¢ÀûÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù(Probe). À̸¦ Prime+Probe attackÀ̶ó ÇÑ´Ù.
¿©±â¼ MeltDown¡®Prime¡¯ ¶Ç´Â Spectre¡®Prime¡¯À̶ó´Â À̸§ÀÌ ºÙÀº ÀÌÀ¯´Â ¸¶Áö¸·ÀÇ µ¥ÀÌÅÍ È®ÀÎ ´Ü°è¿¡¼ Prime+Probe °ø°ÝÀ» »ç¿ëÇϱ⠶§¹®À̶ó´Â Á¡À» ½±°Ô ÀÎÁöÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ °ø°ÝÀÇ Çٽɿø¸®´Â MeltDown, ¶Ç´Â Spectre¿Í µ¿ÀÏÇÏ¸ç ´ÜÁö Side Channel AttackÀÇ ¹æ½Ä¸¸ ´Ù¸£¹Ç·Î ´Ù¸¥ °ø°Ý ±â¹ýÀ̶ó±âº¸´Ù´Â ±âÁ¸ ¹æ½ÄÀÇ º¯Çü ³»Áö º¯ÁÖ Á¤µµ·Î º¸¾Æ¾ß ÇÒ °ÍÀÌ´Ù. µû¶ó¼ MeltDown°ú Spectre¿¡ ´ëÇÑ ´ëÀÀÃ¥À¸·Î MeltDownPrimeÀ̳ª SpectrePrimeµµ °ÅÀÇ ¶È°°ÀÌ ¸·À» ¼ö ÀÖÀ» °ÍÀ¸·Î ÃßÁ¤ÇÑ´Ù. ´Ù¸¸ ÇØ´ç ³í¹®¿¡¼´Â CPU ¾ÆÅ°ÅØó ·¹º§ÀÇ ´ëÀÀÃ¥¿¡ ´ëÇؼ´Â ´Ù½Ã °ËÅä°¡ ÇÊ¿äÇÒ °ÍÀ̶ó´Â Á¤µµÀÇ ÀÇ°ßÀ» ³²°ÜµÎ¾ú´Ù. µÎ °¡Áö °ø°ÝÀº ÇÙ½ÉÀûÀÎ ºÎºÐ¿¡¼ µ¿ÀÏÇϹǷΠÃß°¡ÀûÀÎ ¼³¸íÀº ºÒÇÊ¿äÇÒ °ÍÀ̳ª ¾ÕÀ¸·Î ÀÌ·¸°Ô ÀϺÎÀÇ ¹æ½ÄÀ» ¹Ù²Ù´Â º¯Çü°ø°ÝµéÀÌ °è¼ÓÇؼ ÃâÇöÇÒ °¡´É¼ºÀº ÀÖ´Ù.
ù ¹ø° ¿¬À縦 ¸¶Ä¡¸ç
¡ã³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå/CTO
´ÙÀ½ ȸ¿¡´Â ÀÌ ³»¿ëÀ» ¹ÙÅÁÀ¸·Î ½ÇÁ¦ MeltDown°ú Spectre°¡ ¾î¶² ½ÄÀ¸·Î ÀÛµ¿ÇÏ°í ¾î¶² »óȲ¿¡¼ ¾î¶² °ø°Ý ½Ã³ª¸®¿À°¡ °¡´ÉÇÑÁö, ÇØ°áÃ¥Àº ¹«¾ùÀÎÁö, ±×¿¡ µû¸£´Â ºñ¿ëÀº ¹«¾ùÀÎÁö µî¿¡ ´ëÇؼ º¸´Ù ±¸Ã¼ÀûÀ¸·Î ¾ê±âÇغ¸µµ·Ï ÇÏ°Ú´Ù. ¸ðÂÉ·Ï À̹ø ¿¬Àç°¡ ¸¹Àº »ç¶÷µé¿¡°Ô µµ¿òÀÌ µÇ±â¸¦ ±â´ëÇÑ´Ù.
[±Û_³ë±Ô³² °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(ngn@gabia.com)]
¡á CPU Ãë¾àÁ¡ Á¾ÇÕº¸°í¼ ¿¬Àç¼ø¼
¨ç Ãë¾àÁ¡ÀÇ ±âº»¿ø¸®
¨è MeltDown°ú Spectre Variant 1
¨é Spectre Variant 2
ÇÊÀÚ ¼Ò°³_ ³ë±Ô³²Àº °¡ºñ¾Æ Ŭ¶ó¿ìµå»ç¾÷ºÎÀå °â ÃÖ°í±â¼úÃ¥ÀÓÀÚ(CTO)·Î¼, IT ¾÷°è¿¡¼ ¼ö½Ê ³â°£ ½×Àº °æÇèÀ» ¹ÙÅÁÀ¸·Î °¡ºñ¾ÆÀÇ ÀÎÇÁ¶ó¸¦ °íµµÈÇÏ°í ¹ßÀü½ÃÅ°´Â ¿ªÇÒÀ» ¸Ã°í ÀÖ´Ù. ÃÖ±Ù¿¡´Â ³»ºÎ¿¡ ½×ÀÌ´Â ¼ºñ½º °ü·Ã µ¥ÀÌÅ͸¦ ½Å°æ¸ÁÀ¸·Î ó¸®ÇØ ¿î¿µÀ» ÀÚµ¿ÈÇÏ°í º¸¾È°ú Ŭ¶ó¿ìµå ÀÎÇÁ¶ó¸¦ °íµµÈÇÏ´Â °Í¿¡ °ü½ÉÀ» °®°í ÀÖ´Ù. °¡Ä¡ÅõÀÚ»çÀÌÆ® ¹ë·ù½ºÅ¸ ±â¼úÀÌ»ç, ¿µ»óº¸¾È¼ºñ½º ¿¡¹öºä ´ëÇ¥À̻縦 ¿ªÀÓÇß´Ù.
[¿À´ÙÀÎ ±âÀÚ(boan2@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>