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

User Tag List

Страница 1 из 10 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 96

Тема: Commercial Instruction Set (CIS) на PDP-11 и я

  1. #1
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Commercial Instruction Set (CIS) на PDP-11 и я

    Приехал мне один интересный аддон для KDF11-B. И если его вставить куда надо, то можно увидеть:

    Код:
    RT-11SB  V05.07
    
    .R MSCPCK
    
    .SHO CONF
    
    RT-11SB  V05.07
    Booted from DU2:RT11SB
    
    USR     is set SWAP
    EXIT    is set SWAP
    KMON    is set NOIND
    MODE    is set NOSJ
    TT      is set NOQUIET
    ERROR   is set ERROR
    SL      is set OFF
    EDIT    is set KED
    FORTRAN is set FORTRA
    KMON nesting depth is 3
    
    CLI is set DCL, CCL, UCL, NO UCF
    
    PDP 11/23 PLUS Processor
    256KB of memory
    FP11 Hardware Floating Point Unit
    Extended Instruction Set (EIS)
    Commercial Instruction Set (CIS)
    Memory Management Unit
    Parity Memory
    60 Hertz System Clock
    
    FPU support
    
    
    .TYP HX7:TEST.MAC
            .TITLE  TEST
            .MCALL  .EXIT, .PRINT
    
    START:
            MOV     N1DSC,   R0
            MOV     N1DSC+2, R1
            MOV     N2DSC,   R2
            MOV     N2DSC+2, R3
            MOV     N3DSC,   R4
            MOV     N3DSC+2, R5
    
            ADDN                             ; !!!!!!!!!!
    
            BIT     #37, N3DSC
            BEQ     100$
    
            .PRINT  #NUM3
            BR      300$
    
    100$:
            .PRINT  #ERR
    
    300$:
    
            .EXIT
    
    N1DSC:
            .WORD   50000+NUM1L, NUM1
    N2DSC:
            .WORD   50000+NUM2L, NUM2
    N3DSC:
            .WORD   50000+5., NUM3
    
    NUM1:   .ASCII  /+12345/
    NUM1L=.-NUM1
    
    NUM2:   .ASCII  /+23456/
    NUM2L=.-NUM2
    
    NUM3:
            .BLKB   32.
    NUM3L=.-NUM3
    
            .BYTE   0
    
    ERR:    .ASCIZ  /Error/
    
            .EVEN
    
            .END    START
    
    
    .LOA HX7:
    
    .EXE HX7:TEST
    35801
    Поскольку набор команд CIS окружён прямо таки мистическим ореолом и достаточно слабо освещён в документации и поскольку у меня есть, на ком и на чём его помучить, решил завести про него отдельную тему.

    Процессора PDP-11, на которых он есть, думаю можно посчитать пальцами одной руки. Но с учётом того, что Vslav собирается вскрыть и набор F-11 (1811) - возможно удастся вычитать и микросхемы микрокода CIS и реализовать его в будущем FPGA варианте F-11. У меня (пока?) только одна микросборка, реализующая этот набор и я не готов её жертвовать для деструктивного считывания

    Учитывая интересы сообщества любителей DEC - сомневаюсь, что кто то ещё, кроме меня, будет развлекаться с этим набором команд, но я могу предоставить удалённый доступ к стенду с процессором, где есть эти команды, так что если (вдруг) желающие найдутся - можно договориться - когда и насколько

    Ещё информация.

    "Сообщается, что коммерческий набор команд KEV11-C (документация по нему невозможно найти) является дополнительным чипом для набора микросхем LSI-11, который добавляет поддержку подмножества CIS, иногда известного как DIS (набор команд DIBOL).

    Он также включает в себя EIS (но не FIS).

    DIS не может использоваться с микросхемой с плавающей запятой KEV11-A не только из-за ограниченного количества сокетов uROM на платах ЦП LSI-11, но также потому, что DIS и базовый набор команд вместе используют все адресное пространство uROM.

    DIS стал стандартом в некоторых коммерчески ориентированных системах LSI-11; процессоры KD11-P и KD11-Q (M7264-BB и M7264-YB соответственно) являются моделями ЦП с установленным KEV11-C.

    Варианты чипа

    KEV11-C использует два uROM: 3025D 23-004B5 и 3026D (возможно B?) 23-005B5. (Также может быть гибридная версия KEV11-C, то есть с одной несущей DIP, но номер детали неизвестен.)

    Версия опции KEV11-C с двумя uROM, очевидно, занимает два гнезда uROM; поэтому он используется с 40-контактным гибридом (два чипа на одном носителе), который содержит два uROM базового набора команд. Гибрид - 23-001B6, 23-002B6 или 23-003B6 (для M7264 ECO 10, ECO 12 и ECO 16 соответственно)."
    Последний раз редактировалось Hunta; 17.08.2020 в 00:59.

  2. Этот пользователь поблагодарил Hunta за это полезное сообщение:

    litwr (01.10.2020)

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

  4. #2
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поигрался малость с CIS. Не такие уж они сложные оказались, эти команды.

    Попробую написать тесты на их скорострельность

    - - - Добавлено - - -

    Качество пока ещё так себе, но представление даёт
    Как выглядит KDF11-B с полным комплектом микросхем

    - - - Добавлено - - -

    Слегка причёсанный пример CIS

    Код:
    .TYP TEST.MAC
            .TITLE  TEST
            .MCALL  .EXIT, .PRINT
    
    .MACRO  SZ$NUM  LABEL, VAL, ?L1, ?L2
    
    LABEL:
            .WORD   50000+L2-L1-1   ; 50000 - signed zoned numeric
            .WORD   L1+1
    L1:
            .ASCII  \VAL\
    L2:
            .BYTE   0
            .EVEN
    
    .ENDM   SZ$NUM
    
    .MACRO  SZ$PRINT        LABEL
            MOV     LABEL+2, R0
            DEC     R0
            .PRINT
    .ENDM   SZ$PRINT
    
    START:
    
            ADDNI
                    N1DSC, N2DSC, N3DSC
    
            SZ$PRINT N1DSC
            SZ$PRINT N2DSC
            SZ$PRINT N3DSC
    
            .EXIT
    
    SZ$NUM  N1DSC   <+12345>
    SZ$NUM  N2DSC   <+23456>
    SZ$NUM  N3DSC   <+00000>
    
            .EVEN
    
            .END    START
    
    
    .EXE TEST
    +12345
    +23456
    +35801
    
    .

  5. Эти 2 пользователя(ей) поблагодарили Hunta за это полезное сообщение:

    bigral (14.10.2020), dk_spb (14.08.2020)

  6. #3
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Zoned формат поддался быстро, packed формат чёт пока сопротивляется...

    - - - Добавлено - - -

    Хе хе Тупая ошибка, которые я плохо нахожу Точнее - долго могу искать, но всё остальное было правильным

    Итак, как умножить 123456789012345 на 234567890123456 на PDP-11 одной (!) командой и, после ещё одной (!) команды, сразу вывести результат на монитор

    Код:
    .TYP TEST.MAC
            .TITLE  TEST
            .MCALL  .EXIT, .PRINT
    
    .MACRO  SZ$NUM  LABEL, VAL, ?L1, ?L2
    
    LABEL:
            .WORD   50000+L2-L1-1   ; 50000 - signed zoned numeric
            .WORD   L1+1
    L1:
            .ASCII  \VAL\
    L2:
            .BYTE   0
            .EVEN
    
    .ENDM   SZ$NUM
    
    .MACRO  SZ$PRINT        LABEL
            MOV     LABEL+2, R0
            DEC     R0
            .PRINT
    .ENDM   SZ$PRINT
    
    START:
    
            ADDNI
                    N1DSC, N2DSC, N3DSC
    
            SZ$PRINT N1DSC
            SZ$PRINT N2DSC
            SZ$PRINT N3DSC
    
            CVTNPI                  ; numeric to packed
                    N4DSC, BUF1
    
    
            CVTNPI                  ; numeric to packed
                    N5DSC, BUF2
    
            MULPI                   ; multiply packed
                    BUF1, BUF2, BUF3
    
            CVTPNI                  ; packed to numeric
                    BUF3, N6DSC
    
            SZ$PRINT N4DSC
            SZ$PRINT N5DSC
            SZ$PRINT N6DSC
    
            .EXIT
    
    SZ$NUM  N1DSC   <+12345>
    SZ$NUM  N2DSC   <+23456>
    SZ$NUM  N3DSC   <+00000>
    
    SZ$NUM  N4DSC   <+123456789012345>
    SZ$NUM  N5DSC   <+234567890123456>
    SZ$NUM  N6DSC   <+000000000000000000000000000000>
    
    BUF1:   .WORD   60000+31.
            .WORD   ADDR1
    BUF2:   .WORD   60000+31.
            .WORD   ADDR2
    BUF3:   .WORD   60000+31.
            .WORD   ADDR3
    
    ADDR1:  .BLKB   32./2
    ADDR2:  .BLKB   32./2
    ADDR3:  .BLKB   32./2
    
            .EVEN
    
            .END    START
    
    
    .EXE TEST
    +12345
    +23456
    +35801
    +123456789012345
    +234567890123456
    +028958998520042431946358064320
    
    .
    Третье число - результат сложения первых двух чисел (в ASCII формате, без преобразования (!))
    Шестое число - результат умножение четвёртого числа на пятое (преобразования - ровно три машинных команды)
    Проверил результат на калькуляторе Windows, он сказал, что должно быть - 28958998520042431946358064320

    Вот прям жутко интересно - какая же скорострельность этих команд Надо писать тест

    - - - Добавлено - - -

    Блин, жалко, что DEC так и не допилила, похоже, до результата, ещё пару микросхем для J-11. И ведь даже место есть!

    Но теперь никто не мешает восстановить эту несправедливость для новодельных процессоров семейства PDP-11

    - - - Добавлено - - -

    Память подсказывает, что вроде не один раз попадалась мне инфа, что этот набор (CIS) DEC делала с прицелом Кобол и свои компиляторы с Кобола.

    И что вроде только компилятор с Кобола умеет генерить код под них.

    Если так, что этот набор вполне можно назвать Cobol Instruction Set

    Надо посмотреть, есть ли в принципе компилятор с Кобола для RT - в коллекции у меня есть только компиляторы под RSX и RSTS-E. Первая у меня есть только в PLUS варианте (а на 256 кб она не взлетает - уже попробовал), а по RSTS-E я не знаток. Так что пока - не проверить

    Кстати, попадалась информация об ещё одном (не шибко распространённом) наборе команд процессоре PDP-11 - DIS, который реализует KEV11-CA (23-004B5 и 23-005B5) DIBOL chip set. Который ставится в LSI-11 Пока он мне не попадался...

    - - - Добавлено - - -

    В Software Product Description на те версии Кобола, которые у меня есть - ни слова про RT-11. Похоже, компиляторов под RT у DEC не было...
    Последний раз редактировалось Hunta; 14.08.2020 в 18:28.

  7. #4
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первый вариант программы вычисления быстродействия с прицелом на CIS

    Код:
    .SPEED3
    
    
    ТЕСТ БЫСТРОДЕЙСТВИЯ
    R1 + R0
    БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК)      533
    R1 + @R0
    БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК)      332
    R0 * R0
    БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК)       41
    R2 / R0
    БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК)      130
    CIS MULI
    БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК)        8
    .
    Команда тестирования CIS - взята из демо-теста - MULPI +123456789012345 на +234567890123456
    Щас попробую на более мелком умножении

    - - - Добавлено - - -

    То ли в опубликованном варианте напортачил, то ли в новом, но... сейчас кажет не 8, а 32 тысячи оп/с

    - - - Добавлено - - -

    Малость подправил программы в плане того, как делается вывод:

    Код:
    .RUN SPEED3
    
    Тест быстродействия
    
    R1+R0         13217 тыс. оп./сек
    R1+@R0        12716 тыс. оп./сек
    R0*R0         17681 тыс. оп./сек
    R2/R0         16424 тыс. оп./сек
    CIS MULPI 1 - команда не реализована
    CIS MULPI 2 - команда не реализована
    .
    - - - Добавлено - - -

    Новый результат с KDF11-B

    Код:
    .SPEED3
    
    Тест быстродействия
    
    R1+R0           533 тыс. оп./сек
    R1+@R0          332 тыс. оп./сек
    R0*R0            41 тыс. оп./сек
    R2/R0           130 тыс. оп./сек
    CIS MULPI 1      32 тыс. оп./сек
    CIS MULPI 2      32 тыс. оп./сек
    .
    - - - Добавлено - - -

    Буду ещё думать

  8. #5
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как и скребло подсознание - что то тут не так с последним вариантом программы и последними результатами соответственно
    Видимо, уже был сонным и посадил ошибку
    С утра увидел и поправил.

    Новый (думаю, теперь более правильный - буду ещё думать с методикой подсчёты быстродействия) результат:

    Код:
    .RUN SPEED3
    
    Тест быстродействия
    
    R1+R0           533 тыс. оп./сек
    R1+@R0          332 тыс. оп./сек
    R0*R0            41 тыс. оп./сек
    R2/R0           130 тыс. оп./сек
    CIS MULPI 1       8 тыс. оп./сек
    CIS MULPI 2      32 тыс. оп./сек
    CIS ADDNI 1      52 тыс. оп./сек
    CIS ADDNI 2     104 тыс. оп./сек
    .
    Первый MULPI - это вычисление (+123456789012345) * (+234567890123456)
    Второй MULPI - (+11) * (+12)
    Первый ADDNI - (+123456789012345) + (+234567890123456)
    Второй ADDNI - (+11) + (+12)

    Как я и предполагал, должна быть зависимость от длины операндов - а не одинаково, как в предыдущем сообщении.

    Скорее всего позже добавлю ещё тестов CIS с разной длиной операндов.

  9. #6
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё таки напортачил ещё в одном месте. Надо было делить, а я умножил. Так что старые результаты по CIS по прежнему не верны.
    Новые данные (и вроде корректные )

    Код:
    .RUN SPEED3
    
    Тест быстродействия
    
    R1+R0            533 тыс. оп./сек
    R1+@R0           332 тыс. оп./сек
    R0*R0             41 тыс. оп./сек
    R2/R0            130 тыс. оп./сек
    CIS MULPI 1      0,5 тыс. оп./сек
    CIS MULPI 2        2 тыс. оп./сек
    CIS ADDNI 1     3,25 тыс. оп./сек
    CIS ADDNI 2      6,5 тыс. оп./сек
    MOV 8 word 1    7,75 тыс. оп./сек
    MOV 8 word 2    9,22 тыс. оп./сек
    .

  10. #7
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, если не насажал опять ошибок, то вот как то так:

    Код:
    .RUN SPEED3
    
    Тест быстродействия
    
    R1+R0           532 554 оп./сек
    R1+@R0          331 706 оп./сек
    R0*R0            40 784 оп./сек
    R2/R0           130 207 оп./сек
    CIS MULPI 1         432 оп./сек
    CIS MULPI 2       2 005 оп./сек
    CIS ADDNI 1       3 145 оп./сек
    CIS ADDNI 2       6 496 оп./сек
    MOV 8 word 1      7 736 оп./сек
    MOV 8 word 2      9 205 оп./сек
    .

  11. #8
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как оказалось, DIS - это подмножество CIS. Добавил информацию в первое сообщение.

  12. #9
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновлённый вариант программы (в чём отличие - Пост 104):

    Код:
    .RUN SPEED3
    
    Тест быстродействия
    
    R1+R0 classic                     531 272 оп./сек
    
    R1(23456.)+R0(12345.) empty       165 729 оп./сек
    R1(23456.)+R0(12345.)             126 598 оп./сек ; 536 172
    
    R1+@R0 classic                    331 022 оп./сек
    
    R1(23456.)+@R0(M-12345.) empty    165 728 оп./сек
    R1(23456.)+@R0(M-12345.)          110 531 оп./сек ; 331 867
    
    R0*R0 classic                      40 764 оп./сек
    
    empty 11.*12.                     165 722 оп./сек
    11.*12.                            32 670 оп./сек ; 40 692
    
    R2/R0 classic                     140 979 оп./сек
    
    R2-R3(34567.)/R1(321.) empty      126 606 оп./сек
    R2-R3(34567.)/R1(321.)             20 122 оп./сек ; 23 924
    
    CIS MULPI 1                           432 оп./сек
    
    CIS MULP  1 empty                  57 081 оп./сек
    CIS MULP  1                           459 оп./сек ; 463
    
    CIS MULPI 2                         2 005 оп./сек
    
    CIS MULP  2 empty                  57 078 оп./сек
    CIS MULP  2                         2 459 оп./сек ; 2 570
    
    CIS ADDNI 1                         3 145 оп./сек
    CIS ADDN  1                           518 оп./сек
    CIS ADDNI 2                         6 496 оп./сек
    CIS ADDN  2                         2 563 оп./сек
    MOV 8 word 1                       14 503 оп./сек
    MOV 8 word 2                       17 002 оп./сек
    CIS MOV 8 word 1                   14 015 оп./сек
    .
    Последние три тесты - это сравнение классического цикла на SOB и команды MOVC (пересылка строки символов) CIS

    Код:
        ACTION <<CR><LF>\MOV 8 word 1\>
    
          LET R0 := #ABUF01
          LET R1 := #ABUF02
          THRU R2 := #<ABUF02-ABUF01>/2
            LET (R1)+ := (R0)+
          END
      
    
        ACTION <<CR><LF>\MOV 8 word 2\>
    
          LET R0 := #ABUF01
          LET R1 := #ABUF02
          THRU R2 := #<ABUF02-ABUF01>/4
            LET (R1)+ := (R0)+
            LET (R1)+ := (R0)+
          END
      
    
        ACTION <<CR><LF>\CIS MOV 8 word 1\>
    
          MOVCI
            MBUF01, MBUF02, SPACE
    8 и 9 слов против 4-ых. Надо будет увеличить длину строки с 16-ти символов на побольше

  13. #10
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    4,057
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    160 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот блин Память мне упорно подсказывала, что в MACRO-11 есть директива .PACKED
    И точно - полез в документацию - есть такая

    Код:
        748	000046	   022 	   064 	   126 	  .PACKED +123456789012345, P01LEN
    	000051	   170 	   220 	   022
    	000054	   064 	   134
        749
        750	000056				D01:
        751	000056	060017 			  .WORD 60000+P01LEN
        752	000060	000046'			  .WORD P01VAL
    А вот LINK отказался собирать такую программу Или я что то не так делаю

Страница 1 из 10 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 0
    Последнее: 29.08.2017, 14:06
  2. Jet Set Willy: The Nightmare Edition
    от Rindex в разделе Игры
    Ответов: 0
    Последнее: 05.02.2016, 20:18
  3. Jet Set Luis
    от Rindex в разделе Игры
    Ответов: 1
    Последнее: 28.09.2015, 13:58
  4. 8bit space party, (live set)
    от siril в разделе События
    Ответов: 14
    Последнее: 30.07.2011, 11:46
  5. Jet Set Willy: The 2010 Megamix
    от Rindex в разделе Игры
    Ответов: 4
    Последнее: 30.12.2010, 19:39

Ваши права

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