Факторы снижающие производительность:
1. Скалярная обр-ка
Если число векторных операций достигает 20%, то это колоссальная удача. Реальные задачи имеют очень малую долю векторных операций, а это означает, что основная нагрузка идет на скалярный процессор, поэтому скалярная обр-ка снижает производительность этой с-мы.
2. Стартовое время конвейера
Оно состоит из следующих частей: настройка конвейера (этим занимается к-ндный процессор), подготовка данных и задержка до появление 1-го рез-тата. Т.е. мы можем получать каждые 12.5нс очередные данные векторной операции, но длина конвейера у нас, предположим, 5 или 6 стадий. Значит первый рез-тат мы получим ч/з 5*12.5нс.
3. Зависимость по данным
Невозможно работать с векторами в рамках многоф-ционального конвейера или в рамках конвейера с плавающей точкой, если в процессе вычисления идет модификация этих векторов. И если получится так, что эл-нт не может вернутся назад, то он не может быть подан на вход. Поэтому получается зависимость по данным равна числу стадий.
4. Зависимость по управлению
У нас опережающая выборка к-нд. Фактически уже здесь, в 85-ом году, использовалась понятие тех принципов, к-рые заложены в суперскалярной арх-ре, когда подготовка последовательности к-нд компилятором должна быть такова, чтобы как можно больше загрузить ф-циональные устр-ва, в том числе и выполнить опережающее вычисление.
5. Ограничение на размер объема регистровой памяти
Это хорошо, что мы имеем вектор длиной не более 256 эл-нтов, а если больше, например м-ца 256×256, понятно, что не всю м-цу мы сможем поместить в векторную память. Поэтому приходиться декомпозировать эти сложные задачи на части.
6. Конфликты доступа к локальной памяти
Мы видим, что к локальной памяти имеется мн-во входов: для векторных, скалярных и адресных регистров, для масок, для к-нд. Эта память строится изначально по секционному принципу, т.е. делится, как минимум, на 4 секции; каждая ячейка с нулевым адресом выходит на один выход с первым адресом на второй выход с вторым адресом на третий выход с третьим адресом на четвертый, а потом все это повторяется, т.е. идет расслоение. Это приводит к тому, что иногда возникает выборка из локальной памяти не в такой последовательности как она расслоена, нек-рые ф-циональные устр-ва простаивают – ожидают освобождение доступа к локальной памяти. Боролись с этим и придумали ввести промежуточную память Т и В регистры.
7. Наличие специализированных ф-циональных устр-в
Допустим, не можем мы придумать задачу, где исп-ся подсчет числа ед-ц. Вот что мы ни делали, но никак нельзя это устр-во использовать. Значит, когда наша задача решается, то это устр-во будет простаивать. А мы видим, что у нас имеются специализированные устр-ва и поэтому весь объем оборудования, при прочих равных усл-ях, как правило, не задействуется – это снижает общую производительность с-мы по отношению к той теоретической, к-рую мы вначале подсчитали.
