Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA? Может это будет быстрее или пусть даже чуть медленнее, но смысл в том, что можно заснуть на время копирования, отдав ядро другому потоку, сэкономив такты. Если конечно копируется достаточно большой объем. Тут вот много обсуждали, но конкретного вывода чето не видно. http://forum.ixbt.com/topic.cgi?id=26:38370] http://forum.ixbt.com/topic.cgi?id=26:38370 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 04:34 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Нет, не применяется. На уровне приложения - нет доступа к физической памяти. На уровне ОС - большие объемы из одного угла RAM в другой перебрасывать не нужно. В принципе, теоретически, это возможно. Если будешь писать свой однозадачный контроллер с прямым доступом к памяти и контроллерам - можешь сделать себе соответствующие реализации для memmove() и использовать их в С/С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 08:54 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
White OwlНет, не применяется. На уровне приложения - нет доступа к физической памяти. Основная проблема для DMA это выгружаемость в своп и фрагментация страниц. На сколько я понял DMA не использует MMU и соответственно ничего не знает о TLB и виртуальной адресации. Решается ли эта проблема залочиванием памяти через Virtuallock(Win)/mlock(nix)? И как вариант использовать их в своем аллокаторе. White OwlНа уровне ОС - большие объемы из одного угла RAM в другой перебрасывать не нужно. В принципе, теоретически, это возможно. Если будешь писать свой однозадачный контроллер с прямым доступом к памяти и контроллерам - можешь сделать себе соответствующие реализации для memmove() и использовать их в С/С++. А что понимается под однозадачным контроллером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 15:04 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM->RAM через DMA, Применяется, там где это оправдано и архитектурно предусмотрено. Могу сказать что в сигнальных процессорах от TI это широко применяется. Там очень мощный DMA. Если мне не изменяет память в 642 чипе 64 канала DMA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 19:17 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAWhite OwlНет, не применяется. На уровне приложения - нет доступа к физической памяти. Основная проблема для DMA это выгружаемость в своп и фрагментация страниц.Не совсем верно. Основаная задача DMA это пересылка данных между памятью и любым другим устройством. Своп это всего-лишь частная задача (память-hdd). RAM-RAM через DMAНа сколько я понял DMA не использует MMU и соответственно ничего не знает о TLB и виртуальной адресации. Решается ли эта проблема залочиванием памяти через Virtuallock(Win)/mlock(nix)? И как вариант использовать их в своем аллокаторе.Нет конечно. Эти локи все-го лишь попросят ОС не выгружать определенную виртуальную страницу в своп. Но замены виратуального адреса на физический оно не даст. RAM-RAM через DMAWhite OwlВ принципе, теоретически, это возможно. Если будешь писать свой однозадачный контроллер с прямым доступом к памяти и контроллерам - можешь сделать себе соответствующие реализации для memmove() и использовать их в С/С++. А что понимается под однозадачным контроллером?Тот который занимается одной задачей естественно. Которому не нужно делать виртуальную память для своих под-программ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 19:29 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM->RAM через DMAПрименяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?Нет, за отсутствием искомого DMA. P.S. Использование DMA-контроллера для пересылок память-память было медленнее простого movs уже в районе i80286-16MHz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:08 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
White OwlRAM-RAM через DMAпропущено... Основная проблема для DMA это выгружаемость в своп и фрагментация страниц.Не совсем верно. Основаная задача DMA это пересылка данных между памятью и любым другим устройством. Своп это всего-лишь частная задача (память-hdd). RAM-RAM через DMAНа сколько я понял DMA не использует MMU и соответственно ничего не знает о TLB и виртуальной адресации. Решается ли эта проблема залочиванием памяти через Virtuallock(Win)/mlock(nix)? И как вариант использовать их в своем аллокаторе.Нет конечно. Эти локи все-го лишь попросят ОС не выгружать определенную виртуальную страницу в своп. Но замены виратуального адреса на физический оно не даст. RAM-RAM через DMAпропущено... А что понимается под однозадачным контроллером?Тот который занимается одной задачей естественно. Которому не нужно делать виртуальную память для своих под-программ. Я имел ввиду именно проблему , а не задачу, т.е. препятствие которое мешает осуществить DMA - это выгрузка и фрагментация, а лок - решает её. Тогда следующая проблема, получение физического адреса из виртуального, решается только один раз непосредственно перед запуском DMA-копирования. И далее в процессе ни MMU/TLB, ни CPU не нужны до прерывания. Думаю многие сталкивались с обязательной необходимостью использования Virtuallock/mlock для DMA работы с RAM->Device. А можете написать пример DMA-копирования RAM->RAM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:15 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM->RAM через DMAПрименяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?Нет, за отсутствием искомого DMA. P.S. Использование DMA-контроллера для пересылок память-память было медленнее простого movs уже в районе i80286-16MHz Ок. Но зато не тратится процессорное время, которое допустим критично в нашей задаче. Резонно конечно сказать, что тупое копирование больших участков памяти - это ошибка архитектуры, но все же интересно постестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:19 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM->RAM через DMAОк. Но зато не тратится процессорное время, которое допустим критично в нашей задаче.А закупорка шины, значит, вам некритична? P.S. Поражает, каких только звонов не слушают люди ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:31 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM->RAM через DMAПрименяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?Нет, за отсутствием искомого DMA. Пока что нашел такой вариант, но не совсем понял как пользоваться этой функцией, если кто знает приведите пример: int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, struct vm_area_struct *vma) http://forum.ixbt.com/topic.cgi?id=26:38370-2#25] http://forum.ixbt.com/topic.cgi?id=26:38370-2#25 И такой пример, который работает на серверах с Intel® I/O Acceleration Technology вроде как быстрее, чем memcpy(SSE/movs): async-tx-api.txt функция async_memcpy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:34 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM->RAM через DMAОк. Но зато не тратится процессорное время, которое допустим критично в нашей задаче.А закупорка шины, значит, вам некритична? P.S. Поражает, каких только звонов не слушают люди ... Бывает не закупорка, а загрузка шины, которая одинакова, как для RAM->CPU->RAM, так и для RAM->RAM, но в последнем случае не загружаются LLC и CPU (или если приятнее, не закупориваются LLC и CPU). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:38 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
без указания конкретных архитектур спор беспредметен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:50 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Изопропилбез указания конкретных архитектур спор беспредметен x86_64 (Intel/AMD) серверные и десктопные CPU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 20:57 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Может лучше это заменить на какой-нить COW. Или как там копия процесса создаётся. А так ... антипаттерн мать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 22:29 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
maytonМожет лучше это заменить на какой-нить COW. Или как там копия процесса создаётся. А так ... антипаттерн мать его. Да. А как насчет передачи RAM(CPU1) -> RAM(CPU2), с памяти одного процессора, в память другого для уменьшения задержек на многопроцессорной NUMA x86_64 системе? Допустим есть сортированный массив в 1 GB, который редко обновляется, но активно параллельно используется на чтение для бинарного поиска в CPU1 и CPU2. Причем выбирается малый объем, но часто, и требует малых задержек . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 23:51 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAmaytonМожет лучше это заменить на какой-нить COW. Или как там копия процесса создаётся. А так ... антипаттерн мать его. Да. А как насчет передачи RAM(CPU1) -> RAM(CPU2), с памяти одного процессора, в память другого для уменьшения задержек на многопроцессорной NUMA x86_64 системе? Допустим есть сортированный массив в 1 GB, который редко обновляется, но активно параллельно используется на чтение для бинарного поиска в CPU1 и CPU2. Причем выбирается малый объем, но часто, и требует малых задержек .Да и тут и нормальной жизни хватит. CPU1 - сортирует массив и возвращает его в память, копия остается в его локальном кеше. CPU2 - на первом запросе к массиву загружает его участок в свой кеш. Размер участка это грубо говоря размер шины. Постепенно, по мере надобности этот массив может быть целиком загружен в кеш CPU2. А если хочешь, то можно сразу после сортировки скомандовать CPU2 сделать полный скан массива, это загрузит его в локальный кеш. Последующие запросы уже будут идти к кешу. Надобности в управлении DMA или копировании памяти нет никакой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 02:31 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
White OwlRAM-RAM через DMAпропущено... Да. А как насчет передачи RAM(CPU1) -> RAM(CPU2), с памяти одного процессора, в память другого для уменьшения задержек на многопроцессорной NUMA x86_64 системе? Допустим есть сортированный массив в 1 GB , который редко обновляется, но активно параллельно используется на чтение для бинарного поиска в CPU1 и CPU2. Причем выбирается малый объем, но часто, и требует малых задержек .Да и тут и нормальной жизни хватит. CPU1 - сортирует массив и возвращает его в память, копия остается в его локальном кеше. CPU2 - на первом запросе к массиву загружает его участок в свой кеш. Размер участка это грубо говоря размер шины. Постепенно, по мере надобности этот массив может быть целиком загружен в кеш CPU2. А если хочешь, то можно сразу после сортировки скомандовать CPU2 сделать полный скан массива, это загрузит его в локальный кеш. Последующие запросы уже будут идти к кешу. Надобности в управлении DMA или копировании памяти нет никакой. Маленький нюанс: массив в 1 GB ... массив может быть целиком загружен в кеш , гдеж кэш то такой взять? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 02:40 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAМаленький нюанс: массив в 1 GB ... массив может быть целиком загружен в кеш , гдеж кэш то такой взять? :)Подожди пару лет - будет. И вообще, вопрос уже давно ушел от С и С++. Не пора ли закрывать или переносить в hardware? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 07:25 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAДопустим есть сортированный массив в 1 GB, который редко обновляется, но активно параллельно используется на чтение для бинарного поиска в CPU1 и CPU2. Причем выбирается малый объем, но часто, и требует малых задержек .А вы kernel driver пишите или пользовательское приложение? Если драйвер, то использование 1Gb массива весьма странно. Если пользовательское приложение - забудьте про DMA: ОС не даст вам доступа к железу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 07:32 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
BarloneRAM-RAM через DMAДопустим есть сортированный массив в 1 GB, который редко обновляется, но активно параллельно используется на чтение для бинарного поиска в CPU1 и CPU2. Причем выбирается малый объем, но часто, и требует малых задержек .А вы kernel driver пишите или пользовательское приложение? Если драйвер, то использование 1Gb массива весьма странно. Если пользовательское приложение - забудьте про DMA: ОС не даст вам доступа к железу. А API OS или готовых драйверов для данной задачи не бывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 15:46 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
White OwlRAM-RAM через DMAМаленький нюанс: массив в 1 GB ... массив может быть целиком загружен в кеш , гдеж кэш то такой взять? :)Подожди пару лет - будет. И вообще, вопрос уже давно ушел от С и С++. Не пора ли закрывать или переносить в hardware? Единственное кем это может использоваться - это C/C++ разработчики. А в ветке hardware уровень понимания этого на порядок ниже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 15:48 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAА API OS или готовых драйверов для данной задачи не бывает? а переключение в ядро,постановка запроса в очередь,уведомление о завершении,обработка прерываний , фиксация страниц, трансляция адресов - весь профит в 0 а то и минус не сведут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 18:23 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
ИзопропилRAM-RAM через DMAА API OS или готовых драйверов для данной задачи не бывает? а переключение в ядро,постановка запроса в очередь,уведомление о завершении,обработка прерываний , фиксация страниц, трансляция адресов - весь профит в 0 а то и минус не сведут? Для RAM -> Device (видеокарточка) DMA же не сводит профит к 0. И быстрее на 20%, и процессор не загружает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 18:58 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAДля RAM -> Device (видеокарточка) DMA же не сводит профит к 0. И быстрее на 20%, и процессор не загружает."Когда вы говорите, Иван Васильевич ..." (ц) одна популярная комедия. DMA-контроллер, о котором вы бредите, это такая железка, которая существовала во времена жесточайшей экономии активных элементов в архитектуры IBM PC - не было периферийных устройств, умеющих управлять (общей) шиной (aka busmastering), не было буферов размером более одного байта. Вот тогда и существовала железка, имевшая четыре канала и служившая посредником между (примитивной) периферией и оперативной памятью. А сейчас такая железка просто не нужна: массовый басмастеринг в писюковой периферии появился к середине девяностых, а приличных размеров буферы - ещё раньше. Сегодняшние процессоры гоняют байтовые массивы при помощи SIMD команд и умеют эффективно пересылать невыровненные данные. И нет железки, которая сделает эту работу быстрее процессора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 19:51 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMAДля RAM -> Device (видеокарточка) DMA же не сводит профит к 0. И быстрее на 20%, и процессор не загружает."Когда вы говорите, Иван Васильевич ..." (ц) одна популярная комедия. Т.е. тесты врут и в BestPractice от nVidia ошиблись и DMA-пересылка RAM -> Device (видеокарточка) медленнее чем это делает CPU? Basil A. SidorovDMA-контроллер, о котором вы бредите, это такая железка, которая существовала во времена жесточайшей экономии активных элементов в архитектуры IBM PC - не было периферийных устройств, умеющих управлять (общей) шиной (aka busmastering), не было буферов размером более одного байта. Вот тогда и существовала железка, имевшая четыре канала и служившая посредником между (примитивной) периферией и оперативной памятью. А сейчас такая железка просто не нужна: массовый басмастеринг в писюковой периферии появился к середине девяностых, а приличных размеров буферы - ещё раньше. Я лишь копирую цитаты из Intel, а вы называете это бредом. Уже писал вам про Intel IO AT, но научу вас пользоваться википедией. http://en.wikipedia.org/wiki/I/O_Acceleration_Technology] http://en.wikipedia.org/wiki/I/O_Acceleration_Technology авторI/O Acceleration Technology (I/OAT) is a DMA engine by Intel bundled with high-end server motherboards, that offloads memory copies from the main processor. http://www.intel.ru/content/www/ru/ru/wireless-network/accel-technology.html] http://www.intel.ru/content/www/ru/ru/wireless-network/accel-technology.html Модератор: спокойнее пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 04:17 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMA, Дык чего ж вы тогда спрашиваете есть ли такая возможность, когда в ссылке которую вы привели прямо написано что поддержка IOAT (включая прикрепление страниц вирт. памяти на время операции) добавлена в Линуксе начиная с 2.6.18 и в Винде с 2003sp1 (2006). Только я вот думаю, что эта фича доступна только в режиме ядра, но не юзерскому коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 09:41 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТолько я вот думаю, что эта фича доступна только в режиме ядра, но не юзерскому коду. угу http://communities.intel.com/thread/30456 авторNote also, that next Windows Server version (2012) will not support NetDMA and DCA, so I/OAT will become mostly useless. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 10:23 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyRAM-RAM через DMA, Дык чего ж вы тогда спрашиваете есть ли такая возможность, когда в ссылке которую вы привели прямо написано что поддержка IOAT (включая прикрепление страниц вирт. памяти на время операции) добавлена в Линуксе начиная с 2.6.18 и в Винде с 2003sp1 (2006). Только я вот думаю, что эта фича доступна только в режиме ядра, но не юзерскому коду. Вот мне и интересно почему в Win2003SP1 ввели поддержку NetDMA, а в Win2012 отменили, говорит ли это о том, что есть более эффективные вещи? Помимо этого мне интересно использовал ли кто-то фичи IOAT, не обязательно NetDMA (It's typically used for accelerating network traffic, but supports any kind of copies ) или если есть подобные у AMD и получал ли от этого профит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 16:26 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAТ.е. тесты врут и в BestPractice от nVidia ошиблись и DMA-пересылка RAM -> Device (видеокарточка) медленнее чем это делает CPU? ... Я лишь копирую цитаты из Intel, а вы называете это бредом.Вы цитируете, не понимая смысла. Во всех ваших "примерах" с памятью общаются периферийные устройства. Обмен память-железка. В этом случае - да, пересылка под управлением ЦПУ менее эффективна, нежели пересылка под управлением самой железки. Но задача, которую вы решаете - другая. И в этой задаче нет места периферии. Просто потому, что пересылку память-память быстрее всех делает именно ЦПУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 11:35 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMAТ.е. тесты врут и в BestPractice от nVidia ошиблись и DMA-пересылка RAM -> Device (видеокарточка) медленнее чем это делает CPU? ... Я лишь копирую цитаты из Intel, а вы называете это бредом.Вы цитируете, не понимая смысла. Во всех ваших "примерах" с памятью общаются периферийные устройства. Обмен память-железка. В этом случае - да, пересылка под управлением ЦПУ менее эффективна, нежели пересылка под управлением самой железки. Но задача, которую вы решаете - другая. И в этой задаче нет места периферии. Просто потому, что пересылку память-память быстрее всех делает именно ЦПУ. Такое ощущение, что вы сами с собой разговариваете. Я в первом сообщении написал, что DMA RAM-RAM медленнее, и в чем смысл ваших выпадов убедить меня в этом же? :) Учимся читать: RAM->RAM через DMAПрименяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA? Может это будет быстрее или пусть даже чуть медленнее , но смысл в том, что можно заснуть на время копирования, отдав ядро другому потоку, сэкономив такты . Если конечно копируется достаточно большой объем . Если вы не поняли, то сэкономленные такты отдаются другим потокам и как вы думаете это сказывается на производительности всего приложения в целом? Обмен памяти с какой периферийной железкой производит интеловская функция async_memcpy.c ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 16:25 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAОбмен памяти с какой периферийной железкой производит интеловская функция async_memcpy.c ?Замечание про "не понимая смысла" остаётся в силе: Код: sql 1. P.S. Укажите, кто (кроме ЦПУ) умеет (быстро или медленно) копировать память-память и мы продолжим обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 16:13 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMAОбмен памяти с какой периферийной железкой производит интеловская функция async_memcpy.c ?Замечание про "не понимая смысла" остаётся в силе: Код: sql 1. P.S. Укажите, кто (кроме ЦПУ) умеет (быстро или медленно) копировать память-память и мы продолжим обсуждение. Устройство называется 5000 Series Chipset DMA Engine, а технология называется внезапно! I/OAT. Это очевидно, что память не сама себя копирует, а делает это некий device (5000 Series Chipset DMA Engine). Что оно из себя представляет физически, я не знаю: отдельный чип или MMU/Uncore/IMC переехавшие вместе с северным мостом на один кристалл с CPU. Вы ответьте, что означают выделенные слова, здесь говориться, что копировать память-память может только CPU? http://en.wikipedia.org/wiki/Direct_memory_access DMA can also be used for " memory to memory " copying or moving of data within memory. DMA can offload expensive memory operations, such as large copies or scatter-gather operations, from the CPU to a dedicated DMA engine . An implementation example is the I/O Acceleration Technology . http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.73.9125 Most of the receive packet processing time [15] is spent in copying the data from kernel buffer to user buffer . ... I/OAT offloads this copy operation with an additional DMA engine. Вы как думаете, что это за устройство, которое ускоряет "сетевой" обмен между двумя виртуальными серверами расположенными на одном физическом сервере? Очевидно, что тупым копированием не должно заниматься такое сложное устройство как ядро CPU. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 18:01 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAОчевидно, что тупым копированием не должно заниматься такое сложное устройство как ядро CPU. а в Майкрософт почему-то решили иначе. Значит - неочевидно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 18:08 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
ИзопропилRAM-RAM через DMAОчевидно, что тупым копированием не должно заниматься такое сложное устройство как ядро CPU. а в Майкрософт почему-то решили иначе. Значит - неочевидно В майкрософт решили не использовать NetDMA, не очевидно что они отказались от копирования DMA память-память, может они теперь делают это используя другое/по другому названное устройство? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 18:20 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAУстройство называется 5000 Series Chipset DMA Engine, а технология называется внезапно! I/OAT."I/O Acceleration (Intel(R) I/OAT)". Вам абревиатуру I/O расшифровать? Это первое. А второе - если вас смущает "memory hub", то приведите тот кусок спецификации из которого явствует, что "5000 Series Chipset DMA Engine" предназначен для копирования память-память.Вы ответьте, что означают выделенные слова, здесь говориться, что копировать память-память может только CPU?Разницу между "также может использоваться для" и "используется для" - улавливаете?Most of the receive packet processing time is spent in copying the data from kernel buffer to user buffer А вот это - вообще пальцем в небо. Написано, что копирование данных из буферов ядра в пользовательскую память процессора требует много времени. Ну так это общеизвестно. В IP-стеке с давних есть функции, позволяющие использовать память процесса в качестве "ядрёных буферов" и прочие оптимизации. То, что интел реализовал какой-то из вариантов аппаратной поддержки - ну замечательно. И что? P.S. По асинхронному копированию вопросов, как я понимаю, больше нет? P.P.S. Весь современный ввод-вывод, включая обработку прерываний, может делаться "в память". Это всего лишь означает, что любая, сколько-нибудь современная железка, умеет отображать свои потроха на физических адреса. На работу оперативной памяти (хоть в пределах одного узла, хоть между разными узлами NUMA-системы) это никак не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 19:21 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovв пользовательскую память процессора требует много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 19:23 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВы ответьте, что означают выделенные слова, здесь говориться, что копировать память-память может только CPU?Разницу между "также может использоваться для" и "используется для" "Может использоваться" - значит можно взять и использовать, и НЕ значит, что сейчас не существует якобы выдуманного мною DMA контроллера (5000 Series Chipset DMA Engine), как вы утверждали. Раньше оно было особенно актуально из-за боттлнека в виде FSB и перегонять память вхолостую по ней было весьма медленно. Другой вопрос существуют ли сейчас задачи для передачи информации между виртуалками, в которых нет никаких физических устройств способных к busmastering, и где копирование является неплохим паттерном? Basil A. SidorovВ IP-стеке с давних есть функции, позволяющие использовать память процесса в качестве "ядрёных буферов" и прочие оптимизации. То, что интел реализовал какой-то из вариантов аппаратной поддержки - ну замечательно. И что? И как по вашему реализовано, так Net-(mapped on kernel buffer RAM)->-(DMA)->user buffer(RAM) или как? http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.73.9125 Most of the receive packet processing time [15] is spent in copying the data from kernel buffer to user buffer. In particular, the ratio of useful work done by the CPU to useless overheads such as CPU stalling for memory access or data movement, decreases as we go from 1 Gbps links to 10 Gbps links [17]. Especially for data movement operations, rather than waiting for a memory copy to finish, the host CPU can process other pending packets while the copy is still in progress. I/OAT offloads this copy operation with an additional DMA engine. This is a dedicated device which can perform memory copies. As a result, while the DMA is performing the data copy, the CPU becomes free to process other pending packets. For more details regarding this feature and its implementation please refer to [15, 17, 16]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 20:04 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMA"Может использоваться" - значит можно взять и использовать, и НЕ значит, что сейчас не существует якобы выдуманного мною DMA контроллера (5000 Series Chipset DMA Engine), как вы утверждали.Какой же вы трудный ... Я не утверждал, что не существует DMA/busmastering/etc. Я утверждал, что область применения всего этого великолепия ограничена обменом между оперативной памятью и периферийным устройством. В частности, всё, что вы упоминали предназначено для обеспечения нормальной работы высокоскоростных и/или многопортовых сетевых карт. Ничто из перечисленного вами не может использоваться для обмена между двумя участками оперативной памяти.И как по вашему реализовано, так Net-(mapped on kernel buffer RAM)->-(DMA)->user buffer(RAM) или как?Железка обменивается с физическими адресами. Примите это как факт. IP-стек предоставляет (ограниченную) возможность отобразить некоторый участок виртуального адресного пространства процесса на физическую память. Плюс механизм оповещения о завершении обмена с периферийным устройством. Так вот, в вашей цепочке: 1. (DMA) находится не в том месте; 2. Вообще не относится к делу, т.к. представляет собой несущественные (аппаратные) детали процесса обмена между периферией и ОЗУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 15:42 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
http://en.wikipedia.org/wiki/Direct_memory_access DMA can also be used for " memory to memory " copying or moving of data within memory. DMA can offload expensive memory operations, such as large copies or scatter-gather operations, from the CPU to a dedicated DMA engine . An implementation example is the I/O Acceleration Technology . Basil A. Sidorov "также может использоваться для" Basil A. Sidorov не может использоваться для обмена между двумя участками оперативной памяти. Так вы определитесь то может, то не может, капризный какой. В википедии врут что I/OAT может использоваться для memory to memory? Basil A. SidorovIP-стек предоставляет (ограниченную) возможность отобразить некоторый участок виртуального адресного пространства процесса на физическую память. Отобразить некоторый участок виртуального адресного пространства процесса на физическую память - это делает MMU оперируя PTE и кэшируя их в TLB, и IP-стек тут абсолютно не причем. Basil A. SidorovТак вот, в вашей цепочке: 1. (DMA) находится не в том месте; Ну так скажите где он должен быть, вы вообще о нем не упомянули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 16:15 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAВ википедии врут что I/OAT может использоваться для memory to memory?Если мы об одной и той же статье, то в вики такого нет - это ваши собственные домыслы.Отобразить некоторый участок виртуального адресного пространства процесса на физическую память - это делает MMU оперируя PTE и кэшируя их в TLB, и IP-стек тут абсолютно не причем.Вы опять ничего не поняли ... И MMU и PTE и TLB - детали аппаратной реализации, которые никак не решают проблемы: 1. Отобразить заданный виртуальный адрес на заданный физический; 2. "Объяснить" железке, что передача данных начинается с заданного физического адреса; 3. "Оповестить" приложение, что обмен завершён; 4. Предоставить все эти возможности приложению, не имеющему ни нужных привилегий, ни знаний не то, что о железке - об архитектуре сетевой подсистеме и об особенностях работы с драйверами устройств.Ну так скажите где он должен быть, вы вообще о нем не упомянули.Несущественная деталь, поэтому и не упомянул. DMA - часть железки, поэтому, как максимум будет: "Net -> DMA", а правильно - "Hardware (with DMA) -> RAM -> API" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 18:20 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Вообщем вы мне скажите, я правильно понял: 1. Давно было так, Net-hardware маппился на физические адреса kernel-buffer, а копирование kernel-buffer -> user-buffer делал CPU (было медленно из-за медленной FSB) 2. С появлением I/OAT, Net-hardware маппился на физические адреса kernel-buffer, а копирование kernel-buffer -> user-buffer делал DMA engine (преодолели ограничение FSB) 3. С переносом северного моста на один кристалл с CPU, в DMA отпала необходимость, т.к. исчезла FSB, DMA лишь добавлял задержку, а копирование kernel-buffer -> user-buffer с помощью CPU позволяло заодно и кэшировать в LLC. Да и ядер стало много и загружается не весь CPU, а только одно ядро (1/4 - 1/8) CPU. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 03:45 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Нет, неправильно вы поняли. Есть две основные (и взаимоисключающие) схемы работы с железками в IBM PC (в хронологическом порядке): 1. Порты ввода-вывода 2. Отображение на память Есть прямой доступ к памяти (тот самый DMA) - это способность железки управлять обменом с памятью без участия процессора. Последнее тысячелетие, практически любое железо умеет и прямой доступ и отображение на память. Есть различные API позволяющие управлять процессом отображения физический адресов на виртуальные - и API уровня ядра и API прикладного уровня. Одна из целей разработки таких API - минимизировать копирование данных между адресными пространствами ядра и (пользовательских) процессов. И есть, наконец, процедура копирования невыровненных байтовых массивов. Оптимизированная общая версия такой процедуры содержит сдвиги и лучше процессора никто её не выполнит. По крайней мере, пока не встроят нужный функционал прямо в чипы памяти. Возвращаясь к вашему желанию копировать данные между узлами NUMA, я бы хотел напомнить, что желания подгоняют под действительность, а не наоборот. В частности, если у вас нет эффективного способа минимизировать обмен данными между узлами, то не исключено, что оптимальным окажется вариант обсчёта всех данных на одном узле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 18:58 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНет, неправильно вы поняли. Есть две основные (и взаимоисключающие) схемы работы с железками в IBM PC (в хронологическом порядке): 1. Порты ввода-вывода 2. Отображение на память Есть прямой доступ к памяти (тот самый DMA) - это способность железки управлять обменом с памятью без участия процессора. Последнее тысячелетие, практически любое железо умеет и прямой доступ и отображение на память. Ок. Пару вопросов. 1. В следующей цитате, возможно имеется ли ввиду отображение железки на память и куда, на kernel buffer? 2. Имеется ли ввиду DMA-копирование с этой отображенной на память железки в память user buffer? http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.73.9125 Most of the receive packet processing time [15] is spent in copying the data from kernel buffer to user buffer . ... I/OAT offloads this copy operation with an additional DMA engine. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 20:02 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMA1. В следующей цитате, возможно имеется ли ввиду отображение железки на память и куда, на kernel buffer?Никуда. Железка обменялась данными с памятью - это физические адреса. Программы (ядрёные или нет - неважно) работают в пространстве виртуальных адресов. Если ядрёные и пользовательские адреса отображаются на один и тот же участок физической памяти - возникают проблемы безопасности, разграничения доступа и т.п. Если на разные - требуется копировать данные, что накладно. Соответственно, под некоторые задачи делается API, которое "и волки сыты и овцы цели и пастуху - вечная память" :)2. Имеется ли ввиду DMA-копирование с этой отображенной на память железки в память user buffer?Нет - железка ничего не знает о виртуальных адресах. Железка передаёт данные из "своего" адресного пространства в физическую память, всё остальное - на усмотрение операционной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2013, 17:22 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMA1. В следующей цитате, возможно имеется ли ввиду отображение железки на память и куда, на kernel buffer? Никуда . Железка обменялась данными с памятью - это физические адреса. Программы (ядрёные или нет - неважно) работают в пространстве виртуальных адресов. Если ядрёные и пользовательские адреса отображаются на один и тот же участок физической памяти - возникают проблемы безопасности, разграничения доступа и т.п. Если на разные - требуется копировать данные, что накладно. Соответственно, под некоторые задачи делается API, которое "и волки сыты и овцы цели и пастуху - вечная память" :)2. Имеется ли ввиду DMA-копирование с этой отображенной на память железки в память user buffer?Нет - железка ничего не знает о виртуальных адресах. Железка передаёт данные из "своего" адресного пространства в физическую память, всё остальное - на усмотрение операционной системы. Ок. Значит в следующей цитате: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.73.9125 Most of the receive packet processing time [15] is spent in copying the data from kernel buffer to user buffer . ... I/OAT offloads this copy operation with an additional DMA engine. Железка(сетевуха) никуда не отображается. И железка передаёт данные из "своего" адресного пространства в физическую память, которые не являются ни kernel-buffer, ни user-buffer, но непонятно зачем тогда они упомянуты в цитате :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2013, 18:35 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAЖелезка(сетевуха) никуда не отображается.Вообще-то - отображается.И железка передаёт данные из "своего" адресного пространства в физическую память, которые не являются ни kernel-buffer, ни user-buffer, но непонятно зачем тогда они упомянуты в цитате :)Бессмысленно передавать данные в никому недоступную память. Пространства ядра и процесса (традиционно) различают на уровне операционной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2013, 18:54 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMA1. В следующей цитате, возможно имеется ли ввиду отображение железки на память и куда, на kernel buffer? Никуда . Basil A. SidorovRAM-RAM через DMAЖелезка(сетевуха) никуда не отображается.Вообще-то - отображается . Она отображается в никуда? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2013, 19:26 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
RAM-RAM через DMAОна отображается в никуда? :)Она (железка) занимает определённый диапазон (физических) адресов. И в этом смысле она (железка) - никуда не отображается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2013, 19:55 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovRAM-RAM через DMAОна отображается в никуда? :)Она (железка) занимает определённый диапазон (физических) адресов. И в этом смысле она (железка) - никуда не отображается. Basil A. SidorovВообще-то - отображается . А как переводится mapped - отображаться? http://lkml.indiana.edu/hypermail/linux/kernel/1105.0/00958.html mapped the mmio The async_tx api only supports memory-to-memory transfers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2013, 21:41 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Задолбало уже, честно говоря. Читайте организацию памяти. Виртуальные адреса, физические, механизмы трансляции ... Мысленно поработайте диспетчером виртуальной памяти - картинка должна сложиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 02:54 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЗадолбало уже, честно говоря. Читайте организацию памяти. Виртуальные адреса, физические, механизмы трансляции ... Мысленно поработайте диспетчером виртуальной памяти - картинка должна сложиться. Ну у меня тогда будет такое же понимание насчет отображения, как и у вас? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 03:59 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Мля ... Есть адресное пространство, (частично) занятое оперативной памятью и периферийным оборудованием. Передавать данные между адресными пространствами периферии и ОЗУ можно и при помощи процессора и при помощи самих периферийных железок. Передавать данные между разными областями ОЗУ может только процессор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:29 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovПередавать данные между разными областями ОЗУ может только процессор если железка умеет читать и писать в RAM без участия процессора, можно заставить её заняться копированием основной памяти. топикстартер уже третью страницу пытается выяснить, почему подобная возможность не особо популярна на практике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:40 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Изопропилесли железка умеет читать и писать в RAM без участия процессора, можно заставить её заняться копированием основной памяти.Ещё, блин, один писатель ... Все они (железки) умеют обмениваться с памятью в обоих направлениях. Тока, блин, для обмена память-память эта способность нифига не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:44 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovТока, блин, для обмена память-память эта способность нифига не помогает. не помогает и не может - есть разница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:46 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Изопропилне помогает и не может - есть разницаА подумать? Если изначально железка неспособна передавать данные память-память, то чем ей поможет способность читать-писать данные из/в памяти? Даже в клёпанном (если правильно помню маркировку) 8259 обмен память-память требовал задействовать два канала. Причём без гарантии, что ероплан полетит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:55 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, железка может инициировать ДВЕ транзакции - память-> шина-> устройство и устройство->шина->память нужно это кому или нет - не обсуждаем. P.S. 8259 - это контроллер прерываний DMA занимался 8237 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 19:28 |
|
||
|
Применяется ли в C/C++ для std::copy/memcpy копирование RAM->RAM через DMA?
|
|||
|---|---|---|---|
|
#18+
На вопрос, почему в в C/C++ для std::copy/memcpy не применяется DMA ответ был дан еще во втором посте этого топика. Более ничего относящегося к языкам С и С++ не прозвучало. Ругаться о железе идите в соответствующий форум. Здесь весь этот спор не нужен и бессмыслен. Закрываем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 19:55 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2020383]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 561ms |

| 0 / 0 |
