华尔街对高性能,低延迟应用软件的需求看似永无止境。芯片制造商也在不遗余力的为金融服务企业提供着尽可能多的计算能力。
举例来说,AMD公司计划于2009年下半年推出他们的首款6核服务器处理器,代码为"伊斯坦布尔"("Istanbul")。而已经推出6核处理器的英特尔公司则计划在今年底推出8核Nehalem EX服务器芯片。据报道,从24核到100核的处理器目前都已经列入芯片制造商的未来规划之中。
但问题是尽管各大厂商纷纷推出最新服务器,包括目前的四核服务器,那些遗留下来的单线程应用软件性能都没有得到改进--除非他们也相应的做出调整。幸运的是,芯片制造商,栅格,虚拟化和多线程软件厂商都在致力于研发解决这个问题的方案。包括经纪公司AVM在内的华尔街企业已经开始进行这方面的尝试。
问题所在
过时的单线程应用软件最初的设计是在一个处理器上完成所有的工作负载。当单线程应用软件在四核服务器上运行时,程序也只能利用一个处理器,即使它所承载的任务非常繁重,其他三个核心也只能处于闲置状态。如果两款应用软件在同一个芯片的两个处理器上运行,共享芯片内存和其他资源,瓶颈问题就因此产生。
观察家表示,在未来三年内计算能力更加强大的多核服务器将不可避免的成为每个华尔街数据中心的主角。据专家分析,如果应用软件设计合理,在8核芯片上运行的应用软件性能将是在单核芯片上运行的应用软件性能的8倍。这种类型的性能将成为专门的硬件加速器最大的竞争对手,诸如图形处理单元和现场可编程门阵列,华尔街就是使用这些加速器来满足高速,低延迟的交易需求。
编译在多重处理器上运行的应用程序代码所面临的挑战并不新鲜,因为多重中央处理器服务器已经存在了很多年了。将工作负载在多重中央处理器内进行分配所面临的设计难点与在多重处理器内进行分配是类似的。但是由于华尔街仍然在使用这些过时的应用程序,而多线程应用软件研发人才又十分缺乏(换句话说就是能研发与多核同步发展的应用程序人才十分稀缺),因此这个挑战一直在困扰着软件行业。
另外,重新编写应用程序也同样存在挑战。原因之一是过时的编程语言已经不适用于多线程应用软件。芝加哥的市场数据解决方案提供商Activ Financial的首席执行官迈克.邓恩解释说"C 和C++语言都是比较古老的编程语言,已经无法跟上时代的发展。使用Java或者C#语言编程的研发人员在编程语言本地同步上具有优势"。另一个挑战是如果研发人员不够认真,不同线程就会相互干扰,比如说争夺同样的内存资源等。
不过邓恩也表示,对于所有面临的挑战,多线程的设计原理是非常直接的。"我们解决的方式就是考虑区分和克服--将问题划分为几个部分,让线程在每部分上工作。你应该如何分解程序是计算机编程的艺术所在"。