
nedoPC-580 (SMP на 5 процессорах КР580ВМ80А)
Moderator: Shaos
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
А интересная затея со стеком! Я сначала думал, что используют двухбайтовый
OUT от 8086... ан нет!
А такая идея, как у них, и с 580ВМ80 прокатывает! PUSH-то он тоже два байта
пихает, и пространство памяти для стека у 580ВМ80 разделено...
Хотя и SHLD может похоже сработать - по байту в оба контроллера разом...
Вот бы ещё придумать, как их в графический режим развернуть, аналогично 6845...
OUT от 8086... ан нет!
А такая идея, как у них, и с 580ВМ80 прокатывает! PUSH-то он тоже два байта
пихает, и пространство памяти для стека у 580ВМ80 разделено...
Хотя и SHLD может похоже сработать - по байту в оба контроллера разом...
Вот бы ещё придумать, как их в графический режим развернуть, аналогично 6845...

iLavr
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Ну это очевидно... так, собственно, и саму 6845 включают...HardWareMan wrote:Поставь ОЗУ заместо ПЗУ знакогенератора и обеспечь доступ процессора
к ней (без снега можно за счет синхронизации к КОХ).
Есть только одна неприятная разница - в отличие от 6845, у которой нет
своего буфера строки, но вроде как есть собственный встроенный ПДП,
у 580ВГ75 буфер строки есть (даже два)...
В зависимости от его содержимого 580ВГ75 будет выставлять разные
адреса сканирования ОЗУ (что заместо ПЗУ знакогенератора), при завершении
строки - будет выдавать запрос на полнение строки.
Это надо как-то учесть всё в управляющем ПО и аппаратной организации.
А "Поставь ОЗУ с мультиплексорами заместо ПЗУ" - это я согласен... да...
iLavr
-
- Maniac
- Posts: 287
- Joined: 05 Nov 2008 19:47
- Location: 81.28.208.238
Дык похоже в 8080 разделены память данных и кода? (через слово состояния) - и отдельный стек это будет 64К*3=192К памяти...А интересная затея со стеком! Я сначала думал, что используют двухбайтовый
OUT от 8086... ан нет!
А такая идея, как у них, и с 580ВМ80 прокатывает! PUSH-то он тоже два байта
пихает, и пространство памяти для стека у 580ВМ80 разделено...
Хотя и SHLD может похоже сработать - по байту в оба контроллера разом...
Вот бы ещё придумать, как их в графический режим развернуть, аналогично 6845...
Поправьте, если не прав.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Где-то мы это обсуждали уже, только вот сомневаюсь, что "данных и кода",aav8 wrote:Дык похоже в 8080 разделены память данных и кода? (через слово состояния - STATUS) - и отдельный стек это будет 64К*3=192К памяти...
Поправьте, если не прав.
скорее кода/данных, стека и УВВ... Но УВВ лишь 256 байт у 8080.

Но если профиксить выборку команды из слова состояния, то может быть и
192К памяти + 256 байт...

PS. Формально выходит что код/данные разделить можно, только получаются
они не совсем полноценные эти пространства...

Last edited by Lavr on 07 Sep 2012 00:22, edited 1 time in total.
iLavr
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Вся проблема в том, что "выборка команды" это М1, поэтому команда STA 1234h, которая в памяти по адресу, скажем, 8000h лежит как 32 34 12 будет выполнена так (C - код, D - данные):
R C:8000 32
R D:8001 34
R D:8002 12
W D:1234 XX
R C:8000 32
R D:8001 34
R D:8002 12
W D:1234 XX
Last edited by HardWareMan on 05 Jan 2014 07:00, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Если мы друг друга правильно поняли, то в принципе мы физически разделить
данные и код на два пространства по 64К можем.
Только это аппараное усложнение нам не даст ни каких дивидендов против
одного пространства кода/данных размером в 64К.
А потеряем мы напротив очень заманчивую возможность самомодификации
кода программы.
Ведь как ни крути, а 8080 всё-таки процессор принстонской архитектуры...
данные и код на два пространства по 64К можем.
Только это аппараное усложнение нам не даст ни каких дивидендов против
одного пространства кода/данных размером в 64К.
А потеряем мы напротив очень заманчивую возможность самомодификации
кода программы.
Ведь как ни крути, а 8080 всё-таки процессор принстонской архитектуры...
iLavr
-
- Doomed
- Posts: 487
- Joined: 05 Nov 2007 05:08
- Location: Украина
ну почему, можно получить дополнительные 64к для данных используя сигнал записи в стек, хотя особых преимуществ перед обычным переключением страниц тут не видноLavr wrote:Если мы друг друга правильно поняли, то в принципе мы физически разделить
данные и код на два пространства по 64К можем.
Только это аппараное усложнение нам не даст ни каких дивидендов против
одного пространства кода/данных размером в 64К.
А потеряем мы напротив очень заманчивую возможность самомодификации
кода программы.
Ведь как ни крути, а 8080 всё-таки процессор принстонской архитектуры...

-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
shoorick ну вот тут ты нас уже не понял.shoorick wrote:можно получить дополнительные 64к для данных используя сигнал записи в стекLavr wrote:Если мы друг друга правильно поняли, то в принципе мы физически разделить
данные и код на два пространства по 64К можем.

С ним получаем полноценное пространство в 64К, доступное по PUSH и POP.
А речь идёт о том, есть ли смысл делить ещё данные и код на два пространства.
iLavr
-
- Doomed
- Posts: 487
- Joined: 05 Nov 2007 05:08
- Location: Украина
-
- Novelist
- Posts: 42
- Joined: 09 Aug 2012 04:05
- Location: 91.213.33.6
Итак прочел все страницы этой темы – не выдержал, зарегистрировался, хочу вставить свои 5коп.
Как я понял – есть желание разработать многопроцессорную машину на совковой-отечественной-древней-ретро (нужное подчеркнуть) элементной базе (выбран дорогой моему сердцу КР580ВМ80А). Итак – первое, с чего необходимо начинать подобную разработку – определить цели и методы (доступные средства).
В общем вводная:
• Многопроцессорная (для начала 4ре процессора) машина
• Процессоры архитектурно равноправны
• Как процессор использовать КР580ВМ80А
• ОЗУ на статической памяти
• Постаратся обойтись без современных ИМС, без ПЛИС. Т.е. условно 74 серия
• Страничная организация ОЗУ сегментами по 8К
• Возможность переключения ОЗУ в виде любая страница-куда угодно.
• ОБЯЗАТЕЛЕН механизм защиты памяти (об этом ниже)
• ОС самописная многозадачная, с вытесняющей многозадачностью. Необходимо постаратся реализовать посикс
• Возможность запуска ПО различных старых восьмибитников в режиме аппаратной эмуляции (при условии что они пользуют стандартные вызовы CP/M, монитора)
• На первых порах ограничится текстовым вводом – выводом – терминал в компорт.
• Среда разработки – ASM , ANSI C
Итак устройство управления памятью, устройство защиты памяти.
Сначала сразу скажу, что делать в железе сколько-нибудь пригодную для реального использования машину без механизма защиты памяти темболее многозадачную, темболее многопроцессорную – просто бессмысленно.
Организация памяти с точки зрения процессора
Восемь страниц по 8к. Младшая страница – системная, может быть переведена в режим только чтение (средствами MPCU через запись в управляющий регистр ACR соответствующего значения)
Организация памяти глобально.
Все глобальное аддресное пространство состоит из 8К страниц. Страницы бывают:
• Страница супервизора: в ней загрузочное системное ПЗУ, регистры УВВ, регистры управления устройства управления и защиты памяти.
• Страницы ОЗУ. Просто страницы ОЗУ по 8К
MPCU
в зависимости от значения регистра PCR маппит соответствующую 8к страницу ОЗУ в адресное пространство соответствующего процессора, в заданый 8к сегмент.
В зависимости от значения регистра ACR запрещает запись соответствующей системной страницы (аппаратно блокирует сигналы записи от процессора)
Процессоры индивидуально могут быть сброшены через запись соответствующих значений в регистр CCR
Могут быть вызваны (индивидуально, каждого процессора) прерывания через запись соответствующих значений в регистр CCR.
Механизм работы всего бардака:
Все процессоры стартуют, но системное ПЗУ изначально замаплено в АП только одного процессора. Выполняя программу из системного ПЗУ процессор прячет страницу со всеми критичными регистрами от других процессоров. Потом халтит другие процессоры. Затем устанавливает запрет для всех других процессоров на запись в системные страницы. Заполняет страницы кодом для других процессоров и маппит их в системные страницы, запускает код на выполнение в других процессорах (отжимает халт, или ресетит). В общем у кого ПЗУ, того и тапки.
Вытесняющая многозадачность обеспечивается инициированием прерываний с передачей управления в соответствующую системную страницу и подменой страниц с кодом разных задач. Если процессор запретил прерывания – задача считается повисшей и проц ресетится со стороны супервизора по таймауту сторожевого таймера.
Обеспечить вытесняющую многозадачность супервизор сам себе не способен, поэтому прикладные задачи на нем выполнятся не будут.
Кстати через ПДП можно организовать виртуальную память, я думаю..
Возможно в принципе масштабирование системы с созданием иерархической структуры из вычислительных ячеек по 4-8 процессоров с собственным ОЗУ и MPCU, с передачей страниц ОЗУ между ячейками через ПДП но с одним супервизором на систему (возможно даже главный супервизор будет делегировать часть своих задач другим процессорам ). Но при этом все процессоры структурно эквивалентны, просто кто супервизор в текущий момент зависит от конфигурации системы.

Как я понял – есть желание разработать многопроцессорную машину на совковой-отечественной-древней-ретро (нужное подчеркнуть) элементной базе (выбран дорогой моему сердцу КР580ВМ80А). Итак – первое, с чего необходимо начинать подобную разработку – определить цели и методы (доступные средства).
В общем вводная:
• Многопроцессорная (для начала 4ре процессора) машина
• Процессоры архитектурно равноправны
• Как процессор использовать КР580ВМ80А
• ОЗУ на статической памяти
• Постаратся обойтись без современных ИМС, без ПЛИС. Т.е. условно 74 серия
• Страничная организация ОЗУ сегментами по 8К
• Возможность переключения ОЗУ в виде любая страница-куда угодно.
• ОБЯЗАТЕЛЕН механизм защиты памяти (об этом ниже)
• ОС самописная многозадачная, с вытесняющей многозадачностью. Необходимо постаратся реализовать посикс
• Возможность запуска ПО различных старых восьмибитников в режиме аппаратной эмуляции (при условии что они пользуют стандартные вызовы CP/M, монитора)
• На первых порах ограничится текстовым вводом – выводом – терминал в компорт.
• Среда разработки – ASM , ANSI C
Итак устройство управления памятью, устройство защиты памяти.
Сначала сразу скажу, что делать в железе сколько-нибудь пригодную для реального использования машину без механизма защиты памяти темболее многозадачную, темболее многопроцессорную – просто бессмысленно.
Организация памяти с точки зрения процессора
Восемь страниц по 8к. Младшая страница – системная, может быть переведена в режим только чтение (средствами MPCU через запись в управляющий регистр ACR соответствующего значения)
Организация памяти глобально.
Все глобальное аддресное пространство состоит из 8К страниц. Страницы бывают:
• Страница супервизора: в ней загрузочное системное ПЗУ, регистры УВВ, регистры управления устройства управления и защиты памяти.
• Страницы ОЗУ. Просто страницы ОЗУ по 8К
MPCU
в зависимости от значения регистра PCR маппит соответствующую 8к страницу ОЗУ в адресное пространство соответствующего процессора, в заданый 8к сегмент.
В зависимости от значения регистра ACR запрещает запись соответствующей системной страницы (аппаратно блокирует сигналы записи от процессора)
Процессоры индивидуально могут быть сброшены через запись соответствующих значений в регистр CCR
Могут быть вызваны (индивидуально, каждого процессора) прерывания через запись соответствующих значений в регистр CCR.
Механизм работы всего бардака:
Все процессоры стартуют, но системное ПЗУ изначально замаплено в АП только одного процессора. Выполняя программу из системного ПЗУ процессор прячет страницу со всеми критичными регистрами от других процессоров. Потом халтит другие процессоры. Затем устанавливает запрет для всех других процессоров на запись в системные страницы. Заполняет страницы кодом для других процессоров и маппит их в системные страницы, запускает код на выполнение в других процессорах (отжимает халт, или ресетит). В общем у кого ПЗУ, того и тапки.
Вытесняющая многозадачность обеспечивается инициированием прерываний с передачей управления в соответствующую системную страницу и подменой страниц с кодом разных задач. Если процессор запретил прерывания – задача считается повисшей и проц ресетится со стороны супервизора по таймауту сторожевого таймера.
Обеспечить вытесняющую многозадачность супервизор сам себе не способен, поэтому прикладные задачи на нем выполнятся не будут.
Кстати через ПДП можно организовать виртуальную память, я думаю..
Возможно в принципе масштабирование системы с созданием иерархической структуры из вычислительных ячеек по 4-8 процессоров с собственным ОЗУ и MPCU, с передачей страниц ОЗУ между ячейками через ПДП но с одним супервизором на систему (возможно даже главный супервизор будет делегировать часть своих задач другим процессорам ). Но при этом все процессоры структурно эквивалентны, просто кто супервизор в текущий момент зависит от конфигурации системы.

-
- Admin
- Posts: 24001
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Novelist
- Posts: 42
- Joined: 09 Aug 2012 04:05
- Location: 91.213.33.6
в принципе на данном этапе нет большей разницы, будет ватчдог аппаратный с программным контролем, или полностью программный (т.е. без дополнительной железной логики). обсуждение деталей в процессе еще выдвижения концепции ведет к флуду.
Ясно одно, что при зависании процесса или его умышленном захлопывании внутри процессора путем блокировки внешних прерываний необходимо генерировать исключение, которое потом будет обработано ОС (повисший проц сброшен, процесс сдамплен для дальнейшего анализа).
Меня сейчас больше интересует междупроцессовое взаимодействие... вот пока обдумываю пару вариантов...
Ясно одно, что при зависании процесса или его умышленном захлопывании внутри процессора путем блокировки внешних прерываний необходимо генерировать исключение, которое потом будет обработано ОС (повисший проц сброшен, процесс сдамплен для дальнейшего анализа).
Меня сейчас больше интересует междупроцессовое взаимодействие... вот пока обдумываю пару вариантов...
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
ща полезу в коробку, достану аркаду на двух Z80 сделанную и запощу фотоLavr wrote:А хотя бы с двумя (или с четырьмя) процессорами К580 (или пусть Z80) реальноеПредполгается что система с 48 процессорами
железо где-либо существовало? Ну, естественно, не так, как в ZX_NEXT, а чтобы
задача действительно распараллеливалась?
