Неплохо потребляет старый комп — 288 руб/месяц. И это ещё при весьма оптимистичной оценке мощности в 100 Вт.
Я пока думаю в сторону RaspberryPi + родная камера к ней
Понятно. У вас всё-таки есть минимум два аплинка, AS и сети для неё, и вы хотите их использовать надеясь в будущем купить маршрутизатор и/или сохранить некоторую независимость от аплинков. Ок, свою AS вы проаннонсируете со всеми community и prepend-ами, а что будете делать с исходящим трафиком? Если один аплинк, то ладно, вариантов всё равно нет. А если несколько и один из них упал внезапно?
Насчёт фильтрации префиксов на аплинках — для них это проза жизни. Посмотрите например что отдаёт Голден Телеком aka Sovam:
http://www.ripe.net/whois?AS3216
Кому full-view, кому default, а там несколько сотен клиентов. Часть таблицы признаю не встречал, но там дел то ровно на две строчки в конфигурации. Можете и на своей стороне фильтровать.
1. Двух интерфейсов 10GE вам не хватит — чтобы RIPE выдал вам BGP AS, у вас должно быть как минимум два апстрима. Так что 10GE надо минимум три — два к апстримам и один в вашу сеть.
2. Нужен ли вам FullView? Договоритесь с апстримами, пусть отдадут вам, например, префиксы /16 и меньше. Роутинг будет не совсем оптимальный, но это будет не самой большой вашей проблемой.
3. Маршрутизировать 10Gbps виртуальной машине будет тяжко. А если ещё какую-нибудь фильтрацию пакетов добавить… Что Cisco что Juniper тут совершенно не напрасно используют TCAM, QFP и прочее.
Это хороший вопрос.
Софт был написан более 30 лет назад, уже давно нет организации, которая это делала. Не знаю даже, где можно выяснить, принадлежат ли сейчас на эту прошивку права кому-либо.
Когда я покупал БК, я не подписывал никакого лицензионного соглашения, да собственно тогда в СССР и понятия такого не было.
Я думаю, что мои действия попадают под понятие добросовестного использовани (fair usage), но я не юрист и могу ошибаться. Был бы благодарен за квалифицированные мнения.
Строго говоря, БК-0010 был с плёночной клавиатурой, как на вашем фото. С механической был БК-0010-01. Дребезжала она очень сильно.
В 90-е выпускалась хорошая клавиатура МС-7008.01, совместимая с БК, значительно более качественная.
Честно говоря, не вижу связи между косвенной адресацией и раздельностью шин адреса и данных. DEC использовал архитектуру с равноправными регистрами общего назначения, Intel со специализированными (аккумулятор, индексные, счётчик и так далее). Вот отсюда и разница.
Спасибо за статью
А можете рассказать по шагам как у вас происходит взаимодействие с заказчиком? Можно взять для примера мою недавнюю ситуацию — сгорел RAID-контроллер и остались пять дисков, которые жили на этом контроллере, объединённые в RAID-5. Встал вопрос, что можно спасти. Все организации, которые я нашел, предлагали одно и то же — присылайте диски с курьером, мы посмотрим, что можно сделать, и объявим цену. На этом этапе настораживало уже то, что в RAID-5 важен порядок дисков, а им никто не интересовался. Да и название контроллера не помешало бы узнать, а об этом тоже никто не спрашивал. Допустим, всё удалось восстановить. Что дальше? Вы пересобираете RAID и отдаёте информацию обратно на тех же дисках (если они исправны)?
Спасибо.
Да я собственно процессор и всё остальное уже сделал, у меня есть работающий вариант эмулятора. Мне осталось сделать описание наиболее интересных моментов и выложить здесь (и оставшуюся часть исходников на GitHub).
На БК-0010 (1801ВМ1) были базовые команды PDP-11 плюс некоторые из расширенного набора (XOR, SOB).
У Вас сложилось совершенно верное впечатление.
Проект, на который Вы ссылаетесь очень интересен прежде всего тем, что люди проделали огромную работу и нашли много плохо документированных особенностей 1801ВМ1 в том числе аппаратные баги (действительно баги, например там в каком-то месте просто не хватает транзистора). Целью того проекта было именно сделать аналог 1801ВМ1 на современной элементной базе, то есть сделать некое изделие, которое можно впаять вместо ВМ1 в БК-0010. Этой цели, насколько я понимаю, добились.
Взять тот проект и переделать его в soft core не получится. Во-первых, в 1801ВМ1 использовались двунаправленные и мультиплексированные шины, в качестве внутренних шин в FPGA такие использовать нельзя. Во-вторых, если посмотреть на Verilog-исходники того проекта, то там практически gate-level дизайн. То есть описано, что сигнал на выводе таком-то представляет собой функцию в нормально дизъюнктивной форме от сигналов таких-то. Понятно, что это следствие обратного инжиниринга, но сюда невозможно ни добавить новую команду, ни сделать процессор с таким же набором команд, но с отдельными шинами для адреса и данных.
Наконец основная задача у меня — показать, что можно сделать с помощью Vivado. Проект БК-0010 — лишь средство сделать это интересным.
Да, так и было. В 8 килобайт сумели засунуть полноценный интерпретатор с поддержкой арифметики с плавающей точкой (пусть числа были пятибайтовые, но всё же). Ассемблерный код интерпретатора просто чудовищный — использовались все возможности процессора и самые тяжелые режимы адресации.
Это действительно очень тонкий момент. Если посмотреть на оригинальные тайминги PDP-11, то там видно, что например команда MOV R0, @#1000 выполняется за меньшее время и требует на одно обращение к памяти меньше, чем ADD R0, @#1000 именно за счёт того, что нам не нужно старое значение по адресу 1000. У меня сделано так же.
CLR в моей текущей реализации старое значение не читает. Тут дело не только в таймингах, а ещё и в том, что на этапе чтения из памяти может случиться ошибка шины.
Так же требуется специальная обработка для команд CLR, TST, CMP, BIT, JMP, JSR — где-то нам не нужно старое значение, где-то новое, где-то косвенность адресации уменьшается на один уровень.
Меня как любителя это никак не задело, всё же 7-е поколение FPGA появилось аж в 2010 году, Artix-7 в 2011, Zynq-7000 если не ошибаюсь в 2012. Предполагаю, что это важно для тех, кто занимается коммерческой разработкой под FPGA и поддерживает старые проекты на Spartan.
И ещё жаль CPLD. Новых нет, а старые поддерживаются только в ISE.
Да, естественно, для того чтобы сделать БК-0010, нам надо сделать soft-процессор на HDL с системой команд PDP-11. Microblaze нам тут не подойдёт, MIPS тоже, к тому же я не думаю, что про MIPS кто-то расскажет лучше, чем YuriPanchul
За одну статью обо всём проекте БК-0010 рассказать просто невозможно, про процессор будет отдельная статья, я думаю четвёртая по счёту. Постараюсь всё написать быстро!
О, для программиста система команд просто идеальна, я в своё время довольно много писал на ассемблере для разных архитектур. Но когда начинаешь реализовывать это в железе, натыкаешься на всякие неочевидности.
Например, команда ADD #1, R0 может вызвать переполнение (что отражается в бите C), команда INC R0, которая по сути тоже прибавляет 1 к R0, на содержимое бита C влияния не оказывает. Какова была логика у фирмы DEC сделать своё ALU в 70-х именно так, мне не известно, не исключаю, что у них просто так получилось.
Тот, что на Google code видел, тот, что на GitGub нет, спасибо за ссылку.
Пробежался по коду, во всяком случае видно, что некоторые неудобные особенности системы команд PDP-11 там обрабатываются корректно. Авторы молодцы.
Да, разумеется. Образы оригинальных ПЗУ монитора, блока тестов, языков Фокала и Бейсика доступны в Интернете. Организация памяти, система команд, контроллер клавиатуры, таймер и прочее полностью эмулируется.
Поскольку это не реализация «вентиль в вентиль» (были и такие попытки на FPGA), аппаратные баги 1801ВМ1 я эмулировать не стал.
На процессорный модуль подаётся ровно та же частота, что и в оригинальном БК — 3 MHz. Производительность при этом получается такая же с точностью до погрешности измерений, что говорит о том, что производительность на такт примерно одинакова.
Конечно используя современные технологии можно добиться гораздо лучшей производительности на такт, сделать конвейер и т.п., но мне было интересно вписаться примерно в тот же транзисторный бюджет. По модулю CPU у меня получилось — LUT — 2398, FF — 557. Это на мой взгляд сопоставимо с КР1801ВМ1 — около 18000 транзисторов.
Я пока думаю в сторону RaspberryPi + родная камера к ней
Насчёт фильтрации префиксов на аплинках — для них это проза жизни. Посмотрите например что отдаёт Голден Телеком aka Sovam:
http://www.ripe.net/whois?AS3216
Кому full-view, кому default, а там несколько сотен клиентов. Часть таблицы признаю не встречал, но там дел то ровно на две строчки в конфигурации. Можете и на своей стороне фильтровать.
2. Нужен ли вам FullView? Договоритесь с апстримами, пусть отдадут вам, например, префиксы /16 и меньше. Роутинг будет не совсем оптимальный, но это будет не самой большой вашей проблемой.
3. Маршрутизировать 10Gbps виртуальной машине будет тяжко. А если ещё какую-нибудь фильтрацию пакетов добавить… Что Cisco что Juniper тут совершенно не напрасно используют TCAM, QFP и прочее.
Софт был написан более 30 лет назад, уже давно нет организации, которая это делала. Не знаю даже, где можно выяснить, принадлежат ли сейчас на эту прошивку права кому-либо.
Когда я покупал БК, я не подписывал никакого лицензионного соглашения, да собственно тогда в СССР и понятия такого не было.
Я думаю, что мои действия попадают под понятие добросовестного использовани (fair usage), но я не юрист и могу ошибаться. Был бы благодарен за квалифицированные мнения.
В 90-е выпускалась хорошая клавиатура МС-7008.01, совместимая с БК, значительно более качественная.
А можете рассказать по шагам как у вас происходит взаимодействие с заказчиком? Можно взять для примера мою недавнюю ситуацию — сгорел RAID-контроллер и остались пять дисков, которые жили на этом контроллере, объединённые в RAID-5. Встал вопрос, что можно спасти. Все организации, которые я нашел, предлагали одно и то же — присылайте диски с курьером, мы посмотрим, что можно сделать, и объявим цену. На этом этапе настораживало уже то, что в RAID-5 важен порядок дисков, а им никто не интересовался. Да и название контроллера не помешало бы узнать, а об этом тоже никто не спрашивал. Допустим, всё удалось восстановить. Что дальше? Вы пересобираете RAID и отдаёте информацию обратно на тех же дисках (если они исправны)?
Да я собственно процессор и всё остальное уже сделал, у меня есть работающий вариант эмулятора. Мне осталось сделать описание наиболее интересных моментов и выложить здесь (и оставшуюся часть исходников на GitHub).
На БК-0010 (1801ВМ1) были базовые команды PDP-11 плюс некоторые из расширенного набора (XOR, SOB).
Проект, на который Вы ссылаетесь очень интересен прежде всего тем, что люди проделали огромную работу и нашли много плохо документированных особенностей 1801ВМ1 в том числе аппаратные баги (действительно баги, например там в каком-то месте просто не хватает транзистора). Целью того проекта было именно сделать аналог 1801ВМ1 на современной элементной базе, то есть сделать некое изделие, которое можно впаять вместо ВМ1 в БК-0010. Этой цели, насколько я понимаю, добились.
Взять тот проект и переделать его в soft core не получится. Во-первых, в 1801ВМ1 использовались двунаправленные и мультиплексированные шины, в качестве внутренних шин в FPGA такие использовать нельзя. Во-вторых, если посмотреть на Verilog-исходники того проекта, то там практически gate-level дизайн. То есть описано, что сигнал на выводе таком-то представляет собой функцию в нормально дизъюнктивной форме от сигналов таких-то. Понятно, что это следствие обратного инжиниринга, но сюда невозможно ни добавить новую команду, ни сделать процессор с таким же набором команд, но с отдельными шинами для адреса и данных.
Наконец основная задача у меня — показать, что можно сделать с помощью Vivado. Проект БК-0010 — лишь средство сделать это интересным.
CLR в моей текущей реализации старое значение не читает. Тут дело не только в таймингах, а ещё и в том, что на этапе чтения из памяти может случиться ошибка шины.
Так же требуется специальная обработка для команд CLR, TST, CMP, BIT, JMP, JSR — где-то нам не нужно старое значение, где-то новое, где-то косвенность адресации уменьшается на один уровень.
И ещё жаль CPLD. Новых нет, а старые поддерживаются только в ISE.
За одну статью обо всём проекте БК-0010 рассказать просто невозможно, про процессор будет отдельная статья, я думаю четвёртая по счёту. Постараюсь всё написать быстро!
Например, команда ADD #1, R0 может вызвать переполнение (что отражается в бите C), команда INC R0, которая по сути тоже прибавляет 1 к R0, на содержимое бита C влияния не оказывает. Какова была логика у фирмы DEC сделать своё ALU в 70-х именно так, мне не известно, не исключаю, что у них просто так получилось.
Пробежался по коду, во всяком случае видно, что некоторые неудобные особенности системы команд PDP-11 там обрабатываются корректно. Авторы молодцы.
Поскольку это не реализация «вентиль в вентиль» (были и такие попытки на FPGA), аппаратные баги 1801ВМ1 я эмулировать не стал.
Конечно используя современные технологии можно добиться гораздо лучшей производительности на такт, сделать конвейер и т.п., но мне было интересно вписаться примерно в тот же транзисторный бюджет. По модулю CPU у меня получилось — LUT — 2398, FF — 557. Это на мой взгляд сопоставимо с КР1801ВМ1 — около 18000 транзисторов.