Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ-2-MMX_.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
295.94 Кб
Скачать

2Порядок выполнения работы

  1. Изучить процедуры вычислений выражений над массивами вариантов 1-4 с помощью команд MMX, описанных в процедурах MMX_1 – MMX_4 соответственно.

  2. Разработать программу для решения задачи в соответствии с вариантом задания без использования команд MMX.

  3. Используя команду RDTSC определить время исполнения вычислительного процесса с применением команд ММX и без. Найти среднее время для 1000 повторений кода программы.

  4. Исследовать зависимость времени каждого варианта от размерности массивов. Результаты вывести в виде таблицы и графика.

4. Процедуры вычисления выражений.

procedure MMX_1;

label l;

var k:integer;

begin

k:=n div 8;

if (k mod 8)>0 then inc(k);

asm

mov ecx,k

xor esi,esi

@l:

movq mm0, qword ptr b+[esi];

paddb mm0, qword ptr c+[esi];

paddb mm0, qword ptr d+[esi];

movq qword ptr a+[esi],mm0

add esi,8

loop @l

emms

end;

end;

procedure MMX_2;

var k:integer;

zero:array[0..7]of byte;

i:integer;

begin

k:=(n div 4);

for i:= 0 to 7 do

zero[i]:=0;

asm

mov ecx,k

xor esi,esi

xor edi,edi

movq mm2, qword ptr zero

@l:

movq mm1, qword ptr c+[esi]

punpcklbw mm1,zero;

movq mm0, qword ptr b+[esi];

punpcklbw mm0,zero;

pmullw mm0, mm1;

movq qword ptr +e[edi],mm0

add esi,4

add edi,8

loop @l

emms

end;

end;

procedure MMX_3;

label l;

var k:integer;

begin

k:=n div 8;

if (k mod 8)>0 then inc(k);

asm

mov ecx,k

xor esi,esi

@l:

movq mm0, qword ptr b+[esi];

paddb mm0, qword ptr c+[esi];

psubb mm0, qword ptr d+[esi];

movq qword ptr a+[esi],mm0

add esi,8

loop @l

emms

end;

end;

procedure MMX_4;

var k:integer;

cc:array[0..7]of byte;

zero:array[0..7]of byte;

i:integer;

begin

k:=(n div 4);

for i:= 0 to 3 do

begin

cc[i*2]:=x;

cc[i*2+1]:=0;

zero[i]:=0;

end;

asm

mov ecx,k

xor esi,esi

xor edi,edi

movq mm1, qword ptr cc

movq mm2, qword ptr zero

@l:

movq mm0, qword ptr b+[esi];

punpcklbw mm0,zero;

pmullw mm0, mm1;

movq qword ptr +e[edi],mm0

add esi,4

add edi,8

loop @l

emms

end;

end;

3Содержание отчета

  1. Постановка задачи

  2. Методика измерения времени

  3. Алгоритм работы программы

  4. Текст программы

  5. Результаты экспериментов

  6. Выводы.

4Контрольные вопросы

  1. Для чего используется MMX-расширение процессора Pentium?

  2. В каких случаях целесообразно использовать MMX-расширение, а в каких нет?

  3. Как с помощью MMX-расширения умножить массив байт на байт и получить правильный 2-х байтовый результат?

  4. Для чего нужны команды упаковки и распаковки?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]