РезюмеБиографияРефератБиблиотекаСсылкиОтчет о поискеИндивидуальный раздел
Фото магистра
Святоха Артём Александрович
Факультет: Компьютерных наук и технологий
Кафедра: Компьютерная инженерия
Специальность: Вычислительные машины, комплексы, системы и сети
Разработка многоуровневой модели гипотетического компьютера для поддержки дисциплин аппаратурной направленности
Научный руководитель: д.т.н., проф. Мальчева Раиса Викторовна
РезюмеБиографияРефератБиблиотекаСсылкиОтчет о поискеИндивидуальный раздел

Краткое резюме магистра

ФИО
Святоха Артём Александрович
Дата рождения
31.03.1995 г.
Место рождения
г. Красный Луч
Школа
2002-2011 гг – Общеобразовательная школа I–III ступеней №7
2011-2013 гг – Школа №4
ВУЗ
2013-2017 гг – Донецкий национальный технический университет, факультет Компьютерных наук и технологий, специальность Компьютерные системы и сети, бакалавриат
2017-2019 гг – Донецкий национальный технический университет, факультет Компьютерных наук и технологий, специальность Компьютерные системы и сети, магистратура
Средний балл
80(B)
Владение языками
Русский – в совершенстве;
Украинский – в совершенстве;
Английский – средний уровень.
Увлечения
Разработка ПО, рисование, монтаж видео
Личные качества
Пунктуальность, обучаемость, доброжелательность.
Профессиональные навыки
  1. Операционные системы:
    • Windows;
    • Linux (Ubuntu, Arch);
    • Mac OS X;
    • Android.
  2. Языки программирования:
    • Java;
    • C/C++, C#;
    • JavaScript;
    • Lua;
    • PHP;
    • SQL;
    • Assembler;
    • Haskell;
    • Lisp;
    • Pascal.
  3. Веб разработка:
    • HTML и препроцессоры Pug/Jade;
    • CSS и препроцессоры LESS/SASS/SCSS/Stylus;
    • NodeJS и NPM.
  4. Среды разработки ПО:
    • MS Visual Studio;
    • NetBeans;
    • Intellij Idea;
    • Android Studio;
    • MS SQL 2008 Management Studio;
    • Sublime Text, Brackets, Vim/NeoVim;
    • GIT.
  5. Специализированное ПО:
    • Adobe Photoshop;
    • Sony Vegas Pro;
    • Blender.
Планы на будущее
Успешная защита магистерской работы, разработка собственных проектов в сфере ПО
Контакная информация
e-mail: artemsvyatoha@gmail.com
телеграм: @artem8086
скайп: artem_8086

Биография

Личностное становление

Я, Святоха Артем Александрович, родился 31 марта 1995 года в городе Красный Луч, Луганской области. Уже с детства я проявлял интерес к технике, как это все устроено. При чем разобрать что-то для меня, как обычно было заметно легче чем собрать это назад. Моими любимыми игрушками были разнообразные конструкторы. Благодаря тому, что отец увлекался электроникой у него были различные советские журналы на соответствующую тематику, но даже читая их я все равно не понимал, что к чему, так как не знал никаких основ.

В 7 лет я, как и все дети, пошел в школу. В школе я учился хорошо, но уже с первых классов из всех предметов мне больше всего нравилась математика, позже к этому списку подключилась физика и химия. Также отдельно от школы я увлекался рисованием, но это было просто увлечение и профессионально я этим никогда не занимался, в основном придумывал и рисовал свои комиксы. В 2011 году мне пришлось перейти в другую школу и именно в этот период я увлёкся программированием. Принимал участие в различных олимпиадах.

Профессиональное становление

Когда я учился в 8-9 классе я начал посещать местную библиотеку и читать различные книги (в основном советские), связанные с компьютерной техникой и программированием, в частности. Именно из них я узнал про компьютерную логику, про системы счисления и про то, как работают логические элементы. С этим и связан мой выбор университета ДонНТУ, и направления компьютерной инженерии. По Украине этот университет считается лучшим по подготовке именно в этом направлении и мне захотелось поступить в него.

Летом в 2013 году после сдачи ЗНО я подал документы в ВУЗ и в итоге поступил на бюджет на очную форму обучения. Поначалу было сложно, так как и обучение в школе и в университете значительно отличается.

В целом благодаря четырём курсам в университете мне удалось улучшить свои знания, а также приобрести новые. После получения диплома бакалавра, мной было принято решение продолжить обучение по выбранной специальности и в 2017 я успешно сдал вступительные экзамены и поступил в магистратуру.

Цели, планы и видение будущего

Основная цель на данный момент успешная защита магистерской работы и получение диплома о полном высшем образовании. В будущем планирую расширять свой кругозор, в особенности в IT сфере, найти работу связанную с разработкой программного обеспечения, а также начать разрабатывать свои собственные проекты.

