บทความล่าสุดของนักพัฒนาที่อ้างว่าเทคนิคการปรับปรุงประสิทธิภาพของโปรเซสเซอร์ Z80 ปี 1976 ยังคงเหนือกว่าบนฮาร์ดแวร์สมัยใหม่ ได้จุดประกายการถกเถียงทางเทคนิคอย่างเข้มข้นในชุมชนโปรแกรมเมอร์ ผู้เขียนได้ย้ายฐานข้อมูลเวกเตอร์จากภาษา ABAP ของ SAP ไปยัง Z80 assembly และได้ผลลัพธ์ด้านประสิทธิภาพที่ท้าทายความเชื่อดั้งเดิมเกี่ยวกับกลยุทธ์การปรับปรุงประสิทธิภาพแบบเก่าเทียบกับแบบใหม่
การอ้างสิทธิ์ประสิทธิภาพหลักที่ถูกโจมตี
การยืนยันหลักของนักพัฒนาที่ว่าตารางค้นหาเร็วกว่าการคำนวณเสมอ กลายเป็นจุดโฟกัสของการวิพากษ์วิจารณ์ สมาชิกชุมชนได้ชี้ให้เห็นข้อบกพร่องพื้นฐานในคำกล่าวอ้างแบบทั่วไปนี้อย่างรวดเร็ว โดยเฉพาะเกี่ยวกับสถาปัตยกรรม CPU สมัยใหม่ ความจริงมีความซับซ้อนมากกว่าที่การอ้างสิทธิ์เดิมแสดงให้เห็น
โปรเซสเซอร์สมัยใหม่เผชิญกับภูมิทัศน์ประสิทธิภาพที่แตกต่างอย่างสิ้นเชิงจาก Z80 ในขณะที่โปรเซสเซอร์ปี 1976 มีการเข้าถึงหน่วยความจำที่ค่อนข้างเร็วเมื่อเทียบกับพลังการคำนวณ CPU ในปัจจุบันสามารถดำเนินการหลายๆ อย่างในเวลาที่ใช้ในการดึงข้อมูลจากหน่วยความจำหลัก ลำดับชั้นแคช เวลาแฝงของหน่วยความจำ และไปป์ไลน์คำสั่งที่ซับซ้อน ทำให้สมการประสิทธิภาพซับซ้อนมากขึ้น
ลำดับชั้นแคช: CPU สมัยใหม่มีแคชหน่วยความจำหลายระดับที่เร็วขึ้นแต่เล็กลงเรื่อยๆ (L1, L2, L3) ระหว่างโปรเซสเซอร์และ RAM หลัก
Z80 เทียบกับ CPU สมัยใหม่ในการเข้าถึงหน่วยความจำ:
- การเข้าถึงหน่วยความจำของ Z80 : 3-7 รอบนาฬิกา
- การเข้าถึงหน่วยความจำหลักของ CPU สมัยใหม่: 300+ รอบนาฬิกา
- คำสั่งที่เร็วที่สุดของ Z80 : 4 รอบนาฬิกา (ไม่มีการเข้าถึงหน่วยความจำ)
- ระดับแคชของ CPU สมัยใหม่: L1, L2, L3 ที่มีความหน่วงเวลาแตกต่างกัน
การตรวจสอบความเป็นจริงของการเข้าถึงหน่วยความจำ
การวิเคราะห์ทางเทคนิคของชุมชนเผยให้เห็นการมองข้ามที่สำคัญในการเปรียบเทียบประสิทธิภาพเดิม ผู้แสดงความคิดเห็นคนหนึ่งสังเกตว่า RAM ในยุคนั้นค่อนข้างเร็วเมื่อเทียบกับ Z80 ตามมาตรฐานปัจจุบัน แต่ระบบสมัยใหม่เผชิญกับความท้าทายตรงข้าม เวลาแฝงของหน่วยความจำกลายเป็นคอขวดหลัก โดยการดำเนินการบางอย่างต้องใช้หลายร้อยรอบ CPU เพื่อเข้าถึงหน่วยความจำหลัก
การเปลี่ยนแปลงพื้นฐานนี้ทำลายความสามารถในการประยุกต์ใช้การปรับปรุงประสิทธิภาพยุค Z80 แบบสากล เทคนิคที่ทำงานได้อย่างยอดเยี่ยมเมื่อการเข้าถึงหน่วยความจำใช้เวลา 3-7 รอบนาฬิกา อาจทำร้ายประสิทธิภาพจริงๆ เมื่อการเข้าถึงเดียวกันนั้นใช้เวลา 300+ รอบ จุดที่เหมาะสมสำหรับตารางค้นหาหดตัวลงอย่างมาก - มันให้ประโยชน์เฉพาะเมื่อตารางทั้งหมดอยู่ในระดับแคชที่เร็วที่สุดของ CPU
ความแตกต่างของสถาปัตยกรรมทางเทคนิค:
- Z80 (1976): ข้อจำกัดหน่วยความจำ 64KB ไม่มีจุดทศนิยม การเข้าถึงฮาร์ดแวร์โดยตรง
- CPU สมัยใหม่: ลำดับชั้นแคช คำสั่ง SIMD ความขนานระดับคำสั่ง การดึงข้อมูลล่วงหน้าในหน่วยความจำ ข้อจำกัดด้านความร้อน
เมตริกประสิทธิภาพที่ทำให้เข้าใจผิด
การวิพากษ์วิจารณ์ที่บอกเล่าที่สุดเน้นไปที่การเปรียบเทียบประสิทธิภาพของผู้เขียนเอง การได้ความเร็วเพิ่มขึ้นเพียง 3-6 เท่าบนฮาร์ดแวร์ที่ทำงานเร็วกว่า 857 เท่า ควรจะเป็นสัญญาณเตือนเกี่ยวกับแนวทางการปรับปรุงประสิทธิภาพ แทนที่จะตรวจสอบเทคนิคเก่า ผลลัพธ์นี้แสดงให้เห็นว่าเทคนิคเหล่านั้นไม่เหมาะสมกับสถาปัตยกรรมสมัยใหม่เพียงใด
ความจริงที่ว่าผู้เขียนได้ความเร็วเพิ่มขึ้นเพียง 3 ถึง 6 เท่าบนโปรเซสเซอร์ที่ทำงานที่ความถี่เร็วกว่า 857 เท่า ควรจะนำไปสู่ข้อสรุปว่าเทคนิคการปรับปรุงประสิทธิภาพแบบเก่าช้ามากบนสถาปัตยกรรมสมัยใหม่
ฉันทามติของชุมชนแสดงให้เห็นว่าการปรับปรุงประสิทธิภาพสมัยใหม่ที่มีประสิทธิภาพต้องการความเข้าใจเกี่ยวกับพฤติกรรมแคช การดึงข้อมูลล่วงหน้าของหน่วยความจำ คำสั่ง SIMD และการดำเนินการแบบขนาน - แนวคิดที่ไม่มีอยู่ในยุค Z80
ผลการเปรียบเทียบประสิทธิภาพ:
- ZVDB บน SAP: 10-20ms (ฮาร์ดแวร์สมัยใหม่)
- ZVDB บน Z80: 50-60ms (ฮาร์ดแวร์ปี 1976)
- ความแตกต่างของความเร็วนาฬิกา: เร็วกว่า 857 เท่าในฮาร์ดแวร์สมัยใหม่
- การปรับปรุงประสิทธิภาพจริง: เร็วขึ้นเพียง 3-6 เท่าเท่านั้น
บริบทสำคัญกว่าความคิดถึงอดีต
การถกเถียงในที่สุดเน้นหลักการสำคัญในการปรับปรุงประสิทธิภาพซอฟต์แวร์: บริบทคือทุกสิ่ง ในขณะที่เทคนิค Z80 บางอย่างยังคงมีค่าในสถานการณ์เฉพาะ การนำกลยุทธ์อายุ 50 ปีมาใช้กับปัญหาสมัยใหม่โดยไม่คิดมักนำไปสู่ผลลัพธ์ที่ไม่เหมาะสม
การปรับปรุงประสิทธิภาพที่ประสบความสำเร็จในปัจจุบันต้องการการสร้างสมดุลระหว่างปัจจัยหลายอย่าง: ประสิทธิภาพแคช ความขนานระดับคำสั่ง แบนด์วิดท์หน่วยความจำ และข้อจำกัดด้านความร้อน ความคิดโรแมนติกที่ว่าเทคนิคแบบเก่าเหนือกว่าแนวทางสมัยใหม่แบบสากลไม่สามารถอยู่ได้ภายใต้การตรวจสอบ
การตอบสนองของชุมชนเป็นการเตือนใจที่มีค่าว่าการปรับปรุงประสิทธิภาพที่มีประสิทธิภาพต้องการความเข้าใจอย่างลึกซึ้งเกี่ยวกับฮาร์ดแวร์เป้าหมาย ไม่ใช่เพียงความผูกพันอย่างคิดถึงอดีตกับเทคนิควินเทจ แม้ว่าจะมีคุณค่าในการเรียนรู้จากประวัติศาสตร์คอมพิวเตอร์ แต่การปรับปรุงประสิทธิภาพที่ดีที่สุดมาจากการจับคู่เทคนิคกับข้อจำกัดและความสามารถเฉพาะของระบบร่วมสมัย