Computerworld
.
Инфоресурсы Издания Новости ТВ Обучение События Кто есть кто Об издательстве Подписка

Computerworld

Актуально: ИТ-решение
Семейство решений IBM Tivoli: оптимизация систем хранения данных при существенном росте их объема. Удобное управление данными и их надежная защита. Мониторинг системных ресурсов.




Alt.CW

На прошедшем в Женеве традиционном автосалоне в этом году последним писком...
В исследовательской лаборатории корпорации IBM в Цюрихе разработано миниатюрное USB-устройство,...
Исследователи из Института интегральных схем и систем им. Йозефа Фраунгофера...
Специалисты Университета штата Техас работают над миниатюрными беспроводными датчиками...


Технологии   

Компиляторы, интерпретаторы и байт-код    Версия для печати

Компиляторы — это программы, которые преобразуют исходные тексты программ, написанные на языке программирования высокого уровня, в программу на машинном языке, «понятную» компьютеру.

Алан Джок

Определение

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

Причиной вновь вспыхнувшего интереса к компиляторам стало появление быстрых и сложных 64-разрядных микропроцессоров, типичным представителем которых можно считать Intel Itanium. Все усовершенствования в архитектуре процессоров, такие как распараллеливание и предсказание ветвления, а также возможность резкого увеличения производительности, окажутся бесполезны до тех пор, пока программисты не начнут их реально использовать.

Забота о создании кода, ориентированного на эффективную параллельную обработку, серьезно усложняет и без того непростую задачу современного программирования. В итоге ответственность за увеличение производительности, на которое потенциально способны будущие 64-разрядные процессоры, ложится на компиляторы нового поколения.

Компиляторы, которым предстоит обеспечить значительное увеличение скорости вычислений, уже создаются в исследовательских лабораториях ряда компаний — Hewlett-Packard, Intel, MetaWare, Microsoft и других. В феврале прошлого года компания Silicon Graphics объявила о том, что ее оптимизированные компиляторы позволяют увеличить на 30-100% по сравнению с существующими продуктами производительность программ, работающих на компьютерах с процессорами Itanium и операционной системой Linux.

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

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

Одна из возможных методик состоит в объединении часто используемых команд в группы, которые процессор может обрабатывать одновременно. Оптимизированные компиляторы также максимально используют свободные такты процессора за счет предсказания ветвления, пытаясь заранее определить результат команд наподобие GOTO и тем самым уберечь процессор от необходимости искать требуемые данные по всей программе. Метод спекулятивных вычислений предполагает, что оптимизированный компилятор загружает команды с некоторым упреждением.

Другие пути

Интерпретаторы также преобразуют код, написанный на языке программирования высокого уровня, но они делают это построчно всякий раз, когда программа запускается на выполнение. Для того чтобы программа была «понятна» компьютеру, на котором предполагается исполнять высокоуровневый код непосредственно, на нем также должна работать программа интерпретации. Интерпретаторы полезны для тестирования нового или модифицированного кода или при обучении программированию.

Заранее скомпилированное программное обеспечение работает быстрее, чем интерпретируемые программы, поэтому скомпилированные программы предпочтительны для крупных и устоявшихся приложений. За это приходится расплачиваться зависимостью исполняемого кода от конкретной аппаратной платформы. Но такой подход не всегда оправдывает себя в случае с Internet-апплетами, для которых нельзя сказать априори, в какой именно среде они будут работать.

Идеология Java опирается на третий, своего рода компромиссный подход — байт-код. При использовании байт-кода высокоуровневые программы преобразуются в промежуточный вид, способный исполняться на различных аппаратных платформах. Байт-код Java преобразуется в машинный код с помощью специального интерпретатора, называемого виртуальной машиной Java (Java Virtual Machine — JVM). JVM формирует выделенное пространство в памяти, которое отделено от памяти основной системы, для хранения байт-кода и порождаемых структур.

Использование динамических (just-in-time, JIT — «точно в срок») компиляторов увеличивает производительность Java-приложений. В этом случае не JVM исполняет байт-код, а JIT-компилятор преобразует его в «родной» для данной машины код. Таким образом, с одной стороны, повышается производительность скомпилированного кода, а с другой — сохраняется переносимость, свойственная Java.

Hewlett-Packard придерживается аналогичной тактики со своим TurboChai — средой Java для встроенных приложений. В TurboChai производительность увеличивается за счет преобразования наиболее часто используемого кода в данном встроенном приложении. С помощью выборочной компиляции в HP стараются оптимальным образом управлять использованием памяти, в то же время достигая скоростей, сравнимых с теми, которых позволяют добиться JIT-компиляторы. TurboChai использует байт-код Java в качестве входной информации и генерирует исходные тексты ANSI C, а затем использует любой компилятор для языка Си для получения оптимизированного «родного» машинного кода.

В прошлом году Microsoft анонсировала C#, объектно-ориентированный язык программирования, согласованный с XML. Корпорация подает новый язык как логическое продолжение Си и C++ для Web-приложений. Ключевыми модулями станут Common Language Runtime для C# и специальный компилятор, который преобразует текст, написанный на традиционных языках Кобол, Perl, Фортран или других, в промежуточный язык, который будет работать на новой платформе Microsoft .Net.

Конечные пользователи вряд ли будут уделять много внимания компиляторам. Тем не менее может появиться новое поколение компиляторов, позволяющих увеличить производительность до уровня, позволяющего убедить профессионалов в необходимости использовать 64-разрядные аппаратные архитектуры.


Создание инструментальных средств разработки
ИнструментарийЧто новогоЦели
Оптимизированные компиляторыОбеспечивают высокую производительность процессорной обработки за счет распараллеливания, предсказания ветвлений и спекулятивных вычисленийПомогают реализовать потенциал 64-разрядных процессоров
JIT-компиляторыВ реальном времени компилируют кодУвеличивают производительность интерпретируемых языков, таких как Java
"Выборочные" компиляторыКомпилируют только часто используемый кодУвеличивают производительность, не тратя понапрасну дорогостоящие ресурсы памяти

11.02.2001г.
Также в разделе

11/02/2001   №06
Коротко

p
Эта рубрика в архиве
Список номеров за 

01 02 03 04 05 06
07 08 09 10 11 12
13 14 15-16 17 18 19
20 21 22 23 24 25
26-27 28-29 30 31 32 33
34 35 36 37 38 39
40 41 42 43 44 45
46 47 48      
МаркетГид:



Инфозона

IBM Lotusphere 2009

Анонсы Lotusphere
IBM Lotus представляет последние новинки своего программного семейства для совместной работы

В фокусе событий
Облачные сервисы LotusLive, плоды сотрудничества IBM и SAP

Блог Lotusphere
Последние анонсы и анализ событий

Книги
Последние книги по решениям IBM Lotus - скачать

Из практики
Яркие примеры использования продуктов IBM Lotus на российских предприятиях
Об издательствеКак нас найти  •  Контакты
    Издания:     Computerworld     Windows IT Pro     LAN     Сети     Мир ПК     Открытые системы     Директор ИС    
    WhatCar?     ФСП     Publish     Классный журнал     Stuff     Oil&Gas     Лечащий врач     What Hi-Fi?    
Copyright © 1992-2010. All rights reserved.
TopList    Rambler's Top100 Service Rambler's Top100