การถกเถียงครั้งใหญ่เรื่อง CPU ระดับสูง: เหตุใดฮาร์ดแวร์เฉพาะทางสำหรับภาษาโปรแกรมจึงล้มเหลว

ทีมชุมชน BigGo
การถกเถียงครั้งใหญ่เรื่อง CPU ระดับสูง: เหตุใดฮาร์ดแวร์เฉพาะทางสำหรับภาษาโปรแกรมจึงล้มเหลว

ความท้าทายที่ก่อให้เกิดการถกเถียงในปี 2008 จากนักออกแบบโปรเซสเซอร์ได้กลับมาปรากฏในการสนทนาทางเทคโนโลยีอีกครั้ง ทำให้เกิดการถกเถียงใหม่เกี่ยวกับว่าฮาร์ดแวร์เฉพาะทางสามารถทำให้ภาษาโปรแกรมระดับสูงทำงานได้เร็วขึ้นหรือไม่ บทความต้นฉบับได้ท้าทายบุคคลสำคัญอย่าง Alan Kay และ Jamie Zawinski ที่กล่าวอ้างอย่างกล้าหาญเกี่ยวกับสถาปัตยกรรม CPU ที่ไม่มีประสิทธิภาพ โดยไม่ได้ให้วิธีแก้ปัญหาทางเทคนิคที่เป็นรูปธรรม

ความท้าทายนั้นเรียบง่ายแต่เรียกร้องสูง: ออกแบบสถาปัตยกรรม CPU ที่สามารถรันโค้ดภาษาระดับสูงได้เร็วกว่าโปรเซสเซอร์ RISC แบบดั้งเดิมมาก โดยไม่มีผลกระทบด้านขนาดอย่างมีนัยสำคัญ ผู้เขียนเสนอที่จะพิจารณาการนำไปใช้งานทางกายภาพอย่างจริงจัง และแม้กระทั่งจัดหาชิปตัวอย่างให้กับข้อเสนอที่ประสบความสำเร็จ

ปัญหาทางเศรษฐศาสตร์ทำลาย CPU เฉพาะทาง

การสนทนาในชุมชนเผยให้เห็นว่าโปรเซสเซอร์เฉพาะทางสำหรับภาษาอย่าง Lisp, Smalltalk และ Java มีประวัติการล้มเหลวอย่างสม่ำเสมอ ตัวอย่างในอดีตรวมถึงเครื่อง Lisp ของ Xerox, Intel iAPX 432 และโปรเซสเซอร์ Java ต่างๆ ซึ่งในที่สุดแล้วก็แพ้ CPU อเนกประสงค์ ปัญหาพื้นฐานไม่ใช่ความสามารถทางเทคนิค แต่เป็นเรื่องเศรษฐศาสตร์และขนาด

ทุกอย่างขึ้นอยู่กับเศรษฐศาสตร์ ตัวเร่งเครือข่ายและกราฟิกทำได้ดี แต่พวกมันเป็น (หรือกลายเป็นเมื่อเวลาผ่านไป) โอกาสที่มีปริมาณสูง ปริมาณขับเคลื่อนการลงทุน การลงทุนขับเคลื่อนความก้าวหน้า

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

ความล้มเหลวของ CPU ระดับสูงในอดีต:

  • เครื่อง Lisp ของ Xerox
  • โปรเซสเซอร์ LMI และ Symbolics
  • Intel iAPX 432 (เน้นภาษา Ada)
  • โปรเซสเซอร์ UCSD p-System
  • โปรเซสเซอร์ Java (Jazelle, PicoJava)
  • ทั้งหมดถูกแซงหน้าโดย CPU อเนกประสงค์ในที่สุด (68K, x86, RISC)

การเข้าถึงหน่วยความจำยังคงเป็นคอขวดที่แท้จริง

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

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

ความท้าทายทางเทคนิคที่สำคัญ:

  • ปัญหาคอขวดในการเข้าถึงหน่วยความจำยังคงมีอยู่โดยไม่คำนึงถึงความซับซ้อนของคำสั่ง
  • พฤติกรรมแบบไดนามิกในขณะรันไทม์ทำลายความพยายามในการปรับปรุงประสิทธิภาพแบบสแตติก
  • ชุดคำสั่งที่ซับซ้อนทำให้การดำเนินการแบบ superscalar และ out-of-order มีความซับซ้อนมากขึ้น
  • การดำเนินการ string/object ในฮาร์ดแวร์ให้ประโยชน์เพียงเล็กน้อยเมื่อเทียบกับลูปซอฟต์แวร์ที่ปรับปรุงแล้ว
  • การติดแท็กประเภทและคุณสมบัติด้านความปลอดภัยเพิ่มโอเวอร์เฮดอย่างมีนัยสำคัญ

การปฏิวัติ RISC มีเหตุผลที่ดี

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

CPU สมัยใหม่บรรลุประสิทธิภาพสูงผ่านเทคนิคอย่างการดำเนินการแบบ superscalar การประมวลผลแบบ out-of-order และการแคชที่ซับซ้อน ซึ่งทั้งหมดนี้จะยากขึ้นในการนำไปใช้และเพิ่มประสิทธิภาพเมื่อชุดคำสั่งซับซ้อน

แนวโน้มปัจจุบันชี้ไปสู่การคำนวณแบบผสมผสาน

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

แนวทางนี้ช่วยให้ CPU อเนกประสงค์จัดการกับการควบคุมการไหลที่ซับซ้อนและการจัดการหน่วยความจำ ในขณะที่ถ่ายโอนงานคำนวณเฉพาะไปยังฮาร์ดแวร์ที่เพิ่มประสิทธิภาพแล้ว เป็นวิธีแก้ปัญหาที่ปฏิบัติได้มากกว่าการพยายามสร้างโปรเซสเซอร์เดียวที่เก่งในทุกเรื่อง

การถกเถียงนี้ในที่สุดเน้นย้ำความตึงเครียดที่คงอยู่ในสถาปัตยกรรมคอมพิวเตอร์: ความน่าดึงดูดของวิธีแก้ปัญหาทางทฤษฎีที่สง่างามเทียบกับความเป็นจริงที่ยุ่งเหยิงของการนำไปใช้ เศรษฐศาสตร์ และข้อกำหนดประสิทธิภาพในโลกแห่งความเป็นจริง

อ้างอิง: The high-level CPU challenge