GoC32 Side Story “How to fail อย่าง Saturn” Part1

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

 
ก่อนขึ้นเรามาเริ่มกันที่ CPU ของ Saturn กันก่อน
หาเทียบกับเครื่องที่ประสบความสำเร็จสูงสุดในยุคเดียวกันอย่าง Sony ps1 แล้ว CPU ของทั้ง 2 เครื่องนั้นเป็นประเภทเดียวกันแต่ต่างผู้ผลิตแต่มีความเร็วที่ต่างกันสมควร โดย CPU ของ ps1 นั้นมีความเร็วอยู่ที่ 33.8 เมกกะเฮิร์ต ส่วน Saturn อยู่ที่ 28.6 เมกกะเฮิร์ต ความเร็วต่างถึง 15%
 
แต่ Saturn มีสองตัว ซึ่งคิดตามสามัญสำนึกแล้วมันควรจะทำงานได้เร็วกว่า CPU ของ ps1 
แต่กลับไม่เป็นอย่างนั้น
สาเหตุนั้นอยู่ที่ช่องทางการส่งข้อมูลจาก CPU ไปยังระบบของ Saturn เอง
 

 
เพื่อให้เห็นภาพเราจะสมมุติว่ามีบริษัทแห่งหนึ่งชื่อ Saturn รับงานคิดเลขโดยมีพนักงานสามคนโดย 2 คนเป็นนักคิดเลขชื่อ CPU 1 กับ Cpu2 และอีกหนึ่งคนเป็น Sell ทำหน้าที่รับงานคำนวณและส่งผลการคำนวณให้ลูกค้ารวมถึงแบ่งงานให้นักคิดเลขทั้ง 2 คนไปทำด้วย
 
ปัญหานั้นเกิดขึ้นในตอนที่ทั้ง CPU 1 และ 2 คำนวณเสร็จพร้อมกันหรือใกล้ ๆ กัน
ซึ่งตามสามัญสำนึกแล้ว CPU ทั้ง 2 ควรที่จะส่งงานและรับงานใหม่จาก Sell ได้โดยไม่ติดขัดอะไร
แต่ตามระเบียบของบริษัทนี้ดังตั้งไว้ว่าเมื่อนักคิดเลขจะมารับหรือส่งงานนั้นจะต้องนั่งเก้าอี้ต่อหน้า Sell ให้เรียบร้อย
แล้วเก้าอี้หน้าโต๊ะ Sell ดันมีแค่ตัวเดียว
 
นี่ทำให้ขณะที่ CPU ตัวหนึ่งส่งงาน CPU อีกตัวก็ทำอะไรไม่ได้นอกจากรอให้ CPU ตัวที่นั่งเก้าอี้อยู่ก่อนลุกออกไปถึงจะส่งงานได้ เสียเวลาทำงานไปอย่างเปล่า ๆ กับการคอย
แล้วถ้า CPU ที่มาส่งงานก่อนดันลุกช้า ไม่ว่าจะเพราะงานเยอะ รอรับงานใหม่หรือนั่งหยอดขนมจีบกับ Sell อยู่ นั้นหมายความว่าประสิทธิภาพการคำนวนโดยรวมก็จะยิ่งลดลงไปอีก
 

 
วิธีแก้นั้นสามารถทำได้โดยให้โปรแกรมเมอร์เขียนระเบียบการทำงานเพิ่มลงไปในโปรแกม เช่น ห้ามนั่งแช่ นั่งเกิน 5 นาทีต้องลุก ห้ามจีบ Sell เป็นต้น แต่เนื่องจากยุคนั้นการเขียนโปรแกรมควบคุม CPU มากกว่า 1 ตัวนั้นเป็นทักษะเฉพาะทางมาก ๆ ทำให้โปรแกรมเมอร์ส่วนใหญ่ไม่สามารถเขียนโปรแกรมให้ดึงศักยภาพของ CPU คู่ออกมาได้อย่างที่ควร แม้แต่ในปัจจุบันที่เป็นยุคของ CPU หลายคอร์แล้วก็ตามแต่ก็ไม่ได้หมายความว่าทุกโปรแกรมจะสามารถใช้พลังจากทุกคอร์ได้อย่างเต็มที่
 แต่หากเกมใดสามารถดึงพลังของ CPU คู่ออกมาได้ ความเร็วในการประมวลผลของ Saturn จะชนะ ps1 อย่างขาดลอย
 
ตัวอย่างของการดึงศักยภาพ CPU คู่ใน Saturn ออกมานั้นสามารถเห็นได้ชัดในเกมเช่น X-Men vs. Street Fighter ซึ่งความเร็วการโหลดเกมนั้น saturn เร็วกว่า ps1 อย่างเห็นได้ชัด ถึงแม้จะอ้างได้ว่าเพราะ Saturn ที่เล่นเกม X-Men vs. Street Fighter นั้นจำเป็นต้องติดตั้ง Extension Ram หรือใส่โมดูลเพิ่ม Ram ลงไปอีก 4 เมกกะไบต์เลยทำให้ประสิทธิ์ภาพเพิ่มขึ้น แต่ผู้เขียนมองว่าความแตกต่างของความเร็วเมื่อโหลดเกมไม่น่าจะแตกต่างได้ขนาดนั้นจากการเพิ่ม Ram เพียงอย่างเดียว
 
ผู้อ่านสามารถชม VDO เปรียบเทียบ X-Men vs. Street Fighter ระหว่าง Sega Saturn กับ Playstation ได้ที่ Link ข้างล่าง
https://www.youtube.com/watch?v=_2C-jpMQmFY&t=325s
 

 
ต่อมาคือส่วนของ GPU หรือชิปประมวลผลกราฟิก
เพื่อให้เห็นภาพเราจะสมมุติแบบเดิมว่ามีบริษัทแห่งหนึ่งชื่อ Saturn รับงานกราฟฟิก มีพนักงานสามคน มี 2 คนเป็น Artist โดย VDP 1 รับงาน 3D และ VDP2 รับงาน 2D ส่วนอีกหนึ่งคนเป็น Sell ทำหน้าที่รับและส่งงานให้ลูกค้า(โปรแกรมเกม) โดยลูกค้าจะเป็นผู้กำหนดเองว่างานที่สั่งนั้นจะแบ่งให้ Artist คนไหนทำส่วนใด
 
ปัญหาในส่วนประมวลผลกราฟฟิกนั้น เนื่องจากเนื้อหาทางเทคนิคที่ลึกจนยากที่จะเข้าใจทั้งหมด ผู้เขียนจึงยกส่วนที่คนทั่วไปเข้าใจได้และสามารถอธิบายให้เห็นภาพได้ชัดเจนมาเล่าเพียง 2 หัวข้อ
 
หัวข้อที่ 1 การจัดการ Memory หรือหน่วยความจำของการประมวลผลกราฟฟิก
สำหรับคนที่พอจะคุ้นเคยเรื่องคอมพิวเตอร์อยู่บ้าง ใช้คำว่า VRam น่าจะพอนึกภาพออก
 

 
หน่วยประมวลผลกราฟฟิกของ Saturn นั้นประกอบด้วยชิป 2 ตัวหรือก็คือพนักงานฝ่าย Artist โดยนาย VDP 1 รับงาน 3D และนาย VDP2 รับงาน 2D
เพื่อความสะดวกหรือเพื่อประหยัดงบในการตั้งสำนักงานก็ไม่ทราบได้ ทำให้ Artist ทั้ง 2 นายนี้ต้องแชร์สตูดิโอรวมกัน
ในที่นี้สตูดิโอก็คือ VRam หรือหน่วยความจำสำหรับการประมวลผลกราฟฟิกนั้นเอง
 
ซึ่งตามสามัญสำนึกแล้วสตูดิโอนี้ถือเป็นพื้นที่ส่วนกลางซึ่งไม่ว่า VDP 1 หรือ 2 ก็สามารถใช้งานได้และควรจะปรับขนาดพื้นที่ใช้งานให้กับ Artist ทั้ง 2 ได้ตามปริมาณงานที่แต่ละคนได้รับ
 
