Говорят, что процессоры ВМ1 крайне легко объединяются в многопроцессорный компьютер. Почему бы не попробовать добавить еще один процессор в БК0010.
По команде программы можно было бы сбрасывать второй процессор (ну и задавать IP ему).
Вид для печати
Говорят, что процессоры ВМ1 крайне легко объединяются в многопроцессорный компьютер. Почему бы не попробовать добавить еще один процессор в БК0010.
По команде программы можно было бы сбрасывать второй процессор (ну и задавать IP ему).
Главная проблема здесь в том, что все основные команды процессор ВМ1 выполняет со скоростью доступа к памяти. Поэтому прибавка быстродействия от второго процессора на типовых командах будет такой же, как и от функции предвыборки команд в процессоре ВМ2 - порядка 15%.
---------- Post added at 10:15 ---------- Previous post was at 10:10 ----------
Чтобы многопроцессорная система на процессорах типа ВМ ( т.е. таких, у которых почти всё время выполнения команды занимают циклы доступа к памяти ) могла быть эффективной - она должна быть многошинной, с возможностью переключать страницы памяти между шинами и "контроллером окна", таким, что содержимое окна доступно всем процессорам, но обращения к окну по чтению-записи не блокируют шины остальных процессоров.
Примерно так ( если не ошибаюсь ) взаимодействуют два процессора ВМ2 в УКНЦ.
Понятно.
Значит процессор 8080 более предрасположен к многопроцессорной работе. Там можно 4 процессора вешать на одну шину и они не будут мешать друг другу. (Процессор выполняет обмен с шиной по перепаду тактового импульса. Если сдвинуть тактовые импульсы процессоров на 25% и поставить мультиплектор, то процессоры будут работать прозрачно друг для друга.)
Возможно так же можно сделать и на 1801ВМ1, но это уже будет совсем другой компьютер. Сложно слишком, что бы пробовать.
---------- Post added at 10:40 ---------- Previous post was at 10:38 ----------
Если я не ошибаюсь, доступ к общей видеопамяти разделен по времени. 25% времени к ней имеет право обращаться первый процессор, 50% времени второй процессор, а 25% времени происходит формирование видеосигнала.
Нет, не так. 50% на формирование экрана, а 50% на нужды обмена с памятью, причем вся память - это видеопамять, но - 1/3 видеопамяти находится в ОЗУ ПП, а 2/3 видеопамяти находится в ОЗУ ЦП, и каждый из процессоров может писать в свою часть видеопамяти независимо и одновременно с другим. А вот доступ ПП к ОЗУ ЦП, осуществляемый через регистровый механизм, очевидно, подтормаживает работу ЦП в этот момент.
1) ЦП 128 Кб 16 бит. При этом ЦП имеет доступ к только к половине из 128 Кб?
2) ПП 64 Кб 8 бит. При этом ПП имеет доступ только в половине из 64 Кб?
3) А бедный видеоадаптер, должен уметь асинхронно обращаться к шинам обоих процессоров? Причем шина первого 16-битная, а вторая 8-битная.
1) Напрямую да. К остальной части через регистры.
2) Напрямую да, к остальной части через гегистры. Кроме того, к окну, вместо части ПЗУ тоже напрямую, а к оставшейся части только на запись)
3) Шина ЦП 16-бит, шина ПП 16/8-бит, в зависимости от того, к какому устройству обращение. Если к ОЗУ, то 8 бит, если ПЗУ/Регистры, то 16-бит.
Наверное видеоадаптеров с более мудреной выборкой не существует в природе (если не считать современных PCIE/AGP)
Во-первых видеоадаптер не обращается к шинам обеих процессоров, не имеет он доступа ни туда, ни сюда. Имеет он только доступ к ОЗУ обоих процессоров, причем абсолютно ко всему.
И во-вторых - никакой он не бедный, одновременно он является арбитром доступа к ОЗУ и соответственно наивысший приоритет для доступа к нему, а контроллеры адресного пространства процессоров, являющиеся по совместительству и контроллерами ОЗУ своих банков, обращаются к ОЗУ только по разрешению со стороны видеоадаптера. Вот как-то так.
Еще была такая приставка имени Бортника.
К БК подключался ВМ3 и доп. память.
0) Просто ради спортивного интереса.
1) Каждый процессор мог бы рисовать свою половину экрана в новых компьютерных играх. (Которых вряд ли больше 3-х штук появится в этом тысячелетии, пока не изобретут полностью автоматический рекомпилятор)
2) Можно было бы запустить еще одну программу параллельно стандартной. Отладчик например. (Только подерутся они из за того, что разделение адресного пространства между программами не предусмотрено).
Интереснее для начала подключать ОЗУ экрана не напрямую к шине, а через специальный "контроллер окна", чтобы обращения видео-контроллера к ОЗУ экрана не блокировали шину.
Следующий шаг - возможность настройки контроллера окна на отключение видео-ОЗУ из окна и подключение в окно другой общей памяти всех шин.
vinxru
0) это понятно ;)
1) даст ли это реальный прирост производительности и примерно с каким коэффицентом?
2) конечно можно сделать второй проц диспетчером первого, но тогда это действительно будет разговор о другом комплексном решении, т.е. новом ПК.
Правильнее, наверное, сказать не "требуют память", а "ждут память".
Процессору ВМ1 требуется для непосредственного исполнения команд примерно в 10 раз меньше времени, чем для загрузки из ОЗУ их кодов и операндов. Поэтому практически всё время выполнения типовых команд занимает ожидание памяти.
Скажите мне что в Вашем понимании многопроцессорный БК? Это комп переделанный таким образом чтоб на нем запустилась адаптированная к нему RSX-11M-plus или просто байда непонятного содержания такая как УКНЦ или то что подключалось через TUBE интерфейс в Acorn BBC model B (процессоров вроди как и 2 но никакой симметрии нету а значит воспользоваться ресурсом с точки зрения OS очень не просто)
---------- Post added at 03:12 ---------- Previous post was at 03:11 ----------
Там основной процессор отключался да?
Я ничего не знаю про RSX-11M-plus, поэтому ничего не смогу сказать по этому поводу. Многопроцессорная БК - это еще один процессор полностью идентичный первому и работающий с той же памятью и с теми же устройствами.
---------- Post added at 09:42 ---------- Previous post was at 08:54 ----------
А нафига тогда производители говорили о возможности подключения 4-х процессоров? Если уже 2-ой процессор добавляет лишь 15% производительности. Третий и четвертый процессоры (почти) никогда не получат доступа к шине.
---------- Post added at 09:47 ---------- Previous post was at 09:42 ----------
Я тут нашел твои страшные осциллораммы
http://em-api.narod2.ru/add/scope_1a_2a/scope_1_2d.html
Судя по линии BSY времени для второго процессора действительно не остается.
---------- Post added at 10:08 ---------- Previous post was at 09:47 ----------
И еще вопрос. Смотрю на осциллограмму процессора и не понимаю, как оно работает
http://s019.radikal.ru/i612/1203/ba/37ba4f63790e.jpg
(Голубая линия) Процессор устаналивает на шину адрес.
(Желтая линия) Прижимает линию SYNC, что вызывает загрузку адреса в ОЗУ (и т.п.)
(Зеленая линия) Прижимает линию DIN, говоря ОЗУ, что хочет прочитать данные.
Но на шине еще несколько тактов будет находится адрес. То есть процессор не отпустил шину, а уже попросил ОЗУ дать отчет.
Потом ОЗУ прижимает линию RPLY, типа всё готово.
(Фиолетовая линия) На шине данных возникает ответ ОЗУ. Уже после сигналов DIN, RPLY.
А дальше процессор отпускает DIN, память отпускает RPLY, процессор отпускает SYNC и BSY.
P.S. Выходит, что память процессору нужна только между сигналами DIN-RPLY. Процессор дал сигнал DIN. Мы подключаем память к этому процессору. Память дает сигнал RPLY и по этому сигналу мы производим запись ответа памяти во внешний регистр. И освобождаем память. Ей может пользоваться другой процессор.
Хитрость диаграмм в том, что шины адреса/данных двунаправленные и тот, кто выставляет на них уровни - совершенно не беспокоится о том, чтобы быть единственным "поставщиком" информации для шины. Поэтому, значительный процент времени процессор и память выставляют биты на линии адреса/данных "лоб в лоб" - каждый свои.
Осциллограф же не может знать "откуда пришли биты" и показывает лишь суммарный сигнал на каждой исследуемой линии шины.
Однако, никакой путаницы не возникает за счёт выполнения несложных правил протокола обмена:
1. Процессор не должен выставлять на шину адрес до выставления BSY.
2. После выставления процессором SYNC - устройство может выставлять данные.
3. После выставления процессором DIN - устройство может выставлять RPLY.
4. До снятия с шины сигналов адреса - процессор не должен читать с шины данные.
5. До завершения чтения данных - процессор не должен снимать DIN.
6. До снятия устройством RPLY - процессор не должен снимать BSY.
---------- Post added at 10:43 ---------- Previous post was at 10:40 ----------
Шина блокируется сигналом BSY. До снятия BSY устройством, захватившим шину - ни одно другое устройство не может её использовать.
---------- Post added at 10:55 ---------- Previous post was at 10:43 ----------
И ещё один момент - на приведённой выше диаграмме показан цикл обращения процессора ВМ1 к своим внутренним регистрам, проецируемым на шину. Мы наблюдаем это процесс "с обратной стороны" буферного регистра шины, поэтому ( прямо как в теории относительности Эйнштейна ) нам кажется, что данные отстают от RPLY :)
На самом деле диаграмма чтения слова из памяти ( в данном примере - из ПЗУ ) выглядит так:
http://s1.hostingkartinok.com/upload...fd0d59acb0.png
Это я размышляю, как повесить на шину много процессоров. Реально, шина требуется только с момента, когда DIN упал. И до того момента, пока память не сможет прочитать заначение (сигнал RPLY). Затем значение можно записать во временный регистр (по сигналу сигнал RPLY) и освободить шину.
---------- Post added at 11:26 ---------- Previous post was at 11:05 ----------
http://s017.radikal.ru/i418/1203/cf/d7531032744b.png
Когда процессор подаст сигнал DIN, правый триггер включится и его выход будет сигналом захвата шины.
Когда память сможет дать ответ, она подаст сигнал BUS ACK. Этот сигнал защелкнет ответ памяти в выходном регистре. Включит триггер подающий в процессор сигнал RPLY. Этот триггер выключится с подъемом сигнала SYNC процессора. А еще сбросит правый триггер и сигнал захвата шины.
Еще дорисовать триггеры и буферы для записи данных в память. Это еще проще. И простенькую схему, которая будет предотвращать одновременный доступ к памяти нескольких процессоров.
На входе этого блока сигналы BUS REQ 1, BUS REQ 2, BUS REQ 3... На выходе BUS ACK 1, BUS ACK 2, BUS ACK 3... И еще сигналы подключающие адрес из правого верхнего регистра на общую шину адреса.
vinxru, при всем уважении, в течение минувших 10 лет, идеи "прокачать" БК на форумах возникали в среднем раз в 2 года, каждый раз начиналось бурное обсуждение и в итоге заканчивалось ничем. Ну разве что действительно, из личного спортивного интереса это сделать и чисто для себя. В массы и даже в единичные руки это не пойдет.
Я думал и о приставке Бортника и о других подобных вариантах, но в итоге с чисто практической точки зрения оказывается рациональном только ПЛИС-реализация всей БК (и её "прокачка" за счет ПЛИС). Да и со всех других, кроме разве что случая "душа просит именно оригинальный старый ВМ1".
Сейчас даже реплику оригинальной БК0011М проблема сделать - корпуса и клавиатуры воспроизвести невозможно, а чтобы подключать современные клавиатуры - опять же ПЛИС.
1. думаю копия БК сейчас никому не интересна как и копия ZX-SPECTRUM 48Kb, интересен комп совместимый но не точная копия;
2. после того как на рынке стали продавать в основной массе клавиатуры с USB/PS2 интерфейсом подключать клавиатуру иначе чем через микроконтроллер нет никакого смысла;
3. комп на плис с vhdl-процессором никакой не конкурент компу на реальном процессоре, все это разные типы развлечений (каждому свое - кому оригинальный комп, кому эмулятор, кому FPGA-devboard с конфигом компа, кому чипсет на fpga + реальный проц);
---------- Post added at 21:30 ---------- Previous post was at 21:23 ----------
И чем же это "ПЛИС-реализация всей БК" рациональнее скажем "приставки Бортника" ? Это вообще разные вещи. В контексте данной темы может была бы интересна SMP система похожая по архитектуре на PDP-11/74?
b]bigral[/b],
думаю копия БК сейчас никому не интересна как и копия ZX-SPECTRUM 48Kb, интересен комп совместимый но не точная копия -
я думаю вы не правы - любое повторение оригинала - это уже копия и каждое новое поколение будуших электроников и програмистов будут начинать со СПЕКТРУМА, как это не печально, но вполне закономерно и понятно
далее с моей точки зрения БК плюс 2 проц - больше смахивает на УКНЦ чем на SMP, и пристака Бортника показала , что особого смысла в этом нет
а вот сделать что то PDP подобное да еще и SMP - тут одного желания мало - надо еще что то уметь , знать и ,,,,,, да и кроме голово железа надо еще и ПО
но если порыться в древних источниках - можно что то и найти и поробоать повторить - при определеннной упертости в этом вопросе, а не просто сидя ровно на 5 точке рассуждать
Тем, что если приставка Бортника "не пошла" в те времена, то сейчас точно никому интересна не будет, да и едва ли имеет смысл вообще.
Собственно что-то подобное что сейчас делается в рамках этого ТЗ:
http://forum.bk-fpga.ru/viewtopic.php?f=2&t=13
- конечно не SMP, но это будет процессор с двумя переключаемыми режимами совместимости: ВМ1 и стандарт PDP-11/70, во втором будет адресоваться 4 мб (как в ВМ3). В первом режиме система будет полностью обратно совместима с БК0011М, и будет иметь расширение по быстродействию ЦП, графике, звуку.
Если кому интересно ковырять в FPGA альтернативные возможности того, чего никогда не было, можете посмотреть на мою bk-fpga. Она может адресовать много памяти. В отличие от меня самого — я уже плохо помню детали, но все запиcано вот тут: http://code.google.com/p/bk0010/wiki/Memory_Management
Это чем-то похоже на реализацию MMU PDP-11, но все немного упрощено и похакано — цель была не пуризм, а юзабилити самой БК-ФПГА. С помощью этой системы сделана более-менее прозрачная работа с SD-картой, больше ни для чего она не используется.
Кстати, по информации от разработчика bk-0012, в текущую версию на ПЛИС второй процессор добавляется буквально за одну минуту, и больших конфликтов по шине там не будет, ибо у каждого свои кэши. Для полноценного SMP там придется добавить один из видов протокола когерентности кэшей, это , конечно, будет дольше одной минуты, но решаемо. Вопрос опят же только только в том, какая ОС будет всё это поддерживать.
надо юних прикручивать.
Да, это однозначно. Но кто этим будет заниматься забесплатно...
Кстати, уже сапера, написал уважаемый vinxru - запустили на отладочной плате. Вот скриншот даже:
http://s019.radikal.ru/i642/1203/0c/dff0f438a98dt.jpg
Woland, Юних к БК0010-01 уже прикручен, этим занимается действующая команда. Написать же драйвер второго проца для существующей системы - вопрос, но давайте сначала стандарт его определим
Под действующей командой понимается Вакуленко?
Подозреваю что да. И вроде бы он даже не против помочь в портировании UNIX под БК0012.
Не пойдет никакой GNU и линукс в 64kb code segment-e. Ну разве что если эмулировать 24bit address-ный виртуальный процессор, но тогда будем день ждать пока init+sh стартонут. Вон есть эмуляторы даже pdp-11/74 софтовые (скорость x100) так что можете хоть сейчас проверить.
---------- Post added at 01:48 ---------- Previous post was at 01:43 ----------
Да и судя по тому что i8088 назван "не модным" в проекте uOS то выше указанному автору эти 64кб уже по самое нихачу надоели, он судя по его сайтам больше за 32bit MIPS волнуется.
Я согласен, что 64К - это серьезный барьер. Нужен игрушечный процессор с расширенной адресацией. Вакуленко больше PIC'ами озабочен на данный момент. :)
Ну как раз, в БК-0012 будет PIC32MX в качестве периферийного процессора.
на автомобилях 5% уже достижение - я про экономию бензина. хотя при равной емкости бака это выливается в большем пробеге = производительности системы.
есть наблюдение, идущее из времен, когда частоты процессоров удваивались намного чаще, чем нынче, что удвоение одного компонента при неизменных прочих дает не более 20% общего прироста производительности всей системы. удвоение - частоты ли процессора или памяти или другого ресурса с сохранением всего остального старым. я б сказал что и 15% буста некисло, если не надо перелопачивать все остальное, если просто довольно впаять навесочкой всего лишь еще один 1801ВМ1.
*поглядев на дату, охнул*
БК с двумя процессорами - это УКНЦ. Жутко неудобно программировать.
БК с ВМ3 было бы круто, но совместимость теряется из-за нечётных адресов. Поэтому лучше ВМ2 на 8 МГц. А это уже получается Союз-Неон.