самодельный многозадачный процессор

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

самодельный многозадачный процессор

Post by Mogrif »

интересная тема
как раз перед тем как на неё наткнуться, начал задумываться о том как бы спроектировать свой процессор, причем сразу многозадачный,
да ещё и на 32бит (ну нету у меня губозакатывательного устройства, и никогда не было)

вообщем сижу медитирую над схемой параллельного сумматора, получается что-то вменяемое только на 2 бита, дальше схема начинает
разрастаться слишком уж монструозно, получается как-то так:

Image

должно работать довольно шустро, раза в 2 быстрее обычного последовательного из этой темы (а может и в 2.5 :lol: )

жаль нет кнопки "прикрепить картинку"

ЗЫ Что можете сказать по серии микросхем 1554 ?
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Mogrif wrote:сижу медитирую над схемой параллельного сумматора, получается что-то вменяемое только на 2 бита, дальше схема начинает
разрастаться слишком уж монструозно...

ЗЫ Что можете сказать по серии микросхем 1554 ?
Здесь есть две крайности - сделать хорошо и на тех элементах, которые действительно необходимы,
но тогда реально получается крупный монстрик.

Либо - сделать просто, на широко доступных корпусах, но чтобы оно реально работало и было
хорошо повторяемо в любительских условиях.
Я придерживался априори второй тенденции.

С серией микросхем 1554 к сожалению не работал, так что ничего сказать не могу.
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Нормальная серия. Улучшенная 1533.
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

Решил, что дальше параллелить нет смысла, и доработал схемку до простейшего 2х битного АЛУ

Image

теперь осталось насадить ЭТО на конвейер для увеличения битности

А теперь вопрос: что ещё должно быть в универсальном АЛУ, ну кроме сдвигов, которые лучше сразу делать нужной битности на основе регистров/триггеров ?
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Откусил отсюда
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

Возник ещё вопрос:

как вычислительные модули подают сигнал о выполнении операции, т.е. как процессор узнает что, например, сумматор произвел запрошенную у него операцию?

пока что мне приходит в голову только счетчик внутри АЛУ с заранее прошитыми таймингами (это если операция не укладывается по времени в 1 такт).
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

Shaos wrote:Откусил отсюда
Зря, мне не надо целую тему, вполне подошла бы та, про 4бит АЛУ для задать пару вопросов по техпроцессу :)

а то целая новая одинокая тема, в которую может быть кто-то изредка и заглянет....
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

Пока что решил остановиться на 8-битном вычислительном ядре и 32-битной шине адреса, наверное придется извращаться с косвенной адресацией.

Вырисовывается такая картина:

при запуске процесса система выделяет ему YYYYYYYY памяти начиная с адреса XXXXXXXX, ВСЕ, процесс может работать ТОЛЬКО с этой памятью, когда счетчик команд добрался до конца выделенного сегмента, он автоматически обнуляется и начинает считать дальше сначала

для основного системного процесса выделена вся память с 0 и до самого конца

в начальной области паияти располагаются заголовки сегментов памяти процессов, в эти же заголовки, при смене активного процесса, сгружаются ВСЕ регистры процессорного ядра, на котором система собирается запускать другой процесс, для которого система загружает из заголовка опять же все регистры, общего назначения, флаги, счетчик команд,...

Непонятным пока остается как при организайции системных вызовов система будет идентифицировать процесс из которого произошел вызов и как элегантней передавать данные системному процессу, например для вывода на экран.
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

посидел, посмотрел как устроены чипы, тот же ИР11, впечатлился, прикинул сколько надо корпусов мелкой логики чтобы его заменить, и решил что неплохо бы использовать и готовые элементы, а не только мелкую логику

вот теперь размышляю, стоит ли использовать комплект 2хИП3+ИП4, просто 2хИП3 или самосборное АЛУ
от этого зависит будущая система команд

самосборное 1битное алу для последовательной обработки каждого бита занимает довольно мало места, но возникают трудности с реализацией функции вычитания, которых нет в параллельном алу, и работает оно очень медленно.

при использовании ИП3+ИП4 процессор разрастется до 16бит, т.к. ИП4 обслуживает 4шт ИП3.
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Post by Mixa64 »

Mogrif wrote:Возник ещё вопрос:

как вычислительные модули подают сигнал о выполнении операции, т.е. как процессор узнает что, например, сумматор произвел запрошенную у него операцию?

пока что мне приходит в голову только счетчик внутри АЛУ с заранее прошитыми таймингами (это если операция не укладывается по времени в 1 такт).
В тактируемых схемах и с комбинационным АЛУ обычно происходит так: в начале такта выставляется код операции АЛУ, на входы АЛУ подаются операнды, возможно со всякими задержками через мультиплексоры и т.п., в конце такта происходит запись результата в регистр. Длительность такта выбирается из расчета максимальной задержки. В продвинутых системах может меняться длительность такта, которая задается на основании кода операции (в расширенном смысле, код АЛУ и код конфигурации тракта данных)
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Post by Mixa64 »

Mogrif wrote: решил что неплохо бы использовать и готовые элементы, а не только мелкую логику
Ну да, в центр сразу MIPS какой-нть простенький поставить :)
pfgx
Senior
Posts: 137
Joined: 20 Mar 2013 03:36
Location: Ростов-на-Дону

Post by pfgx »

Ну не MIPS, но мысль собрать что-нибудь на PIC и параллельных FLASH, используя их как программируемую логику, у меня была.

На вашем сайте такие вещи как FPGA и 80386 вообще не котируются? :)
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

fpga это не спортивно, а вот 80386 не отказался бы посмотреть схемку на предмет реализации защиты памяти и выгрузки состояния процессора при переключении процесса
Mogrif
Writer
Posts: 23
Joined: 27 Feb 2014 05:15
Location: 93.123.183.154

Post by Mogrif »

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

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

а задействовать АЛУ для вычисления реального адреса не слишком хорошо
Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Post by Bill »

Mogrif wrote:опять же интересно как в х86 вычисляется реальный адрес, при адресации через сегмент:смещение, при адресации через набор регистров (базовая косвенная адресация)
не может же там тупо стоять сумматор

а задействовать АЛУ для вычисления реального адреса не слишком хорошо
Может. А какое АЛУ? То, которое используется для обработки данных, или специально выделенное для этих целей?