ARM 比 X86 的局限是什么 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Salomea
V2EX    问与答

ARM 比 X86 的局限是什么

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

    当服务器用,很多人推荐 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 服务上稳定么。有没有遇到过问题
    suitts
        19
    suitts  
       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     Solana     2625 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:14 PVG 21:14 LAX 06:14 JFK 09:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86