С.Н.Андріанов
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. Зрозуміло, це ідеальна ситуація, недосяжна в реальному житті, зокрема, вважається, що немає "бульбашок" і т.д. Це передбачає, як уже згадувалося, взаємну незалежність даних.
У конвеєрах команд також можуть виникати простої, джерелом яких є залежність між командами. Такі ситуації виникають при наявності в циклах розгалужень, тобто умовних операторів.
