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