它从来都不是一块存储——eMMC背后的另一层世界

它从来都不是一块存储——eMMC背后的另一层世界

什么是 eMMC

很久以前,人们对“存储”这件事,有一个简单到不能再简单的理解。
他们以为,数据就像写在石板上。
你写上去,它就在那里;你读出来,它就回来。
不吵不闹,不思不想。
但后来,人们发现,这块石板,其实会动。

eMMC,全名叫:
Embedded MultiMediaCard

听起来有点唬人,其实说白了:
👉 就是把“存储芯片”和“控制器”封装在一起的一种设备。
你可以把它想象成:

+----------------------+

| Flash Memory (NAND)  |

+----------------------+

| Controller (FTL)     |

+----------------------+
  • 上面一层,是用来存数据的 NAND Flash;
  • 下面一层,是一个小小的“脑子”。
EMMC

问题,就出在这个“脑子”上。

因为 NAND 这种东西,本身很麻烦:

  • 不能直接覆盖写
  • 擦除粒度很大
  • 每个块寿命有限

于是,人们不得不在它前面,加了一个控制器。
这个控制器负责:

  • 把逻辑地址映射到物理地址
  • 把随机写变成顺序写
  • 把磨损均匀分摊
  • 把坏块藏起来

这些能力,被统一称为:
👉 FTL(Flash Translation Layer)


BKOPS

到这里,一切看起来都很合理。
但真正的问题也恰恰在这里。

因为从这一刻开始:
eMMC 不再是“存储”,而是“设备”。

它开始:

  • 自己搬数据(Garbage Collection)
  • 自己调度擦写(Wear Leveling)
  • 自己修复错误
  • 自己决定什么时候忙、什么时候闲

在规范里,这一切被一个名字统称:
👉 BKOPS(Background Operations)
也就是——后台操作,用来保证性能和寿命。


于是,一个微妙的变化发生了

上层系统仍然以为:
我在写一块“死的存储”。

但实际上,它面对的,却是:
一台“活着的机器”。

这台机器会思考,会决策,也会——在你最不希望的时候,做它认为“必须做”的事情。
比如:
你正在启动系统,
👉它却突然去做垃圾回收。
你正在写一帧关键数据,
👉它却开始搬运旧数据。
你以为你在控制它。
👉其实,它一直在控制自己。

从那一天开始,这个误会,埋下了伏笔。
直到有一天,他们发现:
数据确实能写进去,但系统却越来越慢,设备却越来越短命。


写放大(Write Amplification)

后来,他们发现了一个问题:
文件系统认为“空闲”的块,在 eMMC 看来,依然是“已使用”。
为了写新数据,eMMC不得不“搬家”,再擦除。
于是写一次,变成写两次。

这个现象,有个好听的名字,叫:
写放大(Write Amplification)
听起来很优雅,实际上很残酷。


乱子从什么时候开始的?

当这台机器开始“自己干活”时,问题就来了。
它会在你不经意的时候:

  • 突然变慢(因为在做GC)
  • 卡顿(因为在搬数据)
  • 发热(因为在内部重排)

而你,一无所知。
就像一辆车:
你踩下油门,它却突然去“自检发动机”。

于是,工程师们做了一个决定。
这是一个转折点。


他们造了一层“管理者”

他们说:
既然eMMC是个会思考的机器,那我们就必须有人管它。

于是,这个角色诞生了:

+-----------------------------+

| Emmc Maintenance Manager    |

|-----------------------------|

| - health monitor            |

| - BKOPS scheduler           |

| - refresh controller        |

| - statistics collector      |

| - vendor abstraction        |

+-------------+---------------+

              |
              v

        eMMC driver 


这个东西,不写数据,不存文件。
它只做一件事:
👉 管理eMMC的“人生”


五个人,各司其职

这个“管理者”,其实是五个人。
他们各有分工。

1️. health monitor —— 看病的人

他不治病,只看病。
他关心这些:

  • 设备还能活多久
  • 坏块有没有变多
  • 写入是否过量

就像医生看体检报告。
他不参与工作,但他决定你能干多久。


2️. BKOPS scheduler —— 管时间的人

这是最关键的一位。
因为 BKOPS 这件事,本来是 eMMC 自己想做就做。
但现在:
不行,你得听我安排。
于是它说:

  • 系统空闲 → 做 BKOPS
  • 启动阶段 → 不准动
  • ignition off → 可以狠狠干

后台操作可以在空闲时间执行,调度的目标是避免系统卡顿。

于是,这个人存在的意义是:
👉 让“后台工作”,不再影响“前台体验”


3️. refresh controller —— 管记忆的人

NAND有个问题:
久不读写,数据会慢慢“遗忘”。
于是就需要 refresh:

  • 读出来
  • 再写一遍

就像反复默写单词。
他就是那个让记忆不遗忘的人。


4️. statistics collector —— 记账的人

这个人很低调,却最重要。
他记录:

  • 写了多少数据
  • 擦了多少次
  • BKOPS执行了多少

这些数据,会被:

  • 用来分析寿命
  • 用来判断异常
  • 用来做OTA策略

如果没有他,你只能“等死”。


5️. vendor abstraction —— 翻译的人

每个厂商的eMMC,都有自己的“方言”。
比如:

  • 指令不同
  • 状态不同
  • 能力不同

这个人,把他们统一成一种语言。
让上层不用关心:
👉 是三星,还是西数,还是长江存储。


他们之间的工作关系

你可以这样想:

应用:我只想写文件

          ↓

文件系统:我帮你分块

          ↓

Maintenance Manager:放心,我保证它不崩

          ↓

eMMC:我会自己活下去

这就是层次。


真正的变化(很重要)


以前:

eMMC = 存储

现在:

eMMC = 设备 + 行为 + 生命周期 + 风险

于是系统必须升级:

Storage → Storage + Management
编辑于 2026-05-25 · 著作权归作者所有
相关文章
近期内存条价格算回调了吗?你们以往会拿来升级什么设备?我的同学看到内存条涨价后说“现在电脑内存条涨价就是饥饿营销,不买立省100%……”怎么看内存条涨价?近期内存条价格算回调了吗?你们以往会拿来升级什么设备?目前DDR5内存哪个性价比、频率、读写、性能最高,时序最低?2025年买手机!成存储难民,从24GB+1TB到"加钱才能活"的血泪史目前DDR5内存哪个性价比、频率、读写、性能最高,时序最低?如何看待一些人痛骂华为手机,却又鼓吹同样国产的长鑫内存?SD卡上面的标识你认识几个?近期内存条价格算回调了吗?你们以往会拿来升级什么设备?近期内存条价格算回调了吗?你们以往会拿来升级什么设备?我的同学看到内存条涨价后说“现在电脑内存条涨价就是饥饿营销,不买立省100%……”怎么看内存条涨价?我的同学看到内存条涨价后说“现在电脑内存条涨价就是饥饿营销,不买立省100%……”怎么看内存条涨价?EMMC与NAND的区别?DDR4 内存的性价比到底怎么样?我的同学看到内存条涨价后说“现在电脑内存条涨价就是饥饿营销,不买立省100%……”怎么看内存条涨价?现在的内存卡为什么这么贵?2026年涨价真相:不是商家炒,是产业链被改写了我的同学看到内存条涨价后说“现在电脑内存条涨价就是饥饿营销,不买立省100%……”怎么看内存条涨价?为什么你的存储卡老是坏?涨价风刮到存储卡 但我不慌:6款高速存储卡简单聊存储卡涨疯了!飙到买不起了?