Некрономикон GPU. Часть первая

Дата публикации 13 фев 2018 | Редактировалось 13 фев 2018
Темные силы

[​IMG]

Давно бытует мнение, что очень многое, связанное с видеокартами - это большая тайна за семью печатями. И все к этому так привыкли, что данная идеология уже вошла в привычку. Выражение “записать в память видюхи” - относится к магическому ритуалу, требующему огромных жертвоприношений богам. А такие вещи как шейдеры - уже вошли в обиход как мощные заклинания по вызову потусторонних сил. Но не бойтесь, вместе, мы в силах подчинить себе этих демонов. Ну или по крайней мере вы сможете понять - достаточно ли у вас сил (светлых?) чтобы с этими демонами совладать.

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

Не хотелось бы опускаться в дебри истории и вспоминать как вообще проходило развитие графических процессоров. Но кому интересно хотя бы примерно представить становление трехмерной графики графики, есть статья на Wiki, основанная на истории компании 3dfx. По сути, именно с этой компании начался безудержный рост производительности графических средств ускорения. Ссылка: https://ru.wikipedia.org/wiki/3dfx_Interactive

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

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

Второе, подсистема управления питанием. Современные видеокарты умеют сохранять энергию. Они очень редко работают в полную силу. И нагрузить их на 100 процентов возможно только в очень тяжелых и грамотно спроектированных вычислениях (синтетических тестах, майнинге криптовалюты или в алгоритмах трассировки лучей). Модуль отвечает за частоты памяти и ядра, а также умеет включать и выключать неиспользуемые юниты. Также, в определенных конфигурациях, модуль может вообще выводить в спящий режим всю видеокарту, оставляя работать только минимально необходимый набор функций (контроллер управления питанием со своими Plug&Play прерываниями).

Третье. Подсистема BIOS видеокарты (или Video BIOS - VBIOS). Как правило хранит в себе микрокод видеокарты (прошивка) и настройки (тайминги, частоты, напряжения и тп). Так-же содержит настройки определенных возможностей видеокарт (как например - поддержка стерео мониторов, мониторов с 64 битным цветом, синхронизация видеокарт и другое). Микрокод видеокарты представляет собой логику работы ядер, логику работы конвейеров команд, списки поддерживаемых шейдерных инструкций, поддерживаемые режимы организации видеопамяти и многое другое. Микрокод - святая святых видеокарты. Он зашифрован, расшифровывается внутренним контролером, но считать расшифрованный микрокод невозможно. Подменить его тоже невозможно. VBIOS - как правило зашит в видеокарту, и как правило релизные версии видеокарт нельзя перепрошить, даже если у вас вдруг оказался на руках этот VBIOS. Конечно бывают исключения, когда речь заходит не о дискретной видеокарте, а о APU, или какой-то другой системе со встроенной графикой типа Tegra. Но это совсем другой разговор.

Четвертое, собственно регистры видеокарты. В видеокарте очень много регистров. Их так много, что если описать их все, получилась бы книга размером в три словаря Ожегова, не меньше. Некоторые регистры отвечают за механизмы работы видеокарты, за адреса прерываний, за тайминги, и размеры некоторых выделенных областей, за работу кольцевых буферов и многое другое, Другие регистры могут отображать текущее состояние различных ядер видеокарты, такие как, например, главное исполнительное ядро команд - или по простому CE - command engine. Указывает в каком режиме находится командное ядро, в каком режиме выполняется команда, какая это команда, адреса этой команды, в общем многие параметры, доступные только для чтения. Есть регистры отвечающие за исполнение шейдерных инструкций - такие регистры обычно недоступны для их прямого изменения. Они изменяются только посредством шейдерных команд.

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

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

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

© TermoSINteZ

12 5.098
TermoSINteZ

TermoSINteZ
Синоби даоса
Команда форума

Регистрация:
11 июн 2004
Публикаций:
2

Комментарии


      1. mercury 14 май 2019
        Продолжения не будет ?
      2. UbIvItS 14 апр 2018
        TermoSINteZ код-то можно соорудить любой (можно и дрова на питоне строфать :crazy: ), но речь всё же идёт о том, что гпу коды чрезмерно тормознутые на скалярных задачах. поэтому подобное "можно/возможно" имеет смысл упоминать лишь в числе забавной/любопытной экзоты. короче, реальный комп всё же базируется на скалярных цп, а вся прочая выч-оснастка идёт в качестве ускорителей на "узких" задачах.

        ЗЫ.. TermoSINteZ если ты реально считаешь, что на гпу-шках возможно получить полноценный комп с приличными показателями == займись сим Вопросом: это будет просто БОНЪБА в айти. :)
      3. TermoSINteZ 14 апр 2018
        Я же говорю. Нет такой проблемы в ГПУ, создать такой код.
      4. UbIvItS 14 апр 2018
        TermoSINteZ
        у скалярных цп нет проблем формировать любые ЕСЛИ. а в гпу чё.. формировать аЦЦЪкие вектора/матрицы 777 :crazy:
      5. yashechka 12 апр 2018
        Тю, я думал, что продолжение уже, .................
      6. TermoSINteZ 11 апр 2018
        А какая проблема сделать ветвление? CUDA \ OpenCL вам в помощь . Любое ветвление вам доступно.
        Ну естественно не стоит принимать мои слова близко к сердцу. )
      7. UbIvItS 11 апр 2018
        было бы уместней сказать, что там стоит защита от "левой" перепрошивки :blush2::grin:
        видюхи относятся к векторным вычислениям и называть их "настоящим/полноценным компьютером" не стоило бы :) к примеру, аким дикобразом на видюхе организовать НОРМАЛЬНО ветвление 777:crazy:
      8. RET 19 фев 2018
        Своё надо друже мутить пора уж, вы же Синоби типа, хош баньте - хош нет ;)
        Reprehensio calumnia vacare debet
        в рифму
      9. TermoSINteZ 19 фев 2018
        Никто никого тут не заставлять выдумывать. Захотели написали -- нет ковыряют кинескопы.
      10. RET 19 фев 2018
        мдэ... минусы некуда "Синоби даоса"
        ))))
        кто нить тут что то сам выдумает кроме инде и мну и пару челов или кинескопы будем ковырять с местными модерами? :)))))))
      11. TermoSINteZ 14 фев 2018
        Уже на 99 процентов готово ) Скоро будет.
        Я просто перенес из раздела Articles. Чтоб все было в 1 месте.
        Радел Articles скоро тоже весь закроем и уберем
        yashechka нравится это.
      12. SadKo 14 фев 2018
        Эту статью я где-то год назад читал ещё на форуме. Где продолжение, TermoSINteZ?
        yashechka нравится это.