Реферат

При написании данного реферата магистерская работа еще не завершена. Окончательное завершение: июнь 2019 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.

Содержание

  • Введение
  • 1. Актуальность темы
  • 2. Цель и задачи исследования, планируемые результаты
  • 3. Обзор исследований и разработок
    • 3.1 Обзор международных источников
    • 3.2 Обзор национальных источников
    • 3.3 Обзор локальных источников
  • 4. Основные рассматриваемые архитектуры и особенности процессоров
  • Выводы
  • Список источников

Введение

С каждым годом возрастает роль средств вычислительной техники, при этом все компоненты вычислительных систем располагаются на интегральных микросхемах, не позволяя получить доступ к отдельным узлам или элементам, осложняя тем самым процесс изучения функционирования компьютерных систем и их компонентов.

Глубокое понимание принципов построения и функционирования сложных систем достигается лишь при практической работе с такими системами или их моделями. Даже самое подробное описание работы с базовым цифровым устройством и детальные иллюстрации процесса выполнения команд не могут заменить действительной работы с этим устройством.

Данная проблема особенно актуальна в технических вузах и для ее решения разрабатываются специальные модели: физические или функциональные[1], наглядно демонстрирующие представление данных, выполнение операций, взаимодействие с периферией по средствам операций ввода-вывода и системы прерываний.

Для поддержки дисциплин аппаратного направления требуются модели, которые позволяют рассмотреть конвейерную обработку команд, спекулятивное выполнение, кеширование данных, а также разнообразные архитектуры процессорных элементов, такие как: суперскалярная архитектура, VLIW, векторные процессоры. Также дополнительно следует рассмотреть процесс компиляции и оптимизации машинного кода, под разнообразные архитектуры.

1. Актуальность темы

Современный мир уже сложно представить без вычислительной техники, а её основным компонентом все ещё являются процессорные элементы. Для технических вузов особенно важно подготавливать студентов с пониманием принципов работы процессоров, принципов их функционирования и разнообразия архитектур. Как нельзя лучше для этого подходят демонстрационные модели, которые наглядно демонстрируют работу того или иного компонента устройства в определённой ситуации, т.е. учебный материал может быть представлен более эффективно.

2. Цель и задачи исследования, планируемые результаты

Многоуровневая демонстрационная модель гипотетического компьютера позволит наглядно демонстрировать работу процессорных компонентов, их взаимодействие с памятью, и другими периферийными устройствами.

Данная магистерская работа посвящена разработке функциональной демонстрационной модели, а также разработке компилятора для данной модели и исследованию способов оптимизации генерации машинного кода.

В результате работы планируется рассмотреть различные процессорные архитектуры, общие процессорные технологии, такие как конвейерная обработка команда, спекулятивное выполнение, предсказание переходов, кеширование данных. Разработать функциональную демонстрационную модель, и оптимизирующий компилятор для неё.

3. Обзор исследований и разработок

Несмотря на то, что на сегодняшний день практически каждое электронное устройство управляется микропроцессорами, достаточно подробных демонстрационных моделей существует не так уж и много. На данный момент существует множество демонстрационных систем, которые позволяют освоить базовые принципы работы процессоров и другой периферии, но они не рассматривают такие аспекты работы процессора как конвейерная обработка команд, предсказание ветвлений, спекулятивное выполнение, кеширование данных. То есть такие решения подходят лишь для начальных курсов вузов с технической направленностью.

Кажется, что на данный момент работа процессоров за долгие годы развития процессоров отточена до идеала. Но исследования, проведённые в середине 2017 года в недрах компании Google в сотрудничестве с другими компаниями, показали, что все процессоры фирмы Intel с 1995 года производства и процессоры на архитектуре ARM имеют аппаратные уязвимость[2]. Эта уязвимость связана со спекулятивным выполнением команд и реализацией страничной адресации памяти. Спекулятивное выполнение позволяет коду частично выполнятся, не дожидаясь окончания исполнения предыдущих команд, при этом доступ к памяти при спекулятивном исполнении выполняется независимо от прав доступа, при этом если происходит промах по кешу, то данные будут загружены в кеш, после чего их можно прочитать. Таким образом пользовательский код может получать и записывать данные в защищённые области памяти. 4 января 2018 года были произведены атаки, которые использовали данную уязвимость, им дали названия Meltdown[3] и Spectre[4], после чего детали уязвимости были опубликованы.

Логотипы уязвимостей процессоров Meltdown и SpectreРисунок 3.1 – Логотипы уязвимостей процессоров Meltdown и Spectre

Таким образом углублённое понимание архитектур и принципов работы процессоров необходимо для обнаружения и понимания возможных ошибок, чтобы не допускать их при проектировании. Демонстрационная модель поможет улучшить процесс обучения путем более наглядного и индивидуализированного подхода к рассмотрению работы процессорных элементов и работы периферии.

