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

User Tag List

Страница 3 из 63 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 625

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

  1. #21
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

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

    По умолчанию

    Если свести всё разнообразие таймингов команд процессора 1801ВМ1 в единую "формулу быстродействия", позволяющую точно определить число тактов, необходимых процессору для выполнения любой команды ( при возможном нахождении различных операндов в различных типах памяти ), то формула в самом общем виде будет выглядеть так:

    [Время выполнения команды] = [Суммарное время всех циклов шины] + [Суммарное время всех штрафов].

    Процессор 1801ВМ1 использует следующие циклы шины Q-Bus:

    1. DATI ( Чтение ) - для выборки команд и не модифицируемых данных из памяти.
    2. DATO / DATOB ( Запись / Запись байта ) - только в командах MOV и MOVB для записи результата в память.
    3. DATIO ( Чтение-Модификация-Запись ) - для доступа ко всем модифицируемым данным в памяти.

    Время выполнения циклов процессором 1801ВМ1 зависит от продолжительности периода тактовой частоты T и времени задержки памяти tn:
    Код:
    DATI : [ 7*T+tn]
    DATO : [10*T+tn]
    DATIO: [13*T+tn+tn]
    В дальнейшем изложении (для простоты) множитель *T упоминаться не будет, поэтому формулы продолжительности циклов шины будут иметь такой вид:
    Код:
    DATI : [7+tn]
    DATO : [10+tn]
    DATIO: [13+2tn]
    Время задержки памяти (в тактах) для ОЗУ ДВК-1: tn = 6, для ПЗУ ДВК-1: tn = 2.

    Поэтому, например - в ОЗУ ДВК-1 цикл чтения ( DATI ) будет выполняться за 7 + 6 = 13 тактов.

    ...

    Теперь рассмотрим какие штрафы быстродействия (в тактах) имеет процессор 1801ВМ1 при выполнении команд:
    Код:
    1. [Штраф исполнения]            = 1 - для всех команд.
    2. [Штраф второго операнда]      = 1 - для команд, использующих два операнда,
                                           если один из них в памяти.
    3. [Штраф отмены предвыборки]    = 2 - для команд, выполняющих больше одного 
                                           цикла шины.
    4. [Штраф префиксной адресации]  = 1 - для каждого операнда с 
                                           префиксной адресацией.
    5. [Штраф невзаимности]          = 5 ( для MOV = 4 ) - для команд, у которых 
                                           первый операнд не обращается к памяти,
                                           а второй - обращается.
    Кроме того, команда MOV имеет при некоторых режимах адресации дополнительные штрафы от 1 до 4 тактов, природа которых пока совсем не понятна.

    Теперь попробуем определить при помощи предложенного формализма продолжительность выполнения процессором 1801ВМ1 в ОЗУ ДВК-1 команды
    Код:
    	Add	@TAB(R1), -(R0)
    1. Сначала определим используемые циклы шины и их продолжительность: DATI (чтение кода команды) + DATI (чтение смещения к адресу первого операнда) + DATI (чтение адреса первого операнда) + DATI (чтение первого операнда) + DATIO (чтение-модификация-запись второго операнда) = [7+tn]+[7+tn]+[7+tn]+[7+tn]+[13+2tn] = 77 тактов.

    2. Теперь определим используемые штрафы: [Штраф исполнения]+[Штраф второго операнда]+[Штраф отмены предвыборки]+[Штраф префиксной адресации ( за второй операнд ) ] = 1+1+2+1 = 5 тактов.

    3. Определим суммарную продолжительность выполнения команды: 77 + 5 = 82 такта ( что полностью соответствует измеренной величине ) .
    Последний раз редактировалось Patron; 18.12.2012 в 13:03.

  3. #23
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    2. DATO / DATOB ( Запись / Запись байта ) - только в командах MOV и MOVB для записи результата в память.
    А у CLR и подобных команд какой цикл?

  4. #24
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так команды с байтами получаются быстрее или медленнее? И насколько?

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А у CLR и подобных команд какой цикл?
    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Так команды с байтами получаются быстрее или медленнее? И насколько?
    Таблицы таймингов рулят.

    Код:
    Scale: 256
    Retry: 300
    
    Return : 35 ! RtI : 46 ! RtT : 46 ! IOT : 80 ! Trap : 80 !
    
    Add #6,R0 : 30
    
    SOB : 22 ! Br  : 17 ! BCS : 17 ! BCC : 17 ! Nop : 14 ! SeC : 14 ! ClC : 14 !
    
                  R0  (R0)  (R0)+  @(R0)+  -(R0)  @-(R0)  Addr  @#Addr  @Tab(R0)
    Tst           14   29    29      42      30      43    42     42      56
    TstB          14   29    29      42      30      43    42     42      56
    MTPS          26   35    35      48      35      49    48     48      61
    MFPS          14   41    41      54      41      55    54     54      67
    XOr           14   43    43      56      44      56    56     56      70
    SXt           14   41    41      54      41      55    54     54      67
    SwaB          14   41    41      54      41      55    54     54      67
    Clr           14   41    41      54      41      55    54     54      67
    ClrB          14   41    41      54      41      55    54     54      67
    Inc           14   41    41      54      41      55    54     54      67
    IncB          14   41    41      54      41      55    54     54      67
    Dec           14   41    41      54      41      55    54     54      67
    DecB          14   41    41      54      41      55    54     54      67
    AdC           14   41    41      54      41      55    54     54      67
    AdCB          14   40    40      54      41      55    54     54      67
    SbC           14   41    40      54      41      55    54     54      67
    SbCB          14   40    41      54      41      55    54     54      67
    ASL           14   41    41      54      41      55    54     54      67
    ASLB          14   41    41      54      41      55    54     54      67
    ASR           14   41    40      54      41      55    54     54      67
    ASRB          14   41    41      54      41      55    54     54      67
    RoL           14   40    41      54      41      55    54     54      67
    RoLB          14   40    40      54      41      55    54     54      67
    RoR           14   41    40      54      41      55    54     54      67
    RoRB          14   41    41      54      41      55    54     54      67
    Com           14   40    41      54      41      55    54     54      67
    ComB          14   40    41      54      41      55    54     54      67
    Neg           14   41    40      54      41      55    54     54      67
    NegB          14   41    41      54      41      55    54     54      67
    Jmp                24    26      35                    35     35      48
    Call               39    40      49                    49     49      61
    
    BiS R0,(R1)           : 42
    BiS R0,(R1) + Nop     : 58
    Handler cycles        : 256
    Handler               : 165
    BiS+Nop+Intr+Handler  : 315
    Interrupts count      : 256
    BiS + Nop + Interrupt : 150
    Interrupt only        : 92
    По идее - во 2-й и 3-й колонках везде должно быть 40 тактов, а не 41.

  6. #26
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >Таблицы таймингов рулят.
    Это конечно, но элементарных вопросов, когда всё познаёшь с нуля не избежать.
    Как я понимаю по таблице, с байтами команды работают то же время, что и со словами. Это же таблица для однооперандных команд? И почему время выполнения OPR @(R0)+ и ORP @-(R0) отличается на такт? Неужели из-за того, что постинкремент мог параллелиться с основной командой?
    Последний раз редактировалось NovaStorm; 19.12.2012 в 14:25.

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

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    И почему время выполнения OPR @(R0)+ и ORP @-(R0) отличается на такт? Неужели из-за того, что постинкремент мог параллелиться с основной командой?
    Именно!

    Вообще, независимая параллельная работа отдельных блоков ( шинного, управляющего и арифметического ) применяется в процессорах ВМх везде, где только можно.

    Разработчики стремились сделать так, чтобы на каждом такте каждый блок процессора вносил максимальный вклад в итоговое быстродействие.

    Например, судя по итогам проведённого тестирования - шинный блок 1801ВМ1 сам начинает (предположительно) предвыборку кода следующей команды, пока управляющий блок ещё не раскодировал текущую. Из-за этого в тех случаях, когда текущая команда запрашивает дополнительный цикл шины ( чтобы прочитать или записать операнд ) - происходит удлинение выполнения команды из-за отмены предвыборки (это может быть и просто задержка получения исполнительного адреса). Штраф отмены предвыборки у 1801ВМ1 составляет 2 такта ( или, возможно, только 1 такт - это ещё предстоит уточнить ).
    Последний раз редактировалось Patron; 20.12.2012 в 12:17.

  8. #28
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ого, таки не лаптем щи у нас хлебали! =)

  9. #29
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,210
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    210
    Поблагодарили
    181 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Ого, таки не лаптем щи у нас хлебали! =)
    Не у нас, вроде, а в DEC. Или, как в случае с 580ИК80, контактные площадки рулят? ;-)
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

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

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Не у нас, вроде, а в DEC.
    Только если микроядро LSI-11 может осуществлять несколько операций параллельно, как это делает 1801ВМ1.

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

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

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

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

Похожие темы

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

Ваши права

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