V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
James369
V2EX  ›  程序员

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

  •  
  •   James369 · 91 天前 · 4202 次点击
    这是一个创建于 91 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在都流行什么 AI 芯片,神经网络处理,或者新的架构比如 RiscV 等,这种新的 CPU 诞生,会产生什么样的影响呢?

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

    倒是会对原有的硬件产业产生影响,比如接口重新设计,板卡要重新打造
    27 条回复    2021-09-02 18:09:18 +08:00
    tcfenix
        1
    tcfenix   91 天前
    那种新?是英特尔除了 12 13 14 代那种新?英特尔自己会做向前兼容, 没啥影响

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

    你要不搜下 fpga
    agagega
        12
    agagega   91 天前 via iPhone   ❤️ 2
    这是不同层面的事情。

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

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

    如果是说 CPU 自己的微架构,这是 CPU 内部的事情,你不用重新编译。
    msg7086
        13
    msg7086   91 天前
    如果都是用比较高级的语言写的,重新编译下倒也不是大问题。

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

    但是如果用到相对底层的汇编语言,基本上就要重写。
    BiteTheDust
        18
    BiteTheDust   90 天前
    一些性能优化的代码是高度依赖底层硬件架构的。
    js8510
        19
    js8510   90 天前 via Android   ❤️ 2
    对追求高性能的大型服务后台影响非常大。这些 binary 为了追求极致性能,常年反复压榨,往往把编译器能用的所有 option 已经调了一个遍,全都要重新做。另外部署的时候各种多线程的优化,kernel 层面的已有优化,甚至是代码风格的要求都会有变化。
    aneostart173
        20
    aneostart173   90 天前
    @LeeReamond 每个 ISA 都有自己的 feature,内存一致性也有可能不一样。
    youxiachai
        21
    youxiachai   90 天前
    新架构???那个是新的啊。。就算是 RiscV 理论也是 80 年代就有了。。

    严格来说,目前在做的事情都是在完善上层应用。。谈不上什么新。。。
    adoal
        22
    adoal   90 天前
    以前(大概在 2000 年)遇到过的一个实际例子,某个开源组件在 i386 的 Linux 上跑得好好的,到了 alpha 的 Linux 上就会频繁在 console 跳出错误,程序运行结果都是对的,就是性能不太行。
    因为 i386 上 word/dword/qword 并不要求对齐到整个数据类型的边界;而 alpha 上要求对齐,否则会触发错误,然后操作系统捕获以后来根据指针位置拆开运算再合起来,这样性能损失会很大。

    还有大家可能熟悉的近几年的例子,X86 和 ARM 的内存一致性模型不一样,习惯了 X86 的人写出来的程序在 ARM 上可能就会出问题。
    Cloutain
        23
    Cloutain   90 天前
    会对编译器和操作系统产生深刻的影响,编译器和操作系统的编写必须充分结合 CPU 的特性。上层软件全部重编译都是体力活了
    misaka20
        24
    misaka20   89 天前
    难道编译器后端是摆设吗?
    Zepp
        25
    Zepp   89 天前
    一个帖子,暴露出 v2 多少所谓程序员的计算机知识水平……
    INCerry
        26
    INCerry   89 天前
    新架构吗? ARM 这些也不算新了,要说真的新架构的话 那看看 LoongArch
    Chinsung
        27
    Chinsung   85 天前
    现在都在层上编程,CPU 架构改了,指令集一般向前兼容,如果你是干编译器或者虚拟机的,对你来说影响是巨大的。
    对于大部分用高级语言的来说,基本是没有什么区别的。
    大小核这种情况,最先也是操作系统的调度该考虑。然后才到语言和编程模型级别。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2313 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:28 · PVG 11:28 · LAX 19:28 · JFK 22:28
    ♥ Do have faith in what you're doing.