до головної пам'яті повинні проходити по єдиному шляху – через загальну магістраль і, отже, швидкодія системи обмежена тривалістю циклу магістралі. Частково з цією проблемою дозволяє справитися оснащення кожного процесора власним блоком кеш-пам'яті, що знижує кількість звертань до головної пам'яті. Як правило, застосовується дворівнева організація кешу – кеш рівня L1 розміщається в ВІС процесора (внутрішній кеш), а кеш рівня L2 – зовнішній.
Як ми вже не раз підкреслювали вище, застосування кеш-пам'яті в мультипроцесорній системі породжує проблему погодженості або інформаційної цілісності кешів окремих процесорів. Ми розглянемо методи її вирішення в розділі 3.
2 Системи з багатопортовою пам'яттю
Використання в SMP-системах багатопортової пам'яті дозволяє організувати пряме звертання кожного процесора і модуля вводу-виводу до загального масиву інформації, незалежно від всіх інших (рис. 2.4). При цьому кожен модуль пам'яті повинен бути оснащений логічною схемою вирішення можливих конфліктів. Для цього найчастіше портам назначаються певні пріоритети. Як правило, електричний і фізичний інтерфейс кожного порту ідентичний і стосовно пристрою, підключеного до цього порту, модуль пам'яті можна розглядати як однопортовий. Тому в схемі процесора або модуля вводу-виводу практично не потрібно проводити ніяких змін для підключення до багатопортової пам'яті.
Істотно ускладнюється тільки схема блоку загальної пам'яті, але це окуповується за рахунок підвищення продуктивності системи в цілому, оскільки кожен процесор має свій канал для доступу до інформації спільного користування. Інша перевага систем з такою організацією – можливість виділення областей пам'яті для виняткового використання певним процесором (або групою процесорів). Це спрощує створення системи захисту інформації від несанкціонованого доступу і збереження програм відновлення в областях пам'яті, недоступних для модифікації іншими процесорами.
Є ще один істотний момент при роботі з багатопортовою пам'яттю. При відновленні інформації в кеші будь-якого процесора необхідно виконувати наскрізний запис у головну пам'ять, оскільки не існує іншого способу сповістити інші процесори про внесення змін у дані.
3 Системи з центральним пристроєм керування
Центральний пристрій керування організовує роздільні потоки даних між незалежними модулями – процесорами, пам'яттю і модулями вводу-виводу. Контролер може запам'ятовувати запити і виконувати функції арбітра і розподільника ресурсів. На нього також покладаються функції передачі інформації про стан керуючих повідомлень і оповіщення процесорів про зміну інформації в кешах.
Оскільки всі логічні функції, що зв'язані з координацією роботи компонентів системи, реалізуються в одному центральному пристрої керування, інтерфейси процесорів, пам'яті і модулів вводу-виводу залишаються практично незмінними. Це забезпечує системі майже таку ж гнучкість і простоту, як і при використанні загальної магістралі. Основний недолік такого підходу – істотне ускладнення схеми пристрою керування, що потенційно може привести до зниження продуктивності.
Структура з центральним пристроєм керування у свій час була широко поширена при побудові багатопроцесорних обчислювальних комплексів на базі великих машин, таких, як машини сімейства IBM S/370. У даний час вони зустрічаються дуже рідко.
4. Особливості операційних систем мультипроцесорних комплексів
У мультипроцесорному обчислювальному комплексі операційна система повинна в такий спосіб розподіляти роботу між процесорами й іншими ресурсами, щоб користувач був врятований від необхідності самостійно контролювати ресурси. З погляду користувача такий комплекс повинен виглядати як єдина мультипрограмна система з одним процесором. І в однопроцесорній, і в SMP-системі в кожний момент часу можуть бути активними кілька завдань або процесів, і функція операційної системи полягає в тому, щоб спланувати виконання завдань і розподілити між ними необхідні ресурси. Користувач може спроектувати програму таким чином, що вона буде включати безліч процесів або потоків у межах окремого процесу і при цьому ніяк не враховувати, чи буде ця програма виконуватися в однопроцесорній чи в SMP-системі. Отже, операційна система повинна мати усі функції мультипрограмної системи, а також повинна могти забезпечити роботою багато процесорів. Відзначимо наступні ключові питання, що повинні враховуватися при проектуванні операційної системи багатопроцесорного комплексу.*
Паралельне виконання одних і тих самих функцій при запиті конкуруючих процесів. Окремі компоненти операційної системи повинні мати властивість реентерабільності, тобто можливістю паралельного виконання на декількох процесорах одночасно. Коли кілька процесорів виконують системні підпрограми, що звертаються до одних і тих самих системних даних (таблиць, що керують структурами і т.п.), повинні бути передбачені спеціальні засоби, що забезпечують правильність і точність системної інформації.
Планування може виконуватися будь-яким процесором комплексу, отже повинні бути передбачені засоби, що попереджають появу конфліктів. Планувальник повинен назначати процеси, готові до виконання, тим процесорам, що вільні в даний момент.
Коли кілька активних процесів намагаються звернутися до загального поля пам'яті і поділюваних ресурсів вводу-виводу, необхідно забезпечити ефективну синхронізацію виконання запитів.
Механізм керування пам'яттю в мультипроцесорному комплексі повинен забезпечувати вирішення всіх задач, властивих однопроцесорній системі, і додатково до них підтримувати паралельну роботу апаратних модулів, зокрема при використанні багатопортової пам'яті. Операційна система повинна також дбати і про координацію роботи механізмів сторінкового обміну різних процесорів, коли кілька процесорів працюють з однієї і тією ж сторінкою або сегментом пам'яті.
На операційну систему покладається функція забезпечення працездатності комплексу у випадку виходу з ладу одного з процесорів. При цьому операційна система повинна перерозподілити задачі, що виконувалися ним, між іншими процесорами комплексу і, відповідно, внести зміни до системних таблиць.
5 SMP-системи на базі великих обчислювальних машин
У більшості SMP-систем персонального користування і робочих станцій для організації взаємодії між компонентами використовується системна магістраль (див. рис. 2.3). Досить корисно розглянути альтернативний підхід, що застосовується в комплексах на базі великих комп'ютерів (мейнфреймів) сімейства IBM S/390 [MAK97]. Блок-схема такого комплексу зображена на рис. 2.5. У сімейство входять