
좋아요, 쿼드 코어를 피해야 한다는 고전적인 주장을 알고 있습니다. 애플리케이션 수준에서 대부분의 애플리케이션은 다중 코어용으로 작성되지 않았습니다. 대부분의 데스크톱 소프트웨어에는 병렬화가 필요하지 않습니다.
그러나 OS 수준에서는 OS가 다양한 코어에 걸쳐 프로세스를 분할한다는 것이 분명해 보입니다. 이것이 그 자체로 더 많은 코어를 확보해야 한다는 주장이 아닐까요? 여러 상황에서 도움이 많이 되지 않나요? CPU를 많이 사용하는 몇 가지 작업이 진행됩니다. 이러한 프로세스는 각각 코어를 100% 차지할 수 있지만 여전히 웹을 탐색하고 마지막 코어의 SuperUser에 대해 질문할 수 있습니다.... 그렇죠?
답변1
OS는 개별 단일 스레드 프로세스를 여러 코어에 걸쳐 분할할 수 없습니다(응용 프로그램이 실행되는 코어가 바뀔 수 있지만 이는 다른 질문입니다). 그러나 각각 자체 코어에서 여러 프로세스를 실행할 수 있습니다. 그렇습니다. 백그라운드에서 프로세서 집약적인 여러 응용 프로그램을 실행하는 경우 다른 응용 프로그램을 실행하는 데 사용할 수 있는 작업을 거의 또는 전혀 수행하지 않는 예비 코어가 여전히 남아 있을 가능성이 높습니다.
답변2
@heavyd의 답변에 추가하기 위해 그 이유는 OS가 프로세스의 어느 부분을 병렬로 실행해도 괜찮은지, 그렇지 않은지를 결정할 수 있는 능력이 없기 때문입니다. 프로그램이 병렬 코어에서 실행되도록 설계되지 않은 경우 동시에 순차적으로 실행되도록 설계된 애플리케이션 내 루틴을 가질 수 있습니다. 이로 인해 모든 종류의 문제가 발생할 수 있습니다(예: 2개의 루틴이 동일한 메모리 블록을 사용하지만 동시에 실행되지 않는 경우).
OS는 어쨌든 그렇게 하기 때문에 여러 프로세스에 여러 코어를 사용할 수 있지만 단일 코어 응용 프로그램을 여러 코어에 분산하면 모든 종류의 예기치 않은 동작이 발생합니다.
답변3
결론적으로, 프로세서 사용량이 1%인지 95%인지는 중요하지 않습니다(95%에서 안정적이고 최고 수준이 아닌 한). 프로그램은 동일한 속도로 실행됩니다. 100% 도달하지 않습니다. 사용하지 않는 CPU 사이클은 단순히 낭비됩니다.
이 때문에 Windows 7(호환 프로세서)에는 기본적으로 전기를 절약하기 위해 컴퓨터에서 사용하지 않는 코어를 비활성화하는 "코어 파킹"이라는 기술이 있습니다.
단일 스레드 응용프로그램은 자동으로 대체 코어에 배치됩니다. 이 기술의 배경이 무엇인지는 잘 모르겠지만 꽤 잘 작동한다는 것은 알고 있습니다.
답변4
귀하의 초기 감정은 정확합니다. 다중 코어에 대한 부정적인 경향이 있으며 실제로 그럴만한 가치가 있는 것은 아닙니다.
대부분의 사용자가 간단한 워드 프로세싱을 위해 데스크톱 PC만 사용했던 시절에는 논쟁이 있었을 수도 있습니다. 그러나 요즘에는 각각 자체 프로세스(크롬 및 탭에 대한 프로세스 수준 분리 수행)에 있는 여러 탭이 있는 브라우저와 웹 페이지 내의 비디오 디코더 및 즉석에서 쉽게 오프로드할 수 있는 추가 작업과 같은 것들이 있습니다. 효과 렌더링(일명 CSS3), 심지어 브라우저만으로도 훨씬 더 많은 램과 몇 개의 코어에 대한 이유를 정당화할 수 있습니다.
여기에 일부 사용자가 이 PC에서 게임을 하거나 차고 밴드, imovie, 핸드 브레이크, 다중 코어와 같은 도구를 사용할 수도 있다는 사실은 큰 이점이 될 수 있습니다.
다른 코어를 유용하게 사용하려면 해당 코어를 최대화(즉, 단일 코어에서 100% CPU 사용량)해야 한다고 가정하는 것은 사실이 아닙니다. 여기서는 병렬성을 이야기하고 있기 때문입니다. CPU 내 작업 전환은 일반적으로 스택을 다른 프로세스로 교환하기 전에 일련의 작업을 수행합니다. 이러한 작업이 모두 CPU에 바인딩된 것은 아니므로 코어가 잠겨 있어도 CPU 스파이크가 표시되지 않습니다.
기본적으로 당신 말이 맞습니다. 그러나 가장 효율적인 코어 수는 얼마입니까? 2? 4? 12? 이는 아마도 사용자 습관에 따라 달라질 것입니다. 저는 대부분의 사용자에게 2-4를 사용하는 경향이 있지만 단지 추측일 뿐입니다.