利用并行化的优势
Last updated
Last updated
利用并行性是提高性能的最重要方法之一。本书的每一章都有一个关于如何通过利用并行性来提高性能的例子。我们在这里举了三个简单的例子,在后面的章节中会对这些例子进行阐述。
我们的第一个例子是在系统层面上使用并行性。为了提高典型的服务器基准的吞吐性能,如SPECSFS或TPC-C,可以使用多个处理器和多个存储设备。然后,处理请求的工作量可以在处理器和存储设备之间分摊,从而提高吞吐量。能够扩大内存以及处理器和存储设备的数量被称为可扩展性,它是服务器的一项宝贵特性。将数据分散到许多存储设备上进行并行读写,可以实现数据级的并行性。SPECSFS也依靠请求级的并行性来使用许多处理器,而TPC-C则使用线程级的并行性来快速处理数据库查询。
在单个处理器的层面上,利用指令间的并行性是实现高性能的关键。做到这一点的最简单的方法之一是通过流水线。(流水线化在中有更详细的解释,也是的一个重点)。流水线的基本思想是重叠执行指令,以减少完成一个指令序列的总时间。对流水线的一个重要认识是,并不是每条指令都依赖于它的直接前驱,所以完全或部分地并行执行指令是可能的。流水线是ILP的最著名的例子。
并行性也可以在详细的数字设计层面上被利用。例如,集合关联(set-associative)缓存使用多个内存banks,这些banks通常被并行搜索以找到所需的目标。算术逻辑单元使用carry-lookahead,它利用并行性来加快计算每个操作数之和的过程。加速的复杂度从线性级(N)下降到了对数级(logN)。还有更多关于数据级并行的例子。