Điều này không chỉ dành riêng cho SSE (hoặc thậm chí x86). Trên hầu hết các kiến trúc tải và lưu trữ cần phải được liên kết tự nhiên nếu không, (a) tạo ra một ngoại lệ hoặc (b) cần hai hoặc nhiều chu kỳ cộng với một số sửa chữa để xử lý tải/lưu trữ không đúng cách. Trên x86 (b) là đúng đối với kiểu dữ liệu < 16 byte nhưng (a) là đúng đối với các kiểu dữ liệu SSE trừ khi bạn sử dụng rõ ràng các phiên bản không chính xác của hướng dẫn tải/lưu trữ có thể xử lý dữ liệu lệch.
Bạn có thể thắc mắc: tại sao không chỉ sử dụng các phiên bản không chính xác của các hướng dẫn tải/lưu trữ SSE này bất kể căn chỉnh? Câu trả lời là các lệnh này thường chậm hơn nhiều so với các đối tác liên kết của chúng vì chúng thường hoạt động theo (b) ở trên, làm cho chúng chậm hơn gấp 2 lần hoặc chậm hơn, ngoài các CPU Intel gần đây như Core i7, nơi hình phạt nhỏ hơn nhiều , nhưng không đáng kể.
Nguồn
2013-02-12 00:32:25
Và hãy nhớ rằng ngay cả trên các lõi hiện đại, nơi truy cập không đúng cách thường nhanh, truy cập qua trang vẫn còn khá chậm. Nếu bộ đệm của bạn đủ lớn và không được căn lề, nó sẽ chứa các giao diện trang. –
Đúng và vượt qua ranh giới dòng bộ nhớ cache do tải không đúng có thể dẫn đến dấu chân bộ nhớ cache lớn hơn cũng có thể có tác động tiêu cực đến hiệu suất. –
Trang cắt ngang thậm chí còn tồi tệ hơn ... – Mysticial