Лекция: Представить алгоритм определения производительности работы ЦП по тестируемой команде

Программа измерения производительности и быстродействия компьютера.

 

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

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

Полный цикл * Пустой цикл

Производительность = ---------------------------

Пустой цикл — Полный цикл

 

Быстродействие = --------------------

Производительность

 

 

Алгоритм.

 

1. Для того, чтобы замер получился точным, производим запрет всех прерываний кроме таймера.

2. Получаем и сохраняем для последующего использования адрес прерывания Int 8h.

3. Устанавливаем свой вектор прерывания таймера Int 8h.

4. Проверяем некоторую переменную, которая изменяется в собственном обработчике Int 8h, означающую запуск измерений.

5. После запуска измерений начинает работу цикл, который увеличивает на 1 счетчик пустых циклов.

6. После отсчета собственным обработчиком прерываний от таймера 18 тиков (18 тиков = 1 сек.), он передает управление циклу с командой XOR, который в свою очередь увеличивает на 1 счетчик полных циклов.

7. Когда проходит секунда, обработчик передает управление на подпрограмму вычисления производительности и быстродействия, которые вычисляются по вышеприведенным формулам.

Программа выдает результаты вычислений с точностью до сотой доли.

8. Затем восстанавливается старый адрес прерывания Int 8h и проис-

ходит выход в DOS.

 

///////////////ANOTHER metod

 

Алгоритм определения производительности по тестируемой комманде**chstota proceccorov

 

4. НАЧАЛО

5. Вводим частоту процессора тестируемого компьютера в МГц в переменную f

6. f := f*1000000

7. засекаем текущее время и переводим его в секунды, и сохраняем в переменной T1

8. В цикле от 1 до 1000000000 выполняем тестируемую команду.

9. засекаем время и переводим его в секунды, и сохраняем в переменной T2

10. находим TimeTest1 := T2 – T1

11. засекаем текущее время и переводим его в секунды, и сохраняем в переменной T3

12. Выполняем пустой цикл от 1 до 1000000000 (для определения времени выполнения цикла)

13. засекаем время и переводим его в секунды, и сохраняем в переменной T4

14. находим TimeTest2 := T4 – T3

15. находим число операций выполненных за 1 секунду Oper := 1000000000/(TimeTest1 – TimeTest2)

16. находим число тактов необходимое для выполнения команды: NumTakt := f/Oper

17. КОНЕЦ

 

еще рефераты
Еще работы по информатике