NAND Flash
概述
SFC 通过单线或四线接口访问片外 NAND Flash,支持 CPU FIFO 与 DMA 数据通路,提供 Flash 读写和文件系统访问能力。
性能概览
NAND:SFC 230 MHz、NAND SCLK 115 MHz 下,四线 DMA 32 KiB 顺序读取达到 18.86 MB/s,Cache burst 读取达到 39.67 MB/s,写入达到 5.30 MB/s。
已在 SFC dev clk 100、150、200、230 MHz 四个频点完成读写及 YAFFS 文件系统验证。
读写性能
测试器件为 FS35SQA001G,容量 128 MiB,页大小 2048 B,擦除块大小 128 KiB。以下性能表的 4/8/16/32 KiB 为每轮累计数据档位;每次页读或 PROGRAM LOAD 的数据事务固定为 2048 B。表中均取 32 KiB 数据点的结果。
顺序读取 seq
| SFC dev clk | NAND SCLK | 单线 CPU FIFO | 单线 DMA | 四线 CPU FIFO | 四线 DMA |
|---|---|---|---|---|---|
| 100 MHz | 50 MHz | 5.14 MB/s | 5.14 MB/s | 13.43 MB/s | 13.41 MB/s |
| 150 MHz | 75 MHz | 7.06 MB/s | 7.06 MB/s | 13.96 MB/s | 16.26 MB/s |
| 200 MHz | 100 MHz | 8.77 MB/s | 8.77 MB/s | 14.68 MB/s | 18.52 MB/s |
| 230 MHz | 115 MHz | 9.51 MB/s | 9.51 MB/s | 13.25 MB/s | 18.86 MB/s |
seq 每页先执行 0x13 并等待 OIP,再读取 Cache,因此包含页读时间、命令、地址和轮询开销。230 MHz 下四线顺序读达到 18.86 MB/s。
Cache burst 读取
| SFC dev clk | NAND SCLK | 单线 CPU FIFO | 单线 DMA | 四线 CPU FIFO | 四线 DMA |
|---|---|---|---|---|---|
| 100 MHz | 50 MHz | 5.98 MB/s | 5.99 MB/s | 21.25 MB/s | 21.29 MB/s |
| 150 MHz | 75 MHz | 8.76 MB/s | 8.77 MB/s | 22.68 MB/s | 29.47 MB/s |
| 200 MHz | 100 MHz | 11.50 MB/s | 11.52 MB/s | 24.40 MB/s | 37.28 MB/s |
| 230 MHz | 115 MHz | 12.90 MB/s | 12.92 MB/s | 21.21 MB/s | 39.67 MB/s |
burst 在页数据已进入 Cache 后连续执行 Cache 读,计时不包含页读时间,更接近纯数据总线能力,不能与 seq 读速直接等同。四线 burst CPU FIFO 读取在约 21~24 MB/s 饱和,230 MHz 高吞吐读取应优先使用 DMA。
写入
| SFC dev clk | NAND SCLK | 单线 CPU FIFO | 单线 DMA | 四线 CPU FIFO | 四线 DMA |
|---|---|---|---|---|---|
| 100 MHz | 50 MHz | 2.93 MB/s | 2.93 MB/s | 4.58 MB/s | 4.58 MB/s |
| 150 MHz | 75 MHz | 3.48 MB/s | 3.48 MB/s | 4.76 MB/s | 4.91 MB/s |
| 200 MHz | 100 MHz | 3.96 MB/s | 3.98 MB/s | 5.08 MB/s | 5.20 MB/s |
| 230 MHz | 115 MHz | 4.11 MB/s | 4.10 MB/s | 4.94 MB/s | 5.30 MB/s |
写入计时包含页数据装载、0x10 执行、OIP 轮询与状态读取,擦除和回读比较不计时。230 MHz 下 tPROG 为 303.71 µs/页,远高于数据装载时间,因此写吞吐随 SFC 时钟提升的幅度明显小于读取。
文件系统读写
使用 YAFFS,对同一个 32 KiB 文件连续执行 8 轮写读,速率不计格式化、挂载、坏块体检与卸载耗时。
| SFC dev clk | NAND SCLK | 读取 | 写入 | 数据比较 |
|---|---|---|---|---|
| 100 MHz | 50 MHz | 10.43 MB/s | 1.96 MB/s | 通过 |
| 150 MHz | 75 MHz | 12.22 MB/s | 2.17 MB/s | 通过 |
| 200 MHz | 100 MHz | 13.71 MB/s | 2.33 MB/s | 通过 |
| 230 MHz | 115 MHz | 13.78 MB/s | 2.37 MB/s | 通过 |
文件系统连续读包含页读、YAFFS 元数据访问、页到 chunk 映射与软件搬运,因此低于同频 Cache burst 读速。小文件覆盖写还包含 open/truncate、chunk 分配、元数据更新和 close 刷新,不能与裸页编程速率直接等同。
工作点与频率边界
以下为离散频点的验证结果。更高频点仅用于边界评估,单次通过不能替代稳定工作点。
| SFC dev clk | 对应 SCLK | 状态 | 结论 |
|---|---|---|---|
| 100/150/200/230 MHz | 50/75/100/115 MHz | 四个频点读写通过 | 230 MHz、SCLK 115 MHz、采样延时 8 为当前最高验证点,量产前需补充重复上电和长时间压力验证。 |
| 250/260/266 MHz | 125/130/133 MHz | 首次通过,采样窗仅 2 档;270 MHz 后复跑失败 | 稳定性不足,不作为有效工作频率,采用 DMA 也不改变该结论。 |
| 270 MHz | 135 MHz | 未建立有效采样窗口 | 未进入性能测试,不可用于产品配置。 |
230 MHz 的采样窗已收窄到 2 档,量产前仍需补充重复上电和长时间压力验证。
测试条件
| 项目 | 条件 |
|---|---|
| 器件与容量 | FS35SQA001G,128 MiB |
| 页 / 擦除块 | 2048 B / 128 KiB |
| 测试平台 | G32S107_evb |
| 已验证频点 | SFC 100/150/200/230 MHz |
| 采样延时 | 依次为 5/4/9/8 |
| 时钟关系 | NAND SCLK = SFC dev clk / 2 |
| 数据规模 | 4/8/16/32 KiB 数据档,每点累计 256 KiB;单笔事务 2048 B |
| 读数据校验 | 每页 Cache 读后比较,比较时间不计入带宽 |
| 写数据口径 | 擦除不计时;包含数据装载、执行、OIP 轮询与状态读取 |
| 文件系统 | YAFFS,32 KiB 文件连续 8 轮 |
| 速率单位 | MB/s,十进制,1 MB = 1,000,000 B |
模块详解:SFC 功能与架构 · NAND 配置与接口。