Linus Torvalds, cha đẻ của Linux, có lẽ là một trong những ông trùm công nghệ có nhiều phát ngôn gây sốc và “không ngại va chạm” nhất. Quan điểm của Torvalds được đánh giá là “tuy thô mà thật”, và hầu như luôn trở thành chủ đề bàn luận rất thú vị cho dù bạn có đồng tình hay không.
Khi thảo luận về những thay đổi và bổ sung cho bản build KConfig (cấu hình nhân) Linux mới, Torvalds đã bày tỏ sự khó chịu và không hài lòng ra mặt đối với các cấp tính năng kiến trúc AMD64 hoặc x86_64. Ông cho biết:
Nghĩ lại thì chúng ta không nên đi sâu vào cấp độ vi kiến trúc x86-64. “Vì đây là thứ ngớ ngẩn"
Toàn bộ các cấp độ "v2", "v3", "v4" v.v. có vẻ như đều thật điên rồ, ngu ngốc và cần phải loại bỏ.
Chúng không liên quan đến bất cứ điều gì. Vui lòng *không* đưa cái thứ vớ vẩn đó vào nguồn kernel.
Tôi không biết ai đã nghĩ ra cái thứ rác rưởi "mức kiến trúc vi mô", nhưng theo như tôi biết, nó hoàn toàn không chính thức và là một mô hình đầy lỗi.
Có một mô hình rất thực tế cho các tính năng kiến trúc vi mô và đó là các bit CPUID. Cố gắng tuyến tính hóa các bit đó về mặt kỹ thuật là sai, vì những thứ này đơn giản không phải là một loại tiến trình tuyến tính.
Và tệ hơn, người ta coi đó là một "sự đơn giản hóa", nhưng thực tế là làm tăng thêm sự phức tạp. Bây giờ thay vì hỏi "CPU này có hỗ trợ lệnh cmpxchgb16 không?", thì câu hỏi lại trở thành "'v3' có nghĩa là gì nữa?".
Không. Chúng tôi *KHÔNG* đưa sự ngu ngốc đó vào kernel.
Linus
Đối với những ai chưa biết, các cấp độ vi kiến trúc x86-64 này đã được kỹ sư Florian Weimer của Red Hat giới thiệu vào năm 2020. Ban đầu, "các Levels A, B và C" được đề xuất, và sau đó "Level D" đã được thêm vào.
Về cơ bản, những cấp độ này được đặt ra để phân loại các tính năng CPU theo cách thời gian/thứ tự thời gian nhằm mục đích đơn giản hóa việc cải thiện khả năng tương thích và sự phối hợp giữa phần cứng và hệ điều hành/phần mềm thông qua các tối ưu hóa biên dịch tốt hơn:
- x86-64-v2 hỗ trợ cho các lệnh vector lên đến Streaming SIMD Extensions 4.2 (SSE4.2) và Supplemental Streaming SIMD Extensions 3 (SSSE3), lệnh POPCNT (hữu ích cho phân tích dữ liệu và bit-fiddling trong một số cấu trúc dữ liệu) và CMPXCHG16B (một lệnh so sánh và hoán đổi hai từ hữu ích cho các thuật toán đồng thời).
- x86-64-v3 bổ sung các lệnh vector lên đến AVX2, MOVBE (để truy cập dữ liệu big-endian) và các lệnh thao tác bit bổ sung.
- x86-64-v4 bao gồm các lệnh vector từ một số biến thể AVX-512.
Linus Torvalds cảm thấy các cấp độ kiến trúc này làm mọi thứ phức tạp hơn thay vì đơn giản hóa vấn đề, vì việc tuyến tính hóa tiến trình của các lệnh và tính năng phần cứng không phải là một cách tiếp cận thực tế.
Ở đây, quan điểm của Torvalds là có lý vì chúng ta thường thấy một số lệnh CPU nhất định, chẳng hạn như AVX, có thể tồn tại trong một số họ vi xử lý nhưng sau đó nó biến mất. Một ví dụ gần đây là Intel giới thiệu AVX-512 trong Rocket Lake thế hệ thứ 11 rồi sau đó loại bỏ nó ở các thế hệ tiếp theo.
Điều đáng chú ý ở đây là Linus Torvalds hiện là một nhân vật nổi tiếng của x86 Ecosystem Advisory Group mới thành lập, nên ý kiến đóng góp của ông chắc chắn có giá trị.
Bạn nghĩ sao về quan điểm trên? Hãy để lại ý kiến bình luận nhé