รู้ทันสถาปัตยกรรม NVIDIA Fermi (GF100) : Page 1 (1/2)

Article by IonRa On January 28, 2010 8,757 views
รู้ทันสถาปัตยกรรม NVIDIA Fermi (GF100)
 1 2 > 

gf100-1

รู้ทัน สถาปัตยกรรม NVIDIA Fermi

สวัสดีครับ ท่านผู้อ่านที่รักทุกท่าน รู้สึกว่าช่วงนี้ NVIDIA จะค่อยทะยอยปล่อยข้อมูลเกี่ยวกับ GF100 หรือ Fermi ออกมาค่อนข้างจะถี่ และยิ่งนับวันข้อมูลที่ปล่อยออกมาก็เริ่มมีรายละเอียดเพิ่มขึ้นเรื่อยๆนะครับ และล่าสุด NVIDIA ก็ปล่อยข้อมูลเกี่ยวกับสถาปัตยกรรมของ GF100 ออกมาให้เว็บไซด์คอมพิวเตอร์ฮาร์แวร์หลายเว็บได้นำไปเผยแพร่กันแล้ว วันนี้เราก็จะรู้ทันกันว่าเจ้าสถาปัตยยกรรมของ GF100 นั้นมันมีการพัฒนาไปมากน้อยเพียงใดเมื่อเปรียบกับ GT200 และ G80 ซึ่งเป็นชิพรุ่นพี่ของมัน และสถาปัตยกรรมนี้เมื่อเทียบกับ Cypress ของทาง AMD แล้วใครจะดูดีกว่ากัน ท่านจะได้เห็นสิ่งต่างๆที่กล่าวมานี้ในบทความนี้ครับ

รู้ทันปัญหาคอขวดใน G80, GT200, R600, และR700

ก่อนที่จะพูดถึง Fermi หรือ GF100 ผมขอย้อนกลับไปพูดถึง G80 ก่อนนะครับ เพื่อที่ว่าเราจะได้เข้าใจถึงปัญหาคอขวดที่อยู่ใน G80, GT200, R600, และR700 ซึ่งการศึกษาปัญหาเหล่านี้จะทำให้เราเข้าใจ และรับรู้ถึงความยิ่งใหญ่ที่กำลังจะมาถึงของ GF100 ได้มากขึ้นนะครับ

g80archBlockDiagram ของ G80

gt200fullblock 2900xtarchdiag rv770-block

เรียงจาก ซ้ายไปขวา BlockDiagram ของ GT200, R600 และ R700

เพื่อความกระชับและรวดเร็วผมขอยกตัวอย่าง Block Diagram ของ G80 ให้ดูเพียงตัวอย่างเดียวนะครับ เพราะปัญหาที่ผมกำลังจะกล่าวถึงมันเป็นเหมือนกันทั้ง 4 ตัว (ใครอยากดู Block Diagram ของ GT200, R600, และR700 ก็คลิกรูปเล็กดูได้นะครับ) เอาล่ะเรามาเริ่มกันดีกว่า

  1. หลังจากที่เจ้า GPU (G80) ได้รับข้อมูลมากจาก CPU แล้ว GPU ก็จะส่งข้อมูลให้กับให้ VtX Thread Issue ซึ่งเจ้า VtX Thread Issue นี้ก็จะส่ง Thread ต่างๆที่เกี่ยวกับการประมวลผลทาง Vertex (จุดสามจุดที่เป็นรูป 3 เหลี่ยม หรือโพลีกอน) ไปให้ SP (Stream Processor) ที่มีอยู่มากมายไปให้ใน G80 ช่วยกันประมวลผล
  2. หลังจาก SP ประมวลผลเกี่ยวกับ Vertex เสร็จ แล้วมันก็จะส่งข้อมูลที่ประมวลผลเสร็จแล้ว ออกมาจากแถวของมัน และข้อมูลก็จะเดินตามเส้นสีเขียวๆข้างล่าง และกลับขึ้นไปข้างบนอีกครั้ง โดยข้อมูลเหล่านี้จะไปรวมกันที่ Geometry Thread Issue แล้วข้อมูลก็จะถูก Geometry Thread Issue ส่งไปประมวลผลทาง Geometry (โครงสร้าง) ตามกลุ่มของ SP ต่างๆครับ
  3. เมื่อประมวลผลเสร็จแล้ว ข้อมูลจะเป็นรวมกันที่ setup /Rasterizer / zcull เอาล่ะครับ ปัญหาคอขวดจะอยู่ที่จุดนี้ละครับ เพราะก่อนที่จะส่งค่าให้ Pixel Thread Issue ต่อไปได้นั้น ข้อมูล Geometry ที่ได้มาจะต้องถูก Rasterizer Unit แปลงค่าก่อนจึงจะสามารถส่งไปประมวลผลทาง Pixel ต่อได้ โดยข้อจำกัดของ Rasterizer Unit นี้ก็คือ มันสามารถแปลงค่ารูปสามเหลี่ยมได้เพียง 1 รูป ต่อ 1 รอบสัญญานนาฬิกาเท่านั้นครับ
  4. ข้อมูลถูกส่งให้ Pixel Thread Issue และกระจายให้ SP ที่อยู่ในแถวต่างๆ และสั่งให้พวกมันประมวลผลทางด้านพื้นผิววัตถุ 3 มิติ
  5. นำข้อมูลที่ได้เก็บไว้ที่แรมบนตัวการ์ด และส่งออกไปแสดงบนหน้าจอ

