2015-11-03 14 views
5

Với sự gia tăng của các API đồ họa cấp thấp hơn như DirectX 12, Mantle và Vulkan, tôi tự hỏi làm thế nào chúng tương tác (nếu có) với Kiến trúc hệ thống không đồng nhất (HSA)?DirectX 12/Mantle/Vulkan và HSA

Như tôi đã hiểu, hỗ trợ HSA đã yêu cầu một số nhà phát triển tham gia, nhưng tôi tò mò liệu bất kỳ API đồ họa cấp thấp nào hiện có tự xử lý hay không.

HSA đặc biệt thú vị đối với các tính năng như chia sẻ dữ liệu đơn giản giữa bộ nhớ hệ thống và bộ nhớ video, đặc biệt khi cả hai đều chia sẻ cùng một RAM vật lý.

Vì câu hỏi này rất có thể xảy ra với trạng thái hiện tại của công việc, tôi có thể sử dụng loại hình đồ họa đơn giản này, mặc dù thông tin về lộ trình trong tương lai sẽ tốt đẹp. (vì tôi nghi ngờ nhiều, nếu có, mọi người quen thuộc với cả ba HSA cộng thêm). Ngoài ra nếu tôi đã hoàn toàn hiểu lầm cách nó hoạt động, sau đó cảm thấy tự do để chỉ ra rằng quá; Tôi không siêu quen thuộc với một trong hai công nghệ, nhưng muốn biết làm thế nào họ hiện tương tác tất cả như nhau.

Trả lời

7

Nhìn vào biểu đồ trên wiki page các API mức thấp gần với những gì chúng gọi là hệ thống không phải HSA.

enter image description here

Mỗi hoạt động (bộ nhớ sao chép, bắt đầu một công việc, ...) phải được gửi đi một cách rõ ràng bởi ứng dụng. Mặc dù ứng dụng có thể nhóm các hoạt động tuần tự trong một bộ đệm lệnh và gửi toàn bộ bộ đệm trong một lần và tiếp tục với một thứ khác trong khi các lệnh đang được thực hiện không đồng bộ.

Mặt khác, OpenGL/DirectX9 truyền thống gần với HSA hơn bằng cách ẩn tất cả việc gửi và sao chép. Tuy nhiên, điều này giới thiệu chi phí trong quá trình xác minh và cố gắng dự đoán ứng dụng sẽ làm gì tiếp theo để giảm thiểu độ trễ. Chưa kể có rất ít tùy chọn để kiểm tra xem các hoạt động có hoàn chỉnh với api có nguồn gốc đồng bộ hay không. Điều này có nghĩa là nếu bạn tình cờ gọi một phương thức cần kết quả của một thao tác (HSA) thì trình điều khiển sẽ chặn cho đến khi thao tác đó được thực hiện.

enter image description here

Đó là API cấp thấp mới cho kiểm soát hơn đối với các lập trình viên ứng dụng và ngăn chặn trốn nitty-gritty là trong thực tế, một điểm bán hàng lớn.

+0

Câu trả lời hay, nhưng bạn nghĩ điều này áp dụng như thế nào với các tính năng khác của HSA, như có thể chia sẻ cùng một bộ nhớ giữa CPU và iGPU? Là DirectX 12 vv có thể làm điều tương tự mà không cần phải sao chép những thứ như kết cấu đã được nạp trong bộ nhớ chính (ở phía CPU)? – Haravikk

+0

@Haravikk phụ thuộc vào cách phần cứng được đặt ra, các GPU tích hợp thường không có bộ nhớ chuyên dụng để nó sẽ sử dụng RAM vật lý. Và điều đó có thể được truy cập như là bởi CPU. Mặc dù bộ nhớ đệm có nghĩa là các truy cập cần phải được đồng bộ và bảo vệ. –