Мультіклеточний процесор - це що?

    Багато хто чув про мультіклеточной архітектурі, процесорах і навіть перших пристроях на них. Особливо просунуті користувачі випробували свої алгоритми. Були проведені перші прості тести продуктивності, а також користувач Barsmonster , витравив кристал процесора Р1. Зараз вже проходить перші перевірки процесор R1 і скоро буде доступний всім. Але відповідь на питання про те, як працює мультіклеточная архітектура і в чому її відмінність, знають не всі. Спробуємо зараз ввести в курс справи.
 
  1.Мультіклеточность
 Мультіклеточное ядро ​​ — це група ідентичних процесорних блоків (2 і більше), об'єднаних полносвязной односпрямованої комутаційної середовищем. Особливості взаємодії процесорних блоків між собою випливають з уявлення алгоритму (про це нижче). Процесорний блок в мультіклеточной архітектурі називається клітиною. Набір команд, який вона може виконувати визначається конкретною реалізацією і не залежить від архітектури.
 
 Алгоритми «очима» мультіклеточного ядра
По-перше.

 Будь-яку формулу можна представити у вигляді ярусно-паралельної форми (ЯПФ). Розглянемо
простий приклад: g = e * (a + b) + (ac) * f, в ЯПФ це може виглядати так:
 
Рис 1. Приклад ЯПФ
 
У загальному випадку, для виконання операцій вузли, розташовані на i-му ярусі, можуть використовувати результати, отримані на ярусах від 1 до (i-1)-го. З цього випливає, що команди, що знаходяться на одному ярусі, незалежні.
Будь алгоритм — це безліч формул, яке поділене на підмножини — лінійні ділянки, пов'язані між собою операторами передачі управління. Під лінійним ділянкою (ЛУ) розуміється таке підмножина формул, яке обчислюється тоді і тільки тоді, коли управління передано на даний лінійний ділянку. Усередині лінійної ділянки, інформаційно незв'язані формули можуть виконуватися в будь-якому порядку.
 
Як відомо, результат виконання процесором будь-якої команди виражається в зміні стану процесора. Використання цього нового стану подальшими командами, утворює інформаційну зв'язок між командою-джерелом результату і командами-приймачами цього результату. Такий зв'язок може бути як опосередкованої (непрямої), так і безпосередньої (прямий).
При непрямої зв'язку результат доступний тільки після його відчуження: записи в загальнодоступні регістри або пам'ять або ін пристрою. Команда-джерело повинна помістити результат в ці пристрої, а команда-приймач повинна буде взяти дані звідти. Ім'я пристрою вказується як операнд. Такий зв'язок між командами є основою абсолютно всіх сучасних процесорів, крім мультіклеточних.
 
У випадку прямої інформаційного зв'язку, команди іменуються і при цьому імена повинні ідентифікувати власне команду, а не її місце розташування або інші особливості реалізації. Доступ до результатів може здійснюватися за іменами як команд-джерел, так команд-приймачів. У першому випадку використовується широкомовлення з подальшим поіменним відбором, при якій в поле операнда команди-приймача задають ім'я команди-джерела. У другому — виконується поіменна розсилка, при якій в команді-джерелі задають ім'я команди-приймача результату.
 
Теоретично вузли ЯПФ ми можемо поіменувати будь-яким чином. Єдина вимога — однозначність. Для цього в мультіклеточном процесорі команди, при вибірці з пам'яті, отримують тег (мітку) — таким чином їм і їх результатами дається локальне ім'я — і далі взаємодія між командами організовується через теги. Дані можна отримувати з будь-якої команди з тегом менше свого. Номер тега необхідного результату задається різницею значень тега команди і тега необхідного результату. Наприклад, якщо в операнді вказано @ 5, а тег команди дорівнює 7, то як операнд використовується результат команди з тегом 2. Всі результати виконання команд надходять в комутаційну середу, з якої за тегом відбираються необхідні. Таким чином в мультіклеточном процесорі використовується широкомовлення результатів з подальшим їх поіменним відбором.
 Варто відзначити, що через фізичних обмежень є поняття «вікна видимості», яке визначає максимальну відстань команди-джерела від команди приймача. Тег в процесі вибірки команд змінюється циклічно. Його максимальна величина визначається розміром буфера команд. Фактично розмір тега визначає кількість команд, які одночасно можуть перебувати на різних стадіях виконання. Значення тега не може бути використано, якщо команда, якій він раніше був привласнений, ще не виконана.
 
 друге.
Мультіклеточний процесор оперує структурами, які ми називаємо — параграфами.
 Параграф — це інформаційно замкнута послідовність команд. Параграф є аналогом команди, після виконання якої, змінюється стан процесора і / або систем в його складі (регістрів, шин, комірок пам'яті, каналів введення / виводу і т.д.). Тобто для мультіклеточного ядра параграф — це команда.
 Основна особливість мультіклеточной архітектури в тому, що вона безпосередньо реалізує ЯПФ представлення алгоритму. З такого розуміння алгоритму випливають багато властивості мультіклеточной архітектури.
 
 2.Свойства мультіклеточной архітектури
 
     
незалежність від кол-ва клітин;
 динамічний розподіл обчислювальних ресурсів;
 всі команди, готові до виконання, виконуються одночасно;
 зниження енергоспоживання. Працює тоді, коли є робота;
 масштабованість, немає обмежень на кількість клітин.
 
 
Розглянемо докладніше як виглядатиме параграф для алгоритму, описаного в п.2.
 
 
Для мультіклеточно ядра характерна наступна схема побудови параграфа (не є обов'язковою, у наведеному прикладі так само є відступу):
 
     
отримання даних для роботи (команди з тегом 0-2,4,6 в прикладі);
 процес обробки даних (команди з тегом 3,5,7-9 в прикладі);
 збереження результатів (команда з тегом 10 у прикладі).
 
Слід нагадати, що зміна стану машини в мультіклеточном процесорі відбувається по кінцю параграфа.
 
 Алгоритм не залежить від кол-ва клітин.
Інформаційні зв'язки між командами вказані явно і немає необхідності знати про кількість процесорних блоків, коли пишеться програма. Команди просто чекають готовності своїх операндів і після цього йдуть на виконання і їм не важливо хто і коли їм підготує операнди. Уявіть лійку — ви не замислюєтеся скільки отворів у її насадці, коли поливаєте. Клітини ідентичні і немає різниці в якій клітині буде виконуватися та чи інша команда.
Команди розподіляються по клітках у порядку їх слідування, 1 команда в 0 клітку, 2 команда в 1 клітку і т. д., коли передали команду в останню наявну клітку — починаємо розподіляти заново з 0 клітини. Розглянемо роботу 4-х клітинного ядра. Параграф, наведений вище, буде виконуватися наступним чином:
 
Рис 2. Розподіл команд по клітках
 Кількість одночасно виконуваних команд залежить від кол-ва клітин. Вибір оптимального числа клітин для кожного завдання — це завдання, яке вимагає аналізу. Створити універсальну систему все одно не вийде, тому можна орієнтуватися на наступні дані: на загальних завданнях непогано справляються 4 клітини, а з завданнями обробки сигналів — 16 клітин, а для обробки відеозображення їх число може бути порядку сотень.
Можете провести аналіз свого коду і уявити яким було б оптимальне число клітин для них. Для того потрібно представити ваш алгоритм в ЯПФ і підрахувати кількість команд в ярусах. Середнє число команд в них буде натякати на оптимальну кількість клітин у вашому конкретному випадку.

 
 Всі команди, готові до виконання, виконуються одночасно.
 Як згадувалося вище, мультіклеточное ядро ​​реалізує ЯПФ уявлення алгоритму, на ярусах розташовуються незалежні команди. Все, що в даний момент може бути виконано — буде виконано без будь-яких спеціальних вказівок з боку програміста, основна умова — команда повинна отримати всі дані для виконання.
Варто враховувати технологічні обмеження: кількість клітин обмежена, тому виконуватися одночасно буде стільки команд, скільки клітин в ядрі.
 
 «Сход-розвал» або динамічний розподіл обчислювальних ресурсів
Т.к. код не залежить від кількості клітин, яким він буде виконуватися, з'являється здатність мультіклеточного ядра до розподілу своїх обчислювальних ресурсів під час роботи, при цьому управління відбувається програмно.
Здатність мультіклеточной архітектури перерозподіляти свої ресурси ми називаємо — реконфигурацией . Наприклад, клітини мультіклеточного ядра можуть бути, як завгодно розподілені для виконання будь-якого алгоритму або його частини. Група (краще назви поки не придумали) — це частина клітин мультіклеточного ядра, які пов'язані між собою для виконання будь-якого алгоритму або частини алгоритму. У групі може перебувати 1 і більше клітин. Коли мультіклеточное ядро ​​розділяє групу на частини — це називається декомпозиція . Процес об'єднання в групу — композиція . На рис 3 нижче показано як 4-х клітинне ядро ​​з часом реконфигурируется (приклад). Клітини, що виконують одну задачу, мають одне колірне заповнення.
 
Рис 3. Приклад реконфігурації клітин
 
 Зниження енергоспоживання. Працює тоді, коли є робота.
Принциповою основою мультіклеточной архітектури є широкомовлення. На сьогоднішній день — це поки єдина архітектура, що використовує безпосередню інформаційну зв'язок для передачі даних між командами в програмі.
Якщо звернути увагу на рис 1, на якому показаний приклад виконання коду 4-х клітинним процесором, то видно, що клітини виконують команди розташовані на ярусах тоді, коли вони готові бути виконані. Результат поміщається в комутаційну середу і чекає свого споживача.
Мультіклеточное ядро ​​не здійснює зайвих дій, працює тоді, коли є робота. Якщо яка-небудь із складових процесора не готова виконати команду, то робота з нею припиняється до звільнення.
 
 Масштабованість, немає обмежень на кількість клітин.
Архітектура не обмежує кількість клітин. Справа стоїть за технологіями.
Є кілька варіантів організації великого числа клітин, але це тема для окремої статті, яку підготуємо пізніше.
 
 3.Реалізація
 Мультіклеточний процесор «во-плоті»
Мультіклеточний процесор складається з N ідентичних клітин з номерами від 0 до n-1, об'єднаних комутаційної середовищем. Кожна клітина містить блок пам'яті програм (PM), пристрій управління (CU), буферні пристрої (BUF), а також кожній клітині відповідає комутаційний пристрій (SU), сукупність яких утворює коммутационную середу (SB). Процесор також містить пам'ять даних (DM), блок регістрів загального призначення (GPR) і виконавчо пристрій (EU), що складається з арифметико-логічного пристрою для чисел з плаваючою комою (ALU_FLOAT), АЛУ для цілих чисел (ALU_INTEGER) і блок доступу до пам'яті даних (DMS).
Програма для мультіклеточного асемблера складається з параграфів. Наприклад:
 
Paragraph:
	;Различные команды
	jmp paragraph_next ; переход на следующий параграф
complete

 
Насправді команда переходу на наступний параграф може стояти в будь-якому місці поточного параграфа, але поки ми не загострюємо на цьому увагу. У даному прикладі параграф — це всі команди від мітки "Paragragh" до мітки кінця ділянки команд — "complete".
У параграфі команди можуть розташовуватися в довільному порядку, команди можуть посилатися на результат попередніх команд за допомогою оператора «@», але слід враховувати, що не можна послатися на результат команди, яка вище поточної на 64 команди. Тобто вікно видимості результату для кожної команди одно 64, при цьому розмір параграфа не обмежений, тобто він може складатися хоч з декількох тисяч команд. Розглянемо приклад:
 
Paragraph:
	getl 2		  ;загрузка числа в коммутатор
	getl 3 		  ;загрузка числа в коммутатор
	addl @1, @2	  ;сложение 2 + 3
	addl @1, @3	  ;сложение 5 +2
	jmp paragraph2
complete

 
У розглянутому прикладі команда addl @ 1, @ 2 виконує додавання двох попередніх команд, а команда addl @ 1, @ 3 виконує додавання результату попередньої команди і результат команди, яка на 3 рядки вище.
Стан процесора змінюється при переходах від одного параграфа до іншого. Записи в пам'ять, регістри відбуваються по кінцю параграфа у разі, якщо контроль читання записи включений або не використовуються команди прямого читання і запису. Але є можливість відключення контролю читання і запису, тобто запис в пам'ять проходитиме в самому параграфі, не чекаючи його завершення (у випадках, коли є можливість відключити контроль читання і запису, при роботі з пам'яттю може принести відчутне збільшення продуктивності). Насправді вичавити максимум з мультіклеточного процесора нескладно, але це тема для окремої статті.
 
Для виконання контекстно-залежної програми, команди кожного параграфа послідовно, починаючи з одного і того ж адреси, що є адресою даного параграфа, розміщують в PM клітин. Адреса розміщення першого виконуваного параграфа дорівнює адресою, починаючи з якого клітини вибирають команди. В результаті, в PM i-ой клітини, починаючи з адреси параграфа, послідовно розміщуються його команди з номерами i, N + i, 2 * N + i, ...,.
Кожна клітина забезпечує, починаючи з зазначеного йому адреси, послідовну вибірку команд і розміщення їх на регістрі команд для подальшого декодування. Команди клітинами вибираються синхронно.
 При декодуванні кожної чергової обраній групі з N команд присвоюють чергове значення тега (t), а команді з групи і, відповідно, її результату — номер. Вибірка і декодування команд продовжується до тих пір, поки не буде обрана команда, зазначена керуючим ознакою «кінець параграфа» (Complete). Адреса нового параграфа може вчинити як в будь-який момент вибірки команд поточного параграфа, так і після завершення вибірки команд. Він надходить всім клітинам одночасно. Якщо до моменту вибірки останньої команди параграфа адресу наступного параграфа не обчислений, то вибірка
зупиняється до одержання адреси. Якщо адреса отримана, то вибірка триває з цієї адреси. Обрана команда надходить на буферну пристрій, який складається з буфера першого операнда, буфера другого операнда і буфера команд (коди операцій, теги і т.п.) Буферні пристрої формують команди і передають їх відповідному виконавчому пристрою.
 Операційна частина (буфер команд), крім коду команди, включає в себе всю необхідну службову інформацію для розсилки та прийому результатів, а саме, номер команди та ознаки готовності першого (другого) операнда для виконання команди.
 Буфер зберігання операндів має асоціативний адресацію. Асоціативним
адресою є тег запитуваної результату. Як операнди при виконанні операцій можуть використовуватися:
 
     
запитані результати команд-джерел, що надходять з комутатора;
 значення, обчислені при декодуванні командного слова, а також безпосередньо присутні в командному слові або взяті з регістрів загального призначення.
 
У першому випадку ознака готовності даного операнда при записі команди встановлюють у стан «не готовий», а в другому — в стан «готовий». Після отримання запитаного результату від комутаційного пристрою, ознака, в першому випадку, також встановлюють в стан «готовий». Команда, яка отримала всі операнди, проходить пріоритетний відбір серед інших готових команд в буферному пристрої, після чого видається на виконання за умови незайнятості виконавчого пристрою.
  
У процесорі P1 для кожної клітини був виділений свою ділянку пам'яті, тобто пам'ять програм і пам'ять даних не перетиналися. У процесорі R1 пам'ять програм і пам'ять даних знаходяться в одному адресному просторі, тобто у клітин є канали доступу до пам'яті програм і пам'яті даних. На рис 4 наведена загальна структура процесора P1. На рис 5 приведена структура клітини і її опис для процесора R1.
 
Рис 4. Загальна структура мультіклеточного процесора
 
Арифметико-логічні пристрої (АЛП), поряд з блоком DMS, входять до складу набору виконавчих пристроїв наявного в кожній клітині (CELL).
 
До складу клітини входять наступні пристрої:
1. Пристрій вибірки команд IDU (Instruction Distribution Unit).
2. Пристрій керування.
3. Комутаційний пристрій SU (Switch Unit).
4. Буферне пристрій.
5. Цілочисельне АЛП.
6. АЛУ з плаваючою крапкою.
7. Блок доступу до пам'яті даних DMS (Data Memory Service).
8. Мультиплексор результатів.
9. Набір регістрів GPR (General-Purpose Registers).
10. Контролер переривань IC (Interrupt Controller).
11. Відладочний блок JTAG-GPR.
 
Детальна структура клітини представлена ​​на малюнку 5.
 
Рис 5. Структура клітини.
 
Результат виконання команд виконавчі пристрої передають в комутаційний пристрій.
 Якщо одночасно готові результати виконання команд цілочисельного АЛП, АЛУ з плаваючою точкою і DMS, комутаційний пристрій приймає результат виконання команди АЛУ з плаваючою крапкою. За пріоритетом читання результату виконавчі пристрої розподіляються наступним чином:

1.АЛУ з плаваючою точкою;
2.DMS;
3.Целочісленное АЛП.

Виконавчі пристрої, результат роботи яких на поточному такті не може бути виданий в комутаційний пристрій, записують результат виконання команди у вихідний регістр і чекають своєї черги на видачу результату.
Описана вище ситуація має наслідком те, що кількість тактів, необхідне для виконання команди, є величиною недетермінованої.
У кожній клітині є два АЛУ: целочисленное АЛУ і АЛУ обробки чисел з плаваючою крапкою.
Цілочисельне АЛУ призначене для виконання команд над цілочисельними операндами, при цьому операнди можуть бути представлені в наступних форматах (залежно від команди):
64-бітові;
32-бітові;
16-бітові;
8-бітові;
упаковані 32-бітові;
упаковані 16-бітові.


АЛУ з плаваючою точкою призначено для виконання команд над операндами, представленими у форматі чисел з плаваючою комою одинарної (32 біта) або подвійної точності (64 біта) відповідно до вимог стандарту IEEE-754.
Структурно АЛУ з плаваючою точкою складається з трьох частин:
Дільник одинарної точності (ділення, витяг квадратного кореня)
Дільник подвійної точності
Обчислювач (виконання інших команд)


У чому відмінність мультіклеточних процесорів від багатоядерних?
У звичайних процесорах, що складаються з одного або декількох ядер, елементарною одиницею виконання є команда, яка виконується в певному порядку. У мультіклеточном процесорі елементарною одиницею виконання є параграф, тобто лінійний ділянка, що складається з необмеженої кількості команд, після яких відбувається перехід на інший лінійний ділянку із заданою міткою. Команди з цієї ділянки будуть виконуватися паралельно там, де це можливо. Розпаралелювання відбувається апаратно, тобто програмісту не потрібно піклуватися в яку клітину потрапить команда. Саме це ми і називаємо «природний параллелелізм». Внаслідок цього один і той же код може бути виконаний на будь-якій кількості клітин. Ще однією відмінністю мультіклеточного процесора є передача результатів роботи команд за допомогою широкомовного розсилання, тоді як в багато і одноядерних системах результати передаються через пам'ять і регістри. Зрозуміло, в мультіклеточних процесорах є пам'ять і регістри для передачі даних між лінійними ділянками, але всередині лінійної ділянки основні операції можна провести без використання регістрів і пам'яті. Даний факт дає мультіклеточной архітектурі простоту реалізації і зменшення звернень до пам'яті, як наслідок зниження енергоспоживання. Крім того виконання однієї і тієї ж програми на одній, двох, ..., двохсот п'ятдесяти шести клітинах дає можливості по реконфігурації (об'єднання клітин в task-групи) клітин, створенню отказоустойчивого процесора і масштабованості.
До питань параллелілізма і реконфігурації ми ще повернемося далі в цій статті.

4.Прімери
Мультіклеточний процесор складається з 4-х клітин (може бути 256 і більше), клітини є повністю рівноправними і об'єднані комутаційної середовищем (комутатором). Результат виконання команд клітини зберігають у комутаторі.
Програма на асемблері розділяється на секції і на параграфи, які містять команди.
Для обміну інформацією між клітинами служить комутатор, а для обміну між параграфами існують Рони, індексні регістри, пам'ять даних. Для роботи з периферією існують периферійні регістри.
Щоб відсіяти висловлювання виду:
Нехай навіть це «сторінка» пам'яті, але хто «рулить» всієї пам'яттю? Де старше (верхнє) УУ, керуюче клітинами? Хто завантажує пам'ять клітин?
паралелі програміст, а не процесор

Розглянемо просту програму:

Рис 2. Розподіл команд по клітках

Як показано на малюнку 2 команди з параграфа розподілятимуться по клітках. Команди в кожних клітинах виконуються паралельно («природний параллелелізм»). Виконання команд відбувається по готовності аргументів. У даному випадку програму виконує група з 4-х клітин. Програма успішно виконається як на 4-х, так на будь-якому іншому кількості клітин. Основний принцип мультіклеточной архітектури — клітини незалежні один від одного і від будь-кого і однакові. Даний принцип поширюється і на процесори з реконфигурацией.

Реконфигурация — здатність клітин процесора до композиції (збір) і декомпозиції (розбір) за групами, тобто можливість клітин об'єднуватися в групи від однієї клітини і до N (для N клітинного процесора) і виконувати свою ділянку коду. За замовчуванням при старті будь-якої програми всі клітини знаходяться в одній групі. Варто відзначити, що у кожної групи з'являється свій набір РОНов, індексних, керуючих регістрів, можна призначити свій обробник переривань.
У статті про архітектуру фон-Неймана www.osp.ru/os/2008/06/5340894/
Леонід Черняк виділяє наступні три види реконфігурованих процесорів:
1) спеціалізовані процесори
2) конфігуровані процесори
3) динамічно Реконфігуровані процесори (як приклад наводиться єдиний клас цього виду, існуючий на момент опублікування статті Л.Черняка — FPGA)
Перші два види набувають свою специфіку в процесі виготовлення, а третя може програмуватися.

Мультіклеточний процесор R1, відповідно до цієї класифікації, відноситься до динамічно реконфігурованих, однак це процесор на кристалі і, внаслідок незалежності машинного коду, перерозподіл ресурсів (клітин) на відміну від FPGA відбувається без зупинки або перезавантаження процесора і без втрати інформації. Таким чином, MultiClet R1 являє собою новий клас третього виду (поряд з першим — FPGA).
На сьогодні у світі таких процесорів не робив ніхто.
Запропонована Л.Черняком класифікація, з поправкою на майбутнє розвиток, може бути розвинена четвертим видом, який сформулюємо, як
4) самоадаптірующіеся процесори ,
здатні самостійно забезпечувати роботу всіх систем, автоматично перерозподіляючи ресурси. При пошкодженні, відмовах або при появі додаткових завдань процесор або система з процесорів повинна вміти самоадаптований до нових умов.
Першим кроком до створення таких систем, можливо, стане процесор Multiclet L1 або СВК на його основі.

Розглянемо приклад декомпозиції (поділу на групи) клітин:

У даному прикладі ми бачимо розбиття на 3 групи: клітини з номерами 0 і 1 виконують обчислення, клітина 2 виконує збір інформації з датчиків, а клітина 3 складає звіти про роботу і взаємодіє із зовнішнім середовищем. Якщо трапилося так, що клітини 0 і 1 не встигають обробляти дані, то клітина 3 може прийти їм на допомогу і вийдуть дві групи. Важливо зауважити, що скидання процесора для реконфігурації клітин не потрібно. Клітка 3 буде розмовляти однією мовою з клітинами 0 і 1, тобто придбає їх набір РОНов, індексних регістрів і регістрів управління.
Простий приклад звичайної програми на асемблері (можна писати і на стандартному Сі):

.text

habr:
    	 getl 4 		;загрузка константы в коммутатор
   	 getl 5     	; загрузка константы в коммутатор
    	 addl @1, @2	;сложение 4 + 5 = 9
         mull @3, @2	;умножение 4 * 5 = 20
         subl @1, @2	;вычитание 20 – 9 = 11
         slrl @1, 2	;сдвиг 11 << 2  = 44
         subl @1, @2	;вычитание 44 – 11 = 33
         mull @4, @5	;умножение 20 * 9 = 180
   	 jmp habrahabr ;переход  на следующий параграф
complete

habrahabr:
   	getl 5		;загрузка константы в коммутатор
    	addl @1, [10]	;сложение константы и значения из памяти по адресу 10
    	setl #32, @1	;запись суммы в регистр номер 32
complete


Параграфи знаходяться в секції розміченій як «. Text». Параграф може містити необмежену кількість команд (поки пам'ять програм дозволяє), але кожна команда може звернутися за результатом тільки до команди, яка вище не більше ніж на 63 рядки.
Для зручності в асемблері можна задати мітку до кожної команди, наприклад:
habr:
arg1 := getl 5			;загрузка константы в коммутатор
sum1 := addl @arg1, [10]	;сложение константы и значения из памяти по адресу 10
        setl #32, @sum1		;запись суммы в регистр номер 32
complete


У мультіклеточном процесорі немає апаратних засобів, що забезпечують виявлення інформаційних зв'язків між обраними операціями (командами) та їх розподіл по функціональних пристроїв, тобто динамічне розпаралелювання відсутня. Немає і статичного розпаралелювання, тому що програма хоч і описує інформаційні зв'язки, але має лінійну форму і не містить будь-яких вказівок, що і як можна виконувати паралельно. У цьому полягає принципова відмінність від інших процесорів. Завдяки цій ж особливості, потенційно забезпечується живучість мультіклеточного процесора, тобто можливість безперервного виконання програми без перекомпіляції або перезавантаження при відмовах його окремих клітин (деградації процесора).
Завдяки властивості мультіклеточного процесора динамічно розподіляти свої ресурси, ми можемо створювати системи здатні виконувати завдання навіть при відмовах частини клітин.
Деградація пов'язана з втратою продуктивності і, відповідно, збільшенням часу вирішення завдань. Але, для цілого ряду вбудованих застосувань, живучість мультіклеточного процесора дозволяє керованої об'єкту виконувати основні функції, або за рахунок зниження їх якості, або за рахунок відмови від вирішення другорядних завдань.
Асинхронная і децентралізована організація мультіклеточного процесора, як на системному рівні — між клітинами (при реалізації паралелізму), так і на внутрішньоклітинному рівні — між блоками клітини (при реалізації команд), додатково забезпечує:
мінімізацію номенклатури об'єктів проектування і зменшення їх
складності;
зменшення площі кристала процесора (об'єм обладнання при
децентралізованому управлінні менше, ніж при централізованому);
збільшення продуктивності та скорочення енергоспоживання за рахунок
реалізації більш ефективного обчислювального процесу;
використання індивідуальної системи синхронізації для кожної клітини
при реалізації на одному кристалі десятків і сотень клітин.


У результаті, виходить добре структурована і модульна система, що дозволяє різко зменшити складність процесора і, відповідно, знизити витрати і підвищити якість проектування. При цьому в порівнянні з фон-неймановской моделлю, поліпшуються і кількісні характеристики процесора.
На даний момент проведені тести простих алгоритмів, таких як POCNT і алгоритмів шифрування. Для тесту popcnt була написана програма на асемблері і результат ми порівняли з простою програмою для Pentium Dual Core 5700 на Сі.
Результати тестування можна звести в наступну таблицю (кількість тактів на один цикл розрахунку 32-х біт):

Тоб можна зробити висновок, що процесор Мультіклет R1 на тесті «table» швидше процесора Intel на 15%, а на тесті BitHacks процесор Мультіклет R1 швидше ніж Intel більш ніж в 2 рази. Тест popcnt для мультіклеточного процесора був досить просто перетворений для паралельних обчислень. Звичайно, в нових процесорах Intel існує апаратна реалізація popcnt, але в даному тесті ми показали можливості наших процесорів.

5.Что у нас є зараз
На даний момент випущений процесор Multiclet P1 і він доступний для замовлення, а також дві налагоджувальні плати. Які можуть бути використані як промислові.


Крім того на першому мультіклеточном процесорі розроблено пристрій для захисту інформації Multiclet Key_P1, перша серійна партія запланована на вересень 2014 року. Приймаються замовлення, більш докладно тут multiclet.com/index.php/ru/component/content/article/300

Крім того на базі процесора Р1 був розроблений і поставляється серійно принтер для тиснення фольгою virshke.ru /

Користувачі активно освоюють мультіклеточние процесори і доповнюють бібліотеки, а також створюють нові корисні приклади.

Отримано перша партія процесорів R1, розпочато тестування нових процесорів.
Перша ревізія процесора називається R1-1.
Знову ж новий процесор — тема для окремої статті, характеристики процесора першої ревізії опублікуємо трохи пізніше.

Для даного процесора компанія LDM-Systems випустила отладочную плату, що складається з базової і процесорної. На фотографії версія з колодкою. Призначена для користувача версія буде трохи відрізнятися. Комплектацію базової плати можна буде вибирати під свої завдання, в максимальній комплектації базова + процесорна плати коштуватимуть близько 10 тисяч рублів.
Процесори і налагоджувальні плати вже доступні для замовлення.

Комплект ПО включає:
• Асемблер
• Сі компілятор
• Функціональна модель
• Бібліотеки
• Отладчик для IDE Geany
• ОС FreeRTOS
• Приклади програм
• Графобудівник

P.S. Якщо Вам сподобалася ця стаття незважаючи на великий обсяг, то можу написати продовження з програмування процесорів, огляд процесора R1 і принципи побудови високопродуктивних систем на мультіклеточних процесорах.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.