Tại sao GPU vẫn có rasterators?


14

Mặc dù có những tiến bộ, GPU hiện đại vẫn có các trình raster cố định. Khả năng tùy biến cao, với các shader lập trình được nhưng vẫn không thể lập trình đầy đủ.

Tại sao vậy?

Tại sao GPU không thể đơn giản là các thiết bị song song ồ ạt với các đơn vị tính toán phổ quát trong đó rasterizer chỉ là một phần mềm cho thiết bị đó do người dùng cung cấp?

Là có phần cứng chức năng cố định có hiệu suất rất khôn ngoan mà cách tiếp cận như vậy là không khả thi?


1
"Tại sao một đơn vị xử lý đồ họa không ở đơn vị xử lý phổ quát", bạn có thắc mắc không?
Andreas

1
@Andreas Không, câu hỏi của tôi là như đã nêu trong bài viết. Tại sao các rasterators vẫn là một phần cứng, khi chúng có thể được thực hiện trong phần mềm (thực tế chúng đã có thể được thực hiện với OpenCL hoặc tính toán các shader). Câu hỏi là tại sao nó không phổ biến ... có lẽ nó chỉ đơn giản là hiệu suất, tôi không biết, đó là lý do tại sao tôi hỏi ...
mrpyo

Bạn có thể bỏ qua quá trình rasterization và thực hiện rasterizer của riêng bạn với các đơn vị tính toán trên GPU hiện đại và trên thực tế tôi biết mọi người làm điều này cho các mục đích cụ thể.
JarkkoL

Rasterators chuyển đổi các polys vector thành một loạt các pixel mà chúng ta có thể thắp sáng. Khi chúng ta không còn có pixel hoặc ngừng sử dụng hình học vectơ, chúng ta sẽ không còn cần các trình quét. Bất kể phần còn lại của đường ống của bạn trông như thế nào, vào cuối ngày (hoặc khung), bạn cần pixel. Trình rasterizer chỉ cho chúng ta biết những pixel nào chúng ta quan tâm cho một tam giác đã cho. Tất cả điều đó có thể lập trình được - nếu bạn muốn đầu ra khác với trình rasterizer, hãy gửi các hình tam giác khác nhau theo cách của nó. Hoặc chỉ cần vẽ mọi thứ vào một kết cấu kết xuất trong một shader tính toán và đưa nó vào màn hình với một hình tứ giác được căn chỉnh.
3Dave

Câu trả lời:


15

Nói tóm lại, lý do hiệu suất là lý do tại sao chúng không được lập trình.

Lịch sử và thị trường

Trước đây, trước đây thường có các lõi riêng biệt cho các bộ xử lý đỉnh và phân đoạn để tránh các thiết kế FPU cồng kềnh. Chẳng hạn, có một số phép toán mà bạn chỉ có thể thực hiện trong mã shader mảnh (vì chúng hầu như chỉ liên quan đến các shader mảnh). Điều này sẽ tạo ra các tắc nghẽn phần cứng nghiêm trọng cho các ứng dụng không phát huy tối đa tiềm năng của từng loại lõi.

Khi các shader lập trình trở nên phổ biến hơn, các đơn vị phổ quát đã được giới thiệu. Ngày càng có nhiều giai đoạn của đường ống đồ họa được triển khai trong phần cứng để giúp mở rộng quy mô. Trong thời gian này, GPGPU cũng trở nên phổ biến hơn, vì vậy các nhà cung cấp phải kết hợp một số chức năng này. Điều quan trọng cần lưu ý là mặc dù phần lớn thu nhập từ GPU vẫn là trò chơi điện tử, vì vậy điều này không thể can thiệp vào hiệu suất.

Cuối cùng, một người chơi lớn, Intel, đã quyết định đầu tư vào các máy raster có thể lập trình với kiến trúc Larrabee của họ . Dự án này được cho là đột phá, nhưng hiệu suất rõ ràng là ít hơn mong muốn . Nó đã bị đóng cửa và một phần của nó đã được trục vớt cho bộ xử lý Xeon Phi. Điều đáng chú ý là mặc dù các nhà cung cấp khác đã không thực hiện điều này.

Nỗ lực tại Rasterators phần mềm

