Теги и дескрипторы. Самоопределяемые данные
Одним из эффективных средств совершенствования архитектуры современных ЭВМ является теговая организация памяти, при которой каждое хранящееся в памяти (или регистре) слово снабжается указателем - тегом (рис. 4.8,а).
Тег определяет тип данных - целое двоичное число, число с плавающей точкой, десятичное число, адрес, строка символов, дескриптор и т.д. В поле тега обычно указывается не только тип, но и длина (формат) и некоторые другие его параметры. Теги формируются компилятором.
Наличие тегов придает хранящимся в машине данным свойство самоопределяемости, вносящее принципиальные особенности в архитектуру и функционирование ЭВМ.
В обычных ЭВМ, соответствующих классической модели фон Неймана, тип данных - операндов и их формат задаются кодом операции команды, а в ряде случаев размер (формат) определяется следующими полями команды.
Теговая организация памяти, напротив, позволяет достигнуть инвариантности команд относительно типов и форматов операндов, что приводит к значительному сокращению набора команды машины.
Другие преимущества теговой организации памяти ЭВМ:
¨ упрощается и делается более регулярной структура процессора;
¨ облегчается работа программиста, в том числе при отладке программ;
¨ упрощаются компиляторы и сокращаются временные затраты на компиляцию (так как отпадает необходимость выбора типа команды в зависимости от типов данных);
¨ облегчается обнаружение ошибок, связанных с некорректным заданием типа данных (например, при попытке сложить адрес с числом с плавающей точкой);
¨ теговая организация памяти способствует реализации принципа независимости программ от данных;
¨ использование тегов приводит к экономии памяти, так как в программах обычных машин имеется большая информационная избыточность на задание типов и размеров операндов при их использовании несколькими командами.
Недостатки теговой организации памяти - некоторое замедление работы процессора из-за того, что установление соответствия типа команды типу данных, в обычных ЭВМ выполняемое на этапе компиляции, при использовании тегов переносится на этап выполнения программы.
В архитектуре некоторых ЭВМ используются дескрипторы - служебные слова, содержащие описание массивов данных и команд, причем дескрипторы могут употребляться как в машинах с теговой организацией памяти, так и без тегов.
Дескриптор содержит сведения о размере массива данных, его местоположении (в ОП или внешней памяти), адресе начала массива, типе данных, режиме защиты данных (например, запрет записи в ячейки массива) и некоторых других параметрах данных. Отметим, что задание в дескрипторе размера массива позволяет контролировать выход за границу массива при индексации его элементов. На рис. 4.8 в качестве примера представлен один из видов дескрипторов - дескриптор данных.
Дескриптор содержит специфический тег - ТДс, указывающий, что данное слово является дескриптором определенного вида; Ук - группа указателей; А - адрес начала массива данных; L - длина массива; X - индекс.
Использование в архитектуре ЭВМ дескрипторов подразумевает, что обращение к информации в памяти производится через дескрипторы, которые при этом можно рассматривать как дальнейшее развитие аппарата косвенной адресации.
Адресация информации в памяти может осуществляться с помощью цепочки дескрипторов, при этом реализуется многоступенчатая косвенная адресация. То есть адресная часть дескриптора содержит адрес начала массива других дескрипторов, в адресной части каждого из которых содержится в свою очередь, адрес начала массива дескрипторов данных.
Рис. 4.8. Описание двумерного массива данных древовидной структурой дескрипторов: ТДс и ТДн – теги дескрипторов и данных.