IT-технологии - VLIW-архитектура

Новости it-компаний

Atari Portfolio

News image

Для начала напрягите память и вспомните популярнейший фильм середины прошлого десятилетия с могучим Арнольдом Шварцнеггером в ...

Платформа Apple

News image

Компьютерный мир пришел к разделению труда уже давно. Железо делают одни, софт — другие. Пользователь же...

Авторизация



Развитие технологий:

Второе поколение процессоров Pentium

О втором поколении процессоров Pentium было объявлено в марте 1994 г. Тактовая частота для них составляла 90 МГц (149,8 млн. оп...

Персональные компьютеры семейства Pentium

Развитие семейства персональных компьютеров Pentium можно проследить по таблице 4. Таблица 4 Основные характеристики IBM PC на процессорах ...



VLIW-архитектура
Это интересно - Технологии

vliw-архитектура

Архитектура VLIW (Very Long Instruction Word) берет свое начало от параллельного микрокода, применявшегося еще на заре вычислительной техники, и от суперкомпьютеров Control Data CDC6600 и IBM 360/91.

В 1970=г. многие вычислительные системы оснащались дополнительными векторными сигнальными процессорами (VSP - Vector Signal Processor), использующими VLIW-подобные длинные инструкции, прошитые в ПЗУ. Эти процессоры применялись для выполнения быстрого преобразования Фурье (БПФ) и других вычислительных алгоритмов.

Первыми настоящими VLIW-компьютерами стали мини-суперкомпьютеры, выпущенные в начале 1980 года компаниями MultiFlow, Culler и Cydrome, но они не имели коммерческого успеха. Планировщик вычислений и программная конвейеризация были предложены Фишером и Рау (Cydrome). Сегодня это является основой технологии VLIW-компилятора.

Первый VLIW-компилятор компании Multi-Flow 7/300 использовал два АЛУ для целых чисел, два АЛУ для чисел с плавающей точкой и блок логического ветвления v все это было собрано на нескольких микросхемах. Его 256bit слово инструкции содержало семь 32bit кодов операций. Модули для обработки целых чисел могли выполнять 2 операции за один такт длиной 130ns (т.е. всего 4 при двух АЛУ), что при обработке целых чисел обеспечивало быстродействие около 30MIPS (Million Instruction Per Second). Можно было также комбинировать аппаратные решения так, чтобы получать из 7/300 или 256bit, или 1024bit вычислительные машины. Первый VLIW-компьютер Cydrome Cydra-5 использовал 256bit инструкцию и специальный режим, обеспечивающий выполнение инструкций как последовательности из шести 40bit операций. Поэтому его компиляторы могли генерировать смесь параллельного кода и обычного последовательного. Существует мнение, что в то время, как эти VLIW-машины использовали несколько микросхем, процессор Intel i860 стал первым VLIW-процессором на одной микросхеме. При установке правильной последовательности операций этот процессор в большей степени зависит от компилятора, нежели от аппаратуры.

Не успела еще развеяться пыль после битвы CISC и RISC (CISC победила, приобретая некоторые черты RISC), как намечается новое сражение VLIW против RISC. Несмотря на то, что архитектура VLIW появилась еще на заре компьютерной индустрии (Тьюринг разработал VLIW-компьютер еще в 1946 году), она до сих пор не имела коммерческого успеха. Однако значительного повышения производительности и скорости вычислений можно добиться лишь путем переноса интеллектуальных функций из аппаратного обеспечения в программное (в компилятор). В целом успех этого мероприятия будет определяться в основном программными средствами, именно в этом и состоит проблема.

Аппаратно-программный комплекс VLIW

Архитектура VLIW представляет собой одну из последних реализаций концепции внутреннего параллелизма в микропроцессорах. Их быстродействие можно повысить двумя способами: увеличив либо тактовую частоту, либо количество операций, выполняемых за один такт. В первом случае требуется изобретение быстрых технологий (например, использование арсенида галлия или кремния на сапфире) и применение таких архитектурных решений, как глубинная конвейеризация (конвейеризация в пределах одного такта, когда в каждый момент времени задействован весь кристалл, а не отдельные его части). Для увеличения количества выполняемых за один цикл операций необходимо на одной микросхеме разместить множество функциональных модулей обработки и обеспечить надежное параллельное исполнение машинных инструкций, что дает возможность включить в работу все модули одновременно. Надежность в таком контексте означает, что результаты вычислений будут правильными. Для примера рассмотрим два выражения, которые связаны друг с другом следующим образом: А=В+С и В=D+Е. Значение переменной А будет разным в зависимости от порядка, в котором вычисляются эти выражения (сначала А, а потом В, или наоборот), но ведь в программе подразумевается только одно определенное значение. И если теперь вычислить эти выражения параллельно, то будет ли гарантирован правильный результат?

Планирование порядка вычислений v довольно трудная задача, которую приходится решать при проектировании современного процессора. В суперскалярных процессорах (процессор с двумя и более конвейерами, что позволяет выполнять более одной команды за один такт в идеальных условиях) для распознавания зависимостей между машинными инструкциями применяется специальное довольно сложное аппаратное решение (в процессоре Pentium Pro, например, для этого используется буфер переупорядочивания инструкций, ROB v ReOrder Buffer). Однако размеры такого аппаратного планировщика при увеличении количества функциональных модулей обработки возрастают в геометрической прогрессии, что, в конце концов, может съесть весь кристалл процессора. Поэтому суперскалярные проекты завязли на отметке пять-шесть управляемых за цикл инструкций. При другом подходе можно передать все планирование программному обеспечению, как это делается в конструкциях с VLIW. Умный компилятор должен выискать в программе все инструкции, которые являются совершенно независимыми, собрать их вместе в очень длинные строки (длинные инструкции) и затем отправить на одновременное исполнение функциональными модулями, количество которых строго равно количеству операций в такой длинной инструкции. Очень длинные инструкции обычно имеют размер от 256bit до 1024bit. Размер полей, кодиру-ющих операции для каждого функционального модуля, в такой метаинструкции намного меньше.

Устройство VLIW-процессора

Процессор VLIW, имеющий такую схему, может выполнять восемь операций за один такт и работать при аналогичной тактовой частоте на 80-100% быстрее существующих суперскалярных чипов. Добавочные функциональные блоки могут повысить производительность (за счет уменьшения конфликтов за ресурсы), не слишком усложняя чип. Однако это расширение ограничивается физическими возможностями: количеством портов чтения-записи, необходимым для обеспечения одновременного доступа функциональных блоков к файлу, регистров и взаимосвязей, которое геометрически растет при увеличении количества функциональных блоков. К тому же компилятор должен распараллелить программу до необходимого уровня, чтобы обеспечить загрузку каждому блоку.

Процессор выполняет 8 операций за один цикл.

Эта гипотетическая инструкция длиной в 256bit имеет восемь операционных полей, каждое из которых выполняет традиционную трехоперандную RISC-подобную инструкцию: < оп. > < рег. источник > < рег. получатель >. Каждое операционное поле может непосредственно управлять специфическим функциональным блоком при минимальном декодировании.

Аппаратная реализация VLIW-процессора очень проста: несколько небольших функциональных модулей (сложения, умножения, ветвления и т.д.), подключенных к шине процессора, и несколько регистров и блоков кэш-памяти. VLIW-архитектура представляет интерес для полупроводниковой промышленности по двум причинам. Первая v теперь на кристалле больше места может быть отведено для блоков обработки, а не, скажем, для блока предсказания переходов. Вторая причина v VLIW-процессор может быть высокоскоростным, так как предельная скорость обработки определяется только внутренними особенностями самих функциональных модулей. Привлекает и то, что VLIW может реализовать старые CISC-инструкции эффективнее RISC. Это происходит потому, что программирование VLIW-процессора очень напоминает написание микрокода (mc). В те времена, когда память для ПК была дорогостоящей, программисты экономили ее, прибегая к сложным инструкциям процессора 8086 типа STOS и LODS (косвенная запись и чтение памяти). CISC реализует такие инструкции, как микро-программы, зашитые в постоянную память (ROM) и выполняемые процессором.

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

Архитектура RISC вообще исключает использование микрокода, реализуя инструкции чисто аппаратным путем. VLIW же делает это по-другому v изымает микрокод из процессора и переносит его в компилятор, в результате чего эмуляция инструкций процессора 8086, таких, как STOS, осуществляется очень эффективно, поскольку процессор получает для исполнения уже готовые макросы. Но вместе с тем это порождает и некоторые трудности, ведь написание микрокода v невероятно трудоемкий и длительный процесс. Архитектуре VLIW может обеспечить жизнеспособность только умный компилятор, который возьмет эту работу на себя. Именно это ограничивает использование вычислительных машин с архитектурой VLIW: пока она нашла свое применение только в векторных (для научных расчетов) и сигнальных процессорах.

Принцип действия VLIW-компилятора

Вновь вспыхнувший в последнее время интерес к VLIW, как к архитектуре, которую можно использовать для реализации вычислений общего назначения, дал существенный толчок развитию техники компиляции для VLIW. VLIW-компилятор упаковывает группы независимых операций в очень длинные слова инструкций таким способом, чтобы обеспечить эффективное их исполнение функциональными модулями за один машинный такт. Компилятор сначала обнаруживает все зависимости между данными, а затем определяет, как их развязать. Чаще всего это делается путем переупорядочивания всей программы v разные ее блоки перемещаются с одного места в другое. Этот подход отличается от применяемого в суперскалярном процессоре, который для определения зависимостей использует специальное аппаратное решение прямо во время выполнения программы (оптимизирующие компиляторы, безусловно, улучшают работу суперскалярного процессора, но не делают его привязанным к ним). Большинство суперскалярных процессоров может обнаружить зависимости и планировать параллельное исполнение только внутри базовых программных блоков (группа последовательных операторов программы, не содержащих внутри себя останова или логиче-ского ветвления, допустимых только в конце). Некоторые переупорядочивающие системы положили начало расширению области сканирования, не ограничивая ее базовыми блоками. Для обеспечения большего параллелизма VLIW-компьютеры должны наблюдать за операциями из разных базовых блоков, чтобы поместить эти операции в одну и ту же длинную инструкцию v их область обзора должна быть шире, чем у суперскалярных процессоров. Это обеспечивается путем прокладки маршрута но всей программе (трассировка). Трассировка v наиболее оптимальный для некоторого набора исходных данных маршрут по программе для обеспечения правильного результата v гарантирует непересечение этих данных=v т.е. маршрут, который проходит по участкам, пригодным для параллельного выполнения (эти участки формируются, кроме всего прочего, и путем переноса кода из других мест программы), после чего остается упаковать эти участки в длинные инструкции и передать на выполнение. Планировщик вычислений осуществляет оптимизацию на уровне всей программы, а не ее отдельных базовых блоков. Для VLIW, так же, как и для RISC, ветвления в программе являются врагом , препятствующим эффективному ее выполнению: типичный программный код (тот, что не используется в научных расчетах) содержит около шести ветвлений на инструкцию. В то время как RISC для прогнозирования ветвлений использует аппаратное решение, VLIW оставляет это за компилятором. Компилятор использует информацию, собранную им путем профилирования программы, хотя у будущих VLIW-процессоров предполагается небольшое аппаратное расширение, обеспечивающее сбор для компилятора статистической информации непосредственно во время выполнения программы. Компилятор прогнозирует наиболее подходящий маршрут и планирует его прохождение, рассматривая его как один большой базовый блок, а затем повторяет этот процесс для всех других возникших после этого программных веток, и так до самого конца программы. Он также умеет делать при анализе кода и другие умные шаги , такие, как развертывание программного цикла и IF-преобразование, в процессе которого временно удаляются все логические переходы из секции, подвергающейся трассировке. Там, где RISC может только просмотреть код вперед на предмет ветвлений, VLIW-компилятор перемещает его с одного места в другое до обнаруженного ветвления (согласно трассировке), но предусматривает при необходимости возможность отката (Retire) назад, к предыдущему программному состоянию. Соответствующее аппаратное обеспечение, добавленное к VLIW-процессору, может оказать определенную поддержку компилятору. Например, операции, имеющие по несколько ветвлений, могут входить в одну длинную инструкцию и, следовательно, выполняться за один машинный такт. Поэтому выполнение условных операций, которые зависят от результатов предыдущих, может быть реализовано программным способом, а не аппаратным. Цена, которую приходится платить за увеличение быстродействия VLIW-процессора, намного меньше стоимости компиляции. Именно поэтому основные расходы приходятся на компиляторы.

Трудности реализации VLIW

При реализации архитектуры VLIW возникают и другие серьезные проблемы: VLIW-компилятор должен в деталях знать внутренние особенности архитектуры процессора, опускаясь до внутреннего устройства самих функциональных модулей. Как следствие, при выпуске новой версии VLIW-процессора с большим количеством обрабатывающих модулей (или даже с тем же количеством, но другим быстродействием) все старое программное обеспечение, скорее всего, потребует полной перекомпиляции. Надо ли было при переходе, скажем, на процессор 486 избавляться от имеющегося ПО для процессора 386? Конечно, нет, а вот при переходе от одного VLIW-процессора к другому придется, и это разработчик должен учесть при планировании своих затрат v потребуются дополнительные средства на перекомпиляцию. Сторонники VLIW-архитектуры в оправдание предлагают разделить процесс компиляции на две стадии. Все программное обеспечение должно готовиться в аппаратно-независимом формате с использованием промежуточного кода, который окончательно транслируется в машинно-зависимый код только после установки на машине пользователя. Пример такого подхода демонстрирует фонд OSF со своим стандартом ANDF (Architecture-Neutral Distribution Format). Но кросс-платформенное программное обеспечение пока еще только желаемое, а в действительности разработчики ПО для ПК зачастую весьма инертны по отношению к принятию радикально новых технологий. Другая трудность v это по своей сути статическая природа оптимизации, которую обеспечивает VLIW-компилятор. Как поведет себя программа, когда столкнется во время компиляции с непредусмотренными динамическими ситуациями, такими как, например, ожидание ввода-вывода? Архитектура VLIW возникла в ответ на требования со стороны научно-технических организаций, где при вычислениях особенно необходимо большое быстродействие процессора, но для объектно-ориентированных и управляемых по событиям программ она менее подходит, а ведь именно такие программы составляют сейчас большинство в мире ПК. Но и это еще не все: а как можно проверить, что компилятор выполняет такие сложные преобразования надежно и правильно? Пока никак. Вот почему VLIW-компиляторы называют вещью в себе . Однако решение сложной задачи обеспечения взаимодействия аппаратного и программного обеспечения в архитектуре VLIW требует серьезных предварительных исследований.

 


Читайте:


Добавить комментарий


Защитный код
Обновить

Кто на самом деле первым открыл транзистор?

News image

К сожалению, мировая слава первооткрывателя не всегда достается тем, кто действительно был первым. Это в полной мере можно отнести к ге...

КОНРАД ЦУЗЕ. ПИОНЕР КОМПЬЮТЕРОСТРОЕНИЯ

News image

В Германии его называют изобретателем компьютера , с данным утверждением трудно не согласиться. Единственное, что я добавил бы к эт...

Жесткие диски для ноутбуков становятся тоньше

News image

На данный момент жесткие диски для ноутбуков могут быть толщиной 9,5 мм и 12,5 мм. Первые получили наибольшее распространение, а об...

MacBU подытоживает две тысячи девятый год

News image

Как прошел 2009 год в компании, которую традиционно принято считать вторым крупнейшим разработчиков ПО для платформы Apple Macintosh? В Microsoft Ma...

Financial Times обещает iTablet уже в следующем месяце

News image

Конец декабря редакция Financial Times решила скрасить очередной порцией слухов о планшетнике Apple. По данным издания, это устройство, покорившее заголовки СМ...

Внедрение 6-ядерных процессоров Intel Xeon может потребовать

News image

Изданию Fudzilla стали известны подробности по первому 6-ядерному процессору Intel Xeon. Он получит обозначение Core i7 980X, а его несущая тактовая ча...

VESA официально утвердила стандарт mini DisplayPort

News image

Презентованный Apple осенью 2008-го новый видеоинтерфейс mini DisplayPort (сокращенно mDP) вызвал неоднозначную реакцию, отголоски которой оставались различимыми вплоть до вчерашнего дн...

Планшетный Мак покажут 26 января?

News image

За несколько дней до начала нового 2010 года онлайн-пресса разразилась новым потоком слухов на тему планшетного компьютера Apple: сначала хорошо ос...