Page 21 - 4868
P. 21
19 Ошибка! Стиль не определен.
Оскільки процесори в мультикомп’ютерах не можуть взаємодіяти один з
одним за допомогою простихзвернень до спільної пам’яті, то процесори
обмінюються повідомленнями через відповіднукомунікаційну мережу. Як
приклади мультикомп’ютерів можна виділити IBM BlueGene/L, Red Storm і
кластер Google.
При відсутності реалізованої апаратно спільної пам’яті, передбачається
використання певної програмної структури. У мультикомп’ютерів не існує
єдиного для всіх процесорів віртуального адресного простору, який би давав
змогу зчитувати і записувати інформацію за допомогою команд
LOADтаSTORE. Наприклад, якщо процесор мультипроцесорного комп’ютера із
спільною пам’яттюз порядковим номером 1 виявить, що частина його даних
потрапляє в іншу секцію, що відноситься до процесораіз порядковим
номером 2, то він може просто продовжити зчитувати дані з пам’яті. Однак
якщо те ж саме виявить процесор з порядковим номером 1
мультикомп’ютера із розподіленою пам’яттю, то він не зможе просто зчитати
дані з пам’яті процесора 2. В даному випадку алгоритм отримання даних
повинен бути іншим.
Спочатку процесору 1 потрібно певним чином з’ясувати, який процесор
містить необхідні йому дані, і послати цьому процесору повідомлення із
запитом копії даних. Потім процесор 1 блокується до моменту отримання
відповіді. Коли процесор 2 отримує повідомлення, то воно програмно
аналізуєтьсяі після цьогонеобхідні дані передаються процесору 1. Коли
процесор 1 отримує повідомлення із даними, то він програмно
розблоковується і після цього продовжує свою нормальну роботу.
У мультикомп’ютерах для взаємодії між процесорами часто
використовуються примітиви sendтаreceive. Тому програмне забезпечення
мультикомп’ютерів має більш складну структуру, ніж програмне
забезпечення мультипроцесорів. При цьому основною проблемою стає
правильний розподіл даних і розумне їх розміщення. Це ще одна відмінність
мультикомп’ютера від мультипроцесора, де розміщення даних не впливає на
правильність рішення задачі, хоча може вплинути на швидкість її рішення.
Може виникнути закономірне питання.Навіщо взагалі створювати
мультикомп’ютери, якщо мультипроцесори набагато легше програмувати?
Відповідь проста – створити потужний мультикомп’ютер простіше і
дешевше, ніж мультипроцесор з такою ж кількістю процесорів. Реалізація
загальної пам’яті, що має спільно використовуватисядекількома сотнями
процесорівє дуже складним завданням, а розробити мультикомп’ютер, що
містить 10000 і більшепроцесорів технічно досить легко.
Отже, отримуємо дилему, згідно якої мультипроцесори складно
проектувати, але легко програмувати, а мультикомп’ютери легко
проектувати, але важко програмувати. В результаті постійно робляться
спроби створення гібридних систем. Ці спроби призвели до усвідомлення
факту, що спільну пам’ять можна реалізовувати по-різному, причому кожен
варіант має як переваги, так і недоліки. Практично всі дослідження в галузі
паралельних комп’ютерних архітектур спрямовані на створення гібридних