nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 12:05



Reply to topic  [ 413 posts ]  Go to page Previous  1 ... 24, 25, 26, 27, 28  Next
nedoPC-580 (SMP на 5 процессорах КР580ВМ80А) 
Author Message
Junior

Joined: 26 Jul 2021 01:11
Posts: 3
Reply with quote
Забавно... Я именно в 2021 году задумался о создании ПК "а-ля 80е", по мотивам всех тогдашних 580-х изделий... и понял, что надо отталкиваться от многопроцессорной масштабируемой архитектуры. Но, на удивление, кроме размышлений ничего не нашел. Тема умерла, как я понимаю?


27 Jul 2021 12:02
Profile
Maniac

Joined: 18 Nov 2013 15:15
Posts: 209
Location: все оттуда ;)
Reply with quote
aahzma wrote:
Забавно... Я именно в 2021 году задумался о создании ПК "а-ля 80е", по мотивам всех тогдашних 580-х изделий...
Зачем ? Этим актуально было заниматься в середине 80-х !

aahzma wrote:
и понял, что надо отталкиваться от многопроцессорной масштабируемой архитектуры. Но, на удивление, кроме размышлений ничего не нашел. Тема умерла, как я понимаю?
Читай как сделана шина MultiBUS (русское название "И-41").
Потом неплохо бы ОС которая это поддерживает.

Если нет зацикленности на 580 процессоре, то сразу перейти к 1810, компьютеру "Нейрон И9.66".


27 Jul 2021 19:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aahzma wrote:
Тема умерла, как я понимаю?

Нет, не умерла... иногда она неожиданно оживает...
Всё зависит от того, что хочется получить в итоге.

_________________
iLavr


29 Jul 2021 08:01
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post Re:
В продолжение идей со страницы 23 (август 2012):

http://www.nedopc.org/forum/viewtopic.php?f=46&t=7540&start=330

Shaos wrote:
HardWareMan wrote:
Shaos wrote:
P.S. Я смотрю что слово статуса хватать с шины данных совсем не сложно - так что наверное будут у нас нормальные порты с командами IN и OUT :)
По большому счёту нам только 2 бита нужны из этого слова состояния - INP и OUT

Латчить по SYNC AND F1 в одну ТМ2. Все верно.


угу

тогда обращение к хардверному семафору, защищающему доступ к софтверным мьютексам (а также 7 другим критическим абстракциям - по 1 биту на каждую), будет выглядеть так:

Code:
DI
MVI A,#10
OUT 7 ; пусть на этом порту находятся 8 хардверных семафоров
LOOP:
IN 7
ANI #10 ; бит 4 пусть будет семафором мьютексов
JZ LOOP ; крутимся пока ноль (значит наш запрос семафора ещё не дошёл)
; далее висим на холде либо идём дальше
...
XRA A
OUT 7
EI


P.S. Биты в порту 7 можно поделить между следующими "семафорами":
Code:
bit 0 - SEM_PRO (доступ к списку всех процессов)
bit 1 - SEM_ACT (доступ к списку активных процессов)
bit 2 - SEM_SCR (доступ к буферу вывода на экран)
bit 3 - SEM_IOB (доступ к буферу обмена с внешними устройствами)
bit 4 - SEM_MUX (доступ к списку программных мьютексов)
bit 5 - SEM_PIP (доступ к FIFO каналам обмена данными)
bit 6 - SEM_MSG (доступ к очередям сообщений)
bit 7 - SEM_AUX (дополнительный семафор)


P.P.S. Семафоры внутренние, т.е. не входят в публично доступный API - это лишь соглашение о взаимодействии супервайзера (процессор номер ноль) и операционки на рабочих процессорах...

Подумалось тут мне, что чего попусту крутиться в цикле? Можно при попытке записи в порт 7 останавливать проц через сброс READY, если аппаратный арбитр решит не давать ему доступ к ресурсу:

Attachment:
8080.jpg
8080.jpg [ 316.04 KiB | Viewed 6960 times ]


Либо вообще разнести семафоры по разным номерам портов и писать туда приоритет с которым проц хочет ресурсом попользоваться - арбитр будет сравнивать приоритеты и выстраивать запросы в очередь в правильном порядке, хотя наверное это уже черезчур сложно (а если делать руками супервизора, которым будет выступать 5й процессор, то ещё и медленно)

P.S. Эти "аппаратные" семафоры можно рассматривать как самые настоящие сигнальные семафоры - с помощью них рабочие процы отправляют сигнал процу-арбитру и ждут пока этот сигнал не будет принят. Если добавлять приоритеты 0...7 к семафорам, то каждый проц должен будет запоминать не только номер семафора, но и номер приоритета на регистре, а проц-арбитр должен будет эти регистры всех процов обходить и смотреть если от кого-то пришёл какой-то запрос. Плюс к этому можно сделать передачу символов между процессорами - эдакие каналы от любого процессора к любому процессору. Например запись в порт 0 будет означать передачу символа в 0й процессор (скажем для вывода в терминал). Запись в порт 1 - передача символа в 1й процессор и т.д. Чтение из портов будет означать принятие символа из соответствующего процессора (но не для порта 0, чтение из которого будет возвращать кол-во процессоров в системе и номер процессора). Запись в порт будет подвешивать процессор-передатчик, пока на той стороне не прочитают посланный байт. Если процессор попытается послать символ сам себе (например процессор 3 выполнит команду OUT 3), то он самозаблокируется до перезагрузки системы. Плюс к этому процессор 0 (арбитр/супервизор) может иметь специальную логику, предотвращающую отпускание процессора-передатчика в момент чтения соответствующего порта нулевым процессором т.к. он должен отпускать процессоры в специальном порядке в соответствии с приоритетами (это можно сделать путём записи в порт 0 нужного битика) - для него также чтение из порта 0 будет иметь иной смысл - он будет возвращать битовый набор, где каждый бит сигнализирует, что тот или иной процессор послал байт в канал и ждёт его анализа.

_________________
:dj: https://mastodon.social/@Shaos


02 Nov 2021 23:18
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Чего-то подумалось, что для реализации этих параллельных каналов связи между процессорами можно взять ВВ55е :)|
Даже можно попробовать задействовать хендшейк, который включается в одном из режимов их работы!

_________________
:dj: https://mastodon.social/@Shaos


12 Nov 2021 01:15
Profile WWW
Senior
User avatar

Joined: 21 Jul 2012 15:56
Posts: 126
Location: Zürich, Switzerland
Reply with quote
Поразмыслил над темой 10 лет...

Предыдущая идея с 580 с обвязкой на сдвиговых регистрах управляемых CPLD - мне по-прежнему нравится. Но не канонично, хоть на центральной CPLD сколько хочешь их можно объеденить (8-16 и более), особенно если где-то влезет небольшой кеш.

О более каноничных вариантах:
1) На 2 фазы шину разбить по-Орионовски - это уже классика. Может и 4 штуки получится - но тяжело, если декодер памяти тяжелый. Это уже обсуждено детально.
2) 2 процессора друг друга придерживают за HOLD по очереди - насколько такое реально провернуть? 580-й же шину теребонькает хорошо если 50% времени, вот и разделят свою фазу. КПД пусть не 100% будет, а 75 - уже успех.
3) Dual-port SRAM. Позволит с обоих сторон подвесить по 4шт по схемам #1+#2. Но тут все упрется в размер памяти и неканоничность.

Что думаете про #2 - это же как раз классический подход для SMP? Конечно он гораздо лучше работает когда есть L1-кеш, но из-за того что сам по себе 580-й медленно работает, может и сработать....


Last edited by BarsMonster on 31 Jul 2022 19:07, edited 4 times in total.



31 Jul 2022 19:01
Profile
Senior
User avatar

Joined: 21 Jul 2012 15:56
Posts: 126
Location: Zürich, Switzerland
Reply with quote
Второй вопрос про разделение адресного пространства.
Разделение стека мне очень нравится, жаль что код и данные не поделить без диких извращений.

Правильно ли я понимаю, что стек через слово состояния отделить можно только в 580/8080 и 8085, но не Z80?


31 Jul 2022 19:03
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Ну решение иметь 4 проца, которые в параллель дёргают быструю оперативную память, причём абсолютно прозрачно и не наступая друг другу на пятки, как мне кажется выглядит самым красивым :roll:

_________________
:dj: https://mastodon.social/@Shaos


31 Jul 2022 23:33
Profile WWW
Senior
User avatar

Joined: 21 Jul 2012 15:56
Posts: 126
Location: Zürich, Switzerland
Reply with quote
Shaos wrote:
Ну решение иметь 4 проца, которые в параллель дёргают быструю оперативную память, причём абсолютно прозрачно и не наступая друг другу на пятки, как мне кажется выглядит самым красивым :roll:


Наиболее красивым, но и наиболее оторванным от современных концепций SMP. Т.к. работать будет только потому что память и драйверы по технологии 90-350нм, а не 6мкм. Ну и масштабирование упирается в потолок.

Современный SMP - всегда с тормозной шиной. И как выяснили раньше SMP плохо работает без кеша.

Потому возникла такая идея: у каждого процессора своя пара страниц памяти (128кб), т.е. страницы 0 и 1. Там может быть стек (по желанию), локальный код, локальные данные.
А когда проц лезет на страницы 2 и выше, на устройства - вот там все идет через диспетчер шины, медленно. А то и вовсе без диспетчера, а просто по очереди все получают слоты общей шины (т.е. медленно).

В этом случае мы получаем что-то похожее на современные архитектуры, и условно неограниченное масштабирование. Конечно, если написать код который будет случайно дергать глобальную память одновременно со всех ядер - будет тормозить, как и в современных компьютерах. Т.е. по факту будет L1 кеш с "ручным" управлением. В лучшем случае загрузку/выгрузку "кеша" можно положить на КПДП во второй таймслот локальной шины по-Орионовски, но это уже чтобы мастерство показать.


01 Aug 2022 17:47
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
BarsMonster wrote:
Современный SMP - всегда с тормозной шиной. И как выяснили раньше SMP плохо работает без кеша.

Там же снаружи шина тормозная, а внутри - шустрая, не?

BarsMonster wrote:
А когда проц лезет на страницы 2 и выше, на устройства - вот там все идет через диспетчер шины, медленно. А то и вовсе без диспетчера, а просто по очереди все получают слоты общей шины (т.е. медленно).

А зачем медленно, если можно сделать прозрачно и быстро? ;)

До 4 ядер вместе - быстро, а уже эти четвёрки можно сажать на общую "медленную" шину и расширять в "условно неограниченное масштабирование"...

_________________
:dj: https://mastodon.social/@Shaos


01 Aug 2022 19:37
Profile WWW
Senior
User avatar

Joined: 21 Jul 2012 15:56
Posts: 126
Location: Zürich, Switzerland
Reply with quote
Shaos wrote:
До 4 ядер вместе - быстро, а уже эти четвёрки можно сажать на общую "медленную" шину и расширять в "условно неограниченное масштабирование"...


Ну это тогда будет уже сложная многоуровневая система, которую без миллиарда не осилить :-)
NUMA и все такое...

Т.е. то что я предлагаю - это условный подход x86 2000-х.
А то что ты - это подход x86 из 2020-х :-)


01 Aug 2022 20:05
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Ну мы же современные люди ;)

А к этой четвёрке можно и кеш присобачить, через который будет производиться доступ к внешней "медленной" памяти :)

_________________
:dj: https://mastodon.social/@Shaos


01 Aug 2022 20:16
Profile WWW
Novelist
User avatar

Joined: 18 Nov 2022 06:33
Posts: 41
Location: Урюпинск
Reply with quote
Дочитал 27 страниц!
И каков итог? Получилось впихнуть невпихуемое?
А, ведь, есть прекрасный Z280, заточенный под мультипроцессорность! Может, его попробуем? viewtopic.php?f=89&t=8954

_________________
Two Beer? Or not Two Beer?


14 Apr 2023 05:38
Profile ICQ WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
oldlazycat wrote:
Дочитал 27 страниц!
И каков итог? Получилось впихнуть невпихуемое?

Ну почему же "невпихуемое"? Вполне даже впихуемое! :wink:

Два микропроцессора вполне впихнули:
Двухпроцессорная система на микропроцессорах Intel 8080.

Image

Просто, насколько я понимаю, у всех участников были разные ожидания от этого проекта... :neutral:
Меня лично результат даже с двумя микропроцессорами разочаровал. :-?

_________________
iLavr


14 Apr 2023 07:11
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Да и 4 проца тоже норм должно работать (если железохрен не обделался с выкладками)

_________________
:dj: https://mastodon.social/@Shaos


14 Apr 2023 08:49
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 413 posts ]  Go to page Previous  1 ... 24, 25, 26, 27, 28  Next

Who is online

Users browsing this forum: No registered users and 28 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.