Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

39. Архітектура сучасних обчислювальних машин



С.Н.Андріанов

 

39. Архітектура сучасних обчислювальних машин

 

1. Основні концепції архітектури «звичайних» обчислювальних машин

 

Будь ВМ повинна розглядатися як деякий програмно-апаратний комплекс, що забезпечує реалізацію деякого класу алгоритмів обробки інформації. У процесі роботи ВМ всі її компоненти взаємодіють один з одним деяким чином. При цьому способи взаємодії можуть бути розділені на наступні рівні:

 

1. Нижчий рівень: на рівні електричних сигналів.

2. Вищий рівень: на програмному рівні - взаємодія вузлів ВМ на рівні програмних модулів.

3. Функціональний рівень кожного окремого вузла: функція і її реалізація програмно-апаратними засобами (під цим поняттям і розуміється термін «Архітектура»).

 

Про п р е д е л е н н 1. Під архітектурою розуміється сукупність властивостей і характер обчислювальної машини (системи) - ВМ (ВС), розглянута з погляду користувача.

 

Узагальнена структура ЕОМ

 

Принцип дії звичайної ЕОМ можна вважати копією звичайного процесу обчислень, виконуваного, наприклад, за допомогою калькулятора.

Етапи обчислень:

1. Визначення та завдання порядку обчислень.

2. завдання вихідних даних.

 

3. виконання обчислень (для отримання проміжних значень).

 

4. Отримання кінцевого результату.

 

Іншими словами будь-яка ВМ має 4 основних вузла:

 

 

В основі будь-ЕОМ лежать два фундаментальних поняття в обчислювальній техніці:

 

1. Поняття алгоритму.

2. Принцип програмного керування.

 

Про п р е д е л е н н 2. Алгоритм - деяка однозначно певна послідовність дій, що складається з формально заданих операцій над вихідними даними і призводить до вирішення за кінцеве число кроків.

 

Властивості алгоритмів:

 

1. Дискретність алгоритму (дія виконується по кроках, а сама інформація дискретна).

2. Детермінованість (скільки б разів один і той же алгоритм перестав реалізовувався для одних і тих же даних на одній і тій же ВМ результат буде одним і тим же).

 

3. Масовість - алгоритм «вирішує завдання» для різних даних з допустимого безлічі і завжди дає правильний результат).

 

Про п р е д е л е н н 3. Програма - опис алгоритму на якомусь мові.

 

Принцип програмного управління був сформульований угорським математиком і фізиків Джоном фон Нейманом, за участю Гольцтайна і берци в 1946 році.

 

ППУ включає в себе кілька архітектурно-функціональних принципів:



 

1) Будь алгоритм представляється у вигляді послідовності керуючих слів - команд. Кожна окрема команда визначає простий (одиничний) крок перетворення інформації.

 

2) Принцип умовного переходу. У процесі обчислень залежно від отриманих

 

проміжних даних можливий автоматичний перехід на ту чи іншу ділянку програми.

3) Принцип збереженої програми. Команди в ЕОМ представляються в такій же кодируемой формі, як і будь-які дані, і зберігаються в такому ж оперативної запам'ятовуючому пристрої (ОЗП). Це означає, що якщо розглядати вміст пам'яті, то без будь-якої команди неможливо розрізнити команди і дані. Отже, будь-які команди можна принципово обробляти як дані (інформація в ЕОМ відрізняється не поданням, а способом її використання).

 

4) Принцип двійкового кодування.

 

5) Принцип ієрархічності запам'ятовуючих пристроїв (ЗУ).

 

Четверте покоління. У 70-ті роки стали з'являтися машини 4-го покоління, які можна охарактеризувати наступними властивостями:

1) мультипроцесорну.

 

2) Паралельно-векторна обробка

 

3) Мови високого рівня.

 

4) З'являються перші мережі ЕОМ.

Характеристики машин 4-го покоління можна описати таким чином:

- Середня затримка сигналу порядку 0.7 н. / Вентиль (вентиль - елементарний логічний елемент комп'ютера);

- Вперше основна пам'ять - напівпровідникова (час вироблення даного з такої пам'яті 100-150 нс. Ємність 1012 ÷ 1013 символів);

 

- Вперше застосовується апаратна реалізація оперативної системи;

 

- Модульне побудова стало застосовуватися і для програмних засобів. Основна увага машин 4-го покоління було направлено на сервіс (поліпшення спілкування

людини з ЕОМ).

 

П'яте покоління. Наприкінці 80-х з'являються машини 5-го покоління.

 

5-е покоління ЕОМ пов'язують зазвичай з переходом до мікропроцесорах. З точки зору структурної побудови характерна максимальна децентралізація управління. З точки зору програмного та математичного забезпечення - перехід на роботу в програмних середовищах і оболонках. Продуктивність 108 ÷ 109 операцій в секунду. Для 5-го і 6-го покоління характерні багатопроцесорні структури, створені на спрощених мікропроцесорах, яких дуже багато (вирішальні поля або середовища). При цьому розвиваються два діаметрально протилежних підходи:

 

1) Персоніфікація ресурсів.

 

2) Колективізація ресурсів (колективний доступ за допомогою мереж).

 

Класифікація ЕОМ.

 

ЕОМ класифікуються за:

1) призначення: зазвичай виділяють ЕОМ загального призначення і ЕОМ, орієнтовані на досить вузький клас задач.

2) Продуктивності: ЕОМ поділяються за величиною продуктивності.

 

3) Режим роботи:

 

- Однопрограмні ЕОМ;

 

- Мультипрограмному ЕОМ (ці ЕОМ повинні мати велику оперативну пам'ять, засоби управління часом, введення-виведення, засоби, що дозволяють виключити вплив програм один на одного).

 

- ЕОМ для побудови машинних і багатопроцесорних обчислювальних систем (додатково до мультипрограмним ЕОМ повинні реалізовувати функції взаємного обміну між ЕОМ).

 

- ЕОМ для роботи в системах реального часу, наприклад, для управління технічним процесом (ходом процесу скловаріння) або об'єктом (автопілотом). Тут пред'являються високі вимоги до можливості

швидкої обробки великого масиву даних від різних зовнішніх джерел (датчиків).

4) Способам структурної організації:

 

- Однопроцесорні;

 

- Багато (мульти) процесорні ЕОМ (основне призначення одержання

високої продуктивності - обчислювальні системи).

ВС зазвичай класифікують по Фліну. В її основі лежить спосіб організації паралелізму ВС (множинність).

Згідно Фліну існує 4 різновиду ВС:

 

1. Класифікація Флінна

 

У літературі часто використовується та чи інша схема класифікації комп'ютерних архітектур і однією з найбільш популярних є таксономія Флінна. В її основу покладено опис роботи комп'ютера з потоком команд і потоком даних. За Флинну прийнято класифікувати всі можливі архітектури комп'ютерів на чотири категорії:

 

1. SISD (Single Instruction Stream - Single Data Stream) - один потік команд і один потік даних;

 

2. SIMD (Single Instruction Stream - Multiple Data Stream) - один потік команд і безліч потоків даних;

3. MISD (Multiple Instruction Stream - Single Data Stream) - безліч потоків команд і один потік даних;

4. MIMD (Multiple Instruction Stream - Multiple Data Stream) - безліч потоків команд і безліч потоків даних.

 

Розглянемо цю класифікацію більш докладно.

 

SISD комп'ютери

 

SISD комп'ютери це звичайні, "традиційні" послідовні комп'ютери, в яких в

 

кожен момент часу виконується лише одна операція над одним елементом даних (числовим або яким-небудь іншим значенням). Більшість сучасних персональних ЕОМ, наприклад, потрапляє саме в цю категорію. Іноді сюди відносять і деякі типи векторних комп'ютерів, це залежить від того, що розуміти під потоком даних, але обговорювати ці деталі тут ми не будемо.

 

SIMD комп'ютери

 

SIMD комп'ютери складаються з одного командного процесора (керуючого модуля), званого контролером, і декількох модулів обробки даних, званих процесорними елементами. Керуючий модуль приймає, аналізує і виконує команди. Якщо в команді зустрічаються дані, контролер розсилає на всі процесорні елементи команду, і ця команда виконується на декількох або на всіх процесорних елементах. Кожен процесорний елемент має свою власну пам'ять для зберігання даних. Однією з переваг даної архітектури вважається те, що в цьому випадку більш ефективно реалізована логіка обчислень. До половини логічних інструкцій звичайного процесора пов'язане з управлінням виконанням машинних команд, а решта їх частина

 

ставиться до роботи з внутрішньою пам'яттю процесора і виконання арифметичних операцій. У SIMD комп'ютері управління виконується контролером, а "арифметика" віддана процесорним елементам.

 

Векторні комп'ютери являють собою приклад архітектури SIMD.

 

MISD комп'ютери

 

Обчислювальних машин такого класу практично немає і важко навести приклад їх успішної реалізації. Один з небагатьох - систолічний масив процесорів, в якому процесори знаходяться у вузлах регулярної решітки, роль ребер якій грають межпроцессорной з'єднання. Всі процесорні елементи управляються загальним тактовим генератором. У кожному циклі роботи кожен процесорний елемент одержує дані від своїх сусідів, виконує одну команду і передає результат сусідам.

 

MIMD комп'ютери

 

Ця категорія архітектур обчислювальних машин найбільш багата, якщо мати на увазі приклади її успішних реалізацій. У неї потрапляють симетричні паралельні обчислювальні системи, робочі станції з декількома процесорами, кластери робочих станцій і т.д. Вже досить давно з'явилися комп'ютери з декількома незалежними процесорами, але спочатку на таких комп'ютерах був реалізований тільки паралелізм завдань, тобто на різних процесорах одночасно виконувалися різні і незалежні програми.

 

Розробці перших комп'ютерів для паралельних обчислень були присвячені проекти під умовною назвою CM * і C.MMP в університеті Карнегі (США). Технічною базою для цих проектів були процесори DEC PDP-11. На початку 90-х років саме MIMD комп'ютери виходять у лідери на ринку високопродуктивних обчислювальних систем.

 

Такий тип машин відрізняється не тільки продуктивністю, але і більш високою надійністю. Дійсно, при відмові одного процесора вся систем залишається працездатною (правда з більш низькою продуктивністю). Однак при такій організації виникають проблеми організації управління при вирішенні однієї задачі.

 

2. Основні концепції архітектури високопродуктивних обчислювальних систем.

 

Архітектура традиційних послідовних комп'ютерів заснована на ідеях Джона фон Неймана і включає в себе центральний процесор, оперативну пам'ять - адресний простір з лінійною адресацією і блок управління. Послідовність команд застосовується до послідовності даних. Швидкодія такого традиційного комп'ютера

визначається швидкодією його центрального процесора і часом доступу до оперативної пам'яті. Швидкодія центрального процесора може бути збільшено за рахунок збільшення тактової частоти, величина якої залежить від щільності елементів в інтегральної схемою, способу їх "упаковки" і швидкодії мікросхем оперативної пам'яті.

 

Інші методи підвищення швидкодії послідовного комп'ютера засновані на розширенні традиційної неймановской архітектури, а саме:

 

- Застосуванні RISC процесорів, тобто процесорів з скороченим набором команд. В RISC процесорах велика частина команд виконується за 1-2 такту;

- Застосуванні суперскалярних процесорів;

 

- Застосуванні конвеєрів.

 

У високопродуктивних обчислювальних системах використовуються як традиційні елементи архітектури, так і її розширення, а також нові елементи, такі, наприклад, як векторні процесори і т.д. У цьому розділі ми розглянемо такі найважливіші концепції організації високопродуктивних обчислювальних систем, як векторна обробка даних, конвеєри, методи і типи міжпроцесорних комунікацій, організація оперативної пам'яті.

 

