Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 14:55

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 02:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
WingLion писал(а):
Можно и нужно. Я сейчас вижу возможность установить в параллель сразу 6 ядер на одном блоке памяти (Два трехъядерника на два порта памяти). При чем это и с Альтерой и Ксайлинксом сработает, можно сказать, однаково.

Вот это я и имел в виду. Все равно блочная память может работать быстрее, чем остальная часть процессора, от этого уйти очень сложно. Значит, очень даже можно попользоваться ей на всю катушку.
WingLion писал(а):
Надо, только вот, не уверен, что "просто" это получится. Скорее "сложно", а значит, с потерей эффективности на этой синхронизации, поэтому о ней надо думать заранее на самом начальном этапе, и делать в железе, коли ячеек у нас явно больше, чем надо на сами ядра.

Ну, под "просто" я имел в виду тот факт, что приемы синхронизации параллельно работающих ядер в принципе известны. Насколько эффективны - другой вопрос, но в ПЛИС же мы все равно сейчас сталкиваемся с ситуацией, когда ячейки простаивают. Тут хоть 1% прироста - и то хлеб :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 02:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
О тут как раз нарветесь. Если это слова с данными внутре, хотя бы тот же VARIABLE, будут использоватся совместно без каких нибудь средств синхронизации то каюк вашему форту наступит неминуемо.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 03:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
_Harry писал(а):
Если это слова с данными внутре, хотя бы тот же VARIABLE,


А кто сказал, что VARIABLE не способно хранить свои данные в отдельной памяти, собственной для каждого ядра?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 03:17 
Не в сети
Administrator
Administrator
Аватара пользователя

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


С этим и спору нет.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 18:22 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
WingLion писал(а):
А кто сказал, что VARIABLE не способно хранить свои данные в отдельной памяти, собственной для каждого ядра?
Способно то оно то чего способен афтор :wink: написать. только тогда все данные форт системы надо будет дублировать и/или всеш таки синхронизацию обеспечивать.
Можно и программным путем но лучше подумать как решить это дело аппаратно.
У вас же софт проц, стоит всеже глянуть на тот же SEAForth там как раз у каждого ядра своя память. :!:
Ясно что это очень специфичный проц, но кое что из идей мне кажется почерпнуть от туда можно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 21:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
Способно то оно то чего способен афтор написать. только тогда все данные форт системы надо будет дублировать и/или всеш таки синхронизацию обеспечивать.
Можно и программным путем но лучше подумать как решить это дело аппаратно.

Про эти вопросы уже давно подумано. Есть multiprocessor и multicomputer, unified memory access и non-unified memory access, различные типы межядерных связей и т.п.
_Harry писал(а):
У вас же софт проц, стоит всеже глянуть на тот же SEAForth там как раз у каждого ядра своя память.

SEAForth - отнюдь не единственный образец системы подобного рода. И даже не исключительный в своем роде.
_Harry писал(а):
Ясно что это очень специфичный проц, но кое что из идей мне кажется почерпнуть от туда можно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 22:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Тут хоть 1% прироста - и то хлеб
предлагаю назвать метод дрожжевым :idea:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 22:22 
Не в сети
Administrator
Administrator
Аватара пользователя

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


