Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср ноя 22, 2017 13:03

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Мультизадачный форт-процессор: Предпосылки, идеи, обсуждение
СообщениеДобавлено: Вт ноя 29, 2011 19:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Мультизадачный форт-процессор: Предпосылки, идеи, обсуждение.

Из-за специфики памяти в ПЛИС ф.ALTERA форт-процессор не может с ней работать на предельной скорости, какую может дать реализация на логических ячейках ПЛИС. В связи с этим появляется идея многоядерного процессора, работающего на конвейере, представляющим собой три или более наборов регистров процессора, зацикленных по кругу. При этом каждый такт исполняется код одного из ядер, а остальные ждут своей очереди.
Развивая эту идею, можно придти к возможности реализации мультизадачного процессора, содержащего память на множество экземпляров регистров процессора (столько, сколько поместится во внутреннюю память ПЛИС). Работать соответствующие ядра будут по очереди (заданной неким образом), а разделение задач по состоянию процессора будет аппаратным, что значительно упростит реализацию мультизадачности.
Как это будет работать?
1. Есть отдельная память (внутри ПЛИС), содержащая информацию о процессах, а именно идентификатор процесса, данные регистров его процессора, некоторые атрибуты процесса.
2. Есть память очереди процессов, доступная одному привилегированному процессу (назовем его супервизором), выполняемому всегда, независимо от флага останова в атрибутах. Память очереди процессов аппаратно опрашивается по кругу и каждый такт на конвейер процессора запускаются данные одного из процессоров, которые затем обрабатываются, и результат записывается в те же ячейки памяти, откуда были взяты данные процессора.
3. Опрос непрерывен и зациклен так, что происходит постоянное переключение выполняемых задач (каждый такт – новая задача!) и их выполнение.
4. Супервизор (предположительно нулевой процесс) имеет доступ к данным памяти очереди процессов и контролирует ее, читает, модифицирует, записывает и переключает. Он запускается каждый раз, когда завершится круг задач и таким образом супервизор не может «зависнуть» иначе чем из-за неправильной программы.
5. Задача супервизора следить за остальными процессами, менять при необходимости очередь процессов, реализуя, таким образом, приоритетность; запуск и останов процессов; контроль отсутствия deadlock-oв и иной чертовщины; перезапуск всей системы, если это требуется.
6. Очередь процессов прокручивается по кругу аппаратно, а сам круг меняется программно супервизором. При необходимости увеличения приоритета некоторой задачи, супервизор может вставлять в круг один и тот же процесс несколько раз. Он не может только вставлять его слишком часто, так как исполнение процесса требует полного выполнения на конвейере, поэтому один и тот же процесс в круге может повторяться только через 3-4 других процесса. Для максимизации скорости выполнения для одного процесса, круг может быть сужен до 4-х процессов, один из которых – процесс супервизора, а три других – три параллельно исполняемых процесса. Они могут относиться к одной задаче, если она соответствующе распараллелена. При такой организации, задача получит максимум ресурсов подобного мультизадачного процессора.

Программирование для подобного процессора становится отдельной задачей, над которой надо работать. Но в любом случае, мультизадачный процессор способен работать как однозадачный, если на конвейер запустить актуальную задачу вперемешку с тремя пустыми. Пустая задача – это просто остановленный процесс.
Запускаемая задача оказывается и супервизором. При необходимости, она может запустить параллельно еще несколько процессов и менять их, когда это требуется.

Видимые преимущества перед программным переключателем задач:
1. Отсутствие потерь времени на переключение задач
2. Предельно максимальная скорость переключения задач, а значит быстрая реакция процессов на события.
3. Полная независимость процессов по регистрам процессора. У каждого процесса свой набор регистров, флагов, которые не требуется сохранять при переключении задач и при запуске обработчиков прерываний.
4. Обработчики прерываний видятся как полностью автономные процессы, запускаемые практически сразу после поступления запроса на обработку.

Идея находится в процессе продумывания реализации, поэтому приветствуются любые подсказки и мысли в тему.


Вложения:
Комментарий к файлу: Первая прикидка структуры мультизадачного форт-процессора
multiCPU.GIF
multiCPU.GIF [ 7.41 Кб | Просмотров: 7437 ]

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Вт ноя 29, 2011 19:29 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1252
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
Довольно интересная задумка. Получается, код выполняет непосредственно этот самый конвейер, а ядра поставляют ему этот самый код из памяти? Т.е. пока конвейер выполняет код ядра, оно может сделать что-то еще полезное - например прочитать данные из памяти, подготовить их для конвейера, и записать результат предыдущих вычислений в память. Так? А супервизор распределяет задачи в целом для всех ядер или он может еще и для каждого ядра отдельную очередь формировать? Например одно ядро работает с реал-тайм данными и любые задержки ему будут мешать, а вот два других отданы на использование ос. Кстати, для более эффективного использования ресурсов можно сделать несколько конвейеров и каждый будет работать со своей группой ядер, тогда наверно надо будет сделать еще один супервизор для управления несколькими супервизорами.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Вт ноя 29, 2011 19:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Цитата:
Довольно интересная задумка. Получается, код выполняет непосредственно этот самый конвейер, а ядра поставляют ему этот самый код из памяти?


код выполняет логическое ядро, основанное на конвейерной схеме.

Конвейер выполняет код сразу всех задач (тех, что на конвейере в конкретный момент оказались).

VoidVolker писал(а):
Т.е. пока конвейер выполняет код ядра, оно может сделать что-то еще полезное - например прочитать данные из памяти, подготовить их для конвейера, и записать результат предыдущих вычислений в память. Так?



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

VoidVolker писал(а):
А супервизор распределяет задачи в целом для всех ядер или он может еще и для каждого ядра отдельную очередь формировать?


Супервизор делает все, что заблагорассудится программисту и что железо позволит сделать. Он может даже бросить все и пойти совсем налево, а потом вернуться и продолжить.

VoidVolker писал(а):
Кстати, для более эффективного использования ресурсов можно сделать несколько конвейеров и каждый будет работать со своей группой ядер, тогда наверно надо будет сделать еще один супервизор для управления несколькими супервизорами.


Это получится просто несколько мультизадачных процессора в одном чипе... формально можно, реально будет сильно ограничено. К одной ПЛИС много памяти не подцепить, один чип внешней памяти нужен на каждый такой процессор.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Вт ноя 29, 2011 19:51 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1252
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
Ага, вон оно как значит.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Вт ноя 29, 2011 21:40 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Супервизор делает все, что заблагорассудится программисту

что будет с таким процессором, если он ошибётся? (т.е. если код для нулевого процесса бцдет содержать ошибки)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Вт ноя 29, 2011 21:47 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
что будет с таким процессором, если он ошибётся? (т.е. если код для нулевого процесса бцдет содержать ошибки)


То же самое, что и со всеми другими процессорами... "синяя форточка смерти"

Юзеру придется нажать ctrl+alt+del...

A с другой стороны, остальные процессы могут продолжить работу, если спятивший супервизор их не съест...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 01:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6087
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
А если для памяти сделать сериализатор? Читать в 3 раза больше, чем нужно (по широкой шине), а потом выполнять на высокой частоте.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 12:26 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Тут дилемма, что удобнее (для извлечения предельной производительности)
1. разрабатывать сложные алгоритмы для мультипроцессора (параллелить, возится с синхронизацией), или
2. разрабатывать простые алгоритмы и компилировать их для машины с регистровым банком (или кэшем вершины стека и т.п.).
Мир долго шел по 2-му пути, потом дополнил его 1-м.
WingLion предлагает сразу 1-е без 2-го.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 12:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6087
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
dynamic-wind писал(а):
2. разрабатывать простые алгоритмы и компилировать их для машины с регистровым банком (или кэшем вершины стека и т.п.).

В FPGA нет понятия "кэш вершины стека". Стек, реализованный на регистрах, уже является наиболее скоростной реализацией. Проблема в том, что память в Altera требует дополнительной конвейеризации, чтобы работать на нужной частоте.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 13:24 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Там стандартная логика настолько быстрее стандартных триггеров?
Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая?
Неужели банк регистров 16x16 не впишется по числу ячеек?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 13:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6087
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
dynamic-wind писал(а):
Там стандартная логика настолько быстрее стандартных триггеров?
Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая?
Неужели банк регистров 16x16 не впишется по числу ячеек?

"Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 14:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6087
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
Еще возникло соображение, что предлагаемую архитектуру можно рассматривать в виде нескольких ядер с мультиплексируемым АЛУ. Получается, что АЛУ, как устройство, не определяющее состояние процессора (т.е. не хранящее в себе ничего специфичного для какого-то определенного ядра), может быть обобщено между несколькими ядрами, при условии, что они разберутся, в каком порядке к нему обращаться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 15:30 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Хищник писал(а):
dynamic-wind писал(а):
Там стандартная логика настолько быстрее стандартных триггеров?
Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая?
Неужели банк регистров 16x16 не впишется по числу ячеек?

"Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет.

Понял, что пропускной способности памяти не хватает для выборки команд.
Понял, что регистры делаются на быстрых ячейках (хотя WingLion пишет, что они тоже в памяти--зачем же так запутывать).
По-моему это, будет работать, если слово, выбираемое из памяти за Т тактов, будет содержать N команд, если считать, что количество ядер N/T и команда выполняется за такт.
Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 15:43 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6087
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
dynamic-wind писал(а):
Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд
СообщениеДобавлено: Ср ноя 30, 2011 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2093
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
WingLion писал(а):
Мультизадачный форт-процессор: Предпосылки, идеи, обсуждение.

Непонятно почему из-за медленной памяти в альтеровских плис нельзя достичь предельного быстродействия на одном ядре.
Если брать из медленной памяти сразу много команд в широкий регистр, а затем брать команды одну за другой если они
зависят друг от друга по результатам или разделяют одно АЛУ(а это в основном так при последовательном алгоритме). Имеется ввиду, что эти команды могут быть выполнены параллельно что-ли(алгоритм параллельный)? Но при этом и процессор должен иметь сразу несколько АЛУ.

_________________
С уважением, chess


Последний раз редактировалось chess Ср ноя 30, 2011 16:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB