โปรเซสเซอร์แบบมัลติคอร์: หลักการทำงาน Hyper-Threading: "ทูอินวัน" จาก Intel หรือความสามารถที่ซ่อนอยู่ของ Xeon

เราเขียนว่าการใช้ระบบ Xeon ที่ใช้โปรเซสเซอร์เดี่ยวนั้นไม่สมเหตุสมผล เนื่องจากในราคาที่สูงกว่าประสิทธิภาพของระบบจะเหมือนกับของ Pentium 4 ที่มีความถี่เดียวกัน หลังจากการศึกษาอย่างละเอียดมากขึ้นแล้ว อาจต้องมีการแก้ไขข้อความนี้เล็กน้อย เทคโนโลยี Hyper-Threading นำมาใช้ใน อินเทล ซีออนด้วยแกนเพรสโทเนีย มันใช้งานได้จริงและให้ผลที่เห็นได้ชัดเจนมาก แม้ว่าจะมีคำถามมากมายเกิดขึ้นเมื่อใช้...

คุณให้ผลผลิต

"เร็วขึ้น เร็วขึ้นอีก..." การแข่งขันเพื่อประสิทธิภาพดำเนินไปเป็นเวลาหลายปี และบางครั้งก็ยากที่จะบอกว่าส่วนประกอบของคอมพิวเตอร์ตัวใดที่เร่งความเร็วได้เร็วกว่า เพื่อให้บรรลุเป้าหมายนี้ มีการคิดค้นวิธีการใหม่ๆ มากขึ้นเรื่อยๆ และยิ่งไปกว่านั้น แรงงานที่มีคุณสมบัติเหมาะสมและสมองคุณภาพสูงก็ถูกลงทุนในกระบวนการที่คล้ายหิมะถล่มนี้

การเพิ่มประสิทธิภาพอย่างต่อเนื่องเป็นสิ่งจำเป็นอย่างแน่นอน โดย อย่างน้อยนี่เป็นธุรกิจที่ทำกำไรและจะมีอยู่เสมอ วิธีที่สวยงามเพื่อสนับสนุนให้ผู้ใช้อัปเกรดจาก "CPU ประสิทธิภาพสูง" ของเมื่อวานเป็น "สุดยอดยิ่งขึ้น..." ของวันพรุ่งนี้ ตัวอย่างเช่น การรู้จำคำพูดพร้อมกันและการแปลเป็นภาษาอื่นพร้อมกัน - นี่ไม่ใช่ความฝันของทุกคนใช่ไหม หรือเกมที่สมจริงอย่างผิดปกติที่มีคุณภาพเกือบ "ภาพยนตร์" (ดึงดูดความสนใจโดยสิ้นเชิงและบางครั้งก็นำไปสู่การเปลี่ยนแปลงทางจิตใจอย่างรุนแรง) - นี่ไม่ใช่ความปรารถนาของนักเล่นเกมหลายคนทั้งเด็กและผู้ใหญ่ใช่ไหม

แต่ในกรณีนี้ เราจะเอาแง่มุมทางการตลาดออกจากสมการและมุ่งเน้นไปที่ด้านเทคนิค ยิ่งกว่านั้นไม่ใช่ทุกอย่างจะมืดมนนัก: มีงานเร่งด่วน (แอปพลิเคชันเซิร์ฟเวอร์ การคำนวณทางวิทยาศาสตร์ การสร้างแบบจำลอง ฯลฯ ) ซึ่งทุกอย่างมีมากกว่านั้น ประสิทธิภาพสูงโดยเฉพาะหน่วยประมวลผลกลางมีความจำเป็นจริงๆ

แล้วมีวิธีเพิ่มประสิทธิภาพอย่างไร?

เพิ่มความเร็วสัญญาณนาฬิกา- เป็นไปได้ที่จะทำให้กระบวนการทางเทคโนโลยี "บางลง" เพิ่มเติมและเพิ่มความถี่ แต่อย่างที่ทราบกันดีว่านี่ไม่ใช่เรื่องง่ายและเต็มไปด้วยปัญหาทุกประเภท ผลข้างเคียงเช่นปัญหาการกระจายความร้อน

การเพิ่มทรัพยากร CPU- ตัวอย่างเช่น การเพิ่มปริมาณแคช การเพิ่มบล็อกใหม่ (Execution Units) ทั้งหมดนี้ส่งผลให้มีจำนวนทรานซิสเตอร์เพิ่มขึ้น โปรเซสเซอร์ที่ซับซ้อนมากขึ้น พื้นที่ชิปเพิ่มขึ้น และผลที่ตามมาคือต้นทุน

นอกจากนี้ตามกฎแล้วสองวิธีก่อนหน้านี้ไม่ได้ให้ผลผลิตเพิ่มขึ้นเป็นเส้นตรง สิ่งนี้เป็นที่ทราบกันดีใน Pentium 4: ข้อผิดพลาดในการทำนายสาขาและการขัดจังหวะทำให้เกิดการรีเซ็ตไปป์ไลน์ที่ยาว ซึ่งส่งผลกระทบอย่างมากต่อประสิทธิภาพโดยรวม

การประมวลผลหลายตัว- การติดตั้ง CPU หลายตัวและกระจายงานระหว่างกันมักจะค่อนข้างมีประสิทธิภาพ แต่วิธีนี้ไม่ถูกมาก - ทุก ๆ โปรเซสเซอร์เพิ่มเติมเพิ่มต้นทุนของระบบและมาเธอร์บอร์ดคู่มีราคาแพงกว่ามาเธอร์บอร์ดทั่วไปมาก (ไม่ต้องพูดถึงบอร์ดที่รองรับ CPU สี่ตัวขึ้นไป) นอกจากนี้ ไม่ใช่ว่าทุกแอปพลิเคชันจะได้รับประโยชน์จากการประมวลผลหลายตัวในประสิทธิภาพที่เพียงพอที่จะปรับต้นทุนให้เหมาะสม

นอกเหนือจากการประมวลผลหลายตัวแบบ "บริสุทธิ์" แล้ว ยังมีตัวเลือก "ระดับกลาง" อีกหลายตัวที่สามารถเพิ่มความเร็วในการดำเนินการแอปพลิเคชันได้:

ชิปประมวลผลหลายตัว (CMP)- แกนประมวลผลสองตัวตั้งอยู่บนชิปตัวเดียว โดยใช้แคชทั่วไปหรือแคชแยกกัน โดยธรรมชาติแล้วขนาดคริสตัลจะค่อนข้างใหญ่และไม่สามารถส่งผลกระทบต่อต้นทุนได้ โปรดทราบว่า CPU "คู่" เหล่านี้หลายตัวสามารถทำงานในระบบมัลติโปรเซสเซอร์ได้เช่นกัน

มัลติเธรดแบบแบ่งเวลา- โปรเซสเซอร์จะสลับระหว่างเธรดโปรแกรมตามช่วงเวลาที่กำหนด บางครั้งค่าใช้จ่ายอาจมีนัยสำคัญ โดยเฉพาะอย่างยิ่งหากกระบวนการกำลังรออยู่

มัลติเธรดแบบสวิตช์เปิดเหตุการณ์- การสลับงานเมื่อเกิดการหยุดชั่วคราวเป็นเวลานาน เช่น พลาดแคช จำนวนมากซึ่งเป็นเรื่องปกติสำหรับแอปพลิเคชันเซิร์ฟเวอร์ ในกรณีนี้ กระบวนการที่รอโหลดข้อมูลจากหน่วยความจำที่ค่อนข้างช้าลงในแคชจะถูกระงับ ซึ่งจะทำให้ทรัพยากร CPU ว่างสำหรับกระบวนการอื่นๆ อย่างไรก็ตาม Switch-on-Event Multithreading เช่น Time-Slice Multithreading ไม่ได้ใช้ทรัพยากรโปรเซสเซอร์ให้เกิดประโยชน์สูงสุดเสมอไป โดยเฉพาะอย่างยิ่งเนื่องจากข้อผิดพลาดในการทำนายสาขา การขึ้นต่อกันของคำสั่ง เป็นต้น

มัลติเธรดพร้อมกัน- ในกรณีนี้ เธรดโปรแกรมจะดำเนินการบนโปรเซสเซอร์ตัวเดียว "พร้อมกัน" นั่นคือโดยไม่ต้องสลับระหว่างเธรดเหล่านั้น ทรัพยากร CPU จะถูกกระจายแบบไดนามิก ตามหลักการ “ถ้าคุณไม่ใช้ ให้มอบให้คนอื่น” แนวทางนี้เป็นพื้นฐานของเทคโนโลยี Intel Hyper-Threading ซึ่งเราพิจารณาอยู่ในขณะนี้

วิธีการทำงานของไฮเปอร์เธรดดิ้ง

ดังที่คุณทราบ “กระบวนทัศน์คอมพิวเตอร์” ในปัจจุบันเกี่ยวข้องกับการประมวลผลแบบมัลติเธรด สิ่งนี้ไม่เพียงนำไปใช้กับเซิร์ฟเวอร์ซึ่งมีแนวคิดดังกล่าวในตอนแรก แต่ยังรวมถึงเวิร์กสเตชันและระบบเดสก์ท็อปด้วย เธรดสามารถอยู่ในแอปพลิเคชันเดียวกันหรือต่างกันได้ แต่เกือบทุกครั้งจะมีเธรดที่ใช้งานอยู่มากกว่าหนึ่งเธรด (เพื่อตรวจสอบสิ่งนี้ เพียงเปิดตัวจัดการงานใน Windows 2000/XP แล้วเปิดการแสดงจำนวนเธรด) อย่างไรก็ตาม โปรเซสเซอร์ทั่วไปสามารถดำเนินการได้ครั้งละหนึ่งเธรดเท่านั้น และถูกบังคับให้สลับระหว่างเธรดเหล่านั้นอย่างต่อเนื่อง

เป็นครั้งแรกที่มีการนำเทคโนโลยี Hyper-Threading มาใช้ในโปรเซสเซอร์ Intel Xeon MP (Foster MP) ซึ่งได้รับการทดสอบ โปรดจำไว้ว่า Xeon MP ซึ่งนำเสนออย่างเป็นทางการที่ IDF Spring 2002 ใช้คอร์ที่เกี่ยวข้องกับ Pentium 4 Willamette ประกอบด้วยแคช L2 256 KB และแคช L3 512 KB/1 MB และรองรับการทำงานในการกำหนดค่าโปรเซสเซอร์ 4 ตัว การสนับสนุน Hyper-Threading มีอยู่ในโปรเซสเซอร์เวิร์กสเตชัน - Intel Xeon (คอร์เพรสโทเนีย, แคช L2 512 KB) ซึ่งเข้าสู่ตลาดค่อนข้างเร็วกว่า Xeon MP ผู้อ่านของเราคุ้นเคยกับการกำหนดค่าโปรเซสเซอร์ดูอัลบน Intel Xeon อยู่แล้ว ดังนั้นเราจะดูความสามารถของ Hyper-Threading โดยใช้ CPU เหล่านี้เป็นตัวอย่าง - ทั้งทางทฤษฎีและทางปฏิบัติ อาจเป็นไปได้ว่า Xeon ที่ "เรียบง่าย" นั้นเป็นสิ่งที่ธรรมดาและย่อยได้ง่ายกว่า Xeon MP ในระบบที่มีโปรเซสเซอร์ 4 ตัว...

หลักการทำงานของ Hyper-Threading ขึ้นอยู่กับข้อเท็จจริงที่ว่า ณ เวลาใดก็ตาม จะมีการใช้ทรัพยากรโปรเซสเซอร์เพียงบางส่วนเท่านั้นเมื่อดำเนินการ รหัสโปรแกรม- ทรัพยากรที่ไม่ได้ใช้ยังสามารถโหลดพร้อมกับงานได้ - ตัวอย่างเช่น แอปพลิเคชันอื่น (หรือเธรดอื่นของแอปพลิเคชันเดียวกัน) สามารถใช้สำหรับการดำเนินการแบบขนานได้ ในโปรเซสเซอร์ Intel Xeon ทางกายภาพตัวเดียว จะมีการสร้างโปรเซสเซอร์แบบลอจิคัลสองตัว (LP - ตัวประมวลผลแบบลอจิคัล) ซึ่งใช้ทรัพยากรการประมวลผลของ CPU ร่วมกัน ระบบปฏิบัติการและแอปพลิเคชัน "เห็น" CPU สองตัวอย่างแน่นอนและสามารถกระจายงานระหว่างกันได้ เช่นเดียวกับในกรณีของระบบโปรเซสเซอร์คู่เต็มรูปแบบ

เป้าหมายประการหนึ่งของการนำ Hyper-Threading ไปใช้คือการอนุญาตให้รันด้วยความเร็วเดียวกันกับบน CPU ทั่วไปเมื่อมีเธรดที่ใช้งานอยู่เพียงเธรดเดียว เมื่อต้องการทำเช่นนี้ โปรเซสเซอร์มีโหมดการทำงานหลักสองโหมด: งานเดียว (ST) และงานหลายงาน (MT) ในโหมด ST มีตัวประมวลผลแบบลอจิคัลเพียงตัวเดียวเท่านั้นที่ทำงานอยู่และมีการใช้งานทรัพยากรที่มีอยู่โดยไม่มีการแบ่งแยก (โหมด ST0 และ ST1) LP อื่นหยุดทำงานด้วยคำสั่ง HALT เมื่อเธรดโปรแกรมที่สองปรากฏขึ้น โลจิคัลโปรเซสเซอร์ที่อยู่เฉยๆ จะถูกเปิดใช้งาน (ผ่านการขัดจังหวะ) และ CPU ฟิสิคัลจะเข้าสู่โหมด MT การหยุด LP ที่ไม่ได้ใช้ด้วยคำสั่ง HALT ถูกกำหนดให้กับระบบปฏิบัติการ ซึ่งท้ายที่สุดแล้วจะต้องรับผิดชอบในการดำเนินการอย่างรวดเร็วของเธรดเดียว เช่นเดียวกับในกรณีที่ไม่มี Hyper-Threading

สำหรับ LP แต่ละตัวนั้น สิ่งที่เรียกว่า Architecture State (AS) จะถูกจัดเก็บ ซึ่งรวมถึงสถานะของการลงทะเบียนประเภทต่างๆ - วัตถุประสงค์ทั่วไป การควบคุม APIC และบริการ LP แต่ละแห่งมี APIC ของตัวเอง (ตัวควบคุมขัดจังหวะ) และชุดของการลงทะเบียนสำหรับการดำเนินการที่ถูกต้องซึ่งมีการแนะนำแนวคิดของ Register Alias ​​​​Table (RAT) ซึ่งติดตามความสอดคล้องระหว่างการลงทะเบียน IA-32 วัตถุประสงค์ทั่วไปแปดรายการและ 128 การลงทะเบียนของ CPU จริง (หนึ่ง RAT สำหรับแต่ละ LP)

เมื่อเธรดสองตัวทำงานอยู่ ระบบจะสนับสนุน Next Instruction Pointers สองชุดที่สอดคล้องกัน คำแนะนำส่วนใหญ่นำมาจาก Trace Cache (TC) ซึ่งจะถูกจัดเก็บในรูปแบบที่ถอดรหัส และ LP ที่ใช้งานอยู่สองตัวจะเข้าถึง TC สลับกันในนาฬิกาเว้นช่วง ในเวลาเดียวกัน เมื่อ LP ใช้งานได้เพียง 1 รายการ ก็จะมีสิทธิ์เข้าถึง TC แบบเอกสิทธิ์เฉพาะบุคคลโดยไม่ต้องหมุนนาฬิกา การเข้าถึง Microcode ROM เกิดขึ้นในลักษณะเดียวกัน บล็อก ITLB (Instruction Translation Look-aside Buffer) ซึ่งใช้เมื่อคำสั่งที่จำเป็นไม่อยู่ในแคชคำสั่ง จะถูกทำซ้ำ และแต่ละคำสั่งจะส่งคำสั่งสำหรับเธรดของตัวเอง บล็อกการถอดรหัสคำสั่ง IA-32 Instruction Decode ถูกใช้ร่วมกัน และในกรณีที่จำเป็นต้องถอดรหัสคำสั่งสำหรับทั้งสองเธรด ก็จะให้บริการทีละคำสั่ง (อีกครั้งผ่านรอบสัญญาณนาฬิกา) บล็อก Uop Queue และ Allocator แบ่งออกเป็นสองส่วน โดยจัดสรรองค์ประกอบครึ่งหนึ่งให้กับแต่ละ LP ตัวกำหนดเวลาหมายเลข 5 ประมวลผลคิวของคำสั่งที่ถอดรหัส (Uops) แม้ว่าจะเป็นของ LP0/LP1 และคำสั่งโดยตรงที่จะดำเนินการโดยหน่วยการดำเนินการที่จำเป็น - ขึ้นอยู่กับความพร้อมในการดำเนินการของคำสั่งแรกและความพร้อมใช้งานของคำสั่งที่สอง แคชของทุกระดับ (L1/L2 สำหรับ Xeon และ L3 สำหรับ Xeon MP) จะถูกแชร์โดยสมบูรณ์ระหว่าง 2 LP อย่างไรก็ตาม เพื่อให้มั่นใจในความสมบูรณ์ของข้อมูล รายการใน DTLB (Data Translation Look-aside Buffer) จึงมีคำอธิบายใน รูปแบบของรหัสตัวประมวลผลแบบลอจิคัล

ดังนั้น คำสั่งจาก CPU แบบลอจิคัลทั้งสองสามารถดำเนินการพร้อมกันบนทรัพยากรของโปรเซสเซอร์ทางกายภาพตัวเดียว ซึ่งแบ่งออกเป็นสี่คลาส:

  • ทำซ้ำ;
  • แบ่งปันอย่างเต็มที่;
  • พร้อมคำอธิบายองค์ประกอบ (แท็กรายการ);
  • แบ่งพาร์ติชันแบบไดนามิก (แบ่งพาร์ติชัน) ขึ้นอยู่กับโหมดการทำงาน ST0/ST1 หรือ MT

อย่างไรก็ตาม แอปพลิเคชันส่วนใหญ่ที่ได้รับการเร่งความเร็วบนระบบมัลติโปรเซสเซอร์สามารถเร่งความเร็วบน CPU ที่เปิดใช้งาน Hyper-Threading ได้โดยไม่ต้องดัดแปลงใดๆ แต่ยังมีปัญหาอยู่เช่นกัน ตัวอย่างเช่น หากกระบวนการหนึ่งอยู่ในลูปการรอ กระบวนการนั้นอาจใช้ทรัพยากรทั้งหมดของ CPU จริง ซึ่งรบกวนการทำงานของ LP ที่สอง ดังนั้นบางครั้งประสิทธิภาพเมื่อใช้ Hyper-Threading อาจลดลง (มากถึง 20%) เพื่อป้องกันสิ่งนี้ Intel ขอแนะนำให้ใช้คำสั่ง PAUSE (แนะนำใน IA-32 ตั้งแต่ Pentium 4) แทนรอบการรอที่ว่างเปล่า มีการทำงานที่ค่อนข้างจริงจังในการเพิ่มประสิทธิภาพโค้ดอัตโนมัติและกึ่งอัตโนมัติในระหว่างการคอมไพล์ - ตัวอย่างเช่นคอมไพเลอร์ซีรีส์ Intel OpenMP C++/Fortran Compilers () มีความก้าวหน้าอย่างมากในเรื่องนี้

เป้าหมายอีกประการหนึ่งของการใช้งาน Hyper-Threading ครั้งแรกตามข้อมูลของ Intel คือการลดจำนวนทรานซิสเตอร์ พื้นที่ชิป และการใช้พลังงานที่เพิ่มขึ้นให้เหลือน้อยที่สุดโดยให้ประสิทธิภาพเพิ่มขึ้นอย่างเห็นได้ชัด ส่วนแรกของความมุ่งมั่นนี้บรรลุผลแล้ว: การเพิ่มการรองรับ Hyper-Threading ให้กับ Xeon/Xeon MP เพิ่มพื้นที่ดายและการใช้พลังงานน้อยกว่า 5% เรายังต้องตรวจสอบสิ่งที่เกิดขึ้นกับส่วนที่สอง (ประสิทธิภาพ)

ส่วนการปฏิบัติ

ด้วยเหตุผลที่ชัดเจน เราไม่ได้ทดสอบระบบเซิร์ฟเวอร์ที่มีโปรเซสเซอร์ 4 ตัวบน Xeon MP โดยเปิดใช้งาน Hyper-Threading ประการแรก มันค่อนข้างใช้แรงงานมาก และประการที่สอง แม้ว่าเราจะตัดสินใจทำสิ่งนั้น แต่ก็ยังเป็นไปไม่ได้เลยที่จะได้รับอุปกรณ์ราคาแพงนี้ในเวลาไม่ถึงหนึ่งเดือนหลังจากการประกาศอย่างเป็นทางการ ดังนั้นจึงตัดสินใจ จำกัด ตัวเองให้อยู่ในระบบเดียวกันกับ Intel Xeon 2.2 GHz สองตัวซึ่งทำการทดสอบโปรเซสเซอร์เหล่านี้ครั้งแรก (ดูลิงก์ที่จุดเริ่มต้นของบทความ) ระบบนี้ใช้มาเธอร์บอร์ด Supermicro P4DC6+ ( ชิปเซ็ตอินเทล i860) มีหน่วยความจำ RDRAM 512 MB, การ์ดแสดงผลบนชิป GeForce3 (64 MB DDR, ไดรเวอร์ Detonator 21.85), ฮาร์ดไดรฟ์ Western Digital WD300BB และ 6X DVD-ROM; Windows 2000 Professional SP2 ถูกใช้เป็นระบบปฏิบัติการ

เริ่มต้นด้วยบางส่วน ความประทับใจทั่วไป- เมื่อติดตั้ง Xeon หนึ่งตัวด้วยคอร์ Prestonia เมื่อเริ่มต้นระบบ BIOS จะแสดงข้อความเกี่ยวกับการมีอยู่ของ CPU สองตัว หากมีการติดตั้งโปรเซสเซอร์สองตัว ผู้ใช้จะเห็นข้อความเกี่ยวกับ CPU สี่ตัว โดยปกติระบบปฏิบัติการจะรู้จัก "โปรเซสเซอร์ทั้งสอง" แต่จะตรงตามเงื่อนไขสองข้อเท่านั้น

ประการแรกในการตั้งค่า CMOS อย่างหลัง เวอร์ชันไบออสขณะนี้บอร์ด Supermicro P4DCxx มีตัวเลือก Enable Hyper-Threading โดยที่ระบบปฏิบัติการจะไม่รู้จักเฉพาะโปรเซสเซอร์ทางกายภาพเท่านั้น ประการที่สอง ความสามารถของ ACPI ใช้เพื่อแจ้ง OS เกี่ยวกับการมีอยู่ของโปรเซสเซอร์ลอจิคัลเพิ่มเติม ดังนั้น ในการเปิดใช้งาน Hyper-Threading จะต้องเปิดใช้งานตัวเลือก ACPI ในการตั้งค่า CMOS และต้องติดตั้ง HAL (Hardware Abstraction Layer) ที่รองรับ ACPI สำหรับระบบปฏิบัติการด้วย โชคดีที่ใน Windows 2000 การเปลี่ยน HAL จาก Standard PC (หรือ MPS Uni-/Multiprocessor PC) เป็น ACPI Uni-/Multiprocessor PC นั้นเป็นเรื่องง่าย - แทนที่ "ไดรเวอร์คอมพิวเตอร์" ในตัวจัดการอุปกรณ์ ในเวลาเดียวกันสำหรับ Windows XP เท่านั้น ในทางที่ถูกกฎหมายการเปลี่ยนไปใช้ ACPI HAL หมายถึงการติดตั้งระบบใหม่เพิ่มเติมจากการติดตั้งที่มีอยู่

