Лабораторные работы    
 СОДЕРЖАНИЕ
 Введение
 1. Развитие архитектуры
 2. Структура МП
 3. Ресурсы МП
 4. Управление памятью
 5. Защита
 6. Многозадачность
 7. Прерывания и исключения
 8. Инициализация МП
 9. Эмуляция 8086
 Глоссарий
 ПРАКТИКА
 1. Семантический разрыв
 2. CPUID
 3. Защищенный режим
 Вопросы и задания

1. Исследование семантического разрыва в современных ЭВМ

Цель работы: Установить различия основных принципов, лежащих в основе языков программирования высокого уровня (Паскаль, Бейсик, Си) и архитектуры ПЭВМ.

Теоретическая часть

По существу большинство современных ПЭВМ являются машинами фон Неймана. Вычислительной машине с архитектурой фон Неймана присущи следующие характеристики:

  1. Единственная последовательно адресуемая память. Программы и данные хранятся в одной памяти, адреса областей которой составляют последовательность типа 0, 1, 2...
  2. Память является линейной. Она одномерна, т.е. имеет вид вектора слов.
  3. Отсутствует явное различие между командами и данными. Их идентифицируют неявным способом при выполнении операций.
  4. Назначение данных не является их неотъемлемой составной частью. Набор битов может быть символьной строкой или числом с плавающей точкой.

Хотя архитектура фон Неймана была логичным решением проблемы создания первой машины с запоминаемой программой, она не всегда удовлетворяет требованиям, которые предъявляются к программам, написанным на языках высокого уровня. В отличие от перечисленных выше характеристик языки программирования высокого уровня имеют следующие характеристики:

  1. Память состоит из набора дискретных именуемых переменных.
  2. Используются многомерные, а не просто линейные данные.
  3. Существует резкое разграничение между данными и командами.
  4. Назначение данных является внутренней частью самих данных, т.е. связано с самими данными; тип данных определяет и операции, выполняемые над ними.

Машина фон Неймана оказывается плохим средством для выполнения программ, написанных на языках высокого уровня по следующим причинам:

  1. Чрезмерный расход программных средств с целью согласования возможностей языка со структурой памяти по фон Нейману.
  2. Машина фон Неймана универсальна (адресация к чему угодно в памяти и т.д.). Универсальность отсутствует в языках программирования, следовательно, компилятор решает эту проблему.
  3. В силу относительной примитивности принципа организации памяти по фон Нейману операции (набор команд), выполняемые машиной, оказываются в равной мере примитивными.

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

Факт различия принципов, лежащих в основе языков программирования высокого уровня и тех принципов, которые определяют архитектуру ЭВМ, называется семантическим разрывом.

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

Одной из дополнительных причин семантического разрыва является использование двоичной арифметики:

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

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

    Анализ проводится следующим образом: определяют принципы, положенные в основу языков программирования и пытаются измерить "расстояние" между ними и соответствующими принципами, на которых базируется анализируемая архитектура ЭВМ. Например, по пунктам: массивы (в языках высокого уровня - многомерные, есть возможность обращения к отдельным элементам массива; в архитектуре ЭВМ - использование индексных регистров, как подобие одной из возможностей языка), структуры (в языках высокого уровня - использование наборов разнородных данных - записи; в архитектуре ЭВМ нет адекватных средств), обработка строк, процедуры, блочные структуры, представление данных и т.д.

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

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

    Другие возможности применения тега:

    1. 1-битовое поле указывает, определено ли текущее значение переменной, использующей данную ячейку памяти.
    2. В сопроцессоре 8087 фирмы Intel для этих целей и других целей используется 2-битовый тег.
    3. Поле для битов захвата (захват - незапрограммированное прерывание программы при возникновении непредусмотренной ситуации с условным переходом к процедуре).

    Достоинства теговой памяти.

    1. Расширенные возможности для обнаружения ошибок (защита типа данных).
    2. Автоматическое преобразование данных (выравнивание длины, позиций).
    3. Повышение эффективности выполнения программ.
    4. Меньшее разнообразие типов команд (команды инвариантны типу обрабатываемых данных).
    5. Более простой компилятор.
    6. Более совершенные средства отладки.
    7. Независимость программных средств от обрабатываемых данных.
    8. Уменьшение необходимого объема памяти.

    Недостатки теговой памяти.

    1. Сам факт строгого определения типа данных.
    2. Ограничения, накладываемые на скорость выполнения операций.

    Задание:

    1. Изучить архитектуру ПЭВМ, на которой выполняется работа.
    2. Разработать алгоритм решения представленной преподавателем задачи. Например: Даны два целочисленных массива X(10), Y(10). Сравнить суммы четных элементов массивов.
    3. Написать две программы (на языке высокого уровня - Паскаль, Бейсик, Си и на языке низкого уровня - ассемблер IA-32 или MCS-96), реализующие один и тот же алгоритм.
    4. Проанализировать основные различия между принципами, лежащими в основе языков программирования высокого уровня и архитектуры ЭВМ. Провести количественный анализ использования языковых конструкций (декларативных и императивных операторов, типов данных, сложности выражений и среднего числа обращений к каждой переменной). Сравнить размеры (в байтах) текстовых и исполнительных файлов программ и объяснить полученные результаты.

    Контрольные вопросы:

    1. Предположим, что машина X содержит команды, имеющие 8-битовый код операции и два 4-битовых поля, задающих длину операндов. А машина Y имеет команды, инвариантные к типу обрабатываемых данных и состоящие из 6-битового кода операции при условии, что каждый операнд, располагающийся в памяти, содержит 8-битовый тег, определяющий тип данных и размер занимаемой ими области памяти. Пусть каждая команда обращается к двум операндам, причем на каждый операнд в среднем приходится R обращений. Определите, при каком значении R машине Y требуется меньший объем памяти.
    2. Воспользуемся исходными данными задачи 1.1. и положим, что R=10, адреса операндов занимают 16 бит, средний размер операнда равен 32 бита (не считая тег). Определите разницу объема памяти, занимаемого одной и той же программой в машине X и Y.

    Литература

    1. Майерс Г. Архитектура современных ЭВМ. В 2-х кн. - М.: Мир, 1985.
    2. Айлиф Дж. Принципы построения базовой машины. Пер. с англ. - М.: Мир, 1973.
    3. Вычислительные машины с развитыми системами интерпретации. - Киев, Наукова думка, 1970.