Nand Flash的同步、异步、ONFI、Toggle
1. SDR和DDR
- SDR(Single Data Rate),写读数据使用上升沿或下降沿来触发。因为只用上升沿或下降沿,对信号准确性要求较低。
- DDR(Double Data Rate),写数据时通过MCU来控制DQS信号跳变沿来触发(即上升沿和下降沿均触发),所以对信号的准确性要求较高,(同步)可以通过增加同步时钟信号来提高信号的准确性,如ONFI2.0时的DDR就是使用此方式。(异步)另外还可以通过差分信号来提高信号准确性,Toggle下的DDR,ONFI3.0/ONFI4.0下的DDR也都支持DQS差分信号来进行DDR操作。
2. Sync和Async
- Sync模式是指Flash操作时需要一个源时钟来对锁存信号进行同步,提高信号采集的准确性。因为另外一个源时钟信号来进行同步,所以对Flash的品质要求较高,如果信号不稳定,很容易导致源时钟信号与锁存信息不对应,导致数据采样不准确。Sync模式的Flash一般支持Async,当品质不达标时,便采用Async模式操作。
- Async,即不需要时钟信号来进行同步,数据通过WEN/REN来锁存。在未使用DDR的时候,Async方式的操作效率是比Sync效率低。因为Sync模式有时钟同步,信号较准确,所以可以提高采样率。Async模式为了提高效率,所以必须采用某种方式提升信号准确性。这 个时候,采用了差分信号,大幅提升了信号的准确性,为此采用了DDR模式采样数据。
3. ONFI和Toggle
- ONFI(Open Nand Flash Interface),由Hynix、Inter、Micron、Phison、Sony、Spansion于2006年共同创建的一个Nand Flash的接口标准,并于当年发布了ONFI1.0标准,支持SDR。ONFI2.0时增加NV-DDR,支持DDR操作,不过是使用同步时钟来控制的。ONFI3.0时,增加NV-DDR2,ONFI4.0时增加了NV-DDR3。NV-DDR2和NV-DDR3都是支持DQS差分信号而不用同步时钟的。并且ONFI接口都是同步向前兼容的。但是接口间的转换只支持如下几种:(详见ONFI Spec)
• SDR to NV-DDR
• SDR to NV-DDR2
• NV-DDR to SDR
• NV-DDR2 to SDR - Toggle,是Samsung和Toshiba以DDR为基础制定的Flash接口标准,是为了对抗ONFI的标准。Toggle1.0对应DDR1,Toggle2.0对应DDR2。Toggle接口的Flash一般也支持切换到Legacy接口(即SDR,和ONFI1.0是相同的)。Toggle接口Flash一般启动时是Legacy Mode,需要设置才能进入Toggle Mode(DDR1/DDR2),同样在Toggle模式下也可以设置命令序列进入Legacy Mode(SDR)。
- 除了ONFI2.0时的NV-DDR1是需要同步时钟外,其他接口下都是Async模式。所以我们常说从DDR模式切换到Async模式是不太准确的说法。应该说切换到Legacy Async、Traditinal Async或是SDR模式。
ONFI接口标准
ONFI(Open NAND Flash Interface)标准是由英特尔,镁光,海力士,台湾群联电子,SanDisk, 索尼,飞索半导体为首宣布统一制定的连接NAND闪存和控制芯片的接口标准,当初制定ONFI标准的主要目的是统一当时混乱的闪存标准。
2006年,随着手机、MP3播放器、U盘的需求量逐渐增大,以及开始步入消费市场的SSD,市场对NAND闪存的需求也增加不少,而当时各个闪存制造厂所用的设计标准各有不同,这样导致闪存控制器厂商和下游产品制造厂在制作产品时碰到各种麻烦,业界迫切需求一个统一的标准,这就是ONFI的诞生背景。
ONFI 1.0制定于2006年12月,内容主要是制定闪存的物理接口、封装、工作机制、控制指令、寄存器等规范,增加对ECC的支持,传输带宽从传统的Legacy接口的40MB/s提升到50MB/s,性能提升幅度不大,不过其主要目的还是统一闪存接口规范,减轻产品厂商的开发压力。
ONFI 2.0标准诞生于2008年2月,2.0标准将带宽速度提高到133MB/s以满足高速设备对闪存性能的需求,在该版本中,主要是通过两项技术来提高传输速度。第一项就是在DRAM领域里常用的DDR(Double Data Rate,双倍数据率)信号技术。第二项是使用源同步时钟来精确控制锁存信号,使其能够达到更高的工作频率。
ONFI 2.1标准于2009年1月发布,带宽提升到166MB/s和200MB/s(工作模式不同速度不同),8KB page数据传输延时降低,改良电源管理降低写入操作能耗,加强ECC纠错能力,新增“Small Data Move”与“Change Row Address”指令。
ONFI 2.2发表于2009年10月,增加了LUN(逻辑单元号)重置、增强页编程寄存器的清除和新的ICC测量和规范。LUN重置和页编程寄存器清除提升了拥有多个NAND闪存芯片设备的处理效率,ICC规范则简化了下游厂家的测试程序。
ONFI 2.3在2010年8月的闪存峰会上发布,在2.2标准的基础上加入了EZ-NAND协议。EZ-NAND是Error Zero NAND的简写,这一协议将NAND闪存的纠错码管理由主控芯片中转移到闪存自身,以减轻主控芯片负担。
今年3月ONFI 3.0规范发布,接口带宽提升到400MB/s,需求的针脚数更少让PCB走线更加方便,从目前披露的资料来看,ONFI 3.0采用更短的信道、更宽的信号间距,并加入片内终止技术,使其传输带宽能够达到400MB/s。
三星与东芝的ToggleDDR阵营
面对ONFI组织的攻势,占有全球70% NAND产能的两大闪存生产巨头三星与东芝决定携手对抗,2007年12月,三星与东芝联合通过了一项关于闪存专利技术互换授权协议,根据这项协议,三星电子和东芝在闪存规格和技术上将完全共享。
根据项协议规定,三星将允许东芝生产和制造自己旗下的OneNAND和Flex-OneNAND闪存芯片,而东芝公司则将以自己的LBA-NAND和mobileLBA-NAND闪存芯片技术作为条件与三星电子进行交换,这些闪存芯片生产技术都是三星电子和东芝的核心技术,但是新的合作协议让双方在闪存芯片制造技术实力上都取得了进一步的增强,此外他们将一同合作研发新一代闪存产品,也就是后来的Toggle DDR NAND闪存。
2010年6月三星与东芝开始投产符合Toggle DDR 1.0接口标准的NAND闪存,Toggle DDR NAND采用双向DQS信号控制读写操作,信号的上升与下降沿都可以进行资料的传输,能使传输速度翻倍,接口带宽为133MB/s,而且没有内置同步时钟发生器(即NAND还是异步设计),因此其功耗会比同步NAND更低。
2010年8月,最新的Toggle DDR 2.0接口标准发布,传输带宽上升到400MB/s,目前网上关于此标准的详细消息还不多,不过可以可以确定的是技术指标与ONFI 3.0是类似的。
闪存的同步与异步
我们经常说闪存的同步与异步模式,其实是在ONFI 2.0标准中新加入的特性(ToggleDDR不存在同步闪存的情况,均为异步设计,但性能仍然强悍),ONFI 2.0标准在NAND中加入了同步时钟发生器,主控可以通过发送同步指令激活闪存上的同步时钟信号,使闪存工作在同步模式 ,此时闪存的数据传输速率会大幅度提升,异步模式相当于ONFI 1.0,闪存的带宽为50MB/s,而同步模式下闪存至少也符合ONFI 2.0,闪存带宽可达到133MB/s以上。
实际上同步与异步闪存都是同一生产线上下来的,颗粒品质的优劣才产生了这样的区别。比如英特尔29F64G08AAME1颗粒属于异步闪存,而英特尔29F32B08JCME2则支持同步/异步模式,又如镁光的29F64G08CBAAA是异步闪存,而29F64G08CBAAB颗粒支持同步/异步模式。
下面是镁光NAND在异步与同步模式下的部分针脚定义:
开机时SSD是运行在异步模式的,只有当主控发送同步指令给闪存后,才激活闪存上的源同步时钟,然后针脚定义发生改变,激活DQS信号, 让其工作在同步模式,并将异步模式下的WE#信号变为CLK信号,RE#变为W/R信号,同步模式下DQS信号的上升沿与下级沿都能控制信号的传输,使传输速度翻倍。
异步模式的数据相位
同步模式的数据相位
市面上有少数SSD使用异步闪存,但强制运行在同步模式,性能是上来了,稳定性存在隐患。
闪存类型对SSD速度的影响
上面的图左边是OCZ Agility 3 60GB,右边的是Vertex 3 60GB,这两个SSD都是用SandForce SF-2281主控,差别就是Agility 3用的是异步的闪存而Vertex 3用的是同步的闪存,SF-2281主控共有8条通道,如果使用8颗异步模式闪存的话理论内部总带宽是400MB/s,如果用8颗同步模式闪存的话理论内部总带宽则达到1333MB/s,当然这是理论上的,实际上还受着主控性能和各种延迟的影响,异步闪存与同步闪存的差别看上面两个OCZ SSD的读取速度就知道了。
Nand Flash的同步、异步、ONFI、Toggle相关推荐
- NAND Flash的同步与异步
同步与异步 SDR与DDR Sync和Async ONFI和Toggle 闪存的同步与异步 SDR与DDR SDR(single data rate),写数据使用上升沿或下降沿来触发.因为只用上升沿或 ...
- NAND FLASH 读写操作 简介
NAND FLASH 内存详解与读写寻址方式 一.内存详解 NAND闪存阵列分为一系列128kB的区块(block),这些区块是 NAND器件中最小的可擦除实体.擦除一个区块就是把所有的位(bit)设 ...
- nand flash 个人觉得写得比较好的文章
[详解]如何编写Linux下Nand Flash驱动 版本:v2.2.1 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flas ...
- nand flash 经典 全面 ------如何编写Linux下Nand Flash驱动
Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开 ...
- NAND FLASH 内存详解与读写寻址方式
目录: 第一章 绪论 1.1 课题来源 1.2 研究背景与意义 1.2.1 Flash介绍 1.2.2 NAND Flash介绍 1.2.3 NAND Flash与NOR Fl ...
- nand flash基础(一)
我入职以来接触的第一个实践内容就是MTD下的NAND FLASH的驱动,下面我将从nand flash的基础和驱动程序两个方面来探讨 该知识点,同时最后我会把自己的 动手实验也展示出来,我学习是基于j ...
- NAND FLASH学习笔记之nand flash基础(一)
我入职以来接触的第一个实践内容就是MTD下的NAND FLASH的驱动,下面我将从nand flash的基础和驱动程序两个方面来探讨该知识点,同时最后我会把自己的 动手实验也展示出来,我学习是基于jz ...
- Raw NAND FLASH原理及ONFI接口标准
一.NAND Flash类型 1.1 NAND Flash的两大分类 NAND Flash是嵌入式世界里常见的存储器,对于嵌入式开发而言,NAND主要分为两大类:Serial NAND.Raw NAN ...
- NAND FLASH的ONFI,LBA,UNIQUE ID
Nand Flash中的ONFI,LBA,Unique ID http://bbs.chinaunix.net/thread-3558530-1-1.html
最新文章
- flutter开发环境搭建
- python paramiko模块中设置执行命令超时值
- 单片微机原理P4:80C51串口与串行总线拓展
- Golang的指针类型
- portainer 启动mysql_docker 安装portainer容器后,启动/Portainer 安装MySQL并开启远程访问...
- 局域网共享工具_局域网文件共享
- Abp mysql guid_ABP领域层 – 值对象 - ABP 中文文档
- 由需求而产生的一款db导出excel的工具
- java php quercus,php中Quercus框架的安装
- Android自定义View【实战教程】3⃣️----Paint类、Path类以及PathEffect类详解
- DELMIA软件:机器人与行走轴联动实现长焊缝弧焊焊接虚拟仿真
- EDEM 2020的安装
- python 推箱子实验开发报告_推箱子游戏详细设计报告
- Thinkphp5.0实战 仿百度糯米开发多商家电商平台视频中常见的命令(正在更新)
- flume 从基础到高阶
- 网上赚钱第一步是借鉴与学习
- 开源IoT操作系统Mynewt使用简介
- Java 富文本内容转化word导出
- dmesg 命令详解
- 设(X1,X2,…,Xn) 是来自正态总体N(μ,σ2),的一个样本,其中μ,σ2未知,求μ与σ2的极大似然估计量.
热门文章
- 江山易改本性难移之ZYNQ SDK API函数笔记(GPIO函数)
- scrapy果壳爬虫
- 微信小程序-调用腾讯地图插件实现定点,路线规划,地铁图,服务拓展(逆地址解析,地点搜索)
- 从茅台和可乐,看看企业“护城河”
- 基于Python的通用、可扩展的图卷积神经网络
- linux磁盘信息文件,linux系统获取硬盘使用信息
- 蒙特卡罗方法近似求解定积分-Go语言
- python:实现prefix conversions前缀转换算法(附完整源码)
- vue移动端ui框架vant如何自定义引入阿里巴巴图标库
- Apriori关联度分析