Очень длинное командное слово
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2014 г. ) |
Очень длинное командное слово ( VLIW ) относится к архитектурам набора команд , которые предназначены для использования параллелизма на уровне команд (ILP). Процессор VLIW позволяет программам явно указывать инструкции для параллельного выполнения , тогда как обычные центральные процессоры (ЦП) в большинстве случаев позволяют программам указывать инструкции для выполнения только последовательно. VLIW предназначен для обеспечения более высокой производительности без усложнения, присущего некоторым другим конструкциям.
Традиционные средства повышения производительности процессоров включают разделение инструкций на подэтапы, чтобы инструкции могли выполняться частично одновременно (так называемая конвейерная обработка ), распределение отдельных инструкций для независимого выполнения в разных частях процессора ( суперскалярные архитектуры ) и даже выполнение инструкций в порядке, отличном от программы ( выполнение вне порядка ). [1] Все эти методы усложняют аппаратное обеспечение (более крупные схемы, более высокая стоимость и энергопотребление), поскольку процессор должен принимать все решения внутри себя, чтобы эти методы работали.
Напротив, метод VLIW зависит от программ, предоставляющих все решения относительно того, какие инструкции выполнять одновременно и как разрешать конфликты. На практике это означает, что компилятор (программное обеспечение, используемое для создания конечных программ) становится более сложным, но аппаратное обеспечение проще, чем во многих других средствах параллелизма.
История
[ редактировать ]Концепция архитектуры VLIW и термин VLIW были изобретены Джошем Фишером в его исследовательской группе в Йельском университете в начале 1980-х годов. [2] Его первоначальная разработка планирования трассировки как метода компиляции для VLIW была разработана, когда он был аспирантом Нью-Йоркского университета . До VLIW понятие предварительного планирования исполнительных блоков и параллелизма на уровне команд в программном обеспечении было прочно укоренено в практике разработки горизонтального микрокода . До Фишера теоретические аспекты того, что позже будет называться VLIW, были разработаны советским ученым-компьютерщиком Михаилом Карцевым. [3] основан на его работе шестидесятых годов над компьютерами военного назначения М-9 и М-10. Его идеи позже были развиты и опубликованы как часть учебника. [4] за два года до выхода основополагающей статьи Фишера, но из-за железного занавеса и того, что работа Карцева была в основном связана с военными вопросами, она оставалась практически неизвестной на Западе.
Инновации Фишера включали разработку компилятора, который мог бы обрабатывать горизонтальный микрокод программ, написанных на обычном языке программирования . Он понял, что для того, чтобы добиться хорошей производительности и нацелиться на машину широкого назначения , необходимо будет найти параллелизм, выходящий за рамки этого, обычно внутри базового блока . Он также разработал методы регионального планирования для выявления параллелизма за пределами базовых блоков. Планирование трассировки является таким методом и включает в себя сначала планирование наиболее вероятного пути базовых блоков, вставку компенсирующего кода для обработки спекулятивных движений, планирование второй наиболее вероятной трассы и так далее, пока расписание не будет завершено.
Вторым нововведением Фишера было представление о том, что целевая архитектура ЦП должна быть спроектирована так, чтобы быть разумной целью для компилятора; что компилятор и архитектура процессора VLIW должны быть разработаны совместно. Частично это было вызвано трудностями, которые Фишер наблюдал в Йельском университете при компиляции для таких архитектур, как FPS164 систем с плавающей запятой , которая имела архитектуру вычислений со сложным набором команд (CISC), которая отделяла инициацию инструкций от инструкций, сохраняющих результат, что требовало очень сложных алгоритмов планирования. . Фишер разработал набор принципов, характеризующих правильную конструкцию VLIW, таких как самоосвобождаемые конвейеры, широкие многопортовые файлы регистров и архитектуры памяти . Эти принципы облегчили компиляторам создание быстрого кода.
Первый компилятор VLIW был описан в докторской диссертации. диссертация Джона Эллиса под руководством Фишера. Составителя назвали Бульдог, в честь талисмана Йельского университета. [5]
Фишер покинул Йельский университет в 1984 году, чтобы вместе с соучредителями Джоном О'Доннеллом и Джоном Руттенбергом основать стартап-компанию Multiflow . Компания Multiflow выпустила серию мини-суперкомпьютеров VLIW TRACE , поставив свои первые машины в 1987 году. VLIW компании Multiflow мог выполнять 28 операций параллельно на каждую команду. Система TRACE была реализована в сочетании среднемасштабной интеграции (MSI), крупномасштабной интеграции (LSI) и очень крупномасштабной интеграции (VLSI) , упакованной в шкафы. Эта технология устарела, поскольку она стала более рентабельной для объединить все компоненты процессора (кроме памяти) на одном чипе.
Multiflow было слишком рано, чтобы поймать следующую волну, когда архитектуры микросхем начали позволять использовать многопроцессорные процессоры. [ нужны разъяснения ] Крупнейшие полупроводниковые компании осознали ценность технологии Multiflow в этом контексте, поэтому впоследствии лицензии на компилятор и архитектуру были переданы большинству из этих фирм.
Мотивация
[ редактировать ]Процессор, который выполняет каждую инструкцию одну за другой (т. е. неконвейерная скалярная архитектура), может использовать ресурсы процессора неэффективно, что может привести к снижению производительности. Производительность можно повысить за счет одновременного выполнения различных подэтапов последовательных инструкций (так называемая конвейерная обработка ) или даже за счет одновременного выполнения нескольких инструкций, как в суперскалярных архитектурах. Дальнейшего улучшения можно достичь, выполняя инструкции в порядке, отличном от того, в котором они встречаются в программе, что называется выполнением вне порядка . [1]
Все эти три метода повышают сложность аппаратного обеспечения. Прежде чем выполнять какие-либо операции параллельно, процессор должен убедиться, что инструкции не имеют взаимозависимостей . Например, если результат первой инструкции используется в качестве входных данных второй инструкции, то они не могут выполняться одновременно, а вторая инструкция не может выполняться раньше первой. Современные процессоры с нарушением порядка увеличили аппаратные ресурсы, которые планируют инструкции и определяют взаимозависимости.
Напротив, VLIW выполняет операции параллельно на основе фиксированного расписания, определяемого при компиляции программ . Поскольку определение порядка выполнения операций (включая то, какие операции могут выполняться одновременно) осуществляется компилятором, процессору не требуется аппаратное обеспечение планирования, которое требуется для трех описанных выше методов. Таким образом, процессоры VLIW предлагают больше вычислений при меньшей аппаратной сложности (но большей сложности компилятора), чем большинство суперскалярных процессоров. [1] Это также дополняет идею о том, что как можно больше вычислений должно быть выполнено до выполнения программы, во время компиляции.
Дизайн
[ редактировать ]В суперскалярных конструкциях количество исполнительных блоков невидимо для набора команд. Каждая инструкция кодирует только одну операцию. Для большинства суперскалярных схем ширина инструкции составляет 32 бита или меньше.
Напротив, одна инструкция VLIW кодирует несколько операций, по крайней мере, одну операцию для каждого исполнительного блока устройства. Например, если устройство VLIW имеет пять исполнительных блоков, то инструкция VLIW для устройства имеет пять полей операций, каждое из которых определяет, какую операцию следует выполнить над соответствующим исполнительным блоком. Чтобы разместить эти поля операций, инструкции VLIW обычно имеют ширину не менее 64 бит, а на некоторых архитектурах гораздо шире.
Например, ниже приведена инструкция для однокристального компьютера с супергарвардской архитектурой (SHARC). За один цикл он выполняет умножение чисел с плавающей запятой, сложение чисел с плавающей запятой и две загрузки автоинкремента. Все это умещается в одной 48-битной инструкции:
f12 = f0 * f4, f8 = f8 + f12, f0 = dm(i0, m3), f4 = pm(i8, m9);
С самых первых дней компьютерной архитектуры, [6] в некоторые процессоры добавлено несколько арифметико-логических блоков (АЛУ) для параллельной работы. Суперскалярные ЦП используют аппаратное обеспечение, чтобы решить, какие операции могут выполняться параллельно во время выполнения, в то время как ЦП VLIW используют программное обеспечение (компилятор), чтобы заранее решить, какие операции могут выполняться параллельно. Поскольку сложность планирования инструкций переносится в компилятор, сложность аппаратного обеспечения может быть существенно снижена. [ нужны разъяснения ]
Аналогичная проблема возникает, когда результат распараллеливаемой инструкции используется в качестве входных данных для ветви. Большинство современных процессоров угадывают, какая ветвь будет выбрана, еще до завершения расчета, чтобы они могли загрузить инструкции для ветви или (в некоторых архитектурах) даже начать их спекулятивное вычисление . Если ЦП угадает неправильно, все эти инструкции и их контекст необходимо сбросить и загрузить правильные, что требует времени.
Это привело к усложнению логики диспетчеризации команд, которая пытается правильно угадать , а простота исходных вычислений с сокращенным набором команд (RISC) была подорвана. В VLIW отсутствует эта логика, а значит, отсутствует энергопотребление, возможные конструктивные дефекты и другие негативные аспекты.
В VLIW компилятор использует эвристику или информацию профиля, чтобы угадать направление ветвления. Это позволяет ему перемещать и заранее планировать операции до того, как будет выбрана ветвь, отдавая предпочтение наиболее вероятному ожидаемому пути через ветвь. Если ветвление идет неожиданным путем, компилятор уже сгенерировал компенсирующий код, чтобы отбросить спекулятивные результаты и сохранить семантику программы.
векторных процессоров Ядра (предназначенные для больших одномерных массивов данных, называемых векторами ) можно комбинировать с архитектурой VLIW, например, в микропроцессоре Fujitsu FR-V , что еще больше увеличивает пропускную способность и скорость . [ нужна ссылка ]
Реализации
[ редактировать ]Cydrome была компанией, производившей числовые процессоры VLIW с использованием интегральных схем с эмиттерной логикой (ECL) в тот же период (конец 1980-х годов). Эта компания, как и Multiflow, обанкротилась через несколько лет.
Одним из лицензиатов технологии Multiflow является компания Hewlett-Packard , к которой Джош Фишер присоединился после закрытия Multiflow. Боб Рау , основатель Cydrome, также присоединился к HP после краха Cydrome. Эти двое руководили исследованиями компьютерной архитектуры в Hewlett-Packard в 1990-е годы.
Наряду с вышеупомянутыми системами в то же время (1989–1990 гг.) Intel реализовала VLIW в Intel i860 , своем первом 64-битном микропроцессоре и первом процессоре, реализовавшем VLIW на одном кристалле. [7] Этот процессор мог работать как в простом режиме RISC, так и в режиме VLIW:
В начале 1990-х годов Intel представила микропроцессор i860 RISC. Этот простой чип имел два режима работы: скалярный режим и режим VLIW. В режиме VLIW процессор всегда извлекал две инструкции и предполагал, что одна — целочисленная инструкция, а другая — инструкция с плавающей запятой. [7]
Режим 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), DSP однокристального компьютера Super Harvard Architecture (SHARC) от Analog Devices, семейство ST200 от STMicroelectronics на основе архитектуры Lx (разработанное в HP Джоша Фишера). лаборатория Паоло Фарабоски), FR-V от Fujitsu , BSP15/16 [8] от Pixelworks , CEVA-X DSP от CEVA, Jazz DSP от Improv Systems, HiveFlex [9] серия от Silicon Hive и семейство MPPA Manycore от Kalray. Texas Instruments TMS320 Линия DSP претерпела изменения и в семействе C6000 стала больше походить на VLIW, в отличие от более раннего семейства C5000 . Эти современные процессоры VLIW в основном успешны в качестве встроенных медиапроцессоров для бытовых электронных устройств.
Функции VLIW также были добавлены к настраиваемым процессорным ядрам для систем на кристалле (SoC). Например, процессор Xtensa LX2 компании Tensilica включает технологию под названием Flexible Long 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). [10]
За пределами рынков встроенной обработки процессор Intel Itanium IA-64 с явными параллельными командами (EPIC) и Эльбрус 2000 являются единственными примерами широко используемых архитектур ЦП VLIW. Однако архитектуру EPIC иногда отличают от чистой архитектуры VLIW, поскольку EPIC выступает за полную предикацию инструкций, ротацию файлов регистров и очень длинное командное слово, которое может кодировать непараллельные группы команд. VLIW также получили значительное проникновение среди потребителей на рынке графических процессоров (GPU), хотя с тех пор и Nvidia , и AMD перешли на RISC-архитектуру для повышения производительности при неграфических рабочих нагрузках.
(GPU) от ATI Technologies (ATI) и Advanced Micro Devices (AMD) Микроархитектура TeraScale для графических процессоров представляет собой микроархитектуру VLIW.
В декабре 2015 года в Россию была осуществлена первая партия ПК на базе процессора VLIW « Эльбрус-4с» . [11]
Neo от REX Computing — это процессор, состоящий из 2D-сетки ядер VLIW, ориентированный на энергоэффективность. [12]
Эльбрус 2000 ( русский : Эльбрус 2000 ) и его преемники — это российские 512-битные микропроцессоры VLIW, разработанные Московским центром SPARC-технологий (МЦСТ) и изготовленные TSMC .
Обратная совместимость
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( июнь 2016 г. ) |
Когда кремниевая технология позволяла создавать более широкие реализации (с большим количеством исполнительных блоков), скомпилированные программы для более раннего поколения не могли работать на более широких реализациях, поскольку кодирование двоичных инструкций зависело от количества исполнительных блоков машины.
Компания Transmeta решила эту проблему, включив уровень компилятора программного обеспечения из двоичного кода в двоичный (так называемый морфинг кода ) в свою Crusoe реализацию архитектуры x86 . Этот механизм рекламировался для перекомпиляции, оптимизации и трансляции кодов операций x86 во время выполнения во внутренний машинный код ЦП. Таким образом, чип Transmeta внутри является процессором VLIW, эффективно отделенным от набора инструкций CISC x86 , который он выполняет.
Архитектура Intel Itanium (среди прочих) решила проблему обратной совместимости с помощью более общего механизма. В каждой инструкции с несколькими кодами операций выделяется битовое поле для обозначения зависимости от предыдущей инструкции VLIW в потоке программных команд. Эти биты устанавливаются во время компиляции , что освобождает оборудование от вычисления этой информации о зависимостях. Наличие этой информации о зависимостях, закодированной в потоке команд, позволяет более широким реализациям выполнять несколько независимых инструкций VLIW параллельно за цикл, тогда как более узкие реализации будут выдавать меньшее количество инструкций VLIW за цикл.
Еще одним очевидным недостатком проектов VLIW является раздувание кода , которое происходит, когда один или несколько исполнительных блоков не выполняют никакой полезной работы и, следовательно, должны выполнять инструкции No Operation NOP . Это происходит, когда в коде есть зависимости и необходимо дать возможность конвейерам инструкций опорожниться, прежде чем можно будет продолжить дальнейшие операции.
Поскольку количество транзисторов на кристалле выросло, предполагаемые недостатки VLIW уменьшились. Популярность архитектур VLIW растет, особенно на рынке встраиваемых систем , где можно настроить процессор для приложения в системе-на-кристалле .
См. также
[ редактировать ]- Явно параллельные вычисления команд . Архитектура набора команд.
- Эльбрус (компьютер) – Линейка советских и российских компьютерных систем.
- Itanium - семейство 64-битных микропроцессоров Intel.
- Movidius - американская компания по разработке микросхем компьютерных процессоров.
- Одна инструкция, несколько данных – тип параллельной обработки
- Одна инструкция, несколько потоков - модель выполнения, используемая в параллельных вычислениях.
- Архитектура, управляемая транспортом - тип конструкции компьютерного процессора.
Ссылки
[ редактировать ]- ^ Jump up to: а б с «Архитектура очень длинных командных слов (VLIW)» . Гики для гиков . 01.12.2020 . Проверено 14 октября 2022 г.
- ^ Фишер, Джозеф А. (1983). «Архитектуры с очень длинными инструкциями и ELI-512». Материалы 10-го ежегодного международного симпозиума по архитектуре компьютеров . Международный симпозиум по компьютерной архитектуре. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники (ACM). стр. 140–150. дои : 10.1145/800046.801649 . ISBN 0-89791-101-6 .
- ^ Kartsev, Mikhail (1970). "Вопросы построения многопроцессорных вычислительных систем" [Building the multiprocessor computer systems]. Radioelectronic Matters, Electronic Computing Technics (in Russian) (5–6): 3–19.
- ^ Kartsev, Mikhail; Brik, Vladimir (1981). Вычислительные системы и синхронная арифметика [ Compuring systems and synchronous arythmetics ] (in Russian). Moscow: Radio i Svyaz.
- ^ «Премия докторской диссертации ACM 1985 года» . Ассоциация вычислительной техники (ACM). Архивировано из оригинала 2 апреля 2008 г. Проверено 15 октября 2007 г.
За диссертацию Bulldog: Компилятор для архитектуры VLIW .
- ^ «Справочное руководство по компьютерным системам Control Data 6400/6500/6600» . 21 февраля 1969 г. Архивировано из оригинала 2 января 2014 г. Проверено 7 ноября 2013 г.
- ^ Jump up to: а б «Введение в архитектуру компьютера с очень длинными командами (VLIW)» (PDF) . Филипс Полупроводники. Архивировано из оригинала (PDF) 29 сентября 2011 г.
- ^ «Пиксельворкс | БСП15/16» . Архивировано из оригинала 24 декабря 1996 г. Проверено 28 июля 2016 г.
- ^ «Продукты из кремниевого улья» . Силиконовый улей . Силикон Улей Б.В. Архивировано из оригинала 28 января 2012 г. Проверено 28 января 2012 г.
- ^ «EEMBC публикует результаты тестов для микроконтроллеров Carmel — DSP Core и TriCore — TC11IB компании Infineon Technologies» . eembc.org . Проверено 28 июля 2016 г.
- ^ «ТАСС» . ТАСС.ру. Проверено 28 июля 2016 г.
- ^ «Крошечный чип, который может разрушить экзафлопсные вычисления» . Следующая платформа . Stackhouse Publishing Inc., 12 марта 2015 г. Проверено 26 апреля 2021 г.
Внешние ссылки
[ редактировать ]- Документ, в котором были представлены VLIW
- Книга об истории Multiflow Computer, новаторской компании VLIW.
- Ретроспектива ISCA «Лучшие статьи» о бумаге, на которой были представлены VLIW. Архивировано 10 марта 2012 г. в Wayback Machine.
- VLIW и встроенная обработка
- FR500 VLIW-архитектура Высокопроизводительный встроенный микропроцессор
- Историческая справка об архитектуре набора команд EPIC
- DIS: архитектура для быстрого выполнения LISP. Аналогичная архитектура VLIW с распараллеливающим компилятором, ориентированным на LISP.