Товарищь Lavr слёзно просил поделится соображениями по многопроцессорной системе на КР580. Что-ж, не могу отказать.
Основные идеи:
1) Симметричную многопроцессорность на КР580 реализовать хоть и можно, но бесполезно. Смысла запускать более 2-3 потоков на этих процессорах нет.
2) Вешать более 4-8 процессоров на одну память затруднительно.
3) Для поддержки более современных видеорежимов также хотелось бы иметь память по-шире (Чтобы 720p60 пролазил например)
4) Работать по схеме "каждый процессор имеет свою личную память" и "обвязка каждого процессора реализована на CPLD" - получится дороговато, т.к. 5-и вольтовые CPLD нынче по 10$. 16 процессоров - уже 160$.
5) Настоящего многопоточного софта нет и не будет - его мало того что его сложно писать, так почти никто на самом деле и не умеет
В первом приближении решение такое:
1) Конфигурация - 4*4+1, т.е. 4 модуля по 4 процессора, у каждого модуля своя память. В пределах модуля процессоры видят в первом приближении одну и ту же память. +1 - это основной процессор, на котором в однопоточном режиме и выполняется основная задача.
2) Видеопамять разделена так, чтоб первая колонка - в первом модуле, вторая - во втором, пятая - снова в первом. Таким образом легче обеспечить требуемый поток 55-165Мб/сек для отображения видео (720p60), и обеспечивается больше возможностей по распарралеливанию отрисовки.
3) Основной принцип работы - центральный процессор для ускорения работы запускает задачи сразу на всех процессорах. Примеры функций - отрисовка на экране, математика, перемещение данных.
4) Организация памяти : в пределах модуля - грубо говоря нижние 16кб индивидуальной памяти процессора (тут и стек и код), 16кб общей в рамках подуля, 32кб - переключаемая страница, в основном для доступа к видеопамяти. С учетом видео памяти понадобится достаточно много памяти, до 1Мб на модуль.
Вся эта логика с переключаемыми страницами, совместным доступом памяти, и запуском подпрограмм на модулях - все в CPLD, отлаживать все это на дискретной логике будет слишком долго.
Для уменьшения количества и многоногости CPLD - думаю о работе с КР580 через сдвиговые регистры. Само собой частота их работы будет высокой, но тут проблем нет. Точная конфигурация модулей - это еще вопрос. Может быть и 8 процессоров можно будет в один модуль впихнуть. Соответственно и модулей может быть больше 4.
Поднимать общее количество прцоессоров выше 64 затруднительно из-за очень уж большого суммарного тепловыделения.
Ну и появляется возможность реализовать режим программной обратной совместимости с некоторыми из советских компьютеров (особенно это касается текстовых режимов).
Также, рассчитываю на штатный разгон всех процессоров с их отбором.
Также можно думать о выделенных процессорах для работы с перефирией.