Đã có một số nỗ lực rasterization thông qua phần mềm, nhưng tất cả chúng dường như có vấn đề với hiệu suất.

Một nỗ lực đáng chú ý là một nỗ lực của Nvidia vào năm 2011 trong bài báo này . Điều này đã được phát hành gần với thời điểm Larrabee bị chấm dứt, vì vậy rất có thể đây là một phản ứng với điều đó. Bất kể, có một số số liệu hiệu suất trong điều này, và hầu hết trong số chúng cho thấy hiệu suất chậm hơn nhiều lần so với các trình raster phần cứng.

Các vấn đề kỹ thuật với Rasterization phần mềm

Có rất nhiều vấn đề đã được đối mặt trong bài báo của Nvidia. Dưới đây là một số vấn đề quan trọng nhất với trình raster phần mềm:

Vấn đề lớn

  • Nội suy: Việc thực hiện phần cứng tạo ra các phương trình nội suy trong phần cứng chuyên dụng. Điều này là chậm đối với trình kết xuất phần mềm vì nó phải được thực hiện trong trình đổ bóng mảnh.

  • Khử răng cưa: Cũng có vấn đề về hiệu năng với khử răng cưa (cụ thể là với bộ nhớ). Thông tin liên quan đến các mẫu pixel phụ phải được lưu trữ trên bộ nhớ chip, không đủ để chứa thông tin này. Julien Guertault chỉ ra rằng bộ đệm / bộ đệm kết cấu có thể chậm hơn với phần mềm. MSAA chắc chắn có vấn đề ở đây vì nó tràn bộ nhớ cache (bộ đệm không kết cấu) và đi vào bộ nhớ của chip. Rasterators nén dữ liệu được lưu trữ trong bộ nhớ đó, điều này cũng giúp thực hiện ở đây.

  • Tiêu thụ năng lượng: Simon F chỉ ra rằng tiêu thụ điện năng sẽ thấp hơn. Bài báo đã đề cập rằng ALU tùy chỉnh nằm trong rasterators (sẽ giảm mức tiêu thụ điện năng) và điều này sẽ có ý nghĩa vì các đơn vị xử lý phân đoạn và đỉnh trong quá khứ được sử dụng để có các bộ hướng dẫn tùy chỉnh (rất có thể là ALU tùy chỉnh). Nó chắc chắn sẽ là một nút cổ chai trong nhiều hệ thống (ví dụ, điện thoại di động), mặc dù điều này có ý nghĩa vượt quá hiệu suất.

Tóm lược

TL; DR: có quá nhiều sự thiếu hiệu quả mà việc kết xuất phần mềm không thể vượt qua và những điều này cộng lại. Ngoài ra còn có nhiều hạn chế lớn hơn, đặc biệt là khi bạn đang xử lý băng thông VRAM, các vấn đề đồng bộ hóa và tính toán thêm.


Tôi không nghĩ rằng bạn cần lưu trữ các mẫu subpixel nếu lọc hộp là đủ thì bạn chỉ có thể thực hiện chạy trung bình.
joojaa

2
Tôi nghi ngờ việc lấy mẫu kết cấu và bộ đệm có lẽ cũng là lĩnh vực mà việc triển khai phần cứng cho phép hiệu suất nếu không thể đạt được bằng cách triển khai phần mềm.
Julien Guertault

3
@aces Một mục khác đáng nói đến là sức mạnh. Phần cứng chuyên dụng sẽ thực hiện cùng một công việc thông thường với một phần ngân sách năng lượng và, với việc điều tiết năng lượng đã là một vấn đề, đặc biệt là trên các thiết bị di động, việc lập trình đầy đủ sẽ khiến nó trở nên tồi tệ hơn rất nhiều.
Simon F

@JulienGuertault Điểm công bằng, nhưng tôi nghĩ điều này chủ yếu áp dụng cho MSAA. Có kết quả kiểm tra dường như chỉ ra rằng đây không phải là vấn đề lớn khi mọi thứ phù hợp với bộ nhớ trên chip (mặc dù điều này có thể có một số tác động hiệu suất bất kể).
aces

@SimonF Tôi nghĩ đó cũng là một điểm tuyệt vời. Tôi bao gồm nó trong câu trả lời.
aces
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.