Это параллелизм на уровне команд (ILP) .Инструкции, выдаваемые одновременно из основы, должны быть независимы друг от друга.Они выдаются планировщиком команд SM для разделения функциональных блоков в SM.
Например, если в потоке команд варпа есть две независимые команды FMAD, которые готовы к выдаче, и у SM есть два доступных набора:Единицы FMAD, на которых их выдавать, могут быть выпущены в одном цикле.(Инструкции могут выдаваться вместе в различных комбинациях, но я их не запомнил, поэтому не буду здесь подробно описывать.)
Единицы выполнения FMAD / IMAD в SM 2.1 имеют ширину 16 SP.Это означает, что требуется 2 цикла, чтобы выдать команду деформации (32 потока) в один из 16 блоков выполнения.Существует несколько (3) из этих 16 исполнительных блоков шириной (всего 48 SP) на SM, а также специальные функциональные блоки.Каждый планировщик деформации может выдавать до двух из них за цикл.
Предположим, что исполняющими модулями FMAD являются pipe_A
, pipe_B
и pipe_C
.Допустим, в цикле 135 есть две независимые команды FMAD fmad_1
и fmad_2
, которые ожидают:
- В цикле 135 планировщик команд выдаст первую половину деформации (16 потоков).) от
fmad_1
до FMAD pipe_A
, а первая половина деформации от fmad_2
до FMAD pipe_B
. - В цикле 136 первая половина деформации
fmad_1
переместится на следующую стадию в FMAD pipe_A
, и аналогично первая половина деформации fmad_2
переместится на следующую стадию в FMADpipe_B
.Планировщик деформации теперь выдает вторую половину деформации fmad_1
для FMAD pipe_A
, а вторую половину деформации fmad_2
для FMAD pipe_B
.
Таким образом, требуется 2 цикла, чтобы выдать 2 инструкции из одной и той же основы.Но, как упоминается в OP, есть два планировщика деформации, что означает, что весь этот процесс может выполняться одновременно для инструкций из другого деформации (при условии, что имеется достаточно функциональных единиц).Следовательно, максимальная скорость выдачи составляет 2 инструкции деформации за цикл.Обратите внимание, что это абстрагированное представление для точки зрения программиста - фактические детали архитектуры низкого уровня могут отличаться.
Что касается вашего вопроса о том, когда варп будет готов следующим, если есть дополнительные инструкции, которые неВ зависимости от каких-либо невыполненных (уже выпущенных, но не вышедших на пенсию) инструкций, они могут быть выпущены в следующем цикле.Но как только единственные доступные инструкции зависят от инструкций в полете, деформация не сможет быть выполнена.Однако именно здесь появляются другие деформации - SM может выдавать инструкции для любого резидента, имеющего доступные (неблокируемые) инструкции.Это произвольное переключение между перекосами - это то, что обеспечивает «скрытие задержки», от которого зависят графические процессоры для высокой пропускной способности.