迈克尔·J.弗林定义了硬件的并行性,即:(1)微观与宏观并行,(2)对称与非对称并行,(3)细粒度与粗粒度并行,(4)显式与隐式并行。接下来,我们分别介绍一下这几种并行。
微观并行 | 宏观并行 |
---|
微观并行是指在一个特定的组件中(如处理器内部或ALU内部)使用并行硬件。它是计算机中存在但不是特别可见的并行。例如,算数逻辑单元(ALU)中包含的并行硬件使得可以并行地处理多个位以进行整数运算;通用寄存机大量利用了微观并行,每一位都是由单独的数字电路实现的;物理内存中的微观并行大大提高了内存的速度;并行总线架构中32位或64位的数据通过总线传输。 | 宏观并行是指使并行作为体系结构设计的一个基本前提。由于全局架构对整个系统性能的影响比任何单个子系统的影响更大,因此不能只使用并行来提升单个组件的性能,而是需要对系统中的多个组件使用并行,包括使用多个同构处理器和多个异构处理器。 |
对称并行 | 非对称并行 |
---|
堆成并行是指使用多个相同部件(通常是处理器或核心)实现可同时操作副本的设计。例如,多核处理器是对称的,因为所有核心都是相同的。 | 非对称并行包含了多个同时工作但彼此不相同的部件。例如,一台包含了cpu、gpu、数学协处理器和输入/输出协处理器的PC机。 |
细粒度并行 | 粗粒度并行 |
---|
细粒度并行是指在单个指令或单个数据层级上提供并行性的计算机。例如,使用16个并行硬件单元同时更新图像的16字节的图形处理器成为采用了细粒度并行。 | 粗粒度并行是指在程序或大块数据层级上提供并行性的计算机。例如,使用一个核心打印文档、另一个核心撰写电子邮件的双核PC称为采用了粗粒度并行。 |
显式并行 | 隐式并行 |
---|
显式并行是指需要程序员控制架构中的各个并行单元。 | 隐式并行是指架构中的硬件自动地处理并行而无须程序员初始化或控制并行执行。 |