문제

멀티 CPU, 멀티 코어 및 하이퍼 스레드의 차이점을 설명하기 위해 몇 가지 문서를 추천 할 수 있습니까? 나는 항상 이러한 차이점과 다른 시나리오에서 각 아키텍처의 장단점에 대해 혼란스러워합니다.

편집 : 온라인으로 배우고 다른 사람들의 의견을 배우고 나서 현재의 이해가 있습니다. 누구든지 의견을 검토 할 수 있습니까?

  1. 나는 하이퍼 스레드가 가장 열등한 기술이지만 저렴하다고 생각합니다. 주요 아이디어는 컨텍스트 스위치 시간을 저장하기위한 중복 레지스터입니다.
  2. 멀티 프로세서는 하이퍼 스레드보다 낫지 만 다른 CPU가 다른 칩에 있기 때문에 다른 CPU 간의 통신은 멀티 코어보다 지연 시간이 길고 여러 칩을 사용하면 멀티 코어보다 더 많은 비용과 전력 소비가 있습니다. ;
  3. 멀티 코어는 모든 CPU를 단일 칩에 통합하므로 다른 CPU 간의 통신 대기 시간이 다중 프로세서와 비교하여 크게 줄어 듭니다. 하나의 단일 칩을 사용하여 모든 CPU를 포함하기 때문에 소비자는 전력이 적고 멀티 프로세서 시스템보다 저렴합니다.

미리 감사드립니다, 조지

도움이 되었습니까?

해결책

Multi-CPU는 첫 번째 버전이었습니다. 하나 이상의 CPU 칩이있는 하나 이상의 메인 보드가 있습니다. 여기서 주요 문제는 CPU가 내부 데이터 중 일부를 다른 CPU에 노출 시켜서 방해가되지 않도록해야한다는 것입니다.

다음 단계는 하이퍼 스레딩이었습니다. 메인 보드에 하나의 칩이 있지만 내부적으로 두 번 부품이 있었으므로 동시에 두 개의 지침을 실행할 수 있습니다.

현재 개발은 멀티 코어입니다. 기본적으로 원래 아이디어 (몇 가지 완전한 CPU)이지만 단일 칩입니다. 장점 : 칩 디자이너는 동기화 신호에 대한 추가 와이어를 칩에 쉽게 넣을 수 있습니다 (핀에서 붐비는 메인 보드 위로 나와 두 번째 칩으로 올라가는 대신).

오늘날 슈퍼 컴퓨터는 멀티 -CPU, 멀티 코어입니다. 일반적으로 2-4 CPU가있는 메인 보드가 많으며 각 CPU는 멀티 코어이며 각각 자체 RAM이 있습니다.

