无心人 发表于 2013-9-8 07:31:32

Intel指令集未来发展,来自官方网站

提到了AVX-512

太大,上传无能

提供地址

http://download-software.intel.com/sites/default/files/319433-015.pdf

无心人 发表于 2013-9-8 07:35:59

主要思想是
提供32个新的zmm寄存器,512位宽,从zmm0-zmm31
其中16个扩展自AVX寄存器,16个为新设
64位下可以访问所有32个寄存器,32位下,只能访问8个

提供8个opmask寄存器k0-k7,其中k1-k7用来标志某些不需要处理的向量项目, k0干啥使,暂时没看懂

无心人 发表于 2013-9-8 08:01:16

MSB........................................LSB
zmm0 =
[ 0x00000003 0x00000002 0x00000001 0x00000000 ] (bytes 15 through 0)
[ 0x00000007 0x00000006 0x00000005 0x00000004 ] (bytes 31 through 16)
[ 0x0000000B 0x0000000A 0x00000009 0x00000008 ] (bytes 47 through 32)
[ 0x0000000F 0x0000000E 0x0000000D 0x0000000C ] (bytes 63 through 48)
zmm1 =
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 15 through 0)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 31 through 16)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 47 through 32)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 63 through 48)
zmm2 =
[ 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA ] (bytes 15 through 0)
[ 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB ] (bytes 31 through 16)
[ 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC ] (bytes 47 through 32)
[ 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD ] (bytes 63 through 48)
k3 = 0x8F03 (1000 1111 0000 0011)

vpaddd zmm2 {k3}, zmm0, zmm1
效果
[ ********** ********** 0x00000010 0x0000000F ] (bytes 15 through 0)
[ ********** ********** ********** ********** ] (bytes 31 through 16)
[ 0x0000001A 0x00000019 0x00000018 0x00000017 ] (bytes 47 through 32)
[ 0x0000001E ********** ********** ********** ] (bytes 63 through 48)
结果
zmm2 =
[ 0xAAAAAAAA 0xAAAAAAAA 0x00000010 0x0000000F ] (bytes 15 through 0)
[ 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB ] (bytes 31 through 16)
[ 0x0000001A 0x00000019 0x00000018 0x00000017 ] (bytes 47 through 32)
[ 0x0000001E 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD ] (bytes 63 through 48)

随着操作数据类型不同, opmask寄存器并不是所有标志都有效,从低位起直到操作的向量个数相等的位,为有效mask长度
比如64位下操作8个8位时候,k寄存器就仅仅低8位有效

无心人 发表于 2013-9-8 08:13:16

操作k寄存器的指令分成3类
读写,测试(类似test指令),逻辑

无心人 发表于 2013-9-8 08:19:27

还支持一种叫broadcast的特性,具体如何翻译不太清楚
效果是
vmulps zmm1, zmm2,
把指向的内存地址中的32位浮点复制16份,跟zmm2中的32位浮点相乘,写入zmm1

无心人 发表于 2013-9-8 08:51:18

发现两个问题
1、AVX就有整数指令,而不是仅仅AVX2,但是仅仅限于对xmm寄存器操作,AVX2是3操作数,并且支持YMM寄存器,AVX已经有完善的乘法加法了!
2、AVX-512也有完善的整数指令,但是会不会一次推出?

所有的指令,对加法都很完善了,对乘法,仅仅支持到64X64=64,未发现64X64=128

所以,似乎mulx更好一些

.·.·. 发表于 2023-4-30 11:06:15

无心人 发表于 2013-9-8 08:51
发现两个问题
1、AVX就有整数指令,而不是仅仅AVX2,但是仅仅限于对xmm寄存器操作,AVX2是3操作数,并且支 ...

乘法有52x52,可以获得高52bit或者低52bit的数据
这大概是从double抄过去的
页: [1]
查看完整版本: Intel指令集未来发展,来自官方网站