2.1 Конвеєр

 

Термін "конвеєр" у комп'ютерній архітектурі позначає... конвеєр. Ідея конвеєра полягає в тому, щоб складну операцію розбити на безліч більш простих, які можуть виконуватися одночасно. При русі об'єктів по конвеєру на різних його ділянках виконуються різні операції, а при досягненні кожним об'єктом кінця конвеєра він виявиться повністю обробленим. Конвеєри застосовуються як при обробці команд, так і в арифметичних операціях. Для ефективної реалізації конвеєра повинні виконуватися наступні умови:

 

- Система виконує повторювану операцію;

 

- Ця операція може бути розділена на незалежні частини, ступінь перекриття яких невелика;

- Трудомісткість підоперацій приблизно однакова.

 

Кількість підоперацій називають глибиною конвеєра. Важливою умовою нормальної роботи конвеєра є відсутність конфліктів, то є дані, що подаються в конвеєр, повинні бути незалежними. У тому випадку, коли черговий операнд залежить від результату попередньої операції, виникають такі періоди роботи конвеєра ("бульбашки"), коли він порожній. Це ще одна проблема в роботі конвеєрних систем.

 

Збільшення швидкодії, яке можна отримати за допомогою конвеєра приблизно дається наступною формулою:

 

де n - кількість операндів, що завантажуються в конвеєр, d - глибина конвеєра. Нехай потрібно виконати операцію додавання над двома одновимірними масивами по 200 елементів, причому виконання додавання вимагає п'ять операцій. У цьому випадку прискорення складе (200 * 5) / (200 + 5) = 4.88. Зрозуміло, це ідеальна ситуація, недосяжна в реальному житті, зокрема, вважається, що немає "бульбашок" і т.д. Це передбачає, як уже згадувалося, взаємну незалежність даних.

 

У конвеєрах команд також можуть виникати простої, джерелом яких є залежність між командами. Такі ситуації виникають при наявності в циклах розгалужень, тобто умовних операторів.

 

2.2 Суперскалярні процесори

 

Суперскалярний процесор являє собою щось більше, ніж звичайний послідовний (скалярний) процесор. На відміну від останнього, він може виконувати кілька операцій за один такт. Основними компонентами суперскалярного процесора є пристрої для інтерпретації команд, забезпечені логікою, що дозволяє визначити, чи є команди незалежними, і достатнє число виконуючих пристроїв. У виконуючих пристроях можуть бути конвеєри. Суперскалярні процесори реалізують паралелізм на рівні команд.

 

Прикладом комп'ютера з суперскалярним процесором є IBM RISC / 6000. Тактова частота процесора у ЕОМ була 62.5 МГц, а швидкодію системи на обчислювальних тестах досягало 104 Mflop (Mflop - одиниця виміру швидкодії процесора - мільйон операцій з плаваючою крапкою в секунду). Суперскалярний процесор не вимагає спеціальних векторизуется компіляторів, хоча компілятор повинен в цьому випадку враховувати особливості архітектури.

 

2.3 Векторна обробка даних

 

Векторний процесор "уміє" обробляти однією командою не одне єдине значення, а відразу масив (вектор) значень. Нехай A1, A2 і P - це три масиву, що мають однакову розмірність і однакову довжину, і є оператор

 

P = A1 + A2

 

Векторний процесор за один цикл виконання команди виконає попарне складання елементів масивів A1 і A2 і привласнить отримані значення відповідних елементів масиву P. Кожний операнд при цьому зберігається в особливому, векторному регістрі. звичайному,

 

послідовному процесору довелося б кілька разів виконувати операцію складання елементів двох масивів. Векторний процесор виконує лише одну команду! Зрозуміло, реалізація такої команди буде більш складною, більш детальне обговорення цієї проблеми міститься в третьому розділі цього підручника. Очевидно, за рахунок векторизації можна сподіватися (ми не випадково робимо тут це застереження) отримати високу продуктивність. Крім того, векторним ЕОМ властиві й інші цікаві особливості. Кількість команд, необхідних для виконання однієї і тієї ж програми, що використовує векторізуемие операції, менше у разі векторного процесора, ніж звичайного, скалярного. Зменшення потоку команд дозволяє знизити вимоги до пристроїв комунікації, у тому числі між процесором і оперативною пам'яттю комп'ютера. Інший момент полягає в тому, що при

 

відповідної організації оперативної пам'яті дані в процесор будуть передаватися на кожному такті, що дає значний виграш в продуктивності комп'ютера. Слід зауважити, що саме векторні ЕОМ були першими високопродуктивними комп'ютерами (ми згадували вже векторний комп'ютер С.Крея) і традиційно саме ЕОМ з векторної архітектурою називаються суперкомпьютерами. Векторні комп'ютери розрізняються тим, як операнди передаються командам процесора. Тут можна виділити наступні основні схеми:

 

Ø з пам'яті в пам'ять - в цьому випадку операнди витягуються з оперативної пам'яті, завантажуються в арифметичний пристрій і результат повертається в оперативну пам'ять;

 

Ø з регістра в регістр - операнди спочатку завантажуються в векторні регістри, потім

 

операнд передається в арифметичний пристрій і результат повертається в один з векторних регістрів.

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

 

і появою в конвеєрі першого результату. Якщо конвеєр вже завантажений, результат на його виході буде виходити в кожному такті. Прикладом ЕОМ з такою архітектурою є комп'ютери серії CYBER 200, час запуску у яких становило до 100 тактів. Це дуже велика величина, навіть при роботі з векторами довжиною 100 елементів, вищезазначені комп'ютери досягали лише половини від своєї максимально можливої продуктивності,

 

і це їх врешті-решт і згубило.

 

У векторних комп'ютерах, що працюють за схемою регістр-регістр, довжина вектора набагато менше. Для комп'ютерів серії Cray це 64. Але істотно менший час запуску дозволяє домогтися гарних показників за швидкодією. Правда, якщо працювати з довгими векторами, їх доводиться розбивати на частини меншої довжини, що знижує швидкодію. Векторні комп'ютери, що працюють за схемою з регістра в регістр, в

 

Нині домінують на ринку векторних комп'ютерів і найбільш відомими представниками є машини сімейства Cray, NEC, Fujitsu і Hitachi.

 

2.4 Процесори для паралельних комп'ютерів

 

Ідея паралелізму, як засобу збільшення швидкодії ЕОМ, виникла дуже давно - ще

 

в 19-му столітті. Прийнято виділяти чотири рівні паралелізму: 1. Паралелізм завдань - кожен процесор завантажується своєї власної незалежної від інших обчислювальної завданням. Паралелізм такого типу становить інтерес скоріше для системних адміністраторів, ніж рядових користувачів;

 

2. Паралелізм на рівні програми - обчислювальна програма розбивається на частини, які можуть виконуватися одночасно на різних процесорах;

3. Паралелізм команд - зазвичай реалізований на низькому рівні, це, наприклад, конвеєри і т.д.;

4. Паралелізм на рівні машинних слів і арифметичних операцій - в деяких ситуаціях, наприклад, додавання двох операндів виконується одночасним складанням всіх їх двійкових розрядів.

 

Як бачимо, в першому і другому випадках немає необхідності в якійсь особливій архітектурі процесора і лише в третьому і четвертому випадках потрібне введення нових елементів, мова про які вже йшлося вище. Але всі вони не є специфічними для паралельної багатопроцесорної архітектури.

 

2.5 Оперативна пам'ять

 

Характеристики оперативної пам'яті і особливості її пристрою є найважливішим чинником, від якого залежить швидкодія комп'ютера. Адже навіть при наявності швидкого процесора швидкість вибірки даних з пам'яті може виявитися невисокою, і саме ця

 

невисока швидкість роботи з оперативною пам'яттю буде визначати швидкодію комп'ютера. Час циклу роботи з пам'яттю tm зазвичай помітно більше, ніж час циклу центрального процесора tc. Якщо процесор инициализирует звернення до пам'яті, вона буде

 

зайнята протягом часу tc + tm і протягом цього проміжку часу жодне інше пристрій, в тому числі і сам процесор не зможуть працювати з оперативною пам'яттю. Таким чином, виникає проблема доступу до пам'яті.

 

Ця проблема вирішується спеціальною організацією оперативної пам'яті. Прийнята наступна класифікація паралельних комп'ютерів з архітектури підсистем оперативної пам'яті:

 

Ø системи з пам'яттю, що, у яких є одна велика віртуальна пам'ять і всі процесори мають однаковий доступ до даних і командам, що зберігаються в цій пам'яті;

 

Ø системи з розподіленою пам'яттю, у яких кожен процесор має свою локальну

 

оперативну пам'ять і до цієї пам'яті у інших процесорів немає доступу.

Відмінність цих двох типів пам'яті проявляється в структурі віртуальної пам'яті, тобто пам'яті, як вона "видно" процесору. Фізично пам'ять зазвичай ділиться на частини, доступ до яких може бути організований незалежно. Різниця між розділяється і розподіленою пам'яттю полягає в способі інтерпретації адреси. Ця відмінність простіше пояснити на наступному прикладі. Нехай один з процесорів виконує команду виду load r1, i - "завантажити в регістр r1 дані з комірки пам'яті i". Якщо команда виконується на комп'ютері з пам'яттю, що, номер комірки i має однаковий сенс для всіх процесорів, i є глобальним адресою. У випадку системи з розподіленою пам'яттю, осередок i різна для різних процесорів і в регістри r1 по цій команді будуть завантажені різні значення.

 

Для програміста часто буває важливо знати тип оперативної пам'яті комп'ютера, на якому він працює. Адже архітектура пам'яті визначає спосіб взаємодії між різними частинами паралельної програми. При виконанні на комп'ютері з

 

розподіленою пам'яттю програма перемноження матриць, наприклад, повинна створити копії перемножуваних матриць на кожному процесорі, що технічно здійснюється передачею на ці процесори повідомлення, що містить необхідні дані. У випадку системи з

пам'яттю, що достатньо лише один раз задати відповідну структуру даних і розмістити її в оперативній пам'яті. Зупинимося докладніше на різних архітектурах підсистеми пам'яті.

 

2.5.1 чередуемих пам'ять

 

Чередуемих пам'ять поділяється на банки пам'яті. Прийнято угоду про те, що комірка пам'яті з номером i знаходиться в банку пам'яті з номером i mod n, де n - кількість банків пам'яті. Таким чином, якщо є 8 банків пам'яті, то перший банку пам'яті будуть належати комірки пам'яті з номерами 0, 8, 16,:, другий - 1, 9, 17,... і т.д. Запити до різних банків пам'яті можуть оброблятися одночасно. при достатньому

 

кількості банків пам'яті швидкість обміну даними між пам'яттю і процесором може бути близька до ідеального значення - одне машинне слово за один такт роботи процесора.

 

Комірки пам'яті можуть бути пронумеровані і безперервним чином, тобто, скажімо, в першому банку знаходяться осередки з номерами від 0 до 255, у другому від 256 до 511 і т.д. У векторних комп'ютерах зазвичай використовується перший спосіб адресації, а в багатопроцесорних комплексах з пам'яттю, що - другий.

 

2.5.2 Колективна пам'ять

 

Найпростіший спосіб створити багатопроцесорний обчислювальний комплекс з пам'яттю, що - взяти кілька процесорів, з'єднати їх із загальною шиною і з'єднати цю шину з оперативною пам'яттю. Цей простий спосіб є не дуже вдалим, оскільки між

 

процесорами виникає боротьба за доступ до шини і якщо один процесор приймає команду або передає дані, всі інші процесори змушені будуть перейти в режим очікування. Це призводить до того, що, починаючи з деякого числа процесорів, швидкодія такої системи перестане збільшуватися при додаванні нового процесора.

 

Дещо поліпшити картину може застосування кеш-пам'яті для зберігання команд. При наявності локальної, тобто належить даному процесору кеш-пам'яті, наступна необхідна йому команда з великою ймовірністю буде перебувати в кеш-пам'яті. В

 

Внаслідок цього зменшується кількість звернень до шини і швидкодію системи зростає. Разом з тим виникає нова проблема - проблема кеш-когерентності. Ця проблема полягає в тому, що якщо, скажімо, двом процесорам для виконання різних операцій знадобилося значення V, це значення буде зберігатися у вигляді двох копій в кешпамяті обох процесорів. Один з процесорів може змінити це значення в результаті виконання своєї команди, і воно буде передано в оперативну пам'ять комп'ютера. Але в кешпамяті другого процесора все ще зберігається старе значення! Отже, необхідно забезпечити своєчасне оновлення даних в кеш-пам'яті всіх процесорів комп'ютера.

 

Є й інші реалізації розділяється пам'яті. Це, наприклад, Колективна пам'ять з дискретними модулями пам'яті. Фізична пам'ять складається з декількох модулів, хоча віртуальний адресний простір залишається спільним. Замість загальної шини в цьому випадку використовується перемикач, направляючий запити від процесора до пам'яті. Такий перемикач може одночасно обробляти декілька запитів до пам'яті, тому якщо всі процесори звертаються до різних модулів пам'яті, швидкодія зростає.

 

2.5.3 Розподілена пам'ять

 

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

 

Програмування для систем з розподіленою пам'яттю - більш складне завдання. Воно вимагає розбиття вихідної обчислювальної задачі на підзадачі, виконання яких може бути рознесено на різні процесори.

 

Одним з найбільш відомих комп'ютерів такого типу є обчислювальна система CM-5 фірми Thinking Machines. Вона складається з процесорних елементів, побудованих на основі мікропроцесора SPARC і з'єднаних мережею зі спеціальною топологією типу "дерево". У кожного процесорного елемента є локальна пам'ять об'ємом 32 мегабайти. Пропускна здатність шини більше біля кореня дерева і менше у її гілок.

 

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

 

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

 

Наведемо приклади топологій, які застосовуються в паралельних обчислювальних системах. Поширеною є добре масштабована топологія "гіперкуб":

 

 

 

 

2-ох вимірний 3-ьох вимірний

Для адресації вузлів в гіперкубі кожному вузлу привласнюється свій ідентифікаційний номер, при цьому двійкові подання ідентифікаційних номерів сусідніх вузлів відрізняються одним бітом. Алгоритм пересилання повідомлення від одного вузла до іншого в цьому

 

випадку досить простий і заснований на побітового порівнянні довічних уявлень ідентифікаційних номерів поточного вузла і адресата.

Іншим прикладом топології є двовимірна решітка. Це звичайна квадратна решітка з граничними сполуками різного роду:

 

плоска решітка

 

Кількість перемикачів,

 

виходами O (n log2n).

 

 

З'єднання "метелик"

 

Більш складний тип комунікації дається багатоступінчатими сполуками. У цьому випадку на одному кінці з'єднання знаходяться процесори, а на іншому процесори або інші вузли. У середині розташовуються перемикачі. при передачі

даних від вузла до вузла перемикачі встановлюються таким чином, щоб забезпечити необхідну з'єднання. Очевидно, для цього потрібен якийсь час - "час установки".

Прикладами багатоступеневих сполук є сполуки "метелик" і "омега". Ці сполуки формуються з перемикачів, що мають 2 входи і 2 виходи. Входи і виходи коммутируются.

 

необхідне для нормальної роботи мережі з n входами і n

 

 

 

перехресне з'єднання

 

Більш стійку й ефективну роботу забезпечує перехресне з'єднання. Перемикачі динамічно конфигурируются так, щоб забезпечити необхідну з'єднання. Масштабованість такого з'єднання не дуже гарна, так як додавання нового вузла вимагає включення додатково 2n-1 перемикачів.

 

