Уроки 25 - 26
З курсу основної школи вам відомо:
• Комп'ютер (ЕОМ) - автоматичне, програмно-керований пристрій для роботи з інформацією.
• До складу комп'ютера входять пристрої пам'яті (зберігання даних і програм), процесор (обробка інформації), пристрої введення / виводу (прийом / передача інформації).
• У 1946 році Джоном фон Нейманом були сформульовані основні принципи пристрою ЕОМ, які називають фон-неймановской архітектурою.
• Сучасний комп'ютер являє собою єдність апаратури (hardware) і програмного забезпечення (software).
Серійне виробництво електронних обчислювальних машин (ЕОМ) починається в різних країнах в 1950-х роках. Історію розвитку ЕОМ прийнято ділити на покоління. Перехід від одного покоління до іншого пов'язаний зі зміною елементної бази, на якій створювалися машини, зі зміною архітектури ЕОМ, з розвитком основних технічних характеристик (швидкості обчислень, обсягу пам'яті і ін.), Зі зміною областей застосування і способів експлуатації машин.
Під архітектурою ЕОМ розуміються найбільш загальні принципи побудови комп'ютера, що реалізують програмне керування його роботою і взаємодія основних функціональних вузлів.
В основі архітектури ЕОМ різних поколінь лежать принципи Джона фон Неймана. Однак в процесі розвитку відбуваються деякі відхилення від фон-неймановской архітектури.
Однопроцесорна архітектура ЕОМ
Елементної базою ЕОМ першого покоління (1950-роки) були електронні лампи, а ЕОМ другого покоління (1960-ті роки) створювалися на базі напівпровідникових елементів. Однак їх архітектура була схожою. Вона найбільшою мірою відповідала принципам фон Неймана. У цих машинах один процесор керував роботою всіх пристроїв: внутрішньої і зовнішньої пам'яті, пристроїв введення та виведення, як показано на рис. 2.4.

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

Процесор починає виконання програми з першої команди і закінчує на команді зупинки, назвемо її STOP. При виконанні чергової команди процесор витягує з пам'яті оброблювані величини і заносить їх в спеціальні осередки внутрішньої пам'яті процесора - регістри. Потім виконується команда, наприклад складаються два числа, після чого отриманий результат записується в певну комірку пам'яті. Процесор переходить до виконання наступної команди. Виконання програми закінчиться, коли процесор звернеться до команди STOP.
Серед команд програми існують команди обробки даних і команди звернення до зовнішніх пристроїв. Команди обробки даних виконує сам процесор за допомогою вхідного в нього арифметико-логічного пристрою - АЛУ, і цей процес відбувається порівняно швидко. А команди управління зовнішніми пристроями виконуються самими цими пристроями: пристроями введення / виводу, зовнішньою пам'яттю. Час виконання цих команд у багато разів більше, ніж час виконання команд обробки даних. При однопроцессорной архітектурі ЕОМ, показаної на рис. 2.4, процесор, віддавши команду зовнішнього пристрою, чекає завершення її виконання. При великому числі звернень до зовнішніх пристроїв може виявитися, що більшу частину часу виконання програми процесор «простоює» і, отже, його ККД виявляється низьким. Швидкодія ЕОМ з такою архітектурою знаходилося в межах 10-20 тисяч операцій в секунду (оп. / С).
Використання периферійних процесорів
Наступним кроком у розвитку архітектури ЕОМ стала відмова від однопроцесорного пристрою. Вже на останніх моделях машин другого покоління, крім центрального процесора (ЦП), що виконував обробку даних, були присутні периферійні процесори, які називалися каналами введення / виводу (рис. 2.6). Їх завдання полягало в автономному управлінні пристроями вводу / виводу і зовнішньої пам'яті, що звільняло від цієї роботи центральний процесор. В результаті ККД центрального процесора істотно зріс. Швидкодія деяких моделей машин з такою архітектурою становило від 1 до 3 млн оп. / С.

На всіх моделях ЕОМ третього покоління, які створювалися на базі інтегральних схем (1970-80-ті роки), використовувалася архітектура з одним центральним процесором і периферійними процесорами зовнішніх пристроїв. Така многопроцессорная архітектура дозволяла реалізувати мультипрограмний режим роботи: поки одна програма зайнята вводом / виводом даних, яким керує периферійний процесор, інша програма займає центральний процесор, виконуючи обчислення. Завдяки вдосконаленню елементної бази та інших апаратних засобів на деяких моделях ЕОМ третього покоління досягалося швидкодію до 10 млн оп. / С.
Для поділу ресурсів ЕОМ між декількома виконуваними програмами треба було створення спеціального програмного забезпечення: операційної системи (ОС). До ресурсів, що, перш за все, відносяться час роботи центрального процесора і оперативна пам'ять. Завдання ОС полягає в тому, щоб різні програми, які виконуються одночасно на ЕОМ, «не заважали» один одному і щоб ККД центрального процесора був максимальним, інакше кажучи, щоб ЦП не «простоював». ОС бере на себе також турботу про черговість використання декількома програмами загальних зовнішніх пристроїв: зовнішньої пам'яті, пристроїв введення / виводу.
Архітектура персонального комп'ютера
Персональний комп'ютер (ПК) - найпоширеніший в наш час тип комп'ютера. Поява ПК пов'язане зі створенням мікропроцесорів, яке почалося в 1970-х роках. До недавнього часу в пристрої ПК існував один центральний процесор і безліч периферійних процесорів, керуючих зовнішніми пристроями, які називаються контролерами. Архітектура такого ПК зображена на рис. 2.7.

Для зв'язку між окремими функціональними вузлами ПК використовується загальна інформаційна магістраль, яка називається системною шиною.
Системна шина складається з трьох частин:
Важливе значення такої архітектури можливість підключення до комп'ютера нових пристроїв або заміна старих пристроїв на більш сучасні. Це називається принципом відкритої архітектури. Для кожного типу і моделі пристрою використовується свій контролер, а в складі операційної системи є керуюча програма, яка називається драйвером пристрою.
Відкрита архітектура персонального комп'ютера - це архітектура, яка передбачає модульну побудову комп'ютера з можливістю додавання і заміни окремих пристроїв ».
Архітектура ненеймановскіх обчислювальних систем
Незважаючи на стрімко зростаючу продуктивність ЕОМ, яка кожні 4 5 років за найважливішими показниками практично подвоюється, завжди є класи задач, для яких ніякої продуктивності не вистачає. Зазначимо деякі з них.
1. Математичні розрахунки, що лежать в основі реалізації математичних моделей багатьох процесів. Гігантські обчислювальні ресурси, які можна реалізувати дуже швидко (як іноді кажуть, в реальному масштабі часу), необхідні для більш надійного і довгострокового прогнозу погоди, для вирішення аерокосмічних завдань, в тому числі і оборонних, для вирішення багатьох інженерних задач і т. Д.
2. Пошук інформації в гігантських базах даних, в інформаційному просторі Інтернету.
3. Моделювання інтелекту - при всіх фантастичних показниках, обсяг оперативної пам'яті сучасних комп'ютерів становить лише малу частку обсягу пам'яті людини.
Швидкодія комп'ютера з одним центральним процесором має фізичне обмеження: підвищення тактової частоти процесора веде до підвищення тепловиділення, яке не може бути необмеженим. Перспективний шлях підвищення продуктивності комп'ютера лежить на шляху відмови від єдиності головних пристроїв комп'ютера: або процесора, або оперативної пам'яті, або шини, або всього цього разом. Це шлях ще більшого відступу від архітектури фон Неймана.
Щоб стало зрозуміліше, навіщо комп'ютера кілька процесорів, обговоримо алгоритм вирішення найпростішої математичної задачі. Є масив з 100 чисел: a1. А2. А100. Потрібно знайти їх суму.
Немає нічого простіше! І на комп'ютері, і без нього ми, швидше за все, зробимо так: складемо перші два числа, як-то позначимо їх суму (наприклад, S), потім додамо до неї третіх, і будемо робити це ще 98 раз. Це приклад послідовного обчислювального процесу. Його блок-схема приведена на рис. 2.8.

Оскільки у людини немає другої голови, інакше це завдання самотужки не вирішити. Але уявімо, що ми вирішуємо її не поодинці, а всім класом (25 осіб). Тоді виникає можливість зовсім іншій послідовності дій.
1. Об'єднаємо числа в пари - по два на кожного (разом розподілили 50 чисел); наприклад, учень № 1 бере собі а1 і А2. учень № 2 - а3 і а4. і т.д.
2. Даємо команду «складовій!» - і кожен складає свої числа.
3. Даємо команду «записуй!» - і кожен записує крейдою на класній дошці свій результат.
4. Оскільки у нас залишилося ще 50 необроблених чисел (А51. А100), повторюємо пункти 1 - 3. Після цього маємо на дошці 50 чисел b1 = а1 + а2. b50 = А99 + А100 - результати парних складань.
5. Об'єднаємо в пари числа bi і повторимо виконання пунктів 2 - 4.
Продовжуємо цей процес (2 - 5) до тих пір, поки не залишиться одне число - шукана сума.
Перше враження, що дуже складно, набагато складніше, ніж алгоритм на рис. 2.8. Якби ми захотіли записати цей алгоритм у вигляді блок-схеми, то нам би довелося крім опису порядку і об'єктів дій зробити те, що ми ніколи при запису алгоритмів не робити, - передбачити синхронізацію паралельних процесів за часом. Наприклад, виконання команд 2 і 3 має завершитися усіма учасниками обчислень до того, як вони будуть продовжені (до переходу до п. 4), інакше навіть при вирішенні цієї простої задачі настане хаос.
Але складність не їсти об'єктивна причина відкинути такий шлях, особливо якщо мова йде про можливість значного прискорення комп'ютерних обчислень. Те, що ми запропонували вище, називається на мові програмістів розпаралелюванням обчислень і цілком піддається формальному опису. Ефект прискорення обчислень очевидний: пункт 2 в наведеному вище алгоритмі прискорює відповідний етап роботи в 25 разів!
Наступне питання: що треба змінити в пристрої комп'ютера, щоб він зміг так працювати? Для реалізації такої схеми обчислень комп'ютера буде потрібно 25 процесорів, об'єднаних в одну архітектуру і здатних працювати паралельно.
Такі багатопроцесорні обчислювальні комплекси - реальність сьогоднішнього обчислювальної техніки.
Повернемося, однак, до описаної вище послідовності дій - в ній ще є джерела проблем. Уявімо собі, що в схемі на рис. 2.7 ми домалювали ще 24 центральних процесора, з'єднаних з шиною. При реалізації в такому комп'ютері команди 3 відбудеться одночасне звернення 25 процесорів до системної шини для пересилання результатів складання в оперативну пам'ять. Але оскільки шина одна, числа по ній можуть пересилатися тільки по одному! Значить, для виконання команди 3 доведеться організувати чергу на передачу чисел в пам'ять. Тут же виникає питання: чи не зведе чи до нуля ця черга всі переваги від паралельності виконання операцій на кроці 2? А якщо переваги залишаться, то наскільки вони великі? Чи окупляться витрати на 24 додаткових процесора?

