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

User Tag List

Страница 67 из 226 ПерваяПервая ... 636465666768697071 ... ПоследняяПоследняя
Показано с 661 по 670 из 2253

Тема: Особенности процессоров и устройств архитектуры PDP-11. Тесты. Диагностика.

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

    По умолчанию

    На данной стадии исследований мега-глюка 1801ВМ2 его абстрактная модель представляется весьма простой:

    Все команды делятся на четыре группы по отношению к глюку:
    1. Инвариантные к глюку ( вроде TST R0 или MOV PC,R5 и др. ).
    2. Вызывающие глюк ( вроде MOV (PC),R0 и др. ).
    3. Сбрасывающие глюк ( вроде MOV (PC),R0 ; BR ; TST PC и др. ).
    4. Мутные ( NOP, MTPS ), которые могут сбросить глюк, а могут и не сбросить.

    Все команды, вызывающие глюк - также и сбрасывают его при его наличии. Причём, сначала происходит сброс глюка и лишь затем его активация.

    Объяснение механизма глюка требует учёта двух различных указателей PC :
    1. Указатель на аргумент
    2. Указатель на команду

    Первый указатель применяется как значение PC во всех командах, где он используется непосредственно или как база для обращения к памяти ( как в командах MOV PC,R5 ; MOV (PC),R0 ; BR и др. ).

    Второй указатель служит для извлечения кода исполняемой команды.

    В обычной ситуации при выполнении обычных команд эти указатели совпадают.

    После выполнения "глючной" команды типа MOV (PC),R0 - сначала выполняется та команда, на которую смотрит указатель команды. Если эта команда относится к группе команд, сбрасывающих глюк - глюк не возникает и выполнение продолжается как обычно. То же справедливо и для нескольких "глючных" команд, идущих друг за другом - только последняя из них может вызвать глюк, если следом за ней не идёт "сбрасывающая" команда.

    Если после выполнения "глючной" команды указатель команды смотрит на инвариантную команду - после её первого выполнения указатель команды не увеличивается на 2 и инвариантная команда выполняется повторно. При этом возникает состояние глюка, характеризующееся тем, что указатель аргумента опережает указатель команды на 2.

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

    Если в качестве сбрасывающей команды выступает глючная - она порождает глюк по новому значению исправленного указателя команды ( т.е. не в следующем слове, а через одно слово ).

    .......................

    Дальнейшего исследования требуют аспекты влияния мега-глюка на обработку прерываний, статистические параметры установки и сброса глюка различными командами и вопросы "трапообразования" при появлении команды NOP вслед за большим количеством идущих подряд глючных команд.
    Последний раз редактировалось Patron; 29.04.2013 в 10:46.

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

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

    По умолчанию

    Тест VM2T19.SAV - 19-й тест мега-глюка процессора 1801ВМ2 - предназначен для его дальнейшего изучения.

    Тест осуществляет циклический подсчёт глюков. При запуске можно указать значение для MTPS и количество циклов.

    Тест выполнен на альтернативном "однословном" движке, поэтому его первый запуск рекомендуется проводить при разрешённых прерываниях.
    Код:
    	Mov	$Rept, R5
    	Clr	R0
    	Mov	#1, R1
    	Clr	R2
    	Clr	R3
    	Clr	R4
    
    	MTPS	$MTPS
    3$:
    	Tst	R1
    	Cmp	(PC), R0
    	Tst	R1
    
    	Br	.+2.
    	Dec	R2
    	Inc	R2
    
    	Inc	R3
    	Inc	R4
    
    	Br	.+2.
    	Tst	R1
    	SOB	R5, 3$
    
    	MTPS	#0
    При отсутствии мега-глюка запуск выглядит так:

    Код:
    .RU VM2T19
     
    1801VM2 MegaBUG test #19
     
    MTPS   :  00000 >
    Loops  :  10000 >
     
    CMP  (PC),R0            Loops: 10000    Bugs:     0
    CMPB (PC),R0            Loops: 10000    Bugs:     0
    MOV  (PC),R0            Loops: 10000    Bugs:     0
    MOVB (PC),R0            Loops: 10000    Bugs:     0
    ADD  (PC),R0            Loops: 10000    Bugs:     0
    SUB  (PC),R0            Loops: 10000    Bugs:     0
    BIT  (PC),R0            Loops: 10000    Bugs:     0
    BITB (PC),R0            Loops: 10000    Bugs:     0
    BIS  (PC),R0            Loops: 10000    Bugs:     0
    BISB (PC),R0            Loops: 10000    Bugs:     0
    BIC  (PC),R0            Loops: 10000    Bugs:     0
    BICB (PC),R0            Loops: 10000    Bugs:     0
     
    Program completed.
     
    .
    Вложения Вложения
    • Тип файла: zip VM2T19.zip (6.0 Кб, Просмотров: 205)

  4. #663
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Приехал DHV11.
    Как будет время, надо будет нарисовать тестов разных...
    Экий теперь монстр на табуретке с 17 терминальными портами

    Код:
    18.000 MHz
    CPU Options:    FPA     
    
    Memory Map 
    Starting   Ending       Size in    CSR          CSR     Bus
    Address    address      K Bytes    address      type    type 
    
    00000000 - 07777776     2048       17772100     ECC     PMI
    10000000 - 17757776     2040       17772102     ECC     PMI
    
    I/O page Map 
    Starting   Ending 
    Address    address 
    
    17760100 - 17760106     
    17760500 - 17760516     
    17765000 - 17765776     CPU ROM or EEPROM  
    17772100 - 17772102     Memory CSR's
    17772150 - 17772152     
    17772200 - 17772276     Supervisor I and D PDR/PAR's
    17772300 - 17772376     Kernel I and D PDR/PAR's
    17772516                MMR3
    17773000 - 17773776     CPU ROM 
    17774440 - 17774456     
    17774500 - 17774502     
    17776500 - 17776536     
    17777514 - 17777516     
    17777520 - 17777524     BCSR, PCR, BCR/BDR
    17777546                Clock CSR
    17777560 - 17777566     Console SLU
    17777572 - 17777576     MMR0,1,2
    17777600 - 17777676     User I and D PDR/PAR's
    17777744 - 17777752     MSER, CCR, MREG, Hit/Miss
    17777766                CPU Error
    17777772                PIRQ
    17777776                PSW
    Код:
    Processor Type:  11/83          Memory Size:  2044. Kw
    
    Options:
    
            Floating Point Processor (FP11)
            Extended Instruction Set (EIS)
            Extended (22-Bit) Addressing
            Cache Memory
            Parity Memory
    
    Name    Vector     CSR      Unit    Type      Remark
    DUA      154      172150                     
                                 0      RA90     
                                 1      RA90     
                                 2      RA82     
                                 3      RA82     
    MUA      260      174500                     
                                 0      TU81     
    LPA      200      177514                     
    YLA      060      177560                     
    YLB      300      176500                     
    YLC      310      176510                     
    YLD      320      176520                     
    YLE      330      176530                     
    YVA      350      160500                     
    YZA      340      160100
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	CIMG2648.jpg 
Просмотров:	688 
Размер:	87.9 Кб 
ID:	41267  
    Последний раз редактировалось form; 29.04.2013 в 17:19.
    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

  5. #664
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первая программка - инитит устройство, помещает в буфер строку с кодами диагностики, запускает вывод этой строки по DMA через DHV11 и печатает ее же на экран консоли программы.

    Код:
    	.TITLE	DHVT1 -- ТЕСТ DMA
    	.IDENT	/V01.00/
    
    LINE	==	7			;НОМЕР ЛИНИИ
    
    DHCSR	==	160500			;РЕГИСТР СОСТОЯНИЯ/УПРАВЛЕНИЯ
    DHRXB	==	DHCSR+2			;РЕГИСТР БУФЕРА ПРИЕМНИКА
    DHLPR	==	DHCSR+4			;РЕГИСТР ПАРАМЕТРОВ ЛИНИИ
    DHLBA	==	DHCSR+12		;РЕГИСТР АДРЕСА БУФЕРА (МЛ)
    DHHBA	==	DHCSR+14		;РЕГИСТР АДРЕСА БУФЕРА (СТ)
    DHCNT	==	DHCSR+16		;РЕГИСТР СЧЕТЧИКА БАЙТОВ
    
    MR	==	40			;БИТ СБРОСА
    TXEN	==	100000			;БИТ РАЗРЕШЕНИЯ ПЕРЕДАТЧИКА
    GO	==	200			;БИТ ЗАПУСКА ПЕРЕДАЧИ
    
    	.MCALL	.EXIT,.PRINT		;СИСТЕМНЫЕ МАКРОСЫ
    
    START::	MOV	#MR,@#DHCSR		;СБРОС УСТРОЙСТВА
    10$:	BIT	#MR,@#DHCSR		;СБРОС ЗАВЕРШЕН?
    	BNE	10$			;ПОКА НЕТ
    
    ;В ЭТОМ МЕСТЕ:
    ;	- СБРОС УСТРОЙСТВА ЗАВЕРШЕН
    ;	- ЛИНИИ ВЫСТАВЛЕНЫ В 9600/8/N/1,
    ;	- ВЫПОЛНЕНА ВНУТРЕННЯЯ ДИАГНОСТИКА
    ;	- В FIFO ПРИЕМНИКА ПОМЕЩЕНЫ 8 БАЙТ КОДОВ ДИАГНОСТИКИ
    ;	  И НОМЕРА ВЕРСИИ ФИРМВАРЯ
    
    ;ВЫЧИТЫВАЕМ КОДЫ ДИАГНОСТИКИ, НОМЕР ВЕРСИИ ФИРМВАРЯ И
    ;ЗАПОЛНЯЕМ БЛОК АРГУМЕНТОВ ДЛЯ $EDMSG
    
    	MOV	#ARGS,R0		;БЛОК АРГУМЕНТОВ
    	MOV	#DIAG,R1		;БУФЕР КОДОВ
    	MOV	#8.,R2			;КОЛИЧЕСТВО БАЙТОВ
    20$:	MOV	R1,(R0)+		;АДРЕС БАЙТА -> БЛОК АРГУМЕНТОВ
    	MOVB	@#DHRXB,(R1)+		;ЧИТАЕМ БАЙТ
    	SOB	R2,20$			;...
    
    	MOV	#BUFF,R0		;АДРЕС ВЫХОДНОГО БУФЕРА
    	MOV	#FMTS,R1		;ФОРМАТНАЯ СТРОКА
    	MOV	#ARGS,R2		;БЛОК АРГУМЕНТОВ
    	CALL	$EDMSG			;ФОРМАТИРУЕМ СТРОКУ
    	CLRB	@R0			;ДЕЛАЕМ ASCIZ
    
    	MOV	#LINE,@#DHCSR		;ВЫБИРАЕМ НОМЕР ЛИНИИ
    	SUB	#BUFF-2,R0		;ВЫЧИСЛЯЕМ ДЛИНУ В БАЙТАХ
    	MOV	R0,@#DHCNT		;УСТАНАВЛИВАЕМ ДЛИНУ
    	MOV	#BUFF-2,@#DHLBA		;УСТАНАВЛИВАЕМ АДРЕС СТРОКИ
    	MOV	#TXEN!GO,@#DHHBA	;ЗАПУСКАЕМ ПЕРЕДАЧУ
    
    	.PRINT	#BUFF			;...И ЗДЕСЬ ЗАПУСКАЕМ
    
    30$:	TST	@#DHCSR			;ПЕРЕДАЧА ЗАВЕРШЕНА?
    	BPL	30$			;ПОКА НЕТ
    
    	.EXIT				;ВСЕ
    
    ARGS::	.BLKW	8.
    DIAG::	.BLKB	8.
    
    	.BYTE	15,12
    BUFF::	.BLKB	80.
    
    FMTS::	.ASCIZ	/Diag codes: %8B/
    
    	.END	START
    Код:
    .RU TEST
    Diag codes: 201 201 201 201 201 201 013 011
    
    .
    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

  6. #665
    Member
    Регистрация
    03.06.2013
    Адрес
    г. Москва
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет всем. Пробный пост. Зарегился тут по совету Patron. В общем, есть некий наскоро сделанный стенд для изучения 1801ВМ2. Поскольку процессор чисто статический, стенд прост до безобразия: 1801ВМ2 обвязан двумя 580ВВ55, которые программируются от маленькой машинки с CP/M-80. Весь функционал программный, ничего аппаратного (кроме ТЛ-ки aka HCT14 на CLCI для гарантии крутизны фронта). Стенд временный, и пока он есть, можно прояснить всяческие вопросы относительно того, что происходит на ногах процессора, потактово. Инструментальный софт написан наскоро, хитрой функциональности нету (хотя предел хитрости и не ограничен при таком полнейшем контроле за работой процессора). Сейчас можно запускать программу, смотреть циклы шины, смотреть, сколько тактов затрачено. Также можно регулировать задержку выдачи RPLY в ответ DIN/DOUT, но фиксированно для всех циклов данного сеанса прогона.

  7. #666
    Member
    Регистрация
    03.06.2013
    Адрес
    г. Москва
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процессор 1801ВМ2 иногда делает лишние движения на шине, которые можно было и не делать. А именно, используются циклы чтение-модификация-запись в тех случаях, когда логично было бы обойтись только записью. Читаемые данные не нужны для получения результата, но чтение происходит. Или происходит повторение цикла чтения, хотя данные уже прочитаны. Например, такой тестовый код (в синтаксисе не напутал?)
    Код:
    MOV #5001, R0
    MOV #377, R1
    MOV #123456, @#5000
    BISB R1, @R0
    MOVB R1, @R0
    MTFS @R0
    CLRB @R0
    DEC R0
    CLR @R0
    MOVB #123456, @#5001
    NOP
    HALT
    вызывает такую последовательность циклов шины (это скопированный экран вывода программы работы со стендом, U - user mode, H - halt mode, R/W - состояние WTBT при SYNC, адрес, направление, данные, B/W - байт или слово. Все прозрачно)
    Код:
    UR 001000 I 012700
    UR 001002 I 005001
    UR 001004 I 012701
    UR 001006 I 000377
    UR 001010 I 012737
    UR 001012 I 123456
    UR 001014 I 005000
    UW 005000 O 123456W
    UR 001016 I 150110
    UR 001020 I 110110
    UR 005001 I 123456 O 177400B
    UR 001022 I 106710
    UR 005001 I 177456 O 177400B
    UR 001024 I 105010
    UR 005001 I 177456 O 104000B
    UR 001026 I 005300
    UR 005001 I 104056 O 000000B
    UR 001030 I 005010
    UR 001032 I 112737
    UR 005000 I 000056 O 000000W
    UR 001034 I 123456
    UR 001034 I 123456
    UR 001036 I 005001
    UR 005001 I 000000 O 027000B
    UR 001040 I 000240
    UR 001042 I 000000
    UR 001044 I 044076
    SEL 100000
    HR 100170 I 100174
    R0=005000 R1=000377 R2=157416 R3=053416 R4=153456 R5=153062 R6=001000 R7=001044
    RS=000200

  8. #667
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mixa64 Посмотреть сообщение
    R/W - состояние WTBT
    Не совсем понятно что такое R/W для сигнала, означающего запись байта (операции чтения байта на шине не бывает)
    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

  9. #668
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Не совсем понятно что такое R/W для сигнала, означающего запись байта (операции чтения байта на шине не бывает)
    Сигнал WTBT имеет двойное назначение - при ниспадающем SYNC низкий уровень на WTBT говорит что сейчас будет цикл записи. А уже позже, при активном (низком) DOUT, WTBT служит для различения циклов записи байта/слова.
    Последний раз редактировалось Vslav; 04.06.2013 в 08:30.

  10. #669
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Сигнал WTBT имеет двойное назначение - при ниспадающем SYNC низкий уровень на WTBT говорит что сейчас будет цикл записи. А уже позже, при активном (низком) DIN, WTBT служит для различения циклов записи байта/слова.
    Это понятно. Не понятно "R/W" в этом контексте
    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

  11. #670
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Это понятно. Не понятно "R/W" в этом контексте
    Ну... Понятно что все всем понятно
    Там интересно, что после CLR @R0 процессор перечитал слово 123456 по адресу 1034 дважды. Запись в память отменяет результаты опережающего чтения потока команд? Но почему дважды? И почему ранее в этом примере такого нет (есть еще предвыборка по адресу 1020).

Страница 67 из 226 ПерваяПервая ... 636465666768697071 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тесты ВМ1
    от nzeemin в разделе БК-0010/0011
    Ответов: 90
    Последнее: 05.10.2018, 12:24
  2. Диагностика
    от dk_spb в разделе Корвет
    Ответов: 31
    Последнее: 21.07.2017, 23:52
  3. Проблема двух процессоров.
    от Mikka_A в разделе Несортированное железо
    Ответов: 21
    Последнее: 28.11.2006, 17:04

Ваши права

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