Длина пути инструкции
В производительности компьютера — длина пути это количество инструкций машинного кода, необходимых для выполнения раздела компьютерной программы . Общую длину пути для всей программы можно считать мерой производительности алгоритма на конкретном компьютерном оборудовании . Длина пути простой условной инструкции обычно считается равной 2, [ нужна ссылка ] одна инструкция для выполнения сравнения, а другая для перехода к переходу, если определенное условие удовлетворено. Время выполнения каждой инструкции обычно не учитывается при определении длины пути, поэтому длина пути является просто показателем относительной производительности, а не абсолютной в каком-либо смысле.
При выполнении тестовой программы программы большая часть пути инструкции обычно находится внутри внутреннего цикла .
До появления кешей длина пути была приблизительным значением времени выполнения, но в современных процессорах с кешем это может быть гораздо худшее приближение: некоторые инструкции загрузки занимали сотни циклов, когда данных нет в кеше, или порядка в кеше (даже та же самая инструкция в другом раунде цикла).
Программы сборки
[ редактировать ]инструкциями и машинными инструкциями обычно существует связь один к одному Поскольку между ассемблерными , длину пути инструкции часто принимают за количество ассемблерных инструкций, необходимых для выполнения функции или определенного раздела кода. Выполнение простого поиска в таблице в неотсортированном списке из 1000 записей может потребовать около 2000 машинных инструкций (в среднем, при условии равномерного распределения входных значений), тогда как выполнение того же поиска в отсортированном списке с использованием алгоритма двоичного поиска может потребовать всего около 40. машинные инструкции, очень значительная экономия. Выраженный в терминах длины пути инструкции, этот показатель будет уменьшен в этом случае в 50 раз — причина, по которой фактическое время выполнения инструкций может быть второстепенным фактором по сравнению с хорошим выбором алгоритма, требующего более короткой длины пути.
Длина пути инструкции программы на языке ассемблера обычно сильно отличается от количества исходных строк кода для этой программы, поскольку длина пути инструкции включает только код в исполняемом потоке управления для данного ввода и не включает код, который не является актуально для конкретного ввода или недостижимого кода .
Программы языка высокого уровня (HLL)
[ редактировать ]Поскольку один оператор, написанный на языке высокого уровня, может создавать несколько машинных инструкций с переменным числом, не всегда возможно определить длину пути инструкции, например, без симулятора набора команд , который может подсчитывать количество «выполненных» инструкций во время выполнения. моделирование. Если язык высокого уровня поддерживает и при необходимости создает «список ассемблеров», иногда можно оценить длину пути инструкции, исследуя этот список.
Факторы, определяющие длину пути инструкции
[ редактировать ]- встроенный код по сравнению с накладными расходами на вызов и возврат из функции, процедуры или метода, содержащих одни и те же операторы.
- порядок элементов в несортированном списке поиска — наиболее часто встречающиеся элементы следует размещать первыми, чтобы избежать долгих поисков.
- выбор алгоритма – индексированный , бинарный или линейный (поэлементный) поиск
- вычислить заново вместо сохранения ранее вычисленных ( запоминание ) — может сократить количество сложных итераций
- считывать некоторые таблицы в память один раз вместо внешнего чтения каждый раз заново – избегая большой длины пути при множественных вызовах функций ввода-вывода
Использование длины пути инструкции
[ редактировать ]Из вышесказанного можно понять, что можно использовать знание длин путей команд:
- выбрать подходящий алгоритм для минимизации общей длины пути для программ на любом языке
- отслеживать, насколько хорошо программа оптимизирована на любом языке
- определить, насколько эффективны отдельные операторы HLL для любого языка HLL.
- как приблизительный показатель общей производительности компьютера
Внешние ссылки
[ редактировать ]- [1] Компьютерная архитектура Джона Л. Хеннесси, Дэвида А. Паттерсона, Дэвида Голдберга, Крсте Асановича.
- [2] IBM – Глоссарий терминов производительности.