Jump to content

Явное выполнение графа данных

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

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

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

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

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

В 1960-х годах память была относительно дорогой, и разработчики процессоров создавали наборы инструкций, которые плотно кодировали инструкции и данные, чтобы лучше использовать этот ресурс. Например, add A to B to produce C обучение будет предоставляться во многих различных формах, которые соберут А и Б из разных мест; основная память, индексы или регистры. Предоставление этих различных инструкций позволило программисту выбрать инструкцию, которая занимала как можно меньше места в памяти, сокращая потребности программы и оставляя больше места для данных. Например, MOS 6502 имеет восемь инструкций ( кодов операций ) для выполнения сложения, отличающихся только тем, где они собирают свои операнды. [2]

На самом деле для того, чтобы эти инструкции работали, требовалась схема в ЦП, что было существенным ограничением в ранних разработках и требовало от дизайнеров выбирать только те инструкции, которые действительно были необходимы. В 1964 году IBM представила серию System/360 , в которой использовался микрокод , позволяющий единой архитектуре расширенного набора команд (ISA) работать на самых разных машинах путем реализации большего или меньшего количества инструкций в аппаратном обеспечении в зависимости от необходимости. [3] Это позволило расширить возможности ISA 360, и это стало образцом компьютерного дизайна 1960-х и 70-х годов, так называемого ортогонального дизайна. Этот стиль доступа к памяти с большим разнообразием режимов привел к созданию наборов инструкций с сотнями различных инструкций, стиля, известного сегодня как CISC (вычисление со сложным набором команд).

В 1975 году IBM начала проект по разработке телефонного коммутатора , производительность которого была примерно в три раза выше, чем у их самых быстрых современных компьютеров. Чтобы достичь этой цели, команда разработчиков начала изучать огромное количество данных о производительности, собранных IBM за последнее десятилетие. Это исследование показало, что сложная ISA на самом деле представляет собой серьезную проблему; поскольку только самые базовые инструкции гарантированно были реализованы на аппаратном уровне, компиляторы игнорировали более сложные, которые выполнялись аппаратно только на определенных машинах. В результате подавляющее большинство времени программы тратилось всего на пять инструкций. Более того, даже когда программа вызывала одну из этих пяти инструкций, микрокоду требовалось конечное время для ее декодирования, даже если это был просто вызов внутреннего оборудования. На более быстрых машинах эти накладные расходы были значительными. [4]

Их работа, известная в то время как IBM 801 , в конечном итоге привела к концепции RISC (вычисления с сокращенным набором команд). Микрокод был удален, и в ЦП помещались только самые базовые версии каждой инструкции. Любой более сложный код оставлялся на усмотрение компилятора. Удаление такого большого количества схем, примерно Например, 1/3 транзисторов позволяли в Motorola 68000 процессору включать больше регистров, что напрямую влияло на производительность. К середине 1980-х годов более развитые версии этих базовых концепций обеспечивали производительность в 10 раз выше, чем самые быстрые конструкции CISC, несмотря на использование менее развитых технологий. [4]

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

В 1990-х годах процесс проектирования и производства чипов достиг такой степени, что стало возможным создать обычный процессор со всеми встроенными в него потенциальными функциями. Модули, которые раньше находились на отдельных микросхемах, например, блоки с плавающей запятой и блоки управления памятью , теперь можно было объединять на одном кристалле, создавая конструкции «все в одном». Это позволяет одновременно выполнять различные типы инструкций, улучшая общую производительность системы. В конце 1990-х годов «одна инструкция, несколько данных были также добавлены блоки » (SIMD), а совсем недавно — ускорители искусственного интеллекта .

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

Степень параллелизма, которую можно извлечь в суперскалярных проектах, ограничена количеством инструкций, которые планировщик может проверить на наличие взаимозависимостей. Исследование большего количества инструкций может повысить вероятность нахождения инструкции, которая может выполняться параллельно, но только за счет увеличения сложности самого планировщика. Несмотря на огромные усилия, к концу 2000-х годов разработка процессоров с использованием классических RISC или CISC ISA остановилась. Проекты Intel Haswell 2013 года имеют в общей сложности восемь диспетчерских блоков. [5] и добавление дополнительных результатов приводит к значительному усложнению конструкции и увеличению требований к мощности. [6]

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

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

Новая ИСА? [ редактировать ]

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

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

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

КРАЙ [ править ]

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

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

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

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

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

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

процессоры [ править ]

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

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

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

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

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

ТРИПС [ править ]

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

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

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

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

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

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

CMU компании CASH — это компилятор, создающий промежуточный код под названием «Pegasus». [8] CASH и TRIPS очень похожи по концепции, но CASH не предназначен для создания результатов для конкретной архитектуры и, следовательно, не имеет жестких ограничений на структуру блоков.

WaveScalar [ править ]

по Вашингтонского университета существу похожа Архитектура WaveScalar на EDGE, но не размещает инструкции статически внутри своих «волн». Вместо этого специальные инструкции ( фи и ро ) отмечают границы волн и позволяют планировать. [9]

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

Цитаты [ править ]

  1. ^ Техасский университет в Остине, «TRIPS: один триллион вычислений в секунду к 2012 году»
  2. ^ Пикенс, Джон (17 октября 2020 г.). «Операционные коды NMOS 6502» .
  3. ^ Ширрифф, Кен. «Моделирование мэйнфрейма IBM 360/50 на основе его микрокода» .
  4. ^ Jump up to: Перейти обратно: а б Кок, Джон; Маркштейн, Виктория (январь 1990 г.). «Эволюция технологии RISC в IBM» (PDF) . Журнал исследований и разработок IBM . 34 (1): 4–11. дои : 10.1147/rd.341.0004 .
  5. ^ Шимпи, Ананд Лал (5 октября 2012 г.). «Анализ архитектуры Intel Haswell: создание нового ПК и нового Intel» . АнандТех .
  6. ^ Ценг, Фрэнсис; Патт, Йель (июнь 2008 г.). «Достижение неупорядоченной производительности с почти нормальной сложностью». Новости компьютерной архитектуры ACM SIGARCH . 36 (3): 3–12. дои : 10.1145/1394608.1382169 .
  7. ^ В. Хаванки, С. Банерджиа и Т. Конте. «Тререгионное планирование для процессоров широкого спектра», в материалах Четвертого международного симпозиума по высокопроизводительным компьютерным архитектурам , январь 1998 г., стр. 266–276
  8. ^ "Проект Феникс"
  9. ^ "WaveScalar ISA"

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b0c908ba037a50d1441f2dfa6f3ada16__1699110540
URL1:https://arc.ask3.ru/arc/aa/b0/16/b0c908ba037a50d1441f2dfa6f3ada16.html
Заголовок, (Title) документа по адресу, URL1:
Explicit data graph execution - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)