Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн окт 14, 2019 22:09

...
Google Search
Forth-FAQ Spy Grafic

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




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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хм, для чего формулы? Если представить это словесно : три ядра, которые каждое выполняет отдельный процесс, выполнят три процесса за то же время, за которое одно ядро выполнит один, если ... если работа с памятью всё равно не может быть быстрее для каждого по отдельности (так?)


Последний раз редактировалось вопрос Пт май 28, 2010 23:42, всего редактировалось 1 раз.

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

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

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
WingLion писал(а):
Увеличивается в три раза только количество тригеров, но _не логика_!

А логика используется одна на все три ядра.

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


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

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

Одно ядро ~900LE
Трехядерный вариант ~1500LE

Ни о каком тиражировании логики не идет речи. В Ксайлинксе, на сколько я понял, регистры сдвига для всех трех ядер, должны получиться вообще что-то типа три регистра в цепочке на одной ячейке (за счет организации), и увеличение объема будет совсем мизерным при подобном подходе...
Эх, надо таки брать плату с шестым спартаном...

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
Хищник писал(а):
Для этого, конечно, требуется, чтобы они стартовали с разных адресов.

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
WingLion писал(а):
Ни о каком тиражировании логики не идет речи. В Ксайлинксе, на сколько я понял, регистры сдвига для всех трех ядер, должны получиться вообще что-то типа три регистра в цепочке на одной ячейке (за счет организации), и увеличение объема будет совсем мизерным при подобном подходе...

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
mOleg писал(а):
Хищник писал(а):
Для этого, конечно, требуется, чтобы они стартовали с разных адресов.

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

А можно теперь не страшным термином, а конкретным HDL это проиллюстрировать? Как это два ядра, стартовавшие с одного адреса, и работающие с одной памятью и на одной частоте, разойдутся по своим потокам исполнения.


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

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


У каждого ядра будет свое время доступа к шине. Три ядра - три такта - три момента доступа. У каждого ядра момент (такт) свой. А синхронная память каждый такт принимает команду от одного из ядер и исполняет команды разных ядер раздельно в разные моменты времени. Маленький нюанс только при чтении, когда данные появляются на выходе не в момент передачи адреса и сигнала чтения, а через пару-тройку тактов, в зависимости от настроек. И в тот момент соответствующее ядро и должно ловить их на соответствующем шаге конвеера. Запись в такую память происходит за один такт сразу. Подается адрес, данные и сигнал записи, поэтому все три ядра будут писать и читать не мешая друг другу, каждое ядро в свой такт...

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

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

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
Хищник писал(а):
А можно теперь не страшным термином, а конкретным HDL это проиллюстрировать?

HDL нет, а вот в виде алгоритма можно.
кстати, тут надо оговориться, нужно ли действительно всем процессорам одновременно запускаться (возможно более удачный вариант - запуск одного, инициализация системы (Загрузка кода, инициализация перифирии, распределение памяти), и принудительный запуск остальных процессоров с конкретными задачами для них. Т.е. речь об иерархической системе.

что же до алгоритма. То должна существовать ячейка памяти X
процессоры, доходя до точки "разбегания" каждый
обменивает значение переменной Х со значением в личном регистре процессора (там должна быть -1)
если после обмена в регистре 0 - продолжаем выполнение, если -1 "зависаем" в ожидании (т.е. пытаемся опять и опять обменять значение X на -1 в регистре проца, как только вернется 0 пойдем дальше)
(т.е. один проц войдет в секцию кода)
после этого код выполняет только один процессор (сколько бы других ни было)
он может определить, например, какой код стоит дальше выполнять в гордом одиночестве
или оставить информацию для следующего, куда нужно перейти, например, увеличив указатель на список точек входа для процессоров.)
по выходу из секции в Х нужно записать 0.

вобщем, ничего сложного. Просто операцию обмена и ожидания лучше делать в железе.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
кстати, а не получится, что память начнет сильно тормозить?
ведь скорее всего адреса будут у разных процов разные (т.е. в разных страницах), а это по нескольку дополнительных тактов на доступ???

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
дело в том, что объекты синхронизации придется всеравно делать, раз уж память общаяя. Тот же HERE надо будет трогать монопольно только одному процессору за раз (к примеру).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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


Для синхронной _статической_ памяти никаких лишних тактов на доступ нет... это у DRAM, SD-RAM, DDR и иже с ними дополнительные такты нужны, и у них организация страничная.
A у простой SRAM (блоковая память в ПЛИС) все просто:
вход - клок;
вход - сигнал адреса чтения;
вход - сигнал адреса записи (раздельно от адреса чтения!);
вход - сигнал данных для записи;
вход - сигнал записи;
вход - сигнал чтения (необязателен, можно оставить его активным постоянно);
выход - считанные данные (раздельно от входа данных для записи).
И все.

Операции все синхронны.
За один такт. При чтении только данные на выходе появляются не в тот же такт, а через несколько тактов (их число и называется latency). свои такты latency ядро ждет, а в это время работают с памятью (вычитывают данные) другие ядра.

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


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

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


формально, каждый процессор должен будет иметь свой HERE в свободной памяти. Общая софтверная часть у них будет неизменной или должна меняться одним процессором (супервизором).
Изменяемые части могут быть, но в раздельной памяти. т.е. свободные от ядра части общей памяти должны быть разделены между процессорами (этому дала, этому дала, а этому не дала).

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
WingLion писал(а):
Для синхронной _статической_ памяти никаких лишних тактов на доступ нет...

я просто не понял, о какой памяти речь. Я как раз подумал о DDR.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
WingLion писал(а):
формально, каждый процессор должен будет иметь свой HERE в свободной памяти. Общая софтверная часть у них будет неизменной или должна меняться одним процессором (супервизором).

тогда это не имеет смысла, лучше каждому дать свою память. Кстати HERE - это был просто пример понятный, будут и другие общие переменные 100500 :)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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


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

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


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

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