作者 s25g5d4 (function(){})()
標題 Re: [請益] 同家NAS 為何出ARM架構與X86架構?
時間 Thu Feb 29 20:53:11 2024


TL;DR
1. 硬體成本一定有差,苦命工程師只能想辦法支援
2. 軟體開發成本只有前期比較高,後面可以一直沿用
3. 況且很多都是開源的東西,不是單一廠商在做
4. 軟體開發非常講究可移植性,你認為的跨平台問題都不是問題


--


硬體成本上絕對是有差才會有廠商做不同架構
不然開發成本一定比維護單一架構來的大
我不是做硬體的所以無法回答具體來說差多少

除了 CPU 晶片成本以外,還要考慮週邊晶片成本
ARM 晶片大多做成 SoC,它需要的晶片就比較少
x86 不是不能做,例如 AMD Ryzen 其實已經算是 SoC,但過去就比較少
所以廠商前面做好 ARM 支援,之後可以繼續用

再來 ARM 晶片比較好客製化,在嵌入式系統裡面這是非常重要的一點
例如要塞幾個核心、要做功耗大還是功耗小的架構
再諸如內建 NIC、USB、Storage (eMMC, SATA) 等 peripheral interface
以及各種 DSP、I2C、SPI、PCIE
所以它比較好做出"剛剛好"的規格,彈性比 x86 大
而這跟架構授權有關係,x86 你要客製化只能跟 Intel/AMD 談
ARM 就比較簡單,找個有能力有買授權的豬屎屋兜一兜就好
當然很少廠商真的去開案啦,一般都是買現成的方案
例如 RTK、MTK、BRCM、QCOM、安霸之類的
但一樣,ARM 市場就是比 x86 更多樣化

還有功耗,x86 功耗就是高,一樣 idle 就是 2W vs 10W (估計值),全負載差更多
當然 x86 可以提供更高的效能沒錯,所以中高階產品都是 x86 天下
那 ARM 效能就差嗎?倒也不是,Marvell 就有效能超高的 ARM 晶片可以買
但成本有沒有比 x86 低這就不好說
而且只要是高效能,功耗就討不到多少便宜

不要小看功耗,NAS/路由器等等嵌入式系統設計上來說是 24x7 運作的
全年累積下來電費很可觀外,功耗也會決定散熱設計
高效能散熱除了額外的成本,噪音控制對消費級產品也是重要的一環

--

身為碼農還是要談一下軟體開發成本
首先原 po 的論述是「多個架構」的開發成本
但是沒有考慮「特定單一架構」的開發成本
舉例來說 ARM 的 boot loader 就遠比 x86 簡單
以及嵌入式系統很多根本不支援 ACPI
所以很多產品下指令關機卻不會自動斷電,只能提示使用者可以放心拔電源
再來這些架構的開發成本實際上也不會是系統廠來付
IC 原廠以及開源軟體、開源作業系統都幫你做好了
linux on ARM 早已十分成熟,除了作業系統外,各種軟體也早就登陸 ARM
例如 nginx (網頁伺服器)、mdadm (軟體 RAID) 都沒有問題

但還是有很多雷點就是了
像是各家 ARM 有各自的 SDK,SDK 綁 kernel version、綁 compiler
平常沒事就沒事,有事就會很頭痛
像是 BRCM 萬年 linux 2.6、5.2,甚至還有魔改 compiler 的 (為了 ABI 相容)
但這都還是 OS 的範疇,跟 application (幾乎)無關
一般公司會有專屬 FW team 處理這塊

application,也就是消費者實際上會碰到的 UI 介面與各式存取功能
這塊也早已支援跨平台已久
除了傳統 C/C++ multi-arch compiler 外,現今流行的
high-level programming language 也都有原生支援跨平台
例如 golang 原生支援多架構編譯,rust 透過 LLVM 跨平台編譯
python、nodejs 等 script 語言只要 runtime 支援就有

更棒的是這些跨平台都不用軟體商自己來,幾乎都是開源軟體不用錢
所以從 OS 之上之後的東西都幾乎不存在架構差異
很少數情況下會遇到跟架構有關的問題,例如最常見的是效能最佳化
不同平台可能會有不同做法,但遇到機會不大
再說了消費級 NAS 效能跟屎一樣,還不是很多人買 (?)

真有效能需求,x86 產品就在那邊等你買
甚至要談效能最佳化,一般也是 compiler 或 runtime 的事
幾乎輪不到 application 來做

這邊要講一件事情,不是說系統廠就都拿別人的不用錢
其實底層的東西各家還是會養人開發,然後貢獻 upstream
這是集合眾人智慧,全人類智慧結晶的開源社群
講的很好聽但有時候各家廠商還是會各懷鬼胎就是了

--

最後,其實軟體業很講求 abstraction 與 encapsulation
這邊談的不是 OOP 裡的四原則,而是更上層的抽象概念
抽象與封裝具有的特性我拿三個出來談:安全性、易用性以及可移植性
舉例來, VM—這邊談的不是虛擬機,而是虛擬記憶體 virtual memory
它讓作業系統進入多工處理時代
不再讓軟體任意存取記憶體把作業系統打掛 (安全性)
才能開啟後面的分時多工處理,讓作業系統管理資源
相對的 user space software 也不再需要自行管理實體記憶體 (易用性)

再來高階程式語言本身就是對機器語言的封裝
例如工程師寫 a*b+c 他不需要知道在 x86 與 ARM 機器上要怎麼下組合語言
所以換個平台只要編譯器支援都可以跑,這就是可移植性

這些是 1970 年代(甚至更早)就開始有的概念
別忘了 Linux 與 C 開始的年代 x86 還不是主流
當年開發的平台不是 x86 也不是 ARM
所以跨平台支援本就不是新鮮事

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.234.248 (臺灣)
※ 作者: s25g5d4 2024-02-29 20:53:11
※ 文章代碼(AID): #1bu7uwCU (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1709211194.A.31E.html
※ 同主題文章:
Re: [請益] 同家NAS 為何出ARM架構與X86架構?
02-29 20:53 s25g5d4
kikilalagirl: 全年累積下來電費很可觀 +11F 220.143.192.71 台灣 02/29 20:58
jyhfang: ARM的花樣真的很多 啥鬼都有2F 220.134.41.251 台灣 02/29 20:59
kuroshizu21: 好文, 推一下3F 114.37.221.210 台灣 02/29 21:28
saito2190: 其實cross compile已經司空見慣了
除非你今天要編譯上古架構
例如HPPA PARISC...4F 42.79.122.147 台灣 02/29 21:32
labbat: 軟體編譯就外包給便宜的印度阿山完成7F 180.177.2.153 台灣 02/29 21:35
roseritter: 推8F 122.117.187.82 台灣 02/29 21:42
birdy590: 嵌入式系統 cross compile 才是常態
最終的系統裡很可能連 compiler 都沒有9F 115.43.53.170 台灣 02/29 21:44
s25g5d4: 結果我在 ARM mac 上面開發,還真的不是cross compile XD11F 49.216.234.248 台灣 02/29 21:56
Cubelia: Rockchip就常被說支援不佳,空有好硬體https://youtu.be/aXlcNVKK-7Q
一些Pi CM替代品review13F 1.173.160.5 台灣 02/29 22:00
god145145: 我以為高手都用python 慢就慢能動就好16F 36.234.38.106 台灣 02/29 22:14
IhateOGC: 開發人力成本等於0反正工程師是責任制看誰比較倒楣接到沒利潤又麻煩的U17F 118.231.129.65 台灣 02/29 22:15
Bencrie: 最後那個是說 UNIX 吧,Linux 一開始就是i386 上面的東西19F 114.34.235.107 台灣 02/29 22:56
s25g5d4: 對欸 忘了21F 49.216.234.248 台灣 02/29 23:01
birdy590: 對岸的便宜 ARM SOC 沒有哪家支援好的Rockchip 純用它的 CPU 可以, 需要顯示或是播影片 還是乖乖用樹莓派吧
廠商大部份資源都放在 Android, 開發成APP 是另一條路... Linux 會用到火大22F 115.43.53.170 台灣 02/29 23:28
leolarrel: 我以為ptt這邊滿滿年薪300的RD, 樓主的解釋沒有必要,結果看來是我錯了27F 123.51.165.127 台灣 03/01 09:56
fmp1234: 長姿勢29F 37.19.205.234 日本 03/01 12:01
laeva75: nas用arm也能做到高效能的話為何還要另外搞x86呢?30F 42.76.62.221 台灣 03/01 12:30
oppoR20: 成本啊 你高效能arm成本不一定比x86便宜而且高效能有些宣傳點arm沒得用 像是虛擬機 大部分arm處理器的都沒辦法用32F 123.195.146.51 台灣 03/01 12:34
denny0411: 推35F 49.217.177.143 台灣 03/01 13:24
horb: 因為雞蛋不能放在一個籃子上36F 42.72.207.19 台灣 03/01 13:24

--
作者 s25g5d4 的最新發文:
點此顯示更多發文記錄