​如何解决SSD NAND Path冲突导致的性能问题?

1.引言

最近看到一篇关于SSD的NAND并发瓶颈相关的论文,思路非常好,这里分享给大家。本篇论文的解读,也是小编上周末在高铁上完成的。存储随笔的论文解读,不是直接翻译,是小编先研读一遍后,再结合自己的理解再解读分享,可能讲述顺序与原始论文架构可能会有差异,如果不当之处,还望见谅。想直接阅读原文的朋友也可以后台私信关键词【Venice】获取论文。也欢迎各位朋友给小编推荐更多有趣的论文!

2.论文解读

固态硬盘(SSD)的性能和容量正在持续提升,以满足现代数据密集型应用的不断增长的需求。然而,SSD控制器和内存芯片(如2D/3D NAND闪存芯片)之间的通信是许多应用的关键性能瓶颈。

现有的SSD使用的是多通道共享总线架构,其中多个内存芯片连接到相同的通道上,只能通过一条路径与SSD控制器通信,这经常导致路径冲突,严重限制了SSD的并行性。因此,处理好路径冲突,以提高SSD并行性和性能至关重要。

我们常见的SSD架构示意图如下:这个示意图包括了SSD架构组成,SSD控制、DRAM、NAND芯片,以及控制器Flash Controller与NAND架构交互的解释。同时,也简单解释了NAND die/Plane/Block/Page/Cell的逐级概念与解释。这张图,基本代表了SSD经典架构。

现代SSD(固态硬盘)中存在的路径冲突问题。这种问题通常在处理多个I/O请求时发生,会显著限制SSD的并行性。

  • 在同一个NAND Channel通道中,如果有多个IO读,就会需要等前面一笔读完成后,才能继续下一笔。
  • 在不同的NAND Channel通道中,这部分不会有path路径冲突的问题,不会相互影响。

现代SSD通常采用多通道共享总线架构进行SSD控制器和NAND闪存芯片之间的通信。SSD控制器通过多个共享通道(通常是4到16个)与多个闪存芯片(通常是4到32个)连接。然而,当有多个I/O请求同时发送到同一通道上的不同闪存芯片时,就会发生路径冲突。

通常解决方法以减轻路径冲突问题有两种:

  • 第一种方法是增加Flash通道带宽,这种方法主要通过Packetized SSD(pSSD)技术实现,其将Flash通道的带宽提高到基准SSD的两倍。然而,这种方法存在一些限制,例如需要额外的硬件支持,增加了成本和复杂性。

  • 第二种方法是增加路径数量。在多通道共享总线SSD架构中,通过增加从SSD控制器到内存芯片的路径数量,可以显著提高SSD的并行性。然而,这种方法也面临一些挑战,例如需要更多的芯片封装空间和更复杂的控制逻辑。

文章提到,之前也有一些论文对NAND路径冲突的问题进行了解决与优化,如上图提到的pSSD、pnSSD和NoSSD。论文作者通过使用先进的SSD模拟器MQSim对19个实际的数据密集型工作负载进行测试,文章比较了这些方法和基准SSD的性能。

上图中,针对没有Path冲突的SSD是基线SSD的4-11.7倍,这也是理想情况,现实并不存在。其次,pSSD、pnSSD和NoSSD分别对性能提升约27%、30%、35%。论文认为这些先前的方法并没有有效地缓解路径冲突问题,而且带来了显著的面积和成本开销。因此,论文得出结论,需要从根本上解决SSD中的路径冲突问题,即在提供路径多样性的同时,还要考虑降低成本。


本文提出了一种名为“Venice”的新机制,通过增加SSD控制器和内存芯片之间的路径多样性,从根本上解决路径冲突问题。Venice基于使用互连网络的思想,增加了路径多样性。它采用了三个关键技术:

1)在每个内存芯片旁边添加一个简单的路由芯片,无需修改内存芯片设计;

2)在启动传输之前,预留从SSD控制器到目标内存芯片的路径;

3)利用路径多样性,采用完全自适应路由算法有效地解决路径冲突。

预留路径(Path Reservation)是一种机制,旨在确保输入/输出(I/O)请求在数据传输时不会遇到路径冲突的问题。在预留路径的过程中,Venice会为每个I/O请求预先保留一条无冲突的路径,从而确保在数据传输期间不会发生路径冲突。这种技术避免了在互联网络中的每个路由处需要使用缓冲区来存储每个遇到路径冲突的I/O请求的数据。

在实现路径保留的过程中,Venice通过发送一个特殊的探测包(scout packet)来识别和预留路径。如果探测包在路由处无法找到空闲的链路,该路由器将启用取消模式(cancel mode),这将通过删除路由预留表中对应的条目来取消预留。然后,探测包将沿着其路径回溯到一个之前访问过的路由(即上游路由)。根据路由算法的自适应性,探测包可以尝试在上游路由器中选择不同的空闲输出链路,或者进一步回溯。这里面的回溯,也可以有效的规避死锁的问题。

