​如何解决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版正式发布!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

滴滴 Redis 异地多活的演进历程

为了更好的做好容灾保障,使业务能够应对机房级别的故障,滴滴的存储服务都在多机房进行部署。本文简要分析了 Redis 实现异地多活的几种思路,以及滴滴 Redis 异地多活架构演进过程中遇到的主要问题和解决方法,抛砖引玉,…

【Git】第五篇:基本操作(添加文件)

.git目录结构 我们在前文中提过了.git目录,也明确说了我们不能手动去.git目录下创建修改等任何操作。 添加文件 我们现在已经了解到,git是一个版本控制器,可以对我们的文件进行管理。而我们需要使用git管理文件的时候,我们必须将…

Python爬虫程序网络请求及内容解析

以下是一个简单的Python爬虫程序,用于爬取商户的内容。这个程序使用了requests和BeautifulSoup库来进行网络请求和内容解析。 import requests from bs4 import BeautifulSoup# 爬虫爬虫IP信息 proxy_host duoip proxy_port 8000# 请求URL url 目标网站# 创建一个…

python爬虫 之 JavaScript 简单基础

文章目录 在网页使用JavaScript 代码的方式常用的JavaScript 事件常用的JavaScript 对象 在网页使用JavaScript 代码的方式 在网页中使用 JavaScript 代码的方式主要有三种: 内联方式(Inline): 在 HTML 文件中直接嵌入 JavaScrip…

首发!动手学大模型应用开发教程来了

大模型正逐步成为信息世界的新革命力量,其通过强大的自然语言理解、自然语言生成能力,为开发者提供了新的、更强大的应用开发选择。随着国内外井喷式的大模型 API 服务开放,如何基于大模型 API 快速、便捷地开发具备更强能力、集成大模型的应…

SystemC 学习之与 Verilog 的混合仿真(十)

1、SC 与 Verilog 的通信方式 Systemc 和 verilog 通信方式有两种,一种是 PLI,但是 PLI 只能 verilog 调用 c/c,不能从 c/c 直接调用 verilog,想要从 c/c 调用 verilog 的话,需要先用 verilog 调用 c/c 函数&#xff…

github镜像访问方法

https://ghproxy.com/ (GitHub 文件 , Releases , archive , gist , raw.githubusercontent.com 文件代理加速下载服务) https://mirror.ghproxy.com/ 在这个网址后面直接加上github的网址,如: https://mirror.ghproxy.com/htt…

光刻机ASML CYMER光电模块组件维修114122,S111310

1:436nm g-line 可以满足0.8-0.35 微米制程芯片的生产,对应设备有接触式和接近式光刻机。 2:365nm i-line 同样可以满足0.8~0.35微米制程芯片的生产。设备于上相同。 早期的光刻机采用接触式光刻,即掩模贴在硅片上进行光刻&…

hadoop 大数据集群环境配置 配置hadoop配置文件 hadoop(七)

1. 虚拟机的三台机器分别以hdfs 存储, mapreduce计算,yarn调度三个方面进行集群配置 hadoop 版本3.3.4 官网:Hadoop – Apache Hadoop 3.3.6 jdk 1.8 三台机器尾号为:22, 23, 24。(没有用hadoop102, 103,10…

C 语言数组

C 语言数组 在本教程中,您将学习如何使用数组。您将借助示例学习如何声明,初始化和访问数组的元素。 数组是可以存储多个值的变量。例如,如果要存储100个整数,则可以为其创建一个数组。 示例 cint data[100];如何声明数组&…

vue3 el-menu初始化时选中没有高亮的问题(default-active和index的问题)

首先看官方文档的示例: 需要注意的是: 1、default-active的值是字符串,那么index绑定的值也要是字符串,且数字对应。不能default-avtive绑定的是1,而menu-item的index绑定的是45 2、default-active的值是当前选中me…

[工业自动化-20]:西门子S7-15xxx编程 - 软件编程 - 基本编程指令与梯形图基本元素:位逻辑指令、定时器指令、计数器指令、触发器指令

目录 一、PLC编程的基本指令 1.1 什么是PLC指令 1.2 PLC指令的分类 1.3 PLC指令与梯形图基本元素的关系 三、基本的位运算指令 四、边沿触发指令 4.1 什么是沿 4.2 沿的持续时间 4.3 使用场景 五、定时器指令 六、计数器指令 七、触发器指令 一、PLC编程的基本指令…

gpt-4-vision-preview 识图

这些图片都是流行动画角色的插图。 第一张图片中的角色是一块穿着棕色方形裤子、红领带和白色衬衫的海绵,它站立着并露出开心的笑容。该角色在一个蓝色的背景前,显得非常兴奋和活泼。 第二张图片展示的是一只灰色的小老鼠,表情开心&#xf…

esp32cam串口问题

选择的串口 Failed to execute script esptool不存在或开发板没有连接 设置串口参数时出错:9,600 N 8 1注意到他说的串口设置错误,但是在设置里不能设置串口参数 所以说是串口打印的问题 把他换成esp32用的115200就行

大模型的全面回顾,看透大模型 | A Comprehensive Overview of Large Language Models

大模型的全面回顾:A Comprehensive Overview of Large Language Models 返回论文和资料目录 论文地址 1.导读 相比今年4月的中国人民大学发表的大模型综述,这篇综述角度更侧重于大模型的实现,更加硬核,更适合深入了解大模型的一…

《从零开始读懂相对论》

内容简介 相对论诞生至今已逾百年,但依然被人们津津乐道。相对论为什么如此有魅力?爱因斯坦为什么要创立相对论?本书从“零”开始,紧抓“相对”二字,将所有问题置于历史的背景下,竭力展现人类探索运动本质…

实用篇-ES-DSL操作文档

一、mapping属性 mapping属性的官方文档: https://elastic.co/guide/en/elasticsearch/reference/current/index.html 下面的表格是介绍elasticsearch中的各个概念以及含义,看的时候重点看第二、三列,第一列是为了让你更理解第二列的意思,所…

论文精读 MediaPipe BlazeFace

BlazeFace:Sub-millisecond Neural Face Detection on Mobile GPUs BlazeFace:基于移动GPUs的亚毫秒神经人脸检测 论文地址:arxiv.org/pdf/1907.05047.pdf 源码地址:GitHub - tkat0/PyTorch_BlazeFace: Unofficial PyTorch implementation…

无需数据库服务器部署脚本,全能型开源数据库监控平台lepus

Lepus 是一款开源的数据库监控平台,目前已经支持 MySQL、Oracle、SQLserver、MongoDB、Redis 等数据库的基本监控和告警。 Lepus 在监控数据库时,无需在每台数据库服务器上部署脚本或 Agent,只需要在数据库中创建授权账号后,即可…