แต่ตอนนี้ได้เตรียมการทั้งหมดแล้ว และ Windows 2000 Pro ของเราก็เชื่ออย่างแน่วแน่แล้วว่า Windows 2000 Pro ทำงานบนระบบโปรเซสเซอร์คู่ (แม้ว่าในความเป็นจริงจะมีการติดตั้งโปรเซสเซอร์เพียงตัวเดียวก็ตาม) ตามธรรมเนียมแล้ว ถึงเวลาตัดสินใจเกี่ยวกับเป้าหมายการทดสอบแล้ว ดังนั้นเราจึงต้องการ:

  • ประเมินผลกระทบของ Hyper-Threading ต่อประสิทธิภาพของแอปพลิเคชันในคลาสต่างๆ
  • เปรียบเทียบผลกระทบนี้กับผลของการติดตั้งโปรเซสเซอร์ตัวที่สอง
  • ตรวจสอบว่ามีการจัดสรรทรัพยากรที่ “ยุติธรรม” ให้กับตัวประมวลผลแบบลอจิคัลที่ใช้งานอยู่อย่างไร เมื่อ LP ที่สองไม่ได้ใช้งาน

เพื่อประเมินประสิทธิภาพ เราได้นำชุดแอปพลิเคชันที่ผู้อ่านคุ้นเคยอยู่แล้ว ซึ่งใช้ในการทดสอบระบบเวิร์กสเตชัน เริ่มจากจุดสิ้นสุดและตรวจสอบ "ความเท่าเทียมกัน" ของ CPU แบบลอจิคัล ง่ายมาก: อันดับแรก เราทำการทดสอบบนโปรเซสเซอร์ตัวเดียวโดยปิดใช้งาน Hyper-Threading จากนั้นเราจะทำซ้ำกระบวนการโดยเปิดใช้งาน Hyper-Threading และใช้ CPU แบบลอจิคัลเพียงหนึ่งในสองตัวเท่านั้น (โดยใช้ตัวจัดการงาน) เนื่องจากในกรณีนี้ เราสนใจเฉพาะค่าสัมพัทธ์เท่านั้น ผลลัพธ์ของการทดสอบทั้งหมดจึงถูกนำมาอยู่ในรูปแบบ "ยิ่งดีกว่า" และปรับให้เป็นมาตรฐาน (ตัวบ่งชี้ของระบบโปรเซสเซอร์ตัวเดียวที่ไม่มี Hyper-Threading จะถือเป็นตัวบ่งชี้เดียว)

อย่างที่คุณเห็น คำสัญญาของ Intel ได้รับการเติมเต็มที่นี่: เมื่อมีเธรดที่ใช้งานอยู่เพียงเธรดเดียว ประสิทธิภาพของแต่ละ LP ทั้งสองจะเท่ากับประสิทธิภาพของ CPU จริงที่ไม่มี Hyper-Threading ทุกประการ LP ที่ไม่ใช้งาน (และทั้ง LP0 และ LP1) ถูกระงับจริง ๆ และทรัพยากรที่ใช้ร่วมกัน เท่าที่สามารถตัดสินได้จากผลลัพธ์ที่ได้รับ จะถูกโอนไปยัง LP ที่ใช้งานอยู่โดยสมบูรณ์เพื่อใช้งาน

ดังนั้นเราจึงได้ข้อสรุปแรก: โปรเซสเซอร์แบบลอจิคัลสองตัวนั้นเท่ากันจริง ๆ และการเปิดใช้งาน Hyper-Threading "ไม่รบกวน" กับการทำงานของเธรดเดียว (ซึ่งในตัวมันเองก็ไม่เลว) ตอนนี้เรามาดูกันว่าการรวมนี้ "ช่วย" ได้หรือไม่ และหากเป็นเช่นนั้น ที่ไหน และอย่างไร?

กำลังเรนเดอร์- ผลการทดสอบสี่ครั้งในแพ็คเกจการสร้างแบบจำลอง 3 มิติ 3D Studio MAX 4.26, Lightwave 7b และ A|W Maya 4.0.1 ถูกรวมเข้าด้วยกันเป็นไดอะแกรมเดียวเนื่องจากความคล้ายคลึงกัน

ในทั้งสี่กรณี (สำหรับ Lightwave - สองฉากที่แตกต่างกัน) โหลดของ CPU เมื่อมีโปรเซสเซอร์ตัวเดียวที่ปิด Hyper-Threading จะยังคงอยู่ที่ 100% เกือบตลอดเวลา อย่างไรก็ตาม เมื่อเปิดใช้งาน Hyper-Threading การคำนวณฉากก็จะเร็วขึ้น (ด้วยเหตุนี้ เราถึงมีเรื่องตลกกันด้วยซ้ำ) โหลดซีพียูมากกว่า 100%) ในการทดสอบสามครั้งประสิทธิภาพที่เพิ่มขึ้นจาก Hyper-Threading 14-18% สามารถมองเห็นได้ - ในแง่หนึ่งไม่มากนักเมื่อเทียบกับ CPU ตัวที่สอง แต่ในทางกลับกันค่อนข้างดีเมื่อพิจารณาถึงลักษณะ "อิสระ" ของเอฟเฟกต์นี้ . ในการทดสอบหนึ่งในสองรายการด้วย Lightwave ประสิทธิภาพที่เพิ่มขึ้นเกือบจะเป็นศูนย์ (เห็นได้ชัดว่านี่เป็นเพราะลักษณะเฉพาะของแอปพลิเคชันนี้ซึ่งเต็มไปด้วยสิ่งแปลก ๆ ) แต่ไม่มีผลลัพธ์เชิงลบเลย และอีก 3 กรณีที่เหลือก็เพิ่มขึ้นอย่างเห็นได้ชัด และแม้ว่ากระบวนการเรนเดอร์แบบขนานจะทำงานคล้ายกันและอาจไม่สามารถใช้ทรัพยากรของ CPU จริงไปพร้อม ๆ กันได้ในวิธีที่ดีที่สุด

การเข้ารหัส Photoshop และ MP3- ตัวแปลงสัญญาณ GOGO-no-coda 2.39c เป็นหนึ่งในไม่กี่ตัวที่รองรับ SMP และมีประสิทธิภาพเพิ่มขึ้นอย่างเห็นได้ชัด 34% เนื่องจากโปรเซสเซอร์คู่ ในขณะเดียวกันผลกระทบของ Hyper-Threading ในกรณีนี้คือศูนย์ (เราไม่ถือว่าความแตกต่างมีนัยสำคัญ 3%) แต่ในการทดสอบด้วย Photoshop 6.0.1 (สคริปต์ที่ประกอบด้วยชุดคำสั่งและตัวกรองจำนวนมาก) การชะลอตัวจะปรากฏขึ้นเมื่อเปิดใช้งาน Hyper-Threading แม้ว่า CPU จริงตัวที่สองจะเพิ่มประสิทธิภาพ 12% ในกรณีนี้ นี่เป็นกรณีแรกที่ Hyper-Threading ทำให้ประสิทธิภาพลดลง...

OpenGL ระดับมืออาชีพ- เป็นที่ทราบกันมานานแล้วว่า SPEC ViewPerf และแอปพลิเคชัน OpenGL อื่นๆ มักจะทำให้ระบบ SMP ทำงานช้าลง

OpenGL และโปรเซสเซอร์คู่: ทำไมพวกเขาถึงไม่เป็นเพื่อนกัน

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

แน่นอนว่าเราไม่ใช่คนเดียวที่สังเกตเห็นความแปลกประหลาดนี้ ผู้ทดสอบบางคนหลีกเลี่ยงข้อเท็จจริงนี้อย่างเงียบๆ เช่น นำเสนอผลการเปรียบเทียบจากการทดสอบ SPEC ViewPerf สำหรับการกำหนดค่าโปรเซสเซอร์คู่เท่านั้น จึงหลีกเลี่ยงคำอธิบายว่า "เหตุใดระบบโปรเซสเซอร์คู่จึงช้ากว่า" คนอื่นๆ ตั้งสมมติฐานที่ยอดเยี่ยมทุกประเภทเกี่ยวกับการเชื่อมโยงกันของแคช ความจำเป็นในการดูแลรักษาแคช ค่าใช้จ่ายที่เกิดขึ้นจากสิ่งนี้ ฯลฯ และด้วยเหตุผลบางประการ ไม่มีใครแปลกใจที่ตัวอย่างเช่น ด้วยเหตุผลบางประการที่โปรเซสเซอร์ไม่อดทนที่จะตรวจสอบการเชื่อมโยงกันโดยเฉพาะในการเรนเดอร์ OpenGL แบบหน้าต่าง (ในสาระสำคัญของ "การคำนวณ" มันไม่แตกต่างจากงานคำนวณอื่น ๆ มากนัก)

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

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

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

นอกจากนี้ เป็นตัวอย่าง เราจะแสดงกราฟการใช้งาน CPU สองตัวในแอปพลิเคชันต่างๆ ที่แสดงฉาก OpenGL การวัดทั้งหมดดำเนินการบนแท่นโดยมีการกำหนดค่าดังต่อไปนี้:

  • Intel Xeon 2.2 GHz หนึ่งหรือสองตัว (ปิดใช้งาน Hyper-Threading);
  • หน่วยความจำ RDRAM 512 เมกะไบต์;
  • เมนบอร์ดซุปเปอร์ไมโคร P4DC6+;
  • การ์ดแสดงผล ASUS V8200 Deluxe (NVidia GeForce3, 64 MB DDR SDRAM, ไดรเวอร์ Detonator 21.85);
  • Windows 2000 มืออาชีพ SP2;
  • โหมดวิดีโอ 1280x1024x32 bpp, 85 Hz, ปิดใช้งาน Vsync

สีน้ำเงินและสีแดงแสดงกราฟโหลดของ CPU 0 และ CPU 1 ตามลำดับ เส้นตรงกลางคือกราฟการใช้งาน CPU สุดท้าย กราฟทั้งสามสอดคล้องกับสองฉากจาก 3D Studio MAX 4.26 และเป็นส่วนหนึ่งของการทดสอบ SPEC ViewPerf (AWadvs-04)


การใช้งาน CPU: แอนิเมชั่น 3D Studio MAX 4.26 - Anibal (พร้อมตัวปรับแต่ง).max


การใช้งาน CPU: Animation 3D Studio MAX 4.26 - Rabbit.max


การใช้งาน CPU: SPEC ViewPerf 6.1.2 - AWadvs-04

ภาพเดียวกันนี้ปรากฏซ้ำในแอปพลิเคชันอื่นๆ จำนวนมากที่ใช้ OpenGL โปรเซสเซอร์ทั้งสองไม่รบกวนเลย และการใช้งาน CPU โดยรวมอยู่ที่ระดับ 50-60% ในเวลาเดียวกัน สำหรับระบบที่ใช้โปรเซสเซอร์ตัวเดียวในทุกกรณีนี้ การใช้งาน CPU จะยังคงอยู่ที่ 100% อย่างมั่นใจ

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

เราสามารถระบุได้ว่าเมื่อใช้ CPU แบบลอจิคัลสองตัว ประสิทธิภาพที่ลดลงจะยิ่งมีนัยสำคัญมากขึ้น ซึ่งเป็นที่เข้าใจได้: ตัวประมวลผลแบบลอจิคัลสองตัวจะรบกวนซึ่งกันและกันในลักษณะเดียวกับตัวประมวลผลทางกายภาพสองตัว แต่ประสิทธิภาพโดยรวมกลับกลายเป็นว่าต่ำกว่าปกติ ดังนั้นเมื่อเปิดใช้งาน Hyper-Threading มันจึงลดลงมากกว่าปกติเมื่อ CPU จริงสองตัวทำงานอยู่ ผลลัพธ์สามารถคาดเดาได้และข้อสรุปก็ง่ายดาย: Hyper-Threading เช่นเดียวกับ SMP “ของจริง” มีข้อห้ามสำหรับ OpenGL

แอปพลิเคชัน CAD- ข้อสรุปก่อนหน้านี้ได้รับการยืนยันโดยผลการทดสอบ CAD สองครั้ง - SPECapc สำหรับ SolidEdge V10 และ SPECapc สำหรับ SolidWorks ประสิทธิภาพกราฟิกของการทดสอบ Hyper-Threading เหล่านี้ใกล้เคียงกัน (แม้ว่าระบบ SMP สำหรับ SolidEdge V10 จะแสดงผลลัพธ์ที่สูงกว่าเล็กน้อย) แต่ผลลัพธ์ของการทดสอบ CPU_Score ที่โหลดโปรเซสเซอร์ทำให้คุณคิดว่า: เพิ่มขึ้น 5-10% จาก SMP และการชะลอตัว 14-19% จาก Hyper-Threading

แต่ท้ายที่สุดแล้ว Intel ยอมรับโดยสุจริตว่า Hyper-Threading อาจทำให้ประสิทธิภาพลดลงได้ในบางกรณี - ตัวอย่างเช่น เมื่อใช้ลูปการรอว่าง เราสามารถสรุปได้ว่านี่คือเหตุผล (การศึกษาโดยละเอียดเกี่ยวกับโค้ด SolidEdge และ SolidWorks อยู่นอกเหนือขอบเขตของบทความนี้) ท้ายที่สุดแล้วทุกคนรู้ดีถึงอนุรักษ์นิยมของนักพัฒนาแอปพลิเคชัน CAD ที่ต้องการความน่าเชื่อถือที่ได้รับการพิสูจน์แล้วและไม่รีบร้อนในการเขียนโค้ดใหม่โดยคำนึงถึงแนวโน้มใหม่ในการเขียนโปรแกรม

สรุปหรือ “สนใจคำถามถูก”

Hyper-Threading ใช้งานได้อย่างไม่ต้องสงสัย แน่นอนว่าเทคโนโลยีนี้ไม่เป็นสากล: มีแอปพลิเคชันที่ได้รับผลกระทบจาก Hyper-Threading และหากเทคโนโลยีนี้แพร่หลายไปก็ขอแนะนำให้แก้ไข แต่สิ่งเดียวกันนี้เกิดขึ้นกับ MMX และ SSE และยังคงเกิดขึ้นกับ SSE2 ใช่ไหม..

อย่างไรก็ตาม สิ่งนี้ทำให้เกิดคำถามเกี่ยวกับการใช้เทคโนโลยีนี้กับความเป็นจริงของเรา เราจะทิ้งตัวเลือกของระบบโปรเซสเซอร์ตัวเดียวบน Xeon ที่มี Hyper-Threading ทันที (หรืออนุญาตเป็นเพียงตัวเลือกชั่วคราวเท่านั้น โดยอยู่ระหว่างรอการซื้อโปรเซสเซอร์ตัวที่สอง): แม้แต่ประสิทธิภาพที่เพิ่มขึ้น 30% ก็ไม่สามารถพิสูจน์ราคาได้ ยังไงก็ตาม - จะดีกว่าถ้าซื้อ Pentium 4 ปกติ จำนวน CPU ที่เหลือคือตั้งแต่สองตัวขึ้นไป

ตอนนี้ ลองจินตนาการว่าเรากำลังซื้อระบบ Xeon แบบโปรเซสเซอร์คู่ (เช่น Windows 2000/XP Professional) มีการติดตั้ง CPU สองตัว เปิดใช้งาน Hyper-Threading แล้ว BIOS ค้นหาโปรเซสเซอร์แบบลอจิคัลได้มากถึงสี่ตัว ตอนนี้ ว้าว เรากำลังจะเริ่มถอด... หยุด แต่ระบบปฏิบัติการของเราจะเห็นโปรเซสเซอร์กี่ตัว? ถูกต้องสอง มีเพียงสองเท่านั้นเนื่องจากไม่ได้ออกแบบมาเพื่อการใช้งานเพิ่มเติม สิ่งเหล่านี้จะเป็นโปรเซสเซอร์ทางกายภาพสองตัวนั่นคือ ทุกอย่างจะทำงานเหมือนกับเมื่อปิดใช้งาน Hyper-Threading ทุกประการ - ไม่ช้ากว่า (ซีพียูโลจิคัล "เพิ่มเติม" สองตัวจะหยุดทำงาน) แต่ไม่เร็วกว่า (ทดสอบแล้ว การทดสอบเพิ่มเติมเราไม่นำเสนอผลลัพธ์เพราะเห็นได้อย่างชัดเจน) อืม ไม่ค่อยน่ารื่นรมย์นัก...

อะไรยังคงอยู่? เราไม่ควรติดตั้ง Advanced Server หรือ .NET Server บนเวิร์กสเตชันของเราจริงๆ หรือ? ไม่ ระบบจะติดตั้ง จดจำตัวประมวลผลแบบลอจิคัลทั้งสี่ตัว และจะทำงานได้ แต่ระบบปฏิบัติการเซิร์ฟเวอร์ดูแปลกเล็กน้อยบนเวิร์กสเตชัน หากพูดง่ายๆ (ไม่ต้องพูดถึงประเด็นทางการเงิน) กรณีที่สมเหตุสมผลเพียงอย่างเดียวคือเมื่อระบบ Xeon แบบโปรเซสเซอร์คู่ของเราจะทำหน้าที่เป็นเซิร์ฟเวอร์ (อย่างน้อยแอสเซมเบลอร์บางรายก็เริ่มผลิตเซิร์ฟเวอร์บนโปรเซสเซอร์ Xeon ของเวิร์คสเตชั่นแล้วโดยไม่ลังเล) แต่สำหรับเวิร์กสเตชันคู่ที่มีระบบปฏิบัติการที่สอดคล้องกัน ความเกี่ยวข้องของ Hyper-Threading ยังคงเป็นคำถามอยู่ ขณะนี้ Intel กำลังสนับสนุนอย่างจริงจังสำหรับการออกใบอนุญาตระบบปฏิบัติการตามจำนวน CPU จริง แทนที่จะเป็นแบบลอจิคัล การสนทนายังคงดำเนินต่อไป และโดยทั่วไปแล้ว หลายอย่างขึ้นอยู่กับว่าเราจะเห็นระบบปฏิบัติการเวิร์กสเตชันที่รองรับโปรเซสเซอร์สี่ตัวหรือไม่

ด้วยเซิร์ฟเวอร์ทุกอย่างจะกลายเป็นเรื่องง่าย ตัวอย่างเช่น Windows 2000 Advanced Server ที่ติดตั้งบนระบบ Xeon แบบโปรเซสเซอร์คู่และเปิดใช้งาน Hyper-Threading จะ "เห็น" โปรเซสเซอร์แบบลอจิคัลสี่ตัวและจะทำงานได้อย่างราบรื่น เพื่อประเมินว่า Hyper-Threading สามารถทำอะไรได้บ้างในระบบเซิร์ฟเวอร์ เรานำเสนอผลลัพธ์จาก Intel Microprocessor Software Labs สำหรับระบบ Xeon MP แบบโปรเซสเซอร์คู่และแอปพลิเคชันเซิร์ฟเวอร์ Microsoft หลายตัว

ประสิทธิภาพที่เพิ่มขึ้น 20-30% สำหรับเซิร์ฟเวอร์ที่มีโปรเซสเซอร์สองตัว "ฟรี" นั้นเป็นสิ่งที่น่าดึงดูดมากกว่า (โดยเฉพาะเมื่อเปรียบเทียบกับการซื้อระบบโปรเซสเซอร์ 4 ตัว "ของจริง")

ปรากฎว่า ช่วงเวลาปัจจุบันการใช้งานจริงของ Hyper-Threading สามารถทำได้ในเซิร์ฟเวอร์เท่านั้น ปัญหาเกี่ยวกับเวิร์กสเตชันขึ้นอยู่กับการตัดสินใจเกี่ยวกับการอนุญาตให้ใช้สิทธิ์ระบบปฏิบัติการ แม้ว่าแอปพลิเคชัน Hyper-Threading อีกหนึ่งแอปพลิเคชันนั้นค่อนข้างจริง - หากโปรเซสเซอร์เดสก์ท็อปยังได้รับการสนับสนุนสำหรับเทคโนโลยีนี้ ยกตัวอย่าง (ลองจินตนาการดู) ทำไมระบบถึงมี Pentium 4 ด้วย การสนับสนุนไฮเปอร์เธรดติดตั้ง Windows 2000/XP Professional ที่รองรับ SMP รุ่นใด.. อย่างไรก็ตามไม่มีอะไรน่าเหลือเชื่อเกี่ยวกับเรื่องนี้: นักพัฒนา Intel ที่กระตือรือร้นสัญญาว่าจะเปิดตัว Hyper-Threading อย่างกว้างขวางตั้งแต่เซิร์ฟเวอร์ไปจนถึงเดสก์ท็อปและระบบมือถือ

โปรเซสเซอร์คอมพิวเตอร์เครื่องแรกที่มีหลายคอร์ปรากฏในตลาดผู้บริโภคในช่วงกลางทศวรรษ 2000 แต่ผู้ใช้จำนวนมากยังไม่เข้าใจว่าโปรเซสเซอร์แบบมัลติคอร์คืออะไรและจะเข้าใจคุณลักษณะของโปรเซสเซอร์เหล่านี้ได้อย่างไร

รูปแบบวิดีโอของบทความ "ความจริงทั้งหมดเกี่ยวกับโปรเซสเซอร์แบบมัลติคอร์"

คำอธิบายง่ายๆ สำหรับคำถาม “โปรเซสเซอร์คืออะไร”

ไมโครโปรเซสเซอร์เป็นหนึ่งในอุปกรณ์หลักในคอมพิวเตอร์ ชื่ออย่างเป็นทางการแบบแห้งนี้มักเรียกสั้น ๆ ว่า "โปรเซสเซอร์") โปรเซสเซอร์เป็นแบบไมโครเซอร์กิตซึ่งมีพื้นที่เทียบเท่ากับกล่องไม้ขีดไฟ- หากคุณต้องการโปรเซสเซอร์ก็เหมือนกับเครื่องยนต์ในรถยนต์ ส่วนที่สำคัญที่สุด แต่ไม่ใช่ส่วนเดียว รถยังมีล้อ ตัวถัง และเครื่องเล่นพร้อมไฟหน้า แต่ตัวประมวลผล (เช่นเครื่องยนต์รถยนต์) เป็นตัวกำหนดพลังของ "เครื่องจักร"

หลายคนเรียกโปรเซสเซอร์ว่าหน่วยระบบ - "กล่อง" ภายในซึ่งมีส่วนประกอบพีซีทั้งหมดอยู่ แต่นี่เป็นสิ่งที่ผิดโดยพื้นฐาน ยูนิตระบบคือเคสคอมพิวเตอร์พร้อมส่วนประกอบทั้งหมด - ฮาร์ดไดรฟ์, RAM และรายละเอียดอื่นๆ อีกมากมาย

ฟังก์ชั่นโปรเซสเซอร์ - คำนวณ- มันไม่สำคัญว่าอันไหนกันแน่ ความจริงก็คืองานคอมพิวเตอร์ทั้งหมดเชื่อมโยงกับการคำนวณทางคณิตศาสตร์เท่านั้น การบวก การคูณ การลบ และพีชคณิตอื่น ๆ ทั้งหมดนี้ทำโดยวงจรขนาดเล็กที่เรียกว่า "โปรเซสเซอร์" และผลลัพธ์ของการคำนวณดังกล่าวจะแสดงบนหน้าจอในรูปแบบเกม ไฟล์ Word หรือเพียงเดสก์ท็อป

ส่วนหลักของคอมพิวเตอร์ที่ทำการคำนวณคือ โปรเซสเซอร์คืออะไร.

แกนประมวลผลและมัลติคอร์คืออะไร

ตั้งแต่ต้นศตวรรษของโปรเซสเซอร์ ไมโครวงจรเหล่านี้เป็นแบบซิงเกิลคอร์ อันที่จริงแกนกลางคือโปรเซสเซอร์นั่นเอง ส่วนหลักและส่วนหลัก โปรเซสเซอร์ยังมีส่วนอื่น ๆ เช่น "ขา" - หน้าสัมผัส, "การเดินสายไฟฟ้า" ด้วยกล้องจุลทรรศน์ - แต่เป็นบล็อกที่รับผิดชอบในการคำนวณที่เรียกว่า แกนประมวลผล- เมื่อโปรเซสเซอร์มีขนาดเล็กมาก วิศวกรจึงตัดสินใจรวมคอร์หลายคอร์ไว้ใน "เคส" ของโปรเซสเซอร์ตัวเดียว

