Có một lý do khác để tự IPI.
Nếu bạn khởi tạo trình xử lý SMI, đầu tiên nó nằm ở địa chỉ thấp trong ram. Toàn bộ trạng thái CPU được lưu trong SMI. Tuy nhiên, tất cả các CPU ban đầu sẽ sử dụng cùng một vùng trạng thái và địa chỉ được định vị lại mới được thiết lập bằng thao tác của một biến trạng thái.
Trong trường hợp này, bạn muốn gửi SMI ban đầu cho một CPU tại thời điểm đó. Nếu bạn gửi nó cho tất cả họ sẽ sử dụng cùng một khu vực để lưu trữ nhà nước và đó sẽ là một thảm họa. Nó thuận tiện để sử dụng cùng một thói quen khởi tạo cho việc chuyển đổi trình xử lý SMI cho tất cả các CPU, vì vậy bạn có thể sử dụng IPI tự với kiểu SMI để nhập mã di chuyển SMI.
BSP có thể gửi IPI SMI đến chính nó và sau đó một AP tại thời điểm đó. Sau đó, chúng sẽ được chuyển đến các khu vực không xung đột.
Tôi chắc chắn rằng có nhiều tình huống khác cần có IPI tự. Bất cứ khi nào các CPU chia sẻ một khu vực quan trọng như trong trạng thái SMI ban đầu, IPI tự được thúc đẩy cho tính nhất quán.
Nguồn
2013-03-14 09:25:02
Cả hai lý do đều sai tôi nghĩ. Mỗi bộ xử lý logic (do đó mỗi lõi) có APIC cục bộ riêng của nó. Điều này có nghĩa là chỉ một IPI tự nhận được bởi lõi cụ thể đã gửi nó.Thứ hai, có một viết tắt đích đặc biệt có sẵn để gửi một IPI đến tất cả các APICS địa phương trong một hệ thống bao gồm cả chính nó. – jmiller
Vui lòng đọc lại, vì tôi chỉ đưa ra một lý do để tự IPI (nhất quán) và hai ví dụ minh họa sự nhất quán. –