รู้ทัน HYDRA Engine แนวทางใหม่ของ Muti-GPUสวัสดีครับ เพื่อนนักโพสต์ และนักอ่านกระทู้ที่รักทุกท่าน (รวมถึงท่านนักท่องเน็ตที่หลงเข้ามาด้วย)
เมื่อเร็วๆนี้ทางเว็บไซด์ฮาร์ดแวร์ต่างประเทศหลายเว็บเริ่มมีการนำเสนอบทความเกี่ยวกับกับเมนบอร์ดที่สามารถทำ Multi-GPU ด้วยเทคโนโลยี HYDRA Engine กันไปแล้ว ซึ่งเสียงตอบรับก็ออกมาดีมากๆเลยครับ
ดังนั้นวันนี้กระผมขออนุญาตินำเสนอบทความเกี่ยว HYDRA Engine ให้ทุกท่านได้รู้ทันกับเจ้าเทคโนโลยีใหม่แห่งการทำมัลติ GPU ตัวนี้กันนะครับ
HYDRA Engine ความสำคัญอย่างไรหลายคนคงสงสัยว่า ทำไมเราจำเป็นต้องใช้เทคโนโลยี HYDRA Engine ด้วยในเมื่อเรามีเทคโนโลยีสำหรับทำ Muti-GPGPU กันอยู่แล้ว
ไม่ว่าจะเป็น SLi จาก NVIDIA, CrossFireX จาก AMD และ Muti-Chrome จาก S3
คำตอบคือ HYDRA Engine สามารถทำในสิ่งที่ ระบบเทคโนโลยีMulti-GPU ของทั้ง 3 ค่ายยังทำไม่ได้ครับ
ตัวอย่างเช่น- HYDRA Engine สามารถทำ Multi-GPU ระหว่างการ์ดจอ AMD และ NVDIA ได้
- HYDRA Engine สามารถทำ Multi-GPU ระหว่างการ์ดรุ่นเก่าและใหม่ได้ เช่าการทำ Multi-GPU ระหว่างการ์ดตระกูล G90 และ GT200 หรือการทำทำ Multi-GPU ระหว่าง HD4xxx กับ HD5xxx
- HYDRA Engine สามารถลดปัญหาที่เกิดจาการทำ Muti-GPGPU ในบัจจุบันเช่น ปัญหา micro-stuttering เป็นต้น (ตรงนี้เป็นจุดที่สำคัญที่สุด ซึ่งผมจะอธิบายให้ฟังในหัวข้อถัดไป)
ก่อนจะไปดูว่า Hydra Engine ทำงานยังไงเรามาทบทวนความรู้เก่ากันก่อนนะครับทบทวนการประมวลผล 3 มิติของ GPU (1 ตัว)1. ทำการประมวลผลทางโครงสร้าง 3มิติ (Geometry) ทำการสร้างโครงสร้างของวัตถุ 3มิติขึ้นมาด้วยการนำรูปสามเหลี่ยมมาต่อกันเป็นวัตถุ 3 มิติ (รูป สามเหลี่ยมดังกล่าวเรียกว่า Polygon) , ทำการจัดวางตำแหน่งของวัตถุ 3 มิติ ตามค่าพิกัดที่เกมส์ หรือโปรแกรมต่างๆกำหนดมาให้, หากวัดถุมีการซ้อนทับกันก็จะมีการตัด Polygon ในส่วนที่โดนบังออกเพื่อประหยัดหน่วยความจำ
2. ทำการสร้างพื้นผิวให้วัตถุโดยเติมลวดลาย ใส่สี ตลอดจนการลงแสงและเงาให้วัตถุ โดยทั้งหมดนี้จะอยู่ในรูปของจุดภาพหรือ Pixel นั้นเองครับ เราเรียกขั้นตอนนี้ว่า Pixel Processing ครับ
3.นำภาพที่ได้ไปเก็บในแรมบนการ์ดจอ และส่งไปแสดงผลบนจอภาพให้เราได้ชมกัน
การประมวลผลแบบ Multi-GPU ที่ AMD และ NVDIA เลือกใช้
AMD CrossfireX มีวิธีการประมวลผล Multi-GPU ให้เลือกใช้ 3 แบบได้แก่
1. Supertiling mode
2. Scissor mode
3. AFR (
Alternate
Frame
Rendering)
NVIDIA SLi มีวิธีการประมวลผล Multi-GPU ให้เลือกใช้ 2 แบบได้แก่
1. AFR
2. Split-frame (เหมือนกับ Scissor mode ของ AMD เลยครับ )
รู้จักกับข้อดีข้อเสียของทั้ง 3 วิธีกันภาพ แสดงทำงานของ Multi-GPU แบบ Supertiling mode
1.
Supertiling mode แบ่ง Frame ออกเป็นช่องๆคล้ายตารางหมากรุก ช่องละ 32 x 32 Pixel แล้วให้ทำการส่งช่องต่างๆให้ GPU แต่ละตัวประมวลผลในจำนวนช่องที่เท่าๆกัน
ข้อดี ทำให้ GPU ทั้ง 2 ตัวรับงานมาทำได้อย่างสมดุลกันมากที่สุดใน 3 วิธี
ข้อเสีย OpenGL ไม่สนับสนุนวิธีนี้ จึงทำให้วิธีนี้ได้รับความนิยมน้อยที่สุด
ภาพ แสดงทำงานของ Multi-GPU แบบ
Scissor mode หรือ
Split-frame 2.
Scissor mode หรือ
Split-frame แบ่ง Frame ออกเป็นส่วนๆและส่งแต่ละส่วนให้ GPU แต่ตัวประมวลผล
ข้อดี ทำง่าย มีปัญหาน้อย
ข้อเสีย ให้ประสิทธิภาพออกมาน้อยกว่า วิธีการแบบ AFR
ใช่ทรัพยากรไม่คุ้มค่า ตัวอย่างเช่นเรามีการ์ด 2 ตัวแล้วนำมาทำมัลติ GPU ด้วยวิธี Scissor mode หรือ Split-frame ในการทำงาน 1 frame การ์ดทั้ง 2 ตัวจะต้องโหลดข้อมูลของ frame นั้นๆทั้ง frame มาไว้บนการ์ดทั้ง 2 ตัว เหมือนๆกัน จากนั้นการทั้ง 2 ตัวจะต้องทำการประมวลผลทางโครงสร้าง 3มิติ (Geometry) ของ frame นั้นๆทั้ง frame เหมือนๆกัน จากนั้นการ์ดทั้ง 2 ตัวก็ช่วยกันทำการสร้างพื้นผิวให้วัตถุ (Pixel Processing) โดยแบ่งกันคนละครึ่งเฟรม จากนั้นก็นำเฟรมมารวมกันและส่งไปแสดงผลบนจอภาพ สรุปคือวิธีนี้มันจะช่วยกันทำงานในขั้นตอน Pixel Processing เท่านั้นเองครับ
ภาพ แสดงทำงานของ Multi-GPU แบบ
AFR (
Alternate
Frame
Rendering)
3.
AFR (
Alternate
Frame
Rendering) คือ แบ่งให้ GPU แต่ละตัวประมวลผลตัวละ Frame สลับกันไปเรื่อยๆ เช่น GPU ตัวที่ 1 จะประมวลผล frame คี่ เช่น Frame ที่ 1, 3, 5 ... และ GPU ตัวที่ 2 จะประมวลผล frame คู่ เช่น Frame ที่ 2, 4, 6 ... เป็นต้น
ข้อดีให้ FPS Max และ FPS Average สูงที่สุดใน 3 วิธี (BenchMark ออกมาแล้วดูดี)
ใช้ทรัพยากรได้คุ้มค้ากว่า Scissor mode หรือ Split-frame
เป็นวิธีที่นิยมใช้กันมากที่สุดใน 3 วิธี
ข้อเสียมักจะเกิดปัญหา micro-stuttering ขึ้น
ปัญหา micro-stuttering คือ ปัญหาที่เกิดขึ้นจากการไม่คงที่ของเวลาที่ใช้ในการเปลี่ยนจาก Frame หนึ่งไปยังอีก Frame หนึ่ง โดยมีหน่วยเป็น มิลิวินาที หรือ millisecond
ปัญหานี้จะเกิดกับการทำ Multi-GPU แบบ AFR เท่านั้น
ผลที่เกิดจาก micro-stuttering คือเล่นเกมแล้วกระตุกๆทั้งๆที่มีค่า FPS Max และ FPS Average สูงลิบลิ้ว หรือถ้าโชคร้ายเกมอาจจะมี Artifact (การประมวลผลกราฟิคออกมาผิดผลาด) เกิดขึ้นได้
หากเกิดเหตุการดังกล่าวขึ้น ท่านสามารถแก้ปัญหาได้ด้วยการเปลี่ยนไปใช้ Multi-GPU แบบ Scissor mode หรือ Split-frame แทนแบบ AFR ปัญหาดังกล่าวก็จะหมดไปครับ (แต่ FPS Max และ FPS Average ก็จะลดลงด้วยนะครับ )
ภาพ แสดงทำงานของ Multi-GPU โดยใช้ HYDRA Engine
การทำ Multi-GPU โดยใช้ HYDRA Engine- HYDRA Engine จะไปรับข้อมูล 3D เข้ามาก่อน ที่ข้อมูลนั้นจะไปถึงไดรเวอร์การ์ดจอ
- HYDRA Engine ทำการวิเคราะห์ข้อมูลที่ได้
- HYDRA Engine วิเคราะห์ความสามารถในการประมวลผลของการ์ดจอแต่ตัวที่อยู่ในระบบ
- HYDRA Engine แบ่งข้อมูลที่ได้รับมาเป็น Task (งาน) โดยแต่ละ Task คือ วัตถุ 3 มิติ ที่อยู่ใน Frame นั้นเองครับ
- HYDRA Engine ส่ง Task แต่ละ Task ไปให้กับไดรเวอร์ของการ์ดจอแต่ละตัว(หรือของแต่ละค่ายก็ได้) โดยจำนวน Task ที่การ์ดจอแต่ละตัวจะได้รับนั้นขึ้นอยู่กับ ความสามารถของการประมวลผลที่การ์ดแต่ละตัวจะสามารถทำได้
ตัวอย่างเช่น การทำทำ Multi-GPU ระหว่าง GTX280 กับ GTX260 ด้วย HYDRA Engine การ์ด GTX280 ก็จะได้ Task ไปประมวลผลเยอะกว่าเพราะมีประสิทธิภาพมากกว่า GTX260 จะได้ Task ไปน้อยกว่าเพราะมีประสิทธิภาพน้อยกว่า
- Task หรือวัตถุ 3 มิติ ที่ถูกแบ่งไปประมวลผลจะถูกนำกลับมารวมกันอยู่ในเฟรมตามค่าพิกัดที่มันควรอยู่ และถูกส่งไปแสดงผลบนหน้าจออีกครั้ง
ข้อดี1. วิธีการแบ่งงานได้สมดุลที่สุดเท่าที่เคยมีมาในวงการ Multi-GPU
2. การ์ดเล็กไม่หน่วงการทำงานการ์ดใหญ่
3. เขียวและแดงสมาณฉันกันได้
4. สามารถนำการ์ดใหม่มาทำ Multi-GPU กับการ์ดเก่าได้
5. คุณสามารถ เลือกได้ว่าจะทำ Multi-GPU กับ Hydra Engine หรือกลับไปใช้ SLi และ CrossfireX ก็ได้ ผ่านท่าน Control panel ของไดรเวอร์ Hydra Engine ครับ
ข้อเสียในปัจจุบันนี้ ประสิทธิภาพ ยังไม่แน่นอน เมื่อท่านได้ดูกราฟแสดงผลการทดสอบแล้วจะรู้เองครับ แต่ในอนาคตคิดว่าคงจะดีขึ้น
ผู้พัฒนา Hydra Engine อาจถูก NVIDIA ฟ้องได้เพราะไม่ได้ซื้อลิขสิทธิ์ SLi จาก NVIDIA อย่างถูกต้องนั้นเองครับ
ข้อจำกัด (ในขณะเวลาปัจจุบัน ที่เขียนบทความนี้)- ไดรเวอร์การ์ดจอจะต้องเป็นไปตาม เวอร์ชั่นที่ไดรเวอร์ของ Hydra Engine รุ่นนั้นๆกำหนด
- ขณะนี้ Hydra Engine สนับสนุน DX9 และ DX10 เท่านั้น
- สนับสนุน PhyX ในกรณีที่นำการ์ด NVIDIA มาต่อใช้ด้วยกันเองเท่านั้น
- N Mode หรือ โหมด Multi-GPU สำหรับ NVIDIA สนับสนุน G9x + G2xx, G2xx + G2xx, G9x + G9x
- A Mode หรือ R Mode หรือ Multi-GPU สำหรับ AMD สนับสนุน HD4xxx + HD4xxx, HD5xxx + HD5xxx, HD4xxx + HD5xxx
- X Mode Multi-GPU สำหรับให้ NVIDIA และ AMD สนับสนุน G9x, G2xx, HD4xxx และ HD5xxx เอา 4 ตัวนี้มาจับคู่กันตามใจชอบเลยครับ
- N Mode และ A Mode สนับสนุน Win Vista และ Win 7
- X Mode Win 7 เท่านั้น