Оптимизация для архитектуры компьютера
В свое время, на заре компьютерной эры, компиляторы разрабатывались после того, как создавались компьютеры. С тех пор ситуация изменилась. Поскольку программирование на языках высокого уровня стало нормой, производительность вычислительных систем определяется не просто скоростью процессоров, но и тем, насколько хорошо компиляторы могут использовать их новые возможности. Таким образом, при разработке архитектур современных вычислительных систем компиляторы разрабатываются на стадии проектирования процессора, и скомпилированный код, выполняемый на имитаторах, используется для оценки предлагаемых архитектурных возможностей.
RISC
Одним из хорошо известных примеров, когда компиляторы повлияли на разработку архитектуры компьютера, было изобретение архитектуры RISC (Reduced Instruction-Set Computer — компьютер с сокращенным набором команд). До этого изобретения основная тенденция состояла в разработке все более сложных наборов команд, предназначенных для упрощения программирования на языке
ассемблера; такие архитектуры известны как CISC (Complex Instruction-Set Computer — компьютер со сложным набором команд). Например, набор команд CISC включает сложные режимы адресации памяти для поддержки обращения к структурам, а также команды вызова процедур с сохранением регистров и передачей параметров в стеке.
Методы оптимизации зачастую способны свести такие команды к небольшому количеству более простых операций, устраняя избыточность сложных команд. Таким образом, желательно построить простые наборы команд, которые способны эффективно использоваться компиляторами и существенно облегчить оптимизацию аппаратного обеспечения.
Большинство архитектур процессоров общего назначения, включая PowerPC, SPARC, MIPS, Alpha и PA-RISC, основаны на концепции RISC. Хотя архитектура х86 — наиболее популярного процессора — имеет набор команд CISC, при реализации этого процессора применены многие идеи, разработанные для RISC- машин. Более того, самый эффективный способ использования высокопроизводительных компьютеров х86 состоит в использовании только простейших команд процессора.
Специализированные архитектуры
За последние три десятилетия было предложено множество архитектурных концепций, включающих потоковые машины (data flow machine), векторные машины, машины VLIW (Very Long Instruction Word — архитектура с командными словами очень большой длины), SIMD (Single Instruction, Multiple Data — один поток команд, много потоков данных), массивы процессоров, систолические матрицы, мультипроцессоры с разделяемой памятью и мультипроцессоры с распределенной памятью. Разработка каждой из этих архитектурных концепций сопровождалась исследованиями и разработкой соответствующих технологий компиляции.
Некоторые из перечисленных идей нашли свое место во встраиваемых машинах. Поскольку целая система может быть собрана в виде единой схемы, процессоры больше не рассматриваются как отдельные товарные единицы, зато могут изготавливаться на заказ для достижения наивысшей эффективности решения тех или иных задач. Таким образом, в отличие от процессоров общего назначения, когда экономика заставляет использовать, по сути, единые архитектурные решения, специализированные процессоры для конкретных приложений демонстрируют огромное разнообразие архитектурных решений. Технологии компиляции должны не только поддерживать программирование для таких архитектур, но и участвовать в принятии решения об использовании той или иной архитектуры.
Комментариев нет:
Отправить комментарий