Tôi đã nghe các thuật ngữ siêu phân luồng và đa luồng, nhưng chính xác thì sự khác biệt giữa chúng là gì? Loại bộ xử lý Intel nào sử dụng chúng?
Tôi đã nghe các thuật ngữ siêu phân luồng và đa luồng, nhưng chính xác thì sự khác biệt giữa chúng là gì? Loại bộ xử lý Intel nào sử dụng chúng?
Câu trả lời:
Đa luồng đề cập đến nhiệm vụ chung là chạy nhiều hơn một luồng thực thi trong một hệ điều hành. Đa luồng được gọi chung là "đa xử lý", có thể bao gồm nhiều quy trình hệ thống (một ví dụ đơn giản trên Windows sẽ là chạy Internet Explorer và Microsoft Word cùng một lúc) hoặc có thể bao gồm một tiến trình có nhiều luồng trong nó
Đa luồng (hay tôi nên nói, đa xử lý) là một khái niệm phần mềm . Thực tế, bất kỳ CPU hoàn chỉnh Turing nào cũng có thể thực hiện đa luồng, ngay cả khi máy tính chỉ có một lõi CPU và lõi đó không hỗ trợ siêu phân luồng. Để hỗ trợ đa xử lý, CPU sẽ xen kẽ việc thực thi các luồng thực thi khác nhau, bằng cách thực hiện cái này, cái khác, rồi cái khác, trong đó hệ điều hành sẽ chia thời gian có sẵn thành "lát" và cho thời gian xấp xỉ bằng nhau mỗi luồng (thời gian không nhất thiết phải bằng nhau, nhưng đó thường là cách nó được thực hiện trừ khi một quy trình yêu cầu mức độ ưu tiên cao hơn).
Lưu ý rằng, bất cứ khi nào có nhiều luồng thực thi phần mềm cố gắng thực thi tại bất kỳ thời điểm nào so với các luồng thực thi phần cứng (đồng thời) có sẵn , thì các luồng phần mềm này sẽ được "xen kẽ" giữa các lõi có sẵn. Trong trường hợp "bộ xử lý đơn" (một lõi CPU không có siêu phân luồng), nếu bạn có nhiều luồng phần mềm, chúng sẽ luôn luônđược xen kẽ. Nếu bạn có CPU 4 nhân với siêu phân luồng, đó là 8 "luồng phần cứng", nghĩa là CPU có thể thực thi 8 luồng thực thi đồng thời cùng một lúc, vì vậy nếu bạn có 8 luồng phần mềm đang cố gắng chạy, tất cả chúng có thể chạy cùng một lúc ; nhưng nếu bạn có 9 luồng phần mềm, một trong các luồng phần cứng sẽ phải xen kẽ một cặp luồng (cặp luồng chính xác được chọn sẽ phụ thuộc vào việc thực hiện bộ lập lịch của hệ điều hành).
Mặt khác, siêu phân luồng đề cập đến một công nghệ phần cứng rất đặc biệt do Intel tạo ra, cho phép một lõi xử lý duy nhất xen kẽ nhiều luồng thực thi hiệu quả hơn. Nói cách khác, một CPU có khả năng siêu phân luồng sẽ cung cấp hiệu năng cao hơn một chút so với CPU, nhưng không phải là siêu phân luồng, bởi vì CPU siêu phân luồng sẽ có thể cân bằng đồng thời hai (đôi khi nhiều hơn, nhưng siêu phân luồng thường là 2- cách) chủ đề thực hiện trên một lõi nhất định.
Tuy nhiên, siêu phân luồng chậm hơn so với việc có các lõi vật lý hoàn toàn tách biệt, bởi vì có một số loại hoạt động có thể phá vỡ các lợi thế về hiệu suất của siêu phân luồng, trong khi có ít hoạt động có thể gây ra sự kiện như vậy với các lõi hoàn toàn riêng biệt.
Lấy ví dụ sau, trong đó "1 lõi" được giả sử để thực hiện chính xác như nhau trong tất cả các ví dụ:
Ví dụ 1: 2 lõi, không siêu phân luồng.
Ví dụ 2: 4 lõi, không siêu phân luồng.
Ví dụ 3: 2 lõi với siêu phân luồng.
Ví dụ 4: 4 lõi với siêu phân luồng.
Trong trường hợp này, Ví dụ 4 sẽ luôn nhanh nhất. Ví dụ 2 đôi khi có thể nhanh như Ví dụ 4, về khối lượng công việc cực kỳ phù hợp để tận dụng tối ưu hóa siêu phân luồng.
Mặt khác, ví dụ 3, đôi khi, có thể, trên các khối lượng công việc trong đó siêu phân luồng là thuận lợi nhất, nhanh như ví dụ 2, mặc dù nó có một nửa số lõi vật lý.
Tất nhiên, ví dụ 1 sẽ chậm nhất trong tất cả các ví dụ, nhưng đôi khi có thể nhanh như ví dụ 3, khi chạy một khối lượng công việc không phù hợp với siêu phân luồng.
Trong các điểm chuẩn trong thế giới thực với CPU Intel hiện đại, chúng ta thường thấy rằng kết quả siêu phân luồng nói chung, cải thiện hiệu suất từ 20% đến 40% so với không siêu phân luồng (với trường hợp "không siêu phân luồng" được đánh giá bằng cách vô hiệu hóa tính năng siêu phân luồng trong BIOS). Đôi khi sẽ có khối lượng công việc trong đó việc vô hiệu hóa siêu phân luồng cho thấy lợi thế về hiệu suất , nhưng những khối lượng công việc này có thể hiếm khi sử dụng thực tế. Nhưng, nếu tôi có lựa chọn giữa 4 lõi với siêu phân luồng hoặc 8 lõi, giả sử rằng mỗi lõi có cùng hiệu năng, tôi sẽ chọn CPU 8 lõi mỗi lần.
Đa luồng là một thuật ngữ để xử lý song song ở cấp độ hệ điều hành. Bộ xử lý không có gì để làm với đa luồng.
Hyperthreading là một khái niệm Intel thực hiện xử lý "đồng thời" nhiều luồng trong một lõi xử lý. Hệ điều hành nhìn thấy hai lõi bộ xử lý, mặc dù chỉ có một lõi vật lý.