Добро пожаловать в сеть Intel® Software Network вход | зарегистрироваться | помощь |
Поиск в форумах и блогах Intel® Software Network
в Вперед

Оптимизация пересылки данных в памяти

Последнее сообщение 11-14-2007, 12:55 размещено Vadim S.. Ответов - 3.
Сортировать сообщения: Назад Вперед
 11-04-2007, 16:37 30220906  

Оптимизация пересылки данных в памяти

Из-за синхронизации ПК с аналоговым оборудованием,нужно достичь максимально возможной скорости пересылки данных из одной области памятив другую.(5-100Мб) В ПК стоит Intel Core2 Extreme
я пересылаю через генеральные регистры:
mov eax,dword[edx]
mov dword[ebx],eax
Возможно ли хоть както ускорить процесс пересылки? MMX-? SSE-?
 
 11-07-2007, 16:04 30220917 в ответ на30220906  

На: Оптимизация пересылки данных в памяти

1) используй DMA контроллер

2) rep movsd

3) делаешь цикл - 4 чтения в xmm регистры, затем 4 записи

 
 11-07-2007, 20:00 30220918 в ответ на30220906  

На: Оптимизация пересылки данных в памяти

Я обычно использую следующие:

push   esi

push   edi

mov   ecx, cnt_array   ;   Количество байтов

mov   esi,array1

mov   edi,array2

cld

shr   ecx,1

jnc   m1

movsb

m1:

shr   ecx,1

jnc   m2

movsw

m2:

rep   movsd

pop   edi

pop   esi

 

 
 11-14-2007, 12:55 30220934 в ответ на30220918  

На: Оптимизация пересылки данных в памяти

rep movsd будет быстро работать при условии выровненных адресов по кеш-линии (64 байта) и достаточно большого кол-ва данных. не помню точно - в optimization guide все указано. самый быстрый способ для больших объемов данных - чтение в xmm регистры и запись non-temporal store (movnta) в память, минуя кеш. это позволяет избавиться от загрузки данных из памяти в кеш и последующего сброса кеша в память при записи. опять же - это работает при условии выровненных на 16 байт адресов.


Vadim Sukhomlinov,
Intel, Enterprise Software Enabling
 
Просмотреть как поток новостей RSS в XML

Ярлыки


Тег для данного сообщения

...

Теги сообщества

...