Những lý do nào khiến một lập trình viên có thể muốn tắt siêu phân luồng?


13

Công ty tôi vừa mua máy tính mới để thay thế máy Windows XP 2GB cũ. Một người nào đó trong nhóm của tôi nhận thấy rằng họ đi kèm với tính năng siêu phân luồng bị vô hiệu hóa và bảo mọi người khởi động lại và bật nó lên. Có một lợi ích để lập trình trên một máy bị siêu phân luồng bị vô hiệu hóa?


1
Bạn đang sử dụng mô hình CPU Intel nào, ví dụ Core i5 hoặc i7?
JB King

@JBK Câu hỏi hay, tôi không biết, tôi không có một trong những máy đó.
Pops

Trên một máy tính xách tay Pentium 4 cũ, để giảm nhiệt và tiếng ồn của quạt, và có thể làm cho pin kéo dài thêm vài phút. Không phải là một câu trả lời vì nó phải là một điều lịch sử cổ xưa, và không nên áp dụng trong trường hợp của bạn.
Steve314

Trong trò chơi Lucasarts Grim Fandango, cỗ máy âm thanh gặp phải tình trạng đua khi chạy với siêu phân luồng.

Câu trả lời:


14

Có, tôi đã làm việc trên một ứng dụng hoạt động tốt hơn khi chạy trên máy bị tắt HT .

Điều đã xảy ra là, mã ban đầu sẽ tạo ra gấp đôi số luồng khi chạy trên máy siêu phân luồng (mà bạn cho rằng đó là loại toàn bộ điểm của HT). Tuy nhiên, thông lượng của các luồng đó rất nhạy cảm với lượng bộ đệm có sẵn cho luồng. Với số lượng luồng nhiều hơn gấp đôi so với số lượng bộ nhớ cache cố định, bộ nhớ cache có sẵn cho mỗi luồng quá thấp và xảy ra sự cố: sẽ có nhiều lỗi nhớ cache hơn, tải nhiều bộ nhớ chính hơn và hiệu năng vượt trội so với chạy với ít luồng hơn và nhiều bộ đệm hơn cho mỗi luồng (đó là những gì bạn nhận được nếu bạn chạy ứng dụng trên máy bị tắt HT).

Cách khắc phục cuối cùng là để ứng dụng kiểm tra nền tảng CTNH tốt hơn và lấy kích thước bộ đệm và số lượng bộ đệm được xem là cần thiết cho mỗi luồng khi quyết định có bao nhiêu luồng để tạo. Trong mọi trường hợp, sự cố nhanh chóng biến mất với thế hệ CPU tiếp theo, tăng gấp đôi kích thước bộ đệm (và chúng tôi thực sự bắt đầu thấy lợi ích khiêm tốn từ HT sau đó). Tuy nhiên, toàn bộ tập phim đã để lại một di sản dài và lâu dài về việc khuyến nghị HT luôn bị vô hiệu hóa trên bất kỳ nền tảng nào mà SW của chúng tôi chạy, và đầu gối " máy đó không kích hoạt HT có vấn đề gì không? " (Tôi nghĩ rằng vấn đề cơ bản là hầu hết những người không chuyên nghiệp chỉ đơn giản là không hiểu HT thực sự là gì.)


11

Tôi không biết các chi tiết kỹ thuật, nhưng rõ ràng nếu một ứng dụng (hoặc HĐH) không được tối ưu hóa cho siêu phân luồng, siêu phân luồng thực sự có thể làm giảm hiệu suất.

Ngay cả Intel cũng khuyên bạn nên tắt nó trong trường hợp này:

Các hệ điều hành máy tính để bàn sau đây không được khuyến nghị sử dụng với Công nghệ siêu phân luồng. Nếu bạn đang sử dụng một trong các hệ điều hành máy tính để bàn sau đây, bạn nên tắt Công nghệ siêu phân luồng trong chương trình Thiết lập BIOS hệ thống: [...]