3.1 Обзор международных источников

Дейл Скриен разработал функциональную модель окружения для симуляции простых компьютеров CPU Sim[5]. Программа позволяет студентам понять принципы компьютерной архитектуры. Предоставляет возможность симулировать работу простых процессоров, либо задать конфигурацию собственного процессора со своим набором команд, которые реализуются с помощью последовательности микроинструкций. Позволяет симулировать процессоры различных архитектур, таких как основанных на регистре-аккумуляторе, RISC или стековых машин.

Главное окно симулятора CPU SimРисунок 1 – Главное окно симулятора CPU Sim

MikroSim[6] – это образовательная программа для аппаратно-неспецифического объяснения общего функционирования и поведения виртуального процессора.

3.2 Обзор национальных источников

Поиск материалов по теме показал наличие публикаций на тему различных процессорных архитектур. Например, архитектура POSTRISC[7] – архитектура, идущая на замену RISC. Виртуальный учебный процессор POSTRISC и разработанные для него инструменты (ассемблер, дизассемблер, эмулятор) предназначены для изучения на этом примере внутренней структуры системных программ, таких как ассемблеры, дизассемблеры, компоновщики, для изучения алгоритмов хранения внутренних данных ассемблеров и компиляторов (хеширование и бинарный поиск), для изучения и сравнительного анализа различных сред исполнения и характерных для них моделей исполняемых программ, для изучения особенностей системного программирования для разных целевых машинных архитектур и для изучения архитектурно-зависимых аспектов прикладного программирования.

3.3 Обзор локальных источников

Была опубликована статья на тему "Моделирование внутренних операций процессорных элементов" в научном журнале ДонНТУ "Информатика и кибернетика", авторами которой явлются наши преподователи Мальчева Р.В. и Завадская Т.В. В статье выполнен анализ необходимости разработки демонстрационных обучающих и имитационных моделей внутри процессорных операций.

4. Основные рассматриваемые архитектуры и особенности процессоров

Суперскалярный процессор[10] – процессор, поддерживающий так называемый параллелизм на уровне инструкций то есть, процессор, способный выполнять несколько инструкций одновременно за счёт включения в состав его вычислительного ядра нескольких одинаковых функциональных узлов таких как АЛУ, FPU, умножитель , сдвигающее устройство и другие устройства. Планирование исполнения потока инструкций осуществляется динамически вычислительным ядром, а не статически компилятором.

Архитектура VLIW[9] (Very Long Instruction Word – «очень длинная машинная команда») отличаются от традиционных архитектур RISC и CISC, реализованную в современных массовых микропроцессорах. Важно различать архитектуру набора команд – программная модель процессора – от реализации (физический чип и его характеристики). VLIW микропроцессоры и суперскалярные реализации традиционных наборов команд имеют некоторые общие характеристики – несколько исполнительных блоков и возможность выполнять несколько операций одновременно. Так же, как RISC архитектуры имеют более простые и дешевые высокопроизводительные реализации. Архитектура VLIW проще, чем CISC, и дешевле, чем RISC. Из-за аппаратных упрощений, VLIW архитектура, требует поддержки со стороны компилятора.

Спекулятивное выполнение[11] – это метод оптимизации, когда компьютерная система выполняет некоторую задачу, которая может не потребоваться. Работа выполняется до того, как станет известно, действительно ли она необходима, чтобы предотвратить задержку, которая могла бы возникнуть при выполнении после того, как стало известно, что она необходима. Если выясняется, что в конце концов работа не нужна, большинство изменений, внесенных этой работой, отменяются, а результаты игнорируются.

Выводы

Роль вычислительной техники, с каждым годом возрастает. Компьютеры становятся всё сложнее, соответственно и уровень подготовки специалистов в технических вузах должен расти. И для достижения необходимого уровня подготовки студентов дисциплин аппаратурной направленности, в ходе данной работы будет разработана многоуровневой модели гипотетического компьютера наглядно демонстрирующие представление данных, выполнение операций, взаимодействие с периферией по средствам операций ввода-вывода и системы прерываний.

Многоуровневая модель позволит рассмотреть конвейерную обработку команд, спекулятивное выполнение, кеширование данных, а также разнообразные архитектуры процессорных элементов, такие как: суперскалярная архитектура, VLIW, векторные процессоры. Также будет рассмотрен процесс компиляции и оптимизации машинного кода, под разнообразные архитектуры.

