Technology

Asymmetric multiprocessing ความลับการประหยัดพลังงานของ Apple Silicon

By Arnon Puitrakul - 27 กุมภาพันธ์ 2023

Asymmetric multiprocessing ความลับการประหยัดพลังงานของ Apple Silicon

ช่วง 2-3 ปีที่ผ่านมา Apple บอกว่า จะ Move on ตัวเองจาก Intel CPU แล้วไฟซบ CPU ที่ทำขึ้นมาเองแทน และจากที่เราเห็นกันมา เรารู้เลยว่า Apple Silicon คือ SoC ที่กินไฟได้ต่ำแบบ ต่ำเตี้ยมาก ๆ เมื่อเราเข้าไปดูที่ลักษณะการออกแบบ CPU Core เราจะเห็นได้เลยว่า เขาออกแบบมาให้มี CPU Core อยู่ทั้งหมด 2 แบบด้วยกัน คือ Performance Core และ Efficiency Core เราเรียกว่า Heterogeneous computing ที่เป็นเบื้องหลังที่ทำให้มันประหยัดไฟ และ มีประสิทธิภาพในการทำงานที่สูงได้

Asymmetric multiprocessing คืออะไร ?

Asymmetric vs Symmetric Multiprocessing

Asymmetric multiprocessing มันคือการใช้งาน หน่วยประมวลผล หรือ Core บนหน่วยประมวลผลมากกว่า 1 ประเภทด้วยกัน ดังนั้น จริง ๆ ถ้าเราใช้งาน CPU ร่วมกับ GPU เราจะเรียกว่า Heterogeneous computing ก็ได้แล้วนะ แต่วันนี้เราจะพูดถึงในส่วนของ CPU เท่านั้น

ยกตัวอย่างใน Apple Silicon ที่มันจะมีการแบ่งออกมาเป็น Performance และ Efficiency Core ในทั้งสองประเภทนี้ ก็จะมีลักษณะ การออกแบบที่แตกต่างกัน เหตุผลหลัก ๆ ของการออกแบบลักษณะนี้บน Apple Silcon คือ การประหยัดพลังงาน และ ประสิทธิภาพในการทำงาน ที่สูงขึ้น

ต่างจาก Symmetric multiprocessing ที่เราใช้งานกันมาเมื่อก่อน ที่เราจะใช้หน่วยประมวลผล หรือ Core บนหน่วยประมวลผลแบบเดียวกันในการทำงานร่วมกัน ถ้าเรานึกภาพไม่ออก ให้เราดูที่พวก CPU ของฝั่ง AMD หรือ Intel Generation ก่อน ๆ ก็ได้ อาจจะมี 8 Cores หรืออะไรพวกนั้น ซึ่งแต่ละ Core บน CPU จะมีลักษณะที่เหมือนกันหมด ไม่ได้แบ่งว่าชั้นเป็น Core อะไร ทำหน้าที่อะไรเป็นพิเศษ

Asymmetric multiprocessing ไม่ใช่เรื่องใหม่บน Apple Silicon

หลาย ๆ คนได้ยินเรื่องการใช้งาน Asymmetric multiprocessing น่าจะช่วงที่ Apple Silicon เปิดตัวครั้งแรกในรุ่น M1 แต่จริง ๆ แล้ว ลักษณะสถาปัตยกรรมการออกแบบลักษณะนี้ Apple ไม่ได้เป็นคนแรกที่เอาเข้ามาใช้งาน

การออกแบบลักษณะนี้จริง ๆ มาจากสถาปัตยกรรมที่ ARM ออกแบบมาใช้ก่อนหน้านี้ คือ big.LITTLE ที่อยู่ในพวก SoC ของอุปกรณ์อย่างโทรศัพท์มือถือ และ Tablet มานานมาก ๆ แล้ว น่าจะมีเกือบ ๆ 10 ปีได้แล้วแหละ

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

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

