เรื่องน่ารู้ของซีพียู: ทำความรู้จักกับ Core และ Thread หัวใจสำคัญของซีพียู

0

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

สำหรับบทความนี้ เป็นเรื่องที่มีหลายๆ คนสงสัยกันอยู่พอสมควร (ผมเองก็เป็นหนึ่งในนั้น) นั่นก็คือเรื่อง Core และ Thread ของซีพียู หลายคนคงอยากรู้ว่า ซีพียูหลายคอร์ มันดีกว่าคอร์เดียวอย่างไร, มันเร็วกว่ากันจริงหรือไม่ แล้ว Thread มันมีไว้ทำอะไร ผมจึงได้ไปหาคำตอบมาเรียบร้อยครับ

 

Core

CPU Core (ผมขอใช้ภาษาไทยว่าคอร์เฉยๆ นะครับ) เปรียบเสมือนสมองของซีพียู ข้างในนั้นจะประกอบด้วยส่วนประกอบปลีกย่อยอีกมากมาย ไม่ว่าจะเป็น ALU, FPU และอื่นๆ ซึ่งผมจะไม่ให้รายละเอียดในบทความนี้นะ เอาเป็นว่าคอร์หนึ่งๆ จะต้องมีส่วนประกอบ ที่ใช้ในการประมวลคำสั่งต่างๆ ที่เข้ามานั่นเอง

ก่อนที่เราจะพูดถึงซีพียูแบบหลายคอร์ เราต้องย้อนกลับไปในสมัยก่อนๆ ที่ซีพียูยังคงมีอยู่เพียงคอร์เดียว หรือที่เรียกว่า Single-Core แสดงว่า ซีพียูนั้น จะมีสมองแค่ก้อนเดียว การรับเข้าและประมวลผลคำสั่ง จะดำเนินการผ่านสมองก้อนเดียวนี้เท่านั้น

ขอบคุณรูปภาพจาก Multi-core architectures ของ Jernej Barbic

ดังนั้น เมื่อซีพียูมีสมองอยู่ก้อนเดียวแล้ว การที่ผู้ผลิตจะแข่งขันกันได้ คือการเพิ่มความเร็วให้กับคอร์ในซีพียูของเขา นั่นคือการเพิ่มสัญญาณนาฬิกา หรือ Clock speed ให้สูงขึ้น เช่น จาก 1 GHz เป็น 2 GHz อะไรแบบนี้

จนกระทั่งมันติดปัญหาที่ว่า ถ้าเพิ่มความเร็วสัญญาณนาฬิกาให้สูงขึ้นเรื่อยๆ ผลที่ตามมาคือความร้อน ไม่ต่างจากการ Overclock ซีพียูนั่นแหละครับ ดังนั้น เพื่อแก้ปัญหาในเรื่องนี้ จึงได้เกิดแนวคิดของ Muti-Core CPU ขึ้นมานั่นเอง

สองหัวน่าจะดีกว่าหัวเดียวอยู่แล้ว เพราะนั่นหมายความว่าซีพียู 1 ตัว จะมีสมองใช้คิดถึง 2 ก้อนด้วยกัน ในทางทฤษฎีถือว่า ถ้ามีคอร์มากขึ้น ซีพียูนั้น ก็น่าจะมีแนวโน้มการทำงานที่เร็วขึ้นด้วย

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

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

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

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

ยกตัวอย่างเช่น AMD Bulldozer เทียบกับ AMD Ryzen (สถาปัตยกรรม Zen) ที่มีคอร์เท่ากัน ทำไม Ryzen ถึงทำงานได้เร็วกว่า

เมื่อมองลึกลงไปถึงสถาปัตยกรรมของเจ้า Bulldozer นะครับ 1 คอร์จะมี 2 Integer units (คำนวณเลขจำนวนเต็ม) คั่นด้วย 1 Floating point unit (คำนวณเลขทศนิยม) และ AMD ได้นำ Integer units มาเป็นตัวเรียกจำนวนคอร์

ดังนั้น สมมุติว่าเราซื้อซีพียู Bulldozer 4 คอร์มา นั่นหมายความว่า มันมี 4 Integer units แต่กลับมี Floating point unit แค่ 2 หน่วยเท่านั้น

โครงสร้างของ Excavator ก็ถอดแบบมาจาก Bulldozer ด้วยครับ
ขอบคุณรูปภาพจาก Extremetech 

เมื่อนำมาเทียบกับ Ryzen ที่ซีพียู 1 คอร์ จะมี 1 Integer units และ 1 Floating point unit ดังนั้น ถ้าซื้อ Ryzen 4 คอร์มา เราจะได้ 4 Integer units และ 4 Floating point units ครับ แรงกว่าเห็นๆ เลยล่ะ

** ผลการทดสอบการเล่นเกม Total Warhammer ของ AMD Ryzen 3 1200 ซึ่งมี 4 คอร์ และ AMD FX-8370 ซึ่งมี 8 คอร์ (8 Integer units, 4 Floating point units) ** 

ขอบคุณรูปภาพจาก Gamersnexus

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

 

Thread

ถัดมาเรามาพูดถึงเรื่อง Thread (ขอพิมพ์ไทยว่า เทรด นะครับ) กันบ้าง เทรด เปรียบเสมือนการจำลองจำนวนคอร์ของซีพียูให้เพิ่มขึ้น ยกตัวอย่างเช่น Pentium 4 HT ที่ Intel ได้นำเสนอเรื่อง Multithreading เป็นครั้งแรกนั้น เป็นซีพียู 1 คอร์ ที่มี 2 เทรด หมายความว่า แม้ซีพียูจะมีสมอง 1 ก้อน แต่มันจำลองให้เหมือนว่ามีสมอง 2 ก้อนนั่นเอง

สำหรับเทคโนโลยีนี้เราเรียกว่า Simultaneous multithreading หรือ SMT ซึ่ง Intel เรียกมันว่า Hyper-Threading ครับ โดยเป็นการจำลองให้ซีพียู 1 คอร์ สามารถทำงานได้หลายอย่างพร้อมกัน ตามจำนวนเทรดที่เพิ่มขึ้น โดยทั่วไปคือ 1 คอร์ จะมีอยู่ 2 เทรด

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

ขอบคุณรูปภาพจาก Multi-core architectures ของ Jernej Barbic

ทีนี้พอมีการจำลองเทรดขึ้น ให้ 1 คอร์ มี 2 เทรด สิ่งที่เกิดขึ้นคือ คำสั่งที่ไม่ได้มีความเกี่ยวข้องกัน จะแยกกันเข้าคนละเทรด อย่างภาพข้างล่างนี้คือ คำสั่งที่เป็นการคำนวณเลขจำนวนเต็ม จะเข้าไปที่ส่วนของ Integer ส่วนคำสั่งที่เป็นเลขทศนิยมก็จะเข้าไปที่ Floating ทำให้การทำงานของ 2 อย่างนี้เกิดขึ้นพร้อมกันได้ ไม่ต้องต่อคิวยาวเหยียดนั่นเอง

ขอบคุณรูปภาพจาก Multi-core architectures ของ Jernej Barbic

ประโยชน์ของการมีจำนวนเทรดที่เพิ่มมากขึ้น จะเห็นได้ชัดเจนในการใช้งานร่วมกับโปรแกรมตัดต่อวิดีโอ ที่มีการประมวลผลข้อมูลหลากหลายรูปแบบ รวมถึงการใช้งานโปรแกรมแบบ Multi-tasking ก็ได้ประโยชน์จากการมีจำนวนเทรดที่เพิ่มขึ้นด้วยครับ

** ภาพตัวอย่างการเรนเดอร์ฉากด้วย Blender 2.78 จะเห็นได้ว่า Ryzen 5 1500X ซึ่งเป็นซีพียู 4 คอร์ 8 เทรด ใช้ระยะเวลาในการเรนเดอร์น้อยกว่า (ดีกว่า) Ryzen 3 1300X ซึ่งเป็นซีพียู 4 คอร์ 4 เทรด นี่คือประโยชน์หนึ่ง ของการมีจำนวนเทรดที่เพิ่มมากขึ้นครับ **

ขอบคุณรูปภาพจาก Anandtech

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

สำหรับครั้งหน้า ในบทความชุด เรื่องน่ารู้ของซีพียู ผมจะนำเรื่องอะไรมานำเสนออีก อย่าลืมติดตามกันได้ที่ Extreme PC นะครับ สวัสดีครับ

ขอขอบคุณข้อมูลเพิ่มเติมจาก

  • https://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/
  • https://www.techlila.com/cores-vs-threads/