Список источников

  1. Кириллов В.В. Архитектура базовой ЭВМ. – СПб: СПбГУ ИТМО, 2010. – 144 с.
  2. Отчет Google об уязвимостях Meltdown и Spectre. [Электронный ресурс]. – Режим доступа: https://developers.google.com/web/updates/2018/02/meltdown-spectre
  3. Meltdown: Reading Kernel Memory from User Space. [Электронный ресурс]. – Режим доступа: https://meltdownattack.com/meltdown.pdf
  4. Spectre Attacks: Exploiting Speculative Execution. [Электронный ресурс]. – Режим доступа: https://spectreattack.com/spectre.pdf
  5. Официальный сайт CPU Sim. [Электронный ресурс]. – Режим доступа: http://www.cs.colby.edu/djskrien/CPUSim/
  6. Официальный сайт Mikrocodesimulator MikroSim 2010. [Электронный ресурс]. – Режим доступа: http://www.mikrocodesimulator.de/index_eng.php
  7. Архитектура POSTRISC. [Электронный ресурс]. – Режим доступа: http://web.znu.edu.ua/bdp/postrisc/index.htm
  8. Танунбаум Э. Архитектура компьютера 4-е ИЗДАНИЕ. - 2003. - 695 с.
  9. Philips Semiconductors. An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture. [Электронный ресурс]. – Режим доступа: http://twins.ee.nctu.edu.tw/courses/ca_08/literature/11_vliw.pdf
  10. The Microarchitecture of Superscalar Processors. [Электронный ресурс]. – Режим доступа: ftp://ftp.cs.wisc.edu/sohi/papers/1995/ieee-proc.superscalar.pdf
  11. Спекулятивное выполнение команд. [Электронный ресурс]. – Режим доступа: https://en.wikipedia.org/wiki/Speculative_execution

Библиотека материалов по теме выпускной работы

Собственные публикации и доклады

  1. Разработка демонстрационной модели гипотетического компьютера

    Авторы: Святоха А.А., Мальчева Р.В.

    Описание: В данной работе была разработана простая демонстрационная модель гипотетического компьютера, а также приведена теорическая информация по теме.

  2. Разработка обеспечения по контролю за действиями пользователей

    Автор: Святоха А.А.

    Описание: В данной работе рассмотрена реализация системы логирования и представления действий пользователя.

  3. Исследование зависимости применения процессорных архитектур (Презентация)

    Автор: Святоха А.А.

    Описание: В данной работе рассмотрены зависимости применения процессоров на различных архитектурах, в различных классах вычислительных устройств.

  4. Исследование зависимости применения процессорных архитектур (Доклад)

    Автор: Святоха А.А.

    Описание: В данной работе рассмотрены зависимости применения процессоров на различных архитектурах, в различных классах вычислительных устройств.

Тематические статьи

  1. Развитие процессоров и их роль в жизни ПК сегодня

    Автор: Плесовских Г.А.

    Описание: В данной статье рассмотрено создание процессоров и их значительные изменения, без которых, скорее всего не было сегодняшней компьютерной техники. Проанализированы характерные особенности, которые способствовали развитию и созданию процессоров. В проведенном исследовании даются определения и формулируются основные характеристики процессоров.

    Источник: Плесовских Г.А. РАЗВИТИЕ ПРОЦЕССОРОВ И ИХ РОЛЬ В ЖИЗНИ ПК СЕГОДНЯ // Молодежный научный форум: Технические и математические науки: электр. сб. ст. по мат. XXXV междунар. студ. науч.-практ. конф. № 6(35). URL: https://nauchforum.ru/archive/MNF_tech/6(35).pdf (дата обращения: 26.01.2019)

  2. Моделирование внутренних операций процессорных элементов

    Авторы: Р.В. Мальчева, Т.В. Завадская

    Описание: Выполнен анализ необходимости разработки демонстрационных обучающих и имитационных моделей внутри процессорных операций.

    Источник: Научный журнал "Информатика и кибернетика". – Д.: ДонНТУ, – 2016. – № 3(5). – 117 c.

  3. Структура ЭВМ

    Автор: Тлупов З.А.

    Описание: В данной работе рассматриваются структуры компонентов ЭВМ, включая многопроцессорные вычислительные системы.

    Источник: URL: http://www.zaurtl.ru/UkVT/UKVT3.html

  4. Организация памяти в ЭВМ

    Автор: Тлупов З.А.

    Описание: В данной работе рассматриваются структур памяти ЭВМ и её разновидности.

    Источник: URL: http://www.zaurtl.ru/UkVT/UKVT14.html

  5. Формат и разновидность команд микропроцессора

    Автор: Тлупов З.А.

    Описание: В данной работе рассматриваются формат машинных команд процессора Intel и дано краткое описание некоторых из них.

    Источник: URL: http://www.zaurtl.ru/UkVT/UKVT17.html

  6. Процессоры: назначение, структура и разновидность

    Автор: Тлупов З.А.

    Описание: В данной работе рассматриваются функции и параметры микропроцессора, кратко представленны основны архитектуры процессоров и устройства входящие в состав процессора.

    Источник: URL: http://www.zaurtl.ru/UkVT/UKVT15.html

Переводы статей

  1. CPU Sim 3.1: Инструмент для моделирования компьютерных архитектур для классов организации компьютеров

    Автор: Dale Skrien

    Описание: В статье подробно рассматриваются основы работы программным пакетом CPU Sim 3.1, предназначенным для проектирования, модифицирования и сравнения различных компьютерных архитектур на уровне регистров и так далее.

    Источник (англ.): CPU Sim 3.1: A Tool for Simulating Computer Architectures for Computer Organization Classes

Ссылки по теме выпускной работы

Материалы магистров ДонНТУ

  1. Тесленко Г.A. Программная эмуляция микропроцессорного комплекта серии К1804

    Описание: Персональный сайт на портале магистров ДонНТУ, 2003 г.

    Руководитель: к.т.н., инженер кафедры "ЭВМ" Дорожко Л.И.

Научные работы и статьи

  1. Simplified Instructional Computer (SIC)

    Статья об упрощенном учебном компьютере.

  2. Архитектура компьютера

    Статья о различных архитектурах компьютеров.

  3. Одиссея процессора Itanium

    Статья о истории развития процессоров Itanium фирмы Intel.

  4. Особенности программной эмуляции семейства бортовых вычислительных машин с открытой системой команд

    В статье рассматривается проблема программной эмуляции семейства бортовых вычислительных машин с открытой системой команд.

  5. 50 (или 60) лет разработки процессоров

    Описывается развитие процессоров и различных архитектур, а также рассматриваются пути дальнейшего возможного развития.

  6. Создаем эмулятор приставки

    Наглядный пример разработки эмуляторов на примере простой игровой приставки CHIP-8

  7. Meltdown: Reading Kernel Memory from User Space

    Статья поссвещённая уязвимости в процессорах и атаке под назвнием Meltdown.

  8. Spectre Attacks: Exploiting Speculative Execution

    Статья поссвещённая уязвимости в процессорах и атаке под назвнием Spectre.

  9. Understanding Compilers — For Humans

    Статья посвящена основным этам работы компиляторов.

  10. Compilers - What Every Programmer Should Know About Compiler Optimizations

    Статья посвещённая оптимизации в компиляторах высокоуровневых языков программирования.

Техническая и справочная литература

  1. Архитектура компьютера

    Книга описывающая основные узлы вычислительных машин.

  2. Архитектура компьютера

    Книга описывающая архитектуру процессорного ядра компьютеров.

  3. Архитектура базовой ЭВМ

    В книге описывается архитектура базовых учебных моделей ЭВМ.

  4. Основы информатики и вычислительной техники

    В этом учебном пособии даны первоначальные сведения об ЭВМ, их устройстве и применении, о подготовке решения задач на ЭВМ с помощью алгоритмов.

  5. Computer Architecture. A Quantitative Approach

    В книге подробно расмотренны архитектуры компьютеров и их компонентов.

  6. An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture

    Архитектура процессоров VLIW и её сравнение с другими архитектурами.

  7. Классическая теория компиляторов

    Рассматриваются основы теории формальных языков, приводятся методы и алгоритмы построения основных частей трансляторов и интерпретаторов.

  8. Basics of Compiler Design

    Рассматриваются основы компиляторов, процесса компиляции, интерпретации и оптимизации программ написанных на языках высокого уровня.

  9. Современные оптимизирующие компиляторы

    Работа посвящена методам оптимизации, используемым в современных компиляторах для архитектур с явным параллелизмом команд и аппаратной поддержкой двоичной с овместимости.

  10. A survey of compiler optimization techniques

    Обзор базовых методов оптимизации в компиляторах для трех категорий: машинно зависимые, архитектурно зависимые и архитектурно независимые оптимизаци.

Специализированные сайты и порталы

  1. StackOverflow

    Cайт вопросов и ответов для программистов.

  2. GitHub

    Крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.

  3. Bitbucket

    Веб-сервис для хостинга проектов и их совместной разработки, основанный на системе контроля версий Mercurial и Git.

  4. GitLab

    Сайт и система управления репозиториями кода для Git, из дополнительных возможностей: собственная вики и система отслеживания ошибок. ПО доступно в системе управления пакетами Omnibus.

  5. CIT-форум

    Крупнейший архив научной и практической информации по всем направлениям компьютерных наук.

  6. Habr

    Блог, посвященный различным тематикам: программированию, алгоритмам, администрированию, информационной безопасности и т.д.

  7. Форум тестировщиков

    Форум который содержит множество различных тем.

  8. Hardforum

    Содержит любые темы касательно компьютеров, ОС, ПО и тд.

  9. CyberForum

    Форум программистов, системных администраторов, администраторов баз данных, компьютерный форум, форум по электронике и бытовой технике, обсуждение софта. Бесплатная помощь в решении задач по программированию, математике, физике и другим наукам, решение проблем с компьютером, операционными системами.

  10. Библиотека им. В.И.Вернадского

    Содержит множество различных статей, публикаций и прочего.

