Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


L783M Rev.C - movsd

Вы не вошли.

 Поиск | Регистрация | Вход 

Андрей
16.12.2009 13:55:14
#1

Гость

L783M Rev.C - movsd

Доброго времени суток.

Из документации почерпнул следующую информацию:

1. "Только при работе с платой через память микросхема PCI9030 обеспечивает при чтении массивов так называемую предварительную выборку запрашиваемых данных (prefetching), что увеличивает скорость обмена до 10 Мб/с"

2. "С целью повышения эффективности работы при чтении/записи массивов в/из памяти РС нужно использовать ассемблерную конструкцию строкового чтения REP MOVSD"

При вычитывании данных из FIFO использую movsd:

int u0, u1, u2;
__asm__ __volatile__ (
    "cld                //n"
    "rep   movsd        //n"
    "testb $2,%b4       //n"
    "je    1f           //n"
    "movsw              //n"
    "1:                 //n"
    "testb $1,%b4       //n"
    "je    2f           //n"
    "movsb              //n"
    "2:                   "
    : "=&c" (u0), "=&D" (u1), "=&S" (u2)
    : "0" ((unsigned)(len)/4), "q" (len),
      "1" (dst),"2" (src)
    : "memory"
);

Данные считываются, однако при замере времени считывания 5600 значений получаю 2.6 мс. Хотя, по идее, время считывания должно быть ~ 0.5мс. В чем я ошибся?

Андрей
16.12.2009 13:57:18
#2

Гость

Re: L783M Rev.C - movsd

Убрал кавычки для повышения читабельности smile

int u0, u1, u2;
__asm__ __volatile__ (
    cld
    rep   movsd
    testb $2,%b4
    je    1f
    movsw
    1:
    testb $1,%b4
    je    2f
    movsb
    2:
    : =&c (u0), =&D (u1), =&S (u2)
    : 0 ((unsigned)(len)/4), q (len), 1 (dst),
      2 (src)
    : memory
);

16.12.2009 14:00:32
#3

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L783M Rev.C - movsd

должно быть ~1.1мс.... Как время измеряте? И кроме этого современные чипсеты иногда очень тормозные в таком режиме попадаются... В доке все приведено со времен Intel 440BX...

Андрей
16.12.2009 14:09:06
#4

Гость

Re: L783M Rev.C - movsd

Замеряю время в обработчике прерывания через  считывание счетчика clock cycle.

Перевожу полученное значение во времяч в пользовательском потоке.

Андрей
16.12.2009 14:32:00
#5

Гость

Re: L783M Rev.C - movsd

Действительно, с другой материнской платой время считывания стало 0.96 мс.

Благодарю за оперативность smile