프로그래밍 세계/Windows Programming
[강의정리] 쓰레드의 현재
깡다구짱
2008. 10. 3. 22:18
- 게임분야에서 쓰레드기법이 가장 잘 발전하고 있음
- 싱글코어에서 코어가 발전함에 따라 쓰레드 기법이 필요
- 2003년 하이퍼쓰레딩(64비트 프로그래밍)
- Intel CPU구조인 경우 chipset을 두고 이를 통해 core확장을 고려하고 있다
그러나 같은 메모리를 참조함에 따라 병목현상이 일어난다.
- AMD에서는 코어 확장은 어렵지만 병목현상이 없어 현재 intel에서도 AMD방식을 수용하고
있는 추세이다.
- core0, core2, core1, core3식으로 나눠져 있는 이유는
운영체제는 쓰레드를 만들 때 core번호 순서대로 만들게 되는데 L2 cache에서의
동기화문제를 줄이기 위해 영역을 다르게 하여 경쟁을 완화하였다.
- SetThreadAffinityMask라는 API를 통해 특정 영역에 할당을 할 수 있다.
시스템 관리자에서 보면 해당 프로세스가 어느 코어를 이용하여 작동하고 있는지 알 수 있으며
특정 core에게만 맡길 수 있다.
- 극단적인 CPU레벨에서의 성능체크는 cache단위로 이루어진다.
-> CPU1이 CPU4영역의 메모리에 접근하기 위해 CPU1에서 4로 알려주고 CPU4는 메모리에서
가지고와 CPU1으로 전달하는 여러작업을 거치게 된다.
- 듀얼코어에서는 하나의 메모리를 2개의 CPU가 같이 물려져 있기 때문에 병목현상이 일어난다