2000년대 중반부터 데스크탑 CPU는 단일 패키지에 여러 CPU 코어를 제공했습니다. 이것은 멀티코어 프로세서입니다. 초기 설계는 2개 또는 4개의 CPU 코어로 제한되었지만 최신 CPU는 단일 CPU에서 최대 64개의 물리적 코어를 제공합니다. 높은 코어 수는 데스크탑 CPU의 표준이 아니며 일반적으로 고급 워크스테이션 또는 서버용으로 예약되어 있습니다. 최신 데스크탑 CPU의 일반적인 코어 수는 4~16입니다. 그러나 현대 컴퓨터에서 지배적 인 멀티 코어 CPU는 무엇입니까?
단일 코어
역사적으로 단일 코어 CPU는 한 번에 단일 작업만 수행하는 것으로 제한되었습니다. 이것은 전체 범위의 문제와 함께 제공됩니다. 예를 들어, 최신 컴퓨터에는 엄청난 양의 백그라운드 프로세스가 실행되고 있습니다. CPU가 한 번에 한 가지만 처리할 수 있는 경우 이러한 백그라운드 프로세스가 포그라운드 프로세스에서 처리 시간을 가져와야 함을 의미합니다. 또한 캐시 미스는 비교적 느린 RAM에서 데이터를 검색해야 함을 의미합니다. RAM에서 데이터를 가져오는 동안 프로세서는 데이터를 가져올 때까지 아무 것도 할 수 없으므로 단순히 유휴 상태에 있습니다. 이것은 실행 중인 프로세스와 완료되기를 기다리고 있는 다른 모든 프로세스를 보류합니다.
최신 단일 코어 프로세서는 예산 멀티코어 CPU의 부상으로 인해 실제로 별 것이 아니지만 더 빠르게 작동하기 위해 다른 최신 트릭을 사용할 수 있습니다. 파이프라인을 사용하면 명령어 처리의 서로 다른 부분을 동시에 사용할 수 있습니다. 클럭당 파이프라인의 한 단계만 사용하는 것보다 상당한 성능 향상 제공 주기. 넓은 파이프라인은 클록 주기당 각 파이프라인 단계에서 처리할 수 있는 여러 명령을 볼 수 있습니다. Out Of Order 처리를 통해 보다 시간 효율적인 방식으로 명령을 예약할 수 있습니다. 분기 예측기는 분기 명령의 결과를 예측하고 추정된 답변을 선제적으로 실행할 수 있습니다.
이러한 모든 요소는 잘 작동하고 약간의 성능을 제공합니다. 그러나 하나 이상의 코어를 추가하면 이 모든 것이 가능하며 한 번에 두 배의 데이터를 한 번에 처리할 수 있습니다.
멀티코어
두 번째 코어를 추가하면 원시 성능이 두 배가 되는 것처럼 들립니다. 불행히도 상황은 그보다 더 복잡합니다. 프로그램 논리는 종종 단일 스레드로 프로그램이 한 번에 한 가지만 수행하려고 합니다. 그러나 일어날 수 있는 일은 다른 프로세스가 동시에 다른 코어를 사용할 수 있다는 것입니다. 대부분의 개별 프로그램에 내재된 성능 향상은 없지만 추가 처리 자원은 제한된 자원에 대한 경쟁을 효과적으로 줄입니다. 성능 향상. 단순히 CPU 시간에 대한 경쟁을 줄임으로써 이러한 성능 향상은 단일에서 점프할 때 가장 두드러집니다. 듀얼 코어 CPU의 경우 코어 수를 더 늘리면 수익이 감소하지만 일반적으로 더 많을수록 더 나은.
멀티코어 시스템을 적절히 활용하고 실제로 확실한 성능 향상을 보려면 여러 처리 스레드를 사용하도록 프로그램을 프로그래밍해야 합니다. 다중 스레드 논리는 종종 배우기 어렵고 잠재적인 함정이 많기 때문에 안정적으로 수행하기 어려운 것으로 유명합니다. 한 가지 함정은 경쟁 조건으로 알려져 있습니다. 경쟁 조건에서 한 프로세스는 시작하는 다른 프로세스가 원활하게 실행될 것이라고 가정한 다음 원활하게 실행되는 다른 프로세스에 의존하는 작업을 시도합니다. 예를 들어 프로세스가 한 문서를 닫고 다른 문서를 열기 위해 다른 프로세스를 시작한다고 상상해 보십시오. 원래 프로세스에서 두 번째 프로세스가 완료되었는지 제대로 확인하지 않으면 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 첫 번째 문서를 닫는 데 문제가 있는 경우 원래 프로세스가 문서에 더 많은 데이터를 쓸 때 문서가 여전히 열려 있을 수 있습니다.
열 문제
멀티코어 프로세서가 결국 고군분투하는 가장 큰 문제 중 하나는 열입니다. 하나의 CPU 코어는 그렇게 많은 열을 방출하지 않지만 두 개는 더 많은 열을 방출합니다. 코어 수가 많은 CPU에서 이러한 열 집중으로 인해 CPU가 온도를 관리하므로 부스트 클럭이 낮아질 수 있습니다. 부스트 클럭이 낮으면 단일 스레드 응용 프로그램에서 성능이 저하됩니다. 이는 게임 성능 벤치마크에서 종종 볼 수 있습니다. 비디오 게임은 종종 단일 스레드에 크게 의존합니다. 따라서 단일 스레드 성능은 종종 게임에 매우 중요합니다. 16코어 카운트 모델과 같은 높은 코어 카운트 CPU는 종종 고성능 빈에서 가져옵니다. 그럼에도 불구하고 단일 스레드 벤치마크에서 코어 수가 더 적은 "더 적은" CPU가 정기적으로 성능을 능가하는 것으로 나타났습니다. 이 문제는 클럭 속도가 고급 데스크탑 CPU보다 현저히 낮은 64코어 AMD Threadripper와 같은 초고 코어 수 CPU에서 훨씬 더 분명합니다.
성공
많은 응용 프로그램에서 여러 CPU 코어를 적절하게 사용할 수 있습니다. 예를 들어 CPU 렌더링은 병렬화하기 비교적 쉬운 작업입니다. 현재 64개 이상의 코어를 제공하는 단일 CPU는 없지만 성능 향상은 최대 64개 코어 이상까지 볼 수 있습니다. 많은 응용 프로그램은 순차 논리에 의존하기 때문에 단순히 멀티스레드할 수 없습니다. 이것들은 멀티스레드 프로그램의 속도 향상 근처에는 보이지 않지만 멀티스레드 프로그램이 다른 단일 스레드 프로그램은 다른 CPU 코어를 사용할 수 있으므로 프로세서 시간을 확보하여 더 나은 성능.
아키텍처 옵션
데스크탑 프로세서에서 멀티코어 CPU 내의 각 CPU 코어는 일반적으로 동일합니다. 이러한 균질성은 코어에 대한 스케줄링 작업을 간단하게 만듭니다. 동일한 반복 디자인을 사용하는 것도 개발 비용을 줄이는 데 도움이 됩니다. 그러나 모바일 프로세서는 오랫동안 이기종 코어 아키텍처를 사용해 왔습니다. 이 디자인에는 2개 또는 3개의 CPU 코어 계층이 있습니다. 각 계층은 동일한 프로세스를 실행할 수 있지만 일부는 전력 효율성을 위해 설계되고 나머지는 성능을 위해 조정됩니다. 이것은 많은 작업이 더 느린 것을 더 많이 사용할 수 있기 때문에 배터리 구동 장치의 성공 비결이 입증되었습니다. 전력 효율적인 코어, 배터리 수명 연장, 우선 순위가 높은 프로세스는 여전히 고속으로 실행 가능 필요할 때.
데스크탑 CPU 아키텍처도 이기종 코어 설계 방향으로 움직이고 있습니다. 인텔의 앨더 레이크 12일 generation Core CPU 라인은 이를 수행하는 최초의 데스크탑 CPU입니다. 이 경우 더 작은 코어의 주요 구동 요인은 동전의 양면이지만 반드시 전력 효율성이 아니라 열 효율성입니다. 여러 개의 강력한 코어가 있으면 고성능을 제공하는 반면, 많은 효율적인 코어는 메인 코어에 너무 많은 영향을 주지 않으면서 백그라운드 작업을 처리할 수 있습니다.
결론
멀티코어 CPU는 동일한 다이에만 있는 것은 아니지만 단일 패키지에 여러 처리 코어가 있는 CPU입니다. 멀티코어 CPU는 많은 프로그램에 직접적인 성능 향상을 제공하지 않지만 코어 수를 늘리면 단일 스레드 프로그램이 CPU 시간을 놓고 경쟁할 필요가 없습니다. 일부 프로그램은 여러 코어를 최대한 활용하여 가능한 한 많은 코어를 직접 사용할 수 있습니다. 열 및 전력 제약으로 인해 이 향상이 반드시 코어를 두 배로 늘려 성능을 두 배로 늘리는 것은 아니지만 큰 성능 향상을 제공합니다.