0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈闪存控制器架构

jf_pJlTbmA9 来源:PMC 作者:PMC 2023-08-29 16:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

分析闪存控制器的架构,首先得了解SSD。一般来说SSD的存储介质分为两种,一种是采用闪存(Flash芯片)作为存储介质,另外一种是采用DRAM作为存储介质。我们通常所说的SSD就是基于闪存的固态硬盘,其采用FLASH芯片作为存储介质。SSD的基本组成结构包括Flash颗粒和Flash控制器,Flash控制器中有芯片,负责Flash的读写、磨损均衡、寿命监控等等。

Flash控制器的主要的工作任务包括三大方面:一是后端访问Flash,管理后端Flash颗粒,包括各种参数控制和数据IO; 二是前端提供访问接口和协议:实现对应的SAS/SATA target协议端或者NVMe协议端, 获取Host发出的IO指令并解码和生成内部私有数据结果等待执行;三是FTL层核心处理。下面我们具体来介绍一下Flash 控制器是怎样做这几件事的。

第一,后端访问Flash的操作内容

后端访问Flash首先必须提到的是闪存通道控制器。这个控制器里面有多个通道,每个通道挂多片Flash。它与后端Flash颗粒之间存在托管协议。数据写入Flash的时候,除了主机发送的数据或者原始数据,其他数据都必须进行ECC校验。ECC是通用的称谓,里面有多种算法,其中包括纠错率较低的BCH算法,LAPC低密度校验码等。数据读出的时候,通过扰码,加扰,解扰,看ECC是否出现错误,若有错则在纠错后将芯片发到内部,供后续的程序处理。因此,后端访问Flash的主要任务即是管理后端Flash颗粒,包括各种参数控制和数据IO。

第二,前端提供访问接口和协议

前端提供访问接口和协议,跟主机驱动通信,利用标准格式输配到系统里面,接收主机端发过来的指令,即完成、实现对应的SAS/SATA target协议端或者NVMe协议端,获取Host发出的IO指令并解码和生成内部私有数据结构等待执行。如果遵从NVMe标准,包括提交命令的方法、完成命令的处理方法等都定好了,包括各种队列、队列深度,Queue Pair的总体数量最大可以达到64K个,队列深度也可达64K个,所以,系统里同时可能存在64K×64K IO排着,但是目前的系统是用不到这么多Queue的,因为底下的介质速度还不足以支撑。

第三,FTL层――核心层处理

核心层FTL层,是一款Flash控制器的关键竞争力所在。它既可以是纯软件算法,包括元数据管理,数据布局影射、磨损均衡、垃圾回收、缓存策略、片间RAID和掉电元数据一致性保障等内容。同时,它也可以在进行重复性工作时辅以硬加速引擎。这是非纯软件的,辅有硬加速的成分在里面。硬加速涉及到所使用的芯片。有的芯片支持硬加速,比如说链表的维护。这是因为做垃圾回收时需要要用到链表,拿传统的软件算法,插入一个或者追加一些项目,所耗费的CPU周期较大,此时用硬加速并行,再加上一些硬逻辑的加速,则可节省开销。

Flash控制器的两种策略和方式:

现有的Flash控制器可采用两种方式:一种是少量的强核心加少量硬件加速。所谓强核心就是一个核心的性能高、频率高,分支预判、并行度、单元数量、执行管道,各种参数都高于一般水平。核心强了以后,硬加速就不需要这么多了,可以用少量的硬加速。

另一种方式则是大量弱核心+大量硬加速。比如说16个核心,每个核心比较弱,但是能够增加执行的并行度,有16个并发核心执行,跑16套处理程序,这是两种架构。这是一种多核心协作架构模式,其协作方式可以是同构协作也可以是异构协作

1.同构协作就是每个核心做的事都是完全一样的,处理的步骤完全一样。如果你的控制器阵列里面有16个IO,有16个核心,每个核心都能处理一个IO,这是同构协作。

