eMMC 是 Flash Memory 的一类,在详细介绍 eMMC 之前,先简单介绍一下 Flash Memory。

Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。

+

1. Flash Memory 的主要特性

与传统的硬盘存储器相比,Flash Memory 具有质量轻、能耗低、体积小、抗震能力强等的优点,但也有不少局限性,主要如下:

  1. 需要先擦除再写入
    Flash Memory 写入数据时有一定的限制。它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。

  2. 块擦除次数有限
    Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将无法可靠存储数据,成为坏块。
    为了最大化的延长 Flash Memory 的寿命,在软件上需要做擦写均衡(Wear Leveling),通过分散写入、动态映射等手段均衡使用各个数据块。同时,软件还需要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。(注:除了擦写导致的坏块外,Flash Memory 在生产过程也会产生坏块,即固有坏块。)

  3. 读写干扰
    由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常。这种异常可以通过重新擦除来恢复。Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。

  4. 电荷泄漏
    存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误。不过这个时间比较长,一般十年左右。此种异常是非永久性的,重新擦除可以恢复。

2. NOR Flash 和 NAND Flash

根据硬件上存储原理的不同,Flash Memory 主要可以分为 NOR Flash 和 NAND Flash 两类。 主要的差异如下所示:

  • NAND Flash 读取速度与 NOR Flash 相近,根据接口的不同有所差异;
  • NAND Flash 的写入速度比 NOR Flash 快很多;
  • NAND Flash 的擦除速度比 NOR Flash 快很多;
  • NAND Flash 最大擦次数比 NOR Flash 多;
  • NOR Flash 支持片上执行,可以在上面直接运行代码;
  • NOR Flash 软件驱动比 NAND Flash 简单;
  • NOR Flash 可以随机按字节读取数据,NAND Flash 需要按块进行读取。
  • 大容量下 NAND Flash 比 NOR Flash 成本要低很多,体积也更小;

(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。)

2.1 NOR Flash

NOR Flash 根据与 CPU 端接口的不同,可以分为 Parallel NOR Flash 和 Serial NOR Flash 两类。
Parallel NOR Flash 可以接入到 Host 的 SRAM/DRAM Controller 上,所存储的内容可以直接映射到 CPU 地址空间,不需要拷贝到 RAM 中即可被 CPU 访问,因而支持片上执行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通过 SPI 接口与 Host 连接。

图片: Parallel NOR Flash 与 Serial NOR Flash

鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。

更多 NOR Flash 的相关细节,请参考 NOR Flash 章节。

2.2 NAND Flash

NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:

图片:NAND Flash Interface

NAND Flash 根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。

NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示 0 和 1 两个状态,即 1 个比特。在 MLC 中,存储单元的电压则被分为 4 个等级,分别表示 00 01 10 11 四个状态,即 2 个比特位。同理,在 TLC 中,存储单元的电压被分为 8 个等级,存储 3 个比特信息。

图片: SLC、MLC 与 TLC

NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。Table 1 中,给出了特定工艺和技术水平下的成本和寿命数据。

Table 1

  SLC MLC TLC
制造成本 30-35 美元 / 32GB 17 美元 / 32GB 9-12 美元 / 32GB
擦写次数 10万次或更高 1万次或更高 5000次甚至更高
存储单元 1 bit / cell 2 bits / cell 3 bits / cell

(注:以上数据来源于互联网,仅供参考)

相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash。PC 中的固态硬盘中也是使用 NAND Flash。

更多 NAND Flash 的相关细节,请参考 NAND Flash 章节。

3. Raw Flash 和 Managed Flash

由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。

在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。

图片: Raw Flash 和 Managed Flash

Raw Flash
在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。
通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。

Managed Flash
Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供标准化的接口,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。
eMMC、SD Card、UFS、U 盘等产品是属于 Managed Flash 这一类。

MTK 驱动 -----(6) eMMC 原理 1 :Flash Memory 简介相关推荐

  1. MTK 驱动---(8)emmc 介绍

    eMMC 是 embedded MultiMediaCard 的简称.MultiMediaCard,即 MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访 ...

  2. MTK 驱动(62)---eMMC RPMB分区介绍

    eMMC RPMB分区介绍 Partitions Overview eMMC标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 一般情况下,Bo ...

  3. MTK 驱动---(9)emmc 分区管理

    1. Partitions Overview eMMC 标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 1.1 概述 一般情况下,Boot ...

  4. MTK 驱动(78)----MTK 平台查看eMMC和DDR的工作频率

    eMMC和DDR的工作clk确认 MTK 平台查看eMMC和DDR的工作频率 eMMC: adb shell cat /sys/kernel/debug/mmc0/clock DDR: adb she ...

  5. 一文彻底搞清Linux中块设备驱动的深层次原理和编写方法

    [摘要]本文主要讲述了在Linux环境下的块设备驱动的常见数据结构和内核接口,并以一个实际例子讲述了块设备驱动的编写方法. 1.前提知识 一个块驱动提供对块存储设备(比如 SD 卡.EMMC.NAND ...

  6. nand flash和nor flash区别_从闪存的发展历史看,eMMC与NAND Flash有什么区别与联系?...

    如今,eMMC已发展成为当红的便携移动产品解决方案之一,之前宏旺半导体有说过eMMC的工作原理,今天跟大家聊聊eMMC与NAND Flash有什么区别和联系. 首先我们要认识Flash,Flash分为 ...

  7. EMMC与NAND FLASH核心对比

    通俗的来说,eMMC=NAND闪存+闪存控制芯片+标准接口封装.本文大致做下边几个小结: (1)MMC与Host之间的连接 连接由下图可见 (2)eMMC和NAND Flash与Host的连接比较 N ...

  8. 【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结

    本次笔记内容: P47 计算机组成原理(47) P48 计算机组成原理(48) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  9. emmc、Nand flash、Nor flash之间的区别

    一.定义及区别 emmc:全称为embeded MultiMedia Card,是一种嵌入式非易失性存储器系统,由Nand flash和Nand flash控制器组成,以BGA方式封装在一款chip上 ...

最新文章

  1. python threading 多线程
  2. 百度港股开盘持续下跌,网络营销外包下百度二次上市遇冷
  3. educational round 前缀和_总结分析634个以re为前缀的单词得出了re为前缀组合单词意思规律
  4. 使用CSS完美实现垂直居中的方法
  5. elasticsearch+kibana
  6. rm: cannot remove directory `misc': Device or resource busy
  7. 《.NET设计规范 约定、惯用法与模式》读书笔记
  8. SQL Server 2008安装配置说明书+简单使用 亲测可用
  9. java导出jar带第三方库_在.jar文件中导出java库
  10. Description Resource Path Location Type Java compiler level does not match the version of the insta
  11. Android源码学习之如何使用eclipse+NDK
  12. 拓端tecdat|Python之LDA主题模型算法应用
  13. c#机器人聊天软件_3.C#面向对象基础聊天机器人
  14. 大数据产品价值主张_从「商业模式画布」看产品的价值主张和用户需求
  15. 斯蒂文斯理工学院计算机科学硕士,2020年斯蒂文斯理工学院排名TFE Times美国最佳计算机科学硕士专业排名第80...
  16. 计算机桌面出现输入框,Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法...
  17. 三、向量的加减乘除法
  18. Ubuntu安装NS3出现./build.py失败解决
  19. 节气丨大雪至,人间至此雪盛时,岁暮天寒,顺问冬安
  20. 以软件测试的角度测试一支笔,微软经典面试题:如何测试一支笔?

热门文章

  1. c语言读入图片matlab,将数据从matlab文件读入C语言
  2. 思科模拟器企业网站服务器配置,思科模拟器服务器配置
  3. python静态代码检查_想要开发一个供 Python 使用的静态类型检查项目
  4. Spring Boot-面试题
  5. 腾讯的全球地址数据文件及Xml->Json的处理
  6. 【题解】 P4127 [AHOI2009]同类分布
  7. HP LasterJet 3050驱动安装技巧,面向win7,8,8.1,10
  8. 作用于HTML元素的Vue.js指令
  9. python3里面的图片处理库 pillow
  10. .NetCore中EFCore的使用整理