多处理器电脑已存在一段时间了,但工程师们只是在最近几年才有机会买到具有多个处理器或“核心”的芯片现货。这些器件分为两类:对称型和非对称型。第一类器件提供同一CPU内核的多个“克隆”,因此称作对称型。第二类是将不同类型的CPU、DSP、加速器都放在一个单片系统中。本文将专门介绍第一类多核技术。
据Extreme Engineering Solutions公司首席执行官Rob Scidmore表示,单核处理器与多核处理器使用的硬件仅存在很少几项区别。“挑战会出现在,当你必须把软件从单核迁移到双核时。当两个处理器内核必须通信时,性能可能会降低很多。系统的等待时间变得更长,但吞吐率依然很高。当工程师们为每个内核把应用代码分解成片段时,就必须应对上述局面。他们必须平衡等待时间和吞吐率。”
但是,工程师们经常会把代码分解成片段。Scidmore解释说:“他们也许通过以太网端口接收图像,用算法处理图像,然后显示它们。你可以在一个处理器上运行TCP/IP堆栈,在第二个处理器上运行算法,并把第三个处理器专门用于显示。但是如果你有数千个汇编语言文件,那么你别无选择,只能回到框图并从头开始,并花时间把某个应用划分成几个线程。”
一些为对称多处理(SMP)提供支持的操作系统(OS)可以提供某种方式来集成旧代码和新代码。例如,QNX公司的Neutrino OS提供混合多处理(bound multiprocessing),它使开发人员能使多个进程始终位于某个核心,或称“锁定”。QNX公司产品经理Kerry Johnson说:“假设你有一些旧软件,它们在多核芯片或多处理环境中也许不能恰当运行。代码可能会假定它拥有对I/O设备等的独占控制权,这可能会在多核系统中造成一些问题。这种情况下,你可以把软件‘锁’在某个内核里,不必修改代码。然后你可以添加新应用软件,它将利用剩余内核。旧软件和新软件并存于某个多核芯片上的相同OS中。”
Johnson说:“要让开发人员理解多核芯片不需要每一个内核都拥有自己的OS,这是一个挑战。具备SMP能力的单一OS可立即监督多个内核的运行情况。随着更多OS厂商开始支持SMP,开发人员将会更好地理解,他们可以使用一种编程风格,并让他们的代码工作在单核、双核、四核处理器。一套软件工具可工作在所有这些环境中。”
当然,这些工具必须包含源代码级调试器。 Johnson解释说:“设计人员需要一个调试器处理所有这些内核,希望在一个窗口里看到一切,而不是每个内核都有一个调试窗口。在特定时间,无论哪个处理器运行代码,调试器都必须在断点停止,追踪程序执行情况,并在所有内核收集数据,就像它对单核芯片做的那样。”