19 คะแนน โดย xguru 2020-12-21 | 8 ความคิดเห็น | แชร์ทาง WhatsApp

"M1 จะช่วยส่งเสริม RISC-V ในฐานะจุดเริ่มต้นของการเปลี่ยนกระบวนทัศน์ แต่คงไม่ใช่ในแบบที่คุณคิด"

บทความติดตามจากวิศวกรผู้เขียน "ทำไมชิป M1 ถึงเร็วขนาดนั้น?" โดยคาดการณ์อนาคตของ RISC-V จากมุมมองที่น่าสนใจ

ปัจจัยด้านประสิทธิภาพของ M1 คือ

  1. มีตัวถอดรหัสจำนวนมากและการประมวลผลแบบไม่เรียงลำดับ OoO

  2. มีชิปเฉพาะทางหลายตัว เช่น 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 ความคิดเห็น

 
functor 2020-12-21

น่าสนใจดีครับ ขอบคุณสำหรับสรุปที่ดี

ต่อไปคงจะมีวันที่แม้แต่ในโรงเรียนก็สอนวิชาสถาปัตยกรรมโดยยึด arm หรือ risc-v เป็นหลัก แทน x86 หรือ amd64..

 
kunggom 2020-12-21

ก่อนหน้านี้เคยมีการโพสต์ที่นี่เกี่ยวกับเนื้อหาที่วิศวกรซึ่งเคยอยู่ ARM วิจารณ์ RISC-V ไว้ใช่ไหมครับ

https://th.news.hada.io/topic?id=3137

ถ้าเป็นตามเนื้อหาข้างต้น ความหลากหลายที่เพิ่มขึ้นของชิปที่เลือกใช้ RISC-V ก็คงเป็นสิ่งที่ตั้งใจไว้สินะครับ

 
jwstyle 2020-12-21

ยิ่งน่าตื่นเต้นขึ้นเรื่อย ๆ เลยครับ

ชวนให้สงสัยว่า Intel กับ AMD จะรับมืออย่างไร

 
cloverhearts 2020-12-21

เท่าที่ทราบ จีนแทบจะทุ่มทั้งหมดให้กับ RISC-V อยู่แล้ว.. อนาคตจะเป็นอย่างไรต่อไปนี่นึกภาพไม่ออกจริง ๆ

 
xguru 2020-12-21

ผมก็นึกถึงจีนเหมือนกันครับ ถ้า Huawei ที่ยังถูกสหรัฐฯ คอยสกัดอยู่ตลอดออกมานำแล้วลองทำเป็น CPU หลักดู จะออกมาเป็นยังไงนะ ฮ่า

 
kbumsik 2020-12-21

เมื่อ Huawei ไม่สามารถใช้ได้ทั้ง ARM และ TSMC ก็อาจพูดได้ว่าการพัฒนา CPU สมรรถนะสูงเองนั้นพังไปแล้วอยู่ดี อย่างมากที่สุดก็คงพอเป็นไปได้ถ้าเป็นอุปกรณ์เครือข่ายของบริษัทเองที่ต้องการประสิทธิภาพน้อยกว่า

แต่เพราะมีบริษัทอื่นอีกมากที่ใช้ RISC-V จึงน่าจะได้เห็นผลงานจากบริษัทเหล่านี้

 
xguru 2020-12-22

อ๋อ ผมนึกไม่ถึงเลยว่าแม้แต่ตัว TSMC เองก็โดนปิดกั้นอยู่เหมือนกัน ถ้า SMIC ไม่สามารถพัฒนากระบวนการผลิตให้ก้าวข้าม 7 นาโนไปจนถึง 5 นาโนได้ ก็คงยากอยู่เหมือนกัน

 
xguru 2020-12-21

คุณคนนี้เขียนเก่งมากจริงๆ ครับ อันนี้ก็อ่านได้เพลินมาก

มีคนคาดกันไว้เยอะว่า RISC-V อาจกลายเป็นอีกหนึ่งทางเลือกได้

แต่ผมไม่เคยมองในมุมว่า ถ้าเป็นการใช้งานแบบนี้ มันอาจกลายเป็นชิปที่ยอดเยี่ยมที่สุดสำหรับโปรเซสเซอร์เสริมได้