편집] 당신은 거의 옳았습니다. 몇 가지 사소한 점 :

  • 하이퍼 스레딩은 단일 코어에서 한 번에 두 가지 컨텍스트를 추적하여 주문 외부 CPU 코어에 더 많은 병렬성을 노출시킵니다. 이는 캐시 미스에 하나의 스레드가 정체되거나 분기 오해 또는 고도가 높은 지침의 결과를 기다리는 경우에도 실행 장치에 공급되는 실행 장치를 유지합니다. 많은 하드웨어를 복제하지 않고 더 많은 총 처리량을 얻는 방법이지만 각 스레드가 개별적으로 속도가 느려집니다. 자세한 내용은이 Q & A를 참조하십시오, 이 단락의 이전 문구에 무엇이 잘못되었는지에 대한 설명.

  • Multi-CPU의 주요 문제는 그들에게 실행되는 코드가 결국 RAM에 액세스한다는 것입니다. N CPU가 있지만 RAM에 접근하기위한 버스는 단 하나뿐입니다. 따라서 a) 각 CPU가 상당한 양의 RAM 액세스를 얻는지 확인하는 일부 하드웨어가 있어야합니다. b) RAM의 동일한 부분에 액세스하는 것은 문제를 일으키지 않으며 c) CPU 2가 알림을받는 것입니다. CPU 1이 CPU 2가 내부 캐시에 가지고있는 일부 메모리 주소를 작성할 때. 그런 일이 발생하지 않으면 CPU 2는 캐시 된 값을 행복하게 사용하여 구식이라는 사실을 알지 못합니다.

    목록에 작업이 있고 사용 가능한 모든 CPU에이를 전파하고 싶다고 상상해보십시오. 따라서 CPU 1은 목록에서 첫 번째 요소를 가져와 포인터를 업데이트합니다. CPU 2도 똑같이합니다. 효율적인 이유로 두 CPU는 몇 바이트를 캐시에 복사 할뿐만 아니라 전체 "캐시 라인"(무엇이든지)를 복사합니다. 바이트 X를 읽을 때 곧 X+1도 읽을 수 있다고 가정합니다.

    이제 두 CPU 모두 캐시에 메모리 사본이 있습니다. CPU 1은 다음 항목을 목록에서 가져옵니다. 캐시 동기가 없으면 CPU 2가 목록을 변경했음을 알 수 없으며 CPU 2와 동일한 항목에서 작동하기 시작합니다.

    이것이 효과적으로 멀티 -CPU를 그렇게 복잡하게 만드는 것입니다. 이것의 부작용은 전체 코드가 단일 CPU에서만 실행 된 경우 얻는 것보다 더 나쁜 성능으로 이어질 수 있습니다. 솔루션은 멀티 코어입니다. 캐시를 동기화하는 데 필요한만큼 많은 와이어를 쉽게 추가 할 수 있습니다. 한 캐시에서 다른 캐시로 데이터를 복사 할 수도 있습니다 (업데이트 부속 등을 플러시하고 다시로드하지 않고 캐시 라인의 등장) 등을 등. 또는 캐시 로직으로 인해 모든 CPU가 실제 RAM의 동일한 부분에 액세스 할 때 동일한 캐시 라인을 얻을 수 있으며 CPU까지 몇 나노 초에 CPU 2를 차단할 수 있습니다. 1은 변경했습니다.

EDIT2] 멀티 코어가 멀티 -CPU보다 간단한 주된 이유는 메인 보드에서 동기화 효과가 있어야하는 두 칩 사이에 모든 전선을 실행할 수 없기 때문입니다. 또한 신호는 30cm/ns 상단 만 이동합니다 (빛의 속도; 와이어에서는 일반적으로 훨씬 적습니다). 그리고 다층 메인 보드에서 신호가 서로 영향을 미치기 시작한다는 것을 잊지 마십시오 (Crosstalk). 우리는 0이 0V이고 1은 5V라고 생각하고 싶지만 실제로 "0"은 -0.5V (1-> 0에서 라인을 떨어 뜨릴 때 오버 드라이브)와 "1"은 0.8V 이상입니다.

단일 칩 내부에 모든 것이 있으면 신호가 훨씬 빠르게 실행되며 원하는만큼 가질 수 있습니다 (거의 : 거의 :) 또한 Signal Crosstalk는 제어하기가 훨씬 쉽습니다.

다른 팁

듀얼 CPU, 멀티 코어 및 하이퍼 스레딩에 대한 흥미로운 기사를 찾을 수 있습니다. 인텔의 웹 사이트 또는 짧은 기사에서 예일대 학교.

필요한 모든 정보를 여기에서 찾으 셨기를 바랍니다.

간단히 말해서 : 다중 CPU 또는 다중 프로세서 시스템에는 여러 프로세서가 있습니다. 멀티 코어 시스템은 동일한 다이에 여러 프로세서가있는 멀티 프로세서 시스템입니다. 하이퍼 스레딩에서 동일한 프로세서에서 여러 스레드가 실행될 수 있습니다 (즉,이 여러 스레드 사이의 컨텍스트 스위치 시간은 매우 작습니다).

다중 프로세서는 현재 30 년 동안 있었지만 대부분 실험실에서 그곳에있었습니다. 멀티 코어는 새로운 인기있는 멀티 프로세서입니다. 오늘날 서버 프로세서는 다중 프로세서와 함께 하이퍼 스레딩을 구현합니다.

이 주제에 대한 Wikipedia 기사는 매우 설명되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top