- •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. Використання мови оккам для рішення завдань системного програмування
- •Контрольні запитання
- •Рекомендована література
6. Конструктор альтернативного процесу
Логічні рішення в програмі так само можуть бути розподілені між декількома процесами за допомогою конструктора альтернативного процесу. Він аналогічний умовному конструктору, за винятком того, що вибір альтернативи може залежати від деякого процесу, що робить вивід.
Альтернативний конструктор формується за допомогою зарезервованого слова ALT, під яким приводиться список компонентів, що є альтернативами. Кожна альтернатива складається зі сторожа й альтернативного процесу.
Сторож може бути або процесом-примітивом введення, або процесом-примітивом SKIP. Таким сторожам можуть передувати логічні вирази, відділені від процесів-примітивів знаком амперсанта (&).
Логічні вирази виключають додаткові обмеження на виконання того або іншого альтернативного процесу.
Приклад:
PAR
…
червоний ! вираз.1
…
зелений ! вираз.2
…
ALT
обраний.червоний&червоний?Х
вивід ! Х
обрано зелений&зелений?Х
вивід ! Х
NOT (обран.червоний OR обран.зелений)& SKIP
вивід ! значення.по.умовчанню
Тут:
червоний, зелений, вивід - імена каналів
NOT (обран.червоний OR обран.зелений) обран.червоний; обран.зелений - логічні вирази;
обраний.червоний & червоний ? Х; обран.зелений & зелений ? Х; NOT(обран.червоний OR обран.зелений)& SKIP - сторожові процеси;
вивід ! Х; вивід ! значення.по.умовчанню - альтернативні процеси.
Процес-композиція ALT шукає у своєму списку сторожових процесів той, котрий у даний момент перебуває в стані готовності. Сторож, який складається з одного процесу примітива введення, готовий, коли в паралельно протікаючих процесах стає можливим вивід в канал з відповідним ім'ям.
Це в прикладі вивід у канал “червоний” або у канал “зелений”. Сторож SKIP готовий постійно.
Якщо сторожу передує логічний вираз, то для виконання альтернативного процесу потрібно крім готовності процесу-примітива введення ще й наявність істинності логічного виразу. Якщо одночасно готові декілька сторожів, тоді випадковим образом вибирається для виконання один з них. Виключенням є сторожовий процес, утворений за допомогою SKIP. Він перевіряється в останню чергу.
Після виконання одного з альтернативних процесів, процес-композиція ALT закінчується.
У конструкторі ALT для виконання вибирається не більше однієї альтернативи. Якщо ж один із сторожів не готовий, весь процес, утворений конструктором ALT упадає в дедлок і поводиться подібно процесу-примітиву STOP
7. Описи
Кожне ім'я в Оккам-програмах повинне бути описане до того, як воно буде використано. У мові Оккам є описи, які дозволяють іменувати константи, змінні й канали (а також процеси).
Описи констант не вводять у програму нових об'єктів, а лише дозволяють іменувати особливі для логіки програми значення (бітові зразки). Описи констант мають такий вигляд:
DEF ім'я_константи = константний_вираз:
Описи констант відділяються друг від друга комами. Рядок описів закінчується двокрапкою. Число рядків описів у програмі необмежено. Варто звернути увагу на те, що в правій частині опису констант можна записувати не тільки литерали, але й константні вирази, що дуже зручно при супроводі програмного забезпечення. Наприклад, визначимо ряд констант, які потім будемо використовувати в програмі системи автоматичного регулювання вуличних рухів:
DEF Nsgo = 0, Ewgo = 1, stop = 2, chToStop = 3:
Відзначимо, що константу stop у даному контексті можна визначити так:
DEF stop = NSgo + 1:
або
DEF stop = chToStop -1:
Перебуваючи в оточенні цих символічних констант, можна використати перевірку:
Dir = NSgo
або
current.state = stop
а не
dir = 0
де dir і current.state - деякі змінні.
Остання перевірка може бути незручна при змінах великої програми.
Змінні описуються в списку імен змінних після зарезервованого слова VAR перед процесом, у якому вони будуть використані. Імена змінних відділяються один від одного комами, а закінчується список імен двокрапкою. Наприклад:
VAR dir, current.state, running:
Спочатку змінні не мають певного значення, але після використання їх у лівій частині процесу-примітива присвоювання або як аргументи процесу-примітива введення вони одержують певне значення. Значення - це якась бітова послідовність, що змінні здатні зберігати доти, доки в них не будуть записані деякі нові значення.
Опису об'єктів програми можуть перебувати де завгодно, але до їхнього використання. Область видимості (локальності) об'єкта перебуває всередині процесу, перед яким він описаний, і у всіх його підпроцесах. Приклад взаємного розташування описів і процесів:
DEF Nsgo = 0, Ewgo = 1; stop = 2, chToStop = 3:
VAR dir, current.state, running:
SEQ
running := TRUE
current.state := NSgo
... - інша частина програми
Канали описуються так само, як і змінні, за винятком того, що їхній опис випереджається зарезервованим словом CHAN. Усюди, де зустрічається опис каналу, в області видимості цього опису повинне бути два паралельних процеси, один із яких виводить у канал значення виразу, а інший вводить через нього нове значення змінної. Ми не розглядаємо тут випадок, коли канали описані, але не використовуються. Звичайно канали описуються безпосередньо перед конструктором PAR. Ці зауваження дозволяють користувачеві уникнути багатьох випадків виникнення дедлока. Наприклад:
DEF NSgo = 0, EWgo = 1, stop = 2, chToStop = 3:
VAR dir, current.state, running:
SEQ
running := TRUE
current.state := NSgo
CHAN NSstate, EWstate, change:
PAR
change ? dir
SEQ
IF
dir = NSgo
NSstate ! Nsgo
... - інша частина програми
Область видимості змінних і каналів можна проілюструвати на прикладі:
CHAN input: — оголошення каналу input PAR — область
VAR x: — оголошення х — видимості
— (х - ціла змінна) — SEQ — область видимості— х := х + 1
…
input ! х
…
VAR х, а: - оголошення х -
- (х - логічна змінна) -
SEQ - область видимості -
input ? a
…
х := а<>0
…
Тут ім'я х позначає дві різні змінні. У першому процесі змінна x використовується для зберігання чисел (цілих значень), а в другому — для булевих значень. У всіх зображених процесах "видний" канал input.