реклама на сайте
подробности

 
 
7 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> что-то новое ?, мультиклеточные процессоры
MrYuran
сообщение Apr 17 2012, 04:27
Сообщение #46


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Leka @ Apr 17 2012, 00:02) *
Лично я понял только (если правильно понял), что в "мультиклеточном" процессоре "a+b" потребует 2 такта (как минимум, тк непонятно про накладные расходы) и 192 бита в программной памяти (3 слова * 64 бита). wacko.gif

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 17 2012, 06:40
Сообщение #47


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Сравним обычную, и "мультиклеточную" (как понял) реализацию выполнения a=b+c; все данные - в регистрах.

Обычная 3х-операндная архитектура:
одна команда, один такт, порядковый номер команды задается неявно - через адрес команды в памяти команд, в команде(32 разряда) указывается только код операции и номера трех регистров-операндов:
номер==адрес: (add a,b,c)

"Мультиклеточная" архитектура:
a=b+c при компиляции разбивается на 4 микрокоманды(64 разряда каждая), 3 такта:
read b; read c; add; write a;
микрокоманды кодируется с явным указанием своих порядковых номеров (физический адрес команды уже не несет никакой информации) и номеров команд-источников:
адрес0: (номер3, write a )
адрес1: (номер0, read b )
адрес2: (номер2, add номер0 номер1)
адрес3: (номер1, read c)

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

В итоге "мультиклеточная" архитектура многократно проигрывает обычной, по тактам, объему кода, площади кристалла. Если я неправильно понял "мультиклеточную" архитектуру - объясните мне понятно. (По поводу клока - он есть, см "даташит").

Сообщение отредактировал Leka - Apr 17 2012, 06:41
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 17 2012, 07:58
Сообщение #48


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Leka @ Apr 17 2012, 10:40) *
Сравним обычную, и "мультиклеточную" (как понял) реализацию выполнения a=b+c; все данные - в регистрах.

Обычная 3х-операндная архитектура:
одна команда, один такт, порядковый номер команды задается неявно - через адрес команды в памяти команд, в команде(32 разряда) указывается только код операции и номера трех регистров-операндов:
номер==адрес: (add a,b,c)

"Мультиклеточная" архитектура:
a=b+c при компиляции разбивается на 4 микрокоманды(64 разряда каждая), 3 такта:
read b; read c; add; write a;

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Victor®
сообщение Apr 17 2012, 09:29
Сообщение #49


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Leka @ Apr 16 2012, 23:02) *
причём с производством готов помочь российский процессорный гигант Ситроникс.


буга-га-га-га
гигант...
Ситроникс - дровосеки и ничем кроме распила реально не занимаются.
Это мне так кажется - я на них работал.


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 17 2012, 11:49
Сообщение #50


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(MrYuran @ Apr 17 2012, 11:58) *
А в "обычной" архитектуре однотактовая (якобы) команда на подтакты не разбивается? Все то же самое, только неявно, внутри логики ядра.

Выборка команды из памяти и проч. - конвейеризируется, а собственно исполнение арифметической команды обычно занимает 1 такт - видно по структуре конвейера (стадия execute):
http://ru.wikipedia.org/wiki/%D0%92%D1%8B%...%B9%D0%B5%D1%80
Другие(дополнительные) стадии конвейера и для "мультиклеточной" архитектуры будут.
Go to the top of the page
 
+Quote Post
Soflover
сообщение Apr 17 2012, 16:41
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 16-03-05
Пользователь №: 3 397



Сегодня был на выставке Новая Электроника. Видел их стенд. Никаких образцов не представлено. Ни на ПЛИС, ни в живую. Сидят два чувака под малосодержательными плакатами и рассказывают про то, какая это офигительная идея распараллеливать процессы на аппаратном уровне. Подробнее интересоваться не стал.
Go to the top of the page
 
+Quote Post
Wic
сообщение Apr 18 2012, 05:44
Сообщение #52


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954



О любых революционных изделиях можно говорить долго. Если они так уже крутые, пусть начинают раздавать самплы, среды для их программирования, а там уже умельцы потестят и отпишутся на форумах, в блогах и т.д. И вот по отзывам от пользователей можно будет реально судить или это действительно что то ценное, или очередная тупиковая ветка эволюции.
Go to the top of the page
 
+Quote Post
Мур
сообщение Apr 18 2012, 05:47
Сообщение #53


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



И где обещанное?...
http://www.new-electronics.info/programm
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 18 2012, 06:14
Сообщение #54


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Leka @ Apr 17 2012, 15:40) *
.......
микрокоманды и операнды ассоциативно извлекаются по явно указанным в полях номерам, и исполняются.

В итоге "мультиклеточная" архитектура многократно проигрывает обычной, по тактам, объему кода, площади кристалла. Если я неправильно понял "мультиклеточную" архитектуру - объясните мне понятно. (По поводу клока - он есть, см "даташит").

1) по тактам я не понял почему
2) по обьёму кода, да но не многократно, я бы сказал 20-30%
3) площадь кристала, х.з. как сравнить. и я бы сравнивал 4 клеточный с 4-х ядрённым мипсом,
предлагаю разобраться как следует.
-----------------------
target: z=SUM[(ai+bi)*ci-(ai-bi)*di]
тоесть на С так
for(int z=0,i=0;i<10;i++)
z=z+(a[i]+b[i])*c[i] - (a[i]-b[i])*d[i])

triads:
1)sum_ab=a+b
2)sub_ab=a-b
3)mult_abc=1*c
4)mult_abd=2*d
5)sub34=3-4
6)target=target+sub34

Код
(tag_2, <=0) i
(tag_1, <=0) target

(tag0, read [a+tag_2])
(tag1, read [b+tag_2])
(tag2, read [c+tag_2])
(tag3, read [d+tag_2])
-- вероятно эти таг0-3 можно было бы заменить на некую команду (tags0,1,2,3 read [a+tag_2<<2]). х.з.

(tag4, tag0+tag1)
(tag5, tag0-tag1)
(tag6, tag2*tag4)
(tag7, tag3*tag5)

(tag8, tag6-tag7)
(tag_1, tag_1 + tag8)
(tag10, store tag_1 to target adr)
(tag_2, tag_2 +1)-

(tag_2, tag_2 EQU 10)
(tag11,jmpNZ tag_2, adr to tag0)

пояснения + упрощения
1)адреса команд не указаны, есть привязка к tag-у, тоесть это ассоциация как команды так и результата после выполнeния команды(для простоты tag это регистр wink.gif ).
2)показаны только 1 стадия конвейра exec
3)все стадии конвейра - 1 такт
4)все данные в cache (cache hit rate=1)

в данном и невероятно простом примере видно что ускорение выполнения может быть не более чем в 4 раза и выводы:
1) стадия fetch должна быть сделана следующим образом(чтобы было "4х" ускорение):
- либо широкий порт инструкций в "4 раза шире"
- либо в "4 раза быстрее"
2)если каждая клетка это очень примитивный (одно лишь АЛУ) cpu, то автомат "дирижирующий" этим ансамблем видиться очень не простым.
3) и действительно в случае отказа 1 клетки, катастрофы не случится, пока есть хотя бы 1 работающая.
4) для случая 16 клеток ускорение расти не будет, будет тем же что и для 4-х клеток (для данного примера)
5) из п4 следует что для 16 клеток, возможно(?) выполение в параллель ещё какого то кода(справится ли fetch?)
6) тоесть данный алгоритм _не заточен_ для выполнения на 16 клетках, и следовательно нельзя говорить о "естественном" параллелизме

вообщем этот мультиклет что-то вроде systolic array cpu
http://web.cecs.pdx.edu/~mperkows/temp/May...-Processors.pdf

з.ы. 4х - это конечно же фейк(л) ещё тот, попробуйте временную диаграмму нарисовать, так там и будет видно что закон амдала обойти не получится wink.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Poluektovich
сообщение Apr 18 2012, 07:54
Сообщение #55


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 15-09-08
Из: Зеленоград
Пользователь №: 40 201



Цитата(Мур @ Apr 18 2012, 09:47) *
И где обещанное?...
http://www.new-electronics.info/programm

Семинаров они не устраивают. Там есть стенд с представителями и распечатанными даташитами.
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Apr 18 2012, 10:30
Сообщение #56


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



Цитата(DSIoffe @ Apr 11 2012, 17:20) *
А что, москвичи, кому не влом - загляните, пожалуйста, узнайте: есть ли оно живьём, а не на FPGA? И здесь расскажите.

Рассказываю:
Живьем - нет. Говорят, что будут в июне месяце. Новой информации (более той, что есть на сайте) - нет. К сожалению я так и не дождался появления технического специалиста, чтобы попытать его на предмет особенностей архитектуры. На вопрос - где взять документацию, достаточную для написания компилятора - получил ответ, что в открытом доступе пока нет и не ясно, когда будет и будет-ли вообще. Говорят про войну и космос - но радиационно стойких пока нет и, как я понял, работа в этом направлении еще не начата.... Усиленно пытаюсь найти аргументы за - пока не нахожу sad.gif

З.Ы. Пригласил их на наш форум, думаю, многое станет ясно, когда появится представитель. Или не появится...

З.З.Ы. Меня терзают смутные сомнения (с)
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 18 2012, 14:18
Сообщение #57


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Postoroniy_V @ Apr 18 2012, 10:14) *
предлагаю разобраться как следует


Цитата
1) по тактам я не понял почему

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

Цитата
2) по обьёму кода, да но не многократно, я бы сказал 20-30%

Непонятна разрядность микрокоманды, если 64 разряда, то уже в 2 раза больше (как минимум)

Цитата
3) площадь кристала, х.з. как сравнить. и я бы сравнивал 4 клеточный с 4-х ядрённым мипсом

Идеология Multiclet: компилируем код на ЯВУ в очень мелкие инструкции, аппаратно параллелим их, и получаем "превосходство" в MIPS и MIPS/W. Пример: "a=b+c;" компилируем в "rd b; rd c; add; wr a;", параллельно выполняем их на 100МГц, и получаем дутые 400MIPS. Так что сравнивать надо с обычным 1-ядерным процем (или с DSP, в зависимости от архитектурных примочек вроде индексных регистров и проч.) Ассоциативная адресация, буфера, и проч - отнимает площадь, ничего не давая взамен.

Цитата
(tag_2, <=0) i

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

Цитата
(tag0, read [a+tag_2])

если использовать специальные индексные регистры для косвенной адресации, тогда и сравнивать будем с DSP-процессором. А если сравнивать с универсальным( ai=a+i; ai=*ai ), то индексное чтение надо делить на несколько микрокоманд:
(tag00, read a)
(tag01, tag00+tag_2)
(tag02, read [tag01]) (?)

Ввод специальных DSP-примочек в "мультиклеточную" архитектуру уже настораживает - зачем это, если можно просто нарастить число клеток, сохранив чистоту концепции?

Цитата
и действительно в случае отказа 1 клетки, катастрофы не случится, пока есть хотя бы 1 работающая

У каждой клетки своя независимая память команд, в случае отказа весь этот код пропадает --> катастрофа.

Цитата
вообщем этот мультиклет что-то вроде systolic array cpu

Имхо, совсем не похоже, тк systolic... - просто явно описываемый и программируемый длинный конвейер.

Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 19 2012, 01:32
Сообщение #58


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Leka @ Apr 18 2012, 23:18) *
Если правильно понял, у мультиклета даже регистровые переменные надо загружать отдельными инструкциями, отсюда заметный проигрыш на коротких цепочках вычислений. А на длинных - пусть паритет, тогда в среднем - проигрыш.


Непонятна разрядность микрокоманды, если 64 разряда, то уже в 2 раза больше (как минимум)


Идеология Multiclet: компилируем код на ЯВУ в очень мелкие инструкции, аппаратно параллелим их, и получаем "превосходство" в MIPS и MIPS/W. Пример: "a=b+c;" компилируем в "rd b; rd c; add; wr a;", параллельно выполняем их на 100МГц, и получаем дутые 400MIPS. Так что сравнивать надо с обычным 1-ядерным процем (или с DSP, в зависимости от архитектурных примочек вроде индексных регистров и проч.) Ассоциативная адресация, буфера, и проч - отнимает площадь, ничего не давая взамен.


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


если использовать специальные индексные регистры для косвенной адресации, тогда и сравнивать будем с DSP-процессором. А если сравнивать с универсальным( ai=a+i; ai=*ai ), то индексное чтение надо делить на несколько микрокоманд:
(tag00, read a)
(tag01, tag00+tag_2)
(tag02, read [tag01]) (?)

Ввод специальных DSP-примочек в "мультиклеточную" архитектуру уже настораживает - зачем это, если можно просто нарастить число клеток, сохранив чистоту концепции?


У каждой клетки своя независимая память команд, в случае отказа весь этот код пропадает --> катастрофа.


Имхо, совсем не похоже, тк systolic... - просто явно описываемый и программируемый длинный конвейер.

1)время выполнения будет тем же на коротких инструкциях(если конечно условия исполнения "клеточного" те что описал выше). так что это просто мысли о вариациях, а не выводы после ознакомления с "документацией"
2)у z80 есть индексная адресация, вывод - он DSP! biggrin.gif и можно с з80 сравнивать.
3)"У каждой клетки своя независимая память команд" это как это? ведь там речь про "естественный" параллелизм, тоесть я понял это так - память инструкций общая и каждая клетка выгребает оттуда инструкцию и выполняет её. если одна клетка вышла из строя, то нет никакой проблемы, нужно перезапустить ту операцию на которой она сдохла. тут про накладные расходы и тот модуль, который это контроллирует непонятки. тем более что в "документации" говорится о децентрализованном управлении
4)в systolic есть связи сосед-сосед, в клеточном - клетки соединены неявно через коммутационнцю среду каждая-скаждой.

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

з.ы. надо попробовать "клеточный" заиплементировать на досуге smile3046.gif



--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Apr 19 2012, 04:38
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



А меня вот еще интересует вопрос - а как может обстоять дело с условными переходами в такой архитектуре ?
Имхо - это может быть весьма слабым местом.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 19 2012, 05:05
Сообщение #60


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Uuftc @ Apr 19 2012, 08:38) *
А меня вот еще интересует вопрос - а как может обстоять дело с условными переходами в такой архитектуре ?
Имхо - это может быть весьма слабым местом.

А в чем проблема? Начать обрабатывать параллельно обе ветви, а потом ненужную отбросить.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

7 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01949 секунд с 7
ELECTRONIX ©2004-2016