Рефераты. Тест на быстродействие микропроцессора p> Пакет тестовых программ SPEC 95
Появление нового набора программ обусловлено развитием микропроцессоров
(повышение производительности и увеличением объёма внутрикристальной памяти), совершенствование компиляторов, стремление учесть требования стандартов открытых систем, атак же скорректированным после появления SPEC
92 представлением об актуальности различных областей приложения.
Современные процессоры выполняют решение тестов SPEC 92 в течение интервалов времени от одной до нескольких секунд, что вносит большие погрешности в измерения производительности. Объём кода программ и данных
SPEC 92 таков, что программы и данные могут разместиться в кэш памяти процессора. Это вообще не позволяет получить сколько-нибудь достоверные оценки реальной производительности.
Индексы производительности в SPEC 95 даются по отношению к эталонной машине SPARC-station 10/40 в конфигурации с кэш памятью второго уровня.
Используются два тестовых набора CINT 95 и CFP 95, состоящие из 8 и 10 программ соответственно.

Таблица 2. Перечень программ набора CINT


|Область приложения |Спецификация задачи |
|Моделирование |Моделирование кристалла Motorola 88100 |
|Компиляция |Компиляция программы на Си и компиляция |
| |оптимизированного кода для процессора SPARC |
|Искусственный интеллект |Игра Го – игра сама против себя |
|Компрессия |Компрессия текстового файла размером 16 Мбайт|
|Интерпретация |Lisp-интерпретатор |
|Обработка изображений |Сжатие графических объектов(JPEG) с |
| |различными параметрами |
|Манипулирование текстовыми |Shell-интерпретатор |
|строками | |
|Базы данных |Построение таблиц и манипулирование с ними |

При испытаниях компьютеров формируются:

. индексы производительности SPEC int 95, SPEC fp 95 и SPEC int base

95, SPEC fp base 95, для фиксированной и плавающей точки в оптимизированном режиме компиляции и без оптимизации соответственно.

. индексы пропускной способности SPEC int rate 95, SPEC fp rate 95 и

SPEC int rate base 95, SPEC fp rate base 95 для оценки многозадачных режимов и SMP архитектур при оптимизированном режиме компиляции и без оптимизации соответственно.
Все интегральные индексы производительности формируются как среднее геометрическое индексов по отдельным тестам.
Корпорация SPEC не даёт никаких рекомендаций по установления соответствия между значениями индексов SPEC 92 и ЫЗУС 95.

Таблица3. Перечень набора программ набора CFP

|Область приложения |Спецификация задачи |
|Гидродинамика, |Генерация двумерной координатной сетки в |
|геометрический аспект |произвольной области |
|Предсказание погоды |Моделирование водной поверхности методом конечных |
| |элементов (вещественная арифметика с одинарной |
| |точностью) |
|Квантовая физика |Вычисление масс элементарных частиц методом |
| |Монте-Карло |
|Астрофизика |Расчет межгалактических газов по уравнениям |
| |Навье-Стокса |
|Электромагнетизм |Расчет трехмерного поля потенциалов |
|Гидродинамика |Решение системы уравнений в частных производных |
|Моделирование |Моделирование турбулентности в кубическом объеме |
|Предсказание погоды |Вычисление статистики температур, воздушных потоков |
| |и уровней загрязнения |
|Квантовая химия |Порождение потока электронов |
|Электромагнетизм |Решение уравнения Максвелла |

§3. Недостатки существующих систем

