- •7.091501 – Комп’ютерні системи та мережі
- •7.091503 – Спеціалізовані комп’ютерні системи
- •7.091501 – Комп’ютерні системи та мережі
- •7.091503 – Спеціалізовані комп’ютерні системи
- •2. Надійність і відмовостійкість
- •3. Масштабованість
- •4. Сумісність і мобільність програмного забезпечення
- •5. Класифікація комп'ютерів по галузям застосування Персональні комп'ютери та робочі станції
- •Сервери
- •Мейнфрейми
- •Кластерні архітектури
- •Контрольні запитання
- •Тести tpc
- •2. Тест tpc-a
- •3. Тест tpc-b
- •4. Тест tpc-c
- •5. Майбутні тести tpc
- •2. Архітектура системи команд. Класифікація процесорів (cisc і risc)
- •3. Методи адресації та типи даних Методи адресації
- •4. Типи команд
- •5. Команди керування потоком команд
- •6. Типи й розміри операндів
- •2. Найпростіша організація конвеєра й оцінка його продуктивності
- •3. Структурні конфлікти й способи їхньої мінімізації
- •4. Конфлікти за даними, зупинка конвеєра й реалізація механізму обходів
- •5. Класифікація конфліктів за даними
- •6. Конфлікти за даними, що призводять до призупинки конвеєра
- •7. Методика планування компілятора для усунення конфліктів за даними
- •Контрольні запитання
- •2. Зниження втрат на виконання команд умовного переходу
- •Метод вичікування
- •Метод повернення
- •Затримані переходи
- •3. Статичне прогнозування умовних переходів: використання технології компіляторів
- •2. Обробка багатотактних операцій і механізми обходів у довгих конвеєрах
- •3. Конфлікти й прискорені пересилання в довгих конвеєрах
- •4. Підтримка точних переривань
- •Контрольні запитання
- •2. Паралелізм рівня команд: залежності й конфлікти за даними
- •Залежності
- •3. Паралелізм рівня циклу: концепції та методи
- •4. Основи планування завантаження конвеєра й розгортання циклів
- •Контрольні запитання
- •2. Динамічна оптимізація із централізованою схемою виявлення конфліктів
- •2. Подальше зменшення зупинок по керуванню: буфера цільових адрес переходів
- •Контрольні запитання
- •Процесор з архітектурою 80x86 і Pentium.
- •Особливості процесорів з архітектурою spark компанії Sun Microsystems.
- •Процесори pa-risc компанії Newlett-Packard
- •2.Особливості процесорів з архітектурою sparc компанії Sun Microsystems
- •Процесори pa-risc компанії Hewlett-Packard
- •Контрольні запитання
- •Процесор mc88110 компанії Motorola.
- •Особливості архітектури mips компанії mips Technology.
- •Особливості архітектури Alpha компанії dec.
- •Особливості архітектури power компанії ibm і power pc компанії Motorola, Apple і ibm.
- •2.Особливості архітектури mips компанії mips Technology
- •3.Особливості архітектури Alpha компанії dec
- •4.Особливості архітектури power компанії ibm і PowerPc компаній Motorola, Apple і ibm
- •Архітектура power
- •Еволюція архітектури power у напрямку архітектури PowerPc
- •Процесор PowerPc 603
- •Контрольні запитання
- •Термінологія в області паралельної обробки .
- •Питання створення програмного забезпечення.
- •Ахітектура паралельної обробки.
- •2.Питання створення програмного забезпечення.
- •1) Язикові розширення.
- •2) Розширення компіляторів.
- •3) Додавання нового язикового рівня.
- •4) Нова мова.
- •3.Архітектура паралельної обробки.
- •4.Елементи теорії конкурентних процесів. Події та процеси
- •Особливості мов конкурентного програмування
- •Моделі конкурентних процесів
- •Взаємодія процесів, синхронізація й передача даних
- •2. Внутрішня архітектура трансп’ютера
- •3. Послідовна обробка
- •Регістри трансп’ютера
- •4. Інструкції
- •Безпосередні функції
- •Непрямі функції
- •Ефективність кодування
- •5. Підтримка паралелізму
- •6. Зв'язок
- •Лінії зв'язку
- •7. Таймер
- •8. Альтернативне виконання
- •9. Інструкції із плаваючою крапкою
- •Контрольні запитання
- •2. Найпростіші процеси-примітиви
- •3. Послідовні процеси-композиції
- •4. Паралельні процеси
- •5. Канали зв'язку
- •6. Конструктор альтернативного процесу
- •7. Описи
- •8. Масиви
- •9. Оголошення процесів
- •10. Цикли і масиви процесів
- •Контрольні запитання
- •2. Структури програмування
- •Прості паралельні процеси
- •Синхронізація за допомогою керуючих сигналів
- •3. Мовні засоби для програмування в реальному масштабі часу
- •4. Використання мови оккам для рішення завдань системного програмування
- •Контрольні запитання
- •Рекомендована література
2. Найпростіші процеси-примітиви
Їх два: SKIP і STOP.
SKIP - процес, що нічого не виконує, але благополучно закінчується.
STOP так само нічого не робить, але побуджує виняткову ситуацію, що викликає передчасне закінчення OKKAM-програми.
3. Послідовні процеси-композиції
У послідовній програмі всі дії зводяться до умовних або безумовних обчислень деяких значень.
Обчислення значення виразів в Оккам-програмах виробляються у процесах-примітивах присвоєння виду:
Змінна := вираз
Щоб сформулювати мовою ОККАМ послідовний процес, необхідно написати ім'я конструктора послідовного процесу композиції – SEQ, а далі записати його підпроцеси – компоненти один під іншим з відступом стосовно SEQ у два пробіли. Якщо під зарезервованим словом SEQ не буде перебувати жодного процесу-компонента, послідовний процес-композиція буде поводитися так само як процес-примітив SKIP.
Наприклад: SEQ
a := 1
b := a + 7
a := d-11
SKIP
Умовні обчислення виразів реалізуються на основі умовного конструктора IF і списку процесів-компонентів, у кожного з яких є своя умова виконання. Кількість умов і відповідних їм процесів-компонентів в одному конструкторі IF теоретично не обмежено.
Процеси-компоненти записуються під своєю умовою з відступом у два пробіли і являють собою або процеси-примітиви, або процес-композиції.
При обробці конструктора IF умови проглядаються зверху вниз доти, доки не буде знайдена перша умова, що має значення “істина” у цей момент обчислення. Після цього виконується процес-компонент під цією умовою. Якщо жодна з умов конструктора IF не є істиною, процес-композиція, утворений за допомогою конструктора IF вироджується в процес-примітив STOP.
Наприклад IF
X < 0 X < 0
Y := 1 y:=1
X = 0 x = 0
Y := 0 y := 0
X > 0 TRUE
Y := -1 Y := 1
В останньому випадку, TRUE гарантує від дедлока, тобто виконується оператор STOP якщо не виконується жодна з умов.
4. Паралельні процеси
Для проектування процесів-композицій, для яких порядок виразів і дій не важливий, у мові передбачений конструктор паралельних процесів PAR.
Процес-композиція, утворений за допомогою PAR, закінчується, коли всі підпроцеси-компоненти цього процесу в довільному порядку закінчать свою роботу. Якщо конструктор PAR не має підпроцесів-компонентів, він вироджується в процес-примітив SKIP.
Якщо ж який-небудь із підпроцесів-компонентів не може закінчитися, не може закінчитися й весь процес-композиція. При цьому збуджується виняткова ситуація, що поширюється нагору по ієрархії процесів до кореневого процесу Оккам-програми, наприклад
PAR
a := b - 5.
d := b + 1
Процес встановлює значення для змінних a і d. Порядок виконання цих процесів-компонентів неважливий. Ще приклад:
PAR
a := b - 5.
b := a + 2
Тут результат непередбачений.
Деякі компілятори з мови ОККАМ розпізнають подібні ситуації й видають повідомлення про помилки, як ми вже зазначали, процеси мови ОККАМ можуть мати загальну пам'ять тільки для читання.
5. Канали зв'язку
Як механізм передачі повідомлень обрана синхронна модель. Вона будується на основі посередника з назвою “канал”. Кожний канал має унікальне ім'я й передає інформацію тільки в одному напрямку, і так само використовується тільки одним процесом-передавачем і одним процесом-приймачем.
Для передачі значення виразу через канал можна використати простий процес-примітив виводу:
channel ! expression або
ім'я_каналу ! вираз.
Символ “!” позначає вивід у канал. Для прийому значення з каналу в деяку змінну використовується процес-примітив введення:
channel ? variable або
ім'я_каналу ? змінна.
Символ “?” позначає введення значення змінної.
Зв'язок між процесами синхронний. Тому перший процес, що виконав одну із цих команд буде припинений доти, доки його не “наздожене” процес-контрагент, що виконує процес-примітив вводу-виводу. Як приклад розглянемо ОККАМ- реалізацію буфера даних.
SEQ
buffer.in ? x
buffer.out ! x
Цей процес має на увазі, що паралельно із ним функціонує хоча б один процес, що містить процес-примітив виводу в каталог з ім'ям buffer.in і процес-примітив введення з каналом з ім'ям buffer.out.
Для скорочення запису при прийманні або передачі складних структур даних в один канал можливий запис:
channel ? variable.1;variable.2; ...або
сhannel ! expression.1;expression.2;....
Ці записи еквівалентні наступним процесам-композиціям.
SEQ
channel ? variable1
channel ? variable2
…
SEQ
channel ! expression...1
channel ! expression.2
Розглянемо два паралельних процеси:
Р1 P2
SEQ SEQ
chan1 ! A chan1 ? X
chan2 ! B chan2 ?Y
Якщо Р1 починає виконуватися раніше Р2, то Р1 буде затриманий при спробі запису в chan1 значення вираз А. Р1 буде перебувати чекаючи доти, поки не стане виконуватися Р2, а це його процес-примітив прийому з каналу chan1 значення вираз А і запису його в змінну Х. При виконанні цього процесу-примітива Р2 звільняє з режиму очікування Р1 і сам попадає в цей режим при виконанні процесу-примітива виводу значення вираз Y у канал 2.
Р2 перейде зі стану очікування, коли процес Р1 передасть керування своєму процесу-примітиву введення через chan 2 значення Y c записом його в змінну В. Після цього обидва процеси Р1 і Р2 стають активними.
Модифікація цього приклада приведе програму в стан дедлоків.
P1 P2
SEQ SEQ
chan1 ! A сhan2 ! Y
сhan2 ? B chan1 ? X
Р1 не може запуститися доки Р2 не зчитає з каналу chan 1 значення вираз А, Р2 не може цього зробити поки не виконає операцію запису значення Y в chan 2.
Це класичний приклад дедлока в паралельній програмі.