- •4. Використання комп’ютерів в економіці, науці та техніці.
- •8. Структурні схеми комп’ютерів різних поколінь
- •11. Види архітектур комп’ютерів.
- •13. Мікропрограмна реалізація комп’ютерів.
- •14. Багаторівнева організація еом.
- •15.Багатопроцесорна архітектура
- •16.Матричные микропроцессоры
- •24. Архітектура Intel.
- •26. Канальна архітектура
- •40. Організація системи вводу - виводу.
- •41. Контролер вводу – виводу.
- •42.Програмно - керований обмін інформацією між пристроями комп’ютера.
- •45.Апаратні інтерфейси комп’ютера
- •46. Синхронізація в апаратних інтерфейсах комп’ютера. Функції контролера переривань.
- •47. Топологія апаратних інтерфейсів комп’ютера. Особливості реалізації сучасних апаратних інтерфейсів комп’ютера
- •48. Ввід/вивід аналогової інформації. Ввід/вивід дискретних сигналів.
- •53.Введення до іменованих конвеєрів
- •54. Ідея конвеєра команд та вигода від нього, причини збоїв в конвеєрі.
- •55. Ячейки, адреси, машинні слова, розряди, біти, байти.
- •57.Представлення чисел в форматі з фіксованою точкою (представлення беззнакових чисел, представлення знакових чисел в прямому та допоміжному кодах).
- •58. Особливості складання та віднімання цілих чисел (на прикладі персонального комп’ютера - пк).
- •59. Представлення чисел в форматі з плаваючою точкою (на прикладі пк).
- •60. Кодування ascii (American Standart Code for Information Interchange) та стандарт Unicode. Кодування українського тексту (Windows-1251, koi8 та ін.,.
- •64. Типові схеми постійно запам’ятовуючих та оперативно запам’ятовуючих пристроїв комп’ютерів.
- •66. Системні плати, склад, характеристики та порівняння.
- •67.Дискова память,сегмент та зміщення
- •68. Регістри компю’терів
- •69. Контролери комп’ютерів.
- •72. Організація буфера клавіатури.
- •73. Звукові карти та мультимедійні системи.
- •74. Системи охолодження та вентиляції.
- •75. Монітори та їх характеристика.
- •76. Принтери та їх характеристика.
- •77. Сканери та їх характеристика.
- •78. Пристрої управління та їх характеристика (миш, клавіатура, джойстик та ін.).
- •79. Накопичувачі та їх характеристика (fdd, hdd ).
- •80. Накопичувачі та їх характеристика (cd-r, cd-rw, dvd rom, dvd ram, Zip).
- •81. Накопичувачі та їх характеристика (магнітно-оптичні змінні пристрої, флеш-пам’ять та ін.).
- •82. Пристрої зв’язку (модеми, факс-модеми та ін. ).
- •83. Структура таблиці розміщення файлів на магнітних дисках. Типи файлів (імена, формати, розширення) та їх структура.
- •84 Структура даних на носіях інформації
- •4.1 Структура даних на магнітному диску
- •88. Адресация данных и команд.
- •89. Універсальність комп’ютерів: принцип фон-Неймана; гарвардський принцип.
- •92. (Модульний принцип побудови, масштабованість, сумісність програмного забезпечення. Орієнтування на клас задач. Модернізованість.
- •93. Вибір основних складових комп’ютера: процесор, чипсет, тип та об'єм озп, материнська плата, відеокарта, диск, монітор.
- •94. Вибір периферійних пристроїв комп’ютера: сd, dvd, сd-r, cd-rw, флеш-пам’ять.
- •95. Вибір периферійних пристроїв комп’ютера: принтер, сканер, мультимедіа.
- •96. Вибір периферійних пристроїв комп’ютера: модем, факс-модем та ін.
- •97. Перевірка архітектури комп’ютера та його складових. Методи та засоби.
- •98. Тестування та перевірка: оперативної та дискової пам’яті комп’ютера.
- •102. Тестування та перевірки: модема та факс - модема.
- •104. Дайте визначення та охарактерізуйте категорії регістрів
- •107. Визначить функції команди int в Асемблері. Переривання в Асемблері.
- •108. Макроозначення та функції в Асемблері. Макроозначення Invoke.
- •109. Змінні в Асемблері. Їх розміщення.
- •110. Особливості Асемблера в Windows. Створення вікон.
- •112.Опишіть технологію компіляції програм на Асемблері.
- •116. Еом .Характеристики апаратних засоби зберігання й обробки інформації .
- •118. Системний блок персонального комп'ютера- характеристика.
- •119. Апаратні засоби пк
- •120. Процесор (центральный процесор (цп) пк
- •121. Оперативна пам'ять пк та її характеристики.
- •122. Статична пам'ять (sram) у сучасних пк та її характеристики
- •123. Динамічна пам'ять (dram) у сучасних пк та її характеристики
- •126. Постановка задачі . Етапи.
- •127. Які етапи містить наукова постановка задачі
- •128. Характеристика , визначення й опис вхідної/вихідної інформації в постановці задачі.
- •129. Визначення та аналіз разработки алгоритму/алгоритмів рішення задачі.
- •130. Що визначає опис технологічного процесу обробки даних задачі.
- •Характеристика програм, комплексів програм та систем (Приклади)
- •Документування программ
- •Що визначає надійність программного забезпечення(программных средств).
- •Що визначає ефективність технічних засобів.
- •Що визначає ефективність програмних засобів
- •Етапи підготовки програми.
- •137. Модульна структура побудови програмного забезпечення та її характеристики
- •138. Етапи підготовки програм та комплексів программ.
- •140. Агоритми.- характеристика, призначення, функції, принципи побудови.
53.Введення до іменованих конвеєрів
Linux Journal. Andy Vaught on Sun
Передмова
Невеличкий опис іменованих конвеєрів.
Однією з найкорисніших фундаментальних властивостей Unix (у тому числі й Linux) є конвеєри. Конвеєри уможливлюють зв'язок між процесами, котрі не призначались спеціально для такої взаємодії. А це дозволяє знаряддям з досить вузьким колом функцій комбінуватись у різні способи для виконання складніших завдань.
Прості приклади
Простий приклад використання конвеєра:
ls | grep x
Оболонка bash, перевіряючи командний рядок, знаходить вертикальну риску |, що розділює дві команди, після чого, як і інші оболонки, запускає обидві команди, під'єднуючи вивід першої команди до вводу другої. Програма ls видає список файлів у поточному каталозі, тоді як grep читає вивід ls й видруковує лише ті лінії, які містять x.
Наведений приклад, відомий більшості користувачів Unix, є так званим "неназваним конвеєром". Такий конвеєр існує лише в ядрі й недоступний для процесів, що його створили — в даному випадку це оболонка bash. Кому невідомо: головний процес — це перший процес, створений програмою. Він може, в свою чергу, створювати підпроцеси.
Іншим різновидом конвеєрів є іменовані конвеєри, які іноді також називаються FIFO. FIFO походить від "First In First Out" і посилається на властивість упорядкування данних, коли перші байти що надійшли у пам'ять, будуть також першими байтами які буде з неї вилучено. Ім'я іменованого конвеєра є дійсною назвою файла у файловій системі. Конвеєри виводяться командою ls так само як і решта файлів і кількома невеликими відмінностями:
% ls -l fifo1
prw-r--r-- 1 andy users 0 Jan 22 23:11 fifo1|
Буква p у лівій частині виводу вказує на те що fifo1 є конвеєром (pipe). Решта бітів дозволу вказують на те хто може читати або записувати до конвеєра, так само як і решта звичайних файлів. На системах із сучасною ls, знак | в кінці назви файла буде додатковою підказкою, а на Лінукс системах із опцією кольорового виводу консолі, fifo1| буде також видрукувано червоним за замовчуванням.
(Ваш вивід може відрізнятися від наведеного вище, звичайно).
У старших Лінукс системах, іменовані конвеєри утворюються за допомогою mknod програми, як правило розміщеної у /etc директорії. На більш сучасних системах, mkfifo є стандартною утилітою для цього. Програма mkfifo бере один або більше назв файлів як аргументи і утворює конвеєри із цими під цими назвами. Наприклад, щоб створити імeнований конвеєр під назвою pipe1, запустіть команду:
mkfifo pipe1
Найпростіший спосіб демонстрації як іменовані конвеєри працюють, це за допомогою прикладів. Скажімо, ми створили pipe1, як було показано вище. У другій віртуальній консолі, назвемо її консоль 1, введіть:
ls -l > pipe1
тепер відкрийте ще одну консоль, назвемо її консоль 2, і скомандуйте:
cat < pipe1
Вуаля! Вивід команди що була запущена у першій консолі буде показано в другій. Зауважте що порядок у якому ви запустите команди не має значення, так команда cat у другій консолі зачекає на ls першої.
Ви, напевне помітили, що перша команда, запущена вами ніби підвисає. Це відбувається тому що другий кінець конвеєра не є ще під'єднаним, тож ядро відкладає завершення перший процес доти, доки другий процес відкриє конвеєр. У Юнікс жаргоні, говорять що процес блоковано, оскільки він очікує щоб щось сталося.
Одне з дуже корисних застосувань іменованих конвеєрів, це можливість комунікації зовсім різних програм. Так, скажімо, програма яка обслуговує якісь запити (друкування файлів, доступ до бази даних, тощо) може відкрити конвеєр для читання. Потім інший процес міг би робити запити, відкривши конвеєр і пишучи туди команди. Тобто "сервер" може виконувати завдання для клієнта. Блокування теж можливе, якщо клієнт нічого не записує, а сервер не читає.
Схиблені конвеєри
Створіть два іменованих конвеєра pipe1 та pipe2. Введіть команди:
echo -n x | cat - pipe1 > pipe2 &
cat < pipe2 > pipe1
Нічого не відбудеться, з першого погляду, на екрані нічого не з'явиться, але якщо ви запустите top (подібну ps команду для відображення статусу процесів), то ви побачите що обидві cat програми неначе схибились, забираючи всі ресурси і копіюючи літеру x вперед і назад у нескінченному циклі. Після того як ви притиснете Ctrl+C щоб вийти із циклу, ви можете отримати повідомлення "broken pipe". Ця помилка виникає коли присутній процес що записує у конвеєр і процес що процес що зчитує з конвеєра раптом закриває свій кінець. Оскільки читач зник, дані не мають куди йти. При нормальних обставинах, пишучий кінець закінчить запис і закриє конвеєр, читач побачить EOF (End Of File) і теж припинить роботу.
Поява "broken pipe" помилки у великій мірі залежить від того у який саме момент ви притиснули Ctrl-C клавіші. Якщо друга cat тільки-но прочитала x, натискання Ctrl-C зупинить другий cat, pipe1 буде закрито і перша cat без помилок закінчить свою роботу. На противагу, якщо другий cat очікує на перший щоб той записав x, Ctrl-C призведе до закриття pipe2 до того як перша cat зможе записати туди, це видасть повідомлення про помилку. Цей тип поводження, загалом, відомий як стан перегону (race condition).
Заміна команд
Bash використовує іменовані конвеєри у дуже вмілий спосіб. Згадайте, що стається коли ви включаєте команду в круглі дужки, команда буде запущена у підоболонці, тобто оболонка клонує сама себе і клон інтерпретує команди в дужках. Ми можемо вносити декілька команд в дужки, всі вони будуть інтерпретовані підоболонкою:
(ls -l; ls -a) > ls.out
Запише вивід обох команд у ls.out файл.
Заміна команд відбувається коли ви добавляєте < або > спереду лівої дужки. Наприклад, запуск команди:
cat <(ls -l)
призведе до того що команда ls -l буде виконана у підоболонці, як завжди, але вивід буде перенаправлено до тимчасового іменованого конвеєру, який bash створить, дасть йому назву і видалить пізніше. В результаті cat отримує чинний файл який вона може читати, і ми бачимо вивід ls -l, навіть якщо це вимусило до одного зайвого кроку щоб його отримати. Аналогічно, запуск >(команда) призведе до створення bash тимчасового конвеєру з назвою, з якого команди всередині дужок будуть читати, отримувати свій ввід.
Якщо ви хочете побачити чи дві директорії включають ті самі назви файлів, запустіть єдину команду: cmp <(ls dir1) <(ls dir2)
Програма порівнювання cmp, побачить назви двох файлів, точніше двох іменованих конвеєрів які bash автоматично створить, і прочитає і порівняє їх.
Заміна команд також робить tee утиліту (використовується для проглядання та збереження змісту виводу команд) набагато кориснішою у тому що дозволяє один потік вводу бути прочитаним багатьма "читачами" без необхідності у тимчасових файлах - bash виконає всю роботу за вас. Команда:
ls | tee >(grep foo | wc > foo.count) \
>(grep bar | wc > bar.count) \
| grep baz | wc > baz.count
лічить кількість повторювань foo, bar та baz у виводі ls та записує цю інформацію у три різні файли. Заміни команд можуть навіть гніздитись:
cat <(cat <(cat <(ls -l)))
працює дуже-дуже обхідним шляхом щоб перечислити зміст теперішньої директорії.
Як ви бачите, якщо неіменовані конвеєри дозволяють поєднувати прості команди, іменовані конвеєри із допомогою bash, дозволяють створення цілих розгалужень конвеєрів. Можливості тут обмежуються тільки вашою уявою.
КОНВЕЄР КОМАНД - апаратна структура в обчислювальних пристроях ЕОМ, призначена для прискорення виконання машинних команд шляхом суміщення певних стадій їх виконання в часі.
Елементарний конвеєр
В основі концепції конвеєризації обчислень є твердження про те, що процес обробки машинної команди можна розбити на декілька практично незалежних етапів, які потім можна суміщати в часі для декількох команд в відповідній апаратурі (конвеєрі команд).
Загальноприйнятим в теорії конвеєрних структур є така послідовність етапів:
Вибірка (instruction fetch, IF) - завантаження нової команди з пам'яті
Декодування (instruction decode, ID) - інтерпретація та відправка команди у відповідний операційний пристрій в залежності від різновиду операції
Виконання (execution, EX) - виконання команд та обчислення ефективної адреси пам'яті для результату або операндів, які необхідно завантажити
Звертання до пам'яті (memory, MEM) - виконання операцій з пам'яттю (для команд завантаження/збереження)
Збереження результату (writeback, WB) - збереження результату обчислень в регістрі
Слід зазначити, що така структура є типовою для RISC-архітектур, семантика та кількість етапів в яких зазвичай не дуже відрізняється від наведених, тоді як в CISC-архітектурах конвеєр може бути набагато складнішим.
В процесі виконання команд в конвеєрі, відбувається суміщення вказаних етапів виконання для декількох команд (тобто в конвеєрі одночасно знаходяться декілька - до 5 в даному випадку) команд на різних стадіях. Кожний етап конвеєрного обчислення виконується за один машинний цикл. Зрозуміло, що виконання однієї окремої команди на послідовному процесорі (де команда виконується зразу за один машинний цикл) може бути швидшим, аніж в конвеєрній організації. Але за рахунок суміщення виконання різних команд загальна швидкодія істотно збільшується.
Класифікація
Спочатку визначимо декілька понять:
Пропускна здатність - максимальна кількість команд, які виконуються за один такт машинного часу (instructions per cycle, IPC)
Тривалість етапу (стадії) - кількість машинних циклів для виконання одного етапу конвеєрного обчислення (може бути різною для різних етапів)
Необхідний (максимальний) ступінь паралелізму - кількість (незалежних) команд, які потрібно завантажити в конвеєр для повного використання його потенціалу
Найпростіший (класичний) конвеєр
Характеристики пристрою:
Пропускна здатність = 1 IPC
Тривалість стадії = 1 цикл
Необхідний (максимальний) ступінь паралелізму = 1 команда
Суперскалярний конвеєр
Характеристики пристрою:
Пропускна здатність = n IPC (=3 IPC на малюнку)
Тривалість стадії = 1 цикл
Необхідний (максимальний) ступінь паралелізму = n команд (=3 на малюнку)
Як бачимо, в тому випадку, коли тривалість всіх стадій є однаковою, пропускна здатність суперскалярного конвеєра в n разів вища за звичайний. Однак для повного завантаження та максимальної ефективності необхідно, щоби на кожному циклі роботи він був завантажений n командами, які можуть виконуватись незалежно одна від одної. Така вимога істотно обмежує ефективність суперскалярного конвеєра, адже ступінь схованого паралелізму звичайних послідовних програм, зазвичай, є не дуже високою і в середньому обмежена числами близько 2.5-3 IPC, хоча на окремих класах задач може бути істотно вищою. Подальше збільшення рівня паралелізму потребує вже зміни самої парадигми програмування.
VLIW-конвеєр
Пропускна здатність = n IPC (=3 IPC на малюнку)
Тривалість стадії = 1 цикл
Необхідний (максимальний) ступінь паралелізму = n команд (=3 на малюнку)
З малюнку легко бачити, що базові параметри VLIW-конвеєра повністю співпадають з такими для суперскалярного конвеєра (хоча що стосується реальних, а не теоретичних, показників IPC, то вважається що спеціальні інструменти VLIW-процесорів для виявлення схованого паралелізму послідовних програм є більш оптимістичними, аніж суперскалярний підхід). VLIW-процесори апаратурно є набагато простішими, аніж суперскалярними, і це можна бачити з конфігурації конвеєра. Тут підготовка до виконання цілого комплексу команд, упакованих в довге командне слово, на стадії EX відбувається одночасно (пакування відбувається ще на етапі компіляції програми), тоді як в звичайному суперскалярному процесорі кожна команда проходить усі стадії окремо.
Суперконвеєр
Припустимо, що деякі з вказаних нами етапів типового 5-стадійного конвеєра в свою чергу також допускають розбиття на більш елементарні "суперстадії" (на малюнку таке розбиття показане сірими лініями). Тоді стає можливим зменшення тривалості машинного циклу за рахунок того, що кожна з таких "елементарних" стадій може виконуватись швидше аніж "звичайна", а в результаті проміжок часу (вимірюваний одним машинним циклом) між виходом оброблених команд з конвеєра зменшується. В теоретичній моделі з малюнку, де кожна зі "звичайних" стадій розбита на 4 "суперстадії", отримаємо 4-кратний приріст швидкодії за умови, що кількість часу на виконання "звичайної" стадії залишається незмінною. Таким чином, в загальному випадку для (не суперскалярного) суперконвеєра, в якому кожній "звичайній" стадії відповідає m "суперстадій" (елементарних стадій):
Пропускна здатність = 1 IPC, але тривалість циклу 1/m в порівнянні зі звичайним конвеєром
Тривалість стадії = 1 цикл для "суперстадії", або m циклів для кожної "звичайної стадії"
Необхідний (максимальний) ступінь паралелізму = m команд
Однак нескінченно дрібнити стадії конвеєра та підвищувати таким чином тактову частоту неможливо. Довгі конвеєри стають вкрай неефективними при виконанні команд, які змінюють хід виконання програми (тобто команд умовних та безумовних переходів). Ці команди за певних умов призводять до необхідності повного перезавантаження конвеєра, а чим більше стадій, тим більше часу для цього необхідно.
Суперскалярний суперконвеєр
Поєднання принципів суперскалярного виконання (тобто повністю паралельного виконання декількох команд) та суперконвеєрного виконання (тобто подрібнення базових стадій конвеєра) дає організацію, яка сьогодні досить популярна серед архітекторів швидкодіючих мікропроцесорів. В таких структурах:
Пропускна здатність = n IPC, але тривалість циклу 1/m в порівнянні зі звичайним конвеєром
Тривалість стадії = 1 цикл для "суперстадії", або m циклів для кожної "звичайної стадії"
Необхідний (максимальний) ступінь паралелізму = m*n команд