基于FPGA的19nm闪存PCIe SSD的设计与实现

FPGA/ASIC技术

206人已加入

描述

  19nm闪存PCIe SSD

  以 NAND闪存为基础的固态磁盘(SSD)技术与传统的机械驱动器存储系统相比,吞吐量更高,功耗更低。为此,SSD使用量在过去十年迅速增加,从手持设备到笔记本、台式机,现在又进军企业级存储设备市场。企业级存储行业对基于串行高级技术附件(SATA)标准的SSD的采用进一步加速了这一快速扩展势头。

  但是,在SSD制造商期望通过使用19nm闪存将下一代系统的性能和密度推上新高度的时候,SATA并没有跟上。即便是最新的版本(SATA 3.0),6Gbps物理接口也难以满足SSD NAND闪存阵列的最高吞吐量,因此存在性能利用不足的问题。

  为了突破接口瓶颈,基于PCI Express的SSD正在给市场带来重大影响。PCIe是业界标准本地总线,性能和扩展能力均优于SATA。它采用多信道高速串行链路,可支持1至16 个信道,每个信道的运行速率高达8Gbps(Gen1为2.5Gbps,Gen2为5Gbps,Gen3为8Gbps)。SSD的PCIe接口可支持数 GB的吞吐量,并可为NAND闪存技术的发展提供更富足的带宽余量。

  然而,用19nm闪存开发基于PCIe的SSD系统面临着一系列的挑战。与SATA相比,PCIe接口要求更多的高速串行链路和更复杂的互联。对吞吐量的需求则要求PCIe直接存储器存取(DMA)以千兆字节带宽运行。另外,采用19nm工艺,闪存的可靠性或者更具体地说“磨损(wear)”(NAND在遇到错误之前能读取或者写入的次数)指标也是一个日益严峻的问题。采用19nm工艺,制造商必须以比以往更快的速度完成磨损平衡(wear leveling)和纠错。

  赛灵思(Xilinx)公司Kintex-7 FPGA以不到前一代FPGA一半的成本为FPGA设立了新的高性能基准。Kintex-7系列是赛灵思采用台积电(TSMC)高性能低功耗(HPL)28nm工艺技术生产的四大产品线之一,旨在实现最大能效。与前代产品相比,其性价比提高了两倍,而功耗降低了50%。Kintex-7 FPGA采用高密度逻辑、高性能收发器、存储器、DSP,以及灵活混合信号技术,所有这一切让系统级性能和集成度迈上新高。这些功能能够让设计以批量价格不断实现创新和差异化。因此,赛灵思Kintex-7系列FPGA是19nm闪存PCIe SSD控制器的理想选择。

  图1所示的是北京忆恒创源科技有限公司(Memblaze)的SSD控制器架构,它由三个以高速AXI4总线相连的子系统组成。PCIe SG-DMA子系统包含Kintex FPGA硬核,负责在主机和SSD数据缓存之间分散和采集数据(SG代表分散(Scatter)和采集(Gather))。CPU子系统负责管理外设和执行SSD存取命令,而存储子系统则负责运用多通道NAND控制器、纠错码(ECC)模块和磨损平衡模块处理SSD扇区数据。这三个子系统共享带ECC功能的2GB DDR3 SDRAM。采用赛灵思存储器接口生成器(MIG)工具可以很容易地生成ECC DDR3 SDRAM控制器。

  SSD

  图1:针对19nm NAND闪存PCIe SSD的Kintex-7SoC解决方案由三个子系统组成:CPU、存储和PCIe SG-DMA

  该设计中使用7系列PCIe硬核实现物理至TLP层,让设计能够以最低的时延发挥高性能PCIe端点的功能。支持ARM AXI4互联的新型嵌入式MicroBlaze核可以彻底消除片上总线的瓶颈。DDR硬核为磁盘高速缓存提供了51.2Gbps ECC解决方案。同时,使用低功耗逻辑资源能够方便地运行高性能磨损平衡和智能ECC算法。另外,丰富的高性能I/O资源为19nm NAND闪存阵列的互联提供了方便。

  PCI Express SG-DMA

  该设计的PCIe接口要求用一个快速DMA控制器实现主机和本地AXI4总线间的高速通信。SSD闪存阵列的吞吐量可高达2.5Gbps。为简化PCIe接口的设计,为闪存芯片的发展提供更大的裕量,设计选用8信道PCIe Gen2/Gen3架构。

  PCIe 端点在物理层、数据链路层和事务层中有大量复杂的协议需要处理。幸运的是,在赛灵思7系列FPGA中设计PCIe SG-DMA控制器速度既快又方便。赛灵思已经把PCIe硬核实现在器件的架构中,用于处理全部的PCIe操作。这样设计小组就可以集中精力设计SG- DMA操作本身的功能。PCIe解决方案的集成模块可支持单通道、双通道、四通道和八通道端点配置,最高速度达5Gbps(Gen2),符合PCIe基本规范2.1修订版。表1是7系列FPGA的PCI集成模块的配置。该核可配置为Gen1/Gen2,最多可支持8个信道,从而可提供高达40Gbps的带宽。

   表1:7系列FPGA支持的硬核
