为什么有些SSE" MOV"指令规定,他们移动的浮点值? [英] Why do some SSE "mov" instructions specify that they move floating-point values?

查看:326
本文介绍了为什么有些SSE" MOV"指令规定,他们移动的浮点值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

许多SSE指令MOV规定,他们正在浮点值。例如:

Many SSE "mov" instructions specify that they are moving floating-point values. For example:


  • MOVHLPS-移动便携单precision浮点值高至低

  • MOVSD - 移动标量双精度型$ P ​​$ pcision浮点值

  • MOVUPD - 移动未对齐的双精度型盒装precision浮点值

为什么不这些说明简单地说,他们移动32位或64位的值?如果他们只是走动位,为什么说明书指定它们是浮点值?当然,他们会工作你是否间preT那些位浮点数或不?

Why don't these instructions simply say that they move 32-bit or 64-bit values? If they're just moving bits around, why do the instructions specify that they are for floating-point values? Surely they would work whether you interpret those bits as floating-point or not?

推荐答案

我想我已经找到了答案:一些微架构上执行不同的执行单元不是整数指令浮点指令。您获得更好的整体延迟时,指令流保持不变域(整数或浮点数)之内。这是覆盖在瓦格纳雾的优化手动pretty良好的细节,在标题为数据旁路延迟一节:<一href=\"http://www.agner.org/optimize/microarchitecture.pdf\">http://www.agner.org/optimize/microarchitecture.pdf

I think I've found the answer: some microarchitectures execute floating-point instructions on different execution units than integer instructions. You get better overall latency when a stream of instructions stays within the same "domain" (integer or floating point). This is covered in pretty good detail in Agner Fog's optimization manual, in the section titled "Data Bypass Delays": http://www.agner.org/optimize/microarchitecture.pdf

我发现在这相似的,所以问题这样的解释:<一href=\"http://stackoverflow.com/questions/6678073/difference-between-movdqa-and-movaps-x86-instructions\">Difference MOVDQA和MOVAPS x86指令之间?

I found this explanation in this similar SO question: Difference between MOVDQA and MOVAPS x86 instructions?

这篇关于为什么有些SSE&QUOT; MOV&QUOT;指令规定,他们移动的浮点值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