1. 공식 마케팅 활동이 아닌 무허가 바이럴 마케팅 활동 적발 시 즉각 회원 권한 박탈 및 닉네임 공개
  2. 저작권법에 따라 대한민국 언론/매체/커뮤니티 기사 일부/전문 게재 금지하며 오직 URL 링크만 허용
  3. 개인 유튜브 채널, 방송 등 홍보성/수익성 유튜브 영상 업로드 금지
  4. 신고 사유에 포함되지 않음에도 감정적/무분별한 신고 기능 사용 시 제재
  5. 국내 특정 업체를 대상으로 무분별한 칭찬/비난글 금지, QM 판단하에 사실관계 수준에 따라 제한적 허용

게임에서의 코어와 스레드의 차이

Thinker 17 746 0

코어를 많이 먹는 게임과 스레드를 많이 먹는 게임은 어떤 차이가 있는지 궁금합니다.


최신 게임들은 코어가 많을 수록 유리한 것 같던데, 코어를 많이 먹이는 게 고사양 게임에 적합한 기술인가요?

페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유 신고

작성자

현재 레벨 : 화성 Thinker  회원
195 (96%)

안녕하세요. 컴퓨터를 열심히 배우고 있습니다.

    댓글 : 17
Radix 2020-02-15 05:46:10
 사이다!
  먼저 스레드 개념을 정리합니다.
스레드는 원래 프로세스라는것의 하위개념입니다.
프로세스는 뭐냐? 우리가 사용하는 하나의 프로그램입니다.
하지만 cpu마케팅에 사용되는 스레드는 가상코어의 의미입니다.

스레드는 이전 싱글코어시절부터 존재했습니다. 문제는 컴퓨터가 스레드를 처리하는 방식인데, 단순히 말하자면 싱글코어 컴퓨터에 2개의 스레드가 동작을 한다고하면 os는 2개의 스레드를 번갈아가면서 처리하게됩니다.

여기서 HT와 SMT가 무슨 효과가있냐라고 의문이 드는데 싱글코어를 HT를 사용하여 2개의 코어같이 가상코어를 만들어 테스트를 해보니 물리코어 1개에 2개스레드를 처리하는것보다 가상코어 2개에 각각처리하는방식을 해보니 성능이 2~30프로 좋다라는 것입니다.

위에서 잘 설명해주셨듯이 가상코어(스레드)와 물리코어를 os는 구분하지 않습니다. 위에 설명한것과같이 1개를 2개인것처럼 어떻게보면 os를 속이는것이라 물리코어와 스레드에 구분을 두어 처리하지 않습니다.

마지막으로 물리코어 처리속도와 스레드의 처리속도중 물리코어가 더 빠르다는 말은 조건을 잘 확인해야합니다.
단일 물리코어대 단일 가상코어(스레드)의 성능비교는 당연히 단일 물리코어가 빠릅니다.(단, HT가 동작하는 cpu에한함. HT가 동작하지 않으면 같은성능)
4코어 8쓰레드 제품과 8코어 8쓰레드 제품을 비교하면 당연히 8코어 제품이 빠르겠지요.

게임의 최적화는 단순히 병렬, 멀티프로세싱과 코어갯수를 많이쓴다고 게임이 잘돌아가고 cpu를 많이쓰는개념이 아닙니다. 벙렬, 멀티프로세싱 프로그래밍을 하더라도 스레드당 연산부하가 적다면 효율이 높지 않습니다. 연산부하가 좀 되는애들을 병렬렬프로세싱으로 최적화를 하면 빨라지는것이지, 무조건 코어 많이쓰고 스레드 많이쓰게한다고 빨라지는게 아니거든요. 단순한작업은 되려 단일 스레드로 처리하는것이 벙렬프로세싱으로 프로그래밍한것보다 훨씬 빠릅니다.

최신게임은 위에서 말한 연산부하가 상당합니다. 게임들도 세대를 거듭하면서 발전을 하고 게이머들의 니즈를 충족해야하기때문에 더욱 높은 그래픽 효과와 수많은 행동처리를 하게되죠. 이 수많은 행동처리 및 기타 어플리케이션단의 처리때문에 점점 cpu의 사양이 높아지는것입니다.

위에서 질문하신 코어를 많이먹이는게 고사양에 적합하냐는 말씀은 당연한걸 질문하신겁니다.
처리할게 많으면 더욱 높은 연산능력을 가진 디바이스를 사용하는것이죠.
볼트로이  
https://quasarzone.co.kr/bbs/board.php?bo_table=qf_cmr&wr_id=12864
해당글의 댓글들 참고하시면 됩니다!

즉 코어는 물리적인 개념
스레드는 OS에서 소프트웨어적으로 인식하는 개념이라고 이해하시면 될 거같습니다.

코어를 많이먹는다 스레드를 많이 먹는다라는 개념보다 해당 게임이 몇코어를 활용하냐고 보통 따지지 않나...요?
Thinker  
[@볼트로이] 이 글도 예전에 읽어봤는데요.. 그래도 잘 이해가 가질 않습니다.
코어와 스레드의 차이를 묻는다기보단..
게임을 개발할 때 다중 스레드를 지원하는 게임으로 만드는 것이 다중 코어를 지원하는 게임으로 만드는 것보다 최적화면에서 떨어지는 것인가가 궁금한 겁니다.
Nival  
게임에서 처리할게 많아지면서 싱글코어만으로는 부족하다보니 병렬처리를 하는겁니다 물론 개발하기는 더 어렵습니다
코어 = 스레드로 보셔도 무방합니다 HT나 SMT같은 기술은 대략 20~30%의 효율을 가집니다
Thinker  
[@Nival] 음.. 결국 개발 난이도가 올라가기 때문에 코어를 많이 먹는 게임으로 개발하는 것인가요?
요즘 cpu는 스레드가 12개 이상이던데, 코어보단 스레드를 많이 활용하는 방식으로 개발하면 더 좋은 것이 아닌가 궁금했습니다.
Nival  
[@Thinker] 소프트웨어는 물리코어와 가상코어의 구분을 하지못합니다


코어 한개를 2개의 스레드로 인식시키는것이 SMT, HT입니다
Thinker  
[@Nival] 소프트웨어는 물리코어와 가상코어를 구분하지 못하는데, 어째서 물리코어가 높은 cpu가 더 효율적인지 알고 싶습니다.
Nival  
[@Thinker] 저 위에 적어놨듯이 가상코어는 물리코어대비 20~30%의 효율을 가집니다 멀티스레드를 사용할수있다면 없는것보다는 좋다는 거죠
물리코어가 높다는게 무슨말씀인지 잘모르겠네요
프로그램을 코어에 할당하는 작업은 윈도우가 합니다
저번에 윈도우 버전업되면서 라이젠의 게임성능이 올라간이유죠
Thinker  
[@Nival] 답변 감사합니다.
남자의호령  
보통 개발자 입장에서는 우리가 하드웨어에서 말하는 코어와 스레드를 구분하지 않습니다.

운영체제는 실행되는 프로그램을 프로세스로 구분하고, 각 프로세스에는 작업의 최소 단위인 스레드가 있습니다.
운영체제에서 말하는 스레드가 하드웨에의 스레드를 통해 실행되기는 하지만
운영체제의 스레드를 실제 하드웨어에 어떻게 매칭 시킬지는 전적으로 운영체제의 책임입니다.

따라서 게임 개발사들도 몇개의 스레드를 띄워놓을지만 보통 고려하지 코어랑 스레드를 구분하지 않습니다.
Thinker  
[@남자의호령] 그렇다면 코어보다는 스레드를 활용하는 게임을 개발하기란 어렵다는 말씀이신가요?
개발을 끝내고 나서야 이 게임은 코어를 많이 먹는구나, 스레드를 많이 먹는구나를 구별할 수 있나요?
남자의호령  
[@Thinker] 아뇨 쉽고 어렵고 문제가 아니라 애초에 개발자 입장에서는 코어와 스레드를 구분할 필요가 없다는 겁니다.
Thinker  
[@남자의호령] 답변 감사합니다.
스몰토크  
다이렉트x12 풀스펙 게임은 상당히 좋은 다중스레드 성능을 보여줍니다.
하지만 그 이하의 버전들에서는 그다지 좋지 못합니다.

병렬처리 잘 하면 좋죠...
헌데 굉장히 까다롭습니다.
처리는 병렬로 하는데 아웃풋은 단일이거든요.
무거운 작업은 처리 후 아웃풋 과정에서 병목이 올 확률이 엄청 높습니다.
처리는 비동기인데 반영은 동기로 해야하는게 참 아이러니하죠.
그래서 많은 개발사들이 다중스래드 사용법이 완벽한 병렬처리가 아닙니다.
하나의 작업을 여러스래드로 하는게 아니고 특정 스래드에 특정 작업을 시킵니다.
예를들어...케릭터 모델링은 1스래드, 이펙트는 2스래드...이런식으로 특정지어줍니다.

가용스래드의 개수는 개발 요구분석때부터 정해집니다.
간혹 그 후에도 스펙이 변경되어 개수가 달라지긴하지만...이러한 경우는 별로 없습니다.
Thinker  
[@스몰토크] 답변 감사합니다.
Radix  
먼저 스레드 개념을 정리합니다.
스레드는 원래 프로세스라는것의 하위개념입니다.
프로세스는 뭐냐? 우리가 사용하는 하나의 프로그램입니다.
하지만 cpu마케팅에 사용되는 스레드는 가상코어의 의미입니다.

스레드는 이전 싱글코어시절부터 존재했습니다. 문제는 컴퓨터가 스레드를 처리하는 방식인데, 단순히 말하자면 싱글코어 컴퓨터에 2개의 스레드가 동작을 한다고하면 os는 2개의 스레드를 번갈아가면서 처리하게됩니다.

여기서 HT와 SMT가 무슨 효과가있냐라고 의문이 드는데 싱글코어를 HT를 사용하여 2개의 코어같이 가상코어를 만들어 테스트를 해보니 물리코어 1개에 2개스레드를 처리하는것보다 가상코어 2개에 각각처리하는방식을 해보니 성능이 2~30프로 좋다라는 것입니다.

위에서 잘 설명해주셨듯이 가상코어(스레드)와 물리코어를 os는 구분하지 않습니다. 위에 설명한것과같이 1개를 2개인것처럼 어떻게보면 os를 속이는것이라 물리코어와 스레드에 구분을 두어 처리하지 않습니다.

마지막으로 물리코어 처리속도와 스레드의 처리속도중 물리코어가 더 빠르다는 말은 조건을 잘 확인해야합니다.
단일 물리코어대 단일 가상코어(스레드)의 성능비교는 당연히 단일 물리코어가 빠릅니다.(단, HT가 동작하는 cpu에한함. HT가 동작하지 않으면 같은성능)
4코어 8쓰레드 제품과 8코어 8쓰레드 제품을 비교하면 당연히 8코어 제품이 빠르겠지요.

게임의 최적화는 단순히 병렬, 멀티프로세싱과 코어갯수를 많이쓴다고 게임이 잘돌아가고 cpu를 많이쓰는개념이 아닙니다. 벙렬, 멀티프로세싱 프로그래밍을 하더라도 스레드당 연산부하가 적다면 효율이 높지 않습니다. 연산부하가 좀 되는애들을 병렬렬프로세싱으로 최적화를 하면 빨라지는것이지, 무조건 코어 많이쓰고 스레드 많이쓰게한다고 빨라지는게 아니거든요. 단순한작업은 되려 단일 스레드로 처리하는것이 벙렬프로세싱으로 프로그래밍한것보다 훨씬 빠릅니다.

최신게임은 위에서 말한 연산부하가 상당합니다. 게임들도 세대를 거듭하면서 발전을 하고 게이머들의 니즈를 충족해야하기때문에 더욱 높은 그래픽 효과와 수많은 행동처리를 하게되죠. 이 수많은 행동처리 및 기타 어플리케이션단의 처리때문에 점점 cpu의 사양이 높아지는것입니다.

위에서 질문하신 코어를 많이먹이는게 고사양에 적합하냐는 말씀은 당연한걸 질문하신겁니다.
처리할게 많으면 더욱 높은 연산능력을 가진 디바이스를 사용하는것이죠.
Thinker  
[@Radix] 상세한 답변 감사드립니다. 많은 도움이 됐습니다.
PowerUser  
그런데 어떤 게임들은 2-30이 아니라 크게 차이나기도 하더군요
분류 제목
페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유