Заблокирован
|
||||||
1 | ||||||
Memory shift или самый быстрый способ перемещения блока памяти30.10.2014, 18:45. Показов 5828. Ответов 50
Метки нет (Все метки)
Речь идёт о памяти DDR SDRAM. 1. Может есть специальные процессорные команды процессоров последних поколений для такого перемещения памяти? 2. Может есть специальный тип памяти, не который позволяет делать memory shift? 3. Может есть специальный тип процессора для этих целей? P.S. ассемблерный код приветствуется.
0
|
30.10.2014, 18:45 | |
Ответы с готовыми решениями:
50
Самый быстрый способ решения задачи a+b Самый быстрый способ дополнить вектор массивом Самый быстрый способ посчитать сумма элементов матрицы, находящихся в матрице Считать квадратную матрицу. Какой самый быстрый способ это сделать? |
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 19:36 | 2 |
memcpy() используй. На ассемблере rep movsd или rep movsq, если кратно 8.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
30.10.2014, 19:46 | 3 |
DMA (Direct Memory Access) по русски ПДП (Прямой Доступ к Памяти)
обращение идет минуя процессор https://ru.wikipedia.org/wiki/... п_к_памяти но сомневаюсь что то можно запустить с пользовательского уровня, только на уровне ядра Добавлено через 1 минуту опять ссылку на вику не показывает r u .wikipedia.org/wiki/Прямой_доступ_к_памяти вот еще http://habrahabr.ru/post/37455/
1
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 19:53 | 4 |
DMA для внешних устройств. Как это копировать поможет?
0
|
Заблокирован
|
|
30.10.2014, 19:54 [ТС] | 5 |
А есть какая -то специальная команда типа SHIFT? Чтоб блок памяти сдвинуть? Вроде должна быть
0
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 19:55 | 7 |
Я же тебе написал rep movsd. Одна команда. Перемещает блок по 4 байта.
0
|
Заблокирован
|
|
30.10.2014, 19:55 [ТС] | 8 |
По большому счёту меня не DMA интересует, а именно здвиг памяти в сторону так сказать в уже алоцированном блоке.
0
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
|
30.10.2014, 19:55 | 9 |
0
|
Заблокирован
|
|
30.10.2014, 19:57 [ТС] | 10 |
А ШИФТА нет для большого блока?
Добавлено через 13 секунд А на каких есть?
0
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 19:58 | 11 |
DMA - это когда видеокарта (например) обращается к ОЗУ минуя процессор. Я что-то упустил?
0
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
|
30.10.2014, 19:58 | 12 |
Да как это сдвинуть, память сама по себе не предназначена для этого, с памяти только копировать и вставить, процессор как бы не хотел но этого не сделает.
0
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 20:00 | 13 |
Архитектура памяти не позволит двигать "блоки", максимум по 8 байт за итерацию.
0
|
Заблокирован
|
|
30.10.2014, 20:01 [ТС] | 14 |
Вот по этому я и спрашиваю, нет ли в SDRAM какого -то специального механизма для этого?
Добавлено через 24 секунды но это не передвижения, а копирование, верно?
0
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 20:02 | 15 |
0
|
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
|
|
30.10.2014, 20:04 | 16 |
Это вопрос больше к памяти, позволяет ли она это делать, а это никто не может. Мысль я понял, но нет, онли read/write.
0
|
Заблокирован
|
|
30.10.2014, 20:05 [ТС] | 17 |
Обнулять не надо.
Дело в том, что копирование идёт через процессор, то есть ячейка памяти заносится регистры процессора, а оттуда обратно в по нужному адресу отправляется. А сдвиг - это без процессора, по крайней мере я под здвигом это так вижу. То есть просто допустим если была команда для контроллера памяти: 0x00000001 - shift на 2 и всё, вся память сдвинулась на две ячейки допустим вправо целиком, грубо говоря как при битовом сдвиге >>
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
30.10.2014, 20:10 | 18 |
ты конкретно
в частности да
как это можно использовать в 80х86( там действительно нет память- память) в современных видеокартах памяти не меньше чем на мамке вариант первый буфер данных разместить в видеокарте, там кстати и память шустрее одной посылкой копируем из памяти в видеокарту, второй с видеокарты в память, но уже в другое место второй вариант нужные данные держать на видеокарте нет память ничего сама не может, все снаружи делать приходится, даже помогать не забыть Добавлено через 1 минуту Это и есть DMA только на 80х86 нет команды память память
0
|
Заблокирован
|
|
30.10.2014, 20:10 [ТС] | 19 |
ТФУ ТЫ, а битовый сдвиг разве не то, что я ищу
Можно ли применить битовый сдвиг не к отдельной переменной, а к блоку памяти, допустим к int* data = new int[100] за одну команду ?
0
|
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,666
|
|
30.10.2014, 20:10 | 20 |
0
|
30.10.2014, 20:10 | |
30.10.2014, 20:10 | |
Помогаю со студенческими работами здесь
20
Каков самый быстрый способ узнать количество строк в оргомном текстовом файле в Windows? Наиболее быстрый способ сортировки файла в 1 Тб при ограниченном объёме оперативной памяти Самый быстрый способ склеивания строк Какой способ рисования самый быстрый? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |