先回顾下基础。
首先, 一台设备的内存容量, 取决于:
- CPU/ 北桥数量
- CPU/ 北桥对应的内存控制器数量
- 每个内存控制器的通道数量
- 每个通道下允许的 DIMM 数量
- DIMM 下的 Rank 数量
- 每个 Rank 下的 chip 数量
- Chip 下的 Bank 数量
- Bank 内的 Row Column 数量
因此, 除了三通道之外, 理论上一条通道上三条内存, 或者一条通道上一条 2R 一条 1R 的同颗粒内存, 外加非对称通道的情况, 都可以整出非二次幂的容量。
这点看看内存厂商提供了多少 48/96gb 颗粒就知道了, 前者就是单颗 6GB, 后者是 12GB。
从 A12X 开始回顾. 由于内存频率不断提升, 对走线和散热的要求其实是在不断提高的. 如果 SoC 要跨过主板访问内存颗粒, 显然对内存控制器里的 PHY、封装基板还有 PCB 基板的要求都是不断提高的。
这就是为啥 Steam Deck 还有 Intel 12 代 CPU 上不了 LPDDR5 的满血 6400 频率. 其中 ADL 很多人都知道, 如果是普通 PCB 只能支持 5500, 最好的 HDI PCB 才支持 6000 频率。
iPad Pro 当初在 LPDDR4X 时代也遇到这个问题, 因为芯片发热量大了, 而且需要 128bit 宽度, PoP 封装做不了; 而且选择高端 PCB 下外联的方式会增加 PCB 的成本、降低生产良率, 进一步降低元器件密度。
因此到了 A12X, 苹果选择把 LPDDR 颗粒和 SoC 一起封装。
这种封装方式这其实和统一内存不是一个概念, 更不能显着突破原来内存颗粒的延迟和带宽上限; 只是相对来说更省钱、能跑更好的时序, 也能兼顾散热。
毕竟 M1 芯片面积还是大了很多, 又要满足 macOS 较大的内存需求, 而且封装体积还要继续能上 iPad Pro 平台。 因此 M1 的内存颗粒密度可以说显着提升。
那本来 LPDDR4 很多桌面机器的 32GB 都是靠着四颗 32bit 位宽 8GB 颗粒做到的, 手机 12GB PoP 内存用的是 64bit 位宽 12GB; 苹果要做 2x64bit 宽度, 面积还要比原来小, 容量还要突破原来的 6GB, 只能说顶着当时颗粒的密度上限走, 那自然被卡在了 16GB。
到了 M2 时代, LPDDR5 有了更高密度的 DRAM 工艺, 自然能做到更大容量, 只不过在这么小的面积下, 做到 32GB 仍然有一定困难。
进一步说, 还是产品定位问题。
一方面 M2 说到底和 M1 Pro|Max 类似, 本质上属于 M1.5 而非 M1 的彻底换代。
另外一方面 M2 还是用在 MacBook Air 和 13 寸 MBP 上, 这些设备并不是准备像 MBP14/16 那样干超级重的活, 加上 macOS 的 ZRAM(内存压缩)/SWAP(内存页面交换) 策略允许比较激进, 且 M1/M2 能承受比较高的交换 / 压缩率, 自然不会在更大的容量上做文章, 甚至同代提供的内存容量就比 Windows 机型少。