- •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. Використання мови оккам для рішення завдань системного програмування
- •Контрольні запитання
- •Рекомендована література
8. Масиви
У мові Оккам є тільки одна структура даних - одномірні масиви. У програмах на цій мові можна описувати масиви констант, змінних і каналів. Також є можливість працювати й з масивами процесів.
Масив змінних описується константним виразом у квадратних дужках після імені змінної.
VAR ім'я_масиву [константний_вираз]:
Цей запис означає, що декілька змінних (їхнє число дорівнює значенню константного виразу) описані й тепер на них можна посилатися за допомогою індексних виразів. Слід зазначити, що перша змінна в ряді має індекс 0, а остання — значення константного_виразу -1. Наприклад:
VAR a [9]:
Цей опис визначає дев'ять змінних, які позначаються як а[0], а[1], а[2], ..., а[8], або
DEF n = 3:
VAR a [n*n], k [n]:
Цей опис також визначає дев'ять змінних а[0], a[l], а[2],..., а [8] і три змінні k[0], k[l], k[2]. Аналогічно описують масиви каналів:
CHAN north.south [12]:
або
DEF n = 3:
CHAN north.south [(n + l) * n]:
Масив констант називають таблицею (TABLE) і записують у такий спосіб:
DEF ім'я_та6лицы = TABLE [константний_вираз.0,
константний_вираз.1,
…
константний_вираз.N ]
Вибірка з таблиць конкретних констант реалізується за допомогою індексних виразів, наприклад:
VAR x:
DBF PIO = TABLE [1,3,4,2]:
SEQ
stateIn ? x
PIOOut ! PIO [x]
Змінна x повинна бути в діапазоні цілих чисел від 0 до 3. Нехай змінна х одержала значення 2, тоді в канал PIOOut буде відправлена константа 4.
У випадку, коли значення являють собою символи, їхнім необхідним діапазоном значень є 0 ... 255, тобто байт. Мова Оккам дозволяє щільно впаковувати в пам'яті подібні значення. Масив змінних або констант, кожна з яких займає один байт, описується за допомогою додаткового зарезервованого слова BYTE, яке ставиться після відкриваючої квадратної дужки при описі масиву. Слід зазначити, що нульовий байт байтового масиву або нульове слово масиву слів в Оккам-програмах можуть містити число елементів у даному масиві. Наприклад:
VAR buffer [BYTE 80]:
У програмах мовою Оккам можна використовувати рядки символів, які повинні виділятися подвійними лапками:
SEQ
buffer := "Occam's razor"
Рядок символів можна використати скрізь, де необхідні байтові табличні вирази, при цьому кількість символів у рядку автоматично обчислюється й записується в нульовому байті, а самі символи нумеруються, починаючи з одиниці.
Для опису деякого рядка в таблиці на місці першого (нульового) байта необхідно записати константу, що задає число символів у рядку, а потому послідовно записати байти, що містять самі символи. Наш рядок в описі таблиці буде виглядати так:
DBF prompt = TABLE [BYTE 13, 'O', 'c', 'c', 'a', 'm', '*”, 's','*s', 'r', 'a', 'z', 'o', 'r']:
Для запису складних строкових констант використовуються трохи "зірочних" послідовностей: для позначення пробілу '*s', для повернення каретки '*с', для переходу на новий рядок '*n', для позначення лапок і подвійних лапок *' і *” і для позначення самої зірочки **.
У нашому прикладі prompt - байтовий масив; значенням prompt [BYTE 5] є число 109, що відповідає коду ASCII для позначення символу m, що є п'ятим символом у слові "Occam" і шостим по порядку в байтовому рядку, що містить це слово.
Рядок символів можна визначити й іншим способом:
DEF prompt = “Occam*'s*srazor”:
У цьому випадку значення prompt [BYTE 5] також дорівнює 109, а prompt [BYTE 0] містить 13.