Shader Cache: คำจำกัดความและผลกระทบต่อประสิทธิภาพการเล่นเกม

หลายครั้งที่คุณจะได้เห็นไฟล์ชั่วคราวที่จะลบออกจาก Windows หรือเพื่อให้ได้พื้นที่ที่เรียกว่า DirectX shader cache หรือ Shader Cache หากคุณเคยสงสัยว่ามันคืออะไรและทำไมประสิทธิภาพของเกมเมื่อคุณลบมันลดลง คุณเพียงแค่อ่านบทความนี้

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

แคช Shader

กล่าวอีกนัยหนึ่ง สามเหลี่ยม พิกเซล หรือส่วนย่อยแต่ละอันมีโปรแกรมเชดเดอร์ของตัวเองสำหรับแต่ละขั้นตอนของไปป์ไลน์ 3 มิติ ซึ่งเขียนด้วยภาษาระดับสูง เช่น HLSL ถ้าเรากำลังพูดถึง DirectX หรือ GLSL ถ้าเรากำลังพูดถึง OpenGL หรือ Vulkan แม้ว่าจะมีบางส่วนที่เป็นเอกสิทธิ์ของบางระบบ เช่น PSGL ของ SONY's เพลย์สเต คอนโซล โปรแกรมเหล่านี้จำเป็นต้องรวบรวมและส่งต่อจากซอร์สโค้ดเป็นไบนารี

Shader Cache คืออะไร?

Shader แคช CoD

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

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

VRAM ยังกินเนื้อที่

Cache Shader แผงควบคุม NVIDIA

พื้นที่ GPU ของกราฟิกการ์ดของคุณเข้าถึงได้เฉพาะระบบ แรม ผ่านอินเทอร์เฟซ PCI Express และใช้หน่วย DMA ดังนั้นแคช shader จะถูกโหลดพร้อมกับข้อมูลภาพที่จำเป็นในการเขียนฉากจากหน่วยเก็บข้อมูลเป็น RAM และจาก RAM ไปยังหน่วยความจำวิดีโอ แม้ว่าด้วย DirectStorage คาดว่าฮาร์ดแวร์กราฟิกจะสามารถเข้าถึง SSD ได้โดยตรง ลดเวลาแฝงในการเข้าถึงและปัญหาที่ต้องพึ่งพา ซีพียู.

หลายเกมได้รับการพัฒนามาอย่างดีและแคชเชเดอร์ใช้พื้นที่เพียงเล็กน้อย แต่เกมอื่นๆ ไม่ได้มากมายนักและจบลงด้วยการใช้หน่วยความจำกราฟิกจำนวนมาก หมายความว่าถ้าไดรเวอร์มีขีดจำกัดที่เกี่ยวข้องหรือตัวเกมเอง เราพบว่าการรวบรวมใหม่มาแทนที่อันเก่าและปัญหาประสิทธิภาพการทำงานเริ่มต้นกลับมา

ไม่ว่าในกรณีใด เราต้องจำไว้ว่าหากเกมที่เรากำลังเล่นต้องการพื้นที่ใน RAM ของวิดีโอ เกมนั้นจะให้ความสำคัญกับการเรนเดอร์เฟรมปัจจุบันมากกว่า ดังนั้นมันจะพยายามดึงแคช shader ที่เก็บไว้ในหน่วยความจำระบบชั่วคราว นอกจากนี้ โปรดจำไว้ว่าการทิ้งข้อมูลไปยังหน่วยเก็บข้อมูลนั้นเกิดขึ้นอย่างต่อเนื่อง เนื่องจากเมื่อมีการสร้าง shader ของกราฟิกดั้งเดิมแล้ว ก็ไม่มีความจำเป็นต้องทำอีกครั้ง

การติดตามเรย์และแคชเชเดอร์

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

Shader Cache บนคอนโซล

XSX, XSS, PS5 คอนโซล

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

ตัวอย่างเช่น หากคุณต้องการสร้างคอนโซลที่เข้ากันได้กับเวอร์ชันเก่าและทรงพลังยิ่งขึ้น คุณมีตัวเลือกต่อไปนี้:

  • ส่งออก ISA ไปยัง GPU ของระบบใหม่ ทำให้ทำงานเป็น superset ของตัวเก่า นี่คือสิ่งที่ AMD ทำใน PlayStation 5 และ Xbox Series ด้วยสถาปัตยกรรม RDNA 2 เพื่อรันเกมรุ่นก่อนหน้าที่ออกแบบมาสำหรับ GCN ได้อย่างราบรื่น
  • รวมวงจรกราฟิกทั้งหมดของระบบก่อนหน้าไว้ในระบบใหม่ นี่คือสิ่งที่ Nintendo ทำบนคอนโซลจนถึง 3DS และ SONY ด้วย PlayStation เครื่องที่สองและบางรุ่นของรุ่นที่สาม

ในระดับอีมูเลเตอร์ สิ่งที่ทำในหลายกรณีคือการนำ shader ที่คอมไพล์แล้วและทำกระบวนการย้อนกลับ สร้างโค้ดระดับกลางที่สามารถสร้าง Shader Cache ที่สร้างขึ้นเพื่อทำงานกับการ์ดกราฟิกของคุณได้ อย่างไรก็ตาม มันไม่ใช่วิทยาศาสตร์ที่แน่นอน และคุณอาจพบข้อบกพร่องทางกราฟิกบางอย่างเมื่อรันเกม

การเพิ่มประสิทธิภาพสำหรับผู้ผลิต GPU

องค์กร Lovelace Hopper

ทั้งสอง NVIDIA และ เอเอ็มดี มักจะรวมถึงการเพิ่มประสิทธิภาพในไดรเวอร์ล่าสุดสำหรับการตัด-ขอบ เกม. สิ่งเหล่านี้ไม่เพียงรวมถึงการตั้งค่าที่เหมาะสมที่สุดสำหรับประสิทธิภาพที่สูงขึ้น แต่ยังรวมถึงแคช shader ที่ปรับให้เหมาะสมแล้วสำหรับแต่ละเกมและสเปกที่ดีกว่าเกมหลัก และผู้ผลิตทั้งสองต่างก็ให้ความสนใจในการ์ดกราฟิกที่ล้ำหน้าที่สุดของพวกเขาซึ่งมีประสิทธิภาพสูงสุดเท่าที่เป็นไปได้ในเกมที่ทรงพลังที่สุดที่มีอยู่ในปัจจุบัน

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