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

User Tag List

Страница 28 из 63 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 625

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

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

    По умолчанию

    Новый тест MovPCy должен помочь лучше протестировать "стрёмные" команды.

    При запуске теста можно задать следующие параметры:

    Код:
    .RU MOVPCY
    MovPCy - v1.0
    CPU KHz:   5300 >
    MTPS   :      0 >
    Command: 011700 >
    Row Len:   1000 >
    Word W1: 000240 >
    Word W2: 000240 >
    Word W3: 000240 >
    Loops  :    106 >
     
    Command: 011700         Loops:   106   ;  Ticks:   30
     
    R0: 000240  ;  R1: 000000  ;  R2: 000000  ;  R3: 000000
    R0:    160  ;  R1:      0  ;  R2:      0  ;  R3:      0
     
    Program completed.
     
    .
    Код:
    CPU KHz - Тактовая частота тестируемого процессора в килогерцах (десятичное).
    MTPS    - Значение PSW во время тестирования (восьмеричное).
    Command - Тестируемая команда (восьмеричное).
    Row Len - Число экземпляров (1..10000) тестируемой команды в тестовом буфере.
    Word W1 - Первое слово после тестируемой последовательности (восьмеричное).
    Word W2 - Второе слово после тестируемой последовательности (восьмеричное).
    Word W3 - Третье слово после тестируемой последовательности (восьмеричное).
    Loops   - Число циклов ( лучше не трогать ).
    Тестовая последовательность завершается следующим кодом:
    Код:
    Foot0:
    
    W1:	Nop
    W2:	Nop
    W3:	Nop
    
    	Dec	R5
    	BEq	1$
    
    	Jmp	@#LoopStart
    	.Word	Bad.Jmp
    1$:
    	Mov	#R.T.I, @#100
    	Inc	R4
    	MTPS	#0
    	Return
    Foot1:
    Разрешается изменять значения регистров R0, R1, R2, R3.
    Перед началом теста эти регистры обнуляются.

    ...
    Вложения Вложения
    • Тип файла: zip MovPCy.zip (10.1 Кб, Просмотров: 146)
    Последний раз редактировалось Patron; 28.02.2013 в 19:48.

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

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Новый тест MovPCy должен помочь лучше протестировать "стрёмные" команды.
    Еще раз БОЛЬШОЕ СПАСИБО Patron-у за этот тест. В результате тестирования выяснилось, что разные команды работают по разному после MOV @PC,R0. Поведение более-менее поддается анализу за исключением команд установки/снятия признаков. В этом случае раз на раз не приходится, потому при употреблении трех NOP и получались такие разные результаты.
    Потестировал на УКНЦ литеры 3. Ее поведение практически ничем не отличается от УКНЦ литеры 7 с 1515ХМ1-031. Но рассмотрим наиболее интересные случаи.

    1. Сперва употребляется пара NOP, потом INC R3:

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




    [свернуть]

    При этом выборе иногда, часто, получается TRAP10. Сразу видно, что в R0 содержится 0137, а не 0240. Само значение 0137 содержится по адресу 055724, а 0240 по адресу 055712, разница составляет 012. Сразу же за ячейкой 055724 со значением 0137 расположена ячейка 055726 со значением 06650, при исполнении этой команды и возникает TRAP10. Также видно, что INC R3 и DEC R5 ни разу не сработали, хотя висел этот тест продолжительное время, получается довольно часто попадало на JMP @#6650.

    2. Либо все три NOP, или сперва INC R1, потом два NOP:

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




    [свернуть]

    В этих вариантах часто срабатывает TRAP4, а INC R1 исполняется два раза. По аналогии с первым результатом в качестве TRAP4 может служить исполнение кода 0100 по адресу 055736. И еще - в R0 ложится младший байт, а не слово.

    3. Два INC и один NOP. Без комментариев, ибо не объяснимо.

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



    [свернуть]


    4. Один NOP между двумя INC.

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




    [свернуть]

    Видно, что INC R1 всегда исполняется два раза, а вот INC R3 после NOP не всегда исполняется.

    Вот такие вот дела. Остальные команды предсказуемы, но разная реакция на них. Потестирую, опишу.
    Последний раз редактировалось Alex_K; 16.02.2019 в 23:55.

  4. #273
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,578
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,799
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Ну так что, есть предварительное описание глюка?

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Ну так что, есть предварительное описание глюка?
    После двухадресной команды, если в качестве источника используется @PC, и если команда не нарушает предвыборку (из одного слова и не записывает по адресу PC), то следующая за ней команда, не нарушающая предвыборку, исполняется два раза. Затем все адресации по счетчику команд смещаются на 2, это касается и команд коротких переходов и прерываний (в стек ложится PC+2). Хотя адресации по PC и смещаются, но команды выполняются. А вот тут зависит уже от типа команд. После некоторых следующая за ними команда может не исполнится.
    Но все это надо дополнительно тестировать в пультовом отладчике, т.к. тест Patron-а дает задать только три команды. В пультовом отладчике может и медленней, но гибче.
    А вот поведение команд установки/снятия признаков (0240-0277) вообще не поддается никакому логическому анализу. Видно сказывается разное тактирование процессора и памяти, видно зависит от разницы в выборке слова из памяти.
    Эх, протестировать бы на МС1201.02, там память не надо разделять с видеоадаптером, там уже время выборки должно быть стабильным.

  6. #275
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,578
    Спасибо Благодарностей отдано 
    1,233
    Спасибо Благодарностей получено 
    1,799
    Поблагодарили
    691 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Думаю, что этот глюк произошел из-за того, что адресация в адресации по (PC) не предполагалось использования регистра без автоинкремента. Т.е. по умолчанию считалось, что если адресация по (PC), то это именно (PC)+, использующееся как обращение к непосредственным данным внутри команды, и все компенсации кеша были заточены под нее.

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Думаю, что этот глюк произошел из-за того, что адресация в адресации по (PC) не предполагалось использования регистра без автоинкремента. Т.е. по умолчанию считалось, что если адресация по (PC), то это именно (PC)+, использующееся как обращение к непосредственным данным внутри команды, и все компенсации кеша были заточены под нее.
    Здесь я абсолютно согласен, не только 27( (PC)+ ), но и 37( @(PC)+ ), 6х и 7х. В этом случае нужный аргумент уже извлекался в результате предвыборки и микрокод это учитывал, чтобы два раза не читать. Но после этих адресаций счетчик команд увеличивался на два, а в случае с @PC оставался тем же. Глюк может быть связан еще с тем, что есть два счетчика команд СК1 и СК2. СК2 вроде всегда больше СК1 на два, но в этом глюке между ними получается рассинхронизация. И кстати по описанию на процессор команды установки/снятия признаков используют внутренний сигнал признака байта, чтобы записывать только в младший байт PSW, может уже начинается дешифрация NOP, потому в R0 и оказывается только младший байт. Но все это предположения, надо знать микрокод, хотя кое-что в ТО описано, надо посмотреть по блок-схемам.

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

    По умолчанию

    Мне, как верному адепту "питательной" теории было особенно интересно увидеть:

    Код:
    ?MON-F-Power fail halt
    Какой блок УКНЦ вырабатывает это прерывание?
    Типа, процессор как-то анализирует входное напряжение?
    Последний раз редактировалось Patron; 01.03.2013 в 23:52.

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Мне, как верному адепту "питательной" теории было особенно интересно увидеть:

    Код:
    ?MON-F-Power fail halt
    Какой блок УКНЦ вырабатывает это прерывание?
    Типа, процессор как-то анализирует входное напряжение?
    В ЦП вход ACLO управляется из магистрали ПП через регистр 177716 (также как и входы DCLO и HALT). Так что питательная теория в отношении ЦП отпадает. А вот на ПП ACLO и DCLO поступают со схемы запуска, которая формирует необходимые задержки этих сигналов. В этой же схеме и находится кнопка сброса для перезапуска УКНЦ. А уже программа в ПЗУ ПП через регистр 177716 запускает ЦП.

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    тест дает задать только три команды
    А сколько хотелось бы ?

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    А сколько хотелось бы ?
    Много. Да и длину допкоманд также задавать. Но как быть, если захочешь протестировать команды с автоинкрементным способом адресации, которые записывают значения в какой-нибудь буфер?

    ---------- Post added at 23:56 ---------- Previous post was at 23:54 ----------

    Так же задавать предварительные значения в регистрах.

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

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

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

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

Похожие темы

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

Ваши права

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