จากกระบวนการการทำงานที่กล่าวมา 5 ข้อเราจะพบว่าปัญหาคอขวดจะเกิดขึ้นในข้อ 3 เท่านั้น แต่การ์ดรุ่นหลังไม่ว่าจะเป็น GT200 ของ NVIDIA หรือ R600 และ R700 ของ ATi เองก็ยังไม่ได้แก้ปัญหาในจุดนี้เลย ทั้ง 2 ต่างให้ความสนใจกับการเพิ่มจำนวน และประสิทธิภาพในการทำงานของ SP เป็นหลัก ชิพรุ่นหลังจึงมี SP เพิ่มขึ้น เพิ่มขึ้น อย่างมากมายมหาศาล แต่กลับมี Rasterizer เพียงแค่ 1 Unit เท่านั้นเอง

Cypress ตัวแรกที่เริ่มแก้ปัญหาคอขวด

อย่างที่เราทุกคนทราบกันดีว่า Cypress หรือ Radeon HD5870 นั้นสนับสนุน DirectX 11 และ DirectX 11 นี้สนับสนุน Tessellation ซึ่ง เป็นเทคนิคที่ช่วยเพิ่มจำนวนโพลีกอนให้กับวัตถุ 3มิติ ที่มีจำนวนโพลีกอนน้อยให้มีจำนวนโพลีกอนมากขึ้น ซึ่งการมีโพลีกอนมากๆก็จะทำให้โครงสร้างมีความละเอียดมาก เมื่อโครงสร้างละเอียดมากๆ พื้นผิวของวัตถุที่ได้ก็จะละเอียดตามไปด้วยครับ

tess-01

ด้วยเหตุที่มีเทคนิค Tessellation เพิ่มขึ้นมานี้เอง ทำให้ทาง AMD ออกแบบ Cypress ให้มี Rasterizer จำนวน 2 ยูนิต เพื่อช่วยกันแบ่งเบาภาระการทำงาน และลดปัญหาคอขวดไปพร้อมกันครับ

cypresslarge

เกร็ดความรู้

Tessellation นี้เดิมที่มีอยู่ใน GPU ของ AMD ตั้งแต่สมัย R600 (Radeon HD2000) และ ATi Xenos (GPU ของเครื่องเล่นเกมส์ XBOX 360)มานานแล้วครับ แต่ในกรณีของ R600 และ R700 ไม่สามารถใช้เทคนิคนี้ได้เพราะ DirectX 10 และ 10.1 ยังไม่สนับสนุนเทคนิคนี้ ส่วนในกรณีของ ATi Xenos นั้น ก็มีเกมส์บางเกมส์ใน XBOX 360 ที่เรียกใช้งานเทคนิคนี้อยู่พอสมควรครับ

 1 2 >