ssd主控芯片
除了做ssd还能干点啥?
dpu600是dapustor业内首创的智能存储soc,基于最新的12nm finfet工艺,可作为ssd主控提供业界领先的性能,还集成了可计算存储平台,用于asic加速的机器学习架构等。
上期讲到得益于dpu600内置的应用处理器平台,可以将dpu600作为ssd tester的client平台。本期小编再说道说道,其他非传统ssd功能-关于计算存储的功能,这是研发小伙伴们努力后的干货。
同样地,小编需要先说道说道一下背景:
在大数据应用的背景下,海量的数据传输占用了各类总线,网络带宽,与此同时,固态硬盘(ssd)本身含有的cpu的算力也越来越强。为了减少大数据量的传输,从而衍生出各类对存储计算一体化(pis-processing in storage)的需求,即在数据端固态硬盘内进行计算处理,仅传输结果和部分数据,从而减少海量数据传输,减轻总线和网络负载(offloading)。一般而言,对i/o通信带宽敏感(i/o intensive)和对数据敏感(data-intensive)的两类操作;而需要高效计算、对cpu计算敏感的操作则不适合offloading到ssd中。
有人肯定想问,小编你说这么多,光有想法好像有点空泛,有没有具体方案和应用场景?
小编必须承认:存算一体化固态硬盘(pis-ssd)的相关架构和实现技术,目前确实相当少见被公布,毕竟在ssd领域,这里比较前沿的技术。在小编送出n个鸡腿情况下,研发小伙伴还是给了一些材料,以便进行探讨;
首先说说现有的技术,如图1,存储器端运行的是裸系统(bare metal)-固件(firmware),系统偏重于进行硬件支持的相关数据处理,而对应计算相关的需求,一般仅能承接部分简单的数据计算,这主要是引入过多的数据计算,会影响存储功能的实时处理。一般地,当有相关计算需求(主要是边缘计算(edge computing),机器学习(machine learning),主机通过自定义命令的形式通知ssd系统进行处理,此种方式不够灵活,且偏重于定制化,其开发应用效率低,无法满足更多计算应用的需求。
图1
说到这里,大家想到了dpu600肯定有什么东东,可以在此类应用上发挥作用?没错,大普微正在探索在dpu600上实现一种存储计算一体的固态硬盘。
先看一下,相对于图1,我们的设计基于如图2,服务器或者本地cpu成为主机(host)系统,主机系统可以同一个系统,也可以是不同的主机系统(如本地+网络)。同样地,一般存储管理和计算管理是同一系统,也可以是不同系统。主机系统不在本文谈论范围,只是为了说明相关性,主要是将服务器或者本地cpu的相关计算(存算应用程序)进一步减轻负载(offloading)到存储器(固态硬盘)内,同时必须减少对固件实时处理影响。故而为了使计算应用程序在存储器内能发挥更多更灵活的作用,且不影响存储本身功能的实时性,在存储器(固态硬盘)系统内设计成至少两个独立的软件系统,一个用于存储数据,一个用于计算应用。
基于此这种需求,那么设计需求上:
1.由于dpu600具有双cpu cluster架构,可以满足运行双系统的需求。同样地, dpu600有2个主机接口(pcie),满足数据的存储和计算两种通路需求,即一个主机接口用于数据存储,另一个主机接口用于数据计算。
2.系统架构上,采用异构并行系统,包含两个系统:实时处理系统和应用操作系统。一个cpu cluster上运行实时处理系统,一般是固件(baremetal firmware),专门处理存储事务;另一个cpu cluster上运行计算应用系统,一般是应用操作系统,如linux,专门处理计算应用事务。基于各自不同特性系统独立并行运行,提高其各自对应的事务的处理效率。
图2
为了隔离软件系统的不同特性,软件系统之间,通过ipc(inter-process communication)机制进行通信,完成数据和信息的交互,即通过ipc传递io操作。其在cpu上软件布局如图3,其ipc的实现包括软件fifo,硬件 fifo,共享内存,硬件ipc逻辑电路等。
图3
小编根据研发小伙伴的建议,这里把关键io操作处理流程进行探讨一下:
如图4,描述了2个软件系统的io操作在主要模块流向,其中
1. pis应用系统,除了os kernel之外, 包括:
数据计算应用层,用于进行和主机任务相关应用处理。由于基于操作系统(os),应用层的开发具有非常高的通用性,可以脱离相关硬件特性,应用包括搜索引擎的求列表交集(list intersection),mysql的检索等。数据计算中间层,处理底层驱动和应用层的衔接事务。如将数据计算任务转化成特定的io操作。专用驱动层,主要处理和硬件特性相关驱动处理,如ipc相关接口出来,同时负责发送或者接收特定的io操作。
2.存储rtos/fw系统,是典型的存储处理模块系统,包括:
前端模块(fe)负责主机通信协议栈,命令数据分发处理。数据处理模块(dp)负责数据通路的处理,如写(读)缓存的管理。算法模块(ftl)负责映射表的管理,闪存数据分布管理等。后端模块(be)负责闪存数据读写和相关闪存命令的管理。
两个系统均有分层结构,那么两个系统之间传递的io操作,可以在底层设定的特定数据处理单元,该数据单元通过ipc系统进行传递。数据单元包括数据,操作信息等。对应驱动而言,派发或者读取io操作是把io操作的信息写入或者读取到“fifo/共享内存/硬件ipc逻辑电路”的接口,从而较好的隔离两个系统。
图4
存储相关典型操作流程,除了其中计算需求的io视作另一种fe的数据需求,其他处理方式可以通用化,即总体流程和现有技术大同小异,不再累述。整个系统设计时(指主机系统+存算系统)会将计算应用需求中分解出成适用于存算的计算应用到存算系统。当有存算系统计算需求时,主机系统将发操作任务给存储器内的存算系统,其中相关任务包括但不限于数据搜索(search),数据比较(compare),数据标签(tag),数据索引(index)。存算系统收到任务后,在应用系统进行任务分解,转化为io操作给存储系统进行数据操作(主要是从闪存颗粒读数据),存储系统完成数据操作后,将数据返回给应用系统进行数据计算,完成所有任务对应的数据计算后,其中由于dpu600包含硬件pis处理能力,故而处理时硬件pis处理通过专用驱动完成,而软件pis处理则在计算应用系统的应用层程序完成。应用系统回报计算结果给主机系统,而不需要报整io数据回给主机。
小编在这里copy过来:一种计算应用场景,在dpu600的加持下,下面所述的计算需求更容易offloading到存储器内部的应用系统。
服务器一种典型的搜索应用,传统的所有步骤步骤均是在主机计算完成。在引入存算一体化存储器之后,可以把部分计算移入到存取器内。如图5,“获得倒排序表”“计算列表操作”,存储器内完成后仅返回结果。我们的设计采用计算应用独立系统之后,对于哪些步骤(具有应用可扩展性)移入存储器内,可以更灵活:可以把对应步骤的程序实时在线地移植到存储器内os上,而不是通过更新固件才能迁入。比如步骤获得元数据和计算相似度和排序,可以根据存储器内cpu算力,或者存取器内系统负载程度,来决定来是否有存储器内进行承接计算。
图5
原文标题:ssd主控芯片,除了做ssd还能干点啥?-ii
文章出处:【微信公众号:大普微】欢迎添加关注!文章转载请注明出处。
单身经济消费潜力巨大 壁挂洗衣机市场来了
全球硅晶圆市场出现复苏迹象,中国5G业务发展拉动其行业发展
Zendure推出一款容量27000mAh的移动电源 可输出最高138W的功率
微源半导体TWS耳机电源解决方案
除了惊艳还是惊艳,雷军自曝小米mix2开箱图是真的惊艳到了!
SSD主控芯片,除了做SSD还有什么其他用途?
德国硬气拒美阻华为5G“讹诈”:不需任何人的建议
新闻 | 华为发布二十个高价值工业场景,打造工业智能体,满足工业数字化需求
Linux进程的概念及进程通信的应用场景
块存储设备知识详解
认识类脑计算与工程——海量数据、计算资源与类脑逻辑 (一)
谷歌AI中国中心落地北京 李飞飞、李佳率领
华为P30系列发货数量公布,在全球获奖无数
应用于浴室的智能魔镜,带领我们共享智能生活
盘点8/9月份AR眼镜产品汇总
8位MCU TM56F1552在电陶炉的应用方案,集成低噪声OPA
除颤器分析仪对除颤器质控的必要性
激光打标机是实现不锈钢五金商标LOGO铭牌标记重要设备之一
人工智能具备创造力吗
影响激光切割尺寸精度的因素有哪些