Архитектура графического процессора Kepler GK110
SMX разбивает каждый процесс на 32 параллельных процесса, называемых «скачка`ми» (warp). Каждый SMX процессор имеет 4 планировщика (warp scheduler) и 8 регистров команд, которые позволяют определять и исполнять конкурентно одновременно 4 «скачка». В архитектуре Kepler планировщик в каждом цикле работы выбирает 4 «скачка» и позволяет выполнить 2 независимых инструкции на каждом из «скачков… Читать ещё >
Архитектура графического процессора Kepler GK110 (реферат, курсовая, диплом, контрольная)
Графический процессор Kepler GK110 был создан специально для видеоускорителей Tesla, его основной задачей является максимальное увеличение возможностей параллельных вычислений. GK110 не только превосходит по этому параметру предыдущую архитектуру GPU Fermi — помимо этого значительно снижены потребление электричества и тепловыделение.
Полное исполнение Kepler GK110 включает в себя 15 потоковых мультипроцессоров (SMX — streaming multiprocessor) и 6 64-битных контроллеров памяти. К примеру, видеоускоритель Tesla K20X включает в себя 14 устройств SMX, а Tesla K20 — 13.
Основные особенности архитектуры, которые будут рассматриваться ниже, включают в себя:
- — архитектуру SMX процессоров;
- — улучшенную подсистему памяти, которая предоставляет новые возможности кэширования, большую пропускную способность, и новую полностью переделанную и более быструю реализацию ввода-ввода с использование динамической памяти с произвольным доступом (DRAM);
- — поддержку на аппаратном уровне новых моделей программирования и их возможностей.
Архитектура SMX процессоров
В графическом процессоре Kepler GK110 каждый SMX процессор включает в себя 192 ядра CUDA одинарной точности, каждое из которых имеет полностью конвейерное арифметико-логическое устройство для работы с целыми числами и числами с плавающей запятой.
Одной из главных задач при создании процессора Kepler GK110 было увеличение мощности вычислений двойной точности, так как арифметика двойной точности является важнейшей во многих высокопроизводительных системах. GPU Kepler GK110 также имеет 32 устройства специального назначения (SFU — special function unit) для быстрых приблизительных вычислений трансцендентных выражений, причем их число возросло в 8 раз в сравнении с предыдущей архитектурой.
SMX процессоры используют генератор тактовой частоты графического процессора, а не шейдерного. Выполнение программ на более высокой тактовой частоте может в целом ускорить выполнение её отдельных частей, так как возможно использовать меньшее число ядер — это одна из основных областей оптимизации параллельного вычисления. Но частотная логика для более быстрых ядер требует больших затрат электроэнергии. Для архитектуры Kepler приоритетной задачей было повышение производительность на ватт электроэнергии. По этой причине было внесено множество изменений, ориентированных на оптимизацию вычислений, в том числе было принято решение использовать множество вычислительных ядер, работающих на более медленном генераторе тактовой частоты, требующем значительно меньших затрат электричества.
SMX разбивает каждый процесс на 32 параллельных процесса, называемых «скачка`ми» (warp). Каждый SMX процессор имеет 4 планировщика (warp scheduler) и 8 регистров команд, которые позволяют определять и исполнять конкурентно одновременно 4 «скачка». В архитектуре Kepler планировщик в каждом цикле работы выбирает 4 «скачка» и позволяет выполнить 2 независимых инструкции на каждом из «скачков». В отличие от предыдущей архитектуры, графический процессор GK110 позволяет исполнять в парах команд, в том числе и операции с плавающей запятой, которые до этого исполнялись отдельно и занимали весь цикл выполнения.
Помимо этого в конструкцию SMX процессоров были внесены изменения, целью которых является оптимизация работы планировщика, которая в себя включает:
- — запись и учет задержек выполняемых программ;
- — механизм анализа «скачков», который позволяет принимать решение о том, какой из «скачков» отрабатывать следующим, с целью повышения общей эффективности вычисления;
- — выбор лучшей связки «скачков». То же самое, что и предыдущий пункт, но на более высоком уровне. То есть, если механизм анализа «скачков» работает «на лету», постоянно анализируя результаты, то механизм ранжирование блоков производит первичный анализ процесса выполнения.
В устаревшей архитектуре Fermi в состав планировщика «скачков» входила сложная аппаратная часть для решения проблемы правильности данных при параллельном вычислении математических функций. Теперь эта задача возложена на механизм записи и учета задержек выполнения команд: этот механизм отслеживает все регистры, которые еще не содержат правильных данных, а также анализируют зависимость между блоками вычислений, сравнивая результаты с таблицей ранжирования, принимается решение о том, какие из «скачков» завершили работу, и какие регистры содержат нужные данные. Таким образом, многоходовой регистр планировщика ведет строгий учет регистров, которые остались не выполнены, а блок проверки зависимостей анализирует использование регистра по его же записям.
Во время разработки архитектуры Kepler стало понятно, что математические вычисления и связанные с ними данные — вещи всегда предсказуемые, таким образом, компилятор всегда может предположить наперед, какие инструкции будут выполняться следующими. В частности, это позволяет планировать какие «скачки» будут выполняться дальше, а, следовательно, какие блоки данных станут корректными для их использования на следующем шаге. Все это помогло избавиться от части сложных аппаратных решений, требующих к тому же большого количества электроэнергии, и заменить их простыми блоками, которые хранят корректные данные для последующих вычислений, и которые совместно с механизмом ранжирования регистров, позволяют планировщику определять последовательность выполнения «скачков».
Количество регистров, которые доступны процессу в GK110 было увеличено почти в четыре раза и составило 255 регистров на процесс. Это в свою очередь позволяет значительно реже обращаться к локальной памяти, что существенно сократило время обработки данных.
Другим улучшением стал механизм перемешивания команд, которые позволяет «скачкам» процесса обмениваться данными. Раньше для обмена данными между «скачками» требовалось отдельно сохранить и разгружать данные, используя общую память. Команды перемешивания позволяют «скачкам» брать данные непосредственно один из другого.
Механизм перемешивания команд позволяет получить значительно прибавку в производительности в сравнении с использованием общей памяти, так как операции сохранения и загрузки данных выполняются за один шаг. Также механизм перемешивания позволяет сократить количество общей памяти, которая требуется блокам процесса, так как происходит обмен данными между «скачками» и общая память вовсе не задействуется.
В параллельном программировании особую роль играют атомарные операции над памятью, которые позволяют процессам корректно выполнять операции чтения, изменения и записи над структурами разделяемых данных.
Атомарные операции — операции, выполняющиеся как единое целое либо не выполняющиеся вовсе. Атомарность операций имеет особое значение в многопроцессорных компьютерах (и многозадачных операционных системах), так как доступ к неразделяемым ресурсам должен быть обязательно атомарным. Атомарная операция открыта влиянию только одного потока.
Операции типа прибавления, поиска минимуммаксимума и сравнения являются атомарными в том смысле, что операции чтения, изменения и записи данных происходит без прерывания другими процессами. Атомарные операции над памятью широко используются при параллельной сортировке, вычитании и создании структур данных без блокировки, которую могут вызвать другие процессы.
В графическом процессоре Kepler GK110 атомарные операции над памятью могут выполнять со скоростью операции глобальной загрузки, то есть без вычислений каких-либо предусловий. Такой подход позволяет использовать атомарные операции над памятью достаточно часто во внутренних циклических операциях ядра, например, при выявлении и решении конфликтов адресования памяти. Процессор Kepler GK110 поддерживает следующие 64-битные атомарные операции:
- — atomicAdd — сложение;
- — atomicCAS — сравнение с обменом;
- — atomicExch — перемешивание;
- — atomicMin — поиск минимума;
- — atomicMax — поиск максимума;
- — atomicAnd — логическое и;
- — atomicOr — логическое или;
- — atomicXor — логическое или-не;
Другие атомарные операции, которые не поддерживаются в явном виде, например, атомарные операции над числами с плавающей запятой, могут быть эмулированы с помощью операций сравнения с обменом (compare-and-swap или CAS). Сравнение с обменом — атомарная инструкция, сравнивающая значение в памяти с одним из аргументов, и в случае успеха записывающая второй аргумент в память.
В графическом процессоре выделенные устройства обработки текстур являются ценным ресурсом в программах, в которых требуется обработка и фильтрация графических данных. Пропускная способность при обработке текстур значительно увеличилась в сравнении с прошлой архитектурой — Fermi, теперь каждый SMX процессор содержит 16 устройства фильтрации текстур, что в 4 раза больше в сравнении с графическими процессорами Fermi.
Помимо этого, в Kepler изменился механизм управление текстурами. Раньше для того, чтобы ссылаться на текстуру, требовалось выделять для нее отдельный «слот» в фиксированной таблице привязок. Эта таблица значительно сокращала количество уникальных текстур, которые можно использовать во время работы, ограничивая их 128 число одновременно используемыми текстурами.
В Kepler для текстур не требуется выделять «слот», так как информация о них хранится в виде объекта в памяти, и аппаратная часть может обращаться к этим объектам по мере необходимости. Это решение снимает все ограничения на количество уникальных текстур, на которые может ссылаться компьютерная программа.