В этом разделе приводятся некоторые важные моменты, которые следует учитывать при планировании использования операций DMA в драйвере минипорта.
Дополнительные замечания о Видеопортстартдма
Драйвер видеоадаптера обычно отправляет запросы на передачу драйверу минипорта, который фактически выполняет эти передачи DMA. Драйвер экрана не может предположить, что только потому, что его подсистема DMA бездействует, все данные в запросе на передачу переданы. Это обусловлено тем, что драйверу минипорта требуется несколько раз вызывать видеопортстартдма и видеопорткомплетедма для большого запроса на перемещение. Модуль DMA аппаратного обеспечения бездействует между двумя такими операциями DMA, даже если для передачи данных могут быть дополнительные данные. Это обязанность драйвера минипорта, сообщающая драйверу экрана о том, что запрос передачи был полностью выполнен.
Параметр контекставидеопортстартдма должен указывать на нестраничную память, например память в расширении оборудования. Этот параметр передается в подпрограмму обратного вызова хввидексекутедма драйвера минипорта, которая выполняется на уровне IRQL DISPATCH_LEVEL.
Анимация на ПЛИС с помощью Xilinx Video DMA
DMA и прерывания
Для многих устройств прерывание создается по завершении аппаратной операции DMA. Процедура обработки прерываний драйвера минипорта видеопотока (ISR) должна ставить в очередь подпрограмму DPC для дальнейших задач, связанных с DMA. Не вызывайте функции DMA драйвера видеопортов в ISR, так как они могут вызываться только на уровне DISPATCH_LEVEL IRQL или ниже.
Можно проверить размер, передаваемый в вышеупомянутой подпрограммы DPC, даже если функция видеопортстартдма еще не возвращена, так как переменная, на которую указывает аргумент пленгс в видеопортстартдма , уже была обновлена во время вызова хввидексекутедма .
Логические адреса и физические адреса
В реализации DMA драйвера видеопортов используется концепция логических адресов, которые используются в качестве адресов, используемых оборудованием DMA. Логические адреса могут отличаться от физических адресов. Функции DMA, предоставляемые драйвером видеопорта, принимают во внимание любые ограничения памяти, связанные с платформой. Поэтому важно использовать функции DMA драйвера видеопортов вместо таких функций режима ядра, как ммжетфисикаладдресс. Дополнительные сведения о логических адресах см. в разделе объекты адаптера и DMA .
Одновременный режим DMA
Для устройств, поддерживающих одновременную передачу DMA, либо на контроллере DMA, поддерживающем одновременные операции чтения и записи, либо на двух отдельных контроллерах DMA, драйверы минипорта должны получить отдельный объект адаптера DMA для каждого параллельного пути. Например, если устройство имеет два контроллера DMA, которые работают параллельно, драйвер минипорта должен выполнить два вызова видеопортжетдмаадаптер, тем самым получая указатели на две структуры VP_DMA_ADAPTER. После этого каждый раз, когда драйвер минипорта выполняет запрос передачи DMA определенного контроллера DMA, он должен использовать соответствующий указатель в этом запросе.
stm32 Урок 14: DMA — теория
Источник: learn.microsoft.com
Гайд Что такое DMA карта и где купить в двух словах
Начнем с того что на основном компьютере нету никаких незаконных программ и софта, тем самым античит не сможет задетектить ваш софт никаким образом, и данный метод игры с читами почти полностью убирает возможность бана вашего аккаунта
(Вам не нужно днями искать приватный софт с ограниченным пулом пользователей, к которому еще и сложно получить доступ, все те читы которые публикуются на различных форумах под названием приватный [tooltip=145]софт[/tooltip] это банальная замануха неопытных юзеров, по факту это обычный публичный софт который детектится после определенного набора количества репортов на ваш аккаунт )
Спойлер: 2) Сколько это все стоит?
Стоимость зависит от модели DMA карты и вашего проживание, для разных стран стоимость будет разница около 10-20%
Обычно стоимость начинается от 200€-900€
Спойлер: 3) Что мне нужно помимо карты?
Также вам нужен второй компьютер можете взять с авито самую бюджетную сборку до 10к (Благо нынешние ситуация в понижении цен на железо позволяет)
Также вам требуется прошивка стоимость прошивки варьируется от 70€ до 150€ (Есть как индивидуальная прошивка так и массовая с пулом от 5 пользователей до 10)
Спойлер: 4) Что такое прошивка и для чего она нужна?
прошивка вашей DMA карты это то как она будет отображаться в вашей системе, то-есть вы можете вставить вашу DMA карту и система будет ее видеть как наушники, или флешку. Почему нельзя использовать всем одну прошивку? Потому что по публичной прошивки вас может обнаружить античит и забанить (Пример если у 100 пользователей отображается одна и та же флешка с одной и той же кодировкой это наводит на определенные мысли, и данное железо заносится в античит
Спойлер: 5) Сколько стоят читы и на какие игры они есть?
Читы есть почти на каждую игру, есть также и бесплатные софты их вы можете найти на различных форумах. Для DMA карты читы значительно дешевле минимум в два раза и больше. Например RADAR на тарков можно купить всего за 70€ на месяц. В отличии от обычного приватного рада слотового 170€. Данная карта окупается за пару месяцев, и как приятный бонус у вас нету ни одного забаненного аккаунта)
Спойлер: 6) Где купить DMA карту?
Купить вы можете в официальном магазине производителей, этот вариант доступен только для СНГ стран, в России такой вариант невозможен из-за блокировок карт. Также присутствует дефицит карт, это у нас в России данная тема только начинается развиваться в других же странах этими картами пользуются очень давно.
Спойлер: 7) Как купить DMA карту в России
Спойлер: 8) Как установить карту, прошивку и софт
После того как вам приедет DMA карта вас добавят в дискорд канал где вам будут оказывать полную помощь по установке карты и ее настройке, в данном канале присутствует полная инструкция до распаковки карты и до игры с софтом.
Из минусов
ожидание доставки карты от 4 дней, относительно долгая настройка и в тоже время простая.
Владение второго пк или ноутбука.
Больше весомых минус найдено не было стоимость карты как говорилось окупается за пару месяцев
Нужна ли мне эта карта?
Если ты играешь на постоянки с софтом, и тебе надоели баны от (Приватных читов) то да для тебя покупка такой карты будет обязательна!
Источник: yougame.biz
DMA для новичков или то, что вам нужно знать
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
DMA, что это? О чем вы говорите?
DMA, или Direct Memory Access – технология прямого доступа к памяти, минуя центральный процессор. В эпоху 486-ых и первых Pentium во всю царствовала шина ISA, а также метод обмена данными между устройствами – PIO (Programmed Input/Output).
- На сетевую карту пришло 1500 байт данных.
- Сетевая карта инициирует прерывание с целью сообщить процессору, что данные необходимо забрать с устройства, иначе произойдет так называемый buffer overrun.
- Операционная система ловит прерывание от контроллера прерываний и отдает его на обработку драйверу.
- Драйвер в цикле побайтно читает данные с регистров сетевой карты.
Когда объемы данных, которыми оперирует процессор начали возрастать, стало понятно, что нужно минимизировать участие процессора в цепочке обмена данными, а то прийдется туго. И вот тогда активное применение нашла технология прямого доступа к памяти.
Кстати говоря, DMA используется не только для обмена данными между устройством и ОЗУ, но также между устройствами в системе, возможен DMA трансфер между двумя участками ОЗУ (хотя данный маневр не применим к x86 архитектуре). Также в своем процессоре Cell, IBM использует DMA как основной механизм обмена данными между синергетическими процессорными элементами (SPE) и центральным процессорным элементом (PPE). Также каждый SPE и PPE может обмениватся данными через DMA с оперативной памятью. Данный прием – на самом деле большое преимущество Cell, ибо избавляет от проблем когерентности кешей при мультипроцессорной обработке данных.
И снова теория
Прежде чем мы перейдем к практике, я бы хотел осветить несколько важных аспектов программирования PCI, PCI-E устройств.
Я вскользь упомянул о регистрах устройства, но как же к ним имеет доступ центральный процессор? Как многие из вас знают, есть такая сущность в компьютерных технологиях, как IO порты (Input/Output ports). Они предназначены для обмена информацией между центральным процессором и периферийными устройствами, а доступ к ним возможен с помощью специальных ассемблерных инструкций — in/out. BIOS (или OpenFirmware на PPC based системах) на ранних этапах инициализации PCI устройств, а также некоторых других (Super IO контроллера, контроллера PS/2 устройств, ACPI timer и т.д.), закрепляет за определенным контроллером собственный диапазон IO портов, куда и отображаются регистры устройства.
- Скорость доступа к физической памяти выше, нежели к IO портам.
- IO порты могут отображать не более 65535 байт регистров, в то время как размер ОЗУ современных компьютеров в разы больше.
- Читать регистры устройства из ОЗУ проще, нежели с помощью IO портов 🙂
Итак, существует два метода утилизации DMA: contiguous DMA и scatter/gather DMA.
Contiguous DMA
- Выделяется один буфер достаточно большого размера в оперативной памяти.
- Физический адрес (точнее сказать адрес на шине участка памяти, потому как physical address и bus address – равны в x86 архитектуре, но не равны в PPC) этого буфера записывается в регистр устройства.
- Во время того, как приходят данные на устройство, контроллер устройства инициирует DMA трансфер.
- После того, как буфер полностью заполнен, контроллер устройства инициирует прерывание, чтобы сообщить центральному процессору, что буфер следует передать операционной системе.
- Драйвер операционной системы обрабатывает прерывание, и передает полученные данные из буфера, далее по стеку устройств операционной системы.
Scatter/gather DMA
С ростом скорости Ethernet адаптеров, contiguous DMA показал свою несостоятельность. В основном из-за того, что требовались области памяти достаточно большого размера, которые подчас невозможно было выделить, так как в современных системах фрагментация физической памяти достаточно высока. Во всем виноват механизм виртуальной памяти, без которого нынче никуда 🙂
Решение напрашивается само собой: использовать вместо одного большого участка памяти несколько, но в разных регионах этой самой памяти. Возникает вопрос, но как же сообщить контроллеру устройства, как инициировать DMA трансфер и по какому адресу писать данные? И тут нашли решение, использовать дескрипторы, чтобы описывать каждый вот такой участок в оперативной памяти.
- Адрес участка ОЗУ (именно bus address), который предназначен для DMA трансфера.
- Размер описываемого участка ОЗУ.
- Опциональные флаги и другие специфические аргументы.
- Адрес следующего дескриптора в памяти.
- Драйвер операционной системы выделяет и иницилизирует дескрипторы DMA буферов.
- Драйвер выделяет DMA буферы (участки ОЗУ для DMA трансфера) и записывает необходимую информацию о них в дескрипторы.
- Устройство по мере возникновения потребности, заполняет DMA буферы, и после того, как заполнен один или несколько буферов инициирует прерывание.
- Драйвер ОС просматривает все дескрипторы DMA буферов, определяет какие из них были заполнены контроллером устройства, пересылает данные из буфера далее по стеку устройств и помечает буфер как готовый к DMA трансферу.
Стоп.
На сегодня пожалуй все, иначе информации станет слишком много. В следующей статье я покажу вам, как с этой уличной магией работает IOKit. Жду отзывов и дополнений 😉
Источник: habr.com