หากคุณจินตนาการถึงโปรเซสเซอร์เป็นอพาร์ทเมนต์แกนกลางก็คือห้องขนาดใหญ่ในอพาร์ทเมนต์ดังกล่าว อพาร์ทเมนต์แบบหนึ่งห้องคือแกนประมวลผลหนึ่งคอร์ (ห้องโถงขนาดใหญ่) ห้องครัว ห้องน้ำ ทางเดิน... อพาร์ทเมนต์แบบสองห้องเปรียบเสมือนแกนประมวลผลสองคอร์พร้อมกับห้องอื่นๆ มีอพาร์ทเมนต์สาม, สี่และ 12 ห้อง เช่นเดียวกับโปรเซสเซอร์: ภายในคริสตัล "อพาร์ตเมนต์" หนึ่งอันสามารถมีคอร์ "ห้อง" ได้หลายคอร์

มัลติคอร์- นี่คือการแบ่งโปรเซสเซอร์หนึ่งตัวออกเป็นหลายบล็อกการทำงานที่เหมือนกัน จำนวนบล็อกคือจำนวนคอร์ภายในโปรเซสเซอร์ตัวเดียว

ประเภทของโปรเซสเซอร์แบบมัลติคอร์

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

กลับไปที่การเปรียบเทียบของโปรเซสเซอร์และอพาร์ทเมนท์ อพาร์ทเมนต์สองห้องมีราคาแพงกว่า สะดวกสบายกว่า และมีชื่อเสียงมากกว่าอพาร์ทเมนต์แบบหนึ่งห้อง แต่เฉพาะในกรณีที่อพาร์ทเมนท์เหล่านี้ตั้งอยู่ในพื้นที่เดียวกัน มีอุปกรณ์ครบครันและมีการปรับปรุงใหม่คล้ายกัน มีโปรเซสเซอร์ Quad-Core ที่อ่อนแอ (หรือ 6-Core) ที่อ่อนแอกว่าโปรเซสเซอร์แบบ Dual-Core อย่างมาก แต่มันก็ยากที่จะเชื่อ แน่นอนว่ามันเป็นเวทย์มนตร์ จำนวนมาก 4 หรือ 6 เทียบกับ "บางคน" สอง อย่างไรก็ตาม นี่เป็นสิ่งที่เกิดขึ้นบ่อยมาก ดูเหมือนอพาร์ทเมนต์สี่ห้องเดียวกัน แต่อยู่ในสภาพพังทลายโดยไม่มีการปรับปรุงใหม่ในพื้นที่ห่างไกลโดยสิ้นเชิง - และแม้แต่ในราคาของอพาร์ทเมนต์สองห้องหรูหราในใจกลางเมือง

ภายในโปรเซสเซอร์มีกี่คอร์?

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

มีการทดลองโดย AMD เพื่อสร้างโปรเซสเซอร์ 3 คอร์ แต่นี่เป็นอดีตไปแล้ว มันค่อนข้างดี แต่เวลาของพวกเขาผ่านไปแล้ว

อนึ่ง, บริษัทเอเอ็มดียังผลิตโปรเซสเซอร์แบบมัลติคอร์ แต่ตามกฎแล้วพวกมันอ่อนแอกว่าคู่แข่งจาก Intel อย่างมาก จริงอยู่ราคาของพวกเขาต่ำกว่ามาก คุณเพียงแค่ต้องรู้ว่า 4 คอร์จาก AMD มักจะอ่อนแอกว่า 4 คอร์เดียวกันจาก Intel อย่างเห็นได้ชัด

ตอนนี้คุณรู้แล้วว่าโปรเซสเซอร์มาพร้อมกับ 1, 2, 3, 4, 6 และ 12 คอร์ โปรเซสเซอร์แบบ Single-core และ 12-core นั้นหายากมาก โปรเซสเซอร์ Triple-core กลายเป็นสิ่งที่ผ่านมาแล้ว โปรเซสเซอร์แบบ 6 คอร์มีราคาแพงมาก (Intel) หรือไม่แรงมาก (AMD) ซึ่งคุณต้องจ่ายเงินเพิ่มสำหรับจำนวนนี้ คอร์ 2 และ 4 คอร์เป็นอุปกรณ์ที่ใช้กันทั่วไปและใช้งานได้จริงที่สุด ตั้งแต่คอร์ที่อ่อนแอที่สุดไปจนถึงทรงพลังที่สุด

ความถี่ของโปรเซสเซอร์แบบมัลติคอร์

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

เป็นการผิดอย่างสิ้นเชิงที่จะถือว่าความถี่ของโปรเซสเซอร์เท่ากับความถี่ของคอร์คูณด้วยจำนวนคอร์ พูดง่ายๆ ก็คือโปรเซสเซอร์ 2 คอร์ที่มีความถี่คอร์ 2 GHz จะมีความถี่รวมไม่ว่าในกรณีใดจะเท่ากับ 4 กิกะเฮิรตซ์! แม้แต่แนวคิดเรื่อง "ความถี่ร่วม" ก็ไม่มีอยู่จริง ในกรณีนี้ ความถี่ซีพียูเท่ากับ 2 GHz พอดี ไม่มีการคูณ การบวก หรือการดำเนินการอื่นๆ

และอีกครั้งเราจะ "เปลี่ยน" โปรเซสเซอร์ให้เป็นอพาร์ตเมนต์ หากความสูงของเพดานในแต่ละห้องคือ 3 เมตร ความสูงรวมของอพาร์ทเมนท์จะยังคงเท่าเดิม - สามเมตรเท่าเดิมและไม่สูงกว่าหนึ่งเซนติเมตร ไม่ว่าอพาร์ทเมนต์จะมีกี่ห้องก็ตามความสูงของห้องเหล่านี้ก็ไม่เปลี่ยนแปลง เช่นเดียวกัน ความเร็วสัญญาณนาฬิกาของคอร์โปรเซสเซอร์- มันไม่ได้เพิ่มขึ้นหรือคูณ

มัลติคอร์เสมือนหรือ Hyper-Threading

นอกจากนี้ยังมี แกนประมวลผลเสมือน- เทคโนโลยี Hyper-Threading ในโปรเซสเซอร์ Intel ทำให้คอมพิวเตอร์ "คิด" ว่าแท้จริงแล้วมี 4 คอร์ภายในโปรเซสเซอร์แบบดูอัลคอร์ คล้ายกันมากเพียงผู้เดียวเท่านั้น ฮาร์ดไดรฟ์ แบ่งออกเป็นหลายตรรกะ- ไดรฟ์ในเครื่อง C, D, E และอื่น ๆ

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

สิ่งนี้สมเหตุสมผลหรือไม่? เคล็ดลับด้วย แกนเสมือน - บ่อยที่สุด - ใช่ แม้ว่าทั้งหมดจะขึ้นอยู่กับงานเฉพาะก็ตาม ดูเหมือนว่าจะมีห้องเพิ่มมากขึ้น (และที่สำคัญที่สุดคือมีการใช้อย่างมีเหตุผลมากขึ้น) แต่พื้นที่ของห้องไม่เปลี่ยนแปลง ในสำนักงาน ฉากกั้นดังกล่าวมีประโยชน์อย่างเหลือเชื่อ และในอพาร์ตเมนต์ที่พักอาศัยบางแห่งก็มีประโยชน์เช่นกัน ในกรณีอื่น ๆ การแบ่งห้องไม่มีประโยชน์เลย (แบ่งแกนประมวลผลออกเป็นสองแกนเสมือน)

โปรดทราบว่าราคาแพงที่สุดและ โปรเซสเซอร์อันทรงพลังระดับแกนกลางi7 เป็นอุปกรณ์บังคับไฮเปอร์การทำเกลียว- พวกเขามี 4 คอร์จริงและ 8 คอร์เสมือน ปรากฎว่าเธรดการคำนวณ 8 รายการทำงานพร้อมกันบนโปรเซสเซอร์ตัวเดียว โปรเซสเซอร์ระดับ Intel ที่มีราคาไม่แพงแต่ยังทรงพลังอีกด้วย แกนกลางi5ประกอบด้วย สี่คอร์แต่ Hyper Threading ไม่ทำงานที่นั่น ปรากฎว่า Core i5 ทำงานกับการคำนวณ 4 เธรด

โปรเซสเซอร์ แกนกลางi3- "ค่าเฉลี่ย" โดยทั่วไปทั้งในด้านราคาและประสิทธิภาพ มีสองคอร์และไม่มีนัยของ Hyper-Threading โดยรวมแล้วปรากฎว่า แกนกลางi3เพียงสองเธรดการคำนวณ เช่นเดียวกับคริสตัลงบประมาณตรงไปตรงมา เพนเทียมและเซเลรอน- สองคอร์ ไม่มีไฮเปอร์เธรด = สองเธรด

คอมพิวเตอร์ต้องการคอร์จำนวนมากหรือไม่? โปรเซสเซอร์ต้องการคอร์จำนวนเท่าใด

โปรเซสเซอร์สมัยใหม่ทั้งหมดมีประสิทธิภาพเพียงพอสำหรับงานทั่วไป- การท่องอินเทอร์เน็ตการโต้ตอบบนโซเชียลเน็ตเวิร์กและอีเมลงานในสำนักงาน Word-PowerPoint-Excel: Atom ที่อ่อนแอ Celeron และ Pentium ราคาประหยัดเหมาะสำหรับงานนี้ไม่ต้องพูดถึง Core i3 ที่ทรงพลังกว่า สองคอร์ก็เกินพอสำหรับงานปกติ โปรเซสเซอร์ด้วย จำนวนมากแกนจะไม่ทำให้ความเร็วเพิ่มขึ้นอย่างมีนัยสำคัญ

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

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

มีประโยชน์ใด ๆ กับโปรเซสเซอร์แบบมัลติคอร์หรือไม่?

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

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

ดังนั้นความเชื่อที่หยั่งรากลึกที่ว่าโปรแกรมไม่สามารถใช้หลายคอร์ได้นั้นถือเป็นข้อมูลที่ล้าสมัย กาลครั้งหนึ่งเคยเป็นเช่นนี้จริง ๆ วันนี้สถานการณ์ดีขึ้นอย่างมาก ประโยชน์ของหลายคอร์นั้นไม่อาจปฏิเสธได้ นั่นคือข้อเท็จจริง

เมื่อโปรเซสเซอร์มีคอร์น้อยลง จะดีกว่า

คุณไม่ควรซื้อโปรเซสเซอร์โดยใช้สูตรที่ไม่ถูกต้อง “ยิ่งมีคอร์มากเท่าไรก็ยิ่งดีเท่านั้น” นี่เป็นสิ่งที่ผิด ประการแรกโปรเซสเซอร์ 4, 6 และ 8 คอร์มีราคาแพงกว่าโปรเซสเซอร์แบบดูอัลคอร์อย่างมาก การเพิ่มขึ้นอย่างมีนัยสำคัญของราคาไม่ได้เป็นสิ่งที่สมเหตุสมผลเสมอไปจากมุมมองของประสิทธิภาพ ตัวอย่างเช่น หากโปรเซสเซอร์ 8 คอร์ปรากฏว่าเร็วกว่า CPU ที่มีคอร์น้อยกว่าเพียง 10% แต่มีราคาแพงกว่า 2 เท่า ก็จะเป็นการยากที่จะพิสูจน์การซื้อดังกล่าว

ประการที่สอง ยิ่งโปรเซสเซอร์มีคอร์มากเท่าไร ก็ยิ่งสิ้นเปลืองพลังงานมากขึ้นเท่านั้น ไม่มีประโยชน์ที่จะซื้อแล็ปท็อปที่มีราคาแพงกว่ามากซึ่งมี Core i7 แบบ 4 คอร์ (8 เธรด) หากแล็ปท็อปจะรองรับการประมวลผลเท่านั้น ไฟล์ข้อความ, การท่องอินเทอร์เน็ตและอื่นๆ จะไม่มีความแตกต่างกับ Core i5 แบบดูอัลคอร์ (4 เธรด) และ Core i3 แบบคลาสสิกที่มีเธรดการประมวลผลเพียงสองเธรดจะไม่ด้อยกว่า "เพื่อนร่วมงาน" ที่มีชื่อเสียงมากกว่า และจากแบตเตอรี่แบบนี้ แล็ปท็อปที่ทรงพลังจะทำงานน้อยกว่า Core i3 ที่ประหยัดและไม่ต้องการมาก

โปรเซสเซอร์แบบมัลติคอร์ในโทรศัพท์มือถือและแท็บเล็ต

แฟชั่นสำหรับคอร์ประมวลผลหลายคอร์ภายในโปรเซสเซอร์ตัวเดียวยังนำไปใช้กับอุปกรณ์มือถือด้วย สมาร์ทโฟนและแท็บเล็ตที่มีคอร์จำนวนมากแทบไม่เคยใช้ความสามารถเต็มรูปแบบของไมโครโปรเซสเซอร์เลย บางครั้งคอมพิวเตอร์พกพาแบบ Dual-core ทำงานได้เร็วกว่าเล็กน้อย แต่จริงๆ แล้ว 4 คอร์และมากกว่านั้นอีก 8 คอร์ก็ถือว่าเกินกำลังไปมาก แบตเตอรี่ถูกใช้ไปอย่างไร้ศีลธรรม และอุปกรณ์คอมพิวเตอร์อันทรงพลังก็ไม่ได้ใช้งาน บทสรุป - โปรเซสเซอร์แบบมัลติคอร์ในโทรศัพท์ สมาร์ทโฟน และแท็บเล็ตเป็นเพียงเครื่องบรรณาการทางการตลาด ไม่ใช่ความจำเป็นเร่งด่วน คอมพิวเตอร์เป็นอุปกรณ์ที่มีความต้องการมากกว่าโทรศัพท์ พวกเขาต้องการคอร์โปรเซสเซอร์สองตัวจริงๆ โฟร์จะไม่เจ็บ 6 และ 8 - ส่วนเกินเข้า งานปกติและแม้กระทั่งในเกม

จะเลือกโปรเซสเซอร์แบบมัลติคอร์ได้อย่างไรและไม่ผิดพลาด?

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

โปรดทราบว่าตารางนี้อิงตามโปรเซสเซอร์ตั้งแต่ปี 2555-2557 ตัวอย่างที่เก่ากว่าจะมีลักษณะที่แตกต่างกัน เราไม่ได้พูดถึงตัวเลือก CPU ที่หายากเช่น single-core Celeron (แม้กระทั่งทุกวันนี้ก็มีเช่นนี้ แต่นี่เป็นตัวเลือกที่ผิดปกติซึ่งแทบจะไม่มีวางจำหน่ายในตลาด) คุณไม่ควรเลือกโปรเซสเซอร์ตามจำนวนคอร์ที่อยู่ภายในเพียงอย่างเดียว - ยังมีโปรเซสเซอร์อื่นอีกมากมาย ลักษณะสำคัญ- ตารางจะทำให้การเลือกโปรเซสเซอร์แบบมัลติคอร์ง่ายขึ้น แต่ควรซื้อรุ่นเฉพาะ (และมีหลายสิบรุ่นในแต่ละคลาส) หลังจากทำความคุ้นเคยกับพารามิเตอร์อย่างละเอียดแล้วเท่านั้น: ความถี่, การกระจายความร้อน, การสร้าง, แคช ขนาดและลักษณะอื่นๆ

ซีพียู จำนวนคอร์ เธรดการคำนวณ การใช้งานทั่วไป
อะตอม 1-2 1-4 คอมพิวเตอร์และเน็ตบุ๊กที่ใช้พลังงานต่ำ เป้าหมายของโปรเซสเซอร์ Atom คือการลดการใช้พลังงานให้เหลือน้อยที่สุด ผลผลิตมีน้อย
เซเลรอน 2 2 โปรเซสเซอร์ที่ถูกที่สุดสำหรับเดสก์ท็อปและแล็ปท็อป ประสิทธิภาพเพียงพอสำหรับงานในสำนักงาน แต่ไม่ใช่ CPU สำหรับเล่นเกมเลย
เพนเทียม 2 2 โปรเซสเซอร์ Intel มีราคาไม่แพงและมีประสิทธิภาพต่ำพอๆ กับ Celeron ทางเลือกที่ยอดเยี่ยมสำหรับคอมพิวเตอร์ในสำนักงาน Pentium มีแคชที่ใหญ่กว่าเล็กน้อย และบางครั้งประสิทธิภาพก็เพิ่มขึ้นเล็กน้อยเมื่อเทียบกับ Celeron
คอร์ i3 2 4 สองคอร์ที่ค่อนข้างทรงพลังซึ่งแต่ละคอร์แบ่งออกเป็น "โปรเซสเซอร์" เสมือนสองตัว (Hyper-Threading) เหล่านี้เป็นซีพียูที่ทรงพลังอยู่แล้วในราคาที่ไม่สูงเกินไป ทางเลือกที่ดีสำหรับคอมพิวเตอร์ที่บ้านหรือสำนักงานที่ทรงพลังโดยไม่ต้องมีความต้องการประสิทธิภาพเป็นพิเศษ
คอร์ i5 4 4 โปรเซสเซอร์ Core i5 แบบ 4 คอร์เต็มรูปแบบมีราคาค่อนข้างแพง ประสิทธิภาพของพวกเขาขาดไปเฉพาะในงานที่มีความต้องการมากที่สุดเท่านั้น
คอร์ i7 4-6 8-12 โปรเซสเซอร์ Intel ที่ทรงพลังที่สุด แต่มีราคาแพงโดยเฉพาะ ตามกฎแล้วแทบจะไม่เร็วกว่า Core i5 และในบางโปรแกรมเท่านั้น ไม่มีทางเลือกอื่นสำหรับพวกเขา

บทสรุปโดยย่อของบทความ “ความจริงทั้งหมดเกี่ยวกับโปรเซสเซอร์แบบมัลติคอร์” แทนที่จะเป็นบันทึก

  • แกนซีพียู- ของเขา ส่วนประกอบ- จริงๆ แล้ว, โปรเซสเซอร์อิสระภายในเคส โปรเซสเซอร์ Dual-core - โปรเซสเซอร์สองตัวภายในตัวเดียว
  • มัลติคอร์เทียบได้กับจำนวนห้องภายในอพาร์ทเมนท์ อพาร์ทเมนต์แบบสองห้องดีกว่าอพาร์ทเมนต์แบบหนึ่งห้อง แต่มีลักษณะอื่นที่เท่าเทียมกันเท่านั้น (ที่ตั้งของอพาร์ทเมนท์ สภาพ พื้นที่ ความสูงของเพดาน)
  • คำกล่าวที่ว่า ยิ่งโปรเซสเซอร์มีคอร์มากเท่าไรก็ยิ่งดีเท่านั้นวิธีการทางการตลาดกฎที่ผิดอย่างสิ้นเชิง ท้ายที่สุดแล้วอพาร์ทเมนท์ไม่เพียงถูกเลือกตามจำนวนห้องเท่านั้น แต่ยังเลือกตามที่ตั้งการปรับปรุงและพารามิเตอร์อื่น ๆ ด้วย เช่นเดียวกับหลายคอร์ภายในโปรเซสเซอร์
  • มีอยู่ มัลติคอร์ "เสมือน"— เทคโนโลยีไฮเปอร์เธรดดิ้ง ด้วยเทคโนโลยีนี้ แต่ละคอร์ "กายภาพ" จะถูกแบ่งออกเป็น "เสมือน" สองอัน ปรากฎว่าโปรเซสเซอร์ 2 คอร์ที่มี Hyper-Threading มีเพียง 2 คอร์จริงเท่านั้น แต่โปรเซสเซอร์เหล่านี้ประมวลผล 4 เธรดการคำนวณพร้อมกัน นี่เป็นคุณสมบัติที่มีประโยชน์มาก แต่โปรเซสเซอร์ 4 เธรดไม่สามารถถือเป็นโปรเซสเซอร์ Quad-Core ได้
  • สำหรับโปรเซสเซอร์เดสก์ท็อป Intel: Celeron - 2 คอร์และ 2 เธรด Pentium - 2 คอร์ 2 เธรด Core i3 - 2 คอร์ 4 เธรด Core i5 - 4 คอร์ 4 เธรด Core i7 - 4 คอร์ 8 เธรด แล็ปท็อป (มือถือ) ซีพียูอินเทลมีจำนวนคอร์/เธรดที่แตกต่างกัน
  • สำหรับ คอมพิวเตอร์พกพาประสิทธิภาพการใช้พลังงาน (ในทางปฏิบัติ อายุการใช้งานแบตเตอรี่) มักมีความสำคัญมากกว่าจำนวนคอร์
  • บทช่วยสอน

ในบทความนี้ ฉันจะพยายามอธิบายคำศัพท์ที่ใช้อธิบายระบบที่สามารถรันหลายโปรแกรมพร้อมกันได้ นั่นคือ multi-core, multi-processor, multi-threaded ประเภทต่างๆความขนานใน CPU IA-32 ปรากฏขึ้น เวลาที่ต่างกันและอยู่ในลำดับที่ค่อนข้างไม่สอดคล้องกัน ทั้งหมดนี้ค่อนข้างง่ายที่จะสับสน โดยเฉพาะอย่างยิ่งเมื่อพิจารณาว่าระบบปฏิบัติการซ่อนรายละเอียดอย่างระมัดระวังจากโปรแกรมแอปพลิเคชันที่ซับซ้อนน้อยกว่า

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

คำเตือนเกี่ยวกับสัญญาณ ®, ™ ในบทความ

ความคิดเห็นของฉันอธิบายว่าทำไมพนักงานของบริษัทจึงควรใช้ประกาศเกี่ยวกับลิขสิทธิ์ในการสื่อสารสาธารณะ ในบทความนี้ฉันต้องใช้มันค่อนข้างบ่อย

ซีพียู

แน่นอนว่าคำที่เก่าที่สุด ใช้บ่อยที่สุด และเป็นที่ถกเถียงกันคือ "โปรเซสเซอร์"

ใน โลกสมัยใหม่โปรเซสเซอร์คือสิ่งที่เราซื้อในกล่องขายปลีกที่สวยงามหรือแพ็คเกจ OEM ที่ไม่ดีนัก เอนทิตีที่แบ่งแยกไม่ได้ถูกเสียบเข้าไปในซ็อกเก็ตบนเมนบอร์ด แม้ว่าจะไม่มีขั้วต่อและไม่สามารถถอดออกได้นั่นคือหากบัดกรีอย่างแน่นหนาก็จะเป็นชิปตัวเดียว

ระบบมือถือ (โทรศัพท์ แท็บเล็ต แล็ปท็อป) และเดสก์ท็อปส่วนใหญ่มีโปรเซสเซอร์ตัวเดียว บางครั้งเวิร์กสเตชันและเซิร์ฟเวอร์อาจมีโปรเซสเซอร์สองตัวขึ้นไปบนเมนบอร์ดตัวเดียว

การรองรับ CPU หลายตัวในระบบเดียวจำเป็นต้องมีการเปลี่ยนแปลงการออกแบบมากมาย อย่างน้อยที่สุดก็จำเป็นต้องจัดเตรียมไว้ให้ การเชื่อมต่อทางกายภาพ(มีซ็อกเก็ตหลายตัวบนเมนบอร์ด), แก้ไขปัญหาการระบุตัวโปรเซสเซอร์ (ดูภายหลังในบทความนี้ เช่นเดียวกับบันทึกย่อก่อนหน้าของฉัน), การประสานงานของการเข้าถึงหน่วยความจำและการส่งมอบการขัดจังหวะ (ตัวควบคุมการขัดจังหวะจะต้องสามารถกำหนดเส้นทางการขัดจังหวะไปยังโปรเซสเซอร์หลายตัวได้) และแน่นอนว่าได้รับการสนับสนุนจากระบบปฏิบัติการด้วย น่าเสียดายที่ฉันไม่พบสารคดีที่กล่าวถึงการสร้างระบบมัลติโปรเซสเซอร์ตัวแรกบนโปรเซสเซอร์ Intel แต่ Wikipedia อ้างว่า Sequent Computer Systems จัดหามาให้แล้วในปี 1987 โดยใช้โปรเซสเซอร์ Intel 80386 การรองรับชิปหลายตัวในระบบเดียวกำลังแพร่หลาย , เริ่มต้นด้วย Intel® Pentium

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


พร้อมบินขึ้น! บอร์ดเดสก์ท็อป Intel® D5400XS

แกนกลาง

ในอดีต มัลติคอร์ใน Intel IA-32 ปรากฏช้ากว่า Intel® HyperThreading แต่ในลำดับชั้นเชิงตรรกะจะปรากฏเป็นลำดับถัดไป

ดูเหมือนว่าหากระบบมีโปรเซสเซอร์มากขึ้น ประสิทธิภาพก็จะสูงขึ้น (ในงานที่สามารถใช้ทรัพยากรทั้งหมดได้) อย่างไรก็ตาม หากต้นทุนในการสื่อสารระหว่างกันสูงเกินไป ผลประโยชน์ทั้งหมดจากการขนานจะถูกทำลายลงเนื่องจากความล่าช้าอันยาวนานในการถ่ายโอนข้อมูลทั่วไป นี่คือสิ่งที่สังเกตได้ในระบบมัลติโปรเซสเซอร์ - ทั้งทางกายภาพและทางตรรกะซึ่งอยู่ห่างไกลจากกันมาก สำหรับ การสื่อสารที่มีประสิทธิภาพในสภาวะเช่นนี้ จำเป็นต้องมีบัสพิเศษ เช่น Intel® QuickPath Interconnect แน่นอนว่าการใช้พลังงาน ขนาด และราคาของโซลูชั่นขั้นสุดท้ายไม่ได้ลดลงจากทั้งหมดนี้ การบูรณาการส่วนประกอบในระดับสูงควรได้รับการช่วยเหลือ - วงจรที่ควบคุมชิ้นส่วนต่างๆ โปรแกรมคู่ขนานคุณต้องลากพวกมันเข้ามาใกล้กันโดยเฉพาะอย่างยิ่งบนคริสตัลอันเดียว กล่าวอีกนัยหนึ่ง โปรเซสเซอร์หนึ่งตัวควรจัดระเบียบหลายตัว แกนเหมือนกันทุกอย่างแต่ทำงานอย่างเป็นอิสระ

โปรเซสเซอร์ IA-32 แบบมัลติคอร์ตัวแรกจาก Intel เปิดตัวในปี 2548 ตั้งแต่นั้นมา จำนวนคอร์โดยเฉลี่ยในเซิร์ฟเวอร์ เดสก์ท็อป และแพลตฟอร์มมือถือในปัจจุบันก็เติบโตอย่างต่อเนื่อง

ต่างจากโปรเซสเซอร์แบบซิงเกิลคอร์สองตัวบนระบบเดียวกันที่ใช้หน่วยความจำร่วมกันเท่านั้น คอร์สองตัวยังสามารถแชร์แคชและทรัพยากรที่เกี่ยวข้องกับหน่วยความจำอื่นๆ ได้อีกด้วย โดยส่วนใหญ่ แคชระดับแรกยังคงเป็นส่วนตัว (แต่ละคอร์มีแคชของตัวเอง) ในขณะที่แคชระดับที่สองและสามสามารถแชร์หรือแยกกันได้ การจัดระบบนี้ช่วยให้คุณลดความล่าช้าในการส่งข้อมูลระหว่างคอร์ที่อยู่ใกล้เคียง โดยเฉพาะอย่างยิ่งหากคอร์เหล่านั้นกำลังทำงานทั่วไปอยู่


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

ไฮเปอร์เธรด

จนถึงประมาณปี 2002 วิธีเดียวที่จะได้รับระบบ IA-32 ที่สามารถรันโปรแกรมสองโปรแกรมขึ้นไปพร้อมกันได้คือการใช้ระบบมัลติโปรเซสเซอร์ เปิดตัว Intel® Pentium® 4 และกลุ่มผลิตภัณฑ์ Xeon ที่มีชื่อรหัสว่า Foster (Netburst) เทคโนโลยีใหม่- ไฮเปอร์เธรดหรือไฮเปอร์เธรด - Intel® HyperThreading (ต่อไปนี้จะเรียกว่า HT)

ไม่มีอะไรใหม่ภายใต้ดวงอาทิตย์ HT คือ กรณีพิเศษสิ่งที่ในวรรณคดีเรียกว่ามัลติเธรดพร้อมกัน (SMT) แตกต่างจากคอร์ "ของจริง" ซึ่งเป็นสำเนาที่สมบูรณ์และเป็นอิสระในกรณีของ HT มีเพียงส่วนหนึ่งของโหนดภายในเท่านั้นที่รับผิดชอบหลักในการจัดเก็บสถานะสถาปัตยกรรม - รีจิสเตอร์จะถูกทำซ้ำในโปรเซสเซอร์ตัวเดียว โหนดผู้บริหารที่รับผิดชอบในการจัดระเบียบและประมวลผลข้อมูลยังคงเป็นเอกพจน์ และในเวลาใดก็ตาม จะถูกใช้งานโดยหนึ่งในเธรดมากที่สุด เช่นเดียวกับคอร์ ไฮเปอร์เธรดจะแชร์แคช แต่ระดับใดขึ้นอยู่กับระบบเฉพาะ

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

ข้อจำกัดของเธรด
การปรากฏตัวของมัลติคอร์ที่ "ไม่ยุติธรรม" ในรูปแบบของ HT ในกรณีใดบ้างที่สมเหตุสมผล? หากเธรดแอปพลิเคชันหนึ่งไม่สามารถโหลดโหนดการดำเนินการทั้งหมดภายในเคอร์เนลได้ ก็สามารถ "ยืม" ไปยังเธรดอื่นได้ นี่เป็นเรื่องปกติสำหรับแอปพลิเคชันที่มีปัญหาคอขวดซึ่งไม่ได้อยู่ในการคำนวณ แต่ในการเข้าถึงข้อมูล ซึ่งมักจะสร้างแคชที่พลาดและต้องรอให้ข้อมูลถูกส่งจากหน่วยความจำ ในช่วงเวลานี้ แกนหลักที่ไม่มี HT จะถูกบังคับให้ไม่ได้ใช้งาน การมีอยู่ของ HT ช่วยให้คุณสามารถสลับโหนดการดำเนินการฟรีไปเป็นสถานะสถาปัตยกรรมอื่นได้อย่างรวดเร็ว (เนื่องจากมีการทำซ้ำ) และดำเนินการตามคำแนะนำ นี่เป็นกรณีพิเศษของเทคนิคที่เรียกว่าการซ่อนเวลาแฝง เมื่อดำเนินการเป็นเวลานานในระหว่างนั้น ทรัพยากรที่เป็นประโยชน์ไม่ได้ใช้งาน ถูกบดบังโดยการทำงานแบบขนานกับงานอื่นๆ หากแอปพลิเคชันมีการใช้งานทรัพยากรเคอร์เนลในระดับสูงอยู่แล้ว การมีไฮเปอร์เธรดจะไม่อนุญาตให้เร่งความเร็ว - จำเป็นต้องใช้เคอร์เนลที่ "ซื่อสัตย์" ที่นี่

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

มีการสังเกตสถานการณ์ที่แตกต่างกันในงานทั่วไปที่ทำกับตัวเร่งความเร็ววิดีโอ ดังนั้นสถาปัตยกรรมเหล่านี้จึงโดดเด่นด้วยการใช้เทคโนโลยี SMT ที่มีเธรดจำนวนมากขึ้น เนื่องจากโปรเซสเซอร์ร่วม Intel® Xeon Phi (เปิดตัวในปี 2010) ค่อนข้างใกล้เคียงกับการ์ดวิดีโอทั้งในด้านอุดมการณ์และลำดับวงศ์ตระกูล จึงอาจมี สี่ไฮเปอร์เธรดในแต่ละคอร์ - การกำหนดค่าเฉพาะสำหรับ IA-32

โปรเซสเซอร์แบบลอจิคัล

จากสาม “ระดับ” ของการขนานที่อธิบายไว้ (โปรเซสเซอร์, คอร์, ไฮเปอร์เธรด) บางส่วนหรือทั้งหมดอาจหายไปในระบบใดระบบหนึ่ง สิ่งนี้ได้รับอิทธิพล การตั้งค่าไบออส(มัลติคอร์และมัลติเธรดถูกปิดใช้งานโดยแยกจากกัน) คุณสมบัติสถาปัตยกรรมไมโคร (เช่น HT หายไปจาก Intel® Core™ Duo แต่ถูกส่งคืนพร้อมกับการเปิดตัว Nehalem) และเหตุการณ์ของระบบ (เซิร์ฟเวอร์มัลติโปรเซสเซอร์สามารถปิดได้ โปรเซสเซอร์ที่ล้มเหลวหากตรวจพบข้อผิดพลาดและยังคง "บิน" ต่อไปกับตัวประมวลผลที่เหลือ) สวนสัตว์แห่งการทำงานพร้อมกันหลายระดับนี้มองเห็นได้สำหรับระบบปฏิบัติการและท้ายที่สุดกับแอปพลิเคชันแอปพลิเคชันอย่างไร

นอกจากนี้ เพื่อความสะดวก เราจะแสดงจำนวนโปรเซสเซอร์ คอร์ และเธรดในระบบหนึ่งเป็นสาม ( x, , z), ที่ไหน xคือจำนวนโปรเซสเซอร์ - จำนวนคอร์ในโปรเซสเซอร์แต่ละตัว และ z- จำนวนไฮเปอร์เธรดในแต่ละคอร์ จากนี้ไปผมจะเรียกสิ่งนี้ว่าสาม โทโพโลยี- เป็นคำที่กำหนดขึ้นซึ่งไม่เกี่ยวข้องกับสาขาวิชาคณิตศาสตร์มากนัก งาน พี = เอ็กซ์ซีสกำหนดจำนวนของเอนทิตีที่ถูกเรียก โปรเซสเซอร์แบบลอจิคัลระบบ โดยจะกำหนดจำนวนบริบทอิสระทั้งหมดของกระบวนการแอปพลิเคชันบนระบบหน่วยความจำที่ใช้ร่วมกัน ซึ่งดำเนินการแบบขนาน ซึ่งระบบปฏิบัติการถูกบังคับให้คำนึงถึง ฉันพูดว่า "บังคับ" เพราะไม่สามารถควบคุมลำดับการดำเนินการของสองกระบวนการบนตัวประมวลผลลอจิคัลที่ต่างกันได้ นอกจากนี้ยังใช้กับไฮเปอร์เธรดด้วย แม้ว่าจะทำงาน "ตามลำดับ" บนคอร์เดียวกัน แต่ฮาร์ดแวร์จะกำหนดลำดับเฉพาะและไม่สามารถสังเกตหรือควบคุมโดยโปรแกรมได้

บ่อยครั้งที่ระบบปฏิบัติการซ่อนคุณลักษณะของโทโพโลยีทางกายภาพของระบบที่ใช้งานอยู่จากแอปพลิเคชันปลายทาง ตัวอย่างเช่น โทโพโลยีสามรายการต่อไปนี้: (2, 1, 1), (1, 2, 1) และ (1, 1, 2) - ระบบปฏิบัติการจะเป็นตัวแทนของโปรเซสเซอร์ลอจิคัลสองตัว แม้ว่าตัวแรกจะมีโปรเซสเซอร์สองตัวก็ตาม วินาที - สองคอร์และอันที่สาม - เพียงสองเธรด


Windows Task Manager แสดงตัวประมวลผลแบบลอจิคัล 8 ตัว แต่ราคาเท่าไหร่ในโปรเซสเซอร์, คอร์และไฮเปอร์เธรด?


Linux อันดับต้น ๆ แสดงตัวประมวลผลแบบลอจิคัล 4 ตัว

