曾经被取消,现在又卷土重来!AVX-512到底有何魅力?

7月25日,英特尔发布了新的 APX(高级性能扩展),同时还披露了新的 AVX10,它将首次为 P 核和 E 核提供统一的 AVX-512 功能支持。也标志着被英特尔在12、13代酷睿中枪毙的AVX 指令集运算功能回归。AVX-512为何能卷土重来?

不得不提的ALU
在了解 AVX-512 指令集之前,有必要先了解一下 ALU 的工作原理。

顾名思义,算术处理单元用于执行数学计算任务。这些任务包括加法、乘法和浮点计算等运算。为了完成这些任务,ALU 使用由 CPU 时钟信号驱动的特定应用数字电路。

因此,CPU 的主频就决定了 ALU 处理指令的速度。因此,如果 CPU 的时钟频率为 5GHz,那么 ALU 在一秒钟内可以处理 50 亿条指令。因此,CPU 的性能会随着时钟频率的提高而提高,但CPU 产生的热量也会增加。

那么,新一代处理器如何提供比旧版处理器更好的性能呢?人们开始利用并行概念来提高性能。这种并行性可以通过使用多核架构来实现,即使用多个不同的处理内核来提高 CPU 的计算能力。

另一种提高性能的方法是使用 SIMD 指令集。简单地说,“单指令、多数据”的指令方式,可以让 ALU 在不同的数据点上执行相同的指令。这种并行方式可以提高 CPU 的性能,AVX-512 就是一种 SIMD 指令,用于提高 CPU 在执行特定任务时的性能。

什么是 AVX-512,它如何工作?
AVX 512 指令集是 AVX 的第二次迭代,于 2013 年进入英特尔处理器。作为高级矢量扩展(Advanced Vector Extensions)的缩写,AVX指令集最早出现在英特尔至强Phi(Knights Landing)架构中,后来在英特尔服务器处理器Skylake-X CPU中使用。

此外,AVX-512 指令集通过 Cannon Lake 架构进入基于消费类的CPU,后来又得到 Ice Lake 和 Tiger Lake 架构的支持。

该指令集的主要目标是加速涉及数据压缩、图像处理和加密计算的任务。AVX-512 指令集的计算能力是旧版指令集的两倍,性能大幅提升。

那么,英特尔是如何将使用 AVX-512 架构的 CPU 性能提高一倍的呢?

如前所述,ALU 只能访问 CPU 寄存器中的数据。高级矢量扩展指令集增加了这些寄存器的大小。

由于寄存器容量的增加,ALU 可以在一条指令中处理多个数据点,从而提高了系统性能。

就寄存器大小而言,AVX-512 指令集提供 32 个 512 位寄存器,与旧版 AVX 指令集相比增加了一倍。

因此,只需执行一条指令,就可以同时进行多项操作,而不必以标量方式(即逐个数据)进行操作。例如,可以同时对 8 个 64 位数据或 16 个 32 位数据进行操作,等等。

英特尔为什么要终止 AVX-512?
如前所述,AVX-512 指令集具有多项计算优势。事实上,像 TensorFlow 这样的流行AI开发库都使用了该指令集,以便在支持该指令集的 CPU 上提供更快的计算速度。

而对于浮点运算极度依赖的加密解密计算、文件压缩和解压缩、音频视频编码解码以及复杂的3D渲染来说,AVX-512的性能提升是比较大的。也就是说,对生产力用户来说,只要软件支持,那么AVX-512对性能提升是很明显的。

即使是对于3A大作,由于复杂的3D和AI计算,这种并行指令集对帧率的提升也是有帮助的。而诸如游戏主机模拟器等虚拟化计算场合,其意义也非常大。

那么,英特尔为什么要在最近的12、13代酷睿处理器上禁用 AVX-512呢?

因为这两代处理器与英特尔生产的旧处理器不同。旧系统使用的是运行在同一架构上的内核,而这两代酷睿处理器使用的是两个不同的内核,也就是异构运算技术。Alder Lake 处理器中的这些内核被称为 P 核和 E 核,采用不同的架构。

P 核心使用 Golden Cove 微架构,而 E 核心使用 Gracemont 微架构。当特定指令能在一种架构上运行而不能在另一种架构上运行时,这种架构上的差异就会妨碍调度程序的正常运行。

在 Alder Lake 处理器中,AVX-512 指令集就是这样一个例子,因为 P 核心拥有处理该指令的硬件,而 E 核心却没有。

