AMX, โคโปรเซสเซอร์ที่ซ่อนอยู่ของ Apple M1
(medium.com)Apple Matrix Coprocessor
-
โปรเซสเซอร์เฉพาะทางสำหรับเมทริกซ์ที่ไม่เคยถูกพูดถึงเลยตอนเปิดตัว M1
-
เมทริกซ์ถูกใช้อย่างมากในงานประมวลผลภาพ, แมชชีนเลิร์นนิง, การรู้จำเสียง/ลายมือ, การจดจำใบหน้า, การบีบอัด, การประมวลผลสื่อเสียง/วิดีโอ เป็นต้น
-
แบบนี้ไม่ใช่ว่า Neural Engine เป็นคนจัดการอยู่แล้วหรือ? แล้วมันต่างจาก Neural Engine ยังไง?
→ GPU หรือ Neural Engine เป็น Accelerator (ตัวเร่ง)
→ การที่ CPU ต้องมาคอยเติมพื้นที่หน่วยความจำให้ตัวเร่งเหล่านี้ใช้งานนั้นไม่มีประสิทธิภาพ
→ ในจังหวะนี้ มีการคอยดูคำสั่งอยู่ (spy) แล้วให้ Coprocessor จัดการแทน
→ หากจะใช้งานสิ่งนี้ จำเป็นต้องกำหนดชุดคำสั่งแยกต่างหาก
→ ARM เคยปฏิเสธการใส่คำสั่งแบบคัสตอมมาโดยตลอด แต่ตั้งแต่ปี 2019 ก็เริ่มมีส่วนขยายที่ทำให้ทำได้
→ นั่นน่าจะเป็นเหตุผลที่คำสั่ง AMX ไม่ปรากฏในเอกสารทางการ
- แล้วมันต่างจาก SIMD Vector Engine ที่อยู่ใน ARM ยังไง?
→ SIMD : Single Instruction Multiple Data
→ เป็นวิธีที่ให้ประสิทธิภาพสูงเมื่อรัน Operation เดียวกันกับข้อมูลหลายชุด
→ เกี่ยวข้องกับการคำนวณเมทริกซ์
→ แต่ SIMD เป็นส่วนที่ฝังอยู่ใน CPU เหมือน ALU, FPU ขณะที่ coprocessor เป็นหน่วยแยกภายนอก
→ ในอดีต Intel 8087 (FPU) มีจำนวนทรานซิสเตอร์มากกว่า 8086 เสียอีก จึงยากที่จะใส่รวมกันในยุคนั้น ต่อมาเมื่อเทคโนโลยีพัฒนา จำนวนทรานซิสเตอร์เพิ่มขึ้นและมีการฝัง FPU ไว้ใน CPU จึงทำให้รูปแบบนี้หายไป
- ยังไม่ชัดเจนว่าทำไม AMX ถึงไม่ได้อยู่ภายในคอร์ Firestorm
→ อาจเป็นเพราะการแยกออกมาต่างหากทำให้ทำงานแบบขนานกับ CPU ได้ง่ายกว่า
→ และในมุมของ Apple อาจต้องการให้สิ่งที่ไม่ใช่มาตรฐาน ARM อยู่ภายนอก
- แล้วทำไม AMX ถึงถูกซ่อนไว้?
→ ถ้า AMX ไม่มีอยู่ในเอกสารทางการ แล้วรู้ได้ยังไงว่ามันมี?
→ Dougal Johnson ค้นพบมันผ่านการทำ reverse engineering
→ Apple มีฟีเจอร์หลากหลายผ่าน Accelerate ซึ่งเป็นเฟรมเวิร์กสำหรับการคำนวณเมทริกซ์
⇨ vImage : การประมวลผลภาพระดับสูง, การแปลงฟอร์แมต และการปรับแต่งภาพ
⇨ BLAS : พีชคณิตเชิงเส้น (การคำนวณเมทริกซ์และเวกเตอร์)
⇨ BNNS : โครงข่ายประสาทและการเรียนรู้
⇨ vDSP : การประมวลผลสัญญาณดิจิทัล เช่น ฟูเรียร์ทรานส์ฟอร์ม และการคำนวณทางคณิตศาสตร์สำหรับภาพหรือเสียง
⇨ LAPACK : ฟังก์ชันพีชคณิตเชิงเส้นระดับสูง, สมการเชิงเส้น เป็นต้น
→ ไลบรารี Accelerate นี้ใช้ AMX เพื่อเร่งการคำนวณ
→ หากเปิดเผยตัวคำสั่งโดยตรง ก็อาจทำให้อีโคซิสเต็ม ARM แตกเป็นเสี่ยง ๆ (ซึ่งทั้ง ARM และ Apple ต่างก็ไม่ต้องการ)
→ Apple เลือกไม่เปิดเผยสิ่งนี้และเปิดให้ใช้ผ่านเฟรมเวิร์กแทน จึงให้ประสิทธิภาพสูงได้พร้อมกับสามารถแก้ไขชุดคำสั่งได้ทุกเมื่อ
⇨ สิ่งนี้เป็นไปได้เพราะ Apple ควบคุมทั้งฮาร์ดแวร์และซอฟต์แวร์พร้อมกัน
⇨ นักพัฒนาเพียงทำงานผ่าน Accelerate ก็จะได้รับประโยชน์จากการปรับปรุงในอนาคตด้วย
- ข้อดีของ Apple Matrix Coprocessor คืออะไร?
→ จากการเปรียบเทียบของ Nod Labs กับ NEON ซึ่งเป็นชุดคำสั่ง SIMD มาตรฐานของ ARMv8.6 พบว่า AMX เร็วกว่าเกิน 2 เท่า
→ ไม่ได้หมายความว่า AMX ดีกว่าในทุกอย่าง แต่อย่างน้อยในงานแมชชีนเลิร์นนิงหรือคอมพิวเตอร์สมรรถนะสูง (HPC) นั้น AMX มีความได้เปรียบ
2 ความคิดเห็น
OpenCL หายไปแล้ว และนอกจากการเร่งความเร็วด้วย Metal แล้ว แม้จะไม่ได้เน้น Accelerate มากนัก
แต่ก็เพิ่มไลบรารีขึ้นทุกปีอยู่แล้ว พอรู้ว่ามีโคโปรเซสเซอร์เฉพาะทางสำหรับการเร่งความเร็วด้วยฮาร์ดแวร์เข้ามาด้วยก็น่าทึ่งครับ
นี่คือบทความติดตามจากวิศวกรคนเดียวกับที่เขียนสองบทความด้านล่างนี้ แนะนำให้อ่านควบคู่กันไปครับ
→ ฟังคำอธิบายทาง YouTube : https://youtu.be/71LlixEBK0o
→ ฟังคำอธิบายทาง YouTube : https://youtu.be/F5sIQZvlJc8