Я изначально столкнулся с этим сомнением, пытаясь выяснить, является ли конвейерный/суперскалярный CPU SISD, SIMD, MISD или MIMD. Позднее я прочитал из Википедии (статья SISD), что:Что означают термины «поток инструкций» и «поток данных» в контексте таксономии Флинна?
«По словам Майкла Дж. Флинна, SISD может иметь совпадающие характеристики обработки. Конвейерные процессоры и суперскалярные процессоры являются общими примерами, встречающимися на большинстве современных компьютеров SISD».
Кроме того, из Википедии (статья MISD):
«Трубопроводные архитектуры принадлежат к этому типу [MISD], хотя пуристом можно сказать, что данные отличаются после обработки каждой стадии в конвейере.»
Итак, это правильно сделать вывод, что:
1) Требование для обработки «Single Instruction поток» является то, что есть только один высокоуровневый поток выполнения.
2) Просто потому, что параллелизм уровня инструкций в потоке эксплуатируется, его нельзя рассматривать как обработку «Несколько инструкций потока».
Как насчет термина «Single Data Stream»?
Может кто-то сказать, что поток данных для следующего кода сборки MIPS является:
addi $s1,$s0,4
lw $t0,0($s0)
add $s2,$s0,$s1
Является ли это «Единое поток данных»? Изменяется ли эта ситуация, если система использует параллелизм на уровне инструкций?
По массиву команд, вы имеете в виду поток? – Karthiksrndrn
Являются ли эти инструкции в том же порядке, что и программа, или они находятся в динамическом порядке или они в каком-то порядке зависят от архитектуры? – Karthiksrndrn
Вы можете представить массив команд как поток. И они будут выпущены в том же порядке, который они определены в потоке. Но в таких случаях, как SISD или MIMD, вы можете легко делать оптимизацию, такую как переупорядочение команд, предсказание ветвей и т. Д. Это немного сложнее в SIMD, потому что данные поступают из нескольких потоков. –