Tags:
Node Thumbnail

ช่วงหลังมานี้แม้เครื่องรุ่นใหม่ๆ ที่เราเพิ่งซื้อกันจะใช้ซีพียูดูอัลคอร์กันหมดแล้ว แต่เกมส่วนใหญ่ก็ยังไม่ได้รับประโยชน์อะไร เพราะเกมส่วนมากยังคงใช้เพียงเธรดเดียวเท่านั้น แต่ข้อจำกัดนี้อาจจะอยู่กับเราอีกไม่นาน เมื่อบริษัทเกมอย่าง Valve ผู้ผลิตเกม Half-Life เตรียมตัวพัฒนาเกมรุ่นต่อๆ ไปให้รองรับเธรดกันในตัวแล้ว

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

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

ที่นี้เราก็เตรียมเก็บเงินซื้อ Quad-Core กันได้เลย

ที่มา - ArsTechnica

Get latest news from Blognone

Comments

By: tong053
Android
on 6 November 2006 - 16:52 #11594
tong053's picture

น่าจะมี s/w ที่ทำหน้าที่เหมือน virtual cpu แล้วทำหน้าที่จัดการ thread สำหรับ multi core กับ s/w single thread รู้นะ ว่า sw ตัวนี้ต้องสร้างยากมากแน่ๆ แต่คงจะดีนะ ถ้ามีให้ใช้

By: พี่ไท้ on 6 November 2006 - 16:52 #11595

เอ แล้ว IDE ที่เรามีอยู่มันจะช่วยให้เราเขียน software เพื่อทำงานกับไอ้เจ้า dual core ยังไงดีหนอ

หุ ๆ สงสัย assembly ล้วน ๆ ครับ

----- http://www.peetai.com | เว๊ปบล็อกที่โม้แต่เรื่อง Software as a Service.

By: narok119
ContributoriPhone
on 6 November 2006 - 19:26 #11598

สำหรับคนเขียนโปรแกรม ผมคิดว่าจริงๆแล้ว ถ้าใช้พวก java ที่มี JVM ครอบไว้เนี่ย

เราก็แค่ควรจะหันมาใช้งาน MultiThread กันมากขึ้น เพื่อทำให้ประสิทธิภาพโปรแกรมทำงานให้สอดคล้องกับ Dual Core จริงๆเท่านั้นเอง

ตัวโปรแกรมเมอร์เองไม่น่าถึงกับต้องเปลี่ยน IDE หรืออ่ะไรแบบนี้นะครับ

ส่วนการจัดการที่อยู่เบื้องหลังก็โยนให้ JVM แล้วละครับ

By: pt on 6 November 2006 - 19:33 #11599

น่าจะแยกได้ในระดับ Hardware ไม่น่าต้องให้คนเขียนมานั่งมึน เพราะถ้าต่อ ๆ ไปมันยิ่งแบ่งคอร์ออกไปอีก ก็ต้องมาทำใหม่อีก

By: wiennat
Writer
on 6 November 2006 - 19:47 #11600

โห เกมตั้งใหญ่โต มีแค่ เธรดเดียวเองเหรอครับ นึกว่าพวกนี้เค้าทำ multi threading กันหมดแล้ว

:-P :D


onedd.net

By: PaePae
WriteriPhoneAndroidWindows
on 6 November 2006 - 23:14 #11603
PaePae's picture

> tong053 อันนั้นหน้าที่ของ OS แล้วมั้งครับ ^^"

> พี่ไท้ ผมมองว่าเป็นเรื่องของการทำ multithread ซึ่งเป็นสิ่งที่ภาษาโปรแกรมมันทำได้อยู่แล้วล่ะนะ ไำม่เกี่ยวกับ IDE เท่าไหร่ (นอกจากเรื่อง debug ที่หารองรับ multithread debugging ยาก)

(อ่า จริง ๆ ก็ตามที่คุณ narok119 ตอบไปนั่นแหละ)

> wiennat ต้องบอกว่า ปกติก็ใช้ multithread อยู่แล้ว เพียงแต่ใช้ไม่มากครับ เพราะตัวซีพียูเองก็ยังคำนวณได้แค่ทีละ 1 thread การแบ่ง thread ของเกมมาก ๆ จะทำให้ synchronization time ระหว่าง thread สูงขึ้น ส่งผลให้เกมทำงานได้ไม่เร็วพอที่จะตอบสนองกับประสาทสัมผัสของผู้เล่นครับ

สรุปง่าย ๆ ก็ต้องบอกว่า แต่เดิมใช้ thread เพื่อให้จัดการกับส่วนต่าง ๆ ของโปรแกรมเกมได้ง่ายขึ้น แต่ในข่าวนี้บอกว่า ต่อไปนี้ จะเริ่มใช้ thread เพื่อให้มันคำนวณได้เร็วขึ้นด้วย


LinkedIn

By: mk
FounderAndroid
on 7 November 2006 - 13:33 #11617
mk's picture

ผมอ่านข่าวนี้รู้สึกว่าต้องรอ John Carmack เขียน engine ยังไงก็ไม่รู้สิ

By: ppp on 19 November 2006 - 00:15 #13025

valve นั้นสุดยอด ขนาด HDR ยังเขียนของตัวเองเลย