컴퓨터 공학

밸브 게임 소프트웨어의 멀티코어 사용

혼새미로 2017. 3. 18. 15:59
반응형

Valve는 가장 널리 즐기는 게임 엔진들 중의 하나인 소스 엔진뿐 아니라, 많은 수의 인기 있는 게임들을 개발한 오락 및 기술회사이다. 소스는 게임을 위해 밸브사에 의해 사용되고 있으며 다른 게임 개발업자들에게 라이선스를 주고 있는 애니메이션 엔진이다.

  최근 수년간 밸브사는 인텔 및 AMD의 멀티코어 프로세서 칩들의 능력을 활용하기 위해 멀티스레딩을 사용할 수 있도록 소스 엔진 소프트웨어를 다시 프로그램하였다. 수정된 소스 엔진 코드는 하프라이프2와 같은 밸브 게임들을 위한 더욱 강력한  지원을 제공해준다.

  밸브사의 관점에 따르면, 스레딩의 크기는 아래와 같이 정의된다.

  • 큰 스레딩 (Coarse threading): 시스템이라고 불리는 개별 모듈들이 각 프로세서에게 배정된다. 소스 엔진의 경우에는 렌더링 (rendering)을 한 프로세서에게, AI (인공지능)은 다른 프로세서, 물리 (physics)는 또 다른 프로세서에게, 등등과 같이 맡긴다는 것을 의미한다. 이것은 단순한 방법이다. 근본적으로, 각 주요 모듈은 단일 스레드이며 중요한 조정 동작은 모든 스레드들을 시각표 스레드 (timeline thread)와 동기화시키는 것을 포함한다.
  • 미세-크기 스레딩 (Fine-grained threading): 많은 수의 유사하거나 동일한 테스크들이 다수의 프로세서들에게 나누어진다. 예를 들어, 데이터 배열에 대하여 반복되는 루프는 병렬로 스케줄 될 수 있는 각 스레드의 내ㅜㅂ에서 여러 개의 더 작은 병렬 루프들로 분리된다.
  • 하이브리드 스레딩 (Hybrid threading): 이것은 몇몇 시스템들에서는 미세-크기 스레딩, 다른 시스템들에서는 단일 스레딩을 선택적으로 사용하는 것을 포함한다.
밸브사는 큰 스레딩을 사용함으로써, 단일 프로세서에서 처리하는 것에 비하여 두 개의 프로세서들을 이용하여 성능을 2배까지 높일 수 있다는 것을 확인하였다. 그러나 이러한 성능 향상은 특정 경우에만 얻을 수 있다. 실제 게임 프로그램을 처리하는 경우에 그러한 개선은 1.2배 정도였다. 밸브사는 미세-크기 스레딩을 효과적으로 사용하는 것이 어렵다는 것도 확인하였다. 작업 단위당 시간 (time per work unit)은 가변적이며, 결과물과 결론을 얻을 수 있는 세부적인 시간을 관리하려면 복잡한 프로그래밍이 필요하다.
  밸브사는 하이브리드 스레딩 방식이 가장 바람직하며, 8개 혹은 16개의 프로세서들을 가진 멀티코어 시스템의 사용이 가능해졌을 때 가장 효과가 높아지는 것도 확인하였다. 밸브사는 단일 프로세서에 영구적으로 배정하면 매우 효과적으로 작동할 수 있는 시스템들도 밝혀냈다. 그 예로는 사용자와의 상호작용이 거의 없고 윈도우의 프레임에 의해 제한받지 않으며, 자신과 같은 다른 모듈들은 여러 개의 스레드들로 구성될 수 있는데, 그 모듈은 단일 프로세서에서 수행될 수도 있지만, 더 많은 프로세서들에 나누어 처리할수록 더 높은 성능을 얻을 수 있다.
 
  출처 : Computer Organization & Architecture 
반응형