Модели гипотетических компьютеров

  1. Е97 - учебные модели компьютеров

    Краткое описание учебной модели компьютера Е97.

  2. CPU Sim

    Функциональная модель окружения для симуляции простых компьютеров.

  3. Mikrocodesimulator MikroSim 2010

    Образовательная программа для аппаратно-неспецифического объяснения общего функционирования и поведения виртуального процессора.

  4. GNUSim8085

    Учебный симулятор процессора Intel 8085. Обладает графической оболочкой, ассемблером и отладчиком.

  5. Proteus VSM

    Функциональных модель, которая входит в пакет программ Proteus Design Suite.

  6. Tk Gate

    Среда моделирования и симуляции цифровых электронных схем, состоящая из графического редактора с интерфейсом.

  7. Simulink

    Графическая среда имитационного моделирования, позволяющая при помощи блок-диаграмм в виде направленных графов, строить динамические модели, включая дискретные, непрерывные и гибридные, нелинейные и разрывные системы.

  8. Emu G2

    Простая демонстрационная машина (собственная разработка).

Информация о процессорах

  1. Центральный процессор

    Общая информация о центральных процессорах

  2. Complex instruction set computer

    Рассмотрены основные особености процессоров на архитектуре CISC.

  3. Reduced instruction set computer

    Рассмотрены основные особености процессоров на архитектуре RISC.

  4. Архитектура POSTRISC

    Проекты гипотетических процессоров, идущих на смену процессорам с архитектурой RISC.

  5. Архитектура VLIW

    Рассмотрены основные особености процессоров на архитектуре VLIW.

  6. Itanium

    Информация о процессорах Itanium фирмы Intel, основаных на архитектуре EPIC/VLIW.

  7. Vector processor

    Рассмотрены особенности векторных процессоров.

  8. Суперскалярность

    Рассмотрены особенности суперскалярных процессоров.

  9. Спекулятивное выполнение команд

    Статья про спекулятивное выполнение команд.

  10. Meltdown и Spectre

    Отчет Google об уязвимостях Meltdown и Spectre.

  11. Branch predictor

    Статья о предсказателе переходов в процессорах.

Отчет об информационном поиске

Представленный отчет позволяет оценить информационную ситуацию по теме магистерской работы. Он является основным документальным подтверждением глубины и полноты информационного поиска, а также служит для фиксации текущей ситуации в исследуемой области.

Поиск выполнен с использованием четырех поисковых систем (Google, Яндекс, Bing, Meta). Результаты сведены в таблицу. Всего произведено 15 запросов, имеющих отношение к магистерской работе. Из них три запроса соответствует названию магистерской работы на трех языках, три запроса с ФИО руководителя, а также девять запросов с ключевыми понятиями по теме магистерской работы.

Ниже приведены две таблицы с отчетами о поиске, которые разделяет временной промежуток в два месяца, а также ряд диаграмм, которые позволяют сравнить основные изменения, произошедшие за этот период.

Отчет о поиске за 13.09.2018 г.

Строка поиска

На русском языке

Разработка многоуровневой модели гипотетического компьютера для поддержки дисциплин аппаратурной направленности76.4 тыс92 млн02.3 тыс
Мальчева Раиса Викторовна ДонНТУ4.1 тыс10.4 тыс58
Суперскалярный процессор10.8 тыс21 млн1.2 тыс5.1 тыс
Архитектура VLIW13.1 тыс81 млн4.7 тыс7.3 тыс
Спекулятивное выполнение168 тыс12 млн3.3 тыс64.7 тыс

На украинском языке

Розробка багаторівневої моделі гіпотетичного комп'ютера для підтримки дисциплін апаратурної спрямованості598 млн089
Мальчева Раїса Вікторівна ДонНТУ4.1 тыс6 млн28
Суперскалярний процесор10.8 тыс23 млн490
Архітектура VLIW298 тыс61 млн4.3 тыс143 тыс
Спекулятивне виконання136 тыс8.2 млн1.6 тыс101 тыс

На английском языке

Development of a multi-level model of a hypothetical computer to support hardware direction disciplines624 тыс267 млн64313 тыс
Malcheva Raisa DonNTU22653 млн1224
Superscalar processor334 тыс22 млн83.3 тыс185 тыс
VLIW architectures326 тыс31 млн32.4 тыс194 тыс
Speculative execution5.7 млн6.7 млн623 тыс2.5 млн

Отчет о поиске за 21.11.2018 г.

Строка поиска

На русском языке

Разработка многоуровневой модели гипотетического компьютера для поддержки дисциплин аппаратурной направленности85.1 тыс109 млн02.6 тыс
Мальчева Раиса Викторовна ДонНТУ4.3 тыс11 тыс59
Суперскалярный процессор11.2 тыс25 млн1.4 тыс5.6 тыс
Архитектура VLIW13.5 тыс84 млн4.9 тыс7.7 тыс
Спекулятивное выполнение188 тыс15 млн3.6 тыс92.1 тыс

На украинском языке

Розробка багаторівневої моделі гіпотетичного комп'ютера для підтримки дисциплін апаратурної спрямованості7116 млн0104
Мальчева Раїса Вікторівна ДонНТУ4.4 тыс8 млн29
Суперскалярний процесор11.2 тыс25 млн510
Архітектура VLIW308 тыс69 млн4.6 тыс162 тыс
Спекулятивне виконання149 тыс9 млн1.8 тыс110 тыс

На английском языке

Development of a multi-level model of a hypothetical computer to support hardware direction disciplines669 тыс296 млн72331 тыс
Malcheva Raisa DonNTU23559 млн1427
Superscalar processor364 тыс25 млн96.3 тыс200 тыс
VLIW architectures353 тыс34 млн35.7 тыс206 тыс
Speculative execution6.5 млн8 млн671 тыс3.3 млн

Анализ результатов

Сравнивая результаты запросов по различным поисковым системам, можно прийти к выводу, что наилучшие результаты показала система Google. Во всех случаях было найдено достаточное количество документов на всех языках.

Необходимо отметить, что поисковая система Яндекс при большом числе найденных страниц не дает возможности зафиксировать их точное количество. Поэтому в таблице для Яндекса и приведены приблизительные значения, которые предоставляет поисковая система.

При сравнении и анализе результатов в отчетах о поиске, которые разделяют два месяца, необходимо отметить, что для всех поисковых запросах количество найденных страниц выросло. Процент изменения для каждого запроса в каждой из поисковых систем приведен на диаграмме ниже.

Диаграмма - Процент изменения результатов поисковой выдачи в отчетах о поискеПроцент изменения результатов поисковой выдачи в отчетах о поиске

Из диаграммы можно сделать вывод, что максимальный рост поисковой выдачи не превышает 29%, а для некоторых запросов количество найденных страниц не изменилось.

Диаграмма также позволяет оценить изменения для каждого выполненного запроса.

Так, например, количество найденных страниц в поисковой системе Meta для запроса "Speculative execution" выросло на 24%, а поисковая выдача по запросу "Архитектура VLIW" в системе Google возросла лишь на ≈ 8%. При этом количество страниц по некоторые запросам совсем не изменилось (например, "Розробка багаторівневої моделі гіпотетичного комп\'ютера для підтримки дисциплін апаратурної спрямованості" в системе Bing).

Базовые принципы работы интерпретаторов

Интерпретатор[1] – программа выполняющая построчный анализ, обработку и выполнение исходного кода программы или запроса (в отличие от компиляции, где весь текст программы, перед запуском, анализируется и транслируется в машинный или байт-код, без её выполнения).

Интерпретируемые или скрипотовые языки программирования на сегодняшний день широко используются как языки сценариев для администрирования операционной системы, как встраиваемые языки или для создания прикладного программного обеспечения. Основными преимуществами скриптовых языков является:

  • переносимость программного кода между платформами, на которых реализован интерпретатор;
  • существенно более быстрая загрузка скрипта и начала его выполнения по сравнению с транслируемыми языками, что позволяет на стадии разработки более регулярно вносить изменения и тестировать их;
  • более совершенные средства отладки и диагностики ошибок в исходном коде;
  • зачастую меньший размер исходного кода по сравнению с транслируемыми в машинный код языками.

Недостатками являются:

  • невозможность запуска скрипта без интерпретатора, при этом интерпретатор может быть как довольно компактным, так и нет.
  • скрипты выполняются медленнее, поскольку выполняется анализ кода и планирование его выполнения требует дополнительного времени в сравнении с непосредственным исполнением машинного кода;
  • оптимизация кода зачастую либо отсутствует полностью, либо является недостаточно эффективной, что также сказывается на скорости выполнения программы.

Не смотря на недостатки со скоростью выполнения программ интерпретаторами, зачастую их встраивают в приложение, чтобы иметь возможность расширять его функционал без перекомпиляции. Скрипты обычно некритичны к скорости выполнения задачи, а требовательные к производительности участки выполняются за счет вызова подпрограмм на машинном коде из скрипта. Самым ярким представителем встраиваемых скриптовых языков, является JavaScript в браузерах, который позволяет выполнять интерактивные действия на веб страницах, и работает на всех системах в которых есть интернет браузеры.

Основные этапы работы интерпретатора

Каждый интерпретатор после получения исходного кода скрипта (будь то загрузка из файла, или получение в параметре в виде строки), выполняет следующие действия:

  1. Лексический анализ
  2. Синтаксический анализ
  3. Оптимизация (опционально)
  4. Выполнение

Лексический анализ

