ดังนั้นอะไรคือ cpu cores ที่เป็นตรรกะ (ซึ่งต่างจาก cpu core)


48

ฉัน googling เกี่ยวกับวิธีที่ฉันสามารถค้นหาจำนวนของ CPUs ในเครื่องและฉันพบบางโพสต์ แต่ฉันสับสนตามที่บางคนกล่าวว่าคุณได้รับตรรกะตรรกะเทียบกับแกนกายภาพ ฯลฯ
ดังนั้นความแตกต่างระหว่างตรรกะตรรกะและกายภาพคืออะไร มีวิธีที่ฉันจะได้รับแกนกายภาพเท่านั้นหรือไม่ หรือมันสมเหตุสมผลที่จะรวมแกนตรรกะในการนับของเรา

คำตอบ:


62

ฟิสิคัลคอร์เป็นเพียงแค่นั้นฟิสิคัลคอร์ภายใน CPU Logical cores คือความสามารถของแกนเดี่ยวในการทำ 2 อย่างหรือมากกว่าพร้อมกัน นี้งอกออกมาจากต้นซีพียู Pentium 4ความสามารถในการทำสิ่งที่เรียกว่าเทคโนโลยี Hyper Threading (HTT)

มันเป็นเกมที่กำลังเล่นอยู่โดยที่ส่วนประกอบย่อยของคอร์ไม่ได้ถูกใช้สำหรับคำสั่งบางประเภทในขณะที่คำสั่งที่ใช้เวลานานอาจถูกประหารชีวิต ดังนั้น CPU จึงสามารถทำงาน 2 อย่างพร้อมกันได้

คอร์ที่ใหม่กว่านั้นเป็นซีพียูแบบเต็มรูปแบบมากขึ้นดังนั้นพวกเขาจึงทำงานหลายอย่างพร้อมกัน แต่พวกเขาไม่ได้เป็นซีพียูที่แท้จริงตามที่มีอยู่จริง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับข้อ จำกัด ของการทำงาน hyperthreading เทียบกับความสามารถทางกายภาพของแกนที่นี่ใน tomshardware ในบทความนี้ชื่อ: Intel Core i5 และ Core i7: อินเทลหลักผลงานชิ้นโบแดง

คุณสามารถเห็นรายละเอียดของกล่องของคุณโดยใช้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 คอร์ทางกายภาพ

Core (s) ต่อซ็อกเก็ต: 2

ซึ่งแต่ละกระทู้สามารถรันได้สูงสุด 2 เธรด

จำนวนด้ายต่อแกน: 2

ในเวลาเดียวกัน. เธรดเหล่านี้เป็นความสามารถเชิงตรรกะของคอร์


ฉันไม่มีlscpuเครื่องมืออื่น ๆ
จิม

1
ข้อมูลดิบที่lscpuใช้มีการเปิดเผยที่นี่: cat /proc/cpuinfo. ระบบปฏิบัติการของคุณคืออะไร?
slm

1
@ThomasWeller - ดู A'er อื่น ๆ ของฉันที่นี่ - unix.stackexchange.com/questions/113544/...
slm

1
Core(s) per socketครั้งThread(s) per core: 2= CPU(s): 4? แก้ไข?
3019105

1
@ user3019105 - ถูกต้อง
slm

12

ฟิสิคัลคอร์คือจำนวนของฟิสิคัลคอร์, คอมโพเนนต์ฮาร์ดแวร์จริง

Logical cores คือจำนวนแกนประมวลผลทางกายภาพคูณจำนวนเธรดที่สามารถรันบนแต่ละแกนผ่านการใช้ไฮเปอร์เธรด

ตัวอย่างเช่นตัวประมวลผล 4 คอร์ของฉันรันสองเธรดต่อหนึ่งคอร์ดังนั้นฉันจึงมีตัวประมวลผลเชิงตรรกะ 8 ตัว


ดังนั้นตัวเลขนี้สมเหตุสมผลถ้าใช้โปรเซสเซอร์ที่รองรับไฮเปอร์เธรด และสิ่งนี้หมายความว่าอะไรยังคงมีหนึ่งเธรดที่จะครอบครอง cpu แต่ละรายการในเวลาเดียวกันดังนั้นตัวเลขนี้หมายความว่าอย่างไร
จิม

ดังนั้นฉันควรตั้งเป้าที่จะรับหมายเลขใด
จิม

ยกตัวอย่างเช่นไม่จำเป็นต้องมีหลายเธรดพร้อมกันอนุญาตให้เธรดสองเธรดรันพร้อมกันบนแกนเดี่ยว มีข้อดีอื่น ๆ อีกมากมายเช่นกัน
แอช

ฉันดูจำนวนแกนทางกายภาพ
เถ้า

1

เทคโนโลยีHyperthreadingอนุญาตให้แกนประมวลผลทางกายภาพเดียวทำงานเหมือนตัวประมวลผลเชิงตรรกะสองตัว

ดังนั้นแกนประมวลผลเดียวสามารถดำเนินการสองหัวข้ออิสระพร้อมกัน

Intel อ้างถึงตัวประมวลผลทางกายภาพเป็นซ็อกเก็ต

Hyperthreading ทำให้ตัวประมวลผลทางกายภาพทำงานเหมือนมีตัวประมวลผลทางกายภาพสองตัวซึ่งเรียกว่าตัวประมวลผลเชิงตรรกะ ทำไม?

ในขณะที่การทำไฮเปอร์เธรดไม่ได้เพิ่มประสิทธิภาพของระบบเป็นสองเท่า แต่สามารถเพิ่มประสิทธิภาพโดยใช้ทรัพยากรที่ไม่ได้ใช้งานที่ดีกว่าซึ่งจะนำไปสู่ปริมาณงานที่มากขึ้นสำหรับประเภทงานที่สำคัญบางประเภท แอปพลิเคชันที่รันบนตัวประมวลผลเชิงตรรกะตัวเดียวของคอร์ไม่ว่างสามารถคาดหวังได้มากกว่าครึ่งหนึ่งของปริมาณงานที่รับในขณะที่ทำงานคนเดียวบนตัวประมวลผลที่ไม่ได้ถูกไฮเปอร์เธรด


สรุป


ตัวประมวลผลทางกายภาพคือสิ่งที่เราสามารถเห็นและล้มลง

ตัวประมวลผลเชิงตรรกะเป็นเหมือน Phsical Core ซึ่งทำหน้าที่เป็นสองฟิสิคัลคอร์


ลิงก์ที่ถูกจับไปยัง vmware doc
slm

0
$ sudo dmidecode |egrep "Socket Designation: Proc|((Thread|Core) Count)"
Socket Designation: Proc 1
        Core Count: 14
        Thread Count: 28
Socket Designation: Proc 2
        Core Count: 14
        Thread Count: 28

สองซ็อกเก็ต ซ็อกเก็ตแต่ละอันมี 14 คอร์ทางกายภาพ แต่ละคอร์มีสองเธรด (28/14) จำนวนรวมของ "cpus" เชิงตรรกะหรือหน่วยประมวลผลเชิงตรรกะคือ 56 (นั่นคือสิ่งที่ "สูงสุด" และคำสั่งอื่น ๆ จะแสดงให้คุณเห็นว่าเป็นจำนวนของ "cpus")


สิ่งที่ทำให้ฉันยุ่งเหยิงคือใน i3-3220 ของฉันด้วยวิธีการของคุณฉันได้รับ core count 2 และ thread thread 2 (= 4) แต่lscpu shows CPUs 4 and threads per 2 (=8) but lshw -C cpu` แสดง 16 cpu เชิงตรรกะของตัวเลข 0 - 15
Elder Geek

dmidecode ตีความว่ามีอะไรใน BIOS .. ไม่แน่ใจว่ามีอะไรผิดปกติในกรณีของคุณเช่นคุณอาจปิดการใช้งานไฮเปอร์เธรดใน BIOS หรืออะไรทำนองนั้น lscpu และ lshw เป็นคำสั่ง OS ดังนั้นแสดงว่าเคอร์เนลระบบปฏิบัติการรู้จักอะไร ข้อมูลจำเพาะของโปรเซสเซอร์ Intel สำหรับโปรเซสเซอร์ของคุณแสดง 2 คอร์ 4 เธรด
Tagar

การปิดใช้งานไฮเปอร์เธรดจะทำให้แกนตรรกะน้อยลงหรือไม่
Elder Geek

ฉันเข้าใจว่าคุณมี 2 คอร์ 2 เธรดที่รายงานโดย dmidecode แทน 2 คอร์ 4 เธรดจำนวนจริงของเธรด / คอร์ i3-3220 มี ดังนั้นมันจึงเล็กกว่า และนั่นเป็นเพียงการเดาฉันไม่รู้ว่าจริง ๆ แล้วคุณปิดการใช้งานไฮเปอร์เธรดใน BIOS หรือไม่
Tagar

ดูเหมือนว่าฉันตีความlscpuเอาท์พุทผิดและจริง ๆ แล้วมี 4 เธรดทั้งหมด แต่ "lshw -C cpu` แสดงโลจิคัล CPU 16 ตัว" ฉันไม่แน่ใจว่าจะต้องทำอะไร
เอ็ลเดอร์ Geek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.