รู้ทันสถาปัตยกรรม NVIDIA Fermi (GF100)
Share | Tweet |
รู้ทัน สถาปัตยกรรม NVIDIA Fermi
สวัสดีครับ ท่านผู้อ่านที่รักทุกท่าน รู้สึกว่าช่วงนี้ NVIDIA จะค่อยทะยอยปล่อยข้อมูลเกี่ยวกับ GF100 หรือ Fermi ออกมาค่อนข้างจะถี่ และยิ่งนับวันข้อมูลที่ปล่อยออกมาก็เริ่มมีรายละเอียดเพิ่มขึ้นเรื่อยๆนะครับ และล่าสุด NVIDIA ก็ปล่อยข้อมูลเกี่ยวกับสถาปัตยกรรมของ GF100 ออกมาให้เว็บไซด์คอมพิวเตอร์ฮาร์แวร์หลายเว็บได้นำไปเผยแพร่กันแล้ว วันนี้เราก็จะรู้ทันกันว่าเจ้าสถาปัตยยกรรมของ GF100 นั้นมันมีการพัฒนาไปมากน้อยเพียงใดเมื่อเปรียบกับ GT200 และ G80 ซึ่งเป็นชิพรุ่นพี่ของมัน และสถาปัตยกรรมนี้เมื่อเทียบกับ Cypress ของทาง AMD แล้วใครจะดูดีกว่ากัน ท่านจะได้เห็นสิ่งต่างๆที่กล่าวมานี้ในบทความนี้ครับ
รู้ทันปัญหาคอขวดใน G80, GT200, R600, และR700
ก่อนที่จะพูดถึง Fermi หรือ GF100 ผมขอย้อนกลับไปพูดถึง G80 ก่อนนะครับ เพื่อที่ว่าเราจะได้เข้าใจถึงปัญหาคอขวดที่อยู่ใน G80, GT200, R600, และR700 ซึ่งการศึกษาปัญหาเหล่านี้จะทำให้เราเข้าใจ และรับรู้ถึงความยิ่งใหญ่ที่กำลังจะมาถึงของ GF100 ได้มากขึ้นนะครับ
เรียงจาก ซ้ายไปขวา BlockDiagram ของ GT200, R600 และ R700
เพื่อความกระชับและรวดเร็วผมขอยกตัวอย่าง Block Diagram ของ G80 ให้ดูเพียงตัวอย่างเดียวนะครับ เพราะปัญหาที่ผมกำลังจะกล่าวถึงมันเป็นเหมือนกันทั้ง 4 ตัว (ใครอยากดู Block Diagram ของ GT200, R600, และR700 ก็คลิกรูปเล็กดูได้นะครับ) เอาล่ะเรามาเริ่มกันดีกว่า
- หลังจากที่เจ้า GPU (G80) ได้รับข้อมูลมากจาก CPU แล้ว GPU ก็จะส่งข้อมูลให้กับให้ VtX Thread Issue ซึ่งเจ้า VtX Thread Issue นี้ก็จะส่ง Thread ต่างๆที่เกี่ยวกับการประมวลผลทาง Vertex (จุดสามจุดที่เป็นรูป 3 เหลี่ยม หรือโพลีกอน) ไปให้ SP (Stream Processor) ที่มีอยู่มากมายไปให้ใน G80 ช่วยกันประมวลผล
- หลังจาก SP ประมวลผลเกี่ยวกับ Vertex เสร็จ แล้วมันก็จะส่งข้อมูลที่ประมวลผลเสร็จแล้ว ออกมาจากแถวของมัน และข้อมูลก็จะเดินตามเส้นสีเขียวๆข้างล่าง และกลับขึ้นไปข้างบนอีกครั้ง โดยข้อมูลเหล่านี้จะไปรวมกันที่ Geometry Thread Issue แล้วข้อมูลก็จะถูก Geometry Thread Issue ส่งไปประมวลผลทาง Geometry (โครงสร้าง) ตามกลุ่มของ SP ต่างๆครับ
- เมื่อประมวลผลเสร็จแล้ว ข้อมูลจะเป็นรวมกันที่ setup /Rasterizer / zcull เอาล่ะครับ ปัญหาคอขวดจะอยู่ที่จุดนี้ละครับ เพราะก่อนที่จะส่งค่าให้ Pixel Thread Issue ต่อไปได้นั้น ข้อมูล Geometry ที่ได้มาจะต้องถูก Rasterizer Unit แปลงค่าก่อนจึงจะสามารถส่งไปประมวลผลทาง Pixel ต่อได้ โดยข้อจำกัดของ Rasterizer Unit นี้ก็คือ มันสามารถแปลงค่ารูปสามเหลี่ยมได้เพียง 1 รูป ต่อ 1 รอบสัญญานนาฬิกาเท่านั้นครับ
- ข้อมูลถูกส่งให้ Pixel Thread Issue และกระจายให้ SP ที่อยู่ในแถวต่างๆ และสั่งให้พวกมันประมวลผลทางด้านพื้นผิววัตถุ 3 มิติ
- นำข้อมูลที่ได้เก็บไว้ที่แรมบนตัวการ์ด และส่งออกไปแสดงบนหน้าจอ
จากกระบวนการการทำงานที่กล่าวมา 5 ข้อเราจะพบว่าปัญหาคอขวดจะเกิดขึ้นในข้อ 3 เท่านั้น แต่การ์ดรุ่นหลังไม่ว่าจะเป็น GT200 ของ NVIDIA หรือ R600 และ R700 ของ ATi เองก็ยังไม่ได้แก้ปัญหาในจุดนี้เลย ทั้ง 2 ต่างให้ความสนใจกับการเพิ่มจำนวน และประสิทธิภาพในการทำงานของ SP เป็นหลัก ชิพรุ่นหลังจึงมี SP เพิ่มขึ้น เพิ่มขึ้น อย่างมากมายมหาศาล แต่กลับมี Rasterizer เพียงแค่ 1 Unit เท่านั้นเอง
Cypress ตัวแรกที่เริ่มแก้ปัญหาคอขวด
อย่างที่เราทุกคนทราบกันดีว่า Cypress หรือ Radeon HD5870 นั้นสนับสนุน DirectX 11 และ DirectX 11 นี้สนับสนุน Tessellation ซึ่ง เป็นเทคนิคที่ช่วยเพิ่มจำนวนโพลีกอนให้กับวัตถุ 3มิติ ที่มีจำนวนโพลีกอนน้อยให้มีจำนวนโพลีกอนมากขึ้น ซึ่งการมีโพลีกอนมากๆก็จะทำให้โครงสร้างมีความละเอียดมาก เมื่อโครงสร้างละเอียดมากๆ พื้นผิวของวัตถุที่ได้ก็จะละเอียดตามไปด้วยครับ
ด้วยเหตุที่มีเทคนิค Tessellation เพิ่มขึ้นมานี้เอง ทำให้ทาง AMD ออกแบบ Cypress ให้มี Rasterizer จำนวน 2 ยูนิต เพื่อช่วยกันแบ่งเบาภาระการทำงาน และลดปัญหาคอขวดไปพร้อมกันครับ
เกร็ดความรู้
Tessellation นี้เดิมที่มีอยู่ใน GPU ของ AMD ตั้งแต่สมัย R600 (Radeon HD2000) และ ATi Xenos (GPU ของเครื่องเล่นเกมส์ XBOX 360)มานานแล้วครับ แต่ในกรณีของ R600 และ R700 ไม่สามารถใช้เทคนิคนี้ได้เพราะ DirectX 10 และ 10.1 ยังไม่สนับสนุนเทคนิคนี้ ส่วนในกรณีของ ATi Xenos นั้น ก็มีเกมส์บางเกมส์ใน XBOX 360 ที่เรียกใช้งานเทคนิคนี้อยู่พอสมควรครับ
รู้จักสถาปัตยกรรมของ GF100
หลังจากเราได้ทราบถึงปัญหา วิธีการแก้ปัญหา และรวมถึงเทคโนโลยีทางด้านกราฟฟิคใหม่ๆอย่าง Tessellation ที่พร้อมจะมาเพิ่มภาระและ ปัญหาให้ GPU ของเราแล้ว มีหรือเจ้าพ่อแห่งวงการการ์ดจอ อย่าง NVIDIA จะไม่ทราบถึงปัญหาเหล่านี้ ดังนั้น NVIDIA จึงได้ใช้ความพยามรวมถึงความคิดสร้างสรรค์ บวกกับความใจเย็น (โดยไม่หวั่นไหวว่าคู่แข่งเขาจะออกผลิตภัณฑ์มาล่วงหน้าก่อนตนเองเป็นเวลา 6เดือนแล้ว และไม่หวั่นไหวด้วยว่าแฟนๆจะเข้าใจจะว่าอย่างไร) โดยเวลาทั้งหมดนี้ได้ทุ่มเทไปเพื่อให้ได้ GPU แห่งอนาคต และเพื่อเกมส์ในอนาคตที่กำลังจะมาถึง นั่นคือ GF100 นั่นเองครับ
ว่าแล้วก็มาชม Block Diagram ของ GF100 ที่ NVIDIA ทุ่มทั้งเวลาและความสามารถเพื่อให้ได้มันมา มาดูกันสิว่าหน้าตาของมันจะเป็นอย่างไร
เป็นยังไงบ้างครับหน้าตา Block Diagram ของ GF100 เปลี่ยนแปลงไปจาก หน้าตา Block Diagram ของ G80 และ GT200 พอสมควรครับ (แต่กลับไปคล้ายๆกับ Block Diagram ของ Intel Larabee นะครับ ว่าไหม)
สำหรับ GF100 นี้ NVIDIA ได้แบ่งชุดการประมวลผลออกเป็น 4 ชุดโดยเหมือนๆกัน โดยทาง NVIDIA เรียกชุดการประมวลผลเหล่านี้ว่า GPC (Graphics Processing Clusters) โดยในแต่ละ GPC จะประกอบด้วย
1. Raster Engine 1 Unit
2. SM (Streaming Multiprocessors) จำนวน 4 ชุดต่อ 1 GPC โดยภายใน SM นี้จะประกอบด้วย
2.1. CUDA Core จำนวน 16 Cores (CUDA Core ก็คือ Stream Processor นั่นแหละครับพี่น้อง)
2.2. Texture Unit จำนวน 4 ตัวต่อ 1 SM
2.3. Texture Cache
2.4. L1 Cache 64 KB
2.5. PolyMorph Engine (ตัวนี้สำคัญมากเลยครับ NVIDIA บอกว่าเป็นเพราะตัวนี้นี่แหละครับ ที่ทำให้ GF100 ออกช้ากว่ากำหนด)
นอกจากนี้ใน GF100 ยังมี L2 Cache 768 KB สำหรับให้ GPC ทั้ง 4 ตัวมาใช้งานรวมกันด้วยครับ เราจะเห็นว่า NVIDIA ได้พยายามที่จะลดปัญหาคอขวดที่เคยปรากฎขึ้นในสถาปัตยกรรมรุ่นก่อนออกไป ด้วยการเพิ่ม Raster Engine เข้าไปในตัวชิพถึง 4 ยูนิต นอกจากนั้นยังเตรียมพร้อมสนับสนุนเทคโนโลยีใหม่อย่าง Tesellation โดยการเพิ่ม PolyMorph Engine เข้าไปใน SM ด้วย(ภายใน GF100 มี 16 SM ดังนั้น GF100 จึงมี PolyMorph Engine 16 Unit)
ภาพแสดง pipe-line ของ Raster Engine ซึ่งเป็นฮาร์ดแวร์ที่จัดการเกี่ยวกับ Raster
** Rasterization คือ การแปลงข้อมูลที่อยู่ในรูปของ Vector ออกมาเป็น จุด หรือ Pixel
PolyMorph Engine คือยูนิตที่คอยจัดการเกี่ยวกับโครงสร้าง(Geometry) ของวัตถุ 3มิติ สิ่งที่ PolyMorph Engine จัดการได้แก่ Vertex Fetch, Tessellator, Viewport Transform, Attribute Setup และ Stream Output
การเพิ่ม PolyMorph Engine เข้าไปในชิพถึง 16 ยูนิตจะเพิ่มประสิทธิภาพในการประมวลผลทางโครงสร้าง 3มิติของ GF100 ให้เหนือกว่า GT200 เป็น อย่างมากมายเลยครับ และที่สำคัญ PolyMorph ยังช่วยให้ GF100 สามารถใช้เทคนิคใหม่ที่ไม่มีใน GT200 ได้อีกด้วยเช่น Tessellation เป็นต้น
คุณภาพ และประสิทธิภาพของการลงลอยหยักที่เพิ่มขึ้น
GT200 16XQ (8CSAA + 8MSAA)
ด้วยระบบลบรอยหยักแบบใหม่ เนียนกว่าเดิมกันอย่างเห็นได้ชัดครับ
3D Surround
จริงๆก็ไม่มีอะไรมากครับ ก็แค่คุณสมบัติคุณสมบัติต่อหลายจอเท่านั้นเองครับ โดยการ GF100 ตัวหนึ่งจะสามารถต่อออกได้ 2 จอภาพ แต่หากอยากจะต่อภาพออก 3 จอก็ต้องนำการ์ดมาต่อ SLi กันก่อนนะครับ
สรุป
สุดท้ายนี้เราก็ได้ทราบถึงสิ่งใหม่ๆที่เพิ่มเข้ามาใน GF100 กันแล้ว สิ่งเดี่ยวทีค้างคาใจใครต่อใครหลายๆคนคือ GF100 นี้จะแรงขนาดไหนพอเล่นเกมส์จริงๆแล้วมันจะเป็นยังไงบ้าง สิ่งเหล่าเราคงจะได้รับคำตอบในเดือนมีนาคม ที่นี่ อย่างแน่นอนครับ