Как процесс изготовления и качество компилятора влияют на производительность ЦП?

Как процесс изготовления и качество компилятора влияют на производительность ЦП?

Я читал лекции и на одном из слайдов были перечислены факторы, влияющие на производительность процессора. Я не могу понять, как это происходит.процесс изготовленияикачество компиляторавлияют на производительность процессора

решение1

Качество компилятора — проще всего...

Хорошие компиляторы знают, как эффективно преобразовывать код в инструкции процессора.

Представьте, что у вас есть программное обеспечение, которое решает простое математическое уравнение — скажем, 1+1. Грамотно скомпилированное приложение скажет процессору сложить числа, сохранить ответ и работа будет выполнена. Это можно представить так:

  • Установить память 0 как 1
  • установить память 1 как 1
  • добавить память 0 к 1
  • сохранить в банке памяти 0 ..просто!

Плохие компиляторы (а я видел несколько!) сделают то же самое, но выдадут кучу дополнительных инструкций, чтобы сделать то же самое, что снизит производительность и замедлит приложение. Тот же пример:

  • Установить память 0
  • Установить память 1
  • Установить память 0 на 0
  • Установить память 1 на 0
  • Установить память 0 на 1
  • установить память 1 на 1
  • вызвать значения из памяти 0 и 1
  • сложите их вместе
  • сохранить результат в памяти 0

Теперь учтите, что сложному приложению, такому как видеоредактор, графическое приложение, игра, даже текстовый процессор, может потребоваться выполнить сотни тысяч (если не десятки миллионов) операций только для запуска! Вот что значит хороший компилятор!

Процесс изготовления является расширением этого в том смысле, что изготовление представляет собой «склеивание» нескольких приложений посредством общих функций. Если они выполнены хорошо, для достижения того же конечного результата требуется меньше вычислительной мощности.

решение2

Качество (оптимизирующая способность) компилятора определяет, насколько хорошо машинный код сопоставляется с аппаратными ресурсами. Оптимизации компилятора могут сократить объем выполняемой работы (например, развертывание цикла может сократить количество ветвей, распределение регистров может сократить количество обращений к памяти, встраивание может удалить накладные расходы на вызовы и удалить код, который не используется конкретным вызывающим), запланировать работу так, чтобы избежать ожидания (например, планирование загрузок раньше, чтобы зависимые инструкции не ждали), использовать специализированные инструкции, которые выполняют работу более эффективно (например, векторизация может использовать инструкции SIMD), организовать доступ к памяти для использования поведения кэша (например, преобразование массива структур в структуру массивов, когда внутренние циклы затрагивают только несколько членов структуры).

(Некоторые оптимизации компилятора применимы ко всему или большинству аппаратных средств; другие более специфичны для конкретных реализаций оборудования. Кроме того, даже несмотря на то, что аппаратная поддержка выполнения вне очереди улучшает выполнение менее хорошо спланированного кода, хорошее планирование инструкций все равно может обеспечить измеримую, хотя и небольшую, выгоду.)

Процесс изготовления определяет потребление энергии, скорость переключения и площадь, используемую транзисторами (и аналогичные характеристики других компонентов). Очевидно, что транзисторы, которые переключаются быстрее, обеспечивают более высокую производительность. Уменьшение площади на транзистор позволяет использовать больше транзисторов в экономичном чипе (что может привести к большей производительности) и может сократить время связи между компонентами (например, задержка доступа к кэшу ограничена расстоянием, а не только скоростью переключения транзистора). Использование энергии ограничивает производительность (в некоторой степени, чем больше мощности должно быть доставлено, тем больше «штырьков» [шариков припоя] должно быть использовано для доставки этой мощности, что уменьшает количество потенциально доступных для связи вне чипа с памятью, вводом-выводом или другими процессорами; извлечение отработанного тепла также представляет собой экономический предел). Более низкая энергия переключения означает, что больше работы может быть выполнено в рамках заданного бюджета мощности; более низкая мощность простоя («утечки») означает, что больше транзисторов могут быть запитаны и готовы к работе (это, возможно, особенно важно для SRAM, которая должна быть всегда запитана для сохранения состояния).

Связанный контент