ผ่าสเปคการ์ดจอ! : เผยเบื้องหลังความหมายของศัพท์ยอดนิยมที่ทำให้ท่านปวดหัว

SAMSUNG TECHWIN DIGIMAX-340

ถ้าคิดจะซื้อการ์ดกราฟิกสักตัวเพื่อไว้ใช้งาน เชื่อได้เลยว่าทุกท่านก็ต้องอยากได้รุ่นที่มีแรมเยอะๆ ความเร็วสัญญาณนาฬิกาสูงๆ มีจำนวน CUDA Cores หรือ Stream Processors มากๆ เข้าไว้ ซึ่งก็ไม่ผิด เพราะเป็นความจริงที่หลีกเลี่ยงไม่ได้ว่าลูกเล่นคุณสมบัติที่กล่าวไปทั้งหมดนั้นมียิ่งเยอะยิ่งดี แต่เคยแอบสงสัยบ้างไหมครับว่าคำศัพท์แปลกๆ ที่กล่าวไปและที่แปะไว้บนกล่องการ์ดจอซึ่งมักถูกผู้ผลิตนำมาข่มคู่แข่งบ่อยๆ นั้นมันหมายถึงอะไร? แล้วจริงหรือที่ความเร็วสัญญาณนาฬิกายิ่งเยอะยิ่งดี? ตลอดจนคุ้มหรือไม่ที่จะเสียเวลาร่วมครึ่งค่อนวันไปกับการโอเวอร์คล็อกเพื่อให้ได้ความเร็วที่เพิ่มขึ้นและนำไปอวดชาวบ้านได้? สำหรับในบทความนี้ผมจะอาสาไขความลับของสเปคการ์ดจอส่วนใหญ่ที่มักเคยได้ยินกันให้ฟังครับ

จริงหรือที่ความเร็วสัญญาณนาฬิกาจีพียูยิ่งเยอะยิ่งดี? 

โดยทั่วไปแล้วความเร็วหรือความถี่ (frequency) ของสัญญาณนาฬิกาจะหมายถึงจำนวนครั้งของการประมวลผลคำสั่งทุกๆ หนึ่งวินาทีที่ตัวชิพสามารถทำได้ ซึ่งใช้หลักการเดียวกันทั้งบนซีพียูและจีพียู ในปัจจุบัน ส่วนใหญ่จะมีหน่วยเป็นเมกกะเฮิร์ท (MHz) หรือกิกกะเฮิร์ท (GHz) โดยที่ผู้ผลิตมักใช้ค่านี้จะใช้ในการระบุว่าตัวชิพมีความเร็วแค่ไหน ยกตัวอย่างเช่น 700MHz นั้นก็หมายความว่าตัวชิพสามารถประมวลผลชุดคำสั่งได้ 700 ล้านครั้งต่อหนึ่งวินาที

แต่ในการใช้งานจริงนั้น ค่านี้เพียงค่าเดียวไม่สามารถใช้ในการวัดประสิทธิภาพของตัวการ์ดทั้งหมดได้ เพราะแต่ละสถาปัตยกรรมจีพียูนั้นมีการทำงานที่ไม่เหมือนกัน เช่น จีพียู A อาจสามารถรองรับจำนวนงานได้ 3 หน่วยต่อวินาทีแต่มีความเร็วช้ากว่า ส่วนจีพียู B อาจรองรับจำนวนงานได้ 1 หน่วยต่อวินาทีแต่วิ่งที่ความเร็วมากกว่า ลองนึกเปรียบเทียบการขนคนจากที่หนึ่งไปอีกที่หนึ่งโดยใช้รถสปอร์ตและรถตู้ดูก็ได้ครับ รถสปอร์ตอาจขนคนต่อเที่ยวได้น้อยกว่า แต่ก็วิ่งเร็วกว่ารถตู้ที่สามารถขนคนต่อเที่ยวได้มากกว่า แต่วิ่งด้วยความเร็วที่น้อยกว่า ความแตกต่างด้านการออกแบบระหว่างรถทั้งสองนี้ก็เหมือนกับความแตกต่างระหว่างสถาปัตยกรรมของจีพียูแต่รุ่นนั่นเอง เพราะฉะนั้นสถาปัตยกรรมใดที่ออกแบบมาให้รองรับปริมาณงานที่มากกว่า ก็อาจไม่จำเป็นต้องวิ่งที่ความเร็วมากเสมอไปเพื่อประหยัดพลังงาน

