模块化存储器自我提升之道:专用的ASIC芯片加速
看完上一节后,估计不少看官在想,难怪不少存储厂商频频升级存储器产品,原来是CPU换代了,不得不这样做,以后要判断存储厂商要不要升级换代了,只要看看Intel、AMD两家在干嘛不就可以了吗。这话有一定道理,但也不是放之四海皆准,也有不少模块化存储器的是另辟蹊径来提升性能,通过专用的ASIC芯片来做到。
通过ASIC芯片来提升性能的典型厂家代表是LSI(又称Engenio),可能很多不做存储的大侠们都很少听过这家公司,可是这家公司在圈内可真是鼎鼎有名,我们甚至可以说EMC系和LSI系在模块化存储器市场影响力就像80年代末90年代初香港歌坛的谭咏麟和张国荣一样(当然其他家的也不错,只是影响力没有这么大罢了)。
和EMC市场威风凛凛不一样, LSI相对低调,很少直接面对客户,而是躲在幕后,把产品OEM了很多主机厂商,做为其整体解决方案的一部分,包括IBM(OEM后先叫FAStT系列,后来改名DS4000系列),SUN(OEM后称做SUN 6000系列),SGI等好品牌厂商都在oem LSI的存储器产品。国内的服务器厂商如宝德、华赛等也OEM LSI的产品。
除了多年来一直坚持以OEM为主的运营模式外,LSI这么多年来能够被这么多主机厂商看中,肯定是有几把刷子的,这几把刷子中很重要的一把就是在存储控制器的设计思路上,和通用EMC/NETAPP服务器的架构设计不同,LSI的存储控制器主要包括两个部分:第一个部分是常见的通用CPU,通过这个CPU来运行存储控制器的操作系统(前文就说过,存储器也是计算机,计算机有操作系统,存储器当然也有自己的操作系统);而第二个部分是采用ASIC芯片而缓存处理存储IO,通过专门针对存储IO特点设计的专用芯片提升整体性能。
我们来看看ASIC到底是个什么东东,ASIC全称Application Specific Integrated Circuit,即为特点应用设计的专用集成电路。
目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制使用库里的标准逻辑单元(Standard Cell),设计时可以从标准逻辑单元库中选择SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。
现代ASIC常包含整个32-bit处理器,类似ROM、RAM、EEPROM、Flash的存储单元和其他模块. 这样的ASIC常被称为SoC(片上系统)。
我们来看下面的例子,IBM在2003年模块化存储器市场和EMC CX600/700,HP EVA5000竞争得最多的一款存储器就是FAStT900,这款产品就是OEM自LSI的经典的5884控制器。要知道当时EMC CX600每个控制器采用的2个2G的Intel CPU,而CX 700采用的是2个3.2G的Intel CPU,其他存储厂商销售人员攻击IBM FAStT900最常见的一招就是说其控制器偷工减料,因为其竟然只配置了一个Intel® Pentium® III 850 MHz processor,听上去确实蛮有道理,别人用两个CPU,你才用一个CPU,而且主频也很低,甚至连别人主频一半都比不上,这也忒不上档次了吧….
然而,如果我们仔细看看LSI 5884的datasheet,就会发现以下对于控制器的表述:
LSI 5884 Controller Specifications 控制器指标描述
Two specialized processors: 两个专用处理芯片
• Custom ASIC with built-in hardware XOR engine for RAID parity:专门处理RAID硬件XOR奇偶计算的定制化的ASIC芯片;
• Intel® Pentium® III 850 MHz processor manages I/O movement and instruction sets:采用Intel® Pentium® III 850 MHz processor芯片处理IO移动和存储器通用指令集;
• Data cache: 1 GB RDRAM (battery backed):1GB的带电保护的RDRAM作为数据缓存;
• Processor memory: 128 MB SDRAM:配置128MB SDRAM作为处理器专用缓存;
• Memory bus bandwidth (ASIC to data cache): 1.6 GB/sec:ASIC芯片到数据缓存的内存带宽是1.6GB/sec
• Data bus bandwidth (ASIC to external I/O): 1.6 GB/s:ASIC芯片到外部的带宽也是1.6GB/sec;
这样细细一看,我们恍然大悟,原来LSI系列的存储控制器里面最核心核心的部分是它的ASIC芯片,就像什么XX记香辣蟹里面的独家调料一样,这个ASIC里面到底是什么东东外人一时很难讲清楚,但是它是能够提高存储器性能(或者提升香辣蟹口味)的关键。
随着时间的推移,LSI系列的存储控制器不断推陈出新,前端接口从1Gb、2Gb、4Gb到现在的8Gb甚至直接Infiniband接口,缓存大小也从单控制器1GB发展到32GB(到现在为止在模块化阵列中是支持缓存容量最大的),但是其架构方面一直保持不变,即通过通用处理芯片和专用处理芯片相结合的方式,提升存储器的整体处理性能。
下图是现在IBM热卖的DS4800存储器的控制器架构图,尽管说其通用处理芯片已经与时俱进地升级到了Intel 2.4G XEON芯片,但其关键核心部分还是中间那个XOR芯片。

除了LSI外,HDS的AMS系列存储器,3PAR公司的Titan系列存储器也采用了类似的思路,通过ASIC芯片来提升性能。
前文说过ASIC芯片是一种专门目的而定制的芯片,而还有一个叫FPGA的东东也出现在存储控制器里,FPGA是一种可编程门电路,算是ASIC的近亲,一般通过原理图、VHDL对数字系统建模,运用EDA软件仿真、综合,生成基于一些标准库的网络表,配置到芯片即可使用。它与ASIC的区别是用户不需要介入芯片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。在目前的电子设计中,常使用硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,烧录至 FPGA 上进行测试。当测试完成后,再制作ASIC。存储业内有一个专门做高性能NAS的厂商叫Bluearc就是通过采用FPGA来提升NAS机头的文件处理能力,最近超级3D大片据说有采用了其设备。
由于一般存储器控制器多基于通用处理器架构,自然会受限于其南北桥的bus总线限制,我们再来看看基于BlueArc的NAS存储器基于FPGA可编程门电路的设计思路,其采用并行体系结构,根据文件共享服务的IO细分为TCP/IP协议解析、NFS/CIFS拆解包、文件服务管理、存储服务处理等几个部分,每个部分的工作分散到响应的FPGA芯片处理(每个部分也有单独的内存模块配合IO处理),自然能够做到高效。

可以说,基于ASIC/FPGA的芯片加速IO是一种在IT界经常采用的方式,高效且省电,不仅仅在存储器行业,在网络设备行业更是被广泛采用,比如当年赫赫有名的Netscreen防火墙、还有很多高端路由器等等….
前文我们也说过,ASIC芯片就像香辣蟹店或者火锅店的独门配料一样,属于独门暗器。当然各位读者也不能仅仅听说有个神秘的ASIC就认为是个好东东(独门配料也不是说每位食客都喜欢),因此建议在采购该类存储设备时都看看相关行业的成功案例,有条件的也可以搭个环境测测,看看这个存储控制器里面的ASIC芯片的加速功能对自己的应用到底是不是管用。