DMA операция память-память

Тема в разделе "WASM.ASSEMBLER", создана пользователем Exception13, 7 апр 2008.

  1. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Доброго времени суток всем!
    Интересует вопрос: есть ли у кого рабочие исходы подобной операции.
    А то как ни пытался - ничего не пашет.
    В качестве источника канал DMA - 0, в качестве приемника канал DMA - 1, соответственно настраиваются адреса, страницы и количество байт транзакции и "нажимаем кнопочку PLAY".
    Но, к сожалению, ничего не происходит.
    Поиски по инету дали не рабочие исходы на си (см. прикрепленный файлик).
    В принципе, язык не важен, понять бы как заставить работать ?
    Вопросы типа: а нафига все это надо, этож медленно... тут неуместны.

    С уважением, Александр.
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Такое проходило только в старых компах (80286 и иже с ними). Позднее возможность передачи память-память из контроллеров была изъята.
     
  3. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Т.е. на современном железе, которое вроде как должно работать в режиме совместимости этого не сделать вообСЧе ?
    А если использовать PCI DMA ? то там, как я полагаю все становится чипсето зависимым ?
     
  4. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    PCI DMA используется для взаимодействия PCI устройства с контроллером памяти через механизм Bus Mastering
    т. е, к примеру, сетевой контроллер получает пакет и записывает его по указанному физическому адресу
    вам же, насколько я понял, нужен DMA в рамках одного контроллера памяти
    т. е копирование данных без участия CPU
     
  5. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Верно, возможно ли такое ?
     
  6. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    rep movs

    Вроде встретив такую инструкцию за дело берется контроллер памяти не напрягая проц.
     
  7. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Железо не может быть на 100% совместимо с железом 15-20 летней давности ...
     
  8. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    ну уж дудки...

    ладно, будем считать что DMA канал память - память не работает и пес с ним.
     
  9. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Exception13
    Не сделать. И современное железо не является на 100% совместимым с тем, что использовалось в PC/AT. Например, нынешние контроллеры DMA, "вшитые" в южный мост, не поддерживают передачу "память - память" (на что были способны реальные контроллеры 8237), а контроллеры прерываний не имеют половины режимов, которыми располагал 8259. Совместимость поддерживается только в тех режимах, которые реально использовались "официальным" софтом.

    Неверно. Всё выполняет проц. Хотя бы потому, что адреса в этой инструкции -- виртуальные, и их ещё надо преобразовать сначала в линейные, а затем -- в физические. И чтоб исключения возникали при любых ошибках (в частности, при страничных промахах).
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Помойму я встречал пример "память - память" и он работал на современном железе