นี่ค่อนข้างสะดวกสำหรับผู้สร้าง แอปพลิเคชั่น- พวกเขาไม่จำเป็นต้องจัดการกับคุณสมบัติของอุปกรณ์ที่มักจะไม่สำคัญสำหรับพวกเขา

คำจำกัดความของซอฟต์แวร์โทโพโลยี

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

ข้อมูลเกี่ยวกับโทโพโลยีของระบบโดยรวม รวมถึงตำแหน่งของตัวประมวลผลแบบลอจิคัลแต่ละตัวใน IA-32 มีให้ใช้งานโดยใช้คำสั่ง CPUID นับตั้งแต่การถือกำเนิดของระบบมัลติโปรเซสเซอร์ระบบแรก รูปแบบการระบุตัวประมวลผลแบบลอจิคัลได้ถูกขยายออกไปหลายครั้ง จนถึงปัจจุบัน ชิ้นส่วนต่างๆ มีอยู่ในเอกสาร CPUID แผ่นที่ 1, 4 และ 11 แผ่นงานใดที่จะดูสามารถกำหนดได้จากผังงานต่อไปนี้ที่นำมาจากบทความ:

ฉันจะไม่ทำให้คุณเบื่อกับรายละเอียดทั้งหมดที่นี่ แต่ละส่วนอัลกอริทึมนี้ หากมีความสนใจสามารถอุทิศส่วนถัดไปของบทความนี้ได้ ฉันจะแนะนำผู้อ่านที่สนใจซึ่งจะตรวจสอบปัญหานี้อย่างละเอียดที่สุดเท่าที่จะเป็นไปได้ ในที่นี้ฉันจะอธิบายสั้น ๆ ก่อนว่า APIC คืออะไร และเกี่ยวข้องกับโทโพโลยีอย่างไร ถัดไป ให้พิจารณาทำงานกับแผ่นงาน 0xB (สิบเอ็ดในฐานสิบ) ซึ่งเปิดอยู่ ช่วงเวลาปัจจุบันเป็น คำสุดท้ายใน "apico-การก่อสร้าง"

รหัส APIC
Local APIC (ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง) เป็นอุปกรณ์ (ปัจจุบันเป็นส่วนหนึ่งของโปรเซสเซอร์) ที่รับผิดชอบในการจัดการการขัดจังหวะที่มาถึงตัวประมวลผลแบบลอจิคัลเฉพาะ ตัวประมวลผลแบบลอจิคัลแต่ละตัวมี APIC ของตัวเอง และแต่ละรายการในระบบจะต้องมีค่า APIC ID ที่ไม่ซ้ำกัน หมายเลขนี้ถูกใช้โดยตัวควบคุมการขัดจังหวะเพื่อระบุที่อยู่เมื่อส่งข้อความ และโดยคนอื่นๆ (เช่น ระบบปฏิบัติการ) เพื่อระบุตัวประมวลผลแบบลอจิคัล ข้อกำหนดสำหรับตัวควบคุมขัดจังหวะนี้มีการพัฒนามาจาก ชิปอินเทล 8259 PIC ผ่าน Dual PIC, APIC และ xAPIC ถึง x2APIC

ปัจจุบันความกว้างของตัวเลขที่เก็บไว้ใน APIC ID มีจำนวนถึง 32 บิตเต็มแล้ว แม้ว่าในอดีตจะถูกจำกัดไว้ที่ 16 บิต และก่อนหน้านี้มีเพียง 8 บิตเท่านั้น ปัจจุบัน เศษของวันเก่าๆ กระจัดกระจายไปทั่ว CPUID แต่ CPUID.0xB.EDX ส่งคืน APIC ID ทั้ง 32 บิต ในตัวประมวลผลแบบลอจิคัลแต่ละตัวที่ดำเนินการคำสั่ง CPUID อย่างอิสระ ค่าที่แตกต่างกันจะถูกส่งกลับ

ชี้แจงความสัมพันธ์ในครอบครัว
ค่า APIC ID ไม่ได้บอกอะไรคุณเกี่ยวกับโทโพโลยี หากต้องการทราบว่าตัวประมวลผลแบบลอจิคัลตัวใดสองตัวที่อยู่ภายในตัวประมวลผลทางกายภาพตัวเดียว (กล่าวคือ เป็นตัวประมวลผลแบบ "พี่น้อง" ) ตัวไหนสองตัวอยู่ภายในตัวประมวลผลเดียวกัน และตัวใดอยู่ในตัวประมวลผลที่ต่างกันโดยสิ้นเชิง คุณต้องเปรียบเทียบค่า APIC ID ของพวกมัน บิตบางส่วนจะตรงกันทั้งนี้ขึ้นอยู่กับระดับของความสัมพันธ์ ข้อมูลนี้มีอยู่ในรายการย่อย CPUID.0xB ซึ่งมีการเข้ารหัสตัวถูกดำเนินการใน ECX แต่ละคนอธิบายสถานการณ์ ฟิลด์บิตหนึ่งในระดับโทโพโลยีใน EAX (แม่นยำยิ่งขึ้นคือจำนวนบิตที่ต้องเลื่อนไปทางขวาใน APIC ID เพื่อลบระดับโทโพโลยีที่ต่ำกว่า) รวมถึงประเภทของระดับนี้ - ไฮเปอร์เธรดคอร์หรือโปรเซสเซอร์ - ในอีซีเอ็กซ์

สำหรับตัวประมวลผลแบบลอจิคัลที่อยู่ภายในคอร์เดียวกัน บิต APIC ID ทั้งหมดจะตรงกัน ยกเว้นบิตที่อยู่ในฟิลด์ SMT สำหรับตัวประมวลผลแบบลอจิคัลที่อยู่ในตัวประมวลผลเดียวกัน บิตทั้งหมดยกเว้นฟิลด์ Core และ SMT เนื่องจากจำนวนชีตย่อยสำหรับ CPUID.0xB สามารถเพิ่มขึ้นได้ รูปแบบนี้จะช่วยให้เราสามารถรองรับคำอธิบายของโทโพโลยีด้วยจำนวนระดับที่มากขึ้น หากจำเป็นเกิดขึ้นในอนาคต ยิ่งไปกว่านั้น ยังสามารถแนะนำระดับกลางระหว่างระดับที่มีอยู่ได้

ผลที่ตามมาที่สำคัญของการจัดระเบียบโครงการนี้คืออาจมี "ช่องโหว่" ในชุด APIC ID ทั้งหมดของตัวประมวลผลลอจิคัลทั้งหมดในระบบ เช่น พวกเขาจะไม่ไปตามลำดับ ตัวอย่างเช่น ในโปรเซสเซอร์แบบมัลติคอร์ที่ปิด HT รหัส APIC ทั้งหมดอาจกลายเป็นเลขคู่ เนื่องจากบิตที่มีนัยสำคัญน้อยที่สุดที่รับผิดชอบในการเข้ารหัสหมายเลขไฮเปอร์เธรดจะเป็นศูนย์เสมอ

ฉันทราบว่า CPUID.0xB ไม่ใช่แหล่งข้อมูลเดียวเกี่ยวกับตัวประมวลผลแบบลอจิคัลที่มีในระบบปฏิบัติการ รายการโปรเซสเซอร์ทั้งหมดที่พร้อมใช้งาน พร้อมด้วยค่า APIC ID จะถูกเข้ารหัสในตาราง MADT ACPI

ระบบปฏิบัติการและโทโพโลยี

ระบบปฏิบัติการให้ข้อมูลเกี่ยวกับโทโพโลยีของตัวประมวลผลแบบลอจิคัลแก่แอปพลิเคชันที่ใช้อินเทอร์เฟซของตนเอง

บน Linux ข้อมูลโทโพโลยีมีอยู่ในไฟล์เทียม /proc/cpuinfo รวมถึงเอาต์พุตของคำสั่ง dmidecode ในตัวอย่างด้านล่าง ฉันกรองเนื้อหาของ cpuinfo บนระบบ Quad-Core บางระบบที่ไม่มี HT เหลือเพียงรายการที่เกี่ยวข้องกับโทโพโลยี:

ข้อความที่ซ่อนอยู่

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" โปรเซสเซอร์: 0 ฟิสิคัล id: 0 พี่น้อง: 4 คอร์ id: 0 คอร์ซีพียู: 2 apicid: 0 apicid เริ่มต้น: 0 ตัวประมวลผล: 1 ฟิสิคัล id: 0 พี่น้อง: 4 คอร์ id: 0 แกน cpu: 2 apicid: 1 apicid เริ่มต้น: 1 ตัวประมวลผล: 2 ฟิสิคัล id: 0 พี่น้อง: 4 คอร์ id: 1 คอร์ซีพียู: 2 apicid: 2 apicid เริ่มต้น: 2 ตัวประมวลผล: 3 id ทางกายภาพ: 0 พี่น้อง: 4 core id: 1 cpu cores: 2 apicid: 3 apicid เริ่มต้น: 3

บน FreeBSD โทโพโลยีจะถูกรายงานผ่านกลไก sysctl ในตัวแปร kern.sched.topology_spec เป็น XML:

ข้อความที่ซ่อนอยู่

ผู้ใช้ @ โฮสต์: ~ $ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 กลุ่มเธรดกลุ่มเอสเอ็มที 2, 3 กลุ่มเธรดกลุ่มเอสเอ็มที 4, 5 กลุ่มเธรดกลุ่มเอสเอ็มที 6, 7 กลุ่มเธรดกลุ่มเอสเอ็มที

ใน MS Windows 8 ข้อมูลโทโพโลยีสามารถดูได้ในตัวจัดการงาน

โปรเซสเซอร์แบบมัลติคอร์คือโปรเซสเซอร์กลางที่มีคอร์ประมวลผลมากกว่าสองคอร์ แกนดังกล่าวสามารถอยู่ในกล่องเดียวหรือบนชิปประมวลผลตัวเดียว

โปรเซสเซอร์แบบมัลติคอร์คืออะไร?

โปรเซสเซอร์แบบมัลติคอร์ส่วนใหญ่มักหมายถึงโปรเซสเซอร์กลางซึ่งมีแกนประมวลผลหลายตัวรวมอยู่ในชิปตัวเดียว (นั่นคือพวกมันอยู่บนชิปซิลิคอนตัวเดียว)

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

ไฮเปอร์เธรด

คอร์ในโปรเซสเซอร์แบบมัลติคอร์สามารถรองรับเทคโนโลยี SMT ซึ่งช่วยให้คุณสามารถรันเธรดการคำนวณหลายเธรด และสร้างโปรเซสเซอร์ลอจิคัลหลายตัวตามแต่ละคอร์ สำหรับโปรเซสเซอร์ที่ผลิตโดย Intel เทคโนโลยีนี้เรียกว่า "Hyper-threading" ด้วยเหตุนี้ คุณจึงสามารถเพิ่มจำนวนตัวประมวลผลแบบลอจิคัลเป็นสองเท่าเมื่อเทียบกับจำนวนชิปจริง ในไมโครโปรเซสเซอร์ที่สนับสนุนเทคโนโลยีนี้ โปรเซสเซอร์ทางกายภาพแต่ละตัวสามารถรักษาสถานะของสองเธรดพร้อมกันได้ สำหรับระบบปฏิบัติการ จะมีลักษณะเหมือนกับว่ามีตัวประมวลผลแบบลอจิคัลสองตัว หากมีการหยุดชั่วคราวในการทำงานของหนึ่งในนั้น (เช่น กำลังรอข้อมูลจากหน่วยความจำ) ตัวประมวลผลแบบลอจิคัลอื่นจะเริ่มดำเนินการเธรดของตัวเอง

ประเภทของโปรเซสเซอร์แบบมัลติคอร์

โปรเซสเซอร์แบบมัลติคอร์แบ่งออกเป็นหลายประเภท พวกเขาอาจจะหรืออาจจะไม่สนับสนุนการใช้แคชที่ใช้ร่วมกัน การสื่อสารระหว่างคอร์ดำเนินการบนหลักการของการใช้บัสที่ใช้ร่วมกัน เครือข่ายบนลิงก์แบบจุดต่อจุด เครือข่ายที่มีสวิตช์ หรือใช้แคชที่ใช้ร่วมกัน

หลักการทำงาน

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

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