1-3. NUMA <- 발췌 from http://blog.naver.com/PostView.nhn?blogId=bomyzzang&logNo=220906611725
여러 프로세서가 동시에 동일한 데이터가 필요할 경우 메모리 뱅크들 사이로 데이터를 이동하기 때문에 성능이 떨어 질 수 있다. 그렇기 때문에 무조건적으로 효율이 좋은 것은 아니므로 프로세스가 로컬메모리를 사용하도록 하는게 최적화의 키 포인트이다. 그리고 CPU에 달려있는 작은 크기의 비공유 메모리(CPU캐시라 불리우는 것)가 있는데 기본적인 NUMA 형태는 프로그래밍 상으로 공유 메모리에 대해서 캐시 일관성(Cache Coherence)을 유지하기 어렵기 때문에 대부분의 NUMA 시스템은 ccNUMA(cache-coherence NUMA)형태로 하드웨어적으로 구현하여 제공하고 있다.
NUMA 관련 시험 중 인데, 하기 내역이 저에겐 모호하게 느껴 져서요.
질문) 상기 내용에서 캐쉬 일관성의 쉬운 의미 및 NUMA 노드가 캐쉬 일관성 유지가 어려운 이유가 궁금합니다.
감사합니다.
https://ko.wikipedia.org/wiki/%EC%BA%90%EC%8B%9C_%EC%9D%BC%EA%B4%80%EC%84%B1
https://ko.wikipedia.org/wiki/%EB%B6%88%EA%B7%A0%EC%9D%BC_%EA%B8%B0%EC%96%B5_%EC%9E%A5%EC%B9%98_%EC%A0%91%EA%B7%BC
¸¦ º¸½Ã´Â°Ô ÁÁ°Ú³×¿ä.
¿äÁò ½Ã½ºÅÛÀÌ ´ÙÁß Core CPU°¡ ÀϹÝÀûÀÌ°í,
2-CPU (2-Way)ÀÌ»óÀÇ NUMA ½Ã½ºÅ۵鵵 ÀÏ¹Ý ÀûÀ̱⠶§¹®¿¡
¼·Î ´Ù¸¥ Core¿¡¼ µ¿ÀÛÁßÀÎ thread°£ °øÀ¯ ¸Þ¸ð¸®ÀÇ °ªÀ» ÀÏÄ¡½ÃÄÑ ÁÖ¾î¾ß ÇÏ´Â ¹®Á¦°¡ »ý±é´Ï´Ù.
ÀÌ°ÍÀÌ Ä³½Ã ÀÏ°ü¼ºÀÔ´Ï´Ù..
À§Å° ¹é°úÀÇ ³»¿ëó·³ core 1¿¡¼ µ¿ÀÛÁßÀÎ thread°¡
ÇØ´ç core ·ÎÄà ij½ÃÀÎ L1 ij½ÃÀÇ °øÀ¯ º¯¼ö X¿¡ ´ëÇÑ °ªÀ» º¯°æÇÏ°í
µ¿½Ã¿¡ core2ÀÇ thread°¡ ÇØ´ç core L1 ij½Ã¿¡ ÀÖ´Â °°Àº °øÀ¯ º¯¼ö X¿¡ ´ëÇÑ º¯°æÀ» ½ÃµµÇÒ¶§,
°°Àº X°ª¿¡ ´ëÇØ ¼·Î ´Ù¸¥ °ªÀÌ µÉ ¼ö ÀÖ´Â »óȲÀÌ ÈçÈ÷ ¹ß»ýÇÕ´Ï´Ù.
µû¶ó¼ ¸ðµç ÄÚ¾îÀÇ L1 ij½Ã¿¡ °°Àº address¸¦ °®´Â °ª¿¡ ´ëÇÑ ÀÏ°ü¼ºÀ»
¾î¶»°Ô À¯ÁöÇØ ÁÙ°ÍÀ̳ÄÀÇ ¹®Á¦°¡ Cache Coherence ÀÔ´Ï´Ù.
Single CPUÀÎ °æ¿ìÀÇ Core°£ ¼Óµµ Â÷ÀÌ°¡ ¾ø´Â,
¹ö½º¸¦ »ç¿ëÇØ broadcast·Î ÀÏÄ¡ ½ÃÄÑÁÖ¸é µÇ¾î °£´ÜÇÏ°ÚÁö¸¸,
ij½Ã ÀÏ°ü¼ºÀ» Áö¿øÇÏÁö ¾Ê´Â NUMAÀÇ °æ¿ì ´Ù¸¥ CPU¸¦ °ÅÄ¡°Ô µÇ¸é,
·ÎÄÿ¡ ºñÇØ ½ÅÈ£¸¦ Àü´ÞÇϴµ¥ ¼Óµµ Â÷ÀÌ°¡ ¹ß»ýÇÏ¿©,
¼·Î ´Ù¸¥ CPU¿¡¼ µ¿½Ã¿¡ °°Àº ÁÖ¼Ò °ª¿¡ ´ëÇÑ º¯°æÀÌ
ÀÌ·ç¾î Áú¶§, ¼Óµµ Â÷ÀÌ·Î ÀÎÇØ ¹ß»ýÇÏ´Â Ãæµ¹¹®Á¦¸¦ CPU ¿ì¼±¼øÀ§ µîµîÀ» °í·ÁÇØ
°ü¸®ÇØÁÖ¾î¾ß ÇÑ´Ù´Â Á¡ ¶§¹®¿¡ ¾î·Æ´Ù´Â °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
ÇÏÁö¸¸ ij½Ã ÀÏ°ü¼º ¸ðµå¸¦ ÇØÁöÇÏÁö ¾Ê´Â ÀÌ»ó
Á÷Á¢ ÇÁ·Î±×·¡¹Ö ÇÒÀÏÀº ¾øÀ¸´Ï,
½ÇÁ¦ º´·Ä ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ÀÔÀå¿¡¼´Â À§¿Í °°Àº ¹®Á¦·Î ¹ß»ýÇÒ ¼ö ÀÖ´Â,
thread ´ë±â½Ã°£¿¡ µû¸¥ ¼º´É ÀúÇϸ¦ °í·ÁÇØ
µÇµµ·Ï ´ë±â ½Ã°£À» ÁÙÀÏ ¼ö ÀÖµµ·Ï,
°°Àº CPU ÁÖº¯ Äھ¼ °°Àº µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ´Â thread°¡ ¹èÄ¡µÇµµ·Ï ÇÏ´Â µîÀÇ,
core°ü¸®¸¦ ÇÏ´Â°Ô Áß¿äÇÕ´Ï´Ù.
NUMAÂÊÀº ÁÖº¯ I/O(PCI-e) µµ °°Àº ¹®Á¦°¡ ¹ß»ýÇϱ⠶§¹®¿¡, DMAµî°ú ÇÔ²²
¿ª½Ã thread ¹èÄ¡°¡ Áß¿äÇÕ´Ï´Ù.
¼³¸íÀ» µè°í º¸´Ï, µ¿ÀÏ º¯¼öÀÇ °ª¿¡ CPUº°·Î ´Ù¸¥ °æ¿ì¿¡, ¾î¶»°Ô ÀÎÁö ¹× ÇØ°áÇÏ´ÂÁö ±Ã±ÝÇϳ׿ä
'´Ù¿îÈú'´ÔÀÇ ±ÛÀ» º¸´Ï, CPUº°·Î ÇØ´ç º¯¼ö °ªÀÌ º¯°æµÇ¾ú´ÂÁö °¨½Ã(SNOOP)ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Â °Å °°±äÇѵ¥.