Разработка новых архитектур компьютеров
Хотя обычно мы рассматриваем компиляцию как трансляцию с высокоуровневого языка программирования на машинный уровень, та же технология применима и для трансляции между различными видами языков программирования. Далее приведены некоторые важные применения технологии трансляции.
Бинарная трансляция
Методы компиляции могут использоваться для трансляции бинарного кода для одной машины в код для другой, обеспечивая выполнение машиной программы, изначально скомпилированной для другого набора машинных команд. Методы бинарной трансляции использовались различными компьютерными компаниями для повышения доступности программного обеспечения для их машин. В частности, доминирование рынка персональных компьютеров с процессорами х86 привело к тому, что большая часть программного обеспечения оказалась доступна в виде кода для х86. Были разработаны бинарные трансляторы для конвертации кода х86 в коды Alpha и Sparc. Бинарная трансляция использовалась также фирмой Transmeta, Inc. в реализации набора команд х86. Процессор Transmeta Crusoe представлял собой LVIW-процессор, который вместо выполнения сложных команд х86 непосредственно аппаратным обеспечением использовал трансляцию для конвертации кода х86 в код LVIW.
Бинарная трансляция может также использоваться для обеспечения обратной совместимости. Когда процессоры в Apple Macintosh в 1994 году были сменены с Motorola МС 68040 на PowerPC, то для того, чтобы процессоры PowerPC могли выполнять старый код МС 68040, использовалась бинарная трансляция.
Аппаратный синтез
На высокоуровневых языках пишется не только программное обеспечение; даже проектирование аппаратного обеспечения, в основном, описывается с помощью специализированных высокоуровневых языков, предназначенных для описания аппаратного обеспечения, таких как Verilog и VHDL (Very high speed integrated circuit Hardware Description Language — язык описания очень высокоскоростных интегральных схем аппаратного обеспечения). Дизайн аппаратного обеспечения обычно описывается на уровне регистровых передач (RTL — Register Transfer Level), где переменные представляют регистры, а выражения — комбинационные логические схемы. Инструментарий аппаратного синтеза автоматически транслирует RTL-описания в логические вентили, которые отображаются в транзисторы и в конечном счете — в физические схемы. В отличие от компиляторов для языков программирования, такие инструменты зачастую выполняют оптимизацию очень длительное время — часами. Существуют также методы трансляции проектов на более высоких уровнях, таких как, например, функциональный.
Интерпретаторы запросов к базам данных
Языки полезны не только в программном и аппаратном обеспечении, но и во многих приложениях, например языки запросов, в особенности SQL (Structured Query Language — язык структурированных запросов), использующиеся для выполнения поиска в базах данных. Запросы к базам данных состоят из предикатов, содержащих реляционные и булевы операторы. Они могут интерпретироваться или компилироваться в команды для поиска в базе данных записей, удовлетворяющих указанному предикату.
Компилируемое моделирование
Имитационное моделирование (simulation) представляет собой метод, используемый во многих научных и инженерных дисциплинах, например, для лучшего понимания явлений или проверки конструкций. Входными данными для имитатора обычно включают описание проекта и конкретные входные параметры для запуска моделирования определенной ситуации. Имитация может быть очень дорогой. Обычно требуется имитировать множество возможных альтернативных проектов для разных входных данных, причем каждый эксперимент может занимать дни вычислений на высокопроизводительных машинах. Вместо написания имитатора, интерпретирующего проект, стоит разработать компилятор, который даст на выходе машинный код, что приведет к выигрышу времени. Такое компилируемое моделирование может ускорить работу на порядки по сравнению с интерпретатором. Этот метод используется во многих реальных инструментах, имитирующих проекты, написанные на Verilog или VHDL.
Комментариев нет:
Отправить комментарий