
- •Севастопольский национальный университЕт ядерной энергии и промышленности инструктивно-методические указания для проведения лабораторного занятия №2
- •Заведующий кафедрой кс
- •Лабораторное занятие №2
- •1Теоретический раздел
- •2.1 Модель целочисленного mmx-расширения
- •2.3 Особенности команд mmx-расширения
- •2.4 Команды пересылки
- •1.1Команды сложения и вычитания
- •1.2Команды умножения
- •1.3Команды сравнения
- •1.4 Команды логических операций
- •1.5Команды сдвига
- •1.6Команды упаковки и распаковки
- •2Порядок выполнения работы
- •4. Процедуры вычисления выражений.
- •3Содержание отчета
- •4Контрольные вопросы
2Порядок выполнения работы
Изучить процедуры вычислений выражений над массивами вариантов 1-4 с помощью команд MMX, описанных в процедурах MMX_1 – MMX_4 соответственно.
Разработать программу для решения задачи в соответствии с вариантом задания без использования команд MMX.
Используя команду RDTSC определить время исполнения вычислительного процесса с применением команд ММX и без. Найти среднее время для 1000 повторений кода программы.
Исследовать зависимость времени каждого варианта от размерности массивов. Результаты вывести в виде таблицы и графика.
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Содержание отчета
Постановка задачи
Методика измерения времени
Алгоритм работы программы
Текст программы
Результаты экспериментов
Выводы.
4Контрольные вопросы
Для чего используется MMX-расширение процессора Pentium?
В каких случаях целесообразно использовать MMX-расширение, а в каких нет?
Как с помощью MMX-расширения умножить массив байт на байт и получить правильный 2-х байтовый результат?
Для чего нужны команды упаковки и распаковки?