免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[其他] 华山论剑新解--软件硬件谁在引领IT技术革命?(获奖名单已公布-2014-6-5) [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:49:45IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
101 [报告]
发表于 2014-05-13 19:00 |只看该作者
beyondfly 发表于 2014-05-13 18:40
回复 89# 冬瓜头


论坛徽章:
0
102 [报告]
发表于 2014-05-13 23:07 |只看该作者
回复 82# 冬瓜头

你说的这个,用物理地址(Physical Memory Address) DMA也可以做到。

虚拟地址(Virtual Memory Address DMA)是个新玩意,在早期的MIPS CPU构架中为了降低流水线深度,才用了Vitual Memory Address Cache,但带来一系列的不便,其中就有DMA address aliasing 的问题,你若google 这些关键字,会找到很多相关的资料探讨这问题。

看看传统Physical Address DMA的使用方法,就可以猜测Virtual Address DMA给软件带来的便利之处。以应用程序想把一个指针指向的内存区域(例如malloc得到的在Virtal Address 空间中连续的内存)用Direct I/O的方式直接写道SAS盘上,为了简化讨论,我们略过文件系统内部的复杂性,简单地认为DIRECT IO方式通过文件系统时不经buffer的缓存,直接就传达到SAS Driver层, 而没有经过memory copy (实际情况要复杂些)。SAS Driver 的任务是要把用户空间的Virtual Address buffer 写到硬盘的某个LBA开始的区域中去。SAS 控制器的硬件是以物理地址来进行DMA 操作,因为在PCIe总线上外设硬件是不了解Virtual Address的,只认识Physical address. 只有操作系统内核具有整个Virtual Address 空间如何通过MMU页表转换成Physical address的全部知识,而CPU硬件上有TLB(用于地址转换的高速缓存,存放了最近在使用的几个转换的结果)和MMU(负责整个空间的转换)。SAS 控制器的DMA,采用SGL(即表示一系列物理地址中的缓冲区碎片的链表)数据结构来代表刚才提到的数据缓冲区。 Driver负责
1) 通过系统调用把这个虚拟地址的buffer 影射并锁定到物理地址空间,这个过程要walk page table,并把缓冲区逐页面锁定,(在此之前,有些页面可能被对换到硬盘的虚存对换文件中去了,还要把它们对换回来才能锁定)。这个过程不能保证每个页面在地址连续的物理空间,因此产生了物理空间中的一系列的整页,或页面的一部分构成的碎片。
2) 要把这个碎片序列转换成DMA 所认识的SGL 格式来代表。
3) 把这个SGL 以及SCSI 命令的相关信息发给SAS 控制器硬件队列。
4) 硬件执行这个命令,完成后会中断Driver,并通过队列提供I/O的索引,和命令的结果。
5) Driver 受到写完成能后,通过系统调用把这个buffer unlock, unmapped,即undo 步骤1中的操作。

另外,如果CPU不支持cache IO coherency的话,还要在步骤1,或5 (取决于读或写)逐cache line来writeback_invalidate 写buffer, 或invalidate 读buffer.
另外,DMA 硬件为了支持高速地对SGL buffer 进行数据传送,其复杂性和设计难度也是很大的。
这个过程,我们用SAS 控制器作了说明,其实对具有DMA的外设,无论是网卡,NVMe SSD, 还是其他种类设备,在对DMA方面的原理都是几乎一样的。 

如果DMA 可直接采用虚拟地址,这一系列麻烦都没有了。直接的好处就是Driver的软件延迟和CPU开销可大大精简,这个对高速的硬件是十分关键的(例如SSD, 40G/100G NIC).
如果网络系统中可直接用虚拟地址作RDMA,这就更有意义,用户态程序可直接访问远端进程的用户态缓冲区,对应用程序的开发带来的性能提高和便利可想而知。

论坛徽章:
0
103 [报告]
发表于 2014-05-13 23:09 |只看该作者
CUTianrui007 发表于 2014-05-13 16:04
硬件取代软件实现分布式共享存储(FDIO)的迫切性,这个完全有可能的,当然这个要硬件本身有着新的设计理 ...


这个总结很精辟。

论坛徽章:
1
摩羯座
日期:2013-11-29 18:02:31
104 [报告]
发表于 2014-05-14 08:35 |只看该作者
Heng_Liao 发表于 2014-05-13 23:09
这个总结很精辟。


阁下大神啊,膜拜之。

论坛徽章:
1
寅虎
日期:2014-06-05 13:38:02
105 [报告]
发表于 2014-05-14 10:05 |只看该作者
软件硬件谁在引领IT技术革命?个人感觉不同时期两个都有引领革命的时候,不同的时代也都有制约IT技术革命的时候。早期计算机硬件存储的限制制约了IT技术发展,现在来看倒是像软件在制约IT技术的发展!

论坛徽章:
0
106 [报告]
发表于 2014-05-14 11:02 |只看该作者
回复 100# beyondfly


    PMC的官方博客近期正连载FDIO构想的来龙去脉:

http://blog.csdn.net/pmc/article/details/25699079

供大家参阅。读后有何感想,欢迎继续论道。

论坛徽章:
0
107 [报告]
发表于 2014-05-14 11:58 |只看该作者
回复 87# beyondfly


为了对FDIO 比较系统的介绍,我们用博客形式发了新型I/O架构引领存储之变系列的4篇白皮书。希望能有帮助。

http://blog.csdn.net/u014602076/article/category/2213433

这个要变成现实,硬件上是完全可行的,但要仰掌软件体系搭台子才能发挥它的用途。


   

论坛徽章:
0
108 [报告]
发表于 2014-05-14 12:14 |只看该作者
niugb 发表于 2014-05-13 17:01
觉得这两个是相互促进的关系,只是说在某个阶段硬件或者软件更占主导地位吧,
硬件更多的是基础的架构搭建,存储互连方面,从原来的SATA,到SAS,再到目前的PCIE,都在不断的进步,但从硬件的进步 看,促进了软件的进步,现在看更多的是软件可以在高带宽的互连上,做的事更多,软件发挥的余地更大了,后续还会有更多提升,硬件提供的性能越好,软件就越能发挥出来更好的性能。
      软件的进步也促进了硬件进步,让硬件的设计更加专一,
      从云的角度出发,原来的软件更多的能够做出符合要求的一些方案,但随着云的发展,有更多的要求被提出来,比如:带宽要求更大,访问延时要求更低,IOPS的要求更高,数据不断的增加,要求存储与计算分享,也可能是处理器与内存分享等,这些要求的提出,仅凭软件的解决方案就不能完全解决,这时推动了硬件的一些解决方案,这些硬件的解决方案,推动了软件解决 方案重新审视我们现有的软件解决方案是否能够满足要求,是否需要新的软件架构来与新的硬件方案重新匹配,等,所有的硬件与软件架构的新的推出,都是基于某些应用或者需求来的。这些需求更多是新的模式的出现为推动因素。推动着软件和硬件的向某个方向发展。
总的来说,是软件与硬件共同的进步,螺旋式上升,相互的推进软件与硬件的共同进步。 ...


楼主说道了问题的关键, PMC作为芯片行业内的存储领域有特色的中型公司,想要推动FDIO这样的硬件体系的革新,从芯片上实现你提到的一系列改进(带宽要求更大,访问延时要求更低,IOPS的要求更高,数据不断的增加,要求存储与计算分享,也可能是处理器与内存分享等),我们是有信心的。但是要推动平台软件,还有广泛的应用层的软件生态体系来发挥这些特长,就感到有些吃力。还望楼主能帮我们添砖加瓦搭台子,创造需求。

在互联网数据中心,由于对硬件的购买力集中在很少的几家大型互联网客户中,推动这样的革新有希望。哈哈,要是阿里,百度,腾迅当中有一两家说这样的硬件体系有现实的用途,还愿意投入软件体系的配合开发,那硬件就有了动力。

论坛徽章:
0
109 [报告]
发表于 2014-05-14 14:01 |只看该作者
本帖最后由 Heng_Liao 于 2014-05-16 15:45 编辑

新一代的SAS/SATA/PCIe 3模的IOC和ROC,前端还是PCIe, 后端的接口可自动式配SAS盘,SAS Expander, SATA 盘,PCIe 盘, 或PCIe Switch. 内部仍然继续增强RAID处理系统。


对主机对PCIe 的访问可直接bypass RAID, 主机CPU看到的是一级PCIe Switch, 对延迟基本没有影响。也可通过RAID对PCIe 盘进行访问,这个会解决对本地SSD盘数据保护,但是会有RAID的固有延迟。



该混合式交换芯片把PCIe Switch 和 SAS Expander 集成在一体,任意端口可插入SAS, SATA 或PCIe 盘。这和混合模式的IOC/ROC一起构成的系统,用统一的数据通道支持了完全灵活混插SAS/SATA/PCIe的存储后端系统。



论坛徽章:
0
110 [报告]
发表于 2014-05-14 14:33 |只看该作者
本帖最后由 Heng_Liao 于 2014-05-14 14:45 编辑
niugb 发表于 2014-05-13 17:14
SAN解决了共享问题,用传统的硬件可以保障数据安全通过RAID或者是多放几份数据,但目前存储的互连是PCIE的网 ...


在传统DAS架构中的本地SSD,不涉及到共享的问题,如果要在块设备上实现对OS/文件系统/应用透明的数据保护,还可采用RAID这类技术。只是RAID控制器设计在带宽IOPS方面要能和SSD的性能相匹配。

在SAN 构架中,SSD可通过闪存阵列来提供。闪存阵列本身实现某种类似于RAID的数据保护和存储虚拟化层,这个RAID系统的设计,要在更大规模上保证带宽和IOPS。 Violin Memory 这类阵列,其实还是于传统硬盘阵列的升级版,采用双控或多控处理单元来提供更高的性能,但本质上不太容易Scale 到能匹配成百上千个SSD的性能。也有更先进的方案,如我们的合作伙伴DSSD(刚被EMC并购),其实把SAN和闪存阵列合为一体,(即前端就直接提供了很多个供服务器直接连接的PCIe端口)然后再数据保护层采用全分布式的实现,因此能达到的性能更高。这个全明星团队才被EMC相中娶回家中。

我们认为,IOPS和带宽还是有办法扩展的,但是数据保护和虚拟化层引入的额外延迟是不可避免。关键要看增加的延迟十分对应用带来大的伤害。在好的实现中,这个延迟不会比SSD盘的延迟更大,也就是说不会是2倍于SSD设备延迟。其实还可以做得更好,就看应用需求。

要是应用对延迟十分敏感,恐怕数据保护层就要在应用层实现最合理,存放多份数据,或采用删错编码(Erasure Coding)都可以。这些概念可在DAS 或SAN 上实现。

FDIO 在存储方面,其实就是一个机架内部的穷人的SAN。由于限定在机架范围,固定拓扑,只提供小范围的虚拟化和于数据中心控制平面相对接的较简单的管理功能,因此比传统SAN,硬件,软件负责度都作的很大简化,因此成本比SAN有1~2个数量级的缩减,而增加的是带宽---无论用SAS, 还是PCIe 来做FDIO, 目前技术都可在不增加标准服务器成本的前提下提供远远高于Ethernet 或各类SAN的访问存储矩阵的带宽。比如通过标配的8口SAS HBA,它的Fabric 带宽在 8x12Gb= 96Gbps 的带宽用于访问全局的存储池,这个没有增加服务器成本。同样,直接采用PCIe口访问Fabric, 也可达到这样的带宽,同时又能有更低的延迟特性。如果采用Ethernt, IB, FC, 要达到96Gbps的块存储业务(FCoE, iSCSI等)恐怕这个基本的产品几年内还不能普及吧,即使有,这个网卡的成本和CPU开销要大于服务器本身的成本,再算上相应的交换机端口成本,对比结果FDIO的优势是不言而喻的。

在FDIO上,我们还提出了全分布式Proxy 虚拟化代理的概念,每个Proxy可在命令和响应处理方面实现代理功能,用于实现RAID, Erasure Code, 自动镜像,压缩,Dedup等功能,但数据通道上又可实现DMA传送的直通。这是为了优化“虚拟化层引入的额外延迟”使它最小化。这和DSSD的基本思想一致,具体实现上不同。做芯片的有这个优势,只要有需要又有合理算法,想做什么功能都可以放在芯片里面,最关键是把这些“高大尚”的技术给贫民化,使得大家都能用得起。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP