THG.RU | \"Поиск\" Поиск \"Поиск\" | Новости | Видеокарты | Процессоры | Материнские платы | Мониторы | Аудио/видео | HDD и CD/DVD | Собери сам | Игры | Софт | Домашний ПК


Клуб экспертов THG.ru   

Вернуться   Клуб экспертов THG.ru > Софт > Прикладное программное обеспечение > Исследования и разработка

Регистрация Правила форума FAQ форума Справка Пользователи Поиск Сообщения за день Все разделы прочитаны

Исследования и разработка Разработка каких-либо программ, электронных устройств и ПО для них

Ответ
 
Опции темы Опции просмотра
Старый 21.05.2008, 11:48   #1
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Концепция параллельного компьютера

ПРИНЦИПЫ И ЭЛЕМЕНТЫ АРХИТЕКТУРЫ ПАРАЛЛЕЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ МАШИНЫ



Разработка принципов и элементов архитектуры направлена на создание мощной многопроцессорной системы с прямолинейной масштабируемостью производительности в зависимости от числа процессоров, а также обладающей высокой отказоустойчивостью к выходу из строя основных компонентов.
Возможность распараллеливания программ основывается в первую очередь на принципе единства пространства памяти рассматриваемого в отношении аппаратных средств вычислений. Распараллеливание с точки зрения программирования базируется на существовании средств распараллеливания в языках программирования и включает в себя в качестве основного принципа - доступность процессора из среды разработки программ. Программист, в зависимости от характера алгоритма, разбивает выполнение на отдельные части и имеет средство распределить их по отдельным независимым в процессе исполнения процедурам.
АРХИТЕКТУРА АППАРАТНОЙ ЧАСТИ

Основное звено архитектуры – физически несколько шин данных расположенных в разных слоях материнской платы и объединенных коммутаторами в виртуальную шину данных, соединяющую процессоры и банки оперативной памяти по типу – “каждый к каждому” для осуществления принципа единства памяти.




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

1.1 РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Для равномерности загрузки виртуальной шины данных предусматривается автоматическое распределение данных по отдельным банкам памяти. Для этого предусматривается дешифрование части адреса данных для К разрядов, отстоящих от начала адреса на величину N. В результате информация записывается в банки данных секторами, следующими последовательно по банкам памяти, т.е. в горизонтальном направлении. Такой принцип хранения памяти наилучшим образом подходит для многопроцессорных систем, использующих общее пространство памяти, и гарантирует наилучшую равномерность загрузки физических каналов распространения данных. Чем больше N, тем большая порция информации участвует в сеансе передачи данных, но при этом ухудшается мобильность и актуальность обмена данными. Имеет определенный смысл выбирать величину сектора, подбирая ее кратности размера кеш процессора.



Рис 2. Распределение данных по банкам памяти в зависимости от значения адреса.


1.2 КОММУТАТОР

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


Рис 3. Схема распространения потоков данных в вертикальной плоскости
На рисунке 3 изображены два ряда двухслойных коммутаторов. Инициатором обмена выступает процессор, передающий в буфер заявки на обмен с памятью. Заявка попадает в ближайший коммутатор на свободный регистр, далее происходит попытка установить связь с банком памяти. Коммутатор дешифрирует n и n+1 разряды адреса данных и определяет возможное направлении коммутации из (в общем случае) трех вариантов – продвижение вперед (предпочтительно) или в сторону (зависит от адреса данных). Если один из регистров в другом корпусе микросхемы коммутатора предполагаемого направления свободен, с ним устанавливается канал и регистр объявляется занятым. Если оба регистра заняты, рассматривается альтернативный путь. Если все из 6-и регистров заняты, попытка установления канала обрывается. В этом случае по уже установленной части канал в буфер посылается сигнал – “канал невозможен”, в ответ буфер по этому каналу посылает сигнал “сброс” занятости регистров и попытка установления связи откладывается. Если канал пробивается к памяти, посылается сигнал – “канал установлен” и по коммутированным в канал открытым вентилям производится передача данных, заканчивающийся сигналом сброс регистров. Система вентилей двойная – на чтение и запись отдельно. На доступность связи решающее значение оказывает многослойность печатной платы – чем она выше (больше регистров в коммутаторе), тем выше вероятность успеха при коммутации. На рис. 2 показаны три успешных канала связи (жирные линии) и один неудавшийся – от 1-го процессора к 1-му банку памяти, т.к. оба регистра на выход к банку заняты. Схема дешифрации адреса зависит от положения коммутатора в схеме. Ее назначение выбрать путь данным точно соединяющий процессор и банк памяти, определяемый разрядами адреса данных n и n+1.

Микросхемы коммутации могут быть универсальными – с программируемой логикой или с жесткой аппаратной логикой. Во втором случае они отличаются по способу определения пути продвижения заявки. На рис 4. ориентировочно изображена объединенная функциональная схема чипов 1 и 2 из рис.3 для 3-х слоевых коммутаторов. Условно разграничение корпусов обозначено жирной пунктирной линией. В зависимости от состояния регистров смежной микросхемы, путем анализа номера банка памяти n и n=1, выбирается направление “прыжка” между корпусами. В данном примере запрещен путь из 2-го ряда корпусов в первый, т.е. движение назад. В более сложной логике может быть предусмотрено и такое движение, что будет способствовать увеличению пропускной способности в горизонтальном направлении.
1.3 ОПТИМИЗАЦИЯ ПРОПУСКНОЙ СПОСОБНОСТИ КОММУТАТОРОВ

Для обеспечения большей пропускной способности коммутаторов, желательно максимально использовать площадь материнской платы под микросхемы коммутации. Для этого используется двухсторонний относительно процессоров монтаж микросхем. Каждая сторона коммутаторов принимает половину потока данных в зависимости от значения старшего разряда номера банка, таким образом снижая вероятность возникновения конфликтов за ресурсы коммутации. Для дальнейшего увеличения пропускной способности применяется несимметричное число регистров в вертикальном и горизонтальном направлении (по рисунку). Фигурные стрелки на рис. 5 означают физические проводники материнской платы для одного горизонта многослойности.


Рис 5. Двухстороннее размещение коммутаторов относительно процессоров
АРХИТЕКТУРА ПРОГРАММНОЙ ЧАСТИ
Основной способ осуществления параллелизма в многопроцессорных системах состоит в доступности процессоров из программной среды. Среда программирования подразумевает равные возможности процессоров с точки зрения использования пространства памяти, непрерывность и абсолютность ее адресации по всему объему.
2.1 СПЕЦИФИКАЦИИ ОПРЕДЕЛЕНИЯ РАСПАРАЛЛЕЛИВАЕМОЙ ПРОЦЕДУРЫ
В среду программирования включается специальная инструкция PROCESS (возможно с модификатором, уточняющими характер исполнения), предписывающая выполнение примыкающего к ней кода в отдельном процессе.



Выполнение инструкции PROCESS означает прерывание содержащей ее программы и постановку кода процедуры в очередь операционной системы для исполнения на физическом процессоре. В обязанности операционной системы входит регулирование и оптимизация обслуживания очередей заявок на исполнение.
Инструкция CPU FREE объявляет операционной системе о доступности процессора для исполнения заявок очереди, соответственно, CPU NO_FREE о снятии с процессора заявок на обслуживание. Модификатор HALF – рекомендует процессору работать с одной из частей кеш данных процессора, в то время как во вторую подкачивать данные из основной памяти. В некоторых процедурах такой подход сокращает время обработки массивов данных.

2.2 РАСПРЕДЕЛЕНИЕ ПАМЯТИ ПОД ПЕРЕМЕННЫЕ ПРОГРАММЫ

При организации заявки на исполнение, если в вызове задан номер процесса t, его текущее на момент прерывания значение заносится и хранится в структуре заявки в поле данных операционной системы. Из самой КПП к этой константе можно обратиться как this->process. В каждом КПП поставленном в итерацию, должна быть организована собственная копия рабочих переменных используемых в КПП на основе временного выделения памяти.



Рис. 6 Распределение памяти для переменных.


2.3 ПРИМЕР ПРОГРАММЫ СОРТИРОВКИ СИМВОЛЬНОГО МАССИВА

int N; /* число строк в массиве */
char **A; /* указатель на массив*/
int T; /*степень распараллеливания */
N=Nmax; T=Tmax;
int ready[T]; /*массив признаков завершения работы процессоров исполнителей*/
Int R[T]; /* массив результатов работы процессоров исполнителей */
int gr[T,2]; /* массив вычисления диапазонов данных для процессов */

for i = 1,N-1
{
int t = MIN(T, MAX(1,(N-i)/T) ) /* Число реальных процессов */
int delta= (N-i)/t ; /*величина сектора поиска каждого процесса*/

/* диапазон сектора для каждого процесса*/
for k=1, t
{ if( k==1) { gr[k,1]=i; gr[k,2]=i+Delta)) else
{gr[k,1]=gr[k-1,2]+1; gr[k,2]= gr[k,1]+ Delta}
if (gr[k,2] > N) gr[k,2]=N
}
for k=1,t
{ PROCESS HALF k{ int *gr1, *gr2,*j,*j1,*result;
gr1 = calloc(1, sizeof(int)); gr2 = calloc(1, sizeof(int));
j = calloc(1, sizeof(int)); j1 = calloc(1, sizeof(int));
result = calloc(1, sizeof(int));
*gr1=gr[k,1]; *gr2=gr[k,2];
*result = gr1;
for *j= *gr1,*gr2
{*j1=0;
while(A[*j,*j1] )
{if ( A[*result,*j1]) <= A[*j,*j1]) *j1++; else
{*result=*j1;break;}
}
}
R[this->process]=*result; Ready[this->process]=1;
delete gr1; delete gr2; delete j; delete j1; delete result;
}
/* ожидание */
M:
PROCESS
{int S=0;
for int km=1,t S+= ready(k);
If S !=t goto M else goto M1
}
PROCESSOR FREE
M1:
PROCESSOR NO_FREE
/* найдем в R минимальное значение Rmin и поменяем местами текущую в итерации строку с найденной минимальной */
}

Baskakov Sergey, serint@bk.ru, srg.baskakov@gmail.com
Russia, Chelyabinsk
08.04.2008
sergey33 вне форума   Ответить с цитированием
Старый 21.05.2008, 13:25   #2
Меню пользователя Maximus69
Старожил
  
Сергей!
А Вы не интересовались эффективностью этой концепции в области нейросетевых технологий? На сколько велик выигрыш от применения параллельного компьютера при обучении/работе нейронной сети?
Maximus69 вне форума   Ответить с цитированием
Старый 23.05.2008, 13:54   #3
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Оптимизация обращений к памяти

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

void * L_kesch;

L_kesch = Load_kesch (); /* инициализация конкретным значением со стороны операционной системы*/

{ PROCESS HALF k{ int *gr1, *gr2,*j,*j1,*result;
gr1 = L_kesch;
gr2 = (int *) L_kesch +1;
j = (int *) L_kesch +2;
j1 = (int *) L_kesch +3;
result =(int *) L_kesch +4;
*gr1=gr[this->process,1]; *gr2=gr[this->process,2];
*result = gr1;
for *j= *gr1,*gr2
{*j1=0;
while(A[*j,*j1] )
{if ( A[*result,*j1]) <= A[*j,*j1]) *j1++; else
{*result=*j1;break;}
}
}
R[this->process]=*result; Ready[this->process]=1;
}
Код становится более быстрым за счет отсутствия “долгих” процедур выделения и уничтожения временной памяти, кроме того, гарантируется обращение к рабочим переменным как обращение к кеш памяти процессора.
Если в процессоре осуществлен встроенный контроллер памяти, с точки зрения распараллеливания было бы очень желательно предусмотреть процессорную инструкцию заполнения кеш с определенного адреса памяти. Инструкция, выполняемая на аппаратном уровне процессора, для программиста дается в виде функции, например:
Int Load_Kesch( void *, void *, int, int).
Первый параметр указывает начальный адрес кеш, второй – начальный адрес основной памяти, далее -количество элементов памяти и число байт в элементе, функция возвращает число загруженных элементов данных. Такой инструмент дает возможность программисту организовывать параллельно обработку данных и загрузку на основе двух областей кеш. Процессор обрабатывает данные в текущей странице, в это время в дополнительную страницу подкачиваются данные из основной памяти. После этого, страницы меняются.
sergey33 вне форума   Ответить с цитированием
Старый 23.05.2008, 16:21   #4
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Цитата:
Первоначальное сообщение от Maximus69

На сколько велик выигрыш от применения параллельного компьютера при обучении/работе нейронной сети?
Если алгоритм поведения нейрона сложный, требующий много вычислительных операций, тогда эффективность будет. Если поведение нейрона простое с точки зрения вычислений, то эффективности не будет – весь информационный процесс будет состоять из обращений к памяти. Естественно, нейронную сеть такой компьютер не подменяет.
sergey33 вне форума   Ответить с цитированием
Старый 26.05.2008, 13:37   #5
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Положительные стороны параллельного компьютера.

Параллелизм дает возможность гибко управлять вычислительным процессом. Собственно весь вычислительный процесс как бы овеществлен в виде совокупности заявок на обслуживание, а следовательно возникает возможность управления вычислительным процессом в зависимости от возникающих условий. Попробую проиллюстрировать на гипотетическом примере компьютерной графики. Пусть параллельный компьютер применяется для графического приложения (игры) с методом, требующим больших вычислительных операций, предположим, трассировки лучей. Построить “в лоб” графику кинематографического качества даже на параллельном компьютере не удастся. Если воспользоваться тем, что для уже прорисованного кадра требуется меньше вычислительных операций, можно динамически менять аппаратные ресурсы компьютера так, чтобы появилась возможность во время демонстрации легких сцен просчитывать заранее тяжелые кадры. Это напоминает смену декораций в театре. Скажем, в уже подготовленной сцене персонаж просто произносит монолог, заново просчитывать всю сцену не имеет смысла, нужно просчитывать только ту часть кадра в которой происходят изменения. При этом на расчет выделяется, скажем, 10% ресурсов машины, а остальные 90% идут на полный расчет кадра следующей сцены. Манипулируя ресурсами компьютера, можно будет создавать игры высокого кинематографического качества.
sergey33 вне форума   Ответить с цитированием
Старый 26.05.2008, 15:42   #6
Меню пользователя Maximus69
Старожил
  
Цитата:
Первоначальное сообщение от sergey33
Если алгоритм поведения нейрона сложный, требующий много вычислительных операций, тогда эффективность будет. Если поведение нейрона простое с точки зрения вычислений, то эффективности не будет – весь информационный процесс будет состоять из обращений к памяти. Естественно, нейронную сеть такой компьютер не подменяет.
В основном модель поведения нейрона не так уж и сложна с вычислительной точки зрения:
[Значение выхода нейрона] = f(сумма по всем i,j {Wij*Xij})

А представленная модель параллельного компьютера (ваш рис.1) ОЧЕНЬ мне напомнила полносвязную нейронную сеть (все нейроны связанны друг с другом). Плюс на рис. 3 показано интересное решение (по-моему) проблемы множества связей в такой топологии нейронной сети.
Maximus69 вне форума   Ответить с цитированием
Старый 10.06.2008, 08:33   #7
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Универсализм и функциональность. Или как совместить несовместимое?

В современных компьютерах этот вопрос решается за счет разделения устройств. Материнская плата и центральный процессор отвечают за универсальность – всеобщность вычислительного процесса, дискретная видеокарта играет роль функционального устройства. Это накладывает архитектурные особенности для каждого типа устройств. Процессор в борьбе с латентностью памяти обзаводиться солидным кешем, видеокарты наращивают число потоковых процессоров. В то же время центральный процессор имеет тенденцию к повышению числа ядер. Возникает некоторая дилемма – либо много кеш памяти и соответственно небольшое число ядер – высокий универсализм, либо много ядер при относительно небольшой кеш-памяти – высокая функциональность. Представляется, что перспективной в многопроцессорных системах окажется тенденция к функциональности. Сложность общего вычислительного процесса – прерывания, обращения к разным участкам памяти, выполнение служебных программ разбрасывается по нескольким процессорам и не создает необходимости оптимизировать центральный процессор под универсальный характер выполняемых функций. Отсюда возникает возможность увеличения числа ядер и как следствие еще большее повышение вычислительной мощности всего комплекса. Многопроцессорность в данном случае выполняет роль катализатора повышения общей производительности системы.
sergey33 вне форума   Ответить с цитированием
Старый 02.07.2008, 12:47   #8
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Концепт внешнего накопителя для персонального компьютера.

Гарнитура (самое общее представление) современного персонального компьютера предполагает не только параллельную обработку данных и выполнение программ, но и высокоскоростные каналы связи плюс параллельное хранение данных, а также невысокую стоимость системы в целом. Можно по-разному подходить к вопросу внешнего накопителя , учитывая физические свойства накопителей, ценовой аспект, скорость обращения к данным . Не претендуя на всеобщность рассмотрения вопроса, попробуем определить простой и дешевый внешний накопитель построенный на основе доступных по цене жестких дисков. Основная идея будет заключаться в соединении параллельной записи информации с максимальным использованием внутренней оперативной памяти накопителя. При этом достигается не только существенный объем хранимых данных, но что очень важно пропорционально числу единиц хранения возрастает скорость обращения к накопителю. Процесс записи выглядит следующим образом: исходный файл из оперативной памяти компьютера передается в оперативную память накопителя по оптоволоконной линии связи, где с помощью контроллера разбивается на сектора, далее сектора информации по общей шине поступают во внешний буфер-контроллер каждого накопителя, а оттуда уже попадают на винчестер. Процесс чтения отличается предварительной сборкой секторов в памяти накопителя перед пересылкой в память компьютера. Не требуется синхронизация обращения строго идентично по секторам накопителей. Каждый винчестер пишет (соответственно, читает) как способен, что дает возможность собирать накопитель из обычных дисковых устройств. Недостатки накопителя: отсутствие отказоустойчивости, возможная асинхронность скорости записи и чтения решаются за счет значительной по емкости оперативной памяти контроллера. Так процесс записи представляет собой транзакцию состояния накопителя. Если контрольное чтение обнаруживает ошибку, происходит откат состояния накопителя. Большая память позволяет организовывать взаимодействие с компьютером на уровне обмена между оперативной памятью обоих устройств, с отложенным временем физической записи на диски. Учитывая, что стоимость отдельных комплектующих невысокая, можно ожидать достаточно дешевое и функциональное устройство в секторе персональных компьютеров.

sergey33 вне форума   Ответить с цитированием
Старый 18.05.2009, 14:06   #9
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
ПРОСТРАНСТВЕННАЯ ОРИЕНТАЦИЯ ТЕХНИЧЕСКИХ СИСТЕМ

Прогресс в области разработки графических чипов, имеется в виду прежде всего технология Larrabee, подводит вплотную к решению задачи правильной ориентации робототехнических систем в реальном пространственно-временном континууме. Основной задачей, без которой невозможен этот процесс, является сопоставление графических образов реальной действительности с понятийным представлением об объектах. Или иными словами перевод графического (зрительного) содержания на язык понятий. Это, пожалуй, самая трудная задача. Опираясь на мощь современных чипов типа Larrabee можно предложить следующее решение. Чтобы определить графический образ нужно его сравнить с графическим образом понятия. Сравнение производиться по нескольким параметрам, среди которых основной – точность совпадения визуализации объекта, полученная обычным фотографическим путем, с визуализацией понятия, полученной путем 3D – моделирования как это делается в обычных игровых приложениях. В первую очередь определяется источник освещения реальной картины, разбиение ее на объекты, идентификация и отбрасывание из поиска теней, поиск наиболее предполагаемых понятий. Далее генерируется образ понятия в соответствии с условиями освещения. Производится попиксельное сравнение обоих образов. В случае удовлетворительности сравнения, считается, что объект опознан. В противном случае генерируется 3D –образ другого понятия. И так до тех пор, пока графический образ пространственного континуума не будет представлен эквивалентом понятийного содержания. Далее по карте распознанных образов программно выполняются действия необходимые для перемещения механического устройства.

Картинка: http://sites.google.com/site/algonauts/
sergey33 вне форума   Ответить с цитированием
Старый 19.04.2011, 13:00   #10
Меню пользователя sergey33
Старожил
 
Аватар для sergey33
  
Просьба помочь в оформлении изобретения

Описанный в статье “Концепция параллельного компьютера” в пункте 1.1, Распределение памяти, способ организации хранения и выборки информации, по сути, является изобретением. Развитием многоядерных процессоров на практике приводит к его фактическому использованию. Подобное изобретение выражается в концепции процессора с нескольким контроллерами памяти. Судя по прессе, такие процессоры разрабатываются в Китае, а также компанией Intel. В связи со всем сказанным, предлагаю заинтересованным организациям помочь мне в оформлении заявки на изобретение, с дальнейшей передачей всех прав на нее этой организации, т.е оформление отчуждения от прав в пользу спонсора.

Электронный адрес для контактов:
srg.baskakov@gmail.com
Баскаков Сергей, /19.04.2011/
sergey33 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Справочник словарей
Словари русского языка - www.gramota.ru Яndex - Словари Википедия - ru.wikipedia.org

Часовой пояс GMT +4, время: 15:19.


Powered by: vBulletin, ©2000 - 2007, Jelsoft Enterprises Limited.
Перевод: zCarot
Распространение информации возможно только с письменного разрешения администрации издания.

THG.ru ("Русский Tom's Hardware Guide") входит в международную сеть TG Publishing

РЕКЛАМА

Rambler's Top100 Рейтинг@Mail.ru