本文作者:王齐,前Intel资深架构师,《PCI Express 体系结构导读》图书作者,公众号“南郭比特”。
2016年7月初,ITRS (International Technology Roadmap for Semiconductors)发布了也许是最后一份有关半导体工艺的报告。硅半导体工业在历经五十余年的辉煌后,逐步走向尽头,基于硅的晶体管尺寸(Physical Gate Length)可能在五年后于10nm处终结[1]。我们继续从理论上探讨晶体管能否到达5nm愈显苍白,芯片在大规模量产时使用5nm日趋渺茫。
在实验室早已取得成功的7nm技术,前景并不乐观。基于性价比的考虑,使得在没有足够商业利益驱动的7nm技术,面临着无法大规模产品化的现实。南美蝴蝶翅膀几次微不足道的扇落,足以使得继续在刀尖上行走的5nm与7nm技术,跌下神坛,粉身碎骨。
摩尔定律已正式结束,但永存于世间。
图11摩尔定律的终结[2]
在世界范围内,对硅半导体的材料科学,制作工艺,有能力也有意愿继续的厂商可能只留下了Intel,Samsung,TSMC与Global Foundries。在近期或者在不久的将来,或许中国为了完成世界工厂的巨大转型,将接过半导体生产制造的旗帜,使其更加廉价,使其更加缺乏必要的盈利以支撑整个产业链的持续发展,维系也在终结这个行业。我继续悲观地维持在几年前的判断[3],基于硅的半导体工业不可或缺,也不再重要。
谈计算
缘起于上世纪四十年代的冯诺依曼体系正在等待着最后一根稻草。至今处理器的设计者再也无法按照自身的理念决定自己的设计方向,当这些处理器的设计者不知道做什么合适,而转身专注于Cache、内存与I/O通路时,基于冯诺依曼体系的传统处理器事实上已经结束。掌握用户场景与应用的厂商目前是处理器真正的设计主导者。定制化时代不再是多年之前的预判[4],而是已然来临,并主宰着处理器设计的方向。
硅半导体与传统处理器的停滞不前,不会结束人类对于硅的依赖,在短期内尚无任何材料能够完全替代硅。应用对于硅的需求依然明确。在一分钟内,Youtube将至少接收长达100个小时的视频文件[5];在Facebook上,每天有40亿次视频点击播放[6]。这些应用需求将通过网络,到达各类服务器,并从存储器中获取或者写入数据,进行着各类数据的处理。在计算、网络与存储这些基础架构中,硅半导体依然占据主导地位。
神奇的半导体硅改变了人类历史的发展轨迹,也几乎走到了尽头。近半个世纪以来,硅一直有互补品,如砷化镓GaAs与氮化镓GaN,这些在大功率与高频领域已有着重大应用的半导体材料无法取代硅,基于二硫化钼MoS2和碳纳米管CNT (Carbon Nanotube)的晶体管甚至可以将Gate Length做到1nm[7],但是依然处于实验室阶段,用其替代硅仅仅停留在论文的纸面之上。至今硅工业的天花板制约了整个IT基础设施行业前进的脚步。
在计算领域,被软银收购的ARM已经难以对x86处理器带来持续的压力。在手机处理器上取得了长足进步的苹果、高通、三星与华为,在近期难以在服务器市场上对Intel带来实质性的挑战。许多ARM服务器在SPECInt的测试中宣称已逐渐接近了x86处理器,却在有意无意的忽略着一个显而易见的事实,这一代的服务器,甚至是手机处理器,都不应该继续关注SPECInt与SPECfp这类单纯比拼计算性能的基准测试。
目前处理器的设计中心已经转向I/O与Memory Hierarchy通路的建设。在Intel的Broadwell-E处理器的Die Map[8]中,10个处理器微架构(Core)合在一起所占的比例已经不算太大,Memory Hierarchy与I/O占据了大多数的Die资源。
图12 Intel的Broadwell-E处理器的Die Map[8]
在一个处理器微架构中,运算单元所占的比例几乎可以忽略不计,在处理器微架构中,依然是种类繁多,各类数据缓冲占据着主导位置。事实上,除了模拟器件以及与模拟器件强相关的芯片外,在多数芯片Die Map中,缓冲都占据着关键位置。迄今为止,计算领域的多数应用对处理器的使用都是访存密集型。
处理器的设计初衷本是为计算服务,但是在今天的许多应用场景中,处理器所承担更多的任务是通过各类I/O设备获取数据;这些数据在穿越Memory Hierarchy后抵达CPU的核心部件;CPU核心部件在精确计算着心跳的过程中,尽可能地快速处理这些数据,而后将其再次转发至远方。和密集计算相关的任务,已经通过各类硬件加速引擎,GPU或者专用ASIC实现。
我们无法直面一个简单而令人沮丧的事实,在处理器运行着的各类协议栈的代码组成中,用于实现快速路径的代码可能不超过1%;99%以上的用于异常处理的代码,可以在超过99.9%以上的时间段内安然入睡,其存在只为等待着可能的异常出现。
不是因为这些多如牛毛的异常需要处理,也许我们这个世界已经不再需要通用处理器了。从纯计算的角度上分析,各类硬件加速引擎,GPU、FPGA或者专用ASIC,远胜今日的处理器,但是这些加速引擎在面对成千上万种异常时无能为力。在移动互联网厂商的数据中心中,处理器存在的最主要目的是对各类数据流进行分析、组装、打包后发往下一站。
在这些应用场景中,处理器存在的首要原因依然不是其高效的报文转发能力,而是能够应对在报文处理过程中出现的各类异常。在数据中心中,处理器存在的主要作用是能够相对高效地处理数据报文,同时还能对各类异常进行查漏补缺。不仅在计算领域,在IT基础设施的网络与存储领域,通用处理器的使用方式依然如此。
能够对通用处理器带来挑战的GPU,前景没有想象中乐观。从设计策略上看,GPU与通用处理器的最大区别在于对异常的处理。GPU专注极致计算,尽最大的可能提升TLP (Thread-Level Parallelism),而忽略异常处理;通用处理器需要考虑异常状态的处理,以追求更大的适用性。
在不同设计策略的引导下,GPU走出了一条与通用处理器迥异的道路。Nvidia的Pascal GP100由最多可达6个的一组GPC (Graphics Processing Clusters)构建;这些GPC共享同一个4096 KB的L2 Cache;通过8个512位的Memory Controller对外交换数据;使用高速的NVLink接口与其他GP100互联;最后通过PCIe 3.0总线与通用处理器进行连接[9]。
图13 Nvidia Pascal GP100 GPU组成结构[9]
在每一个GPC中,最多可以容纳5个TPC (Texture Processing Clusters);每个TPC中集成两个SM (Streaming Multiprocessors);每一个SM包含64个CUDA和4个TU (Texture Unit)。其中最基本的CUDA核心和TU数目分别可达3840与个240个。GPU的Die Size可达610mm2,所能容纳的晶体管数目可达153亿个[9]。
GPU与通用处理器,是设计者在面对有限的Die Size资源,做出的不同选择,以适用于不同的应用场景。由数目繁多的运算单元所组成的GPU,其组成结构不比通用处理器复杂,反而更为简单。但是这无法解释,Intel可以做出更为复杂的通用处理器,却在高端GPU领域上反复折戟沉沙;也无法解释,服务器级处理器的设计难度超过手机处理器,Intel依然屡战屡败。
通用处理器需要处理各类已知与未知的异常,在进行计算的同时,不断地处理各类分支跳转语句;随时准备应对各类中断事件;与此同时需要具备大规模的数据吞吐能力;也因此通用处理器需要一个规模庞大的通用操作系统。至今,计算已是通用处理器中的一个微小组成模块,通用处理器中最大的模块,是各类Cache和与其紧密联系在一起的Memory Hierarchy。
GPU聚焦的计算世界相对单纯;所处理的数据规整;数据间几乎没有太多的依赖;不需要管理外部设备,不需要处理各类中断与异常,也不需要一个操作系统。从GPU的发展历史上,可以发现,GPU所处理的图像数据并不具备非常强的Locality特性。在GPU中,Cache存在的主要作用不是为了保存需要反复使用的数据,而是为了弥补GPU内部运算部件与外部DRAM之间的访问延迟,从而没有如通用处理器那样的,复杂程度令人叹为观止的Cache Hierarchy结构。
在GPU中,存在与通用处理器类似的流水线,Nvidia的GP100中的基本组成模块SM,本身就是也是一个流水线,这个流水线也被称为Graphics Pipeline,在不考虑光栅化处理的场景下,Graphics Pipeline也被称为Rendering Pipeline。
图14 Pascal GP100中SM的组成结构[9]
在Graphics Pipeline中,依然包含与指令流水线中类似的概念,如指令Cache, Dispatch Unit, Scheduler, 与Register File等。也与指令流水线有很多不同之处,Graphics Pipeline不包含通用处理器用于数据相关性检查与乱序处理的Reservation Station与ROB (Reorder Buffer)。在Graphics Pipeline中的ALU充斥着大量的CUDA Core,并设置了专门的TMU (Texture Mapping Unit),以便于对图像数据做进一步处理,如旋转、缩放、扭曲等改变尺寸的操作。
这些表面差异并非GPU的Graphics Pipeline与通用处理器指令流水线的最大区别。GPU与通用处理器的差异依然是设计策略上的区别,在于异常与中断的处理策略上。从处理的数据源上看,GPU与通用处理器的最大区别在于所处理的数据是两维或者多维;从解决具体问题的层面上看,通用处理器侧重于对问题的精确求解,而GPU侧重于获得一个相对模糊的答案。从计算的顶层结构向下俯视,GPU与通用处理器依然遵循冯诺依曼的设计哲学。
存储器瓶颈制约着通用处理器的发展,也同样制约着GPU的进一步发展。主要用于计算的GPU,继续提高TLP (Thread-Level Parallelism)不是提高GPU整体效率的有效方法。与许多人的预估并非一致,GPU继续提升TLP,非但不能因为其高并发隐藏了存储器延迟,而且对存储器系统带来了更大的压力[10]。GPU没有脱离冯诺伊曼体系,只是一种不同的处理器实现策略。
以冯诺依曼体系的提出作为一个重要的分水岭,计算大致分为三个阶段。第一个阶段,科学家们用当时较为复杂,目前看来简单的电路逻辑,搭建各类定点与浮点算法,尝试精确获得某类问题的答案;冯诺依曼体系提出至今这个阶段,所解决的问题是从模糊到逐步精确,直到今天的举步维艰;在今天,我们将基于一维的定点与浮点算法推向前人无法企及的高度之后,开始漫长的等待,从逐步精确到模糊而不可预知。
人类的努力可歌可泣,他们在不知道如何选择是正确之时,做出从精确再次重归模糊的选择,重拾在上个世纪末被暂时搁置的人工智能,引入了一个新的词汇深度学习,开始了从一维空间的接近精确到多维空间模糊决策的探索之旅。目前深度学习的理论基础还显薄弱,这一代的计算平台,无论是通用处理器或者GPU还可能都不是一个合理的计算平台。
这些事实并没有阻挡,深度学习领域对GPU的严重依赖。如果仅从今天人类掌握的技术中做选择,GPU比通用处理器更加适合模糊计算这个领域。GPU从诞生之日起,就没有追求精准的计算结果,设计目标是其处理结果能够满足人眼模糊的分辨率。
Alpha Go战胜李世石,在弈城网与野狐网上横扫天下,没有保证每一步棋都是绝对最优,只需保证每一步棋比人类所能构想的最优稍胜一筹。至今利用深度学习的所有已知成果,甚至无法帮助我们精确地确定,某一个指纹或是某一个面孔一定归属于某一个人。
似乎在深度学习领域,我们很难得到一个精确结果。这些没有实现,且有机会实现的目标,为人类的发展提供了新的希望。在很多情况下,人类所追逐的是希望,而不是最终的结果。在内心深处,我并不情愿这一次的探索之旅成功。因为每当出现一个领域,其模糊决策能够比人类更加接近精确时,在这个领域,机器都将战胜人类。
谈网络
计算、通信与人类文明形影不离。不同的时代赋予了计算不同的内涵,也赋予了通信不同的内涵。在每一个时代,计算与通信总是密不可分,相辅相承。计算离不开网络,反之亦然。在今天,计算领域无法突破冯诺伊曼体系,通信领域面临着香农极限。几乎在同一个时间点起步的IT基础设施的两大领域,计算与通信,也几乎在同一个时间点止步不前。
在上世纪的四十年代末期,近代IT历史上,出现了两个对电子与电信行业的发展产生深远影响的事件,香农发现了以自己名字命名的三大定律,香农的三大定律奠定了信息论与编码理论的基础,也给人类带来了一个新的词汇比特(Bit)。与此同时肖克利发明了晶体管,晶体管的出现极大促进了计算与通信的发展。
晶体管很快应用在电话系统中,也同时出现在计算领域。集成电路的出现进一步加快了现代的计算与通信系统的演进。在Intel的第一个处理器4004正式推出之后,以太网如影随形。计算与网络两大领域,在硅工业的持续进步过程中,在自身与自身的剧烈碰撞与相互繁殖中,持续扩展着各自的应用边界,之至今日的云基础设施。
1973年,施乐的Bob Metcalfe发明以太网,之后DEC与Intel的加入极大促进了以太网的发展,以太网的第一个版本DIX (DEC Intel Xerox) V1于1980年正式发布[11]。以太网在陆续战胜FDDI (Fiber Distributed Data Interface)、ATM (Asynchronous Transfer Mode)等一系列竞争者之后,一路绝尘。在局域网领域,建立了一个不可匹敌的以太帝国。
上世纪末出现的IB (InfiniBand) 试图对以太网发起挑战,却在近期无法看到动摇以太帝国的丝毫可能。IB的V1.0版本出现在2000年,设计野心是替代处理器系统的局部总线PCI,互联网中大规模应用的以太网,与SAN (Storage Area Networks)中的FC (Fibre Channel)。IB最本分的应用依然在大规模处理器集群应用中。
IB从诞生起的十年中备受磨难,Intel不会坐视IB与PCI Express总线竞争;比IB诞生更早的FC在SAN领域已根深蒂固;无所不能而且无处不在的以太网最后还是将IB挤压至其本分的应用领域,集群服务器。TOP500处理器一直是IB不能失守的最后阵营。IB是学术界的宠儿,在对高性能计算有所追求的领域,IB在许多应用场景中凭借着出色的性能与较低的延时胜出,而在HPC (High Performance Computing)和高性能云计算领域得到的广泛应用[12]。
IB架构唯美,干净,一秋若水。这个一秋若水缘于在其漫长的发展过程中,一直被忽略也乐于被忽略,没有经受过多的干扰,二十几年前,我第一次去喀纳斯湖,除了震撼外,体会的是寂静而后的肃杀。偶尔为之,别样风景。人的存在会打破自然的静谧,也带来勃勃生机,缺少万物之灵的景色,难抵极境。我喜欢现在这样的,有三两好友陪伴着的喀纳斯。因为人的存在,风景格外精彩。
以太网精彩世界源自于诸人参与的熙熙攘攘。InfiniBand很少有机会去介入而分享这份精彩。纵观IT史册,能取得流行而大获成功的技术不会唯美,多数是黑大傻粗,成本低廉的。Unix的设计哲学KISS (Keep It Simple and Stupid)在今天无限接近真理。有所长的丑战胜无缺的美发生在此时此刻,而且在不断的演绎进化与升级。
以太网从诞生之日起至今日,从未完美过,与优雅ATM (Asynchronous Transfer Mode)相比,始终是下里巴人,直到把阳春白雪的ATM彻底赶出历史舞台。如果IB的所有优点,都能通过以太网进行应用场景微调,或者上层协议补充,IB依然还叫IB,无法更近一步。以太帝国是有日出不穷的缺陷,但是以太帝国还是以太帝国。
私有数据中心的兴起,使得以太网与其身后的Ecosystem愈显臃肿。在一个数据中心所使用的传统交换机与路由器中,大多数软件协议栈并没有太多的用武之地,其中许多协议是为了解决广域网存在的各类问题。在广域网技术持续发展,取得显著进步的同时,也不可避免的积累了一系列问题,在解决这些问题的过程中,更多的新协议在持续产生的同时,必须要兼容旧协议。不同厂商因为各自的利益,所提供的网络设备在互联互通上并没有想象中完美。
以太网的使用过于广泛,这个广泛在带给以太网无限空间的同时,也带给设计者不小的麻烦。以太网所面对的问题绝不是TCP/IP协议栈的低效,不是存储转发模式带来的延迟,不是吞吐量不足,不是流控机制,也不是QoS。这些问题在理论上全部可以解决。
以太网所面临的主要问题在于自身使用的过于广泛,参与者过于众多,Ecosystem过于强大。这使得以太帝国在长期以来只能有变化而无真正变革。治大国如烹小鲜,基于以太网的网络基础架构设计者,对任何一个微小调整都会陷入“什么是权衡,什么是掣肘,什么是不得已,什么是怎样做都是错的”,这样深重的哲学思考中。
Internet网络组成的复杂程度已经不能用任何词汇去描述。从最末梢的移动设备,引申到2G、3G、LTE (Long Term Evaluation)、IP RUN到核心网;从最末端的PC机,引申到Wi-Fi、交换机,各级路由器到骨干网。即便我们不去讨论国家级的网络基础设施这样的深重话题,一个大型跨国公司的网络拓扑结构也足以复杂到令人无法直视。
网络设备价格始终居高不下,但是对于许多应用场景而言,这些昂贵的网络设备所提供的多如牛毛的Feature,除了必不可少的硬件通路部分,只有部分功能真正有用。在交换机与各类路由器中,硬件成本所占比例很低,其售价的多数是为了补贴软件上的投入。这些盈篇满籍的软件投入,所体现更多的是商业利益,而非技术驱动所带来的需求。
移动互联网的兴起重置了网络基础设施的发展轨迹。承载着数以亿计用户的互联网应用背后,是庞大的数据中心。互联网数据中心的野蛮成长,逐步触发了云计算与云存储技术的诞生与发展,云时代的到来对网络基础设施提出了新的挑战。来自这个领域的精英,首先面对的挑战是理解已有的网络基础设施。摆在这些人面前的第一道难关不是温习基础的网络经典著作,而是去理解在他们眼中,毫无道理,不知所云,只能死记硬背的几千种RFC与ITU制定的协议。
RFC与ITU标准已多如牛毛,从TCP/IP到OSPF、BGP、IGMP、STP多达几千种。这些协议无法消除不同提供商的网络设备,在数据交换层面上的统一;在控制与管理层面每家厂商的做法更加不会相同。最为重要的是,传统的交换机与路由器并不能满足一些新增的业务需求。
一个新增协议,从制定、讨论、发布到实际部署的周期之长,使得最有耐心之人亦无法忍受。这些协议是否被接受,在很多情况下并无至深的理论依据,所遵循的只是质朴的商业丛林法则。
人类文明得以持续向前的动力,在某种程度上,是因为总有一些不安现状的精英们,敢于持续地挑战现有的丛林法则,并创建新的秩序。这些精英通常是近乎强迫症的完美主义者。他们的病态只有两种解药可救,一是融入旧的体制用时间与精力换取空间,或是另辟蹊径。待到直面成千上万,不知所云的网络协议时,他们最终选择另辟蹊径。
基础网络设施在经历了最初爆发期之后,步履蹒跚。网络运营商与设备制造商,在各种商业利益,甚至是在国与国的利益间周旋,腾挪空间有限,这种空间有限所带来的直接后果是各种类型的低效,这一低效使得在这个行业的精英进一步流失,使这个行业事实上止步不前;也进一步使得这个行业持续发生着各类并购重组,使得从事这个行业的公司总量在逐步缩小。
一个曾在华为数通的朋友与我讲,我们打败甚至打死了一个又一个对手,却也每况愈下。我的回答是你们熬死了一个又一个对手,对手是自己打败了自己,他们的精英不是英雄迟暮,就是转行做了其他事情,只有你们坚持了下来。这种坚持对这个产业是一种维持,也使得依靠自身驱动带给这个产业的创新乏善可陈。
这些问题使得SDN (Software Define Network)的出现顺理成章。我们很难将SDN定义为一种新技术。从上世纪七八十年代至今,IT基础设施始终处于高速螺旋的上升阶段,我们在并不算长的四十年间,在同一片领域完成了多次迭代,以至于在信息科学领域,几乎很难再次出现诸如Shannon的“A Mathematical Theory of Communication”这类革命性文章。SDN并不例外。
2007年,Martin Casado在他的博士毕业论文《Architecture Support for Security Management in Enterprise Network》中,提出目前的企业网规模较大,运行着各类网络应用与协议栈,对网络安全配置管理带来了一系列问题。在这些企业内,网络安全策略由复杂的路由、桥接策略以及ACL表、包过滤等机制组成,导致整个网络管理的复杂性,并带来的一些网络安全问题。
为此Martin Casado提出了一种理想化的网络架构,称作SANE解决这些问题。在SANE中,控制器通过其分发能力对请求转发的数据流进行授权,SANE交换机仅仅负责报文的转发。SANE介绍了一种全新的网络分层,并且该设计可以很容易扩展到几十甚至几百个网络节点[13]。
我不认为当时的Martin Casado能够真正理解,这个世界的基础网络设施可以复杂到何等程度,强大如Stanford这样的世界级院校,搭建一个诸如Intel这样跨国企业的网络环境也很困难,更不用说运行其上承载的各类应用。也许当时的Martin Casado只是认识到了这些网络的复杂性,见识到了多如牛毛的网络协议栈与诸多术语后,决定不再去理解,而另辟蹊径。
在此后的第二年,Nick McKeown et al. 在ACM SIGCOMM上发布了一篇题为《OpenFlow: enabling innovation in campus networks》[14]的论文,正式提出了OpenFlow的概念。这两篇论文宣告了SDN的诞生。
SDN诞生后,这一新型的网络设计框架首先得到了互联网厂商的热捧。2011年,Google、FaceBook、Microsoft与Yahoo等厂商成立了ONF (Open Networking Foundation),聚焦于OpenFlow技术标准[15]。2012年,Linux内核集成了OVS (Open vSwtich)[16]。2013年4月,以思科为首的网络厂商如梦初醒,成立ODL (OpenDayLight),致力于开源的SDN控制器框架的实现,这个框架的名称也被称为OpenDayLight[17]。
思科类传统网络设备提供商的参与,在某种程度上极大促进,也极大制约了SDN的进一步发展。网络设备提供商的参与,使得SDN技术有机会进入国家层面的网络基础设施领域;也因为这些既有利益的获得者首先也是既有投资的保护者,他们的参与使得SDN技术在遵循商业原则的前提下在迟钝且平缓的演进,不再是一个剧烈的变革。
即便如此,SDN的发展依然超乎了Martin的想象,以至于Martin在回答什么是SDN时,总是在回答“I actually don’t know what SDN means anymore, to be honest”。或许Martin认为,SDN在容纳着各类不完美的不断前行中,已物是人非,偏离了至清至澈的论文轨迹。
2016年2月,Martin Casado离开VMware加入著名的风险投资公司Andreessen Horowitz并成为合伙人[18]。如同Andy Robin离开Android,这些创始人的离开无论是因为什么外因,最重要的内因依然是,他们认为在这个领域他们已经完成了历史使命。或者说在Martin Casado的内心深处,SDN尚未开始,就已经结束。
SDN所解决的最重要的问题首先是解耦,分离底层硬件与网络操作系统。无论是思科的IOS (Internetwork Operating System),还是华为的VRP (Versatile Routing Platform)都是耗费了成千上万人年的产品。我们在购买这些传统路由器的时候,都在为这些人年埋单。在多数应用场景,我们所购买的路由器使用的仅是IOS和VRP提供的极少数功能。而且IOS和VRP虽然在尽最大可能包罗万象,依然无法解决所有问题,一些用户的自定义需求依然无法得到满足。
通常网络设备在逻辑上分为控制平面(Control Plane)和数据通路(Data Plane)。其中控制平面的主要由两大部分组成。一是设备硬件资源的维护,包括网络端口状态的扫描和系统的初始化与监控等;二是运行网络协议,如BGP、OSPF、ISIS与ARP等。网络设备通过运行这些网络协议,生成用于数据通路的各类查找表。
网络设备的数据通路则使用这些查找表,尽最大的可能性快速地进行报文转发。对于一些交换机和路由器以外的网络设备,如DPI、防火墙、Load Balancer类设备,数据通路的设计稍有不同,这些设备偏向于根据控制平面配置的策略决定如何处理网络报文。
在SDN理论正式定型以前,每个网络设备同时具备控制平面和数据通路。对于性能要求高的企业级设备,控制平面采用的是专用CPU,以及围绕该CPU的存储、总线、和外设来实现。数据通路多采用专用ASIC,并作为一个外设连接到控制平面的CPU。
对于家用级别的设备,如Wireless Access Point而言,数据通路和控制平面往往做在同一个以嵌入式 CPU 为核心的系统中。Linux是最常见的针对家用设备的操作系统。控制平面的程序,如DHCP服务器、Web服务器、Iptables、NAT等运行在Linux的用户层。Linux 的内核负责报文转发。在这样的小设备中,Linux用户层和内核之间的Netlink,有时也加上一些POSIX API做辅助,构成了数据通路和控制平面的通信方式。
SDN的核心思想是,进一步分离网络设备的数据通路和控制平面,并定义两者之间的通信标准。这个思想解决了很多实际存在的问题,首先是数据通路设备和控制平面设备可以分别演化;其次是在不同的应用场景中,对数据通路的性能和控制平台的 Scaling 要求各有不同,设计者可以针对应用环境来自由搭配。对于网络设备的用户和运营商来说,更为关键的一点是 SDN 体系结构减轻了对硬件厂商的依赖。
在SDN出现之前,用户购买的网络设备,由于每个厂商设备的配置方法不同,其上控制平面的协议设计并不相同,彼此间很难做到完全兼容。这使得用户在初期选定了某个厂商的产品,后续更新的时候有时也必须继续选择该厂商的产品,否则前期网络运营获得的经验和固定下来使用方式都将失效。
SDN把数据通路设备仅仅定义为一个必须支持公开接口的黑盒子,而控制平面的程序通过这个公开的接口对数据通路设备编程。采用这种方法,传统硬件厂商提供的一系列控制平面的程序失去了原有的作用。用户只需要维护自己的控制平面程序就可以保证网络运营的连续性。数据通路设备可以随时随意进行更换。
SDN引入了Flow Table。在传统的交换机与路由器中,每支持一种新的协议,不是在固有表中添加表项,就是添加一张新的表格。网络世界经过了几十年的发展,在传统路由器与交换机中已经积累了过多的表项。Flow Table的引入在提高了端口控制灵活度的同时,对所有表项进行了归一化处理,这也使得SDN网络有机会从逻辑上实现集中管理。SDN使用的集中管理策略,与传统网络设备采用的自适应管理,原本谈不上孰优孰劣。只是事物发展螺旋上升中的不同状态。
SDN的出现,依然为本已死气沉沉的网络基础设施带来了一丝活力,SDN在持续着辉煌的同时,也在按照几乎不可控制的态势引入更多的功能。但是当我们从整个网络基础架构的更上层俯视SDN时,却很难体会得出SDN是一次颠覆性变革的结论。整个网络基础架构并无根本的变化,只是一次管理策略的调整与重构,路由器与交换机内部基础的缓冲管理与算法几乎丝毫未变。
事实上SDN的前缀软件定义SD (Software Design)更加令人关注,在SDN崭露头角后不太长的一段时间里,各类软件定义风起云涌,有软件定义云计算,软件定义数据中心,软件定义存储,软件定义基础设备,直到Software Design Everything。在这些种类繁杂的软件定义中,恐怕最有共性的一件事情莫过于把之前配置各类设备所使用CLI (Command Line Interface)方式,换成了RESTful API。
本已停滞不前的x86处理器一夜间重回中心,似乎x86处理器重新强大到了无所无能。NFV (Network Function Virtualization)的提出,进一步神话了x86处理器与其下的虚拟化部件。却在有意无意中无视x86 XEON处理器自从Nehalem起,在微架构层面的创新已乏善可陈的事实。即将大规模推广的Kaby Lake仅在计算层面上,与Nehalem相比并无质得提高。x86处理器在计算领域完败于GPU之后,Kaby Lake所做出的选择是重归这个公司的起点,存储。
谈存储
从人类有语言之日起,吟游诗人用歌谣颂扬着传说;文字出现之后,我们使用甲骨文与纸张记载着历史;每一次新材料的出现,人类总试图将其与存储联系在一起,各类磁介质、硅介质,直至坚硬的蓝宝石介质。至今,存储世界已历经五千余年。在IT基础设施的三大领域,计算、网络与存储中,如果说计算在比拼着智慧,网络在比拼着记忆力,存储就是在比拼着一份执着。
存储对于稳定性的要求压倒了一切。在一个存储系统的所有Feature中,稳定性是1,剩余的所有特性是其后的0。如果一个存储系统谈不上稳定,那么其身后的所有特性都将无用武之地,一个存储系统所追求的首要目标,永远不是速度、带宽、延时与IOPS。而证明稳定性的方法无他,唯有时间的磨练。这决定了进入存储行业就是参加了一场没有终点的马拉松赛跑。
在IT基础设施的三大领域中,存储行业之执迷守旧,刻骨铭心。计算与网络的世界虽然精彩,但是人类文明的传承,最终还是依靠那几页纸。始皇帝的焚书坑儒,使华夏殷商前的文明成为传说;亚历山大的几次大火,让古埃及文化在人类历史上的展现仅剩下了几座金字塔。人类已无法再次忍受数据的大规模丢失。
这种无法忍受对存储系统的稳定性提出了苛刻的需求,也使得证明过自己存在价值的存储设备极难被淘汰。纸张依然在使用中,至今尚无退出历史舞台的征兆。也许是因为杰文斯效应作梗,在全世界大力提倡并实施无纸化的今天,纸张的使用有增无减。单纯从稳定性和数据保存的持久性上看,当代的多数存储系统还远不如墨水与纸张。
曾多次被预言很快退出历史舞台的磁带,依然活跃在今天的云归档基础设施中,NAND Flash与最新的存储类内存SCM (Storage-Class Memory)也没有终结硬盘。存储行业是最苛刻同时也是最宽容的领域,进入门槛极高也极难被淘汰。移动互联网尝试过的各类无孔不入的颠覆,并没有对存储这个古老的行业带来质的冲击。近期出现的SD存储远没有确立自己最后的存在。
在移动互联网爆发之前,世间没有任何IT基础设施能够满足其对于超级高并发的需求。这使得以Google、Amazon、FaceBook、包括中国的TAB在内的移动互联网厂商,为满足自身IT基础设施需求,所进行的试错与开发过程中,创建了一套计算、网络与存储混合的IT基础设施框架。Wikibon将这个正在使用的,基于移动互联网的IT基础框架,统称之为ServerSAN。
ServerSAN是近期软件定义存储各种概念的合集,具备计算、网络、存储与服务器虚拟化功能,几乎包罗万象。ServerSAN最重要的两个子集是虚拟化计算与分布式存储层。在云计算时代,传统的IOE架构很难适应弹性扩展要求与高并发而举步维艰。这使得世界上几乎每一个角落的移动互联网厂商都在去IOE,并不限于中国政府。Wikibon对ServerSAN的发展寄予厚望,在2016年提出了一个激进的路线图。
图15 2016年Wikibon对ServerSAN的预测[19]
Wikibon坚信Server SAN在未来将逐步取代传统的存储设备,包括SAN、NAS与DAS,但是也将E3S(Enterprise Server SAN Storage)的年复合增长率CAGR(Compound Annual Growth Rate)从2015年预测的44.2%剧烈的下调至22%[20]。显然,这个增长还是一个非常激进的数字,也很显然Wikibon的评估充满变数。
图16 2014年Wikibon对ServerSAN的预测[20]
硅工业的事实停滞影响了整个IT基础设施行业,也使得与这个行业相关的多数产业很难获得两位数以上的CAGR,在这个大背景下,整个IT基础设备进行的依然还是此消彼长的零和游戏。ServerSAN与之前出现的HCI (Hyper Convergence Infrastructure)是计算,是网络,还是存储,还是三者皆非?ServerSAN自身到底是什么?
Wikibon从未给出过Server SAN的精确定义,这种不精确为Wikibon带来的最大优点是,其观点很难出现错误。Wikibon之外的组织也没有给出过Server SAN的精准定义。相比较而言,只有H3S (Hyperscale Server SAN Storage)的定义相对较为清晰,Google、Facebook、Amazon、TAB这些移动互联网厂商正在使用的,自产自销的IT基础架构即为H3S。
剩余的存储本质可以归为一类,无论是传统的企业级存储或者是E3S。E3S与传统的企业级存储可以在文字游戏中转化。图15中的各种数据也许很容易得出,首先计算存储直至2027年的CAGR,并以此获得存储市场的总容量,之后计算移动互联网厂商的自产自销,剩余的两部分使用文字上的技巧进行份额划分即可。
E3S的定义事实上可有可无。本质上,ServerSAN所面临的问题是,移动互联网所使用的H3S架构如何真正进入一个企业内部。对于多数企业,不存在移动互联网厂商追求的超高并发度和高弹性扩展需求,也不需要规模如此庞大的IT基础设施;H3S的维护者是昂贵的研发工程师,而不是普通的获得几个认证即可从业的IT工作人员。
ServerSAN架构需要在企业中找到适合的应用,找到用户真正使用ServerSAN而抛弃传统存储架构的原因。如果仅是因为传统存储厂商不情愿使用Scale Up方法向上扩展存储,而导致传统存储的价格居高不下,我并不认为ServerSAN找到了自己的生存空间。诸多ServerSAN厂商提供的产品,就其技术上的合理性而言,是否真正超过了双控盘阵列这个历尽沧桑的设计。
我们无法忽视绝大多数移动互联网厂商使用的H3C架构,依然停留在二层交换机连接着的廉价PC机的组成结构中。在移动互联网快速演进的时代,这些H3C架构主要在为移动互联网的应用,更为准确的说是超高并发访问服务。Google、Amazon、Facebook与TAB这些厂商从解决共同面临的超高并发访问处入手,并在解决各自面临的不同问题的过程中,迅速差异化。至今,现有移动互联网IT基础设施的H3S架构,最大的特点是任意两家的H3S架构间并无相近之处。
移动互联网厂商所进行的大规模工程化而后逐步形成的H3S,设计之初,只为解决自身应用的一个或者几个问题,所构建的基础设施,从全局视觉下观看,遍体鳞伤。事实上,几乎任何一个存活超过十年的大型IT基础设施,都是遍体鳞伤,在无限追求完美的设计者心中,都有强烈地将其推倒重来的冲动。也许这些H3S在等待着下一次轮回,直到世界尽头。万生终有一死。
已然如此的H3S架构,直接将其通用化,并大规模替换现今企业正在使用的IT系统的前景,没有Wikibon想象中乐观。如果准备进入企业市场的超融合架构,依然基于H3S使用的二层交换机组合大量的廉价PC的设计理念,不管是披着HCI或是ServerSAN的外衣,依然会面对绝大多数企业没有大规模并发、高度弹性扩展的业务需求的这些事实。
即便如此,国内外还有许多初创公司涉足ServerSAN这个领域。很多打着ServerSAN旗号的产品,仅是从Github下载若干开源软件,之后进行简单的排列组合,最后再加上一个管理界面而已。许多准备进军这个广阔的企业级存储市场的初创公司,真正的技术含量甚至只有一个华丽的用户界面。
H3S和E3S在架构上的合理,可能远不及几十年前的Supercomputer。在多数Supercomputer系统中,处理器与I/O设备独立组成两张网络,之后这两张网络采用某种拓扑结构进行连接,分离计算节点与I/O节点,以便于分离计算与I/O,获得最短的平均访问延迟与最大的访问带宽。但是这种结构在十几年前,在移动互联网呈爆发式增长的前夜,没有被主流互联网厂商接受。
在那个年代,没有太多的移动互联网厂商真正关心所采用IT基础设施的绝对合理性,而是重点关注着业务的高速推进,和与其密切相关的超高并发访问。移动互联网厂商当时所追求的是用最快的速度,不是最完美的IT基础设施解决所面临的问题。有些互联网厂商尝试过IBM在银行系统中使用的Mainframe,Mainframe的居高不下的价格并不是被他们弃用的最主要的原因。
搭建IT基础设施的首要目的是为应用服务,Mainframe与SQL数据库的组合没有解决移动互联网应用对高并发访问的需求,迟钝的售后无法满足高速运转的互联网应用的开发步伐。这使得移动互联网厂商决定搭建一套属于自己的全新的系统。对未来的茫然,使得他们务实地选择了,最易于重构系统也是最易获得的,基于以太网与PC机的系统。
几乎所有互联网应用对数据库都有着重度的依赖。传统的SQL数据库不仅价格昂贵,可扩展性差,而且无法满足移动互联网应用所要求的高并发,随着移动互联网的蓬勃发展,这类数据库迅速的在移动互联网应用中沦为配角。
NoSQL (Non SQL, Not Relational or Not Only SQL)数据库应运而生,这个新型数据库重创了SQL数据库,也重创了SQL数据库之后的传统集中式存储。这些NoSQL的一个显著特征,就是相互间没有什么绝对的共性。两个都被称为NoSQL的数据库,其相互间的差异远大于两个都被称之为SQL的数据库。
在移动互联网时代,各类业务快速推进,且基于对未来不确定性的考虑,使得NoSQL数据库的每次发展更似一次试错。NoSQL数据库对于存储系统的使用更加务实,可以直接使用内存,也可以直接使用本地硬盘。NoSQL数据库的设计初衷不是为了排斥集中式存储,只是Cassandra、HBase和MongoDB的设计者可能没有购买盘阵列的资金,所以采用了RAM、硬盘、SSD、PC机这类最容易获得的硬件资源,以搭建底层的存储系统。这使得集中式存储在无意中被冷落。
为了保证数据存储的可靠性,NoSQL数据库多采用了直接且粗暴的做法,最常用的手段是使用DHT (Distributed Hash Table)算法保存多个副本。这种至简有显而易见的不足,简陋的多副本策略甚至可以将香农气醒,也因为其至简,NoSQL相对于SQL数据库更具可扩展性,可以运行在相对低廉的硬件系统中,由普通PC机与交换机组成的集群系统中。
如果从ACID (Atomicity, Consistency, Isolation and Durability)的特性上对比NoSQL与SQL,前者不堪一击。ACID模型是SQL数据库创建时立下的规则,在这套规则体系下,SQL数据库是上帝。NoSQL建立在BASE (Basically Available, Soft state and Eventually Consistent)模型基础之上,所坚持的只是基本可用。这种基本可用所带来的灵活性,使得移动互联网应用所追求的极度高并发特性得以满足。ACID与BASE本质上两种完全不同的设计策略,
BASE模型的特点之一是我行我素,对Consistency没有过高的要求,这种我行我素在某种程度上,使得基于BASE设计理念的NoSQL数据库各不相同。移动互联网应用绝非不重视数据的Consistency,只是在更加追求系统的高可用与高并发性的过程中,不得已舍弃了Consistency特性。对于绝大多数的移动互联网应用,过强的Consistency特性并非不可或缺。
为了降低系统访问延迟并尽最大可能的保证容错,移动互联网厂商所使用的存储系统多采用Geo-Replicated架构。在这种架构下,数据在不同的地理区域中有多个副本存在,这些多个数据副本的Consistency在跨地域布置的前提下,需要与系统的可用性进行取舍。
图17 Geo-replicated架构下的数据分布[23]
移动互联网厂商所采用Geo-Replicated架构使得Eventual Consistency模型几乎成为必然的选择。Eventual Consistency模型似乎很简单,在不同分区下的数据副本最终获得一致即可,对数据的最后一次更新最终将体现在所有的分区中,但是并不保证每次读取的数据是最新的。这种对Eventual Consistency的定义非常模糊,而且在一定程度上是误导。事实上一个数据中心的设计者如果不采用一定的策略,即便是最简单的Eventual Consistency模型也无法满足。
Lloyd Wyatt et al.[21]给出了Eventual Consistency模型较为严格的定义,在一个Geo-Replicated架构中,写入到一个数据中心的数据,需要最终写入到其他数据中心,如果所有数据中心都收到了相同数据集合的写入操作,那么在整个系统中这个数据集合的所有的数据副本需要保持一致。即便不考虑有人恶意插拔网线与主机电源而制造的数据分区,仅考虑网络报文延迟与传输顺序,在整个系统中即便只保证Eventual Consistency也并非易事。
Eventual Consistency这种弱一致性模型,有许多显见的问题。Lloyd Wyatt et al.列举了一些互联网应用,因为采用Eventual Consistency所导致的一系列问题,如Comment Reordering、Photo Privacy与Double Money Withdrawal等[21]。有些问题不伤大雅,有些问题较为严重。Lloyd Wyatt et al.所列出的这些问题是,移动互联网厂商为了追求系统容错与访问延迟所付出的应有代价。
Consistency是一个非常重要的概念,但是99.9%的IT从业人员不必去深入理会这些概念。除非你立志做个类似于SPARK的系统,而不是去简单地使用。虽然SPARK这类系统,世界上只需要一个,但是依然有一个问题值得思考,这个系统为什么不能出自中国。
在移动互联网世界中,Consistency概念首次引发较大范围的关注是在1998年。那一年Eric Brewer正式提出CAP (Consistency, Available and Partition tolerance)[22]猜测并于1999年正式发表“Towards robust distributed systems”这篇文章。
其正确性在2002年由Seth Gilbert和Nancy Lynch证明,CAP Conjecture也正式转换为Theorem[23]。传统的CAP理论认为,在一个网络系统中,数据一致性(C)、数据的高可用性(A)和数据对分区的容忍性(P),三者不可兼得。
CAP理论的最简单的解释是假设系统仅存在两个节点,并处于分区的两侧。如果仅允许一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,但是这又会导致丧失P性质。一般来说跨区域的系统,设计师无法舍弃P性质,那么就只能在数据一致性和可用性上做一个艰难选择[24]。
2012年,Eric Brewer重新回顾了CAP理论,并针对实际情况做出了一些修订。在CAP三个特性中选二,并不是简单的非黑即白。首先在一个分布式系统中,真正支持绝对分区的系统并不多见,Kyle Kingsbury在[24]中列举的在分布式系统中存在的分区情况,基本上都是因为各类异常导致的。
即便是在数据分区成立的前提下,为了实现100%的可用性而不顾一致性,或者为了实现100%的一致性而不顾可用性,都是过于绝对,而并不可取。在一个实际系统中,可以在时间空间的更加细粒度的划分中,使得系统基本可用,基本一致。这些对“基本”的选择是系统设计中需要考虑的权衡与取舍[25]。
CAP理论缘于Eric Brewer一次闲聊,对于之前熟悉Leslie Lamport分布式系统的学者或者工程师而言,CAP理论严格意义上是一次不错的推导,不过这并不影响CAP原理带给互联网与移动互联网的巨大推动作用,也许更多的人开始学习并认识分布式理论源自简单的CAP推论而不是Leslie Lamport晦涩的论文。
CAP理论的出现,给予了NoSQL对抗SQL数据库的有力武器,特别是在讨论强Consistency对于一个数据库是否不可或缺这样的话题。此后依照BASE理念,而不是ACID理念,互联网厂商逐步自行研发自己的分布式系统,以满足移动互联网应用对于超大并发数的追求。之后Google提出了MapReduce、GFS (Google Filesystem)和Bigtable这些简练的能够让普通程序员即可掌握的分布式编程模型。
随后继承了MapReduce方法和GFS理念的Apache Hadoop分布式得到了迅速普及与发展。Hadoop使用HDFS (Hadoop Distributed File System)管理文件系统,可以部署在低廉的硬件平台之上的同时,提供较高的吞吐量。从分布式计算的理论上讲,MapReduce模型较不完美,但是简单实用的编程模型使Hadoop系统突飞猛进。
MapReduce将所有操作归为Map和Reduce两个操作,可能是当时的Google在面对当时的程序员素质在当时做出的选择。这种简单分类并不完美,但是极易被程序员掌握。MapReduce编程模式采用了最简单的分而治之策略,简单粗暴,易于掌握,却很难是最优,甚至是次优编程模型。而后出现的SPARK在计算框架上与Hadoop相比有了一次较大的提升,我认为在集群计算模型上优于Hadoop,也依然认为Hadoop由于是第一次出现,其历史地位不可撼动。
整个IT史册在充斥着并不完美中奋然前行。在IT基础领域中,太难的算法和实现策略很难推行,晦涩的算法不容易实现,也不容易理解。这个行业在飞速发展的年代,一边是市场人员Time-to-Market的压力,一边是尽快提交代码的压力,这一切使得在工程实现的算法都可能不是已知理论的最优,甚至不是次优算法。KISS理论在移动互联网高速发展的时代再度胜出。
至今IT基础设施的三大领域,均遭遇瓶颈。硅工业发展的事实停滞,使得基础设施跌下神坛,不能再次依靠自身驱动自身的方式前行。这使得一些更优的算法与体系结构有机会重整旗鼓,至少尝试一下已知理论上的最优,以精益求精。另一方面寻求下一个硅的脚步从未停息,ITRS在面临硅工业的困境,提出了六个可能的方向,System Integration、Heterogeneous Integration、Outside System Connectivity、More Moore、Beyond CMOS和Factory Integration[1]。
在这些方向中,最具颠覆的莫过于Beyond CMOS。Beyond CMOS是在寻求新的材料替代硅,也许需要几个世纪,也许就在明天。假设这些Beyond CMOS的某一种新材料能够真正取代硅,那么这种新材料的应用将率先在存储领域出现。从设计的角度上看,诸多存储Cell的一字排列,其复杂程度远低于CPU或者网络设备的交叉矩阵;人类历史上也从来没有像今天这样依赖着存储,所有历史上存在的数据已不堪舍去,新的数据川流不息。
这使得在IT基础设施的三大领域,计算、网络与存储中,存储被寄予厚望,存储级内存SCM正在暂露头角。从Intel与Micron合作的3D xPoint开始,近些年会陆续诞生一些新型的SCM,2017年1月已经宣布量产的CrossBAR的ReRAM[26];Nantero与富士通合作在2018年推出基于CNT (Carbon Nanotube)的NRAM[27];Samsung收购Grandis后与IBM一道全力推进STT-RAM[28].
图18 存储器分类[29]
这些SCM也许在近期很难在Volatile领域全面替代DRAM,或者在Nonvolatile领域全面替代NAND Flash,但至少会给一潭死水的存储器层次结构引入变数,从而带来冲击。内心深处,希望一切使用新型材料的SCM取得革命性的突破,心中坚信在计算、网络与存储三大领域中,存储将最先取得突破。
参 考 资 料
[1].International technology roadmap for semiconductors 2.0 2015 edition executive report (ITRS)[J]. Semiconductor Industry Association, 2016.
[2].Courtland R. Transistors could stop shrinking in 2021[J]. IEEE Spectrum, 2016, 53(9): 9-11.
[3].http://blog.sina.com.cn/s/blog_6472c4cc0102e9hr.html
[4].http://blog.sina.com.cn/s/blog_6472c4cc0102e0xg.html
[5].www.youtube.com/yt/press/statistics.html
[6].https://techcrunch.com/2015/11/04/facebook-video-views
[7].Desai S B, Madhvapathy S R, Sachid A B, et al. MoS2 transistors with 1-nanometer gate lengths.[J]. Science, 2016, 354(6308):págs. 100-102.
[8].http://hothardware.com/reviews/intel-core-i7-6950x-extreme-edition-10-core-cpu-review-broadwell-e-arrives
[9].Nvidia whitepaper, NVIDIA Tesla P100, The Most Advanced Datacenter Accelerator Ever Built Featuring Pascal GP100, the World’s Fastest GPU.
https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf
[10].Kayıran O, Jog A, Kandemir M T, et al. Neither more nor less: optimizing thread-level parallelism for GPGPUs[C]//Proceedings of the 22nd international conference on Parallel architectures and compilation techniques. IEEE Press, 2013: 157-166.
[11].The History of Ethernet. NetEvents.tv. 2006. Retrieved September 10, 2011.
https://www.youtube.com/watch?v=g5MezxMcRmk
[12].Subramoni N S I H, Panda D K D K. Performance Analysis and Evaluation of InfiniBand FDR and 40GigE RoCE on HPC and Cloud Computing Systems [J]. 2012.
[13].Casado M. Architectural support for security management in enterprise networks[D]. Stanford University, 2007.
[14].McKeown N, Anderson T, Balakrishnan H, et al. OpenFlow: enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2): 69-74.
[15].Open Networking Foundation Formed to Speed Network Innovation. Press release. Open Networking Foundation. March 21, 2011. Retrieved October 30, 2016.
[16].Corbet J. Routing open vswitch into the mainline[J].
[17].Medved J, Varga R, Tkacik A, et al. Opendaylight: Towards a model-driven sdn controller architecture[C]//Proceeding of IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks 2014. 2014.
[18].Darren Pauli. NSX Daddy Martin Casado leaves VMware to become a VC. Feb. 2016.
[19].David Floyer. Server SAN Readies for Enterprise and Cloud Domination. Aug. 2016. http://wikibon.com/server-san-readies-for-enterprise-and-cloud-domination/
[20].David Floyer. The Rise of Server SAN. July 2015.
http://wikibon.org/wiki/v/The_Rise_of_Server_SAN
[21].Lloyd W, Freedman M J, Kaminsky M, et al. Don’t settle for eventual consistency[J]. Communications of the Acm, 2014, 57(5):61-68.
[22].Brewer E A. Towards robust distributed systems[C]// Nineteenth ACM Symposium on Principles of Distributed Computing, July 16-19, 2000, Portland, Oregon, Usa. DBLP, 2000:7.
[23].Seth Gilbert and Nancy Lynch. Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, Volume 33 Issue 2 (2002), pg. 51-59.
[24].Kyle Kingsbury. A blog post on network partitions in practice.
https://github.com/aphyr/partitions-post
[25].Brewer E. CAP twelve years later: How the” rules” have changed [J]. Computer, 2012, 45(2): 23-29.
[26].Peter Clarke, Times E E. Crossbar ReRAM in Production at SMIC[J]. 2017.
[27].Peter Clarke, Times E E. Fujitsu Is Licensee of Nantero’s Carbon-Nanotube RAM [J]. 2018.
[28].McGrath D, Times E E. Samsung buys MRAM developer Grandis[J]. 2011.
[29].International technology roadmap for semiconductors 2.0 2015 edition beyond CMOS (ITRS)[J]. Semiconductor Industry Association, 2016.