ความท้าทายที่ก่อให้เกิดการถกเถียงในปี 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