Лексический анализ или токенизация (от англ. token – знак; представление лексемы в виде обьекта) – процесс разбиения исходного текста программы на лексемы (токены), которые являются атомарными сущностями языка, такие как. числа, строки, операторы и разделительные знаки. С такими сущностями интерпретатору далее будет намного удобней работать. На этом этапе также опускаются комментарии и сокращаются последовательности пробельных символов. Процесс примерного разбиение на лексемы показан на рисунке 1.

Пример разбиение исходного текста программы на лексемыРисунок 2 – Пример разбиение исходного текста программы на лексемы

При лексическом анализе в строках также заменяются управляющие последовательности символов. Для того чтобы в случае возникновении ошибки, была возможность сообщить о её местоположении в исходном коде, в токенах также сохраняется информация с номером строки и первого символа лексемы. Таким образам после лексического анализа мы получем список токенов.

Cинтаксический анализ

Получив список токенов интерпретатор выполняет синтаксический анализ, проверяя расположения лексем в управляющих конструкциях и выражениях в соответствии с правилами языка программирования. Параллельно с проверкой на корректность кода, синтаксический анализатор строит в памяти абстрактное синтаксическое дерево (AST – англ. Abstract Syntax Tree)[2], в котором узлами являются операторы, а листья представляют собой либо переменные, либо константы.

Пример абстракного синтаксического дереваРисунок 3 – Пример абстракного синтаксического дерева

После постройки абстрактного синтаксического дерева список токенов далее не будет участвовать в процессе интерпретации и можно освободить память, использующуюся для его хранения. В каждом узле дерева также стоит сохранять информацию о месторасположении синтаксической конструкции в исходном коде, которую можно получить из токенов, это позволит выводить более детальную информации об ошибках времени исполнения.

Оптимизация

Оптимизация в интерпретаторах может производится по усмотрению разработчика, так как обычно оптимизация осуществляется только по одному критерию, а именно либо по скорости выполнения, либо по потреблению памяти. И так, после формирования абстрактного синтаксического дерева интерпретатор может произвести несколько базовых оптимизаций, характерных как для интерпретаторов, так и для компиляторов.

Свёртка констант (англ. Constant Folding)[3] – эта оптимизация рекурсивно проходит по всем узлам абстрактного синтаксического дерева и если все листья являются константами, то узел вычисляется и заменяется вычисленной константой. Иначе говоря, эта оптимизация заменяет выражения, которые можно посчитать на этапе трансляции. Например, x = (10 + 5) * y; можно заменить на х = 15 * y.

Распространение констант (англ. Constant Propagation)[4] – подстановка значений вместо констант. Например:

const x = 5;
var y = 2 * x - 8;

Поскольку x имеет константное значение 5, мы можем подставить его во второе выражение:

const x = 5;
var y = 2 * 5 - 8;

Далее свёртка констант посчитает выражение и мы получим:

const x = 5;
var y = 2;

Удаление мёртвого кода (англ. Dead Code Elimination, DCE)[5] – оптимизация удаляет пустые блоки кода и узлы выполняющие бесполезные вычисления.

Упрощение выражений (англ. Expression Simplification) – эта оптимизация заменяет выражения на аналогичные, но более эффективные. Например: x = y * -1 можно заменить на x = -y.

JIT-компиляция (англ. Just-in-time compilation, компиляция «на лету»), динамическая компиляция (англ. dynamic translation)[6] – промежуточная компиляция абстрактного синтаксического дерева в байт-код некоторой виртуальной машины или машинный код конкретной платформы. За счёт этого может достигаться скорость выполнения программы сравнимая с компилируемыми программами. Однако возрастают требования к потреблению памяти и повышаются начальные временные затраты так как появляется дополнительная стадия компиляции.

Выполнение

Этап выполнения зависит была ли использована JIT-компиляция или нет. При отсутствии JIT-компиляции интерпретатор начинает рекурсивно проходит по каждому узлу абстрактного синтаксического дерева и выполняет операцию, ассоциированную с данным узлом. В случае использования JIT, в зависимости от вида компиляции, либо выполняется байт-код на виртуальной машине (что требует ещё и включения виртуальной машины в состав интерпретатора), либо исполняется непосредственно машинный код.

Выводы

Скриптовые языки играют важную роль в современной IT сфере и понимание принципов работы интерпретаторов позволит создавать более качественные скриптовые программы. Также стоит отметить собственные разработки автора[7] в данной сфере, а именно небольшой встраиваемый язык для приложений на платформе Java, синтаксически напоминающий JavaScript.

Ссылки

  1. Интерпретатор
  2. Абстрактное синтаксическое дерево
  3. Свёртка констант
  4. Распространение констант
  5. Удаление мёртвого кода
  6. JIT-компиляция
  7. Встраиваемы язык ArtSoft Script (собственная разработка)
Загрузка...