1 / 5
文档名称:

MMXSSESSE2学习笔记.docx

格式:docx   大小:16KB   页数:5页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MMXSSESSE2学习笔记.docx

上传人:花开一叶 2019/5/15 文件大小:16 KB

下载得到文件列表

MMXSSESSE2学习笔记.docx

相关文档

文档介绍

文档介绍:膁MMX整数指令64位薄SSE整数指令64位螂SSE2整数指令128位蒇蚄规则蚂使用当前的编译器可以产生一个优化的应用程序。这将帮助你从一开始能产生好的代码。。芈注意分支预测算法()。这是动态执行(P6-系列)处理器最为重要的优化方法。由于提高了分支预测能力,你的代码将耗费很少的周期来读取指令。螆对代码进行调度,使其达到最大的配对可能。。肄确定所有的数据都已对齐。。薁安排好代码,使其未命中的高速缓存指令最少,并优化预取。。羈不要混用MMX™指令和浮点指令。。螇避免使用除前缀为0F以外的操作码。。膃对同一个内存区域,避免在大数据量存贮数据后进行小数据量读取。或小数据量存贮后进行大数据量的读取。对于同一个内存区域,读取和存贮数据应使用同样大小的数据量;并且地址要对齐。。肀在任何时候,都要尽可能地使用OP,REG和MEM格式。这些格式可以帮助你减少占用寄存器,减少循环,避免产生不必要的读取操作。。蚈EMMS必须放在MMX™指令的尾部。。薅优化高速缓存中的数据的带宽,以符合MMX™寄存器的大小。。薅蒀建议葿调整代码,一般情况下不使用向前条件分支,通常使用向后的条件分支。蚆按16字节边界条件对齐频繁执行的分支目标。蚃将循环展开来调度指令。膃使用软件方式来安排流水线以调度迟延和功能单元。腿必须成对使用CALL和RET(return)指令。蚇避免使用自修改代码。螂避免把数据放在代码段。薃尽可能快地计算出存贮地址。羀应避免使用包含三个或三个以上微操作代码或指令长度超过7个字节的指令。如果可能,使用只有一个微操作的指令。蒅不要使用两个8位读取指令来进行16位的读取。膄在调用被调用保存(callee—save)过程前,先清除部分寄存器的内容。羂解决阻塞条件,如存贮地址,尽可能地避免可能引起阻塞的读取。蚀一般情况下,一个可以直接由处理器支持的N-字节的数据(8位的字节,16值的字,32位的双字,32位、64位及80位浮点数)应该对齐在下一个最高的2的乘方边界处,避免未对齐的数据。薆——按任意边界对齐8位数据。芃——在已对齐的4-字节字数据内对齐16位数据。蒁——以4的任意倍数为边界,对齐32位数据。蒀——以8的任意倍数为边界,对齐64位数据。蚈——以128位为边界(即16字节的倍数),对齐80位数据。蚅小寄存器 大寄存器袁ALAHAXEAX膁BLBHBXEBX莅CLCHCXECX螃DLDHDXEDX芀蚇AH/AL分别是AX寄存器的高、低八位,AX是EAX的低16位蒆袂由于乘法指令执行时用三个时钟周期,所以乘法指令后的结果只能被安排在三个时钟周期后的指令使用。考虑这一因素,避免在乘法指令后的两个指令对内调度一条与之相关的指令虿在很多情况下,“MOVQreg,reg”和“OPreg,mem”可被“MOVQreg,mem”和“OPreg,reg”代替。由于它在动态执行处理器上节约一个微操作,因此在可以使用的地方尽量使用。莇薈MOVQ代替32位存贮指令(如MOVD)向内存回存数据,将使每个内存填写周期减少一半的存贮次数。对某些基于奔腾处理器的系统,使用64位存贮指令代替32位存贮指