2.异构协作则是多个核心做不同的事情。处理同一个IO,第一个IO第一步,第一个核心处理,这个核心处理完以后,把这个IO扔到下一个核心,再处理下一步,等这个核心空出来以后,处理下一个IO的第一步,这就是所谓的流水线了,所谓的异构就是如此。
产品实例:PMC的FlashtecTM NVMe 控制器

这是PMC的控制器,首先它有一个片上网络,网络承载16个CPU核心,每个核心里面有一个类似网卡的控制器,网卡连到网络上,多个CPU之间连起来。简单说就是4口路由器或者交换机连起来的网络,多个CPU之间连起来,此外还有硬加速模块。另外还包括以下几部分:

RAM控制器,因为芯片上需要有一定量的RAM放临时数据,写放大,读出来写进去,都要走RAM;

PCIe控制器,这个是跟前端PCIe对等的控制器,IO指令从这儿接收过来;

后端Flash控制器,通过一定数量的通道连Flash颗粒,

加速器(包括缓冲加速器),每做一个操作,都需要有相应的内存,把数据拷到内存里面,内存的维护很费时费力。比如在X86上运行的Linux,其管理内存时需要耗费很多的计算量。对于闪存,精打细算,必须把性能做到极致,因此需用到硬加速。

链表加速器,用链表来记录一些信息,哪块空着,哪块被应用,这块用软件维护很费力,所以需要在这里作加速;

XOR加速器,XOR要用硬加速

