Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    MP,  

    Mantle là một bộ API cấp thấp chuyên dùng cho kiến trúc Graphic Core Next của AMD.

    Để tổng kết lại cho buổi giới thiệu sản phẩm hôm 24/9 vừa rồi, AMD có đưa ra một số giới thiệu khá ngắn gọn về bộ API (application programming interface) mới nhất mang tên Mantle của mình. Tuy rằng hãng có hứa hẹn rằng sẽ mô tả cụ thể các chi tiết kỹ thuật của Mantle tại AMD Developer Summit vào tháng 11 tới, nhiều cây bút của các trang tin công nghệ hiện đã đang phát sốt vì những thay đổi mà bộ API này có thể mang lại. Rốt cuộc Mantle có gì đặc biệt và liệu nó có thực sự có thể thay đổi cách các lập trình viên làm việc với vi xử lí đồ họa? Hãy cùng điểm qua các phân tích của chuyên trang AnandTech về vấn đề này.

    Mantle và vấn đề hiệu năng

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Để mô tả Mantle, một chữ viết tắt API là hoàn không đủ. Nói một cách chính xác và đầy đủ, Mantle là một bộ API cấp thấp chuyên dùng cho kiến trúc Graphic Core Next của AMD. Các bộ API về xử lí đồ họa mà chúng ta thường gặp như OpenGL hay Direct3D có mức trừu tượng hóa cao hơn, cắt giảm bớt khối lượng công việc mà các lập trình viên game và đồ họa phải thực hiện – cũng như cho phép chúng hoạt động trên nhiều loại nền tảng phần cứng khác nhau. Cách tiếp cận của Mantle hoàn toàn ngược lại. Bộ API này đi sâu hạ tầng hết mức có thể, đưa các dòng code của lập trình viên đến gần với thiết bị phần cứng hơn bao giờ hết. Cách tiếp cận này không phải quá phức tạp, và cũng không phải mới được thử nghiệm lần đầu, nhưng cũng khá lâu rồi ngành công nghiệp PC mới xuất hiện một “tay chơi” dám thực hiện điều này.

    Việc được tương tác trực tiếp đến phần cứng là điều không mấy khó khăn cho các lập trình viên console, trong đó kiến trúc phần cứng hầu như là cố định – đặc biệt là với các máy console đời cũ khi mà hãng sản xuất sẽ luôn muốn cho phép các lập trình viên tận dụng mọi khả năng xử lí của phần cứng. Nhưng trên PC, do sự đa dạng của các kiến trúc GPU, các API cấp cao vẫn luôn chiếm ưu thế. Về cơ bản, các API cấp cao như Direct3D hay OpenGL đều phải đánh đổi các lợi thế đã nói ở trên với một phần hiệu năng. Ngoài việc làm ẩn đi sức mạnh xử lí thực sự của phấn cứng, tách nó khỏi tầm kiểm soát của các lập trình viên, bản thân qúa trình trừu tượng hóa của các API này cũng có những tác động không nhỏ lên hiệu năng.

    Một trong số những vấn đề thường gặp nhất là vấn đề về draw calls (tạm dịch: lệnh gọi vẽ), lệnh yêu cầu GPU tiến hành render một vật thể. Để tạo ra một frame hình có thể cần tới hàng trăm thậm chí hàng ngàn draw calls (đặc biệt đối với các game 3D bối cảnh rộng), việc sắp xếp các thông tin cần thiết cho việc render và gửi đi một draw calls sẽ tốn một khoảng thời gian nhất định. Và thực lòng mà nói thì cho tới giờ giới lập trình game, cả những người phụ trách mảng phần cứng và phần mềm đều chưa bao giờ hài lòng với tốc độ thực thi draw calls trên PC. Kể cả sau khi Microsoft và các đối tác sử dụng Direct3D khác đã cải thiện đáng kể điều này khi nâng cấp từ DirectX 9 lên DirectX 10.

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Nhìn vào hình minh họa, nhiều người có thể lầm tưởng hiệu năng đã được cải thiện đáng kể trên DirectX 10? Nhưng thực tế đáng buồn là từ trước tới giờ số lượng draw calls mà một GPU high-end thực sự có thể xử lí (render) vẫn luôn lớn hơn nhiều lần so với số lực draw calls mà nó nhận được tại bất kỳ thời điểm nào. Cách xử lí thường gặp trước giờ vẫn là cố gắng giảm bớt số lượng draw calls – nhưng với nhu cầu ngày càng tăng cao về mặt đồ họa, điều này ngày càng lộ rõ nhiều nhược điểm. Các giải pháp tình thế của DirectX như việc gộp chung một cụm cây trên bản đồ của các game chiến thuật vào thành một đối tượng (object) duy nhất để chỉ phải thực hiện một draw call cho cả cụm đó vẫn sẽ hoàn toàn không đủ trong tương lai sắp tới. Xét cho cùng, để có thể lột tả hết những gì mà các họa sĩ thiết kế dự định thể hiện, các vật thể cần được xử lí càng tách biệt và chi tiết càng tốt. Trên các máy console, người ta hiện có thể render 10000 – 20000 đối tượng trên mỗi khung hình và vẫn đạt mức 30-60 fps tùy theo chất lượng. Còn trên PC? Chỉ ở mức 2 - 3000 là các lập trình viên đã phải vật lộn với sự cắt giảm mạnh về hiệu năng do API cấp cao gây ra.

    Kết luận: Mantle là một trong các API cấp thấp hiếm hoi loại bỏ hầu hết việc trừu tượng hóa, cho phép lập trình viên tiếp cận gần hơn với phần cứng và loại bỏ các vấn đề thường gặp trên API cấp cao như giới hạn số lượng draw call.

    Mối liên hệ với console

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Chúng ta đã nhắc sơ qua về lợi thế của việc lập trình game console trong phần thứ nhất. Tuy nhiên mối liên hệ của Mantle với các máy console có nhiều điều để nói hơn thế. Nếu Mantle chỉ đơn giản cung cấp khả năng tiếp cận gần hơn với kiến trúc GPU GCN của AMD, nó sẽ chỉ đơn giản.

    Hiện AMD là nhà cung cấp APU cho cả hai dòng máy được ưa chuộng Xbox OnePS4. Cả hai máy console sắp ra mắt này đều có vi xử lí hoạt động dựa trên kiến trúc GCN, đồng nghĩa với việc AMD đóng vai trò cực lớn trong việc phát triển chúng – không chỉ trong phạm vi phần cứng mà còn có sự liên hệ không nhỏ với hệ thống phần mềm, tức các game đi kèm. Cụ thể hơn, chính AMD chứ không ai khác sẽ phải cung cấp các driver và API mà các nhà lập trình game cho các máy này sẽ cần dùng để tận dụng hết các sức mạnh xử lí của phần cứng trên đó.

    Từ trước tới giờ trên console, thực tế thì các API cấp cao và cấp thấp vẫn thường được sử dụng cùng lúc. Các API cấp cao vẫn có thể được sử dụng cho các công việc đơn giản, các công việc đòi hỏi nhiều sức mạnh xử lí từ phần cứng vẫn luôn phải được hiện trên các API cấp thấp. Đối với các chuyên gia, mọi công việc từ quản lí bộ nhớ, quản lí trạng thái của các đối tượng trong game.v.v.đều trở nên dễ dàng và hợp lí hơn nếu họ hoàn toàn nắm được việc các dòng code của mình tương tác với phần cứng như thế nào – dù rằng điều này cũng đồng nghĩa với khối lượng công việc nhiều hơn đôi chút. Đúc kết từ những điều này, có thể nhận ra rằng khi phát triển API cho các mẫu console mới, thực tế AMD sẽ cần phải phát triển hai bộ khác nhau, phục vụ hai mức cường độ công việc khác nhau.

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Câu hỏi đặt ra là, với cùng một nền tảng kiến trúc vi xử lí, liệu có lí do nào để AMD – thay vì port thẳng các API này từ console lên PC – lại đi phát triển các bộ API cho từng hệ máy riêng biệt hay không? Tuy hãng chưa đưa ra câu trả lời chính thức, nhưng câu trả lời mà rất nhiều chuyên gia trong ngành tin tưởng là không. Điều này dẫn đến kết luận rằng Mantle – dù được giới thiệu là sản phẩm cho PC – thực chất chính là bộ API cấp thấp của Xbox One được AMD port lên PC. Cách nhìn này nâng tầm vai trò của Mantle lên thêm một bậc. Lúc này các hãng lập trình game trên Xbox One có thể dễ dàng đem phần code đồ họa đã được viết cho console lên PC để tận dụng lại, hơn nữa lại vẫn tận dụng được các lợi thế về mặt hiệu năng khi sử dụng API cấp thấp (chí ít là cho các GPU GNC của AMD). Tuy thực tế không thể phủ nhận rằng AMD chỉ là nắm một phần trên miếng bánh đồ họa PC (đồng nghĩa với Mantle không thể hoàn toàn thay thế Direct3D) nhưng chí ít đây cũng là một bước tiến đáng kể khi cung cấp cho các lập trình viên một phương án để tận dụng lại các dòng code cấp thấp hiệu năng cao của mình, điều mà trước đây hầu như bất khả thi.

    Lập trình viên

    Ngay cả khi những lợi thế của Mantle đã là hết sức rõ ràng, khả năng thành công của API này vẫn chưa phải là tuyệt đối. Hiện giờ Mantle mới chỉ được hiểu là một bộ công cụ giúp các lập trình viên tiếp cận hơn với nền tảng phần cứng đồ họa trên PC. Khi port game từ console lên PC, các hãng game vốn bắt buộc phải có một phiên bản module đồ họa xây dựng trên nền API Direct3D nếu muốn game của mình chạy được với nhiều mẫu VGA khác nhau. Nhìn vào các phân tích trong phần 2, người ta có thể lầm tưởng làm thêm 1 phiên bản module đồ họa riêng cho các GPU GNC của AMD bằng cách sử dụng lại các dòng code viết trên nền Mantle API là rất đơn giản, thậm chí hầu như không phải làm gì. Nhưng rất tiếc các dòng mã lệnh cấp thấp không hoạt động đơn giản như vậy, ngay cả khi Mantle trên PC và trên console gần như là một thì khối lượng công việc mà các lập trình viên phải thực hiện cho riêng phiên bản này vẫn lớn hơn việc chỉ làm một bản Direct3D rất nhiều lần. Câu hỏi đặt ra là, liệu AMD có thuyết phục nổi giới lập trình viên ưu ái mình đến vậy hay không?

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Và câu trả lời, theo như các thông tin mà AMD cung cấp thời gian gần đấy, thật may mắn là có. Nói chính xác hơn, các lãnh đạo của AMD không ngây ngô đến mức bỗng dưng một ngày đẹp trời nổi hứng bảo nhau phát triển Mantle rồi mới tính cách mời gọi các hãng game sử dụng API của mình. Không, Mantle ra đời bởi suốt bao lâu nay giới lập trình đã kêu gào khản cổ yêu cầu các hãng sản xuất đồ họa PC cung cấp cho họ một bộ API cấp thấp để thỏa sức “vắt kiệt” tiềm năng xử lí của phần cứng - và AMD đã quyết định trả lời. Ít nhất đó là những gì mà hãng này đang cố thể hiện trong những thông tin cung cấp cho giới truyền thông.

    Ít nhất thì cho đến giờ phút này, Mantle đã có một khởi đầu khá tốt đẹp. Một trong những Studio tên tuổi nhất của cả ngành công nghiệp game - DICE của EA – đã nhận vai trò tiên phong trong việc ứng dụng Mantle vào trong phần tiếp theo của tựa game đình đám Battlefield. Nếu những thông tin AMD cung cấp là thật, chúng ta sẽ sớm thấy hàng loạt tựa game gán mác Mantle ra mắt trên thị trường.

    Tác hại của API cấp thấp

    Khác biệt lớn nhất của các máy console với PC là sự đồng nhất. Hiện nay trên thị trường đồ họa PC, 3 cái tên nắm nhiều quyền lực nhất vẫn là AMD, Intel và NVIDIA. Kiến trúc đồ họa của mỗi hãng là hoàn toàn khác nhau, thậm chí tùy theo khoảng cách về tuổi đời mà các dòng sản phẩm của cùng một hãng cũng có thể khác nhau một trời một vực. Chúng chỉ được thống nhất với nhau bởi các yêu cầu tính năng mà Microsoft đã định ra trong Direct3D. Nếu không có sự tồn tại của các bộ API như Direct3D và OpenGL, việc chúng ta có thể dễ dàng tận hưởng mọi thể loại game trên đa số nền tảng phần cứng như hiện nay hầu như là bất khả thi, bởi mỗi máy PC có một cấu hình khác nhau.

    Tìm hiểu về bộ API Mantle đầy hứa hẹn của AMD

    Khoảng cuối thập kỷ 90 của thế kỷ trước. Một tên tuổi lớn khác của ngành công nghiệp vi xử lí đồ họa thời bấy giờ là 3dfx cũng có một bộ API cấp thấp cho riêng các phần cứng của mình mang tên Glide. Thời điểm này có thể nói ngành công nghiệp máy tính đã qua thuở sơ khai, nhưng các API cấp cao với khả năng trừu tượng hóa mạnh vẫn còn rất hiếm hoi, và Microsoft thì vẫn còn đang vật lộn hoàn thiện Direct3D. Cũng vì vậy mà Glide lúc đó rất được các lập trình viên ưa chuộng, đến mức mà có những thời điểm game mới ra mắt chỉ hỗ trợ mỗi Glide (tức chỉ chạy trên nền phần cứng của hãng 3dfx) hoặc nếu có phiên bản dựa trên Direct3D, OpenGL thì chất lượng cũng kém hơn so với phiên bản dùng Glide. Về mặt lợi ích trước mắt, người dùng VGA của 3dfx có hiệu năng tốt hơn, nhiều tính năng hơn và ít lỗi hơn.Nhưng ngược lại người dùng card ATI (sau này thuộc về AMD) và NVIDIA dĩ nhiên sẽ không lấy gì làm vui vẻ, thậm chí đôi lúc gần như bị bỏ rơi.

    Cũng chính vì vậy, sau này người ta coi sự lụi tàn của Glide và sự sụp đổ của 3dfx hồi 2002 là tin tốt cho toàn ngành công nghiệp. Direct3D được hoàn thiện và lên ngôi vua API trên thị trường PC. Lúc này việc các hãng phát triển game có thể tập trung mọi nguồn lực vào một API duy nhất đã đem đến kết quả tốt hơn cho tất cả người dùng thay vì phân tán sức lực vào các cách render khác nhau cho từng nền tảng phần cứng khác nhau.

    Giờ đây khi mà Direct3D đã già cỗi và các trở ngại về hiệu năng như trong phần 1 ngày càng gây phiền toái cho giới lập trình, sự xuất hiện của Mantle thực sự là cần thiết. Nhưng để tránh đi vào vết xe đổ của Glide, câu hỏi cần đặt ra là liệu Mantle có tác dụng gì cho người dùng NVIDIA và Intel hay không. Liệu các hãng sản xuất game có phải một lần nữa phân tán nhân lực của mình để phát triển song song các phiên bản game trên nền Mantle và Direct3D – đồng nghĩa với việc chất lượng bản game Direct3D sẽ phải đi xuống? Việc phát triển một API cấp thấp hoàn chỉnh không thể xong trong 1 sớm một chiều, và cũng không có vẻ rằng NVIDIA và Intel cũng sẽ vội vàng chạy theo cuộc đua này khiến cho thị trường xáo động. Chúng ta sẽ cần phải chờ xem AMD sẽ thương lượng như thế nào để Mantle không đem lại những tác động xấu lên thị trường như Glide đã từng làm.

    Tham khảo: Anandtech

    Tin cùng chuyên mục
    Xem theo ngày

    NỔI BẬT TRANG CHỦ