На каких принципах базируется архитектура Фон Неймана?
Какие классы архитектур есть по параметру сложности системы команд? Какие преимущества и недостатки главных представителей этих классов?
Какие есть основные алгоритмы отображения в кэш памяти? Какие у каждого из них достоинства и недостатки?
Для CISC и RISC архитектур где проще реализовывать оптимизирующий компилятор? Где проще эффективно загрузить конвейер? В чем могут быть причины того, что существуют и широко используются оба класса архитектур?
Понятие локальности доступа к данным. Какие существуют виды локальности доступа к данным?
Какие обычно присутствуют уровни в иерархической памяти современного компьютера? Какими ключевыми свойствами, параметрами, достоинствами и недостатками они обладают?
Какие основные технологии используются в современных компьютерах для построения внешней памяти? В чем их достоинства и недостатки?
Каково назначение аппаратной предвыборки данных? Как в общих чертах устроен алгоритм ее работы?
К каким уровням иерархической памяти можно получить непосредственный доступ из программы на ассемблере, Си?
Каково назначение кэш памяти? Какие основные характеристики кэш памяти?
Какие алгоритмы отображения применяются в кэш памяти?
Какие используются алгоритмы замещения в кэш памяти?
Что такое пробуксовка кэша? Как она влияет на эффективность программы? Какие программные способы устранения эффекта буксования есть?
Как работает алгоритм проецирования во множественно-ассоциативном кэше?
Каково назначение виртуальной памяти? Как в общих чертах устроен алгоритм ее работы?
Каков принцип работы трансляции виртуальных адресов в физические? Как устроена таблица трансляции? Для чего введен TLB?
Назначение механизма защиты памяти в современном компьютере.
В чем сходства и различия кэш памяти и виртуальной памяти?
Какие технологии построения памяти представляются на данный момент перспективными? Какое влияние может оказать их внедрение на программное обеспечение?
Какие основные виды и уровни параллелизма можно выделить? Какие из них применяются в современном компьютере?
Как представлен SIMD параллелизм в современном микропроцессоре?
Как реализуется параллелизм на уровне команд в современных микропроцессорах? В чем отличия суперскалярной архитектуры и VLIW? В чем достоинства и недостатки каждой их них?
Какие задачи решает многоядерная архитектура? Какова общая структура современного многоядерного процессора? Как в нем организована кэш память?
Какие используются основные показатели производительности компьютеров? Чем отличается реальная производительность от пиковой?
Что такое процесс с ОС? Какое данные хранятся в дескрипторе процесса, в адресном пространстве процесса?
Какую функцию выполняет планировщик задач в ОС? Какие в нем применяются дисциплины?
Какие основные этапы обработки можно выделить у компилятора? В какие моменты происходит оптимизация компилируемой программы?
Каково назначение статических и динамических библиотек? В чем их отличие?
Какие имеются аппаратные средства измерения времени в современном компьютере?
Какие таймеры реализуются в ОС? Каково их назначение и в чем их отличия?
Каково назначение и основные функции профилировщиков?
Какие задачи решает верификатор? Какие виды ошибок можно обнаружить, используя Electric Fence?
Каковы задачи анализа потока управления? Понятие графа потока управления.
Понятия достижимости и доминатора в графе потока управления.
Опишите работу алгоритма поиска обратных дуг.
Уровни оптимизации в GCC. Для чего они введены? Чем они отличаются между собой?
Примеры оптимизационных преобразований в GCC. Назначение и приблизительное функционирование пары оптимизационных преобразований.
Какие существуют основные критерии оптимизации программного обеспечения?
Эффективность использования кэш памяти. Виды промахов
Основные рекомендации по повышению эффективности использования кэш памяти.
Сравните функционирование подсистемы памяти при случайном обходе массива и последовательном обходе.
К чему приводят промахи по конфликтам? Какие есть способы их устранения на уровне программы?
Какими основными способами можно использовать векторные расширения современных микропроцессоров?
Какие группы команд можно выделить в SIMD векторных расширениях SSE?
Какие задачи решает middleware?
Какие задачи решает микросервисная архитектура? На каких принципах она базируется?
Для чего нужны промежуточные представления программ?
Какое влияние на эффективность программы может быть от систематизированного поиска и применения доступных системных библиотек по сравнению с подходом, при котором весь функционал реализуется разработчиком приложения?
Какие проблемы позволяет решить (или упростить) переход к многопоточной реализации программ?
Каково назначение и основные функции верификаторов?
Какие существуют основные модели построения многопоточных программ?
Какие виды промахов есть при доступе к кэш памяти?
Какие есть способы устранения промахов по объему при доступе к кэш памяти?
Как влияет порядок обхода элементов на эффективность программы, обрабатывающей массив? Какие обходы предпочтительнее? Последовательные или произвольные? Почему?
Какие существуют способы обеспечить последовательный обход массива?
Как оформляются ассемблерные вставки в программах на Си в GNU Linux и Windows?
Какие факторы влияют на выбор числа потоков в программе?
Какие имеются механизмы для взаимодействия процессов внутри одного компьютера? Какие из них более эффективны?
Что такое динамическая балансировка нагрузки? Какие задачи она решает? В каких случаях целесообразно ее применение?
Какие существуют способы экономии памяти? Каковы границы их применимости?
Какие есть способы экономии вычислений? В каких ситуациях они применимы, а в каких – нет?
Чем отличаются требования, предъявляемые к программному обеспечению встраиваемых систем, по сравнению с требованиями к программному обеспечению для персональных компьютеров?
Какие критерии эффективности программного обеспечения используются? Какие из них являются ключевыми?
На каких этапах разработки ПО разработчик может заниматься оптимизацией и каким образом?