Не, объясните мне - зачем городить огород? Строить SMP или NUMA (какие там еще есть умные слова?Сообщение от MegaMyth
) из того, что для этого не предназначено. Не получится. Все уйдет "в песок", т.е. такая "multyZ80" машина недопустимо много времени будет работать на свою собственную синхронизацию. А если еще учесть, что 1 Z80 одновременно все равно работает только с 64к памяти, то и вообще смысл теряется.
Сделайте лучше фабрику лезвий с одним управляющим гипервизором. Проще простого - только нужно добавить обслугу прерываний и ПДП в каждое лезвие. И алгоритм работы будет простым и понятным (каким он есть уже не один десяток лет): в зависимости от требуемого действия по доступу к внешнему устройству или другому лезвию, лезвие будет выдавать на порт (т.е. на шину которой оно включено в фабрику) запрос, который дешифруется и маршрутизируется гипервизором. Выдав запрос в очередь, лезвие продолжает трудится над своей задачкой (или ждет - смотря какой алгоритм).
- Если это запрос к внешним устройствам, подключенным к гипервизору, то он считает нужные данные, поместив их через ПДП напрямую в буфер запросившего лезвия, затем даст лезвию отмашку по прерыванию - мол, кушать подано.
- Если это запрос на доступ к памяти другого лезвия (вариант когда одна однопроцессорная плата подготавливает данные для другой, или какие-то программные каналы обмена когда софтина умеет забрать под себя более чем одно лезвие), то гипервизор провериит этот запрос на корректность (платы лезвий в зависимости от ПО, которое на них крутится могут по-разному регистрироваться в гипервизоре) и перекинет данные.
- Прочие выходы/входы типа клавиатуры или RGBI (т.е. консоль) элементарно мультиплексируются в один канал все тем же гипервизором (программно выбирается консоль одного из блэйдов - того на котором нужно сделать какие-то настройки или что-то запустить).
Это, конечно, немного медленнее, чем многопроцессорность, но зато ничего не нужно изобретать (ПДП используют уже хрен знает сколько лет), совершенно прозрачно логически - т.е. отлаживаться будет в разы быстрее, расширяемость просто на уровне дотыкания платок в слот, причем характеристики лезвий могут быть разными - хоть Ленинград1, хоть ARM или 68k - лишь бы DMA/INT было, да софт поддерживал совместимый протокол.




]
) из того, что для этого не предназначено. Не получится. Все уйдет "в песок", т.е. такая "multyZ80" машина недопустимо много времени будет работать на свою собственную синхронизацию. А если еще учесть, что 1 Z80 одновременно все равно работает только с 64к памяти, то и вообще смысл теряется.
, хоть ARM или 68k - лишь бы DMA/INT было, да софт поддерживал совместимый протокол.
Ответить с цитированием