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

User Tag List

Страница 29 из 183 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя
Показано с 281 по 290 из 1824

Тема: Эмулятор ДВК

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Кстати, по поводу захвата шины и процессора 1801ВМ1. Читал, что при захвате шины он позволяет захватившему устройству читать регистры межпроцессорной связи и таймера. А вот как обстоит с внешними регистрами SEL2 и SEL1? Формирует ли процессор в этом случае сигналы SEL2 и SEL1, если захватившее устройство выставило адрес 177714 или 177716? Ведь обычно регистр 177716 отвечает только на сигнал SEL1 и даже не надо формировать RPLY.
    Надо написать тестовую программу для КМД и дождаться, когда anonymous активирует свою ДВК-1 с КМД.

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Надо написать тестовую программу для КМД и дождаться, когда anonymous активирует свою ДВК-1 с КМД.
    Написать программу не проблема, а вот КМД надо с -255-й прошивкой, ибо программу придется переносить в СОЗУ, с "окном" из "окна" работать нельзя. А в КМД с 537РУ8 памяти много.

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    с "окном" из "окна" работать нельзя. А в КМД с 537РУ8 памяти много.
    Если всю подготовку провести в памяти ДВК, то "внутренняя" часть теста не слишком длинная:
    Код:
    Test:
    	Mov	R0, (R2)		; Настроить окно на верхние адреса
    	Mov	(R1), (R3)	; Запись из SEL1 в копию регистра данных
    Trap4:				;  или Trap4
    	Mov	R5, SP		; Восстановить стек.
    	Return			; Завершение подпрограммы пользователя
    Перед переходом в память КМД по команде JMP - надо настроить обработчик прерываний на метку Trap4 и подготовить R0, R1, R2 и R5.

    R3 изначально указывает в КМД на то слово, которое будет записано в регистр данных после завершения программы пользователя.

    ДВК-шная часть теста ждёт, когда КМД выполнит программу пользователя и выводит на экран содержимое регистра данных КМД.
    Последний раз редактировалось Patron; 05.01.2014 в 00:33.

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

    По умолчанию

    Моя программа вывода надписи из КМД и проверки некоторых регистров:
    Код:
    	.TITLE	TSKMD1
    	.MCALL	.PRINT,.EXIT
    START:	.PRINT	#VER
    5$:	BIT	#100,@#177564
    	BNE	5$
    10$:	BIT     #40,@#172140
            BEQ     10$
            MOV     #35,@#172140
    20$:    TSTB    @#172140
            BPL     20$
            MOV     #KMDPRG,@#172142
    30$:    BIT     #40,@#172140
            BEQ     30$
    	BIT	#100,FLG1
    	BNE	31$
    	.PRINT	#NEXEC
    	.EXIT
    31$:	BIT	#200,FLG
    	BEQ	32$
    	.PRINT	#A3PR
    32$:	BIT	#1,FLG1
    	BNE	40$
    	.PRINT	#AD3NPR
    	BR	41$
    40$:	.PRINT	#AD3PR
    	BIT	#2,FLG1
    	BEQ	41$
    	.PRINT	#AD3N7
    41$:	BIT	#400,FLG
    	BEQ	33$
    	.PRINT	#A7PR
    33$:	BIT	#4,FLG1
    	BNE	42$
    	.PRINT	#AD7NPR
    	BR	43$
    42$:	.PRINT	#AD7PR
    	BIT	#10,FLG1
    	BEQ	43$
    	.PRINT	#AD7N7
    43$:	.EXIT
    FLG1:	.WORD	0
    VER:	.ASCIZ	/TEST KMD WINDOW ver.1/
    NEXEC:	.ASCIZ	<16>/pODPROGRAMMA W kmd NE ZAPU]ENA/<17>
    AD3PR:	.ASCIZ	<16>/aDRES 177564(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
    AD3NPR:	.ASCIZ	<16>/aDRES 177564(/<17>/WINDOW/<16>/=3) NE PRISUTSTWUET/<17>
    AD7PR:	.ASCIZ	<16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
    AD7NPR:	.ASCIZ	<16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) NE PRISUTSTWUET/<17>
    AD3N7:	.ASCIZ	<16>/bIT 7(gp) W 177564 NE USTANOWLEN/<17>
    AD7N7:	.ASCIZ	<16>/bIT 7(gp) W 17777564 NE USTANOWLEN/<17>
    A3PR:	.ASCIZ	<16>/aDRES 160000(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
    A7PR:	.ASCIZ	<16>/aDRES 17760000(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
    	.EVEN
    KMDPRG:	MOV	#20000,R0
    	MOV	#KMDPR1+40000,R1
    	MOV	#<KMDEND-KMDPR1>/2,R2
    1$:	MOV	(R1)+,(R0)+
    	SOB	R2,1$
    	JMP	@#20000
    KMDPR1:	MOV	@#177102,SAVRD
    	MOV	74(R3),SAV4
    	MOV	#<TR4-KMDPR1+20000>,74(R3)
    	BIS	#100,FLG
    	MOV	#<3*400+3>,@#177102
    	TST	@#60000
    	BCS	1$
    	BIS	#200,FLG
    1$:	TST	@#77564
    	BCS	10$
    	BIS	#1,FLG
    	MOV	#2,R2
    	MOV	#<HEL3-KMDPR1+20000>,R0
    	CALL	PRWND
    10$:	MOV	#<377*400+377>,@#177102
    	TST	@#60000
    	BCS	2$
    	BIS	#400,FLG
    2$:	TST	@#77564
    	BCS	20$
    	BIS	#4,FLG
    	MOV	#10,R2
    	MOV	#<HEL377-KMDPR1+20000>,R0
    	CALL	PRWND
    20$:	MOV	SAVRD,@#177102
    	MOV	SAV4,74(R3)
    	MOV	FLG,@#FLG1+40000
    	RETURN
    PRWND:	MOV	#10000,R1
    1$:	TSTB	@#77564
    	BMI	2$
    	SOB	R1,1$
    	BIS	R2,FLG
    	RETURN
    2$:	MOVB	(R0)+,@#77566
    	BNE	PRWND
    	RETURN
    TR4:	BIS	#1,@SP
    	RTI
    SAV4:	.BLKW	1
    SAVRD:	.BLKW	1
    FLG:	.WORD	0
    HEL3:	.ASCIZ	/Hello from KMD, WINDOW=3/<15><12>
    HEL377:	.ASCIZ	/Hello from KMD, WINDOW=377/<15><12>
    	.EVEN
    KMDEND:
    	.END	START

  5. #285
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Активное устройство должно было "захватить" шину перед выставлением адреса. Пока активен сигнал захвата шины - все остальные активные устройства должны ждать.

    При многопоточной эмуляции роль захвата шины играет межпоточная блокировка. При обращении к заблокированному ресурсу поток впадает в спячку до снятия блокировки тем потоком, который раньше успел захватить этот ресурс.
    Не слишком ли это медленно, если устройства захватывают шину по 1000 раз в секунду?

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Не слишком ли это медленно, если устройства захватывают шину по 1000 раз в секунду?
    Да не очень-то. Ведь сам центральный процессор ее использует не все время, только во время операций чтения/записи. Так что устройство ПДП и попадает в эти свободные окна. Подтормозить можно центральный вычислитель, если устройство ПДП все время будет обращаться к несуществующему адресу (TRAP_4).

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

  8. #287
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Да не очень-то. Ведь сам центральный процессор ее использует не все время, только во время операций чтения/записи. Так что устройство ПДП и попадает в эти свободные окна. Подтормозить можно центральный вычислитель, если устройство ПДП все время будет обращаться к несуществующему адресу (TRAP_4).
    Я имею ввиду, не слишком ли медленное построение эмулятора, когда захват шины - это межпоточная блокировка.

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я имею ввиду, не слишком ли медленное построение эмулятора, когда захват шины - это межпоточная блокировка.
    Поэтому блокировка ставится не на шину, а на устройство. Память допускает полностью параллельную работу, а изменить состояние любого конкретного устройства может только тот поток, который первым туда "залез".

    Но строго говоря, даже если ставить блокировку на любое обращение к "общей" шине - многопоточная эмуляция будет медленнее однопоточной только на одноядерном процессоре.

  10. #289
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Но строго говоря, даже если ставить блокировку на любое обращение к "общей" шине - многопоточная эмуляция будет медленнее однопоточной только на одноядерном процессоре.
    Чего-то мне кажется, что это вообще достаточно медленная концепция.

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Чего-то мне кажется, что это вообще достаточно медленная концепция.
    Это с непривычки.

    Допустим, мы эмулируем два процессора на одной шине. При однопоточной эмуляции - в каждый момент времени работает эмулятор одного процессора, а эмулятор другого ждёт своей очереди. При многопоточной эмуляции - эмуляторы обоих процессоров работают одновременно - каждый на своём физическом процессоре хост-машины.

    Чтобы при многопоточной эмуляции быстродействие с блокировками было ниже, чем при однопоточной без блокировок - код блокировки должен суммарно выполняться дольше, чем код эмуляции - тогда удвоенное быстродействие двух физических ядер будет "убито" непрерывно выполняющимся кодом блокировок. Если код блокировок будет "отъедать" ровно столько же процессорного времени хост-машины, сколько и код эмуляции - быстродействие многопоточной эмуляции будет РАВНО быстродействию однопоточной. Во всех остальных случаях многопоточная эмуляция будет быстрее.

Страница 29 из 183 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

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