Google에서 컴퓨터의 CPU 수를 찾는 방법을 검색하여 일부 게시물을 찾았지만 일부 사람들은 논리 코어와 물리적 코어 등을 얻는다고 언급했기 때문에 혼란스럽습니다.
그렇다면 논리적 코어와 물리적 코어의 차이점은 무엇입니까? 물리적 코어만 얻을 수 있는 방법이 있나요? 아니면 논리적 핵심을 계산에 통합하는 것이 합리적입니까?
답변1
물리적 코어는 CPU 내의 물리적 코어입니다. 논리 코어는 단일 코어가 2개 이상의 작업을 동시에 수행하는 기능입니다. 이는 초기부터 발생한다.펜티엄 4 CPU소위 말하는 능력하이퍼스레딩(HTT).
이는 코어의 하위 구성 요소가 특정 유형의 명령에 사용되지 않고 다른 장기 실행 명령이 실행되는 게임과 약간 비슷합니다. 따라서 CPU는 실제로 동시에 두 가지 작업을 수행할 수 있습니다.
최신 코어는 보다 성숙한 CPU이므로 여러 작업을 동시에 처리할 수 있지만 실제 코어와 같은 진정한 CPU는 아닙니다. tomshardware에 대한 이 문서에서 하이퍼스레딩 기능의 제한 사항과 핵심 물리적 기능에 대해 자세히 알아볼 수 있습니다.Intel Core i5 및 Core i7: Intel의 주류 걸작.
다음 명령을 사용하여 상자의 결함을 볼 수 있습니다 lscpu
.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2667.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
위의 Intel i5 노트북에는 총 4개의 "CPU"가 있습니다.
CPU: 4
2개의 물리적 코어가 있습니다(슬롯 1개 × 코어 2개/소켓 = 코어 2개).
소켓당 코어 수: 2
CPU 소켓: 1
각 스레드는 최대 2개의 스레드를 실행할 수 있습니다.
코어당 스레드: 2
동시에. 이러한 스레드는 핵심 논리 기능입니다.
답변2
물리적 코어는 물리적 코어, 즉 실제 하드웨어 구성 요소의 수입니다.
논리 코어는 물리적 코어 수에 하이퍼스레딩을 사용하여 각 코어에서 실행할 수 있는 스레드 수를 곱한 값입니다.
예를 들어, 내 4코어 프로세서는 코어당 2개의 스레드를 실행하므로 논리 프로세서는 8개입니다.
답변3
하이퍼스레딩기술을 통해 단일 물리적 프로세서 코어가 두 개의 논리 프로세서처럼 작동할 수 있습니다.
따라서 단일 프로세서 코어는 두 개의 독립적인 스레드를 실행할 수 있습니다.동시에.
인텔은 물리적 프로세서를 소켓이라고 부릅니다.
하이퍼스레딩을 사용하면 물리적 프로세서가 마치 논리적 프로세서라고 하는 두 개의 물리적 프로세서가 있는 것처럼 동작하게 됩니다. 왜?
하이퍼스레딩은 시스템 성능을 두 배로 늘리지는 않지만 유휴 리소스를 더 잘 활용하여 특정 중요한 작업 유형에 대한 처리량을 늘려 성능을 향상시킬 수 있습니다. 사용량이 많은 코어의 하나의 논리 프로세서에서 실행되는 애플리케이션의 처리량은 하이퍼스레딩되지 않은 프로세서에서 단독으로 실행될 때 달성되는 처리량의 절반보다 약간 더 클 것으로 예상됩니다.
일반화하다
- 물리적 프로세서는 우리가 보고 만질 수 있는 것입니다.
- 논리 프로세서는 물리적 프로세서와 같습니다.핵무기두 개의 물리적 코어 역할을 합니다.
답변4
논리 코어(하이퍼스레딩)는 여러 물리적 코어에 비해 저렴하고 느린 대안입니다.
이것인텔 핸드북 제3권 시스템 프로그래밍 가이드 - 325384-056US 2015년 9월8.7 "인텔 하이퍼스레딩 기술 아키텍처"에서는 HT에 대해 간략하게 설명합니다. 여기에는 다음 차트가 포함되어 있습니다.
실제 애플리케이션에서 TODO는 평균 몇 퍼센트 정도 느립니까?
최신 단일 CPU 코어는 이미 명령어 파이프라인을 통해 여러 명령어를 동시에 실행하기 때문에 하이퍼스레딩이 가능합니다.https://en.wikipedia.org/wiki/Instruction_pipelined
명령어 파이프라이닝은 메모리 읽기, 명령어 디코딩, 명령어 실행 등 회로의 모든 부분이 주어진 시간에 사용되도록 보장하기 위해 단일 코어 내에서 기능을 분리하는 것입니다.
하이퍼스레딩은 다음을 사용하여 기능을 더욱 분리합니다.
파이프라인을 통해 실제로 명령을 실행하는 단일 백엔드입니다.
듀얼 코어에는 두 개의 백엔드가 있어 비용과 성능이 더 높습니다.
두 개의 명령 스트림을 가져와서 단일 백엔드의 파이프라인 사용을 극대화하지 않는 방식으로 순서를 지정하는 두 개의 프런트엔드위험.
듀얼 코어에는 각 백엔드마다 하나씩 총 2개의 프런트엔드가 있습니다.
명령어 재정렬로 아무런 이점이 없어 하이퍼스레딩을 쓸모없게 만드는 극단적인 경우가 있습니다. 그러나 평균적으로는 상당한 개선이 이루어졌습니다.
단일 코어에 있는 두 개의 하이퍼스레드는 두 개의 서로 다른 코어(L3만 공유)보다 더 많은 캐시 수준(TODO 몇 개? L1?)을 공유합니다. 다음을 참조하세요.
- https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751
- https://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874
각 하이퍼스레드가 운영 체제에 노출하는 인터페이스는 실제 커널의 인터페이스와 유사하며 둘 다 독립적으로 제어할 수 있습니다. 따라서 cat /proc/cpuinfo
코어당 2개의 하이퍼스레드가 있는 2개의 코어만 있음에도 불구하고 4개의 프로세서가 표시됩니다.
그러나 운영 체제는 단일 코어에서 특정 프로그램의 여러 스레드를 실행하기 위해 동일한 코어에 어떤 하이퍼스레드가 있는지 아는 이점을 활용하여 잠재적으로 캐시 사용량을 늘릴 수 있습니다.
이 LinusTechTips 비디오에는 기술적이지 않은 가벼운 설명이 포함되어 있습니다.https://www.youtube.com/watch?v=wnS50lJicXc
"동시 멀티스레딩"은 이러한 유형의 기술에 대한 보다 일반적이고 덜 Intel 전용 이름입니다.