- •Архитектура аппаратных средств.
- •1.2. Классификация элементов эвм.
- •1.3. Базовые логические элементы "и", "или", "не"
- •1.3.1. Элемент и
- •1.3.2. Элемент или
- •1.3.3. Элемент не
- •Исключительное или
- •Элемент и-не
- •Элемент или-не
- •Стрелка Пирса и штрих Шеффера. Стрелка Пирса
- •Штрих Шеффера
- •Архитектура фон Неймана.
- •Гарвардская архитектура.
- •Классическая гарвардская архитектура
- •Классифиация архитектур аппаратных средств.
- •Архитектура процессоров - cisc.
- •Архитектура процессоров - risc.
- •Сферы применения многоядерных процессоров
- •Основные классы многоядерных процессоров (many-core, multi-core, mimd, simd, smp, mmp)
- •Ячеистые" процессоры компании Tilera Процессоры Tile-64/64Pro
- •Семейство процессоров Tile-Gx
- •Процессор csx700
- •Краткие итоги
- •Архитектура процессоров seAforth
- •Структура графического процессора g80
- •Модель программирования cuda
- •Основные идеи архитектуры atac
- •Ключевые элементы технологии атас
- •Структура межъядерных связей
- •Передача данных и согласование кэш-памяти
- •Общая характеристика мультиядерных arm-процессоров
- •Серия Cortex-a mpCore
- •Состав, устройство и принцип действия основной памяти
- •Основная память
- •Статические элементы памяти
- •Программируемые зу
- •Сверхоперативная память
- •Ассоциативная память
- •Общие принципы функционирования кэш-памяти
- •Механизм сохранения информации в кэш-памяти
- •Типы кэш-памяти
- •Кэширование с обратной записью.
- •Организация внутренней кэш-памяти микропроцессора
- •Управление работой кэш-памяти на уровне страниц
- •Обеспечение согласованности кэш-памяти микропроцессоров в мультипроцессорных системах
- •Базовая система ввода-вывода (bios). Понятие cmos ram
- •Как bios управляет работой оборудования
- •Звуковые сигналы bios
- •Производитель ami
- •Производитель award
- •Системная, материнская плата
- •Цпу (Центральное процессорное устройство).
- •Архитектура графической подсистемы пк
- •Дисплеи
- •Дисплеи на элт
- •Жидкокристаллические дисплеи
- •Другие типы дисплеев
- •Принцип действия
- •Проекторы
- •Звуковая карта
- •Звуковые карты на шине pci.
- •Встроенный в системную плату ас’97_кодек.
- •Звуковые адаптеры и игры
- •Основные параметры и функции звуковых карт.
- •Блок питания.
- •Принтеры
- •Матричные принтеры
- •Струйные принтеры
- •Лазерные принтеры
Структура графического процессора g80
В состав процессора G80 входят 128 вычислительных ядер (далее — нитевые ядра) общей пиковой производительностью 518 ГФлопс на тактовой частоте 1.35 ГГц, поддерживающих 12288 аппаратно управляемых потоков/нитей (рис. 5.1). Нитевые ядра объединены в 8 блоков по 16 в каждом, управляемых менеджером потоков и называемых потоковыми мультипроцессорами.
Ядра являются скалярными, что позволяет легко использовать их в вычислениях общего назначения, ведь в этом плане они ничем не отличаются от центрального процессора. В G80 вычислительные ядра объединены в группы (так называемые потоковые мультипроцессоры) по 8 ядер в каждой группе, каждая группа имеет кэш-память первого и второго уровней (причем кэш второго уровня доступен для обращения всем остальным группам) (рис. 5.2). Все восемь блоков имеют доступ к любому из шести L2-кэшей и к любому из шести массивов регистров общего назначения (РОН). Таким образом, данные, обработанные на одном процессоре, могут быть использованы другим процессором.
Рис. 5.1. Общая схема архитектуры G80
Рис. 5.2. Структура мультипроцессора
Потоковый мультипроцессор содержит 8 процессоров нитей пиковой производительностью 32 ГФлопс на частоте 1,35 ГГц с поддержкой операций с числами в формате с плавающей точкой стандарта IEEE 754. Также в него входят:
два блока специальных функций — чтение/запись в память, обработка текстур, выборки, переходы, вызовы процедур, операции синхронизации;
блок разделяемой памяти 16 Кбайт;
блок множественных инструкций.
Нитевые ядра, составляющие потоковый мультипроцессор, поддерживают выполнение инструкций с плавающей точкой стандарта IEEE 754. Потоковому мультипроцессору доступен также регистровый файл размером 32 Кбайта и кэш второго уровня размером также 32Кбайта (только для чтения).
Основные операции, поддерживаемые вычислительными ядрами, следующие:
FADD, FMUL, FMAD, FMIN, FMAX, FSET, F2I, I2F — округление до ближайшего четного, округление через 0, поддержка специальных чисел, сброс денормализованных операндов и результатов до 0;
целочисленные инструкции:IADD, IMUL24, IMAD24, IMIN, IMAX, ISET, I2I SHR, SHL, AND, OR, XOR.
Выполнение инструкций конвейеризировано.
В состав нитевых ядер также входит блок специальных функций, который осуществляет поддержку выполнения трансцендентных функций: RCP, RSQRT, EXP2, LOG2, SIN, COS.
Блок специальных функций позволяет выполнять аппроксимацию функций при помощи квадратичной аппроксимации. Точность вычислений — порядка 22,5-24,0 бит.
Два блока специальных инструкций на потоковый процессор производят 1/4 потока инструкций.
Результаты вычислений отдельной группы потоковых процессоров записываются в кэш второго уровня и становятся доступны всем остальным группам. Таким образом, данные циркулируют внутри процессора и покидают его, только когда все вычисления завершены. Это устраняет задержки, возникающие при обращении к видеопамяти.
Блок множественных инструкций поддерживает 768 нитей, выполняющихся параллельно и объединенных в 24 пучка/группы/верпа (warp) нитей (по 32 нити в каждом). Над каждой нитью в пучке в один момент времени выполняется одна операция — SIMD. При этом каждый пучок нитей независим от других (над разными пучками могут выполняться различные операции — MIMD). Блок осуществляет аппаратный контроль за выполнением нитей. Конкурирующие нити могут разделять данные. Наилучшая производительность достигается, когда все нити в пучке выполняются вместе, без различий в ходе исполнения кода (рис. 5.3).
При решении прикладных задач на графическом процессоре разработчик должен предварительно разбить задачу на разделы (grids ), причем один раздел представляет собой один шаг из последовательности шагов решения задачи. В разделе задачи выделяются блоки, результаты выполнения которых могут быть получены параллельно — раздел распараллеливается. В блоках выделяются элементы/нити, которые выполняются параллельно в режиме взаимодействия, — эти элементы будут соответствовать нитям, выполняющимся на нитевых ядрах (рис. 5.4).
Техника выполнения задач на графическом процессоре носит название массив взаимодействующих/конкурирующих нитей (CTA — Cooperative Threads Array). Программист определяет параметры CTA — количество нитей (от 1 до 512), размерность массива нитей (1-3), количество нитей в каждом измерении массива. Нити в CTA выполняют одну программу, каждая нить имеет свой идентификационный номер, нити разделяют данные и синхронизованы между собой. Программа использует номер нити для выбора активной нити и адресации разделяемых данных.
Рис. 5.3. Объединение нитей выполнения в пучки и логика обработки пучков нитей
Рис. 5.4. Принцип параллелизации задачи при ее решении на GPU
Нити в СТА выполняются совместно. Потоковый мультипроцессор получает идентификатор нити и контролирует ее выполнение. СТА-нити разделяют данные и результаты, как в глобальной памяти и разделяемом блоке памяти, так и при выполнении инструкций синхронизации (рис. 5.5). Хранение данных в разделяемой памяти позволяет увеличить скорость доступа процессора к данным и минимизировать количество обращений в глобальную память. Скорость доступа нитей СТА в глобальную память составляет порядка 76 Гбайт/с по интерфейсу GDDR DRAM.
Рис. 5.5. Принцип параллелизации задачи при ее решении на GPU
Можно выделить следующую иерархию памяти: локальная, разделяемая и глобальная.
Локальная память (используется нитью) — распределение переменных, использование регистров. Разделяемая память применяется массивом нитей СТА для обмена данными между нитями. Глобальная память используется приложением для обмена данных между разделами задачи.
