Комп'ютерних наук і технологій
Комп’ютерна інженерія
Обчислювальні машини, комплекси, системи та мережі
Інформатика та обчислювальна техніка, спеціалізація
Обчислювальні машини, комплекси, системи та мережі, бакалаврат
Інформатика та обчислювальна техніка, спеціалізація
Обчислювальні машини, комплекси, системи та мережі, магістратура
Я, Святоха Артем Олександрович, народився 31 березня 1995 в місті Красний Луч, Луганської області. Вже з дитинства я виявляв цікавість до техніки, як це все влаштовано. При чому розібрати щось для мене, як зазвичай було помітно легше ніж зібрати це назад. Моїми улюбленими іграшками були різноманітні конструктори. Завдяки тому, що батько захоплювався електронікою у нього були різні радянські журнали на відповідну тематику, але навіть читаючи їх я все одно не розумів, що до чого, тому що не знав ніяких основ.
У 7 років я, як і всі діти, пішов у школу. У школі я вчився добре, але вже з перших класів з усіх предметів мені найбільше подобалася математика, пізніше до цього списку долучилася фізика і хімія. Також окремо від школи я захоплювався малюванням, але це було просто захоплення і професійно я цим ніколи не займався, в основному придумував і малював свої комікси. У 2011 році мені довелося перейти в іншу школу і саме в цей період я захопився програмуванням. Брав участь в різних олімпіадах.
Коли я вчився в 8-9 класі я почав відвідувати місцеву бібліотеку і читати різні книги (в основному радянські), пов'язані з комп'ютерною технікою і програмуванням, зокрема. Саме з них я дізнався про комп'ютерну логіку, про системи числення і про те, як працюють логічні елементи. З цим і пов'язаний мій вибір університету ДонНТУ, і напрямки комп'ютерної інженерії. По Україні цей університет вважається кращим з підготовки саме в цьому напрямку і мені захотілося вступити до нього.
Влітку 2013 року після здачі ЗНО я подав документи до ВНЗ і в підсумку надійшов на бюджет на очну форму навчання. Спочатку було складно, так як і навчання в школі і в університеті значно відрізняється.
В цілому завдяки чотирьом курсам в університеті мені вдалося поліпшити свої знання, а також придбати нові. Після отримання диплома бакалавра, мною було прийнято рішення продовжити навчання за обраною спеціальністю і в 2017 я успішно здав вступні іспити і вступив до магістратури.
Основна мета на даний момент успішний захист магістерської роботи і отримання диплома повної вищої освіти. У майбутньому планую розширювати свій кругозір, особливо в IT сфері, знайти роботу пов'язану з розробкою програмного забезпечення, а також почати розробляти свої власні проекти.
При написанні даного реферату магістерська робота ще не завершена. Остаточне завершення: червень 2019 року. Повний текст роботи та матеріали по темі можуть бути отримані у автора або його керівника після зазначеної дати.
З кожним роком зростає роль засобів обчислювальної техніки, при цьому всі компоненти обчислювальних систем розташовуються на інтегральних мікросхемах, не дозволяючи отримати доступ до окремих вузлів або елементів, ускладнюючи тим самим процес вивчення функціонування комп'ютерних систем і їх компонентів.
Глибоке розуміння принципів побудови і функціонування складних систем досягається лише при практичній роботі з такими системами або їх моделями. Навіть найдокладніше опис роботи з базовим цифровим пристроєм і детальні ілюстрації процесу виконання команд не можуть замінити дійсної роботи з цим пристроєм.
Дана проблема особливо актуальна в технічних вузах і для її вирішення розробляються спеціальні моделі: фізичні або функціональні[1], наочно демонструють представлення даних, виконання операцій, взаємодія з периферією з допомогою операцій вводу-виводу і системи переривань.
Для підтримки дисциплін апаратного напрямки потрібні моделі, які дозволяють розглянути конвеєрну обробку команд, спекулятивне виконання, кешування даних, а також різноманітні архітектури процесорних елементів, такі як: суперскалярна архітектура, VLIW, векторні процесори. Також додатково слід розглянути процес компіляції і оптимізації машинного коду, під різноманітні архітектури.
Сучасний світ вже складно уявити без обчислювальної техніки, а її основним компонентом все ще є процесорні елементи. Для технічних вузів особливо важливо готувати студентів з розумінням принципів роботи процесорів, принципів їх функціонування та різноманітності архітектур. Як не можна краще для цього підходять демонстраційні моделі, які наочно демонструють роботу того чи іншого компонента пристрою в певній ситуації, тобто навчальний матеріал може бути представлений більш ефективно.
Багаторівнева демонстраційна модель гіпотетичного комп'ютера дозволить наочно демонструвати роботу процесорних компонентів, їх взаємодія з пам'яттю, і іншими периферійними пристроями.
Ця магістерська робота присвячена розробці функціональної демонстраційної моделі, а також розробці компілятора для даної моделі і дослідженню способів оптимізації генерації машинного коду.
У результаті роботи планується розглянути різні процесорні архітектури, загальні процесорні технології, такі як конвеєрна обробка команда, спекулятивне виконання, передбачення переходів, кешування даних. Розробити функціональну демонстраційну модель, і оптимізуючий компілятор для неї.
Незважаючи на те, що на сьогоднішній день практично кожен електронний пристрій управляється мікропроцесорами, досить докладних демонстраційних моделей існує не так вже й багато. На даний момент існує безліч демонстраційних систем, які дозволяють освоїти базові принципи роботи процесорів та іншої периферії, але вони не розглядають такі аспекти роботи процесора як конвеєрна обробка команд, пророкування розгалужень, спекулятивне виконання, кешування даних. Тобто такі рішення підходять лише для початкових курсів вузів з технічною спрямованістю.
Здається, що на даний момент робота процесорів за довгі роки розвитку процесорів відточена до ідеалу. Але дослідження, проведені в середині 2017 року у надрах компанії Google у співпраці з іншими компаніями, показали, що всі процесори фірми Intel з 1995 року виробництва і процесори на архітектурі ARM мають апаратні вразливість[2]. Ця вразливість пов'язана зі спекулятивним виконанням команд і реалізацією сторінкової адресації пам'яті. Спекулятивне виконання дозволяє коду частково виконуватися, не чекаючи закінчення виконання попередніх команд, при цьому доступ до пам'яті при спекулятивному виконанні виконується незалежно від прав доступу, при цьому якщо відбувається промах по кешу, то дані будуть завантажені в кеш, після чого їх можна прочитати. Таким чином призначений для користувача код може отримувати і записувати дані в захищені області пам'яті. 4 січня 2018 року були проведені атаки, які використовували цю вразливість, їм дали назви Meltdown[3] і Spectre[4], після чого деталі уразливості були опубліковані.
Таким чином поглиблене розуміння архітектур і принципів роботи процесорів необхідно для виявлення і розуміння можливих помилок, щоб не допускати їх при проектуванні. Демонстраційна модель допоможе поліпшити процес навчання шляхом ширшого доступу та індивідуалізованого підходу до розгляду роботи процесорних елементів і роботи периферії.
Дейл Скриен розробив функціональну модель оточення для симуляції простих комп'ютерів CPU Sim[5]. Програма дозволяє студентам зрозуміти принципи комп'ютерної архітектури. Надає можливість симулювати роботу простих процесорів, або задати конфігурацію власного процесора зі своїм набором команд, які реалізуються за допомогою послідовності мікроінструкцій. Має здатність симулювати процесори різних архітектур, таких як заснованих на регістрі-акумуляторі, RISC або стекових машин.
MikroSim[6] – це освітня програма для апаратно-неспецифічного пояснення загального функціонування і поведінки віртуального процесора.
Пошук матеріалів по темі показав наявність публікацій на тему різних процесорних архітектур. Наприклад, архітектура POSTRISC[7] – архітектура, що йде на заміну RISC. Віртуальний навчальний процесор POSTRISC і розроблені для нього інструменти (асемблер, дизассемблер, емулятор) призначені для вивчення на цьому прикладі внутрішньої структури системних програм, таких як асемблери, дизасемблери, компоновщики, для вивчення алгоритмів зберігання внутрішніх даних ассемблеров і компіляторів (змішування і бінарний пошук), для вивчення і порівняльного аналізу різних середовищ виконання і характерних для них моделей виконуваних програм, для вивчення особливостей системного програмування для різних цілий евих машинних архітектур і для вивчення архітектурно-залежних аспектів прикладного програмування.
Була опублікована стаття на тему "Моделювання внутрішніх операцій процесорних елементів" в науковому журналі ДонНТУ "Інформатика і кібернетика", авторами якої явлются наші викладачі Мальчева Р.В. і Завадська Т.В. У статті виконано аналіз необхідності розробки демонстраційних навчальних і імітаційних моделей всередині процесорних операцій.
Суперскалярний процесор[10] – процесор, що підтримує так званий паралелізм на рівні інструкцій тобто, процесор, здатний виконувати декілька інструкцій одночасно за рахунок включення до складу його обчислювального ядра кількох однакових функціональних вузлів таких як АЛУ, FPU, умножитель, зрушує пристрій та інші пристрої. Планування виконання потоку інструкцій здійснюється динамічно обчислювальним ядром, а не статично компілятором.
Архітектура VLIW[9] (Very Long Instruction Word – «дуже довга машинна команда») відрізняються від традиційних архітектур RISC і CISC, реалізовану в сучасних масових мікропроцесорах. Важливо розрізняти архітектуру набору команд - програмна модель процесора - від реалізації (фізичний чіп і його характеристики). VLIW мікропроцесори і суперскалярні реалізації традиційних наборів команд мають деякі загальні характеристики - кілька виконавчих блоків і можливість виконувати кілька операцій одночасно. Так само, як RISC архітектури мають більш прості і дешеві високопродуктивні реалізації. Архітектура VLIW простіше, ніж CISC, і дешевше, ніж RISC. Через апаратних спрощень, VLIW архітектура, вимагає підтримки з боку компілятора.
Спекулятивне виконання[11] - це метод оптимізації, коли комп'ютерна система виконує деяку задачу, яка може не знадобитися. Робота виконується до того, як стане відомо, чи дійсно вона необхідна, щоб запобігти затримці, яка могла б виникнути при виконанні після того, як стало відомо, що вона необхідна. Якщо з'ясовується, що в кінці кінців робота не потрібна, більшість змін, внесених цією роботою, скасовуються, а результати ігноруються.
Роль обчислювальної техніки, з кожним роком зростає. Комп'ютери стають все складніше, відповідно і рівень підготовки фахівців в технічних вузах повинен зростати. І для досягнення необхідного рівня підготовки студентів дисциплін апаратурною спрямованості, в ході даної роботи буде розроблена багаторівневої моделі гіпотетичного комп'ютера наочно демонструють уявлення даних, виконання операцій, взаємодія з периферією за коштами операцій введення-виведення і системи переривань.
Багаторівнева модель дозволить розглянути конвеєрну обробку команд, спекулятивне виконання, кешування даних, а також різноманітні архітектури процесорних елементів, такі як: суперскалярна архітектура, VLIW, векторні процесори. Також буде розглянуто процес компіляції і оптимізації машинного коду, під різноманітні архітектури.