สตูดิโอหรือ VRam นั้น ไม่รู้ว่าด้วยเหตุใด กลับถูกแบ่งพื้นที่ให้ VDP 1 และ 2 คนละครึ่งอย่างเท่า ๆ กันแบบ “ตายตัว”
แล้วไม่รู้เพราะอะไร Memory ในส่วนของ Frame Buffer ทั้ง 2 ตัวที่ควรจะแบ่งให้ VDP 1 และ 2 คนละตัวกลับไปอยู่กับ VDP 1 ซะหมด ทำให้ VDP2 จะเข้าใช้ Frame Buffer ก็ต้องรอขอกับ VDP 1 
 
แล้วตัว Encoder ก่อนออก TV ก็ดันไปอยู่กับ VDP2 เพียงฝ่ายเดียวอีก ทำให้ VDP1 วาดกราฟฟิกเสร็จก็ต้องส่งมาให้ VDP2 เพื่อส่งออกจออีกที


 
กลับมาที่ประเด็นของ VRam อย่างเดียวก่อน
นี่ทำให้ VRam ของ Saturn ในทางเทคนิคมีมากกว่า ps1 ถึง 50% (ps1 มี VRam 1 เมกกะไบต์ ส่วน Saturn มี 1.5 เมกกะไบต์) แต่ในการใช้งานจริงแล้วกลับเหลือพื้นที่ใช้งานจริง ๆ ได้ขั้นต่ำเพียง 0.5-0.75 เมกกะไบต์เท่านั้นและนี่ทำให้ Resolution สูงสุดของ Saturn ตกลงมาที่ 704x480 ขณะที่ ps1 ทำได้สูงกว่า อยู่ที่ 1024×512
 
ในเชิงการพัฒนาโปรแกรมเกมแล้วปัญหาการแบ่ง Ram นี้ยิ่งสร้างความยุ่งยากเข้าไปอีกเพราะเกมในยุคนั้นอยู่ระหว่างเปลี่ยนผ่านทำให้ยังมีเกมที่เน้นแนวกราฟฟิก 2D อยู่อีกมาก ทำให้ใช้ VRam ได้ไม่เต็มความจุ เสีย VRam อีกเกือบครึ่งไปเปล่า ๆ เพราะไม่ได้ใช้งาน 3D มากไปกว่าส่วนของ Effect ต่าง ๆ  
 
เช่นเดียวกับเกมในยุคหลังที่เน้นกราฟฟิก 3D เต็มตัวแล้วก็ต้องเสีย VRam อีกเกือบครึ่งไปเนื่องจากถูกกันไว้สำหรับ VDP2 ที่ประมวลผลกราฟฟิก 2D โดยส่วนใหญ่ถูกนำไปใช้ในการสร้างฉากหลัง
 
 
วิธีที่จะทำให้ใช้งาน VRam ได้เต็มที่ก็คือต้องสร้างเกมที่แสดงผลกราฟฟิกทั้ง 2D และ 3D ผสมผสานกันซึ่งเป็นเรื่องยากในยุคนั้น อีกทั้งการแยกชิปประมวลผล 2D และ 3D ออกเป็นคนละตัวทำให้มีความยุ่งยากในการพัฒนาที่สูง หลายเกมหลังจากลงให้กับ Saturn แล้วก็ไม่กลับมาลงอีกเลย
 
รูปตัวอย่างจากเกม X-Men vs. Street Fighter จะเห็นได้ชัดว่าภาพของ Saturn จะมี Resolution ที่น้อยกว่า ps1 ทำให้ภาพบริเวณขอบนอกถูกตัดออกบางส่วน


 
to be continued in Part 2

ปล.ตอนนี้ผมได้เปิด Facebook Page “บทความตามใจฉัน” 
โดยบทความจะหลายหลากคละประเภทกันไปความตามความสนใจนั้นขณะนั้น ถ้าสนใจก็กดติดตามได้ครับ
https://www.facebook.com/uptomejournal/
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่