此外,Venice机制尽可能寻找无冲突的最小路径(minimal path)。最小路径是连接两个节点的链路数量最少的路径。如果使用最小路径而不是非最小路径,可以减少链路的占用,从而有可能增加互联网络中其他正在进行的请求的传输效率。

在努力了这么多,有什么效果吗?实验结果表明,Venice平均提高了2.65×/1.67×的性能,优于性能优化/成本优化SSD设计的基线,减少了能量消耗。与最先进的互连设计相比,Venice在成本和性能方面都有显著的优势。这些结果表明,通过增加路径多样性和利用自适应路由算法来解决路径冲突,可以在不增加硬件复杂性的情况下提高SSD的性能和能效。因此,Venice为现代数据密集型应用提供了更高效、更节能的SSD设计。


同时,在长尾延迟(99% QoS)对比中,Venice机制表现也非常优秀。

在Path路径冲突解决有效性对比中,Venice机制的无冲突IO比例超过99.98%。 对比Baseline SSD/pSSD/pnSSD/NoSSD无冲突IO比例分别76.40%/78.47%/77.88%/80.65%。这个数据也佐证了Venice对路径冲突的超高有效性。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 大容量疯了!居然想把磁带放到硬盘,100TB+是否可以实现?

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • 小米14魔改存储芯片多出8GB空间背后的秘诀

  • SSD IO性能优化是一项复杂但很有趣的工程

  • 双11即将来临,挑选SSD硬盘最全避坑指南

  • 性能领域:你知道的越多,不知道的也就越多

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WP光电信息学院2023年网络安全季度挑战赛-测试赛

签个到就跑WP Misc MISC-没爱了,下一个 下载附件压缩包解压之后,获得一个流量包文件 使用wireShark打开流量包,Ctrl F 搜索flag{即可获得flag flag{Good_b0y_W3ll_Done}MISC-送你一朵小花花 下载附件压缩包解压之后,获得一…

PCA9698的IIC转接GPIO控制N路灯

PCA9698验证灯的办法和PCA9535验证6路数字继电器,编译成ko直接Insmod,然后查看/dev/节点有了吗?然后用iictool命令往对应iic地址上面写数据,看看灯亮灭或者听继电器开关声响,至于写多少,研究芯片手册上面参…

第四天课程 分布式搜索引擎1

分布式搜索引擎01 – elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: …

electronjs入门-编辑器应用程序

我们将在Electron中创建一个新项目,如我们在第1章中所示,名为“编辑器”,我们将在下一章中使用它来创建编辑器;在index.js中,这是我们的主要过程;请记住为Electron软件包放置必要的依赖项: npm…

LeetCode【238】除自身意外的数组的乘积

题目&#xff1a; 思路&#xff1a; https://zhuanlan.zhihu.com/p/109306706?utm_id0 代码&#xff1a; int n nums.length;int[] l new int[nums.length];int[] r new int[nums.length];l[0] 1;r[n-1] 1;for (int i1;i<nums.length;i) {l[i] l[i-1] * nums[i-1]…

No209.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

selenium报错:没有打开网页或selenium.common.exceptions.NoSuchDriverException

文章目录 问题解决方法 问题 当selenium的环境配置没有问题&#xff0c;但在使用selenium访问浏览器时并没有打开网页&#xff0c;或者出现selenium.common.exceptions.NoSuchDriverException报错信息&#xff08;如下图所示&#xff09;。 以上问题可能的原因是没有配置chrom…

【每日一题】K 个元素的最大和

文章目录 Tag题目来源解题思路方法一&#xff1a;贪心 其他语言Cpython3 写在最后 Tag 【贪心】【脑筋急转弯】【数组】【2023-11-15】 题目来源 2656. K 个元素的最大和 解题思路 方法一&#xff1a;贪心 从第一次操作开始每次选择数组中的最大值&#xff0c;由于最大值在…

算法萌新闯力扣:同构字符串

力扣题&#xff1a;同构字符串 开篇 对于字符串相关的题目&#xff0c;哈希表经常会使用到&#xff0c;这道题更是如此&#xff0c;还用到了两个哈希表。拿下它&#xff0c;你对字符串题目的理解就会更上一层楼。 题目链接:205.同构字符串 题目描述 代码思路 看完题目后&a…

爬虫----robots.txt 协议简介

文章目录 robots.txt 是一个用于指示网络爬虫(web spider或web robot)如何与网站上的内容进行交互的协议。这个文件被网站管理员放置在网站的根目录下,用于告知爬虫哪些部分的网站是可以被抓取的,哪些是不被允许的。以下是 robots.txt 协议的一些关键要点: 控制爬虫访问:…

〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

1688往微信小程序自营商城铺货商品采集API接口

一、背景介绍 随着移动互联网的快速发展&#xff0c;微信小程序作为一种新型的电商形态&#xff0c;正逐渐成为广大商家拓展销售渠道、提升品牌影响力的重要平台。然而&#xff0c;对于许多传统企业而言&#xff0c;如何将商品信息快速、准确地铺货到微信小程序自营商城是一个…