Очень длинное командное слово

редактировать

Очень длинное командное слово (VLIW ) относится к архитектурам набора команд разработан для использования параллелизма на уровне команд (ILP). В то время как обычные центральные процессоры (ЦП, процессор) в основном позволяют программам определять инструкции для выполнения только в последовательности, процессор VLIW позволяет программам явно указывать инструкции для выполнения в параллельном. Эта конструкция предназначена для обеспечения более высокой производительности без сложности, присущей некоторым другим конструкциям.

Содержание
  • 1 Обзор
  • 2 Мотивация
  • 3 Дизайн
  • 4 История
  • 5 Реализации
  • 6 Обратная совместимость
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние ссылки
Обзор

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

Мотивация

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

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

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

Дизайн

В суперскалярных проектах количество исполнительных единиц невидимо для набора команд. Каждая инструкция кодирует только одну операцию. Для большинства суперскалярных схем ширина инструкции составляет 32 бита или меньше.

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

Например, ниже приводится инструкция для однокристального компьютера с архитектурой Super Harvard (SHARC). За один цикл он выполняет умножение с плавающей запятой, сложение с плавающей запятой и две загрузки с автоинкрементом. Все это умещается в одной 48-битной инструкции:

f12 = f0 * f4, f8 = f8 + f12, f0 = dm (i0, m3), f4 = pm (i8, m9);

Начиная с самого раннего В дни компьютерной архитектуры некоторые процессоры добавили несколько арифметических логических блоков (ALU) для параллельной работы. Суперскалярные ЦП используют оборудование, чтобы решить, какие операции могут выполняться параллельно во время выполнения, в то время как ЦП VLIW используют программное обеспечение (компилятор), чтобы заранее решить, какие операции могут выполняться параллельно. Поскольку сложность планирования команд переносится в компилятор, сложность аппаратного обеспечения может быть существенно снижена.

Аналогичная проблема возникает, когда результат распараллеливаемой инструкции используется в качестве входных данных для перехода. Большинство современных процессоров предполагают, какая ветвь будет выбрана еще до завершения вычислений, чтобы они могли загрузить инструкции для ветки или (в некоторых архитектурах) даже начать вычислять их предположительно. Если ЦП ошибается, все эти инструкции и их контекст необходимо очистить и загрузить правильные, что требует времени.

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

В VLIW компилятор использует эвристику или информацию профиля, чтобы угадать направление ветвления. Это позволяет ему спекулятивно перемещать и заранее планировать операции до перехода в ветвь, отдавая предпочтение наиболее вероятному пути, который он ожидает через ветвь. Если ветвление идет неожиданным путем, компилятор уже сгенерировал компенсирующий код, чтобы отбросить спекулятивные результаты, чтобы сохранить семантику программы.

Векторный процессор (одна инструкция, несколько данных (SIMD )) ядра могут быть объединены с архитектурой VLIW, например, в микропроцессоре Fujitsu FR-V, для дальнейшего увеличения пропускная способность и скорость.

История

Концепция архитектуры VLIW и термин VLIW были изобретены Джошем Фишером в его исследовательской группе в Йельский университет в начале 1980-х. Его первоначальная разработка планирования трассировки как метода компиляции для VLIW была разработана, когда он был аспирантом Нью-Йоркского университета. До VLIW понятие предварительного планирования исполнительных блоков и параллелизма на уровне инструкций в программном обеспечении было прочно закреплено в практике разработки горизонтального микрокода.

. Инновации Фишера включали разработку компилятора, который мог ориентироваться на горизонтальный микрокод из программы, написанные на обычном языке программирования . Он понял, что для получения хорошей производительности и целевой машины с широким выпуском потребуется найти параллелизм, выходящий за рамки обычного базового блока. Он также разработал методы выявления параллелизма за пределами базовых блоков. Планирование трассировки - такой метод, который включает в себя планирование наиболее вероятного пути основных блоков в первую очередь, вставку компенсирующего кода для работы со спекулятивными движениями, планирование второй наиболее вероятной трассы и так далее, пока расписание не будет завершено.

Вторым нововведением Фишера было представление о том, что целевая архитектура ЦП должна быть спроектирована так, чтобы быть разумной целью для компилятора; что компилятор и архитектура процессора VLIW должны иметь кодовую подпись. Частично это было вызвано трудностями, которые Фишер заметил в Йельском университете при компиляции для таких архитектур, как Floating Point Systems 'FPS164, в которых была архитектура вычисления комплексного набора команд (CISC), которая отделяла инициацию команд от инструкции, которые сохранили результат, требовали очень сложных алгоритмов планирования. Фишер разработал набор принципов, характеризующих надлежащую конструкцию VLIW, таких как самодренирующиеся конвейеры, широкие многопортовые регистровые файлы и архитектуры памяти. Эти принципы облегчили компиляторам создание быстрого кода.

Первый компилятор VLIW был описан в докторской степени. диссертация Джона Эллиса под руководством Фишера. Компилятор получил название Bulldog в честь талисмана Йельского университета.

Фишер покинул Йель в 1984 году, чтобы основать стартап-компанию Multiflow вместе с соучредителями Джоном О'Доннеллом и Джоном Руттенбергом. Multiflow произвела серию TRACE VLIW мини-суперкомпьютеров, поставив свои первые машины в 1987 году. VLIW Multiflow мог выполнять 28 операций параллельно на одну команду. Система TRACE была реализована в виде сочетания средней интеграции (MSI), крупномасштабной интеграции (LSI) и очень крупномасштабной интеграции (VLSI), упакованных в шкафы, и эта технология устарела, поскольку она стала более рентабельной, если интегрировать все компоненты процессора (за исключением памяти) в один чип.

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

реализации

Cydrome была компанией, производившей числовые процессоры VLIW с использованием интегральных схем эмиттерной логики (ECL) в тот же период времени (конец 1980-х). Эта компания, как и Multiflow, потерпела крах через несколько лет.

Одним из лицензиатов технологии Multiflow является Hewlett-Packard, к которому Джош Фишер присоединился после прекращения деятельности Multiflow. Боб Рау, основатель Cydrome, также присоединился к HP после неудачи Cydrome. Эти двое руководили исследованиями компьютерной архитектуры в Hewlett-Packard в 1990-х годах.

Наряду с вышеуказанными системами, в то же время (1989–1990), Intel реализовала VLIW в Intel i860, своем первом 64-битном микропроцессоре и первом процессоре, реализовавшем VLIW. на одной микросхеме. Этот процессор мог работать как в простом режиме RISC, так и в режиме VLIW:

В начале 1990-х годов Intel представила микропроцессор i860 RISC. Этот простой чип имел два режима работы: скалярный режим и режим VLIW. В режиме VLIW процессор всегда выбирал две инструкции и предполагал, что одна была целочисленной инструкцией, а другая - с плавающей точкой.

Режим VLIW i860 широко использовался во встроенном цифровом сигнальном процессоре. (DSP), поскольку выполнение приложений и наборы данных были простыми, хорошо упорядоченными и предсказуемыми, что позволяло разработчикам в полной мере использовать преимущества параллельного выполнения, предоставляемые VLIW. В режиме VLIW i860 может поддерживать производительность с плавающей запятой в диапазоне 20-40 MFLOPS двойной точности; очень высокое значение для своего времени и для процессора, работающего на частоте 25-50 МГц.

В 1990-х годах Hewlett-Packard исследовала эту проблему как побочный эффект продолжающейся работы над семейством процессоров PA-RISC. Они обнаружили, что ЦП можно значительно упростить, удалив сложную логику диспетчеризации из ЦП и поместив ее в компилятор. Компиляторы того времени были намного сложнее, чем компиляторы 1980-х годов, поэтому добавленная сложность компилятора считалась небольшой стоимостью.

ЦП VLIW обычно состоят из нескольких RISC-подобных исполнительных блоков, которые работают независимо. Современные VLIW обычно имеют от четырех до восьми основных исполнительных единиц. Компиляторы генерируют начальные последовательности команд для ЦП VLIW примерно так же, как для традиционных ЦП, генерируя последовательность инструкций, подобных RISC. Компилятор анализирует этот код на предмет отношений зависимости и требований к ресурсам. Затем он планирует инструкции в соответствии с этими ограничениями. В этом процессе независимые инструкции могут планироваться параллельно. Поскольку VLIW обычно представляют инструкции, запланированные параллельно с более длинным командным словом, которое включает в себя отдельные инструкции, это приводит к гораздо более длинному коду операции (называемому очень длинным), чтобы указать, что выполняется в данном цикле.

