Author |
Message |
aahzma
Junior
Joined: 26 Jul 2021 01:11 Posts: 3
|
Забавно... Я именно в 2021 году задумался о создании ПК "а-ля 80е", по мотивам всех тогдашних 580-х изделий... и понял, что надо отталкиваться от многопроцессорной масштабируемой архитектуры. Но, на удивление, кроме размышлений ничего не нашел. Тема умерла, как я понимаю?
|
27 Jul 2021 12:02 |
|
|
VGrad
Maniac
Joined: 18 Nov 2013 15:15 Posts: 209 Location: все оттуда ;)
|
Зачем ? Этим актуально было заниматься в середине 80-х ! Читай как сделана шина MultiBUS (русское название "И-41"). Потом неплохо бы ОС которая это поддерживает. Если нет зацикленности на 580 процессоре, то сразу перейти к 1810, компьютеру "Нейрон И9.66".
|
27 Jul 2021 19:24 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нет, не умерла... иногда она неожиданно оживает... Всё зависит от того, что хочется получить в итоге.
_________________ iLavr
|
29 Jul 2021 08:01 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
В продолжение идей со страницы 23 (август 2012): http://www.nedopc.org/forum/viewtopic.php?f=46&t=7540&start=330Подумалось тут мне, что чего попусту крутиться в цикле? Можно при попытке записи в порт 7 останавливать проц через сброс READY, если аппаратный арбитр решит не давать ему доступ к ресурсу: Либо вообще разнести семафоры по разным номерам портов и писать туда приоритет с которым проц хочет ресурсом попользоваться - арбитр будет сравнивать приоритеты и выстраивать запросы в очередь в правильном порядке, хотя наверное это уже черезчур сложно (а если делать руками супервизора, которым будет выступать 5й процессор, то ещё и медленно) P.S. Эти "аппаратные" семафоры можно рассматривать как самые настоящие сигнальные семафоры - с помощью них рабочие процы отправляют сигнал процу-арбитру и ждут пока этот сигнал не будет принят. Если добавлять приоритеты 0...7 к семафорам, то каждый проц должен будет запоминать не только номер семафора, но и номер приоритета на регистре, а проц-арбитр должен будет эти регистры всех процов обходить и смотреть если от кого-то пришёл какой-то запрос. Плюс к этому можно сделать передачу символов между процессорами - эдакие каналы от любого процессора к любому процессору. Например запись в порт 0 будет означать передачу символа в 0й процессор (скажем для вывода в терминал). Запись в порт 1 - передача символа в 1й процессор и т.д. Чтение из портов будет означать принятие символа из соответствующего процессора (но не для порта 0, чтение из которого будет возвращать кол-во процессоров в системе и номер процессора). Запись в порт будет подвешивать процессор-передатчик, пока на той стороне не прочитают посланный байт. Если процессор попытается послать символ сам себе (например процессор 3 выполнит команду OUT 3), то он самозаблокируется до перезагрузки системы. Плюс к этому процессор 0 (арбитр/супервизор) может иметь специальную логику, предотвращающую отпускание процессора-передатчика в момент чтения соответствующего порта нулевым процессором т.к. он должен отпускать процессоры в специальном порядке в соответствии с приоритетами (это можно сделать путём записи в порт 0 нужного битика) - для него также чтение из порта 0 будет иметь иной смысл - он будет возвращать битовый набор, где каждый бит сигнализирует, что тот или иной процессор послал байт в канал и ждёт его анализа.
|
02 Nov 2021 23:18 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
Чего-то подумалось, что для реализации этих параллельных каналов связи между процессорами можно взять ВВ55е | Даже можно попробовать задействовать хендшейк, который включается в одном из режимов их работы!
|
12 Nov 2021 01:15 |
|
|
BarsMonster
Senior
Joined: 21 Jul 2012 15:56 Posts: 126 Location: Zürich, Switzerland
|
Поразмыслил над темой 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 |
|
|
BarsMonster
Senior
Joined: 21 Jul 2012 15:56 Posts: 126 Location: Zürich, Switzerland
|
Второй вопрос про разделение адресного пространства. Разделение стека мне очень нравится, жаль что код и данные не поделить без диких извращений.
Правильно ли я понимаю, что стек через слово состояния отделить можно только в 580/8080 и 8085, но не Z80?
|
31 Jul 2022 19:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
Ну решение иметь 4 проца, которые в параллель дёргают быструю оперативную память, причём абсолютно прозрачно и не наступая друг другу на пятки, как мне кажется выглядит самым красивым
|
31 Jul 2022 23:33 |
|
|
BarsMonster
Senior
Joined: 21 Jul 2012 15:56 Posts: 126 Location: Zürich, Switzerland
|
Наиболее красивым, но и наиболее оторванным от современных концепций SMP. Т.к. работать будет только потому что память и драйверы по технологии 90-350нм, а не 6мкм. Ну и масштабирование упирается в потолок. Современный SMP - всегда с тормозной шиной. И как выяснили раньше SMP плохо работает без кеша. Потому возникла такая идея: у каждого процессора своя пара страниц памяти (128кб), т.е. страницы 0 и 1. Там может быть стек (по желанию), локальный код, локальные данные. А когда проц лезет на страницы 2 и выше, на устройства - вот там все идет через диспетчер шины, медленно. А то и вовсе без диспетчера, а просто по очереди все получают слоты общей шины (т.е. медленно). В этом случае мы получаем что-то похожее на современные архитектуры, и условно неограниченное масштабирование. Конечно, если написать код который будет случайно дергать глобальную память одновременно со всех ядер - будет тормозить, как и в современных компьютерах. Т.е. по факту будет L1 кеш с "ручным" управлением. В лучшем случае загрузку/выгрузку "кеша" можно положить на КПДП во второй таймслот локальной шины по-Орионовски, но это уже чтобы мастерство показать.
|
01 Aug 2022 17:47 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
Там же снаружи шина тормозная, а внутри - шустрая, не? А зачем медленно, если можно сделать прозрачно и быстро? До 4 ядер вместе - быстро, а уже эти четвёрки можно сажать на общую "медленную" шину и расширять в "условно неограниченное масштабирование"...
|
01 Aug 2022 19:37 |
|
|
BarsMonster
Senior
Joined: 21 Jul 2012 15:56 Posts: 126 Location: Zürich, Switzerland
|
Ну это тогда будет уже сложная многоуровневая система, которую без миллиарда не осилить NUMA и все такое... Т.е. то что я предлагаю - это условный подход x86 2000-х. А то что ты - это подход x86 из 2020-х
|
01 Aug 2022 20:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
Ну мы же современные люди А к этой четвёрке можно и кеш присобачить, через который будет производиться доступ к внешней "медленной" памяти
|
01 Aug 2022 20:16 |
|
|
oldlazycat
Novelist
Joined: 18 Nov 2022 06:33 Posts: 43 Location: Урюпинск
|
Дочитал 27 страниц! И каков итог? Получилось впихнуть невпихуемое? А, ведь, есть прекрасный Z280, заточенный под мультипроцессорность! Может, его попробуем? viewtopic.php?f=89&t=8954
_________________ Two Beer? Or not Two Beer?
|
14 Apr 2023 05:38 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну почему же "невпихуемое"? Вполне даже впихуемое! Два микропроцессора вполне впихнули: Двухпроцессорная система на микропроцессорах Intel 8080. Просто, насколько я понимаю, у всех участников были разные ожидания от этого проекта... Меня лично результат даже с двумя микропроцессорами разочаровал.
_________________ iLavr
|
14 Apr 2023 07:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22828 Location: Silicon Valley
|
Да и 4 проца тоже норм должно работать (если железохрен не обделался с выкладками)
|
14 Apr 2023 08:49 |
|
|