Tại sao CPU lõi kép của tôi được công nhận là lõi tứ?


52

Bộ xử lý của tôi là Intel Core i3-380m . Như bạn có thể thấy, đó là 2 lõi và 4 luồng.

Mặc dù, cả Ubuntu 11.04 và Windows 7 dường như đều nghĩ rằng đó là CPU lõi tứ:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Tại sao lại thế này? Có phải vì có 2 luồng trên mỗi lõi, chia CPU thành 4 đơn vị xử lý?

Câu trả lời:


43

Như đã đề cập, bạn có một hệ thống lõi kép, với 2 luồng trên mỗi lõi.

Điều này được Intel đưa ra thị trường dưới dạng siêu phân luồng và đã được thực hiện theo nhiều cách khác nhau trong nhiều năm qua bởi các nhà sản xuất khác nhau.

Để giải thích nó ở dạng đơn giản nhất, mỗi lõi CPU bao gồm một "lõi" và kiến ​​trúc khác nhau xung quanh lõi đó giữ trạng thái và xử lý thông tin cho từng luồng. Một lõi luồng đơn có kiến ​​trúc để giữ 1 luồng thông tin trạng thái được lưu giữ tại một thời điểm, lõi siêu phân luồng giữ hai bộ thông tin trạng thái riêng biệt, cho phép hai tiến trình riêng biệt chạy cùng một lúc miễn là chúng yêu cầu các phần khác nhau của lõi ( điều này có khả năng xảy ra một cách hợp lý vì lõi bao gồm nhiều đơn vị của nhiều loại đơn vị xử lý khác nhau).

Để đơn giản hóa cách CPU được nhìn thấy đối với hệ thống, mỗi siêu phân luồng được xem như một CPU riêng biệt, do đó, bộ xử lý lõi kép, 2 luồng xuất hiện dưới dạng bộ xử lý lõi tứ.

Hệ điều hành cũng có thể sử dụng Core-Đỗ xe (một tính năng trong bộ xử lý Intel mới hơn) cho phép hệ điều hành tạm dừng một nửa lõi siêu phân luồng để khi không cần khả năng xử lý siêu phân luồng bổ sung thì hiệu suất xử lý đơn luồng không cần thiết được tăng lên khi lõi không còn chia sẻ bộ đệm của nó qua 2 luồng và giờ đây có thể dành hoàn toàn bộ đệm trên lõi cho một luồng.


Cảm ơn đã giải thích. Vì vậy, chúng ta có thể nói ở đây rằng một luồng là lõi là lõi là gì đối với bộ xử lý không?
Severdev

2
Theo một cách nào đó, vâng. HĐH nhìn thấy bộ xử lý, biết có bao nhiêu lõi trên bộ xử lý đó và lần lượt có bao nhiêu luồng mỗi lõi hỗ trợ, từ đó mức sử dụng CPU mà bạn đang thấy bây giờ là "trên mỗi luồng" thay vì "trên mỗi lõi". Nó không hoàn toàn đơn giản (vì mỗi luồng thực sự xuất hiện với một hệ điều hành nhận thức không siêu phân luồng như một lõi CPU hoàn toàn chính xác) nhưng đó là ý tưởng chung của nó.
Mokubai

Liên kết đậu xe @Mokubai không hoạt động.
Biswapriyo

49

Lý do là siêu phân luồng , mà bộ xử lý của bạn hỗ trợ. Hyperthreading không tương đương với bộ xử lý bổ sung, nhưng thực sự có thể tăng hiệu năng trên các ứng dụng đa luồng. Đối với mỗi lõi bộ xử lý có mặt vật lý, hệ điều hành xử lý hai bộ xử lý ảo và chia sẻ khối lượng công việc giữa chúng khi có thể.


7
Đây có phải là lõi vật lý và logic?
xdumaine

11
Vâng, một cốt lõi vật lý là - tốt ... vật lý. Bạn có thể chạm vào nó. Lõi siêu âm không có thật, do đó hợp lý. Bạn cũng có thể phá vỡ các lõi vật lý thành các lõi logic thông qua ảo hóa.
Keltari

3
@Keltari thực sự, có một phần vật lý của nó ... Hyperthreading là một thành phần phần cứng trong lõi CPU (và chỉ có thể bị vô hiệu hóa ở cấp độ phần cứng). Xem whitepaper Intel này để biết chi tiết. Về cơ bản, nó chia sẻ tài nguyên của một lõi giữa hai đơn vị thực thi vật lý. Về mặt kỹ thuật, cả hai lõi mà HĐH nhìn thấy trong lõi siêu phân luồng đều "hợp lý", không có cả lõi vật lý và logic.
Đột phá

1
đúng, siêu phân luồng là một phần vật lý của bộ xử lý, nhưng không phải là lõi vật lý.
Keltari

1
Cách tốt nhất để nghĩ về HT là một "lõi rưỡi", nó chia sẻ nhiều tài nguyên hơn với anh em của nó so với các lõi riêng biệt. Tuy nhiên, nó có khả năng thực thi một luồng "một mình" và HĐH coi nó như một đơn vị thực thi luồng (mà bạn liên kết với lõi).
crasic

12

Mọi thứ phức tạp hơn nhiều so với thời của một hướng dẫn cpu trên mỗi chu kỳ đồng hồ.

Bây giờ có một đường ống dẫn cho mỗi hướng dẫn bao gồm một số bước. Tôi đã nghe đến 41, mặc dù đó là một thời gian trước đây và tôi không biết đường ống cpu hiện tại trông như thế nào. Tôi biết rằng nếu đường ống đủ dài, bạn có thể bắt đầu một lệnh mới xuống đường ống trước khi lệnh cuối cùng kết thúc, đôi khi trong cùng một chu kỳ đồng hồ, để lõi đơn của bạn thực hiện hai việc một cách hiệu quả.

Có một mẹo ở đây, mặc dù. Bạn không thể chỉ sử dụng điều này để tăng tốc độ mà bộ xử lý của bạn nhai thông qua các hướng dẫn từ một chương trình cụ thể. Có một vấn đề chính xác liên quan: hướng dẫn tiếp theo có thể phụ thuộc vào kết quả chưa được xác định của hướng dẫn trước. Để tận dụng đường ống dài một cách an toàn , chip sẽ đưa ra hai lõi bộ xử lý riêng cho bộ lập lịch hệ điều hành và các hướng dẫn thay thế được gửi đến từng lõi để hai hướng dẫn đến cùng một "lõi" không bao giờ nằm ​​trong đường ống cùng một lúc. Bằng cách này, chúng tôi có thể chắc chắn rằng bất kỳ lệnh nào được thực hiện đồng thời sẽ không can thiệp lẫn nhau. Điều này được gọi là siêu phân luồng .

Điều đáng chú ý ở đây là trong khi siêu phân luồng có thể làm tăng đáng kể số lượng công việc bạn nhận được từ cpu của mình, thì không nơi nào tốt bằng việc có nhiều lõi vật lý như vậy. Tùy thuộc vào khối lượng công việc của bạn, điều đó có thể có nghĩa là cải thiện ít nhất 15% hoặc cải thiện 40%. Trong một số trường hợp, bạn thậm chí có thể muốn tắt tính năng này để các lõi còn lại có toàn quyền truy cập vào bộ đệm L1 / L2 cho lõi đó (điều này đôi khi được thực hiện với các máy chủ cơ sở dữ liệu chuyên dụng).

Khi chip của bạn tự quảng cáo là có 2 lõi với 4 luồng, điều đó có nghĩa đó là bộ xử lý lõi kép hỗ trợ siêu phân luồng.


2

Hãy xem trang intel này - nó có rất nhiều hình ảnh động cho thấy cách siêu phân luồng tăng tốc các nhiệm vụ của bạn.

Đây Utilization of Processor Resourceslà hình ảnh động tốt nhất, nhìn vào nó và họ nhấp vào nút "trước".


1

Tại sao lại thế này? Có phải vì có 2 luồng trên mỗi lõi, chia CPU thành 4 đơn vị xử lý?

Đặt điều này đơn giản, câu trả lời là có. Mỗi lõi của cpu của bạn có thể hỗ trợ hai luồng độc lập, tổng cộng có 4. Nhưng điều đó không có nghĩa là nó có hiệu năng tương tự như một cpu đơn lõi bốn lõi. thực tế hiệu năng của một cpu hai lõi kép thấp hơn so với cpu đơn lõi bốn lõi. Giống như AMD Phenom X4.


Bạn có biết tại sao?
Severdev

1
Lý do là trong lõi hai luồng, tài nguyên phần cứng (như bộ đệm sắp xếp lại) được chia sẻ giữa hai luồng, trong khi trong cpu một luồng, tất cả tài nguyên được dành riêng cho một lõi. Điều đáng nói là việc có lõi luồng mulch làm tăng mức sử dụng và thông lượng phần cứng của bạn, nhưng điều đó không tốt cho độ trễ. Có nhiều sự đánh đổi liên quan. Vì vậy, từ "hiệu suất" thực sự mơ hồ ở đây. Đối với người bình thường, nó có nghĩa là độ trễ của một luồng.
aminfar
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.