1. Исследование семантического разрыва в современных ЭВМ
Цель работы: Установить различия основных принципов, лежащих в основе языков программирования высокого уровня (Паскаль, Бейсик, Си) и архитектуры ПЭВМ.
Теоретическая часть
По существу большинство современных ПЭВМ являются машинами фон Неймана. Вычислительной машине с архитектурой фон Неймана присущи следующие характеристики:
- Единственная последовательно адресуемая память. Программы и данные хранятся в одной памяти, адреса областей которой составляют последовательность типа 0, 1, 2...
- Память является линейной. Она одномерна, т.е. имеет вид вектора слов.
- Отсутствует явное различие между командами и данными. Их идентифицируют неявным способом при выполнении операций.
- Назначение данных не является их неотъемлемой составной частью. Набор битов может быть символьной строкой или числом с плавающей точкой.
Хотя архитектура фон Неймана была логичным решением проблемы создания первой машины с запоминаемой программой, она не всегда удовлетворяет требованиям, которые предъявляются к программам, написанным на языках высокого уровня. В отличие от перечисленных выше характеристик языки программирования высокого уровня имеют следующие характеристики:
- Память состоит из набора дискретных именуемых переменных.
- Используются многомерные, а не просто линейные данные.
- Существует резкое разграничение между данными и командами.
- Назначение данных является внутренней частью самих данных, т.е. связано с самими данными; тип данных определяет и операции, выполняемые над ними.
Машина фон Неймана оказывается плохим средством для выполнения программ, написанных на языках высокого уровня по следующим причинам:
- Чрезмерный расход программных средств с целью согласования возможностей языка со структурой памяти по фон Нейману.
- Машина фон Неймана универсальна (адресация к чему угодно в памяти и т.д.). Универсальность отсутствует в языках программирования, следовательно, компилятор решает эту проблему.
- В силу относительной примитивности принципа организации памяти по фон Нейману операции (набор команд), выполняемые машиной, оказываются в равной мере примитивными.
Итак, принципы, на которых основывается архитектура фон Неймана, не согласуются с принципами языков программирования и иногда даже противоречат им.
Факт различия принципов, лежащих в основе языков программирования высокого уровня и тех принципов, которые определяют архитектуру ЭВМ, называется семантическим разрывом.
Семантический разрыв - это мера различия принципов, лежащих в основе языков программирования высокого уровня, и тех принципов, которые определяют архитектуру ЭВМ.
Одной из дополнительных причин семантического разрыва является использование двоичной арифметики:
Чтобы понять наличие семантического разрыва, нужно выбрать какой-либо язык и архитектуру ПЭВМ, и изучить взаимосвязи между ними.
Анализ проводится следующим образом: определяют принципы, положенные в основу языков программирования и пытаются измерить "расстояние" между ними и соответствующими принципами, на которых базируется анализируемая архитектура ЭВМ. Например, по пунктам: массивы (в языках высокого уровня - многомерные, есть возможность обращения к отдельным элементам массива; в архитектуре ЭВМ - использование индексных регистров, как подобие одной из возможностей языка), структуры (в языках высокого уровня - использование наборов разнородных данных - записи; в архитектуре ЭВМ нет адекватных средств), обработка строк, процедуры, блочные структуры, представление данных и т.д.
Значительным шагом на пути сокращения семантического разрыва является хранение информации в форме самоопределяемых данных; применительно к памяти этот принцип получил название теговой памяти.
Поле самоопределения данных - тег содержит информацию о типе данных рассматриваемой ячейки. Теги устанавливаются компиляторами. При работе с данными переменной длины в теге можно выделить поле для указания длины операнда.
Другие возможности применения тега:
- 1-битовое поле указывает, определено ли текущее значение переменной, использующей данную ячейку памяти.
- В сопроцессоре 8087 фирмы Intel для этих целей и других целей используется 2-битовый тег.
- Поле для битов захвата (захват - незапрограммированное прерывание программы при возникновении непредусмотренной ситуации с условным переходом к процедуре).
Достоинства теговой памяти.
- Расширенные возможности для обнаружения ошибок (защита типа данных).
- Автоматическое преобразование данных (выравнивание длины, позиций).
- Повышение эффективности выполнения программ.
- Меньшее разнообразие типов команд (команды инвариантны типу обрабатываемых данных).
- Более простой компилятор.
- Более совершенные средства отладки.
- Независимость программных средств от обрабатываемых данных.
- Уменьшение необходимого объема памяти.
Недостатки теговой памяти.
- Сам факт строгого определения типа данных.
- Ограничения, накладываемые на скорость выполнения операций.
Задание:
- Изучить архитектуру ПЭВМ, на которой выполняется работа.
- Разработать алгоритм решения представленной преподавателем задачи. Например: Даны два целочисленных массива X(10), Y(10). Сравнить суммы четных элементов массивов.
- Написать две программы (на языке высокого уровня - Паскаль, Бейсик, Си и на языке низкого уровня - ассемблер IA-32 или MCS-96), реализующие один и тот же алгоритм.
- Проанализировать основные различия между принципами, лежащими в основе языков программирования высокого уровня и архитектуры ЭВМ. Провести количественный анализ использования языковых конструкций (декларативных и императивных операторов, типов данных, сложности выражений и среднего числа обращений к каждой переменной). Сравнить размеры (в байтах) текстовых и исполнительных файлов программ и объяснить полученные результаты.
Контрольные вопросы:
- Предположим, что машина X содержит команды, имеющие 8-битовый код операции и два 4-битовых поля, задающих длину операндов. А машина Y имеет команды, инвариантные к типу обрабатываемых данных и состоящие из 6-битового кода операции при условии, что каждый операнд, располагающийся в памяти, содержит 8-битовый тег, определяющий тип данных и размер занимаемой ими области памяти. Пусть каждая команда обращается к двум операндам, причем на каждый операнд в среднем приходится R обращений. Определите, при каком значении R машине Y требуется меньший объем памяти.
- Воспользуемся исходными данными задачи 1.1. и положим, что R=10, адреса операндов занимают 16 бит, средний размер операнда равен 32 бита (не считая тег). Определите разницу объема памяти, занимаемого одной и той же программой в машине X и Y.
Литература
- Майерс Г. Архитектура современных ЭВМ. В 2-х кн. - М.: Мир, 1985.
- Айлиф Дж. Принципы построения базовой машины. Пер. с англ. - М.: Мир, 1973.
- Вычислительные машины с развитыми системами интерпретации. - Киев, Наукова думка, 1970.