Sự khác biệt giữa đa luồng và siêu phân luồng là gì? [đóng cửa]


10

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?


2
Bạn đang cố gắng so sánh những thứ không thể so sánh trực tiếp; chỉ liên quan. Nó giống như hỏi "sự khác biệt giữa bàn chân và giày?" Điều đó sang một bên, những gì đã nghiên cứu của bạn tiết lộ cho đến nay? Chính xác thì bạn đang gác máy ở đâu để xác định sự khác biệt dựa trên các định nghĩa dễ dàng lượm lặt được từ Internet?
Ƭᴇcʜιᴇ007


1
Tôi không biết là đa luồng hay Hyperthreading, tôi được yêu cầu biết chúng
tăng

1
đám đông tràn ngăn xếp đã đóng chủ đề vì 'ngoài chủ đề' ... Đó là một câu hỏi rất hay, rất phổ biến và không nên đóng cửa ..
Robbo_UK

Câu trả lời:


19

Đ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.


2
Nói chính xác, đa luồng và đa xử lý không giống nhau. Chủ đề chia sẻ bối cảnh thực hiện với quy trình mà chúng được liên kết, trong khi các quy trình có bối cảnh thực hiện riêng. Tuy nhiên, đối với câu trả lời này, sự khác biệt này không quan trọng.
Tero Kilkanen

1
Công nghệ siêu phân luồng không phải là "do Intel tạo ra"; đối với dòng chính x86, nó chỉ là một tên thương hiệu cho đa luồng đồng thời. Nếu Alpha 21464 được sản xuất, nó sẽ là một trong những người dùng nổi bật đầu tiên của SMT. Intel đã sản xuất việc sử dụng SMT được phát hành đầu tiên (có thể loại trừ các bộ xử lý ít được biết đến hơn) với một số Pentium 4s, nhưng ý tưởng cơ bản không phải là một phát minh của Intel.
Paul A. Clayton

2
Phân minh: siêu phân luồng không hoàn toàn chậm hơn các lõi riêng biệt. Người ta có thể nghĩ ra các trường hợp (nhân tạo) trong đó chia sẻ bộ đệm L1 là lợi ích lớn hơn so với việc sử dụng đầy đủ tài nguyên của lõi. Một trường hợp đặc biệt khác có thể là khi một luồng hoạt động liên tục và một luồng khác xử lý ngắn gọn các sự kiện không liên tục; đánh thức một lõi không liên tục sẽ tốn kém hơn so với việc đánh thức một sợi trên lõi đang hoạt động. Đối với các luồng có ILP cực kỳ thấp, nếu sự tranh chấp bộ đệm không phải là vấn đề, thì hiệu quả năng lượng lớn hơn của việc sử dụng một lõi có thể cho phép turboboosting lớn hơn (hiệu suất tốt hơn).
Paul A. Clayton

3
Câu trả lời có thể chỉnh sửa trên SU, vì vậy nếu các bạn muốn cải thiện nó, xin vui lòng. Ngoài ra, hãy ghi nhớ mức độ hiểu biết rõ ràng về OP; ngay cả câu trả lời của tôi đứng một mình có lẽ là kỹ thuật hơn họ mong đợi hoặc muốn. Tôi cố tình che đậy một số chi tiết để dễ giải thích. Tôi nghi ngờ nếu OP sẽ sớm thiết kế bộ xử lý bất cứ lúc nào và rất cần biết tất cả các chi tiết này. Bình luận thú vị dù sao.
allquixotic

1
Các chỉnh sửa được đề xuất thay đổi nội dung (nghĩa là không chỉ sửa lỗi ngữ pháp / lỗi chính tả hoặc sửa lỗi cho rõ ràng) có khả năng bị từ chối.
Paul A. Clayton

4

Đ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ý.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.