NetBSD ฟื้นคืนการจำลอง FPU สำหรับโปรเซสเซอร์ i486SX นำชีวิตใหม่มาสู่ฮาร์ดแวร์รุ่นเก่า

BigGo Editorial Team
NetBSD ฟื้นคืนการจำลอง FPU สำหรับโปรเซสเซอร์ i486SX นำชีวิตใหม่มาสู่ฮาร์ดแวร์รุ่นเก่า

ในยุคที่การสนับสนุนซอฟต์แวร์สำหรับฮาร์ดแวร์รุ่นเก่ายังคงลดน้อยลงเรื่อยๆ มีโครงการที่น่าสนใจเกิดขึ้นเพื่อนำชีวิตใหม่มาสู่ฮาร์ดแวร์คอมพิวเตอร์ที่มีอายุหลายทศวรรษ นักพัฒนาได้ประสบความสำเร็จในการฟื้นฟูการสนับสนุนการจำลองหน่วยประมวลผลตัวเลขทศนิยม (FPU) สำหรับโปรเซสเซอร์ i486SX ใน NetBSD 10.x และเวอร์ชันต่อๆ ไป ทำให้สามารถใช้งานระบบปฏิบัติการสมัยใหม่บน CPU รุ่นเก่าเหล่านี้ที่ไม่มีความสามารถในการประมวลผลตัวเลขทศนิยมในฮาร์ดแวร์

ประวัติของ i486SX และการจำลอง FPU

i486SX เป็นโปรเซสเซอร์รุ่นประหยัดในตระกูล 486 ของ Intel ที่เปิดตัวในช่วงต้นทศวรรษ 1990 ซึ่งถูกจำกัดความสามารถโดยการปิดการทำงานของหน่วยประมวลผลตัวเลขทศนิยม ตามที่ผู้แสดงความคิดเห็นรายหนึ่งได้กล่าวไว้ว่า มันถูกมองว่าเป็นฮาร์ดแวร์ที่ถูกตัดทอนความสามารถในช่วงเวลาที่เปิดตัว หากปราศจาก FPU โปรเซสเซอร์เหล่านี้ไม่สามารถจัดการกับการคำนวณตัวเลขทศนิยมได้โดยตรง ซึ่งมีความสำคัญสำหรับแอปพลิเคชันหลายประเภท รวมถึงการคำนวณทางวิทยาศาสตร์และการทำงานกราฟิกบางประเภท

โครงการฟื้นฟูนี้ได้นำตัวเลือก MATH_EMULATE กลับมาใช้ในเคอร์เนลของ NetBSD ทำให้ระบบปฏิบัติการสามารถดักจับคำสั่งตัวเลขทศนิยมและจำลองการทำงานในซอฟต์แวร์ได้ วิธีการนี้ช่วยให้ไบนารีที่ไม่ได้รับการแก้ไขซึ่งใช้การดำเนินการตัวเลขทศนิยมสามารถทำงานบนระบบ i486SX ได้โดยไม่จำเป็นต้องคอมไพล์พิเศษหรือเชื่อมโยงกับไลบรารี soft-float

สิ่งนี้เคยเป็นเรื่องปกติมากก่อนที่จะมีโปรเซสเซอร์ Pentium ชุดเครื่องมือคอมไพเลอร์หลายตัว (ส่วนใหญ่?) รวมตัวจำลอง FPU ในซอฟต์แวร์ไว้ด้วย โครงการที่เจ๋งมาก!

การประยุกต์ใช้ที่กว้างขวางกว่า i486SX

การสนทนาในชุมชนเผยให้เห็นว่างานนี้มีนัยสำคัญนอกเหนือจากฮาร์ดแวร์ Intel รุ่นเก่า ตามที่ผู้แสดงความคิดเห็นรายหนึ่งชี้ให้เห็น SoC x86 ทางเลือกจำนวนมากที่มุ่งเน้นระบบฝังตัวไม่มี FPU รวมถึง Vortex86 รุ่นแรก สิ่งนี้บ่งชี้ว่าโครงการนี้อาจเป็นประโยชน์ต่อฮาร์ดแวร์ที่หลากหลายมากกว่าที่เห็นในตอนแรก

นอกจากนี้ยังมีความสนใจว่าการพัฒนานี้อาจทำให้ NetBSD 10.x สามารถทำงานบนการใช้งาน FPGA ของโปรเซสเซอร์ x86 เช่น คอร์ ao486 ในโครงการ MiSTer แม้ว่าการทดสอบเบื้องต้นโดยสมาชิกชุมชนคนหนึ่งจะไม่ประสบความสำเร็จ แต่ความเป็นไปได้ยังคงน่าสนใจสำหรับผู้ที่ชื่นชอบการคอมพิวเตอร์ย้อนยุค

การนำไปใช้ทางเทคนิคและที่มา

ที่น่าสนใจคือ โครงการนี้รวมโค้ดที่มีประวัติอันยาวนาน โค้ดจำลอง FPU หลักมีที่มาย้อนกลับไปถึง Linus Torvalds ผู้สร้าง Linux โดยมีประกาศลิขสิทธิ์ตั้งแต่ปี 1991 และในที่สุดก็มีต้นกำเนิดมาจาก 386BSD การเชื่อมโยงทางประวัติศาสตร์นี้ได้จุดประกายการอภิปรายเกี่ยวกับความเข้ากันได้ของใบอนุญาตระหว่างโค้ด Linux รุ่นแรกและโครงการที่ใช้ใบอนุญาตแบบ BSD

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

หมวดหมู่คำสั่ง FPU ที่จำลองได้

  • การควบคุมและการเริ่มต้น: คำสั่งเช่น fninit สำหรับการเริ่มต้น FPU
  • การโหลดไปยังสแต็ก FPU: คำสั่งรวมถึง fld, fldt, filds, fildl สำหรับการโหลดค่า
  • การเก็บค่าจากสแต็ก FPU: คำสั่งเช่น fstps, fstpt สำหรับการเก็บค่า
  • การดำเนินการทางคณิตศาสตร์: การดำเนินการพื้นฐานเช่น fadd, fsub, fmul, fdiv
  • การเปรียบเทียบ: คำสั่งรวมถึง fcom, fucom, ftst
  • การจัดการสแต็ก: การดำเนินการเช่น fxch, fchs, fabs, frndint
  • การคำนวณลอการิทึม/คณิตศาสตร์พิเศษ: การดำเนินการบางอย่างเช่น f2xm1 ได้รับการพัฒนาแล้ว ส่วนอื่นๆ เช่น fyl2x อยู่ระหว่างการพัฒนา

หมายเหตุ: การดำเนินการที่ซับซ้อนบางอย่างยังไม่ได้รับการพัฒนาหรือมีปัญหาเกี่ยวกับความแม่นยำ

เปรียบเทียบกับการพัฒนาเคอร์เนล Linux

จังหวะเวลาของโครงการนี้มีความน่าสังเกตเป็นพิเศษเมื่อพิจารณาถึงการพัฒนาล่าสุดในชุมชนเคอร์เนล Linux เพียงไม่กี่วันก่อนที่โครงการนี้จะได้รับการเน้นย้ำ มีการเสนอแพตช์เพื่อยกเลิกการสนับสนุนเคอร์เนล Linux สำหรับ CPU x86 ที่ไม่มี FPU ทั้งหมด ความแตกต่างในแนวทางระหว่าง NetBSD และ Linux นี้แสดงให้เห็นถึงปรัชญาที่แตกต่างกันในการสนับสนุนฮาร์ดแวร์ระหว่างระบบปฏิบัติการเหล่านี้ โดย NetBSD ยังคงรักษาชื่อเสียงในการสนับสนุนแพลตฟอร์มฮาร์ดแวร์ที่หลากหลายและรุ่นเก่า

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

อ้างอิง: FPU Emulation Revival for i486SX on NetBSD