自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 如何通过VS在C++项目中使用汇编

现在的编译器在多数情况下会直接帮助大家完成这个流程,并根据需要保留或不保留生成的相关文件。然而在部分情况下需要直接使用汇编以提高性能,或者是单纯的想要学习一下汇编语言,而通过沙箱的方式编写DOS汇编又似乎过于麻烦。

2024-06-06 12:44:41 212

原创 性能调优:访存优化

总体来讲,访存优化包括寄存器优化、缓存优化、数据预取、内存优化和数据布局五种优化方法。

2024-06-02 22:43:40 693

原创 单核优化:数据级并行

而函数级向量化是将几个相邻的计算实例合并为一个向量实例,是一种单程序多数据的程序,即函数的参数为向量,返回值也为向量。循环展开不仅可以提高程序的指令级并行还可以提高寄存器重用,在循环被向量化后继续对循环进行展开,相当于在发掘完程序数据级并行的基础上,进一步发掘程序的指令级并行,同时提升向量寄存器的重用。面向基本块的向量化又叫直线型向量化,其要求基本块内有足够的并行性,否则会因为有大量的向量和标量之间的转换而影响向量化效果,基本块级向量化方法与循环级向量化方法不同,

2024-05-18 20:19:21 1003

原创 单核优化:指令集并行

程序的执行由一系列指令操作组成,为了节省程序的执行时间,发射单元可以一次发射多条指令,这就是指令的多发射并行。多发射处理器支持指令级并行,每个周期可以发射多条指令,一般为2-4条,这样可以使处理器每个时钟周期的指令数倍增,从而提高处理器的执行速度。超长指令字的并行指令执行由编译器来完成,因此编译器的优化能力直接影响到程序在超长指令字处理器上的性能。如下面的汇编代码所示。指令2、指令3、指令4前面的“‖”,表示这条指令和上条指令在同一个周期执行,如果没有“‖”,则表示这条指令在下一个周期执行。

2024-05-18 19:57:57 1174

原创 性能调优:循环优化

循环分段是将单层循环变换为两层嵌套循环,内层循环遍历的是迭代次数为strip的连续区域(或叫条带循环),外层循环的步进单位为strip,这个strip就是分段因子,分段因子需要根据硬件情况选取。循环分裂是将循环的迭代次数拆成两段或者多段,拆分后的循环不存在主体循环之说,也就是拆分成迭代次数都比较多的两个或者多个循环。循环倾斜是一种改变迭代空间形式的变换,用于挖掘循环中的并行潜能的优化方式,可以把存在的并行性用传统的并行循环的形式表示出来。重排序某个依赖端点的循环交换是不合法的,即不要引起依赖关系的反转。

2024-05-13 20:23:57 1116 1

原创 单指令多数据(SIMD)与Intrinsic函数

单指令多数据,通过一条指令对多个数据进行处理。一般是在指令级并行的基础上,发掘出数据级并行,从而提高处理速度。使用SIMD技术提高处理速度的前提,是拥有一块支持SIMD指令集的CPU,这对于现在的处理器来说并不是很稀有的东西,只是支持同时处理的数据的最大位数不同罢了。

2024-05-13 15:28:58 781 1

原创 平方根(倒数)快速算法

平方根常出现在游戏的图形计算中,尤其是求一个向量的基向量时,还会以倒数的形式出现,所以如何快速求解平方根一度成为了游戏引擎优化中的一个难题。本文会先介绍原理,最后放出实现的代码,包括手动实现和使用内联汇编一步到位。

2024-05-12 11:23:43 694 1

原创 指令集与现代x86汇编

CPU的Code Name、支持的指令集可以在CPU-Z中查看指令集划分很复杂,看到好几个版本了,所有内容以和实际情况为准。

2024-05-12 10:46:42 961

原创 2万字汇编语言学习笔记

过程用PROC和ENDP伪指令来声明。main proc;codemain endp当要创建的过程不是程序的齐国过程时,用RET指令来结束它。RET强制CPU返回到该过程被调用的地方。;coderet默认情况下,代码标号只在其被声明的过程内可见,除非使用全局标号,即在名字后面加双冒号name ENDS为了获得最好的I/O性能,结构成员应按其数据类型进行地址对齐,否则CPU就会花费更多时间来访问这些成员。成员类型对齐方式成员类型对齐方式对齐到8位边界REAL4对齐到32位边界。

2024-05-11 23:50:55 684

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除