SSE体系结构与编程.ppt

上传人:sh****n 文档编号:6416871 上传时间:2020-02-25 格式:PPT 页数:26 大小:425.50KB
返回 下载 相关 举报
SSE体系结构与编程.ppt_第1页
第1页 / 共26页
SSE体系结构与编程.ppt_第2页
第2页 / 共26页
SSE体系结构与编程.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
SSE编程 华南理工大学陈虎博士tommychen74 什么是SIMD SIMD SingleInstructionMultipleData 单指令流多数据流 用一个控制器对一组数据 又称 数据向量 中的每一个分别执行相同的操作来实现空间上的并行性典型实例 Intel的MMX或SSEAMD的3DNow Intel的SSE技术 SSE指令集出现在PentiumIII处理器中包括了70条指令 其中50条SIMD浮点运算指令 12条MMX整数运算增强指令 8条内存连续数据块传输指令 SSE2指令集 使用了144个新增指令从64位扩展到了128位提供双精度操作支持 Intel的SSE技术 SSE3指令集增加13条指令超线程性能增强指令可以提升处理器的超线程处理能力SSE4指令集共包括16条指令AVX AdvancedVectorExtensions 预计2010年发布数据宽度从128位扩展为256位操作数从两个增加到三个 SSE2的寄存器结构 IA32BasicArchitecture 图10 1 SSE1 2的数据类型 数据总宽度为128位 可以表示成 四个单精度浮点数两个双精度浮点数16个字节整数8个16位整数4个32位整数2个64位整数 SSE指令 SSE指令按功能可以分成四组 封装和标量单精度浮点指令64位的SIMD整数指令状态管理指令缓存控制 预取和内存命令指令 浮点指令 数据移动指令 标量 成组 寄存器到存储器存储器到寄存器寄存器之间算术运算指令 标量 成组 加 减 乘 除 平方根 最大 最小比较指令 标量 成组 混洗指令转换指令逻辑操作指令 整数指令 算术指令最大 最小 平均值数据移动指令混洗指令MXCSR管理指令Cache和存储器控制指令 使用SSE指令的四种方法 编译器的自动矢量化使用C 类库使用编译器的内嵌原语 Intrinsics 嵌入汇编语言 四种方式的比较 VC8 0的内嵌原语 intrinsics 什么内嵌原语 一条或一组汇编指令内嵌原语格式 mm 指令类别 add sub 指令操作数的类型 内嵌原语的数据类型 p 紧密 指令对寄存器中的每个元素进行运算ep 扩充紧密s 标量 只将寄存器中的第一个元素参与运算 其他说明数据类型的关键字有 s 单精度浮点数d 双精度浮点数i128 带符号128位整型i64 带符号64位整型u64 无符号64位整型i32 带符号32位整型u32 无符号32位整型i8 带符号8位整型u8 无符号8位整型 内嵌原语的类别 矩阵变换读写控制寄存器混洗Cache控制数据整型操作存储操作 置位运算读取运算转换运算比较操作逻辑运算算术运算 矩阵变换例 MM TRANSPOSE4 PS row0 row1 row2 row3 作用 转置一个4 4的单精度或双精度元素矩阵 混洗操作例 MM SHUFFLE z y x w z 6 y 4 x 2 w说明 从第一个操作数中选取两个数 从第二个操作数中选取两个数 形成一个结果字 支持Cache控制 mm prefetch 预取稍后运行需要的数据 mm stream pi 把指定位置的数据存储到指定的地址 而不替换cache整型原语 mm extract pi16 从4个字中提取一个字 mm insert pi16 插入一个字 mm max pi16 计算出最大值 mm min pi16 计算最小值读写控制寄存器 MM SET EXCEPTION STATE 设置异常状态寄存器 MM GET EXCEPTION STATE 读取异常状态寄存器可以操作寄存器还包括 EXCEPTION MASK 异常屏蔽寄存器 ROUNDING MODE 舍入模式寄存器 FLUSH ZERO MODE 清0模式寄存器 存储操作 mm store ss 存储低位值 mm store ps 存储4个值 位址对齐 mm storer ps 存储4个值 顺序相反读取运算 mm load ss 读取低值 同时清空其他3个高值 mm loadr ps 以相反的顺序读入4个值设置运算 mm set ss 设置低位为1 同时清空其余三个高位值 mm set1 ps 设置所有4个值为同一值 mm setzero ps 把所有4个值清零 转换运算 mm cvtss si32 转换单精度浮点数为32位整数 mm cvttss si32 转换单精度浮点数为32位整数 带截断操作 mm cvtpi16 ps 转换16位有符号整数为单精度浮点数比较原语 mm cmpeq ss 是否相等 mm cmplt ps 是否小于 mm cmpgt ps 是否大于逻辑运算 mm and ps 与运算 mm or ps 或运算算术运算 mm add ss 加法 mm sub ps 减法 mm mul ps 乘法 SSE程序实例 双精度三维变换原理 SSE程序实例 两种不同的数据结构数组 结构 thearray of structuresformat AoS 结构 数组 thestructures of arraysdataformat SoA 数组 结构 AoS 结构 数组 SoA SSE程序实例 for inti 0 idm00 取出y i 和y i 1 ty mm load pd vertex y i mx1 mm mul pd ty WM dm01 取出z i 和z i 1 tz mm load pd vertex z i mx2 mm mul pd tz WM dm02 x i x i m00 y i m01 z i m02 m03 x i 1 x i 1 m00 y i 1 m01 z i 1 m02 m03mx0 mm add pd mx0 mm add pd mx1 mm add pd mx2 WM dm03 写入结果x i x i 1 mm store pd vertex x i mx0 计算y i 和y i 1 mx0 mm mul pd tx WM dm10 tx ty tz已经事先读入mx1 mm mul pd ty WM dm11 mx2 mm mul pd tz WM dm12 mx0 mm add pd mx0 mm add pd mx1 mm add pd mx2 WM dm13 mm store pd vertex y i mx0 计算z i 和z i 1 mx0 mm mul pd tx WM dm20 mx1 mm mul pd ty WM dm21 mx2 mm mul pd tz WM dm22 mx0 mm add pd mx0 mm add pd mx1 mm add pd mx2 WM dm23 mm store pd vertex z i mx0 计算z i 和z i 1 mx0 mm mul pd tx WM dm30 mx1 mm mul pd ty WM dm31 mx2 mm mul pd tz WM dm32 mx0 mm add pd mx0 mm add pd mx1 mm add pd mx2 WM dm33 mm store pd vertex w i mx0 SSE程序实例 技巧 一次完成两个矩阵变换SoA的数据结构有利于减少数据读出次数AoS数据结构需要读入两次结果 P41 2GHZ平台上 C语言 AoS结构29 9秒C语言 SoA结构32 4秒内嵌原语 AoS结构19 4秒内嵌原语 SoA结构16 1秒结论 性能几乎提高两倍
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!