Как инструкции драйвера устройства программируют GPU?

скажем, я использую компьютер, любой типичный современный компьютер более или менее. Драйвер устройства отвечает за все, что я вижу на моем экране, в том числе прямо, как я печатаю это экран обновляется(это, конечно, в рамках ОС, как Windows).

давайте опустим это до уровня, когда аппаратное обеспечение не заботится, есть ли ядро или нет, и просто берет инструкции.

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

Если да, использует ли GPU "специальный" язык или "сборку", чтобы понять инструкции, отправленные ему, как это делает процессор?

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

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

Я задал эти типы вопросов, и они удаляются насильственно быстро без ответа, почему на многих сайтах, так что большая тайна/секрет здесь? Это часть оборудования на материнской плате, которая доступна, как и любая другая.

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

Так как ГП "запрограммирован" от "голое железо", прямой аппаратной точки зрения на аппаратный уровень?

30
задан Synetech
05.04.2023 12:23 Количество просмотров материала 2836
Распечатать страницу

2 ответа

в принципе, как ГП "знать", как именно все делать? Управляет ли драйвер в основном каждой крошечной, встроенной или аппаратной функцией уровня канала, возможной или необходимой для вычисления двоичных данных для отображения с помощью специальных инструкций, которые предоставляет драйвер?

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

если да, использует ли GPU "специальный" язык или "сборку", чтобы понять инструкции, отправленные ему, как это делает процессор?

да и нет. Как и большинство устройств, видеокарты используют стандарты для упрощения. Они используют стандарты типа VESA для доступа к обычным функциям, таким как видео во время загрузки, или CUDA для доступа к функциям GPU-программирования. Кроме того, программы могут получать доступ к нестандартным или зависящим от устройства функциям непосредственно с помощью машинного кода (часто C компилируется на ассемблере) в сочетании с документацией по программированию устройства (которая доступна на веб-сайте адаптера).

у меня слишком много пробелов в моих знаниях, и есть эта неприятная "тайна" за GPU и доступ к ним напрямую через аппаратура.

драйверы получают доступ к устройству напрямую, поэтому у них есть специальный доступ (обычные программы уровня пользователя не могут получить доступ к оборудованию непосредственно в Vista+ по соображениям безопасности и стабильности). Доступ к устройству через порты, DMA (Прямой Доступ К Памяти), и памяти-отображение.

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

драйвер может читать и писать устройства с регулярными инструкциями процессора путем доступа к портам памяти, отображаемых и тому подобное. Как простой для понимания пример, вы можете поместить символ на экране в текстовом режиме, написав в "память" на адреса B8000. Этот адрес не был ОЗУ, скорее он был отображен в соответствии с памятью видеокарты, так что запись на него будет записывать на экран. Кроме того, вы можете написать на экране, поставив символ, который вы хотите написать в AL в реестре 0x09 на AH регистрация, а затем вызов BIOS прерывание 0x10. Более продвинутые функции не отличаются; Вы можете читать и записывать память адаптера, вызывать функции на его чипе и т. д., используя все, что угодно inetrface(S), который предоставляет устройство и документы.

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

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

так как GPU "запрограммированный" с точки зрения голого металла, прямой аппаратной точки зрения на аппаратно-специфическом уровне?

через несколько слоев:

  1. полупроводниковые компоненты, такие как транзисторы, и такие
  2. низкий уровень ASICs
  3. бортовые процессоры и чипсеты
  4. низкоуровневые программные интерфейсы (сборка)
  5. высокоуровневые программные интерфейсы (DirectX, OpenGL)
  6. высокого уровня язык программирования (C++, C#, Python и др.)
8
отвечен Synetech 2023-04-06 20:11

Я не совсем гений в компьютерной архитектуре, но постараюсь ответить на ваш вопрос по пунктам, насколько мне известно.


драйвер устройства отвечает за все, что я вижу на моем экране, в том числе прямо, как я печатаю это экран обновляется(это, конечно, в рамках ОС, как Windows).

Это правда, главным образом потому, что прямое взаимодействие с GPU не так просто реализовать. Следовательно развитие графические фреймворки, такие как DirectX и OpenGL.

Это удобное определение из Википедия объясняет это более подробно:

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


в принципе, как ГП "знать", как именно все делать? Управляет ли драйвер в основном каждой крошечной, встроенной или аппаратной функцией уровня канала, возможной или необходимой для вычисления двоичных данных для отображения с помощью специальных инструкций, которые предоставляет драйвер?

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

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

Если да, использует ли GPU "специальный" язык или "сборку", чтобы понять инструкции, отправленные ему, как это делает процессор?


с Википедия:

ARB assembly language-низкоуровневый язык затенения, который можно охарактеризовать как язык ассемблера. Он был создан комиссией по обзору архитектуры OpenGL (ARB) для стандартизации инструкций GPU, управляющих аппаратной графикой трубопровод.

theres этот пример, и помните, что отдельные производители (NVIDIA, ATI) имеют свои собственные наборы инструкций.

кроме того, существует OpenCL и многие другие способы, в некотором смысле, непосредственно программировать инструкции для GPU.

все это должно ответить на ваш вопрос, до некоторой степени.

2
отвечен Doktoro Reichard 2023-04-06 22:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх