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

ARM 比 X86 的局限是什么

  •  
  •   Salomea · 235 天前 · 5529 次点击
    这是一个创建于 235 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    happy32199
        16
    happy32199  
       235 天前 via iPhone
    @OceanBreeze 请问你们 arm 服务器 用的哪些型号啊
    ljrdxs
        17
    ljrdxs  
       235 天前
    @superchijinpeng 你发的图好像是 Linux 。似乎不相关。
    XyIsMy
        18
    XyIsMy  
       235 天前
    @OceanBreeze arm 用在 web 服务上稳定么。有没有遇到过问题
    smartruid
        19
    smartruid  
       235 天前
    arm 主打低功耗吧,x86 的生态和性能是优势。看你服务器需求
    cslive
        20
    cslive  
       235 天前   ❤️ 2
    x86 通用,随便刷机,arm 闭源驱动,刷个机费劲
    niantoudeyisi
        21
    niantoudeyisi  
       235 天前 via Android
    感觉是生态
    nothingistrue
        22
    nothingistrue  
       235 天前
    ARM 性能上不去(或者说能效比涨得比频率快),X86 待机功耗下不来。
    OceanBreeze
        23
    OceanBreeze  
       235 天前
    @XyIsMy
    @happy32199 暂时没遇到什么问题。用的是 AWS 上的 arm 机型。
    superchijinpeng
        24
    superchijinpeng  
       235 天前
    @ljrdxs #17 用的是这些发行版
    ljrdxs
        25
    ljrdxs  
       235 天前
    @superchijinpeng 我以为芯片都是国产。看来不是这意思。
    xdeng
        26
    xdeng  
       235 天前
    @ljrdxs 他这里的 CPU 有可能是国产的 Arm 比如华为
    qieqie
        27
    qieqie  
       235 天前
    没有 256bit 以上 SIMD 指令和寄存器,没有硬件层面的 strong memory model
    ljrdxs
        28
    ljrdxs  
       235 天前
    @xdeng 我的最初疑问是,既然 ARM 是公司售卖的产品,就算华为买了造,也不属于“开源可控”吧?
    当然官场上没那么看重技术。
    longbo666
        29
    longbo666  
       235 天前
    @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  
       235 天前 via Android
    软件生态支持不够。比如多媒体硬件编解码,x86 的基本上 vaapi 直接用,arm 基本上除非是 Android 否则就只能 CPU 硬扛
    L4Linux
        31
    L4Linux  
       235 天前
    @cslive 也有支持 UEFI 的,基本都是服务器板子,就是 livecd 少。
    L4Linux
        32
    L4Linux  
       235 天前
    @nothingistrue Nervous-N1 开始就比较强了。
    adoal
        33
    adoal  
       235 天前
    自己拿来当“服务器”角色玩的盒子就别想那么多了。
    人家的 ARM System Ready 服务器是生产环境的正规服务器。
    jian0jian
        34
    jian0jian  
       235 天前
    软件生态, 有些软件只有 x86 版本,这就没办法了。 不过大部分 arm 没问题。
    yinmin
        35
    yinmin  
       235 天前
    现在,mac 的 m1/m2 芯片的加持下,几乎常用的 linux 软件都支持 arm64 了,不支持 arm64 的软件不是流行软件了。
    nevin47
        36
    nevin47  
       235 天前
    @ljrdxs #28 ARM 只是授权指令集,不负责成片销售,指令集只是芯片设计的基础而不是全部
    xdeng
        37
    xdeng  
       235 天前
    @ljrdxs 楼上说的对
    webcape233
        38
    webcape233  
       235 天前 via iPhone
    科学计算 ,行业软件,arm 可用性还约等于无
    ljrdxs
        39
    ljrdxs  
       235 天前
    @nevin47
    @xdeng 这下不止官场领导,我也看不懂了……
    Donahue
        40
    Donahue  
       235 天前
    自己做家用服务器用其实没什么区别

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

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

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

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