SSD

  设计中使用CORE Generator工具来配置和生成PCIe端点IP。该工具包括用户指南、源代码、仿真代码和设计范例,可以帮助迅速使用该核。图2显示了PCIe硬核的顶层功能模块和接口。

  SSD

  图2:PCI Express硬核顶层的功能模块与接口。

  SG- DMA核的主要功能是处理来自主机的TLP数据包并做出响应。SG-DMA用作对主机存储器的PCIe主控访问,在主机和本地存储器之间传输数据。主机向 DMA控制器发送命令,控制DMA访问。该命令代码嵌入在特定主机TLP寄存器写操作的数据中。SG-DMA控制器初始化SG-DMA写入请求,响应主机的读取命令,将数据从本地存储器移动到主机存储器。同样,对于主机的写命令,SG-DMA控制器初始化DMA读请求,将数据从主机存储器移动到本地存储器中。图3即是流程的图解。

  SSD

  图3:SG-DMA控制器工作流程

  AXI4互联

  AXI4互联IP将一个或多个AXI存储器映射的速度更快的设备连接到一个或多个存储器映射的从设备。AXI接口符合ARM制定的AMBA AXI第4版规范,包括AXI4-Lite控制寄存器接口子集。互联IP仅用于存储器映射传输,不适用AXI4-Stream传输。AXI互联IP可以用作赛灵思嵌入式开发工具套件(EDK)中提供的pCORE,或者用作赛灵思CORE Generator IP目录的独立内核。

  设计人员可以从赛灵思AXI4 IP支持的两种操作模式中进行选择。性能优化的交叉开关(crossbar)模式采用共享地址多数据流(SAMD)交叉开关架构,为读/写数据通道提供并行路径。而区域优化的共享访问模式则提供共享写数据地址路径、共享读数据地址路径和单条共享地址路径。这两种模式均支持增量(INCR)突发的长达256 位的突发长度以及32位至1024位的不同数据宽度。如有的话,每个通道还可支持USER信号传播,可选择每个通道独立的USER信号宽度。

  AXI4互联在PCIe SG-DMA和DDR3存储器之间提供高性能互联。AXI4-Lite共享总线是低速片上互联的理想解决方案,需要的逻辑资源极少。

  磨损平衡技术

  磨损平衡是存储介质厂商用于延长各类可擦除计算机存储设备使用寿命的设计技术,比如固态硬盘中使用的闪存。在闪存系统内使用的磨损平衡机制有几种,每种都对使用寿命进行了不同程度的强化。

  不采用磨损平衡机制的闪存存储系统如果向闪存写入数据,寿命会比较短。如不采用磨损平衡技术,闪存控制器必须永久性地将操作系统(OS)的逻辑地址分配给闪存的物理地址。也就是说,每次对之前已写模块的写操作都必须先读取、擦除、修改数据,然后在相同位置重新写入。这非常耗时,而且经常写入的位置会迅速磨损,而闪存上有的位置则完全没有使用。一旦部分模块寿终正寝,驱动器就不能再用了。

  第一种磨损平衡方法称之为“动态磨损平衡”。它使用一个映射将操作系统的逻辑块地址(LBA)链接到物理闪存地址。每次操作系统写入替换数据时,映射就会更新,标记原始的物理模块为无效数据,然后将一个新模块链接到这一映射条目。每次有数据模块重新写入到闪存,就会写入到新地址。然而,闪存上没有数据更新的模块就一直不会产生附加磨损。驱动器的使用寿命可能会比未采用磨损平衡机制的驱动器长,但某些块虽然处于活动状态,但却不会得到利用。

  另一种磨损平衡方法称为“静态磨损平衡”,它也使用映射将LBA链接到物理存储器地址。除了未改变的静态模块会定期移动,让其他数据访问这些利用率低的单元外,静态磨损平衡与动态磨损平衡工作原理相同。这种循环效应让SSD能够一直用到大多数模块接近它们的寿命终点。

  图4是在长期写入/擦除操作后采用和未采用磨损平衡技术的闪存页的情况。未采用磨损平衡技术的闪存(具有黑色页)已经被破坏,不能再记录任何数据,而采用了磨损平衡技术的闪存的所有页仍然能够正常工作。

  SSD

  图4:采用和未采用磨损平衡的闪存页

  智能ECC算法

  SSD系统设计的另一项关键组成部分就是纠错。有多种异常情况可能导致误码,进而影响数据完整性乃至系统本身的正确运行。为了解决这些错误,设计中采用了复杂的ECC算法,而且当这些系统中使用了更小的新型闪存时,这些算法变得更加的精细化。

  该设计在19nm NAND闪存上采用了一种被称为“反随机数据错误记录”的ECC算法。该算法用于解决温度变化、噪声和存储单元的可靠性造成的误码。另外,NAND闪存的存储单元的擦除/编程寿命一般有限。误码率(BER)随擦除/编程操作的累积而增大,直到有限的寿命终止。SSD的ECC功能还需要这种算法检测每个单元的误码率,了解它们的使用寿命情况。设计人员可以设定特定的误码率阈值,提示寿命已到和确认替换模块。不过,该阈值的优化很关键。误码率阈值过低会导致系统过早放弃可靠的单元,最终缩短SSD的使用寿命。误码率阈值过高,则会造成数据丢失的风险,因为系统会试图向不可靠的单元写入数据。因此,ECC算法必须在可靠性和寿命之间实现最佳平衡。

  19nm NAND闪存存储密度较高,但可靠性较差。这就是为什么设计中采用高速高级纠错的原因。ECC部分占35%以上的设计资源,实现的并行计算能力能够以 4GB读取速度在一个1,024位的扇区内纠正多达49位误码。与上一代FPGA相比,新型28nm Kintex-7技术将系统级性能提升达50%,容量提高两倍,总功耗减半。与Virtex-5器件中相同的ECC模块相比,Kintex-7实现方案在保持成本不变的同时,将面积缩小5%,性能提升40%以上。

  赛灵思Kintex-7系列FPGA是19nm闪存PCIe SSD设计的理想选择。其PCIe硬核、性能、容量和低功耗特性使其成为了市场上最优秀的芯片产品。采用该器件, SSD的读/写吞吐量可以轻松达到2GBps的水平。借助该器件将不仅能够为客户创造巨大的价值,而且19nmNAND闪存系统也将得到巨大的发展潜力。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
elecfans网友 2012-12-06
0 回复 举报
这文章比中关村那个专业多了. 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分