นอกจากสถาปัตยกรรมจะเป็นตัวกำหนดประสิทธิภาพการทำงานแล้ว การ์ดจอยังมีตัวแปรอื่นอีกมากที่สามารถใช้บ่งชี้สมรรถนะได้ เช่น Vertex Shader, Shader Clock, Pixel Pipeline, ROP Unit, Stream Processors และหน่วยความจำ (Memory) เอาล่ะมาดูทีละอย่างเลยดีกว่า

Vertex Shader คืออะไร?

ตัวอย่างภาพที่ใช้ Vertex Shader เรนเดอร์
ตัวอย่างภาพที่ใช้ Vertex Shader เรนเดอร์

กล่าวให้เข้าใจง่ายๆ Vertex Shader ก็คือตัวสร้างสรรค์สารพันอาหารตาทั้งหลายที่อยู่ภายใต้สภาวะแวดล้อมสามมิติในฉากนั่นเอง หลักการคือหลังจากที่ได้มีคำนวณหาตำแหน่งของวัตถุภายในฉากที่ระบุโดยโปรแกรมหรือเกมที่กำลังรันอยู่แล้ว Vertex Shader ก็จะเติมเต็มส่วนที่เป็นวัตถุสามมิติภายในฉาก รวมทั้งแสงและสีด้วย จากนั้นก็จะแปลงฉากสามมิติทั้งฉากให้กลายเป็นภาพสองมิติ เพื่อส่งต่อไปให้ Pixel Pipeline ทำการประมวลผลต่อ

Pixel Pipeline สุดยอดตัวกินกำลังเครื่อง

อยากได้ภาพสวยๆ แบบนี้ต้องพึ่ง Pixel Shader แล้วล่ะ
อยากได้ภาพสวยๆ แบบนี้ต้องพึ่ง Pixel Shader แล้วล่ะ

Pixel Pipeline มักรู้จักกันในอีกชื่อหนึ่งว่า Pixel Shader หรือ Shader เฉยๆ จะว่าไปแล้วกระบวนการเรนเดอร์ในขั้นตอนนี้นับเป็นขั้นตอนที่กินกำลังเครื่องที่สุดก็ว่าได้ เพราะหน้าที่คือทำการเติมพิกเซลให้เต็มพื้นที่ทั้งหมดตามความละเอียดหน้าจอที่ตั้งไว้ ยกตัวอย่างเช่นภายใต้หน้าจอความละเอียด 1920×1080 หรือ 1080p ยอดนิยมนั้นจีพียูต้องเรนเดอร์ปริมาณพิกเซลมากถึง 2,073,600 ชิ้นต่อเฟรม ซึ่งนี่แหละเป็นที่มาของ FPS (Frame per second) หรือเฟรมต่อวินาที ถ้าท่านผู้อ่านต้องการให้เกมของท่านรันได้ที่ 60FPS นั้นก็หมายความว่าการ์ดจอของท่านต้องประมวลผล 124,416,000 พิกเซลต่อวินาทีเลยทีเดียว! โดยทั่วไปแล้ว Shader จะทำงานในสองลักษณะคือ “เชื่อม” (link) หรือ “ไม่เชื่อม” (unlink) เข้ากันกับความเร็วของชิพจีพียู โดยที่การ์ดของ AMD/ATI นั้นมักจะทำงานในแบบแรก ในขณะที่การ์ด NVIDIA รุ่นก่อนๆ มักทำงานในแบบหลัง แต่เพิ่งจะมาเปลี่ยนไปทำงานแบบ link เมื่อเร็วๆ นี้ ที่ซึ่งความเร็วของ Pixel Shader จะถูกกำหนดโดยอัตราส่วนระหว่างตัวมันเองและความเร็วสัญญาณนาฬิกาจีพียูตามที่ NVIDIA กำหนด

ROP Unit

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

Stream Processor คืออะไร?

ที่เห็นเป็นช่องเชียวๆ เล็กๆ เรียงกันอยู่นั่นแหละ Stream Processor หรือที่ NVIDIA เรียกว่า CUDA Core นั่นเอง
ที่เห็นเป็นช่องเชียวๆ เล็กๆ เรียงกันอยู่นั่นแหละ Stream Processor หรือที่ NVIDIA เรียกว่า CUDA Core นั่นเอง

จะว่าไปแล้ว Stream Processor นับเป็นเทคโนโลยีใหม่ที่ใช้ในการพัฒนาการ์ดจอ เพราะเมื่อก่อนโน้น ผู้ผลิตต้องพัฒนาวงจรแต่ละชิ้นเพื่ออุทิศให้กับการประมวลผล ROP, Pixel Pipeline, และ Vertex Shader แยกกัน แต่เจ้า Stream Processor นั้นสามารถทำหน้าที่แทนได้ทุกอย่างแล้วแต่จะถูกโปรแกรมหรือได้รับการปรับแต่งลงไป ถ้าตัวการ์ดต้องการปริมาณ ROP Units มากกว่า Pixel Shader ผู้พัฒนาเพียงรีโปรแกรมตัว Processor บางส่วนใหม่เท่านั้น ข้อดีที่ Stream Processors มีเหนือกว่าวิธีการแบบดั้งเดิมคือมีความยืดหยุ่นในการพัฒนามากกว่า แต่ก็มีจุดสังเกตคือการประมวลผลทุกอย่างที่กล่าวไปต้องรันที่ความเร็วเดียวกันเพราะอยู่ใต้สภาวะแวดล้อมเดียวกัน ถ้า Pixel Shaders รันที่ความเร็ว 900Mhz ที่เหลือก็ต้องรันที่ 900MHz ด้วย ซึ่งไม่เหมือนกับวิธีการแบบเก่าที่สามารถตั้งความเร็วได้อย่างอิสระ

แล้วหน่วยความจำบนการ์ดจอล่ะ?

เม็ดเล็กๆ แบบนี้ล่ะคือหน่วยความจำกราฟิกการ์ด
เม็ดเล็กๆ แบบนี้ล่ะคือหน่วยความจำกราฟิกการ์ด

ในหลักการแล้วหน่วยความจำที่อยู่บนการ์ดจอก็เหมือนๆ กับสถาปัตยกรรมของจีพียูในแง่ว่ามีด้วยกันหลายประเภท และในแต่ประเภทก็ออกแบบมาให้มีวิธีการทำงานทีไม่เหมือนกัน ผู้ผลิตอาจให้ความสำคัญกับบัสหน่วยความจำที่มากกว่าโดยยอมให้วิ่งที่ความเร็วช้ากว่าเพื่อประหยัดพลังงาน หรือจะยอมใช้บัสที่แคบและเน้นปั๊มความเร็วอย่างเดียวก็ไม่ผิด เอาล่ะมาเริ่มที่ประเภทหน่วยความจำกันก่อนเลย เช่นเดียวกับแรมคอมพิวเตอร์ทั่วๆ ไป แรมบนการ์ดจอก็มีหลายประเภทไม่แพ้กัน เริ่มจาก SDRAM (single data rate) ในอดีตที่วิ่งด้วยความเร็ว 100MHz ต่อจากนั้นก็ตามมาด้วย DDR (double data rate) ที่ดับเบิ้ลความเร็วเป็นสองเท่า จากมาตรฐานเดิมที่แปะป้ายไว้ว่าวิ่งที่ 100MHz แต่จะวิ่ง effective จริงที่ 200MHz บน DDR และนับตั้งแต่นั้นเป็นต้นมาจนถึง DDR4 แรมชนิดนี้จะวิ่งที่ความเร็วดับเบิ้ลคูณสองเสมอ เพิ่งจะมาเปลี่ยนตอน DDR5 นี่เอง โดยจากเดิมที่ความเร็วจะคูณสองก็เพิ่มมาเป็นคูณสี่แทน ซึ่งหมายความว่าหน่วยความจำความเร็ว 100MHz นั้นจะถูกปั๊มให้วิ่งที่ 400MHz นั่นเอง

เมื่อความเร็วไม่ใช่ทุกอย่างของหน่วยความจำ

แนวคิดพื้นฐานที่สุดในการชดเชยความเร็วที่น้อยกว่าของหน่วยความจำคือการอัดขนาดของบัสเพื่อเพิ่มแบนวิธหรือปริมาณข้อมูลที่สามารถส่งไปได้ ซึ่งในทางทฤษฎีแล้วถ้าเราเพิ่มปริมาณบัสลงไปมากพอก็จะสามารถทำให้แรม DDR3 เอาชนะแรม DDR5 ได้อย่างสบาย แต่อย่างไรก็ตามในทางปฏิบัติจริงกลับไม่ได้ง่ายดายเช่นนั้นเพราะบัสที่มีขนาดใหญ่กว่าย่อมหมายถึงใช้พื้นที่ภายในแกนประมวลผลจีพียูมากกว่าด้วย ดังนั้นจึงไม่ต้องแปลกใจถ้าเราเห็นการ์ดจอทั่วๆ ไปส่วนใหญ่จะมีบัสหน่วยความจำที่ 256 บิต อันเนื่องมาจากเป็นจุดตัดที่ลงตัวระหว่างปริมาณข้อมูลที่สามารถส่งไปได้ซึ่งมากพอ ในขณะที่ไม่กินพื้นที่มากเกินไป สำหรับการ์ดในระดับกลาง-ล่างนั้นส่วนใหญ่จะมีบัสหน่วยความจำที่ 128 บิต ส่วนบัสที่แคบมากอย่าง 64 บิตมักสงวนไว้สำหรับการ์ดในระดับล่างสุดรุ่นเล็กเท่านั้น ในขณะที่ในการ์ดรุ่นใหญ่เราอาจเป็นปริมาณบัสมหาศาลที่ 384 บิต 448 บิต หรือ 512 บิตไปเลยก็มี แต่อาจไม่ได้เห็นบ่อยมากนักเพราะกินพื้นที่ภายในแกนประมวลผลจีพียูค่อนข้างมาก ส่งผลให้แพ็กเกจโดยรวมมีขนาดใหญ่และทำให้ตัวการ์ดมีขนาดใหญ่เพิ่มขึ้นไปด้วยในตัว สำหรับการทำงานร่วมกันระหว่างบัสและความเร็วหน่วยความจำนั้นก็มีลักษณะเดียวกับตัวอย่างรถสปอร์ตกับรถตู้ที่กล่าวไปข้างต้น ถ้าบัสมีความกว้างมากก็ไม่จำเป็นต้องอัดความเร็วสัญญาณนาฬิกาให้สูงเสมอไป ฉะนั้นจึงเป็นหน้าที่ของผู้ผลิตการ์ดที่จะต้องเป็นผู้กำหนดจุดที่ลงตัวระหว่างตัวแปรทั้งสองเพื่อให้รับส่งข้อมูลได้อย่างไม่ติดขัดครับ

บทสรุป

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

Advertisements

One thought on “ผ่าสเปคการ์ดจอ! : เผยเบื้องหลังความหมายของศัพท์ยอดนิยมที่ทำให้ท่านปวดหัว

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s