Làm sao Windows Sử dụng Bộ xử lý đa lõi?

CPU CPU wafer

Một độc giả gần đây đã liên lạc với chúng tôi và hỏi một câu hỏi cần được trả lời trong một bài viết.

Làm sao Windows (và có thể tất cả các hệ điều hành) tận dụng kernel? Ngoài ra, nếu chức năng này được tích hợp vào phần cứng, làm thế nào kernel có thể biết ứng dụng nào, khi nào và như thế nào? Tôi nghĩ nhiều thứ tốt hơn, nhưng nó hoạt động như thế nào? Và một /Windows sử dụng kernel tốt hơn?

Khi bạn bật máy tính, trước khi cài đặt hệ điều hành, hãy lắc CPU và bo mạch chủ của bạn để tránh một thuật ngữ tốt hơn. CPU của bạn cung cấp cho bo mạch chủ UEFI thông tin cụ thể về các tính năng hoạt động của nó và sử dụng thông tin đó để khởi động bo mạch chủ và hệ thống khởi động.

Trong khoa học máy tính, một luồng được định nghĩa là đơn vị thực thi nhỏ nhất được chạy bởi bộ định thời hệ điều hành. Nếu bạn muốn tạo một sự tương tự, bạn có thể so sánh các mảng với một bước trong dây chuyền lắp ráp. Một bước trên chủ đề, có quá trình. Một tiến trình là một chương trình máy tính chạy trên một hoặc nhiều luồng. Trong sự tương tự nhà máy này, quy trình là toàn bộ quá trình sản xuất sản phẩm, và sợi là kinh doanh.

Vấn đề: CPU chỉ có thể chạy một luồng tại một thời điểm. Mỗi quá trình cần ít nhất một luồng. Làm thế nào để chúng tôi cải thiện hiệu suất máy tính?

Giải pháp: xung nhịp CPU nhanh hơn.

Trong nhiều năm, Dennard Scaling luôn là một món quà. Định luật Moore tuyên bố rằng chúng ta có thể đặt các bóng bán dẫn ở các khu vực nhỏ hơn, nhỏ hơn, nhưng Dennard Scaling là thứ cho phép chúng đạt tốc độ xung nhịp cao hơn và tốc độ cao hơn ở điện áp thấp hơn.

Nếu máy tính chạy đủ nhanh, đó là một vấn đề mà nhiều hơn một luồng không thể được xử lý cùng một lúc. Mặc dù có một số vấn đề không thể tính được ít hơn tuổi thọ dự kiến ​​của một máy tính thông thường, rất, rất, rất vấn đề có thể được điều trị theo cách này.

Khi máy tính trở nên nhanh hơn, các nhà phát triển tạo ra phần mềm phức tạp hơn. Hình thức đơn giản nhất của đa luồng là phương pháp đa luồng thô trong đó hệ điều hành chuyển sang một luồng khác thay vì chờ kết quả tính toán. Điều này đặc biệt chậm trong những năm 1980 khi đồng hồ CPU và RAM bắt đầu tách ra, tốc độ bộ nhớ và băng thông chậm lại đáng kể so với tốc độ xung nhịp của CPU. Chế độ xem bộ đệm có nghĩa là CPU có thể giữ một bộ hướng dẫn nhỏ để hủy ngay lập tức, trong khi nhiều lần đọc đảm bảo rằng CPU luôn được kết nối.

Điều quan trọng: Mọi thứ chúng tôi đã đề cập cho đến nay đều áp dụng cho một CPU lõi đơn. Ngày nay, các thuật ngữ đa luồng và đa xử lý thường được sử dụng có nghĩa tương tự, nhưng điều này không phải lúc nào cũng xảy ra. Đa xử lý đối xứng và Đa xử lý đối xứng là hai điều khác nhau. Chỉ cần đặt:

SMT = CPU có thể chạy nhiều luồng đồng thời, lên lịch cho luồng thứ hai có thể sử dụng các đơn vị thực thi không được sử dụng bởi luồng đầu tiên. Intel gọi đây là Công nghệ siêu phân luồng và AMD chỉ có SMT. Hiện tại, AMD và Intel đang sử dụng SMT để cải thiện hiệu suất CPU. Cả hai công ty trong lịch sử đã sử dụng nó một cách chiến lược, trong khi cung cấp nó trong một số sản phẩm, không phải trong các sản phẩm khác. Ngày nay, hầu hết các CPU của cả hai công ty đều cung cấp SMT. Trong hệ thống của người dùng, ví dụ, lõi CPU * 2 điều đó có nghĩa là bạn có hỗ trợ cho các chủ đề hoặc 8C / 16T.

Trung học phổ thông = Nhiều phép toán đối xứng. CPU chứa nhiều lõi CPU (hoặc sử dụng bo mạch chủ đa ổ cắm). Mỗi lõi CPU chỉ chạy một luồng. Số lượng luồng bạn có thể thực hiện mỗi giờ bị giới hạn bởi số lượng lõi bạn có. Nó được viết là 6C / 6T.

Siêu luồng

Hyper-Threading thường tích cực cho chip Intel.

Nhiều luồng trong ngữ cảnh của một lõi đơn, “CPU của bạn có thể chạy nhiều luồng cùng một lúc không?” Thay vì “CPU của bạn có thể di chuyển nhanh như thế nào giữa các luồng?”

“Hệ điều hành của bạn có thể chạy nhiều ứng dụng cùng lúc mà không gặp sự cố không?” nó cũng là một tình huống thường xuyên được yêu cầu

Tải và tối ưu hóa hệ điều hành

Các CPU hiện đại, bao gồm cả chip x86 được xây dựng cách đây 20 năm, thực hiện những gì được gọi là Thực thi tham nhũng hoặc OoOE. Tất cả các lõi CPU hiệu năng cao hiện đại, bao gồm cả điện thoại thông minh “điện thoại thông minh” lớn. Một chút, thiết kế OoOE. Các CPU này sắp xếp lại các hướng dẫn của chúng trong thời gian thực để có hiệu suất tốt nhất.

CPU thực hiện mã mà hệ điều hành gửi cho nó, nhưng hệ điều hành không liên quan gì đến việc thực thi dòng lệnh. Điều này được thực hiện bởi CPU. Các CPU x86 hiện đại đã sắp xếp lại các hướng dẫn của chúng và biến các lệnh x86 của chúng thành các vi lệnh nhỏ hơn như RISC. Khám phá của OoOE giúp các kỹ sư đảm bảo một mức hiệu suất nhất định mà không cần dựa vào các nhà phát triển để viết mã hoàn hảo. Cho phép CPU thiết lập lại các hướng dẫn của nó giúp hiệu năng đa luồng ngay cả trong bối cảnh đơn lõi. Hãy nhớ rằng, CPU luôn chuyển đổi giữa các tác vụ, mặc dù chúng tôi không nhận thấy điều đó.

Tuy nhiên, CPU không tự lên lịch trình. Nó hoàn toàn phụ thuộc vào hệ điều hành. Sự xuất hiện của CPU đa luồng không làm thay đổi nó. Khi thẻ bộ xử lý người dùng kép đầu tiên (ABIT BP6) xuất hiện, quạt đa lõi Windows NT hoặc Windows 2000. Gia đình Win9X không hỗ trợ kết xuất nhiều màu.

Hỗ trợ thực thi trong nhiều lõi CPU đòi hỏi hệ điều hành phải thực hiện tất cả việc quản lý bộ nhớ và phân bổ tài nguyên mà nó sử dụng để ngăn các ứng dụng khác nhau phá vỡ hệ điều hành và các bộ điều khiển bổ sung có sẵn để ngăn CPU trượt vào nhau.

Các bộ xử lý đa lõi hiện đại không có “đơn vị hẹn giờ chính” để gán các công việc cho từng lõi hoặc phân phối khối lượng công việc. Đây là vai trò của hệ điều hành.

Bạn có thể cấu hình thủ công Windows Làm thế nào để sử dụng nó tốt hơn

Theo nguyên tắc chung, không. Có một số trường hợp đặc biệt Windows nó cần được cập nhật để tận dụng các tính năng của CPU mới, nhưng đây luôn là điều Microsoft nên làm.

Có nhiều trường hợp ngoại lệ cho chính sách này, nhưng có một vài ngoại lệ:

Các CPU mới đôi khi yêu cầu cập nhật hệ điều hành để tận dụng tối đa các tính năng phần cứng của hệ điều hành. Trong trường hợp này, nếu bạn không có ý định cài đặt bản cập nhật thủ công, thực tế không có tùy chọn thủ công.

AMD 2990WX là một ngoại lệ đối với chính sách này. CPU hiệu suất thấp Windows bởi vì Microsoft không xem xét việc có CPU có nhiều nút NUMA và không sử dụng tài nguyên 2990WX đúng cách. Trong một số trường hợp, có nhiều cách để cải thiện hiệu suất 2990WX thông qua phân phối thủ công, nhưng tôi khuyên bạn nên chuyển sang Linux cho vấn đề chung, nếu có.

Thậm chí 3990X hơn trái lý thuyết. bởi vì Windows Khi bạn giới hạn 10 nhóm bộ xử lý ở 64 luồng, bạn không thể phân bổ hơn 50 phần trăm tài nguyên ứng dụng 3990X cho một khối lượng công việc trừ khi ứng dụng áp dụng thời gian tùy chỉnh. Đó là lý do tại sao 3990X không thực sự được khuyến nghị cho hầu hết các ứng dụng – nó hoạt động tốt nhất với trình kết xuất và các ứng dụng chuyên nghiệp khác thực hiện bước này.

Ngoại trừ hệ thống đếm lõi cao nhất, trong đó một số cài đặt thủ công về mặt lý thuyết có thể cải thiện hiệu suất, Microsoft chưa thực sự tối ưu hóa cho trường hợp sử dụng này, không, bạn không thể làm gì để tối ưu hóa nó Windows Phân chia khối lượng công việc. Thành thật mà nói, bạn thực sự không muốn ở đó. Người dùng cuối không phải lo lắng về việc điều chỉnh thủ công các luồng để có hiệu suất tốt nhất, vì cấu hình tối ưu sẽ thay đổi tùy theo tác vụ được CPU xử lý tại một thời điểm nhất định. Xu hướng dài hạn trong thiết kế CPU và HĐH là hợp tác chặt chẽ hơn giữa CPU và hệ điều hành để tạo điều kiện quản lý năng lượng và chế độ turbo.

Lưu ý của biên tập viên: Cảm ơn Bruce Borkosky về các đề xuất bài viết.

Đọc ngay: