This topic created in 1744 days ago, the information mentioned may be changed or developed.
现在都流行什么 AI 芯片,神经网络处理,或者新的架构比如 RiscV 等,这种新的 CPU 诞生,会产生什么样的影响呢?
软件层面我认为影响不大,怎么说呢,因为编译器和操作系统都适配好了。那么上层应用只要通过编译器重新编译打包一下就好了,源代码都不用改。
AI 芯片呢,可能会多加一些并行计算库的支持,应用层代码改动也不大。
倒是会对原有的硬件产业产生影响,比如接口重新设计,板卡要重新打造
27 replies • 2021-09-02 18:09:18 +08:00
 |
|
1
tcfenix Aug 27, 2021
那种新?是英特尔除了 12 13 14 代那种新?英特尔自己会做向前兼容, 没啥影响
要是 x64 arm 那种新, 那就更加没影响了, 反正不兼容....没人理咯
|
 |
|
3
billlee Aug 27, 2021 2
怎么就没影响了 amd64 普及多少年了还有很多软件只有 i386 的二进制提供。intel 和 amd 的虚拟化就需要分别写两套实现。mac 换 arm 直接把 bootcamp 和虚拟机干没了。以前的游戏主机多平台移植基本上和重写差不多。
|
 |
|
5
Huelse Aug 28, 2021
影响是有,但好在现在 ARM 、RISC-V 等架构都是精简指令集
|
 |
|
6
LeeReamond Aug 28, 2021
我也很疑惑,理论上这是编译器需要干的适配,然而微软特意提到开发者需要做大小核优化...我好奇是 C 语言里有指定大小核的指令还是汇编里有指定大小核的指令,感觉都没有啊
|
 |
|
7
JerryCha Aug 28, 2021
按我理解,你不走歪门邪道、API 调用跟随官方规范的话,影响可能比较小。
|
 |
|
8
neoblackcap Aug 28, 2021
@ LeeReamond NUMA 呗,系统是有对应的 API 提供的。调用不同的 API,运算当然是不一样。还有就是 SIMD 指令,小核可能是没有,或者弱化
|
 |
|
10
misdake Aug 28, 2021
“通过编译器重新编译”这件事对于一些活跃的开发者可能还好,但整个生态都重新编译不是那么容易的。 那些开发者不再支持的软件,不用转义或者虚拟机就永远运行不了了。 如果软件依赖了其他的静态库,就要等待库的更新或者自己去编译,越底层越可能需要有改动。如果用了一些 ISA 特定的 trick,或者写了各种汇编,就要真的重新付出去开发,可能写汇编的人早就离职了干别的去了,没人会了。
|
 |
|
12
agagega Aug 28, 2021 via iPhone 2
这是不同层面的事情。
像从给 CPU 编程到给 GPU 编程,这个属于编程模型上的变化,代码可能需要大量的重写。
如果是换个指令集,比如从 x86 迁移到 ARM,理论上你的代码如果全都是标准的可移植的那种,那的确重新编译就可以了。但很多项目 (1) 假定了很多平台特性(比如 x86 和 ARM 的内存一致性模型不一样),或者用了平台相关的内联汇编 /Intrinsic (2) 用了上游的库,而上游又依赖着更上游的代码,那就得等到他们全都改好才行,目测到今天还没有适配 M1 的那些软件就属于这种情况。当然即使同样是 x86,也会有指令集的不同,比如一些 CPU 支持 AVX512 而另一些不支持,情况类似,但不需要像到 ARM 那么大的功夫。
如果是说 CPU 自己的微架构,这是 CPU 内部的事情,你不用重新编译。
|
 |
|
13
msg7086 Aug 28, 2021
如果都是用比较高级的语言写的,重新编译下倒也不是大问题。
很多用汇编写的软件就跑不起来了,要重写指令集。最典型的就是很多运算密集型软件,比如 ffmpeg 全家桶,你只能放弃掉汇编的部分,纯靠编译器来优化,速度天差地别。
|
 |
|
14
minikyu Aug 28, 2021
最近在搞模型部署,用的芯片是 arm 的,之前测试用的是 x64 的,结果就是,虽然两者都是 linux 系统,但是很多东西都不通用,搞死我了😟
|
 |
|
15
ilotuo Aug 28, 2021
AI 芯片是属于 SIMT 架构吧. 和 pc 上的 cpu 不是一个东西
|
 |
|
16
yolee599 Aug 28, 2021 via Android 1
一个 CPU 架构不会轻易出现,也不会轻易改变的。编译器的实现,烧录软件的实现,产品线(一个架构只有一款硬件,别人不敢用,用了容易被绑死),硬件烧录器,bsp 代码,社区,等,这些都需要考虑的。通常是在外设上添加功能模块,通过某种总线和 CPU 通信。AI 芯片也是在现有的 CPU 构架上添加 NPU 外设,通过某种方式和 CPU 通讯
|
 |
|
17
beginor Aug 28, 2021 via Android
我觉得高级语言影响不大,重新编译一下很多问题就解决了。
但是如果用到相对底层的汇编语言,基本上就要重写。
|
 |
|
19
js8510 Aug 28, 2021 via Android 2
对追求高性能的大型服务后台影响非常大。这些 binary 为了追求极致性能,常年反复压榨,往往把编译器能用的所有 option 已经调了一个遍,全都要重新做。另外部署的时候各种多线程的优化,kernel 层面的已有优化,甚至是代码风格的要求都会有变化。
|
 |
|
21
youxiachai Aug 28, 2021
新架构???那个是新的啊。。就算是 RiscV 理论也是 80 年代就有了。。
严格来说,目前在做的事情都是在完善上层应用。。谈不上什么新。。。
|
 |
|
22
adoal Aug 29, 2021
以前(大概在 2000 年)遇到过的一个实际例子,某个开源组件在 i386 的 Linux 上跑得好好的,到了 alpha 的 Linux 上就会频繁在 console 跳出错误,程序运行结果都是对的,就是性能不太行。 因为 i386 上 word/dword/qword 并不要求对齐到整个数据类型的边界;而 alpha 上要求对齐,否则会触发错误,然后操作系统捕获以后来根据指针位置拆开运算再合起来,这样性能损失会很大。
还有大家可能熟悉的近几年的例子,X86 和 ARM 的内存一致性模型不一样,习惯了 X86 的人写出来的程序在 ARM 上可能就会出问题。
|
 |
|
23
Cloutain Aug 29, 2021
会对编译器和操作系统产生深刻的影响,编译器和操作系统的编写必须充分结合 CPU 的特性。上层软件全部重编译都是体力活了
|
 |
|
25
Zepp Aug 30, 2021
一个帖子,暴露出 v2 多少所谓程序员的计算机知识水平……
|
 |
|
26
INCerry Aug 30, 2021
新架构吗? ARM 这些也不算新了,要说真的新架构的话 那看看 LoongArch
|
 |
|
27
Chinsung Sep 2, 2021
现在都在层上编程,CPU 架构改了,指令集一般向前兼容,如果你是干编译器或者虚拟机的,对你来说影响是巨大的。 对于大部分用高级语言的来说,基本是没有什么区别的。 大小核这种情况,最先也是操作系统的调度该考虑。然后才到语言和编程模型级别。
|