User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 627

Тема: Расчёт точного времени выполнения команд различными процессорами архитектуры PDP-11.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Кстати, и никаких сенсаций.
    Там в двух позициях есть сомнительные результаты:





    Во втором случае точно должно быть в 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.

    ...
    Вложения Вложения

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,421
    Спасибо Благодарностей отдано 
    1,717
    Спасибо Благодарностей получено 
    2,246
    Поблагодарили
    883 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Там в двух позициях есть сомнительные результаты
    Если на этих командах процессор не перпрыгивает через команду вперед, то результаты должны быть корректны.

  4. #3

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Если на этих командах процессор не перпрыгивает через команду вперед, то результаты должны быть корректны.
    Играет роль какая команда после блока этих команд.

  5. #4

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Если на этих командах процессор не перпрыгивает через команду вперед, то результаты должны быть корректны.
    Во втором случае очевидно, что команда MOV (PC),(PC)+ именно перепрыгивает следующую и поэтому число "пройденных" слов нужно делить на 2.

    ...

    А в первом случае - просто интересно, как получается такая большая разница в результатах тестов.

    Ведь линейный движок тестирования продолжительности команд элементарно прост - после первого прерывания начинает выполняться последовательность тестируемых команд, а после второго прерывания - вычисляется разница адреса старта последовательности и адреса входа во второе прерывание.

  6. #5

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Если на этих командах процессор не перпрыгивает через команду вперед, то результаты должны быть корректны.
    Увы, циклический тест с командами MOV (PC), R0 и MOVB (PC), R0 не дружит.

    Код:
    OpBuf:
    		.BLKW	2048		;Буфер для тестируемых команд
    OpBufEnd:
    		INC	R4		;Увеличиваем счетчик циклов
    		JMP	(R5)		;Бесконечный цикл --> OpBufLoop
    Весьма похоже, что тест TSSPD даёт ошибочные результаты в обоих обсуждаемых случаях.

  7. #6

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    В приложении два варианта теста - MovPC2_v1.1 выходит из первого прерывания таймера по RTI, а MovPC2_v1.2 - по BR.
    ...
    MovPC2_v1.1:

    Скрытый текст

    [свернуть]

    MovPC2_v1.2:

    Скрытый текст

    [свернуть]


    ---------- Post added at 20:41 ---------- Previous post was at 20:38 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    Увы, циклический тест с командами MOV (PC), R0 и MOVB (PC), R0 не дружит.

    Код:
    OpBuf:
    		.BLKW	2048		;Буфер для тестируемых команд
    OpBufEnd:
    		INC	R4		;Увеличиваем счетчик циклов
    		JMP	(R5)		;Бесконечный цикл --> OpBufLoop
    Весьма похоже, что тест TSSPD даёт ошибочные результаты в обоих обсуждаемых случаях.
    В этом случае, после MOV @PC,R0, INC R4 выполниться два раза.
    Последний раз редактировалось Alex_K; 16.02.2019 в 23:36.

  8. #7

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для комплексной проверки глюков команды MOV (PC), R0, наблюдавшихся в тесте MOVPC.SAV - готова специальная версия этого теста: MovPCx, перехватывающая Trap_To_4, ведущая два счётчика циклов ( в начале и конце тестовой последовательности ) и перехватывающая плохие переходы:

    Код:
    Foot0:
    	Nop
    	Nop
    	Nop
    
    	Dec	R5
    	BEq	1$
    
    	Jmp	@#LoopStart
    	.Word	Bad.Jmp
    1$:
    	Mov	#R.T.I, @#100
    	Inc	R4
    	MTPS	#0
    	Return
    Foot1:
    При первом запуске теста можно ввести значение тактовой частоты тестируемого процессора в килогерцах, а также задать значение PSW при котором будет выполняться тест ( допустимы значения 0 и 340, любое другое значение превратится в 340 ).

    ...
    Вложения Вложения
    • Тип файла: zip MovPCx.zip (9.1 Кб, Просмотров: 186)
    Последний раз редактировалось Patron; 27.02.2013 в 20:58.

  9. #8

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Для комплексной проверки глюков команды MOV (PC), R0, наблюдавшихся в тесте MOVPC.SAV - готова специальная версия этого теста: MovPCx, перехватывающая Trap_To_4, ведущая два счётчика циклов ( в начале и конце тестовой последовательности ) и перехватывающая плохие переходы:
    С PSW=0:

    Скрытый текст




    [свернуть]

    С PSW=340:

    Скрытый текст




    [свернуть]


    ---------- Post added at 22:11 ---------- Previous post was at 22:09 ----------

    По поводу TRAP4, адрес прерывания в стеке может быть неверный, обычно в таких случаях он увеличен на 2.
    Последний раз редактировалось Alex_K; 16.02.2019 в 23:40.

  10. #9

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код в том месте такой:

    Код:
    011220 [000000]:      MOV   (PC), R0              ; 011222:011700 ->   R0
    011222 [000000]:      MOV   (PC), R0              ; 011224:011700 ->   R0
    011224 [000000]:      MOV   (PC), R0              ; 011226:011700 ->   R0
    011226 [000000]:      MOV   (PC), R0              ; 011230:000240 ->   R0
    011230 [000000]:      NOP
    011232 [000000]:      NOP
    011234 [000000]:      NOP
    011236 [000000]:      DEC   R5                    ;
    011240 [000000]:      BEQ   011250
    011242 [000000]:      JMP   @#005306
    Код:
    Foot0:
    	Nop
    	Nop
    	Nop
    
    	Dec	R5
    	BEq	1$
    
    	Jmp	@#LoopStart
    	.Word	Bad.Jmp
    1$:
    	Mov	#R.T.I, @#100
    	Inc	R4
    	MTPS	#0
    	Return
    Foot1:


    ---------- Post added at 21:31 ---------- Previous post was at 21:24 ----------

    А на другой машине, помнится, пока та была холодная - тест один раз не просто без вылета, а даже и почти без глюков прошёл..

    ---------- Post added at 21:33 ---------- Previous post was at 21:31 ----------

    По счётчикам команда BEQ вылететь в Trap_To_4 вряд ли может - слишком далеко до ближайшей незанятой памяти.
    Последний раз редактировалось Patron; 27.02.2013 в 22:56.

  11. #10

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    361
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    А на другой машине, помнится, пока та была холодная - тест один раз не просто без вылета, а даже и почти без глюков прошёл..
    Другая УКНЦ.
    PSW=0:

    Скрытый текст




    [свернуть]

    PSW=340:

    Скрытый текст




    [свернуть]
    Последний раз редактировалось Alex_K; 16.02.2019 в 23:45.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 234
    Последнее: 26.02.2021, 11:05
  2. Время выполнения команд CPI/CPD/CPIR/CPDR
    от ARTi в разделе Программирование
    Ответов: 27
    Последнее: 18.12.2007, 16:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •