Графический процессор, как создать его самому, начиная с 15 файлов Verilog

Графический процессор, как создать его самому, начиная с 15 файлов Verilog

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

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

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

Как создать графический процессор с помощью проекта tiny-gpu

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

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

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

tiny-gpu — это минимальная реализация оптимизированного графического процессора: производители ориентируются, с одной стороны, на графический процессор общее назначение (GPGPU), с другой стороны ускорители для машинного обучения, например Google TPU. Авторы проекта tiny-GPU выделяют общие принципы этих архитектур, а не конкретные аппаратные детали. Идея состоит в том, чтобы сосредоточиться на фундаментальных элементах, которые имеют решающее значение для всех современных людей. аппаратные ускорители.

Проект крошечного графического процессора берет читателя за руку, помогая ему открыть для себя такие темы, как архитектура графического процессора, распараллеливание (как модель SIMD, Single Instruction, Multiple Data, реализована аппаратно?) и Память (ГП должен выполнять свои задачи в рамках ограничений пропускной способности памяти).

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

Низкоуровневая архитектура графического процессора

Изображение взято с репозиторий GitHub для крошечного графического процессора.

Архитектура крошечного графического процессора

Верилог — язык описания аппаратного обеспечения (HDL, Язык описания оборудования), используемый в основном для проектирования и моделирования цифровых схем. Он широко используется в индустрии цифровой электроники для проектирования и проверки оборудования, такого как интегральные схемы, программируемые логические системы (FPGA) и ASIC (ASIC).Специализированная интегральная схема).

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

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

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

память данных использует 8-битное адресное пространство (всего 256 ячеек памяти); данные 8 бит. Там память программ Он также использует 8-битное пространство, но данные хранятся в 16-битных блоках (каждая инструкция имеет длину 16 бит, как указано в ISA).

tiny-GPU также использует преимущества контроллер памяти который отслеживает все исходящие запросы к памяти от вычислительных ядер, модулирует запросы на основе фактической пропускной способности внешней памяти и передает ответы из внешней памяти на соответствующие ресурсы. Руководство кэш чтобы освободить полосу пропускания и ускорить обработку.

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

Роль планировщика

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

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

ISA на крошечном графическом процессоре

Проект tiny-gpu реализует простой ISA из 11 инструкций разработан, чтобы позволить использовать простые ядра, способные выполнять сложение и умножение матриц. Приводим инструкцию, на которой это основано Минимальный графический процессор:

  • BRnzp: инструкция перехода на другую строку в памяти программы, если содержимое регистра NZP соответствует условию nzp в инструкции.
  • CMP: сравнивает значения двух регистров и сохраняет результат в регистре NZP, который будет использоваться для последующей инструкции BRnzp.
  • ADD, SUB, MUL, DIV: базовые арифметические операции, позволяющие выполнять тензорную обработку. Тензор — это общее математическое понятие, обобщающее многомерные векторы и матрицы. Тензоры часто используются для представления многомерных данных, таких как изображения, видео, сенсорные данные или матрицы данных в приложениях машинного обучения и искусственного интеллекта.
  • LDR: Загрузка данных из глобальной памяти.
  • STR: хранить данные в глобальной памяти.
  • CONST: загрузить константу в регистр.
  • RET: сообщает, что текущий поток достиг конца выполнения.

Каждый регистр использует 4 бита: всего 16 регистров. Первые 13 регистров R0–R12 бесплатные регистры которые поддерживают чтение/запись. Последние 3 регистра специальные регистры только для чтения.

В целом, tiny-GPU — это всего лишь «проба» того, как работает графический процессор. Многие критические аспекты современных накопителей, такие как поддержка инструкций. искусственный интеллектнаиболее продвинутая реализация прогнозирования ветвей и кэширования, до сих пор отсутствует в открытой реализации, которая только что была опубликована публично.

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

Вступительное изображение предоставлено: iStock.com – КазарсаГуру

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *