有用过sse指令集的吗?有个问题请教
时间:2011-12-07
来源:互联网
一个向量乘矩阵的函数,如果参数1跟参数3传不同地址,速度很快,而传同样的地址,速度基本就慢了两倍,请问这是什么原理?
inline void VectorMulMatrixNoAlign(class vgVector4 *vec, vgMatrix *mat, class vgVector4 *result)
{
_asm
{
mov eax, vec
mov ebx, mat
mov ecx, result
movss xmm0, [eax]
shufps xmm0, xmm0, 0
movss xmm1, [eax+4]
shufps xmm1, xmm1, 0
movss xmm2, [eax+8]
shufps xmm2, xmm2, 0
movss xmm3, [eax+12]
shufps xmm3, xmm3, 0
movups xmm4, [ebx]
movups xmm5, [ebx+16]
movups xmm6, [ebx+32]
movups xmm7, [ebx+48]
mulps xmm0, xmm4
mulps xmm1, xmm5
mulps xmm2, xmm6
mulps xmm3, xmm7
addps xmm0, xmm1
addps xmm0, xmm2
addps xmm0, xmm3
movups [ecx], xmm0
}
}
inline void VectorMulMatrixNoAlign(class vgVector4 *vec, vgMatrix *mat, class vgVector4 *result)
{
_asm
{
mov eax, vec
mov ebx, mat
mov ecx, result
movss xmm0, [eax]
shufps xmm0, xmm0, 0
movss xmm1, [eax+4]
shufps xmm1, xmm1, 0
movss xmm2, [eax+8]
shufps xmm2, xmm2, 0
movss xmm3, [eax+12]
shufps xmm3, xmm3, 0
movups xmm4, [ebx]
movups xmm5, [ebx+16]
movups xmm6, [ebx+32]
movups xmm7, [ebx+48]
mulps xmm0, xmm4
mulps xmm1, xmm5
mulps xmm2, xmm6
mulps xmm3, xmm7
addps xmm0, xmm1
addps xmm0, xmm2
addps xmm0, xmm3
movups [ecx], xmm0
}
}
作者: lizelglglg 发布时间: 2011-12-07
应该和cache有关吧。如参数1和参数3相同,则对同一内存地址先读后写,读后写这种内存访问形式可能会降低性能。
作者: liangbch 发布时间: 2011-12-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28