Những lõi nào tương ứng với từng "CPU" bên dưới?
Giả sử chúng ta có Core 1, 2, 3 và 4, CPU4 và CPU5 đại diện cho lõi 3.
Liệu (nói) CPU 6 và CPU 7 dưới đây đại diện cho một lõi; HT và cốt lõi thực sự?
Không có sự khác biệt giữa hai loại - cả hai đều có giao diện phần cứng vật lý với CPU, giao diện logic được triển khai trong phần cứng (xem Bảng dữ liệu bộ xử lý Intel Core, Tập 1 để biết thêm chi tiết). Về cơ bản, mỗi lõi có hai đơn vị thực thi riêng biệt, nhưng nó chia sẻ một số tài nguyên chung giữa chúng. Đây là lý do tại sao trong một số trường hợp, siêu phân luồng thực sự có thể làm giảm hiệu suất.
Ví dụ, nếu CPU 6 đại diện cho lõi thực và CPU 7 là lõi HT, liệu một luồng được gán chỉ cho CPU7 chỉ nhận được các tài nguyên còn lại của lõi thực? (giả sử lõi đang chạy các tác vụ khác)
Xem ở trên. Một luồng được gán cho CHỈ CPU6 hoặc CHỈ CPU7 sẽ thực thi ở cùng một tốc độ (giả sử luồng xử lý hoạt động tương tự và các lõi khác trong bộ xử lý ở trạng thái nghỉ). Windows biết về các bộ xử lý hỗ trợ HT và bộ lập lịch xử lý sẽ tính đến những điều này.
Là siêu phân luồng được quản lý hoàn toàn trong bộ xử lý sao cho các luồng được xử lý nội bộ? Nếu vậy, đó là ở phạm vi CPU hoặc phạm vi cốt lõi? Ví dụ: Nếu CPU 6 và 7 đại diện cho một lõi, thì quá trình đó có được gán cho không vì vấn đề gì vì CPU sẽ gán tài nguyên phù hợp với luồng đang chạy?
Cả hai. Bản thân phần cứng thực tế không lên lịch các lõi để chạy chương trình, đó là công việc của hệ điều hành. Tuy nhiên, bản thân CPU chịu trách nhiệm chia sẻ tài nguyên giữa các đơn vị thực thi thực tế và Intel chỉ ra cách bạn có thể viết mã để làm cho việc này hiệu quả nhất có thể.
Tôi nhận thấy rằng các quy trình đơn luồng chạy dài được nảy xung quanh lõi khá ít, ít nhất là theo trình quản lý tác vụ. Điều này có nghĩa là việc chỉ định một quy trình cho một lõi sẽ cải thiện hiệu suất một chút (bằng cách tránh các chuyển đổi ngữ cảnh và vô hiệu hóa bộ đệm, v.v.)? Nếu vậy, tôi có thể biết tôi không gán cho "chỉ là một lõi ảo" không?
Đó là hành vi bình thường và không, việc gán nó cho một lõi sẽ không cải thiện hiệu suất. Điều đó đang được nói, nếu vì một lý do nào đó bạn muốn đảm bảo một quy trình duy nhất chỉ được thực hiện trên một lõi vật lý duy nhất, hãy gán nó cho bất kỳ bộ xử lý logic đơn lẻ nào.
Lý do quá trình "nảy xung quanh" là do bộ lập lịch quy trình. Đây là hành vi bình thường và rất có thể bạn sẽ bị giảm hiệu năng bằng cách giới hạn các lõi mà quy trình có thể thực thi (bất kể có bao nhiêu luồng), vì trình lập lịch xử lý giờ phải làm việc chăm chỉ hơn để làm mọi thứ hoạt động với các hạn chế áp đặt của bạn. Có, hình phạt này có thể không đáng kể trong hầu hết các trường hợp, nhưng điểm mấu chốt là trừ khi bạn có lý do để làm điều này, đừng !