术语 'Instruction Stream' 和 'Data Stream' 在 Flynn 分类法的上下文中是什么意思?

What do the terms 'Instruction Stream' and 'Data Stream' mean in the context of Flynn's Taxonomy?

我最初 运行 在试图弄清楚流水线/超标量 CPU 是 SISD、SIMD、MISD 还是 MIMD 时陷入了这个疑问。我后来确实从维基百科(SISD 文章)中读到:

"According to Michael J. Flynn, SISD can have concurrent processing characteristics. Pipelined processors and superscalar processors are common examples found in most modern SISD computers."

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

"Pipeline architectures belong to this [MISD] type, though a purist might say that the data is different after processing by each stage in the pipeline."

因此,得出以下结论是否正确:

1) 'Single Instruction Stream' 处理的要求是只有一个执行的高级线程。

2) 仅仅因为利用了线程中的指令级并行性,不能将其视为 'Multiple Instruction Stream' 处理。

'Single Data Stream' 这个词呢?

谁能说出以下 MIPS 汇编代码的数据流是什么:

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

是'Single Data Stream'吗?如果系统利用指令级并行性,这种情况会改变吗?

将流视为 "stuff" 的数组。如果我们查看 SISD,则只有一个指令数组和一个数据数组。您从指令数组中选择一条指令,然后对数据数组进行操作。如果我们要使用 SIMD,那么只有一个指令数组,但您会得到多个数据数组。因此,只需查看您的案例中提供的指令流,我们就无法判断它是 SISD 还是 SIMD。如果底层架构有复制的管道,并且每个都有一个专用的数据流(与我们的数据数组相同),那么提供给该管道的指令将对该管道的专用数据流进行操作。所有这些管道都复制了所有内容,注册等。 因此 addi $si,$s0,4 将在每个管道中添加不同的值。

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