Важная информация

User Tag List

Страница 16 из 63 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя
Показано с 151 по 160 из 625

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

  1. #151
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  3. #152
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Аргумент #NUM сперва прочитывается как следующая команда, потом собственно как аргумент. Последовательность предвыборки нарушена, следующая команда читается уже не во время дешифрации предыдущей.
    Но на команду ADD это не влияет, а чем чтение первого аргумента команды MOVB отличается от чтения первого аргумента команды ADD ?

  4. #153
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

    [свернуть]

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

    [свернуть]

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

  5. #154
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  6. #155
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    ...

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

    [свернуть]

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

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

  7. #156
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    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

  8. #157
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,219
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

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

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

  9. #158
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    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.

  10. #159
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,219
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 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.

  11. #160
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Прежде всего странно, что MOVB blabla,(mem), который выполняется в цикле RMW, при адресации типа MOVB @(R2)+,(mem) выполняется с такой же скоростью, как и MOV.
    Видно, что MovB выполняется с той же скоростью, что и Add, поэтому вопрос нужно ставить наоборот -

    почему:

    MOV (R2)+,(R0) выполняется на 10 тактов быстрее, чем BIS (R2)+,(R0) , но
    MOV @(R2)+,(R0) выполняется только на один такт быстрее, чем BIS @(R2)+,(R0) , учитывая что
    MOV (R2)+,R0 выполняется за то же время, что и BIS (R2)+,R0 , а
    MOV @(R2)+,R0 выполняется за то же время, что и BIS @(R2)+,R0 !!!

Страница 16 из 63 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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