Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Явное выполнение графа данных или EDGE - это тип архитектуры набора инструкций (ISA), предназначенный для повышения производительности вычислений по сравнению с обычными процессорами, такими как линейка Intel x86 . EDGE объединяет множество отдельных инструкций в большую группу, известную как «гиперблок». Гиперблоки созданы для того, чтобы их можно было легко запускать параллельно.

Параллелизм современных конструкций ЦП обычно начинает выходить на плато примерно на восьми внутренних модулях и от одного до четырех «ядер», конструкции EDGE предназначены для поддержки сотен внутренних модулей и предлагают скорость обработки в сотни раз выше, чем у существующих конструкций. Основная разработка концепции EDGE проводилась под руководством Техасского университета в Остине в рамках программы DARPA Polymorphous Computing Architectures с заявленной целью - к 2012 году создать однокристальный процессор с производительностью 1 TFLOPS, который еще предстоит реализовать. по состоянию на 2018 год. [1]

Традиционный дизайн [ править ]

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

CISC в RISC [ править ]

В 1960-х годах память была относительно дорогой, и разработчики ЦП создавали наборы команд, которые плотно кодировали инструкции и данные, чтобы лучше использовать этот ресурс. Например, add A to B to produce Cинструкция будет предоставлена ​​во многих различных формах, которые будут собирать A и B из разных мест; основная память, индексы или регистры. Предоставление этих различных инструкций позволило программисту выбрать инструкцию, которая занимала наименьшее возможное место в памяти, уменьшая потребности программы и оставляя больше места для данных. Набор инструкций, который пытался обеспечить все возможные режимы доступа для каждой возможной инструкции (например, DEC VAX ), был известен как ортогональный., тогда считался образцом дизайна. Этот стиль доступа к памяти с большим разнообразием режимов привел к созданию наборов инструкций с сотнями различных инструкций, стиль, известный сегодня как CISC (сложные вычисления набора инструкций).

К концу 1970-х годов память стала дешевой, но за счет снижения производительности; Конструкции ЦП теперь работали во много раз быстрее, чем память, с которой они говорили. В этом новом режиме ортогональность стала нежелательной. Каждая из этих версий инструкций занимала место в ЦП, но практически ничего не делала для повышения производительности, потому что они взаимодействовали с медленной памятью, и в то же время экономия памяти теперь не нужна. В этот период процветала философия проектирования RISC (Reduced Instruction Set Computing). Основная цель заключалась в том, чтобы максимально сократить доступ к памяти, используя внутренние высокопроизводительные регистры для большинства инструкций. В качестве побочного эффекта исчезло множество различных режимов для инструкций; может быть только одинADDинструкция вместо многих. Удаление этих инструкций упростило декодер инструкций и высвободило значительное пространство в ЦП, которое использовалось для значительного увеличения количества регистров.

Внутренний параллелизм [ править ]

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

Величина параллелизма, которую можно извлечь в суперскалярных проектах, ограничена количеством инструкций, которые планировщик может проверить на взаимозависимости. Изучение большего количества инструкций может повысить шанс найти инструкцию, которая может выполняться параллельно, но только за счет увеличения сложности самого планировщика. Несмотря на огромные усилия, конструкции ЦП с использованием классических RISC или CISC ISA достигли уровня примерно трех или четырех функциональных единиц [ необходима цитата ] .

Дополнительную производительность можно добиться от систем, изучив инструкции, чтобы найти те, которые работают с различными типами данных, и добавив блоки, предназначенные для этого типа данных; это привело к появлению модулей с плавающей запятой , а в последнее время - модулей с одной командой и несколькими данными (SIMD). Недостатком этого подхода является то, что он делает ЦП менее универсальным; загрузка процессора программой, которая использует почти все инструкции с плавающей запятой, например, приведет к остановке FPU, в то время как другие модули будут бездействовать.

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

Новая ISA? [ редактировать ]

Точно так же, как задержки разговора с памятью при падении цены предполагали радикальное изменение ISA (Instruction Set Architecture) с CISC на RISC, разработчики рассматривают вопрос о том, требуют ли проблемы масштабирования параллелизма и увеличивающихся задержек разговоров с регистрами еще одного переключения в базовом ISA.

Среди способов внедрения нового ISA - архитектуры с очень длинным командным словом (VLIW), типичными для Itanium . VLIW перемещает логику планировщика из ЦП в компилятор, где у него гораздо больше памяти и более длительные сроки для проверки потока инструкций. Эта модель статического размещения и выполнения статической задачи хорошо работает, когда известны все задержки, но при наличии задержек кэша заполнение командных слов оказалось сложной задачей для компилятора. [2]Инструкция, которая может занять пять циклов, если данные находятся в кеше, может занять сотни, если это не так, но компилятор не имеет возможности узнать, будут ли эти данные в кеше во время выполнения - это определяется общей загрузкой системы и другими факторами. которые не имеют ничего общего с компилируемой программой.

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

EDGE [ править ]

Теория [ править ]

Архитектура EDGE - это новый класс ISA, основанный на статическом размещении и динамическом дизайне задач. Системы EDGE компилируют исходный код в форму, состоящую из статически распределенных гиперблоков, содержащих множество отдельных инструкций, сотни или тысячи. Эти гиперблоки затем динамически планируются ЦП. Таким образом, EDGE сочетает в себе преимущества концепции VLIW поиска независимых данных во время компиляции с суперскалярной концепцией RISC выполнения инструкций, когда данные для них становятся доступными.

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

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

Системы EDGE очень похожи на языки потоков данных 1960–1970-х годов, а затем и 1990-х годов. Компьютеры потока данных исполняют программы в соответствии с «правилом запуска потока данных», которое предусматривает, что инструкция может выполняться в любое время после того, как ее операнды становятся доступными. Из-за изоляции данных, как и EDGE, языки потоков данных по своей сути параллельны, и интерес к ним последовал за более общим интересом к массовому параллелизму как решению общих вычислительных проблем. Исследования, основанные на существующей технологии ЦП в то время, продемонстрировали, что машине с потоком данных будет сложно хранить достаточно данных рядом с ЦП для широкого параллелизма, и именно это узкое место могут решить современные технологии производства, разместив сотни ЦП и их память на одном кристалле.

Еще одна причина, по которой системы потока данных так и не стали популярными, заключается в том, что компиляторам той эпохи было трудно работать с распространенными императивными языками, такими как C ++ . Вместо этого в большинстве систем обработки данных использовались специальные языки, такие как Prograph , что ограничивало их коммерческий интерес. Десятилетие исследований компиляторов устранило многие из этих проблем, и ключевое различие между подходами к потоку данных и EDGE заключается в том, что проекты EDGE предназначены для работы с широко используемыми языками.

CPU [ править ]

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

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

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

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

Реализации [ править ]

TRIPS [ править ]

Университет Техаса в Остине разрабатывал ISA EDGE , известный как TRIPS . Чтобы упростить микроархитектуру процессора, предназначенного для его запуска, TRIPS ISA налагает несколько четко определенных ограничений на каждый гиперблок TRIPS, они:

  • иметь не более 128 инструкций,
  • оформить не более 32 грузов и / или магазинов,
  • выпускать не более 32 операций чтения и / или записи регистрового банка,
  • иметь одно решение ветвления, используемое для обозначения конца блока.

Компилятор TRIPS статически объединяет инструкции в гиперблоки, но также статически компилирует эти блоки для работы на определенных ALU. Это означает, что программы TRIPS в некоторой степени зависят от конкретной реализации, для которой они скомпилированы.

В 2003 году они создали образец прототипа TRIPS с шестнадцатью блочными механизмами в сетке 4 на 4, а также мегабайтом локальной кеш-памяти и памяти для передачи. Однокристальная версия TRIPS, созданная IBM в Канаде с использованием 130-нм техпроцесса, содержит два таких «механизма сетки», а также общий кэш-память второго уровня и различные системы поддержки. Четыре таких чипа и гигабайт оперативной памяти размещаются вместе на дочерней плате для экспериментов.

Команда TRIPS поставила конечную цель - создать однокристальную реализацию, способную работать с устойчивой производительностью 1 терафлопс, что примерно в 50 раз превышает производительность высокопроизводительных стандартных процессоров, доступных в 2008 году (двухъядерный Xeon 5160 обеспечивает примерно 17 GFLOPS).

НАЛИЧНЫЕ [ править ]

CMU «s CASH является компилятор , который производит промежуточный код , называемый„Pegasus“. [3] CASH и TRIPS очень похожи по концепции, но CASH не нацелен на создание вывода для конкретной архитектуры и, следовательно, не имеет жестких ограничений на структуру блока.

WaveScalar [ править ]

Университет штата Вашингтон «s WaveScalar архитектуры, по существу , аналогична EDGE, но не статический размещать инструкции в пределах своих„волн“. Вместо этого специальные инструкции ( phi и rho ) отмечают границы волн и позволяют планировать. [4]

Ссылки [ править ]

Примечания [ править ]

  1. ^ Техасский университет в Остине, «ТРИПС: один триллион вычислений в секунду к 2012 году»
  2. ^ В. Havanki, С. Banerjia и Т. Конте. «Планирование Treegion для процессоров с широким выпуском», в Трудах Четвертого Международного симпозиума по высокопроизводительным компьютерным архитектурам , январь 1998 г., стр. 266–276
  3. ^ "Проект Феникс"
  4. ^ "WaveScalar ISA"

Библиография [ править ]

  • Техасский университет в Остине, «Технический обзор ТРИПС»
  • А. Смит и др., "Компиляция для архитектур EDGE" , Международная конференция по созданию и оптимизации кода , 2006 г., март 2006 г.