Bên trong Apple M1 là một GPU cực kỳ kỳ quặc

Đăng nhận xét

Trong nỗ lực phát triển trình điều khiển đồ họa nguồn mở cho M1, Alyssa Rosenzweig gần đây đã tìm thấy một điều kỳ quặc trong đường ống render của GPU của M1. Cô đã tạo ra các hình học 3D ngày càng phức tạp, và cuối cùng đã đến một chú thỏ làm cho lỗi GPU ra ngoài.

Về cơ bản – và xin lưu ý rằng điều này và mọi thứ khác mà tôi sắp nói là một sự đơn giản hóa quá mức – vấn đề bắt đầu với khả năng truy cập bộ nhớ kém của GPU. Đó là một GPU mạnh mẽ, nhưng giống như I-series IPhone SoC mà nó chia sẻ một tổ tiên, nó cần các phím tắt để duy trì hiệu quả.

Bên trong Apple M1 là một GPU cực kỳ kỳ quặc

Thay vì hiển thị thẳng vào framebuffer như một GPU rời rạc có thể, M1 mất hai đường chuyền của một khung hình: đầu tiên tìm thấy các đỉnh, và thứ hai làm mọi thứ khác. Rõ ràng, đường chuyền thứ hai chuyên sâu hơn nhiều, vì vậy giữa các đường chuyền, phần cứng chuyên dụng phân đoạn khung thành gạch (khung nhỏ, về cơ bản) và đường chuyền thứ hai được lấy một ô tại một thời điểm.

Tiling giải quyết vấn đề không có đủ tài nguyên bộ nhớ, nhưng để có thể ghép các ô lại với nhau thành một khung hình sau đó, GPU cần giữ một bộ đệm của tất cả các dữ liệu trên mỗi đỉnh. Rosenzweig phát hiện ra rằng bất cứ khi nào bộ đệm này tràn ra, kết xuất sẽ không hoạt động. Xem chú thỏ đầu tiên, ở trên.

Trong một trong những bài thuyết trình của Apple, nó được giải thích rằng khi bộ đệm đầy, GPU sẽ xuất ra một phần render – tức là, một nửa chú thỏ. Trong phần mềm của Apple, bộ đệm được đề cập được gọi là bộ đệm tham số, một cái tên dường như được lấy từ tài liệu PowerVR của Imagination.

Bên trong Apple M1 là một GPU cực kỳ kỳ quặc

Imagination là một công ty có trụ sở tại Anh, giống như Arm, thiết kế các bộ xử lý mà nó cấp phép cho các công ty khác. Apple đã ký một thỏa thuận với công ty vào đầu năm 2020 cho phép Apple cấp phép một loạt ip của mình. Rõ ràng là M1, được đưa ra thị trường vào cuối năm 2020, sử dụng kiến trúc GPU PowerVR của họ làm cơ sở cho GPU của nó.

Dù sao, trở lại với chú thỏ. Như bạn có thể đoán, các kết xuất một phần có thể được thêm vào với nhau để tạo ra một kết xuất của toàn bộ chú thỏ (nhưng với một tá bước bổ sung ở giữa, tất nhiên).

Nhưng kết xuất này vẫn không hoàn toàn đúng. Bạn có thể nhìn thấy các hiện vật trên chân chú thỏ. Nó chỉ ra rằng điều này là do các phần khác nhau của khung được phân chia giữa bộ đệm màu và bộ đệm độ sâu, và sau này hành vi sai khi được tải với kết xuất một phần.

Bên trong Apple M1 là một GPU cực kỳ kỳ quặc

Một cấu hình được thiết kế ngược từ trình điều khiển của Apple khắc phục sự cố, và sau đó cuối cùng bạn có thể hiển thị chú thỏ (bên dưới).

Nó không chỉ là trình điều khiển đồ họa mã nguồn mở của Rosenzweig cho M1 nhảy qua tất cả các vòng này để hiển thị hình ảnh: đây chỉ là cách GPU hoạt động. Kiến trúc của nó có lẽ không được thiết kế với kết xuất 3D trong tâm trí nhưng mặc dù vậy, Apple đã biến nó thành một cái gì đó có thể cạnh tranh với GPU rời rạc mới nhất, nếu không muốn nói là hoàn toàn vượt qua chúng, như Apple tuyên bố. Thật tuyệt.

Để có lời giải thích sâu hơn (và chính xác về mặt kỹ thuật) về kết xuất thỏ và cho các khám phá khác vào M1, hãy chắc chắn kiểm tra blog của Rosenzweig và trang web Asahi Linux.

Related Posts

Đăng nhận xét

Subscribe Our Newsletter