Câu trả lời:
Như những người khác đã nói, điều này phụ thuộc hoàn toàn vào nhiệm vụ.
Để minh họa điều này, chúng ta hãy nhìn vào một điểm chuẩn thực tế:
Điều này được lấy từ luận văn thạc sĩ của tôi (hiện không có sẵn trực tuyến).
Điều này cho thấy tốc độ tăng tương đối 1 của các thuật toán khớp chuỗi (mỗi màu là một thuật toán khác nhau). Các thuật toán được thực hiện trên hai bộ xử lý lõi tứ Intel Xeon X5550 với siêu phân luồng. Nói cách khác: có tổng cộng 8 lõi, mỗi lõi có thể thực thi hai luồng phần cứng (= siêu tốc độ siêu tốc). Do đó, điểm chuẩn kiểm tra việc tăng tốc với tối đa 16 luồng (là số lượng luồng đồng thời tối đa mà cấu hình này có thể thực hiện).
Hai trong số bốn thuật toán (màu xanh và màu xám) tỷ lệ tuyến tính nhiều hay ít trên toàn bộ phạm vi. Đó là, nó được hưởng lợi từ siêu phân luồng.
Hai thuật toán khác (màu đỏ và màu xanh lá cây; sự lựa chọn không may cho người mù màu) quy mô tuyến tính cho tối đa 8 luồng. Sau đó, họ trì trệ. Điều này chỉ ra rõ ràng rằng các thuật toán này không được hưởng lợi từ siêu phân luồng.
Nguyên nhân? Trong trường hợp cụ thể này, nó tải bộ nhớ; hai thuật toán đầu tiên cần nhiều bộ nhớ hơn để tính toán và bị hạn chế bởi hiệu suất của bus bộ nhớ chính. Điều này có nghĩa là trong khi một luồng phần cứng đang chờ bộ nhớ, thì luồng kia có thể tiếp tục thực thi; một trường hợp sử dụng chính cho chủ đề phần cứng.
Các thuật toán khác đòi hỏi ít bộ nhớ hơn và không cần phải đợi xe buýt. Chúng gần như hoàn toàn tính toán ràng buộc và chỉ sử dụng số học số nguyên (hoạt động bit, trên thực tế). Do đó, không có tiềm năng để thực hiện song song và không có lợi ích từ các đường ống chỉ dẫn song song.
1 Tức là hệ số tăng tốc là 4 có nghĩa là thuật toán chạy nhanh gấp bốn lần như thể nó được thực thi chỉ với một luồng. Theo định nghĩa, sau đó, mọi thuật toán được thực hiện trên một luồng có hệ số tăng tốc tương đối là 1.
Vấn đề là, nó phụ thuộc vào nhiệm vụ.
Khái niệm đằng sau siêu phân luồng về cơ bản là tất cả các CPU hiện đại đều có nhiều hơn một vấn đề thực thi. Thường gần hơn một chục hoặc bây giờ. Được phân chia giữa Integer, dấu phẩy động, SSE / MMX / Streaming (bất cứ thứ gì nó được gọi là ngày nay).
Ngoài ra, mỗi đơn vị có tốc độ khác nhau. Tức là có thể mất một chu kỳ đơn vị toán học số nguyên 3 để xử lý một cái gì đó, nhưng phép chia dấu phẩy động 64 bit có thể mất 7 chu kỳ. (Đây là những con số thần thoại không dựa trên bất cứ điều gì).
Thực hiện ngoài trật tự giúp rất nhiều trong việc giữ cho các đơn vị khác nhau đầy đủ nhất có thể.
Tuy nhiên, bất kỳ tác vụ đơn lẻ nào sẽ không sử dụng mọi đơn vị thực thi mỗi giây. Thậm chí không chia tách chủ đề có thể giúp hoàn toàn.
Do đó, lý thuyết trở thành bằng cách giả vờ có CPU thứ hai, một luồng khác có thể chạy trên nó, sử dụng các đơn vị thực thi có sẵn không được sử dụng bằng cách chuyển mã Âm thanh của bạn, là công cụ SSE / MMX 98% và các đơn vị int và float hoàn toàn nhàn rỗi trừ một số thứ.
Đối với tôi, điều này có ý nghĩa hơn trong một thế giới CPU duy nhất, việc tạo ra CPU thứ hai cho phép các luồng dễ dàng vượt qua ngưỡng đó với ít mã hóa (nếu có) để xử lý CPU thứ hai giả mạo này.
Trong thế giới lõi 3/4/6/8, có CPU 6/8/12/16, điều đó có giúp ích gì không? Dunno. Càng nhiều? Phụ thuộc vào các nhiệm vụ trong tầm tay.
Vì vậy, để thực sự trả lời câu hỏi của bạn, nó sẽ phụ thuộc vào các tác vụ trong quy trình của bạn, đơn vị thực thi nào đang sử dụng và trong CPU của bạn, đơn vị thực thi nào không hoạt động / không được sử dụng và có sẵn cho CPU giả thứ hai đó.
Một số 'lớp' của các công cụ tính toán được cho là có lợi (nói chung là mơ hồ). Nhưng không có quy tắc cứng và nhanh, và đối với một số lớp, nó làm mọi thứ chậm lại.
Tôi có một số bằng chứng giai thoại để thêm vào câu trả lời của geoffc rằng tôi thực sự có CPU Core i7 (4 lõi) với siêu phân luồng và đã chơi một chút với chuyển mã video, đây là một nhiệm vụ đòi hỏi một lượng giao tiếp và đồng bộ hóa nhưng đủ song song rằng bạn có thể tải lên một hệ thống một cách hiệu quả.
Kinh nghiệm của tôi khi chơi với số lượng CPU được gán cho nhiệm vụ thường sử dụng 4 lõi "phụ" siêu phân cấp tương đương với công suất xử lý tương đương khoảng 1 CPU. Thêm 4 lõi "siêu phân luồng" được thêm vào cùng một lượng công suất xử lý có thể sử dụng được như từ 3 đến 4 lõi "thực".
Được cho rằng đây không hoàn toàn là một thử nghiệm công bằng vì tất cả các luồng mã hóa có thể sẽ cạnh tranh cho cùng một tài nguyên trong CPU nhưng với tôi nó đã cho thấy ít nhất là một sự gia tăng nhỏ trong sức mạnh xử lý chung.
Cách thực sự duy nhất để chỉ ra liệu nó có thực sự giúp ích hay không là chạy một vài thử nghiệm loại Integer / Floating Point / SSE khác nhau cùng một lúc trên một hệ thống có chức năng siêu phân luồng được kích hoạt và vô hiệu hóa và xem khả năng xử lý có sẵn trong một điều khiển môi trường.
Nó phụ thuộc rất nhiều vào CPU và khối lượng công việc như những người khác đã nói.
Hiệu suất được đo trên bộ xử lý Intel® Xeon® MP với Công nghệ siêu phân luồng cho thấy mức tăng hiệu suất lên tới 30% trên các điểm chuẩn ứng dụng máy chủ phổ biến cho công nghệ này
(Điều này có vẻ hơi bảo thủ đối với tôi.)
Và còn một bài báo dài nữa (mà tôi chưa đọc hết) với nhiều số hơn ở đây . Một điều thú vị khác từ bài báo đó là siêu phân luồng có thể làm cho tốc độ chậm hơn đối với một số nhiệm vụ.
Kiến trúc Bulldozer của AMD có thể thú vị . Họ mô tả mỗi lõi có hiệu quả 1,5 lõi. Đó là loại siêu đa cực hoặc đa lõi tiêu chuẩn phụ thuộc vào mức độ tự tin của bạn về hiệu suất của nó. Các số trong phần đó cho thấy tốc độ nhận xét tăng từ 0,5 lần đến 1,5 lần.
Cuối cùng, hiệu suất cũng phụ thuộc vào hệ điều hành. Hy vọng, HĐH sẽ gửi các quy trình tới các CPU thực sự theo sở thích đối với các siêu phân luồng chỉ đơn thuần là giả mạo như các CPU. Mặt khác, trong một hệ thống lõi kép, bạn có thể có một CPU nhàn rỗi và một lõi rất bận rộn với hai luồng. Tôi dường như nhớ lại rằng điều này đã xảy ra với Windows 2000, tất nhiên, tất cả các hệ điều hành hiện đại đều có khả năng phù hợp.