SSD数据在写入NAND之前为何要随机化?-part2

news2024/11/28 11:01:31

接part1介绍:

如何达到这个目的?业内常用的是对写入数据的数据进行随机化处理,这部分主要在SSD控制器中通过硬件实现

图片

  • 上图b/c:在控制器芯片通过硬件方式实现随机化的读写流程,这个也是业内通常做法随机化处理是在写入数据之前完成,也是在LDPC encode之前。这部分随机化处理时间,也是会影响数据写入时间tPROG和读取出来tR。

  • 上图d/e:随机化处理不是通过硬件实现,在业内并不常见做法。软件的方式处理很慢,且容易出现问题。

随机化的实现方式有多种,其中一种是利用线性反馈移位寄存器(LFSR)进行随机化。LFSR是一种可以用于生成伪随机序列的线性反馈移位寄存器,其初始值称为种子(seed)。其原理是将存储的数据进行移位操作,并向最低位添加新的随机数据。这个新的数据是根据一个特定的反馈函数生成的,它确保了序列的随机性。

ALFSR和LFSR是两种不同类型的随机数生成器,它们之间的区别主要体现在应用场景和生成随机数的机制上。

LFSR(Linear Feedback Shift Register)是一种线性反馈移位寄存器,它利用线性反馈的方式从一些输入位中选择一些位并将其移到输出位,从而实现随机数的生成。LFSR的优点是简单、速度快、硬件实现简单,但它的随机性相对较差,容易受到反馈函数的影响,可能存在预测性和循环性等问题。LFSR 有一个特点,如果初始状态不是全零,那么它会在 2^k - 1 个状态后回到初始状态,其中 k 是寄存器的位数。这个周期性使得 LFSR 生成的序列不会出现重复。

ALFSR(Advanced Linear Feedback Shift Register)是一种高级线性反馈移位寄存器,它是在LFSR的基础上改进而来的,通过增加更多的状态和反馈函数来提高随机性。ALFSR的反馈函数更复杂,可以更好地混合输入位,从而生成更随机、不可预测的随机数。此外,ALFSR还采用了多周期跳变和状态跳跃等技术,可以更好地防止循环和预测性。

图片

因此,ALFSR和LFSR的主要区别在于应用场景和生成随机数的机制。LFSR适用于对随机性要求不太高、简单快速的随机数生成场景,而ALFSR则适用于对随机性要求较高、需要更高质量和更安全随机数的场景,例如密码学、信息安全、计算机程序等。

LFSR/ALFSR方法也有一些局限性,它不能保证垂直方向上的数据随机化,比如下图,4-bit AFSR随机化处理后,依然有垂直方向的连续1或者连续0

图片

为了解决这个问题,有些控制器制造商会采用多种子方法来降低不同 ALFSR/LFSR 之间数据的相关性,从而增强数据的随机性。比如下图中,垂直方向和水平方向,均实现了随机化处理

图片

水平方向随机化(Horizontal Centric,HC)和双向随机化(Bidimensional Randomization)的效果对比如何呢?

在Endurance测试方面:

  • 下图左-水平方向随机化:LSB、CSB、MSB的REBR相差很大,特别是LSB/MSB REBR较差

  • 下图右-双向随机化:RBER均有了较大的提升,其中LBA效果最好。

图片

在Retention测试方面:

  • 下图左-水平方向随机化:LSB、CSB、MSB的REBR均超过了ECC最高界限

  • 下图右-双向随机化:只有MSB超过了ECC最高界限,提升也很明显

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeScript 之 console的使用

语言: TypeScript 在线工具: PlayGround console console 对象是一个非常强大的控制台日志显示工具, 可以帮助我们在浏览器中调试代码。 注: console不属于TypeScript的语法,而是由JavaScript封装的内置对象。 简单的…

Ubuntu下安装SDL

源码下载地址(SDL version 2.0.14):https://www.libsdl.org/release/SDL2-2.0.14.tar.gz 将源码包拷贝到系统里 使用命令解压 tar -zxvf SDL2-2.0.14.tar.gz 解压得到文件夹 SDL2-2.0.14 进入文件夹 执行命令 ./configure 执行命令 make…

原来JMeter 结果处理常见问题这么简单,可惜没早点看到!

1. 前言 工作中用 jmeter 请求一个接口对谈得上会 jmeter 的人似乎都是可以做出来的,但是实际难点是参数化,结果的断言,结果的汇总等。本文将针对结果过滤有效性的情况展开分析。 示例场景:一个接口需要对入参1000多个数据做测试…

【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,

背景&#xff1a;部分课程禁止客户拖动视频进度条直至播放结束 红色是遮罩区域遮罩区域 实际遮罩效果&#xff08;有一个很浅的阴影区域&#xff09; 实现代码 .wxml文件 <video enable-progress-gesture"false" ><cover-view class"cover">…

FPGA设计时序约束十一、others类约束之Set_Maximum_Time_Borrow

目录 一、序言 二、Set Maximum Time Borrow 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、参考资料 一、序言 在Vivado的时序约束窗口中&#xff0c;存在一类特殊的约束&#xff0c;划分在others目录下&#xff0c;可用于设置忽略或修改默认的时序路径分析…

