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...

Apple M4 รุ่นไหนเหมาะกับใคร

Apple M4 รุ่นไหนเหมาะกับใคร

หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...

Cloudflare Access ของดีขนาดนี้ ฟรีได้ไงวะ

Cloudflare Access ของดีขนาดนี้ ฟรีได้ไงวะ

จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...

Mainframe Computer คืออะไร ? มันยังมีชีวิตอยู่ใช่มั้ย ?

Mainframe Computer คืออะไร ? มันยังมีชีวิตอยู่ใช่มั้ย ?

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

Infrastructure as Code คืออะไร ทำไมถึงสำคัญมากในปัจจุบัน

Infrastructure as Code คืออะไร ทำไมถึงสำคัญมากในปัจจุบัน

เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...