- •Вопрос 2. Спецификация, представление, реализация абстрактных типов данных.
- •Вопрос 3. Многомашинные вс. Реализация на основе ес эвм. Кластерные вс.
- •Типы кластеров:
- •Вопрос 2. Линейные структуры данных: стек, очередь, дек
- •Вопрос 3. Сравнительный анализ и основные компоненты инструментальных среды разработки пользовательских интерфейсов. Классификация элементов пользовательского интерфейса
- •Вопрос 1. Конкретные реализации языков функционального программирования: язык программирования Лисп, основные объекты, примитивы, списки, правила составления программ.
- •Вопрос 2. Семантическая теория программ. Вычислимость и разрешимость
- •Вопрос 3. Формальные методы описания диалоговых систем. Законы Фитса и Хика.
- •Вопрос 1. Основные конструкции логической программы: факты, правила, запросы, логические переменные. Операционная и декларативная семантика логических программ.
- •1. 5. Декларативный и процедурный смысл программ
- •Вопрос 2. Интерфейсы. Способы согласования аппаратных структур. Организация асинхронных интерфейсов
- •Элементы процесса как поведенческой категории :
- •Дескриптивный асинхронный процесс (dp)
- •Асинхронный процесс (ap)
- •Инициаторы
- •Вопрос 3. Эргономика пользовательского интерфейса. Критерии эргономичности интерфейса. Человеческие ошибки. Методы предотвращения ошибок. Снижение чувствительности системы к ошибкам.
- •Типы ошибок
- •Методы предотвращения ошибок
- •Как избежать сообщений об ошибках
- •Вопрос 1. Интерпретация и корректность логических программ. Абстрактный интерпретатор, значение логической программы, вычислительная модель
- •Вопрос 2. Порядковые статистики (Гулаков сказал что его не будет)
- •Субъективная удовлетворенность
- •Типичные интерфейсные ошибки отечественного по
- •Программа перегружена элементами управления
- •Терминология не адекватна знаниям пользователя о системе
- •От пользователя постоянно требуется дополнительная информация
- •Вопрос 1. Программирование баз данных. Динамическая база данных. Добавление и удаление фактов в процессе работы программы.
- •Вопрос 2. Поиск и кодирование (сжатие) данных, кодовые деревья, оптимальные префиксные коды
- •Вопрос 1. Рекурсивное программирование на логическом языке. Рекурсивные структуры данных – списки. Объявление списков. Составные списки. Голова и хвост списка. Примеры работы со списками.
- •Вопрос 2. Бинарный поиск, хеширование
- •Вопрос 3. Тестирование и отладка программного обеспечения. Структурное и функциональное тестирование. Особенности тестирования объектно-ориентированного по. Автоматизация процесса тестирования.
- •Вопрос1. Вычислительная модель программы на логическом языке. Согласование целевых утверждений. Сопоставление и унификация. Детерминизм.
- •Вопрос 2. Понятие выполнения сети. Свойства сети (устойчивость, безопасность, консервативность).
- •Вопрос 3. Автоматизация проектирования программного обеспечения на базе case-технологий. Принципы построения и т.Д.
- •Вопрос 1. Множественные выражения Программирование второго порядка Недетерминированное программирование
- •Вопрос 2. Нелинейные структуры данных: иерархические списки, деревья и леса, бинарные деревья
- •Вопрос 1. Вне логические предикаты. Ввод-вывод. Доступ к программам и обработка программ. Металогические предикаты. Сравнение не основных термов.
- •Вопрос 2. Алгоритмы сортировки
- •Сортировка разделением (Quicksort)
- •Вопрос 1. Constraint–Пролог: операционная семантика обобщение механизма унификации, понятие constraint'а. Операционная модель Constraint-пролоГа.
- •Вопрос 2. Нелинейные структуры: обходы деревьев
- •Вопрос 3. Качество по. Критерии качества: сложность, корректность, надежность, трудоемкость. Методика оценки качества по. Метрические особенности объектно-ориентированных пс. Сертификация по
- •Вопрос 1. Cancelled мистером г.
- •Вопрос 2. Стандартные схемы программ. Методы формальной спецификации и верификации.
- •Вопрос 1. Использование деревьев в задачах поиска: бинарные деревья поиска, случайные, оптимальные, сбалансированные по высоте и рандомизированные деревья поиска
- •. Деревья цифрового поиска
- •Вопрос 2. Определение асинхронного процесса как описания модели вычислительного процесса. Глобальные свойства – асинхронность, недетерминированность, параллельность.
- •1. Задачи сортировки; внутренняя и внешняя сортировка
- •2. Подклассы асинхронного процесса. Эффективный асинхронный процесс
- •Длительность реакции системы
- •Субъективное восприятие скорости работы
- •Приемы для уменьшения субъективного восприятия
- •1. Оптимальная сортировка.
- •2. Конвейерный процесс. Автономный процесс. Асинхронный процесс как метамодель.
- •Непосредственное манипулирование
- •Потеря фокуса внимания (прерывание)
- •Ограничение принятия решений
- •1. Анализ сложности и эффективности алгоритмов поиска и сортировки.
- •2. Классификация сетей (ординарные, автоматные, маркированный граф).
- •Понятность системы
- •Ментальная модель
- •Метафора
- •Аффорданс
- •Стандарт
- •1. Файлы: организация и обработка, представление деревьями: b-деревья.
- •2. Сетевое представление параллельных процессов. Области применения сетей Петри
- •3. Основы теории формальных языков и грамматик. Основные понятия и определения. Операции над языками. Классификация формальных языков и грамматик по порождающей способности
- •1. Алгоритмы на графах: представления графов, схемы поиска в глубину и ширину, минимальное остовное дерево, кратчайшие пути.
- •2.1.Поиск в глубину
- •2.2 Поиск в ширину.
- •2. Протоколы взаимодействия объектов вычислительных структур. Понятие протокола.
- •3. Вывод контекстно-свободных (кс) – грамматик и правила построения дерева вывода. Синтаксический разбор. Способы задания схем грамматик. Форма Бэкуса-Наура.
- •1. Теория сложности алгоритмов: np-сложные и труднорешаемые задачи.
- •2. Недетерминированные конечные автоматы. Конечные преобразователи и переводы. Преобразование некоторых грамматик к автоматному виду.
- •3. Объектно-ориентированное проектирование. Принципы проектирования. Схемы, диаграммы, инструменты.
- •1. Детерминированные конечные автоматы. Эквивалентные состояния и автоматы.
- •2. Синтаксический анализ. Метод оперативного предшествования. Восходящие и нисходящие методы синтаксического анализа.
- •2. Жизненный цикл программного обеспечения. Структура жизненного цикла согласно международного стандарта.
- •1. Нисходящие распознаватели. Ll(k) – грамматики. Построение детерминированного нисходящего распознавателя.
- •2. Параллельная обработка как основа высокопроизводительных вычислений. Уровни организации параллелизма: уровень заданий, программ и команд. Системы (языки) параллельного программирования.
- •1. Восходящие распознаватели. Lr(k) грамматики. Построение грамматики.
- •2. Понятие архитектуры вычислительной системы (вс). Архитектура как набор компонент и как система уровневых интерфейсов. Основные аппаратные и программные элементы вс.
- •1.1. Архитектура как набор взаимодействующих компонент
- •1.2. Архитектура как интерфейс между уровнями физической системы
- •1. Магазинные преобразователи. Определение магазинного преобразователя. Перевод, определяемый преобразователем.
- •2. Архитектура системы команд. Микропроцессоры (мп) с полным (cisc) и сокращённых (risc) набором команд. Основные принципы risc- архитектуры. Организация risc мп Alpha 21x64 фирмы dec.
- •Особенности архитектуры Alpha компании dec
- •1. Описание перевода или трансляции. Синтаксически-управляемые (су) – схемы.
- •2. Основные идеи объектно-ориентированных языков программирования. Создание абстрактных типов данных. Инкапсуляция. Полиморфизм. Наследование.
- •3. Развитие архитектур современных мп. Конвейеризация и динамическое выполнение потока команд. Суперскалярность. Архитектура epic мп Intel itanium.
- •1. Транслирующие грамматики. Построение транслирующей грамматики по су-схеме. Атрибутные транслирующие грамматики.
- •3. Векторные и векторно-конвейерные вс. Структура векторного процессора. Матричные вс.
- •1. Трансляторы, интерпретаторы и компиляторы. Стадии работы компиляторы. Лексический анализ.
- •3. Системы массовой параллельной обработки (мрр). Супер эвм фирмы sgi - Cray t3e(t3d) -1200.
- •2. Классификация и типы вс. Многомашинные и многопроцессорные вс. Представление вс на основе распределения потоков команд и данных (классификация Флинна)
2. Основные идеи объектно-ориентированных языков программирования. Создание абстрактных типов данных. Инкапсуляция. Полиморфизм. Наследование.
ООП - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию на основе принципов наследования.
Соответственно, ООП-язык - язык, имеющий необходимые средства для реализации ООП.
Основные понятия ООП:
- инкапсуляция:(сокрытие информации) – определение пользователем новых типов данных, каждый такой тип содержит определение набора значений и операций, которые могут быть выполнены над этими значениями. Такой тип данных называется абстрактным.
- наследование: это механизм, позволяющий строить иерархию типов. Механизм наследования предполагает определение базового типа, а затем использование этого типа для построения производных (потомков). Каждый производный тип наследует все свойства базового, включая данные и операции.
- полиморфизм: под ним понимают динамический полиморфизм. Обозначение общего действия одним именем (функцией), которая используется во всей иерархии типов, причем каждый тип в этой иерархии реализует действие своим собственным, пригодным для него способом.
Абстрактные типы данных: они создаются для описания неких общих свойств, присущих определенному набору объектов (физических). Для примера: абстрактные классы в С++ – классы с чисто виртуальными функциями. Многие ООП языки поддерживают понятия интерфейса – класс, все методы которого являются чисто виртуальными (только описаны, но не определены).
3. Развитие архитектур современных мп. Конвейеризация и динамическое выполнение потока команд. Суперскалярность. Архитектура epic мп Intel itanium.
Производительность процессора зависит от тактовой частоты синхронизации, общего количества выполняемых процессором команд, количества команд, выполняемых процессором за один такт, от скорости обмена данными с памятью. Эти параметры определяются развитием технологии производства интегральных схем и функциональной организацией процессора. Для повышения производительности процессоров используется следующее:
Повышается тактовая частота, например, использование меди вместо алюминия позволяет преодолеть предел в 1 ГГц, для таких частот скорость распространения сигнала вызывает серьезные ограничения, поэтому необходимо, чтобы взаимодействующие блоки микропроцессора располагались рядом.
Увеличивается степень интеграции.
В процессор встраиваются устройства управления памятью.
Набор команд расширяется командами поддержки графики и обработки изображений, которые обеспечиваются соответствующей аппаратной поддержкой для высокоскоростной обработки плоских и трехмерных изображений, обработки видео изображений в реальном масштабе времени. Расширенный набор команд позволяет за один такт выполнять сложные графические операции, для реализации которых обычно затрачивается несколько десятков тактов. При этом около трех процентов реальной площади кристалла используется для реализации графических команд.
Вводится большое количество параллельно работающих конвейерных операционных устройств (т.е. используется суперскалярный принцип и принцип конвейеризации вычислений).
Увеличивается число ступеней конвейера команд.
Вводится система предсказания переходов.
Вводится система опережающего -“спекулятивного” выполнения команд.
Обеспечивается как можно более полная загрузка работой всех операционных устройств.
Реализация команд обмена данными между памятью и регистрами операционных устройств осуществляется без остановки работы операционного устройства.
Вводится внутренняя кэш-память (первого уровня) большой емкости, с высоким быстродействием.
Вводится выделенная шина для связи с кэш памятью второго уровня. Загрузка в память больших объемов данных означает не просто повышение производительности, но и возможность создания более гибких вычислительных систем, однако, применение многоуровневой кэш- памяти усложняет схему процессора и схему управления работой памяти.
Расширяется шина данных до 128 разрядов для связи с кэш памятью второго уровня и до 64 разрядов для связи с системной шиной.
Вводятся высокоскоростные интерфейсы для связи процессора с системной шиной и связи с внешней памятью.
Конвейеризация выполнения команд. Все основные операции, выполняемые процессором: обращения в память, обработка команд и выполнение инструкций являются конвейерными.
"Динамического выполнения команд" (dynamic execution), которая построена на основе трех базовых концепций: предсказании переходов (branch prediction), динамическом анализе потока данных (dynamic data flow analysis) и спекулятивном выполнении инструкций (speculative execution).
Предсказание переходов - заключается в следующем. На вход процессора поступает поток инструкций для их последующего исполнения. Инструкции поступают в том порядке, в котором они содержатся в коде программы, исполняемой в данный момент процессором. Как только на входе процессора появляется очередная порция инструкций для исполнения, ее содержимое анализируется с целью найти точки ветвления в исполняемом потоке инструкций и предсказать наиболее вероятные пути (ветви), по которым пойдет обработка инструкций после этих точек ветвления. Инструкции, принадлежащие ветвям с наибольшей вероятностью выполнения, тут же ставятся в очередь на исполнение.
Основная идея всех этих манипуляций заключается в том, чтобы заставить процессор выполнить инструкции, которые принадлежат ветвям с наибольшей вероятностью выполнения, "вне очереди" - то есть не дожидаться того момента, когда очередь на выполнение дойдет до этих ветвей естественным образом (согласно порядку поступления инструкций на вход процессора и, соответственно, контексту выполняемой программы), а загрузить эти ветви на выполнение раньше этого момента. Таким образом обеспечивается более полная загрузка и, соответственно, более высокая производительность процессора.
Динамический анализ потока данных включает в себя выполняемый в режиме реального времени анализ зависимости инструкций от исходных данных и значений регистров процессора, а также определение возможности исполнения и непосредственное исполнение инструкций в порядке, отличном от порядка их первоначальной постановки в очередь на исполнение (out-of-order execution).
Спекулятивное выполнение инструкций - это способность процессора исполнить инструкции в порядке, отличном (как правило, с опережением) от порядка во входном потоке инструкций (что определяется кодом исполняемой программы), но завершить и возвратить (commit) результаты исполнения инструкций в порядке, соответствующем оригинальному входному потоку инструкций.
Суперскаляр
Каждый отдельный суперскалярный компьютер, используя тот же самый распространяемый двоичный код, во время выполнения программы в реальном времени в своей аппаратной части осуществляет динамическое распределение конкретных ресурсов данного компьютера (исполнительные устройства, ячейки регистрового файла и т.д.) для каждого алгоритмического объекта (операций, регистров, шин и т.д.). Суперскалярная аппаратура рассматривает все ссылки в команде как ссылки на виртуальные ресурсы и динамически распределяет для них реальные ресурсы.
Последовательность команд становится виртуальной (с перестановкой последовательности выполнения операций), регистровые ссылки - виртуальными (переименование регистров), исполнительное устройство - виртуальным (выбор одного из параллельных физических устройств).
Этот динамический планировщик пытается загрузить, когда это возможно, множество имеющихся в распоряжении параллельных аппаратных ресурсов данной компьютерной модели. Во многих случаях при использовании такого подхода становится возможным исполнять несколько команд одновременно, что приводит к значительному увеличению скорости. Из двоичных кодов используется только грубый план, детальное планирование осуществляется на месте.
Несмотря на то, что до сих пор этот подход был достаточно успешным, он имеет существенные недостатки. Он хорошо работает для определенного уровня параллелизма аппаратных средств, когда объем аппаратуры не очень большой. Когда этот уровень превышается, задача планирования ресурсов становится настолько сложной, что ее выполнение в реальном времени ограничивает скорость компьютера.
Архитектура EPIC - Explicitly Parallel Instruction Computing и процессор Intel Itanium.
Архитектура EPIC имеет следующие основные особенности:
поддержка явно выделенного компилятором параллелизма, наличие большого регистрового файла, наличие предикатных регистров, спекулятивная загрузка данных, позволяющая избежать простоев конвейера при загрузке данных из оперативной памяти, используется стек регистров (и регистровые окна), Для предсказания инструкций используется поддержка компилятора.
Первые образцы 64-разрядного процессора Intel представляют собой картридж размером примерно 10х6 см, который включает в себя кэш-память третьего уровня емкостью 2 либо 4 Мбайт и радиатор. Картридж монтируется в разъем типа Slot и имеет 418 выводов. Процессор имеет трехуровневую иерархию сверхоперативной памяти.
Процессор содержит 128 целочисленных регистров и регистров с плавающей запятой, 64 однобитных предикатных регистра, 8 регистров перехода. 96 регистров видны в качестве "регистрового окна" и могут быть использованы при программной конвейеризации. Регистры перехода служат для предсказания адреса перехода и хранят адрес, используемый в косвенном переходе.
Каждая инструкция МП Itanium содержит 3 команды. Микропроцессор может выполнить более одной инструкции за 1 такт. Описанная ранее поддержка спекулятивных команд в архитектуре EPIC реализуется МП Itanium с помощью дополнительного 1-битового поля, называемого NaT. Таким образом, все регистры МП имеют на самом деле длину 65 бит.
Тактовая частота первых серийно выпускаемых систем на базе процессора Itanium составила 733 и 800 МГц для процессоров с кэш-памятью третьего уровня объемом 2 МБ и 4 МБ, что было достаточно малой частотой по сравнению с архитектурой IA-32.
В первую очередь от реализованной в процессоре Intel Itanium 64-разрядной адресации, ускорения операций с плавающей запятой и возможностей технологии EPIC выиграют такие требовательные приложения для рабочих станций, как системы разработки цифрового наполнения, а также системы автоматизированного проектирования механических и электрических конструкций.
Билет 27
