x86 아키텍처는 1970년대 후반 8비트 CPU로 상용화됐다. CPU 대 스레드는 1:1이었습니다. 시간이 지나면서 칩 기술의 발전으로 인해 정의가 모호해졌다. 부동산에서 모토는 “위치, 위치, 위치”입니다. 트랜지스터에서는 “밀도, 밀도 및 밀도 향상!”가 됩니다. 마이크로칩의 트랜지스터 수가 2년마다 두 배로 늘어난다는 무어의 법칙은 관련 컴퓨터의 비용이 절반으로 절감되더라도 업계의 모든 사람들이 알아야 한다. 우리가 언제 무어의 법칙의 한계에 도달할지 논의하게 되어 기쁘지만, 이 법칙은 영원히 기술의 심오한 법칙으로 남을 것입니다.
나는 8086 컴퓨터를 소유하고 8인치 플로피로 CPM 운영 체제를 사용할 수 있을 만큼 나이가 들었다! 지난 수년간 저는 1:1 관계가 1:다수 관계로 바뀌면서 용어가 오용되는 것을 봐왔습니다. 대부분의 혼란은 “CPU” 또는 중앙 처리 장치라는 용어와 관련되어 남아 있습니다. 이 글의 목표는 모든 용어를 다루고 소켓, CPU, 코어 및 스레드 관련 혼동을 해소하는 것입니다.
Socket
가장 기본적인 수준에는 소켓에 핀을 꽂은 CPU 칩이 없으면 아무것도 할 수 없는 ‘마더보드’가 있다. 더 정확한 용어는 “CPU 소켓”입니다. 대부분의 블레이드는 듀얼 소켓 마더보드를 작동하지만, 8개의 소켓이 있는 HP DL-980을 테스트할 때 감탄했습니다! NUMA 노드는 CPU와 관련이 없습니다. NUMA 노드는 CPU 소켓과 가장 가까운 메모리 뱅크 간의 관계입니다.
CPU
중앙 처리 장치는 업계에서 가장 악의적인 용어이며 소켓, 코어, 심지어 스레드를 정의하는 데 사용되었다고 들었습니다. 궁극적으로 소켓과 CPU의 관계는 용어가 실제로 어떻게 사용되는지에 관계없이 1:1 관계를 유지합니다. 어떤 면에서는 이 용어가 “소켓”으로도 표현될 수 있기 때문에 제거되었으면 합니다. 결국 기억해야 할 가장 중요한 것은 CPU가 통합된 실리콘 조각이며 마더보드의 CPU 소켓과 1:1 관계를 나타낸다는 것입니다.
Core
Intel/AMD는 2005년부터 2006년까지 여러 프로세싱 유닛(프로세서)이 장착된 CPU를 출시하기 시작했습니다. “프로세서”라는 단어는 운영 체제에서 하나의 명령어를 실행할 수 있는 기능을 나타내기 때문에 지금까지 의도적으로 사용하지 않았습니다. 두 번째로 악성 IT 용어가 있었다면 바로 프로세서였을 것입니다! 8080 CPU로 돌아가면 한 번에 하나의 바이트(따라서 8비트 프로세서)의 데이터를 처리할 수 있습니다. 프로세서/코어 밀도가 64비트(64/8 = 8바이트 데이터)로 증가했습니다. “코어”의 등장으로 10개의 코어를 가진 단일 CPU가 10개의 명령을 동시에 실행할 수 있습니다. 성능을 무시하면 CPU, 코어 및 프로세서와 같은 용어를 서로 바꾸어 사용할 수 있습니다. 그러나 CPU에는 연결된 코어와 메모리가 있으므로 “로컬리티”가 적용됩니다. 서로 다른 CPU에 있는 운영 체제에서 나오는 명령 집합은 동일한 CPU 캐시와 다른 지역별 성능 문제를 인식하지 못합니다.
Thread
스레드는 운영 체제 명령의 대기열일 뿐입니다. 이러한 혼란은 1980년대부터 있어온 “하이퍼스레딩”이라는 용어와 함께 온다. 인텔은 펜티엄 4(2002년경)까지 HT(하이퍼스레드) 칩을 출시하지 않았다. 하이퍼스레딩은 내 존재의 골칫거리였다. 공급업체는 CPU/코어/프로세서와 같은 단어를 활용하는 OS 수준의 용어 정의를 통해 이러한 상황을 더욱 악화시켰습니다. 간단히 말해, HT를 활성화하면 코어당 두 개의 스레드(think queue)가 허용됩니다. 10코어 시스템에서 HT를 활성화한 경우 10코어와 20개의 스레드가 있습니다. 여전히 한 사이클에 10개의 OS 명령만 실행할 수 있습니다. 하지만 20개의 OS 명령어를 대기열에 넣을 수 있습니다. 이렇게 하면 여러 명령 대기열/대기열 해제 이벤트가 발생할 수 있으므로 효율성이 향상됩니다. HT는 대기 시간을 제거하여 30% 이상의 성능 향상(효율성 향상)을 제공할 수 있습니다. 그러나 이 기능은 마법을 수행하지는 않으며 CPU/코어에서 주어진 시간 내에 실행할 수 있는 명령의 이론적인 최대 수에 가까워질 뿐입니다.
정확한 정의가 중요한 이유
위의 모든 내용을 언급한 이유는 다음과 같습니다. 저는 VMware Technical Account Manager입니다. TAM을 통해 고객은 VMware 기술 투자의 가치를 극대화하고 최신 기술 세계와 함께 최신 상태를 유지할 수 있습니다. IT 벤더/인력들이 물리적 엔터티의 추상화/에뮬레이션을 나타내는 논리 및 가상과 같은 용어를 추가함에 따라 복잡성이 가중됩니다. 항상 vSphere 고객과 통화를 하고 있으며, “vCenter의 프로세서 활용률이 OS의 50%를 보여주고 있습니다.”와 같은 문구를 듣습니다. 그러면 “호스트 또는 워크로드 메트릭에 대해 이야기하고 있습니까? 코어 또는 스레드를 말씀하시는 건가요?”
또 다른 예로, “PCPU”라는 용어는 스레드(물리적 CPU나 코어도 아님!)를 나타내는 데 사용됩니다. ESXTOP에서 core라는 용어는 core입니다(좋습니다, 올바른 용어를 넣으셔야 합니다!). PCPU 값이 표시되지 않고 코어만 표시되는 경우 호스트/ESXi 하이퍼바이저의 BIOS에서 HT가 사용하도록 설정되어 있지 않다는 신호입니다. 각 스레드가 코어에서 실행되는 시간의 백분율을 알려주기 때문에 다소 도움이 됩니다.
가상 시스템의 구성도 혼란스러울 수 있습니다. CPU 속성을 편집할 때 CPU 수를 설정하면 CPU당 코어가 아닌 소켓당 코어가 하위 옵션으로 지정됩니다. 상위 정의는 CPU이므로 하위 정의와 일치해야 합니다. VMware 워크로드/가상 머신 내에서 CPU/코어 관계를 설정할 때는 코어를 사용하는 데 전혀 주의해야 합니다. 예를 들어 vMotion을 사용하면 VM을 6개 코어/CPU 호스트에서 12개 코어/CPU 호스트로 이동하거나 그 반대로 이동할 수 있습니다. CPU/코어를 설정하는 경우 기본 물리적 인프라와 일치해야 하며 밀도가 다른 호스트가 있는 경우 이 작업이 어려울 수 있습니다.
우리 모두 같은 생각이라면
성공의 열쇠는 x86 아키텍처가 소켓-CPU-코어 스레드 기반이라는 사실을 기억하는 것입니다. 정의를 처리할 때 가장 먼저 해야 할 일은 정의가 참조하는 대상을 결정하는 것입니다. 동료들과도 같은 생각을 가져야 합니다. IT가 이러한 문제를 어렵게 만든 것에 실망하지 마십시오. 실오라기 꿰매던 코미디 연기가 떠오른다. 고함소리 전체를 기억하지는 못하지만, “우리는 주차장에서 운전하고 진입로에 주차한다!”는 것은 기억합니다. 언급되고 있는 것에 대해 모두가 동의한다면 명명법은 덜 중요해진다.
출처 : https://blogs.vmware.com/customer-experience-and-success/2021/06/sockets-cpus-cores-and-threads-the-history-of-x86-processor-terms.html