因此,Alder Lake 处理器不支持 AVX-512 指令集。

尽管如此,AVX-512 指令仍可在某些英特尔未将其物理融合的 Alder Lake CPU 上运行。要做到这一点,用户必须在 BIOS 中禁用 E 核。

相反,由于采用非异构运算结构,AMD在Ryzen7000 CPU上,反而支持起了AVX-512,似乎也是一种小小的讽刺。

AVX10如何恢复AVX-512支持?
新的 AVX10 ISA 并不支持英特尔当前一代的 CPU,但它使英特尔同时拥有 E 核和 P 核的芯片仍然支持 AVX-512,尽管 512 位指令只能在 P 核上运行。同时,融合的 256 位 AVX10 指令可以在 P 核或 E 核上运行,从而使整个芯片仍然支持 AVX-512 功能。

不过,e-cores 将仅限于融合 AVX10 的最大 256 位向量长度,而 P-cores 可以使用 512 位向量。这感觉类似于 Arm 的 SVE 对可变向量宽度的支持。

AVX10 推出后,英特尔将冻结 AVX-512 ISA,今后 AVX-512 指令的所有使用都将通过 AVX10 ISA 进行。

使用Python生成BaiduPCS工具的百度网盘秒传信息

有一次想使用百度网盘自带的Windows客户端上传一些大量音乐文件,这些音乐文件其他百度网盘用户肯定早都上传过,所以基本这些文件不会占用太多网络上传带宽,但是百度网盘自带的Windows客户端计算文件的md5过程非常慢,估计是为了避免计算md5过程影响电脑整体性能,所以故意没有开全速计算,后来利用BaiduPCS命令行工具进行上传,所以写了一个Python代码进行md5计算,计算过程可以达到磁盘的峰值速度。

惠普 HP Laser MFP 136nw 打印机通电提示 “Wait Image”

闲的没事儿时打开了惠普的打印机服务页面,发现有136nw打印机最新的固件,随手下载并且通过Web页面方式更新固件,以前一直都是这么操作的没有发现任何问题,但这次大概卡住了能有20分钟,感觉异常然后我就给打印机强制重启,当再次通电后打印机屏幕显示“Wait Image” 并且打印机Web管理页面也无法登录了,咨询惠普官方,他们说没有办法让联系当地售后网点进行维修,据咨询维修打印机人员说这种情况需要更换打印机主板,说需要几百元,我心想应该不至于更换主板吧,电脑主板BIOS刷死也不至于更换主板啊,顶多用编程器刷写下BIOS就行了,因为当初下载固件的时候发现固件包中有一个exe(需命令行运行),因为我的打印机一直都是通过WiFi链接(没有使用USB数据线),然后找到打印机自带的USB数据线连接后,使用官方提供的那个工具,在CMD中运行并且传递需要刷写的固件文件路径,发现打印机屏幕有反应了,经过短暂等待,打印机彻底满血复活,写出本过程的目的是为了避免和我类似情况的朋友们免得让某些所谓维修工给坑了。
总结:惠普官方的电话客服也不是很懂,正常来说他们应该引导用户去使用固件包中的工具进行补救,我觉得打印机提示这个 “Wait Image”就是进入了所谓的恢复模式,翻译过来就是等待固件镜像文件,只是通过USB数据线将固件文件传递过去就万事大吉了,省了好几百。或者官方客服懒得提示用户这么操作,就直接引导至维修站。
官方工具名称:usblist2.exe

四十年的轮回!Intel Core i7-8086K

纪念8086处理器40周年 Intel推出首款5GHz的酷睿i7处理器

1968年7月18日,从仙童半导体公司离职的戈登•摩尔、安迪•格鲁夫和罗伯特•诺伊斯三人,仅花了5分钟就游说到250万美元的资金,创立了Intel公司,开始了一段缔造传奇的历程。

(尔后一年,同样是从仙童公司出来的杰瑞•桑德斯,花了500分钟才终于游说到150万美元,创立了AMD公司)。

十年后的1978年的6月8日,Intel公司推出了第一颗兼容型的通用16位8086处理器,这颗只有40个针脚、29000个晶体管的处理器就是日后所有IBM及兼容PC处理器的祖先,也是X86构架的源头。
40年后的2018年6月8号,为了纪念这颗开创历史的8086处理器,Intel公司推出了最新的第八代酷睿 i7-8086K处理器,全球限量50000颗。

40年的时间,变化可以用天翻地覆来形容。处理器的晶体管数量从原来的29,000个增长到10亿以上;制程工艺从3微米(3000纳米)提升到了14纳米;频率从5MHz提高到目前的5GHz;运算能力从0.33 MIPS(百万条指令每秒)提升1000,000 MIPS。

现在来说说今天的主角--酷睿i7-8086K处理器。

i7-8086K基于八代酷睿Coffee Lake构架,14纳米工艺制造,核心面积约150平方毫米,拥有六个核心十二线程,睿频加速达5GHz,这也是Intel史上第一颗默认能跑到5GHz频率的处理器(虽然只是单核睿频),TDP为95W。

 


Nitrokey Pro 使用方法

Windows管理Nitrokey Pro使用Gpg4win(https://gpg4win.org/),此工具会自动安装GnuPG,设置Nitrokey Pro信息的时候会用到GnuPG的命令行工具。

 

GnuPG命令行说明

gpg --card-status 查看智能卡状态

gpg --card-edit 编辑智能卡

fetch 可以从设置的url中获取公钥

admin 显示管理命令

passwd 可以修改PIN与Admin PIN码

gpg --export-ssh-key ************************* 导出ssh用的公钥(符合ssh的规范)

 

设置记录

默认PIN(用于日常操作,如解锁令牌,签名和加解密等):123456

默认Admin PIN:12345678

重置码:(*******************)用户重置PIN

name: myname

url: http://keyserver.ubuntu.com/pks/lookup?op=get&fingerprint=on&search=0xF83BB3599EF21740 (用ubuntu的速度比较快)

lang: cn

sex: M

login: username

 

换到其它电脑上使用Nitrokey Pro时候,要先导入对应的公钥,否则gpg无法使用Nitrokey Pro。

 

如果忘了Nitrokey Pro的密码官方提供了一个工具(CryptoStickReset.exe),可以初始化(很彻底和新买的一样)。

 

参考

https://raymii.org/s/articles/Nitrokey_Start_Getting_started_guide.html

https://www.nitrokey.com/de/putty

 

 

--------------------------------其它--------------------------------

修改信任

$ gpg --edit-key <Uid>

gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

 

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: full          validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

 

gpg> trust

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: full          validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

 

Please decide how far you trust this user to correctly verify other users' keys

(by looking at passports, checking fingerprints from different sources, etc.)

 

1 = I don't know or won't say

2 = I do NOT trust

3 = I trust marginally

4 = I trust fully

5 = I trust ultimately

m = back to the main menu

 

Your decision? 5

Do you really want to set this key to ultimate trust? (y/N) y

 

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: ultimate      validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

Please note that the shown key validity is not necessarily correct

unless you restart the program.

 

gpg> quit

 

将以有密钥导入到Nitrokey Pro中

$ gpg --edit-key 559C215F

gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

 

Secret key is available.

 

pub  1024D/559C215F  created: 2009-05-04  expires: never       usage: SC

trust: ultimate      validity: ultimate

sub  2048g/5457F4E7  created: 2009-05-04  expires: never       usage: E

sub  1024R/E1D9B30D  created: 2009-05-13  expires: never       usage: S

sub  1024R/EDDA691E  created: 2009-05-13  expires: never       usage: E

[ultimate] (1). Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> toggle

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 2

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb* 1024R/E1D9B30D  created: 2009-05-13  expires: never

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> keytocard

Signature key ....: [none]

Encryption key....: [none]

Authentication key: [none]

 

Please select where to store the key:

(1) Signature key

(3) Authentication key

Your selection? 1

 

You need a passphrase to unlock the secret key for

user: "Martin Gollowitzer (Testing environment) <gollo@fsfe.org>"

1024-bit RSA key, ID E1D9B30D, created 2009-05-13

 

gpg: generating new key

gpg: 3 Admin PIN attempts remaining before card is permanently locked

 

Admin PIN

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb* 1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 2

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 3

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb* 1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> keytocard

Signature key ....: [none]

Encryption key....: [none]

Authentication key: [none]

 

Please select where to store the key:

(2) Encryption key

Your selection? 2

 

You need a passphrase to unlock the secret key for

user: "Martin Gollowitzer (Testing environment) <gollo@fsfe.org>"

1024-bit RSA key, ID EDDA691E, created 2009-05-13

 

gpg: generating new key

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb* 1024R/EDDA691E  created: 2009-05-13  expires: never

card-no: 0001 00000229

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> save