프로그래밍 세계/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가 같이 물려져 있기 때문에 병목현상이 일어난다