V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Salomea
V2EX  ›  问与答

ARM 比 X86 的局限是什么

  •  
  •   Salomea · 2023-09-05 11:09:32 +08:00 · 6090 次点击
    这是一个创建于 450 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当服务器用,很多人推荐 x86 ,那 arm 有啥缺点?我自己用的闲鱼买的黑豹 x2 ,刷的 armbian ,个人感觉 arm 机子的几个优点,精致小巧,省电,不过可刷的固件有限,但是限制 arm64 也有很多软件适配下来了

    63 条回复    2023-09-06 09:35:46 +08:00
    rojer12
        1
    rojer12  
       2023-09-05 11:15:06 +08:00   ❤️ 1
    你自己不是说了么,“可刷的固件有限”、“很多软件适配”
    用 x86 需要考虑的是哪些特定场景/应用不好使(不是说用不了)
    用 arm 需要考虑的是能用于哪些场景和哪些场景还没法用/doge
    OceanBreeze
        2
    OceanBreeze  
       2023-09-05 11:25:25 +08:00
    我们公司很多 web 服务器都是 arm
    Salomea
        3
    Salomea  
    OP
       2023-09-05 11:26:46 +08:00
    @rojer12 🐶是这样的,感觉 arm 在服务器上快赶上 x86 了
    hatw
        4
    hatw  
       2023-09-05 11:28:09 +08:00
    貌似是指令集少了?然后很多东西用不了还是啥的。。。看过文章,忘了。。。。
    cpstar
        5
    cpstar  
       2023-09-05 11:30:30 +08:00   ❤️ 2
    局限就是没有替代 x86 成为主流,当 80%的市场份额都是 ARM 的时候,什么适配什么有限,全都不存在。
    gpt5
        6
    gpt5  
       2023-09-05 11:33:03 +08:00
    局限性就是很多 软件/包 不支持 arm 或支持的不好啊
    tool2d
        7
    tool2d  
       2023-09-05 11:34:31 +08:00
    就是算力的区别,x86 能在高压的情况下,把并发拉上去。

    arm 自己用用可以,商用一般要改散热,默认风扇都不太给力。
    julyclyde
        8
    julyclyde  
       2023-09-05 11:39:59 +08:00
    可刷的固件没必要太多
    操作系统对硬件的适配,那个所谓 board support package 才是对各设备不同的
    上层软件基本都源码级别通用
    crysislinux
        9
    crysislinux  
       2023-09-05 11:55:23 +08:00 via Android
    ARM 驱动不好搞,x86 通用很多。ARM 大部分都是一个板子焊接到一起的,x86 标准接口的东西多。
    luckyrayyy
        10
    luckyrayyy  
       2023-09-05 12:00:07 +08:00   ❤️ 1
    生态
    duke807
        11
    duke807  
       2023-09-05 12:02:37 +08:00
    未来是 risc-v ,当下是 x86 ,arm 只是过度
    wanguorui123
        12
    wanguorui123  
       2023-09-05 12:11:07 +08:00
    ARM 的生态相对落后,但是自从 M1 问世现在基本上模糊化了
    superchijinpeng
        13
    superchijinpeng  
       2023-09-05 13:09:55 +08:00
    现在政企很多服务器全换成 arm 了
    ljrdxs
        14
    ljrdxs  
       2023-09-05 13:14:54 +08:00
    @superchijinpeng 为什么? ARM 是公司出售的产品,并不是纯开源的吧?
    superchijinpeng
        15
    superchijinpeng  
       2023-09-05 13:19:30 +08:00
    @ljrdxs 我指的是架构

    happy32199
        16
    happy32199  
       2023-09-05 13:22:29 +08:00 via iPhone
    @OceanBreeze 请问你们 arm 服务器 用的哪些型号啊
    ljrdxs
        17
    ljrdxs  
       2023-09-05 13:37:46 +08:00
    @superchijinpeng 你发的图好像是 Linux 。似乎不相关。
    XyIsMy
        18
    XyIsMy  
       2023-09-05 13:50:17 +08:00
    @OceanBreeze arm 用在 web 服务上稳定么。有没有遇到过问题
    smartruid
        19
    smartruid  
       2023-09-05 14:19:32 +08:00
    arm 主打低功耗吧,x86 的生态和性能是优势。看你服务器需求
    cslive
        20
    cslive  
       2023-09-05 14:23:45 +08:00   ❤️ 2
    x86 通用,随便刷机,arm 闭源驱动,刷个机费劲
    niantoudeyisi
        21
    niantoudeyisi  
       2023-09-05 14:32:15 +08:00 via Android
    感觉是生态
    nothingistrue
        22
    nothingistrue  
       2023-09-05 14:33:13 +08:00
    ARM 性能上不去(或者说能效比涨得比频率快),X86 待机功耗下不来。
    OceanBreeze
        23
    OceanBreeze  
       2023-09-05 14:34:01 +08:00
    @XyIsMy
    @happy32199 暂时没遇到什么问题。用的是 AWS 上的 arm 机型。
    superchijinpeng
        24
    superchijinpeng  
       2023-09-05 14:42:32 +08:00
    @ljrdxs #17 用的是这些发行版
    ljrdxs
        25
    ljrdxs  
       2023-09-05 14:46:25 +08:00
    @superchijinpeng 我以为芯片都是国产。看来不是这意思。
    xdeng
        26
    xdeng  
       2023-09-05 14:48:54 +08:00
    @ljrdxs 他这里的 CPU 有可能是国产的 Arm 比如华为
    qieqie
        27
    qieqie  
       2023-09-05 14:49:31 +08:00
    没有 256bit 以上 SIMD 指令和寄存器,没有硬件层面的 strong memory model
    ljrdxs
        28
    ljrdxs  
       2023-09-05 14:52:53 +08:00
    @xdeng 我的最初疑问是,既然 ARM 是公司售卖的产品,就算华为买了造,也不属于“开源可控”吧?
    当然官场上没那么看重技术。
    longbo666
        29
    longbo666  
       2023-09-05 15:50:20 +08:00
    @qieqie 因为我自己看不懂哈哈,所以我把你说的发给 GPT——

    不完全正确。ARM 架构与 x86 架构在某些方面不同,但并不是完全没有 256 位以上的 SIMD ( Single Instruction, Multiple Data )指令和寄存器,也不是完全没有硬件层面的 strong memory model 。

    SIMD 指令和寄存器:
    ARM 架构在其 NEON 扩展中引入了 128 位和 64 位 SIMD 指令集,以支持向量化操作。虽然 128 位是主流的,但某些 ARM 处理器已经引入了 256 位的 SIMD 指令集(例如,ARMv8.5-A 架构引入了 SVE ,Scalable Vector Extension ,支持 256 位和更大的向量寄存器)。这使得 ARM 能够进行高效的数据并行计算。

    Memory Model (内存模型):
    ARM 架构实际上有一种称为 ARMv8-A 的硬件层面的内存模型,它提供了一种强内存模型,与 x86 的内存模型类似。ARMv8-A 引入了严格的一致性内存模型,确保多线程程序中的内存访问按照一定顺序执行,从而简化了并发编程。这个内存模型是面向多核和多线程应用程序的。

    总之,ARM 架构与 x86 架构在 SIMD 指令集和内存模型方面存在一些差异,但不是没有 256 位以上的 SIMD 指令和寄存器,也不是完全没有硬件层面的 strong memory model 。这些差异主要取决于具体的 ARM 处理器架构和版本。
    pagxir
        30
    pagxir  
       2023-09-05 16:21:46 +08:00 via Android
    软件生态支持不够。比如多媒体硬件编解码,x86 的基本上 vaapi 直接用,arm 基本上除非是 Android 否则就只能 CPU 硬扛
    L4Linux
        31
    L4Linux  
       2023-09-05 16:38:13 +08:00
    @cslive 也有支持 UEFI 的,基本都是服务器板子,就是 livecd 少。
    L4Linux
        32
    L4Linux  
       2023-09-05 16:39:30 +08:00
    @nothingistrue Nervous-N1 开始就比较强了。
    adoal
        33
    adoal  
       2023-09-05 16:43:53 +08:00
    自己拿来当“服务器”角色玩的盒子就别想那么多了。
    人家的 ARM System Ready 服务器是生产环境的正规服务器。
    jian0jian
        34
    jian0jian  
       2023-09-05 17:00:08 +08:00
    软件生态, 有些软件只有 x86 版本,这就没办法了。 不过大部分 arm 没问题。
    yinmin
        35
    yinmin  
       2023-09-05 17:05:37 +08:00
    现在,mac 的 m1/m2 芯片的加持下,几乎常用的 linux 软件都支持 arm64 了,不支持 arm64 的软件不是流行软件了。
    nevin47
        36
    nevin47  
       2023-09-05 17:06:02 +08:00
    @ljrdxs #28 ARM 只是授权指令集,不负责成片销售,指令集只是芯片设计的基础而不是全部
    xdeng
        37
    xdeng  
       2023-09-05 17:45:07 +08:00
    @ljrdxs 楼上说的对
    webcape233
        38
    webcape233  
       2023-09-05 17:56:11 +08:00 via iPhone
    科学计算 ,行业软件,arm 可用性还约等于无
    ljrdxs
        39
    ljrdxs  
       2023-09-05 18:02:49 +08:00
    @nevin47
    @xdeng 这下不止官场领导,我也看不懂了……
    Donahue
        40
    Donahue  
       2023-09-05 18:26:47 +08:00
    自己做家用服务器用其实没什么区别

    可刷的固件少-> 大部分功能 armbian/openwrt 都能搞, 甚至你喜欢折腾的话黑豹 x2 也能刷 pve, 只是没那个必要。

    我自己用我家云/黑豹 x2 做旁路由,觉得挺稳定的,本来都性能过剩,毕竟我宽带才 100M, 完全没有上 x86 的意义。即使千兆,arm 旁路由也足够的

    arm 的缺点是可扩展性和 cpu 性能,如果你想加硬盘加内存这些就用 x86 , 相反如果你觉得黑豹 x2 的 4G 内存, 32Gemmc 或 TF 卡能满足你的要求,那我觉得 arm 其实是更优的选择。
    Jirajine
        41
    Jirajine  
       2023-09-05 18:37:40 +08:00 via Android
    就是没有硬件可用。不要说软件适配,开发团队都买不到实际可用的硬件。arm 的服务器一直处于 experimental 阶段,只有少数云厂商、小型开发板,以及国内为了政治指标硬上的电子垃圾等少数产品能用到 arm 的服务器。
    bequt
        42
    bequt  
       2023-09-05 19:49:49 +08:00
    请问 arm 能跑 python 吗?最近也考虑买一个 arm 。docker 能跑也行
    ivan_wl
        43
    ivan_wl  
       2023-09-05 20:26:52 +08:00
    @longbo666 #29 SIMD 我不懂,这个内存模型的说法就是扯淡,GPT 还是一如既往的扶不上墙
    bt7vip
        44
    bt7vip  
       2023-09-05 21:02:44 +08:00 via Android
    arm 使用的是复杂指令集,X86 使用的精简指令集,精简是把功能做成黑盒,你开发直接调用,精简是给你一块地自己想种啥种啥,但是开发难度大,相比精简指令集,复杂指令集的效率更高,定制自由度高,但是开发难度大。arm 也在做复杂指令集,但是生态实在是不行。
    bt7vip
        45
    bt7vip  
       2023-09-05 21:03:38 +08:00 via Android
    精简是给你一块地自己想种啥种啥》》复杂是给你一块地自己想种啥种啥
    nevin47
        46
    nevin47  
       2023-09-05 21:06:40 +08:00
    @ljrdxs #39 和官场没有半毛钱关系。相比于 X86 ,基于 ARM 的芯片全流程从设计到制造都可以做到可控,未来基于 RSIC-V 可控程度可以做到更高。
    nevin47
        47
    nevin47  
       2023-09-05 21:07:32 +08:00
    @bequt 你这个问题就好像是问:现在的新能源汽车能左转吗😁
    Donahue
        48
    Donahue  
       2023-09-05 21:11:47 +08:00
    @bt7vip 跟指令集有半毛钱关系,你写 c/cpp/python/js 需要写到跟指令集相关的东西么,这写都是写编译器的人才需要了解的
    firstlove
        49
    firstlove  
       2023-09-05 21:12:17 +08:00
    这个 thread 的回复基本都是来搞笑的...
    Donahue
        50
    Donahue  
       2023-09-05 21:13:56 +08:00
    @bequt x86 能跑的语言 arm 基本都能(应该是所有主流语言, 例如 c, c++, python, java, js, ruby, rust, golang), c#不太清楚能不能,我估计 c#也可以。
    haierspi
        51
    haierspi  
       2023-09-05 21:35:35 +08:00 via iPhone
    我能感知的区别就是软件生态
    Inn0Vat10n
        52
    Inn0Vat10n  
       2023-09-05 21:38:42 +08:00   ❤️ 2
    某些回复给我看傻了,似乎都没上过大学计算机专业课。。。。
    qweruiop
        53
    qweruiop  
       2023-09-05 22:45:38 +08:00
    很多计算的库在 arm 上比 x86 慢了几倍。。。
    gtx990
        54
    gtx990  
       2023-09-05 22:57:45 +08:00 via Android
    现代的 cpu 前端第一件事就是把指令译码成微指令
    指令长什么样根本不重要
    同一个架构甚至可以有多种前端
    比如原本 amd 还准备发布 arm 版的 zen ,也就是 k12
    Adelell
        55
    Adelell  
       2023-09-05 23:22:04 +08:00 via iPhone
    提醒一下 Apple silicon m1 m2 就是 arm 架构。
    cookii
        56
    cookii  
       2023-09-06 00:15:26 +08:00 via Android
    @Donahue 能跑是一回事,能稳定高性能的跑是另一回事
    jameskongawork
        57
    jameskongawork  
       2023-09-06 00:20:25 +08:00 via Android
    IO 操作,或者说这是 RISC 必有的劣势
    另外因为 X86 实际上只掌握在两家手里面(AMD INTEL)所以基本上在预取,CACHE 还有 DMA 上面都会考虑的比较周全。
    ARM 的基本上则是根据具体的芯片实现厂商和应用场景去考虑,大量的消费 ARM 片子都是多媒体或者是通信为主,所以基本上 IO 吞吐都不会太强。
    xarthur
        58
    xarthur  
       2023-09-06 00:22:58 +08:00 via iPhone
    差距是市占率不够高,生态还不如 X86 ,不过感谢 Apple 现在支持 ARM 的软件越来越多了,现代芯片行业最值钱的就是生态,而指令集只是生态的边界而已。
    这也是为啥 intel 到现在也放不下已经成包袱的 X86 了。
    jameskongawork
        59
    jameskongawork  
       2023-09-06 00:24:47 +08:00 via Android
    @jameskongawork 另外多说一句,关于硬盘和外设链接,目前所谓的 arm 消费片子当服务器用的所谓 m2 或者是 sata 几乎都是通过内部 IP 转 USB 再转 AMBA 实现的,这是成本使然,所以必然还有的是延时和带宽的限制
    jameskongawork
        60
    jameskongawork  
       2023-09-06 00:32:06 +08:00 via Android
    @jameskongawork 另外多线程多核操作估计也差目前主流 x86 很远,因为内部的 noc 往往都是 flexnet 这样的设计加个 CCI 。所以这样的话核间的 exchange 代价就比较高,如果做比较强 corelated 的多核操作性能就比不过。
    msg7086
        61
    msg7086  
       2023-09-06 06:23:16 +08:00
    @Donahue 计算密集型项目会大量用到汇编指令集。用 C 然后让编译器去优化,那就不知道慢到哪里去了。
    你有兴趣的话可以试试看跑 x265 ,用--no-asm 路径跑(纯 C+编译器优化),看看比 AVX2 要慢多少。

    如果只是跑跑 php python 之类的,不追求性能的,那当然怎么搞都无所谓了。但是企业环境下对指令集的依赖是很大的。适配 NEON 是硬性成本,不适配就是性能狂掉。
    wm5d8b
        62
    wm5d8b  
       2023-09-06 08:08:43 +08:00 via Android
    你有 DTS ,就没有固件数限制了,只能说大牛帮忙做好的现成固件少
    tairan2006
        63
    tairan2006  
       2023-09-06 09:35:46 +08:00
    arm 各版本之间兼容性比较差,生态也没跟上,目前只能用在有限的场合。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3461 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:56 · PVG 18:56 · LAX 02:56 · JFK 05:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.