С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Согласен, про оригинал выразился неточно.
Полагаю, никто не будет спорить, что, так или иначе, ВМ1 содрали с этого самого DEC T-11."Прямого зарубежного аналога нет. Наиболее близкий аналог — однокристальный процессор DEC T-11, но полной совместимости нет"
Своих процессоров у нас не делали, все передиралось с запада.
За подсказку про год спасибо, буду смотреть.
Здесь затрагиваются сложные вопросы квалификации работников НИИТТ и А., а так же вопросы Прачечной.
Что скол велся - это общеизвестный факт с кучей свиделей.
Что скол удался - лишь пространные размышления о "закладках", "ложных структурах" и т.п. туман.
Однозначно, А. корпусировал немецкие кристаллы по крайней мере до 1995 г. Что выпускали на самодельных кристаллах и самодельных шаблонах - точно известно только о лабораторых партиях и неизвестным ПВГ .
Почему Германия поставляла пластины с Z80 на А. - так голод не тетка, как только ЭП восточной германии пришла в упадок, и пластины с Z80 иссякли...
Инсайдер на А. говорил, что А. купил всё по ГДРовсим Z80, но не смог попользоваться купленным, по тех . причинам.
- - - Добавлено - - -
1981 лето - ОП, ОП для вояк - конец 1981, первые рабочие МС1201 ( НМС01100 ) - весна 1982, серия МС1201 - декабрь 1982, первая МС1201 на Экситоне - 1984, МС1201.01 - 1985.
1982 декабрь - первые рабочие образцы, а вот тему сдали в 1984 г., т.к. Представитель Заказчика тогда был малопьющий, и ( коричневую субстанцию ) не хотел подписывать. Но руководство таки настояло - лучше пусть с дырищей, но условно рабочий, чем плата с 1802 серией.
Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения MMTEMA@MAIL.RU
Нет, вообще не содрали, 1801 - полностью оригинальная серия.
На 1801ВМ1 похож на Т-11 примерно как два автомобиля - колеса есть, руль есть, двери есть - ну значит содрали, много ж общего
Микрокод у серии 1801 полностью оригинальный, а еще процессоры серии имеют и более продвинутую архитектуру (предвыборка даже у ВМ1, предекодер у ВМ2/ВМ3, блок арифметики, у ВМ3 интерфейс сопроцессора, контроллер прерываний полностью свой). И даже как бы несильно опоздали, ЕМНИП T-11 в начале 80-ых вышел, 1801ВМ1 - 1982-83 год, 1801ВМ2 - 1984.
- - - Добавлено - - -
Это не мнение, а факт, основанный на результатах реверс-инжениринга![]()
Да, но к самой реализации камня и БК на этом камне у меня много претензий (речь про ВМ1, за остальные не в курсе):
16-битная шина адреса при 16-битном машинном слове - это тупик. Сделали бы хоть 20, ну минимум 18 ША.
Работа с половинками 16-битных регистров очень ущербная, регистры не делятся пополам, как в Z80, у которого, по сути, тоже 16-битные регистры.
Отсутствуют порты ввода-вывода как класс, сделана их имитация путем чтения-записи в память, что сильно ограничивает возможности проца и машины.
Причем часть адресов подменяется реальными портами, физически реализованными на плате, что еще больше запутывает программиста. Нужно курить мануал по каждому порту.
На эту удочку попадаются даже опытные кодеры. Известный Manwe, ваяя код своего плеера для Covox, даже не знал, что обратно данные из "порта" ковокса прочитать не получится.
Довольно странная (с точки зрения спектрумиста) система прерываний. Повторюсь, с точки зрения спектрумиста. Отсутствует привязка прерываний к кадровому синхроимпульсу
(в БК-0010), соответственно, плавное пофреймовое изменение картинки по сигналу VSync реализуется с огромными сложностями. В 11-й модели это, вроде, пофиксили.
Совершенно дурацки реализован экран. Ну кто додумался сделать квадратную область вывода (256х256) прямоугольником??? Делали бы или 256х192, как на Спектруме, или 256х256,
но квадратом на экране, а не 4:3 с растянутыми пикселями. Любой код, работающий с графикой, необходимо обучать, что смещение вверх-вниз не равно влево-вправо.
Автоматом идет следствие - невозможно напрямую 1 в 1 попиксельно копировать изображения на БК или обратно с БК, нужна конвертация.
Уж извините за такие подробности, но, с точки зрения рядового юзера, 8-битный Спектрум как комп состоялся куда лучше 16-битного БК.
- - - Добавлено - - -
Да, штудировал инфу по моделям, 0011М - лучший вариант. Если клава от 10-ки реально подходит, пусть и с перепайкой шлейфов, то подумаю.
Лень писать большой ответ, но претензий собственно к ВМ1 я в Вашем посте не увидел. Есть наезд на архитектуру PDP-11 в-общем, и на БК-001x в частности, но то такое.
Дело в том, что даже стартовый ВМ1 - это приличная машинка, умеющая то, что 8080/z80 никогда не умел:
- асинхронная (16-битная) шина с подтверждением и тайм-аутом
- система исключений
- векторный контроллер прерываний
- ортогональная система команд
То, что оно было медленным в ограниченной реализации (транзисторные бюджеты и скорость вентилей на тех технологиях) и сложным/дорогим никак не умаляет архитектурных принципов. Другое дело что они тогда опередили время и в тот момент уступили более простых решениям для массовых потребителей.
И софт на тех машинках запускали соответствующий. Разве можно сравнить RSX-11M с полноценной вытесняющей многозадачностью, реальным временем, виртуальной памятью, разделением прав доступа, разделяемыми библиотеками (то что позже стало dll/so), с CP/M или MS-DOS? Машинки на PDP-11 до сих пор рулят ядерными реакторами в Штатах, как с этим у Z80 ?Ну не вопрос, для массовой персональной игровой поделки - z80 подошел отлично - дешево, просто и сердито. Почему бы и нет, для братьев Марио можно обойтись без виртуальной памяти и исключений, PDP-11 тут и правда оверкил, и сама бэкашка, честно говоря, весьма странная поделка. Но это не значит что ВМ1 - "не тот". Для тех времен - вполне себе "тот", индустриальный стандарт, я очень рад что начал свою айтишную карьеру с СМ4/RSX-11M а не со Спектрума - пришлось влезть в кучу разных фундаментальных концепций сразу, и это дало мне нормальный стартовый каркас, а не сделало гуру оптимизации клешинга
![]()
Не силен в этой области, пришлось курить доки. В итоге нашел главное по асинхронке:
Т.е. пока устройство назначения не пришлет команду подтверждения приема - процессор простаивает.В момент времени t0 инициатор выдает, на линии шины адрес подчиненного устройства и информацию о типе пересылки (команду). В момент времени t1 он сообщает об этом всем подчиненным устройствам по линии Master-ready (инициатор готов). Все подключенные к шине устройства, при активации этой линии, декодируют адрес. Устройство, для которого предназначена команда, выполняет ее и информирует об этом хозяина сигналом квитирования Slave-ready (подчиненный готов), после чего хозяин может начинать новый шинный цикл.
Это реализуется и на Спектруме, проц вэйтится, если в момент обращения к памяти она занята видеоконтроллером.
С чтением-записью портов примерно та же ситуация, проц можно застопорить по обращению к ним.
Имеется в виду аварийный выход по неправильному коду операции? Тут да, Z80 просто проигнорит его.- система исключений
Как раз процессор Z80 (а не Спектрум) умеет работать с векторами, выставляемыми на шину. Баловался в свое время.- векторный контроллер прерываний
Можно даже реализовать подобие приоритетов прерываний. Но в Спектруме это не реализовано для простоты и дешевизны.
А вот это и есть то, что зацепило меня в БК (процессоре). Ну, удивило, обрадовало, в этом смысле.- ортогональная система команд
Можно одной командой творить штуки, которые у Z80 займут несколько. Но, тут есть одно большое НО.
Поискав данные о растактовке команд ВМ1 (я ж кодер, ага), внезапно обнаружил, что самые "вкусные" команды
жрут до 60 тактов процессора. То бишь проц банально молотит кучу мелких последовательных операций на одну команду.
Z80 сделает то же самое за примерно такое же время, просто ему приходится расписывать команды отдельно.
В целом, ВМ1, конечно, сильнее Z80, но в БК все та же убогая страничная адресация памяти свыше 64К. А все из-за куцей шины адреса.
Плюс (для БК10 особенно критично) любая команда жрет минимум 2 байта памяти. Даже банальный NOP. В итоге код разбухает.
Неужели нельзя было сделать некий набор однобайтных инструкций? Пусть машинное слово 2 байта, но можно же заложить условие, скажем,
что однобайтные команды обязательно идут по две. Допустим, работа с половинками регистров. Вариантов можно придумать массу.
Ладно, все это к топику отношения не имеет. Но сравнительный анализ интересен))) Прошу не подчищать сообщение.
Нет, тут есть принципиальная разница - между снятием READY и ожиданием RPLY.
При ожидании RPLY у ВМ1 запускается внутренний таймер, и если по истечении таймера ответ не получен - возникает исключение.
Такой подход позволяет реализовать простейший PnP и программно определить есть что-то по интересующему адресу или нет.
Более того, можно принципиально реализовать интересные вещи типа Substrative Decoding.
I/O порты это вообще очень страшная вещь, стоившая индустрии миллиарды долларов, и эти счета до сих пор полностью не оплачены.
Digital на самом деле сделала крутейший шаг вперед выкинув адресное пространство портов и включив устройства в адресное пространство памяти, унифицировав транзакции шины. Да, когда у вас нет защиты памяти, и всего 64К мгновенно доступны по произвольному адресу - втыкать устройства в это пространство страшно и не очень надежно. Но в DEC понимали что защита памяти будет, обязательно будет, и рискнули сделать унификацию - они умели думать на пару шагов вперед. Нету на шинах DECа адресного пространства портов. Это делает транзакции на шине полностью унифицированными и их количество минимальным - схемы декодирования упростились намного, DMA стал унифицированным и прочее. А вот x86, например, до сих пор цепляется за отдельное адресное пространство портов и все время платил за это свою цену - отдельный тип транзакций, отдельные схемы декодирования, отдельные шины, отдельные инструкции. Дальше-больше, отдельный тип транзакций PCI, типы BAR. Скорости растут, появляются новые шины, и везде это гемор с отдельным классом транзакций I/O портов тянется, взымая свою плату с процессоров, чипсетов и софта. Но шины все быстрее - синхронные протоколы, последовательные каналы, пакетный обмен, и на этом - все, I/O наконец умирает, например в шине AXI таких транзакций нет. Теоретически можно тегировать, но никто с этим уже не заморачивается. И вот уже спецификация SR-IOV говорит что устройства с I/O BAR не подлежат виртуализации. Почему? "Идите на@#й со своими I/O портами, вот почему" - ласково сказали разработчики рут-комплексов, виртуальных функций, IOMMU/VT-d и гипервизоров. В-общем, I/O порты на заре индустрии имели смысл, но потом они собрали кровавую жатву обратной совместимости, и местами все еще продолжают собирать, хотя сегодня изоляция адресных пространств реализуется совсем другими методами. Ото я загнул?
Да, про IM2 я подзабыл, так что признаем что умеет, да.
Да, это правда, ВМ1 не самая быстрая реализация команд PDP-11. Первый блин, к тому же реализованный на микроавтомате сделанном для другой архитектуры. ВМ2 - "работа над ошибками", при сопоставимом транзисторном бюджете работает намного лучше - предвыборка, предекодер, простой конвейер, блок арифметики, вылизанная микропрограмма.
Да все можно, но это будет другая архитектура. И опять-таки, надо смотреть не на братьев Марио, а в завтра - проблема памяти решается, объемов кода решается, а моноширинная система команд остается. И на этом сегодня стоят и ARM-ы и RISC V - декодер проще, конвейер проще, перформанс на такт выше. Но PDP-11 - это чуть другое, не RISC, да, но свой бонус от ортогональной системы команд он тоже получил - первые PDP-11 удалось собрать на мелкой логике.
Последний раз редактировалось Vslav; 19.07.2021 в 22:20.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)