Không có chuyện sử dụng GPU tích hợp nâng cao hiệu năng cho VGA rời

Nội Tâm  | 18/04/2012 0:00 AM

Đừng quá ấn tượng khi đọc các benchmark và review về Virtu MVP nữa. Sự tăng về điểm số không hẳn là giả, nhưng ý nghĩa thực sự của nó lại khác với FPS mà chúng ta từng biết.

Đừng quá ấn tượng khi đọc các benchmark và review về Virtu MVP nữa. Sự tăng về điểm số không hẳn là giả, nhưng ý nghĩa thực sự của nó lại khác với FPS mà chúng ta từng biết. 
 
Hẳn bạn còn nhớ điều tuyệt vời HyperFormance đã làm trong bài viết [Benchmark] Virtu Universal MVP: Đồ họa tích hợp tăng tốc cho đồ họa rời!

Đó mới chỉ là những benchmark sơ bộ. Rất nhiều điều cần phải nói thêm về HyperFormance và Virtual Vsync. Kết hợp hiệu năng 2 GPU khác loại quả thực là điều cực kì khó khăn, đặc biệt khi hiệu năng từng nhân của chúng quá khác xa nhau, khó thể phân công công việc hợp lý. Chúng ta đã từng chứng kiến công nghệ kết hợp tương tự trên các bộ xử lý Liano của AMD. Hiệu năng quả thực có tăng, nhưng hiệu quả giảm dần, tỉ lệ nghịch với sức mạnh của VGA rời. Thậm chí đến một ngưỡng nào đó hiệu năng còn bị giảm đi so với chỉ chạy VGA rời.


Virtu MVP làm theo cách khác với AMD, phân chia công việc riêng rẽ một cách hợp lý hơn. “Người lớn” VGA rời làm tất cả những việc truyền thống trước nay nó vẫn làm: dựng hình, đánh sáng, đổ bóng, tạo vân… Còn “trẻ con” iGPU chỉ có mỗi trách nhiệm sắp xếp, lựa chọn, đồng bộ các frame mà VGA đã render ra. Cụ thể ra sao, chúng ta hãy cùng tìm hiểu.

Hiệu năng tăng đột biến trong Dirt 2!

Virtual Vsync

Trước khi giải thích về Virtual Vsync, tôi sẽ nói lại Vsync truyền thống. Vsync có nghĩa là “đồng bộ FPS trong game với tần số làm tươi của màn hình”. Mỗi màn hình đều có thông số gọi là refresh rate (tần số làm tươi), phổ thông nhất đối với màn hình máy tính là 60 Hz – nghĩa là màn hình có thể hiển thị tối đa 60 frame/giây. Cứ mỗi 1/60 giây, hệ thống sẽ lấy khung hình trong frame buffer (bộ đệm frame – nơi chứa khung hình GPU tính toán xong) xuất ra màn hình. Như vậy, nếu GPU chỉ render được 40 frame/giây thì điều gì sẽ xảy ra? Hoặc GPU quá mạnh render được tận 100? Xét 3 kịch bản sau:

Kịch bản 1: GPU render nhanh hơn refresh rate, Vsync Off
Refresh rate: 60 Hz
GPU render: 100 FPS
Thời gian phản hồi của phím/chuột: 1-2 frame, tương đương 10 -> 20 ms
Trong trường hợp này, GPU nhanh hơn refresh rate tới 80%. Lúc này tại bất kì 1/60 giây nào, trong bộ đệm cũng có 1 frame và 4/5 frame kế tiếp, hệ thống lấy hết ra xuất lên màn hình, gây nên hiện tượng rách hình.


Kịch bản 2: GPU render chậm hơn refresh rate, Vsync Off
Refresh rate: 60 Hz
GPU: 45 FPS
Thời gian phản hồi của phím/chuột: 1-2 frame, tương đương 22 -> 44 ms
Trường hợp này không có gì đặc biệt. Hình ảnh xuất ra trên màn hình hoàn toàn bình thường, chỉ có điều nếu FPS thấp hơn yêu cầu của mắt thì sẽ gây ra hiện tượng giật. Ngoài ra FPS càng thấp thì thời gian phản hồi của phím/chuột cũng chậm đi.
 
Kịch bản 3: GPU render nhanh hơn refresh rate, Vsync On
Refresh rate: 60 HZ
GPU: 60 FPS (lẽ ra là 100 FPS)
Thời gian phản hồi của phím/chuột: 1-2 frame, tương đương 16 -> 33 ms (lẽ ra chỉ là 10 -> 20 ms)
Với Vsync được kích hoạt, toàn bộ mọi thành phần của hệ thống như GPU, CPU, ứng dụng… đều được đồng bộ lại, nhắm đến việc xuất ra đúng 1 frame mỗi 1/60 giây. GPU-load và CPU-load đều thấp hơn so với Vsync Off. Giải pháp này cho hình ảnh mượt nhất có thể mà không bị rách hình, đồng thời giảm tải cho toàn hệ thống. Chỉ có vấn đề duy nhất là thời gian phản hồi của phím/chuột bị chậm đi, ít nhiều ảnh hưởng tới các game bắn súng cần lia chuột nhanh, nhiều.

Để rõ hơn về sự phiền toái của thời gian phản hồi chậm, có thể lấy 1 số game port từ hệ console và khóa FPS ở 30 làm ví dụ (Alice: Madness Returns chẳng hạn): tuy hình ảnh vẫn mượt (nhờ motion blur tốt) nhưng chơi cực khó chịu, có cảm giác phải một lúc sau khi lia chuột màn hình mới xoay theo.
 
Vậy có cách nào để hình ảnh không bị rách mà thời gian phản hồi phím/chuột không chậm đi hay không? Câu trả lời chính là Virtual Vsync.

Trước khi render một frame, iGPU tự đặt ra và tự trả lời câu hỏi: (A) frame này có được hiện lên màn hình không? Có cần thiết phải lệnh cho VGA render không?

Trước khi xuất một khung hình lên màn hình, iGPU lại tự đặt ra và tự trả lời một câu hỏi khác: (B) frame nào trong bộ đệm cần lấy ra?

Trình tự hoạt động của hệ thống để xuất ra 1 frame.

Virtu MVP chèn thêm vào 2 khâu trong trình tự truyền thống.

(A) chính là nguyên tắc hoạt động của HyperFormance (sẽ giải thích sau), còn (B) là cách thức mà Virtual Vsync làm việc.

Khác với cách làm của Vsync truyền thống, Virtual Vsync vẫn ép toàn hệ thống phải hoạt động tối đa, phải render ra đủ 100 FPS, chỉ khác là nó sẽ lọc bớt 40 frame được cho rằng vô dụng (trùng với frame đang có trên màn hình chẳng hạn), và chỉ xuất ra 60 frame còn lại. Bằng cách đó, hình ảnh không bị rách đồng thời phản hồi phím/chuột vẫn nhanh.

Tổng kết, Virtual Vsync ra đời nhắm tới việc khắc phục rách hình mà vẫn không làm chậm thời gian phản hồi phím/chuột như Vsync truyền thống mắc phải.
 
HyperFormance

Trước khi cần render một frame, iGPU đặt ra câu hỏi: (A) frame này có được hiện lên màn hình không? Có cần thiết phải lệnh cho VGA render không?


Trước khi render mỗi khung hình, iGPU sẽ phán đoán thời gian cần để render khung hình đó (dựa trên một thuật toán định sẵn), từ đó kết luận rằng khung hình này có cần thiết phải render hay không. Giả sử nếu iGPU tính được rằng 2 frame tiếp theo là thừa thãi, không được xuất hiện trên màn hình, nó sẽ ra lệnh hủy bỏ việc render 2 khung hình đó. Hoặc một tình huống khác, nếu nhận ra 2 frame liên tiếp (cần thiết) gần như giống nhau hoàn toàn, iGPU sẽ quyết định giữ lại phần khung của frame, chỉ render những điểm khác biệt như khói, gió…

Như vậy chỉ có những frame cần thiết cho refresh rate mới thực sự được render. GPU rời đỡ phải render một số frame thừa (nhưng vẫn được tính là có). Bộ đếm FPS đã bị lừa, FPS nó đếm được thực chất là thời gian phản hồi phím/chuột. Đó là nguyên nhân khiến FPS trong 1 số game và điểm số 3DMark tăng vọt không tưởng. Trên thực tế khả năng render của toàn hệ thống vẫn vậy, HyperFormance chỉ “ăn gian” thêm vài frame ảo thêm vào bộ đếm cho oai. Cách thức làm việc này cũng đồng thời là nguyên nhân GPU-load khi bật HyperFormance nhỏ hơn vài % so với bình thường.


Tóm lại, HyperFormance chỉ có tác dụng lọc frame thừa không cần render – nghĩa là nó chỉ hoạt động khi GPU nhanh hơn refresh rate, trường hợp ngược lại thì vô dụng! Điều này đồng nghĩa với việc HyperFormance không tăng thêm chút hiệu năng nào! Tác dụng duy nhất mang lại chỉ là làm thời gian phản hồi phím/chuột nhanh hơn.
 
Sự ổn định – Độ trễ

Cả 2 câu hỏi (A) và (B) do iGPU đặt ra đều được giải theo một thuật toán nào đó. Tôi không rõ thuật toán đó hoạt động ra sao nhưng chắc chắn rằng nó không ổn định trong mọi trường hợp. Đơn giản như, nếu thuật toán tính sai thời gian cần thiết để render, chúng ta mất ngay một khung hình quan trọng!

Nói cách khác, trong 1 số thời điểm HyperFormance sẽ làm giảm hiệu năng game, còn Virtual Vsync gây rách hình hoặc khiến FPS thấp hơn refresh rate. Trên thực tế điều này đã thực sự xảy ra với Crysis Warhead mà tôi từng test trước đây: FPS bị giảm khi kích hoạt HyperFormance! Đó là còn chưa kể đến những lỗi như treo game, game tự tắt, lỗi texture… mà tôi đã đề cập đến ở cuối bài viết trước.

Bật HyperFormance, FPS trong Crysis Warhead giảm 10%!

Vấn đề thứ 2 là độ trễ. Việc iGPU và VGA trao đổi thông tin cho nhau, cộng thêm chạy thuật toán để đưa ra quyết định render chắc chắn sẽ gây nên một độ trễ nào đó (cái này chỉ là giả thuyết, khó kiểm chứng). Hoặc nếu sử dụng Virtu ở chế độ i-Mode (iGPU xuất hình) thì ta còn phải chịu thêm độ trễ từ việc copy frame trong bộ đệm của VGA chuyển sang bộ đệm của iGPU qua băng thông của khe PCI Express, thường là 2 MB/hình cho 1920 x 1080 và 4 MB/hình cho 2560 x 1600.
 
Bản quyền

Virtu MVP không phải một phần mềm thương mại giữa cha đẻ LucidLogix và người dùng cuối. Nó được các hãng sản xuất bo mạch chủ trả tiền để tích hợp license trong BIOS một số dòng sản phẩm của họ. Vì vậy cách duy nhất để sử dụng là mua một trong các sản phẩm này, bằng không bạn chỉ được dùng thử trong 30 ngày, và cũng đừng mơ tới chuyện crack!
 
Tương lai cho Virtu MVP

Có thể nói, sự thật về Virtu MVP gây thất vọng cho tất cả mọi người, đặc biệt sau những benchmark trong mơ mà nó đem lại. Sự tăng về điểm số không hẳn là giả, nhưng ý nghĩa thực sự của nó lại khác với FPS mà chúng ta từng biết.

Virtu MVP không hề làm tăng hiệu năng game. Ứng dụng thực sự duy nhất của công nghệ này là giảm thời gian phản hồi phím/chuột, đem lại những pha xử lý chính xác hơn. Các hệ máy console sẽ được hưởng lợi nhiều nhất bởi chúng thường bị khóa FPS (do hạn chế về tài nguyên). Vấn đề khó khăn nhất LucidLogix phải đối mặt là tối ưu thuật toán và khắc phục lỗi.