在Flynn的分类标准中,术语“指令流”和“数据流”是什么意思?

时间:2017-01-30 16:15:59

标签: parallel-processing simd cpu-architecture pipelining

我在尝试弄清楚流水线/超标量CPU是SISD,SIMD,MISD还是MIMD时,最初遇到了这个疑问。我后来读了维基百科(SISD文章):

“根据Michael J. Flynn的说法,SISD可以具有并发处理特性。流水线处理器和超标量处理器是大多数现代SISD计算机中常见的例子。”

同样来自维基百科(MISD文章):

“管道架构属于此[MISD]类型,尽管纯粹主义者可能会说在管道中的每个阶段处理后数据都不同。”

所以,得出结论是正确的:

1)“单指令流”处理的要求是只有一个高级执行线程。

2)仅仅因为线程中的指令级并行被利用,就不能将其视为“多指令流”处理。

“单一数据流”一词怎么样?

有人可以说下面的MIPS汇编代码的数据流是什么:

  addi $s1,$s0,4
  lw $t0,0($s0)
  add $s2,$s0,$s1

它是'单一数据流'吗?如果系统利用指令级并行性,这种情况是否会改变?

1 个答案:

答案 0 :(得分:2)

将流视为“东西”数组。如果我们正在查看SISD,那么就会有单个数组指令和单个数据数组。您从指令数组中选择一条指令,然后对数据数组进行操作。如果我们要使用SIMD,那么只有单个指令数组,但是您可以获得多个数据数组。因此,只需查看指令流,如您所提供的那样,我们就无法说出它的SISD还是SIMD。如果底层体系结构具有复制的管道,并且每个管道都具有专用数据流(与我们的数据阵列相同),那么给予该管道的指令将在该管道的专用数据流上运行。所有这些管道都有复制的一切,寄存器等。 因此addi $si,$s0,4将在每个管道中添加不同的值。

当我们谈论ILP时,我们基本上在单个线程中寻找并行性并且与SISD或SIMD正交,因为我们想在两种情况下都利用ILP。