С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Что-то типа того. Но после этого исполняется два раза INC R1, вот это номер. Тут еще эффект связан если последующие команды не нарушают предвыборки, т.е. состоят из одного слова.
---------- Post added at 13:00 ---------- Previous post was at 12:59 ----------
Любая команда, нарушающая принцип предвыборки.
Гениально!
Вот любопытная модификация проведённого теста:
MovB перед записью ещё раз читает ячейку, не добавит ли это дополнительных глюков..Код:Clr R1 Clr R2 Clr R3 MovB (PC),(PC) Inc R1 Inc R2 Inc R3 Jmp @#1000 .Word 2000 .Word 3000
---------- Post added at 12:06 ---------- Previous post was at 12:04 ----------
Но если эта команда сама использует сбитый счётчик - она скорее вынесет в Trap_To_4, чем спасёт. А из всех команд, нарушающих предвыборку - только BR не использует ни одного счётчика ( или ошибаюсь? ).
---------- Post added at 12:21 ---------- Previous post was at 12:06 ----------
Ещё один вариант:
Код:Clr R1 Clr R2 Clr R3 Mov (PC),R0 Mov (PC),R0 Inc R1 Inc R2 Inc R3 Jmp @#1000 .Word 2000 .Word 3000
Ну вот собственно и ответ:Скрытый текст
[свернуть]
---------- Post added at 19:15 ---------- Previous post was at 18:52 ----------
Глюков здесь нет, все в пределах нормы. Т.к. эта команда делает запись по адресу предвыборки, то все сбрасывается и начинается сначала.
Скрытый текст
[свернуть]
---------- Post added at 19:26 ---------- Previous post was at 19:15 ----------
Это тот вариант, что я описывал. Количество команд MOV @PC,R0 роли не играет.
Скрытый текст
[свернуть]
Последний раз редактировалось Alex_K; 16.02.2019 в 23:26.
Получается, что запись следующей ячейки после команды занимает весьма разное время при адресации относительно PC и относительно любого другого регистра:
Код::::::: SP = PC :::::: Mov R0, (PC) 47 Mov R0, (SP)+ 85
---------- Post added at 18:34 ---------- Previous post was at 18:32 ----------
На первый взгляд могло показаться, что в первом случае запись не происходит, однако последние тесты показали, что команда Mov R0, (PC) честно пишет в следующую ячейку, но просто делает это гораздо быстрее.
Два кода для анализа с результатами:
Скрытый текст
[свернуть]
---------- Post added at 20:16 ---------- Previous post was at 19:56 ----------
Еще интересный случай.
Скрытый текст
[свернуть]
Последний раз редактировалось Alex_K; 16.02.2019 в 23:30.
Супер!
Ну так если подытожить?
Там в двух позициях есть сомнительные результаты:
Во втором случае точно должно быть в 2 раза больше, а в первом - надо ещё проверить.
...
Специально для проверки первого пункта - более точный вариант линейного теста: MovPC2_v1.2
При первом запуске теста нужно ввести правильное значение частоты тестируемого процессора в килогерцах.
Результат запуска в эмуляторе ДВК выглядит так:
Где:Код:.RU MOVPC2 MovPC2 - v1.2 Memory Top: 137554 BUF words: 22867 CPU KHz: 5300 > 1: Nop Evt: 14 ; Run: 7557 ; Res: 7571 ; CLC: 14.0 1: Mov R0, R0 Evt: 14 ; Run: 7557 ; Res: 7571 ; CLC: 14.0 1: Mov R0, (PC) Evt: 5 ; Run: 2861 ; Res: 2866 ; CLC: 37.0 1: MovB R0, (PC) Evt: 5 ; Run: 2861 ; Res: 2866 ; CLC: 37.0 1: Mov (PC), R0 Evt: 6 ; Run: 3528 ; Res: 3534 ; CLC: 30.0 1: MovB (PC), R0 Evt: 6 ; Run: 3528 ; Res: 3534 ; CLC: 30.0 ::: SP = PC ::: 1: Mov R0, (SP)+ Evt: 4 ; Run: 2582 ; Res: 2586 ; CLC: 41.0 1: MovB R0, (SP)+ Evt: 4 ; Run: 2582 ; Res: 2586 ; CLC: 41.0 1: Mov (SP),(SP)+ Evt: 4 ; Run: 2161 ; Res: 2165 ; CLC: 49.0 1: MovB (SP),(SP)+ Evt: 4 ; Run: 2161 ; Res: 2165 ; CLC: 49.0 Program completed. .
Evt - Число тестируемых команд, выполнившихся за промежуток времени между началом и концом первого прерывания таймера.
Run - Число тестируемых команд, выполнившихся за промежуток времени между концом первого и началом второго прерывания таймера.
Res - Общее число тестируемых команд, выполнившихся между началом первого и началом второго прерывания таймера.
CLC - Подсчитанное число тактов.
...
В приложении два варианта теста - MovPC2_v1.1 выходит из первого прерывания таймера по RTI, а MovPC2_v1.2 - по BR.
...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)