Найважливішими атрибутами системи комунікацій є стратегії управління, перемикання і синхронізації. Що стосується управління, то тут можна виділити дві альтернативи: централізоване управління єдиним контролером (модулем управління) і розподілене управління. Прикладами розподіленого управління є робота багатоступеневих сполук, де кожен вузол приймає рішення, як вчинити з надійшли повідомленням - залишити його собі або передати сусідові. Інший варіант використовується, наприклад, у з'єднаннях типу "зірка", де кожне повідомлення пересилається в контролер, який визначає його подальшу долю.

Синхронізація теж може бути глобальною, коли Сінхронізуется послідовність імпульсів передається всім вузлам обчислювальної системи, але може бути і локальною, коли кожен вузол має свій власний генератор. Останній варіант називається асинхронної роботою. Перевага глобальної синхронізації, характерною для SIMD машин полягає в більш простий апаратної й програмної реалізації, а асинхронні системи, найчастіше це MIMD-комп'ютери - більш гнучкі.

 

Стратегії перемикання теж бувають двох видів. По-перше, це пакетне перемикання, коли повідомлення розбивається на більш дрібні пакети, пересилаються по мережі. Подолавши чергове з'єднання, пакет потрапляє на черговий вузол, який визначає, куди цей пакет повинен бути відправлений і чи повинен він бути відправлений взагалі. Зрештою пакети повинні прибути на вузол-адресат, причому шляхи їх можуть бути різними. На останньому вузлі пакети збираються і відновлюється передане повідомлення. По-друге, можливо ланцюгове перемикання, коли між відправником і адресатом створюється магістраль, по якій і передається повідомлення цілком.

 

2.3 Кластери робочих станцій

 

Кластери робочих станцій являють собою сукупність досить потужних комп'ютерів (але все-таки не суперкомп'ютерів), з'єднаних в локальну мережу, зазвичай, в масштабі відділу, факультету або інституту. Такий кластер можна розглядати як якусь обчислювальну систему з розподіленою пам'яттю, розподіленим управлінням і т.д.

 

Дійсно такі кластери застосовують для паралельних обчислень і сенс тут найчастіше в тому, що така система може володіти непоганими характеристиками по швидкодії, порівнянними з показниками спеціалізованих суперкомп'ютерів, але вартість такої системи відносно невелика, адже робочі станції вже існують! Вони закуплені та встановлені і не завжди завантажені роботою, так чому б не перетворити їх у віртуальний (тимчасовий) обчислювальний комплекс? Ще одним з переваг такої гетерогенної обчислювальної системи може бути те, що окремі частини програми можуть виконуватися на найбільш придатних для цього комп'ютерах.

 

Для того, щоб це зробити, необхідно вирішити ряд проблем. Перш за все, слід мати на увазі, що досить часто в мережу об'єднуються комп'ютери різних фірм виробників, що мають різну архітектуру, що працюють під управлінням різних операційних систем, що мають різні файлові системи і т.д (в цьому випадку говорять про гетерогенному середовищі). Тобто, виникає проблема сумісності. Є і проблема доступу, так як для входу в будь-який комп'ютер може знадобитися дозвіл працювати на ньому. Може бути й так, що час рахунку вимірюється днями, а то й тижнями, а деякі з робочих станцій кластера час від часу повинні бути завантажені своєї власної роботою. Тобто особливо важливим виявляється управління такою обчислювальною системою, дуже динамічною і специфічною. Деякі з перерахованих проблем можуть бути вирішені адміністративним чином, для вирішення інших потрібне спеціальне програмне забезпечення, рідше спеціальна апаратура, адже обладнання вже є, включаючи процесори та мережі.


Дата добавления: 2015-10-21; просмотров: 31 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
ФЕДЕРАЛЬНОЕ Государственное | 

mybiblioteka.su - 2015-2024 год. (0.051 сек.)