白饭炒白米饭
26-09-18 11:34 微博认证:数码博主

iPhone 18 Pro 1TB QLC 闪存颗粒分析报告来了

今天拿到的这台机器,通过 Device Lab 工具进行分析,存储颗粒是东芝的 QLC_3D_G8_4P_2048,1TB 的容量版本,用的 Apple S6E 控制器,按厂商编码 9849AC037AE6 去反查的话,得到的参数如下:218 层 BiCS8 QLC(4bit)、16KB Page、每 CE 2048Gb、每 die 2048Gb、每 die 4-Plane。

根据参数(每 die 2048Gb)和 1TB 总容量,可以知道这块硬盘颗粒是由 4 片 NAND Die 组成,在 TLC 时代要做成 1TB 的颗粒,需要 8 片 Die,在同容量下 QLC 能做到比 TLC更薄的整盘厚度,在速度这块,有意思的是真机实测下来读写都能达到 3GB/s,明显不是 QLC 的直写速度,合理的解释是苹果依然在 QLC 的颗粒里划出了 SLC Region 来接收这种突发的写入。

因此就有了接下来的分析,通过查看 NAND 管理日志,是能看到苹果的闪存管理可以把存储区域(Band)分别设置成 1bit、3bit 或 4bit 密度来用,这次 iPhone 18 Pro 用的是 QLC 颗粒,只有出厂的坏块标记为了 QLC 的 4bit(当然坏块会做屏蔽处理,不参与使用),其余的存储区域按 3bit + 1bit 混合跑,主体按 3bit(TLC)存数据,少量区域按 1bit(SLC)用,换句话来说的话,就是苹果虽然用了 QLC 颗粒,但没有按 QLC 模式去用,等于把 QLC 当 TLC 去用,损失部分容量,换来更长的擦写寿命和更稳的速度。

这块 QLC 颗粒按满密度(4bit)折算,原始容量约 1224GB,如果全盘按 SLC(1bit)跑,容量只有原来的 1/4(306GB),如果全盘按 TLC(3bit)跑,容量是原来的 3/4(918GB),更别说还要扣 OP 冗余容量,但手机设置里显示的总容量确实是 1TB。

因为苹果的控制器支持独立配置各 Band 的 Cell 密度,可把每个 Band 都当作 SLC/TLC/QLC 来跑,推测苹果是在空间充足的时候,颗粒主体按 3bit TLC 模式跑,在需要高速写入的时候,动态划出 SLC 区域接收突发写入,需要大容量存储冷数据时,又将 Band 切到 QLC 模式存放,也就是说苹果这套闪存管理逻辑核心是按需分配。

但这套方案的最大的短板是满盘状态,一旦存储空间接近存满,可动态调度的 Band 会减少,没有足够的空间划出 SLC 缓存,也就是写入放大的问题也会变得非常严重,这时写入性能会有大幅跳水。

目前实测已经看到 SLC 跟 TLC 的动态切换能力(也就是 oslc 机制,已经有了 479 次转换记录),但 TLC 跟 QLC 自动切换的证据还没有捕获到,验证方法依旧,需要把盘用到 70~80% 占用,抓取系统日志看是否有出现活跃的 4bit 存储区域。

发布于 广东