http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=8017 [º¹»ç]
±âÁ¸ ÇÁ·Î±×·¥À» º´·Ä Çϵå¿þ¾î¿¡¼ Àß ¼öÇàµÇ°Ô °íÄ¡´Â °ÍÀÌ ¾î·Æ±â ¶§¹®¿¡, ¸ðµç ÇÁ·Î¼¼¼µéÀÌ °øÀ¯ÇÏ´Â ´ÜÀÏ ½ÇÁ¦ ÁÖ¼Ò °ø°£À» Á¦°øÇÏ´Â ½ÄÀ¸·Î ÇØ°áÇÏ·Á°í Çß´Ù. ÀÌ·¸°Ô µÇ¸é ÇÁ·Î±×·¥µéÀº ¾îµð¿¡¼ ¼öÇàµÇ´ÂÁö ½Å°æ ¾µ ÇÊ¿ä¾øÀÌ º´·ÄÀûÀ¸·Î ¼öÇàµÉ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥ÀÇ ¸ðµç º¯¼öµéÀº ¾ðÁ¦, ¾î´À ÇÁ·Î¼¼¼¿¡¼µç Á¢±ÙÀÌ °¡´ÉÇÏ°Ô µÈ´Ù. ´Ù¸¥ ¹æ½ÄÀº ÇÁ·Î¼¼¼¸¶´Ù µ¶¸³ÀûÀÎ ÁÖ¼Ò °ø°£À» °®µµ·Ï ÇÏ°í °øÀ¯ÇÒ °ÍÀÌ ÀÖ´Ù¸é ¹«¾ùÀÎÁö¸¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏ´Â ¹æ½ÄÀε¥, ÀÌ¿¡ ´ëÇؼ´Â ´ÙÀ½ Æ÷½ºÆÿ¡¼ »ìÆ캸±â·Î ÇÏÀÚ. ½ÇÁ¦ ÁÖ¼Ò °ø°£ÀÌ °øÀ¯µÉ ¶§´Â ¸ÖƼÄھ¼´Â ÀϹÝÀûÀÎ ¹æ½ÄÀε¥, ¸ðµç ÇÁ·Î¼¼¼°¡ °øÀ¯ ¸Þ¸ð¸®¸¦ ¶È°°ÀÌ º¸µµ·Ï Çϵå¿þ¾îÀûÀÎ ¹ýÀ¸·Î ij½¬ ÀÏ°ü¼ºÀ» º¸ÀåÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. °øÀ¯µÈ µ¥ÀÌÅʹ ij½¬¸¦ »ç¿ëÇÒ ¶§ »õ·Î¿î ¹®Á¦¸¦ ¾ß±âÇÑ´Ù. ÀÌ´Â µÎ°³ÀÇ ¼·Î ´Ù¸¥ ÇÁ·Î¼¼¼´Â °¢ÀÚ ÀÚ½ÅÀÇ Ä³½¬¸¦ ÅëÇÏ¿© ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ°Ô µÇ°í, ÁÖÀÇÇÏÁö ¾ÊÀ¸¸é µÎ °³ÀÇ ´Ù¸¥ °ªÀ» °®°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¹®Á¦Á¡À» ÀϹÝÀûÀ¸·Î ij½¬ ÀÏ°ü¼º(Cache Coherence)¹®Á¦¶ó°í ÇÑ´Ù. ¸Þ¸ð¸®¿¡¼ÀÇ ÀÛ¾÷Àº Àб⺸´Ù ¾²±â°¡ ¸Å¿ì Áß¿äÇÏ´Ù. ¿Ö³ÄÇϸé Àбâ´Â ¸Þ¸ð¸®ÀÇ °ªÀ» ¹Ù²Ù±â ¾ÊÁö¸¸, ¾²±â´Â °ªÀ» ¹Ù²Ù±â ¶§¹®ÀÌ´Ù. µû¶ó¼ ¸ÖƼ ÇÁ·Î¼¼¼¿¡¼ °øÀ¯ ¸Þ¸ð¸®¸¦ ´Ù·ê¶§¿¡´Â ÀÌ·¯ÇÑ ¾²±â ÀÛ¾÷À» ¼ø¼ÈÇÏ´Â ÀÛ¾÷ÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ¿Ö³ÄÇϸé, ¾²±â ¼ø¼È¸¦ ÅëÇؼ ÇÁ·Î¼¼¼µéÀº °¢ÀÚÀÇ ¸í·ÉÀ» ó¸®ÇÏ´Â ½Ã°£¿¡ ¸Â°Ô ½Ã°£ ¼ø¼¿¡ ¸Â´Â ¿Ã¹Ù¸¥ ¸Þ¸ð¸® °ªÀ» °¡Á®¿Ã ¼ö Àֱ⠶§¹®ÀÌ´Ù. Áï, ÀбâÀÇ ¼ø¼´Â ²¿¿©µµ ¾îÂ¥ÇÇ ¸Þ¸ð¸® °ªÀ» º¯ÇÏ°Ô ÇÏÁö ¾Ê±â ¶§¹®¿¡ ½ºÄÉÁ층¿¡ ÀÇÇØ ¼ø¼°¡ ¾î±ß³ªµµ »ó°üÀÌ ¾øÁö¸¸, ¾²±â¸¸Àº Àý´ëÀûÀ¸·Î ½Ã°£¿¡ ¸Â°Ô µüµü ½ºÄÉÁ층ÀÌ ¼ø¼ÀûÀ¸·Î ÀÌ·ç¾îÁ®¾ß µÇ´Â °ÍÀÌ´Ù. À̸¦ ¾²±â ¼ø¼È(Write Serialization)À̶ó°í ÇÑ´Ù. ij½¬ ÀÏ°ü¼ºÀ» À¯ÁöÇϱâ À§ÇØ ¸ÖƼ ÇÁ·Î¼¼¼¿¡¼´Â ij½¬¿¡°Ô °øÀ¯µÈ µ¥ÀÌÅÍÀÇ À̵¿(Migration)°ú º¹»ç(Replication) ±â´ÉÀ» Á¦°øÇØ ÁØ´Ù. À̵¿(Migration)À̶õ, µ¥ÀÌÅ͸¦ Áö¿ª ij½¬·Î À̵¿ÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. À̵¿Àº ¸Õ °÷¿¡ À§Ä¡ÇÑ °øÀ¯ µ¥ÀÌÅ͸¦ Á¢±ÙÇÒ ¶§ ¹ß»ýÇÏ´Â Áö¿¬°ú °øÀ¯ ¸Þ¸ð¸® ¿äû¿¡ µû¸¥ ´ë¿ªÆøÀ» ÁÙ¿©ÁØ´Ù. º¹»ç(Replication)Àº °øÀ¯ µ¥ÀÌÅÍ°¡ µ¿½Ã¿¡ ÀÐÇôÁú ¶§, ij½¬´Â Áö¿ª ij½¬ ¾È¿¡ º¹»çº»À» ¸¸µç´Ù. º¹»ç´Â °øÀ¯ µ¥ÀÌÅÍ Á¢±Ù ½Ã ´ë±â½Ã°£°ú Àб⠰æÀïÀ» °¨¼Ò½ÃŲ´Ù. ÀÌ°°Àº À̵¿°ú º¹»ç¸¦ Áö¿øÇÏ´Â °ÍÀº °øÀ¯ µ¥ÀÌÅ͸¦ Á¢±ÙÇÏ´Â ¼º´É¿¡ ÀÖ¾î¼ ¸Å¿ì Áß¿äÇϱ⠶§¹®¿¡ ¸¹Àº ¸ÖƼ ·Î¼¼¼µéÀÌ Ä³½¬ ÀÏ°ü¼ºÀ» À¯ÁöÇϱâ À§ÇØ Çϵå¿þ¾î ÇÁ·ÎÅäÄÝÀ» µµÀÔÇÏ°í ÀÖ´Ù. ¸ÖƼ ÇÁ·Î¼¼¼¿¡¼ ÀÏ°ü¼ºÀ» À¯ÁöÇϱâ À§ÇÑ ÇÁ·ÎÅäÄÝÀº ij½¬ ÀÏ°ü¼º À¯Áö ÇÁ·ÎÅäÄÝ(Cache Coherence Protocol)À̶ó°í ºÎ¸¥´Ù. ÇÙ½ÉÀº µ¥ÀÌÅÍ ºí·ÏÀÇ ¸ðµç °øÀ¯ »óŸ¦ ÃßÀûÇÏ´Â °ÍÀÌ´Ù. °¡Àå ³Î¸® »ç¿ëµÇ´Â ±â¹ýÀº ½º´©ÇÎ(Snooping)ÀÌ´Ù. ¸ðµç ij½¬´Â ½ÇÁ¦ ¸ð¸® ºí·ÏÀ¸·ÎºÎÅÍ µ¥ÀÌÅÍÀÇ º¹»çº» °®°í ÀÖ°í, ºí·ÏÀÇ °øÀ¯»óÅ¿¡ ´ëÇÑ º¹»çº»µµ °®°í ÀÖ´Ù. ±×·¯³ª Áß¾Ó¿¡¼ °ü¸®µÇ´Â »óÅ´ À¯ÁöÇÏÁö ¾Ê´Â´Ù. ij½¬µéÀº Àü¼Û ¸Åü(¹ö½º ¶Ç´Â ³×Æ®¿öÅ©)¸¦ ÅëÇÏ¿© ¸ðµÎ Á¢±Ù °¡´ÉÇÏ´Ù. ±×¸®°í ¸ðµç ij½¬ Á¦¾î±âµéÀº ¹ö½º¿¡ ¿äûµÈ ºí·ÏÀÇ º¹»çº»À» °®°í ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ È®ÀÎÇϱâ À§ÇØ ¸Åü¸¦ °¨½Ã(Snoop)ÇÑ´Ù.
½º´©ÇÎ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇؼ ÀÚ¼¼È÷ ¾Ë¾Æº¸ÀÚ. ÀÏ°ü¼ºÀ» À¯ÁöÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ÇÁ·Î¼¼¼°¡ µ¥ÀÌÅ͸¦ ¾²±â Àü¿¡ ±× µ¥ÀÌÅÍ¿¡ ¹èŸÀûÀÎ Á¢±ÙÀ» ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ÇüÅÂÀÇ ÇÁ·ÎÅäÄÝÀº ¾²±â ÀÛ¾÷½Ã ´Ù¸¥ ij½¬¿¡ ÀÖ´Â º¹»çº»µéÀ» ¹«È¿È½ÃÅ°±â ¶§¹®¿¡ ¾²±â ¹«È¿È ÇÁ·ÎÅäÄÝ(Write Invalidate Protocol)À̶ó°í ºÎ¸¥´Ù. ¹èŸÀû Á¢±ÙÀº ¾²±â ÀÛ¾÷ÀÌ ÀϾ ¶§ ÀÐ±â ¶Ç ¾²±â°¡ °¡´ÉÇÑ µ¥ÀÌÅÍÀÇ º¹»çº»µéÀÌ ¾ø´Ù´Â °ÍÀ» º¸ÀåÇØÁØ´Ù. ´Ù¸¥ ij½¬ÀÇ ¸ðµç º¹»çº»µéÀº ¹«È¿ÈµÈ´Ù. ÀÌ ¸»À» ½±°Ô Ç®¾îº¸¸é, CPU A°¡ ¸Þ¸ð¸® »óÀÇ XÀÇ µ¥ÀÌÅ͸¦ ¾²±âÇÒ °æ¿ì, ¾²±â Àü¿¡ CPU B°¡ ij½¬¿¡ °¡Áö°í ÀÖ´ø XÀÇ °ªÀ» ¾ø´Â °ªÀ¸·Î Çعö¸®´Â(Invalidate) °ÍÀÌ´Ù. Áï, ¾²±â ÀÌÈÄ¿¡ CPU B°¡ ´Ù½Ã X¿¡ Àб⸦ ¿äûÇϸé, ´Ù½Ã ij½¬ ½ÇÆÐ(Cache Miss)°¡ ÀϾ°í, ¸Þ¸ð¸®°ª¿¡¼ Á¤È®ÇÑ °ªÀ» Àоî¿À°Ô µÇ¾î ÀÏ°ü¼ºÀ» À¯ÁöÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀÌ ½º´©ÇÎ ¹ö½º(Snooping Bus)¿¡¼ µ¿ÀÛÇϱ⠶§¹®¿¡ ½º´©ÇÎ ÇÁ·ÎÅäÄÝÀÎ °ÍÀÌ´Ù. ½º´©ÇÎ ¹ö½º¿¡¼´Â µ¥ÀÌÅÍÀÇ ¼ÒÀ¯±ÇÀ» ÃßÀûÇÒ ¼ö ÀÖÀ¸¸ç, ºí·ÏÀÌ ±³Ã¼µÉ ¶§ ³ªÁß ¾²±â(Write Back)¸¦ ¼öÇàÇÏ´Â °æ¿ì ºí·ÏÀÌ °øÀ¯µÇ¾úÀ½À» ³ªÅ¸³»´Â '¼ÒÀ¯(Owner)'¶ó ºÒ¸®´Â Ãß°¡ÀûÀÎ »óÅÂ(State)ÀÇ µµÀÔÀ» ÇÊ¿ä·Î ÇÑ´Ù. ¼ÒÀ¯ ÇÁ·Î¼¼¼(Owning Processor)´Â ºí·ÏÀ» ¹Ù²Ù°Å³ª ±³Ã¼ÇÒ ¶§ ¸ðµç ´Ù¸¥ ÇÁ·Î¼¼¼¿Í ¸Þ¸ð¸®¸¦ °»½ÅÇÒ Ã¥ÀÓÀ» Áö´Ï°í ÀÖ´Ù. ½º´©ÇÎ ÇÁ·ÎÅäÄÝ ¿ª½Ã ¾²±â ÀÛ¾÷¿¡ ´ëÇؼ´Â Á¦ÀÏ ¸¶Áö¸·¿¡ ¼öÇàµÈ ¾²±â ÀÛ¾÷¿¡ ´ëÇÑ °á°ú°ªÀ¸·Î °»½ÅÇÒ ÇÊ¿ä°¡ ÀÖÀ¸¸ç, ¾²±â ¼ø¼È¸¦ µû¸¥´Ù. µû¶ó¼ ¸¶Áö¸· ¾²±â°¡ µÈ °ªÀ» À§Çؼ ´Ù¸¥ ÇÁ·Î¼¼¼ÀÇ Ä³½¬ÀÇ ÇØ´ç ¸Þ¸ð¸® °ªÀº ¸ðµÎ ¹«È¿È½ÃÅ°´Â °ÍÀÌ´Ù. ºí·Ï Å©±â´Â ij½¬ ÀÏ°ü¼º À¯Áö¿¡ Å« ¿ªÇÒÀ» ¹ÌÄ£´Ù. ¿¹¸¦ µé¾î 8°³ ¿öµå°¡ ÇϳªÀÇ ºí·ÏÀ¸·Î »ç¿ëµÇ´Â ij½¬¿¡ ´ëÇÑ ½º´©Çο¡¼ µÎ °³ÀÇ ÇÁ·Î¼¼¼°¡ ÇÑ °³ÀÇ ¿öµå¸¦ ±³´ë·Î ÀÐ°í ¾´´Ù°í °¡Á¤ÇÏÀÚ. ´ëºÎºÐÀÇ ÇÁ·ÎÅäÄÝÀº ÇÁ·Î¼¼¼ »çÀÌ¿¡ Àüü ºí·ÏÀ» ±³È¯ÇÏ°Ô µÇ°í, ÀÏ°ü¼º À¯Áö¿¡ ÇÊ¿äÇÑ ´ë¿ªÆøÀÌ Áõ°¡ÇÏ°Ô µÈ´Ù. Å« ºí·ÏÀº ¶ÇÇÑ °ÅÁþ °øÀ¯(False Sharing), Áï °ü·Ã ¾ø´Â µÎ °øÀ¯ º¯¼ö°¡ °°Àº ij½¬ ºí·Ï¿¡ ÀÖÀ» ¶§, °¢ ÇÁ·Î¼¼¼°¡ ¼·Î ´Ù¸¥ º¯¼ö¸¦ Á¢±ÙÇÏ´õ¶óµµ ºí·Ï Àüü°¡ ÇÁ·Î¼¼¼ »çÀÌ¿¡¼ ±³È¯µÇ¾î¾ß ÇÏ´Â ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¸Ó¿Í ÄÄÆÄÀÏ·¯´Â °ÅÁþ °øÀ¯¸¦ ÇÇÇϱâ À§ÇØ µ¥ÀÌÅ͸¦ ½ÅÁßÇÏ°Ô ¹èÄ¡ÇÏ¿©¾ß ÇÑ´Ù. ½±°Ô ¼³¸íÇϸé, ¸Þ¸ð¸®¿¡¼ X¶ó´Â À§Ä¡ºÎÅÍ 8°³ÀÇ ¿öµå°¡ ÇϳªÀÇ ºí·ÏÀÏ ¶§ CPU A¿¡¼ XÀÇ À§Ä¡ÀÇ µ¥ÀÌÅ͸¦ ¸Þ¸ð¸®¿¡¼ ij½¬ ¹Ì½º¸¦ ÅëÇØ °¡Á®¿À°í, ¾²°Ô µÈ´Ù. ij½¬ ¹«È¿È¿¡ ÀÇÇØ CPU B¿¡¼ Ȥ½Ã X¿¡ ÇØ´çÇÏ´Â ºí·ÏÀÌ Ä³½¬¿¡ ÀÖ´Ù¸é, ¹«È¿ 󸮵ȴÙ. À̹ø¿£ CPU B¿¡¼ X+4(word size)À§Ä¡¿¡ ÀÖ´Â °øÀ¯ º¯¼ö¸¦ ÀÐ°í ¾µ¶§ ij½¬ ¹«È¿È¿¡ ÀÇÇؼ CPU A¿¡¼ÀÇ X ºí·ÏÀº ¹«È¿È°¡ µÈ´Ù. ¼·Î »ó°üÀÌ ¾ø´Â µ¥ÀÌÅ͸¦ °Çµå·ÈÀ½¿¡µµ ºÒ±¸ÇÏ°í, ´ÙÀ½¿¡ CPU A´Â X+8À§Ä¡ÀÇ °øÀ¯º¯¼ö¸¦ °¡Á®¿À±â À§ÇØ ´Ù½Ã ij½¬ ¹Ì½º·Î ÀÎÇؼ ¸Þ¸ð¸®·ÎºÎÅÍ °¡Á®¿Í¾ß µÇ´Â ºñÈ¿À²À» °®°Ô µÈ´Ù. ±× ´ÙÀ½µµ ¸¶Âù°¡Áö ÀÌ´Ù.
´Ù½Ã ¿øÁ¡À¸·Î µ¹¾Æ¿Í¼, °øÀ¯ ¸Þ¸ð¸® ¸ÖƼ ÇÁ·Î¼¼¼¿¡¼´Â ¸ðµç ÇÁ·Î¼¼¼°¡ ´ÜÀÏ ½ÇÁ¦ ÁÖ¼Ò °ø°£À» °®´Â´Ù. µû¶ó¼ °øÀ¯ ÁÖ¼Ò ¸ÖƼ ÇÁ·Î¼¼¼¶ó°í ºÎ¸£´Â °ÍÀÌ ´õ Á¤È®ÇÒ Áöµµ ¸ð¸¥´Ù. ÇÁ·Î¼¼¼µéÀÌ ½ÇÁ¦ ÁÖ¼Ò °ø°£À» °øÀ¯ÇÏ´õ¶óµµ ÀÛ¾÷µéÀº °¢°¢ º°°³ÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡¼ ¼öÇàµÉ ¼ö ÀÖÀ½¿¡ À¯ÀÇÇØ¾ß ÇÑ´Ù. ÇÁ·Î¼¼¼µéÀº ¾î´À ¸Þ¸ð¸® ÁÖ¼ÒÀ̵çÁö Load ¿Í Store ¸í·É¾î¸¦ »ç¿ëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç, ÇÁ·Î¼¼¼°£ÀÇ Åë½ÅÀº ¸Þ¸ð¸®¿¡ ÀÖ´Â °øÀ¯ º¯¼ö¸¦ ÅëÇØ ÀÌ·ç¾îÁø´Ù. ´ÜÀÏ ÁÖ¼Ò °ø°£ ¸ÖƼ ÇÁ·Î¼¼¼¿¡¼´Â ¾î´À ÇÁ·Î¼¼¼°¡ ¾î´À ¿öµå¸¦ Á¢±ÙÇϵçÁö µ¿ÀÏÇÑ ½Ã°£À» °É¸®´Â ½ºÅ¸ÀÏÀ» ±ÕÀÏ ¸Þ¸ð¸® Á¢±Ù(Uniform Memory Access, UMA) ¸ÖƼÇÁ·Î¼¼¼¶ó ÇÏ°í, ¾î¶² ¿öµå¸¦ Á¢±ÙÇϳĿ¡ µû¶ó ¼Óµµ°¡ ´Þ¶óÁö´Â ºñ±ÕÀÏ ¸Þ¸ð¸® Á¢±Ù(NonUniform Memory Access, NUMA) ¸ÖƼ ÇÁ·Î¼¼¼¶ó´Â ½ºÅ¸ÀÏÀÌ ÀÖ´Ù. NUMA°¡ UMA¿¡ ºñÇØ ±¸ÇöÀÌ ¾î·ÆÁö¸¸, °¡±î¿î ¸Þ¸ð¸®ÀÏ ¼ö·Ï ºü¸£°Ô Á¢±Ù °¡´ÉÇÏ°í È®À强ÀÌ Å©±â¶§¹®¿¡ È¿À²ÀûÀÌ´Ù. ¶ÇÇÑ µ¿±âÈ(Synchronization)ÀÇ ¹®Á¦µµ Áß¿äÇÏ´Ù. ÇÑ°¡Áö ¹æ¹ýÀº LockÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.
ÂüÁ¶ : http://blog.naver.com/PostView.nhn?blogId=osw5144&logNo=120206837492
|
Hit : 16371 Date : 2014/03/05 01:06
|