2011-07-13 39 views
22

Tôi đang tìm Intel số kỹ thuật: Intel® 64 và IA-32 Kiến trúc phát triển phần mềm của tay và tôi không thể tìm thấy sự khác biệt giữaSự khác biệt giữa hướng dẫn MOVDQA và MOVAPS x86?

  • MOVDQA: Di chuyển Aligned đúp Quadword
  • MOVAPS: Di chuyển Aligned Đóng gói Đơn chính xác

Trong biểu dữ liệu của Intel Tôi có thể tìm cả hai hướng dẫn:

hướng dẫn này có thể được sử dụng để tải đăng ký XMM từ 128-bit vị trí bộ nhớ , để lưu trữ các nội dung công tác đăng ký XMM vào một vị trí bộ nhớ 128-bit, hoặc để di chuyển dữ liệu giữa hai thanh ghi XMM .

Sự khác biệt duy nhất là:

Để di chuyển một quadword đôi đến hoặc từ vị trí bộ nhớ unaligned, sử dụng hướng dẫn MOVDQU.

Để di chuyển các giá trị dấu chấm động đóng gói đơn chính xác đến hoặc từ vị trí bộ nhớ unaligned, sử dụng các hướng dẫn MOVUPS.

Nhưng tôi không thể tìm thấy lý do tại sao hai hướng dẫn khác nhau?

Vậy ai cũng có thể giải thích sự khác biệt?

+0

Ngoài ra MOVAPD giống với chúng. – Calmarius

Trả lời

38

Trong chức năng, chúng giống nhau.

Trên một số (nhưng không phải tất cả) kiến ​​trúc vi mô, có sự khác biệt về thời gian do "phạt qua miền". Vì lý do này, người ta thường sử dụng movdqa khi dữ liệu đang được sử dụng với các chỉ lệnh SSE nguyên và movaps khi dữ liệu đang được sử dụng với các chỉ lệnh dấu phẩy động. Để biết thêm thông tin về chủ đề này, hãy tham khảo Hướng dẫn Tối ưu hóa Intel hoặc hướng dẫn vi kiến ​​trúc tuyệt vời của Agner Fog. Lưu ý rằng những sự chậm trễ này thường được kết hợp với các thanh ghi đăng ký thay vì tải hoặc lưu trữ.

+1

Bạn có thể liên kết đến các mục nhập thủ công cụ thể không? Tôi đang có một thời gian khó tin rằng điều này bởi vì SSE đăng ký không có một loại liên kết với họ (loại được mã hóa trong các hướng dẫn) cho tôi không nghĩ rằng có khác nhau float & số nguyên đường dẫn. Họ làm, tuy nhiên, có op-mã khác nhau và được giới thiệu trong bộ hướng dẫn khác nhau. MOVAPS là SSE1 trong khi MOVDQA là SSE2. Cả hai đều có cùng độ trễ và thông lượng theo http://www.intel.com/Assets/PDF/manual/248966.pdf –

+2

Câu trả lời của bạn chính xác hơn là câu trả lời của tôi. Tôi đã gỡ bỏ nó. –

+16

@Jasper Bekkers: Bạn không thể tin được tất cả những gì bạn thích, nhưng nó vẫn đúng. Đối với một cuộc thảo luận chung về các lĩnh vực và sự chậm trễ bỏ qua giữa chúng, xem Hướng dẫn Tối ưu hóa Intel (2.2.3 thảo luận về các tên miền trên kiến ​​trúc vi mô Nehalem, chẳng hạn).Để xem ví dụ cụ thể về nguy hiểm, xem trang 86 và 87 của tài liệu tham khảo tuyệt vời của Agner Fog http://www.agner.org/optimize/microarchitecture.pdf –

Các vấn đề liên quan