Có nội tại khác nhau vì chúng tương ứng với các hướng dẫn khác nhau. Có các hướng dẫn tải khác nhau vì Intel muốn duy trì sự tự do thiết kế bộ xử lý mà các vectơ chính xác kép được hỗ trợ bởi một tệp đăng ký vật lý khác với các vectơ đơn hoặc vectơ nguyên hoặc sử dụng các đơn vị thực thi khác nhau. Bất kỳ điều nào trong số này có thể thêm độ trễ bổ sung nếu không có cách nào để chỉ định dữ liệu đó sẽ được tải vào tệp đăng ký thích hợp hoặc mạng chuyển tiếp.
Một cách để suy nghĩ về nó là các hướng dẫn khác nhau thực hiện "cùng một điều", nhưng cung cấp thêm gợi ý cho bộ xử lý cho biết cách dữ liệu đang được tải sẽ được hướng dẫn trong tương lai sử dụng. Điều này có thể giúp bộ vi xử lý đảm bảo rằng dữ liệu ở đúng nơi sẽ được sử dụng hiệu quả nhất có thể, hoặc nó có thể bị bộ xử lý bỏ qua.
Lưu ý rằng đây không chỉ là giả thuyết. Có tồn tại các bộ vi xử lý sử dụng tải vectơ nguyên (MOVDQA) để tải dữ liệu được tiêu thụ bởi thao tác dấu phẩy động đòi hỏi nhiều thời gian hơn việc sử dụng tải trọng dấu phẩy để lấy dữ liệu cho phép toán dấu phẩy động (và ngược lại) . Xem Sổ tay Tối ưu hóa Intel hoặc ghi chú của Agner Fog để biết thêm chi tiết về chủ đề này. Sử dụng tải phù hợp với cách bạn sẽ sử dụng dữ liệu để tránh nguy cơ các mối nguy hiểm hiệu suất như vậy trong tương lai.
Nguồn
2012-01-13 19:33:43
Kiểu trả về cho '_mm_load_pd' là' __m128d', không phải '__m128' –
@PaulR: Điều đó .... làm cho mọi ý nghĩa trên thế giới. Tôi hoàn toàn không nhận ra điều đó. Cảm ơn đã chỉ ra điều đó. :) – Mehrdad