Все ваши вопросы даны в документе, на который вы ссылаетесь. Вы должны прочитать это внимательно.
Эти числа независимы от вектора?
Нет. См., Например, таблицу 21-15 в документе, на который вы ссылаетесь. Обратите внимание на задержку короткого вектора FADDS
.
означает ли это, что я могу начинать новую операцию FMULS
каждый цикл, если она не зависит от более раннего результата, который еще не доступен?
Да, это определение пропускной способности.
что произойдет, если у меня есть две функции FMULS друг за другом, где один аргумент зависит от предыдущего вычисления
Выполнение будет остановлено, пока не станет доступен результат первого FMULS
. Подробнее см. 21.6 «Работа табло».
что если мы находимся в векторном режиме с 4 элементами и по второй инструкции FMULS доступны все входные регистры, кроме одного. что будет?
Это остановится. Та же ссылка.
sqrt и деление: предотвратит ли операция sqrt или деление любую последующую операцию для 19 циклов?
Нет. См. Раздел 21.10 «Параллельное выполнение». Пример приведен в таблице 21-15, в которой независимый FADDS
выполняется сразу после FDIVS
.
Обратите внимание, что может быть непросто (хотя и не невозможно) написать коротко-векторный код VFP, который работает значительно быстрее, чем скалярный код для многих типов вычислений. Даже если вы научитесь это делать, это будет иметь сомнительную ценность, поскольку блок NEON, похоже, является новой моделью для векторного вычисления в ARM. Возможно, в долгосрочной перспективе вам будет лучше, если вы игнорируете операцию с короткими векторами и сосредоточитесь на изучении NEON в будущем.