จากครั้งก่อนผมได้ post เป็นวิดีโอครั้งหนึ่งแล้วเกี่ยวกับ Async Shaders แต่หลายท่านอาจจะไม่เข้าใจว่ามันคืออะไรวันนี้ผมจะมาอธิบายอย่างละเอียดนะครับตกหล่นอะไรก็ขออภัยนะครับพิมพ์เองหมด
Async Shaders คือเทคนิคใหม่ที่จะเพิ่มลงไปใน DX12 และ Vulkan APIs ทำให้ API มีประสิทธิภาพสูงมากยิ่งขึ้นไปอีกหลายเท่า โดยทาง AMD ยีนยันว่ามันจะใส่ลงไปใน DX12 และ Vulkan APIs อย่างแน่นอน Async Shaders เป็นเทคนิคที่คิดค้นโดยทีม AMD (red team) จะทำให้ API เข้าใช้งาน asynchronous compute engines หรือเรียกสัั้นๆ ว่า ACE ขั้นสูงได้อย่างเต็มประสิทธิภาพ ซึง ACE นั่นมีอยู่ในสถาปัตยกรรม GCN ทุกตัว

ก่อนจะกล่าวถึงคุณสมบัติเชิงลึกของมัน มาพูดถึงเทคนิคแบบเก่าก่อน ใน DX11 การทำงานจะอยู่ pipeline เดียวกันหมดดังภาพ
จากภาพมันทำให้เกิดปัญหาคอขวด เป็นสาเหตุทำให้เกิดอาการแลคขึ้นในเกม หรือทำให้เกิดอาการกินสเปคอย่างเหลือเชื่อ
การทำงานแบบนี้จะทำให้เกิดปัญหากับการ์ด AMD อย่างมากเพราะการ์ดจอ AMD ออกแบบมาประมวลผลแบบเชิงกว้างแต่มาติดปัญหาคอขวดต้องรอ pipeline เส้นเดียวกันให้เสร็จก่อนถึงจะทำงานต่อไปได้ แต่ NVIDIA จะได้เปรียญกับการทำงานแบบนี้เพราะสถาปัตย์กรรมตรงข้ามกันเลย และปัญหานี้จะยิ่งเพิ่มขึ้นไปอีก หากต่อกับการ์ดจอหลายใบทำให้เกิดคอขวดมากไปอีก


Async Shaders จะมาแก้ปัญหาเหล่านี้ทั้งหมดโดยจะทำการการจายงานออกเป็นหลายๆ pipeline ต่อการประมวลผลหนึ่งคำสั่ง จะช่วยทำให้ประสิทธิภาพดีขึ้นกว่าเดิม 40 % เลยทีเดียว
ยังไม่หมดแค่นี Async Shaders ยังเพิ่มเทคนิคคล้ายๆ hyper-threading บน cpu ลง ใน GPU ด้วย หากช่วงไหนของ pipeline มีช่องว่างพอที่จะยัดคำสั่งนั่นๆเข้าไปมันจะแซงคิวให้เลยไม่ต้องรอให้เสียเวลารอรอบใหม่ ทำให้เร็วขึ้นไปอีก

จากการทดลองทั้งสามภาพ
-ภาพแรกปิดเพิ่มรอยยักของภาพเกม
-ภาพสองเปิดเพิ่มรอยยักของภาพเกม สังเกตุ เฟรมของเกมจะตกลงมาก
-ภาพสามเปิดเพิ่มรอยยักของภาพเกม และเปิด Async Shaders สังเกตุ เฟรมดีเกือบเท่าไม่เปิดรอยยักเลยทีเดียว
ที่มา
Async Shaders คือเทคนิคใหม่ที่จะเพิ่มลงไปใน DX12 และ Vulkan APIs ทำให้ API มีประสิทธิภาพสูงมากยิ่งขึ้นไปอีกหลายเท่า โดยทาง AMD ยีนยันว่ามันจะใส่ลงไปใน DX12 และ Vulkan APIs อย่างแน่นอน Async Shaders เป็นเทคนิคที่คิดค้นโดยทีม AMD (red team) จะทำให้ API เข้าใช้งาน asynchronous compute engines หรือเรียกสัั้นๆ ว่า ACE ขั้นสูงได้อย่างเต็มประสิทธิภาพ ซึง ACE นั่นมีอยู่ในสถาปัตยกรรม GCN ทุกตัว

ก่อนจะกล่าวถึงคุณสมบัติเชิงลึกของมัน มาพูดถึงเทคนิคแบบเก่าก่อน ใน DX11 การทำงานจะอยู่ pipeline เดียวกันหมดดังภาพ
จากภาพมันทำให้เกิดปัญหาคอขวด เป็นสาเหตุทำให้เกิดอาการแลคขึ้นในเกม หรือทำให้เกิดอาการกินสเปคอย่างเหลือเชื่อ
การทำงานแบบนี้จะทำให้เกิดปัญหากับการ์ด AMD อย่างมากเพราะการ์ดจอ AMD ออกแบบมาประมวลผลแบบเชิงกว้างแต่มาติดปัญหาคอขวดต้องรอ pipeline เส้นเดียวกันให้เสร็จก่อนถึงจะทำงานต่อไปได้ แต่ NVIDIA จะได้เปรียญกับการทำงานแบบนี้เพราะสถาปัตย์กรรมตรงข้ามกันเลย และปัญหานี้จะยิ่งเพิ่มขึ้นไปอีก หากต่อกับการ์ดจอหลายใบทำให้เกิดคอขวดมากไปอีก


Async Shaders จะมาแก้ปัญหาเหล่านี้ทั้งหมดโดยจะทำการการจายงานออกเป็นหลายๆ pipeline ต่อการประมวลผลหนึ่งคำสั่ง จะช่วยทำให้ประสิทธิภาพดีขึ้นกว่าเดิม 40 % เลยทีเดียว

ยังไม่หมดแค่นี Async Shaders ยังเพิ่มเทคนิคคล้ายๆ hyper-threading บน cpu ลง ใน GPU ด้วย หากช่วงไหนของ pipeline มีช่องว่างพอที่จะยัดคำสั่งนั่นๆเข้าไปมันจะแซงคิวให้เลยไม่ต้องรอให้เสียเวลารอรอบใหม่ ทำให้เร็วขึ้นไปอีก

จากการทดลองทั้งสามภาพ
-ภาพแรกปิดเพิ่มรอยยักของภาพเกม
-ภาพสองเปิดเพิ่มรอยยักของภาพเกม สังเกตุ เฟรมของเกมจะตกลงมาก
-ภาพสามเปิดเพิ่มรอยยักของภาพเกม และเปิด Async Shaders สังเกตุ เฟรมดีเกือบเท่าไม่เปิดรอยยักเลยทีเดียว
ที่มา
Comment