Я читал на своих лекциях и на одном из слайдов перечислены факторы, влияющие на производительность процессора, я не могу понять, как процесс изготовления и качество компилятора влияют на производительность процессора
2 ответа
Качество компилятора проще ...
Хорошие компиляторы знают, как эффективно транслировать код в инструкции процессора.
Представьте, что у вас есть программа, которая выполняет простое математическое уравнение - скажем, 1+1. Умно скомпилированное приложение скажет ЦПУ добавить цифры, сохранить ответ и работа будет выполнена. Это может быть представлено как:
- Установить память 0 как 1
- установить память 1 как 1
- добавить память от 0 до 1
- хранить в банке памяти 0 .. просто!
Плохие компиляторы (а я видел несколько!) будет делать то же самое, но будет выдавать множество дополнительных инструкций для того же, что снижает производительность и замедляет работу приложения. Тот же пример:
- Установить память 0
- Установить память 1
- Установить память 0 на 0
- Установите память 1 в 0
- Установить память от 0 до 1
- установить память 1 на 1
- вспомнить значения из meory 0 и 1
- сложите их вместе
- сохранить результат в памяти 0
Теперь имейте в виду, что сложное приложение, такое как видеоредактор, графическое приложение, игра, даже текстовый процессор, может потребовать сотен тысяч (если не десятков миллионов) операций только для запуска! Это удар хорошего компилятора!
Процесс изготовления является продолжением этого процесса в том смысле, что изготовление - это "склейка" или множественные приложения вместе через общие функции. Если это сделано хорошо, для достижения того же конечного результата требуется меньше вычислительной мощности.
Качество (способность оптимизации) компилятора определяет, насколько хорошо машинный код отображается на аппаратные ресурсы. Оптимизация компилятора может уменьшить объем выполняемой работы (например, развертывание цикла может уменьшить количество ветвей, распределение регистров может уменьшить количество обращений к памяти, встраивание может удалить накладные расходы на вызов и удалить код, который не используется конкретным абонентом), график работа, чтобы избежать ожидания (например, планирование загрузки раньше, так что зависимые инструкции не должны ждать), использование специализированных инструкций, которые выполняют работу более эффективно (например, векторизация может использовать инструкции SIMD), организация доступа к памяти для использования поведения кэша (например, преобразование массива структур в структуру массивов, когда внутренние циклы касаются только нескольких элементов структуры).
(Некоторые оптимизации компилятора применяются ко всему или большей части оборудования; другие более специфичны для конкретных реализаций оборудования. Кроме того, даже несмотря на то, что аппаратная поддержка для выполнения внеочередного выполнения улучшает выполнение плохо спланированного кода, правильное планирование команд может все же обеспечить измеримое, хотя и небольшое, преимущество.)
Процесс изготовления определяет потребление энергии, скорость переключения и площадь, используемую транзисторами (и аналогичные характеристики других компонентов). Очевидно, что транзисторы, которые переключаются быстрее, обеспечивают более высокую производительность. Уменьшение площади на транзистор позволяет использовать большее количество транзисторов в экономически производимом чипе (что может повысить производительность) и может сократить время обмена данными между компонентами (например, задержка доступа к кэшу ограничена расстоянием, а не только скоростью переключения транзисторов) , Использование энергии ограничивает производительность (в некоторой степени, чем больше энергии должно быть доставлено, тем больше "выводов" [шариков припоя] необходимо использовать для доставки этой мощности, уменьшая количество, потенциально доступное для обмена данными с микросхемы на память, ввод / вывод или другие процессоры; извлечение отработанного тепла также представляет собой экономический предел). Более низкая энергия переключения означает, что больше работы может быть выполнено в рамках данного бюджета мощности; Более низкая мощность холостого хода ("утечка") означает, что больше транзисторов можно поддерживать и готово к работе (это, возможно, особенно важно для SRAM, которая всегда должна быть включена для сохранения состояния).