M1 ส่งสัญญาณการผงาดขึ้นของ RISC-V
(erik-engheim.medium.com)"M1 จะช่วยส่งเสริม RISC-V ในฐานะจุดเริ่มต้นของการเปลี่ยนกระบวนทัศน์ แต่คงไม่ใช่ในแบบที่คุณคิด"
บทความติดตามจากวิศวกรผู้เขียน "ทำไมชิป M1 ถึงเร็วขนาดนั้น?" โดยคาดการณ์อนาคตของ RISC-V จากมุมมองที่น่าสนใจ
ปัจจัยด้านประสิทธิภาพของ M1 คือ
-
มีตัวถอดรหัสจำนวนมากและการประมวลผลแบบไม่เรียงลำดับ OoO
-
มีชิปเฉพาะทางหลายตัว เช่น GPU, NPU, DSP
บทความนี้ลงรายละเอียดเพิ่มเติมเกี่ยวกับข้อ 2 คือการประมวลผลแบบ Heterogeneous (ต่างสถาปัตยกรรม)
ชิปเฉพาะทางเหล่านี้เรียกได้หลายแบบ แต่ในบทความนี้จะเรียกรวมว่า Coprocessor (โปรเซสเซอร์ร่วม) หรืออาจเรียกว่า Accelerator ก็ได้
-
Coprocessor ไม่ใช่เทรนด์ใหม่โดยสิ้นเชิง
-
Amiga 1000 ที่ออกในปี 1985 ก็มีโปรเซสเซอร์ร่วมสำหรับงานเสียง/กราฟิก และ GPU เองก็เป็นโปรเซสเซอร์ร่วมเช่นกัน
TPU (Tensor Processing Unit) ของ Google ก็เป็นโปรเซสเซอร์ร่วมที่ปรับให้เหมาะกับงานแมชชีนเลิร์นนิงเช่นกัน
[ Coprocessor คืออะไร ]
-
ต่างจาก CPU ตรงที่มันอยู่ลำพังไม่ได้ แค่ใส่โปรเซสเซอร์ร่วมอย่างเดียวก็ยังไม่กลายเป็นคอมพิวเตอร์ เป็นเพียงโปรเซสเซอร์วัตถุประสงค์เฉพาะที่เก่งงานบางอย่าง
-
ตัวอย่างยุคแรกคือ 8087 Floating Point Unit (FPU) ของ Intel โดย 8086 ของ Intel คำนวณจำนวนเต็มได้ดี แต่คำนวณเลขทศนิยมแบบลอยตัวได้ไม่ดีนัก
-
แม้จะอีมูเลตการคำนวณเลขทศนิยมด้วยการคำนวณจำนวนเต็มได้ แต่ก็ช้ามาก คล้ายกับไมโครโปรเซสเซอร์ยุคแรกที่ทำได้แค่บวก/ลบ แต่คูณไม่ได้ จึงต้องคูณด้วยการบวกซ้ำหลายครั้ง
-
กล่าวคือ "การคำนวณคณิตศาสตร์ที่ซับซ้อนสามารถประมวลผลได้ด้วยการทำสิ่งง่าย ๆ ซ้ำ ๆ"
-
สิ่งที่โปรเซสเซอร์ร่วมทุกตัวทำก็คล้ายกัน CPU เองก็ทำงานที่โปรเซสเซอร์ร่วมทำได้ เพียงแค่ต้องทำงานพื้นฐานซ้ำไปมา
-
เหตุผลที่ช่วงแรกต้องมี GPU ก็เพราะการทำคำนวณแบบเดียวกันซ้ำกับโพลิกอน/พิกเซลนับล้าน ๆ จุดนั้นใช้เวลามากบน CPU
[ ข้อมูลเข้า/ออกจากโปรเซสเซอร์ร่วมทำอย่างไร ]
-
โปรเซสเซอร์ร่วมทั้งหมด ไม่ว่าจะเป็นเมาส์/คีย์บอร์ด/หน้าจอ รวมถึง GPU/FPU/Neural Engine ล้วนทำงานในลักษณะเข้าถึงหน่วยความจำบางตำแหน่งเพื่ออ่านและเขียนข้อมูล
-
งานเหล่านี้จัดการโดย Device Driver ดังนั้นนักพัฒนาซอฟต์แวร์ทั่วไปจึงไม่ค่อยต้องยุ่ง
→ เป็นหน้าที่ของ DMA (Direct Memory Access) controller เป็นต้น
-
ในยุค DOS ที่ใช้ C/C++ สามารถเข้าถึงที่อยู่ของ video memory โดยตรงผ่าน pointer เพื่อเปลี่ยนพิกเซลได้
-
โปรเซสเซอร์ร่วมก็ทำงานในลักษณะนี้ โดย NPU, GPU, T1 ฯลฯ ต่างมีที่อยู่สำหรับสื่อสารกับตนเอง และสื่อสารแบบอะซิงโครนัสได้
-
CPU จะเรียงชุดคำสั่งทั้งหมดที่จะส่งไปยัง Neural Engine หรือ GPU ไว้ในหน่วยความจำ แล้วบอกที่อยู่นั้นให้ Neural Engine/GPU ทราบ
-
CPU ไม่จำเป็นต้องรอขณะโปรเซสเซอร์ร่วมประมวลผลคำสั่งและข้อมูลเหล่านั้น ดังนั้นจึงต้องมี interrupt
[ interrupt ทำงานอย่างไร ]
-
การ์ดกราฟิก/การ์ดเครือข่ายจะเสียบอยู่ใน PC และมี interrupt line ที่กำหนดไว้
-
มันทำงานคล้ายเส้นสัญญาณที่ต่อเข้ากับ CPU โดยตรง เมื่อถูกกระตุ้น CPU จะวางงานอื่นแล้วไปจัดการ interrupt
-
ในทางปฏิบัติ CPU จะบันทึกตำแหน่งปัจจุบันและรีจิสเตอร์ลงหน่วยความจำเพื่อกลับมาทำงานต่อภายหลังได้
-
จากนั้นจะไปดูใน interrupt table เพื่อหางานที่ต้องทำ โดยในตารางมีที่อยู่ของโปรแกรมที่จะรันเมื่อเกิด interrupt trigger
-
สำหรับโปรแกรมเมอร์ สิ่งเหล่านี้มองไม่เห็นและจะดูคล้าย callback function ที่ลงทะเบียนกับอีเวนต์บางอย่าง โดยมี device driver จัดการส่วนล่างนี้
-
ที่อธิบายเรื่องนี้ก็เพราะเวลาจะใช้โปรเซสเซอร์ร่วม เราควรรู้ว่าเกิดอะไรขึ้นบ้าง เพื่อจะได้เข้าใจว่าการสื่อสารจริง ๆ ต้องมีอะไรตามมาบ้าง
-
เมื่อใช้ interrupt งานหลายอย่างจึงเกิดขึ้นแบบขนานได้
→ ระหว่างที่ CPU ถูกเมาส์ขัดจังหวะ แอปพลิเคชันอาจกำลังดึงภาพมาจากการ์ดเครือข่ายอยู่ พอเมาส์ถูกเลื่อน CPU ก็รับพิกัดใหม่แล้วส่งไปยัง GPU เพื่อวาดเคอร์เซอร์เมาส์ในตำแหน่งใหม่ ขณะ GPU วาดเคอร์เซอร์ CPU ก็เริ่มประมวลผลภาพที่ได้จากเครือข่ายต่อ
- ด้วย interrupt แบบนี้ เราสามารถส่งงานแมชชีนเลิร์นนิงที่ซับซ้อนไปยัง Neural Engine ของ M1 เพื่อระบุใบหน้าจาก WebCam ได้ เนื่องจาก Neural Engine เป็นผู้ประมวลผลข้อมูลภาพ คอมพิวเตอร์และ CPU จึงยังทำงานอื่นและตอบสนองผู้ใช้ได้พร้อมกัน
[ The Rise of RISC-V ]
-
ในปี 2010 ห้องปฏิบัติการ parallel computing ของ UC Berkeley เริ่มพัฒนาไปในทิศทางที่ใช้โปรเซสเซอร์ร่วมมากขึ้น
-
พวกเขามองเห็นจุดจบของกฎของมัวร์จากข้อเท็จจริงที่ว่า การรีดประสิทธิภาพจาก CPU core เอนกประสงค์ต่อไปนั้นไม่ง่ายอีกแล้ว
→ จึงจำเป็นต้องมีโปรเซสเซอร์ร่วมซึ่งเป็นฮาร์ดแวร์เฉพาะทาง
- ความถี่สัญญาณนาฬิกาเพิ่มขึ้นได้ยากเพราะข้อจำกัดด้านความร้อนและการใช้พลังงาน
→ วิธีหนึ่งคือใช้ตัวถอดรหัสจำนวนมากและการประมวลผลแบบไม่เรียงลำดับ OoO
→ ดูบทความ "ทำไมชิป M1 ถึงเร็วขนาดนั้น?" https://th.news.hada.io/topic?id=3315
[ จะใช้ transistor budget กับ CPU core หรือกับ Coprocessor ]
-
การเพิ่มเป็น 128 คอร์ไม่ได้ทำให้ระบบเดสก์ท็อปมีประสิทธิภาพขึ้นเสมอไป
-
ช่วงต้นยุค 80 ถ้ามี transistor budget อยู่ 20,000 ตัว ก็อาจใช้ 15,000 ตัวสร้าง CPU ได้
-
หาก CPU ต้องทำงาน 100 แบบ และถ้าจะสร้างโปรเซสเซอร์ร่วมสำหรับงานหนึ่งงานโดยใช้ 1,000 ทรานซิสเตอร์ ถ้าสร้างโปรเซสเซอร์ร่วมสำหรับทุกงานก็ต้องใช้ 100,000 ทรานซิสเตอร์ ซึ่งเกินงบประมาณไปมาก
[ เมื่อมีทรานซิสเตอร์มากขึ้น กลยุทธ์ก็เปลี่ยน ]
-
งานออกแบบยุคแรกต้องเน้นการประมวลผลเอนกประสงค์ แต่ปัจจุบันมีทรานซิสเตอร์จำนวนมหาศาลจนไม่รู้จะเอาไปทำอะไรทั้งหมด
-
เพราะเช่นนั้น การออกแบบโปรเซสเซอร์ร่วมจึงกลายเป็นเรื่องใหญ่ และมีงานวิจัยจำนวนมากเพื่อสร้างโปรเซสเซอร์ร่วมรูปแบบใหม่ ๆ
-
งานวิจัยเหล่านี้มักต้องเริ่มปั้นกันใหม่จากระดับตัวเร่งความเร็วที่ยังเรียบง่ายมาก
-
ต่างจาก CPU ตรงที่มันไม่ได้อ่านและประมวลผลทุกขั้นของคำสั่ง จึงไม่รู้ว่าจะเข้าถึงหรือจัดระเบียบหน่วยความจำอย่างไร
-
ทางแก้คือใช้ CPU แบบง่ายเป็นตัวควบคุม
-
กล่าวคือ โปรเซสเซอร์ร่วมทั้งชุดจะถูกสร้างให้เป็นวงจรเร่งความเร็วเฉพาะทางที่ควบคุมโดย CPU แบบง่าย เพื่อเร่งงานเฉพาะ
→ เช่นชิปอย่าง Neural Engine/Tensor Processing Unit สามารถจัดการรีจิสเตอร์ขนาดใหญ่ที่เก็บเมทริกซ์ได้
[ RISC-V ถูกออกแบบมาเฉพาะเพื่อควบคุม Accelerator ]
-
นี่คือจุดประสงค์ในการออกแบบ RISC-V
-
มันมีชุดคำสั่งพื้นฐานขั้นต่ำ 40~50 คำสั่งสำหรับงาน CPU ทั่วไป
→ CPU แบบ x86 มีชุดคำสั่งราว 1,500 คำสั่ง
-
แทนที่จะมีชุดคำสั่งคงที่ขนาดใหญ่ RISC-V ถูกออกแบบโดยยึดแนวคิดเรื่องส่วนขยายเป็นศูนย์กลาง
-
เนื่องจากโปรเซสเซอร์ร่วมแต่ละตัวต่างกัน ดังนั้น RISC-V จึงสามารถจัดองค์ประกอบให้มีทั้งชุดคำสั่งแกนกลางและชุดคำสั่งส่วนขยายที่โปรเซสเซอร์ร่วมนั้นต้องการได้
นี่คือสิ่งที่บทความนี้ต้องการอธิบาย
-
Apple M1 จะผลักดันให้อุตสาหกรรมทั้งหมดมุ่งไปสู่อนาคตที่โปรเซสเซอร์ร่วมครองบทบาทหลัก
-
และเพื่อสร้างโปรเซสเซอร์ร่วมเหล่านั้น "RISC-V จะเป็นชิ้นส่วนสำคัญของจิ๊กซอว์"
[ ข้อดีของการสร้าง Coprocessor ด้วย RISC-V ]
-
การสร้างชิปเป็นงานที่ซับซ้อนและมีค่าใช้จ่ายสูง
-
ตั้งแต่การสร้างเครื่องมือเพื่อตรวจสอบความถูกต้องของชิป ไปจนถึงการรันโปรแกรมทดสอบ การวินิจฉัย และเรื่องอื่น ๆ อีกมาก ล้วนต้องใช้ความพยายามอย่างมาก
-
นี่คือส่วนหนึ่งของคุณค่าที่การใช้ ARM มีในปัจจุบัน เพราะมี ecosystem ขนาดใหญ่ทำให้ตรวจสอบและทดสอบดีไซน์ได้
-
ดังนั้น การมีชุดคำสั่งของตนเองจึงไม่ใช่ความคิดที่ดีนัก
-
RISC-V มีมาตรฐานที่ทำให้หลายบริษัทสามารถสร้างเครื่องมือร่วมกันได้ เกิด ecosystem ขึ้นมาและช่วยแบ่งเบาภาระร่วมกัน
-
แล้วทำไมไม่ใช้ ARM ที่มีอยู่แล้ว? เพราะ ARM ถูกสร้างมาเป็น CPU เอนกประสงค์ จึงมีชุดคำสั่งคงที่ขนาดใหญ่
-
เนื่องจากคำขอของลูกค้าและการแข่งขันกับ RISC-V ทำให้ ARM เปิดเผยชุดคำสั่งสำหรับส่วนขยายในปี 2019 เช่นกัน
-
แต่ปัญหายังคงอยู่ตรงที่มันไม่ได้ถูกออกแบบมาเพื่อสิ่งนี้ตั้งแต่ต้น
→ toolchain ทั้งชุดของ ARM ตั้งอยู่บนสมมติฐานว่ามีการใช้งานชุดคำสั่ง ARM ขนาดใหญ่ครบถ้วน
→ แต่โปรเซสเซอร์ร่วมไม่ได้ต้องการหรือจำเป็นต้องมีชุดคำสั่งขนาดใหญ่
→ โปรเซสเซอร์ร่วมต้องการ ecosystem ของเครื่องมือที่สร้างบนแนวคิดของชุดคำสั่งพื้นฐานคงที่ขนาดเล็กพร้อมความสามารถในการขยาย
- ทำไมเรื่องนี้จึงมีประโยชน์ สามารถดูได้จากกรณีที่ Nvidia ใช้ RISC-V
→ GPU ขนาดใหญ่ต้องการ CPU เอนกประสงค์บางชนิดมาใช้เป็นตัวควบคุม
→ จึงสร้างชิปชื่อ FALCON : FAst Logic CONtroller ขึ้นมาใช้
→ ต้นทุนต่ำและมีประสิทธิภาพสูง
-
RISC-V มีชุดคำสั่งที่เล็กและเรียบง่าย จึงเหนือกว่าคู่แข่งทั้งหมดรวมถึง ARM
-
ด้วยการเลือกใช้ RISC-V Nvidia จึงทำให้ชิปมีขนาดเล็กลงและใช้พลังงานต่ำที่สุดได้
-
เมื่อใช้กลไกส่วนขยาย ก็สามารถเพิ่มเฉพาะคำสั่งที่จำเป็นต่อประเภทงานนั้น ๆ ได้
[ ARM จะกลายเป็น x86 ตัวใหม่ ]
-
น่าแดกดันที่เราอาจได้เห็นอนาคตซึ่งทั้ง Mac และ PC ขับเคลื่อนด้วย ARM
-
แต่ฮาร์ดแวร์แบบคัสตอมรอบ ๆ มันจะถูกยึดครองโดยโปรเซสเซอร์ร่วมที่ใช้ RISC-V
-
เมื่อโปรเซสเซอร์ร่วมกลายเป็นสิ่งแพร่หลาย บน SoC หนึ่งตัวจะมีชิป RISC-V มากกว่า ARM
-
อนาคตจะไม่ใช่ ARM or RISC-V แต่เป็น ARM and RISC-V
[ ARM จะเป็นผู้บัญชาการกองทัพโปรเซสเซอร์ร่วม RISC-V ]
-
โปรเซสเซอร์ ARM แบบเอนกประสงค์จะยังเป็นศูนย์กลาง ร่วมกับกองทัพโปรเซสเซอร์ร่วม RISC-V ที่รับผิดชอบกราฟิก การเข้ารหัส การบีบอัดวิดีโอ แมชชีนเลิร์นนิง และการประมวลผลสัญญาณ
-
ศาสตราจารย์ David Patterson แห่ง UC Berkeley และทีมของเขาเห็นว่าอนาคตแบบนี้กำลังมา จึงปรับ RISC-V ให้เหมาะกับมันเป็นอย่างดี
-
ฮาร์ดแวร์เฉพาะทางและไมโครคอนโทรลเลอร์ทุกประเภทต่างให้ความสนใจ RISC-V อย่างมาก และหลายพื้นที่ที่ ARM ครองอยู่ในวันนี้จะกลายเป็นของ RISC-V
[ ใช้ RISC-V เป็น CPU หลักไม่ได้หรือ? ]
-
หลายคนสงสัยว่าจะเปลี่ยนจาก ARM ไปเป็น RISC-V ทั้งหมดเลยได้หรือไม่
-
บางคนมองว่าชุดคำสั่งที่เรียบง่ายมากของ RISC-V อาจให้ประสิทธิภาพสูงแบบที่ ARM และ x86 มอบให้ไม่ได้
-
แต่จริง ๆ แล้ว RISC-V สามารถใช้เป็นเมนโปรเซสเซอร์ได้อย่างเพียงพอ และประสิทธิภาพไม่ใช่ปัญหา
→ เพียงแต่ต้องมีคนสร้าง RISC-V ประสิทธิภาพสูงแบบเดียวกับที่ ARM เคยมี
→ กล่าวคือทำได้ แต่ปัญหาอยู่ที่ momentum เพราะทั้ง macOS และ Windows รันอยู่บน ARM แล้ว
→ ในระยะสั้น Microsoft หรือ Apple คงไม่ทุ่มแรงเพื่อทำ hardware transition อีกรอบหนึ่ง
8 ความคิดเห็น
น่าสนใจดีครับ ขอบคุณสำหรับสรุปที่ดี
ต่อไปคงจะมีวันที่แม้แต่ในโรงเรียนก็สอนวิชาสถาปัตยกรรมโดยยึด arm หรือ risc-v เป็นหลัก แทน x86 หรือ amd64..
ก่อนหน้านี้เคยมีการโพสต์ที่นี่เกี่ยวกับเนื้อหาที่วิศวกรซึ่งเคยอยู่ ARM วิจารณ์ RISC-V ไว้ใช่ไหมครับ
https://th.news.hada.io/topic?id=3137
ถ้าเป็นตามเนื้อหาข้างต้น ความหลากหลายที่เพิ่มขึ้นของชิปที่เลือกใช้ RISC-V ก็คงเป็นสิ่งที่ตั้งใจไว้สินะครับ
ยิ่งน่าตื่นเต้นขึ้นเรื่อย ๆ เลยครับ
ชวนให้สงสัยว่า Intel กับ AMD จะรับมืออย่างไร
เท่าที่ทราบ จีนแทบจะทุ่มทั้งหมดให้กับ RISC-V อยู่แล้ว.. อนาคตจะเป็นอย่างไรต่อไปนี่นึกภาพไม่ออกจริง ๆ
ผมก็นึกถึงจีนเหมือนกันครับ ถ้า Huawei ที่ยังถูกสหรัฐฯ คอยสกัดอยู่ตลอดออกมานำแล้วลองทำเป็น CPU หลักดู จะออกมาเป็นยังไงนะ ฮ่า
เมื่อ Huawei ไม่สามารถใช้ได้ทั้ง ARM และ TSMC ก็อาจพูดได้ว่าการพัฒนา CPU สมรรถนะสูงเองนั้นพังไปแล้วอยู่ดี อย่างมากที่สุดก็คงพอเป็นไปได้ถ้าเป็นอุปกรณ์เครือข่ายของบริษัทเองที่ต้องการประสิทธิภาพน้อยกว่า
แต่เพราะมีบริษัทอื่นอีกมากที่ใช้ RISC-V จึงน่าจะได้เห็นผลงานจากบริษัทเหล่านี้
อ๋อ ผมนึกไม่ถึงเลยว่าแม้แต่ตัว TSMC เองก็โดนปิดกั้นอยู่เหมือนกัน ถ้า SMIC ไม่สามารถพัฒนากระบวนการผลิตให้ก้าวข้าม 7 นาโนไปจนถึง 5 นาโนได้ ก็คงยากอยู่เหมือนกัน
คุณคนนี้เขียนเก่งมากจริงๆ ครับ อันนี้ก็อ่านได้เพลินมาก
มีคนคาดกันไว้เยอะว่า RISC-V อาจกลายเป็นอีกหนึ่งทางเลือกได้
แต่ผมไม่เคยมองในมุมว่า ถ้าเป็นการใช้งานแบบนี้ มันอาจกลายเป็นชิปที่ยอดเยี่ยมที่สุดสำหรับโปรเซสเซอร์เสริมได้