一个新的 CPU 架构会对上层产生多大的影响?

2021-08-27 21:24:31 +08:00
 James369
现在都流行什么 AI 芯片,神经网络处理,或者新的架构比如 RiscV 等,这种新的 CPU 诞生,会产生什么样的影响呢?

软件层面我认为影响不大,怎么说呢,因为编译器和操作系统都适配好了。那么上层应用只要通过编译器重新编译打包一下就好了,源代码都不用改。
AI 芯片呢,可能会多加一些并行计算库的支持,应用层代码改动也不大。

倒是会对原有的硬件产业产生影响,比如接口重新设计,板卡要重新打造
5084 次点击
所在节点    程序员
27 条回复
tcfenix
2021-08-27 21:27:38 +08:00
那种新?是英特尔除了 12 13 14 代那种新?英特尔自己会做向前兼容, 没啥影响

要是 x64 arm 那种新, 那就更加没影响了, 反正不兼容....没人理咯
James369
2021-08-27 21:36:51 +08:00
@tcfenix 恩,就好比前不久苹果 M1 出来,好像要翻天了似的
billlee
2021-08-27 22:35:50 +08:00
怎么就没影响了
amd64 普及多少年了还有很多软件只有 i386 的二进制提供。intel 和 amd 的虚拟化就需要分别写两套实现。mac 换 arm 直接把 bootcamp 和虚拟机干没了。以前的游戏主机多平台移植基本上和重写差不多。
secondwtq
2021-08-27 22:48:32 +08:00
你指的是 ISA 还是 uArch ?
Huelse
2021-08-28 00:20:20 +08:00
影响是有,但好在现在 ARM 、RISC-V 等架构都是精简指令集
LeeReamond
2021-08-28 00:48:39 +08:00
我也很疑惑,理论上这是编译器需要干的适配,然而微软特意提到开发者需要做大小核优化...我好奇是 C 语言里有指定大小核的指令还是汇编里有指定大小核的指令,感觉都没有啊
JerryCha
2021-08-28 00:52:41 +08:00
按我理解,你不走歪门邪道、API 调用跟随官方规范的话,影响可能比较小。
neoblackcap
2021-08-28 01:01:11 +08:00
@LeeReamond NUMA 呗,系统是有对应的 API 提供的。调用不同的 API,运算当然是不一样。还有就是 SIMD 指令,小核可能是没有,或者弱化
icyalala
2021-08-28 01:09:14 +08:00
@neoblackcap Intel 这次就是因为小核不支持 AVX-512,所以把大核的也给禁了。。
misdake
2021-08-28 01:12:23 +08:00
“通过编译器重新编译”这件事对于一些活跃的开发者可能还好,但整个生态都重新编译不是那么容易的。
那些开发者不再支持的软件,不用转义或者虚拟机就永远运行不了了。
如果软件依赖了其他的静态库,就要等待库的更新或者自己去编译,越底层越可能需要有改动。如果用了一些 ISA 特定的 trick,或者写了各种汇编,就要真的重新付出去开发,可能写汇编的人早就离职了干别的去了,没人会了。
Jooooooooo
2021-08-28 01:21:08 +08:00
像是完全没接触的人会说的

你要不搜下 fpga
agagega
2021-08-28 01:38:24 +08:00
这是不同层面的事情。

像从给 CPU 编程到给 GPU 编程,这个属于编程模型上的变化,代码可能需要大量的重写。

如果是换个指令集,比如从 x86 迁移到 ARM,理论上你的代码如果全都是标准的可移植的那种,那的确重新编译就可以了。但很多项目 (1) 假定了很多平台特性(比如 x86 和 ARM 的内存一致性模型不一样),或者用了平台相关的内联汇编 /Intrinsic (2) 用了上游的库,而上游又依赖着更上游的代码,那就得等到他们全都改好才行,目测到今天还没有适配 M1 的那些软件就属于这种情况。当然即使同样是 x86,也会有指令集的不同,比如一些 CPU 支持 AVX512 而另一些不支持,情况类似,但不需要像到 ARM 那么大的功夫。

如果是说 CPU 自己的微架构,这是 CPU 内部的事情,你不用重新编译。
msg7086
2021-08-28 05:01:50 +08:00
如果都是用比较高级的语言写的,重新编译下倒也不是大问题。

很多用汇编写的软件就跑不起来了,要重写指令集。最典型的就是很多运算密集型软件,比如 ffmpeg 全家桶,你只能放弃掉汇编的部分,纯靠编译器来优化,速度天差地别。
minikyu
2021-08-28 10:05:06 +08:00
最近在搞模型部署,用的芯片是 arm 的,之前测试用的是 x64 的,结果就是,虽然两者都是 linux 系统,但是很多东西都不通用,搞死我了😟
ilotuo
2021-08-28 11:44:20 +08:00
AI 芯片是属于 SIMT 架构吧. 和 pc 上的 cpu 不是一个东西
yolee599
2021-08-28 12:57:45 +08:00
一个 CPU 架构不会轻易出现,也不会轻易改变的。编译器的实现,烧录软件的实现,产品线(一个架构只有一款硬件,别人不敢用,用了容易被绑死),硬件烧录器,bsp 代码,社区,等,这些都需要考虑的。通常是在外设上添加功能模块,通过某种总线和 CPU 通信。AI 芯片也是在现有的 CPU 构架上添加 NPU 外设,通过某种方式和 CPU 通讯
beginor
2021-08-28 14:05:41 +08:00
我觉得高级语言影响不大,重新编译一下很多问题就解决了。

但是如果用到相对底层的汇编语言,基本上就要重写。
BiteTheDust
2021-08-28 15:03:14 +08:00
一些性能优化的代码是高度依赖底层硬件架构的。
js8510
2021-08-28 16:30:45 +08:00
对追求高性能的大型服务后台影响非常大。这些 binary 为了追求极致性能,常年反复压榨,往往把编译器能用的所有 option 已经调了一个遍,全都要重新做。另外部署的时候各种多线程的优化,kernel 层面的已有优化,甚至是代码风格的要求都会有变化。
aneostart173
2021-08-28 16:35:23 +08:00
@LeeReamond 每个 ISA 都有自己的 feature,内存一致性也有可能不一样。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/798418

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX