Теоретический курс «Архитектура вычислительных систем»

Санкт-Петербургский Государственный Университет
В работе представлен теоретический курс «Архитектура вычислительных систем» направления подготовки бакалавров 231000 «Программная инженерия». Описаны контекст в ВУЗовском, отечественном и мировом образовательных процессах, обоснована актуальность, приведены программа курса и рекомендации по обеспечению и подаче материала.

Введение

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

Новые стандарты подразумевают две основные ступени высшего образования — бакалавриат и магистратуру. В сентябре 2003 года на берлинской встрече министров образования европейских стран Россия присоединилась к Болонскому процессу [13]. В соответствии с установленными в его рамках правилами, дисциплины программ как бакалавриата, так и магистратуры, описываются с разбиением по учебным модулям, представлением списка получаемых компетенций и трудоёмкости в зачётных единицах.

Образовательный стандарт 231000 «Программная инженерия» [12] является одним из примеров новых стандартов, оформленных в соответствии с положениями декларации.  Помимо болонских положений, существенная часть дисциплин соответствует рекомендациям ACM и IEEE по преподаванию программной инженерии и информатики в ВУЗах [8,9].

Представленный в работе курс «Архитектура вычислительных систем» соответствует дисциплине «Архитектура ЭВМ», описанной в [8] по коду CS220.

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

Техническая информация и контекст

Приведённые в статье коды дисциплин назначены в соответствии с рекомендациями ACM и IEEE по преподаванию программной инженерии и информатики в университетах [8,9].

Общие данные курса

Объем курса: 1 год (1 сем, 2 лекции в неделю).

Отчётность: теоретический экзамен.

Направление: 231000, программная инженерия [12] c 2012; 010400, информационные системы с 2007.

Семестр: II (1 курс, весна).

Код дисциплины: «Архитектура ЭВМ» CS220 [8].

Трудоёмкость: 4 зачётные единицы.

Веб-страница курса: http://edu.dluciv.name/Home/architecture.

Автор(ы) курса: Луцив Д. В., ст. преп. кафедры системного программирования СПбГУ

Контекст в образовательной программе

С весны 2007 г. курс читается на направлении 010400 «Информационные технологии», а на направлении 231000 «Программная инженерия» он должен читаться с 2012 года без принципиальных изменений. При этом курс:

1. требует оперирования базовыми понятиями курсов:

  • «Дискретная математика» CS106,
  • «Алгоритмы и структуры данных» CS103 на основе курса «Основы программирования» CS101,
  • «Алгебра и теория чисел»,
  • «Математический анализ»;

2. обеспечивает базу для курсов:

  • «Операционные системы» CS225,
  • «Трансляция языков программирования» CS240,
  • частично — окончание курса «Алгоритмы и структуры данных» CS103.

Актуальность

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

Классический «потребительский» подход — делать свою работу, чтобы иметь возможность приобрести продукты и инструменты, не вникая в их природу. Противоположность — стремиться разобраться во всём и всё научиться делать самому, хотя бы на базовом уровне. После первых «потребительских» волн 1990-х — 2000-х в России можно наблюдать, возможно в качестве реакции, реставрацию второго подхода.

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

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

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

  1. дисциплины, касающиеся проектирования и реализации алгоритмов и структур данных, т.к. алгоритмы и данные должны, в конечном итоге, быть оптимизированы для использования на реальной технике;
  2. дисциплины, касающиеся разработки и использования трансляторов и СУБД;
  3. дисциплины, касающиеся дальнейшего изучения архитектуры ВС и создания вычислительных устройств в программе магистратуры (в СПбГУ на данный момент по направлению 010400 «Информационные технологии», в дальнейшем по направлению 231000 «Программная инженерия»);
  4. специальные дисциплины студентов факультета военного обучения СПбГУ военно-учётной специальности 530201 «Математическое, программное и информационное обеспечение функционирования автоматизированных систем».

Программа

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

1. Стали внедряться в крупных вычислительных центрах и лабораториях:

  • производительные вычислительные кластеры;
  • предоставление сред облачных вычислений, систем GRID.

2. Стали доступны небольшим организациям и частным лицам:

  • дешёвые микроконтроллеры для самостоятельной сборки устройств;
  • процессоры и отладочные платформы на базе FPGA (ППВМ).

3. Стали типичны в обоих перечисленных выше случаях:

  • RAID;
  • виртуализация;
  • использование сред облачных вычислений;
  • параллельные вычислительные системы на базе симметричных многопроцессорных архитектур и на базе GPU.

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

Ниже представлены разделы учебного курса.

Аналоговые и цифровые вычислительные средства, обработка информации

Преимущества, недостатки и специфика аналоговых и цифровых систем. Выбор вида системы в зависимости от решаемых задач по обработке и передаче данных. Формулировка и практический смысл теоремы Котельникова-Шеннона и её следствий.

Литература: [2,10].

Основы и эволюция архитектур вычислительной техники

Уровени рассмотрения архитектур. Архитектуры Фон-Неймана. Поколения ЭВМ. Поколения операционных систем в свете поколений ЭВМ. Системы RISC, CISC. VLIW. Суперскалярные машины. Векторные машины. Оптимизация работы машины при помощи кеша и конвейера. Применение разных архитектурных решений на примере эволюции семейства Intel x86. Стековые машины: программные (виртуальные машины) и аппаратные (Самсон, Кронос) реализации. Преимущества и недостатки. Примеры интерпретаторов, виртуальных машин. Виртуализация.

Литература: [2,3,7].

Системы хранения данных

Банковая, страничная, сегментная и смешанная модели памяти; пример на основе процессора 80386. Виды и эволюция энергонезависимой памяти. Алгебраические основы защиты информации при помощи кодов Хемминга. Массивы RAID.

Литература: [2,3]

Теоретические основы машинных арифметики и логики

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

Сведение двоичных арифметических операций к логическим.

Литература: [1,2,4]

Схемотехника

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

Триггеры RS и D. Синхронизация по фронту и спаду импульса. Триггеры JK, T. Связка MS.

Регистры: чтение, запись, передача данных. Сдвигающие регистры и счетчики. Шифраторы, мультиплексоры. Физическая организация ОЗУ и ППЗУ, память NOR и NAND. ЦАП. АЦП разных видов, использование кодов Грея и последовательностей Де-Брейна. Программируемые логические матрицы, создание процессоров при помощи систем FPGA.

Литература: [1,2].

Система команд процессора на примере семейства 80x86

Способы адресации данных. Регистровый файл. Ввод, вывод, пересылка данных.

Команды целочисленной арифметики и арифметики с плавающей запятой. Работа со стеком. Прерывания. Сравнение и передача управления. Обработка последовательностей данных. SIMD – команды новых процессоров семейства.

Литература: [2].

Трансляция высокоуровневых языков в машинный код

Основные принципы и стадии работы транслятора. Пример программы на АЯВУ, оттранслированной в ассемблер x86.

Литература: [2,5].

Особенности современных архитектур, встраиваемые системы

Общие современные тенденции. Особенности IA64. Особенности AMD64. Современные встраиваемые архитектуры. Микроконтроллеры. Сборка простых устройств.

Литература: [11], а так же описания и спецификации IA64 и AMD64.

Вычислительные системы параллельного действия

Задачи. Архитектуры систем и уровни распараллеливания, типичные подходы. Часто встречающиеся термины. Языки параллельного программирования. Топологии параллельных ВС. Количественные характеристики параллельных ВС. Закон Амдала.

Вывод количественных характеристик при тривиальном распараллеливании алгоритма решения СЛАУ методом Гаусса.

Литература: [2,6,7].

Обеспечение курса и подача материала

Лекционное оборудование

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

Доступ в сеть и мультимедиа

Доступ в сеть Интернет позволяет (совместно с проектором) разнообразить лекции материалами мультимедиа, импровизируя при этом. Часть уже вошедших в курс материалов мультимедиа были ранее найдены именно на лекциях. Доступность сети позволяет подключить к процессу и самих студентов, улучшая тем самым их заинтересованность и усвояемость материала.

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

«Музейные» экспонаты

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

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

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

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

Самостоятельная сборка и наладка устройств

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

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

Практический опыт был получен при использовании распространённых микроконтроллеров AtMega семейства Atmel AVR и плат семейства Arduino на их базе.

Программное обеспечение

Всё необходимое для чтения курса программное обеспечение может быть получено бесплатно.

Требуются:

1. Компилятор языка C. Современные версии MS Visual C и Gnu C Compiler полностью удовлетворяют требованиям курса, а именно:

  • Вывод в текстовый файл программы на языке ассемблера. Курс описывает системы машинных команд в основном на примере архитектур Intel x86 и AMD x86-64, как наиболее доступных студентам и преподавателям. Для этих архитектур рассматривается генерация программ в ОС Windows и Linux.
  • Поддержка OpenMP для иллюстрации к разделу о параллельных вычислительных системах.

2. Инструментальные средства программирования устройств, собираемых самостоятельно. Базовые версии обычно распространяются свободно.

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

Заключение

Представленный в работе курс «Архитектура вычислительных систем» для направления 231000 практически повторяет соответствующий курс, который читается на математико-механическом факультете СПбГУ, направление 010400 «Информационные системы», пятый год.

Курс позиционирован в контекстах рекомендаций ACM/IEEE 2001 г. по преподаванию информатики [8,9] и общих математических дисциплин университетов. Это позволяет упростить процедуры учёта пройденного материала и обеспечивает мобильность студентов в соответствии с болонским процессом [13].

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

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

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

На данный момент автор предлагает использовать материалы курса в некоммерческих целях бесплатно, а так же строить на их базе производные материалы с указанием исходного авторства. В терминах лицензий класса Creative Commons экземпляры материалов распространяются на условиях BY-NC-SA.

На основе, в том числе, части материалов описанного курса в АОУ ВПО «Ленинградский государственный университет имени А.С. Пушкина» студентам специальности «Учитель информатики» читаются курсы «Основы микроэлектроники» и «Архитектура ЭВМ».

Список использованных источников
  1. Ч. Петцольд. Код. Тайный язык информатики. Русская Редакция, 2004 г.
  2. Э. Таненбаум. Архитектура Компьютера. Питер, 2003.
  3. Б. Я. Цилькер, С.А. Орлов. Организация ЭВМ и систем. Питер, 2004.
  4. А. А. Папернов. Логические основы цифровых машин и программирования. М.: Наука, 1968.
  5. Г. Майерс. Архитектура современных ЭВМ. Москва, «МИР», 1985.
  6. Seyed H. Roosta. Parallel processing and parallel algorithms: theory and computation. Springer, 2000.
  7. А. Н. Терехов. Технология программирования. Интернет-университет информационных технологий, 2006.
  8. Пер. с англ. Н.И.Бойко, М.Е.Зверинцева и др. Рекомендации по преподаванию программной инженерии и информатики в университетах. Интернет-университет Информационных технологий, 2007.
  9. ACM Computing Curricula 2001: Computer Science http://www.acm.org/education/curric_vols/cc2001.pdf
  10. Э. Таненбаум. Компьютерные сети. Питер, 2005.
  11. В. Я. Хартов. Микроконтроллеры AVR: практикум для начинающих. Учеб. пособие для вузов по направлению 230100 "Информатика и вычислительная техника. Изд-во МГТУ, 2007. http://books.google.com/books?id=UA1fNwAACAAJ
  12. Федеральный государственный образовательный стандарт высшего профессионального образования по направлению подготовки 231000 Программная инженерия (квалификация (степень) «бакалавр»).http://www.edu.ru/db-mon/mo/Data/d_09/prm542-1.pdf
  13. Vadim Kassevitch, Prof., Dr.ViceRector of the State University of St. Petersburg, Corrdinator of the Bologna Proces. Towards the european higher education area: bologna processNATIONAL REPORTS 2004—2005. http://www.ehea.info/country-details.aspx?countryId=39http://www.ehea.info/Uploads/Documents/National_Report_Russia_05.pdfhttp://www.ehea.info/Uploads/Documents/National_Report_Russia_05.pdf
Тип выступления  Устное выступление и публикация
Уровень образования  Высшее профессиональное
Ключевые слова  Эрхитектура ЭВМ Вычислительная техника Программная инженерия бакалавриат Санкт-Петербургский государственный университет
Презентация доклада  Загрузить