技术简介——将软件推向未来多核架构

提交新文章

2007年09月29日 14:09


主流处理器中的内核数量日益增多——这一业界变革要求软件制作人员能够预见硬件资源的未来。

作者:Matt Gillespie

概述

计算行业向多核处理的转变意味着业界实现性能提升的途径已由增加主频转向增加每处理器内核的数量。支持这样的扩展将成为软件实现性能和可扩充性的基本要求,也直接昭示着其市场竞争力。

现在,很多应用程序都经过了某种程度的线程处理,一般扩充至两颗、四颗或八颗虚拟处理器。这种级别的线程处理尽管很复杂,却较能接受不太理想的线程方法。然而,随着多核架构的不断演进,开发人员也要不断优化其线程技术,此时并行可扩充性规划将变得越来越重要。

本篇简介对一些基本的技术问题和与不断发展的多核技术未来规划相关的业界趋势进行了讨论。本材料的完整版本已在多核社区  中发布。

打好基础:强大的线程实践

对于内核数量不断增加的系统而言,一项重要的编程策略就是将充分利用能够简化流程的工具和程序库的结构化方法实现制度化。下表列明了生命周期内的各项重要任务:

  1. 构建应用的串行版本,以确定用于并行处理的候选区域。
  2. 设计合适的线程模式以对候选区进行线程处理。
  3. 实施线程处理。
  4. 调试并测试线程编码。
  5. 优化编码以实现性能目标。
  6. 面向未来架构的灵活编程。

通常,创建的线程的数量不能超过逻辑处理器的可用数量。创建更多线程只会产生线程创建成本,不会增加性能优势。应用程序代码应该在运行时间内创建最合适的线程数量,以支持机器运行软件,例如 OpenMP 或 CPUID 指令。为了确保代码创建的线程数量不会超过所测最大数量,程序员可以明确设定上限。为线程数量规定上限的一种可行方法就是创建可配置应用,从而支持您更改线程数量限制。

最好在支持大量线程的硬件系统上测试软件的可扩充性。英特尔® 软件合作伙伴计划  将向开发机构提供预生产硬件和工程、策略及市场推广支持。

面向由不可靠组件组成的弹性系统的编程

由于每颗处理器都有大量的可用内核,系统可靠性的责任将从个别内核转移到总体内核上。换言之,大型内核系统能够容许个别单元出错,因为每枚内核对应的总体执行资源相对较小。

软件将需要能够动态地适应这个环境,这反过来又会使基于不可靠个体组件的系统保持高度的弹性。此模式下必要的检错操作可能取自现有的高性能计算模式,在高性能计算模式中,电脑的分配系统通过绝对数量而不是机器内部的资源实现冗余。

多核异构架构规划

许多观察人士预计,专为支持特定任务而设计的、含有大量内核的处理器将在今后几年内越来越流行。片上异构支持处理器更好地匹配执行资源满足每个应用的需求,并高效地解决更广泛的系统负载问题。例如,与传统 CPU 内核相比,专用显卡或 TCP/IP 卸载内核在执行某些功能时可能具有更高的功效;同时,CPU 内核在部署到合适的环境中时也具有更高的灵活性。

越来越多的研究和实践机构均以将图形处理单元 (GPU) 用作通用协处理器为工作重点。这一领域被称为通用计算图形处理单元 (GPGPU),阐述了与使用软件来充分利用处理器封装内各种执行内核相关的一些概念。Nvidia 已经发布了 CUDA*,该 C 编程环境专门用于使用其 GPU 来解决复杂的计算问题。目前,其他厂商已开始推出面向 GPU 的编程资源,标志着这一领域正逐渐走向成熟。

在其固有灵活性的基础上,可编程门阵列 (PGA) 成为未来多核处理器能够提供的另一种功能。PGA 通常能够提供可编程逻辑块,能够通过重新配置提供各种功能。如果进行动态重新配置的能力能够在运行时间内扩展,那么我们就可以想象处理器能够检测到特定工作负载的要求,并动态地重新配置实际硬件来满足其要求。

其它资源

您可围绕如下材料进一步探讨本话题:


作者简介

Matt Gillespie 是芝加哥地区的技术文档独立作家和编辑,其专攻领域为新兴的硬件和软件技术。在此之前,Matt 在英特尔公司为软件开发人员开展培训课程,他还曾任职于加州联邦银行互联网技术服务部。在其职业生涯的最初几年,他还从事过金融出版和神经科学领域的作家兼编辑的工作。