Technology

CPU Microcode คืออะไร ? ทำไมทำให้ Intel CPU พังยับ ๆ

By Arnon Puitrakul - 02 สิงหาคม 2024

CPU Microcode คืออะไร ? ทำไมทำให้ Intel CPU พังยับ ๆ

หลังจากข่าวที่เกิดขึ้นกับ CPU ของ Intel ใน Generation ที่ 13 และ 14 ที่ว่ามีปัญหา Failure Rate สูงมาก ๆ ล่าสุดตอนนี้ Intel บอกว่า เจอแล้วว่าเรื่องเกิดจาก Microcode วันนี้เราจะมาเล่าให้อ่านกันว่า มันคืออะไร มันจำเป็นอย่างไรกับ CPU

Microcode คืออะไร ?

Microcode คือ ชุดคำสั่งอันนึงที่อยู่ใน CPU ทำหน้าที่เป็นโปรแกรมขนาดเล็กที่ควบคุมการทำงานของ CPU หากเราเคยเขียนโปรแกรม เราจะเข้าใจว่า หากเราเขียน Source Code ด้วย Programming Language สักตัวหนึ่ง เราไม่สามารถใช้งานกับ CPU ได้ตรง ๆ เพราะมันไม่รู้เรื่อง

เราจะต้องแปลงมันให้กลายเป็น Machine Code ด้วยวิธีใดวิธีหนึ่งเช่น Compile หรือ Interpret อันนี้ก็แล้วแต่ภาษาแต่ละตัวละว่าจะใช้วิธีการแบบใด เช่น C++ เราใช้ Compiler และ Python ส่วนใหญ่ เราจะใช้ Python Interpretator ในการทำงาน ซึ่งส่วนใหญ่ คนจะเข้าใจว่า CPU สามารถทำงานกับ Machine Language ได้ตรง ๆ

เช่น เราสั่ง FETCH มันก็จะเข้าใจทันทีว่าต้องเข้าไปเรียกข้อมูลออกมาจาก Address ที่เราเรียก แต่ในความเป็นจริงนั้นมันไม่จำเป็นต้องเป็นแบบนั้นเสมอไป

สำหรับในเครื่องคอมพิวเตอร์ที่ใช้ CPU บนสถาปัตยกรรมแบบ RISC (Reduced Instruction Set Computer) อย่างอุปกรณ์เคลื่อนที่ที่รัน ARM และพวก Apple Silicon ทั้งหลาย การทำงานมันเรียบง่ายมาก คือ มันอ่าน Machine Code และทำงานได้ตรง ๆ ตามวงจรที่กำหนดไว้ อย่างที่เราเข้าใจกันปกติ ทำให้ลักษณะสำคัญหนึ่งของ RISC คือ ในทุก ๆ คำสั่งบน ชุดคำสั่ง (Instruction Set) จะทำงานจบภายใน 1 Clock Cycle เสมอ ทำให้ใน RISC เขาไม่มี Microcode เหมือนกับฝั่ง CISC ที่กำลังจะเล่าต่อไป

กลับกันในเครื่องคอมพิวเตอร์ที่ใช้ชุดคำสั่งแบบ CISC (Complex Instruction Set Computer) ซึ่งคือ คอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปบนระบบ x86 เช่นพวก PC ในบ้าน จนไปถึงระดับ Server และ Supercomputer จะทำงานในอีกรูปแบบหนึ่งคือ ภายในคำสั่งของมัน จะมีคำสั่งย่อย ๆ อยู่ด้านในอีกที ตัวอย่างเช่น เมื่อ CPU อ่านเจอคำสั่ง FETCH ภายในนั้นอาจจะมี 2 คำสั่งย่อย ๆ ที่ต้องทำอยู่ในนั้น กินสัก 2 Clock Cycle ทำให้แต่ละคำสั่งบน CPU ของ CISC นั้นใช้จำนวน Clock Cycle ในการทำงานที่ไม่เท่ากัน เจ้าคำสั่งที่อยู่ด้านใน CPU นั่นแหละ คือ Microcode ที่เรากำลังพูดถึง

