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

TRIPS - это микропроцессорная архитектура, разработанная командой Техасского университета в Остине совместно с IBM , Intel и Sun Microsystems . TRIPS использует архитектуру набора инструкций, которая легко разбивается на большие группы инструкций (графиков), которые могут выполняться на независимых обрабатывающих элементах. Конструкция собирает связанные данные в графики, пытаясь избежать дорогостоящих операций чтения и записи данных и сохраняя данные в высокоскоростной памяти рядом с обрабатывающими элементами. Прототип процессора TRIPS содержит 16 таких элементов. ТРИПС надеялся достичь 1 TFLOP на одном процессоре, поскольку документы публиковались с 2003 по 2006 год.[1]

Фон [ править ]

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

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

Появление все более быстрых микропроцессоров и дешевой, но более медленной динамической ОЗУ резко изменило это уравнение. В современных машинах выборка значения из основной памяти может занять тысячи циклов. Одним из ключевых достижений концепции RISC было включение большего количества регистров процессора.чем более ранние образцы, обычно несколько десятков, а не два или три. Инструкции, которые раньше предоставлялись в ячейках памяти, были удалены, заменены на те, которые работали только с регистрами. Загрузка этих данных в регистр была явной, необходимо было выполнить отдельное действие загрузки, а результаты явно сохранить обратно. Можно улучшить производительность, исключив как можно больше этих инструкций памяти. Этот метод быстро достиг своих пределов, и с 1990-х годов современные процессоры увеличивают объем кеш-памяти ЦП для увеличения локального хранилища, хотя кэш работает медленнее, чем регистры.

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

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

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

EDGE [ править ]

TRIPS - это процессор, основанный на концепции явного выполнения графа данных (EDGE). EDGE пытается обойти определенные узкие места в производительности, которые стали доминировать в современных системах. [2]

EDGE основан на том, что процессор способен лучше понимать отправляемый ему поток инструкций, не рассматривая его как линейный поток отдельных инструкций, а скорее как блоки инструкций, относящиеся к одной задаче с использованием изолированных данных. EDGE пытается запустить все эти инструкции как блок, распределяя их внутри вместе с любыми данными, которые им необходимо обработать. [3] Компиляторы исследуют код и находят блоки кода, которые обмениваются информацией определенным образом. Затем они собираются в скомпилированные «гиперблоки» и загружаются в ЦП. Поскольку компилятор гарантирует, что эти блоки имеют определенные взаимозависимости между собой, процессор может изолировать код в одном функциональном блоке со своей собственной локальной памятью.

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

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

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

ПОЕЗДКИ [ править ]

Техасский университет в Остине реализовал концепцию EDGE - процессор TRIPS , надежную интеллектуально адаптивную систему обработки данных Tera-op . ЦП TRIPS создается путем повторения одной базовой функциональной единицы столько раз, сколько необходимо. Использование в дизайне TRIPS гиперблоков, которые загружаются массово, позволяет добиться значительного выигрыша в спекулятивном исполнении.. В то время как в традиционном дизайне может быть несколько сотен инструкций для изучения на предмет возможного планирования в функциональных блоках, в дизайне TRIPS есть тысячи, сотни инструкций на гиперблок и сотни проверяемых гиперблоков. Это приводит к значительному улучшению использования функциональных единиц; масштабируя свою производительность до типичного суперскалярного дизайна с четырьмя задачами, TRIPS может обрабатывать примерно в три раза больше инструкций за цикл.

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

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

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

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

Комбинация этих двух эффектов изменения конструкции значительно улучшает производительность системы. Цель состоит в том, чтобы к 2012 году создать однопроцессорную систему с производительностью 1 терафлопс. Однако по состоянию на 2008 год графические процессоры от ATI и NVIDIA уже превысили барьер в 1 терафлоп (хотя и для специализированных приложений). Что касается традиционных процессоров, современный Mac Pro (2007 г.), использующий 2-ядерный процессор Intel Xeon, может выполнять только около 5 гигафлопов в отдельных приложениях. [4]

В 2003 году команда TRIPS начала реализацию прототипа микросхемы. Каждая микросхема имеет два полных ядра, каждое из которых содержит 16 функциональных блоков, расположенных по четыре ширины и четыре по глубине. В текущей реализации компилятор создает «гиперблоки» по 128 инструкций в каждом и позволяет системе одновременно поддерживать восемь блоков «в полете», всего 1024 инструкции на ядро. Базовая конструкция может включать до 32 взаимосвязанных микросхем, что приближается к 500 ГФЛОПС. [5]

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

  1. ^ TRIPS: один триллион вычислений в секунду к 2012 г.
  2. ^ Учебное пособие по TRIPS на ISCA 2005
  3. ^ Технический обзор TRIPS
  4. ^ Оценка Mac Pro в Geekbench
  5. ^ Система прототипов TRIPS