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

User Tag List

Страница 63 из 63 ПерваяПервая ... 5960616263
Показано с 621 по 625 из 625

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

  1. #621
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    6,996
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Я что-то такое припоминаю, время исполнения каких-то команд EIS зависело от значений в регистрах.
    Меня всё время смущало, что по исходной версии программы SPEED время выполнения DIV было меньше, чем MUL на 1801ВМ3. Вот не верил я в этом и всё тут. Что и подвигло на написание своей версии, в которой всё стало на свои места

  2. #622
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    436
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    восстановлены алгоритмы исполнения команд. Так что можно пойти и посмотреть
    Посмотрел. Но не нашел особо ничего подозрительного. И в эмуляторе допустим emustudio как-раз сделана линейная зависимость времени выполнения ash #x,R0 от значения x.
    Однако на железке время выполнения вовсе нелинейно вышло в зав-ти от того сколько раз прокрутить регистр. Причем очень интересно вышло.

    Вот такой код заполняет относительно длинный буфер:
    Код:
    mov #12345, R0
    ash #0, R0
    Запускается, замеряется время. Затем команда сдвига меняется на ash #1, R0 и т.д.
    Eсли вывести время выполнения сдвигов [0..8] и приращение к предыдущему то получится скажем такое (на 1млн таких комманд в усл.ед.)

    На emustudio все линейно как и ожидалось
    Код:
    Время	Приращение
    363	363
    388	25
    413	25
    438	25
    463	25
    488	25
    514	26
    539	25
    564	25
    На реальной УКНЦ однако иначе (суть не в том что эмустудио быстрее, а в нелинейности):
    Код:
    Время	Приращение
    511	511
    534	23
    584	50
    604	20
    634	30
    656	22
    667	11
    704	37
    730	26
    причем приращения не рандомные, повторение теста выдает точно то-же самое

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

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Вот такой код заполняет относительно длинный буфер:
    Код:
    mov #12345, R0
    ash #0, R0
    В данном коде абсолютно не используется предвыборка, значит велико значение задержки при чтении из памяти. А чтение памяти идёт с разрешения арбитра видеоконтроллера. Попробуйте счётчик сдвига поместить в регистр R1 и для подсчета использовать только одну команду ASH R1,R0. Какие будут результаты?

  4. #624
    Activist Аватар для BlaireCas
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    436
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    124 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Попробуйте счётчик сдвига поместить в регистр R1 и для подсчета использовать только одну команду ASH R1,R0.
    Агааа.. Попробовал навроде такого:
    Код:
    mov	#X, R1
    clr	R0
    ash	R1, R0
    ash	R1, R0
    ash	R1, R0
    ... много раз ...
    ash	R1, R0
    return
    Вот теперь зависимость от количества сдвигов линейная. Времена выполнения стали навроде 600,700,800,900..

    Меняя буфер на ash #X, R0(много раз) получается нелинейность (с чего я и начал собственно).
    Так это что-ж такое? Процессор пока выполнял ash R1,R0 успел предвыбрать следующее за ней слово (поскольку инструкция ровно в слово лезет)?
    А если след. инструкция в слово не влезла (ash #X, R0) - то он не делает предвыборку и начинается какое-то ожидание? (причем не пойми точно какое).

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

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Так это что-ж такое? Процессор пока выполнял ash R1,R0 успел предвыбрать следующее за ней слово (поскольку инструкция ровно в слово лезет)?
    А если след. инструкция в слово не влезла (ash #X, R0) - то он не делает предвыборку и начинается какое-то ожидание? (причем не пойми точно какое).
    Оно самое. Если предвыборка нарушается, следующее слово многословной команды может быть прочитано из регистра инструкций, либо заново из памяти. Почитайте тему про 1801ВМ2, посмотрите алгоритмы выполнения различных способов адресации, узнаете много нового.

Страница 63 из 63 ПерваяПервая ... 5960616263

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

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

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

Похожие темы

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

Ваши права

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