英语bench 或意大利语banca是今天银行(bank)的直接前身,当货币第一次在指定地点兑换时,贸易就在罗马帝国时期制度化了。潜移默化地改变和引导着贸易公司的运作,直到20世纪,技术革命使信息交换快速化,从而改变了那时的交易状态。如图2-1所示,在过去100多年,交易商使用计算机使得计算速度呈指数增长,而计算的成本自20世纪80年代以来一直下降,达到峰值。
图2-1 20世纪技术速度和价格的演化
在过去20年里,计算机技术的价格下降是惊人的。具有2000兆字节存储器(RAM)、300千兆字节硬盘空间和2000兆赫中央处理器的计算机系统在1995年要花费几百万美元,并且大到需要专门的房间来安置。在2012年,具有相同规格的计算机不仅适用于标准的机箱,也可以在百思买或其他计算机商店找到,而且只需400美元。
计算成本的下降很大程度上可以追溯到海外计算机芯片生产规模的效率。令人惊讶的是,对越来越易得和便宜的技术的需求不是金融服务从业者驱动的,而是由钱包干瘪的业余计算机使用者所驱动的。在过去20年里,后者群体中对高性价比技术有着强烈需求的恰恰是视频游戏玩家,他们的人群规模和对栩栩如生的图形的渴望推动了大规模生产的激增和技术价格的快速暴跌。金融公司获得了视频游戏行业创新和成本效益的好处。
如图2-1所示,当今的先进技术包括多核中央处理器(CPU)、现场可编程门阵列(FPGA)、图形处理器(GPU)和所谓的大规模并行架构芯片。CPU是计算机的大脑,决定如何在存储器中存储信息。多核CPU使用共享内存来进行多CPU间快速的通信,而每个单独的CPU在给定的进程分支或“线程”上调取任务和执行计算。多核CPU的示例体系结构如图2-2所示。在写本书时,多核CPU可能花费100美元或更高一些。
图2-2 多核CPU的示例结构
资料来源:Thomas,Hower
CPU芯片上的大部分空间被存储器和调度程序功能占据,GPU则不同,GPU上的空间主要用于所谓的算术逻辑单元(ALU)中执行计算操作。为了进一步使得每个芯片的效率最大化,进程线程以相同大小并行批处理执行。这些批处理的线程被称为warp 。为了使延迟最小化,应该注意确保进程的线程在循环数和退出条件方面是相似的。换句话说,就是需要用专业编程来确保GPU以最高效率运行。图2-3说明了GPU的示例架构。通用的GPU型号是Nvidia GTX系列,每个零售价在100~700美元。
FPGA是完全不同类型的芯片,没有任何固定指令集架构。相反,FPGA提供了可以被编程以创建任何需要的电路或处理器的逐位功能单元的空白板。一些FPGA包含多个专用功能单元,如乘法器和内存块。然而,FPGA的大部分区域专用于路由基础设施,FPGA运行时连接功能单元。图2-4显示了FPGA芯片示例的架构。
图2-3 GPU的示例结构
资料来源:Thomas,Hower
图2-4 FPGA芯片的示例结构
资料来源:Thomas,Hower
FPGA的主要区别在于,编程代码从一开始就直接写在芯片上。FPGA使用特殊的编程语言,如Veriog或VHDL。这些语言与C语言类似,并且易于学习。特殊的FPGA编程设备将Veriog或VHDL转换为FPGA芯片所理解的汇编语言。在没有FPGA的情况下,和CPU一样,程序运行期间需要编译交易程序,并在将其翻译到计算机芯片上时,也需要额外的计算机操作和进入延迟。编程FPGA的过程是相当简单和便宜的。虽然空白FPGA芯片和Veriog或VHDL编译器和模拟器的成本存在显著变化,但通常价廉物美,能够满足视频游戏者的需求。空白FPGA芯片的成本在4000~5000美元。Veriog软件和模拟器可以是免费的(“开源”)或20000美元。然后用芯片制造商的特殊步骤,将软件下载到芯片上。FPGA芯片的编程通常在本科电气工程程序中教授,并且往往易于学习。然而,实现现有技术的FPGA系统可能需要以被称为大规模并行处理器阵列配置来调配,这要求具有对硬件和软件优化的超高理解。
在性能方面,FPGA往往优于GPU和CPU,特别是当用于同时处理有限数量的时间序列时。图2-5显示了关键硬件模型的效率图形比较。图的横轴显示出了“输入”大小,或者同时提供给算法的独立变量的数量;纵轴显示了执行给定数量的输入操作所需的计算机“周期”数量。如图2-5所示,当输入数小于2000时,FPGA表现最佳;当输入数量超过此阈值时,FPGA的速度变得与GPU的速度相当。
图2-5 GPU、单核CPU、四核CPU、FPGA的性能比较
芯片本身不是计算机程序运行速度的唯一决定因素。每个计算机运行的周期由每个机器内的所谓晶体振荡器(osciator crysta)确定,并且最重要的是,程序算法的体系。