(Nguồn: http://www.intel.com/support/ Processors / sb / CS-017343.htm )

Vì vậy, có thể nhà sản xuất (hoặc nhà cung cấp) muốn cẩn thận.


Nó cũng được biết là làm cho một số trò chơi chạy chậm hơn so với khi siêu phân luồng bị vô hiệu hóa.
Klaim

4
Sẽ rất thú vị nếu họ quan tâm đến hiệu suất của các trò chơi được chơi tại nơi làm việc.
Dietbuddha

Trên hệ thống đa lõi, hai luồng có thể được phân bổ cho hai siêu phân luồng trên cùng một lõi, khiến tất cả các lõi khác không hoạt động và cho hiệu năng thấp hơn nhiều so với việc đặt từng luồng trên một lõi khác nhau. Cho đến khi các hệ điều hành nhận thức được sự khác biệt giữa một lõi khác và các siêu phân luồng khác trên cùng một lõi ...
Steve314

1
@ Steve314: Đó chắc chắn là trường hợp xảy ra với Windows2000 (và vô hiệu hóa HT chắc chắn là một ý tưởng tốt nếu bạn đang chạy nó) nhưng Windows XP được cho là nhận thức về HT (xem ví dụ download.microsoft.com/doad/5/7/ 7 / Bắn ) và không rơi vào bẫy như vậy. Tôi giả sử logic tương tự đã được tích hợp vào Linux từ một số phiên bản kernel.
timday

6

Nhiều khả năng, OEM chỉ là bảo thủ. Các OEM thường xuất xưởng với các bộ điều khiển tiên tiến bị vô hiệu hóa (như HT, bit No-Execute, vt, v.v.) đã tắt. Lý do là một số trường hợp hiếm hoi có thể khiến các cài đặt đó thất bại và những người thực sự muốn các tính năng có thể dễ dàng bật chúng lên.

Ngoài ra, một số lỗi hiếm gặp trong HĐH đã dẫn đến các sự cố bảo mật tiềm ẩn khi một số tính năng được bật. công nghệ ảo hóa, ví dụ, đã từng có một vấn đề như vậy. Vì vậy, nó chỉ là nhà cung cấp bảo thủ.

Hyperthreading thường hữu ích cho máy tính để bàn tương tác, như máy lập trình. Mặc dù, một số người có thể muốn tắt nó đi nếu ứng dụng của bạn sẽ chạy trên máy chủ mà không có HT. Chỉ để giảm sự khác biệt tiềm năng phần cứng.


2
Điều này gần như luôn luôn là trường hợp cho các máy đi kèm với HT bị tắt. Khả năng tương thích tối đa và cứu nhà cung cấp khỏi một loạt các cuộc gọi hỗ trợ kỳ lạ.
Patrick Hughes

5

Siêu phân luồng không thêm lõi mới vào CPU. Bạn vẫn có một đơn vị số học / logic, một đơn vị dấu phẩy động (...) cho mỗi lõi. Vì vậy, nếu bạn có nhiều luồng / quy trình thực hiện những việc rất khác nhau, HTT có thể cải thiện hiệu suất. Nhưng nếu bạn có nhiều luồng thực hiện ít nhiều cùng một thứ (không phổ biến trong các ứng dụng crunching số), hiệu suất thực sự có thể bị ảnh hưởng xấu từ HTT.


2

Có lẽ các vấn đề liên kết bộ đệm trong mã đa luồng ồ ạt? Nếu bạn có bộ nhớ CPU rời rạc, về mặt lý thuyết, hai luồng có cùng một dữ liệu được lưu trong bộ nhớ cache và sửa đổi nó cùng một lúc với các giá trị khác nhau. Nếu bạn có bộ đệm hợp nhất tại một số điểm giữa CPU và bộ nhớ chính (L2 hoặc L3), thì có thể có một số cơ chế sẽ ngăn chặn điều này, nhưng trên các CPU cấp thấp hơn có bộ đệm nhỏ hơn, có thể không.

Cách khác, có thể cho phép siêu phân luồng trên các chip không hỗ trợ, nó sẽ ném mã trong POST, vì vậy nhà cung cấp BIOS chỉ bỏ qua vì họ không biết hệ thống sẽ có loại CPU nào.


Tôi đoán - có một cơ chế để giải quyết vấn đề kết hợp này, nhưng nó có thể có một hình phạt hiệu suất đáng kể. IIRC, một trang bộ nhớ cụ thể không thể được tải tự do vào bất kỳ trang bộ nhớ cache nào - thường có cơ chế địa chỉ-bản đồ này đến một trong những trang này. Có lẽ hai chủ đề có thể chiến đấu trên một vài trang bộ nhớ cache, khiến phần còn lại không được sử dụng? (có thể ngay cả với đa lõi, mặc dù có lẽ ít rủi ro hơn).
Steve314

0

Một lý do để không tắt siêu phân luồng trên máy của nhà phát triển là nó có thể ẩn một số lỗi đa luồng tinh tế. Nhưng điều này chỉ thực sự áp dụng trên một máy xử lý đơn lõi. Đa lõi sẽ phơi bày, nếu có bất cứ điều gì, nhiều lỗi đa luồng hơn trong quá trình thử nghiệm.

OTOH, tôi nghi ngờ bạn sẽ thấy một bộ xử lý lõi đơn với tính năng siêu phân luồng bị tắt theo mặc định. Phiếu bầu của tôi là về câu trả lời của Sleskes.


0

Rất nhiều phần mềm đã được viết trên các máy đơn lõi và có thể đã có lỗi trong đó khi chạy trên máy đa lõi. Có lẽ hướng dẫn thực sự có nghĩa là nói "Điều này không hoạt động trong các máy đa lõi", chỉ là trong thời gian dài siêu phân luồng là máy đa lõi có khả năng duy nhất bạn thấy trong sử dụng phổ biến.

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.