2017-01-30 14 views
0

Я изначально столкнулся с этим сомнением, пытаясь выяснить, является ли конвейерный/суперскалярный 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 

Является ли это «Единое поток данных»? Изменяется ли эта ситуация, если система использует параллелизм на уровне инструкций?

ответ

1

Подумайте о потоке, как о массиве «вещей». Если мы смотрим на SISD, то есть один массив инструкций и один массив данных. Вы выбираете инструкцию из массива команд и работаете с массивом данных. Если мы идем на SIMD, тогда существует только один массив инструкций, но вы получаете несколько массивов данных. Поэтому просто взглянув на поток команд, как это предусмотрено в вашем случае, мы не можем сказать, является ли его SISD или SIMD. Если в базовой архитектуре реплицируются конвейеры, и каждый из них имеет выделенный поток данных (то же, что и наш массив данных), то инструкция, данная этому конвейеру, будет работать с выделенным потоком данных в этот конвейер. Все эти конвейеры имеют все реплицированные, регистры и т. Д. Поэтому addi $si,$s0,4 будет добавлять разные значения в каждом конвейере.

Когда мы говорим об ILP, мы в основном ищем параллелизм в одном потоке, и это ортогонально SISD или SIMD, потому что мы хотим использовать ILP в обоих случаях.

+0

По массиву команд, вы имеете в виду поток? – Karthiksrndrn

+0

Являются ли эти инструкции в том же порядке, что и программа, или они находятся в динамическом порядке или они в каком-то порядке зависят от архитектуры? – Karthiksrndrn

+1

Вы можете представить массив команд как поток. И они будут выпущены в том же порядке, который они определены в потоке. Но в таких случаях, как SISD или MIMD, вы можете легко делать оптимизацию, такую ​​как переупорядочение команд, предсказание ветвей и т. Д. Это немного сложнее в SIMD, потому что данные поступают из нескольких потоков. –

 Смежные вопросы

  • Нет связанных вопросов^_^