ตอนนั้นที่ออกมา ก็เลยมีการจับคู่เอา Core ARM Cortex ที่ Version ต่ำกว่า มักจะมีความสามารถ และ พลังในการประมวลผลที่ต่ำกว่า แต่บริโภคพลังงานน้อยกว่ามาใส่เป็น Core ขนาดเล็ก เรียกว่า Little และ Cortex ที่ Version สูงกว่า มาพร้อมกับความสามารถ และ พลังในการประมวลผลที่สูงกว่าแลกมาด้วยการบริโภคพลังงานที่สูงกว่าขึ้นมาใส่เป็น Big ทำให้มันตามชื่อ ARM big.LITTLE นั่นเอง

Performance Core ต่างจาก Efficiency Core ยังไง ?

เรารู้ละว่า มันมี Core ใหญ่ Core เล็กที่มีปริมาณการบริโภคพลังงานที่แตกต่างกัน แล้วถามว่า ด้านในละ มันมีอะไรที่แตกต่างกัน ทำให้มันมีการ บริโภคพลังงาน และ ประสิทธิภาพที่แตกต่างกัน

ในตัว CPU Core เปรียบง่าย ๆ เหมือนกับโรงงานนึงเลย มันจะมีคนทำงาน เราเรียกว่า Execution Unit ซึ่งแต่ละคน ก็จะถนัดทำหน้าที่แตกต่างกันไป เช่น การคำนวณพวกทศนิยมต่าง ๆ ก็จะเป็นหน้าที่ของ Floating Point Unit (FFU) หรือกลุ่มที่ทำหน้าที่คำนวณพวก การดำเนินการทางคณิตศาสตร์และตรรกศาสตร์ เราจะเรียกว่า Arithmetics Logic Unit (ALU) ในสมัยก่อน ใน CPU Core ก็จะมีแค่ Execution Unit อย่างละ 1 ตัวเท่านั้น จนในปัจจุบัน เรามีความสามารถในการสเกลออกมา เพื่อให้มีประเภทละหลาย ๆ ตัวได้แล้ว

ไส้ในของพวกนี้ จริง ๆ มันก็คือ วงจรทางไฟฟ้านั่นแหละ ทำให้การที่เราจะใส่พวก Execution Unit เข้าไป จริง ๆ แล้วมันก็คือ การปริ้นพวกวงจรใส่เข้าไปตรง ๆ บน CPU เลย นั่นทำให้เราไม่สามารถมาเติมพวกนี้ทีหลังได้นะ ตัวอย่างด้านบน เอาแบบ Basic สุด ๆ สำหรับคนที่เรียนคอมพิวเตอร์คือ Full-Adder สำหรับบวกเลข

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

อีกสาเหตุที่ทำให้ CPU บริโภคพลังงานเพิ่มมากขึ้นนั่นคือ การเพิ่ม Clock Speed หรือสัญญาณนาฬิกา ค่านี้เป็นการบอกว่า ใน 1 วินาที CPU และ อุปกรณ์ต่าง ๆ ที่พึ่งพาสัญญาณนาฬิกาจะทำงานกี่ครั้งต่อวินาที ยิ่งเยอะ ก็ยิ่งเร็ว และ ยิ่งบริโภคพลังงานมากขึ้นเรื่อย ๆ

ยกตัวอย่างเช่น CPU ของ M1 Pro และ Max เอง ตัว Efficiency Core มันจะวิ่งสูงสุดได้แค่ 2.064 GHz แต่กลับกัน Performance Core ที่เร็วกว่า วิ่งไปได้ไกลถึง 3.220 GHz แถมยังมีพวก Execution Unit ที่เยอะกว่า กว้างกว่า ทำให้มันกินไฟเยอะกว่ามาก แต่ทดแทนงานเบา ๆ ด้วย Efficiency Core ที่กินไฟน้อยกว่าไป ทำให้มันบริโภคพลังงานต่ำมาก ๆ

CPU เลือกงานให้ไปรันใน Core แบบไหนยังไง ?

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

ทำไม M1 ใช้งานแล้วรู้สึกลื่นกว่า ? เพราะ QoS นั่นเอง
ทำไม M1 มันโหลดเร็วมาก ๆ ทำไมกดปุ๊ปมาปั๊บไม่เหมือนกับเครื่องก่อนหน้าของ Apple เองเลย ส่วนนึงเป็นเพราะ QoS เลย วันนี้เราจะมาลองดูกันว่า มันเข้ามาช่วยอะไร ทำไมมันถึงลื่นได้ขนาดนั้น