1) При решении различных задач прикладными программами ресурсы микропроцессора расходуются зачастую неэкономно. В результате этого процессору приходится совершать огромное количество команд, которые могли быть заменены несколькими. Вина лежит не на программных продуктах, а на тех системах программирования, с помощью которых эти программы создавались.
Решение: создавать средства для создания программ максимально эффективным способом, обращая внимание на используемые процессором адресации и размещение данных.
2) На быстродействие так же влияет и то, какое напряжение подаётся на микропроцессор. При большом напряжении происходит нагрев процессора. В результате этого основа, на которой размещаются транзисторы, начинает греться и, соответственно он выходит из строя.
Решение: расстояние между транзисторами необходимо уменьшить. На сегодняшний день минимальную технологию изготовления имеют процессоры
Intel Pentium 4, и она составляет 0,13 мкм (для сравнения: процессор AMD с архитектурой К7, тактовой частотой 1000Мгц имеет 0,18 мкм. Обычная температура работы ~ 65°С). Расстояние между транзисторами уменьшается, соответственно сопротивление, а отсюда они требуют меньшее энергопотребление – температура нагрева заметно снижается.
3) Тормозит работу процессора и то, что затрачивается много времени на обмен данными, которые находятся в постоянной памяти. И даже при небольших вычислениях микропроцессор обращается к ОЗУ за данными, а мог бы данные хранить в собственных регистрах
Решение: по возможности, часто используемые данные желательно размещать либо в регистрах процессора, либо в быстрой кэш-памяти. Многие компиляторы не заботятся о том, чтобы разместить данные так, чтобы наблюдалась максимальная скорость работы программы.
4) Так же скорость вычисления уменьшается из-за того, что процессору приходится останавливать свою работу и выполнять аппаратные прерывания.
Реакция процессора на прерывания: а) приходит прерывание; б) процессор прекращает выполнять основную задачу; в) происходит сохранение положения, на котором остановилась основная программа; г) выполняется прерывание; д) процессор восстанавливает запомненное состояние; е) продолжает выполнение основной задачи.
Надо заметить, что процессор тратит много времени на сохранение своего текущего состояния и восстановление.
Решение: во время вычисления больших объёмов информации можно запретить некоторые аппаратные прерывания ниже IRQ 0 (таймер). Запрещённые прерывания не будут останавливать процессор, соответственно скорость выполнения возрастёт. Недостатки: могут потеряться некоторые данные, например символы, которые вводятся с клавиатуры – прерывание IRQ 1.

§4. Алгоритм решения

Рассмотрим недостаток № 3. Затрачивание времени на обмен данными.

§5. Описание алгоритма


Блок 1-7. Подсчёт времени на выполнение выбранной операции на языке высокого уровня. В данном случае применяется язык Pascal.

Блок 1. Начало программы.
Блок 2. Вводятся два числа с клавиатуры.
Блок 3. Выбираем операцию из предложенных на экране. Если это операция сложения, то выполняется алгоритм суммирования ряда, если умножение, то выполняется вычисление факториала.
Ввели N, то рад сложения выглядит следующим образом:
1+2+3+…+N=СУММА
Умножения
1*2*3*…*N=ПРОИЗВЕДЕНИЕ
Блок 4. Включаем таймер и запоминаем начальное значение.
Блок 5. Выполняем выбранную операцию на Pascal.
Блок 6. Выключаем таймер и запоминаем считанное значение
Блок 7. Находим разницу между начальным значением времени и конечным

Блок 8-14. Подсчёт времени на выполнение выбранной операции на языке низкого уровня. Применяется язык Assembler.

Блок 8. Переменные, которые мы вводим с клавиатуры, находятся в памяти.
Чтобы начать вычисления мы должны из памяти (ОЗУ) поместить значения в регистры процессора. Это мы делаем до включения таймера, чтобы время, затраченное на это действие, не вошло в результат.
Блок 9. Считываем начальное значение времени.
Блок 10. Выполняем операцию
Блок 11. Считываем конечное время
Блок 12. Находим время выполнения операции – это разница между конечным значением и начальным.
Блок 13. Выводим значение времен на экран и делаем выводы.
Блок 14. Выход из программы.

§6. Листинг программы


Program Test_of_CPU_for_Zuev; uses crt; var vid:byte; t1,t2,NN:word; time1,time2:real;

Procedure Add_Pascal(N:word); {Сложение на Pascal} var i:word;

Summa:integer;
Begin

summa:=0; t1:=0; t2:=0; asm in al,40h mov bl,al in al,40h {Считываем начальное значение тиков от таймера} mov bh,al mov t1,bx end;

for i:=1 to N do summa:=summa+i; asm in al,40h mov bl,al {Конечное количество тиков} in al,40h mov bh,al mov t2,bx end;
Time1:=t1/(65536*18.2); time2:=t2/(65536*18.2); writeln('Время выполнения сложения на Pascal: ',(time2-time1):6:12); end;

Procedure Add_Asm(N:word); var i:word;

Proisv:integer;
Begin

t1:=0; t2:=0; asm in al,40h mov ah,al in al,40h xchg ah,al mov t1,ax

xor ax,ax xor dx,dx

@@q: {Выполняем сложение} inc dx add ax,dx loop @@q

in al,40h mov cl,al in al,40h mov ch,al mov t2,cx

end;
Time1:=t1/(65536*18.2); time2:=t2/(65536*18.2); writeln('Время выполнения сложения на Assembler: ',(time2-time1):6:12); end;

{=================================================================}
Procedure Mul_Pascal(N:word); {Умножение на Assembler} var i:word;

Proisv:integer;
Begin t1:=0;t2:=0; asm in al,40h mov bl,al in al,40h {Считываем начальное значение тиков от таймера} mov bh,al mov t1,bx end;

for i:=1 to N do proisv:=proisv*i; asm in al,40h mov bl,al {Конечное количество тиков} in al,40h mov bh,al mov t2,bx end;
Time1:=t1/(65536*18.2); time2:=t2/(65536*18.2); writeln('Время выполнения умножения на Pascal: ',(time2-time1):6:12); end;

Procedure Mul_Asm(N:word); var Proisv:integer;

Begin t1:=0; t2:=0; asm in al,40h mov bl,al in al,40h {Считываем начальное значение тиков от таймера} mov bh,al mov t1,bx

xor ax,ax xor bx,bx

@@q: {Выполняем сложение} inc dx mul dx loop @@q

in al,40h mov bl,al in al,40h {Конечное количество тиков} mov bh,al mov t2,bx end;

Time1:=t1/(65536*18.2); time2:=t2/(65536*18.2); writeln('Время выполнения умножения на Assembler: ',(time2-time1):6:12); end;


Begin clrscr;
{Определяем вид операции} textcolor(11);
Writeln('Сделайте выбор операции и нажмите клавишу ENTER:');
Writeln('1) Сложение');
Writeln('2) Умножение');
Readln(vid); textcolor(10);

Case vid of

1: begin write('Введите сумму ряда, не более 2-х байт (65535: )');

Readln(NN);

Writeln; textcolor(3);

Add_Pascal(NN);

Add_Asm(NN); end;

2: begin write('Введите произведение ряда, не более 2-х байт (65535:
)');

Readln(NN);

Writeln; textcolor(3);

Mul_Pascal(NN);

Mul_Asm(NN); end; end;

readln;
End.

§7. Описание программы

Программа написана на алгоритмическом языке Pascal. Состоит из двух блоков. В каждом блоке две процедуры: первая – это выполнение операции на языке Pascal, а вторая – выполнение этой же операции на языке Assembler.
Первый блок.
Состоит из двух процедур, которые выполняют сложение на языке Pascal и
Assembler. Производится суммирование ряда чисел. Измерение времени происходит с помощью микросхемы таймера 8253. Сначала считываем начальное число тиков, затем выполняем операцию и снова считываем число с микросхемы.
Разница, разделенная на произведение 65535*18,2 и будет временем выполнения операции. asm in al,40h mov bl,al in al,40h {Считываем начальное значение тиков от таймера} mov bh,al mov t1,bx end;


{Выполняем операцию}

asm in al,40h mov bl,al in al,40h {Конечное количество тиков} mov bh,al mov t2,bx end;

Time = t2-t1/(65536*18.2); {ВРЕМЯ ВЫПОЛНЕНИЯ ОПЕРАЦИИ}

Второй блок.
Аналогичен первому блоку, с той лишь разницей, что здесь выполняется другая операция – вычисление факториала.

§8. Экспериментальные данные


Для проведения эксперимента вводятся числа:
10;100;1000;5000;10000;15000;20000;25000;30000;35000;50000;60000;65000;

Данные вводятся как для суммирования ряда, так и для вычисления факториала.

§9. Полученные результаты

Все вычисления выполнялись на микропроцессоре AMD Athlon 1000 MHz
Средняя температура процессора при вычислении 64 °С

Вычисление суммы ряда.
|СЛОЖЕНИЕ |
|Введенное знвчение|Pascal |Assembler |
|10 |1,34143E-05 |1,84447E-05 |
|100 |1,67679E-05 |1,34143E-05 |
|1000 |4,19198E-05 |2,17983E-05 |
|5000 |0,000157618 |5,19805E-05 |
|10000 |0,000301822 |9,22234E-05 |
|15000 |0,000444349 |0,000132466 |
|20000 |0,00059023 |0,000171033 |
|25000 |0,000734434 |0,000211276 |
|30000 |0,000875284 |0,000249842 |
|35000 |0,001021165 |0,000290085 |
|50000 |0,001483959 |0,000410814 |
|60000 |0,001742185 |0,00050136 |
|65000 |0,001884712 |0,000528189 |

[pic]

Вычисление факториала.

|УМНОЖЕНИЕ |
|Введенное знвчение |Pascal |Assembler |
|10 |1,50911E-05 |1,34143E-05 |
|100 |2,85054E-05 |1,34143E-05 |
|1000 |0,000159295 |2,51519E-05 |
|5000 |0,000749525 |7,2102E-05 |
|10000 |0,001482282 |0,000132466 |
|15000 |0,002216716 |0,000191154 |
|20000 |0,002994747 |0,000251519 |
|25000 |0,003687261 |0,000338712 |
|30000 |0,00443511 |0,000368894 |
|35000 |0,005157806 |0,000429258 |
|50000 |0,007403028 |0,000608675 |
|60000 |0,00887525 |0,000727727 |
|65000 |0,009579501 |0,000786415 |

[pic]

§10. Выводы

Начиная анализировать полученные результаты, хотелось бы привести график роста производительности при увеличении числа итераций.

[pic]

Проанализируем для каждого из двух случаев:
Сложение.
При применении языка Assembler рост производительности наблюдается от 10 итераций до 25000 и дальше стремиться к постоянному значению равному ~3,7.
Даже такое увеличение производительности заметно скажется на работе некоторых приложений, использующих большие вычисления.
Умножение.
С умножением дело обстоит немного иначе: производительность резко увеличивается (от 1 до 10,3) при изменении числа итераций от 10 до 5000 и дальше выравнивается, стремясь к постоянному значению. Можно заметить, что даже при небольшом объеме вычисления наблюдается колоссальный рост производительности. По сравнению со сложением, производительность гораздо выше, хотя время выполнения этих операций в отдельности имеет несущественное различие, но при выполнении этих операций в цикле лидирующее положение занимает умножение.

При имеющихся у нас данных мы можем смело сделать выводы, что компилятор языка Pascal (и многих других языков программирования) расходует ресурсы микропроцессора неэкономно, тратя много времени на различные «лишние» действия, которые приводят, как мы заметили, к заметному снижению производительности.

Проанализируем порядок выполнения операции на языке Pascal, чтобы найти так называемые «лишние» действия.
Вводятся значения и располагаются в оперативной памяти компьютера. Далее мы должны выделить память, так же в ОЗУ, для переменной, в которой будет накапливаться результат (для нашего случая – сумма ряда, либо значение факториала). Затем при выполнении операции мы должны наши входные значения переписать в соответствующие регистры, выполнить операцию и вернуть значение обратно в память. Далее возвращённое значение потребуется для совершения следующей итерации – необходимо опять все значения из ОЗУ переписать в регистры и выполнить операцию и т.д.
Как следствие всех этих операций много времени затрачивается на пересылку данных в регистры для совершения соответствующих операций и возвращение их обратно.
В случае же с языком Assembler мы можем сами распорядиться тем, где хранить промежуточные данные, применяя при этом самую быструю регистровую адресацию, т.е. перемещая значения из одного регистра в другой и не тратя время на бесполезное сохранение промежуточных результатов в ОЗУ. К оперативной памяти обращение происходит всего лишь дважды: первый раз – считываем значения с клавиатуры в память, а затем из памяти в регистр; второй раз – возвращаем результаты в память для дальнейшего использования.
Но и этих операций можно избежать, считывая вводимые значения, если это предусмотрено алгоритмом программы, прямо в регистры, избегая попадания их в память. Ввод можно осуществить аналогично: данные из регистров поместить прямо на экран.

Сделаем окончательный вывод: на современных компьютерах, которые имеют почти безграничный потенциал для вычисления при использовании обычного программного обеспечения, применение описанного метода увеличения производительности скажется не так заметно, как хотелось бы. Но в недалёком будущем сложность программных продуктов будет расти, повысятся требования ко времени выполнения поставленных перед ПО задач, тогда производители языков программирования, в частности компиляторов, будут обязаны обращать внимание на такие тонкости как экономия времени при вычислении, будут экономнее и более качественно использовать ресурсы микропроцессорного оборудования.

§11. Список литературы

1) Юров В. «Assembler». Учебник — СПб.: Издательский дом «Питер», 2001 г.

624с.
2) Юров В. «Assembler: специальный справочник» — СПб.: Издательский дом

«Питер», 2001 г. 496с.
3) Корнеев В.В., Киселёв А.В. «Современные микропроцессоры» — М. «Нолидж»,

1998г. — 240с.
4) Джордейн Р. «справочник программиста персональных компьютеров тип IBM

PC, XT и AT: Пер. с англ. /Предисл. Н. В. Гайского. — М.: «Финансы и статистика», 1991 г. —544 с.
5) Пирогов В. Ю. «Assembler. Учебный курс». — М.: «Нолидж», 2001 г. — 848с.
-----------------------
[pic]

1

2

3

4

5

6

7

8

9

10

11

12

13

14


Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.