У ситуації, що виникла природний наступний крок «винахідницької думки»: введення в архітектуру декількох системних шин. А якщо ще подумати над можливими проблемами, то і декількох пристроїв оперативної пам'яті.
Як бачите, все це дуже непросто! Обговорювані зміни в устрої комп'ютера призводять до «ненеймановскім» архитектурам. Винахідникам таких систем доводиться шукати компроміс між зростаючою складністю (і, як наслідок, - вартістю) і прискоренням їх роботи.
Варіанти реалізації ненеймановскіх обчислювальних систем
У найзагальнішому сенсі під паралельними обчисленнями розуміються процеси обробки даних, в яких одночасно можуть виконуватися декількох машинних операцій. Паралельні обчислення реалізуються як за рахунок нової архітектури обчислювальної техніки, так і за рахунок нових технологій програмування. Такі технології називаються паралельним програмуванням.
Розподілені обчислення - спосіб реалізації паралельних обчислень шляхом використання безлічі комп'ютерів, об'єднаних в мережу. Такі обчислювальні системи ще називають мультікомпьютернимі.
Розподілені обчислення часто реалізуються за допомогою комп'ютерних кластерів - декількох комп'ютерів, пов'язаних в локальну мережу і об'єднаних спеціальним програмним забезпеченням, що реалізує паралельний обчислювальний процес. Розподілені обчислення можуть проводитися і за допомогою багатомашинних обчислювальних комплексів. утворених об'єднанням декількох окремих комп'ютерів через глобальні мережі.
Мультипроцесорні системи утворюють єдиний комп'ютер, який відноситься до класу суперкомп'ютерів. Досягнення паралелізму в них відбувається завдяки можливості незалежної роботи окремих пристроїв і їх дублювання: кілька процесорів, блоків оперативної пам'яті, шин і т. Д. Мультипроцессорная система може використовувати різні способи доступу до загальної для всієї системи пам'яті. Якщо все процесори мають рівний (однорідний) доступ до єдиної пам'яті, то відповідна обчислювальна система називається векторним суперкомп'ютером.
Один з найпотужніших у світі суперкомп'ютерів під назвою «Ломоносов» (рис. 2.9) проведений вУкаіни і працює в Московському державному університеті. Його швидкодія складає більше ста трильйонів операцій в секунду.


Запитання і завдання
2. У чому полягав відхід від архітектури фон Неймана на ЕОМ другого і третього поколінь?
3. Що дозволило реалізувати мультипрограмний режим роботи на ЕОМ третього покоління?
4. Чим принципово відрізняється архітектура ПК від класичної архітектури комп'ютерів перших поколінь?
5. Які функції виконують контролери зовнішніх пристроїв на ПК?
6. У чому полягає принцип відкритості архітектури ПК?
7. Які функції виконували перші операційні системи?
8. Для яких класів задач потрібні надпродуктивні обчислювальні системи?
9. Що таке паралельні обчислення?
10. Для прикладу зі складанням чисел 25 учнями спробуйте проаналізувати такі ситуації: в класі всього 1 шматочок крейди; в класі 5 шматочків крейди; в класі 25 шматочків крейди. Оцініть, як від цього залежить час вирішення завдання (врахуйте ще ширину дошки і час переміщення учнів по класу). Спробуйте побудувати модель такого процесу. Переведіть цю ситуацію на мову комп'ютерної термінології для багатопроцесорних систем.
11. Чим відрізняються мультікомпьютерние системи від націнок? За яким принципом працюють суперкомп'ютери?