แต่ความยากของกลุ่มที่ใช้ Core แตกต่างกันคือ แล้วงานแบบไหนมันจะใช้ Core แบบไหนกันละ เท่าที่เราลองดูใน Documentation ของ Apple เอง มันจะมีการเซ็ตค่า QoS ในการทำงานได้ด้วย เราเคยเขียนเล่าเรื่องนี้ไว้แล้ว ลองกลับไปอ่านกันได้

M1 Pro First Impressions: 2 Core management and CPU performance
The P cores in the M1 Pro/Max CPU are managed in two groups of four, sparing load on the second group, and distributing it unevenly within each group. Its two E cores outperform the four in the M1 …

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

สรุป

การออกแบบ CPU หรือ SoC ในสมัยใหม่ รอบ 4-5 ปีนี้ เริ่มออกแบบในลักษณะของ Heterogeneous CPU Core เพิ่มมากขึ้นเรื่อย ๆ จากเดิมแรกเริ่มอยู่ในกลุ่มของพวกโทรศัพท์อย่าง ARM big.LITTLE จน Apple เปิด Apple Silicon ก็ถือว่าเป็นครั้งแรก ๆ ที่สถาปัตยกรรมแบบนี้เข้ามาอยู่ในเครื่องคอมพิวเตอร์ทั่ว ๆ ไป และ ไม่นานฝั่ง Intel ก็สนองตามออกมาอีกเหมือนกัน ก็ต้องรอดูนะว่า แนวทางต่อจากนี้จะไปทางไหน ถือว่าเป็นเรื่องน่าสนใจมาก ๆ ในวงการการออกแบบ CPU เลย

Read Next...

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

ลองกันอีกสักตั้ง iPad Pro ใช้แทนคอมพิวเตอร์ได้มั้ย

เมื่อ 3 ปีก่อน เรามีความพยายามที่จะใช้ iPad Pro เครื่องเดิมแทนคอมพิวเตอร์ ไหน ๆ ตอนนี้เราเปลี่ยน iPad Pro ใหม่แล้ว เราจะมาลองกันอีกสักตั้งว่า เมื่อเวลาผ่านไป มันใช้งานจริงได้มากขึ้นหรือไม่...

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ทำไม iPad ยังเป็น iPad ไม่เป็น Mac

ตั้งแต่ iPad Pro M4 และ iPad Air M2 เปิดตัวและเริ่มจำหน่ายออกไป Reviewer หลายคนเริ่มมองเห็นแล้วว่า ปัญหาจริง ๆ ของ iPad ในรอบหลายปีที่ผ่านมา ไม่ได้เกิดจาก iPad แต่เกิดจาก iPadOS บางเจ้าบอกว่า อยากให้เอา macOS มาใส่ด้วยซ้ำ มันยังไงกันนะ วันนี้เราจะมาเล่าประเด็นและความเห็นจากเราให้ให้อ่านกัน...

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

Microinverter ต่างจาก String Inverter อย่างไร เลือกแบบไหนดีกว่ากัน

หลังจากเราเขียนเรื่อง Solar Cell ไปมีคนถามเข้ามาอยู่ว่า ถ้าจะเลือกติดตั้ง Solar ระหว่างการใช้ระบบ String Inverter กับ Microinverter เราจะเลือกตัวไหนดี วันนี้เราจะมาเล่าเปรียบเทียบให้อ่านกันว่าแบบไหน น่าจะเหมาะกับใคร...

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษา Programming สมัยใหม่ ถึงไม่มี Pointer Concept

ทำไมภาษาบางตัวอย่างภาษา C มี Pointer ในขณะที่ภาษาใหม่ ๆ หลายตัว ไม่มี ทำไมการ Implement Concept หรือเครื่องมือเหล่านี้ถึงไม่ได้รับความนิยม วันนี้เราจะมาเล่าข้อดีข้อเสียของ Feature นี้ในภาษา Programming กัน...