Forth http://fforum.winglion.ru/ |
|
Multi-threading для софт-процессора http://fforum.winglion.ru/viewtopic.php?f=3&t=2606 |
Страница 3 из 5 |
Автор: | WingLion [ Сб май 29, 2010 15:53 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
DDR - это, как раз, тот самый медведь, который не то что не убит... его даже еще не выследили в лесу... и еще неизвестно, а есть ли он там? |
Автор: | WingLion [ Сб май 29, 2010 15:55 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): огда это не имеет смысла, лучше каждому дать свою память Ее попросту не хватит, потому и хочется пускать ядра на одной памяти с одним общим кодом (ядро форта, формально не должно меняться в процессе работы программы, и его можно обобщить, а вот личные данные ядер - надо разделять) К личным данным надо относить изменяемую часть форт-кода, переменные (фактически все!), обрабатываемые данные и т.д. и т.п. |
Автор: | mOleg [ Сб май 29, 2010 15:57 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
WingLion писал(а): а вот личные данные ядер - надо разделять мндя, а зачем? |
Автор: | WingLion [ Сб май 29, 2010 15:58 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): мндя, а зачем? Чтобы разные ядра друг другу не мешали. |
Автор: | mOleg [ Сб май 29, 2010 16:10 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
WingLion писал(а): Чтобы разные ядра друг другу не мешали. а с чего они будут мешать? |
Автор: | Hishnik [ Сб май 29, 2010 16:23 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): HDL нет, а вот в виде алгоритма можно. кстати, тут надо оговориться, нужно ли действительно всем процессорам одновременно запускаться (возможно более удачный вариант - запуск одного, инициализация системы (Загрузка кода, инициализация перифирии, распределение памяти), и принудительный запуск остальных процессоров с конкретными задачами для них. Т.е. речь об иерархической системе. А вот это все как? Особенно "распределение памяти" - аппаратно, что ли? mOleg писал(а): что же до алгоритма. То должна существовать ячейка памяти X Код: if clk'event and clk = '1' then if resetA = '1' then ipA <= 0; end if; if resetB = '1' then ipB <= 5; end if; То есть вот это сложнее? mOleg писал(а): после этого код выполняет только один процессор (сколько бы других ни было) Да-да. Схема стала в два раза больше, чтобы работала только ее половина... mOleg писал(а): кстати, а не получится, что память начнет сильно тормозить? ведь скорее всего адреса будут у разных процов разные (т.е. в разных страницах), а это по нескольку дополнительных тактов на доступ??? Причем выше неоднократно отмечалось, что речь о накристальной статической памяти, которая у Xilinx еще и не имеет латентности... |
Автор: | Hishnik [ Сб май 29, 2010 16:29 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): дело в том, что объекты синхронизации придется всеравно делать, раз уж память общаяя. Тот же HERE надо будет трогать монопольно только одному процессору за раз (к примеру). А какой такой HERE окажется в памяти целевой системы при кросс-компиляции? Кстати говоря, я уже писал, что двупортовая память самостоятельно разрешает аппаратные конфликты при доступе к одной и той же ячейке. |
Автор: | mOleg [ Сб май 29, 2010 16:36 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
Хищник писал(а): Особенно "распределение памяти" - аппаратно, что ли? нет, это сделает первый проц, а потом запустит другие, которым будут уже "розданы карты" Хищник писал(а): То есть вот это сложнее? а то! ведь не все знают HDL, не так ли? Хищник писал(а): ричем выше неоднократно отмечалось, что речь о накристальной статической памяти, которая у Xilinx еще и не имеет латентности... не один Хищник читает через строку |
Автор: | mOleg [ Сб май 29, 2010 16:42 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
Хищник писал(а): А какой такой HERE окажется в памяти целевой системы при кросс-компиляции? ну, вот и Хищник читает через сообщение я для примера привел HERE (хотя, вы бы придрались к любому другому примеру по-любому) Хищник писал(а): Да-да. Схема стала в два раза больше, чтобы работала только ее половина... дедлоки в помощь! |
Автор: | Hishnik [ Сб май 29, 2010 16:49 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): нет, это сделает первый проц, а потом запустит другие, которым будут уже "розданы карты" То есть второй и последующие процессоры должны быть из другого теста и управляться строго программно? mOleg писал(а): а то! ведь не все знают HDL, не так ли? А зачем тогда спорить по вопросу, о котором нет достаточных знаний? mOleg писал(а): Хищник писал(а): Да-да. Схема стала в два раза больше, чтобы работала только ее половина... дедлоки в помощь! Не надо применять отвлеченные рассуждения для анализа поведения схемы, построенной по другим принципам. Синхронизация нужна при наличии возможности получить электрический конфликт. Если такой возможности нет, то и ожидать второе ядро незачем. А значит, никаких взаимных блокировок и не будет, если только специально их не написать, из вредности. |
Автор: | WingLion [ Сб май 29, 2010 17:12 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
mOleg писал(а): а с чего они будут мешать? Совершенно ясно, что мешать они могут только сдуру... Либо у программера крыша съехала, либо у программы им написанной... Если же ни того, ни другого не наблюдается, то процессы (aka ядра процессора) должны уважать друг друга и в чужие данные без надобности не лазить. А вот для этого надо сначала определиться, где чьи данные, т.е. провести разделение общего адресного пространства... |
Автор: | Hishnik [ Вс май 30, 2010 14:59 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
WingLion писал(а): К личным данным надо относить изменяемую часть форт-кода, переменные (фактически все!), обрабатываемые данные и т.д. и т.п. А вот не факт, что эти данные при размещении в одном адресном пространстве будут подвергаться несанкционированным изменениям. Код: CREATE X[] 1000 CELLS ALLOT : SUM-ARRAY1 0 500 0 DO X[] I -TH @ + LOOP ; : SUM-ARRAY2 0 1000 500 DO X[] I -TH @ + LOOP ; VARIABLE SUM2 : MAIN1 \ точка старта первого ядра SUM-ARRAY1 SUM2 @ + \ теперь на стеке первого ядра сумма элементов массива X[] ; : MAIN2 \ точка старта второго ядра SUM-ARRAY2 SUM2 ! ; Массив в общем доступе, переменная SUM2 тоже. Другое дело, что оба ядра "договорились", что не будут портить друг другу жизнь. Но я потому и писал о multithreading (а не multitasking), что по сути программа-то одна, только исполняется в два потока. Вот тут получился двукратный прирост производительности, поскольку ядра посчитали по половинке массива. А вообще, про память данных ничего не конкретизировалось. Речь шла об общей памяти программ, а память данных можно как обобщать, так и делать раздельной для ядер. |
Автор: | WingLion [ Вс май 30, 2010 20:05 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
Надо все-таки подходить творчески к подобному разделению. Если два ядра работают над одной задачей, ясен пень, что у них данные общие. А у разных-то задач данные всяко должны быть разделены. |
Автор: | Hishnik [ Вс май 30, 2010 20:10 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
WingLion писал(а): Если два ядра работают над одной задачей, ясен пень, что у них данные общие. А у разных-то задач данные всяко должны быть разделены. Multithreading - это "много нитей". Это и есть работа над одной задачей. Тут как раз и будет полезен совместный доступ к коду. |
Автор: | WingLion [ Вс май 30, 2010 21:51 ] |
Заголовок сообщения: | Re: Multi-threading для софт-процессора |
просто повторюсь... WingLion писал(а): Надо все-таки подходить творчески к подобному разделению.
|
Страница 3 из 5 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |