45459 (Тест на быстродействие микропроцессора), страница 3

2016-07-31СтудИзба

Описание файла

Документ из архива "Тест на быстродействие микропроцессора", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "45459"

Текст 3 страницы из документа "45459"

б) процессор прекращает выполнять основную задачу;

в) происходит сохранение положения, на котором остановилась основная программа;

г) выполняется прерывание;

д) процессор восстанавливает запомненное состояние;

е) продолжает выполнение основной задачи.

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

Решение: во время вычисления больших объёмов информации можно запретить некоторые аппаратные прерывания ниже 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


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

УМНОЖЕНИЕ

Введенное знвчение

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

§10. Выводы

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

Проанализируем для каждого из двух случаев:

Сложение.

При применении языка Assembler рост производительности наблюдается от 10 итераций до 25000 и дальше стремиться к постоянному значению равному ~3,7. Даже такое увеличение производительности заметно скажется на работе некоторых приложений, использующих большие вычисления.

Умножение.

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

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

Проанализируем порядок выполнения операции на языке Pascal, чтобы найти так называемые «лишние» действия.

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

Как следствие всех этих операций много времени затрачивается на пересылку данных в регистры для совершения соответствующих операций и возвращение их обратно.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее