NAND闪存基础知识

SSD主控主要有三大部分组成:与Host对接的界面(Host interface), 闪存转换层FTL以及闪存对接界面(Flash interface)。
再把SSD主控的架构图请上来展示一下:

目前主流NAND闪存都是采用浮栅技术(Floating Gate, 简称FG)。
学过数电,模电,半导体物理的你,是否还记得大明湖畔的MOS管吗?NAND闪存的基本单元就是多出一个浮栅的MOS管。
也许还有与MOS管素未谋面的你,没关系,你只要了解NAND闪存的浮栅FG就是存放我们写入的数据就足够了。

浮栅FG类似于一个“陷阱”,电子在控制栅(Controll Gate,简称CG)的召唤下从沟道欢快地奔向控制栅CG,不幸的是,半道杀出个程咬金-浮栅FG,电子就这样被困在浮栅了。

NAND闪存利用这个有点“残忍”的手段实现了领导-主控交给的任务-【数据写入】。

 

NAND闪存性本善,电子被困浮栅FG之后, 输送给基板(Subsrtate)20V左右的能量,让基板奋不顾身的把电子都浮栅中解救出来。

NAND闪存通过把电子从浮栅FG解救出来的过程也实现了领导-主控交给的另一个任务-【数据擦除】。

 

其实上面看到的浮栅FG结构只是NAND闪存中的最小单元(Cell),成千上万个这样的单元(Cell)组成的阵列(Array)是才是NAND闪存的真正模样。

了解NAND闪存阵列之前,先NAND闪存阵列的两个坐标轴:字线(Word Line,简称WL),位线(Bit Line, 简称BL)。

WL方向,连接着控制栅CG,
BL方向,连接着MOS管的漏(Drain),

明白WL和BL的含义之后,让我们检阅一下NAND闪存中Cell方阵-Array。

1. Cell沿着BL方向手拉手,排排站,构成了一个串(String),

上图中左边有一个String,由64个Cell组成,

 

2. 共享一组WLs的所有String称为是一个块(Block)。

上图中右边有两个Block,Block0由WL Group 0<63:0>组成,Block1由WL Group 2<63:0>组成,

 

3. 共享一根WL的Cell称为是一个页(Page)。

上图中右边有两个Page, Page0是由WL0与偶数BL交叉的Cell构成,Page1是由WL0与奇数BL交叉的Cell构成,

面对庞大的Cell阵营,管理起来实在伤脑筋,于是NAND闪存引入了逻辑页(Logical page)的管理概念。
有了逻辑页的概念,就需要把单纯的cell根据存储级别划分为SLC/MLC/TLC,
SLC Cell存储1个bit,SLC很单纯,很靠谱,很少犯错,所以SLC Page又被称为Strong Page;
MLC Cell存储2个bit,MLC包含有Lower page和Upper page;
TLC Cell存储3个bit, TLC包含有Lower page, Middle page和Upper page;

 

 

 

React Hooks 是 React 16.8 中新增的特性,它可以让你在函数组件中使用 state、生命周期钩子等 React 特性。使用 Hooks 可以让你写出更简洁、可复用且易于测试的代码。 React Hooks 提供了一系列的 Hook 函数,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect useDebugValue。每个 Hook 都有特定的用途,可以帮助你处理不同的问题。 下面是 React Hooks 的一些常用 Hook 函数: 1. useState useState 是最常用的 Hook 之一,它可以让你在函数组件中使用 state。useState 接受一个初始状态值,并返回一个数组,数组的第一个值是当前 state 值,第二个值是更新 state 值的函数。 ``` const [count, setCount] = useState(0); ``` 2. useEffect useEffect 可以让你在组件渲染后执行一些副作用操作,比如订阅事件、异步请求数据等。useEffect 接受两个参数,第一个参数是一个回调函数,第二个参数是一个数组,用于控制 useEffect 的执行时机。 ``` useEffect(() => { // 这里可以执行副作用操作 }, [dependencies]); ``` 3. useContext useContext 可以让你在组件树中获取 context 的值。它接受一个 context 对象,并返回该 context 的当前值。 ``` const value = useContext(MyContext); ``` 4. useRef useRef 可以让你在组件之间共享一个可变的引用。它返回一个对象,该对象的 current 属性可以存储任何值,并在组件的生命周期中保持不变。 ``` const ref = useRef(initialValue); ref.current = value; ``` 5. useCallback useCallback 可以让你缓存一个函数,以避免在每次渲染时都创建一个新的函数实例。它接受一个回调函数一个依赖数组,并返回一个 memoized 的回调函数。 ``` const memoizedCallback = useCallback(() => { // 这里是回调函数的逻辑 }, [dependencies]); ``` 6. useMemo useMemo 可以让你缓存一个计算结果,以避免在每次渲染时都重新计算。它接受一个计算函数一个依赖数组,并返回一个 memoized 的计算结果。 ``` const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); ``` 以上就是 React Hooks 的一些常用 Hook 函数,它们可以帮助你更好地处理组件状态、副作用、上下文性能优化等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值