内容介绍
本书研究x86多媒体指令集扩展专利技术实现的思路、方法。MMX与之后的SSE、AVX等一系列x86多媒体扩展指令集使得处理器支持的紧缩数据的数据元素类型从整数扩展到单精度、双精度浮点数,宽度从8位扩展到16位、32位、…位、512位。本书第1章分析MMX指令集专利技术。第2~7章研究SSE、SSE2、SSE3、SSSE3、SSE4等专利技术。第8~11章研究AVX、AVX2和AVX-512等专利技术。
目录
目录
前言
第1章 多媒体扩展指令集专利技术 1
1.1 紧缩数据打包和拆开指令 1
1.2 紧缩数据乘加(乘减)指令和运算 11
1.3 紧缩数据移位指令 17
1.4 紧缩数据加或减指令 24
1.5 紧缩数据移动指令 25
1.6 清空MMX寄存器状态指令 28
1.7 带饱和操作类指令 31
1.8 紧缩数据数量统计指令 33
1.9 MMX指令序列应用 35
1.9.1 复数滤波和复数乘累加 35
1.9.2 两紧缩数据对应元素求差的绝对值运算 39
第2章 流式传输SIMD扩展指令集专利技术 41
2.1 SIMD单精度浮点指令 41
2.1.1 高位或低位紧缩单精度浮点数移动指令 41
2.1.2 紧缩浮点混洗指令 43
2.1.3 SSE单精度浮点数交织拆开指令 45
2.1.4 不同寄存器结构的多种整数和浮点数互相转换 45
2.2 SSE …位SIMD整型指令 49
2.2.1 紧缩绝对差值之和指令 49
2.2.2 插入和提取指令 55
2.2.3 紧缩整数最小值和…值指令数据预处理电路优化 58
2.3 缓存能力控制和预取指令 61
2.3.1 字节掩码写四字指令定义和实现 62
2.3.2 使用推测实现字节掩码写操作 66
2.4 SSE指令序列应用:矩阵乘法加速 68
2.4.1 指令序列实现紧缩数据水平加法 69
2.4.2 动态数据重排法实现矩阵乘法 71
第3章 流式传输SIMD扩展2(SSE2)指令集专利技术 77
3.1 紧缩和标量双精度浮点指令 77
3.2 128位紧缩整型指令 77
第4章 流式传输SIMD扩展3(SSE3)指令集专利技术 81
4.1 128位非对齐整型数据加载指令 81
4.2 紧缩数据水平算术指令 83
4.2.1 紧缩数据水平加法指令和基于水平加法的矩阵乘法 87
4.2.2 紧缩数据水平算术指令和8点时间抽取操作指令序列 90
4.3 浮点加载、移动及复制指令 92
4.4 改进的线程同步指令 95
第5章 补充流式传输SIMD扩展3(SSSE3)指令集专利技术 97
5.1 紧缩数据符号乘法指令和求绝对值指令 97
5.2 带舍入和缩放组合高位乘法指令 100
5.3 紧缩字节整型带掩码的混洗指令 102
第6章 流式传输SIMD扩展4(SSE4)指令集专利技术 106
6.1 SSE4.1 106
6.1.1 紧缩浮点数点积 106
6.1.2 逻辑比较并设置零和进位 109
6.1.3 带舍入模式的紧缩和标量浮点值舍入 113
6.2 SSE4.2 117
6.2.1 字符串和文本比较 117
6.2.2 面向应用的加速器指令 121
第7章 其他流式传输SIMD指令或指令序列专利技术 123
7.1 数据交换取反指令增强复数乘法操作 123
7.2 紧缩整数转换为紧缩浮点数的指令序列优化 124
7.3 带存取模式的存储器存取指令 126
7.4 四像素平均值指令逻辑实现和电路改进 129
7.4.1 四像素平均指令FPA实现电路优化 129
7.4.2 四数据平均值指令WAVG4电路优化技术和图像缩小应用 131
7.5 移位和异或指令 134
第8章 高级矢量扩展指令集专利技术 135
8.1 掩码移动指令 135
8.2 高精度的浮点倒数计算指令实现方法 140
8.3 通道内混洗指令 144
8.4 尺寸不同的紧缩浮点和紧缩整型转换指令 146
第9章 高级矢量扩展2(AVX2)指令集专利技术 150
9.1 聚集和分散指令:跨距访存支持 150
9.1.1 聚集和分散指令集 150
9.1.2 聚集和分散扩展:支持原子操作的向量链接聚集和条件分散指令 155
9.2 置换、移位和循环的实现优化 158
第10章 高级矢量扩展512(AVX-512)指令集专利技术 162
10.1 写掩码广播指令 163
10.2 写掩码对齐向量指令 165
10.3 扩展与压缩指令 167
10.4 写掩码混合指令 170
10.5 掩码向量的置换指令 172
10.6 掩码操作类指令 175
10.6.1 紧缩数据掩码移位指令 176
10.6.2 紧缩数据掩码算术组合指令 178
10.6.3 紧缩数据掩码串联指令 179
10.6.4 紧缩数据写掩码比特压缩指令 181
10.6.5 掩码寄存器上的广播操作 182
10.7 无须标记位的操作数基础系统转换的向量乘法 183
10.8 写掩码混洗指令 186
10.9 紧缩数据写掩码循环指令 188
10.10 改进的插入、提取和置换指令 190
10.11 冲突检测和向量紧缩广播指令 195
10.12 双块绝对差求和指令 198
10.13 向量指令的读写掩码 199
10.14 打包存储和加载拆开 202
10.15 混洗和操作组合指令 204
10.16 乘乘加法 206
10.16.1 乘乘加法指令操作 206
10.16.2 乘乘加法指令应用优化 210
10.17 共轭复数计算指令 212
10.18 索引值 213
10.18.1 转换掩码寄存器至向量寄存器中的索引值 213
10.18.2 产生重排指令相关控制索引的改进 214
10.19 写掩码提取指令 217
10.20 指定数据精度的浮点舍入指令 218
10.21 十进制浮点数分解指令 220
10.22 二维聚集指令 221
10.23 使用掩码寄存器的条件跳转指令 224
10.24 掩码向量移动指令和掩码更新指令加速稀疏向量递归运算 226
10.25 用户级线程的即时上下文切换状态交换指令 229
10.26 向量计算和累加指令 231
10.27 向量紧缩绝对差指令 232
10.28 确定值是否在范围内的指令 234
10.29 单个向量紧缩水平加减指令 236
10.30 扩展的向量后缀比较指令 237
10.31 向量压缩和解压缩算法相关指令 238
10.31.1 向量紧缩一元解码指令 238
10.31.2 向量紧缩增量编码和解码指令 240
10.31.3 向量行程长度解码指令和逻辑实现 243
10.32 向量紧缩压缩和重复指令 247
10.33 选择元素指令 248
10.34 依赖向量生成指令 251
10.35 多寄存器聚集和分散指令 252
10.36 转置指令与高速缓存协处理单元 254
10.37 带选择与累积功能的精简指令 257
10.38 四操作数整型乘累加指令 259
10.39 双舍入组合乘法和加法(减法或转换等)指令 260
10.40 将多个位向左移并将多个1填充较低位的指令 262
10.41 向量压缩循环指令 263
10.42 大整数运算算法 266
10.42.1 大整数乘法运算 266
10.42.2 大整数平方运算 269
10.43 新型存储介质相变存储的非易失性写入 270
第11章 其他矢量指令 273
11.1 合并的向量转换指令 273
11.2 灵活归零控制的置换指令 278
11.3 范围检测指令 280
11.4 跨通道交织拆开指令 282
11.5 向量比较交换指令 284
11.6 二维矩阵乘加 285
11.7 复数运算指令改进信号处理 287
11.8 归约指令和加速 290
11.8.1 逻辑归约指令 290
11.8.2 通道内向量归约加速 291
参考文献 293