
- •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).
Нехай процес-джерело генерує дані недетерміновано й у середньому з такою швидкістю, що масив оброблених елементів встигає їх всі обробити без втрат. Однак існуючі флуктуації потоку даних можуть призвести до некоректної обробки.
Рис.2
Рис. 3
3. Мовні засоби для програмування в реальному масштабі часу
У багатьох випадках, наприклад при програмуванні пристроїв вводу-виводу, необхідно, щоб програміст мав можливість порівнювати або вимірювати відрізки часу. Це дозволяє програмувати коректні протоколи обміну даними, що перешкоджають втратам інформації в мережах, а також будь-які інші керуючі процеси, що працюють у темпі зі змінами, що відбуваються в навколишнім середовищі.
У мові Оккам є два процеси-примітиви для програмування завдань у реальному часі: запис у локальну змінну показання годин і затримка виконання програми на певний часовий інтервал.
Процес запису показань годин виглядає в такий спосіб:
TIME ? змінна
Цей процес привласнює змінній змінна поточне значення локального часу процесора в тактах. Як і всі значення змінних або виразів у програмах мовою Оккам, показання таймера займає одне машинне слово. Таймер пробігає в зростаючому порядку всі можливі значення, які представлені в цьому слові, причому після самого старшого значення йде саме молодше й т.д.
Відзначимо, що зарезервоване слово TIME ? не є процесом-примітивом введення в буквальному значенні цього слова, а слово TIME - ім'ям каналу. Компілятор з мови Оккам розглядає послідовність символів TIME ? як атомарну лексему (ієрогліф) мови. На відміну від звичайного каналу, що зв'язує тільки два процеси, з "каналу" TIME ? мають право зчитувати показання годин всі процеси, що становлять програму мовою Оккам. Однак слід зазначити, що при багатопроцесорному виконанні програми показання локальних годин процесорів у той самий момент можуть відрізнятися друг один від одного.
Другий процес-примітив, що забезпечує програмування завдань у реальному масштабі часу, є процесом затримки виконання по локальних годинах:
TIME ? AFTER вираз
Цей процес подібно процесу-примітиву SKIP теж нічого не робить, але на відміну від нього доти, доки показання таймера не стануть більшими або дорівнюватимуть (залежно від конкретної реалізації) значенню виразу вираз. Після цього процес-примітив затримки виконання програми по годинах закінчується.
Послідовність символів TIME ? AFTER, так само як і TIME ?, є зарезервованим ідентифікатором мови Оккам. Правила цієї мови дозволяють використати даний процес-примітив (крім випадків звичайного використання будь-яких процесів-примітивів) як сторожовий процес у конструкторі ALT. Такий сторож буде готовий, як тільки закінчиться процес затримки виконання програми по годинах.
Наприклад, використання в якості сторожа процесу-примітива затримки дозволяє обмежити час очікування введення інформації з каналу зв'язку.
DEF timeout = 1:
DEF second = 1234 : - кількість тактів у секунді
CH AN screen AT 1:
CHAN keyboard AT 2:
VAR val, ch:
SEQ
output.string (screen, "Чекаю відповіді протягом 30 секунд")
TIME ? val
ALT
keyboard ? ch
to.program ! ch
TIME ? AFTER val + (30 * second)
to.program ! timeout
У цьому прикладі може здійснитися введення символу із клавіатури дисплея й пересилання його в програму протягом 30 с. Якщо ж цього не відбулося, у канал to.program посилає значення константи timeout.
Тепер, допустимо, необхідно запрограмувати процес, що включає й виключає деякий пристрій кожні 10 с.
DEFsecond = 1234: - кількість тактів у секунді
CHAN device.on, device.off:
VAR started, flipflop:
SEQ
flipflop := TRUE
WHILE TRUE
SEQ
TIME ? started
TIME ? AFTER started + (10 * second)
IF
flipflop
device.on ! ANY
TRUE
device.off ! ANY
flipflop := NOT (flipflop)
Число 1234 в оголошенні константи second - довільне й залежить від мікропроцесора, на якому виконується програма. Якщо час затримки виконання процесу більше числа представлених в одному слові тактів, використовується ієрархія лічильників секунд, хвилин, годин, доби й т.д., яку організує вже сам програміст.
DEF second = 1234: -кількість тактів у секунді
DEF minute = 60 * second: - кількість секунд у хвилині
DEF hour = 60 * minute: - кількість хвилин у годині
CHAN device.on, device.off:
VAR started, flipflop:
SEQ
flipflop := TRUE
WHILE TRUE
SEQ
TIME ? started
TIME ? AFTER started + (10 * hour) + (15 * minute)
IF
flipflop
device.on ! ANY
TRUE
device.off ! ANY
flipflop := NOT(flipflop)
У цьому прикладі деякий пристрій включається й вимикається вже кожні 10 - 15 хв.