Эксперимент по вычислению инструкций RPI в секунду - PullRequest
0 голосов
/ 15 декабря 2018

В онлайн-курсе, который я беру, мне дано задание экспериментировать, чтобы определить количество инструкций в секунду, которое Raspberry Pi выполняет, мигая светодиодом с кодом ниже.По моей оценке, один внешний цикл повторяется в 16 616 072 раза (что в два раза больше 0x7e0000), поскольку у нас есть два внутренних цикла с задержкой.Я использовал таймер, чтобы оценить, что для одного внешнего цикла требуется 1,55 секунды (один цикл мигания светодиода).За это время RPI выполняет примерно такое же количество инструкций, как итерации (количество команд не во внутреннем цикле незначительно).Поэтому 16 616 072 / 1,55 = 10 654 885 инструкций в секунду.

Я считал subs r2, #1 основной выполняемой инструкцией.Я не считал bne wait1.Считается ли это инструкцией?

Точно ли я рассчитываю инструкции в секунду?

.equ DELAY, 0x7e0000

// configure GPIO 20 for output
ldr r0, FSEL2
mov r1, #1
str r1, [r0]

// set bit 20
mov r1, #(1<<20)

loop: 

// set GPIO 20 high
ldr r0, SET0
str r1, [r0] 

// delay
mov r2, #DELAY
wait1:
    subs r2, #1
    bne wait1

// set GPIO 20 low
ldr r0, CLR0
str r1, [r0] 

// delay
mov r2, #DELAY
wait2:
    subs r2, #1
    bne wait2

b loop

FSEL0: .word 0x20200000
FSEL1: .word 0x20200004
FSEL2: .word 0x20200008
SET0:  .word 0x2020001C
SET1:  .word 0x20200020
CLR0:  .word 0x20200028
CLR1:  .word 0x2020002C
...