|
[필독] 처음 오시는 분을 위한 안내 (736) |
정은준1 |
2014-05 |
5191131 |
0 |
2014-05
5191131
1 정은준1
|
|
(광고) 단통법 시대의 인터넷가입 가이드(ver2.0) (234) |
백메가 |
2015-12 |
1724139 |
25 |
2015-12
1724139
1 백메가
|
9182 |
PC 점검 장비??? (10) |
포스트맨 |
2023-12 |
2673 |
0 |
2023-12
2673
1 포스트맨
|
9181 |
최근 나오는.. hdmi 2.0 지원 uhd TV 사용 해보신분 계신가요. (2) |
김제연 |
2015-02 |
7257 |
0 |
2015-02
7257
1 김제연
|
9180 |
HP Proliant dl 380 g5 질문입니다. (3) |
주태백 |
2016-04 |
4585 |
0 |
2016-04
4585
1 주태백
|
9179 |
HP서버(dl380 gen8 기준) FBWC(캐시배터리) 교체관련 질문드립니다. (7) |
집구석 |
2020-10 |
6283 |
0 |
2020-10
6283
1 집구석
|
9178 |
Q45T-AM 보드 드라이버 문의 (5) |
경박한시민 |
2011-01 |
8816 |
0 |
2011-01
8816
1 경박한시민
|
9177 |
무선충전 드릴 셋트를 얻었는데 중심축이 삐뚤어져 있습니다. (4) |
엠브리오 |
2015-02 |
8407 |
0 |
2015-02
8407
1 엠브리오
|
9176 |
레이저 복합기를 사야할 거 같은데 (3) |
무아 |
2019-08 |
3237 |
0 |
2019-08
3237
1 무아
|
9175 |
알리에서 가성비 좋은 무선 드릴 추천 부탁드려요. (4) |
ClubMJ |
2023-12 |
1791 |
0 |
2023-12
1791
1 ClubMJ
|
9174 |
[ NUMA ] 캐쉬 일관성 (Cache Coherence) 문의 (3) |
전설속의미… |
2017-03 |
4398 |
0 |
2017-03
4398
1 전설속의미…
|
9173 |
E7 8880 v4 호환 보드를 알고싶습니다 (5) |
Kimmandu |
2023-12 |
2131 |
0 |
2023-12
2131
1 Kimmandu
|
9172 |
도서관에서 듀얼모니터 쓰는방법? (엽기적인질문) (11) |
정지혁 |
2011-02 |
9240 |
0 |
2011-02
9240
1 정지혁
|
9171 |
메인보드 수리건에 관해 질문드립니다. (3) |
한태동 |
2011-02 |
5868 |
0 |
2011-02
5868
1 한태동
|
9170 |
[질문]랜카드2개가 있을경우 1개는 VMWARE 전용사용방법이 있나요? (6) |
퍼싱글 |
2016-04 |
12624 |
0 |
2016-04
12624
1 퍼싱글
|
9169 |
mysql 패키지 설치한후 업데이트시 충돌은 어떻게 해야하나요? (4) |
블랙 |
2016-04 |
4345 |
0 |
2016-04
4345
1 블랙
|
9168 |
아침에 먹는다는 씨리얼...맛있나요? 아니면 맛있는게 있고 맛없는(영양으로만 먹는)… (5) |
김건우 |
2017-04 |
4081 |
0 |
2017-04
4081
1 김건우
|
9167 |
LIFIport.sys 파일 블루스크린 (1) |
안형곤 |
2011-03 |
7945 |
0 |
2011-03
7945
1 안형곤
|
9166 |
인터넷 연결오류.... (1) |
카르하타 |
2016-04 |
4018 |
0 |
2016-04
4018
1 카르하타
|
9165 |
루팅 후 볼륨 증폭 하는 방법이 요즘엔 바뀌었나요??? (1) |
삐돌이슬픔이 |
2024-01 |
1054 |
0 |
2024-01
1054
1 삐돌이슬픔이
|
9164 |
e5-1650이 샌디2600보다 못하나요??? (5) |
김현린 |
2015-02 |
5689 |
0 |
2015-02
5689
1 김현린
|
9163 |
하드디스크 보관 케이스가 고민입니다... (6) |
LSSAH |
2018-07 |
6068 |
0 |
2018-07
6068
1 LSSAH
|
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 로컬 캐시인 L1 캐시의 공유 변수 X에 대한 값을 변경하고
동시에 core2의 thread가 해당 core L1 캐시에 있는 같은 공유 변수 X에 대한 변경을 시도할때,
같은 X값에 대해 서로 다른 값이 될 수 있는 상황이 흔히 발생합니다.
따라서 모든 코어의 L1 캐시에 같은 address를 갖는 값에 대한 일관성을
어떻게 유지해 줄것이냐의 문제가 Cache Coherence 입니다.
Single CPU인 경우의 Core간 속도 차이가 없는,
버스를 사용해 broadcast로 일치 시켜주면 되어 간단하겠지만,
캐시 일관성을 지원하지 않는 NUMA의 경우 다른 CPU를 거치게 되면,
로컬에 비해 신호를 전달하는데 속도 차이가 발생하여,
서로 다른 CPU에서 동시에 같은 주소 값에 대한 변경이
이루어 질때, 속도 차이로 인해 발생하는 충돌문제를 CPU 우선순위 등등을 고려해
관리해주어야 한다는 점 때문에 어렵다는 것으로 생각됩니다.
하지만 캐시 일관성 모드를 해지하지 않는 이상
직접 프로그래밍 할일은 없으니,
실제 병렬 프로그래밍을 하는 입장에서는 위와 같은 문제로 발생할 수 있는,
thread 대기시간에 따른 성능 저하를 고려해
되도록 대기 시간을 줄일 수 있도록,
같은 CPU 주변 코어에서 같은 데이터를 공유하는 thread가 배치되도록 하는 등의,
core관리를 하는게 중요합니다.
NUMA쪽은 주변 I/O(PCI-e) 도 같은 문제가 발생하기 때문에, DMA등과 함께
역시 thread 배치가 중요합니다.
설명을 듣고 보니, 동일 변수의 값에 CPU별로 다른 경우에, 어떻게 인지 및 해결하는지 궁금하네요
'다운힐'님의 글을 보니, CPU별로 해당 변수 값이 변경되었는지 감시(SNOOP)하는 방법이 있는 거 같긴한데.