Примеры современных ЦП VLIW включают медиапроцессоры TriMedia от NXP (ранее Philips Semiconductors), однокристальный компьютер с архитектурой Super Harvard (SHARC) от Analog Устройства, семейство цифровых сигнальных процессоров C6000 (DSP) от Texas Instruments, семейство ST200 от STMicroelectronics на основе архитектуры Lx ( разработан Паоло Фарабоски в лаборатории HP Джоша Фишера), а семейство MPPA Manycore - Калреем. Эти современные процессоры VLIW в основном успешны в качестве встроенных медиа-процессоров для бытовых электронных устройств.

Функции VLIW также были добавлены в конфигурируемые ядра процессора для конструкций система на кристалле (SoC). Например, процессор Tensilica Xtensa LX2 включает технологию под названием Flexible Length Instruction eXtensions (FLIX), которая позволяет выполнять многооперационные инструкции. Компилятор Xtensa C / C ++ может свободно смешивать 32- или 64-битные инструкции FLIX с однооперационными RISC-инструкциями процессора Xtensa, которые имеют ширину 16 или 24 бит. Упаковывая несколько операций в широкое 32- или 64-разрядное командное слово и позволяя этим многооперационным командам смешиваться с более короткими командами RISC, FLIX позволяет разработчикам SoC реализовать преимущества производительности VLIW, устраняя при этом раздувание кода ранние архитектуры VLIW. Infineon Carmel DSP - еще одно ядро ​​процессора VLIW, предназначенное для SoC. В нем используется аналогичный метод улучшения плотности кода, называемый конфигурируемым длинным командным словом (CLIW).

За пределами рынка встроенных процессоров Intel Itanium IA-64 явно параллельное вычисление команд ( EPIC) и Эльбрус 2000 являются единственными примерами широко используемых архитектур ЦП VLIW. Однако архитектуру EPIC иногда отличают от чистой архитектуры VLIW, поскольку EPIC поддерживает полное предсказание команд, вращение файлов регистров и очень длинное командное слово, которое может кодировать непараллельные группы команд. VLIW также получили значительное распространение среди потребителей на рынке графических процессоров (GPU), хотя и Nvidia, и AMD с тех пор перешли на архитектуры RISC, чтобы повысить производительность на других -графические рабочие нагрузки.

ATI Technologies '(ATI) и Advanced Micro Devices ' (AMD) Микроархитектура TeraScale для графических процессоров (GPU) - это VLIW микроархитектура.

В декабре 2015 года в России произведена первая партия ПК на базе ЦП VLIW Эльбрус-4с.

Обратная совместимость

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

Transmeta решила эту проблему, включив уровень программного компилятора двоичного кода в двоичный (так называемый преобразование кода ) в свою реализацию Crusoe архитектуры x86. Этот механизм был объявлен для перекомпиляции, оптимизации и преобразования кодов операций x86 во время выполнения во внутренний машинный код ЦП. Таким образом, микросхема Transmeta внутренне является процессором VLIW, эффективно отделенным от набора инструкций x86 CISC , который он выполняет.

Архитектура Intel Itanium (среди прочего) решила проблему обратной совместимости с помощью более общего механизма. Внутри каждой из инструкций с несколькими кодами операции выделяется битовое поле для обозначения зависимости от предыдущей инструкции VLIW в потоке программных инструкций. Эти биты устанавливаются на время компиляции, таким образом освобождая оборудование от вычисления этой информации о зависимостях. Наличие этой информации о зависимости, закодированной в потоке команд, позволяет более широким реализациям выдавать несколько независимых инструкций VLIW параллельно за цикл, в то время как более узкие реализации будут выдавать меньшее количество инструкций VLIW за цикл.

Другим предполагаемым недостатком проектов VLIW является раздувание кода, которое возникает, когда один или несколько исполнительных модулей не имеют полезной работы и, следовательно, должны выполнять No Operation NOP инструкции. Это происходит, когда в коде есть зависимости и конвейеры инструкций должны быть очищены, прежде чем можно будет продолжить последующие операции.

Поскольку количество транзисторов на микросхеме выросло, очевидные недостатки VLIW уменьшились. Популярность архитектур VLIW растет, особенно на рынке встроенных систем, где можно настроить процессор для приложения в системе на кристалле. Встроенные продукты VLIW доступны от нескольких поставщиков, включая FR-V от Fujitsu, BSP15 / 16 от Pixelworks, ST231 от STMicroelectronics, TriMedia от NXP Semiconductors, CEVA-X DSP от CEVA, Jazz DSP от Improv Systems и Silicon Hive. Линия DSP Texas Instruments TMS320 эволюционировала в своем семействе C6xxx, чтобы больше походить на VLIW, в отличие от более раннего семейства C5xxx.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-18 11:53:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте