Написать подпрограмму getperf, приминающую в регистрах a0, a1, a2 три параметра:

  1. Период срабатывания прерывания по таймеру
  2. Количество выполняемых инструкций (по версии CSR instret)

  3. Адрес callback-подпрограммы, вызываемой из обработчика прерывания. Гарантируется, что callback-подпрограмма не меняет регистров общего назначения (кроме ra и регистров математического сопроцессора)

Также написать сам обработчик прерывания, который будет вызывать callback-подпрограмму. Вызов getperf должен устанавливать прерывание по таймеру с соответствующим периодом и выключать его по возможности сразу после выполнения указанного количества инструкций. В результате можно будет с небольшой точностью оценить быстродействие RARS.

1000000
10
1000000
10
1000000
10
1000000
10
1000000
10
1000000
10
1000000
10
0

1

Подсказка: в моём решении getperf включает прерывания по таймеру обработку ловушек, затем в цикле проверяет, не перевалило ли количество выполненных с момента включения прерывания инструкций за указанное число, затем запрещает обработку ловушек.


CategoryHomework

LecturesCMC/ArchitectureAssembler2024/Homework_MeasurePerf (последним исправлял пользователь ArtemM 2024-04-17 01:46:33)