В контексте данной темы Сиафорт сконфигурировать невозможно, чтобы получилось что-то похожее.Из того, что из него можно почерпнуть,
у меня только одна мысль - ТАК ДЕЛАТЬ НЕЛЬЗЯ! :(

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 22:47 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
WingLion писал(а):
ТАК ДЕЛАТЬ НЕЛЬЗЯ!
ПОЧЕМУ????
В смысле если не лень объясните в кратце!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 23:01 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Чт июн 10, 2010 23:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
ПОЧЕМУ????
В смысле если не лень объясните в кратце!

Потому что там ASIC, со всеми вытекающими. Причем не просто ASIC, а вручную нарисованный Муром. У разработчика ASIC условия другие.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Пт июн 11, 2010 00:56 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Хищник писал(а):
У разработчика ASIC условия другие.

Да дело видимо в том что в плисах я понимаю несколько меньше чем "...свинья в апельсинах
Но уж больно мне этот проц понравился неужто там никаких полезностей не заложенно?
Все молчу молчу :oops:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Multi-threading для софт-процессора
СообщениеДобавлено: Пт июн 11, 2010 01:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
_Harry писал(а):
Да дело видимо в том что в плисах я понимаю несколько меньше чем "...свинья в апельсинах
Но уж больно мне этот проц понравился неужто там никаких полезностей не заложенно?

Тут надо немного поговорить про архитектуру ПЛИС. Весь вопрос в том, что это своеобразный конструктор лего для электроники - стандартные детальки, сборные модельки получаются угловатыми и негладкими, зато можно сделать хоть машинку, хоть дом, хоть самолет, не связываясь ни с металлообработкой, ни с литьем пластмассы. А раз эта штука должна быть пригодна для изготовления чего угодно, то внутри и оказывается регулярненькая такая структура однотипных и универсальных узлов-ячеек, к которым добавлены блоки памяти, умножители и тактовые генераторы (это так, черновой список). Причем первые два - потому что на универсальных ячейках делать такое совсем невесело, и получается сильно больше по размеру и дороже, чем поставить аппаратный блок. А вот тактовый генераторы нужны, потому что современная цифровая электроника стала очень капризной в смысле гонок фронтов и прочих рассинхронизаций. Размеры маленькие, частоты высокие, где кончается один бит и начинается другой, можно показать руками. Поэтому ПЛИС и тяготеют к схемам вида "сейчас всем аккуратно дотащим уровни на вход, а потом каааак клокнем - они и запишутся!". Тут главное, чтобы фронты дошли максимально синхронно, а то половина ячеек успеет новые значения перебросить соседям, а те еще предыдущие не записали. Затем и тактовые генераторы, подключенные к разбросанным по кристаллу специальным сетям, и стиль проектирования pure synchronous.
Идем дальше. Производители ПЛИС делают их так, чтобы продавались. А значит, сочетание ресурсов там вполне определенное, и блоки более или менее стандартные. И когда разработчик берет ПЛИС, ему нужно
а) вписаться в ресурсы, причем не просто не превысить, а и постараться сделать так, чтобы они не простаивали
б) обеспечить синхронную конструкцию
в) обеспечить равномерную "нагрузку" комбинаторной логики - т.н. logic levels
Что такое пункт в). Логические ячейки не могут делать "что угодно" в одиночку. Сложные комбинаторные выражения вычисляются цепочкой ячеек. Если в цепочке ячеек много, задержка на них пропорционально возрастает, а с учетом пункта б) это время не может быть больше желаемого периода тактового сигнала (а то не успеют вычислить и дотащить до триггера, в который пишут). Поэтому возникает необходимость придумать такие конструкции и схемы, чтобы там не было слишком неоднородных выражений (например, 99% кристалла - простые и мелкие блоки, и в одном месте - крупный клубок ячеек, который ограничивает частоту в 20 МГц, хотя все остальное может дать и 200). В этом смысле ASIC свободны от подобных проблем, потому что можно поставить более сложную логику там, где это требуется. Более того, можно ее даже "разогнать", выбрав более быстродействующий логический элемент. Правда, он будет и больше кушать, но в критических местах вполне можно на такое пойти. Правда, при разработке ASIC нужно следить за тактовыми цепями - в ПЛИС-то они уже проложены, а тут можно посадить большую и толстую плюху.
Теперь смотрим маршрут проектирования. Он слоеный. Можно написать
Код:
if clk'event and clk = '1' then
  c <= a + b;
end if;
Все, меня теперь не касается, как это ляжет на кремний (или в ПЛИС). Я заявил, что хочу на каждом такте суммировать сигналы a и b, а дальше пусть думает САПР. Это поведенческий уровень. Есть и уровни выше - системный, к примеру, но они немного особняком. Ниже поведенческого идут структурный и RTL (уровень регистровых передач). Грубо говоря, это когда схема доведена до триггеров и вентилей. То есть сумматора как такового нет, он расписан до базовых элементов. После них идет layout и физика - это когда компоненты привязываются непосредственно к кристаллу. Рисуются дорожки, при необходимости - хоть транзисторы. Так вот, если процессоры в ПЛИС делаются в основном на верхних уровнях этой иерархии, то SEAForth получился из ядра, написанного Муром на топологическом уровне - он сделал по сути рисунок на кремнии, "вырастив" процессор снизу вверх. Внести существенные изменения в такое ядро, тем более поменять архитектуру или способ доступа к памяти за один вечер - нереально. Плюс проблема разводки тактового сигнала. Плюс PVT (вовсе не Pressure, Volume, Temperature, а Process, Voltage, Temperature). С другой стороны, при обнаружении критических мест в ASIC их можно начинать целенаправленно улучшать, а в ПЛИС ячейки только одного вида, и остается только думать, что бы такого из них поэффективнее сотворить. Так что основные проблемы, стоящие перед разработчиком, существенно различаются, и набор инструментов, доступных для решения, также различен. В этом смысле основной плюс SEAForth в том, что он... уже разработан :) То есть на него уже потрачены деньги, сделана топология кристалла, и в этой связи он, как специализированное изделие, оказался быстрее, компактнее, экономичнее и дешевле, чем ПЛИС с аналогичными характеристиками. Однако ПЛИС может пойти дальше, а SEAForth - тоже... но при условии еще одного финансового вливания.

При этом конкретно SEAForth оказался в некоторой степени заложником компактности - 18 бит, маленькая память, доступная каждому ядру, фиксированная топология межядерных связей. Тут можно, конечно, очень долго доказывать, что такая архитектура соответствует "истинному духу Форта", и "настоящие фортеры должны разобраться", но....


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

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


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

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


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

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