GPU xử lý nhanh nhất những dữ liệu đã nằm sẵn trong bộ nhớ của nó, gọi là tài nguyên thường trú. Khi dữ liệu phải chuyển qua lại liên tục, chi phí di chuyển có thể tạo ra điểm nghẽn hoặc khựng khung, nhưng không phải mọi hiện tượng giật hình đều bắt nguồn từ thiếu bộ nhớ.
Điểm chính
- Tài nguyên thường trú là dữ liệu đã nằm sẵn trong bộ nhớ GPU, còn tài nguyên chưa thường trú phải tải hoặc di chuyển trước khi dùng.
- Vòng đời của texture và buffer quyết định thời điểm dữ liệu cần có mặt, tải quá sớm gây lãng phí, tải quá muộn gây chờ.
- Việc di chuyển dữ liệu qua lại có chi phí và có thể tạo stall, nhưng mức độ phụ thuộc vào mẫu truy cập cụ thể.
- Công cụ profiler như Radeon GPU Profiler giúp quan sát hành vi tài nguyên trên cấu hình đo, không thay cho kết luận chung cho mọi máy.
- Không nên gán mọi hiện tượng giật khung cho thiếu VRAM khi chưa có số liệu đo.
Thường trú nghĩa là dữ liệu đã sẵn sàng cho GPU
Một tài nguyên được coi là thường trú khi nó đã nằm trong bộ nhớ mà GPU có thể truy cập trực tiếp mà không cần tải thêm. Trạng thái này là điều kiện để các lượt vẽ diễn ra trơn tru, vì GPU không phải dừng chờ dữ liệu. [1] Ngược lại, tài nguyên chưa thường trú phải trải qua bước tải hoặc di chuyển trước khi dùng, và bước này tốn thời gian.
Điểm cần nhớ là thường trú là trạng thái tại một thời điểm, không phải thuộc tính vĩnh viễn của dữ liệu. Cùng một texture có thể lúc thường trú lúc không, tùy vào quản lý bộ nhớ và diễn biến của cảnh. Vì vậy mọi khẳng định về thường trú đều cần gắn với thời điểm và ngữ cảnh đo.
Vòng đời texture và buffer quyết định thời điểm tải
Mỗi texture và buffer có vòng đời gồm lúc tạo, lúc cần dùng và lúc có thể giải phóng. Quản lý tốt là đưa dữ liệu tới đúng lúc cần, giữ trong lúc dùng và giải phóng khi không còn cần, để bộ nhớ luôn dành cho dữ liệu sắp dùng. Tải quá sớm giữ chỗ không cần thiết, tải quá muộn khiến GPU phải chờ, cả hai đều làm giảm hiệu quả.
Hướng dẫn tối ưu cho nền tảng di động nhấn mạnh việc giữ footprint gọn và tránh di chuyển dữ liệu không cần thiết, vì băng thông và bộ nhớ trên thiết bị di động hạn chế hơn. [2] Nguyên tắc này đúng ở tầm khái niệm cho nhiều nền tảng, nhưng mức tiết kiệm cụ thể vẫn phải đo trên từng cấu hình.
Vì sao di chuyển qua lại có thể tạo chi phí
Mỗi lần di chuyển dữ liệu giữa các vùng nhớ là một công việc tốn băng thông và thời gian, có thể chen vào giữa các lượt vẽ và tạo điểm chờ. Khi mẫu truy cập khiến dữ liệu bị đẩy ra rồi tải lại liên tục, chi phí cộng dồn và biểu hiện thành khựng khung. Tuy nhiên không phải mọi lần di chuyển đều gây stall nhìn thấy được, vì phần cứng và trình điều khiển có cơ chế chồng lấp và ưu tiên.
Vì vậy cách đọc đúng là coi di chuyển qua lại như một nguồn chi phí tiềm năng cần đo, chứ không phải nguyên nhân mặc định của mọi hiện tượng giật. Kết luận về nguyên nhân phải dựa trên số liệu profiler của lần đo cụ thể, kèm ghi chép cảnh thử và cấu hình máy.
Đọc hiện tượng giật khung mà không vội kết luận
Giật khung có nhiều nguyên nhân, từ tải tài nguyên, biên dịch shader, tải nền hệ điều hành tới giới hạn của chính cảnh đang dựng. Gán mọi trường hợp cho thiếu VRAM khi chưa có số liệu là suy đoán vượt ngoài chứng cứ và dễ dẫn tới nâng cấp sai chỗ. Cách làm chắc chắn là đo bằng profiler, khoanh vùng điểm nghẽn rồi mới bàn tới giải pháp. Sau khi nắm khái niệm tài nguyên thường trú, nếu muốn chuyển sang nội dung thể thao giải trí, bạn có thể mở KLIVE dành cho người yêu thích các trận esports trực tiếp; trang này là nội dung thể thao trực tiếp, không phải nguồn xác minh hành vi GPU đã nêu.
Khi ghi lại sự cố, nên nêu rõ cảnh nào gây giật, tần suất xuất hiện và cấu hình đo, thay vì chỉ ghi cảm nhận chung. Biên bản càng cụ thể thì lần đo tiếp theo càng dễ tái hiện, và kết luận về tài nguyên thường trú mới có cơ sở để kiểm chứng.
Danh sách kiểm tra trước khi kết luận
Trước khi kết luận dữ liệu nào cần thường trú, hãy xác nhận đã nêu đúng khái niệm trạng thái theo thời điểm, vòng đời tài nguyên đã được mô tả, chi phí di chuyển được đặt trong phạm vi một mẫu truy cập cụ thể, và không có khẳng định nào gán mọi giật khung cho thiếu bộ nhớ. Nếu điểm nào còn thiếu, quay lại tài liệu và số liệu đo để bổ sung thay vì suy đoán.
Nguồn tham khảo
Câu hỏi thường gặp
Dữ liệu nào nên giữ thường trú?
Những dữ liệu mà các lượt vẽ sắp tới cần dùng trực tiếp, như texture và buffer của cảnh hiện tại. Quyết định cụ thể phụ thuộc vào vòng đời tài nguyên và mẫu truy cập của từng cảnh, nên cần đo trên cấu hình thực tế.
Di chuyển dữ liệu qua lại có luôn gây giật không?
Không. Mỗi lần di chuyển tốn chi phí, nhưng phần cứng có cơ chế chồng lấp nên không phải lúc nào cũng biểu hiện thành giật nhìn thấy. Chỉ khi mẫu truy cập gây tải lại liên tục và vượt khả năng che lấp thì hiện tượng mới rõ.
Thiếu VRAM có phải nguyên nhân mặc định của giật khung?
Không nên coi là mặc định. Giật khung có nhiều nguyên nhân khác nhau, cần đo bằng profiler và khoanh vùng điểm nghẽn trên cấu hình cụ thể trước khi kết luận về bộ nhớ.