ดังนั้น Microcode ที่เรากำลังพูดถึงอยู่ตอนนี้ ทำตัวเหมือนคนกลางระหว่าง CPU และ ISA (Instruction Set Architecture) ของ CPU คอยแปลงคำสั่งที่อยู่ใน Machine Code ให้กลายเป็นขั้นตอนที่ CPU จะต้องทำจริง ๆ เช่น การเปิดปิดวงจรตำแหน่งนั้นนี้ เพื่อให้ CPU ทำงานได้อย่างถูกต้อง

Microcode ทำงานอย่างไร ?

การทำงานของมัน ถ้าให้เล่าทั้งหมดมันจะลึกเกินไป ใครอยากรู้ไปเรียนในวิชา Computer Architecture เอาละกัน แต่ขั้นตอนการทำงานง่าย ๆ คือ Source Code เราจะถูกแปลงให้เป็น Machine Code เตรียมไว้ก่อน

เมื่อเราเปิดโปรแกรมขึ้นมา มันจะถูกเรียกจาก Secondary Storage ไปที่ Primary Storage แล้วค่อยโดน CPU สั่ง Fetch เข้าไปทีละคำสั่งไปเรื่อย ๆ เมื่อคำสั่งมาถึง CPU แล้ว มันจะต้องโดน Decode หรือขั้นตอนที่ CPU มันจะอ่านว่า มันจะต้องทำอะไรบ้าง

เช่น CPU Fetch คำสั่งขึ้นมา อ่านแล้วปรากฏว่า มันคือ คำสั่ง XADD (Exchange and Add) มันจะไปเรียกหาอ่าน Microcode ภายใน ROM หรือ EEPROM ว่า เห้ย ๆ XADD ต้องทำอะไรบ้างวะ ?

XADD Op
-------------
TEMP := SRC + DEST;
SRC := DEST;
DEST := TEMP;

พอเปิดเจอ มันก็จะรู้ว่า มันมี 3 ขั้นตอนนะ แล้วมันถึงจะเริ่มรันทีละขั้นตอนตามที่ Microcode ได้กำหนดไว้ หากเราสมมุติว่า ทุกคำสั่งภายใน CPU ตัวนี้ใช้ 1 Clock Cycle ต่อคำสั่ง แปลว่า การทำ XADD ใน CPU ตัวนี้ควรจะใช้อย่างน้อย 3 Clock Cycle นั่นเอง

ทำไมเราต้องใช้ Microcode ?

อ่านมาถึงตรงนี้ อาจจะสงสัยว่า อ้าว ถ้าเราบอกว่า XADD บน CISC ต้องใช้อย่างน้อย 3 Clock Cycle ในการทำงาน งั้น RISC ที่ทุกคำสั่งใช้ 1 Clock Cycle ไม่เร็วกว่าเหรอ คำตอบคือ ไม่เสมอไปนะ และการออกแบบ CPU เป็น RISC มันมีข้อเสียอยู่

ข้อดีที่สำคัญของ การใช้ Microcode บน CISC คือ การที่ผู้พัฒนา CPU สามารถสร้างคำสั่งภายใน Machine Code ได้มากขึ้น โดยที่ไม่ต้องมานั่งเขียนแผงวงจรใหม่ เขาสามารถอัพเดทผ่านการเขียนทับลงไปใน EEPROM ได้เลย ลดความซับซ้อนในการทำงาน และลดต้นทุนได้มหาศาล แต่แลกมากกับการทำงานที่ซับซ้อนกว่ามาก ๆ และมี Overhead ในการทำงานเพิ่มขึ้นอีก อันนี้ก็อยู่ที่การออกแบบ CPU แต่ละตัวละว่า เขาจะ Overcome ปัญหานี้ได้อย่างไรบ้าง

ทำไมมันอาจจะเป็นสาเหตุที่ทำให้ Intel CPU Gen 13 และ 14 มีปัญหา

หลังจากเกิดเรื่องสักพัก Intel ออกมาประกาศว่า เขาพบสาเหตุของปัญหาในครั้งนี้แล้ว คือ Microcode ที่อยู่ใน CPU มันมีบัค ทำงานผิดพลาด ทำให้มันดึงไฟมากกว่าที่ควรจะเป็น อยู่ในระดับที่อันตราย ทำให้เมื่อไฟมากเกินไป ทำให้ CPU สูญเสียเสถียรภาพในการทำงาน จนไปถึงการล้มเหลวของระบบในกรณีที่แย่ที่สุด สิ่งที่แย่กว่านั้นคือ ไฟที่ว่าเกิน มันเกินกว่าขีดจำกัดที่วงจรภายใน CPU จะรับไหว ทำให้ วงจรเกิดความเสียหายได้เลยละ

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

สรุป

ณ ตอนที่เขียนนี้ Intel ออกมาประกาศแล้วว่า จะออก Microcode Update ออกมาแก้ไขเรื่องนี้ โดยการแก้ไข Microcode ที่มีปัญหาให้เรียกการจ่ายไฟระดับที่ถูกต้องเป็นปกติ ไม่เป็นอันตรายอีก ทำให้เราเป็นห่วงอยู่ 2 ประเด็นใหญ่ ๆ ด้วยกันคือ ถ้าเราปรับลดไฟลง Performance มันจะต่ำลงกว่านี้หรือไม่ เหมือนกับเวลาเราจะ Overclock เราก็ต้องเพิ่มไฟเลี้ยง ดังนั้น หากเราลดไฟเลี้ยงลง ก็อาจจะส่งผลต่อ Performance ด้วย (เรื่องนี้ Intel ยืนยันว่า ไม่ส่งผลแบบนั้นแน่นอน ก็รอมันออกมา แล้วดูผล Benchmark ก่อนละกัน) และอีกปัญหาคือ สำหรับผู้ที่ซื้อไปแล้ว และ วงจรภายใน CPU มันแตกไปเรียบร้อยแล้ว จะทำยังไงต่อ ถ้ารับเคลม ถามว่า แล้วจะแยกยังไงว่า คนนี้แตกเพราะความผิดพลาดของ Intel เอง และอันไหนแตกที่เอาไป Overclock จนพัง

Read Next...

Trust ความเชื่อมั่น แต่ทำไมวงการ Cyber Security ถึงมูฟออนไป Zero-Trust กัน

Trust ความเชื่อมั่น แต่ทำไมวงการ Cyber Security ถึงมูฟออนไป Zero-Trust กัน

คำว่า Zero-Trust น่าจะเป็นคำที่น่าจะเคยผ่านหูผ่านตามาไม่มากก็น้อย หลายคนบอกว่า มันเป็นทางออกสำหรับการบริหาร และจัดการ IT Resource สำหรับการทำงานในปัจจุบันเลยก็ว่าได้ วันนี้เราจะมาเล่าให้อ่านกันว่า มันคืออะไร และ ทำไมหลาย ๆ คนคิดว่า มันเป็นเส้นทางที่ดีที่เราจะมูฟออนกันไปทางนั้น...

แปลงเครื่องคอมเก่าให้กลายเป็น NAS

แปลงเครื่องคอมเก่าให้กลายเป็น NAS

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

รีวิว Ugreen Nexode Pro Charger ที่เบา กระทัดรัดที่สุด

รีวิว Ugreen Nexode Pro Charger ที่เบา กระทัดรัดที่สุด

เมื่อปีก่อน เรารีวิว Adapter 100W จาก UGreen ที่เคยคิดว่ามันเล็กกระทัดรัด น้ำหนักเบา พกพาง่ายที่สุดไปแล้ว ผ่านมาปีนึง เรามาเจออีกตัวที่มันดียิ่งกว่าจากฝั่ง Ugreen เช่นเดียวกันในซีรีย์ Nexode Pro วันนี้เรากดมาใช้เอง 2 ตัวคือขนาด 65W และ 100W จะเป็นอย่างไร อ่านได้ในบทความนี้เลย...

Tor Network ทำงานอย่างไร ทำไมถึงตามยากนัก

Tor Network ทำงานอย่างไร ทำไมถึงตามยากนัก

ย้อนกลับไปเมื่อหลายปีก่อนนานมาก ๆ แล้ว ตำรวจไทยได้จับกุมเจ้าของเว็บ AlphaBay ขายของผิดกฏหมายรายใหญ่ ซึ่งเว็บนั้นมันอยู่ใน Dark Web ที่จำเป็นต้องเข้าถึงผ่าน Tor Network วันนี้เราจะมาเล่าให้อ่านกันว่า มันทำงานอย่างไร และทำไมการตามตัวในนั้นถึงเป็นเรื่องยากกัน...