TwoNav导航网站源码 开源的书签(导航)管理程序

源码介绍 TwoNav是一款开源的书签&#xff08;导航&#xff09;管理程序&#xff0c;拥有简洁的界面、简单的安装和便利的使用体验。其基础功能免费&#xff0c;能够有效帮助用户集中管理浏览器书签&#xff0c;并解决了跨设备、跨平台和跨浏览器之间同步和访问困难的问题&…

Photoshop Circular Text

Ctrl N 新增 现学现卖

2023-12-09 LeetCode每日一题(下一个更大的数值平衡数)

2023-12-09每日一题 一、题目编号 2048. 下一个更大的数值平衡数二、题目链接 点击跳转到题目位置 三、题目描述 如果整数 x 满足&#xff1a;对于每个数位 d &#xff0c;这个数位 恰好 在 x 中出现 d 次。那么整数 x 就是一个 数值平衡数 。 给你一个整数 n &#xff0…

设计模式再探——装饰模式

目录 一、背景介绍二、思路&方案三、过程1.装饰模式简介2.装饰模式的类图3.装饰模式代码4.装饰模式&#xff0c;职责父类拆分的奥义5.装饰模式&#xff0c;部件抽象类的无中生有 四、总结五、升华 一、背景介绍 最近公司在做架构模型的时候&#xff0c;涉及到装饰模式的研…

JVM虚拟机:命令行查看JVM垃圾回收器的执行信息

在eclipse中打开命令行窗口 window->show view->Terminal 这样就打开了Terminal窗口&#xff0c;效果如下所示&#xff1a; java -XX:PrintCommandLineFlags -version 这个命令可以查看一些配置信息&#xff0c;其中最重要的配置信息就是&#xff0c;当前使用的G1回收器…

【动态规划】斐波那契数列模型_解码方法_C++(medium)

题目链接&#xff1a;leetcode解码方法 目录 题目解析&#xff1a; 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析&#xff1a; 题目让我们求解码 方法的 总数 由题可得&#xff1a; 0和有前导0&#xff08;比如06、08、04&am…

玄子Share-CSS3 弹性布局知识手册

玄子Share-CSS3 弹性布局知识手册 Flexbox Layout&#xff08;弹性盒布局&#xff09;是一种在 CSS 中用于设计复杂布局结构的模型。它提供了更加高效、简便的方式来对容器内的子元素进行排列、对齐和分布 主轴和交叉轴 使用弹性布局&#xff0c;最重要的一个概念就是主轴与…

JMS(Java Message Service)使用指南

介绍 JMS即Java消息服务&#xff08;Java Message Service&#xff09;应用程序接口&#xff0c;是一个Java平台中关于面向消息中间件&#xff08;MOM&#xff09;的API&#xff0c;用于在两个应用程序之间&#xff0c;或分布式系统中发送消息&#xff0c;进行异步通信。它是一…

Linux6-配置网络、源码包的编译和安装

配置 linux 网络 配置主机名 修改/etc/hostname 配置文件&#xff0c;永久配置主机名 [rootlocalhost ~]# vim /etc/hostname svr7.tedu.cn [rootlocalhost ~]# cat /etc/hostname svr7.tedu.cn [rootlocalhost ~]# reboot #重启生效命令行永久修改主机名 [rootlocalhost ~…

四. 基于环视Camera的BEV感知算法-DETR3D

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章——基于环视Cam…

MySQL- in(集合) 和 not in(...) 的使用和练习

1. 基础用法 mysql中in常用于where表达式中&#xff0c;其作用是查询某个范围内的数据。 select * from where field in (value1,value2,value3,…) 当 IN 前面加上 NOT 运算符时&#xff0c;表示与 IN 相反的意思&#xff0c;即不在这些列表项内选择 select * from where …

dlib是什么?

dlib C Libraryhttp://dlib.net/ dlib是什么&#xff1f; Dlib is a modern C toolkit containing machine learning algorithms and tools for creating complex software in C to solve real world problems. It is used in both industry and academia in a wide range of…

若依vue-新建目录及菜单

前面我们把标题和logo换成了自己系统的标题和logo了 接下来就是要建立自己需要的菜单和页面 新建目录解析 在拉下来的代码跑起来后 有一个系统菜单--菜单管理(如图) 在这个菜单的这个页面内有对应的操作功能 修改功能 这个功能可以修改写好了的菜单数据 例如:名称/排序/路由…

Leetcode—337.打家劫舍III【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—337.打家劫舍III 算法思想 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(null…

【Qt开发流程】之容器类2:使用STL风格迭代器进行遍历

概述 对于每个容器类&#xff0c;都有两种stl风格的迭代器类型:一种提供只读访问&#xff0c;另一种提供读写访问。应该尽可能使用只读迭代器&#xff0c;因为它们比读写迭代器快。 STL迭代器的API以数组中的指针为模型。例如&#xff0c;操作符将迭代器推进到下一项&#xf…