User Tag List

Показано с 1 по 10 из 627

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

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

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

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

    По умолчанию

    Следующие универсальные тесты: MOVB.SAV, CMP.SAV и ADD.SAV, позволяют определить число тактов, затрачиваемых любым процессором архитектуры PDP-11 на выполнение команд MOVB, CMP и ADD с различными способами адресации.

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

    Исходники тестов отличаются одной строчкой, которая для теста команды ADD выглядит так:
    Код:
    ;;############################
    	.Instr	Add
    ;;############################
    Вложения Вложения
    • Тип файла: zip MOVB.zip (8.6 Кб, Просмотров: 240)
    • Тип файла: zip CMP.zip (8.6 Кб, Просмотров: 344)
    • Тип файла: zip ADD.zip (8.6 Кб, Просмотров: 330)

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Следующие универсальные тесты: MOVB.SAV, CMP.SAV и ADD.SAV, позволяют определить число тактов, затрачиваемых любым процессором архитектуры PDP-11 на выполнение команд MOVB, CMP и ADD с различными способами адресации.
    УКНЦ КВАНТ литеры 7 с 1515ХМ1-031.
    Команда MOVB:

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

    [свернуть]

    Команда CMP:

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

    [свернуть]

    Команда ADD:

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

    [свернуть]

  4. #3

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

    По умолчанию

    Для дальнейшей проверки выполнения команд типа MovB (PC)+, ??? процессором 1801ВМ2 - изготовлены ( путём изменения соответствующей строчки в исходнике ) тесты команд BIS и BISB.

    ...
    Вложения Вложения
    • Тип файла: zip BIS.zip (8.6 Кб, Просмотров: 227)
    • Тип файла: zip BISB.zip (8.7 Кб, Просмотров: 138)

  5. #4

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Для дальнейшей проверки выполнения команд типа MovB (PC)+, ??? процессором 1801ВМ2 - изготовлены ( путём изменения соответствующей строчки в исходнике ) тесты команд BIS и BISB.

    ...
    Результаты на УКНЦ:

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

    [свернуть]

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

    [свернуть]

    Что тут можно сказать? По всей видимости разработчики микрокода довольно хорошо промахнулись с байтовыми командами. Уже известно что в команде MOVB параметр dst сначала читается, а уже потом записывается. Судя по всему при адресации по счетчику команд (методы 27, 6Х, 7Х) при словных командах используется аргумент, прочитанный во время предвыборки, а в байтовых командах он снова читается. Весьма интересно услышать по этому поводу комментарии от Titus-а, но его в данный момент нет на форуме.
    Кстати интересно посмотреть на CMPB, и CLR и CLRB.

  6. #5

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Кстати интересно посмотреть на CMPB, и CLR и CLRB.
    Вот тест для CMPB: CMPB.SAV, а для однооперандных команд буду ещё делать отдельный тест с немного изменённым тестовым движком.

    ...
    Вложения Вложения
    • Тип файла: zip CMPB.zip (8.6 Кб, Просмотров: 217)

  7. #6

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Вот тест для CMPB: CMPB.SAV, а для однооперандных команд буду ещё делать отдельный тест с немного изменённым тестовым движком.

    ...

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

    [свернуть]

    В свете открывшихся обстоятельств весьма интересно, будут ли сильно отличаться по времени команды MOV @R1,R0 и MOV @PC,R0. Вроде бы аргумент будет прочитан по предвыборке, да и последовательность предвыборки не будет нарушена.

    Да, в байтовых командах влияет только на способ адресации 27, на 6Х и 7Х не влияет, т.к. там индекс читается как словный аргумент.

  8. #7

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В свете открывшихся обстоятельств весьма интересно, будут ли сильно отличаться по времени команды MOV @R1,R0 и MOV @PC,R0. Вроде бы аргумент будет прочитан по предвыборке, да и последовательность предвыборки не будет нарушена.
    После теста однооперандных команд я сделаю специальный тест MOVPC.SAV для команд типа:

    Код:
    	Mov	R0, (PC)
    	MovB	R0, (PC)
    	Mov	(PC), R0
    	MovB	(PC), R0
    	Mov	(PC), (PC)
    	MovB	(PC), (PC)
    	Mov	(PC)+, (PC)
    	MovB	(PC)+, (PC)
    	Mov	(PC), (PC)+
    	MovB	(PC), (PC)+
    Чтобы далеко не искать, можно будет добавить туда же и уже протестированные:
    Код:
    	Mov	R0, (PC)+
    	MovB	R0, (PC)+
    	Mov	(PC)+, R0
    	MovB	(PC)+, R0

  9. #8

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Судя по всему при адресации по счетчику команд (методы 27, 6Х, 7Х) при словных командах используется аргумент, прочитанный во время предвыборки, а в байтовых командах он снова читается. Весьма интересно услышать по этому поводу комментарии от Titus-а, но его в данный момент нет на форуме.
    Я абсолютно с вами согласен)

    ---------- Post added at 02:18 ---------- Previous post was at 02:17 ----------

    Еще раз настоятельно рекомендую сделать дробные тайминги в тесте. Иначе точность его практически никакая, если говорить об УКНЦ.

  10. #9

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

    По умолчанию

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

    Чем вызвано отличие таймингов следующих команд:
    Код:
                   R0  (R0)  (R2)+  @(R2)+  -(R1)  @-(R1)  Addr  (PC)+  @Tab(R0)
    
    Mov   @(R2)+   47   70    70      80      70      83    82    82      96
    Mov    Addr    47   66    66      82      66      82    80    80      96
    
    MovB  @(R2)+   47   71    71      85      80      94    93    93     107
    MovB   Addr    47   80    80      93      80      93    85    85     106
    
    Cmp   @(R2)+   47   60    60      80      66      82    82    70      96
    Cmp    Addr    47   66    66      80      66      80    80    66      94
    
    CmpB  @(R2)+   47   60    60      80      66      82    82    82      96
    CmpB   Addr    47   66    66      80      66      80    80    80      94
    
    Add   @(R2)+   47   72    72      85      80      94    93    93     107
    Add    Addr    47   79    79      93      79      93    85    85     106
    Из первого столбца однозначно следует, что чтение первого аргумента занимает в указанных командах строго одинаковое время.

    Тогда как объяснить:

    1. Почему Mov @(R2)+,(R2)+ выполняется медленнее, чем Mov nn(PC),(R2)+, но MovB @(R2)+,(R2)+ выполняется быстрее, чем MovB nn(PC),(R2)+, при том что у команд Cmp и CmpB таких отличий нет.

    2. Почему команды Mov @(R2)+,(R0), MovB @(R2)+,(R0) и Add @(R2)+,(R0) почти не отличаются по продолжительности.

    3. Почему команда Add @(R2)+,@(R2)+ выполняется значительно быстрее, чем Add @(R2)+,@-(R1), тогда как команды Add nn(PC),@(R2)+ и Add nn(PC),@-(R1) имеют одинаковую продолжительность ( играет роль использование одного и того же регистра и в источнике, и в приёмнике ? ).

    ...
    P.S. Честно говоря - вручную переписывать числа из фоток довольно сложно ( иногда случаются ошибки и приходится постоянно перепроверять ).

    Если перед запуском тестов загрузить монитор NC11SJ.SYS ( с любого носителя, не обязательно с HX ) и нажать в подключенном к COM-порту терминале кнопку [Лог] - результаты тестов сразу запишутся в текстовый файл на PC.
    Последний раз редактировалось Patron; 23.02.2013 в 12:38.

  11. #10

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    1. Почему Mov @(R2)+,(R2)+ выполняется медленнее, чем Mov nn(PC),(R2)+, но MovB @(R2)+,(R2)+ выполняется быстрее, чем MovB nn(PC),(R2)+, при том что у команд Cmp и CmpB таких отличий нет.
    Прежде всего странно, что MOVB blabla,(mem), который выполняется в цикле RMW, при адресации типа MOVB @(R2)+,(mem) выполняется с такой же скоростью, как и MOV.

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

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

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

Похожие темы

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

Ваши права

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