找回密码
 欢迎注册
查看: 6561|回复: 6

[分享] Intel指令集未来发展,来自官方网站

[复制链接]
发表于 2013-9-8 07:31:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
提到了AVX-512

太大,上传无能

提供地址

http://download-software.intel.c ... iles/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, [rax]
把[rax]指向的内存地址中的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抄过去的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-19 20:00 , Processed in 0.057609 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表