
Trong bức tâm thư mà vị CEO gốc Hoa vừa gửi tới toàn bộ nhân viên Intel sau buổi báo cáo tài chính Q2 2025 mới đây, một chi tiết đáng chú ý chính là sự trở lại của tính năng SMT (hay Hyper-Threading theo cách gọi cũ của hãng). Cụ thể như sau:
“Trong mảng máy cá nhân, Panther Lake là trọng tâm hàng đầu của chúng ta khi nó sẽ tăng cường thêm sức mạnh cho công ty trên laptop trải dài từ người dùng cho tới doanh nghiệp. Chúng ta cũng phải giữ liên tục tiến độ với Nova Lake để rút ngắn khoảng cách trên mặt trận desktop cao cấp.
Trong mảng trung tâm dữ liệu, chúng ta đã tập trung vào giành lại thị phần khi tăng tốc sản xuất Granite Rapids trong khi đồng thời cải thiện năng lực của hãng cho các tác vụ siêu cấp (hyperscale). Để hỗ trợ việc này, chúng ta sẽ giới thiệu lại tính năng xử lý đa luồng cùng lúc (SMT). Rời bỏ khỏi SMT đã đặt chúng ta vào vị thế kém cạnh tranh. Mang nó trở về sẽ giúp chúng ta thu hẹp khoảng cách về hiệu năng. Chúng ta cũng đang trong tiến độ tốt nhằm tìm kiếm một lãnh đạo dài hạn cho mảng trung tâm dữ liệu, và tôi có kế hoạch sẽ chia sẻ nhiều hơn trong quý này.”
Cơ bản về SMT
Các chế độ xử lý dữ liệu trên một nhân xử lý, màu trắng là lúc chip không làm việc (stall)
Trước hết hãy nói sơ lược về SMT. Nó không hẳn là tính năng mà là một đường hướng thiết kế nhân xử lý. Hãy tưởng tượng nhân xử lý giống như dây chuyền sản xuất (line) trong nhà máy, với một số lượng công đoạn (pipeline) nào đó. Trong điều kiện hoàn hảo, mỗi công đoạn sẽ chiếm thời lượng gia công (cycle) giống nhau (giả dụ 4 cycle), khi công đoạn này hoàn tất thì công đoạn kế tiếp diễn ra và tiến độ sản xuất diễn ra liên tục.
Tuy vậy có đôi khi, một vài công đoạn (tạm gọi công đoạn B) gặp trục trặc hoặc gia công lâu hơn (giả dụ 6 cycle), dẫn tới tình trạng bị “treo” (stall) dây chuyền. Lúc này công đoạn ở trước (tạm gọi A) sẽ bị “tồn hàng” còn công đoạn ở sau (tạm gọi C) bị “khan hàng”. Kết quả là sản lượng giảm.
Một trong các hướng khắc phục là chúng ta mở thêm một trạm sản xuất cho B, nhưng nó vẫn nằm trong toàn bộ line ban đầu. Lúc này công đoạn B sẽ được gấp đôi sản lượng hoặc nói cách khác tốc độ ra sản phẩm được rút ngắn (còn lại 3 cycle). Về cơ bản, lúc này lại xảy ra tình trạng “thừa hàng” do B sẽ ra hàng nhanh hơn C. Tuy vậy đầu vào của B vẫn lệ thuộc vào A nên sản lượng của B thực tế cũng không hơn nhiều, chỉ là B sẽ gây “tồn hàng” lên C vì cơ bản, C sản xuất chậm hơn B’ (4 vs. 3 cycle). Cách khắc phục ở đây là ta thêm một thùng hàng/kho chứa tạm để đầu ra của B’ và đầu vào của C được “giải toả”.
Cần chú ý rằng trường hợp của B có thể lặp lại ở E, F, G, H và hướng khắc phục cũng tương tự.
Nhân xử lý Zen của AMD với các đơn vị có tính năng SMT
Quảng cáo
Vậy SMT có hiệu quả khi nào? Đó là khi ống lệnh xử lý hay gặp tình trạng “stall” như B nêu trên. Lúc này luồng xử lý (tạm gọi 1) bị dừng lại và để chip không bị lãng phí thì luồng thứ 2/3/4 được khai thác trong khi luồng 1 đang chờ giải “stall”. Tất nhiên luồng 2/3/4 hoàn toàn có thể bị “stall” tương tự nên đó là lý do chúng ta có cả SMT2, SMT4, SMT8.
Cần hay không cần
Về lịch sử mà nói, khái niệm SMT được ra đời từ khá lâu (thập kỷ 70 thế kỷ trước). Đó là thời điểm mà chip xử lý về cơ bản chỉ có duy nhất 1 nhân xử lý (chip đa nhân mãi tới thập kỷ 2000 mới xuất hiện). SMT được đề xuất như một cách để tối ưu hoá thời gian chip “chết” (luồng xử lý bị stall). Nhưng khi chip đa nhân ra đời, mục tiêu này dần thay đổi. Nếu nhân 1 đang stall, chúng ta có thể chuyển nhân 2/3/4 để làm việc khác. Vì thế mà các chip hiện đại ngày nay đặc biệt như hệ ARM thường không có SMT (vì tại sao phải dùng nhân ảo trong khi đang thừa nhân thật)?
Trên môi trường server, tình trạng chip “nhàn rỗi” (stall) xảy ra khá phổ biến. Khi có SMT chúng sẽ “bận rộn” hơn
Song nói thế không có nghĩa SMT đã trở thành vô dụng hay một thứ “tàn tích phong kiến”. Thực tế là hiện tượng stall sẽ không bao giờ chấm dứt, đặc biệt trong môi trường server. Với các trung tâm dữ liệu mà nói, khoảng cách địa lý luôn tồn tại và dù chúng ta có tối ưu đến mức nào thì liên lạc giữa 2 thiết bị cách nhau vài ngàn km hoặc hơn sẽ luôn bị delay. Hoặc khi chạy ảo hoá thiết bị, ứng dụng, stall là điều không ai muốn nhưng không thể nào tránh khỏi. Có nghĩa nhân xử lý trên server sẽ luôn gặp tình trạng stall vì “đói dữ liệu”. Và đây cũng là lý do tại sao CPU của Sun (Oracle) hay IBM hỗ trợ tới tận SMT8. Dữ liệu có thể mất vài giây để di chuyển giữa 2 lục địa nhưng một chu kỳ xử lý chỉ cần vài nano giây (1/10^9 giây).
Quảng cáo
Khi CPU đa nhân ra đời, năng lực xử lý đa luồng cùng lúc cải thiện đáng kể so với chip đơn nhân
Túm lại nếu trên PC cá nhân, SMT có thể không hữu ích cho lắm (nếu thiết kế chip cực kỳ tối ưu để hạn chế stall) thì trên server, nó vẫn có đất sống. Vậy nên cần hay không không phải vì “trend” công nghệ mà vì bản chất nhu cầu sử dụng của từng đối tượng. Thực tế các CPU AMD từ Zen trở đi đều hỗ trợ SMT vì cơ bản, chúng được ra đời để chạy server (EPYC) và chúng ta chưa thấy thông tin hay động thái gì cho thấy AMD sẽ bỏ SMT.
Nguồn: Tinhte.vn