最后,来看一下软件的并行度。16个核心,PMC提供的参考的固件,当然SSD厂商会开发自己的固件,把自己优化的东西放进去,优化的算法放进去。基本上包含了这么一些程序,每个IO读的地址可能有重叠,重叠就需要有一个锁定协调,有管命令解析的,有管启动的,有管日志的,有管磨损均衡的,有管查表的,有管写数据的,管前端的PCIe Manager,还有负责boot loader的核心,初始化的配置,需要由它处理,data manager,这是主程序,分析IO指令需要干什么,生成一堆的后续步骤下发下去。其实每一块都可以跑在一个核心上,同一个角色可以复制多份,充分并行。16个核心,达到16份程序并行的运行,16个流水线的Stage,这样就可以屏蔽处理过程中的时延。
审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 闪存
    +关注

    关注

    16

    文章

    1924

    浏览量

    117563
  • 控制器
    +关注

    关注

    114

    文章

    17941

    浏览量

    196136
  • FlaSh
    +关注

    关注

    10

    文章

    1764

    浏览量

    156261
  • 接口
    +关注

    关注

    33

    文章

    9651

    浏览量

    157902
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TMS570LS系列16/32位RISC闪存控制器深度解析

    TMS570LS系列16/32位RISC闪存控制器深度解析 在电子设计领域,微控制器扮演着至关重要的角色。今天我们要深入探讨的是TMS570LS系列16/32位RISC闪存
    的头像 发表于 04-24 18:10 1193次阅读

    探索TMS470R1A288:16/32位RISC闪存控制器的卓越性能

    探索TMS470R1A288:16/32位RISC闪存控制器的卓越性能 在嵌入式系统的设计领域,一款性能出色、功能丰富的微控制器是实现高效控制与数据处理的关键。今天,我们将深入剖析德
    的头像 发表于 04-23 14:40 215次阅读

    COP8TAB9/TAC9 8位CMOS闪存控制器:特性与应用解析

    COP8TAB9/TAC9 8位CMOS闪存控制器:特性与应用解析 一、引言 在当今的电子设计领域,微控制器扮演着至关重要的角色。National Semiconductor推出的COP8TAB9
    的头像 发表于 04-18 15:15 657次阅读

    PIC32MM0064GPL036 系列 32 位闪存控制器深度剖析

    PIC32MM0064GPL036 系列 32 位闪存控制器深度剖析 引言 在电子设计领域,微控制器的选择至关重要,它直接影响到产品的性能、功耗和成本。PIC32MM0064GPL036 系列
    的头像 发表于 04-08 18:05 1110次阅读

    PIC16(L)F145X:8位闪存USB微控制器的卓越之选

    )F145X系列14/20引脚、8位闪存USB微控制器,看看它有哪些独特的优势和特点。 文件下载: PIC16F1458-E/P.pdf 高性能RISC CPU 架构与指令集 PIC16(L)F145X采用
    的头像 发表于 04-07 15:30 334次阅读

    Z8 Encore! XP 64K 系列闪存控制器产品详解

    Z8 Encore! XP 64K 系列闪存控制器产品详解 一、引言 在微控制器的世界里,Zilog 的 Z8 Encore! XP MCU 系列一直占据着重要的位置。今天我们要深入探讨的是 Z8
    的头像 发表于 04-07 11:35 315次阅读

    AT89C5131:高性能8位闪存控制器的全面解析

    AT89C5131:高性能8位闪存控制器的全面解析 在电子工程领域,一款优秀的微控制器往往能为产品带来卓越的性能和广泛的应用可能性。AT89C5131作为一款高性能的8位闪存
    的头像 发表于 04-06 09:10 357次阅读

    Z8 Encore! XP 64K系列闪存控制器:高性能8位解决方案

    Z8 Encore! XP 64K系列闪存控制器:高性能8位解决方案 在电子设计领域,微控制器扮演着至关重要的角色。今天,我们要深入探讨Zilog公司的Z8 Encore! XP 64K系列
    的头像 发表于 04-05 09:20 347次阅读

    深入剖析Maxim ZLF645系列闪存控制器

    深入剖析Maxim ZLF645系列闪存控制器 在电子设备不断发展的今天,微控制器的性能和功能对于产品的成功至关重要。Maxim的ZLF645系列闪存
    的头像 发表于 04-04 15:15 694次阅读

    PIC16F716:8位闪存控制器的全方位解析

    PIC16F716:8位闪存控制器的全方位解析 在电子工程师的日常工作中,选择一款合适的微控制器至关重要。Microchip的PIC16F716就是一款备受关注的8位闪存
    的头像 发表于 03-25 16:05 412次阅读

    PIC16F716:8位闪存控制器的性能剖析与应用指南

    PIC16F716:8位闪存控制器的性能剖析与应用指南 在电子工程领域,微控制器作为核心部件,广泛应用于各种嵌入式系统中。Microchip的PIC16F716便是一款功能强劲的8位闪存
    的头像 发表于 03-24 17:30 815次阅读

    PIC12F510/16F506:低成本高性能8位闪存控制器的卓越之选

    PIC12F510和PIC16F506是低功耗、高性能的8位全静态闪存CMOS微控制器。它们采用RISC架构,仅有33条单字/单周期指令(除程序分支为双周期外),1
    的头像 发表于 03-03 17:25 1347次阅读

    Microchip USB224X:高性能USB 2.0闪存媒体控制器深度解析

    Microchip USB224X:高性能USB 2.0闪存媒体控制器深度解析 在当今数字化时代,闪存媒体的读写需求日益增长,一款高性能的闪存媒体
    的头像 发表于 01-27 15:00 483次阅读

    请问各型号的CW32微控制器在核心架构上有何区别?

    各型号的CW32微控制器在核心架构上有何区别?
    发表于 12-16 07:52

    普冉PY25Q128闪存芯片在智能门锁控制器中的应用

    在智能家居日益普及的今天,智能门锁作为家庭安全的第一道防线,其稳定性和可靠性至关重要。然而,不少用户在使用智能门锁时,常常会遇到各种问题,这些问题很大程度上与门锁控制器中的闪存芯片性能密切相关。钧敏
    的头像 发表于 06-05 09:21 1527次阅读