Одной из наиболее полезных функций современных компиляторов для компьютерных языков, таких как C/C++, Fortran, Julia и т. Д., Является их способность выполнять оптимизацию кода перед созданием двоичного кода. Если бы я должен был написать функцию, например, Verilog, чтобы сделать специальную функцию FPGA «hardware», выполнит ли компилятор какие-либо оптимизации? В качестве конкретного примера, скажем, я хочу настроить полиномиальный оценщик, который использует Estrin's scheme for parallelized evaluation, а некоторые из коэффициентов равны 0, будет ли компилятор видеть это и оптимизировать эффективные NOOP?Составители для языков ПЛИС выполняют оптимизацию?
ответ
Да. Оптимизация в вашем примере называется «постоянное распространение». Когда дело доходит до оптимизации булевых или арифметических выражений, методы одинаковы во всех компиляторах. Компилятор упростит любое выражение. Другая оптимизация - «« Исключение мертвого кода »« Если условие ветвления оказывается константой, разблокированные ветви могут быть устранены, а принятая ветвь становится безусловной. Но после того, как RTL преобразуется в аппаратное представление, процесс оптимизации сильно отличается от программных компиляторов.
Verilog имеет петли в генерации операторов, которые всегда полностью развернуты во время синтеза.
Цикл _Any_, который вы пишете в Verilog, должен ли он быть генерирующим или процедурным, для того, чтобы быть развернутым в аппаратное обеспечение. –
- 1. Составители для DOS32?
- 2. Программирование ПЛИС?
- 3. Управление конфигурацией для проектов ПЛИС
- 4. JIT-ing на ПЛИС?
- 5. Преимущества компиляторов для функциональных языков над компиляторами для императивных языков
- 6. Выполняет ли Ruby оптимизацию звонков?
- 7. Запуск программирования ПЛИС
- 8. понимание параллелизма ПЛИС
- 9. Составители экзамен Разъяснение
- 10. Составители, которые поддерживают C11
- 11. Составители и отрицательные числа
- 12. Составители трека в выпуске
- 13. C# Составители Запросы
- 14. Составители, совместимые с gprof?
- 15. О последовательном коде в ПЛИС
- 16. Простые приложения ПЛИС в VHDL?
- 17. Оценка RTL на основе ПЛИС
- 18. Поддержка языков Android и языков меньшинств для языков без локали
- 19. Android, как сделать локализацию для языков языков?
- 20. Словарь ресурсов для языков и языков
- 21. Отключить оптимизацию для google amp
- 22. Выполняют ли Java JVM любую оптимизацию типов специализации или частичной оценки?
- 23. Выполняют ли компиляторы C++ оптимизацию во время компиляции при закрытии лямбда?
- 24. Алгоритмы ПЛИС доминируют над ЦП на
- 25. синтезируемая асинхронная конструкция fifo в сторону ПЛИС
- 26. Xilinx ISE 9.2 и программирование ПЛИС
- 27. Дата и время компиляции в ПЛИС
- 28. Skinning для разных языков
- 29. профайлеры для языков программирования
- 30. Intellisense для динамических языков
Если цикл имеет умеренное и фиксированное число итераций, будет ли компилятор распространять его на аппаратное обеспечение? Кажется, что существует возможность как стандартного параллельного разворота (когда петли независимы), так и последовательного разворота (когда каждая итерация меняет какое-то значение) с помощью такого типа языка. –
_loops_ не существует в аппаратных средствах. Никаких процедурных утверждений в аппаратном обеспечении нет. То, как петли в RTL-коде могут быть реализованы в аппаратных средствах, является слишком широкой темой для этого форума. –
Это не может быть так, не так ли? Я не специалист по аппаратным средствам, поэтому я могу ошибаться, но могу себе представить, что аппаратное обеспечение должно иметь возможность выполнять повторение, которое выполняется всякий раз, когда уменьшающийся счетчик не равен нулю, и установлен флаг «готов к следующей итерации». Являются ли они невозможными или не практичными (то есть неустойчивыми) в некотором роде? –